CPU 的功能和基本結構程序員
中央處理器(CPU)由運算器和控制器組成。控制器的功能是負責協調並控制計算機各部件執行程序的指令序列,包括取指指令、分析指令和執行指令;運算器的功能是對數據進行加工。CPU 的具體功能包括:編程
1.運算器併發
運算器接收從控制器送來的命令並執行相應的動做,對數據進行加工和處理。運算器是計算機對數據進行加工處理的中心,它主要由算術邏輯單元(ALU)、暫存寄存器、累加寄存器(ACC)、通用寄存器組、程序狀態字寄存器(PSW)。移位器、計數器(CT)等組成。異步
2.控制器性能
控制器是整個系統的指揮中樞,在控制器的控制下,使運算器、存儲器和輸入/輸出設備等功能部件構成一個有機的總體,根據指令的要求指揮全機協調工做。控制器的基本功能是執行指令,每條指令的執行是由控制器發出的一組微操做實現的。測試
控制器有硬佈線控制器和微程序控制器兩種類型。控制器由程序計數器(PC)、指令寄存器(IR)、指令譯碼器、存儲器地址寄存器(MAR)、存儲器數據寄存器(MDR)、時序系統和微操做信號發生器等組成。優化
控制器的工做原理是,根據指令操做碼、指令的執行步驟(微命令序列)和條件信號來造成當前計算機各部件要用到的控制信號。計算機整機各硬件系統在這些控制信號的控制下協同運行,產生預期的執行效果。編碼
CPU 內部寄存器大體可分爲兩類:一類是用戶可見的寄存器,可對這類寄存器編程,如通用寄存器組、程序狀態字寄存器;另外一類是用戶不可見的寄存器,對用戶是透明的,不可對這類寄存器編程,如存儲器地址寄存器、存儲器數據寄存器、指令寄存器。spa
數據總線的位數與處理器的位數相同,它表示 CPU 一次能處理的數據的位數,即 CPU 的位數。設計
程序計數器的位數取決於存儲器的容量。
指令寄存器的位數取決於指令字長。
通用寄存器的位數取決於機器字長。
指令包括操做碼字段和地址碼字段,但指令譯碼器僅對操做碼字段進行譯碼,藉以肯定指令的操做功能。
地址譯碼器是主存等存儲器的組成部分,其做用是根據輸入的地址碼惟一選定一個存儲單元,它不是 CPU 的組成部分。
間址週期結束時,CPU 內寄存器 MAR 的內容爲操做數地址。
指令執行過程
CPU 從主存每取出並執行一條指令所需的所有時間稱爲指令週期,即 CPU 完成一條指令的時間。
指令週期經常使用若干機器週期來表示,一個機器週期又包含若干時鐘週期(也稱節拍或 T週期,它是 CPU 操做的最基本單位)。每一個指令週期內的機器週期數能夠不等,每一個機器週期內的節拍數也能夠不等。
對於無條件轉移指令 JMP X,在執行時不須要訪問主存,只包含取指階段(包括取指和分析) 和執行階段,因此其指令週期僅包含取指週期和執行週期。對於間接尋址的指令,爲了取操做數,須要先訪問一次主存,取出有效地址,而後訪問主存。取出操做數,因此還須要包括間址週期。間址週期介於取指週期和執行週期之間。
一個完整的指令週期應包括取指、間址、執行和中斷 4 個週期。這 4 個週期都有 CPU 訪存操做,只是訪存的目的不一樣。取指週期是爲了取指令,間址週期是爲了取有效地址,執行週期是爲了取操做數,中斷週期是爲了保存程序斷點。中斷週期中的進棧操做是將 SP 減1,這和傳統意義上的進棧操做相反,緣由是計算機的堆棧中都是向低地址增長,因此進棧操做是減1而不是加1。
取指週期的任務是根據 PC 中的內容從主存中取出指令代碼並存放在 IR 中。取指令的同時, PC 加 1。
間址週期的任務是取操做數有效地址。一次間址將指令中的地址碼送到 MAR 並送至地址總線,此後 CU 向存儲器發讀命令,以獲取有效地址並存至 MDR。
執行週期的任務是根據 IR 中的指令字的操做碼和操做數經過 ALU 操做產生執行結果,不一樣指令的執行週期操做不一樣。
中斷週期的任務是處理中斷請求。
指令執行方案
1.單指令週期。對全部指令都選用相同的執行時間來完成,稱爲單指令週期方案。此時,每條指令都在固定的時鐘週期內完成,指令之間串行執行,即下一條指令只能在前一條指令執行結束後才能啓動。所以,指令週期取決於執行時間最長的指令的執行時間。
2.多指令週期。對不一樣指令選用不一樣的執行步驟來完成,稱爲多指令週期方案。指令之間串行執行,即下一條指令只能在前一條指令執行結束後才能啓動。但可選用不一樣個數的時鐘週期來完成不一樣指令的執行過程指令須要幾個週期就爲其分配幾個週期,而再也不要求全部指令佔用相同的執行時間。
3.流水線方案。指令之間能夠並行執行的方案,稱爲流水線方案,其追求的目標是力爭在每一個時鐘脈衝週期完成一條指令的執行過程(只有在理想狀況下才能達到該效果)。這種方案經過在每一個時鐘週期啓動一條指令,儘可能讓多條指令同時運行,但各自處在不一樣的執行步驟中。
指令老是根據程序計數器從主存中讀出。
在一條無條件跳轉指令的指令週期內,程序計數器(PC)的值被修改了 2 次。首先在取指週期結束後,PC 的值自動加 1;在執行週期中,PC 的值修改成要跳轉的地址。綜上,在一條無條件跳轉指令的指令週期內,程序計數器(PC)的值被修改了 2 次。取指操做是自動進行的,控制器不須要獲得相應的指令。不一樣長度的指令,其取指操做多是不一樣的。控制器可區分存儲單元中存放的是指令仍是數據。
取指操做時自動進行的,控制器不須要獲得相應的指令。
不一樣長度的指令,其取指操做多是不一樣的。
數據通路的功能和基本結構
數據在功能部件之間傳送的路徑稱爲數據通路。運算器與各寄存器之間的數據傳送路徑就是中央處理器的內部數據通路。數據通路描述了信息從什麼地方開始,中間通過哪一個寄存器或多路開關,最後傳送到哪一個寄存器,這些都要加以控制。創建數據通路的任務是由「操做控制部件」來完成的。數據通路的功能是實現 CPU 內部的運算器與寄存器及寄存器之間的數據交換。
數據通路的基本結構主要有如下幾種:
內部總線是指同一部件,如 CPU 內部鏈接各寄存器及運算器部件之間的總線;系統總線是指同一臺計算機系統的各個部件,如 CPU、內存、通道和各種 I/O接口之間互相鏈接的總線。
寄存器之間的數據傳送可經過 CPU 內部總線完成。
主存與 CPU 之間的數據傳送也要藉助 CPU 內部總線完成。
執行算術或邏輯操做時,因爲 ALU 自己是沒有內部存儲功能的組合電路,所以如要執行加法運算,相加的兩個數必須在 ALU 的兩個輸入端同時有效。
在單總線的 CPU 中,ALU 只能有一個輸入端可與總線相連,另外一輸入端需經過暫存器與總線相連,不然兩個端口會同時得到兩個相同的數據,是數據通路不能正常工做。
實現 ADD R1,(R2) 的微操做序列
(PC) → MAR
M → MDR
(PC) + 1 → PC
MDR → IR
R1 → LA
(R2) → MAR
M → MDR
MDR → LB
(LA) + (LB) → R1
控制器的功能和工做原理
根據控制器產生微操做控制信號的方式的不一樣,控制器可分爲硬佈線控制器和微操做控制器,兩類控制器中的 PC 和 IR 是相同的,但肯定和表示指令執行步驟的辦法以及給出控制各部件運行所須要的控制信號的方案是不一樣的。
硬佈線控制器
硬佈線控制器的基本原理是根據指令的要求、當前的時序及外部和內部的狀態,按時間的順序發送一系列微操做控制信號。它由複雜的組合邏輯門電路和一些觸發器構成,所以又稱組合邏輯控制器。
指令的操做碼是決定控制單元發出不一樣操做命令(控制信號)的關鍵。爲了簡化控制單元(CU)的邏輯,將指令的操做碼譯碼和節拍發生器從 CU 分離出來,即可獲得簡化的控制單元圖。CU 的輸入信號來源以下:
控制單元還接收來自系統總線(控制總線)的控制信號,如中斷請求、DMA 請求。
硬佈線控制器的時序系統及微操做
一條指令分爲 3 個工做週期:取指週期、間址週期和執行週期。
CPU 的控制方式主要有如下三種:
微程序控制器
微程序控制器採用邏輯存儲實現,也就是把微操做信號代碼化,使每條機器指令轉化成爲一段微程序並存入一個專門的存儲器(控制存儲器)中,微操做控制信號由微指令產生。
(1)微命令與微操做。一條機器指令能夠分解成一個微操做序列,這些微操做是計算機中最基本的 、不可再分解的操做。在微程序控制的計算機中,將控制部件向執行部件發出的各類程序控制命令稱爲微指令,它是構成控制序列的最小單位。微命令和微操做是一一對應的。微命令是微操做的控制信號,微操做是微命令的執行過程。微命令有相容性和互斥性之分。相容性微命令是指那些能夠同時產生、共同完成某一些微操做的微指令;而互斥性微命令是指在機器中不容許同時出現的微命令。相容和互斥都是相對的,一個微命令能夠和一些微命令相容,和另外一些微命令互斥。
(2)微指令與微週期。微指令是若干微命令的集合。存放微指令的控制存儲器的單元地址稱爲微地址。一條微指令一般至少包含兩大部分信息:
微週期一般指從控制存儲器中讀取一條微指令並執行相應的微操做所需的時間。
(3)主存儲器與控制存儲器。主存儲器用於存放程序和數據,在 CPU 外部,用 RAM 實現;控制存儲器(CM)用於存放微程序,在 CPU 內部,用 ROM 實現。
(4)程序與微程序。程序是指令的有序集合,用於完成特定的功能;微程序是微指令的有序集合,一條指令的功能由一段微程序來實現。
微程序和程序是兩個不一樣的概念。微程序是由微指令組成的,用於描述機器指令。微程序其實是機器指令的實時解釋器,是由計算機設計者實現編制好並存放在控制存儲器中的,通常不提供給用戶。對於程序員來講,計算機系統中微程序的結構和功能是透明的。而程序最終由機器指令組成,是由軟件設計人員實現編制好並存放在主存或輔存中的。
注意區分如下寄存器:
1.地址寄存器(MAR)。用於存放主存的 讀/寫地址。
2.微地址寄存器(CMAR)。用於存放控制存儲器的 讀/寫微指令的地址。
3.指令寄存器(IR)。用於存放從主存中讀出的指令。
4.微指令寄存器(CMDR 或 μIR)。用於存放從控制器中讀出的微指令。
若指令週期中具備 n 種機器指令,則控制存儲器中的微程序數至少是 n + 1(1 爲公共的取指微程序,有中斷再 +1)。
微指令的編碼方式:
微指令的格式與微指令的編碼方式有關,一般分爲水平型微指令和垂直型微指令。
混合型微指令。在垂直型的基礎上增長一些不太複雜的並行操做。微指令較短,仍便於編寫;微程序也不長,執行速度加快。
對比項目\類別 | 微程序控制器 | 硬佈線控制器 |
工做原理 | 微操做控制信號以微程序的形式存放在控制存儲器中,執行指令時讀出便可 | 微操做控制信號由組合邏輯電路根據當前的指令碼、狀態和時序即時產生 |
執行速度 | 慢 | 快 |
規整性 | 較規整 | 繁瑣、不規整 |
應用場合 | CISC CPU | RISC CPU |
易擴充性 | 易擴充修改 | 困難 |
在微程序控制器中,造成微程序入口地址的是機器指令的操做碼字段。
微程序控制存儲器用來存放微程序,是微程序控制器的核心部件,屬於 CPU 的一部分。
硬佈線控制器與微程序控制器相比,微程序控制器的時序系統比較簡單。
一般狀況下,一個微程序的週期對應一個指令週期。
指令流水線
當多條指令在處理器中執行時,能夠採用如下三種方式:
流水線方式的特色(與傳統串行方式相比):
流水線的分類:
影響流水線的因素:
Cache 缺失的處理過程也會引發流水線阻塞。在不過多增長硬件成本的狀況下,如何儘量提升指令流水線的運行效率(處理能力)是選用指令流水線技術必須解決的問題。
流水線中有三類數據相關衝突:寫後讀(RAW)相關;讀後寫(WAR)相關;寫後寫(WAW)相關
流水線的性能指標:
1.流水線的吞吐率。在指令級流水線中,吞吐率是指在單位時間內流水線所完成的任務數量,或輸出結果的數量。計算流水線吞吐率(TP)的最基本的公式爲 TP = n / (Tk)。其中 n 是任務數,Tk是處理完 n 個任務所用的時間。
2.加速比。
3.效率。
1.超標量流水線技術。每一個時鐘週期可併發多條獨立指令,即以並行操做方式將兩條指令或多條指令編譯並執行,爲此需配置多個功能部件。超標量計算機不能調整指令的執行順序,所以經過編譯優化技術,把可並行執行的指令搭配起來,挖掘更多的並行性。
2.超流水線技術。在一個週期內再分段,在一個時鐘週期內一個功能部件使用屢次。不能調整指令的執行順序,靠編譯程序解決優化問題。
3.超長指令字。由編譯程序挖掘出指令間潛在的並行性,將多條能並行操做的指令組合成一條具備多個操做碼字段的超長指令字(可達幾百位),爲此須要採用多個處理部件。
流水 CPU 是以時間並行性爲原理構造的處理器。
超標量流水線能結合動態調度技術提升指令並行性。(與上面矛盾,暫時以此爲準)
五階段流水線可分爲取指 IF、譯碼/取數 ID、執行 EXC、存儲器讀 MEM、寫回 Write Back。數字系統中,各個子系統經過數據總線鏈接造成的數據傳送路徑稱爲數據通路,包括程序計數器、算術邏輯運算部件、通用寄存器組、取指部件等,不包括控制部件。
流水線按序流動時,在 RAW、WAR、WAW 中,只可能出現 RAW相關。
以上內容均來自王道書籍及相關課程等