• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      CGRA-PIMSim:基于粗粒度可重構(gòu)陣列的存內(nèi)處理架構(gòu)仿真器

      2021-04-01 08:14:30劉碩
      現(xiàn)代計(jì)算機(jī) 2021年5期
      關(guān)鍵詞:粗粒度仿真器指令

      劉碩

      (上海交通大學(xué)電子信息與電氣工程學(xué)院,上海200240)

      0 引言

      隨著數(shù)據(jù)規(guī)模的不斷擴(kuò)展和對(duì)DRAM需求的進(jìn)一步提升,人們開(kāi)始思考在內(nèi)存中處理大數(shù)據(jù)應(yīng)用的可能性。與傳統(tǒng)基于硬盤(pán)訪問(wèn)的架構(gòu)系統(tǒng)相比,將數(shù)據(jù)存儲(chǔ)在主存中可以實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)的量級(jí)加速。該類(lèi)存內(nèi)計(jì)算在數(shù)據(jù)處理方面的潛力已經(jīng)被包括RAMCloud[1]、GraphLab[2]、Pregel、Oracle TimesTen[3]和SAP HANA[4]在內(nèi)的學(xué)術(shù)和工業(yè)界所證實(shí)。

      粗粒度可重構(gòu)計(jì)算架構(gòu)(Coarse-Grained Reconfigurable Array,CGRA)被證明在高性能系統(tǒng)計(jì)算和低功耗方面有顯著優(yōu)勢(shì)[5-6],已經(jīng)成為近年來(lái)的研究熱點(diǎn)[7-9]。其主要特點(diǎn)是芯片的功能可以在運(yùn)行時(shí)根據(jù)不同的應(yīng)用進(jìn)行配置,結(jié)合了專(zhuān)用集成電路的高能效性和通用可編程處理器的高靈活性。這使得可重構(gòu)處理器非常適合支持在性能和功耗方面具有較高要求的數(shù)據(jù)密集型應(yīng)用,例如多媒體領(lǐng)域[10-12]和密碼學(xué)領(lǐng)域[13]。

      由于可重構(gòu)架構(gòu)和存內(nèi)處理都具有對(duì)數(shù)據(jù)密集型應(yīng)用的友好性,本文將實(shí)現(xiàn)基于粗粒度可重構(gòu)陣列的存內(nèi)計(jì)算架構(gòu)仿真,以探尋該架構(gòu)在處理數(shù)據(jù)密集型應(yīng)用上的性能優(yōu)勢(shì)。為了實(shí)現(xiàn)按需求快速仿真,該仿真器采用面向?qū)ο蟮膶哟位TO(shè)計(jì)和參數(shù)化定義。實(shí)驗(yàn)結(jié)果表明,與傳統(tǒng)CPU架構(gòu)相比,實(shí)現(xiàn)10x以上的加速提升。

      1 設(shè)計(jì)策略

      1.1 架構(gòu)仿真策略

      該仿真器的設(shè)計(jì)采用粗粒度可重構(gòu)硬件體系結(jié)構(gòu)的一般定義,如圖1所示,在具體設(shè)計(jì)實(shí)現(xiàn)過(guò)程中,該體系結(jié)構(gòu)被劃分為三個(gè)抽象層:①處理單元(Processing Element,PE)級(jí)仿真;②處理單元陣列(Processing Element Array,PEA)級(jí)仿真;③CGRA級(jí)仿真。

      圖1 CGRA架構(gòu)

      PE級(jí):在細(xì)粒度架構(gòu)中,邏輯單元通常是查找表和可編程寄存器;在粗粒度架構(gòu)中,PE則是存儲(chǔ)單元(Load/Store Unit,LSU)或是完整的運(yùn)算邏輯單元(Algorithm Logic Unit,ALU),PE間支持并行數(shù)據(jù)處理。

      PEA級(jí):指定PE的數(shù)量和互連方案,PEA的規(guī)模和互連方案都會(huì)對(duì)架構(gòu)性能造成顯著影響。該方案定義PE之間關(guān)聯(lián)方式和數(shù)據(jù)傳輸方式,PE的數(shù)量支持參數(shù)化配置,可以通過(guò)相關(guān)接口進(jìn)行調(diào)整建模。

      CGRA級(jí):CGRA層是最高級(jí)別的抽象層。在該層視角下,PEA可以被認(rèn)為是一個(gè)基本的計(jì)算單元。指令寄存器(Configuration Memory)用以存儲(chǔ)和配置ALU輸入和功能指令。數(shù)據(jù)存儲(chǔ)器(Data Memory)用于存儲(chǔ)臨時(shí)結(jié)果。I/O接口用以CGRA與外界的數(shù)據(jù)傳輸和交換,在本文仿真器中,I/O接口將與DRAM直連,實(shí)現(xiàn)近數(shù)據(jù)處理。

      1.2 架構(gòu)探索流程

      本文采用的架構(gòu)探索流程如圖2所示?;贑GRA設(shè)計(jì)存內(nèi)處理架構(gòu)建模首先要進(jìn)行應(yīng)用分析,確定性能要求;之后選擇架構(gòu)參數(shù),初步參數(shù)選擇是依據(jù)過(guò)往經(jīng)驗(yàn),后續(xù)參數(shù)將依據(jù)具體性能評(píng)估結(jié)果進(jìn)行調(diào)整;進(jìn)行仿真建模,實(shí)現(xiàn)目標(biāo)仿真器,進(jìn)行性能評(píng)估。

      圖2架構(gòu)探索流程圖

      2 CGRA-PIMSim設(shè)計(jì)方法

      2.1 CGRA仿真

      CGRA架構(gòu)仿真時(shí)基于面向?qū)ο蟮膶哟位8拍?,各組件之間有類(lèi)的繼承關(guān)系,如圖3所示。

      圖3 CGRA架構(gòu)內(nèi)繼承關(guān)系

      對(duì)于圖1中的各組件,可以用類(lèi)內(nèi)函數(shù)來(lái)模擬硬件行為。例如PE類(lèi)的函數(shù)包括運(yùn)算(algorithm_func)、選擇器(mux_func)和指令配置(configuration_func)。運(yùn)算函數(shù)將執(zhí)行由配置指令控制的算術(shù)邏輯功能,這里將設(shè)置一系列通用算術(shù)運(yùn)算(add、multiple等)和邏輯運(yùn)算(AND、OR、XOR等),未來(lái)針對(duì)特定領(lǐng)域的應(yīng)用將添加或移除額外的運(yùn)算功能。選擇器函數(shù)根據(jù)配置指令接收目標(biāo)輸入,并將它們輸送到運(yùn)算部分。指令配置函數(shù)接收來(lái)自外部的命令,并將目標(biāo)指令發(fā)送到運(yùn)算和選擇函數(shù)中,作為一個(gè)配置參數(shù)變量。

      PE的硬件架構(gòu)如圖4所示,包含算術(shù)邏輯單元(ALU),兩輸入一輸出I/O接口,選擇器(MUX)和本地寄存器堆。

      圖4處理單元的硬件架構(gòu)

      存內(nèi)處理的概念體現(xiàn)在CGRA整體對(duì)外的I/O接口與DRAM(圖4中的Off-chip Memory)進(jìn)行直連,實(shí)現(xiàn)數(shù)據(jù)近內(nèi)存?zhèn)鬏?,減少數(shù)據(jù)傳輸延時(shí)和相應(yīng)功耗。

      2.2 事件驅(qū)動(dòng)仿真機(jī)制

      為了提高仿真效率和降低仿真模型編寫(xiě)的困難程度,采用事件驅(qū)動(dòng)仿真機(jī)制實(shí)現(xiàn)目標(biāo)架構(gòu)的搭建。

      Gem5提供用于創(chuàng)建事件驅(qū)動(dòng)的包裝器功能(EventFunctionWrapper類(lèi))。目標(biāo)函數(shù)封裝時(shí)使用lambda表達(dá)式,例如:

      使用sch edule()函數(shù)進(jìn)行事件安排,執(zhí)行目標(biāo)函數(shù)processEvent(),使其在某一時(shí)刻觸發(fā):

      本次設(shè)計(jì)基于事件驅(qū)動(dòng)仿真搭建PE的行為模型,PE類(lèi)內(nèi)的運(yùn)算(algorithm_func)函數(shù)、選擇器(mux_func)函數(shù)和指令配置(configuration_func)函數(shù)作為processEvent目標(biāo)函數(shù)被EventFunctionWrapper類(lèi)封裝,根據(jù)具體行為的執(zhí)行順序進(jìn)行階段觸發(fā)。由于PE內(nèi)數(shù)據(jù)傳遞都是非阻塞傳輸且物理距離很短,因此上述事件函數(shù)的觸發(fā)時(shí)間普遍設(shè)置為當(dāng)前時(shí)刻的下一個(gè)周期。

      3 基于Gem5的仿真實(shí)現(xiàn)

      3.1 仿真流程

      Gem5是一款高度模塊化、支持事件驅(qū)動(dòng)方式的全系統(tǒng)仿真器。在Gem5中,所有模塊單元都被抽象設(shè)計(jì)為一個(gè)具體完成功能實(shí)現(xiàn)的C++類(lèi)和一個(gè)對(duì)應(yīng)模塊接口的Python類(lèi)。當(dāng)Python類(lèi)與相關(guān)C++類(lèi)綁定時(shí),傳遞給Python類(lèi)的具體參數(shù)將通過(guò)Gem5的參數(shù)傳遞機(jī)制賦值給C++類(lèi)的相應(yīng)成員變量。C++類(lèi)內(nèi)完成父類(lèi)的繼承重寫(xiě)(虛函數(shù)),構(gòu)造函數(shù)和事件類(lèi)(Event)實(shí)例化等。

      仿真流程如圖5所示。由Scons軟件基于Python完成編譯,將所有模塊文件編譯并鏈接生成可執(zhí)行文件。架構(gòu)實(shí)現(xiàn)過(guò)程中相關(guān)配置參數(shù)的傳遞是通過(guò)Python模型對(duì)C++模型的接口實(shí)現(xiàn)的。具體應(yīng)用時(shí)只需對(duì)Python模型中的參數(shù)進(jìn)行設(shè)置,參數(shù)將會(huì)傳遞至C++模型中,完成對(duì)架構(gòu)整體的搭建和初始化。具體仿真階段,將可執(zhí)行文件加載到系統(tǒng)中開(kāi)始相關(guān)仿真,Gem5提供debug-file功能,打印中間過(guò)程,并取得輸出結(jié)果。

      圖5 Gem5仿真流程

      3.2 CGRA-PIM調(diào)度機(jī)制

      Gem5仿真平臺(tái)有完整的CPU、總線和內(nèi)存等的仿真,本文設(shè)計(jì)實(shí)現(xiàn)的CGRA-PIM架構(gòu)通過(guò)仿真I/O接口直連到DRAM上。為了實(shí)現(xiàn)主處理器對(duì)CGRAPIM的調(diào)起操作,這里將在原有的X86指令集上進(jìn)行擴(kuò)展,利用Gem5中原有的X86預(yù)留空白指令位置實(shí)現(xiàn)目標(biāo)CGRA-PIM指令。優(yōu)勢(shì)在于CGRA-PIM指令可以直接作為已有主處理器指令的一部分進(jìn)行相關(guān)執(zhí)行,不需要對(duì)現(xiàn)有的編譯器和編程模型進(jìn)行修改,降低實(shí)現(xiàn)難度。

      將cpp文件編譯為可執(zhí)行文件,由CPU進(jìn)行文件執(zhí)行,當(dāng)CPU執(zhí)行到CGRA-PIM特定指令時(shí),由CPU負(fù)責(zé)調(diào)起相關(guān)處理單元。其中,CGRA-PIM和CPU是并行工作的,前者進(jìn)行相關(guān)處理時(shí),CPU將繼續(xù)執(zhí)行之后的指令。這種并行處理的優(yōu)勢(shì)在于能夠有效減少PE的空閑時(shí)間,有效提高計(jì)算資源利用率。

      CPU和CGRA-PIM并發(fā)執(zhí)行可能會(huì)帶來(lái)的問(wèn)題是當(dāng)處理的計(jì)算密集型應(yīng)用需要循環(huán)操作時(shí),CPU調(diào)取下一條CGRA-PIM相關(guān)指令的時(shí)間將有可能比CGRA-PIM自身完成上一條相關(guān)指令時(shí)間更短(與CGRA-PIM處理的數(shù)據(jù)規(guī)模有關(guān),這里將根據(jù)實(shí)際運(yùn)行時(shí)間有選擇性地控制可重構(gòu)陣列規(guī)模),即后者在當(dāng)前時(shí)刻有可能無(wú)法立即執(zhí)行該條指令。因此為了避免主處理器運(yùn)行阻塞,也為了避免造成當(dāng)前指令的遺失,將設(shè)計(jì)添加CGRA-PIM工作隊(duì)列來(lái)存放待處理的任務(wù),該工作隊(duì)列采用先進(jìn)先出(FIFO)的行為方式。由CPU調(diào)取CGRA的待處理任務(wù)將會(huì)放入該工作隊(duì)列中,已經(jīng)完成的任務(wù)會(huì)從隊(duì)列中彈出。

      4 評(píng)估

      系統(tǒng)參數(shù)設(shè)置如表1所示,目標(biāo)架構(gòu)CGRA為異構(gòu)粗粒度可重構(gòu)模型。處理單元陣列規(guī)模為8×8,共64個(gè)處理單元組成。其中LSU28個(gè),ALU36個(gè),LSU分布在四條邊上,ALU分布在陣列內(nèi)部。

      表1 系統(tǒng)參數(shù)設(shè)置

      由于CGRA-PIM架構(gòu)主要解決的是大規(guī)模數(shù)據(jù)傳輸造成的性能影響,因此將使用典型的數(shù)據(jù)密集型應(yīng)用——稀疏矩陣向量乘(SpMV)來(lái)評(píng)估該架構(gòu)性能。

      選擇不同規(guī)模矩陣(N×N)作為測(cè)試樣本,將比較CGRA-PIM架構(gòu)和CGRA-DRAM(不考慮近內(nèi)存處理)架構(gòu)以及傳統(tǒng)CPU架構(gòu)(CPU-DRAM)的性能,將根據(jù)傳統(tǒng)CPU架構(gòu)進(jìn)行歸一化。不同規(guī)模矩陣進(jìn)行SpMV應(yīng)用后三者性能結(jié)果對(duì)比如表2所示。

      表2 各架構(gòu)性能加速比

      不同架構(gòu)性能加速比在不同規(guī)模矩陣下呈現(xiàn)結(jié)果有一定差異。隨著矩陣規(guī)模的擴(kuò)大,CGRA-DRAM和CGRA-PIM的加速比都有提高,原因是處理數(shù)據(jù)的時(shí)間占比上升。在矩陣規(guī)模較小時(shí),數(shù)據(jù)讀取和預(yù)處理的時(shí)間占比較高,留給CGRA進(jìn)行處理加速的循環(huán)操作時(shí)間占比較低,故而加速比較低,而隨著矩陣規(guī)模的擴(kuò)大,循環(huán)操作的時(shí)間占比提升,這時(shí)可供CGRA加速的余地更大,因此帶來(lái)了更高的加速比,這也是CGRA-PIM更適合進(jìn)行數(shù)據(jù)密集型應(yīng)用加速處理的原因。

      5 結(jié)語(yǔ)

      本文從實(shí)際應(yīng)用角度出發(fā),針對(duì)數(shù)據(jù)密集型應(yīng)用提出一種新型的存算一體架構(gòu)CGRA-PIM。通過(guò)Sp-MV實(shí)例說(shuō)明該架構(gòu)較傳統(tǒng)架構(gòu)的優(yōu)越性,取得了明顯的性能提升。未來(lái)將考慮在該架構(gòu)的通用性上進(jìn)行擴(kuò)展。

      猜你喜歡
      粗粒度仿真器指令
      聽(tīng)我指令:大催眠術(shù)
      一種端到端的加密流量多分類(lèi)粗粒度融合算法*
      基于卷積神經(jīng)網(wǎng)絡(luò)的粗粒度數(shù)據(jù)分布式算法
      ARINC661顯控指令快速驗(yàn)證方法
      LED照明產(chǎn)品歐盟ErP指令要求解讀
      在線評(píng)論情感分析研究綜述
      基于公共池自適應(yīng)遷移策略的并行遺傳算法
      基于多線程的慣導(dǎo)邏輯仿真器設(shè)計(jì)
      坐標(biāo)系旋轉(zhuǎn)指令數(shù)控編程應(yīng)用
      天文測(cè)量仿真器模擬星圖精度分析
      托克逊县| 喀什市| 泾源县| 扎囊县| 赤峰市| 鄂尔多斯市| 上饶市| 浦北县| 缙云县| 乐业县| 梁平县| 白城市| 长寿区| 拉孜县| 红河县| 子长县| 三穗县| 静宁县| 盐津县| 吉林省| 眉山市| 疏勒县| 永嘉县| 星座| 江门市| 榆社县| 余干县| 邵阳市| 沙坪坝区| 奉贤区| 政和县| 禹城市| 当雄县| 洛南县| 明溪县| 富蕴县| 顺义区| 礼泉县| 新竹县| 兴和县| 眉山市|