Eric, <So if new registers or execution units appear, then, either all that control logic needs to return in order to ensure backward compatibility, or, the newer processor contains the older processor as a sub unit, and any old executables ignore the new logic.>
It would take too long for me to explain right now. All I'll say right now is that the compiler doesn't need to change from Itanium to McKinley and beyond, even if the execution unit changes radically.
As for registers, it's always tough to add more registers. Register renaming is used in OOO processors, but that doesn't solve the entire problem. OOO processors also use instruction set extensions to add registers, like SSE, AltiVec, or x86-64. Itanium already has 128 integer registers, 128 floating-point registers, and 64 predicates, which is a lot. If more are necessary, I guess implementing an extension to the instruction set is the best way to go for IA-64. (Register renaming could also be employed, but it's not clear if it's worth implementing in IA-64.)
Tenchusatsu |