CPU技術對比:Intel Core架構與AMD K8架構
下面,就讓我們來仔細了解一下隱藏在市場宣傳人員的口號背后的 Core 微架構的秘密,并且與 AMD 的 K8 微架構、Intel 之前的 NetBurst 微架構以及 Pentium M 處理器進行對比。撰寫這篇文章之前,我們與 Intel 以色列研發中心(Israel Development Center,簡稱IDC)的架構設計師之一——Jack Doweck 進行了交流。Jack Doweck 設計了全新的內存亂序緩沖區(Memory Reorder Buffer)和內存相關性預測系統(Memory disambiguation system)。
Intel 的市場宣傳人員聲稱 Core 微架構是 Pentium M 處理器和 NetBurst 微架構的融合。然而目前比較普遍的看法是,Core 微架構是 Pentium Pro 架構,或者說是 P6 微架構的延續。在 Core 微架構中,你很難找到任何與Pentium 4,或者說是 NetBurst 微架構有關的東西。在我們與 Jack Doweck 的交談之后,這個事實更加清晰——Core 微架構中只有預取機制是從 NetBurst 微架構獲得的靈感,所有其它的設計都是從 Yonah 微架構(Core Duo 處理器)演變而來,而 Yonah 微架構顯然是從 Banias 處理器和 Dothan 處理器演變而來的。所有 Banias、Dothan、Yonah和采用 Core 微架構的處理器都繼承了 NetBurst 處理器的前端總線設計,但除此之外,它們毫無疑問都是曾經獲得巨大成功的 P6 微架構的后代。在某種意義上,你可以把 Core 微架構叫做“P8 微架構”,因為 Banias 和 Dothan 處理器曾經被稱作“P7 微架構”。(不過,需要注意的是,Intel 從未給出過 Banias 和 Dothan 處理器所采用的微架構的正式名稱,我們一般用 Pentium M處理器代表它們,或者簡稱為 PM 處理器。)
不過這并不意味著 Intel 的工程師只是把 Yonah 處理器的一些功能單元和解碼器重新包裝一下然后換了個名字就推出來。Jack 告訴我們,Woodcrest、Conroe 和 Merom 處理器都是基于 Yonah 處理器的,但是幾乎80%的架構和電路設計需要重新進行。
為使那些不熟悉處理器設計的讀者也能理解文章后面的內容,我們首先從一個處理器微架構的速成教程開始。為了理解處理器設計的目標和優劣,你首先需要了解處理器執行的指令,所以我們從處理器運行的軟件開始。
典型的 X86 程序的代碼中大約有50%的指令是存儲器訪問指令,其中存儲器讀指令大約是存儲器寫指令的2倍。然后,大約15%到20%的指令是分支指令(if, then, else等)。剩余指令中,大部分是諸如“ADD”、“MUL”這樣的較簡單的計算指令。像“DIV”、“SQRT”這些較復雜的計算指令在所有指令中只占很少的一部分。所有這些指令都按照典型的流水線步驟執行:取指,解碼,取操作數,執行,退出。
首先,處理器會根據指令指針寄存器(instruction pointer register)指示的地址取回指令。這時,對處理器來說,指令僅僅是一些沒有意義的0、1字符串。只有在被解碼之后,指令對處理器來說才開始有意義。指令被解碼后可以得到操作數地址和操作碼,而操作數地址可以在下一步發揮作用:取操作數。你不會希望處理器對操作數的地址進行計算,而是對那些地址里面存放的內容進行計算——與 C 語言里面的指針的概念很相似。當操作數被取出來以后,ALU根據操作碼的指示,就可以對操作數進行正確的計算了。計算結果一般將被寫回處理器內部的寄存器堆中。有時候,計算結果也需要寫回到緩存和內存中。這就是最后的步驟——退出。到此為止,你應該略微了解一條指令的整個執行過程了。
今天,對處理器設計者來說,主要的挑戰是處理器的存儲器訪問平均延遲。在一個由 Pentium 4 3.6GHz 和 DDR400 內存構成的系統中,處理器的速度是內存的速度(200MHz)的18倍。也就是說,訪問內存的每一個周期,處理器會經過18個周期。而且,發送一個內存訪問請求需要多個內存周期,回應一個內存訪問也需要多個周期。因此,對于 Pentium 4 來說,花費200到300個處理器周期來等待內存訪問的完成并不罕見。設計處理器緩存的目標就是避免內存訪問的發生。但即使處理器緩存的缺失率僅為4%,也就是說,在處理器訪問存儲器的所有情況中只有4%的比例需要訪問內存,這4%也將顯著降低處理器的執行效率。
下面的表格不僅包括了 Core 微架構和 K8 微架構的存儲子系統的特性,還包括了之前的 K7 處理器、Pentium M 處理器及 Pentium 4 處理器等的存儲子系統的特性。
圖1 緩存結構比較
通過瀏覽該表格,很快就可以發現,Core 微架構的存儲子系統給人留下非常深刻的印象。它不僅擁有最大容量的二級緩存,而且還擁有較低的緩存訪問延遲。共享式二級緩存的設計還可以使單個核心享用完全的4MB緩存。一級緩存和二級緩存的總線位寬都是256-bit,從而可以給核心提供最大的存儲帶寬。