專利名稱:圖像處理引擎及包含圖像處理引擎的圖像處理系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
技術(shù)領(lǐng)域涉及圖像處理引擎及包含圖像處理引擎的圖像處理系統(tǒng),特別涉及用總線連接CPU和直接存儲器存取控制器的圖像處理引擎及包含圖像處理引擎的圖像處理系統(tǒng)。
背景技術(shù):
隨著半導(dǎo)體工藝的微細化,在1個LSI上實現(xiàn)大規(guī)模系統(tǒng)的SOC(系統(tǒng)芯片)化或在1個封裝內(nèi)搭載多個LSI的SIP(系統(tǒng)級封裝)等技術(shù)成為主流。通過該邏輯的大規(guī)?;?,如在嵌入式用途中看到的那樣,能夠在1個LSI內(nèi)安裝CPU核心和圖像編解碼加速器或大規(guī)模DMAC模塊等完全不同的功能。
此外,半導(dǎo)體工藝的微細化使LSI穩(wěn)態(tài)下的漏電流增加,漏電流造成的功耗的增加成為問題。近年來,通過停止向未使用模塊供給時鐘、或切斷供給電源等,來實現(xiàn)功耗減少。這些降低功率是睡眠等待機狀態(tài)時的降低功率。
另一方面,在用便攜終端等來視聽圖像的情況下,LSI內(nèi)的大致全部模塊以穩(wěn)態(tài)工作,所以不能采用上述待機狀態(tài)時的降低功率手法。穩(wěn)態(tài)時的功耗與工作頻率、邏輯量、晶體管的激活率、及供給電壓的平方成正比。因此,降低功率可以通過減小這些要素來實現(xiàn)。
為了降低工作頻率,可以通過用并行化等增加1個周期中處理的處理量來實現(xiàn)。它傾向于增加所需的邏輯量,增加功耗,但是能夠低速工作,能夠減少時序關(guān)鍵路徑,所以能夠降低供給電壓,隨之能夠減少功耗。因此,近年來,與提高工作頻率相比,SIMD型ALU、或多處理器等通過提高并行度來降低功率成為主流。
(日本)特開2000-57111號公報示出了SIMD型ALU。它通過使運算器并行工作來增加1個周期中運算的處理量,結(jié)果,實現(xiàn)了工作頻率減少。在圖像處理等對每個像素實施同一運算的情況下,該SIMD型ALU很有效。
(日本)特開2000-298652號公報示出了多處理器。它通過共享多處理器使用的指令存儲器,減少指令存儲器的總邏輯量,實現(xiàn)了功率降低。
(日本)特開2001-100977號公報示出了VLIW型CPU。VLIW通過并行布置運算器,使其并行工作,來減少所需處理周期,實現(xiàn)了功率降低。
專利文獻1(日本)特開2000-57111號公報專利文獻2(日本)特開2000-298652號公報專利文獻3(日本)特開2001-100977號公報在專利文獻1中,公開了SIMD型ALU。一般的圖像處理是對整個二維的塊實施同一運算的算法。在用SIMD型ALU來實現(xiàn)它的情況下,每個周期供給只有通用寄存器的讀寄存器號和寫寄存器號不同的同一指令。這意味著每個周期取指令,必須每個周期存取保存著指令的存儲器。存儲器消耗的功率在整個LSI的功耗中所占的比例比較高。因此,每個周期讀出指令存儲器使功耗增加。
此外,SIMD型ALU是對有限的輸入數(shù)據(jù)進行運算的結(jié)構(gòu)。例如,在進行縱向的卷積運算等的情況下,用多個指令串來進行各元素的運算,最后將各運算結(jié)果相加。在考慮進位的情況下,進行作為預(yù)處理的位擴展、或作為后處理的舍入處理等,對于實際的卷積運算,造成處理周期增大。因此,需要高的工作頻率,功耗提高。
在專利文獻2中,公開了通過減少多處理器的面積來降低功率。根據(jù)該文獻,只有進程工作著的處理器才存取共享指令存儲器。因此,在多個處理器中進程同時工作著的情況下,發(fā)生指令存儲器存取競爭,處理器的工作效率顯著降低,發(fā)生性能降低。這樣,處理器的指令供給依賴于指令存儲器存取,消耗的功率的比率也很大。
在專利文獻3中,公開了VLIW型CPU。根據(jù)該方式,隨著使并行工作的運算器數(shù)增加,1個周期中讀出的指令數(shù)也增加,功耗很大。此外,寄存器的端口數(shù)與運算器數(shù)成正比來增加,面積成本很大,這也使功耗增大。
發(fā)明內(nèi)容
因此,在本申請中,提供用處理器來進行圖像處理的情況下的降低功耗技術(shù)。
例如在指令的操作數(shù)中設(shè)有指定二維的源寄存器和目的寄存器的部分,具有在多個周期中使用多個源寄存器來執(zhí)行運算、得到多個目的的單元。此外,在利用多個源寄存器花費多個周期來得到目的的指令中,將數(shù)據(jù)舍入運算器連接在流水線的最后一級上。
此外,將多個CPU串聯(lián)連接,共享地使用共享型的指令存儲器。此時,在各CPU的指令操作數(shù)中,具有用于控制相鄰的CPU間的同步的字段,設(shè)有進行同步化控制的部件。
通過這些結(jié)構(gòu),例如通過減少存取指令存儲器的次數(shù),來減少讀出指令存儲器時消耗的功率。此外,通過減少指令數(shù)和共享指令存儲器,通過減少指令存儲器的總?cè)萘?,來減少晶體管的充放電數(shù),實現(xiàn)功耗降低。
圖1是本實施例的嵌入式系統(tǒng)的框圖。
圖2是本實施例的圖像處理部6的框圖。
圖3是本實施例的移位型總線50的框圖。
圖4是本實施例的移位寄存器槽500的框圖。
圖5是本實施例的移位型總線50的時序圖。
圖6是本實施例的圖像處理引擎66的框圖。
圖7是本實施例的運算的一例。
圖8是本實施例的CPU部30的框圖。
圖9是本實施例的生成用于控制由指令譯碼部303生成的寄存器文件304的讀出端口和寫入端口的控制線308、和數(shù)據(jù)存儲器35的存取地址45的流程圖。
圖10是本實施例的指令存儲器控制部32的框圖。
圖11是本實施例的數(shù)據(jù)存儲器控制部33的框圖。
圖12是本實施例的局部DMAC 34的框圖。
圖13是本實施例的數(shù)據(jù)路徑部36的框圖。
圖14是第2實施例的圖像處理部66的框圖。
圖15是第2實施例的矢量運算部46的框圖。
圖16是第2實施例的指令存儲器控制部47的框圖。
圖17是本實施例的用于說明輸入同步的停止(stall)條件的圖。
圖18是本實施例的用于說明輸出同步的停止條件的圖。
圖19是本實施例的用于說明圖像處理引擎間同步的停止條件的圖。
圖20是第3實施例的圖像處理引擎66內(nèi)布置的CPU部的結(jié)構(gòu)圖。
圖21是用于說明內(nèi)積運算的例子的圖。
圖22是現(xiàn)有的SIMD型運算器的結(jié)構(gòu)。
圖23是本實施例的運算器的結(jié)構(gòu)圖。
圖24是用于說明伴隨轉(zhuǎn)置的內(nèi)積運算的例子的圖。
圖25是用于說明卷積運算的例子的圖。
圖26是本實施例的運算器的結(jié)構(gòu)圖。
具體實施例方式
以下,用圖來說明本發(fā)明的實施例。
實施例1參照附圖來詳細說明本發(fā)明的第1實施例。圖1是本實施例的嵌入式系統(tǒng)的框圖。本嵌入式系統(tǒng)將下述部分相互連接在內(nèi)部總線9上CPU1,進行系統(tǒng)的控制和通用性處理;流處理部2,進行MPEG等圖像編解碼器的1項處理即流處理;圖像處理部6,與流處理部2合作來進行圖像編解碼器的編碼和解碼;聲音處理部3,進行AAC或MP-3等聲音編解碼器的編碼和解碼;外部存儲器控制部4,控制由SDRAM等構(gòu)成的外部存儲器20的存??;PCI接口5,用于與標準總線即PCI總線22相連;顯示控制部8,控制圖像顯示;以及DMA控制器7,對各種IO設(shè)備進行直接存儲器存取。
在DMA控制器7上,經(jīng)DMA總線10連接著各種IO設(shè)備。在IO設(shè)備上,連接著攝像機等輸入NTSC信號等的圖像的圖像輸入部11、輸出NTSC等圖像的圖像輸出部12、話筒等輸入聲音的聲音輸入部13、揚聲器或進行光輸出等的聲音輸出的聲音輸出部14、遙控器等進行串行傳送的串行輸入部15、串行輸出部16、TCI總線等用于輸入流的流輸入部17、硬盤等用于輸出流的流輸出部18及各種IO設(shè)備19。在PCI總線22上,連接著硬盤或閃速存儲器等各種PCI設(shè)備23。
在顯示控制部8上,連接著顯示設(shè)備即顯示器21。圖像處理部6是對二維圖像實施圖像編解碼或圖像的放大縮小、或圖像的濾波等處理的處理部。這樣,本嵌入式系統(tǒng)是具有圖像和聲音的輸入輸出、進行圖像和聲音處理的系統(tǒng)。例如,有手機、或HDD記錄器、監(jiān)視裝置、車載圖像處理裝置等。
圖2是本實施例的圖像處理部6的框圖。圖像處理部6經(jīng)內(nèi)部總線橋60被連接在內(nèi)部總線9上。內(nèi)部總線橋60經(jīng)路徑63被連接在內(nèi)部總線主控制部61上,經(jīng)路徑64被連接在內(nèi)部總線從控制部62上。內(nèi)部總線主控制部61是圖像處理部6對內(nèi)部總線9成為總線主控器、生成讀存取或?qū)懘嫒〉恼埱?、將請求輸出到?nèi)部總線橋60的塊。在對內(nèi)部總線9寫存取時,輸出請求、地址、數(shù)據(jù)。在對內(nèi)部總線9讀存取時,輸出請求和地址,在幾個周期后,讀數(shù)據(jù)被返回。內(nèi)部總線從控制部62是接受從內(nèi)部總線9輸入、經(jīng)由內(nèi)部總線橋60輸入的讀請求或?qū)懻埱?、對?yīng)地進行處理的塊。內(nèi)部總線橋60是對內(nèi)部總線9和內(nèi)部總線主控制部61間、及內(nèi)部總線9和內(nèi)部總線從控制部62之間轉(zhuǎn)交的請求或數(shù)據(jù)進行仲裁的塊。移位型總線50是在圖像處理部6內(nèi)的塊間傳送數(shù)據(jù)的總線。各塊和移位型總線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被串聯(lián)連接。例如,移位寄存器槽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以外,是同一結(jié)構(gòu)。因此,作為代表,詳細說明移位寄存器槽500。
圖4是移位寄存器槽500的框圖。在移位寄存器槽500上,連接著與各塊的接口即信號線組50a、50b、50c、和塊間接口即信號線組50d、50e、50f、50g。對于這些信號線組50a、50b、50c、50d、50e、50f、50g,將信號的意義總結(jié)在表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的信號線組,來說明右旋移位型總線的總線協(xié)議。其中,本時序圖中的自身的塊ID是“B”。在輸入的EID和塊ID不等、而且WE為1的情況下,使選擇器513選擇信號線組511,由信號線組511向信號線組50e輸出。結(jié)果,信號線組50d被延遲1個周期而輸出到信號線組50e,投入到下一級移位寄存器槽中,作為有效的數(shù)據(jù)寫事務(wù)被繼承。該協(xié)議是圖5中的數(shù)據(jù)移位輸出。接著,在輸入的EID和塊ID相等、而且WE為1的情況下,識別為向自身的塊的輸入,將信號線組50a的R_WE_IN信號設(shè)為1。在該R_WE_IN信號為1的情況下,各塊識別出來自右旋移位型總線的輸入是數(shù)據(jù)寫事務(wù),并執(zhí)行數(shù)據(jù)寫處理。該協(xié)議是圖5中的數(shù)據(jù)寫。
進而,在數(shù)據(jù)寫條件已成立的情況下,使選擇器513選擇輸入信號線組50b一側(cè),由輸入信號線組50b向信號線組50e輸出。此時,向輸入信號線組50e的SBR_WE_OUT輸出輸入信號線組50b的SBR_OUT_REQ。在SBR_OUT_REQ為0的情況下,作為無效的事務(wù)被輸入到下一級移位寄存器槽中。該協(xié)議與圖5中的數(shù)據(jù)寫相同。在SBR_OUT_REQ為1的情況下,作為有效的事務(wù)被輸入到下一級移位寄存器槽中。這是圖5中的數(shù)據(jù)寫及數(shù)據(jù)輸出。其中,在輸入的WE為0的情況下,識別出輸入了無效的事務(wù),使選擇器513選擇輸入信號線組50b一側(cè),能夠從自身塊進行數(shù)據(jù)寫。
根據(jù)這些BID譯碼器512的動作,能夠進行接受來自信號線組50d的輸入作為數(shù)據(jù)寫事務(wù)的動作,將信號線組50b輸出到下一級移位寄存器槽作為數(shù)據(jù)寫事務(wù)的動作,以及在不是對自身的塊的數(shù)據(jù)寫事務(wù)的情況下,將該事務(wù)繼承到下一級的動作。由此,來實現(xiàn)從左側(cè)的塊向右側(cè)的塊的右旋的數(shù)據(jù)傳送。
同樣,通過對上述說明,將信號線組50d置換為信號線組50g,將信號線組50e置換為信號線組50f,將信號線組50a置換為信號線組50c,將寄存器510置換為寄存器514,將BID譯碼器512置換為BID譯碼器516,將選擇器513置換為選擇器517,將SBR_OUT_REQ信號置換為SBL_OUT_REQ信號,來實現(xiàn)從右側(cè)的塊向左側(cè)的塊的左旋的數(shù)據(jù)傳送。
其中,在從信號線組50a和信號線組50c同時對存儲器等使用單端口存儲器的存儲器發(fā)生數(shù)據(jù)寫事務(wù)的情況下,發(fā)生存儲器寫端口的競爭。為了避免它,有幾種方式。1種是使一方的移位型總線停止(stall),使來自一方的數(shù)據(jù)寫優(yōu)先。在此情況下,將競爭信號向全部塊廣播并停止。此外,通過將信號線組50a和信號線組50c投入到FIFO中,能夠減少競爭的頻度。再者,在使用這種存儲器的情況下,通過采用交叉(interleaved)型存儲器結(jié)構(gòu),將來自右旋移位型總線和左旋移位型總線的寫入設(shè)為寫入到不同體存儲器(別バンクメモリ),能夠避免競爭。其中,通過使數(shù)據(jù)流是單純的,且塊間的數(shù)據(jù)轉(zhuǎn)交使用右旋移位型總線,來自外部存儲器的讀入、即經(jīng)內(nèi)部總線橋60的數(shù)據(jù)寫事務(wù)使用左旋移位型總線,由此能夠避免競爭。此外,對1個存儲器,從右旋移位型總線和左旋移位型總線在同一周期中發(fā)生數(shù)據(jù)寫事務(wù)而競爭的概率非常小。因此,可以說性能降低的比例很小。
通過本方式,不用具有一般時序關(guān)鍵的全局的總線仲裁電路,就能夠?qū)崿F(xiàn)總線傳送。此外,用移位寄存器槽500內(nèi)的寄存器510、514,以塊為單位經(jīng)寄存器,在實際的LSI的平面布置圖中,能夠減少長的布線和時序關(guān)鍵路徑。一般,在三態(tài)總線方式、或縱橫制開關(guān)型總線中,在塊數(shù)增加的情況下,時序關(guān)鍵路徑、或布線量增加;但是根據(jù)本方式,在增加了總線上連接的塊數(shù)的情況下,也能夠抑制時序關(guān)鍵路徑和布線量增加。
再者,在多個塊間,能夠在同一周期中并行傳送數(shù)據(jù),能夠得到很高的數(shù)據(jù)傳送性能。特別是在只對相鄰的塊傳送數(shù)據(jù)的情況下,能夠得到與塊數(shù)成正比的數(shù)據(jù)帶寬。這樣,移位型總線50的總線協(xié)議只是數(shù)據(jù)的寫。在數(shù)據(jù)寫的總線協(xié)議中,能夠在與請求信號(WE_OUT)同一周期中,輸出地址(ADDR_OUT)和數(shù)據(jù)(DATA_OUT),與用FIFO或隊列保持狀態(tài)的同時執(zhí)行的總線結(jié)構(gòu)相比,能夠構(gòu)成更單純的總線。
時鐘停止信號500p被輸入到50p端子中。在該時鐘停止信號50p信號活動的情況下,選擇器513和選擇器517都選擇信號線組50d和信號線組50g。由此,從輸入到輸出,不經(jīng)寄存器而直通傳播。通過本方式,例如在停止了1個塊的時鐘的情況下,也能夠傳送數(shù)據(jù)。該移位型總線50沒有全局的總線仲裁電路,所以通過至少只向應(yīng)工作的塊供給時鐘,能夠在塊間傳送數(shù)據(jù),通過減少工作的寄存器數(shù),能夠減少功耗。其中,通過向整個移位型總線50供給時鐘,而不向各塊供給時鐘,也能夠以與寄存器510、514、518相應(yīng)的功率增加,來停止各塊。
這樣,移位型總線50能夠用單純的接口來連接相鄰的塊間。因此,通過增加塊ID字段,能夠連接多個塊。在本實施例的說明中,說明了圖像處理部6內(nèi)的公共總線,但是不限于此。例如,通過在LSI的管腳上采用移位型總線接口,能夠串聯(lián)連接多個LSI,不僅能夠與相鄰的LSI,而且能夠與布置得遠離的LSI進行通信。其中,在LSI間連接中,使用高速串行接口等,也能夠?qū)崿F(xiàn)管腳數(shù)減少。
此外,在移位型總線50中,具有Last信號。與數(shù)據(jù)傳送同時,在該信號線為“1”的情況下,使后述同步控制部473內(nèi)的數(shù)據(jù)存儲器就緒計數(shù)器DMRC進行遞增計數(shù)。由此,在指令級實現(xiàn)塊間的同步化。詳細情況將在后面描述。其中,在移位型總線中,也具有讀事務(wù)。該讀事務(wù)也將在后面描述。
再用圖2來說明圖像處理部6。在移位型總線50上連接著多個塊。除了先前所示的內(nèi)部總線主控制部61、內(nèi)部總線從控制部62以外,還連接著具有整個圖像處理部6可共享的存儲器的共享局部存儲器65、根據(jù)軟件來工作的對二維的圖像進行圖像編解碼或圖像的旋轉(zhuǎn)、放大縮小等處理的多個圖像處理引擎66、67、執(zhí)行圖像處理的一部分處理的專用硬件68等。作為專用硬件68的一例,是處理MPEG-2或H.264編碼標準中的、編碼時的運動預(yù)測等的塊。但是,專用硬件68的處理內(nèi)容與本發(fā)明的本質(zhì)沒有關(guān)系,所以省略其說明。圖像處理引擎66、67是處理器型的塊,能夠在移位型總線上連接多個。共享局部存儲器65、圖像處理引擎66、67、專用硬件68、內(nèi)部總線主控制部61、內(nèi)部總線從控制部62分別具有獨自的塊ID,按移位型總線50的公共總線協(xié)議,來相互連接。
接著,用圖6來更詳細地說明第1實施例的圖像處理引擎66。圖6是圖像處理引擎66的框圖。圖像處理引擎66的接口只是與移位型總線50的接口,是右旋移位型總線的輸入信號51a、左旋移位型總線的輸入信號51c、及向移位型總線50的輸出信號51b。這3種信號被連接在數(shù)據(jù)路徑部36上。在數(shù)據(jù)路徑部36上,經(jīng)信號線44連接著對移位型總線50進行數(shù)據(jù)輸出處理的局部DMAC 34。
再者,圖像處理引擎66具有能夠從移位型總線50進行數(shù)據(jù)寫的指令存儲器31和數(shù)據(jù)存儲器35,在數(shù)據(jù)路徑部36上,經(jīng)路徑42與控制指令存儲器31的指令存儲器控制部32相連,經(jīng)路徑43與數(shù)據(jù)存儲器控制部33相連。指令存儲器控制部32是控制從移位型總線50向指令存儲器31的數(shù)據(jù)寫、和向CPU部30的指令供給的塊,經(jīng)路徑40與指令存儲器31相連,經(jīng)路徑37與CPU部30相連,經(jīng)路徑42與數(shù)據(jù)路徑部36相連。數(shù)據(jù)存儲器控制部33是控制從移位型總線50向數(shù)據(jù)存儲器35的數(shù)據(jù)寫、進行控制局部DMAC 34所控制的從數(shù)據(jù)存儲器35向移位型總線50的數(shù)據(jù)輸出的控制、和從CPU 30向數(shù)據(jù)存儲器35的存取的控制的塊。數(shù)據(jù)存儲器35的控制使用路徑41來進行。
從移位型總線50向數(shù)據(jù)存儲器35的數(shù)據(jù)寫、和從數(shù)據(jù)存儲器35向移位型總線50的數(shù)據(jù)輸出經(jīng)路徑43與數(shù)據(jù)路徑部36協(xié)調(diào)來控制。與CPU部30的連接通過2個路徑來控制。從數(shù)據(jù)存儲器35向CPU部30的數(shù)據(jù)讀出處理通過路徑38來控制,從CPU部30向數(shù)據(jù)存儲器35的數(shù)據(jù)寫入通過路徑39來控制。并且,數(shù)據(jù)存儲器35的存取地址通過路徑45來供給。
其中,在本實施例的說明中,為了容易說明,將數(shù)據(jù)存儲器35的個數(shù)設(shè)為1個,但是也可以是使用多個數(shù)據(jù)存儲器的交叉結(jié)構(gòu)。通過交叉結(jié)構(gòu),能夠并行存取多個數(shù)據(jù)存儲器35。在說明本發(fā)明時,定義CPU 30的運算內(nèi)容。但是,該運算內(nèi)容是用于說明本發(fā)明的本質(zhì)的,并不限定運算內(nèi)容的種類。
圖7示出運算內(nèi)容的概要。如圖7所示,運算內(nèi)容是將二維的圖像A和二維圖像B的每個像素相加,寫入到存儲器中。在使用專利文獻1所示的SIMD型運算器的情況下,所需周期為矩陣A的讀出花費4個周期,矩陣B的讀出花費4個周期,加法花費4個周期,減法花費4個周期,合計需要16個周期。其中,在SIMD型運算器的并聯(lián)數(shù)為8的情況下,加法所需的周期數(shù)為2,但是在本發(fā)明中,說明4并聯(lián)的SIMD型運算器。此時,SIMD型運算器所需的總指令數(shù)是與所需周期數(shù)相同的16條指令。使用該運算內(nèi)容,來描述本發(fā)明的實現(xiàn)方式。
CPU部30是對二維圖像進行運算等的CPU。在本實施例中,為了容易說明,假設(shè)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個指令處理已結(jié)束的時刻輸出取指令請求37r。對應(yīng)地輸入指令37i和指令就緒信號37d,保存到指令寄存器301中。在這里的說明中,將指令寄存器301的組數(shù)設(shè)為1來進行說明。但是,指令的讀出等待時間大于1個周期,所以也可以具有多組指令寄存器301。指令寄存器301的值被供給到指令譯碼部303,對指令進行譯碼。在指令譯碼部303中,生成控制寄存器文件(通用寄存器)304的讀出端口和寫入端口的控制線308、用于控制運算器313的指令譯碼信號309、以及用于按指令的種類控制選擇器311的控制線310。此外,在1條指令處理已結(jié)束的時刻,輸出取指令請求37r。
在本說明中,說明除了分支指令以外、還具有讀指令、寫指令、分割加法指令的CPU部30。因此,控制線308在讀指令時,在讀數(shù)據(jù)38已被返回的時刻,將保存讀數(shù)據(jù)的寄存器號指針值用作保存目的寄存器號指針。在寫指令時,需要讀出寄存器文件304,所以使用寫數(shù)據(jù)寄存器號。在分割加法指令時,讀出和寫入寄存器文件304都需要,控制它。指令譯碼信號309在本說明中只在分割加法指令時活動,在具有其他指令的情況下,根據(jù)指令種類,來輸出用于控制運算器的信號??刂凭€310在讀指令時,選擇讀數(shù)據(jù)38;在分割加法指令時,選擇運算器313的運算結(jié)果314。選擇出的運算數(shù)據(jù)315被保存到寄存器文件304中。此外,指令譯碼部303在讀指令時和寫指令時,控制運算部313,生成數(shù)據(jù)存儲器35的存取地址45。
其中,運算器303與專利文獻1同樣由8并聯(lián)的SIMD型運算器構(gòu)成,能夠并行運算8個8位寬度的加法。即,能夠并行運算8個分割加法。此外,將CPU 30的數(shù)據(jù)寬度設(shè)為8個字節(jié)。因此,讀指令、寫指令、分割加法指令能夠以8個字節(jié)為單位來執(zhí)行。此外,在讀指令、寫指令、分割加法指令的Width字段中,可以定義8、16、32;在計數(shù)字段中,可以以1為間隔來指定1至16。
用圖9來說明指令譯碼部303及運算部313生成存取地址45的工作。圖9是生成控制指令譯碼部303生成的寄存器文件304的讀出端口和寫入端口的控制線308、和數(shù)據(jù)存儲器35的存取地址45的流程圖。
指令譯碼部303具有Wc計數(shù)器,在起動指令時清零(步驟90)。接著,在步驟91中,使用Src和Dest、(Addr+Wc),來執(zhí)行讀指令、寫指令、分割加法指令。接著在步驟92中,在Src和Dest上加1,Wc上加8。在步驟93中,比較用指令字段指定的Width字段和Wc。在Width大于Wc的情況下,再次返回到步驟91,重復(fù)執(zhí)行指令。在Width等于、或小于Wc的情況下,轉(zhuǎn)移到步驟94,判定指令字段所示的Count值是否是0。在Count值不是0的情況下,轉(zhuǎn)移到步驟95,從Count值中減去1,Addr上加Pitch,再次轉(zhuǎn)移到步驟90,重復(fù)執(zhí)行指令。在Count值為0的情況下,結(jié)束執(zhí)行指令。此時,指令譯碼部303輸出取指令請求37r。
通過圖9的時序圖的動作,能夠用1條指令對二維矩形進行運算。特別是在讀指令中,通過指定Pitch,能夠?qū)?shù)據(jù)存儲器35上分散布置的二維矩形作為連續(xù)數(shù)據(jù)保存到寄存器文件304中。此外,在寫指令中,同樣通過指定Pitch,能夠?qū)⒓拇嫫魑募喜贾玫倪B續(xù)數(shù)據(jù)寫到數(shù)據(jù)存儲器35上的分散布置的二維矩形區(qū)域上。
在圖7所示的運算內(nèi)容中,能夠用2條讀指令、1條分割加法指令、1條寫指令這合計3條指令來結(jié)束運算。即,從指令存儲器31中只取4條指令即可。但是,對專利文獻1所示的SIMD型的指令長度,本發(fā)明的指令附加了Width、Count、Pitch等操作數(shù),指令長度變長。在專利文獻1的指令寬度設(shè)為32位的情況下,本發(fā)明的指令長度是64位左右。一次指令存儲器存取消耗的功率為2倍,但是能夠?qū)⒋嫒〈螖?shù)從16減少到4,指令存儲器消耗的總功耗由2×4÷16來表示,能夠?qū)⒐β蕼p少到一半。此外,用1條指令對二維的數(shù)據(jù)進行處理,能顯著地減少程序的同一指令的循環(huán)的次數(shù)。這意味著能夠減少指令存儲器31的容量。
其中,在圖8中,輸入數(shù)據(jù)30i被輸入到寄存器文件304中,能夠更新寄存器文件304的數(shù)據(jù)。進而,運算數(shù)據(jù)315作為運算數(shù)據(jù)30wb來輸出。該輸入數(shù)據(jù)30i和運算數(shù)據(jù)30wb將在第2實施例中進行說明。
用圖10來說明第1實施例的指令存儲器控制部32。圖10是指令存儲器控制部32的框圖。指令存儲器控制部32是控制指令存儲器31的存儲器存取的塊。指令存儲器31有從CPU部30中取指令的存取、和從移位型總線50的存取,指令存儲器控制部32仲裁這些存取,來存取指令存儲器31。存取仲裁由仲裁部320來進行。存儲器存取請求是從CPU部30輸入的取指令請求37r、和從數(shù)據(jù)路徑部36輸入的路徑42。根據(jù)仲裁結(jié)果來控制選擇器323,輸出用于存取指令存儲器31的地址等控制線40c。
在取指令存取的情況下,仲裁部320使選擇器323選擇指令的程序計數(shù)器322的輸出,讀出指令存儲器31,并且輸出控制線321,遞增程序計數(shù)器322。從指令存儲器31返回的指令40d被保存到指令寄存器324中,作為指令37i而返回到CPU部30。同時,指令的操作數(shù)字段被輸入到分支控制部325中,判斷是否是分支指令,在分支指令時將為1的信號326輸入到仲裁部320中。此外,分支條件寄存器的讀出索引字段被輸入到分支條件寄存器327中。所謂分支條件寄存器327,是由1位寬度的多個字構(gòu)成的寄存器組,用分支條件寄存器的讀出索引字段來指定字,將1位寬度的信號328輸入到仲裁部320中。
實際的分支是在信號326為1、而且信號328為1時分支。將本組合以外識別為分支指令以外的指令。仲裁部320只在分支指令以外的指令時,才返回指令就緒信號37d。在分支指令時,不返回指令就緒信號37d,選擇器323選擇指令寄存器324內(nèi)保存的立即數(shù)。此時,用將該立即數(shù)遞增了的值來更新程序計數(shù)器322。
根據(jù)本方式,在CPU的取指令請求37r的發(fā)出間隔需要幾個周期的情況下,能夠完全隱蔽分支指令造成的重新讀出指令所需的周期,能夠抑制分支造成的性能降低。在本發(fā)明的CPU部30中,通過指定二維的操作數(shù),取指令請求37r的發(fā)出間隔大,該效果大。
用圖11來說明第1實施例的數(shù)據(jù)存儲器控制部33。圖11是數(shù)據(jù)存儲器控制部33的框圖。數(shù)據(jù)存儲器35能夠從CPU部30讀及寫存取、從移位型總線50寫處理、從局部DMAC 34寫存取,數(shù)據(jù)存儲器控制部33是仲裁這些存取的塊。這些仲裁由仲裁部330來進行,控制地址選擇器331和數(shù)據(jù)選擇器332。其中,與數(shù)據(jù)存儲器35之間的信號線41被分類為41a、41d、41w這3個信號線。而與數(shù)據(jù)路徑部36之間的信號線43被分類為信號線43a、43d、411、43r這4個信號線。
首先,說明與CPU部30之間的連接。讀指令時及寫指令時的數(shù)據(jù)存儲器地址45通過地址選擇器331,作為數(shù)據(jù)存儲器地址41a,被輸入到數(shù)據(jù)存儲器35中。在寫指令時,寫數(shù)據(jù)39經(jīng)由數(shù)據(jù)選擇器332,作為寫數(shù)據(jù)41w被輸入到數(shù)據(jù)存儲器35中。在讀指令時,根據(jù)數(shù)據(jù)存儲器地址41a,來讀出讀數(shù)據(jù)41d,保存到數(shù)據(jù)寄存器333中。保存的讀數(shù)據(jù)作為讀數(shù)據(jù)38被返回到CPU部30。其中,在將主S/D寄存器的值指定為讀指令的DestReg的情況下,讀數(shù)據(jù)被輸出到讀數(shù)據(jù)43r。接著在從移位型總線50的寫處理中,地址線43a通過地址選擇器331,作為數(shù)據(jù)存儲器地址41a,被輸入到數(shù)據(jù)存儲器35中。同時數(shù)據(jù)線43d經(jīng)由數(shù)據(jù)選擇器332,作為寫數(shù)據(jù)41w被輸入到數(shù)據(jù)存儲器35中。
最后,在從局部DMAC 34存取時,地址43p通過地址選擇器331,作為數(shù)據(jù)存儲器地址41a,被輸入到數(shù)據(jù)存儲器35中。對應(yīng)地讀出的讀數(shù)據(jù)41d被保存到數(shù)據(jù)寄存器333中,作為讀數(shù)據(jù)43r被返回。
用圖12來說明第1實施例的局部DMAC 34。圖12是局部DMAC 34的框圖。局部DMAC 34具有生成向移位型總線50輸出數(shù)據(jù)的處理中的數(shù)據(jù)存儲器地址44da、和用于對應(yīng)于從移位型總線50輸入的從數(shù)據(jù)存儲器35的讀存取來進行讀處理的數(shù)據(jù)存儲器地址44da的功能;生成向移位型總線50輸出數(shù)據(jù)時的移位型總線地址44sa的功能;以及用于對移位型總線50產(chǎn)生讀命令的功能。局部DMAC 34用信號線44只連接數(shù)據(jù)路徑部36。這里,信號線44可以分類為信號線44pw、44swb、44da、44sa、44dw這5種信號線。
在局部DMAC 34內(nèi),具有可由讀指令改寫的主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的數(shù)據(jù)傳送具有3種工作模式。
第1種是數(shù)據(jù)寫模式。在數(shù)據(jù)寫模式中,用主D寄存器340的參數(shù),來讀出自身的數(shù)據(jù)存儲器35,用主S寄存器341的參數(shù),將數(shù)據(jù)傳送到其他圖像處理引擎等塊,將數(shù)據(jù)寫到數(shù)據(jù)存儲器35等地址映射的區(qū)域上。
第2種是讀命令模式。在讀命令模式中,將主D寄存器和主S寄存器的值本身作為數(shù)據(jù),將數(shù)據(jù)傳送到其他圖像處理引擎等塊,將值保存到其他塊內(nèi)的從D寄存器和從S寄存器中。這作為向其他塊的讀請求來工作。其中,在讀指令模式時,作為移位型總線50的接口,將CMD信號設(shè)為1來傳送。接受讀指令的塊根據(jù)CMD信號,來識別該移位型總線傳送是否是讀命令。
第3種是讀模式。對先前的讀命令模式中接受的讀請求,用從D寄存器342的參數(shù),來讀出數(shù)據(jù)存儲器35,用從S寄存器343的參數(shù),將數(shù)據(jù)傳送到其他圖像處理引擎等塊,將數(shù)據(jù)保存到數(shù)據(jù)存儲器35等地址映射的區(qū)域上。通過組合這3種模式,在圖像處理引擎等塊間實現(xiàn)數(shù)據(jù)傳送。
主D寄存器340和主S寄存器341能夠由CPU部30發(fā)出的讀指令來更新,此時,從信號線44pw輸入數(shù)據(jù),更新2個寄存器。即,通過預(yù)先將描述了數(shù)據(jù)傳送內(nèi)容的描述符保存到數(shù)據(jù)存儲器35中,將該內(nèi)容拷貝到主D寄存器340和主S寄存器341中,來開始數(shù)據(jù)傳送。
在2個寄存器已被更新的時刻,根據(jù)主D寄存器340的Mode字段來轉(zhuǎn)移到2個狀態(tài)。在Mode字段表示數(shù)據(jù)寫模式的情況下,經(jīng)地址選擇器344,將主D寄存器340的MADDR、MWidth、Mcount、MPitch傳送到數(shù)據(jù)存儲器地址生成器346。數(shù)據(jù)存儲器地址生成器346生成用于讀出數(shù)據(jù)存儲器35的地址,輸出地址44da。生成地址的方式與CPU部30內(nèi)的指令譯碼部303生成存取地址45的方式相同。因此,在數(shù)據(jù)存儲器地址生成器346中具有Wc計數(shù)器,通過生成將MWidth、MCount、MPitch分別置換為Width、Count、Pitch所得的地址,來生成二維矩形的地址。
同樣,主S寄存器341的SADDR、SWidth、SCount、SPitch經(jīng)由地址選擇器345被輸入到移位型總線地址生成器347中,生成要輸出到移位型總線50的地址,輸出地址44sa。該移位型總線地址生成器347生成地址,也與數(shù)據(jù)存儲器地址生成器346生成地址同樣,來表現(xiàn)二維矩形。用這2個地址,從數(shù)據(jù)存儲器35中依次讀出讀數(shù)據(jù)43r,結(jié)果,作為信號線組50b,來實現(xiàn)從圖像處理引擎66向移位型總線50的寫數(shù)據(jù)處理。此時,傳送目的塊是主S寄存器341的SBID所示的字段。此時,根據(jù)MDIR標志,來決定使用右旋的移位型總線,還是左旋的移位型總線。
其中,在本方式中,分別使用MWidth、MCount、MPitch和SWidth、SCount、SPitch,來生成數(shù)據(jù)存儲器35的地址44da和用于輸出到移位型總線的地址44sa。這樣,通過用2個寄存器組來分別生成地址,能夠變換二維矩形的形狀來傳送數(shù)據(jù)。但是,在作為同一矩形來傳送的情況下,能夠只用一方的參數(shù)來生成地址。
另一方面,在Mode字段表示讀命令模式的情況下,主D寄存器340和主S寄存器341的值直接作為輸出信號44swb來輸出,將讀命令傳送到其他塊。此時,傳送目的塊是主D寄存器340的MBID字段所示的塊。在傳送目的塊接受該讀命令的情況下,更新從D寄存器342和從S寄存器343,作為讀模式來開始處理。讀命令經(jīng)路徑44sw被更新為從D寄存器342和從S寄存器343。傳送目的塊接受讀命令后,用與先前的數(shù)據(jù)寫處理大致同樣的動作,來讀出讀數(shù)據(jù),輸出到移位型總線50。從D寄存器342的MADDR、MWidth、MCount、MPitch經(jīng)由地址選擇器344被輸入到數(shù)據(jù)存儲器地址生成器346中,作為地址44da來存取數(shù)據(jù)存儲器35。其后的行為與數(shù)據(jù)寫時相同。同樣,從S寄存器343的SADDR、SWidth、SCount、SPitch經(jīng)由選擇器345被輸入到移位型總線地址生成器347中,生成地址44sa。其后的動作與數(shù)據(jù)寫時相同。通過這3個局部DMAC 34的動作,在移位型總線50中,只用能夠在同一周期中輸出地址和數(shù)據(jù)的寫事務(wù)來實現(xiàn)數(shù)據(jù)傳送。一般,為了提高總線的性能,使用將地址和數(shù)據(jù)分離開的分割(スプリツト)型總線。所謂分割型總線,用同一事務(wù)ID等ID來管理地址和數(shù)據(jù),各請求從(リクエストスレ一ブ)一側(cè)將地址按FIFO等排隊,進行待機,直至數(shù)據(jù)接收。因此,總線性能受隊列或FIFO的級數(shù)限制。另一方面,在本方式中,在所有總線傳送中,能夠在同一周期中傳送地址和數(shù)據(jù),不發(fā)生FIFO級數(shù)等造成的性能的飽和。
其中,局部DMAC 34的動作用讀指令來起動,在已起動的時刻,CPU部30能夠執(zhí)行下一條指令。但是,只在使用局部DMAC 34的傳送執(zhí)行中,下一個DMAC 34的使用為禁止狀態(tài),停止。但是,通過增大起動局部DMAC 34的發(fā)出間隔,不發(fā)生競爭造成的性能降低。在此期間,CPU部30通過執(zhí)行別的處理序列,能夠并行執(zhí)行CPU部30的處理和塊間傳送,能夠減少所需的處理周期數(shù)。此外,對于讀傳送,只有1組從D寄存器342和從S寄存器343,所以在讀處理執(zhí)行中,禁止接受下一條讀命令,不在移位型總線50上進行終接_。移位型總線50成環(huán)形,通過在該讀命令環(huán)繞了移位型總線50一周的時刻,接受讀命令,能夠重新起動讀命令。通過用寫模式來進行塊間的數(shù)據(jù)傳送的大部分,抑制讀的發(fā)生頻度,能夠減少該性能降低。圖像處理的數(shù)據(jù)流性動作較多,塊間傳送大部分使用寫模式,所以本方式能夠抑制性能降低。
在局部DMAC 34進行的傳送中,能夠向移位型總線50輸出“Last”信號。這在主D寄存器340或從D寄存器342內(nèi)的Last字段為“1”的傳送時,二維矩形的傳送的最后一次傳送時,只斷言(アサ一ト)1個周期。由此,能夠識別作為對象的直接存儲器傳送是否已結(jié)束。這在后述的塊間同步時使用。
用圖13來說明第1實施例的數(shù)據(jù)路徑部36。圖13是數(shù)據(jù)路徑部36的框圖。數(shù)據(jù)路徑部36是進行移位型總線50、指令存儲器控制部32、數(shù)據(jù)路徑部33以及局部DMAC 34之間的數(shù)據(jù)轉(zhuǎn)交的塊。首先,說明從移位型總線部50輸入數(shù)據(jù)。右旋移位型總線的輸入即信號線組51a和左旋移位型總線的輸入即信號線組51c被連接在向指令存儲器31的寫入路徑即路徑42、向數(shù)據(jù)存儲器35的寫入路徑中的地址即路徑43a和數(shù)據(jù)即路徑43d、及向局部DMAC 34內(nèi)的從D寄存器342和從S寄存器343的寫入路徑即路徑44sw上。向移位型總線50的數(shù)據(jù)輸出即信號線組51b從2個塊輸入,1個是來自數(shù)據(jù)存儲器35的讀數(shù)據(jù)43r,第2個是來自局部DMAC 34的輸出即主D寄存器340和主S寄存器341的直接輸出信號44swb、和向移位型總線50的輸出地址44sa。它們被排他地處理,用移位型總線50的協(xié)議來控制。此外,局部DMAC 34用于讀出數(shù)據(jù)存儲器35的地址44da被連接在數(shù)據(jù)存儲器控制部33的地址43p上。
這樣,根據(jù)第1實施例,通過減少指令存儲器31的存取頻度、和停止向各塊供給時鐘等,能夠減少功耗。此外,通過隱蔽在分支指令中、和與局部DMAC 34并行動作等,來顯著地減少處理周期數(shù),實現(xiàn)功率降低。
實施例2用圖14來說明本發(fā)明的第2實施例。圖14是本實施例的圖像處理部66的框圖。相對于圖6所示的第1實施例的圖像處理引擎66有3處不同。第1處是CPU部30的輸入數(shù)據(jù)30i和運算數(shù)據(jù)30wb被連接在矢量運算部46上。輸入數(shù)據(jù)30i是要輸入到CPU部30內(nèi)的寄存器文件304中的數(shù)據(jù),能夠更新寄存器文件304的數(shù)據(jù)。運算數(shù)據(jù)30wb是CPU部30的運算結(jié)果,被輸入到矢量運算部46中。第2處是代替圖6的指令存儲器控制部32而連接著指令存儲器控制部47。指令存儲器控制部47具有多個程序計數(shù)器,控制指令存儲器31。此外,第3處不同是矢量運算部46經(jīng)路徑37被連接在指令存儲器控制部47。
圖15示出第2實施例的矢量運算部46的框圖。矢量運算部46的功能與圖8所示的CPU部30的不同點是不能存取數(shù)據(jù)存儲器35。接口的差別是路徑38、路徑39、路徑45不存在。其中,運算部463與圖8的運算部313為同一結(jié)構(gòu),或者指令集也可以不同。矢量運算部46的運算內(nèi)容將在后面用圖21至圖26來描述。
圖16示出指令存儲器控制部47的框圖。指令存儲器控制部47和圖10所示的指令存儲器控制部32之間的差別有2處。第1處是用仲裁部470來接受來自CPU部30和矢量運算部46的2個取指令請求37r,進行仲裁。仲裁結(jié)果471被輸入到面向矢量運算部46的程序計數(shù)器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的運算結(jié)果能夠保存到另一方的寄存器文件304和462中。同步控制有2種方式,1種是表示是否準備好了輸入數(shù)據(jù)的同步化。例如,在CPU部30的運算數(shù)據(jù)30wb變?yōu)橛行У臅r刻,矢量運算部46能夠使用該運算數(shù)據(jù)30wb。因此矢量運算部46必須停止,直至運算數(shù)據(jù)30wb變?yōu)橛行?。將此稱為輸入同步。第2種是要寫入目的地寄存器文件知道是否是可寫入狀態(tài)的同步化。例如,CPU部30必須停止,直至矢量運算部46的寄存器文件462變?yōu)榭蓪懭?。將此稱為輸出同步。
此外,在從其他圖像處理引擎6使用局部DMAC 34將數(shù)據(jù)直接存儲器傳送到數(shù)據(jù)存儲器35中、CPU部30讀出該傳送數(shù)據(jù)的情況下,必須識別該直接存儲器傳送是否已結(jié)束。在數(shù)據(jù)傳送未結(jié)束的情況下,CPU部30停止。將此稱為塊間同步。其中,塊間同步在第1實施例中也可以使用,但是只在此第2實施例中進行說明。同步控制部473進行這3種同步化處理。接著,說明同步控制方式。在同步控制中,用為每個CPU布置的4個計數(shù)器、為每個塊成對布置的2個計數(shù)器、以及指令上定義的5個標志來進行同步化。表16示出計數(shù)器的定義。此外,表17示出指令內(nèi)布置的同步化字段的定義。
表16表16 同步化計數(shù)器的定義
表17表17 指令內(nèi)的同步化字段
首先,用圖17來說明輸入同步。在CPU部30的運算數(shù)據(jù)30wb變?yōu)橛行У臅r刻,矢量運算部46能夠使用該運算數(shù)據(jù)30wb。因此,矢量運算部46需要停止,直至運算數(shù)據(jù)30wb變?yōu)橛行?。在CPU部30的指令中、DRE字段為1的指令結(jié)束的時刻,使矢量運算部46內(nèi)的執(zhí)行就緒計數(shù)器ERC〔矢量運算部46〕進行遞增計數(shù)。按該指令,將運算數(shù)據(jù)30wb保存到矢量運算部46中,在該指令結(jié)束的時刻,矢量運算部46能夠進行使用數(shù)據(jù)30wb的運算。至此矢量運算部46中的具有ISYNC的指令停止。該停止條件是在ERC〔矢量運算部46〕小于或等于SRC〔矢量運算部46〕時,具有ISYNC的指令時。在先前的使ERC〔矢量運算部46〕進行了遞增計數(shù)的時刻,執(zhí)行就緒計數(shù)器ERC〔矢量運算部46〕變得大于從請求數(shù)計數(shù)器SRC〔矢量運算部46〕。在此時刻,矢量運算器46能夠解除停止,開始運算。同時使從請求數(shù)計數(shù)器SRC〔矢量運算部46〕進行遞增計數(shù)。通過這2個計數(shù)器的1組更新來進行1次輸入同步。
此外,在矢量運算器46的處理速度慢、SRC和ERC的遞增計數(shù)有乖離的情況下,可以由CPU部30準備運算數(shù)據(jù)30wb,即,使執(zhí)行就緒計數(shù)器ERC進行遞增計數(shù),能夠作為數(shù)據(jù)的預(yù)取來動作。
同樣,在CPU部30使用矢量運算器46生成的運算數(shù)據(jù)30i的情況下,與先前的說明相反,在矢量運算器46的指令中使用DRE字段,在CPU部30的指令中使用ISYNC字段,能夠用CPU部30內(nèi)布置的執(zhí)行就緒計數(shù)器ERC〔CPU部30〕和從請求數(shù)計數(shù)器SRC〔CPU部30〕來進行輸入同步。其中,這里,說明了使用執(zhí)行就緒計數(shù)器ERC和從請求數(shù)計數(shù)器SRC的輸入同步,但是也可以用1位寬度的標志。例如,按執(zhí)行就緒計數(shù)器ERC的更新條件來置位標志。2個CPU停止,直至該標志和運算數(shù)據(jù)的接收端的CPU指令的ISYNC標志都為1。在解除停止的時刻,通過清除標志,能夠用很少的邏輯電路來進行2個CPU間的同步化。
接著,使用圖18來說明輸出同步。輸出同步也與輸入同步同樣用2個計數(shù)器和2個指令內(nèi)定義的同步字段來進行同步化。輸出同步是要寫入目的寄存器文件知道是否是可寫入狀態(tài)的同步化。例如,CPU部30必須停止,直至可寫入矢量運算部46的寄存器文件462。輸入同步是后級CPU的停止,而輸出同步是前級CPU的停止。
在本例的動作中,能夠在矢量運算器46的指令中、RFR字段被置位為1的指令結(jié)束的時刻,從CPU部30寫入到矢量運算器46的寄存器文件462中。在該RFR字段被置位為1的指令結(jié)束的時刻,使CPU部30的寄存器文件就緒計數(shù)器RFRC〔CPU部〕進行遞增計數(shù)。至此,CPU部30的OSYNC被置位的指令在請求起動的時刻停止。該停止條件是寄存器文件就緒計數(shù)器RFRC〔CPU部〕的值小于或等于主請求數(shù)計數(shù)器MRC〔CPU部〕時。在受托起動CPU部30的OSYNC被置位的指令的時刻,使主請求數(shù)計數(shù)器MRC〔CPU部〕進行遞增計數(shù)。本方式也與輸入同步同樣,在前級CPU的處理非常慢、后級CPU的處理快的情況下,能夠空余很多寄存器文件的空閑容量。在此情況下,在前級CPU的輸出同步時不發(fā)生停止。同樣,在矢量運算部46停止、直至可寫入CPU部30的寄存器文件304的輸出同步中,通過使矢量運算部46使用OSYNC,CPU部30置位RFR字段,來實現(xiàn)2個CPU間的輸出同步。通過組合這些輸入同步和輸出同步,來實現(xiàn)2個CPU間的寄存器文件級的細致的同步。在這些同步化方式中,在指令自身中具有同步字段是其特征。
最后,用圖19來說明塊間同步。所謂塊間同步,是其他信息處理引擎6等通過直接存儲器傳送將數(shù)據(jù)保存到數(shù)據(jù)存儲器35中、CPU部30用讀指令來使用該傳送數(shù)據(jù)時的同步化。CPU部30需要識別是否直接存儲器傳送已結(jié)束、所有數(shù)據(jù)被保存在數(shù)據(jù)存儲器35內(nèi),在未保存的情況下,輸入數(shù)據(jù)為無效的值,所以必須停止。即,在讀指令時,檢查是否可執(zhí)行該讀指令,用與先前所示的輸入同步大致同樣的方式來進行同步化。即,通過比較2個計數(shù)器的大小來進行同步化。第1個計數(shù)器是數(shù)據(jù)存儲器就緒計數(shù)器DMRC,是在先前所示的移位型總線50的傳送中、在伴隨“Last”信號的傳送中進行遞增計數(shù)的計數(shù)器。這通過設(shè)定局部DMAC 34的主D寄存器340的“Last”標志,在直接存儲器傳送的最后一次傳送、即二維矩形傳送的最后一次傳送的時刻斷言。即,用可識別直接存儲器傳送已結(jié)束的信號,在其為“1”時,使數(shù)據(jù)存儲器就緒計數(shù)器DMRC進行遞增計數(shù)。即,在從CPU部30來看的情況下,表示數(shù)據(jù)已準備好。
第2個計數(shù)器是數(shù)據(jù)存儲器存取計數(shù)器DARC,是在變得可執(zhí)行讀指令的操作數(shù)內(nèi)布置的MSYNC為“1”的指令的時刻進行遞增計數(shù)的計數(shù)器。因此,CPU部30可執(zhí)行讀的定時是數(shù)據(jù)存儲器就緒計數(shù)器DMRC大于數(shù)據(jù)存儲器存取計數(shù)器DARC時。換言之,在數(shù)據(jù)存儲器就緒計數(shù)器DMRC等于或小于數(shù)據(jù)存儲器存取計數(shù)器DARC的情況下,CPU部30停止。這樣,能夠在讀指令這一指令級進行塊間的同步化。
這樣,根據(jù)第2實施例,在可使用多個二維的操作數(shù)的CPU共享指令存儲器的情況下,指令的發(fā)出間隔大,所以能夠抑制性能降低,并且能夠通過共享指令存儲器來減少存儲器面積。再者,通過用CPU部30對數(shù)據(jù)存儲器35進行讀和寫處理,用矢量運算器46進行運算處理,用同步單元進行2個CPU間的寄存器文件級的同步化,能夠提高運算吞吐量。此外,在指令級實現(xiàn)塊間的同步化。
實施例3用圖20來說明第3實施例。圖20是本實施例的圖像處理引擎66內(nèi)布置的CPU部的結(jié)構(gòu)圖。在第1實施例中,由1個CPU部30構(gòu)成;在第2實施例中,說明了由CPU部30和矢量運算部46這2個CPU構(gòu)成。在第3實施例中,串聯(lián)或環(huán)形連接2個以上的多個CPU。在圖3中,在先頭的CPU上,布置可存取數(shù)據(jù)存儲器35的CPU部30,將多個矢量運算部46、46n串聯(lián)連接,在末端上連接可存取數(shù)據(jù)存儲器35的CPU部30s。CPU部30s的運算數(shù)據(jù)30i再次被連接在CPU部30的輸入數(shù)據(jù)部上。此時,各CPU分別成為具有程序計數(shù)器的結(jié)構(gòu),實際上成為具有多個圖16所示的指令存儲器控制部7內(nèi)的程序計數(shù)器的結(jié)構(gòu)。仲裁部470從多個取指令請求37r中選擇取指令。
此外,對同步化處理的控制也不同。在第2實施例的說明中,描述了2個相鄰的CPU間的輸入同步方式和輸出同步方式。在第3實施例中也進行同樣的同步化處理。即,在相鄰的CPU之間,進行輸入同步和輸出同步。此外,在最后一級CPU部30s和第一級CPU部30之間,也進行同步化。此外,CPU部30和CPU部30s都存取數(shù)據(jù)存儲器35。因此,圖11所示的數(shù)據(jù)存儲器控制部33也控制多個數(shù)據(jù)存儲器存取。根據(jù)本方式,用CPU部30從數(shù)據(jù)存儲器35中讀入數(shù)據(jù),傳送到矢量運算部46。將矢量運算器46的運算結(jié)果傳送到矢量運算器46n,矢量運算器n進行下一個處理,將運算數(shù)據(jù)傳送到CPU部30s。CPU部30s通過將運算結(jié)果傳送到數(shù)據(jù)存儲器35,能夠以流水線方式讀數(shù)據(jù)、進行運算、保存數(shù)據(jù),得到高的運算吞吐量。特別是通過使數(shù)據(jù)存儲器35采用交叉結(jié)構(gòu),分割讀指令和寫指令、及直接存儲器存取的塊,能夠得到高的吞吐量。
再者,根據(jù)本方式,在串聯(lián)或環(huán)形連接2個以上的CPU的結(jié)構(gòu)中,也能實現(xiàn)伴隨CPU間的同步的多CPU結(jié)構(gòu)。再者,在CPU數(shù)增加的情況下,寄存器文件的讀寫端口數(shù)也不增加,不增加網(wǎng)絡(luò)或寄存器文件的面積。例如,上述專利文獻3所示的VLIW結(jié)構(gòu)等造成的CPU數(shù)的增加與運算器數(shù)成正比,寄存器的端口數(shù)增加,面積成本增大,而在本方式的串聯(lián)連接中,它不增加。
此外,在VLIW方式中,多個運算器活動的定時不同。例如,考慮下述例子在同一運算循環(huán)內(nèi),1個運算器進行存儲器讀,第2個運算器進行通用運算,第3個運算器進行存儲器寫。此時,各個CPU實際動作的運算周期數(shù)不同,但是在同一運算循環(huán)中進行處理,所以運算器的工作效率降低,結(jié)果,所需處理周期數(shù)增加,功耗增加。另一方面,在本方式中,能夠使各CPU分別具有程序計數(shù)器,不依賴于其他CPU的動作及程序計數(shù)器的動作,能夠處理各自的運算。例如,在10次循環(huán)中的第5次和第6次之間變更1個參數(shù)的情況下,在VLIW方式中,需要用各5次的2個循環(huán)來描述指令串;但是在本方式中,通過分別具有程序計數(shù)器,能夠使只有變更參數(shù)的CPU用2個循環(huán)來指定指令串,能夠提高運算工作效率,同時能夠減少使用的指令存儲器31的容量。
接著,對指令的操作數(shù)由Width字段和Count字段組成的二維操作數(shù)指定方式示出其實施例。至此,描述了通過指定二維操作數(shù)來減少指令數(shù),通過減少指令存儲器31的讀出次數(shù)來降低功率,通過減少指令存儲器31的容量來降低功率和減少面積成本。除此之外,也能夠通過減少處理周期數(shù)來降低功率。這里,用內(nèi)積運算和卷積運算來說明其實施例。
內(nèi)積運算是圖像編解碼器或圖像濾波器等中使用的通用的圖像處理之一。這里,以4×4矩陣的內(nèi)積運算為例來進行說明。圖21示出該內(nèi)積運算例。如圖所示,4×4矩陣的內(nèi)積運算的1個數(shù)據(jù)輸出是執(zhí)行4次乘法、將它們的運算結(jié)果相加所得的值。將該運算設(shè)為4×4矩陣,對16個元素進行同樣的運算。在本例的說明中,假設(shè)各數(shù)據(jù)要素的長度為16位(2個字節(jié)),用64位寬度運算器來進行運算。此外,假設(shè)在矢量運算器46的寄存器文件462內(nèi)的寄存器中如下保存著矩陣A和矩陣B,將運算結(jié)果保存到寄存器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}這樣,在二維內(nèi)積運算中,運算的輸入使用多個寄存器是其特征。在圖22所示的一般的1個周期發(fā)出1條指令的4并聯(lián)的SIMD型運算器中,用以下的指令串來進行處理。其中,假設(shè)矩陣A如下保存著轉(zhuǎn)置了的值。
寄存器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條指令,為內(nèi)積運算運算第1行,變更Src1寄存器,由此進行4行的運算。因此,花費16個周期來運算合計16條指令。其中,作為預(yù)處理,需要轉(zhuǎn)置矩陣A。因此,實質(zhì)上所需的周期數(shù)大于16個周期。
另一方面,在能夠指定二維操作數(shù)的本實施例中,采用圖23所示的運算器結(jié)構(gòu)。與圖22所示的SIMD型的運算器相比,在Src2輸入的前一級布置選擇器609,選擇輸入Src2和Src2
的值。此外,在每一個運算周期中,使用路徑610,左移Src2的值。進而保存乘法器600的運算結(jié)果的寄存器601的輸出被輸入到∑加法器607中,∑加法器607的運算結(jié)果被保存到寄存器608中?!萍臃ㄆ?07是將寄存器601的結(jié)果和寄存器608的結(jié)果依次∑相加的運算器。在本例中,將4個周期的乘法結(jié)果∑相加,進行舍入,作為Dest來得到運算結(jié)果。
注意圖21的內(nèi)積運算例的運算結(jié)果的第1行。對于矩陣B,需要輸入16個元素的數(shù)據(jù);而矩陣A的輸入是A00、A10、A20、A30,只是寄存器0中保存著的值。而對于第1元素的乘法,都輸入A00。用圖23所示的運算器來實現(xiàn)該運算的處理例。在Src1中設(shè)定矩陣B、即寄存器4,在Src2中設(shè)定矩陣A、即寄存器0。Src1一側(cè)每當被供給了時鐘時,就按寄存器4、寄存器5、寄存器6、寄存器7、再次寄存器4的順序來供給。Src2一側(cè)在第1個周期中輸入寄存器0,第2、3、4個周期使用路徑610來左移。此時選擇器609選擇Src2
數(shù)據(jù)。由此,Src2輸出在第1個周期中為A00,在第2個周期中為A10,在第3個周期中為A20,在第4個周期中為A30。在第5個周期中供給寄存器1,6、7、8周期同樣移位。通過這種數(shù)據(jù)供給,能夠在4個周期中得到1行的運算結(jié)果。由此,每4個周期1次,生成運算結(jié)果Dest 606,按該定時來更新寄存器文件462。通過本方式,寫入寄存器文件462無需字節(jié)使能,能夠縮小寄存器文件的面積,并且無需轉(zhuǎn)置數(shù)據(jù),用合計16個周期來實現(xiàn)內(nèi)積運算。
接著用圖24的內(nèi)積運算例來說明對轉(zhuǎn)置矩陣的內(nèi)積運算的動作。圖24是轉(zhuǎn)置了第1矩陣即矩陣A的情況下的內(nèi)積。這里,也注意運算結(jié)果的第1行。對于矩陣B,需要輸入16個元素的數(shù)據(jù);而矩陣A的輸入是A00、A01、A02、A03,只是寄存器0至寄存器3的數(shù)據(jù)元素
中保存著的值。在該運算中,與先前的沒有轉(zhuǎn)置的內(nèi)積運算相比,通過變更Src2的供給方法,來實現(xiàn)第1矩陣轉(zhuǎn)置的內(nèi)積運算。在先前的沒有轉(zhuǎn)置的矩陣運算中,在周期2、3、4時用路徑610,將Src2移位來供給數(shù)據(jù);而在本例中,在周期1中使用寄存器0,在周期2中使用寄存器1,在周期3中使用寄存器2,在周期4中使用寄存器3。在第1行的內(nèi)積中,使用寄存器0至3的數(shù)據(jù)元素
,在第2行的內(nèi)積中使用數(shù)據(jù)元素[1],在第3行的內(nèi)積中使用數(shù)據(jù)元素[2],在第3行的內(nèi)積中使用數(shù)據(jù)元素[3]。通過本方式,通過只變更先前所示的Src2的供給方法,來實現(xiàn)第1矩陣轉(zhuǎn)置的內(nèi)積運算。此時,乘法器以后的數(shù)據(jù)路徑不同的動作不存在。因此,在一般的SIMD型運算器中,作為內(nèi)積運算前的預(yù)處理,需要轉(zhuǎn)置,但是在本方式中不需要,能夠減少處理周期數(shù)。
其中,在只轉(zhuǎn)置第2矩陣的矩陣運算中,Src1和Src2的輸入進行與不伴隨轉(zhuǎn)置的內(nèi)積同樣的數(shù)據(jù)供給,運算器與通常的SIMD型運算器同樣,用在1個周期中將4個元素相加的結(jié)構(gòu)來實現(xiàn)。在本方式中,在∑加法器607的輸入端不使用寄存器608,將4個寄存器601的輸出相加。接著說明卷積運算的\動作例。卷積運算用于圖像的低通濾波器或高通濾波器等的濾波處理或邊緣增強等。此外,是圖像編解碼器的運動補償處理等中也使用的運算。卷積運算與內(nèi)積運算不同,第2矩陣(稱為卷積系數(shù))固定,用該卷積系數(shù)對第1矩陣的全部數(shù)據(jù)元素進行運算。圖25示出二維的卷積運算例。如圖所示,將輸出數(shù)據(jù)的全部數(shù)據(jù)元素乘以第2矩陣的卷積系數(shù),并∑相加。
圖26示出實現(xiàn)它的運算器結(jié)構(gòu)的一部分。在該結(jié)構(gòu)中,示出了圖23所示的內(nèi)積運算器結(jié)構(gòu)的寄存器601的輸入之前的結(jié)構(gòu)。與內(nèi)積運算器結(jié)構(gòu)的不同是,Src1也同樣是由路徑612組成的移位寄存器結(jié)構(gòu)。下面示出卷積運算的動作。首先,假設(shè)數(shù)組A和數(shù)組B被布置在以下所示的寄存器中。此時,將數(shù)組A的第1列至第4列的數(shù)據(jù)和第5列的數(shù)據(jù)布置到不同的寄存器中。將數(shù)組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的第一數(shù)據(jù)元素。即,是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數(shù)據(jù)元素即A40投入到Src1的[3]中。結(jié)果,4個乘法器600的輸出如下所示。
第2個周期600
輸出A10*B
600[1]輸出A20*B
600[2]輸出A30*B
600[3]輸出A40*B
在第3個周期中,Src2使用路徑612來左移。Src1更新讀出寄存器指針,投入寄存器2。結(jié)果,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來左移。結(jié)果,4個乘法器600的輸出如下所示。
第4個周期600
輸出A11*B[10]600[1]輸出A21*B[10]600[2]輸出A31*B[10]600[3]輸出A41*B[10]通過將該4個周期的數(shù)據(jù)用∑加法器607進行∑加法,來得到第1行的卷積運算結(jié)果。在第5個周期中,再次將寄存器2投入到Src1中,再次將寄存器8投入到Src2中,進行第2行的卷積運算。結(jié)果,在16個周期中,得到4×4矩陣的卷積運算結(jié)果。
其中,在這些說明中,說明了使用移位寄存器來供給Src1和Src2,但是通過使用選擇器來選擇數(shù)據(jù),進行同樣的數(shù)據(jù)供給,能得到同樣的效果。因此,數(shù)據(jù)的供給部件是其特征。
在圖22所示的一般的SIMD型運算器中,垂直方向的卷積運算采用每個數(shù)據(jù)元素的積和運算。但是,在結(jié)束了4個積和運算的時刻,需要進行數(shù)據(jù)的舍入,所以在各積和運算的階段,必須將8位數(shù)據(jù)位擴展為16位數(shù)據(jù)來進行積和運算。進而在4個積和運算已結(jié)束的時刻,再次將16位數(shù)據(jù)舍入為8位數(shù)據(jù)。在積和運算時,由于位擴展,實際上并行使用的運算器數(shù)減半,處理周期數(shù)增加。此外,位擴展自身和舍入自身的運算周期數(shù)增加。通過像本方式這樣指定二維操作數(shù),能夠減少處理周期數(shù)。
另一方面,在圖22所示的一般的SIMD型運算器進行的水平方向的卷積運算中,每當生成數(shù)據(jù)元素時,必須以數(shù)據(jù)元素為單位將數(shù)組A移位并投入到運算器中,處理周期數(shù)增加。再者,在二維的卷積中,由于位擴展、移位、舍入等,處理周期數(shù)增加。
因此,像本方式這樣指定二維的操作數(shù),意味著用1條指令來表現(xiàn)使用多個源的指令,能夠減少包含真正需要的積和運算以外的預(yù)處理和后處理在內(nèi)的處理周期。其結(jié)果是,能夠用低的工作頻率來實現(xiàn)處理,進而能夠減少功耗。
權(quán)利要求
1.一種圖像處理引擎,具備指令存儲器、數(shù)據(jù)存儲器以及CPU,其中,上述CPU進而具有指令譯碼器、通用寄存器以及運算器;上述CPU的指令操作數(shù)具有指定數(shù)據(jù)寬度及表示高度方向的數(shù)據(jù)計數(shù)值的字段、表示保存有運算處理中使用的數(shù)據(jù)的通用寄存器的起點的源寄存器指針、以及表示保存運算結(jié)果的通用寄存器的起點的目的寄存器指針;具有如下的單元,該單元根據(jù)上述數(shù)據(jù)寬度、上述數(shù)據(jù)計數(shù)值、上述源寄存器指針以及上述目的寄存器指針,在每個周期依次生成所存取的上述源寄存器的地址及上述目的寄存器的地址;通過將從上述源寄存器中讀出的數(shù)據(jù)投入到上述運算器中并執(zhí)行運算,將得到的運算結(jié)果依次保存到上述目的寄存器中,由此用一個指令花費多個周期來進行多個運算。
2.如權(quán)利要求1所述的圖像處理引擎,其中,在上述CPU中,向上述數(shù)據(jù)存儲器發(fā)出讀指令及寫指令的指令的操作數(shù)具有指定數(shù)據(jù)寬度、數(shù)據(jù)計數(shù)值以及數(shù)據(jù)間隔的字段;通過在存取上述數(shù)據(jù)存儲器時,根據(jù)上述數(shù)據(jù)寬度、上述數(shù)據(jù)計數(shù)值以及上述數(shù)據(jù)間隔,生成可表現(xiàn)二維矩形的數(shù)據(jù)存儲器地址,用上述數(shù)據(jù)存儲器地址,用1個指令花費多個周期,經(jīng)過多次存取上述數(shù)據(jù)存儲器,能夠用一個指令存取二維的數(shù)據(jù)。
3.如權(quán)利要求1所述的圖像處理引擎,其中,在上述CPU中,具有上述CPU發(fā)出的卷積運算指令和內(nèi)積運算指令;在輸入用上述源寄存器指針指定而讀出的源數(shù)據(jù)的數(shù)據(jù)輸入級中,具有在供給的每個時鐘移位輸出上述源數(shù)據(jù)的單元、和生成專用于卷積運算及內(nèi)積運算的源寄存器地址和目的寄存器地址的單元;上述運算器將乘法器、∑加法器以及數(shù)據(jù)舍入運算器串聯(lián)連接,能夠用一個指令來執(zhí)行一維或二維的上述卷積運算及上述內(nèi)積運算。
4.如權(quán)利要求1所述的圖像處理引擎,其中,在上述CPU中,具有多組指令寄存器,該指令寄存器保存從上述指令存儲器中讀出的指令;具有在上述指令寄存器都不是有效的情況下自動讀出下一個指令的單元;在上述讀出指令時,讀出的指令為分支指令的情況下,不將上述分支指令保存到上述指令寄存器中,而立即讀出分支目的地的指令,將上述分支目的地的指令保存到上述指令寄存器中,在上述分支指令的一個操作數(shù)中具有指定分支條件寄存器的字段,該分支條件寄存器指定是否分支;具有在上述分支指令時根據(jù)選擇出的分支條件寄存器的值來判定是否分支的單元,在不分支的情況下,讀出下一個指令,不將上述分支指令保存到指令寄存器中;通過不在每個周期都從上述指令存儲器中讀出指令,來隱蔽上述分支指令造成的重新讀出指令所需的周期。
5.如權(quán)利要求1所述的圖像處理引擎,其中,在上述圖像處理引擎內(nèi),具有多個如權(quán)利要求1至3中任一項所述的CPU,具有將上述多個CPU各個的運算結(jié)果保存到鄰接的CPU的寄存器中的單元,上述多個CPU連接在相互鄰接的CPU上,最末端的CPU連接在第一級CPU上而形成環(huán)狀的連接。
6.如權(quán)利要求5所述的圖像處理引擎,其中,在上述CPU發(fā)出的指令的操作數(shù)中,具有第1標志,用于確認是否能夠?qū)?shù)據(jù)保存到上述CPU的下一級一側(cè)的CPU具有的寄存器中;在上述下一級一側(cè)的CPU發(fā)出的指令的操作數(shù)中,具有第2標志,表示是否能夠受托寫入來自前一級的CPU的數(shù)據(jù);在鄰接的2個CPU間,具有用上述第1及第2標志來進行同步化的電路,在不能寫入的情況下,前一級CPU具有進行停止的單元;此外,在上述CPU發(fā)出的指令的操作數(shù)中,具有第3標志,用于判斷是否結(jié)束從前一級的CPU向寄存器中寫入數(shù)據(jù)、能夠使用數(shù)據(jù);在前一級的CPU發(fā)出的指令的操作數(shù)中,具有第4標志,用于向下一級的CPU傳達已結(jié)束數(shù)據(jù)的寫入;具有在2個CPU間根據(jù)上述第3及第4標志的信息來進行同步化的電路;具有用于在數(shù)據(jù)的準備未結(jié)束的情況下輸出使后級的CPU待機的停止信號的單元;在指令的操作數(shù)中具有用于在鄰接的2個CPU間進行同步化的標志;具有與這些標志一起來控制同步化的電路。
7.如權(quán)利要求5所述的圖像處理引擎,其中,上述多個CPU共享指令存儲器,在每個周期中分時回送指令。
8.一種圖像處理系統(tǒng),具有經(jīng)總線連接了多個如權(quán)利要求1至權(quán)利要求7中任一項所述的圖像處理引擎的圖像處理部,其中,在各個上述圖像處理引擎中,具有直接存儲器存取控制器,用于從上述圖像處理引擎中的一個所具有的數(shù)據(jù)存儲器中讀出數(shù)據(jù),將上述數(shù)據(jù)以直接存儲器存取的方式傳送到另一個圖像處理引擎內(nèi)的數(shù)據(jù)存儲器中;上述CPU具有起動及控制直接存儲器存取控制器的單元,能夠在多個圖像處理引擎間通過直接存儲器存取來傳送數(shù)據(jù)。
9.如權(quán)利要求8所述的圖像處理系統(tǒng),其中,在上述圖像處理部中,在總線上連接的一個塊中,除了具有圖像處理引擎以外,還具有用于在系統(tǒng)總線等第2內(nèi)部總線和上述總線之間傳送數(shù)據(jù)的內(nèi)部總線主控制部和內(nèi)部總線從控制部、及內(nèi)部總線橋組成的數(shù)據(jù)傳送電路;在上述數(shù)據(jù)傳送電路中,能夠經(jīng)上述第2總線來存取外部存儲器,能夠在各個上述圖像處理引擎和上述外部存儲器之間傳送數(shù)據(jù)。
10.如權(quán)利要求9所述的圖像處理系統(tǒng),其中,具有第1總線,由多個移位寄存器構(gòu)成,在各上述移位寄存器間,能夠同時傳送多個數(shù)據(jù),使上述移位寄存器的連接方向相反;上述第1總線的一方在圖像處理引擎間及從圖像處理引擎向數(shù)據(jù)傳送電路的方向傳送數(shù)據(jù);上述第1總線的另一方將從外部存儲器讀出的數(shù)據(jù)經(jīng)內(nèi)部總線和數(shù)據(jù)傳送電路傳送到各圖像處理引擎,通過上述多個第1總線,圖像處理引擎間的數(shù)據(jù)傳送和來自外部存儲器的數(shù)據(jù)傳送不會發(fā)生競爭,或者能夠減少競爭頻度。
全文摘要
本發(fā)明提供一種用處理器來進行圖像處理的情況下的降低功率技術(shù)。為此,例如在指令的操作數(shù)中設(shè)有指定二維的源寄存器和目的寄存器的部分,具有在多個周期中使用多個源寄存器來執(zhí)行運算、得到多個目的的單元。此外,在利用多個源寄存器花費多個周期來得到目的的指令中,將數(shù)據(jù)舍入運算器連接在流水線的最后一級上。通過這些結(jié)構(gòu),例如通過減少存取指令存儲器的次數(shù),來減少讀出指令存儲器時消耗的功率。
文檔編號G06F15/80GK101093577SQ20071009175
公開日2007年12月26日 申請日期2007年4月9日 優(yōu)先權(quán)日2006年6月20日
發(fā)明者細木浩二, 江浜真和, 中田啟明, 巖田憲一, 望月誠二, 湯淺隆史, 小林幸史, 柴山哲也, 植田浩司, 升正樹 申請人:株式會社瑞薩科技