一种fifo数据缓存器、芯片以及设备的制作方法

文档序号:6340350阅读:242来源:国知局
专利名称:一种fifo数据缓存器、芯片以及设备的制作方法
技术领域
本发明属于存储器设计领域,尤其涉及一种FIFO数据缓存器、芯片以及设备。
背景技术
FIFO (First In First Out,一种先进先出的数据缓存器)广泛的应用于芯片设计的各个领域,比如数据缓存、跨越时钟域等。特别是在数字通信芯片中,需要大量的FIFO用于报文的缓存。一般而言,FIFO的使用有如下特点芯片内的FIFO资源非常有限。当芯片内有多处需要使用大容量缓存时,往往没有足够的FIFO可供使用。如果增加了 FIFO资源,就意味着要相应地增加芯片成本。FIFO的使用需求呈动态变化。比如,在数字通信等领域,FIFO多是用于应对数据的突发(如报文的突发等)。在不存在突发时,仅需小容量的FIFO就能满足芯片的正常运转;但当突发出现时,则需要大容量的FIFO来缓存数据。而数据的突发往往是随机的,出现突发的位置很多情况下也是不相干的。如一个多接口数据交换芯片,每个接口出现突发是随机的,也是互不相干的。现有的FIFO使用方法,多是将FIFO固定为一个特定的深度,分配给一个特定的位置。在数字通信芯片中,这种FIFO使用方法存在以下两个弊端1、由于FIFO总量有限,每个位置获得的FIFO容量也是有限的;同时,为了应对突发,每个位置的FIFO容量不能太小。这样,当不存在数据突发时,仅须很小的容量就能满足芯片运转,剩余的容量被闲置浪费;当存在数据突发时,这样的容量又不足以应对突发。2、由于各个FIFO使用位置出现突发的时刻是随机的,一个位置出现突发,另一个位置可能没出现突发。但FIFO容量是固定分配给各个位置的。于是就会导致这样一个现象芯片内一个位置由于突发导致缓存溢出,而其余的位置则有大量的缓存处于闲置的状态。这种情形下,FIFO的利用率以及缓存效果是极差的。

发明内容
本发明实施例的目的在于提供一种FIFO数据缓存器,旨在解决现有FIFO数据缓存器中出现的缓存容量闲置浪费、FIFO利用率低以及缓存效果差等问题。本发明实施例是这样实现的,一种FIFO数据缓存器,所述FIFO数据缓存器包括由若干个FIFO单元组件构成的FIFO池;多个FIFO调用模块,配置于可能出现数据突发的位置,用于根据数据缓存需要, 发出占用FIFO单元或者释放FIFO单元的申请;FIFO池管理模块,用于根据相应FIFO调用模块的申请,向该FIFO调用模块分配或者回收FIFO单元。本发明实施例的另一目的在于提供一种包含FIFO数据缓存器的芯片。本发明实施例的另一目的在于提供一种包含FIFO数据缓存器的设备。本发明实施例通过在各个数据突发点配置FIFO调用模块,使各个FIFO调用模块能够根据数据缓存的需要,共享FIFO单元,从而做到FIFO数据缓存器中,各FIFO单元的动态分配,提高了 FIFO数据缓存器的利用率以及缓存效果。


图1是本发明实施例提供的FIFO数据缓存器的工作原理图;图2是本发明实施例提供的FIFO数据缓存器中FIFO单元组件的结构图;图3是本发明实施例提供的FIFO数据缓存器中FIFO调用模块的结构图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。本发明实施例针对现有技术中存在的缓存容量闲置浪费、FIFO利用率低以及缓存效果差等问题,在各个数据突发点配置FIFO调用模块,使各个FIFO调用模块能够根据数据缓存的需要,共享FIFO单元,从而做到FIFO数据缓存器中,各FIFO单元的动态分配,提高了 FIFO数据缓存器的利用率以及缓存效果。本发明实施例是这样实现的一种FIFO数据缓存器,包括由若干个FIFO单元组件构成的FIFO池;多个FIFO调用模块,配置于可能出现数据突发的位置,用于根据数据缓存需要, 发出占用FIFO单元或者释放FIFO单元的申请;FIFO池管理模块,用于根据相应FIFO调用模块的申请,向该FIFO调用模块分配或者回收FIFO单元。本发明实施例的另一目的在于提供一种包含FIFO数据缓存器的芯片。本发明实施例的另一目的在于提供一种包含FIFO数据缓存器的设备。在本发明实施例中,由于各个FIFO单元可以根据数据缓存的需要,动态地分配给配置于各个数据突发点的FIFO调用模块,使各个FIFO调用模块能够共享FIFO单元,所以提高了 FIFO数据缓存器的利用率以及缓存效果。实施例一图1示出了本发明实施例提供的FIFO数据缓存器的工作原理,为了便于说明只示出了与本发明实施例相关的部分。FIFO池11由多个FIFO单元组件14组成,其中,FIFO单元组件14的结构如图2 所示,包括用于缓存数据的FIFO单元22,以及多路选择器21,该多路选择器21用于从所述多个FIFO调用模块中选择一路输出作为所述FIFO单元的输入。FIFO调用模块12配置于可能出现数据突发的位置,根据数据缓存需要,向FIFO池管理模块13申请调用空闲的FIFO单元22或者释放使用完成的FIFO单元22 ;FIFO池管理模块13根据FIFO调用模块12的申请,向FIFO调用模块12分配空闲的FIFO单元22,或者回收FIFO调用模块12释放的FIFO单元22。在实际工作中,FIFO调用模块12有一个私有FIFO单元31,在没有数据突发的情CN 102541506 A况下,FIFO调用模块12本身就能满足数据缓存要求,当出现数据突发时,FIFO调用模块12 根据其缓存的状况,向FIFO池管理模块13申请占用FIFO池11中的FIFO单元22。FIFO 池管理模块13根据FIFO池11中FIFO单元22的使用情况,对FIFO调用模块12的申请做出回应,如果FIFO池11中尚有FIFO单元22可供调用的话,FIFO管理模块13向FIFO调用模块12返回申请成功的信号,并向FIFO模块12提供可以调用的FIFO单元22的编号。 在没有合适的FIFO单元22可供调用时,FIFO池管理模块13向FIFO调用模块12返回申请失败的信号。当FIFO单元22使用完成后,FIFO调用模块12向FIFO池管理模块13发出释放 FIFO单元22的申请,而FIFO池管理模块13根据FIFO调用模块12的申请,将释放后的 FIFO单元22回收。具体而言,FIFO池11由若干完全独立的FIFO单元组件14组成,每个FIFO单元组件14配置成相同的深度,分布在芯片的不同位置。FIFO池11只是一个逻辑上的集合,组成这个集合的FIFO单元组件14彼此没有任何联系。FIFO单元22个数乘以深度,即为FIFO池11总缓存能力,即C = D*N。其中,C表示FIFO池11的总缓存容量,D表示FIFO单元22的深度,N表示FIFO单元22的个数。每个FIFO单元22的深度即为动态分配的粒度,FIFO调用模块12以每个FIFO单元22作为最小的调度单位。FIFO单元22深度的选择要考虑以下因素动态分配粒度、FIFO 调用模块的复杂程度。动态分配粒度和FIFO调用模块的复杂程度成反比,粒度越小,FIFO 利用效率越高,但调用模块越复杂。因此,要根据芯片所能承受的调用模块的复杂程度选择最小的分配粒度。实施例二 图3示出了本发明实施例提供的FIFO数据缓存器中FIFO调用模块的结构,为了便于说明只示出了与本发明实施例相关的部分。私有FIFO单元31和FIFO池11中的FIFO单元22具有相同的深度。当没有数据突发时,这个私有FIFO单元31就能满足缓存要求。在私有FIFO单元31的输入端连接有一个输入端多路选择器32,同样,上一实施例所述的各多路选择器21的输入端均各自连接有一个输入端多路选择器32,这些输入端多路选择器32用于从多个FIFO单元22中的输出以及FIFO调用模块12的输入中,选择一路作为私有FIFO单元31或者FIFO单元22的输入。每一个输入端多路选择器32的输入端与N个FIFO单元22的数据线(N的个数为FIFO池11中FIFO单元22的个数)以及1个输入FIFO调用模块12的原始数据的数据线连接,用于确定具体以哪条数据线输入的数据作为私有FIFO单元31或者某一 FIFO单元22的输入数据。与输入端多路选择器32相类似地,与私有FIFO单元31的输出端连接的输出端多路选择器33,用于从多个FIFO单元22的输出以及私有FIFO单元31的输出中,选择一路作为FIFO调用模块12的输出。包括上述输入端多路选择器32输出端多路选择器33以及数据线的整个连接网络组成一个级联选择矩阵。级联控制器34,用于记录FIFO单元22在FIFO调用模块12中的级联拓扑,控制输入输出多路选择器的输出,并根据实时使用需求,向FIFO池管理模块13申请FIFO单元22或者卸载FIFO单元22。级联控制器34是整个FIFO调用模块12的控制核心。在级联控制器34中维护着一张FIFO级联表,级联表的最下面是该FIFO调用模块12的私有FIFO 单元31,然后往上依次存储着被占用的共享FIFO单元22,按占用的先后时间排列。该级联表记录的是各个FIFO单元22在FIFO调用模块12中的级联拓扑。级联控制器中34包含一个FIFO单元22占用申请电路。当FIFO级联表中最上面的一个FIFO单元22 (可以是共享FIFO单元22或者私有FIFO单元31)中存储的内容已达容量的2/3,占用申请电路自动的向FIFO池管理模块13申请一个FIFO单元22。申请成功后,占用申请电路将获得的FIFO单元22加入到FIFO级联表,并根据新的级联表修改各个多路选择器的状态,从而获得新的FIFO单元22级联拓扑。当FIFO池管理模块13反馈申请失败信号时,占用申请电路清除占用请求信号,然后再次判断是否需要发起下一次FIFO 单元22占用请求。级联控制器34中还包括一个FIFO单元22卸载电路。当级联拓扑中有一定数量或者比例的FIFO单元22空闲时,如5/3个FIFO单元22空闲时,级联控制器34卸载掉级联拓扑中的一个FIFO单元22,并根据新的级联表修改各个多路选择器的状态。卸载后的 FIFO单元22,将通过FIFO池管理模块13回收到FIFO池11。FIFO池管理模块13中,FIFO单元22的维护信息记录在一张表中,其记录着各个 FIFO单元22是否被占用,被占用则标记为0,空闲则被标记为1。被占用的FIFO单元22不能再分配,而空闲的FIFO单元22可以被分配。在FIFO池管理模块13中,保存着各个FIFO 调用模块12的优先级和权限。优先级定义的是两个以上FIFO调用模块12同时申请占用 FIFO单元22时,受理申请的顺序。权限定义的每个FIFO调用模块12能够占用的FIFO单元22的总量。当一个FIFO调用模块12提出FIFO单元22占用申请时,如果尚有FIFO单元22 可供调用,返回一个申请成功信号给对应FIFO调用模块12,同时给出对应FIFO单元22的编号;如果没有FIFO单元22可供使用,则反馈申请失败信号。当一个FIFO调用模块12提出FIFO单元22释放请求时,FIFO池管理模块13处理释放请求信号,将释放后的FIFO单元22回收。FIFO单元22分配和回收独立进行,分配完一个FIFO单元22后,将该单元标记为 0 ;回收完一个FIFO单元22后,将该FIFO单元22标记为1。分配一个FIFO单元22的同时,将对应的FIFO调用模块12的编号提供给FIFO单元22,FIFO单元22根据FIFO调用模块12的编号控制输入端多路选择器32的输出。此外,当一个FIFO调用模块12占用的FIFO单元22数到达它权限下的最大值,即使尚有可供分配的FIFO单元22,也不再分配给该调用模块。在本发明实施例中,由于各个FIFO单元22可以根据数据缓存的需要,动态地分配给配置于各个数据突发点的FIFO调用模块,使各个FIFO调用模块能够共享FIFO单元22, 所以提高了 FIFO数据缓存器的利用率以及缓存效果。实施例四本发明实施例提供的FIFO数据缓存器可以用于SWITCH芯片等多种芯片中,该类型包含FIFO数据缓存器的芯片可以用于交换机、路由器等设备。在本发明实施例中,由于各个FIFO单元可以根据数据缓存的需要,动态地分配给配置于各个数据突发点的FIFO调用模块,使各个FIFO调用模块能够共享FIFO单元,所以提高了 FIFO数据缓存器的利用率以及缓存效果。 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种FIFO数据缓存器,其特征在于,所述FIFO数据缓存器包括 由若干个FIFO单元组件构成的FIFO池;多个FIFO调用模块,配置于可能出现数据突发的位置,用于根据数据缓存需要,发出占用FIFO单元或者释放FIFO单元的申请;FIFO池管理模块,用于根据相应FIFO调用模块的申请,向该FIFO调用模块分配或者回收FIFO单元。
2.如权利要求1所述的FIFO数据缓存器,其特征在于,所述FIFO单元组件包括 FIFO单元,以及多路选择器,用于从所述多个FIFO调用模块中选择一路输出作为所述FIFO单元的输入。
3.如权利要求1所述的FIFO数据缓存器,其特征在于,所述FIFO调用模块包括 私有FIFO单元;若干输入端多路选择器,用于从多个FIFO单元的输出以及所述FIFO调用模块的输入中,选择一路作为所述私有FIFO单元或者所述FIFO单元的输入;输出端多路选择器,用于从多个FIFO单元的输出以及所述私有FIFO单元的输出中,选择一路作为所述FIFO调用模块的输出;级联控制器,用于记录FIFO单元在所述FIFO调用模块中的级联拓扑,控制各个输入端多路选择器的输出,并根据数据缓存需要,向所述FIFO池管理模块申请调用空闲的FIFO单元或者释放使用完成的FIFO单元。
4.如权利要求3所述的FIFO数据缓存器,其特征在于,所述级联控制器包括FIFO单元占用申请电路,用于根据所述FIFO调用模块实时的使用需要,申请FIFO单元;FIFO单元卸载电路,用于根据所述FIFO调用模块实时的使用需要,卸载FIFO单元; FIFO级联表,用于记录FIFO单元在所述FIFO调用模块中的级联拓扑。
5.如权利要求1所述的FIFO数据缓存器,其特征在于,所述FIFO池管理模块存有FIFO 调用模块的优先级和FIFO调用模块的权限;所述FIFO调用模块的优先级为两个以上FIFO调用模块同时申请占用FIFO单元时,所述FIFO池管理模块受理申请的顺序;所述FIFO调用模块的权限为每个FIFO调用模块能够占用的FIFO单元的总量。
6.一种包含如权利要求1至5任一项所述的FIFO数据缓存器的芯片。
7.一种包含如权利要求1至5任一项所述的FIFO数据缓存器的设备。
全文摘要
本发明适用于存储器设计领域,提供了一种FIFO数据缓存器、芯片以及设备,所述FIFO数据缓存器包括FIFO池、FIFO调用模块以及FIFO池管理模块。本发明通过在各个数据突发点配置FIFO调用模块,使各个FIFO调用模块能够根据数据缓存的需要,共享FIFO单元,从而做到FIFO数据缓存器中,各FIFO单元的动态分配,提高了FIFO数据缓存器的利用率以及缓存效果。
文档编号G06F5/10GK102541506SQ20101061138
公开日2012年7月4日 申请日期2010年12月29日 优先权日2010年12月29日
发明者叶晶, 周毅华, 董菊华 申请人:深圳市恒扬科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1