国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于代數(shù)演算的中間代碼優(yōu)化方法與流程

      文檔序號:11864468閱讀:270來源:國知局

      本發(fā)明涉及形式化語義領(lǐng)域,尤其涉及基于代數(shù)演算的中間代碼優(yōu)化方法。



      背景技術(shù):

      嵌入式方法的硬件往往根據(jù)具體應(yīng)用而定制,為了獲得更多的軟件支持,通常需要編寫專用的編譯器以完成高級語言到具體的目標(biāo)平臺代碼的轉(zhuǎn)換,并同時滿足嵌入式方法對高性能、高可靠性、低功耗等要求。不同目標(biāo)平臺擁有不同的特性,開發(fā)目標(biāo)平臺專用的編譯器往往成本太高。本發(fā)明提出了基于代數(shù)演算的中間代碼方法,根據(jù)可由用戶定制的優(yōu)化策略,對中間代碼進(jìn)行優(yōu)化,生成高效的目標(biāo)平臺機(jī)器碼。



      技術(shù)實(shí)現(xiàn)要素:

      本發(fā)明提出了基于代數(shù)演算的中間代碼優(yōu)化方法,所述方法包括:

      高級語言轉(zhuǎn)換步驟,將輸入的源代碼、其他形式的中間語言程序轉(zhuǎn)換成為所述優(yōu)化方法使用的中間語言程序,所述其他形式的中間語言指與所述優(yōu)化方法所使用的中間語言不同的中間語言;

      優(yōu)化步驟,向用戶提供優(yōu)化策略定制,允許用戶提供目標(biāo)平臺硬件特性,定制特別的優(yōu)化策略,使用優(yōu)化策略對所述高級語言轉(zhuǎn)換步驟的中間語言進(jìn)行優(yōu)化,得到經(jīng)過優(yōu)化的中間代碼;

      目標(biāo)代碼生成步驟,將經(jīng)過優(yōu)化的中間代碼生成目標(biāo)平臺的可執(zhí)行機(jī)器碼。

      其中,所述優(yōu)化步驟中向用戶提供優(yōu)化策略定制包括:

      對優(yōu)化后的中間語言程序進(jìn)行控制流和數(shù)據(jù)流分析,總結(jié)出優(yōu)化目標(biāo)并轉(zhuǎn)換為代數(shù)規(guī)則。

      其中,所述優(yōu)化目標(biāo)包括消除復(fù)雜算子或消除循環(huán)冗余。

      其中,對優(yōu)化后的中間語言程序進(jìn)行控制流分析得到該程序的循環(huán)結(jié)構(gòu),通過把所述循環(huán)轉(zhuǎn)換為有限條件選擇來消除循環(huán)。

      其中,所述代數(shù)規(guī)則為代數(shù)等式的形式,等式左邊是優(yōu)化前的結(jié)構(gòu),等式右邊是優(yōu)化后的結(jié)構(gòu)。

      其中,對所述中間語言程序進(jìn)行到達(dá)定值數(shù)據(jù)流分析,得到該程序中每個點(diǎn)處的變量值,從而對所述程序進(jìn)行合并已知量的優(yōu)化操作。

      其中,此時代數(shù)規(guī)則表現(xiàn)為代數(shù)等式的形式,等式左側(cè)位變量組成的表達(dá)式,而等式右側(cè)為左側(cè)表達(dá)式當(dāng)前的值,此優(yōu)化規(guī)則減少公共表達(dá)式計(jì)算的次數(shù)。

      其中,所述優(yōu)化步驟中向用戶提供優(yōu)化策略定制包括:

      對優(yōu)化后中間語言程序進(jìn)行大量的仿真實(shí)驗(yàn),分析實(shí)驗(yàn)結(jié)果得出優(yōu)化目標(biāo)并轉(zhuǎn)換為代數(shù)規(guī)則。

      其中,不同程序的應(yīng)用場景不同,利用程序仿真模擬運(yùn)行場景,收集程序運(yùn)行時信息,制定優(yōu)化方向,使得優(yōu)化更符合當(dāng)前待優(yōu)化程序的特點(diǎn)。

      本發(fā)明的有益效果包括:

      本發(fā)明基于形式化代數(shù)語義,所有的輸入代碼都可以在代數(shù)規(guī)則的支持下進(jìn)行等價變化。代數(shù)規(guī)則的合理性,保證了轉(zhuǎn)換的正確性。

      本發(fā)明根據(jù)不同的優(yōu)化策略,可以對中間語言進(jìn)行不同程度的優(yōu)化,保證本方法廣泛的應(yīng)用范圍。

      本發(fā)明提供半自動化、半自動化的程序中間代碼優(yōu)化。

      附圖說明

      通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:

      圖1是本發(fā)明基于代數(shù)演算的中間代碼優(yōu)化方法流程圖。

      具體實(shí)施方式

      下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施方式。雖然附圖中顯示了本公開的示例性實(shí)施方式,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施方式所限制。相反,提供這些實(shí)施方式是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。

      根據(jù)本發(fā)明的實(shí)施方式,提出一種基于代數(shù)演算的中間代碼優(yōu)化方法,所述方法包括:高級語言轉(zhuǎn)換步驟,將輸入的源代碼、其他形式的中間語言程序轉(zhuǎn)換成為所述優(yōu)化方法使用的中間語言程序,所述其他形式的中間語言指與所述優(yōu)化方法所使用的中間語言不同的中間語言;

      優(yōu)化步驟,向用戶提供優(yōu)化策略定制,允許用戶提供目標(biāo)平臺硬件特性,定制特別的優(yōu)化策略,使用優(yōu)化策略對所述高級語言轉(zhuǎn)換步驟的中間語言進(jìn)行優(yōu)化,得到經(jīng)過優(yōu)化的中間代碼;

      目標(biāo)代碼生成步驟,將經(jīng)過優(yōu)化的中間代碼生成目標(biāo)平臺的可執(zhí)行機(jī)器碼。

      其中,所述優(yōu)化步驟中向用戶提供優(yōu)化策略定制包括:

      對優(yōu)化后的中間語言程序進(jìn)行控制流和數(shù)據(jù)流分析,總結(jié)出優(yōu)化目標(biāo)并轉(zhuǎn)換為代數(shù)規(guī)則。

      其中,所述優(yōu)化目標(biāo)包括消除復(fù)雜算子或消除循環(huán)冗余。

      其中,對優(yōu)化后的中間語言程序進(jìn)行控制流分析得到該程序的循環(huán)結(jié)構(gòu),通過把所述循環(huán)轉(zhuǎn)換為有限條件選擇來消除循環(huán)。

      其中,所述代數(shù)規(guī)則為代數(shù)等式的形式,等式左邊是優(yōu)化前的結(jié)構(gòu),等式右邊是優(yōu)化后的結(jié)構(gòu)。

      其中,對所述中間語言程序進(jìn)行到達(dá)定值數(shù)據(jù)流分析,得到該程序中每個點(diǎn)處的變量值,從而對所述程序進(jìn)行合并已知量的優(yōu)化操作。

      其中,此時代數(shù)規(guī)則表現(xiàn)為代數(shù)等式的形式,等式左側(cè)位變量組成的表達(dá)式,而等式右側(cè)為左側(cè)表達(dá)式當(dāng)前的值,此優(yōu)化規(guī)則減少公共表達(dá)式計(jì)算的次數(shù)。

      其中,所述優(yōu)化步驟中向用戶提供優(yōu)化策略定制包括:

      對優(yōu)化后中間語言程序進(jìn)行大量的仿真實(shí)驗(yàn),分析實(shí)驗(yàn)結(jié)果得出優(yōu)化目標(biāo)并轉(zhuǎn)換為代數(shù)規(guī)則。

      其中,不同程序的應(yīng)用場景不同,利用程序仿真模擬運(yùn)行場景,收集程序運(yùn)行時信息,制定優(yōu)化方向,使得優(yōu)化更符合當(dāng)前待優(yōu)化程序的特點(diǎn)。

      下面具體講述本發(fā)明所述基于代數(shù)演算的中間代碼優(yōu)化方法。

      實(shí)施例1

      本實(shí)施例以應(yīng)用本發(fā)明基于代數(shù)演算的中間代碼優(yōu)化方法對LLVM中間語言的優(yōu)化為例。

      LLVM是一個支持多種高級語言、多種目標(biāo)平臺,多階段優(yōu)化的編譯器架構(gòu),遵循了標(biāo)準(zhǔn)的編譯器流程準(zhǔn)則,分為高級語言前端、中間代碼優(yōu)化器與后端目標(biāo)代碼生成器三個部分。LLVM前端首先將源程序轉(zhuǎn)換為LLVMIR程序,經(jīng)過一系列的控制流、數(shù)據(jù)流分析后對LLVM IR程序進(jìn)行優(yōu)化,再根據(jù)具體的目標(biāo)處理器平臺生成對應(yīng)的目標(biāo)代碼。

      LLVM IR有三種形式:編譯器IR、寫入文件的字節(jié)碼IR,以及作為匯編語言的IR。這三種表現(xiàn)形式是等價的,它是LLVM中間代碼優(yōu)化段的不同表現(xiàn)形式。將LLVM IR作為高級語言轉(zhuǎn)換模塊的輸入,將其轉(zhuǎn)換為本發(fā)明所述的基于代數(shù)演算的中間代碼優(yōu)化方法使用的中間語言程序,作為代數(shù)系統(tǒng)模塊的輸入。

      通過對控制流與數(shù)據(jù)流的分析,目標(biāo)處理平臺的特征等信息收集,我們將提出程序轉(zhuǎn)化的定向規(guī)則,稱為程序轉(zhuǎn)換規(guī)則,從而有效地支撐LLVM IR程序的優(yōu)化,提高程序質(zhì)量,最終形成一套針對LLVM IR程序優(yōu)化的代數(shù)演算方法,然后利用策略定制器將代數(shù)演算方法存入優(yōu)化策略庫。

      優(yōu)化器可以利用優(yōu)化策略對中間代碼進(jìn)行標(biāo)準(zhǔn)的標(biāo)量優(yōu)化、循環(huán)優(yōu)化以及進(jìn)程間優(yōu)化等。

      目標(biāo)代碼生成模塊可以根據(jù)代數(shù)系統(tǒng)模塊優(yōu)化過的中間代碼,來生成可在目標(biāo)平臺上高效運(yùn)行的機(jī)器碼。

      下面詳細(xì)介紹使用本發(fā)明所述系統(tǒng)對LLVM IR程序進(jìn)行優(yōu)化。

      首先,對LLVM IR程序應(yīng)用本發(fā)明的方法,將其轉(zhuǎn)換為一種中間語言表示形式。

      然后,使用本發(fā)明為LLVM IR制定優(yōu)化策略,優(yōu)化策略通過以下兩種方式得到:

      1)對LLVM IR程序進(jìn)行控制流和數(shù)據(jù)流分析,總結(jié)出優(yōu)化目標(biāo)(如消除復(fù)雜算子、消除循環(huán)冗余等)并轉(zhuǎn)換為代數(shù)規(guī)則。對程序進(jìn)行控制流分析可以得到程序的控制流結(jié)構(gòu),得到循環(huán)結(jié)構(gòu)后可以通過把循環(huán)轉(zhuǎn)換為有限條件選擇來消除循環(huán)。此處得到的優(yōu)化規(guī)則可以為代數(shù)等式的形式,等式左邊是優(yōu)化前的結(jié)構(gòu),等式右邊是優(yōu)化后的結(jié)構(gòu)。對程序進(jìn)行到達(dá)定值數(shù)據(jù)流分析,可以得到程序中每個點(diǎn)處的變量值,因此可以對程序進(jìn)行合并已知量的優(yōu)化操作。此時優(yōu)化規(guī)則表現(xiàn)為代數(shù)等式的形式,等式左側(cè)位變量組成的表達(dá)式,而等式右側(cè)為左側(cè)表達(dá)式當(dāng)前的值,此優(yōu)化規(guī)則可減少公共表達(dá)式計(jì)算的次數(shù)。

      2)對LLVM IR程序進(jìn)行大量的仿真實(shí)驗(yàn),分析實(shí)驗(yàn)結(jié)果得出優(yōu)化目標(biāo)并轉(zhuǎn)換為代數(shù)規(guī)則。不同程序的應(yīng)用場景不同,利用程序仿真可以模擬一些運(yùn)行場景,收集程序運(yùn)行時信息(CUP使用率、I/O次數(shù)、是否可并行執(zhí)行等),制定優(yōu)化方向,使得優(yōu)化更符合當(dāng)前待優(yōu)化程序的特點(diǎn)。

      得到優(yōu)化策略以后,優(yōu)化器會自動的應(yīng)用優(yōu)化策略到中間語言表示的程序上,最終達(dá)到優(yōu)化的目的。

      最后,可以根據(jù)優(yōu)化過的中間代碼,來生成可在目標(biāo)平臺上高效運(yùn)行的機(jī)器碼。

      以上所述,僅為本發(fā)明較佳的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。

      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1