Привет, я работаю над Tmote sky motes (микропроцессор MSP430) с contiki os. Я хочу знать количество командных циклов, используемых при выполнении операции умножения в моем программном обеспечении (программном обеспечении).
Спасибо, Авиджит.
Привет, я работаю над Tmote sky motes (микропроцессор MSP430) с contiki os. Я хочу знать количество командных циклов, используемых при выполнении операции умножения в моем программном обеспечении (программном обеспечении).
Спасибо, Авиджит.
Msp430 — это 16-битная система, поэтому 32-битные значения напрямую не поддерживаются. 32-битная операция обычно транслируется в ассемблерный код как последовательность 16-битных операций.
Время выполнения 8-битных и 16-битных операций можно найти в Отчет о применении TI "Аппаратный множитель MSP430":
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
, чтобы убедиться.
Вы можете использовать naken_asm Майкла Кона, чтобы разобрать шестнадцатеричный или ELF-файл Intel, и он рассчитает цикл считается для каждой инструкции. Я использовал его в прошлом, и счетчик циклов подходит для ЦП (например, в вашем Tmote), но не полностью поддерживается в CPUX.
Вы можете вызвать его из командной строки так же просто, как:
naken_util -disasm <infile>
где ‹infile› — это имя вашего шестнадцатеричного или ELF-файла. Процессор по умолчанию — MSP430, но вам понадобится листинг сборки из вашего компилятора, чтобы иметь возможность сопоставить исходный код с дизассемблированным кодом, который включает количество циклов.
Другой альтернативой может быть использование параметра трассировки MSPDebug, который может отслеживать работающее программное обеспечение и предоставлять актуальные инструкции. количество циклов. Однако я никогда не использовал его для этой цели, поэтому не могу привести пример.
https://github.com/mikeakohn/naken_asm/blob/master/disasm/msp430.c
не похоже, что он обрабатывает арифметические операции. Интересно однако.
- person kfx; 08.03.2015
ADD.w R6,R7
должен обрабатываться case OP_TWO_OPERAND
disasm_msp430(). Только специальные инструкции обрабатываются непосредственно в источнике, на который вы ссылаетесь.
- person tinman; 09.03.2015