国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于SRAM的通用存算一體架構(gòu)平臺(tái)在物聯(lián)網(wǎng)中的應(yīng)用

2021-06-24 09:41:00曾劍敏虞志益解光軍
電子與信息學(xué)報(bào) 2021年6期
關(guān)鍵詞:數(shù)組哈希指令

曾劍敏 張 章* 虞志益 解光軍

①(合肥工業(yè)大學(xué)電子科學(xué)與應(yīng)用物理學(xué)院 合肥 230601)

②(中山大學(xué)微電子科學(xué)與技術(shù)學(xué)院 珠海 519082)

1 引言

隨著移動(dòng)互聯(lián)網(wǎng)、云計(jì)算、物聯(lián)網(wǎng)和人工智能等技術(shù)的快速發(fā)展,我們正全面步入大數(shù)據(jù)時(shí)代。大數(shù)據(jù)最重要的特征之一,也是大數(shù)據(jù)時(shí)代社會(huì)所面臨最大的一個(gè)挑戰(zhàn):有海量的數(shù)據(jù)需要處理[1]。因?yàn)樵诖髷?shù)據(jù)時(shí)代,包括社交媒體、生物醫(yī)療、氣象、交通和航空航天等在內(nèi)的多種領(lǐng)域均會(huì)產(chǎn)生海量的數(shù)據(jù)。例如當(dāng)前國(guó)際射電天文界最重要的大型望遠(yuǎn)鏡項(xiàng)目之一——平方千米陣(Square Kilometer Array, SKA)[2],每年可以產(chǎn)生300 PB容量的數(shù)據(jù)[3];一架波音噴氣式客機(jī)飛行一小時(shí)就能產(chǎn)生約21 TB容量的數(shù)據(jù)[4]。社會(huì)所產(chǎn)生的數(shù)據(jù)是呈指數(shù)式爆炸增長(zhǎng)的[5],據(jù)全球知名數(shù)據(jù)公司IDC (International Data Corporation)發(fā)布的《數(shù)據(jù)時(shí)代2025》白皮書報(bào)告顯示,到2025年,全球每年產(chǎn)生的數(shù)據(jù)將從2018年的33 ZB增長(zhǎng)到175 ZB,相當(dāng)于全球每天產(chǎn)生491 EB的數(shù)據(jù)[6]。

大數(shù)據(jù)的出現(xiàn)與繁榮發(fā)展使得數(shù)據(jù)處理的重心逐漸從以計(jì)算為中心轉(zhuǎn)移到以數(shù)據(jù)為中心[7],即數(shù)據(jù)處理任務(wù)或應(yīng)用從計(jì)算密集型轉(zhuǎn)移為數(shù)據(jù)密集型。而由于存儲(chǔ)墻[8]和帶寬墻[9]等原因,當(dāng)前采用馮諾依曼架構(gòu)設(shè)計(jì)的計(jì)算機(jī)系統(tǒng)在數(shù)據(jù)密集型計(jì)算中表現(xiàn)出的性能瓶頸和低能效等缺點(diǎn)日益凸顯。因此,為了解決這些問(wèn)題,新的計(jì)算機(jī)架構(gòu),特別是超越馮諾依曼(beyond von Neumann)架構(gòu),亟待提出。

近年來(lái),存算一體(In-Memory Computing,IMC)架構(gòu)引起了研究人員的廣泛關(guān)注,并被認(rèn)為是一種有望成為突破馮諾依曼瓶頸的新計(jì)算機(jī)架構(gòu)范式。存算一體的核心思想是使得計(jì)算單元和存儲(chǔ)單元盡量靠近,甚至融合為一體[10]。近期前沿文獻(xiàn)中實(shí)現(xiàn)IMC架構(gòu)的方式有多種,例如基于新興的3D堆疊封裝[11—13]或者憶阻器等非易失存儲(chǔ)器件[14—16]來(lái)實(shí)現(xiàn)。然而,由于3D堆疊以及非易失存儲(chǔ)等新興技術(shù)并不十分成熟,基于這些技術(shù)設(shè)計(jì)的IMC架構(gòu)短時(shí)間很難得到廣泛應(yīng)用。因此,許多文獻(xiàn)[17—24]逐漸基于技術(shù)成熟的SRAM來(lái)探索和設(shè)計(jì)IMC架構(gòu),并證明基于SRAM的IMC架構(gòu)在實(shí)現(xiàn)數(shù)據(jù)密集型應(yīng)用時(shí)能夠帶來(lái)顯著的性能和能效提升。例如,文獻(xiàn)[20]為本文作者所設(shè)計(jì)的一種基于SRAM實(shí)現(xiàn)的通用IMC架構(gòu)平臺(tái)——DM-IMCA。為彌補(bǔ)現(xiàn)有文獻(xiàn)中幾乎所有基于SRAM來(lái)實(shí)現(xiàn)的IMC架構(gòu)均面向如神經(jīng)網(wǎng)絡(luò)等專用目的而設(shè)計(jì)的缺憾,DM-IMCA能夠在其內(nèi)部SRAM中進(jìn)行大部分的邏輯運(yùn)算和算術(shù)運(yùn)算,因此具有廣泛的通用性,并且具有較高的潛力和價(jià)值。

為了充分挖掘DM-IMCA的應(yīng)用潛力和價(jià)值,本文探索了該平臺(tái)在物聯(lián)網(wǎng)領(lǐng)域中的應(yīng)用。詳細(xì)來(lái)說(shuō),本文選取了包括物聯(lián)網(wǎng)中信息安全、深度神經(jīng)網(wǎng)絡(luò)以及圖像處理在內(nèi)的若干輕量型數(shù)據(jù)密集型應(yīng)用,對(duì)相關(guān)算法進(jìn)行分析或者拆分,并把算法的關(guān)鍵部分映射到DM-IMCA的SRAM中進(jìn)行計(jì)算,以達(dá)到加速應(yīng)用計(jì)算或者降低功耗的目的。

2 基于SRAM的存內(nèi)邏輯計(jì)算原理

即可以利用SRAM位線的“線與”特性來(lái)實(shí)現(xiàn)多輸入與門和或非門。

3 DM-IMCA:基于SRAM的通用IMC架構(gòu)平臺(tái)

3.1 DM-IMCA簡(jiǎn)介

DM-IMCA[20]是一個(gè)基于SRAM的通用IMC架構(gòu)平臺(tái),其硬件架構(gòu)如圖2所示。DM-IMCA主要由1個(gè)6級(jí)流水精簡(jiǎn)指令集處理器核、1個(gè)指令存儲(chǔ)器、1個(gè)存內(nèi)計(jì)算協(xié)處理器——IMC-CP,以及由若干SRAM模塊組成的數(shù)據(jù)存儲(chǔ)器組成。其中處理器核是基于一款開(kāi)源、具有經(jīng)典5級(jí)流水且兼容MIPS32架構(gòu)的低功耗輕量處理器核OpenMIPS進(jìn)行裁剪與改進(jìn)而來(lái)的。

圖1 SRAM列內(nèi)邏輯運(yùn)算示意圖

圖2 DM-IMCA硬件架構(gòu)圖

數(shù)據(jù)存儲(chǔ)器由若干常規(guī)SRAM模塊與計(jì)算型SRAM——IMC-SRAM組成。IMC-SRAM是一款融合存儲(chǔ)和計(jì)算為一體的SRAM,其硬件架構(gòu)如圖2(e)所示。IMC-SRAM是在如圖1所示的電路原理基礎(chǔ)之上,將傳統(tǒng)6管單元換成9管單元,以消除6管單元所帶來(lái)的讀寫互擾以及進(jìn)行存內(nèi)計(jì)算時(shí)的問(wèn)題。此外,IMC-SRAM中還額外加入了少許邏輯門,用于實(shí)現(xiàn)除“與”和“或非”邏輯之外的其他運(yùn)算。與已有文獻(xiàn)相比,IMC-SRAM可以支持更多類型的運(yùn)算,例如加法、移位運(yùn)算等。此外,IMC-SRAM支持存內(nèi)向量計(jì)算。如圖2(e)所示,將向量操作數(shù)A和B沿字線方向?qū)R存儲(chǔ),那么只需1次操作,便可對(duì)存儲(chǔ)陣列中某一行的A和B分量計(jì)算完,然后將計(jì)算結(jié)果回寫至同樣與A和B對(duì)齊存儲(chǔ)的向量C中。在IMC-SRAM進(jìn)行存內(nèi)計(jì)算時(shí),數(shù)據(jù)存儲(chǔ)器中的常規(guī)SRAM仍然可以進(jìn)行數(shù)據(jù)的讀寫操作。

IMC-CP是一個(gè)為存內(nèi)計(jì)算設(shè)計(jì)的輕量協(xié)處理器,主要作用是對(duì)處理器核傳送過(guò)來(lái)的IMC指令進(jìn)行譯碼,然后根據(jù)譯碼后的信息對(duì)IMC-SRAM進(jìn)行模式配置及控制存內(nèi)計(jì)算操作,包括計(jì)算并配置操作數(shù)地址以及管理IMC-SRAM中的存內(nèi)計(jì)算過(guò)程。IMC-CP中還包括幾個(gè)重要的可配置的狀態(tài)寄存器:

(1)R0:用來(lái)保存下一次存內(nèi)計(jì)算的矢量長(zhǎng)度信息;

(2)R1-R3:用來(lái)保存IMC-CP對(duì)IMC指令譯碼后得到的源操作數(shù)和目的操作數(shù)的列地址;

(3)Rm:用來(lái)保存系統(tǒng)當(dāng)前工作模式;

(4)Rn:用來(lái)保存系統(tǒng)中用以存內(nèi)計(jì)算的IMCSRAM模塊的數(shù)量信息;

(5)Rv:保存當(dāng)前IMC計(jì)算指令中的剩余矢量長(zhǎng)度信息;

(6)Roc:保存存內(nèi)計(jì)算的操作碼信息。

在DM-IMCA中,運(yùn)行著兩套指令:傳統(tǒng)MIPS32指令和IMC指令(IMC instruction)。前者通過(guò)完整的處理器核流水線來(lái)執(zhí)行,后者在處理器核的指令預(yù)譯碼流水級(jí)之后,傳送至IMC-CP進(jìn)行二級(jí)譯碼,再由IMC-SRAM進(jìn)行執(zhí)行。兩套指令長(zhǎng)度一致,因此,并不需要設(shè)計(jì)兩組不同的指令存儲(chǔ)器,可以將傳統(tǒng)MIPS32指令和IMC指令混合存儲(chǔ)于同一個(gè)指令存儲(chǔ)器中。這樣做的好處是便于對(duì)系統(tǒng)進(jìn)行程序設(shè)計(jì),達(dá)到真正的傳統(tǒng)指令和IMC指令混合編程的目的。對(duì)于兩種指令的識(shí)別,將會(huì)交由處理器核的指令預(yù)譯碼流水級(jí)來(lái)進(jìn)行處理。指令存儲(chǔ)器采用常規(guī)的SRAM(通過(guò)工藝廠商提供的存儲(chǔ)編譯工具M(jìn)emory Compiler生成)來(lái)進(jìn)行設(shè)計(jì)。

DM-IMCA支持雙工作模式:普通模式和IMC模式。當(dāng)DM-IMCA工作于普通模式時(shí),數(shù)據(jù)的運(yùn)算由處理器核的流水線來(lái)完成,此時(shí)IMCSRAM與傳統(tǒng)SRAM一樣,其功能是進(jìn)行數(shù)據(jù)的存取,此時(shí)DM-IMCA表現(xiàn)得與傳統(tǒng)馮諾依曼架構(gòu)一樣;當(dāng)DM-IMCA工作于IMC模式時(shí),IMCSRAM可以進(jìn)行存內(nèi)計(jì)算,數(shù)據(jù)無(wú)需傳送至流水線進(jìn)行處理,此時(shí)DM-IMCA表現(xiàn)出與傳統(tǒng)馮諾依曼架構(gòu)不一樣的特性。因此,DM-IMCA是一種超越傳統(tǒng)馮諾依曼的混合架構(gòu)。

圖3 存內(nèi)向量計(jì)算自動(dòng)化及自適應(yīng)示意圖

3.2 IMC指令集

DM-IMCA包含一個(gè)專門為存內(nèi)計(jì)算設(shè)計(jì)的指令集——IMC指令集。DM-IMCA中的處理器核經(jīng)過(guò)改進(jìn),將其中不需要的部分指令去除,將騰出的指令空間用于IMC指令的編碼。IMC指令的高5位為識(shí)別碼,其中前3位(110)為1級(jí)識(shí)別碼,用于區(qū)分IMC指令和傳統(tǒng)MIPS32指令。1級(jí)識(shí)別碼在DMIMCA處理器核流水線中的預(yù)譯碼級(jí)被處理,并不會(huì)被傳送至協(xié)處理器IMC-CP中。因此,處理器核傳送給IMC-CP的指令實(shí)際上只有29位(IMC指令的低29位)。識(shí)別碼中的后兩位為2級(jí)識(shí)別碼,用于分區(qū)某條IMC指令的類型。各類指令的指令格式也分別在表1中列出。

表1 IMC指令集編碼格式

按照功能劃分,IMC指令可以分為兩大類:配置指令和計(jì)算指令,如表2所示。其中配置指令又可以分為存儲(chǔ)配置指令和地址配置指令。存儲(chǔ)配置指令的作用是對(duì)數(shù)據(jù)儲(chǔ)存器中用于存內(nèi)計(jì)算的IMC-SRAM宏模塊數(shù)量進(jìn)行配置。具體配置過(guò)程是將指令中rn字段所包含的信息寫入IMC-CP中的寄存器Rn中。地址配置指令用于配置存內(nèi)計(jì)算的源操作數(shù)和目的操作數(shù)的行地址信息。地址配置指令中的r1和r2字段所包含的內(nèi)容為存內(nèi)計(jì)算源操作數(shù)的行地址信息,r3字段所包含的內(nèi)容為存內(nèi)計(jì)算目的操作數(shù)的行地址信息。地址配置指令的配置過(guò)程為分別將r1字段和r2字段內(nèi)容寫入IMC-CP的寄存器R1和R2中,將r3字段內(nèi)容寫入IMC-CP的寄存器R3中。計(jì)算指令的作用是控制IMC-SRAM的存內(nèi)計(jì)算,包括存內(nèi)計(jì)算的功能類型和向量長(zhǎng)度。計(jì)算指令中的function字段包含了存內(nèi)計(jì)算的操作碼(功能碼),用于IMC-SRAM選擇特定的存內(nèi)計(jì)算功能,vl字段包含了相應(yīng)存內(nèi)計(jì)算操作的向量長(zhǎng)度信息。

表2 IMC指令集

3.3 DM-IMCA的工作流程

首先,在進(jìn)行存內(nèi)計(jì)算操作之前(一般為系統(tǒng)啟動(dòng)或者復(fù)位后),需要執(zhí)行一條存儲(chǔ)配置指令memCfg來(lái)對(duì)IMC-CP中的寄存器Rm進(jìn)行配置,以確定數(shù)據(jù)存儲(chǔ)器中參與存內(nèi)計(jì)算的IMC-SRAM宏模塊數(shù)量。由于Rm在系統(tǒng)啟動(dòng)或者復(fù)位后被置為1,因此如果不對(duì)寄存器Rm進(jìn)行配置,而又需要多個(gè)IMC-SRAM模塊參與存內(nèi)計(jì)算,存內(nèi)計(jì)算將無(wú)法正確進(jìn)行。

完成一個(gè)存內(nèi)計(jì)算操作需要DM-IMCA連續(xù)執(zhí)行兩條IMC指令。第1條為地址配置指令addrCfg,第2條則是一條計(jì)算指令。第1條指令執(zhí)行所包含的內(nèi)容為第2條指令將執(zhí)行的存內(nèi)計(jì)算操作的源操作數(shù)和目的操作數(shù)的行地址信息。第1條指令被IMCCP執(zhí)行完后,IMC-CP中的寄存器R1-R3將會(huì)被寫入相應(yīng)的操作數(shù)行地址信息,并且寄存器Rm被寫入“1”,表示IMC-CP被切換到IMC模式。在隨后的一個(gè)周期內(nèi),IMC-SRAM的行地址信息和工作模式將會(huì)被IMC-CP進(jìn)行配置。第2條計(jì)算指令的作用則是讓IMC-SRAM開(kāi)始啟動(dòng)存內(nèi)計(jì)算操作。計(jì)算指令被IMC-CP執(zhí)行后,計(jì)算指令中所包含的存內(nèi)計(jì)算操作碼和向量長(zhǎng)度信息會(huì)被IMC-CP分別寫入寄存器Roc和Rv中,隨后IMC-SRAM中的存內(nèi)計(jì)算流程正式開(kāi)始。當(dāng)IMC-SRAM完成存內(nèi)計(jì)算后,將寄存器Rm清零,將IMC-CP切換至普通工作模式,并且通知IMC-SRAM和處理器核切換至同樣的工作模式。

下面以圖3中的存內(nèi)向量加法為例來(lái)說(shuō)明存內(nèi)計(jì)算的指令執(zhí)行過(guò)程。為簡(jiǎn)化起見(jiàn),將IMC-SRAM的起始地址設(shè)為0。對(duì)于圖3(a)中的實(shí)例,只有一個(gè)IMC-SRAM模塊參與存內(nèi)計(jì)算,那么需要通過(guò)存儲(chǔ)配置指令將Rn設(shè)置為“1”(如果系統(tǒng)剛啟動(dòng)或者復(fù)位,也可以不設(shè)置)。向量(數(shù)組)A, B和C的行地址分別為0, 3和6,存內(nèi)加法計(jì)算的向量長(zhǎng)度vl為20,那么完成C =A+B這個(gè)向量加法需要執(zhí)行以下幾條指令:

(1) memCfg 1

(2) addrCfg 6, 3, 0

(3) maddu 20

與圖3(a)相比,圖3(b)中實(shí)例的區(qū)別在于調(diào)用了2個(gè)IMC-SRAM模塊參與存內(nèi)計(jì)算。因此,完成同樣的存內(nèi)計(jì)算,除了Rn的配置不同,其余均與圖3(a)中的實(shí)例一致。

4 DM-IMCA在物聯(lián)網(wǎng)信息安全中的應(yīng)用

隨著物聯(lián)網(wǎng)應(yīng)用的越來(lái)越廣泛,其安全性也變得更加重要。因此,非常有必要對(duì)所傳輸?shù)臄?shù)據(jù)進(jìn)行加密來(lái)確保物聯(lián)網(wǎng)的信息安全。利用加密算法可以有效提高物聯(lián)網(wǎng)中設(shè)備通信時(shí)的數(shù)據(jù)安全。本節(jié)將以兩個(gè)輕量級(jí)加密算法為例,介紹DM-IMCA在信息安全中的應(yīng)用。這兩個(gè)加密算法分別是一次性密碼(One-Time Pad, OTP)[25]算法和哈希算法[26](或稱為散列算法)。

4.1 基于DM-IMCA的OTP加密

在OTP加密技術(shù)中,信息發(fā)送方使用與信息長(zhǎng)度一致的密鑰對(duì)信息進(jìn)行加密,信息接收方在接收到加密信息后使用與加密時(shí)相同的密鑰進(jìn)行解密。由于加解密使用了相同的密鑰,因此OTP屬于對(duì)稱加密類型。為保障加密的有效性和安全性,加解密使用的密鑰必須為一次性的,即一個(gè)密鑰只能使用一次。此外,加解密所使用的密鑰生成方式應(yīng)該做到最大限度的隨機(jī)性。由于OTP技術(shù)的密鑰長(zhǎng)度需要和被加密信息一致,因此其對(duì)大文件的加密效率較低,而比較適用于短信息加密。OTP加密的核心過(guò)程非常簡(jiǎn)單,只需對(duì)信息內(nèi)容和一次性密鑰做按位異或操作,運(yùn)算結(jié)果便是加密后的內(nèi)容,如表3所示。

DM-IMCA原生支持異或操作,因此OTP加密過(guò)程可直接通過(guò)使用IMC指令來(lái)實(shí)現(xiàn)。將表3中的數(shù)組K, P和C在IMC-SRAM中映射的行地址分別設(shè)置為32, 40和48,則其字節(jié)地址分別為0×400,0×500和0×600。通過(guò)DM-IMCA存內(nèi)計(jì)算的方法來(lái)實(shí)現(xiàn)表3中算法的核心代碼如下:

表3 OTP算法

(1) addrCfg 48, 40, 32

(2) mxor N

此處N為各數(shù)組的字長(zhǎng)信息。如果通過(guò)基準(zhǔn)系統(tǒng)來(lái)實(shí)現(xiàn)同樣的OTP算法,其匯編代碼如下:

(1) li $t0, 0

(2) loop:

(3) lw $t4, 0x400($t0)

(4) lw $t5, 0x500($t0)

(5) xor $t6, $t4, $t5

(6) sw $t6, 0x600($t0)

(7) addiu $t0, $t0, 4

(8) blt $t0, Nb, loop

其中,代碼中的Nb=N/4,因?yàn)閷?duì)于MIPS匯編來(lái)講,地址是以字節(jié)而不是字為單位計(jì)算的。通過(guò)上述OTP算法在不同系統(tǒng)中實(shí)現(xiàn)的匯編代碼對(duì)比,也可以看出,相比于傳統(tǒng)的馮諾依曼架構(gòu)的基準(zhǔn)系統(tǒng),DM-IMCA的代碼要簡(jiǎn)潔許多,可以節(jié)省大量指令存儲(chǔ)器空間。

為了測(cè)試與對(duì)比,本文搭建了一個(gè)測(cè)試平臺(tái),如圖4所示。其中圖4(a)是一個(gè)作為對(duì)照組的基準(zhǔn)系統(tǒng)(baseline system),主要由OpenMIPS、1塊大小為32 kbit (128行×256列)的傳統(tǒng)6管SRAM宏單元;圖4(b)是用于測(cè)試的DM-IMCA系統(tǒng),主要由一個(gè)本文改進(jìn)后的6級(jí)流水處理器核M-OpenMIPS、1個(gè)大小為32 kbit (128行×256列)的IMCSRAM模塊以及協(xié)處理器IMC-CP組成?;鶞?zhǔn)系統(tǒng)及D M-I M C A 測(cè)試系統(tǒng)均采用由存儲(chǔ)編譯器(memory compiler)生成的6管SRAM模型作為指令存儲(chǔ)器。該平臺(tái)將用于本文所有應(yīng)用的測(cè)試。

分別選擇長(zhǎng)度為256 bit(N =8字)和1024 bit(N =32字)的密鑰,分別在DM-IMCA和基準(zhǔn)系統(tǒng)中進(jìn)行加密實(shí)驗(yàn)。在加密前,明文數(shù)組P、密鑰數(shù)組K和密文數(shù)組C在IMC-SRAM中的存儲(chǔ)方式類似圖3的向量A, B和C。由于在實(shí)驗(yàn)中,DM-IMCA只采用了一個(gè)IMC-SRAM宏模塊,因此N =8時(shí),各數(shù)組分別需要占用IMC-SRAM一行的存儲(chǔ)空間,而N =32時(shí),各數(shù)組占用的IMC-SRAM的存儲(chǔ)空間則為4行。分別統(tǒng)計(jì)通過(guò)DM-IMCA和基準(zhǔn)系統(tǒng)進(jìn)行OTP加密實(shí)驗(yàn)所花費(fèi)的時(shí)鐘周期數(shù),如圖5所示。結(jié)果顯示,與基準(zhǔn)系統(tǒng)相比,利用DMIMCA的存內(nèi)運(yùn)算來(lái)處理256 bit和1024 bit長(zhǎng)度的OTP加密,分別可以獲得8.75和23.8倍的運(yùn)算加速比。

圖4 測(cè)試平臺(tái)

4.2 基于DM-IMCA的哈希函數(shù)實(shí)現(xiàn)

哈希算法的功能是將任意長(zhǎng)度的信息映射到固定長(zhǎng)度的序列中,這個(gè)序列稱為哈希值(Hash code)。通常哈希值的長(zhǎng)度比信息小得多,且哈希算法的運(yùn)算是不可逆的,因此常用于信息提煉,以保障信息的真實(shí)性。因此信息發(fā)送者可以將原始信息和相應(yīng)的哈希值一起發(fā)送,信息接收者通過(guò)對(duì)接收到的信息進(jìn)行同樣的哈希運(yùn)算并將結(jié)果與接收到哈希值進(jìn)行對(duì)比,來(lái)確認(rèn)收到的信息是否為原始數(shù)據(jù)。這其實(shí)就是常用到的文件校驗(yàn)功能。另一個(gè)哈希應(yīng)用的實(shí)例是網(wǎng)站用戶登錄機(jī)制中的密碼找回。當(dāng)用戶忘記自己注冊(cè)的某個(gè)網(wǎng)站的登錄密碼,申請(qǐng)找回密碼時(shí),為了保護(hù)用戶的信息安全,網(wǎng)站管理方不是將登錄密碼明文發(fā)給用戶,而是將登錄密碼的哈希值發(fā)送給用戶,這樣就可以避免密碼遭到泄露。除此之外,哈希算法的應(yīng)用還非常廣,例如數(shù)字簽名、協(xié)議鑒權(quán)等。隨著物聯(lián)網(wǎng)和區(qū)塊鏈的發(fā)展,哈希算法在該領(lǐng)域也有著許多應(yīng)用[27]。

哈希算法實(shí)際上是一類算法,而不單指某個(gè)算法,常見(jiàn)的MD5和SHA, 以及HMAC等均屬于哈希算法的范疇。一般把產(chǎn)生哈希值的函數(shù)稱為哈希函數(shù),按照哈希值的產(chǎn)生方式不同,哈希函數(shù)可以分為加法哈希、乘法哈希、位運(yùn)算哈希等幾種經(jīng)典的函數(shù)。這些基礎(chǔ)的哈希函數(shù)組合還可以構(gòu)成更復(fù)雜的哈希函數(shù)。本節(jié)將選取加法哈希在DM-IMCA以及基準(zhǔn)系統(tǒng)中進(jìn)行實(shí)現(xiàn)。加法哈希的描述如表4所示,其中key和len分別表示輸入的字符串和字符串長(zhǎng)度,prime是任意的質(zhì)數(shù)。

圖5 測(cè)試OTP加密所花費(fèi)的時(shí)間對(duì)比

表4 加法哈希算法

從表4可以看出,加法哈希函數(shù)運(yùn)算的核心部分實(shí)質(zhì)是一個(gè)加法樹(shù),其規(guī)模隨著字符串長(zhǎng)度的增加而越來(lái)越龐大。這樣的運(yùn)算在基準(zhǔn)系統(tǒng)中實(shí)現(xiàn)只能是以串行的方式逐個(gè)進(jìn)行累加,顯然效率較低,耗時(shí)較長(zhǎng)。在DM-IMCA中,可以將字符串?dāng)?shù)組映射于IMC-SRAM中,按存內(nèi)計(jì)算的存儲(chǔ)要求排列,分批次進(jìn)行運(yùn)算。假設(shè)字符串長(zhǎng)度len=128時(shí),字符串?dāng)?shù)組key在IMC-SRAM中的起始地址為0×400(行地址為32)。先將數(shù)組key的元素對(duì)半分為兩個(gè)新的數(shù)組K1和 K2,并分別按如圖6所示的方式依次存儲(chǔ)于IMC-SRAM中(需要注意的是,由于當(dāng)前IMC-SRAM不支持字符型數(shù)據(jù)的操作,因此需將char型數(shù)據(jù)轉(zhuǎn)換為unsinged int型)。K1和K2通過(guò)存內(nèi)加法進(jìn)行各元素相加,并將結(jié)果存于K1中,即

按式(3)完成第1階段運(yùn)算后,接著用同樣的方法將數(shù)組K1對(duì)半分為兩部分,分別記為K3和K4,再通過(guò)存內(nèi)計(jì)算執(zhí)行如下操作:K3[i]←K3[i]+K4[i],i ∈[0,31]。以此類推,反復(fù)進(jìn)行同樣的數(shù)組對(duì)半拆分操作及存內(nèi)加法運(yùn)算,直到無(wú)法使用存內(nèi)運(yùn)算進(jìn)行加法操作,將剩下的元素取出至處理器核中進(jìn)行相加。對(duì)于字符串長(zhǎng)度len=128的實(shí)例,存內(nèi)矢量加法運(yùn)算的相關(guān)匯編代碼如下:

(1) addrCfg 32, 40, 32

K1[i]←K1[i]+K2[i],i ∈[0,63]

(2) maddu 64 //

(3) addrCfg 32, 36, 32

K3[i]←K3[i]+K4[i],i ∈[0,31]

(4) maddu 32 //

圖6 加法哈希函數(shù)運(yùn)算中字符串在IMC-SRAM中的映射

(5) addrCfg 32, 34, 32

(6) maddu 16

(7) addrCfg 32,33, 32

(8) maddu 8

分別取長(zhǎng)度len為256和512的字符串使用加法哈希算法在基準(zhǔn)系統(tǒng)和DM-IMCA中進(jìn)行試驗(yàn),并統(tǒng)計(jì)各自所消耗的時(shí)鐘周期數(shù),其結(jié)果如圖7所示。結(jié)果顯示,與基準(zhǔn)系統(tǒng)相比,使用DM-IMCA的存內(nèi)運(yùn)算功能進(jìn)行長(zhǎng)度為256和512位字符的加法哈希加密運(yùn)算分別可以獲得約6.5倍和12.2倍的運(yùn)算加速比。通過(guò)圖7還可以看出,隨著數(shù)日字符串長(zhǎng)度翻倍,基準(zhǔn)系統(tǒng)所需的加法哈希運(yùn)算時(shí)間也幾乎翻倍,而使用DM-IMCA來(lái)運(yùn)算增加的時(shí)間非常少。因此,字符串越長(zhǎng),使用DM-IMCA進(jìn)行加法哈希運(yùn)算越有優(yōu)勢(shì)。

5 DM-IMCA在深度神經(jīng)網(wǎng)絡(luò)中的應(yīng)用

圖7 測(cè)試加法哈希算法進(jìn)行加密所耗費(fèi)的時(shí)間對(duì)比

近些年來(lái),隨著集成電路工藝的發(fā)展,計(jì)算機(jī)的算力獲得了巨大提升。此外,在信息化時(shí)代,社會(huì)所產(chǎn)生的數(shù)據(jù)呈爆炸式增長(zhǎng)。這些因素極大地促進(jìn)了人工智能技術(shù)的快速發(fā)展,從而使人工智能得到了極廣泛的應(yīng)用,包括熱門的計(jì)算機(jī)視覺(jué)、語(yǔ)音識(shí)別,以及自然語(yǔ)言處理[28]。在眾多的人工智能模型中,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNNs)的發(fā)展尤其成功,例如著名的LeNet-5[29], VGGNet[30]和ResNet[31],均屬于CNN。然而,CNN對(duì)存儲(chǔ)和計(jì)算資源有著巨大的需求,例如VGG-16網(wǎng)絡(luò)需要存儲(chǔ)138 MB的參數(shù),為了對(duì)一幅大小為224×224的圖像進(jìn)行分類,需要進(jìn)行高達(dá)15.5 G次的浮點(diǎn)精度MAC(Multiply-Accumulate)運(yùn)算;ResNet-50也仍然需要存儲(chǔ)25.5 MB的參數(shù),對(duì)同樣大小的圖片進(jìn)行分類,需要高達(dá)3.9 G次的浮點(diǎn)精度MAC運(yùn)算。對(duì)于面積和功耗等資源緊張型的場(chǎng)景,如嵌入式設(shè)備或移動(dòng)終端,以及物聯(lián)網(wǎng)中的許多邊緣設(shè)備,這樣的原生網(wǎng)絡(luò)實(shí)在過(guò)于龐大,不便于部署。慶幸的是,Courbariaux等人通過(guò)研究證明可以同時(shí)將權(quán)值和神經(jīng)元激活(neuron activations)二值化,即同時(shí)減小到1 bit精度,同時(shí)不會(huì)遭受明顯的分類精度損失[32,33]。例如,可以采用如式(4)所示的算法進(jìn)行二值化。

表5 二值乘法真值表

將神經(jīng)網(wǎng)絡(luò)的權(quán)值和激活二值化可以極大地壓縮參數(shù)所需的存儲(chǔ)空間,節(jié)省硬件計(jì)算資源。此外,功耗也相應(yīng)得到大幅度降低[32]。

式(6)中的xor運(yùn)算可以通過(guò)DM-IMCA中高度并行的mxor指令來(lái)實(shí)現(xiàn)存內(nèi)計(jì)算,操作類似前述的OTP加密運(yùn)算;此外,popcount操作也可以通過(guò)移位和加法等多類存內(nèi)運(yùn)算組合來(lái)完成。為了充分利用IMC-SRAM存儲(chǔ)空間,首先將向量a和W 的元素以字為單位合并后存儲(chǔ)于整形數(shù)組中。圖8所示的是當(dāng)向量長(zhǎng)度L=256時(shí),激活a和權(quán)值W 的存儲(chǔ)映射實(shí)例。 a和W 分別映射到數(shù)組A和B中,并在IMC-SRAM中按行對(duì)其排列。其次,利用存內(nèi)運(yùn)算來(lái)完成XOR操作。隨后分別通過(guò)移位、數(shù)據(jù)位屏蔽以及加法來(lái)完成popcount操作。表6描述了popcount(xnor())操作在IMC-SRAM中的存內(nèi)運(yùn)算映射,其中第(3)行描述的是XOR操作,第(4)~(11)行描述的popcount操作。第(4), (5),(6)和(8)行描述的運(yùn)算分別可以通過(guò)DM-IMCA中的mxor, mand, maddu和msr指令來(lái)實(shí)現(xiàn)并行運(yùn)算。表6中算法中涉及的數(shù)組M, C和D在IMCSRAM中的存儲(chǔ)映射如圖8所示。若輸入數(shù)組A和B的長(zhǎng)度較大,第(12)~(14)行操作還可以使用存內(nèi)加法進(jìn)一步進(jìn)行加速,類似前面所介紹的對(duì)哈希算法中的加法樹(shù)運(yùn)算。

表6 存內(nèi)矢量XOR運(yùn)算和popcount操作算法

設(shè)數(shù)組A, B, M, C和D在IMC-SRAM中的行地址分別為32, 40, 48, 56和64,當(dāng)L=256時(shí),在DM-IMCA中實(shí)現(xiàn)表6中算法中的第(4)~(11)行運(yùn)算的匯編代碼如下:

圖8 二值神經(jīng)網(wǎng)絡(luò)中激活和權(quán)重在IMC-SRAM中的映射

而在基準(zhǔn)系統(tǒng)中實(shí)現(xiàn)相同的功能,各步的運(yùn)算都只能使用串行操作,因此運(yùn)算效率將會(huì)比在DMIMCA中實(shí)現(xiàn)更低。

在實(shí)際的二值神經(jīng)網(wǎng)絡(luò)中,通常存在多維度的卷積操作,從而使參與MAC運(yùn)算的兩個(gè)向量長(zhǎng)度均比較長(zhǎng)。因此,對(duì)應(yīng)的二值卷積計(jì)算中a和W的向量長(zhǎng)度也較長(zhǎng)。本節(jié)將通過(guò)實(shí)驗(yàn)?zāi)M較長(zhǎng)的二值卷積計(jì)算,從而觀察DM-IMCA存內(nèi)運(yùn)算對(duì)其的加速效果。分別取向量a和W的長(zhǎng)度L=512,L=1024和L=2048,分別在基準(zhǔn)系統(tǒng)和DM-IMCA系統(tǒng)中實(shí)現(xiàn),最后統(tǒng)計(jì)各自所消耗的時(shí)鐘周期數(shù),結(jié)果如圖9所示。經(jīng)計(jì)算可知,相比于基準(zhǔn)系統(tǒng),采用DM-IMCA實(shí)現(xiàn)長(zhǎng)度L=512, L=1024和L=2048二值卷積運(yùn)算,分別可以獲得7.7倍、12.4倍和17.8倍的運(yùn)算加速比。

圖9 測(cè)試二進(jìn)制卷積運(yùn)算所花費(fèi)的時(shí)鐘周期數(shù)對(duì)比

6 DM-IMCA在圖像處理中的應(yīng)用

除了在信息安全和卷積神經(jīng)網(wǎng)絡(luò)領(lǐng)域,DMIMCA在其他領(lǐng)域也存在著潛在的應(yīng)用價(jià)值,例如傳統(tǒng)的圖像處理和視頻處理領(lǐng)域。本節(jié)將簡(jiǎn)單介紹DM-IMCA在圖像灰度化處理中的應(yīng)用,以期能夠?qū)M-IMCA在其他方面的應(yīng)用起到啟發(fā)作用。

在計(jì)算機(jī)圖形學(xué)中,每幅圖像使用一個(gè)2維數(shù)組表示,數(shù)組中的每個(gè)元素均表示一個(gè)像素點(diǎn)(Pixel)。根據(jù)像素點(diǎn)表示的不同,圖像可以分為多種類型:真彩色圖像、索引圖像、二值圖像和灰度圖[34]。其中二值圖像的每個(gè)像素點(diǎn)僅在“0”和“1”中取值,因此圖像只有白和黑兩種顏色?;叶葓D像是每個(gè)像素只有一個(gè)采樣顏色的圖像,每個(gè)像素點(diǎn)在[0, 255]范圍內(nèi)取值,0~255中間的每個(gè)值都代表了一個(gè)級(jí)別的灰度。因此灰度圖像體現(xiàn)的是一幅圖像中各區(qū)域的顏色深淺。真彩色圖像也稱為RGB圖像,每個(gè)像素點(diǎn)由紅(R)、綠(G)和藍(lán)(B)3個(gè)分量來(lái)按不同灰度疊加構(gòu)成,每個(gè)分量取值均在[0, 255]范圍內(nèi)。真彩色圖像能夠更真實(shí)地表達(dá)現(xiàn)實(shí)世界,因此在日常生活中我們通常使用彩色圖像來(lái)記錄事物。然而在很多場(chǎng)景中,灰度圖像依然有著非常廣泛的應(yīng)用。例如黑白印刷由于比彩色印刷更廉價(jià),依然受到大眾歡迎。在打印中通常需要將彩色圖像轉(zhuǎn)為灰度圖像,并對(duì)圖像的灰度進(jìn)行增強(qiáng)以提高打印品質(zhì)。另外,在圖像的邊緣檢測(cè)、特征提取、圖像分割及圖像分類等圖像處理過(guò)程中也經(jīng)常使用灰度圖像,因?yàn)橄啾扔诓噬珗D像,灰度圖像數(shù)據(jù)量小,便于存儲(chǔ)和提高運(yùn)算效率。因此使用這些算法進(jìn)行圖像處理之前,經(jīng)常需要預(yù)先將彩色圖像轉(zhuǎn)換為灰度圖像。

因此,通過(guò)位寬量化及精度縮減,可以將圖像灰度化公式變換成只包含加法和移位運(yùn)算。例如式(11)中的2×Gm×n可以通過(guò)DM-IMCA的一次加法(m a d d)或者移位(m s r l)實(shí)現(xiàn),式(1 2)中的5×Gm×n可以通過(guò)DM-IMCA的兩次存內(nèi)1 bit移位及一次加法實(shí)現(xiàn)。對(duì)于一個(gè)像素點(diǎn)來(lái)說(shuō),若使用式(11)來(lái)將RGB值轉(zhuǎn)換為灰度值,需要通過(guò)4次存內(nèi)運(yùn)算來(lái)完成。一般圖像由比較大的像素點(diǎn)陣(如16×16, 64×64或256×256)組成,圖像灰度化運(yùn)算量比較大。但由于DM-IMCA支持自動(dòng)化及自適應(yīng)的存內(nèi)向量計(jì)算,仍然可以對(duì)圖像灰度化運(yùn)算提供可觀的加速比。對(duì)一幅像素為28×28的RGB圖像進(jìn)行灰度化,實(shí)驗(yàn)結(jié)果表明,對(duì)于相同的量化后算法,相比于基準(zhǔn)系統(tǒng),在DM-IMCA中實(shí)現(xiàn)可以獲得約10倍的運(yùn)算加速比。

7 結(jié)束語(yǔ)

本文介紹了基于SRAM進(jìn)行存內(nèi)邏輯計(jì)算的原理,以及基于SRAM的通用存算一體架構(gòu)平臺(tái)DMIMCA。隨后,本文選取了OTP加密、哈希算法、二值深度神經(jīng)網(wǎng)絡(luò)以及圖像灰度處理等幾個(gè)輕量級(jí)物聯(lián)網(wǎng)應(yīng)用,對(duì)其進(jìn)行算法分析及拆分,將數(shù)據(jù)密集計(jì)算部分算法映射到一款通用型存算一體架構(gòu)平臺(tái)DM-IMCA的計(jì)算型SRAM中,以達(dá)到對(duì)應(yīng)用進(jìn)行加速和提高能效的目的。這些實(shí)例表明DMIMCA在物聯(lián)網(wǎng)領(lǐng)域具有較高的應(yīng)用價(jià)值,且為后續(xù)的應(yīng)用提供了思路與方法。

猜你喜歡
數(shù)組哈希指令
聽(tīng)我指令:大催眠術(shù)
JAVA稀疏矩陣算法
JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
ARINC661顯控指令快速驗(yàn)證方法
LED照明產(chǎn)品歐盟ErP指令要求解讀
基于OpenCV與均值哈希算法的人臉相似識(shí)別系統(tǒng)
基于維度分解的哈希多維快速流分類算法
尋找勾股數(shù)組的歷程
基于同態(tài)哈希函數(shù)的云數(shù)據(jù)完整性驗(yàn)證算法
坐標(biāo)系旋轉(zhuǎn)指令數(shù)控編程應(yīng)用
万年县| 富宁县| 柳江县| 威远县| 平潭县| 东乌| 察隅县| 麻城市| 金秀| 石楼县| 宁都县| 仁怀市| 阿拉尔市| 兴化市| 伊川县| 高要市| 贵定县| 武胜县| 天等县| 来凤县| 登封市| 张家界市| 漳州市| 明光市| 大安市| 新民市| 苗栗县| 中宁县| 淮阳县| 北京市| 通城县| 甘德县| 济阳县| 蕉岭县| 礼泉县| 九台市| 安福县| 鹤峰县| 荆门市| 登封市| 福建省|