[發(fā)明專利]一種優(yōu)化的memset標準庫函數匯編代碼生成方法有效
| 申請?zhí)枺?/td> | 201210563969.0 | 申請日: | 2012-12-21 |
| 公開(公告)號: | CN102981886A | 公開(公告)日: | 2013-03-20 |
| 發(fā)明(設計)人: | 朱浩;應歡;王東輝;洪纓 | 申請(專利權)人: | 中國科學院聲學研究所 |
| 主分類號: | G06F9/45 | 分類號: | G06F9/45 |
| 代理公司: | 北京億騰知識產權代理事務所 11309 | 代理人: | 陳霽 |
| 地址: | 100190 *** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 優(yōu)化 memset 標準 庫函數 匯編 代碼 生成 方法 | ||
技術領域
本發(fā)明涉及標準庫函數匯編代碼生成技術,尤其涉及一種優(yōu)化的memset標準庫函數匯編代碼生成方法。
背景技術
數字信號處理任務通常需要完成大量的數據計算,如數字信號處理中常用的FIR(Finite?Impulse?Response,有限長單位沖激響應)濾波器和FFT(Fast?Fourier?Transformation,快速傅氏變換)算法,而數組的初始化工作一般由C標準中的memset標準庫函數完成。在C11標準中,memset標準庫函數定義為將某一特定大小的內存區(qū)域全部以特定單字節(jié)數據進行填充。由于內存的速度相對于微處理器來說要慢得多,而對于面向數據密集型應用的微處理器而言,用于數據初始化的memset標準庫函數屬調用密集型,對其進行優(yōu)化很有意義。一般地,對于具有不同硬件特性的微處理器而言,標準庫函數在高級語言層面上的實現是一致的。然而,正是因為這種一致性,高級語言層面上的標準庫函數很難做到針對特定目標體系結構的徹底優(yōu)化。從優(yōu)化的時機出發(fā),在匯編級對程序進行優(yōu)化,程序越底層,代碼越容易調度,更能有效利用指令集。因此,現代微處理器為了提高處理性能,很多標準庫函數都是以匯編的形式內嵌靜態(tài)庫中。
上述所提及的memset標準庫函數所做的操作是把某一特定內存塊全部以特定單字節(jié)數據進行填充,其典型實現是單字節(jié)數據填充。這種算法實現簡單,當待填充的內存塊規(guī)模較小時,性能尚可。然而,當微處理器的數據帶寬大于8比特,且待填充的內存塊規(guī)模較大時,這種單字節(jié)數據的填充方式遠沒有發(fā)揮微處理器的數據帶寬,性能較低。在大多數平臺下,從內存對齊邊界處開始對其實現數據填充可以充分發(fā)揮微處理器的數據帶寬。
現有技術中的GCC(GNU?Complier?Collection)編譯器在對memset標準庫函數實現優(yōu)化時正是利用了這一點,將待填充的內存塊規(guī)模按照目標填充地址對齊與否分為三部分:對齊邊界之前的內存塊、對齊填充的內存塊,對齊邊界之后的內存塊。其中,目標地址對齊的內存塊采用多字節(jié)數據傳輸指令一次性填充多字節(jié)數據,不對齊部分仍采用單字節(jié)數據傳輸指令完成填充。GCC編譯器對于memset標準庫函數的優(yōu)化在C語言級別上實現了相同的代碼,然而,在匯編級實現優(yōu)化需要針對不同的體系結構,結合各自的硬件特性分別實現,可移植性較差。對于其他自主研發(fā)的微處理器,現有的對于標準庫函數匯編級的優(yōu)化,大部分是根據目標處理器的硬件特性,在由相應編譯器編譯高級語言生成的匯編代碼基礎上,對其進行手工優(yōu)化以獲得當前微處理器上的較優(yōu)性能。然而,這種對于標準庫函數的優(yōu)化方法,是基于編譯器編譯高級語言得到的匯編代碼,冗余較多,優(yōu)化不夠徹底。
發(fā)明內容
本發(fā)明的目的是基于標準庫函數的行為本質,提供一種優(yōu)化的memset標準庫函數匯編代碼的生成方法。
為實現上述目的,本發(fā)明提供了一種優(yōu)化的memset標準庫函數匯編代碼生成方法,該方法包括:
根據目標機器的硬件特性,確定待生成的優(yōu)化的填充執(zhí)行片段所具有的屬性特征及規(guī)模;根據上述待生成的優(yōu)化的填充執(zhí)行片段的規(guī)模,構造集中跳轉表,該集中跳轉表由多條分支跳轉語句構成,每條分支跳轉語句旨在將執(zhí)行路徑引向相應的優(yōu)化的填充執(zhí)行片段;根據上述集中跳轉表,基于目標機器可用的邏輯運算指令,對輸入參數中的目標填充地址和填充規(guī)模按照上述待生成的優(yōu)化的填充執(zhí)行片段的屬性特征進行分支判斷,建立輸入參數集到集中跳轉表的映射關系;根據目標機器可用的數據傳輸指令集、上述待生成的優(yōu)化的填充執(zhí)行片段所具有的屬性特征,即特定的填充要求信息,生成滿足填充要求的所有填充模式構成的填充模式集合;根據目標機器的硬件特性,對上述填充模式集合進行性能篩選,得到具有最優(yōu)填充性能的填充模式,由此生成優(yōu)化的填充執(zhí)行片段。
本發(fā)明實施例基于標準庫函數的行為本質,設計了一種優(yōu)化的memset標準庫函數匯編代碼生成方法,該方法生成的memset標準庫函數匯編代碼在執(zhí)行時,能夠根據輸入參數,即填充要求信息,實現具有針對性優(yōu)化地數據填充,且只需通過修改硬件特性自定義文件,可擴展到其他基于RISC(Reduced?Instruction?Set?Computer,精簡指令集計算機)的體系結構上,可移植性較好。
附圖說明
通過以下結合附圖以舉例方式對本發(fā)明的實施方式進行詳細描述后,本發(fā)明的其他特征、特點和優(yōu)點將會更加明顯。
圖1為本發(fā)明實施例提供的一種優(yōu)化的memset標準庫函數匯編代碼生成方法流程示意圖;
圖2為本發(fā)明實施例優(yōu)化的填充執(zhí)行片段生成的框圖;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國科學院聲學研究所,未經中國科學院聲學研究所許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業(yè)授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210563969.0/2.html,轉載請聲明來源鉆瓜專利網。





