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

        ?

        超長(zhǎng)指令字DSP標(biāo)量訪存單元的設(shè)計(jì)與優(yōu)化

        2023-11-17 13:15:22陳海燕
        關(guān)鍵詞:標(biāo)量寄存器時(shí)鐘

        鄭 康,李 晨,陳海燕,劉 勝,方 糧

        (國(guó)防科技大學(xué)計(jì)算機(jī)學(xué)院,湖南 長(zhǎng)沙 410073)

        1 引言

        近年來,超大規(guī)模集成電路和計(jì)算機(jī)體系結(jié)構(gòu)相關(guān)技術(shù)取得了前所未有的進(jìn)步,計(jì)算系統(tǒng)的性能也隨之不斷提高。受制于工藝和器件特性,處理器和存儲(chǔ)器的發(fā)展邁向了2個(gè)不同的方向:一個(gè)重在提高運(yùn)算的速度;另一個(gè)重在提升容量,而訪問速度的提升相對(duì)小很多。因此,處理器和存儲(chǔ)器的速度之差越來越大,限制了整個(gè)計(jì)算系統(tǒng)的性能,這即是“存儲(chǔ)墻”[1]問題。

        數(shù)字信號(hào)處理器DSP(Digital Signal Processor)是一種專用微處理器,自問世以來便廣泛應(yīng)用于圖像處理[2,3]、音頻處理[4]、汽車電子[5-7]等領(lǐng)域。目前的高性能DSP,如TI公司的C66x和CEVA公司的XC16等,均采用超長(zhǎng)指令字VLIW(Very Long Instruction Word)架構(gòu)而非超標(biāo)量。VLIW架構(gòu)將指令間的相關(guān)性檢測(cè)與調(diào)度等工作交由軟件完成,可以減小硬件資源與功耗,更適合嵌入式低功耗場(chǎng)景。此外,隨著AI(Artificial Intelligence)技術(shù)的發(fā)展與應(yīng)用,VLIW在AI硬件加速器領(lǐng)域也顯現(xiàn)出了活力:Intel在其視覺處理器Movidius Myriad 2上就部署了多個(gè)VLIW向量處理器[8,9];Habana公司在其Gaudi和Goya系列產(chǎn)品上廣泛使用基于VLIW的SIMD(Single Instruction Multiple Data)張量處理器,用于加速AI訓(xùn)練和推理過程[10]。

        由于DSP的架構(gòu)和應(yīng)用場(chǎng)景與通用CPU存在差異,DSP并不適合直接采用CPU的訪存設(shè)計(jì)。針對(duì)DSP的架構(gòu)和應(yīng)用特點(diǎn)設(shè)計(jì)高效的訪存單元,以滿足其在訪存實(shí)時(shí)性、順序與固定延遲、高效數(shù)據(jù)一致性方面的需求,是提高DSP性能的關(guān)鍵。

        DSP的應(yīng)用非常廣泛,涵蓋了控制任務(wù)、實(shí)時(shí)處理、多線程等場(chǎng)景,處理實(shí)時(shí)數(shù)據(jù)的應(yīng)用有著較高的實(shí)時(shí)性要求,采用CPU架構(gòu)中單一的Cache訪存設(shè)計(jì)將嚴(yán)重影響這類應(yīng)用的性能。VLIW的多發(fā)射方式對(duì)訪存指令的順序和延遲有明確要求,硬件若違反此要求將導(dǎo)致程序執(zhí)行錯(cuò)誤。存在多條延遲不同的訪存通路時(shí),如何靈活、可靠地保證順序與固定延遲要求是硬件設(shè)計(jì)與優(yōu)化的要點(diǎn)。DSP通過軟件維護(hù)多核Cache一致性,硬件提供Cache寫回功能為軟件提供支持,寫回操作的性能是實(shí)現(xiàn)多核DSP高效數(shù)據(jù)一致性的關(guān)鍵。

        本文從高性能DSP常見的存儲(chǔ)結(jié)構(gòu)出發(fā),考慮VLIW架構(gòu)和DSP應(yīng)用場(chǎng)景的特點(diǎn),設(shè)計(jì)了標(biāo)量訪存單元,主要工作如下:

        (1)采用Cache、靜態(tài)隨機(jī)訪問存儲(chǔ)器SRAM(Static Random Access Memory)可配置的設(shè)計(jì),滿足訪存實(shí)時(shí)性要求,以適應(yīng)不同應(yīng)用需求。

        (2)提出了基于ID的順序機(jī)制,保證訪存指令的順序與固定延遲,存儲(chǔ)開銷為87.5 B。

        (3)通過尋找Cache狀態(tài)位(Valid、Dirty)按位與后第一個(gè)1(“首1”)的位置,直接定位Cache中的有效臟行,加速一致性寫回操作,提高了多核DSP數(shù)據(jù)一致性的效率。有效臟行占Cache容量25%,50%和75%這3種情況下,采用硬件“首1”寫回所消耗的時(shí)鐘周期數(shù)分別為272,528和785,為逐行掃描的26.4%,51.3%和76.2%,可見時(shí)間開銷只與有效臟行數(shù)量成正比,與Cache容量無關(guān)。

        (4)搭建了基于SystemVerilog的驗(yàn)證平臺(tái),并驗(yàn)證了設(shè)計(jì)實(shí)現(xiàn)的正確性。

        2 相關(guān)工作

        針對(duì)DSP的訪存設(shè)計(jì),有許多工作都考慮到了應(yīng)用程序的不同特點(diǎn),設(shè)計(jì)了適用性更高的各類Cache,應(yīng)用程序貼合Cache架構(gòu)特點(diǎn)時(shí),可以獲得更高的性能。

        通過研究DSP應(yīng)用中的計(jì)算模式和數(shù)據(jù)特征,可以指導(dǎo)高效的硬件設(shè)計(jì)。DSP因?yàn)楦吣苄У某思覯AC(Multiply Accumulate)操作而廣泛用于邊緣卷積神經(jīng)網(wǎng)絡(luò)系統(tǒng),卷積神經(jīng)網(wǎng)絡(luò)計(jì)算中存在大量為零的數(shù)據(jù)。據(jù)此,Lee等[11]提出了ZBS(Zero-Block-Skip)Cache,在寫入全零數(shù)據(jù)時(shí)將其地址記錄進(jìn)ZBS Cache,后續(xù)讀取若命中ZBS Cache,則直接返回全零的數(shù)據(jù),這樣可以降低DRAM訪問。ZBS Cache在包含大量零數(shù)據(jù)時(shí)可以有效提高性能并降低功耗,但處理不符合該特征的應(yīng)用時(shí)反而會(huì)引入額外的功耗,對(duì)不同場(chǎng)景的適用性支持不夠。

        硬件設(shè)計(jì)中,采用可配置的方式可以提高硬件對(duì)不同場(chǎng)景的適用性。Manjunatha等[12]設(shè)計(jì)了Cache組相連路數(shù)控制器,支持對(duì)Cache映射機(jī)制的動(dòng)態(tài)調(diào)整,以便適應(yīng)不同應(yīng)用的特征。基于此,在Liang等[13]專為通信領(lǐng)域研制的一款DSP中,一級(jí)數(shù)據(jù)Cache為4路組相連,Cache容量可以配置,不同類型的應(yīng)用可以根據(jù)自身的特點(diǎn)來配置Cache容量,未使用的Cache存儲(chǔ)體會(huì)通過時(shí)鐘門控的方法降低其產(chǎn)生的動(dòng)態(tài)功耗。

        在一款為移動(dòng)應(yīng)用設(shè)計(jì)的DSP中,Mohanmmad等[14]采用了路數(shù)可變的組相聯(lián)L1D Cache設(shè)計(jì),通過選擇性地訪問存儲(chǔ)體來動(dòng)態(tài)改變每組的路數(shù),但Cache容量也會(huì)變化,路數(shù)減小則Cache容量也減小。數(shù)據(jù)的訪問在Cache命中判斷之后,只有命中的數(shù)據(jù)存儲(chǔ)體才會(huì)被訪問,借助時(shí)鐘門控可以降低功耗。

        上述方案雖然支持Cache容量和組相連路數(shù)的靈活配置,但這些變量都不影響存儲(chǔ)器作為Cache的性質(zhì),對(duì)于數(shù)據(jù)復(fù)用性較差或?qū)崟r(shí)性要求高的應(yīng)用來說,性能提升十分有限。文獻(xiàn)[15]采用的可配置設(shè)計(jì)雖然考慮了訪存實(shí)時(shí)性,但其引入的仲裁邏輯面積占比為3.9%,有進(jìn)一步提升空間。

        Figure 1 Overall structure of scalar memory unit圖1 標(biāo)量訪存單元總體結(jié)構(gòu)

        3 標(biāo)量訪存單元設(shè)計(jì)

        標(biāo)量訪存單元在DSP的存儲(chǔ)層次中屬于第一級(jí)數(shù)據(jù)存儲(chǔ),DSP核對(duì)核外、核內(nèi)數(shù)據(jù)的訪問都要經(jīng)標(biāo)量訪存單元完成。標(biāo)量訪存單元內(nèi)部實(shí)現(xiàn)了4條訪存數(shù)據(jù)通路,其總體結(jié)構(gòu)如圖1所示,Cache通路與Uncache通路負(fù)責(zé)核外數(shù)據(jù)的訪問,SRAM通路與核內(nèi)配置通路負(fù)責(zé)核內(nèi)數(shù)據(jù)的訪問。為了滿足DSP的訪存實(shí)時(shí)性,通過可配置的設(shè)計(jì)使標(biāo)量訪存單元能夠在Cache與SRAM之間切換,片上SRAM能夠滿足復(fù)用性差或?qū)崟r(shí)性要求高的應(yīng)用。在Cache/SRAM可配置的設(shè)計(jì)中,通過合理復(fù)用標(biāo)量訪存單元的數(shù)據(jù)存儲(chǔ)體,能夠有效降低SRAM模式帶來的硬件開銷。

        標(biāo)量訪存單元的輸入為L(zhǎng)oad、Store訪存指令,支持Cache/SRAM 2種工作模式的配置,2種模式下均允許從字節(jié)到4字粒度的訪問。在SRAM模式下,還提供了DMA接口以實(shí)現(xiàn)大量數(shù)據(jù)的快速搬移。發(fā)送給標(biāo)量訪存單元的訪存指令經(jīng)譯碼、地址寄存器訪問、地址計(jì)算后得到訪存地址,指令將根據(jù)該地址及當(dāng)前所處模式流向4條不同的訪存通路。針對(duì)核外數(shù)據(jù)的訪問由Cache通路與Uncache通路完成:

        (1)Cache通路。Cache模式下,訪問核外可Cache數(shù)據(jù)的指令會(huì)流向此通路,若數(shù)據(jù)命中Cache則執(zhí)行訪存操作;若數(shù)據(jù)缺失則停頓流水線,并通過片上網(wǎng)絡(luò)向下一級(jí)存儲(chǔ)請(qǐng)求數(shù)據(jù)。缺失時(shí),如需將Cache中某一行替換出來為缺失行提供位置,則根據(jù)最近最少使用LRU(Least Recently Used)算法選擇被替換的行。

        (2)Uncache通路。Cache模式下訪問核外不可Cache數(shù)據(jù)的指令、SRAM模式下訪問任意核外數(shù)據(jù)的指令都會(huì)流向此通路。該通路中,標(biāo)量訪存單元直接通過網(wǎng)絡(luò)向下一級(jí)存儲(chǔ)請(qǐng)求數(shù)據(jù)。

        針對(duì)核內(nèi)數(shù)據(jù)的訪問由SRAM通路與核內(nèi)配置通路完成:

        (1)SRAM通路。SRAM模式下,訪問核內(nèi)數(shù)據(jù)的指令會(huì)流向此通路,片上SRAM相當(dāng)于一個(gè)永遠(yuǎn)命中的Cache,此時(shí)流水線不會(huì)停頓,訪存指令一定能直接執(zhí)行。

        (2)核內(nèi)配置通路。標(biāo)量訪存單元內(nèi)部有許多配置和狀態(tài)寄存器,例如控制Cache/SRAM模式的配置寄存器和Cache模式下命中、缺失信息統(tǒng)計(jì)寄存器等。這些寄存器都統(tǒng)一映射到地址空間中,針對(duì)特定地址的訪問會(huì)訪問這些寄存器,相應(yīng)指令也就流向此通路。

        對(duì)于Load指令,從各個(gè)通路獲得的數(shù)據(jù)將進(jìn)入數(shù)據(jù)回收站,最后按照VLIW架構(gòu)的順序與固定延遲要求將數(shù)據(jù)返回。標(biāo)量訪存單元是DSP內(nèi)核私有的,核外數(shù)據(jù)的訪問主要在Cache模式下完成,核內(nèi)數(shù)據(jù)的訪問主要在SRAM模式下完成。

        3.1 核外數(shù)據(jù)訪問

        核外數(shù)據(jù)的訪問,如DDR(Double Data Rate)內(nèi)的數(shù)據(jù),主要在Cache模式下完成。在標(biāo)量訪存單元內(nèi)部,存儲(chǔ)體的組織結(jié)構(gòu)設(shè)計(jì)優(yōu)先考慮Cache模式。標(biāo)量訪存單元作為Cache時(shí),大小為32 KB,采用2路組相連映射,共512組,每路大小為32 B。在Cache通路中,為了能在一個(gè)時(shí)鐘周期內(nèi)完成Cache命中情況的判斷,需要同時(shí)檢查2路Tag值,因此需要2個(gè)Tag存儲(chǔ)體。數(shù)據(jù)也使用了2個(gè)存儲(chǔ)體,數(shù)據(jù)訪問在判斷命中的下一個(gè)時(shí)鐘周期,由于此時(shí)命中情況已知,至多只需訪問其中一個(gè)數(shù)據(jù)體,另一數(shù)據(jù)體的使能信號(hào)可直接關(guān)閉,以降低功耗。

        Figure 2 Arbitration of SRAM requests圖2 SRAM請(qǐng)求的仲裁

        出現(xiàn)缺失時(shí),整個(gè)流水線會(huì)停頓,由硬件狀態(tài)機(jī)完成向下一級(jí)存儲(chǔ)器請(qǐng)求數(shù)據(jù)的過程。寫入下一級(jí)返回的新數(shù)據(jù)時(shí),替換策略采用LRU算法,因?yàn)镃ache中1組只有2路,每組只需要添加1位LRU位,每次訪問后將LRU位置為本次未訪問的那一路,便可實(shí)現(xiàn)LRU算法。若被替換的舊數(shù)據(jù)是臟的,則還需將舊數(shù)據(jù)寫回到下一級(jí),以保證數(shù)據(jù)的正確性。

        Cache模式下還支持對(duì)核外某些地址范圍的數(shù)據(jù)是否可Cache進(jìn)行配置,同樣由標(biāo)量訪存單元內(nèi)的配置寄存器實(shí)現(xiàn)。對(duì)于可Cache數(shù)據(jù),其訪問由前述Cache通路完成;對(duì)不可Cache數(shù)據(jù),其訪問由Uncache通路完成,計(jì)算出地址后就直接通過網(wǎng)絡(luò)向下一級(jí)存儲(chǔ)發(fā)出請(qǐng)求。Uncache通路中,若為讀操作,則停頓整個(gè)流水線,待數(shù)據(jù)返回時(shí)再恢復(fù);若為寫操作,則流水線不會(huì)停頓,且只要網(wǎng)絡(luò)不繁忙,針對(duì)Uncache數(shù)據(jù)的寫支持連續(xù)執(zhí)行。

        標(biāo)量訪存單元配置為SRAM模式時(shí)也可以訪問核外數(shù)據(jù),此時(shí)數(shù)據(jù)體全部負(fù)責(zé)核內(nèi)數(shù)據(jù)的存儲(chǔ),因此針對(duì)核外數(shù)據(jù)的訪問全部進(jìn)入U(xiǎn)ncache通路,按照前述Uncache的方式處理。

        3.2 核內(nèi)數(shù)據(jù)的訪問

        核內(nèi)數(shù)據(jù)的訪問主要在SRAM模式下完成,此時(shí)標(biāo)量訪存單元對(duì)應(yīng)著地址空間中固定分配的32 KB核內(nèi)數(shù)據(jù)空間,對(duì)該空間的訪問都會(huì)流向SRAM通路。Tag體將被忽略,2個(gè)數(shù)據(jù)體各負(fù)責(zé)16 KB,按高位交叉編址。

        計(jì)算出訪存指令的地址后,先根據(jù)地址高位確定要訪問的數(shù)據(jù)落在哪一個(gè)數(shù)據(jù)體,再訪問被選中的數(shù)據(jù)體,此時(shí)另一個(gè)數(shù)據(jù)體的使能信號(hào)同樣可以關(guān)閉,以降低功耗。SRAM無需進(jìn)行任何Cache管理,因而可以做到連續(xù)不斷地訪問,能滿足實(shí)時(shí)性。

        作為SRAM時(shí),為實(shí)現(xiàn)快速搬移大量數(shù)據(jù),添加了DMA接口,包含讀、寫2個(gè)通道。若DMA讀、DMA寫以及訪存指令同時(shí)訪問數(shù)據(jù),由于數(shù)據(jù)存儲(chǔ)體只有一個(gè)端口,可能會(huì)出現(xiàn)沖突,需要進(jìn)行仲裁。仲裁邏輯的規(guī)則如下:

        (1)Load、Store指令優(yōu)先。訪存指令來自于程序的執(zhí)行,為了保證程序的正常執(zhí)行不受影響,訪存指令的優(yōu)先級(jí)最高。不論訪存指令訪問哪個(gè)數(shù)據(jù)體,不論是否有DMA請(qǐng)求與其沖突,無條件執(zhí)行訪存指令。

        (2)DMA任意通道與訪存指令不沖突且DMA通道之間也不沖突時(shí),可響應(yīng)該DMA通道的請(qǐng)求。此種情況見于一個(gè)數(shù)據(jù)體由某一DMA通道訪問,另一數(shù)據(jù)體由訪存指令(或另一通道)訪問,2個(gè)數(shù)據(jù)體的訪問可以并行執(zhí)行,互不影響。當(dāng)另一數(shù)據(jù)體出現(xiàn)訪存指令與DMA沖突時(shí),訪存指令無條件優(yōu)先。

        (3)DMA與訪存指令不沖突,但2個(gè)DMA通道之間沖突時(shí),通過輪詢的方法進(jìn)行仲裁。此種情況見于DMA讀、DMA寫訪問同一數(shù)據(jù)體(訪存指令不訪問)時(shí)。若上次沖突時(shí)讀優(yōu)先,則此次寫優(yōu)先;若上次沖突時(shí)寫優(yōu)先,則此次讀優(yōu)先。硬件通過1位寄存器記錄下次優(yōu)先的通道,每次仲裁后將寄存器取反即可。

        圖2列出了上述仲裁情形,虛線表示本次仲裁成功的請(qǐng)求。

        標(biāo)量訪存單元內(nèi)部實(shí)現(xiàn)了許多核內(nèi)配置和統(tǒng)計(jì)寄存器,這些寄存器都統(tǒng)一映射到地址空間中,可通過Load、Store指令直接訪問。在Cache、SRAM 2種模式下,針對(duì)核內(nèi)寄存器的訪問都將流向核內(nèi)配置通路,完成對(duì)寄存器的讀寫操作。

        3.3 可配置的Cache/SRAM

        Cache是緩解“存儲(chǔ)墻”問題的有效方案,其應(yīng)用相當(dāng)廣泛,幾乎所有的計(jì)算設(shè)備都包含Cache。Cache利用程序執(zhí)行的時(shí)間局部性和空間局部性,將當(dāng)前常用的數(shù)據(jù)存在一個(gè)容量小但速度快的存儲(chǔ)器中。這樣能夠快速響應(yīng)大部分訪存指令,只在少數(shù)情況下訪存延遲較高[16]。

        大部分的應(yīng)用程序,如執(zhí)行控制任務(wù)、處理靜態(tài)數(shù)據(jù)或復(fù)雜計(jì)算等,程序本身就擁有較好的局部性,在Cache的加持下可以取得較好的性能。但是,在處理流媒體數(shù)據(jù)、無線信號(hào)等場(chǎng)景下[17,18],程序訪存的時(shí)間和空間局部性較差,Cache缺失率會(huì)顯著增大,維護(hù)Cache所導(dǎo)致的時(shí)間開銷也會(huì)增加,從而嚴(yán)重影響程序性能。此外,出現(xiàn)Cache缺失所耗費(fèi)的時(shí)間也難以滿足對(duì)實(shí)時(shí)性要求較高的場(chǎng)景。對(duì)于這類應(yīng)用,片上SRAM比Cache更貼合其特征,針對(duì)SRAM的快速訪問與數(shù)據(jù)是否復(fù)用無關(guān);由于不用維護(hù)任何Cache性質(zhì),沒有缺失,SRAM可以滿足實(shí)時(shí)性的要求。

        上述2類程序都屬于DSP的應(yīng)用場(chǎng)景,因此DSP的訪存設(shè)計(jì)應(yīng)當(dāng)兼顧這2類程序的特征,可配置的Cache/SRAM能夠以較小的開銷滿足需求。相比于同時(shí)包含Cache和片上SRAM,其硬件更簡(jiǎn)單,資源和面積消耗小,2種不同模式可以共用同一存儲(chǔ)器件,利用率較高。此外,DSP很少有通用CPU的多用戶、多任務(wù)場(chǎng)景,其運(yùn)行環(huán)境更為單一,在Cache和SRAM之間切換的頻率很低,也適合這種可配置的設(shè)計(jì)。

        標(biāo)量訪存單元內(nèi)部利用一個(gè)模式控制寄存器(SMMCR)完成Cache/SRAM模式的配置。SMMCR與其他寄存器一樣被映射到地址空間中,程序通過Load、Store指令訪問其地址即可對(duì)其進(jìn)行讀寫。圖3所示為Cache/SRAM模式切換過程。

        Figure 3 Process of mode switching圖3 模式切換過程

        (1)SMMCR=1時(shí)為SRAM模式,軟件先執(zhí)行一條柵欄(fence)指令,再向SMMCR寫入0即可切換至Cache模式。柵欄的功能是排空標(biāo)量訪存單元內(nèi)正在執(zhí)行的所有指令,保證切換前的指令都能正確執(zhí)行。

        (2)SMMCR=0時(shí)為Cache模式,軟件先執(zhí)行一次寫回(flush為寫回宏)操作,再向SMMCR寫入1即可切換至SRAM模式。由于Cache中緩存的數(shù)據(jù)可能被修改過,故需要先執(zhí)行寫回操作以確保數(shù)據(jù)一致性。

        4 面向VLIW與數(shù)據(jù)一致性的優(yōu)化

        為確保VLIW架構(gòu)所要求的順序與固定延遲,并實(shí)現(xiàn)多核DSP高效數(shù)據(jù)一致性,本文提出了2種優(yōu)化方法:

        (1)基于ID的順序機(jī)制。通過循環(huán)計(jì)數(shù)器為指令分配ID,利用ID隊(duì)列確保指令順序,根據(jù)ID與計(jì)數(shù)器值確保指令延遲,在多條延遲不同的通路匯聚時(shí)能有效解決亂序到達(dá)、提前到達(dá)的問題,靈活、可靠地滿足VLIW架構(gòu)的需求,存儲(chǔ)開銷為87.5 B。

        (2)數(shù)據(jù)一致性加速。通過對(duì)Cache中Valid、Dirty狀態(tài)位進(jìn)行按位與得到有效臟行向量,利用硬件查找向量中的第一個(gè)1(即“首1”)快速定位待寫回行,加速了一致性寫回操作,提高了多核DSP數(shù)據(jù)一致性的效率。

        下面詳細(xì)介紹這2種優(yōu)化方法。

        4.1 基于ID的順序機(jī)制

        VLIW架構(gòu)將指令間的相關(guān)性檢測(cè)和調(diào)度工作交給編譯器靜態(tài)完成,這就要求指令執(zhí)行的時(shí)間(即延遲)在編譯時(shí)就必須確定。對(duì)Load指令而言,其取回的數(shù)據(jù)必須在固定的時(shí)間有效。為了固定指令的執(zhí)行時(shí)間,微架構(gòu)實(shí)現(xiàn)上通常采用鎖步的方式,任意功能單元停頓將造成整個(gè)DSP核停頓,讓所有功能單元經(jīng)歷的非停頓節(jié)拍數(shù)相同。標(biāo)量訪存單元接收到Load指令后,經(jīng)過約定好的非停頓拍數(shù)才能返回?cái)?shù)據(jù),不能提前也不能推遲。為了方便討論,以圖1中的地址計(jì)算站為起點(diǎn),標(biāo)量訪存單元必須在計(jì)算完Load地址后的第6個(gè)非停頓節(jié)拍準(zhǔn)時(shí)返回?cái)?shù)據(jù),這是固定延遲要求。此外,先執(zhí)行的Load指令應(yīng)當(dāng)先返回?cái)?shù)據(jù),后執(zhí)行的后返回,這樣才能保證寄存器狀態(tài)的修改符合匯編程序的語義,這是對(duì)順序的要求。

        在圖1所示的流水線中,Load指令取回的數(shù)據(jù)會(huì)出現(xiàn)提前到達(dá)或亂序到達(dá)的情況。對(duì)SRAM通路而言,由于片上SRAM的訪問1拍即可完成,無需用完6拍就能返回?cái)?shù)據(jù);Uncache通路中,收到訪存請(qǐng)求后立即置位停頓信號(hào),等到網(wǎng)絡(luò)返回?cái)?shù)據(jù)后再清除停頓,也是不到6個(gè)非停頓節(jié)拍就能得到數(shù)據(jù)。如果數(shù)據(jù)提前到達(dá)后直接返回,就屬于提前返回,不滿足固定延遲要求。

        在Cache模式下,假設(shè)未命中Cache的Load1指令緊跟訪問Uncache空間的Load2指令。Load1進(jìn)入Cache通路經(jīng)過判斷命中之后才能將停頓信號(hào)置位,而此時(shí)Load2已經(jīng)進(jìn)入了Uncache通路,向網(wǎng)絡(luò)請(qǐng)求數(shù)據(jù)并置位停頓信號(hào)。Load2停頓整個(gè)內(nèi)核時(shí),Load1也卡在Cache通路中不再流動(dòng)。當(dāng)網(wǎng)絡(luò)返回Load2數(shù)據(jù)后,Load1才繼續(xù)在Cache通路中流動(dòng)。這種情況下,Load2的數(shù)據(jù)已經(jīng)返回而Load1還在處理,Load2數(shù)據(jù)比Load1數(shù)據(jù)先到達(dá)數(shù)據(jù)回收站,出現(xiàn)了亂序到達(dá),直接返回將違反順序要求。

        為了保證VLIW架構(gòu)的順序與固定延遲要求,設(shè)計(jì)了基于ID的順序機(jī)制,如圖4所示。該機(jī)制中最重要的3個(gè)部件為:

        Figure 4 ID-based ordering architecture圖4 基于ID的順序機(jī)制架構(gòu)

        (1)循環(huán)計(jì)數(shù)器。循環(huán)計(jì)數(shù)器對(duì)非停頓節(jié)拍數(shù)進(jìn)行計(jì)數(shù),停頓時(shí)其值保持不變,非停頓時(shí)自增,當(dāng)計(jì)數(shù)到4便跳回0。Load指令流向不同通路時(shí),將當(dāng)前節(jié)拍計(jì)數(shù)器的值作為其ID。

        (2)ID隊(duì)列。Load指令流向不同通路時(shí),其對(duì)應(yīng)的ID同時(shí)發(fā)送到數(shù)據(jù)回收站中的ID隊(duì)列。Load指令是按序發(fā)送的,也將按序進(jìn)入隊(duì)列,ID隊(duì)列記錄了Load指令的正確順序,隊(duì)首ID就對(duì)應(yīng)下一個(gè)應(yīng)當(dāng)返回的Load。

        (3)ID緩存。提前到達(dá)、亂序到達(dá)的數(shù)據(jù),由于不能直接返回,因此需要將其暫存,這就是ID緩存的任務(wù)。ID緩存包含5條記錄,編號(hào)為0~4,與ID號(hào)一一對(duì)應(yīng),需要緩存的Load會(huì)被緩存至其ID對(duì)應(yīng)的位置。

        一條Load指令A(yù)經(jīng)地址計(jì)算、ID分配后流入相應(yīng)通路(①),經(jīng)執(zhí)行后其數(shù)據(jù)到達(dá)數(shù)據(jù)回收站,將接受順序和延遲檢查(②)。

        ID隊(duì)列按序存放了流出指令的ID值,若A的ID值不等于隊(duì)首ID值,說明A不是下一條應(yīng)該返回的指令,它是亂序到達(dá)的,因此需要將A的數(shù)據(jù)暫存至ID緩存,其在ID緩存中暫存的記錄編號(hào)等于其ID號(hào)(③)。若A的ID與隊(duì)首ID相同,說明A確實(shí)是下一條應(yīng)當(dāng)返回的指令,順序正確,還需進(jìn)行延遲檢查。由于所有Load都要在非停頓的第6拍給出數(shù)據(jù),A只有在非停頓的第5拍到達(dá)數(shù)據(jù)回收站才可以不暫存。若A在第5拍之前到達(dá),則屬于提前到達(dá),違反了固定延遲,仍需要暫存至ID緩存(③);若A恰好于第5拍到達(dá),此時(shí)A按序按時(shí)到達(dá),可以直接準(zhǔn)備下一拍輸出(④)。

        Load指令的ID值源自于非停頓節(jié)拍計(jì)數(shù)器,利用ID值和到達(dá)數(shù)據(jù)回收站當(dāng)拍的計(jì)數(shù)器值即可確定該Load是否按時(shí)到達(dá)。若Load指令及隊(duì)首的ID為0,說明該Load是0時(shí)刻流出的,其非停頓第5拍時(shí)計(jì)數(shù)器應(yīng)當(dāng)為4,則ID為0與計(jì)數(shù)器值為4對(duì)應(yīng)。其他ID值按同樣方法推導(dǎo)便可得到延遲檢查表,如表1所示。

        除了對(duì)新到達(dá)的Load指令進(jìn)行處理外,也要檢查已經(jīng)暫存至ID緩存中的Load指令。若發(fā)現(xiàn)某條Load指令滿足順序和固定延遲,則下一拍就將其返回(⑤)。所有已暫存指令和新到達(dá)指令的處理過程是并行執(zhí)行的,且兩者的比較原理和流程是一致的,如圖5所示。

        Figure 6 Execution of two load instructions圖6 2條Load指令的處理

        Table 1 Delay checking table

        Figure 5 Check flow of load instructions圖5 Load指令檢查流程

        圖6以未命中的Cache訪問緊跟Uncache訪問為例,說明該機(jī)制的工作流程。內(nèi)核停頓及等待片上網(wǎng)絡(luò)響應(yīng)的時(shí)間在圖6中已略去。以下按照時(shí)間先后描述圖6中各事件:

        ①訪問可Cache數(shù)據(jù)的Load指令發(fā)出,記為L(zhǎng)oad1,其ID為1,目的寄存器(圖中Rd)為5。

        ②訪問Uncache數(shù)據(jù)的Load指令發(fā)出,記為L(zhǎng)oad2,其ID為2,目的寄存器為6。

        ③Load2率先到達(dá)數(shù)據(jù)回收站,此時(shí)指令順序已亂,Load2將進(jìn)入ID緩存,不會(huì)被直接返回。

        ④Load1到達(dá)回收站,此時(shí)Load2依然未返回。

        ⑤Load1先返回,寫目的寄存器5,循環(huán)計(jì)數(shù)器為1,恰好為L(zhǎng)oad1發(fā)出后的第6拍;隨后Load2返回,寫目的寄存器為6,循環(huán)計(jì)數(shù)器為2,為L(zhǎng)oad2發(fā)出的第6拍。

        可以看出,2條順序發(fā)出的Load指令,亂序進(jìn)入數(shù)據(jù)回收站,最終又順序返回,且返回時(shí)間符合固定延遲要求。基于ID的順序機(jī)制,將不能直接返回的Load進(jìn)行暫存,待其滿足條件后再返回?cái)?shù)據(jù),保證了VLIW所要求的順序和固定延遲,存儲(chǔ)開銷為87.5 B。

        4.2 數(shù)據(jù)一致性加速

        在通用CPU中,多核Cache一致性通常由硬件負(fù)責(zé),硬件采用Snoop、Directory等協(xié)議來實(shí)現(xiàn)一致性。一致性協(xié)議會(huì)讓Cache控制變得十分復(fù)雜,資源、面積和功耗等開銷也比較高,不太適合于嵌入式低功耗領(lǐng)域。為了讓硬件更簡(jiǎn)單,DSP通常只提供寫回功能,可以將特定地址范圍內(nèi)的數(shù)據(jù)從Cache作廢或者寫回到下一級(jí)存儲(chǔ)器。多個(gè)DSP核共享數(shù)據(jù)時(shí),軟件需要利用寫回功能來維護(hù)多核DSP數(shù)據(jù)一致性。如圖7所示,核H1寫入某個(gè)共享變量后,應(yīng)當(dāng)將數(shù)據(jù)寫回到下一級(jí)存儲(chǔ)器;核H2讀取該共享變量時(shí),需要先將其作廢,再發(fā)出讀請(qǐng)求,出現(xiàn)缺失時(shí)向下一級(jí)存儲(chǔ)器請(qǐng)求最新的值,從而避免讀到舊值。在基于多核DSP搭建的雷達(dá)[19]、聲吶[20,21]等系統(tǒng)中,圖7所示是常見的數(shù)據(jù)共享方式。

        Figure 7 Sharing data consistency through write back圖7 利用寫回實(shí)現(xiàn)共享數(shù)據(jù)一致性

        執(zhí)行一致性寫回時(shí),一種方法是對(duì)目標(biāo)地址空間中的每一行都進(jìn)行判斷,檢查其是否在Cache中,若在Cache中且為臟則寫回,否則便跳過。該方法的時(shí)間開銷與地址空間的大小成正比,當(dāng)?shù)刂房臻g范圍很大時(shí),如1 MB,需要檢查的行數(shù)是非常多的,時(shí)間開銷無法接受。當(dāng)?shù)刂房臻g范圍超過Cache容量時(shí),可以不對(duì)地址空間進(jìn)行掃描,轉(zhuǎn)而對(duì)Cache逐行掃描,Cache中處在地址空間內(nèi)的臟行將會(huì)被寫回,其余行則跳過。這樣,一致性寫回操作時(shí)間開銷的上限就由Cache的行數(shù)決定。對(duì)標(biāo)量訪存單元而言,逐行掃描整個(gè)Cache的時(shí)間開銷至少為1 024個(gè)時(shí)鐘周期。

        上述方法雖然在大地址空間時(shí)降低了時(shí)間開銷,但逐行掃描整個(gè)Cache依然要消耗不少時(shí)鐘周期。當(dāng)Cache中有較多無效行或非臟行時(shí),針對(duì)這些行的掃描完全是無效操作,因?yàn)樗鼈儾豢赡苁菍懟氐膶?duì)象。為進(jìn)一步提高多核數(shù)據(jù)一致性的效率,設(shè)計(jì)了硬件查找“首1”的寫回方法,寫回時(shí)跳過Cache中的無效行和非臟行,使整個(gè)操作的時(shí)間大大減小。

        一致性寫回操作關(guān)注的對(duì)象是Cache中的有效臟行,利用Cache中現(xiàn)有的Valid、Dirty狀態(tài)位進(jìn)行與操作便可得到表示有效臟行的位向量,記為VD。通過當(dāng)前寫回行的位置,可以直接定位到下一有效臟行,關(guān)鍵步驟如下:

        ①利用當(dāng)前行的位置信息,可以得到一個(gè)mask向量,在這個(gè)向量中當(dāng)前行及其之前的行為0,之后的行為1。

        ②用mask向量與VD向量進(jìn)行與操作,則可以在VD中屏蔽掉當(dāng)前行及其之前的所有行。

        ③針對(duì)屏蔽后的VD,利用硬件找出第一個(gè)1的位置,即為下一有效臟行,中間的無效行、非臟行均已跳過。

        Figure 8 Consistency write back speed up圖8 一致性寫回加速

        圖8說明了上述一致性寫回操作的加速過程,其中最關(guān)鍵的部分為mask向量的生成和硬件查找“首1”,這兩者的計(jì)算原理如圖9所示。

        Figure 9 Computation of mask and leading one圖9 mask與“首1”的計(jì)算

        已知某一行的位置時(shí),將位置向量按位取反再加1,該位置之前會(huì)不斷進(jìn)位至第一個(gè)0處,恰好為該位置,之后利用初始位置向量對(duì)該位置進(jìn)行屏蔽即可得到mask向量。硬件查找“首1”通過二分法實(shí)現(xiàn),以尋找4位向量中的“首1”為例,記輸入為一個(gè)4位向量VD,輸出為2位的索引index。先將VD分為2組,相鄰2位為一組。index的高位代表著“首1”出現(xiàn)在哪一組,這可以通過判斷每組是否為全0來實(shí)現(xiàn)。通過組內(nèi)先非后與邏輯計(jì)算出代表每組是否全零的向量zero,若第1組為全0則index高位為1,否則為0。index的低位代表“首1”在某一組內(nèi)的偏移,對(duì)組內(nèi)低位取反即可得到該偏移,具體選擇哪一組的偏移由index高位控制。

        向量長(zhǎng)度較大時(shí),通過多級(jí)二分法對(duì)向量進(jìn)行分解,分解后的各部分之間能夠并行執(zhí)行,避免關(guān)鍵路徑。硬件查找“首1”的機(jī)制,跳過了Cache中的無效行和非臟行,轉(zhuǎn)而只對(duì)其中的有效臟行進(jìn)行處理,大大減小了一致性寫回操作的時(shí)間開銷,提高了多核DSP數(shù)據(jù)一致性的效率。

        5 實(shí)驗(yàn)和結(jié)果分析

        5.1 驗(yàn)證方案

        為確保設(shè)計(jì)的正確性,使用SystemVerilog語言搭建了模塊級(jí)驗(yàn)證環(huán)境,并在Linux環(huán)境下進(jìn)行前端仿真、驗(yàn)證,驗(yàn)證環(huán)境如圖10所示。

        Figure 10 Verification environment圖10 驗(yàn)證環(huán)境

        圖10中,LDST驅(qū)動(dòng)負(fù)責(zé)生成隨機(jī)訪問的Load、Store指令,DMA驅(qū)動(dòng)生成隨機(jī)的DMA請(qǐng)求。訪存指令和DMA請(qǐng)求送往標(biāo)量訪存單元處理的同時(shí),也會(huì)發(fā)給黃金模型,黃金模型通過軟件方法采用與標(biāo)量訪存單元相同的機(jī)制來處理訪存指令和DMA請(qǐng)求。內(nèi)存模型利用了SystemVerilog中的關(guān)聯(lián)數(shù)組,模擬了一個(gè)片上網(wǎng)絡(luò)和下級(jí)存儲(chǔ)的環(huán)境。Load指令及DMA讀通道從標(biāo)量訪存單元和黃金模型讀出的值會(huì)進(jìn)入記分牌進(jìn)行比較,如果出現(xiàn)結(jié)果不一致將報(bào)告錯(cuò)誤。此外,SVA斷言不斷檢測(cè)一些設(shè)計(jì)特性是否滿足,如一條Load指令是否在非停頓第6拍給出數(shù)據(jù),若不滿足也會(huì)報(bào)告錯(cuò)誤。

        在Cache和SRAM 2種模式下,針對(duì)每條數(shù)據(jù)通路、核內(nèi)核外空間都進(jìn)行了百萬次激勵(lì)驗(yàn)證,均已通過,可配置設(shè)計(jì)下的各數(shù)據(jù)通路訪問工作正常。

        5.2 邏輯綜合

        在12 nm工藝下對(duì)整個(gè)標(biāo)量訪存單元進(jìn)行綜合,其總面積開銷為183 978.954 2 μm2,功耗為61.332 4 mW,時(shí)鐘門控率達(dá)93.90%。圖11列出了主要模塊的單元面積占比。

        Figure 11 Area occupation of main modules圖11 主要模塊面積占比

        與文獻(xiàn)[12-14]的相比,可配置的設(shè)計(jì)使得標(biāo)量訪存單元適用的場(chǎng)景更加廣泛,能夠滿足訪存實(shí)時(shí)性需求。從圖11可以看出,SRAM控制邏輯的面積僅占總面積的0.91%,較之[15]的進(jìn)一步降低。

        5.3 基于ID的順序機(jī)制

        4.1節(jié)介紹了基于ID的順序機(jī)制及其主要結(jié)構(gòu)與工作流程,現(xiàn)對(duì)該機(jī)制的功能正確性進(jìn)行證明,并分析其存儲(chǔ)開銷與優(yōu)勢(shì)。

        如圖12所示,設(shè)VLIW架構(gòu)的固定延遲要求為指令發(fā)出后的第T+2(T≥0)個(gè)時(shí)鐘周期返回?cái)?shù)據(jù)(包含發(fā)出與返回這2個(gè)時(shí)鐘周期,故至少為2)。循環(huán)計(jì)數(shù)器與ID值在0~T,計(jì)數(shù)器可以看作進(jìn)行模T+1加法運(yùn)算,故對(duì)任意的ID值,ID與(ID+T)mod(T+1)延遲匹配。設(shè)訪存流水線中共有N條通路,并記第i條通路的延遲為delayi,且0≤delayi≤T。

        Figure 12 Case of N paths圖12 N條通路的情況

        現(xiàn)有2條指令i、j,指令i于第Si時(shí)鐘周期發(fā)向通路i,其ID值為IDi,應(yīng)當(dāng)于第Si+T+1時(shí)鐘周期返回;指令j于第Sj時(shí)鐘周期發(fā)向通路,其ID值為IDj,應(yīng)當(dāng)于第Sj+T+1時(shí)鐘周期返回。假設(shè)指令i先發(fā)出,即:

        Si

        (1)

        2條指令發(fā)出后,ID隊(duì)列的狀態(tài)為(IDi,IDj),且2條指令到達(dá)數(shù)據(jù)回收站的時(shí)間如式(2)所示:

        (2)

        當(dāng)指令i到達(dá)回收站時(shí),記循環(huán)計(jì)數(shù)器的值如式(3)所示:

        Cnti=(IDi+delayi)mod(T+1)

        (3)

        以下對(duì)指令i不晚于指令j到達(dá)(Ei≤Ej)、指令i晚于指令j到達(dá)(Ei>Ej)2種情況分別進(jìn)行討論。

        5.3.1Ei≤Ej

        Ei≤Ej時(shí),對(duì)應(yīng)指令i不晚于指令j到達(dá)的情況。對(duì)指令i而言,由于ID隊(duì)列隊(duì)首為IDi,因此指令i的順序滿足。

        (1)若delayi=T,由式(3)知此時(shí)計(jì)數(shù)器值為Cnti=(IDi+T)mod(T+1),與IDi恰好匹配,因此指令i將于下一時(shí)鐘周期返回。由式(2)知其返回時(shí)間為Ei+1=Si+T+1,符合延遲要求,故指令i按序、按時(shí)返回。

        (2)若delayi

        [(IDi+T)mod(T+1)-

        (IDi+delayi)mod(T+1)]mod(T+1)=

        (T-delayi)mod(T+1)=T-delayi

        (4)

        根據(jù)該剩余等待時(shí)間及指令i的到達(dá)時(shí)間Ei即可得到i的返回時(shí)間,如式(5)所示:

        T-delayi+Ei+1=

        T-delayi+Si+delayi+1=

        Si+T+1

        (5)

        可見指令i的返回時(shí)間依然符合固定延遲要求。因此,無論delayi取何值,指令i總能按序、按時(shí)返回。下面考慮指令j。

        (3)若指令j到達(dá)時(shí)指令i已經(jīng)返回,此時(shí)ID隊(duì)列隊(duì)首為IDj,指令j的處理過程將與指令i完全一致,故此時(shí)指令j也能按序、按時(shí)返回。

        (4)若指令j到達(dá)時(shí)指令i仍在等待,由于ID隊(duì)列隊(duì)首依舊是IDi,故指令j也將進(jìn)入ID緩存等待,且此時(shí)有式(6)成立:

        Ej=Sj+delayj≤Si+T

        (6)

        式(6)表示指令j到達(dá)時(shí)指令i最多處于最后一個(gè)等待時(shí)鐘周期,還未返回。聯(lián)立式(1)與式(6),可得式(7):

        delayj

        (7)

        故指令j與(2)中的指令i相同,其到達(dá)后應(yīng)等待T-delayj個(gè)時(shí)鐘周期。指令i于Si+T+1返回時(shí),ID隊(duì)列隊(duì)首變?yōu)镮Dj,指令j才有機(jī)會(huì)返回,此時(shí)指令j已等待的時(shí)間如式(8)所示:

        Si+T+1-Ej=

        Si+T+1-(Sj+delayj)=

        T-delayj+(Si-Sj+1)≤

        T-delayj

        (8)

        可見指令i返回后,指令j的實(shí)際等待時(shí)間不超過應(yīng)等待時(shí)間,指令j仍需要在ID緩存等待延遲匹配。將式(8)中的已等待時(shí)間計(jì)入通路延遲,指令j等價(jià)于經(jīng)過了一條延遲為T+1+Si-Sj的更長(zhǎng)通路到達(dá)回收站,并且到達(dá)時(shí)指令i已經(jīng)返回,由(3)可知指令j能按序、按時(shí)返回。

        綜合上述4種情況的分析可知,當(dāng)Ei≤Ej時(shí),任意指令i、j都能按序、按時(shí)返回。

        5.3.2 Ei>Ej

        Ei>Ej時(shí),對(duì)應(yīng)指令i晚于指令j到達(dá)的情況。對(duì)指令j而言,由于ID隊(duì)列隊(duì)首為IDi,因此指令j將進(jìn)入ID緩存。

        待指令i到達(dá)時(shí),其處理與Ei

        Sj+delayj

        (9)

        再由式(1)和式(9)可得式(10):

        delayj

        (10)

        這說明此時(shí)指令j的應(yīng)等待時(shí)間仍為T-delayj,且指令i仍然于第Si+T+1時(shí)鐘周期返回,故式(8)仍然成立,其結(jié)論也仍然成立,指令j能按序、按時(shí)返回。

        綜合Ei≤Ej和Ei>Ej的結(jié)果可知,基于ID的順序機(jī)制可以保證任意2條指令之間的順序與延遲。

        5.3.3 靈活性與硬件開銷

        在基于ID的順序機(jī)制中,最主要的硬件開銷為圖4中的ID緩存。假設(shè)數(shù)據(jù)寬度為B,當(dāng)具有N條訪存通路、延遲要求為T+2時(shí),ID緩存的大小為B(T+1),與通路條數(shù)N無關(guān)。

        當(dāng)N增加但T不變時(shí),若直接根據(jù)流水線結(jié)構(gòu),對(duì)2N種可能到達(dá)情形加以辨別、處理,硬件邏輯將十分復(fù)雜,且容易出錯(cuò)。但是,在順序機(jī)制中,計(jì)數(shù)器與ID位寬、ID緩存大小等均無需改變,硬件只需增加一些處理邏輯即可,具有較好的靈活性。在標(biāo)量訪存單元中,基于ID的順序機(jī)制存儲(chǔ)開銷為87.5 B。

        5.4 數(shù)據(jù)一致性加速評(píng)估

        為評(píng)估數(shù)據(jù)一致性的性能提升效果,對(duì)標(biāo)量訪存單元的一致性寫回操作耗時(shí)進(jìn)行了實(shí)驗(yàn)與統(tǒng)計(jì)。實(shí)驗(yàn)中,標(biāo)量訪存單元配置為Cache,片上網(wǎng)絡(luò)帶寬設(shè)為足夠大(每個(gè)時(shí)鐘周期都能接收一行),在有效臟行數(shù)據(jù)量為Cache容量的0%,25%,50%,75%和100%這5種情況下,對(duì)逐行掃描寫回和硬件“首1”寫回的耗時(shí)分別進(jìn)行了統(tǒng)計(jì)。表2為2種寫回方式耗時(shí)的統(tǒng)計(jì)結(jié)果。圖13是以逐行掃描為基準(zhǔn)的歸一化結(jié)果。

        采用逐行掃描方式寫回整個(gè)Cache,其基本時(shí)間開銷為1 030個(gè)時(shí)鐘周期,即便沒有有效臟行,也依然需要消耗大量無效時(shí)鐘周期進(jìn)行檢查。當(dāng)有效臟行占比為100%時(shí),總耗時(shí)為1 037個(gè)時(shí)鐘周期,多余部分為處理網(wǎng)絡(luò)寫響應(yīng)的開銷。寫回時(shí),網(wǎng)絡(luò)返回的寫響應(yīng)需要得到處理。若實(shí)際寫回最后一臟行后,還要進(jìn)行許多無效檢查,則網(wǎng)絡(luò)的寫響應(yīng)處理隱藏在了無效檢查的時(shí)間內(nèi)。若寫回最后一臟行后不再進(jìn)行無效檢查,等待并處理網(wǎng)絡(luò)寫響應(yīng)的時(shí)間就無法隱藏,將計(jì)入總耗時(shí)。

        Table 2 Time consumption of write back 表2 寫回耗時(shí)

        Figure 13 Normalized time consumption of write back圖13 歸一化寫回耗時(shí)

        采用優(yōu)化后的硬件“首1”寫回,在無有效臟行時(shí),只需8個(gè)時(shí)鐘周期即可完成判斷并結(jié)束寫回。在有效臟行占比為25%,50%和75%這3種情況下,硬件“首1”消耗的時(shí)鐘周期數(shù)分別為272,528和785,為逐行掃描的26.4%,51.3%和76.2%。寫回整個(gè)Cache時(shí),耗時(shí)1 041個(gè)時(shí)鐘周期,比逐行掃描僅多了4個(gè)時(shí)鐘周期。

        與逐行掃描相比,“首1”式寫回需要使用更多的寄存器資源,查找“首1”的硬件邏輯也帶來了更多的資源消耗。一致性寫回操作需要輸入并修改Cache的Valid、Dirty狀態(tài)位,由于Cache行數(shù)較多,與狀態(tài)位相關(guān)的處理將使用較多的寄存器。采用流水化的逐行掃描方法時(shí),狀態(tài)位與數(shù)據(jù)緩存帶來的寄存器消耗為4 608 bit,“首1”式寫回則需要5 120 bit,增加了11.1%?!笆?”式寫回引入額外的查找“首1”硬件及11%的額外寄存器資源,將一致性寫回操作的耗時(shí)改進(jìn)為只與有效臟行數(shù)量成正比,與Cache容量無關(guān)。跳過無效行、非臟行,可以避免無效掃描,加速了一致性寫回操作,提高了多核DSP數(shù)據(jù)一致性的效率。

        6 結(jié)束語

        本文針對(duì)超長(zhǎng)指令字DSP在訪存實(shí)時(shí)性、順序與固定延遲、高效數(shù)據(jù)一致性方面的需求,設(shè)計(jì)了適用于DSP的標(biāo)量訪存單元。采用可配置Cache/SRAM的方式以較低開銷滿足訪存實(shí)時(shí)性;基于ID的順序機(jī)制確保超長(zhǎng)指令字架構(gòu)對(duì)返回?cái)?shù)據(jù)的順序與固定延遲要求;硬件查找“首1”的方法加速了Cache一致性寫回操作,實(shí)現(xiàn)高效數(shù)據(jù)一致性。在RTL級(jí)實(shí)現(xiàn)后,搭建了驗(yàn)證環(huán)境以驗(yàn)證功能的正確性,分析并證明了基于ID的順序機(jī)制的正確性,同時(shí)在不同有效臟行占比下測(cè)試了優(yōu)化后數(shù)據(jù)一致性的性能提升。

        標(biāo)量訪存單元針對(duì)Uncache數(shù)據(jù)支持連續(xù)的寫,考慮到多核共享數(shù)據(jù)時(shí),數(shù)據(jù)生產(chǎn)者對(duì)共享地址幾乎只進(jìn)行寫,未來的工作可以在Cache管理策略方面展開。通過硬件檢測(cè)DSP核對(duì)某個(gè)地址范圍是否只寫,如果只寫則直接寫到下一級(jí)存儲(chǔ),配合Uncache對(duì)連續(xù)寫的支持以獲得更好的性能,避免了寫分配、寫替換的時(shí)間開銷。

        猜你喜歡
        標(biāo)量寄存器時(shí)鐘
        別樣的“時(shí)鐘”
        古代的時(shí)鐘
        Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
        一種高效的橢圓曲線密碼標(biāo)量乘算法及其實(shí)現(xiàn)
        一種靈活的橢圓曲線密碼并行化方法
        分簇結(jié)構(gòu)向量寄存器分配策略研究*
        有趣的時(shí)鐘
        時(shí)鐘會(huì)開“花”
        單調(diào)Minkowski泛函與Henig真有效性的標(biāo)量化
        標(biāo)量電子能級(jí)束縛態(tài)的計(jì)算
        暖暖免费 高清 日本社区在线观看| 欧美一区二区三区红桃小说| 成人免费无码大片a毛片软件| 青青草原精品99久久精品66| 男女边吃奶边做边爱视频| 久久精品国产91久久性色tv| 国产精品福利视频一区| 国产av天堂成人网| 国内精品视频成人一区二区| 国产喷白浆精品一区二区豆腐 | 国产一区二区视频免费在| 国产成人a∨激情视频厨房| 色一情一乱一乱一区99av| 7777精品久久久大香线蕉| 久久HEZYO色综合| 久久精品伊人久久精品伊人| 久久婷婷综合缴情亚洲狠狠| 亚洲乱码国产乱码精品精| 蜜桃视频一区二区三区在线观看| 色窝窝无码一区二区三区2022| 亚洲精品熟女乱色一区| 人妻中文字幕一区二区视频| 综合亚洲伊人午夜网| 亚洲人成影院在线无码按摩店| 麻麻张开腿让我爽了一夜| 亚洲国产精品500在线观看| 偷柏自拍亚洲综合在线| 国产高清精品一区二区| 国产98色在线 | 国产| 日出水了特别黄的视频| 一区二区视频观看在线| 日韩av在线免费观看不卡| 风韵丰满熟妇啪啪区99杏| 精品少妇人妻av无码专区| 精品88久久久久88久久久| 级毛片无码av| 视频一区视频二区自拍偷拍| 亚洲国产精品久久久久久无码| 天堂…在线最新版资源| 综合五月网| 久久国产精品国产精品久久|