999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于密碼芯片的DDR加速器的設(shè)計(jì)與實(shí)現(xiàn)*

2022-07-12 13:03:26姜冬梅何欣霖
通信技術(shù) 2022年6期

姜冬梅,何欣霖,李 軍

(成都三零嘉微電子有限公司,四川 成都 610041)

0 引言

隨著云計(jì)算、大數(shù)據(jù)、5G以及高清視頻業(yè)務(wù)等領(lǐng)域網(wǎng)絡(luò)信息技術(shù)的快速發(fā)展,通信設(shè)備對(duì)密碼處理單元的加解密性能提出了更高的要求。為了滿足網(wǎng)絡(luò)匯聚層、核心服務(wù)器對(duì)海量密碼業(yè)務(wù)處理能力的需求,需要研究具有高性能的密碼芯片。

在基于對(duì)稱算法的密碼業(yè)務(wù)中,需要解決密鑰和IV的管理(初始化、存儲(chǔ)、訪問、更新與注銷)。密碼服務(wù)涉及的密鑰來源有以下兩種:一是一包一密,隨包下發(fā),不需要維護(hù);二是密鑰需要由主機(jī)下發(fā)到加解密芯片并保存在加解密芯片內(nèi)部,初始化完成后,由主機(jī)和加解密芯片共同完成密鑰的維護(hù)。本文主要研究第二種。密碼服務(wù)涉及的IV來源也有兩種:一是一包一初始向量(Intial Vector,IV),隨包下發(fā),故無須考慮IV維護(hù);二是對(duì)較大數(shù)據(jù)進(jìn)行級(jí)聯(lián)加解密處理,此時(shí)的IV生命周期為這個(gè)級(jí)聯(lián)處理數(shù)據(jù)的整個(gè)處理周期,對(duì)于上層應(yīng)用軟件則是維護(hù)一個(gè)加密隧道的線程周期。本文主要研究第二種。IV的初始化、更新和銷毀,需要加解密芯片協(xié)同主機(jī)下發(fā)的初始化包(initial package)、更新包(update package)和結(jié)束包(final package)共同實(shí)現(xiàn),如圖1所示。

圖1 級(jí)聯(lián)加解密過程

一個(gè)級(jí)聯(lián)加解密過程可分為初始階段、更新階段和結(jié)束階段3個(gè)階段,更新階段可以處理多個(gè)數(shù)據(jù)包。包序號(hào)和IV一對(duì)一綁定,密鑰索引和密鑰一對(duì)一綁定,下文將整個(gè)級(jí)聯(lián)加密過程中的數(shù)據(jù)包統(tǒng)稱為級(jí)聯(lián)包。

初始階段:首先主機(jī)創(chuàng)建一個(gè)加密隧道線程,完成密鑰初始化,實(shí)現(xiàn)密鑰和密鑰索引的綁定,將包序號(hào)、IV、密鑰索引及數(shù)據(jù)下發(fā)到密碼芯片;其次密碼芯片根據(jù)密鑰索引查找密鑰,并將密鑰、IV和數(shù)據(jù)送入加解密模塊進(jìn)行運(yùn)算;最后運(yùn)算結(jié)果返回主機(jī),并將運(yùn)算結(jié)果的最后一個(gè)級(jí)聯(lián)分組寫入IV存儲(chǔ)空間,完成IV的更新。

更新階段:首先主機(jī)下發(fā)包序號(hào)、密鑰索引和數(shù)據(jù);其次密碼芯片根據(jù)包序號(hào)和密鑰索引從本地緩存獲取IV和密鑰,連同數(shù)據(jù)送入加解密模塊進(jìn)行運(yùn)算;最后運(yùn)算結(jié)果包返回主機(jī),并將運(yùn)算結(jié)果的最后一個(gè)級(jí)聯(lián)分組寫入IV存儲(chǔ)空間,完成IV的更新。

結(jié)束階段:首先主機(jī)下發(fā)包序號(hào)、密鑰索引和數(shù)據(jù);其次密碼芯片根據(jù)包序號(hào)和密鑰索引從本地緩存獲取IV和密鑰,連同數(shù)據(jù)送入加解密模塊進(jìn)行運(yùn)算,運(yùn)算結(jié)果包返回主機(jī);最后主機(jī)釋放包序號(hào),加密隧道現(xiàn)場(chǎng)注銷。

可見,在加解密過程中需要解決密鑰和IV的存儲(chǔ)和訪問。在安全服務(wù)器應(yīng)用領(lǐng)域,加解密業(yè)務(wù)通常需要支持百萬級(jí)用戶,密鑰和IV的存儲(chǔ)需求高達(dá)幾百兆字節(jié),片上靜態(tài)隨機(jī)存取存儲(chǔ)器(Static Random Access Memory,SRAM)已不能滿足應(yīng)用的需求。DDR較SRAM具有容量大、成本低等特點(diǎn)[1],因此DDR取代片上SRAM成為密鑰和IV的存儲(chǔ)器。通常,一個(gè)密鑰或一個(gè)IV只有幾十個(gè)字節(jié),當(dāng)多用戶多線程加解密業(yè)務(wù)同時(shí)進(jìn)行時(shí),需要維護(hù)很多密鑰和IV,就會(huì)對(duì)DDR產(chǎn)生大量的離散數(shù)據(jù)讀寫訪問。而芯動(dòng)的DDR控制器和鎂光的DDR顆粒、Cadence的DDR控制器和鎂光的DDR顆粒的訪問延遲均在幾十個(gè)周期,這是由于對(duì)于DDR的離散數(shù)據(jù)訪問的延遲較大,因此存在訪問性能低的問題。

針對(duì)DDR訪問的延遲較大的問題,本文提出預(yù)讀機(jī)制,提前發(fā)起讀操作,讀回的數(shù)據(jù)緩存到高速緩沖存儲(chǔ)器(cache)中,當(dāng)加解密模塊發(fā)起讀寫IV和密鑰操作時(shí),可直接從cache中讀寫數(shù)據(jù),訪問延遲小。當(dāng)多包級(jí)聯(lián)時(shí),IV和密鑰數(shù)據(jù)具有時(shí)間局部性[2],而當(dāng)包序號(hào)連續(xù)時(shí),IV數(shù)據(jù)具有空間局部性[2],因此在加解密模塊與DDR之間引入一級(jí)cache,cache命中率較高,從而減少了DDR的訪問次數(shù)。

1 DDR硬件加速器

在密碼芯片中,高速加解密業(yè)務(wù)由高速接口、直接存儲(chǔ)器訪問(Direct Memory Access,DMA)、數(shù)據(jù)整形和加解密模塊共同完成,如圖2所示。高速接口是主機(jī)和密碼芯片的通信接口;DMA模塊將下行包從高速接口搬往加解密模塊,將上行包從加解密模塊搬往高速接口;數(shù)據(jù)整形模塊將下行包數(shù)據(jù)進(jìn)行整形并分發(fā)到加解密陣列中的各個(gè)加解密單元,當(dāng)完成加解密后,將數(shù)據(jù)匯聚整理后組成上行包,送入DMA模塊。加解密模塊通常由多個(gè)加解密單元組成,完成加解密業(yè)務(wù)。

圖2 DDR硬件加速器在密碼芯片中的位置

如圖2所示,DDR硬件加速器包含預(yù)讀檢測(cè)和cache加速模塊。預(yù)讀檢測(cè)模塊用于檢測(cè)來自主機(jī)的高速接口的輸入數(shù)據(jù),當(dāng)檢測(cè)到初始包的密鑰索引時(shí),向DDR發(fā)起讀密鑰請(qǐng)求,cache加速模塊在收到讀請(qǐng)求后,從DDR中讀取密鑰,并將其存儲(chǔ)在cache中。當(dāng)數(shù)據(jù)流經(jīng)過DMA和數(shù)據(jù)整形模塊后,到達(dá)加解密模塊,加解密模塊根據(jù)包序號(hào)和密鑰索引向DDR發(fā)起訪問讀寫密鑰和IV請(qǐng)求,此時(shí)密鑰和IV已經(jīng)存在cache中,可以較快地完成密鑰和IV的讀寫操作。

1.1 預(yù)讀檢測(cè)模塊設(shè)計(jì)與實(shí)現(xiàn)

密碼業(yè)務(wù)通常采用包傳輸模式,密鑰索引字段位于包頭信息中。預(yù)讀檢測(cè)模塊根據(jù)包格式,找出初始包的密鑰索引字段,根據(jù)密鑰的索引規(guī)則,計(jì)算密鑰在DDR中的存儲(chǔ)地址,發(fā)起一筆長(zhǎng)度為1、首地址為該DDR地址的讀操作。cache加速模塊在收到來自預(yù)讀模塊的讀請(qǐng)求后,向DDR模塊發(fā)起讀請(qǐng)求,并讀回一筆長(zhǎng)度為緩存行(cache line)大小的數(shù)據(jù)包存放到cache中,以便后續(xù)的加解密模塊可以從cache中讀取密鑰。

1.2 cache加速模塊設(shè)計(jì)與實(shí)現(xiàn)

常見的cache組織方式包含全關(guān)聯(lián)、直接映射和路組關(guān)聯(lián)[3-5]。為了提高cache的命中率,本設(shè)計(jì)采用全關(guān)聯(lián)方式。加速器的設(shè)計(jì)如圖3所示,下面分別就各個(gè)子功能進(jìn)行詳細(xì)描述。

圖3 cache加速模塊

AXI_GS模塊將AXI總線接口轉(zhuǎn)化成內(nèi)部自定義總線接口,并將讀寫命令、地址和數(shù)據(jù)送往內(nèi)容可尋址存儲(chǔ)器(Content Addressable Memory,CAM)search。該模塊內(nèi)設(shè)有深度為8的輸入緩存和輸出緩存,用于消除瞬時(shí)帶寬不匹配對(duì)系統(tǒng)性能造成的影響。

CAM search模塊用于檢測(cè)地址是否命中,它將burst首地址送給CAM模塊,從CAM模塊獲取命中信息,同時(shí)將讀寫命令、地址和數(shù)據(jù)送往Write and read process模塊。

Address FIFO用于存放未完成的且需要從DDR顆粒讀取數(shù)據(jù)的讀寫操作的burst首地址和burst ID。在Write and read process模塊中,對(duì)于地址未命中讀操作和地址未命中且需要從DDR讀數(shù)據(jù)回填cache line 的寫操作,burst首地址和burst ID寫入Address FIFO;在Write and read process模塊中,命中的寫操作需要檢查地址是否與Address FIFO中的地址相同,若相同,則當(dāng)前操作與之前操作可能存在數(shù)據(jù)相關(guān)性[4],需要等到之前操作完成后,才開始當(dāng)前操作。在Write and read process模塊中,地址命中的讀操作,需要檢查當(dāng)前讀地址是否與Address FIFO中的地址相同,若相同,則當(dāng)前操作與之前操作可能存在數(shù)據(jù)相關(guān)性,需要等到之前操作完成后才開始當(dāng)前讀操作,此外還需要檢查當(dāng)前讀ID是否跟Address FIFO的讀ID相同。根據(jù)AXI總線相同ID順序執(zhí)行的要求,則應(yīng)該等到該ID的之前操作完成后,才開始當(dāng)前讀操作。

Write and read process模塊根據(jù)地址是否命中,對(duì)讀寫burst進(jìn)行分別處理。

為了減少對(duì)DDR的訪問,讀操作采用lookthrough機(jī)制[3,4,6]。對(duì)于地址命中的讀burst,讀命令和地址被送往Match read process模塊處理;對(duì)于地址未命中的讀burst,向AXI_GM_RD模塊發(fā)起AXI讀請(qǐng)求,將該筆讀響應(yīng)的參數(shù)寫入PFIFO,同時(shí)將首地址寫入Address FIFO。

為了盡快向加解密模塊返回寫響應(yīng)信號(hào),寫操作采用write-back機(jī)制[3,4,6]。對(duì)于地址命中的寫burst,寫地址、寫數(shù)據(jù)、寫命令送往SRAM write interface模塊處理;對(duì)于地址未命中的寫B(tài)urst,寫地址、寫數(shù)據(jù)、寫命令送往SRAM write interface模塊,若burst長(zhǎng)度小于cache line大小,為了保持cache數(shù)據(jù)和DDR數(shù)據(jù)一致,則需要從DDR讀數(shù)據(jù)回填當(dāng)前cache line,因此會(huì)向AXI_GM_RD模塊發(fā)起AXI讀請(qǐng)求,將該筆讀響應(yīng)的參數(shù)寫入PFIFO,同時(shí)將首地址寫入Address FIFO。每次操作,會(huì)更新CAM和LRU。

SRAM write interface用于處理寫burst,它先將寫數(shù)據(jù)寫入SRAM,然后將response寫回AXI_GS響應(yīng)通道。

GM read response process模塊根據(jù)PFIFO中的參數(shù),處理從AXI_GM_RD模塊讀回的DDR數(shù)據(jù)。若是地址未命中寫,則將從DDR讀回的數(shù)據(jù)寫入SRAM中;若是地址未命中讀,則將從DDR讀回的數(shù)據(jù)寫入AXI_GS響應(yīng)通道,同時(shí)將數(shù)據(jù)寫入SRAM。

數(shù)據(jù)回收模塊采用最近最少使用(Least Recently Used,LRU)替換算法[7-9]實(shí)現(xiàn)對(duì)cache line的更新。為了避免cache滿時(shí),沒有可用的cache空間,導(dǎo)致流水線被阻塞,本設(shè)計(jì)在cache將滿未滿時(shí),把最久沒有訪問過的cache line狀態(tài)清零,更新LRU矩陣和CAM狀態(tài),若該cache line 中的數(shù)據(jù)比DDR中的數(shù)據(jù)新,則讀出cache line的數(shù)據(jù)并寫入DDR中。當(dāng)接收到Flush命令時(shí),將整個(gè)CAM的狀態(tài)復(fù)位,當(dāng)cache line的數(shù)據(jù)比DDR數(shù)據(jù)新時(shí),則讀出cache line的數(shù)據(jù)并寫入DDR中 。

CAM[10]模塊用于查詢地址是否命中。當(dāng)?shù)刂访袝r(shí),命中標(biāo)志生效并返回當(dāng)前地址所在的cache地址;若地址未命中且cache不滿時(shí),命中標(biāo)志無效并返回可用的cache地址;若地址未命中且cache已滿時(shí),命中標(biāo)志無效并返回沒有可用cache地址的標(biāo)志。

LRU用于查找最久未被使用的cache line。本設(shè)計(jì)使用LRU矩陣算法[11]。

AXI_GM_RD用于將內(nèi)部的讀請(qǐng)求總線轉(zhuǎn)換成AXI讀地址、讀數(shù)據(jù)通道信號(hào)。

AXI_GM_WR用于將內(nèi)部的寫請(qǐng)求總線轉(zhuǎn)換成AXI寫地址、寫數(shù)據(jù)以及寫響應(yīng)通道信號(hào)。

REG_IF模塊為寄存器模塊,用于CPU配置模塊寄存器、讀取模塊狀態(tài)和調(diào)試信息。

1.3 cache加速模塊設(shè)計(jì)特點(diǎn)

為了提高性能,采用全流水線設(shè)計(jì)[10,12]。寫操作處理過程包含4級(jí)流水:第1級(jí),AXI_GS將AXI總線轉(zhuǎn)化為內(nèi)部總線;第2級(jí),cam search模塊檢查地址是否命中;第3級(jí),SRAM write interface將數(shù)據(jù)寫到SRAM并向GS response arbiter輸出寫響應(yīng);第4級(jí),AXI_GS將內(nèi)部寫響應(yīng)轉(zhuǎn)換成AXI寫響應(yīng)。

地址命中的讀操作的處理過程包含4級(jí)流水:第1級(jí),AXI_GS將AXI總線轉(zhuǎn)化為內(nèi)部總線;第2級(jí),cam search模塊檢查地址是否命中;第3級(jí),match read process從SRAM讀回?cái)?shù)據(jù),并將其送往GS response arbiter;第4級(jí),AXI_GS將內(nèi)部讀響應(yīng)轉(zhuǎn)換成AXI讀響應(yīng)。

地址未命中的讀操作的處理過程又分為請(qǐng)求過程和響應(yīng)過程。請(qǐng)求過程包含4級(jí)流水:第1級(jí),AXI_GS將AXI總線轉(zhuǎn)化為內(nèi)部總線;第2級(jí),cam search模塊檢查地址是否命中;第3級(jí),write read process通過AXI_GM_RD模塊向DDR控制器發(fā)起讀請(qǐng)求;第4級(jí),AXI_GM_RD將內(nèi)部的讀請(qǐng)求轉(zhuǎn)換成AXI讀地址通道信號(hào),送給DDR控制器。響應(yīng)過程包含3級(jí)流水:第1級(jí),AXI_GM_RD將來自DDR控制器的讀數(shù)據(jù)通道信號(hào)轉(zhuǎn)換成內(nèi)部讀響應(yīng)信號(hào);第2級(jí),GM read response process將來自AXI_GM_RD模塊的讀數(shù)據(jù)寫入SRAM,同時(shí)送往GS response arbiter;第3級(jí),AXI_GS將內(nèi)部讀響應(yīng)轉(zhuǎn)換成AXI讀響應(yīng)。

采用FIFO設(shè)計(jì),PFIFO將DDR讀請(qǐng)求和讀數(shù)據(jù)分開,可以支持Outstanding操作。Address FIFO用于存放未完成的且需要從DDR顆粒讀取數(shù)據(jù)的burst的首地址和ID,用于解決數(shù)據(jù)的相關(guān)性和AXI總線要求相同ID順序執(zhí)行的問題。

為了簡(jiǎn)化設(shè)計(jì),所有仲裁均采用固定優(yōu)先級(jí)算法[11,13]。

數(shù)據(jù)回收與數(shù)據(jù)讀寫相互獨(dú)立,并行完成。當(dāng)正在被回收的對(duì)象又被重新訪問時(shí),完成回收后,cam的狀態(tài)不被清除。

2 DDR硬件加速器性能分析

如圖2所示,預(yù)讀檢測(cè)利用DMA和數(shù)據(jù)整形模塊的延遲(通常幾十個(gè)周期),提早發(fā)起對(duì)DDR的讀操作,讀回的數(shù)據(jù)存放于cache中,這樣抵消了DDR訪問延遲對(duì)加解密模塊的影響。該模塊易于實(shí)現(xiàn)且硬件開銷不大。

當(dāng)包序號(hào)連續(xù)時(shí),由于IV數(shù)據(jù)的存儲(chǔ)地址是由包序號(hào)索引,相鄰的級(jí)聯(lián)包的IV數(shù)據(jù)存儲(chǔ)地址連續(xù),因此IV數(shù)據(jù)具有空間局部性。當(dāng)多包級(jí)聯(lián)時(shí),由于更新包和結(jié)束包與初始包有相同的IV地址和密鑰地址,因此密鑰和IV數(shù)據(jù)具有時(shí)間局部性。由于數(shù)據(jù)的時(shí)間局部性和空間局部性,cache加速器會(huì)有較高的命中率,使得大量密鑰和IV的訪問在cache中完成,從而有效減少DDR的訪問次數(shù)。

本文用芯動(dòng)的DDR控制器、鎂光的DDR3仿真模型以及SYNOPSYS的VCS仿真工具,搭建了仿真環(huán)境。本文分別對(duì)不同個(gè)數(shù)的級(jí)聯(lián)包,以及包序號(hào)是否連續(xù)進(jìn)行有、無加速器的對(duì)比試驗(yàn)。IV長(zhǎng)度為16字節(jié),4個(gè)級(jí)聯(lián)包包個(gè)數(shù)分別為1,2,3,4,包序號(hào)連續(xù)時(shí),加解密模塊讀寫IV和密鑰所需時(shí)間如表1所示,單位為時(shí)鐘周期;IV長(zhǎng)度為16字節(jié),4個(gè)級(jí)聯(lián)包包個(gè)數(shù)分別為1,2,3,4,包序號(hào)不連續(xù)時(shí),加解密模塊讀寫IV和密鑰所需時(shí)間如表2所示,單位為時(shí)鐘周期。

表1 包序號(hào)連續(xù)的訪問時(shí)間

表2 包序號(hào)不連續(xù)的訪問時(shí)間

通過對(duì)比試驗(yàn),由表1、表2可知:加速器對(duì)密鑰和IV的訪問性能有較大提高,當(dāng)包序號(hào)連續(xù)時(shí),加速器性能有80%以上的提升,當(dāng)包序號(hào)不連續(xù)時(shí),有50%以上的性能提升。

3 結(jié)語

本文設(shè)計(jì)并用Verilog硬件描述語言實(shí)現(xiàn)了一種預(yù)讀與cache結(jié)合的DDR硬件加速器。通過對(duì)比試驗(yàn)說明,加速器較大程度上提高了DDR的訪問性能,且適用于安全服務(wù)器領(lǐng)域的對(duì)稱算法密碼芯片的密鑰和IV存儲(chǔ)管理,有效地解決了片上SRAM存儲(chǔ)容量不夠,片外DDR訪問效率低的問題。

主站蜘蛛池模板: 日本三级欧美三级| 99re在线免费视频| 国产精品久线在线观看| 香蕉色综合| 精品1区2区3区| 99久久99视频| 91视频区| AV熟女乱| 亚洲 成人国产| 手机成人午夜在线视频| 成人小视频在线观看免费| 久久国产精品影院| 国产午夜精品鲁丝片| 久久精品国产精品一区二区| 久久亚洲高清国产| 亚洲综合第一区| 中国国产高清免费AV片| 亚卅精品无码久久毛片乌克兰 | 伊人久久精品亚洲午夜| 九色视频最新网址| 最新国产成人剧情在线播放| 国产jizz| 2020久久国产综合精品swag| 欧美成人午夜在线全部免费| 人人看人人鲁狠狠高清| 亚洲精品福利网站| 中文无码影院| 2021亚洲精品不卡a| 欧美精品不卡| 免费毛片网站在线观看| 69精品在线观看| 国产一区二区精品福利| 国产美女一级毛片| 亚洲精品你懂的| 永久毛片在线播| 亚洲国产成人精品一二区| 国产乱子伦精品视频| 91在线精品免费免费播放| 国产精品香蕉在线| 国产在线精品美女观看| 2020最新国产精品视频| 91精品亚洲| 国产靠逼视频| 91久草视频| 久久精品无码国产一区二区三区| 日韩国产精品无码一区二区三区| 一边摸一边做爽的视频17国产| 国产自在线播放| 亚洲欧美h| 激情無極限的亚洲一区免费| 亚洲va欧美va国产综合下载| 国产91色| 国产精品性| 国产精品女同一区三区五区| 亚洲国产精品一区二区高清无码久久| 婷婷色丁香综合激情| 中文字幕首页系列人妻| 国产精品视频猛进猛出| 喷潮白浆直流在线播放| 国产精品成人免费视频99| 国产亚洲一区二区三区在线| 国产视频入口| 亚洲色图欧美| 伊人91视频| 亚洲无码电影| 精品無碼一區在線觀看 | 亚洲视屏在线观看| 99re经典视频在线| 91视频区| 青青草91视频| 免费无遮挡AV| 午夜日本永久乱码免费播放片| 一级高清毛片免费a级高清毛片| 免费一看一级毛片| 国产一区二区三区日韩精品| 九色在线视频导航91| 国产精品女熟高潮视频| 成人午夜网址| 92午夜福利影院一区二区三区| 丰满人妻久久中文字幕| 中日韩欧亚无码视频| 国产激情在线视频|