Idiom Recognition Framework for Exploiting Complex Hardware Instructions
Processor architectures such as System-Z and POWER offer complex hardware
instructions such as CISC and vector instructions (VMX, SSE) in their ISA. To
improve performance, an optimizing compiler can recognize a specific idiom in
the program and utilize complex instruction(s) instead if the idiom is proven
to be semantically equivalent. The framework used by the compiler to perform
this optimization is commonly known as idiom recognition. In this talk, we
introduce a new idiom recognition framework that detects patterns in input code
sequences and replaces them by CISC instructions on System-Z and VMX
instructions on POWER architectures. The framework uses the graph topological
embedding algorithm to detect patterns in the input code sequence in a flexible
manner. This framework allows a pattern to be matched even though it does not
exactly match an idiom, thereby allowing transformations in more cases than
possible using previous approaches that relied on an exact match. We have
implemented this framework in partnership with IBM Research in the IBM Testa
Rossa (TR) Just-In-Time (JIT) compiler in the IBM Java Developer Kit for Java
6.0. We obtained a performance improvement of 43% on average on IBM's XML
parsers and upto 5x on code-page converters used in IBM's Websphere Application
Server on System-Z.
Greg Steffan
Last modified: Fri Aug 31 10:23:38 EDT 2007