一种提高sdram处理带宽的方法

文档序号:7599649阅读:304来源:国知局
专利名称:一种提高sdram处理带宽的方法
技术领域
本发明涉及采用外置SDRAM存储器进行数据包存储转发的通讯技术领域,尤其涉及针对目前净荷和状态数据分离存储的情况下,提出一种净荷与状态数据交织存放以提高SDRAM的带宽利用率的方法。
背景技术
在对以太网包或者IP包这种带有包头包尾的数据包进行存储转发时,必须使用大容量的外部存储器。一般常用的大容量存储器包括同步动态存储器SDRAM(Synchronous Dynamic Random Access Memory)或者同步静态随机存取存储器SSRAM(Synchronous Static Random AccessMemory),其中SDRAM因为价格较低而应用范围很大,但是它也存在着控制复杂、读写开销较大的缺点,从而影响SDRAM的读写带宽;存储量较大的SDRAM存储器数据宽度为32bit或者64bit,对于目前经常处理的以太网包或者IP包这种带外包头、包尾、有效信号、字节有效信号的处理总线来说,如果采用简化的读写仲裁方案的话,需要浪费数据存储空间放置带外信号,导致空间利用率降低,间接导致成本增加,因此需要提供一种效率较高的存储方式进行合理的数据存储。
目前存在的利用SDRAM对数据包进行存储转发的方案中,一般将SDRAM分成两个部分存储数据正常包数据和数据包长度等状态数据。对SDRAM划分成两个数据区进行操作带来的最直接问题就是需要管理两套指针正常数据区的读/写指针和状态数据区读/写指针,因此在进行读写操作时比较复杂。
在进行正常包数据的读写时,将数据放入正常包数据区;在写操作中,当包头信号wr_sop出现时,将对当前包进行计数,然后进行写操作的突发;当包尾信号wr_eop出现时,当前包计数结束,接着将当前包的长度打包成状态数据放入状态数据区;在读操作中,首先判断是否是上一个包的结束,如果是的话将给出包头rd_sop,然后从状态数据区中取出该包的长度信息进行减法计数,如果正在读取的数据是当前包的中间数据,则继续进行读操作的突发,当当前包计数器计数到0时,给出包尾信号rd_eop。因此对SDRAM进行读写仲裁需要多个附加状态。
详细的SDRAM读写控制流程图参见图1所示,在空闲IDLE态时,如果SDRAM准备好以后可以进行SDRAM的突发操作。对于读操作而言,如果上次从SDRAM净荷数据区中读出的是一个完整数据包的话,需要进入状态数据读周期,从SDRAM状态数据区中读出下一个数据包的状态数据,然后判断出口FIFO是否存在空闲区间进行净荷数据的突发,当出口FIFO存在空闲区间时,进行净荷数据读突发,否则在IDLE态继续等待直到该数据包被突发完毕。对于写操作而言,同样在IDLE态等待SDRAM是否准备好,如果SDRAM准备好同时入口FIFO中存在突发数据的话将进入到SDRAM写突发状态,在突发过程中,如果一次写突发结束的话,重新进入IDLE态等待下次仲裁;如果写突发到当前数据包结束的话,还需要将状态数据写入状态数据区中,同时进入IDLE等待下次突发。
从图1的处理流程图可以看出,对SDRAM进行一次读写仲裁需要遍历多个状态,从而导致读写周期太长,该流程在每次读写操作之间需要等待空余周期太多,导致SDRAM读写带宽小,因此不可避免SDRAM读写带宽的利用率低下。
因此,现有技术存在缺陷,而有待于改进和发展。

发明内容
本发明的目的在于提供一种提高SDRAM处理带宽的方法,提出一种简化SDRAM控制和读写开销的算法,从而可以有效提高SDRAM的读写带宽利用率。
本发明的技术方案如下一种提高SDRAM处理带宽的方法,其基于现场可编程门阵列的实现提出,其SDRAM读写仲裁连接有前端FIFO,以及帧头搜索和后端FIFO,并同时连接有外置SDRAM;所述方法包括以下步骤a)采用简化的存储方案,将数据包的状态数据和净荷数据进行在SDRAM中进行交织存储,在处理写入的包头信号时,预留一个地址单元存放当前包的包长状态数据;b)在从SDRAM读出数据时,需要搜索状态数据标志进行定帧;一旦搜索到状态数据,进行包长减计数,当包长计数等于0时,当前包突发完毕,取出下一个数据包的状态数据,进行下一次包突发。
所述的方法,其中,所述步骤a)还包括a1)首先需要一个入口FIFO对突发进入的数据进行包长计数,如果进入的是包头数据,预留一个FIFO空间放置当前数据包的长度,当计数到包尾信号之后停止包长计数;a2)当所述突发进入的数据包完全进入FIFO,即当前进入的是包尾数据时,在当前的计数值前面附加一个特殊的标志信号便于后面的帧头搜索,如此将带外包头和包尾信号形成带内状态数据接着净荷数据的可存储状态。
所述的方法,其中,所述步骤b)还包括b1)可存储的数据经过SDRAM的写仲裁放入外置的SDRAM中进行缓存,在其读突发周期中,从所述SDRAM中读出的数据首先经过帧头搜索,如果搜索到规定的特殊标志信号以后,进入同步状态,并再生出带外的包头信号和数据有效标志信号,同时进行包长减计数,减计数为0时再生出包尾信号;b2)再生出的数据再次写入出口FIFO中,按照包的方式突发出去。
所述的方法,其中,所述步骤a)中的简化存储方案包括以下步骤c1)存储控制从空闲态在所述SDRAM准备好后进入仲裁就绪状态,并在读或写就绪后,进入仲裁状态判决进行读或写;c2)所述读状态在该读突发结束或所述SDRAM空时终止,并返回端口轮询,所述SDRAM处于空闲态;c3)所述写状态在该写突发结束或数据无效时终止,并返回端口轮询,所述SDRAM处于空闲态中。
所述的方法,其中,所述SDRAM的宽度为16位、32位或64位。
本发明所提供的一种提高SDRAM处理带宽的方法,采用上述技术方案,由于采用了对SDRAM的读写仲裁方案大大简化的方法,首先对SDRAM不用进行分区处理,因此在进行读/写操作时只需管理一套指针;其次,在进行SDRAM的写操作时,无需考虑写到包尾时的不同处理,只需进行突发写操作;同理,在进行读操作时,不用从状态数据区读取包长数据,直接从SDRAM进行突发操作即可。因此对SDRAM读写操作的简化,导致了SDRAM读写开销的减少,也就带来了提高SDRAM读写带宽利用率提高的好处。


图1是现有技术的SDRAM仲裁流程图;图2为本发明的提高SDRAM处理带宽的方法中提出的FPGA硬件实现框图;图3为本发明的所述提高SDRAM处理带宽的方法中提出的数据交织存放图;
图4为本发明的所述提高SDRAM处理带宽的方法提出的数据交织存放时的处理时序图;图5示出的是本发明方法提出的简化处理流程图。
具体实施例方式
以下将结合附图,对本发明的各较佳实施例加以详细描述。
本发明的一种提高SDRAM处理带宽的方法,是基于在现场可编程门阵列FPGA(Field Programmable Gate Array)中的实现提出的,采用简化的存储方案,将数据包的状态数据和净荷数据进行在SDRAM中进行交织存储,这样在写数据包时无需区分状态数据和净荷数据,只需在处理写入的包头信号时,预留一个地址单元存放当前包的包长等状态数据;在从SDRAM读出数据时,需要搜索状态数据标志进行定帧。一旦搜索到状态数据,进行包长减计数,当包长计数等于0时,当前包突发完毕,取出下一个数据包的状态数据,进行下一次包突发。
完整的FPGA硬件实现结构图参见图2,示出了提高带宽利用率后的模块图。首先需要一个入口FIFO对突发进入的36bit数据进行包长计数,同时如果进入的是包头数据的话,需要预留一个FIFO空间放置当前数据包的长度;当突发进入的数据包完全进入FIFO,既是当前进入的是包尾数据的话,在当前的计数值前面附加一个特殊的标志信号便于后面的帧头搜索。这样突发过来的36bit带外包头和包尾信号转换成了32bit的带内状态数据接着净荷数据的状态。然后32bit的数据经过SDRAM的读写仲裁放入外置的SDRAM中进行缓存。按照图2中的仲裁方式进行读突发周期中,从SDRAM中读出的32bit数据首先经过帧头搜索,如果搜索到规定的特殊标志信号以后,进入同步状态,并再生出带外的包头信号和数据有效标志信号,同时进行包长减计数,减计数为0时再生出包尾信号。这样再生出的36bit数据再次写入出口FIFO中,最后按照包的方式突发出去,循环处理数据。
所述前端FIFO中写入的数据结构可以是带外的1个bit的包头SOP信号、一个bit的包尾EOP信号、2个bit的字节有效信号、32bit的数据信号。在写入前端FIFO时需要进行特殊的预留操作,为状态数据留出一个地址空间供其回插;在SDRAM读写仲裁控制下,从前端FIFO中读出数据写入外置SDRAM中,由于采用简化的仲裁方式,可以提高效率;如果后端FIFO中存在空闲空间,SDRAM读写仲裁将进入读突发状态,从SDRAM中读出数据,经过帧头搜索以后再生出包头SOP信号、包尾EOP信号、字节有效信号,写入后端FIFO中。
这种状态数据和净荷数据交织的存储方式参见图3,SDRAM前端FIFO数据存储方式,首先存放的是状态信息以32-bit数据总线为例,包括了SOP、EOP和packet lenth信息,然后是传送净荷报文,包a、b、c的状态信息和净荷数据交织存放。图3所示为应用于本发明方法的简化SDRAM仲裁方法方式下的数据存储方案。对数据包a来说,首先存放的是状态字节,具体来说就是20个bit的状态标志、1个bit的数据错误标志信号、2个bit的字节有效信号和9个bit的包长信息,紧跟着数据包a状态字节的是数据包a的所有净荷数据。然后是数据包b、数据包c。
采用FPGA具体实现时的处理时序参见图4,在本发明方法的技术方案中需要前端FIFO中预留一个地址空间存储状态字节的处理时序;该图中各信号代表的含义为CLK50表示时钟信号;wr_data、wr_sop、wr_eop分别表示写入前端FIFO的数据信号、包头、包尾信号;waddr_st、waddr_d、waddr分别表示应写入FIFO的状态字节地址、数据字节地址、实际操作的地址;pkg_st表示状态字节;wren表示写信号;wdata表示写入FIFO的数据。
在图中可以看出,在包尾数据D35到来时,需要多插入一个存储地址A36作为下一个数据包的状态字节存储。同时在包尾时将预留的一个写周期中,将状态字节作为该写周期的写入数据,同时将预留的状态地址作为该写周期的写地址写入FIFO中。
本发明的改进后的处理流程图参见图5,存储器处于空闲状态IDLE,在SDRAM准备好后,检查仲裁是否准备就绪。如果所述SDRAM还未准备好,则进行端口轮询,回到空闲状态IDLE;当读写就绪后,则进入仲裁状态,判断进行读或写状态;在仲裁决定读或写并且读或写就绪后进入读状态或写状态。在读状态中,直至该突发结束或所述SDRAM空,回到端口轮询状态,SDRAM进入空闲状态;或者在写状态,直至写突发结束或数据无效,回到端口轮询状态,SDRAM进入空闲状态。从该流程中可以看出,该改进方案无论在读操作还是写操作时均无须特殊处理数据包尾信号,而以前的处理方案在包尾时需要操作单独的状态字数据区间。这样在操作SDRAM时减少了读写操作之间的多余空闲周期,提高了操作效率。
本发明方法对现有技术方案的改进之处在于体现在对前端FIFO的改进。本发明方法在前端FIFO中进行了如下处理在从以太网传送来数据的包头信号SOP到来之后就进行包计数,当计数到包尾信号之后停止包长计数,然后将数据包长度加上特殊的标志后作为状态数据放入该包SOP前面的单元;同时写指针加一,预留一个单元作为下一个数据包的状态数据空间。
本发明的方法在作以下的变更后,还可以提供相近的功效对于处理的数据宽度,本发明实施例提出的是32bit宽度的SDRAM,同时可以应用于16bit、64bit等各种宽度的SDRAM中,而且前端和后端缓冲FIFO的深度可以根据具体的应用来调整,并不影响异步接口的实现。只是在缓冲能力上有所改变,深度越大,则缓冲能力越强。
本发明所提出的提高SDRAM处理带宽的方法并没有具体的SDRAM类型限制,可以是SDRAM也可以是DDR的SDRAM、或者是RLDRAM或者RLDRAMII类型等。
本发明方法还可以应用于各种在突发出数据时需要预先根据数据长度进行综合处理的场合。
总之,本发明的上述对具体实施例的描述是为说明技术方案的有益效果,描述较为具体,但不能因此而认为是本发明的专利保护范围的限制,本发明的专利保护范围应以所附权利要求为准。
权利要求
1.一种提高SDRAM处理带宽的方法,其基于现场可编程门阵列的实现提出,其SDRAM读写仲裁连接有前端FIFO,以及帧头搜索和后端FIFO,并同时连接有外置SDRAM;所述方法包括以下步骤a)采用简化的存储方案,将数据包的状态数据和净荷数据进行在SDRAM中进行交织存储,在处理写入的包头信号时,预留一个地址单元存放当前包的包长状态数据;b)在从SDRAM读出数据时,需要搜索状态数据标志进行定帧;一旦搜索到状态数据,进行包长减计数,当包长计数等于0时,当前包突发完毕,取出下一个数据包的状态数据,进行下一次包突发。
2.根据权利要求1所述的方法,其特征在于,所述步骤a)还包括a1)首先需要一个入口FIFO对突发进入的数据进行包长计数,如果进入的是包头数据,预留一个FIFO空间放置当前数据包的长度,当计数到包尾信号之后停止包长计数;a2)当所述突发进入的数据包完全进入FIFO,即当前进入的是包尾数据时,在当前的计数值前面附加一个特殊的标志信号便于后面的帧头搜索,如此将带外包头和包尾信号形成带内状态数据接着净荷数据的可存储状态。
3.根据权利要求2所述的方法,其特征在于,所述步骤b)还包括b1)可存储的数据经过SDRAM的写仲裁放入外置的SDRAM中进行缓存,在其读突发周期中,从所述SDRAM中读出的数据首先经过帧头搜索,如果搜索到规定的特殊标志信号以后,进入同步状态,并再生出带外的包头信号和数据有效标志信号,同时进行包长减计数,减计数为0时再生出包尾信号;b2)再生出的数据再次写入出口FIFO中,按照包的方式突发出去。
4.根据权利要求3所述的方法,其特征在于,所述步骤a)中的简化存储方案包括以下步骤c1)存储控制从空闲态在所述SDRAM准备好后进入仲裁就绪状态,并在读或写就绪后,进入仲裁状态判决进行读或写;c2)所述读状态在该读突发结束或所述SDRAM空时终止,并返回端口轮询,所述SDRAM处于空闲态;c3)所述写状态在该写突发结束或数据无效时终止,并返回端口轮询,所述SDRAM处于空闲态中。
5.根据权利要求1~4任意权项所述的方法,其特征在于,所述SDRAM的宽度为16位、32位或64位。
全文摘要
本发明的一种提高SDRAM处理带宽的方法,所述方法包括以下步骤a)采用简化的存储方案,将数据包的状态数据和净荷数据进行在SDRAM中进行交织存储,在处理写入的包头信号时,预留一个地址单元存放当前包的包长状态数据;b)在从SDRAM读出数据时,需要搜索状态数据标志进行定帧;一旦搜索到状态数据,进行包长减计数,当包长计数等于0时,当前包突发完毕,取出下一个数据包的状态数据,进行下一次包突发。本发明方法在进行读/写操作时只需管理一套指针;并写到包尾时只需进行突发写操作;在进行读操作时,直接从SDRAM进行突发操作即可,对SDRAM读写操作简化,读写开销减少,SDRAM读写带宽利用率提高。
文档编号H04L12/56GK1798091SQ20041009195
公开日2006年7月5日 申请日期2004年12月30日 优先权日2004年12月30日
发明者刘玉倩, 王晓磊 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1