專利名稱:并行圖像處理系統(tǒng)控制方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及并行圖像處理系統(tǒng),更具體地,涉及包括一維SIMD (單 指令多數(shù)據(jù))處理器陣列結(jié)構(gòu)的并行圖像處理系統(tǒng)的控制方法和設(shè)備。
背景技術(shù):
在曰本專利公開號2839026 (專利文件1)和日本待審專利公開號 2002-7359 (專利文件2)中公開了傳統(tǒng)并行圖像處理系統(tǒng)的一個(gè)示例。通 過PE陣列和用于控制所述PE陣列的控制器配置傳統(tǒng)并行圖像處理系統(tǒng), 在所述PE陣列中,大量計(jì)算元件處理器(處理器元件,以下稱為"PE") 一維并行連接。每個(gè)PE具有如下配置計(jì)算部分(ALU),用于執(zhí)行計(jì)算 過程;本地存儲器,用于存儲要處理的圖像的本地像素值;以及寄存器, 用于保存臨時(shí)計(jì)算結(jié)果。
當(dāng)針對存儲在本地存儲器的要處理的圖像的特定行執(zhí)行某種計(jì)算時(shí), 具有這種配置的傳統(tǒng)并行圖像處理系統(tǒng)從與本地存儲器的特定行相對應(yīng) 的地址中讀取像素值,并將該像素值存儲在寄存器中。然后,讀出存儲在 寄存器中的像素值,在ALU中執(zhí)行計(jì)算,以及在寄存器中存儲計(jì)算結(jié)果。 將在寄存器中存儲的計(jì)算結(jié)果存儲在本地存儲器的特定行中。當(dāng)在計(jì)算中 需要位于要處理的像素外圍的像素值時(shí),使用PE間的數(shù)據(jù)轉(zhuǎn)移單元收集 必要的像素值,并執(zhí)行計(jì)算。
日本待審專利公開號2004-362086 (專利文件3)公開了一種SIMD并 行處理系統(tǒng),所述系統(tǒng)具有根據(jù)PE的并行性自動(dòng)執(zhí)行PE命令的重復(fù)執(zhí)行、 以在系統(tǒng)在要處理的圖像中不具有最佳數(shù)量的PE的情況下提高程序效率 的功能。在并行處理系統(tǒng)中,根據(jù)程序指示的并行信息以及SIMD計(jì)算器 的并行信息計(jì)算重復(fù)執(zhí)行的數(shù)量、以及根據(jù)系統(tǒng)PE的數(shù)量實(shí)現(xiàn)將PE命令 自動(dòng)重復(fù)執(zhí)行必要的次數(shù)。
專利文件l:日本專利公開號2839026 (例如
圖1,段落0008)專利文件2:日本待審專利公開號2002-7359 (例如圖1,段落0014 至0016)
專利文件3:日本待審專利公開號2004-362086 (例如段落0011至 0021,圖1)
發(fā)明內(nèi)容
本發(fā)明要解決的問題
然而,在傳統(tǒng)的并行圖像處理系統(tǒng)中,不考慮在PE的數(shù)量小于沿要 處理的圖像的寬度方向的像素?cái)?shù)量、以及將多個(gè)像素分配至每個(gè)PE以執(zhí) 行在存儲器上設(shè)置像素以及通過PE自動(dòng)獲取數(shù)據(jù)的過程的情況下的像素 在存儲器上的設(shè)置以及通過PE獲取數(shù)據(jù)的自動(dòng)化。
在專利文件3描述的系統(tǒng)中,重復(fù)地執(zhí)行相同的命令或相同的子程序, 但是在這種簡單的重復(fù)執(zhí)行中不能夠使包括與相鄰PE進(jìn)行通信的過程自 動(dòng)化。為了實(shí)現(xiàn)需要相鄰像素值的過程,有必要添加與在相同的PE還是 在相鄰的PE中分配必要的相鄰像素值相對應(yīng)的特定過程,以及程序代碼 數(shù)量增加。
本發(fā)明的目的是提供新穎的并行圖像處理系統(tǒng)及其控制方法,實(shí)現(xiàn)需 要相鄰像素值的過程的自動(dòng)化。
本發(fā)明的另一個(gè)目的是提供圖像處理系統(tǒng)的控制方法和設(shè)備,以能夠 以與具有沿要處理的圖像寬度方向的像素?cái)?shù)量相同數(shù)量的PE的一維 SIMD并行圖像處理系統(tǒng)相同程度的程序代碼量(甚至在需要相鄰像素值 的過程中),針對整個(gè)圖像執(zhí)行圖像處理。
用于解決問題的方式
本發(fā)明涉及并行圖像處理系統(tǒng)的控制方法,所述系統(tǒng)具有比要處理的 數(shù)據(jù)條數(shù)少的數(shù)量的元件處理器,每個(gè)元件處理器處理多條要處理的數(shù) 據(jù);所述方法包括根據(jù)分配至元件處理器的要處理的數(shù)據(jù)條數(shù),自動(dòng)重復(fù) 執(zhí)行命令;當(dāng)重復(fù)執(zhí)行預(yù)定命令時(shí),根據(jù)在各個(gè)重復(fù)執(zhí)行期間要處理的數(shù) 據(jù)來替換操作代碼;以及通過所替換的操作代碼控制元件處理器。
根據(jù)本發(fā)明的一個(gè)示例性實(shí)施例,本發(fā)明涉及并行圖像處理系統(tǒng)的控制方法,所述系統(tǒng)包括具有比沿要處理的圖像的寬度方向的像素?cái)?shù)量少的 數(shù)量的元件處理器,每個(gè)元件處理器處理多個(gè)像素;所述方法包括根據(jù)分
配至元件處理器的像素?cái)?shù)量,自動(dòng)重復(fù)執(zhí)行命令;其中當(dāng)重復(fù)地執(zhí)行相鄰
像素值獲取命令時(shí),根據(jù)要處理的像素位置,利用用于從相鄰元件處理器 轉(zhuǎn)移像素值的命令和用于獲取自有元件處理器上的像素值的命令的組合
來替換操作代碼;以及通過所替換的操作代碼控制元件處理器。
此外,根據(jù)分配至每個(gè)元件處理器的像素?cái)?shù)量劃分寄存器組用于使 用,以及重寫操作數(shù)以在重復(fù)執(zhí)行中切換要使用的寄存器組;以及在存儲 器訪問命令的重復(fù)執(zhí)行中,將與分配至元件處理器的像素?cái)?shù)量相對應(yīng)的偏 移值加至地址上。
根據(jù)本發(fā)明的一個(gè)示例的并行圖像處理系統(tǒng)包括在用于根據(jù)程序控 制PE陣列控制器中,用于根據(jù)分配至每個(gè)PE的像素的數(shù)量自動(dòng)執(zhí)行程序 中每個(gè)命令的重復(fù)執(zhí)行的設(shè)備;以及還包括用于轉(zhuǎn)換要重復(fù)執(zhí)行的命令中 的操作數(shù)的設(shè)備;用于轉(zhuǎn)換要重復(fù)執(zhí)行的命令中的存儲器訪問中的地址的 設(shè)備;以及用于在重復(fù)執(zhí)行中根據(jù)分配至每個(gè)PE的多個(gè)像素中的像素位 置轉(zhuǎn)換操作代碼的設(shè)備。
利用這樣的配置,可以通過針對分配至每個(gè)PE的要處理的多個(gè)像素 自動(dòng)執(zhí)行程序中所描述的一個(gè)命令、以及執(zhí)行操作代碼轉(zhuǎn)換來實(shí)現(xiàn)需要相 鄰像素值的過程的自動(dòng)化,由此,可以以與具有沿要處理的圖像寬度方向 的像素?cái)?shù)量相同數(shù)量的PE的一維SIMD并行圖像處理系統(tǒng)相同程度的程 序代碼量,針對整個(gè)圖像執(zhí)行圖像處理。
本發(fā)明的有益效果
如上所描述的,根據(jù)本發(fā)明,根據(jù)分配至元件處理器的要處理的數(shù)據(jù) 條數(shù),自動(dòng)地重復(fù)執(zhí)行命令,當(dāng)重復(fù)執(zhí)行預(yù)定命令時(shí),根據(jù)在各個(gè)重復(fù)執(zhí) 行期間要處理的數(shù)據(jù),替換操作代碼;以及通過所替換的操作代碼控制元 件處理器。因而,可以在需要利用依據(jù)要執(zhí)行的像素位置的不同操作而被 執(zhí)行的周圍像素值獲取命令等中,執(zhí)行考慮了像素位置的命令轉(zhuǎn)換,以及 可以利用少量的程序代碼實(shí)現(xiàn)需要相鄰像素值的過程的自動(dòng)化。
在具有比沿要處理的圖像的寬度方向的像素?cái)?shù)量少的PE數(shù)量的一維SIMD圖像處理系統(tǒng)中,可以根據(jù)設(shè)置在控制器中的重復(fù)執(zhí)行設(shè)備、轉(zhuǎn)換 操作數(shù)的設(shè)備、以及轉(zhuǎn)換存儲器地址的設(shè)備,僅利用針對一個(gè)像素的命令 的程序描述來自動(dòng)進(jìn)行重復(fù)執(zhí)行,此外,通過轉(zhuǎn)換操作代碼,可以實(shí)現(xiàn)需 要相鄰像素值的過程的自動(dòng)化,以及可以執(zhí)行針對整個(gè)圖像的圖像處理, 而不增加程序代碼量。
實(shí)施本發(fā)明的最佳方式
將在以下結(jié)合附圖詳細(xì)描述本發(fā)明的示例性實(shí)施例。 1.系統(tǒng)配置
圖1是示出了根據(jù)本發(fā)明一個(gè)示例性實(shí)施例的并行圖像處理系統(tǒng)的功 能性配置的框圖。根據(jù)示例性實(shí)施例的并行圖像處理系統(tǒng)包括用于在每個(gè)
圖像處理中執(zhí)行命令操作的PE陣列1,用于根據(jù)程序來控制PE陣列1的 操作的控制器2,以及用于存儲描述要執(zhí)行的圖像處理的程序的程序存儲 器3。
PE陣列1具有以下配置其中對多個(gè)PE10排陣列,并一維連接,以 及每個(gè)PE被配置為執(zhí)行相同程序的SIMD類型。注意為了避免復(fù)雜化在 圖1中僅示出了 3個(gè)相鄰PE。
每個(gè)PE包括本地存儲器11、計(jì)算部分12、以及寄存器組13??善?望地,包含在PE陣列1中的PE IO的數(shù)量是沿要處理的圖像寬度方向的 像素?cái)?shù)的整約數(shù)(integral submultiple)。這樣可以分配給每個(gè)PE 10相同 數(shù)量的像素。然而,即使不能滿足整約數(shù)的條件,本發(fā)明也是可應(yīng)用的, 并且可以獲得類似效果。
控制器2是用于控制PE陣列1的操作序列的單元,以及包括命令讀 取/解碼部分21和重復(fù)執(zhí)行部分22。重復(fù)執(zhí)行部分22是用于根據(jù)針對控 制器2執(zhí)行的命令分配給每個(gè)PE的要處理的像素?cái)?shù)量而進(jìn)行重復(fù)執(zhí)行的 單元,以及包括操作數(shù)轉(zhuǎn)換部分221、存儲器地址轉(zhuǎn)換部分222、操作代 碼轉(zhuǎn)換部分223、重復(fù)執(zhí)行計(jì)數(shù)器224、重復(fù)執(zhí)行指定寄存器225、以及待 處理圖像高度寄存器226。
重復(fù)執(zhí)行計(jì)數(shù)器224是使命令重復(fù)執(zhí)行了重復(fù)執(zhí)行部分22中的重復(fù) 執(zhí)行指定寄存器225的值所指定的次數(shù)時(shí)使用的計(jì)數(shù)器CR。重復(fù)執(zhí)行指定寄存器225是當(dāng)重復(fù)執(zhí)行命令時(shí)用于指定和保持重復(fù)數(shù)量NR的寄存 器,并且根據(jù)PE的數(shù)量與沿要處理的圖像寬度方向的像素?cái)?shù)量的比率, 指定了重復(fù)的必要數(shù)量,即,分配至每個(gè)PE的要處理的像素的數(shù)量。待 處理圖像高度寄存器226是用于存儲和保持沿要處理的圖像高度方向的像 素?cái)?shù)量NH的寄存器,其中使用這種值計(jì)算在存儲器訪問命令的重復(fù)執(zhí)行 中存儲要處理的圖像的地址的偏移值。 1.1) PE陣列
PE陣列1將要處理的圖像的像素分配至每個(gè)PE 10,并通過在每個(gè)中 PE中并行操作相同的命令來執(zhí)行圖像處理操作。PE 10是用于存儲和計(jì)算 要處理的圖像中所分配的像素值的元件處理器,并具有常規(guī)處理器的命令 執(zhí)行功能,并響應(yīng)來自控制器2的控制信號執(zhí)行命令操作。每個(gè)PE10與 相鄰的PE IO連接以交換數(shù)據(jù)。
本地存儲器11是在每個(gè)PE 10中單獨(dú)設(shè)置并與計(jì)算部分12緊密連接 的存儲器,該本地存儲器存儲分配至每個(gè)PE的要處理的圖像中的像素值、 以及在處理的過程中存儲計(jì)算結(jié)果等。分配至要處理的圖像的每個(gè)PE的 相應(yīng)的像素值分別存儲在具有沿要處理的圖像的高度方向的像素?cái)?shù)量的 偏移的地址中。在這種情況下,地址偏移值,即,沿要處理的圖像的高度 方向的像素?cái)?shù)量假定為Om。例如,如果將左端的像素值存儲在地址A中, 則分配至PE的像素值相應(yīng)地存儲在地址A、 A+Om、 A+2XOm、以及A+3 XOm中。
計(jì)算部分12是用于執(zhí)行寄存器組13的讀/寫命令、以及本地存儲器 11上的讀/寫命令、算術(shù)計(jì)算命令、邏輯計(jì)算命令等的單元,并且在圖像 處理中針對所分配的像素值執(zhí)行計(jì)算等。
寄存器組13是在每個(gè)PE 10的計(jì)算部分12中單獨(dú)設(shè)置的計(jì)算寄存器, 以及存儲在計(jì)算操作中成為輸入的值和要輸出的計(jì)算結(jié)果。給予每個(gè)寄存 器從R(O)到R(寄存器數(shù)-l)的寄存器號。為了自動(dòng)處理分配給每個(gè)PE 10 的多個(gè)像素,將所包含的寄存器數(shù)除以所分配的像素?cái)?shù)量用于使用。例如, 如果將兩個(gè)像素分配至每個(gè)PEIO,則寄存器組13的寄存器數(shù)除以2(即, 前一半和后一半)用于使用,然而,如果將4個(gè)像素分配至每個(gè)PE 10, 則寄存器組13的寄存器數(shù)除以4用于使用。1.2) 控制器
控制器2通過命令讀取/解碼部分21繼續(xù)讀取存儲在程序存儲器3中 的程序,解譯該程序并控制PE陣列1以進(jìn)行圖像處理。
命令讀取/解碼部分21是組成從程序存儲器3中讀取程序、解譯操作 代碼和操作數(shù)、以及執(zhí)行PE陣列1的控制的控制器2的核心部分的單元。 將從程序存儲器3讀取的操作代碼和操作數(shù)提供給重復(fù)執(zhí)行部分22以確 定重復(fù)執(zhí)行。如果重復(fù)執(zhí)行部分22確定重復(fù)執(zhí)行,則停止后續(xù)程序的讀 取,直到完成指定數(shù)量的重復(fù)。使用根據(jù)重復(fù)執(zhí)行部分22重復(fù)執(zhí)行的每 個(gè)步驟重寫的操作代碼和操作數(shù),控制PE陣列1。
重復(fù)執(zhí)行部分22確定命令讀取/解碼部分21輸入的操作代碼是否是要 重復(fù)執(zhí)行的命令,以及如果操作代碼是目標(biāo)代碼,則使用重復(fù)執(zhí)行計(jì)數(shù)器 224,使重復(fù)操作執(zhí)行由重復(fù)執(zhí)行指定寄存器225所指定的次數(shù)NR。此外, 指示命令讀取/解碼部分21停止來自程序存儲器的后續(xù)命令的讀取,直到 終止所述重復(fù)執(zhí)行。當(dāng)執(zhí)行重復(fù)操作時(shí),根據(jù)重復(fù)執(zhí)行指定寄存器225指 定的次數(shù)NR(即分配至每個(gè)PE的要處理的像素?cái)?shù)量)以及根據(jù)重復(fù)執(zhí)行 計(jì)數(shù)器224的值CR計(jì)算的要處理的像素組中的像素位置,通過操作數(shù)轉(zhuǎn) 換部分221、存儲器地址轉(zhuǎn)換部分222、以及操作代碼轉(zhuǎn)換部分223執(zhí)行 操作數(shù)、存儲器地址、以及操作代碼的轉(zhuǎn)換。
1.3) 操作數(shù)轉(zhuǎn)換部分
操作數(shù)轉(zhuǎn)換部分221是用于在重復(fù)執(zhí)行期間根據(jù)要處理的像素位置, 使用在寄存器組13中的部分轉(zhuǎn)換寄存器號以切換寄存器的單元。通過從 命令讀取/解碼部分21輸入的操作代碼確定命令是否需要操作數(shù)轉(zhuǎn)換。如 果操作數(shù)轉(zhuǎn)換是必要的,則將PE陣列1的寄存器組13中的寄存器數(shù)除以 存儲在重復(fù)執(zhí)行指定寄存器225中的重復(fù)執(zhí)行數(shù)量NR,并將每個(gè)除過的 寄存器數(shù)乘以存儲'在重復(fù)執(zhí)行計(jì)數(shù)器224中的從0到(NR-1)的值,以獲 得在切換寄存器位置中使用的偏移值。
如果寄存器數(shù)不可被重復(fù)執(zhí)行數(shù)量NR除盡,則省略小數(shù)點(diǎn)之后的數(shù) 字從而產(chǎn)生整數(shù)值用于使用,然后又乘以重復(fù)執(zhí)行寄存器224的值CR, 以計(jì)算偏移值。將所計(jì)算的偏移值加至從命令讀取/解碼部分21輸入的操 作數(shù)(寄存器號)上以執(zhí)行操作數(shù)轉(zhuǎn)換,并將作為轉(zhuǎn)換結(jié)果的操作數(shù)提供給命令讀取/解碼部分。
用于計(jì)算偏移值的設(shè)備可以包括使用除法器或乘法器的配置,或使用 表格的配置。之后,將描述配置用于使用表格計(jì)算偏移值的操作數(shù)轉(zhuǎn)換部 分221。
圖2是功能性示出了在根據(jù)示例性實(shí)施例的并行圖像處理系統(tǒng)中操作 數(shù)轉(zhuǎn)換部分配置的框圖。操作數(shù)轉(zhuǎn)換部分221通過使用設(shè)置了重復(fù)執(zhí)行指 定寄存器值NR和重復(fù)執(zhí)行計(jì)數(shù)器值CR作為密鑰的偏移計(jì)算表來確定在 寄存器號的轉(zhuǎn)換中使用的偏移值。這里,為了響應(yīng)重復(fù)執(zhí)行指定寄存器225 指定的重復(fù)執(zhí)行次數(shù),準(zhǔn)備了可以響應(yīng)一次(不進(jìn)行重復(fù)執(zhí)行)到四次的 偏移值計(jì)算表221.1。
圖2中的偏移計(jì)算表221.1描述寄存器數(shù)為N。確定操作代碼是否是 要轉(zhuǎn)換操作數(shù)的命令(221.6),以及根據(jù)這個(gè)結(jié)果,選擇(221.7)是輸出 當(dāng)前輸入的寄存器號、還是輸出加上了 (221.5)由偏移計(jì)算表221.1確定 的偏移值的寄存器號。即,如果操作代碼是要轉(zhuǎn)換偏移值操作數(shù)的命令, 則輸出將所輸入寄存器號和偏移計(jì)算表221.1確定的偏移值相加的結(jié)果, 以及如果操作代碼不是要轉(zhuǎn)換操作數(shù)的命令,則輸出當(dāng)前輸入的寄存器
號
操作數(shù)轉(zhuǎn)換部分221具有當(dāng)參照偏移計(jì)算表221.1時(shí)用于調(diào)整重復(fù)執(zhí) 行計(jì)數(shù)器值CR的計(jì)數(shù)器值調(diào)整部分。當(dāng)進(jìn)行相鄰像素值獲取命令的重復(fù) 執(zhí)行時(shí),計(jì)數(shù)器值調(diào)整部分是必要的單元。當(dāng)進(jìn)行相鄰像素值獲取命令的 重復(fù)執(zhí)行時(shí),根據(jù)重復(fù)執(zhí)行計(jì)數(shù)器224的值CR,存在如下兩種情況一 種情況是相鄰的PE保持了必要的相鄰像素值,并將像素值從相鄰的PE 轉(zhuǎn)移(transfer)到自有(own)的PE, 一種情況是自有的PE保持了必要 的相鄰像素值,并參照其寄存器號被偏移了的寄存器。在這種情況下,根 據(jù)該命令是參照左側(cè)還是右側(cè)的像素值的命令、以及轉(zhuǎn)移目的地是相鄰PE 還是自有PE,輸入操作數(shù)中指定的寄存器號需要被偏移。
如圖2所示,當(dāng)參照偏移計(jì)算表221.1時(shí),替換重復(fù)執(zhí)行計(jì)數(shù)器值CR。 根據(jù)操作代碼確定計(jì)數(shù)器值CR的調(diào)整是否必要(221.2),如果有必要調(diào) 整計(jì)數(shù)器值CR (221.3),則選擇調(diào)整后的結(jié)果(221.4),并參照偏移計(jì)算 表221.1。如果計(jì)數(shù)器值CR的調(diào)整沒有必要,則選擇所輸入的計(jì)數(shù)器值CR (221.4),并參照偏移計(jì)算表221.1。
1.4) 存儲器地址轉(zhuǎn)換部分
存儲器地址轉(zhuǎn)換部分222是用于當(dāng)重復(fù)執(zhí)行存儲器訪問命令時(shí)轉(zhuǎn)換要 訪問的地址的單元。如果從命令讀取/解碼部分21輸入的操作代碼是本地 存儲器11的讀/寫命令,則執(zhí)行將通過將待處理圖像高度寄存器226的值 NH與重復(fù)執(zhí)行計(jì)數(shù)器224的值CR相乘獲得的值加至輸入地址上的地址 轉(zhuǎn)換,并將所轉(zhuǎn)換的地址提供至命令讀取/解碼部分21。
1.5) 操作代碼轉(zhuǎn)換部分
操作代碼轉(zhuǎn)換部分223是當(dāng)執(zhí)行左/右相鄰的像素值的獲取命令(其中 需要根據(jù)在重復(fù)執(zhí)行中待執(zhí)行的像素位置來執(zhí)行不同的操作)時(shí),用于轉(zhuǎn) 換要在PE陣列中執(zhí)行的操作代碼的單元。如果從命令讀取/解碼部分21 輸入的操作代碼是左/右相鄰的像素值的獲取命令,則通過重復(fù)執(zhí)行計(jì)數(shù)器 224和重復(fù)執(zhí)行指定寄存器225的值CR和NR計(jì)算分配至像素的每個(gè)PE 的多個(gè)像素中的像素位置(即當(dāng)前執(zhí)行目標(biāo)),確定要獲得的相鄰像素值 是保持在其自有PE的寄存器中還是保持在相鄰PE的寄存器中,以及將被 轉(zhuǎn)換以從該像素的PE寄存器讀取的操作代碼或從右邊相鄰PE轉(zhuǎn)移的寄存 器值轉(zhuǎn)發(fā)到命令讀取/解碼部分21 。
2.操作
圖3是示出了根據(jù)示例性實(shí)施例的并行圖像處理系統(tǒng)的整體操作的流 程圖。命令讀取/解碼部分21從存儲在程序存儲器3中的程序中讀取地址 的程序代碼以便執(zhí)行,并將其提供給重復(fù)執(zhí)行部分22 (步驟A1)。重復(fù)執(zhí) 行部分22確定所提供的程序代碼的操作代碼是否是要重復(fù)執(zhí)行的命令(步 驟A2)。如果確定不是要重復(fù)執(zhí)行的命令(步驟A2中的否),則將程序代 碼不予改變地提供給命令讀取/解碼部分21,控制PE陣列1,并執(zhí)行命令 過程(步驟A3、 A4)。
如果確定操作代碼是要重復(fù)執(zhí)行的命令(步驟A2中的是),則將重復(fù) 執(zhí)行計(jì)數(shù)器224的值CR初始化為零(步驟A5),以及將程序代碼提供至 操作數(shù)轉(zhuǎn)換部分221、存儲器地址轉(zhuǎn)換部分222、以及操作代碼轉(zhuǎn)換部分 223 (步驟A6、 A7、 A8)。
命令讀取/解碼部分21接收操作數(shù)轉(zhuǎn)換部分221、存儲器地址轉(zhuǎn)換部分222以及操作代碼轉(zhuǎn)換部分223轉(zhuǎn)換的程序代碼(步驟A9),對其進(jìn)行 解譯以控制PE陣列1,并執(zhí)行符合每個(gè)命令的過程(步驟AIO)。
重復(fù)執(zhí)行計(jì)數(shù)器224的值CR以1遞增(步驟All ),并與重復(fù)執(zhí)行指 定寄存器225的值NR比較(步驟A12)。如果重復(fù)執(zhí)行計(jì)數(shù)器224的值 CR小于重復(fù)執(zhí)行指定寄存器225的值NR (步驟A12的否),則過程返回 步驟A6、 A7和A8,并進(jìn)行重復(fù)執(zhí)行。在重復(fù)執(zhí)行計(jì)數(shù)器224的值CR等 于重復(fù)執(zhí)行指定寄存器225的值NR時(shí)(步驟A12中的是),則過程進(jìn)行 至程序代碼的下一個(gè)過程,確定針對所輸入的程序代碼的一個(gè)步驟結(jié)束必 要的重復(fù)執(zhí)行數(shù)量。
將在以下詳細(xì)操作數(shù)轉(zhuǎn)換部分221、存儲器地址轉(zhuǎn)換部分222和操作 代碼轉(zhuǎn)換部分223執(zhí)行的步驟A6、 A7、和A8。
2.1)操作數(shù)轉(zhuǎn)換
圖4是示出了根據(jù)示例性實(shí)施例的并行圖像處理系統(tǒng)的操作數(shù)轉(zhuǎn)換操 作的流程圖。操作數(shù)轉(zhuǎn)換部分221確定要成為包含在從命令讀取/解碼部分 21輸入的程序代碼中的輸入源以及輸出目的地的每個(gè)操作數(shù)是否要通過 操作代碼和操作數(shù)位置轉(zhuǎn)換(步驟B1)。如果不轉(zhuǎn)換操作數(shù)(步驟B1中 的否),則不執(zhí)行轉(zhuǎn)換,以及照原樣輸出所輸入的寄存器號。
如果要轉(zhuǎn)換操作數(shù)(步驟B1中的是),則確定操作代碼是否是相鄰像 素值的獲取命令(步驟B2)。如上所述,當(dāng)重復(fù)執(zhí)行相鄰像素值獲取命令 時(shí),根據(jù)重復(fù)執(zhí)行計(jì)數(shù)器224的值CR,存在如下兩種情況 一種情況是 通過相鄰PE保持要獲得的相鄰像素值,并將像素值從相鄰PE轉(zhuǎn)移到自有 PE, 一種情況是通過自有PE保持要獲取的要獲取的相鄰像素值,并參照 其寄存器號被偏移了的寄存器。在這種情況下,由于需要根據(jù)命令是參照 左側(cè)還是右側(cè)的像素值的命令、以及轉(zhuǎn)移源是相鄰PE還是自有PE,對所 輸入的操作數(shù)中指定的寄存器號進(jìn)行偏移,所以當(dāng)參照偏移計(jì)算表時(shí)需要 執(zhí)行替代重復(fù)執(zhí)行計(jì)數(shù)器值CR的過程。如果操作代碼是相鄰像素值的獲 取命令(步驟B2中的是),則確定操作代碼是用于獲取左側(cè)相鄰像素值的 命令、或用于獲取右側(cè)相鄰像素值的命令(步驟B3)。
如果操作代碼是用于獲取右側(cè)相鄰像素值的命令,則參照自有PE的 寄存器,以及如果(重復(fù)執(zhí)行計(jì)數(shù)器值CR)小于(重復(fù)執(zhí)行指定寄存器值NR-1),則不執(zhí)行計(jì)數(shù)器值調(diào)整。如果(重復(fù)執(zhí)行計(jì)數(shù)器值CR)等于
(重復(fù)執(zhí)行指定寄存器值NR-1),則參照將像素保持在右側(cè)相鄰PE的左 端的寄存器,在這種情況下,將所輸入的重復(fù)執(zhí)行計(jì)數(shù)器值CR調(diào)整(轉(zhuǎn) 換)為0 (步驟B4)。
如果操作代碼是用于獲取左側(cè)相鄰像素值的命令,則參照自有PE的 寄存器,以及如果(重復(fù)執(zhí)行計(jì)數(shù)器值CR)大于O,則不執(zhí)行計(jì)數(shù)器值調(diào) 整。如果(重復(fù)執(zhí)行計(jì)數(shù)器值CR)等于O,則參照左側(cè)相鄰PE的寄存器, 但是參照成為左側(cè)相鄰PE保持的像素右端的寄存器值,因而將所輸入的 重復(fù)執(zhí)行計(jì)數(shù)器值CR調(diào)整(轉(zhuǎn)換)為(重復(fù)執(zhí)行指定寄存器值NR-1)(步 驟B5)。
其后,利用調(diào)整為必要密鑰的重復(fù)執(zhí)行指定寄存器225的值NR和重 復(fù)執(zhí)行計(jì)數(shù)器224的值CR參照偏移計(jì)算表221.1 ,以及確定操作數(shù)的偏移 值(步驟B6)。將偏移值加至所輸入的寄存器號的結(jié)果輸出作為操作數(shù)轉(zhuǎn) 換結(jié)果(步驟B7)。
2.2) 存儲器地址轉(zhuǎn)換
圖5是示出了根據(jù)示例性實(shí)施例的并行圖像處理系統(tǒng)的存儲器地址轉(zhuǎn) 換操作的流程圖。存儲器地址轉(zhuǎn)換部分222確定所輸入的操作代碼是否是 成為存儲器地址轉(zhuǎn)換目標(biāo)的存儲器讀取命令/存儲器寫入命令等(步驟 Cl)。
如果所輸入的操作代碼是要轉(zhuǎn)換的命令(步驟C1中的是),則將通過 重復(fù)執(zhí)行計(jì)數(shù)器224的值CR與待處理圖像高度寄存器226的值NH相乘 獲得的值計(jì)算為存儲器地址的偏移值(步驟C2)。將其中所計(jì)算的偏移值 加至所輸入的存儲器地址上的值輸出作為所轉(zhuǎn)換的存儲器地址(步驟C3)。 如果所輸入的操作代碼不是要轉(zhuǎn)換的命令(步驟C1中的否),則不執(zhí)行轉(zhuǎn) 換且照原樣輸出地址。
2.3) 操作代碼轉(zhuǎn)換
圖6是示出了根據(jù)示例性實(shí)施例的并行圖像處理系統(tǒng)的操作代碼轉(zhuǎn)換 操作的流程圖。操作代碼轉(zhuǎn)換部分223確定從命令讀取/解碼部分21輸入 的操作代碼是否是要轉(zhuǎn)換的左/右相鄰像素值的獲取命令(步驟D1)。
當(dāng)所輸入的操作代碼是左/右相鄰像素值的獲取命令時(shí)(步驟D1中的是),根據(jù)操作代碼是右側(cè)相鄰像素值獲取命令還是左側(cè)相鄰像素值獲取 命令來執(zhí)行下列操作(步驟D2)。
如果操作代碼是用于獲取右側(cè)相鄰像素值的命令,則如果重復(fù)執(zhí)行計(jì)
數(shù)器值CR小于(重復(fù)執(zhí)行指定寄存器值NR-1),則參照自有PE的寄存 器,因而將相同PE中的寄存器間移動(dòng)命令輸出作為轉(zhuǎn)換后的操作代碼。 如果重復(fù)執(zhí)行計(jì)數(shù)器值CR等于(重復(fù)執(zhí)行指定寄存器值NR-1),則參照 在右側(cè)相鄰PE的左端保持像素的寄存器,因而照原樣輸出用于轉(zhuǎn)移右側(cè) 相鄰PE的寄存器值的命令,即所輸入的操作代碼(步驟D3)。
當(dāng)操作代碼是用于獲取左側(cè)相鄰像素值的命令時(shí),如果重復(fù)執(zhí)行計(jì)數(shù) 器值CR大于0,則參照自有PE的寄存器,因而將相同PE中的寄存器間 移動(dòng)命令輸出作為轉(zhuǎn)換后的操作代碼。如果重復(fù)執(zhí)行計(jì)數(shù)器值CR等于O, 則參照保持左側(cè)相鄰PE的寄存器,因而照原樣輸出用于轉(zhuǎn)移左側(cè)相鄰PE 的寄存器值的命令,即所輸入的操作代碼(步驟D4)。
當(dāng)所輸入的操作代碼不是左/右相鄰像素值的獲取命令時(shí)(步驟D1中 的否),不執(zhí)行操作代碼轉(zhuǎn)換,并照原樣將操作代碼輸出至命令讀取/解碼 部分21。
3.效果
如上所述,根據(jù)示例性實(shí)施例,當(dāng)命令讀取/解碼部分21針對從程序 存儲器3讀取的程序代碼的一個(gè)命令進(jìn)行解譯/執(zhí)行時(shí),通過重復(fù)執(zhí)行部分 22執(zhí)行與多個(gè)命令相對應(yīng)的PE陣列控制。因而,利用一個(gè)命令描述分配 至每個(gè)像素PE的多個(gè)像素的過程,由此可以減少程序代碼的數(shù)量。
由于操作代碼轉(zhuǎn)換部分223設(shè)置在重復(fù)執(zhí)行部分22中,所以可以在 需要相鄰左/右像素值交換的過程中,在一個(gè)命令中共同描述需要不同命令 的操作,即,當(dāng)在一個(gè)PE中分配多個(gè)像素時(shí)所需要的相鄰PE間的轉(zhuǎn)移操 作、以及使用在自有PE中保持的像素值的操作。相應(yīng)地,可以進(jìn)一步減 少程序代碼的數(shù)量,以及在不改變程序的情況下可以容易地實(shí)現(xiàn)在具有不 同數(shù)量的PE的SMID并行圖像處理系統(tǒng)上的圖像處理。
示例
現(xiàn)在將描述根據(jù)本發(fā)明的一個(gè)示例的并行圖像處理系統(tǒng)的操作。作為 一個(gè)示例的是這樣的并行圖像系統(tǒng),其中在具有256像素寬X256像素高的要處理的圖像上使用PE陣列l(wèi),在該P(yáng)E陣列1中一維排列了 128個(gè)(這
是寬度方向上像素?cái)?shù)量的一半)PE。
圖7是示出了根據(jù)本發(fā)明一個(gè)示例的用于操作并行圖像處理系統(tǒng)的程
序的一個(gè)示例的視圖。在該示例中,示出了獲取具有每個(gè)像素相鄰側(cè)的像
素值的差的絕對值的過程。在該示例中,每個(gè)PE假定包括36個(gè)寄存器。 由于PE的數(shù)量是沿要處理的圖像寬度方向的像素?cái)?shù)量的一半,所以將每 兩個(gè)像素分配至每個(gè)PE。因而,在程序執(zhí)行之前,將NR=2存儲在重復(fù) 執(zhí)行指定寄存器225中,以及通過分成R (0)至R (17)和R (18)至R (35)兩組來使用寄存器組13。
將要處理的圖像存儲在從MEM1地址起的本地存儲器11中。在本示 例中,以分配至每個(gè)PE的兩個(gè)像素執(zhí)行過程,因而將這兩個(gè)像素存儲在 具有偏移256 (這是沿高度方向的像素?cái)?shù)量)的地址中。對于分配至PE 的圖像,從地址MEM1地址至地址(MEM1+255)存儲了左側(cè)的像素值, 以及從加上了偏移值256的地址(MEM1+256)至地址(MEM1+511)存 儲了右側(cè)的像素值。因而,將256 (這是沿要處理的圖像的高度方向的像 素?cái)?shù)量)存儲在待處理圖像高度寄存器226中。將所處理的結(jié)果圖像存儲 在MEM2地址之后。
將參照圖7示出的程序作為一個(gè)示例、也參照圖3的流程圖,描述本 發(fā)明并行圖像處理系統(tǒng)的操作。
首先,命令讀取/解碼部分21從程序存儲器3讀取第一行的程序代碼 (LDMEM1,R (O)),并將其提供至重復(fù)執(zhí)行部分22 (圖3的步驟A1)。 第一行程序代碼的操作內(nèi)容是讀取在本地存儲器11的地址MEM1中存儲 的值,以及將相同的值存儲在寄存器R (0)中。由于程序代碼的操作代 碼部分是存儲器讀取命令(LD),所以重復(fù)執(zhí)行部分22將該存儲器讀取命 令確定為要重復(fù)執(zhí)行的命令,以及將重復(fù)執(zhí)行計(jì)數(shù)器224設(shè)置為0 (步驟 A5)。
然后將程序代碼提供至操作數(shù)轉(zhuǎn)換部分221、存儲器地址轉(zhuǎn)換部分 222、以及操作代碼轉(zhuǎn)換部分223。操作數(shù)轉(zhuǎn)換部分221參照重復(fù)執(zhí)行指定 寄存器225和重復(fù)執(zhí)行計(jì)數(shù)器224的值NR和CR,并從偏移值計(jì)算表221.1 獲取0作為偏移值。通過將該偏移值加至所輸入的寄存器號O上,然后獲取結(jié)果"0",并將結(jié)果0提供至命令讀取/解碼部分21作為所轉(zhuǎn)換的寄存
器號(步驟A6)。存儲器地址轉(zhuǎn)換部分222參照重復(fù)執(zhí)行計(jì)數(shù)器224的值 CR,并且由于值CR是O,故在不執(zhí)行轉(zhuǎn)換的情況下將存儲器地址MEM1 提供至命令讀取/解碼部分21 (步驟A7)。由于所輸入的操作代碼是存儲 器讀取命令(LD)而不是需要操作代碼轉(zhuǎn)換的左/右相鄰像素值的獲取命 令,所以操作代碼轉(zhuǎn)換部分223不執(zhí)行操作代碼轉(zhuǎn)換,并照原樣將所輸入 的操作代碼提供至命令讀取/解碼部分21 (步驟A8)。命令讀取/解碼部分 21基于從重復(fù)執(zhí)行部分22輸入的操作代碼、存儲器地址、以及操作數(shù)來 操作PE陣列1,并將本地存儲器11的地址MEM1的內(nèi)容存儲在寄存器R (0)中(步驟A9、 AIO)。
接下來,重復(fù)執(zhí)行部分22將重復(fù)執(zhí)行計(jì)數(shù)器224的值CR增加1,且 將值CR設(shè)置為1 (步驟All)。之后,將重復(fù)執(zhí)行計(jì)數(shù)器224的值CR=1 與重復(fù)執(zhí)行指定寄存器225的值NR-2相比較,確定由于這些值不相同, 所以不將所述執(zhí)行重復(fù)必要的次數(shù),并且過程返回操作數(shù)轉(zhuǎn)換部分221、 存儲器地址轉(zhuǎn)換部分222、以及操作代碼轉(zhuǎn)換部分223的執(zhí)行(步驟A12)。
操作數(shù)轉(zhuǎn)換部分221參照重復(fù)執(zhí)行指定寄存器225和重復(fù)執(zhí)行計(jì)數(shù)器 224的值NR和CR,以及從偏移計(jì)算表221.1中獲得18作為偏移值。通 過將該偏移值加至所輸入的寄存器號O,然后獲得結(jié)果"18",以及將結(jié)果 "18"提供給命令讀取/解碼部分21作為轉(zhuǎn)換后的寄存器號(步驟A6)。 由于重復(fù)執(zhí)行計(jì)數(shù)器224的值是1,所以存儲器地址轉(zhuǎn)換部分222將給存 儲器地址MEM1添加了偏移256的地址(MEM1+256)提供至命令讀取/ 解碼部分21 (步驟A7)。由于所輸入的操作代碼是存儲器讀取命令(LD) 而不是需要操作代碼轉(zhuǎn)換的左/右相鄰像素值的獲取命令,所以操作代碼轉(zhuǎn) 換部分223不執(zhí)行操作代碼轉(zhuǎn)換,并照原樣將所輸入的操作代碼提供至命 令讀取/解碼部分21 (步驟A8)。命令讀取/解碼部分21基于從重復(fù)執(zhí)行部 分22輸入的操作代碼、存儲器地址、以及操作數(shù)來操作PE陣列1,以及 將本地存儲器ll的地址(MEM1+256)地址的內(nèi)容存儲在寄存器R (18) 中(步驟A9、 AIO)。
然后,重復(fù)執(zhí)行部分22將重復(fù)執(zhí)行計(jì)數(shù)器224的值CR增加1 ,且將 值CR設(shè)置為2 (步驟All)。之后,將重復(fù)執(zhí)行計(jì)數(shù)器224的值CR與重復(fù)執(zhí)行指定寄存器225指定的值NR相比較,以及由于值CR和NR相等, 所以確定完成必要的重復(fù)執(zhí)行,且與第一行的程序代碼相對應(yīng)的過程結(jié) 束,以及過程進(jìn)行至下一個(gè)命令過程(步驟A12)。
接下來,命令讀取/解碼部分21從程序存儲器3讀取第二行的程序代 碼(MVLR (0) R (l)),且將其提供至重復(fù)執(zhí)行部分22 (步驟A1)。第 二行操作代碼的操作內(nèi)容是將與右側(cè)像素相對應(yīng)的寄存器R (0)的值存 儲在寄存器R (1)中。在將一個(gè)像素分配至一個(gè)PE的系統(tǒng)中,執(zhí)行諸如 將存儲在右側(cè)相鄰PE的寄存器R (0)中的值轉(zhuǎn)移至自有PE、并將該值 存儲在寄存器R (1)的操作,但是由于在本示例中,將兩個(gè)像素分配至 一個(gè)PE,所以右側(cè)相鄰PE不持續(xù)保持右側(cè)像素,將相對于分配至PE的 要處理像素的左側(cè)像素的右側(cè)像素的值存儲在PE中的另一個(gè)寄存器中。 因而,右側(cè)像素值的獲取操作分為兩種類型,g卩,根據(jù)要處理的像素,在 自有PE中讀取寄存器值的操作,或?qū)⒂覀?cè)相鄰PE的寄存器R (0)轉(zhuǎn)移 至自有PE的操作。由于操作代碼是右側(cè)相鄰像素值的轉(zhuǎn)移命令,所以重 復(fù)執(zhí)行部分22將該操作代碼確定為要重復(fù)執(zhí)行的命令,并將重復(fù)執(zhí)行計(jì) 數(shù)器224的值設(shè)置為0,之后,操作該操作數(shù)轉(zhuǎn)換部分221以及操作代碼 轉(zhuǎn)換部分223 (步驟A2、 A5)。
操作數(shù)轉(zhuǎn)換部分221針對程序代碼中指定的輸入源寄存器和輸出目的 地寄存器執(zhí)行操作數(shù)轉(zhuǎn)換過程(步驟A6)。由于所輸入的操作代碼是右側(cè) 相鄰像值的獲取命令(MVL),所以在輸入源寄存器和輸出目的地寄存器 中執(zhí)行不同的操作數(shù)操作。針對輸入源寄存器,參照重復(fù)執(zhí)行指定寄存器 225和重復(fù)執(zhí)行計(jì)數(shù)器224的值NR和CR,以及使用偏移計(jì)算表221.1獲 取18作為偏移值。通過將偏移值加至輸入寄存器號0,然后獲取結(jié)果"18", 以及將結(jié)果"18"提供至命令讀取/解碼部分21作為所轉(zhuǎn)換的輸入源寄存 器號。針對輸出目的地寄存器,通過在參照偏移計(jì)算表為0并執(zhí)行偏移計(jì) 算時(shí)調(diào)整重復(fù)執(zhí)行計(jì)數(shù)器值CR,獲取偏移值"0",以及將偏移值"0"加 至所輸入的寄存器號l,因而獲取結(jié)果"l",然后將結(jié)果"l"提供值命令 讀取/解碼部分21作為所轉(zhuǎn)換的輸出目的地寄存器號。
操作代碼轉(zhuǎn)換部分223確定右側(cè)相鄰像素值獲取命令(MVL)是需要 操作代碼轉(zhuǎn)換的命令,由于重復(fù)執(zhí)行計(jì)數(shù)器224的值CR不等于(重復(fù)執(zhí)行指定寄存器225的值NR-1),所以將命令(MVL)轉(zhuǎn)換為相同PE中的 寄存器間移動(dòng)命令,以及將該命令提供至命令讀取/解碼部分21(步驟A8)。 命令讀取/解碼部分21操作PE陣列1,以及將寄存器(18)的內(nèi)容存儲在 寄存器R (1)中(步驟A9、 AIO)。
重復(fù)執(zhí)行部分22將重復(fù)執(zhí)行計(jì)數(shù)器224的值CR增加1 ,且將值CR 設(shè)置至l (步驟All)。之后,將重復(fù)執(zhí)行計(jì)數(shù)器224的值CR4與重復(fù)執(zhí) 行指定寄存器225指定的值NR^2相比較,以及由于這些值不同,所以確 定沒有完成必要的重復(fù)執(zhí)行,以及過程返回操作數(shù)轉(zhuǎn)換部分221和操作代 碼轉(zhuǎn)換部分223的執(zhí)行(步驟A12)。
由于操作代碼是右側(cè)相鄰像素值的轉(zhuǎn)移命令(MVL),以及重復(fù)執(zhí)行 計(jì)數(shù)器224的值CR等于(重復(fù)執(zhí)行指定寄存器225的值NR-1),所以操 作數(shù)轉(zhuǎn)換部分221執(zhí)行轉(zhuǎn)換從而轉(zhuǎn)移右側(cè)PE的寄存器R (0)的內(nèi)容。因 而,針對輸入源寄存器,通過在參照偏移計(jì)算表221.1為0并執(zhí)行偏移計(jì) 算時(shí)調(diào)整重復(fù)執(zhí)行計(jì)數(shù)器值CR,獲取偏移值"0",以及將偏移值"0"加 至所輸入的輸入源寄存器號0,因而獲取結(jié)果"0",然后將結(jié)果"0"提供 至命令讀取/解碼部分21作為所轉(zhuǎn)換的輸入源寄存器號。針對輸出目的地 寄存器,執(zhí)行類似于第一行的轉(zhuǎn)換,根據(jù)重復(fù)執(zhí)行指定寄存器225和重復(fù) 執(zhí)行計(jì)數(shù)器224的值NR和CR,通過使用偏移計(jì)算表221.1,獲取偏移值 "18",以及將偏移值"18"加至所輸入的輸出目的地寄存器號1,因而獲 取結(jié)果"19",然后將結(jié)果"19"提供值命令讀取/解碼部分21作為所轉(zhuǎn)換 的輸出目的地寄存器號(步驟A6)。
盡管所輸入的操作代碼是要執(zhí)行操作代碼轉(zhuǎn)換的命令,由于重復(fù)執(zhí)行 計(jì)數(shù)器224的值CR等于(重復(fù)執(zhí)行指定寄存器225的值NR-1),所以操 作代碼轉(zhuǎn)換部分223不執(zhí)行轉(zhuǎn)換,并將命令提供至命令讀取/解碼部分21 (步驟A8)。命令讀取/解碼部分21操作PE陣列1,以及將右側(cè)PE的寄 存器R (0)的內(nèi)容存儲在寄存器R (19)中(步驟A9、 AIO)。
重復(fù)執(zhí)行部分22將重復(fù)執(zhí)行計(jì)數(shù)器224的值CR增加1 ,且將值CR 設(shè)置為2 (步驟All )。該值與重復(fù)執(zhí)行指定寄存器225中指定的值NR相 同,因而確定終止必要的重復(fù)執(zhí)行,與第二行的程序代碼相對應(yīng)的過程結(jié) 束,以及過程進(jìn)行至下一個(gè)命令過程(步驟A12)。命令讀取/解碼部分21從程序存儲器3讀取第三行的程序代碼(ABS R (0), R(l), R(2)),并將該程序代碼提供至重復(fù)執(zhí)行部分22。第三行 程序代碼的操作內(nèi)容是計(jì)算寄存器R (0)和寄存器R (1)之間的差的絕 對值,以及將計(jì)算結(jié)果存儲在寄存器R (2)中。類似于第一行的情況, 重復(fù)執(zhí)行部分22針對指定輸入源和指定輸出目的地的操作數(shù)執(zhí)行轉(zhuǎn)換以 執(zhí)行重復(fù)操作,以及作為命令讀取/解碼部分21操作PE陣列1的事實(shí)的 結(jié)果,將寄存器R (0)和R (1)之間的差的絕對值存儲在寄存器R (2) 中,以及將寄存器R (18)和R (19)之間的差的絕對值存儲在寄存器R (20)中,以及過程進(jìn)行至下一個(gè)命令過程。
命令讀取/解碼部分21讀取第四行的程序代碼(STMEM2, R (2)), 并將程序代碼提供至重復(fù)執(zhí)行部分22。第四行程序代碼的操作內(nèi)容是讀取 存儲在寄存器R(2)中的值,以及將該值寫入本地存儲器11的地址MEM2。 在重復(fù)執(zhí)行部分22中執(zhí)行類似于第一行的情況的存儲器地址和操作數(shù)的 轉(zhuǎn)換,命令讀取/解碼部分21操作PE陣列1,以及將寄存器R(2)的值 存儲在本地存儲器ll的地址MEM2地址中,以及將寄存器R(20)的值 存儲在本地存儲器ll的地址(MEM2+256)地址中。
因此,在本示例中,由于通過重復(fù)執(zhí)行部分22執(zhí)行與兩個(gè)命令相對 應(yīng)的PE陣列控制,所以相對于從程序存儲器3讀取的程序代碼的一個(gè)命 令,可以減少程序代碼的數(shù)量。此外,由于在操作代碼轉(zhuǎn)換部分223的重 復(fù)執(zhí)行期間在部分循環(huán)中可以執(zhí)行不同的命令,所以在與不能利用相同命 令的重復(fù)執(zhí)行進(jìn)行處理的相鄰像素的交換過程中也可以進(jìn)行自動(dòng)重復(fù)執(zhí) 行的操作,以及可以進(jìn)一步減少程序代碼量。
在本示例中描述了沿要處理的圖像的寬度方向的像素?cái)?shù)量與PE數(shù)量 的比率是2: 1的示例,但是比率不限于此,以及也可應(yīng)用于沿要處理的 圖像的寬度方向的像素?cái)?shù)量大于系統(tǒng)中PE數(shù)量(例如3: 1, 4: 1,..., N- 1)的情況。
工業(yè)應(yīng)用根據(jù)本發(fā)明,可以應(yīng)用到具有視頻圖像、傳感器圖像等作為輸入的圖 像處理設(shè)備、圖像檢查設(shè)備、以及圖像識別設(shè)備。
圖1是示出了根據(jù)本發(fā)明一個(gè)示例性實(shí)施例的并行圖像處理系統(tǒng)的功 能性配置的框圖。
圖2是功能性示出了在根據(jù)示例性實(shí)施例的并行圖像處理系統(tǒng)中的操 作數(shù)轉(zhuǎn)換部分配置的框圖。
圖3是示出了根據(jù)示例性實(shí)施例的并行圖像處理系統(tǒng)的整體操作的流程圖。
圖4是示出了根據(jù)示例性實(shí)施例的并行圖像處理系統(tǒng)的操作數(shù)轉(zhuǎn)換操 作的流程圖。
圖5是示出了根據(jù)示例性實(shí)施例的并行圖像處理系統(tǒng)的存儲器地址轉(zhuǎn) 換操作的流程圖。
圖6是示出了根據(jù)示例性實(shí)施例的并行圖像處理系統(tǒng)的操作代碼轉(zhuǎn)換 操作的流程圖。
圖7是示出了根據(jù)本發(fā)明一個(gè)示例的用于操作并行圖像處理系統(tǒng)的程 序的一個(gè)示例的視圖。
1 PE陣歹U
2 控制器
3 程序存儲器 10 PE
11本地存儲器 12計(jì)算部分 13寄存器
21命令讀取/解碼部分 22重復(fù)執(zhí)行部分 221操作數(shù)轉(zhuǎn)換部分222存儲器地址轉(zhuǎn)換部分 223操作代碼轉(zhuǎn)換部分 224 重復(fù)執(zhí)行計(jì)數(shù)器 225重復(fù)執(zhí)行指定寄存器 226待處理圖像高度寄存器
權(quán)利要求
1. 一種具有比要處理的數(shù)據(jù)條數(shù)少的數(shù)量的元件處理器的并行圖像處理系統(tǒng)的控制方法,每個(gè)元件處理器處理多條要處理的數(shù)據(jù);所述方法包括根據(jù)分配至元件處理器的要處理的數(shù)據(jù)條數(shù),自動(dòng)重復(fù)執(zhí)行命令;當(dāng)重復(fù)執(zhí)行預(yù)定命令時(shí),根據(jù)在各個(gè)重復(fù)執(zhí)行期間要處理的數(shù)據(jù)來替換操作代碼;以及通過所替換的操作代碼控制元件處理器。
2. 如權(quán)利要求1所述的并行圖像處理系統(tǒng)的控制方法,其中當(dāng)處理 作為處理數(shù)據(jù)的多個(gè)像素時(shí),根據(jù)分配至元件處理器的像素?cái)?shù)量,自動(dòng)重復(fù)執(zhí)行命令; 當(dāng)重復(fù)地執(zhí)行相鄰像素值獲取命令時(shí),根據(jù)要處理的像素的位置,利用用于從相鄰元件處理器轉(zhuǎn)移像素值的命令和用于獲取自有元件處理器上的像素值的命令的組合,來替換操作代碼;以及 通過所替換的操作代碼控制元件處理器。
3. 如權(quán)利要求2所述的并行圖像處理系統(tǒng)的控制方法,其中 根據(jù)分配至每個(gè)元件處理器的像素?cái)?shù)量,劃分寄存器組以便使用,以及重寫操作數(shù),以在重復(fù)執(zhí)行中切換要使用的寄存器組;以及在存儲器訪問命令的重復(fù)執(zhí)行中,將與分配至元件處理器的像素?cái)?shù)量 相對應(yīng)的偏移值加至地址上。
4. 一種具有比要處理的數(shù)據(jù)條數(shù)少的數(shù)量的元件處理器的并行圖像 處理系統(tǒng)的控制設(shè)備,每個(gè)元件處理器處理多條要處理的數(shù)據(jù);所述設(shè)備 包括重復(fù)執(zhí)行裝置,用于根據(jù)分配至元件處理器的要處理的數(shù)據(jù)條數(shù),自 動(dòng)重復(fù)執(zhí)行命令;其中所述重復(fù)執(zhí)行裝置包括操作代碼轉(zhuǎn)換裝置,用于當(dāng)重復(fù)執(zhí)行預(yù)定命令 時(shí),根據(jù)在各個(gè)重復(fù)執(zhí)行期間要處理的數(shù)據(jù)來替換操作代碼,以及通過所 替換的操作代碼控制所述元件處理器。
5. 如權(quán)利要求4所述的并行圖像處理系統(tǒng)的控制設(shè)備,其中當(dāng)處理作為處理數(shù)據(jù)的多個(gè)像素時(shí),所述重復(fù)執(zhí)行裝置根據(jù)分配至所述元件處理器的像素?cái)?shù)量,自動(dòng)重復(fù) 執(zhí)行命令;以及所述重復(fù)執(zhí)行裝置包括操作代碼轉(zhuǎn)換裝置,用于當(dāng)重復(fù)地執(zhí)行相鄰像 素值獲取命令時(shí),根據(jù)要處理的像素的位置,利用用于從相鄰元件處理器 轉(zhuǎn)移像素值的命令和用于獲取自有元件處理器上的像素值的命令的組合, 來替換操作代碼,以及通過所替換的操作代碼控制所述元件處理器。
6. 如權(quán)利要求5所述的并行圖像處理系統(tǒng)的控制設(shè)備,其中 所述元件處理器包括用于處理多個(gè)像素的一維處理器陣列結(jié)構(gòu);以及 所述一維處理器陣列結(jié)構(gòu)是一維SIMD (單指令多數(shù)據(jù))處理器陣列結(jié)構(gòu)。
7. 如權(quán)利要求6所述的并行圖像處理系統(tǒng)的控制裝置,其中所述重 復(fù)執(zhí)行裝置還包括,操作數(shù)轉(zhuǎn)換裝置,用于根據(jù)分配至每個(gè)元件處理器的像素?cái)?shù)量劃分寄 存器組用于使用,以及重寫操作數(shù)以在重復(fù)執(zhí)行中切換要使用的寄存器 組;以及存儲器地址轉(zhuǎn)換裝置,用于在存儲器訪問命令的重復(fù)執(zhí)行中,將與分 配至元件處理器的像素?cái)?shù)量相對應(yīng)的偏移值加至地址上。
8. —種具有比要處理的數(shù)據(jù)條數(shù)少的數(shù)量的元件處理器的并行圖像 處理系統(tǒng),每個(gè)元件處理器處理多條要處理的數(shù)據(jù);所述并行圖像處理系 統(tǒng)包括重復(fù)執(zhí)行裝置,用于根據(jù)分配至元件處理器的要處理的數(shù)據(jù)數(shù)量,自 動(dòng)重復(fù)執(zhí)行命令;其中所述重復(fù)執(zhí)行裝置包括操作代碼轉(zhuǎn)換裝置,用于當(dāng)重復(fù)執(zhí)行預(yù)定命令 時(shí),根據(jù)在各個(gè)重復(fù)執(zhí)行期間要處理的數(shù)據(jù)來替換操作代碼,以及通過所 述所替換的操作代碼控制所述元件處理器。
9. 如權(quán)利要求8所述的并行圖像處理系統(tǒng),其中當(dāng)處理作為處理數(shù) 據(jù)的多個(gè)像素時(shí),所述重復(fù)執(zhí)行裝置根據(jù)分配至所述元件處理器的像素?cái)?shù)量,自動(dòng)重復(fù) 執(zhí)行命令;以及所述重復(fù)執(zhí)行裝置包括操作代碼轉(zhuǎn)換裝置,用于當(dāng)重復(fù)地執(zhí)行相鄰像 素值獲取命令時(shí),根據(jù)要處理的像素位置,利用用于從相鄰元件處理器轉(zhuǎn) 移像素值的命令和用于獲取自有元件處理器上的像素值的命令的組合,來 替換操作代碼,以及通過所替換的操作代碼控制所述元件處理器。
10. —種用于使配置了具有比要處理的數(shù)據(jù)量少的元件處理器的并行 圖像處理系統(tǒng)的計(jì)算機(jī)執(zhí)行如下功能的程序,其中每個(gè)元件處理器處理多 條要處理的數(shù)據(jù)根據(jù)分配至所述元件處理器的要處理的數(shù)據(jù)條數(shù),自動(dòng)重復(fù)執(zhí)行命當(dāng)在重復(fù)執(zhí)行步驟中重復(fù)執(zhí)行預(yù)定命令時(shí),根據(jù)在各個(gè)重復(fù)執(zhí)行期間 要處理的數(shù)據(jù)來替換操作代碼,以及通過所替換的操作代碼控制所述元件處理器。
11.如權(quán)利要求io所述的程序,用于當(dāng)處理作為處理數(shù)據(jù)的多個(gè)像 素時(shí),使計(jì)算機(jī)執(zhí)行以下功能-根據(jù)分配至所述元件處理器的像素?cái)?shù)量,自動(dòng)重復(fù)執(zhí)行命令;當(dāng)在重復(fù)執(zhí)行步驟中重復(fù)執(zhí)行相鄰像素值獲取命令時(shí),根據(jù)要處理的 像素的位置,利用用于從相鄰元件處理器轉(zhuǎn)移像素值的命令和用于獲取自 有元件處理器上的像素值的命令的組合來替換操作代碼;以及通過所替換的操作代碼控制所述元件處理器。
全文摘要
[問題]為了減少當(dāng)在具有比沿要處理圖像寬度方向的像素?cái)?shù)量少的數(shù)量的PE的一維SIMD并行圖像處理系統(tǒng)中處理整個(gè)圖像時(shí)所需要的程序代碼數(shù)量。[解決問題的手段]用于控制PE陣列1的控制器2包括命令重復(fù)執(zhí)行部分22,所述命令重復(fù)執(zhí)行部分22包括操作數(shù)轉(zhuǎn)換部分221、存儲器地址轉(zhuǎn)換部分222以及操作代碼轉(zhuǎn)換部分223。當(dāng)命令讀取/解碼部分21讀取和執(zhí)行存儲在程序存儲器3中的程序代碼時(shí),所述重復(fù)執(zhí)行部分22確定程序代碼以使操作數(shù)轉(zhuǎn)換部分221、存儲器地址轉(zhuǎn)換部分222以及操作代碼轉(zhuǎn)換部分223根據(jù)命令執(zhí)行轉(zhuǎn)換,從而重復(fù)執(zhí)行適配于分配至PE的多個(gè)相關(guān)像素的一個(gè)命令程序描述,因而可以減少程序代碼量。
文檔編號G06T1/20GK101416216SQ200680054119
公開日2009年4月22日 申請日期2006年12月5日 優(yōu)先權(quán)日2006年3月30日
發(fā)明者古賀拓也 申請人:日本電氣株式會社