EPIC - What's it all about? Zef Zerfer zefrer@hotmail.com EPIC, computing, INTELExplicitly Parallel Instruction Computing or EPIC is the basis uppon IA-64(Intel Architecture 64(bit)) is built. But before I go over what EPIC really is, I must first tell you about IA-64. Intel, untill now, has not built a 64bit processor, something that companies like Digital, Sun Microsystem and IBM have been doing for years, and of course, these are the same companies that have dominance in the server market and really high end computers. Intel's first 64bit processor is scheduled to be launched mid-2000, codenamed Merced is not just evolutionary, as the 64bit architecture suggests, it is also revolutionary and here is where EPIC steps in. EPIC is mainly based on Explicit Parallelism, as you might have guessed, which enables it to execute many instructions at once(in a bundle) while also executing many bundles per clock. To do this of course the processor must have lots of execution units and a very large data path which I'll discuss later on. To aid in parallelism the EPIC architecture has two features, predication and speculation, that are used to minimize stalls. A big change is that features like predication and speculation are now not in the proccessors control but rather in the compiler's. The compiler decides how and when to use features like these so that the processor doesn't have to. How these two features actually work is what I'll be discussing now. Speculation: A large culprit of execution stalls are memory latencies. No matter how fast your memory is, CPUs will always be faster. What speculation actually does is that it minimises the effect memory latencies will have on execution time thus enabling the processor to sustain it's parallel operation at all times(or most of the time :)). There are two types of speculation, namely control and data. In a control speculation a memory load occurs even before an operation is executed. Now if an invalid value(like an undefined value) exists? In a normal program this would can a general protection fault and a crash but in EPIC systems it remembers that that data had been speculated and simply check for exceptions(invalid values) when it actually needs the data. If the data has already been loaded before the operation has been determined(executed) then there would be no stall due to memory latency... Data speculation on the other hand is when a memory load occurs before a memory store that is directly related to the load. For example you have a program that stores data in memory and then loads some other data that is directly related to what it just stored. Relationships between memory addresses are determined at compile time by a proccess called disambiguation. Again, before the program actually uses the data it loaded via data speculation it must check if it is indeed the data it's supposed to be(ie, no memory addresses overlapped). If addresses did overlap different data might be present at the address theprogram loaded before the store than they would be if the memory load had occured after the store. Predication: Hope you're still with me :). Next big feature of EPIC, is predication. It's main use is to eliminate branches. How? Say you have: if(a