发明内容
因此,本发明的一个目的是提供一种具有存储单元的视频数据处理设备,以及一种用于控制数据处理设备的存储单元的操作的方法,其允许将读出操作和取得操作作为并发任务来执行。
根据本发明的第一方面,数据处理设备用于处理数据元素的二维主阵列,其包括:
主存储单元,其具有主存储器,用于存储主阵列,
处理单元,其适于顺序处理构成主阵列的二维子阵列的数据块,并提供对滑动搜索区的数据元素的读出请求,所述滑动搜索区延伸经过主阵列中的预置数量的数据块列和数据块行,
高级高速缓存器单元,其具有与主存储器相连接的高级高速缓冲存储器,并且适于
从主存储器中取得数据块,用以构成所述图像的、比滑动搜索区更大的滑动区,
将被存储的滑动区中的、更新所述滑动搜索区所需的数据元素,从高级高速缓冲存储器中预取到第一预取缓冲器中,并在第一预取缓冲器的输出端提供这些数据元素,
低级高速缓存器单元,其具有直接连接在处理单元与第一预取缓冲器之间的低级高速缓冲存储器,并且适于
使用在第一预取缓冲器的输出端提供的数据元素,与上述高级高速缓存器单元的取得和预取操作并发地存储并在更新低级高速缓冲存储器中的滑动搜索区,以及
与上述高级高速缓存器单元的取得和预取操作并发地选择所请求的数据元素,并将其输出到处理单元。
尽管本发明的数据处理设备优选地用于视频处理环境中,但其不限于这些应用。本发明的数据处理设备能够用于处理任何二维数据阵列的环境中,例如地震学数据的阵列。二维数据阵列是一组数据结构,其以与二维矩阵相对应的方式来排序。在图像处理的特定环境中,二维数据阵列(也表示为主阵列)是图像。
在该上下文中,其它常用术语应如下来翻译。
“数据元素”为“像素”
“数据块”为“像素块”
“数据行”为“像素行”
“数据列”为“像素列”
“数据块列”为“像素块列”
“数据块行”为“像素块行”
在下文中,将在优选的用于视频图像处理的环境中来说明本发明的数据处理设备。在视频处理应用中,例如,图像可以是视频帧或视频场。视频帧通常包含图像的所有像素。视频场通常包含一组隔行扫描的像素行。隔行扫描是本领域普遍公知的概念,其涉及用互补的像素行子集来提供在时间上连续的视频图像。
图像存储在数据处理设备的主存储器中。数据处理设备的处理单元适于顺序地处理构成图像的二维子阵列的像素块。因此这些像素块被一次处理一个。像素块可以例如由8×8,16×16或32×32个像素构成。处理单元可以适于在不同视频处理环境中使用不同的像素块大小。
处理单元还适于提供对于滑动搜索区的像素的读出请求,滑动搜索区延伸经过图像中预定数量的像素块列和像素块行。滑动搜索区的概念是本领域众所周知的,并用于使用搜索策略的视频处理算法中,例如各种已知的运动估计算法。搜索区是构成图像子阵列的像素块的二维阵列。通过删除在搜索区一边上的像素块,并在搜索区的相对的另一边增加像素块,来实现搜索区的滑动运动。哪些像素块被删除及哪些像素块被增加取决于搜索区穿过图像的滑动运动的预定方向。例如,搜索区的运动可以是水平地从左至右。搜索区的运动与处理单元用来处理像素块的处理算法的扫描方向和扫描顺序相关联。不同扫描方向和扫描顺序的实例将在下面图4的说明环境中阐明。搜索区的大小,即搜索区在二维上所覆盖的像素块的数量,取决于处理单元所使用的算法的类型。例如,在运动估计算法中,搜索区的大小取决于运动向量的长度。它在视频应用中还可以取决于帧大小。
本发明的数据处理设备包括具有高级高速缓冲存储器的高级高速缓存器单元以及具有低级高速缓冲存储器的低级高速缓存器单元。在下文中,低级高速缓冲存储器也被称为L0高速缓存器、搜索区缓冲器,或SA缓冲器。应指出,在本发明的优选应用领域中,在处理单元与高级高速缓冲存储器之间通常没有寄存器。在其它应用领域中,所指定的L0高速缓存器指的是寄存器。然而,在当前上下文中,将低级高速缓冲存储器指定为L0高速缓存器并不意味着该高速缓冲存储器是寄存器。
除了各自的存储器之外,高级和低级高速缓存器单元通常还包括相关的控制单元,在此,其将被称为高速缓存器控制器。高速缓存器控制器可以用硬件或软件来实现。相应的,低级高速缓存器控制器也被称为L0高速缓存器控制器。在下文中,高级高速缓存器也被称为L1高速缓存器或条带缓冲器(stripe buffer)。相应的,高级高速缓存器控制器也可以称为L1高速缓存器控制器。
本发明的数据处理设备是基于通常概念:即,如果取得集中在一个高速缓存器级且读出集中在另一个高速缓存器级,那么就能够实现并发的读出和取得。
具体而言,本发明是基于对参数的分析,所述参数在读出和取得操作期间被确认。由于这些参数在不同视频格式标准和不同视频处理算法中是变化的,因此重要的是能提供灵活性。本发明的视频处理设备能够处理各种算法,如定标、滤波、运动检测等,以及各种视频格式,如公用的分辨率图象格式(CIF)、标准清晰度电视(SDTV)、或高清晰度电视(HDTV)。
本发明的视频处理设备基于以下参数的确认,所述参数影响存储单元与读出和取得有关的操作。
1.块大小
能够以不同块大小来组织存储单元的帧存储器,例如块大小是8×8或16×16像素。块组成控制低级高速缓存器的替换策略,即,随着处理的继续,有多少及哪些像素需要被装入到低级高速缓存器中。
2.扫描方向和扫描顺序
在处理连续的像素块时,处理单元能够遵循不同视频处理算法中的不同方向和顺序,并因此以各种可能的顺序访问在存储单元中存储的视频帧的像素。扫描方向可以从顶部到底部、从底部到顶部、从左到右、或者从右到左。扫描顺序可以一个像素块行接着一个像素块行,或者一个像素块列接着一个像素块列,或者以曲折的形式。
3.视频格式
可以以不同颜色空间或视频格式来组织帧存储器。视频格式可以是RGB,其要求每种颜色8比特或每个像素24比特,或者是各种二次抽样的YUV格式,其是基于亮度和色差的公知的视频格式。
4.亚像素精度
众所周知,用于在一帧中的物体之间产生平滑边界的数据要求比像素网格更高的精度。基于被请求块的坐标,存储单元必须检测适当的块,并将其与额外的像素一起传送,这就允许执行内插,例如双线性内插,以产生所需的亚像素精度。
5.窗口大小
窗口大小是由处理单元所使用的参数,以确定从存储单元中读出的区域的大小。
6.窗口坐标
处理单元以(X,Y)坐标对的形式提供窗口坐标,例如规定当前想要的读出的窗口的左上角。
本发明的数据处理设备基于这样的理解:参数1到3,即块大小、扫描方向和扫描顺序、以及视频格式,与取得操作相关。在本发明的数据处理设备的优选实施例中,这些参数1到3在较高的高速缓存器级上进行处理。因此,取得功能集中在高级高速缓存器和高级高速缓存器控制器中。
然而,应该指出,仅适于处理一种固定视频格式的处理设备也在本发明的范围之内。允许视频格式(参数3)的灵活性的处理设备将在下面作为本发明的数据处理设备的优选实施例来加以进一步的说明。
与此相反,基于本发明的数据处理设备的进一步的理解是:参数4到6,即亚像素精度、窗口大小和窗口坐标,与读出操作相关。在本发明的数据处理设备中,这些参数4到6不在较高的高速缓存器级上进行处理,而是在较低的高速缓存器级上进行处理。因此,读出功能集中在低级高速缓存器和低级高速缓存器控制器中。
在以下表格中总结了根据本发明横跨低级和高级高速缓存器单元的参数处理划分。
表格I:在优选实施例中读出和取得参数分配到高速缓存器级的情况
参数 |
低级高速缓存器 |
高级高速缓存器 |
1 |
块大小 |
|
X |
2 |
扫描方向和扫描顺序 |
|
X |
3 |
视频格式 |
|
X |
4 |
亚像素精度 |
X |
|
5 |
窗口大小 |
X |
|
6 |
窗口坐标 |
X |
|
再一次,为了该表格的完整性而包含了视频格式参数。在本发明的一个实施例中,高级高速缓存器单元适于使用一个公用的标准视频格式来存储像素数据,例如CIF、SDTV或HDTV标准。
为了实现对所提及的参数的划分,本发明的数据处理设备的高级高速缓存器单元没有根据像素到像素块的分割来组织高级高速缓存器,而是根据到像素行的分割来进行。更确切而言,高级高速缓存器单元适于从主存储器中取得多个像素块,用以构成所述图像的、比滑动搜索区更大的滑动区,并根据到像素行或者到像素列的分割,将所述滑动区存储在高级高速缓冲存储器中。所述滑动区通常执行与所述滑动搜索区相同的运动。优选的,高级高速缓存器单元适于使用将所取得的像素分割到像素行中的分割。作为备选方案,高级高速缓存器单元适于使用将所取得的像素分割到像素列中的分割。例如该备选实施例用于垂直峰化(vertical peaking)。
而且,为了更新所述滑动搜索区,高级高速缓存器单元适于从主存储器中取得根据预定扫描顺序和扫描方向更新滑动区所需的像素块,并根据到像素行或到像素列中的分割,将所述像素块存储在高级高速缓冲存储器中。因此,通过在更高的高速缓存器级上引入所述像素行分割,对低级高速缓存器单元就不存在块大小(参数1)的概念。
而且,第一预取缓冲器的提供确保了从低级高速缓存器单元的观点来说,扫描方向和扫描顺序(参数2)是不相关的。低级高速缓存器单元只是必须复制在预取缓冲器中所提供的数据。通过将这些数据复制到低级高速缓冲存储器中,来更新由低级高速缓存器所提供的搜索区。高级高速缓存器单元通过将更新所述滑动搜索区所需要的被存储的滑动区的像素从高级高速缓冲存储器预取到第一预取缓冲器,来控制该过程,并在第一预取缓冲器的输出端提供所述像素。该预取的实施涉及对于具体视频处理算法的认知,以预测处理单元将需要哪些像素。从而,高级高速缓存器单元相应地选择存储在高级高速缓冲存储器中的适当像素行,并将所选择的像素行复制到第一预取缓冲器中。因此,低级高速缓存器控制器不必涉及与扫描方向和扫描顺序的参数有关的取得。优选的,复制包含重写在低级高速缓冲存储器中的、由于滑动步骤而脱离搜索区域的像素。
本发明的数据处理设备的低级高速缓存器单元适于使用在第一预取缓冲器的输出端提供的像素,与高级高速缓存器单元的所述取得和预取操作并发地存储并更新在低级高速缓冲存储器中的滑动搜索区,并与高级高速缓存器单元的所述取得和预取操作并发地从低级高速缓冲存储器中选择所请求的像素,并将其输出到处理单元。在以下进一步说明的优选实施例中,对于处理单元所请求的像素的选择意味着对参数4到6(即亚像素精度、窗口坐标、和窗口大小)的确认,如果它们在处理单元中实施的具体处理算法所使用的话。
这样,根据本发明,与从主存储器进行取得有关的全部参数都由高级高速缓存器控制器来处理,而低级高速缓存器控制器可以限制在响应来自处理单元的读出请求并向处理单元提供像素数据的功能。在本发明的数据处理设备中,无需从较低缓存器级到较高缓存器级、或者到主存储器的取得请求。
由于在本发明的数据设备中实现了取得功能和读出功能的分离,因此高级高速缓存器单元和低级高速缓存器单元能够并行地执行取得操作和读出操作,其也被称为并发通信和计算。这减小了数据处理设备的存储单元总体上(即,包括主存储器和所有高速缓存器级)的等待时间。而且,取得步骤和读出步骤的分离减小了在各高速缓存器级中不希望有的功能重复。这允许在性能和其自身的核心功能所需的芯片面积上优化每一个高速缓存器级。而且,能够以更佳的效率来管理可维护性和可能的功能扩展。
在下文中,将说明本发明的数据处理设备的优选实施例。
在本发明的数据处理设备的优选实施例中,通过使得高级高速缓存器控制器在其输出端根据固定像素数据格式提供滑动区的像素,消除了所选择的视频格式(参数3)对低级高速缓存器的影响,其中,所述固定像素数据格式具有预置数量的比特位置并将预定比特值分配给图像的视频格式不使用的所有比特位置。本发明的数据处理设备该实施例的高级高速缓存器单元所使用的像素格式具有预置数量的比特位置。这样,从低级高速缓存器单元的观点来看,所有视频格式的像素都相同。将在像素格式中的比特位置的数量选择的足够大,以容纳所有已知的视频格式。没有被当前处理的视频格式所使用的像素格式的比特位置被高级高速缓存器单元以预定比特值进行填充,例如“0”。使用“0”比特值保持了所连接的处理数据路径简单。借助于通过高级高速缓冲存储器经由第一预取缓冲器将“0”写入到未使用的比特位置,使得视频格式控制在低级高速缓存器中不是必需的。低级高速缓冲存储器的输出具有正确的格式。
在本发明进一步的实施例中,低级高速缓存器单元适于从接收自处理单元的读出请求中获得两个窗口坐标和一个窗口大小参数,并依据所获得的坐标和参数(参数5和6),选择在低级高速缓冲存储器中所存储的像素,并将其提供到处理单元。
在进一步的实施例中,低级高速缓存器控制器优选地还适于根据由所述读出请求提供的窗口坐标,检测处理单元是否采用亚像素精度(参数4)来处理像素数据,并将该亚像素精度处理所需的全部额外像素提供到处理单元。
本发明的数据处理设备的另一个优选实施例还包括第二预取缓冲器,其连接在高级高速缓冲存储器与主存储器之间,并适于以并行方式将像素数据提供到高级高速缓冲存储器中。在该实施例中,高级高速缓存器单元适于从主存储器将所述图像中的、根据预定扫描顺序和扫描方向更新滑动区所需要的所选择的像素块预取到第二预取缓冲器,并且适于使用在第二预取缓冲器输出端提供的像素来更新在高级高速缓冲存储器中的滑动区。
通过将接下来将要相应地复制到高级高速缓存器中的像素加载到第二预取缓冲器中,第二预取缓冲器还允许加速所述取得操作。数据并行地从第二预取缓冲器中提供到高级高速缓冲存储器中。第二预取缓冲器的操作由高级高速缓存器控制器控制,并且还基于对顺序的认知,在其中,处理单元请求当前所处理的图像的像素。
在进一步的实施例中,本发明的数据处理设备中所提供主存储单元适于根据将所述图像分割为排列在多个像素块行和像素块列中的像素块的分割,在读出和写入操作中访问主存储器。
在优选实施例中,低级高速缓冲存储器采取便笺式存储器(scratchpad)形式。就是说,在该实施例中,低级高速缓冲存储器适于保存完整的搜索区。这样,在处理开始之前,能够在低级便笺式存储器中存储完整的搜索区。在该实施例中能够完全避免高速缓存未中。优选的,当搜索区移动到图像上的下一个位置时,低级高速缓存器单元适于根据先进先出替换方案,替换存储在低级便笺式存储器中的像素。
尽管对于视频应用而言便笺式存储器是优选的,但本发明的数据处理设备的其它应用并不要求在低级高速缓存器级中提供完整的搜索区。对于这些应用,可以使用适于保存比搜索区小的图像区的高速缓冲存储器。
在另一个实施例中,低级高速缓冲存储器包括多个存储体(memory bank)。低级高速缓存器单元适于将属于一个像素块中多个连续像素行的像素存储在不同存储体中,并将一个所请求的像素块中的多个像素行并行地输出到处理单元。这样,在处理单元与低级高速缓存器之间的通信带宽能进一步增大。优选的,低级高速缓存器单元适于以交错方式寻址低级高速缓冲存储器中的位置(1ocation),以循环重复的方式将连续的地址分配给多个连续的存储体中的可寻址位置。这样,当并行地输出几个行时,避免了存储体冲突。
在本发明的数据处理设备的优选实施中,低级高速缓冲存储器包括多个行单元,每个行单元都包含相应的第一数量的存储体,每个存储体都具有用于存储第二数量的像素的可寻址位置。低级高速缓存器单元适于:
将像素块中或者多个像素行中的、属于像素块中相应交错像素行组的相应像素行的像素,存储到相应行单元的存储体中,其中,存储体的相应可寻址位置每一个都适于存储相应的像素组,所述像素组由沿着一个像素行的第二数量的连续像素组成,从而使得所述连续的像素组以循环重复的方式分布在行单元的存储体上,所述行单元存储所述组所属的相应像素行的像素,
通过在存储体中将已废弃的像素替换为搜索区中新的像素来更新所述滑动搜索区,其中,所述已废弃的数据元素在所述滑动搜索区移动时脱离了所述滑动搜索区,所述新的数据元素来自与所述已废弃的数据元素相同的数据行,
从多个行单元中并行地获得并输出相应像素行的像素。
在本发明的进一步的实施例中,在各个像素块行中的预定扫描方向是从左到右或者从右到左,或者可替换地,在各个像素块列中的预定扫描方向是从顶部到底部或从底部到顶部。换句话说,扫描方向是非曲折的。众所周知,曲折的扫描方向随每一行而变化。即,例如,如果第一行从左到右处理,下一行就将从右到左处理。在该实施例中,高级高速缓存器单元适于在高级高速缓冲存储器中选择并经由预取缓冲器提供相应滑动搜索区的全部像素,用于在低级高速缓冲存储器中进行完整的替换,这是为了处理分别在图像的新像素块行或像素块列开头处的像素块。
在进一步的实施例中,高级高速缓存器单元适于从主存储器中取得、在高级高速缓冲存储器中选择、以及经由预取缓冲器提供相应滑动搜索区的全部像素,用于在低级高速缓冲存储器中进行完整的替换,这是为了处理在新图像开头处的像素块。
在此所述的和权利要求中所述的本发明的数据处理设备的实施例能够相互组合,除非另有说明。
根据本发明的第二方面,提供了一种方法,用于控制具有处理单元的数据处理设备的存储单元的操作,所述处理单元顺序处理像素块,所述像素块构成了存储在存储单元的主存储器中的图像的二维子阵列,并且所述处理单元向存储单元提供对于滑动搜索区的像素块的读出请求,所述滑动搜索区延伸经过所述图像中预置数量的像素块列和像素块行,所述方法包括以下步骤:
从主存储器中将所述图像的滑动区取得到高级高速缓冲存储器中,所述滑动区大于所述滑动搜索区,并且,根据到像素行或像素列的分割,将所述滑动区存储到高级高速缓冲存储器中,
从主存储器中将用于根据预定扫描顺序和扫描方向更新所述滑动区的像素块取得到高级高速缓冲存储器中,并且根据到像素行或像素列的分割,将所述像素块存储到高级高速缓冲存储器中,
从高级高速缓冲存储器中将所述滑动区中的、在未来的滑动搜索区移动中更新搜索区所需的像素预取到第一预取缓冲器,并且,在第一预取缓冲器的输出端提供所述像素,
使用在第一预取缓冲器的输出端提供的像素,与所述取得操作和预取操作并发地存储并更新在低级高速缓冲存储器中的滑动搜索区,
与所述取得操作和预取操作并发地,从低级高速缓冲存储器中选择所请求的像素,并将其输出到处理单元。
本发明的方法涉及对于本发明的数据处理设备的存储器子系统的控制。该方法的优点与以上对数据处理设备的那些说明相对应。
在下文中,将阐明本发明方法的优选实施例。实施例表示数据处理设备实施例的方法方面,所述数据处理设备允许实现并发的读出和取得,如上所述。因此,以下的说明是简短的,并对上述部分做出进一步的参考,以用于进一步的解释。
本发明的一个实施例包括步骤:根据固定像素格式将滑动区的像素提供到低级高速缓冲存储器,所述固定像素格式具有预置数量的比特位置,并将预定比特值分配给图像视频格式不使用的所有比特位置。
在进一步的实施例中,在低级高速缓冲存储器中提供滑动搜索区的全部像素,根据先进先出替换方案,替换存储在低级高速缓冲存储器中的像素,以更新滑动搜索区。
在进一步的实施例中,低级高速缓冲存储器包括多个存储体。属于一个像素块的连续像素行的像素被存储在不同存储体中,并且所请求的像素块的多个像素行从低级高速缓冲存储器并行地输出到处理单元。
在另一个实施例中,以交错的方式寻址在低级高速缓冲存储器中的位置,以循环重复的方式将连续地址分配给在连续存储体中的可寻址位置。
进一步的实施例包括步骤:从主存储器中将图像中的、根据预定扫描顺序和扫描方向更新滑动区所需要的所选择的像素块预取到第二预取缓冲器中,以及步骤:使用在第二预取缓冲器的输出端提供的像素,更新在高级高速缓冲存储器中的滑动区。
进一步的实施例包括步骤:从接收自处理单元的读出请求中获得窗口坐标和窗口大小参数,以及步骤:依据所获得的窗口坐标和窗口大小参数,将存储在低级高速缓存器单元中的像素提供到处理单元。
在另一个实施例中,在各个像素块行中的预定扫描方向是从左到右或从右到左,或者可替换的,在各个像素块列中的预定扫描方向是从顶部到底部或从底部到顶部的。该实施例的方法包括步骤:在高级高速缓冲存储器中选择并经由预取缓冲器提供相应滑动搜索区的全部像素,以用于在低级高速缓冲存储器中的完整替换,这是为了处理分别在图像的新像素块行或像素块列开头处的像素块。
另一个实施例包括步骤:从主存储器取得、在高级高速缓冲存储器中选择、并经由预取缓冲器提供相应滑动搜索区的全部像素,以用于在低级高速缓冲存储器中的完整替换,这是为了处理在新图像开头处的像素块。
在下文中,将参考所附的附图来说明本发明进一步的实施例。
具体实施方式
图1示出了构成本发明数据处理设备的第一实施例的视频处理设备10的框图。视频处理设备10具有处理单元12和存储单元14,存储单元14连接到处理单元12。视频处理系统10代表一种嵌入式系统,专门用于执行视频处理算法,如定标、滤波、运动检测、运动估计等。
视频处理设备10的存储单元14包括帧存储器16,以及连接在处理单元12与帧存储器16之间的高级便笺式存储器18和低级便笺式存储器20。高级便笺式存储器18在下文中也称为L1便笺式存储器。第一预取缓冲器20.1提供在高级便笺式存储器18与低级便笺式存储器20.2之间。低级便笺式存储器20在下文中也称为L0便笺式存储器和搜索区(SA)便笺式存储器。
操作与处理单元12相连的存储单元14所必需的全部控制操作由一个或几个存储器控制器来控制。在当前实施例中,帧存储器控制器22控制帧存储器16的操作,高级便笺式存储器控制器24控制L1便笺式存储器18和预取缓冲器20.1的操作,低级高速缓存器控制器26控制搜索区便笺式存储器20.2的操作。高级便笺式存储器控制器和高级便笺式存储器构成了高级高速缓存器单元。低级高速缓存器控制器和低级便笺式存储器构成了低级高速缓存器单元。高级和低级便笺式存储器控制器24和26也分别被称为L1和L0便笺式存储器控制器。以下部分借助几个实例,给出了用于确定L0便笺式存储器20.2、L1便笺式存储器18和预取缓冲器20.1的容量和带宽的指导原则。
1.L0便笺式存储器
在一个没有提供所处理的视频格式的灵活性的实施例中,L0便笺式存储器所需的存储器容量通常取决于所处理的视频格式。以下的表格II按照搜索区大小和存储器容量,总结了三种视频格式CIF、SDTV和HDTV的容量要求。指定了对于两种情况的存储器容量,即,仅携带8比特亮度信息的像素的情况,其在下表中称为“Y”,以及用于三种颜色的携带总计达24比特的亮度信息的彩色像素的情况,其在表格II中称为RGB。
表格II:对于视频格式的不同实例所需的L0便笺式存储器容量
格式 |
搜索区大小 |
所需的L0便笺式存储器容量(kbit) |
水平方向上的像素块 |
垂直方向上的像素块 |
Y |
RGB |
CIF |
6 |
4 |
12 |
36 |
SDTV |
9 |
5 |
22.5 |
67.5 |
作为用于阅读上表的指导原则,参考表格II的最下行来解释一个实例:在HDTV格式中的搜索区在水平方向上具有17个8乘8的像素块,在垂直方向上具有9个8乘8的像素块。在RGB像素格式中,在此每个像素拥有24比特,对于SA缓冲器需要17×9×8×8×24=235008bit=229.5kbit。当仅使用每像素8比特的亮度信息时,78336bit或76.5kbit是L0便笺式存储器的最小容量。
在提供所选视频格式的灵活性的实施例中,SA便笺式存储器容量是所支持的视频格式的最大所需容量。
在另一个实施例中,使用了L0高速缓存器,而不是L0便笺式存储器。在该实施例中,L0高速缓存器可以具有比用于存储完整搜索区所需的容量小的存储器容量。然而,当读出请求针对L0高速缓存器时,根据处理单元12所执行的具体视频处理算法而选择的适当的预取策略,能够完全避免高速缓存未中的情况。
2.L1便笺式存储器
对于HDTV格式的实例,L1便笺式存储器的存储器容量由需要存储总共2000个包含8×8像素的像素块的要求来确定。指定24比特的像素大小,L1便笺式存储器应具有3Mbit的存储器容量。
在一个实施例中,使用了L1高速缓存器,而不是L1便笺式存储器。这意味着L1高速缓存器18所保存的内容小于滑动区。该实施例优选的与图2的实施例结合使用,图2的实施例除了L1高速缓存器18.2之外还包括第二预取缓冲器18.1。通过在高级高速缓存器控制器24’中实施适当的高速缓存器替换策略,L1高速缓存器能够一直保存更新L0便笺式存储器20.1或L0高速缓存器20.1中的搜索区所需的像素。
3.第一预取缓冲器
可以根据以下为HDTV视频格式的实例所给出的指导原则,来计算L0便笺式存储器20的第一预取缓冲器20.1的容量。搜索区的高度(或者换而言之,一个搜索区列的大小)是9个像素块,每个像素块包含8×8个像素。因此,在稳定状态期间,需要一个这种9个像素块的搜索区列来更新搜索区。由于每个像素包括的最大数量是24比特,因此预取缓冲器20.1应具有9×8×8×24=13824bit=13.5kbit的容量。
4.带宽
至于存储器带宽,通常处理数据路径的并行度(parallelism)等于像素块的像素行的大小,例如,在8乘8像素块的情况下为8个像素。这适用于基于块的处理应用的情况,如时间上变换(temporalupconversion)的运动估计、去隔行(de-interlacing)等。
通过并行地提供像素块的多个像素行,并通过将存储器系统组织为使得连续的像素行在不同的存储体中,能够进一步增加带宽。当并行输出几行时,通过在全部存储体组中交错存储体行,避免了存储体冲突。在欧洲专利申请EP04101677.5的权利要求19和权利要求20的实施例中,以及在EP04101677.5的图7的存储器结构中,给出了适于并行输出几个连续像素行的存储器结构的实例,在所申请的EP04101677.5的12到23页有详细说明。
在开始说明图1的视频处理设备的操作之前,将参照图2来简要说明一个可替换实施例。图2的框图示出了根据本发明第二实施例的视频处理设备的细节。图2的视频处理设备10’的结构大部分与图1的视频处理设备10的结构相一致。本说明限于其区别之处,并将对相同部分使用图1的参考符号,除非另外指定。视频处理设备10’的高级便笺式存储器18’包括第二预取缓冲器18.1,其连接在帧存储器16与L1便笺式存储器18.2之间。预取缓冲器18.1具有并行输出,以向L1便笺式存储器18.2并行提供几个像素。第二预取缓冲器的操作由高级高速缓存器控制器24’控制。
接下来,将进一步参照图3到7来说明图1和2的视频处理设备的与并发通信和计算有关的操作。
在初始化阶段期间,L1便笺式存储器通过主系统加载与取得有关的参数。基于该信息,从帧存储器16将滑动区取得到L1便笺式存储器18中。L1便笺式存储器控制器24管理该取得操作。滑动搜索区覆盖几个像素块行,并至少延伸经过处理单元12所执行的视频处理算法所使用的滑动搜索区所覆盖的像素块行的数量。存储在L1便笺式存储器18中的滑动区例如可以构成一个条带,其延伸经过视频帧的全部像素块列,并经过多个像素块行,其数量与在搜索区中所包含的相同。在另一个实例中,其尤其适合于处理单元的从顶部到底部的扫描方向,滑动区在水平上具有与搜索区相同的伸展范围,但在垂直方向上延伸经过比搜索区更多的像素块行,或者经过该帧的全部垂直伸展范围。L1便笺式存储器以像素行的方式保存滑动区,而帧存储器16根据到像素块的分割来保存帧。可以采用直接映射的方式来组织L1。
通过经由预取缓冲器20.1加载相应搜索区的、被分配给待处理的第一个像素块的所要求的数据,来初始化L0便笺式存储器20.1。L1便笺式存储器控制器24控制以预定顺序经由预取缓冲器20.1来提供数据。
图3示出了用于说明一种基于搜索区的视频处理算法,并且用于说明在本发明视频处理设备的一个实施例中执行的,便笺式存储器替换策略的示意图。
像素块网格30代表构成完整视频帧的一个子集的12×7像素块的区域。每个像素块由8×8个像素组成。这是由写在像素块网格30左上角中的像素块32两侧的数字来指明。以一条粗线描画了在像素块网格30中的搜索区34的轮廓。该搜索区由9×5=45个像素块组成。一个搜索区行由9个像素块组成。一个搜索区列由5个像素块组成。搜索区的当前被处理的中心像素块由大写字母N指明。搜索区的先前的中心像素块由大写字母O指明。
处理当前中心像素块包括扫描在当前中心块周围的相应的9×45个像素块的搜索区。这样,当先前中心像素块O的处理完成时,在处理单元12处理新的中心像素块N之前,通过L1便笺式存储器18和预取缓冲器20.1,根据已知的扫描顺序和扫描方向,更新在L0便笺式存储器20.2中的搜索区。
在图3所示的实例中,在从SA缓冲器20.2中删除先前的最左边的搜索区列38的同时,通过将新搜索区列36加载到SA缓冲器20.2中来更新在L0便笺式存储器20.2中的搜索区。通过在图3中以阴影线画出,来着重指出新的最右边的搜索区列36,而从搜索区缓冲器20.2中删除的块以“X”标记。作为结果的搜索区向右侧的滑动方向以箭头40指明。
至于第一预取缓冲器20.1,包含在第一预取缓冲器20.1中的像素是包含在新搜索区列36中的像素。这些像素被一个像素行接着一个像素行地提供给L0便笺式存储器20.2,且一个像素行的全部像素是并行提供的。如以前所解释的,实际上在较低高速缓存器级上没有块大小的概念。
图4示出了扫描顺序和扫描方向的组合的几个实例,其可以由不同算法用于处理视频帧或视频场。通常,扫描方向指明连续像素行或像素列的处理顺序。扫描顺序指明处理是否是一行接一行或一列接一列地执行。对于视频处理算法所采用的扫描顺序和扫描方向的认知对于选择高速缓存器或便笺式存储器的适当的替换策略而言是至关重要的。这种包含预取所要求的数据的替换策略的实施在本领域是公知的。
图4a)示出了一个实施例,其中,处理单元12以从顶部到底部的扫描方向和一行接一行的扫描顺序,处理搜索区内的像素块。在该实施例中,从左到右地执行在每个像素块行中的处理。
图4b)示出了一个可替换实施例,其中,处理单元12沿着从底部到顶部的扫描方向和一行接一行的扫描顺序,执行对包含在搜索区中的像素块的处理。在该实施例中,从右到左地扫描每个像素块行中的像素块。
图4c)示出了第三可替换实施例,其中,以从左到右的扫描方向和一列接一列的扫描顺序来执行处理。在该实施例中,从底部到顶部地扫描每个像素块列。
图4d)示出了第四可替换实施例,其中,以从顶部到底部的扫描方向和一行接一行的扫描顺序来执行处理。除了以曲折的方式执行在像素块行中的处理这个事实之外,该实施例与图4a)中的等效。从左到右地扫描最顶上的像素块行,而从右到左地处理其下面下一个像素块行,等等。
图4e)示出了第五可替换实施例,其中,处理单元以从底部到顶部的扫描方向和一行接一行的扫描模式扫描搜索区。与图4b)的实施例相比,处理是以曲折的方式执行的。从右到左地扫描最下面的像素块行,而从左到右地扫描其上面下一个像素块行,等等。
图4f)示出了第六可替换实施例,其中处理单元12以从左到右的扫描方向和一列接一列的扫描顺序处理搜索区。与图4c)的实施例相比,以曲折的方式执行对列的扫描。从底部到顶部地扫描最左边的列,而从顶部到底部扫描其右边的下一列,等等。
在图4a)到4c)的非曲折的实例中,在设计与切换到新的行或列有关的替换策略时必须特别慎重。在此情况下,在处理单元12继续处理下一行或列的第一个像素块之前,通常必须替换在L0便笺式存储器20.1中的完整的搜索区。在此情况下的便笺式存储器替换与上述初始化阶段的相一致。当然,在此情况下,在更新L1和L0便笺式存储器之前,不必重新加载当前视频处理算法的与取得有关的参数。
图5是扫描方向对于L0便笺式存储器20.2中的替换策略的影响的图解说明。图5示出了构成图3的可选方案的搜索区的第二实例。在本实例中,搜索区由12像素块的搜索区行和8像素块的搜索区列组成。如同图3的实例中,虚线网格指明像素块。图5的说明总结了四个可能的实施例。在图5所示的第一实施例中,扫描区的滑动方向与图3所示的相同,即从左到右。作为结果,当前活动的搜索区右侧的搜索区列44必须被填充到L0便笺式存储器20.2中,并由高级高速缓存器控制器24装入第一预取缓冲器20.1。与搜索区列44相邻并指向右侧的箭头表示该实施例的搜索区的滑动方向。
在图5所示的第二实施例中,扫描区从右到左滑动,新的最左边的搜索区列46必须经由预取缓冲器20.1和L1便笺式存储器18而装入L0便笺式存储器20.2。与搜索区列46相邻并指向左侧的箭头表示该实施例的搜索区的滑动方向。
在图5所示的第三实施例中,搜索区从帧的顶部到底部滑动。因此,新的底部的搜索区行48必须随着处理的继续而装入L0便笺式存储器20.2。与搜索区列48相邻并指向下方的箭头表示该实施例的搜索区的滑动方向。
最后,在图5所示的第四实施例中,搜索区在底部到顶部的方向上滑动。因此,新的顶部的搜索区行50必须被装入L0便笺式存储器。与搜索区列50相邻并指向上方的箭头表示该实施例的搜索区的滑动方向。
图6是窗口及其借助窗口坐标的定义的图解说明。在图6中,显示了搜索区52。在搜索区52中的窗口54由预定窗口的大小和一个X左边及一个Y坐标定义。为了定义窗口54的左上角的位置,搜索区左上角构成搜索区的起始点。从L0便笺式存储器控制器26的读出请求中得到窗口坐标X和Y。例如,坐标X和Y可以由两个正整数值以四分之一像素分辨率构成。这样,可以避免固定小数点(fixed-point)运算。L0便笺式存储器控制器26检测可能的亚像素分辨率,如将在以下参照图7的解释。
图7示出了图1的L0便笺式存储器20.2的一部分的显示,以及包含在L0便笺式存储器控制器26中的控制电路的多个部分。所示的L0便笺式存储器部分由12个存储体组成,其中存储体56到66以单独的参考符号来标记。每个存储体为4像素宽、32像素深。窗口54’显示为延伸经过存储体56到64的多个部分。在本实施例中,L0便笺式存储器20.2是直接映射的。因此,需要来自多个存储体的贡献来使窗口完整。窗口54’的坐标假定为亚像素精度。因此,窗口以额外的像素延伸,以支持内插滤波。给定一个实例,其中,窗口大小是16乘16像素,L0便笺式存储器控制器检测亚像素精度,并将17乘17像素的窗口传递到处理单元12。