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