具有本地寄存器的处理元件阵列的制作方法

文档序号:7667829阅读:274来源:国知局
专利名称:具有本地寄存器的处理元件阵列的制作方法
技术领域
本发明涉及一种具有用于输入数据的本地寄存器的处理元件阵列。

背景技术
运动估计(ME)是需要大量处理能力的时间严格的应用的示例。因此,通常以大规模并行的方式,作为单指令多数据(SIMD)架构,以硬件来实现专用电路。这些架构通常对于每个要计算的值具有一个处理元件(PE),例如,用于将当前图像的像素与参考像素相比较。通常,前一图像中的相应像素及其邻居用作参考像素。更一般而言,任意的一维、二维或多维数据集用作处理的输入。针对ME的PE可访问当前像素和存储在存储器中的多个参考像素。通常从大的图像存储器中将像素拷贝到可更快速访问的较小的操作存储器中。这种拷贝操作花费相对较长的时间,因为大的图像存储器较慢。操作存储器包含多个块,这些块根据所采用的编码方案而可用作用于预测当前块的参考。块通常具有16×16、8×8或4×4像素的方形结构。
通常,积累用于像素块的PE的结果,以用于计算当前块和特定参考块之间的相似度,并且随后的电路确定最相似的参考块,然后基于该块来对当前块进行编码。
因此,PE需要访问分布在操作存储器各处的多个参考像素,并且操作存储器与当前块相比相对较大。如果要避免冗余的像素存储,则需要具有复杂连接电路的架构。例如,US2003/0174252使用可编程纵横开关来将像素值从存储器子系统分配到PE。位掩码控制PE可访问哪些像素数据。纵横开关通常包含深层次的大量多路选择器元件,这对于较高的操作频率而言是不利的。
通常,以硬件,例如ASIC来实现ME电路。然而,已知的实现方式通常具有在PE和存储器子系统之间的连接路径长且复杂的问题,并且具有对最大操作频率的限制。因此需要一种优化的架构。


发明内容
本发明提供一种架构,优化了PE及其各自的存储器子系统之间的时间严格的信号路径。已经认识到,在现有技术的实现方式中,这些信号路径实现两个不同的功能,即参考像素的重新排序(这较慢)以及重排的参考像素与PE的连接(需要很快)。原理上,主要通过将这两个功能分离而实现根据本发明的优化。
本发明的一个方面是一种多个数字处理元件的阵列,其中,数字处理元件是用于处理数字输入数据并提供数字输出数据的硬件结构,所述阵列为一维或多维,并且每个数字处理元件与用于保持输入数据的多个寄存器相关联,(例如最初)可以在加载模式下从外部数据源加载输入数据,并且数字处理元件的多个寄存器中的每一个通过可切换连接与至少两个寄存器相连,所述至少两个寄存器与阵列的每一维中的两个邻接处理元件相关联,其中,可将可切换连接切换到操作的不同移位寄存器模式,并且与处于阵列边界处的处理元件相关联的寄存器和与处于阵列的相对边界处的处理元件相关联的寄存器相连。
在本发明的一个实施例中,移位寄存器模式包括两个或多个子模式,其中,子模式允许向所述阵列的每一维的每个方向移位。例如,对于一维,“右”和“左”的不同子模式是可能的,而对于至少二维,“北”、“南”、“东”和“西”是可能的。
在本发明的一个实施例中,可在第二组寄存器处于移位寄存器模式时将第一组寄存器切换到加载模式。在本发明的一个实施例中,作为“短移位寄存器”模式的另一模式包括与不处于阵列边界处的处理元件相关联的寄存器和与处于阵列边界之一处的处理元件相关联的寄存器相连。因此,仅仅阵列的一些PE的本地寄存器被设置为移位寄存器,而不使用其它寄存器,例如可加载其它寄存器。这在加载花费的时间长于一个时钟周期的情况下是有利的。
在本发明的一个实施例中,由时钟信号来操作所述阵列,并且按照与移位寄存器模式下的移位相同的时钟周期来执行PE的所述处理。
在本发明的一个实施例中,在一维或多维上按照顺序布置输入数据,并且根据所述顺序,存储在与特定处理元件相关联的多个寄存器中的输入数据不是邻居。
在本发明的一个实施例中,在相邻数据块中布置输入数据,并且与处理元件相关联的多个寄存器用于存储来自不同块的输入数据(即每个寄存器存储来自不同块的数据)。
在根据本发明一个实施例的架构中,按照二维结构来布置多个PE,并且每个PE都具有本地存储装置。每个PE的本地存储装置包括在输入数据字段(例如参考图像)中不是邻居的多个参考值(例如像素)。相反,参考像素属于参考图像的不同块,这对于不同编码方案可以不同。取决于所定义的搜索区域,参考像素之一可直接与当前像素相对应,即该像素在参考图像中的坐标与当前像素在当前图像中的坐标相同。例如,其它参考像素可来自参考图像中的邻接块或宏块。它们被用于大于8×8像素的更大的块尺寸。
在二维阵列结构中,每个PE与其直接邻居相连,从而可与任意邻接PE进行像素值的移位,这实现了本发明实施例中的二维移位寄存器。这允许在多个参考块上对当前块进行移位。
此外,在本发明的一个实施例中,每个PE的存储器子系统包含用作参考像素加载区域的扩展区域,即这次不与当前像素比较而下次要比较的像素的存储区域。这允许从主图像存储器中相对较慢地加载像素,因为对扩展区域的写入与对存储器的主要搜索区域的处理/移位不互相干扰。在这种模式下可独立对主要搜索区域进行移位。由于这种加载能力,可以以任意方式扩展参考块,同时处理其它数据。
所附权利要求、下面的说明书和附图公开了本发明的有利实施例。



参考附图来描述本发明的示范性实施例,附图中 图1a示出了8×8PE阵列; 图1b示出了PE的本地存储器; 图2示出了主要搜索区域、扩展区域的结构以及有关像素对PE的分配; 图3示出了边界和非边界PE的邻居关系; 图4示出了特定通信寄存器的电路;以及 图5示出了PE的结构、其通信寄存器和输入数据字段区域。

具体实施例方式 对于运动估计,搜索前一场/帧中给定块的最佳匹配位置。为了实现该目的,必须将给定块与搜索区域中的多个位置进行比较。为了实现所需处理速度,使用对于每个像素具有一个PE的并行硬件。如图1所示,这可以实现为PE的二维阵列或网格。在本发明的该实施例中,每个PE具有9个专用寄存器X0、…、X8,每个寄存器均保持参考像素值。例如,一个寄存器X0保持参考图像的相应块的相应像素,三个寄存器X1、X3、X4保持可用于例如8×16、16×8、16×16的更大块尺寸的参考图像的邻接块的相应像素,并且五个寄存器X2、X5、X6、X7、X8用于缓冲如下所述移入或移出16×16块X0-X1-X3-X4的像素。例如,邻接参考块是被称作东X1、南X3和东南X4的块。此外,一个寄存器R0保持要搜索的当前像素。此外,多个额外的寄存器R1-R9可用于该目的。所有这些寄存器都在PE本地可用。因此,PE内这些寄存器和处理单元之间的连接结构非常简单。此外,如果当前块大于8×8,每个PE可具有保持例如当前块的三个额外像素的额外寄存器R1、R2、R3。这允许在例如8×16、16×8或16×16的块上进行块匹配。
考虑单个像素来自于每个PE本地存储的情况下,可以更好地理解所述结构。图2示出了参考图像的24×24像素区域,其中每个像素本地存储在PE网格中。在该示例中,参考图像的主要搜索区域包括4个8×8的块。例如,主要搜索区域的每个块的左上角本地存储在PE00中,在寄存器X0、X1、X3和X4中。按照相同的方式,将其它参考像素分配给其它PE。
在运动估计过程中,确定当前块与参考块之间的相似度,例如绝对差之和(SAD)。如果特定PE的8×8块的当前像素存储在本地寄存器R0中,则PE计算绝对差| R0-X0|,并且上级处理器(例如累加器)按照SAD=∑|R0-X0|,计算所有PE的SAD。在另一示例中,8×16块的当前像素存储在本地寄存器R0和R1中。PE以一个或两个步骤来计算绝对差|R0-X0|和| R1-X1|,这取决于PE硬件,并且累加器计算SAD=∑|R0-X0|+|R1+X1|。对于这种搜索,邻接参考块的像素在PE本地可用是有利的。因此,对于处理8×8数据块的应用,上述8×8 PE网格(每个PE对于当前值具有四个寄存器R0、…、R3)被优化了,而且也可处理8×18、16×8或16×16数据的块,这对于当前所用的ME算法也是一样的。对于其它应用,修改PE个数和/或每个PE的寄存器个数是有利的。
对于ME,存储SAD,移动搜索区域,并重复SAD计算。确定具有最小SAD的块,并最终将其选择作为用于确定运动矢量的参考块。通常通过相对彼此移位搜索区域和参考区域,来进行搜索区域的移动,这通常是复杂的过程,但是对于本发明的架构而言很简单。根据本发明的一个方面,在较小的当前区域保持不动的同时移位较大的搜索(或参考)区域,直到遍历了所有位置。因此,R0-R3寄存器中的当前值对于每个PE而言保持相同,而修改“专用”寄存器(X0、…、X8)中的值。
根据本发明的一个方面,这些“专用”寄存器(X0、…、X8)通过可切换连接与邻接PE的相应“专用”寄存器相连,实现了二维移位寄存器,可以进行北、东、南或西移位。由于PE可通过这些寄存器(X0、…、X8)将它们的值通过通信传递到邻接的PE,所以这里这些寄存器被称为通信寄存器。可切换连接典型地使用多路选择器。多路选择器是简单的,例如6∶1,并且通过短线连接到邻居PE。因此,高频操作是可能的。当完成PE的处理步骤并且要将当前块移动到搜索区域中的下一位置时,仅通过相应地控制PE网格的所有多路选择器,就能(沿当前所用方向)将每个PE的像素移位到其邻居PE。显然,非常容易改变搜索方向,即通过不同的多路选择器控制。下面描述边界PE的邻居映射。
因此,获得了移位寄存器,其提供了在PE之间交换搜索数据的有效方式。这允许逐个像素地移动搜索区域像素。例如,沿“北”方向的移位操作会将特定PE(例如PE11)的像素移位到其北面邻居PE01的相应寄存器。移出搜索区域的像素被输入网格的相反一侧(尽管这也被称作“旋转”,但是在此使用术语“移位”)。例如,在“北”移位中,来自PE01的像素被移位到PE71。对于“南”移位也是这样,对于“东”和“西”移位也是一样的。因此,所有PE的通信寄存器构成了二维环形缓冲器。然而,由于8×8块,该结构是复杂的这从图2中可见,图2还示出了取决于移位方向的可能的环形缓冲器的结构。例如,当配置为在所有块上“东”(=右)移位时,保持最上一行像素的一个环形缓冲器包含PE00-PE07的所有X0寄存器、相同PE的所有X1寄存器以及相同PE的所有X2寄存器。如图3所示,该行中的最后一个寄存器PE07X2与第一个PE00X0相连,这构成了环形结构。相应地布置搜索区域的其它行,对于列也是一样的。
在一次搜索中,例如,沿行扫描顺序或蛇形扫描顺序,在8×8块内的所有可能的位置上移动搜索区域。例如,在沿“南”方向的七次移位操作之后,PE00X0、PE10X0、…、PE70X0的内容被移动到PE70X0、PE00X3、…、PE60X3。使用蛇形扫描顺序意味着下面进行“东”移位,因此PE70X0、PE00X3、…、PE60X3的内容被移动到PE71X0、PE01X3、…、PE61X3,以计算下一个SAD,然后进行八次“北”移位、又一次“东”移位,如此等等。第一行/列仅需要七次移位,因为在加载数据时已经进行了第一次计算。其它类型的蛇形扫描可使用其它算法,例如(7×E)-S-(8×W)-S-(8×E)-S-…或者(7×N)-W-(8×S)-W-(8×N)-W-…(其中例如,E是一次“东”移位和PE计算,等等)。将参考图像的当前未用部分移位到扩展寄存器X2、X5、X6、X7、X8,并且稍后可移位回来。也可使用其它类型的扫描顺序,例如从中间块开始的螺旋扫描。有利地,由于PE的寄存器是同等的,所以这在所提出的结构中是可能的,因此,例如,搜索区域内要搜索的8×8源块可存储在R0寄存器中,但是例如也可存储在R3寄存器中,这取决于所采用的搜索策略。类似地,扩展区域也可处于上侧或左侧,例如对于螺旋扫描而言需要这样,这同样是因为PE内的通信寄存器X0-X8具有同等结构。
这种结构的一个特殊的优点在于可在边缘处扩展网格或阵列,而不限制搜索区域的大小,因为仅有最多四个通信寄存器被用作当前搜索位置。如图2所示,这四个寄存器是每个PE的X0、X1、X3和X4。例如,如果处理16×16的块,则每个PE在下一次移位之前执行四次计算,即|R0-X0|、|R1-X1|、|R2-X2|和|R3-X3|。对于这些计算,可能需要四次循环。然后,假设相应的扩展区域事先已经加载有有效数据,如上所述地进行移位。
例如,对于“东”或“西”移位,事先必须加载右扩展区域(通信寄存器X2和X5),而对于“北”或“南”移位,事先必须加载底部扩展区域(通信寄存器X6和X7)。在八次移位之后,各个扩展区域的通信寄存器仅保持了最初处于主要搜索区域的数据。如果使用蛇形扫描顺序,则会将这些数据移位回去。然而,对于搜索区域的扩展,所经过的时间(4×8循环)可能已被用于从主要图像存储器加载新的扩展区域数据。这是有利的,因为不需要在特定时刻访问主要图像存储器,而可在这32个循环期间的任何时刻进行访问。这允许在主要图像存储器很慢或很繁忙时同样进行ME的无缝操作。来自主要图像存储器的新数据可收集在中间缓冲器中,并在第八和第九次移位之间,在单个步骤中被拷贝到扩展区域的通信寄存器中。
根据本发明的架构对于其它类型的处理也是有利的,尤其是对于图像处理,例如二维滤波。PE的数目和/或每个PE的通信寄存器数目根据实际应用而不同。在任何情况下,PE都具有本地寄存器(通信寄存器),本地寄存器可动态地连接成用作在移位时不会丢失数据的环形缓冲器的不同类型的移位寄存器。使用这种寄存器结构,可以对较大的输入数据字段进行操作,而不需要连续地访问该输入数据字段的源。这通过将当前操作步骤的输入数据移位以便在下一操作步骤中在另一或相同PE中重新使用而实现。因此,沿PE移动输入数据,而不是沿输入数据移动PE及其当前的中间结果。
图4示意性地且仅在原理上示出了PE43的特定通信寄存器X1的电路,在图3中同样突出了该通信寄存器。该寄存器PE43X1通过多路选择器MX43X1连接到PE43的本地寄存器及其邻居,即南向的PE53X1、西向的PE42X1、北向的PE33X1以及东向的PE44X1。取决于多路选择器的位置,由控制信号CRTL控制,沿各个方向移动值。此外,保持当前值需要一个多路选择器位置,即在不执行移位时需要一个多路选择器位置。在一个实施例中,控制信号CTRL对于所有通信寄存器利PE都是相同的。在另一个实施例中,可以仅移位图2的24×24个寄存器的一部分,因此不同控制信号用于PE阵列的不同部分。例如,对于东或西移位,也许不需要对底部的扩展区域进行移位,因为不使用该部分。在8×8的块模式中,对块的一行或一列进行移位就足够了。在这种情况下,使用“短移位寄存器”模式,其中,与不处于阵列边界处的处理元件相关联的寄存器和与处于阵列的边界之一处的处理元件相关联的寄存器相连(图4未示出该模式)。
图4还示出了PE的实际处理单元PU43可通过另一多路选择器MX43X与其任意本地通信寄存器相连。基于当前模式而切换该连接。例如,如果源块位于8×8块模式的左上角,则所述本地通信寄存器仅仅是X0,而在16×16块模式的情况下,所述本地通信寄存器是X0、X1、X3和X4。然而,由于所有寄存器X0、…、X8是等同的,所以源块可位于任意处。由于仅需要每个PE的四个通信寄存器来构建公共的16×16宏块,所以可将一行或一列用于从存储器加载新数据以便扩展搜索区域。示例地,需要8个循环来旋转一个块,但是仅需要3个循环来加载新的行或列。因此,可动态地将搜索区域扩展到不受限制的大小,而不需要额外的循环。
如图4所示,PE的九个通信寄存器中的每一个仅具有PE之外的四个连接。所有连接对于PE的直接邻居而言是本地的,并因此很短。信号通路从寄存器开始,并结束在目标寄存器中,在此之前仅需要很小的多路选择器。因此,芯片上的实现的路由和定时闭合相对比较容易。
此外,由于PE与其邻居相连,并且边界是环绕的,所以在边界处不需要额外的循环。例如,PE07X2的“东”邻居是PE00X0,而其“北”邻居是PE77X8。
图5在顶部示出了与图2右下角相对应的图1PE阵列PE00、…、PE77,在第二层示出了PE的通信寄存器PE00X0-X8、…、PE77X0-X8,并在第三层示出了输入数据字段的一部分。由于九个通信寄存器保持了来自不同块的像素数据,所以这些像素不是参考图像中的邻居,而是当前九个块的一种粗略表示。原理上,该架构将多块的数据结构映射到单块的数据结构上,例如将3×3块的参考区域映射到单个PE块。图5未示出通信寄存器之间的互连。
在实际实现中,可在与移位相同的循环中执行处理。因此,如果对于8×8的块模式,如上所述可在一个循环中执行处理,则数据可以被连续地移位并同时被PE处理。
根据本发明的PE结构的编程需要简单但是专门的命令,例如选择移位模式的命令或对于不同移位模式的不同命令、从外部(中间)存储器将数据加载到一个扩展区域的命令等。
根据本发明的架构例如对于一维滤波也是有利的。如果输入数据排列成一行,例如单行图像数据像素,则它们可以被组织成n个连续值的组。代替通常一个寄存器与一个PE相关联,有两个或多个寄存器与每个PE相连。PE的这些寄存器中的每一个存储来自不同组输入数据的数据。PE通过多路选择器依次连接到其每个输入寄存器,并计算各个输出值。然后,将值移位到邻接的PE。不同的PE可执行不同的操作,或者可对不同的数据集合执行相同类型的操作。根据本发明的结构减少了数据加载时间,缩短了输入数据的连接(对于高速电路是有利的),并且由于可被切换或配置为处理不同的处理方案,所以是灵活的。
本发明对于对输入数据阵列(甚至是二维或多维输入数据字段)进行操作的各种处理结构都是有利的,尤其在总是执行相同类型的计算的情况下。
权利要求
1.一种多个数字处理元件(PE00、…、PE77)的阵列,其中,数字处理元件是用于处理数字输入数据并提供数字输出数据的硬件结构,所述阵列可以为一维、二维或更多维,其中
-每个数字处理元件与用于保持输入数据的多个寄存器(X0、…、X8)相关联,其中可在加载模式下从外部数据源加载输入数据;以及
-数字处理元件的多个寄存器(X0、…、X8)中的每一个通过可切换连接与至少两个寄存器相连,所述至少两个寄存器与阵列的每一维中的两个邻接处理元件相关联,其中,可将可切换连接切换到操作的移位寄存器模式,并且与处于阵列边界处的处理元件相关联的寄存器和与处于阵列的相对边界处的处理元件相关联的寄存器相连。
2.根据权利要求1所述的阵列,其中,所述移位寄存器模式包括两个或多个子模式,其中子模式允许向所述阵列的每一维的每个方向移位。
3.根据权利要求1或2所述的阵列,其中,可在第二组寄存器处于所述移位寄存器模式时将第一组寄存器切换到所述加载模式。
4.根据权利要求1-3之一所述的阵列,其中,在作为“短移位寄存器”模式的另一模式中,与不处于阵列边界处的处理元件相关联的寄存器和与处于阵列边界之一处的处理元件相关联的寄存器相连。
5.根据权利要求1-4之一所述的阵列,其中,每个处理元件具有用于保持当前数据的至少一个第二寄存器(R0),其中,在第一寄存器处于所述移位寄存器模式时不对第二寄存器的内容进行移位。
6.根据权利要求1-5之一所述的阵列,其中,由时钟信号来操作所述阵列,并且按照与所述移位寄存器模式下的移位相同的时钟周期来执行处理元件的所述处理。
7.根据权利要求1-6之一所述的阵列,其中,所述处理元件阵列为二维,每一维具有八个处理元件,并且每个处理元件具有九个用于保持输入数据的所述寄存器(X0、…、X8)。
8.根据权利要求1-7之一所述的阵列,其中,在一维或更多维上按照顺序布置输入数据,并且根据所述顺序,存储在处理元件的多个寄存器中的输入数据不是邻居。
9.根据权利要求8所述的阵列,其中,在相邻数据块中布置输入数据,并且与处理元件相关联的多个寄存器(X0、…、X8)用于存储来自不同块的输入数据。
10.根据权利要求1-9之一所述的阵列,其中,数字输入数据和数字输出数据是多比特值。
11.根据权利要求10所述的阵列,其中,所述多比特值是图像的像素值。
全文摘要
本发明提供了一种具有本地寄存器的处理元件阵列。通常以大规模并行的方式,作为单指令多数据(SIMD)架构,以硬件来实现专用图像处理电路。已知的实现方式具有在处理元件和存储器子系统之间的连接路径长且复杂的问题,并且产生对最大操作频率的限制。图像处理的优化架构具有按照二维结构布置的处理元件(PE00、…、PE77),并且每个处理元件具有包含多个参考像素的本地存储装置(X0、…、X8),所述多个参考像素在参考图像中不是邻居。相反,参考像素属于参考图像的不同块,这对于不同的编码方案可不同。
文档编号H04N7/26GK101202914SQ200710196639
公开日2008年6月18日 申请日期2007年11月29日 优先权日2006年12月1日
发明者马尔特·博苏姆, 克劳斯·格德克, 马尔科·格奥尔基 申请人:汤姆森许可贸易公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1