发明内容
为解决上述技术问题,本发明的目的在于提供一种实现Soc芯片中可配置缓冲器的方法,根据所需系统的应用需求和性能,灵活地调整系统带宽,增强了系统的灵活性。
相应与所述方法,本发明的目的还在于提供一种可灵活调整系统带宽的Soc芯片系统。
为实现上述发明目的之一,本发明的一种可灵活调整系统带宽的Soc芯片系统,包括:
若干硬件引擎;
一个或多个CPU模块;
片内缓冲器:设置于Soc芯片内部,所述硬件引擎和CPU模块共享所述片内缓冲器;
片外存储器:设置于Soc芯片外部;以及
BDAM引擎:所述硬件引擎通过所述BDMA引擎在片内缓冲器和片外存储器之间交换数据;
其中,所述片外缓冲器和片外存储器可被择一地用于存储所述硬件引擎中相邻上方块的相关信息,以适应系统不同带宽要求。
作为本发明的进一步改进,所述硬件引擎和CPU模块通过交叉开关矩阵与所述片内缓冲器相连接。
作为本发明的进一步改进,所述片内缓冲器可为SRAM(Static Random Access Memory);所述片外存储器可为DRAM(Dynamic Random Access Memory)。
为实现本发明的另一发明目的,一种实现Soc芯片中的可配置缓冲器的方法,包括如下步骤:
S1、判断当前系统的应用需求;
S2、若系统应用需求为提高软件性能,则将所述硬件引擎中至少多数上方块信息存储于片外存储器中;
S3、若系统应用需求为减小系统带宽,则将所述硬件引擎中至少多数上方块信息存储于片内缓冲器中。
作为本发明的进一步改进,所述步骤S1具体为:通过特定软件识别当前系统的需求,并相应地调整片内缓冲器的分配方式。
作为本发明的进一步改进,所述步骤S2具体包括以下步骤:
由CPU模块或硬件引擎控制从片存储器中读入运行所需数据至所述片内缓冲器中;
运行硬件引擎,消耗片内缓冲器中的数据;
由CPU模块或硬件引擎控制从所述片内缓冲器中将需要存储的数据存储至片外存储器中 。
作为本发明的进一步改进,所述上方块信息包括上方块的像素值、或者运动矢量。
与现有技术相比,本发明的有益效果是:本发明根据所需系统的应用需求和性能,通过特定软件来选择将硬件引擎中所需的上方块信息储存于片内缓冲器或者片外存储器中,以实现灵活地调整系统带宽,进而大大增强了系统的灵活性。
具体实施方式
以下将结合附图所示的具体实施方式对本发明进行详细描述。但这些实施方式并不限制本发明,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。
考虑利用硬件引擎按块进行数据处理的情况,例如在多媒体应用领域的Soc中,往往按块(或宏块)来组织数据。我们以视频编解码器为例进行讨论,但本方案也适用于其他按块处理数据的应用。
现代的视频编解码标准如H.264,VC-1,AVS等都依赖于相邻块或宏块的信息(如像素值,运动矢量,量化参数等)。在编解码过程中,需要在当前块(宏块)编解码时将其上方块(宏块)的相关信息读入编解码引擎。
请参照图1所示,在本发明一实施方式中,一种可灵活调整系统带宽的Soc芯片系统,包括:
若干硬件引擎102;
一个或多个CPU模块101;
片内缓冲器(Buffer)104:设置于Soc芯片内部,硬件引擎和CPU模块共享片内缓冲器;
优选地,在本实施方式中,硬件引擎和CPU模块通过交叉开关矩阵105(Crossbar)与所述片内缓冲器相连接,实现读写操作,并在软件的协助下共享片内缓冲器(Buffer)内存储的数据。硬件引擎从buffer中读取数据不消耗片外存储器的带宽;对于CPU而言,利用buffer来存储常用数据可以避免出现cache miss,有助于提高软件性能,并且使软件的性能更容易预期。
片外存储器(未图示):设置于Soc芯片外部;在本发明优选的实施方式中,所述片内缓冲器可为SRAM(Static Random Access Memory);所述片外存储器可为DRAM(Dynamic Random Access Memory)。
BDAM引擎(Buffer DMA引擎(简称BDMA))103:硬件引擎通过BDMA引擎在片内缓冲器和片外存储器之间交换数据;
其中,所述片外缓冲器和片外存储器可被择一地用于存储所述硬件引擎中相邻上方块的相关信息,以适应系统不同带宽要求。
存储相邻上方块(宏块)的信息有两种方式:第一种将整行的相关信息以line buffer的方式存储在硬件视频编解码器中(即存储于片内缓冲器中)。这种方式完全节省了DRAM带宽,但所需的存储空间最大,并且必须提前确定所支持的最大视频分辨率;第二种方式将所有的相邻上方块(宏块)相关信息存储在片外存储器(如DRAM)中,在对当前块(宏块)编解码时,提前将所需信息读入硬件引擎,这种方式消除了对视频分辨率的限制,但所需DRAM带宽较大。
所以针对上述的问题,本发明就必须根据系统的实际需求来选择将数据存储于片内缓冲器中或者片外存储器中。BDMA引擎可由CPU或硬件引擎控制,在片内缓冲器(Buffer)和片外存储器之间进行数据的交互。例如硬件视频编解码器中存在多种相邻上方块(宏块)的数据,根据需要,这些数据可通过BDMA的方式在片外存储器DRAM和片内缓冲器(Buffer)之间传输。
对于需要提高软件性能的应用,系统将把尽可能多的buffer分配给CPU。同时,大多数甚至全部硬件引擎所需的line buffer信息都被存储在片外存储器中,并在CPU或硬件引擎的控制之下,在被使用之前由BDMA引擎读入片内buffer。SOC内部buffer中按照ring buffer的方式来进行管理。图2和图3描绘了处理相邻两个块时各部分的关系。
值得一提的是,假设硬件引擎读入和写出数据到不同的buffer,如果具体实现时能够保证先读入所有的数据,则可以读入和写出数据到同一块buffer,这样可以节省一块buffer。这种实现方法硬件引擎使用了较少的buffer,但消耗了较多的DRAM带宽。
对于带宽受限的应用,系统将尽可能多地将当前块上方相邻块的信息以line buffer的方式直接存储在片内buffer中(如图4所示),在视频分辨率确定的情况下,硬件视频编解码器可以直接对所需数据进行操作,而无需通过DMA引擎与片外存储器交换数据,因此降低了系统的带宽。
如图5所示,在本发明一实施方式中,一种应用上述Soc芯片来实现Soc芯片中的可配置缓冲器的方法,包括如下步骤:
S1、判断当前系统的应用需求;针对不同的系统所具备的性能,所适应的应用需求也会不一样,具体地,通过特定软件识别当前系统的需求,根据系统需求和性能调整buffer分配和使用方式。例如对于视频编解码器,可以在每帧结束后改变buffer分配和使用方式。
S2、若系统应用需求为提高软件性能,则将所述硬件引擎中至少多数上方块信息存储于片外存储器中;对于需要提高软件性能的应用,系统将把尽可能多的buffer分配给CPU。同时,大多数甚至全部硬件引擎所需的line buffer信息都被存储在片外存储器中,并在CPU或硬件引擎的控制之下,在被使用之前由BDMA引擎读入片内buffer。SOC内部buffer中按照ring buffer的方式来进行管理。
参图6所示,步骤S2具体包括以下步骤:
S21、由CPU模块或硬件引擎控制从片存储器中读入运行所需数据至所述片内缓冲器中;
S22、运行硬件引擎,消耗片内缓冲器中的数据;
判断此次步骤是否运行完成后进入下一步骤;
S23、由CPU模块或硬件引擎控制从所述片内缓冲器中将需要存储的数据存储至片外存储器中。
判断此次步骤是否运行完成;若是,则结束本次运行,若否,重新循环一次上述各步骤。
S3、若系统应用需求为减小系统带宽,则将所述硬件引擎中至少多数上方块信息存储于片内缓冲器中。其中,对于带宽受限的应用,系统将尽可能多地将当前块上方相邻块的信息以line buffer的方式直接存储在片内buffer中。在视频分辨率确定的情况下,硬件视频编解码器可以直接对所需数据进行操作,而无需通过DMA引擎与片外存储器交换数据。因此降低了对系统带宽。
硬件引擎中对于当前正在处理的块,可能有多种不同类型的上方相邻数据块。例如对于H.264解码器,上方块的像素值和运动矢量可以被存储在不同的片内缓冲器(Buffer)中。这样可以分别决定某一信息是采用S2中方案还是S3中方案。通过调整直接存放在片内buffer中以及存储在片外存储器中的相邻上方块(宏块)数据,可以定义各种不同的配置方式。
与现有技术相比,本发明的有益效果是:本发明根据所需系统的应用需求和性能,通过特定软件来选择将硬件引擎中所需的上方块信息储存于片内缓冲器或者片外存储器中,以实现灵活地调整系统带宽,进而大大增强了系统的灵活性。
以上所描述的装置实施方式仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施方式方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
以上所描述的装置实施方式仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施方式方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。