亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于抽象解釋技術(shù)的多層Cache分析的設(shè)計(jì)與實(shí)現(xiàn)

        2014-10-21 19:57:17毛金玲

        摘 要:在WCET分析中,最重要的一類(lèi)工作就是Cache分析。目前,大多數(shù)的基于抽象解釋技術(shù)的Cache分析中,分析算法是作用于整個(gè)程序的,如果能夠根據(jù)程序的層次結(jié)構(gòu),挖掘程序執(zhí)行在Cache中的局部特性,那么就可以有效的提高WCET的分析精度?;谶@一需求,本文主要研究基于抽象解釋技術(shù)的多層Cache分析,研究的主要內(nèi)容包括:程序?qū)哟谓Y(jié)構(gòu)的分析,基于抽象解釋技術(shù)的多層Cache分析和整數(shù)線性規(guī)劃問(wèn)題的建模與WCET求解,采用多層Cache分析能有效的提高WCET的分析精度。

        關(guān)鍵詞:WCET;抽象解釋?zhuān)欢鄬覥ache分析

        中圖分類(lèi)號(hào):TP311.1

        本文設(shè)計(jì)并實(shí)現(xiàn)了“基于抽象解釋技術(shù)的多層Cache分析”。該分析方法按照程序中循環(huán)的嵌套關(guān)系,首先將程序劃分成若干個(gè)層次。之后,按照傳統(tǒng)基于抽象解釋技術(shù)的分析手段,針對(duì)每個(gè)層次對(duì)應(yīng)的循環(huán)體,分別進(jìn)行分析,探索程序的局部Cache訪問(wèn)特性。最終,根據(jù)各個(gè)層次的分析得到的結(jié)果,進(jìn)行整數(shù)線性規(guī)劃的編碼,并計(jì)算出更加精確的WCET估計(jì)值。

        1 系統(tǒng)總體設(shè)計(jì)

        圖1為WCET分析工具總體分析框架,展示了WCET分析工具完整的工作流程。其中綠色的模塊表示的是本文研究的主體工作在整個(gè)工具中所處的位置。

        在本工具中,待分析的程序?yàn)镃代碼編寫(xiě),通過(guò)面向SimpleScalar平臺(tái)的gcc交叉編譯器,可以將源程序編譯為PISA指令集的可執(zhí)行程序,這個(gè)可執(zhí)行程序就是WCET分析工具的直接輸入。程序讀入工具之后,分析工具將可執(zhí)行程序進(jìn)行反編譯,提取詳細(xì)的指令信息,并生成程序的CFG。程序的CFG表示了程序的流程結(jié)構(gòu),這一信息將成為處理器行為分析的輸入。處理器行為分析目前主要包括Cache分析。Cache分析的結(jié)果主要是判斷程序的指令或數(shù)據(jù)在Cache中的命中情況。循環(huán)變量、不可行路徑等信息可以由用戶手工輸入,這些輸入為“功能性約束條件”,根據(jù)下一步計(jì)算的需要,這些約束條件將被映射為不同模型中所需要的形式。

        在程序流程、處理器行為分析、以及功能性約束等信息都齊備以后,需要采用某種手段計(jì)算求解程序的WCET。藍(lán)色線條部分表示的是基于隱式路徑枚舉的計(jì)算方法。根據(jù)計(jì)算需要,程序流程信息、處理器行為信息、功能性約束等分別被轉(zhuǎn)化為線性約束描述的“控制流程約束”、“處理器行為約束”以及“映射后的功能約束”等,這些約束與目標(biāo)函數(shù)結(jié)合起來(lái),就形成了一個(gè)整數(shù)線性規(guī)劃的問(wèn)題,這一問(wèn)題可以交付商業(yè)的求解軟件(如CPLEX)或開(kāi)源的數(shù)學(xué)規(guī)劃求解軟件(如lp_solve)進(jìn)行求解,最終得到程序的WCET值。在另外一條分支上,可執(zhí)行程序可以交給SimpleScalar模擬器進(jìn)行模擬執(zhí)行,用以獲得程序的WCET觀測(cè)值,它通常用來(lái)和WCET估計(jì)值進(jìn)行比較,以粗略的分析后者的精確程度。

        本文主體工作主要體現(xiàn)為以下三個(gè)方面:第一,在原來(lái)的分析流程完成了“路徑分析”并得到了程序的控制流程圖(CFG)之后,本文的工作增加了一個(gè)功能,就是對(duì)程序的整體CFG進(jìn)行分析,獲得依照嵌套循環(huán)來(lái)劃分的程序的層次結(jié)構(gòu)。第二,在已經(jīng)存在的基于抽象解釋的Cache分析模塊的基礎(chǔ)上,對(duì)其進(jìn)行了改進(jìn),使之能夠有效的分析局部程序?qū)?yīng)的局部CFG。第三,擴(kuò)充原有的“處理器行為約束”功能,使得分層次Cache分析得到的結(jié)果能夠被建模到ILP描述中,并參與WCET計(jì)算,最終獲得更加精確的分析結(jié)果。

        2 基于抽象解釋的Cache分析功能的設(shè)計(jì)與實(shí)現(xiàn)

        2.1 基于抽象解釋的Cache分析基本思想

        通過(guò)對(duì)程序執(zhí)行過(guò)程的靜態(tài)模擬,分析出由于程序的執(zhí)行而造成的Cache中內(nèi)容的變化情況,并從中提取出在此程序執(zhí)行過(guò)程中的每一個(gè)訪存操作在Cache中的命中情況。在抽象解釋技術(shù)中,用一個(gè)抽象的Cache狀態(tài)(Abstract Cache State)來(lái)表示一系列具體的Cache狀態(tài)(Concrete Cache State)。同時(shí),他們還為抽象的Cache狀態(tài)定義了一些抽象的Cache動(dòng)作函數(shù),這些動(dòng)作函數(shù)是Update函數(shù)和Join函數(shù),其中Update函數(shù)是用來(lái)對(duì)抽象Cache狀態(tài)中的內(nèi)容進(jìn)行更新的,而Join函數(shù)則是用來(lái)合并兩個(gè)抽象Cache狀態(tài)中的內(nèi)容的。這些抽象的Cache動(dòng)作函數(shù)在一定程度上能夠反映出由于程序的執(zhí)行而對(duì)Cache中的內(nèi)容所造成的影響。因此,抽象的Cache狀態(tài)以及這些抽象的Cache動(dòng)作函數(shù)能夠在抽象空間內(nèi)對(duì)Cache的具體行為進(jìn)行完整的描述。在對(duì)程序執(zhí)行過(guò)程的靜態(tài)模擬過(guò)程中,抽象Cache狀態(tài)中的內(nèi)容將會(huì)按照所規(guī)定的動(dòng)作函數(shù)而發(fā)生變化。

        基于抽象解釋技術(shù)的Cache分析方法針對(duì)抽象的指令Cache狀態(tài)主要采用三種分析,它們分別是Must分析、May分析和Persistence分析。Must分析是用來(lái)確定哪些指令在指令Cache中一定是命中的;而May分析則能夠確定出哪些指令在指令Cache中是可能命中的,根據(jù)這一結(jié)果可以判斷出那些在指令Cache中一定不命中的指令。Persistence分析能夠識(shí)別出那些一旦被載入到指令Cache中就不會(huì)再被替換出去的指令。

        Must、May和Persistence分析都是根據(jù)程序的控制流程信息來(lái)對(duì)抽象的指令Cache狀態(tài)進(jìn)行分析的,并且這三種分析所對(duì)應(yīng)的分析過(guò)程都是一個(gè)不斷迭代的過(guò)程。當(dāng)這三種分析都各自收斂到一個(gè)固定點(diǎn)(Fixpoint)的時(shí)候,這三種分析便可以結(jié)束對(duì)抽象的指令Cache狀態(tài)的分析。此時(shí),根據(jù)此抽象的指令Cache狀態(tài)中的內(nèi)容可以確定出此程序中每條指令在指令Cache中的命中情況,從而可以得到關(guān)于這些指令的分類(lèi)情況。

        2.2 多層Cache分析的主要過(guò)程

        根據(jù)Must,May,Persistence分析的目標(biāo),在本文的多層Cache分析中,擬采用如下的分析方法:(1)對(duì)于最頂層的循環(huán),也就是程序本身,分別進(jìn)行Must,May和Persistence分析;(2)對(duì)于非最頂層的循環(huán),只進(jìn)行Persistence分析。

        在本文的實(shí)現(xiàn)中,采用了文獻(xiàn)[2]中的Must、May和Persistence分析方法。由于三個(gè)分析的流程是類(lèi)似的,因此僅以本文所用到的最主要的Persistence分析,介紹抽象解釋對(duì)一個(gè)循環(huán)體進(jìn)行分析的主要算法。Must和May分析是類(lèi)似的。

        Persistence分析算法

        功能:給定一個(gè)循環(huán)體,對(duì)其進(jìn)行Persistence分析

        函數(shù)名稱(chēng):Persistence_Analysis ( loop )

        輸入:mloop_t類(lèi)型的循環(huán)體——loop

        輸出:每條指令的Persitence分析結(jié)果,記錄在相應(yīng)的指令信息中

        3 整數(shù)線性規(guī)劃問(wèn)題建模

        通過(guò)對(duì)多層Cache分析,得到了程序每條指令在各個(gè)層次上的Persistence分析結(jié)果(在最外層,還有Must和May分析的結(jié)果)。例如一條指令A(yù)位于第三層次的某個(gè)循環(huán)體內(nèi),那么指令A(yù)一定也屬于某個(gè)第二層次的循環(huán)體以及某個(gè)第一層次的循環(huán)體。指令A(yù)在這三個(gè)層次對(duì)應(yīng)的循環(huán)體中,都有相應(yīng)的Persistence分析結(jié)果。

        利用這一結(jié)果將程序的WCET計(jì)算問(wèn)題,用一個(gè)整數(shù)線性規(guī)劃問(wèn)題進(jìn)行描述。

        3.1 目標(biāo)函數(shù)

        計(jì)算程序的WCET,就是用整數(shù)線性規(guī)劃的方式將程序的執(zhí)行時(shí)間加以表示,然后讓整數(shù)線性規(guī)劃的求解器來(lái)求這個(gè)表達(dá)式的最大值。因此需要設(shè)計(jì)目標(biāo)函數(shù),可以表示為公式(1)的形式。

        其中,Ci表示每個(gè)基本塊執(zhí)行一次的執(zhí)行時(shí)間,Xi表示每個(gè)基本塊執(zhí)行的次數(shù)。將各個(gè)基本塊的總的執(zhí)行時(shí)間求和,并求其最大值,便可得到程序的WCET。其中,Ci又可以表示為三個(gè)部分,CAM、CAH、CFM分別對(duì)應(yīng)于當(dāng)前基本塊中,所有AM、AH、FM指令對(duì)應(yīng)的執(zhí)行時(shí)間。由于本文對(duì)程序進(jìn)行多層分析,因此CFM可以進(jìn)一步被表達(dá)為公式(2)的形式。

        對(duì)于所有被判定為FM的指令,必須區(qū)分它是在哪一個(gè)層次上被判定為FM的。假定在第j層次上,有mj條指令被判定為FM,那么用 表示這mj條指令失效的次數(shù),用 表示這mj條指令命中的次數(shù)。因此,所有的FM指令最終的執(zhí)行時(shí)間表達(dá)式可以用公式(2)來(lái)表達(dá)。

        3.2 路徑信息約束

        為了求解這個(gè)整數(shù)線性規(guī)劃的問(wèn)題,還需要一些約束。在研究WCET分析問(wèn)題中,第一類(lèi)約束是路徑信息約束,如公式(3)所示。

        公式(3)表明,一個(gè)基本塊的執(zhí)行次數(shù),等于它對(duì)應(yīng)的所有入邊被執(zhí)行的次數(shù)之和,也等于它對(duì)應(yīng)的所有出邊被執(zhí)行的次數(shù)之和。

        3.3 循環(huán)次數(shù)約束

        還需要一些約束來(lái)表明程序的循環(huán)最多會(huì)執(zhí)行多少次。假定對(duì)于某個(gè)循環(huán)體,Xi是循環(huán)體的尾節(jié)點(diǎn)(Tail),Xj是循環(huán)體的入節(jié)點(diǎn)(Entry),循環(huán)最多執(zhí)行p次,那么可以知道,循環(huán)體的入節(jié)點(diǎn)每執(zhí)行一次,循環(huán)體的尾節(jié)點(diǎn)最多可以執(zhí)行p次。為了表達(dá)這一信息,引入了循環(huán)次數(shù)約束,其形式如公式(4)所示。

        3.4 基本塊失效總次數(shù)約束

        在公式(2)中,描述一個(gè)基本塊中,所有被判定為FM指令的執(zhí)行時(shí)間。對(duì)于其中的失效和命中次數(shù)變量,還需要根據(jù)其所在的層次,施加必要的約束。以一個(gè)位于某個(gè)第二層循環(huán)體的基本塊Xi為例,假定它所屬的第一、二層的循環(huán)體的入節(jié)點(diǎn)分別為X1,X2。那么,可以有公式(5~8)的一些約束。這些約束描述了在某個(gè)特定循環(huán)層次上,被判定為FM的指令,其失效次數(shù)的上限,以及失效次數(shù)和命中次數(shù)之和為多少。

        將上述的目標(biāo)函數(shù)和所有的約束組合成為一個(gè)整數(shù)線性規(guī)劃的問(wèn)題,通過(guò)求解目標(biāo)函數(shù)所表達(dá)的極值問(wèn)題,可以求解出程序的WCET。

        4 結(jié)束語(yǔ)

        通過(guò)對(duì)6個(gè)測(cè)試程序進(jìn)行實(shí)驗(yàn),可以看出,通過(guò)多層Cache分析,可以有效的提高WCET的分析精度。實(shí)際效果,根據(jù)程序自身的特性不同而不同。對(duì)于那些循環(huán)體很小的程序,多層Cache分析的精度收益不大;但是對(duì)于外層循環(huán)體很大(難以完全裝入Cache)而內(nèi)層循環(huán)體很小的程序,采用多層Cache分析能夠有效提高分析精度。

        參考文獻(xiàn):

        [1]Jane, W.S. Liu. Real-Time Systems. Pearson Education,2002.

        [2]Ferdinand C, Wilhelm R. Fast and Efficient Cache Behavior Prediction for Real-Time Systems [J].Real-Time System, 1999,17(2-3):131-181.

        [3]Yau-Tsun Steven Li and Sharad Malik. Performance Analysis of Embedded Software Using Implicit Path Enumeration [A].in Workshop on Languages, Compilers and Tools for Real-Time Systems [C].1995,456-461.

        作者簡(jiǎn)介:毛金玲(1974-),女,遼寧海城人,設(shè)備工程系,講師,碩士,研究方向:軟件開(kāi)發(fā)。

        作者單位:遼寧建筑職業(yè)學(xué)院,遼寧遼陽(yáng) 111000

        日本久久一区二区三区高清| 日韩精品人妻中文字幕有码| 久久影院午夜理论片无码| 久热re这里精品视频在线6| 一本大道色婷婷在线| 日韩AV无码免费二三区| 日本变态网址中国字幕| 一区二区三区在线观看人妖| 少妇无码太爽了在线播放| 内射合集对白在线| 少妇内射视频播放舔大片| 国产av无码专区亚洲aⅴ| 日韩成人高清不卡av| 亚洲av成熟国产一区二区| 欧美做受又硬又粗又大视频| 在线亚洲欧美日韩精品专区| 伊人精品在线观看| 丰满人妻一区二区乱码中文电影网| av免费在线播放观看| 国产办公室秘书无码精品99| 毛片亚洲av无码精品国产午夜| 狠狠狠色丁香婷婷综合激情| 风韵丰满妇啪啪区老老熟女杏吧 | 亚洲成人av大片在线观看| 亚洲综合av大全色婷婷| 朝鲜女人大白屁股ass| 亚洲av第一成肉网| 亚洲精品成人国产av| 国产大屁股熟女流白浆一区二区| 精品一区二区av天堂色偷偷| 又粗又粗又黄又硬又深色的| 亚洲V在线激情| 丰满少妇高潮在线观看| 国产激情一区二区三区在线| 99在线精品免费视频九九视| 午夜一级韩国欧美日本国产| 人妻无码中文专区久久AV| 精品人妻av区二区三区| 免费观看成人欧美www色| 爽爽午夜影视窝窝看片| 女同另类激情在线三区|