文獻標識碼: A
文章編號: 0258-7998(2013)11-0053-03
圖形圖像處理技術是信息處理領域中的一項熱門技術,在計算機視覺、氣象信息、地球資源勘測等領域得到廣泛的應用[1]。隨著人們對圖形圖像信息應用需求的擴大和計算機技術的飛速發展,提高處理的速度成為了圖形圖像處理中需要解決的難點之一。并行處理[2]是解決大規模圖形圖像處理問題的有效手段,但由于體積大、功耗高和難以維護等特點,使以多處理系統為代表的很多圖形圖像處理系統難以得到廣泛應用[3]。多態并行處理器實現了單指令多數據(SIMD)和多指令多數據(MIMD)計算模式的混合,其結構簡單,功耗低,同時在陣列機上分區并發實現該兩種模式,并且能夠在兩種模式間實現一步轉換[4-5]。其中SIMD控制器能夠針對圖形圖像處理算法開發出更多的數據并行性[6],提高圖形圖像的處理性能。
1 多態并行處理器
本文設計了一種新型的多態并行處理器中的SIMD控制器。該多態并行處理器是一個陣列機,由多個處理器簇組成,每個簇是由處理單元(PE)組成的二維陣列,是一種較常見的陣列結構,這種簇結構可以分層次構成。如圖1所示,一個基本簇是由16個PE組成的4×4陣列,處理單元通過近鄰互聯組成二維陣列。每一行有行控制器(RC),每一列有列控制器(CC),整個簇由簇控制器進行控制。
多態并行處理器包含1個前端處理器、4個F簇、4個S簇、一些專用硬件加速器、一個帶有緩存的片上SRAM存儲和內部互聯通道,如圖2所示。F簇處理單元包含浮點處理器和定點處理器,S簇只包含定點處理器。
如圖3所示,單個處理單元由帶有路由器(RU)的ALU、數據存儲(D-mem)、指令存儲(I-mem)、鄰接共享存儲和SIMD接口控制器(ICTL)構成。
在多態并行處理器中,各PE的數據和程序的加載均由SIMD控制器控制,SIMD控制器設計的好壞直接影響到各PE的執行效率及并行度。
2 SIMD控制器的硬件設計
SIMD控制器主要由1個簇控制器模塊、4個行控制器模塊和4個列控制器模塊構成,如圖1所示。各模塊功能:簇控制器模塊主要完成整個簇中處理單元的控制,包括協調程序和數據的加載以及控制整個簇實現SIMD計算;行控制器模塊主要功能是將一行的PE重構成SIMD模式,進行數據級并行計算以及初始化SIMD指令;列控制器模塊主要完成對簇內共享存儲和互聯數據通道的控制。
狀態跳轉說明如下:
(1)IDLE:空閑狀態。接收到初始化請求后,跳轉至INIT_DATA狀態,開始加載數據/指令。
(2)INIT_DATA:初始化指令/數據到簇緩存狀態。簇緩存大小有限,指令/數據的加載需分批進行,待當前批的指令/數據加載完成后,跳轉到SEND_DATA狀態。
(3)SEND_DATA:發送指令/數據狀態。指令/數據加載完成后,簇控制器將簇緩存中的指令/數據廣播給行、列控制器,若檢測到數據包頭信息為寫操作,則發送完相應指令/數據后,跳回IDLE狀態;若檢測到為讀操作,則跳轉至RD_DATA。
(4)RD_DATA:讀數據狀態。根據包頭所含數據大小信息,待接收完列控制器發送的所需數據后,跳轉至IDLE狀態。
2.3 行控制器
行控制器分為兩個部分進行設計:一是初始化SIMD指令;二是將行控制器所在行的PE重構成SIMD模式進行數據并行計算,如圖5所示。
各狀態說明如下:
(1)IDLE:空閑狀態。若檢測到初始化使能及數據有效信號,則開始解析數據包,狀態跳轉到RECV_INSTR_
PACK;若檢測到路由器請求信號,則跳轉到RECV_RT狀態,同時給路由器一個接收數據包響應信號。
(2)RECV_INSTR_PACK:接收指令包狀態。若數據經檢測不是加載給本控制器,則跳回至IDLE狀態;若是加載給本行控制器且是寫操作,則跳轉到INIT狀態。
(3)INIT:指令初始化狀態。指令加載完成后,跳轉回IDLE狀態。
(4)RECV_RT:接收路由器包狀態。若檢測到CALLC指令,則給行控制器所在行的PE發送請求,同時狀態跳轉到WAIT;若路由器傳來的數據包有誤,則跳回IDLE狀態。
(5)WAIT:等待狀態。給行控制器所在行的4個PE發送SIMD請求信號后,PE停止取址,待流水線中的指令排空且4個PE均返回了響應信號后,跳轉至SEND_INSTR狀態。
(6)SEND_INSTR:發送指令狀態。將從解析出的起始地址開始的指令同時發送給所在行的4個PE以執行SIMD運行模式,待檢測到RETC指令后,停止發送指令,給路由器發送請求信號,同時給4個PE一個結束信號(PE則繼續之前的MIMD取址),此時跳轉到SEND_RT狀態。
(7)SEND_RT:發送路由器包狀態。接收到路由器響應信號后,行控制器發送數據包,同時跳轉回IDLE狀態。
2.4 列控制器
列控制器模塊的設計分為4個部分:(1)初始化程序/數據的加載;(2)簇控制器對列控制器存儲中計算結果的讀取;(3)將PE計算結果寫入到列存儲中;(4)從列存儲中動態讀取數據。狀態機如圖6所示。
各狀態說明如下:
(1)IDLE:空閑狀態。若檢測到廣播的初始化使能及數據有效信號,則開始解析數據包,同時跳轉到RECV_PACK狀態;若檢測到路由器請求信號,則跳轉到RECV_RT_PACK狀態。
(2)RECV_PACK:接收初始化數據包結束狀態。若檢測到不是發送給本列控制器的數據,則下一狀態跳轉回IDLE,繼續等待下一個廣播包頭;否則,若操作類為寫,則狀態跳轉到INIT_DATA,若為讀,則跳轉到RD_DATA狀態。
(3)INIT_DATA:初始化數據狀態。將初始化數據廣播給對應列存儲和4個PE,待初始化數據完成,跳回IDLE狀態。
(4)RD_DATA:讀數據狀態。根據包頭中信息,簇控制器從列存儲讀取數據,待數據讀取完成,跳回IDLE狀態。
(5)RECV_RT_PACK:接收路由器包頭狀態。開始接收由路由器傳來的數據包頭,此時有兩種不同的數據包格式,一種用于動態讀取數據(MVF指令),另一種用于將數據寫入列存儲(MVT指令)。若檢測到是MVT指令,則跳轉到RECV_DATA狀態;若檢測到是MVF指令,則跳轉到WAIT_ACK狀態。
(6)RECV_DATA:將PE計算結果寫入列存儲。數據寫入完成后,跳轉到IDLE狀態。
(7)WAIT_ACK:等待路由器響應狀態。請求使用路由器傳輸數據后,必須等待路由器空閑才能得到響應,等到響應信號后跳轉到SEND_DATA狀態。
(8)SEND_DATA:發送數據狀態。根據數據包頭中包含的數據起始地址和大小動態讀取列存儲內數據,當請求的數據讀取完成后跳轉到IDLE狀態。
本文采用狀態機設計和實現了SIMD控制器,并對電路進行了功能驗證與DC綜合以及FPGA驗證。結果表明,SIMD控制器電路工作正常且電路具有良好的可擴展性,實用性強,能夠滿足多態并行處理器的要求。
參考文獻
[1] 李勇.一種SIMD多DSP數字圖像處理系統研究與設計[J]. 電子技術應用,2007,33(11):71-73.
[2] BOYD C.Data parallel computing[J].ACM Queue,2008,6(2):30-39.
[3] 李強.32位圖像向量處理器關鍵技術研究與設計[D].大連:大連理工大學,2009.
[4] 李濤.面向圖形和圖像處理的輕核陣列機結構[J].西安郵電學院學報,2012,17(3):41-47.
[5] Li Tao.A polymorphic array architecture for graphics and image processing[C].2012 Fifth International Symposium on PAAP,2012:242-249.
[6] MAROWKA A,GAN R.Back to thin-core massively parallel processors[J].IEEE Computer,2011,44(12):49-54.