《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 業(yè)界動(dòng)態(tài) > 基于動(dòng)態(tài)局部重構(gòu)的HCRP協(xié)議的研究

基于動(dòng)態(tài)局部重構(gòu)的HCRP協(xié)議的研究

2009-04-20
作者:祝翔宇

  摘 要: 基于FPGA的動(dòng)態(tài)局部重構(gòu)技術(shù),提出了FPGA片上系統(tǒng)獲取遠(yuǎn)程可下載硬核模塊并動(dòng)態(tài)加載的實(shí)現(xiàn)方式,進(jìn)一步提出了HCRP協(xié)議的基本框架。
  關(guān)鍵詞: 硬件處理資源協(xié)議;可下載硬件;動(dòng)態(tài)局部重構(gòu);內(nèi)部配置存取端口;嵌入式

?

  隨著互聯(lián)網(wǎng)的快速發(fā)展,軟件下載日益常態(tài)化?;诔谋緜鬏攨f(xié)議,用戶可以根據(jù)特定的需要在互聯(lián)網(wǎng)上搜索應(yīng)用軟件,下載并安裝到個(gè)人計(jì)算機(jī)上。Jamil Khatib提出了可下載硬件(downloadable hardware)的概念,即硬核模塊像軟件安裝包一樣由遠(yuǎn)程服務(wù)器提供下載,基于FPGA的系統(tǒng)代替?zhèn)€人計(jì)算機(jī)作為處理終端接入互聯(lián)網(wǎng),用戶在FPGA系統(tǒng)上檢索、下載和安裝所需要的硬核模塊,實(shí)現(xiàn)特定的功能,如CDMA、軟件無(wú)線電、媒體播放、數(shù)據(jù)采集與處理等。Jamil Khatib進(jìn)一步提出,在互聯(lián)網(wǎng)服務(wù)中增加新的應(yīng)用協(xié)議,即硬件處理資源協(xié)議HCRP(Hardware Computing Resource Protocol)[1],以支持可下載硬件。
  Xilinx Virtex系列FPGA及其動(dòng)態(tài)局部重構(gòu)DPR(Dynamic Partial Reconfiguration)[2]技術(shù)可以為以上應(yīng)用提供支持。動(dòng)態(tài)局部重構(gòu)允許可重構(gòu)系統(tǒng)的一部分在系統(tǒng)運(yùn)行過(guò)程中重新配置,其他部分的工作狀態(tài)不受影響,實(shí)現(xiàn)硬件在系統(tǒng)編程。文獻(xiàn)[2]提出了動(dòng)態(tài)局部重構(gòu)系統(tǒng)的兩種實(shí)現(xiàn)方案:基于模塊的重構(gòu)和基于差異的重構(gòu),但其方案十分繁瑣,且需依賴外部工具實(shí)現(xiàn)。文獻(xiàn)[3]提出了一種在嵌入式處理器控制下實(shí)現(xiàn)自重構(gòu)的方法,而文獻(xiàn)[4]是其具體實(shí)現(xiàn)。文獻(xiàn)[5]在文獻(xiàn)[3]的基礎(chǔ)上提出采用嵌入式操作系統(tǒng)作為自重構(gòu)平臺(tái),用Shell腳本控制重構(gòu)。但文獻(xiàn)[5]沒(méi)有對(duì)重構(gòu)系統(tǒng)做模塊化劃分,不能適應(yīng)硬核動(dòng)態(tài)加載的需要。
  基于以上研究,本文提出了一種互聯(lián)網(wǎng)可下載硬件的實(shí)現(xiàn)方式。在動(dòng)態(tài)局部重構(gòu)技術(shù)的支持下,設(shè)計(jì)了一個(gè)基于FPGA的片上系統(tǒng),該系統(tǒng)能夠通過(guò)互聯(lián)網(wǎng)遠(yuǎn)程獲取可下載硬件,由系統(tǒng)自身控制配置過(guò)程,將硬核模塊動(dòng)態(tài)加載到系統(tǒng)中,實(shí)現(xiàn)硬件模塊的“熱插拔”和“即插即用”。這種方式脫離了對(duì)配置工具的依賴,使復(fù)雜的動(dòng)態(tài)局部重構(gòu)能夠通過(guò)一條命令完成。以此系統(tǒng)為HCRP終端原型定義了HCRP的基本框架,包括其通信和傳輸機(jī)制,及客戶端基于HCRP檢索、下載和安裝硬核的機(jī)制,以簡(jiǎn)化和規(guī)范用戶操作。
1 系統(tǒng)實(shí)現(xiàn)
  本系統(tǒng)將Xilinx的XUP V2P開發(fā)板作為硬件平臺(tái),其核心是一塊Virtex-II Pro系列的XC2VP30 FPGA芯片[6],系統(tǒng)硬件模塊如圖1所示。本系統(tǒng)的嵌入式處理器采用MicroBlaze軟核,原因在于:MicroBlaze軟核在芯片內(nèi)的位置和IO管腳可以靈活分配,便于下一階段系統(tǒng)的布局布線和IO管腳分配;MicroBlaze支持的芯片型號(hào)更多,便于系統(tǒng)向其他平臺(tái)的移植;采用MicroBlaze可以盡量降低系統(tǒng)的成本和功耗。

  為了簡(jiǎn)化軟件層開發(fā)的復(fù)雜度,本系統(tǒng)在MicroBlaze上移植了μClinux嵌入式操作系統(tǒng)。μClinux是專門為沒(méi)有MMU的嵌入式處理器開發(fā)的操作系統(tǒng),采用了占用空間更小的romfs文件系統(tǒng)和精簡(jiǎn)的?滋Clibc應(yīng)用程序庫(kù)。μClinux在本系統(tǒng)中主要有以下作用:提供TCP/IP協(xié)議棧和網(wǎng)絡(luò)工具(如Wget等)以支持以太網(wǎng)通信和遠(yuǎn)程數(shù)據(jù)傳輸;對(duì)動(dòng)態(tài)加載和卸載用戶IP硬核的驅(qū)動(dòng)程序提供支持;管理應(yīng)用程序的多進(jìn)程調(diào)度;通過(guò)串口終端提供基本的用戶界面。針對(duì)μClinux的實(shí)時(shí)性問(wèn)題,本系統(tǒng)對(duì)所有外設(shè)的訪問(wèn)均采用中斷方式,并采用一個(gè)32位定時(shí)器產(chǎn)生定時(shí)中斷。
  本系統(tǒng)采用IBM CoreConnect架構(gòu)[8]的片上外設(shè)總線OPB(On-chip Peripheral Bus)連接嵌入式處理器和外設(shè)模塊。ICAP模塊是實(shí)現(xiàn)動(dòng)態(tài)局部重構(gòu)的控制邏輯,而用戶接口是用戶自定義模塊在OPB總線上的掛載點(diǎn)。系統(tǒng)的初始化配置(包括初始硬件比特流、μClinux內(nèi)核映像和boot loader)組合為一個(gè)ACE文件存放在Compact Flash中。系統(tǒng)上電后,System ACE控制器[9]自動(dòng)讀取ACE文件,配置硬件并啟動(dòng)μClinux,然后作為非易失性存儲(chǔ)器被掛載到μClinux文件系統(tǒng)下。系統(tǒng)軟硬件架構(gòu)如圖2所示。

?

2 動(dòng)態(tài)加載機(jī)制
  為實(shí)現(xiàn)硬核模塊的動(dòng)態(tài)加載,在頂層設(shè)計(jì)中采用了模塊化設(shè)計(jì)流程,整個(gè)系統(tǒng)分為可重構(gòu)模塊和靜態(tài)模塊兩部分??芍貥?gòu)模塊為功能模塊,在重構(gòu)過(guò)程中被動(dòng)態(tài)加載的硬核模塊替換;靜態(tài)模塊包括除功能模塊之外的其他部分,如處理器、存儲(chǔ)器等,用于網(wǎng)絡(luò)通信和控制重構(gòu)過(guò)程,在重構(gòu)過(guò)程中保持不變。FPGA資源劃分借助PlanAhead工具[10]完成,可重構(gòu)區(qū)域?yàn)镾LICE_X70Y112至SLICE_X81Y143的矩形區(qū)域,放置可重構(gòu)模塊;其余部分為靜態(tài)區(qū)域,放置靜態(tài)模塊。編譯后得到static_full比特流,描述了FPGA的全局配置,用于系統(tǒng)的初始化;每個(gè)可重構(gòu)模塊分別生成一個(gè)重構(gòu)比特流,描述了可重構(gòu)區(qū)域的配置,可以被動(dòng)態(tài)加載。
  為保證靜態(tài)模塊和可重構(gòu)模塊之間的通信,所有穿越可重構(gòu)區(qū)域邊界的信號(hào)必須通過(guò)總線宏結(jié)構(gòu)連接,如圖3所示??偩€宏(Bus Macro)是通過(guò)硬件布線得到的靜態(tài)宏單元,編譯后放置在特定的位置,重構(gòu)前后不發(fā)生變化,用于保證布線資源的不變性。由于各個(gè)模塊之間相對(duì)獨(dú)立,工具在為模塊內(nèi)部布線時(shí)不會(huì)考慮與之相鄰的模塊。圖3解釋了可重構(gòu)模塊和總線的通信模式。在重構(gòu)期間,來(lái)自可重構(gòu)區(qū)域的數(shù)據(jù)是不正常的,為避免系統(tǒng)進(jìn)入異常狀態(tài),處理器需要在重構(gòu)之前“關(guān)閉”總線宏,重構(gòu)結(jié)束后再“打開”總線宏。PRR接口是一個(gè)標(biāo)準(zhǔn)的OPB總線接口和一個(gè)標(biāo)準(zhǔn)的DCR(設(shè)備控制寄存器)總線接口的結(jié)合,處理器通過(guò)DCR總線發(fā)送0/1命令字,PRR接口收到命令字后對(duì)總線宏的使能信號(hào)置位或復(fù)位,以實(shí)現(xiàn)打開或關(guān)閉操作。C程序語(yǔ)句如下:

?


  XIo_Out32(XPAR_PRR_IF_0_DCR_BASEADDR,0x00000000);
  //Disable Bus Macro
  XIo_Out32(XPAR_PRR_IF_0_DCR_BASEADDR,0x00000001);
  //Enable Bus Macro
  用戶模塊的動(dòng)態(tài)加載是在應(yīng)用程序控制下通過(guò)內(nèi)部配置存取端口(ICAP)實(shí)現(xiàn)的。ICAP是FPGA內(nèi)嵌的固有電路,支持嵌入式處理器在系統(tǒng)運(yùn)行時(shí)讀寫FPGA配置存儲(chǔ)器。本系統(tǒng)將ICAP作為一個(gè)字符設(shè)備集成到μClinux內(nèi)核中,設(shè)備驅(qū)動(dòng)程序按照標(biāo)準(zhǔn)的Linux設(shè)備驅(qū)動(dòng)程序架構(gòu),內(nèi)核接口在adapter.c中定義,實(shí)現(xiàn)了以下系統(tǒng)調(diào)用:
  · open():在內(nèi)核中為此設(shè)備創(chuàng)建一個(gè)節(jié)點(diǎn);
  · close():釋放此設(shè)備在內(nèi)核中的節(jié)點(diǎn);
  · read():從ICAP讀取若干個(gè)字節(jié)到用戶內(nèi)存緩沖區(qū);
  · write():把用戶緩沖區(qū)內(nèi)的若干個(gè)字節(jié)寫回到ICAP;
  · ioctl():處理控制命令字;
  以write函數(shù)為例,其接口函數(shù)的部分C程序如下:
  while(write_count)
  {
  ?  int word_count=0;
  ?  size_t left;
?    left=min(write_count,(size_t)XHI_MAX_BUFFER_BYTES);
?    while(left)? //逐字寫入ICAP模塊的緩沖區(qū)
?    {
??     unsigned long tmp;
??     copy_from_user(&tmp,user_buf,4);
??     XHwIcap_StorageBufferWrite(&(inst->HwIcap),
  ???????????????????????? word_count++,tmp);
??     user_buf+=4;
??     left-=4;
?    }
?    status=XHwIcap_DeviceWrite(&(inst->HwIcap),0,
  ??????????????????? word_count);//整體寫入配置存儲(chǔ)器
?    write_count-=word_count*4;
  }
  重構(gòu)過(guò)程由應(yīng)用程序reconf控制。首先解析比特流首部以獲取首部字節(jié)數(shù)、配置數(shù)據(jù)字節(jié)數(shù)等信息,然后提取配置數(shù)據(jù)依次送至ICAP設(shè)備。配置數(shù)據(jù)的前44個(gè)字節(jié)是ICAP設(shè)備的控制命令字,使ICAP工作在寫時(shí)序下,并記錄可重構(gòu)區(qū)域在配置寄存器中的起始幀地址及長(zhǎng)度;此后是配置數(shù)據(jù)幀序列,每?jī)蓭渲脭?shù)據(jù)之間有一個(gè)間隔(Pad)幀;最后8個(gè)字節(jié)則是可重構(gòu)區(qū)域重新工作的命令字,標(biāo)志著重構(gòu)過(guò)程完成[11]。應(yīng)用程序的部分C代碼如下:/*Read the bitstream header*/
  bit_header=XHwIcap_ReadHeader(fbuffer);//解析比特流首部 
  ……
  /*Read the header (effectively skipping it)*/
  numCharsRead=fread(fbuffer,sizeof(char),bit_header.Header-Length,stream);
  /*Loop through all bitstream data and write to ICAP*/
  for(i=0;i  {
    numCharsRead=fread(fbuffer,sizeof(char),F(xiàn)ILE_BUF_SIZE,
                           stream);
?    numCharsWrite=write(fd,fbuffer,numCharsRead);
  }
  本文用超級(jí)終端作為μClinux的標(biāo)準(zhǔn)輸入輸出環(huán)境,采用一個(gè)乘法器模塊(mult.bit)和一個(gè)加法器模塊(adder.bit)驗(yàn)證系統(tǒng)功能,根據(jù)提示輸入兩個(gè)操作數(shù)(如9和6)。系統(tǒng)初始狀態(tài)為加法器,第一次重構(gòu)加載乘法器,第二次重構(gòu)加載加法器,每次加載完成后系統(tǒng)自動(dòng)調(diào)用硬核模塊,并回顯計(jì)算結(jié)果至超級(jí)終端。經(jīng)驗(yàn)證,本系統(tǒng)能夠?qū)崿F(xiàn)硬核的動(dòng)態(tài)加載,步驟如下:
  (1)系統(tǒng)上電,自動(dòng)加載μClinux;
  (2)使用ping命令確認(rèn)客戶端和服務(wù)器的網(wǎng)絡(luò)連接正常;
  (3)使用wget命令下載硬核模塊至本地文件系統(tǒng);
  (4)使用reconf程序動(dòng)態(tài)加載重構(gòu)比特流。
3 HCRP協(xié)議規(guī)范
  互聯(lián)網(wǎng)的基本協(xié)議是TCP/IP協(xié)議。HTTP是建立在TCP/IP協(xié)議之上的一個(gè)面向?qū)ο蟮膽?yīng)用層協(xié)議,支持在統(tǒng)一的網(wǎng)頁(yè)結(jié)構(gòu)界面下,采用不同的協(xié)議訪問(wèn)不同的服務(wù),如廣泛采用的FTP、SMTP等應(yīng)用層協(xié)議。為了利用HTTP網(wǎng)頁(yè)結(jié)構(gòu)提供較好的用戶操作性,本文定義HCRP為一個(gè)基于TCP/IP協(xié)議的用戶層協(xié)議,并使其與HTTP兼容。
  HCRP采用客戶/服務(wù)器模式,通過(guò)請(qǐng)求/響應(yīng)范式建立連接,每次連接只處理一個(gè)請(qǐng)求,協(xié)議對(duì)前一連接的處理沒(méi)有記憶能力。服務(wù)器將全部硬核模塊按照其適用的FPGA芯片型號(hào)建立索引,客戶端和服務(wù)器建立連接后,根據(jù)自己的芯片型號(hào)(如XC2VP30)向服務(wù)器發(fā)出查詢命令。服務(wù)器則將適用于此芯片的全部硬核模塊列表通過(guò)同一連接返回至客戶端??蛻舳嗽诒镜匚募到y(tǒng)瀏覽列表并選擇所需硬核模塊,重新與服務(wù)器建立連接,采用二進(jìn)制傳輸模式下載至本地文件系統(tǒng)。
  為避免重構(gòu)比特流在傳輸過(guò)程中丟失或被篡改,可以采用加密傳輸方式,并在客戶端增加校驗(yàn),相應(yīng)的解密和MD5工具可以很方便地被集成到嵌入式系統(tǒng)中。本系統(tǒng)只是簡(jiǎn)單地解析重構(gòu)比特流首部,獲取首部和配置數(shù)據(jù)的字節(jié)長(zhǎng)度,進(jìn)行文件完整性校驗(yàn)。為避免局部重構(gòu)破壞系統(tǒng)靜態(tài)區(qū)域的功能,本系統(tǒng)在修改配置存儲(chǔ)器之前預(yù)先解析重構(gòu)比特流首部后的44個(gè)字節(jié),獲取將要被修改的幀地址,驗(yàn)證是否與可重構(gòu)區(qū)域范圍匹配,以確保重構(gòu)過(guò)程的安全。
  隨著半導(dǎo)體工藝和結(jié)構(gòu)的改進(jìn),F(xiàn)PGA的價(jià)格和功耗問(wèn)題將在很大程度上得到解決。與ASIC相比,F(xiàn)PGA的開發(fā)周期很短,更加適應(yīng)快速變化的市場(chǎng)需求??梢灶A(yù)見(jiàn),在手持、移動(dòng)和便攜式消費(fèi)電子領(lǐng)域,基于FPGA單芯片的解決方案將逐漸普及。HCRP協(xié)議能夠充分利用FPGA的靈活性,為此類設(shè)備提供強(qiáng)有力的支持。此外,硬件設(shè)備廠商可以利用HCRP為客戶提供遠(yuǎn)程功能定制、故障修復(fù)和設(shè)備升級(jí)服務(wù)。
  本文提出了一種互聯(lián)網(wǎng)可下載硬件的實(shí)現(xiàn)方式,設(shè)計(jì)了一個(gè)基于FPGA的片上系統(tǒng),該系統(tǒng)能夠通過(guò)互聯(lián)網(wǎng)遠(yuǎn)程獲取硬核模塊并動(dòng)態(tài)加載。系統(tǒng)定義了HCRP協(xié)議的基本框架,解決了實(shí)現(xiàn)HCRP協(xié)議的關(guān)鍵技術(shù)問(wèn)題。但作為一個(gè)互聯(lián)網(wǎng)服務(wù),HCRP協(xié)議仍需進(jìn)一步細(xì)化,例如其通信端口的設(shè)定、請(qǐng)求消息和相應(yīng)消息的格式等。而FPGA的型號(hào)和封裝繁多,HCRP服務(wù)器需要一個(gè)高效的分類和索引算法,這些問(wèn)題還有待進(jìn)一步探討。


參考文獻(xiàn)
[1] SALEM M A,KHATIB J I.An introduction to open-source?hardware development.EEdesign,2004(7).
[2] Xilinx Inc.Partial Reconfiguration.http://toolbox.xilinx.com/??? docsan/xilinx8/books/data/docs/dev/dev0036_8.html.
[3] BLODGET B,MCMILLAN S,LYSAGHT P.A lightweight?approach for embedded reconfiguration of fpgas.Design Automation and Test in Europe(DATE03),IEEE,2003:399-400.
[4] 許駿,晏渭川,彭澄濂.基于模塊的動(dòng)態(tài)可重構(gòu)系統(tǒng)設(shè)計(jì).計(jì)算機(jī)工程與設(shè)計(jì),2008(6).
[5] WILLIAMS J,BERGMANN N.Embedded Linux as a platform for dynamically self-reconfiguring systems-on-chip.The international conference on engineering of reconfigurable systems and algorithms,Las Vegas,Nevada,USA,2004,6.

[6] Xilinx Inc.Virtex-II Pro Complete Data Sheet.http://www.xilinx.com/support/documentation/data_sheets/ds083.pdf.
[7] IBM Inc.CoreConnect Bus Architecture.http://www-01.ibm.com/chips/techlib/techlib.nsf/techdocs/852569B20050FF778-5256991004DB5D9/$file/crcon_pb.pdf.
[8] Xilinx Inc.Microblaze Processor Reference Guide.http://www.xilinx.com/support/documentation/sw_manuals/edk92i_mb_ref_guide.pdf.
[9] Xilinx Inc.System ACE Compact Flash Solution.http://www.xilinx.com/support/documentation/data_sheets/ds080.pdf.
[10] Xilinx Inc.PlanAhead User Guide.http://china.xilinx.com/support/documentation/sw_manuals/PlanAhead_UserGuide.pdf.
[11] Xilinx Inc.Xilinx Application Note XAPP662:In-Circuit?Partial Reconfiguration of RocketIO Attributes.http://www.xilinx.com/support/documentation/application_notes/xapp662.pdf.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。