CN103119548A - 低等待时间先进先出(fifo)缓存 - Google Patents
低等待时间先进先出(fifo)缓存 Download PDFInfo
- Publication number
- CN103119548A CN103119548A CN2011800460230A CN201180046023A CN103119548A CN 103119548 A CN103119548 A CN 103119548A CN 2011800460230 A CN2011800460230 A CN 2011800460230A CN 201180046023 A CN201180046023 A CN 201180046023A CN 103119548 A CN103119548 A CN 103119548A
- Authority
- CN
- China
- Prior art keywords
- buffer memory
- sub
- data
- input
- buffer
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/10—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
- G06F5/12—Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/065—Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/10—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
- G06F5/12—Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations
- G06F5/14—Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations for overflow or underflow handling, e.g. full or empty flags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/16—Multiplexed systems, i.e. using two or more similar devices which are alternately accessed for enqueue and dequeue operations, e.g. ping-pong buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2205/00—Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F2205/06—Indexing scheme relating to groups G06F5/06 - G06F5/16
- G06F2205/065—With bypass possibility
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2205/00—Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F2205/12—Indexing scheme relating to groups G06F5/12 - G06F5/14
- G06F2205/126—Monitoring of intermediate fill level, i.e. with additional means for monitoring the fill level, e.g. half full flag, almost empty flag
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Transfer Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
提供了用于先进先出缓存的系统和方法。缓存包括配置用于存储从缓存输入接收的数据的第一子缓存,以及第二子缓存。所述第二子缓存被配置用于存储从所述缓存输入或第一子缓存接收的数据,并且以与在所述缓存输入处接收数据相同的顺序,将数据输出到缓存输出。缓存控制逻辑被配置用于选择性地从所述缓存输入或第一子缓存将数据路由到所述第二子缓存,使得在所述缓存输入处接收的数据可以按先进先出方式从所述第二子缓存输出。
Description
相关申请的交叉引用
本申请要求于2010年9月23日提交的发明名称为“jFIFO”的美国临时申请No.61/385,919的优先权,通过引用将其整体并入于此。
技术领域
在此所述的技术概括地涉及数据传送,且更具体地涉及低等待时间数据缓存。
背景技术
缓存提供用于在从一个位置向下一个位置传送期间临时保持数据的存储区域。例如,在计算机系统内的硬件和/或进程之间移动数据时使用缓存。当传送实体和接收实体之间传送和消耗速率不匹配时利用缓存。缓存提供临时存储,这使得所述传送实体可以在不关心接收实体能接受被传送的数据的速率的情况下发送数据。接收实体因此能根据接收实体的访问和处理能力,访问存储在缓存中的、来自传送实体的数据。
以上说明呈现为这个领域中相关技术的一般概要,并且不应理解为承认它包含的任何信息组成与本专利申请相对的现有技术。
发明内容
根据在此的教程,提供了用于先进先出缓存的系统和方法。缓存包括配置用于存储从缓存输入接收的数据的第一子缓存,以及第二子缓存。所述第二子缓存被配置用于存储从所述缓存输入或第一子缓存接收的数据,并且以与在所述缓存输入处接收数据相同的顺序,将数据输出到缓存输出。缓存控制逻辑被配置用于选择性地从所述缓存输入或第一子缓存将数据路由到所述第二子缓存,使得在所述缓存输入接收的数据可以按先进先出方式,从所述第二子缓存输出。所述缓存控制逻辑响应于第一子缓存和第二子缓存中至少一个的空/满状态。
作为另一示例,在缓存数据的方法中,输入数据在缓存输入处被接收。第一子缓存和第二子缓存的存储器满/空状态被确定。基于所述存储器满/空状态,数据被选择性地从所述缓存输入或所述第一子缓存路由到所述第二子缓存,使得在所述缓存输入处接收的数据可以按先进先出方式从所述第二子缓存输出。
作为又一个示例,一种集成电路包括处理器电路、存储器电路和缓存。所述缓存包括:第一子缓存,被配置用于从缓存输入接收的数据;以及第二子缓存,被配置用于存储从所述缓存输入或第一子缓存接收的数据,并且以与在所述缓存输入处接收数据相同的顺序将数据输出到缓存输出。所述缓存还包括缓存控制逻辑,被配置用于选择性地从所述缓存输入或第一子缓存将数据路由到所述第二子缓存,使得在所述缓存输入处接收的数据可以按先进先出方式从所述第二子缓存输出。
附图说明
图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个时钟周期等待时间提供数据,而第二子缓存以1个时钟周期等待时间提供数据)。较高速度的第二子缓存110提供用于当缓存102为空或接近空时使用的旁路机制,以使从传送器104接收的数据立即可用于接收器106(例如,以1个时钟周期等待时间)。在一个实施方式中,较大较慢的第一子缓存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通过load_in缓存输入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数据信号的路由。当计数大于1时,其中基于一个存储位置的第二子缓存208容量选择1,inc数据信号被路由到第一子缓存206用于存储。当计数小于或等于1时,控制逻辑通过旁路第一子缓存,将inc数据信号直接路由到第二子缓存208。在接收到inc数据信号时,控制逻辑218更新存储在计数器230中的计数值。当接收到inc数据信号时(即,情况1,0),计数器增加1。
在接收到就绪信号212时,第二子缓存208经由缓存输出210传送数据。当缓存输出210和缓存读请求212线为激活时,通过使用递减(dec)数据信号,控制逻辑220命令缓存202中数据的计数递减。dec数据信号被传送至控制逻辑218用于调节计数。在接收到dec数据信号时,控制逻辑218更新存储在计数器230中的计数值。当dec数据信号被控制逻辑218接收时(即,情况0,1),计数器减1。dec数据信号还被控制逻辑222接收并与来自计数器230的计数一起,确定第二子缓存208是否应该用来自第一子缓存206的数据再填充。当计数器大于1时,表示数据存在于第一子缓存中,再填充信号通过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数据信号的路由。当计数小于第一子缓存等待时间加1时,则inc数据信号被直接路由到第二子缓存208。当计数大于第一子缓存等待时间加1时,则inc数据信号被路由到第一子缓存406。当接收到inc数据信号时,控制逻辑418更新存储在计数器430中的计数值。当接收到inc数据信号时(即,情况1,0),计数器增加1。
在接收到就绪信号412时,第二子缓存408经由缓存输出410传送数据。当缓存输出410和缓存读请求412线为激活时,通过使用递减(dec)数据信号,控制逻辑420命令缓存402中的数据的计数递减。dec数据信号被传送至控制逻辑418用于调节计数。在接收到dec数据信号时,控制逻辑418更新存储在计数器430中的计数值。当控制逻辑418接收到dec数据信号时(即,情况0,1),计数器减少1。dec数据信号也被控制逻辑422接收并与来自计数器430的计数一起,以确定是否应该用来自第一子缓存406的数据再填充第二子缓存408。当计数大于第一子缓存等待时间加1时,再填充信号经由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经由load_in缓存输入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的采样数据是否应该被输入到jFIFO601。当jFIFO 601不满并且还当缓存602没准备就绪用于传送时,控制逻辑612将采样的数据608添加到jFIFO 601,如就绪输入618所表明的。控制逻辑624确定set_ready_in线626是否应该被激活,其命令预缓存采样并输出数据。当jFIFO 601为空且缓存就绪输入618是激活时(即,用于直接向缓存输出614传送),或者当jFIFO601不满且可用于从预采样输出608填充/再填充时,set_ready_in线626和预采样606被激活。
在图6的示例中,控制逻辑628基于缓存输入604和就绪信号630设置递增字段(inc)。由触发器632传送的就绪信号从缓存602输出,以向传送实体表明缓存602准备就绪用于接收数据。inc数据信号被控制逻辑634接收,其更新存储在计数器636中的计数值。当接收到inc数据信号时(即,情况1,0),计数器增加1。
当接收到就绪信号618时(读请求),当缓存输出614和缓存读请求618线是激活时,通过使用递减(dec)数据信号,控制逻辑638命令数据的计数递减。dec数据信号被传送至控制逻辑634用于调节计数。在接收到dec数据信号时,控制逻辑634更新存储在计数器636中的计数值。当控制逻辑634接收到dec数据信号时(即,情况0,1),计数器减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外部的组件。
已参考特定示范实施方式说明了本发明。但是,本领域技术人员将容易理解,可以以上述示范实施方式之外的具体形式实现本发明。所述实施方式仅是示意性的且不应理解为限制性的。在权利要求中而不是上述说明书中反映本发明的范围,并且旨在包括落在权利要求范围中的所有变型和等效设置。
例如,所述系统和方法可以利用经由网络(例如,局域网、广域网、因特网,其组合等)传递的数据信号、光纤介质、调制的载波、无线网络等,用于与一个或多个数据处理设备通信。数据信号可以承载从/向设备提供的在此公开的数据中的任一或全部。
应该理解,如在此的说明书所使用以及在下列权利要求中,除非上下文明确表明以外,“一个”、“一种”和“所述”包括复数引用。而且,如在此的说明书中所用并且在下列权利要求中,除非上下文明确表明以外,“之中”的意思包括“之中”和“之上”。此外,除非上下文明确表明以外,使用词语“每个”不必表示“每一个和每个”。最后,如在此的说明中所用并且在下列权利要求中,除非上下文明确表明以外,“和”和“或”的含义包括连接和转折且可互换地使用;短语“异或”可用于表明其中仅可应用转折意思的情况。
Claims (22)
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所述的方法,还包括:
将所述输入数据路由到预采样器;
当所述第一子缓存和所述第二子缓存为空时,将所述输入数据从预采样器路由到输出;以及
当所述第一子缓存和所述第二子缓存中的一个不空时,将所述输入数据从所述预采样器路由到所述第一子缓存或所述第二子缓存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711367942.3A CN107977189A (zh) | 2010-09-23 | 2011-08-12 | 低等待时间先进先出(fifo)缓存 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US38591910P | 2010-09-23 | 2010-09-23 | |
US61/385,919 | 2010-09-23 | ||
PCT/IB2011/002510 WO2012038829A2 (en) | 2010-09-23 | 2011-08-12 | Low latency first-in-first-out (fifo) buffer |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711367942.3A Division CN107977189A (zh) | 2010-09-23 | 2011-08-12 | 低等待时间先进先出(fifo)缓存 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103119548A true CN103119548A (zh) | 2013-05-22 |
Family
ID=45470595
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711367942.3A Pending CN107977189A (zh) | 2010-09-23 | 2011-08-12 | 低等待时间先进先出(fifo)缓存 |
CN2011800460230A Pending CN103119548A (zh) | 2010-09-23 | 2011-08-12 | 低等待时间先进先出(fifo)缓存 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711367942.3A Pending CN107977189A (zh) | 2010-09-23 | 2011-08-12 | 低等待时间先进先出(fifo)缓存 |
Country Status (3)
Country | Link |
---|---|
US (2) | US8819312B2 (zh) |
CN (2) | CN107977189A (zh) |
WO (1) | WO2012038829A2 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593148A (zh) * | 2013-11-08 | 2014-02-19 | 大唐移动通信设备有限公司 | 一种cdf侧离线话单数据快速存取的方法及装置 |
CN104821887A (zh) * | 2014-01-30 | 2015-08-05 | 马维尔以色列(M.I.S.L.)有限公司 | 通过使用具有不同延迟的存储器来进行分组处理的设备和方法 |
CN105094743A (zh) * | 2014-05-23 | 2015-11-25 | 深圳市中兴微电子技术有限公司 | 一种先进先出数据缓存器及其进行时延控制的方法 |
CN111459852A (zh) * | 2019-01-22 | 2020-07-28 | 阿里巴巴集团控股有限公司 | 缓存控制方法和装置以及电子设备 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5814882B2 (ja) * | 2011-09-28 | 2015-11-17 | 株式会社東芝 | 通信インターフェース、通信方法及び画像形成装置 |
CN103345377A (zh) * | 2013-07-23 | 2013-10-09 | 盛科网络(苏州)有限公司 | Fifo存储器控制方法及装置 |
KR20170008339A (ko) * | 2015-07-13 | 2017-01-24 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
CN105245957A (zh) * | 2015-11-05 | 2016-01-13 | 京东方科技集团股份有限公司 | 视频推荐方法、装置和系统 |
US9906460B2 (en) * | 2015-12-31 | 2018-02-27 | Alcatel-Lucent Usa Inc. | Data plane for processing function scalability |
US10382820B2 (en) * | 2016-04-01 | 2019-08-13 | Huawei Technologies Co., Ltd. | Apparatus and method for bandwidth allocation as a function of a sensed characteristic of a user |
US10268395B1 (en) * | 2016-06-09 | 2019-04-23 | Marvell International Ltd. | Systems and methods for communicating addressable requests to a programmable input/output memory over a hardware bridge |
US10402630B2 (en) * | 2017-03-10 | 2019-09-03 | Sony Interactive Entertainment LLC | Maintaining privacy for multiple users when serving media to a group |
US10969996B1 (en) | 2019-02-06 | 2021-04-06 | Marvell Israel (M.I.S.L) Ltd. | Extendable hardware queue structure and method of operation thereof |
US10963402B1 (en) * | 2019-12-28 | 2021-03-30 | Advanced Micro Devices, Inc. | Using age matrices for managing entries in sub-queues of a queue |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6240031B1 (en) * | 2000-03-24 | 2001-05-29 | Cypress Semiconductor Corp. | Memory architecture |
CN1355920A (zh) * | 1999-06-16 | 2002-06-26 | 索尼计算机娱乐公司 | 带有双缓冲的数据传输设备、数据传输系统及数据传输方法 |
CN101042636A (zh) * | 2006-03-21 | 2007-09-26 | 联发科技股份有限公司 | 先进先出系统和先进先出系统运作方法 |
US20090019193A1 (en) * | 2007-07-09 | 2009-01-15 | Luk King W | Buffer circuit |
CN101707506A (zh) * | 2009-11-06 | 2010-05-12 | 中兴通讯股份有限公司 | 一种光传送网中业务时钟透传的方法及系统 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5918302A (en) * | 1998-09-04 | 1999-06-29 | Atmel Corporation | Digital sound-producing integrated circuit with virtual cache |
US6381659B2 (en) * | 1999-01-19 | 2002-04-30 | Maxtor Corporation | Method and circuit for controlling a first-in-first-out (FIFO) buffer using a bank of FIFO address registers capturing and saving beginning and ending write-pointer addresses |
JP2003157228A (ja) * | 2001-11-20 | 2003-05-30 | Fujitsu Ltd | データ転送回路 |
US7346701B2 (en) * | 2002-08-30 | 2008-03-18 | Broadcom Corporation | System and method for TCP offload |
US8819265B2 (en) * | 2003-12-22 | 2014-08-26 | Rockstar Consortium Us Lp | Managing flow control buffer |
US7254677B1 (en) * | 2004-05-04 | 2007-08-07 | Xilinx, Inc. | First-in, first-out memory system with reduced cycle latency |
CN100546191C (zh) * | 2006-05-25 | 2009-09-30 | 深圳市恒扬科技有限公司 | 一种大容量无刷新的高速统计计数器 |
US8212547B2 (en) * | 2008-07-24 | 2012-07-03 | Stmicroelectronics International N.V. | System and method for on-chip duty cycle measurement |
CN101609432B (zh) * | 2009-07-13 | 2011-04-13 | 中国科学院计算技术研究所 | 共享缓存管理系统及方法 |
-
2011
- 2011-08-12 WO PCT/IB2011/002510 patent/WO2012038829A2/en active Application Filing
- 2011-08-12 US US13/208,675 patent/US8819312B2/en active Active
- 2011-08-12 CN CN201711367942.3A patent/CN107977189A/zh active Pending
- 2011-08-12 CN CN2011800460230A patent/CN103119548A/zh active Pending
-
2014
- 2014-07-15 US US14/331,882 patent/US9459829B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1355920A (zh) * | 1999-06-16 | 2002-06-26 | 索尼计算机娱乐公司 | 带有双缓冲的数据传输设备、数据传输系统及数据传输方法 |
US6240031B1 (en) * | 2000-03-24 | 2001-05-29 | Cypress Semiconductor Corp. | Memory architecture |
CN101042636A (zh) * | 2006-03-21 | 2007-09-26 | 联发科技股份有限公司 | 先进先出系统和先进先出系统运作方法 |
US20090019193A1 (en) * | 2007-07-09 | 2009-01-15 | Luk King W | Buffer circuit |
CN101707506A (zh) * | 2009-11-06 | 2010-05-12 | 中兴通讯股份有限公司 | 一种光传送网中业务时钟透传的方法及系统 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593148A (zh) * | 2013-11-08 | 2014-02-19 | 大唐移动通信设备有限公司 | 一种cdf侧离线话单数据快速存取的方法及装置 |
CN103593148B (zh) * | 2013-11-08 | 2017-10-27 | 大唐移动通信设备有限公司 | 一种cdf侧离线话单数据快速存取的方法及装置 |
CN104821887A (zh) * | 2014-01-30 | 2015-08-05 | 马维尔以色列(M.I.S.L.)有限公司 | 通过使用具有不同延迟的存储器来进行分组处理的设备和方法 |
CN104821887B (zh) * | 2014-01-30 | 2019-08-09 | 马维尔以色列(M.I.S.L.)有限公司 | 通过具有不同延迟的存储器进行分组处理的设备和方法 |
CN105094743A (zh) * | 2014-05-23 | 2015-11-25 | 深圳市中兴微电子技术有限公司 | 一种先进先出数据缓存器及其进行时延控制的方法 |
WO2015176475A1 (zh) * | 2014-05-23 | 2015-11-26 | 深圳市中兴微电子技术有限公司 | Fifo数据缓存器及其进行时延控制的方法、计算机存储介质 |
CN111459852A (zh) * | 2019-01-22 | 2020-07-28 | 阿里巴巴集团控股有限公司 | 缓存控制方法和装置以及电子设备 |
CN111459852B (zh) * | 2019-01-22 | 2023-05-05 | 阿里巴巴集团控股有限公司 | 缓存控制方法和装置以及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
US8819312B2 (en) | 2014-08-26 |
US20150006770A1 (en) | 2015-01-01 |
WO2012038829A2 (en) | 2012-03-29 |
US20120079144A1 (en) | 2012-03-29 |
WO2012038829A3 (en) | 2012-11-22 |
CN107977189A (zh) | 2018-05-01 |
US9459829B2 (en) | 2016-10-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103119548A (zh) | 低等待时间先进先出(fifo)缓存 | |
US20190188164A1 (en) | A method and device for improved advanced microcontroller bus architecture (amba) and advanced extensible interface (axi) operations | |
CN100576811C (zh) | 总线装置、总线系统和信息传输方法 | |
US11500541B2 (en) | Memory system and controlling method | |
US20070160053A1 (en) | Method and system for providing indeterminate read data latency in a memory system | |
CN108228498A (zh) | 一种dma控制装置和图像处理器 | |
CN105094743A (zh) | 一种先进先出数据缓存器及其进行时延控制的方法 | |
TWI528183B (zh) | 使用資料傳輸率節流來執行序列ata連接的資料傳輸之方法、電腦可讀媒體和系統 | |
US8627021B2 (en) | Method and apparatus for load-based prefetch access | |
US20130251006A1 (en) | Data packet flow control across an asynchronous clock domain boundary | |
JPH0664564B2 (ja) | データ・インタフェース装置およびデータ処理方法 | |
CN116470886A (zh) | 一种流水线反压控制方法、装置和电路 | |
CN101546300B (zh) | 存储器控制装置、存储器控制方法和信息处理系统 | |
US6363076B1 (en) | Phantom buffer for interfacing between buses of differing speeds | |
JP5084912B2 (ja) | ファイバ・チャネル通信における永続情報単位ペーシング・プロトコルの使用に関する方法、システム、および装置 | |
KR102338872B1 (ko) | 다수의 클라이언트 데이터를 처리하는 저장 장치 및 방법 | |
CN104461967A (zh) | 一种支持同步和异步传输模式的并行数据接口 | |
KR20110089129A (ko) | 통신 인터페이스용 비트 반전을 위한 시스템, 장치 및 방법 | |
KR102335798B1 (ko) | 다수의 클라이언트 데이터를 처리하는 저장 장치 및 방법 | |
US7321593B1 (en) | Fibre channel SERDES with elastic transmitter FIFO | |
US7899955B2 (en) | Asynchronous data buffer | |
KR20140006205A (ko) | 씨리얼 ata 프로토콜을 이용하는 반도체 장치 및 이를 포함하는 시스템 | |
KR20150090491A (ko) | 전자 장치 및 전자 장치에서 데이터를 액세스하는 방법 | |
CN102223285B (zh) | 处理数据报文的方法及网络节点 | |
CN102637153B (zh) | 耦合设备、处理器装置、数据处理装置、传输数据的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20130522 |