




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Sandy Bridge核外架構(gòu)的進(jìn)化Nehalem 的遺憾英特爾Sandy Bridge 處理器分析測(cè)試之一計(jì)算機(jī)世界實(shí)驗(yàn)室 盤駿英特爾的“Tick-Tock” 戰(zhàn)略已經(jīng)為人熟知,根據(jù)這個(gè)策略,英特爾每年都會(huì)交替在處理器的制程和微架構(gòu)上進(jìn)行更新。上一年,英特爾將處理器工藝從45nm 提升到了32nm,今年,英特爾將處理器架構(gòu)從Nehalem 升級(jí)到最新一代的Sandy Bridge,這個(gè)早期被叫做Gesher(希伯來文:橋梁)的處理器微架構(gòu)擔(dān)任著特別的橋梁角色。Bridge 和Gesher 都含有橋梁的意思。而Sandy Bridge 微架構(gòu)將這個(gè)含義發(fā)揮到了極致,它是一個(gè)集NetBurst
2、 微架構(gòu)與Nehalem 微架構(gòu)大成的產(chǎn)品,也是一個(gè)首先將CPU和GPU 進(jìn)行真正融合的產(chǎn)品,更是一個(gè)首先將浮點(diǎn)運(yùn)算密度從128 位引向256 位的X86 處理器產(chǎn)品,它確實(shí)像是一個(gè)橋梁,引導(dǎo)著芯片設(shè)計(jì)上和計(jì)算模式上的轉(zhuǎn)變。Sandy Bridge 微架構(gòu)為什么會(huì)是現(xiàn)在這個(gè)樣子呢? Sandy Bridge 在上一代Nehalem 微架構(gòu)的基礎(chǔ)上進(jìn)行改進(jìn),如果不了解Nehalem 微架構(gòu),就無法真正理解Sandy Bridge的進(jìn)化。Nehalem 無疑是一個(gè)很成功的架構(gòu),QPI、IMC 帶來的直聯(lián)架構(gòu),再加上超線程的回歸,其性能比起上一代提升了一到兩倍以上,在企業(yè)級(jí)市場(chǎng)、主流乃至高端桌面市場(chǎng)
3、以及移動(dòng)市場(chǎng)的壓倒性的占有率充分地說明了Nehalem 的強(qiáng)大。當(dāng)然,Nehalem 微架構(gòu)也不是完美的,以筆者的眼光看來,至少有幾點(diǎn)Nehalem 微架構(gòu)是有待改進(jìn)的:指令拾取和預(yù)解碼Nehalem 微架構(gòu)在Pentium M微架構(gòu)的基礎(chǔ)上進(jìn)行改進(jìn),整個(gè)流水線上幾乎所有的組件都得到了增強(qiáng),變化最少的就是在指令拾取和預(yù)解碼階段了。這個(gè)階段的作用是將要執(zhí)行的指令從L1 I-Cache 中提取到CPU 核心里面來,并隨后對(duì)其進(jìn)行預(yù)解碼。預(yù)解碼的主要作用就是在一塊代碼塊中辨認(rèn)每條x86 指令的長(zhǎng)度。和Penryn 一樣,Nehalem 以及其改良版Westmere 都仍然采用了16Bytes 的指令
4、拾取寬度,而競(jìng)爭(zhēng)對(duì)手早已經(jīng)采用了32Bytes 的拾取寬度。由于x86 指令的長(zhǎng)度可以從1到15Bytes,因此在很糟糕的情況下,某個(gè)時(shí)鐘周期拾取到的代碼塊里只包含一個(gè)x86 指令,和后端動(dòng)輒6個(gè)、4 個(gè)uop(微指令)的能力不相符合。Nehalem 微架構(gòu)的指令拾取/預(yù)解碼單元無法跟上后端處理的速度,因此在運(yùn)行計(jì)算密集型的代碼中,它很容易成為瓶頸。寄存器讀停頓這個(gè)情形發(fā)生在uop 經(jīng)過RAT(Register Alias Table,寄存器別名表)進(jìn)行寄存器重命名并發(fā)往ROB(ReOrder Buffer,重排序緩沖)之后,在這個(gè)被稱為ROB-read 的流水線階段中,uop 們需要讀取相關(guān)
5、的操作數(shù),也就是讀取對(duì)應(yīng)的寄存器,如果這些內(nèi)容在ROB 當(dāng)中不存在的話。Nehalem 微架構(gòu)的RAT 每時(shí)鐘周期可以輸出4 個(gè)uop,每個(gè)uop可以具有最多兩個(gè)輸入寄存器。這樣它最多需要同時(shí)讀取8 個(gè)寄存器。不幸的是,Nehalem 微架構(gòu)用于保存寄存器的RRF(Retirement Register File,回退寄存器文件)僅具有3 個(gè)讀取端口,無法充分滿足寄存器讀取的需求,這很容易導(dǎo)致ROB-read 以及前方流水線的停頓。訪存能力Nehalem 微架構(gòu)具有6 個(gè)執(zhí)行端口,其中的3 個(gè)運(yùn)算端口具有充足的計(jì)算能力,基本不會(huì)是瓶頸。然而,訪存能力卻不一定足夠。Nehalem 微架構(gòu)只有一個(gè)
6、Load 載入端口和一個(gè)Store 保存端口。由于Load 操作是如此常見,可以達(dá)到uop 總數(shù)的1/3,因此相對(duì)于3 個(gè)運(yùn)算端口,這個(gè)Load 端口是個(gè)潛在的瓶頸,特別是對(duì)于內(nèi)存密集型計(jì)算來說。最后, 早期的Nehalem 架構(gòu)上還存在大頁面TLB 數(shù)量較少的問題,TLB:Translation Lookaside Buffer,旁路轉(zhuǎn)換緩沖,或稱為頁表緩沖,里面存放的是虛擬地址到物理地址的轉(zhuǎn)換表。Nehalem 具有較多的標(biāo)準(zhǔn)4KB 頁面TLB 項(xiàng),但是更大容量頁面的TLB 很少,因此,相對(duì)來說不適合大規(guī)模內(nèi)存下的應(yīng)用(如大型數(shù)據(jù)庫和大型虛擬化環(huán)境,后來的Westmere 通過增加了對(duì)1G
7、B 頁面的支持緩解了這個(gè)問題)。除了Nehalem 微架構(gòu)的一些問題之外,英特爾或者說CPU 本身還面臨著挑戰(zhàn),來自GPU 的挑戰(zhàn)。目前,主要的GPU 廠商包括NVIDIA和AMD ATI 都提供了超越CPU 的強(qiáng)勁浮點(diǎn)處理能力,很多超級(jí)計(jì)算機(jī)通過采用了附加GPU 的方式獲得了很強(qiáng)的計(jì)算指標(biāo)。CPU 能力的增強(qiáng)導(dǎo)致了如硬件解壓卡、獨(dú)立聲卡被融合進(jìn)CPU,而GPU 強(qiáng)大的處理能力則被認(rèn)為是CPU 的有力挑戰(zhàn)者。如果運(yùn)算能力足夠強(qiáng)大,CPU 被GPU 取代也不無可能,英特爾怎么應(yīng)對(duì)這個(gè)局面? Sandy Bridge 進(jìn)行了什么樣的改進(jìn)、能不能解決這些問題呢?原文發(fā)布于計(jì)算機(jī)世界2011年第4期S
8、andy Bridge微架構(gòu)的革新英特爾Sandy Bridge 處理器分析測(cè)試之二計(jì)算機(jī)世界實(shí)驗(yàn)室 盤駿上文中筆者介紹了Nehalem微架構(gòu)中存在的一些問題, 到了Sandy Bridge 這一代,這些問題還存在嗎? 下面我們就來詳細(xì)解析Sandy Bridge 的微架構(gòu),并介紹相對(duì)于Nehalem 微架構(gòu)的改進(jìn)。前端:分支預(yù)測(cè)和微指令緩存分支預(yù)測(cè)、指令拾取、預(yù)解碼以及解碼這幾個(gè)部件組成了處理器微架構(gòu)的Front-End 前端部分。在Nehalem 微架構(gòu)中,指令拾取和預(yù)解碼存在問題,在一些情況下會(huì)導(dǎo)致指令吞吐量過低,因此其前端是整個(gè)流水線當(dāng)中最容易成為瓶頸的階段。Sandy Bridge沒
9、有直接在指令拾取和預(yù)解碼階段進(jìn)行改動(dòng),而是對(duì)整個(gè)前端部分進(jìn)行了重新設(shè)計(jì),通過革新的分支預(yù)測(cè)單元以及在解碼階段加入一個(gè)新的部件來增強(qiáng)整個(gè)前端部分的輸出能力,同樣達(dá)到了消除瓶頸的目的。處理器的前端從L1 I-Cache拾取指令,在指令拾取單元沒有什么變化的情況下,Sandy Bridge 的L1 I-Cache 也有了些改進(jìn),提升了大型應(yīng)用程序下的性能。首先,它從Nehalem 的4 路組關(guān)聯(lián)提升到了8 路組關(guān)聯(lián),從而降低了CacheLine 碰撞的幾率, 降低了頁面沖突; 其次,L1 I-Cache 對(duì)應(yīng)的L1 ITLB 也略微擴(kuò)大,2M/4MB 對(duì)應(yīng)的TLB 表項(xiàng)從Nehalem 的7+7 提
10、升到了8+8(對(duì)每一個(gè)硬件線程提供8 個(gè)表項(xiàng)),可以覆蓋更大的代碼地址空間。分支預(yù)測(cè)是一個(gè)既能提升性能又能降低能耗的做法,成功的分支預(yù)測(cè)可以避免無謂分支代碼執(zhí)行的性能、功耗損失。Sandy Bridge的分支預(yù)測(cè)單元在Nehalem的基礎(chǔ)上進(jìn)行了完全的重造。通過對(duì)分支表結(jié)構(gòu)的壓縮定義,BTB(Branch Target Buffer,分支目標(biāo)緩存)在同樣容量下將保存的分支目標(biāo)翻番,同樣,GBH(Global Branch History,全局分支歷史表)也能保存更多、更深的項(xiàng)目,總的來說,分支預(yù)測(cè)準(zhǔn)確率將會(huì)進(jìn)一步提升。前端變化中作用更明顯的解碼器旁邊加入的uop cache(微指令緩存),這個(gè)
11、部件和NetBurst 微架構(gòu)的Trace Cache 作用非常相似,不過卻是經(jīng)過了更多的調(diào)整和優(yōu)化, 并且更加簡(jiǎn)潔。uop cache 保存了已經(jīng)解碼的微指令,并且更加接近處理器的后端,因此也可以被稱為L(zhǎng)0 I-Cache。根據(jù)英特爾的說法,通常的應(yīng)用當(dāng)中其命中率可以達(dá)到80%, 在命中這個(gè)緩存之后,包括復(fù)雜的解碼器在內(nèi)的其它前端部件可以關(guān)閉以節(jié)約能源,而由uop cache 本身輸出指令。這個(gè)設(shè)計(jì)可以很明顯地降指令拾取低延遲乃至分支懲罰,讓前端可以在更多的時(shí)間內(nèi)處于持續(xù)輸出4 uop/cycle 的狀態(tài),這很大程度消除了Nehalem 前端的瓶頸。后端:物理寄存器文件架構(gòu)Front-End
12、 前端緊接著的是Back-End 后端部分,Sandy Bridge在后端部分也有了很大的變化,其中一個(gè)變化來自于寄存器文件的變遷。在之前,我們介紹了Nehalem微架構(gòu)采用的RRF(Retirement Register File,回退寄存器文件)存在的會(huì)導(dǎo)致寄存器讀停頓的問題,Sandy Bridge 通過采用了PRF(Physical Register File,物理寄存器文件)結(jié)構(gòu)來消除了這個(gè)問題,和前面的uop cache 一樣,PRF 的設(shè)計(jì)也是從NetBurst 架構(gòu)借鑒而來。幾乎所有的高性能處理器都采用了PRF 的方式。在Nehalem 微架構(gòu)當(dāng)中,ROB(ReOrder Bu
13、ffer, 重排序緩存)順序保存了所有uop 及其所有的重命名寄存器的數(shù)據(jù)和狀態(tài),架構(gòu)寄存器則保存在RRF 當(dāng)中。在SandyBridge 的PRF 上,ROB 不再保存重命名寄存器的數(shù)據(jù),取而代之的是保存多個(gè)指向PRF 的指針,架構(gòu)寄存器包含在RRF 當(dāng)中,通過狀態(tài)位來標(biāo)識(shí)。物理寄存器文件有什么好處?首先,它消除了舊有的寄存器讀停頓造成的瓶頸,現(xiàn)在它不再受限于RRF 三個(gè)讀取端口的限制,所有不同寄存器的內(nèi)容都可以同時(shí)進(jìn)行讀取, 不會(huì)再引起流水線停頓。其次,物理寄存器文件消除了寄存器間數(shù)據(jù)的復(fù)制和移動(dòng),而只需要更改指針的指向即可,這節(jié)約了大量的數(shù)據(jù)移動(dòng)能耗, 特別是在Sandy Bridge
14、的AVX 指令集支持更多的操作數(shù)以及支持的最大寄存器寬度翻倍的情況下。最后,ROB 從保存數(shù)據(jù)變成保存指針導(dǎo)致了結(jié)構(gòu)上的簡(jiǎn)化, 從而增大了ROB 的容量,進(jìn)一步提升了處理器亂序執(zhí)行的性能。Sandy Bridge 的ROB 從Nehalem 的128 項(xiàng)提升到了168項(xiàng),PRF 物理寄存器文件包含了兩個(gè)部分:每項(xiàng)64bit 、一共160項(xiàng)目的整數(shù)寄存器文件和每項(xiàng)256bit 、一共144 項(xiàng)目的浮點(diǎn)寄存器文件,并且PRF 是每個(gè)硬件線程各自一份。在Sandy Bridge架構(gòu)當(dāng)中,還增加了一個(gè)硬件監(jiān)測(cè)機(jī)構(gòu),在使用SAVE/RESTORE指令進(jìn)行線程切換或者虛擬機(jī)切換的時(shí)候,可以僅僅恢復(fù)/ 保存
15、線程所使用到的寄存器,而不是恢復(fù)/ 保存所有的架構(gòu)寄存器,從而節(jié)約了上下文切換的時(shí)間,這可以提升處理器運(yùn)行大量線程和多個(gè)虛擬機(jī)的能力。后端:存取單元微指令經(jīng)過重命名階段和讀取PRF 數(shù)據(jù)之后進(jìn)入Reservation Station 保留站, 通過統(tǒng)一的調(diào)度器安排發(fā)射到6 個(gè)不同的執(zhí)行單元之中。Sandy Bridge 的Reservation Station 容量從Nehalem 的36 項(xiàng)目提升到了54 項(xiàng)目,增加了50%,亂序執(zhí)行窗口的擴(kuò)大可以提升處理器的亂序執(zhí)行能力。Sandy Bridge 的執(zhí)行單元也有了很大的改進(jìn)。執(zhí)行單元包括計(jì)算單元以及存取單元,這兩個(gè)都變化甚大,不過這里我們先
16、介紹存取單元的變化,因?yàn)橹敖榻B過Nehalem微架構(gòu)在這方面是個(gè)潛在的瓶頸。計(jì)算單元的改進(jìn)留到下一篇文章中再介紹。Sandy Bridge 架構(gòu)和Nehalem一樣具有3 個(gè)存取端口,Store 端口維持不變而Load 端口的數(shù)量提升到了兩個(gè),并且這兩個(gè)Load 端口的AGU 地址生成單元均能生成Store 操作使用的地址。Load 端口翻番在某種程度上是為了適應(yīng)Sandy Bridge 處理器新增的AVX指令集帶來的256 位計(jì)算能力,因?yàn)槊總€(gè)Load 端口的寬度是128 位。然而,現(xiàn)有的各種應(yīng)用也可以立即從中獲益, 因?yàn)镹ehalem 微架構(gòu)的Load 端口僅占所有執(zhí)行單口的1/6, 而
17、Load 操作通??梢哉紦?jù)uop 當(dāng)中的約1/3。Sandy Bridge的雙Load 端口可以每個(gè)時(shí)鐘周期進(jìn)行兩個(gè)128 位Load 操作,消除了上一代的瓶頸,工作起來也更為靈活。和Load/Store 單元連接的MOB(Memory Ordering Buffer, 內(nèi)存排序緩存) 也得到了增強(qiáng),MOB和前面的ROB 一起屬于將亂序執(zhí)行和順序回退連接起來的重要部件。在MOB 當(dāng)中,Load 緩存從Nehalem 的48 項(xiàng)目提升到了64 項(xiàng)目, 提升幅度為33%,Store 緩存從32 項(xiàng)目略微提升到了36 項(xiàng)目。Sandy Bridge 的MOB 一共可以容納100 個(gè)訪存操作,這些數(shù)據(jù)
18、操作均為256 位寬度。和Load 能力翻倍配對(duì)的是L1 D-Cache 的增強(qiáng),它的帶寬提升到了48 字節(jié), 也就是384 位, 比以往的32 字節(jié)提升了50%,以同時(shí)支持兩個(gè)128 位的Load 和一個(gè)128位的Store 操作。搭配的L1 DTLB據(jù)說也有所改進(jìn), 增加了4 個(gè)支持1GB 頁面的項(xiàng)目,以進(jìn)一部消除Nehalem 微架構(gòu)在面對(duì)海量?jī)?nèi)存應(yīng)用下的性能問題,這4 個(gè)大頁面DTLB 項(xiàng)目應(yīng)該是全關(guān)聯(lián)的,其它的L1 DTLB 則應(yīng)該維持4 路關(guān)聯(lián)不變。在L2 Cache 方面,Sandy Bridge 相對(duì)Nehalem 沒有太大的變化。可以看到, 通過將Nehalem微架構(gòu)和Net
19、Burst 微架構(gòu)進(jìn)行融合, 引入NetBurst 上的微指令緩存和物理寄存器文件架構(gòu),并改進(jìn)Load/Store 單元和L1 D-Cache帶寬設(shè)計(jì),Sandy Bridge 消除了上一代Nehalem 微架構(gòu)存在的比較明顯的三個(gè)瓶頸,還順帶獲得了更多的附加增益。Sandy Bridge在整個(gè)流水線的方方面面都得到了改進(jìn),然而還有一個(gè)很重要的部分沒有被提及: 運(yùn)算單元, 這個(gè)部分的變化和Sandy Bridge 引入的AVX 指令集緊密聯(lián)系A(chǔ)VX高級(jí)矢量擴(kuò)展指令集英特爾Sandy Bridge 處理器分析測(cè)試之三計(jì)算機(jī)世界實(shí)驗(yàn)室 盤駿在上一篇連載中,筆者介紹了Sandy Bridge微架構(gòu)中
20、對(duì)性能有很大影響的幾處改進(jìn),然而最重要的執(zhí)行單元的變化沒有涉及到,這部分的變化還跟Sandy Bridge新加入的AVX指令集相關(guān)。AVX(Advanced Vector Extensions,高級(jí)矢量擴(kuò)展)是X86上重要的指令集改進(jìn),不僅僅在于其對(duì)性能的明顯提升,還在于其對(duì)現(xiàn)有X86指令集的多種革新。強(qiáng)大的性能:256位向量計(jì)算向量就是多個(gè)標(biāo)量的組合,通常意味著SIMD(單指令多數(shù)據(jù)),就是一個(gè)指令同時(shí)對(duì)多個(gè)數(shù)據(jù)進(jìn)行處理,達(dá)到很大的吞吐量。早期的超級(jí)計(jì)算機(jī)大多都是向量機(jī),而通過隨著圖形圖像、視頻、音頻等多媒體的流行,PC處理器也開始向量化。X86上最早出現(xiàn)的是1996年的MMX(多媒體擴(kuò)展)
21、指令集,乃至1999年的SSE(流式SIMD擴(kuò)展)指令集,分別是64位向量和128位向量,比超級(jí)計(jì)算機(jī)用的要短得多,所以叫做“短向量”。Sandy Bridge的AVX將向量化寬度擴(kuò)展到了256位,原有的16個(gè)128位XMM寄存器擴(kuò)充為256位的YMM寄存器,可以同時(shí)處理8個(gè)單精度浮點(diǎn)數(shù)和4個(gè)雙精度浮點(diǎn)數(shù),在理想情況下,Sandy Bridge的浮點(diǎn)吞吐能力可以達(dá)到前代的兩倍。目前AVX的256位向量?jī)H支持浮點(diǎn),不像128位的SSE那樣,也能支持整數(shù)運(yùn)算。Sandy Bridge微架構(gòu)的所有執(zhí)行單元都經(jīng)過了修改以執(zhí)行256位AVX指令,特別是對(duì)于3個(gè)運(yùn)算端口而言。Sandy Bridge微架構(gòu)
22、并沒有直接將所有浮點(diǎn)執(zhí)行單元擴(kuò)充到256位寬度,而是采用了一種較為節(jié)約晶體管乃至能耗的方法:重用128位的SIMD整數(shù)和SIMD浮點(diǎn)路徑。從Nehalem開始的微架構(gòu)包含了3個(gè)運(yùn)算端口:0、1和5,每個(gè)運(yùn)算端口分為三個(gè)功能區(qū)域:ALU整數(shù)、SIMD INT、SIMD FP,分別執(zhí)行整數(shù)和邏輯運(yùn)算、SIMD整數(shù)和SIMD浮點(diǎn)運(yùn)算,操作的是32/64位GPR通用寄存器和128位的XMM寄存器。在每一個(gè)時(shí)鐘周期,每個(gè)運(yùn)算端口可以分發(fā)一個(gè)uop,這個(gè)uop可以是三種運(yùn)算中任意的一種。不同的運(yùn)算區(qū)域可以同時(shí)運(yùn)作,例如在浮點(diǎn)運(yùn)算進(jìn)行長(zhǎng)耗時(shí)計(jì)算的時(shí)候,仍然使用ALU單元進(jìn)行通常的整數(shù)和邏輯運(yùn)算?;趫?zhí)行單元
23、的流水化設(shè)計(jì),盡管一些運(yùn)算耗時(shí)比較長(zhǎng),然而每個(gè)時(shí)鐘周期都可以流入新的指令,因此吞吐量也能夠得到保證。例外的是除法單元,線路復(fù)雜、長(zhǎng)耗時(shí)并且目前仍未能全流水化。不同運(yùn)算區(qū)域之間的數(shù)據(jù)傳遞需要12個(gè)時(shí)鐘周期。除了AVX帶來的性能增強(qiáng)之外,Sandy Bridge還繼續(xù)增強(qiáng)了AES指令集的性能,提升其吞吐量,此外,SHLD(移位)指令、ADC(進(jìn)位加)指令和Multiply(64位乘數(shù)128位積)運(yùn)算的性能也都得到了提升,SHLD指令性能提升增強(qiáng)了SHA-1計(jì)算能力,ADC吞吐量翻倍提升了大數(shù)值運(yùn)算能力,而最后者提升了現(xiàn)有RSA程序25%的性能。精簡(jiǎn)X86指令集除了明顯提升浮點(diǎn)運(yùn)算性能之外,AVX指
24、令集還是對(duì)X86指令集的一個(gè)精簡(jiǎn)。我們知道由于是不定長(zhǎng)的CISC指令集,X86指令集可以很容易地進(jìn)行擴(kuò)展,每一代處理器都像不要錢似的增加擴(kuò)展指令集,然而目前的這種通過增加各種Prefix前綴來擴(kuò)展指令集的方式已經(jīng)達(dá)到了其極限,并且這種方式導(dǎo)致的指令集復(fù)雜化和長(zhǎng)度增加,導(dǎo)致了執(zhí)行文件的臃腫和解碼器單元的復(fù)雜化和低效化。如筆者說過的那樣,解碼器一直是X86處理器的一個(gè)瓶頸所在。AVX指令集帶來了新的操作碼編碼方式,這種編碼方式叫做VEX(Vector Extension),其動(dòng)機(jī)就是壓縮各式各樣的Prefix前綴,集中到一個(gè)比較固定的字段中,縮短指令長(zhǎng)度,降低無謂的代碼冗余,并且也降低了對(duì)解碼器的
25、壓力,實(shí)乃一舉多得。VEX編碼方式使用了兩種VEX Prefix,除了一個(gè)字節(jié)的字頭之外,分別具有1到2個(gè)字節(jié)的Payload(負(fù)載),在這個(gè)Payload里面就包括了所有的Prefix的內(nèi)容,達(dá)到了精簡(jiǎn)指令集的目的。這兩種VEX前綴分別是以C5h開頭的2字節(jié)Prefix和C4h開頭的3字節(jié)Prefix,前者主要用于包含傳統(tǒng)的128位SIMD整數(shù)、SIMD浮點(diǎn)運(yùn)算,后者則主要用來進(jìn)行新的256位AVX運(yùn)算以及未來可使用的更多指令集擴(kuò)展。VEX前綴包含了X86-64指令使用的REX前綴以及原SSE指令使用的前綴,還融合了普通操作碼帶有的Escape字段,從某種意義上來說,VEX讓CISC的X86
26、指令集往RISC精簡(jiǎn)指令集靠近了一點(diǎn),當(dāng)然,CISC易于擴(kuò)充、支持復(fù)雜靈活的尋址方式的特性依然無損。如圖所示,VEX前綴的RXBW字段包含了原REX前綴的所有功能,pp字段包含了原SIMD指令的所有前綴,在三字節(jié)C4h格式的VEX前綴中,mmmmm字段包含了原Escape字段并提供了極大的擴(kuò)展空間。X86指令總長(zhǎng)度不大于15個(gè)字節(jié)的規(guī)定仍然維持不變。強(qiáng)化X86指令集基于歷史上X86處理器缺乏存儲(chǔ)單元的原因,X86指令集屬于雙操作數(shù)的破壞性指令集,例如,指令add ax, bx包含了ax和bx兩個(gè)操作數(shù),作用是將寄存器ax和bx的數(shù)值相加,并保存到寄存器ax當(dāng)中去,計(jì)算結(jié)束后,源操作數(shù)ax的內(nèi)容
27、就被計(jì)算結(jié)果“摧毀”了。如果源操作數(shù)的內(nèi)容在其他運(yùn)算中還需要用到的話,那么你通常需要保存到堆棧中去,或者保存到主內(nèi)存中去。實(shí)際上X86指令集采用的就是時(shí)間換空間的方法。在傳統(tǒng)的僅具有8個(gè)通用寄存器的X86處理器上,這種編碼方式的使用實(shí)屬?zèng)]有辦法,同時(shí)期具有更多通用寄存器的RISC處理器都采用的是多操作數(shù)的非破壞性句法。在應(yīng)用了Register Renaming寄存器重命名技術(shù)之后,X86處理器事實(shí)上也具有了很多的寄存器可供使用,如Sandy Bridge內(nèi)部每個(gè)線程具有160個(gè)64位整數(shù)寄存器,和144個(gè)256位浮點(diǎn)寄存器,因此Intel就動(dòng)起了新的念頭,SandyBridge帶來的AVX指令
28、集提供了新的34操作數(shù)的非破壞性句法,在某種程度上,這彌補(bǔ)了X86指令集的體系缺陷。例如,要實(shí)現(xiàn)xmm10 = xmm9 + xmm1,傳統(tǒng)X86處理器需要兩條指令:movapps xmm10, xmm9addpd xmm10, xmm1在應(yīng)用AVX指令集新的3操作數(shù)格式之后,只需要一條指令就能完成這個(gè)功能:vaddpd xmm10, xmm9, xmm1而使用4操作數(shù)指令的話,下面三條指令可以直接簡(jiǎn)化為一條:movaps xmm0, xmm4movaps xmm1, xmm2blendvps xmm1, m128變?yōu)椋簐blendvps xmm1, xmm2, m128, xmm4顯然,新的
29、指令操作數(shù)明顯降低了指令的數(shù)量,處理器吞吐量得到了提升,代碼運(yùn)行更快速,同時(shí)能耗也降低了。除了對(duì)指令集體系的增強(qiáng)之外,AVX指令集還強(qiáng)化了訪存不對(duì)齊時(shí)的性能。傳統(tǒng)的指令集當(dāng)進(jìn)行不對(duì)齊內(nèi)存訪問(unaligned memoryaccess)的時(shí)候會(huì)需要較長(zhǎng)的時(shí)鐘周期,甚至?xí)袘土P性延時(shí),極大地降低速度。而在AVX指令集中,各種運(yùn)算和訪存指令現(xiàn)在降低了訪存不對(duì)齊的延遲損失,在某些情況下甚至能達(dá)到和對(duì)齊訪問一致的性能,顯得更加靈活。X86指令集:不斷進(jìn)化CISC指令集的思想就是用復(fù)雜的硬件來完成盡可能多的工作,RISC則是使用盡量少的指令并通過復(fù)雜的程序來完成同樣的功能。每一代的X86指令集,都會(huì)對(duì)
30、不同的應(yīng)用增加新的指令集,這些指令集能高效地處理對(duì)應(yīng)的應(yīng)用,例如,上一代Westmere處理器的AES-NI就對(duì)加密運(yùn)算具有非凡的加速比。同樣,在AVX指令中也增加了不少浮點(diǎn)運(yùn)算指令,提升了多種運(yùn)算的性能。Sandy Bridge新加入的AVX指令集讓X86從128位提升到256位向量運(yùn)算,大幅度提升了性能,此外,AVX精簡(jiǎn)了X86指令集的設(shè)計(jì),并彌補(bǔ)了破壞性句法的體系缺陷,可以說是一個(gè)非常重要的改進(jìn)。需要注意的是,AVX指令集帶來了新的處理器狀態(tài)和更寬的寄存器寬度,因此需要操作系統(tǒng)的支持才能正常運(yùn)作,如,以及Windows 7/Server 2008 R2 SP1版本才能支持。關(guān)于Sandy
31、 Bridge的微架構(gòu)就介紹到這里,下回筆者將介紹Sandy Bridge的架構(gòu),這部分的變化也非常大英特爾Sandy Bridge 處理器分析測(cè)試之四計(jì)算機(jī)世界實(shí)驗(yàn)室 盤駿和微架構(gòu)方面一樣,Sandy Bridge的架構(gòu)方面也具有了很大的變化。這個(gè)變化來自兩個(gè)方面的考慮:性能和可擴(kuò)展性,其中后者包括了要面對(duì)越來越多的處理器核心的問題,還有要面對(duì)來自GPU挑戰(zhàn)的問題。針對(duì)GPU的壓力,英特爾一方面采取了更寬的256位AVX向量運(yùn)算提升CPU處理能力,一方面采取了在CPU內(nèi)直接融合GPU的方法。關(guān)于GPU的部分可以寫出多個(gè)長(zhǎng)篇,因此這里主要談及Sandy Bridge其它方面的架構(gòu)變化。這個(gè)變化
32、就是Sandy Bridge采用了新的Ring Bus環(huán)形總線來連接各個(gè)CPU核心、LLC緩存(就是L3緩存)、融合進(jìn)去的GPU以及System Agent(就是系統(tǒng)北橋)部分。自從Nehalem開始使用融合核心策略后,不同產(chǎn)品線的處理器都基于同一種核心,只是具有不同的核外架構(gòu)(稱為Uncore架構(gòu)),這個(gè)核外架構(gòu)在不同的產(chǎn)品線上必須進(jìn)行不同的設(shè)計(jì),對(duì)應(yīng)地芯片組也要進(jìn)行變化。在核心數(shù)量比較少的時(shí)候,這很容易辦到,然而在高端服務(wù)器上,核心數(shù)量很高,這種方式就難以具有匹配的性能,并且開始變得難以實(shí)現(xiàn)。實(shí)際上,高端8核心的Nehalem-EX處理器就采取了和桌面/移動(dòng)端完全不同的Uncore架構(gòu):使
33、用了一個(gè)環(huán)形總線,而在后來加入GPU的Westmere,新加入的GPU迫使內(nèi)存控制器和CPU核心分立,并和GPU一起集成到一個(gè)相對(duì)落后的45nm制程的芯片上,影響到了性能和功耗?,F(xiàn)在,這個(gè)環(huán)形總線技術(shù)被應(yīng)用到了Sandy Bridge全線產(chǎn)品線上來。革命性的環(huán)形總線通常的處理器使用Crossbar交叉開關(guān)來連接多個(gè)組件,在部件較少時(shí)性能表現(xiàn)良好,然而其復(fù)雜度隨著連接件數(shù)量的提升呈幾何級(jí)數(shù)增長(zhǎng)。采用環(huán)形總線的話,則是呈線性增長(zhǎng),簡(jiǎn)單并且布線也更方便,可以很容易地?cái)U(kuò)展到更大數(shù)量的連接部件,并且可以很方便地加入如GPU等獨(dú)立構(gòu)造。在Sandy Bridge上,這個(gè)總線實(shí)際上是直接放置在LLC緩存上的
34、,比交叉開關(guān)占地面積更小,布線更加方便。這個(gè)環(huán)形總線其實(shí)由四條獨(dú)立的環(huán)組成,分別是數(shù)據(jù)環(huán)(Data Ring)、請(qǐng)求環(huán)(Request Ring)、響應(yīng)環(huán)(Acknowledge Ring)、偵聽環(huán)(Snoop Ring)。其中用來傳輸數(shù)據(jù)的數(shù)據(jù)環(huán)的寬度是32B(256bit),剛好是L3緩存線的一半。和Nehalem-EX的一樣,這個(gè)數(shù)據(jù)環(huán)應(yīng)該還是雙向的,這樣通過自動(dòng)選擇最近的線路,對(duì)目標(biāo)的存取延遲可以降低到平均只有一個(gè)環(huán)的一半。Sandy Bridge環(huán)形總線上分布著多個(gè)Ring Stop,叫做“站臺(tái)”,這個(gè)“站臺(tái)”和Nehalem-EX的并不太一樣,其實(shí)仔細(xì)看的話,Sandy Bridg
35、e的環(huán)形總線和Nehalem-EX的也不太一樣。Nehalem-EX的環(huán)顯得更大一些,每個(gè)CPU/LLC塊上只有一個(gè)連接點(diǎn),而Sandy Bridge的顯得很纖細(xì),每個(gè)CPU/LLC塊上具有兩個(gè)連接點(diǎn),這種差異的具體細(xì)節(jié)尚不清楚。環(huán)形總線是全流水線化的,并且運(yùn)行在核心頻率/電壓上,因此其帶寬會(huì)根據(jù)不同的型號(hào)/工作狀態(tài)而變化,并且可以根據(jù)加入站臺(tái)的數(shù)量而擴(kuò)展。當(dāng)然,站臺(tái)數(shù)量的增加會(huì)增長(zhǎng)總線的寬度,并會(huì)對(duì)應(yīng)地增加延遲,每個(gè)站臺(tái)之間的傳輸時(shí)間是一個(gè)時(shí)鐘周期。理論上,3.4GHz的Sandy Bridge每個(gè)站臺(tái)可以具有108.8GB/s的帶寬,4個(gè)核心就具有435.2GB/s的理論帶寬,由于數(shù)據(jù)經(jīng)過
36、不同的站臺(tái)的時(shí)候,該站臺(tái)需要等待而無法傳輸數(shù)據(jù),因此實(shí)際的帶寬無法達(dá)到理論值。LLC:L3緩存的變化環(huán)最主要的作用是將CPU核心與L3緩存聯(lián)結(jié)起來,L3緩存是處理器的最低一級(jí)緩存,因此也叫Last Layer Cache(LLC)。每一個(gè)CPU/LLC塊上具有一個(gè)稱為Interface Block(接口塊)的部件來負(fù)責(zé)和Ring通信,每個(gè)接口塊上包含了一個(gè)獨(dú)立的緩存控制器,負(fù)責(zé)回應(yīng)緩存請(qǐng)求、維持一致性和排序,并在L3緩存未命中、偵聽以及遇到不可緩存請(qǐng)求時(shí)和System Agent通信。實(shí)際上,Sandy Bridge實(shí)現(xiàn)了一個(gè)分區(qū)化的分布式仲裁緩存架構(gòu)。除去使用環(huán)形總線的EX系列,Nehalem/Westmere的L3是一個(gè)單塊的大緩存,具有統(tǒng)一的32B(256bit)帶寬,到了環(huán)形總線架構(gòu)之后,就不再
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東梅州職業(yè)技術(shù)學(xué)院《交通規(guī)劃課程設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 哈爾濱商業(yè)大學(xué)《物理化學(xué)實(shí)驗(yàn)(上)》2023-2024學(xué)年第二學(xué)期期末試卷
- 黑龍江藝術(shù)職業(yè)學(xué)院《地理專業(yè)》2023-2024學(xué)年第二學(xué)期期末試卷
- 14保護(hù)呼吸器官(教學(xué)設(shè)計(jì))-2024-2025學(xué)年科學(xué)三年級(jí)上冊(cè)人教鄂教版
- 河南輕工職業(yè)學(xué)院《嵌入式綜合實(shí)訓(xùn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 中南林業(yè)科技大學(xué)《生命科學(xué)進(jìn)展》2023-2024學(xué)年第二學(xué)期期末試卷
- 宜賓學(xué)院《天然產(chǎn)物》2023-2024學(xué)年第二學(xué)期期末試卷
- 哈爾濱商業(yè)大學(xué)《流體力學(xué)B》2023-2024學(xué)年第二學(xué)期期末試卷
- 瀘州四川瀘州瀘縣氣象局見習(xí)基地招收見習(xí)人員2人筆試歷年參考題庫附帶答案詳解
- 大連軟件職業(yè)學(xué)院《數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 研學(xué)旅行概論教學(xué)課件匯總完整版電子教案
- 12月腹痛護(hù)理常規(guī)
- 控股集團(tuán)公司組織架構(gòu)圖.docx
- 高爐煤氣安全知識(shí)的培訓(xùn)
- 2008 年全國高校俄語專業(yè)四級(jí)水平測(cè)試試卷
- 需求供給與均衡價(jià)格PPT課件
- 最常用2000個(gè)英語單詞_(全部標(biāo)有注釋)字母排序
- 在銀行大零售業(yè)務(wù)工作會(huì)議上的講話講解學(xué)習(xí)
- 古代傳說中的藝術(shù)形象-
- 水電站大壩土建安裝工程懸臂模板施工手冊(cè)
- 首都經(jīng)濟(jì)貿(mào)易大學(xué)本科畢業(yè)論文格式模板范文
評(píng)論
0/150
提交評(píng)論