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