計算機體系結構作業(yè)答案(高性能)_第1頁
計算機體系結構作業(yè)答案(高性能)_第2頁
計算機體系結構作業(yè)答案(高性能)_第3頁
計算機體系結構作業(yè)答案(高性能)_第4頁
計算機體系結構作業(yè)答案(高性能)_第5頁
已閱讀5頁,還剩68頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 作業(yè)第一講:計算機系統(tǒng)基礎在三臺不同指令系統(tǒng)的計算機上運行同一程序P時,A機需要執(zhí)行1.0*10*條指令,B機需要執(zhí)行2.0*10$條指令,C機需要執(zhí)行巾.0*1(/條指令,但實際執(zhí)行時間都是10秒,請分別計算這三臺機器在實行程序P時的實際運行速度,以MIPS為單位。這三臺計算機在運行程序P時,哪臺性能最高?為什么?如果要給標量處理器増加向量運算部件,并且假定向量模式的運算速度是標屋模式的8倍,這里把向量模式所占的百分比時間稱作向量化百分比。a)畫出一張圖來表示加速比和向量化百分比的關系,X軸為向量化百分比,Y軸為加速比。b)向量化百分比為多少時,加速比能達到2?當加速比達到2時,向量模式占

2、了運算運行時間的百分之多少?向量化百分比為多少時,加速比能達到最大加速比的一半?c)假設程序的向量化百分比為70%o如果需要繼續(xù)提升處理器的性能,一種方法是增加硬件成本將向量部件的速度提高一倍,另外一種方法是通過改進編譯器來提高向量模式的應用范鬧,那么需要提升多少向屋化百分比才能得到與向量部件運算速度提高一倍得到相同的性能?你推薦哪一種設計方案?假設有一個代表典型應用的基準測試程序。一款不包含浮點部件的處理器(可以通過整數(shù)指令的模擬來執(zhí)行浮點指令)運行該基準程序的運行速度是120MIPS,在該處理器上增加浮點協(xié)處理器后運行該基準程序的運行速度是80MIPS。下面給出了一些參數(shù):I基準測試中整數(shù)

3、指令的數(shù)目,F(xiàn)基準測試中浮點指令的數(shù)目,Y模擬一條浮點指令需要的整數(shù)指令的數(shù)目,W無浮點協(xié)處理器時基準程序的運行時間,B有浮點協(xié)處理器時基準程序的運行時間。a)用上面的參數(shù)符號表示出兩種配置處理器的MIPS值。b)在沒有協(xié)處理器的配置下,假定F=8*10假設晶片成品率的經(jīng)驗公式如下:晶片成品率=(1+b*晶片面積/a)=其中a=4是衡量工藝復雜度的參數(shù)。a)假設每cm晶圓的成本為c,缺陷密度為b=0.6/ciA利用電子表格,計算當晶片面枳,Y二50,肛4秒,求I的值。c)在上題的條件下,求B的值。d)在包含協(xié)處理器的配置下,系統(tǒng)的MFL0PS是多少?e)你的同事想要購買這種協(xié)處理器來提高性能,

4、而該配置FMIPS降低了,請問他的決策正確嗎?解釋你的觀點。從0.5cm,變化到4cm時晶片的成本。然后,適用數(shù)學分析工具擬合出晶片成本和面積關系的多項式曲線,使其與電子表格中計算出來的數(shù)據(jù)相吻合。b)假設缺陷密度更高,b=2.0/cm2,求最接近的最低次數(shù)的多項式。對某處理器進行功耗測試,得到如下數(shù)據(jù):時鐘不翻轉,電壓1.2V時,電流為500mA;時鐘頻率為1GHz,電壓1.2V時,電流為2500mA。請計算此處理器的靜態(tài)功耗以及500MHz下的總功耗。證明以卞結論:a)N個正數(shù)的幾何平均小于算術平均;b)用歸一化的SPECCPU2000程序分值進行A、B兩臺機器的性能比較與所使用的參考機無

5、關;試討論馮諾伊曼結構的主要特點。a)查閱資料,分別給出一款Intel.AMD、IBM商業(yè)處理器的峰值性能和訪存帶寬。b)分析這3種處理器的訪存帶寬和存儲層次參數(shù)(一級cacheA小和延遲、二級cache人小和延遲等)之間的關系。在一臺個人計算機上(如Pentium-4、Core、Opteron的CPU)a)查閱相關資料,給出該機器的浮點運算峰值。 第二講:二進制與邏輯電路定點數(shù)的表示分別給出64位定點原碼和補碼表示的數(shù)的范I制。解:-2二26,-1在32位定點補碼表示中,0 x80000000表示什么數(shù)?解:-2110浮點數(shù)的表示把單精度數(shù)轉化為十進制數(shù):OxTffOOOO,OxbedOOO

6、OO,0 xff800000解:0 x7ff0000=0,00001111,11111110000000000000000=(1.1111111)2*2,1W27=3.8368135610839464260099560574934e-340 xbe400000=l,01111100,1000000000000000000=-(1.1)2*21025)=210 x8008000000000000二1,00000000000,1000000000000000000000000000000000000000000000000000=-(0.1)2*2-1022=-21023C)把十進制數(shù)轉化為單精度

7、數(shù):-100.0,0.25解:-100.o=-(l.100100)2*26=0bl1000010110010000000000000000000二0 xc2c800000.25=(1.0)*22=0b00111110100000000000000000000000二0 x3e800000;d)把十進制數(shù)轉化為雙精度數(shù):1024.0,0.25解:1024.0=(1.0)*2性0 x40900000000000000.25=(1.0)*2=Ox3fdOOOOOOOOOOOOO11畫出e二a*b+c*d的晶體管級電路圖。解:T計算一個F04的延遲,假設反向器的輸入電容為0.0036pf,平均每個負載

8、連線電容為0.0044pf,翻轉延遲為0.023ns,每pf延遲為4.5nso解:F04指的是某類型的電路單元驅動四個相同類型的電路單元。F04延遲二本征延遲+負載延遲二0023+4.5*(0.0036+0.0044)*4)=0.167ns分析CMOSEDFF觸發(fā)器的建立時間、保持時間、和CLKTQ的構成。對于下圖的電路,假設反相器的延遲為Ins,傳輸門從源到漏(或從漏到源)的延遲為0.5ns,傳輸門從柵到漏(或源)的延遲為0.75ns,不考慮由于latch的fight對反相器延遲的影響。請從概念上分析此電路的setup時間和hold時間為多少,給出分析過程。解:傳輸門的結構CifcCN許多數(shù)

9、字電路設計都是以庫單元為基本單位,這些庫單元將傳統(tǒng)的晶體管電路設計“封裝”起來,只提供數(shù)字電路設計者所關心的時序、面積、功耗等信息。正是這種“封裝S促進了數(shù)字電路EDA工具的發(fā)展,解放了電路設計人員的生產力,極人豐富電子芯片種類和數(shù)量。本題深入到庫單元內部的電路結構,討論數(shù)字電路設計者所看到的某觸發(fā)器建立時間、保持時間和CLKTQ時間等時序的形成原因。數(shù)字電路設計者看到的“封裝”后的觸發(fā)器如下圖所示XZCKDQ而題中所給圖是該觸發(fā)器內部電路結構圖,觸發(fā)器內部的兩個傳輸門控制端信號C和CN就是時鐘信號形成的,它控制電路相應部分的開啟和關閉。我們先觀察觸發(fā)器內部時鐘延遲:CNCK9C:經(jīng)過兩級反相

10、器,1+1=2nsCKTCN:經(jīng)過一級反相器和兩級傳輸門,傳輸門的輸入到輸出延遲就是傳輸門源到漏(或漏到源)的時間(參考傳輸門晶體管結構),1+0.5+0.5=2nsC-HXJ-CN2N1N3QN4觀察如上圖所示的觸發(fā)器結構圖,在C二1(CN二0)時,前級傳輸門打開,D端數(shù)據(jù)進入N1,打破N1和N2之間的反相器環(huán),強制將N1處狀態(tài)改成與D端相同,N2處狀態(tài)改為與D端相反,反相器壞維持新的狀態(tài),由于后級傳輸門關斷,N2處狀態(tài)無法傳播到N3處。當C二0(CN二1)時,前級傳輸門關閉,D端數(shù)據(jù)無法影響觸發(fā)器內部狀態(tài),而后級傳輸門打開,觸發(fā)器狀態(tài)則通過N3.N4和Q輸出,同時N3和N4間反相器環(huán)狀態(tài)也

11、被打破更改為與N2相符,當下一個C二1(CN二0)關閉后級傳輸門時,N3和N4間反相器環(huán)仍能保持狀態(tài)并驅動Q端。建立時間指的是在時鐘觸發(fā)沿(此題為下降沿)到來之前數(shù)據(jù)(D端)必須穩(wěn)定的時間。換句話說,此觸發(fā)器的建立時間就是在時鐘信號到達CK端之前,將觸發(fā)器內部N1及N2狀態(tài)改變并穩(wěn)定為與D端數(shù)據(jù)相符所需的時間。這樣,D端數(shù)據(jù)必須通過DTNOTNITN2才能真正改變觸發(fā)器內部狀態(tài),但即使如此,由于N1和N2間反相器壞驅動能力不能確定,為保守起見,還需要加上N2TN1時間。此外考慮到接II處CK端時鐘信號到C和CN的傳播時延,如果C和CN的傳播時延不一,可能導致傳輸門輸出弱1或弱0情況,仍從保守情

12、況出發(fā)取兩者的較小值,另外還要算上傳輸門控制端柵到漏(源)的延遲。這樣,該觸發(fā)器建立時間Tsetup=TD-N0-Nl-N2-Nl-(min(TCK-C,TCK-CN)+Ttran)=(l+0.5+1+1)-(min(2,2)+0.75)二0.75ns保持時間指的是在時鐘觸發(fā)沿到來之后數(shù)據(jù)必須保持不變的時間。換句話說,此觸發(fā)器的保持時間就是在時鐘信號到達CK端之后,D端需要等待多長時間,使得即使其數(shù)據(jù)變化也不影響觸發(fā)器內部狀態(tài)。反過來想,那什么情況下D端數(shù)據(jù)變化可能會影響內部狀態(tài)呢?只有當前級傳輸門在完全關斷之前,D端數(shù)據(jù)己經(jīng)進入到N1,進而才有可能對內部狀態(tài)產生影響。所以只需保證在前級傳輸門

13、關斷時變化的D端數(shù)據(jù)不進入N1即可。此外也要考慮到時鐘信號的傳播延遲,仍從保守情況出發(fā)取兩者較人值,加上傳輸門控制端柵到漏(源)的延遲。這樣,Thold=(max(TCK-C,TCK-CN)+Ttran)-TDNO-N1=(max(2,2)+0.75)-(1+0.5)二1.25nsCKTQ時間指的是時鐘觸發(fā)沿到來之后Q端輸出新的觸發(fā)器狀態(tài)所需的時間。只有當后級傳輸門打開后,Q端才有可能與觸發(fā)器內部狀態(tài)相符,也就是C=1TO(CN二0T1)時鐘下降沿時,這時候N2處的狀態(tài)需要通過N2TN3TN19Q,此時由于后級傳輸門出于打開狀態(tài),N3-N4處的反相器環(huán)一般不可能再破壞這個新狀態(tài)。此外仍出于保守

14、考慮時鐘信號的傳播延遲取較人值,并加上傳輸門控制端柵到漏(源)的延遲。這樣,該觸發(fā)器CKTQ時間TCK-Q二(max(TCKC,TCKCN)+Ttran)+TN2-N3-N4-Q=(max(2,2)+0.75)+(0.5+1+1)二5.25ns第三講指令系統(tǒng)結構給定卞面的代碼片段:A二B-C;D二A-C;B二D+A;分別寫出上述代碼片段在四種指令系統(tǒng)類型(堆棧型、累加器型、寄存器-存儲器型、寄存器-寄存器型)卞的匯編語言代碼。假設操作碼占用8位編碼,內存地址和操作數(shù)都是16位,寄存器型結構有16個通用寄存器。對每種結構回答以卞問題:1)需要讀取多少指令字節(jié)?2)與內存交換的數(shù)據(jù)有多少字節(jié)?3)

15、依據(jù)代碼量衡量哪種結構最好?4)依據(jù)與內存交換的數(shù)據(jù)(指令和數(shù)據(jù))量衡量哪種結構最好?解:stackaccR-MR-RPushBLoadCLoadRl,BLoadRl,BPushCNegSubRl,CLoadR2,CSubAddBStoreRl,ASubR3,R1,R2PopAStoreASubRl,CStoreR3,APushALoadCStoreRl,DSubR4,R3,R2PushCNegAddRl,AStoreR4,DSubAddAStoreRl,BAddR5,R4,R3PopDStoreDStoreR5,BPushDAddAPushAStoreBAddPopB1、30;18;2、24

16、;16;V;3、28;14;4、29;10;J;16進制數(shù)0 x4C4F4FlE17534F4E要存在64位雙字中。a)假設存儲是8字節(jié)對齊的,請依據(jù)小尾端的格式將此16進制數(shù)寫入內存中,并將每個字節(jié)解釋為一個ASCII字符寫在對應的字節(jié)下邊。解:AddressOxxxOOOOxxxOOlOxxxOlOOxxxOllOxxxlOOOxxxlOlOxxxllOOxxxlllOx4E4F53474E4F4F4Cb)按照人尾端的格式重做上題。解:AddressOxxxOOOOxxxOOlOxxxOlOOxxxOllOxxxlOOOxxxlOlOxxxllOOxxxlllOx4C4FIF4E47534

17、F4E根據(jù)MIPS指令的編碼格式回答下列問題:a)條件轉移指令的跳轉范I韋I。解:16+2位256KB(+T28KB)MIPSconsr(MIPS指令都是4字節(jié)對齊的,即尋址時都是4字節(jié)4字節(jié)尋址,所以尋址范I制為16+2,以下同)b)直接跳轉指令的跳轉范圍。解:26+2位256MB(+-128MB)opecons2MIPS17.用MIPS的LV/L/LWR/SWL/SWR指令編寫一段程序,把內存單元1005-1008的值取到Rb并存到內存單元2005-2008解:小尾端卞dlir2,1005lwrrl,0 x0(r2)lwlrl,0 x3(r2)dlir2,2005swrrl,0 x0(r2

18、)swlrl,0 x3(r2)18.用MIPS的LL/SC指令編寫一段從內存單元100(R2)取數(shù)、把取出來的數(shù)加100并存回到100(R2)的原子操作代碼,并說明如果在此過程中處理器發(fā)生終端或該單元被其它處理器修改時處理器如何保證上述操作的原子性。解:1:11rl,100(r2)addrl,r1,100scr1,100(r2)beqzr1,lbnop如果在11和sc之間(含11和sc),發(fā)生了中斷或者其他處理器修改100(r2),則sc之后譏會變0,回到標號1重新執(zhí)行。19.列出X86和MIPS的所有減法指令(包括不同字長、定點和浮點、不同尋址方式等)并比較它們的異同。解:X86的減法指令如

19、下:定點減法:SUBAL,imm8SUBAX,imml6SUBEAX,imm32SUBRAX,imm32SUBr/rn&imm8Subtractimm8fromALSubtractimml6fromAXSubtractimm32fromEAXSubtractsign-extendimm32fromRAXSubtractimm8from8bitregisteror8bitmemorylocation # # SUBr/ml6,imml6locationSUBr/m32,imm32locationSUBr/m64,imm32memorylocationSUBr/ml6Jmm8memorylocat

20、ionSUBr/m32Jmm8memorylocationSUBr/m64Jmm8memorylocationSUBr/m8,r8locationSUBr/ml6,rl6locationSUBr/m32,r32locationSubtractimm32from32bitregisteror32bitmemorySubtractsign-extendimm32from64bitregisteror64bitSubtractsign-extendimm8from16bitregisteror16bitSubtractsign-extendimm8from32bitregisteror32bitSu

21、btractsign-extendimm8from64bitregisteror64bitSubtractSubtractSubtract8bitregisterfrom16bitregisterfrom32bitregisterfrom8bitregisteror8bitmemory16bitregisteror16bitmemory32bitregisteror32bitmemorySubtractimml6from16bitregisteror16bitmemory #SUBr/m64,r32memorylocationSUBr&r/m8registerSUBrl6,r/ml6regis

22、terSUBr32,r/m32registerSUBr64,r/m64registerSubtractsign-extend32b讓registerfrom64b讓registeror64bitSubtract8bitregisteror8bitmemorylocationfrom8bitSubtract16bitregisteror16bitmemorylocationfrom16bitSubtract32bitregisteror32bitmemorylocationfrom32bitSubtract64bitregisteror64bitmemorylocationfrom64bitFl

23、ag影響:OF,SF,ZF,AF,PF,CF彼影響Protected模式下例外:#GP(0)Ifthedestinationislocatedinanon-writablesegmentIfamemoryoperandeffectiveaddressisoutsidetheCSDSESFSorCSsegmentlimitIftheDSESFSorGSregistercontainsaNULLsegmentselector#SS(O)IfamemoryoperandeffectiveaddressisoutsidetheSSsegmentlimit#PF(fault-code)Ifapagefa

24、ultoccurs#AC(0)Ifalignmentcheckingisenabledandanunalignedmemoryrefereneeismadewhilethecurrentprivilegelevelis3Real-address模式下例外#GPIfamemoryoperandeffectiveaddressisoutsidetheCSFSESFSorCSsegmentlimit#SSIfamemoryoperandeffectiveaddressisoutsidetheSSsegmentlimitVirtual-8086模式下例夕卜#CP(0)Ifamemoryoperande

25、ffectiveaddressisoutsidetheCSFSESFSorCSsegmentlimit#SS(O)IfamemoryoperandeffectiveaddressisoutsidetheSSsegmentlimit#PF(fault-code)Ifapagefaultoccurs#AC(0)IfalignmentcheckingisenabledandanunalignedmemoryrefereneeismadeCompatibility模式下例外同Protected模式64bit模式例外#SS(O)IfamemoryaddressreferencingtheSSsegmen

26、tisinanon-canonicalform#CP(0)ifthememoryaddressisinanon-canonicalform#PF(fault-code)Ifapagefaultoccurs#AC(0)Ifalignmentcheckingisenabledandanunalignedmemoryrefereneeismadewhilethecurrentprivilegelevelis3X86浮點減法指令如下:FSUBm32fpFSUBm64fpFSUBST(0),ST(i)FSUBST(i),ST(0)FSUBPST(i),ST(0)Subtractm32fpfromST(0

27、)andstoreresultinST(0)Subtractm64fpfromST(0)andstoreresultinST(0)SubtractST(i)fromST(0)andstoreresultinST(0)SubtractST(0)fromST(i)andstoreresultinST(i)SubtractST(0)fromST(i)andstoreresultinST(i),andpopregisterstackFSUBPSubtractST(0)fromST(1)andstoreresultinST,andpopregisterstackFISUBm32intFISUBml6in

28、tSubtractm32intfromST(0)andstoreresultinST(0)Subtractml6intfromST(0)andstoreresultinST(0)FSUBRm32fpFSUBRm64fpFSUBRST(0),ST(i)FSUBRST(i),ST(0)FSUBRPST(i),ST(0)SubtractST(0)fromm32fpandstoreresultinST(0)SubtractST(0)fromm64fpandstoreresultinST(0)SubtractST(0)fromST(i)andstoreresultinST(0)SubtractST(i)

29、fromST(0)andstoreresultinST(i)SubtractST(i)fromST(0)andstoreresultinST(i),andpopregisterstackFSUBRPSubtractST(1)fromST(0)andstoreresultinST,andpopregisterstackFISUBRm32intFISUBRml6intSubtractST(0)fromm32intandstoreresultinST(0)SubtractST(0)fromml6intandstoreresultinST(0)/FISUB和FISUBR將定點轉化為X86的擴展雙精度浮

30、點格式(80bit)FPUFlags影響:Clsetto0ifstackunderflowoccurredSetifresultwasroundedup;clearedotherwiseCO,C2,C3undefined浮點例外:#ISstackunderflowoccurred#IAOperandisanSNaNvalueorunsupportedformatOperandsareinfinitiesoflikesign#DSourceoperandisadenormalvalue#UResultistoosmallfordestinationformat#0Resultistoolarge

31、fordestinationformat#PValuecannotberepresentedexactlyindestinationformatProtected模式下例外:CP(O)IfamemoryoperandeffectiveaddressisoutsidetheCSDSESFSorGSsegmentlimitIftheDSESFSorCSregistercontainsaNULLsegmentselector#SS(O)IfamemoryoperandeffectiveaddressisoutsidetheSSsegmentlimit#NMCR0.EMbit2orCR0.TSbit3

32、=1#PF(fault-code)Ifapagefaultoccurs#AC(O)Ifalignmentcheckingisenabledandanunalignedmemoryrefereneeismadewhilethecurrentprivilegelevelis3Real-address模式下例外#CPIfamemoryoperandeffectiveaddressisoutsidetheCSFSESFSorCSsegmentlimit#SSIfamemoryoperandeffectiveaddressisoutsidetheSSsegmentlimit#NMCR0.EMbit2or

33、CR0.TSbit3=1Virtual-8086模式下例外CP(O)IfamemoryoperandeffectiveaddressisoutsidetheCSFSESFSorCSsegmentlimit#SS(O)IfamemoryoperandeffectiveaddressisoutsidetheSSsegmentlimit#PF(fault-code)Ifapagefaultoccurs#AC(O)Ifalignmentcheckingisenabledandanunalignedmemoryreferenceismade#NMCR0.EMbit2orCR0.TSbit3=1Compa

34、tibility模式下例外同Protected模式64bit模式例外#SS(O)IfamemoryaddressreferencingtheSSsegmentisinanon-canonicalform#CP(O)ifthememoryaddressisinanon-canonicalform#NMCR0.EMbit2orCR0.TSbit3=1#MFIfthereisapendingx87FPUexception#PF(fault-code)Ifapagefaultoccurs#AC(O)Ifalignmentcheckingisenabledandanunalignedmemoryrefe

35、reneeismadewhilethecurrentprivilegelevelis3MIPS的減法如下:定點減法:DSUBrd,rs,rt64bit減法例外:IntegerOverflow,ReservedInstructionDSUBUrd,rs,rt64bit無符號減法例外:ReservedInstructionSUBrd,rs,rt32bit減法containofthe限制:On64-bitprocessors,ifeitherCPRrtorGPRrsdoesnotsign-extended32-bitvalues(bits63.31equal),thentheresultoperat

36、ionisUNPREDICTABLE例外:IntegerOverflowSUBUrd,rs,rt32bit無符號減法限制:On64-bitprocessors,ifeitherCPRrtorGPRrsdoesnotcontainsign-extended32-bitvalues(bits63.31equal),thentheresultoftheoperationisUNPREDICTABLE例外:MIPS浮點減法(SUB.fmt)如下:SUB.Sfd,fs,ftSUB.Dfd,fs,ftSUB.PSfd,fs,ft限制:單精度雙精度并行單精度(將fs和ft的上卞兩部分分別相減)Thefiel

37、dfs,ft,fdmustspecifyFPRsvalidforoperandsoftypefmt.Iftheyarenotvalid,theresultisUNPREDICTABLETheoperandsmustbevaluesinformatfmt,iftheyarenot,theresultisUNPREDICTABLEandthevalueoftheoperandFPRsbecomesUNPREDICTABLETheresultofSUB.PSisUNPREDICTABLEiftheprocessorisexecutingjn16FPregistersmode.例外:Coprocess

38、orUnusable,ReservedInstruction浮點例外:Inexact,Overflow,Underflow,InvalidOp,UnimplementedOpX86和MIPS減法指令比較:字長:X86的定點減法指令支持8位、16位、32位、64位字長;而MIPS定點減法支持32位和64位字長。浮點:X86的浮點減法指令均為80位擴展雙精度格式;而MIPS浮點減法支持單精度、雙精度和并行單精度格式。尋址方式:MIPS的減法只支持寄存器尋址。X86的定點減法支持寄存器尋址、立即數(shù)和內存尋址方式(直接尋址、變址尋址、間接尋址、基址尋址、基址加變址尋址):X86的浮點減法支持寄存器尋址

39、(浮點寄存器棧)和內存尋址方式(直接尋址、變址尋址、間接尋址、基址尋址、基址加變址尋址)。其他區(qū)別:X86的定點減法會修改Flags,浮點減法會修改FPUflags,而MIPS的減法沒有Flags。X86的減法和MIPS減法產生的例外由于體系結構的不同而有很大不同:X86的減法會產生General-Protection例外、Stack-SegmentFault例外;除了在real-address模式卞之外,還會產生PageFault例外、AlignmentCheck例夕卜;所有的浮點減法還會產生DeviceNotAvailable(NoMathCoprocessor)例夕卜;在64bit模式下

40、進行浮點減法還會產生x87FPUFloatingPointError(MathFault)例外。MIPS的DSUB、DSUBU和所有的浮點減法會觸發(fā)保留指令例外,DSUB和SUB會觸發(fā)溢出例外,浮點減法會觸發(fā)協(xié)處理器不可用例外和一些浮點例外(Inexact,Overflow,Underflow,InvalidOp,UnimplementedOp)給出以卞常見處理器中至少三種的load-use延遲:PentiumIII,PentiumIV,MIPSR10000,Alpha21264,HPPA8000,UltraSparcIII,ItaniumII,PowerIV,AMDK8.解:Pentium:

41、2cyclePentium4:2cycle(fix)/6cycle(float)Alpha21264:3cycleItaniumII:OcycleMIPSR10000:2cycleHPPA8000:2cycleUltraSparcIII:2cycleGodson2/Godson3:3cycle(fix)/4cycle(float)第四講靜態(tài)流水線假定某RISC處理器為標準的五級流水線(IF/ID/EX/MEM/WB)結構,并且包含旁路碩件。對于下列指令序列:LWRl,0(R0)LWR2,4(RO)ADDR3,Rl,R2;a=b+eSWR3,12(RO)LWR4,8(RO)ADDR5,Rl,R4

42、;c=b+fSWR5,16(RO)分析上述指令序列之間的相關,并重排序執(zhí)行序列避免相關。重排序指令序列可以比原先指令序列的執(zhí)行減少多少拍?對于下面的計算:A二A+BC二A-B寫出MIPS程序代碼,并且畫出5級靜態(tài)流水線(無旁路)上的流水線狀態(tài)。對于向量加法X(i)二a*X(i)+Y(i),假設X,Y的首地址分別存在Rl,R2,a的值存在F0中。試寫出對應的MIPS匯編代碼。假設單發(fā)射流水線結構為IF/ID/EX/MEM/WB,功能部件足夠,Load、Store操作和整數(shù)操作都花費1個時鐘周期,加法操作為4個周期,乘法操作為10個周期。給出第一個循環(huán)所有指令的流水線時空圖。假定某RISC處理器為

43、標準的五級流水線(IF/ID/EX/MEM/WB)結構,該靜態(tài)流水線處理器可配置包含碩件旁路電路、延遲槽、分支預測等技術,并假定所有的運算和訪存操作均為一拍完成。下面的代碼在該處理器中執(zhí)行。LDRl,0(R2);從地址0+R2處讀入R1DADDIRl,Rl,#4;Rl=Rl+4SD0(R2),R1;將R1存入地址0+R2處DADDIR2,R2,#4;R2=R2+4DSUBR4,R3,R2;R4二R3-R2BNEZR4,Loop;R4不等于0時跳轉到Loop己知R3的初值為R2+400。a)不使用旁路硬件,但在同一個周期內寄存器的讀和寫能進行旁路,分支預測采用nottaken策略,如果猜測錯誤則

44、刷新(flushing)流水線上的錯誤指令,畫出這個指令序列在RISC流水線上執(zhí)行的時序,并計算執(zhí)行這個循壞需要多少個時鐘周期。b)使用旁路硬件,采用taken策略進行分支預測,如果猜測錯誤則刷新(flushing)流水線上的錯誤指令,畫出這個指令序列在RISC上執(zhí)行的序列,并計算執(zhí)行這個循環(huán)需要多少個時鐘周期。c)假設RISC流水線帶有單拍的分支延遲和前遞或旁路硬件,對包括延遲槽在內的指令序列進行調度,可以重排指令序列,并修改某些指令的操作數(shù),但不能改變指令的數(shù)目和采用別的指令,畫出該流水線的時序圖,并計算整個循環(huán)需要的時鐘周期數(shù)。許多指令集中都會有一條空操作指令(例如MIPS指令集中的no

45、p指令),請給出設計空指令的幾個作用。26下面是靜態(tài)流水線章節(jié)中講述的5級流水處理器的部分Verilog代碼。a)(碩士)請完善其中的ALU模塊。b)(博士)請完善該CPU的代碼并并編寫一個定點乘法程序在該CPU模擬環(huán)境上正確執(zhí)行。注意,不用考慮Forwarding,ALU部件可以直接用+號,每一級流水都要有有效位,0號通用寄存器的值恒為0。0001rdrslrs20000010rdrslrs20000011rdrslrs20000100rdrslrs20000101rdrslrs20000110rdrslrs20000111rdrslrs20001000rdrslrs20001001rdrs

46、liiran1010rdbaseoffset1011rdbaseoffset1100000rsloffsetADDSUBANDORNOTSLSRSRUADDILDSTBZ1514131211109876543210 # 1100001rsloffset1100010rsloffsetBGTBLEtim已scaleIns/lOpsmodulesystem;wireclock,reset;cpucpuO0(.clock(clock),reset(:reset);initialclock=l,bO;always#20clock二clock;initialbegin#0reset=rbl;#70res

47、et=lb0:endendmodulemodulecpu(clock,reset);inputclock;inputreset;wire17:0brbus;wire15:0inst;wire2:0ex_dest,mem_dest,wb_dest;wire19:0wbbus;wire55:0idbus;wire39:0exbus;wire39:0membus;fetch_modulefetch(clock(clock),reset(reset),brbus(brbus),inst(inst);decode_moduledecode(clock(clock),reset(reset),inst(i

48、nst),ex_dest(ex_dest),mem_dest(mem_dest),wb_dest(wb_dist),wbbus(wbbus),brbus(brbus),idbus(idbus);alu_modulealu(.clock(clock),reset(reset),idbus(idbus),exbus(exbus),ex_dest(ex_dest);mem_modulemem(clock(clock),reset(reset),exbus(exbus),membus(membus),mem_dest(mem_dest);wbmodulewb(clock(clock),reset(re

49、set),membus(membus),wbbus(wbbus),wb_dest(wb_dst);endmoduletim已scaleIns/lOpsmodulefetch_module(clock,reset,brbus,inst); inputclock;inputreset;input17:0brbus:output15:0inst;reg15:0pc;wirebrbus_valid;wirebrbus_taken;wire15:0brbus_offset;assignbrbus_va1id=brbus17;assignbrbus_taken=brbus16;assignbrbus_of

50、fset二brbus15:0;/-Enteryourstatementshere/endmoduletim已scaleIns/lOpsmoduledecode_module(clock,reset,inst,exudest,mem_dest,wb_dest,wbbus,brbus,idbus);inputclock;inputreset;input15:0inst;input2:0exudest,m己nudest,wb_dest;input19:0wbbus:output55:0idbus;output17:0brbus;reg15:0ir;wirewbbus_valid;wire2:0wbb

51、us_dest;wire15:0wbbus_value;wireidbus_valid;wire3:0idbus_op;wire2:0idbus_dest;wire15:0idbus_valuel;wire15:0idbus_value2;wire15:0idbus_stvalue;wirebrbus_valid;wirebrbus_taken;wire15:0brbus_offset;assignwbbus_va1id二wbbus19;assignwbbus_dest=wbbus18:16;assignwbbus_valu已二wbbus15:0;/-Enteryourstatementshe

52、re/assignbrbus17=brbus_valid;assignbrbus16=brbus_takEn;assignbrbus15:0=brbus_offset;assignidbus55=idbus_valid;assignidbus54:51=idbus_op;assignidbus50:48=idbus_.dest;assignidbus47:32=idbus_value1;assignidbus31:16=idbus_value2;assignidbus15:0=idbus_stvalue;endmoduletim已scaleIns/lOpsmodulealu_module(cl

53、ock,reset,idbus,exbus,ex_dest);inputclock;inputreset;input55:0idbus:output39:0exbus;output2:0ex_dest;wireidbus_valid;wire3:0idbus_op;wire2:0idbus_dest;wire15:0idbus_valuel;wire15:0idbus_value2;wire15:0idbus_stvalue;wireexbus_valid;wire3:0exbus_op;wire2:0exbus_dest;wire15:0exbus_exresuIt;wire15:0exbu

54、s_stvalue;assignidbus_valid=idbus55;assignidbus_op=idbus54:51;assignidbus_dest二idbus50:48;assignidbus_value1=idbus47:32;assignidbus_value2=idbus31:16;assignidbus_stvalue=idbus15:0;/-Enteryourstatementshere/assignexbus39=exbus_valid;assignexbus38:35=exbus_op;assignexbus34:32=exbus_dest;assignexbus31:

55、16=exbus_exresuIt;assignexbus15:0=exbus_stvalue;endmoduletim已scaleIns/lOpsmodulemem_module(clock,reset,exbus,membus,mem_dest);inputclock;inputreset;input39:0exbus:output39:0membus:output2:0mem_dest;wireexbus_valid;wire3:0exbus_op;wire2:0exbus_dest;wire15:0exbus_exresuIt;wire15:0exbus_stvalue;wiremem

56、bus_valid;wire3:0membus_op:wire2:0membus_dest;wire15:0membus_exresuIt;wire15:0membus_meniresuIt;assignexbus_valid=exbus39;assignexbus_op=exbus38:35;assignexbus_dest二exbus34:32;assignexbus_exresuIt二exbus31:16;assignexbus_stvalue=exbus15:0;/-Enteryourstatementshere/assignmembus39=membus_valid;assignme

57、mbus38:35=membus_op;assignmembus34:32=membus_dest;assignmembus31:16=membus_exresuIt;assignmembus15:0membusmeinresuIt;endmoduletim已scaleIns/lOpsmodulewbmodule(clock,reset,membus,wbbus,wb_dest);inputclock;inputreset;input39:0m己mbus;output19:0wbbus;output2:0wb_dest;wiremembus_valid;wire3:0membus_op:wir

58、e2:0membus_dest;wire15:0membus_exresuIt;wire15:0membus_meniresuIt;wirewbbus_valid;wire2:0wbbus_dst;wire15:0wbbus_value;assignmembus_v81id二membus39;assignmembuspmembus38:35;assignmembus_dest二m己mbus34:32;assignmembus_exresuIt=membus31:16;assignmembusmemresuIt二membus15:0;/-Enteryourstatementshere/assig

59、nwbbus19=wbbus_valid;assignwbbus18:16=wbbus_dest;assignwbbus15:0二wbbus_value;endmodule tim已scaleIns/lOpsmodulerom(raddr,rout);input11:0raddr;output15:0tout;reg15:0rom4095:0;integeri;initialbegin$readmembCrom.vlog,?,rom);$display(/znLoadromsuccessfully!nn);endassignrout=romraddr;endmoduletim已scaleIns

60、/lOpsmoduleram(clock,raddr,tout,wen,waddr,win);inputclock;inputwen;input15:0win;input11:0raddr;input11:0waddr;output15:0tout;reg15:0ram4095:0;assignrout=ramEraddr;always(posedgeclock)beginif(v/en)beginramwaddr=win;endendendmoduletim已scaleIns/lOpsmoduleregfile(clock,raddr1,routl,raddr2,rout2,wen,wadd

溫馨提示

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

最新文檔

評論

0/150

提交評論