Low Power Techniques in multicore systems based in ARM architecture (Part I)

Hi all,

This is my second post, and as I promised, I’ll talk about my Master Thesis about Low Power Techniques in multicore systems based in ARM architecture.

This thesis was the end of a Master Degree started two years ago, when I became (finally!) a Computer Science Engineer and I was looking for a good job opportunity. As this opportunity was a little lazy to came, I decided to start a Master Degree, with Embedded and Reconfigurable Systems as mayor and Computer Networks and Technologies as minor specializations.

I decide to study Embedded Systems because it was the most interesting path for me, and I was a little curious about embedded systems, FPGAs and this kind of devices.

In the differente subjects we’ve worked more with VHDL and FPGAs, Xilinx, PowerPC, but most of all related to VHDL – FPGAs. Even if I liked the different subjects and labs, I was more interested in Embedded Linux, so finally, when I had to choose the subject for the thesis, I was sure that Embedded Linux would be a great subject to study. Two main reasons were that I would have to write my thesis while working  in very different area, and so I’ll have to write and prepare it by myself at home in my free time.

During the master degree, I discovered the world of embedded Linux with beagleboard or gumstix, and also played with a beagleboard like board called IGEPv2, based in an OMAP3 chip.

While I was struggling myself to decide the final subject of the thesis, I suddenly had THE idea: buying a Pandaboard and doing something related with low power and power management in Linux. The pandaboard development board has an OMAP4 chip, with two ARM Cortex A9 processor, so I thought it could be a good idea to study and to do some research about power management on a dual core ARM board.

If you don’t know what a pandaboard is… Well… I now it’s embarrassing but you can check it here: http://www.pandaboard.org 🙂

So once I bought the Pandaboard and after some days got it at home, I started to play with it, trying and choosing the best distribution for my needs. I tried first with Debian, but after some time I realized that Ubuntu for ARM was doing a good job, and would contain more recent packages and kernel, so I installed Ubuntu ARM 10.04.

Now the last version is 11.10, but I did my developments and research on 10.10. (https://wiki.ubuntu.com/ARM/OMAP).

Once I had the system working, with HDMI, wireless connection, usb mouse and keyboard, I began to study and find how can I retrieve power management information from the system and also interact with it.

If you dont’ know it, there is a great project sponsored by IBM, Canonical, ARM, Samsung, Texas Instruments or Freescale, called Linaro (www.linaro.org), and its mission is to create a common ecosystem for ARM based systems, in order to organize and merge the different projects and work done for all ARM embedded devices. With this, they said that manufacturers could achieve faster time to market, and also would mean easier work for developers and integrators of this products.

So the great about Linaro are the Linaro Working Groups, different Teams that work with a different mission to achieve the proposal of Linaro Foundation. Thera are several Working Groups, for UX / Design, for Kernel related work, for Graphics section and the one I’ve most appreciated, the Power Management Working Group (WG).

I spend some weeks in research  different posibilities to manage power consumption in Linux and most specifically in Embedded Linux, but most of them were designed  for systems with only one processor. One day I came back to Linaro Power Management Group and found a new technique designed in particular for multicore systems, and so I decided to try it on my Pandaboard.

In my next post, I’ll cover the different techniques I found for power management in Linux and the one I choosed to test and to study more in detail, with the different results obtained during the research.

Thanks for your time reading here! 🙂