版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
指令系統(tǒng)-內(nèi)容提要指令集結(jié)構(gòu)概述指令集結(jié)構(gòu)的分類 尋址技術(shù)設(shè)計(jì)
指令集結(jié)構(gòu)的功能設(shè)計(jì) 操作數(shù)的類型、表示和大小指令集格式的設(shè)計(jì)DLX指令集MIPS指令集
操作數(shù)尋址方式寄存器尋址 AddR4,R3立即數(shù)尋址 AddR4,#3直接尋址 AddR1,(1001)寄存器間接尋址 AddR4,(R1)偏移尋址 AddR4,100(R1)索引尋址 AddR3,(R1+R2)存儲(chǔ)器間接尋址 AddR1,@(R3)自增尋址 AddR1,(R2)+自減尋址 AddR1,-(R2)縮放尋址 AddR1,100(R2)[R3]復(fù)習(xí)DLX指令集結(jié)構(gòu):指令格式LWR1,30(R2)DLX指令集結(jié)構(gòu):指令格式ADDR1,R2,R3DLX指令集結(jié)構(gòu):指令格式JnameDLX指令集結(jié)構(gòu):操作類型Regs[R10]16..3116(Mem[Regs[R8]]0)8##Mem[Regs[R8]]0000000000000000000000000000011110000101R81000010111111111111111111000010100000000000000001111111110000101R10DLX指令集結(jié)構(gòu):訪存指令指令實(shí)例指令名稱含義LWR1,30(R2)載入整型字Regs[R1]←32Mem[30+Regs[R2]]LWR1,1000(R0)載入整型字Regs[R1]←32Mem[1000+0]LBR1,40(R3)載入字節(jié)Regs[R1]←32(Mem[40+Regs[R3]]0)24##Mem[40+Regs[R3]]LBUR1,40(R3)載入無符號(hào)字節(jié)Regs[R1]←32024##Mem[40+Regs[R3]]LHR1,40(R3)載入整型半字Regs[R1]←32(Mem[40+Regs[R3]]0)16##Mem[40+Regs[R3]]##Mem[41+Regs[R3]]LFF0,50(R3)載入單精度浮點(diǎn)Regs[F0]←32Mem[50+Regs[R3]]LDF0,50(R2)載入雙精度浮點(diǎn)Regs[F0]##Regs[F1]←64Mem[50+Regs[R2]]SW500(R4),R3儲(chǔ)存整型字Mem[500+Regs[R4]]←32Regs[R3]SF40(R3),F0儲(chǔ)存單精度浮點(diǎn)Mem[40+Regs[R3]]←32Regs[F0]SD40(R3),F0儲(chǔ)存雙精度浮點(diǎn)Mem[40+Regs[R3]]←32Regs[F0]Mem[44+Regs[R3]]←32Regs[F1]SH502(R2),R31儲(chǔ)存整型半字Mem[502+Regs[R2]]←16Regs[R31]16..31SB41(R3),R2儲(chǔ)存整型字節(jié)Mem[41+Regs[R3]]←8Regs[R2]24..31DLX指令集結(jié)構(gòu):算數(shù)邏輯指令指令實(shí)例指令名稱含義AddR1,R2,R3加Regs[R1]←Regs[R2]+Regs[R3]ADDIR1,R2,#3和立即數(shù)相加Regs[R1]←Regs[R2]+3LHIR1,#42載入高位立即數(shù)Regs[R1]←42##016SLLIR1,R2,#5邏輯左移立即數(shù)形式Regs[R1]←Regs[R2]<<5SLTR1,R2,R3設(shè)置小于if(Regs[R2]<Regs[R3])Regs[R1]←1elseRegs[R1]←0DLX指令集結(jié)構(gòu):控制指令指令實(shí)例指令名稱含義Jname跳轉(zhuǎn)PC←name+PC+4;-225≤name≤225JALname跳轉(zhuǎn)并鏈接Regs[R31]←PC+4;PC←name+PC+4;-225≤name≤225JRR3寄存器型跳轉(zhuǎn)PC←Regs[R3];JALRR2寄存器型跳轉(zhuǎn)并鏈接Regs[R31]←PC+4;PC←Regs[R2];BEQZR4,name“等于0”分支if(Regs[R4]==0)PC←name+PC+4;-215≤name≤215BNEZR4,name“不等于0”分支if(Regs[R4]!=0)PC←name+PC+4;-215≤name≤215練習(xí)-寫出下面函數(shù)的匯編代碼cswap(intv[],intk,intl) k->$5{ l->$6
inttemp; v[0]->$4
if(v[k]!=v[l]) { temp=v[k];
v[k]=v[l];
v[l]=temp; }}1.計(jì)算地址V[K],V[L]的地址2.獲得V[K]和V[L]3.比較V[K]和V[L]4.交換V[K]和V[L]5.備用指令add$1,$2,$3sub$1,$2,$3LW$1,30($2)SW$3,500($4)multi$2,$5,4JRXXXbeq$s4,$s5,Lab1
k->$5l->$6v[0]->$4cswap(intv[],intk,intl) {
inttemp;
if(v[k]!=v[l]) { temp=v[k];
v[k]=v[l];
v[l]=temp; }}mult
$2,$5,4mult
$3,$6,4add$7,$2,$4add$8,$3,$4LW$9,($7)LW$10,($8)BEQ$9,$10,LabelSW$9,($8)SW$10,($7)Label:JR$31multR2,R5,4multR3,R6,4addR7,R2,R4addR8,R3,R4LWR9,(R7)LWR10,(R8)SubR11,R9,R10BEQZR11,LabelSW(R8),R9SW (R7),R10Label:JRR31MIPSDLX程序編譯的過程
GCCEmbeddedSystemLabFall2012程序編譯的過程很多人認(rèn)為GCC只是一個(gè)C編譯器,
其實(shí)GCC=GNUCompilerCollection目前,GCC可以支持多種高級(jí)語言,如C、C++ADAObjectCJAVAFortranPASCALGCC下的工具cpp—預(yù)處理器
GNUC編譯器在編譯前自動(dòng)使用cpp對用戶程序進(jìn)行預(yù)處理gcc—符合ISO等標(biāo)準(zhǔn)的C編譯器g++—基本符合ISO標(biāo)準(zhǔn)的C++編譯器gcj—GCC的java前端gnat—GCC的GNUADA95前端GNUTools—gccgcc是一個(gè)強(qiáng)大的工具集合,它包含了預(yù)處理器、編譯器、匯編器、鏈接器等組件。它會(huì)在需要的時(shí)候調(diào)用其他組件。
輸入文件的類型和傳遞給gcc的參數(shù)決定了gcc調(diào)用具體的哪些組件。對于開發(fā)者,它提供的足夠多的參數(shù),可以讓開發(fā)者全面控制代碼的生成,這對嵌入式系統(tǒng)級(jí)的軟件開發(fā)非常重要
gcc--helpLinuxgcc使用舉例(1)源程序gcc使用舉例(2)編譯和運(yùn)行編譯運(yùn)行g(shù)cc的編譯過程一般情況下,c程序的編譯過程為1、預(yù)處理2、編譯成匯編代碼3、匯編成目標(biāo)代碼4、鏈接1、預(yù)處理預(yù)處理:使用-E參數(shù)
輸出文件的后綴為“.cpp”
gcc–E–ogcctest.cpp
gcctest.c使用wc命令比較預(yù)處理后的文件與源文件,可以看到兩個(gè)文件的差異行數(shù)單詞數(shù)字節(jié)數(shù)預(yù)處理預(yù)處理文件匯編代碼
1)使用-x參數(shù)說明根據(jù)指定的步驟進(jìn)行工作,cpp-output指明從預(yù)處理得到的文件開始編譯
2)使用-S說明生成匯編代碼后停止工作gcc-xcpp-output-S-ogcctest.s
gcctest.cpp也可以直接編譯到匯編代碼
gcc-Sgcctest.c2、編譯成匯編代碼預(yù)處理文件匯編代碼3、編譯成目標(biāo)代碼匯編代碼目標(biāo)代碼
gcc–xassembler–cgcctest.s直接編譯成目標(biāo)代碼
gcc–cgcctest.c使用匯編器生成目標(biāo)代碼as–ogcctest.o
gcctest.s匯編代碼目標(biāo)代碼直接編譯成目標(biāo)代碼使用匯編器testsse.oUltraEditObjdump4、編譯成執(zhí)行代碼目標(biāo)代碼執(zhí)行代碼
gcc–ogcctest
gcctest.o直接生成執(zhí)行代碼
gcc–ogcctest
gcctest.c目標(biāo)代碼執(zhí)行代碼直接生成執(zhí)行代碼testsse.oV.S.testssegcc的高級(jí)選項(xiàng)-Wall:打開所有的警告信息根據(jù)警告信息檢查源程序Main函數(shù)的返回值為int在函數(shù)的末尾應(yīng)當(dāng)返回一個(gè)值修改源程序優(yōu)化編譯優(yōu)化編譯選項(xiàng)有:-O0
缺省情況,不優(yōu)化-O1-O2-O3等等不同程度的優(yōu)化gcc的優(yōu)化編譯舉例(1)
考慮如下的源代碼不同的優(yōu)化編譯選項(xiàng)gcc的優(yōu)化編譯舉例(2)
使用time命令統(tǒng)計(jì)程序的運(yùn)行GNUtoolsGNUtools和其他一些優(yōu)秀的開源軟件可以完全覆蓋上述類型的軟件開發(fā)工具。為了更好的開發(fā)嵌入式系統(tǒng),需要熟悉如下一些軟件GCCBinutils—輔助GCC的主要軟件Gdbmakecvs二、GNUbinutilsbinutils是一組二進(jìn)制工具程序集,是輔助GCC的主要軟件,它主要包括addr2line
把程序地址轉(zhuǎn)換為文件名和行號(hào)。在命令行中給它一個(gè)地址和一個(gè)可執(zhí)行文件名,它就會(huì)使用這個(gè)可執(zhí)行文件的調(diào)試信息指出在給出的地址上是哪個(gè)文件以及行號(hào)。ar
建立、修改、提取歸檔文件。歸檔文件是包含多個(gè)文件內(nèi)容的一個(gè)大文件,其結(jié)構(gòu)保證了可以恢復(fù)原始文件內(nèi)容。as
是GNU匯編器,主要用來編譯GNUC編譯器gcc輸出的匯編文件,他將匯編代碼轉(zhuǎn)換成二進(jìn)制代碼,并存放到一個(gè)object文件中,該目標(biāo)文件將由連接器ld連接C++filt解碼C++符號(hào)名,連接器使用它來過濾C++和Java符號(hào),防止重載函數(shù)沖突。gprof
顯示程序調(diào)用段的各種數(shù)據(jù)。ld
是連接器,它把一些目標(biāo)和歸檔文件結(jié)合在一起,重定位數(shù)據(jù),并鏈接符號(hào)引用,最終形成一個(gè)可執(zhí)行文件。通常,建立一個(gè)新編譯程序的最后一步就是調(diào)用ld。nm
列出目標(biāo)文件中的符號(hào)。objcopy把一種目標(biāo)文件中的內(nèi)容復(fù)制到另一種類型的目標(biāo)文件中.objdump
顯示一個(gè)或者更多目標(biāo)文件的信息。使用選項(xiàng)來控制其顯示的信息。它所顯示的信息通常只有編寫編譯工具的人才感興趣。ranlib
產(chǎn)生歸檔文件索引,并將其保存到這個(gè)歸檔文件中。在索引中列出了歸檔文件各成員所定義的可重分配目標(biāo)文件。readelf
顯示elf格式可執(zhí)行文件的信息。size
列出目標(biāo)文件每一段的大小以及總體的大小。默認(rèn)情況下,對于每個(gè)目標(biāo)文件或者一個(gè)歸檔文件中的每個(gè)模塊只產(chǎn)生一行輸出。strings
打印某個(gè)文件的可打印字符串,這些字符串最少4個(gè)字符長,也可以使用選項(xiàng)-n設(shè)置字符串的最小長度。默認(rèn)情況下,它只打印目標(biāo)文件初始化和可加載段中的可打印字符;對于其它類型的文件它打印整個(gè)文件的可打印字符,這個(gè)程序?qū)τ诹私夥俏谋疚募膬?nèi)容很有幫助。strip
丟棄目標(biāo)文件中的全部或者特定符號(hào)。
libiberty
包含許多GNU程序都會(huì)用到的函數(shù),這些程序有:getopt,obstack,strerror,strtol
和strtoul.libbfd
二進(jìn)制文件描述庫.libopcodes
用來處理opcodes的庫,在生成一些應(yīng)用程序的時(shí)候也會(huì)用到它,比如objdump.Opcodes是文本格式可讀的處理器操作指令.三、其他GNU工具Gdb—調(diào)試器GNUmake--軟件工程工具diff,patch--補(bǔ)丁工具CVS--版本控制系統(tǒng)參考《Linux操作系統(tǒng)分析》課程中的GNUToolsCh3流水線技術(shù)EmbeddedSystemLabFall20123.1流水線基本概念3.2DLX基本流水線3.3流水線中的相關(guān)3.4實(shí)例分析:MIPSR4000本章內(nèi)容流水線基本概念流水線分類DLX的一種簡單實(shí)現(xiàn)第一節(jié)3.1.1流水線基本概念1.產(chǎn)品生產(chǎn)流水線(1)一個(gè)問題
假設(shè)某產(chǎn)品的生產(chǎn)需要4道工序,該產(chǎn)品生產(chǎn)車間以前只有1個(gè)工人,1套生產(chǎn)該產(chǎn)品的機(jī)器。該工人工作8小時(shí),可以生產(chǎn)120件(即每4分鐘生產(chǎn)1件)。 要將該產(chǎn)品日產(chǎn)量提高到480件,如何能實(shí)現(xiàn)目標(biāo)?
(2)兩種解決方案
方案一:增加3名工人、3套設(shè)備。 方案二:產(chǎn)品生產(chǎn)采用流水線方式,分為4道工序;增加3名工人,每人負(fù)責(zé)一道工序。(3)兩種方案的工作過程對比
兩種方案中,單件產(chǎn)品的生產(chǎn)時(shí)間均不變。 但在穩(wěn)定情況下, 方案一:每4分鐘,4件產(chǎn)品同時(shí)進(jìn)入流水線,4件成品同時(shí)離開流水線,需要增加3套設(shè)備。 方案二:每分鐘,1件產(chǎn)品進(jìn)入流水線,1件成品離開流水線,不需要增加任何設(shè)備。(4)方案二的主要特點(diǎn) 每件產(chǎn)品還是要經(jīng)過4道工序處理,單件產(chǎn)品的加工時(shí)間并沒有改變,但它將不同產(chǎn)品的不同步驟重疊在一起,使得每件產(chǎn)品的產(chǎn)出時(shí)間從表面上看是從原來的4分鐘縮減到1分鐘,提高了產(chǎn)品的產(chǎn)出率。2.洗衣店流水線——洗衣店XA,B,C,D
towash,dry,andfold;Washertakes30minutesDryertakes30minutesFoldertakes30minutesABCD(1)串行工作的洗衣店洗衣店用6小時(shí)完成了4個(gè)任務(wù)(洗衣店吞吐率0.67t/h);4個(gè)同學(xué)各等待了1.5小時(shí);Washer使用2小時(shí)(0.33);Dryer使用2小時(shí)(0.33);Folder使用2小時(shí)(0.33);ABCD3030303030303030303030306PM7891011Midnight任務(wù)順序(2)流水工作的洗衣店X洗衣店用3小時(shí)完成了4個(gè)任務(wù)(1.33t/h);4個(gè)同學(xué)各等待了1.5小時(shí);Washer使用2小時(shí)(0.66);Dryer使用2小時(shí)(0.66);Folder使用2小時(shí)(0.66);ABCD6PM78910Midnight任務(wù)順序3030303030302.洗衣店流水線——洗衣店YA,B,C,D
towash,dry,andfold;Washertakes30minutesDryertakes40minutesFoldertakes20minutesABCD(3)串行工作的洗衣店Y洗衣店用6小時(shí)完成了4個(gè)任務(wù)(0.67t/h);4個(gè)同學(xué)各等待了1.5小時(shí);Washer使用2小時(shí)(0.33);Dryer使用2小時(shí)40分(0.44);Folder使用1小時(shí)20分(0.22);ABCD3040203040203040203040206PM7891011Midnight任務(wù)順序(4)流水工作的洗衣店Y洗衣店用3.5小時(shí)完成了4個(gè)任務(wù)(1.14t/h);4個(gè)同學(xué)各等待了1.5小時(shí);Washer使用2小時(shí)(0.57);Dryer使用2小時(shí)40分(0.76);Folder使用1小時(shí)20分(0.38);ABCD6PM7891011Midnight任務(wù)順序304040404020流水線不能縮短單個(gè)任務(wù)的響應(yīng)時(shí)間,但可以提高吞吐率;流水線速度限制于最慢流水站的速度;流水線中多個(gè)任務(wù)是并行處理的;最大加速比=流水站數(shù)流水站速度不匹配流水線“填充”和“排空”時(shí)間304040404020(5)洗衣店的結(jié)論20世紀(jì)最大的發(fā)明之一流水線流水線之前,汽車工業(yè)完全是手工作坊型的.每裝配一輛汽車要728個(gè)人工小時(shí),當(dāng)時(shí)汽車的年產(chǎn)量大約12輛.這一速度遠(yuǎn)不能滿足巨大的消費(fèi)市場的需求.所以使得汽車成為富人的象征. 1913年,福特提出在汽車組裝中的流水線,汽車底盤在傳送帶上前行.前行中,逐步裝上發(fā)動(dòng)機(jī),操控系統(tǒng),車廂,方向盤,儀表,車燈,車窗玻璃、車輪,一輛完整的車組裝成了.第一條流水線使每輛T型汽車的組裝時(shí)間由原來的12小時(shí)28分鐘縮短至10秒鐘,生產(chǎn)效率提高了4488倍!科學(xué)的管理科學(xué)管理之父弗雷德里克·溫斯洛·泰勒搬運(yùn)生鐵塊試驗(yàn)&鐵鍬試驗(yàn)?3.計(jì)算機(jī)中的流水線指令流水線功能部件流水線(浮點(diǎn))Godson3~9Pentium4~31 ARM7~3 MIPS/ARM9/PowerPC405~54.流水技術(shù)
將一重復(fù)的時(shí)序過程分解為若干子過程,每個(gè)子過程都可有效地在其專用功能段上與其它子過程同時(shí)執(zhí)行,這種技術(shù)稱為流水技術(shù)。5.時(shí)-空圖
從時(shí)間和空間兩個(gè)方面描述流水線的工作過程,橫坐標(biāo)表示時(shí)間,縱坐標(biāo)表示各流水段。6.流水線的特點(diǎn)
流水過程由多個(gè)相關(guān)的子過程組成,這些子過程稱為流水線的“級(jí)”或“段”。段的數(shù)目稱為流水線的“深度”。 每個(gè)子過程由專用的功能段實(shí)現(xiàn),各功能段的時(shí)間應(yīng)基本相等,通常為1個(gè)時(shí)鐘周期(1拍)。 流水線需要經(jīng)過一定的填充時(shí)間才能穩(wěn)定。 流水技術(shù)適合于大量重復(fù)的時(shí)序過程。1.單功能流水線和多功能流水線按流水線所完成的功能分類單功能流水線,是指只能完成一種固定功能的流水線。
多功能流水線,是指各段可以進(jìn)行不同的連接,從而完成不同的功能。 例如:TIASC的多功能流水線3.1.2流水線的分類2.靜態(tài)流水線和動(dòng)態(tài)流水線按同一時(shí)間內(nèi)流水段的連接方式劃分靜態(tài)流水線,是指在同一時(shí)間內(nèi),流水線的各段只能按同一種功能的連接方式工作。 動(dòng)態(tài)流水線,是指在同一時(shí)間內(nèi),當(dāng)某些段正在實(shí)現(xiàn)某種運(yùn)算時(shí),另一些段卻在實(shí)現(xiàn)另一種運(yùn)算。
動(dòng)態(tài)流水線
動(dòng)態(tài)流水線一定是多功能流水線3.部件級(jí)、處理機(jī)級(jí)及處理機(jī)間流水線
按流水的級(jí)別劃分部件級(jí)流水線,又叫運(yùn)算操作流水線,是把處理機(jī)的算術(shù)邏輯部件分段,使得各種數(shù)據(jù)類型的操作能夠進(jìn)行流水。處理機(jī)級(jí)流水線,又叫指令流水線,是把解釋指令的過程按照流水方式處理。處理機(jī)間流水線,又叫宏流水線,是由兩個(gè)以上的處理機(jī)串行地對同一數(shù)據(jù)流進(jìn)行處理,每個(gè)處理機(jī)完成一項(xiàng)任務(wù)。
4.標(biāo)量流水處理機(jī)和向量流水處理機(jī)按照數(shù)據(jù)表示來進(jìn)行分類標(biāo)量流水處理機(jī),是指處理機(jī)不具有向量數(shù)據(jù)表示,僅對標(biāo)量數(shù)據(jù)進(jìn)行流水處理。 例如IBM360/91,Amdahl470V/6等
向量流水處理機(jī),是指處理機(jī)具有向量數(shù)據(jù)表示,并通過向量指令對向量的各元素進(jìn)行處理。 例如TIASC、CRAY-1等5.線性流水線和非線性流水線按照是否有反饋回路來進(jìn)行分類線性流水線是指流水線的各段串行連接,沒有反饋回路。非線性流水線是指流水線中除有串行連接的通路外,還有反饋回路。 存在流水線調(diào)度問題。6.順序流動(dòng)流水線和亂序流動(dòng)流水線按照輸出端任務(wù)流出順序與輸入端任務(wù)流入順序是否相同劃分亂序流動(dòng)流水線也可稱為無序流水線、錯(cuò)序流水線復(fù)習(xí)程序的編譯->執(zhí)行過程1、預(yù)處理2、編譯成匯編代碼3、匯編成目標(biāo)代碼4、鏈接深入理解計(jì)算機(jī)系統(tǒng)-第一章計(jì)算機(jī)系統(tǒng)漫游Makefile依賴關(guān)系一個(gè)“復(fù)雜”的例子Makefile定義多個(gè)文件在GCC參數(shù)較多(靈活)時(shí)、文件較多時(shí)極為有效源代碼優(yōu)化不同的優(yōu)化編譯選項(xiàng)自動(dòng)優(yōu)化策略考慮如下源代碼iajia如何計(jì)算哪個(gè)更好?一層循環(huán)時(shí),共100W條指令50Waddl+25Wcmp+25WJLE二層循環(huán)時(shí)內(nèi)層循環(huán)共100W條指令50Waddl+25Wcmp+25WJLE外層循環(huán)共2500條指令addl+cmp+JLE+movl+JMP與指令CPI有關(guān)復(fù)習(xí)程序的編譯->執(zhí)行過程1、預(yù)處理2、編譯成匯編代碼3、匯編成目標(biāo)代碼4、鏈接深入理解計(jì)算機(jī)系統(tǒng)-第一章計(jì)算機(jī)系統(tǒng)漫游Makefile定義多個(gè)文件復(fù)習(xí)DLX指令集結(jié)構(gòu):指令格式LWR1,30(R2)DLX指令集結(jié)構(gòu):指令格式ADDR1,R2,R3DLX指令集結(jié)構(gòu):指令格式JnameDLX的數(shù)據(jù)通路這是一種非流水方式將指令執(zhí)行劃分為5個(gè)階段取指令周期指令譯碼/讀寄存器周期執(zhí)行/有效地址計(jì)算周期存儲(chǔ)器訪問/分支完成周期寫回周期3.2.1DLX的一種簡單實(shí)現(xiàn)1.取指令周期(IR)
操作為: 根據(jù)PC值從存儲(chǔ)器中取出指令,并將指令送入指令寄存器IR;PC值增加4,指向順序的下一條指令,并將下一條指令的地址放入臨時(shí)寄存器NPC中。
IR←Mem[PC] NPC←PC+4圖示2.指令譯碼/讀寄存器周期(ID)
操作為: 進(jìn)行指令譯碼,讀IR寄存器(指令寄存器),按照相應(yīng)寄存器號(hào)讀寄存器文件,并將讀出結(jié)果放入兩個(gè)臨時(shí)寄存器A和B中。同時(shí)對IR寄存器中內(nèi)容的低16位進(jìn)行符號(hào)擴(kuò)展,然后將符號(hào)擴(kuò)展之后的32位立即值保存在臨時(shí)寄存器Imm中。
A←Regs[IR6..10] B←Regs[IR11..15] Imm←((IR16)16##IR16..31) DLX的固定字段譯碼技術(shù):圖示3.執(zhí)行/有效地址計(jì)算周期(EX)
存儲(chǔ)器訪問:
LWR1,100(R2)
ALUoutput←A+Imm
SW100(R2),R1
寄存器-寄存器ALU:
ADDR1,R2,R3
ALUoutput←AopB
寄存器-立即值A(chǔ)LU:
ADDIR1,R2,#3
ALUoutput←AopImm
分支操作: BEQZR1,#800
ALUoutput←NPC+Imm
Cond←(Aop0)4.訪存/分支操作完成周期(MEM)
操作為:訪存操作:Load: LMD←LMDMEM[ALUoutput]Store: Mem[ALUoutput]←B分支操作: if(Cond)
PC←ALUoutput else PC←NPC5.寫回周期(WB)
操作為:寄存器-寄存器型ALU指令: Reg[IR16..20]←ALUoutput寄存器-立即值型ALU指令: Reg[IR11..15]←ALUoutputLoad指令:
Reg[IR11..15]←LMD 6.性能分析在該數(shù)據(jù)通路上,分支指令需要4個(gè)時(shí)鐘周期,其它指令需要5個(gè)時(shí)鐘周期,假設(shè)分支指令占總指令數(shù)的12%,問CPI=?CPI=4×12%+5×(1-12%)=4.88結(jié)論:就性能和硬件開銷而言,上述實(shí)現(xiàn)不是一種 優(yōu)化實(shí)現(xiàn)!7.改進(jìn)方法在Mem周期完成ALU指令 假設(shè)ALU指令數(shù)占指令總數(shù)的44%,則在時(shí)鐘周期時(shí)間不變的同時(shí),CPI可以降低至4.4如要進(jìn)一步降低CPI,可能會(huì)增加時(shí)鐘周期時(shí)間 采用單周期實(shí)現(xiàn),可以將CPI降低為1,但時(shí)鐘周期時(shí)間卻會(huì)增加為原來的5倍流水技術(shù)第二節(jié)基本DLX流水線和性能分析基本DLX流水線的操作基于DLX的性能分析1.一種簡單的DLX流水線
將DLX中的數(shù)據(jù)通路流水化,使得數(shù)據(jù)通路中的每一個(gè)周期就成為流水線的一段每個(gè)時(shí)鐘周期啟動(dòng)一條指令
——得到了一條簡單的DLX流水線。
簡單DLX流水線的流水過程:時(shí)-空圖按時(shí)間錯(cuò)開的數(shù)據(jù)通路3.2.2基本的DLX流水線3.實(shí)現(xiàn)流水技術(shù)應(yīng)解決的一些問題 (1)應(yīng)保證流水線各段不會(huì)在同一時(shí)鐘周期內(nèi)使用相同的寄存器通路資源。例如,不能要求一個(gè)ALU既做有效地址計(jì)算,又做減法操作IF與Mem兩個(gè)階段都要訪問存儲(chǔ)器,怎樣避免訪存沖突?ID和WB兩個(gè)階段都要訪問寄存器,是否存在沖突?怎樣避免?
(2)PC計(jì)算問題 為了能夠在每個(gè)時(shí)鐘周期啟動(dòng)一條新的指令,流水線必須在IF段獲得下一條指令的地址,并將其保存在PC中。 但是,分支指令會(huì)改變PC的值,而且只有在Mem段結(jié)束時(shí),這個(gè)新值才會(huì)被寫入PC,出現(xiàn)矛盾。
解決方法:
改變數(shù)據(jù)通路,在IF段完成PC計(jì)算,則需要分支指令計(jì)算地址操作已經(jīng)完成
(3)合理劃分流水段,每段內(nèi)的操作都必須在一個(gè)時(shí)鐘周期內(nèi)完成。 (4)流水線寄存器設(shè)計(jì)為防止寄存器中的值在為流水線中某條指令所用時(shí)被流水線中其它的指令所重寫,可在流水線各段之間設(shè)置流水線寄存器文件,也稱鎖存器。流水線寄存器文件的命名段A與B之間的流水線寄存器文件稱為A/B流水線寄存器的作用流水線寄存器文件的構(gòu)成3.DLX流水線的操作 在任一時(shí)刻,流水中的指令僅在流水線中的某一段內(nèi)執(zhí)行操作。
DLX流水線中每一段的操作4.DLX流水線中多路選擇器的控制
主要是確定如何控制四個(gè)多路選擇器:IF段的MUX由EX/MEM.Cond域的值控制EX段ALU輸入端的兩個(gè)MUX由ID/EX.IR所指出的指令類型控制WB段的MUX由當(dāng)前指令類型(Load/ALU)MEM/WB.IR控制
三項(xiàng)性能指標(biāo):吞吐率、加速比和效率1.吞吐率 是衡量流水線速度的重要指標(biāo)吞吐率是指單位時(shí)間內(nèi)流水線所完成的任務(wù)數(shù)或輸出結(jié)果的數(shù)量。最大吞吐率TPmax是指流水線在達(dá)到穩(wěn)定狀態(tài)后所得到的吞吐率。設(shè)流水線由m段組成,完成n個(gè)任務(wù)的吞吐率稱為實(shí)際吞吐率,記作TP。3.2.2流水線性能分析(1)最大吞吐率假設(shè)流水線各段的時(shí)間相等,均為△t0,則:TPmax=1/△t0假設(shè)流水線各段時(shí)間不等,第i段時(shí)間為△ti
,則:TPmax=1/max{△ti}最大吞吐率取決于流水線中最慢一段所需的時(shí)間,該段成為流水線的瓶頸消除瓶頸的方法細(xì)分瓶頸段重復(fù)設(shè)置瓶頸段 (時(shí)空圖)(2)實(shí)際吞吐率若各段時(shí)間相等(假設(shè)均為△t0),則完成時(shí)間T流水
=m△t0+(n-1)△t0
(說明)時(shí)空圖TP=───=──────────T流水nm·△t0+(n-1)△t0n(1+)△t0
=────────=─────m-11TPmaxn1+nm-1實(shí)際吞吐率若各段時(shí)間不等(假設(shè)第i段為△ti),則完成時(shí)間
時(shí)空圖T=∑△ti+(n-1)△tj
這里,△tj=max{△ti
}i=1mTP=──────────∑△ti+(n-1)△tjmi=1n實(shí)際吞吐率2.加速比加速比是指流水線速度與等功能的非流水線速度之比。根據(jù)定義可知,加速比S=T非流水/T流水若流水線為m段,每段時(shí)間均為△t0,則T非流水
=nm△t0,T流水
=m△t0
+(n-1)△t0 S=
──────
=───────mnm+n-1mn1+
m-13.效率效率指流水線的設(shè)備利用率。由于流水線有通過時(shí)間和排空時(shí)間,所以流水線的各段并非一直滿負(fù)荷工作,E<1若各段時(shí)間相等,則各段效率也相等 即e1=e2=e3=…=n△t0/T流水(解釋)整個(gè)流水線效率E
=───=──────=─────n△t0T流水nm+n-11n1+
m-1當(dāng)n>>m時(shí),E≈13.效率從時(shí)-空圖上看,效率就是n個(gè)任務(wù)所占的時(shí)空區(qū)與m個(gè)段總的時(shí)空區(qū)之比E=(Σei)/m=Σ(Tei/T流水)/m=ΣTei/(T流水×m)根據(jù)這個(gè)定義,可以計(jì)算流水線各段時(shí)間不等時(shí)的流水線效率
n個(gè)任務(wù)占用的時(shí)空區(qū)
E=━━━━━━━━━━━
m個(gè)段總的時(shí)空區(qū)4.吞吐率、加速比和效率的關(guān)系
TP=n/T流水 S=T非流水/T流水最大加速比mE=n△t0/T流水=mn△t0/(T流水m)=S/m
效率是實(shí)際加速比S與最大加速比m之比。E=n△t0/T流水=(n/T流水)·△t0=TP△t0
當(dāng)△t0不變時(shí),流水線的效率與吞吐率呈正比。為提高效率而采取的措施,也有助于提高吞吐率。例
在靜態(tài)流水線上計(jì)算,問吞吐率、加速比、效率各是多少?(m=4)解: (1)確定適合流水處理的計(jì)算過程
(2)畫時(shí)-空圖
(3)性能計(jì)算 吞吐率TP=7/20·△t0
加速比S=34·△t0/20·△t0=1.7
效率E=(4×4+3×6)/(8×20)=0.215.流水線性能分析實(shí)例
上述方案性能不高!靜態(tài)多功能流水線在對某種功能進(jìn)行處理時(shí),總有某些段處于空閑狀態(tài)功能切換增加了前一種功能的排空時(shí)間和后一種功能的通過時(shí)間需要把輸出回傳到輸入(相關(guān)) 能否通過動(dòng)態(tài)流水線改進(jìn)其性能?舉例I舉例II 這樣行不行?
正確方案例3.3在DLX的非流水實(shí)現(xiàn)和基本流水線中,5個(gè)功能單元的執(zhí)行時(shí)間:10/8/10/10/7ns。流水線額外開銷為1ns,求相對于非流水指令實(shí)現(xiàn)而言,基本DLX流水線的最大加速比是多少?解: T非流水
=10+8+10+10+7=45ns T流水
=10+1=11ns
加速比S=45/11≈4.16.有關(guān)流水線性能的若干問題流水線并不能減少(而且一般是增加)單條指令的執(zhí)行時(shí)間,但能夠提高吞吐率增加流水線的深度可以提高流水線性能指令之間存在的相關(guān),限制了流水線的性能1.什么是相關(guān)?流水線中的相關(guān)是指相鄰或相近的兩條指令因存在某種關(guān)聯(lián),后一條指令不能在既定的時(shí)鐘周期開始執(zhí)行。消除相關(guān)的基本方法——暫停暫停流水線中某條指令及其后面所有指令的執(zhí)行,該指令之前的所有指令繼續(xù)執(zhí)行。3.3流水線中的相關(guān)2.三種不同類型的相關(guān)結(jié)構(gòu)相關(guān):當(dāng)指令在重疊執(zhí)行過程中,硬件資源滿足不了指令重疊執(zhí)行的要求,發(fā)生資源沖突時(shí)將產(chǎn)生“結(jié)構(gòu)相關(guān)”。數(shù)據(jù)相關(guān):因一條指令需要用到前面指令的結(jié)果,而無法與產(chǎn)生結(jié)果的指令重疊執(zhí)行時(shí),就發(fā)生了數(shù)據(jù)相關(guān)??刂葡嚓P(guān):當(dāng)流水線遇到分支指令和其它會(huì)改變PC值的指令時(shí)就發(fā)生控制相關(guān)。導(dǎo)致結(jié)構(gòu)相關(guān)的常見原因:功能部件沒有充分流水重復(fù)設(shè)置的資源數(shù)量不足實(shí)例:當(dāng)數(shù)據(jù)和指令存在同一存儲(chǔ)器中時(shí),訪存指令會(huì)引起存儲(chǔ)器訪問沖突。解決方法:I.插入暫停周期(時(shí)空圖)II.將指令存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器分離3.3.1結(jié)構(gòu)相關(guān)1.數(shù)據(jù)相關(guān)簡介
實(shí)例: ADD R1,R2,R3 SUB R4,R1,R5 AND R6,R1,R7 OR R8,R1,R9 XOR R10,R1,R11
產(chǎn)生原因:當(dāng)指令在流水線中重疊執(zhí)行時(shí),流水線有可能改變指令讀/寫操作數(shù)的順序,使之不同于它們在非流水實(shí)現(xiàn)時(shí)的順序,這將導(dǎo)致數(shù)據(jù)相關(guān)。3.3.2數(shù)據(jù)相關(guān)2.數(shù)據(jù)相關(guān)的分類
兩條指令i和j,都會(huì)訪問同一寄存器R,假設(shè)i先進(jìn)入流水線,則它們對R有四種不同的訪問順序:
(1)寫后讀(RAW)——i寫j讀如果j在i完成寫之前從R中讀出數(shù)據(jù),將得到錯(cuò)誤的結(jié)果!最常見的數(shù)據(jù)相關(guān),嚴(yán)重制約了CPU的性能,是程序最重要的特征之一!2.數(shù)據(jù)相關(guān)的分類
(2)寫后寫(WAW)——i寫j寫如果j在i之前完成寫操作,R中將保存錯(cuò)誤的結(jié)果!
DLX流水線不會(huì)出現(xiàn)這種相關(guān)!當(dāng)流水線中有多個(gè)段可以寫回,而且當(dāng)流水線暫停某條指令的執(zhí)行時(shí),其后的指令可以繼續(xù)前進(jìn)時(shí),可能引起這種類型的相關(guān)。
舉例2.數(shù)據(jù)相關(guān)的分類
(3)讀后寫(WAR)——i讀j寫如果j先將數(shù)據(jù)寫入R,i將讀出錯(cuò)誤的結(jié)果!
DLX流水線不會(huì)出現(xiàn)這種類型的相關(guān)!當(dāng)有些指令在流水段后半部分讀源操作數(shù),另一些指令在流水線前半部分寫結(jié)果,可能引起這種類型的相關(guān)。
(4)讀后讀(RAR)——i讀j讀不引起數(shù)據(jù)相關(guān)!小結(jié)兩條指令i和j3.通過定向技術(shù)減少數(shù)據(jù)相關(guān)帶來的暫停
定向(forwarding),也稱為旁路/直通(bypassing)
工作過程 主要思路:將計(jì)算結(jié)果從其產(chǎn)生的地方直接送到真正需要它的地方,就可以避免暫停。寄存器文件EX/MEM中的ALU運(yùn)算結(jié)果總是回送到ALU的輸入寄存器寄存器文件MEM/WB中的ALU運(yùn)算結(jié)果總是回送到ALU的輸入寄存器從定向通路得到輸入數(shù)據(jù)的ALU操作不必從源寄存器中讀取操作數(shù)4.需要暫停的數(shù)據(jù)相關(guān)并非所有數(shù)據(jù)相關(guān)都可以通過定向技術(shù)解決。例: LW R1,0(R2)SUB R4,R1,R5AND R6,R1,R7OR R8,R1,R9增加流水線“流水線互鎖”部件,當(dāng)互鎖硬件發(fā)現(xiàn)這種相關(guān)后,暫停流水線,直到相關(guān)消除。這種情況下,暫停的時(shí)鐘周期數(shù)稱為“載入延遲”。
例1
5.DLX流水線中數(shù)據(jù)相關(guān)的檢測檢測數(shù)據(jù)相關(guān)ID段可以檢測所有數(shù)據(jù)相關(guān)在使用一個(gè)操作數(shù)的時(shí)鐘周期的開始(EX和MEM段的開始)檢測相關(guān),并確定必需的定向流水線相關(guān)硬件可以檢測到的各種相關(guān)情況(盡早檢測相關(guān)、指導(dǎo)決策)例:Load互鎖的檢測與實(shí)現(xiàn)在ID段檢測是否需要啟動(dòng)Load互鎖,必須進(jìn)行三種比較對DLX流水線控制的實(shí)現(xiàn)5.對DLX流水線控制的實(shí)現(xiàn)定向邏輯的實(shí)現(xiàn)所有的定向都是從ALU/DM的輸出到ALU、DM或0檢測單元的輸入 (圖示)形成了一個(gè)旁路網(wǎng)絡(luò)6.對數(shù)據(jù)相關(guān)的編譯調(diào)度方法流水線中常常會(huì)遇到多種類型的暫停 例如,計(jì)算表達(dá)式A=B+C時(shí)會(huì)出現(xiàn)暫停編譯器可以通過重新排列代碼的順序來消除這種暫停,這種技術(shù)就是“流水線調(diào)度”或“指令調(diào)度”例請為下列表達(dá)式生成沒有暫停的DLX指令序列
a=b–c;
d=e–f;
假設(shè)載入延遲為1個(gè)時(shí)鐘周期。題解1.分支指令的實(shí)現(xiàn)一旦分支轉(zhuǎn)移成功,正確的地址要在Mem段的末尾才會(huì)被寫入PC一旦ID段檢測到分支指令,就暫停執(zhí)行其后的指令,直到分支指令達(dá)到Mem段,確定新的PC為止分支轉(zhuǎn)移成功將導(dǎo)致DLX流水線暫停3個(gè)周期3.3.3控制相關(guān)2.減少分支開銷的途徑兩個(gè)基本途徑:在流水線中盡早判斷分支轉(zhuǎn)移是否成功轉(zhuǎn)移成功時(shí),盡早計(jì)算出轉(zhuǎn)移目標(biāo)地址經(jīng)改進(jìn),DLX流水線可以將分支開銷減少1拍將“=0?”測試提前到ID段在ID段增加一個(gè)加法器,計(jì)算分支目標(biāo)地址表列出了改進(jìn)后流水線的分支操作再改進(jìn),DLX流水線可以將分支開銷再減少1拍將分支判斷結(jié)果和目標(biāo)地址提前到ID/EX站前3.程序中分支指令的行為特點(diǎn)
各種能改變PC值的指令的執(zhí)行頻度條件分支:整數(shù)程序:14-15%浮點(diǎn)程序:3-12%
其中,向前分支與向后分支的比:3:1無條件分支:≤4%(絕大多數(shù))4.減少流水線分支損失的方法(1)凍結(jié)或排空流水線思路:在流水線中停住或刪除分支后的指令,直到知道轉(zhuǎn)移目標(biāo)地址優(yōu)點(diǎn):簡單(2)預(yù)測分支轉(zhuǎn)移失敗思路:流水線繼續(xù)照常流動(dòng),如果分支轉(zhuǎn)移成功,將分支指令后的指令轉(zhuǎn)換為空操作,并從分支目標(biāo)處開始取指令執(zhí)行;否則照常執(zhí)行DLX流水線的處理過程4.減少流水線分支損失的方法(3)預(yù)測分支轉(zhuǎn)移成功思路:始終假設(shè)分支成功,直接從分支目標(biāo)處取指令執(zhí)行對DLX流水線沒有任何好處!(4)延遲分支(delayedbranch)思路:分支開銷為n的分支指令后緊跟有n個(gè)延遲槽,流水線遇到分支指令時(shí),按正常方式處理,順帶執(zhí)行延遲槽中的指令,從而減少分支開銷。
延遲分支及指令的執(zhí)行順序4.減少流水線分支損失的方法具有一個(gè)分支延遲槽的DLX流水線的執(zhí)行過程什么樣的指令能否放入分支延遲槽?三種調(diào)度方法:從前調(diào)度;從目標(biāo)處調(diào)度;從失敗處調(diào)度三種方法的要求與效果,存在限制因素編譯器預(yù)測分支是否成功的能力放入延遲槽中的指令5.各種分支處理方法的性能(1)假設(shè)理想CPI=1,則加速比S=D/(1+C)=D/(1+f×p分支)
這里,D為流水線的深度,p分支為分支開銷,C為分支引起的流水線暫停時(shí)鐘周期數(shù)(每條指令的平均值),f為分支的出現(xiàn)頻度。(2)表3.7列出了流水線中各種處理方法的開銷公司的領(lǐng)導(dǎo)者腳踩兩只船,既無后顧之憂,便打算放手一搏。……整個(gè)公司都像沒頭蒼蠅一樣到處亂撞。先是倒賣電子表、旱冰鞋,還有運(yùn)動(dòng)褲衩和電冰箱,然后又籌劃著倒賣彩色電視機(jī)。那時(shí)候彩色電視機(jī)是緊俏商品,人人想要。國家規(guī)定了出廠價(jià)格,可是你若拿到市場上去,就是給每臺(tái)加上1000元,也能轉(zhuǎn)瞬賣出。所以,當(dāng)他們知道江西省婦聯(lián)的一個(gè)女人手里有大批彩電的時(shí)候,都相信賺錢的機(jī)會(huì)終于到來。20世紀(jì)80年代中期商業(yè)的信譽(yù)已經(jīng)出了問題,有個(gè)挺流行的說法就是“騙子比彩電還多”,柳傳志知道這是夸張之辭,但多留一個(gè)心眼總是沒錯(cuò),于是囑咐屬下一定要親眼看到電視才能匯款。那一天手下人興致勃勃地告訴他,說自己親眼見到大批彩電,一點(diǎn)不假。卻不料他們還是遇到了騙子:彩電的確有,只等他們的錢匯過去,立即無影無蹤。--凌志軍《聯(lián)想風(fēng)云》
1985年12月,也即公司成立一年之后,他還一一歷數(shù)公司一年來的業(yè)績 —KT8920大型計(jì)算機(jī)。本由計(jì)算所單獨(dú)承擔(dān),計(jì)算所將其中存儲(chǔ)器、擴(kuò)存、應(yīng)用軟件的部分轉(zhuǎn)交公司,又以公司名義對外簽訂25個(gè)合同,獲得利潤60萬元。
—中國科學(xué)院購買500臺(tái)IBM的計(jì)算機(jī),把其中驗(yàn)收、維修和培訓(xùn)的環(huán)節(jié)交給公司,公司得以收取服務(wù)費(fèi)70萬元。
—為IBM北京中心代理若干項(xiàng)目,獲毛利7萬美元。
—最后也是最重要的一件事,副研究員倪光南兼任公司總工程師,并把計(jì)算所的研究成果“漢字系統(tǒng)”帶到公司。BeforeComputerwasBornIBM于1911年6月15日在賓厄姆頓西幾英里處的紐約恩迪科特作為CTR公司注冊AT&T1877HP1939Lenovo1985DELL1987公司合并成CTR制造各種產(chǎn)品,包括員工計(jì)時(shí)系統(tǒng)、磅秤、自動(dòng)切肉機(jī),而且最重要的是發(fā)展計(jì)算機(jī)、穿孔卡片設(shè)備.一段時(shí)間CTR集中精力專做穿孔卡片,不再參與其他活動(dòng).第二世界大戰(zhàn)期間,IBM生產(chǎn)了M1卡賓槍和勃朗寧自動(dòng)步槍
在曼哈頓計(jì)劃中發(fā)展原子彈頭廣泛使用IBM穿孔卡片機(jī)做計(jì)算
IBMCPU:PowerPCPowerOS:OS/2DB:DB/2Software:Lotus
WebSphereIODRationalTivoli硬盤技術(shù),掃描隧道顯微鏡(STM),銅布線技術(shù),原子蝕刻技術(shù)PWC定向路徑確定數(shù)據(jù)相關(guān)根據(jù)指令序列關(guān)系獲得段間寄存器文件確定源和目標(biāo)寄存器確定定向路徑需要掌握每個(gè)指令在每個(gè)階段的輸入和輸出寄存器控制相關(guān)凍結(jié)或排空流水線(2)預(yù)測分支轉(zhuǎn)移失敗(3)預(yù)測分支轉(zhuǎn)移成功(4)延遲分支(delayedbranch) 從前調(diào)度、從目標(biāo)處調(diào)度、從失敗處調(diào)度1.指令集:64位MIPS指令集(實(shí)際的64-bit機(jī)器)2.MIPSR4000流水線結(jié)構(gòu)較深的流水線(superpipelining)訪存操作流水化主頻100MHz~200MHz主要應(yīng)用領(lǐng)域Nintendo(Xbox,WII,PS3)HighendColorlaserPrintersNetworkRouters(Cisco)3.4.1MIPSR4000的整型流水線MIPSR4000的8級(jí)整數(shù)流水線IF–取指階段的前半部分;選擇PC值,初始化指令cache的訪問IS–取指階段的后半部分,主要完成訪問指令cache的操作RF–指令譯碼,寄存器讀取,相關(guān)檢測以及指令cache命中檢測EX–執(zhí)行,包括:計(jì)算有效地址,進(jìn)行ALU操作,計(jì)算分支目標(biāo)地址和檢測分支條件MIPSR4000的8級(jí)整數(shù)流水線DF–取數(shù)據(jù),訪問數(shù)據(jù)cache的前半部分DS–訪問數(shù)據(jù)cache的后半部分TC–tag檢測,確定數(shù)據(jù)cache是否命中WB–Load操作和R-R操作的結(jié)果寫回4.指令序列在流水線中的重疊執(zhí)行過程定向+插入暫停周期5.指令序列在流水線中的執(zhí)行時(shí)空圖6.R4000流水線的定向路徑遠(yuǎn)多于DLX流水線
ALU輸入端的定向源有4個(gè):EX/DF,DF/DS,DS/TC,TC/WB7.分支處理在EX段完成分支條件的計(jì)算,基本分支延遲為3個(gè)時(shí)鐘周期分支處理策略單周期延遲分支從失敗處調(diào)度時(shí)-空圖包括浮點(diǎn)除法器、浮點(diǎn)乘法器和浮點(diǎn)加法器各1個(gè)分為8段(表3.9)雙精度浮點(diǎn)操作指令延遲、初始化間隔和流水段的使用情況(
表3.10)3.4.2MIPSR4000的浮點(diǎn)流水線浮點(diǎn)流水線例子浮點(diǎn)流水線例子浮點(diǎn)流水線例子1.引起流水線暫停的四個(gè)主要原因載入暫停分支暫停浮點(diǎn)結(jié)果暫停浮點(diǎn)結(jié)構(gòu)性暫停2.暫停對MIPSR4000流水線CPI的影響表3.113.4.3MIPSR4000流水線性能分析總結(jié)流水線基本概念能夠流水的前提條件流水線的評價(jià)指標(biāo)DLX基本流水線五個(gè)階段,各階段的功能不同數(shù)據(jù)通路的作用段間寄存器的設(shè)置和作用總結(jié)流水線中的相關(guān)結(jié)構(gòu)相關(guān)數(shù)據(jù)相關(guān)控制相關(guān)如何構(gòu)造,如何避免實(shí)例分析:MIPSR4000特點(diǎn)一些結(jié)論流水線提高的是指令帶寬(吞吐率),而不是單條指令的執(zhí)行速度相關(guān)限制了流水線性能的發(fā)揮結(jié)構(gòu)相關(guān):需要更多的硬件資源數(shù)據(jù)相關(guān):需要定向,編譯器調(diào)度控制相關(guān):盡早檢測條件,計(jì)算目標(biāo)地址,延遲轉(zhuǎn)移,預(yù)測浮點(diǎn)運(yùn)算使得流水線控制更加復(fù)雜編譯器可降低數(shù)據(jù)相關(guān)和控制相關(guān)的開銷Load延遲槽Branch延遲槽課堂練習(xí)TP=n/T流水S=T非流水/T流水
E=n△t0/T流水(1)在如圖所示的流水線上實(shí)現(xiàn)m=4(2)若分別采用靜態(tài)和動(dòng)態(tài)的方法,畫出流水線時(shí)空圖(3)在兩種情況下分別求吞吐率、加速比和效率。例
在靜態(tài)流水線上計(jì)算,問吞吐率、加速比、效率各是多少?(m=4)解: (1)確定適合流水處理的計(jì)算過程
(2)畫時(shí)-空圖
(3)性能計(jì)算 吞吐率TP=7/20·△t0
加速比S=34·△t0/20·△t0=1.7
效率E=(4×4+3×6)/(8×20)=0.215.流水線性能分析實(shí)例靜態(tài)動(dòng)態(tài)作業(yè)如果采用DLX流水線計(jì)算(m=4)寫出匯編代碼分析流水線中的Load互鎖,計(jì)算執(zhí)行周期數(shù)及CPI.調(diào)度代碼,消除流水線的Load等待,寫出匯編代碼,計(jì)算優(yōu)化后的CPI,消除互鎖前后的加速比。AcknowledgementsTheseslidescontainmaterialdevelopedandcopyrightby:Prof.ZhiyingWang(NUDT)Dr.Xianglan
Chen(USTC)Prof.XuehaiZhou(USTC)Prof.Krste
Asanovic(MIT/UCB)NUDTmaterialComputerArchitectureUCBmaterialderivedfromcourseCS152
“Themorewestudy,themorewediscoverourignorance."byPercyByssheShelleySUNUltraSPARCIIICu(框圖)
HPPA-8700(版圖布局)IntelItanium2(結(jié)構(gòu)框圖)IntelItanium2(版圖布局)DECAlpha21364(版圖布局)流水線時(shí)空圖TIASC的多功能流水線動(dòng)、靜態(tài)流水線時(shí)空圖JPEG編碼的例子一種簡單的DLX流水線指令編號(hào)時(shí)鐘周期123456789指令iIFIDEXMEMWB指令i+1IFIDEXMEMWB指令i+2IFIDEXMEMWB指令i+3IFIDEXMEMWB指令i+4IFIDEXMEMWB流水段表3.1DLX流水線的每個(gè)流水段的操作任何指令類型ALU指令Load/Store指令分支指令I(lǐng)FIDEXIF/ID.IR←
Mem[PC]IF/ID.NPC,PC←(ifEX/MEM.cond{EX/MEM.ALUOutput}else{PC+4});ID/EX.A←Regs[IF/ID.IR6...10];ID/EX.B←Regs[IF/ID.IR11...15];ID/EX.NPC←IF/ID.NPC;ID/EX.IR←IF/ID.IR;ID/EX.Imm
←(IR16)16##IR16...31;EX/MEM.IR←ID/EX.IR;EX/MEM.ALUOutput←
ID/EX.AopID/EX.B
或
EX/MEM.ALUOutput←
ID/EX.AopID/EX.Imm;
EX/MEM.cond←0;EX/MEM.IR←ID/EX.IR;EX/MEM.B←ID/EX.BEX/MEM.ALUOutput←
ID/EX.A+ID/EX.Imm;EX/MEM.cond←0;EX/MEM.ALUOutput←
ID/EX.NPC+ID/EX.Imm;
EX/MEM.cond←(ID/EX.Aop0);流水段 DLX流水線的每個(gè)流水段的操作(續(xù))任何指令類型ALU指令Load/Store指令分支指令MEMWBMEM/WB.IR←EX/MEM.IR;MEM/WB.ALUOutput←
EX/MEM.ALUOutput;MEM/WB.IR←EX/MEM.IR;MEM/WB.LMD←
Mem[EX/MEM.ALUOutput];
或
Mem[EX/MEM.ALUOutput]←EX/MEM.B;Regs[MEM/WB.IR16...20]
←MEM/WB.ALUOutput;
或
Regs[MEM/WB.IR11...15]
←MEM/WB.ALUOutput;Regs[MEM/WB.IR11...15]
←MEM/WB.LMD;ADDR1,R2,R3IFIDEX
ME
WBSUBR5,R1,R7IFIDEXMEWBXORR6,R1,R7IFIDEXMEWBORR7,R1,R7IFIDEXMEWBLWR1,45(R2)IFIDEXME
WBSUBR8,R6,R7
IFIDEXMEWB
ADDR5,R1,R7IFIDEXMEWBADDR1,R2,R3IFIDEXME
WBSUBR8,R6,R7
IFIDEXMEWB
LWR5,45(R1)IFIDEXMEWBLWR1,30(R2)IFIDEXME
WBSUBR8,R6,R7
IFIDEXMEWB
LWR5,45(R1)IFIDEXMEWBADDR1,R2,R3IFIDEX
ME
WBSWR5,30(R1)IFIDEXMEWB
SWR6,45(R1)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國的疆域與人口復(fù)習(xí)25張
- 人教版八年級(jí)音下冊樂期末必背復(fù)習(xí)知識(shí)點(diǎn)
- 滬科版初中九年級(jí)物理能源開發(fā)和利用
- 高中語文散文部分第2單元捉不住的鼬鼠-時(shí)間片論美課件新人教版選修中國現(xiàn)代詩歌散文欣賞
- 2011-2012年LOW-E玻璃市場預(yù)測及市場調(diào)查分析報(bào)告
- 2024至2030年中國孕婦裝數(shù)據(jù)監(jiān)測研究報(bào)告
- 2024至2030年中國喇叭水仙花數(shù)據(jù)監(jiān)測研究報(bào)告
- 2024至2030年中國臥式聚乙烯貯槽數(shù)據(jù)監(jiān)測研究報(bào)告
- 2024至2030年中國分立式濾波器數(shù)據(jù)監(jiān)測研究報(bào)告
- 2024至2030年中國兒童休閑運(yùn)動(dòng)服數(shù)據(jù)監(jiān)測研究報(bào)告
- 2023年10月自考02187電工與電子技術(shù)試題及答案含評分標(biāo)準(zhǔn)
- 生產(chǎn)前的準(zhǔn)備工作
- ??破餍堤幚砹鞒膛嘤?xùn)課件
- 六年級(jí)上冊數(shù)學(xué)心得體會(huì)
- 機(jī)械制圖教案(完整版)
- 公平競爭審查制度實(shí)施細(xì)則
- 衛(wèi)生巾推廣方案
- 2024年大疆無人機(jī)飛行知識(shí)筆試歷年真題薈萃含答案
- 2024年企業(yè)文化企業(yè)建設(shè)知識(shí)競賽-中國石油知識(shí)競賽筆試歷年真題薈萃含答案
- 耐克營銷案例分析耐克品牌
- 皮質(zhì)盲的護(hù)理查房
評論
0/150
提交評論