发明内容
有鉴于此,本发明实施例提供一种基于DDR SDRAM进行数据读写操作的方法、装置及系统,用以解决现有基于DDR进行读写时效率不高,不利于提高缓存利用率的问题。
本发明实施例提供的一种基于双倍速率同步动态随机存储器DDR SDRAM进行数据写操作的方法,所述数据写操作通过多组DDR SDRAM实现,包括:
根据链表节点的大小,将接收到的报文划分为对应长度的多个数据块;
针对每个数据块,根据该数据块包含的有效字节长度,以及每组双倍速率同步动态随机存储器每个周期处理的字节长度,将该数据块划分为多个数据子单元,
判断该数据块划分后的最后一个数据子单元包含的有效字节数,是否不大于一片DDR SDRAM每次处理的字节长度,
当判断结果为是时,根据每组DDR SDRAM每个周期处理的字节长度,将该最后一个数据子单元与下一数据块中第一个数据子单元中相应字节的数据拼接,写入该组DDR SDRAM中。
本发明实施例提供的一种基于双倍速率同步动态随机存储器DDR SDRAM进行数据读操作的方法,所述数据读操作通过多组DDR SDRAM实现,包括:
根据每组双倍速率同步动态随机存储器每个周期处理的字节长度,以及接收到的读命令和读地址,确定该读地址对应的DDR每个数据子单元的物理地址;
当数据子单元为报文的第一个数据子单元,且所述数据子单元为拼接后的数据子单元时,从缓存管理的暂存空间读取包含该报文的报文头信息的数据子单元,并与从之后从DDR SDRAM读取出的数据合并;
当该数据子单元包含该报文的报文尾信息,且所述数据子单元为拼接后的数据子单元时,从DDR SDRAM的相应地址空间读取包含该报文的报文尾信息的数据子单元,取出该数据子单元的高字节部分与之前读取的数据合并,得到读出的报文。
本发明实施例提供的一种基于双倍速率同步动态随机存储器DDR SDRAM进行数据写操作的装置,所述装置包括:
队列管理模块,用于根据链表节点的大小,将接收到的报文划分为对应长度的多个数据块;
缓存管理模块,针对每个数据块,根据该数据块包含的有效字节长度,以及每组DDR SDRAM每个周期处理的字节长度,将该数据块划分为多个数据子单元,判断该数据块划分后的最后一个数据子单元包含的有效字节数,是否不大于一片DDR SDRAM每次处理的字节长度,当判断结果为是时,根据每组DDR SDRAM每个周期处理的字节长度,将该最后一个数据子单元与下一数据块中第一个数据子单元中相应字节的数据拼接,将拼接后组成的数据子单元发送给DDR控制器模块;
DDR控制器模块,用于将接收到的数据子单元写入每组DDR SDRAM中。
本发明实施例提供的一种基于双倍速率同步动态随机存储器DDR SDRAM进行数据读操作的装置,所述装置包括:
队列管理模块,用于发出对当前队列的读命令和读地址;
缓存管理模块,用于针对每个读命令,根据读命令包含的有效字节长度,以及每组双倍速率同步动态随机存储器每个周期处理的字节长度,将该读地址转换成DDR每个数据子单元的物理地址;当前读操作读取的为报文的第一个数据子单元,且所述数据子单元为拼接后的数据子单元时,从缓存管理的暂存空间读取包含该报文的报文头信息的数据子单元,并与从之后从DDR SDRAM读取出的数据合并;当该数据子单元包含该报文的报文尾信息,且所述数据子单元为拼接后的数据子单元时,从DDR SDRAM的相应地址空间读取包含该报文的报文尾信息的数据子单元,取出该数据子单元的高字节部分与之前读取的数据合并,得到读出的报文;
DDR控制器模块,用于从DDR SDRAM的相应地址空间读取包含该报文的数据子单元。
本发明实施例提供的一种基于双倍速率同步动态随机存储器DDR SDRAM进行数据读写操作的系统,所述系统包括:上述的写操作的装置,和上述的读操作的装置。
本发明实施例提供了一种基于DDR SDRAM进行数据读写操作的方法、装置及系统,该写方法中根据链表节点的大小,将接收到的报文划分为对应长度的多个数据块,针对每个数据块,根据该数据块包含的有效字节长度,将该数据块划分为多个数据子单元,当该数据块中最后一个数据子单元包含的字节数不大于一片DDR每次处理的字节长度时,将该最后一个数据子单元与下一数据块中第一个数据子单元中相应字节的数据拼接,写入该组DDR SDRAM中。由于在本发明实施例中当通过每组DDR进行读写操作时,为了避免DDR资源的浪费,将数据进行拼接,从而提高了DDR读写的效率,提高了缓存资源的利用率。
具体实施方式
为了提高DDR进行读写的效率,提高缓存利用率,本发明实施例提供了一种基于DDR SDRAM进行数据读写操作的方法,系统及装置,该方法中基于数据拼接,提高每组DDR读写操作的效率,从而提高缓存的利用率。
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1为本发明实施例提供的一种基于DDR SDRAM进行数据写操作的过程,该过程包括以下步骤:
S101:根据链表节点的大小,将接收到的报文划分为对应长度的多个数据块。
S102:针对每个数据块,根据该数据块包含的有效字节长度,以及每组双倍速率同步动态随机存储器每个周期处理的字节长度,将该数据块划分为多个数据子单元。
S103:判断该数据块划分后的最后一个数据子单元包含的有效字节数,是否不大于一片DDR SDRAM每次处理的字节长度,当判断结果为是时,进行步骤S104,否则,进行步骤S105。
S104:根据每组DDR SDRAM每个周期处理的字节长度,将该最后一个数据子单元与下一数据块中第一个数据子单元中相应字节的数据拼接,写入该组DDR SDRAM中。
S105:将该数据子单元写入该组DDR SDRAM中。
由于链表节点的数量,以及链表节点的容量,决定了缓存的容量,并且每片DDR SDRAM(以下简称DDR)的最大容量也是可知,因此可知在每台网络设备中需要几片DDR。当确定了DDR数量后,将每两片DDR划分为一组,构成一组DDR。对于DDR3,其是按照8个突发(burst)的方式进行存储的,因此可知每片DDR在一个周期中可以处理的字节长度,并且每组DDR每个周期处理的字节长度也是可知的。
在本发明实施例中,当网络设备接收到相应的报文后,根据链表节点的大小,将每个报文划分为相应长度的多个数据块,例如将每个报文划分为512字节的数据块。当将每个报文划分为多个数据块后,根据每组DDR每个周期可以处理的字节长度,又可以将每个数据块划分为多个数据子单元。每组DDR对每个数据子单元进行读写操作。
由于每个数据子单元包含的字节数,是根据每组DDR每个周期可以处理的字节长度进行划分的,当该数据子单元为该数据块的最后一个数据子单元时,该数据子单元包含的有效字节数很可能不大于对其进行处理的一组DDR一个周期可以处理的字节长度。当该数据子单元包含的有效字节数不大于一片DDR每个周期处理的字节长度时,则对该数据子单元进行处理的该组DDR在对该数据子单元进行处理时,一片DDR在进行时就是进行了空操作,浪费了带宽资源。因此在本发明实施例中当该数据子单元包含的有效字节数不大于一片DDR每个周期处理的字节长度时,则根据该片DDR每个周期处理的字节长度,将数据子单元与该数据块的下一个数据块的第一个数据在单元中相应字节的数据拼接,构成一个新的数据子单元写入该组DDR中,从而提高DDR写操作的效率,进而提高缓存的利用率。
具体的例如,当每片DDR是按照8个burst的方式进行读写处理时,每片DDR的数据位宽为16bit,因此每片DDR每次的操作是16字节,也就是128bit,因此一组DDR包含2片DDR时,其每次操作也就是每个周期可以操作32字节的数据。
当网络设备接收到每个报文时,根据链表节点的大小,将每个报文划分为512字节的数据块,再将每个512字节的数据块划分为8个64字节的单元,每个单元再分为2个32字节的数据子单元,每个数据子单元再分为2个128bit的数据,每个128bit的数据分别存储到每组DDR中的每片DDR中。
由于在本发明实施例中一组DDR包括两片DDR,所以在进行数据子单元的划分时,是按照32字节的精度进行划分的,即将数据块按照32字节的精度划分为多个数据子单元。当该组DDR对每个数据子单元进行处理时,分两个周期完成,第一个周期由第一片DDR存储128bit数据,第二周期由第二片DDR存储128bit数据。
因此当数据子单元的有效字节数小于一片DDR每个周期处理的字节长度时,例如当该数据子单元包括的有效字节数为16字节,即128bit。此时在向DDR组写入数据时,首先在第一个周期向第一片DDR写入128bit数据,在第二个周期在向第二片DDR写入数据时,由于该数据子单元的数据已经被全部写入DDR了,因此造成了第二片DDR的浪费。在本发明实施例中为了避免这种浪费,当该数据子单元包含的有效字节数小于一片DDR每个周期处理的字节长度时,将数据子单元与该数据块的下一数据块的第一个数据子单元中相应字节的数据拼接,将拼接重新构成的数据子单元写入该组DDR中。
由于在将报文,按照链表节点的大小划分为相应长度的每个数据块时,只可能最后一个数据块中最后一个数据子单元的包含的有效字节数,不大于一片DDR每个周期处理的字节长度,因此在本发明实施例中为了进一步提高数据读写的效率,当判断该数据块包含报文的报文尾信息时,才针对该数据块中的数据子单元进行判断。
图2为本发明实施例提供的基于DDR SDRAM进行数据写操作的过程,该过程包括以下步骤:
S201:根据链表节点的大小,将接收到的报文划分为对应长度的多个数据块。
S202:针对每个数据块,根据该数据块包含的有效字节长度,以及每组双倍速率同步动态随机存储器每个周期处理的字节长度,将该数据块划分为多个数据子单元。
S203:判断该数据块是否包含报文的报文尾信息,当判断结果为是时,进行步骤S204,否则,进行步骤S206。
S204:判断该数据块划分后的最后一个数据子单元包含的有效字节数,是否不大于一片双倍速率同步动态随机存储器每个周期处理的字节长度,当判断结果为是时,进行步骤S205,否则,进行步骤S206。
S205:根据每组DDR SDRAM每个周期处理的字节长度,将该最后一个数据子单元与下一数据块中第一个数据子单元中相应字节的数据拼接,写入该组DDR SDRAM中。
S206:将该数据子单元写入该组DDR SDRAM中。
图3为本发明实施例提供的一种基于DDR SDRAM进行数据写操作的装置结构示意图,该装置包括:
队列管理模块31,用于根据链表节点的大小,将接收到的报文划分为对应长度的多个数据块;
缓存管理模块32,针对每个数据块,根据该数据块包含的有效字节长度,以及每组双倍速率同步动态随机存储器每个周期处理的字节长度,将该数据块划分为多个数据子单元,判断该数据块划分后的最后一个数据子单元包含的有效字节数,是否不大于一片DDR SDRAM每次处理的字节长度,当判断结果为是时,根据每组DDR SDRAM每个周期处理的字节长度,将该最后一个数据子单元与下一数据块中第一个数据子单元中相应字节的数据拼接,将拼接后组成的数据子单元发送给DDR控制器模块33;
DDR控制器模块33,用于将接收到的数据子单元写入每组双倍速率同步动态随机存储器DDR SDRAM中。
在本发明实施例中为了进一步提高基于DDR进行数据写入的效率,该缓存管理模块32,还用于判断所述数据块是否包含报文的报文尾信息。
下面结合图3所示的装置,对本发明实施例中基于DDR SDRAM进行数据写操作的过程进行详细说明。在本发明实施例中该队列管理模块与缓存管理模块之间是按照切分后的数据块进行操作的,现以链表节点的大小为512字节,即一个数据块的标准有效字节数为512字节,,一组DDR一个周期处理的字节长度为32字节,即一个数据子单元的标准有效字节数为32字节为例进行说明。
在网络设备中当队列管理模块接收到待写入的报文后,根据链表节点的大小,将该报文以固定字节长度512字节为标准,划分为多个数据块(block)。将划分后的数据块作为写数据发送到缓存管理模块,并向缓存管理模块发送写操作命令。其中队列管理模块发送的写操作命令包含写数据和写信号,其中写信号和写数据是分别通过不同的通道发送的。
图4为本发明实施例提供的写操作时序图,在时序图中主要包括写信号,在该图中最上面为时钟信号,写信号包括写使能信号(wr_cmd_val),当前数据报写入的逻辑地址(wr_add),当前数据块的有效字节数(wr_data_val),数据块的开始block指示(wr_sop)和数据块结束block指示(wr_eop)。
缓存管理模块根据接收到的写操作命令,将接收到的逻辑地址转换为DDR存储器的物理地址,并且根据当前数据块包含的有效字节数,确定划分为数据子单元的个数,并在接收到队列管理模块发送的写数据,即一个数据块,根据确定的数据子单元的个数,通过8个写数据RAM进行位宽转换,转换成128bit的数据,并将转换后的数据发送给DDR控制器模块。缓存管理模块与DDR控制器模块之间的时钟域是266MHz,而DDR控制器模块和DDR之间的时钟域是533MHz,每片DDR的位宽是16bit,两片就是32bit,由于DDR的双倍速率,因此相当于1066MHz的时钟域,这样缓存管理模块和DDR控制器模块之间的接口位宽是128bit才能速率匹配上。
当选择的每片DDR每个周期处理的数据为16字节时,则对应一组DDR的数据子单元包含的字节数为32字节,因此在数据管理模块在根据数据块包含的有效字节数,确定划分为数据子单元的个数时,根据每个数据子单元的固定字节长度为32字节,将数据块划分为对应个数的数据子单元。并且数据管理模块是将一个数据子单元按照两个周期操作的,每个周期传输128bit的数据。
具体的队列管理模块在将一个数据块划分为多个数据子单元时,如图5所示,例如该队列管理模块接收到两个报文,分别为报文0和报文1,两个报文的长度不同。当接收到该每个报文时,将该报文划分为多个512字节的数据块,如图5所示,报文0划分为了n个数据块,报文1划分为了k个数据块。
当将每个报文划分为了多个数据块后,针对每个数据块,将该数据块根据固定的字节长度64字节长度,将该数据块划分为8个单元(cell),即将每个数据块划分为0~7共8个单元。具体的当该两个报文属于同一队列时,可以将该两个报文划分后的单元按照时间顺序,确定每个每个单元的队列序号,将每个单元按照队列序号排列。之后将每个单元再按照32字节的固定长度,划分为两个数据子单元。由于每个数据块包含的有效字节数可能比512字节少,因此在将该数据块划分为数据子单元后,每个数据子单元包含的字节数也不可能完全都是32字节。当该数据子单元包含的有效字节数为32字节时,将该数据子单元包含的有效字节划分为2个128bit的数据,两个128bit数据轮询的存入一组DDR的两片DDR中,如图6所示,数据子单元0的第一个128bit数据存入DDR组的DDR片0中,第二个128bit数据存入DDR组的DDR片1中,数据子单元1的第一个128bit数据存入DDR组的DDR片0中,第二个128bit数据存入DDR组的DDR片1中。
数据管理模块在将数据块划分为多个数据子单元后,当该数据块中最后一个数据子单元包含的有效字节数小于16字节时,即该数据子单元包含的有效字节数小于128bit时,则该数据管理模块在接收到下一个数据块时,并按照写信号将该数据块划分为对应的数据子单元后,将该下一个数据块的第一个数据子单元的前128bit,与该最后一个数据子单元包含的有效字节数进行拼接,构成一个新的数据子单元,并将构成的该新的数据子单元发送到DDR控制器管理模块。DDR控制器管理模块将接收到的该数据子单元的数据,在第一个周期向第一片DDR中存储的最后一个数据子单元包含的有效字节数对应的数据,在第二个周期向第二片DDR存储该下一个数据块的第一个数据子单元的前128bit。
如图7所示为数据子单元拼接过程的详细描述,当当前报文0的最后一个数据块到来时,该数据块的最后一个数据子单元包含的有效字节数不大于16字节,例如图7中的数据块0(Packet0)中最后一个数据子单元包含的有效字节数小于16字节,则此时将该最后一个数据子单元包含的有效字节保存起来,当该数据块0的下一个数据块数据块1(Packet1)到来时,则将数据块0最后一个数据子单元暂存的有效字节加到数据块1的包头之前,组成一个新的数据子单元,之后数据块2与数据块3、数据块4拼接的过程,如上所述,这里就不一一赘述。同时,由于将数据子单元进行了拼接,因此需要对每个数据块的包长进行更新。
图8为本发明实施例提供的一种基于DDR SDRAM进行数据读操作的过程,该过程包括以下步骤:
S801:发出对当前队列的读命令和读地址。
S802:针对每个读命令,根据该读命令包含的有效字节长度,以及每组双倍速率同步动态随机存储器每个周期处理的字节长度,将该读地址转换成DDR每个数据子单元的物理地址。
S803:判断当前读操作读取的是该报文的第一个数据子单元,且所述数据子单元为拼接后的数据子单元时,从缓存管理的暂存空间读取包含该报文的报文头信息的数据子单元,并与从之后从DDR SDRAM读取出的数据合并。
S804:当该数据子单元包含该报文的报文尾信息,且所述数据子单元为拼接后的数据子单元时,从DDR SDRAM的相应地址空间读取包含该报文的报文尾信息的数据子单元,取出该数据子单元的高字节部分与之前读取的数据合并,得到读出的报文。
具体的在从缓存管理的暂存空间读取包含该报文的报文头信息的数据子单元包括:
判断包含该报文的报文头信息的数据子单元,是否写入了双倍速率同步动态随机存储器DDR SDRAM中;
当该数据写入了DDR SDRAM中时,从读暂存中读取包含该报文的报文头信息的数据子单元,否则,从写暂存中读取包含该报文的报文头信息的数据子单元。
并且从DDR SDRAM的相应地址空间读取包含该报文的报文头信息的数据子单元包括:
判断包含该报文的报文尾信息的数据子单元,是否写入了DDR SDRAM中;
当该数据写入了DDR SDRAM中时,从读暂存中读取包含该报文的报文尾信息的数据子单元,否则,从写暂存中读取包含该报文的报文尾信息的数据子单元。
图9为本发明实施例提供的一种基于DDR SDRAM进行数据读操作的详细过程,该过程包括以下步骤:
S901:发出对当前队列的读命令和读地址。
S902:针对每个读命令,根据读命令包含的有效字节长度,以及每组双倍速率同步动态随机存储器每个周期处理的字节长度,将该读地址转换成DDR每个数据子单元的物理地址。
S903:判断该数据子单元是否包含报文的报文头信息,当判断结果为是时,进行步骤S904,否则,进行步骤S909。
S904:判断该数据子单元是否为拼接后的数据子单元,当判断结果为是时,进行步骤S905,否则,进行步骤S909。
S905:判断该数据子单元是否写入了双倍速率同步动态随机存储器DDRSDRAM中,当判断结果为是时,进行步骤S906,否则,进行步骤S907。
S906:从读暂存中读取包含该报文的报文头信息的数据子单元,之后,进行步骤S908。
S907:从写暂存中读取包含该报文的报文头信息的数据子单元。
S908:将读取的包含该报文的报文头信息的数据子单元缓存,并与从之后数据块中读取的数据合并保存。
S909:从DDR中读取的该数据单元的数据。
图10为本发明实施例提供的另一种基于DDR SDRAM进行数据读操作的详细过程,该过程包括以下步骤:
S1001:发出对当前队列的读命令和读地址。
S1002:针对每个读命令,根据读命令包含的有效字节长度,以及每组双倍速率同步动态随机存储器每个周期处理的字节长度,将该读地址转换成DDR每个数据子单元的物理地址。
S1003:判断该数据子单元是否包含报文的报文尾信息,当判断结果为是时,进行步骤S1004,否则,进行步骤S1009。
S1004:判断该数据子单元是否为拼接后的数据子单元,当判断结果为是时,进行步骤S1005,否则,进行步骤S1009。
S1005:判断该数据子单元是否写入了DDR SDRAM中,当判断结果为是时,进行步骤S1006,否则,进行步骤S1007。
S1006:从读暂存中读取包含该报文的报文尾信息的数据子单元,之后,进行步骤S1008。
S1007:从写暂存中读取包含该报文的报文尾信息的数据子单元。
S1008:将读取包含该报文的报文尾信息的数据子单元,与之前读取的数据合并保存。
S1009:从DDR中读取的该数据单元的数据。
上述两个实施例将分别针对读取的为报文头和报文尾信息分别作为判断的条件,进行读取操作,在实际的数据读取的过程中,该上述两个步骤都要进行,先判断哪个都是可以的,针对每个条件进行判断的过程依据上述两个实施例进行即可。
图11为本本发明实施例提供的一种基于DDR SDRAM进行数据读操作的装置的结构示意图,该装置包括:
队列管理模块111,用于发出对当前队列的读命令和读地址;
缓存管理模块112,用于针对每个读命令,根据读命令包含的有效字节长度,以及每组双倍速率同步动态随机存储器每个周期处理的字节长度,将该读地址转换成DDR每个数据子单元的物理地址;当前读操作读取的为报文的第一个数据子单元,且所述数据子单元为拼接后的数据子单元时,从缓存管理的暂存空间读取包含该报文的报文头信息的数据子单元,并与从之后从DDRSDRAM读取出的数据合并;当该数据子单元包含该报文的报文尾信息,且所述数据子单元为拼接后的数据子单元时,从DDR SDRAM的相应地址空间读取包含该报文的报文尾信息的数据子单元,取出该数据子单元的高字节部分与之前读取的数据合并,得到读出的报文;
DDR控制器模块113,用于从DDR SDRAM的相应地址空间读取包含该报文的数据子单元。
在网络设备中当队列管理模块接收到待读出的报文后,根据链表节点的大小,将该报文以固定字节长度512字节为标准,划分为多个数据块(block)。将划分后的数据块作为读数据发送到缓存管理模块,并向缓存管理模块发送读操作命令。其中队列管理模块发送的读操作命令包含读数据和读信号,其中读信号和读数据是分别通过不同的通道发送的。
图12为本发明实施例提供的读操作时序图,在时序图中主要包括读信号,在该图中最上面为时钟信号,读信号包括读使能信号(rd_cmd_val),当前数据报读出的逻辑地址(rd_add),数据块结束block指示(rd_eop)。
缓存管理模块根据接收到的读操作命令,将接收到的逻辑地址转换为DDR存储器的物理地址,并且根据当前数据块包含的有效字节数,确定划分为数据子单元的个数,并在接收到队列管理模块发送的读数据,即一个数据块。将划分后的数据子单元的个数输出给DDR控制器模块,DDR控制器模块会将数据从每组DDR的两片DDR中读出。
在DDR控制器模块读取每个数据子单元的数据时,也是按照每个周期32字节读取的,每个周期读取128bit的数据。当读出的数据子单元为拼接后的数据子单元时,则从DDR SDRAM的相应地址空间读取包含该数据。
具体的例如当数据块0和数据块1为同一队列中相邻的两个数据块时,则在读命令到来时,则将数据块0的数据块读出,当数据块0的数据和数据块1中数据存在拼接时,则该拼接的数据,可能已经和下一个数据块写入了DDR中,也有可能还在写暂存当中,没有来得及存入DDR中就进行了当前数据块的读取了。如果Packet0的尾部最后一个128bit数据没有写入DDR3 SDRAM中,则读取Packet0的数据时,可以直接从写暂存当中读取Packet0的最后一个128bit数据,如图13所示。如果Packet0的尾部最后一个128bit数据与Packet1一同存入DDR3 SDRAM当中。Packet0读出后,再从一组DDR3SDRAM中读出一个32字节的数据子单元数据,这个数据子单元的高128bit数据为Packet0的报文尾,而低128bit数据就是Packet1的报文头部,将低128bit数据先暂存到读暂存寄存器中,这样读取Packet1的第1个数据时(包头128bit),就直接从应从拼接数据读暂存中取得就可以了,如图14所示。
本发明实施例提供的一种基于DDR SDRAM进行数据读写操作的系统,该系统包括:
写操作端,根据链表节点的大小,将接收到的报文划分为对应长度的多个数据块,针对每个数据块,根据该数据块包含的有效字节长度,以及每组双倍速率同步动态随机存储器每个周期处理的字节长度,将该数据块划分为多个数据子单元,判断该数据块划分后的最后一个数据子单元包含的有效字节数,是否不大于一片双倍速率同步动态随机存储器每次处理的字节长度,当判断结果为是时,根据每组双倍速率同步动态随机存储器每个周期处理的字节长度,将该最后一个数据子单元与下一数据块中第一个数据子单元中相应字节的数据拼接,写入该组双倍速率同步动态随机存储器DDR SDRAM中;
读操作端,根据每组双倍速率同步动态随机存储器每个周期处理的字节长度,以及接收到的读命令和读地址,确定该读地址对应的DDR每个数据子单元的物理地址;当数据子单元为报文的第一个数据子单元,且所述数据子单元为拼接后的数据子单元时,从缓存管理的暂存空间读取包含该报文的报文头信息的数据子单元,并与从之后从DDR SDRAM读取出的数据合并;当该数据子单元包含该报文的报文尾信息,且所述数据子单元为拼接后的数据子单元时,从DDR SDRAM的相应地址空间读取包含该报文的报文尾信息的数据子单元,取出该数据子单元的高字节部分与之前读取的数据合并,得到读出的报文。
本发明实施例提供了一种基于DDR SDRAM进行数据读写操作的方法、系统及装置,该写方法中根据链表节点的大小,将接收到的报文划分为对应长度的多个数据块,针对每个数据块,根据该数据块包含的有效字节长度,将该数据块划分为多个数据子单元,当该数据块中最后一个数据子单元包含的字节数不大于一片DDR每次处理的字节长度时,将该最后一个数据子单元与下一数据块中第一个数据子单元中相应字节的数据拼接,写入该组DDR SDRAM中。由于在本发明实施例中当通过每组DDR进行读写操作时,为了避免DDR资源的浪费,将数据进行拼接,从而提高了DDR读写的效率,提高了缓存资源的利用率。
上述说明示出并描述了本发明的优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。