中央處理器 CPU的功能和結構 CPU功能
指令控制
完成取指令、分析指令、和執行指令的操作,即程序的順序控制。
操作控制
一條指令的功能往往是由若干操作信號的組合來實現的。CPU管理并產生由內存取出的每條指令的操作信號,把各種操作信號送往相應的部件,從而控制這些部件按指令的要求進行動作。
時間控制
對各種操作加以時間上的控制。時間控制要為每條指令按時間順序提供應有的控制信號
數據加工
對數據進行算數和邏輯運算。
中斷處理
對計算機運行過程中出現的異常情況和特殊請求進行處理。
運算器的基本結構
*專用數據通路:*根據指令執行過程中的數據和地址的流動方向安排連接線路
算數邏輯單元:主要功能是進行算數/邏輯運算
通用寄存器組:如AX,BX,CX,DX,SP等,用于存放操作數(包括源操作數,目的操作數和中間結果)和各種地址信息。SP是堆棧指針,用于指示棧頂的地址。
暫存寄存器:用于暫存從主存讀來的數據,這個數據不能存放在通用寄存器中,否則會破壞其原有的內容。
兩個操作數分別來自主存和R0,最后結果存回R0控制單元的輸入信號可來自,那么從主存中取來的操作數直接放入暫存寄存器,就不會破壞運算前R0的內容
累加寄存器:是一個通用寄存器控制單元的輸入信號可來自,用于暫時存放ALU運算的結果信息,用于實現加法運算。
程序狀態字寄存器:保留由算數邏輯運算指令或測試指令的結果而建立的各種狀態信息。如溢出標志(OP),符號標志(SF),零標志(ZF),進位標志(CF)等。
PSW中這些參與并決定微操作的形成
移位器:對運算結果進行移位運算。
計數器:控制乘除運算的操作步數。
控制器基本結構
程序計數器:用于指出下一條指令在主存中的存放地址。CPU就是根據PC的內容去主存中取指令的。因程序中指令(通常)是順序執行,所以PC有自增功能。
指令寄存器:用于保存當前正在執行黨的指令。
指令譯碼器:僅對操作碼字段進行編譯,向控制器提供特定的操作信號。
微操作信號發生器:根據IR的內容(指令)、PSW的內容(狀態信息)及時序信號,產生控制整個計算機系統所需的各種控制信號,其結構有組合邏輯型和存儲邏輯型。
時序系統:用于產生各種時序信號,他們都是由同一時鐘(CLOCK)分頻得到。
存儲器地址寄存器:用于存放要訪問的主存單元的地址
存儲器數據寄存器:用于存放向主存寫入的信息或從主存中讀出的信息。
CPU由ALU,CU,寄存器,中斷系統構成
PPT
指令部件
時序控制部件
微操作控制信號的形成部件
根據指令部件提供的操作控制電位、時序部件所提供的各種時序信號以及有關的狀態條件,產生機器所需要的各種微操作控制信號。
不同的指令,完成不同的功能,需要不同的微操作控制信號序列。每條指令都有自己對應的微操作序列。控制器必須根據不同的指令,在不同的時間,產生并發出不同的微操作控制信號,控制有關部件協調工作,完成指令所規定的任務。
中斷控制邏輯(中斷機構)
用于實現異常情況和特殊請求的處理
程序狀態字寄存器PSW
控制臺
總結
*管理多條通路:*多路選擇器MUX與三態門
*用戶可見的寄存器:*通用寄存器組,程序狀態字寄存器PSW,程序計數器PC
*用戶不可見的寄存器:*MAR,MDR,IR,暫存寄存器
指令執行過程 指令周期
CPU從主存中每取出并執行一條指令所需的全部時間
指令周期通常由若干機器周期來表示,機器周期又叫CPU周期。
一個指令周期由多個機器周期完成。
指令周期>機器周期>時鐘周期
時鐘周期(節拍,T周期,或CPU時鐘周期,它是CPU操作的最基本單位)
每個指令周期內機器周期數可以不等,每個機器周期內的節拍數也可以不等。
指令周期流程
*提供觸發器:*用于判斷當前屬于指令周期的哪個階段
四個周期都有CPU訪存操作,只是訪存目的不同。
取值周期是為了取指令,間指周期是為了取有效地址,執行周期是為了取操作數,中斷周期是為了保存斷點。
取指周期
功能:
根據指令地址(由PC提供),從存儲器中取出所要執行的指令到IR中
操作流程
當前指令地址送至存儲器地址寄存器,記作:(PC)->MAR
CU發出控制信號,經控制總線傳到主存,這里是讀信號。記作:1->R
將MAR所指主存的內容經數據總線送入MDR,記作:M(MAR)->MDR
將MDR中的內容(此時為指令)送入IR,記作:(MDR)-> IR
CU發出控制信號,形成下一條指令地址,記作:(PC)+1->PC
間指周期
功能:
對取出的指令進行譯碼分析。確定指令應完成的操作,產生相應操作的控制電位,參與形成該指令功能所需要的全部控制命令(微操作控制信號)。根據尋址方式的分析和指令功能要求,形成操作數的有效地址,并按此地址取出操作數據(運算型指令)或形成轉移地址(轉移類指令),以實現程序轉移。
將指令的形式地址送入MAR,記作:Ad(IR)->MAR 或Ad(MDR)->MAR
CU發出控制信號,啟動主存做讀操作,記作:1->R
將MAR所指主存中的內容經數據總線送入MDR,記作:M(MAR)->MDR
將有效地址送到指令的地址碼字段,記作:MDR->Ad(IR)一般不寫
執行周期
根據指令字的操作碼和操作數進行相應的操作。
根據指令分析所產生的操作控制信號和形成的有效地址,按一定的算法形成指令操作控制序列,控制有關部件完成指令規定的功能。
一條指令執行結束,若沒有異常情況和特殊請求,則按程序順序,再去取出并執行下一條指令。
執行周期的任務是根據IR中的指令字的操作碼和操作數通過ALU操作產生執行結果。不同指令的執行周期操作不同,因此沒有統一的數據流向。
中斷周期
保存斷點,送中斷向量,處理中斷請求。
中斷:暫停當前任務去完成其他任務。
為了能夠恢復當前任務,需要保存斷點。一般使用堆棧來保存斷點,這里用SP表示棧頂指針,假設SP指向棧頂元素,進棧操作是先修改指針,后存入數據
CU控制將SP-1,修改后的地址送入MAR 主存中選地址,是從高地址向低地址進行操作
記作:(SP)-1,(SP)->MAR
本質上將斷點存入某個存儲單元,假設其地址為a,故可記作:a->MAR
CU發出控制信號,啟動主存做寫操作,記作:1->W
將斷點(PC內容)送入MDR,記作:(PC)->MDR
CU控制將中斷服務程序的入口地址(由向量地址形成部件產生)送入PC
記作:向量地址->PC
指令執行方案
一個指令周期要包括幾個時間段(執行步驟),每個步驟完成指令的一部分功能,幾個依次執行的步驟完成這條指令的全部功能。
方案1:單指令周期
對所有指令都選用相同的執行時間來完成。統一成最長指令的時間
指令之間串行執行,指令周期取決于執行時間最長的指令的執行時間。
特點
對于本可以在更短時間內完成的指令,要使用這個較長的周期來完成,會降低整個系統的運行速度。設計簡單。
方案2:多指令周期
對不同類型的指令選用不同的執行步驟來完成。
指令之間串行:可選用不同個數的時鐘周期來完成不同指令的執行過程。
需要更加復雜的硬件設計。
方案3:流水線
一個時鐘周期啟動一條指令,盡量讓多條指令同時運行,但各自處在不同的執行步驟中。指令之間并行執行。
數據通路的能和基本結構(單總線) 指令周期的數據流
數據通路:數據在功能部件之間傳送的路徑
CPU內部的數據通路通常是指運算器與寄存器之間的信息傳輸通道。
需要弄明白:信息從哪里開始,中間經過哪些部件,最后傳到哪里。
控制方法:由控制部件產生的控制信號建立數據通路。
數據通路基本結構 CPU內部單總線方式 有一個公共通路CPU內部多總線方式 有多個公共通路專用數據通路方式 在需要交流的部件之間有連線 單總線方式分析
*內部總線:*是指同一部件,如CPU內部連接各寄存器及運算部件之間的總線
*系統總線:*是指同一臺計算機系統的各部件,如內存,CPU,通道和各類I/O接口間互相連接的總線。
數據通路分類
寄存器之間數據傳送
比如把PC內容送至MAR,實現傳送操作的流程及控制信號為:
(PC)->Bus PCout有效,PC內容送總線
BUS->MAR MARin有效,總線內容送MAR
主存與CPU之間的數據傳送
比如CPU從主存讀取指令,實現傳送操作的流程及控制信號為:
(PC)->BUS->MAR PCout和MARin有效,現行指令地址->MAR
1->R CU發讀命令(通過控制總線發出,圖中未畫出)
M(MAR)->MDR MDRin有效
MDR->BUS->IR
執行算數或邏輯運算
比如一條加法指令,微操作序列及控制信號為:
Ad(IR)->BUS->MAR 和MARin有效 MDR和IR存放的都為當前地址
M(MAR)->數據線->MDR MDRin有效
(MDR)->BUS->Y 和Yin有效,操作數->Y
(ACC)+(Y)->Z 和ALUin有效。CU向ALU發送加命令
Z->ACC Zout和ACCin有效,結果->ACC
例題
加()的為目的操作數
取指周期
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img--38)(D:\\Notes[其他]計算機通用知識\pics\image-.png)]
PC+1 歸到第二步原因:自增不干擾其他指令執行
間址周期
執行周期
ALU在單總線下需要暫存器
數據通路的功能和基本機構(專用通路)
以取指周期為例分析
例題
控制器的功能和工作原理
控制器的主要功能
控制器是計算機系統的指揮中心,控制器的主要功能有:
從主存中取出一條指令,并指出下一條指令在主存中的位置對指令進行譯碼或測試,產生相應的操作控制信號,以便啟動規定的動作指揮并控制CPU,主存,輸入和輸出設備之間的數據流動方向 控制單元的輸入和輸出
輸入
輸出
硬布線控制器設計
組合邏輯+觸發器
機器周期:機器周期可看作所有指令執行過程中的一個基準時間。
? 通常以存取周期作為基準時間,即機器周期。在存儲字長等于指令字長前提下,取指周期也可看作機器 周期。
設計步驟 分析每個階段的微操作序列選擇CPU的控制方式安排微操作時序電路設計 CPU的控制方式
CPU的控制方式:產生不同微操作命令序列所用的時序控制方式
同步控制方式
整個系統所有的控制信號均來自一個統一的時鐘信號
通常以最長的微操作序列和最繁瑣的微操作作為標準,采取完全統一的、具有相同時間間隔和相同數目的節拍作為機器周期來運行不同的指令
特點:
控制電路簡單運行速度慢
異步控制方式
不存在基準時標信號
各部件按自身固有的速度工作,通過應答方式進行聯絡
特點:
運行速度快
控制電路比較復雜
聯合控制方式
對各種不同的指令的微操作實行大部分采用同步控制、小部分采用異步控制的辦法。
安排微操作時序的原則 微操作的先后順序不得隨意更改被控對象不同的微操作,盡量安排在一個節拍內完成占用時間較短的微操作,盡量安排在一個節拍內完成,并允許有先后順序 取指周期
間指周期
執行周期
中斷周期
中斷周期完成的任務:保存斷點,關中斷,形成入口地址
電路設計(幾乎不考)
設計步驟:
列出操作時間表寫出微操作命令的最簡表達式畫出邏輯圖 取指周期
間指周期
執行周期
*微操作:*式子表示出的過程
*微操作命令:*產生微操作需要的控制信號
微操作信號綜合
畫電路
微程序控制器設計
用程序設計的思想方法來組織操作控制邏輯,用規整的存儲邏輯代替繁雜的組合邏輯。
事先微程序控制信號存儲在一個專門的存儲器(控制存儲器)中,
將每條機器指令編寫成一個微程序,這些微程序可以存到一個控制寄存器中,用尋址用戶程序機器指令的辦法來尋址每個微程序中的微指令。
基本思想
微操作: 是微命令從執行過程。
微操作命令: 微命令 控制過程完成的信號。
*相容性微命令:*可以同時產生、共同完成某一些微操作的微命令。
*互斥性微命令:*在機器中不允許同時出現的微命令。
一條機器指令對應一個微程序
多個微操作命令組成微指令,多個微指令構成微程序,組成機器指令
取值周期一般統一成一個微程序,而每條機器指令所對應的具體操作再單獨編寫一個對應的微程序
基本結構
CM:用于存放各指令對應的微程序,控制存儲器可用只讀存儲器ROM構成。
地址譯碼:將地址碼轉化為存儲單元控制信號
CMAR:微地址寄存器,接收微地址形成部件送來的微地址,為在CM中讀取微指令做準備。
CMDR:用于存放從CM中取出的微指令,它的位數同微指令字長相等。
微地址形成部件:產生初始微地址和后繼微地址,以保證微指令的連續執行
CM控制存儲器
默認取指周期是公共的,故若某指令系統中有n條機器指令,則CM中微程序的個數至少是n+1個
間址和執行,不一定是公共的,故如果這臺計算機指令系統中有n條機器指令,則CM中微程序的個數為n+3個
微指令格式 水平型微指令 一次能定義并執行多個并行微指令
垂直型微指令 類似于機器指令操作碼的方式,由操作碼字段規定微指令的功能
混合型微指令
在垂直型的基礎上增加一些不太復雜的并行操作。
微指令編碼方式
微指令編碼方式右稱為微指令的控制方式,它是如何對微指令的控制字段進行編碼,以形成控制信號。編碼的目標是在保證速度的情況下,盡量縮短微指令字長。
直接編碼(直接控制)方式
在微指令的操作控制字段中,每一位代表一個微操作命令
某位為1表示該控制信號有效
字段直接編碼方式
將微指令的控制字段分成若干段,每段經過譯碼后發出控制信號
微指令字段分段要求:
互斥性微命令分在同一段,相容性微命令分在不同段內
每個小段中包含的信息位不能太多,否則將增加譯碼線路的復雜性和譯碼時間
一般每段要流出一個狀態,表示本字段不發出任何微命令。因此,當某字段的長度為3位時,最多只能表示7個互斥的微命令,通常用000表示不操作。
特點
可以縮短微指令字長要通過譯碼電路后再發出微命令,因此比直接編碼方式慢。
例題
字段間接編碼方式
一個字段的某些微命令需由另一個字段中的某些微命令來解釋,由于不是靠字段直接譯碼發出的微命令,故稱為字段間接編碼,又稱隱式編碼。
特點
可進一步縮短微指令字長。削弱了微指令的并行控制能力,故通常作為字段直接編碼方式的一種輔助手段。 微指令地址形成方式 微指令的下地址字段指出
微指令格式中設置一個下地址字段,由微指令的下地址字段直接指出后繼微指令的地址,又稱為斷定方式
根據機器指令的操作碼形成
當機器指令取至指令寄存器后,微指令的地址由操作碼經微地址形成部件形成
增量計數法
分支轉移
轉移方式:指明判別條件;轉移地址:指明轉移成功后的去向。
通過測試網絡 由硬件產生微程序入口地址
微程序概念總結
微命令與微操作
微命令是若干微指令的集合
微操作是執行微命令的執行過程
微指令與微周期
微指令是若干微命令的集合
微周期通常指從控制存儲器中讀取一條微指令并執行相應的微操作所需要的時間
主存儲器與控制存儲器
主存儲器用于存放程序和數據,在CPU外部,用RAM實現;
控制存儲器(CM)用于存放微程序,在CPU內部,用ROM實現。
程序與微程序
程序是指令的有序集合,用于完成特定的功能;
微程序是微指令的有序集合,一條指令的功能由一段微程序來實現。
微程序控制單元設計(不重要)
設計步驟
分析每個階段的微操作序列
寫出對應機器指令的微操作命令以及節拍安排
確定微指令格式
編寫微指令碼點
取指周期
微程序設計分類
靜態微程序設計和動態微程序設計
靜態 微程序無需改變,采用 ROM
動態 通過改變微指令和微程序 改變機器指令
? 有利于仿真,采用EPROM
毫微程序
毫微程序設計的基本概念
微程序設計 用 微程序解釋機器指令
毫微程序設計 用 毫微程序結束微程序
毫微指令與微指令 的關系好比 微指令與機器指令的關系
微程序控制方式特點
用規整的存儲邏輯代替了復雜的、不規整的硬連邏輯,簡化了硬件結構,有利于設計自動化。
適宜作系列機的控制器,可以用比較簡單的硬件結構實現較復雜的指令系統。
對組合邏輯控制器來說,隨著指令系統功能的增加,其價格將迅速增加,控制邏輯也變得復雜。微程序控制的計算機在同一系列內,功能的增加主要表現為微程序的增加,即控制存儲器容量的增加,其他硬件增加不多,所以性能/價格比相對較高。
易于修改和擴充,靈活性、通用性強。在數據通路結構不變的前提下,可以通過修改微程序,修改指令功能或增加新的指令。
可靠性高,易于診斷與維護。這是因為微程序控制結構簡單、規整,易于采用診斷技術。
速度慢,因為增加了從控制存儲器中讀取微指令的時間。
由于一條微指令的操作比一條機器指令所能定義的操作簡單,因而可能會降低并行操作能力,影響執行效率。
硬布線與微程序的比較
指令流水線 基本概念 定義
一條指令的執行過程可分為多個階段(或過程)。根據計算機的不同,具體分法也不同。
流水線穩定工作后,每個時鐘周期都有一條指令的執行結果從流水線流出。
取指:根據PC內容訪問主存儲器,取出一條指令送到IR中。
分析:對指令操作碼進行譯碼,按照給定的尋址方式和地址字段中的內容形成操作數的有效地址EA,并從有效地址EA中取出操作數。
特點:每個階段用到的硬件不一樣
執行:根據操作碼字段,完成指令規定的功能,即把運算結果寫到通用寄存器或主存中。
幾種執行方式
設取指,分析,執行3個階段的時間都相等,用t表示,按以下幾種執行方式
順序執行方式
c傳統馮·諾依曼采用順序執行方式,又稱串行執行方式。
總耗時T=nX3t = 3nt
優點:控制簡單,硬件代價小。
缺點:執行指令的速度較慢,在任何時刻,處理機中只有一條指令在執行,各功能部件的利用率很低。
一次重疊執行方式
總耗時T=3t+(n-1)X2t = (1+2n)t
優點:程序的執行時間縮短了1/3,各功能部件的利用率明顯提高。
缺點:需要付出硬件上較大的開銷,控制過程也比順序執行復雜
二次重疊方式
總耗時 T = 3t+(n-1)Xt = (2+n)t
注:可以把每條指令的執行過程分為4-5個階段,5個階段比較常見
流水線表示方法
指令執行過程圖
主要用于分析指令執行過程以及影響流水線的因素
時空圖
流水線的性能指標
吞吐率
吞吐率是指在單位時間內流水線所完成的任務數量,或是輸出結果的數量
設任務數為m;處理完成那個任務所用的時間為Tk
當連續輸入的任務n趨向無窮時,得最大吞吐率TPmax = 1/t
加速比
完成同一批任務,不使用流水線所用的時間與使用流水線所用的時間之比
效率
流水線的設備利用率稱為流水線的效率。
在時空圖上,流水線的效率定義為完成n個任務占用的時空區有效面積與n個任務所用的時間與k個流水段所圍成的時空區總面積之比。
流水線影響因素
立項情況:
各階段花費時間相同;
每個階段結束后能立即進入下一個階段
機器周期的設置
各個部件實際耗時都不同,為方便流水線設計,將每個階段的耗時都取成一樣,以最長耗時為準。即此處應將機器周期設置為100ns。
流水線每一個功能段部件后面都要有一個緩沖寄存器,或稱為鎖存器,其作用是保存本流水段的執行結果,提供給下一流水段使用。
影響因素
結構相關(資源沖突)
多條指令在同一時刻爭用同一資源而形成的沖突稱為結構相關。硬件不夠用
解決方法:
后一相關指令暫停一周期
資源重復配置
? 數據存儲器+指令存儲器
數據相關(數據沖突)
數據相關指在一個程序中,存在必須等前一條指令執行完才能執行后一條指令情況,則這兩條指令即數據相關。需要的數據有變動或未產生
數據的基本操作:讀?,寫(W)
沖突基本類型:RAW,WAR,WAW
RAW
按序發射,按序完成時,只可能出現RAW相關。
WAR
亂序發射,編寫程序的時候希望l1在l2前完成,
但優化手段導致l2在l1前發射。
WAW
存在多功能部件時,后一條指令可能比前一條指令先完成。
解決方法:
把遇到數據相關的指令及其后續指令都暫停一到幾個時鐘周期,知道數據相關問題消失后再繼續執行。可分為硬件阻塞(stall)和軟件插入"NOP"兩種方法。
數據旁路技術。數據產生之前調整到前面位置上
編譯優化:通過編譯器調整指令順序來解決數據相關。
控制相關(控制沖突)
當流水線遇到轉移指令和其他改變PC值的指令而造成斷流時,會引起控制相關。遇到轉移指令
解決方法:
盡早判別轉移是否發生,盡早生成轉移目標指令
預取轉移成功和不成功兩個控制流方向上的目標指令
加快和提前形成條件碼
提高轉移方向的猜準率
例題
數據相關
分類
部件功能級別,處理機級和處理機間流水線
根據流水線使用的級別不同
部件功能級:將復雜的算數邏輯運算組成流水線,求浮點數變成對求階差,對階,尾數相加和規格化。
處理機級:把一條指令解釋分成多個子過程,取指,譯碼,執行,訪存以及寫回
處理機間:
單流水線和多功能流水線
按流水線可以完成的功能劃分
單功能流水線指只能實現一種固定的專門功能的流水線。
多功能流水線指通過各段間的不太連接方式可以同時或不同時地實現多種功能的流水線。
動態流水線和靜態流水線
按同一時間內各段之間的連接方式
靜態流水線:同一時間內各段只能按同一種功能的連接方式工作
動態流水線:同一時間內,某些段正在實現某種復雜運算時,另一些段正在進行另一種運算。提高流水線效率,但使流水線控制變得復雜。
線性流水線和非線性流水線
按流水線的各個功能段之間是否有反饋信號
線性流水線:從輸入到輸出,每個功能段只允許經過一次,不存在反饋回路
非線性流水線:存在反饋回路,從輸入到輸出過程中,某些功能段將數次通過流水線,這種流水線適合進行線性非遞歸的運算。
流水線的多發技術
超標量技術
每個時鐘周期內可并發多條獨立指令
要配置多個功能部件
不能調整指令的執行順序
通過編譯優化技術,把可并行執行的指令搭配起來編譯器做
超流水技術
在個時鐘周期內再分段(3段)
在一個時鐘周期內 一個功能部件使用多次(3次)
不能調整指令的執行順序
靠編譯程序優化問題
速度變為普通流水線的3倍
超長指令字
由編譯程序挖掘出指令間潛在的并行性、
將多條能并行操作的指令組合成一條
具有多個操作碼字段的超長指令字(幾百位)