版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第7章指令系統(tǒng)7.1指令格式7.2數(shù)據(jù)類型7.3尋址方式7.4指令類型與功能7.5指令系統(tǒng)的設(shè)計7.6指令系統(tǒng)的發(fā)展和改進7.7指令系統(tǒng)實例:MIPS的指令系統(tǒng)
指令:要求計算機進行基本操作的命令。一臺計算機所能執(zhí)行的全部指令的集合稱為該計算機的指令系統(tǒng)或指令集。計算機硬件能夠直接識別并執(zhí)行的程序是機器語言程序,而機器語言中的每一個語句就是一條指令。指令系統(tǒng)決定了計算機硬件所能完成的全部功能,是計算機系統(tǒng)結(jié)構(gòu)設(shè)計者、系統(tǒng)軟件設(shè)計者和硬件設(shè)計者所共同關(guān)心的問題。一條指令中至少應(yīng)包含3方面的信息:要執(zhí)行的操作指明該指令要完成的具體功能。操作數(shù)的來源指明操作的對象(源操作數(shù))在哪里。操作結(jié)果的去向。指明要將操作的結(jié)果(目的操作數(shù))保存到何處。7.1指令格式7.1指令格式指令的基本格式每條指令由兩部分構(gòu)成:操作碼和地址碼操作碼:描述指令的操作功能,即要求計算機完成什么工作。(指令中必不可少的部分)地址碼:描述與操作數(shù)有關(guān)的信息,可以是操作數(shù)本身,也可以是存放操作數(shù)的地址。源地址:提供源操作數(shù)的地址目的地址:提供存放操作結(jié)果的地址7.1指令格式
根據(jù)指令中地址碼部分顯式給出的地址的個數(shù),可將指令格式分為以下5種。零地址指令零地址指令中只有操作碼,沒有地址碼。
指令格式:通常在兩種情況下可能采用零地址指令指令本身不需要任何操作數(shù)指令中所需的操作數(shù)是隱含指定的7.1.1指令的地址碼7.1指令格式一地址指令指令中給出一個地址
指令格式:在兩種情況下可能采用一地址指令指令本身只需要一個操作數(shù)
A
OP(A)指令操作需要兩個操作數(shù),指令中指明一個操作數(shù),而另外一個操作數(shù)在默認的某個地方。如:累加器AC中,操作結(jié)果存放到累加器AC中。
AC
(AC)OP(A)7.1指令格式二地址指令指令中給出兩個地址,分別指出參與操作的兩個源操作數(shù),而其中有一個又表示操作結(jié)果的存放地址。
指令格式:
A1
(A1)OP(A2)根據(jù)存放操作數(shù)的位置不同,分為3種。寄存器-寄存器型(R-R型)指令存儲器-存儲器型(M-M型)指令寄存器-存儲器型(R-M型)指令7.1指令格式指令格式:
A3
(A1)OP(A2)多地址指令用于描述一批數(shù)據(jù),指令中需要多個地址來指出數(shù)據(jù)存放的首地址、長度和下標(biāo)等信息。
三地址指令指令中給出三個地址,其中兩個指明參與操作的源操作數(shù),另一個表示操作結(jié)果的存放地址。7.1指令格式指令系統(tǒng)中的每一條指令都有唯一確定的操作碼,不同指令的操作碼是不相同的。操作碼的長度決定了指令系統(tǒng)的最大規(guī)模若操作碼的位數(shù)為n位,則該指令系統(tǒng)最多能有2n條指令。固定長度操作碼所有指令操作碼的長度都是固定的,且集中放在指令的一個字段內(nèi)。有利于簡化硬件設(shè)計,減少指令譯碼時間。7.1.2指令的操作碼7.1指令格式很多現(xiàn)代計算機都采用了固定長度操作碼。可變長度操作碼
指令系統(tǒng)中操作碼的長度有多種,不同指令的操作碼的長度不完全相同。使用頻率高的指令使用短的操作碼使用頻率低的指令使用較長的操作碼可以縮短操作碼的平均長度,但會使硬件設(shè)計復(fù)雜化,增加指令譯碼的時間和難度。擴展操作碼技術(shù)
將操作碼設(shè)計為幾種不同的固定長度,且相互之間按某種規(guī)則進行擴展。7.1指令格式優(yōu)點可以簡化硬件設(shè)計;當(dāng)指令總長度一定時,可以使操作碼的長度隨地址數(shù)的增加而減少,不同地址數(shù)的指令的操作碼的長度也不同,從而有效地縮短指令總長度。擴展操作碼的方法等長擴展、不等長擴展舉一個例子:
某指令系統(tǒng)中,指令長度為16位,基本操作碼為4位,具有3個4位的地址字段。指令格式7.1指令格式采用固定長度操作碼,該指令系統(tǒng)最多只能有16條指令。在指令字長不變的情況下,希望有61條指令。其中:15條三地址指令15條二地址指令15條一地址指令16條零地址指令7.1指令格式采用等長擴展,操作碼分別為4位、8位、12位、16位。
7.1指令格式采用另一種擴展方法,共76條。
其中:15條三地址指令14條二地址指令31條一地址指令16條零地址指令7.1指令格式指令長度:指一條指令所包含的二進制代碼的總位數(shù)。指令長度主要取決于操作碼的長度、操作數(shù)地址的長度、操作數(shù)地址的個數(shù)。與機器字長有簡單的倍數(shù)關(guān)系單字長指令:指令長度等于機器字長的指令半字長指令:指令長度等于半個機器字長的指令雙字長指令:指令長度等于機器字長的兩倍的指令指令長度一般應(yīng)是字節(jié)的整數(shù)倍。7.1.3指令長度7.1指令格式在一個指令系統(tǒng)中,如果每條指令的長度都相同,則稱為固定長度編碼格式。如果不同指令的長度隨指令功能而不同,則稱為可變長度編碼格式。如奔騰系列機的指令系統(tǒng)中,指令長度可以從一個字節(jié)到12個字節(jié)。數(shù)據(jù)表示:計算機硬件能夠直接識別、指令系統(tǒng)可以直接調(diào)用的數(shù)據(jù)類型。數(shù)據(jù)結(jié)構(gòu):指由軟件進行處理和實現(xiàn)的各種數(shù)據(jù)類型。數(shù)據(jù)結(jié)構(gòu)研究的是這些數(shù)據(jù)類型的邏輯結(jié)構(gòu)與物理結(jié)構(gòu)之間的關(guān)系,并給出相應(yīng)的算法。如何確定數(shù)據(jù)表示是計算機系統(tǒng)設(shè)計者要解決的難題之一。7.2數(shù)據(jù)類型7.2數(shù)據(jù)類型表示操作數(shù)類型的方法有兩種由指令中的操作碼指定操作數(shù)的類型。帶標(biāo)志符的數(shù)據(jù)表示。給數(shù)據(jù)加上標(biāo)識,由數(shù)據(jù)本身給出操作數(shù)類型。優(yōu)點:簡化指令集,可由硬件自動實現(xiàn)一致性檢查和類型轉(zhuǎn)換,縮小了機器語言與高級語言的語義差距,簡化編譯器等。缺點:由于需要在執(zhí)行過程中動態(tài)檢測標(biāo)志符,動態(tài)開銷比較大,所以采用這種方案的機器很少見。7.2數(shù)據(jù)類型操作數(shù)的大小(size):操作數(shù)的位數(shù)或字節(jié)數(shù)。主要的大小有字節(jié)(8位)、半字(16位)字(32位)、雙字(64位)字符一般用ASCII碼表示,其大小為一個字節(jié)。整數(shù)則幾乎都是用二進制補碼表示,其大小可以是字節(jié)、半字、單字和雙字。浮點操作數(shù)單精度浮點數(shù)和雙精度浮點數(shù)所有的計算機都采用了IEEE754浮點標(biāo)準(zhǔn)7.2數(shù)據(jù)類型十進制數(shù)據(jù)表示壓縮十進制或二進制編碼的十進制(簡稱BCD碼)是用4位二進制編碼表示數(shù)字0~9,并將兩個十進制數(shù)字合并到一個字節(jié)中存儲。非壓縮十進制如果將十進制數(shù)直接用字符串來表示,就叫做“非壓縮十進制”。形式地址:指令的地址碼部分給出的地址。有效地址:形式地址經(jīng)地址變換后才能得到操作數(shù)的真正地址。尋址方式:確定指令操作數(shù)有效地址的方法。7.3尋址方式7.3尋址方式直接尋址在指令的地址碼字段直接給出操作數(shù)所在主存單元的地址。簡單、快速的尋址方式,但尋址范圍受限于地址碼字段的位數(shù)。間接尋址指令的地址碼字段給出的是操作數(shù)所在內(nèi)存單元的地址的地址。指令中形式地址所指定的內(nèi)存單元中存放的內(nèi)容才是操作數(shù)的真正地址。得到操作數(shù)需要訪問兩次內(nèi)存,指令的執(zhí)行速度比較慢。7.3尋址方式立即尋址指令的地址碼字段直接給出操作數(shù)本身,而不是操作數(shù)的地址。指令執(zhí)行速度最快,得到指令的同時就得到了操作數(shù),不需要再訪問內(nèi)存。寄存器直接尋址與寄存器間接尋址寄存器直接尋址:指令的地址碼字段給出一個寄存器編號,該寄存器中存放的內(nèi)容就是操作數(shù)。寄存器間接尋址:寄存器中存放的內(nèi)容是操作數(shù)的地址,根據(jù)此地址訪問內(nèi)存取得操作數(shù)。寄存器直接尋址方式
寄存器間接尋址方式
7.3尋址方式隱含尋址指令中不給出操作數(shù)的地址操作數(shù)約定在某個特定的寄存器或堆棧中相對尋址將程序計數(shù)器PC的內(nèi)容與指令中給出的形式地址(偏移量)的值相加,形成操作數(shù)的有效地址。形式地址(偏移量)的值可正可負。對于短跳轉(zhuǎn)和程序的再定位很有用。7.3尋址方式相對尋址方式
7.3尋址方式變址尋址將指令中給出的形式地址的值與變址寄存器的內(nèi)容相加,形成操作數(shù)的有效地址。變址寄存器可以是專用寄存器,也可以是通用寄存器中的一個。常用于字符串處理、數(shù)組運算等成批數(shù)據(jù)處理中,主要是面向用戶,解決程序循環(huán)控制問題。7.3尋址方式
變址尋址方式
7.3尋址方式基址尋址把指令中給出的形式地址的值與基址寄存器的內(nèi)容相加,形成操作數(shù)的有效地址?;芳拇嫫鞯膬?nèi)容稱為基地址?;芳拇嫫鞯膬?nèi)容通常由操作系統(tǒng)或管理程序設(shè)定。主要用于將用戶程序的邏輯地址轉(zhuǎn)換成主存的實際地址。它面向系統(tǒng),解決程序重定位和擴大尋址空間等問題。7.3尋址方式
基址尋址方式
7.3尋址方式“基址+變址”尋址有效地址=(RB)+(RX)+D
其中:(RB):基址寄存器RB中的內(nèi)容(RX):變址寄存器RX中的內(nèi)容D:指令字中給出的形式地址(偏移量)數(shù)據(jù)傳送類指令將數(shù)據(jù)從一個地方傳送到另一個地方。主要實現(xiàn)主存和主存之間、主存和寄存器之間、寄存器和寄存器之間的數(shù)據(jù)傳送。數(shù)據(jù)傳送指令一次可以傳送一個數(shù)據(jù),也可以一次傳送一批數(shù)據(jù)。
7.4指令類型與功能數(shù)據(jù)運算類指令用來實現(xiàn)數(shù)據(jù)的算術(shù)運算、邏輯運算和移位運算。算術(shù)運算:加、減、乘、除運算;加1、減1;比較指令等。
邏輯運算:包括與、或、非、異或等運算。移位指令:算術(shù)移位、邏輯移位和循環(huán)移位三類,它們又可分為左移和右移兩種。程序控制類指令主要用來控制程序執(zhí)行的順序和方向。包含轉(zhuǎn)移指令、子程序調(diào)用和返回指令、自陷指令等。7.4指令類型與功能輸入輸出指令輸入輸出指令簡稱I/O指令主要用于實現(xiàn)主機與外部設(shè)備之間的信息交換
7.4指令類型與功能7.5指令系統(tǒng)的設(shè)計指令系統(tǒng)的設(shè)計:指令的功能設(shè)計、指令格式的設(shè)計首先考慮所應(yīng)實現(xiàn)的基本功能,確定哪些基本功能應(yīng)該由硬件實現(xiàn),哪些功能由軟件實現(xiàn)比較合適。在確定哪些基本功能用硬件來實現(xiàn)時,主要考慮3個因素:速度、成本、靈活性。硬件實現(xiàn)的特點速度快、成本高、靈活性差軟件實現(xiàn)的特點速度慢、價格便宜、靈活性好對指令集的基本要求完整性、規(guī)整性、正交性、高效率、兼容性
完整性:在一個有限可用的存儲空間內(nèi),對于任何可解的問題,編制計算程序時,指令集所提供的指令足夠用。要求指令集功能齊全、使用方便下表為許多指令集結(jié)構(gòu)都包含的一些指令類型前4類屬于通用計算機系統(tǒng)的基本指令對于最后4種類型的操作,不同指令集結(jié)構(gòu)的支持大不相同。7.5指令系統(tǒng)的設(shè)計7.5.1對指令系統(tǒng)的基本要求操作類型實例算術(shù)和邏輯運算算術(shù)運算和邏輯操作:加,減,乘,除,與,或等數(shù)據(jù)傳輸load,store控制分支,跳轉(zhuǎn),過程調(diào)用和返回,自陷等系統(tǒng)操作系統(tǒng)調(diào)用,虛擬存儲器管理等浮點浮點操作:加,減,乘,除,比較等十進制十進制加,十進制乘,十進制到字符的轉(zhuǎn)換等字符串字符串移動,字符串比較,字符串搜索等圖形像素操作,壓縮/解壓操作等7.5指令系統(tǒng)的設(shè)計規(guī)整性:主要包括對稱性和均勻性。對稱性:所有與指令集有關(guān)的存儲單元的使用、操作碼的設(shè)置等都是對稱的。例如:在存儲單元的使用上,所有通用寄存器都要同等對待。在操作碼的設(shè)置上,如果設(shè)置了A-B的指令,就應(yīng)該也設(shè)置B-A的指令。
均勻性:指對于各種不同的操作數(shù)類型、字長、操作種類和數(shù)據(jù)存儲單元,指令的設(shè)置都要同等對待。例如:如果某機器有5種數(shù)據(jù)表示,4種字長,兩種存儲單元,則要設(shè)置5×4×2=40種同一操作的指令。
7.5指令系統(tǒng)的設(shè)計正交性:指在指令中各個不同含義的字段,如操
作類型、數(shù)據(jù)類型、尋址方式字段等,在編碼時應(yīng)互不相關(guān)、相互獨立。高效率:指指令的執(zhí)行速度快、使用頻度高。兼容性:主要是要實現(xiàn)向后兼容,指令系統(tǒng)可以
增加新指令,但不能刪除指令或更改指令的功能。7.5指令系統(tǒng)的設(shè)計7.5指令系統(tǒng)的設(shè)計在設(shè)計指令系統(tǒng)時,有兩種截然不同的設(shè)計策略。(產(chǎn)生了兩類不同的計算機系統(tǒng))CISC(復(fù)雜指令系統(tǒng)計算機)增強指令功能,把越來越多的功能交由硬件來實現(xiàn),并且指令的數(shù)量也是越來越多。RISC(精簡指令系統(tǒng)計算機)盡可能地把指令系統(tǒng)簡化,不僅指令的條數(shù)少,而且指令的功能也比較簡單。
7.5指令系統(tǒng)的設(shè)計指令由兩部分組成:操作碼、地址碼指令格式的設(shè)計確定操作碼字段和地址碼字段的大小及其組合形式確定各種尋址方式的編碼方法有3種常用的指令編碼格式可變長度編碼格式、固定長度編碼格式、混合型編碼格式7.5.2指令格式的設(shè)計7.5指令系統(tǒng)的設(shè)計可變長度編碼格式當(dāng)指令系統(tǒng)包含多種尋址方式和操作類型時,這種編碼方式可以有效減少指令系統(tǒng)的平均指令長度,降低目標(biāo)代碼的大小??赡軙垢鳁l指令的字長和執(zhí)行時間相差很大。多數(shù)CISC指令系統(tǒng)均采用了這種編碼格式。
7.5指令系統(tǒng)的設(shè)計固定長度編碼格式將操作類型和尋址方式一起編碼到操作碼中。當(dāng)尋址方式和操作類型非常少時,這種編碼格式非常好??梢杂行У亟档妥g碼的復(fù)雜度,提高譯碼的速度。大部分RISC的指令系統(tǒng)均采用這種編碼格式。7.5指令系統(tǒng)的設(shè)計混合型編碼格式提供若干種固定的指令字長。以期達到既能夠減少目標(biāo)代碼長度又能降低譯碼復(fù)雜度的目標(biāo)。CISC指令系統(tǒng)的一大特點指令數(shù)量多、功能多樣增強指令功能主要是從以下3個方面著手:面向目標(biāo)程序增強指令功能面向高級語言的優(yōu)化實現(xiàn)來改進指令系統(tǒng)面向操作系統(tǒng)的優(yōu)化實現(xiàn)改進指令系統(tǒng)7.6指令系統(tǒng)的發(fā)展和改進7.6.1沿CISC方向發(fā)展和改進指令系統(tǒng)7.6指令系統(tǒng)的發(fā)展和改進面向目標(biāo)程序增強指令功能對大量的目標(biāo)程序及其執(zhí)行情況進行統(tǒng)計分析,找出那些使用頻度高、執(zhí)行時間長的指令或指令串。對于使用頻度高的指令,用硬件加快其執(zhí)行;對于使用頻度高的指令串,用一條新的指令來替代。既能減少目標(biāo)程序的執(zhí)行時間,也能有效地縮短程序的長度??梢詮囊韵聨讉€方面來改進:增強運算型指令的功能增強數(shù)據(jù)傳送指令的功能增強程序控制指令的功能7.6指令系統(tǒng)的發(fā)展和改進例如:循環(huán)在程序中占有相當(dāng)大的比例,所以在指令上提供專門的支持。循環(huán)控制部分通常用3條指令完成:一條加法指令一條比較指令一條分支指令設(shè)置循環(huán)控制指令,用一條指令完成上述3條指令的功能。
一般循環(huán)程序的結(jié)構(gòu)7.6指令系統(tǒng)的發(fā)展和改進面向高級語言的優(yōu)化實現(xiàn)來改進指令系統(tǒng)(縮小高級語言與機器語言的語義差距)高級語言與一般的機器語言的語義差距非常大,為高級語言程序的編譯帶來了一些問題。(1)編譯器本身比較復(fù)雜;(2)編譯生成的目標(biāo)代碼比較難以達到很好的優(yōu)化。7.6指令系統(tǒng)的發(fā)展和改進增強對高級語言和編譯器的支持對高級語言中使用頻度高、執(zhí)行時間長的語句,增強有關(guān)指令的功能,加快這些指令的執(zhí)行速度,或者增加專門的指令,可以達到減少目標(biāo)程序的執(zhí)行時間和減少目標(biāo)程序長度的目的。增強系統(tǒng)結(jié)構(gòu)的規(guī)整性,減少系統(tǒng)結(jié)構(gòu)中的各種例外情況。
(面向高級語言的計算機)7.6指令系統(tǒng)的發(fā)展和改進高級語言計算機
①間接執(zhí)行高級語言機器高級語言作為機器的匯編語言。②直接執(zhí)行高級語言的機器直接把高級語言作為機器語言。(一種比較激進的方法)采用“比較簡單的系統(tǒng)結(jié)構(gòu)+軟件”的做法能夠在較低成本和復(fù)雜度的前提下,提供更高的性能和靈活性。7.6指令系統(tǒng)的發(fā)展和改進面向操作系統(tǒng)的優(yōu)化實現(xiàn)改進指令系統(tǒng)操作系統(tǒng)和計算機系統(tǒng)結(jié)構(gòu)是緊密聯(lián)系的,操作系統(tǒng)的實現(xiàn)在很大程度上取決于系統(tǒng)結(jié)構(gòu)的支持。指令系統(tǒng)對操作系統(tǒng)的支持主要有:處理機工作狀態(tài)和訪問方式的切換;進程的管理和切換;存儲管理和信息保護;進程的同步與互斥,信號燈的管理等。
支持操作系統(tǒng)的有些指令屬于特權(quán)指令,一般用戶程序是不能使用的。7.6指令系統(tǒng)的發(fā)展和改進CISC指令系統(tǒng)結(jié)構(gòu)存在的問題
(1979年開始,Patterson等人的研究)各種指令的使用頻度相差懸殊,許多指令很少用。據(jù)統(tǒng)計:只有20%的指令使用頻度比較高,占運行時間的80%。而其余80%的指令只在20%的運行時間內(nèi)才會用到。使用頻度高的指令也是最簡單的指令。7.6.2沿RISC方向發(fā)展和改進指令系統(tǒng)Intel80x86最常用的10條指令執(zhí)行頻度排序80x86指令指令執(zhí)行頻度(占執(zhí)行指令總數(shù)的百分比)1load22%2條件分支20%3比較16%4store12%5加8%6與6%7減5%8寄存器-寄存器間數(shù)據(jù)移動4%9調(diào)用子程序1%10返回1%合計95%7.6指令系統(tǒng)的發(fā)展和改進指令系統(tǒng)龐大,指令條數(shù)很多,許多指令的功能又很復(fù)雜,使得控制器硬件非常復(fù)雜。
導(dǎo)致的問題:占用了大量的芯片面積(如占用CPU芯片總面積的一半以上),給VLSI設(shè)計造成很大的困難;增加了研制時間和成本,容易造成設(shè)計錯誤。許多指令由于操作繁雜,其CPI值比較大,執(zhí)行速度慢。采用這些復(fù)雜指令有可能使整個程序的執(zhí)行時間反而增加。由于指令功能復(fù)雜,規(guī)整性不好,不利于采用流水技術(shù)來提高性能。7.6指令系統(tǒng)的發(fā)展和改進設(shè)計RISC機器遵循的原則指令條數(shù)少、指令功能簡單。只選取使用頻度很高的指令,在此基礎(chǔ)上補充一些最有用的指令;采用簡單而又統(tǒng)一的指令格式,并減少尋址方式;指令字長都為32位或64位;指令的執(zhí)行在單個機器周期內(nèi)完成;
(采用流水線機制)只有l(wèi)oad和store指令才能訪問存儲器,其它指令的操作都是在寄存器之間進行;
(即采用load-store結(jié)構(gòu))大多數(shù)指令都采用硬連邏輯來實現(xiàn);7.6指令系統(tǒng)的發(fā)展和改進強調(diào)優(yōu)化編譯器的作用,為高級語言程序生成優(yōu)化的代碼;充分利用流水技術(shù)來提高性能。早期的RISC微處理器1981年,Berkeley分校的Patterson等人的32位微處理器RISCI:31條指令,指令字長都是32位,78個通用寄存器,時鐘頻率為8MHz;控制部分所占的芯片面積只有約6%。商品化微處理器MC68000和Z8000分別為50%和53%;性能比MC68000和Z8000快3~4倍。7.6指令系統(tǒng)的發(fā)展和改進1983年的RISCⅡ:指令條數(shù)為39,通用寄存器個數(shù)為138,時鐘頻率為12MHz。后來發(fā)展成了Sun公司的SPARC系列微處理器。1981年,Stanford大學(xué)Hennessy等人的MIPS后來發(fā)展成了MIPSRxxx系列微處理器。IBM的801共同特點:采用load-store結(jié)構(gòu)指令字長為32位采用高效的流水技術(shù)MIPS的寄存器32個64位通用寄存器(GPRs)R0,R1,…,R31也稱為整數(shù)寄存器R0的值永遠是032個64位浮點數(shù)寄存器(FPRs)F0,F(xiàn)1,…,F(xiàn)31用來存放32個單精度浮點數(shù)(32位),也可以用來存放32個雙精度浮點數(shù)(64位)。7.7指令系統(tǒng)實例:MIPS指令系統(tǒng)介紹MIPS64的一個子集,簡稱為MIPS。7.7指令系統(tǒng)實例:MIPS指令系統(tǒng)存儲單精度浮點數(shù)(32位)時,只用到FPR的一半,其另一半沒用。一些特殊寄存器它們可以與通用寄存器交換數(shù)據(jù)。例如浮點狀態(tài)寄存器:用來保存有關(guān)浮點操作結(jié)果的信息。MIPS的數(shù)據(jù)表示MIPS的數(shù)據(jù)表示整數(shù)字節(jié)(8位)半字(16位)字(32位)雙字(64位)浮點數(shù)單精度浮點數(shù)(32位)雙精度浮點數(shù)(64位)7.7指令系統(tǒng)實例:MIPS指令系統(tǒng)字節(jié)、半字或者字在裝入64位寄存器時,用零擴展或者用符號位擴展來填充該寄存器的剩余部分。裝入以后,對它們將按照64位整數(shù)的方式進行運算。MIPS的數(shù)據(jù)尋址方式立即數(shù)尋址與偏移量尋址;立即數(shù)字段和偏移量字段都是16位的。寄存器間接尋址是通過把0作為偏移量來實現(xiàn)的;16位直接尋址是通過把R0(其值永遠為0)作為基址寄存器來完成的;7.7指令系統(tǒng)實例:MIPS指令系統(tǒng)MIPS的存儲器是按字節(jié)尋址的,地址為64位;所有存儲器訪問都必須是邊界對齊的。
MIPS的指令格式尋址方式編碼到操作碼中所有的指令都是32位的操作碼占6位3種指令格式
3種格式中,同名字段的位置固定不變。信息寬度不超過主存寬度的信息必須存放在一個存儲字內(nèi),不能跨邊界。必須做到:信息在主存中存放的起始地址必須是該信息寬度(字節(jié)數(shù))的整數(shù)倍信息存儲的整數(shù)邊界概念滿足以下條件字節(jié)信息的起始地址為:×…××××半字信息的起始地址為:×…×××0單字信息的起始地址為:×…××00雙字信息的起始地址為:×…×000
存在存儲空間的浪費,但保證訪問速度。7.7指令系統(tǒng)實例:MIPS指令系統(tǒng)I類指令包括所有的load和store指令,立即數(shù)指令,分支指令,寄存器跳轉(zhuǎn)指令,寄存器鏈接跳轉(zhuǎn)指令。立即數(shù)字段為16位,用于提供立即數(shù)或偏移量。7.7指令系統(tǒng)實例:MIPS指令系統(tǒng)load指令訪存有效地址:Regs[rs]+immediate
從存儲器取來的數(shù)據(jù)放入寄存器rtstore指令訪存有效地址:Regs[rs]+immediate
要存入存儲器的數(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)實例:MIPS指令系統(tǒng)R類指令包括ALU指令,專用寄存器讀/寫指令,move指令等。ALU指令
Regs[rd]←Regs[rs]functRegs[rt]funct為具體的運算操作編碼7.7指令系統(tǒng)實例:MIPS指令系統(tǒng)J類指令包括跳轉(zhuǎn)指令,跳轉(zhuǎn)并鏈接指令,自陷指令,異常返回指令。在這類指令中,指令字的低26位是偏移量,它與PC值相加形成跳轉(zhuǎn)的地址。7.7指令系統(tǒng)實例:MIPS指令系統(tǒng)MIPS的操作MIPS指令可以分為四大類load和storeALU操作分支與跳轉(zhuǎn)浮點操作符號的意義x←ny:從y傳送n位到xx,y←z:把z傳送到x和y7.7指令系統(tǒng)實例:MIPS指令系統(tǒng)下標(biāo):表示字段中具體的位;對于指令和數(shù)據(jù),按從最高位到最低位(即從左到右)的順序依次進行編號,最高位為第0位,次高位為第1位,依此類推。下標(biāo)可以是一個數(shù)字,也可以是一個范圍。例如:Regs[R4]0:寄存器R4的符號位
Regs[R4]56-63:R4的最低字節(jié)Mem:表示主存;按字節(jié)尋址,可以傳輸任意個字節(jié)。上標(biāo):用于表示對字段進行復(fù)制的次數(shù)。例如:0
32:一個32位長的全0字段7.7指令系統(tǒng)實例:MIPS指令系統(tǒng)符號##:用于兩個字段的拼接,并且可以出現(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é)按符號位擴展為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)裝入無符號字節(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)裝入雙精度浮點數(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)保存單精度浮點數(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無符號加Regs[R1]←Regs[R2]+Regs[R3]DADDIU R4,R5,#6加無符號立即數(shù)Regs[R4]←Regs[R5]+6LUI R1,#4把立即數(shù)裝入到一個字的高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)實例:MIPS指令系統(tǒng)R0的值永遠是0,它可以用來合成一些常用的操作。例如:DADDIUR1,R0,#100
給寄存器R1裝入常數(shù)100DADDR1,R0,R2
把寄存器R2中的數(shù)據(jù)傳送到寄存器R17.7指令系統(tǒng)實例:MIPS指令系統(tǒng)MIPS的控制指令由一組跳轉(zhuǎn)和一組分支指令來實現(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等于零時分支if(Regs[R4]==0)PC←name;((PC+4)-217)≤name<((PC+4)+217)BNER3,R4,name不相等時分支if(Regs[R3]!=Regs[R4])PC←name((PC+4)-217)≤name<((PC+4)+217)MOVZR1,R2,R3等于零時移動if(Regs[R3]==0)Regs[R1]←Regs[R2]7.7指令系統(tǒng)實例:MIPS指令系統(tǒng)7.7指令系統(tǒng)實例:MIPS指令系統(tǒng)跳轉(zhuǎn)指令根據(jù)跳轉(zhuǎn)指令確定目標(biāo)地址的方式不同以及跳轉(zhuǎn)時是否鏈接,可以把跳轉(zhuǎn)指令分成4種。確定目標(biāo)地址的方式把指令中的26位偏移量左移2位(因為指令字長都是4個字節(jié))后,替換程序計數(shù)器的低28位;間接跳轉(zhuǎn):由指令中指定的一個寄存器來給出轉(zhuǎn)移目標(biāo)地址。跳轉(zhuǎn)的兩種類型簡單跳轉(zhuǎn):把目標(biāo)地址送入程序計數(shù)器。跳轉(zhuǎn)并鏈接:把目標(biāo)地址送入程序計數(shù)器,把返回地址(即順序下一條指令的地址)放入寄存器R31。7.7指令系統(tǒng)實例:MIPS指令系統(tǒng)分支指令(條件轉(zhuǎn)移)分支條件由指令確定例如:測試某個寄存器的值是否為零提供一組比較指令,用于比較兩個寄存器的值。例如:“置小于”指令有的分支指令可以直接判斷寄存器內(nèi)容是否為負,或者比較兩個寄存器是否相等。分支的目標(biāo)地址由16位帶符號偏移量左移兩位后和PC相加的結(jié)果來決定一條浮點條件分支指令:通過測試浮點狀態(tài)寄存器來決定是否進行分支。7.7指令系統(tǒng)實例:MIPS指令系統(tǒng)MIPS的浮點操作由操作碼指出操作數(shù)是單精度(SP)或雙精度(DP)后綴S:表示操作數(shù)是單精度浮點數(shù)后綴D:表示是雙精度浮點數(shù)浮點操作包括加、減、乘、除,分別有單精度和雙精度指令。浮點數(shù)比較指令根據(jù)比較結(jié)果設(shè)置浮點狀態(tài)寄存器中的某一位,以便于后面的分支指令BC1T(若真則分支)或BC1F(若假則分支)測試該位,以決定是否進行分支。第8章中央處理器8.1CPU的功能和組成8.2關(guān)于模型機8.3邏輯設(shè)計的約定和定時方式8.4實現(xiàn)MIPS的一個簡單方案8.5多周期實現(xiàn)方案8.6控制器的設(shè)計8.7流水線技術(shù)8.8經(jīng)典微處理器CPU具有以下4個方面的基本功能:指令順序控制指控制程序中指令的執(zhí)行順序。程序中各指令之間是有嚴格先后順序的,必須嚴格按程序規(guī)定的順序執(zhí)行,才能保證計算機工作的正確性。操作控制8.1CPU的功能和組成8.1.1CPU的功能8.1CPU的功能和組成一條指令的功能往往是由計算機中的部件執(zhí)行一序列的操作來實現(xiàn)的。CPU要根據(jù)指令的功能,產(chǎn)生相應(yīng)的操作控制信號,發(fā)送給相應(yīng)的部件,從而控制這些部件按指令的要求進行動作。時間控制對各種操作實施時間上的定時。在一條指令的執(zhí)行過程中,在什么時間做什么操作均應(yīng)受到嚴格的控制。數(shù)據(jù)加工即對數(shù)據(jù)進行算術(shù)運算和邏輯運算,或進行其他的信息處理。8.1CPU的功能和組成現(xiàn)代CPU一般由運算器、控制器、數(shù)據(jù)通路和Cache組成。數(shù)據(jù)通路是指各部件之間通過數(shù)據(jù)線的相互連接。選擇什么樣的數(shù)據(jù)通路,對于CPU的性能有很大的影響。CPU執(zhí)行一條指令,實際上就是由控制器對計算機中的部件發(fā)操作控制信號、并對數(shù)據(jù)通路進行設(shè)置來實現(xiàn)的。
8.1.2CPU的基本組成8.1CPU的功能和組成一條指令的執(zhí)行過程包括3個基本步驟:
取指令:從存儲器取出一條指令,該指令的地址由程序計數(shù)器PC給出。譯碼:對該指令的操作碼進行譯碼分析,確定是哪一種指令,并轉(zhuǎn)到這種指令對應(yīng)的執(zhí)行階段。執(zhí)行:按指令操作碼的要求執(zhí)行該指令。執(zhí)行過程可能需要多步操作,控制器將為之形成完成該指令功能所需要的操作控制信號。執(zhí)行完畢后,回到取指令階段,去取下一條指令。如此反復(fù),直到整個程序執(zhí)行完。8.1.3指令執(zhí)行的基本步驟8.1CPU的功能和組成取指令譯碼指令a指令b指令x執(zhí)行…………指令的執(zhí)行過程
模型機:MIPS結(jié)構(gòu)的一種簡單實現(xiàn)實現(xiàn)了MIPS指令系統(tǒng)的核心子集。所包含的指令算術(shù)邏輯運算指令(R類型指令格式)add,sub,and,or,slt(小于比較SLTrd,rs,rt)操作碼字段Op=0存儲器訪問指令(I類型指令格式)lw(loadword,op=35)sw(storeword,Op=43)8.2關(guān)于模型機8.2關(guān)于模型機等于“0”分支(I類型指令格式)beqz,Op=63說明:beqz在MIPS中實際上是條偽指令。(假設(shè)模型機中有該指令,并假設(shè)其操作碼為63)指令的字長:4個字節(jié)指令的格式
R類型8.2關(guān)于模型機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指令的運算函數(shù)碼字段,用IR[funct]或IR[5:0]表示。8.2關(guān)于模型機I類型
rs——基址寄存器字段,用IR[rs]或IR[25:21]表示。對于beqz指令來說,是存放被檢測的數(shù)據(jù)。adr——偏移量字段,用IR[adr]或IR[15:0]表示。
rs和adr用于計算訪存有效地址或分支目標(biāo)地址。rt——對于load指令來說,rt所指出的寄存器是存放所取的數(shù)據(jù);對于store指令來說,是存放要寫入存儲器的數(shù)據(jù)。8.2關(guān)于模型機從計算機組成的角度來看,CPU設(shè)計的步驟根據(jù)各指令的執(zhí)行步驟來建立數(shù)據(jù)通路;定義各個部件的控制信號;確定時鐘周期;完成控制器的設(shè)計。中央處理器設(shè)計中,有兩種邏輯部件:對數(shù)據(jù)值進行操作的部件(組合邏輯電路)沒有內(nèi)部狀態(tài),其輸出僅依賴于當(dāng)前的輸入,與過去的值無關(guān)。在任何時候,對于相同的輸入總是得到相同的輸出。包含狀態(tài)的部件(時序電路)狀態(tài)部件的當(dāng)前輸出是前一個時鐘周期寫進去的值。8.3邏輯設(shè)計的約定和定時方法8.3.1邏輯設(shè)計的約定8.3邏輯設(shè)計的約定和定時方法狀態(tài)部件至少包括兩個輸入和一個輸出。兩個輸入:要寫入部件的值時鐘:確定何時進行寫入約定用“有效”表示信號線上的值為邏輯值“1”,用“無效”表示邏輯值“0”。8.3邏輯設(shè)計的約定和定時方法定時方法確定什么時候可以進行讀,什么時候可以進行寫。采用邊緣觸發(fā)的定時方法時序部件中的值只有在時鐘翻轉(zhuǎn)的邊沿才會發(fā)生變化。選擇上跳沿或下跳沿作為有效邊沿。組合邏輯、狀態(tài)部件與時鐘的關(guān)系傳輸時間T:信號從狀態(tài)部件1出發(fā),經(jīng)過組合邏輯,再到達狀態(tài)部件2所需的時間。8.3.2定時方法T的最大值確定了時鐘周期的大小。規(guī)定:如果一個狀態(tài)部件是每一個時鐘周期都寫入,就不需要寫控制信號,依靠時鐘信號進行寫入。只有當(dāng)狀態(tài)部件不是每個時鐘周期都寫入時,才需要有一個寫控制信號。寫入操作僅發(fā)生在當(dāng)該信號有效而且時鐘的邊沿到來的時刻。8.3邏輯設(shè)計的約定和定時方法有兩種典型的數(shù)據(jù)通路組織方式基于總線的結(jié)構(gòu)減少信號線的數(shù)量,但性能不如直接連接方式。直接連接(我們選擇直接連接的結(jié)構(gòu))構(gòu)建數(shù)據(jù)通路要用到的一些基本構(gòu)件8.4實現(xiàn)MIPS的一個基本方案8.4.1構(gòu)建基本的數(shù)據(jù)通路8.4實現(xiàn)MIPS的一個基本方案程序計數(shù)器PC用于指出當(dāng)前正在執(zhí)行的指令的地址。每執(zhí)行一條指令,就要把PC中的值加4(每條指令占4個字節(jié)),使其指向下一條指令。指令存儲器IM假設(shè)要執(zhí)行的程序已經(jīng)加載到了IM中在其地址輸入端IA(InstructionAddress)加載地址,在其輸出端Ins就能得到相應(yīng)的指令。數(shù)據(jù)存儲器DM(DataMemory)兩個輸入端地址DA(DataAddress):用于給出要寫入或者讀出的存儲單元的地址。8.4實現(xiàn)MIPS的一個基本方案數(shù)據(jù)WD(WriteData):用于給出要寫入DM的數(shù)據(jù)。輸出端RD(ReadData):用于給出所讀取的數(shù)據(jù)。兩個控制信號DMRead(讀數(shù)據(jù))DMWrite(寫數(shù)據(jù))在任何時候,它們最多只能是一個有效。通用寄存器組(Registerfile)有兩個讀端口和一個寫端口。能同時進行兩個讀操作和一個寫操作。4個輸入端8.4實現(xiàn)MIPS的一個基本方案RR1(ReadRegister1)和RR2:給出兩個讀操作的地址WR(WriteRegister)給出寫操作的地址WD(WriteData)給出要寫入的數(shù)據(jù)。兩個輸出端RD1(ReadData)和RD2分別給出所讀出的寄存器單元(其地址分別由RR1和RR2給出)的數(shù)據(jù)。寄存器組只有一個控制信號RegWrite(寫寄存器)。當(dāng)且僅當(dāng)對寄存器組進行寫入操作時,RegWrite才有效。
RR1、RR2和WR的寬度都是5位,WD、RD1和RD1的寬度都是32位。8.4實現(xiàn)MIPS的一個基本方案ALU輸入:兩個32位的數(shù)據(jù)輸出ALUo:兩個數(shù)據(jù)進行運算的結(jié)果(32位)進行多種算術(shù)邏輯運算,由控制信號ALUCtrl(4位)確定進行什么操作。加法器把兩個輸入的數(shù)據(jù)相加,把結(jié)果放到輸出端SUM。符號位擴展部件用于把16位的數(shù)據(jù)按符號擴展為32位的數(shù)據(jù)。判0部件輸入是一個32位數(shù)據(jù),輸出是1位的信號。當(dāng)輸入為0時,輸出為真。取指令的數(shù)據(jù)通路對于所有指令都是相同的。主要操作:把PC中的地址送到指令存儲器IM的IA輸入端,讀出一條指令。同時用加法器把PC中的值加4,使它指向下一條指令。
指令譯碼根據(jù)不同的指令操作碼進行相應(yīng)的處理
R類指令用指令中的源寄存器地址字段rs和rt作為地址去訪問通用寄存器組Reg,讀出兩個源操作數(shù),送給ALU進行運算。把運算結(jié)果送到寄存器組的WD端,寫入由rd字段所指定的目標(biāo)寄存器。
8.4實現(xiàn)MIPS的一個基本方案訪存指令(load和store指令)load指令的操作把指令字中的16位偏移量字段進行符號位擴展,變成32位數(shù),送給ALU;用IR[rs]作為地址去訪問寄存器組Reg,讀出的操作數(shù)送給ALU,與上一步擴展了的地址相加,計算出訪存的有效地址,將之送到數(shù)據(jù)存儲器DM的地址輸入端DA;從DM讀出數(shù)據(jù)(將DMRead設(shè)置為有效),將該數(shù)據(jù)送到通用寄存器組的數(shù)據(jù)入口端WD,寫入由IR[rt]指定的寄存器。8.4實現(xiàn)MIPS的一個基本方案load指令所用到的數(shù)據(jù)通路store指令前兩步與load指令的相同。用IR[rt]作為地址去訪問通用寄存器組,讀出的數(shù)據(jù)(在RD2輸出端口)送給DM的數(shù)據(jù)輸入端WD,并向DM發(fā)寫入信號(將DMWrite置為有效),將數(shù)據(jù)寫入DM中相應(yīng)單元。
8.4實現(xiàn)MIPS的一個基本方案beqz指令Branch信號為有效表示當(dāng)前指令是一條分支指令。
把指令字中的16位偏移量字段(IR[adr])進行符號位擴展,變成32位數(shù),并左移兩位送給ALU;把PC+4送給ALU的另一個輸入,與上一步符號位擴展和左移后的地址相加,得到轉(zhuǎn)移目標(biāo)地址;用IR[rs]作為地址去訪問寄存器組Reg,讀出操作數(shù)并送給判0部件。由該部件的輸出確定是否分支成功。如果為真,轉(zhuǎn)移目標(biāo)地址就成為新的PC值,分支成功;否則就用PC+4代替PC中的值,分支失敗。8.4實現(xiàn)MIPS的一個基本方案beqz指令所用到的數(shù)據(jù)通路
把R類指令與訪存指令的數(shù)據(jù)通路合并:
(在必要的地方加上多路器MUX)8.4實現(xiàn)MIPS的一個基本方案綜合考慮所有類型指令所要求的部件及其連接,得到模型機的數(shù)據(jù)通路。(一種能實現(xiàn)MIPS基本結(jié)構(gòu)的簡單數(shù)據(jù)通路)模型機的簡單數(shù)據(jù)通路8.4實現(xiàn)MIPS的一個基本方案模型機中,把控制器分成兩個部分主控制器ALU控制器在主控制器產(chǎn)生的信號中,有兩位的ALUOp信號。把ALUOp送給ALU,以產(chǎn)生控制ALU的實際信號。
ALU控制器的輸入和輸出8.4.2ALU控制器8.4實現(xiàn)MIPS的一個基本方案ALU控制器來自主控制器的ALUOp來自指令中最低6位的funct字段(即IR[5:0])ALU的控制碼ALU的控制碼:用來控制ALU完成具體的運算功能,如加法、乘法等。兩組輸入輸出8.4實現(xiàn)MIPS的一個基本方案ALU完成具體的運算有5個:加、減、或、與、比較
設(shè):運算器ALU的控制碼:3位
8個編碼中使用了5個每一個對應(yīng)于ALU的一種運算功能ALU的控制碼功能ALU的控制碼功能000and110sub001or111slt010add算術(shù)邏輯單元ALU的功能定義
8.4實現(xiàn)MIPS的一個基本方案
ALU控制器的作用實際上就是完成ALUOp(兩位)和funct(5位)到ALU的控制碼(3位)的映射。
ALUOp的定義load指令和store指令A(yù)LUOp=00,讓ALU做加法,計算訪存的有效地址。beqz指令A(yù)LUOp=00,讓ALU做加法,計算分支目標(biāo)地址。R類指令A(yù)LUOp=10ALU完成and、or、add、sub中的某一個,具體取決于指令中funct字段的值。從ALUOp和funct到ALU的控制碼的映射
指令操作碼ALUOp指令操作funct字段期望的ALU動作ALU的控制碼load00讀xxxxxxadd010store00寫xxxxxxadd010beqz00分支xxxxxxadd010R類10加法100000add010R類10減法100010sub110R類10與100100and000R類10或100101or001R類10比較101010slt111根據(jù)2位ALUOp控制信號和6位funct代碼生成ALU控制器的輸出
8.4實現(xiàn)MIPS的一個基本方案對funct字段代碼及ALUOp的各位進行組合建立真值表ALU控制器的輸入輸出之間的真值表ALU控制器的輸入ALU控制器的輸出
A2A1A0ALUOpfunct字段ALUOp1ALUOp0F5F4F3F2F1F000××××××0101×××00000101×××00101101×××01000001×××01010011×××10101118.4實現(xiàn)MIPS的一個基本方案給模型機的簡單數(shù)據(jù)通路加上控制器得到模型機的單周期數(shù)據(jù)通路控制器的作用:按照指令操作的要求,給各個部件發(fā)控制命令,即設(shè)置各控制信號線的值??刂菩盘柧€包括ALUOp(兩位):作為ALU控制器的輸入。ALUSrcB(兩位):控制ALU第二個操作數(shù)的來源。ALUSrcB=“00”時,選擇寄存器組的第二個讀出端RD2;8.4.3單周期數(shù)據(jù)路徑的控制器8.4實現(xiàn)MIPS的一個基本方案ALUSrcB=“01”時,選擇由指令的低16位經(jīng)符號位擴展而形成的值;ALUSrcB=“10”時,選擇由指令的低16位經(jīng)符號位擴展后再左移兩位而形成的值。7根1位信號線,其名稱和作用如表所示。7根信號線的作用信號名稱為“0”時的作用為“1”時的作用RegDst寫寄存器時,寄存器地址來自指令的rt字段,即IR[rt]。寫寄存器時,寄存器地址來自指令的rd字段,即IR[rd]。RegWrite無操作。把寄存器組WD端的數(shù)據(jù)寫入WR端指定的寄存器。ALUSrcAALU的第一個操作數(shù)為“PC+4”ALU的第一個操作數(shù)來自寄存器組的第一個輸出端RD1。DMRead無操作。以數(shù)據(jù)存儲器DM的DA端上的內(nèi)容作為地址,從DM讀出一個數(shù)據(jù)放在RD端上。DMWrite無操作。把DM的WD端的數(shù)據(jù)寫入DM,寫入地址由DM的DA端給出。DMtoReg寫入寄存器的值來自ALU寫入寄存器的值來自存儲器。Branch(如果判0部件“=0”中的值為1)用加法器計算出的PC+4替換PC中的值。用ALU計算出的分支目標(biāo)地址替換PC中的值。8.4實現(xiàn)MIPS的一個基本方案列出真值表R類指令的Op=0(二進制為000000)lw指令的Op=35(二進制為100011)sw指令Op=43(二進制為101011)beqz指令Op=63(二進制為111111)Op5~Op0的各位分別對應(yīng)于IR[31:26]中的各位
8.4實現(xiàn)MIPS的一個基本方案輸出/輸入信號名稱R類指令lw指令sw指令beqz指令輸入Op50111Op40001Op30011Op20001Op10111Op001118.4實現(xiàn)MIPS的一個基本方案輸出/輸入信號名稱R類指令lw指令sw指令beqz指令輸出RegDst10××ALUSrcA1110DMtoReg01××RegWrite1100DMRead0100DMWrite0010Branch0001ALUOp11000ALUOp00000ALUSrcB10001ALUSrcB001108.4實現(xiàn)MIPS的一個基本方案根據(jù)真值表,列出各輸出信號的表達式。例如:單周期方案的不足效率低下不同類型的指令所完成的工作量有很大的差別,所要用到的部件和所通過的數(shù)據(jù)通路不同,所用的時間的長短也有很大的差別。每個時鐘周期中功能部件最多被使用一次,如果要在執(zhí)行一條指令的過程中,多次使用某一部件,那么就需要重復(fù)設(shè)置該部件。(增加實現(xiàn)成本)8.5多周期實現(xiàn)方案8.5.1為什么要采用多周期8.5多周期實現(xiàn)方案解決上述問題的方法:采用多周期方案采用更短的時間作為時鐘周期,允許指令的執(zhí)行時間為多個時鐘周期。這個時鐘周期往往是一個基本部件的延遲時間。好處之一:可以共享同一個功能部件(如果是在不同的時鐘周期使用該部件的話)。例如:指令存儲器和數(shù)據(jù)存儲器可以合并為一個存儲器做PC+4的加法器可以和ALU合并8.5多周期實現(xiàn)方案對圖8.13進行改造在一些部件的后面增設(shè)臨時寄存器,用于存放該部件產(chǎn)生且下一個時鐘周期要用的結(jié)果。IR(指令寄存器)——存放從指令存儲器讀出的指令;LMD——存放從數(shù)據(jù)存儲器讀出的數(shù)據(jù);因為訪存讀取的數(shù)據(jù)來不及在同一個時鐘周期中寫入寄存器組。A和B——分別存放從寄存器組讀出的兩個數(shù)據(jù);Imm——存放擴展后的立即值;ALUo——存放ALU的運算結(jié)果;cond(1位)——存放判0部件“=0?”的結(jié)果。8.5.2指令分步執(zhí)行過程(按周期分步)8.5多周期實現(xiàn)方案需要設(shè)置哪些臨時寄存器取決于兩個因素什么樣的組合邏輯電路正好適合作為一個周期;哪些數(shù)據(jù)在該指令后面的執(zhí)行周期中需要用到。增加兩個寫控制信號IRWritePCWrite各指令的分步執(zhí)行情況取指令周期(IF)IR
IM[PC]PC+4對控制信號設(shè)置如下:
IRWrite=1//把新取出的指令寫入指令寄存器IR。8.5多周期實現(xiàn)方案指令譯碼/讀寄存器周期(ID)A
Regs[rs]B
Regs[rt]Imm
(IR[15:0]按符號位擴展為32位數(shù))指令的譯碼操作和讀寄存器操作是并行進行的。原因:在MIPS指令格式中,操作碼字段以及rs、rt
字段都是在固定的位置。這種技術(shù)稱為固定字段譯碼技術(shù)。
執(zhí)行/有效地址計算周期(EX)不同指令所進行的操作不同:8.5多周期實現(xiàn)方案存儲器訪問指令
ALUo
A+Imm控制信號設(shè)置如下:
ALUSrcA=1 //使得該多路器選擇A中的內(nèi)容,送給ALU的上一個輸入端。
ALUSrcB=01 //使得該多路器選擇Imm中的內(nèi)容,送給ALU的下一個輸入端。
ALUOp=00 //使ALU進行加法操作。R類算術(shù)邏輯運算指令
ALUo
AfunctB控制信號設(shè)置如下:
ALUSrcA=1 //使得該多路器選擇A中的內(nèi)容,送給ALU的上一個輸入端。8.5多周期實現(xiàn)方案
ALUSrcB=00 //使得該多路器選擇B中的內(nèi)容,送給ALU的下一個輸入端。
ALUOp=10 //使ALU按照指令中函數(shù)碼funct規(guī)定的操作進行運算。分支指令
ALUo
PC+(Imm<<2);cond
(A==0)對控制信號設(shè)置如下:
ALUSrcA=0//使得該多路器選擇PC+4,送給ALU的上一個輸入端。
ALUSrcB=10 //使得該多路器選擇Imm左移兩位后的內(nèi)容,送給ALU的下一個輸入端。
ALUOp=00 //使ALU進行加法操作。8.5多周期實現(xiàn)方案存儲器訪問/R類指令和分支指令完成周期(MEM)PCWrite=1 //寫入PC。存儲器訪問指令
load指令:LMD
DM[ALUo]對控制信號設(shè)置如下:DMRead=1//從DM讀取數(shù)據(jù)。
store指令:DM[ALUo]
B對控制信號設(shè)置如下:DMWrite=1 //向DM寫入數(shù)據(jù)。R類指令
Regs[rd]
ALUo8.5多周期實現(xiàn)方案對控制信號設(shè)置如下:
DMtoReg=0 //選擇ALUo中的內(nèi)容送到寄存器組的WD端。
RegDst=1 //選擇rd作為寫入地址。
RegWrite=1 //寫入寄存器。分支指令
if(cond&Branch)PC
ALUoelsePC
PC+4對控制信號設(shè)置如下:
Branch=1 //表示當(dāng)前指令是分支指令。
8.5多周期實現(xiàn)方案寫回周期(WB)
Regs[rt]
LMD對控制信號設(shè)置如下:
DMtoReg=1 //選擇LMD中的內(nèi)容送到寄存器組的WD端。
RegDst=0 //選擇rt作為寫入地址。
RegWrite=1 //寫入寄存器。各類型指令在各周期中的操作及相關(guān)的控制信號的設(shè)置(表8.6)8.5多周期實現(xiàn)方案周期名稱R類指令Op=“R類”存儲器訪問指令Op=“l(fā)w”或Op=“sw”分支指令Op=“beqz”取指令(IF)操作:IR
IM[PC]PC+4控制信號:IRWrite=1指令譯碼/讀寄存器(ID)操作:A
Regs[rs]B
Regs[rt]Imm
(IR[15:0]按符號位擴展為32位數(shù))控制信號:不需要執(zhí)行/有效地址計算(EX)操作:ALUo
AfunctB控制信號:ALUSrcA=1ALUSrcB=00ALUOp=10操作:ALUo
A+Imm控制信號:ALUSrcA=1ALUSrcB=01ALUOp=00操作:ALUo
PC+(Imm<<2)cond
(A==0)控制信號:ALUSrcA=0ALUSrcB=10ALUOp=00周期名稱R類指令Op=“R類”存儲器訪問指令Op=“l(fā)w”或Op=“sw”分支指令Op=“beqz”存儲器訪問/R類和分支指令完成(MEM)操作:
Regs[rd]
ALUo控制信號:DMtoReg=0RegDst=1RegWrite=1PCWrite=1load指令:操作:LMDDM[ALUo]控制信號:DMRead=1PCWrite=1操作:
If(cond&Branch)
PC
ALUoelsePCPC+4控制信號:Branch=1 PCWrite=1store指令:操作:
DM[ALUo]
B控制信號:DMWrite=1PCWrite=1寫回(WB)操作:load指令:Regs[rt]
LMD控制信號:DMtoReg=1RegDst=0RegWrite=1實現(xiàn)控制器的技術(shù)有兩種:硬連邏輯硬連邏輯是建立在有限狀態(tài)機的基礎(chǔ)上,并且一般是以狀態(tài)圖的形式表示。微程序設(shè)計微程序設(shè)計則是采用微指令的方式來表示和實現(xiàn)控制。8.6控制器的設(shè)計8.6控制器的設(shè)計控制器的一般組成:指令部件主要功能:取指令和分析指令。程序計數(shù)器PC(ProgramCounter)程序計數(shù)器指出了CPU當(dāng)前正在執(zhí)行的指令的地址。CPU每執(zhí)行完一條指令,就把它加4,指向順序的下一條指令。指令寄存器IR(InstructionRegister)
指令寄存器用于存放當(dāng)前正在執(zhí)行的指令。8.6.1控制器的組成8.6控制器的設(shè)計控制器的組成:指令部件、時序控制部件、微操作控制信號形成部件、
中斷控制邏輯、程序狀態(tài)字8.6控制器的設(shè)計指令譯碼器ID(InstructionDecoder)對IR中的指令操作碼進行譯碼分析,產(chǎn)生相應(yīng)操作的控制電平并提供給微操作控制信號形成部件。有的機器還需對尋址字段進行譯碼分析,以控制操作數(shù)有效地址的形成。地址形成部件根據(jù)該指令所指定的尋址方式,形成其操作數(shù)有效地址。時序控制部件微操作一個部件能夠完成的不能再細分的基本操作。計算機中最小的具有獨立意義的操作。8.6控制器的設(shè)計功能:用來產(chǎn)生一系列時序信號、為各個微操作定時的,以保證各個微操作的順序執(zhí)行。組成部分時鐘CP(ClockPulses)CP:協(xié)調(diào)計算機各部件操作的同步主時鐘。其工作頻率稱為計算機的主頻。時序信號發(fā)生器TSG(TimingSignalGenerator)產(chǎn)生機器所需的各種時序信號,以便控制有關(guān)部件在不同的時間內(nèi)完成指定的微操作。微操作控制信號形成部件根據(jù)指令部件提供的操作控制電位、時序控制部8.6控制器的設(shè)計
件所提供的各種時序信號,以及有關(guān)的狀態(tài)條件,產(chǎn)生計算機所需要的各種微操作的控制信號。中斷控制邏輯稱為中斷機構(gòu)。用于異?;蛲话l(fā)情況的處理。程序狀態(tài)寄存器PSR
存放程序狀態(tài)字PSW。PSW反映了計算機系統(tǒng)目前的基本狀態(tài),包括目態(tài)/管態(tài)、指令執(zhí)行的結(jié)果特征以及與中斷有關(guān)的信息等。指令執(zhí)行的結(jié)果特征包括運算結(jié)果為0、結(jié)果為負、結(jié)果溢出等。8.6控制器的設(shè)計控制方式同步控制方式
機器有統(tǒng)一的時鐘信號(稱為系統(tǒng)時鐘),所有的微操作控制信號都與時鐘信號同步。把一條指令的執(zhí)行過程劃分為若干個長度相等的時間區(qū)間,然后把該指令的微操作按順序安排到每一個時間區(qū)間中。這個時間區(qū)間稱為節(jié)拍。其寬度(時間)與一個時鐘周期的時間相同。節(jié)拍寬度的確定取決于所有微操作中時間最長的微操作所需的時間。8.6.2控制方式與時序系統(tǒng)8.6控制器的設(shè)計缺點:有時間浪費。優(yōu)點:時序關(guān)系簡單,控制方便,而且便于調(diào)試,系統(tǒng)較為可靠。本書模型機采用這種方式。異步控制方式
各部件之間沒有統(tǒng)一的時鐘和節(jié)拍,而是各部件有自己的時鐘。微操作控制信號采用應(yīng)答方式銜接。前一個操作完成后給出回答信號,啟動下一個操作。優(yōu)點:沒有時間上的浪費,效率高。缺點:設(shè)計比較復(fù)雜,所需的器材較多,系統(tǒng)調(diào)試難度較大,且工作過程中的可靠性不易保證。8.6控制器的設(shè)計時序系統(tǒng)時鐘、節(jié)拍和節(jié)拍電位構(gòu)成了計算機的時序系統(tǒng)。指令周期:從取指令、分析指令到執(zhí)行完該指令所需的全部時間。指令周期一般由若干個時鐘周期組成。節(jié)拍節(jié)拍一般用具有一定寬度的電位信號表示,稱為節(jié)拍電位。脈沖:用于寄存器的復(fù)位或打入脈沖等。指令周期、節(jié)拍、脈沖之間的關(guān)系:其中:每個指令周期包含5個節(jié)拍T0~T4
每個節(jié)拍有一個脈沖
8.6控制器的設(shè)計3級時序系統(tǒng)8.6控制器的設(shè)計根據(jù)表8.6,構(gòu)造出狀態(tài)圖。取指令和譯碼的狀態(tài)圖(對所有的指令都是一樣)
8.6.3模型機控制器的設(shè)計取指令和譯碼的狀態(tài)圖
8.6控制器的設(shè)計譯碼后,根據(jù)操作碼的不同,再轉(zhuǎn)移到各類指令的狀態(tài)圖??刂圃L存指令執(zhí)行過程的狀態(tài)機
有4個狀態(tài):LD-STLD2LD3ST28.6控制器的設(shè)計訪存指令執(zhí)行過程的狀態(tài)圖8.6控制器的設(shè)計R類指令執(zhí)行過程的狀態(tài)機有兩個狀態(tài):RR-STEP1,RR-STEP2
R類指令執(zhí)行過程的狀態(tài)圖
8.6控制器的設(shè)計分支指令執(zhí)行過程的狀態(tài)機有兩個狀態(tài):BR1,BR2
分支指令執(zhí)行過程的狀態(tài)圖
圖8.21總狀態(tài)圖
8.6控制器的設(shè)計使用指令譯碼器和一個計數(shù)器及其譯碼器來形成各狀態(tài)的時序。R-TYPE表示是R類指令LD、ST、BEQZ表示分別是lw、sw、beqz指令圖8.22模型機的硬連邏輯控制器
8.6控制器的設(shè)計進入各狀態(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è)計得
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年南京住建部房屋租賃合同示范文本更新版4篇
- 二零二五年度門窗品牌代理銷售合同2篇
- 2025年度內(nèi)部施工質(zhì)量監(jiān)理合同協(xié)議書
- 二零二五年度旅游大巴租賃與夜間觀光服務(wù)合同3篇
- 2025年度棉紗產(chǎn)業(yè)技術(shù)創(chuàng)新戰(zhàn)略聯(lián)盟成立合同4篇
- 二零二五年度農(nóng)業(yè)廢棄物資源化利用與農(nóng)產(chǎn)品包裝回收合同4篇
- 2025版新能源車輛融資租賃擔(dān)保合同4篇
- 2025衛(wèi)生院與保潔人員勞動合同規(guī)范文本3篇
- 二零二五年度特色苗圃土地租賃與種植技術(shù)合作合同3篇
- 2025年度國際工程項目外籍專家聘用合同
- 拉薩市2025屆高三第一次聯(lián)考(一模)語文試卷(含答案解析)
- 《保密法》培訓(xùn)課件
- 回收二手機免責(zé)協(xié)議書模板
- (正式版)JC∕T 60023-2024 石膏條板應(yīng)用技術(shù)規(guī)程
- 人教版高中生物學(xué)新舊教材知識差異盤點
- (權(quán)變)領(lǐng)導(dǎo)行為理論
- 2024屆上海市浦東新區(qū)高三二模英語卷
- 2024年智慧工地相關(guān)知識考試試題及答案
- GB/T 8005.2-2011鋁及鋁合金術(shù)語第2部分:化學(xué)分析
- 不動產(chǎn)登記實務(wù)培訓(xùn)教程課件
- 不銹鋼制作合同范本(3篇)
評論
0/150
提交評論