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

一種面向連續(xù)訪存的程序編譯優(yōu)化方法、系統(tǒng)及設(shè)備與流程

文檔序號(hào):40480347發(fā)布日期:2024-12-31 12:48閱讀:11來源:國(guó)知局
一種面向連續(xù)訪存的程序編譯優(yōu)化方法、系統(tǒng)及設(shè)備與流程

本發(fā)明屬于計(jì)算軟件,具體涉及一種面向連續(xù)訪存的程序編譯優(yōu)化方法、系統(tǒng)及設(shè)備。


背景技術(shù):

1、risc-v(reduced?instruction?set?computer?-?v)是一種開放的指令集架構(gòu)(instruction?set?architecture,isa),由加州大學(xué)伯克利分校于2010年開始設(shè)計(jì)。risc-v?isa的設(shè)計(jì)著眼于提供一種簡(jiǎn)潔、模塊化的架構(gòu),旨在滿足從嵌入式到高性能計(jì)算的廣泛應(yīng)用需求。risc-v指令集包含了基本的指令集(rv64i),以及一系列的模塊化擴(kuò)展指令集,如乘法-除法擴(kuò)展(m)、原子操作擴(kuò)展(a)、浮點(diǎn)數(shù)擴(kuò)展(f/d)等。該設(shè)計(jì)兼具硬件實(shí)現(xiàn)的簡(jiǎn)便性以及良好的指令集擴(kuò)展性和軟件靈活性。相比于其他商業(yè)指令集架構(gòu),risc-v具備開放、模塊化等優(yōu)勢(shì),因此吸引了眾多硬件工程師設(shè)計(jì)并實(shí)現(xiàn)符合各種市場(chǎng)需求的risc-v處理器。同時(shí),也吸引了很多軟件工程師為其開發(fā)高效的編譯器工具鏈,并編譯優(yōu)化客戶的應(yīng)用軟件。

2、在risc-v處理器中,訪存操作(memory?access)是一個(gè)關(guān)鍵的性能瓶頸,尤其是對(duì)于高性能處理器,例如超標(biāo)量亂序處理器。訪存操作相比于其他指令(例如算數(shù)指令)通常需要更多時(shí)鐘周期才能完成。此瓶頸無法通過硬件迭代升級(jí)簡(jiǎn)單解決,因?yàn)閮?nèi)存頻率基本總低于處理器主頻,因此訪存操作總慢于處理器計(jì)算指令速度(且差距逐步拉大),而且處理器的訪存處理單元數(shù)量有限,而程序訪存操作通常在短時(shí)內(nèi)觸發(fā)多次,導(dǎo)致處理單元緊缺,指令執(zhí)行需要排隊(duì)等待,導(dǎo)致程序執(zhí)行效率低,程序占用內(nèi)存大。


技術(shù)實(shí)現(xiàn)思路

1、本發(fā)明要解決的技術(shù)問題是提供一種面向連續(xù)訪存的程序編譯優(yōu)化方法、系統(tǒng)及設(shè)備,能夠減少訪存次數(shù),提高程序執(zhí)行效率以及減小指令體積。

2、一種面向連續(xù)訪存的程序編譯優(yōu)化方法,包括:

3、將已編碼程序進(jìn)行編譯,得到中間代碼;

4、遍歷所述中間代碼,將中間代碼中的訪存指令存入候選指令隊(duì)列;

5、將所述候選指令隊(duì)列中的訪存指令進(jìn)行兩兩組隊(duì),得到訪存指令對(duì),多個(gè)訪存指令對(duì)組成訪存指令對(duì)隊(duì)列;

6、判斷所述訪存指令對(duì)中的低地址偏移量是否大于ldg類訪存指令立即數(shù)操作數(shù)的取值范圍;

7、若所述訪存指令對(duì)中的低地址偏移量大于ldg類訪存指令立即數(shù)操作數(shù)的取值范圍,則添加立即數(shù)指令在所述訪存指令對(duì)內(nèi);

8、基于所述立即數(shù)指令,將所述訪存指令對(duì)轉(zhuǎn)化為ldg類訪存指令;

9、若所述訪存指令對(duì)中的低地址偏移量小于或等于ldg類訪存指令立即數(shù)操作數(shù)的取值范圍,則基于低地址偏移量以及基址寄存器,將所述訪存指令對(duì)轉(zhuǎn)化為ldg類訪存指令;

10、將所有轉(zhuǎn)化的ldg類訪存指令插入已編碼程序中對(duì)應(yīng)的位置組成新的程序,作為優(yōu)化程序。

11、可選的,所述遍歷所述中間代碼,將中間代碼中的訪存指令存入候選指令隊(duì)列包括:

12、判斷所述中間代碼中的訪存指令存入之前的所述候選指令隊(duì)列是否為空;

13、若所述候選指令隊(duì)列不為空,則基于預(yù)設(shè)規(guī)則確定是否將當(dāng)前訪存指令存入所述候選指令隊(duì)列;

14、若所述候選指令隊(duì)列為空,則將當(dāng)前訪存指令存入所述候選指令隊(duì)列。

15、可選的,所述基于預(yù)設(shè)規(guī)則確定是否將當(dāng)前訪存指令存入所述候選指令隊(duì)列包括:

16、判斷所述當(dāng)前訪存指令的內(nèi)存空間與所述候選指令隊(duì)列中的訪存指令的內(nèi)存空間是否存在重疊,當(dāng)前訪存指令的操作碼與所述候選指令隊(duì)列中的訪存指令的操作碼是否一致,以及當(dāng)前訪存指令的基址寄存器與所述候選指令隊(duì)列中的訪存指令的基址寄存器是否一致;

17、若所述當(dāng)前訪存指令的內(nèi)存空間與所述候選指令隊(duì)列中的訪存指令的內(nèi)存空間不存在重疊、當(dāng)前訪存指令的操作碼與所述候選指令隊(duì)列中的訪存指令的操作碼一致以及當(dāng)前訪存指令的基址寄存器與所述候選指令隊(duì)列中的訪存指令的基址寄存器一致,則將所述當(dāng)前訪存指令存入所述候選指令隊(duì)列。

18、可選的,所述將所述候選指令隊(duì)列中的訪存指令進(jìn)行兩兩組隊(duì),得到訪存指令對(duì)包括:

19、將所述候選指令隊(duì)列中具有相同基址寄存器的訪存指令保存為一個(gè)指令隊(duì)列;

20、根據(jù)所述指令隊(duì)列中的每個(gè)訪存指令的操作碼,判斷所述指令隊(duì)列中的訪存指令是否存在能組成訪存指令對(duì)的訪存指令;

21、若存在能組成訪存指令對(duì)的訪存指令,將所述指令隊(duì)列中能夠組成訪存指令對(duì)的訪存指令進(jìn)行兩兩組隊(duì),得到訪存指令對(duì)。

22、可選的,所述將所述候選指令隊(duì)列中的訪存指令進(jìn)行兩兩組隊(duì),得到訪存指令對(duì)之后包括:

23、判斷所述訪存指令對(duì)是否會(huì)觸發(fā)非對(duì)齊指令異常;

24、若所述訪存指令對(duì)會(huì)觸發(fā)非對(duì)齊指令異常,則將對(duì)應(yīng)的所述訪存指令對(duì)從所述訪存指令隊(duì)列中刪除。

25、可選的,所述ldg類訪存指令組成ldg類訪存指令隊(duì)列,所述將所述訪存指令對(duì)轉(zhuǎn)化為ldg類訪存指令之后包括:

26、判斷所述ldg類訪存指令隊(duì)列中相鄰的ldg類訪存指令的地址是否連續(xù);

27、若所述訪存指令隊(duì)列中相鄰的ldg類訪存指令的地址連續(xù),則將地址連續(xù)的ldg類訪存指令作為合并隊(duì)列,并將所述合并隊(duì)列中多余的立即數(shù)指令刪除。

28、可選的,所述ldg類訪存指令立即數(shù)操作數(shù)的取值范圍取決于ldg類指令硬件設(shè)計(jì)規(guī)格。

29、一種面向連續(xù)訪存的程序編譯優(yōu)化系統(tǒng),包括:

30、編譯模塊,用于將已編碼程序進(jìn)行編譯,得到中間代碼;

31、遍歷模塊,用于遍歷所述中間代碼,將中間代碼中的訪存指令存入候選指令隊(duì)列;

32、組隊(duì)模塊,用于將所述候選指令隊(duì)列中的訪存指令進(jìn)行兩兩組隊(duì),得到訪存指令對(duì),多個(gè)訪存指令對(duì)組成訪存指令對(duì)隊(duì)列;

33、判斷模塊,用于判斷所述訪存指令對(duì)中的低地址偏移量是否大于ldg類訪存指令立即數(shù)操作數(shù)的取值范圍;

34、第一執(zhí)行模塊,若所述訪存指令對(duì)中的低地址偏移量大于ldg類訪存指令立即數(shù)操作數(shù)的取值范圍,則第一執(zhí)行模塊用于添加立即數(shù)指令在所述訪存指令對(duì)內(nèi);

35、轉(zhuǎn)化模塊,用于基于所述立即數(shù)指令,將所述訪存指令對(duì)轉(zhuǎn)化為ldg類訪存指令;

36、第二執(zhí)行模塊,若所述訪存指令對(duì)中的低地址偏移量小于或等于ldg類訪存指令立即數(shù)操作數(shù)的取值范圍,則第二執(zhí)行模塊用于基于低地址偏移量以及基址寄存器,將所述訪存指令對(duì)轉(zhuǎn)化為ldg類訪存指令;

37、合并模塊,用于將所有轉(zhuǎn)化的ldg類訪存指令插入已編碼程序中對(duì)應(yīng)的位置組成新的程序,作為優(yōu)化程序。

38、一種終端設(shè)備,包括存儲(chǔ)器、處理器,所述存儲(chǔ)器儲(chǔ)存有能夠在處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器加載并執(zhí)行所述計(jì)算機(jī)程序時(shí),采用了一種面向連續(xù)訪存的程序編譯優(yōu)化方法。

39、一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器加載并執(zhí)行時(shí),采用了一種面向連續(xù)訪存的程序編譯優(yōu)化方法。

40、本發(fā)明的有益效果是:將已編碼好的程序通過編譯器編譯,得到若干中間代碼,然后遍歷中間代碼,將其中的訪存指令篩選出來存入候選指令隊(duì)列,然后將候選指令隊(duì)列兩兩組隊(duì),得到訪存指令對(duì),判斷訪存指令對(duì)中低地址偏移量是否大于n的取值范圍。如果小于或等于,則直接將訪存指令對(duì)轉(zhuǎn)化為ldg類訪存指令,將轉(zhuǎn)化后的ldg類訪存指令組成新的程序作為優(yōu)化程序。如果大于,即超出ldg類訪存偏移硬件設(shè)計(jì)限制,則偏移步進(jìn)填充方法添加立即數(shù)指令,進(jìn)一步增加ldg類訪存指令生成數(shù)量,將兩個(gè)連續(xù)訪存指令替換成一條連續(xù)ldg類訪存指令,提高了程序的運(yùn)行性能以及減少了代碼體積。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
盈江县| 镇原县| 昌平区| 文登市| 合江县| 贺州市| 綦江县| 高碑店市| 玉田县| 赞皇县| 高邑县| 盐城市| 五常市| 同江市| 安徽省| 固镇县| 乐清市| 靖江市| 筠连县| 嘉祥县| 济源市| 舟曲县| 潮安县| 琼海市| 饶阳县| 四川省| 濮阳市| 清水河县| 贡觉县| 安丘市| 富民县| 平凉市| 三河市| 抚顺县| 泗阳县| 杭锦后旗| 岳池县| 曲松县| 涞水县| 嘉荫县| 新丰县|