国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      匯編級(jí)內(nèi)存復(fù)制標(biāo)準(zhǔn)庫(kù)函數(shù)的生成方法及裝置的制作方法

      文檔序號(hào):6379574閱讀:201來(lái)源:國(guó)知局
      專利名稱:匯編級(jí)內(nèi)存復(fù)制標(biāo)準(zhǔn)庫(kù)函數(shù)的生成方法及裝置的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及微處理器領(lǐng)域,尤其涉及一種匯編級(jí)內(nèi)存復(fù)制庫(kù)函數(shù)的生成方法及裝置。
      背景技術(shù)
      在數(shù)字信號(hào)處理領(lǐng)域,微處理器是面向數(shù)據(jù)密集型的應(yīng)用,通常需要完成大量的實(shí)時(shí)計(jì)算。其中,內(nèi)存復(fù)制標(biāo)準(zhǔn)庫(kù)函數(shù)(memcpy標(biāo)準(zhǔn)庫(kù)函數(shù))是最常用的庫(kù)函數(shù)之一,在微處理器進(jìn)行多媒體編解碼過(guò)程中會(huì)被頻繁調(diào)用,屬調(diào)用密集型函數(shù),對(duì)其進(jìn)行優(yōu)化有助于提高微處理器數(shù)據(jù)處理性能。memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)目的是實(shí)現(xiàn)內(nèi)存中任意規(guī)模的數(shù)據(jù)搬移。一般地,對(duì)于具有不同硬件特性的微處理器來(lái)說(shuō),標(biāo)準(zhǔn)庫(kù)函數(shù)在高級(jí)語(yǔ)言層面上的實(shí)現(xiàn)代 碼是一致的。然而,正是因?yàn)檫@種一致性,高級(jí)語(yǔ)言層面上的標(biāo)準(zhǔn)庫(kù)函數(shù)很難做到針對(duì)特定目標(biāo)體系結(jié)構(gòu)的徹底優(yōu)化。基于優(yōu)化理論,對(duì)程序的匯編級(jí)進(jìn)行優(yōu)化,程序越底層,代碼越容易調(diào)試,更能有效利用指令集。因此,現(xiàn)代微處理器為了提高處理性能,很多標(biāo)準(zhǔn)庫(kù)函數(shù)都是以匯編的形式內(nèi)嵌靜態(tài)庫(kù)中。memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)的典型實(shí)現(xiàn)算法是單字節(jié)數(shù)據(jù)搬移,即單字節(jié)從內(nèi)存中讀數(shù),單字節(jié)寫(xiě)回內(nèi)存。這種算法實(shí)現(xiàn)簡(jiǎn)單,當(dāng)數(shù)據(jù)規(guī)模較小時(shí),性能尚可。然而,當(dāng)處理器的數(shù)據(jù)帶寬大于8bits,且數(shù)據(jù)規(guī)模較大時(shí),這種單字節(jié)的搬移方式,遠(yuǎn)沒(méi)有發(fā)揮處理器的數(shù)據(jù)帶寬,搬移性能極低。在大多數(shù)平臺(tái)下,從內(nèi)存對(duì)齊邊界開(kāi)始拷貝可以充分發(fā)揮處理器的數(shù)據(jù)帶寬。編譯器套裝(GNU Compiler Collection, GCC)在對(duì)memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)實(shí)現(xiàn)優(yōu)化時(shí)正是利用了這一點(diǎn),將待搬移數(shù)據(jù)按照地址對(duì)齊與否分為三部分對(duì)齊邊界之前的數(shù)據(jù),對(duì)齊拷貝的數(shù)據(jù),剩余數(shù)據(jù)。地址對(duì)齊部分采用多字節(jié)數(shù)據(jù)搬移指令實(shí)現(xiàn)搬移,不對(duì)齊部分仍采用單字節(jié)數(shù)據(jù)搬移。然而,GCC對(duì)于memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)的優(yōu)化,在C語(yǔ)言級(jí)別上實(shí)現(xiàn)了相同的代碼,而在匯編級(jí)實(shí)現(xiàn)優(yōu)化需要針對(duì)不同的體系結(jié)構(gòu),結(jié)合各自的硬件特性分別實(shí)現(xiàn),可移植性較差。Intel公司在匯編級(jí)對(duì)memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)進(jìn)行優(yōu)化時(shí),結(jié)合其指令集中的16B對(duì)齊數(shù)據(jù)搬移指令,將需要搬移的數(shù)據(jù)細(xì)分成16種情況對(duì)齊搬移和15種不對(duì)齊搬移。其中,地址不對(duì)齊的數(shù)據(jù)通過(guò)移位、寄存器拼接等操作,從而使得待搬移數(shù)據(jù)全部歸一化,均可用對(duì)齊數(shù)據(jù)搬移指令來(lái)完成數(shù)據(jù)搬移。然而,當(dāng)數(shù)據(jù)規(guī)模較大,且地址不對(duì)齊時(shí),移位等操作的代價(jià)也會(huì)對(duì)整體優(yōu)化產(chǎn)生負(fù)面影響。

      發(fā)明內(nèi)容
      本發(fā)明實(shí)施例提供了一種匯編級(jí)內(nèi)存復(fù)制標(biāo)準(zhǔn)庫(kù)函數(shù)的生成方法及裝置,生成的匯編級(jí)memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)具有較優(yōu)的搬移性能,并且可移植性較好。在第一方面,本發(fā)明實(shí)施例提供了一種匯編級(jí)memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)的生成方法,所述方法包括
      根據(jù)數(shù)據(jù)搬移要求、目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集及其相應(yīng)的地址對(duì)齊要求和當(dāng)前可用的硬件資源信息,對(duì)所述目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集進(jìn)行第一功能篩選,生成滿足搬移要求的搬移模式集合;根據(jù)每個(gè)搬移模式含有的數(shù)據(jù)搬移指令個(gè)數(shù),對(duì)所述搬移模式集合進(jìn)行第一性能篩選,得到最精簡(jiǎn)搬移模式;根據(jù)所述最精簡(jiǎn)搬移模式生成匯編級(jí)內(nèi)存復(fù)制標(biāo)準(zhǔn)庫(kù)函數(shù)。在第二方面,本發(fā)明實(shí)施例提供了又一種匯編級(jí)memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)的生成方法,所述方法包括將搬移任務(wù)分解為頭部搬移任務(wù)、循環(huán)搬移任務(wù)和尾部搬移任務(wù);
      分別根據(jù)所述頭部搬移任務(wù)、循環(huán)搬移任務(wù)、尾部搬移任務(wù)、目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集及其相應(yīng)的地址對(duì)齊要求和所述目標(biāo)機(jī)器當(dāng)前可用的硬件資源信息,對(duì)所述目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集進(jìn)行第一功能篩選,并且分別生成第一頭部搬移模式集合、第一循環(huán)搬移模式集合和第一尾部搬移模式集合;根據(jù)每個(gè)搬移模式所含有的數(shù)據(jù)搬移指令個(gè)數(shù),對(duì)所述第一頭部搬移模式集合、第一循環(huán)搬移模式集合和第一尾部搬移模式集合分別進(jìn)行第一性能篩選,分別生成第二頭部搬移模式集合、第二循環(huán)搬移模式集合和第二尾部搬移模式集合;將所述第二頭部搬移模式集合、第二循環(huán)搬移模式集合和第二尾部搬移模式集合中相應(yīng)的各個(gè)元素進(jìn)行有序組合得到組合搬移模式集合,根據(jù)所述組合搬移模式集合中各個(gè)元素含有的各條指令執(zhí)行代價(jià),對(duì)所述組合搬移模式集合進(jìn)行第二性能篩選,得到滿足數(shù)據(jù)搬移要求的執(zhí)行代價(jià)最小的組合搬移模式;根據(jù)所述組合搬移模式生成匯編級(jí)內(nèi)存復(fù)制標(biāo)準(zhǔn)庫(kù)函數(shù)。在第三方面,本發(fā)明實(shí)施例提供了一種匯編級(jí)memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)的生成裝置,所述裝置包括第一功能篩選單元,用于根據(jù)數(shù)據(jù)搬移要求、目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集及其相應(yīng)的地址對(duì)齊要求和當(dāng)前可用的硬件資源信息,對(duì)所述目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集進(jìn)行第一功能篩選,生成滿足搬移要求的搬移模式集合;第一性能篩選單元,用于根據(jù)每個(gè)搬移模式含有的數(shù)據(jù)搬移指令個(gè)數(shù),對(duì)所述搬移模式集合進(jìn)行第一性能篩選,得到最精簡(jiǎn)搬移模式;生成單元,用于根據(jù)所述最精簡(jiǎn)搬移模式生成匯編級(jí)內(nèi)存復(fù)制標(biāo)準(zhǔn)庫(kù)函數(shù)。在第四方面,本發(fā)明實(shí)施例提供了又一種匯編級(jí)memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)的生成裝置,所述裝置包括分解單元,用于將搬移任務(wù)分解為頭部搬移任務(wù)、循環(huán)搬移任務(wù)和尾部搬移任務(wù);第一功能篩選單元,用于分別根據(jù)所述頭部搬移任務(wù)、循環(huán)搬移任務(wù)、尾部搬移任務(wù)、目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集及其相應(yīng)的地址對(duì)齊要求和所述目標(biāo)機(jī)器當(dāng)前可用的硬件資源信息,對(duì)所述目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集進(jìn)行第一功能篩選,并且分別生成第一頭部搬移模式集合、第一循環(huán)搬移模式集合和第一尾部搬移模式集合;第一性能篩選單元,用于根據(jù)每個(gè)搬移模式所含有的數(shù)據(jù)搬移指令個(gè)數(shù),對(duì)所述第一頭部搬移模式集合、第一循環(huán)搬移模式集合和第一尾部搬移模式集合分別進(jìn)行第一性能篩選,分別生成第二頭部搬移模式集合、第二循環(huán)搬移模式集合和第二尾部搬移模式集合;第二性能篩選單元,用于將所述第二頭部搬移模式集合、第二循環(huán)搬移模式集合和第二尾部搬移模式集合中相應(yīng)的各個(gè)元素進(jìn)行有序組合得到組合搬移模式集合,根據(jù)所述組合搬移模式集合中各個(gè)元素含有的各條指令執(zhí)行代價(jià),對(duì)所述組合搬移模式集合進(jìn)行第二性能篩選,得到滿足數(shù)據(jù)搬移要求的執(zhí)行代價(jià)最小的組合搬移模式;生成單元,用于根據(jù)所述組合搬移模式生成匯編級(jí)內(nèi)存復(fù)制標(biāo)準(zhǔn)庫(kù)函數(shù)。根據(jù)本發(fā)明實(shí)施例提供的匯編級(jí)memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)的生成方法及裝置確定的匯編級(jí)memcpy標(biāo)準(zhǔn)庫(kù)函數(shù),搬移性能較優(yōu),可移植性較好。



      圖I是本發(fā)明實(shí)施例一提供的匯編級(jí)memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)的生成方法流程圖;圖2是本發(fā)明實(shí)施例一提供的數(shù)據(jù)規(guī)模為8的搬移模式匯編代碼片段示意圖;圖3是本發(fā)明實(shí)施例二提供的匯編級(jí)memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)的生成方法流程圖;圖4是本發(fā)明實(shí)施例三提供的匯編級(jí)memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)的生成裝置示意圖;圖5是本發(fā)明實(shí)施例四提供的匯編級(jí)memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)的生成裝置示意圖。
      具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖對(duì)本發(fā)明具體實(shí)施例作進(jìn)一步的詳細(xì)描述。memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)的典型實(shí)現(xiàn)算法是單字節(jié)的數(shù)據(jù)搬移,然而這種算法在數(shù)據(jù)規(guī)模較小時(shí)性能尚可,當(dāng)數(shù)據(jù)規(guī)模較大時(shí),實(shí)現(xiàn)代價(jià)很大,性能極低。因此,如何實(shí)現(xiàn)多字節(jié)的拷貝是眾多memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)優(yōu)化算法的設(shè)計(jì)重點(diǎn)?,F(xiàn)代微處理器的指令集都提供了字節(jié)、半字、字尋址,一般都支持多字節(jié)的搬移指令,為了充分發(fā)揮處理器的數(shù)據(jù)帶寬,我們?cè)趦?nèi)存中進(jìn)行數(shù)據(jù)搬移時(shí),根據(jù)目標(biāo)機(jī)器支持的指令集,每次對(duì)有效指令支持的字節(jié)數(shù)進(jìn)行搬移。然而,當(dāng)實(shí)現(xiàn)多字節(jié)數(shù)據(jù)搬移時(shí),需要考慮數(shù)據(jù)地址的對(duì)齊問(wèn)題,如4字節(jié)取數(shù)指令要求源數(shù)據(jù)內(nèi)存地址必須為4字節(jié)對(duì)齊,否則不對(duì)齊的訪問(wèn)會(huì)觸發(fā)異常。因此,結(jié)合搬移數(shù)據(jù)地址對(duì)齊與否,選取可用的數(shù)據(jù)搬移指令,是由程序自動(dòng)生成優(yōu)化的memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)的匯編代碼考慮的關(guān)鍵。對(duì)于某一特定的數(shù)據(jù)搬移要求,基于目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集,可用的搬移模式是明確的,且當(dāng)有效數(shù)據(jù)搬移指令可選時(shí),得到的搬移模式不唯一,其實(shí)現(xiàn)代價(jià)也各異。下述實(shí)施例描述的為本發(fā)明實(shí)施例提供的匯編級(jí)memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)的生成過(guò)程,圖I是本發(fā)明實(shí)施例一提供的匯編級(jí)memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)的生成方法流程圖。如圖I所示,本發(fā)明實(shí)施例包括步驟101,根據(jù)數(shù)據(jù)搬移要求、目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集及其相應(yīng)的地址對(duì)齊要求和當(dāng)前可用的硬件資源信息,對(duì)所述目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集進(jìn)行第一功能篩選,生成滿足搬移要求的搬移模式集合。其中,數(shù)據(jù)搬移要求是指memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)的三個(gè)輸入?yún)?shù)sl,s2, η,分別為目標(biāo)搬移地址、源搬移地址和數(shù)據(jù)規(guī)模。
      另外,在進(jìn)行第一功能篩選之前,首先定義搬移模式。假定目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集為Φ,i為其中的某條具體數(shù)據(jù)搬移指令(i. bytes表示i具備屬性bytes,代表搬移指令i可搬移數(shù)據(jù)的字節(jié)數(shù)),由此定義某一搬移模式為A,A為由η條數(shù)據(jù)搬移指令組成的有序η元組,記為A (i1; in),并且,A中所有指令可搬移數(shù)據(jù)的字節(jié)數(shù)總和與數(shù)據(jù)搬移要求中的數(shù)據(jù)規(guī)模相同。第一功能篩選具體過(guò)程為根據(jù)數(shù)據(jù)搬移要求,遍歷目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集Φ,根據(jù)當(dāng)前的地址信息,判斷當(dāng)前指令是否滿足相應(yīng)的地址對(duì)齊條件,若不滿足,則取下一條指令繼續(xù)篩選,否則,判斷篩選出的指令所需要的硬件資源能否滿足,若不滿足則取下一條指令繼續(xù)篩選,若滿足,則將該指令添加到當(dāng)前搬移模式A中,并根據(jù)當(dāng)前搬移模式中已有的搬移指令的可搬移數(shù)據(jù)的字節(jié)數(shù)總和及數(shù)據(jù)搬移要求中的數(shù)據(jù)規(guī)模,判斷當(dāng)前搬移模式生成是否完成,如果沒(méi)有完成,則取下一條數(shù)據(jù)搬移指令繼續(xù)篩選,否則,當(dāng)前搬移模式生成結(jié)束,開(kāi)始新一個(gè)搬移模式的生成。按照上述方法對(duì)目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集進(jìn)行篩選,直到生成所有滿足搬移要求的搬移模式。由于匯編代碼的實(shí)現(xiàn)依賴于目標(biāo)硬件平臺(tái),因此可用搬移模式的生成與目標(biāo)機(jī)器 的硬件特性密切相關(guān)。如果在搬移模式生成過(guò)程中,目標(biāo)機(jī)器的硬件特性不能滿足當(dāng)前搬移模式生成時(shí)需要的相關(guān)條件,如數(shù)據(jù)搬移指令相應(yīng)的地址對(duì)齊要求、所需的硬件資源等,則當(dāng)前搬移模式生成失效。因此,在上述第一功能篩選過(guò)程中,需要及時(shí)攜帶相關(guān)硬件信息并隨時(shí)跟蹤,以判斷當(dāng)前搬移模式是否有效。步驟102,根據(jù)每個(gè)搬移模式含有的數(shù)據(jù)搬移指令個(gè)數(shù),對(duì)所述搬移模式集合進(jìn)行第一性能篩選,得到最精簡(jiǎn)搬移模式。具體地,為了保證程序生成性能較優(yōu)的memcpy匯編代碼,需要對(duì)生成的搬移模式集合進(jìn)行第一性能篩選?;趍emcpy標(biāo)準(zhǔn)庫(kù)函數(shù)的行為本質(zhì),在根據(jù)某一搬移要求生成多個(gè)搬移模式時(shí),對(duì)目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集進(jìn)行第一功能篩選后,能夠明確得到滿足搬移要求的所有搬移模式構(gòu)成的集合,而搬移模式集合中的各元素的執(zhí)行性能取決于它的元素個(gè)數(shù)。例如,圖2是本發(fā)明實(shí)施例一提供的數(shù)據(jù)規(guī)模為8的搬移模式匯編代碼片段示意圖。如圖2所示,圖2中(a)為單字節(jié)搬移模式,圖2中(b)為4字節(jié)搬移模式,對(duì)比二者可知,搬移模式中含有的元素個(gè)數(shù)越少,搬移數(shù)據(jù)時(shí)使用的硬件資源越少,匯編代碼的規(guī)模也越小。而且,對(duì)于一般的微處理器來(lái)說(shuō),單字節(jié)或多字節(jié)的訪存指令執(zhí)行代價(jià)上無(wú)異。即越精簡(jiǎn)的搬移模式越能有效利用指令集,充分發(fā)揮處理器的數(shù)據(jù)帶寬。因此,經(jīng)過(guò)第一性能篩選,可以篩選出最精簡(jiǎn)的搬移模式,并由此得到優(yōu)化的memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)匯編代碼的核心部分。需要說(shuō)明的是,對(duì)搬移模式集合進(jìn)行第一性能篩選,若得到多個(gè)同樣精簡(jiǎn)的搬移模式,取其中任意一個(gè)搬移模式作為所述最精簡(jiǎn)搬移模式。步驟103,根據(jù)所述最精簡(jiǎn)搬移模式生成匯編級(jí)內(nèi)存復(fù)制標(biāo)準(zhǔn)庫(kù)函數(shù)。上述實(shí)施例描述的為,根據(jù)數(shù)據(jù)搬移要求、目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集及其相應(yīng)的地址對(duì)齊要求和當(dāng)前可用的硬件資源信息,對(duì)目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集進(jìn)行第一功能篩選,生成滿足搬移要求的所有搬移模式構(gòu)成的集合,并對(duì)所述搬移模式集合進(jìn)行第一性能篩選,得到最精簡(jiǎn)的搬移模式,由此確定的匯編級(jí)memcpy標(biāo)準(zhǔn)庫(kù)函數(shù),搬移性能較優(yōu),可移植性較好。
      下述實(shí)施例描述的為當(dāng)數(shù)據(jù)規(guī)模較大時(shí),若將數(shù)據(jù)規(guī)模全部展開(kāi)實(shí)現(xiàn)數(shù)據(jù)搬移,不僅得到的搬移模式集合規(guī)模極大,且搬移模式尺寸也與數(shù)據(jù)規(guī)模成線性增長(zhǎng),導(dǎo)致匯編代碼規(guī)模急劇增多。因此,需要分解搬移任務(wù),形成循環(huán)搬移數(shù)據(jù)的形式,并且各自生成相應(yīng)的搬移模式,從而縮減生成的匯編代碼規(guī)模。圖3是本發(fā)明實(shí)施例二提供的匯編級(jí)memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)的生成方法流程圖。如圖3所示,本發(fā)明實(shí)施例包括步驟301,將搬移任務(wù)分解為頭部搬移任務(wù)、循環(huán)搬移任務(wù)和尾部搬移任務(wù)。具體地,當(dāng)搬移數(shù)據(jù)規(guī)模較大時(shí),若以循環(huán)的形式進(jìn)行數(shù)據(jù)搬移不僅能夠縮小代碼規(guī)模,也更能有效的利用指令集。因此,可以先將搬移任務(wù)分解為頭部搬移任務(wù)、循環(huán)搬移任務(wù)和尾部搬移任務(wù)。例如,若待搬移數(shù)據(jù)規(guī)模為size,則頭部搬移任務(wù)的規(guī)模head_size的取值范圍為(Tsize ;循環(huán)搬移任務(wù)的規(guī)模body_size的取值范圍為l"size_head_size,循環(huán)次數(shù)η為(size_head_size)/body_size ;尾部搬移任務(wù)的規(guī)模tail_size的取值范圍為(size_head_size)%body_size。對(duì)于每一種搬移模式組合,循環(huán)搬移任務(wù)規(guī)模n*body_size、尾部搬移任務(wù)規(guī)模tail_size以及頭部搬移任務(wù)大小head_size之和等于所·述待搬移數(shù)據(jù)的規(guī)模size。步驟302,分別根據(jù)所述頭部搬移任務(wù)、循環(huán)搬移任務(wù)、尾部搬移任務(wù)、目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集及其相應(yīng)的地址對(duì)齊要求和所述目標(biāo)機(jī)器當(dāng)前可用的硬件資源信息,對(duì)所述目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集進(jìn)行第一功能篩選,并且分別生成第一頭部搬移模式集合、第一循環(huán)搬移模式集合和第一尾部搬移模式集合。具體地,進(jìn)行第一功能篩選的過(guò)程,在上述實(shí)施例中的步驟101中有詳細(xì)闡述,在此不復(fù)贅述。步驟303,根據(jù)每個(gè)搬移模式所含有的數(shù)據(jù)搬移指令個(gè)數(shù),對(duì)所述第一頭部搬移模式集合、第一循環(huán)搬移模式集合和第一尾部搬移模式集合分別進(jìn)行第一性能篩選,分別生成第二頭部搬移模式集合、第二循環(huán)搬移模式集合和第二尾部搬移模式集合。具體地,進(jìn)行第一性能篩選的過(guò)程,在上述實(shí)施例中的步驟102中有詳細(xì)闡述,在此不復(fù)贅述。優(yōu)選地,對(duì)第一循環(huán)搬移模式集合進(jìn)行所述第一性能篩選后生成第二循環(huán)搬移模式集合之后,還須按照循環(huán)次數(shù)展開(kāi)進(jìn)行第二功能篩選,更新所述第二循環(huán)搬移模式集合。具體地,由于進(jìn)行第一性能篩選后生成的第二循環(huán)搬移模式集合規(guī)模極大,受指令地址對(duì)齊要求的影響,其中可能存在數(shù)據(jù)搬移過(guò)程中訪問(wèn)失效的搬移模式。因此,需要對(duì)第二循環(huán)搬移模式集合進(jìn)行第二功能篩選。具體實(shí)現(xiàn)步驟如下首先,遍歷第二循環(huán)搬移模式集合V1,假設(shè)當(dāng)前搬移模式SA1U1 e Ψι),對(duì)其進(jìn)行循環(huán)次數(shù)展開(kāi),得到A1的展開(kāi)形式Α2。其次,根據(jù)搬移模式生成方法可得到等效的循環(huán)搬移任務(wù)規(guī)模展開(kāi)后的搬移模式
      集合Ψ2。最后,若A2 e ψ2,則標(biāo)記搬移模式A1為有效,否則為無(wú)效。當(dāng)遍歷完第二循環(huán)搬移模式集合F1中的每個(gè)模式后,會(huì)篩選出能夠保證正確搬移數(shù)據(jù)的多個(gè)搬移模式,由此更新第二循環(huán)搬移模式集合。步驟304,將所述第二頭部搬移模式集合、第二循環(huán)搬移模式集合和第二尾部搬移模式集合中相應(yīng)的各個(gè)元素進(jìn)行有序組合得到組合搬移模式集合,根據(jù)所述組合搬移模式集合中各個(gè)元素含有的各條指令執(zhí)行代價(jià),對(duì)所述組合搬移模式集合進(jìn)行第二性能篩選,得到滿足數(shù)據(jù)搬移要求的執(zhí)行代價(jià)最小的組合搬移模式。具體地,對(duì)于一般的微處理器來(lái)說(shuō),匯編代碼的執(zhí)行代價(jià)的指標(biāo)之一為指令的執(zhí)行周期數(shù),這一指標(biāo)與目標(biāo)機(jī)器的硬件特性密切相關(guān),可根據(jù)不同體系結(jié)構(gòu)在硬件特性自定義文件中定義。匯編級(jí)memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)的行為本質(zhì)為內(nèi)存間的數(shù)據(jù)搬移,因此匯編代碼中的搬移指令的執(zhí)行代價(jià)在很大程度上決定了整個(gè)匯編代碼的執(zhí)行代價(jià)。為了獲得性能較優(yōu)的memcpy代碼,需要對(duì)第二頭部搬移模式集合、第二循環(huán)搬移模式集合和第二尾部搬移模式集合中相應(yīng)的各個(gè)元素進(jìn)行有序組合得到組合搬移模式集合,根據(jù)所述組合搬移模式集合中各個(gè)元素含有的各條指令執(zhí)行代價(jià),對(duì)所述組合搬移模式集合進(jìn)行第二性能篩選,即根據(jù)硬件特性自定義文件中的指令代價(jià)信息,計(jì)算比較組合搬移模式集合中的各個(gè)搬移模式的總體執(zhí)行代價(jià),得到執(zhí)行代價(jià)近似最小的組合搬移模式。步驟305,根據(jù)所述組合搬移模式生成匯編級(jí)內(nèi)存復(fù)制標(biāo)準(zhǔn)庫(kù)函數(shù)。本實(shí)施例描述的為當(dāng)數(shù)據(jù)規(guī)模較大時(shí),將搬移任務(wù)分解為頭部搬移任務(wù)、循環(huán)搬移任務(wù)和尾部搬移任務(wù),并對(duì)各部分?jǐn)?shù)據(jù)分別進(jìn)行第一功能篩選、第一性能篩選和第二·性能篩選,得到滿足數(shù)據(jù)搬移要求的執(zhí)行代價(jià)最小的組合搬移模式。由此生成的匯編級(jí)memcpy標(biāo)準(zhǔn)庫(kù)函數(shù),搬移性能較優(yōu),并且可移植性較好。另外,對(duì)循環(huán)搬移任務(wù)進(jìn)行第一性能篩選后還可以進(jìn)行第二功能篩選,由此篩選掉失效的搬移模式,以保證生成的匯編級(jí)memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)能夠正確完成搬移任務(wù)。相應(yīng)地,本發(fā)明實(shí)施例提供了一種匯編級(jí)memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)生成裝置,圖4是本發(fā)明實(shí)施例三提供的匯編級(jí)memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)的生成裝置示意圖,如圖4所示,本發(fā)明實(shí)施例裝置包括功能篩選單元401、性能篩選單元402和生成單元403。功能篩選單元401,用于根據(jù)數(shù)據(jù)搬移要求、目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集及其相應(yīng)的地址對(duì)齊要求和當(dāng)前可用的硬件資源信息,對(duì)所述目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集進(jìn)行第一功能篩選,生成滿足搬移要求的搬移模式集合。性能篩選單元402,用于根據(jù)每個(gè)搬移模式含有的數(shù)據(jù)搬移指令個(gè)數(shù),對(duì)所述搬移模式集合進(jìn)行第一性能篩選,得到最精簡(jiǎn)搬移模式。生成單元403,用于根據(jù)所述最精簡(jiǎn)搬移模式生成匯編級(jí)內(nèi)存復(fù)制標(biāo)準(zhǔn)庫(kù)函數(shù)。本發(fā)明實(shí)施例提供的裝置中植入了上述實(shí)施例一提供的匯編級(jí)memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)的生成方法,即具體工作過(guò)程在上述實(shí)施例中的步驟IOf 103中有詳細(xì)闡述,在此不復(fù)贅述。上述實(shí)施例描述的為,根據(jù)數(shù)據(jù)搬移要求、目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令及其相應(yīng)的地址對(duì)齊要求和當(dāng)前可用的硬件資源信息,對(duì)目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集進(jìn)行第一功能篩選,生成滿足搬移要求的所有搬移模式構(gòu)成的集合,并對(duì)所述搬移模式集合進(jìn)行第一性能篩選,得到最精簡(jiǎn)的搬移模式,由此確定的匯編級(jí)memcpy標(biāo)準(zhǔn)庫(kù)函數(shù),搬移性能較優(yōu),可移植性較好。下述實(shí)施例描述的為又一匯編級(jí)memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)生成裝置,圖5是本發(fā)明實(shí)施例四提供的匯編級(jí)memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)的生成裝置示意圖,如圖5所示,本發(fā)明實(shí)施例裝置包括分解單元501、第一功能篩選單元502、第一性能篩選單元503、第二性能篩選單元504和生成單元505。
      分解單元501,用于將搬移任務(wù)分解為頭部搬移任務(wù)、循環(huán)搬移任務(wù)和尾部搬移任務(wù)。第一功能篩選單元502,用于分別根據(jù)所述頭部搬移任務(wù)、循環(huán)搬移任務(wù)、尾部搬移任務(wù)、目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集及其相應(yīng)的地址對(duì)齊要求和所述目標(biāo)機(jī)器當(dāng)前可用的硬件資源信息,對(duì)所述目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集進(jìn)行第一功能篩選,并且分別生成第一頭部搬移模式集合、第一循環(huán)搬移模式集合和第一尾部搬移模式集合。第一性能篩選單元503,用于根據(jù)每個(gè)搬移模式所含有的數(shù)據(jù)搬移指令個(gè)數(shù),對(duì)所述第一頭部搬移模式集合、第一循環(huán)搬移模式集合和第一尾部搬移模式集合分別進(jìn)行第一性能篩選,分別生成第二頭部搬移模式集合、第二循環(huán)搬移模式集合和第二尾部搬移模式
      口 O第二性能篩選單元504,用于將所述第二頭部搬移模式集合、第二循環(huán)搬移模式集合和第二尾部搬移模式集合中相應(yīng)的各個(gè)元素進(jìn)行有序組合得到組合搬移模式集合,根據(jù)所述組合搬移模式集合中各個(gè)元素含有的各條指令執(zhí)行代價(jià),對(duì)所述組合搬移模式集合進(jìn)行第二性能篩選,得到滿足數(shù)據(jù)搬移要求的執(zhí)行代價(jià)最小的組合搬移模式。生成單元505,用于根據(jù)所述組合搬移模式生成匯編級(jí)內(nèi)存復(fù)制標(biāo)準(zhǔn)庫(kù)函數(shù)。優(yōu)選地,第一性能篩選單元504對(duì)第一循環(huán)搬移模式集合進(jìn)行所述第一性能篩選后生成第二循環(huán)搬移模式集合之后,還可以按照循環(huán)次數(shù)展開(kāi)進(jìn)行第二功能篩選,以更新所述第二循環(huán)搬移模式集合。本實(shí)施例提供的匯編級(jí)memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)生成裝置中植入了本發(fā)明實(shí)施例二提供的匯編級(jí)memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)的生成方法,即具體工作過(guò)程在上述實(shí)施例中的步驟30Γ305中有詳細(xì)闡述,在此不復(fù)贅述。本實(shí)施例描述的為當(dāng)數(shù)據(jù)規(guī)模較大時(shí),將搬移任務(wù)分解為頭部搬移任務(wù)、循環(huán)搬移任務(wù)和尾部搬移任務(wù),并對(duì)各部分?jǐn)?shù)據(jù)分別進(jìn)行第一功能篩選、第一性能篩選和第二性能篩選,得到滿足數(shù)據(jù)搬移要求的執(zhí)行代價(jià)最小的組合搬移模式。由此生成的匯編級(jí)memcpy標(biāo)準(zhǔn)庫(kù)函數(shù),搬移性能較優(yōu),并且可移植性較好。另外,對(duì)循環(huán)搬移任務(wù)進(jìn)行第一性能篩選后還可以進(jìn)行第二功能篩選,由此篩選掉失效的搬移模式,以保證生成的匯編級(jí)memcpy標(biāo)準(zhǔn)庫(kù)函數(shù)能夠正確完成搬移任務(wù)。以上所述的具體實(shí)施方式
      ,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說(shuō)明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施方式
      而已,并不用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
      權(quán)利要求
      1.一種匯編級(jí)內(nèi)存復(fù)制標(biāo)準(zhǔn)庫(kù)函數(shù)的生成方法,其特征在于,所述方法包括 根據(jù)數(shù)據(jù)搬移要求、目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集及其相應(yīng)的地址對(duì)齊要求和當(dāng)前可用的硬件資源信息,對(duì)所述目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集進(jìn)行第一功能篩選,生成滿足搬移要求的搬移模式集合; 根據(jù)每個(gè)搬移模式含有的數(shù)據(jù)搬移指令個(gè)數(shù),對(duì)所述搬移模式集合進(jìn)行第一性能篩選,得到最精簡(jiǎn)搬移模式; 根據(jù)所述最精簡(jiǎn)搬移模式生成匯編級(jí)內(nèi)存復(fù)制標(biāo)準(zhǔn)庫(kù)函數(shù)。
      2.如權(quán)利要求I所述的方法,其特征在于,對(duì)所述搬移模式集合進(jìn)行第一性能篩選,若得到多個(gè)同樣精簡(jiǎn)的搬移模式,取其中任意一個(gè)搬移模式作為所述最精簡(jiǎn)搬移模式。
      3.一種匯編級(jí)內(nèi)存復(fù)制標(biāo)準(zhǔn)庫(kù)函數(shù)的生成方法,其特征在于,所述方法包括 將搬移任務(wù)分解為頭部搬移任務(wù)、循環(huán)搬移任務(wù)和尾部搬移任務(wù); 根據(jù)所述頭部搬移任務(wù)、循環(huán)搬移任務(wù)、尾部搬移任務(wù)、目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集及其相應(yīng)的地址對(duì)齊要求和所述目標(biāo)機(jī)器當(dāng)前可用的硬件資源信息,分別對(duì)所述目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集進(jìn)行第一功能篩選,并且分別生成第一頭部搬移模式集合、第一循環(huán)搬移模式集合和第一尾部搬移模式集合; 根據(jù)每個(gè)搬移模式所含有的數(shù)據(jù)搬移指令個(gè)數(shù),對(duì)所述第一頭部搬移模式集合、第一循環(huán)搬移模式集合和第一尾部搬移模式集合分別進(jìn)行第一性能篩選,分別生成第二頭部搬移模式集合、第二循環(huán)搬移模式集合和第二尾部搬移模式集合; 將所述第二頭部搬移模式集合、第二循環(huán)搬移模式集合和第二尾部搬移模式集合中相應(yīng)的各個(gè)元素進(jìn)行有序組合得到組合搬移模式集合,根據(jù)所述組合搬移模式集合中各個(gè)元素含有的各條指令執(zhí)行代價(jià),對(duì)所述組合搬移模式集合進(jìn)行第二性能篩選,得到滿足數(shù)據(jù)搬移要求的執(zhí)行代價(jià)最小的組合搬移模式; 根據(jù)所述組合搬移模式生成匯編級(jí)內(nèi)存復(fù)制標(biāo)準(zhǔn)庫(kù)函數(shù)。
      4.如權(quán)利要求3所述的方法,其特征在于,對(duì)所述第一循環(huán)搬移模式集合進(jìn)行所述第一性能篩選后生成第二循環(huán)搬移模式集合之后,按照循環(huán)次數(shù)展開(kāi)進(jìn)行第二功能篩選,更新所述第二循環(huán)搬移模式集合。
      5.一種匯編級(jí)內(nèi)存復(fù)制標(biāo)準(zhǔn)庫(kù)函數(shù)的生成裝置,其特征在于,所述裝置包括 第一功能篩選單元,用于根據(jù)數(shù)據(jù)搬移要求、目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集及其相應(yīng)的地址對(duì)齊要求和當(dāng)前可用的硬件資源信息,對(duì)所述目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集進(jìn)行第一功能篩選,生成滿足搬移要求的搬移模式集合; 第一性能篩選單元,用于根據(jù)每個(gè)搬移模式含有的數(shù)據(jù)搬移指令個(gè)數(shù),對(duì)所述搬移模式集合進(jìn)行第一性能篩選,得到最精簡(jiǎn)搬移模式; 生成單元,用于根據(jù)所述最精簡(jiǎn)搬移模式生成匯編級(jí)內(nèi)存復(fù)制標(biāo)準(zhǔn)庫(kù)函數(shù)。
      6.如權(quán)利要求5所述的裝置,其特征在于,若由所述第一性能篩選單元篩選得到多個(gè)同樣精簡(jiǎn)的搬移模式,取其中任意一個(gè)搬移模式作為所述最精簡(jiǎn)搬移模式。
      7.一種匯編級(jí)內(nèi)存復(fù)制標(biāo)準(zhǔn)庫(kù)函數(shù)的生成裝置,其特征在于,所述裝置包括 分解單元,用于將搬移任務(wù)分解為頭部搬移任務(wù)、循環(huán)搬移任務(wù)和尾部搬移任務(wù); 第一功能篩選單元,用于分別根據(jù)所述頭部搬移任務(wù)、循環(huán)搬移任務(wù)、尾部搬移任務(wù)、目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集及其相應(yīng)的地址對(duì)齊要求和所述目標(biāo)機(jī)器當(dāng)前可用的硬件資源信息,對(duì)所述目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集進(jìn)行第一功能篩選,并且分別生成第一頭部搬移模式集合、第一循環(huán)搬移模式集合和第一尾部搬移模式集合; 第一性能篩選單元,用于根據(jù)每個(gè)搬移模式所含有的數(shù)據(jù)搬移指令個(gè)數(shù),對(duì)所述第一頭部搬移模式集合、第一循環(huán)搬移模式集合和第一尾部搬移模式集合分別進(jìn)行第一性能篩選,分別生成第二頭部搬移模式集合、第二循環(huán)搬移模式集合和第二尾部搬移模式集合;第二性能篩選單元,用于將所述第二頭部搬移模式集合、第二循環(huán)搬移模式集合和第二尾部搬移模式集合中相應(yīng)的各個(gè)元素進(jìn)行有序組合得到組合搬移模式集合,根據(jù)所述組合搬移模式集合中各個(gè)元素含有的各條指令執(zhí)行代價(jià),對(duì)所述組合搬移模式集合進(jìn)行第二性能篩選,得到滿足數(shù)據(jù)搬移要求的執(zhí)行代價(jià)最小的組合搬移模式; 生成單元,用于根據(jù)所述組合搬移模式生成匯編級(jí)內(nèi)存復(fù)制標(biāo)準(zhǔn)庫(kù)函數(shù)。
      8.如權(quán)利要求7所述的裝置,其特征在于,所述第一性能篩選單元對(duì)所述第一循環(huán)搬移模式集合進(jìn)行所述第一性能篩選后生成第二循環(huán)搬移模式集合之后,按照循環(huán)次數(shù)展開(kāi)進(jìn)行第二功能篩選,更新所述第二循環(huán)搬移模式集合。
      全文摘要
      本發(fā)明實(shí)施例涉及一種匯編級(jí)內(nèi)存復(fù)制標(biāo)準(zhǔn)庫(kù)函數(shù)的生成方法及裝置。包括根據(jù)數(shù)據(jù)搬移要求、目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集及其相應(yīng)的地址對(duì)齊要求和當(dāng)前可用的硬件資源信息,對(duì)所述目標(biāo)機(jī)器可用數(shù)據(jù)搬移指令集進(jìn)行第一功能篩選,生成滿足搬移要求的搬移模式集合;根據(jù)每個(gè)搬移模式含有的數(shù)據(jù)搬移指令個(gè)數(shù),對(duì)所述搬移模式集合進(jìn)行第一性能篩選,得到最精簡(jiǎn)搬移模式;根據(jù)所述最精簡(jiǎn)搬移模式生成匯編級(jí)內(nèi)存復(fù)制標(biāo)準(zhǔn)庫(kù)函數(shù),由此確定的匯編級(jí)內(nèi)存復(fù)制標(biāo)準(zhǔn)庫(kù)函數(shù),搬移性能較優(yōu),可移植性較好。
      文檔編號(hào)G06F9/44GK102902548SQ20121040841
      公開(kāi)日2013年1月30日 申請(qǐng)日期2012年10月24日 優(yōu)先權(quán)日2012年10月24日
      發(fā)明者朱浩, 應(yīng)歡, 王東輝, 洪纓, 彭楚 申請(qǐng)人:中國(guó)科學(xué)院聲學(xué)研究所
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1