系統(tǒng)結(jié)構(gòu)實(shí)踐mycache模擬器,mipssim模擬器流_第1頁
系統(tǒng)結(jié)構(gòu)實(shí)踐mycache模擬器,mipssim模擬器流_第2頁
系統(tǒng)結(jié)構(gòu)實(shí)踐mycache模擬器,mipssim模擬器流_第3頁
系統(tǒng)結(jié)構(gòu)實(shí)踐mycache模擬器,mipssim模擬器流_第4頁
系統(tǒng)結(jié)構(gòu)實(shí)踐mycache模擬器,mipssim模擬器流_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

實(shí)踐設(shè)計(jì)的目的和意義安裝運(yùn)行相關(guān)模擬器,熟悉各項(xiàng)功能設(shè)置。學(xué)習(xí)樣例程序,觀察相關(guān)變化。自己編寫相應(yīng)程序設(shè)計(jì)運(yùn)行環(huán)境,觀察運(yùn)行結(jié)果。對(duì)計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)相關(guān)知識(shí)點(diǎn)進(jìn)行模擬,對(duì)不同情況進(jìn)行分析,對(duì)比,驗(yàn)證。實(shí)踐設(shè)計(jì)的內(nèi)容和要求內(nèi)容1:1、安裝運(yùn)行MyCache模擬器,熟悉各項(xiàng)功能設(shè)置。2、運(yùn)行樣例程序,觀察命中率變化,回顧所學(xué)知識(shí),分析原因。嘗試調(diào)整不同參數(shù),分析命中率變化。3、要求學(xué)生根據(jù)樣例程序,自主設(shè)計(jì)程序代碼,能覆蓋多種不同的情況變化對(duì)命中率的影響,如塊大小,相聯(lián)度,替換策略,預(yù)期策略,寫策略等。內(nèi)容2:1、安裝運(yùn)行MIPSsim模擬器,熟悉各項(xiàng)功能設(shè)置。2、運(yùn)行樣例程序,仔細(xì)觀察指令在流水線中的執(zhí)行過程,查看寄存器、內(nèi)存內(nèi)容,并運(yùn)用所學(xué)知識(shí),分析產(chǎn)生延遲的原因。嘗試調(diào)整不同參數(shù),觀察流水線各段的調(diào)度情況和內(nèi)存與寄存器的變化情況。3、自主設(shè)計(jì)程序代碼,能覆蓋多種不同的情況變化對(duì)流水線調(diào)度的影響,如讀寫數(shù)據(jù)指令,各種運(yùn)算指令及所使用的寄存器等。設(shè)計(jì)所用設(shè)備儀器電腦、MyCache模擬器、MIPSsim模擬器。實(shí)踐涉及的相關(guān)技術(shù)Cache的工作原理Cache的容量、相聯(lián)度、塊大小、替換算法、預(yù)取算法、(不)按寫分配等技術(shù)的原理流水線技術(shù)。流水線沖突及其解決方案。項(xiàng)目設(shè)計(jì)與實(shí)現(xiàn)內(nèi)容一:Cache性能分析Cache大小對(duì)命中率的影響選擇統(tǒng)一Cache,在其他條件不變的情況下,改變Cache大小,觀察其不命中率 2KB:不命中率為9.87% 8KB:不命中率為4.48% 32KB:不命中率為1.42% 128KB:不命中率為0.6% 512KB:不命中率為0.42%根據(jù)各次模擬的數(shù)據(jù),繪制出曲線圖。由此可以看出,其他條件不變的情況下,Cache越大命中率越高。但是Cache價(jià)格較為昂貴,因此需要在命中率與價(jià)格之間做出平衡。將統(tǒng)一Cache拆分為兩個(gè)獨(dú)立Cache選擇的數(shù)據(jù)Cache與指令Cache之和和統(tǒng)一Cache大小一致,其他條件不變。 指令cache1k,數(shù)據(jù)cache1k:不命中率為:10.69% 指令cache4k,數(shù)據(jù)cache4k:不命中率為:4.16% 指令cache16k,數(shù)據(jù)cache16k:不命中率為:1.52% 指令cache64k,數(shù)據(jù)cache64k:不命中率為:0.53% 指令cache256k,數(shù)據(jù)cache256k:不命中率為:0.39%根據(jù)各次模擬的數(shù)據(jù),繪制出曲線圖。對(duì)圖表進(jìn)行分析,當(dāng)Cache容量較小時(shí),采用統(tǒng)一cache命中率較高,當(dāng)Cache容量較大時(shí),采用獨(dú)立Cache,能降低塊沖突的概率,提高命中率塊大小對(duì)命中率的影響采用統(tǒng)一Cache8KB,在其他條件不變的情況下,改變塊大小的值,觀察其對(duì)命中率的影響。 塊大?。?6B,不命中率為5.79%塊大?。?2B,不命中率為4.48%塊大?。?4B,不命中率為4.03%塊大?。?28B,不命中率為4.60% 塊大小:256B,不命中率為5.35%根據(jù)數(shù)據(jù),畫出曲線圖為分析曲線圖,當(dāng)塊大小慢慢變大時(shí),命中率會(huì)隨著提高,但是當(dāng)塊大小增加到一定大小后,命中率會(huì)隨著下降,這是由于塊大小越大,塊數(shù)越少,導(dǎo)致某些塊剛剛裝入Cache就被替換掉,造成“抖動(dòng)”現(xiàn)象,使命中率下降。相聯(lián)度對(duì)命中率的影響采用直接相聯(lián),不命中率為0.89% 2路,不命中率為0.53% 4路,不命中率為0.47%8路,不命中率為0.45%16路,不命中率為0.44%32路,不命中率為0.44%根據(jù)數(shù)據(jù),繪制出曲線圖由折線圖看出,直接映像到組相聯(lián)映像,命中率大幅提高,這是由于雖然直接映像節(jié)省資源,但是Cache的塊沖突概率很高,采用組相連會(huì)降低塊沖突概率,因此命中率大幅提高。隨著相聯(lián)度增加,對(duì)命中率的提高也越來越不明顯最終趨于穩(wěn)定。替換策略對(duì)命中率的影響LRU:不命中率為0.69%FIFO:不命中率為0.78%RAND:不命中率為1.12%根據(jù)數(shù)據(jù),繪制矩形圖隨機(jī)法算法簡單,不考慮Cache塊的使用情況,沒有利用上層存儲(chǔ)器使用的信息、沒有根據(jù)訪存的局部性原理,不能提高Cache的命中率。先進(jìn)先出算法利用了歷史信息,但沒有根據(jù)訪存的局部性原理,命中率也不高。LRU算法比較好的反映了程序局部性規(guī)律,但是實(shí)現(xiàn)起來比較復(fù)雜。預(yù)取策略不預(yù)?。翰幻新蕿?.89% 不命中預(yù)?。翰幻新蕿?.17%在其他條件不變的情況下,不預(yù)取的命中率高于不命中預(yù)取。寫策略寫回法:不命中率為0.89%寫直達(dá)法:寫回法和寫直達(dá)法都需要少量寄存器,寫回法中緩存器用于暫存將要寫回的塊,使之不必要等待被替換塊寫回主存才開始進(jìn)行Cache取。寫直達(dá)法中則用于緩沖由寫Cache所要求的要寫回主存的內(nèi)容。寫不命中的調(diào)塊策略按寫分配:不命中率為0.89% 不按寫分配:不命中率為2.43%由數(shù)據(jù)可以看出,按寫分配比不按寫分配的命中率高。若未命中,按寫分配會(huì)先將數(shù)據(jù)從主存調(diào)入Cache,然后在對(duì)Cache進(jìn)行寫,最后用寫回法將Cache中的數(shù)據(jù)寫會(huì)主存;而不按寫分配,CPU會(huì)直接寫入主存,不與Cache交互,此時(shí)未把主存塊調(diào)入Cache,因此未命中。 內(nèi)容二:流水與流水線沖突結(jié)構(gòu)沖突定義:結(jié)構(gòu)沖突是指因硬件資源滿足不了指令重疊執(zhí)行的要求而發(fā)生的沖突。原因:功能部件不是完全流水、資源分?jǐn)?shù)不夠。解決辦法:在流水線處理機(jī)中設(shè)置相互獨(dú)立的指令寄存器和數(shù)據(jù)寄存器。增加沖突硬件設(shè)備。 實(shí)驗(yàn)步驟:載入程序structure_hz.s,觀察產(chǎn)生指令沖突時(shí)什么資源分配不足 當(dāng)前資源如圖所示: 當(dāng)前程序?yàn)椋?.textmain:ADD.D$f2,$f0,$f1ADD.D$f3,$f0,$f1ADD.D$f4,$f0,$f1ADD.D$f5,$f0,$f1ADD.D$f6,$f0,$f1ADD.D$f7,$f0,$f1ADD.D$f8,$f0,$f1ADD.D$f9,$f0,$f1TEQ$r0,$r0 單步運(yùn)行程序,當(dāng)?shù)谒牟綀?zhí)行時(shí)發(fā)生了結(jié)構(gòu)沖突,這是由于第三步執(zhí)行加法時(shí)占用了一個(gè)加法器,當(dāng)?shù)谒牟竭\(yùn)行時(shí)還需要一個(gè)加法器,但是目前系統(tǒng)只有一個(gè)加法器,系統(tǒng)只能等待唯一的一個(gè)加法器釋放資源。因此發(fā)生了結(jié)構(gòu)沖突。繼續(xù)單步執(zhí)行直到第一個(gè)加法指令執(zhí)行完畢。發(fā)現(xiàn)一個(gè)加法指令需要6步才能完成,因此,我改變了當(dāng)前系統(tǒng)的加法器個(gè)數(shù)為6,重新運(yùn)行上述代碼直到執(zhí)行結(jié)束,其結(jié)果沒有了結(jié)構(gòu)沖突。 為驗(yàn)證正確性,在改變了加法器個(gè)數(shù)后,我在其示例指令的基礎(chǔ)上多加了幾條加法指令,再次運(yùn)行新的指令,觀察其結(jié)果。執(zhí)行的指令如下:.textmain:ADD.D$f2,$f0,$f1ADD.D$f3,$f0,$f1ADD.D$f4,$f0,$f1ADD.D$f5,$f0,$f1ADD.D$f6,$f0,$f1ADD.D$f7,$f0,$f1ADD.D$f8,$f0,$f1ADD.D$f9,$f0,$f1ADD.D$f10,$f0,$f1ADD.D$f11,$f0,$f1ADD.D$f12,$f0,$f1ADD.D$f13,$f0,$f1TEQ$r0,$r0 通過觀察發(fā)現(xiàn),當(dāng)指令7開始執(zhí)行時(shí),指令1剛好執(zhí)行完畢將加法器釋放。其時(shí)鐘周期圖為:運(yùn)行直到結(jié)束,其結(jié)構(gòu)沖突為0,。 我嘗試設(shè)置5個(gè)加法器,發(fā)現(xiàn)其指令沖突仍然存在,因此設(shè)計(jì)6個(gè)加法器是合理的。數(shù)據(jù)沖突數(shù)據(jù)沖突是指當(dāng)指令在流水線中重疊執(zhí)行時(shí),因需要用到前面指令的執(zhí)行結(jié)果而發(fā)生的沖突。 大致可分為三種類型:寫后讀、寫后寫、讀后寫讀后寫在這個(gè)流水線中不會(huì)發(fā)生,因?yàn)檫@樣的流水線中所有的讀操作都是在寫結(jié)果操作之前發(fā)生。寫后寫在這樣流水線中也不會(huì)發(fā)生,寫后寫只發(fā)生在流水線不止一段可以進(jìn)行寫操作或者指令被重新排序的情況下。因此只考慮寫后讀沖突即可。RAW:首先將參考樣例裝入處理機(jī),單步運(yùn)行到第4步結(jié)果為:執(zhí)行完畢其在第4步發(fā)生了RAM停頓,這是由于指令1還未將寄存器R2中的真實(shí)值寫回,而指令3需要使用R2的值,因此發(fā)生了數(shù)據(jù)沖突。采用定向技術(shù)可以減少數(shù)據(jù)沖突,即在發(fā)生數(shù)據(jù)沖突時(shí),后面的指令并不是立即就要用到前一條指令的計(jì)算結(jié)果。如果能夠?qū)⒂?jì)算結(jié)果從其產(chǎn)生的地方直接送到需要它的地方,就可以避免暫停。當(dāng)定向硬件檢測到前面某條指令的結(jié)果寄存器就是當(dāng)前指令的源寄存器時(shí),控制邏輯會(huì)將前面那條指令的結(jié)果直接從其產(chǎn)生的地方定向到當(dāng)前指令所需的位置。開啟定向技術(shù)后,第四步的RAM停頓消失。執(zhí)行完畢:執(zhí)行完畢后對(duì)比,定向技術(shù)可以減少RAM停頓。進(jìn)一步探究什么情況下需要使用定向技術(shù),可按指令分為運(yùn)算類指令與讀寫存儲(chǔ)器類指令。運(yùn)算類指令:將運(yùn)算中間分別間隔0,1,2個(gè)空指令,觀察結(jié)果。.textmain:loop:ADD$r1,$r1,$r3ADD$r1,$r1,$r3SLL$r0,$r0,0ADD$r1,$r1,$r3SLL$r0,$r0,0SLL$r0,$r0,0ADD$r1,$r1,$r3SLL$r0,$r0,0SLL$r0,$r0,0SLL$r0,$r0,0ADD$r1,$r1,$r3首先將r1,r3手動(dòng)設(shè)置為2,5.通過觀察寄存器值的變化來表示當(dāng)前段是否執(zhí)行完畢。通過觀察發(fā)現(xiàn),運(yùn)算類指令使用定向技術(shù)主要在EX段和MEM段。EX段:當(dāng)下一條指令需要上一條指令的運(yùn)算結(jié)果時(shí),上一條EX段執(zhí)行完畢,則將運(yùn)算結(jié)果直接送到下一條指令的EX段進(jìn)行計(jì)算。MEM段:運(yùn)算類指令在MEM段為空操作,但是還沒有寫入目標(biāo)寄存器,因此當(dāng)下一條指令需要上一條指令的計(jì)算結(jié)果時(shí),則在MEM段將結(jié)果送到下一條指令的EX段。讀寫存儲(chǔ)器類指令:讀寫指令間不間隔空指令:將R1,R2,R3手動(dòng)設(shè)置為5,0x80,0x90,將存儲(chǔ)器中0x80處設(shè)置為10,觀察結(jié)果變化。.textmain:loop:LW$r1,0($r2)SW$r1,0($r3)SLL$r0,$r0,0 LOAD/STORE類指令在MEM段進(jìn)行讀寫存儲(chǔ)器操作,在WB段讀入數(shù)據(jù)寫入寄存器。觀察發(fā)現(xiàn),當(dāng)SW指令需要上一條LW指令的R1值時(shí),在MEM段R1讀取完畢就將R1的值直接送入SW指令的MEM段。讀寫指令間隔一條空指令: .textmain:loop:LW$r1,0($r2)SLL$r0,$r0,0SW$r1,0($r3)SLL$r0,$r0,0總的來講,若下面的指令需要用到上面尚未執(zhí)行完的數(shù)據(jù),則將計(jì)算結(jié)果從其產(chǎn)生的地方直接送到需要它的地方,包括寄存器或者ALU線路上??刂茮_突含義:流水線遇到分支指令或者其他會(huì)改變PC值的指令所引起的沖突控制沖突的關(guān)鍵是在流水線的并行處理中,我們無法在一個(gè)流水階段中迅速的得出分支指令的跳轉(zhuǎn)情況,也就是無法確定并行進(jìn)行的下一條指令究竟是哪一條。解決辦法:凍結(jié)或排空流水線步驟:載入程序pipeline.s觀察發(fā)現(xiàn),第6個(gè)周期產(chǎn)生了控制沖突全部執(zhí)行完畢:共產(chǎn)生11次控制停頓排空流水線與之前的暫停類似,這里的相關(guān)在于控制相關(guān),所以我們需要等到分支指令計(jì)算出具體的跳轉(zhuǎn)地址后在進(jìn)行下一條指

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論