专利名称:并行图像处理系统控制方法和设备的制作方法
技术领域:
本发明涉及并行图像处理系统,更具体地,涉及包括一维SIMD (单 指令多数据)处理器阵列结构的并行图像处理系统的控制方法和设备。
背景技术:
在曰本专利公开号2839026 (专利文件1)和日本待审专利公开号 2002-7359 (专利文件2)中公开了传统并行图像处理系统的一个示例。通 过PE阵列和用于控制所述PE阵列的控制器配置传统并行图像处理系统, 在所述PE阵列中,大量计算元件处理器(处理器元件,以下称为"PE") 一维并行连接。每个PE具有如下配置计算部分(ALU),用于执行计算 过程;本地存储器,用于存储要处理的图像的本地像素值;以及寄存器, 用于保存临时计算结果。
当针对存储在本地存储器的要处理的图像的特定行执行某种计算时, 具有这种配置的传统并行图像处理系统从与本地存储器的特定行相对应 的地址中读取像素值,并将该像素值存储在寄存器中。然后,读出存储在 寄存器中的像素值,在ALU中执行计算,以及在寄存器中存储计算结果。 将在寄存器中存储的计算结果存储在本地存储器的特定行中。当在计算中 需要位于要处理的像素外围的像素值时,使用PE间的数据转移单元收集 必要的像素值,并执行计算。
日本待审专利公开号2004-362086 (专利文件3)公开了一种SIMD并 行处理系统,所述系统具有根据PE的并行性自动执行PE命令的重复执行、 以在系统在要处理的图像中不具有最佳数量的PE的情况下提高程序效率 的功能。在并行处理系统中,根据程序指示的并行信息以及SIMD计算器 的并行信息计算重复执行的数量、以及根据系统PE的数量实现将PE命令 自动重复执行必要的次数。
专利文件l:日本专利公开号2839026 (例如
图1,段落0008)专利文件2:日本待审专利公开号2002-7359 (例如图1,段落0014 至0016)
专利文件3:日本待审专利公开号2004-362086 (例如段落0011至 0021,图1)
发明内容
本发明要解决的问题
然而,在传统的并行图像处理系统中,不考虑在PE的数量小于沿要 处理的图像的宽度方向的像素数量、以及将多个像素分配至每个PE以执 行在存储器上设置像素以及通过PE自动获取数据的过程的情况下的像素 在存储器上的设置以及通过PE获取数据的自动化。
在专利文件3描述的系统中,重复地执行相同的命令或相同的子程序, 但是在这种简单的重复执行中不能够使包括与相邻PE进行通信的过程自 动化。为了实现需要相邻像素值的过程,有必要添加与在相同的PE还是 在相邻的PE中分配必要的相邻像素值相对应的特定过程,以及程序代码 数量增加。
本发明的目的是提供新颖的并行图像处理系统及其控制方法,实现需 要相邻像素值的过程的自动化。
本发明的另一个目的是提供图像处理系统的控制方法和设备,以能够 以与具有沿要处理的图像宽度方向的像素数量相同数量的PE的一维 SIMD并行图像处理系统相同程度的程序代码量(甚至在需要相邻像素值 的过程中),针对整个图像执行图像处理。
用于解决问题的方式
本发明涉及并行图像处理系统的控制方法,所述系统具有比要处理的 数据条数少的数量的元件处理器,每个元件处理器处理多条要处理的数 据;所述方法包括根据分配至元件处理器的要处理的数据条数,自动重复 执行命令;当重复执行预定命令时,根据在各个重复执行期间要处理的数 据来替换操作代码;以及通过所替换的操作代码控制元件处理器。
根据本发明的一个示例性实施例,本发明涉及并行图像处理系统的控制方法,所述系统包括具有比沿要处理的图像的宽度方向的像素数量少的 数量的元件处理器,每个元件处理器处理多个像素;所述方法包括根据分
配至元件处理器的像素数量,自动重复执行命令;其中当重复地执行相邻
像素值获取命令时,根据要处理的像素位置,利用用于从相邻元件处理器 转移像素值的命令和用于获取自有元件处理器上的像素值的命令的组合
来替换操作代码;以及通过所替换的操作代码控制元件处理器。
此外,根据分配至每个元件处理器的像素数量划分寄存器组用于使 用,以及重写操作数以在重复执行中切换要使用的寄存器组;以及在存储 器访问命令的重复执行中,将与分配至元件处理器的像素数量相对应的偏 移值加至地址上。
根据本发明的一个示例的并行图像处理系统包括在用于根据程序控 制PE阵列控制器中,用于根据分配至每个PE的像素的数量自动执行程序 中每个命令的重复执行的设备;以及还包括用于转换要重复执行的命令中 的操作数的设备;用于转换要重复执行的命令中的存储器访问中的地址的 设备;以及用于在重复执行中根据分配至每个PE的多个像素中的像素位 置转换操作代码的设备。
利用这样的配置,可以通过针对分配至每个PE的要处理的多个像素 自动执行程序中所描述的一个命令、以及执行操作代码转换来实现需要相 邻像素值的过程的自动化,由此,可以以与具有沿要处理的图像宽度方向 的像素数量相同数量的PE的一维SIMD并行图像处理系统相同程度的程 序代码量,针对整个图像执行图像处理。
本发明的有益效果
如上所描述的,根据本发明,根据分配至元件处理器的要处理的数据 条数,自动地重复执行命令,当重复执行预定命令时,根据在各个重复执 行期间要处理的数据,替换操作代码;以及通过所替换的操作代码控制元 件处理器。因而,可以在需要利用依据要执行的像素位置的不同操作而被 执行的周围像素值获取命令等中,执行考虑了像素位置的命令转换,以及 可以利用少量的程序代码实现需要相邻像素值的过程的自动化。
在具有比沿要处理的图像的宽度方向的像素数量少的PE数量的一维SIMD图像处理系统中,可以根据设置在控制器中的重复执行设备、转换 操作数的设备、以及转换存储器地址的设备,仅利用针对一个像素的命令 的程序描述来自动进行重复执行,此外,通过转换操作代码,可以实现需 要相邻像素值的过程的自动化,以及可以执行针对整个图像的图像处理, 而不增加程序代码量。
实施本发明的最佳方式
将在以下结合附图详细描述本发明的示例性实施例。 1.系统配置
图1是示出了根据本发明一个示例性实施例的并行图像处理系统的功 能性配置的框图。根据示例性实施例的并行图像处理系统包括用于在每个
图像处理中执行命令操作的PE阵列1,用于根据程序来控制PE阵列1的 操作的控制器2,以及用于存储描述要执行的图像处理的程序的程序存储 器3。
PE阵列1具有以下配置其中对多个PE10排阵列,并一维连接,以 及每个PE被配置为执行相同程序的SIMD类型。注意为了避免复杂化在 图1中仅示出了 3个相邻PE。
每个PE包括本地存储器11、计算部分12、以及寄存器组13。可期 望地,包含在PE阵列1中的PE IO的数量是沿要处理的图像宽度方向的 像素数的整约数(integral submultiple)。这样可以分配给每个PE 10相同 数量的像素。然而,即使不能满足整约数的条件,本发明也是可应用的, 并且可以获得类似效果。
控制器2是用于控制PE阵列1的操作序列的单元,以及包括命令读 取/解码部分21和重复执行部分22。重复执行部分22是用于根据针对控 制器2执行的命令分配给每个PE的要处理的像素数量而进行重复执行的 单元,以及包括操作数转换部分221、存储器地址转换部分222、操作代 码转换部分223、重复执行计数器224、重复执行指定寄存器225、以及待 处理图像高度寄存器226。
重复执行计数器224是使命令重复执行了重复执行部分22中的重复 执行指定寄存器225的值所指定的次数时使用的计数器CR。重复执行指定寄存器225是当重复执行命令时用于指定和保持重复数量NR的寄存 器,并且根据PE的数量与沿要处理的图像宽度方向的像素数量的比率, 指定了重复的必要数量,即,分配至每个PE的要处理的像素的数量。待 处理图像高度寄存器226是用于存储和保持沿要处理的图像高度方向的像 素数量NH的寄存器,其中使用这种值计算在存储器访问命令的重复执行 中存储要处理的图像的地址的偏移值。 1.1) PE阵列
PE阵列1将要处理的图像的像素分配至每个PE 10,并通过在每个中 PE中并行操作相同的命令来执行图像处理操作。PE 10是用于存储和计算 要处理的图像中所分配的像素值的元件处理器,并具有常规处理器的命令 执行功能,并响应来自控制器2的控制信号执行命令操作。每个PE10与 相邻的PE IO连接以交换数据。
本地存储器11是在每个PE 10中单独设置并与计算部分12紧密连接 的存储器,该本地存储器存储分配至每个PE的要处理的图像中的像素值、 以及在处理的过程中存储计算结果等。分配至要处理的图像的每个PE的 相应的像素值分别存储在具有沿要处理的图像的高度方向的像素数量的 偏移的地址中。在这种情况下,地址偏移值,即,沿要处理的图像的高度 方向的像素数量假定为Om。例如,如果将左端的像素值存储在地址A中, 则分配至PE的像素值相应地存储在地址A、 A+Om、 A+2XOm、以及A+3 XOm中。
计算部分12是用于执行寄存器组13的读/写命令、以及本地存储器 11上的读/写命令、算术计算命令、逻辑计算命令等的单元,并且在图像 处理中针对所分配的像素值执行计算等。
寄存器组13是在每个PE 10的计算部分12中单独设置的计算寄存器, 以及存储在计算操作中成为输入的值和要输出的计算结果。给予每个寄存 器从R(O)到R(寄存器数-l)的寄存器号。为了自动处理分配给每个PE 10 的多个像素,将所包含的寄存器数除以所分配的像素数量用于使用。例如, 如果将两个像素分配至每个PEIO,则寄存器组13的寄存器数除以2(即, 前一半和后一半)用于使用,然而,如果将4个像素分配至每个PE 10, 则寄存器组13的寄存器数除以4用于使用。1.2) 控制器
控制器2通过命令读取/解码部分21继续读取存储在程序存储器3中 的程序,解译该程序并控制PE阵列1以进行图像处理。
命令读取/解码部分21是组成从程序存储器3中读取程序、解译操作 代码和操作数、以及执行PE阵列1的控制的控制器2的核心部分的单元。 将从程序存储器3读取的操作代码和操作数提供给重复执行部分22以确 定重复执行。如果重复执行部分22确定重复执行,则停止后续程序的读 取,直到完成指定数量的重复。使用根据重复执行部分22重复执行的每 个步骤重写的操作代码和操作数,控制PE阵列1。
重复执行部分22确定命令读取/解码部分21输入的操作代码是否是要 重复执行的命令,以及如果操作代码是目标代码,则使用重复执行计数器 224,使重复操作执行由重复执行指定寄存器225所指定的次数NR。此外, 指示命令读取/解码部分21停止来自程序存储器的后续命令的读取,直到 终止所述重复执行。当执行重复操作时,根据重复执行指定寄存器225指 定的次数NR(即分配至每个PE的要处理的像素数量)以及根据重复执行 计数器224的值CR计算的要处理的像素组中的像素位置,通过操作数转 换部分221、存储器地址转换部分222、以及操作代码转换部分223执行 操作数、存储器地址、以及操作代码的转换。
1.3) 操作数转换部分
操作数转换部分221是用于在重复执行期间根据要处理的像素位置, 使用在寄存器组13中的部分转换寄存器号以切换寄存器的单元。通过从 命令读取/解码部分21输入的操作代码确定命令是否需要操作数转换。如 果操作数转换是必要的,则将PE阵列1的寄存器组13中的寄存器数除以 存储在重复执行指定寄存器225中的重复执行数量NR,并将每个除过的 寄存器数乘以存储'在重复执行计数器224中的从0到(NR-1)的值,以获 得在切换寄存器位置中使用的偏移值。
如果寄存器数不可被重复执行数量NR除尽,则省略小数点之后的数 字从而产生整数值用于使用,然后又乘以重复执行寄存器224的值CR, 以计算偏移值。将所计算的偏移值加至从命令读取/解码部分21输入的操 作数(寄存器号)上以执行操作数转换,并将作为转换结果的操作数提供给命令读取/解码部分。
用于计算偏移值的设备可以包括使用除法器或乘法器的配置,或使用 表格的配置。之后,将描述配置用于使用表格计算偏移值的操作数转换部 分221。
图2是功能性示出了在根据示例性实施例的并行图像处理系统中操作 数转换部分配置的框图。操作数转换部分221通过使用设置了重复执行指 定寄存器值NR和重复执行计数器值CR作为密钥的偏移计算表来确定在 寄存器号的转换中使用的偏移值。这里,为了响应重复执行指定寄存器225 指定的重复执行次数,准备了可以响应一次(不进行重复执行)到四次的 偏移值计算表221.1。
图2中的偏移计算表221.1描述寄存器数为N。确定操作代码是否是 要转换操作数的命令(221.6),以及根据这个结果,选择(221.7)是输出 当前输入的寄存器号、还是输出加上了 (221.5)由偏移计算表221.1确定 的偏移值的寄存器号。即,如果操作代码是要转换偏移值操作数的命令, 则输出将所输入寄存器号和偏移计算表221.1确定的偏移值相加的结果, 以及如果操作代码不是要转换操作数的命令,则输出当前输入的寄存器
号
操作数转换部分221具有当参照偏移计算表221.1时用于调整重复执 行计数器值CR的计数器值调整部分。当进行相邻像素值获取命令的重复 执行时,计数器值调整部分是必要的单元。当进行相邻像素值获取命令的 重复执行时,根据重复执行计数器224的值CR,存在如下两种情况一 种情况是相邻的PE保持了必要的相邻像素值,并将像素值从相邻的PE 转移(transfer)到自有(own)的PE, 一种情况是自有的PE保持了必要 的相邻像素值,并参照其寄存器号被偏移了的寄存器。在这种情况下,根 据该命令是参照左侧还是右侧的像素值的命令、以及转移目的地是相邻PE 还是自有PE,输入操作数中指定的寄存器号需要被偏移。
如图2所示,当参照偏移计算表221.1时,替换重复执行计数器值CR。 根据操作代码确定计数器值CR的调整是否必要(221.2),如果有必要调 整计数器值CR (221.3),则选择调整后的结果(221.4),并参照偏移计算 表221.1。如果计数器值CR的调整没有必要,则选择所输入的计数器值CR (221.4),并参照偏移计算表221.1。
1.4) 存储器地址转换部分
存储器地址转换部分222是用于当重复执行存储器访问命令时转换要 访问的地址的单元。如果从命令读取/解码部分21输入的操作代码是本地 存储器11的读/写命令,则执行将通过将待处理图像高度寄存器226的值 NH与重复执行计数器224的值CR相乘获得的值加至输入地址上的地址 转换,并将所转换的地址提供至命令读取/解码部分21。
1.5) 操作代码转换部分
操作代码转换部分223是当执行左/右相邻的像素值的获取命令(其中 需要根据在重复执行中待执行的像素位置来执行不同的操作)时,用于转 换要在PE阵列中执行的操作代码的单元。如果从命令读取/解码部分21 输入的操作代码是左/右相邻的像素值的获取命令,则通过重复执行计数器 224和重复执行指定寄存器225的值CR和NR计算分配至像素的每个PE 的多个像素中的像素位置(即当前执行目标),确定要获得的相邻像素值 是保持在其自有PE的寄存器中还是保持在相邻PE的寄存器中,以及将被 转换以从该像素的PE寄存器读取的操作代码或从右边相邻PE转移的寄存 器值转发到命令读取/解码部分21 。
2.操作
图3是示出了根据示例性实施例的并行图像处理系统的整体操作的流 程图。命令读取/解码部分21从存储在程序存储器3中的程序中读取地址 的程序代码以便执行,并将其提供给重复执行部分22 (步骤A1)。重复执 行部分22确定所提供的程序代码的操作代码是否是要重复执行的命令(步 骤A2)。如果确定不是要重复执行的命令(步骤A2中的否),则将程序代 码不予改变地提供给命令读取/解码部分21,控制PE阵列1,并执行命令 过程(步骤A3、 A4)。
如果确定操作代码是要重复执行的命令(步骤A2中的是),则将重复 执行计数器224的值CR初始化为零(步骤A5),以及将程序代码提供至 操作数转换部分221、存储器地址转换部分222、以及操作代码转换部分 223 (步骤A6、 A7、 A8)。
命令读取/解码部分21接收操作数转换部分221、存储器地址转换部分222以及操作代码转换部分223转换的程序代码(步骤A9),对其进行 解译以控制PE阵列1,并执行符合每个命令的过程(步骤AIO)。
重复执行计数器224的值CR以1递增(步骤All ),并与重复执行指 定寄存器225的值NR比较(步骤A12)。如果重复执行计数器224的值 CR小于重复执行指定寄存器225的值NR (步骤A12的否),则过程返回 步骤A6、 A7和A8,并进行重复执行。在重复执行计数器224的值CR等 于重复执行指定寄存器225的值NR时(步骤A12中的是),则过程进行 至程序代码的下一个过程,确定针对所输入的程序代码的一个步骤结束必 要的重复执行数量。
将在以下详细操作数转换部分221、存储器地址转换部分222和操作 代码转换部分223执行的步骤A6、 A7、和A8。
2.1)操作数转换
图4是示出了根据示例性实施例的并行图像处理系统的操作数转换操 作的流程图。操作数转换部分221确定要成为包含在从命令读取/解码部分 21输入的程序代码中的输入源以及输出目的地的每个操作数是否要通过 操作代码和操作数位置转换(步骤B1)。如果不转换操作数(步骤B1中 的否),则不执行转换,以及照原样输出所输入的寄存器号。
如果要转换操作数(步骤B1中的是),则确定操作代码是否是相邻像 素值的获取命令(步骤B2)。如上所述,当重复执行相邻像素值获取命令 时,根据重复执行计数器224的值CR,存在如下两种情况 一种情况是 通过相邻PE保持要获得的相邻像素值,并将像素值从相邻PE转移到自有 PE, 一种情况是通过自有PE保持要获取的要获取的相邻像素值,并参照 其寄存器号被偏移了的寄存器。在这种情况下,由于需要根据命令是参照 左侧还是右侧的像素值的命令、以及转移源是相邻PE还是自有PE,对所 输入的操作数中指定的寄存器号进行偏移,所以当参照偏移计算表时需要 执行替代重复执行计数器值CR的过程。如果操作代码是相邻像素值的获 取命令(步骤B2中的是),则确定操作代码是用于获取左侧相邻像素值的 命令、或用于获取右侧相邻像素值的命令(步骤B3)。
如果操作代码是用于获取右侧相邻像素值的命令,则参照自有PE的 寄存器,以及如果(重复执行计数器值CR)小于(重复执行指定寄存器值NR-1),则不执行计数器值调整。如果(重复执行计数器值CR)等于
(重复执行指定寄存器值NR-1),则参照将像素保持在右侧相邻PE的左 端的寄存器,在这种情况下,将所输入的重复执行计数器值CR调整(转 换)为0 (步骤B4)。
如果操作代码是用于获取左侧相邻像素值的命令,则参照自有PE的 寄存器,以及如果(重复执行计数器值CR)大于O,则不执行计数器值调 整。如果(重复执行计数器值CR)等于O,则参照左侧相邻PE的寄存器, 但是参照成为左侧相邻PE保持的像素右端的寄存器值,因而将所输入的 重复执行计数器值CR调整(转换)为(重复执行指定寄存器值NR-1)(步 骤B5)。
其后,利用调整为必要密钥的重复执行指定寄存器225的值NR和重 复执行计数器224的值CR参照偏移计算表221.1 ,以及确定操作数的偏移 值(步骤B6)。将偏移值加至所输入的寄存器号的结果输出作为操作数转 换结果(步骤B7)。
2.2) 存储器地址转换
图5是示出了根据示例性实施例的并行图像处理系统的存储器地址转 换操作的流程图。存储器地址转换部分222确定所输入的操作代码是否是 成为存储器地址转换目标的存储器读取命令/存储器写入命令等(步骤 Cl)。
如果所输入的操作代码是要转换的命令(步骤C1中的是),则将通过 重复执行计数器224的值CR与待处理图像高度寄存器226的值NH相乘 获得的值计算为存储器地址的偏移值(步骤C2)。将其中所计算的偏移值 加至所输入的存储器地址上的值输出作为所转换的存储器地址(步骤C3)。 如果所输入的操作代码不是要转换的命令(步骤C1中的否),则不执行转 换且照原样输出地址。
2.3) 操作代码转换
图6是示出了根据示例性实施例的并行图像处理系统的操作代码转换 操作的流程图。操作代码转换部分223确定从命令读取/解码部分21输入 的操作代码是否是要转换的左/右相邻像素值的获取命令(步骤D1)。
当所输入的操作代码是左/右相邻像素值的获取命令时(步骤D1中的是),根据操作代码是右侧相邻像素值获取命令还是左侧相邻像素值获取 命令来执行下列操作(步骤D2)。
如果操作代码是用于获取右侧相邻像素值的命令,则如果重复执行计
数器值CR小于(重复执行指定寄存器值NR-1),则参照自有PE的寄存 器,因而将相同PE中的寄存器间移动命令输出作为转换后的操作代码。 如果重复执行计数器值CR等于(重复执行指定寄存器值NR-1),则参照 在右侧相邻PE的左端保持像素的寄存器,因而照原样输出用于转移右侧 相邻PE的寄存器值的命令,即所输入的操作代码(步骤D3)。
当操作代码是用于获取左侧相邻像素值的命令时,如果重复执行计数 器值CR大于0,则参照自有PE的寄存器,因而将相同PE中的寄存器间 移动命令输出作为转换后的操作代码。如果重复执行计数器值CR等于O, 则参照保持左侧相邻PE的寄存器,因而照原样输出用于转移左侧相邻PE 的寄存器值的命令,即所输入的操作代码(步骤D4)。
当所输入的操作代码不是左/右相邻像素值的获取命令时(步骤D1中 的否),不执行操作代码转换,并照原样将操作代码输出至命令读取/解码 部分21。
3.效果
如上所述,根据示例性实施例,当命令读取/解码部分21针对从程序 存储器3读取的程序代码的一个命令进行解译/执行时,通过重复执行部分 22执行与多个命令相对应的PE阵列控制。因而,利用一个命令描述分配 至每个像素PE的多个像素的过程,由此可以减少程序代码的数量。
由于操作代码转换部分223设置在重复执行部分22中,所以可以在 需要相邻左/右像素值交换的过程中,在一个命令中共同描述需要不同命令 的操作,即,当在一个PE中分配多个像素时所需要的相邻PE间的转移操 作、以及使用在自有PE中保持的像素值的操作。相应地,可以进一步减 少程序代码的数量,以及在不改变程序的情况下可以容易地实现在具有不 同数量的PE的SMID并行图像处理系统上的图像处理。
示例
现在将描述根据本发明的一个示例的并行图像处理系统的操作。作为 一个示例的是这样的并行图像系统,其中在具有256像素宽X256像素高的要处理的图像上使用PE阵列l,在该PE阵列1中一维排列了 128个(这
是宽度方向上像素数量的一半)PE。
图7是示出了根据本发明一个示例的用于操作并行图像处理系统的程
序的一个示例的视图。在该示例中,示出了获取具有每个像素相邻侧的像
素值的差的绝对值的过程。在该示例中,每个PE假定包括36个寄存器。 由于PE的数量是沿要处理的图像宽度方向的像素数量的一半,所以将每 两个像素分配至每个PE。因而,在程序执行之前,将NR=2存储在重复 执行指定寄存器225中,以及通过分成R (0)至R (17)和R (18)至R (35)两组来使用寄存器组13。
将要处理的图像存储在从MEM1地址起的本地存储器11中。在本示 例中,以分配至每个PE的两个像素执行过程,因而将这两个像素存储在 具有偏移256 (这是沿高度方向的像素数量)的地址中。对于分配至PE 的图像,从地址MEM1地址至地址(MEM1+255)存储了左侧的像素值, 以及从加上了偏移值256的地址(MEM1+256)至地址(MEM1+511)存 储了右侧的像素值。因而,将256 (这是沿要处理的图像的高度方向的像 素数量)存储在待处理图像高度寄存器226中。将所处理的结果图像存储 在MEM2地址之后。
将参照图7示出的程序作为一个示例、也参照图3的流程图,描述本 发明并行图像处理系统的操作。
首先,命令读取/解码部分21从程序存储器3读取第一行的程序代码 (LDMEM1,R (O)),并将其提供至重复执行部分22 (图3的步骤A1)。 第一行程序代码的操作内容是读取在本地存储器11的地址MEM1中存储 的值,以及将相同的值存储在寄存器R (0)中。由于程序代码的操作代 码部分是存储器读取命令(LD),所以重复执行部分22将该存储器读取命 令确定为要重复执行的命令,以及将重复执行计数器224设置为0 (步骤 A5)。
然后将程序代码提供至操作数转换部分221、存储器地址转换部分 222、以及操作代码转换部分223。操作数转换部分221参照重复执行指定 寄存器225和重复执行计数器224的值NR和CR,并从偏移值计算表221.1 获取0作为偏移值。通过将该偏移值加至所输入的寄存器号O上,然后获取结果"0",并将结果0提供至命令读取/解码部分21作为所转换的寄存
器号(步骤A6)。存储器地址转换部分222参照重复执行计数器224的值 CR,并且由于值CR是O,故在不执行转换的情况下将存储器地址MEM1 提供至命令读取/解码部分21 (步骤A7)。由于所输入的操作代码是存储 器读取命令(LD)而不是需要操作代码转换的左/右相邻像素值的获取命 令,所以操作代码转换部分223不执行操作代码转换,并照原样将所输入 的操作代码提供至命令读取/解码部分21 (步骤A8)。命令读取/解码部分 21基于从重复执行部分22输入的操作代码、存储器地址、以及操作数来 操作PE阵列1,并将本地存储器11的地址MEM1的内容存储在寄存器R (0)中(步骤A9、 AIO)。
接下来,重复执行部分22将重复执行计数器224的值CR增加1,且 将值CR设置为1 (步骤All)。之后,将重复执行计数器224的值CR=1 与重复执行指定寄存器225的值NR-2相比较,确定由于这些值不相同, 所以不将所述执行重复必要的次数,并且过程返回操作数转换部分221、 存储器地址转换部分222、以及操作代码转换部分223的执行(步骤A12)。
操作数转换部分221参照重复执行指定寄存器225和重复执行计数器 224的值NR和CR,以及从偏移计算表221.1中获得18作为偏移值。通 过将该偏移值加至所输入的寄存器号O,然后获得结果"18",以及将结果 "18"提供给命令读取/解码部分21作为转换后的寄存器号(步骤A6)。 由于重复执行计数器224的值是1,所以存储器地址转换部分222将给存 储器地址MEM1添加了偏移256的地址(MEM1+256)提供至命令读取/ 解码部分21 (步骤A7)。由于所输入的操作代码是存储器读取命令(LD) 而不是需要操作代码转换的左/右相邻像素值的获取命令,所以操作代码转 换部分223不执行操作代码转换,并照原样将所输入的操作代码提供至命 令读取/解码部分21 (步骤A8)。命令读取/解码部分21基于从重复执行部 分22输入的操作代码、存储器地址、以及操作数来操作PE阵列1,以及 将本地存储器ll的地址(MEM1+256)地址的内容存储在寄存器R (18) 中(步骤A9、 AIO)。
然后,重复执行部分22将重复执行计数器224的值CR增加1 ,且将 值CR设置为2 (步骤All)。之后,将重复执行计数器224的值CR与重复执行指定寄存器225指定的值NR相比较,以及由于值CR和NR相等, 所以确定完成必要的重复执行,且与第一行的程序代码相对应的过程结 束,以及过程进行至下一个命令过程(步骤A12)。
接下来,命令读取/解码部分21从程序存储器3读取第二行的程序代 码(MVLR (0) R (l)),且将其提供至重复执行部分22 (步骤A1)。第 二行操作代码的操作内容是将与右侧像素相对应的寄存器R (0)的值存 储在寄存器R (1)中。在将一个像素分配至一个PE的系统中,执行诸如 将存储在右侧相邻PE的寄存器R (0)中的值转移至自有PE、并将该值 存储在寄存器R (1)的操作,但是由于在本示例中,将两个像素分配至 一个PE,所以右侧相邻PE不持续保持右侧像素,将相对于分配至PE的 要处理像素的左侧像素的右侧像素的值存储在PE中的另一个寄存器中。 因而,右侧像素值的获取操作分为两种类型,g卩,根据要处理的像素,在 自有PE中读取寄存器值的操作,或将右侧相邻PE的寄存器R (0)转移 至自有PE的操作。由于操作代码是右侧相邻像素值的转移命令,所以重 复执行部分22将该操作代码确定为要重复执行的命令,并将重复执行计 数器224的值设置为0,之后,操作该操作数转换部分221以及操作代码 转换部分223 (步骤A2、 A5)。
操作数转换部分221针对程序代码中指定的输入源寄存器和输出目的 地寄存器执行操作数转换过程(步骤A6)。由于所输入的操作代码是右侧 相邻像值的获取命令(MVL),所以在输入源寄存器和输出目的地寄存器 中执行不同的操作数操作。针对输入源寄存器,参照重复执行指定寄存器 225和重复执行计数器224的值NR和CR,以及使用偏移计算表221.1获 取18作为偏移值。通过将偏移值加至输入寄存器号0,然后获取结果"18", 以及将结果"18"提供至命令读取/解码部分21作为所转换的输入源寄存 器号。针对输出目的地寄存器,通过在参照偏移计算表为0并执行偏移计 算时调整重复执行计数器值CR,获取偏移值"0",以及将偏移值"0"加 至所输入的寄存器号l,因而获取结果"l",然后将结果"l"提供值命令 读取/解码部分21作为所转换的输出目的地寄存器号。
操作代码转换部分223确定右侧相邻像素值获取命令(MVL)是需要 操作代码转换的命令,由于重复执行计数器224的值CR不等于(重复执行指定寄存器225的值NR-1),所以将命令(MVL)转换为相同PE中的 寄存器间移动命令,以及将该命令提供至命令读取/解码部分21(步骤A8)。 命令读取/解码部分21操作PE阵列1,以及将寄存器(18)的内容存储在 寄存器R (1)中(步骤A9、 AIO)。
重复执行部分22将重复执行计数器224的值CR增加1 ,且将值CR 设置至l (步骤All)。之后,将重复执行计数器224的值CR4与重复执 行指定寄存器225指定的值NR^2相比较,以及由于这些值不同,所以确 定没有完成必要的重复执行,以及过程返回操作数转换部分221和操作代 码转换部分223的执行(步骤A12)。
由于操作代码是右侧相邻像素值的转移命令(MVL),以及重复执行 计数器224的值CR等于(重复执行指定寄存器225的值NR-1),所以操 作数转换部分221执行转换从而转移右侧PE的寄存器R (0)的内容。因 而,针对输入源寄存器,通过在参照偏移计算表221.1为0并执行偏移计 算时调整重复执行计数器值CR,获取偏移值"0",以及将偏移值"0"加 至所输入的输入源寄存器号0,因而获取结果"0",然后将结果"0"提供 至命令读取/解码部分21作为所转换的输入源寄存器号。针对输出目的地 寄存器,执行类似于第一行的转换,根据重复执行指定寄存器225和重复 执行计数器224的值NR和CR,通过使用偏移计算表221.1,获取偏移值 "18",以及将偏移值"18"加至所输入的输出目的地寄存器号1,因而获 取结果"19",然后将结果"19"提供值命令读取/解码部分21作为所转换 的输出目的地寄存器号(步骤A6)。
尽管所输入的操作代码是要执行操作代码转换的命令,由于重复执行 计数器224的值CR等于(重复执行指定寄存器225的值NR-1),所以操 作代码转换部分223不执行转换,并将命令提供至命令读取/解码部分21 (步骤A8)。命令读取/解码部分21操作PE阵列1,以及将右侧PE的寄 存器R (0)的内容存储在寄存器R (19)中(步骤A9、 AIO)。
重复执行部分22将重复执行计数器224的值CR增加1 ,且将值CR 设置为2 (步骤All )。该值与重复执行指定寄存器225中指定的值NR相 同,因而确定终止必要的重复执行,与第二行的程序代码相对应的过程结 束,以及过程进行至下一个命令过程(步骤A12)。命令读取/解码部分21从程序存储器3读取第三行的程序代码(ABS R (0), R(l), R(2)),并将该程序代码提供至重复执行部分22。第三行 程序代码的操作内容是计算寄存器R (0)和寄存器R (1)之间的差的绝 对值,以及将计算结果存储在寄存器R (2)中。类似于第一行的情况, 重复执行部分22针对指定输入源和指定输出目的地的操作数执行转换以 执行重复操作,以及作为命令读取/解码部分21操作PE阵列1的事实的 结果,将寄存器R (0)和R (1)之间的差的绝对值存储在寄存器R (2) 中,以及将寄存器R (18)和R (19)之间的差的绝对值存储在寄存器R (20)中,以及过程进行至下一个命令过程。
命令读取/解码部分21读取第四行的程序代码(STMEM2, R (2)), 并将程序代码提供至重复执行部分22。第四行程序代码的操作内容是读取 存储在寄存器R(2)中的值,以及将该值写入本地存储器11的地址MEM2。 在重复执行部分22中执行类似于第一行的情况的存储器地址和操作数的 转换,命令读取/解码部分21操作PE阵列1,以及将寄存器R(2)的值 存储在本地存储器ll的地址MEM2地址中,以及将寄存器R(20)的值 存储在本地存储器ll的地址(MEM2+256)地址中。
因此,在本示例中,由于通过重复执行部分22执行与两个命令相对 应的PE阵列控制,所以相对于从程序存储器3读取的程序代码的一个命 令,可以减少程序代码的数量。此外,由于在操作代码转换部分223的重 复执行期间在部分循环中可以执行不同的命令,所以在与不能利用相同命 令的重复执行进行处理的相邻像素的交换过程中也可以进行自动重复执 行的操作,以及可以进一步减少程序代码量。
在本示例中描述了沿要处理的图像的宽度方向的像素数量与PE数量 的比率是2: 1的示例,但是比率不限于此,以及也可应用于沿要处理的 图像的宽度方向的像素数量大于系统中PE数量(例如3: 1, 4: 1,..., N- 1)的情况。
工业应用根据本发明,可以应用到具有视频图像、传感器图像等作为输入的图 像处理设备、图像检查设备、以及图像识别设备。
图1是示出了根据本发明一个示例性实施例的并行图像处理系统的功 能性配置的框图。
图2是功能性示出了在根据示例性实施例的并行图像处理系统中的操 作数转换部分配置的框图。
图3是示出了根据示例性实施例的并行图像处理系统的整体操作的流程图。
图4是示出了根据示例性实施例的并行图像处理系统的操作数转换操 作的流程图。
图5是示出了根据示例性实施例的并行图像处理系统的存储器地址转 换操作的流程图。
图6是示出了根据示例性实施例的并行图像处理系统的操作代码转换 操作的流程图。
图7是示出了根据本发明一个示例的用于操作并行图像处理系统的程 序的一个示例的视图。
1 PE阵歹U
2 控制器
3 程序存储器 10 PE
11本地存储器 12计算部分 13寄存器
21命令读取/解码部分 22重复执行部分 221操作数转换部分222存储器地址转换部分 223操作代码转换部分 224 重复执行计数器 225重复执行指定寄存器 226待处理图像高度寄存器
权利要求
1. 一种具有比要处理的数据条数少的数量的元件处理器的并行图像处理系统的控制方法,每个元件处理器处理多条要处理的数据;所述方法包括根据分配至元件处理器的要处理的数据条数,自动重复执行命令;当重复执行预定命令时,根据在各个重复执行期间要处理的数据来替换操作代码;以及通过所替换的操作代码控制元件处理器。
2. 如权利要求1所述的并行图像处理系统的控制方法,其中当处理 作为处理数据的多个像素时,根据分配至元件处理器的像素数量,自动重复执行命令; 当重复地执行相邻像素值获取命令时,根据要处理的像素的位置,利用用于从相邻元件处理器转移像素值的命令和用于获取自有元件处理器上的像素值的命令的组合,来替换操作代码;以及 通过所替换的操作代码控制元件处理器。
3. 如权利要求2所述的并行图像处理系统的控制方法,其中 根据分配至每个元件处理器的像素数量,划分寄存器组以便使用,以及重写操作数,以在重复执行中切换要使用的寄存器组;以及在存储器访问命令的重复执行中,将与分配至元件处理器的像素数量 相对应的偏移值加至地址上。
4. 一种具有比要处理的数据条数少的数量的元件处理器的并行图像 处理系统的控制设备,每个元件处理器处理多条要处理的数据;所述设备 包括重复执行装置,用于根据分配至元件处理器的要处理的数据条数,自 动重复执行命令;其中所述重复执行装置包括操作代码转换装置,用于当重复执行预定命令 时,根据在各个重复执行期间要处理的数据来替换操作代码,以及通过所 替换的操作代码控制所述元件处理器。
5. 如权利要求4所述的并行图像处理系统的控制设备,其中当处理作为处理数据的多个像素时,所述重复执行装置根据分配至所述元件处理器的像素数量,自动重复 执行命令;以及所述重复执行装置包括操作代码转换装置,用于当重复地执行相邻像 素值获取命令时,根据要处理的像素的位置,利用用于从相邻元件处理器 转移像素值的命令和用于获取自有元件处理器上的像素值的命令的组合, 来替换操作代码,以及通过所替换的操作代码控制所述元件处理器。
6. 如权利要求5所述的并行图像处理系统的控制设备,其中 所述元件处理器包括用于处理多个像素的一维处理器阵列结构;以及 所述一维处理器阵列结构是一维SIMD (单指令多数据)处理器阵列结构。
7. 如权利要求6所述的并行图像处理系统的控制装置,其中所述重 复执行装置还包括,操作数转换装置,用于根据分配至每个元件处理器的像素数量划分寄 存器组用于使用,以及重写操作数以在重复执行中切换要使用的寄存器 组;以及存储器地址转换装置,用于在存储器访问命令的重复执行中,将与分 配至元件处理器的像素数量相对应的偏移值加至地址上。
8. —种具有比要处理的数据条数少的数量的元件处理器的并行图像 处理系统,每个元件处理器处理多条要处理的数据;所述并行图像处理系 统包括重复执行装置,用于根据分配至元件处理器的要处理的数据数量,自 动重复执行命令;其中所述重复执行装置包括操作代码转换装置,用于当重复执行预定命令 时,根据在各个重复执行期间要处理的数据来替换操作代码,以及通过所 述所替换的操作代码控制所述元件处理器。
9. 如权利要求8所述的并行图像处理系统,其中当处理作为处理数 据的多个像素时,所述重复执行装置根据分配至所述元件处理器的像素数量,自动重复 执行命令;以及所述重复执行装置包括操作代码转换装置,用于当重复地执行相邻像 素值获取命令时,根据要处理的像素位置,利用用于从相邻元件处理器转 移像素值的命令和用于获取自有元件处理器上的像素值的命令的组合,来 替换操作代码,以及通过所替换的操作代码控制所述元件处理器。
10. —种用于使配置了具有比要处理的数据量少的元件处理器的并行 图像处理系统的计算机执行如下功能的程序,其中每个元件处理器处理多 条要处理的数据根据分配至所述元件处理器的要处理的数据条数,自动重复执行命当在重复执行步骤中重复执行预定命令时,根据在各个重复执行期间 要处理的数据来替换操作代码,以及通过所替换的操作代码控制所述元件处理器。
11.如权利要求io所述的程序,用于当处理作为处理数据的多个像 素时,使计算机执行以下功能-根据分配至所述元件处理器的像素数量,自动重复执行命令;当在重复执行步骤中重复执行相邻像素值获取命令时,根据要处理的 像素的位置,利用用于从相邻元件处理器转移像素值的命令和用于获取自 有元件处理器上的像素值的命令的组合来替换操作代码;以及通过所替换的操作代码控制所述元件处理器。
全文摘要
[问题]为了减少当在具有比沿要处理图像宽度方向的像素数量少的数量的PE的一维SIMD并行图像处理系统中处理整个图像时所需要的程序代码数量。[解决问题的手段]用于控制PE阵列1的控制器2包括命令重复执行部分22,所述命令重复执行部分22包括操作数转换部分221、存储器地址转换部分222以及操作代码转换部分223。当命令读取/解码部分21读取和执行存储在程序存储器3中的程序代码时,所述重复执行部分22确定程序代码以使操作数转换部分221、存储器地址转换部分222以及操作代码转换部分223根据命令执行转换,从而重复执行适配于分配至PE的多个相关像素的一个命令程序描述,因而可以减少程序代码量。
文档编号G06T1/20GK101416216SQ200680054119
公开日2009年4月22日 申请日期2006年12月5日 优先权日2006年3月30日
发明者古贺拓也 申请人:日本电气株式会社