Research project which has as the main objective the study of several elements of Information Technology analyzed from the point of view of energy efficiency. With special emphasis on microprocessors, modern compiler design, development tools and optimization of code generation, a wide range of information is gathered on very relevant subjects through perspectives still not very considered by the community in general.
Also presented are two experimental studies that analyze the optimization of generated code for a set of benchmark programs in several programming languages with the aim of apraise the otimization impact on improving their energy consumption efficiency. A software measurement framework was also developed that, together with the methodologies presented in both studies, allows obtaining very precise and pertinent results for analysis. Finally, a ranking was produced for 18 software development tools, considering the execution time and energy consumption of the executables generated through their compilation profiles.
It is also intended with this project to contribute to an energy efficient technological advancement. All the work developed here may also serve as motivation so that these and other aspects of Information Technology may be seen through a greener perspective.
This research project results from a Master dissertation in Computer Science at the University of Minho named Optimization in code generation to reduce energy consumption. For a more detailed description of the information and results presented here, it is advisable to consult the essay available in the Documentation section.
Currently we live in a period in which technology evolves very quickly and the number of those who use it, causing the associated energy consumption, reaches very high values in financial and environmental terms. So with a strong concern and an increasing need to reduce energy consumption in all the information and communication infrastructures (ICTs), emerged Green Computing which aims precisely at computers and related resources more efficiently while maintaining or increasing overall performance.
Being microprocessors - or commonly, the CPUs or just processors - the heart and brain of any computer (and of a huge number of devices used on a daily basis), naturally they are one of the components with great impact on energy consumption. According to the information from Intel Labs in 2008 the processors are even the largest consumers of energy inside servers with values between 45W to 200W per multi-core CPU (depending on the type of server and workload). They had a very important role in world's development and will continue to affect the life at several levels of their population. For all those reasons, the optimization of aspects related with microprocessors is a crucial way to combat excessive energetic consumption of IT industry.
The code optimizations performed by a compiler are a great way to get more performance without modifying any hardware or software component. With a just a few adjustments in the compilation arguments and these improvements are obtained immediately. While this approach has mainly the aim of reducing the execution time or required space by a program, in this project we will also see the potential that may have in reducing energy consumption. Until this day there is very little work that explores widely the impact that the various compilation options provided by compilers (including GCC) has on the energy consumption of the software that use them.