宽带数据通信芯片的报文存储方法

文档序号:6363069阅读:238来源:国知局
专利名称:宽带数据通信芯片的报文存储方法
技术领域
本发明涉及芯片技术领域,尤其涉及一种宽带数据通信芯片的存储方法。
背景技术
随着局域网的迅猛发展,以态网已经成为目前使用最为广泛的一种组网方式。以态网的传输带宽也从原来是10M以态网发展到百兆以态网、干兆以态网以及10G的以态网。
处理如此大带宽的以态网报文,没有硬件转发芯片的支持是没有办法做到的。海量的数据、如此高的带宽、复杂的处理任务,对芯片的性能也提出了很高的要求,不仅要求芯片有很大的转发带宽,还得有很好的流量调度能力,否则报文阻塞、报文突发等问题将极大地降低芯片的转发性能,而芯片的流量调度能力是以芯片有足够的报文缓冲区为基础的,没有足够的报文缓冲区,芯片的许多处理机制将无法正常地发挥作用。
报文缓冲区的实现是以一定的数据结构表现出来的,即芯片是按照某种特定的分区方式对报文进行储存与读取的。由于普通以态网报文的长度64~1518字节,因此传统的分区方式多是以2048字节为单位对缓冲区分区,按每个报文申请一个2K字节的缓冲区来实现报文缓存。由于现在的以态网报文很可能带VLAN标签等字节,最长报文一般可达1522字节或者更长,但是一般不会超过1536字节。这样,以态网报文的长度可以控制在64~1536字节内变化。
最长报文为1536字节,缓冲区分区2048字节,这就意外着每个报文分区中至少还有512字节是永远不可能被用到的。也就是说,在整个缓冲区中,有至少25%的存储器单元是被浪费掉的。在1MB的SSRMA中,就有256KB的空间被浪费掉,这浪费掉的部分其存储容量相当于XILINX的FPGA中的64个4Kbit的BloekRam的容量的总和,而30万门规模的逻辑芯片XC2S300E内部才有16个4Kbit的BlockRam。如果我们考虑动辄数百兆字节的SDRAM,那么这种浪费将会更加惊人。
如果能够将这种目前被浪费掉的存储单元利用起来,能够将我们的存储空间整整扩大1/3,这在我们存储器大小比较紧张的时候无疑能够为我们的设计带来很大的好处。但是,由于这些被浪费掉的存储单元在整个存储区域中地址是不连续的,是以碎片的形式出现的,直接加以利用非常困难,不仅造成寻址上十分麻烦,而且会因为这一点成本上的节省导致整个系统复杂性的增大,从而使系统的可靠性稳定性受到威胁。显然,要以牺牲系统可靠性稳定性为代价的扩展存储区大小是不可取的。

发明内容
本发明的目的在于提供一种宽带数据通信芯片的存储方法,在进行以态网处理的系统中,针对常用的2K字节分区中有25%的区域被浪费的现象,以一种简洁、可靠、易于实现的方式对缓冲区中的碎片空间加以重新利用,达到提高存储区空间利用效率,增加存储区可利用空间的目的。
本发明的宽带数据通信芯片的报文存储方法,其步骤包括1、定义逻辑地址和物理地址的宽度,逻辑地址宽度比物理地址宽度多一位,分别为N+1位和N位;2、将物理地址的存储区域按照2048字节为单位进行规则分区,用基址加偏移量的方式进行寻址;其中偏移量的寻址空间限定在1536字节以内;3、设定每个分区的低1536字节用于存储报文,剩余的512字节作为扩展区域;4、定义最高位为‘0’/‘1’的逻辑地址寻址范围对应报文存储区域;5、定义最高位为‘1’/‘0’的逻辑地址寻址范围对应扩展存储区域;6、建立逻辑地址和物理地址的映射机制,通过该映射机制实现扩展区域地址的储存单元连续、基址连续、偏移量连续。
上述映射机制为最高位为‘0’/‘1’的逻辑地址与物理地址的映射机制为直接映射将逻辑地址的低N位作为N位物理地址的值;最高位为‘1’/‘0’的逻辑地址与物理地址为缩位映射将逻辑地址的比特8和比特9之间插入“11”,然后再取低N位作为N位物理地址的值。
最高位为‘0’/‘1’的逻辑地址映射的N位物理地址的低11位小于“1100000000”。
对每个最高位为‘0’的逻辑地址,判断其偏移量部分(低11位)是否大于“11000000000”,如果是,则需要将此时的写使能禁止掉,如果否,则允许写使能有效。
最高位为‘0’/‘1’的逻辑地址其偏移量部分大于“11000000000”时,通过中断上报给CPU,发出告警信息。
本发明通过将物理地址映射成为逻辑地址,不仅拥有了连续的基址、连续的偏移地址,同时也形成了地址连续的扩展区域,虽然该扩展部分存储单元在物理位置上是离散的,但是在使用上面,其对应的逻辑地址却是连续的一片区域。利用这片连续的扩展区域,可以完成很多的储存任务,比如512KB的存储器扩展出来的扩展区域拥有128KB的储存空间,可以完成一个中等规模的芯片的表项的存储,也就是说,利用该项技术,可以将一般逻辑设计中专门用于表项存储的存储器给节省下来,这不仅仅是节省了该存储器的成本,而且为逻辑芯片减少了一个存储器接口,节省了接口个引脚,缩小了封装,降低了封装成本,而且节省了设计该接口的逻辑量,减少了资源耗费,同时,也增加了系统的稳定性,因为逻辑器件最容易出问题的地方就是接口部分,因为接口部分的时钟系统、建立保持时间、外界的电磁干扰,都可能影响到整个系统的稳定性。由于上述方法在实现上面的易实现性,使得它几乎不对整个系统增加什么耗费就可以实现,而且设计上面十分简单,几乎不增加什么代码量,数行语句就可以完成。而且,利用该方法十分方便,不会因为利用了该方法来增加存储区域、减少了成本,就必须在其它方面做成一些牺牲。


图1逻辑地址与物理地址映射关系2逻辑地址与物理地址映射机制3逻辑地址的结构示意图
具体实施例方式对于一个缓冲区为2n字节的存储区,寻址空间为0~2n-1单元(以位宽为8为例),按照2048字节为单位进行分区后,每个数据单元的寻址地址可以分为基址(高位地址)和偏移地址(低位地址)两部分组成,其中基址的范围与存储区的大小有关,为0~2n-11-1;偏移地址的范围与分区的大小有关,此处为2048字节,因此寻址范围为0~211-1,即0x000~0x7FF。由于以态网报文最长限定在1536字节以内,因此,偏移地址的实际使用范围为0x000~0x5FF,而0x600~0x7FF单元是被浪费掉的空间,共512个单元。整个缓冲区中,所有被浪费掉的单元呈碎片形式基址 偏移地址 物理地址(HEX) 物理地址(BIN)0x0000x600~0x7FF 0x00600~0x007FF 0000-0000-0110-0000-0000~0000-0000-0111-1111-11110x0010x600~0x7FF 0x00E00~0x00FFF 0000-0000-1110-0000-0000~0000-0000-1111-1111-11110x0020x600~0x7FF 0x01600~0x017FF 0000-0001-0110-0000-0000~0000-0001-0111-1111-11110x0030x600~0x7FF 0x01E00~0x01FFF 0000-0001-1110-0000-0000~0000-0001-1111-1111-11110x0040x600~0x7FF 0x02600~0x027FF 0000-0010-0110-0000-0000~0000-0010-0111-1111-11110x0050x600~0x7FF 0x02E00~0x02FFF 0000-0010-1110-0000-0000~0000-0010-1111-1111-11110x0060x600~0x7FF 0x03600~0x037FF 0000-0011-0110-0000-0000~0000-0011-0111-1111-11110x0070x600~0x7FF 0x03E00~0x03FFF 0000-0011-1110-0000-0000~0000-0011-1111-1111-11110x0080x600~0x7FF 0x04600~0x047FF 0000-0100-0110-0000-0000~0000-0100-0111-1111-11110x0090x600~0x7FF 0x04E00~0x04FFF 0000-0100-1110-0000-0000~0000-0100-1111-1111-1111…… …… …… …… …… …… ………… …… …… …… ………………0x0000x600~0x7FF 0x05E00~0x05FFF 1111-1111-0110-0000-0000~1111-1111-0111-1111-11110x1FF0x600~0x7FF 0x06600~0x067FF 1111-1111-1110-0000-0000~1111-1111-1111-1111-1111仔细分析上面的二进制全地址可以发现,该地址中比特[9:10]一直为“11”,在整个碎片地址范围内是一直保持不变化的,如果将这两位直接从地址中“去掉”,例如将“0000-0100-1110-0000-0000”中的比特[9:10]去掉则得到“0000-0100-10-0000-0000”。那么,得到的结果将组成一个完全连续的地址列表。利用这个特点,在地址上只需进行简单的处理,就能够得到一个完全连续的新地址区域。
为了实现这种设想,还必须设定一种机制将1536字节内的需直接寻址的地址单元和通过地址整合后的碎片单元的间接寻址的地址单元区分开来,这样才能够正确加以应用。为了阐述方便,先定义以下名词物理地址指存储器的n根地址线说构成的地址,直接一一对应存储器单元。
逻辑地址指芯片内部n+1根地址线所构成的地址,通过转换成物理地址后对应存储器单元。
物理地址和逻辑地址的关系是在有效取值范围内一一对应。逻辑地址的最高位用来指示该逻辑地址对应着物理地址中的报文部分(即每个分区的低1536字节区域)还是碎片部分(即每个分区的高512字节)。同时为了描述方便,下面均以一512K×8bit的存储器为例进行说明。
具体步骤为1、定义逻辑地址和物理地址的宽度,逻辑地址宽度比物理地址宽度多一位。
2、将逻辑地址的报文存储区域按照2048字节为单位进行规则分区,用基址加偏移量的方式进行寻址(图3)。其中偏移量的寻址空间限定在1536字节以内。
3、约定每个分区的低1536字节用于存储报文,剩余的512字节保留作为扩展备用。
4、通过逻辑地址和物理地址的映射(见图1),实现扩展区域地址的按储存单元连续、基址连续、偏移量连续。
5、定义最高位为‘0’的逻辑地址寻址范围对应报文存储区域。此时,逻辑地址与物理地址的映射机制为直接映射(见图2),直接将逻辑地址的低N位作为N位物理地址的值即可。需要特别注意的是,该N位物理地址的低11位必须小于“1100000000”,即允许的报文长度值不能超过1536字节。否则,它指向的物理地址将是分区的后面512字节,而此时这512字节已经被用着了扩展的区域,如果从此处访问该数据单元势必引起误操作,因此,在可能的情况下,最好对该条件进行监控,避免不必要的错误。后面步骤7将会给出监控方法。
6、定义最高位为‘1’的逻辑地址寻址范围对应扩展存储区域。此时,逻辑地址与物理地址的映射机制为缩位映射(见图2),直接将逻辑地址的比特8和比特9之间插入“11”,然后再取低N位作为N位物理地址的值即可。此时需要注意的是逻辑地址的扩展区域的有效寻址范围,如果逻辑地址超出了有效范围,将会出现地址溢出,寻址到不正确的单元,不过这种情况很难出现,因为正常的存储器应用也必须注意这个问题,并非是采用该方法才需要注意的。
7、为了监控步骤5所述的地址越界,在逻辑实现时增加一个写使能的控制机制,即对每个最高位为‘0’的逻辑地址,判断其偏移量部分(低11位)是否大于“11000000000”,如果是,则需要将此时的写使能禁止掉,如果否,则允许写使能有效。通过这样一个简单的判断机制,即可将上述的地址越界危险给避免掉,同时还可以通过中断上报给CPU,提醒工程师该处有错误出现。
下面以一个以态网交换芯片的设计作为实施例。
该设计需要缓存256个报文的容量,若采用512KB的存储器刚好能够满足其缓存的要求,但是,作为以态网的交换芯片,肯定是需要MAC地址学习和查找功能的,而业界实现MAC地址的学习和查找多是采用HASH查找的方式来实现,HASH查找所需的HASH地址表一般需要32KB或者更大,另外还有一些表项加起来也需要32KB,因此,该设计还需要64KB的存储空间,如果用片内的BlockRam,则需要128块4Kbit的BlockRam,那么加上必须的内部FIFO所要的BlockRam,那么至少要140个BlockRam才能装得下,很明显,用片内BlockRam的方案在成本上是非常昂贵的。那么如果再外挂一片片外存储器的话,又会带来另外的一些问题,逻辑芯片的接口增加一个,增加系统的复杂性;新增的40多个管脚,可能会导致更换逻辑芯片的封装,以满足管脚数目上的需求;新增的一片片外存储器,在让单板的尺寸增加的同时,单板故障的可能性也得到了增加。还有另外一个办法,就是增加512KB的存储器容量到1MB。但是为了64KB而增加512KB,这显然在成本上也是不经济的。而如果采用本发明,则可以很好地解决上述的问题,通过碎片地址的利用,可以扩展出128KB的扩展空间,在满足了64KB的表项需求后,还有剩余的64KB连续的地址空间。
本发明的具体实现也非常简单,在芯片设计时都不用增加专门的模块,只需要在原来的存储器接口模块处增加几句地址映射的语句就可以实现了。
逻辑地址映射成物理地址PINSRMADR[18:0]<=SRMADR[18:0]when SRMADR[19]=`0′else SRMADR[16:9]&″11″&SRMADR[8:0];其中PINSRMADR表示为物理地址,SRMADR表示为逻辑地址;该语句的含义就是当逻辑地址的最高位为‘0’时,直接取逻辑地址的低19位构成19位的物理地址,否则在逻辑地址的比特8和比特9之间插入“11”,然后取低19位值构成19位的物理地址。
禁止越界地址写操作的监控机制PINSRMWEN<=SRMWEN when(SRMADR[19]=`0′andSRMADR[10:9]=″11″)else`0′;其中PINSRMWEN表示输出到管脚的存储器写使能信号,高有效;SRMWEN为逻辑内部的存储器写使能信号;该语句的含义是当逻辑地址的比特10和比特9为“11”而逻辑地址的最高位为‘0’时,禁止此时的写使能。因为此时的逻辑地址不是逻辑地址取值的有效范围。
权利要求
1.一种宽带数据通信芯片的报文存储方法,其步骤包括1)定义逻辑地址和物理地址的宽度,逻辑地址宽度比物理地址宽度多一位,分别为N+1位和N位;2)将物理地址的存储区域按照2048字节为单位进行规则分区,用基址加偏移量的方式进行寻址;其中偏移量的寻址空间限定在1536字节以内;3)设定每个分区的低1536字节作为存储报文区域,剩余的512字节作为扩展存储区域;4)定义最高位为‘0’/‘1’的逻辑地址寻址范围对应报文存储区域;5)定义最高位为‘1’/‘0’的逻辑地址寻址范围对应扩展存储区域;6)建立逻辑地址和物理地址的映射机制,通过该映射机制实现扩展区域地址的储存单元连续、基址连续、偏移量连续。
2.如权利要求1所述的宽带数据通信芯片的报文存储方法,其特征在于所述映射机制为最高位为‘0’/‘1’的逻辑地址与物理地址的映射机制为直接映射将逻辑地址的低N位作为N位物理地址的值;最高位为‘1’/‘0’的逻辑地址与物理地址为缩位映射将逻辑地址的比特8和比特9之间插入“11”,再取低N位作为N位物理地址的值。
3.如权利要求1或2所述的宽带数据通信芯片的报文存储方法,其特征在于所述最高位为‘0’/‘1’的逻辑地址映射的N位物理地址的低11位小于“1100000000”。
4.如权利要求3所述的宽带数据通信芯片的报文存储方法,其特征在于对每个最高位为‘0’的逻辑地址,判断其偏移量部分是否大于“11000000000”,如果是,则将此时的写使能禁止掉;如果否,则允许写使能有效。
5.如权利要求4所述的宽带数据通信芯片的报文存储方法,其特征在于最高位为‘0’/‘1’的逻辑地址的偏移量部分大于“11000000000”时,通过中断上报给CPU,发出告警信息。
全文摘要
本发明涉及一种宽带数据通信芯片的存储方法,其步骤包括定义逻辑地址和物理地址的宽度,逻辑地址宽度比物理地址宽一位;将物理地址的存储区域按2048字节为单位进行分区,用基址加偏移量的方式进行寻址;其中偏移量的寻址空间在1536字节以内;设定每分区的低1536字节为存储报文区域,剩余512字节为扩展存储区域;定义最高位为‘0’/‘1’的逻辑地址寻址范围对应报文存储区域;定义最高位为‘1’/‘0’的逻辑地址寻址范围对应扩展存储区域;建立逻辑地址和物理地址的映射机制,通过该映射机制实现扩展区域地址的储存单元连续、基址连续、偏移量连续。本发明对缓冲区的碎片空间进行利用,提高存储区空间利用效率,增加存储区可用空间。可应用于芯片技术领域。
文档编号G06F12/06GK1527205SQ0313465
公开日2004年9月8日 申请日期2003年9月24日 优先权日2003年9月24日
发明者龙刚, 龙 刚 申请人:港湾网络有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1