“峰回路轉疑無路,柳暗花明又一村”。當在頻率上遇到瓶頸時,英特爾選擇了用雙核的方式來繼續維持處理器性能上的增長,盡管倉促上陣的Pentium D備受爭議,但是英特爾還是搶到了“雙核”的先機;當然事后英特爾并沒有閑著,這位半導體業的大佬其實很明白,如果拿不出更先進的性能增長方案,自己在市場上將更加被動。
冰凍三尺非一日之寒,憑借著在半導體領域多年的積累,英特爾在今年三月份的IDF上宣布在下一代處理器中將放棄現在的“NetBurst”架構而轉向新的“Core”架構,如果說上次變革英特爾是被動接受的話,那么這次很顯然是“未雨綢繆”。本文的主角也正是將在今年下半年登場的“Core”……
一、精簡流水線長度,增加解碼器單元
與NetBurst架構相比,Core架構最明顯的變化就是處理器中流水線級數(長度)大大減少。長期以來,英特爾處理器一直備受“高頻低能”的困撓—長流水線可以很容易達到更高的工作頻率,但是性能增長卻遠沒有跟頻率成正比;而且,提高頻率的同時還有一個非常頭痛的副產品—功耗(TDP)。
此次英特爾在Core架構中大膽放棄了NetBurst架構的思路,只使用了14級流水線。這種改進使以后頻率的提升變得相對困難了一些,但對實際性能來說卻有莫大的幫助—流水線長度降低以后,低頻率、低功耗和高性能可以兼得。
多年以前,AMD曾經在K5處理器上嘗試過使用四組指令解碼器,但是沒有成功;以后很長的一段時間里,Intel和 AMD都沿用了三組指令解碼器的設計。
英特爾在NetBurst架構中試圖通過導入Trace Cache存放編碼后的微指令,并替代高性能復數指令編碼器,但是收效甚微。此次在Core架構中重新回歸四組指令編碼器的設計,更多的指令解碼器理論上意味著更高的性能;但是要把這種優勢變成實際的效果并不容易,不過從目前已經公布的測試結果來看英特爾做得不錯。
二、對雙核心的優化設計
英特爾現在的桌面級雙核心處理器是Pentium D,但是這款產品及其衍生的服務器版本(Dempsey)都是倉促之作。具體表現為它們沒有L2緩存的共享機制,兩個核心之間的通訊甚至還需要通過前端總線(FSB)中轉,這樣會嚴重限制雙核處理器之間的協作應用。
Yonah是英特爾第一個真正意義上從頭開始的雙核心處理器,兩個核心可以共享L2緩存;但作為一款針對移動平臺的產品,新特性帶來的好處并沒有完全體現出來*。
*注釋:共享L2緩存的真正好處是能夠大大減少緩存一致性監聽所帶來的性能下降—但是這種性能下降對于工作站和服務器平臺來說是非常嚴重的問題,而對于桌面和移動平臺來說就不那么明顯了。
Yonah、Woodcrest(Core)與Dempsey處理器的結構對比。Core繼承了Yonah的雙核心設計方式—共享L2緩存和系統總線接口,同時增加了L1緩存之間的通訊;不過Core的內部帶寬更接近Dempsey,片上緩存的帶寬遠遠超過Yonah,同時系統總線的帶寬也有大幅提升
Core架構延續了Yonah的這一特性,因此服務器版本(Woodcrest)將比前代產品(Dempsey)提供更好的性能。此外,英特爾方面多次提到Core架構還可能實現在L1緩存之間直接傳輸數據,不過到目前為止英特爾對此并沒有透露更多的細節,但我們可以相信如果這是真的話,Core的性能無疑會再提升一個檔次。
三、指令融合和分支預測體系
此次英特爾從NetBurst架構到Core架構的轉型,還有一項非常明顯的改進。那就是x86指令的融合,它可以說是Core架構獨有的特性之一(圖3)。
在處理器內部,x86指令被稱為Macro-ops,而內部指令被稱為uops,而Macro-ops融合可以將兩個Macro-ops融合成一個uops。舉個例子來說,我們可以把x86 Compare(比較)指令與x86 Jump(跳轉)指令融合在一起,生成一條單獨的uops(比較并跳轉指令)。在Core中每個解碼器都可以完成這樣的優化工作,但是每周期內最多只能有一個解碼器完成這樣的融合,所以最大指令解碼帶寬是每周期4+1個x86指令。
對比英特爾不同架構中的提取指令/譯碼單元,可以看到Core要比Yonah和Pentium 4更加復雜
這種融合的好處是顯而易見的:首先,融合之后需要執行的指令變少了,這等于直接提高了處理器的執行性能;其次,亂序執行可以因此變得更有效率,因為融合的過程實際上就是讓指令窗口檢查更多的程序代碼,更大限度地發現指令之間的并行性,從而提高處理器的執行效率。不過頗具諷刺意味的是,從某種程度上來看這種x86指令的融合機制使得x86處理器更加RISC(簡單指令集)化而不是CISC(復雜指令集)化。
為了降低長流水線帶來的負面影響,英特爾曾經在NetBurst架構的分支預測上花費了相當大的精力,其分支預測的錯誤率號稱比上一代架構下降了33%以上,而Core架構的分支預測能力在NetBurst的基礎上又有進步。
在新架構中,英特爾不僅保留了上一代架構的跳轉目標緩沖區、跳轉地址計算器以及返回地址堆棧,而且還采用兩種新的預測算法—“循環探測”能夠正確探測(程序的)循環退出,而“間接分支預測”可以基于全局的歷史信息獲取(預測)正確的目標地址。除此之外,Core架構還引入了其它的一些新特性,例如在原先的架構中,跳轉命令總會引入一個周期的流水線空置,但是在Core架構中引入了一個用于存儲跳轉發生位置的隊列,大部分的流水線空置都將被消除。諸多新特性的引入,使得Core的分支預測能力空前強大,從性能上來說無異于如虎添翼。