一种基于ddrsdram进行数据读写的方法、装置及系统的制作方法

文档序号:7604761阅读:227来源:国知局
专利名称:一种基于ddr sdram进行数据读写的方法、装置及系统的制作方法
技术领域
本发明涉及数据通讯技术领域,尤其涉及一种基于双倍速率同步动态随机存储器(Double Data Rate Synchronous Dynamic Random Access Memory, DDRSDRAM)进行数据读写的方法、装置及系统。
背景技术
随着网络容量与业务不断增长,为了实现报文的服务质量(Quality of Service,QoS)服务要求,高优先级的优先服务,需要网络设备中的流量管理芯片有一个足够大的缓存空间来存储上游设备发送过来的报文,并将报文缓存后调度输出,从而实现按照优先级对不同的数据进行调度。对高端网络设备而言,基本要求是至少缓存200ms线速的报文数据,在40Gbps环 境下,该网络设备需要至少SGbits缓存容量。为了保证缓存容量,并且降低经济成本,在网络设备中存储器普遍采用DDR3SDRAM。网络设备的流量管理芯片是由队列管理系统,缓存管理系统和DDR控制器组成的,为了提高缓存的利用率,可以采用的方法包括提高缓存管理系统的效率,或提高DDR的读写效率,在现有技术中普遍采用提高DDR的读写效率实现。通过提高DDR的读写效率,提高缓存的利用率的方法包括将接收到的报文数据切分为固定大小的单元,将各个单元按照DDR bank轮询的方式进行读写操作。当采用bank轮询的方式进行读写操作时,对于不同bank间操作的情况,采用状态机的方法,对将要执行命令的行提前Precharge和Activate操作,从而实现数据线上的无缝连接。对同一个bank换行通过快进快出(FIFO)缓存方式乱序,让非同bank换行或者非同bank的命令先执行。对于读写操作转换时的固定延迟,采用读写均衡的方法减少这种转换的次数来提高利用率。但是上述通过提高DDR读写效率提高缓存利用率的方法,也是存在很大的弊端的,这是因为在进行读写操作时,一般将两片DDR作为一组,当将报文切分为固定长度的单元进行存储时,如果切分的某个单元内包含的有效字节比较少,则存在较大的带宽浪费。例如固定长度为32字节时,如果一个报文是33字节,则将其应该切分为2个单元,第一个单元有32个字节,但第二个单元的有效字节数只为1,当通过一组DDR对其存储时,将近浪费掉50%的带宽,从而不利于提闻DDR读与的效率,并且也不利于提闻缓存的利用率。

发明内容
有鉴于此,本发明实施例提供一种基于DDR SDRAM进行数据读写操作的方法、装置及系统,用以解决现有基于DDR进行读写时效率不高,不利于提高缓存利用率的问题。本发明实施例提供的一种基于双倍速率同步动态随机存储器DDR SDRAM进行数据写操作的方法,所述数据写操作通过多组DDR SDRAM实现,包括根据链表节点的大小,将接收到的报文划分为对应长度的多个数据块;
针对每个数据块,根据该数据块包含的有效字节长度,以及每组双倍速率同步动态随机存储器每个周期处理的字节长度,将该数据块划分为多个数据子单元,判断该数据块划分后的最后一个数据子单元包含的有效字节数,是否不大于一片DDR SDRAM每次处理的字节长度,当判断结果为是时,根据每组DDR SDRAM每个周期处理的字节长度,将该最后一个数据子单元与下一数据块中第一个数据子单元中相应字节的数据拼接,写入该组DDRSDRAM 中。本发明实施例提供的一种基于双倍速率同步动态随机存储器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的相应地址空间读取包含该报文的数据子单
J Li o本发明实施例提供的一种基于双倍速率同步动态随机存储器DDR SDRAM进行数据读写操作的系统,所述系统包括上述的写操作的装置,和上述的读操作的装置。本发明实施例提供了一种基于DDR SDRAM进行数据读写操作的方法、装置及系统,该写方法中根据链表节点的大小,将接收到的报文划分为对应长度的多个数据块,针对每个数据块,根据该数据块包含的有效字节长度,将该数据块划分为多个数据子单元,当该数据块中最后一个数据子单元包含的字节数不大于一片DDR每次处理的字节长度时,将该最后一个数据子单元与下一数据块中第一个数据子单元中相应字节的数据拼接,写入该组DDR SDRAM中。由于在本发明实施例中当通过每组DDR进行读写操作时,为了避免DDR资源的浪费,将数据进行拼接,从而提高了 DDR读写的效率,提高了缓存资源的利用率。


此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图I为本发明实施例提供的一种基于DDR SDRAM进行数据写操作的过程;图2为本发明实施例提供的基于DDR SDRAM进行数据写操作的过程;图3为本发明实施例提供的一种基于DDR SDRAM进行数据写操作的装置结构示意图;图4为本发明实施例提供的写操作时序图;图5为本发明实施例提供的报文划分为数据块的示意图;图6为本发明实施例提供的对数据子单元进行数据存储的过程;图7为本发明实施例提供的数据子单元拼接过程的详细描述;图8为本发明实施例提供的一种基于DDR SDRAM进行数据读操作的过程;图9为本发明实施例提供的一种基于DDR SDRAM进行数据读操作的详细过程;图10为本发明实施例提供的另一种基于DDR SDRAM进行数据读操作的详细过程;图11为本本发明实施例提供的一种基于DDR SDRAM进行数据读操作的装置的结构示意图;图12为本发明实施例提供的读操作时序图;图13为本发明实施例提供的一种数据读取方式示意图;图14为本发明实施例提供的另一种数据读取方式示意图。
具体实施例方式为了提闻DDR进行读与的效率,提闻缓存利用率,本发明实施例提供了一种基于DDR SDRAM进行数据读写操作的方法,系统及装置,该方法中基于数据拼接,提高每组DDR读写操作的效率,从而提高缓存的利用率。为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图I为本发明实施例提供的一种基于DDR SDRAM进行数据写操作的过程,该过程包括以下步骤SlOl :根据链表节点的大小,将接收到的报文划分为对应长度的多个数据块。S102 :针对每个数据块,根据该数据块包含的有效字节长度,以及每组双倍速率同步动态随机存储器每个周期处理的字节长度,将该数据块划分为多个数据子单元。S103:判断该数据块划分后的最后一个数据子单元包含的有效字节数,是否不大于一片DDR SDRAM每次处理的字节长度,当判断结果为是时,进行步骤S104,否则,进行步骤 S105。S104:根据每组DDR SDRAM每个周期处理的字节长度,将该最后一个数据子单元与下一数据块中第一个数据子单元中相应字节的数据拼接,写入该组DDR SDRAM中。S105 :将该数据子单元写入该组DDR SDRAM中。 由于链表节点的数量,以及链表节点的容量,决定了缓存的容量,并且每片DDRSDRAM(以下简称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字节,S卩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,针对每个数据块,根据该数据块包含的有效字节长度,以及每组双倍速率同步动态随机存储器每个周期处理的字节长度,将该数据块划分为多个数据子单元,判断该数据块划分后的最后一个数据子单元包含的有效字节数,是否不大于一片DDRSDRAM每次处理的字节长度,当判断结果为是时,根据每组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个数据块,报文I划分为了 k个数据块。当将每个报文划分为了多个数据块后,针对每个数据块,将该数据块根据固定的字节长度64字节长度,将该数据块划分为8个单元(cell),即将每个数据块划分为0 7共8个单元。具体的当该两个报文属于同一队列时,可以将该两个报文划分后的单元按照时间顺序,确定每个每个单元的队列序号,将每个单元按照队列序号排列。之后将每个单元再按照32字节的固定长度,划分为两个数据子单元。由于每个数据块包含的有效字节数可能比512字节少,因此在将该数据块划分为数据子单元后,每个数据子单元包含的字节数也不可能完全都是32字节。当该数据子单元包含的有效字节数为32字节时,将该数据子 单元包含的有效字节划分为2个128bit的数据,两个128bit数据轮询的存入一组DDR的两片DDR中,如图6所示,数据子单元O的第一个128bit数据存入DDR组的DDR片O中,第二个128bit数据存入DDR组的DDR片I中,数据子单元I的第一个128bit数据存入DDR组的DDR片O中,第二个128bit数据存入DDR组的DDR片I中。数据管理模块在将数据块划分为多个数据子单元后,当该数据块中最后一个数据子单元包含的有效字节数小于16字节时,即该数据子单元包含的有效字节数小于128bit时,则该数据管理模块在接收到下一个数据块时,并按照写信号将该数据块划分为对应的数据子单元后,将该下一个数据块的第一个数据子单元的前128bit,与该最后一个数据子单元包含的有效字节数进行拼接,构成一个新的数据子单元,并将构成的该新的数据子单元发送到DDR控制器管理模块。DDR控制器管理模块将接收到的该数据子单元的数据,在第一个周期向第一片DDR中存储的最后一个数据子单元包含的有效字节数对应的数据,在第二个周期向第二片DDR存储该下一个数据块的第一个数据子单元的前128bit。如图7所示为数据子单元拼接过程的详细描述,当当前报文0的最后一个数据块到来时,该数据块的最后一个数据子单元包含的有效字节数不大于16字节,例如图7中 的数据块O(PacketO)中最后一个数据子单元包含的有效字节数小于16字节,则此时将该最后一个数据子单元包含的有效字节保存起来,当该数据块0的下一个数据块数据块I(Packetl)到来时,则将数据块0最后一个数据子单元暂存的有效字节加到数据块I的包头之前,组成一个新的数据子单元,之后数据块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的数据。当读出的数据子单元为拼接后的数据子单元时,则从DDRSDRAM的相应地址空间读取包含该数据。具体的例如当数据块0和数据块I为同一队列中相邻的两个数据块时,则在读命令到来时,则将数据块0的数据块读出,当数据块0的数据和数据块I中数据存在拼接时,则该拼接的数据,可能已经和下一个数据块写入了 DDR中,也有可能还在写暂存当中,没有来得及存入DDR中就进行了当前数据块的读取了。如果PacketO的尾部最后一个128bit数据没有写入DDR3SDRAM中,则读取PacketO的数据时,可以直接从写暂存当中读取PacketO的最后一个128bit数据,如图13所示。如果PacketO的尾部最后一个128bit数据与Packetl —同存入DDR3SDRAM当中。PacketO读出后,再从一组DDR3SDRAM中读出一个32字节的数据子单元数据,这个数据子单元的高128bit数据为PacketO的报文尾,而低128bit数据就是Packetl的报文头部,将低128bit数据先暂存到读暂存寄存器中,这样读取Packetl的第I个数据时(包头128bit),就直接从应从拼接数据读暂存中取得就可以了,如图14所示。本发明实施例提供的一种基于DDR SDRAM进行数据读写操作的系统,该系统包括写操作端,根据链表节点的大小,将接收到的报文划分为对应长度的多个数据块,针对每个数据块,根据该数据块包含的有效字节长度,以及每组双倍速率同步动态随机存储器每个周期处理的字节长度,将该数据块划分为多个数据子单元,判断该数据块划分后的最后一个数据子单元包含的有效字节数,是否不大于一片双倍速率同步动态随机存储器每次处理的字节长度,当判断结果为是时,根据每组双倍速率同步动态随机存储器每个周期处理的字节长度,将该最后一个数据子单元与下一数据块中第一个数据子单元中相应字节的数据拼接,写入该组双倍速率同步动态随机存储器DDR SDRAM中;读操作端,根据每组双倍速率同步动态随机存储器每个周期处理的字节长度,以 及接收到的读命令和读地址,确定该读地址对应的DDR每个数据子单元的物理地址;当数据子单元为报文的第一个数据子单元,且所述数据子单元为拼接后的数据子单元时,从缓存管理的暂存空间读取包含该报文的报文头信息的数据子单元,并与从之后从DDR SDRAM读取出的数据合并;当该数据子单元包含该报文的报文尾信息,且所述数据子单元为拼接后的数据子单元时,从DDR SDRAM的相应地址空间读取包含该报文的报文尾信息的数据子单元,取出该数据子单元的高字节部分与之前读取的数据合并,得到读出的报文。本发明实施例提供了一种基于DDR SDRAM进行数据读写操作的方法、系统及装置,该写方法中根据链表节点的大小,将接收到的报文划分为对应长度的多个数据块,针对每个数据块,根据该数据块包含的有效字节长度,将该数据块划分为多个数据子单元,当该数据块中最后一个数据子单元包含的字节数不大于一片DDR每次处理的字节长度时,将该最后一个数据子单元与下一数据块中第一个数据子单元中相应字节的数据拼接,写入该组DDR SDRAM中。由于在本发明实施例中当通过每组DDR进行读写操作时,为了避免DDR资源的浪费,将数据进行拼接,从而提高了 DDR读写的效率,提高了缓存资源的利用率。上述说明示出并描述了本发明的优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
权利要求
1.一种基于双倍速率同步动态随机存储器DDR SDRAM进行数据写操作的方法,所述数据写操作通过多组DDR SDRAM实现,其特征在于,包括 根据链表节点的大小,将接收到的报文划分为对应长度的多个数据块; 针对每个数据块,根据该数据块包含的有效字节长度,以及每组双倍速率同步动态随机存储器每个周期处理的字节长度,将该数据块划分为多个数据子单元; 判断该数据块划分后的最后一个数据子单元包含的有效字节数,是否不大于一片DDRSDRAM每个周期处理的字节长度, 当判断结果为是时,根据每组DDR SDRAM每个周期处理的字节长度,将该最后一个数据子单元与下一数据块中第一个数据子单元中相应字节的数据拼接,写入该组DDR SDRAM中。
2.如权利要求I所述的方法,其特征在于,所述判断该数据块划分后的最后一个数据子单元包含的有效字节数,是否不大于一片DDR SDRAM每次处理的字节长度之前,所述方法还包括 判断所述数据块包含所述报文的报文尾信息。
3.如权利要求I所述的方法,其特征在于,所述写入该组DDRSDRAM中包括 将所述最后一个数据子单元包含的字节,写入该组DDR SDRAM的第一片DDR SDRAMjf该第一数据子单元中相应字节的数据写入该组DDRSDRAM的第二片DDR SDRAM中。
4.一种基于双倍速率同步动态随机存储器DDR SDRAM进行数据读操作的方法,所述数据读操作通过多组DDR SDRAM实现,其特征在于,包括 根据每组双倍速率同步动态随机存储器每个周期处理的字节长度,以及接收到的读命令和读地址,确定该读地址对应的DDR每个数据子单元的物理地址; 当数据子单元为报文的第一个数据子单元,且所述数据子单元为拼接后的数据子单元时,从缓存管理的暂存空间读取包含该报文的报文头信息的数据子单元,并与从之后从DDRSDRAM读取出的数据合并; 当该数据子单元包含该报文的报文尾信息,且所述数据子单元为拼接后的数据子单元时,从DDR SDRAM的相应地址空间读取包含该报文的报文尾信息的数据子单元,取出该数据子单元的高字节部分与之前读取的数据合并,得到读出的报文。
5.如权利要求4所述的方法,其特征在于,所述从缓存管理的暂存空间读取包含该报文的报文头信息的数据子单元包括 判断包含该报文的报文头信息的数据子单元,是否写入了 DDR SDRAM中; 当该数据写入了 DDR SDRAM中时,从读暂存中读取包含该报文的报文头信息的数据子单元,否则,从写暂存中读取包含该报文的报文头信息的数据子单元。
6.如权利要求4所述的方法,其特征在于,所述从DDRSDRAM的相应地址空间读取包含该报文的报文尾信息的数据子单元包括 判断包含该报文的报文尾信息的数据子单元,是否写入了 DDR SDRAM中; 当该数据写入了 DDR SDRAM中时,从读暂存中读取包含该报文的报文尾信息的数据子单元,否则,从写暂存中读取包含该报文的报文尾信息的数据子单元。
7.一种基于双倍速率同步动态随机存储器DDR SDRAM进行数据写操作的装置,其特征在于,所述装置包括 队列管理模块,用于根据链表节点的大小,将接收到的报文划分为对应长度的多个数据块; 缓存管理模块,针对每个数据块,根据该数据块包含的有效字节长度,以及每组DDRSDRAM每个周期处理的字节长度,将该数据块划分为多个数据子单元,判断该数据块划分后的最后一个数据子单元包含的有效字节数,是否不大于一片DDR SDRAM每次处理的字节长度,当判断结果为是时,根据每组DDR SDRAM每个周期处理的字节长度,将该最后一个数据子单元与下一数据块中第一个数据子单元中相应字节的数据拼接,将拼接后组成的数据子单元发送给DDR控制器模块; DDR控制器模块,用于将接收到的数据子单元写入每组DDR SDRAM中。
8.如权利要求7所述的装置,其特征在于,所述缓存管理模块,还用于判断所述数据块是否包含报文的报文尾信息。
9.一种基于双倍速率同步动态随机存储器DDR SDRAM进行数据读操作的装置,其特征在于,所述装置包括 队列管理模块,用于发出对当前队列的读命令和读地址; 缓存管理模块,用于针对每个读命令,根据读命令包含的有效字节长度,以及每组双倍速率同步动态随机存储器每个周期处理的字节长度,将该读地址转换成DDR每个数据子单元的物理地址;当前读操作读取的为报文的第一个数据子单元,且所述数据子单元为拼接后的数据子单元时,从缓存管理的暂存空间读取包含该报文的报文头信息的数据子单元,并与从之后从DDR SDRAM读取出的数据合并;当该数据子单元包含该报文的报文尾信息,且所述数据子单元为拼接后的数据子单元时,从DDR SDRAM的相应地址空间读取包含该报文的报文尾信息的数据子单元,取出该数据子单元的高字节部分与之前读取的数据合并,得到读出的报文; DDR控制器模块,用于从DDR SDRAM的相应地址空间读取包含该报文的数据子单元。
10.如权利要求9所述的装置,其特征在于,所述DDR控制器模块具体用于,判断包含该报文的报文头信息的数据子单元,是否写入了 DDR SDRAM中,当该数据写入了 DDR SDRAM中时,从读暂存中读取包含该报文的报文头信息的数据子单元,否则,从写暂存中读取包含该报文的报文头信息的数据子单元。
11.如权利要求9所述的装置,其特征在于,所述DDR控制器模块具体用于,判断包含该报文的报文尾信息的数据子单元,是否写入了 DDR SDRAM中,当该数据写入了 DDR SDRAM中时,从读暂存中读取包含该报文的报文尾信息的数据子单元,否则,从写暂存中读取包含该报文的报文尾信息的数据子单元。
12.—种基于双倍速率同步动态随机存储器DDR SDRAM进行数据读写操作的系统,其特征在于,所述系统包括如权利要求7 8任一所述的写操作的装置,和如权利要求9 11任一所述的读操作的装置。
全文摘要
本发明公开了一种基于DDR SDRAM进行数据读写操作的方法、系统及装置,用以解决基于DDR进行读写时效率不高,不利于提高缓存利用率的问题。该方法根据链表节点的大小,将接收到的报文划分为对应长度的多个数据块,针对每个数据块,将该数据块划分为多个数据子单元,当该数据块中最后一个数据子单元包含的字节数不大于一片DDR每次处理的字节长度时,将该最后一个数据子单元与下一数据块中第一个数据子单元中相应字节的数据拼接,写入该组DDR SDRAM中。由于在本发明实施例中当通过每组DDR进行读写操作时,为了避免DDR资源的浪费,将数据进行拼接,从而提高了DDR读写的效率,提高了缓存资源的利用率。
文档编号H04L12/56GK102684976SQ201110057810
公开日2012年9月19日 申请日期2011年3月10日 优先权日2011年3月10日
发明者吕华磊, 汪友宝 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1