亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種優(yōu)化的memset標準庫函數(shù)匯編代碼生成方法

文檔序號:6385144閱讀:590來源:國知局
專利名稱:一種優(yōu)化的memset標準庫函數(shù)匯編代碼生成方法
技術領域
本發(fā)明涉及標準庫函數(shù)匯編代碼生成技術,尤其涉及一種優(yōu)化的memset標準庫函數(shù)匯編代碼生成方法。
背景技術
數(shù)字信號處理任務通常需要完成大量的數(shù)據(jù)計算,如數(shù)字信號處理中常用的 FIR (Finite Impulse Response,有限長單位沖激響應)濾波器和 FFT (Fast Fourier Transformation,快速傅氏變換)算法,而數(shù)組的初始化工作一般由C標準中的memset標準庫函數(shù)完成。在Cll標準中,memset標準庫函數(shù)定義為將某一特定大小的內存區(qū)域全部以特定單字節(jié)數(shù)據(jù)進行填充。由于內存的速度相對于微處理器來說要慢得多,而對于面向數(shù)據(jù)密集型應用的微處理器而言,用于數(shù)據(jù)初始化的memset標準庫函數(shù)屬調用密集型,對其進行優(yōu)化很有意義。一般地,對于具有不同硬件特性的微處理器而言,標準庫函數(shù)在高級語言層面上的實現(xiàn)是一致的。然而,正是因為這種一致性,高級語言層面上的標準庫函數(shù)很難做到針對特定目標體系結構的徹底優(yōu)化。從優(yōu)化的時機出發(fā),在匯編級對程序進行優(yōu)化, 程序越底層,代碼越容易調度,更能有效利用指令集。因此,現(xiàn)代微處理器為了提高處理性能,很多標準庫函數(shù)都是以匯編的形式內嵌靜態(tài)庫中。
上述所提及的memset標準庫函數(shù)所做的操作是把某一特定內存塊全部以特定單字節(jié)數(shù)據(jù)進行填充,其典型實現(xiàn)是單字節(jié)數(shù)據(jù)填充。這種算法實現(xiàn)簡單,當待填充的內存塊規(guī)模較小時,性能尚可。然而,當微處理器的數(shù)據(jù)帶寬大于8比特,且待填充的內存塊規(guī)模較大時,這種單字節(jié)數(shù)據(jù)的填充方式遠沒有發(fā)揮微處理器的數(shù)據(jù)帶寬,性能較低。在大多數(shù)平臺下,從內存對齊邊界處開始對其實現(xiàn)數(shù)據(jù)填充可以充分發(fā)揮微處理器的數(shù)據(jù)帶寬。
現(xiàn)有技術中的GCC(GNU Compiler Collection)編譯器在對memset標準庫函數(shù)實現(xiàn)優(yōu)化時正是利用了這一點,將待填充的內存塊規(guī)模按照目標填充地址對齊與否分為三部分對齊邊界之前的內存塊、對齊填充的內存塊,對齊邊界之后的內存塊。其中,目標地址對齊的內存塊采用多字節(jié)數(shù)據(jù)傳輸指令一次性填充多字節(jié)數(shù)據(jù),不對齊部分仍采用單字節(jié)數(shù)據(jù)傳輸指令完成填充。GCC編譯器對于memset標準庫函數(shù)的優(yōu)化在C語言級別上實現(xiàn)了相同的代碼,然而,在匯編級實現(xiàn)優(yōu)化需要針對不同的體系結構,結合各自的硬件特性分別實現(xiàn),可移植性較差。對于其他自主研發(fā)的微處理器,現(xiàn)有的對于標準庫函數(shù)匯編級的優(yōu)化, 大部分是根據(jù)目標處理器的硬件特性,在由相應編譯器編譯高級語言生成的匯編代碼基礎上,對其進行手工優(yōu)化以獲得當前微處理器上的較優(yōu)性能。然而,這種對于標準庫函數(shù)的優(yōu)化方法,是基于編譯器編譯高級語言得到的匯編代碼,冗余較多,優(yōu)化不夠徹底。發(fā)明內容
本發(fā)明的目的是基于標準庫函數(shù)的行為本質,提供一種優(yōu)化的memset標準庫函數(shù)匯編代碼的生成方法。
為實現(xiàn)上述目的,本發(fā)明提供了一種優(yōu)化的memset標準庫函數(shù)匯編代碼生成方法,該方法包括根據(jù)目標機器的硬件特性,確定待生成的優(yōu)化的填充執(zhí)行片段所具有的屬性特征及規(guī)模;根據(jù)上述待生成的優(yōu)化的填充執(zhí)行片段的規(guī)模,構造集中跳轉表,該集中跳轉表由多條分支跳轉語句構成,每條分支跳轉語句旨在將執(zhí)行路徑引向相應的優(yōu)化的填充執(zhí)行片段;根據(jù)上述集中跳轉表,基于目標機器可用的邏輯運算指令,對輸入參數(shù)中的目標填充地址和填充規(guī)模按照上述待生成的優(yōu)化的填充執(zhí)行片段的屬性特征進行分支判斷,建立輸入參數(shù)集到集中跳轉表的映射關系;根據(jù)目標機器可用的數(shù)據(jù)傳輸指令集、上述待生成的優(yōu)化的填充執(zhí)行片段所具有的屬性特征,即特定的填充要求信息,生成滿足填充要求的所有填充模式構成的填充模式集合;根據(jù)目標機器的硬件特性,對上述填充模式集合進行性能篩選,得到具有最優(yōu)填充性能的填充模式,由此生成優(yōu)化的填充執(zhí)行片段。
本發(fā)明實施例基于標準庫函數(shù)的行為本質,設計了一種優(yōu)化的memset標準庫函數(shù)匯編代碼生成方法,該方法生成的memset標準庫函數(shù)匯編代碼在執(zhí)行時,能夠根據(jù)輸入參數(shù),即填充要求信息,實現(xiàn)具有針對性優(yōu)化地數(shù)據(jù)填充,且只需通過修改硬件特性自定義文件,可擴展到其他基于RISC (Reduced Instruction Set Computer,精簡指令集計算機)的體系結構上,可移植性較好。


通過以下結合附圖以舉例方式對本發(fā)明的實施方式進行詳細描述后,本發(fā)明的其他特征、特點和優(yōu)點將會更加明顯。圖1為本發(fā)明實施例提供的一種優(yōu)化的memset標準庫函數(shù)匯編代碼生成方法流程不意圖;圖2為本發(fā)明實施例優(yōu)化的填充執(zhí)行片段生成的框圖;圖3為本發(fā)明實施例填充數(shù)據(jù)的擴展示意圖;圖4為本發(fā)明實施例數(shù)據(jù)填充任務的分解示意圖;圖5為本發(fā)明實施例基本填充模式生成時的功能篩除流程示意圖;圖6 (a)為本發(fā)明實施例數(shù)據(jù)規(guī)模為16的一種填充模式;圖6 (b)為本發(fā)明實施例數(shù)據(jù)規(guī)模為16的另一種填充模式。
具體實施例方式下面通過附圖和實施例,對本申請的技術方案做進一步的詳細描述。數(shù)組的初始化工作通常由C標準中的memset標準庫函數(shù)完成。由于C語言中的memset標準庫函數(shù)出于兼容性考慮,在速度上落后于根據(jù)特定體系結構的目標機器寫出來的匯編代碼。基于優(yōu)化理論基礎,程序越底層,代碼越容易調度,更能有效利用指令集。而匯編代碼是編譯器結合目標機器的硬件特性,將高級語言通過編譯優(yōu)化,代碼塊合并等操作后生成。因此,現(xiàn)代微處理器為了提高處理性能,很多標準庫函數(shù)都是以匯編的形式內嵌靜態(tài)庫中。而標準庫函數(shù)的優(yōu)化不同于其他開發(fā)程序的優(yōu)化標準庫函數(shù)的行為明確,可根據(jù)其行為描述直接生成優(yōu)化的代碼,而非在冗余代碼基礎上作修改使其性能較優(yōu)。在Cll 標準中,memset 標準庫函數(shù)原型為 void*memset (void*s, intc, size_t, η),其中輸入參數(shù)s、c和η分別對應于目標填充地址、特定填充數(shù)據(jù)和填充規(guī)模。memset標準庫函數(shù)本質是將某一特定內存區(qū)域以特定單字節(jié)數(shù)據(jù)填充,通常用于為新申請的內存塊進行初始化。其典型執(zhí)行是單字節(jié)的數(shù)據(jù)填充,然而這種算法在內存塊較小時性能尚可,當待填充的內存塊較大時,多次循環(huán)耗時代價大,性能極低。因此,如何實現(xiàn)多字節(jié)的填充是眾多memset標準庫函數(shù)優(yōu)化算法的設計重點。現(xiàn)代微處理器的指令集都提供了字節(jié),半字、字尋址,支持多字節(jié)數(shù)據(jù)傳輸。為了充分發(fā)揮處理器的數(shù)據(jù)帶寬,在采用多字節(jié)數(shù)據(jù)傳輸指令對特定內存塊實現(xiàn)數(shù)據(jù)填充時,需要考慮目標填充地址的對齊問題。例如,4字節(jié)數(shù)據(jù)傳輸指令要求目標填充地址必須為4字節(jié)對齊,否則不對齊的訪問會觸發(fā)異常。因此,根據(jù)待填充內存地址對齊與否,選取可用的數(shù)據(jù)傳輸指令,是生成優(yōu)化的memset標準庫函數(shù)匯編代碼的關鍵所在。另外,考慮到待填充的數(shù)據(jù)在高速緩沖存儲器(Cache)中不命中時,會影響函數(shù)執(zhí)行性能。因此,以Cache塊大小為填充規(guī)模的上界,每次只以Cache塊大小為循環(huán)填充單位,從降低Cache缺失率的角度上提高了 memset標準庫函數(shù)的執(zhí)行性能。綜上,優(yōu)化的memset標準庫函數(shù)在執(zhí)行時,根據(jù)輸入參數(shù),進行分支判斷,依據(jù)判斷結果分別跳轉到具有針對性優(yōu)化地填充執(zhí)行片段上。因此,優(yōu)化的memset標準庫函數(shù)的匯編代碼需要從填充數(shù)據(jù)的擴展部分、分支判斷部分和優(yōu)化的填充執(zhí)行片段部分這幾個角度由程序自動生成。圖1為本發(fā)明實施例提供的一種優(yōu)化的memset標準庫函數(shù)匯編代碼生成方法流程示意圖。本發(fā)明實施例提供的一種優(yōu)化的memset標準庫函數(shù)的匯編代碼生成方法包括分支判斷部分和優(yōu)化的填充執(zhí)行片段部分。如圖1所示,本發(fā)明實施例包括步驟101-步驟105。步驟101至步驟103主要針對分支判斷部分的生成進行描述。程序生成分支判斷部分時,實際上是要生成從memset標準庫函數(shù)的輸入參數(shù)集,到各個優(yōu)化的填充執(zhí)行片段集的映射關系,即每一種具體的輸入參數(shù)都能夠有唯一的優(yōu)化的填充執(zhí)行片段與之對應。而各個具體的優(yōu)化的填充執(zhí)行片段具有唯一屬性特征,即對齊模式(輸入參數(shù)中的目標填充地址s決定了目標填充地址的對齊模式,對齊模式決定了目標機器可用的數(shù)據(jù)傳輸指令的選擇),填充規(guī)模等信息。依據(jù)目標機器的硬件特性,可得到目標機器可用的數(shù)據(jù)傳輸指令的對齊模式規(guī)模(如8B,4B對齊等),并以目標機器的Cache塊大小為界將填充規(guī)模分類(劃分成填充規(guī)模恰好各自等于O Cache塊大小)。因此,具體填充執(zhí)行片段集的規(guī)模為對齊模式規(guī)模X (Cache塊大小+1)。綜合上述對分支判斷部分生成的探究,分支判斷部分的生成步驟如下在步驟101,根據(jù)目標機器的硬件特性,確定待生成的優(yōu)化的填充執(zhí)行片段所具有的屬性特征及規(guī)模。具體地,根據(jù)目標機器可用的數(shù)據(jù)傳輸指令的對齊模式和目標機器的Cache塊大小,得到目標填充地址的對齊模式和填充規(guī)模,由此確定待生成的優(yōu)化的填充執(zhí)行片段的規(guī)模。在步驟102,根據(jù)所述待生成的優(yōu)化的填充執(zhí)行片段的規(guī)模,構造集中跳轉表,集中跳轉表由多條分支跳轉語句構成。每條分支跳轉語句旨在將執(zhí)行路徑引向相應的優(yōu)化的填充執(zhí)行片段。在步驟103,根據(jù)集中跳轉表,基于目標機器可用的邏輯運算指令,對輸入參數(shù)中的目標填充地址和填充規(guī)模按照待生成的優(yōu)化的填充執(zhí)行片段的屬性特征進行分支判斷,建立輸入參數(shù)集到集中跳轉表的映射關系,該映射關系是一對一或多對一。
需要說明的是,在分支判斷部分生成之前,需要根據(jù)輸入參數(shù)中的特定填充數(shù)據(jù), 將特定單字節(jié)填充數(shù)據(jù)的位數(shù)擴展至目標機器的數(shù)據(jù)寄存器的最大位數(shù)。在Cll標準中, memset標準函數(shù)輸入參數(shù)中的填充數(shù)據(jù)類型定義為整型,而在函數(shù)體中會將特定填充數(shù)據(jù)類型強制轉換為無符號字符型,即memset標準函數(shù)在進行特定內存區(qū)域填充時是以Sbits 數(shù)據(jù)進行重復性填充。然而,每次進行單字節(jié)的數(shù)據(jù)填充遠沒有發(fā)揮處理器的數(shù)據(jù)帶寬。對于一般支持多字節(jié)數(shù)據(jù)傳輸指令的現(xiàn)代微處理器而言,為了實現(xiàn)每次多字節(jié)的內存填充, 需要根據(jù)目標機器的硬件特性,將Sbits的填充數(shù)據(jù)進行擴展,至目標機器的數(shù)據(jù)寄存器的最大位數(shù)。數(shù)據(jù)位數(shù)的擴展可由多種方法實現(xiàn),例如移位、或、加法、乘法等操作。例如, 在數(shù)據(jù)寄存器最大位數(shù)為32位的硬件平臺上,其填充數(shù)據(jù)擴展示意圖如圖3所示。
步驟104至步驟105主要針對優(yōu)化的填充執(zhí)行片段部分的生成進行描述。
優(yōu)化的填充執(zhí)行片段部分是優(yōu)化的memset標準庫函數(shù)匯編代碼實現(xiàn)數(shù)據(jù)填充的主體部分。當優(yōu)化的memset標準庫函數(shù)在執(zhí)行時,該部分能夠根據(jù)目標填充地址和填充規(guī)模,完成具有針對性優(yōu)化地數(shù)據(jù)填充。根據(jù)分支判斷部分中確定的待生成的優(yōu)化的填充執(zhí)行片段所具有的屬性特征,即特定的填充要求(目標填充地址的對齊模式、填充規(guī)模),結合數(shù)據(jù)挖掘思想,生成滿足特定填充要求的所有填充模式構成的填充模式集合?;谀繕藱C器的硬件特性,通過執(zhí)行代價評估,對填充模式集合進行性能篩選,得到具有最優(yōu)填充性能的填充模式,由此生成優(yōu)化的填充執(zhí)行片段。
在步驟104,根據(jù)目標機器可用數(shù)據(jù)傳輸指令集、待生成的優(yōu)化的填充執(zhí)行片段的屬性特征,即具體的填充要求,生成滿足填充要求的填充模式集合。
具體地,如圖2和圖4所示,將填充規(guī)模為η的填充任務分解成頭部填充任務、循環(huán)填充任務和尾部填充任務 ,構成循環(huán)填充的形式。
在實際運用中,當待填充的內存塊區(qū)域較大時,若將整個填充規(guī)模全部展開實現(xiàn)一一填充,不僅得到的填充模式集合規(guī)模極大,且各個填充模式尺寸也與填充規(guī)模成線性增長,導致各個具體的優(yōu)化的填充執(zhí)行片段的匯編代碼規(guī)模急劇。因此,在生成優(yōu)化的填充執(zhí)行片段的過程中,將填充規(guī)模為η的填充任務分解為頭部填充任務,循環(huán)填充任務,尾部填充任務,構成循環(huán)填充的形式。根據(jù)頭部填充任務,循環(huán)填充任務,尾部填充任務,分別對目標機器可用的數(shù)據(jù)傳輸指令集施以基本填充模式生成算法,分別得到頭部填充模式集合、循環(huán)填充模式集合、尾部填充模式集合,并分別將頭部填充模式集合、循環(huán)填充模式集合、尾部填充模式集合中的各個元素進行有序組合后得到組合填充模式集合,其中的各個元素,即構成了優(yōu)化的填充執(zhí)行片段匯編代碼的主體。
以下針對基本填充模式生成算法進行描述
Memset標準庫函數(shù)的行為本質為某一特定內存區(qū)域的填充。根據(jù)填充要求,結合目標機器可用的數(shù)據(jù)傳輸指令集及其相應的地址對齊要求,可得到滿足填充要求的所有填充模式構成的填充模式集合。
在線性空間中,作如下定義集合Γ為目標機器支持的指令集,i為其中的某條具體數(shù)據(jù)傳輸指令(具備屬性bytes,代表該指令可傳輸?shù)臄?shù)據(jù)字節(jié)數(shù)),則可定義集合Φ為目標機器可用的數(shù)據(jù)傳輸指令集(Φ = Ki e Γ ) I1. behavior_attri = M0VE_DATA_T0_ MEM}),定義滿足填充要求的所有填充模式構成的集合Ψ = Ki1, i2,…,in) I (i1; i2,…,in e Φ) Λ SumQ1. bytes, i2. bytes, .··, in. bytes) = SIZE}其中,SIZE 為填充要求中的填充規(guī)模,sum為常用求和函數(shù)。由于匯編代碼的實現(xiàn)依賴于目標硬件平臺,因此填充模式的生成與目標機器的硬件特性密切相關。對于memset標準庫函數(shù)而言,其行為本質是對特定內存區(qū)域進行特定單字節(jié)數(shù)據(jù)的填充。因此,在生成填充模式時,需要根據(jù)數(shù)據(jù)傳輸指令的地址對齊要求,對目標機器可用的數(shù)據(jù)傳輸指令集施以功能篩除。如果在模式生成過程中,當前地址不能滿足當前填充模式生成需要的相關條件,如數(shù)據(jù)傳輸指令相應的地址對齊要求,則當前模式生成失效。具體功能篩除實現(xiàn)如圖5所示,首先,遍歷目標機器可用的數(shù)據(jù)傳輸指令集,視當前數(shù)據(jù)傳輸指令為i ;其次,判斷當前地址是否滿足當前數(shù)據(jù)傳輸指令相應的地址對齊要求,如果滿足,則將當前的數(shù)據(jù)傳輸指令按序添加到當前填充模式;否則,篩除當前數(shù)據(jù)傳輸指令,遍歷下一條數(shù)據(jù)傳輸指令。當前填充模式生成完成后,對其調用性能評估函數(shù),如果當前填充模式被篩掉,則開始新一輪的填充模式生成;否則,將當前填充模式添加到填充模式集合。
·
在根據(jù)某一具體填充要求生成填充模式時,基于memset函數(shù)的行為本質,在進行功能篩除后,能夠明確得到滿足填充要求的所有填充模式構成的集合Ψ。對于集合Ψ中的各元素Ak (η元組(i” i2,…,in)),Ak的執(zhí)行性能取決于它含有的元素個數(shù)。如在填充規(guī)模為16,其余填充要求相同的情況下,生成的兩種典型的填充模式如圖6 (a)和圖6 (b)所示圖6中(a)為典型的每次傳輸單字節(jié)的填充模式,圖6(b)為每次傳輸4字節(jié)的填充模式。對比二者可知,當填充模式含有的元素個數(shù)越少時,匯編代碼的規(guī)模也越小,填充數(shù)據(jù)時處理器與內存的交互次數(shù)越少。而且,對于一般的微處理器來說,單、多字節(jié)的數(shù)據(jù)傳輸指令執(zhí)行代價上無異。因此,越精簡的填充模式越能有效利用指令集,充分發(fā)揮處理器的數(shù)據(jù)帶寬。因此,以填充模式的元素個數(shù)為衡量標準,對集合Ψ調用性能評估函數(shù),經過濾除,得到最精簡的填充模式填充模式。對于某一特定填充要求,其基本填充模式填充模式的生成步驟如下I、當前填充模式生成入口,2、遍歷目標機器可用的數(shù)據(jù)傳輸指令集Φ,視當前傳輸指令為i,3、對指令i調用篩選函數(shù)施以功能篩選(如圖5所示),若當前指令被篩選掉,則轉向2,否則,轉向4,4、將當前指令i按序添加到當前填充模式,并判斷當前填充模式是否完成,若未完成,則轉向2,否則轉向5,5、對當前填充模式調用性能評估函數(shù),若當前填充模式被濾除,則開始新一輪的填充模式生成,即轉向1,否則,轉向6,6、當前填充要求下的填充模式集合添加當前填充模式。在某一特定填充要求下,按上述步驟得到的填充模式集合Ψ是符合填充要求的全集,規(guī)模極大。基于庫函數(shù)的行為本質可知,Ψ中至少含有一個元素,即單字節(jié)的數(shù)據(jù)填充,S卩Q1, i2,…,in)(其中i2,…,1 均為指令集中的單字節(jié)數(shù)據(jù)傳輸指令),雖然該元素非最優(yōu)解。在步驟105,根據(jù)目標機器的硬件特性,對填充模式集合進行性能篩選,得到具有最優(yōu)填充性能的填充模式,由此生成優(yōu)化的填充執(zhí)行片段。
對于一般的微處理器而言,匯編代碼的執(zhí)行代價的指標之一為指令的執(zhí)行周期數(shù),這一指標與目標機器的硬件特性密切相關,可根據(jù)不同體系結構在硬件特性自定義文件中定義。Memset標準庫函數(shù)的行為本質為特定內存區(qū)域中的數(shù)據(jù)填充,因此匯編代碼中的數(shù)據(jù)傳輸指令的執(zhí)行代價在很大程度上決定了整個填充執(zhí)行片段的執(zhí)行代價。根據(jù)目標機器的硬件特性自定義文件中的指令執(zhí)行代價信息,計算組合填充模式集合中各個填充模式執(zhí)行代價總和,以指令執(zhí)行代價為衡量標準,通過對組合填充模式集合進行篩選,得到執(zhí)行代價最小的填充模式。由此生成具有針對性優(yōu)化的具體填充執(zhí)行片段。
本發(fā)明實施例基于標準庫函數(shù)的行為本質,設計了一種由程序生成優(yōu)化的memset 標準庫函數(shù)匯編代碼生成方法,該方法生成的memset標準庫函數(shù)匯編代碼在執(zhí)行時,能夠根據(jù)輸入參數(shù),實現(xiàn)具有針對性優(yōu)化地數(shù)據(jù)填充,且只需通過修改硬件特性自定義文件,可擴展到其他基于RISC (Reduced Instruction Set Computer,精簡指令集計算機)的體系結構上,可移植性較好。
顯而易見,在不偏離本發(fā)明的真實精神和范圍的前提下,在此描述的本發(fā)明可以有許多變化。因此,所有對于本領域技術人員來說顯而易見的改變,都應包括在本權利要求書所涵蓋的范圍之內。本發(fā)明所要求保護的范圍僅由所述的權利要求書進行限定。
權利要求
1.一種優(yōu)化的memset標準庫函數(shù)匯編代碼生成方法,其特征在于 根據(jù)目標機器的硬件特性,確定待生成的優(yōu)化的填充執(zhí)行片段所具有的屬性特征及規(guī)模; 根據(jù)所述待生成的優(yōu)化的填充執(zhí)行片段的規(guī)模,構造集中跳轉表,所述集中跳轉表由多條分支跳轉語句構成,每條分支跳轉語句旨在將執(zhí)行路徑引向相應的優(yōu)化的填充執(zhí)行片段; 根據(jù)所述集中跳轉表,基于目標機器可用的邏輯運算指令,對輸入參數(shù)中的目標填充地址和填充規(guī)模按照所述待生成的優(yōu)化的填充執(zhí)行片段的屬性特征進行分支判斷,建立輸入參數(shù)集到所述集中跳轉表的映射關系; 根據(jù)目標機器可用的數(shù)據(jù)傳輸指令集、所述待生成的優(yōu)化的填充執(zhí)行片段的屬性特征,生成滿足填充要求的填充模式集合; 根據(jù)所述目標機器的硬件特性,對所述填充模式集合進行性能篩選,得到具有最優(yōu)填充性能的填充模式,由此生成優(yōu)化的填充執(zhí)行片段。
2.根據(jù)權利要求I所述的方法,其特征在于所述根據(jù)所述待生成的優(yōu)化的填充執(zhí)行片段的屬性特征,生成滿足填充要求的填充模式集合步驟包括 根據(jù)所述待生成的優(yōu)化的填充執(zhí)行片段的屬性特征,將數(shù)據(jù)填充規(guī)模為η的填充任務分解成頭部填充任務、循環(huán)填充任務和尾部填充任務; 根據(jù)所述頭部填充任務、循環(huán)填充任務和尾部填充任務,分別對目標機器可用的數(shù)據(jù)傳輸指令集分別施以基本填充模式生成算法,得到滿足所述頭部填充任務、循環(huán)填充任務和尾部填充任務的頭部填充模式集合、循環(huán)填充模式集合、尾部填充模式集合。
3.根據(jù)權利要求2所述的方法,其特征在于所述基本填充模式生成算法通過以下步驟實現(xiàn) 遍歷目標機器可用的數(shù)據(jù)傳輸指令集; 判斷當前地址是否滿足當前數(shù)據(jù)傳輸指令相應的地址對齊要求,如果滿足,則將當前的數(shù)據(jù)傳輸指令按序添加到當前填充模式;否則,篩除當前數(shù)據(jù)傳輸指令,遍歷下一條數(shù)據(jù)傳輸指令; 當所述當前填充模式生成完成后,對所述當前填充模式進行性能評估,如果當前填充模式被濾除,則開始新一輪的填充模式生成;否則,將當前填充模式添加到填充模式集合。
4.根據(jù)權利要求3所述的方法,其特征在于對所述當前填充模式進行性能評估是以當前填充模式中的元素個數(shù)為衡量標準,對當前填充模式進行篩選。
5.根據(jù)權利要求I所述的方法,其特征在于所述根據(jù)所述目標機器的硬件特性,對所述填充模式集合進行性能篩選,得到具有最優(yōu)填充性能的填充模式步驟包括 根據(jù)目標機器的硬件特性自定義文件中的指令執(zhí)行代價信息,計算所述填充模式集合中各個填充模式的執(zhí)行代價總和,以指令執(zhí)行代價為衡量標準,通過對所述填充模式集合進行篩選,得到執(zhí)行代價最小的填充模式。
6.根據(jù)權利要求I所述的方法,其特征在于在所述構造集中跳轉表步驟之前還包括 根據(jù)輸入參數(shù)中的特定單字節(jié)填充數(shù)據(jù),通過目標機器支持的移位、邏輯或、加法和乘法中的一種或多種操作,將特定單字節(jié)填充數(shù)據(jù)的位數(shù)擴展至目標機器的數(shù)據(jù)寄存器的最大位數(shù)。
7.根據(jù)權利要求I所述的方法,其特征在于所述待生成的優(yōu)化的填充執(zhí)行片段所具有的屬性特征包括目標填充地址的對齊模式和填充規(guī)模。
全文摘要
本發(fā)明公開了一種優(yōu)化的memset標準庫函數(shù)匯編代碼生成方法,包括根據(jù)目標機器的硬件特性,確定待生成的優(yōu)化的填充執(zhí)行片段所具有的屬性特征及規(guī)模;根據(jù)待生成的優(yōu)化的填充執(zhí)行片段的規(guī)模,構造集中跳轉表;根據(jù)集中跳轉表,對輸入參數(shù)中的目標填充地址和填充規(guī)模進行分支判斷,建立輸入參數(shù)集到集中跳轉表的映射關系;根據(jù)目標機器可用的數(shù)據(jù)傳輸指令集、待生成的優(yōu)化的填充執(zhí)行片段的屬性特征,生成滿足填充要求的填充模式集合;根據(jù)目標機器的硬件特性,對填充模式集合進行性能篩選,得到具有最優(yōu)填充性能的填充模式,由此生成優(yōu)化的填充執(zhí)行片段。本發(fā)明實現(xiàn)了優(yōu)化地數(shù)據(jù)填充,提高了memset標準庫函數(shù)的數(shù)據(jù)填充性能,可移植性好。
文檔編號G06F9/45GK102981886SQ201210563969
公開日2013年3月20日 申請日期2012年12月21日 優(yōu)先權日2012年12月21日
發(fā)明者朱浩, 應歡, 王東輝, 洪纓 申請人:中國科學院聲學研究所
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1