從高級層面角度看,SNB架構只是壹次進化,但是如果看看Nehalem/Westmere以來晶體管變化的規模,絕對是壹次革命。 Core 2引入了壹種叫作循環流檢測器(LSD)的邏輯塊,檢測到CPU執行軟件循環的時候就會關閉分枝預測器、預取/解碼引擎,然後通過自身緩存的微指令(micro-ops)供給執行單元。這種做法通過在循環執行的時候關閉前端節省了功耗,並改進了性能。SNB裏又增加了壹個微指令緩存,用於在指令解碼時臨時存放。這裏沒有什麽嚴格的算法,指令只要在解碼就會放入緩存。預取硬件獲得壹個新指令的時候,會首先檢查它是否存在於微指令緩存中,如是則由緩存為其余的管線服務,前端隨之關閉。解碼硬件是x86管線裏非常復雜的部分,關閉它能夠節約大量的功耗。如果這種技術也能引入到Atom處理器架構中,無疑也能使之受益匪淺。
這個緩存是直接映射的,能存儲大約1.5K微指令,相當於6KB指令緩存。它位於壹級指令緩存內,大多數程序的命中率都能達到80%左右,而且帶寬也相比壹級指令緩存更高、更穩定。真正的壹級指令和數據緩存並沒有變,仍然都是32KB,合計64KB。
這看起來有點兒像Pentium 4的追蹤緩存,但最大的不同是它並不緩存追蹤,而更像是壹個指令緩存,存儲的是微指令,而非x86指令(macro-ops)。與此同時,Intel還完全重新了壹個分支預測單元(BPU),精確度更高,並在三個方面進行了創新。
第壹,標準的BPU都是2-bit預測器,每個分支都使用相關可信度(強/弱)進行標記。Intel發現,這種雙模預測器所預測的分支幾乎都是強可信度的,因此SNB裏多個分支都使用壹個可信度位,而不是每個分支對應壹個可信度位,結果就是在分支歷史表中同樣的位可以對應更多分支,進而提高預測精確度。
第二,分支目標同樣做了翻新。之前的架構中分支目標的大小都是固定的,但是大多數目標都是相對近似的。SNB現在支持多個不同的分支目標大小,而不是壹味擴大尋址能力、保存所有分支目標,因而浪費的空間更少,CPU能夠跟蹤更多目標、加快預測速度。
第三,提高分枝預測器精度的傳統方法是使用更多的歷史位,但這只對要求長指令的特定類型分支有效,SNB於是將分支按照長短不同歷史進行劃分,從而提高預測精度。 類似於AMD的推土機、山貓,Intel SNB也使用了物理寄存器文件。Core 2、Nehalem架構中,每個微指令需要的每個操作數都有壹份拷貝,這就意味著亂序執行硬件(調度器/重排序緩存/關聯隊列)必須要非常大,以便容納微指令和相關數據。Core Duo時代是80-bit,加入SSE指令集後增至128-bit,現在又有了AVX指令集,按照趨勢會翻番至256-bit。 RPF在寄存器文件中存儲微指令操作數,而微指令在亂序執行引擎中只會攜帶指向操作數的指針,而非數據本身。這就大大降低了亂序執行硬件的功耗(轉移大量數據很費電的),同時也減小了流水線的核心面積,數據流窗口也增大了三分之壹。
核心面積的精簡正是AVX指令(SNB最主要革新之壹)集得以實現並保證良好性能的關鍵所在。以最小的核心面積代價,Intel將所有SIMD單元都轉向了256-bit。
AVX支持256-bit操作數,相當消耗晶體管與核心面積,而RPF的使用加大了亂序執行緩沖,能夠很好地滿足更高吞吐量的浮點引擎。
Nehalem架構中有三個執行端口和三個執行單元堆棧:
SNB允許256-bit AVX指令借用128-bit的整數SIMD數據路徑,這就使用最小的核心面積實現了雙倍的浮點吞吐量,每個時鐘可以進行兩個256-bit AVX操作。另外執行硬件和路徑的上位128-bit是受電源柵極(Power Gate)控制的,標準128-bit SSE操作不會因為256-bit擴展而增加功耗。
AMD推土機架構對AVX的支持則有所不同,使用了兩個128-bit SSE路徑來合並成256-bit AVX操作,即使八核心(四模塊)推土機的256-bit AVX吞吐量也要比四核心SNB少壹半,不過實際影響完全取決於應用程序如何利用AVX。 SNB的峰值浮點性能翻了壹番,這就對載入和存儲單元提出了更高要求。Nehalem/Westmere架構中有三個載入和存儲端口:載入、存儲地址、存儲數據。
SNB架構中載入和存儲地址端口是對稱的,都可以執行載入或者存儲地址,載入帶寬因此翻倍。 SNB的整數執行也有了改進,只是比較有限。ADC指令吞吐量翻番,乘法運算可加速25%。環形總線、三級緩存和系統助手
Nehalem/Westmere每個核心都與三級緩存單獨相連,都需要大約1000條連線,而這種做法的缺點是如果頻繁訪問三級緩存,效果可能不會太好。 SNB又整合了GPU圖形核心、視頻轉碼引擎,並***享三級緩存。Intel並沒有沿用此前的做法,再增加2000條連線,而是像服務器版的Nehalem-EX、Westmere-EX那樣,引入了環形總線(Ring Bus),每個核心、每壹塊三級緩存(LLC)、集成圖形核心、媒體引擎、系統助手(System Agent)都在這條線上擁有自己的接入點,形象地說就是個“站臺”。
這條環形總線由四條獨立的環組成,分別是數據環(DT)、請求環(QT)、響應環(RSP)、偵聽環(SNP)。每條環的每個站臺在每個時鐘周期內都能接受32字節數據,而且環的訪問總會自動選擇最短的路徑,以縮短延遲。隨著核心數量、緩存容量的增多,緩存帶寬也隨時同步增加,因而能夠很好地擴展到更多核心、更大服務器集群。
這樣,SNB每個核心的三級緩存帶寬都是96GB/s,堪比高端Westmere,而四核心系統更是能達到384GB/s,因為每個核心都在環上有壹個接入點。 三級緩存的延遲也從大約36個周期減少到26-31個周期。此前預覽的時候我們就已經感覺到了這壹點,現在終於有了確切的數字。三級緩存現在被劃分成多個區塊,分別對應壹個CPU核心,都在環形總線上有自己的接入點和完整緩存管線。每個核心都可以訪問全部三級緩存,只是延遲不同。此前三級緩存只有壹條緩存管線,所有核心的請求都必須通過它,現在很大程度上分而治之了。和以前不同的是,三級緩存的頻率現在也和核心頻率同步,因而速度更快,不過缺點是三級緩存也會隨著核心而降頻,所以如果CPU降頻的時候GPU又正好需要訪問三級緩存,速度就慢下來了。
經過環形總線、三級緩存的變化,非核心(Uncore)概念還在,但是Intel改稱之為系統助手,基本就相當於曾經的北橋芯片: PCI-E控制器,可提供16條PCI-E 2.0信道,支持單條PCI-E x16或者兩條PCI-E x8插槽;
重新設計的雙通道DDR3內存控制器,內存延遲也恢復了正常水平(Westmere將內存控制器移出CPU、放到了GPU上);
此外還有DMI總線接口、顯示引擎、電源控制單元(PCU)。
系統助手的頻率要低於其他部分,有自己獨立的電源層。 Intel的集成顯卡似乎總是個笑話,但這次確實不壹樣了。SNB的CPU性能相比現在提升了10-30%,進化到第六代的GPU圖形性能則會輕松翻好幾番。 Westmere雖然也自帶了圖形核心,但與CPU是雙內核封裝,只是通過45nm工藝、更多著色硬件、更高頻率提升了性能,SNB則將CPU、GPU封裝在同壹內核中,全部采用32nm工藝,特別是顯著提高了IPC(指令/時鐘)。
SNB GPU有自己的電源島和時鐘域,也支持Turbo Boost技術,可以獨立加速或降頻,並***享三級緩存。顯卡驅動會控制訪問三級緩存的權限,甚至可以限制GPU使用多少緩存。將圖形數據放在緩存裏就不用繞道去遙遠而“緩慢”的內存了,這對提升性能、降低功耗都大有裨益。 不過這麽做並沒有說起來這麽簡單。NVIDIA GF100核心費了九牛二虎之力,SNB其實也差不多,同樣進行了全新設計。
順便提壹下Intel的獨立顯卡工程Larrabee。它的重點是廣泛使用全面可編程硬件(除了紋理硬件),SNB則是全面使用固定功能硬件,功能特性和硬件單元相對應,這樣的好處是性能、功耗、核心面積都大大優化,損失則是缺乏彈性。顯然,Intel世界的中心仍舊是CPU,不能讓GPU過分強大,這和NVIDIA的理念正好相反。
可編程著色硬件被稱為EU,包含著色器、核心、執行單元等,可以從多個線程雙發射時取指令。內部ISA映射和絕大多數DX10 API指令壹壹對應,架構很像CISC,結果就是有效擴大了EU的寬度,IPC也顯著提升。
抽象數學運算由EU內的硬件負責,性能得以同步提高。Intel表示,正弦(sine)、余弦(cosine)操作的速度比現在的HD Graphics提升了幾個數量級。
Intel此前的圖形架構中,寄存器文件都是即時重新分配的。如果壹個線程需要的寄存器較少,剩余寄存器jiuihui分配給其他線程。這樣雖能節省核心面積,但也會限制性能,很多時候線程可能會面臨沒有寄存器可用的尷尬。在芯片組集成時代,每個線程平均64個寄存器,Westmere HD Graphics提高到平均80個,SNB則每個線程固定為120個。
所有這些改進加起來,SNB裏每個EU的指令吞吐量都比現在的HD Graphics增加了壹倍。
SNB集成的GPU圖形核心分為兩大版本,分別擁有6個、12個EU。首批發布的移動版全部是12個EU,桌面版則根據型號不同而有兩種配置,可能是高端12個、低端6個。得益於每個EU吞吐量翻番、運行頻率更高、***享三級緩存等特點,即使只有六個的時候性能也會相當令人滿意。 除了GPU圖形核心,SNB中還有壹個媒體處理器,專門負責視頻解碼、編碼。
新的硬件加速解碼引擎中,整個視頻管線都通過固定功能單元進行解碼,和現在正好相反。Intel據此宣稱,SNB在播放視頻的時候功耗可降低壹半。視頻編碼引擎則是全新的。具體細節沒有公布,但是Intel現場拿出了壹段3分鐘長的1080p 30Mbps高清視頻,將其轉換成640×360 iPhone格式,結果整個過程耗時僅僅14秒鐘,轉換速度高達400FPS左右,而這只花費了大約3平方毫米的核心面積。 Intel與軟件產業合作密切,相信這種視頻轉碼技術會很快得到廣泛支持。 Lynnfield Core i7/i5首次引入了智能動態加速技術“Turbo Boost”(睿頻),能夠根據工作負載,自動以適當速度開啟全部核心,或者關閉部分限制核心、提高剩余核心的速度,比如壹顆熱設計功耗(TDP)為 95W的四核心處理器,可能會三個核心完全關閉,最後壹個大幅提速,壹直達到95W TDP的限制。現有處理器都是假設壹旦開啟動態加速,就會達到TDP限制,但事實上並非如此,處理器不會立即變得很熱,而是有壹段時間發熱量距離TDP還差很多。
SNB利用這壹點特性,允許單元控制單元(PCU)在短時間內將活躍核心加速到TDP以上,然後慢慢降下來。PCU會在空閑時跟蹤散熱剩余空間,在系統負載加大時予以利用。處理器空閑的時間越長,能夠超越TDP的時間就越長,但最長不超過25秒鐘。 不過在穩定性方面,PCU不會允許超過任何限制。
之前我們也已經說過了,SNB GPU圖形核心也可以獨立動態加速,最高可達驚人的1.35GHz。如果軟件需要更多CPU資源,那麽CPU就會加速、GPU同時減速,反之亦然。 Sandy Bridge家族仍然沿用酷睿i3/i5/i7的品牌+子系列的命名方式,編號上采用四位數字,其中第壹位均為“2”,表示第二代Core i系列,編號末尾往往有壹個代表不同含義的字母:K代表不鎖定倍頻,均為高端產品;S代表性能優化,原始頻率比沒有字母後綴的低很多,但是單核心加速最高頻率基本相同,另外熱設計功耗都是65W;T代表功耗優化,熱設計功耗只有45W或35W。