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

基于反圖描述的嵌入式系統(tǒng)寄存器分配方法

文檔序號(hào):6335723閱讀:202來(lái)源:國(guó)知局
專利名稱:基于反圖描述的嵌入式系統(tǒng)寄存器分配方法
基于反圖描述的嵌入式系統(tǒng)寄存器分配方法技術(shù)領(lǐng)域
本發(fā)明屬于計(jì)算機(jī)技術(shù)領(lǐng)域,涉及嵌入式系統(tǒng),特別是一種嵌入式系統(tǒng)寄存器的 分配方法,可用于解決在嵌入式系統(tǒng)中寄存器數(shù)量較少,中間變量相互沖突較多的情況下, 能夠在較短的時(shí)間內(nèi)將中間變量存儲(chǔ)到寄存器中,提高程序編譯效率。
背景技術(shù)
在嵌入式系統(tǒng)中,隨著穩(wěn)定性和復(fù)雜性的要求越來(lái)越高,需要的程序的規(guī)模也越 來(lái)越大。對(duì)于實(shí)現(xiàn)同一種功能,無(wú)論是在花費(fèi)還是后期維護(hù)方面,用軟件技術(shù)總是要比用硬 件技術(shù)理想的多。所以,嵌入式系統(tǒng)中基于軟件的技術(shù)就受到了很大的歡迎。但是由于嵌 入式系統(tǒng)中存儲(chǔ)容量有限,因此,在嵌入式系統(tǒng)上的編譯器要比在高端機(jī)上的編譯器面臨 更多問(wèn)題。要想極大地提高嵌入式系統(tǒng)中程序的執(zhí)行效率,關(guān)鍵的一步就是在寄存器分配 上對(duì)程序的執(zhí)行性能進(jìn)行優(yōu)化,所謂寄存器分配就是指將程序的中間變量分配到可用的寄 存器中,由于寄存器數(shù)量有限,那么不能被分配到寄存器中的變量,將不得不花費(fèi)更多的時(shí) 間來(lái)保存到外存儲(chǔ)器中,從而影響了程序的執(zhí)行效率。如何提出一個(gè)高效的寄存器分配算 法,能夠在較短的時(shí)間內(nèi)充分地提高嵌入式系統(tǒng)對(duì)寄存器的利用率,降低這種由于將中間 變量被迫溢出到外存儲(chǔ)器中而帶來(lái)的影響,一直是很多學(xué)者努力和研究的方向。到目前為 止,現(xiàn)有的嵌入式系統(tǒng)寄存器分配算法,如混合進(jìn)化算法HEA,利用遺傳算法的思想,在對(duì)種 群規(guī)模初始化之后,通過(guò)免沖突交叉算子CFPX盡量使每個(gè)寄存器中的變量不沖突,然后通 過(guò)本地查找技術(shù)LSP讓變量在單一個(gè)體中的寄存器之間進(jìn)行調(diào)整從而降低總個(gè)體的溢出 代價(jià)。隨時(shí)記錄每一次迭代過(guò)程中產(chǎn)生的最優(yōu)個(gè)體,進(jìn)而得到最終的最優(yōu)個(gè)體,也就得到了 寄存器分配辦法。但是由于進(jìn)化算法進(jìn)行群體搜索,在搜索過(guò)程中弓I入遺傳運(yùn)算,使群體可 以不斷進(jìn)化。所以速度很慢,得到最優(yōu)的寄存器分配辦法需要大量的時(shí)間。而較早的優(yōu)化 圖著色啟發(fā)式算法0CH,設(shè)計(jì)相對(duì)簡(jiǎn)單,是對(duì)圖著色啟發(fā)式算法的一種改進(jìn),用時(shí)很少,但寄 存器分配的效果也與HEA相差甚遠(yuǎn)。其具體操作流程如圖1所示,其中關(guān)鍵的步驟是簡(jiǎn)化 和選擇。簡(jiǎn)化過(guò)程中首先要建立一個(gè)空棧,然后重復(fù)下面兩個(gè)步驟直到把圖中所有節(jié)點(diǎn)都 分配到寄存器為止。
(1)如果存在一個(gè)節(jié)點(diǎn)Ii的度<眾,k是寄存器的數(shù)量。那么就從圖中刪除^和 以其作為一個(gè)端點(diǎn)的所有的邊,并將Ii存入棧中分配寄存器。
(2)否則,選擇一個(gè)節(jié)點(diǎn)Ii溢出,從圖中刪除Ii和以其作為一個(gè)端點(diǎn)的所有的邊, 并將Ii溢出。
完成簡(jiǎn)化過(guò)程之后進(jìn)行選擇,從棧中依次退出節(jié)點(diǎn)變量,給節(jié)點(diǎn)分配與它的鄰接 節(jié)點(diǎn)不同的寄存器。這兩個(gè)方法各有優(yōu)勢(shì),但從實(shí)際的嵌入式系統(tǒng)寄存器分配問(wèn)題去考慮, 由于HEA需要大量的時(shí)間,所以實(shí)際應(yīng)用意義并不是很大,OCH雖然用時(shí)非常少,但是效果 極差,也達(dá)不到實(shí)際應(yīng)用的目的。發(fā)明內(nèi)容
本發(fā)明的目的在于克服以上現(xiàn)有技術(shù)的不足,提出一種基于反圖描述的嵌入式系 統(tǒng)寄存器分配方法,以降低編譯過(guò)程中寄存器分配的時(shí)間,減少中間變量的溢出代價(jià)和溢 出個(gè)數(shù),從而提高寄存器的使用效率,達(dá)到實(shí)際應(yīng)用的目的。
實(shí)現(xiàn)本發(fā)明目的技術(shù)方案是把嵌入式系統(tǒng)寄存器分配問(wèn)題首先用圖著色問(wèn)題來(lái) 描述;然后再將其轉(zhuǎn)換成反圖模型G,在反圖模型G中,用圖中每一個(gè)節(jié)點(diǎn)代表一個(gè)中間變 量,每一條邊連接的兩個(gè)中間變量可以放在同一個(gè)寄存器中;最終要把代表中間變量的N 個(gè)節(jié)點(diǎn)分配到M個(gè)寄存器中,以使溢出到外存儲(chǔ)器中的中間變量個(gè)數(shù)和代價(jià)盡可能的小。 具體步驟包括如下
(1)繪制出嵌入式系統(tǒng)在程序編譯過(guò)程中產(chǎn)生的中間變量相互干擾圖H,并給出 每個(gè)中間變量的溢出代價(jià);
(2)對(duì)中間變量相互干擾圖H進(jìn)行反圖操作,得到反圖模型為G = {N, Μ, V,Ε, S}, 其中N代表中間變量總數(shù),M代表所給的寄存器數(shù)量,V代表所有中間變量的節(jié)點(diǎn)集,節(jié)點(diǎn)分 別標(biāo)記為0,1,2... N-I, E代表所有的無(wú)向邊的集合,S代表所有中間變量溢出代價(jià)的集合;
(3)將嵌入式系統(tǒng)所給的M個(gè)寄存器分別記為R1A2,.. .,&,并設(shè)定有無(wú)窮多個(gè)臨 時(shí)寄存器,分別記為TR1, TR2, ... , TRf...;
(4)在反圖模型G中,分別以圖G中每個(gè)節(jié)點(diǎn)為中心點(diǎn),判斷該中心點(diǎn)與其所有有 連接的節(jié)點(diǎn)及其邊所構(gòu)成的子圖是否為完全圖,若為完全圖則將其定義為完全分割圖,該 完全分割圖如果有且只有一個(gè),則選擇下標(biāo)最小的空臨時(shí)寄存器,將完全分割圖中的節(jié)點(diǎn) 放入其中,直接執(zhí)行步驟(5);若該完全分割圖不唯一,則選擇出溢出代價(jià)最大的完全分割 圖中包含節(jié)點(diǎn)數(shù)最多的一個(gè)完全分割圖,將其節(jié)點(diǎn)放入下標(biāo)最小的空臨時(shí)寄存器中,直接 執(zhí)行步驟(5);若反圖模型G中不存在完全分割圖,則直接把反圖模型G看作一個(gè)不包含完 全分割圖的子圖G',跳轉(zhuǎn)執(zhí)行步驟(6);
(5)在反圖模型G中刪除已經(jīng)放到臨時(shí)寄存器中的完全分割圖,重復(fù)步驟(4) (5),直到得到一個(gè)不包含完全分割圖的子圖G';
(6)在不包含完全分割圖的子圖G'中,分別以圖G'中每個(gè)節(jié)點(diǎn)作為中心點(diǎn),在 每個(gè)中心點(diǎn)與其所有有連接的節(jié)點(diǎn)及其邊所構(gòu)成的子圖Pi中,尋找?1中溢出代價(jià)最大的最 大完全子圖Fi ;從Fi中選擇溢出代價(jià)最大的最大完全子圖中包含節(jié)點(diǎn)最多的一個(gè)最大完全 子圖,將放入下標(biāo)最小的空臨時(shí)寄存器中,其中i依次取G'中所包含的節(jié)點(diǎn);
(7)在G'中刪除Fmax,得到G'的更新圖G",對(duì)G"重復(fù)步驟⑷ (7)的操作, 直到所有節(jié)點(diǎn)都放入臨時(shí)寄存器TI^中,其中j = 1. . . L,L為完全分配所有節(jié)點(diǎn)所需臨時(shí) 寄存器的數(shù)量;
(8)將臨時(shí)寄存器TRj (j = 1. . . L)中的節(jié)點(diǎn)變量存儲(chǔ)到嵌入式系統(tǒng)寄存器= 1. . . Μ)中;若L < M,溢出變量個(gè)數(shù)為零,溢出代價(jià)為零,則分配結(jié)束;若L > Μ,則會(huì)有中間 變量溢出到外存儲(chǔ)器中,根據(jù)混合進(jìn)化算法HEA中的沖突最小原則,將臨時(shí)寄存器1 (j = M+1...L)中的中間變量也放入嵌入式系統(tǒng)寄存器Rk (k= 1...M)中,并使用本地搜索技術(shù) LSP方法對(duì)其進(jìn)行優(yōu)化,分配結(jié)束。本發(fā)明具有如下優(yōu)點(diǎn)
1)本發(fā)明由于引入了反圖操作,使得中間變量之間的相互關(guān)系變的更加明確,充 分的利用圖論的有關(guān)知識(shí),相比傳統(tǒng)的啟發(fā)式算法,本發(fā)明降低了中間變量的溢出代價(jià)和溢出個(gè)數(shù),提高了寄存器分配的效果。
2)本發(fā)明中由于引入了完全分割圖操作和最大完全子圖操作,能夠一次性將盡可 能多的不沖突節(jié)點(diǎn)放到同一個(gè)寄存器中,相比混合進(jìn)化算法,由于本發(fā)明能夠一次性的將 節(jié)點(diǎn)分配完畢,所以節(jié)省了寄存器分配時(shí)間,提高了程序編譯效率,為實(shí)際的工程應(yīng)用提供 的了一個(gè)較好的嵌入式系統(tǒng)寄存器分配算法。


圖1是現(xiàn)有優(yōu)化圖著色啟發(fā)式算法OCH的流程圖2是本發(fā)明的流程圖3是本發(fā)明具體實(shí)例中間變量的相互干擾圖4是本發(fā)明具體實(shí)例中間變量相互干擾圖的反圖5是本發(fā)明具體實(shí)例得到的要放入臨時(shí)寄存器中的完全分割圖6是本發(fā)明具體實(shí)例反圖的更新圖7是本發(fā)明具體實(shí)例以更新圖中每個(gè)節(jié)點(diǎn)為中心點(diǎn),每個(gè)中心點(diǎn)與其所有有連 接的節(jié)點(diǎn)及其邊所構(gòu)成的子圖8是本發(fā)明具體實(shí)例各個(gè)子圖中的最大完全子圖9是本發(fā)明具體實(shí)例得到的要放入臨時(shí)寄存器中的最大完全子圖10是本發(fā)明具體實(shí)例經(jīng)過(guò)第一次循環(huán)后中間變量相互干擾圖反圖的更新圖。
具體實(shí)施方式
參照附圖2本發(fā)明具體步驟,結(jié)合一個(gè)具體實(shí)例描述如下
步驟1.根據(jù)中間變量的相互干擾圖建立反圖模型G。
該實(shí)例中間變量的相互干擾圖如圖3所示,圖中的節(jié)點(diǎn)0-9代表了十個(gè)中間變量, 并且每一條邊所連接的兩個(gè)節(jié)點(diǎn)表示它們所代表的中間變量的生命周期有重疊,不能放在 同一個(gè)寄存器中。表1給出了各個(gè)節(jié)點(diǎn)所代表的中間變量不能被存儲(chǔ)到寄存器中時(shí),被迫 溢出所消耗的溢出代價(jià),例如溢出節(jié)點(diǎn)0的溢出代價(jià)為1,溢出節(jié)點(diǎn)1的溢出代價(jià)為3。
表1各個(gè)節(jié)點(diǎn)溢出到外存儲(chǔ)器時(shí)所消耗的溢出代價(jià)表
權(quán)利要求
1.一種基于反圖描述的嵌入式系統(tǒng)寄存器分配方法,包括如下步驟(1)繪制出嵌入式系統(tǒng)在程序編譯過(guò)程中產(chǎn)生的中間變量相互干擾圖H,并給出每個(gè) 中間變量的溢出代價(jià);(2)對(duì)中間變量相互干擾圖H進(jìn)行反圖操作,得到反圖模型為G= {N, Μ, V,E,S},其 中N代表中間變量總數(shù),M代表所給的寄存器數(shù)量,V代表所有中間變量的節(jié)點(diǎn)集,節(jié)點(diǎn)分別 標(biāo)記為0,1,2... N-I, E代表所有的無(wú)向邊的集合,S代表所有中間變量溢出代價(jià)的集合;(3)將嵌入式系統(tǒng)所給的M個(gè)寄存器分別記為&,&,... , ,并設(shè)定有無(wú)窮多個(gè)臨時(shí)寄 存器,分別記為 TR1, TR2, . . .,TRf...;(4)在反圖模型G中,分別以圖G中每個(gè)節(jié)點(diǎn)為中心點(diǎn),判斷該中心點(diǎn)與其所有有連接 的節(jié)點(diǎn)及其邊所構(gòu)成的子圖是否為完全圖,若為完全圖則將其定義為完全分割圖,該完全 分割圖如果有且只有一個(gè),則選擇下標(biāo)最小的空臨時(shí)寄存器,將完全分割圖中的節(jié)點(diǎn)放入 其中,直接執(zhí)行步驟(5);若該完全分割圖不唯一,則選擇出溢出代價(jià)最大的完全分割圖中 包含節(jié)點(diǎn)數(shù)最多的一個(gè)完全分割圖,將其節(jié)點(diǎn)放入下標(biāo)最小的空臨時(shí)寄存器中,直接執(zhí)行 步驟(5);若反圖模型G中不存在完全分割圖,則直接把反圖模型G看作一個(gè)不包含完全分 割圖的子圖G',跳轉(zhuǎn)執(zhí)行步驟(6);(5)在反圖模型G中刪除已經(jīng)放到臨時(shí)寄存器中的完全分割圖,重復(fù)步驟(4) (5), 直到得到一個(gè)不包含完全分割圖的子圖G';(6)在不包含完全分割圖的子圖G'中,分別以圖G'中每個(gè)節(jié)點(diǎn)作為中心點(diǎn),在每個(gè) 中心點(diǎn)與其所有有連接的節(jié)點(diǎn)及其邊所構(gòu)成的子圖&中,尋找?1中溢出代價(jià)最大的最大完 全子圖Fi ;從Fi中選擇溢出代價(jià)最大的最大完全子圖中包含節(jié)點(diǎn)最多的一個(gè)最大完全子圖,將放入下標(biāo)最小的空臨時(shí)寄存器中,其中i依次取G'中所包含的節(jié)點(diǎn);(7)在G'中刪除Fmax,得到G'的更新圖G",對(duì)G"重復(fù)步驟⑷ (7)的操作,直到 所有節(jié)點(diǎn)都放入臨時(shí)寄存器TI^中,其中j = 1...L,L為完全分配所有節(jié)點(diǎn)所需臨時(shí)寄存 器的數(shù)量;(8)將臨時(shí)寄存器1 (j = 1. . . L)中的節(jié)點(diǎn)變量存儲(chǔ)到嵌入式系統(tǒng)寄存器Rk (k = 1. . . M)中;若L < M,溢出變量個(gè)數(shù)為零,溢出代價(jià)為零,則分配結(jié)束;若L > M,則會(huì)有中間 變量溢出到外存儲(chǔ)器中,根據(jù)混合進(jìn)化算法HEA中的沖突最小原則,將臨時(shí)寄存器1 (j = M+1...L)中的中間變量也放入嵌入式系統(tǒng)寄存器Rk (k= 1...M)中,并使用本地搜索技術(shù) LSP方法對(duì)其進(jìn)行優(yōu)化,分配結(jié)束。
2.根據(jù)權(quán)利要求1所述的基于反圖描述的嵌入式系統(tǒng)寄存器分配方法,其中步驟(2) 所述對(duì)繪制的中間變量相互干擾圖進(jìn)行反圖操作,是保持原圖中節(jié)點(diǎn)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)不 變,將原圖中每對(duì)節(jié)點(diǎn)間原有的連接邊刪除,添加原圖中不存在的連接邊,即可得到反圖模 型G。
3.根據(jù)權(quán)利要求1所述的基于反圖描述的嵌入式系統(tǒng)寄存器分配方法,其中步驟(4) 所述的完全分割圖的溢出代價(jià),是完全分割圖中所包含節(jié)點(diǎn)的溢出代價(jià)之和。
4.根據(jù)權(quán)利要求1所述的基于反圖描述的嵌入式系統(tǒng)寄存器分配方法,其中步驟(6) 所述的最大完全子圖的溢出代價(jià),是最大完全子圖中所包含節(jié)點(diǎn)的溢出代價(jià)之和。
全文摘要
本發(fā)明提出了一種基于反圖描述的嵌入式系統(tǒng)寄存器分配方法,主要解決現(xiàn)有啟發(fā)式算法雖然分配寄存器所需時(shí)間較短但是分配效果極差,而混合進(jìn)化算法雖然分配效果很好但是所需時(shí)間太長(zhǎng)的問(wèn)題。其實(shí)現(xiàn)步驟是(1)對(duì)中間變量的相互干擾圖取反圖,得到反圖模型G;(2)將反圖模型中的所有節(jié)點(diǎn)分配到臨時(shí)寄存器中;(3)對(duì)已得到的寄存器分配結(jié)果使用本地查找技術(shù)LSP進(jìn)行優(yōu)化。本發(fā)明的優(yōu)點(diǎn)是引入了反圖操作、完全分割圖操作和最大完全子圖操作,充分應(yīng)用圖論的有關(guān)知識(shí),能在短時(shí)間內(nèi)得到非常好的嵌入式系統(tǒng)寄存器分配方法,提高嵌入式系統(tǒng)程序編譯效率,更加具有實(shí)際應(yīng)用價(jià)值。
文檔編號(hào)G06F9/45GK102033773SQ20101054067
公開(kāi)日2011年4月27日 申請(qǐng)日期2010年11月12日 優(yōu)先權(quán)日2010年11月12日
發(fā)明者于昕, 吳建設(shè), 尚榮華, 戚玉濤, 李陽(yáng)陽(yáng), 焦李成, 暢志艷, 緱水平, 陳為勝 申請(qǐng)人:西安電子科技大學(xué)
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
万载县| 晋江市| 肥城市| 新巴尔虎右旗| 黎平县| 岐山县| 尚志市| 岳阳县| 安岳县| 繁峙县| 安庆市| 苏尼特右旗| 白沙| 蒙山县| 威海市| 曲靖市| 防城港市| 乐陵市| 台江县| 隆昌县| 姚安县| 巢湖市| 中方县| 海阳市| 双柏县| 贵溪市| 望城县| 玉林市| 桂林市| 沁阳市| 柘城县| 太原市| 宣汉县| 高碑店市| 濮阳市| 温宿县| 门头沟区| 兰坪| 南木林县| 县级市| 龙南县|