CN113032295B - 一种数据包二级缓存方法、系统及应用 - Google Patents
一种数据包二级缓存方法、系统及应用 Download PDFInfo
- Publication number
- CN113032295B CN113032295B CN202110212803.3A CN202110212803A CN113032295B CN 113032295 B CN113032295 B CN 113032295B CN 202110212803 A CN202110212803 A CN 202110212803A CN 113032295 B CN113032295 B CN 113032295B
- Authority
- CN
- China
- Prior art keywords
- multicast
- chip
- data
- cache
- fifo
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明属于数据交换技术领域,公开了一种数据包二级缓存方法、系统及应用,所述二级缓存方法利用片外的DDR,同时在缓存管理上提出了二级缓存分配的方式对片外DDR的缓存空间进行管理;二级缓存适用的场景为多路物理层传输通道(以下简称PHY)分别对队列管理提出组播出队请求,某个PHY准备好了直接将队列管理中的组播帧转发到PHY中,片内按照PHY存多份组播帧。本发明为了解决组播帧需要在队列管理模块中重复存储所造成的资源浪费问题,创建了组播掩码表,组播的数据在片外DDR只需要存储一份即可,大大减少了存储数据帧的开销。本发明涉及支持组播的二级缓存装置及方法;适用于通信网络中网络节点基于QOS机制的缓存管理模块。
Description
技术领域
本发明属于数据交换技术领域,尤其涉及一种数据包二级缓存方法、系统及应用。
背景技术
目前:随着5G时代的来临,网络对于速率的要求变得越来越高。5G与4G相比,要求“更高的网速、更低的延时”,它的传输速率远远高于以前的蜂窝网络,最高可达10Gbit/s,比先前的4G LTE蜂窝网络快100倍。这对于交换机内部的处理速率提出了更高的要求,与此同时,交换机内部的存储容量也遇到了新的挑战。
在申请公开号为CN 102377682 A,名称为“基于定长单元存储变长分组的队列管理方法及设备”的专利申请,公开了一种基于BD的缓存分配方式装置及方法。基于BD(Buffer Description)的缓存分配方式可以有效的弥补传统的静态缓存分配策略和动态缓存分配策略的缺陷。它的特点是将队列的存储空间划分成等大小的基本缓存单元,并为每个单元设置一个缓存描述符(BD)。将这些描述符存在缓存描述符存储表中形成链表。该装置的实施步骤为:第一,将分组交换系统中用于存储分组的队列存储空间划分为4096个64Byte的基本缓存单元Buffer;第二,为每个缓存描述符Buffer设置一个缓存描述符BD,二者构成一一对应的关系;第三,分别配置缓存描述符存储表BD RAM、空闲队列信息表和输出队列信息表;第四,在分组入队时,执行分组入队处理的相关操作;第五,在分组出队时,执行分组出队处理的相关操作;第六,按照分组逻辑入队地址,将分组分片存储到队列存储空间中,按照分组逻辑出队地址,将分组分片从队列存储空间中搬出。通过对上述发明的研究,可以知道该发明的优点是采用了链式存储结构,使其保证了在存储时浪费的存储空间较少。
但是该发明的缺点是随着传输速率的提升,包括要考虑突发数据的影响,片内的缓存已经不够,迫切需要更大的缓存容量。并且当交换机处理组播流的时候,如果对发往不同通道的组播流按照目的端口号分别进行存储,需要较大的缓存空间,从而造成缓存浪费。
通过上述分析,现有技术存在的问题及缺陷为:现有技术存在片内的缓存已经不够,迫切需要更大的缓存容量;对发往不同通道的组播流按照目的端口号分别进行存储,需要较大的缓存空间,造成缓存浪费。
解决以上问题及缺陷的难度为:片内缓存空间不足,因此必须用到片外存储器。但是使用片外DDR进行数据存储转发会使数据分组的处理时延变长,所以必须使用片内缓存区进行数据缓冲。并且在组播帧转发的时候,保存在片外数据只对应一块物理地址,因此需要创建指示片外DDR中数据转发通道的掩码表。
解决以上问题及缺陷的意义为:基于片内缓存和片外SDRAM相结合的方式,采用写多通道的组播掩码表的方式来解决不同组播流共用缓存区的问题。写入片内fifo的组播数据每个组播成员都需要保存一份,但写入片外DDR的数据只需要一份即可,可以节省开销。
发明内容
针对现有技术存在的问题,本发明提供了一种数据包二级缓存方法、系统及应用。
本发明是这样实现的,一种二级缓存方法,所述二级缓存方法利用片外的DDR,同时在缓存管理上提出了二级缓存分配的方式对片外DDR的缓存空间进行管理;二级缓存适用的场景为多路PHY分别对队列管理提出组播出队请求,某个PHY准备好了直接将队列管理中的组播帧转发到PHY中,片内按照PHY存多份组播帧。
进一步,所述二级缓存方法具体包括:
第一步:假设组播有M个通道,组播流有三个优先级,把广播业务看成是特殊的组播业务。则片内缓存区需要M个BlockRAM,每一个BlockRAM要对发送到一个通道数据进行缓存;对每一个BlockRAM添加控制信号构成6个同步FIFO;每个BlockRAM划分成的6个fifo分别存储三个优先级的组播帧和三个优先级的广播帧;片外部分,将片外DDR作为扩充的数据存储区域;组播帧入队时根据优先级进入片内对应的缓存区,若片内缓存区已经完全被占用,则申请二级缓存,通过计算获得缓存描述符组BDG的编号,将数据存入其映射的片外DDR的物理地址;
第二步:由入队控制装置提取数据帧入队信息,将入队的操作指令信息存入fifo中,供接收总线模块使用;根据入队的数据帧的组播信息,修改组播掩码表,更新组播存储的队首、队尾、队列长度、节点长度以及片内fifo写数据计数信息;
第三步:由接收总线模块将定长帧搬移至片内fifo或者片外DDR的缓存区,并更新组播物理长度信息;
第四步:由出队控制装置读取出队请求,根据请求中的信息,获得要出队的定长帧的存储地址,更新物理队列长度,更新缓存区域可用空间,更新缓存管理模块维护的BDG链表;将出队帧信息写入调度结果FIFO中,更新组播掩码表,更新组播存储的队首、队尾、队列长度、节点长度信息,更新组播物理长度信息,并更新片内组播fifo的存储数据计数值;
第五步:由发送总线模块根据调度信息从缓存区中搬移出定长帧。
进一步,所述第一步将片内存储组播帧的BlockRAM转化成fifo以及二级缓存BDG与片外DDR的物理地址映射流程包括:
步骤一:假设组播数据流分为三个优先级,把广播帧当做特殊的组播队列,则每一条组播、广播流按照优先级和类别可以划分为6个缓存区。因此将BlockRAM划分成为6块,添加控制信号使之成为6个片内缓存fifo,每块fifo的存储区域容量为6个BD大小;假设帧长为LEN,数据总线位宽为W比特,则每块fifo的存储深度为6*LEN/W;每块fifo的存储区域由它们划分的基地址和偏移地址所决定;组播低优先级为{000},中优先级为{001},高优先级为{010}。广播低优先级为{011},中优先级为{100},高优先级为{101},则基地址addr_base=优先级*6*LEN/W,偏移地址为对应优先级fifo中已存数据的深度(depth<=6*LEN/W);
步骤二:将片外DDR的缓存区按照二级缓存分配的BDG进行映射,缓存管理总共管理M个BGD的分配,一个BDG中有N个BD,一个BD中能存下一个定长帧,帧长为LEN个字节;则片外DDR所用到的总存储空间为M*N*LEN字节,每个BD所映射的实际物理地址由其BDG的基地址和BD偏移地址所决定。
进一步,所述第二步入队控制流程包括:
步骤一:提取数据帧的信息,包含数据帧所需要的缓存BD数和需要转发的转发通道PHY ID列表、优先级;
步骤二:根据PHY ID列表,查找每个相应的组播转发的队列长度信息,根据门限,判断是全部入队、部分入队还是全部入队失败;如果所有组播转发队列判断结果均为入队失败,则跳转到步骤七;否则返回满足条件的队列个数,并执行步骤三;
步骤三:如果组播通道的片内缓存足够,首先将数据存至片内。若片内仅剩部分存储空间,不能满足一次入队申请所需的空间,则先将片内存储空间使用完毕再跳转至步骤四;若片内空间已经使用完毕,则直接跳转至步骤四;
步骤四:从一级缓存分配中取出n个BD,n为该组播帧入队所需要的的BD数,如果某个一级缓存中不够n个BD,则该队列入队失败;若取出n个BD后,剩余BD个数小于7则提前向二级缓存分配申请1个BDG;如果申请BDG超过门限,返回申请失败;申请成功则更新LinkListRAM,该RAM维护了BDG的链表结构;
步骤五:将入队成功的一个或多个组播队列的掩码表BDMaskBits和下一跳地址更新;写PHY ID RAM列表,表示能够直接写入片内组播缓存区的通道id,写PHY ID DDR列表,表示需要写入片外DDR的通道id,将对组播数据进行操作的指令信息写入fifo中;
步骤六:将一个或多个组播转发的队尾、队列长度、节点长度、片内fifo深度等信息更新;
步骤七:入队失败,返回步骤一。
进一步,所述第三步数据帧写入缓存流程包括:
步骤一:读取对于组播数据进行操作的指令信息,包含PHY ID列表、写入片内或片外DDR的方式、写入片外缓存区的逻辑地址,即BDG和BD;
步骤二:PHY ID RAM列表为1的代表数据将从该PHY进行转发,故需要将数据搬移至该PHY对应的片内缓存区,故当M路通道在PHY ID RAM列表置1时,则将数据复制M份,分别搬移到各路组播的片内缓存区中;PHY ID DDR列表中为1代表需要将数据写入到片外DDR对应的缓存区中,当N路通道在PHY ID DDR中为1,则将数据写到片外DDR并更新这N个通道的物理入队长度;
进一步,所述第四步出队控制流程包括:
步骤一:根据某通道PHY发起组播出队请求,携带PHY ID;
步骤二:在对应的组播转发队列中轮询3个优先级子队列,按照优先级调度策略,查询对应优先级中组播掩码表;
步骤三:将出队的组播队列对应的BDMaskBits相应bit位清零,如果清零后BDMaskBits的所有bit均为0,则删除该MultiBDLinkListRAM中的该节点;同时由于出队后,队列中的队首发生了变化。为了使下一次出队时能找到新的队首的位置,需要找到下一个组播帧的缓存区,并将队首信息更新;
步骤四:如果删除节点后,查询其他队列同一BDG内的BD掩码;若所有掩码都为全零,则首先进行逻辑释放,当物理总线完成该BDG内所有BD的搬移时,再进行物理释放,将该BDG写入FreeBDGFifo,完成缓存回收;
步骤五:写出队指令,sr_trans_fifo,包含片外数据搬移到片内的指令,sr_tx_fifo,包含片内数据发送到队列管理外的数据总线的指令;
所述第三步数据帧从缓存读出流程包括:
步骤一:读取出队指令信息;
步骤二:按照出队指令信息从片外DDR向片内的组播fifo中搬移数据帧,或者将组播fifo的数据搬移到PHY通道进行输出。
本发明的另一目的在于提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如下步骤:
第一步:假设组播有M个通道,组播流有三个优先级,把广播业务看成是特殊的组播业务。则片内缓存区需要M个BlockRAM,每一个BlockRAM要对发送到一个通道数据进行缓存;对每一个BlockRAM添加控制信号构成6个同步FIFO;每个BlockRAM划分成的6个fifo分别存储三个优先级的组播帧和三个优先级的广播帧;片外部分,将片外DDR作为扩充的数据存储区域;组播帧入队时根据优先级进入片内对应的缓存区,若片内缓存区已经完全被占用,则申请二级缓存,通过计算获得缓存描述符组BDG的编号,将数据存入其映射的片外DDR的物理地址;
第二步:由入队控制装置提取数据帧入队信息,将入队的操作指令信息存入fifo中,供接收总线模块使用;根据入队的数据帧的组播信息,修改组播掩码表,更新组播存储的队首、队尾、队列长度、节点长度以及片内fifo写数据计数信息;
第三步:由接收总线模块将定长帧搬移至片内fifo或者片外DDR的缓存区,并更新组播物理长度信息;
第四步:由出队控制装置读取出队请求,根据请求中的信息,获得要出队的定长帧的存储地址,更新物理队列长度,更新缓存区域可用空间,更新缓存管理模块维护的BDG链表;将出队帧信息写入调度结果FIFO中,更新组播掩码表,更新组播存储的队首、队尾、队列长度、节点长度信息,更新组播物理长度信息,并更新片内组播fifo的存储数据计数值;
第五步:由发送总线模块根据调度信息从缓存区中搬移出定长帧。
本发明的另一目的在于提供一种信息数据处理终端,所述信息数据处理终端用于实现所述的二级缓存方法。
本发明的另一目的在于提供一种实施所述二级缓存方法的二级缓存系统,所述二级缓存系统包括:
FIFO定义模块,假设组播有M个通道,片内缓存区则需要M个BlockRAM,每一个BlockRAM对应着一个通道的数据缓存,对每一个BlockRAM添加控制信号构成6个同步FIFO,每个FIFO用来存储一个优先级的组播帧,每个BlockRAM划分成的6个fifo分别存储三个优先级的组播帧和三个优先级的广播帧,这6种类型的组播帧存储空间都为Y个长度为len字节的定长数据帧,每个通道BlockRAM所划分的fifo区域和每个fifo的结构;
缓存区定义模块,用于将片外DDR的缓存区划分为L个等长的区域块,每个区域块可存K个定长数据帧;每个区域块内的K个数据帧在DDR中的物理存储地址连续;
组播片外缓存区掩码表模块,每一个通道都有对应的一个掩码表模块,在组播入队向片内缓存fifo搬移数据时或者出队将片内缓存fifo中的数据搬移到PHY通道时,不对组播片外缓存区掩码表进行修改,当把组播数据写入片外DDR时,若对应的通道是该组播帧的转发通道,则在该通道的掩码表内的BD指示值写为1;当把组播数据从片外DDR读入某通道的片内缓存fifo时,则将该通道的掩码表内的BD指示值写为0;当所有通道的掩码表中同一BDG内所有BD的指示值都为0时,表示该BDG存储的组播数据已经全部搬移至片内的各个组播通道的缓存中,则可以释放该BDG的缓存空间;
入队控制模块,提取数据帧入队信息,将入队的操作指令信息存入fifo中,供接收总线模块读取;根据入队的数据帧的组播信息,修改组播掩码表;更新组播存储的队首、队尾、队列长度、节点长度以及片内fifo写数据计数信息;
出队控制模块,读取出队请求,根据请求中的信息,获得要出队的定长帧的存储地址,更新物理队列长度,更新缓存区域可用空间,更新缓存管理模块维护的BDG链表;将出队帧信息写入调度结果FIFO中,更新组播掩码表,更新组播存储的队首、队尾、队列长度、节点长度信息;更新组播物理长度信息,并更新片内组播fifo的存储数据计数值。
本发明的另一目的在于提供一种适用于队列管理组播的二级缓存系统,所述适用于队列管理组播的二级缓存系统实施所述的二级缓存方法。
结合上述的所有技术方案,本发明所具备的优点及积极效果为:本发明利用片外的DDR解决了片内缓存空间不足的问题,同时在缓存管理上提出了二级缓存分配的方式对片外DDR的缓存空间进行管理。第二点:二级缓存装置适用的场景为多路PHY分别对队列管理提出组播出队请求,某个PHY准备好了就可以直接将队列管理中的组播帧转发到这个PHY中,这就要求片内按照PHY存多份组播帧。为了解决组播帧需要在队列管理模块中重复存储所造成的资源浪费问题,创建了组播掩码表,组播的数据在片外DDR只需要存储一份即可,大大减少了存储数据帧的开销。本发明涉及通信网络技术领域中的支持组播的二级缓存装置及方法;适用于通信网络中网络节点基于QOS机制的缓存管理模块。
与现有技术相比,本发明具有以下优点:
(1)按照不同的发送通道,将片内的一块Block RAM控制成多个同步FIFO。解决了多个组播队列需要使用多个双口RAM缓存数据帧可能会造成的芯片面积大的问题。
(2)数据帧入队时,首先写入由片内BlockRAM构成的同步FIFO中,当同步FIFO写满之后才写入片外DDR存储空间,而数据出队时直接从该队列对应同步FIFO中读出。这样相当于是有两套处理流程,当数据流比较慢时只使用片内的缓冲区FIFO,不写入片外DDR,此时可以减少交换单元的数据搬移时间。
(3)当接收高速数据流的时候,写满片内的同步FIFO之后,会将之后的数据帧写入片外DDR中。由于在片外DDR中数据帧只在实际的物理地址中存储一份,所以此时需要按照组播发送通道列表生成组播掩码表。等片外的数据分别搬移到各路发送通道的片内缓存FIFO中时,将组播掩码表中相应缓存空间的数据置为0,指示可以清除片外DDR中的该存储区。组播掩码表保障了组播数据帧进行出队的时候不会出现对某个通道发生转发失败的情况。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图做简单的介绍,显而易见地,下面所描述的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的二级缓存方法流程图。
图2是本发明实施例提供的二级缓存系统的结构示意图;
图2中:1、FIFO定义模块;2、缓存区定义模块;3、组播片外缓存区掩码表模块;4、入队控制模块;5、出队控制模块。
图3是本发明实施例提供的组播片内fifo结构示意图;
图4是本发明实施例提供的单个fifo结构图;
图5是本发明实施例提供的片外DDR的区域划分示意图;
图6是本发明实施例提供的入队的流程图;
图7是本发明实施例提供的确定组播出队BD数的流程图;
图8是本发明实施例提供的出队的流程图;
图9是本发明实施例提供的组播掩码表的结构示意图;
图10是本发明证明部分提供的申请二级缓存的仿真波形示意图;
图11是本发明证明部分提供的数据写入片内缓存fifo的仿真波形示意图;
图12是本发明证明部分提供的组播掩码表在组播数据入队时的仿真波形示意图;
图13是本发明证明部分提供的组播掩码表在组播数据出队时的仿真波形示意图;
图14是本发明证明部分提供的释放二级缓存BDG的仿真波形示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
针对现有技术存在的问题,本发明提供了一种数据包二级缓存方法、系统及应用,下面结合附图对本发明作详细的描述。
如图1所示,本发明提供的二级缓存方法包括以下步骤:
S101:假设组播有M个通道,组播流有三个优先级,把广播业务看成是特殊的组播业务。则片内缓存区需要M个BlockRAM,每一个BlockRAM要对发送到一个通道数据进行缓存。对每一个BlockRAM添加控制信号构成6个同步FIFO。每个BlockRAM划分成的6个fifo分别存储三个优先级的组播帧和三个优先级的广播帧。片外部分,将片外DDR作为扩充的数据存储区域。组播帧入队时根据优先级进入片内对应的缓存区,若片内缓存区已经完全被占用,则申请二级缓存,通过计算获得缓存描述符组BDG的编号,将数据存入其映射的片外DDR的物理地址;
S102:由入队控制装置提取数据帧入队信息,将入队的操作指令信息存入fifo中,供接收总线模块使用。根据入队的数据帧的组播信息,修改组播掩码表。更新组播存储的队首、队尾、队列长度、节点长度以及片内fifo写数据计数信息;
S103:由接收总线模块将定长帧搬移至片内fifo或者片外DDR的缓存区,并更新组播物理长度信息;
S104:由出队控制装置读取出队请求,根据请求中的信息,获得要出队的定长帧的存储地址,更新物理队列长度,更新缓存区域可用空间,更新缓存管理模块维护的BDG链表;将出队帧信息写入调度结果FIFO中,更新组播掩码表,更新组播存储的队首、队尾、队列长度、节点长度信息。更新组播物理长度信息,并更新片内组播fifo的存储数据计数值;
S105:由发送总线模块根据调度信息从缓存区中搬移出定长帧。
如图2所示,本发明提供的二级缓存系统包括:
FIFO定义模块1,假设组播有M个通道。片内缓存区则需要M个BlockRAM,每一个BlockRAM对应着一个通道的数据缓存。对每一个BlockRAM添加控制信号构成6个同步FIFO。每个FIFO用来存储一个优先级的组播帧。每个BlockRAM划分成的6个fifo分别存储三个优先级的组播帧和三个优先级的广播帧,这6种类型的组播帧存储空间都为Y个长度为len(len的长度为一个BD描述符所映射的物理缓存空间大小)字节的定长数据帧,每个通道BlockRAM所划分的fifo区域和每个fifo的结构分别如图3、如图4所示。
缓存区定义模块2,用于将片外DDR的缓存区划分为L个等长的区域块,每个区域块可存K个定长数据帧。每个区域块内的K个数据帧在DDR中的物理存储地址连续。
组播片外缓存区掩码表模块3,每一个通道都有对应的一个掩码表模块。在组播入队向片内缓存fifo搬移数据时或者出队将片内缓存fifo中的数据搬移到PHY通道时,不对组播片外缓存区掩码表进行修改。当把组播数据写入片外DDR时,若对应的通道是该组播帧的转发通道,则在该通道的掩码表内的BD指示值写为1。当把组播数据从片外DDR读入某通道的片内缓存fifo时,则将该通道的掩码表内的BD指示值写为0。当所有通道的掩码表中同一BDG内所有BD的指示值都为0时,表示该BDG存储的组播数据已经全部搬移至片内的各个组播通道的缓存中,则可以释放该BDG的缓存空间。
入队控制模块4,提取数据帧入队信息,将入队的操作指令信息存入fifo中,供接收总线模块读取。根据入队的数据帧的组播信息,修改组播掩码表。更新组播存储的队首、队尾、队列长度、节点长度以及片内fifo写数据计数信息。
出队控制模块5,读取出队请求,根据请求中的信息,获得要出队的定长帧的存储地址,更新物理队列长度,更新缓存区域可用空间,更新缓存管理模块维护的BDG链表;将出队帧信息写入调度结果FIFO中,更新组播掩码表,更新组播存储的队首、队尾、队列长度、节点长度信息。更新组播物理长度信息,并更新片内组播fifo的存储数据计数值。
下面结合附图对本发明的技术方案作进一步的描述。
本发明是这样实现的,一种片内片外结合的组播实现方法包括以下内容:
在S101中实现了基于二级缓存分配的缓存空间的划分。
步骤一:假设片内fifo每个优先级的容量为Q个BD,每个BD的缓存是数据总线的W倍。写数据到达组播的缓存模块时,根据得到组播数据的优先级以及表示组播/广播的标志确定数据存储的fifo在BlockRAM中的位置。用一比特数据表示组播/广播,用两比特数据表示优先级。组播低优先级基地址描述符E为{000},中优先级基地址描述符E为{001},高优先级基地址描述符E为{010}。广播低优先级基地址描述符E为{011},中优先级基地址描述符E为{100},高优先级基地址描述符E为{101}。如果入队数据帧是组播帧,则基地址base_addr为E*Q*W,偏移地址offset_addr为组播低优先级fifo中的已写入数据深度。如果入队数据帧是广播帧,则基地址base_addr为(E-1)*Q*W,偏移地址offset_addr为组播低优先级fifo中的已写入数据深度。则写入地址为base_addr+offset_addr;
步骤二:假设BDG的数量为f个,每个BDG中BD的数量为j个,一个BD中存储定长数据为len字节,数据总线位宽为d字节,ddr控制侧的数据位宽/用户侧的数据位宽为k个字节。若组播帧申请的二级缓存bdg_num,一级缓存bd_num。则DDR控制器用户侧的地址为{[(bdg_num-1)*j+bd_num]*len/d/k+offset_addr*len/d/k,3’b000},地址的低3位写0是为了8突发传输,则DDR的存储容量为f*j*len,DDR的区域划分示意图如图5所示;
在S102和S103中实现了数据入队的控制,入队的流程如图6所示。
步骤一:提取数据帧的信息,包含数据帧所需要的缓存BD数和需要转发的PHY ID(转发通道)列表、优先级;
步骤二:根据PHY ID列表,查找每个相应的组播转发的队列长度信息,根据门限,判断是全部入队、部分入队还是全部入队失败。如果所有组播转发队列判断结果均为入队失败,则跳转到步骤七;否则返回满足条件的队列个数,并执行步骤三;
步骤三:如果组播通道的片内缓存足够,首先将数据存至片内。若片内仅剩部分存储空间,不能满足一次入队申请所需的空间,则先将片内存储空间使用完毕再跳转至步骤四。若片内空间已经使用完毕,则直接跳转至步骤四;
步骤四:从一级缓存分配中取出n(n为该组播帧入队所需要的的BD数)个BD,如果某个一级缓存中不够n个BD,则该队列入队失败;若取出n个BD后,剩余BD个数小于7则提前向二级缓存分配申请1个BDG。如果申请BDG超过门限,返回申请失败。申请成功则更新LinkListRAM,该RAM维护了BDG的链表结构;
步骤五:将入队成功的一个或多个组播队列的掩码表BDMaskBits和下一跳地址(需要时)更新。写PHY ID RAM列表,表示能够直接写入片内组播缓存区的通道id,写PHY IDDDR列表,表示需要写入片外DDR的通道id,将对组播数据进行操作的指令信息写入fifo中;
步骤六:将一个或多个组播转发的队尾、队列长度、节点长度、片内fifo深度等信息更新;
步骤七:入队失败,返回步骤一。
步骤八:接收总线通过解析步骤五中的指令信息,对数据进行搬移。PHY ID RAM列表为1的代表数据将从该PHY进行转发,故需要将数据搬移至该PHY对应的片内缓存区,故当M路通道在PHY ID RAM列表置1时,则将数据复制M份,分别搬移到各路组播的片内缓存区中;PHY ID DDR列表中为1代表需要将数据写入到片外DDR对应的缓存区中,当N路通道在PHY ID DDR中为1,则将数据写到片外DDR并更新这N个通道的物理入队长度。
在S104和S105中实现了数据出队的控制。在出队控制的时候需要动态确定每次出队的BD数,它的流程如图7所示。
步骤一:将每次出队的BD数DEQUEUE_BD_NUM设置为一个默认值,每次出队时将DEQUEUE_BD_NUM与组播队列的物理队列长度dequeue_PHYsical_length进行比较。如果DEQUEUE_BD_NUM较大,则暂时把本次出队数定为dequeue_PHYsical_length,否则暂定为DEQUEUE_BD_NUM;
步骤二:比较步骤一中的出队BD数与当前BDG掩码中掩码1的数目multimask_num。如果步骤一中的出队BD数较大,则将本次出队数修改为multimask_num,否则本次出队BD数保持为步骤一的结果。
在S104和S105中实现了数据出队的控制。出队控制的流程如图8所示。
步骤一:读取某通道PHY发起的组播出队请求,获得PHY_id。跳转到步骤二;
步骤二:读高、中、低优先级的队列信息如果各个优先级的队列都为空,则出队失败,如果不全为空则跳转至步骤三;
步骤三:根据WRR轮询得到出队的优先级,读取该优先级的队首信息,然后根据队首读出组播掩码表的数据。如果当前BDG中组播掩码中1的个数大于需要出队的BD数,则跳转至步骤六,否则跳转至步骤四;
步骤四:若当前BDG在所有通道的掩码都为零则释放当前BDG的缓存空间,否则不释放。跳转至步骤五;
步骤五:查询下一跳BDG的组播掩码表,若掩码表非空或读到该优先级中的最后一帧则跳转到步骤六,否则继续执行步骤五;
步骤六:更新组播掩码表以及队列信息,写组播出队指令信息。将片内组播帧搬移至PHY通道上的指令信息写入sr_tx_fifo,片外ddr数据搬移至片内缓存的指令信息写入sr_trans_fifo。结束后跳转到步骤一;
步骤七:发送总线通过解析步骤六中的sr_trans_fifo,把片外数据搬移到片内缓存,进行物理出队;通过解析sr_tx_fifo,把片内数据搬移到到PHY通道上。
在S102和S104所描述的入队与出队控制中,实现了对组播掩码表的读与写,组播掩码表的结构如图9所示。
组播掩码表MultiBDLinkListRAM使用的是真双口RAM,入队控制器和出队控制器都能对其进行修改,并且出队控制器还能读取组播掩码表的数据,作为释放BDG的判断条件。组播掩码表的地址等于BDG的逻辑地址,数据BDMaskBits指示该BDG中BD是否保存该通道的组播帧。例如图9所示,表示的是在逻辑地址为1的BDG中,BD0、BD1、BD15所对应片外缓存区存储着该通道的组播数据帧;逻辑地址为2的BDG中,BD0、BD1、BD2、BD3、BD4所对应片外缓存区存储着该通道的组播数据帧。
入队修改组播掩码表:
步骤一:组播数据流逻辑入队时,入队申请信息中携带了BD申请数、需要转发的PHY ID列表、优先级。如果组播转发的PHY成员中有一个通道片内fifo已满,则跳转至步骤二;
步骤二:从一级缓存分配中取出n个BD,如果某个一级缓存中不够n个BD,则该队列入队失败;若取出n个BD后,剩余BD个数小于7则提前向二级缓存分配申请1个BDG;如果申请BDG超过门限,返回申请失败。若逻辑入队成功,则跳转至步骤三;
步骤三:对入队成功的一个或多个组播队列的组播掩码表进行修改。将当前入队控制器所申请到的BDG逻辑地址作为组播掩码表的写地址,将BD的偏移地址作为写数据,同时拉高写使能,将其写入掩码表。由于在掩码表中要表示清楚每一个BD是否存储组播帧,所以掩码表的位宽为BDG中BD的数量N。而在入队控制模块表示BD数量用了K个比特的数据。则有2^K=N。故在写掩码的时候,要对写入的数据进行译码。在组播写掩码表的时候定义[N-1:0]PHY_enqueue_mask的信号,每当偏移为K的BD存储组播数据时,则令PHY_enqueue_mask[K]=1,再以BDG的逻辑地址作为PHY_mask_addr,拉高写使能,将其写入MultiBDLinkListRAM。
出队修改组播掩码表:
步骤一:读取某通道PHY发起的组播出队请求,获得PHY_id。跳转到步骤二;
步骤二:根据WRR轮询得到出队的优先级,将优先级作为队首信息的读地址PHY_dequeue_head_infor_wr_addr,从而获得队首信息的读数据PHY_dequeue_head_infor_rd_data。其中包含队列组播数据的队首所存储在的缓存空间所对应的BDG地址和BD地址。然后用BDG作为组播掩码表的读地址,读出组播掩码表的数据。跳转至步骤三;
步骤三:如果当前BDG的掩码中存在1时,则将组播出队指令信息写入sr_trans_fifo,同时将当前的BDG和BD信息写入掩码表。在出队控制模块表示BD数量用了K个比特的数据。则有2^K=N。故在写掩码的时候,要对写入的数据进行译码。在组播写掩码表的时候定义[N-1:0]PHY_dequeue_mask的信号,每当偏移为K的BD进行逻辑出队的时候,则令PHY_dequeue_mask[K]=0,再以BDG的逻辑地址作为PHY_mask_addr,拉高写使能,将其写入MultiBDLinkListRAM。
组播数据帧入队时,申请二级缓存的仿真波形如图10所示:
当组播数据帧进入入队控制模块的时候,入队控制模块向缓存管理模块申请二级缓存,拉高men_BDG_request信号。缓存管理模块将空闲的BDG地址men_BDG_address读出。如图10所示,读出的BDG地址依次为1、2、3、4。
组播数据帧入队时,数据写入片内缓存fifo的仿真波形如图11所示:
根据入队控制模块得到的逻辑入队指令信息,进行数据的物理搬移。如图中所示,该数据帧是发向PHY0、PHY1、PHY2、PHY3的数据帧。因此在接收总线模块拉高写使能phy0_memory_wr_en、phy1_memory_wr_en、phy2_memory_wr_en、phy3_memory_wr_en,并将数据帧的数据复制四份为phy0_memory_wr_data、phy1_memory_wr_data、phy2_memory_wr_data、phy3_memory_wr_data。将数据写入各个PHY的组播数据缓存区中。
组播数据帧入队时,组播掩码表修改的仿真波形如图12所示:
在该仿真中,将一个BDG中的BD数量配置为1。数据帧入队申请四次缓存。因为该数据帧为组播帧,需要转发到PHY0、PHY1、PHY2、PHY3中,所以将申请的四个BDG作为组播掩码表的写入地址phy_mask_addr,1作为组播掩码表的写入数据phy_mask_din,拉高写使能phy_mask_wren,修改组播掩码表的值。
组播数据帧出队时,组播掩码表修改的仿真波形如图13所示:
将出队数据帧存储位置的BDG作为组播掩码表的写入地址phy_mask_addr,0作为组播掩码表的写入数据phy_mask_din,拉高写使能phy_mask_wren,修改组播掩码表的值。
组播数据帧出队后,释放二级缓存BDG的仿真波形如图14所示:
将已释放的BDG编号release_addr_fifo_rd_data读出,作为空闲BDGfifo的写数据,拉高写使能free_BDG_fifo_wr_en,将其写入空闲BDGfifo。
应当注意,本发明的实施方式可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本发明的设备及其模块可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合例如固件来实现。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种二级缓存方法,其特征在于,所述二级缓存方法利用片外的DDR,同时在缓存管理上提出了二级缓存分配的方式对片外DDR的缓存空间进行管理;二级缓存适用的场景为多路PHY分别对队列管理提出组播出队请求,某个PHY准备好了直接将队列管理中的组播帧转发到PHY中,片内按照PHY存多份组播帧;
所述二级缓存方法具体包括:
第一步:假设组播有M个通道,组播流有三个优先级,把广播业务看成是特殊的组播业务;则片内缓存区需要M个BlockRAM,每一个BlockRAM要对发送到一个通道数据进行缓存;对每一个BlockRAM添加控制信号构成6个同步FIFO;每个BlockRAM划分成的6个fifo分别存储三个优先级的组播帧和三个优先级的广播帧;片外部分,将片外DDR作为扩充的数据存储区域;组播帧入队时根据优先级进入片内对应的缓存区,若片内缓存区已经完全被占用,则申请二级缓存,通过计算获得缓存描述符组BDG的编号,将数据存入其映射的片外DDR的物理地址;
第二步:由入队控制装置提取数据帧入队信息,将入队的操作指令信息存入fifo中,供接收总线模块使用;根据入队的数据帧的组播信息,修改组播掩码表,更新组播存储的队首、队尾、队列长度、节点长度以及片内fifo写数据计数信息;
第三步:由接收总线模块将定长帧搬移至片内fifo或者片外DDR的缓存区,并更新组播物理长度信息;
第四步:由出队控制装置读取出队请求,根据请求中的信息,获得要出队的定长帧的存储地址,更新物理队列长度,更新缓存区域可用空间,更新缓存管理模块维护的BDG链表;将出队帧信息写入调度结果FIFO中,更新组播掩码表,更新组播存储的队首、队尾、队列长度、节点长度信息,更新组播物理长度信息,并更新片内组播fifo的存储数据计数值;
第五步:由发送总线模块根据调度信息从缓存区中搬移出定长帧。
2.如权利要求1所述的二级缓存方法,其特征在于,所述第一步将片内存储组播帧的BlockRAM转化成fifo以及二级缓存BDG与片外DDR的物理地址映射流程包括:
步骤一:假设组播数据流分为三个优先级,把广播帧当做特殊的组播队列,则每一条组播、广播流按照优先级和类别可以划分为6个缓存区;因此将BlockRAM划分成为6块,添加控制信号使之成为6个片内缓存fifo,每块fifo的存储区域容量为6个BD大小;假设帧长为LEN,数据总线位宽为W比特,则每块fifo的存储深度为6*LEN/W;每块fifo的存储区域由它们划分的基地址和偏移地址所决定;组播低优先级为{000},中优先级为{001},高优先级为{010};广播低优先级为{011},中优先级为{100},高优先级为{101},则基地址addr_base=优先级*6*LEN/W,偏移地址为对应优先级fifo中已存数据的深度(depth<=6*LEN/W);
步骤二:将片外DDR的缓存区按照二级缓存分配的BDG进行映射,缓存管理总共管理M个BGD的分配,一个BDG中有N个BD,一个BD中能存下一个定长帧,帧长为LEN个字节;则片外DDR所用到的总存储空间为M*N*LEN字节,每个BD所映射的实际物理地址由其BDG的基地址和BD偏移地址所决定。
3.如权利要求1所述的二级缓存方法,其特征在于,所述第二步入队控制流程包括:
步骤一:提取数据帧的信息,包含数据帧所需要的缓存BD数和需要转发的转发通道PHYID列表、优先级;
步骤二:根据PHYID列表,查找每个相应的组播转发的队列长度信息,根据门限,判断是全部入队、部分入队还是全部入队失败;如果所有组播转发队列判断结果均为入队失败,则跳转到步骤七;否则返回满足条件的队列个数,并执行步骤三;
步骤三:如果组播通道的片内缓存足够,首先将数据存至片内;若片内仅剩部分存储空间,不能满足一次入队申请所需的空间,则先将片内存储空间使用完毕再跳转至步骤四;若片内空间已经使用完毕,则直接跳转至步骤四;
步骤四:从一级缓存分配中取出n个BD,n为该组播帧入队所需要的BD数,如果某个一级缓存中不够n个BD,则该队列入队失败;若取出n个BD后,剩余BD个数小于7则提前向二级缓存分配申请1个BDG;如果申请BDG超过门限,返回申请失败;申请成功则更新LinkListRAM,该LinkListRAM维护了BDG的链表结构;
步骤五:将入队成功的一个或多个组播队列的掩码表BDMaskBits和下一跳地址更新;写PHY ID RAM列表,表示能够直接写入片内组播缓存区的通道id,写PHYID DDR列表,表示需要写入片外DDR的通道id,将对组播数据进行操作的指令信息写入fifo中;
步骤六:将一个或多个组播转发的队尾、队列长度、节点长度、片内fifo深度等信息更新;
步骤七:入队失败,返回步骤一。
4.如权利要求1所述的二级缓存方法,其特征在于,所述第三步数据帧写入缓存流程包括:
步骤一:读取对于组播数据进行操作的指令信息,包含PHY ID列表、写入片内或片外DDR的方式、写入片外缓存区的逻辑地址,即BDG和BD;
步骤二:PHY ID RAM列表为1的代表数据将从该PHY进行转发,故需要将数据搬移至该PHY对应的片内缓存区,故当M路通道在PHY ID RAM列表置1时,则将数据复制M份,分别搬移到各路组播的片内缓存区中;PHY ID DDR列表中为1代表需要将数据写入到片外DDR对应的缓存区中,当N路通道在PHY ID DDR中为1,则将数据写到片外DDR并更新这N个通道的物理入队长度。
5.如权利要求1所述的二级缓存方法,其特征在于,所述第四步出队控制流程包括:
步骤一:根据某通道PHY发起组播出队请求,携带PHYID;
步骤二:在对应的组播转发队列中轮询3个优先级子队列,按照优先级调度策略,查询对应优先级中组播掩码表;
步骤三:将出队的组播队列对应的BDMaskBits相应bit位清零,如果清零后BDMaskBits的所有bit均为0,则删除MultiBDLinkListRAM中的该节点;同时由于出队后,队列中的队首发生了变化;为了使下一次出队时能找到新的队首的位置,需要找到下一个组播帧的缓存区,并将队首信息更新;
步骤四:如果删除节点后,查询其他队列同一BDG内的BD掩码;若所有掩码都为全零,则首先进行逻辑释放,当物理总线完成该BDG内所有BD的搬移时,再进行物理释放,将该BDG写入FreeBDGFifo,完成缓存回收;
步骤五:写出队指令,sr_trans_fifo,包含片外数据搬移到片内的指令,sr_tx_fifo,包含片内数据发送到队列管理外的数据总线的指令。
6.如权利要求1所述的二级缓存方法,其特征在于,所述第三步数据帧从缓存读出流程包括:
步骤一:读取出队指令信息;
步骤二:按照出队指令信息从片外DDR向片内的组播fifo中搬移数据帧,或者将组播fifo的数据搬移到PHY通道进行输出。
7.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如下步骤:
第一步:假设组播有M个通道,组播流有三个优先级,把广播业务看成是特殊的组播业务;则片内缓存区需要M个BlockRAM,每一个BlockRAM要对发送到一个通道数据进行缓存;对每一个BlockRAM添加控制信号构成6个同步FIFO;每个BlockRAM划分成的6个fifo分别存储三个优先级的组播帧和三个优先级的广播帧;片外部分,将片外DDR作为扩充的数据存储区域;组播帧入队时根据优先级进入片内对应的缓存区,若片内缓存区已经完全被占用,则申请二级缓存,通过计算获得缓存描述符组BDG的编号,将数据存入其映射的片外DDR的物理地址;
第二步:由入队控制装置提取数据帧入队信息,将入队的操作指令信息存入fifo中,供接收总线模块使用;根据入队的数据帧的组播信息,修改组播掩码表,更新组播存储的队首、队尾、队列长度、节点长度以及片内fifo写数据计数信息;
第三步:由接收总线模块将定长帧搬移至片内fifo或者片外DDR的缓存区,并更新组播物理长度信息;
第四步:由出队控制装置读取出队请求,根据请求中的信息,获得要出队的定长帧的存储地址,更新物理队列长度,更新缓存区域可用空间,更新缓存管理模块维护的BDG链表;将出队帧信息写入调度结果FIFO中,更新组播掩码表,更新组播存储的队首、队尾、队列长度、节点长度信息,更新组播物理长度信息,并更新片内组播fifo的存储数据计数值;
第五步:由发送总线模块根据调度信息从缓存区中搬移出定长帧。
8.一种信息数据处理终端,其特征在于,所述信息数据处理终端用于实现权利要求1~6任意一项所述的二级缓存方法。
9.一种实施权利要求1~6任意一项所述二级缓存方法的二级缓存系统,其特征在于,所述二级缓存系统包括:
FIFO定义模块,假设组播有M个通道,片内缓存区则需要M个BlockRAM,每一个BlockRAM对应着一个通道的数据缓存,对每一个BlockRAM添加控制信号构成6个同步FIFO,每个FIFO用来存储一个优先级的组播帧,每个BlockRAM划分成的6个fifo分别存储三个优先级的组播帧和三个优先级的广播帧,这6种类型的组播帧存储空间都为Y个长度为len字节的定长数据帧,每个通道BlockRAM所划分的fifo区域和每个fifo的结构;
缓存区定义模块,用于将片外DDR的缓存区划分为L个等长的区域块,每个区域块可存K个定长数据帧;每个区域块内的K个数据帧在DDR中的物理存储地址连续;
组播片外缓存区掩码表模块,每一个通道都有对应的一个掩码表模块,在组播入队向片内缓存fifo搬移数据时或者出队将片内缓存fifo中的数据搬移到PHY通道时,不对组播片外缓存区掩码表进行修改,当把组播数据写入片外DDR时,若对应的通道是该组播帧的转发通道,则在该通道的掩码表内的BD指示值写为1;当把组播数据从片外DDR读入某通道的片内缓存fifo时,则将该通道的掩码表内的BD指示值写为0;当所有通道的掩码表中同一BDG内所有BD的指示值都为0时,表示该BDG存储的组播数据已经全部搬移至片内的各个组播通道的缓存中,则可以释放该BDG的缓存空间;
入队控制模块,提取数据帧入队信息,将入队的操作指令信息存入fifo中,供接收总线模块读取;根据入队的数据帧的组播信息,修改组播掩码表;更新组播存储的队首、队尾、队列长度、节点长度以及片内fifo写数据计数信息;
出队控制模块,读取出队请求,根据请求中的信息,获得要出队的定长帧的存储地址,更新物理队列长度,更新缓存区域可用空间,更新缓存管理模块维护的BDG链表;将出队帧信息写入调度结果FIFO中,更新组播掩码表,更新组播存储的队首、队尾、队列长度、节点长度信息;更新组播物理长度信息,并更新片内组播fifo的存储数据计数值。
10.一种适用于队列管理组播的二级缓存系统,其特征在于,所述适用于队列管理组播的二级缓存系统实施权利要求1~6任意一项所述的二级缓存方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110212803.3A CN113032295B (zh) | 2021-02-25 | 2021-02-25 | 一种数据包二级缓存方法、系统及应用 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110212803.3A CN113032295B (zh) | 2021-02-25 | 2021-02-25 | 一种数据包二级缓存方法、系统及应用 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113032295A CN113032295A (zh) | 2021-06-25 |
CN113032295B true CN113032295B (zh) | 2022-08-16 |
Family
ID=76462128
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110212803.3A Active CN113032295B (zh) | 2021-02-25 | 2021-02-25 | 一种数据包二级缓存方法、系统及应用 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113032295B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113630565B (zh) * | 2021-07-09 | 2023-04-11 | 中国科学院西安光学精密机械研究所 | 具备机内实时图像处理功能的scmos成像电路及方法 |
CN113923514B (zh) * | 2021-09-23 | 2024-03-01 | 青岛信芯微电子科技股份有限公司 | 一种显示设备及memc重复帧丢弃方法 |
CN113806245B (zh) * | 2021-10-11 | 2023-11-21 | 芯河半导体科技(无锡)有限公司 | 一种根据出口类型自动分配缓存地址的装置 |
CN114401235B (zh) * | 2021-12-15 | 2024-03-08 | 西安电子科技大学 | 一种队列管理中重载处理方法、系统、介质、设备及应用 |
CN115145864B (zh) * | 2022-09-05 | 2022-11-04 | 深圳比特微电子科技有限公司 | 数据处理方法、系统、电子设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5898687A (en) * | 1996-07-24 | 1999-04-27 | Cisco Systems, Inc. | Arbitration mechanism for a multicast logic engine of a switching fabric circuit |
CN106603420A (zh) * | 2016-11-22 | 2017-04-26 | 北京控制工程研究所 | 一种具有实时和容错特性的片上网络路由器 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1050051A (ja) * | 1996-08-06 | 1998-02-20 | Sony Corp | 同期型fifoメモリのアクセス装置およびアクセス方法 |
US6272567B1 (en) * | 1998-11-24 | 2001-08-07 | Nexabit Networks, Inc. | System for interposing a multi-port internally cached DRAM in a control path for temporarily storing multicast start of packet data until such can be passed |
CN1214592C (zh) * | 2002-08-06 | 2005-08-10 | 华为技术有限公司 | 多通道数据直接内存访问系统和方法 |
US7404058B2 (en) * | 2003-05-31 | 2008-07-22 | Sun Microsystems, Inc. | Method and apparatus for avoiding collisions during packet enqueue and dequeue |
TWI227980B (en) * | 2003-10-08 | 2005-02-11 | Genesys Logic Inc | Method of relaying multi-cast package and device of the same |
CN101414973B (zh) * | 2008-11-25 | 2011-08-17 | 中国人民解放军信息工程大学 | 一种传输数据包的方法及装置 |
US8615633B2 (en) * | 2009-04-23 | 2013-12-24 | Empire Technology Development Llc | Multi-core processor cache coherence for reduced off-chip traffic |
US8392661B1 (en) * | 2009-09-21 | 2013-03-05 | Tilera Corporation | Managing cache coherence |
US8397195B2 (en) * | 2010-01-22 | 2013-03-12 | Synopsys, Inc. | Method and system for packet switch based logic replication |
CN102377682B (zh) * | 2011-12-12 | 2014-07-23 | 西安电子科技大学 | 基于定长单元存储变长分组的队列管理方法及设备 |
CN102521159A (zh) * | 2011-12-16 | 2012-06-27 | 杭州初灵信息技术股份有限公司 | 一种片内、片外存储器按流量动态调度分包数据的方法 |
CN103179050B (zh) * | 2011-12-20 | 2017-10-13 | 中兴通讯股份有限公司 | 数据包入队和出队管理方法及数据包处理装置 |
CN103559217B (zh) * | 2013-10-17 | 2016-06-01 | 北京航空航天大学 | 一种面向异构数据库的海量组播数据入库实现方法 |
US9264256B2 (en) * | 2014-07-01 | 2016-02-16 | Netronome Systems, Inc. | Merging PCP flows as they are assigned to a single virtual channel |
CN105376165B (zh) * | 2015-10-15 | 2019-02-22 | 深圳市金证科技股份有限公司 | Udp组播方法、系统、发送装置及接收装置 |
CN107025184B (zh) * | 2016-02-01 | 2021-03-16 | 深圳市中兴微电子技术有限公司 | 一种数据管理方法及装置 |
CN107948094B (zh) * | 2017-10-20 | 2020-01-03 | 西安电子科技大学 | 一种高速数据帧无冲突入队处理的装置及方法 |
CN108572928B (zh) * | 2018-03-13 | 2024-02-02 | 新大陆数字技术股份有限公司 | 一种人工智能设备及存取方法 |
CN110493322A (zh) * | 2019-07-26 | 2019-11-22 | 广东睿江云计算股份有限公司 | 基于层次化存储的高性能数据包缓存方法及其装置 |
CN111782578B (zh) * | 2020-05-29 | 2022-07-12 | 西安电子科技大学 | 一种缓存控制方法、系统、存储介质、计算机设备及应用 |
CN112084136B (zh) * | 2020-07-23 | 2022-06-21 | 西安电子科技大学 | 队列缓存管理方法、系统、存储介质、计算机设备及应用 |
CN112272128B (zh) * | 2020-09-26 | 2021-09-07 | 西安电子科技大学 | Hinoc组帧方法、系统、介质、计算机设备及应用 |
-
2021
- 2021-02-25 CN CN202110212803.3A patent/CN113032295B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5898687A (en) * | 1996-07-24 | 1999-04-27 | Cisco Systems, Inc. | Arbitration mechanism for a multicast logic engine of a switching fabric circuit |
CN106603420A (zh) * | 2016-11-22 | 2017-04-26 | 北京控制工程研究所 | 一种具有实时和容错特性的片上网络路由器 |
Also Published As
Publication number | Publication date |
---|---|
CN113032295A (zh) | 2021-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113032295B (zh) | 一种数据包二级缓存方法、系统及应用 | |
CN111782578B (zh) | 一种缓存控制方法、系统、存储介质、计算机设备及应用 | |
CN112084136B (zh) | 队列缓存管理方法、系统、存储介质、计算机设备及应用 | |
US11082366B2 (en) | Method and apparatus for using multiple linked memory lists | |
US7058751B2 (en) | Packet switch | |
US12101260B1 (en) | Multi-destination traffic handling optimizations in a network device | |
CN113411270B (zh) | 一种面向时间敏感网络的报文缓冲区管理方法 | |
CN103731368B (zh) | 一种处理报文的方法和装置 | |
WO2017206587A1 (zh) | 一种优先级队列调度的方法及装置 | |
US11949601B1 (en) | Efficient buffer utilization for network data units | |
JP2004536515A (ja) | デュアルポートメモリエミュレーション方式によるスイッチファブリック | |
US7916743B2 (en) | System and method for improved multicast performance | |
CN114531488A (zh) | 一种面向以太网交换器的高效缓存管理系统 | |
CN112822126A (zh) | 报文存储方法、报文出入队列方法及存储调度装置 | |
CN112615796B (zh) | 一种兼顾存储利用率与管理复杂度的队列管理系统 | |
US20060187963A1 (en) | Method for sharing single data buffer by several packets | |
CN113126911A (zh) | 基于ddr3 sdram的队列管理方法、介质、设备 | |
TW200404206A (en) | Increasing memory access efficiency for packet applications | |
CN111131089B (zh) | 改善多播业务hol阻塞的队列管理方法 | |
JP2005210606A (ja) | パケットの優先制御を行う通信装置及び優先制御方法並びにプログラム | |
CN108173784B (zh) | 一种交换机的数据包缓存的老化方法及装置 | |
CN113572705A (zh) | 一种基于可控时延的高速网络主动队列调度方法 | |
US20240340250A1 (en) | Multi-stage scheduler | |
US11831567B1 (en) | Distributed link descriptor memory | |
CN112073316B (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 |