英特爾IA-64指令集處理器Itanium,拜先進的指令集架構之賜,在原生軟體上有著相當優異的表現,但卻一直苦於執行x86程式碼效率不彰的問題。其主因,除了在於Itanium是將x86指令解碼成微指令交由內部執行單元執行、受限於x86指令解碼器的效能及數量外,IA-64/x86兩種執行模式相互切換時的Context Switch也會造成相當大的延遲負擔(Overhead)。另外,這限制了Itanium支援x86新增指令的彈性。更重要的是,為了實作與x86的硬體相容,大幅增加了Itanium的設計及產品成本。據估計,這部分耗用了Itanium 2核心約30%的電路,真可謂吃力不討好。也因此,Itanium一直被侷限於高階運算,無法進入x86處理器所主導的中低階伺服器市場。

有鑑於此,英特爾積極發展IA-64專用的x86指令集模擬器「IA-32 Execution Layer」來解決這個問題。IA-32EL最大的特色,就是兩階段的指令轉譯過程。有別於過去如Digital FX!32和Transmeta CMS等方案,IA-32EL並非轉譯單一指令,而是透過既有的對應樣板(Template),將程式碼的基本區塊(Basic Block)直接轉換為對應的IA-64指令順序,這樣就大幅降低了轉譯時的負擔,英特爾將其命名為「Cold Code Translation」。另外,IA-32EL會收集所有基本區塊的執行頻率,針對常用的基本區塊,更進一步的產生立即碼(Immediate Language),再針對IA-64指令集的特性及基本區塊之間的分支關聯進行最佳化轉譯,儲存於主記憶體之中,這個動作命名為「Hot Code Translation」。

根據英特爾及部分學術論文的研究報告,IA-32EL可以使Itanium 2在執行x86程式碼時,擁有和同時脈Xeon處理器相當的效率。由於軟體擁有改版的彈性,所以也可以隨時支援新增的x86指令。目前IA-32EL的Windows Server 2003版本可以在微軟網站免費下載,今年將會推出對應Red Hat及SuSE Linux的版本。IA-32EL是否可以扭轉外界普遍對Itanium執行x86程式效能不佳的刻板印象,進而降低產品成本,進入中低階伺服器市場,相當值得觀察。文⊙劉人豪

熱門新聞

Advertisement