摘要:提出了一種基于可重構總線的數據并行體系結構。首先,針對現代多媒體處理中存在的問題,提出了一種基于可重構總線的一維處理單元陣列體系結構;其次,設計各處理單元之間的通信模塊以及處理元之間的數據傳遞方式,即可重構數據總線的設計;最后,通過對幾種常用的圖像處理算法的驗證,表明基于可重構總線的一維SIMD體系結構在邏輯上具有可行性。
關鍵詞:可重構總線;數據并行體系結構;FPGA;SIMD
DOI: 10.3969/j.issn.1005-5517.2012.11.007
前言
由于近些年來消費類設備需求的猛增,如數碼相機和數字攝像機等設備,計算機對圖像的處理能力近年來成為大家關注的熱點[1]。但是,傳統的處理器已經不能滿足人們對日益增長的處理能力的要求。本文的體系結構正是針對數字圖像處理的特點,結合并行處理和可重構技術,提高處理器在圖像處理方面的能力[2]。
SIMD計算機是由M.J.Flynn[3]在對計算機系統的分類中提出。根據SIMD結構上的不同,可將其分類為兩種。一種是PE-to-Memory結構的SIMD計算機,PE不含局部存儲器,而由若干存儲器模塊通過對準網絡與 PE相連,各存儲模塊為各PE共享,所以這種結構又稱為共享存儲結構的SIMD計算機。另一種是PE-to-PE,即PE由ALU和局部存儲器組成,PE間通過互聯網絡連結,完成PE之間的數據通訊。這種結構也被稱為分布式局部存儲結構SIMD計算機,在已研究成的SIMD機器中占絕大多數,本文中提出的SIMD核也采用此結構。
基于可重構總線的SIMD體系結構
體系結構模型
基于可重構總線的SIMD體系結構模型如圖1所示,由宿主機(Host)、協處理器(coprocessor)以及數據總線組成。
該模型的存儲結構采用哈佛結構[4],從而在尋址等一系列方面存在優勢[5]。由上圖可以看出該體系結構的主要部分在于PE陣列,共有32個PE,并且相鄰兩個PE之間增加了可重構總線,用于負責PE之間的通信[6],從而引入了鄰居本地化,配置總線指令等相關內容,增強了PE之間通信的靈活性。另外,在PE陣列中,該模型還為每個PE設計了DRAM,為每個處理元提供片上內存,減少了與宿主機的I/ O次數,從而提高了PE陣列的處理能力[7-8]。
本體系結構模型可形式化定義為一個四元組(N,C,I,F),其中:
(1)N(Number of PE)表示處理元的數目,可以根據體系結構所面向的應用做調整,N可以取2的冪次方;
(2)C(Controllor Instuction Set)表示控制器執行指令集,包括程序控制、全局存儲讀寫、數據分發、匯總等;
(3)I(Instruction Set)即指令集,默認為處理元執行的陣列指令,包含算術、邏輯、移位、比較、讀寫、通信、總線配置等操作指令;
(4)F(Interconnect functions)代表處理元間通信連接的函數集,即可重構總線的配置方案,函數根據應用的不同做相應改變。
處理元陣列與控制器之間的連接方式,以及處理元陣列內部各PE的連接方式如圖2所示。
可重構總線
處理元之間的通信是通過可重構總線來完成的,如圖2所示,每個處理元都有三個端口(segment_L,segment_R,LR_insidecon)。通過這些端口的打開與閉合,將可重構總線根據不同的需要劃分為獨立的段總線,從而增強PE之間通信的靈活性[9]。
可重構總線的可重構特性實際上就是依靠PE的東、西端口來實現得。通過東、西端口的閉合和斷開來控制PE與總線的連接狀態。如圖3所示在本文所提出的一維SIMD陣列體系結構中,每兩個相鄰的PE之間都有一個可重構的段總線將二者相連。正是這些段總線將PE陣列串聯起來,保證了PE之間通信的靈活性、可配置性[10]。
圖4所示的是由4個PE所組成的一維處理元陣列。在圖中共有3段可重構總線將PE串聯起來。由圖中可清晰地看出,所謂的可重構總線并不是一個數據總線,而是多個段總線組合而成。正是因為這種組合結構以及每個 PE內端口的存在,才使得總線有了可重構的特性。
軟件仿真
按照執行單元的不同,指令可以分為控制器指令、PE指令。由控制器負責執行的指令都為標量指令,因為控制器內部并沒有并行執行單元。對于由PE執行的指令來說,既有標量指令又有向量指令。本小節將從標量指令、向量指令兩個方面來總結用Xilinx ISE對PE主要指令進行仿真的結果。
標量指令仿真
PE中的標量指令都是條件判斷執行指令。這類指令的特點是先從控制器內部的主解碼器中得到指令相關的信號量,但各PE是否響應這些信號量還取決于各PE內部獨立的PSR。判斷PSR是否滿足條件,滿足則PE響應該指令的相關信號量,不滿足則PE忽略該指令。
下面測試標量指令中的可重構總線與Router之間的傳輸指令。用到的指令有西端口發送、東端口條件接收指令,以此來說明PE之間的通信方式以及各指令之間的配合使用。測試代碼如下:
PRST;總線復位指令
PCONIEW;東西端口內部斷開指令
PRINDEX R1;讀取PE序號至R1寄存器中
PADDI R2, R0,1 ;立即數加法:[R2] = [R0] + 1
PCMPIE R1, R2;判斷R1寄存器中的值是否等于R2寄存器中的值
PMOVRT R1;將R1寄存器中的值寫入Router中

PSNDW;西端口發送指令
PRCVEC;東端口條件接收指令
仿真結果如圖5。由圖5可以看出,雖然PE1,PE2的西端口都收到了上一PE發送的數據,但只有PE1真正將收到的數據寫入Router,只有寫入Router中才算是真正接收數據。這是因為只有PE1滿足西端口接收的條件,即R1中的數據等于R2中的數據。
向量指令仿真
根據指令功能的不同,我們將PE的向量指令分為:算術邏輯操作指令、比較操作指令、寄存器與DRAM之間的傳輸指令、寄存器與Router之間的傳輸指令、可重構總線與Router之間的傳輸指令、總線配置指令。下面將以可重構總線與Router之間的傳送指令為例,來說明指令的執行過程與仿真結果。測試代碼如下:PRST;總線復位PDCONIEW;東西端口內部斷開
PRINDEX R1;將PE序號寫入R1寄存器
PMOVRT R1;將R1的值送往Router
PSNDE;東端口發送
PRCVW;西端口接收
仿真結果如圖6。由圖6可見,PE1的Router中最先保存的是PE1的R1寄存器發送的數據1,然后從其西端口接收到PE0的Router發送的數據0,并將其保存至PE1的Router。

FPGA驗證
下面將整個體系結構和用于測試的程序下載到FPGA開發板上進行硬件驗證。我們選用的是Xinlinx公司的Spartan 3E開發板。主要特性:50萬門,XC3S500E-4FG320C芯片;50MHz晶體時鐘振蕩器;128Mbit并行Flash,16Mbit SPI Flash,64MByte DDR SDRM。
為了便于觀看FPGA開發板上程序的運行情況,我們選用Xilinx公司的ChipScope工具進行抓取結果。
將ChipScope的抓取結果與程序的仿真結果相對比,可以看出PE3的 DRAM寫入數據都為46,而其計算過程均為先自身計算得到13,而后加上PE2發送的數據12,從而得到25。接著收到PE1發送的計算結果21后,與之相加得到46。
由圖7和圖8的對比可以看出,FPGA開發板上的動遷結果與程序仿真得到的結果一致,證明了本系統結構的設計在邏輯上的正確性。
總結
本文以數據并行體系結構的關鍵技術為研究對象,針對于圖像處理算法,以并行運算和可重構總線為技術支撐,提出了區別于傳統體系結構且能滿足變化需求的SIMD體系結構。通過對體系結構內部各重要模塊的分析和研究,在不斷實驗、總結的過程中,完善體系結構本身的設計,增加處理元陣列中的數據通信,并根據實現過程中遇到的問題修改指令集,使圖像處理的并行算法有了進一步優化的根基,為后續體系結構的擴展以及SIMD核的廣泛應用打下了牢固的基礎。
參考文獻:
[1] 史元春,徐光祐.中國多媒體技術研究[J].中國圖像圖形學報,2010,(7)
[2] Todman T J, Constantinides G A, Wilton S J E. Reconfigurable Computing: Architectures and Design methods[J]. IEE Proceedings: Computers and Digital Techniques, 2005, 152(2):193-207.
[3] M.J.Flynn, Some Computer Organizations and Their Effectiveness[J].Computers, IEEE Transactions, 1972
[4] Ikuo Yasui. Microprocessor with Harvard Architecture[P]. US Patent 5,034,887, 1991
[5] 李靜梅.現代計算機體系結構[M].北京:清華大學出版社,2009:120-124
[6] Hatem M. El-Boghdadi, Ramachandran Vaidyanathan, Jerry L. Trahan and Suresh Rai. On the Communication Capability of the Self-Reconfigurable Gate Array Architecture[J]. 9th Reconfigurable Architectures Workshop in Proc. Int. Parallel and Distrib. Proc. Symp. 2002
[7] Patterson D, Anderson T, Fromm R, et al.A Case for Intelligent RAM: IRAM[J]. Micro, IEEE,1997,28,(06):211-214
[8] Elliott D. Computational-RAM: The Case for SIMD Computing in Memory[J]. ISCA’97 Workshop on Mixing Logic and DRAM,1997, 27,(06):301-307
[9] El-Boghdadi, Hatem Mahmoud El-Sayed. On Implementing Dynamically Reconfigurable Architectures[J]. Electrical and Computer Engineering of Louisiana State University, 2003
[10] Guo-chang Zhou, Zhong Wang, De-liang Che and Guo-chen Feng. The Improved Design of Embeded SIMD Coprocessor[J]. Computer Engineering and Applications, 2004, 40,(31): 13-16