計算機組成與系統(tǒng)結(jié)構(gòu)課件:中央處理器_第1頁
計算機組成與系統(tǒng)結(jié)構(gòu)課件:中央處理器_第2頁
計算機組成與系統(tǒng)結(jié)構(gòu)課件:中央處理器_第3頁
計算機組成與系統(tǒng)結(jié)構(gòu)課件:中央處理器_第4頁
計算機組成與系統(tǒng)結(jié)構(gòu)課件:中央處理器_第5頁
已閱讀5頁,還剩177頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

中央處理器6.1CPU的功能與結(jié)構(gòu)6.2硬布線控制器設(shè)計6.3微程序控制器設(shè)計6.4微程序控制器與硬布線控制器的比較6.5CPU性能的測量與提高6.6CPU實例

6.1CPU的功能與結(jié)構(gòu)

利用大規(guī)模集成電路技術(shù),計算機系統(tǒng)中的控制器、運算器、寄存器組(又稱寄存器文件)被集成在一塊芯片上,形成了現(xiàn)在稱之為CPU的中央處理單元,也稱為(微)處理器。由于控制器是計算機系統(tǒng)工作的控制核心,因此CPU成為現(xiàn)代計算機中的核心器件。

6.1.1CPU的功能

1.功能

到目前為止,所有商用計算機系統(tǒng)都是按照馮·諾依曼計算機的存儲程序控制原理在運行,所以CPU是不可缺少的。CPU的主要功能是執(zhí)行存儲在主存中的指令序列,也即執(zhí)行程序,具體操作如下:

(1)取得指令:CPU從主存中取得指令,將其暫存在CPU內(nèi)部的指令寄存器中。

(2)執(zhí)行指令:CPU對取得的指令進行譯碼、執(zhí)行。

(3)確定下條指令地址:CPU依據(jù)當(dāng)前指令信息確定下條指令在主存中的地址(順序地址或由分支跳轉(zhuǎn)類指令決定的跳轉(zhuǎn)地址)。

(4)重復(fù)過程(1)~(3),直到將程序中所有指令執(zhí)行完畢為止。

計算機的功能要通過CPU執(zhí)行指令來體現(xiàn),執(zhí)行指令的核心部件就是控制器??刂破鞯淖饔檬菫镃PU內(nèi)外的所有部件提供指令執(zhí)行時所需的控制信號。

2.指令周期

在執(zhí)行一條指令的過程中,由CPU完成的一組操作構(gòu)成一個指令周期(InstructionCycle)。指令周期也被定義為執(zhí)行一條指令所用的時間。所以指令周期既是運行時間的描述,也是操作動作的描述。

盡管指令周期隨著指令類型的不同有所變化,但所有的指令周期至少包含兩個子周期:取指令子周期(FetchCycle)和執(zhí)行指令子周期(ExecuteCycle)。在取指令期間當(dāng)前CPU要執(zhí)行的指令從PC指定的主存單元中讀出,在執(zhí)行指令期間指令指定的操作被執(zhí)行。另外,檢查懸掛的中斷請求操作也常作為一個子周期包含在指令周期中,即中斷子周期(InterruptCycle)。

當(dāng)指令的尋址方式及功能較復(fù)雜時,也可以將執(zhí)行指令子周期拆分為取數(shù)子周期(OperandCycle)和執(zhí)行子周期,或分解為取數(shù)子周期、執(zhí)行子周期、存數(shù)子周期。指令周期中的各子周期也稱為CPU周期或機器周期。因此,一個指令周期通常包含若干個CPU周期。圖6.1給出了一個指令周期中四個子周期間的關(guān)系,它也是對CPU行為(不斷逐條取得并執(zhí)行指令)的一種簡要描述。

圖6.1指令周期及CPU操作

6.1.2基礎(chǔ)的RISC-V系統(tǒng)結(jié)構(gòu)

支持RISC-V指令集的處理器及系統(tǒng)可以有多種結(jié)構(gòu),圖6.2是RISC-V指令集研發(fā)者Patterson團隊提供的支持RV64I子集的基礎(chǔ)RISC-V結(jié)構(gòu)。圖6.2基礎(chǔ)的RISC-V結(jié)構(gòu)

RISC-V指令集的規(guī)則性和簡潔性使許多指令類的執(zhí)行類似,從而簡化了控制邏輯的實現(xiàn)。表6.1列出圖6.2中控制單元產(chǎn)生的控制信號及作用,這些控制信號僅僅是為支持ld、sd、add、sub、and、or和beq指令而設(shè)計的。如果增加控制器輸出的控制信號,增加必要的操作部件,利用圖6.2結(jié)構(gòu)可以支持完整的RV64I指令集,例如增加移位控制信號和移位寄存器,就可以實現(xiàn)移位指令的執(zhí)行。

例6.1根據(jù)

圖6.2,依據(jù)信息流次序,說明R型加法指令addx1,x2,x3的執(zhí)行步驟。

解該指令執(zhí)行需要四個步驟:

(1)依據(jù)PC從指令存儲器獲取指令,并使PC加4。

(2)從寄存器組讀取x2和x3寄存器,控制單元根據(jù)指令操作碼生成控制信號。

(3)控制信號控制ALU對從寄存器組讀取的兩個數(shù)據(jù)進行加運算。

(4)將ALU的結(jié)果寫入位于寄存器組的目標(biāo)寄存器x1中。

例6.2根據(jù)圖6.2,依據(jù)信息流次序,說明I型加載寄存器指令ldx1,offset(x2)的執(zhí)行步驟。

解該指令執(zhí)行需要五個步驟:

(1)依據(jù)PC從指令存儲器獲取指令,并使PC加4。

(2)從寄存器組讀取x2寄存器的值。

(3)ALU對從寄存器組讀取的值與符號擴展的12位偏移(offset)進行求和運算。

(4)用ALU的和作為數(shù)據(jù)存儲器的地址。

(5)將從存儲器單元讀出的數(shù)據(jù)寫入寄存器組的x1寄存器中。

例6.3根據(jù)圖6.2,依據(jù)信息流次序,說明B型相等分支指令beqx1,x2,offset的執(zhí)行步驟。

解該指令操作非常像R型指令,但ALU輸出用于確定PC是用PC+4還是分支目標(biāo)地址改寫。該指令執(zhí)行需要以下四個步驟:

(1)依據(jù)PC從指令存儲器獲取指令,并使PC加4。

(2)從寄存器組讀取x1和x2寄存器。

(3)ALU對從寄存器組讀取的兩個數(shù)據(jù)做減法。PC值與符號擴展且左移1位的12位偏移(offset)相加,其和為分支目標(biāo)地址(即跳轉(zhuǎn)地址)。

(4)利用ALU的零狀態(tài)信息(即x1與x2寄存器的內(nèi)容是否相等)決定哪個加法器(PC+4還是PC+offset)的結(jié)果存儲在PC中。

6.1.3簡化的x86系統(tǒng)結(jié)構(gòu)

在CPU及系統(tǒng)各部件之間,可采用專用通道、總線或互連網(wǎng)絡(luò)等不同的連接方式,這使得CPU及系統(tǒng)的內(nèi)部結(jié)構(gòu)及操作方式也有所不同。圖6.3是將Intel8086簡化后的單總線結(jié)構(gòu)CPU模型,在總線上定時是由時鐘控制的。圖6.4是早期x86系統(tǒng)結(jié)構(gòu)———單總線結(jié)構(gòu),系統(tǒng)中的CPU、主存儲器、I/O設(shè)備等功能部件通過系統(tǒng)總線(AB、DB、CB)相互連接。圖6.3單總線數(shù)據(jù)通路CPU內(nèi)部結(jié)構(gòu)圖6.4早期x86系統(tǒng)模型

(1)算術(shù)邏輯單元ALU完成程序執(zhí)行期間所需的數(shù)據(jù)計算,如算術(shù)運算、邏輯運算、移位運算等,運算的結(jié)果會影響到狀態(tài)寄存器。根據(jù)控制單元發(fā)出的控制信號,ALU就可以完成相應(yīng)的運算。

(2)控制單元CU,控制所有指令的執(zhí)行和所有信息的傳遞。它從主存儲器中取出指令、譯碼指令;將數(shù)據(jù)從主存或I/O設(shè)備移入CPU,或者將數(shù)據(jù)從CPU移出到主存或I/O設(shè)備,并確保數(shù)據(jù)在正確的時間出現(xiàn)在正確的地方;控制ALU使用哪個寄存器,做哪種運算操作??刂茊卧狢U使用程序計數(shù)器PC尋找下一條欲執(zhí)行指令。

(3)狀態(tài)寄存器PSW,存放ALU運行結(jié)果的狀態(tài)信息,如零標(biāo)志ZF、進位標(biāo)志CF、符號標(biāo)志SF、溢出標(biāo)志OF、奇偶標(biāo)志PF、半加進位標(biāo)志AF等。

(4)通用寄存器組R0~Rn,用來暫存數(shù)據(jù),如存放ALU所需的原始數(shù)據(jù)及運行結(jié)果。

(5)堆棧指針寄存器SP,又稱堆棧指示器,具有自動加減功能。

(6)數(shù)據(jù)寄存器DR,暫存CPU通過系統(tǒng)數(shù)據(jù)總線DB接收的來自主存、I/O設(shè)備的數(shù)據(jù)或發(fā)送到主存、I/O設(shè)備的數(shù)據(jù)。

(7)地址寄存器AR,存放CPU欲加載到系統(tǒng)地址總線AB上的、用于訪問主存或I/O設(shè)備的地址。

(8)程序計數(shù)器PC,具有自動增量的功能,存放下條執(zhí)行指令在主存中存儲的地址。

(9)指令寄存器IR,存放當(dāng)前CPU執(zhí)行的指令。

(10)暫存器Y,為單總線結(jié)構(gòu)的運算器提供一個原始數(shù)據(jù)。

(11)暫存器Z,存放運算結(jié)果。

在圖6.3中,ALU僅依賴CPU內(nèi)部寄存器中的數(shù)據(jù)進行工作,所以CPU內(nèi)部總線用來在各寄存器與ALU之間傳遞數(shù)據(jù),且某一時刻只傳遞一個數(shù)據(jù)。利用AR、DR和系統(tǒng)總線,CPU實現(xiàn)對主存儲器、I/O設(shè)備進行訪問,如圖6.4所示。

6.1.4微操作

1.微操作與微命令

在CISC系統(tǒng)中,指令功能通常比較強大,操作比較復(fù)雜,所以指令周期內(nèi)的CPU行為常常被分解為一系列微操作(μop),這些微操作一般定義為CPU最基本操作,分屬于不同的指令子周期(CPU周期)。圖6.5給出了一個程序執(zhí)行的分解過程,它描述了指令周期、CPU周期、微操作之間的關(guān)系。圖6.5程序執(zhí)行示意圖

以圖6.3所示CPU為例,當(dāng)將程序計數(shù)器PC的內(nèi)容傳送到地址寄存器AR時,便產(chǎn)生了訪存中的一個微操作,可以將其用符號標(biāo)記為

計算機系統(tǒng)由CPU內(nèi)外的大量部件構(gòu)成,每個部件的工作都需要控制信號的控制,所以控制器要產(chǎn)生大量的微命令。一個至多個微命令同時有效可以實現(xiàn)一個特定的微操作,而完成一組規(guī)定的微操作就可以實現(xiàn)一個CPU周期,順序完成取指、執(zhí)行、中斷等CPU周期,也就實現(xiàn)了一個指令周期,完成若干個指令周期就實現(xiàn)了一段程序的執(zhí)行,如圖6.5所示。

2.微操作流程

1)時序信號從指令周期的時間概念來看,CPU執(zhí)行指令需要三種時序信號:節(jié)拍周期、CPU周期、指令周期。

(1)節(jié)拍周期:完成一個微操作所用的時間。在計算機系統(tǒng)中,節(jié)拍周期是CPU完成各種微操作所需的最長時間,它是測量CPU行為的一個基本時間單位。而每個計算機系統(tǒng)都有內(nèi)部時鐘,用來管理指令執(zhí)行的速度,同步系統(tǒng)中的所有部件。CPU需要以一定的時鐘數(shù)來執(zhí)行每條指令,其性能也常用時鐘周期(ClockCycle)測量。所以,節(jié)拍周期T常以CPU時鐘周期TCLK或時鐘頻率fCLK作為設(shè)置依據(jù),即

(2)CPU周期(機器周期):完成一個子周期所用的時間。若干個節(jié)拍組成一個CPU周期,CPU周期可以設(shè)計為定長CPU周期與不定長CPU周期兩種,用M1~Mj表示。

將所有CPU周期中的節(jié)拍數(shù)設(shè)為固定值,即為定長CPU周期。此時,需將CPU周期中的節(jié)拍數(shù)規(guī)定為所有指令子周期所需時間節(jié)拍數(shù)的最大者,以保證所有指令子周期的微操作序列在CPU周期內(nèi)能夠完成。顯然,這種設(shè)計對于操作比較簡單的指令會出現(xiàn)空閑節(jié)拍,造成指令執(zhí)行時間增長,CPU速度降低。

(3)指令周期:執(zhí)行一條指令所用的時間。同樣,若干個CPU周期組成一個指令周期,指令周期也可以設(shè)計為定長指令周期與不定長指令周期兩種。

2)取指與中斷子周期微操作流程

假設(shè)CPU采用圖6.3所示的組織結(jié)構(gòu),計算機系統(tǒng)為圖6.4所示的組織結(jié)構(gòu),主存單元按字節(jié)編址。當(dāng)一條指令在該系統(tǒng)上執(zhí)行時,可以被看作是一組微操作的執(zhí)行。每條指令對應(yīng)的一組微操作稱為該指令的微操作流程或微操作序列。

例6.4寫出取指子周期的微操作序列。

解取指子周期出現(xiàn)在每一個指令周期的開始,并完成從主存中取出一條指令的任務(wù)。一個簡單的取指子周期可由3個節(jié)拍和4個微操作組成,即

當(dāng)取指子周期結(jié)束時,當(dāng)前CPU要執(zhí)行的指令已從PC指示的存儲單元中取出,并存放在了指令寄存器IR中。

當(dāng)連續(xù)的某些微操作動作不會相互干擾(可并行執(zhí)行)時,為了節(jié)省時間,可將其放在同一節(jié)拍中完成,如第2、3個微操作被放在了T2節(jié)拍中。也可將第3、4個微操作組合在一起,即

組合一個微操作序列應(yīng)遵守以下兩個基本規(guī)則:

(1)遵守操作發(fā)生的順序。如微操作AR←PC必須在DR←Memory[AR]之前,因為讀存儲器要利用AR中的地址。

(2)必須避免沖突。不要試圖在一個節(jié)拍內(nèi)對同一個部件做兩種及以上的不同操作,因為可能導(dǎo)致結(jié)果不可預(yù)知。如微操作DR←Memory[AR]和IR←DR不應(yīng)出現(xiàn)在同一個節(jié)拍內(nèi)。

每條指令的執(zhí)行都是從取指子周期開始的,取指操作對所有的指令都一樣,所以取指子周期也被稱作公操作。

例6.5寫出中斷子周期的微操作序列。解在執(zhí)行周期結(jié)束時有一個檢測,用來確定被允許的中斷是否已出現(xiàn)。若中斷出現(xiàn),則中斷子周期產(chǎn)生。中斷子周期的特性隨計算機的不同而有較大的變化。這里給出一個非常簡單的微操作序列:

3)執(zhí)行子周期微操作流程

取指子周期和中斷子周期是簡單、可預(yù)知的,它們都包含一個小的、固定的微操作序列。執(zhí)行子周期則不然。對于具有N個不同操作碼和尋址方式的計算機而言,會有N種不同的微操作序列出現(xiàn)。下面各例以類8086指令作為分析案例。

6.1.5控制器的組成

從微操作序列分析可以看出,CPU執(zhí)行一條指令是通過執(zhí)行一個指令周期來完成的,也就是通過從取指令微操作序列到執(zhí)行指令微操作序列的連續(xù)實現(xiàn)來完成的。每一個微操作又與一組微命令(即控制信號)相關(guān)聯(lián),實現(xiàn)一組微操作實際上就是要產(chǎn)生與這組微操作相應(yīng)的微命令,這就是控制器(也即控制單元)的任務(wù)。所以我們可以將控制器應(yīng)完成的任務(wù)歸納為:

(1)產(chǎn)生微命令??刂破饕a(chǎn)生CPU實現(xiàn)每個微操作所需的控制信號。因為微操作涉及計算機中所有部件的基本操作,所以控制器要產(chǎn)生的控制信號是使計算機中各部件有效工作必須的全部的控制信號。

(2)按節(jié)拍產(chǎn)生微命令。在此強調(diào)的是時間順序性。從微操作序列分析可以看出,時間順序性對于每一組微操作的正確實現(xiàn)是十分重要的,規(guī)定的微操作必須在規(guī)定的節(jié)拍中完成,因而導(dǎo)致相應(yīng)的微命令必須在規(guī)定的節(jié)拍中產(chǎn)生。

圖6.6是一個典型的控制器模型,由控制單元、指令譯碼器和時序產(chǎn)生器組成。加載到控制單元的輸入有指令寄存器IR、狀態(tài)標(biāo)志以及時間(節(jié)拍)信息,其中Ii(1≤i≤k)為指令信息,是控制單元必需的輸入;Ti(1≤i≤n)為節(jié)拍信息,在某些RISC系統(tǒng)中,當(dāng)指令執(zhí)行僅用單周期實現(xiàn)時,它只用于指令讀取時刻的控制;Flags為CPU狀態(tài)標(biāo)志(如零標(biāo)志ZF、進位標(biāo)志CF、符號標(biāo)志SF、溢出標(biāo)志OF等)和系統(tǒng)狀態(tài)信息(如中斷請求、DMA請求等信號),根據(jù)指令功能需求決定是否需要這組輸入。Ci(1≤i≤m)是控制單元的輸出,包含了加載到CPU內(nèi)、外部的全部控制信號。圖6.6控制器模型

設(shè)計者在設(shè)計控制器之前需要做以下工作:

(1)定義計算機基本硬件組成和基本指令系統(tǒng)。

(2)基于定義的硬件結(jié)構(gòu),針對每條指令,描述CPU完成的微操作。

(3)確定控制單元應(yīng)該完成的功能,即何時產(chǎn)生何種微命令。接下來,設(shè)計者需要選擇一種適當(dāng)?shù)脑O(shè)計方法來實際地構(gòu)造出控制器。

到目前為止,已研究出兩種設(shè)計控制器的通用方法,一種稱為硬布線控制(HardwiredControl)設(shè)計法,另一種稱為微程序控制(MicroprogrammedControl)或微碼控制(MicrocodedControl)設(shè)計法。

6.2硬布線控制器設(shè)計

6.2.1RISC-V系統(tǒng)控制單元設(shè)計

在圖6.2的RISC-V系統(tǒng)中,存儲器、寄存器、運算器ALU等功能部件如何工作是由控制單元生成的控制信號進行控制的。圖中控制單元的輸入是指令操作碼I[6:0],輸出是表6.1列出的控制信號。表6.2是該控制單元采用單周期實現(xiàn)的邏輯真值表,表的上半部分給出了與四個指令類對應(yīng)的輸入信號的編碼,每列一個指令類,它們決定了控制輸出是否能被有效設(shè)置。表的下半部分給出了與四種操作碼對應(yīng)的輸出控制信號。

分析表6.2真值表可以看出,每個控制信號是由一個與或邏輯確定的。圖6.7是控制單元的硬布線實現(xiàn),采用的是可編程邏輯陣列PLA(ProgrammableLogicArray),它由一個與門陣列之后緊跟一個或門陣列構(gòu)成。如果使用了128個可能的操作碼中的大多數(shù),并且需要產(chǎn)生更多的控制信號,那么圖中門的數(shù)目就會大得多,每個門也會有更多的輸入。圖6.7控制單元的結(jié)構(gòu)化實現(xiàn)

6.2.2類x86系統(tǒng)控制單元設(shè)計

針對圖6.3和圖6.4結(jié)構(gòu)確定的系統(tǒng),其硬布線控制器可采用圖6.6結(jié)構(gòu),其中時序產(chǎn)生器有兩種設(shè)計方法。

一是采用一級時序,即只利用節(jié)拍信號。此時,一條指令執(zhí)行的全過程是用一個從取指令到執(zhí)行指令的完整微操作序列來描述的,而且對這個微操作序列也是從頭至尾分配節(jié)拍的。

在圖6.3和圖6.4中,為所有的部件設(shè)計它們所需要的控制信號(微命令)來保證它們的正常工作,其中一部分控制信號描述如下:

由于每一個微操作的實現(xiàn)都是在某些微命令的控制下完成的,利用所設(shè)計的這些微命令,我們就可以寫出指令系統(tǒng)中每條指令對應(yīng)的微命令序列。例如,公操作取指子周期的微命令序列為:

我們也可以寫出某些指令執(zhí)行子周期的微命令序列。

控制器看似簡單,但在現(xiàn)代復(fù)雜的CISC體系結(jié)構(gòu)中,需要定義數(shù)量龐大的控制信號,需要設(shè)計微操作的時序邏輯、執(zhí)行微操作的邏輯、解釋操作碼的邏輯、基于ALU標(biāo)志做出判斷的邏輯等,這使得設(shè)計與測試這種硬件非常困難,且修改不靈活。因此,在CISC處理器中普遍采用的控制器設(shè)計方式是微程序設(shè)計法。

6.3微程序控制器設(shè)計

6.3.1微程序控制原理微程序設(shè)計的指導(dǎo)思想是用軟件方法組織和控制數(shù)據(jù)處理系統(tǒng)的信息傳送,并最終用硬件實現(xiàn)。利用這個指導(dǎo)思想,馮·諾依曼的“存儲程序控制原理”被引入到控制器的設(shè)計中。微程序設(shè)計法相當(dāng)于把控制信號存儲起來,所以又稱存儲控制邏輯法。

1.微指令

如6.1.4節(jié)所述,一條指令的操作是由一個微操作序列決定的,指令的微操作可以用一種符號進行標(biāo)記,如AR←PC,將這種標(biāo)記作為一種編程語言,即為微編程語言(MicroprogrammingLanguage)。對在一個時間單位(節(jié)拍)內(nèi)出現(xiàn)的一組微操作進行描述的微編程語句稱作微指令(Microinstruction)。一個微指令序列稱作微程序(Microprogram)或固件(Firmware)。微程序或固件是介于硬件和軟件之間的一種功能實現(xiàn)的中間路線,固件設(shè)計比硬件設(shè)計容易,但寫一個固件程序比寫一個軟件程序困難。

為了實現(xiàn)微指令所描述的微操作,需要由微指令提供相應(yīng)的微命令,所以微指令的核心作用就是產(chǎn)生控制信號。指令、微程序、微指令的關(guān)系如圖6.8所示。圖6.8指令、微程序、微指令的關(guān)系

一條(機器)指令對應(yīng)一個微程序,該微程序包含從取指令到執(zhí)行指令一個完整微操作序列對應(yīng)的全部微指令,每條微指令由對應(yīng)節(jié)拍下的全部微命令定義,通過微指令按序產(chǎn)生微命令(控制信號),一條指令中的所有微操作得以實現(xiàn),從而實現(xiàn)了一條指令的功能。

微指令的一般格式如圖6.9所示,它由兩部分組成:控制域和地址域??刂朴蛴脕懋a(chǎn)生控制信號(微命令),地址域用來產(chǎn)生下一條要執(zhí)行的微指令在控制存儲器中的存放地址。圖6.9微指令的一般格式

2.微程序控制器的一般結(jié)構(gòu)和工作原理

微程序控制器就像CPU,它的全部工作就是不斷地取得微指令、執(zhí)行微指令。為此,微程序控制器中必須要有微程序的存放地,這便是控制存儲器(ControlMemory,CM)。控制存儲器是微程序控制器的核心,存放著指令系統(tǒng)中定義的所有指令的微程序,控制器中其他部分的設(shè)計都是圍繞著保證控制存儲器能夠有效工作這一目標(biāo)而展開的,而最終控制器的運行結(jié)果就是依據(jù)控制存儲器中的微程序順序產(chǎn)生每條指令執(zhí)行時所需的全部控制信號。微程序控制器的一般結(jié)構(gòu)如圖6.10所示,它由控制存儲器、微指令寄存器、微地址寄存器、時序邏輯等部件組成。圖6.10微程序控制器的一般結(jié)構(gòu)

1)控制存儲器

控制存儲器簡稱控存,是微程序控制器的硬件核心,位于CPU內(nèi)部,用ROM構(gòu)成,專用于存放組成各條指令的微指令序列(即微程序)??刂拼鎯ζ鞯拇笮∮晌⒅噶铋L度和微程序占用的存儲單元數(shù)決定。由于控制存儲器占用CPU芯片的集成空間,因此不宜過大。

對控制存儲器的操作比較簡單,只要按節(jié)拍(微指令周期)給它加載地址和讀出控制信號Read,它就可以從指定的控存單元讀出微指令,存入到微指令寄存器中。

2)微指令寄存器和微地址寄存器

微指令寄存器μIR,又稱控制緩沖寄存器(ControlBufferRegister,CBR),它用來暫存由控存中讀出的微指令。它將微指令的控制域字段直接輸出或加載到譯碼器2(控制信息譯碼)上,生成CPU內(nèi)外的全部系統(tǒng)控制信號。它將微指令的地址域字段加載到時序邏輯上,為生成下一條微指令地址提供依據(jù)。

3)時序邏輯

時序邏輯有兩個作用:

一是依據(jù)時鐘按節(jié)拍為控制存儲器提供讀出控制信號。在每個節(jié)拍發(fā)一次讀出控制信號Read,從控存中讀出并執(zhí)行一條微指令,就可以實現(xiàn)一個節(jié)拍下的微操作。可見,在微程序控制器中,時序的設(shè)計與控制都很簡單。

二是在微程序運行時依據(jù)CPU內(nèi)外狀態(tài)(ALU標(biāo)志、中斷請求、DMA請求等)和當(dāng)前微指令地址域的信息生成下一條微指令地址,并將其裝入到微地址寄存器中。微指令地址域的設(shè)計不同,生成下一條微指令地址的硬件電路也會有所不同。

從圖6.10可以看出,微程序控制器是一個相對比較簡單的邏輯結(jié)構(gòu),它可以實現(xiàn)控制器應(yīng)具備的功能:一是微指令(代表微操作)執(zhí)行順序的控制,二是控制信號的產(chǎn)生(引起微操作發(fā)生)。它在一個節(jié)拍周期內(nèi)完成如下工作:

(1)時序邏輯給控制存儲器發(fā)出Read命令。

(2)從微地址寄存器μAR指定的控存單元讀出微指令,送入微指令寄存器μIR。

(3)根據(jù)微指令寄存器的內(nèi)容,產(chǎn)生控制信號,給時序邏輯提供下一條微地址信息。

(4)時序邏輯根據(jù)來自微指令寄存器的下一條微地址信息和CPU內(nèi)外狀態(tài),給微地址寄存器加載一個新的微地址。

6.3.2微指令設(shè)計

因為微程序控制器是通過執(zhí)行微指令來產(chǎn)生計算機系統(tǒng)所需控制信號的,所以微指令設(shè)計是微程序控制器設(shè)計的關(guān)鍵。微指令設(shè)計包括格式及編碼設(shè)計。微指令的一般格式如圖6.9所示,地址域決定如何取得微指令,控制域涉及微指令的執(zhí)行。

設(shè)計微指令需要從兩方面考慮:一是微指令的長度,二是微指令的執(zhí)行時間。較短的微指令有利于最小化控制存儲器的大小,進而降低控制器成本,減少控制器占CPU集成芯片的面積??焖佼a(chǎn)生控制存儲器的地址及快速產(chǎn)生控制信號可以縮短微指令周期,微指令的快速執(zhí)行有利于提高CPU的工作速度。

1.微指令地址的生成

時序邏輯部件由系統(tǒng)時鐘驅(qū)動,以微指令周期作為控制器的定時,它利用指令寄存器、ALU標(biāo)志、微地址寄存器、微指令寄存器(地址域)的內(nèi)容,產(chǎn)生訪問控制存儲器所需的下一條微指令地址。下一條微指令的地址有以下三種可能:

(1)由指令寄存器確定的微程序首地址。

(2)順序地址。

(3)分支跳轉(zhuǎn)地址。

順序地址是最常出現(xiàn)的,是微程序中主要使用的下一條微指令地址的形式,它的產(chǎn)生規(guī)則十分簡單,即

下一條微指令地址=當(dāng)前微指令地址+1(6.3)

分支跳轉(zhuǎn)地址是為實現(xiàn)微程序段間的銜接和在不同條件下執(zhí)行不同的微程序段而設(shè)置的,它分為無條件跳轉(zhuǎn)和條件跳轉(zhuǎn)、兩分支跳轉(zhuǎn)和多分支跳轉(zhuǎn)等情況。這類地址為靈活的微程序設(shè)計提供了支持。

以下三種微指令的地址域提供順序地址和跳轉(zhuǎn)地址。

1)兩地址格式(斷定方式)

提供順序地址和跳轉(zhuǎn)地址的最簡單方法是在每條微指令地址域中提供兩個地址字段,兩地址格式如圖6.11所示的微指令寄存器μIR的地址域格式,地址1和地址2分別提供下條順序地址和跳轉(zhuǎn)地址。為了靈活生成跳轉(zhuǎn)地址,以及確定下條微指令地址是選擇地址1(順序地址)還是地址2(跳轉(zhuǎn)地址),在地址域中還特別設(shè)置了地址選擇控制位(字段)AC。圖6.11兩地址格式的分支控制邏輯

2)單地址格式(計數(shù)方式,增量方式)

與在主存中存放程序一樣,在控制存儲器中,也是將順序執(zhí)行的微指令存放在連續(xù)的控存單元中,因此當(dāng)前微地址加1即可獲得下條順序微地址,計數(shù)器正適合完成此功能。參照CPU利用程序計數(shù)器(PC)提供順序的主存地址,在控制器中引入了微程序計數(shù)器(μPC這),樣利,用在微微程指序令計中數(shù)只器需具要備一的個加地1址計字?jǐn)?shù)段的提功供能跳,轉(zhuǎn)產(chǎn)的生微下地條址順即序可微,地單址地。

這樣,在微程序令中只需要一的個加地1址計字?jǐn)?shù)段的提功供能跳,轉(zhuǎn)產(chǎn)的生微下地條址順即序可微,地單址地。址格式如圖6.12所示的微指令寄存器μIR的地址域格式,地址字段僅提供下條跳轉(zhuǎn)地址圖6.12單地址格式的分支控制邏輯

3)可變格式

在微程序中,順序程序占主導(dǎo)地位。當(dāng)執(zhí)行順序微程序段時,微指令的地址域信息實際是無用的。也就是說,在微程序執(zhí)行的絕大多數(shù)時間里,微指令中存在冗余信息(無效位)。如果可以讓微指令在順序執(zhí)行時只產(chǎn)生控制信號,需要分支時再提供跳轉(zhuǎn)地址,這樣就可以保證微指令執(zhí)行時不存在冗余信息。這就是可變格式微指令的基本思路。

以下兩種微指令格式就是基于以上思路設(shè)計的,并通過1位的標(biāo)識加以區(qū)分。

(1)控制微指令。其格式如圖6.13所示。

其中,標(biāo)識S占1位,用來識別兩種微指令(控制微指令和跳轉(zhuǎn)微指令),用S=0表示控制微指令;控制域用來產(chǎn)生計算機系統(tǒng)所要求的各種控制信號,利用下面將要介紹的各種方法可以實現(xiàn)對控制域的編碼。

(2)跳轉(zhuǎn)微指令。其格式如圖6.14所示。

其中,用S=1表示跳轉(zhuǎn)微指令。在跳轉(zhuǎn)微指令中除標(biāo)識外只有地址域,它由分支控制AC和跳轉(zhuǎn)地址字段組成,所以地址域是典型的單地址格式。圖6.14跳轉(zhuǎn)微指令的格式

圖6.15示意了采用可變格式微指令時分支控制邏輯如何生成下條微指令的地址。與圖6.12比較,圖6.15在μIR的輸出端增加了一個門控電路,它受到微指令標(biāo)識位S的控制,同時標(biāo)識位S也對分支邏輯實施控制。圖6.15可變格式的分支控制邏輯

在采用可變格式微指令時,兩種格式的微指令長度有可能不一致,那么控制存儲器存儲單元的位數(shù)L應(yīng)設(shè)計為

4)三種地址域格式的比較

兩地址格式可以從微指令直接獲得順序地址和跳轉(zhuǎn)地址,所以分支邏輯可以設(shè)計的較簡單,下條微指令地址可以快速生成。兩個地址字段使得地址域較長,造成微指令較長,控存單元需要較多的位數(shù)。

2.微指令控制域編碼

對微指令控制域采用不同的設(shè)計方法,微指令就有不同的分類方法。一種較通用的分類方法是根據(jù)產(chǎn)生控制信號的方式將微指令分為水平型微指令(HorizontalMicroinstruction)和垂直型微指令(VerticalMicroinstruction)。水平型微指令可以使多個控制信號同時有效,達到使多個微操作同時發(fā)生的效果。垂直型微指令類似于機器指令,通常一條微指令實現(xiàn)一個微操作。

1)水平型微指令控制域的編碼

(1)直接表示法。

在微指令的控制域字段中,每一個二進制位用來定義一個控制信號(微命令)。若計算機系統(tǒng)需要n個控制信號,則控制域字段長度應(yīng)為n位,見圖6.16。若某位設(shè)定為“1”,表示該位定義的控制信號有效;為“0”時,表示該位定義的控制信號無效。這樣就可以利用一條微指令的執(zhí)行,同時使多個控制信號有效。這也被稱為水平編碼。圖6.16直接表示法

(2)譯碼法。

當(dāng)計算機系統(tǒng)功能較強,結(jié)構(gòu)較復(fù)雜時,系統(tǒng)所需的控制信號會很多,如果采用直接表示法,則導(dǎo)致微指令控制域很長,進而造成微指令長度過長,控制存儲器空間增大。

譯碼法采用編碼的方法表示控制信號,是一種有效減少控制域長度的設(shè)計

(3)字段譯碼法(字段編碼)。

字段譯碼法是一種性能良好而普遍使用的控制域編碼方法,它將控制域分為若干字段,字段內(nèi)垂直編碼,字段間水平編碼。若各字段的編碼相互獨立,通過各字段獨立譯碼可以獲得計算機系統(tǒng)的全部控制信號,這被稱作直接譯碼方式。若某些字段的編碼相互關(guān)聯(lián),則關(guān)聯(lián)字段要通過兩級譯碼才能獲得相關(guān)的控制信號,這被稱作間接譯碼方式。字段編碼及譯碼結(jié)構(gòu)如圖6.17所示。圖6.17字段譯碼法

根據(jù)圖6.3所示的CPU和圖6.4所示的計算機系統(tǒng),一種控制域字段的組織和編碼結(jié)果見表6.3。

在控制域中,字段數(shù)的選擇可以依據(jù)控制信號按資源或功能分類后的分類數(shù)確定,如表6.3中的8個字段。當(dāng)我們對每個字段的控制信號進行編碼時會發(fā)現(xiàn),有些字段的編碼利用率并不高,如表6.3中的字段4和字段5,造成了微指令長度的浪費。所以,在按功能或資源組織控制域字段后,通常還要進行優(yōu)化處理,將可以合并的字段重新組合,以減少控制域的長度。例如,根據(jù)控制信號相容、互斥的特點,微操作的時序性及NOP信號的靈活使用,我們可以將字段3、字段4和字段7的控制信號組織到其他字段中,結(jié)果見表6.4。

我們也可以對字段進行關(guān)聯(lián)設(shè)計,使一個域用于解釋另一個域。例如,對運算類控制信號可以按兩字段設(shè)計,字段i用來確定做哪類運算(算術(shù)、邏輯或移位),字段i+1用來進一步確定某類運算中的具體操作,設(shè)計結(jié)果見表6.5。只要對字段i和字段i+1采用間接譯碼方式,即用兩級譯碼器進行譯碼(參見圖6.17(b)),就可以生成所需的運算控制信號。

2)垂直型微指令控制域的編碼

垂直型微指令與水平型微指令的不同之處在于它們控制域的編碼方法不同。垂直型微指令的控制域采用與機器指令相似的格式,由微操作碼和微操作對象兩部分構(gòu)成,其格式如圖6.18所示。圖6.18垂直型微指令控制域的格式

3)水平型微指令與垂直型微指令的比較

水平型微指令具有以下特性:

(1)需要較長的微指令控制域。

(2)可以表示高度并行的控制信號。

(3)對控制域提供的控制信息只需較少的譯碼電路,甚至不需要譯碼。

垂直型微指令具有以下不同于水平型微指令的特性:

(1)需要較短的微指令控制域。

(2)并行微操作的能力有限。

(3)對控制信息必須譯碼,且譯碼電路一般較復(fù)雜。

4)微指令控制域編碼設(shè)計實例

一種水平型微指令的實例為IBMsystem/360Model50的微指令,格式見圖6.19。它由90位構(gòu)成,其中有21個字段的控制域、5個字段的地址域和3個校驗位。例如,由65~67位組成的控制字段控制CPU主加法器的右輸入,該字段指示應(yīng)該將哪一個寄存器連接到加法器的右輸入;68~71位指定加法器完成哪一種功能。這是一種允許較多控制信號同時有效的格式,不過仍然需要譯碼。圖6.19IBMsystem/360Model50的微指令格式

一種垂直型微指令的實例為IBMsystem/370Model145的微指令,格式見圖6.20。它由32位構(gòu)成,最左邊的字節(jié)是微操作碼,它指定應(yīng)完成的微操作;接下來的2個字節(jié)指定微操作數(shù),如給出CPU寄存器的地址;最右邊的字節(jié)包含用于構(gòu)成下一條微指令地址的信息。圖6.20IBMsystem/370Model145的微指令格式

6.3.3微程序設(shè)計及示例

1.微程序結(jié)構(gòu)

在設(shè)計微程序時,通常采用如下兩種典型結(jié)構(gòu)。

1)一條指令對應(yīng)一段完整的微程序由指令分析可知,指令系統(tǒng)中的任何一條指令都有唯一對應(yīng)的、從取指令到執(zhí)行指令的一個微操作(或微命令)序列,將該序列中每個節(jié)拍下的微操作(或微命令)用一條微指令表示,并按節(jié)拍順序?qū)⒏鳁l微指令組織在一起,就構(gòu)成了與該條指令對應(yīng)的微程序。按照這種方法可以編寫出所有指令的微程序,將每個微程序一一放置在其首地址規(guī)定的一塊控存區(qū)域中,就完成了微程序的設(shè)計及存儲。以這種微程序結(jié)構(gòu)設(shè)計的控制存儲器的組織結(jié)構(gòu)如圖6.21所示,暫未考慮中斷處理。圖6.21控制存儲器微程序組織結(jié)構(gòu)1

2)將微程序中的公共部分設(shè)計成微子程序進行公共調(diào)用

在每條指令的微程序中有大量相同的微程序段,如取指微程序段對于所有指令都一樣,尋址方式相同的指令中操作數(shù)獲取的微程序段一樣,每條指令執(zhí)行結(jié)束時要進行的中斷檢測處理微程序段也一樣,這些相同的微程序段在控制存儲器中重復(fù)出現(xiàn),造成控存空間的大量浪費。一種節(jié)約控存空間的做法是仿照程序設(shè)計中的子程序,將各個微程序中重復(fù)度較高的微程序段定義為微子程序,通過在每條指令相應(yīng)的微程序中調(diào)用微子程序來完成一條指令所需的完整微程序的運行。微子程序的引入意味著微程序中將更多地出現(xiàn)分支跳轉(zhuǎn),甚至是多條件或多分支的跳轉(zhuǎn)。按照這種微程序結(jié)構(gòu)設(shè)計的控制存儲器組織結(jié)構(gòu)如圖6.22所示。圖6.22控制存儲器微程序組織結(jié)構(gòu)2

2.編寫微程序

編寫微程序要做兩件事:一是按照設(shè)計好的微指令格式,將指令微操作(微命令)序列按每節(jié)拍一條微指令寫出每條微指令的具體編碼;二是按照選定的微程序結(jié)構(gòu),將微指令組織成微程序或微子程序。

例如,根據(jù)圖6.3所示的CPU和圖6.4所示的計算機系統(tǒng),假設(shè)我們采用如圖6.23所示的微指令格式。其中,控制域采用4字段編碼,相關(guān)控制信號的編碼結(jié)果參見表6.4;地址域僅設(shè)置了1位地址控制位,用來確定下條微指令是否要發(fā)生跳轉(zhuǎn)。若AC=0,下條順序微指令地址由μPC提供;AC=1,則根據(jù)指令操作碼和尋址信息跳轉(zhuǎn)到微程序首地址。圖6.23微指令格式示例

假設(shè)微程序采用如圖6.21所示的結(jié)構(gòu),且微程序首地址按表6.6所示方法生成。當(dāng)指令操作碼、尋址方式不同時,將形成不同的微程序首地址。每個微程序的最大長度由JA限制。表6.7給出了幾個微程序段的編碼結(jié)果。

6.3.4微程序控制器設(shè)計

1.微程序控制器設(shè)計的基本原則

1)速度快盡管微程序控制器不能像硬布線控制器那樣快速工作,但盡可能提高微程序控制器的工作速度仍是設(shè)計微程序控制器應(yīng)遵循的一個基本原則??梢詮囊韵聨追矫婕涌煳⒊绦蚩刂破鞯墓ぷ魉俣?

(1)快速產(chǎn)生下條微指令地址。使微指令地址域(尤其是地址控制位AC)設(shè)計盡可能合理,從而使時序邏輯產(chǎn)生下條微指令地址的電路不會過于復(fù)雜,使下條微指令地址能夠快速生成。

(2)快速獲得微指令。微指令放在控制存儲器中,若要從控制存儲器中快速讀出微指令,應(yīng)選擇高速ROM作為控制存儲器。

(3)快速產(chǎn)生控制信號。微指令寄存器中的控制域是控制信號產(chǎn)生的依據(jù),對該域采用不譯碼或用延遲較小的譯碼器可以快速生成控制信號。

2)體積小

控制器是CPU中的部件之一,占用CPU集成芯片的面積。由于集成度的限制,留給控制器的芯片面積是有限的,所以應(yīng)盡量減小微程序控制器占用的面積。微程序控制器所占的面積由控制器中使用的器件數(shù)量和控制存儲器的規(guī)模確定,而控制存儲器的規(guī)模起決定性的作用。減小控制存儲器的容量,可以明顯地減小微程序控制器占用的面積。

2.微程序控制器設(shè)計的基本步驟

1)指令分析

依據(jù)指令的功能,分析指令系統(tǒng)中每條指令的基本微操作,形成每條指令的執(zhí)行流程,即指令微操作(微命令)序列。

2)微命令分析

首先,對計算機系統(tǒng)中用到的所有微命令進行歸類。先將微命令按資源(部件)分類,即同一資源上的所有控制信號作為一類。當(dāng)計算機系統(tǒng)復(fù)雜時,資源(部件)較多,可能會造成過多的分類,此時可以對多個資源(部件)上的控制信號再按功能重新分類,使具有相同功能的控制信號作為一類,例如,將所有寄存器的鎖存輸入信號作為一類。

其次,對每一類中的微命令進行相容性與互斥性檢查。微命令分類結(jié)果要滿足:同一類的微命令是互斥的,不同類的微命令是相容的。

3)微指令及控制器結(jié)構(gòu)設(shè)計

由前述可知,微指令的格式與微程序控制器的結(jié)構(gòu)直接相關(guān),所以先確定微指令格式,然后依此確定出微程序控制器的結(jié)構(gòu)。

(1)確定微指令地址域格式。微指令地址域的格式有雙地址格式、單地址格式和可變地址格式三種形式。當(dāng)選擇雙地址格式時,圖6.10和圖6.11就確定了微程序控制器的結(jié)構(gòu);選擇單地址格式時,圖6.10和圖6.12就確定了微程序控制器的結(jié)構(gòu);選擇可變地址格式時,圖6.10和圖6.15就確定了微程序控制器的結(jié)構(gòu)。減少微指令地址域中的地址數(shù)量有利于微指令長度的減少,但同時意味著微程序控制器的硬件成本要有所增加。

(2)確定微指令控制域格式。微指令控制域有水平編碼、垂直編碼、字段編碼三種格式。選擇水平編碼時,圖6.10所示的微程序控制器不需要譯碼器2;選擇垂直編碼(1字段編碼)時,譯碼器2僅用一個一級譯碼器來設(shè)計;選擇字段編碼時,字段數(shù)量及每字段位數(shù)由微命令分類結(jié)果確定,譯碼器2應(yīng)按圖6.17(a)所示的每個字段都要用一個一級譯碼器設(shè)計,或按圖6.17(b)中所示的某些關(guān)聯(lián)字段要用一個兩級譯碼器來設(shè)計。使用譯碼器會增加微指令的執(zhí)行時間,但同時意味著減少了微指令的長度。

4)微程序與控制存儲器設(shè)計

微指令格式、微程序結(jié)構(gòu)決定了控制存儲器的規(guī)模。通常,一條微指令占用一個控存單元,微指令長度決定了控存單元的位數(shù);所有微程序的總長度決定了控存單元的單元數(shù)量。因此,控制存儲器的容量可由下式確定:

(1)選擇微指令和微程序結(jié)構(gòu)。微指令長度與微程序長度是相互關(guān)聯(lián)的,微指令包含的信息多,微指令長度便隨之增加,一段微程序中所需的微指令數(shù)量就會減少。所以微指令格式不僅關(guān)系到微程序控制器結(jié)構(gòu),也關(guān)系到微程序結(jié)構(gòu)及控制存儲器的容量。

(2)確定微程序入口地址(首地址)的生成方法。微程序入口地址(首地址)是通過指令操作碼、尋址方式信息映射得到的,采用不同的映射方法就有不同的首地址生成電路。

5)微程序控制器實現(xiàn)

根據(jù)微指令格式、微程序結(jié)構(gòu)、控制存儲器規(guī)模、時序邏輯、微程序控制器結(jié)構(gòu)進行設(shè)計并不斷優(yōu)化,最終確定微程序控制器軟硬件的實現(xiàn)方案,畫出微程序控制器硬件邏輯電路并加以實現(xiàn),編寫微程序并存儲到控制存儲器中。

6.4微程序控制器與硬布線控制器的比較

硬布線控制器完全由邏輯器件實現(xiàn),所以速度非??臁.?dāng)計算機系統(tǒng)越來越復(fù)雜時,硬布線控制器設(shè)計也越來越困難。硬布線控制器一旦被實現(xiàn),便不可修改和擴充。微程序設(shè)計使控制器設(shè)計規(guī)范化,并使其功能具有可修改性和可擴充性。微程序控制器內(nèi)部的譯碼和時序電路相對簡單,實現(xiàn)成本低,出錯概率小。微程序控制器的主要缺點是比硬布線控制器速度慢。

對于功能復(fù)雜的計算機系統(tǒng),微程序控制器相對易于實現(xiàn),所以CISC處理器幾乎都采用微程序技術(shù)。而RISC處理器具有簡單的指令格式,又強調(diào)高速度,所以主要采用硬布線方式。

早期的CPU基本上是非流水線技術(shù)的,指令執(zhí)行是順序的,無論是采用微程序控制器還是硬布線控制器,CPU的速度都是較慢的。而現(xiàn)在的CPU都采用流水線技術(shù),即采用微程序或硬布線技術(shù)設(shè)計的控制器以流水線方式工作,這是一種提高CPU速度的有效方法

6.5CPU性能的測量與提高

6.5.1CPU性能測量1.CPU時間

時間是測量CPU性能的重要指標(biāo)。通常CPU時間(CPUTime,TCPU)用于指導(dǎo)CPU設(shè)計,響應(yīng)時間(ResponseTime)用于指導(dǎo)系統(tǒng)設(shè)計。CPU時間被定義為運行一個程序所花費的時間。

響應(yīng)時間被定義為CPU時間與等待時間(包括用于磁盤訪問、存儲器訪問、I/O操作、操作系統(tǒng)開銷等時間)的總和。

CPU執(zhí)行程序的時間越短,速度越快,計算機的性能就越好。CPU時間是衡量計算機性能的可靠標(biāo)準(zhǔn)。

在控制器設(shè)計中我們已看到,CPU的工作依賴于系統(tǒng)時鐘。假設(shè)計算機的時鐘周期為TCLK,執(zhí)行某程序時,CPU需要使用N個時鐘周期,那么,CPU執(zhí)行該程序所用時間為

公式(6.6)表明,硬件設(shè)計者能通過縮短時鐘周期TCLK或減少執(zhí)行一段程序所需的時鐘周期數(shù)N來縮短執(zhí)行時間,達到改善性能的目的。然而,實際中許多減少時鐘周期數(shù)的技術(shù)同時會使時鐘周期增加。

例6.23計算機A執(zhí)行某程序用時20s,時鐘為1.5GHz,設(shè)計者現(xiàn)要構(gòu)建計算機B,使它以10s的執(zhí)行時間運行該程序。設(shè)計者已確定增加時鐘頻率是可行的,但會影響CPU設(shè)計的其余部分。若要使計算機B以1.2倍于計算機A的時鐘周期數(shù)運行該程序,那么設(shè)計者應(yīng)為B選擇多大的時鐘頻率?

2.CPI與IPC

我們用時鐘周期數(shù)來測量每條指令的執(zhí)行時間,CPU執(zhí)行一段程序(可能含有n類指令)所需的時鐘周期數(shù)N可表示為

程序的CPI也反映了程序的指令混合。當(dāng)對同一個指令系統(tǒng)的體系結(jié)構(gòu)采用不同的實現(xiàn)方案時,CPI提供了對不同實現(xiàn)方案的比較方法。有三方面的因素使得程序的CPI(靜態(tài)CPI)可能不同于CPU執(zhí)行的CPI(動態(tài)CPI):

①Cache行為發(fā)生變化;

②指令混合發(fā)生變化;

③分支預(yù)測發(fā)生變化。

對于某基準(zhǔn)程序,用CPI表示的CPU性能為

公式(6.10)的意義在于,它明確指出了影響CPU性能的三個關(guān)鍵因素:CPI、時鐘頻率和指令數(shù)。時鐘頻率由計算機系統(tǒng)硬件確定,受CPU硬件工藝及結(jié)構(gòu)影響,可與CPI參數(shù)一同優(yōu)化。指令數(shù)依賴于指令系統(tǒng)的體系結(jié)構(gòu)和編譯技術(shù)。

CPI更多地依賴于計算機設(shè)計的細(xì)節(jié),包括存儲系統(tǒng)和處理器結(jié)構(gòu)、指令類型等,例如,現(xiàn)代計算機中的流水線性能和Cache性能是影響CPI的兩個主要硬件因素。因此CPI會隨程序不同而變化,也會隨體系結(jié)構(gòu)實現(xiàn)不同而變化,設(shè)計者可通過對某種實現(xiàn)的模擬或使用硬件計數(shù)器來獲得CPI。但設(shè)計的最終目標(biāo)是優(yōu)化執(zhí)行時間,而不是公式中各獨立項。表6.8列出了部分軟硬件對公式(6.10)中三個因子的影響情況。

例6.24假設(shè)同一指令集結(jié)構(gòu)有兩種實現(xiàn)。計算機A的時鐘周期為200ps,執(zhí)行某程序時CPI=2.0;而計算機B的時鐘周期為360ps,執(zhí)行同一程序時CPI=1.2。執(zhí)行該程序時,哪個計算機更快?

解假設(shè)該程序包含I條指令,則

例6.25某個Java程序在桌面處理機上運行15s,一個新的Java編譯器生成的指令數(shù)僅是老編譯器的0.6倍,而CPI增加1.1倍。利用新的Java編譯器,我們能夠期望這個Java程序運行的有多快?

解利用老編譯器運行該Java程序的時間為TCPU=15s,而利用新編譯器運行該Java程序的時間為

3.MIPS

我們可以用另外一種標(biāo)準(zhǔn)來衡量CPU的性能,這就是CPU每秒鐘執(zhí)行的百萬指令數(shù)(MillionInstructionsPerSecond,MIPS)。對于一個給定的程序,MIPS被定義為

MIPS表示CPU執(zhí)行指令的速度,與執(zhí)行時間成反比,所以較快的計算機有較高的MIPS。MIPS也是測量CPU執(zhí)行速度的單位,例如4MIPS=4000000條指令/秒。

使用MIPS有三個問題:

其一,MIPS只說明了指令執(zhí)行速度,而沒有考慮指令的能力,我們不能對指令集不同的計算機進行MIPS比較,因為指令數(shù)一定是不同的;

其二,對于同一個計算機上的不同程序,MIPS是變化的,因此計算機對所有程序沒有單一的MIPS值;最后,也是最重要的,MIPS可能會與性能反向變化!

例6.26某計算機具有三類指令,測試每類指令得到的CPI結(jié)果如表6.9表示。用兩種不同的編譯器對某個程序進行編譯得到的各類指令的數(shù)量如表6.10所示。

假設(shè)計算機的時鐘頻率為4GHz,問:

(1)根據(jù)MIPS,由哪個編譯器生成的代碼序列執(zhí)行得更快?

(2)根據(jù)執(zhí)行時間,由哪個編譯器生成的代碼序列執(zhí)行得更快?

解由定義可得

例6.27對某程序進行性能測試,結(jié)果如表6.11所示。

(1)哪個計算機具有較高的MIPS值?

(2)哪個計算機更快?

4.Flops

為避免使用參數(shù)MIPS帶來的困惑,更多的高性能計算機系統(tǒng)采用參數(shù)Flops(FloatingPointOperationsPerSecond,每秒完成的浮點運算次數(shù))作為性能衡量指標(biāo),即

隨著高性能計算機的速度越來越快,Flops參數(shù)有如下度量單位:

全球超級計算機500強評選始于1993年,由德國曼海姆大學(xué)漢斯、埃里克等人發(fā)起,目前由德國曼海姆大學(xué)、美國田納西大學(xué)、美國能源研究科學(xué)計算中心以及勞倫斯伯克利國家實驗室聯(lián)合舉辦,以超級計算機的持續(xù)速度(LINPACK實測值)為基準(zhǔn),每半年評選一次。這個排行榜已發(fā)展成為全世界最具權(quán)威的超級計算機排行榜,是計算機行業(yè)密切關(guān)注的一個進步標(biāo)準(zhǔn),是衡量各國超級計算水平最重要的參考依據(jù)。TOP500評判的依據(jù)就是浮點運算速度,即每秒浮點運算次數(shù)。

表6.12給出最新(2019年11月)高性能計算機的參數(shù)指標(biāo)———浮點運算速度,它反映了當(dāng)代計算機發(fā)展的最高水平。

6.5.2提高CPU速度的策略

CPU的處理能力和處理速度是衡量CPU性能的兩個重要方面。處理能力可以通過指令系統(tǒng)反映,它是CPU能夠做什么的具體體現(xiàn)。處理速度是CPU執(zhí)行程序快慢的指標(biāo),是計算機用戶最關(guān)心的指標(biāo)之一。

提高CPU速度的技術(shù)可分為兩大類:具體實現(xiàn)的改進和體系結(jié)構(gòu)的改進??梢圆扇〉牟呗杂?

①采用更先進的硅加工制造技術(shù);

②縮短指令執(zhí)行路徑長度;

③簡化組織結(jié)構(gòu)來縮短時鐘周期;

④采用并行處理技術(shù)。

減少執(zhí)行指令的時鐘周期數(shù)(又稱路徑長度,PathLength),可以加快CPU的工作速度。采取的措施有:

①對實現(xiàn)每條指令的微操作依據(jù)相容性進行必要的組合,對微程序進行優(yōu)化處理,以減少微程序中微指令的數(shù)量,使執(zhí)行指令的時鐘周期數(shù)減少;

②CPU內(nèi)部數(shù)據(jù)通路采用雙總線甚至三總線,使同一時鐘周期內(nèi)可以同時完成多個微操作;

③硬件中增加特定功能部件,使某些操作可以并行地完成,如使PC具有計數(shù)功能減少對ALU的使用、設(shè)置取指單元完成指令的預(yù)取等。

6.5.3多核與多線程技術(shù)

一直以來,圍繞著速度提升,處理器的變革可謂是大浪淘沙、天翻地覆,最具有里程碑意義的發(fā)展是在一個處理器芯片上放置兩個以上的處理器核(ProcessorCore)以及多線程(Multi-Threading)的引入。

在處理器設(shè)計中,面臨以下兩大挑戰(zhàn):

(1)利用提高系統(tǒng)時鐘頻率來提升處理器性能越來越受到限制。提高主頻帶來了散熱、電流泄漏、制造工藝等問題,使高性能處理器設(shè)計變得越來越困難。對計算能力不斷提高的需求及單芯片容量日益增長的支持,從20世紀(jì)90年代開始,雙核/多核技術(shù)成為CPU制造商顯著提升處理器性能的共同解決方案。

(2)設(shè)計高單線程性能的處理器正變得越來越復(fù)雜。高單線程性能要求高復(fù)雜度的設(shè)計與驗證,需要更多的電路支持,進而增加功耗,使性能下降。解決這個問題的良方正是超線程/多線程技術(shù)。

1.多核技術(shù)

所謂多核(Multicore)技術(shù),就是將多個CPU(計算引擎,內(nèi)核)集成在一塊單獨的處理器芯片上。利用多核技術(shù)設(shè)計的處理器稱為多核處理器或多核CPU。在多核處理器中,多個內(nèi)核并不是簡單地拼湊在一起,它們共享二級或三級Cache、主存儲器和I/O設(shè)備等資源,并更多地依賴復(fù)制而不是構(gòu)造超標(biāo)量系統(tǒng)結(jié)構(gòu)來提升CPU性能、降低設(shè)計成本和功耗。

多核處理器具有以下顯著特點:

(1)控制邏輯簡單。與超標(biāo)量微處理器結(jié)構(gòu)和超長指令字結(jié)構(gòu)相比,多核結(jié)構(gòu)的控制邏輯復(fù)雜性較低,相應(yīng)的處理器硬件實現(xiàn)必然要簡單得多。

(2)高主頻。由于多核處理器控制邏輯相對簡單,包含極少的全局信號,因此信號線延遲對其影響比較小。在同等工藝條件下,多核處理器的硬件實現(xiàn)可獲得比超標(biāo)量處理器和超長指令字處理器更高的工作頻率。

(3)低通信延遲。由于多個處理器集成在一塊芯片上,且采用共享Cache的通信方式,多線程間的通信延遲會明顯降低,這樣也對存儲系統(tǒng)提出了更高的要求。

(4)低功耗。通過動態(tài)調(diào)節(jié)電壓/頻率、負(fù)載優(yōu)化分布等,可有效地降低功耗。

(5)設(shè)計和驗證周期短。處理器制造商一般采用現(xiàn)有的成熟單核處理器作為多核處理器的核心,從而可縮短設(shè)計和驗證周期,節(jié)省研發(fā)成本。

2.多線程技術(shù)

程序(Program)由進程(Process)組成,進程由線程(Thread)組成,線程是進程的執(zhí)行單元。進程是可以獨立運行的一段代碼,每個進程與在其他處理器上執(zhí)行的進程不相關(guān)。線程是由一個處理器來執(zhí)行的指令序列,多個不同的線程可能來自多個程序(例如不同用戶提交的任務(wù)),也可能從同一個程序中拆分出來

1)HT技術(shù)

Intel于2002年研發(fā)的超線程(HT)技術(shù)首先用于Pentium4。超線程技術(shù)就是利用特殊的硬件指令,把兩個邏輯內(nèi)核模擬成兩個物理芯片,讓單個處理器也能使用線程級并行計算,進而兼容多線程操作系統(tǒng)和軟件,減少CPU的閑置時間。根據(jù)Intel性能指標(biāo)評測,通過在含超線程技術(shù)的處理器上運行多線程應(yīng)用程序,其性能提升高達30%。更重要的是,兩個程序能夠同時在一個CPU上運行,無須來回切換。

2)HMT技術(shù)

統(tǒng)計分析表明,在計算機系統(tǒng)核心部件中,處理器頻率每兩

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論