日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

现代处理器设计——超标量处理器基础1-4

發(fā)布時(shí)間:2024/8/1 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 现代处理器设计——超标量处理器基础1-4 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

現(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:

    C=G+k?LC=G+k?L
    其中k為流水線的段數(shù),L為每增加一個(gè)鎖存器的價(jià)格,G為原本非流水硬件的價(jià)格

    流水線的性能:

    P=1T/k+SP=1T/k+S
    其中T為非流水線系統(tǒng)延遲,S是由于引入鎖存器而帶來(lái)的延遲

    價(jià)格性能比:

    CP=LT+GS+LSk+GTkKopt=GTLS????CP=LT+GS+LSk+GTkKopt=GTLS
    當(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)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。