两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種基于延遲槽補償?shù)腄SP流水線模擬方法與流程

文檔序號:12824515閱讀:541來源:國知局

本發(fā)明涉及cpu流水線模擬,尤其涉及一種基于延遲槽補償?shù)膁sp流水線模擬方法。



背景技術(shù):

用軟件來模擬硬件,可以帶來許多好處。比如硬件的生產(chǎn)需要成本,而且硬件易損壞,而軟件在被正確開發(fā)之后,就幾乎不再需要成本。用來模擬計算機的軟件,模擬器,其出現(xiàn)給軟件的開發(fā)、調(diào)試帶來了巨大的效率提升,比如有了安卓模擬器,當(dāng)程序員在開發(fā)安卓軟件的時候,只需在pc上進行程序開發(fā),然后由模擬器來直接運行,而不需要把開發(fā)的程序下載到真實的安卓機上。

對于計算機來說,核心是處理器(cpu),而cpu的核心可以說是流水線,流水線驅(qū)動著cpu的工作。所以模擬器最重要也最困難的任務(wù)就是cpu流水線的模擬。

對于dsp流水線的模擬,傳統(tǒng)上是按行為來模擬流水線,比如dsp流水線有pg、ps、pw、pr、dp、dc、e1、e2……e10等共16個階段,即一個時鐘內(nèi)流水線做了16種不同的工作,對于硬件來說,這16種工作是并行的,流水線越深,在一定程度上程序就跑得越快,而對軟件模擬來說,是串行執(zhí)行的,流水線越深,需要模擬的行為就越多,效率就越低。



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

本發(fā)明的目的是針對傳統(tǒng)的dsp流水線模擬方法的不足,提供一種基于延遲槽補償?shù)膁sp流水線模擬方法。

本發(fā)明的目的是通過以下技術(shù)方案來實現(xiàn)的:一種基于延遲槽補償?shù)膁sp流水線模擬方法,具體包括如下步驟:

(1)解析目標文件,得到代碼段和程序入口點,把代碼段加載到模擬內(nèi)存中。

(2)對代碼段的指令進行譯碼,保存譯碼后的信息,得到pc到譯碼后的信息的映射關(guān)系。

(3)初始化延遲槽,初始化pc為程序入口點,清空延遲槽內(nèi)的所有結(jié)點。

(4)令cpu向前迭代一個時鐘,根據(jù)當(dāng)前的pc值,通過步驟(2)得到的映射關(guān)系,得到當(dāng)前指令對應(yīng)的譯碼后的信息,解釋執(zhí)行當(dāng)前指令,如果該指令在非e1階段寫回,則在延遲槽中新增一個結(jié)點,該結(jié)點保存了需要寫回的目的寄存器、寫回的結(jié)果值以及寫回的時間(cpu時鐘數(shù));如果該指令在e1階段寫回,則直接將結(jié)果寫回寄存器;

(5)檢查延遲槽內(nèi)所有結(jié)點寫回的時間是否與當(dāng)前時間一致,若結(jié)點寫回的時間與當(dāng)前時間保持一致,則將結(jié)點記錄的信息進行寫回,然后移除該結(jié)點。

(6)循環(huán)步驟(4)-步驟(5),直到最后一條指令執(zhí)行完畢,完成了流水線的模擬。

進一步的,在所述步驟(3)中初始化延遲槽,即初始化一個含空結(jié)點的鏈表或哈希表,將其作為指令結(jié)果寫回的暫存結(jié)構(gòu)。

本發(fā)明的有益效果是,在保證正確性的基礎(chǔ)上,大大加快了流水線模擬方法的效率,加快了目標程序執(zhí)行的速度:

(1)剪裁了模擬中的流水線,提高了負載程序的執(zhí)行速度。

(2)通過延遲槽補償機制,在流水線剪裁的情況下,保證流水線的正確流動。

附圖說明

圖1是本發(fā)明的流程圖。

具體實施方式

下面結(jié)合附圖對本發(fā)明做進一步的說明。

如圖1所示,一種基于延遲槽補償?shù)膁sp流水線模擬方法,具體包括如下步驟:

(1)加載目標文件,根據(jù)目標文件的格式進行解析,得到程序入口點、代碼段等信息。代碼段是指令的目標碼集合,將代碼段加載到模擬內(nèi)存中。對每條指令目標碼進行譯碼,將譯碼后的結(jié)構(gòu)保存起來,得到一個指令到指令譯碼后的一個映射。

(2)對代碼段的指令進行譯碼,保存譯碼后的信息,得到pc到譯碼后的信息的映射關(guān)系。

(3)初始化延遲槽,即初始化一個含空結(jié)點的鏈表或哈希表,將其作為指令結(jié)果寫回的暫存結(jié)構(gòu),初始化pc為程序入口點,清空延遲槽內(nèi)的所有結(jié)點。

(4)令cpu向前迭代一個時鐘,根據(jù)當(dāng)前的pc值,通過步驟(2)得到的映射關(guān)系,索引得到當(dāng)前指令對應(yīng)的譯碼后的信息,解釋執(zhí)行當(dāng)前指令,如果該指令在非e1階段寫回,如branch等指令,則在延遲槽中新增一個結(jié)點,該結(jié)點保存了需要寫回的目的寄存器、寫回的結(jié)果值以及寫回的時間(cpu時鐘數(shù));如果該指令在e1階段寫回,如abs、mv等指令,則直接將結(jié)果寫回寄存器;

(5)檢查延遲槽內(nèi)所有結(jié)點寫回的時間是否與當(dāng)前時間一致,若結(jié)點寫回的時間與當(dāng)前時間保持一致,則將結(jié)點記錄的信息進行寫回,然后移除該結(jié)點。延遲槽可用隊列或者哈希表來實現(xiàn)。隊列是一個一維的線性結(jié)構(gòu),是一個鏈表,只能在表尾插入,任何位置可刪除。延遲隊列是延遲事件的容器,一個延遲事件包含了要延遲寫回的寄存器名,以及要寫回的值,以及當(dāng)前延遲事件在延遲隊列中的存活期。延遲隊列每個時鐘更新一次,每次更新遍歷隊列中的所有結(jié)點一次,并把每個結(jié)點的存活期減一,當(dāng)存活期為零時,把該結(jié)點從延遲隊列中移除,并把結(jié)果寫回到寄存器。在指令執(zhí)行時,根據(jù)當(dāng)前指令的延遲槽個數(shù)來確定延遲事件的存活期。哈希表是一個二維數(shù)組,它也是每個時鐘更新一次,但與延遲列隊不同。延遲哈希表相當(dāng)于是延遲隊列的一維數(shù)組,是延遲隊列的容器。但延遲哈希表里的延遲列隊所包含的延遲事件的存活期是相同的,也就是在增加延遲事件時,延遲哈希表根據(jù)當(dāng)前延遲事件的存活期將其加入到具體的某個隊列中。比如當(dāng)前隊列為0,延遲為2,則加入到(0+2)%n的隊列中,其中n是延遲哈希表的長度,即二維數(shù)組的第一維長度。然后不斷的對當(dāng)前隊列+1并對n取余即可。當(dāng)前隊列就表示當(dāng)前存活期為0的延遲隊列了。延遲哈希表在性能上要優(yōu)先延遲隊列。

(6)循環(huán)步驟(4)‐步驟(5),直到最后一條指令執(zhí)行完畢,完成了流水線的模擬。



技術(shù)特征:

技術(shù)總結(jié)
本發(fā)明公開了一種基于延遲槽補償?shù)腄SP流水線模擬方法,通過按照流水線的效果來模擬,彌補了傳統(tǒng)的按照流水線行為來模擬的方法帶來的程序執(zhí)行效率低下的缺點。本發(fā)明的主要思想是:(1)通過剪裁模擬的流水線,加速流水線的流動,從而加快負載程序的執(zhí)行速度;(2)通過延遲槽補償機制,在流水線被剪裁的情況下,保證軟件流水與硬件流水的效果一致,從而保證程序的正確執(zhí)行。

技術(shù)研發(fā)人員:盧建鵬
受保護的技術(shù)使用者:浙江大學(xué)
技術(shù)研發(fā)日:2017.03.16
技術(shù)公布日:2017.07.07
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
保康县| 容城县| 阜城县| 白朗县| 八宿县| 阆中市| 米易县| 龙陵县| 绥棱县| 芜湖市| 花莲市| 资兴市| 如东县| 蒲城县| 杂多县| 静乐县| 五河县| 曲阳县| 法库县| 韩城市| 海原县| 芦溪县| 鄂州市| 海城市| 尉犁县| 博爱县| 张家口市| 肃南| 临洮县| 台东县| 通州区| 华池县| 五家渠市| 鹤壁市| 曲阳县| 施甸县| 山阳县| 高阳县| 乌兰察布市| 崇文区| 左贡县|