Chris Shore, ARM
EDN (November 19, 2012)
Friendly and unfriendly peripherals
Some systems have very clever peripherals and they are not just there to fill up the available silicon space. So, use the peripheral system to your advantage. If you have a DMA engine and need to copy large amounts of data about then use it! You can either have the CPU go off and do something else in parallel during the transfer time or, if nothing else needs doing, put it to sleep and wake it up when the data is in place.
Also worth considering is the relative speed of your core as compared to your peripherals. When doing something which is bounded by the speed of the peripherals, there is no point in keeping the core running at full speed. It will spend most of its time waiting. A good example might be programming flash memory. The algorithm will spend a lot of its time waiting for a response from the memory device. No matter how fast you run the core, the memory will still respond at the same speed. So, if you are not doing anything else and you can control the clock speed of the core, reduce it to the minimum speed which allows you to respond to the memory in time. That way, the core will spend the same time idle but will consume less power when just waiting for each response.
The overall time to complete the operation will remain the same but the energy usage will go down.
Click here to read more ...