On MSP430 microcontrollers without a multiplier hardware module (MPY), any complex multiplications (not with a power of 2) require the compiler to generate extra code to simulate the multiplication algorithm. This could potentially add significant amount of code instructions to the program.
In MSP430 devices without a hardware multiplier module, multiply
operations are translated into multiply algorithms in assembly
code by the compiler. While modern compilers can help generate
highly efficient code for mathematical operations, the resultant
assembly codes are still typically process-intensive. This results
in additional power consumed as well as time needed to execute the
additional code. The impact significantly increases if the
multiplication takes place inside a loop or as part of the
program's regular routine.
The project is configured for an MSP430 device that does not have
a hardware multiplier module and the code contains at least more
multiplication(s).
If possible, re-architect the program to minimize or remove all multiplications from the code. If the device is part of a more complex system, try to off-load the math-intensive processing to a host/better-equipped processor. For the unavoidable multiply operations, try to ensure that multiplications are replaced by equivalent bit-wise logical operation (rotate, shift, add), whether automatically by the compiler or manually by user-generated code.
See the rest of the code examples for all MSP430 devices here!
Want to squeeze a few more nanoAmps out of your application? Leverage the e2e (Engineer-to-Engineer) online community to get all of your ULP questions answered! Or, if you are an Ultra-Low Power pro, give back to the community with your expertise.
Go to MSP430's e2e online forum!
If you are posting on the forums in relation to this rule, try using the tag "ULP_6.1"
For technical support please post your questions at http://e2e.ti.com. Please post only comments about the article Compiler/diagnostic messages/MSP430/1533 here. |