欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于流水線重構(gòu)的超長指令字體系架構(gòu)性能模擬方法與流程

文檔序號:12362734閱讀:360來源:國知局
基于流水線重構(gòu)的超長指令字體系架構(gòu)性能模擬方法與流程

本發(fā)明涉及VLIW體系架構(gòu)性能模擬技術(shù),給出了一種基于流水線重構(gòu)的VLIW體系架構(gòu)性能模擬方法。



背景技術(shù):

嵌入式系統(tǒng)和軟件具有實(shí)時性、專用性、軟硬件緊密結(jié)合等特點(diǎn),因此在仿真測試中軟件的周期精確性能是一個關(guān)鍵。目前的VLIW(超長指令字)嵌入式系統(tǒng)軟件仿真工具在脫離實(shí)際硬件的環(huán)境下不能提供較精確的仿真運(yùn)行周期,致使仿真結(jié)果與實(shí)際情況相差較大,從而不能滿足對時鐘周期敏感的應(yīng)用程序的測試要求。

性能模擬的主要技術(shù)處理器流水線模擬,通常情況下流水線模擬是將各個影響因素考慮到周期計算中去,通過多線程、順序模擬的方式實(shí)現(xiàn)周期的計算。本專利通過分析流水線執(zhí)行過程和周期計算的基本原理,將整個流水線的周期計算抽象為流水線推進(jìn)周期數(shù)和流水線停頓周期數(shù)目之和,整個流水線的模擬將圍繞流水線的推進(jìn)和影響流水線推進(jìn)的因素展開。通過對VLIW體系結(jié)構(gòu)及芯片結(jié)構(gòu)的研究,本專利將影響流水線的因素分為兩類,改變流水線推進(jìn)路徑的因素和引起整個流水線停頓的因素。

基于多線程、順序模擬的性能統(tǒng)計方案,每個線程模擬一個流水線階段,需要考慮線程間的同步與互斥,保證數(shù)據(jù)流在每個周期切換時流動,還需要有一個主線程來做協(xié)調(diào)。使流水線的結(jié)構(gòu)變得復(fù)雜,增加了反映處理器工作狀態(tài)的難度,考慮到其他因素對流水線停頓的影響,將使流水線的控制邏輯更加復(fù)雜。此外,由于線程間同步和互斥的開銷以及控制邏輯上的復(fù)雜性,使得仿真效率低下。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的目的在于提供一種基于流水線重構(gòu)的超長指令字體系架構(gòu)性能模擬方法,用于解決上述現(xiàn)有技術(shù)的問題。

本發(fā)明一種基于流水線重構(gòu)的VLIW體系架構(gòu)性能模擬方法,其中,包括:第一步:E3節(jié)拍模擬,包括:(1)判斷是否存在上一級流水,若沒有上一級流水,直接跳過E3節(jié)拍,若存在上一級流水,則要判斷是否收到上一級流水的E2節(jié)拍傳遞的地址,并若沒有收到地址信息,則進(jìn)行等待,否則進(jìn)行步驟(2);(2)判斷是否有訪存指令,若有訪存指令,進(jìn)行內(nèi)存訪問,否則進(jìn)入到第二步E2節(jié)拍模擬階段;第二步:E2節(jié)拍模擬,包括:(3)判斷是否存在上一級流水,若沒有上一級流水,直接跳過E2節(jié)拍,若有,判斷是否接收到上一級流水的E1節(jié)拍傳遞的地址,若沒有接收到地址信息,則進(jìn)行等待,直到接收到E1傳遞的地址;進(jìn)行步驟(4);(4)向下一級流水傳送E3節(jié)拍傳遞地址;第三步:E1節(jié)拍模擬,包括:(5)判斷是否存在上一級流水,若沒有上一級流水,直接跳過E1節(jié)拍,若有進(jìn)行地址有效性判斷:判斷是否接收到DC節(jié)拍傳遞的地址或E1階段獲取的地址是否有效,若滿足上述任意條件,則進(jìn)行下一個階段(6)的地址有效性判斷,若兩個條件都不滿足則進(jìn)行等待,直到滿足任一條件;(6)判斷當(dāng)前的地址是否是上一級DC節(jié)拍傳遞的地址,若是,則將該地址傳遞到下一級流水的E2節(jié)拍,若不是,直接進(jìn)行(7);(7)執(zhí)行功能模擬線程;(8)開始接收相關(guān)影響流水線E1節(jié)拍模擬推進(jìn)的相關(guān)因素;第四步:DC節(jié)拍模擬,包括:(9)判斷是否存在上一級流水,若沒有上一級流水,直接跳過DC節(jié)拍,若存在上一級流水,則判斷是否接收到上一級流水的DP節(jié)拍傳送的地址,若沒有接收到地址,則進(jìn)行等待,直到接收到DP傳送的地址;(10)判斷是NOP指令是否處理完或者當(dāng)前PC指令是否是B指令;如果為是則執(zhí)行步驟(11),否則進(jìn)行等待;(11)判斷當(dāng)前PC指令是否是B指令,若是B指令,則將當(dāng)前PC值為整個執(zhí)行包的地址,并向下一級流水E1節(jié)拍傳遞當(dāng)前執(zhí)行包的地址,否則直接向下一級流水E1節(jié)拍傳遞當(dāng)前執(zhí)行包的地址;(12)預(yù)取下一個執(zhí)行包的地址,PC值更新為下個執(zhí)行包的地址,并將下一個執(zhí)行包的地址存儲到執(zhí)行包緩存區(qū)中,用于下一個執(zhí)行包的執(zhí)行;(13)判斷當(dāng)前PC值是否是執(zhí)行包的最后一個指令的地址,若是執(zhí)行包的最后一條指令的地址,將允許第五步的DP節(jié)拍向前推進(jìn)一個節(jié)拍,執(zhí)行步驟(14),否則,直接執(zhí)行步驟(14);(14)判斷NOP指令是否處理完全,若未處理完全,則將NOP指令清空,進(jìn)入到下一個節(jié)拍的處理,若NOP指令已經(jīng)處理完,則直接進(jìn)入到下一個節(jié)拍的處理;第五步:DP節(jié)拍模擬,包括:(15)判斷是否存在上一級流水,若沒有上一級流水,直接跳過DP節(jié)拍,若存在上一級流水,判斷當(dāng)前節(jié)拍是否收到PR節(jié)拍傳遞的地址,若未收到PR節(jié)拍傳遞的地址,則進(jìn)行等待,否則進(jìn)行步驟(16);(16)判斷當(dāng)前PC值對應(yīng)的指令是否是B指令或者步驟(13)的DP是否允許向前推進(jìn),若兩個條件都不滿足,則進(jìn)行等待,否則進(jìn)行相應(yīng)的地址傳遞;(17)向下一級流水DC節(jié)拍傳遞地址,并允許第六步的PR節(jié)拍向前推進(jìn);第六步:PR節(jié)拍模擬,包括:(18)判斷是否存在上一級流水,若沒有上一級流水,直接跳過PR節(jié)拍,若存在上一級流水,判斷是否收到上一級流水的PW節(jié)拍傳遞的地址,若未收到PW節(jié)拍傳遞的地址,則進(jìn)行等待,否則進(jìn)行步驟(19);(19)判斷當(dāng)前PC值對應(yīng)的指令是否是B指令或者步驟(17)的PR節(jié)拍是否允許向前推進(jìn),若兩個條件都不滿足進(jìn)行等待,否則進(jìn)行步驟(20);(20)向下一級流水的DC節(jié)拍傳遞地址信息,并允許第七步的PW向前推進(jìn);第七步:PW節(jié)拍模擬,包括:(21)判斷是否存在上一級流水,若沒有上一級流水,直接跳過PW節(jié)拍,若存在上一級流水,判斷是否接收到PS節(jié)拍傳遞的地址,若沒有接收到地址信息,則進(jìn)行等待,直到接收到相應(yīng)的地址信息;(22)判斷當(dāng)前PC值對應(yīng)的指令是否是B指令或者步驟(20)PW節(jié)拍是否允許向前推進(jìn),若兩個條件都不滿足,則進(jìn)行等待,否則進(jìn)行步驟(23);(23)向下一級流水PR節(jié)拍傳遞地址信息,并執(zhí)行步驟(24);(24)進(jìn)行取指操作,獲取NPC值對應(yīng)的指令,并將訪存操作對流水造成的影響考慮到周期計算中去,并允許第八步的PS節(jié)拍向前推進(jìn);第八步:PS節(jié)拍模擬,包括:(25)判斷是否存在上一級流水,若沒有上一級流水,直接跳過PS節(jié)拍,若存在上一級流水,判斷是否接收到上一級流水的PG節(jié)拍傳遞的地址,若沒有接收到地址信息,則進(jìn)行等待,直到接收到PG節(jié)拍傳遞的地址信息;(26)判斷當(dāng)前PC值對應(yīng)的指令是否是B指令或者PS節(jié)拍是否允許向前推進(jìn),若兩個條件都不滿足,則進(jìn)行等待,否則進(jìn)行步驟(27);(27)執(zhí)行PS節(jié)拍,向下一級流水PW節(jié)拍傳遞地址信息;(28)允許第九步的PG節(jié)拍向前推進(jìn);第九步:PG節(jié)拍模擬,包括:(29)首先判斷當(dāng)前PC值對應(yīng)的指令是否是B指令,或者PG節(jié)拍是否允許向前推進(jìn),若兩個條件都不滿足,則進(jìn)行等待,否則進(jìn)行步驟(30);(30)判斷當(dāng)前PC值對應(yīng)的指令是否是B指令;(31)向下一級流水PS節(jié)拍傳遞地址信息,并關(guān)閉PG節(jié)拍。

根據(jù)本發(fā)明的基于流水線重構(gòu)的VLIW體系架構(gòu)性能模擬方法的一實(shí)施例,其中,(8)開始接收相關(guān)影響流水線E1節(jié)拍模擬推進(jìn)的相關(guān)因素包含指令訪存、NOP信息、B指令信息、PC地址信息和中斷信息。

根據(jù)本發(fā)明的基于流水線重構(gòu)的VLIW體系架構(gòu)性能模擬方法的一實(shí)施例,其中,(30)判斷當(dāng)前PC值對應(yīng)的指令是否是B指令包括:一個執(zhí)行包中含有B指令有兩種情況,第一種是該B指令觸發(fā),將B指令對應(yīng)的跳轉(zhuǎn)地址賦值給PG節(jié)拍的NPC值,另一種情況是該B指令不觸發(fā),對此B進(jìn)行記錄,如果執(zhí)行包中沒有B指令,將PG節(jié)拍的NPC值自動偏移到下一個取值包的首地址。

根據(jù)本發(fā)明的基于流水線重構(gòu)的VLIW體系架構(gòu)性能模擬方法的一實(shí)施例,其中,(30)如果執(zhí)行包中沒有B指令,將PG節(jié)拍的NPC值自動偏移到下一個取值包的首地址

根據(jù)本發(fā)明的基于流水線重構(gòu)的VLIW體系架構(gòu)性能模擬方法的一實(shí)施例,其中,還包括:初始化仿真器內(nèi)存,加載目標(biāo)文件到仿真器,獲取程序入口地址;將程序入口地址賦值給當(dāng)前PC值,獲取流水線開始地址。

本發(fā)明基于流水線重構(gòu)的超長指令字體系架構(gòu)性能模擬方法,對VLIW體系結(jié)構(gòu)影響流水線模擬的各個因素進(jìn)行抽象和分析,基于延遲槽結(jié)構(gòu)的流水線推進(jìn),能夠?qū)崿F(xiàn)VLIW體系結(jié)構(gòu)流水線的模擬和精確的周期計算,為設(shè)備時鐘精確的仿真模型提供理論依據(jù)和具體實(shí)現(xiàn)方法。

附圖說明

圖1為本發(fā)明基于流水線重構(gòu)的超長指令字體系架構(gòu)性能模擬方法的流水線執(zhí)行階段流程圖;

圖2為本發(fā)明基于流水線重構(gòu)的超長指令字體系架構(gòu)性能模擬方法的流水線譯碼階段流程圖;

圖3為本發(fā)明基于流水線重構(gòu)的超長指令字體系架構(gòu)性能模擬方法的流水線取指階段流程圖。

具體實(shí)施方式

為使本發(fā)明的目的、內(nèi)容、和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖和實(shí)施例,對本發(fā)明的具體實(shí)施方式作進(jìn)一步詳細(xì)描述。

本發(fā)明基于流水線重構(gòu)的超長指令字體系架構(gòu)性能模擬方法,包括:

第一步:性能模型抽象

改變流水線推進(jìn)路徑的因素,大部分在功能模擬中實(shí)現(xiàn),各因素的信息也是與功能模擬的同步中得到,又因?yàn)檫@些因素直接影響流水線的執(zhí)行,所以,這些因素在重構(gòu)流水線中實(shí)現(xiàn),即在重構(gòu)流水線的過程中要考慮好這些因素的影響,以及處理好各個因素的關(guān)系。主要關(guān)注:

1,影響因素如何對流水線產(chǎn)生影響;

2,如何來處理多個因素對流水線的影響,以及多個因素間的相互影響;

抽象出模擬流水線的周期計算公式:

程序執(zhí)行時鐘周期數(shù)=流水線推進(jìn)總次數(shù)+整個流水線停頓占用時鐘周期數(shù);

改變流水線推進(jìn)路徑的因素,包括

1)取指包中含有多個執(zhí)行包;

2)指令類型的影響,多周期NOP(空指令)和B(跳轉(zhuǎn))指令;

3)中斷,從流水線的角度看,中斷對流水線的執(zhí)行路徑改變與B指令的過程類似,都是使流水線從一個新的地址開始執(zhí)行。

引起整個流水線停頓的因素,包括:

1)存儲系統(tǒng)的阻塞,即取指和數(shù)據(jù)存取引起的訪存阻塞(包括外設(shè)地址)。

第二步:流水線影響因素分析

1,取指包中包含多個執(zhí)行包

取指包中包含多個執(zhí)行包但是每個周期發(fā)射一個執(zhí)行包,主要影響取指和譯碼兩個階段流水線的流動。引入一種機(jī)制,由前一個節(jié)拍來決定是否允許后一個節(jié)拍執(zhí)行。這樣當(dāng)前一個節(jié)拍沒有執(zhí)行完成前,后一個節(jié)拍將被阻塞。

2,多周期NOP(空指令)

NOP指令是不使用功能單元的空操作,空操作的周期由該指令的選擇操作數(shù)決定。NOP指令通常被作為一種延遲手段。主要包含兩種使用方式:NOP指令不與其他指令并行使用,單獨(dú)占用一個執(zhí)行包;NOP指令與其他指令并行使用。其帶來的問題就是如何使流水線空轉(zhuǎn)。通過分析發(fā)現(xiàn)不管NOP n是不是在并行執(zhí)行包中,對流水線的影響是一樣的,使流水線空轉(zhuǎn),重復(fù)執(zhí)行相同的空操作,直到有B指令觸發(fā)或者達(dá)到NOP n的計數(shù)周期。

3,存儲器訪問

存儲系統(tǒng)將數(shù)據(jù)和指令存儲分離,一個物理空間作為程序存儲空間,另一個物理空間則作為數(shù)據(jù)存儲空間。主要體現(xiàn)在含有一個一級指令Cache和一個一級數(shù)據(jù)Cache。數(shù)據(jù)讀取和程序讀取在流水線中有相同的操作,它們恰恰使用不同的節(jié)拍完成它們的操作,從而使DSP得以高速訪問存儲器,更利于流水線的進(jìn)行。不同的芳村區(qū)域?qū)?yīng)不同的訪存周期,通過正確維護(hù)整個流水的推進(jìn)實(shí)現(xiàn)不同訪存的周期計算。

存儲器訪問另一個影響流水線的因素是存儲阻塞:

當(dāng)存儲器沒有準(zhǔn)備好回應(yīng)給CPU的請求時,流水線將產(chǎn)生存儲器阻塞。對于程序存儲器訪問,存儲器阻塞發(fā)生在取指階段的PW節(jié)拍,而數(shù)據(jù)存儲器訪存則發(fā)生在執(zhí)行階段的E3節(jié)拍。存儲器阻塞將引起該流水線中的所有節(jié)拍延長一定的時鐘周期,從而使程序執(zhí)行增加額外的時鐘周期。當(dāng)存儲器阻塞發(fā)生時,只是改變時鐘周期的計數(shù)方式,由原來的連續(xù)遞增1的方式,變?yōu)橥蛔兪降脑鲩L。采用的方式是每當(dāng)對時鐘周期計數(shù)修改時,加上因訪問存儲器耗用周期,就可以形成存儲器阻塞引起的流水線停頓的效果,這對于流水線其他因素和流水線本身的操作并不影響。

4,中斷

從中斷產(chǎn)生到被CPU檢測需要5個周期,中斷對流水線的影響發(fā)生在中斷產(chǎn)生后的第6個周期,在這個周期CPU需要判斷是否允許該中斷觸發(fā),包括該中斷是否使能、是否有更高優(yōu)先級的中斷發(fā)生、標(biāo)志位是否置位等等。如果前五個周期含有B指令在延遲等待,中斷的處理需要等待B指令觸發(fā)跳轉(zhuǎn)后,再執(zhí)行中斷的處理流程。

中斷觸發(fā)的處理過程:首先清空流水線中譯碼和取指階段中的內(nèi)容,等待三個周期后,將中斷服務(wù)處理程序的入口地址加入到流水線中PG節(jié)拍,準(zhǔn)備開始執(zhí)行中斷服務(wù)程序。

如何模擬流水線:

1)通過延遲槽機(jī)制解決流水模擬中斷的影響,延遲一定周期后,執(zhí)行特定的操作。延遲槽的機(jī)理和指令延遲一樣,即以當(dāng)前周期為基準(zhǔn),將需要延遲的操作,插入延遲后的延遲槽內(nèi),等到延遲周期到達(dá)時,刷新對應(yīng)周期的延遲槽,來完成延遲操作。

2)刷新延遲槽操作:

獲得當(dāng)前處理(flush)槽位=當(dāng)前周期%槽位數(shù);

3)延遲操作插入對應(yīng)的延遲槽操作:

插入延遲處理的槽位=(當(dāng)前周期+延遲周期數(shù))%槽位數(shù);

第三步:流水線重構(gòu)及周期計算

流水線重構(gòu)主要需考慮的是,如何在重構(gòu)流水線時將影響流水線的因素考慮在內(nèi),以及實(shí)現(xiàn)它們對流水線執(zhí)行的影響。根據(jù)以上分析的影響流水線的因素:

(1)多執(zhí)行包,

(2)多周期NOP(空指令),

(3)B(跳轉(zhuǎn))指令,

(4)中斷,

(5)存儲器。

首先,分析重構(gòu)流水線中所要實(shí)現(xiàn)的節(jié)拍和流水線階段。待實(shí)現(xiàn)VLIW流水線的節(jié)拍一共有16個(IF(4)+ID(2)+EX(10))。根據(jù)重構(gòu)流水線的思想,只實(shí)現(xiàn)會對流水線的執(zhí)行路徑或者停頓產(chǎn)生影響的節(jié)拍,即影響因素可能作用的節(jié)拍。其他的節(jié)拍,雖然在真實(shí)硬件中存在,但實(shí)現(xiàn)與否不會對性能周期計算產(chǎn)生影響,所以不會實(shí)現(xiàn)這些節(jié)拍。

基于此思想,分析影響因素作用的節(jié)拍。在取指階段和譯碼階段都有因素作用,在執(zhí)行階段只有訪存操作的作用,而訪存操作出現(xiàn)的節(jié)拍是E3,所以,執(zhí)行階段的節(jié)拍只需構(gòu)造到E3就可以反映流水線的執(zhí)行過程。因此,重構(gòu)流水線的節(jié)拍數(shù)為9個

(IF(4)+ID(2)+EX(3))。三個階段分別如下:

綜上分析了重構(gòu)流水線的基本結(jié)構(gòu),下文將介紹各個具體節(jié)拍的實(shí)現(xiàn)情況,以及各個因素是如何在對應(yīng)節(jié)拍中實(shí)現(xiàn)的。

(1)圖1為本發(fā)明基于流水線重構(gòu)的超長指令字體系架構(gòu)性能模擬方法的流水線執(zhí)行階段流程圖。圖2為本發(fā)明基于流水線重構(gòu)的超長指令字體系架構(gòu)性能模擬方法的流水線譯碼階段流程圖。圖3為本發(fā)明基于流水線重構(gòu)的超長指令字體系架構(gòu)性能模擬方法的流水線取指階段流程圖,如圖1-圖3所示,整個流水線中各個節(jié)拍采用逆序調(diào)用關(guān)系。每個節(jié)拍是否能夠向前推進(jìn),由下一個節(jié)拍的執(zhí)行情況決定。

(2)同時每個節(jié)拍能否執(zhí)行還由上一個節(jié)拍是否有數(shù)據(jù)傳遞決定,表現(xiàn)為只有上一個節(jié)拍有地址傳遞來時,本節(jié)拍才能執(zhí)行。

(3)上述兩個條件并不是矛盾的,第二個條件只是針對流程啟動的初期,后面的節(jié)拍要等待前面的節(jié)拍傳遞數(shù)據(jù)執(zhí)行。而第一個條件,則確定只有下一個節(jié)拍將已有數(shù)據(jù)處理完成后,本節(jié)拍的數(shù)據(jù)才能向前推進(jìn)。

本發(fā)明基于流水線重構(gòu)的超長指令字體系架構(gòu)性能模擬方法的流水線模擬過程具體處理流程如下。

初始化:

初始化仿真器內(nèi)存,加載目標(biāo)文件到仿真器,獲取程序入口地址;將程序入口地址賦值給當(dāng)前PC(Program Counter Register),獲取流水線開始地址。

如圖1所示,1,執(zhí)行階段:

第一步:E3(執(zhí)行節(jié)拍3)節(jié)拍模擬

(1)首先判斷是否存在上一級流水,若沒有上一級流水,直接跳過E3節(jié)拍,若存在上一級流水,則要判斷是否收到上一級流水的E2節(jié)拍傳遞的地址,并若沒有收到地址信息,則進(jìn)行等待,否則進(jìn)行步驟(2)。

(2)判斷是否有訪存指令(內(nèi)存訪問指令),若有訪存指令,進(jìn)行內(nèi)存訪問,否則進(jìn)入到第二步E2節(jié)拍模擬階段。

E3節(jié)拍是流水線執(zhí)行的節(jié)拍,訪存指令的模擬,直接影響周期計算。

第二步:E2(執(zhí)行節(jié)拍2)節(jié)拍模擬

(3)首先判斷是否存在上一級流水,若沒有上一級流水,直接跳過E2節(jié)拍,若有,判斷是否接收到上一級流水的E1節(jié)拍傳遞的地址,若沒有接收到地址信息,則進(jìn)行等待,直到接收到E1傳遞的地址;進(jìn)行地址傳送。

(4)向E3節(jié)拍傳遞地址。

第三步:E1(執(zhí)行節(jié)拍1)節(jié)拍模擬

(5)首先判斷是否存在上一級流水,若沒有上一級流水,直接跳過E1節(jié)拍,若有進(jìn)行地址有效性判斷:判斷是否接收到DC節(jié)拍傳遞的地址或E1階段獲取的地址是否有效,若滿足上述任意條件,則進(jìn)行下一個階段(6)的地址有效性判斷,若兩個條件都不滿足則進(jìn)行等待,直到滿足任一條件。

(6)判斷當(dāng)前的地址是否是上一級DC節(jié)拍傳遞的地址,若是,則將該地址傳遞到下一級流水的E2節(jié)拍,若不是,直接進(jìn)行(7)。

(7)開始模擬功能,執(zhí)行功能模擬線程,也就是指令功能的模擬執(zhí)行,完成功能模擬的執(zhí)行。

(8)開始接收相關(guān)影響流水線E1節(jié)拍模擬推進(jìn)的相關(guān)因素。主要包含指令訪存、NOP信息、B指令信息、PC地址信息和中斷信息。

2,如圖2所示,分析階段:

第四步:DC(指令譯碼節(jié)拍)節(jié)拍模擬

(9)首先判斷是否存在上一級流水,若沒有上一級流水,直接跳過DC節(jié)拍,若存在上一級流水,則判斷是否接收到上一級流水的DP節(jié)拍傳送的地址,若沒有接收到地址,則進(jìn)行等待,直到接收到DP傳送的地址。

(10)判斷是NOP指令是否處理完或者當(dāng)前PC指令是否是B指令;如果為是則執(zhí)行步驟(11),否則進(jìn)行等待。

(11)判斷當(dāng)前PC指令是否是B指令,若是B指令,則將當(dāng)前PC值為整個執(zhí)行包的地址,并向E1節(jié)拍傳遞當(dāng)前執(zhí)行包的地址,否則直接向E1節(jié)拍傳遞當(dāng)前執(zhí)行包的地址。

(12)向E1傳遞當(dāng)前執(zhí)行包地址,并預(yù)取下一個執(zhí)行包的地址,PC值更新為下個執(zhí)行包的地址,并將下一個執(zhí)行包的地址存儲到執(zhí)行包緩存區(qū)中,用于下一個執(zhí)行包的執(zhí)行。

(13)判斷當(dāng)前PC值是否是執(zhí)行包的最后一個指令的地址,若是執(zhí)行包的最后一條指令的地址,將允許下步的DP節(jié)拍向前推進(jìn)一個節(jié)拍,執(zhí)行步驟(14),否則,直接執(zhí)行步驟(14)。

(14)判斷NOP指令是否處理完全,若未處理完全,則將NOP指令清空,進(jìn)入到下一個節(jié)拍的處理,若NOP指令已經(jīng)處理完,則直接進(jìn)入到下一個節(jié)拍的處理。

第五步:DP(指令分配節(jié)拍)節(jié)拍模擬

(15)首先判斷是否存在上一級流水,若沒有上一級流水,直接跳過DP節(jié)拍,若存在上一級流水,判斷當(dāng)前節(jié)拍是否收到PR節(jié)拍傳遞的地址,若未收到PR節(jié)拍傳遞的地址,則進(jìn)行等待,否則進(jìn)行步驟(16)。

(16)判斷當(dāng)前PC值對應(yīng)的指令是否是B指令或者步驟(13)的DP是否允許向前推進(jìn),若兩個條件都不滿足,則進(jìn)行等待,否則進(jìn)行相應(yīng)的地址傳遞。

(17)向DC節(jié)拍傳遞地址,并允許PR節(jié)拍向前推進(jìn)。

3,取指階段(如圖3):

第六步:PR(取指包接收節(jié)拍)節(jié)拍模擬

(18)首先判斷是否存在上一級流水,若沒有上一級流水,直接跳過PR節(jié)拍,若存在上一級流水,判斷是否收到PW節(jié)拍傳遞的地址,若未收到PW節(jié)拍傳遞的地址,則進(jìn)行等待,否則進(jìn)行步驟(19)。

(19)判斷當(dāng)前PC值對應(yīng)的指令是否是B指令或者步驟(17的)PR節(jié)拍是否允許向前推進(jìn),若兩個條件都不滿足進(jìn)行等待,否則進(jìn)行步驟(20)。

(20)向DC節(jié)拍傳遞地址信息,并允許PW向前推進(jìn)。

第七步:PW(訪問等待節(jié)拍)節(jié)拍模擬

(21)首先判斷是否存在上一級流水,若沒有上一級流水,直接跳過PW節(jié)拍,若存在上一級流水,判斷是否接收到PS節(jié)拍傳遞的地址,若沒有接收到地址信息,則進(jìn)行等待,直到接收到相應(yīng)的地址信息。

(22)判斷當(dāng)前PC值對應(yīng)的指令是否是B指令或者步驟(20)PW節(jié)拍是否允許向前推進(jìn),若兩個條件都不滿足,則進(jìn)行等待,否則進(jìn)行步驟(23)。

(23)向PR節(jié)拍傳遞地址信息,并執(zhí)行步驟(24);

(24)進(jìn)行取指操作,獲取NPC(Next Program Counter Register)值對應(yīng)的指令,并將訪存操作對流水造成的影響考慮到周期計算中去,保證流水線的準(zhǔn)確推進(jìn)和周期計算的精確性。允許PS節(jié)拍向前推進(jìn)。(具體方法參考2,引起整個流水線停頓的因素。)

第八步:PS(地址發(fā)送節(jié)拍)節(jié)拍模擬

(25)首先判斷是否存在上一級流水,若沒有上一級流水,直接跳過PS節(jié)拍,若存在上一級流水,判斷是否接收到上一級流水的PG節(jié)拍傳遞的地址,若沒有接收到地址信息,則進(jìn)行等待,直到接收到PG節(jié)拍傳遞的地址信息。

(26)判斷當(dāng)前PC值對應(yīng)的指令是否是B指令或者PS節(jié)拍是否允許向前推進(jìn),若兩個條件都不滿足,則進(jìn)行等待,否則進(jìn)行步驟(27)。

(27)執(zhí)行PS節(jié)拍,向PW節(jié)拍傳遞地址信息;

(28)允許PG節(jié)拍向前推進(jìn)。

第九步:PG(地址產(chǎn)生節(jié)拍)節(jié)拍模擬

(29)首先判斷當(dāng)前PC值對應(yīng)的指令是否是B指令,或者PG節(jié)拍是否允許向前推進(jìn),若兩個條件都不滿足,則進(jìn)行等待,否則進(jìn)行步驟(30)。

(30)判斷當(dāng)前PC值對應(yīng)的指令是否是B指令。一個執(zhí)行包中含有B指令有兩種情況,第一種是該B指令觸發(fā),對于此種情況,將B指令對應(yīng)的跳轉(zhuǎn)地址賦值給PG節(jié)拍的NPC值。另一種情況是該B指令不觸發(fā),雖然此種情況不會影響指令的執(zhí)行,但會影響中斷的執(zhí)行,所以要對此B進(jìn)行記錄。如果執(zhí)行包中沒有B指令,將PG節(jié)拍的NPC值自動偏移到下一個取值包的首地址。

(31)向PS節(jié)拍傳遞地址信息,并關(guān)閉PG節(jié)拍,整個流水模擬完成。

本發(fā)明基于流水線重構(gòu)的超長指令字體系架構(gòu)性能模擬方法,對VLIW體系結(jié)構(gòu)影響流水線模擬的各個因素進(jìn)行抽象和分析,基于延遲槽結(jié)構(gòu)的流水線推進(jìn),能夠?qū)崿F(xiàn)VLIW體系結(jié)構(gòu)流水線的模擬和精確的周期計算,為設(shè)備時鐘精確的仿真模型提供理論依據(jù)和具體實(shí)現(xiàn)方法。

以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明技術(shù)原理的前提下,還可以做出若干改進(jìn)和變形,這些改進(jìn)和變形也應(yīng)視為本發(fā)明的保護(hù)范圍。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
营口市| 平顶山市| 阿拉善盟| 仲巴县| 双柏县| 庆云县| 金沙县| 平和县| 鄂伦春自治旗| 恩平市| 台山市| 顺义区| 屯门区| 佛教| 永宁县| 沽源县| 瓮安县| 长乐市| 福海县| 沧源| 巴林右旗| 隆昌县| 张北县| 沽源县| 深州市| 平利县| 望都县| 肃北| 京山县| 双峰县| 石狮市| 巨鹿县| 久治县| 临沭县| 和顺县| 阿瓦提县| 花莲县| 南部县| 巢湖市| 华坪县| 淮阳县|