一种数据缓存方法、装置、芯片和存储介质

文档序号:1831073 发布日期:2021-11-12 浏览:11次 >En<

阅读说明:本技术 一种数据缓存方法、装置、芯片和存储介质 (Data caching method, device, chip and storage medium ) 是由 顾泓 刘衡祁 仲建锋 胡达 周峰 于 2020-04-27 设计创作,主要内容包括:本申请实施例公开了一种数据缓存方法、装置、芯片和存储介质。该方法包括:获取数据缓存请求;根据各缓存单元的当前剩余缓存空间确定目标缓存单元;将所述数据缓存请求中的待缓存数据缓存至所述目标缓存单元。相比现有技术,本方案根据各缓存单元当前剩余的缓存空间确定目标缓存单元,实现了缓存空间的最大化利用。(The embodiment of the application discloses a data caching method, a data caching device, a chip and a storage medium. The method comprises the following steps: acquiring a data caching request; determining a target cache unit according to the current residual cache space of each cache unit; and caching the data to be cached in the data caching request to the target caching unit. Compared with the prior art, the scheme determines the target cache unit according to the current residual cache space of each cache unit, and realizes the maximum utilization of the cache space.)

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。此外,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

图1为本申请实施例提供的一种数据缓存方法的流程图,本实施例可适用于数据交换或处理转发等场景下的多通道数据缓存,该方法可以由数据缓存装置来执行,该装置可以采用软件和/或硬件的方式实现,并可集成在芯片中,其中,芯片可以是网络处理器芯片或其他具备该数据缓存功能的芯片。参考图1,该方法如下步骤:

S110、获取数据缓存请求。

可选的,数据缓存请求包括待缓存数据的类型和大小等信息,可以将每一种类型的待缓存数据作为一路,也可以将每一条待缓存的数据作为一路,在进行数据缓存时可以为每一路数据分配一个通道,例如待缓存的数据有32条,可以将这32条数据记为32路,为其分配32个通道,通过32个通道完成数据缓存。

S120、根据各缓存单元的当前剩余缓存空间确定目标缓存单元。

缓存单元是缓存的一部分,每个缓存包括一个缓存空间,用于存储数据,实施例对缓存的类型不进行限定,例如可以是U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等,同一缓存对应的通道数量可以自行设定,例如可以对应4个通道,表示该缓存用于存储这4个通道的数据。可选的,可以通过划分存储数据的缓存空间,得到缓存单元,实施例对划分方式不作具体限定,例如可以对缓存空间进行粗粒度划分,也可以进行细粒度划分,其中粗粒度划分是仅对缓存空间进行横向划分,纵向保持不变,细粒度划分是对缓存空间既进行横向划分,也进行纵向划分。本实施例将横向划分得到的每一部分称为一个缓存单元,例如该缓存空间横向划分为8个部分,表示该缓存空间包括8个缓存单元。

图2为本申请实施例提供的一种缓存的划分示意图。

图2以细粒度划分为例,横向包括8个bank,分别为bank0-bank7,纵向包括2个block,分别为block0和block1,其中,每个bank代表一个缓存单元,每个block代表该缓存的最小访问单元。各bank和block的大小可以根据缓存空间的大小以及bank和block的数量确定,例如该缓存空间的深度为16k,宽度为384bytes,bank的数量为8,block的数量为2,则每个bank的深度为2k,每个block的宽度为192bytes。当然,并不限于这一种划分方式,例如还可以将横向划分为16或32个bank,纵向划分为2个block。通过图2可以看出,该缓存对应的各通道可以访问该缓存的任意缓存单元,实现了一个通道可以使用另一个通道的缓存资源,实现了缓存资源的最大化利用。

当前剩余缓存空间为缓存单元当前未用于缓存数据的空间。目标缓存单元为用于存储待缓存数据的缓存单元,例如将待缓存数据存储至bank0,则称bank0为待缓存数据的目标缓存单元。为实现分配均衡,防止某些缓存单元过度使用而导致多个通道无法同时写访问,即无法同时缓存数据,影响整体性能,本实施例根据各缓存单元当前剩余缓存空间的大小为待缓存数据确定目标缓存单元。例如可以将当前剩余缓存空间较多的缓存单元作为目标缓存单元,分配给对应的通道。

S130、将所述数据缓存请求中的待缓存数据缓存至所述目标缓存单元。

同一缓存各通道对应的缓存单元可以相同也可以不同。可选的,当收到一个通道对应的数据缓存请求时,可以直接将该通道的数据存储至目标存储单元,当收到多个通道对应的数据缓存请求时,可以按照各通道待缓存数据的大小为各通道分配目标缓存单元,例如为数据量较大的通道分配剩余缓存空间较大的目标缓存单元,为数据量较小的通道分配剩余缓存空间较小的目标缓存单元,从而使各缓存单元达到平衡,实现资源的最大化利用,提高整体性能。

本申请实施例提供一种数据缓存方法,通过获取数据缓存请求;根据各缓存单元的当前剩余缓存空间确定目标缓存单元;将所述数据缓存请求中的待缓存数据缓存至所述目标缓存单元。相比现有技术,本方案根据各缓存单元当前剩余的缓存空间确定目标缓存单元,实现了缓存空间的最大化利用。

在上述实施例的基础上,可选的,该方法还包括:

创建地址索引,所述地址索引包括报文信息维护表和报文链表;

所述报文信息维护表用于存储所述待缓存数据所对应的报文包信息;

所述报文链表用于所述报文包对应的报文分片信息。

数据缓存请求中的待缓存数据通常以报文包的形式发送,每个通道可以包含一个报文包,也可以包含多个报文包。报文包信息为各通道所包含报文包的信息,例如可以是报文包的数量、长度、首地址以及对应的通道号等。每个报文包可以包括多个报文分片,报文分片可以认为是数据片段,存储时不同的报文分片可以存储在不同bank的block中,也可以存储在同一bank的不同block中。报文分片信息为同一报文包中各报文分片的信息,例如可以是各报文分片的地址信息,报文包信息中的首地址和报文分片信息中的首地址相同,通过报文包的首地址可以获取该报文包中各报文分片的地址。

图3为本申请实施例提供的一种地址索引的示意图。

报文信息维护表中示例性的给出了两个通道,分别为Channel0和Channel1,Channel0中示例性的给出了四个报文包,分别为pkt0、pkt1、pkt2、pkt3,Channel1中示例性的给出了四个报文包,分别为pkt0、pkt1、pkt2、pkt3,1st addr为各报文包的首地址。报文链表中示例性的给出了其中一个报文包各报文分片的地址,通过报文信息维护表获取某报文包的首地址,通过查找报文链表即可获取该报文包中其他报文分片的地址,拼接各报文分片即可得到完整的报文包。可选的,报文链表中同一链条上各报文分片的地址可以按照各报文分片在报文包中的顺序由前到后排列,当需要读取数据时,可以减少各报文分片的拼接时间。

图4为本申请实施例提供的另一种数据缓存方法的流程图。

S210、获取数据缓存请求。

S220、划分存储数据的缓存空间,得到缓存单元。

通过划分缓存空间,使各通道都可以对单个缓存单元进行访问,实现了缓存空间的碎片化利用,提高了空间利用率。划分过程可以参考前面,此处不再赘述。

S230、确定各缓存单元当前剩余缓存空间的大小,并顺序排列各所述缓存单元。

每个bank对应一个先进先出(First Input First Output,FIFO)存储器,FIFO存储器用于存储和管理bank的地址,FIFO存储器的深度与对应bank的深度相同,FIFO存储器初始处于满的状态,即对应bank未存储数据。当需要向某bank中存入数据时,向FIFO存储器申请地址,此时FIFO存储器中的地址数量减少,当该bank中的数据被取出时,回收地址到FIFO存储器中,FIFO存储器中的地址数量增加,FIFO存储器中剩余地址的数量越少,表示对应bank剩余的缓存空间越小,因此通过监控各FIFO存储器剩余地址的数量可以确定各bank剩余缓存空间的大小。当监测到某通道占用的缓存空间达到设定阈值时,为防止溢出,停止通过该通道继续缓存数据。根据各bank当前剩余缓存空间的大小按照由大到小或由小到大的顺序排列各bank,得到排序后的bank。

S240、根据排序结果确定目标缓存单元。

以该缓存对应4个通道为例,对于每个通道而言,该通道的数据根据目的地址被缓存至某个bank中的某个block,目的地址为目标缓存单元对应的地址。假设按剩余缓存空间从大到小排序的前四个bank分别为bank_flag3、bank_flag2、bank_flag1、bank_flag0,当收到一个通道的数据缓存请求时,可以将bank_flag3对应的缓存单元作为目标缓存单元,分配给该通道,当收到两个通道的数据缓存请求时,将bank_flag3和bank_flag2对应的缓存单元作为目标缓存单元,分别分配给两个通道,当收到三个通道的数据缓存请求时,将bank_flag3、bank_flag2和bank_flag1对应的缓存单元作为目标缓存单元,分别分配给三个通道,当收到四个通道的数据缓存请求时,将bank_flag3、bank_flag2、bank_flag1和bank_flag0对应的缓存单元作为目标缓存单元,分别分配给四个通道。通过将写访问优先调度给剩余缓存空间最多的bank,使各bank的缓存空间达到平衡,有助于实现资源的最大化利用,提高系统的整体性能。

S250、将所述数据缓存请求中的待缓存数据缓存至所述目标缓存单元。

S260、更新所述报文信息维护表和报文链表,以根据更新后的报文信息维护表和报文链表读取所述待缓存数据。

当发生数据缓存时,将目标缓存单元对应的地址同步到报文链表,并在该数据对应的报文包存储完成后更新对应通道的报文信息维护表,以实现报文链表和报文信息维护表的更新。当收到数据读取请求时,通过查找报文链表和报文信息维护表,获取各报文分片的地址,进而读取缓存得到报文包。需要说明的是,在读取缓存的数据时应该遵循地址不冲突原则。其中,地址冲突是指同一地址同时被两个或两个以上访问源访问。访问源是具备读取某缓存权限的硬件或软件。

图5为本申请实施例提供的一种读取缓存数据的示意图。

假定有三个读口可以读取某缓存的数据,分别为p0、p1和p2,其中,读口p0用于读block0的数据,读口p1用于读block1的数据,读口p2用于读block0和block1的数据。可以读取该缓存的数据的访问源以输出直接存储访问(Output Direct Memory Access,ODMA)、查表引擎(Search Engine,SE)、中央处理器(Central Processing Unit,CPU)和可编程处理单元(Programmable Processing Unit,PPU)为例。其中,ODMA可以读一个block,如block0或block1,也可以同时读block0和block1。SE和CPU只能读一个block,如block0或block1。PPU可以同时读block0和block1。ODMA、SE和CPU共享读口p0和读口p1,ODMA、PPU、SE和CPU的优先级依次降低,PPU独享读口p2。对于某个读口,当同时存在多个访问源对其进行读访问时,在满足地址不冲突的条件下,应优先分配给优先级最高的访问源。

参考图5,对于读口p0,可能参与分配的访问源有ODMA、SE和CPU。ODMA的优先级最高,当ODMA发起读block0时,将读口p0优先分配给ODMA。SE获得读口分配权需要满足ODMA未发起读block0且PPU未发起读或PPU所读block0不存在地址冲突,CPU获得读口分配权需要满足ODMA未发起读block0、SE未发起读block0或SE发起读block0但与PPU所读block0发生地址冲突、PPU未发起读或PPU所读block0不存在地址冲突。

对于读口p1,可能参与分配的访问源有ODMA、SE和CPU。ODMA的优先级最高,当ODMA发起读block1时,将读口p1优先分配给ODMA。SE获得读口分配权需要满足ODMA未发起读block1且PPU未发起读或PPU所读block1不存在地址冲突,CPU获得读口分配权需要满足ODMA未发起读block1、SE未发起读block1或SE发起读block1但与PPU所读block1发生地址冲突、PPU未发起读或PPU所读block1不存在地址冲突。

对于读口p2,由于PPU独享,因此不存在优先级问题,但需要满足block0和block1与ODMA发起读时不存在地址冲突。

图6为本申请实施例提供的一种数据缓存装置的结构图,该装置可以执行上述实施例提供的数据缓存方法,参考图6,该装置包括:

获取模块31,用于获取数据缓存请求;

确定模块32,用于根据各缓存单元的当前剩余缓存空间确定目标缓存单元;

缓存模块33,用于将所述数据缓存请求中的待缓存数据缓存至所述目标缓存单元。

本申请实施例提供一种数据缓存装置,通过获取数据缓存请求;根据各缓存单元的当前剩余缓存空间确定目标缓存单元;将所述数据缓存请求中的待缓存数据缓存至所述目标缓存单元。相比现有技术,本方案根据各缓存单元当前剩余的缓存空间确定目标缓存单元,实现了缓存空间的最大化利用。

在上述实施例的基础上,确定模块32,具体用于:

确定各缓存单元当前剩余缓存空间的大小,并顺序排列各所述缓存单元;

根据排序结果确定目标缓存单元。

在上述实施例的基础上,该装置还包括:

创建模块,用于创建地址索引,所述地址索引包括报文信息维护表和报文链表;

所述报文信息维护表用于存储所述待缓存数据所对应的报文包信息;

所述报文链表用于所述报文包对应的报文分片信息。

在上述实施例的基础上,该装置还包括:

更新模块,用于在将所述数据缓存请求中的待缓存数据缓存至所述目标缓存单元之后,更新所述报文信息维护表和报文链表,以根据更新后的报文信息维护表和报文链表读取所述待缓存数据。

在上述实施例的基础上,该装置还包括:

划分模块,用于在根据各缓存单元的当前剩余缓存空间确定目标缓存单元之前,划分存储数据的缓存空间,得到缓存单元。

本申请实施例提供的数据缓存装置可执行上述实施例中的数据缓存方法,具备执行方法相应的功能模块和有益效果。

图7为本申请实施例提供的一种芯片的结构图。

参考图7,该芯片包括:处理器41和存储器42,该芯片中处理器41的数量可以是一个或多个,图7中以一个处理器41为例;处理器41与存储器42可以通过总线或其他方式连接,图7中以通过总线连接为例。

存储器42作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本申请实施例中数据缓存方法对应的程序指令/模块。处理器41通过运行存储在存储器42中的软件程序、指令以及模块,从而执行芯片的各种功能应用以及数据处理,即实现上述实施例的数据缓存方法。

存储器42主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器42可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器42可进一步包括相对于处理器41远程设置的存储器,这些远程存储器可以通过网络连接至芯片。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

本申请实施例提供的芯片与上述实施例提供的数据缓存方法属于同一构思,未在本实施例中详尽描述的技术细节可参见上述实施例,并且本实施例具备执行数据缓存方法相同的有益效果。

本申请实施例还提供一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请上述实施例所述的数据缓存方法。

当然,本申请实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的数据缓存方法中的操作,还可以执行本申请任意实施例所提供的数据缓存方法中的相关操作,且具备相应的功能和有益效果。

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

注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由所附的权利要求范围决定。

14页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:数据请求优化方法、装置及应答模式通信系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类