最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

第七章-微體系結構(2):處理器設計概述

2023-02-02 21:55 作者:開發(fā)員阿夢  | 我要投稿

系統設計

書中提到,設計復雜的系統,一種好方法是從包含狀態(tài)元件的硬件開始。狀態(tài)原件包括存儲器和體系結構狀態(tài)(寄存器文件與程序計數器),如下圖所示[P229]。在最初的設計中,根據用途不同存儲器分為指令存儲器和數據存儲器。在這些存儲組件之間增加組合邏輯,再基于當前狀態(tài)計算出新的狀態(tài)。


分析處理器系統性能的一個重要標準是”指令執(zhí)行時間“。指令執(zhí)行時間一般是通過基準測試獲得的。執(zhí)行基準測試的程序被稱為基準測試程序(benchmark)?;鶞蕼y試程序是指一組類似用于應用的程序集合。在很多學術組會中,經常聽到基準測試這個詞。這里算是明了了這個詞的由來以及含義。benchmark測出的執(zhí)行時間代表處理器的性能。一個程序的執(zhí)行時間由以下公式給出[P230]:


其中 周期數/指令(數),即CPI,也就是執(zhí)行一條平均指令所需要的周期數。相反,其倒數IPC描述的是處理器的吞吐量,表示每周期的指令數。處理器執(zhí)行的某個功能會對應多條指令,計算這樣一組指令總的執(zhí)行時間,就是指令的執(zhí)行時間。仍然承接第六章的內容——復雜的指令集(CISC),其指令數量多,但是單個指令就能實現復雜的功能,不過其硬件實現通常工作較慢;像MIPS這樣精簡的指令集(RISC),單個功能需要多條指令完成,當然好處就是MIPS體系結構下硬件的實現工作更快。所以不管是CISC還是RISC,其性能好與壞都是相對折中的。

在本章的后文中,將實現三種微處理器體系結構。三者的直觀特點如下:

單周期微體系結構:一個周期執(zhí)行一條完整的指令。時鐘周期由執(zhí)行時間最長的指令決定。

多周期微體系結構:相對于單周期微體系結構的重要改進是,對加法器、存儲器等昂貴硬件的復用設計,來減少硬件成本。顧名思義,多周期處理器也就是使用多個較短的周期執(zhí)行一條指令。

流水線微體系結構:將單周期微體系結構流水線化,使得可以同時執(zhí)行多條指令,顯著提高了吞吐量。

?

注:下述圖中黑色加粗的線條為新加入的部分。

?

單周期處理器設計

[P231~P240]詳細說明了單周期處理器的RTL擴充過程。除了狀態(tài)元件是組合邏輯電路,增加數據路徑和控制邏輯都屬于組合邏輯電路。

所有處理器設計的第一步都是從指令存儲器中讀取指令,如下圖所示[P231]。程序計數器寄存器提供待執(zhí)行指令的地址,從指令存儲器中讀取待執(zhí)行的指令Instr。

(1)數據路徑設計

首先設計lw指令和sw指令的數據路徑。對于lw來說,要解析出32位的指令Instr中的[25:21],這個是lw所需要的包含基地址的源寄存器的地址。lw指令涉及到對寄存器文件的讀操作(基地址)、立即數擴展操作、ALU操作(計算存儲器地址)、數據存儲器讀操作(讀取所需數據)、寄存器寫操作(將數據寫入目的寄存器);在此基礎上,還需要增加對數據存儲器的寫操作的路徑。lw和sw指令需要使用指令中包含的立即數,這個立即數是16位的,需要進行符號擴展到32位,于是在指令的RTL圖中需要增加立即數的符號擴展模塊。每次執(zhí)行一條指令后,程序計數器寄存器(PC寄存器)中的地址需要自增4(4個字節(jié),一個字長)來獲取下一條指令的地址,于是還需要對PC寄存器增加一個ALU單元來計算下一條指令的地址。完成以上功能的RTL圖如下所示[P234]。

R型指令一般是需要將兩個源寄存器的運算結果存入到一個目的寄存器中。因此,上圖的路徑,寄存器文件的輸入信號WD3還要有一個來自于ALU單元計算結果的選項;同樣,寫入寄存器文件的地址信號A3,在R型指令中來自于指令中的[15:11]字段(rd)。于是擴展RTL圖如下[P234]。

最后是擴展實現分支指令beq的數據路徑。關于beq指令的功能見[P193]。最終的只包含數據路徑的單周期處理器效果如下[P235]:


(2)控制邏輯設計

單周期處理器的控制邏輯則借助于指令中的opcode字段和funct字段來確定控制信號。

上述圖中,根據不同指令的功能,已經標出了很多控制信號,它們將由控制單元統一管理。強調:所有R型指令的opcode是一樣的(6位0),不同的功能使用funct字段來區(qū)分;I型指令和J型指令的opcode每一個都不同。對寄存器、存儲器的讀寫操作都可以由opcode來確定。不過不同的R型指令,對ALU單元的操作不同。ALU執(zhí)行的運算包括加、減、與、或、slt(小于置位)。于是,將單周期處理器的控制邏輯分為兩部分:主譯碼器和ALU譯碼器,如下所示[P236]。

如上圖所示,大部分的控制信號將由主譯碼器賦值;主譯碼器還有一個2位輸出ALUOp。從本章最后的單周期處理器的Verilog實現中[P272]可以讀懂ALUOp的邏輯。除了R型指令需要使用ALU單元,I型指令如lw和sw需要使用ALU來計算存儲器地址(加法);如beq需要對兩個寄存器的值做減法,來判斷兩個寄存器的值是否相等。因首先使用ALU單元的指令有不同的類型。第一類是非R型指令執(zhí)行加法,比如lw和sw指令;第二類是非R型指令執(zhí)行減法,比如beq指令;第三類是R型指令使用ALU單元,需要根據指令中funct字段來進一步確定操作。因此ALUOp需要2位2進制數來包含以上三種情況。前面講到,R型指令包含的ALU操作包括加、減、與、或、以及slt5種,因此ALUControl需要3位二進制數來標識不同的ALU操作。書中使用了兩個表[P236]來說明ALUOp的值和ALUControl的值的確定。

其中,表5-1[P153]就是ALU對不同計算操作的編碼。

這樣一來,最終的單周期處理器設計RTL如下:

以下多周期處理器和流水線處理器重點講述與單周期處理器之間的不同。?

多周期處理器設計

單周期處理器有三個明顯的缺點。

首先,要有足夠長的周期時間來完成最慢的指令。再者,是對重要數字模塊的重用性不高。在上述的單周期處理器的設計中,用到了三個ALU單元。但是在實際的電路中,ALU是相對占用芯片面積的電路。第三,單周期處理器設計中采取了獨立的指令存儲器和數據存儲器。但在實際的計算機中只有一個大容量的存儲器來存儲指令和數據,并且支持讀寫操作。

狀態(tài)元件都是同步時序邏輯電路,且采用同樣的CLK信號。在單周期處理器的設計中,除了狀態(tài)元件,其他的數據通路和控制邏輯都由組合邏輯完成,也就是不引入時序邏輯(有限狀態(tài)機)才能保證一條指令只使用一個周期。因此每一次時鐘周期必須足夠長,像lw這樣的指令,就需要在同一個時鐘上升沿完成讀取寄存器文件、讀取數據存儲器,并在最后寫入寄存器文件(總監(jiān)組合邏輯完成的計算和立即數符號擴展操作耗時暫且不計),則單個時鐘周期必須足夠長來完成這些操作。

多周期處理器不要求指令在一個周期內完成,而是使用多個周期完成一條指令。因此,狀態(tài)元件的使用就寬松得多;比如,同一個ALU單元,在本周期內被用于lw計算存儲器地址,在下一個周期可以被用來計算R型指令的計算結果。因此在控制邏輯中,多周期處理器將通過有限狀態(tài)機來復用ALU單元。(這里我想了一下,其實在單周期處理器中也可以使用復用ALU的設計。可以在控制單元中對ALU單元的使用增加復用器。但是,這樣新引入的數字模塊和控制信號將使控制邏輯變得復雜,為了說明設計則沒有必要。)同樣的,存儲器也沒有必要分類了,也使用有限狀態(tài)機來復用一個存儲器來操作指令或數據即可。此時從存儲器取指令的示意圖如下[P241]。

取指操作也由時序邏輯控制,因此需要一個額外的寄存器來存儲結果。這個寄存器叫做指令寄存器(Instruction Register)。在后續(xù)的多周期處理器設計中將增加多個如此的非體系結構寄存器來保存中間結果。

?

流水線處理器設計

流水線處理器的設計思路是,將單周期處理器分解成5個流水階段。分別是:

取指(Fetch):處理器從指令存儲器中讀取指令。

譯碼(Decode):處理器從寄存器文件讀取源操作數,并對指令譯碼以便產生控制信號。

執(zhí)行(Execute):處理器使用ALU執(zhí)行計算。

存儲器(Memory):讀或寫數據存儲器。

寫回(Writeback):將結果寫回到寄存器文件。

流水線處理器的數據路徑設計和單周期處理器相似,不過將其劃分為5個階段;控制邏輯設計則和單周期處理器一樣。不過流水線處理器還需要增加額外的硬件模塊來解決多條指令同時執(zhí)行引起的沖突。

?

(第七章的總結暫時告一段落。重點是回顧了單周期處理器的設計和多周期處理器、流水線處理器的設計思路。關于多周期處理器的詳細思路,以及流水線處理器中用到的沖突解決方案,我們再娓娓道來。要先去學其他的內容了,主攻SSD和PCIe)。


第七章-微體系結構(2):處理器設計概述的評論 (共 條)

分享到微博請遵守國家法律
莱阳市| 日喀则市| 温泉县| 碌曲县| 特克斯县| 嵊州市| 临澧县| 武清区| 平昌县| 西贡区| 高阳县| 凤冈县| 齐河县| 石棉县| 连江县| 时尚| 靖州| 汉源县| 清丰县| 伊金霍洛旗| 崇州市| 普陀区| 黄石市| 永平县| 巫溪县| 乐平市| 富裕县| 乌恰县| 胶南市| 涞源县| 枣阳市| 林西县| 乌兰察布市| 葵青区| 大关县| 义马市| 钟祥市| 诸城市| 斗六市| 含山县| 留坝县|