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

一種優(yōu)化實時任務(wù)wcet的指令預(yù)取內(nèi)容選取方法

文檔序號:6401547閱讀:197來源:國知局
專利名稱:一種優(yōu)化實時任務(wù)wcet的指令預(yù)取內(nèi)容選取方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種指令預(yù)取內(nèi)容的選取方法,尤其是一種面向?qū)崟r系統(tǒng)中實時應(yīng)用的、優(yōu)化最壞執(zhí)行時間(WCET:fforst-Case Execution Time)分析精度的指令預(yù)取內(nèi)容的選取方法,屬于計算機系統(tǒng)結(jié)構(gòu)與實時嵌入式系統(tǒng)領(lǐng)域。
背景技術(shù)
與通用計算機系統(tǒng)主要關(guān)注平均執(zhí)行情況下的性能不同,實時系統(tǒng)更為關(guān)注最壞執(zhí)行情況下的系統(tǒng)性能及任務(wù)執(zhí)行時間。錯過任務(wù)的執(zhí)行期限,通常會導(dǎo)致實時系統(tǒng),特別是硬實時系統(tǒng)故障,引起不良后果甚至災(zāi)難性事故,比如:撞車事故、核泄漏等。準(zhǔn)確地預(yù)測系統(tǒng)在最壞執(zhí)行情況下的執(zhí)行時間對于實時系統(tǒng)的分析及設(shè)計意義重大。實時系統(tǒng)中實時應(yīng)用的最壞執(zhí)行時間(WCET)分析對于實時系統(tǒng)的可調(diào)度分析至關(guān)重要。WCET分析的精度及難易程度很大程度上依賴于底層處理器模型的復(fù)雜性。由于高速緩存訪問時間的不確定性,運行于現(xiàn)代處理器結(jié)構(gòu)之上的實時應(yīng)用的WCET分析極為困難。雖然高速緩存會帶來執(zhí)行時間的不確定性,但是在實時系統(tǒng),特別是高性能實時系統(tǒng)中使用高速緩存,特別是指令高速緩存已經(jīng)成為一種趨勢。因此,分析指令高速緩存對于實時應(yīng)用WCET分析的影響對于精確的WCET評估必不可少。指令高速緩存訪問時間的不確定性源于高速緩存訪問的命中與缺失導(dǎo)致的訪問時間差異。因此,準(zhǔn)確預(yù)測指令訪問的命中與缺失情況對于精確的WCET分析至關(guān)重要。在常見的WCET分析技術(shù)中,程序基本塊通常作為一個基本的時間分析單位用于實時應(yīng)用WCET的評估。一個程序基本塊是具有單一程序執(zhí)行入口和出口的一段程序指令序列,以下簡稱基本塊?;緣K的最后一條指令通常是跳轉(zhuǎn)指令。由基本塊的定義可知基本塊具有如下性質(zhì):1.基本塊作為一個整體執(zhí)行,即:一旦進入基本塊,基本塊內(nèi)的所有指令都將被執(zhí)行;2.基本塊內(nèi)的指令按照指令在程序代碼中的靜態(tài)順序執(zhí)行。由上述性質(zhì)可知,基本塊內(nèi)的指令具有相同的執(zhí)行次數(shù),如果能夠同時保證基本塊內(nèi)的指令具有相同的命中與缺失情況(“冷啟動”除外),WCET分析中原本的指令級別的命中與缺失判斷即可簡化為應(yīng)用內(nèi)部基本塊的命中與缺失情況的判斷,從而大大簡化程序WCET分析。指令預(yù)取作為一項常見的用于改進指令高速緩存訪問性能的技術(shù),通常服務(wù)于通用計算機系統(tǒng),用以改善平均執(zhí)行情況下的Cache訪問命中率。當(dāng)前,絕大部分的指令預(yù)取技術(shù)的提出遵從“加速常見情況”的原則,沒有考慮實時系統(tǒng)中的實時應(yīng)用的特殊需求,特別是WCET分析的需求?,F(xiàn)有的WCET分析方法大多從應(yīng)用角度入手,針對應(yīng)用的特性,特別是存儲訪問特性設(shè)計專門的分析方法。此類方法雖然針對某一類應(yīng)用可能有效,但是不具有普適性,一旦應(yīng)用類型改變,方法的有效性將無法保障。因此,從系統(tǒng)結(jié)構(gòu)本身出發(fā),在系統(tǒng)結(jié)構(gòu)設(shè)計之初即考慮實時應(yīng)用WCET分析需求可能是改善實時應(yīng)用WCET分析精度的突破口。設(shè)計服務(wù)于WCET分析的指令預(yù)取技術(shù)對于改善指令高速緩存訪問的確定性,提升WCET精度具有重要的研究價值。同時,由于處理器片上硬件資源極為寶貴,因此,必須精心設(shè)計預(yù)取機制,以便對應(yīng)的硬件實現(xiàn)代價小。

發(fā)明內(nèi)容
本發(fā)明提出了一種優(yōu)化實時任務(wù)WCET的指令預(yù)取內(nèi)容選取方法,該方法服務(wù)于一種面向?qū)崟r任務(wù)的基于程序基本塊的指令預(yù)取(BBIP:Basic_Block based InstructionPrefetching)方法。本發(fā)明提出的一種優(yōu)化實時任務(wù)WCET的指令預(yù)取內(nèi)容選取方法,在現(xiàn)有指令高速緩存硬件中添加指令信息表(BBIT:Basic-Block Information Table)的硬件結(jié)構(gòu),指令信息表用于存儲從靜態(tài)程序基本塊集合中選取的指定數(shù)量的基本塊信息。BBIT中保存的程序基本塊信息,主要是基本塊的起始塊地址以及塊長度。指令預(yù)取單元根據(jù)查找BBIT返回的信息對基本塊覆蓋的存儲塊執(zhí)行預(yù)取。本發(fā)明提出的優(yōu)化實時任務(wù)WCET的指令預(yù)取內(nèi)容選取方法,具體步驟如下:步驟一:硬件配置初始化,具體是,對影響WCET分析的微結(jié)構(gòu)的參數(shù)進行設(shè)置,影響WCET分析的微結(jié)構(gòu)包括高速緩存、流水線及分支預(yù)測器等;步驟二:通過編譯器或者靜態(tài)程序特征分析工具收集靜態(tài)程序基本塊集合;步驟三:從靜態(tài)程序基本塊集合中剔除只覆蓋一個存儲塊的基本塊;步驟四:使用WCET分析工具對任務(wù)執(zhí)行WCET靜態(tài)分析,收集最壞執(zhí)行情況下的程序基本塊的執(zhí)行頻度,并將每個程序基本塊表示為一個三元組:(起始塊地址,塊長度,執(zhí)行頻度);步驟五:按照基本塊的執(zhí)行頻度從高到低的順序,對靜態(tài)程序基本塊集合中的基本塊進行排序,得到一個有序的基本塊集合;對于執(zhí)行頻度相同的基本塊,依照塊長度從大到小的順序排列;執(zhí)行頻度和塊長度均一致的基本塊的排列順序隨機;步驟六:設(shè)BBIT中包含η個表項目數(shù),將有序基本塊集合中的前η個基本塊的信息存儲到BBIT中?;诒景l(fā)明提供的指令預(yù)取內(nèi)容選取方法,進行指令高速緩存訪問的方法包括如下步驟:步驟1:程序運行初始化;具體是,設(shè)置程序運行時環(huán)境,包括寄存器初始化或恢復(fù),程序計數(shù)器PC初始化或恢復(fù)等;步驟2:從靜態(tài)程序基本塊集合中選取指定數(shù)量的基本塊信息填入BBIT中;步驟3 =CPU執(zhí)行單元依照程序計數(shù)器PC值,計算下一條指令的有效地址,該地址作為目標(biāo)地址;步驟4:將目標(biāo)地址按照由高位到低位的順序劃分為三個字段:tag (標(biāo)簽)、set(組號)及offset (組內(nèi)偏移);步驟5:目標(biāo)地址匹配與基本塊信息查找;根據(jù)目標(biāo)地址的set及tag字段的信息,從指令高速緩存中查找目標(biāo)地址對應(yīng)的高速緩存塊,同時查找BBIT ;若目標(biāo)地址在指令高速緩存中未命中,將預(yù)取標(biāo)記PF置位;若在BBIT中匹配到相應(yīng)的地址,輸出相應(yīng)的起始塊地址和塊長度,否則BBIT輸出不合法的起始塊地址和塊長度“0,O” ;
步驟6:預(yù)取單元檢查預(yù)取標(biāo)記PF及BBIT的輸出,如果PF被置位且BBIT的輸出的起始塊地址以及塊長度合法,則根據(jù)起始塊地址以及塊長度執(zhí)行指令預(yù)??;否則,不執(zhí)行指令預(yù)取操作。所述的步驟5包括兩個并行的子步驟5.1和5.2:步驟5.1:依據(jù)目標(biāo)地址的set字段定位目標(biāo)地址所映射的高速緩存組,將該高速緩存組的各個高速緩存塊的tag字段與目標(biāo)地址的tag字段逐一進行比較,若找到匹配的結(jié)果,本次高速緩存訪問命中,根據(jù)目標(biāo)地址的offset字段從匹配的高速緩存塊中讀出相應(yīng)的指令字并返回給指令執(zhí)行單元;若未找到匹配的結(jié)果,本次高速緩存訪問缺失,此時,高速緩存硬件單元從下一層指令存儲中調(diào)入相應(yīng)的指令存儲塊,替換掉所映射的高速緩存組中最舊的高速緩存塊,并依據(jù)offset字段取出相應(yīng)的指令字返回給指令執(zhí)行單元,同時,高速緩存硬件單元將預(yù)取標(biāo)記PF置位。步驟5.2:將目標(biāo)地址的tag和set字段組成塊地址(BA:block address),將塊地址作為關(guān)鍵字在BBIT中進行檢索,如果找到相應(yīng)表項,輸出基本塊的起始地址及塊長度;否則,非法的起始塊地址和塊長度“0,O”。相比現(xiàn)有技術(shù),本發(fā)明的指令預(yù)取內(nèi)容選取方法具有以下優(yōu)點和積極效果:(I)有效降低硬件設(shè)計開銷;由于實時應(yīng)用通常具有較少的最壞情況執(zhí)行“熱點”,因此,通過選取少數(shù)“熱點”基本塊,并對應(yīng)的基本塊信息存儲在BBIT中,即可實現(xiàn)較優(yōu)的高速緩存訪問性能及WCET分析精度,從而有效降低BBIT的大小,節(jié)省相應(yīng)的硬件開銷。(2)實現(xiàn)簡單、直接;與其它復(fù)雜的預(yù)取內(nèi)容選取算法(如:遺傳算法)相比,本發(fā)明基于貪婪算法進行基本塊預(yù)取,實現(xiàn)方法簡單直接,選取的內(nèi)容的有效性與采用其它復(fù)雜算法選取時的有效性相近。(3)大大提升WCET分析精度;本發(fā)明的指令預(yù)取內(nèi)容選取方法專門針對實時任務(wù)的WCET分析,由于BBIT中保存的都是最壞執(zhí)行情況下的執(zhí)行“熱點”基本塊,因此,對這些基本塊執(zhí)行預(yù)取,能夠有效避免最壞執(zhí)行情況下的指令高速緩存訪問缺失,降低WCET評估值,滿足實時任務(wù)的需求。


圖1是支持本發(fā)明的指令預(yù)取內(nèi)容選取方法的指令高速緩存硬件結(jié)構(gòu)示意圖;圖2是本發(fā)明的指令預(yù)取內(nèi)容選取方法的執(zhí)行步驟流程圖;圖3是基于本發(fā)明的指令預(yù)取內(nèi)容選取方法的指令高速緩存訪問過程的流程示意圖。
具體實施例方式下面結(jié)合附圖對本發(fā)明進行進一步的詳細說明。通過足夠詳細的描述這些實施示例,使得本領(lǐng)域技術(shù)人員能夠?qū)嵺`本發(fā)明。在不脫離本發(fā)明的主旨和范圍的情況下,可以對實施做出邏輯的、實現(xiàn)的和其他的改變。本發(fā)明提供了一種優(yōu)化實時任務(wù)WCET的指令預(yù)取內(nèi)容選取方法,面向?qū)崟r應(yīng)用系統(tǒng),基于程序基本塊進行指令預(yù)取。本發(fā)明方法中,為了實現(xiàn)程序基本塊級別的指令預(yù)取,在現(xiàn)有指令高速緩存硬件中添加一個稱為指令信息表(BBIT)的硬件結(jié)構(gòu)。BBIT中保存程序基本塊信息,主要是基本塊的起始塊地址以及塊長度。指令預(yù)取單元根據(jù)查找BBIT返回的信息對基本塊覆蓋的存儲塊執(zhí)行預(yù)取。由于片上資源有限,將應(yīng)用程序的基本塊全部存入BBIT需要耗費大量的片上資源,代價昂貴。另一方面,不同實時應(yīng)用程序的基本塊數(shù)量差異巨大,預(yù)留過多的硬件資源用于基本塊存儲可能導(dǎo)致片上資源的極大浪費。因此,從程序靜態(tài)基本塊集合中選取指定數(shù)量的基本塊存入BBIT對于基于基本塊的指令預(yù)取機制的實現(xiàn)至關(guān)重要。在支持BBIP的系統(tǒng)中,指令高速緩存單元在進行指令塊匹配查找過程的同時,查找BBIT以定位當(dāng)前指令所在的程序基本塊,如果找到相應(yīng)的基本塊信息且指令高速緩存訪問缺失,則執(zhí)行當(dāng)前基本塊的指令預(yù)取。如圖1所示,支持本發(fā)明的指令預(yù)取內(nèi)容選取方法的指令高速緩存硬件結(jié)構(gòu)包括如下幾個部分:存儲高速緩存塊tag (標(biāo)簽)的表結(jié)構(gòu)1、存儲高速緩存塊內(nèi)容的硬件結(jié)構(gòu)
2、存儲基本塊信息的BBIT表結(jié)構(gòu)3、用于tag匹配查找的比較器(Comparator)4、用于內(nèi)容選取的多路選擇器(MUX) 5、用于BBIT表結(jié)構(gòu)基本塊選擇的選擇器6、由多路選擇器5命中與缺失結(jié)構(gòu)作為輸入的選通開關(guān)(用預(yù)取標(biāo)志PF來標(biāo)記是否選通)7以及控制基本塊預(yù)取的多路開關(guān)8。其中tag表結(jié)構(gòu)I用于存儲高速緩存塊的tag字段,服務(wù)于高速緩存訪問命中與缺失情況判斷;BBIT表結(jié)構(gòu)3的每一項包含一個程序基本塊的起始塊地址(BBA)及塊長度(BBS)。進入指令高速緩存的取指地址依照指令高速緩存的配置被劃分為三個字段:標(biāo)簽(tag)、組號(set)及塊內(nèi)偏移(offset)。為了判斷目標(biāo)指令當(dāng)前是否位于高速緩存中,目標(biāo)地址的set字段被分別輸入tag表結(jié)構(gòu)I及數(shù)據(jù)存儲結(jié)構(gòu)2以定位目標(biāo)地址所映射的高速緩存組,所定位的tag表結(jié)構(gòu)中的高速緩存組的各個合法(由tag表結(jié)構(gòu)中的V字段標(biāo)識)高速緩存塊的tag字段被輸入比較器4與目標(biāo)地址的tag進行匹配比較,其結(jié)果輸入多路選擇器5,由set字段所定位的數(shù)據(jù)存儲結(jié)構(gòu)2中的高速緩存組的各個數(shù)據(jù)存儲塊作為數(shù)據(jù)輸入多路選擇器5,如果比較器4輸出結(jié)果解釋為命中(hit),則多路選擇器5以比較器4輸出作為選擇子從其輸入的各個數(shù)據(jù)存儲塊中選擇一塊配合offset字段輸出目標(biāo)指令字;當(dāng)比較器4輸出解釋為缺失(miss)時,選通開關(guān)7選通,預(yù)取標(biāo)記PF作為指令預(yù)取多路開關(guān)8的一路輸入;多路開關(guān)8執(zhí)行邏輯與操作,即只有當(dāng)開關(guān)PF選通,且選擇器6輸入合法的BBA及BBS時,多路開關(guān)8才選通,從而控制相應(yīng)的預(yù)取單元執(zhí)行指令塊的預(yù)取。目標(biāo)地址的tag及set字段作為多路選擇器5的輸入與BBIT表結(jié)構(gòu)3的各表項的BBA字段分別比較,如果匹配,相應(yīng)表項的BBA及BBS輸入多路開關(guān)8,否則輸入0,O給多路開關(guān)8。當(dāng)多路開關(guān)8輸出高電平(對應(yīng)BBA、BBS有效,PF置位),預(yù)取單元執(zhí)行預(yù)取。BBIT內(nèi)容選取過程如下,在系統(tǒng)運行之前,使用靜態(tài)程序流程分析工具(比如編譯器)收集程序包含的靜態(tài)基本塊集合,結(jié)合底層硬件信息(主要是高速緩存配置信息)得到基本塊的起始塊地址以及塊長度。由于BBIP僅僅對大于一個存儲塊的程序基本塊執(zhí)行預(yù)取,因此,在預(yù)取內(nèi)容選取過程中,首先剔除塊長度等于一個程序塊的程序基本塊,然后基于一定的算法從剩余集合中選取特定數(shù)量的基本塊,將其起始塊地址及塊長度填充到BBIT中,以保證較優(yōu)的預(yù)取性能。由于本發(fā)明提出的方法主要目的是通過選取較優(yōu)的預(yù)取內(nèi)容以服務(wù)于實時應(yīng)用的WCET分析,優(yōu)化指令高速緩存在最壞執(zhí)行情況下的性能,因此,必須保證選取的基本塊在最壞執(zhí)行情況下具有較高的執(zhí)行次數(shù)。本發(fā)明提出的優(yōu)化實時任務(wù)WCET的指令預(yù)取內(nèi)容選取方法,實現(xiàn)最壞執(zhí)行情況下的“熱點”基本塊的選取;基于WCET靜態(tài)分析的“熱點”基本塊的選擇可以采用貪婪算法或者更為高級的方法,例如數(shù)據(jù)挖掘中使用的遺傳算法等。在本發(fā)明中,使用基于貪婪算法的預(yù)取內(nèi)容選取方法實現(xiàn)基本塊的選取,該方法的特點是實現(xiàn)簡單直觀,性能良好?;诒景l(fā)明提供的指令預(yù)取內(nèi)容選取方法,還提供了支持基于程序基本塊的、面向?qū)崟r應(yīng)用的指令高速緩存訪問方法。本發(fā)明所涉及的高速緩存硬件結(jié)構(gòu)BBIT存儲最壞執(zhí)行情況下的程序基本塊信息,如圖2所示,本發(fā)明提出的優(yōu)化實時任務(wù)WCET的指令預(yù)取內(nèi)容選取方法包括如下執(zhí)行步驟:步驟一:硬件配置初始化。由于底層硬件配置直接決定了程序WCET評估值,在進行靜態(tài)WCET分析前,必須對底層結(jié)構(gòu),如流水線結(jié)構(gòu)、分支預(yù)測結(jié)構(gòu)、高速緩存結(jié)構(gòu)等,進行配置初始化。步驟二:基本塊收集。通過編譯器或者靜態(tài)程序特征分析工具,如:靜態(tài)WCET分析工具、模擬器等,收集程序的靜態(tài)程序基本塊集合BB_SET。步驟三:基本塊剔除。由于BBIP僅能夠?qū)﹂L度大于一個存儲塊的基本塊執(zhí)行預(yù)取,因此,在BBIT中存儲長度為一個存儲塊的基本塊不能帶來任何預(yù)取收益。因此,結(jié)合指令高速緩存的配置,將僅覆蓋一個存儲塊的基本塊從程序基本塊集合BB_SET中剔除。假設(shè)程序基本塊包含b條指令,每條指令由k個字節(jié)構(gòu)成,指令Cache的塊長度為bs個字節(jié),則基本塊包含的存儲塊個數(shù)為:(bXk-l+bs)/bs。步驟四:基本塊執(zhí)行頻度收集。在特定的硬件配置下,對目標(biāo)任務(wù)程序執(zhí)行靜態(tài)WCET分析,收集程序最壞執(zhí)行路徑上的基本塊及其執(zhí)行頻度。執(zhí)行完此步驟,程序代碼中包含的每個程序基本塊被表示為一個三元組:(起始塊地址,塊長度,執(zhí)行頻度)。步驟五:基本塊集合排序。為了適應(yīng)貪婪算法的要求,對基本塊集合進行排序操作。為了優(yōu)化WCET分析精度,保證BBIT保存“最優(yōu)”的基本塊,根據(jù)基本塊的執(zhí)行頻度從高到低的順序?qū)Τ绦蚧緣K集合BB_SET進行排序,形成新的有序列表BB_0SET。對于具有相同執(zhí)行頻度的程序基本塊,按照塊長度從大到小的順序排列;執(zhí)行頻度和塊長度均一致的基本塊的排列順序隨機。步驟六:基本塊選取。依據(jù)BBIT容量,從BB_0SET中選取相應(yīng)數(shù)目的基本塊,按照其起始塊地址從小到大的順序?qū)⑵淦鹗級K地址及塊長度填入BBIT中對應(yīng)的表項位置。例如,BBIT包含100個表項,從BB_0SET中選取前100項,依次按序填入BBIT對應(yīng)表項,對于靜態(tài)程序基本塊集合容量小于100的程序,BBIT剩余表項清零?;诒景l(fā)明提出的優(yōu)化實時任務(wù)WCET的指令預(yù)取內(nèi)容選取方法,一種面向?qū)崟r應(yīng)用的指令高速緩存訪問方法,如圖3所示,包含如下步驟:步驟1:程序運行初始化。實時應(yīng)用開始投入運行時,設(shè)置程序運行時環(huán)境,包括寄存器初始化或恢復(fù),程序計數(shù)器PC初始化或恢復(fù)等。步驟2:采用本發(fā)明提供的指令預(yù)取內(nèi)容選取方法,從靜態(tài)程序基本塊集合中選取指定數(shù)量的基本塊,將選取的基本塊的起始塊地址和塊長度填入BBIT中。根據(jù)圖2所示方法,將運行的程序“熱點”基本塊的信息填入BBIT硬件列表結(jié)構(gòu)中。BBIT列表包含依據(jù)基本塊起始塊地址有序的程序基本塊信息。每個BBIT列表選項對應(yīng)一個二元基本塊信息項:(基本塊起始塊地址,塊長度)。
步驟3:取指單元訪問指令高速緩存取指。系統(tǒng)運行過程中,CPU執(zhí)行單元依照程序計數(shù)器PC值,計算下一條指令的有效地址,執(zhí)行取指操作。并將該地址作為目標(biāo)地址(target address)發(fā)往指令高速緩存,讀取相應(yīng)地址處的指令字。步驟4:指令地址分割。為了從指令高速緩存中查找相應(yīng)的指令數(shù)據(jù)塊,依照指令高速緩存的配置,目標(biāo)地址按照由高位到低位的順序被劃分為三個字段:tag (標(biāo)簽)字段、set (組號)字段及offset (組內(nèi)偏移)字段。其中,tag用于高速緩存塊的查找匹配,set用于定位目標(biāo)地址映射到的高速緩存目標(biāo)組,offset用于從選定的高速緩存塊中提取目標(biāo)指令字。步驟5:目標(biāo)地址匹配及基本塊信息查找。根據(jù)地址解析階段的set及tag信息從指令高速緩存中查找目標(biāo)地址對應(yīng)的存儲塊,同時查找BBIT返回基本塊起始地址及塊長度以服務(wù)于后續(xù)可選的指令預(yù)取過程。具體而言,此步驟的執(zhí)行過程分為兩個并行執(zhí)行的子過程:tag匹配查找子過程5.1及BBIT列表查找子過程5.2。子過程5.1:首先,依據(jù)set字段定位目標(biāo)地址所映射的高速緩存組(如下稱為“目標(biāo)組”);然后將步驟4所得目標(biāo)地址的tag字段與目標(biāo)組內(nèi)的各高速緩存塊的tag字段進行比較,如果查找到匹配的結(jié)果,則本次高速緩存訪問命中,使用步驟4的目標(biāo)地址的offset字段從匹配的高速緩存塊中取出相應(yīng)的指令字返回給指令執(zhí)行單元,本次取指過程結(jié)束。若未找到匹配的結(jié)果,本次高速緩存訪問缺失,從下一層指令存儲中調(diào)入相應(yīng)的指令存儲塊,替換掉指令高速緩存中目標(biāo)組內(nèi)最舊的高速緩存塊,同時根據(jù)比較器4輸出的高低電平(訪問命中、缺失與電平高低設(shè)置的關(guān)系由比較器4的具體實現(xiàn)決定)將預(yù)取標(biāo)記PF (對應(yīng)于圖1中的選通開關(guān)7)置位,使用步驟4的offset字段從匹配的高速緩存塊中取出相應(yīng)的指令字返回給指令執(zhí)行單元,本次取指過程結(jié)束。圖1中,tag表結(jié)構(gòu)I中每個高速緩存組僅包括一個高速緩存塊。每個高速緩存塊對應(yīng)一個V字段和一個tag標(biāo)志。子過程5.2:首先,依照指令高速緩存的硬件配置從目標(biāo)地址中提取出塊地址。塊地址的生成方法是將目標(biāo)地址的offset字段置為0,將目標(biāo)地址的tag和set字段組成塊地址。然后,使用塊地址作為關(guān)鍵字對BBIT列表進行查找,如果找到相應(yīng)的BBIT項,取出對應(yīng)的基本塊起始塊地址BBS及塊長度BBA并輸出;否則,在BBIT中找不到相應(yīng)的基本塊信息,返回基本塊起始地址及塊長度均為非法的O并輸出。同時查找“基本塊信息表”,并的信息執(zhí)行必要的基本塊后續(xù)指令塊的預(yù)取裝入。步驟6:執(zhí)行基本塊預(yù)取。高速緩存硬件預(yù)取單元檢查預(yù)取標(biāo)記PF及子過程5.2查找BBIT返回的基本塊信息(BBA及BBS),如果PF被置位且BBS及BBA合法(對應(yīng)圖1的多路開關(guān)8選通),執(zhí)行相應(yīng)的指令數(shù)據(jù)塊預(yù)取操作,將基本塊對應(yīng)的后續(xù)存儲塊預(yù)先調(diào)入指令高速緩存,完成指令預(yù)取。預(yù)取完成后,PF復(fù)位。執(zhí)行基本塊的預(yù)取,避免了基本塊內(nèi)后續(xù)指令訪問的缺失,達到優(yōu)化高速緩存訪問性能的目的。同時,指令訪問缺失情況判斷的簡化使得程序WCET分析的難度下降,精度提升。如果預(yù)取單元檢查到BBIT返回的基本塊信息為不合法的“0,0”,則不執(zhí)行預(yù)取操作,若此時PF被置位,高速緩存訪問缺失,則從下一層存儲中調(diào)入相應(yīng)的指令存儲塊,替換掉指令高速緩存中目標(biāo)組內(nèi)最舊的高速緩存塊,根據(jù)目標(biāo)地址的offset從高速緩存塊中取出相應(yīng)的指令字返回,本次取指過程結(jié)束。
權(quán)利要求
1.一種優(yōu)化實時任務(wù)WCET (最壞執(zhí)行時間)的指令預(yù)取內(nèi)容選取方法,在現(xiàn)有指令高速緩存硬件中添加指令信息表(BBIT)的硬件結(jié)構(gòu),BBIT用于存儲從靜態(tài)程序基本塊集合中采用所述的指令預(yù)取內(nèi)容選取方法選取指定數(shù)量的基本塊信息,其特征在于,所述的基本塊信息包括基本塊的起始塊地址以及塊長度;所述的指令預(yù)取內(nèi)容選取方法包括如下步驟: 步驟一:硬件配置初始化,對影響WCET分析的微結(jié)構(gòu)的參數(shù)進行設(shè)置,影響WCET分析的微結(jié)構(gòu)包括高速緩存、流水線及分支預(yù)測器; 步驟二:通過編譯器或者靜態(tài)程序特征分析工具收集靜態(tài)程序基本塊集合; 步驟三:從靜態(tài)程序基本塊集合中剔除只覆蓋一個存儲塊的基本塊; 步驟四:使用WCET分析工具對任務(wù)執(zhí)行WCET靜態(tài)分析,收集最壞執(zhí)行情況下的程序基本塊的執(zhí)行頻度,并將每個程序基本塊表示為一個三元組:(起始塊地址,塊長度,執(zhí)行頻度); 步驟五:按照基本塊的執(zhí)行頻度從高到低的順序,對靜態(tài)程序基本塊集合中的基本塊進行排序;對于執(zhí)行頻度 相同的基本塊,依照塊長度從大到小的順序排列;執(zhí)行頻度和塊長度均一致的基本塊的排列順序隨機; 步驟六JiSBBIT中包含η個表項目數(shù),將有序基本塊集合中的前η個基本塊的信息存儲到BBIT中。
2.基于權(quán)利要求1所述的指令預(yù)取內(nèi)容選取方法進行指令高速緩存訪問的方法,其特征在于,包括如下步驟: 步驟1:程序運行初始化;具體是,設(shè)置程序運行時環(huán)境,包括寄存器初始化或恢復(fù),程序計數(shù)器PC初始化或恢復(fù); 步驟2:采用優(yōu)化實時任務(wù)WCET的指令預(yù)取內(nèi)容選取方法,從靜態(tài)程序基本塊集合中選取指定數(shù)量的基本塊信息填入BBIT中; 步驟3 =CPU執(zhí)行單元依照程序計數(shù)器PC值,計算下一條指令的有效地址,該地址作為目標(biāo)地址; 步驟4:將目標(biāo)地址按照由高位到低位的順序劃分為三個字段:tag (標(biāo)簽)、set (組號)及offset (組內(nèi)偏移); 步驟5:根據(jù)目標(biāo)地址的set及tag字段的信息,從指令高速緩存中查找目標(biāo)地址對應(yīng)的高速緩存塊,同時也查找BBIT ;若目標(biāo)地址在指令高速緩存中未命中,設(shè)置預(yù)取標(biāo)記PF ;若在BBIT中匹配到相應(yīng)的地址,BBIT輸出相應(yīng)的起始塊地址和塊長度,否則BBIT輸出非法的起始塊地址和塊長度“0,O” ; 步驟6:預(yù)取單元檢查預(yù)取標(biāo)記PF及BBIT的輸出,如果PF被設(shè)置且BBIT輸出的起始塊地址以及塊長度合法,根據(jù)起始塊地址以及塊長度執(zhí)行指令預(yù)取,在預(yù)取完成后,PF復(fù)位;否則,不執(zhí)行指令預(yù)取操作。
3.根據(jù)權(quán)利要求2所述的進行指令高速緩存訪問的方法,其特征在于,所述的步驟5,包括兩個并行的子步驟5.1和5.2: 步驟5.1:依據(jù)set字段定位目標(biāo)地址所映射的高速緩存組,將該高速緩存組中各高速緩存塊的tag字段與目標(biāo)地址的tag字段進行比較,如果找到匹配的結(jié)果,則本次高速緩存訪問命中,根據(jù)目標(biāo)地址的offset字段從匹配的高速緩存塊中取出相應(yīng)的指令字返回給指令執(zhí)行單元;若未找到匹配的結(jié)果,本次高速緩存訪問缺失,從下一層指令存儲中調(diào)入相應(yīng)的指令存儲塊,替換掉所映射的高速緩存組中最舊的高速緩存塊,并根據(jù)目標(biāo)地址的offset字段取出相應(yīng)的指令字返回給指令執(zhí)行單元,同時將預(yù)取標(biāo)記PF置位; 步驟5.2:將目標(biāo)地址的tag和set字段組成塊地址,將塊地址作為關(guān)鍵字在BBIT中進行檢索,如果找到相應(yīng)表項,輸出基本塊的起始地址及塊長度;否則,輸出非法的起始塊地址和塊長 度“0,0”。
全文摘要
本發(fā)明提出了一種優(yōu)化實時任務(wù)WCET的指令預(yù)取內(nèi)容選取方法,在現(xiàn)有指令高速緩存硬件中添加指令信息表(BBIT)的硬件結(jié)構(gòu)。本發(fā)明方法首先對硬件配置進行初始化,通過編譯器或者靜態(tài)程序特征分析工具收集靜態(tài)程序基本塊集合,然后剔除只覆蓋一個存儲塊的基本塊,并收集最壞執(zhí)行情況下的各程序基本塊的執(zhí)行頻度,按照執(zhí)行頻度對程序基本塊排序,最后按順選取指定數(shù)量的程序基本塊的信息存儲到BBIT中。在指令高速緩存訪問過程中,同時查找指令高速緩存和BBIT,能夠有效避免最壞執(zhí)行情況下的指令高速緩存訪問缺失,滿足實時任務(wù)的需求;同時,本發(fā)明方法能有效降低硬件設(shè)計開銷,實現(xiàn)方法簡單、直接。
文檔編號G06F9/30GK103207772SQ20131011803
公開日2013年7月17日 申請日期2013年4月7日 優(yōu)先權(quán)日2013年4月7日
發(fā)明者萬寒, 倪璠, 龍翔, 高小鵬, 姜博 申請人:北京航空航天大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
洪湖市| 北流市| 光泽县| 平顶山市| 陇川县| 水城县| 肇州县| 揭西县| 库车县| 射洪县| 汶川县| 桦南县| 泽普县| 金川县| 满城县| 将乐县| 慈溪市| 巨野县| 靖江市| 平乡县| 康马县| 长垣县| 翼城县| 灯塔市| 乌兰浩特市| 溧阳市| 精河县| 塔河县| 连州市| 易门县| 伊金霍洛旗| 自治县| 丰宁| 肃宁县| 大同市| 伽师县| 寿阳县| 万山特区| 茶陵县| 沽源县| 万盛区|