文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2013)11-0053-03
圖形圖像處理技術(shù)是信息處理領(lǐng)域中的一項(xiàng)熱門技術(shù),在計(jì)算機(jī)視覺,、氣象信息,、地球資源勘測等領(lǐng)域得到廣泛的應(yīng)用[1]。隨著人們對圖形圖像信息應(yīng)用需求的擴(kuò)大和計(jì)算機(jī)技術(shù)的飛速發(fā)展,,提高處理的速度成為了圖形圖像處理中需要解決的難點(diǎn)之一,。并行處理[2]是解決大規(guī)模圖形圖像處理問題的有效手段,,但由于體積大、功耗高和難以維護(hù)等特點(diǎn),,使以多處理系統(tǒng)為代表的很多圖形圖像處理系統(tǒng)難以得到廣泛應(yīng)用[3],。多態(tài)并行處理器實(shí)現(xiàn)了單指令多數(shù)據(jù)(SIMD)和多指令多數(shù)據(jù)(MIMD)計(jì)算模式的混合,其結(jié)構(gòu)簡單,,功耗低,,同時在陣列機(jī)上分區(qū)并發(fā)實(shí)現(xiàn)該兩種模式,并且能夠在兩種模式間實(shí)現(xiàn)一步轉(zhuǎn)換[4-5],。其中SIMD控制器能夠針對圖形圖像處理算法開發(fā)出更多的數(shù)據(jù)并行性[6],,提高圖形圖像的處理性能。
1 多態(tài)并行處理器
本文設(shè)計(jì)了一種新型的多態(tài)并行處理器中的SIMD控制器,。該多態(tài)并行處理器是一個陣列機(jī),,由多個處理器簇組成,每個簇是由處理單元(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簇處理單元包含浮點(diǎn)處理器和定點(diǎn)處理器,S簇只包含定點(diǎn)處理器,。
如圖3所示,,單個處理單元由帶有路由器(RU)的ALU、數(shù)據(jù)存儲(D-mem),、指令存儲(I-mem),、鄰接共享存儲和SIMD接口控制器(ICTL)構(gòu)成。
在多態(tài)并行處理器中,,各PE的數(shù)據(jù)和程序的加載均由SIMD控制器控制,,SIMD控制器設(shè)計(jì)的好壞直接影響到各PE的執(zhí)行效率及并行度。
2 SIMD控制器的硬件設(shè)計(jì)
SIMD控制器主要由1個簇控制器模塊,、4個行控制器模塊和4個列控制器模塊構(gòu)成,,如圖1所示,。各模塊功能:簇控制器模塊主要完成整個簇中處理單元的控制,包括協(xié)調(diào)程序和數(shù)據(jù)的加載以及控制整個簇實(shí)現(xiàn)SIMD計(jì)算,;行控制器模塊主要功能是將一行的PE重構(gòu)成SIMD模式,,進(jìn)行數(shù)據(jù)級并行計(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è)計(jì):一是初始化SIMD指令,;二是將行控制器所在行的PE重構(gòu)成SIMD模式進(jìn)行數(shù)據(jù)并行計(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運(yùn)行模式,待檢測到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è)計(jì)分為4個部分:(1)初始化程序/數(shù)據(jù)的加載,;(2)簇控制器對列控制器存儲中計(jì)算結(jié)果的讀?。?3)將PE計(jì)算結(jié)果寫入到列存儲中,;(4)從列存儲中動態(tài)讀取數(shù)據(jù),。狀態(tài)機(jī)如圖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計(jì)算結(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)機(jī)設(shè)計(jì)和實(shí)現(xiàn)了SIMD控制器,,并對電路進(jìn)行了功能驗(yàn)證與DC綜合以及FPGA驗(yàn)證,。結(jié)果表明,SIMD控制器電路工作正常且電路具有良好的可擴(kuò)展性,,實(shí)用性強(qiáng),,能夠滿足多態(tài)并行處理器的要求。
參考文獻(xiàn)
[1] 李勇.一種SIMD多DSP數(shù)字圖像處理系統(tǒng)研究與設(shè)計(jì)[J]. 電子技術(shù)應(yīng)用,,2007,,33(11):71-73.
[2] BOYD C.Data parallel computing[J].ACM Queue,2008,,6(2):30-39.
[3] 李強(qiáng).32位圖像向量處理器關(guān)鍵技術(shù)研究與設(shè)計(jì)[D].大連:大連理工大學(xué),,2009.
[4] 李濤.面向圖形和圖像處理的輕核陣列機(jī)結(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.