• 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    基于指令隊列的程序循環(huán)代碼動態(tài)檢測及執(zhí)行方法技術(shù)

    技術(shù)編號:8413002 閱讀:223 留言:0更新日期:2013-03-14 02:05
    本發(fā)明專利技術(shù)公開了一種基于指令隊列的程序循環(huán)代碼動態(tài)檢測及執(zhí)行方法,其實施步驟如下:1)從指令緩存中取指并保存到指令隊列中,將指令隊列中保存的指令發(fā)射到功能部件執(zhí)行,當執(zhí)行指令為分支指令且執(zhí)行結(jié)果為跳轉(zhuǎn)時獲取跳轉(zhuǎn)方向以及跳轉(zhuǎn)目標距離,如果跳轉(zhuǎn)方向為向后跳轉(zhuǎn)且跳轉(zhuǎn)目標距離在指令隊列的長度以內(nèi)則進入下一步;2)從指令緩存中取出程序循環(huán)代碼對應(yīng)的指令并填充在指令隊列中;3)將指令緩存旁路,從指令隊列中取出指令并執(zhí)行,在程序循環(huán)代碼的所有指令執(zhí)行完畢后恢復(fù)指令緩存的工作狀態(tài)。本發(fā)明專利技術(shù)具有執(zhí)行效率高、處理性能好、執(zhí)行功耗低、硬件開銷小、支持嵌套循環(huán)、兼容性強、可擴展性好的優(yōu)點。

    【技術(shù)實現(xiàn)步驟摘要】

    本專利技術(shù)涉及微處理器代碼執(zhí)行方法領(lǐng)域,具體涉及一種。
    技術(shù)介紹
    計算機程序中一般都會存在大量循環(huán)代碼,用于表示需要重復(fù)多次執(zhí)行的操作。循環(huán)代碼的執(zhí)行在微處理器中是重復(fù)的行為,尤其是對于指令讀取而言,每次取指都是相同的地址和相同的指令。現(xiàn)代微處理器中,為了緩解處理器與外部存儲訪問之間的速度差異(即“存儲墻”問題),都在片內(nèi)集成了高速緩存(即cache),用來保存處理器運行時需要的 指令和數(shù)據(jù)。高速緩存的容量較外部存儲器小,讀寫速度快。在高速緩存中命中的讀寫操作,就無需再訪問片外的存儲器,從而在一定程度上緩解了“存儲墻”問題。同時,由于高速緩存的讀寫端口有限,為了減少因指令和數(shù)據(jù)的讀寫沖突導(dǎo)致的停頓,大多數(shù)高性能微處理器都將高速緩存分割為指令緩存和數(shù)據(jù)緩存(稱為“哈佛結(jié)構(gòu)”),各自擁有獨立的讀寫總線,提高指令讀取和數(shù)據(jù)讀寫的并行性。在這種結(jié)構(gòu)的處理器中,首先由取指部件提供指令地址,到指令緩存中讀取指令。返回的指令接著進行譯碼、執(zhí)行等操作。如果該指令是發(fā)生跳轉(zhuǎn)的分支指令,則它的跳轉(zhuǎn)目標指令地址根據(jù)分支指令的計算結(jié)果得到,作為后續(xù)指令地址,否則后續(xù)指令地址為當前指令地址連續(xù)的下一條指令地址。指令在執(zhí)行的過程中可能由于操作數(shù)的不可用(數(shù)據(jù)相關(guān))或執(zhí)行部件的不可用(結(jié)構(gòu)相關(guān))而導(dǎo)致流水線停頓。為了避免流水線執(zhí)行段的停頓阻塞流水線前端的取指,大多數(shù)處理器都在流水線的取指段和譯碼段、執(zhí)行段之間增加一個指令隊列,用來保存已經(jīng)從指令緩存中取出但暫時無法流出到后續(xù)流水線的指令,這樣流水線后端的停頓不會阻塞前端的取指,直到指令隊列充滿。但是,當程序中的循環(huán)代碼在這種現(xiàn)有技術(shù)的處理器流水線中執(zhí)行時,循環(huán)代碼將被展開,循環(huán)體中的指令將被重復(fù)地從指令存儲器中讀取,造成資源浪費。特別是在當前多核多線程處理器中,線程之間的交替執(zhí)行可能會競爭高速緩存資源從而發(fā)生替換操作,在執(zhí)行新的一次循環(huán)時原本已經(jīng)讀入指令緩存的指令仍可能發(fā)生失效,需要重新載入,導(dǎo)致性能降低。同時,重復(fù)的讀取相同指令也會增加指令緩存訪問的動態(tài)功耗,在功耗問題日益成為微處理器設(shè)計中首要挑戰(zhàn)的情況下,這是一種功耗的浪費,存在優(yōu)化的空間。在一些處理器設(shè)計的技術(shù)方案中,也有一些技術(shù)方案通過編譯手段標識循環(huán)體的起始位置、在執(zhí)行時將循環(huán)指令保存在特定的存儲器中、后續(xù)的循環(huán)指令從該存儲器中獲得,從而實現(xiàn)指令重用、減少指令緩存的重復(fù)訪問。但是,這種方法需要增加額外的存儲部件,能夠檢測的循環(huán)代碼長度受限于存儲容量,特別是在多線程處理器中,由于每個線程都需要獨立的指令存儲部件,因此帶來的額外面積開銷更大,可擴展性不好。而且,這種方法無法動態(tài)完成循環(huán)檢測,不利于二進制代碼的兼容性。如圖I所示,現(xiàn)有技術(shù)帶指令隊列的流水線前、后端結(jié)構(gòu),包括取指部件、指令隊列、各功能部件等部分。指令隊列之前的取指部件稱為流水線前端,指令隊列之后的各功能部件稱為流水線后端;取指部件主要由程序計數(shù)器(PC)和指令緩存(指令cache)組成。取指部件根據(jù)程序計數(shù)器給出的指令地址到指令緩存中讀取指令,然后根據(jù)寫指針標識的位置存儲到指令隊列中,然后寫指針遞增。同時程序計數(shù)器也遞增,開始讀取順序的下一條指令。如果指令不在當前的指令緩存中,則發(fā)生指令緩存失效,停頓流水線前端,直到指令從更高一級緩存或存儲器中返回。指令隊列判斷當前讀指針所標識的指令是否滿足執(zhí)行條件,如操作數(shù)是否就緒、功能部件是否空閑等。一旦條件滿足,則將該指令發(fā)射到功能部件執(zhí)行,同時讀指針遞增。如果指令是分支指令,則發(fā)射到分支部件執(zhí)行。如果該分支指令執(zhí)行的結(jié)果是跳轉(zhuǎn),則清空流水線和指令隊列中的已有指令,將跳轉(zhuǎn)目標地址傳遞給流水線前端的程序計數(shù)器,從新的指令地址開始重新取指。經(jīng)典的帶指令隊列的流水線不支持循環(huán)檢測功能,指令隊列中的指令在發(fā)射到流水線后端的同時就在隊列中清除,下次再執(zhí)行時重新從指令緩存中讀取。
    技術(shù)實現(xiàn)思路
    本專利技術(shù)要解決的技術(shù)問題是提供一種執(zhí)行效率高、處理性能好、執(zhí)行功耗低、硬件開銷小、支持嵌套循環(huán)、兼容性強、可擴展性好的。 為了解決上述技術(shù)問題,本專利技術(shù)采用的技術(shù)方案為 一種,其實施步驟如下 1)從指令緩存中取指并保存到指令隊列中,將指令隊列中保存的指令發(fā)射到功能部件執(zhí)行,當執(zhí)行指令為分支指令且執(zhí)行結(jié)果為跳轉(zhuǎn)時獲取跳轉(zhuǎn)方向以及跳轉(zhuǎn)目標距離,如果跳轉(zhuǎn)方向為向后跳轉(zhuǎn)且跳轉(zhuǎn)目標距離在指令隊列的長度以內(nèi),則預(yù)測當前執(zhí)行的分支指令與跳轉(zhuǎn)目標地址之間的代碼為程序循環(huán)代碼,并進入下一步; 2)從指令緩存中取出程序循環(huán)代碼對應(yīng)的指令并填充在指令隊列中; 3)將指令緩存旁路,直接從指令隊列中取出指令并發(fā)射到功能部件執(zhí)行,在程序循環(huán)代碼的所有指令執(zhí)行完畢后恢復(fù)指令緩存的工作狀態(tài)。作為本專利技術(shù)上述技術(shù)方案的進一步改進 所述步驟2)的詳細步驟如下 2.I)預(yù)先在指令隊列中增加循環(huán)頭指針,預(yù)先在分支處理部件增加循環(huán)檢測標志寄存器、循環(huán)執(zhí)行標識寄存器和循環(huán)代碼頭指令程序計數(shù)器寄存器,在預(yù)測當前執(zhí)行的分支指令與跳轉(zhuǎn)目標地址之間的代碼為程序循環(huán)代碼后將循環(huán)頭指針指向為指令隊列當前寫指針的位置、將循環(huán)檢測標志寄存器賦值為I、將循環(huán)執(zhí)行標識寄存器賦值為O、將循環(huán)代碼頭指令程序計數(shù)器寄存器賦值為當前分支指令的跳轉(zhuǎn)目標程序計數(shù)器值; 2.2)從指令緩存中取出程序循環(huán)代碼對應(yīng)的指令并存儲在指令隊列中寫指針所指向的位置并順序遞增寫指針的值,當寫指針的下一個位置為循環(huán)頭指針時暫停取指;同時在讀指針指向的指令如果滿足分派條件則分派到功能部件執(zhí)行,保持循環(huán)頭指針不變并順序遞增讀指針直至讀指針的下一個位置為循環(huán)頭指針,此時將循環(huán)檢測標志寄存器賦值為0,繼續(xù)遞增寫指針,跳轉(zhuǎn)步驟I)繼續(xù)取指執(zhí)行;當執(zhí)行指令為分支指令且執(zhí)行結(jié)果為跳轉(zhuǎn)時判斷跳轉(zhuǎn)指令的跳轉(zhuǎn)方向,如果為向前跳轉(zhuǎn)則清空指令隊列和流水線中的指令,將循環(huán)檢測標志寄存器賦值為0,根據(jù)程序計數(shù)器中當前的分支指令跳轉(zhuǎn)目標程序計數(shù)器值繼續(xù)從指令緩存中取指,跳轉(zhuǎn)步驟I)繼續(xù)執(zhí)行,流水線重新回到正常執(zhí)行狀態(tài),否則跳轉(zhuǎn)執(zhí)行下一I K少; 2.3)將分支指令跳轉(zhuǎn)目標程序計數(shù)器值和循環(huán)代碼頭指令程序計數(shù)器寄存器值進行比較,如果分支指令跳轉(zhuǎn)目標程序計數(shù)器值大于循環(huán)代碼頭指令程序計數(shù)器寄存器值,則判定存在嵌套循環(huán)且內(nèi)層循環(huán)代碼已在指令隊列中,清空已發(fā)射流水線中的指令,然后根據(jù)分支指令跳轉(zhuǎn)目標程序計數(shù)器值和循環(huán)代碼頭指令程序計數(shù)器寄存器值的差值回退讀指針,重新分派指令執(zhí)行;如果分支指令跳轉(zhuǎn)目標程序計數(shù)器值小于循環(huán)代碼頭指令程序計數(shù)器寄存器值,則清空指令隊列和流水線中的指令,將循環(huán)檢測標志寄存器賦值為O,根據(jù)程序計數(shù)器中當前的分支指令跳轉(zhuǎn)目標程序計數(shù)器值繼續(xù)從指令緩存中取指,跳轉(zhuǎn)步驟O繼續(xù)執(zhí)行,流水線重新回到正常執(zhí)行狀態(tài);如果分支指令跳轉(zhuǎn)目標程序計數(shù)器值等于循環(huán)代碼頭指令程序計數(shù)器寄存器值則判定完成了循環(huán)代碼的填充,清空已發(fā)射流水線中的指令,將指令隊列的讀指針賦值為循環(huán)頭指針、將循環(huán)檢測標志寄存器賦值為O、將循環(huán)執(zhí)行標識寄存器賦值為1,進入后續(xù)的將指令緩存旁路的操作。 所述步驟3)的詳細執(zhí)行步驟如下 3.I)將指令緩存芳路,從指令隊列中取指并發(fā)射到功能部件執(zhí)行,同時將讀指針逐步遞增,當執(zhí)行指令為分支指令且執(zhí)行結(jié)果為跳轉(zhuǎn)時判斷跳轉(zhuǎn)指令的跳轉(zhuǎn)方向,如果為本文檔來自技高網(wǎng)
    ...

    【技術(shù)保護點】
    一種基于指令隊列的程序循環(huán)代碼動態(tài)檢測及執(zhí)行方法,其特征在于實施步驟如下:1)從指令緩存中取指并保存到指令隊列中,將指令隊列中保存的指令發(fā)射到功能部件執(zhí)行,當執(zhí)行指令為分支指令且執(zhí)行結(jié)果為跳轉(zhuǎn)時獲取跳轉(zhuǎn)方向以及跳轉(zhuǎn)目標距離,如果跳轉(zhuǎn)方向為向后跳轉(zhuǎn)且跳轉(zhuǎn)目標距離在指令隊列的長度以內(nèi),則預(yù)測當前執(zhí)行的分支指令與跳轉(zhuǎn)目標地址之間的代碼為程序循環(huán)代碼,并進入下一步;2)從指令緩存中取出程序循環(huán)代碼對應(yīng)的指令并填充在指令隊列中;3)將指令緩存旁路,直接從指令隊列中取出指令并發(fā)射到功能部件執(zhí)行,在程序循環(huán)代碼的所有指令執(zhí)行完畢后恢復(fù)指令緩存的工作狀態(tài)。

    【技術(shù)特征摘要】

    【專利技術(shù)屬性】
    技術(shù)研發(fā)人員:張承義高軍孫彩霞艾飛虎郭維孫曜王永文竇強倪曉強隋兵才陳微趙天磊王蕾黃立波
    申請(專利權(quán))人:中國人民解放軍國防科學(xué)技術(shù)大學(xué)
    類型:發(fā)明
    國別省市:

    網(wǎng)友詢問留言 已有0條評論
    • 還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會獲得科技券。

    1
    主站蜘蛛池模板: 亚洲色在线无码国产精品不卡| 无码专区—VA亚洲V天堂| 无码人妻精品中文字幕免费东京热 | 中文字幕日产无码| 免费A级毛片无码A∨男男| 亚洲AV无码不卡在线播放| 无码人妻丰满熟妇片毛片| 熟妇人妻系列aⅴ无码专区友真希| 99精品一区二区三区无码吞精 | 亚洲av无码一区二区三区乱子伦 | 亚洲VA中文字幕无码一二三区 | 亚洲精品无码AV人在线播放 | 日韩精品人妻系列无码专区 | 国产日韩AV免费无码一区二区| 久久亚洲精品无码aⅴ大香| 成人无码A区在线观看视频| 国产精品白浆无码流出| 亚洲中文字幕无码mv| 91久久九九无码成人网站| 亚洲国产AV无码专区亚洲AV | 50岁人妻丰满熟妇αv无码区| 日韩av无码中文无码电影| 性色av无码免费一区二区三区| 亚洲熟妇无码一区二区三区 | 国产成人无码精品久久久久免费| 91久久精品无码一区二区毛片 | 性无码专区一色吊丝中文字幕| 亚洲AV色吊丝无码| 久久无码AV一区二区三区| 无码av最新无码av专区| 久久亚洲精品无码| 少妇精品无码一区二区三区| 无码人妻黑人中文字幕| 99久久亚洲精品无码毛片| 日韩精品无码一区二区三区免费| 日韩精品无码中文字幕一区二区| 无码精品人妻一区二区三区中| 亚洲av无码一区二区三区观看| 亚洲av无码兔费综合| 日韩人妻无码免费视频一区二区三区| 日韩AV片无码一区二区不卡|