《計(jì)算機(jī)原理與匯編語言程序設(shè)計(jì)》課件第7章_第1頁
《計(jì)算機(jī)原理與匯編語言程序設(shè)計(jì)》課件第7章_第2頁
《計(jì)算機(jī)原理與匯編語言程序設(shè)計(jì)》課件第7章_第3頁
《計(jì)算機(jī)原理與匯編語言程序設(shè)計(jì)》課件第7章_第4頁
《計(jì)算機(jī)原理與匯編語言程序設(shè)計(jì)》課件第7章_第5頁
已閱讀5頁,還剩90頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第7章中央處理器7.1CPU的基本組成7.2時(shí)序系統(tǒng)和控制方式7.3指令的執(zhí)行過程7.4組合邏輯控制器7.5微程序控制器7.6流水CPU習(xí)題

中央處理器(CentralProcessingUnit,CPU)是計(jì)算機(jī)的核心部件,由運(yùn)算器和控制器組成。CPU完成數(shù)據(jù)處理、協(xié)調(diào)和指揮整個(gè)計(jì)算機(jī)系統(tǒng)的操作,它是使整臺(tái)計(jì)算機(jī)能夠運(yùn)轉(zhuǎn)的最核心、最重要的部件。根據(jù)“存儲(chǔ)程序”的原理,當(dāng)我們使用計(jì)算機(jī)解決問題時(shí),要編寫程序,以二進(jìn)制指令序列的形式存放在存儲(chǔ)器中。這個(gè)序列明確告訴計(jì)算機(jī)要執(zhí)行的操作和要使用的數(shù)據(jù)。一旦把程序裝入內(nèi)存儲(chǔ)器,就可以由計(jì)算機(jī)自動(dòng)取出指令和執(zhí)行指令。CPU的作用就是當(dāng)計(jì)算機(jī)系統(tǒng)開始工作時(shí),從內(nèi)存中讀取指令與數(shù)據(jù),通過ALU運(yùn)算出結(jié)果后存回內(nèi)存,再由I/O接口將數(shù)據(jù)送給外圍設(shè)備,以達(dá)到數(shù)據(jù)處理的目的。

CPU對(duì)整個(gè)計(jì)算機(jī)系統(tǒng)的運(yùn)行是極其重要的,它具有以下五方面的基本功能。

(1)指令控制:對(duì)程序運(yùn)行的控制。程序是指令的有序集合,指令執(zhí)行的次序不能隨意改變,必須保證機(jī)器按規(guī)定的順序執(zhí)行程序。

(2)操作控制:對(duì)指令內(nèi)操作步驟的控制。一條機(jī)器指令是由若干個(gè)微操作組成的,控制器要管理并產(chǎn)生由內(nèi)存取出的每條指令的控制信號(hào),再把各種操作信號(hào)送往相應(yīng)的部件,從而控制這些部件按指令的要求進(jìn)行動(dòng)作。

(3)數(shù)據(jù)運(yùn)算:對(duì)數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算和邏輯運(yùn)算。

(4)時(shí)間控制:對(duì)各種操作實(shí)施時(shí)間上的控制。指令的微操作信號(hào)是有嚴(yán)格時(shí)間要求的,而一條指令的執(zhí)行時(shí)間也是有限制的。每個(gè)微操作、每條指令都必須在規(guī)定的時(shí)間內(nèi)完成,這是保證計(jì)算機(jī)有條不紊地自動(dòng)工作的前提。

(5)異常處理和中斷處理:對(duì)運(yùn)算中產(chǎn)生的錯(cuò)誤(如溢出)以及外部設(shè)備的服務(wù)請(qǐng)求等進(jìn)行處理。7.1CPU的基本組成早期的CPU主要由運(yùn)算器和控制器兩大部分組成,隨著集成電路的發(fā)展,目前CPU芯片集成了一些其他邏輯功能部件來擴(kuò)充CPU的功能,如浮點(diǎn)運(yùn)算器和Cache等。下面主要介紹運(yùn)算器和控制器。7.1.1運(yùn)算器運(yùn)算器已在第2章詳細(xì)介紹過,這里作簡單回顧。運(yùn)算器由算術(shù)邏輯單元(ALU)、寄存器、數(shù)據(jù)緩沖寄存器和狀態(tài)寄存器組成,它是數(shù)據(jù)加工處理部件。運(yùn)算器完成計(jì)算機(jī)的各種算術(shù)和邏輯運(yùn)算。相對(duì)控制器而言,運(yùn)算器是接受控制器的命令而進(jìn)行動(dòng)作,即運(yùn)算器所進(jìn)行的全部操作都是由控制器發(fā)出的控制信號(hào)來指揮的,是在控制器的控制下進(jìn)行工作,它屬于執(zhí)行部件。運(yùn)算器的主要功能是:

(1)執(zhí)行所有的算術(shù)運(yùn)算,如加、減、乘、除等基本運(yùn)算及附加運(yùn)算。

(2)執(zhí)行所有的邏輯運(yùn)算,并進(jìn)行邏輯測試,如零值測試或兩個(gè)值的比較。7.1.2控制器

1.控制器的功能盡管不同計(jì)算機(jī)的控制器在結(jié)構(gòu)上會(huì)有區(qū)別,但一般都具有以下幾個(gè)方面的基本功能。

(1)取指令:從內(nèi)存中取出當(dāng)前指令,并生成下一條指令在內(nèi)存中的地址。

(2)分析指令:也叫解釋指令、指令譯碼等,是對(duì)當(dāng)前取得的指令進(jìn)行譯碼,分析要求的操作,產(chǎn)生相應(yīng)的操作控制命令,如果參與操作的數(shù)據(jù)在存儲(chǔ)器中,還需要形成操作數(shù)地址。

(3)執(zhí)行指令:控制器必須具備執(zhí)行指令的功能??刂破靼凑詹僮餍再|(zhì)要求,發(fā)出各種相應(yīng)的微操作命令,指揮并控制CPU、內(nèi)存和輸入/輸出設(shè)備之間數(shù)據(jù)流動(dòng)的方向,使相應(yīng)的部件完成指令要求的各種功能。

(4)控制程序和數(shù)據(jù)的輸入與結(jié)果的輸出:根據(jù)程序的安排或人的干預(yù),在適當(dāng)?shù)臅r(shí)候向輸入/輸出設(shè)備發(fā)出一些相應(yīng)的命令來完成I/O功能,控制程序和原始數(shù)據(jù)的輸入,在必要的時(shí)候輸出程序的結(jié)果。

(5)對(duì)異常情況和特殊請(qǐng)求的處理:能夠處理計(jì)算機(jī)執(zhí)行程序過程中發(fā)生的一些異常情況,還能夠接受外設(shè)的中斷請(qǐng)求,例如除法出錯(cuò)、溢出中斷、鍵盤中斷等。

2.控制器的結(jié)構(gòu)控制器完成自動(dòng)取指令和執(zhí)行指令的任務(wù),它負(fù)責(zé)協(xié)調(diào)并控制計(jì)算機(jī)各部件完成一系列由指令序列規(guī)定的動(dòng)作??刂破饔芍噶畈考?、時(shí)序部件、微操作命令形成部件和中斷控制邏輯組成,其基本結(jié)構(gòu)如圖7-1所示。

1)指令部件指令部件的主要任務(wù)是完成取指令并分析指令。指令部件包括程序計(jì)數(shù)器、指令寄存器、指令譯碼器和地址形成部件。圖7-1控制器的基本結(jié)構(gòu)

(1)程序計(jì)數(shù)器PC。程序計(jì)數(shù)器又稱指令指針,用來存放指令的地址。在程序開始運(yùn)行時(shí),PC保存的是程序第一條指令的地址(程序的起始地址),一旦現(xiàn)行指令執(zhí)行完畢,程序計(jì)數(shù)器就提供后繼指令的地址。當(dāng)程序順序執(zhí)行時(shí),每讀取一條指令,PC就自動(dòng)加1,指向下一條指令地址;當(dāng)程序出現(xiàn)轉(zhuǎn)移時(shí),則將轉(zhuǎn)移地址送PC。因此程序計(jì)數(shù)器應(yīng)具有計(jì)數(shù)和寄存信息兩種功能。

(2)指令寄存器IR。指令寄存器用來存放現(xiàn)行指令。當(dāng)指令從主存中取出就暫存在IR中,直到該指令執(zhí)行完畢。

(3)指令譯碼器ID。指令譯碼器的功能是分析指令,由譯碼器輸出的信號(hào),提供給微操作信號(hào)形成部件,是產(chǎn)生與指令對(duì)應(yīng)微操作信號(hào)的依據(jù)。暫存在指令寄存器中的指令只有在其操作碼部分經(jīng)過譯碼之后才能識(shí)別出這是一條什么樣的指令,并產(chǎn)生相應(yīng)的控制信號(hào)提供給微操作信號(hào)發(fā)生器。

(4)程序狀態(tài)寄存器PSW。程序狀態(tài)寄存器用來保存算術(shù)或邏輯運(yùn)算的結(jié)果,使CPU和系統(tǒng)能及時(shí)了解機(jī)器運(yùn)行狀態(tài)和程序運(yùn)行狀態(tài)。

PSW常用的狀態(tài)有進(jìn)位標(biāo)志(C)、溢出標(biāo)志(V)、全零標(biāo)志(Z)、負(fù)標(biāo)志(N)等。此外,狀態(tài)條件寄存器還保存中斷和系統(tǒng)工作狀態(tài)等信息標(biāo)志。

(5)地址形成部件。地址形成部件是根據(jù)不同的尋址方式來形成操作數(shù)的有效地址的。有些微型機(jī)是通過運(yùn)算器來計(jì)數(shù)有效地址的,這類機(jī)器就沒有地址形成部件。

2)時(shí)序部件時(shí)序部件是用來產(chǎn)生計(jì)算機(jī)各部件工作時(shí)所需的各種定時(shí)信號(hào),以保證計(jì)算機(jī)有條不紊地進(jìn)行工作。時(shí)序部件由脈沖源、啟??刂七壿嫼凸?jié)拍信號(hào)發(fā)生器等部件組成。

3)微操作命令形成部件一條指令的取出和執(zhí)行可以分解成很多最基本的操作,這種最基本的不可再分割的操作稱為微操作。微操作信號(hào)發(fā)生器也稱為控制單元(CU),不同的機(jī)器指令具有不同的微操作序列。微操作命令形成部件用來產(chǎn)生指令的微操作命令,是控制器的核心部件。計(jì)算機(jī)的工作是執(zhí)行程序,程序是指令的序列,而指令的執(zhí)行是分步實(shí)現(xiàn)的,指令是微操作命令的序列。微操作命令是計(jì)算機(jī)最基本的控制命令,每一條機(jī)器指令都可以分解成一組微操作。微操作命令形成部件就是在時(shí)序信號(hào)的控制下,根據(jù)不同的指令和不同的運(yùn)行狀態(tài),產(chǎn)生對(duì)應(yīng)的微操作命令。按照微操作命令形成的方法不同,控制器可分為組合邏輯控制器和微程序控制器兩種基本類型。

4)中斷控制邏輯中斷控制邏輯是用來控制中斷處理的硬件邏輯。7.1.3CPU中的寄存器為了減少訪問內(nèi)存儲(chǔ)器的次數(shù),提高計(jì)算機(jī)的工作速度,在CPU的內(nèi)部設(shè)置了大量的寄存器。這些寄存器有些是用來暫存數(shù)據(jù)和地址的,有些是用來存放各類信息的。

1.通用寄存器

通用寄存器具有多種功能,可用于存放操作數(shù),也可用于存放地址?;穼ぶ匪璧幕芳拇嫫?、變址尋址所需的變址寄存器和堆棧尋址所需的堆棧指針,也都是通用寄存器。

CPU中的通用寄存器少的幾個(gè)、幾十個(gè),多則上百個(gè),通用寄存器越多,CPU的暫存信息的能力就越強(qiáng),計(jì)算機(jī)處理數(shù)據(jù)的速度也越快。

2.專用寄存器專用寄存器用來存放具有特殊作用的信息。前面提到的程序計(jì)數(shù)器(PC)、指令寄存器(IR)和程序狀態(tài)寄存器(PSW)都是專用寄存器。除此之外,還有存儲(chǔ)器地址寄存器(MAR)和存儲(chǔ)器數(shù)據(jù)寄存器(MDR),這是CPU與主存接口的寄存器。其中,MAR是用來保存當(dāng)前CPU所訪問的內(nèi)存單元的地址,包括來自程序計(jì)算器PC的指令地址和來自地址形成部件的操作數(shù)地址;MDR是用于存放待寫入存儲(chǔ)器的數(shù)據(jù)或指令及從存儲(chǔ)器中讀出的數(shù)據(jù)或指令。7.1.4數(shù)據(jù)通路數(shù)據(jù)通路是指數(shù)據(jù)在功能部件之間傳送的路徑。運(yùn)算器與各寄存器之間的傳送路徑就是中央處理器內(nèi)部的數(shù)據(jù)通路。數(shù)據(jù)通路描述了信息從什么地方開始,經(jīng)過哪個(gè)寄存器或多路開關(guān),最后傳送到哪個(gè)寄存器。數(shù)據(jù)通路實(shí)現(xiàn)CPU內(nèi)部的運(yùn)算器和寄存器以及寄存器之間的數(shù)據(jù)交換。數(shù)據(jù)通路的設(shè)計(jì)直接影響到控制器的設(shè)計(jì),同時(shí)也影響到數(shù)字系統(tǒng)的速度指標(biāo)和成本。一般來說,處理速度快的數(shù)字系統(tǒng),它的獨(dú)立傳送信息的通路較多。但是獨(dú)立數(shù)據(jù)傳送通路一旦增加,控制器的設(shè)計(jì)也就復(fù)雜了。因此,在滿足速度指標(biāo)的前提下,為使數(shù)字系統(tǒng)結(jié)構(gòu)盡量簡單,一般小型系統(tǒng)中多采用單總線結(jié)構(gòu)。在較大系統(tǒng)中可采用雙總線或三總線結(jié)構(gòu)。圖7-2就是一個(gè)單總線結(jié)構(gòu)的CPU。圖7-2CPU數(shù)據(jù)通路信息從什么地方開始,中間經(jīng)過哪個(gè)寄存器或多路開關(guān),最后傳送到哪個(gè)寄存器,都要加以控制。在各寄存器之間建立數(shù)據(jù)通路的任務(wù),是由稱為操作控制器的部件來完成的。操作控制器的功能,就是根據(jù)指令操作碼和時(shí)序信號(hào),產(chǎn)生各種操作控制信號(hào),以便正確地建立數(shù)據(jù)通路,從而完成取指令和執(zhí)行指令的控制。7.2時(shí)序系統(tǒng)和控制方式7.2.1指令周期和機(jī)器周期指令周期是指計(jì)算機(jī)從取指令、分析指令到執(zhí)行指令所需要的全部時(shí)間。由于各種指令的功能不同,因此不同指令的指令周期也不相同??梢詫⒅噶钪芷趧澐譃槿舾蓚€(gè)相對(duì)獨(dú)立的操作階段,比如取指令、取操作數(shù)、執(zhí)行指令和保存結(jié)果等??梢园淹瓿梢粋€(gè)基本操作所花費(fèi)的時(shí)間稱為機(jī)器周期,那么一個(gè)指令周期就由若干個(gè)機(jī)器周期組成。因?yàn)槊總€(gè)基本操作的難易程度不同,所以完成每個(gè)基本操作所需的時(shí)間也不相同。如果要定一個(gè)基準(zhǔn)的機(jī)器周期時(shí)間,為了保證所有基本操作能在這段時(shí)間內(nèi)完成,就只能取最長的機(jī)器周期作為基準(zhǔn)。計(jì)算機(jī)內(nèi)的操作大致可分為CPU內(nèi)部的操作和訪問主存的操作。CPU內(nèi)部的操作速度一般比較快,而CPU訪問一次內(nèi)存所花的時(shí)間較長,因此通常選訪問內(nèi)存的最短時(shí)間來作為機(jī)器周期的時(shí)間,所以機(jī)器周期又稱為CPU周期。任何一條指令,它的指令周期至少需要兩個(gè)CPU周期(取指和執(zhí)行指令),而復(fù)雜一些的指令周期則需要更多的CPU周期。在每個(gè)機(jī)器周期要完成若干個(gè)微操作,每個(gè)微操作都需要一定的時(shí)間,可以把一個(gè)機(jī)器周期再分成幾個(gè)相等的時(shí)間段,每個(gè)時(shí)間段可用時(shí)鐘信號(hào)來控制,在一個(gè)時(shí)鐘周期內(nèi)完成一個(gè)或幾個(gè)需同時(shí)執(zhí)行的操作。這樣,一個(gè)機(jī)器周期就包含有若干個(gè)時(shí)鐘周期,也稱節(jié)拍或T狀態(tài)。一個(gè)指令周期包含若干個(gè)機(jī)器周期,一個(gè)機(jī)器周期又包含若干個(gè)時(shí)鐘周期(節(jié)拍),每個(gè)指令周期中的機(jī)器周期數(shù)可以相等也可以不等,而每個(gè)機(jī)器周期內(nèi)的節(jié)拍數(shù)同樣可以相等也可以不等。如果計(jì)算機(jī)中每條指令的機(jī)器周期數(shù)相同,每個(gè)機(jī)器周期中的節(jié)拍電位也相同,這就是定長指令周期;如果不同的指令機(jī)器周期數(shù)不同,或不同的機(jī)器周期中節(jié)拍電位不同,則稱為不定長的指令周期。在每個(gè)節(jié)拍中還設(shè)置有一個(gè)或幾個(gè)寬度不等的工作脈沖,與節(jié)拍電位相配合完成數(shù)據(jù)加工與傳送。機(jī)器周期、節(jié)拍電位、工作脈沖構(gòu)成了三級(jí)時(shí)序系統(tǒng)。圖7-3是某機(jī)器的三級(jí)時(shí)序。從圖中可以看到,每個(gè)機(jī)器周期有兩個(gè)節(jié)拍(T0、T1),每個(gè)節(jié)拍有三個(gè)脈沖(P0、P1、P2)。圖7-3三級(jí)時(shí)序7.2.2時(shí)序發(fā)生器時(shí)序信號(hào)的作用是為計(jì)算機(jī)各部分的協(xié)調(diào)工作提供時(shí)序標(biāo)志。計(jì)算機(jī)工作時(shí),每條指令、每個(gè)機(jī)器周期、每個(gè)微操作都有嚴(yán)格的時(shí)間要求,CPU執(zhí)行指令的過程實(shí)際也是時(shí)序控制的過程,所以要在CPU中設(shè)置一個(gè)能夠提供時(shí)序信號(hào)的部件,將時(shí)序信號(hào)作為微操作信號(hào)發(fā)生器的輸入,給每個(gè)微操作帶上時(shí)間標(biāo)志,使微操作能在約定的時(shí)段產(chǎn)生并在規(guī)定的時(shí)間間隔內(nèi)完成。產(chǎn)生周期節(jié)拍、脈沖等時(shí)序信號(hào)的部件稱為時(shí)序發(fā)生器。一個(gè)典型的時(shí)序發(fā)生電路如圖7-4所示。圖7-4時(shí)序系統(tǒng)組成框圖

1.脈沖源脈沖源產(chǎn)生具有一定頻率和寬度的時(shí)鐘脈沖信號(hào),為整個(gè)機(jī)器提供基準(zhǔn)信號(hào),它由石英晶體振蕩器和與非門等組成。

2.啟??刂七壿媶⑼?刂七壿嫺鶕?jù)計(jì)算機(jī)的需要,可靠地送出時(shí)鐘脈沖,控制時(shí)序信號(hào)的發(fā)生或停止,實(shí)現(xiàn)對(duì)整個(gè)機(jī)器的正確啟動(dòng)或停止。

3.節(jié)拍信號(hào)發(fā)生器脈沖源產(chǎn)生的脈沖信號(hào),經(jīng)過節(jié)拍信號(hào)發(fā)生器后產(chǎn)生各個(gè)機(jī)器周期中的節(jié)拍信號(hào),用以控制計(jì)算機(jī)完成每一步微操作。7.2.3控制方式控制器執(zhí)行一條機(jī)器指令的過程,實(shí)質(zhì)上是完成一個(gè)微操作序列的過程。由于不同指令的復(fù)雜程度不同,所需要的微操作序列的長短和繁簡不同,因此執(zhí)行每條指令和每個(gè)微操作所需的時(shí)間不可能都相等。用什么樣的時(shí)序方式來形成微操作序列的問題就稱為控制方式。常見的控制方式有同步控制、異步控制和聯(lián)合控制三種。

1.同步控制方式同步控制方式是指計(jì)算機(jī)中所有的指令都采用統(tǒng)一的機(jī)器周期和節(jié)拍。這種方式的特點(diǎn)是:不考慮指令的復(fù)雜程度,也不考慮微操作的繁簡,都以最長的微操作序列和最繁的微操作為標(biāo)準(zhǔn),所有的機(jī)器周期都采用相同的節(jié)拍數(shù)。圖7-5就是一種典型的同步控制方式,每個(gè)機(jī)器周期包含4個(gè)節(jié)拍。這種控制方式對(duì)于簡單的指令在時(shí)間上造成很大的浪費(fèi),會(huì)降低計(jì)算機(jī)的工作速度。但該方式控制方便,設(shè)計(jì)比較簡單。圖7-5同步控制時(shí)序

2.異步控制方式異步控制方式?jīng)]有固定的CPU周期數(shù)和節(jié)拍數(shù),按實(shí)際需要分配給每條指令、每個(gè)操作的時(shí)間,每條指令、每個(gè)控制信號(hào)需要多少時(shí)間就占用多少時(shí)間。異步控制沒有基準(zhǔn)的同步信號(hào),微操作時(shí)序由專門的應(yīng)答線路控制,由前一個(gè)微操作完成的“結(jié)束”信號(hào)作為下一個(gè)微操作的“啟動(dòng)”信號(hào),見圖7-6。這種控制方式是按照不同的需要來安排時(shí)序,CPU沒有空閑狀態(tài),時(shí)間利用率高。但因需要采用各種應(yīng)答電路,其結(jié)構(gòu)比同步控制方式復(fù)雜。圖7-7是異步控制方式的時(shí)序,從圖中可以看到取指周期有4個(gè)節(jié)拍,而執(zhí)行周期只有3個(gè)節(jié)拍。圖7-6應(yīng)答通信圖7-7異步控制時(shí)序

3.聯(lián)合控制方式將同步控制和異步控制相結(jié)合就是聯(lián)合控制方式。這種方式對(duì)不同的指令、不同的微操作實(shí)行大部分同步、小部分異步的辦法,也可以采用在CPU內(nèi)部采用同步方式,在CPU與其他部件之間采用異步方式。7.3指令的執(zhí)行過程7.3.1基本功能的微操作計(jì)算機(jī)執(zhí)行指令的過程為:取指令、分析指令、執(zhí)行指令。下面用圖7-2所示的計(jì)算機(jī)結(jié)構(gòu),采用同步控制方式來分析執(zhí)行指令各階段的微操作。

1.取指令在取指令階段,CPU將存放在內(nèi)存中的指令取出至指令寄存器IR中。具體的工作過程如下:

(1)將程序計(jì)數(shù)器PC的內(nèi)容送存儲(chǔ)器地址寄存器MAR,通過MAR送入地址總線,即

PC→MAR→BUS

(2)向內(nèi)存發(fā)出讀命令,即

READ

(3)?PC內(nèi)容遞增,指向下一條指令地址,即

PC+1→PC

(4)將從內(nèi)存中讀出的指令通過數(shù)據(jù)總線送到存儲(chǔ)器數(shù)據(jù)寄存器MDR,再送入指令寄存器IR,即

BUS→MDR→IR

2.分析指令取出指令后,計(jì)算機(jī)進(jìn)入分析指令階段,指令譯碼器通過分析指令的操作碼,完成兩件工作:

(1)分析指令要完成什么操作,即控制器需發(fā)出什么操作命令。

(2)分析參與這次操作的操作數(shù)地址,即操作數(shù)的有效地址。由于各條指令的功能不同,涉及的尋址方式不一樣,所以在分析指令階段完成的操作也不同,有的不訪問內(nèi)存,有的要訪問內(nèi)存,有的甚至要訪問多次。對(duì)于無操作數(shù)的簡單指令,沒有計(jì)算有效地址的環(huán)節(jié)。

3.執(zhí)行指令執(zhí)行指令就是根據(jù)分析指令產(chǎn)生的操作命令和對(duì)操作數(shù)地址的要求,形成操作控制信號(hào)序列,通過對(duì)運(yùn)算器、內(nèi)存以及I/O設(shè)備等設(shè)備的操作,最終完成每條指令的功能。通過分析可以發(fā)現(xiàn),雖然不同的指令完成不同的任務(wù),但指令中涉及到的基本功能一般只有以下幾種:

(1)?CPU中一個(gè)寄存器內(nèi)容送至另一寄存器。

(2)?CPU寄存器的內(nèi)容傳送至內(nèi)存指定單元。

(3)從內(nèi)存指定單元中取出數(shù)據(jù)送入CPU寄存器中。

(4)執(zhí)行算術(shù)邏輯運(yùn)算,將運(yùn)算結(jié)果存入CPU寄存器中。除了一些特殊的指令,計(jì)算機(jī)中大部分的指令都是由這幾個(gè)基本功能組合而成的,所以要了解指令的工作過程,應(yīng)先了解這幾個(gè)基本功能的實(shí)現(xiàn)。下面用微操作來描述這些基本功能。

1)寄存器間數(shù)據(jù)傳送命令為

Ri→Rj

2)寫一數(shù)據(jù)到存儲(chǔ)器假設(shè)待寫入的數(shù)據(jù)在Ri中,存儲(chǔ)單元的地址在Rj中,則過程如下:

(1)將待寫入的數(shù)據(jù)裝入MDR,即

Ri→MDR

(2)存儲(chǔ)單元的地址送入MAR,即

Rj→MAR

(3)發(fā)出寫命令,即

WRITE

3)從存儲(chǔ)器中取一數(shù)據(jù)假設(shè)取出的數(shù)據(jù)要放在Ri中,要訪問的單元地址在Rj中,則過程如下:

(1)將存儲(chǔ)單元的地址送入MAR,即

Rj→MAR

(2)發(fā)出讀命令,即

READ

(3)將數(shù)據(jù)傳至MDR后送寄存器,即

MDR→Ri

4)算述邏輯運(yùn)算假設(shè)要將寄存器R1和R2的內(nèi)容相“與”,結(jié)果存入寄存器R3中。如圖7-2所示,由于CPU采用單總線結(jié)構(gòu),所以兩個(gè)操作數(shù)無法同時(shí)加載在ALU的兩個(gè)輸入端,于是將一個(gè)操作數(shù)先保存在寄存器Y中,當(dāng)?shù)诙€(gè)操作數(shù)送到ALU時(shí),啟動(dòng)“與”操作,結(jié)果暫存在寄存器Z中。用微操作描述如下:

R1→Y

R2∧Y→Z

Z→R37.3.2指令的微操作下面用指令

ADDR1

,@R2作為例子來說明指令的執(zhí)行過程。這條指令的功能是:將以R2的內(nèi)容為地址的存儲(chǔ)器操作數(shù)與存放在寄存器R1的操作數(shù)相加,結(jié)果存放在R1中。

(1)取指令:

PC→MAR

PC+1→PC

READ

MDR→IR

(2)取操作數(shù):

R2→MAR

READ

MDR→Y

(3)加運(yùn)算:

R1+Y→Z

(4)結(jié)果送R1:

Z→R1

7.4組合邏輯控制器7.4.1基本原理組合邏輯控制器是采用組合邏輯技術(shù)來實(shí)現(xiàn)控制操作,把控制部件看成是產(chǎn)生專門固定時(shí)序控制信號(hào)的邏輯電路,這種邏輯電路是由門電路和觸發(fā)器構(gòu)成的復(fù)雜邏輯網(wǎng)絡(luò),也稱為硬布線控制器。圖7-8是組合邏輯控制器的原理圖。組合邏輯控制器的輸入信號(hào)來自三方面,即指令譯碼器的輸出、時(shí)序發(fā)生器的時(shí)序信號(hào)、程序運(yùn)行的結(jié)果特征及狀態(tài);其輸出是一組帶有時(shí)間標(biāo)志的微操作控制信號(hào),即微操作=節(jié)拍·指令碼·條件。圖7-8組合邏輯控制器原理圖7.4.2組合邏輯控制器的設(shè)計(jì)步驟組合邏輯控制器的設(shè)計(jì)步驟如下:

(1)列出每條機(jī)器指令的微操作序列,結(jié)合機(jī)器采用的時(shí)序信號(hào)排出操作時(shí)間表。即把指令中的微操作落實(shí)到不同的節(jié)拍中,根據(jù)CPU的結(jié)構(gòu),畫出指令操作流程圖。

(2)進(jìn)行微操作信號(hào)綜合。將各條指令中出現(xiàn)相同微操作的地方和條件逐個(gè)列出,寫出各微操作控制信號(hào)的邏輯表達(dá)式。

(3)畫出微操作命令的邏輯圖。將所有同一微操作進(jìn)行“或”合并、化簡,求得每個(gè)微操作的優(yōu)化邏輯函數(shù)式。根據(jù)邏輯表達(dá)式畫出對(duì)應(yīng)每一個(gè)微操作信號(hào)的邏輯電路圖,用邏輯門電路實(shí)現(xiàn)。假設(shè)某計(jì)算機(jī)的內(nèi)部數(shù)據(jù)通路結(jié)構(gòu)如圖7-2所示,指令格式如下:計(jì)算機(jī)采用同步控制,指令系統(tǒng)包含4條指令,分別是:

ADDR1,R2

STOREADDR,R1

LOADR1,ADDR

JMPADDR指令編碼如表7-1所示。表7-1指?令?編?碼?表那么,控制器的設(shè)計(jì)過程如下:

(1)繪制指令執(zhí)行流程。綜合前面指令執(zhí)行過程中各階段的微操作,繪制出計(jì)算機(jī)指令執(zhí)行的流程圖,如圖7-9所示。

(2)微操作信號(hào)的產(chǎn)生。從圖7-9可以很清楚地看出每個(gè)微操作發(fā)生的時(shí)間和條件。將所有指令的微操作信號(hào)產(chǎn)生條件列出,再把同一微操作信號(hào)各種產(chǎn)生條件綜合。例如:

READ?=?T0+LOAD·T3

IR(D)→MAR?=?(STORE+LOAD)·T3

(3)化簡邏輯表達(dá)式,并用組合邏輯電路實(shí)現(xiàn)。圖7-9指令流程圖采用組合邏輯設(shè)計(jì)方法設(shè)計(jì)控制單元,思路清晰,簡單明了,但由于不同的指令對(duì)應(yīng)不同的微操作序列,每一個(gè)微操作命令又有各自的邏輯電路,因而微操作控制部件的線路結(jié)構(gòu)十分龐雜,不規(guī)整。而且指令系統(tǒng)功能越全,微操作命令就越多,線路也越復(fù)雜,導(dǎo)致控制器的調(diào)試十分麻煩,改動(dòng)也相當(dāng)不易。所以,控制部件一旦完成,除非重新設(shè)計(jì)和物理上對(duì)它重新布線,否則要想增加新的控制功能是不可能的。為了解決組合邏輯控制器的不足,隨著大規(guī)模集成電路制造技術(shù)的發(fā)展,從20世紀(jì)70年代起相繼推出了通用可編程邏輯器件—可編程邏輯陣列(PLA)。PLA在功能上相當(dāng)于很多“與”門的集合,并且它們可以在任何一個(gè)輸出端上“或”起來,PLA實(shí)際上是由一系列二極管構(gòu)成的“與”門和三極管構(gòu)成的“或”門組成的。組合邏輯控制器的優(yōu)點(diǎn)是高速、電路結(jié)構(gòu)化;缺點(diǎn)是使用器件數(shù)量多、功耗大、印制電路板布線復(fù)雜、體積大、可靠性差、成本高、電路不便修改和調(diào)試。采用微程序設(shè)計(jì)方案可以克服這些缺點(diǎn),但是,隨著RISC計(jì)算機(jī)的出現(xiàn),組合邏輯仍然是設(shè)計(jì)控制器的一種重要方法。7.5微程序控制器7.5.1微程序控制器的基本原理微程序設(shè)計(jì)思想最早是由英國劍橋大學(xué)M.V.Wilkes教授在1951年提出來的。為了克服組合邏輯控制器線路復(fù)雜、不易修改的缺點(diǎn),他提出用類似存儲(chǔ)程序的辦法,來解決微操作命令序列形成的問題。也就是將一條機(jī)器指令看成一段微程序,每一個(gè)微程序包含若干條微指令,每一條微指令對(duì)應(yīng)一個(gè)或幾個(gè)微操作。然后把這些微程序存到一個(gè)存儲(chǔ)器中,像尋找機(jī)器程序指令一樣的辦法來尋找微程序中的微指令。這些微指令是以二進(jìn)制代碼形式表示的,每位代表一個(gè)控制信號(hào)(控制信號(hào)有效的位為1,控制信號(hào)無效的位為0),逐條執(zhí)行微程序中的微指令,也就相應(yīng)地完成了一條機(jī)器指令的全部操作。微程序控制單元的核心部件是控制存儲(chǔ)器,簡稱控存。由于執(zhí)行一條機(jī)器指令必須多次訪問控制存儲(chǔ)器,以取出多條微指令來控制完成各個(gè)微操作,因此對(duì)控存的速度要求比較高。但是因?yàn)楫?dāng)時(shí)還不具備制造專門存放微程序的控制存儲(chǔ)器的技術(shù),所以微程序的設(shè)計(jì)思想在十幾年時(shí)間內(nèi)并未真正使用。直到1964年4月,世界上第一臺(tái)微程序設(shè)計(jì)的機(jī)器IBM360研制成功。微程序控制器同組合邏輯控制器相比較,具有規(guī)整、靈活、可維護(hù)等一系列優(yōu)點(diǎn),因而在計(jì)算機(jī)設(shè)計(jì)中逐漸取代了組合邏輯控制器,并被廣泛地應(yīng)用。微程序控制器具有設(shè)計(jì)規(guī)整,調(diào)試、維修以及更改、擴(kuò)充指令方便的優(yōu)點(diǎn),易于實(shí)現(xiàn)自動(dòng)化設(shè)計(jì)。但是,由于它增加了一級(jí)控制存儲(chǔ)器,所以指令的執(zhí)行速度比組合邏輯控制器慢。7.5.2微程序控制器的基本概念

1.微命令和微操作一條機(jī)器指令可以分解成一個(gè)微操作序列。微操作是計(jì)算機(jī)中最基本的、不可再分解的操作。微命令是微操作的控制信號(hào),是控制部件向執(zhí)行部件發(fā)出的各種控制命令,它是構(gòu)成控制序列的最小單位。例如,打開或關(guān)閉某個(gè)控制門的電位信號(hào)、某個(gè)寄存器的打入脈沖等。因此,微命令是控制計(jì)算機(jī)各部件完成某個(gè)基本微操作的命令,微操作是微命令的操作過程。微命令有兼容性和互斥性之分。兼容性微命令是指那些可以同時(shí)產(chǎn)生,共同完成某一些微操作的微命令;而互斥性微命令是指在機(jī)器中不允許同時(shí)出現(xiàn)的微命令。比如,ALU中的若干操作,在同一時(shí)間只能有一個(gè)操作有效;又比如,對(duì)于一個(gè)寄存器,在同一時(shí)間只能讀或?qū)懀荒茏x、寫同時(shí)進(jìn)行。兼容和互斥都是相對(duì)的,一個(gè)微命令可以和一些微命令兼容,和另一些微命令互斥。

2.微指令和微程序根據(jù)上一節(jié)的內(nèi)容可以看到,一條指令的一個(gè)節(jié)拍中可以有多個(gè)微命令,執(zhí)行相應(yīng)的一組操作,這若干個(gè)微命令的集合就是微指令,也叫控制字。一條微指令通常包含操作控制字段和順序控制字段兩部分。微指令格式如下:

1)操作控制字段操作控制字段用來指定微指令的微操作,又稱微操作碼字段。

2)順序控制字段順序控制字段用來確定下一條要執(zhí)行的微指令的地址,也稱微地址碼字段。一條機(jī)器指令的功能是由若干條微指令組成的序列來實(shí)現(xiàn)的,一系列微指令的有序集合就是微程序。每一條機(jī)器指令都對(duì)應(yīng)一個(gè)微程序。

3.微周期和微地址從控制存儲(chǔ)器中讀取一條微指令并執(zhí)行相應(yīng)的微命令所需的全部時(shí)間稱為微周期。存放微指令的控存單元地址稱為微地址。

4.微程序和程序的區(qū)別微程序和程序是兩個(gè)不同的概念。微程序是一個(gè)微指令的有序集合,用于描述機(jī)器指令。微程序?qū)嶋H上是機(jī)器指令的實(shí)時(shí)解釋,是由計(jì)算機(jī)的設(shè)計(jì)者事先編制好并存放在控制存儲(chǔ)器中的,對(duì)程序員來說,它是“透明”的,一般也不提供給用戶。程序是機(jī)器指令的有序集合。機(jī)器指令表明計(jì)算機(jī)能完成的一項(xiàng)基本功能,是提供給程序員使用的基本單位。程序是由機(jī)器指令組成,由軟件人員事先編好存放在主存或外存中的。微程序控制的計(jì)算機(jī)涉及兩個(gè)層次:一個(gè)是機(jī)器語言或匯編語言程序員所看到的傳統(tǒng)機(jī)器層,包括機(jī)器指令、工作程序和主存儲(chǔ)器;另一個(gè)是機(jī)器設(shè)計(jì)者看到的微程序?qū)?,包括微指令、微程序和控制存?chǔ)器。CPU運(yùn)行的程序存放在主存儲(chǔ)器中,而控制器運(yùn)行的微程序則存放在控制存儲(chǔ)器中。7.5.3微程序控制器的基本結(jié)構(gòu)

1.微程序控制器的結(jié)構(gòu)微程序控制器的結(jié)構(gòu)如圖7-10所示,它由控制存儲(chǔ)器、微指令寄存器、微地址形成部件和微地址寄存器組成。

1)控制存儲(chǔ)器(CM)控制存儲(chǔ)器簡稱控存,用于存放所有指令的微程序,是微程序控制器的核心部件,由高速只讀存儲(chǔ)器構(gòu)成。它的容量取決于計(jì)算機(jī)指令系統(tǒng)的規(guī)模。

2)微指令寄存器(μIR)微指令寄存器用來存放從控存中取出的微指令,并保存到它被執(zhí)行結(jié)束為止。圖7-10微程序控制器原理圖

3)微地址形成部件微地址形成部件用來產(chǎn)生初始微地址和后繼微地址。

4)微地址寄存器(μMAR)微地址寄存器接受微地址形成部件送來的微地址,為在CM中讀取微指令做準(zhǔn)備。

2.微程序控制器的工作過程

一條機(jī)器指令是由微指令的序列來實(shí)現(xiàn)的,一條機(jī)器指令對(duì)應(yīng)著一個(gè)微程序,全部的微程序就實(shí)現(xiàn)了整個(gè)指令系統(tǒng)。在微程序控制器中,用控制存儲(chǔ)器取代了組合邏輯控制器中的微操作產(chǎn)生部件,將計(jì)算機(jī)指令系統(tǒng)所對(duì)應(yīng)的全部的微程序存放在控制存儲(chǔ)器中,通過執(zhí)行微程序完成指令要求的操作。微程序控制器的工作過程描述如下:

(1)執(zhí)行取指令公共操作。從控存中取出“取指令”的微程序,這是一段公用的微操作。取指微程序的入口地址一般為CM的0號(hào)單元,當(dāng)取指微程序執(zhí)行完后,從主存中取出的機(jī)器指令就已存入指令寄存器IR中了。

(2)由機(jī)器指令的操作碼字段通過微地址形成部件產(chǎn)生該機(jī)器指令所對(duì)應(yīng)的微程序的入口地址,并送入μMAR。

(3)從CM中逐條取出對(duì)應(yīng)的微指令,執(zhí)行完一條微指令后,根據(jù)微地址形成方法產(chǎn)生后繼微地址,讀取下一條微指令。

(4)執(zhí)行完對(duì)應(yīng)于一條機(jī)器指令的一個(gè)微程序后,返回取指微程序的入口地址,再執(zhí)行取指微程序,完成取下一條機(jī)器指令的公共操作。如此周而復(fù)始,直到整個(gè)程序執(zhí)行完畢。7.5.4微指令編碼一條微指令包含操作控制字段和順序控制字段兩大部分。這里所說的微指令編碼指的是操作控制字段的編碼方法,即指微命令在操作控制字段中的表示方法。這種編碼方法要包含全部指令所需要的所有微命令信息,也就是要將所有的微命令以編碼形式組合到微指令的操作控制字段中。與指令的操作碼字段一樣,此部分編碼要考慮的問題是,操作控制字段要盡可能短而機(jī)器又能高效地工作,譯碼電路還要簡單。常用的編碼方法有以下幾種。

1.直接編碼法直接編碼法也稱不譯法,其特點(diǎn)是操作控制字段中的每一位代表一個(gè)微命令。在這種形式的編碼中,操作控制字段的每一個(gè)獨(dú)立的二進(jìn)制位代表一個(gè)微命令,某位為“1”表示這個(gè)微命令有效,為“0”則表示這個(gè)微命令無效。每個(gè)微命令對(duì)應(yīng)并控制數(shù)據(jù)通路中的一個(gè)微操作,無須進(jìn)行譯碼,各位可以分別直接控制計(jì)算機(jī)。假設(shè)一臺(tái)計(jì)算機(jī)共有20條微命令(C0~C19),用直接編碼法,微指令操作控制字段的形式為:如果在這個(gè)系統(tǒng)中,某一條微指令只有C1、C4、C18三個(gè)微命令有效,則這條微指令的操作控制字段如下所示:若微命令的總數(shù)為N個(gè),則微指令字的控制字段就要有N位。如果計(jì)算機(jī)中微命令總數(shù)有幾百個(gè),微指令可能就無法表示了。另外,在N個(gè)微命令中,有許多是互斥的,不允許并行操作,將它們安排在一條微指令中沒有意義,而且會(huì)使信息的利用率下降。這種方法雖然結(jié)構(gòu)簡單直觀,并行性強(qiáng),且由于輸出可以直接用于控制,操作速度快,但是微指令字太長,利用率不高,要求控制存儲(chǔ)器容量較大,所以一般適用于微命令少的場合,在復(fù)雜的系統(tǒng)中很少單獨(dú)采用,往往與其他編碼方法混合起來使用。

2.最短編碼法最短編碼法是把所有的微命令統(tǒng)一編碼,每條微指令只定義一個(gè)微命令。若微命令的總數(shù)為N,操作控制字段的長度為L,則最短編碼法應(yīng)滿足下列關(guān)系:2L≥N最短編碼法的微指令字長最短,但要通過一個(gè)微命令譯碼器譯碼以后才能得到需要的微命令。微命令數(shù)目越多,譯碼器就越復(fù)雜。這種方法在同一時(shí)刻只能產(chǎn)生一個(gè)微命令,不能充分利用機(jī)器硬件所具有的并行性,使得機(jī)器指令對(duì)應(yīng)的微程序變得很長,而且對(duì)于某些要求在同一時(shí)刻同時(shí)動(dòng)作的組合性微操作將無法實(shí)現(xiàn)。直接控制法使微指令字過長,而最短編碼法則使得微指令字最短。這種方法也只能與其他方法混合使用。

3.字段直接編碼法字段直接編碼法是將操作控制字段分為若干個(gè)小段,每段內(nèi)采用最短編碼法,段與段之間采用直接控制法,如圖7-11所示。這是前述兩種編碼法的一個(gè)折中,既具有兩者的優(yōu)點(diǎn),又克服了它們的缺點(diǎn)。與直接控制法相比,雖然由于增加譯碼電路,使微程序的執(zhí)行速度稍稍減慢,但字段直接編碼法可使微指令字大大縮短,目前在微程序控制器設(shè)計(jì)中,字段直接編碼法使用較普遍。圖7-11字段直接編碼法字段直接編碼法的關(guān)鍵是將所有的微命令分段,操作控制字段的分段原則是:

(1)把互斥性的微命令分在同一段內(nèi),就是把不允許同時(shí)出現(xiàn)的微命令安排在同一個(gè)段中,而把兼容性的微命令分在不同段內(nèi)。這樣既有助于提高信息的利用率,縮短微指令字長,又有助于充分利用硬件的并行性,加快執(zhí)行的速度。

(2)每個(gè)小段中包含的信息位不能太多,否則將增加譯碼線路的復(fù)雜性和譯碼時(shí)間。

(3)一般每個(gè)小段還要留出一個(gè)狀態(tài),表示本字段不發(fā)出任何微命令。因此當(dāng)某字段的長度為3位時(shí),最多只能表示7個(gè)互斥的微命令,通常用000表示不操作。要嚴(yán)格區(qū)分出互斥性或兼容性微命令是不容易的,可以簡單地以功能部件或公用通路來劃分,因?yàn)橐话阃还δ懿考凸猛分械奈⒉僮髦荒芊謺r(shí)進(jìn)行。

4.字段間接編碼法字段間接編碼法是在字段直接編碼法的基礎(chǔ)上,用來進(jìn)一步縮短微指令字長的方法。間接編碼的含義是,一個(gè)字段的某些編碼不能獨(dú)立地定義某些微命令,而需要與其他字段的編碼來聯(lián)合定義。這種編碼法需要比直接編碼法多一級(jí)譯碼電路,微程序的執(zhí)行速度比較慢,所以不常用。7.5.5微指令地址的確定方法微程序的執(zhí)行過程與機(jī)器程序的執(zhí)行過程一樣,也存在程序執(zhí)行方向的控制問題。微指令的順序控制字段提供了產(chǎn)生下一條微指令地址的信息。一般情況下,微指令由控制存儲(chǔ)器讀出后直接給出下一條微指令的地址,這個(gè)微地址信息存放在微地址寄存器中。如果微程序不出現(xiàn)分支,那么下一條微指令的地址就直接由微地址寄存器給出。當(dāng)微程序出現(xiàn)分支時(shí),通過判別測試字段和執(zhí)行部件的“狀態(tài)條件”反饋信息,去修改微地址寄存器的內(nèi)容,按修改后的地址去讀下一條微指令。

1.初始微地址的形成每一條機(jī)器指令對(duì)應(yīng)一個(gè)微程序。由于所有機(jī)器指令的取指令操作都是相同的,因此將取指令操作的微命令編成一段公用的取指微程序。當(dāng)取指微程序從主存中取出機(jī)器指令之后,由機(jī)器指令的操作碼字段指出各個(gè)微程序的首地址(入口地址或初始微地址),這稱為“功能轉(zhuǎn)移”,主要有三種方式。

1)一級(jí)功能轉(zhuǎn)換如果機(jī)器指令操作碼字段的位數(shù)和位置固定,可以直接將操作碼與入口地址碼的部分位相對(duì)應(yīng)。假如某計(jì)算機(jī)有8條指令,操作碼分別為000、001、…、111,可以在控存的前8個(gè)單元安排8條無條件轉(zhuǎn)移微指令,分別轉(zhuǎn)到對(duì)應(yīng)的8個(gè)微程序的入口地址。

2)二級(jí)功能轉(zhuǎn)換當(dāng)各類機(jī)器指令的操作碼的位數(shù)和位置不固定時(shí),就要采用分級(jí)轉(zhuǎn)移的方法。第一次先按指令類型轉(zhuǎn)移,區(qū)分出指令屬于哪一類,如是單操作數(shù)指令還是雙操作數(shù)指令等。因?yàn)槊恳活悪C(jī)器指令中操作碼字段的位數(shù)和位置是固定的,所以第二次再按操作碼區(qū)分出具體是哪條指令,以找出相應(yīng)微程序的入口微地址。

3)通過PLA電路實(shí)現(xiàn)功能轉(zhuǎn)移將指令的操作碼和一些判別條件作為PLA電路的輸入,PLA的輸出就是相應(yīng)的微程序入口地址。這種方法比較適合用在機(jī)器指令的操作碼位數(shù)和位置都不固定的情況。

2.后繼地址的形成當(dāng)前正在執(zhí)行的微指令,稱為現(xiàn)行微指令?,F(xiàn)行微指令所在的控制存儲(chǔ)器單元的地址稱為現(xiàn)行微地址?,F(xiàn)行微指令執(zhí)行完畢之后,要執(zhí)行下一條微指令,下一條微指令稱為后繼微指令。后繼微指令所在的控制存儲(chǔ)器的地址稱為后繼微地址。微指令執(zhí)行的順序控制問題,實(shí)際上是如何確定下一條微指令的地址問題,也就是控制產(chǎn)生后繼微地址的過程。在微程序中,分支流程很多,不但轉(zhuǎn)移類指令有分支,還有很多指令的微程序中也會(huì)有分支。因?yàn)榇蠖鄶?shù)機(jī)器指令都會(huì)有幾種尋址方式,如果每條機(jī)器指令不同的尋址方式都單獨(dú)設(shè)置一段微程序,必將導(dǎo)致機(jī)器指令的微程序太長,全部微程序的量太大,所需要的控存容量太大,所以,可以把重復(fù)的部分作為共享的微子程序,由各微程序調(diào)用,這就產(chǎn)生了大量的尋址分支流程,對(duì)尋址分支程序,測試條件是機(jī)器指令中的尋址方式字段的編碼。按測試結(jié)果轉(zhuǎn)到相應(yīng)的尋址操作流程,這是多路分支流程。為了實(shí)現(xiàn)上述轉(zhuǎn)移,微程序控制常用的方法是在微程序中引入條件轉(zhuǎn)移的概念,對(duì)微指令系統(tǒng)進(jìn)行擴(kuò)充,把一些轉(zhuǎn)移的微指令包括進(jìn)去。轉(zhuǎn)移指令中,除了給出轉(zhuǎn)移地址以外,還要指出需要檢查哪個(gè)狀態(tài)標(biāo)志,條件代碼或指令寄存器哪些位作為產(chǎn)生轉(zhuǎn)移的條件。這種微地址叫做增量型微地址。通常,產(chǎn)生后繼微地址有兩種方法:

1)增量方式增量方式又稱計(jì)數(shù)器方式,這種方式是模擬機(jī)器指令的做法。在很多情況下,后繼微地址是連續(xù)的,因此對(duì)于順序地址,微指令可采用增量計(jì)數(shù)方法,即在一般情況下,微指令順序執(zhí)行,僅當(dāng)遇到轉(zhuǎn)移類指令才會(huì)改變微程序的執(zhí)行順序。借鑒用程序計(jì)數(shù)器來產(chǎn)生機(jī)器指令地址的方法,在微程序控制器中設(shè)置一個(gè)獨(dú)立的微程序計(jì)數(shù)器(μPC),一般情況下由μPC不斷加1增量指向后繼微地址,遇到需要轉(zhuǎn)移時(shí),可通過修改μPC的方法來實(shí)現(xiàn)微程序的轉(zhuǎn)移。因此微指令中可不包含地址字段,但考慮條件轉(zhuǎn)移類微指令的需要,應(yīng)設(shè)置一個(gè)條件測試字段。微指令格式如下:增量方式的優(yōu)點(diǎn)是簡單,易于掌握,編制微程序容易,每條機(jī)器指令所對(duì)應(yīng)的一段微程序一般安排在控存的連續(xù)單元中;但是這種方式不能實(shí)現(xiàn)兩路以上的并行微程序轉(zhuǎn)移,多路并行轉(zhuǎn)移功能較弱、靈活性較差、速度較慢。

2)斷定方式斷定方式的后繼微地址是由微程序設(shè)計(jì)者指定,或者根據(jù)微指令所規(guī)定的測試結(jié)果決定后繼微地址的全部或部分值。斷定方式一般用在微指令在控制存儲(chǔ)器中不連續(xù)存放的場合,這時(shí)由微指令的地址字段給出后繼微地址,考慮到轉(zhuǎn)移類微指令的需要,其順序控制字段一般由兩部分組成:條件測試字段和下條微指令地址字段,具體格式如圖7-12所示。測試段如果只有一位,則微地址將產(chǎn)生兩個(gè)分支;若有兩位,則最多可產(chǎn)生四個(gè)分支;依次類推,測試段為n位最多可產(chǎn)生2n個(gè)分支。圖7-12斷定方式的微指令7.5.6微指令格式

微指令的格式直接影響微程序控制器的結(jié)構(gòu)、控制存儲(chǔ)器的容量及執(zhí)行速度,也直接影響到微程序的編制。微指令格式的設(shè)計(jì)都是針對(duì)具體機(jī)器的數(shù)據(jù)通路結(jié)構(gòu)、控制存儲(chǔ)器的速度及指令系統(tǒng)的要求而確定的,微指令的編譯方法是決定微指令格式的主要因素。微指令的格式大體分成兩類:水平型微指令和垂直型微指令。

1.水平型微指令一次能定義并執(zhí)行多個(gè)并行操作微命令的微指令,叫做水平型微指令。其一般格式如下:水平型微指令充分利用了數(shù)據(jù)通路的并行結(jié)構(gòu),編制的微程序比較短,執(zhí)行的速度比較快,但這種微指令字長較長,會(huì)增加控存的容量。采用直接編碼法、分段直接編碼法進(jìn)行編碼的微指令,屬于水平型微指令。按照控制字段的編碼方法不同,水平型微指令又分為三種:全水平型(不譯法)微指令、字段譯碼法水平型微指令以及直接和譯碼相混合的水平型微指令。

2.垂直型微指令垂直型微指令類似機(jī)器指令的格式,在微指令中設(shè)置微操作碼字段,采用微操作碼編譯法,由微操作碼規(guī)定微指令的功能。它不具有并行控制功能,每條微指令只能產(chǎn)生1~2個(gè)微命令。每條微指令的功能簡單,因此,實(shí)現(xiàn)一條機(jī)器指令的微程序要比水平型微指令編寫的微程序長得多。它是采用較長的微程序結(jié)構(gòu)去換取較短的微指令結(jié)構(gòu),所以,它的并行控制能力差,微程序長度較長,執(zhí)行速度慢。7.5.7微指令的執(zhí)行方式

1.串行執(zhí)行方式微指令的串行執(zhí)行方式,是指執(zhí)行現(xiàn)行微指令與取后繼微指令在時(shí)間上是順序進(jìn)行的,即只有取出現(xiàn)行微指令并執(zhí)行完畢后,才能取下一條微指令。串行微程序控制中,微指令周期等于取微指令的時(shí)間加上執(zhí)行微指令時(shí)間之和。串行執(zhí)行方式中所需的微指令周期較長,但控制簡單,形成微地址的硬件較少。

2.并行執(zhí)行方式

因?yàn)樵谖⒅噶钪芷谥校∥⒅噶詈蛨?zhí)行微指令分別由不同的部件來完成,所以為了提高微指令的執(zhí)行速度,可以將這兩部分操作重疊起來執(zhí)行,以縮短微指令周期。在并行執(zhí)行方式中,要求在執(zhí)行本條微指令的同時(shí),預(yù)取下一條微指令,從而微指令周期僅等于完成微操作的時(shí)間,可以節(jié)約取微指令的時(shí)間。但當(dāng)后繼微指令是需要測試轉(zhuǎn)移且測試轉(zhuǎn)移條件依賴現(xiàn)行微指令的執(zhí)行結(jié)果時(shí),預(yù)取的微指令就不一定是真正的后繼微指令了,這時(shí)可以延遲一個(gè)微周期再取微指令。7.6流水CPU流水線(Pipeline)技術(shù)是目前廣泛應(yīng)用于CPU中的一項(xiàng)重要技術(shù)。指令流水類似于工廠的裝配線,裝配線利用了產(chǎn)品在裝配的不同階段其裝配過程不同這一特點(diǎn),使不同產(chǎn)品處在不同的裝配段上,即每個(gè)裝配段同時(shí)對(duì)不同產(chǎn)品進(jìn)行加工,這樣可大大提高裝配效率。將這種裝配生產(chǎn)線的思想用到指令的執(zhí)行上,就引出了指令流水的概念。完成一條指令要分成許多階段。為簡單起見,把指令的處理過程分為取指令和執(zhí)行指令兩個(gè)階段,在早期的CPU中,指令的執(zhí)行不采用流水技術(shù),而是執(zhí)行一條指令后,再執(zhí)行下一條指令,取指令和執(zhí)行指令是周而復(fù)始地重復(fù)出現(xiàn),各條指令是按順序串行執(zhí)行的,如圖7-13所示。圖7-13串行執(zhí)行指令圖中取指令的操作由指令部件完成,執(zhí)行指令的操作由執(zhí)行部件完成。串行執(zhí)行雖然控制簡單,但各部件的利用率不高,如指令部件工作時(shí),執(zhí)行部件基本空閑,而執(zhí)行部件工作時(shí),指令部件基本空閑。如果指令執(zhí)行階段不訪問主存,則完全可以利用這段時(shí)間取下一條指令,這樣就使取下一條指令的操作和執(zhí)行當(dāng)前指令的操作同時(shí)進(jìn)行,如圖7-14所示,這就是兩條指令的重疊,也就是并行執(zhí)行指令。為了進(jìn)一步提高處理速度,需將指令的處理過程分解為更細(xì)的幾個(gè)階段。例如,把一條指令分成取指令、指令譯碼、計(jì)算操作數(shù)地址、取操作數(shù)、執(zhí)行指令、寫操作數(shù)6個(gè)功能段,在CPU中由6個(gè)不同功能的部件來完成,這些功能部件就像工業(yè)生產(chǎn)上的裝配流水線組成了一條指令處理流水線,這樣可以提高CPU的運(yùn)算速度。圖7-14并行執(zhí)行指令在劃分各個(gè)功能段時(shí)要讓各段所需時(shí)間盡量相等,否則,消耗時(shí)間長的功能段將成為流水線的瓶頸。當(dāng)程序中相近的指令之間出現(xiàn)某種關(guān)聯(lián)時(shí),會(huì)使指令流水線出現(xiàn)停頓,影響指令流水線的效率。流水過程中通常會(huì)出現(xiàn)以下三種相關(guān)沖突,使流水線斷流。

1.資源相關(guān)

資源相關(guān)是指多條指令進(jìn)入流水線后在同一機(jī)器時(shí)鐘周期內(nèi)爭用同一個(gè)功能部件所發(fā)生的沖突。解決資源相關(guān)沖突有兩個(gè)辦法:一個(gè)是增設(shè)一個(gè)存儲(chǔ)器,把指令和數(shù)據(jù)分開存放;另一個(gè)是將取指操作推遲一個(gè)時(shí)鐘周期進(jìn)行。

2.數(shù)據(jù)相關(guān)在流水計(jì)算機(jī)中,指令的處理是重疊進(jìn)行的,前一條指令還沒有結(jié)束,第二、三條指令就陸續(xù)地開始工作。由于多條指令的重疊處理,當(dāng)后繼指令所需的操作數(shù)剛好是前一指令的運(yùn)算結(jié)果時(shí),便發(fā)生數(shù)據(jù)相關(guān)沖突。解決數(shù)據(jù)相關(guān)沖突的辦法是:在流水CPU的運(yùn)算器中設(shè)置若干運(yùn)算結(jié)果緩沖寄存器,暫時(shí)保留運(yùn)算結(jié)果,以便于后繼指令直接使用,這稱為“向前”或定向傳送技術(shù)。

3.控制相關(guān)控制相關(guān)是由轉(zhuǎn)移指令引起的。當(dāng)執(zhí)行轉(zhuǎn)移指令時(shí),依據(jù)轉(zhuǎn)移條件的結(jié)果,可能是順序取下一條指令,也可能轉(zhuǎn)移到新的目標(biāo)地址取指令,從而使流水線發(fā)生斷流。為了減小轉(zhuǎn)移指令對(duì)流水線性能的影響,常用以下兩種轉(zhuǎn)移處理技術(shù):

(1)延遲轉(zhuǎn)移法:由編譯程序重排指令序列來實(shí)現(xiàn)?;舅枷胧恰跋葓?zhí)行再轉(zhuǎn)移”,即發(fā)生轉(zhuǎn)移時(shí)并不排空指令流水線,而是讓緊跟在轉(zhuǎn)移指令之后已進(jìn)入流水線的少數(shù)幾條指令繼續(xù)完成。

(2)轉(zhuǎn)移預(yù)測法:用硬件方法來實(shí)現(xiàn),依據(jù)指令過去的行為來預(yù)測將來的行為,選擇出現(xiàn)概率較高的分支進(jìn)行預(yù)取。流水線技術(shù)使計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)產(chǎn)生重大革新,為了進(jìn)一步發(fā)展,除了采用好的指令調(diào)度算法、重新組織指令執(zhí)行順序、降低相關(guān)帶來的干擾以及優(yōu)化編譯外,還可開發(fā)流水線中的多發(fā)技術(shù),設(shè)法在一個(gè)時(shí)鐘周期內(nèi)產(chǎn)生更多條指令的結(jié)果。常見的多發(fā)技術(shù)有超標(biāo)量技術(shù)、超流水線技術(shù)和超長指令字技術(shù)。習(xí)題一、填空題

1.中央處理器CPU具有

控制、

控制、

控制、

加工等基本功能。

2.?CPU從

取出一條指令并執(zhí)行這條指令的時(shí)間和稱為

3.多媒體CPU是帶有

技術(shù)的處理器。

4.在CPU中,指令寄存器的作用是

,程序計(jì)數(shù)器的作用是

,程序狀態(tài)字寄存器PSW的作用是

,地址寄存器的作用是

。

5.控制器主要包括

、

、

、

。

6.?CPU周期也稱為

,一個(gè)CPU周期包含若干個(gè)

。

7.在微程序控制器中,微操作是由

控制實(shí)現(xiàn)的最基本操作。一條機(jī)器指令是由若干

組成的微程序來解釋執(zhí)行的。

8.微程序順序控制常用的兩種方式是

方式和

方式。

9.控制器的控制方式有

、

三種形式,其中

方式最節(jié)省時(shí)間,

方式最浪費(fèi)時(shí)間,而

方式介于兩者之間。

10.在控制器中,指令寄存器(IR)的作用是

,它的位數(shù)與

有關(guān)。二、選擇題

1.中央處理器是指()。

A.運(yùn)算器 B.控制器

C.運(yùn)算器和控制器 D.運(yùn)算器、控制器和主存儲(chǔ)器

2.在CPU中跟蹤指令后繼地址的寄存器是()。

A.主存地址寄存器 B.程序計(jì)數(shù)器

C.指令寄存器 D.狀態(tài)條件寄存器

3.控制器的功能是()。

A.產(chǎn)生時(shí)序信號(hào) B.從主存取出一條指令

C.完成指令操作碼譯碼

D.從主存取出指令,完成指令操作碼譯碼,產(chǎn)生有關(guān)的操作控制信號(hào)。

4.指令周期是指()。

A.?CPU從主存取出一條指令的時(shí)間

B.?CPU執(zhí)行一條指令的時(shí)間

C.?CPU從主存取出一條指令加上執(zhí)行這條指令的時(shí)間

D.時(shí)鐘周期時(shí)間

5.微程序控制器中,機(jī)器指令與微指令的關(guān)系是()。

A.每一條機(jī)器指令由一條微指令來執(zhí)行

B.每一條機(jī)器指令由一段用微指令編成的微程序來解釋執(zhí)行

C.一段機(jī)器指令組成的程序可由一條微指令來執(zhí)行

D.一條微指令由若干條機(jī)器指令組成

6.下列部件中不屬于控制器的部件是()。

A.指令寄存器 B.操作控制器

C.程序計(jì)數(shù)器 D.狀態(tài)條件寄存器

7.計(jì)算機(jī)操作的最小時(shí)間單位是()。

A.時(shí)鐘周期 B.指令周期

C.?CPU周期 D.微指令周期

8.運(yùn)算器的作用是()。

A.計(jì)算 B.算術(shù)運(yùn)算 C.邏輯運(yùn)算 D.算術(shù)和邏輯運(yùn)算

9.控制器的作用是()。

A.控制CPU工作 B.控制整個(gè)計(jì)算機(jī)的工作

C.控制運(yùn)算器 D.控制主機(jī)工作

10.指令寄存器的作用是()。

A.存放指令地址 B.存放操作數(shù)地址

C.存放正在執(zhí)行的指令 D.存放操作數(shù)

11.指令的執(zhí)行過程包括()、分析指令、執(zhí)行指令。

A.取指令 B.傳送指令 C.控制指令 D.處理指令

1

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論