现代处理器设计——超标量处理器基础1-4
現(xiàn)代處理器設(shè)計(jì)——超標(biāo)量處理器基礎(chǔ)(1-4)
體系結(jié)構(gòu)(architecture):通常稱為指令集體系結(jié)構(gòu),對(duì)指令集處理器的指令集合進(jìn)行說(shuō)明,并定義處理器的功能性行為。
邏輯實(shí)現(xiàn):體系結(jié)構(gòu)的具體設(shè)計(jì),也稱為微體系結(jié)構(gòu)(microarchitecture)。某種體系結(jié)構(gòu)在其ISA的生命周期內(nèi)可以有多種邏輯實(shí)現(xiàn)。邏輯實(shí)現(xiàn)通常在硬件中實(shí)現(xiàn),對(duì)軟件透明。
物理實(shí)現(xiàn):設(shè)計(jì)的具體物理表現(xiàn)形式。對(duì)于微處理器而言,這個(gè)具體的物理表現(xiàn)形式通常是單芯片或者多芯片的封裝。對(duì)于一個(gè)邏輯實(shí)現(xiàn),可以有多個(gè)不同的物理實(shí)現(xiàn)
不同的類(lèi)型的ISA的不同點(diǎn)集中在如何定義操作數(shù)類(lèi)型以及操作數(shù)上。
DSI(Dynamic-Static Interface)動(dòng)態(tài)-靜態(tài)接口。傳統(tǒng)上,所有在編譯時(shí)由軟件和編譯器靜態(tài)完成的任務(wù)和優(yōu)化,認(rèn)為在DSI之上;所有在運(yùn)行時(shí)由硬件動(dòng)態(tài)完成的任務(wù)及優(yōu)化,認(rèn)為是在DSI之下的。ISA設(shè)計(jì)中一個(gè)關(guān)鍵問(wèn)題:DSI的位置。理想情況下,DSI的位置應(yīng)該使得靜態(tài)技術(shù)和動(dòng)態(tài)技術(shù)很好的協(xié)同配合,在編譯器的復(fù)雜性和硬件復(fù)雜性之間做出權(quán)衡,并得到最好的組合。
當(dāng)流水下深度增加時(shí),CPI可能會(huì)上升
- 取指和執(zhí)行之間的流水級(jí)數(shù)會(huì)增加,從而增加了分支預(yù)測(cè)錯(cuò)誤時(shí)的開(kāi)銷(xiāo)
- 如果流水線長(zhǎng)到連基本的ALU操作也需要多個(gè)時(shí)鐘周期,那么即便通過(guò)結(jié)果定向硬件,在兩條相關(guān)指令之間所必須等待時(shí)間也需要多個(gè)時(shí)鐘周期
- 當(dāng)時(shí)鐘周期隨著流水線深度而增加時(shí),存儲(chǔ)器的延遲(以時(shí)鐘周期數(shù)目計(jì))將會(huì)明顯增加,從而增加存儲(chǔ)操作的平均延遲
- 在流水線中有硬件和延遲的開(kāi)銷(xiāo),會(huì)減少在性能上的收益
硬件仿真器:功能仿真器和性能仿真器
- 功能仿真器:模擬體系結(jié)構(gòu)級(jí)的機(jī)器,用于驗(yàn)證程序能夠正確執(zhí)行
- 性能仿真器:模擬一個(gè)設(shè)計(jì)的微體系結(jié)構(gòu),用于測(cè)量執(zhí)行一個(gè)程序所需要的時(shí)鐘周期的數(shù)目
設(shè)計(jì)超標(biāo)量處理器的一個(gè)主要?jiǎng)訖C(jī):開(kāi)發(fā)可以獲得一定(相對(duì)于向量來(lái)說(shuō)降低)級(jí)別的并行度(公式1.10)的通用處理器。目的是確保大部分程序都能夠獲得一定程度的指令級(jí)并行,以減輕順序執(zhí)行時(shí)瓶頸所產(chǎn)生的影響。
Flynn瓶頸:大多數(shù)程序的ILP小于2(基本塊內(nèi)部)
Fisher的樂(lè)觀估計(jì):在許多程序中,幾乎擁有無(wú)限的ILP
操作延遲(OL):指一條指令產(chǎn)生結(jié)果后使用的機(jī)器時(shí)鐘周期數(shù),就是指令執(zhí)行時(shí)所需要的時(shí)鐘周期數(shù)
機(jī)器并行度(MP):指機(jī)器支持的可以同時(shí)執(zhí)行的最大指令數(shù)目
發(fā)射延遲(IL):指發(fā)射兩條連續(xù)的指令之間所需要的機(jī)器時(shí)鐘周期數(shù)。此時(shí)發(fā)射是指一條新的指令初始化后進(jìn)入流水線
發(fā)射并行度(IP):指每個(gè)時(shí)鐘周期內(nèi)可以發(fā)射的最大指令數(shù)
超流水線處理器:傳統(tǒng)的流水線處理器如果需要多個(gè)時(shí)鐘周期來(lái)執(zhí)行簡(jiǎn)單指令(定點(diǎn)加法),那么應(yīng)當(dāng)歸類(lèi)為超流水處理器。主要特點(diǎn):某條指令的結(jié)果不能被后續(xù)的m-1條指令所利用。
參數(shù)定義:OL=1個(gè)時(shí)鐘周期=m個(gè)次時(shí)鐘周期,IL=1個(gè)次時(shí)鐘周期
超標(biāo)量處理器參數(shù)定義:OL=1個(gè)時(shí)鐘周期,IL=1個(gè)時(shí)鐘周期,IP=n條指令/時(shí)鐘周期
限制時(shí)鐘頻率的兩個(gè)因素:
- 組合邏輯的最長(zhǎng)和最短傳輸延遲之差。如果所有信號(hào)的傳輸路徑是一樣長(zhǎng)的,則這個(gè)因素可以被忽略。延長(zhǎng)最短路徑
- 正確建立時(shí)鐘信號(hào)所需要的額外延遲。為了鎖存流水段的結(jié)果而引入。鎖存結(jié)果的延遲包括信號(hào)通過(guò)一個(gè)反饋回路的傳播延遲,以及信號(hào)在回路中的建立時(shí)間。同時(shí)還會(huì)存在時(shí)鐘扭曲,時(shí)鐘信號(hào)到達(dá)各個(gè)鎖存器的時(shí)刻可能不相同。
一個(gè)k級(jí)流水線的價(jià)格C:
其中k為流水線的段數(shù),L為每增加一個(gè)鎖存器的價(jià)格,G為原本非流水硬件的價(jià)格
流水線的性能:
其中T為非流水線系統(tǒng)延遲,S是由于引入鎖存器而帶來(lái)的延遲
價(jià)格性能比:
當(dāng)k小于Kopt時(shí),流水線系統(tǒng)稱為 不夠完全流水化,即可以進(jìn)一步實(shí)現(xiàn)流水化,增加流水線深度
當(dāng)k大于Kopt時(shí),流水線系統(tǒng)稱為 過(guò)度流水化,此時(shí)增加流水線深度而提高的性能由于價(jià)格增加而抵消
流水線理想假設(shè)
一致的運(yùn)算分量:要完成的整個(gè)運(yùn)算量可以均勻的分成延遲一致的若干分量
將以前的運(yùn)算量分為若干分量時(shí),沒(méi)有引入無(wú)效時(shí)間;段間緩沖的引入沒(méi)有帶來(lái)額外的延遲
重復(fù)的運(yùn)算:輸入數(shù)據(jù)有大量相同的,重復(fù)的運(yùn)算
所有的流水段總是被充分利用
獨(dú)立的運(yùn)算:所有相同的重復(fù)運(yùn)算之間沒(méi)有相關(guān)性
處理一條指令的時(shí)間延遲稱為“指令周期”,每一段的時(shí)間延遲決定了“機(jī)器周期”。指令周期是一個(gè)邏輯概念,代表指令的執(zhí)行周期。機(jī)器周期是一個(gè)物理概念,包含了數(shù)字邏輯電路中存儲(chǔ)單元的時(shí)鐘等,也是流水線的時(shí)鐘周期。
流水線中的外部碎片:某些流水段沒(méi)有被使用;內(nèi)部碎片:某些流水段存在時(shí)間空閑(遷就于最長(zhǎng)延遲)
指令流水線設(shè)計(jì)的挑戰(zhàn)
- 一致的運(yùn)算分量=>保持流水段均衡
- 重復(fù)的運(yùn)算=>統(tǒng)一指令類(lèi)型
- 獨(dú)立的運(yùn)算分量=>盡量減少流水線停頓
隨著流水化程度的增加,流水線的硬件資源會(huì)顯著地增加,其中最突出的時(shí)寄存器文件和存儲(chǔ)器端口數(shù)目的增加,一獲得更高的訪問(wèn)并行度
AMDAHL 470v/7的12級(jí)指令流水線示例
- 第一段:計(jì)算下一條指令的地址
- 第二段:完成cache的訪問(wèn)初始化
- 第三段:將指令從cache中讀到指令部件I-unit
- 第四段:指令譯碼
- 第五段:讀取兩個(gè)通用寄存器,這些寄存器用作地址寄存器
- 第六段:計(jì)算出操作數(shù)在存儲(chǔ)器中的地址
- 第七段:完成cache訪問(wèn)的初始化,并準(zhǔn)備讀取存儲(chǔ)器操作數(shù)
- 第八段:將操作數(shù)從cache中讀取到I-unit中,同時(shí)也完成寄存器操作數(shù)的讀取
- 第九和十段:執(zhí)行部件E-unit中的兩個(gè)運(yùn)算段
- 第十一段:對(duì)計(jì)算結(jié)果進(jìn)行錯(cuò)誤檢查
- 第十二段:結(jié)果存放到目的寄存器中
控制相關(guān)可以看做是關(guān)于程序計(jì)數(shù)器的寄存器數(shù)據(jù)相關(guān)(RAW),條件分支指令要寫(xiě)PC,而取下一條指令要讀PC。
流水線互鎖機(jī)制:化解流水線相關(guān)的硬件機(jī)制。流水線互鎖硬件要檢測(cè)出所有的流水線相關(guān),并保證所有的相關(guān)得到滿足。流水線互鎖機(jī)制包括停止流水線的某一段以及數(shù)據(jù)在定向路徑中的傳輸控制等。(ALU的RAW,Load的RAW,條件分支指令)
降低深流水線中分支指令帶來(lái)的負(fù)面影響的兩種方法:
- 減少前段流水線(取指段到完成分支指令的相應(yīng)段的距離)的段數(shù),例如RISC,減少譯碼的復(fù)雜性,前段段數(shù)就會(huì)比較少
- 將前段流水線的一部分移至后端,例如將譯碼結(jié)果存儲(chǔ)在某個(gè)cache中,跳過(guò)之后的譯碼段
增加流水線深度的權(quán)衡
- 硬件開(kāi)銷(xiāo)和性能提升之間的權(quán)衡
- 增加CPI和提高時(shí)鐘頻率之間的權(quán)衡
并行流水線:同一周期啟動(dòng)多條指令執(zhí)行
多配置流水線:在流水線的執(zhí)行階段為不同類(lèi)型的指令提供不同的執(zhí)行部件(子流水線)
超標(biāo)量流水線:屬于并行流水線,也屬于多配置流水線
動(dòng)態(tài)流水線:支持亂序執(zhí)行的并行流水線。動(dòng)態(tài)流水線通過(guò)使用復(fù)雜的多記錄緩沖來(lái)實(shí)現(xiàn)亂序執(zhí)行,并允許指令以可變的順序進(jìn)入和離開(kāi)緩沖。
標(biāo)量流水線的加速比:一般針對(duì)非流水機(jī)器,它取決于流水線的深度
并行流水線的加速比:往往相對(duì)于標(biāo)量流水線來(lái)計(jì)算,它取決于并行流水線的寬度。寬度為s的并行流水線的每一段都可以同時(shí)處理s條指令
多配置流水線的優(yōu)點(diǎn):每條流水線只執(zhí)行一種指令,因此可以根據(jù)其特點(diǎn)進(jìn)行專門(mén)的優(yōu)化設(shè)計(jì)并采用高效的硬件實(shí)現(xiàn)。每條指令只需要執(zhí)行必要的延遲并流過(guò)該子流水線的所有段
實(shí)現(xiàn)每周期s條指令的取指吞吐率的兩個(gè)障礙:讀取的s條指令沒(méi)有對(duì)齊;控制流改變了取指集中的指令
- 對(duì)齊問(wèn)題的解決方案:依靠編譯的靜態(tài)級(jí)數(shù),利用cache的信息,將指令合理地放置在存儲(chǔ)器中,從而保證要去的指令同物理陣列行對(duì)齊;執(zhí)行時(shí)依靠硬件協(xié)助解決,即使指令組跨越了陣行列邊界,對(duì)齊硬件也能保證一個(gè)周期內(nèi)取出s條指令。
指令譯碼主要包括指令的識(shí)別、指令類(lèi)型的確定以及指令間相關(guān)性的檢測(cè)。指令譯碼的復(fù)雜度受兩個(gè)因素影響:ISA和并行流水線的寬度。
預(yù)譯碼:將指令譯碼的部分工作轉(zhuǎn)移到指令cache進(jìn)行,當(dāng)cache失效并需要從存儲(chǔ)器調(diào)入一個(gè)cache塊時(shí),在內(nèi)存與cache之間可以增加一個(gè)硬件將cache塊中的指令進(jìn)行預(yù)譯碼。譯碼的信息以預(yù)譯碼標(biāo)識(shí)位的形式連同指令一起存在于指令cache中,在指令譯碼時(shí)簡(jiǎn)化操作。
預(yù)譯碼對(duì)處理器設(shè)計(jì)的兩個(gè)主要影響:
- 由于在存儲(chǔ)器到指令cache的通路上增加了預(yù)譯碼操作而增加了指令cache的失效開(kāi)銷(xiāo)
- cache的大小由于存儲(chǔ)預(yù)譯碼標(biāo)識(shí)位而增大
指令分派(dispatch):超標(biāo)量屬于多配置流水線,其執(zhí)行段使用了很多不同類(lèi)型的執(zhí)行部件,不同類(lèi)型的指令需要在不同的執(zhí)行部件上執(zhí)行,因此存在分派階段,確定指令應(yīng)該在哪一個(gè)執(zhí)行部件上執(zhí)行。
保留站將指令譯碼和執(zhí)行加以分離,從而平衡了譯碼段以及執(zhí)行段吞吐率的頻繁變化,消除了譯碼段不必要的停頓,同時(shí)也為執(zhí)行部件輸送足夠的指令。
集中式保留站:可以被各種類(lèi)型的指令共用,使用率較高,但是硬件設(shè)計(jì)非常復(fù)雜,需要集中控制并且要設(shè)置多個(gè)端口來(lái)滿足多個(gè)部件的同時(shí)訪問(wèn)
分布式保留站:只需要一個(gè)端口和少數(shù)幾條記錄項(xiàng),硬件簡(jiǎn)單,但是總的利用率低。當(dāng)一種類(lèi)型的保留站中各記錄項(xiàng)都被占用時(shí),所有這種類(lèi)型的后續(xù)指令都必須停頓。
發(fā)射和分派:在分布式保留站中,分派是指譯碼后指令同相應(yīng)類(lèi)型的功能部件之間的連接;而發(fā)射是指指令在功能部件中執(zhí)行的初始化。在集中式保留站中,兩個(gè)可以互用。
設(shè)置多個(gè)功能部件時(shí)一種空間并行性的體現(xiàn);功能部件流水化實(shí)現(xiàn)時(shí)時(shí)間并行性的體現(xiàn)。
指令流、寄存器數(shù)據(jù)流和存儲(chǔ)器數(shù)據(jù)流。總的性能目標(biāo)就是使三條流通路的容量最大
- 指令流:分支指令處理。(取指段和譯碼段)
- 寄存器數(shù)據(jù)流:ALU指令處理
- 存儲(chǔ)器數(shù)據(jù)流:load/store指令處理
條件分支指令的停頓開(kāi)銷(xiāo):生成目標(biāo)地址引起的開(kāi)銷(xiāo)和條件判定引起的開(kāi)銷(xiāo)
- PC相對(duì)尋址,一個(gè)周期開(kāi)銷(xiāo)
- 寄存器間接尋址,兩個(gè)周期開(kāi)銷(xiāo)
- 帶偏移的寄存器間接尋址,三個(gè)周期開(kāi)銷(xiāo)
- 條件碼寄存器,分派階段讀取,兩個(gè)時(shí)鐘周期開(kāi)銷(xiāo)
- 通用寄存器比較,三個(gè)周期開(kāi)銷(xiāo)
BTAC(分支目標(biāo)地址緩沖)和BHT都是在取指段使用當(dāng)前指令地址PC訪問(wèn),但BTAC訪問(wèn)延遲是單周期的,而B(niǎo)HT是雙周期的。如果BTAC命中說(shuō)明當(dāng)前的取指序列中存在分支指令,則預(yù)測(cè)分支將會(huì)跳轉(zhuǎn)并更新PC。在第二個(gè)周期中(譯碼段),根據(jù)從BHT中得到的歷史信息,將預(yù)測(cè)同一條分支指令的方向。如果兩者預(yù)測(cè)相同,則不變,否則BTAC預(yù)測(cè)失效。
PAs:多個(gè)BHSR,多個(gè)PHT。s指share,因?yàn)镻HT的個(gè)數(shù)無(wú)法使得每一個(gè)分支都有一個(gè),因此一組分支共享一個(gè)PHT,所以稱為s
trace cache是一種基于歷史信息的取指機(jī)制,它將指令的動(dòng)態(tài)執(zhí)行軌跡信息存儲(chǔ)在一個(gè)cache中,通過(guò)指令地址和分支結(jié)果加以訪問(wèn)。軌跡信息是根據(jù)動(dòng)態(tài)的分支指令行為收集起來(lái)的,包括多個(gè)不連續(xù)的基本塊。每當(dāng)指令地址命中trace cache,接下來(lái)的指令流就從trace cache中取指。trace cache可以看作是按程序先前的執(zhí)行軌跡對(duì)其基本塊進(jìn)行了重排序,當(dāng)不連續(xù)的基本塊第一次在支配路徑上執(zhí)行時(shí),結(jié)束提交段對(duì)其進(jìn)行合并對(duì)齊處理,并生成一個(gè)trace存入trace cache中。
寫(xiě)寄存器稱為寄存器的定義,讀寄存器稱為寄存器的使用。每個(gè)寄存器的定義可能對(duì)應(yīng)多個(gè)寄存器的使用,定義和最后一次使用之間的持續(xù)時(shí)間稱為該值的活躍區(qū)間。
使用獨(dú)立的RRF進(jìn)行寄存器重命名時(shí),讀取源操作數(shù)的三種情況
獨(dú)立的RRF和ARF,兩者可以相互獨(dú)立,也可以集合成一個(gè)寄存器文件實(shí)現(xiàn)。前者在指令完成之后仍然需要一次數(shù)據(jù)搬運(yùn),后者不需要。集中寄存器文件的實(shí)現(xiàn)只需要將寄存器的名稱從重命名寄存器改為體系結(jié)構(gòu)寄存器即可。缺點(diǎn)在于提高了硬件復(fù)雜度,其次在現(xiàn)場(chǎng)切換要保存機(jī)器狀態(tài)時(shí),包含機(jī)器體系結(jié)構(gòu)狀態(tài)的寄存器子集必須在狀態(tài)開(kāi)始保存之前被顯式地標(biāo)出。
數(shù)據(jù)流極限:DFG的關(guān)鍵路徑(相關(guān)邊的延遲累加,總的累計(jì)延遲最長(zhǎng)的相關(guān)鏈)
一般情況下,保留站中的記錄在指令發(fā)射后就進(jìn)行回收并供后續(xù)指令分派使用,從而盡可能地避免由于保留站飽和導(dǎo)致的停頓。但是某些指令由于執(zhí)行時(shí)會(huì)產(chǎn)生異常,將來(lái)某個(gè)周期可能要重新調(diào)度執(zhí)行,所以這些保留站直到指令執(zhí)行完畢且確定無(wú)異常后才進(jìn)行回收。
指令喚醒:保留站中的某個(gè)記錄通過(guò)監(jiān)聽(tīng)總線,發(fā)現(xiàn)操作數(shù)可用,設(shè)置“就緒”位為1,表示該指令可以被發(fā)射執(zhí)行,這個(gè)過(guò)程稱為指令喚醒。
保留站監(jiān)聽(tīng)總線,匹配標(biāo)簽,執(zhí)行指令喚醒的過(guò)程的硬件稱為喚醒邏輯
保留站在所有的就緒指令中選擇指令執(zhí)行的硬件稱為選擇邏輯
ROB中的指令從隊(duì)列的頭部提交,每次提交的指令數(shù)量取決于可以提交指令數(shù)目以及提交帶寬,而提交帶寬又取決于另外一個(gè)路由網(wǎng)絡(luò)的容量和寄存器寫(xiě)回可用的端口數(shù),最為關(guān)鍵的是體系結(jié)構(gòu)寄存器文件寫(xiě)端口的數(shù),這些端口從重命名寄存器或者ROB向體系結(jié)構(gòu)寄存器傳遞數(shù)據(jù)。
寄存器重命名的目的:消除寄存器重用引起的假相關(guān);建立兩條相關(guān)指令之間的生產(chǎn)者-消費(fèi)者關(guān)系
超越數(shù)據(jù)流極限:值預(yù)測(cè)、動(dòng)態(tài)指令重用
- 值預(yù)測(cè):同一條靜態(tài)load指令載入的值往往是可預(yù)測(cè)的,同時(shí)許多指令的計(jì)算結(jié)果也是可預(yù)測(cè)的。某些指令往往重復(fù)地計(jì)算出相同的一組(一個(gè))結(jié)果,通過(guò)追蹤這些指令的計(jì)算結(jié)果,未來(lái)的計(jì)算值可以根據(jù)歷史信息進(jìn)行預(yù)測(cè)
- 動(dòng)態(tài)指令重用:同一指令序列在執(zhí)行時(shí)往往使用相同的一組輸入數(shù)據(jù),因此機(jī)器經(jīng)常進(jìn)行重復(fù)的工作。總臺(tái)指令重用技術(shù)試圖追蹤冗余計(jì)算,當(dāng)探測(cè)到冗余計(jì)算時(shí),先前的計(jì)算結(jié)果直接被使用而不進(jìn)行計(jì)算操作。
存儲(chǔ)器數(shù)據(jù)流指令的執(zhí)行的三個(gè)步驟:生成存儲(chǔ)器地址,存儲(chǔ)器地址轉(zhuǎn)換和數(shù)據(jù)訪問(wèn)。
存儲(chǔ)器地址轉(zhuǎn)換:虛地址轉(zhuǎn)化為物理地址。一般通過(guò)訪問(wèn)快表TLB來(lái)完成。TLB是硬件控制的表結(jié)構(gòu),保存著虛擬地址到物理地址的映射。TLB本質(zhì)上是存儲(chǔ)器中頁(yè)表的cache。如果當(dāng)前被轉(zhuǎn)換的虛擬地址所在的頁(yè)的映射情況未在TLB中,即發(fā)生了TLB失效。如果該映射在頁(yè)表中,則可以通過(guò)訪問(wèn)存儲(chǔ)器中的頁(yè)表獲取該映射,一旦失效的映射被載入TLB,轉(zhuǎn)換過(guò)程也就結(jié)束了。如果映射不在頁(yè)表中,即相關(guān)的頁(yè)還沒(méi)有進(jìn)行映射,也不在存儲(chǔ)器中,這種情況將導(dǎo)致頁(yè)故障,并需要訪問(wèn)磁盤(pán)存儲(chǔ)器檢索失效的頁(yè)。頁(yè)故障將觸發(fā)程序異常,同時(shí)需要掛起當(dāng)前程序。
數(shù)據(jù)cache緩沖存儲(chǔ)器中的部分?jǐn)?shù)據(jù),TLB用來(lái)緩沖頁(yè)表部分中的數(shù)據(jù),數(shù)據(jù)cache和TLB之間的交互如圖所示。
兩種亂序執(zhí)行l(wèi)oad指令的技術(shù):載入旁路和載入定向。
- 載入旁路:當(dāng)前載入地址和前導(dǎo)store指令不存在別名,即load和store之間不存在存儲(chǔ)器數(shù)據(jù)相關(guān)時(shí),將在后的load指令置于前導(dǎo)store指令之前執(zhí)行
- 載入定向:當(dāng)load和store存在別名,即存在RAW相關(guān),則將store的數(shù)據(jù)直接傳遞給load指令,load不再訪問(wèn)存儲(chǔ)器。
增加存儲(chǔ)器帶寬:多端口數(shù)據(jù)cache(或者是交叉多體存儲(chǔ)器)。
load指令的預(yù)測(cè):在取指段進(jìn)行,無(wú)需譯碼和分派。預(yù)測(cè)表的每一項(xiàng)記錄都包含預(yù)測(cè)的有效地址,在取指段就可以讀出,不必再經(jīng)過(guò)保留站等待基址寄存器的值和執(zhí)行流水線的地址生成。此時(shí)對(duì)數(shù)據(jù)cache的訪問(wèn)再下一周期就可以開(kāi)始,一般在譯碼段的末尾就能從cache讀到數(shù)據(jù)。(載入地址預(yù)測(cè)技術(shù))
載入值預(yù)測(cè):對(duì)要載入的數(shù)據(jù)值進(jìn)行預(yù)測(cè),擴(kuò)展載入預(yù)測(cè)表,增加載入的數(shù)據(jù),從而實(shí)現(xiàn)載入值預(yù)測(cè)。
存儲(chǔ)器相關(guān)性預(yù)測(cè):在load/store指令執(zhí)行時(shí)跟蹤存儲(chǔ)器相關(guān)信息,并在該load/store指令重新執(zhí)行時(shí)利用這些信息對(duì)存儲(chǔ)器相關(guān)性進(jìn)行預(yù)測(cè),以方便載入旁路和載入定向的提前執(zhí)行
總結(jié)
以上是生活随笔為你收集整理的现代处理器设计——超标量处理器基础1-4的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: BLUE引擎M2运行几天后就不可以施放合
- 下一篇: 用钩子程序实现根据一个表的字段更新另一个