首页> 中国专利> 高速数据交换接口的数据缓存器及其数据缓存控制方法

高速数据交换接口的数据缓存器及其数据缓存控制方法

摘要

本发明公开了一种高速接口数据缓存器及其数据缓存控制方法,该数据缓存器包括:用于在异步时钟域间缓冲数据的数据存储单元、用于控制数据存储单元的读写操作的缓存读写控制单元、用于与缓存读写控制单元交换控制和状态信息的控制状态寄存器和用于在数据存储单元位宽和总线位宽不相同时进行位宽转换的位宽转换单元。该数据缓存控制过程是:包处理引擎采用面向单元的方式向缓存读写控制单元发送读写指令;采用发送标志状态寄存器保存缓存器存储状态;用缓存器数据本身来控制数据发送;使用自增指针来实现有序的数据发送。本发明具有控制灵活性强和数据传输效率高的优点,用于网络处理器与数据链路层设备的多端口高速数据交换。

著录项

  • 公开/公告号CN101667451A

    专利类型发明专利

  • 公开/公告日2010-03-10

    原文格式PDF

  • 申请/专利权人 西安电子科技大学;

    申请/专利号CN200910023890.7

  • 发明设计人 郝跃;刘宇;马佩军;李康;史江义;

    申请日2009-09-11

  • 分类号G11C11/41;G11C11/413;

  • 代理机构陕西电子工业专利中心;

  • 代理人王品华

  • 地址 710071 陕西省西安市太白路2号

  • 入库时间 2023-12-17 23:35:48

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-11-09

    未缴年费专利权终止 IPC(主分类):G11C11/41 授权公告日:20120509 终止日期:20150911 申请日:20090911

    专利权的终止

  • 2012-05-09

    授权

    授权

  • 2010-04-28

    实质审查的生效 IPC(主分类):G11C11/41 申请日:20090911

    实质审查的生效

  • 2010-03-10

    公开

    公开

说明书

技术领域

本发明属于数据通信技术领域,涉及数据缓存,特别是一种用于高速交换接口的数据缓存器及其数据缓存控制方法,用于网络处理器与链路层设备的数据交换。

背景技术

随着网络通信技术的发展,互联网的数据流量呈现几何级数的增长,网络带宽从几年前的2Gbps已增长到现在的40Gbps,这对交换机和路由器数据处理能力的要求越来越高,另外,为适应不同的工作环境和网络服务质量QoS的要求,还要求网络交换设备具备更加灵活的可编程性和可扩展性,因此网络处理器由于兼具高灵活性和高性能已经逐渐代替了传统的通用处理器和专用集成电路而广泛应用于网络交换设备中。

图1为典型的网络处理器结构图,图1中的数据交换接口完成网络数据包的接收和发送功能,在网络处理器转发数据包的过程中,数据包的接收和发送占据了大量的时间,因此合理的设计数据交换接口部件可以有效的提高网络处理器的性能。数据交换接口在包处理引擎和网络处理器外部的OSI低层次设备之间传递数据包。一方面,包处理引擎通常工作在较高的频率以处理大量的数据包,而外部设备通常以较低的频率运行;另一方面,网络数据包具有突发性的特点,所以数据交换接口的一个重要的功能就是异步时钟域之间的数据缓冲。

目前用于异步时钟域数据接口的缓冲方法,主要是基于异步FIFO技术。异步FIFO是采用双端口RAM,读写时钟分别位于不同的时钟域,按照先入先出的顺序写入和读出数据。在面向网络数据包的缓冲时,异步FIFO结构存在以下缺陷:

1.FIFO缓冲器的数据存取严格按照先入先出的顺序,数据必须按照写入的顺序被读出,而网络处理器通常采用多个并行处理核心或线程处理多个端口的数据包转发,这种严格的顺序要求限制了并行处理系统面向多端口处理的灵活性;

2.FIFO的存储状态是半透明的,外界只能通过空满标志或者半满半空等信号来获得FIFO的基本存储状态,且这些标志的产生需要很复杂的逻辑电路,诸如格雷码转换、地址比较运算等。

3.网络处理器对网络数据包的处理通常以块传输的方式进行,比如执行一次接收需要接收64字节的网络数据,这种块传输能够适应IP数据包的特点,而FIFO的存取单位与RAM的数据宽度相同,一个数据存储单元只能是32位或64位这种较小的长度,不利于支持块传输。

发明内容

本发明的目的在于针对传统的基于异步FIFO缓冲器的数据缓存在用于网络处理器数据交换接口时存在的不足,提供一种高速数据交换接口的数据缓存器及其数据缓存控制方法,以使得数据在缓存中的写入和读取具有较高的灵活性,更加适用于多线程多处理器并行处理的要求和更好的支持多端口的数据交换,且在无需复杂的空满标志产生逻辑的条件下实现存储状态的全透明,同时适应IP数据包的结构特点和满足块传输的要求。

为实现上述目的,本发明提供的高速接口数据缓存器,包括:数据存储单元、缓存读写控制单元、位宽转换单元,控制和状态寄存器单元,该缓存读写控制单元与控制和状态寄存器单元双向连接,并向数据存储单元提供控制信号,该数据存储单元的数据写入和读出通过位宽转换单元后连接到外部数据总线,其中:

数据存储单元,采用两块位宽为64比特的双端口静态随机存储器SRAM构成,两块SRAM存储器分别作为接收缓存器和发送缓存器;

位宽转换单元,包括第一位宽转换模块,位于发送缓存器的数据写入端口,用于将数据由内部总线的32位位宽转换为发送缓存器的64位位宽;第二位宽转换模块,位于发送缓存器的数据读出端口,用于将数据由发送缓存器的64位位宽转换为外部数据总线位宽;第三位宽转换模块,位于接收缓存器的数据读出端口,用于将数据由接收缓存器的64位位宽转换为内部总线的32位位宽;第四位宽转换模块,位于接收缓存器的数据写入端口,用于将数据由外部数据总线位宽转换为接收缓存器的64位位宽。

控制状态寄存器单元,包括发送标志状态寄存器、接收控制寄存器和接收状态寄存器,该发送标志状态寄存器用于存储发送缓存器各个单元的数据有效标志,该接收控制寄存器用于接受包处理引擎的写接收缓存器指令,产生接收数据的控制信息,该接收状态寄存器用于保存数据接收的状态信息。

所述的每块SRAM存储器均进行单元划分,每个单元具有80字节的存储空间;每个单元的存储空间中有64字节用来存放常规的网络数据包,另外16字节用来存放控制信息、状态信息和扩展数据。

为实现上述目的,本发明提供的高速接口数据缓存控制方法,包括如下步骤:

a.接收控制寄存器获得包处理引擎发出的数据接收控制信息,接收缓存写控制模块在该控制信息的控制下从外部数据总线接收数据并存入接收缓存器,并将接收信息写入接收状态寄存器;

b.包处理引擎读取接收状态寄存器,根据读取的信息发出读接收缓存器指令,接收缓存读控制模块得到指令后将数据从接收缓存器读出并发送给包处理引擎;

c.包处理引擎对接收到的数据进行查找表匹配、包头改写的处理,读取发送标志状态寄存器用以查找空闲的发送缓存器单元,之后向发送缓存器写控制模块发出写发送缓存器指令,发送缓存器写控制模块将包处理引擎的发送控制信息和待发送数据写入发送缓存器,并更新发送标志状态寄存器;

d.发送缓存读控制模块根据其自增指针的位置,在指针所指发送缓存器单元数据有效的情况下,按照发送缓存器单元中发送控制信息字段的要求将数据发送到外部数据总线,并更新发送标志状态寄存器。

本发明具有以下优点:

1)本发明由于将SRAM存储器构造成单元的形式,每个单元的数据量与网络处理器执行一次块传输的数据量相匹配,同时也与IP数据包的64字节最小长度相匹配,另外每个单元还能够存储扩展数据和控制信息,增加了数据传输的灵活性;

2)本发明由于设置缓存器中单元的数量远小于SRAM存储器的地址数量,因而能够为每个单元设置一个标志位,进一步使得数据缓存器的存储状态对于包处理引擎完全透明,无需异步FIFO的空满标志产生逻辑就提供更详细的缓存器存储状态;

3)本发明由于采用除发送缓存器的读取采用自增指针外,写发送缓存器、读接收缓存器和写接收缓存器操作均是通过显式的给定单元号来执行,因而在并行处理器处理多端口数据的环境下,大大增加了数据交换的灵活性;

4)本发明由于采用在发送缓存器单元的10个字节存储空间中,除8个字节的常规数据和1个字节的扩展数据外,还有1个空闲字节,将其加以有效利用,用来存储发送控制信息,避免在使用控制寄存器在异步时钟域传送信息时产生的亚稳态问题,且省略了一组控制寄存器,进而省略了一段指令改写寄存器的延迟,不但提高了电路可靠性,而且提高了数据发送效率。

5)本发明由于采用位宽转换装置,使得该缓存实现方案能够支持多种位宽的总线数据传输,为网络处理器支持多种外部设备提供了保障。

附图说明

图1为典型的网络处理器结构图;

图2为本发明的数据缓存器框图;

图3为本发明的数据缓存器结构示意图

图4为本发明的缓存器单元划分结构示意图;

图5为本发明的数据缓存控制过程图。

具体实施方式

参照图2和图3,本发明的数据缓存器主要由数据存储单元、缓存读写控制单元、位宽转换单元,控制状态寄存器单元组成。其中:

所述的数据存储单元,由SRAM存储器构成,SRAM读写位宽为64位,有效地址数量为320,寻址空间为0x000到0x13F,需要9位的地址总线,实现20Kb的有效存储容量。对SRAM存储器进行单元划分,将320个有效地址抽象划分为32个单元,每单元可存储10个四字,即80字节的数据,对于发送缓存器和接收缓存器,单元内容略有不同,图4给出了发送和接收缓存器中单元的划分结构。对于发送缓存器,每个单元的第一个四字为发送控制信息字段,该字段的内容指示发送缓存读控制模块如何发送本单元的数据,其具体含义:第63位表示是否跳过本单元而准备发送下一单元;57-62位用来声明发送目标设备号;54-56位用来声明有效的四字64位数,即指示发送缓存读控制模块产生几组读地址;53位用来声明是否有扩展数据需要发送;50-52位用来声明最后一个有效四字中的有效字节数;49位为包结束标志位,如果该位置位则说明这一单元的数据位于一个数据包的结尾部分,48位为包起始标志;0-46位为保留位。发送控制信息字段之后是8个四字的常规数据字段,最后一个四字作为扩展数据字段,用于在特殊情况下发送一个额外的四字数据。对于接收缓存器,由于无需在单元起始位置保留控制信息字段,所以单元中的存储顺序是8个常规数据字段和1个扩展数据字段,最后一个四字的空间用来存放状态信息,用于接收特定的接收源设备提供的状态信息。以包处理引擎的角度看,接收和发送缓存器是一个含有32个数据单元的存储器,所有的指令操作都是基于单元的操作,所有的数据传输都是基于单元的块传输,缓存读写控制单元接受这些基于单元的指令,实现由单元操作到具体的读写操作的过渡。

所述的缓存读写控制单元由发送缓存写控制、发送缓存读控制、接收缓存写控制和接收缓存读控制四个模块组成。该发送缓存写控制模块,工作在网络处理器核心频率时钟频率下,接受包处理引擎的写发送缓存器指令,写发送缓存器指令中包含了发送缓存器的目标单元号和有效四字数量,发送缓存写控制模块将目标单元号译码,产生正确的地址,再由计数逻辑控制地址产生的数量,同时置位发送缓存器的写使能信号,使待发送数据按顺序写入发送缓存器。由于内部数据总线位宽为32位,所以位宽转换装置需要两个时钟周期将两组32位的数据转换位64位,因而每个写地址的保持时间为两个时钟周期。完成单元写入后,发送缓存写控制模块将已写单元号发送给发送标志状态寄存器使对应单元的标志位置位。该发送缓存读控制模块,工作在网络处理器外部数据总线时钟频率下,该模块无需接受指令控制,而是拥有一个自增的循环指针指向发送缓存器单元。当指针指向一个新的单元时,译码器自动将单元号译码,生成该单元发送控制信息字段的读地址,发送控制信息被读出并存入一组内部寄存器。单元指针同时也被输出到发送标志状态寄存器,进而可以从发送标志状态寄存器读取当前指针单元的数据有效状态,如果状态为有效,则发送缓存读控制模块启动数据发送,关闭内部寄存器的写使能开关,使得发送控制信息被锁存,控制后续读地址的产生,发送控制信息同时也控制接口逻辑单元产生正确的外部设备选通信号,实现数据发送。单元数据发送完毕后,向发送标志状态寄存器发出清零信号,则当前指针指向的单元标志位被清零,之后指针加一,开始新一轮的发送过程。该接收缓存写控制模块,工作在网络处理器外部数据总线时钟频率下,由接收控制寄存器控制,接收控制寄存器提供了接收缓存器单元号与接收四字数量等信息,接收缓存写控制模块根据接收控制寄存器产生接收缓存的写地址和写使能信号。在单元写入完毕后,接收缓存写控制模块将接收状态信息写入接收状态寄存器,其内容将在后面详述。该接收缓存读控制模块,工作在网络处理器核心频率下,接受包处理引擎的读接收缓存器指令,读接收缓存器指令中包含了接收缓存器的源单元号和有效四字数量,接收缓存读控制模块将单元号译码,产生正确的地址,再由计数逻辑控制地址产生的数量,使接收数据按顺序送入内部数据总线。由于内部数据总线位宽为32位,所以位宽转换装置需要两个周期可以将两组32位的数据转换为64位,因而每个写地址的保持时间为两个时钟周期。

所述的控制与状态寄存器由发送标志状态寄存器、接收控制寄存器和接收状态寄存器组成。该发送标志状态寄存器有效位32位,分别对应了发送缓存器的32个数据单元,该寄存器的功能主要有:接受发送缓存写控制模块的置位信号,该信号由5位地址线和1位选通线组成,置位时选通线产生一个周期的正脉冲,使被地址线选定的寄存器标志位置位;接受发送缓存读控制模块的指针信号,输出指针指向的寄存器标志位的值;接受发送缓存读控制模块的清零信号,使指针所指的标志位清零。该接收控制寄存器有效位7位,由包处理引擎直接改写,其中0-4位为接收缓存器单元号,第5位声明是否接收扩展数据,第6位声明是否接收状态信息。该寄存器在被读取后清空,等待下一次控制信息的写入。该接收状态寄存器有效位为18位,由接收缓存写控制模块改写,其中0-4位为接收缓存器单元号,5-7位为有效四字数量,第8位声明是否有扩展数据,第9位声明是否有状态信息,10-15位为接收源设备号,16位为数据包起始标志,17位为数据包结束标志。该寄存器的作用是向包处理引擎提交数据接收状态,所以需要被包处理引擎读取,由于接收缓存写控制模块在每次接收完成后都会无条件更新该寄存器,所以包处理引擎必须按照一定的周期定时的读取接收状态寄存器才能保证没有信息丢失,寄存器在被读取之后清空。

所述的位宽转换单元,由第一位宽转换模块、第二位宽转换模块、第三位宽转换模块和第四位宽转换模块组成,该第一位宽转换模块位于发送缓存器的数据写入端口,提供32位数据转64位的功能,花费两个周期将内部总线的两个32位数据串联组成64位数据,送入发送缓存器;该第二位宽转换模块位于发送缓存器的数据读出端口,在外部设备的数据总线位宽为32位时,该转换器实现64位数据转32位的功能,从发送缓存器读取的数据在转换器中暂存两个时钟周期,分两次以32位的位宽发送到外部数据总线,高位在先,低位在后。在外部设备的数据总线位宽位64位时,该转换器不执行转换功能,仅相当于一级寄存器;该第三位宽转换模块位于接收缓存器的数据写入端口,在外部设备的数据总线位宽为32位时,该转换器实现32位数据转64位的功能,外部数据总线的数据分两次组合成64位的数据后送入接收缓存器。在外部设备的数据总线位宽为64位时,该转换器不执行转换功能,仅相当于一级寄存器;该第四位宽转换模块位于接收缓存器的数据读出端口,提供64位数据转32位的功能,将1组64位数据分两个时钟周期按照高位在前低位在后的顺序送入内部数据总线。

参照图5,本发明的数据缓存控制包括如下过程:

过程1,当接收缓存写控制模块处于空闲时,数据缓存器处于接收就绪状态,随时执行新的数据接收;

过程2,包处理引擎查看内部寄存器中保存的接收缓存器存储状态,选择空闲的接收缓存器单元,向接收控制寄存器中写入接收控制信息。接收缓存写控制模块检测接收控制寄存器中是否有新的接收控制信息,若是接收控制寄存器的所有位均为零,则没有控制信息,若不为零,就表示接收控制寄存器收到了新的写接收缓存器指令,接收缓存写控制模块读取控制信息,准备执行数据接收;

过程3,接收缓存写控制模块按照接收控制寄存器中的控制信息开始数据接收,首先在将控制信息读回后清空接收控制寄存器,之后根据接收控制信息中的单元号执行译码,产生对应单元的数据字段地址,并置位接收缓存器的写使能信号,产生的地址个数根据接收控制寄存器中的信息确定。在完成这一单元的数据写入后,接收缓存写控制模块将本次接收的情况写入接收状态寄存器,至此,接收缓存写控制模块完成一次完整操作,进入接收就绪状态等待下一次接收;

过程4,包处理引擎每隔一定的周期就检查接收状态寄存器,如果发现接收状态寄存器非零,就表示有新的数据已被放在接收缓存器中等待读取,则包处理引擎将接收状态寄存器中的状态信息取回,之后清空该寄存器;

过程5,包处理引擎根据读回的接收状态信息发出读接收缓存器指令,指令加载到接收缓存读控制模块,接收缓存读控制模块解析指令内容,产生连续的接收缓存器读地址,将数据读入内部数据总线,发送给包处理引擎。包处理引擎收到数据后更新其保存接收缓存器存储状态的内部寄存器;

过程6,数据包在包处理引擎中经过查找表匹配和包头改写处理,成为能够进行发送的数据包;

过程7,已准备好待发送数据后,包处理引擎查看发送标志状态寄存器以获取发送缓存器的数据存储情况,选择空闲的发送缓存器单元,向发送缓存写控制模块发出写发送缓存器指令;

过程8,发送缓存写控制模块接收写发送缓存器指令,将指令中的发送缓存器单元号译码,产生正确数量的写地址,同时置位发送缓存器的写使能信号,将待发送数据从内部总线传送到发送缓存器,在完成单元数据写入后将发送标志状态寄存器中的对应标志位置位;

过程9,发送缓存读控制模块根据单元指针译码出所在单元的发送控制信息字段地址,读取发送控制信息;

过程10,发送缓存读控制模块检查发送标志状态寄存器中指针所指位的数据有效标志,如果标志位有效,则将发送控制信息锁存到内部寄存器,关闭内部寄存器写使能,准备数据发送,如果标志位无效,则等待该标志位变为有效;

过程11,发送缓存读控制模块根据读到内部寄存器中的发送控制信息产生连续的发送缓存器读地址,使数据被发送到外部数据总线;

过程12,一个单元的数据发送完毕后,发送缓存读控制模块将发送标志状态寄存器中指针所指标志位清零,之后将指针加一,指向下一个发送缓存器单元,重复以上过程。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号