并行数据处理及重排 本发明涉及一种设备、一种方法以及一种照相系统,其中信号在一个处理单元阵列中进行处理,以获得数据的并行流。
在Sweden,Linkoping Teknikringen 2C,SE-583 30,IVPIntegrated Vision Products AB公司的MAPP2200产品资料中,描述了在同一个半导体芯片上一个传感器以及一个通用用途的图象处理器组合。这是一个包含一个256×256个传感器全矩阵以及256个处理器单元的二维智能视觉传感器。该机内的处理器阵列并行处理一整行像素。在一整条图像线的灰度等级上并行执行一个模-数转换。在一个图像行或者一个寻址寄存器中的所有像素是同时处理的。该并行处理是在该图像寄存器上逐位执行的。一次计算的结果保存在累加器中,或者,如果该指令是一条算术指令的话,也保存在进位寄存器中。这些寄存器的内容能够移动到一个存储器寄存器中,作为下一个指令的第二操作数,或者经由状态寄存器从控制器存取。该现有技术的传感器用于目标识别且不适于视频通信。该现有技术的传感器没有公开一种用于彩色图像的传感器的一种并行实现,其中这种传感器合乎视频通信的需要。
本发明的一个目的是提高并行数据处理的一种灵活性。为此,本发明提供了如在独立权利要求中定义的那样一种设备、一种照相机系统以及一种方法。在从属权利要求中定义了有利的实施例。
本发明地一个第一实施例的特征在于:该设备进一步包含用于以一个块式样(block-wise)的方式重排(SHUFFLING)该并行数据流的装置。
在高度并行处理中,灵活性,尤其就数据流而言,是显著受约束的。本发明结合并行数据处理,还提供了在视频处理设备中广泛使用的块级别计算。
在一个实际的实施例中,该数据重排装置包含一个可寻址的交换存储器矩阵阵列,它们的每一个都与一个预定编号的处理单元相连。该交换存储器矩阵能够以一个块式样的方式重排该数据。因为该交换存储器是并行排列的,所以控制是非常有效的。
本发明进一步提供一种包含依据本发明的一个传感器和一个设备的照相机系统。该照相机系统是最佳应用于视频通信。视频通信应用程序现今要求一个合理数量的块级别计算,用于,例如压缩。本发明提供了一个高度并行结构的一种扩展,来使,例如块级别计算变得可能。
参考在下文中描述的实施例,本发明的上述方面及其他方面将变得明显以及将被解释清楚。
在附图中:
图1显示了根据本发明的一个具有一高并行处理体系结构和数据重排装置的照相机系统;
图2显示了一个滤色阵列;
图3显示了根据本发明的一种线性处理阵列的一个结构;
图4显示了根据本发明的一个数据重排装置结构;
图5到8显示了图4所示的数据重排装置的不同的工作状态;以及
图9和10显示了其中两个相邻开关矩阵已经耦合的数据重排装置的工作状态。
这些附图仅仅显示了那些理解本发明所必需的元件。
图1显示了本发明的一个最佳实施例,即,根据本发明的一个具有一高并行处理体系结构和数据重排装置的照相机系统;该照相机系统包含一个具有一并行模-数转换器(ADC 1...320)的图像传感器阵列S。该ADC和一个线性处理器阵列(LPA 1...320)以及一个行存储器(LM)相连。该照相机系统的各个部分由一个中央处理单元(CPU)来控制。该照相机系统的最佳是使用CMOS图像处理,在CMOS图像处理中,固态CMOS传感器和数字信号处理(DSP)集成在单个IC芯片上。
即使没有数据重排装置,图1的实施例已经能够执行像素级别的图像处理和过滤,例如死像素替换、自动加白、自动曝光控制等等。
然而,一个高等级的并行性会导致在执行更复杂的块级别算法,例如DCT和锯齿形扫描时,会具有很小的灵活性。本发明因此提供了一个高并行体系结构的一种扩展,允许该信号处理设备有效地执行块级别操作,包括独立的递归离散余弦变换(DCT)、色度二次采样、以及锯齿形(ZZ)扫描等等。至此,利用用于以一种块式样方式重排数据的装置,该照相机系统已经被增强了。该数据重排装置(TSMM1...80)和LPA以及行存储器LM相连。在一个实际实施例中,这些数据重排装置包含一个换位开关存储器矩阵(TSMM)阵列。该TSMM是一个附加到该原来结构中的块级别存储器单元。TSMM设计用来提高在处理单元和行存储器LM之间的数据流。它们可以被认为是行存储器LM具有增加功能的一种扩充。该TSMM结合处理单元,并能够在它们之间进行存储和通信。在一个更进一步的实施例中,TSMM绑定一个相邻的TSMM,并且能够把数据传递到一个相邻的TSMM中。其他的优点有,TSMM可以转置数据并且能够访问四个处理器的输出,即,块式样的随机寻址。因为TSMM每个和4个处理器单元相连,所以在这个实施例中TSMM的总数为80个。
由于整体上的并行体系结构,不仅仅获得了高的计算性能,同时也具有良好的电源消耗功能。芯片内存储器的数据带宽不是由作为芯片外存储器对应物的、I/O管脚的数目所限制。数据带宽限制可能由存取等待时间要求或者串话所引起,但是这些问题可以通过减小存储器单元的时钟要求而得到缓解。这可以利用充分的并行性和恰当的结构设计来完成。利用一个足够低的时钟频率,可以降低工作电压来获得更进一步节电量。能量消耗的主要减少是归因于数据是从行存储器LM中并行获得的原理。在顺序处理器中,存储器存取耗费了电源的大部分。在一个顺序处理器中,为了运行一个算法,必须对每个像素的存储器都要进行若干次存取。首先,在LPA中,简单的因为能够进行倍数计算,利用单次读/写动作就可以立刻让所有的像素值变得可用,所以每个像素访问存储器的数目就减少了。其次,线存储器LM的电源效率和访问像素存储器相比要高出3倍。电能效率的一部分更进一步来自于ADC和LPA的并行实现。虽然计算是否是顺序执行还是并行执行和计算能力无关,但是通过低速的共享项目例如控制解码和读取指令,可以降低电源消耗。
该照相机系统可应用于电子静止图像(ESP/DSC),数字视频录像摄像机,桌面摄像机,可视电话,监视等等方面。所有这些产品的特点为低成本和一个高级别的集成度。这些应用程序的某一些也要求低能耗。本实施例支持典型的信号处理任务,如:模数转换(ADC)、图像增强和变换,以及大量的控制功能例如白色均衡和曝光时间控制。
事实上有两种可编程数字处理器:用于基于线算法的中央处理器和用于基于像素算法的线性处理器阵列(LPA 1...320)。两种处理器都从一个程序存储器(PM)获得它们的指令。非可编程处理器和控制器可用来提供行和列地址选择器、一个ADC控制器、一个I2C控制处理器以及一个串行处理器(SP)。这些处理器可以从CPU接受参数用于二次采样、感兴趣区域选定、镜像、增益、黑色电平、伽玛以及视频输出格式。该串行处理器经由一个列选择器(CS)与行存储器LM相连。
图像传感器S可以是一个活动像素的VGA(640×480)矩阵。在通过在一个像素的电容上施加某个电压而复位它之后,入射光将开始降低这个电荷。在某个曝光时间之后,读取在该电容上的剩余电压,其反映了照明度或者说是″像素值″。曝光时间是由在复位和读出该像素之间的延迟来控制。该传感器能够被看作是一个具有图像行做为随机寻址字的大模拟存储器。这意味着虽然在一整行内的所有像素(即640个)被同时读出,随机选择一个感兴趣区域(ROI)仍然是有可能的。
如图2所示,这些像素可以被一个光学滤色阵列所覆盖。这个过滤器为每个独立的像素指定一个红色(R)、绿色(G)或者蓝色(B)灵敏度。在该滤色阵列中的一行都包含两个交替的不同颜色。因为每个时钟周期仅仅处理一个颜色,每个处理单元共享相当于不同的颜色的两列是有利的。因此该并行处理器阵列LPA包含320个最佳的相同处理单元,即一个处理单元用于两个列。这种共享相当于不同颜色的列的方法,取决于应用的滤色器。例如,当一个滤色器在一行中提供三种不同的颜色时,每个处理单元可以共享三列。
由于CMOS传感器是在行的基础上读出的,最好是使用一个并行的ADC。所有的列是同时转换的。由于低采样速率,事实上,一个公共部分能够被所有ADC所共享,而且可以允许一个固定的偏移量,当与视频速度ADC相比时,并行ADC能够设计电源损耗非常有效率。在该ADC中,每列具有一个比较器,其允许在一组锁存器中存储输出值。每个比较器的一个输入和要数字化的信号连接。当在比较器的另一个输入处施加一个来自一综合的斜波发生器的斜波信号时,该输入信号保持稳定。当该斜波信号到达该输入值时,比较器将进行切换并且存储在那时施加到锁存器上的数字值。通过将该锁存器和一个全局计数器连接,该计数器某种程度上和斜波发生器同步,转换时间(以及由此的模拟输入值)能够被映射到一个数字值上,并且被贮存在该锁存器中。并行ADC的一个缺点是,参数的传播会导致对于相等的强度列之间的反应会不同。这显示其自身为在图像信号中基于列的“固定图像噪声″(FPN)。这个列FPN可以由一个初始程序进行估计,并且保存在一个行存储器中,用于在正常运转模式中进行抵消。像素级别的FPN由众所周知的的两次取样方法进行纠正,其中模拟减法已经集成到ADC中。因为滤色阵列,两个列能够共享一个ADC单元。以这种方法,就可以出现模拟的多路复用。当想要数字多路复用时,就需要每个列一个ADC。
图3显示了一个处理器阵列LPA 1...320的一个实际实现。通过左右通信信道COMM和多路复用器MUX1...320,每个处理单元能够直接从六个列中获得数据。从行存储器LM或者一个给定TSMM中读取的数据能够被重定向到相应的处理单元或者在左边或者右边的处理单元,这样就提供了在处理单元LPA1...320之间的有限通信。在一个给定的时钟周期中,一个数据字能够被移入到邻近的处理单元中。所有的处理单元都在它们的当地数据上运行相同的指令。再次,与一个顺序的列处理器相比,电耗又减少了,因为依据单指令多数据(SIMD)原理,控制和地址解码仅仅执行一次且由所有的处理单元共享。每个处理器都包含一个累加器ACC1...320用于存储最新结果,这些结果能够被用作一条下一步指令的一个操作数。在ALU1...320中实现了一加法器和一个乘法器,利用这些功能,就可以执行比较、加法、减法、数据加权和乘法-聚集。该处理器包括一个标记F,其依据最新结果而设置。基于这个标记F,就有可能实现条件通过指令,其允许在算法中一个有限形式的数据相关性。所有320个标记F1...F320都和一条全局线EVT相连,其又和CPU相连。用这种方法,在该并行处理器阵列LPA上就能够运行一个具有某个终止条件的迭代过程,或者说CPU能够对图像内容起作用。因此CPU提供一个控制信号INSTR。在点P1...P4上,结果数据变得可用。与这些点P1...P4相连,来自行存储器LM或者TSMM的数据可以被用在相应的处理单元LPA1...320中。
这可以使用累加器ACC,存储器LM的内容或者一个全局加权WGHT作为一个操作数。加权WGHT,其对所有的处理器LPA 1...320都是相等的,可以用来在乘法和乘法聚集指令中放大数据。加权WGHT可以由CPU提供。
并行处理器LPA可以用来做的任务包含:固定图形噪声降低,缺陷像素隐藏,降噪,颜色重构和颜色域变换,其还包含预滤波用于二次取样目的。
通过为该行存储器LM使用一个双端口原理,在一个指令周期中,操作数能够从存储器中读取出来,而且结果能够被写回到预定存储单元上。在一个实际的实施例中,行存储器(LM)包含16个行存储器用于临时存储数据。更进一步,附加的三行被用作只写存储器,其用于排队计算的最后结果。
CPU管理整个芯片。它的主要任务是保持程序计数器,来读取和解码指令并且把它们传递给LPA。除这些之外,它能够执行全局计算,用于暴光时间控制,白色均衡等等。它使用统计的图像数据,这些数据在内部寄存器中(由串行处理器SP)进行更新。有许多可用的、包括乘法在内的逻辑与算术指令。对于程序控制,CPU处理在一个程序中的(条件)跳转,因此包含许多(程序)计数器。此外,CPU能够在由并行处理器LPA产生的事件上做出反应,并且跳转到不同的子程序中。CPU的某些寄存器可以通过I2C进行访问,因此给出了一种往返于一个终端用户的通信方式。例如,能够向CPU指定一个感兴趣区域,然后CPU就寻址选定的行与列用于处理。程序存储器PM保存用于CPU的指令。注意这个存储器PM也保存属于并行处理器LPA的指令。对该指令进行解码,然后要么LPA要么CPU就被激活了。这种顺序指令读取,易于从一个程序对两个处理器的组合编程。
最佳情况为:该TSMM包含一个附加在一个寄存器矩阵上的半连接纵横开关。该TSMM的提议结构如图4所描述。矩形MR表示在该存储器矩阵中的寄存器。该TSMM进一步包含由圆圈所代表的可控开关T。一个填充的圆圈意味着该开关是闭合的并且是导通的。一个空的圆圈意味着该开关是开启的并且是不导通的。该TSMM可以独立于该行存储器进行全局编址和存取。在附图中,作为举例,给定了一个4乘4的寄存器矩阵。因为处理单元与两列传感器阵列相连,所以该TSMM实际上与在该传感器阵列中的八列相连。在这个实施例中,一个TSMM实际上安排用来处理一个8乘4像素块。在一个实际的实施例中,有八条总线,四条横向(r1...r4),四条纵向(c1...c4),这样形成的纵横开关是16位宽的。这些总线和处理单元LPA,行存储器LM,相邻的TSMM以及矩阵的寄存器MR相连。更进一步,开关T位于横向总线(r1...r4)和纵向总线(c1...c4)的交叉处,来控制在连接单元之间的数据流。虽然可以在每个交叉点上放置一个开关,在这个实施例中最佳情况为:如图4所示在交叉点上放置七个开关。此外,每个MR都连接到相应的横向总线(r1...r4)和纵向总线(c1...c4),其由两个开关T来控制。通过横向总线或者纵向总线,数据能够流入和流出寄存器MR。
该寄存器矩阵能够解释为:四列(c1...c4)四个寄存器MR,其中每一列相应于一个特定的处理单元LPA1...320。一个处理单元能够有限地访问在该TSMM内的其它列。依据本发明的实施例提供了以下数据流配置:行存储器存取,寄存器存取,转置读/写,处理单元选择读/写,纵向块传送。这些配置将在以下进行论述。
图5显示了一个数据通过模式。在PI...P4上的开关T是闭合的,其导致一个到行存储器的直接数据通路。该TSMM对处理器LPA和行存储器MEM来说是透明的。没有数据贮存在寄存器MR中,因为所有连接到寄存器的开关都是打开的。
图6显示了一个寄存器存取模式。在这个模式中,TSMM用于临时存储。数据能够从存储器寄存器中读取,并且能够写入到存储器寄存器中。如图5所示,在P1...P4的开关是闭合的。此外,第三行与相应列相连的寄存器开关T也是闭合的。以这种方式,就可以在第三寄存器行中以一种类似字的方式读取或者写入一整行。这四列是互斥的。该TSMM中的一列与相应的处理单元相关,并且能够仅仅由该相应的处理单元直接存取。该TSMM能够用于临时存储,其类似在行存储器LM中的存储。TSMM与LM相比的一个优点是:TSMM更接近于LPA,并且可以在一个比LM更低的时钟频率上运行。存储器的局部化可以更加节电。
图7显示了一个转置读取模式。贮存在TSMM中的数据以列范围进行读取,然后通过闭合适当的开关T路由到纵向总线,以输出一个横向字回到处理单元。由此TSMM的转置读取(如果在相反方向应用的话,就是写入)就实现了。
图8显示了一个处理器选择存取模式。这个图显示了使用TSMM任意地存取处理器四个输出的一个,以及在TSMM一列的四个寄存器的一个中任意存储该输出的能力。作为例子,在P2的开关T闭合,因此仅仅允许来自LPA2的数据进入TSMM。通过启动适当的开关T,这个数据被路由到TSMM第一列的第四寄存器MR。以这种方式,来自LPA2的一个输出被写入到TSMM第一列c1的第四个寄存器中。因为LPA1...320不是独立可选的,所以由一个处理单元对TSMM的读取将会导致问题。那时所有的处理单元都将试图读取并且执行具有不确定结果的一些处理。当LPA1...320的累加器是有选择可寻址时,这个问题就得到有效地解决。
图9和10显示了块传送模式。在这些模式中,TSMM两个两个地彼此耦合。以这种方式,图1所示的照相机系统包含40个平行双TSMM队列。图9和10显示了用于从一个块到一个相邻块转移数据的可能模式。注意到为了允许传输数据,需要在TSMM之间的开关T(也称作传输门),以使得在同一横向总线的数据流到一个相邻TSMM上是可能的。图9显示了从TSMM2的上面到左边的一次块传送。以这样的方式启动在横向总线和纵向总线交叉点上的开关T,使得来自与P5...P8相连的处理单元的一行,以列方式向左传送。传输门T允许这些数据进入TSMM1。在TSMM1的横向总线和纵向总线交叉点上的开关T是这样启动的,以致该数据列在TSMM1中按一个行方式变得可用。这样来自与TSMM2相连的处理单元的数据就变得在TSMM1中可用,好象该数据是来自与TSMM1相连的处理单元。图10显示了一种块传送模式,其中在TSMM1中的一行被传送到TSMM2。这个模式可与在图9中所示的模式相比,但是在相反方向。除了数据来自处理单元以外,在图9和10中所示的模式也可适用于从行存储器LM获得数据。因为来自行存储器LM的数据在TSMM的底部进入,在P1到P8的开关就不是那样使用了。因为LPA整体上的并行体系结构,上述关于图8的类似读取问题也会发生。同样在这种情况下,当LPA不得不读取数据时,最好具有选择性可寻址的LPA累加器。虽然图9和10举出一个关于TSMM1和TSMM2的实例,对其它耦合的TSMM,例如TSMM3+TSMM4等等,同样是正确的。
上面描述的各种工作模式允许设备以一种有效的方法来执行各种算法,例如递归或者矩阵离散余弦变换(DCT)、色度二次采样和锯齿形(ZZ)扫描。这些特征将在以下进行论述。
块DCT应用于每个宏块的四个Y块,一个U块和一个V块。一个更可取的算法是aburdene等人在IEEE Signal ProcessingLetters,2(8),pp.155~156,1995年8月的文章″Computationof discrete cosine transform using Clenshaw’s recurrenceformula″中描述的一个独立二维递归DCT算法。该DCT算法的输入是一个从一个块的一列获取的8像素序列和两个加权。该加权确定了结果DCT系数的纵坐标。由于每块由四个处理单元进行服务,四个DCT系数可以并行处理。对于一个完全的块DCT,计算纵向一维的DCT需要十六遍该DCT算法,还需要另外十六遍用于计算该横向一维的DCT。该递归DCT算法有利于最小化中间存储所需要的区域。要求有两个中间变量来处理一个DCT系数。更快的蝶式DCT算法,需要八个中间变量用于每个处理单元。由于中间变量需要高精度,就需要更多的区域来把它们集成到像素缓冲区,例如行存储器LM中。TSMM为每个处理单元提供四个高精度中间寄存器MR。因为仅仅需要两个计算DCT系数的,还有两个寄存器可以用于其它目的。更重要地,贮存在TSMM中的DCT系数能够进行转置(见图7)。置换对于横向执行递归DCT算法是需要的。
至于该提议的体系结构,最佳是一个4乘4的TSMM。首先,它小于整个八乘八转置矩阵区域的1/4,因为一整个八乘八转置矩阵具有更多的寻址开销。其次,该处理单元仅仅产生四个DCT系数,而行存储器仅仅存储四个DCT系数。
块传送模式(见图9和10)提供了用于色度二次采样的有效模式。在以4∶2∶2格式对色度分量二次采样之前执行RGB-YUV的转换。RGB-YUV本身转换是一个像素级别的操作,并且涉及固定加权的相乘和乘积的累积。一旦像素被转换到YUV领域,在横向和纵向上都以2倍因子对U和V分量进行二次采样。在用于存储U和V分量的存储器分配中存在一个基本问题。在4∶2∶2格式中,在一个16×16像素宏块中的U和V分量被二次采样到8×8像素,而且Y分量没有进行子采样。一个宏块跨越两个块(两个8像素列)即两个TSMM单元或者8个处理单元。如果二次采样块被直接存储到相应的行存储器中的话,执行横向DCT时,效率是非常高的。更希望在宏块的一半上存储U块而且在另一半上存储V块。这个就允许同样的二维DCT代码应用到所有的Y、U和V块上。利用该块传送模式,这仅仅需要一次直接转送。即使在一个并行结构中,在相邻列之间的通信是可能的,这个传送需要四个数据移位周期。与图4的实施例相比,这个实施例的开销在于控制在TSMM之间的数据总线的开关。如果剩余用于在处理单元之间数据移位的周期数足够,或者如果开关引入的电容负载增加每次行存储器存取的功率,该数据块传送特征可以被省略。可以为实现而估算这个权衡。
块级别随机寻址(见图8)能够用于各种类型的算法,例如ZZ扫描。来自一个处理单元的累加器数据能够被有选择地编址并且写入到第一TSMM列四个寄存器的一个中。在写入到所有四个寄存器之后,能够对第一TSMM列进行转置,并写入到行存储器LM中。仅仅需要两位来寻址处理单元的输出,以及另外两位来寻址寄存器。如JPEG标准中描写的ZZ扫描能够用几种方式实现。本质上它是在一个八乘八块内的数据一次重新排序。在线性处理器阵列LPA中执行ZZ扫描和在LPA外面执行ZZ扫描之间的权衡是在硬件的复杂性上。在LPA外面执行ZZ扫描将需要一个块缓冲区,以保证在指定的流速率上有足够的数据用于重新排序。就将需要监视硬件来保持该缓冲器免于空或者溢出。需要在该流单元和LPA之间的同步将会引入在LPA中以及程序中的复杂性。在另一方面,如果ZZ扫描是在并行硬件中执行的话,流通量将是常数而且仅仅需要一个运行长度的编码器。
在没有引入较高复杂性的高度并行集成ALU中不能有效地实现可变长度编码,因此可变长度编码在该线性处理器阵列的外面处理。
概括地说,提出了一个高精度寄存器矩阵TSMM阵列,来解决高度并行线性阵列处理器的数据流局限,以及图像处理算法需要的中间存储。这种处理器和存储器单元的分级结构必需提高高度并行处理系统的灵活性,其中灵活性,特别是在数据流方面的灵活性被大大约束了。一个简单、专用存储器单元TSMM阵列结合一个高度并行的像素级别处理体系结构,其允许在单个芯片上以视频速率进行图像收集和运动-JPEG视频压缩。
本发明提供了一种具有一个并行处理单元阵列的并行数据处理设备,用于处理一个信号获得并行数据流,还提供了用于以一个块式样方式重排该并行数据流的装置。该数据重排装置具有一个可寻址的交换存储器矩阵阵列,它们的每一个都与一个预定编号的处理单元相连。 该开关存储器矩阵阵列解决了高度并行线性处理器阵列的数据流局限性,以及图像处理算法所需要的中间存储。在一个照相机系统中,该并行数据处理设备和一个传感器阵列组合使用。
必须注意到以上描述的实施例仅仅用于说明而不是限制本发明,而且那些在本技术领域中的技术人员将能够设计出许多替换的实施例而没有背离附加权利要求的范围。列和行可以互换而没有背离本发明的范围。在该权利要求中,放置在括号内的任何参考符号将不会被看作是限制该权利要求。词″包含″没有排除除了列在一个权利要求内的其它元素或者步骤外,还有其它元素或者步骤的存在。本发明能够利用包含几个性质不同的单元的硬件来实现,也可以利用一个合适的程序控制计算机来实现。在一个枚举几个装置的设备权利要求中,这些装置的某些部分能够由硬件的一个和同一个零件所包含。