CN101527849B - 集成视频解码器的存储系统 - Google Patents
集成视频解码器的存储系统 Download PDFInfo
- Publication number
- CN101527849B CN101527849B CN 200910081201 CN200910081201A CN101527849B CN 101527849 B CN101527849 B CN 101527849B CN 200910081201 CN200910081201 CN 200910081201 CN 200910081201 A CN200910081201 A CN 200910081201A CN 101527849 B CN101527849 B CN 101527849B
- Authority
- CN
- China
- Prior art keywords
- data
- storage
- port
- memory
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
集成视频解码器的能降低功耗的存储系统,属于基于块的视频编解码标准的解码器存储管理领域,其特征在于,用压缩模块对重建数据进行重压缩,在读取参考数据和显示数据时再分别解压缩以减少解码器和片外存储器的数据交换量;用存储地址生成模块定制出合理的参考帧存储映射结构,减少读写过程中所需要进行的行激活操作次数;用一个基于4个存储信号端口结构的存储控制器,以减少解码器的片上存储,并提高存储器的带宽;用低功耗编解码对存储内容进行低功耗编码,降低存储器中由于泄漏而产生的静态功耗。
Description
技术领域
“集成视频解码器的存储系统”直接应用的技术领域是采用基于块的视频编解码标准的解码器的存储结构的优化设计。
背景技术
随着视频编解码技术的发展,多媒体业务的种类越来越多,应用也越来越广泛,比如数字电视,移动电视,MP4,数码相框等都和人们的生活息息相关。在众多视频编解码标准中,大多采用了基于块的压缩方法,例如MPEG-2、H.264等;同时,这两种标准也是当前应用最广泛的视频编解码标准。MPEG-2应用于DVD存储,数字电视广播等领域,而H.264主要应用于便携式的多媒体设备如MP4等消费电子类产品。
近年来电路的处理能力快速增强,对视频的处理也已经向标清和高清(1920×1080)迈进,所处理的数据量急剧增加。而相比CMOS电路计算能力的发展速度,存储器的速度发展显得比较落后(见文献Susan L.Graham,Marc Snir,and Cynthia A.Patterson,“Getting up to speed:The Future of Supercompting,”The National Academies Press,Washington,D.C.,2004)。在视频解码过程中,需要保存参考帧图像的数据信息以支持后续解码过程,即需要对大量数据进行存储和读取操作,所需的存储带宽较高,而存储器所消耗的能量在系统中的比重也较大,因此对存储器的操作常常构成视频解码器设计的瓶颈。
多数多媒体处理系统通常以SDRAM(同步动态随机存取存储器)作为片外存储器,解码过程中的参考帧存储和显示之前的数据缓存都通过SDRAM来实现。视频解码过程中需要的存储带宽主要来自重建数据写回,参考帧数据读取,帧图像显示和读取输入压缩码流四部分操作,其中前三部分一般都是通过和SDRAM进行数据交互完成的,需要对SDRAM进行大量的读、写以及行激活等操作,从而对存储数据带宽提出了很高的要求。一般情况下,一个支持HDTV分辨率(1920×1080),帧率为30帧每秒的MPEG-2解码器需要的存储数据带宽大于2Gbps,而同样的H.264解码器在最坏情况下需要的带宽可达10Gbps(见文献K.Kawakami,M.Kuroda,H.Kawaguchi,and M.Yoshimoto,“Power and Memory Bandwidth Reduction of anH.264/AVC HDTV Decoder LSI with Elastic Pipeline Architecture,”Proceedings of Asia and SouthPacific Design Automation Conference(ASP-DAC′07),2007.)。
视频解码中对存储器的操作不仅需要很高的数据带宽,也会消耗系统中很大一部能量。存储器的能耗主要包括动态能耗和静态能耗两部分,公式为:其中M为存储器的bank(存储阵列)数目;而且静态功耗为其处于空闲状态的功耗,公式为:动态功耗以读写和行激活,充电操作的功耗为主,公式为,其中为读/写的次数(见文献Seong-II Park,Yongseok Yi,andIn-Cheol Park,“High Performance Memory Mode Control for HDTV Decoders”,IEEETransactions on Consumer Electronics,Vol.49,No.4,pp.134-1353,2003.)。在当前的技术水平下,基于Micron公司的SDRAM模型,视频解码过程中存储器部分消耗的能量占视频解码系统能量的很大一部分(见文献SDRAM System-Power Calculator,http://www.micron.com/systemcalc.)。因此减少对片外存储器的操作,可以减少系统的能耗也能够降低视频解码所需要的存储带宽。
解决视频解码过程中的存储带宽和功耗问题主要从以下几个方面入手:一方面可以通过减少和存储交互的数据量来同时优化存储器的带宽和动态能耗,也就是对存储数据进行重压缩;另一方面在交互数据量一定的情况下,可以通过图像存储映射方式,存储控制器设计来减少行激活操作的数据,提高带宽利用率;其次,也可以根据存储器的特点对存储的数据进行处理以优化存储器的静态功耗。
在基于块的编码标准中,对数据的操作是以宏块MB(16×16)为单位的,所以解码过程中重建数据的写回和参考帧读取都是基于宏块进行的。根据这个特点,此过程中对数据的压缩和存储方法也是基于宏块进行的。Hideo Ohira提出了一种非线性一维的差分编码方式对存储的参考帧图像进行压缩,以块为单位,每个块都采用相同的压缩比(见文献Hideo Ohira,andFumitoshi Karube,“A Memory Reduction Approach for MPEG decoding System,”IEICE Trans.On Fundamentals,Vol.E82-A,pp.1588-1591,Aug,1999.)。Lee则采用了一种改进后的Hadamard变换和哥伦布编码联合的方法对每个块(8×8)的每行象素进行压缩,将其编码为32bit的段,即压缩到50%(见文献T.Y.Lee,“A New Frame-Recompression Algorithm and its HardwareDesign for MPEG-2 Video Decoders,”IEEE Transactions on Circuits and Systems for VideoTechnology,Vol.13,No.6,June,2003,pp.529-534.)。Chen提出了一种自适应的存储方法,根据当前宏块的类型以及剩余的存储空间决定此宏块是以重建数据、压缩数据还是运动向量的方式存储(见文献C.C.Chen,and O.T.Chen,“Slice-Based Memory Reduction and Management forStoring Multiple Reference Frames of H.264 Video Codec,”Proceedings of 2006 IEEE Region 10Conference,2006.)。这些方法都能减少存储的数据量,但是其共同存在的问题是,对参考帧数据采用了有损压缩,会降低图像的质量还会引起误码扩散问题;另外,处理中采用了不定长或者变换编码,当遇到被参考的宏块需要跨越多个相邻宏块的情况时会增加需要读取的数据量,带来额外的代价。
在存储的优化管理方面也有很多研究成果。传统的存储方法(记为传统方法)是在存储器中将图像的行列顺序和存储器的行列顺序对应,即图像同一行的数据存储在存储器存储空间的同一行,而亮度和色度分量分别存储在两个不同的存储空间。而基于块的视频解码是以宏块为单位进行的,那么每存储一个宏块的数据就需要进行多次行地址的变换,而在读取图像显示时,因为需要联合读取亮度和色度数据,也将不停的进行行地址变换,这会使存储器消耗大量的能量,也会增加读取和写入需要的延时。Kim提出了一种阵列地址翻译技术,对于帧数据的存储,定义一个窗口,窗口内的象素作为一个阵列一起进行存储地址映射,减少换行的次数,也简化地址映射的运算(见文献Hansoo Kim,and In-Cheol Park,“High-Performanceand Low-Power Memory-Interface Architecture for Video Processing Applications,”IEEETransactions on Circuits and Systems for Video Technology,Vol.11,No.11,pp.1160-1170,Nov.2001)。Jia对MPEG-2解码器中的运动补偿部分进行了改进,采用四个象素生成器并行执行双向预测和半象素预测,同时针对多bank的存储器改进存储方式,将4个上下左右相邻的窗口内的象素存储在不同bank的同一行中(记为Window4方法),减少了Memory的延时(见文献Jia Xiaoling,Chen Guanghua,and Zou Weiyu,“A High-Speed Memory Interface Architecturefor MPEG-2 Video Decoder,”Proceedings of High Density Microsystem Design and Packaging andComponent Failure Analysis,2005 Conference on,2005.)。为了进一步提高存储器的吞吐率,Wang提出了一种新的地址映射和数据管理方式,其基于多片SDRAM的系统结构,将宏块分组,每32个宏块(MB)一组,每组MB存储在多片SDRAM的相同行中;另外,改变亮度和色度信号的读取顺序以减少行激活的次数(见文献Tsun-Hsien Wang,and Ching-Te Chiu,“LowPower Design of High Performance Memory Access Architecture For HDTV Decoder,”Proceedings of ICME 2007,pp.699-702,2007.)。
随着集成电路特征尺寸的不断缩小,晶体管中的泄漏电流越来越大,由此造成的静态功耗占整体功耗的比重越来越大。存储器都是由基本单元构成的阵列结构,由于基本单元中的不对称性,当存储不同内容的数据时,所需要的静态功耗是不一样的,本质上就是由于存储逻辑1和逻辑0造成的泄漏电流不同。通常来说,逻辑1代表的是高电平,因此对应的泄漏电流会相对大一些,而逻辑0对应的低电平则会由相对小的泄漏电流。根据存储器的这类特点,可以利用两种存储状态的不同进行优化以降低存储器的功耗。
发明内容
本发明提出了一种适用于基于块的视频解码器中的存储优化结构。在此结构中,对解码重建的数据进行重压缩,在参考数据读取和显示数据读取时需要对读出的数据解压缩,以减少解码器和片外存储器的数据交互量;同时,采用一种合理的参考帧存储映射结构,以减少存储和读取过程中所需要的行激活操作次数;采用了多端口结构的存储控制器,可以减少解码器的片上存储单元(SRAM)以减小解码器面积降低成本,并能提高存储器的带宽;最后,对存储内容进行低功耗编码,使得存储器中低功耗状态存储单元增加,从而降低存储器中由于泄漏电流产生的静态功耗。
本发明的特征在于:
含有:压缩模块、第一解压缩模块、第二解压缩模块、存储地址生成模块、第一读取地址模块、第二读取地址模块、低功耗编解码模块、以及存储控制器,其中:
压缩模块,对至少包含MPEG-2在内的以宏块为单位的解码重建后的图像数据,以块为单位按以下步骤采用简化定长字典方法进行压缩:
第一步:根据一个所述的块中互不相同的数据的个数来确定存储方式:
当一个所述块中互不相同的数据个数大于15时,采用以原数据存储;在小于或等于15时采用压缩存储,
第二步:确定一个所述块中的存储内容:
对于原数据存储,所述存储内容由存储方式说明及原数据组成,该存储方式说明用8个bit表示,等于一个字节,最低位为0,表示原数据存储,其余7位为所述块中第一个数据的前7个比特,
对于压缩存储,要按照所述块中不同数据的个数确定每个数据采用多少比特存储:1~2个数据采用1比特,3~4个数据采用2比特,5~8个数据采用3比特,9~15个数据采用4比特,总计用4个比特0000~1110就能对应15个互不相同的数据,构成了存储方式说明中的高4位,次高位存两个编码比特数,用00~11对应于1~4共四种压缩存储情况,最低位用1表示压缩存储,次低位可用1或0填充,总计用8个比特构成存储方式说明,其次为字典部分和压缩后数据部分,共同构成了所述存储内容;所述字典部分中的每个元素用8个比特表示,代表待编码的数据,对该待编码数据的编码为其在字典中的序号,得到和相应编码比特数对应的二进制编码;
解压缩模块,包括第一解压缩模块和第二解压缩模块,都首先读取所述存储方式说明中的8个比特的数据,再根据最低位判断当前块的存储方式,若为原始数据存储,则将后续数据依次读出,作为参考数据,若为压缩存储,则根据高四位判断字典元素的个数,用N表示,并根据后续的2个比特判断编码比特数,用M表示,再加上后续的字典部分和压缩后数据部分一起进行解码,得到原始数据,第一解压缩模块输出到解码器的运动补偿模块,第二解压缩模块输出到显示控制器中,
存储控制器是一个多端口的SDRAM控制器,设有P0、P1、P2、P3四个拥有独立的先入先出功能FIFO的端口,其中:
P0端口,为显示读出端口,读取地址输入端与所述第二读取地址模块的输出端相连,该第二读取地址模块在显示控制信号控制下输出读取地址,该P0端口的压缩数据输出端与所述第二解压缩模块的数据输入端相连,供解压缩后作为显示图像数据输出,
P1端口,为重建图像数据存储端口,压缩数据输入端和所述压缩模块的输出端相连,存储地址输入端和所述存储地址生成模块的输出端相连,在重建控制信号作用下,所述存储地址生成模块向该P1端口输入存储地址以便存储压缩后的数据,所述存储地址生成模块按以下方式定制所述图像数据在存储存储器中的存储方式:把同一宏块的亮度和色度分量都存储在实际存储空间的同一行,又由于所述存储控制器是一个基于4个存储Bank结构的SDRAM,因此,把上下左右相邻的10个宏块定义为一个窗口,都存储在所述4个存储Bank的同一行,每个存储Bank的一行能存储4个宏块的亮度数据,或者8个宏块的色度数据,
P2端口,为运动补偿的参考数据读取端口,读取地址输入端与所述第一读取地址模块的输出端相连,而所述P2端口的数据输出端与所述第一解压缩模块的输入端相连,在读取控制信号控制下,该第一读取地址模块向所述P2端口输入读取地址,而相应读出的存储数据经解压缩后形成运动补偿所需要的参考数据,
P3端口,为保留端口,以提供其他可能的应用,
在所述各端口中,P0端口的优先级最高,其次为P1端口,最后为P2端口;
所述存储控制器,共有6个状态:SDRAM初始化Init_SDRAM,响应P0端口P0_Active,响应P1端口P1_Active,响应P2端口P2_Active,响应P3端口P3_Active,以及空闲状态Idle,
片外存储器写入或读出的数据要通过低功耗编解码器输入到所述存储控制器,或从所述存储控制器读取,但此时,该存储控制器必须向所述片外存储器输出相应的控制信号和读写地址;
低功耗编码器依次按以下步骤进行低功耗编码:
第一步,确定所述片外存储器中存储信号0为低功耗P(0)状态,此时存储信号1的静态功耗P(1)>P(0),
第二步,在向所述片外存储器进行写入时,当原始的待写入数据的存储信号1的比例大于存储信号0的比特时,则把原始待写入的数据按位取反后存入所述片外存储器,否则,把原始的待写入数据直接写入所述片外存储器,同时把一个表示数据是否进行了翻转的比特为也存入该片外存储器,
第三步,在从所述片外存储器中读取数据时,同时读取所述指示数据是否翻转的一个比特位,若经判断已知把数据进行了翻转,则把读出的数据本身按位取反,送到相应的端口,否则,直接把读取的原始数据送到相应的端口。
本发明的有益效果是:
与传统的解码器相比,本发明所述的存储优化结构可以从多个方面降低解码器存储系统的功耗。首先,通过减少存储器和片外存储器交互的数据量以及行激活操作的次数,可以降低存储器的动态功耗,其次多端口结构的存储控制器可以减少片上缓存的大小从而降低解码芯片的成本,并且低功耗编码方法可以降低片外存储器存储内容的静态功耗。
附图说明
图1.传统的基于宏块的MPEG-2解码流程图;
图2.本发明所述存储优化结构示意图;
图3.采用本发明所述方法的MPEG-2解码器示例图;
图4.宏块中的亮度、色度块结构示意图;
图5.一个宏块的参考数据跨越4个宏块的情况示意图;
图6.本发明所述的存储方式说明字段的说明图示;
图7.4个bank结构的SDRAM的示意图;
图8.本发明所述方法中图像中的窗口划分及宏块对应的存储位置示意图;
图9.本发明所述的方法中存储在同一行的10个宏块的亮度和色度数据在4个bank中的分配示意图;
图10.本发明所述的多端口存储控制器的状态转移图,其中的(1)~(5)代表的意义分别如下:
(1)P0_req
(2)!P0_req&P1_req
(3)!P0_req&!P1_req&P2_req
(4)!P0_req&!P1_req&!P2_req&P3_req
(5)!P0_req&!P1_req&!P2_req&!P3_req。
具体实施方式
以MPEG-2解码器为例说明本发明的实施方式。传统的MPEG视频解码的实现框图如附图1所示,其中粗箭头线代表数据信号,而细箭头线代表控制信号。视频流的解码以帧为单位进行,每帧内是以宏块为单位进行的。主控制器控制整个解码流程,使各个模块协同工作,完成视频解码。显示控制对解码后的帧进行图像重排,按顺序控制时间进行显示。输入的压缩比特流首先经过熵解码,得到变换后的频域系数,然后再经过反变换和反量化得到象素域数据。如果是I帧得到的即是图像数据,可以直接进行帧存储;如果是P帧或者B帧,得到的就是残差数据,需要和其所参考的数据进行相加(也就是运动补偿)得到图像数据,然后再进行帧存储;解码的帧经过重新排序输出,得到解码后的视频序列。存储控制器控制帧存储数据与各个模块之间的交互,主要实现数据地址生成,存储器指令生成以及存储器模式控制等功能。各个模块处理一个宏块需要的周期数不同,主控制器就是用来控制每个模块的工作状态,使其能正确读取每个宏块经过上一模块处理后的数据。
附图2所示为本发明的存储优化结构,其中包括压缩和存储地址生成部分、解压缩1、解压缩2以及多端口的存储控制器以及低功耗编码方法。其中,压缩模块可以减少向片外存储器写入的数据量,而引入了压缩模块,在参考数据和显示数据读取的时候就需要相应的解压缩模块与之对应。存储地址生成用来定制图像数据在存储器中的存储方式,可以减少对片外存储器的行激活操作次数,而读取地址1和读取地址2为与之对应的模块。由于多个模块需要和片外存储器进行数据的交互,本发明采用了多端口结构的存储控制器,即附图2所示的P0~P3端口。同时,还采用了低功耗编码的方法,将送入片外存储器的数据进行再编码,使存储的能耗进一步降低。
附图3所示为采用本发明所述的存储优化方法的MPEG-2解码器框图。双层实线框内为解码器部分,与附图1的结构大致相同,由主控制器控制各部分协同工作进行解码;而片外存储器和显示器为外部设备,片外存储器用于存储当前解码帧以及参考帧的数据,显示器用于顺序显示解码后的图像。
基于块的视频解码,以MPEG-2为例,其解码流程是以宏块为单位对编码后的压缩数据进行解码并重建得到图像数据的。那么重建帧的存储也是以宏块为单位进行的。后面的叙述中,宏块定义为尺寸为16×16的象素矩阵,而8×8的象素矩阵定义为块。以常用的色差格式4:2:0(即色度信号U、V在水平和垂直方向的采样密度都是亮度信号Y的一半)为例,每个16×16的宏块中包含6个8×8的块,其中包括四个Y块,一个U块和一个V块。附图4中所示数字为一个宏块中6个块的处理顺序。
其中压缩模块的的输入为解码重建后的数据,本发明所述的优化方法中对重建后数据的压缩结合解码处理过程的特点,以块为单位将数据进行压缩处理,再送入存储控制器的P0端口。所采用的压缩方法,需要考虑视频解码过程的特点。解码过程中,I帧和/或P帧图像重建后在后续解码过程中还会被作为参考帧读取,即从存储器中读取出来,与残差相加得到当前帧的图像数据(后文中都将当前解码的帧称作当前帧,而被参考的帧称为参考帧,如果参考帧时间顺序上在当前帧之前,则称作前向参考帧,否则称为后向参考帧)。在当前宏块的参考数据跨越参考帧的四个宏块的情况下,如图5所示,当前帧的MB0需要将其残差和参考帧的MB1~MB4对应的部分数据进行相加得到其重建数据,如果对于参考帧的压缩在宏块内采用了不定长编码,那么读取MB0的参考帧数据时就需要同时读取MB1~MB4四个宏块的数据并进行解码;在宏块的压缩比不足够大的情况下,需要读取的数据量就会增加,也就是对存储数据的压缩会带来额外的代价。另外,如果压缩过程中带来误差,在后续的运动补偿操作中会出现误码扩散的问题,影响解码后的图像质量。因此,可以根据不能的应用需求选取不同的压缩方法。如果对视频质量要求不太高,可以采用压缩比较高的压缩方法,以减少与外部存储器的交互量;相反在对视频质量要求较高的应用中,应选用误差小,甚至无损的,且数据间依赖性较弱的压缩方法,以避免读取数据量的增加。另外,在序列中B帧(双向参考帧,其不会被用来作为参考帧)较多的情况下,也可以采取只对B帧进行压缩,这样可以采用数据间依赖性相对较高的压缩方法来提高压缩比。
本发明中以一种基于块的简化定长字典压缩方法为例来说明对重建图像数据进行压缩的效果。压缩以块为单位进行。对于每个8×8的块,对其数据进行一遍扫描,根据其特点来决定其存储的方式:压缩存储还是以原数据存储。如果一个块中互不相同的数据个数大于15,则按照原数据存储,否则将其压缩存储。如果采用压缩存储,再按照块中不同数据的个数决定每个数据采用多少比特(bit)存储:1~2个数据采用1bit,3~4个数据采用2bit,5~8个数据采用3bit,9~15个数据采用4bit。每个块的存储内容分为3部分,从前到后依次为:存储方式说明,字典部分,压缩后数据部分。如果按原数据存储则没有字典部分,存储方式说明后即为原始数据存储。存储方式说明部分采用8个比特表示,即1字节,每个bit表示的意义如附图5中所示,其中图6(a)为以压缩存储方式的情况,存储方式说明的内容包括字典元素个数、编码比特数、以及压缩存储还是原数据存储的说明,次低位可以用0或1填充,不表示特别的意义;图6(b)所示为以原数据存储的情况,只有最低位表示原数据存储,其他比特位为块中第一个数据的高7位。字典中的每个元素用8个bit表示,存储内容即为待编码的数据,对此数据的编码为其在字典中的序号,得到和其编码bit数对应的二进制编码。字典元素后存储的就是块中数据编码后的结果。如果块以原始数据存储,则存储方式说明后即为原始数据,每个用8bit表示,按照从左到右,从上到下的顺序依次存储。这种压缩方法简单、易于实现,而且几乎无损,能保证解码图像的质量;同时压缩后其数据之间的依赖性相对较小,便于在运动补偿过程中设计灵活的读取方式以减少读取的数据量。
解压缩为压缩过程的逆过程。读取存储的前8个bit的数据,根据第8个bit判断当前块的存储方式。如果其以原始数据存储,则将后续数据即为象素数据,将其依次输出。如果以压缩数据存储,则根据前4个bit判断字典元素的个数,即为N,并根据后续的2个bit判断编码bit数,记为M。然后将后续输入的N的8bit的数据(即字典元素)通过控制单元的控制经复用器存入相应的寄存器(R0~RN-1)。后续输入的数据,分别截取M bit,根据其数据值,由判断和控制单元控制选择器选择相应寄存器中的数据依次输出,即为解压缩后的原始数据。
为了验证本方法的效果,我们采用一些HDTV大小的视频序列作为测试序列。这些视频序列都采用4:2:0的YUV色差格式,每个序列含有6帧。采用MPEG-2标准的编码器对其进行编码得到编码码流,编码帧格式依次为IBBPBI,其他信息如表1中所示。然后在将编码后的码流进行解码的过程中,将需要存储的参考帧数据按照本发明所述的方法进行压缩,读取参考帧数据时再将相应数据进行解压缩,分析其得到的效果。
表1测试序列的编码参数信息
视频序列 | 大小 | 帧数 | 编码码率 | 帧类型 | 编码级别 |
Area | 1920×1080 | 6 | 20M | IBBPBI | MPHL |
Bluesky | 1920×1080 | 6 | 20M | IBBPBI | MPHL |
Riverbed | 1920×1080 | 6 | 20M | IBBPBI | MPHL |
Rush_hour | 1920×1080 | 6 | 20M | IBBPBI | MPHL |
Station | 1920×1080 | 6 | 20M | IBBPBI | MPHL |
Sunflower | 1920×1080 | 6 | 20M | IBBPBI | MPHL |
将测试序列需要存储的数据用本发明所述的简化定长字典方法压缩,分别计算Y、U、V分量压缩后的字节数与原字节数的百分比,如表2所示。对于1920×1080大小的序列Y分量的压缩比多数都能达到60%左右;而对于U、V分量,这几个序列都可以达到50%左右或者更低,也就意味着采用此方法,可以将解码过程中写入存储器的数据量减少50%左右。
表2各测试序列的压缩效果(压缩后字节数与原字节数百分比)
视频序列 | 大小 | Y(%) | U(%) | V(%) | Total1(YUV) |
Area | 1920×1080 | 56.33 | 28.75 | 24.79 | 46.48 |
Bluesky | 1920×1080 | 49.39 | 43.77 | 37.13 | 46.41 |
Riverbed | 1920×1080 | 84.07 | 40.25 | 26.00 | 67.09 |
Rush_hour | 1920×1080 | 65.05 | 37.60 | 30.89 | 54.78 |
Station | 1920×1080 | 76.62 | 39.19 | 39.89 | 64.26 |
Sunflower | 1920×1080 | 64.68 | 63.49 | 50.57 | 62.13 |
图像在存储器中的存储映射方式会影响数据读写过程中需要的行激活操作次数,而行激活操作也是SDRAM工作时最消耗能量的操作之一。本发明采用将同一个宏块的亮度和色度分量都存储在实际存储空间的同一行,并且将上下左右相邻的10个宏块存储在同一行的映射方法。当前的多bank结构SDRAM存储器以4个bank结构居多,本发明所述的方法即基于4个bank结构的SDRAM实现,附图7所示即为含有4个bank的SDRAM示意图。本方法给每个块分配同样的存储空间,即64×8=512bit。存储器每行(也就是一个page)的存储单元为8Kbit(即8192个),而每个宏块含有4个亮度块和2个色度块,按每个数据8bit计算,总共64×6×8=3072bit。而一块SDRAM含有4个bank,每行为8192bit,因此4个bank的同一行最多可以存储10个宏块的数据。因此,在本发明所述的方法中,上下左右相邻的10个宏块存储在4个bank的同一行,如附图7所示。而一个宏块中,亮度数据共有2048bit,色度数据共有1024bit,因此一个bank的一行可以存储4个宏块的亮度数据或者8个宏块的色度数据。
在本发明所述的方法中,我们定义一个窗口包含10个宏块,在一个窗口内的宏块数据存储在同一行地址空间中。附图8所示即为窗口分割及其对应的存储器的行地址示意图。每相邻的2行5列中的10个宏块划分为一个窗口,后续按照图像行顺序从左到右分配,最后不足5列则按5列记,也划分为一个窗口。窗口内的数据按照图像空间顺序从左到右,从上到下依次存储在存储器的相邻行内。附图9所示为每个窗口中的宏块数据在4个bank的行地址空间中的分配方式。这里我们给10个宏块按图中所示的方式编号为0~9,以第0宏块为例,其亮度分量记为Y0(为16×16的象素块),色度分量记为UV0(为两个8×8的象素块)。每个bank的每行空间被等分为4份,即每份含有2048个存储单元,正好可以存储一个宏块的亮度分量或者两个宏块的色度分量。如附图11所示,bank0和bank1分别存储宏块0、1、2、3、5、6、7、8的亮度分量,bank2存储上述宏块的色度分量;bank3存储宏块4、9的亮度和色度分量。
图像数据在存储器中的不同存储方式主要影响的参数为对于存储器的行激活次数,而行激活操作。在这里我们将本发明的方法和之前所述的传统方法以及典型的Window4方法进行了对比。视频解码过程中,除了读取待解码数据,需要对SDRAM进行操作的主要包括三部分:重建数据写回,参考帧读取和显示图像数据读取。表3所示为在对测试序列进行解码的过程中三种方法需要的行激活总数的比较。从表中可以看出,对于以一块4个bank的SDRAM作为片外存储的解码器结构,相比传统方法,本方法的行激活次数可以减少95%以上,而相比之前提出的Window4以及与其类似的方法,本方法的行激活次数可以减少85%左右。
表3三种方法中行激活次数总数的比较
上面的读写数据减少以及行激活次数减少情况是基于MPEG-2解码器统计的,本发明所述的方法也同样适用于其他基于块的视频解码标准,例如H.264解码等,并能够得到类似的效果。
视频解码过程中,重建图像存储、运动补偿参考数据读取以及显示数据的读取都需要和片外存储器进行交互。而存储控制器负责协调管理解码器多个功能单元对存储器的读写操作,因此存储控制器的设计会影响系统的存储带宽。许多现有的解码器使用片上总线加DMA(Direct Memory Access)来实现多个单元对存储带宽的共享,但是这种结构通常需要较大的片上缓存来存储数据。本发明中采用一种多端口的SDRAM控制器,该控制器为共享SDRAM数据带宽资源的各个功能单元设置了独立的端口,即附图2所示的P0,P1,P2,P3端口,各端口拥有独立的读写FIFO。同时存储控制器集成了仲裁功能及数据、地址路径,并且可以根据各个端口所连接的功能单元的特点设置各个端口被响应的优先级。
以MPEG-2解码器中的应用为例,如附图3所示,P0端口为显示读取端口,P1端口为重建图像数据存储端口,P2端口为运动补偿的参考数据读取端口,而P3为保留端口,以提供其他可能的应用。在本例中,压缩单元将压缩后的数据送到P1的数据端口,同时存储地址单元将数据需要存储的地址以及写请求信号送到P1的地址和控制端口。而读取地址1单元通过读取控制信号将读取地址和读请求信号送到P2的地址和控制端口,并且P2数据端口将读取到的数据送到解压缩1单元,解压缩后的数据供运动补偿单元使用;读取地址2单元通过显示控制信号将显示需要数据的读取地址和读请求信号送到P0的地址和控制端口,并且P0数据端口将读取到的数据送到解压缩2单元进行解压缩接到显示需要的图像数据。这里我们设置P0端口的优先级最高,其次是P1端口,最后为P2端口。
各个端口的数据、地址和请求由存储控制器进行管理。控制器共有6个状态,分别为SDRAM初始化(Init_SDRAM),空闲状态(Idle),响应P0端口(P0_Active),响应P1端口(P1_Active),响应P2端口(P2_Active),和响应P3端口(P3_Active)。空闲状态时SDRAM不进行读写操作,而当响应某个端口时,就把这个端口的请求、地址信息送到SDRAM,如果为写请求,就将输入端口的数据通过低功耗编码送到片外存储器,如果为读请求,则将读取到的数据通过低功耗解码送到响应端口的数据端。附图10所示为控制流程示意图。图中P0端口的有操作请求用P0_req表示,而没有请求用!P0_req表示,其他端口类似。解码器启动以后,首先进行将SDRAM进行初始化,初始化完成后进入Idle状态。当所有端口都没有读写请求时,存储控制器保持在Idle状态。如果P0端口出现请求,如附图10中条件(1),则进入P0_Active状态,完成此次操作后返回Idle状态重新进行判断。如果P0端口没有请求而P1端口有请求,如附图10中条件(2),则进入P1_Active状态,完成此次操作后返回Idle状态重新进行判断。同样,如果P0和P1端口都没有请求,而P2端口有请求,如附图10中条件(3),则进入P2_Active状态,完成此次操作后返回Idle状态重新进行判断。P3_Active状态的转换依此类推,如附图10所示。这样每个端口的读写请求可以根据其优先级的设置顺次被响应,控制灵活,同时相对总线加DMA的结构,也可以减少需要片上缓存容量。
送入存储器的数据需要进行低功耗编码,本发明中根据存储器存储逻辑“1”和逻辑“0”的静态功耗不同的特点对存储内容进行编码。首先需要存储存储器中存储单元的低功耗状态。通过比较存储单元存储两种信号的静态功耗而确定其低功耗状态,这里加上存储单元存储信号0的静态功耗为P(0),存储信号1的静态功耗为P(1),并假定P(1)大于P(0),即存储单元存储信号0为低功耗状态。在需要对SDRAM进行写入时,对原始的待写入数据进行统计,判断其中低功耗状态信号的比例。如果信号1的比例大于信号0的比例,也就是低功耗状态信号比例较小,则将原始待写入的数据按位取反后存入SDRAM,否则将原始待写入数据写入SDRAM,并同时将一个表示数据是否进行了翻转的bit也存入存储器。读取数据的时候,同时读取指示其是否被翻转的bit,如果进行翻转,则再将数据进行按位取反送出到相应的端口,否则将读取到的原始数据送到相应的端口。通过对存储内容的低功耗编码,可以使存储器中低功耗状态的存储单元增多,从而降低存储器中由于泄漏电流产生的静态功耗。由于随着集成电路特征尺寸的不断缩小,静态功耗在整体功耗中所占的比重越来越大,此方法最终能降低整个存储器系统的总功耗。
综上所述,在基于块的视频解码过程中,采用本发明所述的存储优化结构,对解码重建后的存储数据进行压缩,在读取参考帧和显示数据时再进行解压缩,可以减少解码器和片外存储交互的数据量;并且,在以多bank的SDRAM为外部存储器的情况下,图像数据在存储器中的地址映射采用同一宏块的亮度和色度数据存储于同一行,上下左右相邻的10个宏块存储于4个bank的相同行的方法可以减少外部存储器的行激活次数;多端口的存储控制器结构可以提高存储带宽减少片上缓存大小;低功耗编解码方法能够降低存储器的静态功耗。本发明所述的方法减少了视频解码过程中需要的存储带宽,也降低了解码过程中存储器的能耗,适用于数据量越来越大的视频解码系统。本说明书中只是就本发明所提出的结构给出了一种实现的例子,在一些其他的应用中还可以采用与其要求更适合的方法,例如重建图像数据的压缩可还以采用熵编码、游程编码、小波变换等方法,而采用不同容量或者特点的片外存储器时也可以根据需要改变存储映射方式等。并且针对不同的编解码标准也可以适当变更本方法的具体实现方式,例如H.264解码器中,可以以宏块或者4×4的块为单位进行解码重建图像数据的压缩。总之,本发明所涉及的内容包含但并不限于本发明书所陈述的内容。
Claims (1)
1.集成视频解码器的存储系统,其特征在于,含有:压缩模块、第一解压缩模块、第二解压缩模块、存储地址生成模块、第一读取地址模块、第二读取地址模块、低功耗编解码模块、以及存储控制器,其中:
压缩模块,对至少包含MPEG-2在内的以宏块为单位的解码重建后的图像数据,以块为单位按以下步骤采用简化定长字典方法进行压缩:
第一步:根据一个所述的块中互不相同的数据的个数来确定存储方式:
当一个所述块中互不相同的数据个数大于15时,采用以原数据存储;在小于或等于15时采用压缩存储,
第二步:确定一个所述块中的存储内容:
对于原数据存储,所述存储内容由存储方式说明及原数据组成,该存储方式说明用8个bit表示,等于一个字节,最低位为0,表示原数据存储,其余7位为所述块中第一个数据的前7个比特,
对于压缩存储,要按照所述块中不同数据的个数确定每个数据采用多少比特存储:1~2个数据采用1比特,3~4个数据采用2比特,5~8个数据采用3比特,9~15个数据采用4比特,总计用4个比特0000~1110就能对应15个互不相同的数据,构成了存储方式说明中的高4位,次高位存两个编码比特数,用00~11对应于1~4共四种压缩存储情况,最低位用1表示压缩存储,次低位可用1或0填充,总计用8个比特构成存储方式说明,其次为字典部分和压缩后数据部分,共同构成了所述存储内容;所述字典部分中的每个元素用8个比特表示,代表待编码的数据,对该待编码数据的编码为其在字典中的序号,得到和相应编码比特数对应的二进制编码;
解压缩模块,包括第一解压缩模块和第二解压缩模块,都首先读取所述存储方式说明中的8个比特的数据,再根据最低位判断当前块的存储方式,若为原始数据存储,则将后续数据依次读出,作为参考数据,若为压缩存储,则根据高四位判断字典元素的个数,用N表示,并根据后续的2个比特判断编码比特数,用M表示,再加上后续的字典部分和压缩后数据部分一起进行解码,得到原始数据,第一解压缩模块输出到解码器的运动补偿模块,第二解压缩模块输出到显示控制器中,
存储控制器是一个多端口的SDRAM控制器,设有P0、P1、P2、P3四个拥有独立的先入先出功能FIFO的端口,其中:
P0端口,为显示读出端口,读取地址输入端与所述第二读取地址模块的输出端相连,该第二读取地址模块在显示控制信号控制下输出读取地址,该P0端口的压缩数据输出端与所述第二解压缩模块的数据输入端相连,供解压缩后作为显示图像数据输出,
P1端口,为重建图像数据存储端口,压缩数据输入端和所述压缩模块的输出端相连,存储地址输入端和所述存储地址生成模块的输出端相连,在重建控制信号作用下,所述存储地址生成模块向该P1端口输入存储地址以便存储压缩后的数据,所述存储地址生成模块按以下方式定制所述图像数据在存储存储器中的存储方式:把同一宏块的亮度和色度分量都存储在实际存储空间的同一行,又由于所述存储控制器是一个基于4个存储Bank结构的SDRAM,因此,把上下左右相邻的10个宏块定义为一个窗口,都存储在所述4个存储Bank的同一行,每个存储Bank的一行能存储4个宏块的亮度数据,或者8个宏块的色度数据,
P2端口,为运动补偿的参考数据读取端口,读取地址输入端与所述第一读取地址模块的输出端相连,而所述P2端口的数据输出端与所述第一解压缩模块的输入端相连,在读取控制信号控制下,该第一读取地址模块向所述P2端口输入读取地址,而相应读出的存储数据经解压缩后形成运动补偿所需要的参考数据,
P3端口,为保留端口,以提供其他可能的应用,
在所述各端口中,P0端口的优先级最高,其次为P1端口,最后为P2端口;
所述存储控制器,共有6个状态:SDRAM初始化Init_SDRAM,响应P0端口P0_Active,响应P1端口P1_Active,响应P2端口P2_Active,响应P3端口P3_Active,以及空闲状态Idle,
片外存储器写入或读出的数据要通过低功耗编解码器输入到所述存储控制器,或从所述存储控制器读取,但此时,该存储控制器必须向所述片外存储器输出相应的控制信号和读写地址;
低功耗编码器依次按以下步骤进行低功耗编码:
第一步,确定所述片外存储器中存储信号0为低功耗P(0)状态,此时存储信号1的静态功耗P(1)>P(0),
第二步,在向所述片外存储器进行写入时,当原始的待写入数据的存储信号1的比例大于存储信号0的比特时,则把原始待写入的数据按位取反后存入所述片外存储器,否则,把原始的待写入数据直接写入所述片外存储器,同时把一个表示数据是否进行了翻转的比特为也存入该片外存储器,
第三步,在从所述片外存储器中读取数据时,同时读取所述指示数据是否翻转的一个比特位,若经判断已知把数据进行了翻转,则把读出的数据本身按位取反,送到相应的端口,否则,直接把读取的原始数据送到相应的端口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910081201 CN101527849B (zh) | 2009-03-30 | 2009-03-30 | 集成视频解码器的存储系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910081201 CN101527849B (zh) | 2009-03-30 | 2009-03-30 | 集成视频解码器的存储系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101527849A CN101527849A (zh) | 2009-09-09 |
CN101527849B true CN101527849B (zh) | 2011-11-09 |
Family
ID=41095509
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910081201 Expired - Fee Related CN101527849B (zh) | 2009-03-30 | 2009-03-30 | 集成视频解码器的存储系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101527849B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101951171B1 (ko) * | 2012-08-09 | 2019-02-25 | 삼성전자 주식회사 | 멀티미디어 프로세싱 시스템 및 그 동작 방법 |
CN104219743B (zh) * | 2013-06-03 | 2018-09-25 | 王大庆 | 用于无线传感和控制的低能耗通信方法和装置 |
US20150121111A1 (en) * | 2013-10-24 | 2015-04-30 | Qualcomm Incorporated | System and method for providing multi-user power saving codebook optmization |
CN104852866B (zh) * | 2014-02-17 | 2019-04-30 | 深圳市中兴微电子技术有限公司 | 一种输出仲裁控制方法和装置 |
US20160227235A1 (en) * | 2015-02-02 | 2016-08-04 | Yaniv Frishman | Wireless bandwidth reduction in an encoder |
CN106954074B (zh) * | 2016-01-07 | 2019-12-20 | 青岛海信电器股份有限公司 | 一种视频数据处理方法和装置 |
CN105744275B (zh) * | 2016-02-22 | 2019-04-05 | 青岛海信电器股份有限公司 | 一种视频数据输入、输出方法和装置 |
CN111133700B (zh) | 2017-09-22 | 2021-06-29 | 华为技术有限公司 | 高速率接收电路 |
CN109815290A (zh) * | 2018-12-24 | 2019-05-28 | 天翼电子商务有限公司 | 数据实时同步装置与同步方法 |
CN110120852A (zh) * | 2019-05-09 | 2019-08-13 | 上海格联医疗科技有限公司 | 一种手持超声设备无线传输提高带宽的数据处理方法 |
CN111726626B (zh) * | 2020-06-18 | 2022-05-03 | 格兰菲智能科技有限公司 | 集成电路及用于视频解码的概率表存储方法 |
WO2022000324A1 (zh) * | 2020-06-30 | 2022-01-06 | 深圳市大疆创新科技有限公司 | 数据编码方法、数据解码方法、数据处理方法、编码器、解码器、系统、可移动平台与计算机可读介质 |
CN112597082B (zh) * | 2020-12-18 | 2023-02-24 | 龙芯中科技术股份有限公司 | 总线的数据传输方法及电子设备 |
CN113824955B (zh) * | 2021-11-22 | 2022-02-18 | 杭州雄迈集成电路技术股份有限公司 | 一种多路视频分时复用编码方法和系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1645928A (zh) * | 2005-02-03 | 2005-07-27 | 清华大学 | 用于压缩视频信号解码的图像存储方法 |
CN101252694A (zh) * | 2008-03-31 | 2008-08-27 | 清华大学 | 基于块的视频解码的帧存储压缩和地址映射系统 |
-
2009
- 2009-03-30 CN CN 200910081201 patent/CN101527849B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1645928A (zh) * | 2005-02-03 | 2005-07-27 | 清华大学 | 用于压缩视频信号解码的图像存储方法 |
CN101252694A (zh) * | 2008-03-31 | 2008-08-27 | 清华大学 | 基于块的视频解码的帧存储压缩和地址映射系统 |
Non-Patent Citations (1)
Title |
---|
吴智华,罗嵘,杨华中.一种用于MPEG2解码芯片的高效内存存储结构.《微电子学》.2007,第37卷(第6期),875-886. * |
Also Published As
Publication number | Publication date |
---|---|
CN101527849A (zh) | 2009-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101527849B (zh) | 集成视频解码器的存储系统 | |
CN101252694B (zh) | 基于块的视频解码的帧存储压缩和地址映射系统 | |
CN101924945B (zh) | 具有可变压缩比和用于存储及检索参考帧数据的缓冲器的视频解码器 | |
CN101248430B (zh) | 视频处理的转置缓冲 | |
CN101908035B (zh) | 视频编解码方法、gpu及其与cpu的交互方法及系统 | |
Kang et al. | MPEG4 AVC/H. 264 decoder with scalable bus architecture and dual memory controller | |
CN105578190A (zh) | 应用于视频硬解码的无损压缩方法及系统 | |
CN101729893B (zh) | 基于软硬件协同处理的mpeg多格式兼容解码方法及其装置 | |
Li et al. | Architecture and bus-arbitration schemes for MPEG-2 video decoder | |
CN101883276B (zh) | 软硬件联合解码的多格式高清视频解码器结构 | |
CN1964495A (zh) | 对实时数码视频影流进行缓存控制的方法和装置 | |
Li et al. | Reducing dram image data access energy consumption in video processing | |
CN101304528B (zh) | 视频处理器视频数据与存储器存储空间的映射方法 | |
CN101448160B (zh) | 带重建数据反馈的像素重建方法及解码器 | |
CN104113759A (zh) | 视频系统、视频帧缓存再压缩/解压缩方法与装置 | |
Fan et al. | A parallel-access mapping method for the data exchange buffers around DCT/IDCT in HEVC encoders based on single-port SRAMs | |
CN101847394B (zh) | 用以解码及显示视讯文件的存储器映射方法及装置 | |
Lin et al. | Low power design for MPEG-2 video decoder | |
Silveira et al. | Reference frame context-adaptive variable-length coder: a real-time hardware-friendly approach for lossless external memory bandwidth reduction in current video-coding systems | |
Yang et al. | An effective dictionary-based display frame compressor | |
Gao et al. | Lossless memory reduction and efficient frame storage architecture for HDTV video decoder | |
Li et al. | An efficient video decoder design for MPEG-2 MP@ ML | |
TWI565303B (zh) | 影像處理系統及影像處理方法 | |
US20090201989A1 (en) | Systems and Methods to Optimize Entropy Decoding | |
Husemann et al. | Optimized solution to accelerate in hardware an intra H. 264/SVC video encoder |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20111109 Termination date: 20180330 |
|
CF01 | Termination of patent right due to non-payment of annual fee |