• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于憶阻器的PIM結(jié)構(gòu)實(shí)現(xiàn)深度卷積神經(jīng)網(wǎng)絡(luò)近似計(jì)算

    2017-06-23 12:47:07李楚曦樊曉椏趙昌和張盛兵王黨輝安建峰
    關(guān)鍵詞:阻器阻值運(yùn)算

    李楚曦 樊曉椏,2 趙昌和 張盛兵,2 王黨輝,2 安建峰,2 張 萌,2

    1(西北工業(yè)大學(xué)計(jì)算機(jī)學(xué)院 西安 710129)2(嵌入式系統(tǒng)集成教育部工程研究中心(西北工業(yè)大學(xué)) 西安 710129)

    基于憶阻器的PIM結(jié)構(gòu)實(shí)現(xiàn)深度卷積神經(jīng)網(wǎng)絡(luò)近似計(jì)算

    李楚曦1樊曉椏1,2趙昌和1張盛兵1,2王黨輝1,2安建峰1,2張 萌1,2

    1(西北工業(yè)大學(xué)計(jì)算機(jī)學(xué)院 西安 710129)2(嵌入式系統(tǒng)集成教育部工程研究中心(西北工業(yè)大學(xué)) 西安 710129)

    (lichuxi@mail.nwpu.edu.cn)

    憶阻器(memristor)能夠?qū)⒋鎯?chǔ)和計(jì)算的特性融合,可用于構(gòu)建存儲(chǔ)計(jì)算一體化的PIM(processing-in-memory)結(jié)構(gòu).但是,由于計(jì)算陣列以及結(jié)構(gòu)映射方法的限制,基于憶阻器陣列的深度神經(jīng)網(wǎng)絡(luò)計(jì)算需要頻繁的AD/DA轉(zhuǎn)換以及大量的中間存儲(chǔ),導(dǎo)致了顯著的能量和面積開(kāi)銷(xiāo).提出了一種新型的基于憶阻器的深度卷積神經(jīng)網(wǎng)絡(luò)近似計(jì)算PIM結(jié)構(gòu),利用模擬憶阻器大大增加數(shù)據(jù)密度,并將卷積過(guò)程分解到不同形式的憶阻器陣列中分別計(jì)算,增加了數(shù)據(jù)并行性,減少了數(shù)據(jù)轉(zhuǎn)換次數(shù)并消除了中間存儲(chǔ),從而實(shí)現(xiàn)了加速和節(jié)能.針對(duì)該結(jié)構(gòu)中可能存在的精度損失,給出了相應(yīng)的優(yōu)化策略.對(duì)不同規(guī)模和深度的神經(jīng)網(wǎng)絡(luò)計(jì)算進(jìn)行仿真實(shí)驗(yàn)評(píng)估,結(jié)果表明,在相同計(jì)算精度下,該結(jié)構(gòu)可以最多降低90%以上的能耗,同時(shí)計(jì)算性能提升約90%.

    憶阻器;PIM;卷積神經(jīng)網(wǎng)絡(luò);近似計(jì)算;模擬存儲(chǔ)

    新型器件憶阻器(memristor)具有能夠?qū)⒂?jì)算和存儲(chǔ)功能相融合的特殊性質(zhì),因此,以憶阻器及其基本單元構(gòu)造的PIM(processing-in-memory)結(jié)構(gòu)被認(rèn)為是訪存瓶頸的有效解決途徑[1].同時(shí),由于歐姆定律和神經(jīng)網(wǎng)絡(luò)矩陣乘法運(yùn)算的高度契合,并且憶阻器的高存儲(chǔ)密度也能滿足神經(jīng)網(wǎng)絡(luò)的巨大數(shù)據(jù)量,因此基于憶阻器交叉陣列的PIM結(jié)構(gòu)極其適合于實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)近似計(jì)算[2].

    此前的一些相關(guān)研究結(jié)果顯示,以憶阻器交叉陣列為基礎(chǔ)的神經(jīng)網(wǎng)絡(luò)計(jì)算結(jié)構(gòu)能夠有效克服訪存瓶頸,并取得良好的加速效果[2-5].然而,數(shù)據(jù)在交換過(guò)程中需要不斷經(jīng)過(guò)轉(zhuǎn)換器進(jìn)行數(shù)模/模數(shù)轉(zhuǎn)化以及大量的多位中間存儲(chǔ),造成了顯著的面積和能量消耗.

    因此,本文提出了新型的PIM結(jié)構(gòu)實(shí)現(xiàn)基于憶阻器的深度卷積神經(jīng)網(wǎng)絡(luò)近似計(jì)算,在不降低神經(jīng)網(wǎng)絡(luò)計(jì)算準(zhǔn)確度的前提下,取得了能耗更低、面積更優(yōu)、執(zhí)行時(shí)間更短的效果.

    本文的主要貢獻(xiàn)如下:

    1) 提出了將卷積過(guò)程分解到不同形式的憶阻器陣列中分別計(jì)算的計(jì)算方案,取得了顯著性能提升,最高達(dá)到87%;

    2) 設(shè)計(jì)了新型的基于憶阻器的深度卷積神經(jīng)網(wǎng)絡(luò)近似計(jì)算PIM結(jié)構(gòu),能夠減少數(shù)據(jù)轉(zhuǎn)換次數(shù),消除中間存儲(chǔ),最高可降低95%的能耗;

    3) 針對(duì)所提出的結(jié)構(gòu)中可能存在的精度損失,提出了相應(yīng)的優(yōu)化策略,提高了系統(tǒng)精度,保證系統(tǒng)精度在95%左右.

    1 背 景

    1.1 憶阻器陣列的CNN計(jì)算特征

    卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network, CNN)是神經(jīng)網(wǎng)絡(luò)架構(gòu)中常見(jiàn)的一種,由生物學(xué)自然視覺(jué)認(rèn)知機(jī)制啟發(fā)而來(lái).典型的卷積神經(jīng)網(wǎng)絡(luò)具有輸入層、卷積層、降采樣層、全連接層和輸出層.一般地,一個(gè)卷積層之后配置一個(gè)降采樣層,2個(gè)層構(gòu)成一組.一個(gè)完整的卷積神經(jīng)網(wǎng)絡(luò)由一個(gè)輸出層、多組卷積/降采樣層、多個(gè)全連接層以及一個(gè)輸出層按照從輸入到輸出的順序構(gòu)成,如圖1所示[6].深度神經(jīng)網(wǎng)絡(luò)突出的特征學(xué)習(xí)能力使其在大數(shù)據(jù)應(yīng)用中有突出的表現(xiàn),特別是語(yǔ)音識(shí)別、圖像識(shí)別等基于分類(lèi)的識(shí)別問(wèn)題[7].

    Fig. 1 The structure of LeNet-5 CNN圖1 LeNet-5卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖

    卷積神經(jīng)網(wǎng)絡(luò)的核心是乘累加運(yùn)算,所有類(lèi)型的層的算法都可以抽象成乘累加運(yùn)算.參與乘累加的元素可以分成2類(lèi):權(quán)值和待處理的信號(hào)值.卷積神經(jīng)網(wǎng)絡(luò)中所有的運(yùn)算過(guò)程,都可視為權(quán)值和待處理的信號(hào)值對(duì)應(yīng)相乘之后再累加,其后加上偏置,最后通過(guò)激活函數(shù)(sigmoid函數(shù)),得到計(jì)算結(jié)果的過(guò)程.即:

    (1)

    其中,mij為輸入,kij為權(quán)值,oij為輸出.

    憶阻器是阻性器件,其電路特性滿足阻性器件串并列規(guī)則.根據(jù)歐姆定律,假設(shè)若干憶阻器的一端連接在水平位線WL上,另一端連接在豎直字線BL上,構(gòu)成憶阻器交叉陣列[8],第i行第j列憶阻器的阻值為Mij,電導(dǎo)值為gij=1Mij,施加在其WL的電壓值為Ui,不考慮外加激勵(lì)導(dǎo)致的憶阻器阻值變化,則第j條BL的總電流Itotal,j為

    (2)

    并行地完成多次乘累加運(yùn)算,如圖2所示.所有乘累加有一個(gè)元素完全相同,為輸入電壓Ui;另一個(gè)元素不同,為不同列憶阻器的電導(dǎo)值.這與卷積神經(jīng)網(wǎng)絡(luò)運(yùn)算形式的需求一致,如果配置好憶阻器的阻值,將其作為權(quán)值,將待處理的信號(hào)值編碼成輸入電壓,就可以完成權(quán)值和待處理信號(hào)值的乘累加[9].

    Fig. 2 Circuit structure of the memristor array圖2 憶阻器陣列的電路結(jié)構(gòu)

    乘累加的計(jì)算結(jié)果形式為電流值,需要經(jīng)BL輸出到外部,以穩(wěn)定的形式存放在存儲(chǔ)單元中.如果神經(jīng)網(wǎng)絡(luò)的規(guī)模或深度超過(guò)單個(gè)憶阻器陣列的計(jì)算能力,則可分離出一部分憶阻器陣列作為緩存,用于存儲(chǔ)中間結(jié)果,減少與外部的數(shù)據(jù)交換.

    1.2 相關(guān)工作分析

    文獻(xiàn)[10-12]研究了基于非易失性存儲(chǔ)器的PIM結(jié)構(gòu),證明了該結(jié)構(gòu)在加速和降低能耗2方面都有顯著優(yōu)勢(shì).文獻(xiàn)[3]提出了一種新型的PIM結(jié)構(gòu),利用憶阻器交叉陣列和CMOS輔助電路實(shí)現(xiàn)了CNN,并將憶阻器交叉陣列劃分為2種不同功能的模塊:1)只用于存儲(chǔ);2)兼用于存儲(chǔ)和計(jì)算.該電路結(jié)構(gòu)取得了明顯的加速效果,計(jì)算精度也較高.然而,其計(jì)算過(guò)程中產(chǎn)生的中間結(jié)果近似于模擬值,而憶阻器單元使用的是數(shù)字憶阻器,數(shù)據(jù)無(wú)法緩存,需要不斷地進(jìn)行數(shù)模/模數(shù)轉(zhuǎn)化以及大量多位的中間存儲(chǔ),造成了額外的面積開(kāi)銷(xiāo)和能量消耗.

    如果使用模擬憶阻器,即阻值連續(xù)可變的憶阻器,則可以保證中間結(jié)果能夠緩存在憶阻器陣列中,消除數(shù)據(jù)轉(zhuǎn)換帶來(lái)的額外消耗.并且將讀寫(xiě)次數(shù)由多位讀寫(xiě)壓縮至一次讀寫(xiě),大大提高數(shù)據(jù)密度,降低讀寫(xiě)消耗.雖然理論上模擬憶阻器存儲(chǔ)時(shí)擁有無(wú)窮高的精度,但是在實(shí)際應(yīng)用中,由于相鄰存儲(chǔ)單元之間的漏流干擾和讀寫(xiě)誤差等原因,模擬憶阻器的精度會(huì)受到影響.同時(shí),數(shù)字憶阻器存儲(chǔ)多位數(shù)據(jù)時(shí)也存在截?cái)嗾`差,因此不能簡(jiǎn)單地判定二者的精度大小.如果能夠通過(guò)合理的措施保證模擬憶阻器的精度,就能夠利用其顯著提高數(shù)據(jù)密度,大大降低計(jì)算電路的復(fù)雜性.

    文獻(xiàn)[8]提出了一種基于模擬憶阻器的非線性神經(jīng)網(wǎng)絡(luò)計(jì)算方案并驗(yàn)證了其可靠性,結(jié)果表明其平均誤差在5%左右.

    基于以上分析,本文采用模擬憶阻器構(gòu)建深度CNN近似計(jì)算結(jié)構(gòu),通過(guò)分析卷積神經(jīng)網(wǎng)絡(luò)的計(jì)算特征,將計(jì)算過(guò)程分解成利于并行的2部分,將中間結(jié)果緩存在部分憶阻器陣列中,消除數(shù)據(jù)轉(zhuǎn)換.同時(shí),給出提高精度的措施保證系統(tǒng)的可靠性.

    2 基于CNN計(jì)算分解的憶阻器陣列結(jié)構(gòu)

    2.1 面向高效并行的計(jì)算方案

    考慮到卷積層是卷積神經(jīng)網(wǎng)絡(luò)中復(fù)雜度最高、最具有普遍意義的類(lèi)型,降采樣層和全連接層都可以看作是卷積的特殊形式,只要能夠?qū)崿F(xiàn)卷積層,采用類(lèi)似的方法也能實(shí)現(xiàn)降采樣層和全連接層.因此以下重點(diǎn)討論卷積層的實(shí)現(xiàn)方法.

    假設(shè)卷積層的輸入圖尺寸是n×n,卷積核尺寸是k×k,滑步長(zhǎng)度是l,則該層的輸出特征圖尺寸為(n-k+l)l×(n-k+l)l.以MNIST手寫(xiě)體識(shí)別[13]的第1層卷積層計(jì)算為例,輸入圖大小是28×28,卷積核的大小是5×5,滑步是1,得到的特征圖大小是24×24.

    單次卷積運(yùn)算由一個(gè)k×k的卷積核和一個(gè)k×k的卷積計(jì)算窗口參與.具體到MNIST手寫(xiě)體識(shí)別的第1層卷積層中,單次卷積運(yùn)算是5×5的卷積核和5×5的卷積計(jì)算窗口.把計(jì)算過(guò)程進(jìn)行分解,可視為6次乘累加運(yùn)算.其中前5次是并列的,每次由卷積核中的一行和卷積窗口中的一行進(jìn)行乘累加;最后一次是在前5次計(jì)算的中間結(jié)果得出后,將5個(gè)中間結(jié)果全部累加.這樣拆解的原因是:在憶阻器陣列電路中,批量讀取數(shù)據(jù)往往是以行為單位,在同一行的數(shù)據(jù)可以在一個(gè)周期內(nèi)同時(shí)讀出,同時(shí)參與運(yùn)算;而不在同一行的數(shù)據(jù),需要在另外一個(gè)周期才能被讀出.通過(guò)此拆解方法,將單次卷積運(yùn)算分成了二維方向的2種類(lèi)型運(yùn)算:1)橫向k次乘累加;2)縱向1次累加.

    圖3給出了一個(gè)卷積運(yùn)算拆解的例子,原本的四次乘法、一次加法被拆分成了2組三次乘累加.

    Fig. 3 An assembly example of 2×2 convolutional computation圖3 一個(gè)2×2卷積運(yùn)算的拆解示例

    本文將拆解后的2種運(yùn)算分到2個(gè)憶阻器陣列子電路模塊中分別計(jì)算,能夠減少讀取次數(shù)、提高效率并保證數(shù)據(jù)大規(guī)模并行.用于計(jì)算橫向乘累加的模塊命名為權(quán)重子陣列(weight sub-array, WSA),因?yàn)闄?quán)重的存儲(chǔ)和參與運(yùn)算都在這部分中;用于計(jì)算縱向累加的模塊命名為累加子陣列(accumulate sub-array, ASA),因?yàn)樗环矫嫫鸬骄彺婢矸e中間結(jié)果的作用,一方面將這些中間結(jié)果進(jìn)行累加得到卷積值.

    2.2 WSA模塊

    WSA模塊的作用是完成橫向乘累加,即卷積核中的每一行與卷積窗口中的每一行的乘累加運(yùn)算.為了消除潛通路徑(sneak path)的影響,其結(jié)構(gòu)是1S1R的憶阻器單元構(gòu)成的陣列[14](為簡(jiǎn)化電路結(jié)構(gòu)圖,便于閱讀,以下模塊結(jié)構(gòu)圖中省略了與憶阻器串聯(lián)的選擇管).

    傳統(tǒng)的策略是將卷積核(即權(quán)值)數(shù)據(jù)和卷積窗口數(shù)據(jù)編碼為憶阻值,以矩陣排列方式分別存儲(chǔ)在2個(gè)陣列中.計(jì)算時(shí)將卷積窗口數(shù)據(jù)讀出,轉(zhuǎn)換為電壓形式,再作為輸入傳遞給權(quán)值數(shù)據(jù)所在的陣列,最后在這其中將二者相乘并疊加.每采集一次卷積窗口數(shù)據(jù)需要進(jìn)行一次讀操作讀取一行,進(jìn)行一次k×k大小的卷積需要進(jìn)行k次讀操作才能采集完全部輸入數(shù)據(jù).進(jìn)行完本次乘累加運(yùn)算后,則滑步一次進(jìn)行下一次卷積運(yùn)算.由于前一次的讀取結(jié)果不能以電壓形式被緩存,此時(shí)需要再次讀取同樣的k行.當(dāng)滑步進(jìn)行到一行的末尾,則回到起始位置并向下滑步一次進(jìn)行下一次卷積運(yùn)算.此時(shí)需要讀取的數(shù)據(jù)中只有一行不重復(fù),其他k-1行都與前一次卷積讀取的行相同.

    由于卷積層算法中每個(gè)卷積窗口都存在重疊,以及陣列按行讀取數(shù)據(jù)的特點(diǎn),大量的時(shí)間和能耗消耗在了對(duì)重復(fù)數(shù)據(jù)的多次讀取上.要避免重復(fù)讀取,首先要觀測(cè)每次讀取的數(shù)據(jù)參與的運(yùn)算次數(shù).下文繼續(xù)以MNIST手寫(xiě)體識(shí)別的第1層卷積層計(jì)算為例,輸入圖大小是28×28、卷積核的大小是5×5,滑步是1,得到的特征圖大小是24×24.將輸入圖的第i行命名為L(zhǎng)i,將卷積核按照從左到右、從上到下的順序命名為w1~w25.

    以輸入圖為觀測(cè)對(duì)象,逐行考查:

    對(duì)第1行L1,只有卷積核覆蓋在L1~L5上做卷積時(shí)參與運(yùn)算,所涉及到的運(yùn)算為24次乘累加.從L1最左邊開(kāi)始,每次取5個(gè)連續(xù)數(shù)與w1~w5分別相乘并累加,然后右移一個(gè)單位繼續(xù)取數(shù),直到取到最右邊的5個(gè)數(shù),共24次乘累加.

    對(duì)第2行L2,卷積核覆蓋在L1~L5或者L2~L5上做卷積時(shí)都要參與運(yùn)算,所涉及到的運(yùn)算為24×2次乘累加.從L2最左邊開(kāi)始,每次取5個(gè)連續(xù)數(shù),不僅要與w1~w5相乘并累加,還要與w6~w10進(jìn)行相同的操作.

    對(duì)第3行L3,卷積核覆蓋在L1~L5,L2~L5或者L3~L4上做卷積時(shí)都要參與運(yùn)算,所涉及到的運(yùn)算為24×3次乘累加.從L2最左邊開(kāi)始,每次取5個(gè)連續(xù)數(shù),不僅要與w1~w5相乘并累加,還要與w6~w10,w11~w16進(jìn)行相同的操作.

    以此類(lèi)推,L4要與w1~w5,w6~w10,w11~w15,w16~w20進(jìn)行24×4次乘累加,而L5~L24要與w1~w5,w6~w10,w11~w15,w16~w20,w21~w25這5組數(shù)進(jìn)行24×5次乘累加.

    最后5行的規(guī)律與前5行對(duì)稱(chēng),L25與w6~w10,w11~w15,w16~w20和w21~w25進(jìn)行24×4次乘累加,L26與w11~w15,w16~w20和w21~w25進(jìn)行24×3次乘累加,L27與w16~w20和w21~w25進(jìn)行24×2次乘累加,L28與w21~w25進(jìn)行24次乘累加.

    至此,輸入圖每一行參與運(yùn)算的情況分析完畢,其對(duì)稱(chēng)性和規(guī)律性有利于在電路中進(jìn)行優(yōu)化.由于計(jì)算的總次數(shù)是固定的,或者擴(kuò)大陣列面積,在一個(gè)時(shí)間周期內(nèi)并行地進(jìn)行多次計(jì)算;或者復(fù)用陣列,在每個(gè)時(shí)間周期進(jìn)行一次計(jì)算,因此計(jì)算時(shí)間和面積相互制約.由于憶阻器的納米級(jí)尺寸和高密度集成,其面積明顯小于CMOS電路,陣列面積的增加并不是電路的主要制約因素,因此將時(shí)間作為主要優(yōu)化參數(shù).WSA的設(shè)計(jì)目標(biāo)是:增加并行性,在每次讀操作之后,將讀出的一行所涉及到的所有乘累加運(yùn)算在一個(gè)周期內(nèi)全部完成.

    根據(jù)以上分析,將權(quán)重分為w1~w5,w6~w10,w11~w15,w16~w20,w21~w25五組,構(gòu)建5個(gè)陣列分別存放.在每個(gè)陣列內(nèi),不再按照傳統(tǒng)的數(shù)據(jù)存放方式,而是將5個(gè)數(shù)據(jù)擴(kuò)展成一個(gè)28×24的陣列,每一列由前一列的數(shù)據(jù)向下移位一次構(gòu)成.以w1~w5所在的陣列為例,排列方式如圖4所示,第1列為w1~w5從上到下排列,第2列為第1列向下移位一個(gè)單位,以此類(lèi)推,直到填滿第24列.

    Fig. 4 Structure of the first array of 28×24 WSA圖4 28輸入24輸出的WSA中第1個(gè)陣列的結(jié)構(gòu)圖

    Fig. 5 The data transmission relationship between the rows of input map and the WSA圖5 輸入圖的行數(shù)與WSA陣列的數(shù)據(jù)傳輸關(guān)系

    每個(gè)周期內(nèi)讀出一行輸入圖的值,按照?qǐng)D5所示傳遞給與之相關(guān)的陣列.對(duì)于每一個(gè)陣列,輸入為一行的28個(gè)數(shù)據(jù),以電壓形式從28條WL同時(shí)并行輸入.輸出為24個(gè)乘累加的計(jì)算結(jié)果,以電流形式從24條BL同時(shí)輸出.

    假設(shè)一個(gè)周期內(nèi)5個(gè)陣列的輸入為ai,j,輸出分別為bi,n,ci,n,di,n,ei,n,fi,n,其中ai,j表示第i行第j列的輸入數(shù)據(jù),每個(gè)周期輸入一行,在此周期內(nèi)i不變,j從0到最大值遍歷一次.bi,n~fi,n分別表示5個(gè)陣列中當(dāng)輸入數(shù)據(jù)為第i行時(shí)的第n條BL上的輸出數(shù)據(jù)(1≤i,j≤28,1≤n≤24).

    以w1~w5所在的第1個(gè)陣列為例,BL1從上到下存放w1~w5,則BL1的輸出為ai,1~ai,5與w1~w5的按序乘累加.BL2是BL1的數(shù)據(jù)下移一位,則BL1的輸出為ai,2~ai,6與w1~w5的按序乘累加.可以得到:

    bi,n=ai,n×w1+ai,n+1×w2+ai,n+2×w3+
    ai,n+3×w4+ai,n+4×w5.

    (3)

    其他4個(gè)WSA陣列以相同的形式分別將w6~w10,w11~w15,w16~w20,w21~w25錯(cuò)位展開(kāi)存放.同理可得:

    ci,n=ai,n×w6+ai,n+1×w7+ai,n+2×w8+
    ai,n+3×w9+ai,n+4×w10,

    (4)

    di,n=ai,n×w11+ai,n+1×w12+ai,n+2×
    w13+ai,n+3×w14+ai,n+4×w15,

    (5)

    ei,n=ai,n×w16+ai,n+1×w17+ai,n+2×
    w18+ai,n+3×w19+ai,n+4×w20,

    (6)

    fi,n=ai,n×w21+ai,n+1×w22+ai,n+2×
    w23+ai,n+3×w24+ai,n+4×w25,

    (7)

    對(duì)一幅輸入圖,28行被分成28個(gè)周期按序輸入,在第k個(gè)周期可以得到bk,n,ck,n,dk,n,ek,n,fk,n.每一個(gè)卷積運(yùn)算分成的5次乘累加在5個(gè)周期內(nèi)完成,例如輸出圖的第一個(gè)卷積結(jié)果k1,1:

    (8)

    k1,1=b1,1+c2,1+d3,1+e4,1+f5,1.

    (9)

    5次乘累加被分在第1個(gè)到第5個(gè)周期完成.同時(shí),與k1,1同在一行的第1行24個(gè)數(shù)據(jù)都是在第5個(gè)周期將5次乘累加全部計(jì)算完.而第2行的24個(gè)數(shù)據(jù)在第6個(gè)周期能將5次乘累加全部計(jì)算完.第28個(gè)周期結(jié)束后,全部輸出數(shù)據(jù)都被計(jì)算完畢,共24×24×5個(gè).每個(gè)周期結(jié)束后,這些中間結(jié)果值需要被緩存進(jìn)行下一步累加,這部分工作傳遞給ASA,由ASA完成.將WSA中完成橫向乘累加輸出的中間結(jié)果命名為部分和.

    在以上示例中,整個(gè)WSA需要28×24×5個(gè)憶阻器單元.更一般地,若輸入圖大小是n×n、卷積核的大小是k×k,滑步是l,則需要n×(n-k+l)×k個(gè)憶阻器單元.

    對(duì)于降采樣層,可將其視為特殊的卷積層,其特殊之處在于:1)卷積窗口沒(méi)有重疊;2)所有權(quán)值都是相同的(取均值算法).除此之外,乘累加的順序和方法均無(wú)改變.在降采樣層的計(jì)算初始時(shí),將滑步設(shè)置為與卷積核寬度同樣的大小k,將權(quán)值設(shè)置為同一個(gè)固定的數(shù),則采用的計(jì)算電路和卷積層可統(tǒng)一成同種形式.對(duì)于全連接層,與前2種層不同,只有1次乘累加過(guò)程,而沒(méi)有部分和.這是由于全連接層的輸入數(shù)據(jù)只有1行,不需要進(jìn)行縱向疊加.因此,全連接層可以直接映射到WSA,在1個(gè)周期內(nèi)計(jì)算完成,而不需要傳輸給ASA再做疊加.

    該設(shè)計(jì)可以避免電路的特殊化,同樣的硬件電路通過(guò)配置可以任意改變?yōu)榫矸e層、降采樣層或全連接層,保證了電路的可配置性.

    2.3 ASA模塊

    ASA模塊的作用是完成縱向乘累加,即接收由WSA計(jì)算得出的部分和,完成進(jìn)一步疊加,從而完成卷積運(yùn)算.疊加過(guò)程沒(méi)有加權(quán),直接將所有值相加.其結(jié)構(gòu)是若干模擬憶阻器緩存單元構(gòu)成的陣列,每個(gè)緩存單元由1個(gè)憶阻器和1個(gè)雙向選擇管構(gòu)成,如圖6所示,圓形虛線框內(nèi)為1個(gè)單元.

    Fig. 6 The structure of ASA圖6 ASA的結(jié)構(gòu)

    ASA的輸入信號(hào)分為2部分:1)控制器以高/低電平形式輸入到雙向選擇管的控制信號(hào)ES(extra selector);2)從WL以電壓形式輸入的部分和數(shù)據(jù).

    雙向選擇管有2個(gè)作用:1)充當(dāng)憶阻單元選擇管,消除Sneak Path;2)將WL擴(kuò)展成2個(gè)不同的輸入端WL1和WL2,在不同情況下為其對(duì)應(yīng)的憶阻器選擇合適的輸入信號(hào).當(dāng)ES信號(hào)為高電平1時(shí),憶阻器緩存單元中的NMOS晶體管導(dǎo)通,PMOS晶體管關(guān)斷,信號(hào)從WL1輸入;當(dāng)ES信號(hào)為低電平0時(shí),PMOS晶體管導(dǎo)通,NMOS晶體管關(guān)斷,信號(hào)從另外一條擴(kuò)展字線WL2輸入.

    根據(jù)WSA模塊的設(shè)計(jì),需要在同一個(gè)ASA中疊加的k個(gè)部分和數(shù)據(jù),即一個(gè)卷積運(yùn)算的所有部分和數(shù)據(jù)將會(huì)在連續(xù)的k個(gè)周期內(nèi)產(chǎn)生,以模擬電壓信號(hào)的方式輸出.部分和電壓信號(hào)輸入給ASA,由電壓的幅值大小決定對(duì)ASA中的憶阻器的寫(xiě)入值.寫(xiě)電路驅(qū)動(dòng)電壓的幅值與寫(xiě)入的電阻值一一對(duì)應(yīng),理想條件下,二者呈線性關(guān)系.ASA中所有憶阻器的阻值在初始化過(guò)程中都被寫(xiě)入為最小阻值,可以視為0.隨著WSA不斷輸出部分和,ASA也不斷地被連續(xù)寫(xiě)入阻值,在每個(gè)單元內(nèi)積累寫(xiě)入值,從而完成對(duì)部分和的累加,1個(gè)計(jì)算周期結(jié)束后憶阻器的阻值對(duì)應(yīng)著卷積結(jié)果.

    繼續(xù)以MNIST手寫(xiě)體識(shí)別的第1層卷積層計(jì)算為例,輸入圖大小是28×28、卷積核的大小是5×5.在每個(gè)周期內(nèi),WSA電路的5個(gè)陣列各輸出24個(gè)部分和.從第1個(gè)運(yùn)算周期開(kāi)始,每5個(gè)周期視為一個(gè)循環(huán),同一周期內(nèi)輸出的所有部分和不存在需要疊加的關(guān)系,需要疊加的是第i個(gè)周期WSA的第i個(gè)陣列內(nèi)同一編號(hào)的BL上輸出的結(jié)果(1≤i≤5).每一個(gè)卷積運(yùn)算的最終結(jié)果都是由5個(gè)部分和疊加而來(lái)的,以下集中討論輸入圖前5行與卷積核進(jìn)行卷積的計(jì)算結(jié)果,將這一部分輸入圖的第j行與卷積核的第j行乘累加產(chǎn)生的部分和稱(chēng)為部分和j(partial sumj).

    卷積運(yùn)算開(kāi)始的第1個(gè)周期,WSA的第1個(gè)陣列輸出的是輸入圖第1行的每5個(gè)元素與w1~w5分組相乘累加的24個(gè)結(jié)果,即部分和1,其他4個(gè)陣列沒(méi)有輸出結(jié)果.將這24個(gè)結(jié)果通過(guò)WL1k同時(shí)傳輸?shù)紸SA的第1列上,以阻值形式緩存.

    第2個(gè)周期,WSA的第1個(gè)陣列輸出的是輸入圖第2行的每5個(gè)元素與w1~w5分組相乘累加的24個(gè)結(jié)果,第2個(gè)陣列輸出的是輸入圖第2行的每5個(gè)元素與w6~w10分組相乘累加的24個(gè)結(jié)果,即部分和2,其他3個(gè)陣列沒(méi)有輸出結(jié)果.根據(jù)卷積神經(jīng)網(wǎng)絡(luò)的算法,部分和1應(yīng)該與部分和2相疊加.那么,將第1個(gè)陣列輸出的結(jié)果通過(guò)WL1k傳輸?shù)紸SA的第2列上緩存,而將部分和2通過(guò)WL21再次傳輸給ASA的第1列,給憶阻器寫(xiě)入疊加值,疊加在部分和1上.

    同樣地,在第3和第4個(gè)周期,每個(gè)周期利用WL1k緩存一列數(shù)據(jù),利用WL2k疊加一次部分和.

    第5個(gè)周期結(jié)束時(shí),ASA的前5列中存有緩存數(shù)據(jù),第1列上已經(jīng)完成了5個(gè)部分和的累加,即卷積結(jié)果圖中第1行的24個(gè)數(shù)據(jù).為了節(jié)省面積開(kāi)銷(xiāo),計(jì)算完畢的數(shù)據(jù)可以馬上輸出到外部或者下一個(gè)層,將第1行的憶阻器單元回復(fù)初始狀態(tài),即最小阻值狀態(tài),可以在下個(gè)周期緩存新的數(shù)據(jù).

    需要注意的是,此時(shí)ASA的第2列上已經(jīng)完成了卷積窗口下移一個(gè)單位時(shí),即輸入圖的第2行到第6行與卷積核做運(yùn)算的前4個(gè)部分和的疊加,只要第6個(gè)周期結(jié)束,這部分卷積運(yùn)算,即卷積結(jié)果圖中第2行的24個(gè)數(shù)據(jù)就計(jì)算完成,也可立即輸出到外部,重置第2列的憶阻器單元.

    通過(guò)這樣流水的方式,完成全部卷積運(yùn)算的周期數(shù)被大大縮減,只需28個(gè)讀周期結(jié)束,WSA計(jì)算出所有部分和后,ASA就能立即輸出所有的卷積結(jié)果.整個(gè)計(jì)算過(guò)程中每個(gè)周期的輸出如表1所示,表1中的LINEi表示輸入圖中的第i行,Ok,n表示輸出卷積結(jié)果的第k行中所有元素.

    Table 1 The Input and Output of WSA and ASA in Each Cycle

    此外,由于WSA中憶阻器的乘累加計(jì)算依賴(lài)于歐姆定律,當(dāng)電壓激勵(lì)給出后,電流響應(yīng)的延遲時(shí)間極短;ASA中的疊加依賴(lài)于憶阻器的連續(xù)寫(xiě)入,由于憶阻器的讀寫(xiě)速度快,ASA延遲時(shí)間也極小.因此整個(gè)計(jì)算結(jié)構(gòu)無(wú)論在周期數(shù)還是電路延遲時(shí)間上都體現(xiàn)出顯著的速度優(yōu)勢(shì),對(duì)加速卷積神經(jīng)網(wǎng)絡(luò)有著極大提升.

    整個(gè)ASA需要28×24×5個(gè)憶阻器單元,包含1個(gè)憶阻器和2個(gè)互補(bǔ)MOS晶體管.更一般地,若輸入圖大小是n×n,卷積核的大小是k×k,滑步是l,則需要n×(n-k+l)×k個(gè)憶阻器單元.

    3 面向CNN近似計(jì)算的PIM結(jié)構(gòu)

    3.1 PIM系統(tǒng)結(jié)構(gòu)

    本文設(shè)計(jì)了一種基于憶阻器陣列的可配置CNN近似計(jì)算PIM結(jié)構(gòu)(如圖7所示).系統(tǒng)包括16個(gè)分塊(bank),被劃分為7種模塊,分別為:全局控制器(global controller, GC)、數(shù)模(模數(shù))轉(zhuǎn)換器(DAC/ADC)、三輸入多路選擇器(multiplexer, MUX)、讀寫(xiě)模塊(write and read, WR)及其尋址模塊(addressing, AD)、開(kāi)關(guān)模塊(switch, SW)、WSA和ASA.

    1) 全局控制器.①在系統(tǒng)開(kāi)始工作之前,根據(jù)不同深度和規(guī)模的卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用,從bank和bank內(nèi)的模塊2個(gè)層面來(lái)進(jìn)行配置和調(diào)度.在bank層面,當(dāng)所需求的CNN應(yīng)用的深度和規(guī)模超過(guò)一個(gè)bank的運(yùn)算范圍時(shí),全局控制器將配置多個(gè)bank協(xié)同運(yùn)算,把需要運(yùn)算的數(shù)據(jù)分解到各個(gè)bank中并行計(jì)算,每個(gè)bank運(yùn)算后的數(shù)據(jù)會(huì)按照層的順序輸出給下一個(gè)bank作為輸入.在陣列層面,全局控制器將根據(jù)所需規(guī)模調(diào)用適合大小的陣列進(jìn)行計(jì)算,剩余不被調(diào)用的部分不參與計(jì)算,保持在存儲(chǔ)模式.②在系統(tǒng)工作過(guò)程中,通過(guò)控制信號(hào)控制整個(gè)系統(tǒng)的工作流程.全局控制器中配有計(jì)數(shù)器和時(shí)鐘產(chǎn)生模塊,在每個(gè)周期給WR,WSA,ASA等模塊發(fā)送控制信號(hào),使其正常工作.

    Fig. 7 Configurable PIM structure for CNN approximate computation圖7 可配置卷積神經(jīng)網(wǎng)絡(luò)近似計(jì)算PIM結(jié)構(gòu)圖

    2) 數(shù)模(模數(shù))轉(zhuǎn)換器.將外部輸入的數(shù)字信號(hào)轉(zhuǎn)換為模擬電壓信號(hào),作為bank的輸入信號(hào)參與CNN運(yùn)算.運(yùn)算完成后,再將輸出到外部的模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào).為了降低功耗和面積開(kāi)銷(xiāo),一組數(shù)模(模數(shù))轉(zhuǎn)換器可以由多個(gè)bank共享,分時(shí)使用.本設(shè)計(jì)中采用4個(gè)bank共享一組數(shù)模(模數(shù))轉(zhuǎn)換器的方案,即一個(gè)系統(tǒng)中含有4組數(shù)模(模數(shù))轉(zhuǎn)換器.

    3) 三輸入多路選擇器.在不同階段為bank選擇合適的輸入信號(hào).輸入信號(hào)來(lái)自于不同來(lái)源:①初始化過(guò)程中來(lái)自全局控制器的配置信號(hào);②外部輸入信號(hào)經(jīng)過(guò)數(shù)模轉(zhuǎn)換后產(chǎn)生的模擬信號(hào);③前一層的輸出信號(hào).

    4) 讀寫(xiě)模塊.為陣列中的憶阻器寫(xiě)入值,寫(xiě)入包括2個(gè)過(guò)程:①初始化階段.根據(jù)線下訓(xùn)練的結(jié)果為WSA寫(xiě)入權(quán)重矩陣對(duì)應(yīng)的阻值,為ASA寫(xiě)入最小阻值RON.②計(jì)算階段.根據(jù)WSA輸出的驅(qū)動(dòng)電壓為ASA實(shí)時(shí)地連續(xù)寫(xiě)入阻值.每個(gè)讀寫(xiě)模塊附帶一組尋址模塊(AD).

    5) 開(kāi)關(guān)模塊.為WSA選擇輸出計(jì)算結(jié)果到外部或繼續(xù)緩存數(shù)據(jù).開(kāi)關(guān)模塊的開(kāi)斷情況收到全局控制器的控制.

    3.2 PIM系統(tǒng)控制流程

    WSA可以被配置計(jì)算或存儲(chǔ)2種模式,而ASA只能在計(jì)算模式工作.在沒(méi)有計(jì)算請(qǐng)求時(shí),WSA全部保持存儲(chǔ)模式(memory mode).當(dāng)一個(gè)CNN應(yīng)用的計(jì)算請(qǐng)求命令到來(lái),系統(tǒng)將進(jìn)入計(jì)算模式(computing mode),整個(gè)過(guò)程分為初始化(initial phase)、計(jì)算求值(valuing phase)2個(gè)階段:

    1) 初始化階段

    ① 輸入神經(jīng)網(wǎng)絡(luò)配置參數(shù)并進(jìn)行配置

    分析應(yīng)用需求,給全局控制器輸入神經(jīng)網(wǎng)絡(luò)的參數(shù),包括:網(wǎng)絡(luò)的層數(shù)、各個(gè)層的種類(lèi)、每層的輸入和輸出數(shù)量等.根據(jù)參數(shù)對(duì)陣列進(jìn)行配置,分配好參與計(jì)算的bank,劃分出bank中參與計(jì)算的單元,按照順序配置成不同的層.對(duì)于卷積層或降采樣層,配置一個(gè)WSA和一個(gè)ASA結(jié)合;對(duì)于全連接層,只配置一個(gè)WSA,沒(méi)有ASA.設(shè)置好數(shù)據(jù)接口,令不參與計(jì)算的單元保持在存儲(chǔ)模式.

    ② 初始化所有陣列的憶阻值

    對(duì)于卷積層和全連接層的WSA,通過(guò)MUX的選擇,從外部經(jīng)過(guò)數(shù)模轉(zhuǎn)換輸入線下訓(xùn)練的權(quán)值給讀寫(xiě)模塊,然后按照錯(cuò)位展開(kāi)的方式排列,通過(guò)WR將阻值寫(xiě)入到對(duì)應(yīng)WSA的各個(gè)單元中.

    對(duì)于降采樣層的WSA,寫(xiě)入值為固定的某常數(shù),這里設(shè)定為憶阻值最大值和最小值的中位數(shù),即(RON+ROFF)/2.對(duì)于卷積層和降采樣層的ASA,寫(xiě)入值為憶阻值的最小值,即RON.

    2) 計(jì)算求值階段

    ① 從外部輸入計(jì)算數(shù)據(jù),經(jīng)過(guò)DAC轉(zhuǎn)換成模擬值,再通過(guò)MUX的選擇輸入給第1層對(duì)應(yīng)的WSA.根據(jù)神經(jīng)網(wǎng)絡(luò)應(yīng)用的不同,第1層有可能是卷積層,也有可能是降采樣層.在第1層的WSA中計(jì)算出所有部分和,實(shí)時(shí)地通過(guò)BL輸出給第1層的ASA的寫(xiě)電路,寫(xiě)電路對(duì)ASA進(jìn)行改寫(xiě),完成部分和的疊加.最后將計(jì)算結(jié)果通過(guò)ASA的BL輸出.

    ② 第1層計(jì)算完畢之后,將輸出數(shù)據(jù)通過(guò)MUX傳輸給下一層,進(jìn)行下一步計(jì)算.自此計(jì)算流程與第1步相同,直到所有卷積層和降采樣層計(jì)算完成.在計(jì)算電路中流動(dòng)的數(shù)據(jù)全部為模擬電流或電壓值,不需要經(jīng)過(guò)數(shù)模/模數(shù)轉(zhuǎn)換.

    ③ 所有卷積層和降采樣層計(jì)算完成之后,數(shù)據(jù)傳輸給全連接層.全連接層沒(méi)有ASA,在WSA中進(jìn)行乘累加即可得出計(jì)算結(jié)果.將計(jì)算結(jié)果經(jīng)過(guò)ADC傳輸?shù)酵獠?,?biāo)志著整個(gè)計(jì)算過(guò)程完成.

    ④ 計(jì)算完成之后,全局控制器將WSA恢復(fù)為存儲(chǔ)模式,將ASA中緩存的所有值釋放.

    4 精度提高的優(yōu)化策略

    模擬憶阻器的噪聲敏感度遠(yuǎn)遠(yuǎn)高于數(shù)字憶阻器,噪聲干擾會(huì)影響系統(tǒng)的準(zhǔn)確性和靈敏性.經(jīng)過(guò)分析,本系統(tǒng)噪聲來(lái)自于若干并列的噪聲來(lái)源,可以表示為由這4個(gè)主要元素構(gòu)成的表達(dá)式,如式(10)所示:

    Noise=E{θl,θm,θw,θo},

    (10)

    其中θl表示來(lái)自于漏電流(leakage)的噪聲,包括Sneak Path和MOS器件漏電等;θm表示來(lái)自于從權(quán)值到非線性憶阻值(memristance)的映射誤差;θw表示來(lái)自于寫(xiě)入過(guò)程(writing)的誤差;θo代表其他來(lái)源(other)的噪聲,包括但不限于器件噪聲和過(guò)程噪聲等.

    θl和θw可以在電路設(shè)計(jì)過(guò)程中采取措施來(lái)消除對(duì)電路的干擾影響.對(duì)于θl,本文中使用給憶阻器串聯(lián)選擇管構(gòu)成憶阻單元的方法加以消除,對(duì)于θm,θw和θo,分別采用權(quán)值映射的修正函數(shù)、讀寫(xiě)模塊的精度提升和噪聲感知的訓(xùn)練方法來(lái)消除.

    4.1 權(quán)值映射的修正函數(shù)

    θm來(lái)自于從權(quán)值到非線性憶阻值的映射誤差.在神經(jīng)網(wǎng)絡(luò)計(jì)算的初始化階段,要完成從訓(xùn)練好的權(quán)值到WSA中憶阻值的一一映射,并將其寫(xiě)入相應(yīng)的憶阻器中.一般采用的映射函數(shù)是線性函數(shù),也就是說(shuō),2個(gè)權(quán)值w1,w2的差值和與之對(duì)應(yīng)的2個(gè)憶阻值M1,M2成正比關(guān)系,即ΔMΔw是恒定常數(shù).然而,憶阻器物理器件是一個(gè)非線性器件,憶阻值M和流經(jīng)的電荷量Q呈非線性關(guān)系,2個(gè)憶阻值M1,M2的差值和與之對(duì)應(yīng)的2個(gè)電荷量Q1,Q2不成正比關(guān)系,即ΔMΔw不是恒定常數(shù).也就是說(shuō),在不同的初始條件下流過(guò)相同的電荷量時(shí),憶阻值的變化量不恒定.本文所用的憶阻器模型仿真曲線如圖8所示,其中圖8(a)是I-V曲線;圖8(b)是M-Q曲線,即憶阻器阻值和電荷量的關(guān)系曲線.

    Fig. 8 The memristor model simulation curve圖8 憶阻器模型仿真曲線

    如果采用傳統(tǒng)的線性映射方法,憶阻器器件的非線性成分就會(huì)導(dǎo)致在計(jì)算值累積的過(guò)程中產(chǎn)生誤差.實(shí)驗(yàn)表明,在一層輸入為28×28、卷積核大小為5×5、滑步為1的卷積層計(jì)算情況下,線性映射方法會(huì)造成的輸出值相對(duì)誤差大約為10%.在多層卷積神經(jīng)網(wǎng)絡(luò)中,這個(gè)誤差將會(huì)進(jìn)一步累積,如果不采取優(yōu)化措施,有可能會(huì)直接導(dǎo)致計(jì)算結(jié)果錯(cuò)誤.

    為了解決這一問(wèn)題,本文提出了一種新的修正映射方法.假設(shè)訓(xùn)練好的權(quán)值位于[Bl,Bh]之間,其中Bl表示權(quán)值的下邊界,是所有權(quán)值中的最小值;而B(niǎo)h表示權(quán)值的上邊界,是所有權(quán)值中的最大值.確定好范圍之后,將其與位于[RON,ROFF]之間的憶阻值通過(guò)修正的映射函數(shù)進(jìn)行映射.

    Fig. 9 Mapping function correction curve圖9 修正映射函數(shù)曲線

    修正映射函數(shù)是通過(guò)將原本的線性映射函數(shù)和非線性的M-Q曲線相除,再利用Matlab進(jìn)行多項(xiàng)式擬合得到.經(jīng)過(guò)試驗(yàn),當(dāng)多項(xiàng)式的次數(shù)為9時(shí),能夠在[RON,ROFF]取值范圍內(nèi)對(duì)本文所使用的憶阻器模型取得較貼近的擬合效果.該修正映射函數(shù)為

    (11)

    其中,M為自變量,代表憶阻值;f(M)為因變量,代表修正映射函數(shù);p0~p9為10個(gè)常數(shù),是通過(guò)Matlab擬合得到的系數(shù).修正映射函數(shù)的曲線圖如圖9所示:

    采用這個(gè)修正擬合函數(shù),可以消除非線性因素帶來(lái)的誤差,將識(shí)別準(zhǔn)確度提高7%左右.

    4.2 讀寫(xiě)模塊的精度提升

    在憶阻器陣列中,大量的導(dǎo)線WL/BL平行放置,會(huì)造成寄生電容的引入.寄生電容在憶阻器的寫(xiě)入過(guò)程中會(huì)被寫(xiě)驅(qū)動(dòng)充電,發(fā)生電荷共享,消耗一部分寫(xiě)驅(qū)動(dòng)電荷,造成寫(xiě)干擾.由于大規(guī)模陣列中的連接線長(zhǎng)度大、數(shù)量多,寄生電容的值較大,造成的干擾也更加嚴(yán)重.根據(jù)文獻(xiàn)[15]中的分析,寫(xiě)干擾的程度與位線寄生電容CBL成正比,與寫(xiě)電流ISET成反比,如式(12)所示.也就是說(shuō),陣列尺寸的增大或者寫(xiě)電流的減小都會(huì)增大寫(xiě)干擾,這與高密度、低功耗的目標(biāo)相悖.

    (12)

    本文通過(guò)對(duì)寄生電容進(jìn)行預(yù)充電的策略消除寄生電容的影響.帶預(yù)充電電路的寫(xiě)電路如圖10所示,在文獻(xiàn)[16]的寫(xiě)電路基礎(chǔ)上增加了預(yù)充電單元.圖10中Spre是預(yù)充電控制開(kāi)關(guān),Ipre是預(yù)充電電流源.在寫(xiě)操作前添加預(yù)充電階段,將開(kāi)關(guān)Spre接Port1,給寄生電容施加一個(gè)短時(shí)間的預(yù)充電電流.預(yù)充電電流的持續(xù)時(shí)間和幅值選擇基于陣列的大小和寫(xiě)入電壓的值.預(yù)充電完成后,將開(kāi)關(guān)Spre接Port2進(jìn)行憶阻器的脈沖寫(xiě)操作.

    Fig. 10 The write circuit with feedback and precharge circuit圖10 帶反饋回路和預(yù)充電電路的寫(xiě)電路

    圖11所示的是使用預(yù)充電策略的寫(xiě)電路仿真結(jié)果,其相對(duì)誤差為1.36%.

    Fig. 11 The write process simulation results圖11 寫(xiě)入過(guò)程仿真結(jié)果

    4.3 噪聲感知的訓(xùn)練方法

    θo是來(lái)自其他來(lái)源的噪聲,包括但不限于器件電子噪聲和過(guò)程噪聲等.器件電子噪聲來(lái)自于電路器件本身,包括熱噪聲和閃爍噪聲等;過(guò)程噪聲來(lái)自于電路工作中的各種隨機(jī)變化.θo成分都是隨機(jī)過(guò)程量,通常用統(tǒng)計(jì)模型來(lái)表示,并且,成分難以通過(guò)優(yōu)化電路設(shè)計(jì)的方法來(lái)抑制消除.

    本文提出了一種噪聲感知的訓(xùn)練方法,能夠?qū)⑦@部分無(wú)法靠?jī)?yōu)化電路消除的噪聲成分在線下訓(xùn)練時(shí)抵消掉.文獻(xiàn)[17]中提供了MOS晶體管的噪聲模型,文獻(xiàn)[18]中提供了憶阻器的噪聲模型,過(guò)程噪聲可以使用正態(tài)分布來(lái)建立模型.確立了噪聲的統(tǒng)計(jì)模型之后,需要將每一個(gè)權(quán)重經(jīng)過(guò)的電路路徑上的所有噪聲分量進(jìn)行疊加,詳細(xì)的公式推導(dǎo)請(qǐng)參閱參考文獻(xiàn)[17-18].在進(jìn)行線下訓(xùn)練時(shí),根據(jù)神經(jīng)網(wǎng)絡(luò)應(yīng)用的規(guī)模和深度確定模型參數(shù),將這些噪聲分量模型注入到原本的訓(xùn)練過(guò)程中,使得權(quán)值得到調(diào)整.通過(guò)這種方式,能夠?qū)⒆R(shí)別準(zhǔn)確率提高3%左右.

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

    5.1 仿真平臺(tái)與配置

    電路的仿真平臺(tái)為HSPICE,使用到的基本電路元件有:電阻、電容、NMOS晶體管、PMOS晶體管和模擬憶阻器等.

    電阻和電容使用HSPICE基本元件庫(kù)中的模型;NMOS晶體管和PMOS晶體管使用文獻(xiàn)[19]中的0.13um工藝模型,該工藝庫(kù)中有2種規(guī)格的MOS管,分別為驅(qū)動(dòng)電壓1.5 V和驅(qū)動(dòng)電壓3.3 V,本文選擇3.3 V規(guī)格.

    憶阻器使用文獻(xiàn)[20]的Spice模型,將其參數(shù)按照表2設(shè)置.其中,ROFF代表最大阻值,RON代表最小阻值,RINT代表初始阻值,D代表憶阻器薄膜厚度,μv代表遷移速度,p代表窗口函數(shù)的參數(shù).

    Table 2 Memristor Parameter Setting表2 憶阻器參數(shù)設(shè)置

    5.2 仿真基準(zhǔn)的選擇

    本文選擇了3類(lèi)6種基準(zhǔn),包括2種不同規(guī)模的28×28輸入卷積神經(jīng)網(wǎng)絡(luò)、3種不同規(guī)模的多層感知器(MLP)和1種VGG-19網(wǎng)絡(luò),前2類(lèi)被廣泛運(yùn)用于MNIST手寫(xiě)體識(shí)別,VGG-19運(yùn)用于RGB圖像識(shí)別.表3~表5分別給出了仿真基準(zhǔn)的所有參數(shù)[21].

    多層感知器是神經(jīng)網(wǎng)絡(luò)中較簡(jiǎn)單的一種,含有一個(gè)輸入層、一個(gè)輸出層和若干個(gè)隱藏層.隱藏層進(jìn)行的是乘累加運(yùn)算,比起卷積神經(jīng)網(wǎng)絡(luò)往往深度和復(fù)雜度較低.事實(shí)上,卷積神經(jīng)網(wǎng)絡(luò)是多層感知器的一種特殊化,是將多層感知器中的隱藏層特定為卷積和降采樣操作的結(jié)果.VGG-19網(wǎng)絡(luò)是一種規(guī)模較大的多通道神經(jīng)網(wǎng)絡(luò).神經(jīng)網(wǎng)絡(luò)的規(guī)模大小和深度會(huì)直接影響本文所設(shè)計(jì)的電路結(jié)構(gòu)的加速和節(jié)省能耗的效果.因此這里選擇多種不同規(guī)模和深度的神經(jīng)網(wǎng)絡(luò),以便分析各項(xiàng)性能與神經(jīng)網(wǎng)絡(luò)尺寸和深度的關(guān)系.

    Table 3 Two Kinds of CNN Benchmarks Parameters表3 2種卷積神經(jīng)網(wǎng)絡(luò)仿真基準(zhǔn)參數(shù)

    Table 4 Three Kinds of MLP Benchmarks Parameters表4 3種多層感知器仿真基準(zhǔn)參數(shù)

    Table 5 VGG-19 Benchmarks Parameters表5 VGG-19網(wǎng)絡(luò)仿真基準(zhǔn)參數(shù)

    5.3 仿真結(jié)果與評(píng)估分析

    文獻(xiàn)[3]中提出了一種基于數(shù)字憶阻器的神經(jīng)網(wǎng)絡(luò)PIM結(jié)構(gòu),與本文相比主要有以下3點(diǎn)不同:

    1) 使用的憶阻器模型不同.文獻(xiàn)[3]中的所有憶阻器都采用數(shù)字憶阻器模型,這對(duì)數(shù)模/模數(shù)轉(zhuǎn)換器提出了更高要求,引入了大量轉(zhuǎn)換單元,進(jìn)而造成大量的功耗和面積消耗.而本文中的設(shè)計(jì)采用模擬憶阻器模型,只在bank的輸入輸出接口需要使用數(shù)模/模數(shù)轉(zhuǎn)換單元,可以節(jié)省數(shù)模/模數(shù)轉(zhuǎn)換帶來(lái)的額外消耗.同時(shí),數(shù)字憶阻器的數(shù)據(jù)密度低于模擬憶阻器,文獻(xiàn)[3]中使用8個(gè)憶阻器存儲(chǔ)一個(gè)權(quán)重?cái)?shù)據(jù),每讀寫(xiě)一次數(shù)據(jù)需要對(duì)8個(gè)憶阻單元進(jìn)行讀寫(xiě),而本文的設(shè)計(jì)使用1個(gè)憶阻器存儲(chǔ)一個(gè)權(quán)重?cái)?shù)據(jù),節(jié)省了7/8的存儲(chǔ)面積消耗和讀寫(xiě)功耗.

    2) 從卷積神經(jīng)網(wǎng)絡(luò)到陣列的映射方法不同.本文提出的設(shè)計(jì)將一次卷積運(yùn)算拆解為橫向和縱向2個(gè)方向,在2個(gè)陣列中分別計(jì)算,并且將權(quán)重陣列展開(kāi)錯(cuò)位放置,使得計(jì)算得以加速.

    3) 噪聲敏感度不同.文獻(xiàn)[3]中的數(shù)字憶阻器對(duì)噪聲敏感度較低,噪聲需要積累一定量才會(huì)使得憶阻器的狀態(tài)發(fā)生錯(cuò)誤改變.而本文中的設(shè)計(jì)采用模擬憶阻器,對(duì)噪聲敏感度高,少量的噪聲積累就可能發(fā)生錯(cuò)誤的結(jié)果,因此第4節(jié)中提出了一些適應(yīng)于模擬電路的噪聲消除方法.

    下面將利用HSPICE平臺(tái),根據(jù)6種不同的Benchmark分別搭建電路系統(tǒng),從圖像識(shí)別準(zhǔn)確率、能耗和性能這3個(gè)方面分別對(duì)以上本文和文獻(xiàn)[3]中的設(shè)計(jì)進(jìn)行仿真并比較和分析仿真結(jié)果.

    圖12為圖像識(shí)別準(zhǔn)確率的仿真結(jié)果.5組柱狀圖中的每一組代表一種神經(jīng)網(wǎng)絡(luò)仿真基準(zhǔn),假設(shè)使用Matlab進(jìn)行浮點(diǎn)運(yùn)算所得的該神經(jīng)網(wǎng)絡(luò)識(shí)別準(zhǔn)確率為單位1.每組的柱體1(Before Adjust)代表使用本文設(shè)計(jì)的系統(tǒng),但不采用任何噪聲消除措施的準(zhǔn)確率;柱體2(After Adjust)代表使用本文設(shè)計(jì)的系統(tǒng),采用第4節(jié)所有噪聲消除措施的準(zhǔn)確率;柱體3(Design of Ref[3])代表文獻(xiàn)[3]中的數(shù)字憶阻器系統(tǒng)的準(zhǔn)確率.折線上的點(diǎn)(Accuracy Improvement)代表經(jīng)過(guò)噪聲消除措施后準(zhǔn)確率的提高量.

    Fig. 12 Simulation results of recognition accuracy圖12 圖像識(shí)別準(zhǔn)確率仿真結(jié)果

    由圖12的仿真結(jié)果可以看出:

    1) 文獻(xiàn)[3]中的數(shù)字憶阻器系統(tǒng)的準(zhǔn)確率在95%左右,文本所設(shè)計(jì)的模擬系統(tǒng)如果不使用任何噪聲消除措施,將會(huì)比數(shù)字系統(tǒng)降低8%左右的準(zhǔn)確率,這是由于模擬電路對(duì)噪聲的高度敏感性.而采用了第4節(jié)介紹的所有噪聲消除措施之后,準(zhǔn)確率可以比噪聲消除前提高10%左右,比數(shù)字系統(tǒng)的準(zhǔn)確度略高一些,是可以接受的識(shí)別準(zhǔn)確率.

    2) 每組測(cè)試基準(zhǔn)中,本文設(shè)計(jì)的系統(tǒng)與數(shù)字系統(tǒng)的準(zhǔn)確率差異相差不大,與測(cè)試基準(zhǔn)的規(guī)模、深度并沒(méi)有明顯的關(guān)系.

    圖13為能耗節(jié)省量的仿真結(jié)果.6組柱狀圖中的每一組代表1種神經(jīng)網(wǎng)絡(luò)仿真基準(zhǔn),每組中柱體1(Design of Ref[3])代表文獻(xiàn)[3]中的數(shù)字憶阻器系統(tǒng)的能耗;柱體2(Proposed Design)代表本文設(shè)計(jì)的系統(tǒng)的能耗.折線上的點(diǎn)(Energy Saving)代表本文設(shè)計(jì)的系統(tǒng)相對(duì)于數(shù)字系統(tǒng)的能耗節(jié)省比.

    Fig. 13 Simulation results of energy saving圖13 能耗優(yōu)化仿真結(jié)果

    正如1.2節(jié)所分析的,本文設(shè)計(jì)的系統(tǒng)擁有比數(shù)字系統(tǒng)更低的能耗,節(jié)省的能耗主要包括:1)在數(shù)模/模數(shù)轉(zhuǎn)換模塊上的額外功耗;2)在進(jìn)行多位讀寫(xiě)時(shí)消耗的額外能耗.

    從圖13的仿真結(jié)果可以看出:

    1) 對(duì)于6層的CNN,如CNN-1和CNN-2,本文設(shè)計(jì)的系統(tǒng)能夠節(jié)省超過(guò)95%的能耗.

    2) 對(duì)于MLP,本文設(shè)計(jì)的系統(tǒng)能夠節(jié)省超過(guò)24%的能耗.

    3)對(duì)于VGG-19,本文設(shè)計(jì)的系統(tǒng)能夠節(jié)省40%的能耗.

    4) 綜合上面3條結(jié)論,可以發(fā)現(xiàn)當(dāng)神經(jīng)網(wǎng)絡(luò)的規(guī)模和深度增加時(shí),能耗的節(jié)省量也隨之增加.這是因?yàn)樵诖笮途W(wǎng)絡(luò)中具有更多數(shù)模/模數(shù)轉(zhuǎn)換模塊,也需要更多次數(shù)的多位讀寫(xiě),能夠被優(yōu)化的能耗占比隨著規(guī)模和深度增加而快速增長(zhǎng).而VGG-19的網(wǎng)絡(luò)結(jié)構(gòu)較為特殊,多個(gè)卷積層相連,而降采樣層數(shù)量少,因此取得的效果低于CNN.

    Fig. 14 Simulation results of performance improvement圖14 性能提升仿真結(jié)果

    圖14為性能提升量的仿真結(jié)果.5組柱狀圖中的每一組代表一種神經(jīng)網(wǎng)絡(luò)仿真基準(zhǔn).每組中的柱體1(Design of Ref[3])代表文獻(xiàn)[3]中的數(shù)字憶阻器系統(tǒng)的執(zhí)行時(shí)間;柱體2(Proposed Design)代表本文設(shè)計(jì)的電路的執(zhí)行時(shí)間.折線上的點(diǎn)(Speedup)代表本文設(shè)計(jì)的系統(tǒng)相對(duì)于數(shù)字系統(tǒng)的性能提升比.

    性能提升主要得益于WSA中將權(quán)值展開(kāi)錯(cuò)位放置的策略.假設(shè)輸入圖大小是n×n,卷積核的大小是k×k,滑步是l,該策略能夠?qū)⒃拘枰?n-k+l)l×k個(gè)周期的一層卷積層運(yùn)算縮減到n個(gè)周期內(nèi).

    從圖14的仿真結(jié)果可以看出:

    1) 對(duì)于6層的CNN,如CNN-1和CNN-2,本文設(shè)計(jì)的系統(tǒng)能夠節(jié)省超過(guò)90%的運(yùn)行時(shí)間.

    2) 對(duì)于MLP,本文設(shè)計(jì)的系統(tǒng)能夠節(jié)省22%~47%的運(yùn)行時(shí)間.

    3) 對(duì)于VGG-19,本文設(shè)計(jì)的系統(tǒng)能夠節(jié)省超過(guò)98%的運(yùn)行時(shí)間.

    4) 綜合上面3條結(jié)論,可以發(fā)現(xiàn)當(dāng)神經(jīng)網(wǎng)絡(luò)的規(guī)模和深度增加時(shí),運(yùn)行時(shí)間的節(jié)省量也隨之增加.這是因?yàn)楫?dāng)層的規(guī)模越大時(shí),每層節(jié)省的周期數(shù)占比越大;同時(shí),當(dāng)層的數(shù)量越多時(shí),節(jié)省的周期數(shù)累積占比越多.

    6 結(jié) 論

    此前,基于憶阻器的神經(jīng)形態(tài)近似計(jì)算的PIM結(jié)構(gòu)中存在面積和能耗浪費(fèi),本文設(shè)計(jì)了新型的基于憶阻器的PIM結(jié)構(gòu)實(shí)現(xiàn)深度卷積神經(jīng)網(wǎng)絡(luò)近似計(jì)算,選擇模擬憶阻器來(lái)減少數(shù)模/模數(shù)轉(zhuǎn)換次數(shù),改變憶阻器陣列的組織方式來(lái)增加數(shù)據(jù)并行性,并針對(duì)該結(jié)構(gòu)中可能存在的精度損失給出了相應(yīng)的優(yōu)化策略.本文選取6種不同規(guī)模和深度的神經(jīng)網(wǎng)絡(luò),在HSPICE平臺(tái)上進(jìn)行了仿真.實(shí)驗(yàn)結(jié)果表明,本文所設(shè)計(jì)的結(jié)構(gòu)在準(zhǔn)確度不下降的前提下,在能耗和執(zhí)行時(shí)間上都有明顯優(yōu)勢(shì).

    [1]Hamdioui S, Xie L, Nguyen H A D, et al. Memristor based computation-in-memory architecture for data-intensive applications[C] //Proc of the 2015 Design, Automation & Test in Europe Conf & Exhibition (DATE’15). Piscataway, NJ: IEEE, 2015: 1718-1725

    [2]Jo S H, Chang T, Ebong I, et al. Nanoscale memristor device as synapse in neuromorphic systems[J]. Nano Letters, 2010, 10(4): 1297-1301

    [3]Chi Ping, Li Shuangchen, Xu Cong, et al. PRIME: A novel processing-in-memory architecture for neural network computation in ReRAM-based main memory[C] //Proc of the 43rd Int Symp on Computer Architecture. Piscataway, NJ: IEEE, 2016: 27-39

    [4]Liu Chenchen, Yan Bonan, Yang Chaofei, et al. A spiking neuromorphic design with resistive crossbar[C] //Proc of the 52nd ACM/EDAC/IEEE Design Automation Conf. New York: ACM, 2015: 1-6. Article No.14, DOI:10.1145/2744769.2744783

    [5]Duan Shukai, Hu Xiaofang, Dong Zhekang, et al. Memristor-based cellular nonlinear/neural network: Design, analysis, and applications[J]. IEEE Trans on Neural Networks & Learning Systems, 2015, 26(6): 1202-1213

    [6]Krizhevsky A, Sutskever I, Hinton G E. ImageNet classification with deep convolutional neural networks[C] //Proc of the 25th Int Conf on Neural Information Processing Systems. New York: Curran Associates Inc, 2012: 1097-1105

    [7]Zhang Lei, Zhang Yi. Big data analysis by infinite deep neural networks[J]. Journal of Computer Research and Development, 2016, 53(1): 68-79 (in Chinese)

    (張蕾, 章毅. 大數(shù)據(jù)分析的無(wú)限深度神經(jīng)網(wǎng)絡(luò)方法[J]. 計(jì)算機(jī)研究與發(fā)展, 2016, 53(1): 68-79)

    [8]Williams R S. How we found the missing memristor[J]. IEEE Spectrum, 2008, 45(12): 28-35

    [9]Tang Tianqi, Xia Lixue, Li Boxun, et al. Spiking neural network with RRAM: Can we use it for real-world application?[C] //Proc of 2015 Design, Automation & Test in Europe Conf & Exhibition. Piscataway, NJ: IEEE, 2015: 860-865

    [10]Wang Ying, Zhang Lei, Han Yinhe, et al. ProPRAM: Exploiting the transparent logic resources in non-volatile memory for near data computing[C] //Proc of the 52nd IEEE/ACM Design, Automation Conf. Piscataway, NJ: IEEE, 2015: 1-6. Article No.47, DOI: 10.1145/2744769.2744897

    [11]Wang Ying, Xu Jie, Han Yinhe, et al. Deep Burning: Automatic generation of FPGA-based learning accelerators for the neural network family[C] //Proc of the 53rd IEEE/ACM Design, Automation Conf. Piscataway, NJ: IEEE, 2016: 1-6. Article No.110, DOI: 10.1145/2897937.2898002

    [12]Wang Ying, Li Huawei, Li Xiaowei, Rearchitecting the on-chip memory subsystem of machine learning accelerator for embedded devices[C] //Proc of 2016 IEEE/ACM Int Conf on Computer Aided Design. Piscataway, NJ: IEEE, 2016: 1-6. Article No.13, DOI: 10.1145/2966986.2967068

    [13]Lécun Y, Bottou L, Bengio Y, et al. Gradient-based learning applied to document recognition[J]. Proceedings of the IEEE, 1998, 86(11): 2278-2324

    [14]Manem H, Rose G, He Xiaoli, et al. Design considerations for variation tolerant multilevel CMOS/NANO memristor memory[C] //Proc of ACM Great Lakes Symp on VlSI 2009. New York: ACM, 2010: 287-292

    [15]Byeon D S, Yoon C W, Park H K, et al. Disturbance-suppressed ReRAM write algorithm for high-capacity and high-performance memory[C] //Proc of the 14th Non-Volatile Memory Technology Symp. Piscataway, NJ: IEEE, 2014: 1-4. DOI: 10.1109/NVMTS.2014.7060837

    [16]Huang G M, Ho Yenpo, Li Peng. Memristor system properties and its design applications to circuits such as nonvolatile memristor memories[C] //Proc of 2010 Int Conf on Communications, Circuits and Systems. Piscataway, NJ: IEEE, 2010: 805-810

    [17]Archanaa M, Balamurugan K. Analysis of thermal noise and noise reduction in CMOS device[C] //Proc of 2014 Int Conf on Green Computing Communication and Electrical Engineering. Piscataway, NJ: IEEE, 2014: 1-5. DOI: 10.1109/ICGCCEE.2014.6922246

    [18]Georgiou P S, Koymen I, Drakakis E M. Noise properties of ideal memristors[C] //Proc of 2015 IEEE Int Symp on Circuits and Systems. Piscataway, NJ: IEEE, 2015: 1146-1149

    [19]Yang M T, Ho P P C, Lin C K, et al. BSIM4 high-frequency model verification for 0. 13 μm RF-CMOS technology[C] //Proc of 2004 IEEE MTT-S Int Microwave Symp Digest. Piscataway, NJ: IEEE, 2004: 1049-1052

    [20]Biolek Z, Biolek D, Biolkova V. SPICE model of memristor with nonlinear dopant drift[J]. Radioengineering, 2009, 18(2): 210-214

    [21]Kussul E M, Baidyk T N, Nd W D, et al. Permutation coding technique for image recognition systems[J]. IEEE Trans on Neural Networks, 2006, 17(6): 1566-1579

    Li Chuxi, born in 1991. PhD candidate of Northwestern Polytechnical University. Student member of CCF. Her main research interests include computer architecture and neuromorphic architecture.

    Fan Xiaoya, born in 1963. PhD, professor, PhD supervisor. Senior member of CCF. His main research interests include computer architecture, machine learning, neuromorphic architecture and very large scale integrated circuit design (VLSI).

    Zhao Changhe, born in 1994. Master candidate of Northwestern Polytechnical University. His main research interests include computer architecture and neuromorphic architecture.

    Zhang Shengbing, born in 1968. PhD, professor, PhD supervisor. Senior member of CCF. His main research interests include computer architecture, machine learning, neuromorphic architecture and microelectronic circuit design.

    Wang Danghui, born in 1975. PhD, associate professor. Member of CCF. His main research interests include computer architecture, emerging memory, neuro-morphic architecture and very large scale integrated circuit design (VLSI).

    An Jianfeng, born in 1977. PhD, associate professor. Member of CCF. His main research interests include computer architecture, advanced micro architecture and reconfigurable computing.

    Zhang Meng, born in 1978. PhD, assistant professor. Member of CCF. His main research interests include computer archi-tecture, machine learning, neuromorphic architecture and very large scale integrated circuit design (VLSI).

    A Memristor-Based Processing -in -Memory Architecture for Deep Convolutional Neural Networks Approximate Computation

    Li Chuxi1, Fan Xiaoya1,2, Zhao Changhe1, Zhang Shengbing1,2, Wang Danghui1,2, An Jianfeng1,2, and Zhang Meng1,2

    1(SchoolofComputerScience,NorthwesternPolytechnicalUniversity,Xi’an710129)2(EngineeringandResearchCenterofEmbeddedSystemsIntegration(NorthwesternPolytechnicalUniversity),MinistryofEducation,Xi’an710129)

    Memristor is one of the most promising candidates to build processing-in-memory (PIM) structures. The memristor-based PIM with digital or multi-level memristors has been proposed for neuromorphic computing. The essential frequent AD/DA converting and intermediate memory in these structures leads to significant energy and area overhead. To address this issue, a memristor-based PIM architecture for deep convolutional neural network (CNN) is proposed in this work. It exploits the analog architecture to eliminate data converting in neuron layer banks, each of which consists of two special modules named weight sub-arrays (WSAs) and accumulate sub-arrays (ASAs). The partial sums of neuron inputs are generated in WSAs concurrently and are written into ASAs continuously, in which the results are computed finally. The noise in proposed analog style architecture is analyzed quantitatively in both model and circuit levels, and a synthetic solution is presented to suppress the noise, which calibrates the non-linear distortion of weight with a corrective function, pre-charges the write module to reduce the parasitic effects, and eliminates noise with a modified noise-aware training. The proposed design has been evaluated by varying neural network benchmarks, in which the results show that the energy efficiency and performance can both be improved about 90% in specific neural network without accuracy losses compared with digital solutions.

    memristor; processing-in-memory (PIM); convolutional neural network (CNN); approximate computation; analog memory

    2017-02-27;

    2017-04-14

    國(guó)家自然科學(xué)基金項(xiàng)目(61472322);中央高校基本科研業(yè)務(wù)費(fèi)專(zhuān)項(xiàng)資金項(xiàng)目(3102015BJ(Ⅱ)ZS018) This work was supported by the National Natural Science Foundation of China (61472322), the Fundamental Research Funds for the Central Universities (3102015BJ(Ⅱ)ZS018).

    王黨輝(wangdh@nwpu.edu.cn)

    TP303

    猜你喜歡
    阻器阻值運(yùn)算
    重視運(yùn)算與推理,解決數(shù)列求和題
    四線制阻值檢測(cè)電路實(shí)驗(yàn)研究
    有趣的運(yùn)算
    勵(lì)磁線圈對(duì)插入式電磁流量計(jì)的影響
    低電阻碳膜板制作及其阻值的優(yōu)化
    對(duì)一道電學(xué)實(shí)驗(yàn)題的思考
    “整式的乘法與因式分解”知識(shí)歸納
    真實(shí)憶阻器數(shù)學(xué)建模以及電學(xué)仿真
    電子制作(2017年24期)2017-02-02 07:14:25
    撥云去“誤”學(xué)乘除運(yùn)算
    具有脈沖的憶阻器神經(jīng)網(wǎng)絡(luò)周期解的穩(wěn)定性
    精品国产国语对白av| 国产午夜精品久久久久久| 国产高清有码在线观看视频 | 欧美日韩福利视频一区二区| 观看免费一级毛片| av免费在线观看网站| 国产亚洲精品第一综合不卡| 露出奶头的视频| 午夜福利视频1000在线观看| 久久热在线av| 亚洲五月色婷婷综合| 国产男靠女视频免费网站| 99在线人妻在线中文字幕| 最近最新中文字幕大全免费视频| www国产在线视频色| 免费一级毛片在线播放高清视频| 日韩免费av在线播放| 免费电影在线观看免费观看| 18禁裸乳无遮挡免费网站照片 | 亚洲精品在线观看二区| 日韩视频一区二区在线观看| 桃色一区二区三区在线观看| 久久精品国产综合久久久| 欧美亚洲日本最大视频资源| 亚洲国产欧洲综合997久久, | 亚洲专区中文字幕在线| 国产黄a三级三级三级人| 一本久久中文字幕| 久久久久久久久免费视频了| 色哟哟哟哟哟哟| 午夜免费观看网址| 两性夫妻黄色片| 国产精品永久免费网站| 亚洲三区欧美一区| 国产精品二区激情视频| av福利片在线| 黄色毛片三级朝国网站| 成人国产一区最新在线观看| 亚洲无线在线观看| 午夜激情福利司机影院| 黑人操中国人逼视频| 无限看片的www在线观看| 国产精品影院久久| 国内毛片毛片毛片毛片毛片| 亚洲欧美精品综合久久99| 女人爽到高潮嗷嗷叫在线视频| 99国产极品粉嫩在线观看| 日韩三级视频一区二区三区| 老司机午夜十八禁免费视频| 久久精品国产综合久久久| 日本五十路高清| 国产亚洲欧美在线一区二区| 国产精品美女特级片免费视频播放器 | 日本免费一区二区三区高清不卡| 亚洲精品粉嫩美女一区| 一进一出抽搐动态| 女人爽到高潮嗷嗷叫在线视频| 国产男靠女视频免费网站| 99国产综合亚洲精品| 女警被强在线播放| 国产熟女xx| 伊人久久大香线蕉亚洲五| 精品乱码久久久久久99久播| 国产极品粉嫩免费观看在线| 亚洲自偷自拍图片 自拍| 大型黄色视频在线免费观看| 久久中文字幕一级| 午夜久久久在线观看| 免费无遮挡裸体视频| 精品人妻1区二区| 国产一区二区三区在线臀色熟女| 午夜激情福利司机影院| 色婷婷久久久亚洲欧美| 久久中文看片网| 91国产中文字幕| 人妻丰满熟妇av一区二区三区| 妹子高潮喷水视频| 国产精品九九99| 女警被强在线播放| 国产伦一二天堂av在线观看| 亚洲欧美日韩无卡精品| av超薄肉色丝袜交足视频| 色尼玛亚洲综合影院| 日本成人三级电影网站| 黄色视频不卡| 亚洲成a人片在线一区二区| 女人爽到高潮嗷嗷叫在线视频| 亚洲欧美日韩无卡精品| 18禁裸乳无遮挡免费网站照片 | 亚洲片人在线观看| 真人一进一出gif抽搐免费| 国内精品久久久久精免费| 丝袜在线中文字幕| 香蕉丝袜av| 国产成人欧美在线观看| 女同久久另类99精品国产91| 亚洲熟妇熟女久久| 免费看日本二区| 成年版毛片免费区| 变态另类丝袜制服| 亚洲欧美精品综合久久99| 成年版毛片免费区| 99在线人妻在线中文字幕| 国产精品美女特级片免费视频播放器 | av福利片在线| 欧美精品啪啪一区二区三区| 亚洲av美国av| 非洲黑人性xxxx精品又粗又长| 亚洲国产日韩欧美精品在线观看 | 制服人妻中文乱码| 不卡一级毛片| 国产亚洲精品久久久久5区| 特大巨黑吊av在线直播 | 黄片大片在线免费观看| 精品国产国语对白av| 国产三级在线视频| 久久天躁狠狠躁夜夜2o2o| 国产精品一区二区免费欧美| 国产精品影院久久| 性色av乱码一区二区三区2| 精品日产1卡2卡| 免费无遮挡裸体视频| 国产精品,欧美在线| 欧美乱妇无乱码| 成人欧美大片| 美女午夜性视频免费| 免费人成视频x8x8入口观看| 欧美一级a爱片免费观看看 | 免费观看人在逋| 欧美日韩亚洲国产一区二区在线观看| 黄网站色视频无遮挡免费观看| 十八禁网站免费在线| 三级毛片av免费| 欧美乱色亚洲激情| 久久精品aⅴ一区二区三区四区| 麻豆av在线久日| 黄色a级毛片大全视频| 久久精品人妻少妇| 久久人妻福利社区极品人妻图片| 国产片内射在线| 亚洲 欧美 日韩 在线 免费| 国内毛片毛片毛片毛片毛片| 日本一本二区三区精品| 亚洲国产毛片av蜜桃av| 亚洲五月天丁香| 久久久久久久久免费视频了| 亚洲国产精品999在线| a级毛片在线看网站| 91老司机精品| 日韩成人在线观看一区二区三区| 禁无遮挡网站| 搡老熟女国产l中国老女人| www日本黄色视频网| 两个人视频免费观看高清| 午夜久久久在线观看| 国产一区二区三区视频了| 久久久国产精品麻豆| 首页视频小说图片口味搜索| 欧美日韩瑟瑟在线播放| 免费av毛片视频| 好男人在线观看高清免费视频 | 69av精品久久久久久| 国产又黄又爽又无遮挡在线| 亚洲自拍偷在线| 麻豆av在线久日| 看免费av毛片| 啦啦啦免费观看视频1| 免费搜索国产男女视频| 中文字幕高清在线视频| 一区福利在线观看| 免费看十八禁软件| 国产1区2区3区精品| 女人高潮潮喷娇喘18禁视频| 国产色视频综合| 亚洲av成人一区二区三| 香蕉av资源在线| 麻豆成人午夜福利视频| 欧美丝袜亚洲另类 | 香蕉久久夜色| 十八禁网站免费在线| 久久久国产成人精品二区| 国语自产精品视频在线第100页| 午夜免费观看网址| 99久久国产精品久久久| 国产视频一区二区在线看| 色综合站精品国产| 在线播放国产精品三级| 亚洲av成人不卡在线观看播放网| 一区二区三区精品91| 国产亚洲精品av在线| 国产蜜桃级精品一区二区三区| 国产熟女午夜一区二区三区| 精品福利观看| 99在线人妻在线中文字幕| 国产v大片淫在线免费观看| 成人特级黄色片久久久久久久| 日韩视频一区二区在线观看| 国内精品久久久久精免费| 亚洲国产毛片av蜜桃av| bbb黄色大片| 欧美日韩精品网址| 黑丝袜美女国产一区| 成人18禁在线播放| 成人三级黄色视频| 免费在线观看黄色视频的| 又黄又爽又免费观看的视频| 国产精品自产拍在线观看55亚洲| 黄色a级毛片大全视频| 亚洲欧美日韩无卡精品| 成年人黄色毛片网站| 香蕉久久夜色| 国产黄a三级三级三级人| 校园春色视频在线观看| 欧美日本亚洲视频在线播放| 亚洲一卡2卡3卡4卡5卡精品中文| 一二三四在线观看免费中文在| 亚洲av日韩精品久久久久久密| √禁漫天堂资源中文www| 久久久久久人人人人人| 国产成人影院久久av| 亚洲国产欧美网| 亚洲激情在线av| 欧美色欧美亚洲另类二区| 熟女电影av网| 亚洲aⅴ乱码一区二区在线播放 | 伊人久久大香线蕉亚洲五| 最近最新免费中文字幕在线| 国产伦在线观看视频一区| 国产一卡二卡三卡精品| 精品久久蜜臀av无| 亚洲全国av大片| 日本 欧美在线| 波多野结衣巨乳人妻| 久久精品国产亚洲av香蕉五月| 人人妻人人澡人人看| 国产精品一区二区精品视频观看| 精品免费久久久久久久清纯| 国产亚洲精品av在线| 亚洲av美国av| 精品欧美一区二区三区在线| 精品人妻1区二区| 日韩高清综合在线| av电影中文网址| 国产私拍福利视频在线观看| 亚洲av电影不卡..在线观看| 18禁观看日本| 久久性视频一级片| 少妇 在线观看| 丝袜美腿诱惑在线| 亚洲av中文字字幕乱码综合 | 可以在线观看毛片的网站| 一区福利在线观看| 两人在一起打扑克的视频| 妹子高潮喷水视频| 1024视频免费在线观看| 老熟妇乱子伦视频在线观看| 叶爱在线成人免费视频播放| 日日爽夜夜爽网站| 日本精品一区二区三区蜜桃| 亚洲欧洲精品一区二区精品久久久| 午夜福利18| 国产熟女午夜一区二区三区| 亚洲精品在线美女| 男女视频在线观看网站免费 | 国产野战对白在线观看| 99热6这里只有精品| 麻豆成人av在线观看| 久久人妻福利社区极品人妻图片| 在线国产一区二区在线| 99热只有精品国产| 正在播放国产对白刺激| 久久精品aⅴ一区二区三区四区| xxxwww97欧美| 久久欧美精品欧美久久欧美| 精品熟女少妇八av免费久了| 一区二区三区激情视频| 久久精品成人免费网站| 亚洲va日本ⅴa欧美va伊人久久| 亚洲精品美女久久av网站| 久久久久精品国产欧美久久久| 国产精品久久久av美女十八| 欧美色欧美亚洲另类二区| 身体一侧抽搐| 久久天躁狠狠躁夜夜2o2o| 老司机深夜福利视频在线观看| 成人免费观看视频高清| 久久 成人 亚洲| 亚洲成人国产一区在线观看| 色尼玛亚洲综合影院| 国产精品久久久av美女十八| 成人国语在线视频| 伊人久久大香线蕉亚洲五| 国产色视频综合| 亚洲欧美精品综合一区二区三区| 欧美在线一区亚洲| 日韩精品中文字幕看吧| 久久精品国产亚洲av高清一级| 成人精品一区二区免费| 色综合站精品国产| 波多野结衣巨乳人妻| 一二三四社区在线视频社区8| 国内久久婷婷六月综合欲色啪| 亚洲国产毛片av蜜桃av| 国内精品久久久久久久电影| 天天躁夜夜躁狠狠躁躁| 一进一出抽搐动态| 好男人电影高清在线观看| 制服诱惑二区| 999久久久精品免费观看国产| 日本 欧美在线| 岛国在线观看网站| 亚洲欧美一区二区三区黑人| 欧美绝顶高潮抽搐喷水| 欧美日韩乱码在线| 国产免费男女视频| 国产亚洲精品久久久久5区| 色播在线永久视频| 国产精品自产拍在线观看55亚洲| 在线观看舔阴道视频| 国产精品九九99| 亚洲欧美日韩高清在线视频| 亚洲av成人av| 人妻丰满熟妇av一区二区三区| 91麻豆精品激情在线观看国产| 亚洲精品国产一区二区精华液| 成人三级黄色视频| 色综合欧美亚洲国产小说| 欧美日本亚洲视频在线播放| 久久久国产成人精品二区| 婷婷精品国产亚洲av在线| 国产麻豆成人av免费视频| 亚洲成人久久性| 国产色视频综合| 国产精品亚洲一级av第二区| 黄片大片在线免费观看| 国产午夜福利久久久久久| 又大又爽又粗| 亚洲熟女毛片儿| 一边摸一边抽搐一进一小说| 黑人巨大精品欧美一区二区mp4| 日韩av在线大香蕉| 国产乱人伦免费视频| 最近最新中文字幕大全免费视频| 国产精品国产高清国产av| 国产精品av久久久久免费| 麻豆一二三区av精品| 亚洲成人精品中文字幕电影| 亚洲精华国产精华精| 无人区码免费观看不卡| 99久久久亚洲精品蜜臀av| av超薄肉色丝袜交足视频| 色老头精品视频在线观看| 亚洲精品中文字幕一二三四区| av电影中文网址| 国产精品精品国产色婷婷| 午夜日韩欧美国产| 亚洲九九香蕉| 超碰成人久久| 色播亚洲综合网| 亚洲av五月六月丁香网| av视频在线观看入口| 不卡av一区二区三区| 免费观看人在逋| 一本综合久久免费| 免费女性裸体啪啪无遮挡网站| 91在线观看av| 久久中文字幕一级| 欧美日韩瑟瑟在线播放| 欧美黑人巨大hd| 国产精品98久久久久久宅男小说| 18禁裸乳无遮挡免费网站照片 | 男女之事视频高清在线观看| 亚洲午夜精品一区,二区,三区| 亚洲av熟女| 女性被躁到高潮视频| 久久久久久久精品吃奶| 少妇 在线观看| 日韩高清综合在线| 欧美亚洲日本最大视频资源| 一进一出抽搐动态| 国产三级在线视频| 成人三级做爰电影| 国产精品久久久久久精品电影 | 亚洲av电影在线进入| 色综合婷婷激情| 黄色视频,在线免费观看| 91在线观看av| 欧美成人性av电影在线观看| 免费无遮挡裸体视频| 中亚洲国语对白在线视频| 777久久人妻少妇嫩草av网站| av超薄肉色丝袜交足视频| 精品福利观看| 又大又爽又粗| 熟女电影av网| tocl精华| 欧美+亚洲+日韩+国产| 国产成人av教育| 国产爱豆传媒在线观看 | 国产成人精品久久二区二区免费| 嫩草影院精品99| 又黄又粗又硬又大视频| 久久久久久久精品吃奶| 国产精品亚洲一级av第二区| 最近在线观看免费完整版| 国产高清视频在线播放一区| xxxwww97欧美| 男人舔女人下体高潮全视频| 国内久久婷婷六月综合欲色啪| 亚洲成人国产一区在线观看| 窝窝影院91人妻| 一个人免费在线观看的高清视频| 日韩国内少妇激情av| 搡老妇女老女人老熟妇| 欧美不卡视频在线免费观看 | 日本三级黄在线观看| 国产蜜桃级精品一区二区三区| 中文在线观看免费www的网站 | 中国美女看黄片| 亚洲国产高清在线一区二区三 | 一级a爱视频在线免费观看| 日韩高清综合在线| 老熟妇仑乱视频hdxx| 免费在线观看黄色视频的| 伊人久久大香线蕉亚洲五| av片东京热男人的天堂| 国产真人三级小视频在线观看| 熟女少妇亚洲综合色aaa.| 久久99热这里只有精品18| 制服人妻中文乱码| 久久久久久国产a免费观看| 久久久久免费精品人妻一区二区 | netflix在线观看网站| 黄色视频,在线免费观看| 又黄又粗又硬又大视频| 最近最新免费中文字幕在线| 身体一侧抽搐| 国产极品粉嫩免费观看在线| 国产野战对白在线观看| 国产久久久一区二区三区| 久久精品夜夜夜夜夜久久蜜豆 | 免费观看精品视频网站| 天天添夜夜摸| 国产黄片美女视频| 国产熟女午夜一区二区三区| 婷婷精品国产亚洲av在线| 91麻豆av在线| 久久精品aⅴ一区二区三区四区| 久久热在线av| 琪琪午夜伦伦电影理论片6080| 国产国语露脸激情在线看| 亚洲欧美精品综合一区二区三区| 国产欧美日韩一区二区精品| 久久久久亚洲av毛片大全| 中出人妻视频一区二区| 亚洲第一青青草原| 精品卡一卡二卡四卡免费| 国产高清有码在线观看视频 | 亚洲全国av大片| 国产单亲对白刺激| 国产蜜桃级精品一区二区三区| 黄色a级毛片大全视频| 露出奶头的视频| 欧美日韩瑟瑟在线播放| 禁无遮挡网站| 亚洲精品一区av在线观看| 色av中文字幕| 男女床上黄色一级片免费看| 精品高清国产在线一区| av视频在线观看入口| 日韩中文字幕欧美一区二区| 人人妻人人澡人人看| 久久国产精品男人的天堂亚洲| 中文在线观看免费www的网站 | 中文字幕精品亚洲无线码一区 | 两人在一起打扑克的视频| 日本 av在线| 国内精品久久久久精免费| 黑丝袜美女国产一区| 亚洲色图av天堂| 国产色视频综合| 男人舔奶头视频| 熟女少妇亚洲综合色aaa.| 国产精品二区激情视频| 色播在线永久视频| a级毛片在线看网站| 成人av一区二区三区在线看| 精品久久蜜臀av无| 亚洲精品色激情综合| 亚洲中文日韩欧美视频| 一个人观看的视频www高清免费观看 | 后天国语完整版免费观看| 亚洲精品一区av在线观看| 色尼玛亚洲综合影院| 亚洲精品粉嫩美女一区| 757午夜福利合集在线观看| 久久性视频一级片| 久久人人精品亚洲av| 国产高清videossex| 天堂动漫精品| 中文字幕久久专区| 波多野结衣高清作品| 一级毛片女人18水好多| 欧美黑人精品巨大| 岛国视频午夜一区免费看| 一本精品99久久精品77| 美女高潮喷水抽搐中文字幕| 啦啦啦观看免费观看视频高清| 精品久久久久久,| 亚洲人成伊人成综合网2020| 麻豆久久精品国产亚洲av| 亚洲人成电影免费在线| 人人妻,人人澡人人爽秒播| 国产成人一区二区三区免费视频网站| 嫩草影视91久久| 国产区一区二久久| 久久久国产欧美日韩av| 十分钟在线观看高清视频www| 精品久久久久久,| 国产单亲对白刺激| 午夜免费成人在线视频| 国产成人一区二区三区免费视频网站| 欧美一区二区精品小视频在线| av福利片在线| 国产精品影院久久| 国产人伦9x9x在线观看| 日韩视频一区二区在线观看| 在线观看免费视频日本深夜| 日韩一卡2卡3卡4卡2021年| 美女免费视频网站| 精品久久久久久久久久免费视频| 丝袜美腿诱惑在线| 国产99白浆流出| 狂野欧美激情性xxxx| 国产91精品成人一区二区三区| 欧美色欧美亚洲另类二区| 97人妻精品一区二区三区麻豆 | 老汉色∧v一级毛片| 99久久综合精品五月天人人| 亚洲男人天堂网一区| 亚洲国产欧美网| 亚洲精品久久国产高清桃花| 最好的美女福利视频网| 国内久久婷婷六月综合欲色啪| a级毛片a级免费在线| 黑人巨大精品欧美一区二区mp4| 99久久国产精品久久久| 国产精品久久久久久精品电影 | 51午夜福利影视在线观看| 身体一侧抽搐| 校园春色视频在线观看| 成人免费观看视频高清| 日本成人三级电影网站| av片东京热男人的天堂| 深夜精品福利| 亚洲一区二区三区不卡视频| 一本一本综合久久| 男人舔女人下体高潮全视频| 热re99久久国产66热| 视频在线观看一区二区三区| 男女午夜视频在线观看| 天堂影院成人在线观看| 视频区欧美日本亚洲| 久热爱精品视频在线9| 97超级碰碰碰精品色视频在线观看| 一进一出好大好爽视频| 无限看片的www在线观看| 欧美色视频一区免费| 午夜a级毛片| 热re99久久国产66热| 色播亚洲综合网| 午夜福利在线在线| 久久久久久久久免费视频了| 亚洲一码二码三码区别大吗| 嫩草影视91久久| 国产aⅴ精品一区二区三区波| 黄频高清免费视频| 悠悠久久av| 日本在线视频免费播放| 亚洲九九香蕉| 悠悠久久av| 成人18禁在线播放| 精品国产乱码久久久久久男人| 欧美亚洲日本最大视频资源| 午夜久久久在线观看| 黑丝袜美女国产一区| 亚洲精品国产区一区二| 国产成人啪精品午夜网站| 日韩视频一区二区在线观看| 亚洲中文字幕一区二区三区有码在线看 | 国产精品爽爽va在线观看网站 | 色精品久久人妻99蜜桃| 97碰自拍视频| 国产又黄又爽又无遮挡在线| 最近最新中文字幕大全免费视频| 欧美+亚洲+日韩+国产| 久久热在线av| 亚洲欧美一区二区三区黑人| 国产精品综合久久久久久久免费| 成人18禁在线播放| 国产亚洲精品久久久久5区| 国内少妇人妻偷人精品xxx网站 | 欧美丝袜亚洲另类 | 午夜免费成人在线视频| 中文字幕最新亚洲高清| 国产一区二区三区在线臀色熟女| 国产99白浆流出| 国产精品 欧美亚洲| 精品国产乱码久久久久久男人| 午夜视频精品福利| 亚洲第一电影网av| 欧美日韩乱码在线| 午夜视频精品福利| 成人18禁高潮啪啪吃奶动态图| 日日干狠狠操夜夜爽|