詳解Pentium M處理器
Intel的NetBurst并不是一個(gè)成功的架構(gòu),盡管Intel在設(shè)計(jì)Pentium 4之初,目標(biāo)是10GHz核心頻率。但事實(shí)證明目標(biāo)難以完成。工程師難以在提升頻率的同時(shí),將發(fā)熱量控制到一個(gè)合理的范圍。因此,Intel宣稱NetBurst產(chǎn)品頻率不提升到4GHz以上。畢竟誰都不想坐在一個(gè)“火爐”旁邊,誰都不想聽到嗡嗡作響的風(fēng)扇聲音。 Intel為桌面處理器找到了一條新的開發(fā)方法,不提升時(shí)鐘頻率,而是集成多個(gè)計(jì)算核心。但先天的缺陷難以回避,如果不作任何改變的話,Pentium 4難以和其競爭對手相抗,在當(dāng)前的處理器測試中,Pentium 4在大多數(shù)的測試項(xiàng)目中都落后于AMD。 NetBurst架構(gòu)的高發(fā)熱量和高能耗,不僅讓Intel手足無措,也給一些希望購買Intel產(chǎn)品的消費(fèi)者當(dāng)頭一擊。但I(xiàn)ntel現(xiàn)在產(chǎn)品線中還是有好產(chǎn)品。盡管Pentium III早已退出了桌面市場,但它在移動(dòng)市場很快又找到了新的位置,而現(xiàn)在移動(dòng)市場中的Intel處理器就都是基于和Pentium III相似的架構(gòu),只不過采用了更先進(jìn)的生產(chǎn)工藝和其他一些改進(jìn),實(shí)現(xiàn)了比Pentium III更小的發(fā)熱量和更高的總體性能,Pentium III在移動(dòng)市場獲得重生,被命名為—Pentium M。 盡管采用了Pentium III相關(guān)的架構(gòu),不過Pentium M使用的卻是QPB 4倍前端總線,這個(gè)總線和Pentium 4的總線是一樣的,同時(shí)也為Pentium M通過轉(zhuǎn)接卡在Pentium 4普通主板上面使用提供了理論基礎(chǔ)。華碩的工程師所開發(fā)出來的專用于Pentium M的轉(zhuǎn)接卡就實(shí)現(xiàn)了這個(gè)功能。 Pentium M處理器到底和其他的處理器架構(gòu)上面有何不同?Intel一直都沒有過多的談?wù)撨@款產(chǎn)品的架構(gòu)。在所有發(fā)布的官方文檔中,對其性能指標(biāo)和命名方法的描述也只是只言片語,如:為移動(dòng)電腦設(shè)計(jì)的架構(gòu),專用的堆棧管理,微操作融合技術(shù)(micro-ops fusion),以及增強(qiáng)的Intel SpeedStep技術(shù)(EIST)。但是這些描述并不能夠?qū)entium M的內(nèi)部架構(gòu)表述清楚??磥鞩ntel好像并不想透露太過關(guān)于Pentium M的細(xì)節(jié)信息,這里面一定是有原因的,是什么呢? 其實(shí)Pentium M根本就是根據(jù)P6架構(gòu)作出的小幅修改而成的產(chǎn)品,P6架構(gòu)是Intel很早以前所開發(fā)出來的架構(gòu),最早曾被用于Pentium Pro,后來Pentium II,Pentium III都使用的是這個(gè)架構(gòu)。那么Pentium M看起來更像是廣告鋪天蓋地的NetBurst架構(gòu)的一種倒退哦?當(dāng)然不是,你不能僅將Pentium M看作是一款過時(shí)的,已經(jīng)不合時(shí)宜老架構(gòu)。 其實(shí)在實(shí)際的評測中,Pentium M在很多項(xiàng)目上得分都超過了Pentium 4。而P6架構(gòu)也是Intel開發(fā)的最優(yōu)秀,最成功的一款架構(gòu),僅僅從它在市場中存在的時(shí)間,以及所衍生出來的產(chǎn)品數(shù)量就可知一二。既然如此,同樣使用此架構(gòu)的Pentium M為什么就不能夠繼續(xù)實(shí)現(xiàn)其輝煌呢?現(xiàn)在就讓我們來看看,相比于Pentium III,Pentium M所作出的具體改進(jìn)有哪些? 管線和執(zhí)行核心: Pentium M和Pentium III一樣,都是基于RISC架構(gòu)(精簡指令集架構(gòu))的處理器,不過兩款處理器的執(zhí)行核心有稍有不同。例如:雖然兩款處理器都只有5個(gè)執(zhí)行單元,但是兩款處理器的執(zhí)行管線長度是不一樣的。Pentium III的整數(shù)管線長度為10級(jí),而Pentium M的管線要更長些。當(dāng)然Pentium M的管線長度尚遠(yuǎn)遠(yuǎn)不及Pentium 4,畢竟需要保證Pentium M處理器的執(zhí)行效率,但是為了今后能夠進(jìn)一步提升處理器的頻率,Intel的工程師還是增加了管線長度。 管線長度決定頻率提升的潛力,同時(shí)會(huì)為處理器帶來更多的能耗和發(fā)熱量,因此管線長度的選定,對移動(dòng)處理器來說尤其重要。因此通過一些使用經(jīng)驗(yàn)數(shù)據(jù)判斷,該處理器的管線大約在12-14級(jí)左右,也就是說要比Pentium III的管線長一點(diǎn)點(diǎn)。新增加的管線級(jí)數(shù),除了用來推升處理器的時(shí)鐘頻率外,在Pentium M處理器中的微操作融合技術(shù)也需要更長的管線。這一點(diǎn)將在后文中提及。 較長管線的缺點(diǎn)還頗多,在帶來了更高能耗和更多發(fā)熱量的同時(shí),還會(huì)帶來因?yàn)榉种ьA(yù)測失敗后的更多花銷。尤其對于現(xiàn)在的超標(biāo)量體系結(jié)構(gòu)且擁有亂序執(zhí)行能力的處理器而言,分支預(yù)測失敗所帶來的負(fù)面影響不容忽視,而且已經(jīng)成為影響處理器性能的重要因素。在研發(fā)過程中,開發(fā)人員都會(huì)盡可能降低因?yàn)樵黾訄?zhí)行管線級(jí)數(shù)而帶來的這種影響,那么現(xiàn)在就讓我們來看看,Pentium M中是如何改進(jìn)分支預(yù)測單元的。 改進(jìn)分支預(yù)測和硬件數(shù)據(jù)預(yù)?。?br> 當(dāng)處理器中的管線開始全速運(yùn)轉(zhuǎn),突然發(fā)生執(zhí)行了一個(gè)錯(cuò)誤的程序分支,那么處理器就要重新查找執(zhí)行正確的分支,這個(gè)過程中,一部分執(zhí)行單元會(huì)出于空閑狀態(tài),執(zhí)行的延遲增加,進(jìn)一步影響了最終的性能。分支預(yù)測邏輯的目的就是為了將這種情況出現(xiàn)的幾率最小化。在Pentium M中,分支預(yù)測邏輯是主要的改進(jìn)部分。事實(shí)上,Pentium M的分支運(yùn)測和Pentium 4的很相象。 準(zhǔn)確的說,Pentium M的分支預(yù)測單元應(yīng)該和Prescott核心的Pentium 4處理器相似。它增加了兩個(gè)部分:一個(gè)是識(shí)別循環(huán),另一個(gè)是預(yù)測間接分支。正因?yàn)槿绱?,Pentium M中的分支預(yù)測和Prescott之前的Pentium 4有明顯的不同,而且要比它們更加先進(jìn)。當(dāng)然,要想進(jìn)一步將原本基于使用分支歷史表的傳統(tǒng)靜態(tài)分支預(yù)測方式改進(jìn)的更好,難度非常大。但是通過下面幾個(gè)方面的分支預(yù)測單元的改進(jìn),Intel的工程師將Pentium M的預(yù)測精度整整提高了20%,當(dāng)然這是和Pentium III相比。 第一個(gè)改進(jìn)就是增加了循環(huán)識(shí)別邏輯。傳統(tǒng)的靜態(tài)分支預(yù)測方式,分支預(yù)測的循環(huán)結(jié)束條件老是出錯(cuò)。當(dāng)然能夠通過擴(kuò)大存儲(chǔ)分支信息的緩存器容量,使其存儲(chǔ)更多的分支信息,然后分析其中的數(shù)據(jù)來解決問題。但是這樣一一的分析數(shù)據(jù)會(huì)造成很長的延遲。所以Pentium M使用了稍微不同的方法,將代碼中的循環(huán)識(shí)別邏輯和循環(huán)結(jié)論信息獨(dú)立開來。這樣能夠極大的提升結(jié)束循環(huán)的條件預(yù)測精度。 第二個(gè)就是改進(jìn)間接分支預(yù)測。所謂間接分支就是一個(gè)分支的分支地址,這個(gè)地址在程序編譯時(shí)是不知道的,而且是程序執(zhí)行時(shí),由相關(guān)寄存器的狀態(tài)來決定的。傳統(tǒng)的靜態(tài)分支預(yù)測使用兩個(gè)表:分支歷史表和分支地址表,這有這兩個(gè)表而缺少間接分支地址表,讓預(yù)測的結(jié)果正確率不超過75%。因此開發(fā)人員在Pentium M中,新添加了一個(gè)間接分支表,專門用來存儲(chǔ)這類型的間接分支地址。 經(jīng)過上面兩方面的改進(jìn)之后,由于預(yù)測精度大為提高,管線全速運(yùn)行的情況比以前多了,執(zhí)行單元空閑等待的情況也變少了。正因?yàn)檫@樣,同頻率下的Pentium M整體性能比Pentium III高了大約7%。而且隨著分支預(yù)測單元的改進(jìn),Pentium M也更新了硬件數(shù)據(jù)預(yù)取邏輯,用于從內(nèi)存中將數(shù)據(jù)取到緩存中去。Pentium M采用了和prescott核心Pentium 4處理器相類似的硬件數(shù)據(jù)預(yù)取算法,這種算法要比Pentium III的算法效率更高 : Pentium M和Pentium III、Pentium 4都一樣,是RISC處理器。這意味著執(zhí)行單元在處理內(nèi)部簡化命令的時(shí)候,遠(yuǎn)比處理復(fù)雜的x86指令更有效率。換句話說,也就是在執(zhí)行RISC指令的時(shí)候,要比執(zhí)行通常由三個(gè)甚至更多操作數(shù)所組成的x86架構(gòu)更快捷流暢。因此,x86命令在經(jīng)過解碼器之后,通常會(huì)被分解成兩個(gè)甚至三個(gè)微操作數(shù)。 例如:一個(gè)存儲(chǔ)數(shù)據(jù)到內(nèi)存或一個(gè)處理內(nèi)存中數(shù)據(jù)的命令,被分別解碼成兩個(gè)指令。第一種情況,由計(jì)算地址和存儲(chǔ)數(shù)據(jù)到緩沖器兩個(gè)指令所組成;第二種情況,由從內(nèi)存中讀取數(shù)據(jù)和操作數(shù)據(jù)兩個(gè)指令所組成。而現(xiàn)在的處理器都具備亂序執(zhí)行微操作數(shù)的能力,因此一條x86指令被分解成多個(gè)微操作數(shù)之后,能夠分別送到執(zhí)行管線中被處理。 如果這些微操作彼此之間無關(guān),那么分開執(zhí)行起來自然沒有什么問題。但如果一個(gè)指令的執(zhí)行需要另外一個(gè)的執(zhí)行結(jié)果,那么管線就會(huì)出現(xiàn)等待現(xiàn)象,等待執(zhí)行單元將處理完成的結(jié)果發(fā)送過來,然后才能夠繼續(xù)處理。這種等待現(xiàn)象在NetBurst架構(gòu)中并不明顯,因?yàn)樗泻芏鄨?zhí)行單元,不過對于Pentium M這類型的處理器而言,性能的影響就相當(dāng)明顯了,而且等待狀態(tài)下的處理器繼續(xù)浪費(fèi)能源,這點(diǎn)對于移動(dòng)處理器來說也是不可接受的。這也是為什么Pentium M處理器要加入微操作融合技術(shù)的原因,它能夠盡可能避免出現(xiàn)執(zhí)行單元處于空閑狀態(tài)這一情形。 這項(xiàng)技術(shù)的工作非常簡單,就是根據(jù)相關(guān)性將x86指令劃分成一些部分,然后通過解碼器將所有的微操作都集中到一起,然后通過之前確定的相關(guān)性劃分微操作,從而形成x86指令的子集,有相關(guān)性的微操作被劃分在一起,由同一個(gè)執(zhí)行單元執(zhí)行,而不同執(zhí)行單元所執(zhí)行的微操作彼此是無關(guān)的。因此不會(huì)再出現(xiàn)等待某執(zhí)行單元的執(zhí)行結(jié)果的情況。雖然微操作融合需要多做一些工作,不過這對于性能提升是有好處的。通過測試,使用這項(xiàng)技術(shù)能夠讓整數(shù)數(shù)據(jù)的處理速度提升5%,浮點(diǎn)數(shù)據(jù)的處理速度提升9%。 專用堆棧管理器: Pentium M中的另一項(xiàng)改進(jìn)就是堆棧管理器。由于軟件使用堆棧非常頻繁,有其是當(dāng)其調(diào)用子程序時(shí)更是如此。讓執(zhí)行單元頻繁處理PUSH,POP,CALL和RET這樣的關(guān)于堆棧操作的指令,讓執(zhí)行單元時(shí)鐘處于運(yùn)行狀態(tài),這不利于處理器控制發(fā)熱量和能耗。因此Pentium M中的專用堆棧管理器和堆棧指針寄存器一起工作,堆棧管理器能夠識(shí)別,像PUSH,POP,CALL和RET這樣的指令,在它們經(jīng)過解碼器,但到達(dá)執(zhí)行單元以前預(yù)處理它們,從而降低執(zhí)行單元的負(fù)載。能夠在提升性能的同時(shí),進(jìn)一步控制發(fā)熱量和能耗。根據(jù)測試表明,使用專用堆棧管理器能夠減少整數(shù)執(zhí)行單元5%的指令執(zhí)行數(shù)量。 處理器總線: 盡管Pentium M使用基于Pentium III的架構(gòu),但Pentium M采用了完全不同的總線。P6架構(gòu)的系統(tǒng)總線峰值帶寬僅為1GB/s,這對于現(xiàn)在的標(biāo)準(zhǔn)來說太小了。同樣考慮到可能傳統(tǒng)的總線不太適合現(xiàn)在的應(yīng)用,因此Intel工程師決定讓Pentium M使用Quad Pumped Bus總線。這種總線正是Pentium 4的總線標(biāo)準(zhǔn)。 事實(shí)上,QPB總線也是Pentium M和Pentium 4唯一的相似之處。如果細(xì)加分析的話,兩者的總線架構(gòu)還是有一些細(xì)微的區(qū)別,Pentium M的QPB總線缺少一些功能。例如:最顯著的特點(diǎn)就是Pentium 4的系統(tǒng)總線時(shí)800MHz,而Pentium M之后533MHz;然后Pentium M的系統(tǒng)總線只支持32位尋址,也就是說最多僅支持4GB的內(nèi)存空間。最后Pentium M的總線不支持多處理器配置。不過這些差異之處都不太重要,反而是Pentium M和Pentium 4在總線之間的兼容,才奠定了移動(dòng)處理器在桌面電腦中應(yīng)用的基礎(chǔ)。 SSE2指令集: 所有的Pentium M處理器都支持SSE和SSE2擴(kuò)展指令集。因此這也是Pentium M針對Pentium III的一次升級(jí)。不過Pentium M并不支持SSE3指令集,畢竟這是在Prescott核心處理器上第一次采用的指令,推出的時(shí)間要比Pentium M處理器更晚。 L2緩存的節(jié)能措施: Pentium M配備有非常大的L2緩存,容量達(dá)到2MB。使用大緩存有許多好處,例如能夠減少系統(tǒng)總線和內(nèi)存總線的負(fù)荷,達(dá)到降低能耗的作用。不過更為特別的一點(diǎn)是,Intel為Pentium M處理器本身也使用了特殊的節(jié)省能耗的方法。和Intel其他的處理器一樣,Pentium M中的緩存是8路相關(guān),并且將L2緩存被進(jìn)一步細(xì)分為4個(gè)部分,每一個(gè)部分都可以被獨(dú)自訪問。 也就是說,處理器在工作時(shí),不需要讀取一個(gè)緩存也運(yùn)轉(zhuǎn)整個(gè)緩存。因此這樣節(jié)省的L2能耗大約為4倍。不過采用這種方式L2緩存的延遲會(huì)增加1個(gè)周期,如果于Pentium III相比的話。另外Pentium M的L1緩存為64KB,其中代碼和數(shù)據(jù)容量各為3 |