張文娟,張 喆
(東北師范大學物理學院,國家級實驗教學示范中心,吉林 長春 130024)
脈沖神經(jīng)元的Nios Ⅱ多核實現(xiàn)方法研究
張文娟,張 喆
(東北師范大學物理學院,國家級實驗教學示范中心,吉林 長春 130024)
選定Izhikevich脈沖神經(jīng)元模型作為計算單元,討論了4種Nios Ⅱ處理器的通信方法.針對Izhikevich神經(jīng)元的特點,經(jīng)過實驗比較,采用其中2種Nios Ⅱ多核通信技術(shù)相結(jié)合的方式實現(xiàn)脈沖神經(jīng)元并行計算結(jié)構(gòu).該結(jié)構(gòu)能很好地實現(xiàn)Izhikevich神經(jīng)元的功能,并且能充分體現(xiàn)脈沖神經(jīng)網(wǎng)絡(luò)并行計算的特點.
多核通信;Nios Ⅱ;Izhikevich神經(jīng)元模型;并行計算
人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Networks,ANN)通過對連續(xù)輸入做狀態(tài)響應(yīng)而進行信息處理.基于第三代人工神經(jīng)元模型(Spike神經(jīng)元)建立的脈沖神經(jīng)網(wǎng)絡(luò)(Spiking Neural Network,SNN)成為近年來神經(jīng)網(wǎng)絡(luò)領(lǐng)域研究的熱點.與前兩代人工神經(jīng)網(wǎng)絡(luò)模型相比,SNN更接近生物的信息處理機制.[1-3]
國內(nèi)外對神經(jīng)網(wǎng)絡(luò)硬件實現(xiàn)的研究分為基于通用神經(jīng)元處理器的芯片和基于現(xiàn)場可編程門陣列(Field-Programmable Gate Array,F(xiàn)PGA)的硬件實現(xiàn)[4].在FPGA硬件實現(xiàn)方面,C.E.Cox和W.E Blanz[5]在1992年實現(xiàn)了FPGA上的單隱層全連接的神經(jīng)網(wǎng)絡(luò)分類器;1994年,N.M Botros和M.Abdul-Aziz[6]實現(xiàn)了基于在Xilinx FPGA的全數(shù)字的多層感知器網(wǎng)絡(luò);H.Hikawa[7]實現(xiàn)了基于FPGA的激勵函數(shù)可調(diào)神經(jīng)元.
純硬件實現(xiàn)的脈沖神經(jīng)網(wǎng)絡(luò)包含大量的乘法運算,硬件需求較高[8],而可編程片上系統(tǒng)(System-on-a-Programmable-Chip,SOPC)搭建的系統(tǒng)具有器件少、成本低、靈活性強、數(shù)據(jù)存儲方便等眾多優(yōu)點.[9]將神經(jīng)網(wǎng)絡(luò)與SOPC多核技術(shù)結(jié)合,可以實現(xiàn)人工神經(jīng)網(wǎng)絡(luò)運行的并行性、權(quán)值、結(jié)構(gòu)自適應(yīng)性,同時通過復用硬件乘法器的方法節(jié)約系統(tǒng)資源,是實現(xiàn)嵌入式神經(jīng)網(wǎng)絡(luò)最有效的方法之一.
本文使用3個Nios II軟核處理器模擬3個脈沖神經(jīng)元細胞,實現(xiàn)脈沖神經(jīng)元電勢積累和脈沖發(fā)放的過程.
脈沖神經(jīng)元把外部刺激編碼成脈沖,并對脈沖發(fā)放的時間進行運算.每個脈沖神經(jīng)元可以同時接收多個突觸的脈沖,當它的膜電壓超過閾值時,產(chǎn)生一個脈沖傳給下一級神經(jīng)元,這個過程被稱為突觸后電位(Post-Synaptic Potential,PSP).PSP信號根據(jù)權(quán)值的正負可以對子神經(jīng)元產(chǎn)生激勵或抑制2種作用.
本文使用的Izhikevich模型[10]是由Izhikevich教授依據(jù)非線性動力學的分叉理論推導得出的神經(jīng)元模型.該模型可描述為:
(1)
(2)
(3)
上述公式可以等價為:
(4)
(5)
(6)
其中:v代表膜電位,u代表膜電壓恢復量,I代表輸入電流,參數(shù)b決定了變量u的敏感程度,a決定了電壓恢復時間,c為電壓復位值,參數(shù)d為脈沖發(fā)放時神經(jīng)元總體輸出和輸入的電流之差.(4)—(6)式相比(1)—(3)式多了4個參數(shù),其中C是膜電容,vr是靜息電位,vt是觸發(fā)電位,vpeak是脈沖發(fā)放閾值,實際應(yīng)用中當模型選定時,這4個參數(shù)都為定值.
嵌入式多核處理器設(shè)計非常復雜,但是借助FPGA技術(shù),開發(fā)者可以方便地利用IP核研究嵌入式多核系統(tǒng).本文在正式系統(tǒng)設(shè)計之前,先驗證了4種基于Nios Ⅱ的多核通信方法,分析了各個方法的優(yōu)缺點和適用情況,為我們進一步研究提供了參考.
(1) 雙端口RAM多核通信方法.On-Chip Memory IP核可以選擇初始化為雙端口模式,雙口RAM被總線當做兩個設(shè)備,2個處理器軟核可以同時對其進行讀操作.
(2) Mailbox多核通信方法.Mailbox IP核可以用來處理雙核之間的數(shù)據(jù)通信.Mailbox核包含了2個互斥核,分別用來保證唯一寫權(quán)限和唯一讀權(quán)限.共享消息通過Mailbox傳輸?shù)倪^程相當于FIFO(First in First out)隊列.
(3) Mutex互斥核多核通信方法.Mutex核是基于Avalon總線的一種硬件協(xié)議,它可以保證多處理器對共享資源所有權(quán)的互斥性.Mutex核在硬件上不與共享資源產(chǎn)生連接,它只提供共享資源的所有權(quán)標志,對共享資源的保護必須通過與軟件配合來實現(xiàn).
(4) SPI串口多核通信方法.在數(shù)據(jù)交換量不大的情況時,可以采用通用串行接口作為核與核之間通信的方案.Altera提供了基于Avalon總線的全功能的SPI和UART接口IP核.
Nios Ⅱ 4種多核通信方法比較見表1.
表1 Nios Ⅱ 4種多核通信方法比較
Nios Ⅱ 4種多核通信方法的軟件設(shè)計流程分別如圖1—4所示.
本文設(shè)計采用FPGA芯片型號為Cyclone Ⅱ EP2C35F672C8.設(shè)計中包含3個NIOS Ⅱ處理器軟核,每個處理器模擬一個神經(jīng)元,共兩層3個神經(jīng)元.其中cpu0和cpu2為突觸前細胞,模擬前級神經(jīng)元脈沖發(fā)放的過程,cpu1為突觸后細胞,模擬后級神經(jīng)元膜電壓積累發(fā)放的過程,設(shè)計模擬的生物結(jié)構(gòu)如圖5所示.
圖1 Mailbox通信流程
圖2 Mutex通信流程
圖3 雙端口Ram通信流程
圖4 SPI串口通信流程
圖5 3個脈沖神經(jīng)元生物模型
圖5中突觸前神經(jīng)元I和J,分別在t1和t2時刻發(fā)放脈沖,突觸后神經(jīng)元K接收2個脈沖輸入后在t3時刻膜電位積分到達閾值Vpeak,并發(fā)放脈沖,電位重置.K的膜電位波形如圖5右側(cè)Vi(t)所示.
正常的生物神經(jīng)網(wǎng)絡(luò)中,刺激信號是從末梢神經(jīng)向中樞神經(jīng)單向傳遞的,但是在人工模擬神經(jīng)元時,數(shù)學模型是由時間驅(qū)動的,在多核多神經(jīng)元系統(tǒng)中,為了避免突觸前后神經(jīng)元代碼運行時間代價不同而引起的脈沖錯位問題,突觸前后脈沖神經(jīng)元需要一個統(tǒng)一的同步時間信號作為驅(qū)動.
選擇多核間通信方式,設(shè)計中包含3個方向的信息傳遞,突觸前神經(jīng)元到突觸后神經(jīng)元需要一對一傳輸,突觸后神經(jīng)元到突觸前神經(jīng)元需要一對二傳輸,結(jié)合第2部分所述內(nèi)容,信息向后傳遞時需要傳遞一個包含脈沖信息的結(jié)構(gòu)體,雙端口RAM和Mailbox適用于此種情況,又考慮到信息量不大,采用片內(nèi)RAM作為通信緩存則使用雙端口RAM最適合本文設(shè)計中信息正向傳遞的情況.時間信息向前同步時,需要一對二的通信模式,則Mutex和SPI串口適用于此種情況,又考慮到Mutex程序較為復雜,時間成本和硬件成本都比較高,且設(shè)計中時間信息較少,使用SPI串口能很好地實現(xiàn)一對二發(fā)送時間的功能.
綜上所述,最后設(shè)計的硬件系統(tǒng)如圖6所示.
圖6 3個脈沖神經(jīng)元硬件實現(xiàn)
圖6中cpu0和cpu2為突觸前神經(jīng)元,通過雙端口RAM向后發(fā)送包含脈沖信息的結(jié)構(gòu)體,且2個神經(jīng)元都含有一個SPI從端口.cpu1為突觸后神經(jīng)元,同時接受2個前級神經(jīng)元的脈沖信息,并且含有一個SPI主端口向前發(fā)送時間同步信息,設(shè)計中SPI只考慮單向傳輸,所以主機只初始化了一個接口,2個從機并聯(lián),同時接收信息.設(shè)計中3個處理器全部初始化為Nios Ⅱ標準型內(nèi)核,該內(nèi)核下含有硬件乘加器,可以提高脈沖積累發(fā)放程序的運算速度,同時相比Nios Ⅱ快速型內(nèi)核省去了一些不必要的組件,更節(jié)約硬件資源.
在設(shè)計3個處理器軟核間通信流程時,需要初始化脈沖信息傳遞的結(jié)構(gòu)體Spike,結(jié)構(gòu)體成員如表2所示,神經(jīng)元功能實現(xiàn)流程如圖7所示.
表2 結(jié)構(gòu)體Spike成員列表
圖73個處理器軟核系統(tǒng)程序流程
通信的關(guān)鍵在于前后神經(jīng)元的時間同步,在實際的系統(tǒng)中,突觸前神經(jīng)元cup0和cpu2的程序完全相同,數(shù)組初始化后進入主循環(huán)等待SPI中斷,當中斷來臨時將Pretime中的時間信息與cpu1通過SPI發(fā)來的時間信息同步,然后根據(jù)系統(tǒng)時間發(fā)送既定的脈沖信號.突觸后神經(jīng)元中主循環(huán)在每個循環(huán)的開始先向后同步時間信息,然后查詢等待結(jié)構(gòu)體中Pretime變量的同步,同步完成意味著前級脈沖已經(jīng)發(fā)送完畢,則后神經(jīng)元在讀取脈沖信息后進入Izhikevich神經(jīng)元模型的計算過程中,在每次循環(huán)的末尾將時間加1 ms,若時間為100 ms則清零.此循環(huán)不斷模擬100 ms內(nèi)一個神經(jīng)元細胞的電位變化.
圖8 cpu1產(chǎn)生波形圖
實驗中cpu1輸出的膜電位通過串口發(fā)回計算機,波形結(jié)果如圖8所示.cpu0每隔1 ms向后發(fā)送一個脈沖,cpu2在前50 ms與cpu0交替發(fā)送脈沖,后50 ms不發(fā)送脈沖,即cpu1在前50 ms接收到一個直流信號,后50 ms接收到間隔1 ms 的脈沖信號.在sopc builder中生成系統(tǒng)時,為每個cpu初始化了一個pio輸出接口,軟件實現(xiàn)中,每個cpu在運行各自代碼期間將其pio端口設(shè)置為高電平,通過邏輯分析儀觀察3個pio端口的波形狀況,如圖9所示.
從圖9中可以看出cpu1作為突觸后神經(jīng)元,需要對前級輸入脈沖進行積累發(fā)放運算,程序運行時間代價較高,cpu0和cpu2在系統(tǒng)中只起到脈沖發(fā)放的作用,激活時間較短;另一方面,cpu0和cpu2的激活時間完全相同,即時間同步完成后,同一級神經(jīng)元可以同時工作,很好地體現(xiàn)了實際生物神經(jīng)網(wǎng)絡(luò)中同級神經(jīng)元激活的并行性.
基于FPGA多核技術(shù)的脈沖神經(jīng)元系統(tǒng)實現(xiàn)了預期的功能,多核間的通信得到了很好的實現(xiàn),脈沖后神經(jīng)元輸出的波形與Matlab模擬波形基本一致.
本文所述的脈沖神經(jīng)元系統(tǒng),具有低成本、靈活性強和重復配置升級等眾多優(yōu)勢.FPGA技術(shù)與神經(jīng)網(wǎng)絡(luò)技術(shù)的結(jié)合是嵌入式神經(jīng)網(wǎng)絡(luò)技術(shù)最可行的發(fā)展方向.
圖9 邏輯分析儀波形
本文實現(xiàn)的是脈沖神經(jīng)網(wǎng)絡(luò)中的一個基本單元,通過結(jié)合脈沖神經(jīng)網(wǎng)絡(luò)學習算法,可以很方便地搭建一個完整的脈沖神經(jīng)網(wǎng)絡(luò),用以完成更多復雜的任務(wù),也可以使用其他脈沖神經(jīng)元模型,優(yōu)化系統(tǒng)運行速度,實現(xiàn)所需功能.
[1] 王鴻斌,張立毅,胡志軍.人工神經(jīng)網(wǎng)絡(luò)理論及其應(yīng)用[J].山西電子技術(shù),2006(2):41-43.
[2] ZURADA J M.Introduction to Artificial Neural Systems [M].New York:West Publishing Co,1992:17-20.
[3] MAASS W.Networks of Spiking neurons:the third generation of neural network models [J].Neural Networks.1997,10(9):1659-1671.
[4] DINU A,CIRSTEA M N,CIRSTEA S E.Direct neural-network hardware-implementation algorithm [J].IEEE Transactions on Industrial Electronics,2010,57(5):1845-1848.
[5] COX C E,BLANZ W E.GANGLION-a fast field-programmable gate array implementation of a connectionist classifier [J].IEEE Journal of Solid-State Circuits,1992,27(3):288-299.
[6] BOTROS N M,ABDUL-AZIZ M.Hardware implementation of an artificial neural network using field programmable gate arrays(FPGA’s)[J].IEEE Transactions on Industrial Electronics,1994,41(6):665-667.
[7] HIKAWA H.A digital hardware pulse-mode neuron with piecewise linear activation function [J].IEEE Transactions on Neural Networks,2003,14(5):1028-1037.
[8] 錢玉多.基于FPGA的神經(jīng)網(wǎng)絡(luò)硬件實現(xiàn)研究[D].武漢:華中科技大學,2012.
[9] 張文娟,王蕾,王連明.基于Nios Ⅱ的脈沖神經(jīng)網(wǎng)絡(luò)硬件實現(xiàn)方法[J].東北師大學報(自然科學版),2016,48(4):57-62.
[10] IZHIKEVICH E M.Simple model of spiking neurons [J].Neural Networks,IEEE Transactions on Neural Networks,2003,14(6):1569-1572.
(責任編輯:石紹慶)
MethodformulticoreimplementationofspikeneuronbasedonNiosⅡ
ZHANG Wen-juan,ZHANG Zhe
(School of Physics,National Demonstration Center for Experimental Physics Education,Northeast Normal University,Changchun 130024,China)
The third generation neural network which has better biological characteristics and named spiking neural network is a hot research topic in recent years.Firstly,Izhikevich neuron mode is used as the calculating unit.Secondly,communication methods of four Nios Ⅱ processors are discussed.Finally,two kinds of Nios Ⅱ multicore technology are combined to realize the structure of the parallel computation of neurons after experimental comparison according to the characteristics of Izhikevich neurons.The structure can achieve the function of Izhikevich neuron,and can fully reflect the characteristics of the parallel computing of the spiking neural network after testing.
multicore communication;Nios Ⅱ;Izhikevich neuron mode;parallel computing
1000-1832(2017)03-0073-05
10.16163/j.cnki.22-1123/n.2017.03.016
2016-07-21
國家自然科學基金專項基金資助項目(21227008);中央高?;究蒲袠I(yè)務(wù)費專項基金資助項目(2412015KJ006).
張文娟(1983—),女,博士,工程師,主要從事嵌入式系統(tǒng)、智能信息處理研究.
TP 183 [學科代碼] 520·20
A