计算机组成原理知识体系
計算機組成原理知識體系
- 一、計算機系統概述
- (一)組成部分
- (二)馮·諾依曼結構
- (三)計算機發展時間節點
- (四)典型計算機的硬件組成
- (五)三種程序
- 二、計算機性能評價
- (一)評價指標
- (二)部分數值計算
- 三、數據的機器級表示
- (一)數值數據表示
- (二)非數值數據表示
- (三)數據的寬度、存儲排列、糾/檢錯
- 四、運算方法及部件
- (一)高級語言和機器指令中的運算
- (二)ALU(劃重點)
- (三) 定點數運算及其運算部件
- (四) 浮點數運算及其運算部件
- 五、指令系統
- 指令
- (二)指令類型和格式
- (三)數據類型
- (四)操作數的尋址方式
- (五)操作碼的編碼
- (六)指令系統
- 六、CPU
- (一)單周期數據通路的設計
- (二)單周期控制器的設計
- (三)微程序控制器設計與異常處理
- (四)多周期處理器
一、計算機系統概述
(一)組成部分
1.計算機硬件:CPU + MM + I/O
1)中央處理器(CPU,Central Processing Unit)是一塊超大規模的集成電路,是一臺計算機的運算核心(Core)和控制核心( Control Unit)。
2)MM是計算機硬件中的主存儲器,即Main Memory。
3)I/O輸入/輸出(Input/Output),分為IO設備和IO接口兩個部分。
2.計算機軟件:系統軟件+應用軟件
(二)馮·諾依曼結構
1.計算機有運算器、控制器、存儲器、輸入和輸出設備。
2. 各基本部件的功能是:
存儲器存放數據和指令,形式上兩者沒有區別,但計算機應
能區分數據還是指令;
控制器應能自動執行指令;
運算器應能進行加/減/乘/除四種算術運算和一些邏輯運算;
操作人員通過輸入、輸出設備和主機進行通信。
3. 內部以二進制表示指令和數據。每條指令由操作碼和地址碼兩
部分組成。操作碼指出操作類型,地址碼指出操作數的地址。
由一串指令組成程序。
4. 采用“存儲程序”工作方式。 將事先編好的程序和原始數據送
入主存中,然后啟動執行。計算機能自動完成逐條取出指令和
執行指令的任務。
(三)計算機發展時間節點
第一代:真空管(電子管Vacuum Tube )1946~57年
第二代:晶體管 1958~64年
第三代:SSI/MSI 1965~71年
第四代:LSI/VLSI/ULSI 1972~至今
(四)典型計算機的硬件組成
(五)三種程序
匯編程序(Assembler):匯編語言源程序→機器目標程序
編譯程序(Complier):高級語言源程序→匯編/機器目標程序
解釋程序(Interpreter ):將高級語言語句逐條翻譯成機器指令并立即執行,不生成目標文件。
二、計算機性能評價
(一)評價指標
兩大分類
Tasks per day, hour, sec, ns…
– 吞吐率(throughput)
– 帶寬(bandwidth )
Time to do the task
– 響應時間(response time)
– 執行時間、等待時間(execution time, latency)
各項指標
1.CPU執行時間:執行程序中每條指令的時間。
意義:
一般不考慮主存磁盤輸入輸出開銷,只考慮CPU的執行時間。
比較計算機的性能時,多用CPU執行時間來衡量。
2.CPU時間:指CPU花在程序執行上的時間。
包括2部分:
用戶CPU時間:運行用戶代碼的時間。
系統CPU時間:為了執行用戶程序而需要運行操作系統程序的時間。
3.CPI (Cycles Per Instruction):
CPI = 時鐘周期數 /指令 (每條指令單周期或多周期)
意義:
CPI 用來衡量以下各方面的綜合結果:
指令集、程序、計算機系統的設計
其他指標
1.MIPS
Million Instructions Per Second (定點指令執行速度)
2.MFLOPS
Million Floating-point Operations Per Second(浮點操作速度)
3.性能評價基準程序(Benchmarks)
? 基準測試程序是專門用來進行性能評價的一組程序
? 基準程序通過運行實際負載來反映計算機的性能
? 最好的基準程序是用戶實際使用的程序或典型的簡單程序
(二)部分數值計算
計算式
CPI = (CPU 時間×時鐘頻率) / 指令條數 = 總時鐘周期數 / 指令條數
CPU 執行時間 = CPU時鐘周期數 × 時鐘周期
= CPU時鐘周期數 / 時鐘頻率
= 指令條數 × CPI × 時鐘周期
三、數據的機器級表示
(一)數值數據表示
數值數據:無符號整數、帶符號整數、浮點數(實數)、十進制數
數值數據表示三要素:進位計數制(進制),定點浮點表示,編碼規則
定點數的表示
? 進位計數制
二、八、十六、十
? 定點數的二進制編碼
原碼
…
補碼
假定補碼有n位,則X的補碼為:
定點整數:[X]補= 2n + X (-2n≤X< 2n,mod 2n);
定點小數:[X]補= 2 + X (-1≤X<1,mod 2);
一個負數的補碼等于模減去該負數的絕對值。
便捷計算:
正數:符號位為0,數值部分不變?
負數:符號位為1,數值部分“各位取反,末位加1”
…
反碼
正數的反碼與原碼相同
負數的反碼符號不變,數值位取反
…
移碼
定義:將每一個補碼數值加上一個偏置常數得到移碼 。
作用:主要用來表示浮點數階碼。
? 定點整數的表示
- 無符號整數、帶符號整數
浮點數的規格化
? IEEE754浮點數標準
非規格化參照表格
浮點數計算注意問題
很大的數與很小的數進行運算時,小的數將會被抹掉。
(原因,浮點數計算第一步,階碼計算時,小數移位運算,全部變成0了)
十進制數表示
用ASCII碼或BCD碼表示。
(二)非數值數據表示
非數值數據:邏輯數(包括位串)、西文字符和漢字
邏輯數據
用一位表示 。
邏輯數據和數值數據在形式上并無差別,也是一串0/1序列,機器靠指令來別。
西文字符
拼音文字,用有限幾個字母可拼寫出所有單詞;
只對有限個字母和數學符號、標點符號等輔助字符編碼;
所有字符總數不超過256個,使用7(或8)個二進位可表示;
常用編碼為ASCII碼。
漢字
有以下幾種漢字代碼:
輸入碼:對漢字用按鍵進行編碼,用于輸入;
內碼:用于在系統內存儲、查找、傳送等處理;
變化過程:
碼表區位碼(加20H)—> GB2312國標碼(高位變1)—>內碼
解釋:
碼表由94行、94列組成,行號為區號,列號為位號,各占7位;
區號和位號各自加上32(20H),得到其“國標碼”;
國標碼中區號和位號各占7位,前面添一個0,構成一個字節;
為與ASCII碼區別,將國標碼的兩個字節的第一位置“1”得到漢字內碼。
字模點陣或輪廓描述: 描述漢字點陣或輪廓,用于顯示/打印。
(三)數據的寬度、存儲排列、糾/檢錯
比特(bit)是計算機中處理、存儲、傳輸信息的最小單位;
字節(Byte),也稱“位組”。
存儲器按字節編址;
字節是最小可尋址單位 (addressable unit )。
字長:定點運算數據通路的寬度。
字長等于CPU內部總線的寬度、運算器的位數、通用寄存器的寬度等。
字用來度量數據類型的寬度。
儲存
ISA設計時要考慮的兩個問題:
? 大小端問題
大端方式: MSB的地址是數的地址;
大端方式: MSB的地址是數的地址。
? 字的邊界對齊問題
按邊界對齊 (假定字的寬度為32位,按字節編址)
- 字地址:4的倍數(低兩位為0)
- 半字地址:2的倍數(低位為0)
- 字節地址:任意
不按邊界對齊
好處:節約空間;
壞處:可能會增加訪存次數。
糾錯、檢錯
元器件故障或噪音會使數據出現差錯。
措施:
(1) 通過電路、布線等方面提高的抗干擾能力;
(2) 進行數據檢錯和校正,發現并糾正錯誤。
例如:
增大碼距可提高檢錯糾錯能力。
碼距:
若干位代碼組成的一個字叫碼字(數據校驗中“碼字”指數據位和校驗位排列得到的代碼)
兩個碼字中不同位的個數叫它們的距離;
碼制中所有碼字間最小距離為碼距,即碼制的距離。
?
常用的數據校驗碼有:
奇偶校驗碼、海明校驗碼、循環冗余校驗碼。
? 奇偶校驗:適應于一字節長數據的校驗,如內存
? 海明校驗:各組內用奇偶校驗,用于內存儲器數據的校驗
? 循環冗余校驗:用在通信和外存中,適合于大批量數據校驗
四、運算方法及部件
(一)高級語言和機器指令中的運算
算術運算
整數算術運算、浮點數算術運算
按位運算
用途:
對位串實現“掩碼”(mask)操作或相應的其他處理
邏輯運算
與、或、非
與按位運算的差別
- 符號表示不同:& - && …
- 運算過程不同:按位 - 整體
- 結果類型不同:位串 - 邏輯值
移位運算
? 用途 - 提取部分信息
- 擴大或縮小數值的2、4、8…倍
? 操作 - 左移:x<<k; 右移: x>>k
- 由x的類型決定移位的類型
- 無符號數:邏輯移位(邏輯移位:空位補0;)
- 帶符號整數:算術移位(算術左移:低位補0;算術右移: 高位補符號。)
右移:低位移出,高位補符號,可能發生有效數據丟失。
位擴展和位截斷運算
? 用途 - 類型轉換時可能需要數據擴展或截斷
? 操作 - 無專門運算符,由類型轉換前后數據長短確定是擴展還是截斷
- 擴展:短轉長
無符號數:0擴展,前面補0
帶符號整數:符號擴展,前面補符 - 截斷:長轉短
強行將高位丟棄,故可能發生“溢出”
實現MIPS定點和浮點運算指令的思路:
先實現一個能進行基本算術運算(加/減)和基本邏輯運算的ALU;
再由ALU和移位器實現乘、除、浮點運算器。
(二)ALU(劃重點)
話不多說,先上圖:
算術邏輯單元(arithmetic and logic unit),簡稱ALU。
ALU可進行加/減算術運算和邏輯運算。其核心部件是加法器。
加法器
半加器;
全加器;
串行進位加法器;
并行進位加法器。
超前進位加法器(Carry Look-Ahead),簡稱CLA加法器。
CLA加法器由進位生成/傳遞部件、CLA部件和 求和部件 構成。
實現Si=Pi⊕Ci的電路稱為求和部件
局部(單級)CLA加法器
帶標志加法器
加法器需要增加邏輯門生成標志信息。
溢出標志OF= Cn⊕Cn-1
符號標志SF=Fn-1
零標志ZF
進位借位標志CF=Cout ⊕ Cin
ALU的核心部件是帶標志位加法器。
A、B為n位輸入端。ALUop操作控制端。下圖中可進行與、或、加運算。
(三) 定點數運算及其運算部件
無符號數的按位邏輯運算可用邏輯門實現;
邏輯移位可用移位器實現;
帶符號數的算術移位、無符號和帶符號數的位擴展和截斷也可用簡單電路實現。
加減公式
[A+B]補 = [A]補 + [B]補 ( mod 2n )
[A–B]補 = [A]補 + [–B]補 ( mod 2n )
[–B]補=[B]補取反+1
(取反時含符號位)
標志位作用
零標志ZF、符號標志SF、進/借位標志CF、溢出標志OF稱為條件標志。
條件標志在運算電路中產生,記錄到專門寄存器。稱為程序狀態字寄存器或標志寄存器。
零標志ZF=1當F=0;
有符號數的符號標志SF:SF=Fn-1
(無符號數的符號位沒有意義)
有符號數溢出標志OF:OF=Cn異或Cn-1
(不必關心無符號數溢出,模2n)
無符號數進位/借位標志CF:CF=Cout異或Cin
(不必關心有符號數進位/借位)
對加減運算電路認識
1.所有算術運算都基于加法器實現;
2.加法器不知道所算的是帶符號數還是無符號數;
3.加法器不判定對錯,總是取低n位作為結果,并生成標志信息。
原碼乘法
可用ALU和移位器來實現乘法。
手工乘法的特點:
① 每步計算:X×yi,若yi = 0,則得0;若yi = 1,則得X
② 把①求得的各項結果X× yi 逐次左移,表示為X× yi×2-i
③ 對②中結果求和,即 (X× yi×2-i)求和 即為兩數的乘積
?
計算機稍作改進:
① 每次得X×yi后,與前面的結果累加得到Pi,稱之為部分積,減少了保存各次相乘結果的開銷。
② 每次得X×yi后,不是左移與Pi相加,而將Pi右移后與X×yi相加。
因為加法運算始終對部分積中高n位進行,故用n位加法器可實現二個n位數相乘。
③ 對乘數中為“1”的位加并右移,對為“0”的位只右移,不加。
補碼乘法
校正法
…
布斯算法
…
快速乘法器
設計快速乘法部件的必要性 :
? 乘法運算耗時多
? 比例大,大約1/3是乘法運算
快速乘法器的實現(由特定功能的組合邏輯單元構成)
如:陣列乘法器
陣列乘法器是原碼乘去掉符號位,即為無符號數乘法。
除法運算
手算除法的基本要點
① 被除數與除數相減,夠減則上商為1;不夠減則上商為0。
② 每次得到的差為中間余數,將除數右移后與上次的中間余數比較。夠減則上商為1;不夠減則上商為0。
③ 重復執行②,直到商的位數足夠。
帶符號除法
原碼除法:
恢復余數法;
不恢復余數法。
補碼除法:
補碼恢復余數法;
補碼不恢復余數法。
(四) 浮點數運算及其運算部件
浮點數運算
加減法要點
基本要點:
乘除法要點
基本要點
(1) 求階: Xe + Ye - 127 或者 Xe - Ye + 127
(2) 尾數相乘除: Xm */Ym (原碼乘/除)
(3) 兩數符號相同結果為正;相異為負;
(4) 結果的尾數高位為0需左規;最高位有進位需右規。
(5) 若尾數比規定的長,則需舍入。
(6) 若尾數是0,則階碼也置0,結果為0。
(7) 階碼溢出判斷
五、指令系統
指令
一條指令須包含的信息
操作碼:操作類型
(操作碼長度:固定/可變)
源操作數:一個或多個源操作數的地址
(操作數來源:指令本身/寄存器/主存/I/O端口)
目的操作數:結果存放何處
(結果地址:寄存器/主存/I/O端口)
下一條指令地址:
(正常隱含在PC中,跳轉時由指令給出)
(二)指令類型和格式
指令格式的基本原則
?1 應盡量短
?2 操作碼位數要足夠
3 有唯一的解釋
?4 指令長度應是字節的整數倍
?5 地址字段的個數應合理
?6 指令盡量規整
(三)數據類型
操作數的基本類型:
地址(指針)
無符號整數,用來確定主(虛)存地址
數值數據
定點數(整數):用二進制補碼表示
浮點數(實數):IEEE754
位、位串、字符和字符串
用來表示文本、聲音和圖像等
邏輯(布爾)數據
按位操作(0-假/1-真)
這些操作數都存放在寄存器或內存單元中
(四)操作數的尋址方式
– 立即 / 寄存器 / 寄存器間接 / 直接 / 間接 / 堆棧 / 偏移
顧名思義。
(五)操作碼的編碼
操作碼的編碼有兩種方式
– 定長操作碼
– 擴展操作碼
指令字也可定長或變長
–定長指令字 – 變長指令字
? 代碼長度更重要時:變長指令字、變長操作碼,存儲更緊湊;
? 性能更重要時:定長指令字、定長操作碼,訪問和譯碼更快速。
指令長度與操作碼長度是否可變沒有絕對關系。
操作碼定長不一定指令字定長;操作碼變長指令字一般變長。
(六)指令系統
指令設計風格
– 按操作數地址指定方式來分:
累加器型 、堆棧型 、通用寄存器型、load/store型
– 按指令的復雜度來分:
復雜指令集計算機CISC (Complex Instruction Set Computer)
精簡指令集計算機RISC (Reduced Instruction Set Computer)
指令系統舉例
MIPS特點概述:
? 所有指令都是32位;
? 有些指令有26位目標地址;有些只有16位。
? 所有動作在1個時鐘周期內完成;
? 所有運算都是32位的,沒有字節和半字的運算;
? MIPS指令固定4個字節,x86平均長度3個字節,所以一般二進制文件比x86大;
? 尋址方式:只有一種內存尋址方式,即基地址加16位偏移地址;
? 沒有棧指令PUSH和POP,對棧的操作都是統一的內存訪問方式。
? 子函數的返回地址不存到棧中,而是存到$31寄存器。
六、CPU
(一)單周期數據通路的設計
CPU的功能
CPU執行指令。
每條指令都由四種基本操作實現:
主 存 —>寄存器(取指, 取數)
寄存器 —>主存(存結果)
寄存器 —> 寄存器或者ALU(取數,存結果)
算術或邏輯運算(運算,計算地址,PC計算)
操作功能用==RTL(Register Transfer Language)==描述
RTL通常規定:
(1)用R[r]表示寄存器r的內容;
(2)用M[addr]表示主存單元addr的內容;
(3)傳送方向用“←”表示,傳送源在右,傳送目的在左;
(4)直接用PC表示其內容。
數據通路的位置
數據通路:
指令執行過程中數據經過的路徑,包括路徑中的部件,是執行部件。
(數據通路是由操作元件和存儲元件通過總線方式或分散方式連接而成的進行數據存儲、運算和傳送的路徑。)
數據通路組成:
? 組合邏輯元件(也稱操作元件)
? 時序邏輯元件(也稱狀態元件,存儲元件)
數據通路中的狀態元件有兩種:寄存器(組) + 存儲器
數據通路的功能:
? 進行數據傳送、運算、存儲
單周期數據通路的設計
單總線一個時鐘只傳一個數據,效率低。
多總線同時傳送數據,提高效率
選擇MIPS指令集的一個子集作為CPU的實現目標
MIPS的三種指令類型:
°R: ADD and SUB
? add rd, rs, rt
? sub rd, rs, rt
°I: OR Immediate:
? ori rt, rs, imm16
°I: LOAD and STORE
? lw rt, rs, imm16
? sw rt, rs, imm16
°I: BRANCH:
? beq rs, rt, imm16
°J: JUMP:
? j target
? 下條指令地址計算與取指令部件
30位PC,三路選擇:順序、Branch(結合標志Zero)、Jump
? R型指令的數據通路
ALU兩個操作數來自rs和rt,結果寫到rd
? 訪存指令的數據通路
符號擴展,數據在rt和主存單元中交換
? 立即數運算指令的數據通路
0擴展后的操作數送到ALU的一個輸入端
? 分支和跳轉指令的數據通路
綜合所有指令的數據通路
一個單周期數據路徑:
(二)單周期控制器的設計
控制器的功能:
指令譯碼,生成控制信號,控制數據通路的動作,是控制部件。
考察每條指令的執行過程和涉及到的控制信號的取值
? 公共操作:取指令和計算下址PC
? R-Type指令(add / sub)
? 立即數指令 (ori)
? 訪存指令(lw / sw)
? 分支指令 (beq)
? 跳轉指令 (j)
匯總各指令的控制信號取值
? 分兩類控制信號:直接送往數據通路 / 送往局部控制單元
分析ALU操作對應的控制信號與func字段之間的關系
設計ALU局部控制單元
局控的另一支路是R型指令,ALUctr由func決定,需要根據func寫出ALUctr的表達式
設計主控制單元
(三)微程序控制器設計與異常處理
**硬連線路控制器設計的優點和缺點 **
優點:速度快,適合于簡單或規整的指令系統,例如,MIPS指令集。
缺點:結構龐雜,實現困難;修改、維護不易;靈活性差。
**微程序設計控制器的基本思想 **
基本思想:
? 仿照程序設計,為每個指令編制微程序;
? 每個微程序由若干條微指令構成,各微指令包含若干條微命令
(一條微指令相當于一個狀態,一個微命令就是狀態中的控制信號)
? 執行時依次取出微指令,譯碼產生微命令(即控制信號)。
? 存儲器稱為控制存儲器(Control Storage),簡稱控存CS 。
特點:靈活,但速度慢。適用于復雜指令集。
**微程序、微指令、微操作和微命令的概念及其關系 **
微程序是一個微指令序列;
每條微指令是一個0/1序列,其中包含若干個微命令(即:控制信號);
微命令控制數據通路的執行
**微指令格式設計 **
? 微操作碼字段
- 水平微程序:不譯法、字段直接編譯法、字段間接編譯法
- 垂直微程序:垂直編譯法
? 下條微指令地址確定方式 - 增量法(計數器法)
- 斷定法(下址字段法)
下條微指令有四種情況:
? 取指微程序:每條指令一定先執行取指微程序。
? 第一條微指令:取指后轉到該指令的第一條微指令。
? 順序執行時:順序取下條微指令。
? 分支執行時:根據不同指令選擇下條微指令。
MIPS指令子集的微程序控制器設計
…
異常和中斷的處理
°程序執行被 “中斷” 的事件有兩類
? 內部“異常”:在CPU內部發生的意外事件或特殊事件
按發生原因分為硬故障中斷和程序性中斷兩類
硬故障中斷:如電源掉電、硬件線路故障等
程序性中斷:執行某條指令時發生的“例外(Exception)”,如溢出、缺頁、越界、非法指令、除數為0、堆棧溢出、訪問超時、斷點設置、單步、系統調用等
? 外部“中斷”:在CPU外部發生的特殊事件,外部中斷是一種I/O方式,
通過“中斷請求”信號向CPU請求處理。如實時鐘、控制臺、打印機缺紙、外設準備好、采樣計時到、DMA傳輸結束等。
內部“異常” 按處理方式分為故障、自陷和終止三類:
故障(fault) :執行指令引起的異常事件,如溢出、缺頁、堆棧溢出、訪問超時等。
自陷(Trap) :預先安排的事件,如單步跟蹤、系統調用(執行訪管指令)等。是一種自愿中斷。
終止系統(Abort) :硬故障事件,機器將“終止”,調出中斷服務程序來重啟操作系統。
外部中斷處理:
1.關中斷;
2.保護斷點和程序狀態;
3.識別異常事件。(軟件識別(MIPS采用)、硬件識別(中斷向量)(80x86采用))
(四)多周期處理器
特點:
? 時鐘周期短
? 不同指令所用周期數可以不同,如:
- Load: 5 cycles
- Jump: 3 cycles(前兩個都一樣)
? 在一條指令中功能部件可以重復使用。如: - Adder + ALU(多周期時只用一個ALU,在不同周期可重復使用)
總結
以上是生活随笔為你收集整理的计算机组成原理知识体系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle之数据处理2
- 下一篇: 移动通信原理,GSM/GPRS模块无线传