《計(jì)算機(jī)組成原理》 課件 第7、8章 指令系統(tǒng)、中央處理器_第1頁
《計(jì)算機(jī)組成原理》 課件 第7、8章 指令系統(tǒng)、中央處理器_第2頁
《計(jì)算機(jī)組成原理》 課件 第7、8章 指令系統(tǒng)、中央處理器_第3頁
《計(jì)算機(jī)組成原理》 課件 第7、8章 指令系統(tǒng)、中央處理器_第4頁
《計(jì)算機(jī)組成原理》 課件 第7、8章 指令系統(tǒng)、中央處理器_第5頁
已閱讀5頁,還剩195頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第7章指令系統(tǒng)7.1指令格式7.2數(shù)據(jù)類型7.3尋址方式7.4指令類型與功能7.5指令系統(tǒng)的設(shè)計(jì)7.6指令系統(tǒng)的發(fā)展和改進(jìn)7.7指令系統(tǒng)實(shí)例:MIPS的指令系統(tǒng)

指令:要求計(jì)算機(jī)進(jìn)行基本操作的命令。一臺(tái)計(jì)算機(jī)所能執(zhí)行的全部指令的集合稱為該計(jì)算機(jī)的指令系統(tǒng)或指令集。計(jì)算機(jī)硬件能夠直接識(shí)別并執(zhí)行的程序是機(jī)器語言程序,而機(jī)器語言中的每一個(gè)語句就是一條指令。指令系統(tǒng)決定了計(jì)算機(jī)硬件所能完成的全部功能,是計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)設(shè)計(jì)者、系統(tǒng)軟件設(shè)計(jì)者和硬件設(shè)計(jì)者所共同關(guān)心的問題。一條指令中至少應(yīng)包含3方面的信息:要執(zhí)行的操作指明該指令要完成的具體功能。操作數(shù)的來源指明操作的對(duì)象(源操作數(shù))在哪里。操作結(jié)果的去向。指明要將操作的結(jié)果(目的操作數(shù))保存到何處。7.1指令格式7.1指令格式指令的基本格式每條指令由兩部分構(gòu)成:操作碼和地址碼操作碼:描述指令的操作功能,即要求計(jì)算機(jī)完成什么工作。(指令中必不可少的部分)地址碼:描述與操作數(shù)有關(guān)的信息,可以是操作數(shù)本身,也可以是存放操作數(shù)的地址。源地址:提供源操作數(shù)的地址目的地址:提供存放操作結(jié)果的地址7.1指令格式

根據(jù)指令中地址碼部分顯式給出的地址的個(gè)數(shù),可將指令格式分為以下5種。零地址指令零地址指令中只有操作碼,沒有地址碼。

指令格式:通常在兩種情況下可能采用零地址指令指令本身不需要任何操作數(shù)指令中所需的操作數(shù)是隱含指定的7.1.1指令的地址碼7.1指令格式一地址指令指令中給出一個(gè)地址

指令格式:在兩種情況下可能采用一地址指令指令本身只需要一個(gè)操作數(shù)

A

OP(A)指令操作需要兩個(gè)操作數(shù),指令中指明一個(gè)操作數(shù),而另外一個(gè)操作數(shù)在默認(rèn)的某個(gè)地方。如:累加器AC中,操作結(jié)果存放到累加器AC中。

AC

(AC)OP(A)7.1指令格式二地址指令指令中給出兩個(gè)地址,分別指出參與操作的兩個(gè)源操作數(shù),而其中有一個(gè)又表示操作結(jié)果的存放地址。

指令格式:

A1

(A1)OP(A2)根據(jù)存放操作數(shù)的位置不同,分為3種。寄存器-寄存器型(R-R型)指令存儲(chǔ)器-存儲(chǔ)器型(M-M型)指令寄存器-存儲(chǔ)器型(R-M型)指令7.1指令格式指令格式:

A3

(A1)OP(A2)多地址指令用于描述一批數(shù)據(jù),指令中需要多個(gè)地址來指出數(shù)據(jù)存放的首地址、長(zhǎng)度和下標(biāo)等信息。

三地址指令指令中給出三個(gè)地址,其中兩個(gè)指明參與操作的源操作數(shù),另一個(gè)表示操作結(jié)果的存放地址。7.1指令格式指令系統(tǒng)中的每一條指令都有唯一確定的操作碼,不同指令的操作碼是不相同的。操作碼的長(zhǎng)度決定了指令系統(tǒng)的最大規(guī)模若操作碼的位數(shù)為n位,則該指令系統(tǒng)最多能有2n條指令。固定長(zhǎng)度操作碼所有指令操作碼的長(zhǎng)度都是固定的,且集中放在指令的一個(gè)字段內(nèi)。有利于簡(jiǎn)化硬件設(shè)計(jì),減少指令譯碼時(shí)間。7.1.2指令的操作碼7.1指令格式很多現(xiàn)代計(jì)算機(jī)都采用了固定長(zhǎng)度操作碼??勺冮L(zhǎng)度操作碼

指令系統(tǒng)中操作碼的長(zhǎng)度有多種,不同指令的操作碼的長(zhǎng)度不完全相同。使用頻率高的指令使用短的操作碼使用頻率低的指令使用較長(zhǎng)的操作碼可以縮短操作碼的平均長(zhǎng)度,但會(huì)使硬件設(shè)計(jì)復(fù)雜化,增加指令譯碼的時(shí)間和難度。擴(kuò)展操作碼技術(shù)

將操作碼設(shè)計(jì)為幾種不同的固定長(zhǎng)度,且相互之間按某種規(guī)則進(jìn)行擴(kuò)展。7.1指令格式優(yōu)點(diǎn)可以簡(jiǎn)化硬件設(shè)計(jì);當(dāng)指令總長(zhǎng)度一定時(shí),可以使操作碼的長(zhǎng)度隨地址數(shù)的增加而減少,不同地址數(shù)的指令的操作碼的長(zhǎng)度也不同,從而有效地縮短指令總長(zhǎng)度。擴(kuò)展操作碼的方法等長(zhǎng)擴(kuò)展、不等長(zhǎng)擴(kuò)展舉一個(gè)例子:

某指令系統(tǒng)中,指令長(zhǎng)度為16位,基本操作碼為4位,具有3個(gè)4位的地址字段。指令格式7.1指令格式采用固定長(zhǎng)度操作碼,該指令系統(tǒng)最多只能有16條指令。在指令字長(zhǎng)不變的情況下,希望有61條指令。其中:15條三地址指令15條二地址指令15條一地址指令16條零地址指令7.1指令格式采用等長(zhǎng)擴(kuò)展,操作碼分別為4位、8位、12位、16位。

7.1指令格式采用另一種擴(kuò)展方法,共76條。

其中:15條三地址指令14條二地址指令31條一地址指令16條零地址指令7.1指令格式指令長(zhǎng)度:指一條指令所包含的二進(jìn)制代碼的總位數(shù)。指令長(zhǎng)度主要取決于操作碼的長(zhǎng)度、操作數(shù)地址的長(zhǎng)度、操作數(shù)地址的個(gè)數(shù)。與機(jī)器字長(zhǎng)有簡(jiǎn)單的倍數(shù)關(guān)系單字長(zhǎng)指令:指令長(zhǎng)度等于機(jī)器字長(zhǎng)的指令半字長(zhǎng)指令:指令長(zhǎng)度等于半個(gè)機(jī)器字長(zhǎng)的指令雙字長(zhǎng)指令:指令長(zhǎng)度等于機(jī)器字長(zhǎng)的兩倍的指令指令長(zhǎng)度一般應(yīng)是字節(jié)的整數(shù)倍。7.1.3指令長(zhǎng)度7.1指令格式在一個(gè)指令系統(tǒng)中,如果每條指令的長(zhǎng)度都相同,則稱為固定長(zhǎng)度編碼格式。如果不同指令的長(zhǎng)度隨指令功能而不同,則稱為可變長(zhǎng)度編碼格式。如奔騰系列機(jī)的指令系統(tǒng)中,指令長(zhǎng)度可以從一個(gè)字節(jié)到12個(gè)字節(jié)。數(shù)據(jù)表示:計(jì)算機(jī)硬件能夠直接識(shí)別、指令系統(tǒng)可以直接調(diào)用的數(shù)據(jù)類型。數(shù)據(jù)結(jié)構(gòu):指由軟件進(jìn)行處理和實(shí)現(xiàn)的各種數(shù)據(jù)類型。數(shù)據(jù)結(jié)構(gòu)研究的是這些數(shù)據(jù)類型的邏輯結(jié)構(gòu)與物理結(jié)構(gòu)之間的關(guān)系,并給出相應(yīng)的算法。如何確定數(shù)據(jù)表示是計(jì)算機(jī)系統(tǒng)設(shè)計(jì)者要解決的難題之一。7.2數(shù)據(jù)類型7.2數(shù)據(jù)類型表示操作數(shù)類型的方法有兩種由指令中的操作碼指定操作數(shù)的類型。帶標(biāo)志符的數(shù)據(jù)表示。給數(shù)據(jù)加上標(biāo)識(shí),由數(shù)據(jù)本身給出操作數(shù)類型。優(yōu)點(diǎn):簡(jiǎn)化指令集,可由硬件自動(dòng)實(shí)現(xiàn)一致性檢查和類型轉(zhuǎn)換,縮小了機(jī)器語言與高級(jí)語言的語義差距,簡(jiǎn)化編譯器等。缺點(diǎn):由于需要在執(zhí)行過程中動(dòng)態(tài)檢測(cè)標(biāo)志符,動(dòng)態(tài)開銷比較大,所以采用這種方案的機(jī)器很少見。7.2數(shù)據(jù)類型操作數(shù)的大?。╯ize):操作數(shù)的位數(shù)或字節(jié)數(shù)。主要的大小有字節(jié)(8位)、半字(16位)字(32位)、雙字(64位)字符一般用ASCII碼表示,其大小為一個(gè)字節(jié)。整數(shù)則幾乎都是用二進(jìn)制補(bǔ)碼表示,其大小可以是字節(jié)、半字、單字和雙字。浮點(diǎn)操作數(shù)單精度浮點(diǎn)數(shù)和雙精度浮點(diǎn)數(shù)所有的計(jì)算機(jī)都采用了IEEE754浮點(diǎn)標(biāo)準(zhǔn)7.2數(shù)據(jù)類型十進(jìn)制數(shù)據(jù)表示壓縮十進(jìn)制或二進(jìn)制編碼的十進(jìn)制(簡(jiǎn)稱BCD碼)是用4位二進(jìn)制編碼表示數(shù)字0~9,并將兩個(gè)十進(jìn)制數(shù)字合并到一個(gè)字節(jié)中存儲(chǔ)。非壓縮十進(jìn)制如果將十進(jìn)制數(shù)直接用字符串來表示,就叫做“非壓縮十進(jìn)制”。形式地址:指令的地址碼部分給出的地址。有效地址:形式地址經(jīng)地址變換后才能得到操作數(shù)的真正地址。尋址方式:確定指令操作數(shù)有效地址的方法。7.3尋址方式7.3尋址方式直接尋址在指令的地址碼字段直接給出操作數(shù)所在主存單元的地址。簡(jiǎn)單、快速的尋址方式,但尋址范圍受限于地址碼字段的位數(shù)。間接尋址指令的地址碼字段給出的是操作數(shù)所在內(nèi)存單元的地址的地址。指令中形式地址所指定的內(nèi)存單元中存放的內(nèi)容才是操作數(shù)的真正地址。得到操作數(shù)需要訪問兩次內(nèi)存,指令的執(zhí)行速度比較慢。7.3尋址方式立即尋址指令的地址碼字段直接給出操作數(shù)本身,而不是操作數(shù)的地址。指令執(zhí)行速度最快,得到指令的同時(shí)就得到了操作數(shù),不需要再訪問內(nèi)存。寄存器直接尋址與寄存器間接尋址寄存器直接尋址:指令的地址碼字段給出一個(gè)寄存器編號(hào),該寄存器中存放的內(nèi)容就是操作數(shù)。寄存器間接尋址:寄存器中存放的內(nèi)容是操作數(shù)的地址,根據(jù)此地址訪問內(nèi)存取得操作數(shù)。寄存器直接尋址方式

寄存器間接尋址方式

7.3尋址方式隱含尋址指令中不給出操作數(shù)的地址操作數(shù)約定在某個(gè)特定的寄存器或堆棧中相對(duì)尋址將程序計(jì)數(shù)器PC的內(nèi)容與指令中給出的形式地址(偏移量)的值相加,形成操作數(shù)的有效地址。形式地址(偏移量)的值可正可負(fù)。對(duì)于短跳轉(zhuǎn)和程序的再定位很有用。7.3尋址方式相對(duì)尋址方式

7.3尋址方式變址尋址將指令中給出的形式地址的值與變址寄存器的內(nèi)容相加,形成操作數(shù)的有效地址。變址寄存器可以是專用寄存器,也可以是通用寄存器中的一個(gè)。常用于字符串處理、數(shù)組運(yùn)算等成批數(shù)據(jù)處理中,主要是面向用戶,解決程序循環(huán)控制問題。7.3尋址方式

變址尋址方式

7.3尋址方式基址尋址把指令中給出的形式地址的值與基址寄存器的內(nèi)容相加,形成操作數(shù)的有效地址。基址寄存器的內(nèi)容稱為基地址?;芳拇嫫鞯膬?nèi)容通常由操作系統(tǒng)或管理程序設(shè)定。主要用于將用戶程序的邏輯地址轉(zhuǎn)換成主存的實(shí)際地址。它面向系統(tǒng),解決程序重定位和擴(kuò)大尋址空間等問題。7.3尋址方式

基址尋址方式

7.3尋址方式“基址+變址”尋址有效地址=(RB)+(RX)+D

其中:(RB):基址寄存器RB中的內(nèi)容(RX):變址寄存器RX中的內(nèi)容D:指令字中給出的形式地址(偏移量)數(shù)據(jù)傳送類指令將數(shù)據(jù)從一個(gè)地方傳送到另一個(gè)地方。主要實(shí)現(xiàn)主存和主存之間、主存和寄存器之間、寄存器和寄存器之間的數(shù)據(jù)傳送。數(shù)據(jù)傳送指令一次可以傳送一個(gè)數(shù)據(jù),也可以一次傳送一批數(shù)據(jù)。

7.4指令類型與功能數(shù)據(jù)運(yùn)算類指令用來實(shí)現(xiàn)數(shù)據(jù)的算術(shù)運(yùn)算、邏輯運(yùn)算和移位運(yùn)算。算術(shù)運(yùn)算:加、減、乘、除運(yùn)算;加1、減1;比較指令等。

邏輯運(yùn)算:包括與、或、非、異或等運(yùn)算。移位指令:算術(shù)移位、邏輯移位和循環(huán)移位三類,它們又可分為左移和右移兩種。程序控制類指令主要用來控制程序執(zhí)行的順序和方向。包含轉(zhuǎn)移指令、子程序調(diào)用和返回指令、自陷指令等。7.4指令類型與功能輸入輸出指令輸入輸出指令簡(jiǎn)稱I/O指令主要用于實(shí)現(xiàn)主機(jī)與外部設(shè)備之間的信息交換

7.4指令類型與功能7.5指令系統(tǒng)的設(shè)計(jì)指令系統(tǒng)的設(shè)計(jì):指令的功能設(shè)計(jì)、指令格式的設(shè)計(jì)首先考慮所應(yīng)實(shí)現(xiàn)的基本功能,確定哪些基本功能應(yīng)該由硬件實(shí)現(xiàn),哪些功能由軟件實(shí)現(xiàn)比較合適。在確定哪些基本功能用硬件來實(shí)現(xiàn)時(shí),主要考慮3個(gè)因素:速度、成本、靈活性。硬件實(shí)現(xiàn)的特點(diǎn)速度快、成本高、靈活性差軟件實(shí)現(xiàn)的特點(diǎn)速度慢、價(jià)格便宜、靈活性好對(duì)指令集的基本要求完整性、規(guī)整性、正交性、高效率、兼容性

完整性:在一個(gè)有限可用的存儲(chǔ)空間內(nèi),對(duì)于任何可解的問題,編制計(jì)算程序時(shí),指令集所提供的指令足夠用。要求指令集功能齊全、使用方便下表為許多指令集結(jié)構(gòu)都包含的一些指令類型前4類屬于通用計(jì)算機(jī)系統(tǒng)的基本指令對(duì)于最后4種類型的操作,不同指令集結(jié)構(gòu)的支持大不相同。7.5指令系統(tǒng)的設(shè)計(jì)7.5.1對(duì)指令系統(tǒng)的基本要求操作類型實(shí)例算術(shù)和邏輯運(yùn)算算術(shù)運(yùn)算和邏輯操作:加,減,乘,除,與,或等數(shù)據(jù)傳輸load,store控制分支,跳轉(zhuǎn),過程調(diào)用和返回,自陷等系統(tǒng)操作系統(tǒng)調(diào)用,虛擬存儲(chǔ)器管理等浮點(diǎn)浮點(diǎn)操作:加,減,乘,除,比較等十進(jìn)制十進(jìn)制加,十進(jìn)制乘,十進(jìn)制到字符的轉(zhuǎn)換等字符串字符串移動(dòng),字符串比較,字符串搜索等圖形像素操作,壓縮/解壓操作等7.5指令系統(tǒng)的設(shè)計(jì)規(guī)整性:主要包括對(duì)稱性和均勻性。對(duì)稱性:所有與指令集有關(guān)的存儲(chǔ)單元的使用、操作碼的設(shè)置等都是對(duì)稱的。例如:在存儲(chǔ)單元的使用上,所有通用寄存器都要同等對(duì)待。在操作碼的設(shè)置上,如果設(shè)置了A-B的指令,就應(yīng)該也設(shè)置B-A的指令。

均勻性:指對(duì)于各種不同的操作數(shù)類型、字長(zhǎng)、操作種類和數(shù)據(jù)存儲(chǔ)單元,指令的設(shè)置都要同等對(duì)待。例如:如果某機(jī)器有5種數(shù)據(jù)表示,4種字長(zhǎng),兩種存儲(chǔ)單元,則要設(shè)置5×4×2=40種同一操作的指令。

7.5指令系統(tǒng)的設(shè)計(jì)正交性:指在指令中各個(gè)不同含義的字段,如操

作類型、數(shù)據(jù)類型、尋址方式字段等,在編碼時(shí)應(yīng)互不相關(guān)、相互獨(dú)立。高效率:指指令的執(zhí)行速度快、使用頻度高。兼容性:主要是要實(shí)現(xiàn)向后兼容,指令系統(tǒng)可以

增加新指令,但不能刪除指令或更改指令的功能。7.5指令系統(tǒng)的設(shè)計(jì)7.5指令系統(tǒng)的設(shè)計(jì)在設(shè)計(jì)指令系統(tǒng)時(shí),有兩種截然不同的設(shè)計(jì)策略。(產(chǎn)生了兩類不同的計(jì)算機(jī)系統(tǒng))CISC(復(fù)雜指令系統(tǒng)計(jì)算機(jī))增強(qiáng)指令功能,把越來越多的功能交由硬件來實(shí)現(xiàn),并且指令的數(shù)量也是越來越多。RISC(精簡(jiǎn)指令系統(tǒng)計(jì)算機(jī))盡可能地把指令系統(tǒng)簡(jiǎn)化,不僅指令的條數(shù)少,而且指令的功能也比較簡(jiǎn)單。

7.5指令系統(tǒng)的設(shè)計(jì)指令由兩部分組成:操作碼、地址碼指令格式的設(shè)計(jì)確定操作碼字段和地址碼字段的大小及其組合形式確定各種尋址方式的編碼方法有3種常用的指令編碼格式可變長(zhǎng)度編碼格式、固定長(zhǎng)度編碼格式、混合型編碼格式7.5.2指令格式的設(shè)計(jì)7.5指令系統(tǒng)的設(shè)計(jì)可變長(zhǎng)度編碼格式當(dāng)指令系統(tǒng)包含多種尋址方式和操作類型時(shí),這種編碼方式可以有效減少指令系統(tǒng)的平均指令長(zhǎng)度,降低目標(biāo)代碼的大小??赡軙?huì)使各條指令的字長(zhǎng)和執(zhí)行時(shí)間相差很大。多數(shù)CISC指令系統(tǒng)均采用了這種編碼格式。

7.5指令系統(tǒng)的設(shè)計(jì)固定長(zhǎng)度編碼格式將操作類型和尋址方式一起編碼到操作碼中。當(dāng)尋址方式和操作類型非常少時(shí),這種編碼格式非常好。可以有效地降低譯碼的復(fù)雜度,提高譯碼的速度。大部分RISC的指令系統(tǒng)均采用這種編碼格式。7.5指令系統(tǒng)的設(shè)計(jì)混合型編碼格式提供若干種固定的指令字長(zhǎng)。以期達(dá)到既能夠減少目標(biāo)代碼長(zhǎng)度又能降低譯碼復(fù)雜度的目標(biāo)。CISC指令系統(tǒng)的一大特點(diǎn)指令數(shù)量多、功能多樣增強(qiáng)指令功能主要是從以下3個(gè)方面著手:面向目標(biāo)程序增強(qiáng)指令功能面向高級(jí)語言的優(yōu)化實(shí)現(xiàn)來改進(jìn)指令系統(tǒng)面向操作系統(tǒng)的優(yōu)化實(shí)現(xiàn)改進(jìn)指令系統(tǒng)7.6指令系統(tǒng)的發(fā)展和改進(jìn)7.6.1沿CISC方向發(fā)展和改進(jìn)指令系統(tǒng)7.6指令系統(tǒng)的發(fā)展和改進(jìn)面向目標(biāo)程序增強(qiáng)指令功能對(duì)大量的目標(biāo)程序及其執(zhí)行情況進(jìn)行統(tǒng)計(jì)分析,找出那些使用頻度高、執(zhí)行時(shí)間長(zhǎng)的指令或指令串。對(duì)于使用頻度高的指令,用硬件加快其執(zhí)行;對(duì)于使用頻度高的指令串,用一條新的指令來替代。既能減少目標(biāo)程序的執(zhí)行時(shí)間,也能有效地縮短程序的長(zhǎng)度。可以從以下幾個(gè)方面來改進(jìn):增強(qiáng)運(yùn)算型指令的功能增強(qiáng)數(shù)據(jù)傳送指令的功能增強(qiáng)程序控制指令的功能7.6指令系統(tǒng)的發(fā)展和改進(jìn)例如:循環(huán)在程序中占有相當(dāng)大的比例,所以在指令上提供專門的支持。循環(huán)控制部分通常用3條指令完成:一條加法指令一條比較指令一條分支指令設(shè)置循環(huán)控制指令,用一條指令完成上述3條指令的功能。

一般循環(huán)程序的結(jié)構(gòu)7.6指令系統(tǒng)的發(fā)展和改進(jìn)面向高級(jí)語言的優(yōu)化實(shí)現(xiàn)來改進(jìn)指令系統(tǒng)(縮小高級(jí)語言與機(jī)器語言的語義差距)高級(jí)語言與一般的機(jī)器語言的語義差距非常大,為高級(jí)語言程序的編譯帶來了一些問題。(1)編譯器本身比較復(fù)雜;(2)編譯生成的目標(biāo)代碼比較難以達(dá)到很好的優(yōu)化。7.6指令系統(tǒng)的發(fā)展和改進(jìn)增強(qiáng)對(duì)高級(jí)語言和編譯器的支持對(duì)高級(jí)語言中使用頻度高、執(zhí)行時(shí)間長(zhǎng)的語句,增強(qiáng)有關(guān)指令的功能,加快這些指令的執(zhí)行速度,或者增加專門的指令,可以達(dá)到減少目標(biāo)程序的執(zhí)行時(shí)間和減少目標(biāo)程序長(zhǎng)度的目的。增強(qiáng)系統(tǒng)結(jié)構(gòu)的規(guī)整性,減少系統(tǒng)結(jié)構(gòu)中的各種例外情況。

(面向高級(jí)語言的計(jì)算機(jī))7.6指令系統(tǒng)的發(fā)展和改進(jìn)高級(jí)語言計(jì)算機(jī)

①間接執(zhí)行高級(jí)語言機(jī)器高級(jí)語言作為機(jī)器的匯編語言。②直接執(zhí)行高級(jí)語言的機(jī)器直接把高級(jí)語言作為機(jī)器語言。(一種比較激進(jìn)的方法)采用“比較簡(jiǎn)單的系統(tǒng)結(jié)構(gòu)+軟件”的做法能夠在較低成本和復(fù)雜度的前提下,提供更高的性能和靈活性。7.6指令系統(tǒng)的發(fā)展和改進(jìn)面向操作系統(tǒng)的優(yōu)化實(shí)現(xiàn)改進(jìn)指令系統(tǒng)操作系統(tǒng)和計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)是緊密聯(lián)系的,操作系統(tǒng)的實(shí)現(xiàn)在很大程度上取決于系統(tǒng)結(jié)構(gòu)的支持。指令系統(tǒng)對(duì)操作系統(tǒng)的支持主要有:處理機(jī)工作狀態(tài)和訪問方式的切換;進(jìn)程的管理和切換;存儲(chǔ)管理和信息保護(hù);進(jìn)程的同步與互斥,信號(hào)燈的管理等。

支持操作系統(tǒng)的有些指令屬于特權(quán)指令,一般用戶程序是不能使用的。7.6指令系統(tǒng)的發(fā)展和改進(jìn)CISC指令系統(tǒng)結(jié)構(gòu)存在的問題

(1979年開始,Patterson等人的研究)各種指令的使用頻度相差懸殊,許多指令很少用。據(jù)統(tǒng)計(jì):只有20%的指令使用頻度比較高,占運(yùn)行時(shí)間的80%。而其余80%的指令只在20%的運(yùn)行時(shí)間內(nèi)才會(huì)用到。使用頻度高的指令也是最簡(jiǎn)單的指令。7.6.2沿RISC方向發(fā)展和改進(jìn)指令系統(tǒng)Intel80x86最常用的10條指令執(zhí)行頻度排序80x86指令指令執(zhí)行頻度(占執(zhí)行指令總數(shù)的百分比)1load22%2條件分支20%3比較16%4store12%5加8%6與6%7減5%8寄存器-寄存器間數(shù)據(jù)移動(dòng)4%9調(diào)用子程序1%10返回1%合計(jì)95%7.6指令系統(tǒng)的發(fā)展和改進(jìn)指令系統(tǒng)龐大,指令條數(shù)很多,許多指令的功能又很復(fù)雜,使得控制器硬件非常復(fù)雜。

導(dǎo)致的問題:占用了大量的芯片面積(如占用CPU芯片總面積的一半以上),給VLSI設(shè)計(jì)造成很大的困難;增加了研制時(shí)間和成本,容易造成設(shè)計(jì)錯(cuò)誤。許多指令由于操作繁雜,其CPI值比較大,執(zhí)行速度慢。采用這些復(fù)雜指令有可能使整個(gè)程序的執(zhí)行時(shí)間反而增加。由于指令功能復(fù)雜,規(guī)整性不好,不利于采用流水技術(shù)來提高性能。7.6指令系統(tǒng)的發(fā)展和改進(jìn)設(shè)計(jì)RISC機(jī)器遵循的原則指令條數(shù)少、指令功能簡(jiǎn)單。只選取使用頻度很高的指令,在此基礎(chǔ)上補(bǔ)充一些最有用的指令;采用簡(jiǎn)單而又統(tǒng)一的指令格式,并減少尋址方式;指令字長(zhǎng)都為32位或64位;指令的執(zhí)行在單個(gè)機(jī)器周期內(nèi)完成;

(采用流水線機(jī)制)只有l(wèi)oad和store指令才能訪問存儲(chǔ)器,其它指令的操作都是在寄存器之間進(jìn)行;

(即采用load-store結(jié)構(gòu))大多數(shù)指令都采用硬連邏輯來實(shí)現(xiàn);7.6指令系統(tǒng)的發(fā)展和改進(jìn)強(qiáng)調(diào)優(yōu)化編譯器的作用,為高級(jí)語言程序生成優(yōu)化的代碼;充分利用流水技術(shù)來提高性能。早期的RISC微處理器1981年,Berkeley分校的Patterson等人的32位微處理器RISCI:31條指令,指令字長(zhǎng)都是32位,78個(gè)通用寄存器,時(shí)鐘頻率為8MHz;控制部分所占的芯片面積只有約6%。商品化微處理器MC68000和Z8000分別為50%和53%;性能比MC68000和Z8000快3~4倍。7.6指令系統(tǒng)的發(fā)展和改進(jìn)1983年的RISCⅡ:指令條數(shù)為39,通用寄存器個(gè)數(shù)為138,時(shí)鐘頻率為12MHz。后來發(fā)展成了Sun公司的SPARC系列微處理器。1981年,Stanford大學(xué)Hennessy等人的MIPS后來發(fā)展成了MIPSRxxx系列微處理器。IBM的801共同特點(diǎn):采用load-store結(jié)構(gòu)指令字長(zhǎng)為32位采用高效的流水技術(shù)MIPS的寄存器32個(gè)64位通用寄存器(GPRs)R0,R1,…,R31也稱為整數(shù)寄存器R0的值永遠(yuǎn)是032個(gè)64位浮點(diǎn)數(shù)寄存器(FPRs)F0,F(xiàn)1,…,F(xiàn)31用來存放32個(gè)單精度浮點(diǎn)數(shù)(32位),也可以用來存放32個(gè)雙精度浮點(diǎn)數(shù)(64位)。7.7指令系統(tǒng)實(shí)例:MIPS指令系統(tǒng)介紹MIPS64的一個(gè)子集,簡(jiǎn)稱為MIPS。7.7指令系統(tǒng)實(shí)例:MIPS指令系統(tǒng)存儲(chǔ)單精度浮點(diǎn)數(shù)(32位)時(shí),只用到FPR的一半,其另一半沒用。一些特殊寄存器它們可以與通用寄存器交換數(shù)據(jù)。例如浮點(diǎn)狀態(tài)寄存器:用來保存有關(guān)浮點(diǎn)操作結(jié)果的信息。MIPS的數(shù)據(jù)表示MIPS的數(shù)據(jù)表示整數(shù)字節(jié)(8位)半字(16位)字(32位)雙字(64位)浮點(diǎn)數(shù)單精度浮點(diǎn)數(shù)(32位)雙精度浮點(diǎn)數(shù)(64位)7.7指令系統(tǒng)實(shí)例:MIPS指令系統(tǒng)字節(jié)、半字或者字在裝入64位寄存器時(shí),用零擴(kuò)展或者用符號(hào)位擴(kuò)展來填充該寄存器的剩余部分。裝入以后,對(duì)它們將按照64位整數(shù)的方式進(jìn)行運(yùn)算。MIPS的數(shù)據(jù)尋址方式立即數(shù)尋址與偏移量尋址;立即數(shù)字段和偏移量字段都是16位的。寄存器間接尋址是通過把0作為偏移量來實(shí)現(xiàn)的;16位直接尋址是通過把R0(其值永遠(yuǎn)為0)作為基址寄存器來完成的;7.7指令系統(tǒng)實(shí)例:MIPS指令系統(tǒng)MIPS的存儲(chǔ)器是按字節(jié)尋址的,地址為64位;所有存儲(chǔ)器訪問都必須是邊界對(duì)齊的。

MIPS的指令格式尋址方式編碼到操作碼中所有的指令都是32位的操作碼占6位3種指令格式

3種格式中,同名字段的位置固定不變。信息寬度不超過主存寬度的信息必須存放在一個(gè)存儲(chǔ)字內(nèi),不能跨邊界。必須做到:信息在主存中存放的起始地址必須是該信息寬度(字節(jié)數(shù))的整數(shù)倍信息存儲(chǔ)的整數(shù)邊界概念滿足以下條件字節(jié)信息的起始地址為:×…××××半字信息的起始地址為:×…×××0單字信息的起始地址為:×…××00雙字信息的起始地址為:×…×000

存在存儲(chǔ)空間的浪費(fèi),但保證訪問速度。7.7指令系統(tǒng)實(shí)例:MIPS指令系統(tǒng)I類指令包括所有的load和store指令,立即數(shù)指令,分支指令,寄存器跳轉(zhuǎn)指令,寄存器鏈接跳轉(zhuǎn)指令。立即數(shù)字段為16位,用于提供立即數(shù)或偏移量。7.7指令系統(tǒng)實(shí)例:MIPS指令系統(tǒng)load指令訪存有效地址:Regs[rs]+immediate

從存儲(chǔ)器取來的數(shù)據(jù)放入寄存器rtstore指令訪存有效地址:Regs[rs]+immediate

要存入存儲(chǔ)器的數(shù)據(jù)放在寄存器rt中立即數(shù)指令

Regs[rt]←Regs[rs]opimmediate分支指令轉(zhuǎn)移目標(biāo)地址:Regs[rs]+immediate,rt無用寄存器跳轉(zhuǎn)、寄存器跳轉(zhuǎn)并鏈接轉(zhuǎn)移目標(biāo)地址為Regs[rs]7.7指令系統(tǒng)實(shí)例:MIPS指令系統(tǒng)R類指令包括ALU指令,專用寄存器讀/寫指令,move指令等。ALU指令

Regs[rd]←Regs[rs]functRegs[rt]funct為具體的運(yùn)算操作編碼7.7指令系統(tǒng)實(shí)例:MIPS指令系統(tǒng)J類指令包括跳轉(zhuǎn)指令,跳轉(zhuǎn)并鏈接指令,自陷指令,異常返回指令。在這類指令中,指令字的低26位是偏移量,它與PC值相加形成跳轉(zhuǎn)的地址。7.7指令系統(tǒng)實(shí)例:MIPS指令系統(tǒng)MIPS的操作MIPS指令可以分為四大類load和storeALU操作分支與跳轉(zhuǎn)浮點(diǎn)操作符號(hào)的意義x←ny:從y傳送n位到xx,y←z:把z傳送到x和y7.7指令系統(tǒng)實(shí)例:MIPS指令系統(tǒng)下標(biāo):表示字段中具體的位;對(duì)于指令和數(shù)據(jù),按從最高位到最低位(即從左到右)的順序依次進(jìn)行編號(hào),最高位為第0位,次高位為第1位,依此類推。下標(biāo)可以是一個(gè)數(shù)字,也可以是一個(gè)范圍。例如:Regs[R4]0:寄存器R4的符號(hào)位

Regs[R4]56-63:R4的最低字節(jié)Mem:表示主存;按字節(jié)尋址,可以傳輸任意個(gè)字節(jié)。上標(biāo):用于表示對(duì)字段進(jìn)行復(fù)制的次數(shù)。例如:0

32:一個(gè)32位長(zhǎng)的全0字段7.7指令系統(tǒng)實(shí)例:MIPS指令系統(tǒng)符號(hào)##:用于兩個(gè)字段的拼接,并且可以出現(xiàn)在數(shù)據(jù)傳送的任何一邊。舉例:R8、R6:64位的寄存器,則Regs[R8]32-63←32

(Mem[Regs[R6]]0)24

##Mem[Regs[R6]]表示的意義是:以R6的內(nèi)容作為地址訪問內(nèi)存,得到的字節(jié)按符號(hào)位擴(kuò)展為32位后存入R8的低32位,R8的高32位(即Regs[R8]0-31)不變。

load和store指令指令舉例指令名稱含義LDR2,20(R3)裝入雙字Regs[R2]←64Mem[20+Regs[R3]]LWR2,40(R3)裝入字Regs[R2]←64(Mem[40+Regs[R3]]0)32##Mem[40+Regs[R3]]LBR2,30(R3)裝入字節(jié)Regs[R2]←64(Mem[30+Regs[R3]]0)56##Mem[30+Regs[R3]]LBUR2,40(R3)裝入無符號(hào)字節(jié)Regs[R2]←64056##Mem[40+Regs[R3]]LHR2,30(R3)裝入半字Regs[R2]←64(Mem[30+Regs[R3]]0)48##Mem[30+Regs[R3]]##Mem[31+Regs[R3]]L.SF2,60(R4)裝入半字Regs[F2]←64Mem[60+Regs[R4]]##032L.DF2,40(R3)裝入雙精度浮點(diǎn)數(shù)Regs[F2]←64Mem[40+Regs[R3]]SDR4,300(R5)保存雙字Mem[300+Regs[R5]]←64Regs[R4]SWR4,300(R5)保存字Mem[300+Regs[R5]]←32Regs[R4]S.SF2,40(R2)保存單精度浮點(diǎn)數(shù)Mem[40+Regs[R2]]←32Regs[F2]0··31

SHR5,502(R4)保存半字

Mem[502+Regs[R4]]←16Regs[R5]48··.63

ALU指令寄存器-寄存器型(RR型)指令或立即數(shù)型算術(shù)和邏輯操作:加、減、與、或、異或和移位等指令舉例指令名稱含義DADDU R1,R2,R3無符號(hào)加Regs[R1]←Regs[R2]+Regs[R3]DADDIU R4,R5,#6加無符號(hào)立即數(shù)Regs[R4]←Regs[R5]+6LUI R1,#4把立即數(shù)裝入到一個(gè)字的高16位Regs[R1]←032##4##016DSLL R1,R2,#5邏輯左移Regs[R1]←Regs[R2]<<5DSLTR1,R2,R3置小于If(Regs[R2]<Regs[R3])Regs[R1]←1elseRegs[R1]←07.7指令系統(tǒng)實(shí)例:MIPS指令系統(tǒng)R0的值永遠(yuǎn)是0,它可以用來合成一些常用的操作。例如:DADDIUR1,R0,#100

給寄存器R1裝入常數(shù)100DADDR1,R0,R2

把寄存器R2中的數(shù)據(jù)傳送到寄存器R17.7指令系統(tǒng)實(shí)例:MIPS指令系統(tǒng)MIPS的控制指令由一組跳轉(zhuǎn)和一組分支指令來實(shí)現(xiàn)控制流的改變典型的MIPS控制指令指令舉例指令名稱含義Jname跳轉(zhuǎn)PC36··63←name<<2JALname跳轉(zhuǎn)并鏈接Regs[R31]←PC+4;PC36··63←name<<2;((PC+4)-227)≤name<((PC+4)+227)JALRR3寄存器跳轉(zhuǎn)并鏈接Regs[R31]←PC+4;PC←Regs[R3]JRR5寄存器跳轉(zhuǎn)PC←Regs[R5]BEQZR4,name等于零時(shí)分支if(Regs[R4]==0)PC←name;((PC+4)-217)≤name<((PC+4)+217)BNER3,R4,name不相等時(shí)分支if(Regs[R3]!=Regs[R4])PC←name((PC+4)-217)≤name<((PC+4)+217)MOVZR1,R2,R3等于零時(shí)移動(dòng)if(Regs[R3]==0)Regs[R1]←Regs[R2]7.7指令系統(tǒng)實(shí)例:MIPS指令系統(tǒng)7.7指令系統(tǒng)實(shí)例:MIPS指令系統(tǒng)跳轉(zhuǎn)指令根據(jù)跳轉(zhuǎn)指令確定目標(biāo)地址的方式不同以及跳轉(zhuǎn)時(shí)是否鏈接,可以把跳轉(zhuǎn)指令分成4種。確定目標(biāo)地址的方式把指令中的26位偏移量左移2位(因?yàn)橹噶钭珠L(zhǎng)都是4個(gè)字節(jié))后,替換程序計(jì)數(shù)器的低28位;間接跳轉(zhuǎn):由指令中指定的一個(gè)寄存器來給出轉(zhuǎn)移目標(biāo)地址。跳轉(zhuǎn)的兩種類型簡(jiǎn)單跳轉(zhuǎn):把目標(biāo)地址送入程序計(jì)數(shù)器。跳轉(zhuǎn)并鏈接:把目標(biāo)地址送入程序計(jì)數(shù)器,把返回地址(即順序下一條指令的地址)放入寄存器R31。7.7指令系統(tǒng)實(shí)例:MIPS指令系統(tǒng)分支指令(條件轉(zhuǎn)移)分支條件由指令確定例如:測(cè)試某個(gè)寄存器的值是否為零提供一組比較指令,用于比較兩個(gè)寄存器的值。例如:“置小于”指令有的分支指令可以直接判斷寄存器內(nèi)容是否為負(fù),或者比較兩個(gè)寄存器是否相等。分支的目標(biāo)地址由16位帶符號(hào)偏移量左移兩位后和PC相加的結(jié)果來決定一條浮點(diǎn)條件分支指令:通過測(cè)試浮點(diǎn)狀態(tài)寄存器來決定是否進(jìn)行分支。7.7指令系統(tǒng)實(shí)例:MIPS指令系統(tǒng)MIPS的浮點(diǎn)操作由操作碼指出操作數(shù)是單精度(SP)或雙精度(DP)后綴S:表示操作數(shù)是單精度浮點(diǎn)數(shù)后綴D:表示是雙精度浮點(diǎn)數(shù)浮點(diǎn)操作包括加、減、乘、除,分別有單精度和雙精度指令。浮點(diǎn)數(shù)比較指令根據(jù)比較結(jié)果設(shè)置浮點(diǎn)狀態(tài)寄存器中的某一位,以便于后面的分支指令BC1T(若真則分支)或BC1F(若假則分支)測(cè)試該位,以決定是否進(jìn)行分支。第8章中央處理器8.1CPU的功能和組成8.2關(guān)于模型機(jī)8.3邏輯設(shè)計(jì)的約定和定時(shí)方式8.4實(shí)現(xiàn)MIPS的一個(gè)簡(jiǎn)單方案8.5多周期實(shí)現(xiàn)方案8.6控制器的設(shè)計(jì)8.7流水線技術(shù)8.8經(jīng)典微處理器CPU具有以下4個(gè)方面的基本功能:指令順序控制指控制程序中指令的執(zhí)行順序。程序中各指令之間是有嚴(yán)格先后順序的,必須嚴(yán)格按程序規(guī)定的順序執(zhí)行,才能保證計(jì)算機(jī)工作的正確性。操作控制8.1CPU的功能和組成8.1.1CPU的功能8.1CPU的功能和組成一條指令的功能往往是由計(jì)算機(jī)中的部件執(zhí)行一序列的操作來實(shí)現(xiàn)的。CPU要根據(jù)指令的功能,產(chǎn)生相應(yīng)的操作控制信號(hào),發(fā)送給相應(yīng)的部件,從而控制這些部件按指令的要求進(jìn)行動(dòng)作。時(shí)間控制對(duì)各種操作實(shí)施時(shí)間上的定時(shí)。在一條指令的執(zhí)行過程中,在什么時(shí)間做什么操作均應(yīng)受到嚴(yán)格的控制。數(shù)據(jù)加工即對(duì)數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算和邏輯運(yùn)算,或進(jìn)行其他的信息處理。8.1CPU的功能和組成現(xiàn)代CPU一般由運(yùn)算器、控制器、數(shù)據(jù)通路和Cache組成。數(shù)據(jù)通路是指各部件之間通過數(shù)據(jù)線的相互連接。選擇什么樣的數(shù)據(jù)通路,對(duì)于CPU的性能有很大的影響。CPU執(zhí)行一條指令,實(shí)際上就是由控制器對(duì)計(jì)算機(jī)中的部件發(fā)操作控制信號(hào)、并對(duì)數(shù)據(jù)通路進(jìn)行設(shè)置來實(shí)現(xiàn)的。

8.1.2CPU的基本組成8.1CPU的功能和組成一條指令的執(zhí)行過程包括3個(gè)基本步驟:

取指令:從存儲(chǔ)器取出一條指令,該指令的地址由程序計(jì)數(shù)器PC給出。譯碼:對(duì)該指令的操作碼進(jìn)行譯碼分析,確定是哪一種指令,并轉(zhuǎn)到這種指令對(duì)應(yīng)的執(zhí)行階段。執(zhí)行:按指令操作碼的要求執(zhí)行該指令。執(zhí)行過程可能需要多步操作,控制器將為之形成完成該指令功能所需要的操作控制信號(hào)。執(zhí)行完畢后,回到取指令階段,去取下一條指令。如此反復(fù),直到整個(gè)程序執(zhí)行完。8.1.3指令執(zhí)行的基本步驟8.1CPU的功能和組成取指令譯碼指令a指令b指令x執(zhí)行…………指令的執(zhí)行過程

模型機(jī):MIPS結(jié)構(gòu)的一種簡(jiǎn)單實(shí)現(xiàn)實(shí)現(xiàn)了MIPS指令系統(tǒng)的核心子集。所包含的指令算術(shù)邏輯運(yùn)算指令(R類型指令格式)add,sub,and,or,slt(小于比較SLTrd,rs,rt)操作碼字段Op=0存儲(chǔ)器訪問指令(I類型指令格式)lw(loadword,op=35)sw(storeword,Op=43)8.2關(guān)于模型機(jī)8.2關(guān)于模型機(jī)等于“0”分支(I類型指令格式)beqz,Op=63說明:beqz在MIPS中實(shí)際上是條偽指令。(假設(shè)模型機(jī)中有該指令,并假設(shè)其操作碼為63)指令的字長(zhǎng):4個(gè)字節(jié)指令的格式

R類型8.2關(guān)于模型機(jī)Op——操作碼字段,用IR[Op]或IR[31:26]表示;rs——第一源操作數(shù)字段,用IR[rs]或IR[25:21]表示;rt——第二源操作數(shù)字段,用IR[rt]或IR[20:16]表示;rd——目標(biāo)操作數(shù)字段(或結(jié)果字段),用IR[rd]或IR[15:11]表示;shamt——無用;funct——ALU指令的運(yùn)算函數(shù)碼字段,用IR[funct]或IR[5:0]表示。8.2關(guān)于模型機(jī)I類型

rs——基址寄存器字段,用IR[rs]或IR[25:21]表示。對(duì)于beqz指令來說,是存放被檢測(cè)的數(shù)據(jù)。adr——偏移量字段,用IR[adr]或IR[15:0]表示。

rs和adr用于計(jì)算訪存有效地址或分支目標(biāo)地址。rt——對(duì)于load指令來說,rt所指出的寄存器是存放所取的數(shù)據(jù);對(duì)于store指令來說,是存放要寫入存儲(chǔ)器的數(shù)據(jù)。8.2關(guān)于模型機(jī)從計(jì)算機(jī)組成的角度來看,CPU設(shè)計(jì)的步驟根據(jù)各指令的執(zhí)行步驟來建立數(shù)據(jù)通路;定義各個(gè)部件的控制信號(hào);確定時(shí)鐘周期;完成控制器的設(shè)計(jì)。中央處理器設(shè)計(jì)中,有兩種邏輯部件:對(duì)數(shù)據(jù)值進(jìn)行操作的部件(組合邏輯電路)沒有內(nèi)部狀態(tài),其輸出僅依賴于當(dāng)前的輸入,與過去的值無關(guān)。在任何時(shí)候,對(duì)于相同的輸入總是得到相同的輸出。包含狀態(tài)的部件(時(shí)序電路)狀態(tài)部件的當(dāng)前輸出是前一個(gè)時(shí)鐘周期寫進(jìn)去的值。8.3邏輯設(shè)計(jì)的約定和定時(shí)方法8.3.1邏輯設(shè)計(jì)的約定8.3邏輯設(shè)計(jì)的約定和定時(shí)方法狀態(tài)部件至少包括兩個(gè)輸入和一個(gè)輸出。兩個(gè)輸入:要寫入部件的值時(shí)鐘:確定何時(shí)進(jìn)行寫入約定用“有效”表示信號(hào)線上的值為邏輯值“1”,用“無效”表示邏輯值“0”。8.3邏輯設(shè)計(jì)的約定和定時(shí)方法定時(shí)方法確定什么時(shí)候可以進(jìn)行讀,什么時(shí)候可以進(jìn)行寫。采用邊緣觸發(fā)的定時(shí)方法時(shí)序部件中的值只有在時(shí)鐘翻轉(zhuǎn)的邊沿才會(huì)發(fā)生變化。選擇上跳沿或下跳沿作為有效邊沿。組合邏輯、狀態(tài)部件與時(shí)鐘的關(guān)系傳輸時(shí)間T:信號(hào)從狀態(tài)部件1出發(fā),經(jīng)過組合邏輯,再到達(dá)狀態(tài)部件2所需的時(shí)間。8.3.2定時(shí)方法T的最大值確定了時(shí)鐘周期的大小。規(guī)定:如果一個(gè)狀態(tài)部件是每一個(gè)時(shí)鐘周期都寫入,就不需要寫控制信號(hào),依靠時(shí)鐘信號(hào)進(jìn)行寫入。只有當(dāng)狀態(tài)部件不是每個(gè)時(shí)鐘周期都寫入時(shí),才需要有一個(gè)寫控制信號(hào)。寫入操作僅發(fā)生在當(dāng)該信號(hào)有效而且時(shí)鐘的邊沿到來的時(shí)刻。8.3邏輯設(shè)計(jì)的約定和定時(shí)方法有兩種典型的數(shù)據(jù)通路組織方式基于總線的結(jié)構(gòu)減少信號(hào)線的數(shù)量,但性能不如直接連接方式。直接連接(我們選擇直接連接的結(jié)構(gòu))構(gòu)建數(shù)據(jù)通路要用到的一些基本構(gòu)件8.4實(shí)現(xiàn)MIPS的一個(gè)基本方案8.4.1構(gòu)建基本的數(shù)據(jù)通路8.4實(shí)現(xiàn)MIPS的一個(gè)基本方案程序計(jì)數(shù)器PC用于指出當(dāng)前正在執(zhí)行的指令的地址。每執(zhí)行一條指令,就要把PC中的值加4(每條指令占4個(gè)字節(jié)),使其指向下一條指令。指令存儲(chǔ)器IM假設(shè)要執(zhí)行的程序已經(jīng)加載到了IM中在其地址輸入端IA(InstructionAddress)加載地址,在其輸出端Ins就能得到相應(yīng)的指令。數(shù)據(jù)存儲(chǔ)器DM(DataMemory)兩個(gè)輸入端地址DA(DataAddress):用于給出要寫入或者讀出的存儲(chǔ)單元的地址。8.4實(shí)現(xiàn)MIPS的一個(gè)基本方案數(shù)據(jù)WD(WriteData):用于給出要寫入DM的數(shù)據(jù)。輸出端RD(ReadData):用于給出所讀取的數(shù)據(jù)。兩個(gè)控制信號(hào)DMRead(讀數(shù)據(jù))DMWrite(寫數(shù)據(jù))在任何時(shí)候,它們最多只能是一個(gè)有效。通用寄存器組(Registerfile)有兩個(gè)讀端口和一個(gè)寫端口。能同時(shí)進(jìn)行兩個(gè)讀操作和一個(gè)寫操作。4個(gè)輸入端8.4實(shí)現(xiàn)MIPS的一個(gè)基本方案RR1(ReadRegister1)和RR2:給出兩個(gè)讀操作的地址WR(WriteRegister)給出寫操作的地址WD(WriteData)給出要寫入的數(shù)據(jù)。兩個(gè)輸出端RD1(ReadData)和RD2分別給出所讀出的寄存器單元(其地址分別由RR1和RR2給出)的數(shù)據(jù)。寄存器組只有一個(gè)控制信號(hào)RegWrite(寫寄存器)。當(dāng)且僅當(dāng)對(duì)寄存器組進(jìn)行寫入操作時(shí),RegWrite才有效。

RR1、RR2和WR的寬度都是5位,WD、RD1和RD1的寬度都是32位。8.4實(shí)現(xiàn)MIPS的一個(gè)基本方案ALU輸入:兩個(gè)32位的數(shù)據(jù)輸出ALUo:兩個(gè)數(shù)據(jù)進(jìn)行運(yùn)算的結(jié)果(32位)進(jìn)行多種算術(shù)邏輯運(yùn)算,由控制信號(hào)ALUCtrl(4位)確定進(jìn)行什么操作。加法器把兩個(gè)輸入的數(shù)據(jù)相加,把結(jié)果放到輸出端SUM。符號(hào)位擴(kuò)展部件用于把16位的數(shù)據(jù)按符號(hào)擴(kuò)展為32位的數(shù)據(jù)。判0部件輸入是一個(gè)32位數(shù)據(jù),輸出是1位的信號(hào)。當(dāng)輸入為0時(shí),輸出為真。取指令的數(shù)據(jù)通路對(duì)于所有指令都是相同的。主要操作:把PC中的地址送到指令存儲(chǔ)器IM的IA輸入端,讀出一條指令。同時(shí)用加法器把PC中的值加4,使它指向下一條指令。

指令譯碼根據(jù)不同的指令操作碼進(jìn)行相應(yīng)的處理

R類指令用指令中的源寄存器地址字段rs和rt作為地址去訪問通用寄存器組Reg,讀出兩個(gè)源操作數(shù),送給ALU進(jìn)行運(yùn)算。把運(yùn)算結(jié)果送到寄存器組的WD端,寫入由rd字段所指定的目標(biāo)寄存器。

8.4實(shí)現(xiàn)MIPS的一個(gè)基本方案訪存指令(load和store指令)load指令的操作把指令字中的16位偏移量字段進(jìn)行符號(hào)位擴(kuò)展,變成32位數(shù),送給ALU;用IR[rs]作為地址去訪問寄存器組Reg,讀出的操作數(shù)送給ALU,與上一步擴(kuò)展了的地址相加,計(jì)算出訪存的有效地址,將之送到數(shù)據(jù)存儲(chǔ)器DM的地址輸入端DA;從DM讀出數(shù)據(jù)(將DMRead設(shè)置為有效),將該數(shù)據(jù)送到通用寄存器組的數(shù)據(jù)入口端WD,寫入由IR[rt]指定的寄存器。8.4實(shí)現(xiàn)MIPS的一個(gè)基本方案load指令所用到的數(shù)據(jù)通路store指令前兩步與load指令的相同。用IR[rt]作為地址去訪問通用寄存器組,讀出的數(shù)據(jù)(在RD2輸出端口)送給DM的數(shù)據(jù)輸入端WD,并向DM發(fā)寫入信號(hào)(將DMWrite置為有效),將數(shù)據(jù)寫入DM中相應(yīng)單元。

8.4實(shí)現(xiàn)MIPS的一個(gè)基本方案beqz指令Branch信號(hào)為有效表示當(dāng)前指令是一條分支指令。

把指令字中的16位偏移量字段(IR[adr])進(jìn)行符號(hào)位擴(kuò)展,變成32位數(shù),并左移兩位送給ALU;把PC+4送給ALU的另一個(gè)輸入,與上一步符號(hào)位擴(kuò)展和左移后的地址相加,得到轉(zhuǎn)移目標(biāo)地址;用IR[rs]作為地址去訪問寄存器組Reg,讀出操作數(shù)并送給判0部件。由該部件的輸出確定是否分支成功。如果為真,轉(zhuǎn)移目標(biāo)地址就成為新的PC值,分支成功;否則就用PC+4代替PC中的值,分支失敗。8.4實(shí)現(xiàn)MIPS的一個(gè)基本方案beqz指令所用到的數(shù)據(jù)通路

把R類指令與訪存指令的數(shù)據(jù)通路合并:

(在必要的地方加上多路器MUX)8.4實(shí)現(xiàn)MIPS的一個(gè)基本方案綜合考慮所有類型指令所要求的部件及其連接,得到模型機(jī)的數(shù)據(jù)通路。(一種能實(shí)現(xiàn)MIPS基本結(jié)構(gòu)的簡(jiǎn)單數(shù)據(jù)通路)模型機(jī)的簡(jiǎn)單數(shù)據(jù)通路8.4實(shí)現(xiàn)MIPS的一個(gè)基本方案模型機(jī)中,把控制器分成兩個(gè)部分主控制器ALU控制器在主控制器產(chǎn)生的信號(hào)中,有兩位的ALUOp信號(hào)。把ALUOp送給ALU,以產(chǎn)生控制ALU的實(shí)際信號(hào)。

ALU控制器的輸入和輸出8.4.2ALU控制器8.4實(shí)現(xiàn)MIPS的一個(gè)基本方案ALU控制器來自主控制器的ALUOp來自指令中最低6位的funct字段(即IR[5:0])ALU的控制碼ALU的控制碼:用來控制ALU完成具體的運(yùn)算功能,如加法、乘法等。兩組輸入輸出8.4實(shí)現(xiàn)MIPS的一個(gè)基本方案ALU完成具體的運(yùn)算有5個(gè):加、減、或、與、比較

設(shè):運(yùn)算器ALU的控制碼:3位

8個(gè)編碼中使用了5個(gè)每一個(gè)對(duì)應(yīng)于ALU的一種運(yùn)算功能ALU的控制碼功能ALU的控制碼功能000and110sub001or111slt010add算術(shù)邏輯單元ALU的功能定義

8.4實(shí)現(xiàn)MIPS的一個(gè)基本方案

ALU控制器的作用實(shí)際上就是完成ALUOp(兩位)和funct(5位)到ALU的控制碼(3位)的映射。

ALUOp的定義load指令和store指令A(yù)LUOp=00,讓ALU做加法,計(jì)算訪存的有效地址。beqz指令A(yù)LUOp=00,讓ALU做加法,計(jì)算分支目標(biāo)地址。R類指令A(yù)LUOp=10ALU完成and、or、add、sub中的某一個(gè),具體取決于指令中funct字段的值。從ALUOp和funct到ALU的控制碼的映射

指令操作碼ALUOp指令操作funct字段期望的ALU動(dòng)作ALU的控制碼load00讀xxxxxxadd010store00寫xxxxxxadd010beqz00分支xxxxxxadd010R類10加法100000add010R類10減法100010sub110R類10與100100and000R類10或100101or001R類10比較101010slt111根據(jù)2位ALUOp控制信號(hào)和6位funct代碼生成ALU控制器的輸出

8.4實(shí)現(xiàn)MIPS的一個(gè)基本方案對(duì)funct字段代碼及ALUOp的各位進(jìn)行組合建立真值表ALU控制器的輸入輸出之間的真值表ALU控制器的輸入ALU控制器的輸出

A2A1A0ALUOpfunct字段ALUOp1ALUOp0F5F4F3F2F1F000××××××0101×××00000101×××00101101×××01000001×××01010011×××10101118.4實(shí)現(xiàn)MIPS的一個(gè)基本方案給模型機(jī)的簡(jiǎn)單數(shù)據(jù)通路加上控制器得到模型機(jī)的單周期數(shù)據(jù)通路控制器的作用:按照指令操作的要求,給各個(gè)部件發(fā)控制命令,即設(shè)置各控制信號(hào)線的值??刂菩盘?hào)線包括ALUOp(兩位):作為ALU控制器的輸入。ALUSrcB(兩位):控制ALU第二個(gè)操作數(shù)的來源。ALUSrcB=“00”時(shí),選擇寄存器組的第二個(gè)讀出端RD2;8.4.3單周期數(shù)據(jù)路徑的控制器8.4實(shí)現(xiàn)MIPS的一個(gè)基本方案ALUSrcB=“01”時(shí),選擇由指令的低16位經(jīng)符號(hào)位擴(kuò)展而形成的值;ALUSrcB=“10”時(shí),選擇由指令的低16位經(jīng)符號(hào)位擴(kuò)展后再左移兩位而形成的值。7根1位信號(hào)線,其名稱和作用如表所示。7根信號(hào)線的作用信號(hào)名稱為“0”時(shí)的作用為“1”時(shí)的作用RegDst寫寄存器時(shí),寄存器地址來自指令的rt字段,即IR[rt]。寫寄存器時(shí),寄存器地址來自指令的rd字段,即IR[rd]。RegWrite無操作。把寄存器組WD端的數(shù)據(jù)寫入WR端指定的寄存器。ALUSrcAALU的第一個(gè)操作數(shù)為“PC+4”ALU的第一個(gè)操作數(shù)來自寄存器組的第一個(gè)輸出端RD1。DMRead無操作。以數(shù)據(jù)存儲(chǔ)器DM的DA端上的內(nèi)容作為地址,從DM讀出一個(gè)數(shù)據(jù)放在RD端上。DMWrite無操作。把DM的WD端的數(shù)據(jù)寫入DM,寫入地址由DM的DA端給出。DMtoReg寫入寄存器的值來自ALU寫入寄存器的值來自存儲(chǔ)器。Branch(如果判0部件“=0”中的值為1)用加法器計(jì)算出的PC+4替換PC中的值。用ALU計(jì)算出的分支目標(biāo)地址替換PC中的值。8.4實(shí)現(xiàn)MIPS的一個(gè)基本方案列出真值表R類指令的Op=0(二進(jìn)制為000000)lw指令的Op=35(二進(jìn)制為100011)sw指令Op=43(二進(jìn)制為101011)beqz指令Op=63(二進(jìn)制為111111)Op5~Op0的各位分別對(duì)應(yīng)于IR[31:26]中的各位

8.4實(shí)現(xiàn)MIPS的一個(gè)基本方案輸出/輸入信號(hào)名稱R類指令lw指令sw指令beqz指令輸入Op50111Op40001Op30011Op20001Op10111Op001118.4實(shí)現(xiàn)MIPS的一個(gè)基本方案輸出/輸入信號(hào)名稱R類指令lw指令sw指令beqz指令輸出RegDst10××ALUSrcA1110DMtoReg01××RegWrite1100DMRead0100DMWrite0010Branch0001ALUOp11000ALUOp00000ALUSrcB10001ALUSrcB001108.4實(shí)現(xiàn)MIPS的一個(gè)基本方案根據(jù)真值表,列出各輸出信號(hào)的表達(dá)式。例如:?jiǎn)沃芷诜桨傅牟蛔阈实拖虏煌愋偷闹噶钏瓿傻墓ぷ髁坑泻艽蟮牟顒e,所要用到的部件和所通過的數(shù)據(jù)通路不同,所用的時(shí)間的長(zhǎng)短也有很大的差別。每個(gè)時(shí)鐘周期中功能部件最多被使用一次,如果要在執(zhí)行一條指令的過程中,多次使用某一部件,那么就需要重復(fù)設(shè)置該部件。(增加實(shí)現(xiàn)成本)8.5多周期實(shí)現(xiàn)方案8.5.1為什么要采用多周期8.5多周期實(shí)現(xiàn)方案解決上述問題的方法:采用多周期方案采用更短的時(shí)間作為時(shí)鐘周期,允許指令的執(zhí)行時(shí)間為多個(gè)時(shí)鐘周期。這個(gè)時(shí)鐘周期往往是一個(gè)基本部件的延遲時(shí)間。好處之一:可以共享同一個(gè)功能部件(如果是在不同的時(shí)鐘周期使用該部件的話)。例如:指令存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器可以合并為一個(gè)存儲(chǔ)器做PC+4的加法器可以和ALU合并8.5多周期實(shí)現(xiàn)方案對(duì)圖8.13進(jìn)行改造在一些部件的后面增設(shè)臨時(shí)寄存器,用于存放該部件產(chǎn)生且下一個(gè)時(shí)鐘周期要用的結(jié)果。IR(指令寄存器)——存放從指令存儲(chǔ)器讀出的指令;LMD——存放從數(shù)據(jù)存儲(chǔ)器讀出的數(shù)據(jù);因?yàn)樵L存讀取的數(shù)據(jù)來不及在同一個(gè)時(shí)鐘周期中寫入寄存器組。A和B——分別存放從寄存器組讀出的兩個(gè)數(shù)據(jù);Imm——存放擴(kuò)展后的立即值;ALUo——存放ALU的運(yùn)算結(jié)果;cond(1位)——存放判0部件“=0?”的結(jié)果。8.5.2指令分步執(zhí)行過程(按周期分步)8.5多周期實(shí)現(xiàn)方案需要設(shè)置哪些臨時(shí)寄存器取決于兩個(gè)因素什么樣的組合邏輯電路正好適合作為一個(gè)周期;哪些數(shù)據(jù)在該指令后面的執(zhí)行周期中需要用到。增加兩個(gè)寫控制信號(hào)IRWritePCWrite各指令的分步執(zhí)行情況取指令周期(IF)IR

IM[PC]PC+4對(duì)控制信號(hào)設(shè)置如下:

IRWrite=1//把新取出的指令寫入指令寄存器IR。8.5多周期實(shí)現(xiàn)方案指令譯碼/讀寄存器周期(ID)A

Regs[rs]B

Regs[rt]Imm

(IR[15:0]按符號(hào)位擴(kuò)展為32位數(shù))指令的譯碼操作和讀寄存器操作是并行進(jìn)行的。原因:在MIPS指令格式中,操作碼字段以及rs、rt

字段都是在固定的位置。這種技術(shù)稱為固定字段譯碼技術(shù)。

執(zhí)行/有效地址計(jì)算周期(EX)不同指令所進(jìn)行的操作不同:8.5多周期實(shí)現(xiàn)方案存儲(chǔ)器訪問指令

ALUo

A+Imm控制信號(hào)設(shè)置如下:

ALUSrcA=1 //使得該多路器選擇A中的內(nèi)容,送給ALU的上一個(gè)輸入端。

ALUSrcB=01 //使得該多路器選擇Imm中的內(nèi)容,送給ALU的下一個(gè)輸入端。

ALUOp=00 //使ALU進(jìn)行加法操作。R類算術(shù)邏輯運(yùn)算指令

ALUo

AfunctB控制信號(hào)設(shè)置如下:

ALUSrcA=1 //使得該多路器選擇A中的內(nèi)容,送給ALU的上一個(gè)輸入端。8.5多周期實(shí)現(xiàn)方案

ALUSrcB=00 //使得該多路器選擇B中的內(nèi)容,送給ALU的下一個(gè)輸入端。

ALUOp=10 //使ALU按照指令中函數(shù)碼funct規(guī)定的操作進(jìn)行運(yùn)算。分支指令

ALUo

PC+(Imm<<2);cond

(A==0)對(duì)控制信號(hào)設(shè)置如下:

ALUSrcA=0//使得該多路器選擇PC+4,送給ALU的上一個(gè)輸入端。

ALUSrcB=10 //使得該多路器選擇Imm左移兩位后的內(nèi)容,送給ALU的下一個(gè)輸入端。

ALUOp=00 //使ALU進(jìn)行加法操作。8.5多周期實(shí)現(xiàn)方案存儲(chǔ)器訪問/R類指令和分支指令完成周期(MEM)PCWrite=1 //寫入PC。存儲(chǔ)器訪問指令

load指令:LMD

DM[ALUo]對(duì)控制信號(hào)設(shè)置如下:DMRead=1//從DM讀取數(shù)據(jù)。

store指令:DM[ALUo]

B對(duì)控制信號(hào)設(shè)置如下:DMWrite=1 //向DM寫入數(shù)據(jù)。R類指令

Regs[rd]

ALUo8.5多周期實(shí)現(xiàn)方案對(duì)控制信號(hào)設(shè)置如下:

DMtoReg=0 //選擇ALUo中的內(nèi)容送到寄存器組的WD端。

RegDst=1 //選擇rd作為寫入地址。

RegWrite=1 //寫入寄存器。分支指令

if(cond&Branch)PC

ALUoelsePC

PC+4對(duì)控制信號(hào)設(shè)置如下:

Branch=1 //表示當(dāng)前指令是分支指令。

8.5多周期實(shí)現(xiàn)方案寫回周期(WB)

Regs[rt]

LMD對(duì)控制信號(hào)設(shè)置如下:

DMtoReg=1 //選擇LMD中的內(nèi)容送到寄存器組的WD端。

RegDst=0 //選擇rt作為寫入地址。

RegWrite=1 //寫入寄存器。各類型指令在各周期中的操作及相關(guān)的控制信號(hào)的設(shè)置(表8.6)8.5多周期實(shí)現(xiàn)方案周期名稱R類指令Op=“R類”存儲(chǔ)器訪問指令Op=“l(fā)w”或Op=“sw”分支指令Op=“beqz”取指令(IF)操作:IR

IM[PC]PC+4控制信號(hào):IRWrite=1指令譯碼/讀寄存器(ID)操作:A

Regs[rs]B

Regs[rt]Imm

(IR[15:0]按符號(hào)位擴(kuò)展為32位數(shù))控制信號(hào):不需要執(zhí)行/有效地址計(jì)算(EX)操作:ALUo

AfunctB控制信號(hào):ALUSrcA=1ALUSrcB=00ALUOp=10操作:ALUo

A+Imm控制信號(hào):ALUSrcA=1ALUSrcB=01ALUOp=00操作:ALUo

PC+(Imm<<2)cond

(A==0)控制信號(hào):ALUSrcA=0ALUSrcB=10ALUOp=00周期名稱R類指令Op=“R類”存儲(chǔ)器訪問指令Op=“l(fā)w”或Op=“sw”分支指令Op=“beqz”存儲(chǔ)器訪問/R類和分支指令完成(MEM)操作:

Regs[rd]

ALUo控制信號(hào):DMtoReg=0RegDst=1RegWrite=1PCWrite=1load指令:操作:LMDDM[ALUo]控制信號(hào):DMRead=1PCWrite=1操作:

If(cond&Branch)

PC

ALUoelsePCPC+4控制信號(hào):Branch=1 PCWrite=1store指令:操作:

DM[ALUo]

B控制信號(hào):DMWrite=1PCWrite=1寫回(WB)操作:load指令:Regs[rt]

LMD控制信號(hào):DMtoReg=1RegDst=0RegWrite=1實(shí)現(xiàn)控制器的技術(shù)有兩種:硬連邏輯硬連邏輯是建立在有限狀態(tài)機(jī)的基礎(chǔ)上,并且一般是以狀態(tài)圖的形式表示。微程序設(shè)計(jì)微程序設(shè)計(jì)則是采用微指令的方式來表示和實(shí)現(xiàn)控制。8.6控制器的設(shè)計(jì)8.6控制器的設(shè)計(jì)控制器的一般組成:指令部件主要功能:取指令和分析指令。程序計(jì)數(shù)器PC(ProgramCounter)程序計(jì)數(shù)器指出了CPU當(dāng)前正在執(zhí)行的指令的地址。CPU每執(zhí)行完一條指令,就把它加4,指向順序的下一條指令。指令寄存器IR(InstructionRegister)

指令寄存器用于存放當(dāng)前正在執(zhí)行的指令。8.6.1控制器的組成8.6控制器的設(shè)計(jì)控制器的組成:指令部件、時(shí)序控制部件、微操作控制信號(hào)形成部件、

中斷控制邏輯、程序狀態(tài)字8.6控制器的設(shè)計(jì)指令譯碼器ID(InstructionDecoder)對(duì)IR中的指令操作碼進(jìn)行譯碼分析,產(chǎn)生相應(yīng)操作的控制電平并提供給微操作控制信號(hào)形成部件。有的機(jī)器還需對(duì)尋址字段進(jìn)行譯碼分析,以控制操作數(shù)有效地址的形成。地址形成部件根據(jù)該指令所指定的尋址方式,形成其操作數(shù)有效地址。時(shí)序控制部件微操作一個(gè)部件能夠完成的不能再細(xì)分的基本操作。計(jì)算機(jī)中最小的具有獨(dú)立意義的操作。8.6控制器的設(shè)計(jì)功能:用來產(chǎn)生一系列時(shí)序信號(hào)、為各個(gè)微操作定時(shí)的,以保證各個(gè)微操作的順序執(zhí)行。組成部分時(shí)鐘CP(ClockPulses)CP:協(xié)調(diào)計(jì)算機(jī)各部件操作的同步主時(shí)鐘。其工作頻率稱為計(jì)算機(jī)的主頻。時(shí)序信號(hào)發(fā)生器TSG(TimingSignalGenerator)產(chǎn)生機(jī)器所需的各種時(shí)序信號(hào),以便控制有關(guān)部件在不同的時(shí)間內(nèi)完成指定的微操作。微操作控制信號(hào)形成部件根據(jù)指令部件提供的操作控制電位、時(shí)序控制部8.6控制器的設(shè)計(jì)

件所提供的各種時(shí)序信號(hào),以及有關(guān)的狀態(tài)條件,產(chǎn)生計(jì)算機(jī)所需要的各種微操作的控制信號(hào)。中斷控制邏輯稱為中斷機(jī)構(gòu)。用于異?;蛲话l(fā)情況的處理。程序狀態(tài)寄存器PSR

存放程序狀態(tài)字PSW。PSW反映了計(jì)算機(jī)系統(tǒng)目前的基本狀態(tài),包括目態(tài)/管態(tài)、指令執(zhí)行的結(jié)果特征以及與中斷有關(guān)的信息等。指令執(zhí)行的結(jié)果特征包括運(yùn)算結(jié)果為0、結(jié)果為負(fù)、結(jié)果溢出等。8.6控制器的設(shè)計(jì)控制方式同步控制方式

機(jī)器有統(tǒng)一的時(shí)鐘信號(hào)(稱為系統(tǒng)時(shí)鐘),所有的微操作控制信號(hào)都與時(shí)鐘信號(hào)同步。把一條指令的執(zhí)行過程劃分為若干個(gè)長(zhǎng)度相等的時(shí)間區(qū)間,然后把該指令的微操作按順序安排到每一個(gè)時(shí)間區(qū)間中。這個(gè)時(shí)間區(qū)間稱為節(jié)拍。其寬度(時(shí)間)與一個(gè)時(shí)鐘周期的時(shí)間相同。節(jié)拍寬度的確定取決于所有微操作中時(shí)間最長(zhǎng)的微操作所需的時(shí)間。8.6.2控制方式與時(shí)序系統(tǒng)8.6控制器的設(shè)計(jì)缺點(diǎn):有時(shí)間浪費(fèi)。優(yōu)點(diǎn):時(shí)序關(guān)系簡(jiǎn)單,控制方便,而且便于調(diào)試,系統(tǒng)較為可靠。本書模型機(jī)采用這種方式。異步控制方式

各部件之間沒有統(tǒng)一的時(shí)鐘和節(jié)拍,而是各部件有自己的時(shí)鐘。微操作控制信號(hào)采用應(yīng)答方式銜接。前一個(gè)操作完成后給出回答信號(hào),啟動(dòng)下一個(gè)操作。優(yōu)點(diǎn):沒有時(shí)間上的浪費(fèi),效率高。缺點(diǎn):設(shè)計(jì)比較復(fù)雜,所需的器材較多,系統(tǒng)調(diào)試難度較大,且工作過程中的可靠性不易保證。8.6控制器的設(shè)計(jì)時(shí)序系統(tǒng)時(shí)鐘、節(jié)拍和節(jié)拍電位構(gòu)成了計(jì)算機(jī)的時(shí)序系統(tǒng)。指令周期:從取指令、分析指令到執(zhí)行完該指令所需的全部時(shí)間。指令周期一般由若干個(gè)時(shí)鐘周期組成。節(jié)拍節(jié)拍一般用具有一定寬度的電位信號(hào)表示,稱為節(jié)拍電位。脈沖:用于寄存器的復(fù)位或打入脈沖等。指令周期、節(jié)拍、脈沖之間的關(guān)系:其中:每個(gè)指令周期包含5個(gè)節(jié)拍T0~T4

每個(gè)節(jié)拍有一個(gè)脈沖

8.6控制器的設(shè)計(jì)3級(jí)時(shí)序系統(tǒng)8.6控制器的設(shè)計(jì)根據(jù)表8.6,構(gòu)造出狀態(tài)圖。取指令和譯碼的狀態(tài)圖(對(duì)所有的指令都是一樣)

8.6.3模型機(jī)控制器的設(shè)計(jì)取指令和譯碼的狀態(tài)圖

8.6控制器的設(shè)計(jì)譯碼后,根據(jù)操作碼的不同,再轉(zhuǎn)移到各類指令的狀態(tài)圖??刂圃L存指令執(zhí)行過程的狀態(tài)機(jī)

有4個(gè)狀態(tài):LD-STLD2LD3ST28.6控制器的設(shè)計(jì)訪存指令執(zhí)行過程的狀態(tài)圖8.6控制器的設(shè)計(jì)R類指令執(zhí)行過程的狀態(tài)機(jī)有兩個(gè)狀態(tài):RR-STEP1,RR-STEP2

R類指令執(zhí)行過程的狀態(tài)圖

8.6控制器的設(shè)計(jì)分支指令執(zhí)行過程的狀態(tài)機(jī)有兩個(gè)狀態(tài):BR1,BR2

分支指令執(zhí)行過程的狀態(tài)圖

圖8.21總狀態(tài)圖

8.6控制器的設(shè)計(jì)使用指令譯碼器和一個(gè)計(jì)數(shù)器及其譯碼器來形成各狀態(tài)的時(shí)序。R-TYPE表示是R類指令LD、ST、BEQZ表示分別是lw、sw、beqz指令圖8.22模型機(jī)的硬連邏輯控制器

8.6控制器的設(shè)計(jì)進(jìn)入各狀態(tài)的條件FETCH=T0DECODE-REG=T1LD-ST=(LD+ST)∧T2LD2=LD∧T3LD3=LD∧T4ST2=ST∧T3RR-STEP1=R-TYPE∧T2RR-STEP2=R-TYPE∧T3BR1=BEQZ∧T2BR2=BEQZ∧T38.6控制器的設(shè)計(jì)得

溫馨提示

  • 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)論