李山山, 劉敬晗
(清華大學(xué) 計(jì)算機(jī)系, 北京 100084)
計(jì)算機(jī)組成和系統(tǒng)結(jié)構(gòu)是計(jì)算機(jī)專(zhuān)業(yè)重要的核心基礎(chǔ)課之一[1],但是課程內(nèi)的計(jì)算機(jī)高層次設(shè)計(jì)中采用的策略、結(jié)構(gòu)、原理以及工作過(guò)程等內(nèi)容,相對(duì)比較抽象和空洞,是比較難講清楚的,學(xué)生經(jīng)常反映學(xué)起來(lái)難懂和乏味[2]。為了幫助學(xué)生更好地理解這些內(nèi)容,一些學(xué)校加入了一些更加直觀的實(shí)踐手段,如采用模擬實(shí)驗(yàn)系統(tǒng)進(jìn)行課程實(shí)驗(yàn)[3]。但是采用軟件模擬手段的實(shí)驗(yàn)內(nèi)容大多是驗(yàn)證性質(zhì)的,學(xué)生缺少參與度,因此缺乏對(duì)計(jì)算機(jī)硬件設(shè)計(jì)層次的理解。如果讓學(xué)生自己在硬件上設(shè)計(jì)并實(shí)現(xiàn)一個(gè)具有相應(yīng)功能的處理器則能更好地提高學(xué)生對(duì)相關(guān)理論點(diǎn)的理解和掌握程度,因此我們?cè)谟?jì)算機(jī)組成與系統(tǒng)結(jié)構(gòu)課程的實(shí)驗(yàn)中加強(qiáng)了設(shè)計(jì)實(shí)踐環(huán)節(jié),包括流水線(xiàn)、多核、指令調(diào)度算法等實(shí)驗(yàn)內(nèi)容,都需要學(xué)生在實(shí)際硬件上設(shè)計(jì)實(shí)現(xiàn)的,切實(shí)提高了實(shí)驗(yàn)教學(xué)的水平和理論教學(xué)層次。
本文提供了課程實(shí)驗(yàn)的一個(gè)樣例,實(shí)現(xiàn)了利用Tomasulo算法處理數(shù)據(jù)相關(guān)的四級(jí)流水線(xiàn)CPU。該樣例不僅包括了計(jì)算機(jī)組成原理的基礎(chǔ)知識(shí),如CPU的結(jié)構(gòu)、數(shù)據(jù)通路等,更加突出了流水線(xiàn)、Tomasulo算法等系統(tǒng)結(jié)構(gòu)的內(nèi)容。文中首先介紹了開(kāi)展實(shí)驗(yàn)的環(huán)境以及相關(guān)技術(shù)基礎(chǔ),然后介紹了該CPU的指令系統(tǒng),接著描述了整個(gè)CPU的結(jié)構(gòu)以及內(nèi)部主要部分的功能,然后從功能和性能兩方面對(duì)CPU進(jìn)行了測(cè)試,最后對(duì)Tomasulo算法的優(yōu)缺點(diǎn)以及其適用的范圍做盡量深入的分析。
由于有了可編程芯片和硬件設(shè)計(jì)語(yǔ)言,使得計(jì)算機(jī)系統(tǒng)硬件設(shè)計(jì)實(shí)驗(yàn)變得更加方便可行,也有了很多這類(lèi)的實(shí)驗(yàn)平臺(tái)[4-5]。本實(shí)驗(yàn)使用的硬件是開(kāi)放式CPU設(shè)計(jì)與測(cè)試平臺(tái),它是專(zhuān)門(mén)為系統(tǒng)結(jié)構(gòu)相關(guān)課程實(shí)驗(yàn)設(shè)計(jì)的,能夠支持下載到FPGA中的處理器的調(diào)試。軟件方面使用Quartus進(jìn)行處理器設(shè)計(jì),另外使用DebugController的程序來(lái)支持對(duì)外部存儲(chǔ)器的讀寫(xiě)操作,還能夠監(jiān)控處理器的狀態(tài)和調(diào)試正在執(zhí)行的程序,比如設(shè)置斷點(diǎn),對(duì)地址總線(xiàn)、數(shù)據(jù)總線(xiàn)進(jìn)行監(jiān)控等等。該實(shí)驗(yàn)平臺(tái)提供了最大的自由度,讓同學(xué)可以自由設(shè)計(jì)處理器,并在測(cè)試平臺(tái)上調(diào)試和運(yùn)行[6]。
流水線(xiàn)技術(shù)是多條指令同時(shí)執(zhí)行的一種實(shí)現(xiàn)技術(shù),是現(xiàn)代計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)的基本技術(shù)之一[7]。流水線(xiàn)的每一個(gè)步驟完成一條指令的一部分,各部分相連接形成流水線(xiàn)。指令從一端進(jìn)入,經(jīng)過(guò)這些流水節(jié)拍的處理,從另一端流出,流水線(xiàn)的吞吐量取決于指令流出流水線(xiàn)的速度。
Tomasulo算法是Robert Tomasulo在1967年提出了的寄存器重命名(Register Renaming)的技術(shù)[8]。Tomasulo算法是一種動(dòng)態(tài)調(diào)度算法,將寄存器換名技術(shù)融入了記分板方案中來(lái)避免寫(xiě)寫(xiě)沖突和讀寫(xiě)沖突,從而使指令在有沖突存在的情況下仍能繼續(xù)執(zhí)行。
在Tomasulo算法中,保留站中緩存了即將要發(fā)射的指令所需要的操作數(shù),其工作的基本思想是盡可能早地取得并緩存一個(gè)操作數(shù),從而避免必須讀操作數(shù)時(shí)才去寄存器中讀取的情況,即將執(zhí)行的指令會(huì)在保留站中取得所需要的操作數(shù)。當(dāng)出現(xiàn)多個(gè)操作數(shù)時(shí)對(duì)應(yīng)的寄存器也將換成保留站的名字,這一過(guò)程也叫做寄存器換名技術(shù)[9]。發(fā)射邏輯部件與保留站換名技術(shù)的結(jié)合,消除了寫(xiě)寫(xiě)沖突和讀寫(xiě)沖突。在算法中,沖突檢測(cè)和執(zhí)行控制是分散的,每一個(gè)功能部件的保留站控制該部件中指令的執(zhí)行。結(jié)果將從保留站所緩存的地方直接送到功能部件中,而不是通過(guò)寄存器傳送,為此使用了一條結(jié)果總線(xiàn)。該總線(xiàn)允許所有等待該操作數(shù)的功能部件可以同時(shí)取到該數(shù)據(jù)。Tomasulo算法的整體結(jié)構(gòu)簡(jiǎn)圖[8]如圖1所示。
保留站中保存著已經(jīng)發(fā)射并等待到功能部件中去執(zhí)行的指令,還有指令所需要的原操作數(shù)以及控制該指令在部件中執(zhí)行所需要的信息。在讀寫(xiě)數(shù)緩沖站中保存著從內(nèi)存讀出或要保存到存儲(chǔ)器去的數(shù)據(jù)或數(shù)據(jù)地址。所有從功能部件和存儲(chǔ)器中出來(lái)的結(jié)果均被送到公共數(shù)據(jù)總線(xiàn)上,并到達(dá)所有需要該操作數(shù)的地方。除了讀數(shù)緩沖站,所有緩沖站和保留站均設(shè)置有標(biāo)志域,用于沖突控制機(jī)制。
指令執(zhí)行會(huì)經(jīng)過(guò)的以下三個(gè)階段[10]:
(1) 發(fā)射。從指令隊(duì)列中取得一條指令,根據(jù)指令和當(dāng)前保留站或緩沖站的狀態(tài)決定是否發(fā)射,同時(shí)在發(fā)射階段進(jìn)行寄存器換名工作。
圖1 Tomasulo算法的整體結(jié)構(gòu)簡(jiǎn)圖
(2) 執(zhí)行。若還有操作數(shù)沒(méi)有準(zhǔn)備好,則監(jiān)視CDB等待源操作數(shù)。當(dāng)操作數(shù)計(jì)算出來(lái)之后,就放到相應(yīng)的保留站中,當(dāng)指令所需要的原操作數(shù)均出現(xiàn)之后,就可以執(zhí)行該運(yùn)算。執(zhí)行過(guò)程中必須檢測(cè)寫(xiě)寫(xiě)沖突。
(3) 寫(xiě)回結(jié)果。當(dāng)結(jié)果出來(lái)之后,送至CDB,進(jìn)而寫(xiě)回到寄存器中,或被其他保留站讀取。
實(shí)驗(yàn)使用的指令系統(tǒng)必須能夠適應(yīng)處理器的體系結(jié)構(gòu)[11]。指令系統(tǒng)參考了MIPS等精簡(jiǎn)的指令集[12]的設(shè)計(jì),適合流水和動(dòng)態(tài)調(diào)度的架構(gòu),共有25條,基本功能完善,每條指令的指令碼都是16 b,具體指令如表1所示。
在處理器實(shí)現(xiàn)過(guò)程中,由于采用了Tomasulo算法,最終版本的處理器實(shí)現(xiàn)了順序發(fā)射指令而亂序執(zhí)行,可以同時(shí)容納4個(gè)ALU運(yùn)算操作、2個(gè)乘除法操作、2個(gè)內(nèi)存讀和2個(gè)內(nèi)存寫(xiě)操作。處理器整體結(jié)構(gòu)如圖2所示。
主要部分說(shuō)明如下:
Decoder。指令譯碼,產(chǎn)生操作數(shù)、操作碼及控制信號(hào)。
指令隊(duì)列。由7個(gè)指令項(xiàng)組成,存儲(chǔ)準(zhǔn)備發(fā)射的指令。
Issue control。控制指令發(fā)射。指令發(fā)射到哪個(gè)站,告訴指令發(fā)射到哪里去,表明該條指令的跳轉(zhuǎn)指令種類(lèi)等。
寄存器堆。每項(xiàng)都是19位,前3位是數(shù)據(jù)來(lái)源的保留站或buffer的編號(hào),后16位是數(shù)據(jù),與數(shù)據(jù)總線(xiàn)上的數(shù)據(jù)進(jìn)行同步。
ALU保留站。有4個(gè)保留站項(xiàng)組成,存儲(chǔ)操作數(shù)。
表1 指令系統(tǒng)
圖2 處理器結(jié)構(gòu)簡(jiǎn)圖
Store/Load buffer訪(fǎng)存時(shí)的暫存數(shù)據(jù)。
MUL 保留站??刂葡蚰囊粋€(gè)空閑保留站內(nèi)發(fā)射指令;對(duì)于處于忙狀態(tài)的保留站,把數(shù)據(jù)總線(xiàn)上的數(shù)據(jù)寫(xiě)回。
LS control logic??刂谱x寫(xiě)緩沖站工作。
ALU。完成主要算術(shù)邏輯運(yùn)算操作。
Wirteback control logic:寫(xiě)回控制邏輯,優(yōu)先順序是:先乘法器的運(yùn)算結(jié)果,其次是ALU的運(yùn)算結(jié)果,最后是緩沖器的結(jié)果。
內(nèi)存訪(fǎng)問(wèn)仲裁。用來(lái)處理指令中的內(nèi)存讀寫(xiě)和取指操作時(shí)的內(nèi)存訪(fǎng)問(wèn)之間的沖突用的。
mul 乘法器。完成乘法操作。
功能檢測(cè)主要是測(cè)試CPU的功能是否和預(yù)期的相符。由于使用了Tomasulo算法,其特色為使用寄存器換名技術(shù),順序發(fā)射指令但是亂序執(zhí)行,寫(xiě)回結(jié)果的順序不定,在程序最終的時(shí)候才能確定最后的結(jié)果[13]。因此在運(yùn)行的過(guò)程當(dāng)中情況是很復(fù)雜的。
首先測(cè)試了所有指令單條運(yùn)行,使用DebugController跟蹤指令運(yùn)行,驗(yàn)證指令運(yùn)行正確,本測(cè)試結(jié)果正確,對(duì)此,本文不做進(jìn)一步討論。
接著由于Tomasulo算法解決了相關(guān)性,避免了沖突,因此需要對(duì)相關(guān)性進(jìn)行測(cè)試,采用了以下測(cè)試樣例,其中包括了相關(guān)性的分析(圖3的箭頭標(biāo)明了有相關(guān)性的指令)。
可以看出,這幾條指令之間存在著WRW、RAW、WAR三種不同的相關(guān)性[14]。使用DebugController跟蹤這段指令的運(yùn)行,可以觀察寄存器、保留站和數(shù)據(jù)總線(xiàn)及其標(biāo)記位的變化,變化過(guò)程如圖4所示。
圖4 指令的執(zhí)行過(guò)程
圖中標(biāo)示了哪些保留站或者寄存器的數(shù)據(jù)是可用的,且對(duì)應(yīng)的編號(hào)表示在等待那個(gè)站的輸出結(jié)果。ALU0的編號(hào)為000,ALU1的編號(hào)為001;databus即數(shù)據(jù)總線(xiàn)中的標(biāo)記位表示當(dāng)前總線(xiàn)上的數(shù)據(jù)來(lái)自哪一個(gè)保留站,當(dāng)寄存器和保留站檢測(cè)到這個(gè)編號(hào)等于自己等待的編號(hào)時(shí),就將數(shù)據(jù)寫(xiě)入并且將標(biāo)記位置為有效。保留站中的數(shù)字表示當(dāng)前站中存放的是那一條指令,*表示該站中的源操作數(shù)已經(jīng)準(zhǔn)備好。從圖中可以看出,這種方式正確的解決了指令之間的各種相關(guān)性,保證了最后寫(xiě)回結(jié)果是正確的,但是在程序中位于前面的指令即先發(fā)射的指令未必先完成,從寄存器的數(shù)據(jù)中可以看出,同時(shí)一些中間結(jié)果是沒(méi)有寫(xiě)回寄存器的,而是寫(xiě)回了保留站中,寄存器中只寫(xiě)入最新的數(shù)據(jù)。
內(nèi)存讀取要處理兩方面的內(nèi)容:一個(gè)方面是load和store指令之間的相關(guān),另外一個(gè)方面是指令讀取和load/store指令之間的沖突。為了消除訪(fǎng)問(wèn)內(nèi)存時(shí)的相關(guān)與冒險(xiǎn),使用讀寫(xiě)隊(duì)列的思想,控制store和load按照程序原來(lái)的順序執(zhí)行。而其他的運(yùn)算操作則可以亂序執(zhí)行。觀察下面的指令,其中包括有先后順序的load/store指令:
;TEST4 LOAD R3,R1
SET R1,0X20 STORE R2,R3
SET R2,0X21 LOAD R3,R2
SET R4,0X22 STORE R4,R3
最后結(jié)果正確,在0X20/0X21/0X22的位置寫(xiě)入了相同的數(shù),都和原來(lái)0X20位置的數(shù)相同。用DebugController跟蹤指令運(yùn)行,可以看到地址總線(xiàn)上的數(shù)依次為:0x1,0x2,0x3,0x4,0x5,0x5,0x6,0x6,0x7,0x8,0x8,0x8,0x9,0x20,0xa,0x21,0x21,0xb,0x22。
下劃線(xiàn)的部分表示store/load指令執(zhí)行時(shí)占用了地址和數(shù)據(jù)總線(xiàn),可以看出其順序和程序中指令的順序相同。同時(shí)在存在內(nèi)存讀寫(xiě)操作需要占用總線(xiàn)時(shí),PC保持原來(lái)的數(shù)不變,保證了在總線(xiàn)歸還給指令讀寫(xiě)時(shí)能夠正確地按照既定順序執(zhí)行。在此基礎(chǔ)上又進(jìn)行了其他一些情況的測(cè)試,運(yùn)行結(jié)果均正確。
從以上的幾項(xiàng)檢測(cè)結(jié)果可以看出,處理器工作基本正確,另外由于算法的特色之一是亂序執(zhí)行,寫(xiě)回結(jié)果的順序和程序的順序不一致,而且一些運(yùn)算中間結(jié)果未必寫(xiě)回,當(dāng)幾條指令都要改變一個(gè)目的寄存器時(shí),可能只是最后一條指令執(zhí)行了寫(xiě)回寄存器的操作,因此調(diào)試過(guò)程的中間結(jié)果可能是不正確的,這給調(diào)試帶來(lái)了困難。
這一部分主要是針對(duì)算法的特點(diǎn),在以上功能正確完善的基礎(chǔ)上作一些性能上的評(píng)測(cè),和其他一些CPU的結(jié)構(gòu)作比較(比如一般的多周期CPU,五段流水線(xiàn)的CPU等),希望能夠根據(jù)一些量化的結(jié)果說(shuō)明這種體系結(jié)構(gòu)的優(yōu)缺點(diǎn),主要量化指標(biāo)是CPI以及流水線(xiàn)暫停的比率。
首先給出一些運(yùn)算、訪(fǎng)存等操作,不一定有特定的意義,只是為了測(cè)試設(shè)計(jì)的性能如何,給出量化的結(jié)果。將下面的測(cè)試程序循環(huán)100次,觀察總共用了多少個(gè)時(shí)鐘周期。
;TEST6 LOAD R4,R5
SET R5,0X200 STORE R5,R2
SET R6,0X300 LOAD R3,R5
SET R1,0X1F STORE R5,R1
SET R4,0XFF LOAD R2,R5
SET R2,0X3C STORE R6,R2
AND R1,R2 STORE R6,R3
OR R2,R1 STORE R6,R4
MVRR R3,R2 SET R5,0
SUB R3,R2 SET R4,0
AND R4,R3 SET R3,0
NOT R4 SET R2,0
STORE R5,R3 SET R1,0
1: BEQZ R0,1B
將上述程序循環(huán)執(zhí)行100次,指令數(shù)為3704,測(cè)試結(jié)果為:Stall_time=2502,Total_time=6206,CPI=6206/3704≈1.68。
暫停率即Stall的周期占總周期數(shù)目的百分比為2502/6206≈40.3%。這個(gè)數(shù)目在一定程度上反映了程序自身的相關(guān)度。從結(jié)果中看出,暫停率較大,原因?yàn)槌绦虮旧淼南嚓P(guān)性導(dǎo)致,還有就是內(nèi)存讀寫(xiě)數(shù)據(jù)和取指爭(zhēng)用數(shù)據(jù)總線(xiàn)。在流水段分為4級(jí)(要包括從內(nèi)存中取指的周期)且指令相關(guān)性較大的情況下CPI為1.68,相當(dāng)于一個(gè)半周期左右執(zhí)行一條指令,對(duì)于現(xiàn)在我們簡(jiǎn)化的Tomasulo算法來(lái)說(shuō),性能還是可以的。
所設(shè)計(jì)的處理器對(duì)于動(dòng)態(tài)調(diào)度,亂序執(zhí)行的方法處理指令和功能部件之間的相關(guān)性是很有優(yōu)勢(shì)的。下面是兩條向寄存器中置立即數(shù)的指令:
;TEST7
MLRD R2,3
MHRD R2,1 ;SET R2,0X103
MHRD R1,1
MLRD R1,1 ;SET R1,0X101
HALT
結(jié)果如下:stall_time=2,total_time=9,CPI=9/4=2.25。
流水線(xiàn)的暫停率為22.2%。
圖5是針對(duì)此程序的CPI數(shù)值以及暫停次數(shù)的比較,1是Tomasulo算法的處理器,2至4為以前設(shè)計(jì)的多周期無(wú)流水線(xiàn)、5級(jí)流水線(xiàn)無(wú)旁路,以及五級(jí)流水加旁路[15]的四種體系結(jié)構(gòu)的處理器。
圖5 四種體系結(jié)構(gòu)處理相關(guān)性的性能比較
這個(gè)測(cè)試程序很短,但也可以看出在相關(guān)性的處理問(wèn)題上,Tomasolu算法的性能至少和帶有旁路的5段流水線(xiàn)CPU等同,同時(shí)針對(duì)于這一個(gè)測(cè)試程序來(lái)說(shuō),其CPI也是最少的。
通過(guò)以上的測(cè)試可以看出:Tomasolu算法指令相關(guān)性的處理,指令并行性的利用,指令隊(duì)列預(yù)取策略等方面是很有優(yōu)勢(shì)的;這種結(jié)構(gòu)適于處理大量運(yùn)算,能夠挖掘出較高指令并行度的程序;同時(shí)根據(jù)實(shí)際情況,指令隊(duì)列以及保留站的具體數(shù)目要做合適的調(diào)整和選擇。不足和復(fù)雜的地方在于異常和中斷發(fā)生后的處理比順序執(zhí)行的指令麻煩;緩存占用很多,是以空間換時(shí)間的做法;同時(shí)由于判斷邏輯較復(fù)雜,不容易達(dá)到較高的時(shí)鐘頻率。
計(jì)算機(jī)組成與系統(tǒng)結(jié)構(gòu)的硬件實(shí)驗(yàn)是實(shí)驗(yàn)教學(xué)過(guò)程中的一個(gè)難點(diǎn),需要以一個(gè)處理器為基礎(chǔ),實(shí)驗(yàn)工作量比較大。本文探索了一個(gè)具體的實(shí)驗(yàn)樣例,實(shí)現(xiàn)了一個(gè)采用Tomasolu算法的四級(jí)流水線(xiàn)處理器,并對(duì)設(shè)計(jì)進(jìn)行了功能和性能測(cè)試,對(duì)以后的課程實(shí)驗(yàn)提供了很好的基礎(chǔ),實(shí)驗(yàn)教學(xué)應(yīng)用價(jià)值很高。
[1] 袁春風(fēng),陳貴海,黃宜華,等. “計(jì)算機(jī)組織與系統(tǒng)結(jié)構(gòu)”課程的教學(xué)現(xiàn)狀和改革思路[J]. 計(jì)算機(jī)教育,2009,16:153-156.
YUAN Chun-feng,CHEN Gui-hai,HUANG Yi-hua,etal. The Situation of Teaching and the Thinking for Reform on Computer Organization and Architecture Course[J]. Computer Education,2009,16:153-156.
[2] 張晨曦,李江峰,劉 依. 組成原理與系統(tǒng)結(jié)構(gòu)模擬實(shí)驗(yàn)系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)[J]. 計(jì)算機(jī)工程與科學(xué),2011,33(A1):1-4.
ZHANG Chen-xi,LI Jiang-feng,LIU Yi. Design and Implementation of a Simulator-Based Experiment System for Computer Organization and Architecture Course[J]. Computer Engineering&Science,2011,33(A1):1-4.
[3] 熊亮春,計(jì)算機(jī)體系結(jié)構(gòu)模擬器的設(shè)計(jì)與實(shí)現(xiàn)[D].上海: 同濟(jì)大學(xué),2008.
[4] 孫 振,肖 儂,賴(lài)明澈,等. 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)遠(yuǎn)程實(shí)驗(yàn)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 中國(guó)科技論文,2011(1):74-78.
SUN Zhen,XIAO Nong,LAI Ming-che,etc. Design and implementation of remote experiment system for computer architecture courses[J]. China Sciencepaper,2011(1):74-78.
[5] 何克東,王恒才. 高性能CPU設(shè)計(jì)實(shí)驗(yàn)平臺(tái)及其應(yīng)用[J]. 實(shí)驗(yàn)室研究與探索,2007(12):212-214.
HE Ke-dong,WANG Heng-cai. High-powered Experiment Platform for CPU Design and its Application[J]. Research and Exploration in Laboratory,2007(12):212-214.
[6] 湯志忠,楊春武. 開(kāi)放式實(shí)驗(yàn)CPU設(shè)計(jì)[M]. 北京:清華大學(xué)出版社,2007.
[7] 蔡啟先,王智文,何海釗. 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)課程流水線(xiàn)技術(shù)教學(xué)研究與實(shí)踐[J]. 黑龍江科技信息,2008(14):177-179.
CAI Qi-xian,WANG Zhi-wen,HE Hai-zhao. Research and Practice on Pipeline Teaching in Computer Architeture Course[J]. Heilongjiang Science and Technology Information,2008(14):177-179.
[8] John L.Hennessy, David A. Patterson. Computer Architecture: A Quantitative Approach [M]. 5版. 北京:機(jī)械工業(yè)出版社. 2012.
[9] 翟召岳. 基于32位超標(biāo)量處理器的保留站設(shè)計(jì)[J]. 大眾科技,2013,11:3-7.
ZHAI Shao-yue. Reservation station design based on 32 bits superscalar processors[J]. Popular Science&Technology,2013,11:3-7.
[10] 王 磊. Tomasulo算法與記分牌調(diào)度算法研究[J]. 自動(dòng)化技術(shù)與應(yīng)用,2013(6):23-26.
WANG Lei. The Tomasulo Algorithmand Scoreboard Scheduling Algorithm[J]. Techniques of Automation and Applications,2013(6):23-26.
[11] 于 洋,肖鐵軍,丁 偉. 面向教學(xué)的16位CISC微處理器的設(shè)計(jì)[J]. 計(jì)算機(jī)工程與設(shè)計(jì),2010(31):3584-3587.
YU Yang,XIAO Tie-jun,DING Wei. Design of 16 bit CISC microprocessor for teaching[J]. Computer Engineering and Design,2010(31):3584-3587.
[12] 劉 明,蔡啟先,余祖峰. 改進(jìn)MIPS 指令集模擬方法的研究[J]. 廣西工學(xué)院學(xué)報(bào),2009(12):54-57.
LIU Ming,CAI Qi-xian,YU Zu-feng. Research on Improved MIPS instruction set simulation[J]. Journal of Guangxi University of Technology,2009(12):54-57.
[13] 趙慶敏,邱 嵐,杜宏露,等. 超標(biāo)量技術(shù)及結(jié)構(gòu)研究與應(yīng)用[J]. 微計(jì)算機(jī)應(yīng)用,2007(2):208-210.
ZHAO Qing-min,QIU Lan,DU Hong-lu,etal. Research and Application on Superscalar Processor[J]. Microcomputer Applications,2007(2):208-210.
[14] 鄧正宏,康慕寧,羅 旻. 超標(biāo)量微處理器研究與應(yīng)用[J]. 微電子學(xué)與計(jì)算機(jī),2004(9):59-63.
DENG Zheng-hong,KANG Mu-ning,LUO Ming. Research and Application on Superscalar Microprocessors[J]. Microelectronics & Computer,2004(9):59-63.
[15] 秘海曉. 基于FPGA的32位五級(jí)流水線(xiàn)CPU的研究與設(shè)計(jì)[D]. 天津:河北工業(yè)大學(xué), 2012.