Compiler Optimizations for Code Density of Variable Length Instructions
Kultala, Heikki; Viitanen, Timo; Jääskeläinen, Pekka; Helkala, Janne; Takala, Jarmo (2014)
Kultala, Heikki
Viitanen, Timo
Jääskeläinen, Pekka
Helkala, Janne
Takala, Jarmo
IEEE
2014
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tty-201603083623
https://urn.fi/URN:NBN:fi:tty-201603083623
Kuvaus
Peer reviewed
Tiivistelmä
Variable length encoding can considerably decrease code size in VLIW processors by decreasing the amount of bits wasted on encoding No Operation(NOP)s. A processor may have different instruction templates where different execution slots are implicitly NOPs, but all combinations of NOPs may not be supported by the instruction templates. The efficiency of the NOP encoding can be improved by the compiler trying to place NOPs in such way that the usage of implicit NOPs is maximized. Two different methods of optimizing the use of the implicit NOP slots are evaluated: prioritizing function units that have fewer implicit NOPs associated to them, and a post-pass to the instruction scheduler which utilizes the slack of the schedule by rescheduling operations with slack into different instruction words so that the available instruction templates are better utilized. The post-pass optimizer saved an average of 2.5 % and at best of 9.1 % instruction memory, without performance loss. Prioritizing function units gave best case instruction memory savings of 12.7 % but the average savings were only 1.0 % and there was in average 5.7 % slowdown for the program.
Kokoelmat
- TUNICRIS-julkaisut [19830]