The Challenges of Object-Oriented Code

The predominance of object-oriented code has presented developers and compiler designers with a series of challenges. Under this form of coding, there are many small procedures. Even more importantly, of these procedures, many more are indirect, or virtual, procedures. This development limits the absolute size of regions and bounds the scope for ILP. Since this style of code is inherently serial, items must be checked before executing a load or store.

Solutions to the Challenges of Object-Oriented Code

The Itanium processor's unique EPIC architecture allows us to do something we call inlining of code. Speculative inlining and execution is the most common variant of this. Basically, if you've got a piece of code that does not have a virtual address, but you know the address, the compiler can look at this, and even though it's broken into small procedures, it can look at the procedures as a sequence or serial set of procedures. It can put them in line so that it can look at these procedures as one long block of executable code.

Where you actually have a problem is when you don't actually know that the procedure is in that line. In other words, the address gets computed as part of the execution of the program. But in this case, you can speculate. The compiler will speculate that the code will go to a certain block, so it will be placed in line for now.

If the code doesn't go there, the compiler can use the control speculation aspect of the EPIC architecture to correct the error. It won't generate a fault or crash but instead will self-correct on the fly. This guarantees correct exception behavior and shows how architectural support for speculation can ensure a system's recoverability.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.135.217.228