一種精確計(jì)算任務(wù)高速緩存wcet的分析方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種實(shí)時(shí)系統(tǒng)任務(wù)最差情況執(zhí)行時(shí)間(WCET:Worst_CaseExecution Time)的分析方法,尤其涉及一種精確計(jì)算任務(wù)高速緩存WCET的分析方法。
【背景技術(shù)】
[0002] 與通用計(jì)算機(jī)系統(tǒng)不同,實(shí)時(shí)系統(tǒng)的結(jié)果只有在規(guī)定的時(shí)間范圍內(nèi)完成時(shí)才是有 效的,如果沒有在規(guī)定的時(shí)間范圍內(nèi)完成時(shí),輕則降低系統(tǒng)的性能,重則引起災(zāi)難性的后 果,比如飛機(jī)投彈、核泄漏。因此,對(duì)于實(shí)時(shí)系統(tǒng),事先獲取系統(tǒng)中每個(gè)任務(wù)的最差情況的執(zhí) 行時(shí)間WCET有著特別重要的意義。事實(shí)上,WCET分析是實(shí)時(shí)系統(tǒng)任務(wù)調(diào)度及可調(diào)度性檢 測(cè)的前提,也為分析系統(tǒng)性能的瓶頸提供支撐。
[0003] 實(shí)時(shí)任務(wù)的WCET估值決定了為每個(gè)任務(wù)分配的CPU時(shí)間。WCET分析結(jié)果越是高 估,需要為每個(gè)任務(wù)分配保留的CPU時(shí)間就越多,從而使本來是夠用的計(jì)算資源因?yàn)楦吖?而導(dǎo)致資源不夠用這樣的誤判。所以,精確地估算任務(wù)的WCET具有非常重要的意義。
[0004] 高速緩存是CPU和內(nèi)存之間的一個(gè)高速數(shù)據(jù)緩存區(qū)域,是提高處理器執(zhí)行速度的 一種常用手段。為提高高速緩存的調(diào)換效率,在高速緩存和內(nèi)存之間按照"塊"進(jìn)行調(diào)換, 一個(gè)塊是一個(gè)固定大小的數(shù)據(jù)單元,比如64個(gè)字節(jié),通常包括多個(gè)數(shù)據(jù)或者多條指令。以 直接映射方式為例,其CPU的訪主存地址可以表示為:
【主權(quán)項(xiàng)】
1. 一種精確計(jì)算任務(wù)高速緩存WCET的分析方法,其特征在于:包括以下步驟: 步驟一:產(chǎn)生基本塊的迭代范圍; 步驟二:計(jì)算高速緩存的丟失次數(shù): 程序指令以塊的形式連續(xù)存放在內(nèi)存中,以塊為單位從內(nèi)存調(diào)入到高速緩存,當(dāng)CPU 訪問一條指令時(shí),如果該指令不在高速緩存,CPU將該指令調(diào)入高速緩存,然后執(zhí)行該指 令; 對(duì)任一高速緩存塊,為該高速緩存塊建立一個(gè)隊(duì)列,該隊(duì)列成員為循環(huán)體中所有映射 到該高速緩存塊的指令塊; 步驟2. 1 :計(jì)算循環(huán)體高速緩存塊的最大丟失次數(shù):對(duì)對(duì)應(yīng)于一個(gè)高速緩存塊的所有 指令塊,按照從小到大順序進(jìn)行排隊(duì),指令塊X比指令塊y小,其定義為:如果指令塊X的最 小迭代范圍區(qū)間下限B1不大于指令塊y的最小迭代范圍區(qū)間下限a 2,同時(shí),如果X. a1=y. a2, 則指令塊x的最小迭代范圍區(qū)間上限不大于指令塊y的最小迭代范圍區(qū)間上限; 其中指令塊的迭代范圍為該指令塊所涉及的基本塊迭代范圍的集合;一個(gè)指令塊中的 最小迭代范圍[a,b]是指:a為該指令塊中所有迭代范圍的下限的最小值;如果有一個(gè)迭代 范圍[c, d]滿足c=a,那么一定有b彡d ; 對(duì)高速緩存隊(duì)列中的指令塊的迭代范圍進(jìn)行遍歷處理,直至隊(duì)列中的指令塊為空,處 理方法為:形成一個(gè)最小迭代范圍[e,f];其中最小迭代范圍[e,f]的產(chǎn)生方法為:下限e 為高速緩存隊(duì)列第一個(gè)指令塊迭代范圍的最小范圍區(qū)間的下限,上限f?、俸廷谥械淖钚?值:①為高速緩存隊(duì)列中所有指令塊迭代范圍區(qū)間上限的最小值;②為高速緩存隊(duì)列中所 有指令塊迭代范圍區(qū)間中大于e的下限最小值-1 ;隊(duì)列每遍歷一次之后,需要將該高速緩 存隊(duì)列的指令塊按照從小到大的順序重新進(jìn)行排隊(duì); 按照從小到大的順序,對(duì)高速緩存隊(duì)列中的所有指令塊的迭代范圍進(jìn)行處理,如果該 指令塊的迭代范圍包括最小迭代范圍[e,f],那么將該指令塊迭代范圍減去范圍[e,f],同 時(shí)對(duì)這樣的指令塊進(jìn)行計(jì)數(shù);如果這樣的指令塊只有一個(gè),那么,在[e,f]的迭代范圍里, 只有這個(gè)指令塊執(zhí)行,因而其引起的丟失次數(shù)為1 ;如果在[e,f]的迭代范圍里,有count 個(gè)指令塊(count>l)執(zhí)行,那么,這些指令塊在[e,f]范圍的每一次迭代都將發(fā)生丟失,從 而對(duì)應(yīng)于指令塊的迭代范圍[e,f]的丟失次數(shù)為:(f-e+l)* C〇unt ; 步驟2. 2 :對(duì)于非循環(huán)體指令,所有執(zhí)行的指令塊的丟失次數(shù)均為1 ; 計(jì)算高速緩存的丟失次數(shù):一個(gè)高速緩存塊的丟失次數(shù)為所有這些丟失次數(shù)的累加; 當(dāng)針對(duì)一個(gè)高速緩存塊的指令塊的丟失次數(shù)計(jì)算完成之后,就可以計(jì)算整個(gè)高速緩存的丟 失次數(shù);整個(gè)高速緩存的丟失次數(shù)等于其中所有高速緩存塊丟失次數(shù)的累加; 步驟三:計(jì)算高速緩存的WCET:即一個(gè)運(yùn)行在高速緩存處理器上實(shí)時(shí)任務(wù)的WCET,就 是按照高速緩存全部命中計(jì)算出的WCET值加上高速緩存的丟失次數(shù)與時(shí)間懲罰的乘積。
2. 根據(jù)權(quán)利要求1所述的一種精確計(jì)算任務(wù)高速緩存WCET的分析方法,其特征在于: 所述步驟一包括以下步驟: 步驟I. 1 :構(gòu)建程序的控制流圖CFG ; 步驟1. 2 :依據(jù)控制流圖CFG,對(duì)賦值節(jié)點(diǎn)、匯聚節(jié)點(diǎn)和分支節(jié)點(diǎn)分別進(jìn)行不同的操作, 產(chǎn)生三種節(jié)點(diǎn)分別對(duì)應(yīng)的變量的值范圍; 步驟1. 3 :依據(jù)步驟1. 2中變量的值范圍,根據(jù)公式
產(chǎn)生基本塊的迭代范圍; 其中,表示基本塊B在其相對(duì)應(yīng)歸納變量j的值范圍[m,η]的迭代 范圍,表示該迭代范圍的下限,siip(i:ocpto^e(5^:;;..))表示該迭代 范圍的上限,stride (j)表示歸納變量j的跨度,其跨度為每次循環(huán)迭代歸納變量j的增量。
【專利摘要】一種精確計(jì)算任務(wù)高速緩存WCET的分析方法,包括以下步驟:首先產(chǎn)生基本塊的迭代范圍,其次根據(jù)基本塊的迭代范圍計(jì)算出指令塊的迭代范圍,從計(jì)算出的指令塊的迭代范圍中找出所有指令塊的最小迭代范圍,依據(jù)指令塊的最小迭代范圍計(jì)算其丟失次數(shù)并去除此最小迭代范圍,最后根據(jù)一個(gè)個(gè)最小迭代范圍計(jì)算出高速緩存總的最大丟失次數(shù)從而計(jì)算出任務(wù)高速緩存的WECT。本發(fā)明方法能夠明顯提高針對(duì)高速緩存的WCET估算精度。
【IPC分類】G06F9-44
【公開號(hào)】CN104679521
【申請(qǐng)?zhí)枴緾N201510109979
【發(fā)明人】姬孟洛, 高翔, 舒云星, 秦杰, 刁文廣, 陶榮, 李雅萍
【申請(qǐng)人】洛陽理工學(xué)院
【公開日】2015年6月3日
【申請(qǐng)日】2015年3月13日