低等待时间先进先出(fifo)缓存的制作方法

文档序号:6361844阅读:243来源:国知局
专利名称:低等待时间先进先出(fifo)缓存的制作方法
技术领域
在此所述的技术概括地涉及数据传送,且更具体地涉及低等待时间数据缓存。
背景技术
缓存提供用于在从一个位置向下一个位置传送期间临时保持数据的存储区域。例如,在计算机系统内的硬件和/或进程之间移动数据时使用缓存。当传送实体和接收实体之间传送和消耗速率不匹配时利用缓存。缓存提供临时存储,这使得所述传送实体可以在不关心接收实体能接受被传送的数据的速率的情况下发送数据。接收实体因此能根据接收实体的访问和处理能力,访问存储在缓存中的、来自传送实体的数据。以上说明呈现为这个领域中相关技术的一般概要,并且不应理解为承认它包含的任何信息组成与本专利申请相对的现有技术。

发明内容
根据在此的教程,提供了用于先进先出缓存的系统和方法。缓存包括配置用于存储从缓存输入接收的数据的第一子缓存,以及第二子缓存。所述第二子缓存被配置用于存储从所述缓存输入或第一子缓存接收的数据,并且以与在所述缓存输入处接收数据相同的顺序,将数据输出到缓存输出。缓存控制逻辑被配置用于选择性地从所述缓存输入或第一子缓存将数据路由到所述第二子缓存,使得在所述缓存输入接收的数据可以按先进先出方式,从所述第二子缓存输出。所述缓存控制逻辑响应于第一子缓存和第二子缓存中至少一个的空/满状态。作为另一示例,在缓存数据的方法中,输入数据在缓存输入处被接收。第一子缓存和第二子缓存的存储器满/空状态被确定。基于所述存储器满/空状态,数据被选择性地从所述缓存输入或所述第一子缓存路由到所述第二子缓存,使得在所述缓存输入处接收的数据可以按先进先出方式从所述第二子缓存输出。作为又一个示例,一种集成电路包括处理器电路、存储器电路和缓存。所述缓存包括:第一子缓存,被配置用于从缓存输入接收的数据;以及第二子缓存,被配置用于存储从所述缓存输入或第一子缓存接收的数据,并且以与在所述缓存输入处接收数据相同的顺序将数据输出到缓存输出。所述缓存还包括缓存控制逻辑,被配置用于选择性地从所述缓存输入或第一子缓存将数据路由到所述第二子缓存,使得在所述缓存输入处接收的数据可以按先进先出方式从所述第二子缓存输出。


图1为绘出低等待时间FIFO缓存的实现的框图。图2为绘出具有触发器第一子缓存和采样器第二子缓存的缓存实现实施方式的框图。图3为绘出一种缓存数据的方法的流程图。图4为绘出基于随机访问存储器(RAM)和低等待时间触发器缓存的实施方式的流程图。图5为绘出使用预缓存来缓存数据的方法的流程图。图6为绘出具有相关采样器预缓存的基于RAM或触发器的缓存实施方式的框图。图7为绘出一种缓存数据的方法的流程图。图8为绘出缓存集成电路实施方式的框图。图9为绘出另一集成电路实施方式的框图。
具体实施例方式先进先出(FIFO)是在传送实体和接收实体之间缓存数据的一种方法。缓存在如下配置中是有用的,例如,在传送实体以大于接收实体的消耗能力的突发来传送数据,以及接收实体正处于不可用的时段。FIFO缓存在多种环境下是有用的。例如,FIFO缓存广泛应用于专用集成电路(ASIC)设计中。传统的FIFO缓存实现面临若干缺陷。例如,从数据被传送到FIFO缓存的输入的时间到该数据可用于在FIFO缓存的输出处访问的时间,很多FIFO缓存实现面临过多的等待时间。在由传送实体发送数据与由接收实体接收该数据之间,很多FIFO缓存具有至少两个时钟周期的等待时间。除了等待时段过长,出现另一个问题是等待时段在FIFO缓存实现中不一致。例如,与基于RAM的FIFO缓存相比,在一些配置中的基于触发器的FIFO缓存具有不同的等待时间。导致缓存等待时间改变的电路中FIFO缓存实现中的改变(例如增加错误校正代码(ECC)保护)需要在传送和/或接收实体处修改以应对等待时间改变。传统FIFO缓存还存在定时隔离问题。例如,在ASIC环境中,FIFO缓存即插即用通常在逻辑和物理方面都是重要的。这意味着FIFO缓存不应对外围元件施加定时限制。例如,当FIFO缓存使得在特定时钟周期期间在输出处可获得数据时,优选使得在尽可能接近特定时钟周期的开始处获得该数据,以便不延迟接收外设对该数据的访问。传统的FIFO缓存还缺乏在缓存和外设单元之间的标准的接口(例如,发送实体和接收实体)。跨多个实现标准化FIFO缓存接口的尝试通常导致跨各个FIFO缓存实现的更高的等待时间和/或定时隔离问题。传统的缓存也可以实现高成本的组件以尝试改进速度性能。图1为绘出根据本公开的一个实施方式实现低等待时间FIFO缓存的框图。缓存102从传送器104接收数据,并且按先进先出方式将接收的数据传送至接收器106。缓存102包括第一子缓存108,其被配置用于存储从缓存输入109接收的数据。缓存102还包括第二子缓存110,其被配置用于存储从缓存输入109或第一子缓存108接收数据,并且按与在缓存输入109处接收数据相同的顺序将数据输出到缓存输出111。缓存102还包括控制逻辑112,其选择性地从缓存输入109或第一子缓存108将数据路由到第二子缓存110,使得在缓存输入109接收的数据可以按先进先出方式从第二子缓存110输出。FIFO缓存102使用多种机制提供改进的性能。例如,在一些实现中,第一子缓存108具有比第二子缓存110更大量的存储空间。示例第一子缓存108还工作在比第二子缓存110更高的等待时间(例如,第一子缓存以2个时钟周期等待时间提供数据,而第二子缓存以I个时钟周期等待时间提供数据)。较高速度的第二子缓存110提供用于当缓存102为空或接近空时使用的旁路机制,以使从传送器104接收的数据立即可用于接收器106 (例如,以I个时钟周期等待时间)。在一个实施方式中,较大较慢的第一子缓存108提供较廉价的存储作为备选,以用于当缓存102为非空或接近空时使用。当数据从第二子缓存110传送到接收器106时,第一子缓存108再填充第二子缓存110。在这个配置中,避免了通过单独使用较慢的第一子缓存108将产生的瓶颈。当缓存102接近空时,较慢的第一子缓存108被旁路,使得在缓存输入109处接收的数据被直接传送到较快的第二子缓存110用于在缓存输出111处快速访问。当缓存102处于更满的状态时,在缓存输入109处接收的数据被提供至较慢的第一子缓存108用于存储。存储在较慢的第一子缓存108处的数据被按需要传送至第二子缓存110以再填充第二子缓存,以继续使得在缓存输出111处可获得数据。控制逻辑112监视第一子缓存108和第二子缓存110的状态,并且选择性地从缓存输入路由数据以提供快速的数据吞吐量。例如,当缓存102为空时(即,第一子缓存108和第二子缓存110都不包含数据),控制逻辑通过旁路第一子缓存而从缓存输入109向较快的第二子缓存110路由数据,使得在缓存输出111立即可获得接收的数据。当第二子缓存110为满时,控制逻辑112从缓存输入向第一子缓存108路由数据。这个控制方案使得当缓存102为空或接近空时,通过使用第二子缓存110来支持快速访问数据,而当缓存102处于更满的状态时,利用较低成本、较慢、较大存储的第一子缓存108。控制逻辑112还路由数据以便保持缓存102的先进先出特性。例如,缓存控制逻辑被配置用于当其他数据当前存储在第一子缓存108中时(即,当第一子缓存108不空时),从缓存输入109向第一子缓存108路由数据。这个逻辑保证在缓存输入处接收的数据不会跳到已存储在第一子缓存108中的数据之前。控制逻辑还被配置用于当第二子缓存110不满时,从第一子缓存108向第二子缓存110路由数据。这种操作提供再填充效果,其中第二子缓存110利用当前存储在第一子缓存108中的行中的下一数据再次被装满。图2为绘出具有触发器第一子缓存和采样器第二子缓存的缓存实现(jFIFO)的框图。基于触发器的缓存202通过1acLin缓存输入204来接收数据。接收的数据被选择性地路由到触发器第一子缓存206和采样器第二子缓存208中的一个。在一个实施方式中,触发器第一子缓存206包括触发器阵列和内部逻辑用于识别序列中下一触发器,以及多路复用器用于在接收到读请求时从该下一触发器访问数据。采样器第二子缓存208对在一个或多个输入接收的数据进行采样,并且将检测的数据以低等待时间(例如,在来自ready_in输入212的读请求的一个时钟周期内)传输至load_out输出210。采样器208为缓存202提供希望的定时隔离特征,这是因为普通的基于采样器/触发器的缓存输出210中的实施方式中不存在逻辑电路(即,相对于常规的基于触发器的缓存而言,该常规的基于触发器的缓存在触发器存储元件和基于触发器的缓存输出之间包括多路复用器-触发器选择逻辑)。
基于触发器的缓存202还包括缓存控制逻辑214、216、218、220、222、224,其选择性地从缓存输入204或第一子缓存206向第二子缓存208路由数据,以支持先进先出数据传输。在图2的示例中,控制逻辑214基于缓存输入204设置递增字段(inc)和就绪信号226。由触发器228提供的就绪信号226从基于触发器的缓存202输出,以向传送实体表明缓存202准备就绪以接收数据。inc数据信号被控制逻辑216接收,该逻辑216确定inc数据信号是否将经由232被路由到第一子缓存206,或经由234被路由到第二子缓存208。使用填充计数器(fill counter) 230处维护的计数来确定inc数据信号的路由。当计数大于I时,其中基于一个存储位置的第二子缓存208容量选择1,inc数据信号被路由到第一子缓存206用于存储。当计数小于或等于I时,控制逻辑通过旁路第一子缓存,将inc数据信号直接路由到第二子缓存208。在接收到inc数据信号时,控制逻辑218更新存储在计数器230中的计数值。当接收到inc数据信号时(即,情况1,0),计数器增加I。在接收到就绪信号212时,第二子缓存208经由缓存输出210传送数据。当缓存输出210和缓存读请求212线为激活时,通过使用递减(dec)数据信号,控制逻辑220命令缓存202中数据的计数递减。dec数据信号被传送至控制逻辑218用于调节计数。在接收到dec数据信号时,控制逻辑218更新存储在计数器230中的计数值。当dec数据信号被控制逻辑218接收时(即,情况0,I),计数器减I。dec数据信号还被控制逻辑222接收并与来自计数器230的计数一起,确定第二子缓存208是否应该用来自第一子缓存206的数据再填充。当计数器大于I时,表示数据存在于第一子缓存中,再填充信号通过236被传送到第一子缓存206以及第二子缓存208,命令第一子缓存206中的行中下一数据经由238被传送到第二子缓存208。控制逻辑218提供的计数器更新也被传送至控制逻辑224用于产生缓存就绪信号226。当计数器更新表示值小于总缓存大小时(即,第一子缓存206和第二子缓存208的存储大小的和),就绪信号经由触发器228被传送至就绪输出226。当计数器更新是不小于总缓存大小时,则就绪输出226表明不能接受新数据的满缓存202。图3为绘出一种缓存数据的方法的流程图。在302,输入数据在缓存输入处被接收。在304,针对第一子缓存和第二子缓存确定存储器满/空状态,比如通过使用计数值进行。基于存储器满/空状态,数据被选择性地从缓存输入或第一子缓存路由到第二子缓存,使得在缓存输入接收的数据可以按先进先出方式从第二子缓存输出。例如,在306,当第一子缓存为空时,通过旁路第一子缓存,输入数据被直接传送至第二子缓存。在308,当第一子缓存不空时或当第二子缓存为满时,输入数据被传送至第一子缓存。在310,在接收到数据时,计数值被更新。在312,接收到数据请求。在314,在接收到请求时,数据从第二子缓存被传送(例如,在接收到读请求的一个时钟周期内)。在316,第二子缓存利用来自第一子缓存的数据被再填充,并且在318,计数器被更新以反映输出的数据。图4为绘出基于随机访问存储器(RAM)和低等待时间触发器的缓存的框图。RAM和基于触发器的缓存402 (另一 jFIFO实现)经由load_in缓存输入404接收数据。接收到的数据被选择性地路由到基于RAM的第一子缓存406 (预缓存)和基于低等待时间触发器的第二子缓存408中的一个。基于RAM的第一子缓存406包括:存储器位置的阵列、和用于识别序列中下一存储器位置的内部逻辑、以及用于在接收到读请求时从下一存储器位置访问数据的多路复用器。基于低等待时间触发器的第二子缓存408经由一个或多个输入接收数据,并且将接收的数据以低等待时间传送至load_out输出410 (例如,在来自ready_in输入412的读请求的一个时钟周期内)。基于低等待时间触发器的第二子缓存采用多种形式。例如,基于jFIFO触发器的缓存(比如以上结合图2所述)用作图4的示例中的第二子缓存408。缓存402还包括缓存控制逻辑414、416、418、420、422、424,其选择性地将数据从缓存输入404或第一子缓存406路由到第二子缓存408,以支持先进先出数据传输和其他操作。在图4的示例中,控制逻辑414基于缓存输入404设置递增字段(inc)和就绪信号426。由触发器428传送的就绪信号被从缓存402输出,以向传送实体表明缓存402准备就绪以接收数据。inc数据信号被控制逻辑416接收,其确定inc数据信号是否将经由432被路由到第一子缓存406,或经由434被路由到第二子缓存408。使用在填充计数器430处维护的计数,来确定inc数据信号的路由。在图4的示例中,控制逻辑416基于计数值和基于RAM的第一子缓存406的等待时间来确定inc数据信号的路由。当计数小于第一子缓存等待时间加I时,则inc数据信号被直接路由到第二子缓存208。当计数大于第一子缓存等待时间加I时,则inc数据信号被路由到第一子缓存406。当接收到inc数据信号时,控制逻辑418更新存储在计数器430中的计数值。当接收到inc数据信号时(S卩,情况1,0),计数器增加I。在接收到就绪信号412时,第二子缓存408经由缓存输出410传送数据。当缓存输出410和缓存读请求412线为激活时,通过使用递减(dec)数据信号,控制逻辑420命令缓存402中的数据的计数递减。dec数据信号被传送至控制逻辑418用于调节计数。在接收到dec数据信号时,控制逻辑418更新存储在计数器430中的计数值。当控制逻辑418接收到dec数据信号时(即,情况0,I),计数器减少I。dec数据信号也被控制逻辑422接收并与来自计数器430的计数一起,以确定是否应该用来自第一子缓存406的数据再填充第二子缓存408。当计数大于第一子缓存等待时间加I时,再填充信号经由436被传送至第一子缓存406以及第二子缓存408,命令第一子缓存406中的行中下一数据经由438被传送到第二子缓存408。第一子缓存406传送数据有效性信号440,其表明在438处的数据对于由第二子缓存408读是有效的。由控制逻辑418提供的计数器更新也被传送至控制逻辑424,用于产生缓存就绪信号426。当计数器更新表示值小于总缓存大小时(即,第一子缓存406和第二子缓存408的存储大小的和),就绪信号经由触发器428被传送至就绪输出426。当计数器更新表示值不小于总缓存大小时,则就绪输出426表明不能接受新数据的满缓存402。图5为绘出使用预缓存以增强图3的方法的缓存数据的方法的流程图。在502接收输入数据。在504,确定第一子缓存和第二子缓存的存储器满/空状态,如图3所述。在506,当第一子缓存和第二子缓存包含比预缓存的时钟周期等待时间数目多的数据值时(例如,第一子缓存和第二子缓存包含4个数据值,并且基于RAM的预缓存具有2个时钟周期等待时间),输入数据被传送到随机访问存储器预缓存。在508,当第一子缓存和第二子缓存包含比预缓存的时钟周期等待时间数目多的数据值时(例如,根据图4在416所示的控制逻辑),输入数据被传送到第一子缓存和第二子缓存中的一个。在510,当第一子缓存和第二子缓存不满时,数据从预缓存被路由到第一子缓存或第二子缓存。图6为绘出具有相关采样器预缓存的基于RAM或触发器的缓存(jFIFO)的框图。jFIFO 601可以采用多种形式,比如以上结合图2和4所述的缓存之一的形式。缓存602经由1acLin缓存输入604接收数据。接收到的数据被路由到采样器预缓存606,其对来自604的输入数据进行采样,并且在608将该输入数据的采样输出。在608采样的数据被传送至控制逻辑610和控制逻辑612。当jFIFO 601为空并且经由ready_in线618请求数据时,控制逻辑610向缓存输出614提供来自608的所采样的数据。jFIFO 601的状态经由620传送至控制逻辑610。当jFIFO 601不空时,来自jFIFO 601的数据通过控制逻辑610经由622被提供至缓存输出614。控制逻辑612确定在608的采样数据是否应该被输入到jFIF0601。当jFIFO 601不满并且还当缓存602没准备就绪用于传送时,控制逻辑612将采样的数据608添加到jFIFO 601,如就绪输入618所表明的。控制逻辑624确定set_ready_in线626是否应该被激活,其命令预缓存采样并输出数据。当jFIFO 601为空且缓存就绪输入618是激活时(即,用于直接向缓存输出614传送),或者当jFIF0601不满且可用于从预采样输出608填充/再填充时,set_ready_in线626和预采样606被激活。在图6的示例中,控制逻辑628基于缓存输入604和就绪信号630设置递增字段(inc)。由触发器632传送的就绪信号从缓存602输出,以向传送实体表明缓存602准备就绪用于接收数据。inc数据信号被控制逻辑634接收,其更新存储在计数器636中的计数值。当接收到inc数据信号时(即,情况1,0),计数器增加I。当接收到就绪信号618时(读请求),当缓存输出614和缓存读请求618线是激活时,通过使用递减(dec)数据信号,控制逻辑638命令数据的计数递减。dec数据信号被传送至控制逻辑634用于调节计数。在接收到dec数据信号时,控制逻辑634更新存储在计数器636中的计数值。当控制逻辑634接收到dec数据信号时(即,情况0,I),计数器减
1由控制逻辑634提供的计数器更新还被传送到控制逻辑640,用于产生缓存就绪信号630。当计数器更新表示值小于jFIFO 601缓存大小时,就绪信号经由触发器632传送到就绪输出630。当计数器更新不小于总缓存大小时,则就绪输出630表明不能接受新数据的满缓存602。在一个实施方式中,缓存依靠jFIFO 601以识别其满/空存储器状态(例如,使用jFIFO 601的内部计数器)。在这个实施方式中,缓存602不包括图6所示的某些元件,比如计数器636。图7为绘出一种缓存数据的方法的流程图。在702,输入数据被提供至预缓存。在704,第一子缓存或第二子缓存的满/空存储器状态(比如结合图2和4所述的jFIFO电路中包含的那些)被确定,比如使用图3所述的过程。在706,当第一子缓存或第二子缓存被确定为空时,输入数据被提供至缓存的输出。当在704确定非空状态时,在708,输入数据被提供至第一子缓存或第二子缓存中的一个。图8为绘出集成电路实施方式的框图。集成电路802包括缓存804,其中缓存包括第一子缓存806,其被配置用于存储从缓存输入808接收的数据。缓存804还包括第二子缓存810,其被配置用于存储从缓存输入808或第一子缓存806接收的数据。第二子缓存810还被配置用于按与在缓存输入808处接收数据相同的顺序,将数据输出到缓存输出812。缓存804还包括缓存控制逻辑814,其被配置用于选择性地将数据从缓存输入808或第一子缓存806路由到第二子缓存810,使得在缓存输入808接收的数据可用于以先进先出方式从第二子缓存810输出。缓存804可以在多种组件之间促进通信。例如,缓存804可以缓存从处理器、存储器或其他电路816到接收器818的通信,其可以是集成电路802的组件或集成电路802外部的组件。图9为绘出另一集成电路实施方式的框图。集成电路902包括缓存904,其中缓存包括第一子缓存906,其被配置用于存储从缓存输入908接收的数据。缓存904还包括第二子缓存910,其被配置用于存储从缓存输入908或第一子缓存906接收的数据。第二子缓存910还被配置用于按与在缓存输入908处接收数据相同的顺序,将数据输出到缓存输出912。缓存904还包括缓存控制逻辑914,其被配置用于选择性地将数据从缓存输入908或第一子缓存906路由到第二子缓存910,使得在缓存输入908接收的数据可用于以先进先出方式,从第二子缓存910输出。缓存904可以促进在多种组件之间的通信。例如,缓存904可以缓存从传送器916到处理器、存储器或其他电路918的通信,其中传送器可以是集成电路902的组件或集成电路902外部的组件。已参考特定示范实施方式说明了本发明。但是,本领域技术人员将容易理解,可以以上述示范实施方式之外的具体形式实现本发明。所述实施方式仅是示意性的且不应理解为限制性的。在权利要求中而不是上述说明书中反映本发明的范围,并且旨在包括落在权利要求范围中的所有变型和等效设置。例如,所述系统和方法可以利用经由网络(例如,局域网、广域网、因特网,其组合等)传递的数据信号、光纤介质、调制的载波、无线网络等,用于与一个或多个数据处理设备通信。数据信号可以承载从/向设备提供的在此公开的数据中的任一或全部。应该理解,如在此的说明书所使用以及在下列权利要求中,除非上下文明确表明以外,“一个”、“一种”和“所述”包括复数引用。而且,如在此的说明书中所用并且在下列权利要求中,除非上下文明确表明以外,“之中”的意思包括“之中”和“之上”。此外,除非上下文明确表明以外,使用词语“每个”不必表示“每一个和每个”。最后,如在此的说明中所用并且在下列权利要求中,除非上下文明确表明以外,“和”和“或”的含义包括连接和转折且可互换地使用;短语“异或”可用于表明其中仅可应用转折意思的情况。
权利要求
1.一种缓存,包括: 第一子缓存,被配置用于存储从缓存输入接收的数据; 第二子缓存,被配置用于存储从所述缓存输入或所述第一子缓存接收的数据,并且以与在所述缓存输入处接收数据相同的顺序将数据输出到缓存输出; 缓存控制逻辑,被配置用于选择性地从所述缓存输入或所述第一子缓存将数据路由到所述第二子缓存,使得在所述缓存输入处接收的数据可以按先进先出方式从所述第二子缓存输出。
2.根据权利要求1所述的缓存,其中所述缓存控制逻辑响应于所述第一子缓存和所述第二子缓存中至少一个的空/满状态。
3.根据权利要求1所述的缓存,其中所述缓存控制逻辑被配置用于当所述第一子缓存为空时,通过旁路所述第一子缓存而从所述缓存输入向所述第二子缓存路由数据。
4.根据权利要求1所述的缓存,其中所述缓存控制逻辑还被配置用于当所述第二子缓存为满时,从所述缓存输入向所述第一子缓存路由数据。
5.根据权利要求1所述的缓存,其中所述缓存控制逻辑还被配置用于当其他数据当前被存储在所述第一子缓存中时,从所述缓存输入向所述第一子缓存路由数据。
6.根据权利要求1所述的缓存,其中所述控制逻辑还被配置用于当所述第二子缓存不满时,从所述第一子缓存向所述第二子缓存路由数据。
7.根据权利要求1所述的缓存,其中所述第二子缓存的等待时间小于所述第一子缓存的等待时间。
8.根据权利要求1所述的缓存,其中所述第一子缓存和所述第二子缓存是不同类型的独立先进先出(FIFO)队列。
9.根据权利要求1所述的缓存,其中所述第二子缓存是具有所述缓存输出所响应于的采样器输出的采样器,所述采样器输出直接连接到所述缓存输出。
10.根据权利要求1所述的缓存,其中所述第一子缓存包括输出比接收到数据请求之后一个周期多的数据的先进先出(FIFO)队列,并且其中所述第二子缓存被配置用于在接收到数据请求之后一个时钟周期内将数据输出到所述缓存输出。
11.根据权利要求10所述的缓存,其中所述第一子缓存包括触发器存储器位置的阵列,其中所述第一子缓存跟踪哪个触发器存储器位置在FIFO队列前面,其中所述第一子缓存被配置用于访问在FIFO队列前面的所述触发器存储器位置,用于在接收到读命令时向所述第二子缓存传送数据。
12.根据权利要求10所述的缓存,其中所述第一子缓存包括随机访问存储器,其中所述第一子缓存跟踪随机访问存储器的哪个存储器位置在FIFO队列前面,其中所述第一子缓存被配置用于获取访问在FIFO队列前面的所述随机访问存储器位置,用于在接收到读命令时向所述第二子缓存传送。
13.根据权利要求1所述的缓存,其中所述控制逻辑使用计数器确定所述第一子缓存是否为空、以及所述第二子缓存是否为满,其中当数据在所述缓存输入处被接收时所述计数器递增,并且其中当数据从所述缓存输出处被输出时所述计数器递减。
14.根据权利要求1所述的缓存,还包括: 随机访问存储器预缓存,被配置用于选择性地向所述第一子缓存和所述第二子缓存传送数据;以及 第二控制逻辑,被配置用于: 当所述第一子缓存和所述第二子缓存包含比所述预缓存的时钟周期等待时间少的数据值时,将数据路由到所述第一子缓存或所述第二子缓存; 当所述第一子缓存和所述第二子缓存包含比所述预缓存的所述时钟周期等待时间多的数据值时,将数据路由到所述预缓存;以及 当所述第一子缓存不空时,从所述预缓存向所述第一子缓存路由数据。
15.根据权利要求14所述的缓存,其中所述第二控制逻辑使用第二计数器确定所述第一子缓存和所述第二子缓存是否包含比所述预缓存的时钟周期等待时间少的数据值。
16.根据权利要求1所述的缓存,还包括: 预采样器,被配置用于向所述第一子缓存、所述第二子缓存和所述缓存输出传送数据;以及 第二控制逻辑,被配置用于: 当所述第一子缓存和所述第二子缓存为空时,从所述预采样器向所述缓存输出路由数据; 当所述第一子缓存和所述第二子缓存中至少一个不空时,从所述预采样器向所述第一子缓存或所述第二子缓存路由数据。
17.根据权利要求16所述的缓存,其中所述控制逻辑和所述第二控制逻辑使用单个计数器确定所述第一子缓存和所述第二子缓存的状态。
18.根据权利要求1所述的缓存,其中所述缓存是集成电路上的组件,并且其中所述集成电路包括: 存储器电路;以及 处理器电路; 其中所述缓存耦合到所述存储器电路和所述处理器电路中的至少一个。
19.一种缓存数据的方法,包括: 在缓存输入处接收输入数据; 确定第一子缓存和第二子缓存的存储器满/空状态; 基于所述存储器满/空状态,将数据选择性地从所述缓存输入或所述第一子缓存路由到所述第二子缓存,使得在所述缓存区输入处接收的数据可以按先进先出方式从所述第二子缓存输出。
20.根据权利要求19所述的方法,其中选择性地路由包括: 当所述第一子缓存为空时,将所述输入数据路由到所述第二子缓存;以及当所述第二子缓存为满时或者当所述第一子缓存不空时,将所述输入数据路由到所述第一子缓存。
21.根据权利要求19所述的方法,还包括: 当所述第一子缓存和所述第二子缓存包含比所述预缓存的时钟周期等待时间的数目少的数据值时,将所述输入数据路由到随机访问存储器预缓存;以及 当所述第一子缓存和所述第二子缓存包含比所述预缓存的时钟周期等待时间的数目多的数据值时,将所述输入数据路由到所述第一子缓存或所述第二子缓存;以及当所述第一子缓存或所述第二子缓存不满时,将数据从所述预缓存路由到所述第一子缓存或所述第二子缓存。
22.根据权利要求19所述的方法,还包括: 将所述输入数据路由到预采样器; 当所述第一子缓存和所述第二子缓存为空时,将所述输入数据从预采样器路由到输出;以及 当所述第一子缓存和所述第二子缓存中的一个不空时,将所述输入数据从所述预采样器路由到所述第一子缓存或所述第二子缓存。
全文摘要
提供了用于先进先出缓存的系统和方法。缓存包括配置用于存储从缓存输入接收的数据的第一子缓存,以及第二子缓存。所述第二子缓存被配置用于存储从所述缓存输入或第一子缓存接收的数据,并且以与在所述缓存输入处接收数据相同的顺序,将数据输出到缓存输出。缓存控制逻辑被配置用于选择性地从所述缓存输入或第一子缓存将数据路由到所述第二子缓存,使得在所述缓存输入处接收的数据可以按先进先出方式从所述第二子缓存输出。
文档编号G06F5/16GK103119548SQ201180046023
公开日2013年5月22日 申请日期2011年8月12日 优先权日2010年9月23日
发明者E·沙姆斯凯, J·库什尼尔 申请人:马维尔以色列(M.I.S.L.)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1