基于FPGA PCI的并行計算平臺實(shí)現
PCI總線(xiàn)(外設互聯(lián)總線(xiàn))與傳統的總線(xiàn)標準——ISA總線(xiàn)(工業(yè)標準結構總線(xiàn))相比,具有更高的傳輸率(132MBps)、支持32位處理器及DMA和即插即用等優(yōu)點(diǎn),用于取代ISA總線(xiàn)而成為目前臺式計算機的事實(shí)I/O總線(xiàn)標準,在普通PC機和工控機上有著(zhù)廣泛的應用。PCI總線(xiàn)為滿(mǎn)足在插卡和系統存儲器中高速傳輸數據的要求提供了很好的途徑。
PCI總線(xiàn)是一種獨立于處理器的局部總線(xiàn),因此通過(guò)PCI總線(xiàn)插入擴展板,利用并提升普通PC機和工控機對大規模數字信號處理的運算能力和速度是一項非常具有實(shí)用意義的工作。
隨著(zhù)數字技術(shù)日益廣泛的應用,以現場(chǎng)可編程門(mén)陣列(FPGA)為代表的ASIC器件得到了迅速普及和發(fā)展,器件集成度和速度都在高速增長(cháng)。FPGA既具有門(mén)陣列的高邏輯密度和高可靠性,又具有可編程邏輯器件的用戶(hù)可編程特性,可以減少系統設計和維護的風(fēng)險,降低產(chǎn)品成本,縮短設計周期。FPGA與通用CPU相比又具有如下顯著(zhù)優(yōu)點(diǎn):
(1)FPGA一般均帶有多個(gè)加法器和移位器,特別適合多步驟算法中相同運算的并行處理。通用CPU只能提供有限的多級流水線(xiàn)作業(yè)。
(2)一塊FPGA中可以集成數個(gè)算法并行運算。通用CPU一般只能對一個(gè)算法串行處理。
(3)基于FPGA設計的板卡功耗小、體積小、成本低,特別適合板卡問(wèn)的并聯(lián)。
本文介紹的基于PCI總線(xiàn)的FPGA計算平臺的系統實(shí)現:通過(guò)在PC機上插入擴展PCI卡,對算法進(jìn)行針對并行運算的設計,提升普通PC機對大計算量數字信號的處理速度。本設計采用5片FPGA芯片及相關(guān)周邊芯片設計實(shí)現這一并行高速計算平臺,并在該平臺上完成了DES和MD5等算法的加密和解密。文中通過(guò)基于MD5算法設計的加密方案(仿Yahoo郵箱的密碼校驗)進(jìn)行暴力破解,驗證了本系統的可行性以及速度快、性?xún)r(jià)比高等顯著(zhù)優(yōu)點(diǎn)。
1 系統結構
系統利用普通PC機或工控機進(jìn)行控制、數據流下載和結果采集,大計算量的數字運算利用IP-CORE技術(shù)并行地在FPGA中進(jìn)行。將數字信號處理的算法設計為一個(gè)單元模塊,并根據芯片的結構對布局和布線(xiàn)進(jìn)行優(yōu)化,該單元模塊重復利用的技術(shù)被稱(chēng)為IP-CORE技術(shù)。在本系統中利用TP-CORE的可重復利用性,通過(guò)仲裁邏輯調度數據的分配,從而實(shí)現算法的并行處理。
1.1 硬件結構
系統中采用5片ALTERA公司的STRATIX EP1Sl0FPGA芯片,其中4片作為數字信號處理算法CORE的載體(文中稱(chēng)為算法FPGA);l片作為連接PC機與運算CORE的橋接芯片、加載程序、并行總線(xiàn)裁決和中斷判決等仲裁邏輯的載體。與PCI總線(xiàn)的接口使用PLX公司的PCI9054芯片。系統硬件結構如圖l所示。
1.2 邏輯結構
BRIDGE FPGA的程序采用自頂向下的設計方法,其邏輯結構如圖2所示,按功能可分為以下部分:頂層模塊PCI_FPGA_PARALLEL;與PCI9054的接口模塊PCI接口;數據緩存及仲裁部分:數據緩存模塊FIFO、寄存器模塊regpart、數據回傳模塊deserial、內部總線(xiàn)仲裁和流控模塊CORE接口等。
PCI接口部分實(shí)現與PCI9054芯片的接口時(shí)序,使得復用的地址和數據分開(kāi),產(chǎn)生地址空間的選取及使能信號,便于后端處理。
仲裁邏輯部分:
(1)實(shí)現對地址空間內數據緩沖區、各種寄存器的讀寫(xiě),以及根據配置寄存器的內容對算法CORE和橋FPGA做相應的操作(配置、啟動(dòng)、停止、復位等)。
(2)利用緩沖區及FIF0的隊列長(cháng)度信號wrusedw、rdusedw、full和empty進(jìn)行數據流控制。數據由PC機下載時(shí)首先進(jìn)入緩沖區,每一塊算法CORE均對應一個(gè)數據下行FIFO,由FIFO當前狀態(tài)來(lái)判定是否從緩沖區中取數。具體邏輯模型如圖3所示。
(3)返回結果引入本地中斷機制,當有正確結果產(chǎn)生、或無(wú)正確結果但密鑰匹配完成、或系統異常狀態(tài),均產(chǎn)生中斷信號并填寫(xiě)中斷類(lèi)型寄存器,經(jīng)級聯(lián)后產(chǎn)生向PC機的中斷。中斷判決如圖4所示。
(4)實(shí)現與算法core間的協(xié)議邏輯,控制多種數據流的下行以及結果的返回。
2 MD5算法簡(jiǎn)介
MD5(Message Digest 5)報文摘要算法是一種應用廣泛的提取數字指紋的算法標準,它由MIT的密碼學(xué)專(zhuān)家、RSA算法的發(fā)明人之一Rivest設計發(fā)明。MD5算法結構如圖5所示。
對任意長(cháng)度的信息輸入,MD5都將產(chǎn)生一個(gè)長(cháng)度為128bit的輸出,這一輸出可以被看作是原輸入報文的“報文摘要值(Message Digest)”。
MD5的特點(diǎn):
(1)兩條不同的報文具有相同的報文摘要值的可能性極小。
(2)對于預先給定的報文摘要值,要想尋找到一條報文,使得其報文摘要值與某個(gè)給定的報文摘要值相等,在計算上是不可能的。
(3)根據報文的摘要值,要想推測出原來(lái)的報文是極端困難的。
MD5算法被廣泛地應用于網(wǎng)絡(luò )數據完整性檢查以及各種數據加密技術(shù)中。
Yahoo郵箱密碼算法是基于兩次MD5算法。共算法步驟如下:
stepl:對一個(gè)密碼字段(例如:dfeag~hyt),用MD5算法加密:h=md5 (dfertgrhyt)。
step2:將step1所得結果轉換為32Bytes的hex值:hex(h)。
step3:將step2所得結果與一個(gè)yahoo提供的chanllenge值簡(jiǎn)單級聯(lián):string=hex(h)+chanUenge
step4:將step3所得結果再進(jìn)行一次MD5運算:hash=md5(strmg)。
由于未得到實(shí)際Yaheo郵箱密碼生成參數(例如challenge碼),本文構造了相近算法以測試本系統性能。
測試方案如下:
提供一個(gè)已知的challenge值與相應的Hash值,從提供的字典中提取合適密碼,由生成算法計算出對應的Hash值與提供的Hash值匹配來(lái)校驗匹配的密碼。密鑰字典的產(chǎn)生有兩種方式:人為構造字典及系統自加、窮舉產(chǎn)生密鑰。
3 實(shí)測性能分析
實(shí)際系統中算法CORE運算時(shí)鐘為20MHz,64bit數據寬度輸入;采用多級流水線(xiàn)設計及運算速度就是系統運行時(shí)鐘的速度。除運算初期流水線(xiàn)建立過(guò)程和運算結束時(shí)流水線(xiàn)完成過(guò)程,運算速度均可視為20MHz;實(shí)際制成的系統為四片算法FPGA并行運算,實(shí)際吞吐量為4×20M×16bit=1.28Gb;經(jīng)Ahem Quartus 4.1綜合,實(shí)際仲裁邏輯占用3725個(gè)邏輯單元。綜合頻率最高為156.2MHz,單算法邏輯占用7718個(gè)邏輯單元,綜合頻率最高為37.10MHz。
典型的普通PC機定點(diǎn)運算需要多個(gè)指令周期,包括取指令、取數據、計算、保存數據等指令周期,而一個(gè)x86指令周期又由多個(gè)CPU時(shí)鐘周期組成,大大降低了實(shí)際運算速度。由于單個(gè)CORE以20MHz時(shí)鐘流水線(xiàn)運算,相當于一臺普通PC機的運算速度,因此多個(gè)CORE并行運算即可達到多臺PC機并行運算的效率。
采取密鑰字典自FPGA窮舉產(chǎn)生方式,可發(fā)揮算法CORE的最大效能。若采取密鑰字典自PC機下載方式,則實(shí)際速率由PCI總線(xiàn)最高速率決定。但由于字典可以人為選取,大大降低了密鑰選取的盲目性。本系統接入普通PC機上32bit、32MHz的PCI總線(xiàn),單算法CORE連續運算(64bit×20MHz)即可滿(mǎn)足PCI總線(xiàn)全速下載。若使用64bit、66MHz的PCI總線(xiàn)或PCI EXPRESS,將進(jìn)一步提高系統的實(shí)際吞吐量。
本文提出了一種基于FPGA的適合大規模數字信號處理的并行處理結構,利用CORE的可置換性,可以針對不同應用的數字運算設計不同的CORE,系統通用性的特點(diǎn)非常顯著(zhù)。一臺普通PC機中可以同時(shí)插入數塊PCI卡。每塊卡上的任意一塊算法FPGA都可提供相當或超過(guò)一臺普通PC機的運算速度。而每增加一塊算法FPGA,在效率提高一倍的前提下,功耗增加不超過(guò)10W,而體積幾乎不變,成本也只是比普通PC機增加了五分之一。因此.本文提出的并行結構具有極高的性?xún)r(jià)比。
如果將PCI總線(xiàn)接口模塊集成到FPGA中以取代PCI9054芯片,將進(jìn)一步降低硬件成本,減少硬件設計的復雜度;因實(shí)際運算速度與算法的并行度和優(yōu)化有密切的關(guān)系,因此,設計不同應用的CORE以及相關(guān)算法的優(yōu)化是下一步要進(jìn)行的重要工作。
評論