发明内容
本发明涉及与像素获取请求接口有关的系统、方法和/或设备,其内容在下面的附图中进行了展示,并在随后的权利要求中进行了完整的描述。
通过阅读下面的描述和相关的附图,将能够全面理解本发明的优势和创新之处、以及示例性的实施例。
根据本发明的另一方面,提供了一种用于访问数据的模块的存储器访问单元,所述存储器访问单元包括:
输出端口,用于通过到存储器控制器的链路,传送存储器的地址列表的访问请求。
优选的,所述存储器访问单元还包括:
用于使地址列表的访问请求排队的队列。
优选的,所述存储器访问单元还包括:
输入端口,用于从运动预测处理单元接收像素块请求;以及
逻辑,用于从所述像素块请求生成地址列表,其中所述地址列表对应于存储所述像素块中像素的存储器中的地址。
优选的,所述存储器访问单元通过与一个或多个客户端共享的总线、从存储器的所述地址列表中、接收存储在存储器的地址中的数据。
根据本发明的一些方面,一种用于访问存储器的存储器控制器,所述存储器控制器包括:
端口,用于通过链路从客户端接收存储器中地址列表的访问请求;
另一端口,用于通过与一个或多个其他客户端共享的总线接收访问所述存储器的请求。
优选的,所述存储器控制器还包括:
用于使地址列表访问请求排队的队列。
优选的,所述存储器控制器还包括:
仲裁器,用于在来自客户端的地址列表请求和一个或多个其他客户端的存储器访问请求之间进行仲裁。
优选的,所述存储器控制器通过另一端口、从存储器的地址列表发送存储在所述存储器地址中的数据。
优选的,所述存储器控制器通过所述端口、从存储器的地址列表中发送存储在所述存储器地址中的数据。
优选的,所述地址是非连续的。
优选的,所述存储器访问单元通过所述链路、从存储器的地址列表中接收存储在所述存储器地址中的数据。
根据本发明的另一个方面,一种处理视频数据的系统,所述系统包括:
存储器访问单元,用于接收像素块请求,并生成存储器中地址列表的访问请求;
存储器控制器,用于接收所述存储器中所述地址列表的访问请求;
链路,连接所述存储器访问单元和所述存储器控制器,用于传送所述存储器中所述地址列表的访问请求;
一个或多个客户端,用于执行一种或多种功能;以及
总线,用于传送来自一个或多个客户端的访问请求。
优选的,所述总线将存储在所述存储器地址中的数据从存储器的地址列表中发送到存储器访问单元。
优选的,所述链路将存储在所述存储器地址中的数据从存储器的地址列表中发送到存储器访问单元。
优选的,所述系统还包括:
运动预测处理器,用于从像素块中生成预测像素。
优选的,所述存储器访问单元还包括:
逻辑,用于从所述像素块请求生成地址列表,其中所述地址列表对应于存储所述像素块中像素的存储器中的地址。
优选的,所述存储器访问单元还包括:
用于使地址列表的请求排队的队列。
优选的,所述存储器访问单元还包括:
仲裁器,用于在通过总线接收的存储器访问请求与通过链路接收的地址列表访问请求之间进行仲裁。
具体实施方式
如图1所示,其中示出了依据本发明实施例的示范性系统的示意性框图。该系统包括用于执行特定功能的特定客户端120(0),和用于执行一个或多个其他功能的一个或多个其他客户端120(1)...120(n)。在执行所述特定功能和所述一个或多个功能的过程中,特定客户端120(0)和一个或多个其他客户端120(1)...120(n)可访问存储器中的地址。此外,客户端120(0)...120(n)可以以相同或者不同的时钟速率运作。
存储器控制器110控制对存储器的访问。所述特定客户端120(0)通过它与存储器控制器110之间的链路112请求访问所述存储器中的地址列表。在本发明的特定实施例中,所述特定客户端包括存储器访问单元。
链路112可包括但不限于例如点到点链路或另一总线。其他客户端120 (1)...120(n)通过总线115传送访问存储器地址的请求。如果在特定时间内有一个以上的其他客户端120(1)...120(n)尝试请求访问,总线仲裁器会对这些请求进行仲裁。
根据本发明的一些方面,存储器控制器110通过总线115传送客户端120(1)...120(n)和特定客户端120(0)所请求访问的地址中的数据。在选择性的实施例中,存储器控制器110通过链路112传送所请求的数据。
如图2所示,示出了依据本发明实施例的示范性存储器访问单元的示意性框图。存储器访问单元为客户端获取数据,它包括输出端口215。输出端口215通过链路112向存储器控制器110传送存储器地址列表的访问请求。
在本发明的特定实施例中,存储器访问单元还可包括队列211。队列211使地址列表的访问请求排队。此外,存储器访问单元还可通过输入端口205接收访问特定数据的请求。除了提供存储数据的地址外,该数据访问请求还可指定另一方式所请求的数据。因此,存储器访问单元可包括逻辑210,用于从所述请求中生成地址列表,这些地址列表对应于存储器中存储数据的地址。
逻辑210可基于存储器组织和数据存储在存储器中的方式来确定存储数据的地址。此外,逻辑210可按照优化存储器访问的顺序来生成地址列表。
例如,当存储器包括包含行的簇时,并且对存储器簇中特定行的访问会造成大量的时间开销时,逻辑210生成地址列表,所述地址列表将存储器簇中同一行中的地址组织成共同的事项。
根据本发明的特定实施例,存储器访问单元可通过共享总线接收所请求的数据,而通过请求链路来将请求发往存储器控制器。选择性地,存储器访问单元可通过请求链路接收所请求的数据。
现参照图3,示出了依据本发明实施例的示范存储器控制器的示意性框 图。存储器控制器包括端口305,用于通过链路从特定客户端例如存储器访问单元接收访问存储器中地址列表的访问请求。存储器控制器还包括其他端口310,用于通过共享总线从一个或多个其他客户端接收访问所述存储器的请求。
根据本发明的特定方面,存储器控制器还可包含队列,用于使存储端口305收到的地址列表的访问请求排队。此外,仲裁器可在特定客户端发出的地址列表访问请求和一个或多个其他客户端发出的存储器访问请求之间进行仲裁。
在本发明的特定实施例中,存储器控制器通过端口310来发送存储器地址中的数据,这些数据是端口305所收到的地址列表中的数据。选择性地,数据可通过点到点链路返回。
本发明可应用于多种应用中。例如,本发明可用于对视频数据进行解码。下面将简单介绍一种特定的视频压缩标准,高级视频编码(AVC,也称为H.264,和MP3G-4第10部分),在这之后还将介绍一种依据本发明实施例的示范性视频处理器。
H.264标准
现在来看图4,其中示出了帧400的示意性框图。在称为帧长度的时间段内,视频摄像头从视野中捕捉帧400。连续的帧400组成了视频序列。帧400包括二维像素栅格400(x,y)。
对于彩色视频而言,每个色彩分量都与二维像素栅格相关联。例如,视频可包括亮度、红色色度分量和蓝色色度分量。因此,亮度、红色色度分量和蓝色色度分量分别与二维像素栅格400Y(x,y)、400Cr(x,y)和400Cb(x,y)相关联。当帧中的二维像素栅格400Y(x,y)、400Cr(x,y)和400Cb (x,y)重叠显示在显示设备上时,就显示出在帧长度期间内从视野中捕获的图片。
通常,与红色色度分量和蓝色色度特征相比,人眼对视频的亮度特征的空间细节更敏感。因此,通常使用AVC标准,亮度像素栅格400Y(x,y)中像素的数量要多于红色色度栅格400Cr(x,y)和蓝色色度栅格400Cb(x,y)中像素的数量。在4:2:0采样格式中,红色色度栅格400Cr(x,y)和蓝色色度像素栅格400Cb(x,y)栅格在每个方向上的像素是亮度像素栅格400Y(x,y)中像素数量的一半。
帧400Y(x,y)中的一组亮度像素可分成16×16像素400Y(16x->16x+15,16y->16y+15)块415Y(x,y)。对于每个16×16块的亮度像素415Y(x,y),存在相应的8×8块的红色色度像素415Cr(x,y)和蓝色色度像素415Cb(x,y)。16×16块亮度像素415Y(x,y)、以及相应的8x8块红色色度像素415Cr(x,y)和蓝色色度像素415Cb(x,y)共同称为宏块。
H.264标准可以逐帧或逐场对视频进行编码,还可以逐个宏块地对宏块上的帧和场进行编码。H.264标准中还规定可以使用其他技术中的空间预测、时间预测、转换、交错编码和无损熵编码来对宏块进行压缩。
现参照图5,其中描述了临时预测块130的示意性框图。块130可从其他帧或场中的像素块R中进行预测。用作预测的像素块称为基准像素R。
在一些情况下,基准像素块R是从另一基准像素块R’中进行插值得到的。例如,六阶(tap)滤波器可对基准像素块R’进行插值,来得到基准像素块R。基准像素块R’的大小可达21x21。
块130与基准像素R或R’之间的差别称为预测误差E。预测误差E与基准像素R或R’的标识一同被计算和编码。基准像素R或R’由运动向量MV 和包含他们的参考图的标识来表示。运动向量MV描述块130或宏块与基准像素R之间的空间位移。运动向量MV自身可从相邻的部分和宏块的MV中预测出来。
在对视频数据进行解码的过程中,帧或场可以逐个宏块地在宏块中解码。此外,对宏块的解码可按照从左到右或和从上到下的顺序进行。解码后的宏块可写入存储器如DRAM中。此外,如上所述,宏块还可从其他先前进行解码的场或帧中的基准像素块R中预测出来。为了对宏块进行解码,解码器从DRAM中获取基准像素R。
需要注意的是,基准像素块R块通常并没有排列在宏块的边界上。因此,基准像素块R有可能跨越多个宏块。当基准像素块R为21×21块时,基准像素块R可跨越多达9个不同的宏块。
基准像素R所跨越的宏块将在不同的处理过程中写入到DRAM中。因此,存储基准像素R的特定存储器地址并不能保证是连续的,甚至彼此之间都不相互接近。
现在来看图6,其中示出了依据本发明实施例的示范性系统的示意性框图。该系统包括视频解码器601、存储器控制器603和存储器604。
视频解码器601接收并对视频数据进行解码。视频解码器601包括运动补偿单元MCU、解块单元DBU、高速缓冲存储器P$和任意数量的其他客户端602(0)...602(n)。运动补偿单元MCU将解码后的预测误差E应用于基准像素R。运动补偿单元通过存储器访问单元MAU访问存储器604。其他客户端通过总线访问存储器604。根据本发明的特定实施例,存储器访问单元MAU也可通过总线发送请求。
存储器604可包括任意数量的簇,尽管通常这个数量为4个。每个簇包含 任意数量的行。在存储器访问特定地址之前,包含包括所述特定地址的特定行的簇先进行充电。在对簇预充电过后,就可以对特定的地址进行访问了。簇预充电的时间在总时间中占据很大的比例。此外,一旦对该特定的行进行访问,则无需再次预充电就可对该行上的其他存储器地址进行访问。因此,对存储器行的访问的特征在于开销大、边际成本小。
通过总线对客户端602(0)...602(n)的突发处理进行调度,实时调度可利用存储器604的前述特性。在突发处理中,这些功能访问通常位于一个簇上的同一行、或者每个簇上的一行中的大量连续的存储器地址。当功能要访问DRAM上的连续地址时,突发处理更容易实现。
可能不会访问DRAM上的连续地址的一个例子便是视频编码器和解码器中的运动补偿功能。在一些标准诸如高级视频编码(AVC)(也称为MPEG-4第10部分AVC或ITU-T H.264)中,可能从小至2×2或者大至21×21的基准帧中的基准像素块来得到预测像素。一个基准像素块可能跨越DRAM上的多个行和簇。此外,将基准图片储在存储器中的方式也有很多种。因此,存储基准像素的存储器地址很可能是不连续的。
然而,某些功能可能不会访问存储器604上的连续地址。例如,运动补偿单元MAU需要访问一组预测像素,而这一组像素的大小可能存在非常大的不同。例如,在AVC中,获取色度的基准像素可小至2×2,而获取亮度的基准像素可大至21×21。同一组中的基准像素可能跨越多达9个宏块。可能有大量基准像素与一个宏块的解码相关。此外,基准帧在存储器中的存储方式也有很多种。
因此,在使用了视频解码器601的高速缓冲存储器的的系统中,可从DRAM中请求得到包括块获取请求的DRAM地址,所述块获取请求可由高速 缓冲存储器和其他地址来满足,这将导致从DRAM中请求到的地址不连续。因此,存储基准像素的存储器地址可能是非连续的。
在本发明的特定实施例中,基准帧的宏块可存储在存储器604中,其存储的方式能够确保基准像素块所跨越的宏块的任意组合在存储器604每一个簇中的存储位置不会超过一行。
为减轻内部视频解码模块如MCU掌握存储器像素数据排列和访问协议的细节的负担,对系统中与像素有关的访问由存储器访问单元MAU处理。MAU依据存储器组织方式将每个基准像素请求转换为存储器访问请求,然后通过像素获取请求接口PFRI将该请求发往存储器控制器603。像素获取请求接口PFRI可包括点到点链路。选择性地,PFRI可支持多种请求功能。根据本发明的特定实施例,MAU可从其他模块接收请求,并可包括仲裁逻辑。
现参照图7,其中示出了依据本发明实施例的像素获取请求接口的示意性框图。存储器访问单元MAU通过像素获取请求接口PFRI、向存储器控制器603发送请求访问存储器604中地址列表的请求。
存储器访问单元MAU包括输入端口705,用于从运动补偿单元接收基准像素块请求;还包括逻辑710,用于从基准像素块请求生成访问存储器604中地址列表的请求;还包括队列715,用于通过像素获取请求接口PFRI发送地址列表访问请求。存储器控制器603包括队列720,用于从PFRI接收请求。
PFRI支持向存储器控制器603发送DRAM字地址请求流。根据特定的实施例,这些请求是读取请求。与这些请求有关的数据通过总线返回。选择性地,与这些请求有关的数据通过PFRI返回。MAU创建DRAM字地址列表,所述列表对应于时间预测必需的DRAM数据字。
在本发明的特定实施例中,DRAM字地址列表不包括当前正处于高速缓 冲存储器P$中的DRAM字。这些DRAM字可以是应用到视频块运动补偿中的整个DRAM字集合的任一个子集。通过MCU、MAU和P$设计的优点,列表中的DRAM字地址的顺序可以先是整个宏块中的所有亮度DRAM字,然后是同一宏块中的所有色度DRAM字。亮度列表,然后是色度列表,每个宏块中DRAM字地址的顺序可在P$丢失宏块中所有DRAM字的情况下产生的存储器开销量最小。当P$命中指定宏块所需要的一些DRAM字时,那些DRAM字不会出现在通过PFRI发往存储器控制器603的地址列表中,而余下的所请求的DRAM字地址的顺序不会改变。
PFRI上DRAM字地址请求的传输可独立于存储器请求和准予活动,这可通过PFRI上的流控机制来调制。根据本发明的特定实施例,作为PFRI规范的一部分,还包括时钟同步(flop-flop)准备接收协议。
命令将列表在假设的存储器突发之间分成若干组,并使用一组请求来控制一个假设的存储器突发的行为,PFRI包含这样的命令对存储器控制器603和实时调度行为而言是非常重要的。可通过存储器控制器603的结构来设定每个组的大小,但这种选择会以微妙而重要的方式对RTS行为产生影响。在本发明的特定实施例中,每个组中DRAM字地址的数量被限制为16个。PFRI还可包含组尾指示,用于指出每组DRAM字地址的尾部。
如果组大小限制在16个16字节DRAM字以内(这少于MCU预测在一些情况下要求的最大请求大小(例如,示范性实施例中AVC的24,VC-1的28)),MAU会将这些较大的地址列表分成2个组,或者采取其他一些方法来限制组大小。假设存储器控制器603将每个组视为一次存储器处理,通过这种方式来分割组会增加存储器周期总开销。作为选择的,组的最大大小至少要与一个宏块预测中使用的DRAM字的最大数量一样大。
在本发明的特定实施例中,MAU可向存储器控制器603发送“簇开放提示”和“簇关闭提示”命令。簇开放提示将通知存储器控制器603,紧随其后(但不必是PFRI上的下一命令)的一个或多个DRAM字地址可能需要使用一个特定的簇-行。簇关闭提示会通知存储器控制器603,至少直到同一簇中的最新开放的簇-行关闭之前,以后的DRAM字地址不需要前面DRAM字地址所需要的特定簇-行。
在本发明的特定实施例中,通过PFRI所请求的读数据、通过PFRI发送的DRAM字地址请求组成了与通过总线发送的请求类似的存储器访问请求。MAU具备用于PRFI请求的唯一的客户标识符ID。当一组PFRI请求赢得存储器仲裁时,存储器控制器603从存储器中读取所请求的数据,然后连同数据一起通过总线向MAU客户端ID返回一个ACK。
可对PFRI进行指定,使得请求可在最大可能的存储器地址空间中查阅DRAM字地址。例如,该接口可设计为支持4GB(32位)存储器地址空间。因此,在示范性实施例中,PFRI上请求的每个DRAM字地址应当使用28(32-4)位。存储器控制器603可简单的忽略(丢弃)所有高位地址位,这些地址位代表的是特定的存储器控制器603所不支持的地址。
PFRI还可包含指示命令和数据的信号,以及适于高速工作的流控信号。PFRI上的命令通常可包括组尾命令,来描述Gword请求组。
PFRI的时钟频率可独立于存储器控制器603和视频解码器601中的其他时钟频率来选择。但是,最好规定PFRI按照存储器的时钟频率工作,来优化MAU中逻辑710的设计,并使得信息所跨越的时钟边界最小。作为选择的,基于类似的原因,最好使PFRI按照MAU时钟频率工作。
现在参照图8,其中示出了依据本发明实施例的存取基准像素数据的流程 图。在步骤805,输入705收到基准像素块请求。
在步骤810,逻辑710从输入端口收到的像素块请求生成地址列表请求。在步骤815,输出端口Q715通过PFRI将该请求发往存储器控制器603。在步骤817,存储器控制器从DRAM中接收数据。在步骤820,存储器访问单元从总线接收像素数据。
现参照图9,其中示出了依据本发明实施例的基准像素数据传送的流程图。在步骤905,存储器控制器603等待直到它接收地址列表访问请求。在步骤910,存储器控制器在地址列表访问请求与一个或多个客户端的存储器访问请求之间进行仲裁。当地址列表访问请求从仲裁中胜出时,在步骤915,存储器控制器从DRAM中读取数据,然后以突发地址列表发送地址中的数据。
这里描述的实施例可以作为单个芯片、应用专用集成电路(ASIC)以板级产品来实现,或者作为单独的部件与系统的其他部分进行不同级别的系统集成。作为选择的,本发明的特定方面是通过固件实现的。集成的程度主要由速度和成本因素来决定。
虽然本发明是参照特定的实施例进行描述的,但本领域的技术人员应当明白,在不脱离本发明范围的情况下,可以对本发明进行各种修改或者等效的替换。
此外,在不脱离本发明范围的前提下,还可根据具体的情况和使用的材料对本发明进行修改。例如,执行视频编码或其他处理的处理器可使用PFRI,尽管在本发明中描述为视频解码器。例如,PFRI可设计为通过共享PFRI接口以及在存储器控制器内包含多个队列,来支持多个请求者,例如,存储器访问单元MAU。作为选择的,一个以上的PFRI可对存储器控制器进行访问。此外,一个以上的不同设备例如如运动补偿单元和解块器,或运动评估单元和运 动补偿单元可通过单个存储器访问单元发出请求。
因此,本发明并非仅限于所公开的特定实施例,而是包含落入本发明权利要求范围内的所有实施例。