Halo: A Hazard Location Tool for IA64

  • David M. Gillies

MSR-TR-2000-37 |

IA64, the new Epic architecture from Intel and HP, has introduced many new features that allow a high degree of hardware control by software. These features include explicit delineation of instruction level parallelism (ILP) and predication, which allows branch delays to be avoided by guarding sequences of code with Boolean predicates. However, along with these optimization advantages, there are also new correctness issues. Optimized code for IA64 can be very complex to generate and difficult to debug. Moreover, writing system level components at the assembly level can be error-prone. Hazards, or incorrect specification of parallel instructions, are software bugs of a very insidious nature. Hazards may well remain undetected in the current generation of hardware and only manifest themselves in future, wider hardware implementations. Furthermore, the existence of hazards may be shrouded by predication and may only occur in obscure circumstances. This paper presents a static analysis tool called Halo that will automatically locate hazards in IA64 binaries. It does so by modeling machine resource usage on infinitely wide IA64 hardware. Halo also has a predicate analysis framework that allows it to locate hazards in predicated code with very good accuracy.