计算机组成原理笔记(王道考研) 第五章:中央处理器
內(nèi)容基于中國大學(xué)MOOC的2023考研計算機組成原理課程所做的筆記。
感謝LY,他幫我做了一部分筆記。由于聽的時間不一樣,第四章前的內(nèi)容看起來可能稍顯啰嗦,后面會記得簡略一些。
?
西電的計算機組織與體系結(jié)構(gòu)課講法和王道考研的課不太一樣,要應(yīng)付校內(nèi)考試建議還是跟著老師學(xué)比較好。以下是20年西電計科院車向泉老師這門課的錄播下載鏈接(請勿將錄像上傳到B站等網(wǎng)站!!):
鏈接:https://pan.baidu.com/s/1bFs3ajhy8ZcbHopS9izGsw
提取碼:fdez
期中考試占20分,一般只考前兩章內(nèi)容,期末考試占60分,一般前兩章內(nèi)容不考,考察內(nèi)容一般考前的復(fù)習(xí)課都會講清楚,請務(wù)必認(rèn)真聽復(fù)習(xí)課。
?
其他各章節(jié)的鏈接如下:
計算機組成原理筆記(王道考研) 第一章:計算機系統(tǒng)概述
計算機組成原理筆記(王道考研) 第二章:數(shù)據(jù)的表示和運算1
計算機組成原理筆記(王道考研) 第二章:數(shù)據(jù)的表示和運算2
計算機組成原理筆記(王道考研) 第三章:存儲系統(tǒng)
計算機組成原理筆記(王道考研) 第四章:指令系統(tǒng)
計算機組成原理筆記(王道考研) 第五章:中央處理器
計算機組成原理筆記(王道考研) 第六章:總線
計算機組成原理筆記(王道考研) 第七章:輸入輸出系統(tǒng)
其他各科筆記匯總
中央處理器
CPU的功能和基本結(jié)構(gòu)
CPU的功能
每一種操作信號對應(yīng)一種微操作
運算器和控制器的功能
現(xiàn)代計算機當(dāng)中每執(zhí)行完一條指令之后,CPU都會檢查是否有中斷信號需要處理
運算器的基本結(jié)構(gòu)
操作系統(tǒng)會給每一個當(dāng)前正在運行的程序管理一個堆棧,記錄當(dāng)前運行的程序相應(yīng)的一些數(shù)據(jù),比如一些局部變量的值,還有函數(shù)返回的地址等等。而SP指明了當(dāng)前運行進程的棧頂位置
?
?
雖然只畫了一條線,但事實上寄存器里各個比特的數(shù)據(jù)是通過很多根線并行地送到A、B端口
?
?
RioutRi_{out}Riout? —— 寄存器輸出控制信號,RiinRi_{in}Riin? —— 寄存器輸入控制信號
控制器的基本結(jié)構(gòu)
MDRinEMDR_{in}EMDRin?E —— 從外部的數(shù)據(jù)總線輸入數(shù)據(jù)的通路是否有效
MDRinMDR_{in}MDRin? —— 從CPU內(nèi)部總線輸入數(shù)據(jù)的通路是否有效
MDRoutMDR_{out}MDRout? —— 從MDR輸出數(shù)據(jù)到CPU內(nèi)部總線上
MDRoutEMDR_{out}EMDRout?E —— 當(dāng)這個信號有效時會從MDR當(dāng)中輸出數(shù)據(jù)到外部數(shù)據(jù)總線上
CPU的基本結(jié)構(gòu)
用戶可見 —— 程序員可以通過匯編語言改變某一些寄存器的值
?
指令執(zhí)行過程
指令周期
取指令會涉及訪問主存,訪存很慢。把指令取到IR之后,對指令的譯碼是CPU內(nèi)部的快速運算,比起訪存只需要花費很短的時間
主頻3.0GHz —— CPU每秒鐘能夠發(fā)出3.0G次的時鐘周期,會有個3.0G個節(jié)拍
取指令的操作需要分為幾個微操作執(zhí)行,每個微操作需要消耗一個時鐘周期
?
間址周期 —— 通過形式地址得到有效地址的一段時間,這段時間內(nèi)也需要進行一次訪存
除非此時CPU處于關(guān)中斷的狀態(tài),否則正常來說每一條指令執(zhí)行快結(jié)束時都會留一個周期用來檢查中斷信號檢查是否有中斷信號需要處理。比如鼠標(biāo)的單擊,鍵盤的輸入這些信號就需要在中斷周期進行處理
指令周期流程
?
控制單元通過設(shè)置幾個觸發(fā)器的值表示當(dāng)前處于哪個周期
指令周期的數(shù)據(jù)流-取指周期
1→R1\to R1→R —— 發(fā)出讀信號
指令周期的數(shù)據(jù)流-間址周期
也可以直接把MDR的數(shù)據(jù)送到MAR
指令周期的數(shù)據(jù)流-執(zhí)行周期
指令周期的數(shù)據(jù)流-中斷周期
在實際的操作系統(tǒng)當(dāng)中,堆棧區(qū)域通常地址空間從高到低,棧頂指針指向低地址部分
指令執(zhí)行方案
單指令周期規(guī)定所有指令的指令周期長度都相同,多指令周期允許不同指令的指令周期長度不相同
數(shù)據(jù)通路的功能 單總線結(jié)構(gòu)
單總線結(jié)果意味著同一時刻只能有一組部件通過總線進行數(shù)據(jù)傳送
指令周期的數(shù)據(jù)流
無論執(zhí)行什么指令,在指令執(zhí)行的整個過程當(dāng)中,數(shù)據(jù)流動只有寄存器與寄存器之間、 寄存器與主存之間、寄存器與ALU之間三種類型
數(shù)據(jù)通路
對于各種類型的寄存器無非就是兩種控制信號,第一種控制信號控制數(shù)據(jù)的輸入,第二種控制信號控制數(shù)據(jù)是否可以從寄存器流出。無論是數(shù)據(jù)的輸入信號還是數(shù)據(jù)的輸出信號都由控制器發(fā)出,這里提到的ACCin,ACCoutACC_{in},ACC_{out}ACCin?,ACCout?這些控制信號都和微操作信號發(fā)生器有對應(yīng)的連線,微操作信號發(fā)生器發(fā)出不一樣的控制信號就可以使得各個寄存器之間有數(shù)據(jù)的流動
?
數(shù)據(jù)通路-CPU內(nèi)部單總線方式
數(shù)據(jù)傳送過程中CU需要發(fā)出一些控制信號,通過發(fā)出不一樣的控制信號就可以讓微操作一步步執(zhí)行下去
每一個微操作的執(zhí)行至少要消耗一個時鐘周期,每一個時鐘周期內(nèi)CU都會發(fā)出一組相應(yīng)的控制信號來完成其中的某一個微操作,指令的執(zhí)行本質(zhì)上就是通過一個個微操作完成的
讓PCoutPC_{out}PCout?控制信號有效 —— 讓CU與PCoutPC_{out}PCout?相連接的這條線發(fā)出一個有效的電信號,PC的輸出線路就會被導(dǎo)通,數(shù)據(jù)會被送到總線上
?
地址信息準(zhǔn)備完成之后應(yīng)該撤銷剛才的兩個控制信號讓總線空閑
MDR和MAR與主存之間的數(shù)據(jù)通路會用專門的控制信號控制
要讀的地址存放在MAR當(dāng)中,通過地址總線傳送給主存,事實上這個地方也應(yīng)該有一個控制信號控制MAR的信息送到地址總線,只是課本里的例子沒有畫出這個控制信號
接下來主存根據(jù)MAR指示的地址讀出相應(yīng)的數(shù)據(jù)通過數(shù)據(jù)總線傳送到MDR當(dāng)中,現(xiàn)在想讓MDR的這個輸入通路暢通無阻,因此在這個輸入通路這也會有一個控制信號MDRinEMDR_{in}EMDRin?E控制這條通路是否接通
?
ALU的兩個輸入信號必須同時有效,而內(nèi)部總線同一時刻只能傳送一個輸入信號,因此只能先把其中一個加數(shù)放到Y(jié)里,Y與ALU之間有一個專用的數(shù)據(jù)通路,它們之間的數(shù)據(jù)傳送不會占用內(nèi)部總線,另一個被加數(shù)存放在ACC里,可以通過單總線直接輸送給ALU
運算結(jié)果會被輸出到Z當(dāng)中,當(dāng)輸出數(shù)據(jù)穩(wěn)定之后就可以撤銷剛才的兩個控制信號讓內(nèi)部總線恢復(fù)空閑
如果系統(tǒng)采用雙內(nèi)部總線或者多內(nèi)部總線,也可以不設(shè)置Y,通過另一個內(nèi)部總線直接把要進行運算的操作數(shù)送給ALU
例題
(R0) 表示要進行一次間接尋址,R0里面存放這個操作數(shù)在主存當(dāng)中的存儲地址
?
?
數(shù)據(jù)通路 專用數(shù)據(jù)通路
但凡兩個部件之間需要有數(shù)據(jù)的流動,都需要在這兩個部件之間有一個專門的數(shù)據(jù)通路,因此造價成本會比較高。但是由于各個部件之間的數(shù)據(jù)傳送通路都相互獨立,因此如果當(dāng)前執(zhí)行的指令中間的某幾個數(shù)據(jù)流通的過程可以并行執(zhí)行,就可以讓多個專用的數(shù)據(jù)通路同時工作,這樣就可以提升指令的執(zhí)行速度,比單總線結(jié)構(gòu)效率更高
每一個部件采用專用數(shù)據(jù)通路就意味著有可能會有多個輸入,到底要讓哪個輸入信號通過?可以連接一個多路選擇器或者給每一個輸入的線路都連一個三態(tài)門
專用數(shù)據(jù)通路方式
cic_ici?指的是控制信號,當(dāng)控制信號有效時就意味著它所控制的數(shù)據(jù)通路可以進行數(shù)據(jù)的流通
專用數(shù)據(jù)通路方式-取指周期
例題
ALU并不是寄存器,沒有數(shù)據(jù)存儲的功能。ALU想要使用的數(shù)據(jù)會被放到ACC當(dāng)中
所以這個問題雖然問的是運算器和主存之間存取的數(shù)據(jù)通路,但事實上它想問的是ACC和主存之間數(shù)據(jù)存取的數(shù)據(jù)通路
ALU支持把一個輸入的數(shù)據(jù)原封不動地傳出
硬布線控制器設(shè)計
內(nèi)容回顧
有的指令間接尋址可能會涉及多級間接尋址,間址周期會重復(fù)多次
微命令指的就是與這個微操作對應(yīng)的一些控制信號
每發(fā)出一條微命令就意味著會完成一個與之對應(yīng)的微操作
一個機器周期由若干個節(jié)拍組成,而每一個節(jié)拍里面可以并行地完成某一些互相不沖突的微操作
硬布線控制器
節(jié)拍發(fā)生器接收到時鐘部件發(fā)來的脈沖信號之后都會選擇讓其中的某一根輸出線導(dǎo)通,CU根據(jù)這些線哪根線輸入了高電平信號判斷當(dāng)前處于第幾個節(jié)拍
LDA —— 取數(shù)指令,把數(shù)據(jù)從主存取到ACC當(dāng)中
硬布線控制器的設(shè)計
分析每個階段的微操作序列
BAN X —— 當(dāng)ACC里面存放的數(shù)據(jù)為負(fù)時會轉(zhuǎn)移到X所指明的地址
A0A_0A0? —— ACC里面的符號位
安排微操作時序的原則
安排微操作時序-取指周期
安排微操作時序-間址周期
安排微操作時序-執(zhí)行周期
安排微操作時序-中斷周期
組合邏輯設(shè)計
?
?
后面這幾條指令可能會涉及訪存操作。如果包含的地址碼并沒有采用間接尋址也有可能直接進入執(zhí)行階段
有可能會進行多級間接尋址,所以只有當(dāng)IND ̄\overline{IND}IND標(biāo)志信息等于0時才意味著已經(jīng)完成了最后一級的間接尋址,此時才可以進入執(zhí)行周期
而如果IND ̄\overline{IND}IND標(biāo)志信息等于1就意味著還需要進行再下一級的間接尋址,因此接下來的一個機器周期同樣還會再重復(fù)一遍間接尋址
微操作信號綜合
畫出邏輯圖
硬布線控制器的設(shè)計
微程序控制器的基本原理
硬布線控制器的設(shè)計思路
微程序控制器的設(shè)計思路
微程序控制器的基本結(jié)構(gòu)
微程序控制器的工作原理
CM中微程序段的個數(shù)至少是n+1個
微指令的設(shè)計
微程序控制器的工作原理
微指令的格式
微指令的編碼方式
?
?
?
微指令的地址形成方式
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-SZaImRQh-1663675993178)( https://xdu-cslee-blog.oss-cn-hangzhou.aliyuncs.com/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BB%84%E6%88%90%E5%8E%9F%E7%90%86%E7%AC%94%E8%AE%B0%E5%9B%BE%E7%89%87/image-20220917151718281.png)]
例題-斷定方式
?
微程序控制單元的設(shè)計
微程序控制單元的設(shè)計
把問題簡化,假設(shè)這個指令系統(tǒng)當(dāng)中取指周期結(jié)束之后會直接進入到執(zhí)行周期
?
?
?
微程序設(shè)計分類
Intel的處理器基本采用動態(tài)微程序設(shè)計
硬布線與微程序的比較
?
?
?
微程序控制器回顧
?
指令流水線基本概念 性能指標(biāo)
指令流水的定義
指令不一定從主存取,也有可能從Cache取
操作數(shù)有可能存放在寄存器,Cache或者主存里
流水線的表示方法
流水線的性能指標(biāo)
一條指令的執(zhí)行被分為多個階段,每一個階段理論上對應(yīng)一個機器周期,而一個機器周期可能包含多個節(jié)拍。這里探討的是最理想的情況
指令流水線的影響因素和分類
機器周期的設(shè)置
IF —— Instruction Fetch
ID —— Instruction Decode
EX —— Execute
M —— Memory
WB —— Writeback
這種五段式的指令流水線是經(jīng)典的MIPS架構(gòu)提出的,MIPS是世界上第一個RISC處理器
為了方便指令流水線的安排,MIPS架構(gòu)下所有的指令一定都是五個機器周期,即便有的指令有可能在實際運行時不需要進行中間某個階段的處理
對于大部分RISC系統(tǒng),通常都會規(guī)定每一條指令所包含的機器周期數(shù)都相同,并且每一個機器周期的長度也都相同,這樣可以方便安排流水線
在各個階段中間添加一些暫存寄存器,先把準(zhǔn)備好的數(shù)據(jù)存放在暫存寄存器里面,下一階段想要數(shù)據(jù)時再送出去
之前一直說從主存里取指令,但是在大多數(shù)情況下主存里當(dāng)前需要使用到的指令還有數(shù)據(jù)會在Cache當(dāng)中保存一個副本。Cache的命中率一般很高,所以這里IF階段畫了一個Instruction Cache,大部分情況下都可以從Cache里面直接找到現(xiàn)在想要的指令而不需要進行訪存。后面W階段里的Data Cache原理也類似
CPU內(nèi)部的Cache會被分為兩個獨立的模塊,Instruction Cache和Data Cache。分別專門用來存儲指令和數(shù)據(jù),對這兩個模塊的訪問可以并行進行
如果Cache沒有命中就必須去訪問主存,這種情況下指令流水線會出現(xiàn)斷流,這種復(fù)雜情況先不考慮
ID階段除了完成指令譯碼的工作,還會完成取數(shù)操作,要把指令所需要用到的操作數(shù)從通用寄存器里面取出然后放到鎖存器A和B里
這點和之前學(xué)習(xí)的指令不太一樣,之前學(xué)習(xí)的指令如ADD X指令可以直接指明需要的操作數(shù)來自于主存。但是在RISC系統(tǒng)下想要進行運算的操作數(shù)一定直接來自于通用寄存器,不可能直接來自于主存,如果要來自于主存一定需要先把數(shù)據(jù)放到通用寄存器
Imm鎖存器用于存立即數(shù),因為有的指令可能使用立即尋址,可以直接從指令當(dāng)中取出接下來EX階段需要的立即數(shù)放到Imm里面
運算結(jié)果有可能需要寫回主存,也有可能不需要寫回主存直接寫回某一個通用寄存器
影響流水線的因素
把指令和數(shù)據(jù)分別放到不同的Cache或者存儲體當(dāng)中
?
?
編譯器負(fù)責(zé)插入空指令,每一條空指令的執(zhí)行也會經(jīng)過完整的五個機器周期。最底層的機器語言程序員或者匯編語言程序員也可以手動插入空指令
?
?
有關(guān)分支預(yù)測可參考:https://blog.csdn.net/hanzefeng/article/details/82893317
?
?
流水線的分類
流水線的多發(fā)技術(shù)
指令的排列由編譯器確定
支持指令亂序發(fā)射的CPU可以調(diào)整指令順序
?
五段式指令流水線
機器周期的設(shè)置
五段式指令流水線
運算類指令的執(zhí)行過程
對于RISC系統(tǒng)所有的這些運算類指令運算的兩個操作數(shù)一定直接來自于某一個寄存器或者是立即數(shù),運算結(jié)果一定存回某一個寄存器而不可能直接存回主存,所以在M階段什么也不用做
LOAD 指令的執(zhí)行過程
LOAD Rd,996(Rs)
在Rs寄存器的值基礎(chǔ)上加上996,然后將相加結(jié)果作為有效地址取出對應(yīng)主存單元里存放的數(shù)據(jù)到Rd寄存器當(dāng)中
每一個進程在內(nèi)存里面存放的起始地址都不一樣,所以當(dāng)要訪問這個進程里面的某一個變量時通常會采用基址尋址,用Rs寄存器指明這個進程在內(nèi)存當(dāng)中的起始地址,相對于起始地址往后偏移996才是想要找的數(shù)據(jù)
數(shù)據(jù)Cache沒有命中才會進行訪存
STORE 指令的執(zhí)行過程
條件轉(zhuǎn)移指令的執(zhí)行過程
b —— branch eq —— equal ne —— not equal
PC不屬于通用寄存器,對PC值的修改并不會放到WB階段
無條件轉(zhuǎn)移指令的執(zhí)行過程
偏移量通常用補碼表示
例題
多處理器基本概念
SISD
單指令流 —— CPU同一時間段內(nèi)只能處理一個指令序列
單數(shù)據(jù)流 —— 每一條指令只能處理特定的一兩個數(shù)據(jù)
SIMD
每一個時刻同樣只能執(zhí)行一條指令,但是一條指令的執(zhí)行可以同時處理很多個具有相同特征的數(shù)據(jù),對這些數(shù)據(jù)的處理都是相同的
MIMD —— 共享存儲多處理器系統(tǒng)
所有處理器共享最低一級的Cache。i7i7i7處理器的Cache通常分為L1、L2、L3三級,L1和L2這種更高級更快的Cache專屬于某一個特定的核,而L3這級的Cache被所有的核心共享
MIMD —— 多計算機系統(tǒng)
向量處理器
硬件多線程基本概念
一個不太嚴(yán)謹(jǐn)?shù)氖疽鈭D
三種硬件多線程
總結(jié)
以上是生活随笔為你收集整理的计算机组成原理笔记(王道考研) 第五章:中央处理器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 西门子1200硬件上载与软件上载
- 下一篇: 水果FL studio20.8中文汉化翻