CN113821191A - 一种可配置fifo深度的装置及方法 - Google Patents

一种可配置fifo深度的装置及方法 Download PDF

Info

Publication number
CN113821191A
CN113821191A CN202111189599.4A CN202111189599A CN113821191A CN 113821191 A CN113821191 A CN 113821191A CN 202111189599 A CN202111189599 A CN 202111189599A CN 113821191 A CN113821191 A CN 113821191A
Authority
CN
China
Prior art keywords
fifo
ram
block
linked list
data
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
Application number
CN202111189599.4A
Other languages
English (en)
Inventor
朱修利
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xinhe Semiconductor Technology Wuxi Co Ltd
Original Assignee
Xinhe Semiconductor Technology Wuxi Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xinhe Semiconductor Technology Wuxi Co Ltd filed Critical Xinhe Semiconductor Technology Wuxi Co Ltd
Priority to CN202111189599.4A priority Critical patent/CN113821191A/zh
Publication of CN113821191A publication Critical patent/CN113821191A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods 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/10Methods 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明涉及数据收发技术领域,尤其涉及一种可配置FIFO深度的装置,RAM划分成若干个block块,用0~N‑1标记每个block,并建立一个初始链表;多路FIFO通过链表调度装置共享RAM。本发明使多路FIFO既能公用一套RAM缓存,又能保证每路FIFO的深度可配,方便根据业务需求,灵活分配空间。本发明通过链表方式,使得80路FIFO共享这块大的RAM,并根据业务需求,通过配置,当业务不需要80路FIFO,如使用17路FIFO,也可以共享这块空间。

Description

一种可配置FIFO深度的装置及方法
技术领域
本发明涉及数据收发技术领域,尤其涉及一种可配置FIFO深度的装置及方法。
背景技术
在通信网路芯片设计中,对上下游模块的数据转发,经常要经过先进先出的FIFO进行数据缓存,在下级模块可接收状态发送或下级模块主动从FIFO中读出想要数据。先进先出FIFO缓存模块有多种类型,如同步FIFO,异步FIFO,同步预读FIFO,异步预读FIFO,这些FIFO设计主要由两部分组成:组成一、FIFO控制模块维护当前FIFO的写地址、读地址、可写计数、可读计数、FIFO将空和将满、空满及异常指示。组成二、RAM缓存,该RAM真正缓存写入到FIFO数据,并响应FIFO的读,返回读数据,详见图5。FIFO的大小(即FIFO的深度)表示能存入数据的缓存量,FIFO深度越大,说明可以吸收写入更多的数据,以免写入侧突发时,数据吸收不住。但是FIFO深度取决于RAM大小,大的RAM会增加逻辑面积,带来功耗和成本上开销。因此在芯片设计中,需要评估RAM大小,使其既能满足流量突发吸收,又能面积不是最大。
在芯片设计中,会遇到一些特定场景,如当前模块需要准备多路FIFO,如根据业务需求划分成80路FIFO,供下级出口模块使用,而下级模块由于时隙或其他原因,一次只读一个FIFO数据。业界对于这种FIFO设计多是进行实例化多次如图6所示,该方案实现简单,但需要多个小RAM。做芯片设计的都清楚,多个小RAM比一个大的RAM面积大很多,且不易物理布局布线place and route;或采用方案2(详见图7),用一块大的RAM,通过FIFO控制把RAM均分成N等分,实现多个FIFO共存。该方案比方案1,节省了RAM空间,但和方案1有同样问题即不好控制每个FIFO的缓存大小。当80路FIFO,若只有16FIFO有业务,其他64路都是空闲,那64路FIFO空间也是不好使用。且每路FIFO的深度也不方便调整大小。
因此,对于上面多路FIFO场景需求,FIFO的实现方案1和实现方案2,都有不足之处,不是一个好的设计方案。
发明内容
本发明提供了一种可配置FIFO深度的装置及方法,使多路FIFO能公用一套RAM缓存,又能保证每路FIFO的深度可配,方便根据业务需求,灵活分配空间。本发明通过链表方式,使得80路FIFO共享这块大的RAM,并根据业务需求,通过配置,当业务不需要80路FIFO,如使用17路FIFO,也可以共享这块空间。
为了实现本发明的目的,一种可配置FIFO深度的装置,RAM划分成若干个block块,用0~N-1标记每个block,并建立一个初始链表;每路FIFO通过链表调度装置共享RAM,多路FIFO中实际使用的FIFO平分RAM。
作为本发明的优化方案,链表调度装置包括分发MUX模块,空闲头指针和空闲尾指针,空闲头指针指向block0,空闲尾指针指向blockN-1。
作为本发明的优化方案,FIFO包括FIFO控制子系统,其维护一个FIFO头指针寄存器和FIFO尾指针寄存器。FIFO头指针寄存器记录FIFO的当前读地址寄存器,FIFO尾指针寄存器记录FIFO的当前写地址寄存器。
为了实现本发明的目的,一种可配置FIFO深度的方法,包括如下步骤:
1)根据RAM空间的大小,按照32字节或64字节把RAM空间若干等份,用0~N-1标记每个block,并建立一个初始链表,空闲头指针设置为0,空闲尾指针设置为N-1,标记RAM中每个block的链表值供多路FIFO申请使用;
2)链表调度装置接收多路FIFO的其中一路FIFO读RAM和其中一路FIFO写RAM操作,经过分发MUX模块,向RAM发起读和写;
3)FIFO控制子系统给每路FIFO分配可使用RAM份数上限阈值,当某路FIFO写入的数据量超过上限阈值时,向前一级调度模块反压,告知调度模块不要再转发数据过来,当前FIFO将满;FIFO控制子系统维护该路FIFO自己的头指针和尾指针,FIFO头指针作为FIFO读地址,FIFO尾指针作为FIFO的写地址,当写的数据超过一个块block大小后,新申请一个空闲头链表,即新的block块;当读完一个RAM份数,则回收该block对应的标记号到链表尾部;
4)每路FIFO控制子系统记录已写入FIFO的block次数,当写次数超过可读阈值时,告知下一级出口输出模块可读。
作为本发明的优化方案,当有数据写请求时,若是第一次写则用链表调度装置送来的空闲头指针更新到该路FIFO头指针寄存器和FIFO尾指针寄存器;若之前已有写入,则把FIFO尾指针寄存器作为写地址,空闲头指针作为数据,写入到链表调度装置,链表调度装置在更新链表同时,接收该路FIFO控制子系统发来的写指令,经过分发MUX模块把报文数据写入到RAM对应的block缓存中;FIFO控制子系统记录写入FIFO中的次数,当达到一定可读阈值时告知下级模块,当前FIFO数据可以读。
作为本发明的优化方案,当每路FIFO存入一定数据量阈值时,告知下级出口模块,已存入一定数据,下级模块可以读一定burst数量的数据;下一级出口模块发起读数据请求,该装置的FIFO控制子系统根据FIFO内部维护的头指针寄存器向链表调度装置发起RAM的block数据读取;链表调度装置接收该路FIFO控制子系统发来的读指令,经过分发MUX模块向RAM特定block发起读;当该路FIFO的读地址是block块的最后一次,则通过本地维护的空闲尾指针回收该blcok对应的标记号,更新空闲尾指针为该block的标记号。
本发明具有积极的效果:1)本发明通过使用一个大的RAM缓存80路FIFO数据,而不需要实例化80次小RAM,节省逻辑资源空间。
2)方案2通过把1Mbit RAM平均划分80个小的FIFO,则每路FIFO只可存储12.8Kbitram。当只有17、18路FIFO有业务时,其他空闲FIFO占用绝大多数RAM空间,造成浪费。本发明通过链表方式,把1Mbit RAM划分成4K等分更小的block块,每路FIFO都可以根据当前链表空间,共享这1Mbit RAM,当只有16路、17路或不满80路FIFO有业务时,因为通过链表已把RAM均分成4K个更小的颗粒度空间(1Mbit,4K个BLOCK,每个block可以存储32字节),这16或17路有业务FIFO依然可以平分这部分大的RAM空间,提升这些路FIFO的缓存深度,提高片内性能。
附图说明
下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1为使用链表共享一块大的RAM,实现最大80路FIFO示意框图;
图2为链表初始化后的示意图;
图3为FIFO控制子系统原理框图;
图4为链表调度装置流程框图;
图5为FIFO的原理框图;
图6为使用小RAM实例化80路FIFO的原理框图;
图7为使用一块大RAM均分80等分,实现80路FIFO的流程图。
其中:1、链表调度装置。
具体实施方式
下面结合附图对本发明的实现做进一步详细的描述:
如图1-4所示,本发明公开了一种可配置FIFO深度的装置,RAM划分成若干个block块,用0~N-1标记每个block,并建立一个初始链表:按照标记0指向标记1,标记1指向标记2…标记N-1指向0;空闲头指针设置为0,空闲尾指针设置为N-1。每路FIFO通过链表调度装置1共享RAM,多路FIFO中实际使用的FIFO平分RAM。
假设空间大小是1Mbit的RAM,按照32字节(或64字节,最好设置数据位宽的4到8倍大小)化成4K等分。把这4K等分按照链表方式进行初始化,供80路FIFO申请使用。
如图4所示,链表调度装置1包括分发MUX模块,空闲头指针、空闲尾指针,空闲头指针指向block0,空闲尾指针指向blockN-1。即空闲头指针(整块RAM分成N等份)指向第一等份,空闲尾指针(整块RAM分成N等份)指向最后一等份。
FIFO控制子系统包括FIFO头指针寄存器,记录该FIFO的当前读地址寄存器、FIFO尾指针寄存器记录该FIFO的当前写地址寄存器和FIFO已写次数计数等,当其达到可读阈值时,告知下一级输出模块可以读取、RAM位宽剩余数据,(假设FIFO输出位宽为64bit,RAM位宽为256bit,RAM中数据读到FIFO内部,每次以64bit输出给下一个出口模块,剩余192bit需要缓存),FIFO空满可读标记,告知上一级调度或下一个输出模块该FIFO将空或将满。
本发明还公开了一种可配置FIFO深度的方法,包括如下步骤:
1)根据RAM空间的大小,按照32字节或64字节把RAM空间若干等份,假设由N等份。用0~N-1标记每个block,并建立一个初始链表,按照标记0指向标记1,标记1指向标记2…,标记N-1指向0;空闲头指针设置为0,空闲尾指针设置为N-1,标记RAM中每个block的链表值供多路FIFO申请使用;
2)链表调度装置1接收多路FIFO的其中一路FIFO读RAM和其中一路FIFO写RAM操作,经过分发MUX模块,向RAM发起读和写;
3)FIFO控制子系统给每路FIFO分配可使用RAM份数上限阈值,当某路FIFO写入的数据量超过上限阈值时,向前一级调度模块反压,告知调度模块不要再转发数据过来,当前FIFO将满;FIFO控制子系统维护该路FIFO自己的头指针和尾指针,链表的头指针作为FIFO读地址,链表的尾指针作为FIFO的写地址,当写的数据超过一个块block大小后,新申请一个空闲头链表,即新的block块,当读完一个RAM份数,则回收该block对应的标记号到链表尾部;
假设:一片block(假设32字节大小),一次FIFO写是8字节,则每个block可以写4次数据,每路FIFO记录当前已写入几次。
4)每路FIFO控制子系统记录已写入FIFO的block次数,当写次数超过可读阈值时,告知下一级出口输出模块可读。
当该路FIFO有数据写请求时,若是第一次写则用链表调度装置1送来的空闲头指针更新到FIFO头指针寄存器和FIFO尾指针寄存器;若之前已有写入,(该路FIFO不止占用一块block),则把FIFO尾指针寄存器(存放上一个block的标记号)作为写地址,空闲头指针作为数据,写入到链表调度装置1。使其当前block和上一个block能“串”连起来。链表调度装置1在更新链表同时,接收该路FIFO控制子系统发来的写指令,经过分发MUX模块把报文数据写入到RAM对应的block缓存中。此外FIFO控制子系统记录写入FIFO中的次数,当达到一定可读阈值时告知下级模块,当前FIFO数据可以读。
当每路FIFO存入一定数据量阈值时,告知下级出口模块,已存入一定数据,下级模块可以读一定burst(可读阈值)数量的数据(存入RAM中每个block的报文片段数据);下一级出口模块发起读数据请求,该装置的FIFO控制子系统根据FIFO内部维护的头指针寄存器向链表调度装置1发起RAM的block数据读取;链表调度装置1接收该路FIFO控制子系统发来的读指令,经过分发MUX模块向RAM特定block发起读;当该路FIFO的读地址是block块的最后一次,则通过本地维护的空闲尾指针回收该block对应的标记号(以空闲尾指针为地址,回收的block标记号为数据,更新链表),更新空闲尾指针为该block的标记号。
以上所述实施例仅表达了本发明的实施方式,其描述较为具体和详细,并不能因此而理解为对本发明专利范围的限制。应当指出的是,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。

Claims (6)

1.一种可配置FIFO深度的装置,其特征在于:RAM划分成若干个block块,用0~N-1标记每个block,并建立一个初始链表;每路FIFO通过链表调度装置(1)共享RAM,多路FIF O中实际使用的FIFO平分RAM。
2.根据权利要求1所述的一种可配置FIFO深度的装置,其特征在于:链表调度装置(1)包括分发MUX模块,空闲头指针和空闲尾指针;空闲头指针指向block0,空闲尾指针指向blockN-1。
3.根据权利要求1所述的一种可配置FIFO深度的装置,其特征在于:FIFO包括FIFO控制子系统;其维护一个FIFO头指针寄存器和FIFO尾指针寄存器;FIFO头指针寄存器记录FIFO的当前读地址寄存器,FIFO尾指针寄存器记录FIFO的当前写地址寄存器。
4.一种可配置FIFO深度的方法,其特征在于:包括如下步骤:
1)根据RAM空间的大小,按照32字节或64字节把RAM空间划分成若干等份,用0~N-1标记每个block,并建立一个初始链表,空闲头指针设置为0,空闲尾指针设置为N-1,标记RAM中每个block的链表值供多路FIFO申请使用;
2)链表调度装置(1)接收多路FIFO的其中一路FIFO读RAM和其中一路FIFO写RAM操作,经过分发MUX模块,向RAM发起读和写;
3)FIFO控制子系统给每路FIFO分配可使用RAM份数上限阈值,当某路FIFO写入的数据量超过上限阈值时,向前一级调度模块反压,告知调度模块不要再转发数据过来,当前FIFO将满;FIFO控制子系统维护该路FIFO自己的头指针和尾指针,链表的头指针作为FIFO读地址,链表的尾指针作为FIFO的写地址,当写的数据超过一个块block大小后,新申请一个空闲头链表,即新的block块,当读完一个RAM份数,则回收该block对应的标记号到链表尾部;
4)每路FIFO控制子系统记录已写入FIFO的block次数,当写次数超过可读阈值时,告知下一级出口输出模块可读。
5.根据权利要求4所述的一种可配置FIFO深度的方法,其特征在于:当有数据写请求时,若是第一次写,则用链表调度装置(1)送来的空闲头指针更新到该路FIFO控制子系统的头指针寄存器和FIFO尾指针寄存器;若之前已有写入,则把FIFO尾指针寄存器作为写地址,空闲头指针作为数据,写入到链表调度装置(1),完成该路FIFO的建链过程;链表调度装置(1)在更新链表同时,接收该路FIFO控制子系统发来的写指令,经过分发MUX模块把报文数据写入到RAM对应的block缓存中;FIFO控制子系统记录写入FIFO中的次数,当达到一定可读阈值时告知下级模块,当前FIFO数据可以读。
6.根据权利要求5所述的一种可配置FIFO深度的方法,其特征在于:当每路FIFO存入一定数据量阈值时,告知下级出口模块,已存入一定数据,下级模块可以读一定burst数量的数据;下一级出口模块发起读数据请求,该装置的FIFO控制子系统根据FIFO内部维护的头指针寄存器向链表调度装置(1)发起RAM的block数据读取;链表调度装置(1)接收该路FIFO控制子系统发来的读指令,经过分发MUX模块向RAM特定block发起读;当该路FIFO的读地址是block块的最后一次,则把该block指向的下一个block地址更新到该路FIFO的头指针寄存器,并通过本链表调度装置(1)维护的空闲尾指针回收该blcok对应的标记号,更新空闲尾指针为该block的标记号。
CN202111189599.4A 2021-10-13 2021-10-13 一种可配置fifo深度的装置及方法 Pending CN113821191A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111189599.4A CN113821191A (zh) 2021-10-13 2021-10-13 一种可配置fifo深度的装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111189599.4A CN113821191A (zh) 2021-10-13 2021-10-13 一种可配置fifo深度的装置及方法

Publications (1)

Publication Number Publication Date
CN113821191A true CN113821191A (zh) 2021-12-21

Family

ID=78916473

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111189599.4A Pending CN113821191A (zh) 2021-10-13 2021-10-13 一种可配置fifo深度的装置及方法

Country Status (1)

Country Link
CN (1) CN113821191A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114817091A (zh) * 2022-06-28 2022-07-29 井芯微电子技术(天津)有限公司 基于链表的fwft fifo系统、实现方法及设备
WO2024113783A1 (zh) * 2022-11-30 2024-06-06 苏州元脑智能科技有限公司 一种fifo存储器的深度设置方法、系统及电子设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1351784A (zh) * 1999-03-05 2002-05-29 美商传威股份有限公司 管理多个异步传输模式的信元队列的方法和装置
CN1855881A (zh) * 2005-04-28 2006-11-01 华为技术有限公司 动态共享存储器存储空间的实现方法
CN101252536A (zh) * 2008-03-31 2008-08-27 清华大学 路由器多队列数据包缓存管理与输出队列调度系统
CN103455442A (zh) * 2013-08-30 2013-12-18 华为技术有限公司 多通道先进先出缓存队列控制器及访问方法
CN103617123A (zh) * 2013-11-21 2014-03-05 珠海金山网络游戏科技有限公司 一种通过内存块实现内存管理的方法及系统
CN109428827A (zh) * 2017-08-21 2019-03-05 深圳市中兴微电子技术有限公司 一种流量自适应的缓存分配装置及方法、onu设备
CN110806986A (zh) * 2019-11-04 2020-02-18 盛科网络(苏州)有限公司 提高网络芯片报文存储效率的方法、设备及存储介质
CN111177017A (zh) * 2018-11-09 2020-05-19 炬芯(珠海)科技有限公司 一种内存分配方法及装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1351784A (zh) * 1999-03-05 2002-05-29 美商传威股份有限公司 管理多个异步传输模式的信元队列的方法和装置
CN1855881A (zh) * 2005-04-28 2006-11-01 华为技术有限公司 动态共享存储器存储空间的实现方法
CN101252536A (zh) * 2008-03-31 2008-08-27 清华大学 路由器多队列数据包缓存管理与输出队列调度系统
CN103455442A (zh) * 2013-08-30 2013-12-18 华为技术有限公司 多通道先进先出缓存队列控制器及访问方法
CN103617123A (zh) * 2013-11-21 2014-03-05 珠海金山网络游戏科技有限公司 一种通过内存块实现内存管理的方法及系统
CN109428827A (zh) * 2017-08-21 2019-03-05 深圳市中兴微电子技术有限公司 一种流量自适应的缓存分配装置及方法、onu设备
CN111177017A (zh) * 2018-11-09 2020-05-19 炬芯(珠海)科技有限公司 一种内存分配方法及装置
CN110806986A (zh) * 2019-11-04 2020-02-18 盛科网络(苏州)有限公司 提高网络芯片报文存储效率的方法、设备及存储介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114817091A (zh) * 2022-06-28 2022-07-29 井芯微电子技术(天津)有限公司 基于链表的fwft fifo系统、实现方法及设备
CN114817091B (zh) * 2022-06-28 2022-09-27 井芯微电子技术(天津)有限公司 基于链表的fwft fifo系统、实现方法及设备
WO2024113783A1 (zh) * 2022-11-30 2024-06-06 苏州元脑智能科技有限公司 一种fifo存储器的深度设置方法、系统及电子设备

Similar Documents

Publication Publication Date Title
US5502833A (en) System and method for management of a predictive split cache for supporting FIFO queues
US7536488B2 (en) Buffer controller and management method thereof
US7733892B2 (en) Buffer management method based on a bitmap table
US7366865B2 (en) Enqueueing entries in a packet queue referencing packets
CN102045258B (zh) 数据缓存管理方法及装置
CN113821191A (zh) 一种可配置fifo深度的装置及方法
WO2001069849A2 (en) Method and apparatus for shared buffer packet switching
CN102193874B (zh) 用于管理存储器的缓存管理器和方法
CN108366111B (zh) 一种用于交换设备的数据包低时延缓存装置与方法
CN100508502C (zh) 基于cam的宽带网络业务流按每流排队的可扩展的装置
CN101499956B (zh) 分级缓冲区管理系统及方法
US9690507B2 (en) System and method for enabling high read rates to data element lists
CN107888512B (zh) 动态共享缓冲存储器及交换机
CN110247970B (zh) 一种互连芯片动态共享缓冲装置
CN113535633A (zh) 一种片上缓存装置和读写方法
JP2000155740A (ja) 多重論理fifoによる1対多バスブリッジ
CN116431079A (zh) 数据读取、写入方法及装置、带宽转换装置和电子设备
US9785367B2 (en) System and method for enabling high read rates to data element lists
CN107025184B (zh) 一种数据管理方法及装置
CN111290979B (zh) 数据传输方法、装置及系统
US7035988B1 (en) Hardware implementation of an N-way dynamic linked list
CN101309194A (zh) Spi4.2总线桥接实现方法及spi4.2总线桥接器件
US20040131055A1 (en) Memory management free pointer pool
CN113126911A (zh) 基于ddr3 sdram的队列管理方法、介质、设备
CN111930650B (zh) 一种网络流量转发方法及设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination