MSP430指令周期

时间:2015-02-20 18:00:34

标签: msp430 microprocessors

您好我正在研究带有contiki操作系统的Tmote sky motes(MSP430微处理器)。我想知道在编程(软件)中进行乘法运算时使用的指令周期数。

谢谢你, Avijit

2 个答案:

答案 0 :(得分:0)

msp430是一个16位系统,因此不直接支持32位值。通常将32位操作转换为汇编代码,作为16位操作序列。

可以在TI application report "The MSP430Hardware Multiplier"

中找到8位和16位操作的执行时间
Table 4. CPU Cycles Needed With Different Multiplication Modes

OPERATION: Unsigned Multiply (MPY)
SOFTWARE LOOP: 139...171
HARDWARE MPYer: 8
SPEED INCREASE: 17.4...21.4

OPERATION: Unsigned multiply-and-accumulate (MAC)
SOFTWARE LOOP: 137...169
HARDWARE MPYer: 8
SPEED INCREASE: 17.1...21.1

OPERATION: Signed Multiply (MPYS)
SOFTWARE LOOP: 145...179
HARDWARE MPYer: 8
SPEED INCREASE: 18.1...22.4

OPERATION: Signed multiply-and-accumulate (MAC)
SOFTWARE LOOP: 143...177
HARDWARE MPYer: 17
SPEED INCREASE: 8.4...10.4

HW乘数应该在默认编译设置下处于活动状态,但请使用msp430-objdump检查生成的目标文件以确保。

答案 1 :(得分:0)

您可以使用Michael Kohn的naken_asm来解除Intel十六进制或ELF文件,并计算每条指令的周期数。我过去曾经使用它,循环计数器对于CPU来说是可以的(例如在你的Tmote中)但在CPUX中并不完全支持。

您可以从命令行调用它,只需:

naken_util -disasm <infile>

其中&lt; infile&gt;是十六进制或ELF文件的名称。默认处理器是MSP430,但您需要编译器中的汇编列表,以便能够将原始代码与包含循环计数的反汇编代码进行匹配。

另一种选择是使用MSPDebug的跟踪选项,它可以跟踪正在运行的软件并提供最新的指令周期计数。但是,我从未将它用于此目的,因此无法提供示例。