欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

圖像處理引擎及包含圖像處理引擎的圖像處理系統的制作方法

文檔序號:6608366閱讀:198來源:國知局
專利名稱:圖像處理引擎及包含圖像處理引擎的圖像處理系統的制作方法
技術領域
技術領域涉及圖像處理引擎及包含圖像處理引擎的圖像處理系統,特別涉及用總線連接CPU和直接存儲器存取控制器的圖像處理引擎及包含圖像處理引擎的圖像處理系統。
背景技術
隨著半導體工藝的微細化,在1個LSI上實現大規(guī)模系統的SOC(系統芯片)化或在1個封裝內搭載多個LSI的SIP(系統級封裝)等技術成為主流。通過該邏輯的大規(guī)?;?,如在嵌入式用途中看到的那樣,能夠在1個LSI內安裝CPU核心和圖像編解碼加速器或大規(guī)模DMAC模塊等完全不同的功能。
此外,半導體工藝的微細化使LSI穩(wěn)態(tài)下的漏電流增加,漏電流造成的功耗的增加成為問題。近年來,通過停止向未使用模塊供給時鐘、或切斷供給電源等,來實現功耗減少。這些降低功率是睡眠等待機狀態(tài)時的降低功率。
另一方面,在用便攜終端等來視聽圖像的情況下,LSI內的大致全部模塊以穩(wěn)態(tài)工作,所以不能采用上述待機狀態(tài)時的降低功率手法。穩(wěn)態(tài)時的功耗與工作頻率、邏輯量、晶體管的激活率、及供給電壓的平方成正比。因此,降低功率可以通過減小這些要素來實現。
為了降低工作頻率,可以通過用并行化等增加1個周期中處理的處理量來實現。它傾向于增加所需的邏輯量,增加功耗,但是能夠低速工作,能夠減少時序關鍵路徑,所以能夠降低供給電壓,隨之能夠減少功耗。因此,近年來,與提高工作頻率相比,SIMD型ALU、或多處理器等通過提高并行度來降低功率成為主流。
(日本)特開2000-57111號公報示出了SIMD型ALU。它通過使運算器并行工作來增加1個周期中運算的處理量,結果,實現了工作頻率減少。在圖像處理等對每個像素實施同一運算的情況下,該SIMD型ALU很有效。
(日本)特開2000-298652號公報示出了多處理器。它通過共享多處理器使用的指令存儲器,減少指令存儲器的總邏輯量,實現了功率降低。
(日本)特開2001-100977號公報示出了VLIW型CPU。VLIW通過并行布置運算器,使其并行工作,來減少所需處理周期,實現了功率降低。
專利文獻1(日本)特開2000-57111號公報專利文獻2(日本)特開2000-298652號公報專利文獻3(日本)特開2001-100977號公報在專利文獻1中,公開了SIMD型ALU。一般的圖像處理是對整個二維的塊實施同一運算的算法。在用SIMD型ALU來實現它的情況下,每個周期供給只有通用寄存器的讀寄存器號和寫寄存器號不同的同一指令。這意味著每個周期取指令,必須每個周期存取保存著指令的存儲器。存儲器消耗的功率在整個LSI的功耗中所占的比例比較高。因此,每個周期讀出指令存儲器使功耗增加。
此外,SIMD型ALU是對有限的輸入數據進行運算的結構。例如,在進行縱向的卷積運算等的情況下,用多個指令串來進行各元素的運算,最后將各運算結果相加。在考慮進位的情況下,進行作為預處理的位擴展、或作為后處理的舍入處理等,對于實際的卷積運算,造成處理周期增大。因此,需要高的工作頻率,功耗提高。
在專利文獻2中,公開了通過減少多處理器的面積來降低功率。根據該文獻,只有進程工作著的處理器才存取共享指令存儲器。因此,在多個處理器中進程同時工作著的情況下,發(fā)生指令存儲器存取競爭,處理器的工作效率顯著降低,發(fā)生性能降低。這樣,處理器的指令供給依賴于指令存儲器存取,消耗的功率的比率也很大。
在專利文獻3中,公開了VLIW型CPU。根據該方式,隨著使并行工作的運算器數增加,1個周期中讀出的指令數也增加,功耗很大。此外,寄存器的端口數與運算器數成正比來增加,面積成本很大,這也使功耗增大。

發(fā)明內容
因此,在本申請中,提供用處理器來進行圖像處理的情況下的降低功耗技術。
例如在指令的操作數中設有指定二維的源寄存器和目的寄存器的部分,具有在多個周期中使用多個源寄存器來執(zhí)行運算、得到多個目的的單元。此外,在利用多個源寄存器花費多個周期來得到目的的指令中,將數據舍入運算器連接在流水線的最后一級上。
此外,將多個CPU串聯連接,共享地使用共享型的指令存儲器。此時,在各CPU的指令操作數中,具有用于控制相鄰的CPU間的同步的字段,設有進行同步化控制的部件。
通過這些結構,例如通過減少存取指令存儲器的次數,來減少讀出指令存儲器時消耗的功率。此外,通過減少指令數和共享指令存儲器,通過減少指令存儲器的總容量,來減少晶體管的充放電數,實現功耗降低。


圖1是本實施例的嵌入式系統的框圖。
圖2是本實施例的圖像處理部6的框圖。
圖3是本實施例的移位型總線50的框圖。
圖4是本實施例的移位寄存器槽500的框圖。
圖5是本實施例的移位型總線50的時序圖。
圖6是本實施例的圖像處理引擎66的框圖。
圖7是本實施例的運算的一例。
圖8是本實施例的CPU部30的框圖。
圖9是本實施例的生成用于控制由指令譯碼部303生成的寄存器文件304的讀出端口和寫入端口的控制線308、和數據存儲器35的存取地址45的流程圖。
圖10是本實施例的指令存儲器控制部32的框圖。
圖11是本實施例的數據存儲器控制部33的框圖。
圖12是本實施例的局部DMAC 34的框圖。
圖13是本實施例的數據路徑部36的框圖。
圖14是第2實施例的圖像處理部66的框圖。
圖15是第2實施例的矢量運算部46的框圖。
圖16是第2實施例的指令存儲器控制部47的框圖。
圖17是本實施例的用于說明輸入同步的停止(stall)條件的圖。
圖18是本實施例的用于說明輸出同步的停止條件的圖。
圖19是本實施例的用于說明圖像處理引擎間同步的停止條件的圖。
圖20是第3實施例的圖像處理引擎66內布置的CPU部的結構圖。
圖21是用于說明內積運算的例子的圖。
圖22是現有的SIMD型運算器的結構。
圖23是本實施例的運算器的結構圖。
圖24是用于說明伴隨轉置的內積運算的例子的圖。
圖25是用于說明卷積運算的例子的圖。
圖26是本實施例的運算器的結構圖。
具體實施例方式
以下,用圖來說明本發(fā)明的實施例。
實施例1參照附圖來詳細說明本發(fā)明的第1實施例。圖1是本實施例的嵌入式系統的框圖。本嵌入式系統將下述部分相互連接在內部總線9上CPU1,進行系統的控制和通用性處理;流處理部2,進行MPEG等圖像編解碼器的1項處理即流處理;圖像處理部6,與流處理部2合作來進行圖像編解碼器的編碼和解碼;聲音處理部3,進行AAC或MP-3等聲音編解碼器的編碼和解碼;外部存儲器控制部4,控制由SDRAM等構成的外部存儲器20的存取;PCI接口5,用于與標準總線即PCI總線22相連;顯示控制部8,控制圖像顯示;以及DMA控制器7,對各種IO設備進行直接存儲器存取。
在DMA控制器7上,經DMA總線10連接著各種IO設備。在IO設備上,連接著攝像機等輸入NTSC信號等的圖像的圖像輸入部11、輸出NTSC等圖像的圖像輸出部12、話筒等輸入聲音的聲音輸入部13、揚聲器或進行光輸出等的聲音輸出的聲音輸出部14、遙控器等進行串行傳送的串行輸入部15、串行輸出部16、TCI總線等用于輸入流的流輸入部17、硬盤等用于輸出流的流輸出部18及各種IO設備19。在PCI總線22上,連接著硬盤或閃速存儲器等各種PCI設備23。
在顯示控制部8上,連接著顯示設備即顯示器21。圖像處理部6是對二維圖像實施圖像編解碼或圖像的放大縮小、或圖像的濾波等處理的處理部。這樣,本嵌入式系統是具有圖像和聲音的輸入輸出、進行圖像和聲音處理的系統。例如,有手機、或HDD記錄器、監(jiān)視裝置、車載圖像處理裝置等。
圖2是本實施例的圖像處理部6的框圖。圖像處理部6經內部總線橋60被連接在內部總線9上。內部總線橋60經路徑63被連接在內部總線主控制部61上,經路徑64被連接在內部總線從控制部62上。內部總線主控制部61是圖像處理部6對內部總線9成為總線主控器、生成讀存取或寫存取的請求、將請求輸出到內部總線橋60的塊。在對內部總線9寫存取時,輸出請求、地址、數據。在對內部總線9讀存取時,輸出請求和地址,在幾個周期后,讀數據被返回。內部總線從控制部62是接受從內部總線9輸入、經由內部總線橋60輸入的讀請求或寫請求、對應地進行處理的塊。內部總線橋60是對內部總線9和內部總線主控制部61間、及內部總線9和內部總線從控制部62之間轉交的請求或數據進行仲裁的塊。移位型總線50是在圖像處理部6內的塊間傳送數據的總線。各塊和移位型總線50由3種信號線組相連。首先,使用圖3和圖4,說明移位型總線50。
圖3是移位型總線50的框圖。在移位型總線50上,作為與各塊的接口,連接著3種信號線組。因此,信號線組50a、50b、50c被連接在1個塊上,信號線組51a、51b、51c被連接在另一個塊上,信號線組55a、55b、55c被連接在另一個塊上。信號線組50a、50b、50c被連接在移位寄存器槽500上,信號線組51a、51b、51c被連接在移位寄存器槽501上,信號線組55a、55b、55c被連接在移位寄存器槽505上。各移位寄存器槽500、501、505被串聯連接。例如,移位寄存器槽500的輸出50e被輸入到移位寄存器槽501的51d中,移位寄存器槽501的輸出50f被輸入到移位寄存器槽500的51g中。同樣,移位寄存器槽505的輸出50e被輸入到移位寄存器槽500的50d中,移位寄存器槽500的輸出50f被輸入到移位寄存器槽505的55g中。信號線500p是向每個移位寄存器槽供給的時鐘停止信號500p,被輸入到50p端子、51p端子、55p端子中。時鐘停止信號500p將在后面描述。移位寄存器槽500、501、505除了后述自身塊ID以外,是同一結構。因此,作為代表,詳細說明移位寄存器槽500。
圖4是移位寄存器槽500的框圖。在移位寄存器槽500上,連接著與各塊的接口即信號線組50a、50b、50c、和塊間接口即信號線組50d、50e、50f、50g。對于這些信號線組50a、50b、50c、50d、50e、50f、50g,將信號的意義總結在表1至表7中。這里,信號線組50b、50d、50g是輸入信號,50a、50c、50e、50f是輸出信號。其中,各信號線組50a、50b、50c、50d、50e、50f、50g是在同一周期中有效的值。
表1表1 信號線組50a

表2表2 信號線組50b

表3表3 信號線組50c

表4表4 信號線組50d

表5表5 信號線組50e

表6表6 信號線組50f

表7表7 信號線組50f

信號線組50d是輸入信號,被保存到寄存器510中。寄存器510的輸出即延遲了1個周期的右旋輸入信號組511被輸入到BID譯碼器512和選擇器513、及信號線組50a中。向BID譯碼器512中輸入輸入信號組511中的至少WE、BID。BID譯碼器512具有用于識別自身的塊號的塊ID[4:0]。
圖5示出右旋移位型總線50的時序圖。用本時序圖和圖4的移位寄存器槽500的信號線組,來說明右旋移位型總線的總線協議。其中,本時序圖中的自身的塊ID是“B”。在輸入的EID和塊ID不等、而且WE為1的情況下,使選擇器513選擇信號線組511,由信號線組511向信號線組50e輸出。結果,信號線組50d被延遲1個周期而輸出到信號線組50e,投入到下一級移位寄存器槽中,作為有效的數據寫事務被繼承。該協議是圖5中的數據移位輸出。接著,在輸入的EID和塊ID相等、而且WE為1的情況下,識別為向自身的塊的輸入,將信號線組50a的R_WE_IN信號設為1。在該R_WE_IN信號為1的情況下,各塊識別出來自右旋移位型總線的輸入是數據寫事務,并執(zhí)行數據寫處理。該協議是圖5中的數據寫。
進而,在數據寫條件已成立的情況下,使選擇器513選擇輸入信號線組50b一側,由輸入信號線組50b向信號線組50e輸出。此時,向輸入信號線組50e的SBR_WE_OUT輸出輸入信號線組50b的SBR_OUT_REQ。在SBR_OUT_REQ為0的情況下,作為無效的事務被輸入到下一級移位寄存器槽中。該協議與圖5中的數據寫相同。在SBR_OUT_REQ為1的情況下,作為有效的事務被輸入到下一級移位寄存器槽中。這是圖5中的數據寫及數據輸出。其中,在輸入的WE為0的情況下,識別出輸入了無效的事務,使選擇器513選擇輸入信號線組50b一側,能夠從自身塊進行數據寫。
根據這些BID譯碼器512的動作,能夠進行接受來自信號線組50d的輸入作為數據寫事務的動作,將信號線組50b輸出到下一級移位寄存器槽作為數據寫事務的動作,以及在不是對自身的塊的數據寫事務的情況下,將該事務繼承到下一級的動作。由此,來實現從左側的塊向右側的塊的右旋的數據傳送。
同樣,通過對上述說明,將信號線組50d置換為信號線組50g,將信號線組50e置換為信號線組50f,將信號線組50a置換為信號線組50c,將寄存器510置換為寄存器514,將BID譯碼器512置換為BID譯碼器516,將選擇器513置換為選擇器517,將SBR_OUT_REQ信號置換為SBL_OUT_REQ信號,來實現從右側的塊向左側的塊的左旋的數據傳送。
其中,在從信號線組50a和信號線組50c同時對存儲器等使用單端口存儲器的存儲器發(fā)生數據寫事務的情況下,發(fā)生存儲器寫端口的競爭。為了避免它,有幾種方式。1種是使一方的移位型總線停止(stall),使來自一方的數據寫優(yōu)先。在此情況下,將競爭信號向全部塊廣播并停止。此外,通過將信號線組50a和信號線組50c投入到FIFO中,能夠減少競爭的頻度。再者,在使用這種存儲器的情況下,通過采用交叉(interleaved)型存儲器結構,將來自右旋移位型總線和左旋移位型總線的寫入設為寫入到不同體存儲器(別バンクメモリ),能夠避免競爭。其中,通過使數據流是單純的,且塊間的數據轉交使用右旋移位型總線,來自外部存儲器的讀入、即經內部總線橋60的數據寫事務使用左旋移位型總線,由此能夠避免競爭。此外,對1個存儲器,從右旋移位型總線和左旋移位型總線在同一周期中發(fā)生數據寫事務而競爭的概率非常小。因此,可以說性能降低的比例很小。
通過本方式,不用具有一般時序關鍵的全局的總線仲裁電路,就能夠實現總線傳送。此外,用移位寄存器槽500內的寄存器510、514,以塊為單位經寄存器,在實際的LSI的平面布置圖中,能夠減少長的布線和時序關鍵路徑。一般,在三態(tài)總線方式、或縱橫制開關型總線中,在塊數增加的情況下,時序關鍵路徑、或布線量增加;但是根據本方式,在增加了總線上連接的塊數的情況下,也能夠抑制時序關鍵路徑和布線量增加。
再者,在多個塊間,能夠在同一周期中并行傳送數據,能夠得到很高的數據傳送性能。特別是在只對相鄰的塊傳送數據的情況下,能夠得到與塊數成正比的數據帶寬。這樣,移位型總線50的總線協議只是數據的寫。在數據寫的總線協議中,能夠在與請求信號(WE_OUT)同一周期中,輸出地址(ADDR_OUT)和數據(DATA_OUT),與用FIFO或隊列保持狀態(tài)的同時執(zhí)行的總線結構相比,能夠構成更單純的總線。
時鐘停止信號500p被輸入到50p端子中。在該時鐘停止信號50p信號活動的情況下,選擇器513和選擇器517都選擇信號線組50d和信號線組50g。由此,從輸入到輸出,不經寄存器而直通傳播。通過本方式,例如在停止了1個塊的時鐘的情況下,也能夠傳送數據。該移位型總線50沒有全局的總線仲裁電路,所以通過至少只向應工作的塊供給時鐘,能夠在塊間傳送數據,通過減少工作的寄存器數,能夠減少功耗。其中,通過向整個移位型總線50供給時鐘,而不向各塊供給時鐘,也能夠以與寄存器510、514、518相應的功率增加,來停止各塊。
這樣,移位型總線50能夠用單純的接口來連接相鄰的塊間。因此,通過增加塊ID字段,能夠連接多個塊。在本實施例的說明中,說明了圖像處理部6內的公共總線,但是不限于此。例如,通過在LSI的管腳上采用移位型總線接口,能夠串聯連接多個LSI,不僅能夠與相鄰的LSI,而且能夠與布置得遠離的LSI進行通信。其中,在LSI間連接中,使用高速串行接口等,也能夠實現管腳數減少。
此外,在移位型總線50中,具有Last信號。與數據傳送同時,在該信號線為“1”的情況下,使后述同步控制部473內的數據存儲器就緒計數器DMRC進行遞增計數。由此,在指令級實現塊間的同步化。詳細情況將在后面描述。其中,在移位型總線中,也具有讀事務。該讀事務也將在后面描述。
再用圖2來說明圖像處理部6。在移位型總線50上連接著多個塊。除了先前所示的內部總線主控制部61、內部總線從控制部62以外,還連接著具有整個圖像處理部6可共享的存儲器的共享局部存儲器65、根據軟件來工作的對二維的圖像進行圖像編解碼或圖像的旋轉、放大縮小等處理的多個圖像處理引擎66、67、執(zhí)行圖像處理的一部分處理的專用硬件68等。作為專用硬件68的一例,是處理MPEG-2或H.264編碼標準中的、編碼時的運動預測等的塊。但是,專用硬件68的處理內容與本發(fā)明的本質沒有關系,所以省略其說明。圖像處理引擎66、67是處理器型的塊,能夠在移位型總線上連接多個。共享局部存儲器65、圖像處理引擎66、67、專用硬件68、內部總線主控制部61、內部總線從控制部62分別具有獨自的塊ID,按移位型總線50的公共總線協議,來相互連接。
接著,用圖6來更詳細地說明第1實施例的圖像處理引擎66。圖6是圖像處理引擎66的框圖。圖像處理引擎66的接口只是與移位型總線50的接口,是右旋移位型總線的輸入信號51a、左旋移位型總線的輸入信號51c、及向移位型總線50的輸出信號51b。這3種信號被連接在數據路徑部36上。在數據路徑部36上,經信號線44連接著對移位型總線50進行數據輸出處理的局部DMAC 34。
再者,圖像處理引擎66具有能夠從移位型總線50進行數據寫的指令存儲器31和數據存儲器35,在數據路徑部36上,經路徑42與控制指令存儲器31的指令存儲器控制部32相連,經路徑43與數據存儲器控制部33相連。指令存儲器控制部32是控制從移位型總線50向指令存儲器31的數據寫、和向CPU部30的指令供給的塊,經路徑40與指令存儲器31相連,經路徑37與CPU部30相連,經路徑42與數據路徑部36相連。數據存儲器控制部33是控制從移位型總線50向數據存儲器35的數據寫、進行控制局部DMAC 34所控制的從數據存儲器35向移位型總線50的數據輸出的控制、和從CPU 30向數據存儲器35的存取的控制的塊。數據存儲器35的控制使用路徑41來進行。
從移位型總線50向數據存儲器35的數據寫、和從數據存儲器35向移位型總線50的數據輸出經路徑43與數據路徑部36協調來控制。與CPU部30的連接通過2個路徑來控制。從數據存儲器35向CPU部30的數據讀出處理通過路徑38來控制,從CPU部30向數據存儲器35的數據寫入通過路徑39來控制。并且,數據存儲器35的存取地址通過路徑45來供給。
其中,在本實施例的說明中,為了容易說明,將數據存儲器35的個數設為1個,但是也可以是使用多個數據存儲器的交叉結構。通過交叉結構,能夠并行存取多個數據存儲器35。在說明本發(fā)明時,定義CPU 30的運算內容。但是,該運算內容是用于說明本發(fā)明的本質的,并不限定運算內容的種類。
圖7示出運算內容的概要。如圖7所示,運算內容是將二維的圖像A和二維圖像B的每個像素相加,寫入到存儲器中。在使用專利文獻1所示的SIMD型運算器的情況下,所需周期為矩陣A的讀出花費4個周期,矩陣B的讀出花費4個周期,加法花費4個周期,減法花費4個周期,合計需要16個周期。其中,在SIMD型運算器的并聯數為8的情況下,加法所需的周期數為2,但是在本發(fā)明中,說明4并聯的SIMD型運算器。此時,SIMD型運算器所需的總指令數是與所需周期數相同的16條指令。使用該運算內容,來描述本發(fā)明的實現方式。
CPU部30是對二維圖像進行運算等的CPU。在本實施例中,為了容易說明,假設CPU部30具有以下所示的4條指令。但是,該指令的種類是用于容易說明的,而并不限制指令種類。但是,后述的寄存器指針和指定高度方向的單元是必要的要素。4條指令為分支指令、讀指令、寫指令、加法指令。表8至表11示出各指令的指令格式中所需的位字段。
表8表8 分支指令的指令格式

表9表9 讀指令的指令格式

表10表10 寫指令的指令格式

表11表11 分割加法指令格式

圖8是CPU部30的框圖。與指令存儲器控制器32的接口37分為2種信號,1種是指令譯碼部303向指令存儲器控制部32輸出的取指令請求37r、和指令存儲器控制部32輸出的并輸入到CPU部30中的指令37i。指令譯碼部303在1個指令處理已結束的時刻輸出取指令請求37r。對應地輸入指令37i和指令就緒信號37d,保存到指令寄存器301中。在這里的說明中,將指令寄存器301的組數設為1來進行說明。但是,指令的讀出等待時間大于1個周期,所以也可以具有多組指令寄存器301。指令寄存器301的值被供給到指令譯碼部303,對指令進行譯碼。在指令譯碼部303中,生成控制寄存器文件(通用寄存器)304的讀出端口和寫入端口的控制線308、用于控制運算器313的指令譯碼信號309、以及用于按指令的種類控制選擇器311的控制線310。此外,在1條指令處理已結束的時刻,輸出取指令請求37r。
在本說明中,說明除了分支指令以外、還具有讀指令、寫指令、分割加法指令的CPU部30。因此,控制線308在讀指令時,在讀數據38已被返回的時刻,將保存讀數據的寄存器號指針值用作保存目的寄存器號指針。在寫指令時,需要讀出寄存器文件304,所以使用寫數據寄存器號。在分割加法指令時,讀出和寫入寄存器文件304都需要,控制它。指令譯碼信號309在本說明中只在分割加法指令時活動,在具有其他指令的情況下,根據指令種類,來輸出用于控制運算器的信號??刂凭€310在讀指令時,選擇讀數據38;在分割加法指令時,選擇運算器313的運算結果314。選擇出的運算數據315被保存到寄存器文件304中。此外,指令譯碼部303在讀指令時和寫指令時,控制運算部313,生成數據存儲器35的存取地址45。
其中,運算器303與專利文獻1同樣由8并聯的SIMD型運算器構成,能夠并行運算8個8位寬度的加法。即,能夠并行運算8個分割加法。此外,將CPU 30的數據寬度設為8個字節(jié)。因此,讀指令、寫指令、分割加法指令能夠以8個字節(jié)為單位來執(zhí)行。此外,在讀指令、寫指令、分割加法指令的Width字段中,可以定義8、16、32;在計數字段中,可以以1為間隔來指定1至16。
用圖9來說明指令譯碼部303及運算部313生成存取地址45的工作。圖9是生成控制指令譯碼部303生成的寄存器文件304的讀出端口和寫入端口的控制線308、和數據存儲器35的存取地址45的流程圖。
指令譯碼部303具有Wc計數器,在起動指令時清零(步驟90)。接著,在步驟91中,使用Src和Dest、(Addr+Wc),來執(zhí)行讀指令、寫指令、分割加法指令。接著在步驟92中,在Src和Dest上加1,Wc上加8。在步驟93中,比較用指令字段指定的Width字段和Wc。在Width大于Wc的情況下,再次返回到步驟91,重復執(zhí)行指令。在Width等于、或小于Wc的情況下,轉移到步驟94,判定指令字段所示的Count值是否是0。在Count值不是0的情況下,轉移到步驟95,從Count值中減去1,Addr上加Pitch,再次轉移到步驟90,重復執(zhí)行指令。在Count值為0的情況下,結束執(zhí)行指令。此時,指令譯碼部303輸出取指令請求37r。
通過圖9的時序圖的動作,能夠用1條指令對二維矩形進行運算。特別是在讀指令中,通過指定Pitch,能夠將數據存儲器35上分散布置的二維矩形作為連續(xù)數據保存到寄存器文件304中。此外,在寫指令中,同樣通過指定Pitch,能夠將寄存器文件上布置的連續(xù)數據寫到數據存儲器35上的分散布置的二維矩形區(qū)域上。
在圖7所示的運算內容中,能夠用2條讀指令、1條分割加法指令、1條寫指令這合計3條指令來結束運算。即,從指令存儲器31中只取4條指令即可。但是,對專利文獻1所示的SIMD型的指令長度,本發(fā)明的指令附加了Width、Count、Pitch等操作數,指令長度變長。在專利文獻1的指令寬度設為32位的情況下,本發(fā)明的指令長度是64位左右。一次指令存儲器存取消耗的功率為2倍,但是能夠將存取次數從16減少到4,指令存儲器消耗的總功耗由2×4÷16來表示,能夠將功率減少到一半。此外,用1條指令對二維的數據進行處理,能顯著地減少程序的同一指令的循環(huán)的次數。這意味著能夠減少指令存儲器31的容量。
其中,在圖8中,輸入數據30i被輸入到寄存器文件304中,能夠更新寄存器文件304的數據。進而,運算數據315作為運算數據30wb來輸出。該輸入數據30i和運算數據30wb將在第2實施例中進行說明。
用圖10來說明第1實施例的指令存儲器控制部32。圖10是指令存儲器控制部32的框圖。指令存儲器控制部32是控制指令存儲器31的存儲器存取的塊。指令存儲器31有從CPU部30中取指令的存取、和從移位型總線50的存取,指令存儲器控制部32仲裁這些存取,來存取指令存儲器31。存取仲裁由仲裁部320來進行。存儲器存取請求是從CPU部30輸入的取指令請求37r、和從數據路徑部36輸入的路徑42。根據仲裁結果來控制選擇器323,輸出用于存取指令存儲器31的地址等控制線40c。
在取指令存取的情況下,仲裁部320使選擇器323選擇指令的程序計數器322的輸出,讀出指令存儲器31,并且輸出控制線321,遞增程序計數器322。從指令存儲器31返回的指令40d被保存到指令寄存器324中,作為指令37i而返回到CPU部30。同時,指令的操作數字段被輸入到分支控制部325中,判斷是否是分支指令,在分支指令時將為1的信號326輸入到仲裁部320中。此外,分支條件寄存器的讀出索引字段被輸入到分支條件寄存器327中。所謂分支條件寄存器327,是由1位寬度的多個字構成的寄存器組,用分支條件寄存器的讀出索引字段來指定字,將1位寬度的信號328輸入到仲裁部320中。
實際的分支是在信號326為1、而且信號328為1時分支。將本組合以外識別為分支指令以外的指令。仲裁部320只在分支指令以外的指令時,才返回指令就緒信號37d。在分支指令時,不返回指令就緒信號37d,選擇器323選擇指令寄存器324內保存的立即數。此時,用將該立即數遞增了的值來更新程序計數器322。
根據本方式,在CPU的取指令請求37r的發(fā)出間隔需要幾個周期的情況下,能夠完全隱蔽分支指令造成的重新讀出指令所需的周期,能夠抑制分支造成的性能降低。在本發(fā)明的CPU部30中,通過指定二維的操作數,取指令請求37r的發(fā)出間隔大,該效果大。
用圖11來說明第1實施例的數據存儲器控制部33。圖11是數據存儲器控制部33的框圖。數據存儲器35能夠從CPU部30讀及寫存取、從移位型總線50寫處理、從局部DMAC 34寫存取,數據存儲器控制部33是仲裁這些存取的塊。這些仲裁由仲裁部330來進行,控制地址選擇器331和數據選擇器332。其中,與數據存儲器35之間的信號線41被分類為41a、41d、41w這3個信號線。而與數據路徑部36之間的信號線43被分類為信號線43a、43d、411、43r這4個信號線。
首先,說明與CPU部30之間的連接。讀指令時及寫指令時的數據存儲器地址45通過地址選擇器331,作為數據存儲器地址41a,被輸入到數據存儲器35中。在寫指令時,寫數據39經由數據選擇器332,作為寫數據41w被輸入到數據存儲器35中。在讀指令時,根據數據存儲器地址41a,來讀出讀數據41d,保存到數據寄存器333中。保存的讀數據作為讀數據38被返回到CPU部30。其中,在將主S/D寄存器的值指定為讀指令的DestReg的情況下,讀數據被輸出到讀數據43r。接著在從移位型總線50的寫處理中,地址線43a通過地址選擇器331,作為數據存儲器地址41a,被輸入到數據存儲器35中。同時數據線43d經由數據選擇器332,作為寫數據41w被輸入到數據存儲器35中。
最后,在從局部DMAC 34存取時,地址43p通過地址選擇器331,作為數據存儲器地址41a,被輸入到數據存儲器35中。對應地讀出的讀數據41d被保存到數據寄存器333中,作為讀數據43r被返回。
用圖12來說明第1實施例的局部DMAC 34。圖12是局部DMAC 34的框圖。局部DMAC 34具有生成向移位型總線50輸出數據的處理中的數據存儲器地址44da、和用于對應于從移位型總線50輸入的從數據存儲器35的讀存取來進行讀處理的數據存儲器地址44da的功能;生成向移位型總線50輸出數據時的移位型總線地址44sa的功能;以及用于對移位型總線50產生讀命令的功能。局部DMAC 34用信號線44只連接數據路徑部36。這里,信號線44可以分類為信號線44pw、44swb、44da、44sa、44dw這5種信號線。
在局部DMAC 34內,具有可由讀指令改寫的主D寄存器340及主S寄存器341、可從移位型總線50寫入的從D寄存器342及從S寄存器343這4個寄存器組。表12至表15示出各寄存器的格式。
表12表12 主D寄存器340的格式

表13表13 主S寄存器341的格式

表14表14 從D寄存器342的格式

表15表15 從S寄存器343的格式

使用局部DMAC 34的數據傳送具有3種工作模式。
第1種是數據寫模式。在數據寫模式中,用主D寄存器340的參數,來讀出自身的數據存儲器35,用主S寄存器341的參數,將數據傳送到其他圖像處理引擎等塊,將數據寫到數據存儲器35等地址映射的區(qū)域上。
第2種是讀命令模式。在讀命令模式中,將主D寄存器和主S寄存器的值本身作為數據,將數據傳送到其他圖像處理引擎等塊,將值保存到其他塊內的從D寄存器和從S寄存器中。這作為向其他塊的讀請求來工作。其中,在讀指令模式時,作為移位型總線50的接口,將CMD信號設為1來傳送。接受讀指令的塊根據CMD信號,來識別該移位型總線傳送是否是讀命令。
第3種是讀模式。對先前的讀命令模式中接受的讀請求,用從D寄存器342的參數,來讀出數據存儲器35,用從S寄存器343的參數,將數據傳送到其他圖像處理引擎等塊,將數據保存到數據存儲器35等地址映射的區(qū)域上。通過組合這3種模式,在圖像處理引擎等塊間實現數據傳送。
主D寄存器340和主S寄存器341能夠由CPU部30發(fā)出的讀指令來更新,此時,從信號線44pw輸入數據,更新2個寄存器。即,通過預先將描述了數據傳送內容的描述符保存到數據存儲器35中,將該內容拷貝到主D寄存器340和主S寄存器341中,來開始數據傳送。
在2個寄存器已被更新的時刻,根據主D寄存器340的Mode字段來轉移到2個狀態(tài)。在Mode字段表示數據寫模式的情況下,經地址選擇器344,將主D寄存器340的MADDR、MWidth、Mcount、MPitch傳送到數據存儲器地址生成器346。數據存儲器地址生成器346生成用于讀出數據存儲器35的地址,輸出地址44da。生成地址的方式與CPU部30內的指令譯碼部303生成存取地址45的方式相同。因此,在數據存儲器地址生成器346中具有Wc計數器,通過生成將MWidth、MCount、MPitch分別置換為Width、Count、Pitch所得的地址,來生成二維矩形的地址。
同樣,主S寄存器341的SADDR、SWidth、SCount、SPitch經由地址選擇器345被輸入到移位型總線地址生成器347中,生成要輸出到移位型總線50的地址,輸出地址44sa。該移位型總線地址生成器347生成地址,也與數據存儲器地址生成器346生成地址同樣,來表現二維矩形。用這2個地址,從數據存儲器35中依次讀出讀數據43r,結果,作為信號線組50b,來實現從圖像處理引擎66向移位型總線50的寫數據處理。此時,傳送目的塊是主S寄存器341的SBID所示的字段。此時,根據MDIR標志,來決定使用右旋的移位型總線,還是左旋的移位型總線。
其中,在本方式中,分別使用MWidth、MCount、MPitch和SWidth、SCount、SPitch,來生成數據存儲器35的地址44da和用于輸出到移位型總線的地址44sa。這樣,通過用2個寄存器組來分別生成地址,能夠變換二維矩形的形狀來傳送數據。但是,在作為同一矩形來傳送的情況下,能夠只用一方的參數來生成地址。
另一方面,在Mode字段表示讀命令模式的情況下,主D寄存器340和主S寄存器341的值直接作為輸出信號44swb來輸出,將讀命令傳送到其他塊。此時,傳送目的塊是主D寄存器340的MBID字段所示的塊。在傳送目的塊接受該讀命令的情況下,更新從D寄存器342和從S寄存器343,作為讀模式來開始處理。讀命令經路徑44sw被更新為從D寄存器342和從S寄存器343。傳送目的塊接受讀命令后,用與先前的數據寫處理大致同樣的動作,來讀出讀數據,輸出到移位型總線50。從D寄存器342的MADDR、MWidth、MCount、MPitch經由地址選擇器344被輸入到數據存儲器地址生成器346中,作為地址44da來存取數據存儲器35。其后的行為與數據寫時相同。同樣,從S寄存器343的SADDR、SWidth、SCount、SPitch經由選擇器345被輸入到移位型總線地址生成器347中,生成地址44sa。其后的動作與數據寫時相同。通過這3個局部DMAC 34的動作,在移位型總線50中,只用能夠在同一周期中輸出地址和數據的寫事務來實現數據傳送。一般,為了提高總線的性能,使用將地址和數據分離開的分割(スプリツト)型總線。所謂分割型總線,用同一事務ID等ID來管理地址和數據,各請求從(リクエストスレ一ブ)一側將地址按FIFO等排隊,進行待機,直至數據接收。因此,總線性能受隊列或FIFO的級數限制。另一方面,在本方式中,在所有總線傳送中,能夠在同一周期中傳送地址和數據,不發(fā)生FIFO級數等造成的性能的飽和。
其中,局部DMAC 34的動作用讀指令來起動,在已起動的時刻,CPU部30能夠執(zhí)行下一條指令。但是,只在使用局部DMAC 34的傳送執(zhí)行中,下一個DMAC 34的使用為禁止狀態(tài),停止。但是,通過增大起動局部DMAC 34的發(fā)出間隔,不發(fā)生競爭造成的性能降低。在此期間,CPU部30通過執(zhí)行別的處理序列,能夠并行執(zhí)行CPU部30的處理和塊間傳送,能夠減少所需的處理周期數。此外,對于讀傳送,只有1組從D寄存器342和從S寄存器343,所以在讀處理執(zhí)行中,禁止接受下一條讀命令,不在移位型總線50上進行終接_。移位型總線50成環(huán)形,通過在該讀命令環(huán)繞了移位型總線50一周的時刻,接受讀命令,能夠重新起動讀命令。通過用寫模式來進行塊間的數據傳送的大部分,抑制讀的發(fā)生頻度,能夠減少該性能降低。圖像處理的數據流性動作較多,塊間傳送大部分使用寫模式,所以本方式能夠抑制性能降低。
在局部DMAC 34進行的傳送中,能夠向移位型總線50輸出“Last”信號。這在主D寄存器340或從D寄存器342內的Last字段為“1”的傳送時,二維矩形的傳送的最后一次傳送時,只斷言(アサ一ト)1個周期。由此,能夠識別作為對象的直接存儲器傳送是否已結束。這在后述的塊間同步時使用。
用圖13來說明第1實施例的數據路徑部36。圖13是數據路徑部36的框圖。數據路徑部36是進行移位型總線50、指令存儲器控制部32、數據路徑部33以及局部DMAC 34之間的數據轉交的塊。首先,說明從移位型總線部50輸入數據。右旋移位型總線的輸入即信號線組51a和左旋移位型總線的輸入即信號線組51c被連接在向指令存儲器31的寫入路徑即路徑42、向數據存儲器35的寫入路徑中的地址即路徑43a和數據即路徑43d、及向局部DMAC 34內的從D寄存器342和從S寄存器343的寫入路徑即路徑44sw上。向移位型總線50的數據輸出即信號線組51b從2個塊輸入,1個是來自數據存儲器35的讀數據43r,第2個是來自局部DMAC 34的輸出即主D寄存器340和主S寄存器341的直接輸出信號44swb、和向移位型總線50的輸出地址44sa。它們被排他地處理,用移位型總線50的協議來控制。此外,局部DMAC 34用于讀出數據存儲器35的地址44da被連接在數據存儲器控制部33的地址43p上。
這樣,根據第1實施例,通過減少指令存儲器31的存取頻度、和停止向各塊供給時鐘等,能夠減少功耗。此外,通過隱蔽在分支指令中、和與局部DMAC 34并行動作等,來顯著地減少處理周期數,實現功率降低。
實施例2用圖14來說明本發(fā)明的第2實施例。圖14是本實施例的圖像處理部66的框圖。相對于圖6所示的第1實施例的圖像處理引擎66有3處不同。第1處是CPU部30的輸入數據30i和運算數據30wb被連接在矢量運算部46上。輸入數據30i是要輸入到CPU部30內的寄存器文件304中的數據,能夠更新寄存器文件304的數據。運算數據30wb是CPU部30的運算結果,被輸入到矢量運算部46中。第2處是代替圖6的指令存儲器控制部32而連接著指令存儲器控制部47。指令存儲器控制部47具有多個程序計數器,控制指令存儲器31。此外,第3處不同是矢量運算部46經路徑37被連接在指令存儲器控制部47。
圖15示出第2實施例的矢量運算部46的框圖。矢量運算部46的功能與圖8所示的CPU部30的不同點是不能存取數據存儲器35。接口的差別是路徑38、路徑39、路徑45不存在。其中,運算部463與圖8的運算部313為同一結構,或者指令集也可以不同。矢量運算部46的運算內容將在后面用圖21至圖26來描述。
圖16示出指令存儲器控制部47的框圖。指令存儲器控制部47和圖10所示的指令存儲器控制部32之間的差別有2處。第1處是用仲裁部470來接受來自CPU部30和矢量運算部46的2個取指令請求37r,進行仲裁。仲裁結果471被輸入到面向矢量運算部46的程序計數器472中。此外,控制選擇器475,來輸出用于存取指令存儲器31的地址等控制線40c。這樣,從指令存儲器31保存2個CPU的指令串,能夠共享指令存儲器31。在第1實施例的說明中,描述了在本方式中,能夠增大取指令的發(fā)出間隔。因此,在多個CPU存取共享的指令存儲器31的情況下,存取競爭發(fā)生的頻度也低,能夠抑制性能降低。第2處不同是同步控制部473。同步控制部473是進行CPU部30和矢量運算部46的同步處理的塊,生成各CPU的停止信號474。
在圖14及圖15的說明中,示出了CPU部30和矢量運算部46的運算結果能夠保存到另一方的寄存器文件304和462中。同步控制有2種方式,1種是表示是否準備好了輸入數據的同步化。例如,在CPU部30的運算數據30wb變?yōu)橛行У臅r刻,矢量運算部46能夠使用該運算數據30wb。因此矢量運算部46必須停止,直至運算數據30wb變?yōu)橛行?。將此稱為輸入同步。第2種是要寫入目的地寄存器文件知道是否是可寫入狀態(tài)的同步化。例如,CPU部30必須停止,直至矢量運算部46的寄存器文件462變?yōu)榭蓪懭搿⒋朔Q為輸出同步。
此外,在從其他圖像處理引擎6使用局部DMAC 34將數據直接存儲器傳送到數據存儲器35中、CPU部30讀出該傳送數據的情況下,必須識別該直接存儲器傳送是否已結束。在數據傳送未結束的情況下,CPU部30停止。將此稱為塊間同步。其中,塊間同步在第1實施例中也可以使用,但是只在此第2實施例中進行說明。同步控制部473進行這3種同步化處理。接著,說明同步控制方式。在同步控制中,用為每個CPU布置的4個計數器、為每個塊成對布置的2個計數器、以及指令上定義的5個標志來進行同步化。表16示出計數器的定義。此外,表17示出指令內布置的同步化字段的定義。
表16表16 同步化計數器的定義

表17表17 指令內的同步化字段

首先,用圖17來說明輸入同步。在CPU部30的運算數據30wb變?yōu)橛行У臅r刻,矢量運算部46能夠使用該運算數據30wb。因此,矢量運算部46需要停止,直至運算數據30wb變?yōu)橛行?。在CPU部30的指令中、DRE字段為1的指令結束的時刻,使矢量運算部46內的執(zhí)行就緒計數器ERC〔矢量運算部46〕進行遞增計數。按該指令,將運算數據30wb保存到矢量運算部46中,在該指令結束的時刻,矢量運算部46能夠進行使用數據30wb的運算。至此矢量運算部46中的具有ISYNC的指令停止。該停止條件是在ERC〔矢量運算部46〕小于或等于SRC〔矢量運算部46〕時,具有ISYNC的指令時。在先前的使ERC〔矢量運算部46〕進行了遞增計數的時刻,執(zhí)行就緒計數器ERC〔矢量運算部46〕變得大于從請求數計數器SRC〔矢量運算部46〕。在此時刻,矢量運算器46能夠解除停止,開始運算。同時使從請求數計數器SRC〔矢量運算部46〕進行遞增計數。通過這2個計數器的1組更新來進行1次輸入同步。
此外,在矢量運算器46的處理速度慢、SRC和ERC的遞增計數有乖離的情況下,可以由CPU部30準備運算數據30wb,即,使執(zhí)行就緒計數器ERC進行遞增計數,能夠作為數據的預取來動作。
同樣,在CPU部30使用矢量運算器46生成的運算數據30i的情況下,與先前的說明相反,在矢量運算器46的指令中使用DRE字段,在CPU部30的指令中使用ISYNC字段,能夠用CPU部30內布置的執(zhí)行就緒計數器ERC〔CPU部30〕和從請求數計數器SRC〔CPU部30〕來進行輸入同步。其中,這里,說明了使用執(zhí)行就緒計數器ERC和從請求數計數器SRC的輸入同步,但是也可以用1位寬度的標志。例如,按執(zhí)行就緒計數器ERC的更新條件來置位標志。2個CPU停止,直至該標志和運算數據的接收端的CPU指令的ISYNC標志都為1。在解除停止的時刻,通過清除標志,能夠用很少的邏輯電路來進行2個CPU間的同步化。
接著,使用圖18來說明輸出同步。輸出同步也與輸入同步同樣用2個計數器和2個指令內定義的同步字段來進行同步化。輸出同步是要寫入目的寄存器文件知道是否是可寫入狀態(tài)的同步化。例如,CPU部30必須停止,直至可寫入矢量運算部46的寄存器文件462。輸入同步是后級CPU的停止,而輸出同步是前級CPU的停止。
在本例的動作中,能夠在矢量運算器46的指令中、RFR字段被置位為1的指令結束的時刻,從CPU部30寫入到矢量運算器46的寄存器文件462中。在該RFR字段被置位為1的指令結束的時刻,使CPU部30的寄存器文件就緒計數器RFRC〔CPU部〕進行遞增計數。至此,CPU部30的OSYNC被置位的指令在請求起動的時刻停止。該停止條件是寄存器文件就緒計數器RFRC〔CPU部〕的值小于或等于主請求數計數器MRC〔CPU部〕時。在受托起動CPU部30的OSYNC被置位的指令的時刻,使主請求數計數器MRC〔CPU部〕進行遞增計數。本方式也與輸入同步同樣,在前級CPU的處理非常慢、后級CPU的處理快的情況下,能夠空余很多寄存器文件的空閑容量。在此情況下,在前級CPU的輸出同步時不發(fā)生停止。同樣,在矢量運算部46停止、直至可寫入CPU部30的寄存器文件304的輸出同步中,通過使矢量運算部46使用OSYNC,CPU部30置位RFR字段,來實現2個CPU間的輸出同步。通過組合這些輸入同步和輸出同步,來實現2個CPU間的寄存器文件級的細致的同步。在這些同步化方式中,在指令自身中具有同步字段是其特征。
最后,用圖19來說明塊間同步。所謂塊間同步,是其他信息處理引擎6等通過直接存儲器傳送將數據保存到數據存儲器35中、CPU部30用讀指令來使用該傳送數據時的同步化。CPU部30需要識別是否直接存儲器傳送已結束、所有數據被保存在數據存儲器35內,在未保存的情況下,輸入數據為無效的值,所以必須停止。即,在讀指令時,檢查是否可執(zhí)行該讀指令,用與先前所示的輸入同步大致同樣的方式來進行同步化。即,通過比較2個計數器的大小來進行同步化。第1個計數器是數據存儲器就緒計數器DMRC,是在先前所示的移位型總線50的傳送中、在伴隨“Last”信號的傳送中進行遞增計數的計數器。這通過設定局部DMAC 34的主D寄存器340的“Last”標志,在直接存儲器傳送的最后一次傳送、即二維矩形傳送的最后一次傳送的時刻斷言。即,用可識別直接存儲器傳送已結束的信號,在其為“1”時,使數據存儲器就緒計數器DMRC進行遞增計數。即,在從CPU部30來看的情況下,表示數據已準備好。
第2個計數器是數據存儲器存取計數器DARC,是在變得可執(zhí)行讀指令的操作數內布置的MSYNC為“1”的指令的時刻進行遞增計數的計數器。因此,CPU部30可執(zhí)行讀的定時是數據存儲器就緒計數器DMRC大于數據存儲器存取計數器DARC時。換言之,在數據存儲器就緒計數器DMRC等于或小于數據存儲器存取計數器DARC的情況下,CPU部30停止。這樣,能夠在讀指令這一指令級進行塊間的同步化。
這樣,根據第2實施例,在可使用多個二維的操作數的CPU共享指令存儲器的情況下,指令的發(fā)出間隔大,所以能夠抑制性能降低,并且能夠通過共享指令存儲器來減少存儲器面積。再者,通過用CPU部30對數據存儲器35進行讀和寫處理,用矢量運算器46進行運算處理,用同步單元進行2個CPU間的寄存器文件級的同步化,能夠提高運算吞吐量。此外,在指令級實現塊間的同步化。
實施例3用圖20來說明第3實施例。圖20是本實施例的圖像處理引擎66內布置的CPU部的結構圖。在第1實施例中,由1個CPU部30構成;在第2實施例中,說明了由CPU部30和矢量運算部46這2個CPU構成。在第3實施例中,串聯或環(huán)形連接2個以上的多個CPU。在圖3中,在先頭的CPU上,布置可存取數據存儲器35的CPU部30,將多個矢量運算部46、46n串聯連接,在末端上連接可存取數據存儲器35的CPU部30s。CPU部30s的運算數據30i再次被連接在CPU部30的輸入數據部上。此時,各CPU分別成為具有程序計數器的結構,實際上成為具有多個圖16所示的指令存儲器控制部7內的程序計數器的結構。仲裁部470從多個取指令請求37r中選擇取指令。
此外,對同步化處理的控制也不同。在第2實施例的說明中,描述了2個相鄰的CPU間的輸入同步方式和輸出同步方式。在第3實施例中也進行同樣的同步化處理。即,在相鄰的CPU之間,進行輸入同步和輸出同步。此外,在最后一級CPU部30s和第一級CPU部30之間,也進行同步化。此外,CPU部30和CPU部30s都存取數據存儲器35。因此,圖11所示的數據存儲器控制部33也控制多個數據存儲器存取。根據本方式,用CPU部30從數據存儲器35中讀入數據,傳送到矢量運算部46。將矢量運算器46的運算結果傳送到矢量運算器46n,矢量運算器n進行下一個處理,將運算數據傳送到CPU部30s。CPU部30s通過將運算結果傳送到數據存儲器35,能夠以流水線方式讀數據、進行運算、保存數據,得到高的運算吞吐量。特別是通過使數據存儲器35采用交叉結構,分割讀指令和寫指令、及直接存儲器存取的塊,能夠得到高的吞吐量。
再者,根據本方式,在串聯或環(huán)形連接2個以上的CPU的結構中,也能實現伴隨CPU間的同步的多CPU結構。再者,在CPU數增加的情況下,寄存器文件的讀寫端口數也不增加,不增加網絡或寄存器文件的面積。例如,上述專利文獻3所示的VLIW結構等造成的CPU數的增加與運算器數成正比,寄存器的端口數增加,面積成本增大,而在本方式的串聯連接中,它不增加。
此外,在VLIW方式中,多個運算器活動的定時不同。例如,考慮下述例子在同一運算循環(huán)內,1個運算器進行存儲器讀,第2個運算器進行通用運算,第3個運算器進行存儲器寫。此時,各個CPU實際動作的運算周期數不同,但是在同一運算循環(huán)中進行處理,所以運算器的工作效率降低,結果,所需處理周期數增加,功耗增加。另一方面,在本方式中,能夠使各CPU分別具有程序計數器,不依賴于其他CPU的動作及程序計數器的動作,能夠處理各自的運算。例如,在10次循環(huán)中的第5次和第6次之間變更1個參數的情況下,在VLIW方式中,需要用各5次的2個循環(huán)來描述指令串;但是在本方式中,通過分別具有程序計數器,能夠使只有變更參數的CPU用2個循環(huán)來指定指令串,能夠提高運算工作效率,同時能夠減少使用的指令存儲器31的容量。
接著,對指令的操作數由Width字段和Count字段組成的二維操作數指定方式示出其實施例。至此,描述了通過指定二維操作數來減少指令數,通過減少指令存儲器31的讀出次數來降低功率,通過減少指令存儲器31的容量來降低功率和減少面積成本。除此之外,也能夠通過減少處理周期數來降低功率。這里,用內積運算和卷積運算來說明其實施例。
內積運算是圖像編解碼器或圖像濾波器等中使用的通用的圖像處理之一。這里,以4×4矩陣的內積運算為例來進行說明。圖21示出該內積運算例。如圖所示,4×4矩陣的內積運算的1個數據輸出是執(zhí)行4次乘法、將它們的運算結果相加所得的值。將該運算設為4×4矩陣,對16個元素進行同樣的運算。在本例的說明中,假設各數據要素的長度為16位(2個字節(jié)),用64位寬度運算器來進行運算。此外,假設在矢量運算器46的寄存器文件462內的寄存器中如下保存著矩陣A和矩陣B,將運算結果保存到寄存器8、9、10、11中。
寄存器0{A00,A10,A20,A30}寄存器1{A01,A11,A21,A31}寄存器2{A02,A12,A22,A32}寄存器3{A03,A13,A23,A33}寄存器4{B00,B10,B20,B30}寄存器5{B01,B11,B21,B31}寄存器6{B02,B12,B22,B32}寄存器7{B03,B13,B23,B33}這樣,在二維內積運算中,運算的輸入使用多個寄存器是其特征。在圖22所示的一般的1個周期發(fā)出1條指令的4并聯的SIMD型運算器中,用以下的指令串來進行處理。其中,假設矩陣A如下保存著轉置了的值。
寄存器0{A00,A01,A02,A03}寄存器1{A10,A11,A12,A13}寄存器2{A20,A21,A22,A23}寄存器3{A30,A31,A32,A33}指令1Src1(寄存器0)、Src2(寄存器4)、Dest(寄存器8
)的積和運算。
指令2Src1(寄存器0)、Src2(寄存器5)、Dest(寄存器8[1])的積和運算。
指令3Src1(寄存器0)、Src2(寄存器6)、Dest(寄存器8[2])的積和運算。
指令4Src1(寄存器0)、Src2(寄存器7)、Dest(寄存器8[3])的積和運算。
通過用這4條指令,為內積運算運算第1行,變更Src1寄存器,由此進行4行的運算。因此,花費16個周期來運算合計16條指令。其中,作為預處理,需要轉置矩陣A。因此,實質上所需的周期數大于16個周期。
另一方面,在能夠指定二維操作數的本實施例中,采用圖23所示的運算器結構。與圖22所示的SIMD型的運算器相比,在Src2輸入的前一級布置選擇器609,選擇輸入Src2和Src2
的值。此外,在每一個運算周期中,使用路徑610,左移Src2的值。進而保存乘法器600的運算結果的寄存器601的輸出被輸入到∑加法器607中,∑加法器607的運算結果被保存到寄存器608中。∑加法器607是將寄存器601的結果和寄存器608的結果依次∑相加的運算器。在本例中,將4個周期的乘法結果∑相加,進行舍入,作為Dest來得到運算結果。
注意圖21的內積運算例的運算結果的第1行。對于矩陣B,需要輸入16個元素的數據;而矩陣A的輸入是A00、A10、A20、A30,只是寄存器0中保存著的值。而對于第1元素的乘法,都輸入A00。用圖23所示的運算器來實現該運算的處理例。在Src1中設定矩陣B、即寄存器4,在Src2中設定矩陣A、即寄存器0。Src1一側每當被供給了時鐘時,就按寄存器4、寄存器5、寄存器6、寄存器7、再次寄存器4的順序來供給。Src2一側在第1個周期中輸入寄存器0,第2、3、4個周期使用路徑610來左移。此時選擇器609選擇Src2
數據。由此,Src2輸出在第1個周期中為A00,在第2個周期中為A10,在第3個周期中為A20,在第4個周期中為A30。在第5個周期中供給寄存器1,6、7、8周期同樣移位。通過這種數據供給,能夠在4個周期中得到1行的運算結果。由此,每4個周期1次,生成運算結果Dest 606,按該定時來更新寄存器文件462。通過本方式,寫入寄存器文件462無需字節(jié)使能,能夠縮小寄存器文件的面積,并且無需轉置數據,用合計16個周期來實現內積運算。
接著用圖24的內積運算例來說明對轉置矩陣的內積運算的動作。圖24是轉置了第1矩陣即矩陣A的情況下的內積。這里,也注意運算結果的第1行。對于矩陣B,需要輸入16個元素的數據;而矩陣A的輸入是A00、A01、A02、A03,只是寄存器0至寄存器3的數據元素
中保存著的值。在該運算中,與先前的沒有轉置的內積運算相比,通過變更Src2的供給方法,來實現第1矩陣轉置的內積運算。在先前的沒有轉置的矩陣運算中,在周期2、3、4時用路徑610,將Src2移位來供給數據;而在本例中,在周期1中使用寄存器0,在周期2中使用寄存器1,在周期3中使用寄存器2,在周期4中使用寄存器3。在第1行的內積中,使用寄存器0至3的數據元素
,在第2行的內積中使用數據元素[1],在第3行的內積中使用數據元素[2],在第3行的內積中使用數據元素[3]。通過本方式,通過只變更先前所示的Src2的供給方法,來實現第1矩陣轉置的內積運算。此時,乘法器以后的數據路徑不同的動作不存在。因此,在一般的SIMD型運算器中,作為內積運算前的預處理,需要轉置,但是在本方式中不需要,能夠減少處理周期數。
其中,在只轉置第2矩陣的矩陣運算中,Src1和Src2的輸入進行與不伴隨轉置的內積同樣的數據供給,運算器與通常的SIMD型運算器同樣,用在1個周期中將4個元素相加的結構來實現。在本方式中,在∑加法器607的輸入端不使用寄存器608,將4個寄存器601的輸出相加。接著說明卷積運算的\動作例。卷積運算用于圖像的低通濾波器或高通濾波器等的濾波處理或邊緣增強等。此外,是圖像編解碼器的運動補償處理等中也使用的運算。卷積運算與內積運算不同,第2矩陣(稱為卷積系數)固定,用該卷積系數對第1矩陣的全部數據元素進行運算。圖25示出二維的卷積運算例。如圖所示,將輸出數據的全部數據元素乘以第2矩陣的卷積系數,并∑相加。
圖26示出實現它的運算器結構的一部分。在該結構中,示出了圖23所示的內積運算器結構的寄存器601的輸入之前的結構。與內積運算器結構的不同是,Src1也同樣是由路徑612組成的移位寄存器結構。下面示出卷積運算的動作。首先,假設數組A和數組B被布置在以下所示的寄存器中。此時,將數組A的第1列至第4列的數據和第5列的數據布置到不同的寄存器中。將數組B布置到1個寄存器中。
寄存器0{A00,A10,A20,A30}寄存器1{A40,無,無,無}寄存器2{A01,A11,A21,A31}寄存器3{A41,無,無,無}寄存器4{A02,A12,A22,A32}寄存器5{A42,無,無,無}寄存器6{A03,A13,A23,A33}寄存器7{A43,無,無,無}寄存器8{B00,B01,B10,B11}將寄存器0投入到Src1中,將寄存器8投入到Src2中。此時,Src2的輸出由選擇器609投入Src2的第一數據元素。即,是Src2
、Src2
、Src2
、Src2
。第1個周期中的4個乘法器的輸出如下所示。
第1個周期600
輸出A00*B
600[1]輸出A10*B
600[2]輸出A20*B
600[3]輸出A30*B
在第2個周期中,Src1和Src2都使用路徑610和612來左移。Src1將寄存器1的第1數據元素即A40投入到Src1的[3]中。結果,4個乘法器600的輸出如下所示。
第2個周期600
輸出A10*B
600[1]輸出A20*B
600[2]輸出A30*B
600[3]輸出A40*B
在第3個周期中,Src2使用路徑612來左移。Src1更新讀出寄存器指針,投入寄存器2。結果,4個乘法器600的輸出如下所示。
第3個周期600
輸出A01*B[10]600[1]輸出A11*B[10]600[2]輸出A21*B[10]600[3]輸出A31*B[10]在第4個周期中,與第2個周期同樣,Src1和Src2都使用路徑610和612來左移。結果,4個乘法器600的輸出如下所示。
第4個周期600
輸出A11*B[10]600[1]輸出A21*B[10]600[2]輸出A31*B[10]600[3]輸出A41*B[10]通過將該4個周期的數據用∑加法器607進行∑加法,來得到第1行的卷積運算結果。在第5個周期中,再次將寄存器2投入到Src1中,再次將寄存器8投入到Src2中,進行第2行的卷積運算。結果,在16個周期中,得到4×4矩陣的卷積運算結果。
其中,在這些說明中,說明了使用移位寄存器來供給Src1和Src2,但是通過使用選擇器來選擇數據,進行同樣的數據供給,能得到同樣的效果。因此,數據的供給部件是其特征。
在圖22所示的一般的SIMD型運算器中,垂直方向的卷積運算采用每個數據元素的積和運算。但是,在結束了4個積和運算的時刻,需要進行數據的舍入,所以在各積和運算的階段,必須將8位數據位擴展為16位數據來進行積和運算。進而在4個積和運算已結束的時刻,再次將16位數據舍入為8位數據。在積和運算時,由于位擴展,實際上并行使用的運算器數減半,處理周期數增加。此外,位擴展自身和舍入自身的運算周期數增加。通過像本方式這樣指定二維操作數,能夠減少處理周期數。
另一方面,在圖22所示的一般的SIMD型運算器進行的水平方向的卷積運算中,每當生成數據元素時,必須以數據元素為單位將數組A移位并投入到運算器中,處理周期數增加。再者,在二維的卷積中,由于位擴展、移位、舍入等,處理周期數增加。
因此,像本方式這樣指定二維的操作數,意味著用1條指令來表現使用多個源的指令,能夠減少包含真正需要的積和運算以外的預處理和后處理在內的處理周期。其結果是,能夠用低的工作頻率來實現處理,進而能夠減少功耗。
權利要求
1.一種圖像處理引擎,具備指令存儲器、數據存儲器以及CPU,其中,上述CPU進而具有指令譯碼器、通用寄存器以及運算器;上述CPU的指令操作數具有指定數據寬度及表示高度方向的數據計數值的字段、表示保存有運算處理中使用的數據的通用寄存器的起點的源寄存器指針、以及表示保存運算結果的通用寄存器的起點的目的寄存器指針;具有如下的單元,該單元根據上述數據寬度、上述數據計數值、上述源寄存器指針以及上述目的寄存器指針,在每個周期依次生成所存取的上述源寄存器的地址及上述目的寄存器的地址;通過將從上述源寄存器中讀出的數據投入到上述運算器中并執(zhí)行運算,將得到的運算結果依次保存到上述目的寄存器中,由此用一個指令花費多個周期來進行多個運算。
2.如權利要求1所述的圖像處理引擎,其中,在上述CPU中,向上述數據存儲器發(fā)出讀指令及寫指令的指令的操作數具有指定數據寬度、數據計數值以及數據間隔的字段;通過在存取上述數據存儲器時,根據上述數據寬度、上述數據計數值以及上述數據間隔,生成可表現二維矩形的數據存儲器地址,用上述數據存儲器地址,用1個指令花費多個周期,經過多次存取上述數據存儲器,能夠用一個指令存取二維的數據。
3.如權利要求1所述的圖像處理引擎,其中,在上述CPU中,具有上述CPU發(fā)出的卷積運算指令和內積運算指令;在輸入用上述源寄存器指針指定而讀出的源數據的數據輸入級中,具有在供給的每個時鐘移位輸出上述源數據的單元、和生成專用于卷積運算及內積運算的源寄存器地址和目的寄存器地址的單元;上述運算器將乘法器、∑加法器以及數據舍入運算器串聯連接,能夠用一個指令來執(zhí)行一維或二維的上述卷積運算及上述內積運算。
4.如權利要求1所述的圖像處理引擎,其中,在上述CPU中,具有多組指令寄存器,該指令寄存器保存從上述指令存儲器中讀出的指令;具有在上述指令寄存器都不是有效的情況下自動讀出下一個指令的單元;在上述讀出指令時,讀出的指令為分支指令的情況下,不將上述分支指令保存到上述指令寄存器中,而立即讀出分支目的地的指令,將上述分支目的地的指令保存到上述指令寄存器中,在上述分支指令的一個操作數中具有指定分支條件寄存器的字段,該分支條件寄存器指定是否分支;具有在上述分支指令時根據選擇出的分支條件寄存器的值來判定是否分支的單元,在不分支的情況下,讀出下一個指令,不將上述分支指令保存到指令寄存器中;通過不在每個周期都從上述指令存儲器中讀出指令,來隱蔽上述分支指令造成的重新讀出指令所需的周期。
5.如權利要求1所述的圖像處理引擎,其中,在上述圖像處理引擎內,具有多個如權利要求1至3中任一項所述的CPU,具有將上述多個CPU各個的運算結果保存到鄰接的CPU的寄存器中的單元,上述多個CPU連接在相互鄰接的CPU上,最末端的CPU連接在第一級CPU上而形成環(huán)狀的連接。
6.如權利要求5所述的圖像處理引擎,其中,在上述CPU發(fā)出的指令的操作數中,具有第1標志,用于確認是否能夠將數據保存到上述CPU的下一級一側的CPU具有的寄存器中;在上述下一級一側的CPU發(fā)出的指令的操作數中,具有第2標志,表示是否能夠受托寫入來自前一級的CPU的數據;在鄰接的2個CPU間,具有用上述第1及第2標志來進行同步化的電路,在不能寫入的情況下,前一級CPU具有進行停止的單元;此外,在上述CPU發(fā)出的指令的操作數中,具有第3標志,用于判斷是否結束從前一級的CPU向寄存器中寫入數據、能夠使用數據;在前一級的CPU發(fā)出的指令的操作數中,具有第4標志,用于向下一級的CPU傳達已結束數據的寫入;具有在2個CPU間根據上述第3及第4標志的信息來進行同步化的電路;具有用于在數據的準備未結束的情況下輸出使后級的CPU待機的停止信號的單元;在指令的操作數中具有用于在鄰接的2個CPU間進行同步化的標志;具有與這些標志一起來控制同步化的電路。
7.如權利要求5所述的圖像處理引擎,其中,上述多個CPU共享指令存儲器,在每個周期中分時回送指令。
8.一種圖像處理系統,具有經總線連接了多個如權利要求1至權利要求7中任一項所述的圖像處理引擎的圖像處理部,其中,在各個上述圖像處理引擎中,具有直接存儲器存取控制器,用于從上述圖像處理引擎中的一個所具有的數據存儲器中讀出數據,將上述數據以直接存儲器存取的方式傳送到另一個圖像處理引擎內的數據存儲器中;上述CPU具有起動及控制直接存儲器存取控制器的單元,能夠在多個圖像處理引擎間通過直接存儲器存取來傳送數據。
9.如權利要求8所述的圖像處理系統,其中,在上述圖像處理部中,在總線上連接的一個塊中,除了具有圖像處理引擎以外,還具有用于在系統總線等第2內部總線和上述總線之間傳送數據的內部總線主控制部和內部總線從控制部、及內部總線橋組成的數據傳送電路;在上述數據傳送電路中,能夠經上述第2總線來存取外部存儲器,能夠在各個上述圖像處理引擎和上述外部存儲器之間傳送數據。
10.如權利要求9所述的圖像處理系統,其中,具有第1總線,由多個移位寄存器構成,在各上述移位寄存器間,能夠同時傳送多個數據,使上述移位寄存器的連接方向相反;上述第1總線的一方在圖像處理引擎間及從圖像處理引擎向數據傳送電路的方向傳送數據;上述第1總線的另一方將從外部存儲器讀出的數據經內部總線和數據傳送電路傳送到各圖像處理引擎,通過上述多個第1總線,圖像處理引擎間的數據傳送和來自外部存儲器的數據傳送不會發(fā)生競爭,或者能夠減少競爭頻度。
全文摘要
本發(fā)明提供一種用處理器來進行圖像處理的情況下的降低功率技術。為此,例如在指令的操作數中設有指定二維的源寄存器和目的寄存器的部分,具有在多個周期中使用多個源寄存器來執(zhí)行運算、得到多個目的的單元。此外,在利用多個源寄存器花費多個周期來得到目的的指令中,將數據舍入運算器連接在流水線的最后一級上。通過這些結構,例如通過減少存取指令存儲器的次數,來減少讀出指令存儲器時消耗的功率。
文檔編號G06F15/80GK101093577SQ20071009175
公開日2007年12月26日 申請日期2007年4月9日 優(yōu)先權日2006年6月20日
發(fā)明者細木浩二, 江浜真和, 中田啟明, 巖田憲一, 望月誠二, 湯淺隆史, 小林幸史, 柴山哲也, 植田浩司, 升正樹 申請人:株式會社瑞薩科技
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
东山县| 出国| 黄大仙区| 泸定县| 丰台区| 新化县| 新巴尔虎右旗| 乌鲁木齐县| 桐乡市| 进贤县| 衡阳县| 三穗县| 措勤县| 乐业县| 茌平县| 汽车| 樟树市| 友谊县| 孝昌县| 宾川县| 长海县| 济宁市| 平乡县| 柳林县| 友谊县| 灵台县| 宿松县| 永州市| 永嘉县| 东明县| 循化| 额敏县| 寻甸| 定安县| 成武县| 五家渠市| 行唐县| 宽甸| 怀化市| 太原市| 华池县|