一种参考数据访问管理方法及装置制造方法

文档序号:6526965阅读:207来源:国知局
一种参考数据访问管理方法及装置制造方法
【专利摘要】本发明还公开了一种适用于H.264/AVC并行编码装置的参考数据访问管理方法及装置,所述参考数据访问管理装置包括多个分别连接一编码核心的一级缓存单元,所述一级缓存单元通过一总线连接于一个二级缓存单元,所述二级缓存单元进一步连接外部存储器。仅当编码核心访问的数据在所有的一级缓存单元与二级缓存单元中均不存在时才需要从外部存储器内获取。本发明可以充分的利用宏块行多核并行H.264编码器访问参考数据的相关性,充分降低其参考数据外部存储器访问量。由于尽可能的消除了各个缓存内重复的缓冲块存储,本发明的硬件开销也很低。
【专利说明】一种参考数据访问管理方法及装置
【技术领域】
[0001]本发明涉及视频编解码领域,尤其涉及一种适用于H.264/AVC并行编码装置的参考数据管理装置,适用于宏块行(Marco-Block Row)为基本单位的并行编码的参考数据访问管理方法及装置。
【背景技术】
[0002]H.264/AVC标准以其卓越的图像压缩性能已经为业界所接受,然而随着需要编码的图像幅面从CIF上升至D1、720P、1080P甚至4kx2k (超高清),H.264编码更高的运算量在一些低功耗要求高的领域就成为一个主要问题。业界降低H.264编码功耗在算法实现阶段采用的手段是通过并行处理来降低编码过程中的硬件/处理器的时钟频率,进而降低硬件运行电压来降低系统功耗。
[0003]另一方面,H.264编码器在进行帧间预测时需要参考帧图像数据(下文简称为参考数据)信息。而由于参考帧图像的尺寸大很难在编码器芯片内部存储,因此通常他们都被存储在外部DDR中。通常对参考帧图像的访问是H.264编码器外部存储器访问的最大部分。减少参考数据的访问量将对削减H.264编码器的外部存储器访问起到重要的作用,并进而降低编码器的整体功耗。
[0004]基于宏块行的H.264/AVC编码方法将图像帧分解为多个宏块行分别提交给多个独立的编码核心,因而只需要增加编码核心的数量,就能够近乎线性的提升编码吞吐率,因此达成高吞吐率的设计变得简单。这使得设计一个高吞吐率的编码器并降低电压与降低工作频率以降低功耗成为可能。
[0005]同时,由于基于宏块行并行的H.264/AVC编码方法通过多个核心并行编码多个宏块行。不仅各个核心处理的各个宏块运动搜索范围存在重叠。其各个核心的运动搜索范围也存在重叠。因此其参考数据的访问局部性相比普通的单核心编码器或者帧/slice级编码器更为突出。在良好的参考数据访问控制管理下,其参考数据访问带宽低于普通基于IevelC数据重用的单核心编码器或者帧/slice级并行的多核心并行编码器。对于典型的应用配置,其理论参考数据访问带宽相对单核心编码器可以降低50%以上。
[0006]但是另一方面,相比单核心编码器的数据访问,多个并行编码核心的并行数据访问以及其访问的相关性使得参考数据访问管理变得更为复杂。而相比成熟的单核心H.264编码器的参考数据访问管理技术,宏块行并行H.264编码器的参考数据访问问题并没有得到完善的解决。
[0007]直观的做法是使用一个多端口 RAM或者cache为所有的编码核心同时提供参考数据,如图1所示。但由于各个核心内部的参考帧访问所具有的高带宽特性(往往达到每时钟周期上百bit,每个宏块的编码需要访问十几到几十个宏块的参考数据),加之运动估计复杂而不对齐于内存边界的数据访问特性使得这个设计从架构到后端设计的难度都很大,尤其是在编码核心数较多的场合。其高复杂度对硬件开销与功耗控制不利。
[0008]一个简单而可行的做法是各个核心均按照通常的单核心编码器方式设计。如图2所示,各个编码核心拥有自己的参考帧数据访问管理模块,并各自独立的访问外部存储器中的参考数据。单核心编码器的参考数据访问控制在业界已经过了大量的探索与研究,常见的基于滑窗或者基于cache的访问管理机制都能够高效率的重用参考帧数据访问(L1-Fu Ding, Multiview Video Coding:Algorithms, VLSI Architectures, andSystem Design, Graduate Institute of Electronics Engineering College ofElectrical Engineering&Computer Science National Taiwan University DoctoralDissertation),因此这种方案的设计难度低。然而这种做法只能利用同一个宏块行内的各个宏块的参考数据访问相关性。而各个宏块行间对参考数据访问的相关性并没有得到利用。也即意味着宏块行并行编码器的数据重用等级仍然停留在levelC,低理论访问带宽的优势无从体现。
[0009]为了消除各个编码核心间对参考数据的重复访问,直观的做法是在第一级的数据访问控制装置与外部存储器之间再增加第二级的数据访问控制装置以提供各个编码核心行间的数据重用,将数据重用等级从IevelC提升至IevelC+或者levelD。任何一个编码核心的参考帧数据在通过本地的第一级数据访问控制装置重用消除水平方向的重复访问后,再由第二级数据访问控制装置控制统一访问外部RAM。这样行间的参考数据重复访问也大部分得到了消除,进一步的降低了全局对外部存储器的访问带宽。测试表明典型场景下带宽可以降低50%以上,外部访问带宽接近IevelD重用但硬件开销远低于levelD。但毫无疑问,增加第二级数据访问控制模块增加了额外的硬件开销。在一个典型的应用场景下,由于参考数据需要在第一与第二级数据访问控制装置中重复存储,大体上会使本地RAM开销加倍。
[0010]将第一级数据访问控制装置内部的局部缓冲,如滑窗或者cache视为分布式RAM并使用NUMA(non-uniform memory access,非一致性内存访问)架构管理有助于减少RAM开销问题,然而通常的cache —致性协议如MOESI对于H.264编码核心而言过于复杂,难以设计与验证。并使得每一个编码核心的数据访问控制模块内部的数据管理都需要考虑其他编码核心,这使得设计格外的复杂化。至今没有采用这种设计的H.264宏块并行编码器的?艮告。

【发明内容】

[0011]本发明所要解决的技术问题是提供一种兼具高吞吐率、低功耗与低硬件开销优点且结构简单易于设计验证的适用于H.264/AVC并行编码装置的参考数据管理方法及装置。
[0012]为实现上述技术效果,本发明公开了一种适用于H.264/AVC并行编码装置的参考数据访问管理方法,所述参考数据访问管理方法包括以下实现步骤:
[0013]编码核心向一级缓存单元发起一个访问请求;
[0014]所述一级缓存单元查询其内部第一多端口 2D缓存器,并向所述编码核心返回参考数据;
[0015]当所述第一多端口 2D缓存器内无匹配参考数据时,所述一级缓存单元通过总线向二级缓存单元发起再填充请求;
[0016]所述二级缓存单元查`询其内部第二多端口 2D缓存器,并向所述一级缓存单元返回再填充参考数据;[0017]当所述第二多端口 2D缓存器内无匹配再填充参考数据时,向外部存储器发出参考数据请求,并将自所述外部存储器返回的参考数据通过总线发送至一级缓存单元。
[0018]所述参考数据访问管理方法进一步的改进在于,当所述第二多端口 2D缓存器内无匹配再填充参考数据时,所述二级缓存单元先查询其内部探听过滤器的条目,并向所述条目所在的一级缓存单元发起请求,所述一级缓存单元根据所述请求从内部取出所请求的参考数据,当所述内部探听过滤器中无匹配条目时,所述二级缓存单元再向所述外部存储器发出参考数据请求。
[0019]本发明还公开了一种适用于H.264/AVC并行编码装置的参考数据访问管理装置,所述参考数据访问管理装置包括多个分别连接一编码核心的一级缓存单元,所述一级缓存单元通过一总线连接于一个二级缓存单元,所述二级缓存单元进一步连接外部存储器。
[0020]所述参考数据访问管理装置进一步的改进在于,所述总线包括总线控制器以及控制连接于所述总线控制器的互连结构,所述互连结构包括用于传输参考数据再填充请求的再填充请求(refilling_req)通道与再填充请求辅助(refilling_ast)通道、以及用于传输参考数据的存留数据(victim)通道与再填充数据(refilling)通道。
[0021]所述参考数据访问管理装置进一步的改进在于,所述一级缓存单元包括第一多端口 2D缓存器,所述一级缓存单元通过所述总线连接至所属的编码核心的运动估计模块,所述一级缓存单元设有再填充请求辅助(refilling_ast)通道与存留数据(victim)通道。
[0022]所述参考数据访问管理装置进一步的改进在于,所述二级缓存单元包括第二多端口 2D缓存器、总线侦听模块、探听过滤器、存留缓冲以及外部参考数据访问模块,所述存留缓冲分别连接所述第二多端口 2D缓存器和所述总线侦听模块,所述第二多端口 2D缓存器进一步连接所述探听过滤器,所述总线侦听模块亦进一步连接所述探听过滤器,所述探听过滤器进一步连接所述外部参考数据访问模块,并且所述外部参考数据访问模块连接所述外部存储器。
[0023]所述参考数据访问管理装置进一步的改进在于,所述一级缓存单元通过所述存留数据(victim)通道连接所述存留缓冲;所述探听过滤器通过所述再填充请求辅助(refilling_ast)通道连接所述一级缓存单元。
[0024]所述参考数据访问管理装置进一步的改进在于,一个或多个所述再填充请求(refilling_req)通道连接至所述总线侦听模块与所述第二多端口 2D缓存器以传输参考数据访问;所述探听过滤器连接至所述再填充请求辅助(refilling_ast)通道以传输参考数据访问。
[0025]所述参考数据访问管理装置进一步的改进在于,所述外部参考数据访问模块连接至所述再填充数据(refilling)通道以传输参考数据。
[0026]本发明由于采用了以上技术方案,使其具有以下有益效果是:
[0027]仅当编码核心访问的数据在所有的一级缓存单元与二级缓存单元中均不存在时才需要从外部存储器内获取。一级缓存单元内的数据可以视为hot数据(指最近被使用的数据),二级缓存单元内的数据可视为cold数据(指最近未被使用的数据),因此本发明实现的全局缓冲块替换策略为一个类LIRS(Low Interreference Recency Set, SongJiang&Xiaodong Zhang 《LIRS:an efficient low inter-reference recency setreplacement to improve buffer cache performance》)算法,在各种场景下都具有良好的表现。因而本发明可以充分的利用宏块行多核并行H.264编码器访问参考数据的相关性,充分降低其参考数据外部存储器访问量。
[0028]由于尽可能的消除了各个缓存内重复的缓冲块存储,本发明的硬件开销也很低。
[0029]对于一个典型的4核宏块行并行H.264编码器,参考数据的外部访问带宽仅相当于类似搜索范围的IevelC重用H.264单核编码器的1/3。内部的片上RAM尺寸也只相当于此单核编码器的参考数据管理模块的1/2,且不存在滑窗限制运动矢量范围的缺陷。
[0030]相对于简单的增加一个第二层参考数据访问控制模块的方案,本发明具有类似的外部访问带宽特性,但片上RAM开销可以减少1/3。
[0031]而相对于复杂而紧稱合的NUMA非均勻访存模型(Non Uniform Memory Access),本发明的一级缓存单元与二级缓存单元耦合很松,易于分别优化设计,且本发明不需要复杂的cache —致性协议,很大程度的降低了验证与设计的难度。
【专利附图】

【附图说明】
[0032]图1是由单个多端口滑窗/cache为所有编码核心提供参考数据的管理装置的结构示意图。
[0033]图2是多个独立的参考数据管理模块为各个编码核心提供参考数据的管理装置的结构示意图。
[0034]图3是两级参考数据访问控制装置的结构示意图。
[0035]图4是本发明参考数据访问管理装置的结构示意图。
[0036]图5是本发明参考数据访问管理装置的二级缓存单元的结构示意图。
【具体实施方式】
[0037]下面结合附图以及【具体实施方式】对本发明作进一步详细的说明。
[0038]首先参阅图4所示,本发明由每个编码核心100独占的多个一级缓存单元101(Llcache)、由所有编码核心共享的二级缓存单元102 (L2cache)以及连接两者的总线103组成。
[0039]一级缓存单元101为第一多端口 2D缓存器。一级缓存单元101通过总线103连接至二级缓存单元102,并连接至所属的编码核心100的运动估计模块。其直接为所属编码核心100的运动估计模块提供参考数据,并以缓存所指定的缓冲块尺寸的二维图像块的形式向其外部请求参考数据。因此,一级缓存单元101将来自编码器内部对参考数据的访问转换为均一且对齐的缓冲块尺寸的外部图像访问,并消除行内各个宏块对参考数据访问的相关性。一级缓存单元101的结构与实现类似通常的基于缓存的单核编码器参考管理装置结构,但为了匹配总线互连,增加了再填充请求辅助(refilling_ast)通道与存留数据(victim)通道。增加的通道允许二级缓存单元102发起请求并从一级缓存单元101读取缓冲块。增加的访问通道所增加的访问带宽需求可由增加一级缓存单元101的端口数加以平衡。
[0040]配合图5所示,二级缓存单元102包含一个第二多端口 2D缓存器105、总线侦听模块106、探听过滤器107 (snoop filter)、存留缓冲108 (victim buffer)以及外部参考数据访问模块109。二级缓存单元102通过总线103连接各个一级缓存单元101,并连接到外部存储器200。总线103的存留数据(victim)通道连接到存留缓冲108以传输参考数据,存留缓冲108允许连个多个存留数据(victim)通道以并行接收多个编码核心的参考数据;存留缓冲108连接到第二多端口 2D缓存器105以传输参考数据;存留缓冲108连接总线侦听模块106以传输参考数据传输状态;第二多端口 2D缓存器105连接总线的再填充数据(refilling)通道以传输参考数据,多端口特性允许第二多端口 2D缓存器105连接多个refilling通道以同时为多个以及缓存单元101传输参考数据;第二多端口 2D缓存器105连接到探听过滤器107以传输参考数据访问;一个或者多个再填充请求(refilling_req)通道连接至总线侦听与第二多端口 2D缓存器105以传输参考数据访问。存留缓冲108以及总线refilling_req通道连接到总线侦听模块106以传输参考数据与参考数据请求;总线侦听模块106连接至探听过滤器107以传输参考数据访问;探听过滤器107连接至总线的再填充请求辅助(refiiling_ast)通道以传输参考数据访问,探听过滤器107可连接至多个refilling_ast通道以同时向多个以及缓存单元101发送请求;探听过滤器107连接至外部参考数据访问模块109以传输参考数据访问;外部参考数据访问模块109连接至总线refilling通道以传输参考数据;外部参考数据访问模块109连接至外部存储器200接口,发起参考数据访问并接收参考数据。二级缓存单元102通过总线侦听模块106监听全部总线数据传输,并追踪全部一级缓存单元101的标签(tag)更新并在内部建立探听过滤器107以避免增加对一级缓存单元101的标签(tag)探测请求。二级缓存单元102作为全部一级缓存单元101的victim使用,缓存从一级缓存单元101被替换的缓冲块。存留缓冲108用于匹配总线与二级缓存单元102操作的速率,避免victim数据溢出。二级缓存单元102的外部参考数据访问模块109负责通过外部存储器200访问接口读取外部存储器200中的参考数据。
[0041]总线103连接各个一级缓存单元101以及二级缓存单元102。其包括总线控制器以及互连结构。总线控制器控制互连结构上的信息交换;互连结构由refilling_req, refi 11 ing_ast, refilling 以及 victim 四个通道构成。Refilling_req 与 refilling—ast用于传输参考数据再填充请求victim与refilling通道则用于传输参考数据。其中refilling与refilling_ast通道的传输方向为二级缓存单元102向各个一级缓存单元101 ;refilling_req以及victim通道为各个一级缓存单元101向二级缓存单元102。二级缓存单元102与总线103拥有多个连接,多个连接用于提高访问带宽。
[0042]本发明一种适用于H.264/AVC并行编码装置的参考数据访问管理方法的操作流程如下:
[0043]当编码核心100需要访问参考数据时,其向一级缓存单元101发起一个访问请求。一级缓存单元101检查访问是否命中内部缓存。若命中,则向编码核心100返回其请求的数据。否则通过总线103的refilling_req通道向二级缓存单元102发起再填充请求。
[0044]二级缓存单元102接到请求后首先检查是否在本地存储命中,本地存储命中指请求的参考数据在二级缓存单元102本地的第二多端口 2D缓存器105或存留缓冲108中存在。若在本地存储命中则通过refilling通道将命中的参考数据返回一级缓存单元101。若不在本地存储命中,则检查探听过滤器107中的条目,若命中探听过滤器107则通过refilling_ast通道向条目所在的一级缓存单元101发起请求。一级缓存单元101收到refilling_ast传来的请求后从内部缓存取出所请求的参考数据,并通过victim通道将其返回给总线。总线将此参考数据通过refilling通道发送给发起refiling请求的一级缓存单元101。若再填充参考数据请求在二级缓存单元102本地存储以及探听过滤器107中均未命中,则二级缓存单元102向外部存储器200发出请求参考数据,并将自外部存储器200返回的数据通过总线103的refilling通道发送至发起refilling请求的一级缓存单元 101。
[0045]当发起再填充请求的一级缓存单元101接收到自总线refilling通道传输的缓存块数据后,将其装入内部RAM并更新内部tag表,随后将编码核心所请求的参考数据返回。当此再填充的缓存块进入一级缓存单元101时,可能会替换一级缓存单元101中一个原有的缓存块,可以采用各种替换策略,包括但不限于PLRU (Pseudo-Least Recently Used,伪-最近最少使用)或随机替换等。此时一级缓存单元101将这个缓存块通过victim通道发送至二级缓存单元102并在存留缓冲108中暂时存储。二级缓存单元102在空闲时检查存留缓冲108中的缓存块是否已经在本地缓存中存在,若已经存在则将其丢弃,否则将其存入本地缓存。这个过程中可能需要替换二级缓存单元102内部原有的缓存块,可以采用各种替换策略,包括但不限于PLRU或随机替换等。
[0046]以上结合附图实施例对本发明进行了详细说明,本领域中普通技术人员可根据上述说明对本发明做出种种变化例。因而,实施例中的某些细节不应构成对本发明的限定,本发明将以所附权利要求书界定的范围作为本发明的保护范围。
【权利要求】
1.一种适用于H.264/AVC并行编码装置的参考数据访问管理方法,其特征在于所述参考数据访问管理方法包括以下实现步骤: 编码核心向一级缓存单元发起一个访问请求; 所述一级缓存单元查询其内部第一多端口 2D缓存器,并向所述编码核心返回参考数据; 当所述第一多端口 2D缓存器内无匹配参考数据时,所述一级缓存单元通过总线向二级缓存单元发起再填充请求; 所述二级缓存单元查询其内部第二多端口 2D缓存器,并向所述一级缓存单元返回再填充参考数据; 当所述第二多端口 2D缓存器内无匹配再填充参考数据时,向外部存储器发出参考数据请求,并将自所述外部存储器返回的参考数据通过总线发送至一级缓存单元。
2.如权利要求1所述的参考数据访问管理方法,其特征在于:当所述第二多端口2D缓存器内无匹配再填充参考数据时,所述二级缓存单元先查询其内部探听过滤器的条目,并向所述条目所在的一级缓存单元发起请求,所述一级缓存单元根据所述请求从内部取出所请求的参考数据,当所述内部探听过滤器中无匹配条目时,所述二级缓存单元再向所述外部存储器发出参考数据请求。
3.一种适用于H.264/AVC并行编码装置的参考数据访问管理装置,其特征在于:所述参考数据访问管理装置包括多个分别连接一编码核心的一级缓存单元,所述一级缓存单元通过一总线连接于一个二级缓存单元,所述二级缓存单元进一步连接外部存储器。
4.如权利要求3所述的参`考数据访问管理装置,其特征在于:所述总线包括总线控制器以及控制连接于所述总线控制器的互连结构,所述互连结构包括用于传输参考数据再填充请求的再填充请求通道与再填充请求辅助通道、以及用于传输参考数据的存留数据通道与再填充数据通道。
5.如权利要求4所述的参考数据访问管理装置,其特征在于:所述一级缓存单元包括第一多端口 2D缓存器,所述一级缓存单元通过所述总线连接至所属的编码核心的运动估计模块,所述一级缓存单元设有再填充请求辅助通道与存留数据通道。
6.如权利要求5所述的参考数据访问管理装置,其特征在于:所述二级缓存单元包括第二多端口 2D缓存器、总线侦听模块、探听过滤器、存留缓冲以及外部参考数据访问模块,所述存留缓冲分别连接所述第二多端口 2D缓存器和所述总线侦听模块,所述第二多端口2D缓存器进一步连接所述探听过滤器,所述总线侦听模块亦进一步连接所述探听过滤器,所述探听过滤器进一步连接所述外部参考数据访问模块,并且所述外部参考数据访问模块连接所述外部存储器。
7.如权利要求6所述的参考数据访问管理装置,其特征在于:所述一级缓存单元通过所述存留数据通道连接所述存留缓冲;所述探听过滤器通过所述再填充请求辅助通道连接所述一级缓存单元。
8.如权利要求7所述的参考数据访问管理装置,其特征在于:一个或多个所述再填充请求通道连接至所述总线侦听模块与所述第二多端口 2D缓存器以传输参考数据访问;所述探听过滤器连接至所述再填充请求辅助通道以传输参考数据访问。
9.如权利要求8所述的参考数据访问管理装置,其特征在于:所述外部参考数据访问模块连接至所述再填充数据 通道以传输参考数据。
【文档编号】G06F17/30GK103729449SQ201310751654
【公开日】2014年4月16日 申请日期:2013年12月31日 优先权日:2013年12月31日
【发明者】诸悦, 高厚新, 陈晓春, 章旭东, 刘斌, 刘翔, 陈子遇 申请人:上海富瀚微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1