六章CPU設(shè)計(jì)講解材料_第1頁(yè)
六章CPU設(shè)計(jì)講解材料_第2頁(yè)
六章CPU設(shè)計(jì)講解材料_第3頁(yè)
六章CPU設(shè)計(jì)講解材料_第4頁(yè)
六章CPU設(shè)計(jì)講解材料_第5頁(yè)
已閱讀5頁(yè),還剩61頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第六章 CPU設(shè)計(jì)

6.1CPU設(shè)計(jì)基本步驟

6.2組合邏輯控制器設(shè)計(jì)

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

6.4流水線技術(shù)

6.5小結(jié)

6.1CPU設(shè)計(jì)基本步驟

CPU作為計(jì)算機(jī)系統(tǒng)的一部分,它的設(shè)計(jì)過(guò)程不應(yīng)當(dāng)獨(dú)立進(jìn)行,CPU的設(shè)計(jì)只是整個(gè)系統(tǒng)設(shè)計(jì)的一部分。CPU的功能是為系統(tǒng)的整體目標(biāo)服務(wù),它的組成與結(jié)構(gòu)受系統(tǒng)的應(yīng)用目標(biāo)限制。第一步是確定CPU的應(yīng)用場(chǎng)合(目標(biāo))。此步驟的關(guān)鍵是確定CPU所應(yīng)具有的處理能力(功能),應(yīng)保證與應(yīng)用需求一致。設(shè)計(jì)舉例第二步是擬定它將運(yùn)行的程序類型,確定為完成所要求功能需要的指令,從而確定CPU指令集結(jié)構(gòu)(ISA結(jié)構(gòu))。在完成指令集結(jié)構(gòu)設(shè)計(jì)之后,根據(jù)指令集結(jié)構(gòu)所確定的內(nèi)容來(lái)進(jìn)行設(shè)計(jì)CPU的各組成部件,以及用于連接各功能部件的數(shù)據(jù)通路結(jié)構(gòu)。第三步確定CPU指令集中各指令的微操作信號(hào)的節(jié)拍安排,以明確CPU(主要是控制器)為完成取指令、指令譯碼和執(zhí)行指令集中的每個(gè)指令所必須發(fā)出的微操作信號(hào)與指令、時(shí)間的關(guān)系。第四步形成微操作信號(hào)的邏輯表達(dá)式,該表達(dá)式的條件是指令、時(shí)間、狀態(tài)等,而結(jié)果是控制信號(hào)。依據(jù)各控制信號(hào)的邏輯表達(dá)式,可采用組合邏輯設(shè)計(jì)法或微程序設(shè)計(jì)法獲得控制器的邏輯電路圖或微程序,并將控制器和其它組合到一起形成CPU。設(shè)計(jì)舉例1996年,美國(guó)國(guó)家航空航天局(NASA)發(fā)射了一艘火星探路者號(hào)宇宙飛船,這只宇宙飛船用了7個(gè)月的時(shí)間航行才著陸到火星。一到達(dá)火星,它就放出了一個(gè)漫游機(jī)器人,叫做Sojouener,它用來(lái)探索探路者號(hào)飛船附近的表層,并且將讀取的數(shù)據(jù)傳回給宇宙飛船。然后探路者號(hào)飛船再將這些送回地球。1997年7月4日,探路者號(hào)飛船成功地到達(dá)了火星的表面。Sojouener只用了一個(gè)80C85微處理器控制整個(gè)操作。它運(yùn)行的時(shí)鐘速度為2MHz,但是該處理器并不是因?yàn)樗乃俣榷贿x中的。實(shí)際上,正是因?yàn)樗軌驁?zhí)行所需功能,而且因?yàn)檫@一版本的8085微處理器能在遠(yuǎn)離大氣層保護(hù),輻射強(qiáng)烈的環(huán)境中正確地工作。

6.2組合邏輯控制器設(shè)計(jì)6.2.1模型機(jī)基本設(shè)計(jì)

6.2.2微操作節(jié)拍安排

6.2.3模型機(jī)組合邏輯控制器設(shè)計(jì)

指令類型類型硬件描述語(yǔ)言形式匯編形式注釋數(shù)據(jù)傳送類AC:=M(X)LDX將存儲(chǔ)器內(nèi)容讀如到AC中M(X):=ACSTX將AC內(nèi)容送入存儲(chǔ)器中DR:=ACMOVDR,AC將AC內(nèi)容送入到DRAC:=DRMOVAC,DR將DR內(nèi)容送入到AC數(shù)據(jù)運(yùn)算類AC:=AC+DRADD將AC+DR結(jié)果送入ACAC:=AC-DRSUB將AC-DR結(jié)果送入ACAC:=ACandDRAND將AC與DR進(jìn)行“與”運(yùn)算,結(jié)果送入ACAC:=notACNOT將AC的內(nèi)容進(jìn)行“非”運(yùn)算,結(jié)果送入AC程序控制類PC:=M(adr)BRAadr將程序流程轉(zhuǎn)移到adr單元所存內(nèi)容所指位置IfAC=0thenPC:=M(adr)BZadr若AC=0則將程序流程轉(zhuǎn)移到adr單元所存內(nèi)容所指位置指令格式指令采用固定字長(zhǎng)方式,同時(shí)指令中處理的數(shù)據(jù)長(zhǎng)度與指令長(zhǎng)度相同,均為32位。指令尋址方式采用直接尋址,數(shù)據(jù)尋址方式采用直接尋址和隱含尋址。程序控制單元用于生成連接數(shù)據(jù)處理單元和程序控制單元、以及在CPU與外部存儲(chǔ)器之間的連接控制信號(hào)。操作碼

地址碼03431模型機(jī)部件設(shè)置與數(shù)據(jù)通路結(jié)構(gòu)CPU中寄存器的設(shè)置包括:IR(指令寄存器)用于存儲(chǔ)當(dāng)前正在執(zhí)行指令;AR(存儲(chǔ)器地址寄存器)用于存儲(chǔ)預(yù)訪問(wèn)單元地址;PC(程序計(jì)數(shù)器)用于存儲(chǔ)下條指令地址;DR(存儲(chǔ)器數(shù)據(jù)寄存器)用于存儲(chǔ)與存儲(chǔ)器進(jìn)行交互的數(shù)據(jù);AC(累加器)根據(jù)指令系統(tǒng)結(jié)構(gòu)可知寄存器組中可見(jiàn)寄存器為DR和AC,其余均為用于控制的不可見(jiàn)寄存器,標(biāo)志寄存器在結(jié)構(gòu)圖中未標(biāo)識(shí)。模型機(jī)的數(shù)據(jù)通路結(jié)構(gòu)為單組內(nèi)總線、分離寄存器結(jié)構(gòu)。模型機(jī)結(jié)構(gòu)框圖6.2.2微操作節(jié)拍安排節(jié)拍安排的目的:列出各條指令執(zhí)行所需的微操作信號(hào)以及各操作信號(hào)與時(shí)序信號(hào)之間的關(guān)系。

為提高指令的執(zhí)行效率,應(yīng)進(jìn)行微操作的節(jié)拍順序調(diào)整,微操作的節(jié)拍安排因遵循以下原則:微操作之間若次序有先后,安排時(shí)應(yīng)保持其先后次序不變。若微操作使用不同的部件,可使其安排在同一節(jié)拍內(nèi)。若不同微操作所占用的時(shí)間均不長(zhǎng),可以將它們安排在同一節(jié)拍的進(jìn)行,且保持其先后順序不變。模型機(jī)操作流程圖模型機(jī)采用將指令周期劃分成:取指工作周期和執(zhí)行工作周期,在取指工作周期包括3個(gè)節(jié)拍,而執(zhí)行周期根據(jù)指令復(fù)雜程度不同包含1–3個(gè)節(jié)拍。根據(jù)各條指令的功能和節(jié)拍安排原則,可形成下面模型機(jī)的操作流程圖。模型機(jī)控制點(diǎn)

控制點(diǎn)的作用:用于功能的選擇或數(shù)據(jù)流動(dòng)的控制。數(shù)據(jù)的正確流動(dòng),確保指令功能的實(shí)現(xiàn)。控制點(diǎn)與數(shù)據(jù)流控制的關(guān)系功能選擇用于對(duì)運(yùn)算器(ALU)進(jìn)行控制,實(shí)現(xiàn)控制ALU完成不同的數(shù)據(jù)處理。模型機(jī)功能選擇信號(hào):C2,C9,C10,C11,C12。存儲(chǔ)控制用于控制外存儲(chǔ)器。模型機(jī)存儲(chǔ)控制信號(hào):C1,C8,C13C14。數(shù)據(jù)通路控制用于控制數(shù)據(jù)通路中各控制點(diǎn)的開(kāi)放和關(guān)閉狀態(tài)的切換,實(shí)現(xiàn)數(shù)據(jù)、地址、指令等信息在CPU內(nèi)部各個(gè)數(shù)據(jù)和控制寄存器之間進(jìn)行傳遞。模型機(jī)數(shù)據(jù)通路控制信號(hào):C0

,C3

,C4

,C5

,C6

,C7。

控制信號(hào)功能控制信號(hào)功能控制信號(hào)功能C0AR:=PCC5AR:=DR(adr)C10AC:=AC-DRC1DR:=M(AR)C6DR:=ACC11AC:=ACandDRC2PC:=PC+1C7AC:=DRC12AC:=notACC3PC:=DR(adr)C8M(AR):=DRC13IO/MRC4IR:=DR(OP)C9AC:=AC+DRC14IO/MW6.2.3模型機(jī)組合邏輯控制器設(shè)計(jì)組合邏輯控制器基本結(jié)構(gòu)

模型機(jī)的操作時(shí)間表

組合邏輯控制器設(shè)計(jì)

組合邏輯控制器的優(yōu)缺點(diǎn)

組合邏輯控制器基本結(jié)構(gòu)組合邏輯控制器中的關(guān)鍵部分是組合邏輯電路,它將時(shí)序信號(hào)、指令譯碼結(jié)果、狀態(tài)/條件等信息(信號(hào))作為輸入,通過(guò)組合邏輯電路的處理,形成相對(duì)應(yīng)的控制信號(hào),從而完成CPU的指令控制、操作控制和時(shí)間控制功能。

模型機(jī)的操作時(shí)間表根據(jù)模型機(jī)指令操作流程圖、指令功能、微操作安排原則和控制信號(hào)的設(shè)置情況,形成的操作時(shí)間表的作用是列出各指令所需的操作信號(hào)與節(jié)拍信號(hào)之間的關(guān)系。工作周期標(biāo)志節(jié)拍狀態(tài)條件控制信號(hào)LDXSTXMOVDR,ACMOVAC,DRADDSUBANDNOTBRAadrBZadrFE(取指)T0

C01111111111C131111111111T1

C11111111111T2

C21111111111C411111111111→EX1111111111EX(執(zhí)行)T0

C511

C131

C14

1

T1

C11

C6

1

T2

C71

1

C8

1

C6

1

C9

1

C10

1

C11

1

C12

1

C3

1

AC=0C3

1組合邏輯控制器設(shè)計(jì)產(chǎn)生C6信號(hào)的邏輯圖

根據(jù)操作時(shí)間表可以生成各控制信號(hào)的邏輯表達(dá)式如下:C0=FE?T0C1=FE?T1+EX?T1?LDC2=FE?T2

C3=EX?T2?(BRA+BZ?(AC=0))C4=FE?T2

C5=EX?T0?(LD+ST)C6=EX?T1?ST+EX?T2?MOV1

C7=EX?T2?(LD+MOV2)C8=EX?T2?ST

C9=EX?T2?ADDC10=EX?T2?SUB

C11=EX?T2?ANDC12=EX?T2?NOT

C13=FE.T0+EX?T0?LDC14=EX?T0?ST在上述的邏輯表達(dá)式中,MOV1表示MOVDR,AC指令,MOV2表示MOVAC,DR指令。

組合邏輯控制器的優(yōu)缺點(diǎn)在組合邏輯控制器的設(shè)計(jì)過(guò)程發(fā)現(xiàn),組合邏輯控制器控制有以下兩個(gè)缺點(diǎn):組合邏輯控制器是由許多門電路產(chǎn)生控制信號(hào),而各控制信號(hào)所需的門電路邏輯很不規(guī)整,因此組合邏輯控制器的核心部分比較繁瑣、凌亂,設(shè)計(jì)效率較低,檢查調(diào)試比較困難。改進(jìn)方法是將程序設(shè)計(jì)技術(shù)引入到CPU機(jī)器的構(gòu)成級(jí),使設(shè)計(jì)規(guī)整化。組合邏輯控制因其使用邏輯門電路生成控制信號(hào),設(shè)計(jì)結(jié)果被固定在印刷電路板上,使其不易修改和擴(kuò)展。而且,在各個(gè)控制信號(hào)邏輯表達(dá)式中往往包含許多條件,其中一些邏輯變量可能在許多表達(dá)式公用的,修改一處就會(huì)牽動(dòng)其他,因而很難修改。改進(jìn)的方向是將程序存儲(chǔ)思想引入CPU設(shè)計(jì),取代用組合邏輯電路生成控制信號(hào),而是將控制信號(hào)以數(shù)字代碼的形式直接存入一個(gè)存儲(chǔ)器中,只要修改所存儲(chǔ)的代碼即控制信號(hào)信息,就可以完成修改有關(guān)的功能和執(zhí)行方式。組合邏輯控制器的優(yōu)點(diǎn)是運(yùn)行速度較快,因此目前應(yīng)用于高速計(jì)算機(jī)和RISC處理器和巨型機(jī)中,以及規(guī)模較小的計(jì)算機(jī)中。6.3微程序控制器設(shè)計(jì)6.3.1微程序基本原理6.3.2微程序控制器基本結(jié)構(gòu)

6.3.3微指令格式設(shè)計(jì)

6.3.4模型機(jī)微程序設(shè)計(jì)

6.3.5實(shí)例:基于微代碼的CPU:奔騰微處理器

6.3.1微程序基本原理指令的執(zhí)行是由一系列有序信號(hào)控制實(shí)現(xiàn)地,借鑒程序存儲(chǔ)思想英國(guó)劍橋大學(xué)教授威爾克斯在1951年提出微程序控制設(shè)計(jì)思想,作為一種控制單元設(shè)計(jì)方法,其核心思想可以歸納成一下幾點(diǎn):每一條機(jī)器指令的功能是通過(guò)微程序?qū)崿F(xiàn)的;微程序是作為一個(gè)實(shí)時(shí)指令解釋器,即每一條機(jī)器指令對(duì)應(yīng)一個(gè)由若干條微指令組成的微程序;微程序中的每一條微指令與一組微操作對(duì)應(yīng)(控制信號(hào)所對(duì)應(yīng)的動(dòng)作);微指令的序列反映了為完成一條機(jī)器指令所應(yīng)發(fā)出控制信號(hào)的先后次序;微指令也采用二進(jìn)制碼的形式;微程序的集合對(duì)應(yīng)著一個(gè)特定的指令集或機(jī)器語(yǔ)言。6.3.1微程序基本原理微程序控制器的設(shè)計(jì)工作只要集中在以下幾個(gè)方面:微指令格式設(shè)計(jì),因?yàn)槲⒅噶畈捎枚M(jìn)制碼的形式,所以必須為微指令擬就格式,以表示每一條微指令所對(duì)應(yīng)的微操作。微程序編制,為每一條機(jī)器指令編寫對(duì)應(yīng)的微程序,根據(jù)機(jī)器指令所包含的微操作,確定每個(gè)微程序中的微指令以及次序,進(jìn)而形成存入微程序控制器的微程序。作為一種設(shè)計(jì)活動(dòng),微程序的設(shè)計(jì)可與匯編語(yǔ)言程序設(shè)計(jì)相似??刂七壿嬰娐吩O(shè)計(jì),微程序的執(zhí)行和解釋需要相應(yīng)的控制邏輯電路,以實(shí)現(xiàn)微指令的讀取,微指令地址的形成,微指令流程控制和由微指令形成控制信號(hào)。6.3.2微程序控制器基本結(jié)構(gòu)1.控制存儲(chǔ)器用于存儲(chǔ)著與全部機(jī)器指令對(duì)應(yīng)的微程序。2.微地址控制邏輯依據(jù)時(shí)間、條件、指令和下地址信息等信息,來(lái)形成下條微指令地址。3.微地址寄存器的作用與PC(指令計(jì)數(shù)器)相同,用于存儲(chǔ)下一條微指令地址。4.微指令寄存器用于存儲(chǔ)由控制存儲(chǔ)器取出的微指令。5.微指令譯碼電路的作用是根據(jù)微指令用于生成控制信號(hào)。6.3.3微指令格式設(shè)計(jì)由于微指令是二進(jìn)制碼的形式而指令也是二進(jìn)制碼的形式,一個(gè)微指令一般也包括兩部分:操作控制字段和下地址控制字段。操作控制字段用于指出有那些控制信號(hào)被激活。下地址控制字段用于指出下一條待執(zhí)行微指令在控制存儲(chǔ)器中地址的本身或其計(jì)算方式。

微指令格式設(shè)計(jì)主要解決以下幾個(gè)問(wèn)題:操作控制編碼方式

微指令類型

下地址控制編碼方式

動(dòng)態(tài)微程序設(shè)計(jì)

微操作同步定時(shí)

操作控制編碼方式在操作控制字段一般包括一個(gè)或多個(gè)操作控制域,每個(gè)控制域可控制一個(gè)或一組控制信號(hào)的生成,根據(jù)控制信號(hào)是直接生成于控制域還是譯碼生成控制信號(hào)的不同可分為以下幾種形式。直接控制法:操作控制字段的每一位都與一個(gè)獨(dú)立控制信號(hào)相對(duì)應(yīng)。若當(dāng)前微指令的某一位ki=1,則與之對(duì)應(yīng)ci控制信號(hào)有效,否則ci控制信號(hào)無(wú)效。分段編碼控制法:在微程序級(jí)別,許多微操作是可以并行執(zhí)行。一般采用將微指令的操作控制字段分成k個(gè)相互獨(dú)立的控制域,每一個(gè)控制域存儲(chǔ)一組微操作,每一種編碼對(duì)應(yīng)一個(gè)微操作,每一個(gè)微操作都可以與其它控制域所存儲(chǔ)的任意一個(gè)微操作并行執(zhí)行,但在組內(nèi)的微操作之間是互斥的,不允許在同一時(shí)間段內(nèi)發(fā)生或有效。分段間接編碼控制法:在微指令格式里,如果一個(gè)字段的含義不只決定本字段編碼,還兼由其他字段決定,則可采用分段間接編碼控制法。此時(shí)一個(gè)字段兼有兩層或兩層以上的含義。分段間接編碼控制法的示意圖。其它方式:在實(shí)際微指令中操作控制編碼并不是只單獨(dú)采用上述三種編碼方式中的一種,而是將上述三種混合使用,以保證能綜合考慮指令的字長(zhǎng)、靈活性和執(zhí)行微程序的速度等方面的要求。分段間接編碼控制法的示意圖微指令類型微指令格式一般分為兩種類型:水平型和垂直型。水平型微指令有如下特點(diǎn):指令字比較長(zhǎng);能表達(dá)較高程度的微操作并行性;微操作控制信號(hào)編碼的量比較小。垂直型微指令有如下特點(diǎn):指令字長(zhǎng)比較短;表達(dá)微操作并行程度的能力較低;要進(jìn)行比較多的操作控制信號(hào)的編碼。垂直型微指令在很大程度上與RISC指令相類似,都盡量減少并行性,而保證單周期執(zhí)行的形式。但是計(jì)算機(jī)也經(jīng)常被設(shè)計(jì)成與水平型微指令相似的形式,具有較長(zhǎng)指令字和更高并行性的形式。下地址控制編碼方式一般情況下后繼微指令的地址有以下幾種給出方式:順序遞增法:將μPC設(shè)置成可實(shí)現(xiàn)自動(dòng)加1的功能,每當(dāng)完成當(dāng)前指令的執(zhí)行,就以μPC+1后的值為地址在控制存儲(chǔ)器中取下一條微指令。直接給出法:下一條微指令的地址直接取自微指令中的下地址字段。分支轉(zhuǎn)移法:在包含分支轉(zhuǎn)移的微指令中常設(shè)置一個(gè)條件選擇子區(qū)域,用于指出哪些判定條件被測(cè)試,與此同時(shí)轉(zhuǎn)移地址被存儲(chǔ)在下地址字段。當(dāng)轉(zhuǎn)移條件滿足時(shí),將下地址字段的內(nèi)容讀入到μPC中,取下一條微指令,實(shí)現(xiàn)微程序轉(zhuǎn)移。若轉(zhuǎn)移條件不滿足,微程序則順序執(zhí)行。微程序入口地址的形成:每條機(jī)器指令所對(duì)應(yīng)的微程序的入口地址(首地址),一般由指令的操作碼所決定。在機(jī)器加電后,第一條微指令的地址一般是由專門的邏輯電路生成,也可以采用由外部直接輸入的形式獲得。動(dòng)態(tài)微程序設(shè)計(jì)通常計(jì)算機(jī)的指令系統(tǒng)中指令的類型和數(shù)量是固定,而與其對(duì)應(yīng)的微程序也應(yīng)當(dāng)是保持不變的。但是如果采用EPROM作為控制存儲(chǔ)器,設(shè)計(jì)者可以通過(guò)更改控制存儲(chǔ)器所存儲(chǔ)的微程序,來(lái)改變機(jī)器的指令系統(tǒng),這種技術(shù)可以稱為動(dòng)態(tài)微程序技術(shù)。采用動(dòng)態(tài)微程序技術(shù)可以根據(jù)需要改變微程序,因此可在一臺(tái)機(jī)器上實(shí)現(xiàn)不同類型的微指令,可實(shí)現(xiàn)指令系統(tǒng)級(jí)的仿真,但對(duì)設(shè)計(jì)者的要求較高,未得到廣泛推廣。

微操作同步定時(shí)對(duì)于微指令的執(zhí)行過(guò)程都是基于下面的假設(shè),微指令所發(fā)出的控制信號(hào)都是在微指令的執(zhí)行周期發(fā)出的,而控制信號(hào)的發(fā)出并未指定時(shí)間。一個(gè)單時(shí)鐘信號(hào)起到控制信號(hào)的同步作用,而其長(zhǎng)度與微指令的指令周期長(zhǎng)度相同,此種控制模式稱為單周期。與某個(gè)特定操作對(duì)應(yīng)的微指令數(shù)目可以通過(guò)將微指令周期劃分成幾個(gè)連續(xù)更小的時(shí)間單位或時(shí)鐘周期來(lái)減少。一個(gè)控制信號(hào)可以在某個(gè)更小的時(shí)間單位里被激活,此種控制模式稱為多周期模式。多周期模式允許一個(gè)微指令指定一個(gè)微操作序列,但是將在一定程度上增加微指令格式的復(fù)雜程度。微操作同步定時(shí)(示例)若一條微指令控制實(shí)現(xiàn)下面的寄存器傳送操作:R:=f(R1,R2)其中R可能是R1或R2,該傳送操作可以被分解到以下四個(gè)階段進(jìn)行:階段1:從控制存儲(chǔ)器(CM)中取下條微指令到微指令寄存器。階段2:將寄存器R1和R2內(nèi)容送到處理功能單元f。階段3:將功能單元f生成的結(jié)果存儲(chǔ)到臨時(shí)寄存器或鎖存器L中。階段4:將臨時(shí)寄存器或鎖存器L中的結(jié)果存儲(chǔ)到目的寄存器中。6.3.4模型機(jī)微程序設(shè)計(jì)采用微程序控制器的模型機(jī)設(shè)計(jì)關(guān)鍵任務(wù)是編寫與每一條機(jī)器指令先對(duì)應(yīng)的微程序。具體步驟是:首先列出機(jī)器指令的全部的微操作以及時(shí)間節(jié)拍安排,然后確定微指令格式,最后編寫出每條微指令的二進(jìn)制代碼。基本微程序控制器設(shè)計(jì)

擴(kuò)充微程序設(shè)計(jì)

基本微程序控制器設(shè)計(jì)模型機(jī)機(jī)器指令的微操作節(jié)拍安排:機(jī)器指令微操作機(jī)器指令微操作FETCHAR:=PC;DR:=M(AR);PC:=PC+1,IR:=DR(OP);轉(zhuǎn)移到對(duì)應(yīng)指令執(zhí)行微子程序;MOV1DR:=AC,轉(zhuǎn)移到取指微子程序;MOV2AC:=DR,轉(zhuǎn)移到取指微子程序;ADDAC:=AC+DR,轉(zhuǎn)移到取指微子程序;SUBAC:=AC-DR,轉(zhuǎn)移到取指微子程序;LDAR:=DR(ADR);DR:=M(AR);AC:=DR,轉(zhuǎn)移到取指微子程序;ANDAC:=AC∧DR,轉(zhuǎn)移到取指微子程序;NOTAC:=.not.AC,轉(zhuǎn)移到取指微子程序;BRAPC:=DR(ADR),轉(zhuǎn)移到取指微子程序;STAR:=DR(ADR);DR:=AC;M(AR):=DR,轉(zhuǎn)移到取指微子程序;BZIfAC=0thenPC:=DR(ADR),轉(zhuǎn)移到取指微子程序;模型機(jī)微指令格式模型機(jī)的微指令格式:條件選擇字段的含義:S0S1含義00增量執(zhí)行01AC=0,轉(zhuǎn)移執(zhí)行10讀入起始地址11無(wú)條件轉(zhuǎn)移操作控制字段在模型機(jī)中控制信號(hào)的數(shù)目較少,所以采用直接控制法。微指令中操作控制字段的長(zhǎng)度是15位。其各位所對(duì)應(yīng)的微操作見(jiàn)下表

位標(biāo)志對(duì)應(yīng)控制信號(hào)位標(biāo)志對(duì)應(yīng)控制信號(hào)7AR:=PC15M(AR):=DR8DR:=M(AR)16AC:=AC+DR9PC:=PC+117AC:=AC-DR10PC:=DR(adr)18AC:=ACandDR11IR:=DR(OP)19AC:=notAC12AR:=DR(adr)20IO/MR13DR:=AC21IO/MW14AC:=DR

模型機(jī)微程序控制器組成

模型機(jī)基本微程序編制

微程序名稱微指令地址微指令(二進(jìn)制代碼)

下地址操作控制

十進(jìn)制0123456789101112131415161718192021取指0000×××××100000000000010

0100×××××010000000000000

0200×××××001010000000000

0310×××××000000000000000LD0400×××××000001000000010

0500×××××010000000000000

061100000000000010000000ST0700×××××000001000000000

0800×××××000000100000001

091100000000000001000000MOV1101100000000000100000000MOV2111100000000000010000000ADD121100000000000000100000SUB131100000000000000010000AND141100000000000000001000NOT151100000000000000000100BRA161100000000100000000000BZ170111000000100000000000擴(kuò)充微程序設(shè)計(jì)可以利用微程序控制器設(shè)計(jì)方法實(shí)現(xiàn)機(jī)器指令系統(tǒng)中指令擴(kuò)充。在模型機(jī)的基本運(yùn)算單元不變的情況下,利用在控制存儲(chǔ)器中添加微程序?qū)崿F(xiàn)乘法指令和除法指令,乘除法的算法采用補(bǔ)碼的比較算法和補(bǔ)碼不恢復(fù)余數(shù)除法算法。為完成乘/除運(yùn)算在模型機(jī)中需添加兩個(gè)專用寄存器:乘商寄存器(MQ,用于在乘法運(yùn)算中保存乘積,在除法運(yùn)算中保存商)和計(jì)數(shù)器(COUNT,實(shí)現(xiàn)運(yùn)算過(guò)程中加/減并移位運(yùn)算個(gè)數(shù)的計(jì)數(shù)功能)。而將數(shù)據(jù)寄存器DR作為運(yùn)算過(guò)程中的被乘數(shù)和除數(shù)。擴(kuò)充的模型機(jī)的CPU內(nèi)部結(jié)構(gòu)和控制點(diǎn)擴(kuò)展模型機(jī)控制信號(hào)

控制信號(hào)功能控制信號(hào)功能控制信號(hào)功能C0AR:=PCC10AC:=AC-DRC20DR:=MQC1DR:=M(AR)C11AC:=ACandDRC21MQ[0]:=1C2PC:=PC+1C12AC:=notACC22MQ[0]:=0C3PC:=DR(ADR)C13RSHIFTACC23COUNT:=COUNT+1C4IR:=DR(OP)C14LSHIFTACC24μPC:=IRC5AR:=DR(ADR)C15RSHIFTAC,MQC25COUNT:=0C6DR:=ACC16LSHIFTAC,MQC26F:=0C7AC:=DRC17AC:=0C27F:=1C8M(AR):=DRC18AC[n-1]:=FC28FLAGS:=0C9AC:=AC+DRC19MQ:=DR

采用HDL描述補(bǔ)碼的比較乘法算法微程序流程

微地址標(biāo)志微操作BEGINA:=0,COUNT:=0,F:=0TEST1IFMQ[0]=0then轉(zhuǎn)到RSHIFTADDAC:=AC+DR,F:=(DR[n-1]andMQ[0]orFRSHIFTAC[n-1]:=f,AC.MQ:=RSHIFT(AC.MQ),COUNT:=COUNT+1,ifCOUNT≠n-1then轉(zhuǎn)到TEST1TEST2ifMQ[0]=0then轉(zhuǎn)到FETCHSUBTRACTAC:=AC-DR,MQ[0]:=0,轉(zhuǎn)到FETCH擴(kuò)展模型機(jī)的微程序控制器

假設(shè)擴(kuò)展模型機(jī)操作控制字段采用直接控制法,則操作控制字段和條件選擇字段的長(zhǎng)度和為32位微指令字長(zhǎng)為32位,并設(shè)分支地址字段的長(zhǎng)度采用8位以表示完整的控制存儲(chǔ)器地址空間

6.3.5實(shí)例:基于微代碼的CPU:奔騰微處理器

6.4流水線技術(shù)6.4.1指令流水線原理

6.4.2流水線性能

6.4.3流水線中的多發(fā)技術(shù)

6.4.1指令流水線原理

在程序執(zhí)行時(shí),指令的執(zhí)行經(jīng)歷了一系列的處理步驟,這個(gè)分步驟的執(zhí)行過(guò)程很自然地形成一個(gè)流水過(guò)程,在一般情況下,指令的執(zhí)行過(guò)程包括:取指令;分析指令;取操作數(shù);執(zhí)行指令;保存操作結(jié)果。通常意義來(lái)講,指令流水線是一個(gè)多功能的、可重配置的流水線,通過(guò)充分重疊不同的指令不同執(zhí)行步驟實(shí)現(xiàn)加快計(jì)算機(jī)的執(zhí)行速度。指令流水線在通常情況下,對(duì)程序員來(lái)講是不可見(jiàn)的,而由編譯器和CPU內(nèi)部的程序控制器來(lái)自動(dòng)的進(jìn)行管理。1.流水線結(jié)構(gòu)

上圖是一個(gè)具有m個(gè)階段的運(yùn)算流水線,在流水線中的第Si階段完成數(shù)據(jù)處理后,將其處理結(jié)果連同其他未處理數(shù)據(jù)一起傳送到第Si+1階段,以進(jìn)行進(jìn)一步的處理,與此同時(shí)Si段從Si-1段接收到一個(gè)新的數(shù)據(jù)進(jìn)行處理。在整個(gè)流水線中共存在m個(gè)獨(dú)立的數(shù)據(jù),但它們分別位于流水線的不同的階段,在相鄰的兩個(gè)階段之間設(shè)置緩沖寄存器R和其他的同步邏輯,以避免相鄰階段之間的相互影響。

2.多階段流水線

一個(gè)m段的指令流水線能夠重疊m條指令的執(zhí)行,使用m個(gè)階段的目的就是盡最大可能地提高指令吞吐率。如何決定m的值呢?多段流水線的段數(shù)是由指令執(zhí)行過(guò)程可以被有效分解的段數(shù)決定的,而這個(gè)段數(shù)是與指令系統(tǒng)的復(fù)雜程度、內(nèi)存的組織形式、CPU內(nèi)部的數(shù)據(jù)通路結(jié)構(gòu)等因素有關(guān)。在實(shí)際應(yīng)用中,流水線的段數(shù)的范圍是3個(gè)到十幾個(gè)或更多。一個(gè)具有4段流水線的CPU圖中所顯示的四個(gè)階段(S1——S4)分別執(zhí)行下面功能:IF:將指令緩沖中的當(dāng)前指令取出并進(jìn)行解碼。OL:將操作數(shù)由數(shù)據(jù)緩沖取到寄存器中。EX:使用ALU和寄存器對(duì)數(shù)據(jù)進(jìn)行處理。OS:將運(yùn)算結(jié)果由寄存器存儲(chǔ)到數(shù)據(jù)緩沖中。四階段指令流水線的時(shí)空?qǐng)D。

假如每個(gè)階段的操作均在一個(gè)CPU周期(Tc)內(nèi)完成,此時(shí)指令流水線和CPU作為一個(gè)整體將以f=1/Tc的時(shí)鐘頻率運(yùn)行。在理想情況下,假如忽略分支轉(zhuǎn)移、cache缺失或其他原因的延遲,指令流水線的最大的吞吐率可以達(dá)到每個(gè)周期執(zhí)行一條指令,既CPI=1。

6.4.2流水線性能1.流水線性能評(píng)價(jià)

流水線的性能可以通過(guò)指令的吞吐率來(lái)度量,吞吐率的單位一般是MIPS表示每秒有多少兆條指令被執(zhí)行。另一個(gè)比較流行的評(píng)價(jià)指標(biāo)是CPI表示每條指令執(zhí)行所需的時(shí)鐘周期數(shù)。

其中f是流水線的時(shí)鐘頻率,單位是MHz。CPI和MIPS都是系統(tǒng)平均值,它們是通過(guò)運(yùn)行系統(tǒng)測(cè)試基準(zhǔn)程序獲得的。CPI的最大值是1,即每個(gè)時(shí)鐘周期完成一條指令執(zhí)行,此時(shí)流水線的性能達(dá)到最佳,系統(tǒng)的指令吞吐率與流水線的時(shí)鐘頻率相等。系統(tǒng)最大吞吐率的獲得要求指令流水線應(yīng)被送入一個(gè)連續(xù)不斷的指令流,這樣可以保證指令流水線的各階段都保證處于忙狀態(tài),從而提高硬件利用率和指令的執(zhí)行速度,可視化的分析工具———時(shí)空?qǐng)D時(shí)空?qǐng)D通過(guò)顯示指令流水線的每一個(gè)階段的時(shí)間關(guān)系。一般情況下,一個(gè)m段流水線的時(shí)空?qǐng)D包含m×n個(gè)格,其中n表示完成N條連續(xù)指令所需的時(shí)鐘周期的個(gè)數(shù)。圖中的非陰影部分表示流水線的該階段在指定周期處于忙的狀態(tài),并是對(duì)應(yīng)指令處于對(duì)應(yīng)處理階段,陰影部分表示在指令序列中該階段沒(méi)有被使用,這些階段也可是因?yàn)樗璧臄?shù)據(jù)未準(zhǔn)備好,而處于空閑狀態(tài)。

其它度量參數(shù)效率E(m):在整個(gè)時(shí)空?qǐng)D中非陰影部分(忙階段)所中的比例稱為流水線的效率。加速比S(m):被定義成如下的形式其中:T(m)表示指定工作程序的指令流在m段流水線上的指令執(zhí)行時(shí)間,T(1)表示相同的指令流在非流水線機(jī)上的執(zhí)行時(shí)間。加速比與效率之間存在如下關(guān)系:2.m的最優(yōu)化選擇

加速比的定義公式給出一個(gè)改進(jìn)流水線的性能的途徑,即增加指令流水線的段數(shù)m。

是不是指令流水線的段數(shù)越多越好呢?段數(shù)多少為合適呢?為確定m的取值范圍做如下的假設(shè)和推導(dǎo):假設(shè)流水線P有m個(gè)段,并執(zhí)行一個(gè)特定的指令集合SI,a是一個(gè)高效的非流水線計(jì)算機(jī)執(zhí)行相同的指令集所需的時(shí)間。指令流水線中每個(gè)階段的延遲是a/m,指令流水線應(yīng)加上一個(gè)附加的延遲b,它是由于添加了階段之間的緩沖寄存器。c是每個(gè)階段的緩沖寄存器成本,d是流水線數(shù)據(jù)處理部分的硬件成本。(流水線性價(jià)比PCR與段數(shù)m之間關(guān)系示意圖)

實(shí)際上,大多數(shù)流水線的時(shí)在功能級(jí)上進(jìn)行分段的,段數(shù)的范圍在2≤m≤15之間。在實(shí)際的計(jì)算機(jī)中,極少有計(jì)算機(jī)的流水線設(shè)計(jì)成超過(guò)10段的。

3.影響流水線性能的因素以及解決方法

在分析流水線的性能過(guò)程中,流水線的性能達(dá)到最高水平要求指令系列是連續(xù)的,且在指令執(zhí)行過(guò)程中流水線的各段都應(yīng)處于忙狀態(tài)。實(shí)際上在計(jì)算機(jī)的執(zhí)行過(guò)程中,許多問(wèn)題均可以影響流水線的執(zhí)行,很難保證流水線各個(gè)階段在任何時(shí)刻均保持處于忙的狀態(tài)。有哪些因素影響流水線的運(yùn)行?這些問(wèn)題如何解決?在實(shí)際指令執(zhí)行過(guò)程中有以下幾種情況可能影響流水線的性能:(1)訪存沖突

(2)控制相關(guān)

(3)數(shù)據(jù)相關(guān)

(1)訪存沖突根據(jù)前面的分析可知,在指令流水線的取指令、取操作數(shù)、存操作數(shù)等階段都需要訪問(wèn)存儲(chǔ)器,使得流水線的后繼指令的執(zhí)行停滯,影響流水線的性能。一般可采用以下方法進(jìn)行解決:1)設(shè)置兩個(gè)獨(dú)立的存儲(chǔ)器分別存放操作數(shù)和指令,以免取指令和取操作數(shù)同時(shí)進(jìn)行時(shí)相互沖突,使取某指令和取另一條指令的操作數(shù)實(shí)現(xiàn)時(shí)間上的重疊。2)采用指令預(yù)取技術(shù),如在8086中設(shè)置指令隊(duì)列,將指令預(yù)先取到指令隊(duì)列中排隊(duì)。指令預(yù)取技術(shù)的實(shí)現(xiàn)是基于訪存周期很短的情況,如在指令執(zhí)行階段,取數(shù)的時(shí)間很短,因此在指令執(zhí)行時(shí),主存會(huì)有空閑,此時(shí),只要指令隊(duì)列空出,就可以取下一條指令,并放至空出的指令隊(duì)列中,從而保證在執(zhí)行第K條指令的同時(shí)對(duì)第K+1條指令進(jìn)行譯碼,實(shí)現(xiàn)“指令K指令”與“分析K+1”的重疊。3)一般情況下也可以采用精細(xì)的調(diào)度算法,使得可能發(fā)生訪存沖突的指令的開(kāi)始執(zhí)行時(shí)間相互錯(cuò)開(kāi),涉及內(nèi)容較多,將在后繼課程《系統(tǒng)結(jié)構(gòu)》中詳細(xì)介紹,(2)控制相關(guān)條件轉(zhuǎn)移、無(wú)條件轉(zhuǎn)移、子程序調(diào)用和其它的程序控制指令都可能導(dǎo)致分支轉(zhuǎn)移,在這些指令的執(zhí)行過(guò)程中,下條指令的地址在程序控制類指令I(lǐng)執(zhí)行完畢之前都是不確定的。在程序控制指令I(lǐng)執(zhí)行時(shí),取入的指令很可能是一條錯(cuò)誤指令,若程序控制指令導(dǎo)致程序控制流程跳轉(zhuǎn)到另外一個(gè)位置,此時(shí)在之前預(yù)取的指令和相應(yīng)操作都被取消,這將導(dǎo)致指令流水線刷新,明顯的降低指令吞吐率。一般采用如下的解決辦法:1)在雙分支轉(zhuǎn)移情況下,編譯器和指令流水線控制邏輯將“猜測(cè)”分支方向,即預(yù)測(cè)分支條件測(cè)試結(jié)果,將最用可能的目標(biāo)指令在程序控制指令I(lǐng)取入到指令流水線。此時(shí)指令流水線的刷新只有在“猜測(cè)”錯(cuò)誤情況下才會(huì)發(fā)生。

2)流水線計(jì)算機(jī)也可以通過(guò)采用不同的硬件技術(shù)來(lái)解決由于分支轉(zhuǎn)移引起的流水線性能下降。3)在大部分RISC計(jì)算機(jī)中都普遍采用延遲分支技術(shù),一條延遲分支指令I(lǐng)1在執(zhí)行時(shí)指令I(lǐng)2被預(yù)取到指令流水線中,但指令I(lǐng)2并非分支指令I(lǐng)1的轉(zhuǎn)移分支,分支指令I(lǐng)1的轉(zhuǎn)移分支I`被放在指令I(lǐng)2后運(yùn)行,而非一般意義上的在指令I(lǐng)1之后運(yùn)行。(3)數(shù)據(jù)相關(guān)數(shù)據(jù)相關(guān)問(wèn)題的發(fā)生是因?yàn)樵谙嘟闹噶罟餐褂猛粋€(gè)操作數(shù),數(shù)據(jù)相關(guān)也能影響指令流水線的吞吐率。

數(shù)據(jù)相關(guān)有讀-寫相關(guān)、寫-讀相關(guān)和寫-寫相關(guān)等幾種形式,這幾種情況的發(fā)生與指令流水線的結(jié)構(gòu)有關(guān),同時(shí)也與進(jìn)行存取(針對(duì)存儲(chǔ)器或寄存器)操作的指令的順序有關(guān)。解決方法:1、程序執(zhí)行過(guò)程中可以通過(guò)檢測(cè)來(lái)判斷是否存在數(shù)據(jù)相關(guān)風(fēng)險(xiǎn),這種檢查可以在程序編譯過(guò)程中進(jìn)行靜態(tài)風(fēng)險(xiǎn)檢測(cè),也可以在程序運(yùn)行過(guò)程中進(jìn)行動(dòng)態(tài)風(fēng)險(xiǎn)檢測(cè)。若有存在數(shù)據(jù)相關(guān)風(fēng)險(xiǎn)的指令對(duì)(I1,I2),只要保證在指令I(lǐng)2進(jìn)入數(shù)據(jù)讀寫階段之前,指令I(lǐng)1完成可能發(fā)生數(shù)據(jù)相關(guān)的階段即可,可以通過(guò)在指令I(lǐng)1之后插入若干個(gè)空操作指令,以延遲指令I(lǐng)2的執(zhí)行。也可以通過(guò)改變指令的順序,或?qū)⑵渌噶畈迦氲絀1和I2之間,插入的指令應(yīng)當(dāng)既不減慢指令流入流水線的速度,又不會(huì)影響程序的功能。2、在流水線中設(shè)置專門的數(shù)據(jù)傳送通路,實(shí)現(xiàn)在相互作用的指令之間快速傳遞共享數(shù)據(jù)。(使用前向數(shù)據(jù)通路減低數(shù)據(jù)相關(guān)延遲損失示意圖)流水線性價(jià)比PCR與段數(shù)m之間關(guān)系示意圖使用前向數(shù)據(jù)通路減低數(shù)據(jù)相關(guān)延遲損失示意圖6.4.3流水線中的多發(fā)技術(shù)

流水線技術(shù)使計(jì)算機(jī)的體系結(jié)構(gòu)發(fā)生重大變革,提高了計(jì)算機(jī)的性能,為了進(jìn)一步提高計(jì)算機(jī)的性能,除了采用好的指令調(diào)度算法、重新組織指令執(zhí)行順序、采用一定的措施降低相關(guān)帶來(lái)的干擾和優(yōu)化編譯之外,還可開(kāi)發(fā)指令流水線的多發(fā)技術(shù),設(shè)法在一個(gè)時(shí)鐘周期之內(nèi)完成更多指令的執(zhí)行。常見(jiàn)的多發(fā)技術(shù)包括:

超標(biāo)量技術(shù)

超流水技術(shù)

超長(zhǎng)指令字(VLIW)

超標(biāo)量技術(shù)超標(biāo)量是指在每個(gè)時(shí)鐘周內(nèi)可同時(shí)并發(fā)多條指令,以并行操作方式將兩條或兩條以上的指令譯碼執(zhí)行。在超標(biāo)量計(jì)算機(jī)中有多個(gè)執(zhí)行部件(E-unit),每一個(gè)分屬不同的指令流水線,這樣在機(jī)器內(nèi)部就構(gòu)成了多個(gè)相互獨(dú)立的指令流水線。程序控制單元(PCU)被設(shè)計(jì)成具備同時(shí)讀取并譯碼多條指令的能力,而且能夠把同時(shí)取得K指令分別

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論