[發明專利]在編譯過程中改善乘加類指令執行性能的方法有效
| 申請號: | 201310150714.6 | 申請日: | 2013-04-26 |
| 公開(公告)號: | CN103268223A | 公開(公告)日: | 2013-08-28 |
| 發明(設計)人: | 周志德 | 申請(專利權)人: | 深圳中微電科技有限公司 |
| 主分類號: | G06F9/44 | 分類號: | G06F9/44;G06F9/30 |
| 代理公司: | 深圳市科吉華烽知識產權事務所(普通合伙) 44248 | 代理人: | 胡吉科;孫偉 |
| 地址: | 518057 廣東省深圳市南山區高新*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 編譯 過程 改善 乘加類 指令 執行 性能 方法 | ||
1.一種在編譯過程中改善乘加類指令執行性能的方法,其特征在于,包括如下步驟:
?????A)編譯器對源代碼進行編譯,將源代碼轉換為內部表征;并優化所述內部表征;
?????B)產生基于目標處理器的機器碼,對所述機器碼中的偽寄存器分配物理寄存器;
?????C)分別對乘積累加類指令的寄存器分配進行改進,如果存在至少一個累加器空閑,則按照設定條件將至少一個空閑累加器分配給當前乘積累加類指令中的偽寄存器,使其使用所述累加器實行乘積累加;如果當前沒有累加器空閑,則分配普通寄存器到當前乘積累加類指令,再使乘積累加類指令通過兩個獨立的運算實現。
2.根據權利要求1所述的編譯時改善乘加類指令執行性能的寄存器配置方法,其特征在于,所述步驟A)中,在對所述源代碼進行編譯的中端階段,將源代碼中所有的兩數相乘再與另一數相加的表達式均轉換為乘加類指令形式。
3.根據權利要求2所述的在編譯過程中改善乘加類指令執行性能的方法,其特征在于,所述步驟B)中進一步包括:將所有的乘加類指令通過增加一個拷貝指令的步驟,并將其轉換為乘積累加類指令。
4.根據權利要求3所述的在編譯過程中改善乘積累加類指令執行性能的方法,其特征在于,所述步驟B)中采用基于優先權的寄存器分配方法,按照當多個偽寄存器競爭有限數量個物理寄存器時,優先分配執行次數最多的寄存器以及當多個物理寄存器可以配置到一個偽寄存器時,優先采用性能收益最大的物理寄存器配置的方法為所述偽寄存器配置物理寄存器。
5.根據權利要求4所述的在編譯過程中改善乘加類指令執行性能的方法,其特征在于,判讀所述性能收益最大包括:判斷偽寄存器是否出現在一個乘積累加類指令中,如否,為其配置普通物理寄存器;如是,且當前存在至少一個空閑的累加器,將累加器配置到該偽寄存器。
6.根據權利要求5所述的在編譯過程中改善乘加類指令執行性能的方法,其特征在于,所述步驟C)進一步包括:
????如果一個乘積累加類指令沒有分派到累加器,引入一個新的偽寄存器存儲中間結果,并分別執行所述乘積累加類指令源代碼中的兩個運算操作。
7.根據權利要求5所述的在編譯過程中改善乘加類指令執行性能的方法,其特征在于,所述步驟C)進一步包括:在一個累加器被分配作為一個普通指令操作結果的情況下,如果該指令是拷貝指令,轉換該指令為初始化累加器指令;否則,使用一個新的偽寄存器取代累加器,并插入一個初始化累加器指令,使用所述普通指令中的偽寄存器初始化累加器。
8.?根據權利要求5所述的在編譯過程中改善乘加類指令執行性能的方法,其特征在于,所述步驟C)進一步包括:當一個拷貝指令的操作數是累加器時,轉換該指令為累加器數值移出指令。
9.根據權利要求5所述的在編譯過程中改善乘加類指令執行性能的方法,其特征在于,所述步驟C)進一步包括:當指令中的操作數是累加器時,引入一個偽寄存器并在該指令之前插入一個將累加器數值移動到所述偽寄存器的累加器數值移出指令,然后在該指令中所有累加器出現的操作中使用所述偽寄存器代替累加器。
10.根據權利要求1-9任意一項所述的在編譯過程中改善乘加類指令執行性能的方法,其特征在于,所述乘加類指令包括MADD指令、MSUB指令、NMADD指令或/和NMSUB指令。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于深圳中微電科技有限公司,未經深圳中微電科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310150714.6/1.html,轉載請聲明來源鉆瓜專利網。





