[發明專利]編譯方法和編譯器無效
| 申請號: | 200710094327.X | 申請日: | 2007-11-28 |
| 公開(公告)號: | CN101452394A | 公開(公告)日: | 2009-06-10 |
| 發明(設計)人: | 尉紅梅;李中升;漆鋒濱;郭勇 | 申請(專利權)人: | 無錫江南計算技術研究所 |
| 主分類號: | G06F9/45 | 分類號: | G06F9/45;G06F9/38 |
| 代理公司: | 北京集佳知識產權代理有限公司 | 代理人: | 逯長明 |
| 地址: | 214083江蘇*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 編譯 方法 編譯器 | ||
技術領域
本發明涉及編譯方法和編譯器,特別是涉及一種針對包含單指令多數據 擴展指令執行部件的處理器的編譯方法和編譯器。
背景技術
隨著多媒體應用的廣泛發展,現在很多嵌入式處理器都支持多媒體擴展 指令集。多媒體擴展一般都具有一種單指令多數據(SIMD,Single?Instruction Multiple?Data)體系結構,這種結構基于一種短的、固定長度的向量,通常為 64位或128位,多個數據存儲在一個寄存器或存儲單元中。
以往的簡單指令只能一次處理8位、16位、32位或64位的數據操作,現在 隨著128位超字的出現,SIMD結構可以在一條指令中并行地處理4個32位的數 據操作或8個16位的數據操作,例如一個4x32位的SIMD加法指令vs=vs+vb的 操作實例如圖4所示。
SIMD指令集的出現為程序性能的提升帶來了巨大的潛力,通常認為,如 果不去使用SIMD擴展指令,那么50%-75%的處理器能力都被浪費了。使用 這種SIMD指令集的最理想的方法是編譯器能進行自動識別,針對普通的程 序,編譯器盡可能地識別出程序中能使用SIMD指令的部分,從而自動生出 SIMD指令,達到加速的目的。該技術不需要用戶參與,但現階段仍受限于 SIMD識別率不高,適用性比較差。目前用的最多的方法是通過內嵌匯編或庫 調用的方法使用SIMD擴展指令集;直接使用內嵌匯編的方法不利于編譯器的 優化,編譯出來的目標程序代碼效率比較低,所以一般都針對SIMD擴展指令 集提供擴展類型和一組擴展的編譯器內部函數接口,例如針對4x32的SIMD指 令可以增加一種擴展類型:intv4,4x32的SIMD加法就可以在程序中表示成:
intv4?va,vb,vc
vc=va+vb;
調用編譯器內部函數接口是目前使用SIMD擴展指令最為普遍和有效的 方法,能夠保證SIMD運算能進行常規的編譯器優化。
在SIMD擴展指令硬件實現方法上,現在最常用的是在已有簡單指令執行 部件的處理器中,再單獨增加SIMD指令執行部件(例如龍芯)。這種處理器 的簡單指令執行部件和增加的SIMD指令執行部件可以獨立發射指令和并行 執行,這時若程序可以充分利用簡單指令執行部件和SIMD指令執行部件的并 行性,能明顯提高程序的執行效率。
如何充分利用好簡單指令執行部件和SIMD指令執行部件,這需要用戶在 撰寫包含有SIMD指令的程序過程中,同時考慮用好簡單指令執行部件,合理 分配簡單指令執行部件和SIMD指令執行部件的工作量。但是,由用戶在撰寫 程序過程中考慮如何充分利用好簡單指令執行部件和SIMD指令執行部件會 存在以下問題:
1.用戶負擔太重。在程序中顯式地使用擴展數據類型和調用擴展內部函 數接口,這對用戶已是一種很大的負擔。還需額外考慮部件之間工作量平衡, 這要求用戶對系統非常了解,難度非常大。
2.可移植性較差。只要簡單指令執行部件和SIMD指令執行部件的執行 能力有變化,原來的程序就不能很好的適用,這里所說的執行部件的執行能 力是指每個時鐘周期發射的指令數,其是由執行部件的硬件設計實現的。
發明內容
本發明解決的問題是,提供一種編譯方法和編譯器,以充分利用處理器 中的指令執行部件的并行性,提高程序的執行效率,減輕用戶的編程負擔。
為解決上述問題,本發明提供一種編譯方法,包括下述步驟:
識別包含第一指令的循環,所述循環在執行過程中有確定的控制參數, 所述循環不包含轉移指令,且循環中所有的第一指令不存在迭代間的相關性;
統計所述循環中第一指令和第二指令的指令數;
根據所述循環中的第一指令和第二指令的指令數、以及第一指令執行部 件和第二指令執行部件的執行能力,計算循環展開次數和第一指令轉換成第 二指令的循環次數;
若所述循環展開次數不等于1,根據所述循環展開次數對所述循環進行循 環展開,并根據所述第一指令轉換成第二指令的循環次數將所述循環展開中 的第一指令轉換成對應的第二指令。
可選的,所述第一指令是單指令多數據定點指令,第二指令是簡單定點 指令。
可選的,所述第一指令是單指令多數據浮點指令,第二指令是簡單浮點 指令。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于無錫江南計算技術研究所,未經無錫江南計算技術研究所許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200710094327.X/2.html,轉載請聲明來源鉆瓜專利網。





