Conroe強(qiáng)在哪兒?Core vs K8架構(gòu)解析
在處理器頻率已經(jīng)達(dá)到3GHz甚至更高的時(shí)代,保證即將用到的指令和數(shù)據(jù)已經(jīng)在緩存中準(zhǔn)備好是處理器設(shè)計(jì)者最重要的工作之一。因?yàn)橹挥羞@樣,才能保證隨著處理器頻率的提高性能也隨之提高;否則的話,更高的處理器頻率只會(huì)使處理器花費(fèi)更多的時(shí)鐘周期來等待數(shù)據(jù)。這種把數(shù)據(jù)提前裝入緩存的技術(shù)被稱為“數(shù)據(jù)預(yù)取技術(shù)”(Prefeching)。但是,之前的處理器采用的數(shù)據(jù)預(yù)取技術(shù)并不能保證每次都成功,總會(huì)有一些失敗的情況。這會(huì)導(dǎo)致處理器性能降低,特別是在運(yùn)行對(duì)帶寬敏感的應(yīng)用程序的時(shí)候。
Core 微架構(gòu)所采用的數(shù)據(jù)預(yù)取技術(shù)毫無疑問是目前為止非常先進(jìn)的,要優(yōu)于 Pentium 4 和 Athlon 64 所采用的技術(shù)。Core 微架構(gòu)中的每個(gè)核心至少有3組預(yù)取單元,包括2組數(shù)據(jù)預(yù)取單元和1組指令預(yù)取單元。除此之外,共享式二級(jí)緩存還擁有2組預(yù)取單元。這樣,在一個(gè)雙核心的采用 Core 微架構(gòu)的處理器中,共有8組預(yù)取單元。有一個(gè)問題是,多達(dá)8組的預(yù)取單元在進(jìn)行預(yù)取工作時(shí),很容易會(huì)妨礙到正在運(yùn)行的程序的正常的 load 操作。為了避免這種情況的發(fā)生,Core 微架構(gòu)采取了預(yù)取監(jiān)測(cè)器的機(jī)制,該監(jiān)測(cè)器總會(huì)給予正在運(yùn)行的程序更高的優(yōu)先級(jí)。這樣,預(yù)取單元就決不會(huì)從正在運(yùn)行的程序那里“偷”走很多帶寬了。
Core 微架構(gòu)的預(yù)取機(jī)制還有更多新特性。數(shù)據(jù)預(yù)取單元經(jīng)常需要在緩存中進(jìn)行標(biāo)簽查找。為了避免引起正在運(yùn)行的程序進(jìn)行的標(biāo)簽查找的更高的延遲,數(shù)據(jù)預(yù)取單元使用標(biāo)簽查找的 store 端口。如果你還記得,load 操作的發(fā)生頻率是 store 操作的2倍之多,那么就容易理解這樣的選擇了——store 端口的使用頻率僅為 load 端口的一半。并且,store 操作在大多數(shù)情況下并不是影響系統(tǒng)性能的關(guān)鍵,因?yàn)樵跀?shù)據(jù)開始寫入后,處理器可以馬上開始進(jìn)行下面的工作,而不必等待寫入操作完成。緩存/內(nèi)存子系統(tǒng)會(huì)負(fù)責(zé)數(shù)據(jù)的整個(gè)寫入到緩存、復(fù)制到主內(nèi)存的過程。
Core 微架構(gòu)的緩存系統(tǒng)也令人印象深刻。二級(jí)緩存容量高達(dá)4MB,并且是由兩個(gè)核心共享的,訪問延遲僅12到14個(gè)時(shí)鐘周期。每個(gè)核心還擁有32KB的一級(jí)指令緩存和一級(jí)數(shù)據(jù)緩存,訪問延遲僅僅3個(gè)時(shí)鐘周期。從 NetBurst 微架構(gòu)開始引入的追蹤式緩存(Trace Cache)在 Core 微架構(gòu)中消失了。NetBurst 微架構(gòu)中的追蹤式緩存的作用與常見的指令緩存相類似,是用來存放解碼前的指令的,對(duì) NetBurst 微架構(gòu)的長流水線結(jié)構(gòu)非常有用。而 Core 微架構(gòu)回歸相對(duì)較短的流水線之后,追蹤式緩存也隨之消失,因?yàn)?Intel 認(rèn)為,傳統(tǒng)的一級(jí)指令緩存對(duì)短流水線的 Core 微架構(gòu)更加有用。
關(guān)注我們
