繁体   English   中英

mips时钟周期数以及如何改进代码

[英]mips number of clock cycles and how improving code

我真的是MIPS的新手,我遇到了这些问题,我为他们找到了许多不同的答案……如果有人可以提供帮助,那就太好了。 谢谢

此代码需要几个时钟周期?

#Macro Instructions
li  $t0, 32         #  1 or 2 cycles ?      
                    #                lui $at, Upper 16-bits of value 
                    #                ori Rd, $at, Lower 16-bits of value
                    #                -----------------------------------
                    #                ori Rt, $0, value
                    #
                    #  Which set of instructions will be executed?


div $t2, $t2, $t0   #  41 cycles?          
                    #                bne Rt, $0,
                    #                break $0
                    #                ok: div Rs, Rt
                    #                mflo Rd

#Integer Instruction

lw  $t2, 0($t13)    #  1  cycles?
sw  $t2, 0($t3)     #  1  cycles?

如何显着改善这四行代码? 通过避免使用宏或...?

  • li $t0, 32

您可以通过反汇编可执行文件或目标文件来轻松检查这一文件。 使用带有-d-D选项的MIPS工具链中的objdump 我猜想汇编器足够聪明,不会为如此小的值生成lui


  • div $t2, $t2, $t0

由于您要除以2(32)的幂,因此有一种更快的方法:按log2(divisor)位(即5位)右移:

srl $t2, $t2, 5   # if $t2 is unsigned

要么

sra $t2, $t2, 5   # if $t2 is signed

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM