陳小帆,楊智杰,彭凌輝,王世英,周 干,李石明,康子揚(yáng),王 耀,石 偉,王 蕾
(國(guó)防科技大學(xué)計(jì)算機(jī)學(xué)院,湖南 長(zhǎng)沙 410073)
隨著摩爾定律不斷發(fā)展,計(jì)算機(jī)的計(jì)算能力與存儲(chǔ)能力呈指數(shù)級(jí)提升,雖然存儲(chǔ)與計(jì)算單元分離的馮·諾依曼體系結(jié)構(gòu)推動(dòng)了計(jì)算機(jī)計(jì)算性能的持續(xù)提升,但存儲(chǔ)單元與計(jì)算單元之間的通信延遲瓶頸[1]依舊存在。在處理器時(shí)鐘頻率和性能不斷上升的同時(shí),存儲(chǔ)器訪問(wèn)速度卻增長(zhǎng)緩慢,因此處理器與存儲(chǔ)器之間的鴻溝越來(lái)越大,即造成“存儲(chǔ)墻”瓶頸。此外,計(jì)算、存儲(chǔ)和I/O的速度越來(lái)越不匹配,基于傳統(tǒng)架構(gòu)的平衡體系結(jié)構(gòu)設(shè)計(jì)面臨較大瓶頸[1]。同時(shí),隨著工藝特征尺寸的縮小以及片上設(shè)計(jì)復(fù)雜度的增加,芯片單位面積的功耗密度急劇上升,已經(jīng)接近當(dāng)前封裝、散熱以及底層技術(shù)所能支持的極限,即傳統(tǒng)處理器也面臨著“功耗墻”瓶頸。因此,亟需新的計(jì)算模式及體系結(jié)構(gòu)來(lái)滿足與日俱增的計(jì)算性能需求。
類(lèi)腦計(jì)算(Neuromorphic Computing)[2]作為人工智能領(lǐng)域的重要分支,其目標(biāo)是實(shí)現(xiàn)類(lèi)腦智能和類(lèi)腦計(jì)算系統(tǒng)[2]。通過(guò)仿真生物神經(jīng)元和突觸的信息處理結(jié)構(gòu)和功能,類(lèi)腦計(jì)算可實(shí)現(xiàn)大規(guī)模神經(jīng)網(wǎng)絡(luò)。類(lèi)腦計(jì)算具有存算一體和高能效的特點(diǎn),能夠很好地解決“存儲(chǔ)墻”和“功耗墻”問(wèn)題。
類(lèi)腦處理器作為新型的仿生架構(gòu),在彌補(bǔ)傳統(tǒng)架構(gòu)不足的基礎(chǔ)上,面向生物神經(jīng)網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)智能算法的高效部署。其中,基于超大規(guī)模集成電路系統(tǒng)來(lái)模擬脈沖神經(jīng)網(wǎng)絡(luò)SNN(Spiking Neural Network)功能的類(lèi)腦處理器受到了學(xué)術(shù)界和工業(yè)界越來(lái)越多的關(guān)注,例如IBM研發(fā)了TrueNorth[3],Intel開(kāi)發(fā)了Loihi[4],蘇黎世聯(lián)邦理工大學(xué)設(shè)計(jì)了DynapSE[5],曼徹斯特大學(xué)推出了SpiNNaker[6],清華大學(xué)研發(fā)了天機(jī)(Tianjic)[7]芯片,浙江大學(xué)提出了達(dá)爾文(Darwin)[8]芯片等類(lèi)腦處理平臺(tái)。此類(lèi)處理器的一大基本特征是“存儲(chǔ)與計(jì)算合二為一”,即其處理單元既可進(jìn)行計(jì)算也可存儲(chǔ)數(shù)據(jù)[2],從根本上避免了馮·諾依曼體系結(jié)構(gòu)的存儲(chǔ)墻問(wèn)題。此外,類(lèi)腦處理器憑借其較低的通信損耗,以及基于異步電路和脈沖數(shù)據(jù)的事件觸發(fā)特性,在某些應(yīng)用場(chǎng)景下其功耗甚至僅為通用處理器的千分之一[2],很好地避免了功耗墻問(wèn)題。為計(jì)算機(jī)技術(shù)發(fā)展提供了新的突破點(diǎn)。
然而隨著脈沖神經(jīng)網(wǎng)絡(luò)的發(fā)展,單核類(lèi)腦處理器因?yàn)榘纳窠?jīng)元數(shù)量不足,已無(wú)法有效地支持規(guī)模漸增的應(yīng)用,因此,正如傳統(tǒng)微處理器的發(fā)展一樣,片上多核互連技術(shù)成為實(shí)現(xiàn)類(lèi)腦處理器的主流方案[9]。片上多核互連需要滿足高并行度、高吞吐率和低延時(shí)的要求,而傳統(tǒng)的總線結(jié)構(gòu)(BUS)由于可擴(kuò)展性差、延時(shí)高和信號(hào)串?dāng)_等問(wèn)題,無(wú)法實(shí)現(xiàn)此類(lèi)架構(gòu)[1]。而片上網(wǎng)絡(luò)技術(shù)憑借其多進(jìn)程和多任務(wù)的信息交換、易于擴(kuò)展的結(jié)構(gòu)化設(shè)計(jì)和在多時(shí)鐘域下面積和功耗優(yōu)勢(shì),逐步成為類(lèi)腦處理器中主流的互連結(jié)構(gòu)[2]。
脈沖神經(jīng)網(wǎng)絡(luò)中海量的脈沖數(shù)據(jù),高并發(fā)和高猝發(fā)的通信模式,以及較大的片上互連規(guī)模,都給面向類(lèi)腦計(jì)算的片上網(wǎng)絡(luò)NoC(Network on Chip)設(shè)計(jì)帶來(lái)了挑戰(zhàn)。目前針對(duì)這類(lèi)片上網(wǎng)絡(luò)的驗(yàn)證工作相對(duì)較少,本文主要從功能驗(yàn)證的角度提出了一個(gè)支持隨機(jī)化激勵(lì)生成的類(lèi)腦處理器片上網(wǎng)絡(luò)驗(yàn)證框架,用以輔助面向類(lèi)腦計(jì)算的片上網(wǎng)絡(luò)設(shè)計(jì)和性能測(cè)試。
本文的主要貢獻(xiàn)包括2個(gè)方面:
(1)提出了一種針對(duì)類(lèi)腦計(jì)算的隨機(jī)化片上網(wǎng)絡(luò)激勵(lì)生成方法。通過(guò)設(shè)置網(wǎng)絡(luò)規(guī)模、存儲(chǔ)空間和通信模式等相關(guān)參數(shù),可以獲得類(lèi)腦處理器片上網(wǎng)絡(luò)行為級(jí)仿真和實(shí)際硬件測(cè)試所需的激勵(lì)文件。
(2)構(gòu)建了一種測(cè)試類(lèi)腦處理器片上網(wǎng)絡(luò)的軟硬件環(huán)境,通過(guò)在片上網(wǎng)絡(luò)的每一個(gè)處理單元上掛載發(fā)包模塊Injector和收包模塊Collector,以及設(shè)置相應(yīng)的總線轉(zhuǎn)接模塊,借助結(jié)果比對(duì)的腳本工具,可以實(shí)現(xiàn)2D-mesh結(jié)構(gòu)的片上網(wǎng)絡(luò)功能驗(yàn)證。
隨著多核芯片復(fù)雜度的增加,總線結(jié)構(gòu)的通信方式也逐步在面積、速度、功耗和數(shù)據(jù)吞吐量等諸多方面面臨瓶頸[1]。
目前主流的互連結(jié)構(gòu)包括總線結(jié)構(gòu)(Bus)、交叉開(kāi)關(guān)結(jié)構(gòu)(Crossbar)和片上網(wǎng)絡(luò)結(jié)構(gòu)NoC。總線結(jié)構(gòu)適用于節(jié)點(diǎn)數(shù)量較少的系統(tǒng),當(dāng)通信節(jié)點(diǎn)較多時(shí)易產(chǎn)生擁塞,成為系統(tǒng)瓶頸。Crossbar結(jié)構(gòu)可以實(shí)現(xiàn)所有節(jié)點(diǎn)之間的互連,吞吐率極高,但設(shè)計(jì)難度較大,復(fù)雜難度均為O(N2)[1],此處N表示N輸入和N輸出的Crossbar網(wǎng)絡(luò)。因此,Crossbar結(jié)構(gòu)的擴(kuò)展性較差,而且隨著互連規(guī)模的擴(kuò)大,系統(tǒng)的仲裁難度也大幅上升。相比帶寬需求偏低的核間通信,數(shù)據(jù)交換更頻繁的核內(nèi)神經(jīng)元互連則多采用Crossbar結(jié)構(gòu)。為了實(shí)現(xiàn)更好的可擴(kuò)展性,目前研究人員普遍采用片上網(wǎng)絡(luò)作為神經(jīng)形態(tài)核之間的互連結(jié)構(gòu)。
一種典型的3×3 2D-mesh結(jié)構(gòu)的NoC如圖1所示[10]。其中,NoC由處理單元PE(Processing Element)、路由器R(Router)和鏈路(Link)3個(gè)主要部件構(gòu)成。PE也稱(chēng)為計(jì)算結(jié)點(diǎn),可以完成廣義的計(jì)算任務(wù)。NoC工作時(shí)首先通過(guò)鏈路將源PE中的數(shù)據(jù)傳輸?shù)铰酚善髂K中,隨后通過(guò)路由算法在網(wǎng)絡(luò)中路由并輔以仲裁算法,使得數(shù)據(jù)包最終到達(dá)目的節(jié)點(diǎn)并由目的PE接收。
Figure 1 NoC architecture of 3×3 2D-mesh 圖1 3×3 2D-mesh NoC架構(gòu)
類(lèi)腦計(jì)算模型以脈沖神經(jīng)網(wǎng)絡(luò)SNN為代表。類(lèi)腦計(jì)算模型運(yùn)行時(shí)在每一個(gè)時(shí)間步內(nèi)都會(huì)產(chǎn)生大量的脈沖數(shù)據(jù),這些脈沖數(shù)據(jù)在網(wǎng)絡(luò)模型中有著高并發(fā)和高猝發(fā)的特性[11],實(shí)現(xiàn)節(jié)點(diǎn)間高效的數(shù)據(jù)傳輸是一個(gè)嚴(yán)峻的問(wèn)題?,F(xiàn)在常用的數(shù)據(jù)傳輸方式有單播、組播和廣播等[11]。對(duì)于大規(guī)模脈沖神經(jīng)網(wǎng)絡(luò)而言,類(lèi)腦處理器需要實(shí)現(xiàn)大量處理結(jié)點(diǎn)之間的互連互通,其規(guī)模遠(yuǎn)超當(dāng)前傳統(tǒng)處理器的互連規(guī)模。例如,Intel的Loihi[4]芯片包含128個(gè)神經(jīng)核,最多支持4 096核互連;IBM的TrueNorth[3]芯片支持4 096個(gè)神經(jīng)核。在內(nèi)部的互連規(guī)模方面,多核類(lèi)腦處理器已超過(guò)傳統(tǒng)多核通用處理器,所以針對(duì)類(lèi)腦應(yīng)用的NoC不僅需要適應(yīng)高并發(fā)、高猝發(fā)的類(lèi)腦通信模式,而且還需繼續(xù)提升互連規(guī)模,以實(shí)現(xiàn)良好的可擴(kuò)展性。
類(lèi)腦處理器通常是由大量NoC互連的神經(jīng)形態(tài)核(即計(jì)算單元)組成的大規(guī)模并行系統(tǒng),其中NoC用以控制和優(yōu)化處理單元之間的通信。類(lèi)腦處理器的通信可分為核內(nèi)本地通信和核間全局通信。
主流類(lèi)腦處理器的NoC結(jié)構(gòu)各異,如TrueNorth[3]和DynapSE[5]采用的是2D-mesh結(jié)構(gòu),Loihi[11]采用的是C-mesh結(jié)構(gòu),SpiNNaker[6]采用的是torus結(jié)構(gòu),CxQuad[12]平臺(tái)則是基于NoC-tree結(jié)構(gòu)的。目前,類(lèi)腦處理平臺(tái)大多采用了mesh結(jié)構(gòu)的NoC設(shè)計(jì)來(lái)實(shí)現(xiàn)多核互連,而且每一個(gè)神經(jīng)形態(tài)核都可同時(shí)支持多個(gè)神經(jīng)元的計(jì)算。
在確定一個(gè)NoC的通信模式和基礎(chǔ)架構(gòu)后,需要結(jié)合應(yīng)用建立系統(tǒng)參數(shù)和變量來(lái)對(duì)NoC系統(tǒng)進(jìn)行功能和性能評(píng)估。但是,目前和NoC驗(yàn)證相關(guān)的系統(tǒng)較少。針對(duì)網(wǎng)絡(luò)設(shè)計(jì)初期已有一些功耗評(píng)估和分析的工作[13 -16],此外,也有基于模擬器的片上網(wǎng)絡(luò)的系統(tǒng)開(kāi)發(fā)[17 -19]。Madsen等[20]提出了基于多處理器實(shí)時(shí)操作系統(tǒng)的NoC系統(tǒng)行為分析;Pande等[21]提出了基于不同體系結(jié)構(gòu)的延遲、吞吐率和功耗的評(píng)估模型[21];Genko等[22]的研究是基于現(xiàn)場(chǎng)可編程門(mén)陣列FPGA(Field Programmable Gate Array)實(shí)現(xiàn)的NoC仿真環(huán)境。
然而,上述工作均是基于傳統(tǒng)微處理器來(lái)開(kāi)展的。對(duì)于上述類(lèi)腦計(jì)算中的通信模式和NoC規(guī)模需求較大的類(lèi)腦應(yīng)用,相關(guān)功能驗(yàn)證的研究較少。文獻(xiàn)[23]基于FPGA構(gòu)建了硬件環(huán)境,基于Micro Blaze軟核構(gòu)建了軟件環(huán)境,通過(guò)分別設(shè)置軟硬環(huán)境的配置文件來(lái)實(shí)現(xiàn)NoC的快速硬件仿真。但是,此工作沒(méi)有對(duì)不同激勵(lì)的測(cè)試進(jìn)行探討,而且軟硬交互部分較為復(fù)雜,無(wú)法將行為級(jí)仿真和硬件級(jí)測(cè)試的結(jié)果進(jìn)行分離分析。
對(duì)此,本文提出支持隨機(jī)化測(cè)試的驗(yàn)證框架,主要針對(duì)2D-mesh NoC的類(lèi)腦應(yīng)用,實(shí)現(xiàn)較為全面的測(cè)試激勵(lì)覆蓋,支持不同程度的負(fù)載壓力測(cè)試,為NoC設(shè)計(jì)提供行為級(jí)和硬件級(jí)的初步評(píng)估。
本節(jié)主要從軟件測(cè)試環(huán)境和硬件測(cè)試環(huán)境2個(gè)方面來(lái)介紹本文的面向類(lèi)腦處理器的NoC功能驗(yàn)證框架。
如圖2所示,本文將NoC功能驗(yàn)證分為2個(gè)步驟:軟件測(cè)試和硬件測(cè)試。其中,軟件測(cè)試是基于仿真環(huán)境對(duì)待測(cè)設(shè)計(jì)DUT(Design Under Test)的測(cè)試:通過(guò)生成并輸入行為級(jí)測(cè)試激勵(lì),收集和分析DUT產(chǎn)生的相應(yīng)計(jì)算結(jié)果,結(jié)合預(yù)期結(jié)果來(lái)進(jìn)行功能驗(yàn)證;若DUT行為級(jí)功能符合預(yù)期,就繼續(xù)進(jìn)行相應(yīng)的硬件測(cè)試。在硬件測(cè)試中,首先將NoC設(shè)計(jì)部署到FPGA驗(yàn)證平臺(tái)上,進(jìn)而基于測(cè)試母板和外設(shè)高速互連PCIe(Peripheral Component Interconnect express)子卡來(lái)對(duì)FPGA驗(yàn)證平臺(tái)進(jìn)行數(shù)據(jù)包讀寫(xiě);隨后將母板獲取到的數(shù)據(jù)包通過(guò)串口工具輸出到日志文件;最后,結(jié)合預(yù)期結(jié)果,基于FPGA進(jìn)行上板功能驗(yàn)證。若從該日志文件中解析出的數(shù)據(jù)同行為級(jí)仿真中獲得的數(shù)據(jù)一致,那么說(shuō)明DUT上板后的功能同樣符合預(yù)期。至此,DUT的功能驗(yàn)證就完成了。否則需要在DUT中定位問(wèn)題并進(jìn)行設(shè)計(jì)迭代。
Figure 2 Framework of proposed NoC verification 圖2 本文提出的NoC驗(yàn)證框架
整個(gè)NoC驗(yàn)證平臺(tái)的軟件環(huán)境主要用于生成測(cè)試激勵(lì)(Incentive Files)和預(yù)期結(jié)果(Golden Results),并且在DUT即規(guī)模為N×N的NoC設(shè)計(jì)[16]中內(nèi)嵌發(fā)包模塊(Injector)和收包模塊(Collector)。Injector和Collector主要用于模擬PE單元數(shù)據(jù)的發(fā)送與接收,數(shù)據(jù)均存儲(chǔ)在收發(fā)包模塊所掛載的塊隨機(jī)存儲(chǔ)器BRAM(Block RAM)中,如圖3的PE所示。
Figure 3 Structure of single NoC node圖3 NoC單節(jié)點(diǎn)結(jié)構(gòu)
Figure 4 Software testing environment of NoC verification framework圖4 NoC驗(yàn)證框架軟件測(cè)試環(huán)境
此外,為了實(shí)現(xiàn)測(cè)試母板與FPGA驗(yàn)證平臺(tái)之間的通信,本文在N×N的NoC設(shè)計(jì)外部加入了AXI Interconnector模塊和AXI-PCIe Bridge模塊,如圖4a部分所示。
圖4b部分是行為級(jí)仿真環(huán)境下激勵(lì)輸入部分,通過(guò)調(diào)用AxiWrite和AxiRead 2個(gè)任務(wù),可從激勵(lì)文件中讀取所需的地址和數(shù)據(jù)包信息。前者負(fù)責(zé)將數(shù)據(jù)包保存在各個(gè)PE結(jié)點(diǎn)的Injector模塊中,后者在整個(gè)NoC完成運(yùn)算后從各PE結(jié)點(diǎn)的Collector模塊中讀取數(shù)據(jù)。圖4c部分是基于Python來(lái)構(gòu)建的激勵(lì)生成與仿真/上板測(cè)試結(jié)果校驗(yàn)的測(cè)試環(huán)境:基于Golden Results、行為級(jí)仿真結(jié)果和FPGA硬件平臺(tái)測(cè)試結(jié)果,本文可以結(jié)合2.3節(jié)所述的測(cè)試方法來(lái)驗(yàn)證該NoC設(shè)計(jì)是否符合預(yù)期要求。圖4d部分則是通過(guò)UBOOT引導(dǎo)程序和串口調(diào)試工具,獲取FPGA驗(yàn)證平臺(tái)上的測(cè)試數(shù)據(jù),以供圖4c部分進(jìn)行功能校驗(yàn)。
硬件測(cè)試環(huán)境是由FPGA驗(yàn)證系統(tǒng)、測(cè)試母板、調(diào)試上位機(jī)、XILINX USB下載器、異步收發(fā)傳輸器UART(Universal Asynchronous Receiver/Transmitter)數(shù)據(jù)線和PCIe子卡構(gòu)成,如圖5所示。一方面,調(diào)試上位機(jī)通過(guò)UART數(shù)據(jù)線對(duì)FPGA平臺(tái)的全局時(shí)鐘進(jìn)行配置,并且將圖4a部分所示的FPGA Project下載到FPGA驗(yàn)證平臺(tái)上。同時(shí),通過(guò)XILINX USB可以獲取FPGA驗(yàn)證平臺(tái)的某些關(guān)鍵信號(hào),用以DUT調(diào)試。另一方面,通過(guò)Tera Term串口調(diào)試工具,調(diào)試上位機(jī)將UBOOT下的讀寫(xiě)指令輸入到測(cè)試母板上,測(cè)試母板進(jìn)而通過(guò)PCIe總線將報(bào)文發(fā)送到FPGA驗(yàn)證系統(tǒng),從中獲取NoC PE單元中Collector模塊所存儲(chǔ)的數(shù)據(jù),并通過(guò)串口工具將其保存到上位機(jī)中。
Figure 5 Hardware testing environment圖5 硬件測(cè)試環(huán)境
NoC單節(jié)點(diǎn)的主要結(jié)構(gòu)[24]如圖3所示。根據(jù)2D-mesh結(jié)構(gòu)NoC節(jié)點(diǎn)可分為內(nèi)部節(jié)點(diǎn)和邊緣節(jié)點(diǎn)。該NoC的通信負(fù)載模式主要分為以下4種(源節(jié)點(diǎn)-目的節(jié)點(diǎn)):邊緣-內(nèi)部(e-i)、內(nèi)部-邊緣(i-e)、邊緣-邊緣(e-e)和內(nèi)部-內(nèi)部(i-i)。激勵(lì)文件中對(duì)應(yīng)的數(shù)據(jù)格式如圖6所示,其中圖6a和圖6c表示行為級(jí)仿真中Testbench內(nèi)AxiWrite任務(wù)的2個(gè)輸入變量,該任務(wù)可將相應(yīng)的數(shù)據(jù)存入到對(duì)應(yīng)源節(jié)點(diǎn)的Injector BRAM中;圖6b表示AxiRead任務(wù)中的輸入?yún)?shù),對(duì)應(yīng)目的節(jié)點(diǎn)中Collector BRAM所需讀出的數(shù)據(jù)地址,該任務(wù)可將Collector BRAM對(duì)應(yīng)保存的數(shù)據(jù)讀出到本地存儲(chǔ)器。此外,Src和Des分別表示源和目的節(jié)點(diǎn),Inj和Col分別表示Injector模塊和Collector模塊。根據(jù)這些數(shù)據(jù)格式的設(shè)置,本文可以針對(duì)這4種通信模式生成隨機(jī)化激勵(lì)。
此外,基于SNN硬件映射工具SNEAP(Spiking NEural network mAPping toolchain)[25],本文實(shí)現(xiàn)了SNN模型各神經(jīng)元到NoC節(jié)點(diǎn)的映射,可獲得SNN模型的NoC通信數(shù)據(jù),進(jìn)而獲得基于真實(shí)應(yīng)用場(chǎng)景下的NoC軟件仿真和硬件測(cè)試所需的激勵(lì)文件。
Figure 6 Format of incentive data圖6 激勵(lì)數(shù)據(jù)格式
如圖7所示,生成測(cè)試激勵(lì)前,需要輸入相應(yīng)的配置參數(shù):片上網(wǎng)絡(luò)規(guī)模(NoC_size)、脈沖神經(jīng)網(wǎng)絡(luò)的核間通信數(shù)據(jù)(SNN_trace)或者用于隨機(jī)生成激勵(lì)的通信模式(NoC_pattern,上述4種)、需生成的數(shù)據(jù)包數(shù)量(Packet_num)和單個(gè)Injector或Collector BRAM的深度(Mem_config)。激勵(lì)生成方法會(huì)按照配置文件信息隨機(jī)生成收發(fā)節(jié)點(diǎn)信息,或從基于Brian2模擬器[26]和SNEAP映射工具中獲得的SNN_trace中選取數(shù)據(jù)包收發(fā)的節(jié)點(diǎn)信息,與此同時(shí)也會(huì)隨機(jī)生成數(shù)據(jù)包中的NoCPE結(jié)點(diǎn)數(shù)據(jù)(PE_data),分別如圖7中的Connection_random_list和Data_random_list所示。本文在隨機(jī)生成PE_data的過(guò)程中保證了其各異性,使得一個(gè)數(shù)據(jù)包在PE_data字段被唯一標(biāo)識(shí),進(jìn)而有利于隨后的數(shù)據(jù)比對(duì)。最后按照數(shù)據(jù)包收發(fā)關(guān)系來(lái)生成Address參數(shù)。在生成數(shù)據(jù)包的過(guò)程中滿足片上的存儲(chǔ)邊界條件,即單個(gè)Injector/Collector SRAM存儲(chǔ)數(shù)據(jù)包不超過(guò)硬件所支持的最大數(shù)量,否則需重新生成測(cè)試數(shù)據(jù)。其中,Src和Des分別表示當(dāng)前生成的連接中Injector和Collector的編號(hào)。
Figure 7 Generation method of incentive data 圖7 激勵(lì)數(shù)據(jù)的生成方法
至此,便生成了NoC行為級(jí)激勵(lì):AxiWrite/AxiRead Files。結(jié)合UBOOT指令格式,可進(jìn)一步生成NoC硬件級(jí)測(cè)試所需的激勵(lì):Uboot Write/Read Files。
Figure 8 Verification process of incentive data 圖8 激勵(lì)數(shù)據(jù)驗(yàn)證流程
對(duì)于NoC核間通信而言,由于擁塞和路由路徑的長(zhǎng)短各異,目的節(jié)點(diǎn)收包順序和源節(jié)點(diǎn)發(fā)包順序有可能不一致。但是,由于SNN所處理的內(nèi)容是脈沖數(shù)據(jù),而脈沖之間是同質(zhì)的,即每個(gè)數(shù)據(jù)包到達(dá)目的神經(jīng)元后都會(huì)引起同樣的膜電壓升高。脈沖神經(jīng)元在單個(gè)時(shí)間步長(zhǎng)內(nèi)通過(guò)積累外界脈沖來(lái)觸發(fā)新脈沖的發(fā)射,因此在一個(gè)時(shí)間步(1 ms)[3]內(nèi)無(wú)損地完成相應(yīng)數(shù)據(jù)包的傳輸就不會(huì)導(dǎo)致SNN模型產(chǎn)生計(jì)算誤差。在獲取該行為級(jí)仿真結(jié)果后需要對(duì)各Collector模塊預(yù)期讀出的數(shù)據(jù)進(jìn)行順/逆序的重排序操作,再同如圖7所示的預(yù)期收包結(jié)果(Collector_golden_files)進(jìn)行比對(duì)。此過(guò)程只對(duì)NoC進(jìn)行了部分行為建模,即確保數(shù)據(jù)包按照如圖6所示的數(shù)據(jù)格式進(jìn)行收發(fā)。鑒于前文所述的SNN神經(jīng)元高容錯(cuò)以及脈沖編碼的計(jì)算特性[2],一個(gè)時(shí)間步內(nèi)保證數(shù)據(jù)包均被傳輸?shù)侥康墓?jié)點(diǎn)即可。
具體的驗(yàn)證流程如圖8所示:行為級(jí)仿真結(jié)束后,將NoC行為級(jí)仿真中每一個(gè)Collector模塊的數(shù)據(jù)包打印輸出到各自的上日志(log)文件中,將這些日志文件統(tǒng)一記作仿真結(jié)果(Collector sim logs)。隨后,將仿真結(jié)果中的數(shù)據(jù)包同樣按照其PE_data段進(jìn)行降序/升序重排列后,同上述的預(yù)期結(jié)果進(jìn)行一一比對(duì)(如圖8中的diff操作所示)。在逐Collector單元對(duì)所接收的數(shù)據(jù)包進(jìn)行文本比對(duì)后,若各節(jié)點(diǎn)收包結(jié)果均符合預(yù)期,即可證明NoC行為級(jí)功能正確;在行為級(jí)功能正確的基礎(chǔ)上,繼續(xù)進(jìn)行硬件測(cè)試,將圖7所生成的 Uboot write files輸入到部署了NoC的FPGA上,通過(guò) Uboot read files獲得UBOOT環(huán)境下的硬件測(cè)試結(jié)果(Tera_term log),將其與仿真環(huán)境下通過(guò)AxiWrite files和AxiRead files獲得的仿真結(jié)果(Sim log)進(jìn)行數(shù)據(jù)進(jìn)制和格式轉(zhuǎn)換(圖8中convert操作)后獲得比對(duì)結(jié)果(Uboot_result)。若硬件測(cè)試結(jié)果和行為級(jí)仿真結(jié)果保持一致,即可證明NoC上板后的功能符合預(yù)期要求。在如圖8所示的NoC單次測(cè)試結(jié)果的驗(yàn)證中,由于Collector模塊中的文件讀寫(xiě)邏輯無(wú)法被部署到板上,所以我們?cè)谏习搴髮?duì)所有節(jié)點(diǎn)進(jìn)行了遍歷,讀出數(shù)據(jù)包(Tera_term log)后進(jìn)行比對(duì),只需進(jìn)行一次diff處理。
本文實(shí)驗(yàn)的測(cè)試對(duì)象是基于2D-mesh結(jié)構(gòu)的16×16 NoC設(shè)計(jì),其內(nèi)部節(jié)點(diǎn)的架構(gòu)如圖3所示。該NoC采用了XY路由算法和輪詢(xún)仲裁算法來(lái)實(shí)現(xiàn)數(shù)據(jù)包的傳輸。本節(jié)將詳細(xì)介紹激勵(lì)數(shù)據(jù)的生成,以及NoC相應(yīng)的功能驗(yàn)證。
本文采用一種主流的SNN模型——單液體層的液體狀態(tài)機(jī)LSM(Liquid State Machine)模型[27]。LSM模型由于其較強(qiáng)的時(shí)空信息處理能力、簡(jiǎn)單的架構(gòu)和較低的訓(xùn)練復(fù)雜度而受到了廣泛的關(guān)注。LSM主要分為3部分[27]:輸入層(Input Layer)、水庫(kù)層(Reservoir)和讀出層(Readout Layer)。水庫(kù)層中包含興奮型和抑制型2類(lèi)神經(jīng)元,這2類(lèi)神經(jīng)元之間存在一定的連接概率,脈沖信號(hào)經(jīng)由該層的映射即可得到相應(yīng)的輸出向量,通過(guò)輸出向量對(duì)讀出層后的分類(lèi)器模型進(jìn)行訓(xùn)練,即完成對(duì)輸入脈沖序列的特征學(xué)習(xí)。
實(shí)驗(yàn)所采取的LSM模型配置如下:液體層神經(jīng)元總數(shù)為1 000,其中,激活型神經(jīng)元個(gè)數(shù)為800,抑制型神經(jīng)元個(gè)數(shù)為200,神經(jīng)元連接概率分別為Pee=0.40,Pei=0.40,Pie=0.50(為激活-激活、激活-抑制和抑制-激活連接類(lèi)型)。本文從4種SNN脈沖數(shù)據(jù)集中分別選取一個(gè)樣本,送入LSM模型中運(yùn)行得到每一個(gè)樣本在液體層中所激活的脈沖數(shù)據(jù),這些脈沖數(shù)據(jù)由Brian2模擬器[26]監(jiān)控并保存為日志文件,該文件中包含了每一個(gè)脈沖被激發(fā)的時(shí)刻、源神經(jīng)元編號(hào)和目的神經(jīng)元編號(hào)。雖然多層液體狀態(tài)機(jī)可以提取更加豐富的特征信息,但在本質(zhì)上屬于一個(gè)較大的單層液體狀態(tài)機(jī)。此外,由于LSM是一種高度可配置的脈沖神經(jīng)網(wǎng)絡(luò),可擴(kuò)展性較好,所以此處只采取了一種LSM網(wǎng)絡(luò)常用配置,把重點(diǎn)放在了不同通信模式帶來(lái)的測(cè)試挑戰(zhàn)上。
Figure 9 Packet number distribution within 400 timesteps圖9 400個(gè)時(shí)間步內(nèi)數(shù)據(jù)包數(shù)量分布情況
通過(guò)采用SNEAP映射算法,首先將1 000個(gè)神經(jīng)元映射到規(guī)模為16×16 NoC即256個(gè)PE結(jié)點(diǎn)上;隨后結(jié)合映射關(guān)系,將上述日志文件中屬于核間通信的部分提取出來(lái)。單個(gè)數(shù)據(jù)樣本的時(shí)間長(zhǎng)度為0.8 s,而NoC需要滿足的是一個(gè)時(shí)間步長(zhǎng)度即1 ms內(nèi)的核間數(shù)據(jù)通信需求,但為了增大通信負(fù)載,本文從每一個(gè)樣本中截取了0.4 s即400個(gè)時(shí)間步的數(shù)據(jù)來(lái)進(jìn)行一次NoC的測(cè)試。由于實(shí)驗(yàn)中所采取的FPGA資源限制,16×16是該FPGA平臺(tái)支持的最大NoC規(guī)模。
首先,本文基于隨機(jī)分布分別產(chǎn)生了4類(lèi)不同負(fù)載類(lèi)型的激勵(lì)數(shù)據(jù),隨后基于LSM模型來(lái)對(duì)語(yǔ)音數(shù)字?jǐn)?shù)據(jù)集FSDD(Free Spoken Digit Dataset)[28]、動(dòng)態(tài)手勢(shì)數(shù)據(jù)集IBM Gesture Dataset(IBM)[29]、手寫(xiě)數(shù)字?jǐn)?shù)據(jù)集NMI(N-MNIST Dataset)[30]和語(yǔ)音數(shù)字?jǐn)?shù)據(jù)集NTI(N-TIGITS Dataset)[31]進(jìn)行分類(lèi),獲得了Brian2模擬LSM實(shí)際運(yùn)行單樣本時(shí)的模型通信數(shù)據(jù)(SNN Traces)。為了保證數(shù)據(jù)包數(shù)量的合理性,本文先對(duì)上述4類(lèi)數(shù)據(jù)集中單樣本所分別生成的脈沖數(shù)據(jù)包數(shù)量進(jìn)行了分析,結(jié)果如圖9所示。其中,Timestep表示LSM模擬的時(shí)間步長(zhǎng),代表運(yùn)行時(shí)間;Packet_number則是該LSM模型被映射到NoC上后,在每一個(gè)時(shí)間步對(duì)應(yīng)產(chǎn)生的NoC節(jié)點(diǎn)間脈沖數(shù)據(jù)包數(shù)量。數(shù)據(jù)集FSDD在400個(gè)時(shí)間步長(zhǎng)內(nèi)產(chǎn)生的核間通信數(shù)據(jù)較為分散,其他數(shù)據(jù)集數(shù)據(jù)對(duì)應(yīng)LSM激發(fā)的核間數(shù)據(jù)包較為集中,且集中在較早的時(shí)間步段內(nèi)。經(jīng)統(tǒng)計(jì)發(fā)現(xiàn),F(xiàn)SDD,NMI、NTI和IBM數(shù)據(jù)集在單個(gè)時(shí)間步長(zhǎng)內(nèi)數(shù)據(jù)包最多分別為72,4 824,9 134和5 509個(gè),這是由于不同的數(shù)據(jù)來(lái)源和類(lèi)型會(huì)具有不同時(shí)空狀態(tài)特征。
本文使得如圖6c所示的PE_data各異,這樣便能保證激勵(lì)文件中Data參數(shù)的各異性。在滿足不超過(guò)Injector和Collector BRAM的深度限制,即保證單個(gè)Injector和Collector的數(shù)據(jù)包數(shù)量不超過(guò)256的前提下,對(duì)于四種隨機(jī)激勵(lì),根據(jù)如圖9所示結(jié)果,本文設(shè)置數(shù)據(jù)包總數(shù)量為5 000;相應(yīng)地,基于上述數(shù)據(jù)集來(lái)生成的激勵(lì),對(duì)于每一個(gè)樣本,分別選取數(shù)據(jù)包數(shù)量為5 000,8 000和10 000來(lái)表示不同樣本帶來(lái)的通信差異性,共計(jì)生成16組測(cè)試激勵(lì)如表1所示。
Table 1 Incentives generation setting表1 激勵(lì)生成配置
本文一共設(shè)置了4組隨機(jī)生成的激勵(lì)和12組基于SNN Traces生成的激勵(lì)。通過(guò)腳本比對(duì)行為級(jí)仿真結(jié)果和預(yù)期的Golden Results,可知每個(gè)PE的Collector模塊在收包數(shù)量和報(bào)文內(nèi)容上均保持一致。其中,對(duì)非空的Collector日志文件進(jìn)行內(nèi)容比對(duì),內(nèi)容不一致的數(shù)據(jù)包總數(shù)量結(jié)果如表2中“Num of Errors”一欄所示。表2中的Avg_delay是指在一次行為級(jí)仿真過(guò)程中,自NoC開(kāi)始進(jìn)行工作直到最后一個(gè)數(shù)據(jù)包傳輸完畢所需耗費(fèi)的時(shí)間。本文通過(guò)在Collector模塊進(jìn)行數(shù)據(jù)包寫(xiě)入操作時(shí)拼接了時(shí)間信息;Num of Errors指的是行為級(jí)仿真中Collector保存結(jié)果同預(yù)期結(jié)果之間存在差異的節(jié)點(diǎn)個(gè)數(shù)。結(jié)果表明,所有測(cè)試項(xiàng)中平均延時(shí)都在1 ms內(nèi),即滿足了NoC實(shí)時(shí)性要求;而且對(duì)于每個(gè)Collector而言,Num of Errors均為零,即實(shí)際仿真結(jié)果與預(yù)期結(jié)果都保持了一致。
Table 2 Results of behavioral simulation表2 行為級(jí)功能驗(yàn)證結(jié)果
硬件上板的功能驗(yàn)證操作如下:首先從Tera Term串口終端日志信息解析各Collector模塊日志信息;隨后基于Python內(nèi)建庫(kù)difflib,將日志信息與仿真環(huán)境下所得的日志文件即圖8中的Sim log進(jìn)行比對(duì),生成.html文件來(lái)保存比對(duì)結(jié)果,統(tǒng)計(jì)出2部分信息中是否有元素的增添(Added)、更替(Changed)或刪減(Deleted)。結(jié)果如表3所示,可知16組數(shù)據(jù)的比對(duì)結(jié)果均達(dá)到了預(yù)期,即Added、Changed、Deleted數(shù)量全為0。說(shuō)明NoC設(shè)計(jì)在上板后實(shí)際收發(fā)結(jié)果與軟件模擬的結(jié)果完全一致,初步驗(yàn)證NoC功能符合預(yù)期。
本文提出了一種支持隨機(jī)化測(cè)試的類(lèi)腦處理器片上網(wǎng)絡(luò)功能驗(yàn)證框架。通過(guò)在待測(cè)NoC的PE單元掛載Injector和Collector測(cè)試模塊來(lái)完成基本的數(shù)據(jù)讀寫(xiě)操作。結(jié)合預(yù)期結(jié)果來(lái)對(duì)規(guī)模為N×N的NoC的仿真結(jié)果數(shù)據(jù)進(jìn)行離線分析,進(jìn)而檢測(cè)NoC在硬件設(shè)計(jì)上存在的問(wèn)題?;贔PGA驗(yàn)證平臺(tái),本文通過(guò)串口工具實(shí)時(shí)讀取Collector BRAM的值并利用比對(duì)工具驗(yàn)證了NoC實(shí)際硬件行為。
Table 3 Results of FPGA testing表3 FPGA上板功能驗(yàn)證結(jié)果
16組對(duì)于16×16 NoC的測(cè)試實(shí)驗(yàn)結(jié)果表明該驗(yàn)證框架可以適應(yīng)多種不同通信模式和負(fù)載應(yīng)用?,F(xiàn)階段針對(duì)類(lèi)腦處理器的NoC測(cè)試平臺(tái)較少,本文在這一方向上進(jìn)行了有益的嘗試。為了擴(kuò)展該測(cè)試平臺(tái)功能,在下一階段將繼續(xù)探索其他結(jié)構(gòu)(如環(huán)網(wǎng)結(jié)構(gòu))的設(shè)計(jì)驗(yàn)證;通過(guò)加入針對(duì)不同測(cè)試需求的內(nèi)嵌模塊,并提供對(duì)NoC實(shí)時(shí)通信性能和均衡性的分析,使得測(cè)試多樣化和細(xì)粒度化。