哈工大刘宏伟《计算机组成原理》课程框架总结
哈工大劉宏偉老師的《計算機組成原理》采用自頂向下方法,系統介紹了計算機各個基本部件的體系結構、邏輯實現、控制方式。(一定數電基礎是必要的,如果了解匯編更有助于理解部分內容)
B站鏈接計算機組成原理——哈工大劉宏偉(B站)
慕課鏈接(上)計算機組成原理——哈工大劉宏偉(慕課上)
慕課鏈接(下)計算機組成原理——哈工大劉宏偉(慕課下)
本文是筆者聽完全部課程后結合自己的理解,試圖用盡可能通俗的語言,描述課程的框架,摘附主要的構圖進行填充,非詳細的課程筆記。
(引入)首先看一下馮-諾依曼計算機的硬件組成(5大部分):
-
控制器(CU)
-
運算器(ALU)
-
存儲器
-
輸入設備
-
輸出設備
(圖中實線代表數據,虛線代表控制信號)
?
接下來進行兩步處理:
1、控制器CU + 運算器ALU = 中央處理器CPU
2、CPU、存儲器、I/O設備之間的通信載體抽象為系統總線
?
一、我們提煉出對計算機組成的抽象:
說明:內容重點介紹存儲器和I/O設備,其中一些DRAM和SRAM實現原理相關的內容需要有一定的數字電路基礎才能理解,本文未對其中細節展開描述。
其中各部件的布局:
(1)關于存儲器
存儲器的基本結構由三部分組成:
- 存儲體
- 地址寄存器MAR(反映存儲單元個數)
- 數據寄存器MDR(反映存儲字長)
根據作用不同,存儲器分為三類:
- 主存
- 緩存
- 輔存
原始的計算機只有CPU和主存結構,隨著計算機的發展,逐漸設計實線了如圖的多級層次化結構。
關于緩存:現代計算機運行速度的瓶頸是訪存速度,在CPU和主存之間加入訪存速度更快的緩存,可以提高CPU使用效率,整體提高計算機運算速度,當然,緩存的經濟成本高于主存,存儲實現方式不同(后續介紹)。
關于輔存:提高數據存儲量,迎合時代需要,缺點是CPU不能直接訪問緩存,需要嵌入主存加載訪存的過程,處理速度慢。
不同原理的存儲器根據特性的不同部署在存儲體系的不同層次中,但也不是嚴格一一對應的,根據不同規格的計算機有一定差別,一般情況下:
- CPU內部寄存器:靜態RAM
- 緩存(可以有多級緩存,高級緩存可設計在CPU內部):靜態RAM
- 主存:動態RAM(用于存儲數據)、ROM(用于存儲系統程序)
(2)關于I/O設備
首先看一下I/O設備連接到I/O總線的方式:
主要包括4條線路:
- 設備選擇線
- 命令線
- 狀態線
- 數據線
I/O設備的控制方式分為3種:
- 程序查詢方式(串行)
- 程序中斷方式(并行)
- DMA方式(并行)
我們主要了解程序中斷方式和DMA方式。
(1.1)程序中斷方式
程序中斷方式的I/O接口電路:
以CPU讀命令為例簡述響應過程:
(1.1.1)CPU發布“對某個地址的I/O設備的讀命令”
設備選擇電路從地址總線讀取地址,若地址就是本I/O接口的地址,發出SEL信號;
命令譯碼器同時接受到來自CPU的啟動命令和SEL信號,發出啟動命令,通過觸發器B啟動設備。
(1.1.2)I/O設備為執行讀命令做準備
將要讀的存儲單元的數據寫入緩存器DBR
寫入完畢后,觸發器B置0,觸發器D置1
(1.1.3)I/O接口對CPU發出中斷請求信號
若中斷屏蔽器MASK(由CPU控制)給出信號允許中斷請求,當接收到CPU發出的中斷查詢信號,通過總線向CPU發出中斷請求信號INTR
(1.1.4)I/O設備經由排隊器(這里使用鏈式排隊器)確定中斷響應的優先次序
由簡單的非門和與門電路搭建,圖中4個I/O設備優先級為1>2>3>4
若此時無更高優先級的I/O設備同時發出中斷請求信號,則允許該設備響應中斷
(1.1.5)I/O接口執行中斷響應
當接收到CPU發出的中斷響應INTA信號,且排隊器判優允許,則進入設備編碼器,形成中斷向量地址(指示是哪一個I/O設備在執行中斷響應)
(1.2)DMA方式
DMA方式的I/O接口電路:
其中:
- AR:地址寄存器
- WC:計數器(記錄傳輸數據量)
- BR:數據寄存器
- DAR:設備地址寄存器
以CPU讀命令為例簡述響應過程:
(1.3)程序中斷方式和DMA方式的比較
(3)關于總線
總線=控制總線+地址總線+控制總線,各個中心的功能顧名思義,很好理解,這部分內容已經夾雜在存儲器和I/O設備的接口電路中進行介紹。
?
二、對CPU部分進行細化(自頂向下):
(1)關于ALU
說明:這部分主要結合二進制數的無符號數、有符號數、原碼、補碼、反碼、移碼、定點表示、浮點表示相關的知識,介紹ALU實現算術移位、加減法運算、乘除法運算的具體過程和數字邏輯硬件實現方法,篇幅較大,難度也不太高,這里不作展開。
(2)關于寄存器
(2.1)用戶可見的寄存器
- 通用寄存器:存放操作數(如8086中的AX、BX)
- 數據寄存器:存放操作數
- 地址寄存器:存放地址
- 條件碼寄存器:存放條件嗎,可作為程序分支的依據(如溢出、進位等)
(2.2)用戶不可見的寄存器
- 控制寄存器:控制CPU操作
- 狀態寄存器:存放狀態字
(3)關于指令
(3.1)指令格式:操作碼 + 地址碼
操作類型:
- 數據傳送:MOVE STORE LOAD PUSH POP
- 算術邏輯運算:ADD SUB MUL DIV INC DEC CMP NEG AAA AAS AAM AAD AND OR NOT XOR TEST
- 移位操作
- 轉移:JMP JZ JO JC SKP
- 輸入輸出:IN OUT
尋址方式:
- 立即尋址:OP # A
- 直接尋址:EA = A
- 相對尋址:EA = (PC) + A
- 間接尋址:EA = (A)
- 寄存器尋址:EA = Ri
- 寄存器間接尋址:EA = (Ri)
- 基址尋址:EA = (BR) + A
- 變址尋址:EA = (IX) + A
- 堆棧尋址
- 隱含尋址:ADD 尋址特征 A
(3.2)指令周期
四種情況:
1、不需要訪存(如:NOP)
2、需要訪存(如:ADD)
執行周期長度根據執行內容決定(如:MUL)
3、需要間址尋址
4、帶有中斷指令
(3.2.1)取指周期
具體過程:
(3.2.2)間址周期
具體過程:
- MDR -> MAR -> 地址總線 -> 存儲器(內存地址)
- CU -> 控制總線 -> 存儲器(讀命令)
- 存儲器 -> 數據總線 -> MDR(下一條指令的實際地址)
(3.2.3)執行周期
情況根據具體的執行內容決定。
(3.2.4)中斷周期
具體過程:
- CU -> MAR -> 地址總線 -> 存儲器(欲保存斷點的內存地址)
- CU -> 控制總線 -> 存儲器(寫命令)
- PC -> MDR -> 數據總線 -> 存儲器(中斷之后要恢復的指令內容)
- CU -> PC(中斷程序的入口地址)
?
三、對CU部分的細化(自頂向下):
說明:這部分講述加入了時鐘,重點理解操作執行的時序問題。
(1)CU的功能
輸入信號:
輸出信號:
注:若干個時鐘周期組成一個機器周期(圖示4個時鐘周期組成一個機器周期),每個時鐘周期(也稱節拍)執行一條或一組可并行的指令。
(2)CU設計方法一:組合邏輯設計
完全使用硬件即可完成設計,運行速度快,不過結構較為龐雜,不易于調試和修改,適用于RISK(精簡指令集)。
對前文提到的一些簡單指令,根據各個指令的特性,設計每一個指令在一個機器周期內的各個節拍(T0-T2)上的操作(這部分內容較多,而有了之前章的基礎也很容易理解,不在這里具體展開)。
將各個指令在每個節拍下的操作內容,列出具體的時序關系表:
寫出邏輯關系表達式(以M(MAR) -> MDR操作為例):
根據邏輯表達式可以繪制出邏輯圖:
(3)CU設計方法二:微程序設計
核心思想和上述方法類似,實現方法利用軟件,用存儲邏輯替代數字電路邏輯,增加了譯碼等操作。這里僅附原理圖,不做展開。
基本控制單元框圖:
機器指令對應的微程序:
最終形成的微程序碼點:
總結
以上是生活随笔為你收集整理的哈工大刘宏伟《计算机组成原理》课程框架总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分享功能生成小程序二维码
- 下一篇: swift3 语法摘要