在過去的幾年中,Intel的處理器發展規劃路線並不固定。為了延續P6架構核心的成功,Intel采用了兩(電腦沒聲音)個開發團隊並進的策略,其中一個團隊繼續發展Pentium 4采用的NetBurst架構,另一個團隊將對代號Banias的Pentium M進行重新設計,目標是更低成本、更低功耗的高集成度核心。最終的結果是NetBurst架構的發展被Banias的進化超越。Dothan是Banias第一個進化成果,它擁有更高的時鐘頻率和更多的緩存,為進一步的發展奠定了基礎。隨後Intel的以色列發展中心(IDC)以Dothan為基礎提出了原生雙核心和共享二級緩存解決方案,這就是代號Yonah的Core Duo處理器,也是首款雙核心Intel處理器。從Dothan到Yonah的演進具有遠比Banias到Dothan更重大的意義,不僅僅只因為Yonah是首款Intel雙核心處理器,最重要的是Yonah擁有更多架構上的改進。接下來Intel又對Yonah進行了改進,這就是讓Intel從競爭對手AMD手中奪回技術領先地位的Core 2系列處理器。
和對手Intel相比,AMD近幾年的發展策略顯得相對保守,自從K7核心在技術上領先於Intel之後,角色發生了巨大的轉變,他們從先前的追趕者變成了領先者,突然的角色互換使他們失去了發展的動力,加之他們沒有足夠的財力可以像Intel那樣同時進行兩(電腦沒聲音)個處理器開發計劃。他們最終選擇了繼續K7核心的開發,而沒有采用重新研發新架構的高風險計劃。由K7進化而來的K8進行了輕微的架構改進並且整合了北橋芯片,可以說K7到K8的進步非常大。但是不得不承認Intel從Dothan到Yonah的遞進做的更為出色。而造成Intel追上AMD的更為重要的原因是,Intel的NetBurst架構開發團隊以每五年為一個微架構更新周期,另一個Pentium M開發團隊在IDC的微架構更新周期竟然達到了每年一次,從Banias、Dothan、Yonah到 Merom/Conroe僅僅只用了四年時間。而在這期間K8幾乎沒有任何發展。如果Intel仍然繼續NetBurst架構向下發展,以五年為一個微架構更新周期,或許AMD的K8仍然在保持領先地位。最終的結果證明,Intel采取雙線並進的研發計劃是非常明智的選擇,成為了決勝的關鍵。
幸運的是AMD提早認識到要與Intel競爭必須縮短研發周期,他們把原先4-5年一個微架構更新周期縮短到了兩(電腦沒聲音)年,這也造就了Barcelona計劃。盡管Barcelona架構比Core 2 Duo遲了一年左右,但是它仍然被AMD寄予厚望,擔當起重新奪回技術領先地位的重任。Intel過渡到45nm制造工藝計劃是Barcelona的最好機會。按照目前的消息來看,Intel采用45nm制造工藝的代號Penryn的Core 2 Duo處理器將會在2007年底上市,但是從目前的情況來看全面上市至少要到2008年。也就是說,Intel過渡到采用45nm制造工藝的Penryn可能需要比預期更長的時間,而采用Barcelona架構的服務器版本將會在2007年中上市,桌面處理器也會在第三季度上市這可能會使AMD在時間上搶得先機。
認識Barcelona架構:
Barcelona是AMD首款四核心處理器,采用65nm制造工藝,和Intel的四核Kentsfield處理器由兩(電腦沒聲音)個雙核心組成的架構不同,Barcelona是單處理器集成四個核心的架構是真正的原生四核處理器。不過,盡管在技術上要優於Intel的Kentsfield,我們還是不確信Barcelona在現實中的性能會大幅超越Kentsfield。
Barcelona的設計比K8要復雜的多,需要多達11個金屬層,而K8和Core 2 Duo分別只有9個和8個。而更多的金屬層只會使制造過程更為復雜增加成本,對於最終的用戶來說並沒有太大意義。Barcelona擁有463百萬個晶體管,比Kentsfield少了119百萬個。晶體管數量少是因為緩存減少的原因,Barcelona上的每個核心都擁有128KB一級緩存和512MB二級緩存,再加上四個核心共享的2MB三級緩存,緩存的總量為4.5MB。而Kentsfield的緩存總量達到了8.25MB,比Barcelona多了80%。不過Barcelona的緩存仍然遠遠要比四核心K8要多,如果不計算緩存晶體管,一個雙核Athlon 64 X2處理器的晶體管數量大約為94百萬個,而Barcelona的晶體管數量大約為247百萬個。即使兩(電腦沒聲音)個雙核Athlon 64 X2處理器的晶體管數量也沒有Barcelona多。
SSE128:
在從K8到Barcelona的眾多改進中有一個非常重要的改變,AMD把它稱為SSE128。在K8架構中可以同時執行兩(電腦沒聲音)個SSE指令,但是SSE的執行帶寬僅僅只有64-bit。在K8中執行一個128-bit的SSE指令,必須要分成兩(電腦沒聲音)個64-bit指令來執行。這意味著執行一個128-bit的SSE指令需要占用一個額外的解碼通道。Barcelona把K8的64-bit SSE的執行帶寬提高到了128-bit,因此執行一個128-bit的SSE指令不用再進行分解。這樣一來不但可以獲得更多可用的解碼帶寬,而且指令的執行效率也大大提高。增加SSE指令的執行帶寬也會造成核心內部的很多改變。由於獲得了更多的解碼帶寬,在執行128-bit的SSE指令時有出現了一個新的瓶頸,那就是指令取得帶寬。Barcelona的指令取得帶寬已經從K8的每周期16byte提高到了32byte。32byte的指令取得帶寬不僅僅有益於SSE編碼,對整數編碼也同樣非常有好處。更大的指令取得帶寬會明顯推進處理器性能。
在Barcelona上你可以取得和解碼更多的指令,這意味著你需要獲得更多的數據到執行核心,因此AMD加寬了L1緩存和SSE寄存器之間的傳輸界面。現在Barcelona可以每周期執行兩(電腦沒聲音)個來自L1-D緩存的128-bit SSE指令,原理和K8每周期執行兩(電腦沒聲音)個64-bit指令一樣。加上AMD同時加寬了L2緩存可內存控制器之間的傳輸界面,從而解決了指令取得帶寬的瓶頸。事實上SSE128的改進非常類似於Yonah到Merom的改進。在Conroe/Merom之前Yonah的FP/SSE性能還不如K8。這在Yonah和K8的性能對比測試中有很明顯的表現,雖然兩(電腦沒聲音)者在大多數應用程序、3D渲染和游戲性能中的性能表現非常接近,但是在視頻編碼性能測試中K8明顯要優於對手。但是Core 2處理器的出現使這種情況發生了逆轉,視頻編碼性能大幅度超越K8。也許SSE128的改進會使這種情況有所改變。
更高級的分支預測器:
盡管SSE128被AMD稱為Barcelona的最大改進,但是這只是冰山一角而已。在技術改進清單中排在最前面的是分支預測器。分支預測器的工作原理很簡單,如果分支編碼結果之前曾經被取用過,那麼它將最有可能在下一次被提取。所以分支預測器的用途在於監測正在被CPU執行的指令,並且相應的對指令被執行的次數進行記錄,來統計特定地址的分支編碼結果被提取的概率。一旦計數器內部累積足夠的數據,分支預測器就可以相對比較精確的對分支結果是否會被提取進行預測。通常來講,CPU的分支預測器性能會直接影響數據處理的精確度。K8的分支預測器就非常好,對它的架構做了專門的優化。不過Intel的Pentium M和Pentium 4采用的分支預測器技術要更為出色。在Barcelona中將增加了一個512通路的間接分支預測器,更多的分支預測器將使Barcelona比K8獲得和預測更多的歷史數據,而更多的歷史數據也會使支預測器更加精確。
頻帶堆棧優化和更快的加載速度:
Intel在Pentium M上首次提出了一個叫做專用堆棧管理器的功能,顧名思義就是用一個堆棧管理器來操作所有的X86堆棧運轉。簡單來說就是通過獨立的堆棧管理器減輕了處理的負擔。在Barcelona上AMD采用了相類似的技術,稱為Sideband Stack Optimizer(頻帶堆棧優化),不但可以單獨處理所有的堆棧運轉,而且對堆棧處理器進行了優化,使其不浪費執行單元的位寬。
Barcelona還將具有Out-of-order load execution(亂序載入處理)能力,某些指令在實際運行當中可以繞過其他指令的處理,而且指令的存儲也可以不按順序進行,這在某些環境下對效率的提高有著很關鍵的作用。
更快速的內存控制器:
從以往的經驗來看,AMD每推出一款新的處理器都會對內存控制器進行一次增強http://.,Barcelona也不例外,它的內存控制器改進將會使內存性能得到很大的提升。和K8相比Barcelona的內存控制器將更加智能化。K8(Socket-940/939/AM2)處理器整合的是一個128-bit內存控制器,而在Barcelona中這個內存控制器被分離成兩(電腦沒聲音)個64-bit控制器。每個控制器都可以獨立運行,從而使內存控制的效率更高。尤其是四個核心分別處理不同的任務時它的優點更加明顯。另外,Barcelona的北橋也將擁有比K8更高的帶寬,考慮到高帶寬的利用這個北橋將支持未來的DDR3內存標准。不過照目前的消息來看,起初發布的Barcelona仍然只支持DDR2內存。
新的Prefetcher單元:
Prefetcher(預取)單元的作用是預先取得內存中的數據放到緩存中備用,以加快內存的潛伏期。Intel的Core 2處理器每個核心有三個Prefetcher單元。K8處理器每個核心有兩(電腦沒聲音)個Prefetcher單元,一個用來預取指令,一個用來預取數據。Barcelona每核心的Prefetcher單元數量仍然和K8一樣,但是對它們進行了改進。最大的改變是數據Prefetcher單元會直接將數據儲存到L1緩存中,而K8的數據Prefetcher單元是把數據儲存到L2緩存中。把數據預取到潛伏期更低的L1緩存,會增加核心預取的精確性而且還可以避免占用L2緩存。而最大的改進是,在Barcelona的內存控制器內部加入了一個DRAM Prefetcher單元,這個DRAM Prefetcher單元用於整體的內存需求,它不會把