1.計算機體系結構 - 五大部件
?- 馮 諾依曼 計算機的特點
1.計算機有五大部件組成
2.指令和數據以同等地位存儲于存儲器,可按照地址訪問
3.指令和數據用二進制表示
4.指令由操作碼和地址碼組成
5。存儲程序
6.以計算器為中心(輸入、輸出設備與存儲器之前的數據傳送通過計算器完成)
計算機體系結構 - 主存儲器
1.存儲單元:每個存儲單元存放一串二進制代碼
2.存儲字(word):存儲單元中二進制代碼的組合
3.存儲字長:存儲單元中二進制代碼的位數(拓展:指令字長:計算機接收指令的二進制長度,機器字長:計算機在一次整數運算中能處理的最大二進制位數)
4.存儲元:即存儲二進制的電子元件,每個存儲元可存儲 1 bit
5.MAR:地址寄存器(可以用地址寄存器的長度來計算出存儲單元的個數,例如:當MAR為 4 位時,那么存儲單元的個數就有 2*2*2*2 (也就是2的4次方)個存儲單元,)
6.MDR:數據寄存器(指的是每個存儲單元能存放的最大二進制位數,例如:MDR = 16 那么一個存儲單元最大就能存放 16 位二進制數)
易混淆:1個字節 =?1個Byte = 1B =?8bit = 8b
計算機體系結構 - CPU
1.運算器:用于實現算數運算(如:加減乘除)、邏輯運算(如與或非)
2.ACC:累加器,用于存放操作數,或運算結果
3.MQ:乘商寄存器,在乘、除運算時,用于存放操作數或運算結果
4.X:通用的操作數寄存器,用于存放操作數
5.ALU(很重要):算數邏輯單元,通過內部復雜的電路實現算數運算、邏輯運算
6.DR:數據緩存寄存器
7.PSW:狀態條件寄存器,用來保存指令運行標志(例如有些游戲打到一半關機了,下次打開的時候依舊可以接著上次的進度)
計算機體系結構 - CPU
1.CU:控制單元,分析指令,給出控制信號
2.IR:指令寄存器,存放當前執行的指令
3.PC:程序計數器,存放下一條指令地址,有自動加 1 的功能
4.AR:地址寄存器,保存當前CPU所訪問的內存單元地址
5.ID:指令譯碼器,對操作碼進行分析
6.完成一條指令的過程:取指令 -> 分析指令 -> 執行指令(之前說過:指令和數據以同等地位存儲在存儲器中,所以我們該如何區分此次取出來的指令還是數據呢?通過階段來區分,例如:在取指令階段那么從存儲器中取出來的二進制數就一定表示指令)
計算機體系結構 - Flynn分類
體系結構類型 | 結構???????? | 關鍵特性 | 代表 |
---|---|---|---|
單指令流單數據流SISD | 控制部分:一個 處理器:一個 主存模塊:一個 | ???????? | 單處理器系統 |
單指令流多數據流SIMD | 控制部分:一個 處理器:多個 主存模塊:多個 | 各處理器以異步的形式執行同一條指令 | 1.并行處理機 2.陳列處理機 3.超級向量處理機 |
多指令流單數據流MISD | 控制部分:多個 處理器:一個 主存模塊:多個 | 被證明不可能,至少以目前的技術無法實現,只是理論上存在 | 目前沒有,有文獻稱流水線計算機為此類 |
多指令流多數據流MIMD | 控制部分:多個 處理器:多個 主存模塊:多個 | 能夠實現作業、任務、指令等各級全面并行 | 多處理機系統 多計算機 |
Single:單一的
Multiple:倍數、多種多樣的
指令系統 - 指令
1.指令(又稱為機器指令):是指令計算機執行某種操作的命令,是計算機運行的最小功能單位;
2.一臺計算機的所有指令的集合構成該 計算機的指令系統,也稱為指令集;
指令系統 - 指令格式
1.一條指令就是機器語言的一個語句,他是一組有意義的二進制代碼;
2.一條指令通常要包括 操作碼字段 和 地址碼字段 兩部分;
重要考點:指令系統 - 尋址方式
指令系統 - 尋址方式(數據尋址)以下尋址方式從上至下 尋址效率依次降低 ->
1..立即尋址:此操作數作為指令的一部分直接寫在指令中,這中操作數成為立即數
2寄存器尋址:指令所要的操作數已存儲在某寄存器中,或把目標操作數存入寄存器
3.直接尋址:指令所要的操作數存放在內存中,在指令中直接給出該操作數的有效地址
4.寄存器間接尋址:操作數在存儲器中,操作數的有效地址用 SI 、DI、Bx 、BP 四個寄存器之一來指定
5.基址加變址尋址方式:操作數在寄存器中,其有效地址是一個基址寄存器( BX? 、?BP )和一個變址寄存器 ( SI 、DI ) 的內容之和
6.相對基址加變址尋址:操作數在寄存器中,其有效地址是一個基址寄存器(BX 、 BP)的值,一個變址寄存器 (SI 、 DI)的值和指令中的 8位/16位偏移量之和?
指令系統 - CISC 和 RISC
CISC(Complex) | RISC(Reduced) | |
---|---|---|
指令系統 | 復雜,龐大 | 簡單,精簡 |
指令數目 | 一般大于 200 條 | 一般小于 100 條 |
指令字長 | 不固定 | 定長 |
可訪存指令 | 不加限制 | 只有Load/Store指令 |
各種指令執行時間 | 相差較大? ? ? ?? | 絕大多數一個周期內完成 |
各種指令使用頻度 | 相差較大 | 都比較常用 |
通用寄存器數量 | 較少 | 多 |
控制方式 | 絕大多數為微程序控制 | 絕大多數為組合邏輯控制 |
指令流水線 | 可以通過一定方式實現 | 必須實現 |
指令系統 - 指令的流水處理
1.指令控制方式有 順序方式、重疊方式 和 流水方式三種
2.流水方式:是指 并行性或并發性 嵌入計算機系統里的一種形式,他把重復的順序處理過程分解為若干子過程,每個子過程能在專用的獨立模塊上有效的并發工作
3.在概念上," 流水 "可以看成是 "重疊" 的延伸;差別僅在于 " 一次重疊?" 只是把一條指令解釋分解為兩個子過程,而 " 流水 " 則是分解為更多的子過程。
指令系統 - 流水線的計算
例題:若指令流水線把一條指令分為 :取指令、分析指令、執行指令三部分,且三部分的時間分別是 -> 取指令:2ns? ?分析指令:2ns? ?執行指令:1ns ,那么流水線周期是多少?100條指令全部執行完畢需要的時間是多少?
1.流水線周期為執行時間最長的一段:上述中?取指令:2ns? ?分析指令:2ns? ?執行指令:1ns 三個發過程中執行時間最長的顯然是 2ns,所以流水線周期為 2ns
2.流水線計算公式為: 1條指令執行時間 +(指令條數 - 1)* 流水線周期 ;所以計算結果如下所示 ->?
100條指令執行完的時間為:2 + 2 + 1 +(100 -1)* 2 =? 203
那么如果不使用流水線處理的話100條指令執行完的時間就是:( 2 + 2 + 1 )*100 = 500
3.拓展:流水線的吞吐率(Though Put rate ,TP):是指在單位時間內流水線所完成的任務數量或輸出的結果數量;
4.計算流水線吞吐率的最基本的公式如下:TP = 指令條數 / 流水線執行時間
5.依照上面例題計算流水線吞吐率的話就是:100 /?203 ≈ 0.5
6.流水線開始工作后,需經過一定時間才能達到最大吞吐率,這就是 建立時間;若 m 個子過程所用時間一樣,均為 t ,則建立時間 T = m * t
7.完成同一批任務,不使用流水線所用的時間與使用流水線所用的時間之比成為 流水線的加速比 ,計算流水線加速比的基本公式如下:S = 不使用流水線執行時間 / 使用流水線執行時間
還是用上面例題的來計算 -> S = 500 / 203 ≈ 2.46