国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

計算機組成與設(shè)計04——處理器

這篇具有很好參考價值的文章主要介紹了計算機組成與設(shè)計04——處理器。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

系列文章目錄

一、引言

1.計算機性能因素

2.基本的MIPS實現(xiàn)(指令部分)

3.CPU 抽象視圖

4.MIPS子集的基本實現(xiàn)

二、邏輯設(shè)計基礎(chǔ)

1.組合單元

2.時鐘方法

三、數(shù)據(jù)通路的建立

1.R型指令

2.存取指令

3.分支指令?

4.簡單的數(shù)據(jù)通路(R型/存?。?/p>

5.完整的數(shù)據(jù)通路(單周期)

四、簡單的實現(xiàn)機制

1.ALU控制信號

2.主控單元設(shè)計

五、流水線概述

0.MIPS指令流水

1.流水線的性能

2.流水線的加速比及分析

3.流水線冒險

3.1 結(jié)構(gòu)冒險

3.2 數(shù)據(jù)冒險

(1)前推

(2)前推+停頓

3.3 數(shù)據(jù)冒險樣例

3.4 控制冒險

(1)阻塞

(2)預(yù)測

Ⅰ、恒預(yù)測不跳轉(zhuǎn)?

Ⅱ、靜態(tài)分支預(yù)測

Ⅲ、動態(tài)硬件預(yù)測

3.5 流水線冒險樣例

六、MIPS流水化的數(shù)據(jù)通路?

1.流水線寄存器

2.流水線工作方式

2.1?lw/sw指令的流水操作——IF

2.2?lw/sw指令的流水操作——ID

2.3?lw指令的流水操作——EX

2.4?lw指令的流水操作——MEM?

2.5?lw指令的流水操作—— WB

2.6?sw指令的流水操作——EX

2.7?sw指令的流水操作—— MEM

2.8?sw指令的流水操作—— WB

3.流水線圖形化?

3.1 多時鐘周期流水線圖

3.2 傳統(tǒng)圖示

3.3 單時鐘周期流水線圖

3.4 流水線性能與時鐘周期回顧

3.5?流水線例題?

4.流水線控制信號?

4.1 控制信號說明

4.2 控制信號與數(shù)據(jù)通路?

七、數(shù)據(jù)冒險:旁路與阻塞

1.判斷范式與前推通路

2.范式修正

3.前推流水線

4.取數(shù)-使用:冒險、阻塞與檢測

5.冒險(阻塞)流水線通路

八、控制冒險/分支冒險

1.靜態(tài)預(yù)測:預(yù)測其不跳轉(zhuǎn)

2.縮短分支遲延

3.動態(tài)分支預(yù)測

九、阻塞與性能

1.重排指令-延遲槽技術(shù)

2.分支指令的預(yù)測

3.流水線全圖

十、異常與中斷

1.MIPS體系結(jié)構(gòu)中的異常處理?

2.帶有異常處理的流水線

3.其他異常

十一、指令級并行(ILP)?

1.多發(fā)射

2.推測

3.靜態(tài)多發(fā)射

4.動態(tài)多發(fā)射

5.多發(fā)射的有效性

6.能耗效率

十二、謬誤和總結(jié)

1.謬誤

2.總結(jié)

總結(jié)


系列文章目錄

本系列博客重點在深圳大學(xué)計算機系統(tǒng)(3)課程的核心內(nèi)容梳理,參考書目《計算機組成與設(shè)計》(有問題歡迎在評論區(qū)討論指出,或直接私信聯(lián)系我)。

第一章?計算機組成與設(shè)計01——計算機概要與技術(shù)_@李憶如的博客-CSDN博客

第二章?計算機組成與設(shè)計02——指令:計算機的語言_@李憶如的博客-CSDN博客

第三章?計算機組成與設(shè)計03——計算機的算術(shù)運算_@李憶如的博客-CSDN博客

第四章?計算機組成與設(shè)計04——處理器?


梗概

本篇博客主要介紹深入計算機組成與設(shè)計第四章處理器的相關(guān)知識。


一、引言

1.計算機性能因素

計算機性能因素與其決定因素如下:

計算機組成與設(shè)計04——處理器?

2.基本的MIPS實現(xiàn)(指令部分)

一個基本的MIPS的實現(xiàn)方式如下:

計算機組成與設(shè)計04——處理器?

指令的執(zhí)行步驟如下:?

計算機組成與設(shè)計04——處理器?

計算機組成與設(shè)計04——處理器?

3.CPU 抽象視圖

計算機組成與設(shè)計04——處理器?

算術(shù)邏輯指令、存儲訪問指令、分支指令的CPU抽象視圖分別如下:

計算機組成與設(shè)計04——處理器?

計算機組成與設(shè)計04——處理器?

計算機組成與設(shè)計04——處理器?Tips:某個操作的數(shù)有多個來源時,需要加入復(fù)選器調(diào)整視圖(如bne、lw、sw)

4.MIPS子集的基本實現(xiàn)

加入后一個MIPS子集的基本實現(xiàn)如下,包含控制信號與復(fù)選器。

計算機組成與設(shè)計04——處理器?

二、邏輯設(shè)計基礎(chǔ)

1.組合單元

計算機組成與設(shè)計04——處理器

2.時鐘方法

計算機組成與設(shè)計04——處理器?

三、數(shù)據(jù)通路的建立

數(shù)據(jù)通路:CPU中處理數(shù)據(jù)和地址的單元部件 Registers ALUs Mux’s Memories …

數(shù)據(jù)通路部件(datapath element):一個用來操作保存處理器中數(shù)據(jù)的單元

程序計數(shù)器PC:存放下一條指令地址的寄存器

計算機組成與設(shè)計04——處理器?

1.R型指令

計算機組成與設(shè)計04——處理器?

2.存取指令

計算機組成與設(shè)計04——處理器?

Tips:符號擴展不能漏(為增加數(shù)據(jù)項長度,將原數(shù)據(jù)項最高位復(fù)制到新數(shù)據(jù)項多出來的高位)。

3.分支指令?

計算機組成與設(shè)計04——處理器?

計算機組成與設(shè)計04——處理器?

Tips:beq需要左移兩位,MIPS中連續(xù)字的地址相差4,且字的起始地址為4的倍數(shù)(一個地址為8位,即一個字節(jié),一個字有4個字節(jié))。所以,需要將offset_value左移2位,使其表示為字的地址,確保其能正確跳轉(zhuǎn)到正確地址。

4.簡單的數(shù)據(jù)通路(R型/存取)

初步的數(shù)據(jù)通路在1個時鐘周期內(nèi)完成指令

每個數(shù)據(jù)通路部件在一個時鐘周期內(nèi)只能處理一條指令 因此需要獨立的數(shù)據(jù)和指令存儲器

當不同指令的數(shù)據(jù)來源不同時,需要使用多選器

計算機組成與設(shè)計04——處理器?

5.完整的數(shù)據(jù)通路(單周期)

計算機組成與設(shè)計04——處理器?

Tips:數(shù)據(jù)通路必須有獨立的指令存儲器和數(shù)據(jù)存儲器,因為處理器在一個周期內(nèi)只能操作每個部件一次,而在一個周期內(nèi)不可能對一個單端口存儲器進行兩次存取。?

四、簡單的實現(xiàn)機制

核心:以MIPS核心指令子集為目標,為數(shù)據(jù)通路設(shè)計控制單元

核心指令: lw, sw, beq, add, sub, and, or, slt, j

1.ALU控制信號

計算機組成與設(shè)計04——處理器?

設(shè)計單元表示真值表如下:

計算機組成與設(shè)計04——處理器?

2.主控單元設(shè)計

計算機組成與設(shè)計04——處理器?

計算機組成與設(shè)計04——處理器?

Tips:增加了指令判斷的復(fù)選器與ALU控制單元,并標識出了所有控制信號。

控制信號及其含義如下:

計算機組成與設(shè)計04——處理器?

加入控制單元后的簡單數(shù)據(jù)通路如下:

計算機組成與設(shè)計04——處理器?

各類指令的控制信號如下:

計算機組成與設(shè)計04——處理器?

五、流水線概述

單周期處理器缺點:無法應(yīng)對不同指令路徑(處理時間)長短的差異,最慢的路徑?jīng)Q定時鐘周期,不符合“加快經(jīng)常性實事件”設(shè)計原則。

計算機組成與設(shè)計04——處理器?

0.MIPS指令流水

IF: 從內(nèi)存中取指令

ID: 指令解碼& 讀寄存器

EX: 執(zhí)行運算或計算地址

MEM: 訪問內(nèi)存操作

WB: 將結(jié)果寫回寄存器?

計算機組成與設(shè)計04——處理器?

Tips:流水線每一步的流水線周期(Tc)一致,取決于最慢處理步驟。?

1.流水線的性能

對上述例題(lw)進行分析,性能對比如下:

計算機組成與設(shè)計04——處理器?

2.流水線的加速比及分析

計算機組成與設(shè)計04——處理器?

流水線vs單周期如下:

計算機組成與設(shè)計04——處理器?

流水線vs多周期指令如下:

計算機組成與設(shè)計04——處理器?

流水線分析:n個段(以5為例)構(gòu)成了一個指令流水線,一條指令經(jīng)過每個段

CPI(平均執(zhí)行周期數(shù))減少到1,平均每個時鐘周期發(fā)射或完成一條指令

在任意時鐘周期,在每個流水段正執(zhí)行一條指令的一部分

Tips:注意指令是單周期還是多周期,單周期無流水線CPI也是1

單周期 vs 多周期 vs 流水線詳見六中3.5?流水線例題?

3.流水線冒險

冒險現(xiàn)象:下一周期不能按時執(zhí)行下一條指令

①結(jié)構(gòu)冒險(結(jié)構(gòu)相關(guān)):所需的部件忙,暫不可用

②數(shù)據(jù)冒險(數(shù)據(jù)相關(guān)):需要前面某條指令的計算結(jié)果,用于本次計算輸入

③控制冒險(控制相關(guān)):需要根據(jù)前面某條指令的結(jié)果來確定分支的選擇執(zhí)行?

3.1 結(jié)構(gòu)冒險

定義:缺乏硬件支持導(dǎo)致指令不能在預(yù)定的時鐘周期內(nèi)執(zhí)行的情況

以data access(訪存)與instruction fecth(取指)的冒險為例:

計算機組成與設(shè)計04——處理器?

Tips:因此,流水實現(xiàn)的MIPS中指令和數(shù)據(jù)內(nèi)存必須是分離獨立的,兩個獨立的L1 cache?

3.2 數(shù)據(jù)冒險

定義:一條指令依賴于前面某條執(zhí)行的計算結(jié)果,缺少指令執(zhí)行所需數(shù)據(jù)而導(dǎo)致指令無法在預(yù)期的時鐘周期內(nèi)執(zhí)行。

計算機組成與設(shè)計04——處理器?

解決方法如下:

(1)前推

計算機組成與設(shè)計04——處理器?

(2)前推+阻塞(停頓)

計算機組成與設(shè)計04——處理器?

3.3 數(shù)據(jù)冒險樣例

計算機組成與設(shè)計04——處理器?Tips:時鐘周期即橫軸數(shù),本題為13個。

調(diào)整后指令如下(減少時鐘周期):

計算機組成與設(shè)計04——處理器?

3.4 控制冒險

定義:取到的指令不是所需要的(地址變化不是預(yù)期)而導(dǎo)致指令不能在預(yù)定的時鐘周期內(nèi)執(zhí)行。

出現(xiàn)原因:決策依賴于一條指令的結(jié)果,而其他指令正在執(zhí)行中(例:下一條指令I(lǐng)F階段時,分支指令仍在 ID階段)。

解決控制冒險的方法如下:

(1)阻塞

在分支指令后立即阻塞流水線,避免地址未被計算,樣例如下:

計算機組成與設(shè)計04——處理器?

分析:在較長流水線中,往往不能在第二級完成分支決策,阻塞(停頓)會帶來更大的速度下降。

(2)預(yù)測

根據(jù)“通過預(yù)測提高性能”的設(shè)計原則對分支地址進行預(yù)測預(yù)測,預(yù)測錯誤才需要阻塞。

Ⅰ、恒預(yù)測不跳轉(zhuǎn)?

一種簡單的預(yù)測方法就是總預(yù)測分支未發(fā)生(不跳轉(zhuǎn)),樣例如圖:

計算機組成與設(shè)計04——處理器

Ⅱ、靜態(tài)分支預(yù)測

一種更成熟的分支預(yù)測是基于典型的行為,預(yù)測一些分支發(fā)生而預(yù)測另一些分支不發(fā)生,樣例如下:

計算機組成與設(shè)計04——處理器

?Tips:這種分支預(yù)測依賴始終不變的行為,沒有考慮特定分支指令的特點。

Ⅲ、動態(tài)硬件預(yù)測

定義:預(yù)測取決于每一步分支的行為,并且在整個程序的生命周期內(nèi)可能改變分支的預(yù)測結(jié)果。

實現(xiàn):保存每次分支的歷史記錄,利用歷史記錄來預(yù)測。

Tips:較長的流水線會惡化預(yù)測的性能(各種方法),并提高錯誤預(yù)測的概率。

3.5 流水線冒險樣例

計算機組成與設(shè)計04——處理器

Tips:算數(shù)指令是要在WB后才寫入寄存器,故2需要旁路?

六、MIPS流水化的數(shù)據(jù)通路?

在單時鐘周期中,流水線最多五條指令,因此要把之前的數(shù)據(jù)通路分為五部分,如圖:

計算機組成與設(shè)計04——處理器

圖中從左到右的指令流中有兩個例外:

(1)寫回階段是寫回數(shù)據(jù)通路中間的寄存器(可能導(dǎo)致數(shù)據(jù)冒險)

(2)選擇PC的下一個值的時候,在自增PC與MEM的分支地址間進行選擇(可能導(dǎo)致控制冒險)?

1.流水線寄存器

通過增加保存中間數(shù)據(jù)(記錄前一時鐘周期產(chǎn)生的結(jié)果)的寄存器,使得指令過程中可以共享部分數(shù)據(jù)通路,故需要流水線寄存器,確保一條數(shù)據(jù)通路實現(xiàn)流水線,加入流水線寄存器如圖所示:

計算機組成與設(shè)計04——處理器

Tips:流水線寄存器寬度要足夠大(64、128、97、64)

補充:每條指令都會更新PC,PC可以看作是一個流水線寄存器:給IF級提供數(shù)據(jù),發(fā)生異常時必須保存它的內(nèi)容。

2.流水線工作方式

以lw與sw為例介紹流水線的工作方式與數(shù)據(jù)通路實現(xiàn),紅圈為數(shù)據(jù)傳輸與存儲,供之后的指令使用,如圖所示:

2.1?lw/sw指令的流水操作——IF

計算機組成與設(shè)計04——處理器

2.2?lw/sw指令的流水操作——ID

計算機組成與設(shè)計04——處理器

Tips:由于處理器并不知道當前是哪一條指令在被譯碼,因此它把符號擴展后的常量及兩個寄存器的值都讀入ID/EX寄存器中,簡化控制。?

2.3?lw指令的流水操作——EX

計算機組成與設(shè)計04——處理器

2.4?lw指令的流水操作——MEM?

計算機組成與設(shè)計04——處理器

2.5?lw指令的流水操作—— WB

計算機組成與設(shè)計04——處理器

其中,寫回寄存器的值是IF/ID流水線寄存器(之前l(fā)w的目標寄存器沒保存)提供的,但現(xiàn)在的指令是lw后的指令,故寫回寄存器的值有問題,需要修正,如圖所示:

計算機組成與設(shè)計04——處理器

2.6?sw指令的流水操作——EX

計算機組成與設(shè)計04——處理器

Tips:只有在Sw中才將第二個寄存器的數(shù)據(jù)寫入EX/MEM寄存器。

2.7?sw指令的流水操作—— MEM

計算機組成與設(shè)計04——處理器

2.8?sw指令的流水操作—— WB

計算機組成與設(shè)計04——處理器

3.流水線圖形化?

3.1 多時鐘周期流水線圖

多時鐘周期流水線圖簡單但不包括所有細節(jié),構(gòu)成了資源(部件)的使用情況圖。樣例如圖所示:

計算機組成與設(shè)計04——處理器

Tips:上圖描述的是每個步驟使用的物理資源

3.2 傳統(tǒng)圖示

計算機組成與設(shè)計04——處理器

3.3 單時鐘周期流水線圖

單時鐘周期流水線圖表示的是一個時鐘周期內(nèi)整個數(shù)據(jù)通路的狀態(tài),樣例如圖:

計算機組成與設(shè)計04——處理器

3.4 流水線性能與時鐘周期回顧

計算機組成與設(shè)計04——處理器

計算機組成與設(shè)計04——處理器

3.5?流水線例題?

Ⅰ、幾個學(xué)生在討論五級流水線的效率問題。有一個學(xué)生指出并非所有流水級中的指令都是活動的。在忽略冒險的情況下,他們做出了以下幾個斷言,其中哪一個是正確的?

1)允許跳轉(zhuǎn)、分支、ALU指令使用比5級(裝載指令需要的級數(shù))更少的級數(shù)將在所有情況下增加流水線的性能。

錯誤,由2)解釋。

2)允許一些指令使用更少的級數(shù)并不能提高性能,因為吞吐率(單位時間流出的指令數(shù))是由時鐘周期決定的。每條指令所需的流水線級數(shù)僅影響它的延遲時間,而不影響吞吐率。

正確

3)不可能減少ALU指令所需的時鐘周期數(shù),因為他們需要寫回結(jié)果。不過分支和跳轉(zhuǎn)指令是可以減少時鐘周期數(shù)的,因此存在改善性能的機會。

錯誤

4)相對于嘗試減少指令所需的時鐘周期數(shù),我們可以延長流水線的級數(shù),雖然每條指令花費更多的時鐘周期數(shù),但時鐘周期的長度變短了,這樣才能提高性能(吞吐率 = 單位時間 / 時鐘周期的長度)。

正確?

Ⅱ、流水線對時鐘周期的影響

計算機組成與設(shè)計04——處理器

1.流水線處理器與非流水線處理器的時鐘周期分別是多少?

? ? 流水線處理器時鐘周期取決于最慢的流水線級:350ps

? ? 非流水線時鐘周期為一條指令(單周期):1250ps

2.lw指令在流水線處理器和非流水線處理器中的總延遲分別是多少?

? ? 流水線總延遲:max (250, 350, 150, 300, 200) * 5 = 350ps * 5 = 1750ps

? ? 非流水線:250 + 350 + 150 + 300 + 200 = 1250ps

3.如果可以將原流水線數(shù)據(jù)通路的一級劃分為兩級,每級的延遲是原級的一半,那么你會選哪一級進行劃分?劃分后的時鐘周期是多少?

? ? 選擇最長的一級劃分,即ID

? ? 劃分后時鐘周期為:300ps?

4.假設(shè)沒有阻塞和冒險,數(shù)據(jù)存儲器的利用率是多少(占總周期數(shù)的百分比)?

? ? lw與sw使用數(shù)據(jù)存儲器,故利用率為20+15=35%

5.假設(shè)沒有阻塞和冒險,寄存器堆的寫寄存器端口的利用率是多少?

? ? alu與lw使用寫寄存器端口,故利用率為45+20=65%

6.假設(shè)一種多周期的處理器設(shè)計,其中每條指令需要多個時鐘周期完成。但上一條指令完成前不取下一條指令。在這種設(shè)計中,指令僅經(jīng)過其所需的階段(例如,存儲指令僅需4個時鐘周期,因為其不需要WB階段)。比較單周期設(shè)計、多周期設(shè)計和流水線設(shè)計三者的時鐘周期和總執(zhí)行時間。

計算機組成與設(shè)計04——處理器

Tips:beq因為branch在mem中,所以有控制信號,無WB,所以在多周期中為4。

4.流水線控制信號?

流水線控制信號(簡化)如圖:

計算機組成與設(shè)計04——處理器

Tips:輸入ALU control的六位字段為指令立即數(shù)的低六位(符號擴展時無變化)。

EX過程中控制信號有:RegDst、ALUOp、ALUSrc,根據(jù)這些信息選擇結(jié)果寄存器(R、I型指令)、ALU操作、并為ALU讀取data2或符號擴展后的立即數(shù)。?

4.1 控制信號說明

ALUOp信號如下:

計算機組成與設(shè)計04——處理器

其他信號如下:

計算機組成與設(shè)計04——處理器

Tips:控制信號與非流水方式相同的意義,各種指令如下:

計算機組成與設(shè)計04——處理器

4.2 控制信號與數(shù)據(jù)通路?

流水線控制信號根據(jù)指令產(chǎn)生:與單周期實現(xiàn)一樣,如圖:

計算機組成與設(shè)計04——處理器

Tips:ALUOp分為ALUOp1與ALUOp0,為兩個控制信號。?

流水線數(shù)據(jù)通路如圖:

計算機組成與設(shè)計04——處理器

七、數(shù)據(jù)冒險:旁路與阻塞

1.判斷范式與前推通路

部分數(shù)據(jù)冒險可以通過前推技術(shù)來解決 問題:如何發(fā)現(xiàn)何時需要將數(shù)據(jù)前推?

計算機組成與設(shè)計04——處理器

檢測是否需要啟用前推的范式如下:

計算機組成與設(shè)計04——處理器

冒險樣例如下:?

計算機組成與設(shè)計04——處理器

流水線中前推通路如下:

計算機組成與設(shè)計04——處理器

2.范式修正

但是,直接采用總是旁路的方法解決冒險是不對的,某些指令可能不寫回寄存器,會產(chǎn)生不必要的旁路。?

故在此添加兩個條件:

1.僅當寫寄存器才需要前推!(寫內(nèi)存則不必)

即:EX/MEM.RegWrite, MEM/WB.RegWrite

2.$0恒為0,如果目標寄存器是$0 不需前推 避免把$0按非0旁路處理

即:EX/MEM.RegisterRd ≠ 0, MEM/WB.RegisterRd ≠ 0

故此時范式如下:

計算機組成與設(shè)計04——處理器

但此時范式仍存在雙重數(shù)據(jù)冒險的問題,樣例與修正如下:

計算機組成與設(shè)計04——處理器

故修正后的MEM冒險范式如下:

核心:只有EX冒險不成立時,才對MEM冒險前推?

計算機組成與設(shè)計04——處理器

Tips:and not中的兩個即為EX冒險判斷范式?

3.前推流水線

故帶有前推功能流水線如圖所示:

計算機組成與設(shè)計04——處理器

若考慮帶符號立即數(shù)作為ALU的輸入,需增加一個2:1的MUX,如圖:?

計算機組成與設(shè)計04——處理器

4.取數(shù)-使用:冒險、阻塞與檢測

已知某些數(shù)據(jù)冒險不能單用旁路解決(lw在MEM后才算出結(jié)果),需要阻塞,樣例如圖(除了一個旁路單元,還需要一個在ID的冒險檢測單元,用于插入阻塞):

計算機組成與設(shè)計04——處理器

被阻塞指令

1.ID/EX寄存器控制信號清0,以下流水級執(zhí)行空操作nop

EX MEM WB

2.PC和IF/ID寄存器值不變

3.重新譯碼?

被阻塞指令的下一條指令 重新取指?

加入阻塞的樣例如圖:

計算機組成與設(shè)計04——處理器

5.冒險(阻塞)流水線通路

計算機組成與設(shè)計04——處理器

八、控制冒險/分支冒險

對于控制冒險,本部分在流水線上實現(xiàn)前文提到的幾種方法。?

1.靜態(tài)預(yù)測:預(yù)測其不跳轉(zhuǎn)

計算機組成與設(shè)計04——處理器

2.縮短分支遲延

一種有效提高分支效率的方法是縮短分支的執(zhí)行時間。

增加硬件,把分支決策從EX提前到ID級

? 計算分支目標地址: 從EX級移到ID級

? 判斷分支條件: 比較兩個寄存器的值?

? 修改旁路電路提供寄存器數(shù)值、修改冒險電路進行必要的阻塞

? ? 1)是否需要將比較數(shù)寄存器從前面指令前推過來: ALU輸出 內(nèi)存數(shù)據(jù) 如果分支發(fā)生則更新PC

? ? 2)如果分支比較的操作數(shù)還沒準備好,則需要阻塞?

分支指令中同樣會出現(xiàn)數(shù)據(jù)冒險,根據(jù)類型需要旁路/阻塞,樣例如下:?

計算機組成與設(shè)計04——處理器

計算機組成與設(shè)計04——處理器

分支發(fā)生時下一指令會產(chǎn)生氣泡,然后跳轉(zhuǎn)到對于PC指令去執(zhí)行。?

3.動態(tài)分支預(yù)測

計算機組成與設(shè)計04——處理器

在預(yù)測器的選擇上:

1-Bit預(yù)測器有不足:一個內(nèi)層循環(huán)的分支誤判有兩次

2-Bit預(yù)測器:連續(xù)兩次誤判才改變預(yù)測方向?

計算機組成與設(shè)計04——處理器

對于分支地址的計算:

及時完成了預(yù)測, 仍然需要計算目標地址

? ? 需要1個時鐘周期用于計算分支目標地址

分支目標緩存(BTB, Branch target buffer)

? ? 緩存了近期使用的目標地址 根據(jù)分支指令的PC來標識(indexing)

? ? 如果PC匹配并且預(yù)測為分支發(fā)生,則直接從BTB中去取目標地址而無需計算?

九、阻塞與性能

阻塞降低性能

? ? 指令序列按流水方式正確執(zhí)行必需的步驟

減少阻塞

? ? 編譯器重排(調(diào)度)指令序列

? ? ? ? 避免冒險及其引起的阻塞

? ? ? ? 編譯器需要知道流水結(jié)構(gòu)?

1.重排指令-延遲槽技術(shù)

分支發(fā)生在分支指令之后的第二個時鐘周期

? ? 中間間隔一個“分支延遲槽”可以執(zhí)行無關(guān)指令(用不影響分支的一條指令填充到時間片中)?

計算機組成與設(shè)計04——處理器

2.分支指令的預(yù)測

計算機組成與設(shè)計04——處理器

3.流水線全圖

完整流水線數(shù)據(jù)通路如圖:

計算機組成與設(shè)計04——處理器

十、異常與中斷

定義如下:

計算機組成與設(shè)計04——處理器

1.MIPS體系結(jié)構(gòu)中的異常處理?

目前的實現(xiàn)中可能產(chǎn)生的異常是未定義指令的執(zhí)行算數(shù)溢出,異常處理操作如下:

計算機組成與設(shè)計04——處理器

還有另一種機制是向量中斷,?處理代碼的入口根據(jù)原因不同而不同,入口處的代碼安排: 直接處理中斷事件, 或跳轉(zhuǎn)到具體處理代碼。

而異常的處理操作如下:

計算機組成與設(shè)計04——處理器

樣例如下:

計算機組成與設(shè)計04——處理器

2.帶有異常處理的流水線

帶有異常處理的流水線如下:

計算機組成與設(shè)計04——處理器

異常的屬性如下:

計算機組成與設(shè)計04——處理器

流水線異常的樣例如下:

計算機組成與設(shè)計04——處理器

在流水線中,add在EX引發(fā)異常,撤銷指令并轉(zhuǎn)到處理程序入口,下一時鐘周期將讀入處理程序入口處的指令(80000180->80000184)

3.其他異常

Ⅰ、同時多異常(一個時鐘周期內(nèi)多個異常)

簡單處理方法: 從最早的指令開始處理 將后續(xù)指令全部撤銷 稱為“精確”異常?

維護精確異常非常困難

Ⅱ、非精確異常

直接終止流水線并保存狀態(tài)

? ? 包括異常原因cause寄存器

由異常處理程序負責(zé)找出:

? ? 發(fā)生異常的指令

? ? 哪些指令需要完成或者撤銷 可能需要“手動”完成

簡化硬件, 但需要更復(fù)雜的異常處理軟件

無法應(yīng)用于復(fù)雜的、多發(fā)射的亂序流水線?

十一、指令級并行(ILP)?

計算機組成與設(shè)計04——處理器

1.多發(fā)射

多發(fā)射:每個流水線級可以啟動多條指令

計算機組成與設(shè)計04——處理器

2.推測

推測:為了使依賴于被推測指令的其他指令可以執(zhí)行,允許編譯器或處理器“猜測”指令結(jié)果,是挖掘更大ILP的最重要方法。?

計算機組成與設(shè)計04——處理器

Tips:推測可以由軟件(指令重排序)硬件(提前緩存指令)完成。

推測中可能會導(dǎo)致本不存在的異常發(fā)生,軟件處理是加入額外推測支持,硬件處理是簡單緩存異常,直到導(dǎo)致異常指令發(fā)生。?

而為了改善性能,決定何時加入推測很重要,有靜態(tài)和動態(tài)兩種技術(shù):

計算機組成與設(shè)計04——處理器

3.靜態(tài)多發(fā)射

所有靜態(tài)多發(fā)射用編譯器幫助封裝多條指令并處理冒險

發(fā)射包:一個時鐘周期內(nèi)發(fā)射多條指令的集合

超長指令字: 一類可以用時啟動多個操作的指令集

關(guān)于靜態(tài)多發(fā)射的調(diào)度如下:

計算機組成與設(shè)計04——處理器

接下來以一個靜態(tài)雙發(fā)射的例子來介紹:

計算機組成與設(shè)計04——處理器

流水線圖如下:

計算機組成與設(shè)計04——處理器

對于靜態(tài)雙(多)發(fā)射的冒險,因為更多指令在同時進行,所以有更多冒險機會。

計算機組成與設(shè)計04——處理器

調(diào)度的樣例如下:

計算機組成與設(shè)計04——處理器

調(diào)度:在靜態(tài)多發(fā)射中指對指令序列重排序,以盡可能地避免流水線阻塞。(假設(shè)分支可預(yù)測,即控制冒險由硬件處理)?

例子中CPI = 0.8(nop不算指令,因為不能提高真實的性能)

一種從循環(huán)中獲得更多性能的編譯技術(shù)叫循環(huán)展開,通過重疊不同循環(huán)體中的指令獲得更高的ILP

計算機組成與設(shè)計04——處理器

寄存器重命名:在循環(huán)展開的過程中,編譯器引入了幾個臨時寄存器($t1,$t2,$t3),目的是消除一些虛假的數(shù)據(jù)依賴。?

4.動態(tài)多發(fā)射

動態(tài)多發(fā)射主要依賴于硬件,通常稱超標量“Superscalar” 處理器

超標量:可以將每個周期處理器能執(zhí)行的指令數(shù)超過一條?

動態(tài)流水線調(diào)度允許CPU以亂序方式執(zhí)行,從而避免阻塞

? ? 但是將結(jié)果提交到寄存器是按指令順序的

樣例如下:

計算機組成與設(shè)計04——處理器

動態(tài)調(diào)度的CPU如下:

計算機組成與設(shè)計04——處理器

對于動態(tài)調(diào)度需求的原因如下:

計算機組成與設(shè)計04——處理器

推測執(zhí)行:

預(yù)測分支,不阻塞指令發(fā)射

? ? 在確定分支預(yù)測正確之前,不提交運算結(jié)果

取數(shù)推測執(zhí)行

? ? 避免取數(shù)和cache miss的延遲?

? ? 不能提交取數(shù)的結(jié)果,直到確認推測正確?

5.多發(fā)射的有效性

計算機組成與設(shè)計04——處理器

6.能耗效率

復(fù)雜的動態(tài)調(diào)度和推測執(zhí)行需要額外的能耗 使用多個簡單處理器核可能更合適

十二、謬誤和總結(jié)

1.謬誤

流水線與實現(xiàn)/工藝技術(shù)無關(guān)

拙劣的ISA設(shè)計使得流水線更困難

2.總結(jié)

計算機組成與設(shè)計04——處理器

總結(jié)

以上便是紹深入計算機組成與設(shè)計第四章處理器的相關(guān)知識。在第四章中,主要以計算機系統(tǒng)處理器與流水線的數(shù)據(jù)通路介紹與實現(xiàn)為主。文章來源地址http://www.zghlxwxcb.cn/news/detail-445306.html

到了這里,關(guān)于計算機組成與設(shè)計04——處理器的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 計算機組成原理——第五章中央處理器(中)

    辭別再無相見月,終是一人度春秋 本文主要寫的是控制器的設(shè)計,控制器的設(shè)計分為硬布件控制器(就是用純硬件的方式來實現(xiàn)的一種控制器)和微程序控制器(本質(zhì)上是硬件和軟件的一種結(jié)合), 兩類控制器中的PC和IR是相同的,但確定和表示指令執(zhí)行步驟的辦法以及給出控制各

    2023年04月18日
    瀏覽(21)
  • 計算機組成原理——課程設(shè)計

    計算機組成原理——課程設(shè)計

    ? 深入了解計算機各種指令的執(zhí)行過程,以及控制器的組成,指令系統(tǒng)微程序設(shè)計的具體知識,進一步理解和掌握動態(tài)微程序設(shè)計的概念;完成微程序控制的特定功能計算機的指令系統(tǒng)設(shè)計和調(diào)試。 1.??? TEC-2機一臺 2.??? 電腦一臺 3.??? TEC-2模擬軟件一套 1.分析TEC-2機的功

    2024年02月08日
    瀏覽(25)
  • 計算機組成原理 存儲器設(shè)計

    計算機組成原理 存儲器設(shè)計

    目錄 一、把8×8 位的RAM存儲器模塊擴展為 8×32 位RAM存儲空間; 二、把8×8 位的RAM存儲器模塊擴展為32×8位RAM存儲空間; 三、把256×4 位的RAM存儲器模塊擴展為1K×8b的RAM存儲空間。 PS:先說說存儲器是什么樣的小玩意: ? ? ? ? ? ? ? ? ? ? ? ? A x B 位XXX(RAM或者ROM)存儲器的

    2024年02月07日
    瀏覽(24)
  • 【計算機組成原理實驗】CPU設(shè)計

    【計算機組成原理實驗】CPU設(shè)計

    設(shè)計并實現(xiàn)一個簡單處理器模型完成功能驗證。 ASUS VivoBook + Windows10 + Vivado2019.2,語言為 Verilog HDL。 1. 處理器應(yīng)基于 6.5 指令集或 MIPS 指令集或 RISCV 指令集進行設(shè)計或自行設(shè)計指令集。 2. 處理器的控制器結(jié)構(gòu)應(yīng)為微程序控制器或集硬布線控制器。 3. 處理器需支持算術(shù)運算、

    2024年02月08日
    瀏覽(19)
  • 系統(tǒng)架構(gòu)設(shè)計專業(yè)技能 · 計算機組成與結(jié)構(gòu)

    系統(tǒng)架構(gòu)設(shè)計專業(yè)技能 · 計算機組成與結(jié)構(gòu)

    現(xiàn)在的一切都是為將來的夢想編織翅膀,讓夢想在現(xiàn)實中展翅高飛。 Now everything is for the future of dream weaving wings, let the dream fly in reality. 點擊進入系列文章目錄 運算器 ① 算術(shù)邏輯單元ALU:數(shù)據(jù)的算術(shù)運算和邏輯運算 ② 累加寄存器AC:通用寄存器, 為ALU提供一個工作區(qū), 用于

    2024年02月09日
    瀏覽(22)
  • 計算機組成原理實驗 MIPS RAM設(shè)計

    計算機組成原理實驗 MIPS RAM設(shè)計

    一、設(shè)計要求 ????Logisim中RAM組件只能提供固定的地址位寬,數(shù)據(jù)輸出也只能提供固定的數(shù)據(jù)位寬,訪問時無法同時支持字節(jié)/半字/字三種訪問模式,實驗要求利用4個4K * 8 位的 RAM 組件進行擴展,設(shè)計完成既能按照8位、也能按照16位、也能按照32位進行讀寫訪問的32位存儲器

    2024年02月04日
    瀏覽(31)
  • 【計算機組成與設(shè)計】Chisel取指和指令譯碼設(shè)計

    【計算機組成與設(shè)計】Chisel取指和指令譯碼設(shè)計

    本次試驗分為三個部分: 目錄 設(shè)計譯碼電路 設(shè)計寄存器文件 實現(xiàn)一個32個字的指令存儲器 輸入位32bit的一個機器字,按照課本MIPS 指令格式,完成add、sub、lw、sw指令譯碼,其他指令一律譯碼成nop指令。輸入信號名為Instr_word,對上述四條指令義譯碼輸出信號名為add_op、sub_o

    2024年02月05日
    瀏覽(44)
  • 西南交通大學(xué) 計算機組成原理實驗課程設(shè)計

    西南交通大學(xué) 計算機組成原理實驗課程設(shè)計

    ?代碼部分: 波形圖部分: (上圖Load為2節(jié)拍,我之前寫錯了。。。這里忘了改了)

    2024年02月13日
    瀏覽(48)
  • 計算機組成原理實驗——五、單周期CPU設(shè)計

    計算機組成原理實驗——五、單周期CPU設(shè)計

    掌握指令執(zhí)行過程的5個階段 掌握每條指令的數(shù)據(jù)通路選擇 掌握譯碼器和控制器的功能和實現(xiàn) 掌握數(shù)據(jù)輸入輸出處理的方法 實現(xiàn)risc-v中RV32I指令的單周期CPU 利用實現(xiàn)的risc-v CPU實現(xiàn)平方數(shù) 實現(xiàn)risc-v中37條RV32I指令的單周期 cpu; 完成1后在該cpu上實現(xiàn)斐波那契數(shù)。 rom dataRAM ins文

    2024年02月11日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包