版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第一講第一講 單周期數據通路的設計單周期數據通路的設計第二講第二講 單周期控制器的設計單周期控制器的設計第三講第三講 多周期處理器的設計多周期處理器的設計第四講第四講 微程序控制器設計與異常處理微程序控制器設計與異常處理Ch 6: CPU - Datapath and Control中央處理器:數據通路和控制器中央處理器:數據通路和控制器南京大學南京大學袁春風袁春風第一講第一講 單周期數據通路的設計單周期數據通路的設計CPU的功能及其與計算機性能的關系的功能及其與計算機性能的關系數據通路的位置數據通路的位置單周期數據通路的設計單周期數據通路的設計 數據通路的功能和實現數據通路的功能和實現-操作
2、元件(組合邏輯部件)操作元件(組合邏輯部件)-狀態(tài)狀態(tài) / 存儲元件(時序邏輯部件)存儲元件(時序邏輯部件) 數據通路的定時數據通路的定時選擇選擇MIPS指令集的一個子集作為指令集的一個子集作為CPU的實現目標的實現目標 下條指令地址計算與取指令部件下條指令地址計算與取指令部件 R型指令的數據通路型指令的數據通路 訪存指令的數據通路訪存指令的數據通路 立即數運算指令的數據通路立即數運算指令的數據通路 分支和跳轉指令的數據通路分支和跳轉指令的數據通路綜合所有指令的數據通路綜合所有指令的數據通路主主 要要 內內 容容CPU功能及其與計算機性能的關系功能及其與計算機性能的關系CPU執(zhí)行指令的過程(回
3、顧)執(zhí)行指令的過程(回顧)-取指令取指令-PC+“1”送送PC-指令譯碼指令譯碼-進行主存地址運算進行主存地址運算-取操作數取操作數-進行算術進行算術 / 邏輯運算邏輯運算-存結果存結果-以上每步都需檢測以上每步都需檢測“異常異?!?若有異常,則自動切換到異常處理程序若有異常,則自動切換到異常處理程序-檢測是否有檢測是否有“中斷中斷”請求,有則轉中斷處理請求,有則轉中斷處理CPU的實現與計算機性能的關系的實現與計算機性能的關系 計算機性能計算機性能(程序執(zhí)行快慢程序執(zhí)行快慢)由三個關鍵因素決定(回顧)由三個關鍵因素決定(回顧)-指令數目、指令數目、CPI、時鐘周期、時鐘周期 指令數目由編譯器和
4、指令數目由編譯器和ISA決定決定 時鐘周期和時鐘周期和CPI由由CPU的實現的實現以及其他因素以及其他因素來決定來決定因此,因此,CPU的設計與實現非常重要!它直接影響計算機的性能。的設計與實現非常重要!它直接影響計算機的性能。指令執(zhí)行過程問題:問題:“取指令取指令”一定在最開始做嗎?一定在最開始做嗎?“PC+1”一定在譯碼之前做嗎?一定在譯碼之前做嗎?“譯碼譯碼”須在指令執(zhí)行前做嗎?須在指令執(zhí)行前做嗎?你能說出哪幾種你能說出哪幾種“異常異?!笔录渴录??“異常異常”和和“中斷中斷”的差別是什的差別是什么?么?異常是在異常是在CPU內部發(fā)生的內部發(fā)生的中斷是由外部事件引起的中斷是由外部事件引起
5、的取指階段譯碼和執(zhí)行階段組成指令功能的四種基本操作組成指令功能的四種基本操作每條指令的功能總是由以下四種基本操作來實現:每條指令的功能總是由以下四種基本操作來實現:讀取某一主存單元的內容,并將其裝入某個寄存器讀取某一主存單元的內容,并將其裝入某個寄存器(取指,(取指, 取數)取數)把一個數據從某個寄存器存入給定的主存單元中把一個數據從某個寄存器存入給定的主存單元中(存結果)(存結果)把一個數據從某個寄存器送到另一個寄存器或者把一個數據從某個寄存器送到另一個寄存器或者ALU(取數,存結果)(取數,存結果)進行算術或邏輯運算進行算術或邏輯運算(PC+1,計算地址,運算),計算地址,運算)操作功能可
6、形式化描述操作功能可形式化描述描述語言稱為寄存器傳送語言描述語言稱為寄存器傳送語言RTL (Register Transfer Language)本章所用的本章所用的RTL規(guī)定如下:規(guī)定如下:(1)用)用Rr表示寄存器表示寄存器r的內容;的內容;(2)用)用Maddr表示主存單元表示主存單元addr的內容;的內容;(3)傳送方向用)傳送方向用“”表示,傳送源在右,傳送目的在左;表示,傳送源在右,傳送目的在左;(4)程序計數器)程序計數器PC直接用直接用PC表示其內容;表示其內容;(5)用)用OPdata表示對數據表示對數據data進行進行OP操作。操作。CPU基本組成原理圖基本組成原理圖執(zhí)行部
7、件執(zhí)行部件控制部件控制部件CPU 由由 執(zhí)行部件執(zhí)行部件 和和 控制部件控制部件組成組成CPU 包含包含 數據通路數據通路(執(zhí)行部件執(zhí)行部件) 和和 控制器(控制部件)控制器(控制部件)控制器控制器 由由 指令譯碼器指令譯碼器 和和 控制信控制信號形成部件號形成部件 組成組成指令寄存器指令寄存器-IR程序計數器程序計數器-PC數據通路的位置數據通路的位置計算機的五大組成部分:計算機的五大組成部分:什么是數據通路(什么是數據通路(DataPath)? 指令執(zhí)行過程中,數據所經過的路徑,包括路徑中的部件。它是指令執(zhí)行過程中,數據所經過的路徑,包括路徑中的部件。它是指令指令的執(zhí)行部件的執(zhí)行部件??刂?/p>
8、器(控制器(Control)的功能是什么?)的功能是什么? 對指令進行譯碼,生成指令對應的控制信號,控制數據通路的動作。對指令進行譯碼,生成指令對應的控制信號,控制數據通路的動作。能對執(zhí)行部件發(fā)出控制信號,是能對執(zhí)行部件發(fā)出控制信號,是指令的控制部件指令的控制部件。ControlMemoryCPUInputOutputDatapathDatapath數據通路的基本結構數據通路的基本結構數據通路由兩類元件組成數據通路由兩類元件組成 組合邏輯元件(也稱操作元件)組合邏輯元件(也稱操作元件) 時序邏輯元件(也稱狀態(tài)元件,存儲元件)時序邏輯元件(也稱狀態(tài)元件,存儲元件)元件間的連接方式元件間的連接方式
9、 總線連接方式總線連接方式 分散連接方式分散連接方式數據通路如何構成?數據通路如何構成? 由由“操作元件操作元件”和和“存儲元件存儲元件”通過總線方式或分散方式連接而通過總線方式或分散方式連接而成成數據通路的功能是什么?數據通路的功能是什么? 進行數據存儲、處理、傳送進行數據存儲、處理、傳送因此,數據通路是由因此,數據通路是由操作元件操作元件和和存儲元件存儲元件通過總線方式或通過總線方式或分散方式連接而成的進行數據存儲、處理、傳送的路徑。分散方式連接而成的進行數據存儲、處理、傳送的路徑。 操作元件:組合邏輯電路操作元件:組合邏輯電路加法器加法器(Adder)多路選擇器多路選擇器 (MUX)算邏
10、部件算邏部件(ALU)32AB32Y32SelectMUX3232AB32ResultZeroOPALU3232AB32SumCarryAdderCarryIn3Decoderout0out1out7out2譯碼器譯碼器(Decoder)何時要用到何時要用到adder, ALU, MUX or Decoder?控制信號控制信號組合邏輯元件的特點:組合邏輯元件的特點:其輸出只取決于當前的輸入。即:若其輸出只取決于當前的輸入。即:若輸入一樣,則其輸出也一樣輸入一樣,則其輸出也一樣定時:所有輸入到達后,經過一定的定時:所有輸入到達后,經過一定的邏輯門延時,輸出端改變,并保持到邏輯門延時,輸出端改變,
11、并保持到下次改變,不需要時鐘信號來定時下次改變,不需要時鐘信號來定時加法器需要什加法器需要什么控制信號么控制信號?狀態(tài)元件:時序邏輯電路狀態(tài)元件:時序邏輯電路狀態(tài)(存儲)元件的特點:狀態(tài)(存儲)元件的特點: 具有存儲功能,在具有存儲功能,在時鐘控制下時鐘控制下輸入被寫到電路中,直到下個時鐘到達輸入被寫到電路中,直到下個時鐘到達 輸入端狀態(tài)由時鐘決定何時被寫入,輸出端狀態(tài)隨時可以讀出輸入端狀態(tài)由時鐘決定何時被寫入,輸出端狀態(tài)隨時可以讀出定時方式:規(guī)定信號何時寫入狀態(tài)元件或何時從狀態(tài)元件讀出定時方式:規(guī)定信號何時寫入狀態(tài)元件或何時從狀態(tài)元件讀出 邊沿觸發(fā)(邊沿觸發(fā)(edge-triggered)方
12、式:)方式:-狀態(tài)單元中的值只在時鐘邊沿改變。每個時鐘周期改變一次。狀態(tài)單元中的值只在時鐘邊沿改變。每個時鐘周期改變一次。上升沿(上升沿(rising edge) 觸發(fā):在時鐘正跳變時進行讀觸發(fā):在時鐘正跳變時進行讀/寫。寫。下降沿(下降沿(falling edge)觸發(fā):在時鐘負跳變時進行讀)觸發(fā):在時鐘負跳變時進行讀/寫。寫。最簡單的狀態(tài)單元(回顧:數字邏輯電路課程內容):最簡單的狀態(tài)單元(回顧:數字邏輯電路課程內容): D觸發(fā)器:一個時鐘輸入、一個狀態(tài)輸入、一個狀態(tài)輸出觸發(fā)器:一個時鐘輸入、一個狀態(tài)輸入、一個狀態(tài)輸出cycle timerising edgefalling edge存儲元
13、件中何時狀態(tài)被改變?存儲元件中何時狀態(tài)被改變?切記:狀態(tài)單元的輸入信息總是在一個時鐘邊沿到達后的切記:狀態(tài)單元的輸入信息總是在一個時鐘邊沿到達后的“Clk-to-Q”時才被寫入到單元中,此時的輸出才反映新的狀態(tài)值時才被寫入到單元中,此時的輸出才反映新的狀態(tài)值數據通路中的狀態(tài)元件有兩種:寄存器數據通路中的狀態(tài)元件有兩種:寄存器(組組) + 存儲器存儲器 ( Latch Prop - 鎖存延遲鎖存延遲 )Q總是在總是在clock-to-Q后跟著后跟著D變化變化這期間這期間D的變化不影響的變化不影響Q存儲元件存儲元件: 寄存器和寄存器組寄存器和寄存器組寄存器(寄存器(Register) 有一個寫使能
14、(有一個寫使能(Write Enable-WE)信號)信號 0: 時鐘邊沿到來時,輸出不變時鐘邊沿到來時,輸出不變 1: 時鐘邊沿到來時,輸出開始變?yōu)檩斎霑r鐘邊沿到來時,輸出開始變?yōu)檩斎?若每個時鐘邊沿都寫入,則不需若每個時鐘邊沿都寫入,則不需WE信號信號寄存器組(寄存器組(Register File) 兩個讀口(兩個讀口(組合邏輯操作組合邏輯操作):):busA和和busB分別由分別由RA和和RB給出地址。地址給出地址。地址RA或或RB有效后,經一個有效后,經一個“取數時間取數時間(AccessTime)”,busA和和busB有效。有效。 一個寫口(一個寫口(時序邏輯操作時序邏輯操作):)
15、:寫使能為寫使能為1的情況下,時鐘邊沿到來時,的情況下,時鐘邊沿到來時,busW傳來傳來的值開始被寫入的值開始被寫入RW指定的寄存器中。指定的寄存器中。ClkData InWrite EnableNNData OutClkbusWWrite Enable3232busA32busB555RW RA RB32 32-bitRegisters寄存器組的內部結構寄存器組的內部結構busWCD031MUXMXURegister 0Register 1Register 30Register 31Write EnableRW32-to-1DecoderRARBbusAbusB ClkCDCDCD每個寄存器
16、由每個寄存器由32個觸發(fā)器組成個觸發(fā)器組成;輸入數據來自輸入數據來自busW,讀出數據分別送,讀出數據分別送busA和和busB;WriteEnable信號控制是否寫入新值。信號控制是否寫入新值。Back to add理想存儲器(理想存儲器( idealized memory ) Data Out:32位讀出數據位讀出數據 Data In: 32位寫入數據位寫入數據 Address:讀寫公用一個讀寫公用一個32位地址位地址 讀操作(讀操作(組合邏輯操作組合邏輯操作):地址:地址Address有效后,經一個有效后,經一個“取數時間取數時間AccessTime”,Data Out上數據有效。上數據
17、有效。 寫操作(寫操作(時序邏輯操作時序邏輯操作) :寫使能為寫使能為1的情況下,時鐘的情況下,時鐘Clk邊沿到來時,邊沿到來時,Data In傳來的值開始被寫入傳來的值開始被寫入Address指定的指定的存儲單元中。存儲單元中。存儲元件存儲元件: 理想存儲器理想存儲器ClkData InWrite Enable3232DataOutAddress為簡化數據通路操作說明,把存儲器簡化為帶時鐘信號為簡化數據通路操作說明,把存儲器簡化為帶時鐘信號Clk的理想模型。的理想模型。數據通路與時序控制數據通路與時序控制同步系統(tǒng)同步系統(tǒng)(Synchronous system) 所有動作有專門時序信號來定時所
18、有動作有專門時序信號來定時 由時序信號規(guī)定何時發(fā)出什么動作由時序信號規(guī)定何時發(fā)出什么動作 例如,指令執(zhí)行過程每一步都有控制信號控制,由定時信號確例如,指令執(zhí)行過程每一步都有控制信號控制,由定時信號確定控制信號何時發(fā)出、作用時間多長定控制信號何時發(fā)出、作用時間多長什么是時序信號?什么是時序信號? 同步系統(tǒng)中用于進行同步控制的定時信號,如時鐘信號同步系統(tǒng)中用于進行同步控制的定時信號,如時鐘信號什么叫指令周期?什么叫指令周期? 取并執(zhí)行一條指令的時間取并執(zhí)行一條指令的時間 每條指令的指令周期肯定一樣嗎?每條指令的指令周期肯定一樣嗎?早期計算機的三級時序系統(tǒng)早期計算機的三級時序系統(tǒng) 機器周期機器周期
19、- 節(jié)拍節(jié)拍 - 脈沖脈沖 指令周期可分為取指令、讀操作數、執(zhí)行并寫結果等多個基本工指令周期可分為取指令、讀操作數、執(zhí)行并寫結果等多個基本工作周期,稱為機器周期。作周期,稱為機器周期。 機器周期有取指令、存儲器讀、存儲器寫、中斷響應等不同類型機器周期有取指令、存儲器讀、存儲器寫、中斷響應等不同類型數據通路與時序控制(早期計算機的三級時序)數據通路與時序控制(早期計算機的三級時序)現代計算機已不再采用三級時序系統(tǒng),機器周期的概念已逐漸消失。現代計算機已不再采用三級時序系統(tǒng),機器周期的概念已逐漸消失。整個數據通路中的定時信號就是時鐘,一個時鐘周期就是一個節(jié)拍。整個數據通路中的定時信號就是時鐘,一個
20、時鐘周期就是一個節(jié)拍。數據通路與時序控制數據通路與時序控制假定采用下降沿觸發(fā)(負跳變)方式(也可以是上升沿方式)假定采用下降沿觸發(fā)(負跳變)方式(也可以是上升沿方式) 所有狀態(tài)單元在下降沿寫入信息,經過所有狀態(tài)單元在下降沿寫入信息,經過Latch Prop (clk-to-Q) 后輸出有效后輸出有效 Cycle Time = Latch Prop + Longest Delay Path + Setup + Clock Skew約束條件:約束條件:(Latch Prop + Shortest Delay Path - Clock Skew) Hold Time Clk寄存器的輸入可變化Setu
21、pHold.Setup Hold數據通路由數據通路由 “ + 狀態(tài)元件狀態(tài)元件 + 操作元件操作元件( 組合電路組合電路) + 狀態(tài)元件狀態(tài)元件 + ” 組組成成只有狀態(tài)元件能存儲信息,所有操作元件都須從狀態(tài)單元接收輸入,并將輸出寫只有狀態(tài)元件能存儲信息,所有操作元件都須從狀態(tài)單元接收輸入,并將輸出寫入狀態(tài)單元中。其輸入為前一時鐘生成的數據,輸出為當前時鐘所用的數據入狀態(tài)單元中。其輸入為前一時鐘生成的數據,輸出為當前時鐘所用的數據現代計算機的時鐘周期現代計算機的時鐘周期ClkClk早期累加器型指令系統(tǒng)數據通路早期累加器型指令系統(tǒng)數據通路最簡單的數據通路結構最簡單的數據通路結構 取指令數據路徑為
22、:取指令數據路徑為: PCMAR, Read M, MMBRIBRIR取操作數、運算、送結果取操作數、運算、送結果的數據路徑為:的數據路徑為: 操作數地址操作數地址MAR, Read M, MMBRALU輸入端輸入端, ACALU輸入端輸入端, ALU操作操作, ALU結果結果AC, AC MBR, Write MIAS計算機(馮計算機(馮.諾依曼等設計)是現代計算機的原型諾依曼等設計)是現代計算機的原型AC:累加器:累加器MQ:乘商寄存器:乘商寄存器PC、IR、ALU、IBR、MBR:?:?分散連接方式!分散連接方式!單總線數據通路單總線數據通路 四種基本操作的時序四種基本操作的時序 在寄存
23、器之間傳送數據在寄存器之間傳送數據 R0out,Yin 完成算術、邏輯運算完成算術、邏輯運算R1out,YinR2out,Add,ZinZout,R3in 從主存取字從主存取字 R1out,MARinRead, WMFC (等待等待MFC)MDRout,R2in 寫字到主存寫字到主存R1out,MARinR2out,MDRin,Write, WMFCRR2MRR1 MRR1 RR2CPU訪存有兩種通信方式訪存有兩種通信方式早期:直接訪問早期:直接訪問MM, “異步異步”方式,用方式,用MFC應答信號;現在:先應答信號;現在:先Cache后后MM,“同步同步”方式,無需應答信號。方式,無需應答信
24、號。問題:時鐘周期的寬度如何確定?問題:時鐘周期的寬度如何確定? 以以“Riout,OP,Zin”所花時間來確定還所花時間來確定還是以是以 “Read/Write”所花時間來確定所花時間來確定? 以上四種操作各需要幾個時鐘周期以上四種操作各需要幾個時鐘周期?1Cycle?3Cycles?3Cycles?3Cycles?Read/Write時間更時間更長,故以此為準!長,故以此為準!OP: Add、Sub、And、Or 等等通通用用寄寄存存器器總線連接總線連接方式!方式!內總線內總線三總線數據通路三總線數據通路單總線中一個時鐘內只允許傳一個數據,單總線中一個時鐘內只允許傳一個數據,因而指令執(zhí)行效
25、率很低因而指令執(zhí)行效率很低可采用多總線方式,同時在多個總線上傳可采用多總線方式,同時在多個總線上傳送不同數據,提高效率送不同數據,提高效率例如:三總線數據通路例如:三總線數據通路 總線總線A、B分別傳送兩個源操作數,總分別傳送兩個源操作數,總線線C傳送結果傳送結果 單總線中的暫存器單總線中的暫存器Y和和Z在此可取消,在此可取消,Why? 采用雙口通用寄存器組采用雙口通用寄存器組 如何實現:如何實現: RR3 RR1 op RR2R1outA,R2outB,op,R3inC只要一個時鐘周期(節(jié)拍)即可!只要一個時鐘周期(節(jié)拍)即可!目前大都采用流水線方式執(zhí)行指令,單總線或三目前大都采用流水線方式
26、執(zhí)行指令,單總線或三總線的總線式數據通路很難實現指令流水執(zhí)行??偩€的總線式數據通路很難實現指令流水執(zhí)行。 ZY以下以MIPS指令系統(tǒng)為例介紹非總線式CPU的設計。三個總線各自傳不同數據,三個總線各自傳不同數據,不會發(fā)生沖突,故無需不會發(fā)生沖突,故無需Y和和Z通用寄存器組通用寄存器組復習:復習:MIPS的三種指令類型的三種指令類型ADD and SUBSTRACT add rd, rs, rt sub rd, rs, rtOR Immediate: ori rt, rs, imm16LOAD and STORE lw rt, rs, imm16 sw rt, rs, imm16BRANCH: b
27、eq rs, rt, imm16JUMP: j targetoptarget address026316 bits26 bitsoprsrtrdshamtfunc0611162126316 bits6 bits5 bits5 bits5 bits5 bitsoprsrtimmediate0162126316 bits16 bits5 bits5 bits這些指令具有代表性!這些指令具有代表性!有算術運算、邏輯運算;有有算術運算、邏輯運算;有RR型、型、RI型;有型;有訪存指令;有條件轉移、無條件轉移。訪存指令;有條件轉移、無條件轉移。本講目標:實現以上本講目標:實現以上7條指令對應的數據通路!
28、條指令對應的數據通路!教材中實現了教材中實現了11條指令,可將條指令,可將7條指令和條指令和11條指條指令的數據通路進行對比,以深入理解設計原理。令的數據通路進行對比,以深入理解設計原理。大家記得是哪三種類型?大家記得是哪三種類型?R-Type、I-Type、J-Type設計處理器的步驟設計處理器的步驟第一步:分析每條指令的功能,并用第一步:分析每條指令的功能,并用RTL(Register Transfer Language) 來表示。來表示。第二步:根據指令的功能給出所需的元件,并考慮如何將他們互連。第二步:根據指令的功能給出所需的元件,并考慮如何將他們互連。第三步:確定每個元件所需控制信號
29、的取值。第三步:確定每個元件所需控制信號的取值。第四步:匯總所有指令所涉及到的控制信號,生成一張反映指令與控制信第四步:匯總所有指令所涉及到的控制信號,生成一張反映指令與控制信 號之間關系的表。號之間關系的表。第五步:根據表得到每個控制信號的邏輯表達式,據此設計控制器電路。第五步:根據表得到每個控制信號的邏輯表達式,據此設計控制器電路。u 處理器設計涉及到處理器設計涉及到數據通路的設計數據通路的設計和和控制器的設計控制器的設計u 數據通路中有兩種元件數據通路中有兩種元件 操作元件操作元件:由組合邏輯電路實現:由組合邏輯電路實現 存儲(狀態(tài))元件存儲(狀態(tài))元件:由時序邏輯電路實現:由時序邏輯電
30、路實現ISA確定后,進行處理器設計的大致步驟確定后,進行處理器設計的大致步驟RTL: The ADD Instruction(加法指令)(加法指令)add rd, rs, rt MPC從從PC所指的內存單元中取指令所指的內存單元中取指令 Rrd Rrs + Rrt 從從rs、rt 所指的寄存器中取數后所指的寄存器中取數后 相加。若結果不溢出,則將結果送相加。若結果不溢出,則將結果送rd 所所 指的寄存器中;若結果溢出,則不送結指的寄存器中;若結果溢出,則不送結 果,并轉到果,并轉到“溢出處理程序溢出處理程序”執(zhí)行。執(zhí)行。 PC PC + 4 PC加加4,使,使PC指向下一條指令指向下一條指令o
31、prsrtrdshamtfunc0611162126316 bits6 bits5 bits5 bits5 bits5 bitsRTL: The Load Instruction(裝入指令)(裝入指令)lwrt, rs, imm16 MPC (同加法指令同加法指令) Addr Rrs + SignExt(imm16) 計算數據地址計算數據地址 (立即數要進行符號擴展立即數要進行符號擴展) Rrt MAddr 從存儲器中取出數據,裝入到寄存器中從存儲器中取出數據,裝入到寄存器中 PC PC + 4 (同加法指令同加法指令)與與R-type加法指令相比,更復雜!加法指令相比,更復雜!oprsrti
32、mm160162126316 bits16 bits5 bits5 bits取指令部件取指令部件(Instruction Fetch Unit) 每條指令都有的公共操作:每條指令都有的公共操作: 取指令取指令: MPC 更新更新PC:PC PC + 4 轉移(轉移(Branch and Jump)時)時,PC內容再次被更新為內容再次被更新為 “轉移目標地址轉移目標地址”32Instruction WordAddressInstructionMemoryPCClkNext AddrLogic順序:先取指令,再改順序:先取指令,再改PC的值的值(具體實現時,可以并行)(具體實現時,可以并行) 絕不
33、能先改絕不能先改PC的值,再取指令的值,再取指令下地址邏輯下地址邏輯取指后,各指令功能不同,數取指后,各指令功能不同,數據通路中信息流動過程也不同據通路中信息流動過程也不同下面分別對每條指令進行相應下面分別對每條指令進行相應數據通路的設計數據通路的設計取指令部件取指令部件加法和減法指令加法和減法指令(R-type類型)類型)實現目標(實現目標(7條指令):條指令):ADD and subtract add rd, rs, rt sub rd, rs, rtOR Immediate: ori rt, rs, imm16LOAD and STORE lw rt, rs, imm16 sw rt,
34、rs, imm16BRANCH: beq rs, rt, imm16JUMP: j target首先考慮首先考慮add和和sub指令(指令(R-Type指令的代表)指令的代表)oprsrtrdshamtfunc0611162126316 bits6 bits5 bits5 bits5 bits5 bitsoprsrtimmediate0162126316 bits16 bits5 bits5 bitsoptarget address026316 bits26 bitsRR(R-type)型指令的數據通路)型指令的數據通路功能:功能:Rrd Rrs op Rrt,如:,如:add rd, rs,
35、 rt32ResultALUctrClkbusWRegWr3232busA32busB555Rw Ra Rb32 32-bitRegistersrsrtrdALU不考慮公共操作,僅不考慮公共操作,僅R-Type指令執(zhí)行階段的數據通路如下:指令執(zhí)行階段的數據通路如下:ALUctr,RegWr: 指令譯碼后產生的控制信號指令譯碼后產生的控制信號Ra, Rb, Rw 分別對應指令的分別對應指令的rs, rt, rd“add rd, rs, rt”控制信號為控制信號為?ALUctr=add,RegWr=1oprsrtrdshamtfunc0611162126316 bits6 bits5 bits5
36、bits5 bits5 bits溢出時,不寫結果并溢出時,不寫結果并需轉異常處理程序需轉異常處理程序溢出溢出寄存器組結構寄存器組結構帶立即數的邏輯指令(帶立即數的邏輯指令(ori指令)指令)實現目標(實現目標(7 7條指令)條指令): ADD and subtractadd rd, rs, rtsub rd, rs, rt OR Immediate:ori rt, rs, imm16 LOAD and STORElw rt, rs, imm16sw rt, rs, imm16 BRANCH:beq rs, rt, imm16 JUMP:j target2. 考慮考慮ori 指令(指令(I-Ty
37、pe指令和邏輯指令和邏輯運算指令的代表)運算指令的代表)oprsrtrdshamtfunc0611162126316 bits6 bits5 bits5 bits5 bits5 bitsoprsrtimmediate0162126316 bits16 bits5 bits5 bitsoptarget address026316 bits26 bitsRTL: The OR Immediate Instructionorirt, rs, imm16 MPC取指令(公共操作,取指部件完成)取指令(公共操作,取指部件完成) Rrt Rrs or ZeroExt(imm16) 立即數零擴展,并與立即數
38、零擴展,并與rs內容做內容做“或或”運算運算 PC PC + 4 計算下地址(公共操作,取指部件完成)計算下地址(公共操作,取指部件完成)imm16016153116 bits16 bits0000 0000 0000 0000零擴展零擴展 ZeroExt(imm16)思考:應在前面數據通路上加哪些元件和連線?用何控制信號?思考:應在前面數據通路上加哪些元件和連線?用何控制信號?邏輯運算,立即數為邏輯數邏輯運算,立即數為邏輯數oprsrtimm160162126316 bits16 bits5 bits5 bits帶立即數的邏輯指令的數據通路帶立即數的邏輯指令的數據通路Rrt Rrs op Z
39、eroExtimm16 Example: ori rt, rs, imm1632ResultALUctrClkbusWRegWr3232busA32busB555Rw Ra Rb32 32-bitRegistersRsDont Care(Rt)ALUR-Type類型的結果寫入類型的結果寫入RdR-Type的操作的操作數來自數來自busB應加蘭色部分,為什么?應加蘭色部分,為什么?Ori指令的控制信號:指令的控制信號:RegDst=?;?;RegWr=?;?;ALUctr=?;?;ALUSrc=?Ori指令的控制信號:指令的控制信號:RegDst=1;RegWr=1;ALUSrc=1;ALUct
40、r=orRtRdRegDstMux01ZeroExtMux1632imm16ALUSrc01oprsrtimm160162126316 bits16 bits5 bits5 bits訪存指令中的數據裝入指令訪存指令中的數據裝入指令 (lw)實現目標(實現目標(7 7條指令):條指令): ADD and subtractadd rd, rs, rtsub rd, rs, rt OR Immediate:ori rt, rs, imm16 LOAD and STORElw rt, rs, imm16sw rt, rs, imm16 BRANCH:beq rs, rt, imm16 JUMP:j t
41、arget3. 考慮考慮lw 指令(訪存指令的代表)指令(訪存指令的代表)oprsrtrdshamtfunc0611162126316 bits6 bits5 bits5 bits5 bits5 bitsoprsrtimmediate0162126316 bits16 bits5 bits5 bitsoptarget address026316 bits26 bitsRTL: The Load Instructionlwrt, rs, imm16 MPC 取指令(公共操作,取指部件完成)取指令(公共操作,取指部件完成) Addr Rrs + SignExt(imm16) 計算存儲單元地址計算存
42、儲單元地址 (符號擴展!符號擴展!) Rrt M Addr 裝入數據到寄存器裝入數據到寄存器rt中中 PC PC + 4 計算下地址(公共操作,取指部件完成)計算下地址(公共操作,取指部件完成)immediate016153116 bits16 bits0000 0000 00000 000000161531immediate16 bits16 bits 1111 1111 1111 11111符號擴展符號擴展( 為什么不是零擴展為什么不是零擴展? ) :思考:應在原數據通路上加哪些元件和連線?用何控制信號?思考:應在原數據通路上加哪些元件和連線?用何控制信號?立即數用補碼表示立即數用補碼表示
43、oprsrtimmediate0162126316 bits16 bits5 bits5 bits裝入裝入(lw)指令的數據通路指令的數據通路Rrt M Rrs + SignExtimm16 lw rt, rs, imm1632ALUctrClkbusWRegWr3232busA32busB555Rw Ra Rb32 32-bitRegistersRsRtDont Care(Rt)RdRegDstMuxMux3216imm16ALUSrcALU加蘭色部分。為什么?加蘭色部分。為什么?控制信號控制信號RegDst, RegWr, ALUctr, ExtOp, ALUSrc, MemWr, Mem
44、toReg 各取何值?各取何值?01 ExtExtOpMuxMemtoRegClkData InWrEn32 AdrDataMemory32MemWr01RegDst=1, RegWr=1, ALUctr=addu, ExtOp=1, ALUSrc=1, MemWr=0, MemtoReg=10:零擴展,零擴展,1:符號擴展:符號擴展01oprsrtimm160162126316 bits16 bits5 bits5 bits訪存指令中的存數指令訪存指令中的存數指令 (sw)實現目標(實現目標(7條指令):條指令): ADD and subtractadd rd, rs, rtsub rd,
45、rs, rt OR Immediate:ori rt, rs, imm16 LOAD and STORElw rt, rs, imm16sw rt, rs, imm16 BRANCH:beq rs, rt, imm16 JUMP:j target4. 考慮考慮sw 指令(訪存指令的代表)指令(訪存指令的代表)oprsrtimmediate0162126316 bits16 bits5 bits5 bitsoprsrtrdshamtfunc0611162126316 bits6 bits5 bits5 bits5 bits5 bitsoptarget address026316 bits26 b
46、itsRTL: The Store Instructionswrt, rs, imm16 MPC 取指令(公共操作,取指部件完成)取指令(公共操作,取指部件完成) Addr Rrs + SignExt(imm16) 計算存儲單元地址計算存儲單元地址(符號擴展?。ǚ枖U展?。?MemAddr Rrt 寄存器寄存器rt中的內容存到內存單元中中的內容存到內存單元中 PC PC + 4 計算下地址(公共操作,取指部件完成)計算下地址(公共操作,取指部件完成) oprsrtimm160162126316 bits16 bits5 bits5 bits思考:應在原數據通路上加哪些元件和連線?用何控制信號
47、?思考:應在原數據通路上加哪些元件和連線?用何控制信號?存數存數(sw)指令的數據通路指令的數據通路M Rrs + SignExtimm16 Rrt Example: sw rt, rs, imm1632ALUctrClkbusWRegWr3232busA32busB555Rw Ra Rb32 32-bitRegistersRsRtRtRdRegDst ExtMuxMux3216imm16ALUSrcExtOpMuxMemtoRegClkData InWrEn32 AdrDataMemory32MemWrALU0101加蘭色部分。為什么?加蘭色部分。為什么?控制信號控制信號RegDst, Re
48、gWr, ALUctr, ExtOp, ALUSrc, MemWr, MemtoReg 各取何值?各取何值?RegDst=x, RegWr=0, ALUctr=addu, ExtOp=1, ALUSrc=1, MemWr=1, MemtoReg=x01oprsrtimm160162126316 bits16 bits5 bits5 bits分支(條件轉移)指令(相等轉移:分支(條件轉移)指令(相等轉移:beq)實現目標(實現目標(7條指令):條指令): ADD and subtractadd rd, rs, rtsub rd, rs, rt OR Immediate:ori rt, rs, i
49、mm16 LOAD and STORElw rt, rs, imm16sw rt, rs, imm16 BRANCH:beq rs, rt, imm16 JUMP:j target5. 考慮考慮beq指令(條件轉移指令的代表)指令(條件轉移指令的代表)oprsrtimmediate0162126316 bits16 bits5 bits5 bitsoprsrtrdshamtfunc0611162126316 bits6 bits5 bits5 bits5 bits5 bitsoptarget address026316 bits26 bitsRTL: The Branch Instructio
50、nbeqrs, rt, imm16 MPC取指令(公共操作,取指部件完成)取指令(公共操作,取指部件完成) Cond Rrs - Rrt做減法比較做減法比較rs和和rt中的內容中的內容 if (COND eq 0)計算下地址(根據比較結果,修改計算下地址(根據比較結果,修改PC)-PC PC + 4 + ( SignExt(imm16) x 4 ) else-PC PC + 4思考:立即數的含義是什么?是相對指令數還是相對單元數?思考:立即數的含義是什么?是相對指令數還是相對單元數? 應在原數據通路上加哪些元件和連線?用什么控制信號來控制?應在原數據通路上加哪些元件和連線?用什么控制信號來控制
51、?立即數用補碼表示立即數用補碼表示oprsrtimm160162126316 bits16 bits5 bits5 bits條件轉移指令的數據通路條件轉移指令的數據通路beq rs, rt, imm16We need to compare Rs and Rt !ALUctrClkbusWRegWr3232busA32busB555Rw Ra Rb32 32-bitRegistersRsRtRtRdRegDstExtMuxMux3216imm16ALUSrcExtOpALUPCClkNext AddrLogic16imm16BranchTo InstructionMemoryZero思考:下址邏
52、輯如何設計?思考:下址邏輯如何設計?RegDst, RegWr, ALUctr, ExtOp, ALUSrc, MemWr, MemtoReg, Branch 各取何值?各取何值?RegDst=x, RegWr=0, ALUctr=subu, ExtOp=x, ALUSrc=0, MemWr=0, MemtoReg=x, Branch=10101oprsrtimm160162126316 bits16 bits5 bits5 bits下地址計算邏輯的設計下地址計算邏輯的設計PC是一個是一個32位地址位地址:順序執(zhí)行時順序執(zhí)行時: PC = PC + 4轉移執(zhí)行時轉移執(zhí)行時: PC = PC +
53、 4 + SignExtImm16 X 4MIPS按字節(jié)編址,每條指令為按字節(jié)編址,每條指令為32位,占位,占4個字節(jié),故個字節(jié),故PC的值總是的值總是4的倍數,即后兩位為的倍數,即后兩位為00,因此,因此,PC只需要只需要30位即可。位即可。下地址計算邏輯簡化為:下地址計算邏輯簡化為: 順序執(zhí)行時順序執(zhí)行時: PC = PC + 1轉移執(zhí)行時轉移執(zhí)行時: PC = PC + 1 + SignExtImm16取指令時取指令時: 指令地址指令地址 = PC 串接串接 “00”PC采用采用30位后,其轉移地址計算邏輯變得更加簡單。位后,其轉移地址計算邏輯變得更加簡單。采用采用32位位PC時,可用左
54、移時,可用左移2位實現位實現“X4”操作,計算轉移地址用操作,計算轉移地址用2個加法器個加法器! 可以用更簡便的方式實現如下:可以用更簡便的方式實現如下:下址邏輯設計下址邏輯設計Using a 30-bit PC: 順序執(zhí)行時順序執(zhí)行時: PC = PC + 1 轉移執(zhí)行時轉移執(zhí)行時: PC = PC + 1 + SignExtImm16 取指令時取指令時: 指令地址指令地址 = PC concat “00”3030SignExt3016imm16Mux01Adder“1”PCClkAdder3030Branch ZeroAddrInstructionMemoryAddr“00”32Instr
55、uctionInstruction30先根據當前先根據當前PC取指令,取指令, 計算的下條指令地址在下一個時鐘到來后才能寫入計算的下條指令地址在下一個時鐘到來后才能寫入PC! 標志位標志位ZF,由,由ALU產生!產生!為什么這里沒有用為什么這里沒有用“ALU”而是用而是用“Adder”? “ALU”和和“Adder”有什么差別?有什么差別?無條件轉移指令無條件轉移指令實現目標(實現目標(7 7條指令):條指令): ADD and subtractadd rd, rs, rtsub rd, rs, rt OR Immediate:ori rt, rs, imm16 LOAD and STOREl
56、w rt, rs, imm16sw rt, rs, imm16 BRANCH:beq rs, rt, imm16 JUMP:j target6. 考慮考慮Jump指令(無條件轉移指令的代表)指令(無條件轉移指令的代表)oprsrtimmediate0162126316 bits16 bits5 bits5 bitsoprsrtrdshamtfunc0611162126316 bits6 bits5 bits5 bits5 bits5 bitsoptarget address026316 bits26 bitsRTL: The Jump Instructionjtarget MPC 取指令(公共
57、操作,取指部件完成)取指令(公共操作,取指部件完成) PC PC 串接串接 target 計算目標地址計算目標地址思考:應在原數據通路上加哪些元件思考:應在原數據通路上加哪些元件和連線?用什么控制信號來控制?和連線?用什么控制信號來控制?想一想:跳轉指令的轉移范圍有多大?想一想:跳轉指令的轉移范圍有多大?是當前指令后面的是當前指令后面的0 x000 00000 xFFF FFFC 處?處?不對!它不是相對尋址,而是絕對尋址不對!它不是相對尋址,而是絕對尋址FFFF FFFFF000 0000EFFF FFFFE000 0000AFFF FFFFA000 00000FFF FFFF0000 00
58、00j targetoptarget address026316 bits26 bitsInstruction Fetch Unit: 取指令部件取指令部件3030SignExt3016imm16Mux01Adder“1”PCClkAdder3030BranchZero“00”AddrInstructionMemoryAddr32jtarget PC PC concat targetInstructionInstructionimm16、Target、30264Mux10Target30JumpInstruc這是這是“取指部件取指部件”的完整設計的完整設計3 個輸入個輸入: jump, Bra
59、nch, Zero1個輸出個輸出: 指令字指令字PC的的改變在改變在下個下個Clk到到達后發(fā)達后發(fā)生!生!RegDst, RegWr, ALUctr, ExtOp, ALUSrc, MemWr, MemtoReg, Branch, Jump 各取何各取何值?值?RegDst=ExtOp=ALUSrc=MemtoReg=ALUctr=x, RegWr=0, MemWr=0, Branch=0, Jump=1The MIPS Subset(考察實現以下指令的數據通路考察實現以下指令的數據通路)ADD and subtract add rd, rs, rt sub rd, rs, rtOR Imme
60、diate: ori rt, rs, imm16LOAD and STORE lw rt, rs, imm16 sw rt, rs, imm16BRANCH: beq rs, rt, imm16JUMP: j target所有指令的數據通路都已設計好,合起來的數據通路是什么樣的?所有指令的數據通路都已設計好,合起來的數據通路是什么樣的?oprsrtimmediate0162126316 bits16 bits5 bits5 bitsoprsrtrdshamtfunc0611162126316 bits6 bits5 bits5 bits5 bits5 bitsoptarget address0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 活動策劃咨詢合同范例
- 新房裝修公司合同范例
- 單位廚師招聘合同范例
- 出資合作合同范例
- 合同范例欠款
- 置換合同屬于合同范例
- 美術臨時聘用老師合同范例
- 銅川職業(yè)技術學院《高等程數學》2023-2024學年第一學期期末試卷
- 同濟大學《視頻剪輯》2023-2024學年第一學期期末試卷
- 八年級上冊《臺階》說課稿
- 住宿服務投標方案(技術方案)
- 遼寧省沈陽市2022-2023學年六年級上學期語文期末試卷(含答案)
- 23J916-1:住宅排氣道(一)
- 四年級全冊《勞動》課程知識點匯總精排
- 小學語文二年級上冊第八單元說教材
- 教育學原理課后答案主編項賢明
- 幼兒園故事課件:《畫龍點睛》
- 小學科學五年級上冊期末測試質量分析
- 音樂與人生-西南交通大學中國大學mooc課后章節(jié)答案期末考試題庫2023年
- 電子科技公司安全生產管理制度
- 收款單位變更委托書
評論
0/150
提交評論