CN112084136A - 队列缓存管理方法、***、存储介质、计算机设备及应用 - Google Patents
队列缓存管理方法、***、存储介质、计算机设备及应用 Download PDFInfo
- Publication number
- CN112084136A CN112084136A CN202010718587.5A CN202010718587A CN112084136A CN 112084136 A CN112084136 A CN 112084136A CN 202010718587 A CN202010718587 A CN 202010718587A CN 112084136 A CN112084136 A CN 112084136A
- Authority
- CN
- China
- Prior art keywords
- queue
- length
- fixed
- fifo
- frame
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/781—On-chip cache; Off-chip memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7839—Architectures of general purpose stored program computers comprising a single central processing unit with memory
- G06F15/7842—Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
- G06F15/7846—On-chip cache and off-chip main memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明属于数据交换技术领域,公开了一种队列缓存管理方法、***、存储介质、计算机设备及应用,将经过流分类和分组处理之后的数据帧在进入队列缓存管理模块之前进行组帧,将变长的以太网数据帧组帧成为长度固定字节的定长帧,通过将片内Block RAM增加***控制实现成可配置多路FIFO队列用来存储定长帧。本发明采用整块BlockRAM存储不同队列的定长帧,并通过可配置的方式选择存储区域对外呈现成为一整块RAM或者多个FIFO队列,根据存储区域选择合适的存储方案,提高了存储资源的利用率,提高数据帧的处理及转发效率。本发明可以尽量避免内部碎片的产生,提高了***的整体速率;极大地提高了存储资源的利用率。
Description
技术领域
本发明属于数据交换技术领域,尤其涉及一种队列缓存管理方法、***、存储介质、计算机设备及应用。
背景技术
目前:为了提高数据帧的交换速率,通常选用片内存储资源来存储数据帧,但是片内资源十分珍贵,由于交换***队列管理模块中,所要管理的队列数量较多,为了避免不同队列的数据帧不会乱序存放在一起,这就要求将不同队列(甚至是不同优先级)的数据帧存储在不同的RAM区域中,而片内存储资源有限,且片内Block RAM有固定规格(36K,18k),例化多个RAM的内部存储碎片会非常大。一种比较好的方法是将Block RAM资源划分成一个比较固定的区域,比如64字节(以太网帧最短帧长),具体思路是当一个数据帧申请缓存分配时,队列管理模块会将其切分成为数个64字节大小的分片进行存储,当最后的分片长度不足64字节时,还会占用一个完整的分片,即极限情况下一个数据帧所存储的单元会有63字节的内部碎片,但是如果为了降低内部碎片而将分片划分为更小的存储区,这样不仅会增加管理这些存储区域的链表开销,而且会使得入队申请缓存区域的步骤变长,降低***的整体速率。
通过上述分析,现有技术存在的问题及缺陷为:如果为了降低内部碎片而将分片划分为更小的存储区,不仅会增加管理这些存储区域的链表开销,而且会使得入队申请缓存区域的步骤变长,降低***的整体速率。
解决以上问题及缺陷的难度为:如果采用基于分片方式的随机帧长的队列管理方案,不仅需要将整个存储区域划分的定长分片以链表的形式进行连接,还需要额外增加管理这些存储区域链表的开销,而且对于一个随机帧的存储所占用的定长分片总数无法预计,这就导致对于一个即将入队的随机帧,需要进行多次缓存申请,限制了整个***的交换速率,实现起来,不仅需要复杂的队列管理机制,还需要复杂的缓存管理以及缓存查询工作以实现数据帧的正确转发,这样大大提高了整体的设计难度。
解决以上问题及缺陷的意义为:将变长分组进行组帧,然后进行队列缓存管理,这样不仅减小了内部碎片,提高了缓存利用率,而且使得整体队列缓存管理方案的实现变得简单,由于转发分组长度固定,可以通过简单计算就得出分组占用的缓存区大小,很方便实现缓存的申请以及释放,提高了***整体的转发速率;对于队列的管理,以单片块RAM增加***控制逻辑实现为多个FIFO队列的形式,使得队列管理变得简单,不需要额外的链表管理开销,提高了整体存储资源的利用率。
发明内容
针对现有技术存在的问题,本发明提供了一种队列缓存管理方法、***、存储介质、计算机设备及应用。
本发明是这样实现的,一种队列缓存管理方法,所述队列缓存管理方法包括:
将变长的数据帧进行组帧,组成长度固定字节的定长帧,并向队列缓存管理模块发起请求,申请入队;
由入队总调度根据入队申请的定长帧个数,优先级,目的端口号进行判断,并向组帧模块发出响应,表示入队成功或者失败,更新包括队首、队长、队尾等RAM的队列信息,更新缓存区域可用空间,更新缓存管理模块维护的BDG链表,更新片内FIFO的队列计数;将入队成功的结果写入调度信息FIFO中,由接收总线模块进行数据搬移;
由接收总线模块将申请缓存成功的定长帧搬移至缓存区,同时更新物理队列长度,以及片内对应FIFO队列的计数;
由出队总调度读取出队请求,根据请求中的信息,获得要出队的定长帧的存储地址,更新包括队首、队长、队尾RAM的队列信息,更新物理队列长度,更新缓存区域可用空间,更新缓存管理模块维护的BDG链表,更新片内FIFO的队列计数;将出队帧信息写入调度结果FIFO中,由发送总线模块进行数据搬移;
由发送总线模块根据调度信息从缓存区中搬移出定长帧,并更新片内FIFO队列的计数。
进一步,所述队列缓存管理方法将变长的数据帧进行组帧包括:
步骤一,接收进入组帧模块的数据帧,提取数据帧的信息,包含数据帧的帧长以及入队队列号;
步骤二,根据入队队列号查询对应队列中的碎片信息,即碎片帧中还可以容纳的字节数目Lres;
步骤三,若入队数据帧长Lemac>=Lres,则跳转至步骤四,否则,将数据帧和长度信息搬移到对应队列的碎片RAM中,更新Lres为Lres-Lemac,结束本次组帧流程;
步骤四,向队列缓存管理模块发起缓存申请,一个BD块大小为Lbd,申请缓存个数为Nbd=((Lemac-Lres)/Lbd)+1,若申请成功,则跳转至步骤五,否则表示数据帧入队失败,清空输入的数据帧,结束本次组帧流程;
步骤五,对碎片RAM和输入的数据帧按照规定好的定长帧格式进行组帧,组帧个数为Nbd,将组帧完毕的定长帧搬移至定长帧暂存FIFO中;未组帧的数据帧尾碎片搬移到碎片RAM中,结束本次组帧流程。
进一步,所述队列缓存管理方法对于队列信息的更新中,需要维护两部分队列信息,一部分为逻辑队列信息,用于指示入队成功的定长帧的队列信息,一部分为物理队列信息,用于指示由总线模块进行数据搬移的结果;对于逻辑队列的更新,由入队总调度和出队总调度在发出调度结果的同时产生;对于物理队列的更新,在入队时,应该由接收总线模块搬移后更新,在出队时,在发出调度结果的同时更新物理队列;
入队时,逻辑队列长度更新时间早于物理队列长度更新;出队时两者同时更新,进行入队判断,有可能会提前判断入队失败。
进一步,所述队列缓存管理方法对于缓存管理模块维护的BDG链表的更新指的是将缓存区域进行两级划分,第一级将整个缓存区域划分为大小相等,刚好可以存储一个定长帧的存储单元BD块,由于数据帧长度固定,不会形成内部碎片;第二级将第一级划分好的BD进行整合,形成一个存储单元组BDG,BDG所包含的BD个数可根据需要进行灵活配置;将多个BD组成一个BDG,BDG中所包含的BD数量根据定长帧的长度进行动态调整。
进一步,所述队列缓存管理方法对于片内缓存区的具体实现方式为单片块RAM增加***逻辑控制对外呈现出多通道FIFO队列,具体实现步骤包括:
步骤一,将单片块Block RAM进行地址规划,根据队列总数queue_num划分成为queue_num块,每个FIFO队列的存储区域由划分基地址加上偏移决定,当接收总线接到搬移指令时,跳转至步骤二;当发送总线接到搬移指令时跳转至步骤三;
步骤二,接收总线从组帧模块中的定长帧暂存FIFO中搬移定长帧至片内缓存区,首先根据调度信息提取出定长帧入队队列号,片内存储区的写入控制单元根据入队队列号进行地址选择,使能对应的FIFO队列,同时更新写指针以及FIFO队列计数;
步骤三,发送总线根据出队总调度发来的调度结果,提取出队队列号,查询对应FIFO队列非空,由片内存储区的读出控制单元根据出队队列号使能对应FIFO队列,同时更新读指针以及FIFO队列计数。
进一步,所述队列缓存管理方法对于片内缓存FIFO队列计数值的更新,使得入队总调度、接收总线、出队总调度、发送总线可以根据该计数值准确地进行定长帧的入队出队搬移操作,维护三个计数值,具体包括以下步骤:
步骤一,维护一个逻辑上的片内FIFO队列计数值,由入队总调度模块根据入队申请成功的定长帧个数进行更新,由出队总调度模块根据出队帧的个数进行更新,该计数值用于出队总调度模块进行判断片内存储区域是否有数据,决定是否写发送调度结果;
步骤二,维护一个物理上的片内FIFO队列计数值,由接收总线搬移完毕进行更新,由发送总线搬移完毕进行更新,该计数值用于发送总线判断片内FIFO队列是否有数据可以进行搬移;改计数值是因为逻辑入队和物理入队的速率不同;
步骤三,维护一个单独的片内FIFO队列计数,由入队总调度模块根据入队申请成功的定长帧个数进行更新,由发送总线搬移完毕进行更新,该计数值用与入队总调度判断能否入队成功,片内FIFO队列已满,再次进行入队搬移造成入队总线搬移数据出错。
本发明的另一目的在于提供一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:
将变长的数据帧进行组帧,组成长度固定字节的定长帧,并向队列缓存管理模块发起请求,申请入队;
由入队总调度根据入队申请的定长帧个数,优先级,目的端口号进行判断,并向组帧模块发出响应,表示入队成功或者失败,更新包括队首、队长、队尾等RAM的队列信息,更新缓存区域可用空间,更新缓存管理模块维护的BDG链表,更新片内FIFO的队列计数;将入队成功的结果写入调度信息FIFO中,由接收总线模块进行数据搬移;
由接收总线模块将申请缓存成功的定长帧搬移至缓存区,同时更新物理队列长度,以及片内对应FIFO队列的计数;
由出队总调度读取出队请求,根据请求中的信息,获得要出队的定长帧的存储地址,更新包括队首、队长、队尾RAM的队列信息,更新物理队列长度,更新缓存区域可用空间,更新缓存管理模块维护的BDG链表,更新片内FIFO的队列计数;将出队帧信息写入调度结果FIFO中,由发送总线模块进行数据搬移;
由发送总线模块根据调度信息从缓存区中搬移出定长帧,并更新片内FIFO队列的计数。
本发明的另一目的在于提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如下步骤:
将变长的数据帧进行组帧,组成长度固定字节的定长帧,并向队列缓存管理模块发起请求,申请入队;
由入队总调度根据入队申请的定长帧个数,优先级,目的端口号进行判断,并向组帧模块发出响应,表示入队成功或者失败,更新包括队首、队长、队尾等RAM的队列信息,更新缓存区域可用空间,更新缓存管理模块维护的BDG链表,更新片内FIFO的队列计数;将入队成功的结果写入调度信息FIFO中,由接收总线模块进行数据搬移;
由接收总线模块将申请缓存成功的定长帧搬移至缓存区,同时更新物理队列长度,以及片内对应FIFO队列的计数;
由出队总调度读取出队请求,根据请求中的信息,获得要出队的定长帧的存储地址,更新包括队首、队长、队尾RAM的队列信息,更新物理队列长度,更新缓存区域可用空间,更新缓存管理模块维护的BDG链表,更新片内FIFO的队列计数;将出队帧信息写入调度结果FIFO中,由发送总线模块进行数据搬移;
由发送总线模块根据调度信息从缓存区中搬移出定长帧,并更新片内FIFO队列的计数。
本发明的另一目的在于提供一种运行所述队列缓存管理方法的队列缓存管理***,所述队列缓存管理***包括:
组帧模块,用于通过将流分类与分组处理发来的数据帧根据其帧长以及入队队列号进行组帧,将组成的定长帧暂存在一个FIFO中,由于数据帧的长度随机;
队列缓存管理模块,用于定长帧入队时,根据缓存区域大小判断能否成功入队,若能则更新队列信息,更新缓存管理信息,实现定长帧的逻辑入队,将入队定长帧的信息写入调度结果中;定长帧出队时,根据要出队的定长帧信息,确定出队定长帧的在片内缓存区域的具***置,更新队列信息,更新缓存管理信息,实现定长帧的逻辑出队,将出队定长帧信息写入出队调度结果中;
接收总线模块,用于根据入队调度生成的调度结果,从组帧模块暂存FIFO中将组好的定长帧搬移到片内Block RAM对应的FIFO队列中,实现定长帧的物理入队;将申请缓存成功的定长帧搬移至缓存区,同时更新物理队列长度,以及片内对应FIFO队列的计数;
定长帧缓存区域模块,由单片块BlockRAM增加***控制对外呈现出多通道的FIFO队列,用于实现不同队列定长帧的有序转发;
发送总线模块,用于根据出队调度生成的调度结果,从片内Block RAM对应的FIFO队列中将定长帧搬移出来,实现定长帧的物理出队;根据调度信息从缓存区中搬移出定长帧,并更新片内FIFO队列的计数;
所述组帧模块由组帧逻辑、碎片RAM、定长帧暂存FIFO组成,组帧逻辑将数据帧加上特殊的定长帧头,组成定长帧,碎片RAM用于存储数据帧组帧剩余部分,定长帧暂存FIFO用于暂存组好的定长帧;
所述队列缓存管理模块,包括入队总调度模块、队列信息管理模块、缓存管理模块、出队总调度模块,其中:
入队总调度模块根据入队申请的定长帧个数,优先级,目的端口号进行判断,并向组帧模块发出响应,表示入队成功或者失败,更新包括队首、队长、队尾等RAM的队列信息,更新缓存区域可用空间,更新缓存管理模块维护的BDG链表,更新片内FIFO的队列计数;将入队成功的结果写入调度信息FIFO中,由接收总线模块进行数据搬移;
队列信息管理模块,包括队首、队尾、队长等队列信息的更新,维护逻辑队列,实现定长帧的逻辑入队和逻辑出队;
缓存管理模块,用于负责维护更新BDG链表,以及更新空闲BDG,BDG链表指的是将缓存区域进行两级划分,第一级将整个缓存区域划分为大小相等,刚好可以存储一个定长帧的存储单元;第二级将第一级划分好的BD进行整合,形成一个存储单元组BDG;
所述片定长帧缓存区域模块由一块Block RAM以及***控制组成,通过配置控制将单块RAM实现多个FIFO的控制写入或者当作一个整体的RAM存储区使用,不同的FIFO队列存储可以有效地实现数据流的准确有序转发。
本发明的另一目的在于提供一种数据交换终端,所述数据交换终端搭载所述的队列缓存管理***。
结合上述的所有技术方案,本发明所具备的优点及积极效果为:本发明可以在进行队列管理之前先将变长的数据帧组帧成为定长帧,针对定长帧的存储可以根据帧长规划固定大小区域的存储单元,这样可以尽量避免内部碎片的产生,而且有效地提高了***的整体速率;对于定长帧的片内存储,可以通过将单片块Block RAM增加***逻辑控制形成一个多通道写入的FIFO队列,相较于使用多块BlockRAM存储不同队列的数据帧,这种存储方式极大地提高了存储资源的利用率,而且由于要存储的数据帧为定长帧,这也为设计提供了便利。
与现有技术相比,本发明具有以下优势:
(1)相较于变长的数据帧队列缓存管理,本发明先将数据帧进行组帧,然后以定长帧的形式进行队列缓存管理,不仅管理方式比较简单,而且对于整个***的交换速率的提升也是显著的。
(2)对于定长帧的存储采用单片块RAM增加***逻辑控制成为一个多通道FIFO队列,由于存储数据为定长帧,实现较为简单,而且相较于多块Block RAM而言显著提升了资源利用,可以实现不同队列数据流的有效缓存和高速转发。
(3)对于队列信息以及片内FIFO队列计数均采用多套计数方式,匹配逻辑入队出队和物理入队出队的不同速率,准确的进行数据的搬移,防止搬移出错。
(4)对于数据帧的缓存管理采用二级缓存申请的方式,第一级以BD块的方式,具体大小为一个定长帧的长度;第二级将BD块组成一个BDG组,为了使得进来的数据帧划分的多个定长帧连续入队存储在一个连续的BD中,使得缓存管理变得简单;同时该BDG中所包含的BD数量可以根据定长帧长度以及片内存储资源的大小进行动态配置,以适应不同应用场景。
(5)灵活可配置,可以通过控制选择单片块RAM作为多个FIFO控制逻辑或者一整块RAM存储资源;使用片内存储资源,有效地提高了数据流的转发处理速度,可以实现高速交换。本发明在定长数据帧的有序转发的同时降低了多个RAM带来的占用芯片面积过大的问题,有效地提高了存储资源的利用率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图做简单的介绍,显而易见地,下面所描述的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的队列缓存管理方法流程图。
图2是本发明实施例提供的队列缓存管理***的结构示意图。
图3是本发明实施例提供的队列缓存管理方法实现流程图。
图4是本发明实施例提供的组帧模块的结构框图。
图5是本发明实施例提供的组帧流程图。
图6是本发明实施例提供的片内存储区域的结构框图。
图7是本发明实施例提供的队列缓存管理模块的结构框图。
图8是本发明实施例提供的组帧模块关键信号仿真图。
图9是本发明实施例提供的接收总线搬移将数据搬移至缓存区域FIFO队列列仿真图。
图10是本发明实施例提供的片内缓存区域FIFO队列计数值更新仿真图。
图11是本发明实施例提供的发送总线从FIFO队列搬移出定长帧仿真图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
针对现有技术存在的问题,本发明提供了一种队列缓存管理方法、***、存储介质、计算机设备及应用,下面结合附图对本发明作详细的描述。
如图1所示,本发明提供的队列缓存管理方法包括以下步骤:
S101:将变长的数据帧进行组帧,组成长度固定字节的定长帧,并向队列缓存管理模块发起请求,申请入队,由于定长帧的长度固定,队列缓存管理模块可以很方便的计算出缓存区是否足够存放改定长帧。
S102:由入队总调度根据入队申请的定长帧个数,优先级,目的端口号进行判断,并向组帧模块发出响应,表示入队成功或者失败,更新包括队首、队长、队尾等RAM的队列信息,更新缓存区域可用空间,更新缓存管理模块维护的BDG链表,更新片内FIFO的队列计数。将入队成功的结果写入调度信息FIFO中,由接收总线模块进行数据搬移。
S103:由接收总线模块将申请缓存成功的定长帧搬移至缓存区,同时更新物理队列长度,以及片内对应FIFO队列的计数。
S104:由出队总调度读取出队请求,根据请求中的信息,获得要出队的定长帧的存储地址,更新包括队首、队长、队尾等RAM的队列信息,更新物理队列长度,更新缓存区域可用空间,更新缓存管理模块维护的BDG链表,更新片内FIFO的队列计数。将出队帧信息写入调度结果FIFO中,由发送总线模块进行数据搬移。
S105:由发送总线模块根据调度信息从缓存区中搬移出定长帧,并更新片内FIFO队列的计数。
在步骤S101中中将变长的数据帧进行组帧包括:
步骤一,接收进入组帧模块的数据帧,提取数据帧的信息,包含数据帧的帧长以及入队队列号。
步骤二,根据入队队列号查询对应队列中的碎片信息,即碎片帧中还可以容纳的字节数目Lres。
步骤三,若入队数据帧长Lemac>=Lres,则跳转至步骤四,否则,将数据帧和长度信息搬移到对应队列的碎片RAM中,更新Lres为Lres-Lemac,结束本次组帧流程。
步骤四,向队列缓存管理模块发起缓存申请,一个BD块大小为Lbd,申请缓存个数(BD数)为Nbd=((Lemac-Lres)/Lbd)+1,若申请成功,则跳转至步骤五,否则表示数据帧入队失败,清空输入的数据帧,结束本次组帧流程。
步骤五,对碎片RAM和输入的数据帧按照规定好的定长帧格式进行组帧,组帧个数为Nbd,将组帧完毕的定长帧搬移至定长帧暂存FIFO中;未组帧的数据帧尾碎片搬移到碎片RAM中,结束本次组帧流程。
在步骤S102和S104中对于队列信息的更新中,为了出队搬移出错,需要维护两部分队列信息,一部分为逻辑队列信息,用于指示入队成功的定长帧的队列信息,一部分为物理队列信息,用于指示由总线模块进行数据搬移的结果。对于逻辑队列的更新,由入队总调度和出队总调度在发出调度结果的同时产生;对于物理队列的更新,在入队时,应该由接收总线模块搬移后更新,因为如果在逻辑判断入队成功就进行更新,由于接收总线还未将定长帧搬移进缓存区,出队调度就发来出队请求,就会造成搬移出错的问题,在出队时,在发出调度结果的同时更新物理队列。相当于维护了两个队列长度,一个是逻辑上的,一个是物理上的。入队时,逻辑队列长度更新时间早于物理队列长度更新。出队时两者同时更新。这就造成逻辑队列长度是大于等于物理队列长度,所以进行入队判断,有可能会提前判断入队失败,但是这是对物理数据不会覆盖写入的一个保护措施。而缓存的释放是在发送总线物理搬移完数据之后,所以是准确的。
这样的好处在于,接收总线和入队总调度解耦合,逻辑入队比较快,接收总线可以一直根据入队总调度发来的调度结果进行数据搬移,形成流水操作。
在步骤S102和S104中对于缓存管理模块维护的BDG链表的更新指的是将缓存区域进行两级划分,第一级将整个缓存区域划分为大小相等,刚好可以存储一个定长帧的存储单元(BD块),由于数据帧长度固定,不会形成内部碎片;第二级将第一级划分好的BD进行整合,形成一个存储单元组(BDG),这个BDG所包含的BD个数可根据需要进行灵活配置,设置BDG的意义在于一个定长帧的长度不宜设置过大,因为过大会造成组帧碎片过长的问题,从而浪费存储资源,降低***速率,由于定长帧长度有限,为了可以存储一次申请入队的最长以太网帧,将多个BD组成一个BDG,而这个BDG中所包含的BD数量可以根据定长帧的长度进行动态调整。
在步骤S103和S105中对于片内缓存区的具体实现方式为单片块RAM增加***逻辑控制对外呈现出多通道FIFO队列,具体实现步骤包括:
步骤一,将单片块Block RAM进行地址规划,根据队列总数queue_num划分成为queue_num块,每个FIFO队列的存储区域由划分基地址加上偏移(所能存储的定长帧的个数)决定。当接收总线接到搬移指令时,跳转至步骤二;当发送总线接到搬移指令时跳转至步骤三。
步骤二,接收总线从组帧模块中的定长帧暂存FIFO中搬移定长帧至片内缓存区,首先根据调度信息提取出定长帧入队队列号,片内存储区的写入控制单元根据入队队列号进行地址选择,使能对应的FIFO队列,同时更新写指针以及FIFO队列计数。
步骤三,发送总线根据出队总调度发来的调度结果,提取出队队列号,查询对应FIFO队列非空,由片内存储区的读出控制单元根据出队队列号使能对应FIFO队列,同时更新读指针以及FIFO队列计数。
在步骤S102-S105中对于片内缓存FIFO队列计数值的更新,为了准确的更新片内FIFO队列计数,从而使得入队总调度、接收总线、出队总调度、发送总线可以根据该计数值准确地进行定长帧的入队出队搬移操作,维护三个计数值,具体包括以下步骤:
步骤一,维护一个逻辑上的片内FIFO队列计数值,由入队总调度模块根据入队申请成功的定长帧个数进行更新(加操作),由出队总调度模块根据出队帧的个数进行更新(减操作),该计数值用于出队总调度模块进行判断片内存储区域是否有数据,从而决定是否写发送调度结果。之所以需要该计数是因为入队逻辑更新和出队逻辑更新的总量是相等的,而且逻辑入队和逻辑出队的速率相匹配。
步骤二,维护一个物理上的片内FIFO队列计数值,由接收总线搬移完毕进行更新(加操作),由发送总线搬移完毕进行更新(减操作),该计数值用于发送总线判断片内FIFO队列是否有数据可以进行搬移。之所以需要改计数值是因为逻辑入队和物理入队的速率不同,这就有可能造成逻辑上片内FIFO队列非空,但是物理上片内FIFO队列为空从而造成的出队总线搬移数据出错。
步骤三,维护一个单独的片内FIFO队列计数,由入队总调度模块根据入队申请成功的定长帧个数进行更新(加操作),由发送总线搬移完毕进行更新(减操作),该计数值用与入队总调度判断能否入队成功。之所以需要该计数是因为逻辑上入队的速度要比出队搬移的速度快,这就有可能造成出队调度已经给出调度结果,但是发送总线还没有搬移,片内FIFO队列已满,再次进行入队搬移造成入队总线搬移数据出错。
本发明提供的队列缓存管理方法业内的普通技术人员还可以采用其他的步骤实施,图1的本发明提供的队列缓存管理方法仅仅是一个具体实施例而已。
如图2所示,本发明提供的队列缓存管理***包括:
组帧模块,用于通过将流分类与分组处理发来的数据帧根据其帧长以及入队队列号进行组帧,将组成的定长帧暂存在一个FIFO中,由于数据帧的长度随机,所以组帧时,会存在碎片的问题,为了保证数据帧的完整性,同时又保证定长帧的长度固定特性,将数据帧经过组帧的剩余部分,根据队列号存储在一个碎片RAM中,在下一个数据帧到来时,将碎片帧与其进行拼接,形成一个完整的定长帧。
队列缓存管理模块,定长帧入队时,根据缓存区域大小判断能否成功入队,若能则更新队列信息,更新缓存管理信息,实现定长帧的逻辑入队,将入队定长帧的信息写入调度结果中,以便接收总线进行数据搬移;定长帧出队时,根据要出队的定长帧信息,确定出队定长帧的在片内缓存区域的具***置,更新队列信息,更新缓存管理信息,实现定长帧的逻辑出队,将出队定长帧信息写入出队调度结果中,以便发送总线进行数据搬移。
接收总线模块,根据入队调度生成的调度结果,从组帧模块暂存FIFO中将组好的定长帧搬移到片内Block RAM对应的FIFO队列中,实现定长帧的物理入队。
定长帧缓存区域模块,由单片块BlockRAM增加***控制对外呈现出多通道的FIFO队列,这样做的好处在于不仅可以提高资源利用率,而且可以实现不同队列定长帧的有序转发。
发送总线模块:根据出队调度生成的调度结果,从片内Block RAM对应的FIFO队列中将定长帧搬移出来,实现定长帧的物理出队。
接收总线模块将申请缓存成功的定长帧搬移至缓存区,同时更新物理队列长度,以及片内对应FIFO队列的计数。
发送总线模块根据调度信息从缓存区中搬移出定长帧,并更新片内FIFO队列的计数。
队列缓存管理模块,包括入队总调度模块、队列信息管理模块、缓存管理模块、出队总调度模块,其中:
入队总调度模块根据入队申请的定长帧个数,优先级,目的端口号进行判断,并向组帧模块发出响应,表示入队成功或者失败,更新包括队首、队长、队尾等RAM的队列信息,更新缓存区域可用空间,更新缓存管理模块维护的BDG链表,更新片内FIFO的队列计数。将入队成功的结果写入调度信息FIFO中,由接收总线模块进行数据搬移。
队列信息管理模块进行包括队首、队尾、队长等队列信息的更新,维护逻辑队列,实现定长帧的逻辑入队和逻辑出队。
缓存管理模块负责维护更新BDG链表,以及更新空闲BDG,BDG链表指的是将缓存区域进行两级划分,第一级将整个缓存区域划分为大小相等,刚好可以存储一个定长帧的存储单元(BD块),由于数据帧长度固定,不会形成内部碎片;第二级将第一级划分好的BD进行整合,形成一个存储单元组(BDG),这个BDG所包含的BD个数可根据需要进行灵活配置,设置BDG的意义在于一个定长帧的长度不宜设置过大,因为过大会造成组帧碎片过长的问题,从而浪费存储资源,降低***速率,由于定长帧长度有限,为了可以存储一次申请入队的最长以太网帧,将多个BD组成一个BDG,而这个BDG中所包含的BD数量可以根据定长帧的长度进行动态调整。
出队总调度读取出队请求,根据请求中的信息,获得要出队的定长帧的存储地址,更新包括队首、队长、队尾等RAM的队列信息,更新物理队列长度,更新缓存区域可用空间,更新缓存管理模块维护的BDG链表,更新片内FIFO的队列计数。将出队帧信息写入调度结果FIFO中,由发送总线模块进行数据搬移。
下面结合附图对本发明的技术方案作进一步的描述。
如图8所示,本发明提供的将变长帧转为定长分组的高效队列缓存管理方法,所述组帧模块仿真波形中,组帧模块包括组帧逻辑、碎片RAM、定长帧暂存FIFO,其中:
组帧逻辑按照输入进来的数据帧长度进行入队缓存申请,按照定长帧的格式进行组帧以及数据搬移。
碎片RAM负责存储尚未形成一个完整定长帧的数据,根据输入数据帧的队列号将碎片存储在对应队列中,碎片分为碎片帧头和碎片负载两部分,碎片帧头用来存储包含子帧长等碎片帧信息。
定长帧暂存FIFO用来存储组好的完整定长帧。
如图8所示,一种将变长帧转为定长分组的高效队列缓存管理方法,所述组帧模块的组帧流程包含:
步骤一,提取输入数据帧信息,包含由节点号node_id为3,以及优先级priority为2所决定的入队队列号,输入数据帧长度frame_length为256字节,组成定长帧为himac_length为211字节,申请BD数request_BD_num为1。
步骤二,根据入队队列号查询对应队列中的碎片信息,即碎片帧中还可以容纳的字节数目。
步骤三,可以看到对应队列碎片RAM中的碎片信息fra_douta为0,即当前队列碎片RAM中无碎片,而且当前数据帧长度大于一个定长帧长度211字节。
步骤四,向队列缓存管理模块发起缓存申请,拉高请求frameing_req,以及入队帧信息frameing_info_data,等待队列缓存管理模块发来一个响应,拉高响应有效标志frameing_ack_valid,响应值frameing_ack为1,代表申请缓存成功,可以入队。
步骤五,对碎片RAM和输入的数据帧按照规定好的定长帧格式进行组帧,由于输入数据帧长度为256字节,组成定长帧长度为211字节,所以组帧个数为1,将组帧完毕的定长帧搬移至定长帧暂存FIFO中,拉高写使能himac_fifo_wren,写入组好的定长帧;未组帧的数据帧尾碎片为45字节,搬移到碎片RAM中,拉高碎片RAM写使能fra_wrena,将数据fra_dina写入到对应队列地址fra_addrera中,结束本次组帧流程。
如图9所示,一种将变长帧转为定长分组的高效队列缓存管理方法,所述接收总线模块仿真波形中,接收总线主要负责从组帧模块定长帧暂存FIFO中将数据搬移到缓存区域对应FIFO队列中,具体流程包含:
步骤一,拉高读使能sr_rx_fifo_rd_en,读取入队总调度结果FIFO中数据sr_rx_fifo_rd_data,获得入队定长帧的节点号node_id为3,以及优先级pri为2,确定入队队列号。
步骤二,从组帧模块定长帧暂存FIFO中读出数据himac_fifo_rd_data。
步骤三,拉高总线请求bus_rx_request得到相应sram_rx_ready完成握手之后,接收总线开始向片内缓存区FIFO队列中写入数据,写入地址即为由入队节点号和优先级计算出来的队列号。
参照图9,一种将变长帧转为定长分组的高效队列缓存管理方法,所述片内缓存FIFO队列计数更新仿真波形中,片内缓存FIFO队列主要负责入队时按照入队节点号和优先级确定的队列号存储定长帧,出队时按照节点号和优先级确定定长帧存储的位置,从而实现定长帧的准确搬移。
如图10所示,一种将变长帧转为定长分组的高效队列缓存管理方法,所述片内缓存队列计数更新具体包含:
维护一个单独的片内FIFO队列计数enqueue_sram_fifo_count,由入队总调度模块根据入队申请成功的定长帧个数进行更新(加操作),由发送总线搬移完毕进行更新(减操作),该计数值用与入队总调度判断能否入队成功。之所以需要该计数是因为逻辑上入队的速度要比出队搬移的速度快,这就有可能造成出队调度已经给出调度结果,但是发送总线还没有搬移,片内FIFO队列已满,再次进行入队搬移造成入队总线搬移数据出错。
维护一个逻辑上的片内FIFO队列计数值dequeue_sram_fifo_count,由入队总调度模块根据入队申请成功的定长帧个数进行更新(加操作),由出队总调度模块根据出队帧的个数进行更新(减操作),该计数值用于出队总调度模块进行判断片内存储区域是否有数据,从而决定是否写发送调度结果。之所以需要该计数是因为入队逻辑更新和出队逻辑更新的总量是相等的,而且逻辑入队和逻辑出队的速率相匹配。
维护一个物理上的片内FIFO队列计数值dequeue_sram_fifo_physical_count,由接收总线搬移完毕进行更新(加操作),由发送总线搬移完毕进行更新(减操作),该计数值用于发送总线判断片内FIFO队列是否有数据可以进行搬移。之所以需要改计数值是因为逻辑入队和物理入队的速率不同,这就有可能造成逻辑上片内FIFO队列非空,但是物理上片内FIFO队列为空从而造成的出队总线搬移数据出错。
如图11所示,一种将变长帧转为定长分组的高效队列缓存管理方法,所述发送总线模块仿真波形中,发送总线模块主要负责将定长帧从对应的片内缓存区FIFO队列中搬移出来,具体流程包含:
步骤一,拉高读使能sr_tx_fifo_rd_en,读取出队总调度结果FIFO数据sr_tx_fifo_rd_data,提取出队定长帧目的节点号以及优先级。
步骤二,根据提取出来的目的节点号以及优先级确定出队队列号,拉高片内缓存区FIFO队列读使能memory_rd_en,尽管片内缓存区是将单片块Block RAM增加***控制实现多通道FIFO队列的形式,但是每个FIFO队列的地址还是根据队列号进行了划分,所以在拉高读使能的同时,还应给出一个读地址memory_rd_addr,即为经过节点号和优先级计算而来的队列号,读出片内缓存区FIFO队列的数据。
步骤三,将从片内缓存区FIFO队列中读出的定长帧发送出去。
应当注意,本发明的实施方式可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行***,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本发明的设备及其模块可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合例如固件来实现。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种队列缓存管理方法,其特征在于,所述队列缓存管理方法包括:
将变长的数据帧进行组帧,组成长度固定字节的定长帧,并向队列缓存管理模块发起请求,申请入队;
由入队总调度根据入队申请的定长帧个数,优先级,目的端口号进行判断,并向组帧模块发出响应,表示入队成功或者失败,更新包括队首、队长、队尾等RAM的队列信息,更新缓存区域可用空间,更新缓存管理模块维护的BDG链表,更新片内FIFO的队列计数;将入队成功的结果写入调度信息FIFO中,由接收总线模块进行数据搬移;
由接收总线模块将申请缓存成功的定长帧搬移至缓存区,同时更新物理队列长度,以及片内对应FIFO队列的计数;
由出队总调度读取出队请求,根据请求中的信息,获得要出队的定长帧的存储地址,更新包括队首、队长、队尾RAM的队列信息,更新物理队列长度,更新缓存区域可用空间,更新缓存管理模块维护的BDG链表,更新片内FIFO的队列计数;将出队帧信息写入调度结果FIFO中,由发送总线模块进行数据搬移;
由发送总线模块根据调度信息从缓存区中搬移出定长帧,并更新片内FIFO队列的计数。
2.如权利要求1所述的队列缓存管理方法,其特征在于,所述队列缓存管理方法将变长的数据帧进行组帧包括:
步骤一,接收进入组帧模块的数据帧,提取数据帧的信息,包含数据帧的帧长以及入队队列号;
步骤二,根据入队队列号查询对应队列中的碎片信息,即碎片帧中还可以容纳的字节数目Lres;
步骤三,若入队数据帧长Lemac>=Lres,则跳转至步骤四,否则,将数据帧和长度信息搬移到对应队列的碎片RAM中,更新Lres为Lres-Lemac,结束本次组帧流程;
步骤四,向队列缓存管理模块发起缓存申请,一个BD块大小为Lbd,申请缓存个数为Nbd=((Lemac-Lres)/Lbd)+1,若申请成功,则跳转至步骤五,否则表示数据帧入队失败,清空输入的数据帧,结束本次组帧流程;
步骤五,对碎片RAM和输入的数据帧按照规定好的定长帧格式进行组帧,组帧个数为Nbd,将组帧完毕的定长帧搬移至定长帧暂存FIFO中;未组帧的数据帧尾碎片搬移到碎片RAM中,结束本次组帧流程。
3.如权利要求1所述的队列缓存管理方法,其特征在于,所述队列缓存管理方法对于队列信息的更新中,需要维护两部分队列信息,一部分为逻辑队列信息,用于指示入队成功的定长帧的队列信息,一部分为物理队列信息,用于指示由总线模块进行数据搬移的结果;对于逻辑队列的更新,由入队总调度和出队总调度在发出调度结果的同时产生;对于物理队列的更新,在入队时,应该由接收总线模块搬移后更新,在出队时,在发出调度结果的同时更新物理队列;
入队时,逻辑队列长度更新时间早于物理队列长度更新;出队时两者同时更新,进行入队判断,有可能会提前判断入队失败。
4.如权利要求1所述的队列缓存管理方法,其特征在于,所述队列缓存管理方法对于缓存管理模块维护的BDG链表的更新指的是将缓存区域进行两级划分,第一级将整个缓存区域划分为大小相等,刚好可以存储一个定长帧的存储单元BD块,由于数据帧长度固定,不会形成内部碎片;第二级将第一级划分好的BD进行整合,形成一个存储单元组BDG,BDG所包含的BD个数可根据需要进行灵活配置;将多个BD组成一个BDG,BDG中所包含的BD数量根据定长帧的长度进行动态调整。
5.如权利要求1所述的队列缓存管理方法,其特征在于,所述队列缓存管理方法对于片内缓存区的具体实现方式为单片块RAM增加***逻辑控制对外呈现出多通道FIFO队列,具体实现步骤包括:
步骤一,将单片块Block RAM进行地址规划,根据队列总数queue_num划分成为queue_num块,每个FIFO队列的存储区域由划分基地址加上偏移决定,当接收总线接到搬移指令时,跳转至步骤二;当发送总线接到搬移指令时跳转至步骤三;
步骤二,接收总线从组帧模块中的定长帧暂存FIFO中搬移定长帧至片内缓存区,首先根据调度信息提取出定长帧入队队列号,片内存储区的写入控制单元根据入队队列号进行地址选择,使能对应的FIFO队列,同时更新写指针以及FIFO队列计数;
步骤三,发送总线根据出队总调度发来的调度结果,提取出队队列号,查询对应FIFO队列非空,由片内存储区的读出控制单元根据出队队列号使能对应FIFO队列,同时更新读指针以及FIFO队列计数。
6.如权利要求1所述的队列缓存管理方法,其特征在于,所述队列缓存管理方法对于片内缓存FIFO队列计数值的更新,使得入队总调度、接收总线、出队总调度、发送总线可以根据该计数值准确地进行定长帧的入队出队搬移操作,维护三个计数值,具体包括以下步骤:
步骤一,维护一个逻辑上的片内FIFO队列计数值,由入队总调度模块根据入队申请成功的定长帧个数进行更新,由出队总调度模块根据出队帧的个数进行更新,该计数值用于出队总调度模块进行判断片内存储区域是否有数据,决定是否写发送调度结果;
步骤二,维护一个物理上的片内FIFO队列计数值,由接收总线搬移完毕进行更新,由发送总线搬移完毕进行更新,该计数值用于发送总线判断片内FIFO队列是否有数据可以进行搬移;改计数值是因为逻辑入队和物理入队的速率不同;
步骤三,维护一个单独的片内FIFO队列计数,由入队总调度模块根据入队申请成功的定长帧个数进行更新,由发送总线搬移完毕进行更新,该计数值用与入队总调度判断能否入队成功,片内FIFO队列已满,再次进行入队搬移造成入队总线搬移数据出错。
7.一种计算机设备,其特征在于,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:
将变长的数据帧进行组帧,组成长度固定字节的定长帧,并向队列缓存管理模块发起请求,申请入队;
由入队总调度根据入队申请的定长帧个数,优先级,目的端口号进行判断,并向组帧模块发出响应,表示入队成功或者失败,更新包括队首、队长、队尾等RAM的队列信息,更新缓存区域可用空间,更新缓存管理模块维护的BDG链表,更新片内FIFO的队列计数;将入队成功的结果写入调度信息FIFO中,由接收总线模块进行数据搬移;
由接收总线模块将申请缓存成功的定长帧搬移至缓存区,同时更新物理队列长度,以及片内对应FIFO队列的计数;
由出队总调度读取出队请求,根据请求中的信息,获得要出队的定长帧的存储地址,更新包括队首、队长、队尾RAM的队列信息,更新物理队列长度,更新缓存区域可用空间,更新缓存管理模块维护的BDG链表,更新片内FIFO的队列计数;将出队帧信息写入调度结果FIFO中,由发送总线模块进行数据搬移;
由发送总线模块根据调度信息从缓存区中搬移出定长帧,并更新片内FIFO队列的计数。
8.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如下步骤:
将变长的数据帧进行组帧,组成长度固定字节的定长帧,并向队列缓存管理模块发起请求,申请入队;
由入队总调度根据入队申请的定长帧个数,优先级,目的端口号进行判断,并向组帧模块发出响应,表示入队成功或者失败,更新包括队首、队长、队尾等RAM的队列信息,更新缓存区域可用空间,更新缓存管理模块维护的BDG链表,更新片内FIFO的队列计数;将入队成功的结果写入调度信息FIFO中,由接收总线模块进行数据搬移;
由接收总线模块将申请缓存成功的定长帧搬移至缓存区,同时更新物理队列长度,以及片内对应FIFO队列的计数;
由出队总调度读取出队请求,根据请求中的信息,获得要出队的定长帧的存储地址,更新包括队首、队长、队尾RAM的队列信息,更新物理队列长度,更新缓存区域可用空间,更新缓存管理模块维护的BDG链表,更新片内FIFO的队列计数;将出队帧信息写入调度结果FIFO中,由发送总线模块进行数据搬移;
由发送总线模块根据调度信息从缓存区中搬移出定长帧,并更新片内FIFO队列的计数。
9.一种运行权利要求1~6任意一项所述队列缓存管理方法的队列缓存管理***,其特征在于,所述队列缓存管理***包括:
组帧模块,用于通过将流分类与分组处理发来的数据帧根据其帧长以及入队队列号进行组帧,将组成的定长帧暂存在一个FIFO中,由于数据帧的长度随机;
队列缓存管理模块,用于定长帧入队时,根据缓存区域大小判断能否成功入队,若能则更新队列信息,更新缓存管理信息,实现定长帧的逻辑入队,将入队定长帧的信息写入调度结果中;定长帧出队时,根据要出队的定长帧信息,确定出队定长帧的在片内缓存区域的具***置,更新队列信息,更新缓存管理信息,实现定长帧的逻辑出队,将出队定长帧信息写入出队调度结果中;
接收总线模块,用于根据入队调度生成的调度结果,从组帧模块暂存FIFO中将组好的定长帧搬移到片内Block RAM对应的FIFO队列中,实现定长帧的物理入队;将申请缓存成功的定长帧搬移至缓存区,同时更新物理队列长度,以及片内对应FIFO队列的计数;
定长帧缓存区域模块,由单片块BlockRAM增加***控制对外呈现出多通道的FIFO队列,用于实现不同队列定长帧的有序转发;
发送总线模块,用于根据出队调度生成的调度结果,从片内Block RAM对应的FIFO队列中将定长帧搬移出来,实现定长帧的物理出队;根据调度信息从缓存区中搬移出定长帧,并更新片内FIFO队列的计数;
所述组帧模块由组帧逻辑、碎片RAM、定长帧暂存FIFO组成,组帧逻辑将数据帧加上特殊的定长帧头,组成定长帧,碎片RAM用于存储数据帧组帧剩余部分,定长帧暂存FIFO用于暂存组好的定长帧;
所述队列缓存管理模块,包括入队总调度模块、队列信息管理模块、缓存管理模块、出队总调度模块,其中:
入队总调度模块根据入队申请的定长帧个数,优先级,目的端口号进行判断,并向组帧模块发出响应,表示入队成功或者失败,更新包括队首、队长、队尾等RAM的队列信息,更新缓存区域可用空间,更新缓存管理模块维护的BDG链表,更新片内FIFO的队列计数;将入队成功的结果写入调度信息FIFO中,由接收总线模块进行数据搬移;
队列信息管理模块,包括队首、队尾、队长等队列信息的更新,维护逻辑队列,实现定长帧的逻辑入队和逻辑出队;
缓存管理模块,用于负责维护更新BDG链表,以及更新空闲BDG,BDG链表指的是将缓存区域进行两级划分,第一级将整个缓存区域划分为大小相等,刚好可以存储一个定长帧的存储单元;第二级将第一级划分好的BD进行整合,形成一个存储单元组BDG;
所述片定长帧缓存区域模块由一块Block RAM以及***控制组成,通过配置控制将单块RAM实现多个FIFO的控制写入或者当作一个整体的RAM存储区使用,不同的FIFO队列存储可以有效地实现数据流的准确有序转发。
10.一种数据交换终端,其特征在于,所述数据交换终端搭载权利要求9所述的队列缓存管理***。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010718587.5A CN112084136B (zh) | 2020-07-23 | 2020-07-23 | 队列缓存管理方法、***、存储介质、计算机设备及应用 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010718587.5A CN112084136B (zh) | 2020-07-23 | 2020-07-23 | 队列缓存管理方法、***、存储介质、计算机设备及应用 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112084136A true CN112084136A (zh) | 2020-12-15 |
CN112084136B CN112084136B (zh) | 2022-06-21 |
Family
ID=73734745
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010718587.5A Active CN112084136B (zh) | 2020-07-23 | 2020-07-23 | 队列缓存管理方法、***、存储介质、计算机设备及应用 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112084136B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112953860A (zh) * | 2021-01-26 | 2021-06-11 | 西安电子科技大学 | 兼容hinoc2.0和3.0协议的拆帧控制方法 |
CN113032295A (zh) * | 2021-02-25 | 2021-06-25 | 西安电子科技大学 | 一种数据包二级缓存方法、***及应用 |
CN113126911A (zh) * | 2021-03-12 | 2021-07-16 | 西安电子科技大学 | 基于ddr3 sdram的队列管理方法、介质、设备 |
CN114363872A (zh) * | 2021-12-22 | 2022-04-15 | 广州安凯微电子股份有限公司 | 一种蓝牙排帧方法及装置 |
CN114401235A (zh) * | 2021-12-15 | 2022-04-26 | 西安电子科技大学 | 一种队列管理中重载处理方法、***、介质、设备及应用 |
CN114422597A (zh) * | 2021-12-14 | 2022-04-29 | 航天行云科技有限公司 | 基于fpga的数据帧定时转发方法、装置、fpga及数据交换设备 |
CN114817091A (zh) * | 2022-06-28 | 2022-07-29 | 井芯微电子技术(天津)有限公司 | 基于链表的fwft fifo***、实现方法及设备 |
CN116909978A (zh) * | 2023-09-13 | 2023-10-20 | 苏州浪潮智能科技有限公司 | 数据组帧方法、装置、电子设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103873384A (zh) * | 2014-02-11 | 2014-06-18 | 烽火通信科技股份有限公司 | Otn分组交换***中sar接收队列缓存的控制装置及方法 |
CN106899386A (zh) * | 2017-02-09 | 2017-06-27 | 武汉米风通信技术有限公司 | 基于多通道通信接收***的碎片化帧信号的解调方法 |
CN107643986A (zh) * | 2017-09-11 | 2018-01-30 | 广州慧睿思通信息科技有限公司 | 一种使用环形Buffer和自动回收描述符的AIF接收数据处理方法 |
CN108366111A (zh) * | 2018-02-06 | 2018-08-03 | 西安电子科技大学 | 一种用于交换设备的数据包低时延缓存装置与方法 |
CN109981496A (zh) * | 2019-03-27 | 2019-07-05 | 烽火通信科技股份有限公司 | 用于xgpon olt的omci组帧装置及组帧方法 |
CN111010253A (zh) * | 2019-11-06 | 2020-04-14 | 西安电子科技大学 | 一种基于hinoc协议的himac拆帧***、方法 |
US20200136986A1 (en) * | 2019-09-30 | 2020-04-30 | Intel Corporation | Multi-path packet descriptor delivery scheme |
-
2020
- 2020-07-23 CN CN202010718587.5A patent/CN112084136B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103873384A (zh) * | 2014-02-11 | 2014-06-18 | 烽火通信科技股份有限公司 | Otn分组交换***中sar接收队列缓存的控制装置及方法 |
CN106899386A (zh) * | 2017-02-09 | 2017-06-27 | 武汉米风通信技术有限公司 | 基于多通道通信接收***的碎片化帧信号的解调方法 |
CN107643986A (zh) * | 2017-09-11 | 2018-01-30 | 广州慧睿思通信息科技有限公司 | 一种使用环形Buffer和自动回收描述符的AIF接收数据处理方法 |
CN108366111A (zh) * | 2018-02-06 | 2018-08-03 | 西安电子科技大学 | 一种用于交换设备的数据包低时延缓存装置与方法 |
CN109981496A (zh) * | 2019-03-27 | 2019-07-05 | 烽火通信科技股份有限公司 | 用于xgpon olt的omci组帧装置及组帧方法 |
US20200136986A1 (en) * | 2019-09-30 | 2020-04-30 | Intel Corporation | Multi-path packet descriptor delivery scheme |
CN111010253A (zh) * | 2019-11-06 | 2020-04-14 | 西安电子科技大学 | 一种基于hinoc协议的himac拆帧***、方法 |
Non-Patent Citations (1)
Title |
---|
潘伟涛,邱智亮: "一种HIMAC硬件协处理器的设计与FPGA实现", 《电子器件》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112953860A (zh) * | 2021-01-26 | 2021-06-11 | 西安电子科技大学 | 兼容hinoc2.0和3.0协议的拆帧控制方法 |
CN113032295A (zh) * | 2021-02-25 | 2021-06-25 | 西安电子科技大学 | 一种数据包二级缓存方法、***及应用 |
CN113126911A (zh) * | 2021-03-12 | 2021-07-16 | 西安电子科技大学 | 基于ddr3 sdram的队列管理方法、介质、设备 |
CN113126911B (zh) * | 2021-03-12 | 2023-04-28 | 西安电子科技大学 | 基于ddr3 sdram的队列管理方法、介质、设备 |
CN114422597B (zh) * | 2021-12-14 | 2022-12-23 | 航天行云科技有限公司 | 基于fpga的数据帧定时转发方法、装置、fpga及数据交换设备 |
CN114422597A (zh) * | 2021-12-14 | 2022-04-29 | 航天行云科技有限公司 | 基于fpga的数据帧定时转发方法、装置、fpga及数据交换设备 |
CN114401235A (zh) * | 2021-12-15 | 2022-04-26 | 西安电子科技大学 | 一种队列管理中重载处理方法、***、介质、设备及应用 |
CN114401235B (zh) * | 2021-12-15 | 2024-03-08 | 西安电子科技大学 | 一种队列管理中重载处理方法、***、介质、设备及应用 |
CN114363872A (zh) * | 2021-12-22 | 2022-04-15 | 广州安凯微电子股份有限公司 | 一种蓝牙排帧方法及装置 |
CN114817091B (zh) * | 2022-06-28 | 2022-09-27 | 井芯微电子技术(天津)有限公司 | 基于链表的fwft fifo***、实现方法及设备 |
CN114817091A (zh) * | 2022-06-28 | 2022-07-29 | 井芯微电子技术(天津)有限公司 | 基于链表的fwft fifo***、实现方法及设备 |
CN116909978A (zh) * | 2023-09-13 | 2023-10-20 | 苏州浪潮智能科技有限公司 | 数据组帧方法、装置、电子设备及存储介质 |
CN116909978B (zh) * | 2023-09-13 | 2024-02-02 | 苏州浪潮智能科技有限公司 | 数据组帧方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112084136B (zh) | 2022-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112084136B (zh) | 队列缓存管理方法、***、存储介质、计算机设备及应用 | |
US8321385B2 (en) | Hash processing in a network communications processor architecture | |
JP5863076B2 (ja) | パケットを再構築し再順序付けするための方法、装置、およびシステム | |
US8505013B2 (en) | Reducing data read latency in a network communications processor architecture | |
US7843951B2 (en) | Packet storage system for traffic handling | |
US8935483B2 (en) | Concurrent, coherent cache access for multiple threads in a multi-core, multi-thread network processor | |
US8514874B2 (en) | Thread synchronization in a multi-thread network communications processor architecture | |
US7546399B2 (en) | Store and forward device utilizing cache to store status information for active queues | |
US8539199B2 (en) | Hash processing in a network communications processor architecture | |
US7751404B2 (en) | Method, system, and computer program product for high performance bonding resequencing | |
US8910171B2 (en) | Thread synchronization in a multi-thread network communications processor architecture | |
US20110314473A1 (en) | System and method for grouping multiple processors | |
US8943507B2 (en) | Packet assembly module for multi-core, multi-thread network processors | |
US8868889B2 (en) | Instruction breakpoints in a multi-core, multi-thread network communications processor architecture | |
US7352766B2 (en) | High-speed memory having a modular structure | |
KR20160117108A (ko) | 다수의 링크된 메모리 리스트들을 사용하기 위한 방법 및 장치 | |
CN105573711B (zh) | 一种数据缓存方法及装置 | |
US20040049613A1 (en) | Balanced linked lists for high performance data buffers in a network device | |
CN113032295B (zh) | 一种数据包二级缓存方法、***及应用 | |
US7126959B2 (en) | High-speed packet memory | |
JP2004536515A (ja) | デュアルポートメモリエミュレーション方式によるスイッチファブリック | |
US9336162B1 (en) | System and method for pre-fetching data based on a FIFO queue of packet messages reaching a first capacity threshold | |
EP2568388B1 (en) | Processor to message-based network interface using speculative techniques | |
US9804959B2 (en) | In-flight packet processing | |
CN113821457A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |