掌桥专利:专业的专利平台
掌桥专利
首页

多端口读写的缓存管理方法及装置

文献发布时间:2024-04-18 20:02:18


多端口读写的缓存管理方法及装置

技术领域

本发明实施例涉及流量管理技术领域,具体而言,涉及一种多端口读写的缓存管理方法及装置。

背景技术

在网络处理器的流量管理过程中,由于流队列数众多、带宽需求大等原因,往往有多端口共享存储的需求。传统的做法是使用定制的多端口随机存取存储器(Random AccessMemory,RAM)或者基于数据冗余备份的多端口RAM,会存在需要网际互联协议(1nternetProtocol,IP)厂家定制、设计成本高、缓存空间浪费大等问题,此外,多路并发读到同一块RAM时会产生冲突,需要做额外的数据冗余备份。

发明内容

本发明实施例提供了一种多端口读写的缓存管理方法及装置,以至少解决相关技术中多端口RAM存在缓存利用率低的问题。

根据本发明的一个实施例,提供了一种多端口读写的缓存管理方法,包括:将芯片上多端口RAM缓存划分为M×N的缓存单元阵列,其中,所述多端口RAM缓存包括K个写端口和H个读端口,M、N、K和H均为大于1的整数,N大于K和H;在写操作时,通过所述K个写端口将K个数据一次写入所述缓存单元阵列的K个不同列,其中,每个写端口对应缓存单元阵列的一个不同列;在读操作时,通过所述H个读端口一次从所述缓存单元阵列读取共H×N个数据,其中,每个读端口一次从所述缓存单元阵列的每一行中读取一个数据。

根据本发明的另一个实施例,提供了一种多端口读写的缓存管理装置,包括:划分模块,用于将芯片上多端口RAM缓存划分为M×N的缓存单元阵列,其中,所述多端口RAM缓存包括K个写端口和H个读端口,M、N、K和H均为大于1的整数,N大于K和H;写入模块,用于在写操作时,通过所述K个写端口将K个数据一次写入所述缓存单元阵列的K个不同列,其中,每个写端口对应缓存单元阵列的一个不同列;读取模块,用于在读操作时,通过所述H个读端口一次从所述缓存单元阵列读取共H×N个数据,其中,每个读端口一次从所述缓存单元阵列的每一行中读取一个数据。

根据本发明的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。

通过本发明,由于将多端口RAM划分成缓存单元阵列,在有少部分缓存单元损坏时不会影响整体的芯片性能,可提升芯片良率;而写操作时,按列将数据写入缓存单元,可提高缓存空间的均衡性。因此,可以解决相关技术中多端口RAM存在缓存利用率低的问题,达到提高多端口RAM缓存利用率的效果。

附图说明

图1是本发明实施例的运行多端口读写的缓存管理方法的计算机终端的硬件结构框图;

图2是根据本发明实施例的多端口读写的缓存管理方法的流程图;

图3是根据本发明实施例的多端口读写的缓存管理装置的结构框图;

图4是根据本发明另一实施例的多端口读写的缓存管理装置的结构框图;

图5是根据本发明又一实施例的多端口读写的缓存管理装置的结构框图;

图6是根据本发明实施例的缓存管理架构的示意图;

图7是根据本发明实施例的缓存阵列的示意图;

图8是根据本发明是实施例申请写地址的示意图;

图9是根据本发明实施例的读冲突处理和带宽收敛的示意图;

图10是根据本发明实施例的读数据保序处理的示意图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明的实施例。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图1是本发明实施例的运行多端口读写的缓存管理方法的计算机终端的硬件结构框图。如图1所示,计算机终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器(Central ProcessingUnit,MCU)或可编程逻辑器件(Field Programmable Gate Array,FPGA)等的处理装置)和用于存储数据的存储器104,其中,上述计算机终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机终端的结构造成限定。例如,计算机终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。

存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的多端口读写的缓存管理方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。

在本实施例中提供了一种运行于上述计算机终端的多端口读写的缓存管理方法,图2是根据本发明实施例的多端口读写的缓存管理方法的流程图,如图2所示,该流程包括如下步骤:

步骤S202,将芯片上多端口RAM缓存划分为M×N的缓存单元阵列,其中,所述多端口RAM缓存包括K个写端口和H个读端口,M、N、K和H均为大于1的整数,N大于K和H;

步骤S204,在写操作时,通过所述K个写端口将K个数据一次写入所述缓存单元阵列的K个不同列,其中,每个写端口对应缓存单元阵列的一个不同列;

步骤S206,在读操作时,通过所述H个读端口一次从所述缓存单元阵列读取共H×N个数据,其中,每个读端口一次从所述缓存单元阵列的每一行中读取一个数据。

通过将大容量片上缓存RAM切分成多块缓存RAM,有利于芯片版图的布局布线,当有少部分RAM块损坏时不会影响整体的芯片性能,有利于提升芯片良率。

在一个示例性实施例中,所述读端口的数量H基于读端口侧所需的带宽加速比设置。

在本实施例的步骤S204中,包括:轮询调度所述缓存单元阵列,以每次调度出的K个列缓存单元阵列的列地址编号作为所述写端口的写地址;根据所述写地址将K个数据一次写入所述缓存单元阵列的K个不同列。

在本实施例的步骤S204中,还包括:对调度出的所述列缓存单元阵列中的缓存单元的空闲深度进行排序,将所述K个数据分别写入各列缓存单元阵列中空闲深度最大的缓存单元中。

在一个示例性实施例中,轮询调度所述缓存单元阵列,包括:基于列缓存单元阵列的序列号组成的循环链表,根据所述写端口在所述循环链表中指向的所述序列号调度所述列缓存单元阵列。

在写操作时,通过循环链表的方式轮转扫描调度,为每个写端口分配一个独立的列,再对选中列所有缓存单元的空闲地址进行排序,进而选中空闲地址最多的缓存单元用于数据写入;通过上述写入方式能够更均衡的将数据写入缓存单元中。

在本实施例的步骤S206之前,还包括:以行为单位调度所述缓存单元阵列中的读地址FIFO队列,以在每个行缓存单元阵列中为各所述读端口调度出一个读地址。

在一个示例性实施例中,在每个行缓存单元阵列中为各所述读端口调度出一个读地址,包括:调度任意一个行缓存单元阵列,在为一个所述读端口调度出一个读地址之后,删除对应于所述读地址的缓存单元;调度剩余的缓存单元中读地址先入先出FIFO队列,以为所述剩余读端口调度出一个所述读地址。

在本实施例的步骤S206之后,还包括:将每个所述读端口读出的N个数据分别存入N个数据FIFO队列中;通过顺序FIFO调度所述数据FIFO队列中的所述N个数据,并按照所述N个数据对应的读地址的顺序存储至保序RAM中。

在本实例中,该多端口读写的缓存管理方法还包括:按照所述N个数据对应的读地址的顺序,将所述N个数据从所述保序RAM中输出。

通过上述步骤,由于将多端口RAM划分成缓存单元阵列,在有少部分缓存单元损坏时不会影响整体的芯片性能,可提升芯片良率;而写操作时,按列将数据写入缓存单元,可提高缓存空间的均衡性。因此,可以解决解决相关技术中多端口RAM存在缓存利用率低的问题,达到提高多端口RAM缓存利用率的效果。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器/随机存取存储器(Read-Only Memory/Random Access Memory,ROM/RAM)、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

在本实施例中还提供了一种多端口读写的缓存管理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图3是根据本发明实施例的多端口读写的缓存管理装置的结构框图,如图3所示,该装置包括:划分模块10、写入模块20和读取模块30。

划分模块10,用于将芯片上多端口RAM缓存划分为M×N的缓存单元阵列,其中,所述多端口RAM缓存包括K个写端口和H个读端口,M、N、K和H均为大于1的整数,N大于K和H;

写入模块20,用于在写操作时,通过所述K个写端口将K个数据一次写入所述缓存单元阵列的K个不同列,其中,每个写端口对应缓存单元阵列的一个不同列;

读取模块30,用于在读操作时,通过所述H个读端口一次从所述缓存单元阵列读取共H×N个数据,其中,每个读端口一次从所述缓存单元阵列的每一行中读取一个数据。

图4是根据本发明实施例的多端口读写的缓存管理装置的结构框图,如图4所示,该装置除包括图3所示的所有模块外,还包括:

调度模块40,用于以行为单位调度所述缓存单元阵列中的读地址FIFO队列,以在每个行缓存单元阵列中为各所述读端口调度出一个读地址。

图5是根据本发明实施例的多端口读写的缓存管理装置的结构框图,如图5所示,该装置除包括图4所示的所有模块外,还包括:

第一存储模块50,用于将每个所述读端口读出的N个数据分别存入N个数据FIF0队列中:

第二存储模块60,用于通过顺序FIFO调度所述数据FIFO队列中的所述N个数据,并按照所述N个数据对应的读地址的顺序存储至保序RAM中。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。

为便于对本发明所提供的技术方案的理解,下面将结合具体场景的实施例进行详细的阐述。

本发明实施例提供了一种片上报文缓存管理方法,用以支持多端口并发的高速读写,同时提高缓存利用率,减少存储资源浪费,降低系统体积和功耗。此外,通过每个读端口一次读出多个数据,来弥补读冲突带来的带宽损失,提升整体缓存的读出带宽。

具体地,本发明实施例从功能上包含报文存储的地址申请、数据存储、读冲突调度和地址回收、读数据保序。

本发明实施例中的缓存管理架构如图6所示,整个片内缓存需要支持13个并发写和16个并发读,其中,并发读的数量具体是由系统带宽需求、芯片支持的Serdes读写接口数量等因素决定。在本实施例中,将片内缓存划分为8行32列的缓存阵列,每个缓存单元为深度1024的1读1写RAM,读写数据位宽为384B。

在数据到来之前,预先申请好数据的写地址,之后根据地址将数据写入缓存。待到读时,每个缓存单元都有和读端口数目一致的读地址先进先出存储器(first infirstout,FIFO),将读地址下发到对应缓存的FIFO中,每个读端口每拍从一行调度出一个读地址,共有8行,故每个读端口每拍调度出8个读地址。将地址对应的8个读数据送往对应读端口,之后进入8个数据FIFO中,进行带宽收敛,出来1个数据,再将该数据存入保序RAM,最终按照读地址的顺序输出。

将缓存划分为m行n列的缓存阵列,其中n要大于读写端口数目中的最大值,m取决于读侧想要在冲突时实现的带宽加速比。图7是根据本发明实施例的缓存阵列的示意图,如图7所示,由于读写端口最大为16,故列数目应该大于16。为了均衡写入,且考虑到取2的n次幂,列数目被设置为32列。考虑到需求的片上缓存总容量为96MiB,以及本发明实施例中需要8倍带宽来弥补冲突带来的带宽损失,行数目设置为8行,最终确定缓存阵列为8行32列。

通过将大容量片上缓存RAM切分成多块缓存RAM,有利于芯片版图的布局布线,当有少部分RAM块损坏时不会影响整体的芯片性能,有利于提升芯片良率。

图8是根据本发明是实施例申请写地址的示意图,在本实施例中,为写侧每个端口分配一个独立的列。例如:如图8所示,将32个列序号做成首尾相连的循环链表,初始化时写端口0指向第0列,写端口1指向第1列,写端口n指向第n列,此后每一拍将循环链表逆时针转动一次,当前写端口指向的列序号,即为申请到的列地址编号。当某一列空间耗尽后,择机将该列编号从循环链表中去除,待到空间恢复后再加入循环链表。

经过上述写地址选定后,针对选中某一列中的8个缓存单元,对各缓存单元的空闲深度进行排序,选择最空闲的一个缓存单元,即可从缓存阵列中选中一个节点,将本拍对应的数据存入。

在本实施例中,通过轮询加空闲深度排序的方式,可以尽可能使写地址均匀分布在每块RAM中,可以显著提升整个片上缓存的缓存利用率。

通过轮转扫描调度,为每个写端口分配一个独立的列,再对选中列所有缓存单元的空闲地址进行排序,进而选中空闲地址最多的缓存单元,并将数据写入。提高了缓存空间的均衡性。

针对多路并发读到同一块RAM时会产生冲突的问题,本发明实施例中还提供了一种读冲突处理方法。

具体地,图9是根据本发明实施例的读冲突处理和带宽收敛的示意图,如图9所示,冲突处理如图9左侧所示,即每个缓存单元都有和读端口数目一致的读地址FIFO。具体地,通过以下的调度方式为读端口分配读地址,可避免读冲突。以第一行为例,冲突调度器需要从32*16个命令FIFO中,等概率的调度出不冲突的16个读命令。具体实现时,读端口0有32个缓存读地址0的FIFO,从其中RR轮询调度出一个,此时该RAM的读口被占用,将其包含的读地址FIFO从RR轮询调度器中剔除;读口1从剩余的31个缓存读地址1的FIFO中,RR调度出一个;依此类推,读口15从剩余的17个缓存读地址15的FIFO中,RR调度出一个。该算法需要使用流水线进行实现,通过上述的调度,每个读口一拍至多可调度出8个数据。

在本实施例中,为了避免多个读端口读到同一块缓存单元,每个缓存单元都有和读端口数目一致的命令FIFO,读侧按行对同一读端口的命令FlFO进行调度,每个读端口一拍可以调度出m个数据。

本发明实施例还提供一种地址回收方法,在本实施例中,空闲地址使用8行32列的FIFO进行维护,与数据缓存一一对应,每拍支持申请和回收256个地址。写地址申请从对应FIFO中读出地址,完成读调度后,读地址写入对应FIFO,完成空闲地址的回收。

本发明实施例还提供一种读数据带宽收敛方法,如图9右侧所示,即每个端口一次至多读出8拍数据,将其存入8个数据FIFO中,此时需要做一个8选一完成读数据的带宽收敛。每个读口有一个存储读行顺序的FIFO,然后按照顺序调度数据FIFO的内容,此时数据FIFO有两种选择:若数据FIFO非空,出队一个数据;若数据FIFO空,将行号移动至行顺序FIFO的尾部,本次轮空。

例如:假设顺序为1、3、5、6,那首先调度一个第1个数据FIFO的数据;其次调度一个第3个数据FIFO的数据,若第三个FIFO空,将3移动到底部,此时顺序变为5、6、3,本次轮空,下一拍尝试调度一个第5个FIFO的数据。

图10是根据本发明实施例的读数据保序处理的示意图。由于读冲突处理,读数据在存储单元之内是和读命令顺序一致的,但是在存储单元之间是乱序返回的,如图10所示,在发起读命令时,通过一个顺序FIFO存储读存储单元的编号,当数据完成带宽收敛后,将数据存入保序ram,并将保序ram的地址存入数据来源的存储单元对应的队列中,在本实施例中共有32x8=256个队列,队列通过共享存储空间的链表来实现,利用同一队列内部是顺序的特性,从顺序FIFO中出一个存储单元编号,同时从编号对应的队列中出一个地址,以此来完成保序ram地址的保序。最后,根据保序得到的地址,从保序ram中读出数据,即为该读端口所需的数据。

在本实施例中,为了避免读冲突带来的带宽损失,对读侧进行了加速以及乱序读的处理,每个端口一拍至多调度出m个数据,需要收敛至1个,并按照读命令的顺序对返回数据进行保序。

需要说明的是,本发明实施例中所涉及的缓存块阵列不限于8*32,具体阵列的划分规模由设计需求、报文长度、读写访问端口数目和布局布线等因素决定。本发明实施例中使用双端口1读1写的RAM作为底层的存储单元,主要是考虑逻辑设计简便。如果需要考虑降低系统的面积与功耗,可以使用两个单端口1读写的RAM作为底层单元,并通过读写控制逻辑做冲突避免。

在本发明的上述实施例中,根据读写端口数目和带宽需求,将片上缓存划分为基于双端口RAM的m行n列缓存阵列,以通过多块RAM带来的读写带宽增大、以及读写端口数目变多,来切分需求的读写端口和带宽,同时通过划分缓存阵列,可以支持多路数据并发写入和读出,以通过多路共享存储来提高缓存的利用率,有效降低了系统的面积和功耗。此外,还通过轮转扫描进行写入,以提高缓存空间的均衡性,同时支持每个读口一次读出多个数据,以弥补多个读口冲突到同一块RAM带来的带宽损失。如此,解决了相关技术中存在的读写端口数众多、带宽需求大、定制成本高、缓存利用率低下等问题。

本发明的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。

本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。

在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接。该输入输出设备和上述处理器连接。

本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

技术分类

06120116581880