亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于BWDSP的字符串與內(nèi)存處理函數(shù)優(yōu)化①

        2017-07-19 12:26:37張仁高鄭啟龍王向前
        關(guān)鍵詞:字符串拷貝字符

        張仁高, 鄭啟龍, 王向前

        1(中國科學(xué)技術(shù)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院, 合肥 230027)

        2(中國電子科技集團(tuán)公司第三十八研究所, 合肥 230088)

        基于BWDSP的字符串與內(nèi)存處理函數(shù)優(yōu)化①

        張仁高1, 鄭啟龍1, 王向前2

        1(中國科學(xué)技術(shù)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院, 合肥 230027)

        2(中國電子科技集團(tuán)公司第三十八研究所, 合肥 230088)

        面向BWDSP的體系結(jié)構(gòu)分析了字符串與內(nèi)存處理函數(shù)匯編優(yōu)化方法, 基于向量化與軟件流水的優(yōu)化技術(shù),通過利用高效訪存指令、能夠提升循環(huán)執(zhí)行效率的零開銷循環(huán)機(jī)制、指令重排技術(shù), 結(jié)合具體功能函數(shù)的循環(huán)特性, 展開針對(duì)字符串與內(nèi)存處理函數(shù)的指令級(jí)并行性挖掘. 實(shí)驗(yàn)結(jié)果表明, 這些庫函數(shù)的優(yōu)化效率能夠達(dá)到硬件平臺(tái)提供函數(shù)性能理論運(yùn)行時(shí)間的1.5倍以下,對(duì)BWDSP平臺(tái)整體性能提升具有重要意義.

        字符串與內(nèi)存處理函數(shù); BWDSP; 函數(shù)優(yōu)化; 向量化與軟件流水; 特殊指令; 并行性

        1 引言

        字符串與內(nèi)存處理函數(shù)是最基本的庫函數(shù), 它對(duì)上層函數(shù)的調(diào)用與處理提供了強(qiáng)大的接口調(diào)用. 這些函數(shù)使用較為頻繁, 經(jīng)編譯系統(tǒng)直接生成的代碼性能并不高, 有必要從匯編層面優(yōu)化其性能. 本文主要對(duì)字符串與內(nèi)存處理函數(shù)進(jìn)行匯編優(yōu)化, 提高其的執(zhí)行效率.

        2 BWDSP介紹

        BWDSP是一款16發(fā)射, 7級(jí)流水線, 4簇結(jié)構(gòu)的處理器. 四個(gè)簇分別標(biāo)號(hào)為X, Y, Z, T. 每個(gè)簇有64個(gè)寄存器, 4個(gè)乘法器, 8個(gè)ALU和4個(gè)特殊功能單元. 簇與簇之間采用簇間傳輸總線通信. BWDSP還采用了常見的AGU結(jié)構(gòu)用來加速訪存, 內(nèi)存訪問必須經(jīng)過AGU單元.AGU(Address Generation Unit)是用作訪存地址計(jì)算特殊單元, BWDSP的load/store的地址操作數(shù)必須使用AGU中地址寄存器. 使用獨(dú)立的AGU計(jì)算, 表示訪存地址可以降低處理器設(shè)計(jì)的復(fù)雜度. BWDSP的體系結(jié)構(gòu)支持多種訪存模式, 支持零開銷循環(huán)、向量化執(zhí)行等, 其主要體系結(jié)構(gòu)[1]如圖1所示.

        圖1 BWDSP主要體系結(jié)構(gòu)

        2.1 BWDSP SIMD指令的特性分析

        BWDSP計(jì)算指令的通用格式如下[1]:

        [Macro]Rm = Rn op Rs

        Macro是執(zhí)行宏的代號(hào), op是操作, 符號(hào)“||”連接多個(gè)可并行指令, 比如: xRm=Rn+Rs是Scalar指令, 表示在X宏上執(zhí)行整數(shù)加法操作, xyztRm=Rn+Rs是SIMD指令, 表示在XYZT四個(gè)宏上同事執(zhí)行整數(shù)加法操作, 等于xRm=Rn+Rs||yRm=Rn+Rs||zRm=Rn+Rs||tRm=Rn+Rs.

        2.2 BWDSP SIMD寄存器分配策略

        BWDSP的編譯器OCC是以O(shè)pen64為基礎(chǔ)開發(fā)的,Open64編譯器的寄存器分配分為兩類: 全局寄存器分配(GRA)和局部寄存器分配(LRA). 全局寄存器分配在一個(gè)函數(shù)范圍內(nèi), 為活躍范圍超出一個(gè)基本塊的LR分配寄存器; 局部寄存器分配在一個(gè)基本范圍內(nèi), 為只活躍在基本塊內(nèi)部的LR分配寄存器.

        2.3 通用DSP優(yōu)化策略

        使用循環(huán)計(jì)數(shù)器是通用DSP軟件流水代碼的優(yōu)化方法. 最有效的軟件流水循環(huán)一般按遞減形式對(duì)循環(huán)進(jìn)行計(jì)數(shù). 通常即使源代碼中沒有按這種形式編寫, 編譯器也能轉(zhuǎn)換成遞減形式.

        DSP的指令流水線存在著不可避免的阻塞現(xiàn)象,MAC單元指令也一樣. 盡管在硬件設(shè)計(jì)時(shí)已經(jīng)采用了專用模塊來減少阻塞, 但有些阻塞是不可避免的, 從程序優(yōu)化的角度來說, 可以充分利用指令流水線阻塞現(xiàn)象, 通過重排指令流水線上的指令, 消除阻塞, 以使得程序的運(yùn)行時(shí)間縮短, 從而達(dá)到優(yōu)化的目的.

        3 BWDSP優(yōu)化分析

        3.1 特殊指令

        雙字尋址指令和sigma指令.

        雙字尋址指令功能是在1個(gè)時(shí)鐘周期內(nèi)讀取多個(gè)字, 進(jìn)一步減少函數(shù)的訪存次數(shù)[2]. 指令形式如下:

        第一條指令是讀訪存指令, Un是基地址, Uk是在Un地址基礎(chǔ)上的調(diào)整量, Um則是指令執(zhí)行后基地址Un的修正量. 指令采用雙字節(jié)讀數(shù), 故偏移地址為[Un]和[Un+1]、[Un+2Uk]和[Un+2Uk+1]、[Un+2×2Uk]和[Un+2×2Uk+1]、[Un+3×2Uk]和[Un+3×2Uk+1], 將這8個(gè)地址的數(shù)據(jù)依次送到4個(gè)宏里的同名寄存器{x, y, z, t}Rs:s+1. 第二條指令是寫存儲(chǔ)指令.

        sigma指令的功能是歸并四個(gè)簇上的值, 指令格式如下[1]:

        {x’, y’, z’, t’}Rs = sigma{x, y, z, t}Rm

        將{x, y, z, t}Rm中32位定點(diǎn)有符號(hào)數(shù)分別相加到{x’, y’, z’, t’}Rs寄存器上. 通過sigma指令可以對(duì)分散在不同寄存器中值進(jìn)行收集, 減少了逐一合并計(jì)算的時(shí)間.

        零開銷循環(huán)指令.

        零開銷循環(huán)[2]是通過硬件實(shí)現(xiàn)一種加速循環(huán)執(zhí)行的方法. BWDSP硬件提供零開銷循環(huán)指令, 其指令集中LC0和LC1指令專門用于零開銷循環(huán), 指令形式為“if LCx B label”. 程序的循環(huán)往往需要大量的條件判斷和跳轉(zhuǎn). 普通跳轉(zhuǎn)指令需要判斷比較, 同時(shí)要對(duì)于控制條件進(jìn)行累加, 這樣的跳轉(zhuǎn)指令判斷需要占用多個(gè)周期.零開銷循環(huán)指令相比于普通跳轉(zhuǎn)指令而言只需占用1個(gè)時(shí)鐘周期. 以零開銷循環(huán)控制循環(huán)體的長(zhǎng)度, 可使優(yōu)化后的匯編函數(shù)性能可以得到顯著提升.

        3.2 指令重排技術(shù)

        BWDSP可同時(shí)支持執(zhí)行16條指令, 即一個(gè)執(zhí)行擁有十六個(gè)執(zhí)行槽. 通過指令重排技術(shù)調(diào)節(jié)指令次序來減少流水線的空轉(zhuǎn)和等待時(shí)間. 通過手動(dòng)優(yōu)化, 避免BWDSP中16路發(fā)射和亂序執(zhí)行的特性使得指令調(diào)度變得復(fù)雜. 若經(jīng)過指令重排無法將每個(gè)執(zhí)行16個(gè)指令槽填滿, 根據(jù)BWDSP 16路特性, 可以通過簡(jiǎn)單的使用空操作填充指令槽, 這樣使得流水線按照較為理想的狀態(tài)發(fā)射指令[3].

        3.3 軟件流水技術(shù)

        軟件流水是一種強(qiáng)大的循環(huán)調(diào)度技術(shù), 允許指令跨迭代的移動(dòng)實(shí)現(xiàn)循環(huán)迭代的重疊執(zhí)行, 通過發(fā)掘循環(huán)的不同迭代的各部分之間的指令間并行性, 使這些指令并行地執(zhí)行. BWDSP體系架構(gòu)上的軟件流水, 采用模調(diào)度算法[4,5]和模變量擴(kuò)展算法[6]思想實(shí)現(xiàn)軟件流水匯編代碼.

        3.3.1 模調(diào)度算法

        模調(diào)度是軟件流水調(diào)度的核心算法, 它獲取核心循環(huán)體基本塊信息, 結(jié)合目標(biāo)體系硬件資源生成模資源約束表MRT并計(jì)算出資源限制(ResII), 且根據(jù)指令相關(guān)依賴圖計(jì)算出依賴限制(RecII), 模調(diào)度的最小啟動(dòng)II從開始進(jìn)行調(diào)度, 如果調(diào)度不成功則增加II再次進(jìn)行循環(huán)調(diào)度, 直到找到一個(gè)滿足資源和依賴約束的合適II[7,8]. 啟動(dòng)間距II是衡量軟件流水效率的重要指標(biāo);展開因子是影響循環(huán)展開(loop unrolling)的主要因素.資源限制(ResMII)和依賴限制(RecMII)是決定啟動(dòng)間隔II和展開因子[9,10]的主要因素. 其中ResMII的計(jì)算是先把一個(gè)循環(huán)體對(duì)應(yīng)需要的資源需求列表計(jì)算出來, 通過簡(jiǎn)單的累加得到; 然后把所需的每種資源數(shù)量除以體系結(jié)構(gòu)提供的資源數(shù)量, 該值最大就作為ResMII.RecMII則是依賴圖形成各個(gè)環(huán)中延遲除以環(huán)跨越迭代距離的最大值[10]. 模調(diào)度算法的優(yōu)點(diǎn)是以固定的間隔啟動(dòng)每個(gè)迭代的調(diào)度, 有助于減少寄存器的壓力.

        3.3.2 模變量擴(kuò)展

        在軟件流水執(zhí)行過程中, 不同循環(huán)體重疊地執(zhí)行.每次迭代中對(duì)同一個(gè)變量用相同寄存器變量存放, 則迭代之間就會(huì)相互有影響, BWDSP并不支持IA64體系結(jié)構(gòu)下的旋轉(zhuǎn)寄存器, 模變量擴(kuò)展通過識(shí)別那些在每次迭代開始處重新定義的變量, 利用寄存器重命名技術(shù), 使得每次迭代對(duì)同一變量的引用指向一個(gè)不同的位置, 彼此之間不沖突.

        3.4 性能分析

        BWDSP匯編函數(shù)庫主要采用循環(huán)展開和軟件流水的優(yōu)化方案. 只有當(dāng)循環(huán)體可向量化時(shí), 才能運(yùn)行循環(huán)展開和軟件流水操作.

        循環(huán)展開能夠增加參與運(yùn)算的個(gè)數(shù), 減少循環(huán)的重復(fù)次數(shù). 展開后的循環(huán)體包含更多的指令, 可以使調(diào)度部件更加自由地挑選不相關(guān)的指令并行執(zhí)行.

        3.4.1 資源限制

        資源限制(ResMII)考慮了體系結(jié)構(gòu)中可用資源的數(shù)量, 是衡量被硬件所約束的模調(diào)度的重要指標(biāo). 受體系結(jié)構(gòu)中可用硬件資源數(shù)量的約束, 在計(jì)算理論運(yùn)行時(shí)間是需要考慮循環(huán)體內(nèi)各種運(yùn)算操作在各類運(yùn)算部件上的分配情況.

        具體計(jì)算方法:

        統(tǒng)計(jì)循環(huán)體內(nèi)所有運(yùn)算(取數(shù), 加法, 移位, 超算,寫等)的操作步數(shù), 標(biāo)記為N. 假設(shè)取數(shù)操作有N1步, 加法操作有N2步, 乘法操作有N3步, 移位操作有N4步, 超算操作有N5步, 寫操作有N6步, 且劃分共有:

        劃分各類操作至相應(yīng)的操作部件, 即加法操作分配至加法器, 乘法操作分配至乘法器等.

        例如:

        在BWDSP104x中共存在16個(gè)slot(一般情況下N步操作分配于12個(gè)slot中), 8個(gè)ALU, 8個(gè)MUL, 4個(gè)SHIFT,1個(gè)SPU, 3次讀寫.

        則資源限制的最小理論周期:

        3.4.2 依賴限制

        依賴限制(RecMII)是衡量體系結(jié)構(gòu)被數(shù)據(jù)依賴的重復(fù)回路所約束的模調(diào)度的重要指令. RecMII限制了軟件流水循環(huán)體的最小規(guī)模, 如果小于這個(gè)值, 則會(huì)存在數(shù)據(jù)覆蓋從而導(dǎo)致流水無法完成, RecMII被數(shù)據(jù)相關(guān)圖中的重復(fù)回路所約束.

        具體計(jì)算方式:

        根據(jù)步長(zhǎng)約束計(jì)算循環(huán)展開的次數(shù)p1, 計(jì)算循環(huán)體內(nèi)RecMII的最小長(zhǎng)度s. 根據(jù)寄存器約束計(jì)算循環(huán)展開的次數(shù)p2

        計(jì)算理論上的循環(huán)展開次數(shù)p為:

        計(jì)算依賴限制理論運(yùn)行時(shí)間最小周期:

        3.4.3 計(jì)算理論運(yùn)行時(shí)間

        資源限制和依賴限制共同確定了指令的最小規(guī)模.在依賴限制的流水計(jì)算中, 還需要考慮寄存器的上限,即是否會(huì)因?yàn)檠h(huán)體過大而產(chǎn)生寄存器不夠用的問題.

        假設(shè)輸入向量長(zhǎng)度的長(zhǎng)度為num的函數(shù), 要得到可向量化時(shí)匯編語言版庫函數(shù)的理論運(yùn)行時(shí)間, 還需綜合考慮資源限制和依賴限制, 計(jì)算在完全流水條件下完成一組循環(huán)體內(nèi)所有操作的最小理論運(yùn)行時(shí)間R_cycle為:

        以及統(tǒng)計(jì)循環(huán)體外執(zhí)行串行操作的時(shí)鐘周期數(shù)C.

        計(jì)算匯編語言版函數(shù)理論運(yùn)行時(shí)間L_cycle為:

        對(duì)于每個(gè)可向量化的函數(shù), 當(dāng)數(shù)據(jù)規(guī)模達(dá)到一定程度時(shí), 理應(yīng)滿足運(yùn)行時(shí)間小于匯編版函數(shù)理論運(yùn)行時(shí)間的1.5倍.

        4 字符串與內(nèi)存處理函數(shù)

        在庫函數(shù)中字符串與內(nèi)存處理函數(shù)存在大量的循環(huán)體與向量化, 是主要的優(yōu)化對(duì)象, 其主要可以分為以下幾種: 內(nèi)存拷貝和賦值函數(shù), 字符串拷貝與連接函數(shù),字符串與內(nèi)存比較函數(shù), 字符串與內(nèi)存查找函數(shù). 字符串與內(nèi)存的操作通常一一對(duì)應(yīng), 區(qū)別在于字符串用空字符NULL來表示結(jié)尾, 而內(nèi)存塊則明確給出長(zhǎng)度[11].

        4.1 內(nèi)存拷貝與賦值函數(shù)

        memcpy, memmove及memset函數(shù)的基本實(shí)現(xiàn)流程為, 首先判斷拷貝的數(shù)據(jù)大小是否符合優(yōu)化的范圍, 逐一拷貝源地址的字符到目的地址.

        BWDSP為保證在源地址與目的地址的字符交疊時(shí)能夠正確的復(fù)制, memmove在拷貝過程中需添加一個(gè)臨時(shí)拷貝區(qū)域. Memcpy直接從源地址內(nèi)存進(jìn)行拷貝.memset為目的地址內(nèi)存賦予特定值.

        以memcpy函數(shù)為例, 函數(shù)功能是復(fù)制目的地址的字符到源地址, 通過平臺(tái)支持的雙字尋址指令中的讀取指令讀取目的地址的字符, 再利用存儲(chǔ)指令存儲(chǔ)讀取的字符到源地址, 并且通過零開銷循環(huán)指控制程序循環(huán)長(zhǎng)度.

        memcpy向量化的匯編代碼如下所示:

        由計(jì)算結(jié)果可得, 該循環(huán)體在一個(gè)迭代的過程中,所需資源為2個(gè)slot(2/8), 1個(gè)branch(1/1), memread為(1/2), memwrite為(1/2). 訪存資源利用率在一個(gè)迭代4個(gè)周期中的利用率為50%, 資源ALU利用率為25%.

        匯編代碼的性能仍然有提高效率和優(yōu)化的空間,可通過軟件流水填補(bǔ)循環(huán)體中的指令之間的空缺周期方式進(jìn)行優(yōu)化, 使指令得到重排, 不同流水線可以同時(shí)執(zhí)行, 避免了空閑周期的存在, 有效地提升了循環(huán)體性能. 軟件流水匯編核心代碼如下所示:

        對(duì)于memcpy函數(shù)中的主要片段, 該循環(huán)體在一個(gè)迭代周期中所需資源為1個(gè)slot(1/8), 1個(gè)branch(1/1),memread為(1/2), memwrite為(1/2), ResMII為1,RecMII為1, II為1. 優(yōu)化后的匯編代碼在1個(gè)周期的情況下即可完成向量化一次迭代所完成的任務(wù), 同時(shí)平臺(tái)硬件資源利用率明顯得到提升.

        表1所示內(nèi)存拷貝與賦值函數(shù)優(yōu)化結(jié)果, 以內(nèi)存10000個(gè)字作為測(cè)試數(shù)據(jù), 得到各個(gè)函數(shù)所運(yùn)行的時(shí)鐘周期數(shù). 優(yōu)化率是優(yōu)化后的周期數(shù)與優(yōu)化前函數(shù)的周期數(shù)之比.

        表1 內(nèi)存拷貝與賦值函數(shù)優(yōu)化效果

        向量化與軟件流水優(yōu)化下的memcpy函數(shù)在字符長(zhǎng)度從1000字~10000字的優(yōu)化效果如圖2所示.

        圖2 向量化和軟件流水優(yōu)化效果

        4.2 字符串拷貝與連接函數(shù)

        strcat和strncat逐字符進(jìn)行比較直到目標(biāo)字符串的末尾, 再將源字符串的字符拷貝到目標(biāo)字符串上. 對(duì)于后面的拷貝操作仿照內(nèi)存賦值函數(shù)進(jìn)行拷貝.

        strcpy和strncpy函數(shù)相比于字符串連接函數(shù), 在拷貝過程中需比較目的字符串的結(jié)尾字符.

        函數(shù)都需要判斷字符結(jié)尾的字符, 執(zhí)行過程中需要的比較語句是必不可少的, 比較語句所占的周期很大, 利用指令重排技術(shù)可以進(jìn)一步提高效率.

        表2所示字符串拷貝與連接函數(shù)函數(shù)優(yōu)化結(jié)果, 以內(nèi)存10000個(gè)字作為輸入.

        表2 字符串拷貝與連接函數(shù)優(yōu)化效果

        字符串拷貝與連接函數(shù)在字符長(zhǎng)度為10000個(gè)字下向量化相比于軟件流水取得加速比的收益如圖3所示.

        圖3 字符串拷貝與連接函數(shù)優(yōu)化效果

        4.3 字符串和內(nèi)存比較函數(shù)

        Strcmp和memcmp需要同時(shí)訪問兩個(gè)字符串或兩內(nèi)存并對(duì)讀取的字符進(jìn)行比較. 函數(shù)算法流程是先逐字讀取兩個(gè)字符串到寄存器中, 接著對(duì)寄存器中字符進(jìn)行比較, 如果相等, 通過移位調(diào)整字符串位置再進(jìn)行比較, 否則退出.

        字符串比較需要考慮字符長(zhǎng)度問題以及所比較的范圍, 在拷貝過程中還要找出不同的字符. 采取的方案是每次批量讀取字符進(jìn)行比較, 如果不相等, 則返回比較結(jié)果. 如果該部分子串相等, 則繼續(xù)比較下一批量字符[12]. 這種逐批量讀取的方式避免了逐字遍歷一個(gè)很長(zhǎng)的字符串浪費(fèi)的時(shí)間. 在BWDSP中, 寄存器的讀取內(nèi)存的長(zhǎng)度最大可為8個(gè)字的長(zhǎng)度, 為了達(dá)到讀取與比較的字符串長(zhǎng)度一致, 采用一次批量讀取的長(zhǎng)度是8個(gè)字. 比較過程建立了兩種比較方式.

        第一種在判斷長(zhǎng)度的同時(shí)比較兩個(gè)字符串的不同字符, 并將兩個(gè)不同的字符返回. 此種方式, 主要思想是對(duì)所讀取的源字符串或內(nèi)存的8個(gè)字和目的字符串或內(nèi)存8個(gè)字一一作比較. 同時(shí)使用指令重排技術(shù)把指令放在同一個(gè)執(zhí)行, 讓指令能夠達(dá)到并行的最大程度..

        第二種比較方式把比較字符作互相做&操作, &操作的結(jié)果與0比較, 判斷是否相等. 這樣我們可以把第一種方式的多條比較語句優(yōu)化成簡(jiǎn)單比較語句, 這種算法相對(duì)于第一種減少了每次比較的過程. 同時(shí)在比較過程中, 使用BWDSP本身自帶的指令sigma, 將不同字符比較的結(jié)果收集到一個(gè)臨時(shí)寄存器中, 將多條比較語句優(yōu)化成單條比較語句進(jìn)行判斷, 大大減少了比較過程中損耗的時(shí)間. 此種方式支持BWDSP的指令,使比較結(jié)果更加簡(jiǎn)便.

        表3所示字符串比較和內(nèi)存比較函數(shù)經(jīng)過第二次優(yōu)化算法的優(yōu)化結(jié)果, 以內(nèi)存10000個(gè)字作為輸入.

        表3 字符串和內(nèi)存比較函數(shù)優(yōu)化效果

        第一次優(yōu)化算法和第二次優(yōu)化算法以函數(shù)為memcmp為例, 內(nèi)存中都以最后一個(gè)字符不同為標(biāo)準(zhǔn).

        Memcmp函數(shù)在內(nèi)存長(zhǎng)度為1000字~12000字的長(zhǎng)度下基本算法和優(yōu)化算法的比較下得到的優(yōu)化效果如圖4所示.

        圖4 memcmp在基本算法和優(yōu)化算法下的效果

        4.4 字符串和內(nèi)存查找函數(shù)

        Memchr及strchr都是查找字符串中的特定字符, 并將該字符的地址返回. 函數(shù)的流程是逐個(gè)字符與目標(biāo)字符進(jìn)行比較, 直至找到該字符.

        查找函數(shù)同樣由于擁有大量的比較操作, 其優(yōu)化過程與字符串和內(nèi)存比較函數(shù)類似.

        表4所示字符串和內(nèi)存查找函數(shù)優(yōu)化結(jié)果, 以內(nèi)存10000個(gè)字作為輸入.

        表4 字符串和內(nèi)存查找函數(shù)優(yōu)化效果

        5 結(jié)束語

        BWDSP是一款針對(duì)高性能計(jì)算領(lǐng)域設(shè)計(jì)的32位靜態(tài)數(shù)字處理器, 本文針對(duì)BWDSP體系結(jié)構(gòu), 利用其自帶指令及硬件等相關(guān)結(jié)構(gòu), 在其平臺(tái)上對(duì)字符串與內(nèi)存處理函數(shù)的進(jìn)行優(yōu)化, 實(shí)現(xiàn)了相關(guān)函數(shù)匯編代碼,經(jīng)過最后的實(shí)驗(yàn)結(jié)果分析可以知道, 匯編函數(shù)的優(yōu)化效果可以提升函數(shù)的性能.

        1CETC38. BWDSP100軟件用戶手冊(cè). 合肥: 中國電子科技集團(tuán)第三十八研究所, 2011: 1–2.

        2甄揚(yáng). 基于多核VLIW DSP的數(shù)字信號(hào)變換函數(shù)并行優(yōu)化[碩士學(xué)位論文]. 合肥: 中國科學(xué)技術(shù)大學(xué), 2015.

        3甄揚(yáng), 顧乃杰, 葉鴻. 數(shù)字信號(hào)變換函數(shù)在多簇VLIW DSP上的優(yōu)化. 計(jì)算機(jī)工程, 2016, 42(3): 47–52.

        4Rau BR. Iterative module scheduling: An algorithm for software pipelining loops. Proc. of the 27th Annual International Symposium on Microarchitecture. San Jose,CA, USA. 1994. 63–74.

        5Kim W, Yoo D, Park H, et al. SCC based modulo scheduling for coarse-grained reconfigurable processors. Proc. of International Conference on Field-Programmable Technology.Seoul, Korea. 2012. 321–328.

        6Lam MS. Software pipelining: An effective scheduling technique for VLIW machines. Proc. of the SIGPLAN’88 Conference on Language Design and lmplementatlon.Atlanta, Georgia, USA. 1988. 318–328.

        7林海波. 基于EPIC體系結(jié)構(gòu)的軟件流水技術(shù)研究[博士學(xué)位論文]. 北京: 清華大學(xué), 2003.

        8王向前, 鄭啟龍, 洪一. 分簇結(jié)構(gòu)模調(diào)度框架研究. 中國科學(xué)技術(shù)大學(xué)學(xué)報(bào), 2016, 46(2): 104–112.

        9Hiroyuki S, Teruhiko Y. Characteristics of loop unrolling effect: Software pipelining and memory latency hiding.Innovative Architecture for Future Generation High-Performance Processors and Systems. Maui, HI, USA. 2001.63–72.

        10Yoshida T, Sato H. Characteristics extraction of loop unrolling and its modeling. Solid-State Electronics, 1989,32(1): 65–68. [doi: 10.1016/0038-1101(89)90049-X]

        11李愷 翁玉萍. 基于龍芯2F的Glibc庫優(yōu)化. 電子技術(shù), 2010,37(10): 27–29. [doi: 10.3969/j.issn.1004-373X.2010.10.009]

        12李愷. Glibc庫在龍芯2F上的優(yōu)化[碩士學(xué)位論文]. 合肥: 中國科學(xué)技術(shù)大學(xué), 2010.

        Optimization of String and Memory Functions Based on BWDSP

        ZHANG Ren-Gao1, ZHENG Qi-Long1, WANG Xiang-Qian2

        1(School of Computer Science and Technology, University of Science and Technology of China, Hefei 230027, China)
        2(No.38 Research Institute, China Electronics Technology Group Corporation, Hefei 230088, China)

        For architecture of BWDSP, this paper analyzes the implementation of the optimizations, based on vectorization and software pipelining of parallel optimization technique, including special memory access instruction,zero-overhead looping instruction of improving efficiency in the loop, Instruction-level Parallelism(ILP), combined with the specific function of loop characteristics, expansion for the string and memory function of instruction level parallel mining. The experimental results show that the optimization rates of most functions of the theory have a running time of 1.5 times on hardware platform, which is of great importance to enhance the platform performance of BWDSP.

        string and memory functions; BWDSP; optimization of function; vectorization and software pipelining; special instruction; parallelism

        張仁高,鄭啟龍,王向前.基于BWDSP的字符串與內(nèi)存處理函數(shù)優(yōu)化.計(jì)算機(jī)系統(tǒng)應(yīng)用,2017,26(7):167–172. http://www.c-s-a.org.cn/1003-3254/5834.html

        國家核高基重大專項(xiàng)(2012ZX01034001-001)

        2016-11-19; 收到修改稿時(shí)間: 2016-11-24

        猜你喜歡
        字符串拷貝字符
        尋找更強(qiáng)的字符映射管理器
        字符代表幾
        一種USB接口字符液晶控制器設(shè)計(jì)
        電子制作(2019年19期)2019-11-23 08:41:50
        消失的殖民村莊和神秘字符
        中國生殖健康(2018年1期)2018-11-06 07:14:38
        一種新的基于對(duì)稱性的字符串相似性處理算法
        依據(jù)字符串匹配的中文分詞模型研究
        一種針對(duì)Java中字符串的內(nèi)存管理方案
        文件拷貝誰最“給力”
        小改字符串讓殺毒軟件閉嘴
        亚洲最大一区二区在线观看| 一二区成人影院电影网| 国产 字幕 制服 中文 在线| 亚洲国产精品sss在线观看av | 狼人香蕉香蕉在线28 - 百度| 国产精品久久久| 9久9久女女热精品视频免费观看| 精品自拍偷拍一区二区三区| 精品久久av一区二区| 欧洲熟妇色xxxxx欧美老妇伦| 日本午夜国产精彩| 无遮挡粉嫩小泬| 日韩人妻精品视频一区二区三区| 色www永久免费视频| 老司机在线精品视频网站| 亚洲a人片在线观看网址| 日本免费看一区二区三区| 男人的天堂一区二av| 色狠狠色狠狠综合天天| 天天夜碰日日摸日日澡| 中文乱码人妻系列一区二区| 日韩欧美在线播放视频| 日韩国产一区二区三区在线观看| 精品亚洲国产成人蜜臀av| 丰满岳乱妇久久久| av无码特黄一级| 91精品国产乱码久久中文| 亚洲欧美日韩另类精品一区| 久久精品国产亚洲av蜜臀| 亚洲国产福利精品一区二区| 自拍偷拍另类三级三色四色| 四虎影在永久在线观看| 日韩亚洲欧美中文在线| 亚洲人妻无缓冲av不卡| 亚洲国产精品色婷婷久久| 亚洲国产区中文在线观看| 欧美真人性野外做爰| 亚洲av成人精品日韩一区| 亚洲国产剧情在线精品视| 东京热加勒比视频一区| 免费毛片a线观看|