1. 程式人生 > >【計算機組成原理】第5章 中央處理器

【計算機組成原理】第5章 中央處理器

5.1.1 CPU的功能

程式是一個指令序列,這個序列明確告訴計算機應該執行什麼操作,在什麼地方找到用來操作的資料。

一旦程式進入記憶體儲器,就可以由計算部件來自動完成取指令執行指令,而CPU就是執行這樣的功能。

CPU的四大基本功能:
指令控制、操作控制、時間控制、資料加工

1.指令控制

保證程式按順序執行程式。

2.操作控制

程式是一個指令序列,一條指令的功能往往由若干個操作訊號的組合來實現。

因此,CPU 管理併產生 由記憶體取出的每條指令的操作訊號,把各種操作訊號送往相應的部件,從而控制這些部件按指令的要求進行動作。

3.時間控制

對各種操作實施時間上的定時,稱為時間控制。

4.資料加工

對資料進行算術運算和邏輯運算處理。

5.1.2 CPU的基本組成

CPU的基本部分變成了運算器(ALU,算術邏輯單元)、cache、控制器三大部分。

控制器

由程式計數器PC、指令暫存器IR、指令譯碼器、時序產生器和操作控制器組成。

屬於“決策機構”,完成協調和只會整個計算機系統的操作。

其主要功能:

(1):從指令cache中取出一條指令,並指出下一條指令在指令cache中的位置。

(2): 對指令進行譯碼或測試,併產生相應的操作控制訊號,以便啟動規定的動作。

運算器

ALU算術邏輯單元、通用暫存器、資料緩衝暫存器、狀態字暫存器組成
有兩個主要功能:
(1): 執行所有的算術運算


(2): 執行所有的邏輯運算,並進行邏輯測試,如零值測試或兩個值的比較。

5.1.3 CPU的主要暫存器

【十分重要!!!一開始忽略了,後來看到在指令週期中需要有這個姿勢儲備!】

資料緩衝暫存器(DR)

存的是資料字。
作用:
①:作為ALU運算結果和通用暫存器之間資訊傳遞中時間上的緩衝。
②:補償CPU和記憶體、外圍裝置之間在操作速度上的差別。

指令暫存器(IR)

指令暫存器(IR)用來儲存當前正在執行的指令

PS:
在一條指令執行時,
先把它從指令cache儲存器(簡稱指存)讀出,
然後傳送到 指令暫存器,
然後 指令暫存器 中的操作碼欄位 傳送到 指令譯碼器 ,操作碼譯碼後,
向操作控制器發出具體操作的特定訊號。

程式計數器(PC)

作用:確定下一條指令在記憶體中的地址。

當執行指令時,CPU會自動修改PC的內容,以便其保持的總是將要執行的下一條指令的地址。
由於大多數指令都是按順序來執行的,所以修改的過程中通常只是簡單的對PC加1.

資料地址暫存器(AR)

存的是地址。
用來儲存當前CPU所訪問的資料cache儲存器種(簡稱數存)單元的地址

通用暫存器(R0~R3)

當ALU(算術邏輯單元)執行算數或邏輯運算時,為ALU提供一個工作區。
例如,在執行一次加法運算中,選擇兩個運算元(分別放在兩個暫存器)相加,所得到的結果再送到一個暫存器。

狀態字暫存器(PSW)

顧名思義,狀態字暫存器。
來儲存 算術指令 和 邏輯指令運算或測試結果建立的各種條件程式碼。
如:運算結果進位標誌(C);運算結果溢位標誌(V);運算結果為零標誌(Z);運算結果為負標誌(N);

5.1.4 操作控制器與時序產生器

資料通路:

多暫存器之間傳送資訊的通路。

操作控制器:

根據指令操作碼時序訊號(從主存取出指令,完成指令操作碼譯碼),產生各種操作控制訊號,以便正確地選擇資料通路,把有關資料打到一個暫存器,從而完成取指令執行指令的控制。
硬佈線控制器(時序邏輯型)(硬體實現)
微程式控制器(儲存邏輯型)(軟體實現)

時序產生器:

產生各種時序訊號(電位,脈衝)。
對各種操作實施時間上的控制。

5.2 指令週期

5.2.1 指令週期的基本概念

指令週期,CPU週期,T週期

指令週期是取出一條指令並執行這條指令的時間。

CPU週期,稱為機器週期,又稱時鐘週期,記憶體中讀取一個指令字的最短時間來規定CPU週期。

一個CPU週期又包含有若干個T週期。T週期為計算機操作的最小時間單位。

一條指令所需的最短時間為兩個CPU週期。

單週期、多週期

所謂單週期:就是在一個CPU週期中完成取指和執行操作【少數指令可實現】
大多數指令需要多個CPU週期完成指令週期的全部操作。

/程式執行前(R0)=00,(R1)=10,(R2)=20,(R3)=30

MOV指令的指令週期

地址:101 指令助記符:MOV RO,R1,傳送指令MOV,執行(R1)->R0
1.取指週期:
CPU進行:①:從指存中取出指令;②:對PC(程式計數器)+1;③:對指令操作碼進行譯碼和測試;
具體實現:
(1)PC裝入第一條指令地址101
(2)PC的內容放入ABUS(指令地址匯流排),對指令進行譯碼,並啟動讀命令【①取指令】
(3)從101號地址讀出的MOV指令通過IBUS裝入IR(指令暫存器)【①取指令】
(4)對PC(程式計數器)+1,為下一條指令做準備【PC+1】
(5)IR中的OP(操作碼)譯碼【③譯碼】
(6)CPU識別出是MOV指令。至此,取指週期結束。
2.執行週期:
(1)OC(操作控制器)送出控制訊號到通用暫存器,選擇R1(10)作為源暫存器,選擇R2作目標暫存器。
(2)OC送出控制訊號,OC->ALU.
(3)OC送出控制訊號,ALU->DBUS(資料匯流排);注意:任何時候,DBUS上只能有一個數據。
(4)OC送出控制訊號,DBUS->DR(資料緩衝暫存器)
(5)OC送出控制訊號,DR->R0.至此,MOV指令執行結束。
總結:
MOV是一條RR型指令,指令週期是兩個CPU週期,暫存器定址。
單字長,二地址。

LAD指令的指令週期

地址:102 指令助記符:LAD R1,6,取數指令LAD,從數存6號單元取數(100)->R1
1.取指週期:(CPU動作完全與MOV指令取指週期一樣,只是PC提供的指令地址是102)
CPU進行:①:從指存中取出指令;②:對PC(程式計數器)+1;③:對指令操作碼進行譯碼和測試;
具體實現:
(1)PC裝入第一條指令地址102
(2)PC的內容放入ABUS(指令地址匯流排),對指令進行譯碼,並啟動讀命令【①取指令】
(3)從101號地址讀出的LAD指令通過IBUS裝入IR(指令暫存器)【①取指令】
(4)對PC(程式計數器)+1,為下一條指令做準備【PC+1】
(5)IR中的OP(操作碼)譯碼【③譯碼】
(6)CPU識別出是LAD指令。至此,取指週期結束。
2.執行週期:
(1)OC(操作控制器)送出控制訊號到通用暫存器,將指令中的直接地址6放到DBUS上。
(2)OC送出控制訊號,地址碼6->AR(地址暫存器)
(3)OC送出控制訊號,將數存6號單元中的數–>DBUS.
(4)OC送出控制訊號,DBUS->DR(資料緩衝暫存器)
(5)OC送出控制訊號,DR->R1.至此,LAD指令執行結束。
總結:
LAD是一條RS型指令,指令週期是三個CPU週期(在DBUS上進行了地址傳送和資料傳送),直接定址,暫存器定址。
單字長,二地址。

ADD指令的指令週期

地址:103 指令助記符:ADD R1,R2,加法指令ADD,執行(R1)+(R2)->R2,結果(R2)=100
1.取指週期:(CPU動作完全與MOV指令取指週期一樣,只是PC提供的指令地址是103)

2.執行週期:
(1)OC(操作控制器)送出控制訊號到通用暫存器,選擇R1(10)作為源暫存器,選擇R2作目標暫存器。
(2)OC送出控制訊號,ALU作R1(100)和R2(20)的加法。
(3)OC送出控制訊號,將運算結果120–>DBUS.
(4)OC送出控制訊號,DBUS->DR(資料緩衝暫存器);ALU產生的進位訊號儲存在PSW(狀態字暫存器)
(5)OC送出控制訊號,DR(120)->R2,R2原來的內容被沖掉.至此,ADD指令執行結束。
總結:
ADD是一條RR型指令,指令週期是兩個CPU週期,暫存器定址。
單字長,二地址。

STO指令的指令週期

地址:104 指令助記符:STO R2,(R3),存數指令STO用(R3)間接地址,(R2)=120寫入數存30號單元地址
1.取指週期:(CPU動作完全與MOV指令取指週期一樣,只是PC提供的指令地址是104)

2.執行週期:
(1)OC(操作控制器)送出控制訊號到通用暫存器,選擇(R3)=30做資料儲存器的地址單元
(2)OC送出控制訊號,開啟通用暫存器的三態門(不經過ALU以節省時間)將地址30->DBUS。
(3)OC送出控制訊號,DBUS->AR(資料地址暫存器).
(4)OC送出控制訊號,通用暫存器選擇(R2)=120,作為數存的寫入資料
(5)OC送出控制訊號,開啟通用暫存器的三態門,將資料120->DBUS
(6)DBUS->30號單元。至此STO指令到此結束
總結:
STO是一條RS型指令,指令週期是兩個CPU週期,暫存器定址,暫存器間接定址(選擇(R3)=30做資料儲存器的地址單元)。
單字長,二地址。

JMP指令的指令週期

地址:105 指令助記符:JMP 101,轉移指令JMP,改變程式執行順序到101號單元
1.取指週期:(CPU動作完全與MOV指令取指週期一樣,只是PC提供的指令地址是105)

2.執行週期:
(1)OC(操作控制器)送出控制訊號到通用暫存器,選擇(R3)=30做資料儲存器的地址單元
(2)OC送出控制訊號,開啟IR(指令暫存器),將IR中的地址碼->DBUS
(3)OC送出控制訊號,DBUS->PC,PC中的原先106被替換。至此JMP指令到此結束
總結:
JMP指令週期是兩個CPU週期,直接定址。
單字長,二地址。

用方框圖語言表示指令週期

指令系統設計()
方框:按CPU週期
方框內內容:資料通路操作或操作控制
菱形符號:判別或測試
~:共操作,前邊講的5種操作的框圖描述。
公操作:取指令。

5.3 時序產生器和控制方式

CPU中的控制器用它來指揮機器工作,CPU可以用時序訊號/週期資訊來辨認從記憶體中取出的是指令(取指)還是資料(執行)一個CPU週期中時鐘脈衝對CPU的動作有嚴格的約束,操作控制器發出的各種訊號是時間(時序訊號)和空間(部件操作訊號)的函式。

PRO:用二進位制表示的資料和指令都存在記憶體中,那麼CPU是如何識別它們時指令還是資料。
時間上來講,取指令事件發生在指令週期的第一個CPU週期中,即發生“取指令”事件,而取資料事件發生在指令週期的後面幾個CPU週期中,即發生在執行指令階段。

空間上來講,如果取出的程式碼是指令,那麼就一定是送往指令暫存器去的,如果取出的程式碼是資料,那麼就一定是送往運算器去的。

時序訊號最基本的體制是電位-脈衝制。
硬佈線控制器,時序訊號採用:主狀態週期-節拍電位-節拍脈衝三級體制。
微程式控制器,時序訊號採用:節拍電位-節拍脈衝二級體制。

時序產生器的功能:

產生時序訊號。

時序產生器的組成:

時鐘源、環形脈衝發生器、節拍脈衝和讀寫時序譯碼邏輯、啟停控制邏輯。

控制方式:

同步控制,非同步控制,聯合控制。

同步控制

在任何情況下,已定的指令在執行時所需的機器週期數和時鐘週期數都是固定不變的。
選取方案:
1.採用完全統一的機器週期執行各種不同的指令。
2.採用不定長機器週期。
3.中央控制與區域性控制結合。

非同步控制

每條指令、每個操作控制訊號需要多少時間就佔用多少時間。
每條指令的指令週期可由多少不等的機器週期組成;
沒有固定的CPU週期數或嚴格的時鐘週期。

聯合控制

同步控制和非同步控制相結合的方式。

5.4 微程式控制

控制儲存器:

控制儲存器用來存放實現全部指令系統的微程式。
控制儲存器的字長即微指令字的長度,其儲存容量由機器指令系統而定,即取決於微程式的數量。對控制儲存器的要求是速度快,讀出週期要短。

微指令暫存器:

微指令暫存器是用來存放由控制儲存器讀出一條微指令資訊。
微地址暫存器決定要訪問的下一條微指令的地址,而微指令暫存器則儲存一條偽指令的操作控制欄位和判別測試欄位的資訊。

地址轉移邏輯:

通過判別測試欄位P和執行部件的“狀態條件”反饋資訊,去修改微地址暫存器的內容,實現一定的條件轉移。

微程式設計方法(會設計)

水平微指令和垂直微指令區別

水平型微指令並行操作能力強,效率高,靈活性強。垂直型微指令則比較差。
垂直型微指令中,一般只能完成一個操作,控制一兩個資訊傳送通路,因此微指令的並行操作能力低,效率低。

水平型指令執行一條指令的時間短,垂直型微指令執行時間長。

水平型微指令解釋指令的微程式,微指令字較長,微程式短的特點。
垂直型相反。

水平型微指令使用者難以控制,而垂直型指令與指令比較相似,容易控制。