本發(fā)明涉及一種應(yīng)用于通信、加密等領(lǐng)域的基于大規(guī)模粗粒度嵌入式可重構(gòu)系統(tǒng)及其處理方法,屬于嵌入式可重構(gòu)系統(tǒng)領(lǐng)域。
背景技術(shù):
通用處理器與專用集成電路(ASIC)是傳統(tǒng)的計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)領(lǐng)域的兩大主流方法。然而,隨著應(yīng)用領(lǐng)域?qū)ο到y(tǒng)的性能、能耗、上市時(shí)間等指標(biāo)需求的不斷提高,這兩種傳統(tǒng)計(jì)算模式的弊端就暴露出來。
通用處理器方法適用范圍廣,但是計(jì)算效率低,專用集成電路雖然可以提高計(jì)算速度和計(jì)算效率,滿足性能需求,但是ASIC器件的靈活性很差。
為了在靈活性和計(jì)算效率之間實(shí)現(xiàn)很好的權(quán)衡,可重構(gòu)計(jì)算(reconfigurable computing)技術(shù)應(yīng)運(yùn)而生??芍貥?gòu)計(jì)算是當(dāng)前計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)領(lǐng)域的發(fā)展趨勢(shì)之一,它的架構(gòu)介于通用處理器和ASIC之間,并且綜合了二者長(zhǎng)處。它通過對(duì)可重構(gòu)設(shè)備進(jìn)行配置,可以使之由一個(gè)通用的計(jì)算平臺(tái)轉(zhuǎn)化為一個(gè)專用的硬件系統(tǒng),以完成具體的計(jì)算任務(wù),相當(dāng)于計(jì)算任務(wù)同時(shí)在時(shí)間和空間上展開,顯示出了應(yīng)用的靈活性和很高的計(jì)算性能。此外,可重構(gòu)計(jì)算技術(shù)還具有系統(tǒng)能耗低、可靠性高、上市時(shí)間短等優(yōu)勢(shì)。這些優(yōu)勢(shì)使得可重構(gòu)計(jì)算技術(shù)在各個(gè)應(yīng)用領(lǐng)域尤其是嵌入式應(yīng)用領(lǐng)域有著廣闊的應(yīng)用前景。很多在嵌入式領(lǐng)域中的主流應(yīng)用,例如多媒體應(yīng)用、加/解密應(yīng)用以及通信應(yīng)用等都非常適合利用可重構(gòu)計(jì)算技術(shù)實(shí)現(xiàn)。當(dāng)前的可重構(gòu)計(jì)算技術(shù)主要還是用于尖端技術(shù)領(lǐng)域中的計(jì)算平臺(tái),但隨著可重構(gòu)邏輯器件成本逐漸降低,運(yùn)行時(shí)可重構(gòu)計(jì)算技術(shù)不斷完善,我們有理由相信可重構(gòu)計(jì)算技術(shù)具備的種種優(yōu)勢(shì)會(huì)使其在更多的領(lǐng)域里大有作為。
目前國(guó)內(nèi)外已研究有多重可重構(gòu)系統(tǒng),如ReMAP,AsAP,DRP等。但是,這些陣列的互聯(lián)方式較為簡(jiǎn)單,在DES算法密鑰擴(kuò)展運(yùn)算中需要大量的比特移位以及較多的輪數(shù),因此運(yùn)算的效率和速度較低。傳統(tǒng)的可重構(gòu)計(jì)算系統(tǒng)在DES的運(yùn)算效率與運(yùn)算周期方面存在較大問題。
現(xiàn)有的中國(guó)專利201510886219.0,發(fā)明名稱為:一種基于大規(guī)模粗粒度可重構(gòu)處理器的SHA256實(shí)現(xiàn)方法及系統(tǒng),其針對(duì)SHA256方法,通過將多輪迭代在可重構(gòu)處理器中部分展開和中間結(jié)果數(shù)據(jù)緩存的方式進(jìn)行優(yōu)化和加速,但是對(duì)于DES算法來說,該方法及系統(tǒng)不適用。
技術(shù)實(shí)現(xiàn)要素:
發(fā)明目的:為了克服現(xiàn)有技術(shù)中存在的不足,本發(fā)明提供一種基于粗粒度可重構(gòu)架構(gòu)的DES算法密鑰擴(kuò)展系統(tǒng)及擴(kuò)展方法,本發(fā)明利用可重構(gòu)技術(shù)的并行性處理、運(yùn)算模塊獨(dú)立可配置等優(yōu)點(diǎn),在支持一定的靈活性的同時(shí),通過提高對(duì)DES算法的并行度以及優(yōu)化流水線等方法實(shí)現(xiàn)了DES算法的高效運(yùn)算。
技術(shù)方案:為實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案為:
一種基于粗粒度可重構(gòu)架構(gòu)的DES算法密鑰擴(kuò)展系統(tǒng),包括系統(tǒng)總線、可重構(gòu)處理器和微處理器。
所述可重構(gòu)處理器包括配置單元、輸入先進(jìn)先出寄存器組、輸出先進(jìn)先出寄存器組、通用寄存器堆、M個(gè)可重構(gòu)陣列塊,所述配置單元的進(jìn)線口通過系統(tǒng)總線與微處理器連接,且配置單元的出線口分別與可重構(gòu)陣列塊連接。而所述輸入先進(jìn)先出寄存器組通過系統(tǒng)總線與微處理器連接。這M個(gè)可重構(gòu)陣列塊分別為第1個(gè)可重構(gòu)陣列塊、第2個(gè)可重構(gòu)陣列塊、…、第m個(gè)可重構(gòu)陣列塊、…、第M個(gè)可重構(gòu)陣列塊,m=1...M,M取整數(shù)。其中第1個(gè)可重構(gòu)陣列塊與輸入先進(jìn)先出寄存器組連接,而第M個(gè)可重構(gòu)陣列塊與輸出先進(jìn)先出寄存器組連接,且這M個(gè)可重構(gòu)陣列塊均與通用寄存器堆連接,同時(shí)這M個(gè)可重構(gòu)陣列塊按順序依次連接。這M個(gè)可重構(gòu)陣列塊之間通過通用寄存器堆互相進(jìn)行數(shù)據(jù)的儲(chǔ)存、讀取和傳遞。所述輸出先進(jìn)先出寄存器組通過系統(tǒng)總線與微處理器連接。
所述微處理器通過分析DES的特征來確定密鑰擴(kuò)展的運(yùn)算流程,將多輪的密鑰擴(kuò)展運(yùn)算展開成一幅數(shù)據(jù)流圖映射到可重構(gòu)處理器中形成配置信息發(fā)送給配置單元。微處理器通過系統(tǒng)總線發(fā)送明文數(shù)據(jù)給可重構(gòu)處理器,明文數(shù)據(jù)將存入輸入先進(jìn)先出寄存器組,生成的密鑰將存入輸入先進(jìn)先出寄存器組。
所述配置單元用于存儲(chǔ)配置信息,并將配置信息發(fā)送給各個(gè)可重構(gòu)陣列塊。
第1個(gè)可重構(gòu)陣列塊用于獲取輸入先進(jìn)先出寄存器組的明文數(shù)據(jù),并根據(jù)配置信息第1個(gè)可重構(gòu)陣列塊對(duì)明文數(shù)據(jù)進(jìn)行密鑰擴(kuò)展,經(jīng)過密鑰擴(kuò)展后得到本步密鑰擴(kuò)展的中間信息和本步密鑰。根據(jù)配置信息將本步密鑰載入通用寄存器堆中,而得到的本步密鑰擴(kuò)展的中間信息根據(jù)配置信息載入到下一個(gè)可重構(gòu)陣列塊中。
對(duì)于第p個(gè)可重構(gòu)陣列塊,2≤p≤M-1。第p個(gè)可重構(gòu)陣列塊用于獲取第(p-1)個(gè)可重構(gòu)陣列塊密鑰擴(kuò)展得到的密鑰擴(kuò)展的中間信息,第(p-1)個(gè)可重構(gòu)陣列塊密鑰擴(kuò)展得到的密鑰擴(kuò)展的中間信記為上一步得到的密鑰擴(kuò)展的中間信息。根據(jù)配置信息第p個(gè)可重構(gòu)陣列塊對(duì)上一步得到的密鑰擴(kuò)展的中間信息進(jìn)行密鑰擴(kuò)展,經(jīng)過密鑰擴(kuò)展后得到本步密鑰擴(kuò)展的中間信息和本步密鑰。根據(jù)配置信息將本步密鑰載入通用寄存器堆中,而得到的本步密鑰擴(kuò)展的中間信息根據(jù)配置信息載入到下一個(gè)可重構(gòu)陣列塊中。
對(duì)于第M個(gè)可重構(gòu)陣列塊,第M個(gè)可重構(gòu)陣列塊用于獲取第(M-1)個(gè)可重構(gòu)陣列塊密鑰擴(kuò)展得到的密鑰擴(kuò)展的中間信息,該第(M-1)個(gè)可重構(gòu)陣列塊密鑰擴(kuò)展得到的密鑰擴(kuò)展的中間信息為上一步得到的密鑰擴(kuò)展的中間信息,根據(jù)配置信息第M個(gè)可重構(gòu)陣列塊對(duì)上一步得到的密鑰擴(kuò)展的中間信息進(jìn)行密鑰擴(kuò)展,經(jīng)過密鑰擴(kuò)展后得到本步密鑰擴(kuò)展的中間信息和本步密鑰。根據(jù)配置信息將本步密鑰載入通用寄存器堆中,完成密鑰擴(kuò)展。
優(yōu)選的:所述配置單元包括依次連接在一起的配置與控制接口、配置存儲(chǔ)器和配置解析模塊,且所述配置與控制接口和系統(tǒng)總線連接。微處理器依次通過系統(tǒng)總線和配置與控制接口將所需要的配置信息發(fā)送給配置存儲(chǔ)器,所述配置存儲(chǔ)器存儲(chǔ)發(fā)送過來的配置信息,而配置解析模塊用于解析配置存儲(chǔ)器的配置信息,且將解析的配置信息發(fā)送給可重構(gòu)陣列塊,實(shí)現(xiàn)對(duì)可重構(gòu)陣列塊的配置、啟動(dòng)以及切換操作。
優(yōu)選的:所述可重構(gòu)陣列塊包括讀端口運(yùn)算行選擇器、寫端口運(yùn)算行選擇器以及N行可重構(gòu)陣列運(yùn)算行,且這N行可重構(gòu)陣列運(yùn)算行共享讀端口運(yùn)算行選擇器和寫端口運(yùn)算行選擇器。其中,第m個(gè)可重構(gòu)陣列塊中的讀端口運(yùn)算行選擇器記為第m個(gè)讀端口運(yùn)算行選擇器,第m個(gè)可重構(gòu)陣列塊中的寫端口運(yùn)算行選擇器記為第m個(gè)寫端口運(yùn)算行選擇器,第m個(gè)可重構(gòu)陣列塊中的第n行可重構(gòu)陣列運(yùn)算行記為第行可重構(gòu)陣列運(yùn)算行,m=1...M,n=1...N,M為可重構(gòu)陣列塊的個(gè)數(shù),N為可重構(gòu)陣列塊包括的可重構(gòu)陣列運(yùn)算行的行數(shù),M,N取整數(shù)。且所述可重構(gòu)陣列塊之間按順序依次連接,而每個(gè)可重構(gòu)陣列塊內(nèi)部的可重構(gòu)陣列運(yùn)算行之間按順序依次連接。
在密鑰擴(kuò)展中可重構(gòu)陣列塊運(yùn)算得到的密鑰通過寫端口運(yùn)算行選擇器存在通用寄存器堆中。
優(yōu)選的:每行可重構(gòu)陣列運(yùn)算行均包括X1個(gè)數(shù)據(jù)載入單元、X2個(gè)數(shù)據(jù)輸出單元、X3個(gè)字節(jié)置換網(wǎng)絡(luò)、X4個(gè)比特置換網(wǎng)絡(luò)和X5個(gè)8位算術(shù)邏輯單元,字節(jié)置換網(wǎng)絡(luò)與比特置換網(wǎng)絡(luò)組成置換網(wǎng)絡(luò),字節(jié)置換網(wǎng)絡(luò)與比特置換網(wǎng)絡(luò)的輸出X5個(gè)8位的數(shù)據(jù)分別固定對(duì)應(yīng)于X5個(gè)8位算術(shù)邏輯單元。每個(gè)算術(shù)邏輯單元使用對(duì)應(yīng)的讀端口運(yùn)算行選擇器選擇任意三個(gè)置換網(wǎng)絡(luò)的輸出作為其輸入。第m個(gè)可重構(gòu)陣列塊第n行可重構(gòu)陣列運(yùn)算行的第k1個(gè)數(shù)據(jù)載入單元記為第個(gè)數(shù)據(jù)載入單元,第m個(gè)可重構(gòu)陣列塊第n行可重構(gòu)陣列運(yùn)算行的第k2個(gè)數(shù)據(jù)輸出單元記為第個(gè)數(shù)據(jù)輸出單元,第m個(gè)可重構(gòu)陣列塊第n行可重構(gòu)陣列運(yùn)算行的第k3個(gè)字節(jié)置換網(wǎng)絡(luò)記為第個(gè)字節(jié)置換網(wǎng)絡(luò),第m個(gè)可重構(gòu)陣列塊第n行可重構(gòu)陣列運(yùn)算行的第k4個(gè)比特置換網(wǎng)絡(luò)記為第個(gè)比特置換網(wǎng)絡(luò),第m個(gè)可重構(gòu)陣列塊第n行可重構(gòu)陣列運(yùn)算行的第k1個(gè)數(shù)據(jù)載入單元記為第個(gè)算術(shù)邏輯單元,k1=1...X1,k2=1...X2,k3=1...X3,k4=1...X4,k5=1...X5,X1,X2,X3,X4和X5均取整數(shù)。第m個(gè)讀端口運(yùn)算行選擇器讀取的上一步的中間數(shù)據(jù)以及接收解析配置解析模塊的配置信息來選擇中間數(shù)據(jù)流入的字節(jié)置換網(wǎng)絡(luò)和比特置換網(wǎng)絡(luò)。
優(yōu)選的:所述算術(shù)邏輯單元中包括模加運(yùn)算、異或運(yùn)算、與運(yùn)算、與非運(yùn)算、直通輸出運(yùn)算操作。同時(shí)每個(gè)算術(shù)邏輯單元有最多3個(gè)輸入和最多2個(gè)輸出,其中算術(shù)邏輯單元執(zhí)行上述運(yùn)算操作的同時(shí),支持任選一個(gè)輸入作為輸出。每4個(gè)8位的算術(shù)邏輯單元通過進(jìn)位端口連接成為1個(gè)32位的算術(shù)邏輯單元。
優(yōu)選的:所述可重構(gòu)陣列塊的個(gè)數(shù)為8個(gè),通用寄存器堆的個(gè)數(shù)為1個(gè),輸入先進(jìn)先出寄存器組的個(gè)數(shù)為1個(gè),輸出先進(jìn)先出寄存器組的個(gè)數(shù)為1個(gè)。
優(yōu)選的:每個(gè)可重構(gòu)陣列塊包括4行可重構(gòu)陣列運(yùn)算行、1個(gè)讀端口運(yùn)算行選擇器和1個(gè)寫端口運(yùn)算行選擇器。
優(yōu)選的:每行可重構(gòu)陣列運(yùn)算行包括2個(gè)數(shù)據(jù)載入單元、2個(gè)數(shù)據(jù)輸入單元、16個(gè)8位算術(shù)運(yùn)算單元、2個(gè)字節(jié)置換網(wǎng)絡(luò)和2個(gè)比特置換網(wǎng)絡(luò)。
一種基于粗粒度可重構(gòu)架構(gòu)的DES算法密鑰擴(kuò)展方法,包括以下步驟。
步驟1,分析DES算法密鑰擴(kuò)展的計(jì)算特點(diǎn),并歸納出數(shù)據(jù)流圖。
步驟2,根據(jù)數(shù)據(jù)流圖中的運(yùn)算流程,制定DES的數(shù)據(jù)輸入方式。
步驟3,根據(jù)步驟2確定的數(shù)據(jù)輸入方式以及步驟2確定的數(shù)據(jù)流圖針對(duì)可重構(gòu)處理器的特點(diǎn)配置可重構(gòu)處理器,并生成配置信息。
步驟4,通過微處理器將配置信息以及可重構(gòu)處理器初始數(shù)據(jù)存入相應(yīng)的存儲(chǔ)器中。
步驟5,微處理器啟動(dòng)可重構(gòu)處理器,并將配置信息及待處理數(shù)據(jù)發(fā)送給可重構(gòu)處理器。
步驟6,可重構(gòu)處理器根據(jù)配置信息及待處理數(shù)據(jù)進(jìn)行數(shù)據(jù)處理,當(dāng)可重構(gòu)處理器完成當(dāng)前任務(wù)后,發(fā)送中斷信號(hào)。并將處理好的數(shù)據(jù)通過通過系統(tǒng)總線發(fā)送給微處理器。
步驟6中可重構(gòu)處理器根據(jù)配置信息及待處理數(shù)據(jù)進(jìn)行數(shù)據(jù)處理的方法:
步驟61:第行可重構(gòu)陣列運(yùn)算行中的第個(gè)數(shù)據(jù)載入單元從輸入先進(jìn)先出寄存器組中載入初始64比特的密鑰。通過第1個(gè)讀端口運(yùn)算行選擇器讀取配置單元的配置信息。根據(jù)配置信息通過第個(gè)比特置換網(wǎng)絡(luò)對(duì)初始64比特的密鑰實(shí)現(xiàn)PC-1移位變換,移位后的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到最低56比特的初始左信息C[0]、初始右信息D[0],字節(jié)置換網(wǎng)絡(luò)與比特置換網(wǎng)絡(luò)用于控制數(shù)據(jù)的流向,從而為算術(shù)邏輯單元輸出合適的操作數(shù),第個(gè)算術(shù)邏輯單元都配置為直通,最低56比特的初始左信息C[0]、初始右信息D[0]通過第個(gè)數(shù)據(jù)輸出單元根據(jù)配置信息發(fā)送出。
第行可重構(gòu)陣列運(yùn)算行中的第個(gè)數(shù)據(jù)載入單元從第個(gè)數(shù)據(jù)輸出單元中載入最低56比特的初始左信息C[0]、初始右信息D[0],通過第1個(gè)讀端口運(yùn)算行選擇器讀取配置單元的配置信息。根據(jù)配置信息通過第個(gè)比特置換網(wǎng)絡(luò)對(duì)最低56比特的初始左信息C[0]、初始右信息D[0]進(jìn)行LS1循環(huán)移位,得到的LS1循環(huán)移位的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到最低56比特的左信息C[1]、右信息D[1],最低56比特的左信息C[1]、右信息D[1]通過第個(gè)數(shù)據(jù)輸出單元根據(jù)配置信息發(fā)送出,第個(gè)算術(shù)邏輯單元都配置為直通。
第行可重構(gòu)陣列運(yùn)算行的第個(gè)數(shù)據(jù)載入單元從第個(gè)數(shù)據(jù)輸出單元中載入最低56比特的左信息C[1]、右信息D[1],通過第1個(gè)讀端口運(yùn)算行選擇器讀取配置單元的配置信息。根據(jù)配置信息通過第個(gè)比特置換網(wǎng)絡(luò)對(duì)最低56比特的左信息C[1]、右信息D[1]進(jìn)行LS2循環(huán)移位,LS2循環(huán)移位的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算結(jié)果放置在最高58比特,得到最高58比特的左信息C[2]、右信息D[2]。同時(shí),而另一個(gè)第個(gè)比特置換網(wǎng)絡(luò)對(duì)最低56比特的左信息C[1]、右信息D[1]進(jìn)行PC-2移位,PC-2移位的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到48比特的密鑰K1。第個(gè)算術(shù)邏輯單元都配置為直通。最高56比特為左信息C[2]、右信息D[2],最低48比特的密鑰K1通過第個(gè)數(shù)據(jù)輸出單元根據(jù)配置信息發(fā)送出。
第行可重構(gòu)陣列運(yùn)算行的第個(gè)數(shù)據(jù)載入單元從第個(gè)數(shù)據(jù)輸出單元中載入最高56比特為左信息C[2]、右信息D[2],通過第1個(gè)讀端口運(yùn)算行選擇器讀取配置單元的配置信息。根據(jù)配置信息通過第個(gè)比特置換網(wǎng)絡(luò)對(duì)最高56比特為左信息C[2]、右信息D[2]進(jìn)行LS3循環(huán)移位,LS3循環(huán)移位的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到左信息C[3]和右信息D[3]。第個(gè)算術(shù)邏輯單元都配置為直通。另一第個(gè)比特置換網(wǎng)絡(luò)對(duì)最低48比特的密鑰K1進(jìn)行PC-2移位,PC-2移位的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到最高48比特的密鑰K2。得到左信息C[3]、右信息D[3]根據(jù)配置信息通過第個(gè)數(shù)據(jù)輸出給下一個(gè)可重構(gòu)陣列塊運(yùn)行。得到的最低48比特的密鑰K1和最高48比特的密鑰K2根據(jù)配置信息通過第個(gè)數(shù)據(jù)輸出單元輸出到通用寄存器堆中。第個(gè)算術(shù)邏輯單元都配置為直通。
步驟62:對(duì)于第(p-1)個(gè)可重構(gòu)陣列塊遺留下來的左信息C[i]、右信息D[i],第p個(gè)可重構(gòu)陣列塊中的第行可重構(gòu)陣列運(yùn)算行中的第個(gè)數(shù)據(jù)載入單元載入左信息C[i]、右信息D[i],通過第p個(gè)讀端口運(yùn)算行選擇器讀取配置單元的配置信息;根據(jù)配置信息通過第個(gè)比特置換網(wǎng)絡(luò)對(duì)左信息C[i]、右信息D[i]進(jìn)行LS[i+1]移位,LS[i+1]移位得到的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到左信息C[i+1]和右信息D[i+1];而另一個(gè)第個(gè)比特置換網(wǎng)絡(luò)對(duì)左信息C[i]、右信息D[i]進(jìn)行PC-2移位,PC-2移位得到的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到密鑰K[i];得到的左信息C[i+1]、右信息D[i+1]以及密鑰K[i]通過第個(gè)數(shù)據(jù)輸出單元根據(jù)配置信息發(fā)送出;第個(gè)算術(shù)邏輯單元都配置為直通。
第行可重構(gòu)陣列運(yùn)算行中的第個(gè)數(shù)據(jù)載入單元載入左信息C[i+1]、右信息D[i+1]以及密鑰K[i];通過第p讀端口運(yùn)算行選擇器讀取配置單元的配置信息;根據(jù)配置信息通過第個(gè)比特置換網(wǎng)絡(luò)對(duì)左信息C[i]、右信息D[i]進(jìn)行LS[i+1]移位,LS[i+1]移位得到的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到左信息C[i+2]和右信息D[i+2];而另一個(gè)第個(gè)比特置換網(wǎng)絡(luò)對(duì)左信息C[i+1]、右信息D[i+1]進(jìn)行PC-2移位,PC-2移位得到的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到密鑰K[i+1];得到左信息C[i+2]和右信息D[i+2]根據(jù)配置信息通過第個(gè)數(shù)據(jù)輸出給下一個(gè)可重構(gòu)陣列塊運(yùn)行;得到的密鑰K[i]和密鑰K[i+1]根據(jù)配置信息通過第個(gè)數(shù)據(jù)輸出單元輸出到通用寄存器堆中;3<=i<=15,表示向下取整;重復(fù)步驟62直到i=15;第個(gè)算術(shù)邏輯單元都配置為直通。
步驟63:對(duì)于第7個(gè)可重構(gòu)陣列塊遺留下來的左信息C[15]、右信息D[15],第8個(gè)可重構(gòu)陣列塊中的第行可重構(gòu)陣列運(yùn)算行中的第個(gè)數(shù)據(jù)載入單元載入左信息C[15]、右信息D[15],通過第8個(gè)讀端口運(yùn)算行選擇器讀取配置單元的配置信息。根據(jù)配置信息通過第個(gè)比特置換網(wǎng)絡(luò)對(duì)左信息C[15]、右信息D[15]進(jìn)行LS[16]移位,LS[16]移位得到的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到左信息C[16]和右信息D[16]。而另一個(gè)第個(gè)比特置換網(wǎng)絡(luò)對(duì)左信息C[15]、右信息D[15]進(jìn)行PC-2移位,PC-2移位得到的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到密鑰K[15]。得到的左信息C[16]、右信息D[16]以及密鑰K[15]通過第個(gè)數(shù)據(jù)輸出單元根據(jù)配置信息發(fā)送出。第個(gè)算術(shù)邏輯單元都配置為直通。
第行可重構(gòu)陣列運(yùn)算行中的第個(gè)數(shù)據(jù)載入單元載入左信息C[16]、右信息D[16],通過第8個(gè)讀端口運(yùn)算行選擇器讀取配置單元的配置信息。根據(jù)配置信息通過第個(gè)比特置換網(wǎng)絡(luò)對(duì)左信息C[16]、右信息D[16]進(jìn)行PC-2移位,PC-2移位得到的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到密鑰K[16]。得到的密鑰K[16]和密鑰K[15]通過第個(gè)數(shù)據(jù)輸出單元輸出存入通用寄存器堆中。同時(shí)左信息C[16]、右信息D[16]通過第個(gè)數(shù)據(jù)輸出單元輸出到輸出先進(jìn)先出寄存器組中。第個(gè)算術(shù)邏輯單元都配置為直通。
有益效果:本發(fā)明提供的一種基于粗粒度可重構(gòu)架構(gòu)的DES算法密鑰擴(kuò)展系統(tǒng)及擴(kuò)展方法,相比現(xiàn)有技術(shù),具有以下有益效果:
本發(fā)明針對(duì)DES算法密鑰擴(kuò)展,通過將多輪迭代在可重構(gòu)處理器中并行移位替換的方式進(jìn)行優(yōu)化和加速。通過8個(gè)可重構(gòu)陣列塊包含多個(gè)運(yùn)算單元,借助通用寄存器堆提高DES算法的運(yùn)算并行度,在具有一定靈活性的同時(shí),提高DES方法的運(yùn)算效率,盡可能的減少運(yùn)算周期。
附圖說明
圖1為本發(fā)明的基于大規(guī)模粗粒度嵌入式可重構(gòu)系統(tǒng)處理器框圖。
圖2為第一個(gè)可重構(gòu)陣列塊的整個(gè)密鑰擴(kuò)展的數(shù)據(jù)流圖。
圖3為中間可重構(gòu)陣列塊的整個(gè)密鑰擴(kuò)展的數(shù)據(jù)流圖。
圖4為最后一個(gè)可重構(gòu)陣列塊的整個(gè)密鑰擴(kuò)展的數(shù)據(jù)流圖
圖5為64比特的初始密鑰PC-1移位的規(guī)則表。初始密鑰從左往右依次為1,2…64比特位。
圖6為L(zhǎng)S[i]的移位規(guī)則,根據(jù)每一輪的輪數(shù)不同,循環(huán)左移的位數(shù)也有差別。
圖7為C[i]、D[i]PC-2移位得到K[i]的比特移位規(guī)則表。
圖8為DES算法密鑰擴(kuò)展整體流圖。
具體實(shí)施方式
下面結(jié)合附圖和具體實(shí)施例,進(jìn)一步闡明本發(fā)明,應(yīng)理解這些實(shí)例僅用于說明本發(fā)明而不用于限制本發(fā)明的范圍,在閱讀了本發(fā)明之后,本領(lǐng)域技術(shù)人員對(duì)本發(fā)明的各種等價(jià)形式的修改均落于本申請(qǐng)所附權(quán)利要求所限定的范圍。
一種基于粗粒度可重構(gòu)架構(gòu)的DES算法密鑰擴(kuò)展系統(tǒng),如圖1-8所示,包括系統(tǒng)總線、可重構(gòu)處理器和微處理器。
如圖1所示,所述可重構(gòu)處理器包括1個(gè)配置單元、1個(gè)輸入先進(jìn)先出寄存器組、1個(gè)輸出先進(jìn)先出寄存器組、1個(gè)通用寄存器堆、M個(gè)可重構(gòu)陣列塊,所述配置單元的進(jìn)線口通過系統(tǒng)總線與微處理器連接,且配置單元的出線口分別與可重構(gòu)陣列塊連接。而所述輸入先進(jìn)先出寄存器組通過系統(tǒng)總線與微處理器連接。這M個(gè)可重構(gòu)陣列塊分別為第1個(gè)可重構(gòu)陣列塊、第2個(gè)可重構(gòu)陣列塊、…、第m個(gè)可重構(gòu)陣列塊、…、第M個(gè)可重構(gòu)陣列塊,m=1...M,M取整數(shù)。其中第1個(gè)可重構(gòu)陣列塊與輸入先進(jìn)先出寄存器組連接,而第M個(gè)可重構(gòu)陣列塊與輸出先進(jìn)先出寄存器組連接,且這M個(gè)可重構(gòu)陣列塊均與通用寄存器堆連接,同時(shí)這M個(gè)可重構(gòu)陣列塊按順序依次連接。這M個(gè)可重構(gòu)陣列塊之間通過通用寄存器堆互相進(jìn)行數(shù)據(jù)的儲(chǔ)存、讀取和傳遞,且多個(gè)可重構(gòu)陣列塊中相鄰的兩個(gè)可重構(gòu)陣列塊通過其內(nèi)部的數(shù)據(jù)載入單元和數(shù)據(jù)輸出單元連接。所述輸出先進(jìn)先出寄存器組通過系統(tǒng)總線與微處理器連接。通過1個(gè)通用寄存器讀端口運(yùn)算行選擇器可以選擇從可重構(gòu)陣列塊中的指定可重構(gòu)陣列運(yùn)算行讀取通用寄存器堆的數(shù)據(jù),通用寄存器堆寫端口可以選擇數(shù)據(jù)從指定可重構(gòu)陣列運(yùn)算行寫入寄存器堆,大大增加量數(shù)據(jù)流通的靈活性。
所述微處理器通過分析DES的特征來確定密鑰擴(kuò)展的運(yùn)算流程,將多輪的密鑰擴(kuò)展運(yùn)算展開成一幅數(shù)據(jù)流圖映射到可重構(gòu)處理器中形成配置信息發(fā)送給配置單元。微處理器通過系統(tǒng)總線發(fā)送明文數(shù)據(jù)給可重構(gòu)處理器,明文數(shù)據(jù)將存入輸入先進(jìn)先出寄存器組,生成的密鑰將存入輸入先進(jìn)先出寄存器組,并在最終計(jì)算完成后輸出密文數(shù)據(jù)到輸出先進(jìn)先出寄存器組,并發(fā)送中斷信號(hào),最終輸出先進(jìn)先出寄存器組中的數(shù)據(jù)由微處理器讀出。
在DES運(yùn)算中可重構(gòu)陣列運(yùn)算行可通過通用寄存器堆讀出各種緩沖數(shù)據(jù)以及各種臨時(shí)的消息摘要,同時(shí)可以向通用寄存器堆寫入消息摘要的每輪計(jì)算的擴(kuò)展密鑰,這些密鑰被用于后續(xù)加密計(jì)算。
所述配置單元用于存儲(chǔ)配置信息,并將配置信息發(fā)送給各個(gè)可重構(gòu)陣列塊。
第1個(gè)可重構(gòu)陣列塊用于獲取輸入先進(jìn)先出寄存器組的明文數(shù)據(jù),并根據(jù)配置信息第1個(gè)可重構(gòu)陣列塊對(duì)明文數(shù)據(jù)進(jìn)行密鑰擴(kuò)展,經(jīng)過密鑰擴(kuò)展后得到本步密鑰擴(kuò)展的中間信息和本步密鑰。根據(jù)配置信息將本步密鑰載入通用寄存器堆中,而得到的本步密鑰擴(kuò)展的中間信息根據(jù)配置信息載入到下一個(gè)可重構(gòu)陣列塊中。
對(duì)于第p個(gè)可重構(gòu)陣列塊,2≤p≤M-1。第p個(gè)可重構(gòu)陣列塊用于獲取第(p-1)個(gè)可重構(gòu)陣列塊密鑰擴(kuò)展得到的密鑰擴(kuò)展的中間信息,第(p-1)個(gè)可重構(gòu)陣列塊密鑰擴(kuò)展得到的密鑰擴(kuò)展的中間信記為上一步得到的密鑰擴(kuò)展的中間信息。根據(jù)配置信息第p個(gè)可重構(gòu)陣列塊對(duì)上一步得到的密鑰擴(kuò)展的中間信息進(jìn)行密鑰擴(kuò)展,經(jīng)過密鑰擴(kuò)展后得到本步密鑰擴(kuò)展的中間信息和本步密鑰。根據(jù)配置信息將本步密鑰載入通用寄存器堆中,而得到的本步密鑰擴(kuò)展的中間信息根據(jù)配置信息載入到下一個(gè)可重構(gòu)陣列塊中。
對(duì)于第M個(gè)可重構(gòu)陣列塊,第M個(gè)可重構(gòu)陣列塊用于獲取第(M-1)個(gè)可重構(gòu)陣列塊密鑰擴(kuò)展得到的密鑰擴(kuò)展的中間信息,該第(M-1)個(gè)可重構(gòu)陣列塊密鑰擴(kuò)展得到的密鑰擴(kuò)展的中間信息為上一步得到的密鑰擴(kuò)展的中間信息,根據(jù)配置信息第M個(gè)可重構(gòu)陣列塊對(duì)上一步得到的密鑰擴(kuò)展的中間信息進(jìn)行密鑰擴(kuò)展,經(jīng)過密鑰擴(kuò)展后得到本步密鑰擴(kuò)展的中間信息和本步密鑰。根據(jù)配置信息將本步密鑰載入通用寄存器堆中,完成密鑰擴(kuò)展。
如圖1所示,所述配置單元包括依次連接在一起的配置與控制接口、配置存儲(chǔ)器和配置解析模塊,且所述配置與控制接口和系統(tǒng)總線連接。微處理器依次通過系統(tǒng)總線和配置與控制接口將所需要的配置信息發(fā)送給配置存儲(chǔ)器,所述配置存儲(chǔ)器存儲(chǔ)發(fā)送過來的配置信息,而配置解析模塊用于解析配置存儲(chǔ)器的配置信息,且將解析的配置信息發(fā)送給可重構(gòu)陣列塊,實(shí)現(xiàn)對(duì)可重構(gòu)陣列塊的配置、啟動(dòng)以及切換操作。
對(duì)配置單元中的配置存儲(chǔ)器進(jìn)行初始化,微處理器將所需要的配置信息通過配置與控制接口發(fā)送到配置存儲(chǔ)器中,然后通過配置解析模塊解析配置存儲(chǔ)器,實(shí)現(xiàn)對(duì)計(jì)算陣列的配置、啟動(dòng)以及切換操作。
所述可重構(gòu)陣列塊包括讀端口運(yùn)算行選擇器、寫端口運(yùn)算行選擇器以及N行可重構(gòu)陣列運(yùn)算行,且這N行可重構(gòu)陣列運(yùn)算行共享讀端口運(yùn)算行選擇器和寫端口運(yùn)算行選擇器。其中,第m個(gè)可重構(gòu)陣列塊中的讀端口運(yùn)算行選擇器記為第m個(gè)讀端口運(yùn)算行選擇器,第m個(gè)可重構(gòu)陣列塊中的寫端口運(yùn)算行選擇器記為第m個(gè)寫端口運(yùn)算行選擇器,第m個(gè)可重構(gòu)陣列塊中的第n行可重構(gòu)陣列運(yùn)算行記為第行可重構(gòu)陣列運(yùn)算行,m=1...M,n=1...N,M為可重構(gòu)陣列塊的個(gè)數(shù),N為可重構(gòu)陣列塊包括的可重構(gòu)陣列運(yùn)算行的行數(shù),M,N取整數(shù)。且所述可重構(gòu)陣列塊之間按順序依次連接,而每個(gè)可重構(gòu)陣列塊內(nèi)部的可重構(gòu)陣列運(yùn)算行之間按順序依次連接。1個(gè)可重構(gòu)陣列塊通過第行可重構(gòu)陣列運(yùn)算行的數(shù)據(jù)載入單元與輸入先進(jìn)先出寄存器組相連,同時(shí)第M個(gè)可重構(gòu)陣列塊通過第行可重構(gòu)陣列運(yùn)算行的數(shù)據(jù)輸出單元與輸出先進(jìn)先出寄存器組相連。
在密鑰擴(kuò)展中可重構(gòu)陣列塊運(yùn)算得到的密鑰通過寫端口運(yùn)算行選擇器存在通用寄存器堆中。
第行可重構(gòu)陣列運(yùn)算行與輸入先進(jìn)先出寄存器組相連,同時(shí)第行可重構(gòu)陣列運(yùn)算行與輸出先進(jìn)先出寄存器組相連。
第行可重構(gòu)陣列運(yùn)算行用于輸入先進(jìn)先出寄存器組中的明文數(shù)據(jù),通過第1個(gè)讀端口運(yùn)算行選擇器讀取配置單元的配置信息。第行可重構(gòu)陣列運(yùn)算行根據(jù)配置信息對(duì)明文數(shù)據(jù)進(jìn)行PC-1移位變換得到本步密鑰擴(kuò)展的中間數(shù)據(jù)。并根據(jù)配置信息將本步密鑰擴(kuò)展的中間數(shù)據(jù)載入第行可重構(gòu)陣列運(yùn)算行中。
第行可重構(gòu)陣列運(yùn)算行用于根據(jù)載入的上一步密鑰擴(kuò)展的中間數(shù)據(jù),通過第1個(gè)讀端口運(yùn)算行選擇器讀取配置單元的配置信息。第行可重構(gòu)陣列運(yùn)算行根據(jù)配置信息對(duì)上一步密鑰擴(kuò)展的中間數(shù)據(jù)進(jìn)行LS1循環(huán)移位得到本步的密鑰擴(kuò)展的中間數(shù)據(jù)。并根據(jù)配置信息將本步的密鑰擴(kuò)展的中間數(shù)據(jù)載入第行可重構(gòu)陣列運(yùn)算行中。
第行可重構(gòu)陣列運(yùn)算行用于根據(jù)載入的上一步密鑰擴(kuò)展的中間數(shù)據(jù),通過第1個(gè)讀端口運(yùn)算行選擇器讀取配置單元的配置信息。第行可重構(gòu)陣列運(yùn)算行根據(jù)配置信息對(duì)上一步密鑰擴(kuò)展的中間數(shù)據(jù)進(jìn)行LS2循環(huán)移位得到本步密鑰擴(kuò)展的中間數(shù)據(jù)。并根據(jù)配置信息將本步密鑰擴(kuò)展的中間數(shù)據(jù)載入第行可重構(gòu)陣列運(yùn)算行中。同時(shí)根據(jù)配置信息對(duì)本步密鑰擴(kuò)展的中間數(shù)據(jù)進(jìn)行PC-2移位變換得到本步密鑰。并根據(jù)配置信息將本步密鑰載入通用寄存器堆中。
第行可重構(gòu)陣列運(yùn)算行用于根據(jù)載入的上一步密鑰擴(kuò)展的中間數(shù)據(jù),通過第1個(gè)讀端口運(yùn)算行選擇器讀取配置單元的配置信息。第行可重構(gòu)陣列運(yùn)算行根據(jù)配置信息對(duì)上一步密鑰擴(kuò)展的中間數(shù)據(jù)進(jìn)行LS3循環(huán)移位得到本步密鑰擴(kuò)展的中間數(shù)據(jù)。并根據(jù)配置信息將本步密鑰擴(kuò)展的中間數(shù)據(jù)載入第行可重構(gòu)陣列運(yùn)算行中。同時(shí)根據(jù)配置信息對(duì)上一步密鑰擴(kuò)展的中間數(shù)據(jù)進(jìn)行PC-2移位變換得到本步密鑰。并根據(jù)配置信息將本步密鑰載入通用寄存器堆中。
對(duì)于第p個(gè)可重構(gòu)陣列塊,2≤p≤M-1。第p個(gè)可重構(gòu)陣列塊中的第行可重構(gòu)陣列運(yùn)算行用于載入第(p-1)個(gè)可重構(gòu)陣列塊中得到的上一步的密鑰擴(kuò)展的中間數(shù)據(jù)。通過第p個(gè)讀端口運(yùn)算行選擇器讀取配置單元的配置信息。根據(jù)配置信息對(duì)上一步的密鑰擴(kuò)展的中間數(shù)據(jù)進(jìn)行LS移位得到本步的密鑰擴(kuò)展的中間數(shù)據(jù)。同時(shí)根據(jù)配置信息對(duì)本步的密鑰擴(kuò)展的中間數(shù)據(jù)進(jìn)行PC-2移位得到本步的密鑰。得到的本步的密鑰擴(kuò)展的中間數(shù)據(jù)和本步的密鑰根據(jù)配置信息載入第行可重構(gòu)陣列運(yùn)算行中,進(jìn)行下一步的密鑰擴(kuò)展。
第行可重構(gòu)陣列運(yùn)算行用于載入單元載入上一步得到的密鑰擴(kuò)展的中間數(shù)據(jù)和上一步得到的密鑰。通過第p個(gè)讀端口運(yùn)算行選擇器讀取配置單元的配置信息。根據(jù)配置信息對(duì)上一步得到的密鑰擴(kuò)展的中間數(shù)據(jù)進(jìn)行LS移位得到本步密鑰擴(kuò)展的中間數(shù)據(jù)。同時(shí)根據(jù)配置信息對(duì)上一步得到的密鑰擴(kuò)展的中間數(shù)據(jù)進(jìn)行PC-2移位得到本步的密鑰。得到的本步密鑰擴(kuò)展的中間數(shù)據(jù)根據(jù)配置信息載入第行可重構(gòu)陣列運(yùn)算行中。而得到的本步的密鑰和上一步得到的密鑰根據(jù)配置信息載入通用寄存器堆中。
對(duì)于第M個(gè)可重構(gòu)陣列塊,第M個(gè)可重構(gòu)陣列塊中的第行可重構(gòu)陣列運(yùn)算行用于載入上一步得到的密鑰擴(kuò)展的中間數(shù)據(jù),第M個(gè)讀端口運(yùn)算行選擇器讀取配置單元的配置信息。根據(jù)配置信息對(duì)上一步得到的密鑰擴(kuò)展的中間數(shù)據(jù)進(jìn)行LS移位得到本步密鑰擴(kuò)展的中間數(shù)據(jù)。同時(shí)根據(jù)配置信息對(duì)上一步得到的密鑰擴(kuò)展的中間數(shù)據(jù)進(jìn)行PC-2移位得到本步的密鑰。同時(shí)根據(jù)配置信息對(duì)本步的密鑰擴(kuò)展的中間數(shù)據(jù)進(jìn)行PC-2移位得到本步的密鑰。得到的本步的密鑰擴(kuò)展的中間數(shù)據(jù)和本步的密鑰根據(jù)配置信息載入第行可重構(gòu)陣列運(yùn)算行中,進(jìn)行下一步的密鑰擴(kuò)展。
第行可重構(gòu)陣列運(yùn)算行用于載入上一步得到的密鑰擴(kuò)展的中間數(shù)據(jù)和上一步得到的密鑰,通過第M個(gè)讀端口運(yùn)算行選擇器讀取配置單元的配置信息。根據(jù)配置信息對(duì)上一步得到的密鑰擴(kuò)展的中間數(shù)據(jù)進(jìn)行PC-2移位得到本步的密鑰。得到的上一步得到的密鑰和本步的密鑰通過第M個(gè)寫端口運(yùn)算行選擇器載入通用寄存器堆中。同時(shí)上一步得到的密鑰擴(kuò)展的中間數(shù)據(jù)通過第M個(gè)寫端口運(yùn)算行選擇器輸出到輸出先進(jìn)先出寄存器組中。
每行可重構(gòu)陣列運(yùn)算行均包括X1個(gè)數(shù)據(jù)載入單元、X2個(gè)數(shù)據(jù)輸出單元、X3個(gè)字節(jié)置換網(wǎng)絡(luò)、X4個(gè)比特置換網(wǎng)絡(luò)和X5個(gè)8位算術(shù)邏輯單元,X5為16個(gè),字節(jié)置換網(wǎng)絡(luò)與比特置換網(wǎng)絡(luò)組成置換網(wǎng)絡(luò),字節(jié)置換網(wǎng)絡(luò)與比特置換網(wǎng)絡(luò)的輸出X5個(gè)8位的數(shù)據(jù)分別固定對(duì)應(yīng)于X5個(gè)8位算術(shù)邏輯單元。數(shù)據(jù)經(jīng)過數(shù)據(jù)載入單元,由選擇器通過讀取并解析不同的配置信息來選擇數(shù)據(jù)流入的字節(jié)置換網(wǎng)絡(luò)和比特置換網(wǎng)絡(luò);字節(jié)置換網(wǎng)絡(luò)與比特置換網(wǎng)絡(luò)的輸出分為X5個(gè)8位的數(shù)據(jù)分別固定對(duì)應(yīng)于X5個(gè)8位算術(shù)邏輯單元;每個(gè)算術(shù)邏輯單元使用數(shù)據(jù)選擇器選擇任意三個(gè)置換網(wǎng)絡(luò)的輸出作為其輸入;字節(jié)置換網(wǎng)絡(luò)與比特置換網(wǎng)絡(luò)的128位的輸出分為16個(gè)8位的數(shù)據(jù)分別固定對(duì)應(yīng)于16個(gè)8位算術(shù)邏輯單元,一次性可以運(yùn)算4組DES數(shù)據(jù);每個(gè)算術(shù)邏輯單元可以使用數(shù)據(jù)選擇器選擇其中三個(gè)置換網(wǎng)絡(luò)的輸出作為其輸入;數(shù)據(jù)輸出單元暫存算術(shù)邏輯單元的結(jié)果并讀取配置信息決定將數(shù)據(jù)輸出到先進(jìn)先出寄存器組、下一個(gè)可重構(gòu)陣列運(yùn)算行或通用寄存器堆。第m個(gè)可重構(gòu)陣列塊第n行可重構(gòu)陣列運(yùn)算行的第k1個(gè)數(shù)據(jù)載入單元記為第個(gè)數(shù)據(jù)載入單元,第m個(gè)可重構(gòu)陣列塊第n行可重構(gòu)陣列運(yùn)算行的第k2個(gè)數(shù)據(jù)輸出單元記為第個(gè)數(shù)據(jù)輸出單元,第m個(gè)可重構(gòu)陣列塊第n行可重構(gòu)陣列運(yùn)算行的第k3個(gè)字節(jié)置換網(wǎng)絡(luò)記為第個(gè)字節(jié)置換網(wǎng)絡(luò),第m個(gè)可重構(gòu)陣列塊第n行可重構(gòu)陣列運(yùn)算行的第k4個(gè)比特置換網(wǎng)絡(luò)記為第個(gè)比特置換網(wǎng)絡(luò),第m個(gè)可重構(gòu)陣列塊第n行可重構(gòu)陣列運(yùn)算行的第k1個(gè)數(shù)據(jù)載入單元記為第個(gè)算術(shù)邏輯單元,k1=1...X1,k2=1...X2,k3=1...X3,k4=1...X4,k5=1...X5,X1,X2,X3,X4和X5均取整數(shù)。第m個(gè)讀端口運(yùn)算行選擇器讀取的上一步的中間數(shù)據(jù)以及接收解析配置解析模塊的配置信息來選擇中間數(shù)據(jù)流入的字節(jié)置換網(wǎng)絡(luò)和比特置換網(wǎng)絡(luò)。
每個(gè)可重構(gòu)陣列運(yùn)算行中具有2個(gè)數(shù)據(jù)載入單元、2個(gè)數(shù)據(jù)輸入單元、2個(gè)算術(shù)運(yùn)算單元、2個(gè)字節(jié)置換網(wǎng)絡(luò)和2個(gè)比特置換網(wǎng)絡(luò),用于充當(dāng)各可重構(gòu)陣列運(yùn)算行算術(shù)運(yùn)算單元之間的數(shù)據(jù)互聯(lián)。其中數(shù)據(jù)載入單元可以選擇該可重構(gòu)陣列運(yùn)算行的數(shù)據(jù)來源,可選的數(shù)據(jù)來源為上一個(gè)可重構(gòu)陣列運(yùn)算行的數(shù)據(jù)輸出單元、輸入先進(jìn)先出寄存器組以及通用寄存器堆。數(shù)據(jù)輸出單元可以選擇該可重構(gòu)陣列運(yùn)算行的數(shù)據(jù)輸出方向,可選的數(shù)據(jù)輸出為通用寄存器堆、輸出先進(jìn)先出寄存器組以及輸出先進(jìn)先出寄存器組。同時(shí),只有第一個(gè)可重構(gòu)陣列塊的第一個(gè)可重構(gòu)陣列運(yùn)算行可以選擇輸入為輸入先進(jìn)先出寄存器組,最后一個(gè)可重構(gòu)陣列塊的最后一個(gè)可重構(gòu)陣列運(yùn)算行可以選擇輸出先進(jìn)先出寄存器組。算術(shù)邏輯單元與比特置換網(wǎng)絡(luò)承擔(dān)了DES算法密鑰擴(kuò)展中的所有運(yùn)算操作。其中比特置換網(wǎng)絡(luò)用于數(shù)據(jù)的循環(huán)移位和算術(shù)移位。算術(shù)邏輯單元承擔(dān)了DES中的模加、異或、非、同或等運(yùn)算操作。
第行可重構(gòu)陣列運(yùn)算行中的第個(gè)數(shù)據(jù)載入單元用于載入輸入先進(jìn)先出寄存器組中的明文數(shù)據(jù)。通過第1個(gè)讀端口運(yùn)算行選擇器讀取配置單元的配置信息。根據(jù)配置信息通過第個(gè)比特置換網(wǎng)絡(luò)對(duì)初始64比特的密鑰實(shí)現(xiàn)PC-1移位變換,移位后的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到最低56比特的初始左信息C[0]、初始右信息D[0]。最低56比特的初始左信息C[0]、初始右信息D[0]通過第個(gè)數(shù)據(jù)輸出單元根據(jù)配置信息發(fā)送出。
第行可重構(gòu)陣列運(yùn)算行中的第個(gè)數(shù)據(jù)載入單元用于從第個(gè)數(shù)據(jù)輸出單元中載入最低56比特的初始左信息C[0]、初始右信息D[0],通過第1個(gè)讀端口運(yùn)算行選擇器讀取配置單元的配置信息。根據(jù)配置信息通過第個(gè)比特置換網(wǎng)絡(luò)對(duì)最低56比特的初始左信息C[0]、初始右信息D[0]進(jìn)行LS1循環(huán)移位,得到的LS1循環(huán)移位的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到最低56比特的左信息C[1]、右信息D[1],最低56比特的左信息C[1]、右信息D[1]通過第個(gè)數(shù)據(jù)輸出單元根據(jù)配置信息發(fā)送出。
第行可重構(gòu)陣列運(yùn)算行的第個(gè)數(shù)據(jù)載入單元用于從第個(gè)數(shù)據(jù)輸出單元中載入最低56比特的左信息C[1]、右信息D[1],通過第1個(gè)讀端口運(yùn)算行選擇器讀取配置單元的配置信息。根據(jù)配置信息通過第個(gè)比特置換網(wǎng)絡(luò)對(duì)最低56比特的左信息C[1]、右信息D[1]進(jìn)行LS2循環(huán)移位,LS2循環(huán)移位的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算結(jié)果放置在最高58比特,得到最高58比特的左信息C[2]、右信息D[2]。同時(shí),而另一個(gè)第個(gè)比特置換網(wǎng)絡(luò)對(duì)最低56比特的左信息C[1]、右信息D[1]進(jìn)行PC-2移位,PC-2移位的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到48比特的密鑰K1。最高56比特為左信息C[2]、右信息D[2],最低48比特的密鑰K1通過第個(gè)數(shù)據(jù)輸出單元根據(jù)配置信息發(fā)送出。
第行可重構(gòu)陣列運(yùn)算行的第個(gè)數(shù)據(jù)載入單元用于從第個(gè)數(shù)據(jù)輸出單元中載入最高56比特為左信息C[2]、右信息D[2],通過第1個(gè)讀端口運(yùn)算行選擇器讀取配置單元的配置信息。根據(jù)配置信息通過第個(gè)比特置換網(wǎng)絡(luò)對(duì)最高56比特為左信息C[2]、右信息D[2]進(jìn)行LS3循環(huán)移位,LS3循環(huán)移位的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到左信息C[3]和右信息D[3]。第個(gè)算術(shù)邏輯單元都配置為直通。另一第個(gè)比特置換網(wǎng)絡(luò)對(duì)最低48比特的密鑰K1進(jìn)行PC-2移位,PC-2移位的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到最高48比特的密鑰K2。得到左信息C[3]、右信息D[3]根據(jù)配置信息通過第個(gè)數(shù)據(jù)輸出給下一個(gè)可重構(gòu)陣列塊運(yùn)行。得到的最低48比特的密鑰K1和最高48比特的密鑰K2根據(jù)配置信息通過第個(gè)數(shù)據(jù)輸出單元輸出到通用寄存器堆中。
對(duì)于第p個(gè)可重構(gòu)陣列塊,2≤p≤M-1。第(p-1)個(gè)可重構(gòu)陣列塊遺留下來的左信息C[i]、右信息D[i],第p個(gè)可重構(gòu)陣列塊中的第行可重構(gòu)陣列運(yùn)算行中的第個(gè)數(shù)據(jù)載入單元用于載入左信息C[i]、右信息D[i],通過第p個(gè)讀端口運(yùn)算行選擇器讀取配置單元的配置信息。根據(jù)配置信息通過第個(gè)比特置換網(wǎng)絡(luò)對(duì)左信息C[i]、右信息D[i]進(jìn)行LS[i+1]移位,LS[i+1]移位得到的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到左信息C[i+1]和右信息D[i+1]。而另一個(gè)第個(gè)比特置換網(wǎng)絡(luò)對(duì)左信息C[i]、右信息D[i]進(jìn)行PC-2移位,PC-2移位得到的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到密鑰K[i]。得到的左信息C[i+1]、右信息D[i+1]以及密鑰K[i]通過第個(gè)數(shù)據(jù)輸出單元根據(jù)配置信息發(fā)送出。
第行可重構(gòu)陣列運(yùn)算行中的第個(gè)數(shù)據(jù)載入單元用于載入左信息C[i+1]、右信息D[i+1]以及密鑰K[i]。通過第p個(gè)讀端口運(yùn)算行選擇器讀取配置單元的配置信息。根據(jù)配置信息通過第個(gè)比特置換網(wǎng)絡(luò)對(duì)左信息C[i]、右信息D[i]進(jìn)行LS[i+1]移位,LS[i+1]移位得到的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到左信息C[i+2]和右信息D[i+2]。而另一個(gè)第個(gè)比特置換網(wǎng)絡(luò)對(duì)左信息C[i+1]、右信息D[i+1]進(jìn)行PC-2移位,PC-2移位得到的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到密鑰K[i+1]。得到左信息C[i+2]和右信息D[i+2]根據(jù)配置信息通過第個(gè)數(shù)據(jù)輸出給下一個(gè)可重構(gòu)陣列塊運(yùn)行。得到的密鑰K[i]和密鑰K[i+1]根據(jù)配置信息通過第個(gè)數(shù)據(jù)輸出單元輸出到通用寄存器堆中。3<=i<=15,表示向下取整。重復(fù)步驟62直到i=15。
對(duì)于第8個(gè)可重構(gòu)陣列塊,第7個(gè)可重構(gòu)陣列塊遺留下來的左信息C[15]、右信息D[15],第8個(gè)可重構(gòu)陣列塊中的第行可重構(gòu)陣列運(yùn)算行中的第個(gè)數(shù)據(jù)載入單元用于載入左信息C[15]、右信息D[15],通過第8個(gè)讀端口運(yùn)算行選擇器讀取配置單元的配置信息。根據(jù)配置信息通過第個(gè)比特置換網(wǎng)絡(luò)對(duì)左信息C[15]、右信息D[15]進(jìn)行LS[16]移位,LS[16]移位得到的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到左信息C[16]和右信息D[16]。而另一個(gè)第個(gè)比特置換網(wǎng)絡(luò)對(duì)左信息C[15]、右信息D[15]進(jìn)行PC-2移位,PC-2移位得到的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到密鑰K[15]。得到的左信息C[16]、右信息D[16]以及密鑰K[15]通過第個(gè)數(shù)據(jù)輸出單元根據(jù)配置信息發(fā)送出。
第行可重構(gòu)陣列運(yùn)算行中的第個(gè)數(shù)據(jù)載入單元用于載入左信息C[16]、右信息D[16],通過第8個(gè)讀端口運(yùn)算行選擇器讀取配置單元的配置信息。根據(jù)配置信息通過第個(gè)比特置換網(wǎng)絡(luò)對(duì)左信息C[16]、右信息D[16]進(jìn)行PC-2移位,PC-2移位得到的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到密鑰K[16]。得到的密鑰K[16]和密鑰K[15]通過第個(gè)數(shù)據(jù)輸出單元輸出存入通用寄存器堆中。同時(shí)左信息C[16]、右信息D[16]通過第個(gè)數(shù)據(jù)輸出單元輸出到輸出先進(jìn)先出寄存器組中。
所述算術(shù)邏輯單元中包括模加運(yùn)算、異或運(yùn)算、與運(yùn)算、與非運(yùn)算、直通輸出、3輸入異或加、3輸入異或同或加運(yùn)算運(yùn)算操作。同時(shí)每個(gè)算術(shù)邏輯單元有最多3個(gè)輸入和最多2個(gè)輸出,其中算術(shù)邏輯單元執(zhí)行上述運(yùn)算操作的同時(shí),支持任選一個(gè)輸入作為輸出。由于DES方法中全部為32位運(yùn)算,因此每4個(gè)8位的算術(shù)邏輯單元通過進(jìn)位端口連接成為1個(gè)32位的算術(shù)邏輯單元。
所述可重構(gòu)陣列塊的個(gè)數(shù)為8個(gè),通用寄存器堆的個(gè)數(shù)為1個(gè),輸入先進(jìn)先出寄存器組的個(gè)數(shù)為1個(gè),輸出先進(jìn)先出寄存器組的個(gè)數(shù)為1個(gè)。
每個(gè)可重構(gòu)陣列塊包括4行可重構(gòu)陣列運(yùn)算行、1個(gè)讀端口運(yùn)算行選擇器和1個(gè)寫端口運(yùn)算行選擇器。
每行可重構(gòu)陣列運(yùn)算行包括2個(gè)數(shù)據(jù)載入單元、2個(gè)數(shù)據(jù)輸入單元、16個(gè)8位算術(shù)運(yùn)算單元、2個(gè)字節(jié)置換網(wǎng)絡(luò)和2個(gè)比特置換網(wǎng)絡(luò)。
一種基于粗粒度可重構(gòu)架構(gòu)的DES算法密鑰擴(kuò)展方法,該方法基于DES方法,需要將其轉(zhuǎn)化為數(shù)據(jù)流圖,并制定DES方法的數(shù)據(jù)輸入方式,然后根據(jù)數(shù)據(jù)流圖和數(shù)據(jù)輸入方式對(duì)應(yīng)特定的可重構(gòu)系統(tǒng)處理器生成相應(yīng)的配置信息,通過配置可重構(gòu)陣列塊將DES映射到該陣列上,由此實(shí)現(xiàn)DES方法,具體包括以下步驟:
步驟1,分析DES算法密鑰擴(kuò)展的計(jì)算特點(diǎn),并歸納出數(shù)據(jù)流圖。
DES算法的初始密鑰為64比特的數(shù)據(jù)塊,DES算法總共需要實(shí)行16輪輪迭代,每輪輪迭代所使用的密鑰各不相同,由初始密鑰經(jīng)過PC-1移位,LS移位和PC-2移位等操作生成16個(gè)子密鑰。為了節(jié)省通用寄存器堆的空間和提高可重構(gòu)陣列資源利用率,利用每個(gè)可重構(gòu)陣列塊生成兩個(gè)子密鑰,兩個(gè)子密鑰分為高低48比特存入通用寄存器堆
步驟2,根據(jù)數(shù)據(jù)流圖中的運(yùn)算流程,制定DES的數(shù)據(jù)輸入方式。
步驟3,根據(jù)步驟2確定的數(shù)據(jù)輸入方式以及步驟2確定的數(shù)據(jù)流圖針對(duì)可重構(gòu)處理器的特點(diǎn),在了解其各寄存器、運(yùn)算器以及各功能模塊的作用機(jī)制的情況下配置可重構(gòu)處理器,并生成配置信息。
步驟4,通過微處理器將配置信息以及可重構(gòu)處理器初始數(shù)據(jù)存入相應(yīng)的存儲(chǔ)器中。
其中配置信息為上述步驟所生成的配置信息,初始數(shù)據(jù)為k[i]緩沖區(qū)數(shù)據(jù)等各種常量。
步驟5,微處理器啟動(dòng)可重構(gòu)處理器,并將配置信息及待處理數(shù)據(jù)發(fā)送給可重構(gòu)處理器。
步驟6,可重構(gòu)處理器根據(jù)配置信息及待處理數(shù)據(jù)進(jìn)行數(shù)據(jù)處理,當(dāng)可重構(gòu)處理器完成當(dāng)前任務(wù)后,發(fā)送中斷信號(hào)。并將處理好的數(shù)據(jù)通過通過系統(tǒng)總線發(fā)送給微處理器。
如圖8所示,步驟6中可重構(gòu)處理器根據(jù)配置信息及待處理數(shù)據(jù)進(jìn)行數(shù)據(jù)處理的方法:
步驟61:如圖2、5所示,第行可重構(gòu)陣列運(yùn)算行中的第個(gè)數(shù)據(jù)載入單元從輸入先進(jìn)先出寄存器組中載入初始64比特的密鑰。通過第1個(gè)讀端口運(yùn)算行選擇器讀取配置單元的配置信息。根據(jù)配置信息通過第個(gè)比特置換網(wǎng)絡(luò)對(duì)初始64比特的密鑰實(shí)現(xiàn)PC-1移位變換,移位后的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到最低56比特的初始左信息C[0]、初始右信息D[0],字節(jié)置換網(wǎng)絡(luò)與比特置換網(wǎng)絡(luò)用于控制數(shù)據(jù)的流向,從而為算術(shù)邏輯單元輸出合適的操作數(shù),第個(gè)算術(shù)邏輯單元都配置為直通,最低56比特的初始左信息C[0]、初始右信息D[0]通過第個(gè)數(shù)據(jù)輸出單元根據(jù)配置信息發(fā)送出。
第行可重構(gòu)陣列運(yùn)算行中的第個(gè)數(shù)據(jù)載入單元從第個(gè)數(shù)據(jù)輸出單元中載入最低56比特的初始左信息C[0]、初始右信息D[0],通過第1個(gè)讀端口運(yùn)算行選擇器讀取配置單元的配置信息。根據(jù)配置信息通過第個(gè)比特置換網(wǎng)絡(luò)對(duì)最低56比特的初始左信息C[0]、初始右信息D[0]進(jìn)行LS1循環(huán)移位,得到的LS1循環(huán)移位的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到最低56比特的左信息C[1]、右信息D[1],最低56比特的左信息C[1]、右信息D[1]通過第個(gè)數(shù)據(jù)輸出單元根據(jù)配置信息發(fā)送出,第個(gè)算術(shù)邏輯單元都配置為直通。
第行可重構(gòu)陣列運(yùn)算行的第個(gè)數(shù)據(jù)載入單元從第個(gè)數(shù)據(jù)輸出單元中載入最低56比特的左信息C[1]、右信息D[1],通過第1個(gè)讀端口運(yùn)算行選擇器讀取配置單元的配置信息。根據(jù)配置信息通過第個(gè)比特置換網(wǎng)絡(luò)對(duì)最低56比特的左信息C[1]、右信息D[1]進(jìn)行LS2循環(huán)移位,LS2循環(huán)移位的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算結(jié)果放置在最高58比特,得到最高58比特的左信息C[2]、右信息D[2]。同時(shí),而另一個(gè)第個(gè)比特置換網(wǎng)絡(luò)對(duì)最低56比特的左信息C[1]、右信息D[1]進(jìn)行PC-2移位,PC-2移位的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到48比特的密鑰K1。第個(gè)算術(shù)邏輯單元都配置為直通。最高56比特為左信息C[2]、右信息D[2],最低48比特的密鑰K1通過第個(gè)數(shù)據(jù)輸出單元根據(jù)配置信息發(fā)送出。
第行可重構(gòu)陣列運(yùn)算行的第個(gè)數(shù)據(jù)載入單元從第個(gè)數(shù)據(jù)輸出單元中載入最高56比特為左信息C[2]、右信息D[2],通過第1個(gè)讀端口運(yùn)算行選擇器讀取配置單元的配置信息。根據(jù)配置信息通過第個(gè)比特置換網(wǎng)絡(luò)對(duì)最高56比特為左信息C[2]、右信息D[2]進(jìn)行LS3循環(huán)移位,LS3循環(huán)移位的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到左信息C[3]和右信息D[3]。第個(gè)算術(shù)邏輯單元都配置為直通。另一第個(gè)比特置換網(wǎng)絡(luò)對(duì)最低48比特的密鑰K1進(jìn)行PC-2移位,PC-2移位的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到最高48比特的密鑰K2。得到左信息C[3]、右信息D[3]根據(jù)配置信息通過第個(gè)數(shù)據(jù)輸出給下一個(gè)可重構(gòu)陣列塊運(yùn)行。得到的最低48比特的密鑰K1和最高48比特的密鑰K2根據(jù)配置信息通過第個(gè)數(shù)據(jù)輸出單元輸出到通用寄存器堆中。第個(gè)算術(shù)邏輯單元都配置為直通。
步驟62:如圖3、6、7所示,對(duì)于第(p-1)個(gè)可重構(gòu)陣列塊遺留下來的左信息C[i]、右信息D[i],第p個(gè)可重構(gòu)陣列塊中的第行可重構(gòu)陣列運(yùn)算行中的第個(gè)數(shù)據(jù)載入單元載入左信息C[i]、右信息D[i],通過第p個(gè)讀端口運(yùn)算行選擇器讀取配置單元的配置信息;根據(jù)配置信息通過第個(gè)比特置換網(wǎng)絡(luò)對(duì)左信息C[i]、右信息D[i]進(jìn)行LS[i+1]移位,LS[i+1]移位得到的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到左信息C[i+1]和右信息D[i+1];而另一個(gè)第個(gè)比特置換網(wǎng)絡(luò)對(duì)左信息C[i]、右信息D[i]進(jìn)行PC-2移位,PC-2移位得到的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到密鑰K[i];得到的左信息C[i+1]、右信息D[i+1]以及密鑰K[i]通過第個(gè)數(shù)據(jù)輸出單元根據(jù)配置信息發(fā)送出;第個(gè)算術(shù)邏輯單元都配置為直通。
第行可重構(gòu)陣列運(yùn)算行中的第個(gè)數(shù)據(jù)載入單元載入左信息C[i+1]、右信息D[i+1]以及密鑰K[i];通過第p讀端口運(yùn)算行選擇器讀取配置單元的配置信息;根據(jù)配置信息通過第個(gè)比特置換網(wǎng)絡(luò)對(duì)左信息C[i]、右信息D[i]進(jìn)行LS[i+1]移位,LS[i+1]移位得到的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到左信息C[i+2]和右信息D[i+2];而另一個(gè)第個(gè)比特置換網(wǎng)絡(luò)對(duì)左信息C[i+1]、右信息D[i+1]進(jìn)行PC-2移位,PC-2移位得到的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到密鑰K[i+1];得到左信息C[i+2]和右信息D[i+2]根據(jù)配置信息通過第個(gè)數(shù)據(jù)輸出給下一個(gè)可重構(gòu)陣列塊運(yùn)行;得到的密鑰K[i]和密鑰K[i+1]根據(jù)配置信息通過第個(gè)數(shù)據(jù)輸出單元輸出到通用寄存器堆中;3<=i<=15,表示向下取整;重復(fù)步驟62直到i=15;第個(gè)算術(shù)邏輯單元都配置為直通。
步驟63:如圖4所示,對(duì)于第7個(gè)可重構(gòu)陣列塊遺留下來的左信息C[15]、右信息D[15],第8個(gè)可重構(gòu)陣列塊中的第行可重構(gòu)陣列運(yùn)算行中的第個(gè)數(shù)據(jù)載入單元載入左信息C[15]、右信息D[15],通過第8個(gè)讀端口運(yùn)算行選擇器讀取配置單元的配置信息。根據(jù)配置信息通過第個(gè)比特置換網(wǎng)絡(luò)對(duì)左信息C[15]、右信息D[15]進(jìn)行LS[16]移位,LS[16]移位得到的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到左信息C[16]和右信息D[16]。而另一個(gè)第個(gè)比特置換網(wǎng)絡(luò)對(duì)左信息C[15]、右信息D[15]進(jìn)行PC-2移位,PC-2移位得到的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到密鑰K[15]。得到的左信息C[16]、右信息D[16]以及密鑰K[15]通過第個(gè)數(shù)據(jù)輸出單元根據(jù)配置信息發(fā)送出。第個(gè)算術(shù)邏輯單元都配置為直通。
第行可重構(gòu)陣列運(yùn)算行中的第個(gè)數(shù)據(jù)載入單元載入左信息C[16]、右信息D[16],通過第8個(gè)讀端口運(yùn)算行選擇器讀取配置單元的配置信息。根據(jù)配置信息通過第個(gè)比特置換網(wǎng)絡(luò)對(duì)左信息C[16]、右信息D[16]進(jìn)行PC-2移位,PC-2移位得到的數(shù)據(jù)通過第個(gè)算術(shù)邏輯單元的邏輯計(jì)算得到密鑰K[16]。得到的密鑰K[16]和密鑰K[15]通過第個(gè)數(shù)據(jù)輸出單元輸出存入通用寄存器堆中。同時(shí)左信息C[16]、右信息D[16]通過第個(gè)數(shù)據(jù)輸出單元輸出到輸出先進(jìn)先出寄存器組中。第個(gè)算術(shù)邏輯單元都配置為直通。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出:對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。