缓存结构、读写数据的方法和装置与流程

文档序号:16880336发布日期:2019-02-15 22:04阅读:344来源:国知局
缓存结构、读写数据的方法和装置与流程

本发明涉及网络芯片技术领域,尤其涉及一种缓存结构、读写数据的方法和装置。



背景技术:

网络芯片的一个重要的功能就是转发数据,其过程通常为:接收数据,将数据缓存在缓存结构中,计算得到该数据的转发出口,然后读出该数据,通过转发出口将该数据转发出去。

在实际中,缓存结构通常由一些数据存储模块组成,这些存储模块通常由若干数据存储区块组成,每个数据存储区块能够存储固定长度的数据、且具有唯一的地址,通常在一个读写时钟周期内,该数据存储模块能够进行两次读操作、或者一次读操作及一次写操作;可以理解的是,在高密度网络芯片中,在一个读写周期中,可能需要进行多次读操作和/或写操作,则现有的存储模块就不能够满足需求了,即需要将若干颗数据存储模块进行组合并得到一个缓存结构,在一个读写周期中,能够对该缓存结构进行多次读操作和/或多次写操作。而在本发明申请中,发明目的是基于上述的数据存储模块得到一种缓存结构,在一个读写周期中,该缓存结构能够完成多次写操作和两次读操作。

因此,基于现有的数据存储区块,如何设计一种在一个读写周期中,能够完成多次写操作和两次读操作的缓存结构,就成为一个亟待解决的问题。



技术实现要素:

本发明的目的在于提供一种缓存结构、读写数据的方法和装置。

为了实现上述发明目的之一,本发明一实施方式提供了一种缓存结构,包括:n+1个数据存储模块,所述数据存储模块包含有若干第一数据存储区块,在一个读写时钟周期内,能够对所述若干第一数据存储区块进行两次读操作、或者能够进行一次读操作及一次写操作,其中,n为大于等于1的整数;n个用于接收数据的写通道以及两个用于读取数据的读通道。

作为本发明一实施方式的进一步改进,所述数据存储模块还包括:fifo缓冲模块和地址存储模块,所述地址存储模块包含有若干第二数据存储区块,每个第二数据存储区块能够存储两个第一数据存储区块的地址,在一个读写时钟周期内,所述地址存储模块能够进行两次读操作、或者能够进行一次读操作及一次写操作。

本发明实施例提供了一种读写数据的方法,包含以下步骤:

接收到用于表征读取至多两个数据的读指令和/或用于表征写入至多n个数据的写指令;

基于预设算法,建立n个写通道与所述n+1个数据存储模块中的n个数据存储模块的一一映射关系;

在确定所述n个数据存储模块中的任意的第一数据存储模块所对应的第一写通道包含数据、并且从两个读通道中所接收的两个读地址都对应到第一数据存储模块时,建立第一写通道与所述n+1个数据存储模块中的剩余的一个数据存储模块的映射关系;

依据所述映射关系,对所述n+1个数据存储模块都执行读操作和/或写操作。

作为本发明一实施方式的进一步改进,所述基于预设算法,建立n个写通道与所述n+1个数据存储模块中的n个数据存储模块的一一映射关系,包括:

基于随机算法,从所述n+1个数据存储模块中选择n个数据存储模块,并建立n个写通道与所述n个数据存储模块的一一映射关系。

作为本发明一实施方式的进一步改进,所述基于预设算法,建立n个写通道与所述n+1个数据存储模块中的n个数据存储模块的一一映射关系,包括:建立第i个写通道与第j个数据存储模块的映射关系,其中,i和k都整数,且1≤i≤n,0≤k≤n;

所述建立第一写通道与所述n+1个数据存储模块中的剩余的一个数据存储模块的映射关系,包括:建立第一写通道与第l个数据存储模块的映射关系,其中,并且第l个数据存储模块对应的fifo缓冲模块不为空。

作为本发明一实施方式的进一步改进,所述执行写操作,包括:

在确定任意的第二数据存储模块中的fifo缓冲模块不满时,从第二数据存储模块中的地址存储模块读取并删除若干地址,并将所述若干地址push进所述fifo缓冲模块;

从所述fifo缓冲模块pop出一个地址;

在确定所述第二数据存储模块对应的写通道包含数据时,将第二数据存储模块对应的写通道中的数据写入到所述地址对应的第一数据存储区块中,并返回所述地址。

作为本发明一实施方式的进一步改进,所述执行对所述n+1个数据存储模块执行读操作,包括:

从两个读通道中接收至多两个读地址,将每个读地址写入所述读地址对应的数据存储模块的地址存储模块中,对每个读地址都执行以下操作:获取读地址对应的第三数据存储模块,读出第三数据存储模块中与所述读地址对应的第一数据存储区块中的数据。

本发明实施例提供了一种读写数据的装置,包含以下模块:

指令接收模块,用于接收到用于表征读取至多两个数据的读指令和/或用于表征写入至多n个数据的写指令;

分配模块,用于基于预设算法,建立n个写通道与所述n+1个数据存储模块中的n个数据存储模块的一一映射关系;

冲突解决模块,用于在确定所述n个数据存储模块中的任意的第一数据存储模块所对应的第一写通道包含数据、并且从两个读通道中所接收的两个读地址都对应到第一数据存储模块时,建立第一写通道与所述n+1个数据存储模块中的剩余的一个数据存储模块的映射关系;

读写操作模块,用于依据所述映射关系,对所述n+1个数据存储模块都执行读操作和/或写操作。

作为本发明一实施方式的进一步改进,所述分配模块,还执行:

基于随机算法,从所述n+1个数据存储模块中选择n个数据存储模块,并建立n个写通道与所述n个数据存储模块的一一映射关系。

作为本发明一实施方式的进一步改进,所述分配模块,还执行:建立第i个写通道与第j个数据存储模块的映射关系,其中,i和k都整数,且1≤i≤n,0≤k≤n;

所述冲突解决模块,还执行:建立第一写通道与第l个数据存储模块的映射关系,其中,并且第l个数据存储模块对应的fifo缓冲模块不为空。

相对于现有技术,本发明的技术效果在于:本发明实施例提供了一种缓存结构、读写数据的方法和装置,在该缓存结构包括:n+1个数据存储模块,所述数据存储模块包含有若干第一数据存储区块,在一个读写时钟周期内,能够对所述若干第一数据存储区块进行两次读操作、或者能够进行一次读操作及一次写操作,其中,n为大于等于1的整数;n个用于接收数据的写通道以及两个用于读取数据的读通道。在一个读写周期内,该缓存结构能够进行n次写操作和二次读操作。

附图说明

图1是本发明中的缓冲结构的原理图;

图2是本发明实施例二中的缓存结构的读写数据的方法流程示意图;

图3是本发明实施例二中的写通道与数据存储模块之间第一映射关系图;

图4是本发明实施例二中的写通道与数据存储模块之间第二映射关系图。

具体实施方式

以下将结合附图所示的各实施方式对本发明进行详细描述。但这些实施方式并不限制本发明,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。

本发明提供了一种缓存结构,在一个读写周期中,该缓存结构能够完成n次写操作和两次读操作,该缓存结构具有n个写通道和两个读通道;其中,写操作具体为:向一些写通道写入数据,之后该缓存结构会从n个写通道中获取数据,然后将获取到的数据写入一个或多个数据存储模块,并返回地址;读操作具体为:向读通道写入读地址,之后缓存模块会从读通道中获取读地址,然后读取该读地址对应的数据存储区块中的数据,并输出。

本发明实施例一提供了一种缓存结构,包括:n+1个数据存储模块,所述数据存储模块包含有若干第一数据存储区块,在一个读写时钟周期内,能够对所述若干第一数据存储区块进行两次读操作、或者能够进行一次读操作及一次写操作,其中,n为大于等于1的整数;n个用于接收数据的写通道以及两个用于读取数据的读通道。这里,“一次读操作及一次写操作”是指在一个读写周期内,该数据存储模块能够同时执行一次读数据的操作和一次写数据的操作。“两次读操作”是指在一个读写周期内,该数据存储模块能够同时执行两次读数据的操作。这里,若干第一数据存储区块是作为一个整体模块而存在的,在一个读写周期内,可以对该整体模块执行1读1写或2读。

优选的,所述数据存储模块还包括:

fifo(firstinputfirstoutput,先入先出队列)缓冲模块和地址存储模块,所述地址存储模块包含有若干第二数据存储区块,每个第二数据存储区块能够存储两个第一数据存储区块的地址,在一个读写时钟周期内,所述地址存储模块能够进行两次读操作、或者能够进行一次读操作及一次写操作。这里,如图1所示,每个数据存储模块都包含有若干第一数据存储区块,fifo缓冲模块和地址存储模块,其中地址存储模块,能够存储所有第一数据存储区块的地址,而fifo缓冲模块能够缓存地址存储模块中的若干地址。

本发明实施例二提供了一种读写数据的方法,如图2所示,包含以下步骤:

步骤201:接收到用于表征读取至多两个数据的读指令和/或用于表征写入至多n个数据的写指令;这里,在网络芯片中会有一个统一的时钟信号,缓存结构设置有使能端,如果使能端接收到读使能信号和写使能信号,并且时钟信号为激发沿(例如,上升沿或下降沿)时,就表示该缓存结构接收到读数据和/或写数据的指令,从而该缓存结构就可以开始读写数据了。可以理解的是,如果接收到写数据指令,则该缓存结构会接收到若干需要写入的数据(至多n个);如果接收到读数据指令,则该缓存结构会接收到若干第一数据存储区块的地址(至多两个)。

步骤202:基于预设算法,建立n个写通道与所述n+1个数据存储模块中的n个数据存储模块的一一映射关系;在该步骤中,会从n+1个数据存储模块中选择出n个数据存储模块,还剩余一个数据存储模块(可记为备用数据存储模块)。

步骤203:在确定所述n个数据存储模块中的任意的第一数据存储模块所对应的第一写通道包含数据、并且从两个读通道中所接收的两个读地址都对应到第一数据存储模块时,建立第一写通道与所述n+1个数据存储模块中的剩余的一个数据存储模块的映射关系;这里,如果第一数据存储模块对应的第一写通道包含数据,则表示在该读写时钟周期内,第一数据存储模块需要进行一次写操作,且如果两个读地址都对应到第一数据存储模块,则表示在该读写时钟周期内,第一数据存储模块需要进行两次读操作;而由于在一个读写时钟周期内,第一数据存储模块中的所述若干第一数据存储区块只能进行两次读操作、或者一次读操作及一次写操作,即第一数据存储模块无法完成2读1写的操作,即存在读写冲突。为了解决这个问题,在本步骤中,将第一写通道与备用数据存储模块建立映射关系,即对第一数据存储模块进行2次读操作,对备用数据存储模块进行1次写操作。

步骤204:依据所述映射关系,对所述n+1个数据存储模块都执行读操作和/或写操作。可理解的是,在步骤201中,如果接收到读指令,则在步骤204中,只需要执行“对所述n+1个数据存储模块都执行读操作”;如果接收到写指令,则在步骤204中,只需要执行“对所述n+1个数据存储模块都执行写操作”;如果接收到读指令和写指令,则在步骤204中,只需要执行“对所述n+1个数据存储模块都执行读操作和写操作”。

可以理解的是,在步骤203执行完,每个数据存储模块中都不存在读写冲突,则可以将写通道中的数据写入对应的数据存储模块中,从读通道中获取读地址,并获取该读地址对应第一数据存储区块中的数据,之后通过读通道将该数据输出。可以理解的是,如果某个写通道不包含数据,则就不需要对该通道对应的数据存储模块进行写数据的操作;相应的,如果某个读通道不包含有读地址,则也不需要对该读通道进行读数据的操作。

这里,可以理解的是,在步骤204中,对该备用数据存储模块进行写操作的几率通常会比较小,因此,为了提高各个数据存储模块的空间利用率,在每次执行步骤202时,可以选择不同的数据存储模块作为备用数据存储模块,即该每个数据存储模块被选中为备用数据存储模块的概率尽可能相等,尽可能为

优选的,所述基于预设算法,建立n个写通道与所述n+1个数据存储模块中的n个数据存储模块的一一映射关系,包括:基于随机算法,从所述n+1个数据存储模块中选择n个数据存储模块,并建立n个写通道与所述n个数据存储模块的一一映射关系。这里,每个数据存储模块都以的概率被选中,从而最终得到所述n个数据存储模块,可以理解的是,数据存储模块被选中为备用数据存储模块的概率为

可选的,该随机算法可以为:在第一执行步骤202时,选择第h个数据存储模块作为备用数据存储模块,第二次执行步骤202时,选择第h+1个数据存储模块作为备用数据存储模块,之后为,第h+2个,第h+3个,…,第n+1个,第1个,第2个,…,第h个,…,即将该n+1数据存储模块排成一圈,每次执行步骤202,都选择下一个作为备用数据存储模块,从而确保每个数据存储模块被选择为备用数据存储模块的概率严格等于

优选的,所述基于预设算法,建立n个写通道与所述n+1个数据存储模块中的n个数据存储模块的一一映射关系,包括:建立第i个写通道与第j个数据存储模块的映射关系,其中,i和k都整数,且1≤i≤n,0≤k≤n;

所述建立第一写通道与所述n+1个数据存储模块中的剩余的一个数据存储模块的映射关系,包括:建立第一写通道与第l个数据存储模块的映射关系,其中,并且第l个数据存储模块对应的fifo缓冲模块不为空。

这里,当n=5,k=2时,通道与数据存储模块之间的映射关系如图3所示,即1号写通道对应到3号数据存储模块,2号写通道对应到4号数据存储模块,3号写通道对应到5号数据存储模块,4号写通道对应到6号数据存储模块,5号写通道对应到1号数据存储模块,而2号数据存储模块就为备用数据存储模块;当n=5,k=0时,通道与数据存储模块之间的映射关系如图4所示,即1号写通道对应到1号数据存储模块,2号写通道对应到2号数据存储模块,3号写通道对应到3号数据存储模块,4号写通道对应到4号数据存储模块,5号写通道对应到5号数据存储模块,而6号数据存储模块就为备用数据存储模块。

可选的,在连续n+1次执行步骤202时,k的值都不一样,因此,在n+1次执行步骤202时,每次选择的备用数据存储模块都不一样,从而每个数据存储模块都有均等的机会成为备用数据存储模块。例如,k的值可以依次为,h、h+1、h+2、…、n、0、1、2、…、h、h+1、…,即将该n+1数据存储模块排成一圈,每次执行步骤202,都选择下一个作为备用数据存储模块,从而确保每个数据存储模块被选择为备用数据存储模块的概率严格等于

优选的,所述执行写操作,包括:在确定任意的第二数据存储模块中的fifo缓冲模块不满时,从第二数据存储模块中的地址存储模块读取并删除若干地址,并将所述若干地址push进所述fifo缓冲模块;这里,如果fifo缓冲模块不满时,可以将地址存储模块中的一些地址读出并push进fifo缓冲模块。这里,由于在一个读写周期中,地址存储模块仅支持1读1写或2读,因此,“若干地址”的数量可以根据实际情况来控制,例如,每次都从地址存储模块中读取一个第二数据存储区块中的数据;可以理解的是,如果读取到的第二数据存储区块存储两个地址,则,从该第二数据存储区块读取出数据之后,需要将该数据拆分成两个地址。

从所述fifo缓冲模块pop出一个地址;

在确定所述第二数据存储模块对应的写通道包含数据时,将第二数据存储模块对应的写通道中的数据写入到所述地址对应的第一数据存储区块中,并返回所述地址。如图1所示,每一个数据存储模块都对应有唯一的fifo缓冲模块和唯一的地址存储模块,例如,在图1中,数据存储模块1对应到fifo缓冲模块1和地址存储模块1,数据存储模块2对应到fifo缓冲模块2和地址存储模块2,…,数据存储模块n+1对应到fifo缓冲模块n+1和地址存储模块n+1。可以理解的是,数据存储模块中的所有数据存储区块的地址都能够存储进对应的地址存储模块。

这里,如果想要从该缓存结构中读取数据,需要提供读地址,可以理解的是,在写入一个数据之后,需要返回该数据写入的第一数据存储区块的地址,以便后续的读操作。

这里,在地址存储模块的初始化结束后,读地址为0,写地址为地址存储模块的最大深度。在读操作时,读地址加1,写操作时,写地址加1。如果加到地址存储模块的最大深度时归零重新累加。可以理解的是,该地址存储模块,也是一个fifo。

可选的,所述执行写操作,还包括:在确定第二数据存储模块对应的写通道不包含数据时,将所述地址push进第二数据存储模块的fifo缓冲模块中。不包含数据时,就不需要执行写操作,则可以将该地址push进fifo缓冲模块中,以便下次读取并使用。

可选的,所述执行写操作,还包括:在确定第二数据存储模块所对应的写通道包含数据、且第二数据存储模块中已写满数据,则写操作失败。

优选的,所述执行对所述n+1个数据存储模块执行读操作,包括:从两个读通道中接收至多两个读地址,将每个读地址写入所述读地址对应的数据存储模块的地址存储模块中,对每个读地址都执行以下操作:获取读地址对应的第三数据存储模块,读出第三数据存储模块中与所述读地址对应的第一数据存储区块中的数据。这里,获取读地址对应的第三数据存储模块的第一数据存储区块,然后从第一存储区域读取数据并输出,可以理解的是,该第一数据存储区块可以不清空,则需要将该第一数据存储区块的地址回收。

可选的,所述将每个读地址写入所述读地址对应的数据存储模块中的地址存储模块,包括:在确定两个读地址对应到相同的第四地址存储模块,则将两个读地址合并成一条数据,并存入到第四地址存储模块中的地址存储模块。这里,在同一读写周期中,地址存储模块不支持两次写操作,而且,第二数据存储区块能够存储两个第一数据存储区块的地址,因此,可以将两个读地址合并成一条数据,然后将该数据存储到第一数据存储区块中。

综上所述,本发明中的缓存结构中包含有n+1个数据存储模块,所有的数据存储模块都能够用于存储数据,即利用率高,且支持n写2读的能力。

本发明实施例还提供了一种读写数据的装置,包含以下模块:

指令接收模块,用于接收到用于表征读取至多两个数据的读指令和/或用于表征写入至多n个数据的写指令;

分配模块,用于基于预设算法,建立n个写通道与所述n+1个数据存储模块中的n个数据存储模块的一一映射关系;

冲突解决模块,用于在确定所述n个数据存储模块中的任意的第一数据存储模块所对应的第一写通道包含数据、并且从两个读通道中所接收的两个读地址都对应到第一数据存储模块时,建立第一写通道与所述n+1个数据存储模块中的剩余的一个数据存储模块的映射关系;

读写操作模块,用于依据所述映射关系,对所述n+1个数据存储模块都执行读操作和/或写操作。

优选的,所述分配模块,还执行:基于随机算法,从所述n+1个数据存储模块中选择n个数据存储模块,并建立n个写通道与所述n个数据存储模块的一一映射关系。

优选的,所述分配模块,还执行:建立第i个写通道与第j个数据存储模块的映射关系,其中,i和k都整数,且1≤i≤n,0≤k≤n;

所述冲突解决模块,还执行:建立第一写通道与第l个数据存储模块的映射关系,其中,并且第l个数据存储模块对应的fifo缓冲模块不为空。

应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1