To receive and render high-definition video can get any computer to go hot. When the computer is hand-held, this must be far more effective both to avoid burning your hands and to save battery.
In coming techniques it is more energy efficient to split the computations on more and slower processor nodes than do all the computations on one fast processor. Thus, the industry is about to introduce multicore processors also in handhelds units.
A challenge for multicore processors is to keep all of them busy. Traditional programming languages are sequential by nature. The leads to that when programs written in traditional languages are mapped to multicore processors, a processor core often has to wait for results calculated in another core. Research on compilers for multicores has been going on since the 1980s and few believe that drastic progress needed for tomorrow’s multiprocessor systems are possible.
CAL compiler for multicores
EASE theme B attacks some of the problems with multicore systems by developing techniques for compilation of the programming language CAL. The compiler maps the application to process threads, processor cores and memory adapted to target processors that today might have two or four cores with shared memory, but in a few years probably has much more of both cores and memories.
CAL is an open source based language and tool set [opendf.org] based on data flow graphs, which means that the language does not force calculations to be done in a particular order, but only describes the actual data and control dependencies that exist between different parts of the program. CAL is therefore more suitable for mapping applications to multi core systems. Thus, the final step in the compilation gets better conditions for distributing the computations between cores and memories.
– In 2009, the project has demonstrated new and working mapping techniques. The focus for 2010 is partly to integrate these techniques into the CAL environment and secondly to increase the flexibility in the CAL environment as such. Then we will be able to pilot the findings in an industry environment, says Per Andersson, Post-doc at LTH.
Another approach to keep processor cores busy is to perform speculative parallel execution, i. e. dynamically generate parallel activities from a serial program. However, if the speculation is wrong the system needs to restore the execution to an earlier state and restart in a safe mode. – Initial studies during 2009 show promising results for web applications targeted at mobile devices, says Håkan Grahn coordinator EASE theme B.