CN1643872B - 缓存流数据 - Google Patents

缓存流数据 Download PDF

Info

Publication number
CN1643872B
CN1643872B CN038062224A CN03806222A CN1643872B CN 1643872 B CN1643872 B CN 1643872B CN 038062224 A CN038062224 A CN 038062224A CN 03806222 A CN03806222 A CN 03806222A CN 1643872 B CN1643872 B CN 1643872B
Authority
CN
China
Prior art keywords
queue
formation
data
request
high speed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN038062224A
Other languages
English (en)
Other versions
CN1643872A (zh
Inventor
肯尼思·M·基
麦国根
孙晓明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cisco Technology Inc
Original Assignee
Cisco Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cisco Technology Inc filed Critical Cisco Technology Inc
Publication of CN1643872A publication Critical patent/CN1643872A/zh
Application granted granted Critical
Publication of CN1643872B publication Critical patent/CN1643872B/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Communication Control (AREA)

Abstract

本发明的技术利用高速和低速存储器件的组合实现了一种新型的高速高密度分组缓冲器。所述新型的分组缓冲器以多个FIFO队列的形式组织起来,其中的每个FIFO队列与一条特定的输入或者输出线路相关联。每个队列包括驻留在高速存储器内的高速缓存部分和驻留在低速高密度存储器内的低速高密度部分。所述高速缓存部分包含有FIFO数据,该数据含有与所述新型FIFO队列相关联的头部和/或尾部。所述低速高密度部分包含未被包含在所述高速缓存部分内的FIFO数据。

Description

缓存流数据
相关申请的交叉引用
本发明与共同待审并共同转让的美国专利申请No.10/135,495相关,该申请题为“Queue Cache”,是与本申请同日递交的。
技术领域
本发明一般地涉及网络器件,更具体地说,本发明涉及对包含在分组缓冲器(packet buffer)中的数据进行缓存。
背景技术
计算机网络是在地理上分布的用于在多个诸如计算机之类的节点之间传输数据的多个互连通信链路的集合。很多种类型的计算机网络都是可以获得的,所述类型的范围可以从局域网(LAN)到广域网(WAN)。所述的多个节点一般根据预先定义的协议,通过交换离散的数据帧或者分组来进行通信,这些协议例如是传输控制协议/互联网协议(TCP/IP)或者网间分组交换(IPX)协议。
计算机网络的拓扑可以有很大不同。例如,该拓扑可以包含单一的LAN,该LAN包含单一的中间节点,该中间节点的类型例如是网络集线器(hub),多个端节点附接到该网络集线器。更复杂的网络可以包括一个或者多个通过复杂的中间网络而互连的局域网,从而形成WAN,所述中间网络包含多个其它类型的中间节点,例如交换机或者路由器。后面提到的这些中间节点中的每一个一般都包含一个中心处理器,使得所述中间节点可以将数据分组沿着互连的链路从产生数据的源端点路由或者交换到被指定用于接收数据的目的端点,等等。通常,这些中间节点使用分组缓冲器来暂时保存被节点处理的数据。
分组缓冲器通常包含一个或多个存储器件,这些存储器件被排列以形成一个或多个先进先出(FIFO)的队列,其中每个队列与一个具体的输入或者输出线路相关联。每个FIFO队列的尺寸通常依赖于与该队列相关联的线路速度和中间节点处理一个分组所花费的时间。例如,假设中间节点上的一条输入线路具有1千兆位每秒(Gb/s)的线速(line rate),并且该节点处理一个分组所花费的时间是250毫秒(ms)。那么可以通过线速乘以处理速度来确定FIFO队列的尺寸,因此得到至少250兆位(Mb)的队列尺寸。
与输入或者输出线路相关联的线速一般定义了为了支持这些线路所需的分组缓冲器的最小要求存储器带宽。存储器带宽通常通过计算“随机循环时间”(tRC)的倒数并且将这个结果乘以一次能够被传递到该存储器件的位数目来确定,其中随机循环时间和包含分组缓冲器的存储器件相关联。例如,假设分组缓冲器可以处理64位的数据传递,并且包含缓冲器的存储器件具有50纳秒(ns)的tRC,那么分组缓冲器的存储器带宽是1.2Gb/s。
典型的中间节点可以包含很多线路卡,其中每个线路卡包含很多端口,并且每个端口包含一条输入线路和一条输出线路。此外,每条线路可以工作在1Gb/s或者更大的速度。因此,用于中间节点的分组缓冲器通常很大并且工作在很高的存储器带宽。例如,假设一个中间节点具有四个端口,每个端口有两条线路,并且每条线路以1Gb/s的速度工作。还假设该中间节点250毫秒内可以处理一个分组并且这些数据使用64位的数据传输量传进和传出分组缓冲器。该分组缓冲器的存储器带宽必须是至少8Gb/s并且该存储器件的tRC必须是8ns或者更少。此外,每个FIFO的尺寸必须是至少250Mb,从而产生的分组缓冲器的总尺寸是1千兆位(Gb)。
为了迎合与高速数据通信线路相关联的高带宽的要求,传统的分组缓冲器设计要求只能使用高速存储器件,例如静态随机存取存储器(SRAM),因为高速存储器件的带宽和tRC通常足够迎合高速输入/输出线路提出的严格的要求。然而,高速存储器件通常非常昂贵并且不够密集,使其不能实用地应用于这样的实现方式。
用于实现高速高密度的分组缓冲器的替代技术已经在S.Iyer等人的著作Analysis of a Memory Architecture for Fast Packet Buffers中有过描述。该技术采用了高速器件和低速高密度器件的组合,其中所述高速器件被排列作为头部和尾部缓存而低速高密度器件(例如动态随机存取存储器(DRAM))被设置来保存FIFO队列。此外,该技术采用了一种存储器管理算法,该算法利用前视排列(look-ahead arrangement)来确定数据从低速器件中读出,进而补充到头部缓存的顺序。但是,该技术不能根据FIFO队列的数目很好地扩展,因此可能不适用于包含大量队列,例如多于512个队列的系统。我们需要一种用来实现高速高密度分组缓冲器的技术,该技术可以很好地扩展到采用大量队列的系统。
发明内容
本发明包含一种利用高速和低速存储器件的组合来实现高速高密度分组缓冲器的技术,还包含一种能够支持大量队列的缓存补充技术。这种新型分组缓冲器由多个FIFO队列组成,其中每个FIFO队列与一条具体的输入或者输出线路相关联。每个队列包含驻留于高速存储器中的高速缓存部分以及驻留于低速高密度存储器中的低速高密度部分。所述高速缓存部分保存着与新型FIFO队列的头部和/或尾部相关联的FIFO数据。所述低速高密度部分保存着那些没有保存在高速缓存部分的FIFO数据。
每个FIFO队列与保存着该队列特定信息的目录条目(directoryentry)相关联。所述信息包括与该队列相关联的头部和尾部信息,以及与保存在该FIFO的高速部分中的数据量相关的信息。使用包含在所述目录中的信息可以确定何时和怎样补充FIFO队列的高速部分,等等。
在本发明的一个实施例中,FIFO队列的高速部分只保存与该队列头部相关联的数据。被写到队列尾部的数据被写入该队列的低速部分。数据在其可以从头部缓存中获得时被从头部缓存中读出,如果头部的缓存部分已被耗尽,数据则从低速部分读出。只要当数据向FIFO队列写入或者从FIFO队列读出的时候,都根据需要来补充头部缓存。
有利的是,本发明的技术不完全依赖于高速存储器件就可以实现高速高密度的分组缓冲器。更确切地说,根据本发明,所述高速高密度的分组缓冲器的其中一部分可以利用廉价的低速高密度的器件,例如商业型DRAM来实现。
附图说明
结合附图参考下面的说明可以更好的理解本发明的上述以及更多优点。附图中相同的标号指的是同样的或者功能上类似的元件:
图1是利用本发明可以有利地使用的网络的示意框图;
图2是利用本发明可以有利地使用的中间节点的部分示意框图;
图3是可以被用来实现本发明的网络服务引擎(NSE)的部分示意框图;
图4是可以被用来实现本发明的分组缓冲器的示意框图;
图5是本发明可以使用的QID目录条目的示意图;
图6是本发明可以使用的请求的示意图;
图7是依照本发明可以被用来使分组入列到FIFO队列和从FIFO队列中出列的方法的高级流程图;
图8A-8B是可以被用来实现本发明的方法的流程图;和
图9示出了采用头部缓存和尾部缓存的本发明的实施例。
具体实施方式
图1是利用本发明可以有利地使用的计算机网络100的示意框图。计算机网络100包含连接到多个节点的多个通信链路和区段(segment)的集合,所述节点例如是端节点110和中间节点200。所述网络链路和区段可以包括通过例如网络交换机或者路由器的中间节点200而互连的局域网(LAN)120、例如因特网270的广域网(WAN)以及WAN链路130,从而形成具有多个计算机节点的网络。这些网络节点根据事先定义的一组协议通过交换数据分组进行通信,这些协议例如是传输控制协议/互联网协议(TCP/IP)和网间分组交换(IPX)协议。
图2是利用本发明可以有利地使用的中间节点(交换机)200的部分框图。中间节点200的一个说明示例是Cisco 7300路由器,该路由器可以从加州San Jose的Cisco公司获得。说明性的中间节点200是一台小型中档(mid-range)路由器,该路由器提供了高可用性和高性能,并且可以光速传递高接触(high-touch)IP服务。中间节点200支持多种通信协议的组合,这些通信协议包括异步传输模式(ATM)、以太网、快速以太网、千兆位以太网和多通道(multi-channel)T3。中间节点200包含多个板卡,这些板卡包括通过交换机光纤背板220互连的线路卡210和网络服务引擎(NSE)卡300。此外,每块板卡具有背板接口250,该接口将板卡通过接口连接到背板220,并且使板卡可以向背板220发送以及从背板220接收各种数据和控制信号,等等。
线路卡210将中间节点连接(通过接口连接)到网络100,其中的中间节点或者可以被配置成交换机200。为了这个目的,线路卡210使用各种协议(例如OC-3、OC-12、快速以太网、T3),分别通过输入端口215和输出端口217而在网络上接收和发送数据。线路卡210把从网络100上接收的数据转发到背板220,也将从背板220接收到的数据发送到网络100。
交换机光纤背板220包含若干逻辑和点到点互连背板,其提供了线路卡210和NSE 300之间的接口。也就是说,背板220提供了多个板卡间的互连,使得数据和信号可以从一块板卡传递到另一块板卡上。
NSE 300适于提供对进入和外出分组的处理。图3是NSE 300的部分框图,NSE 300包括背板接口逻辑250d、集群互连逻辑320、处理器370、处理器存储器360、分组处理逻辑350、端口接口逻辑380、一个或者多个物理端口385、流量管理器330和分组缓冲器400。背板接口逻辑250d包含使NSE 300可以通过背板220进行通信的逻辑。例如,背板接口逻辑250d包含使NSE 300可以使用各种数据和控制信号与连接到背板220上的其他板卡进行通信的逻辑。
集群互连逻辑320包含将背板接口逻辑250d和处理器370通过接口连接到流量管理器330的逻辑。优选地,集群互连实现在为现场可编程门阵列(FPGA)中,该FPGA被配置成使得流量管理器330可以向背板220和处理器370发送数据以及从背板220和处理器370接收数据。
处理器370包含可以执行指令和产生存储器请求的处理元件和逻辑。本发明中可以有利地使用的处理器370的一个示例是BCM1250处理器,该处理器可以从加州Irving的Broadcom公司获得。处理器存储器360是计算机可读介质,它保存着数据和包含可执行指令的软件例程。这些数据和软件例程使处理器370可以(适于)执行各种功能,例如管理交换机200,以及路由处理。处理器存储器360可以包含一个或者多个存储器件
(未示出),它们可以存储可执行指令和数据。优选地,这些存储器件是工业标准的存储器件,例如动态随机存取存储器(DRAM)器件,这些器件可以从爱达荷州Boise的Micron技术公司获得。
端口接口逻辑380包含通过接口把流量管理器330连接到物理端口385的逻辑。为了这个目的,端口接口逻辑380包括使流量管理器330可以分别向端口385传送和从端口385接收分组的逻辑。端口385包含将NSE 300物理上通过接口连接到网络100的逻辑。
分组处理逻辑350包含逻辑和处理元件,其可以将NSE 300已经接收到的分组进行分类,等等。分组处理逻辑350包含下述逻辑,其被配置来检查接收到分组的分组头部并且将每个分组与包含在分组缓冲器400中的一个FIFO队列相关联。优选地,分组处理逻辑350包含在一系列专用集成电路(ASIC)中。
流量管理器330包含逻辑和存储器元件,其被配置来将分组入列到包含在分组缓冲器400中的FIFO队列405以及将分组从该队列中出列,等等。此外,流量管理器330被配置成用于分配和释放包含在分组缓冲器的外部DRAM中的多个存储器块,并且向分组缓冲器400发送命令,从而指导缓冲器400从FIFO队列405中读取或者向该队列中写入分组。为了这个目的,流量管理器330包括内部分组存储器(IPM)332、队列描述符存储器(QDM)338、调度程序(SCH)336和队列管理器(QM)334。内部分组存储器332包含逻辑和存储器元件,其可以被用来暂时保存从交换机光纤背板220和物理端口385接收到的分组。队列描述符存储器338保存队列405中的每个队列专有的信息。所述信息包括指向每个队列405的头部和尾部指针,以及每个队列的尺寸。调度程序336包含逻辑和处理元件,其可以执行流量管理以及为NSE 300通过交换机光纤背板220和端口385发送的流量的整形。队列管理器334包含逻辑和处理元件,其可以被用来管理包含在分组缓冲器400中的FIFO队列405中的每个队列,等等。优选地,流量管理器330被配置成用于支持8192个FIFO队列。
分组缓冲器400包含逻辑和存储器元件,其可以依据本发明向FIFO队列405写入以及从FIFO队列405中读出分组。每个FIFO队列405包含低速部分492(图4)和高速部分482。此外,每个队列都和一个队列标识符(QID)相关联。优选地,分组缓冲器400被配置成用于支持8192个FIFO队列。
具体操作是这样的,源线路卡210从网络100上接收进入的分组,并且通过交换机光纤背板220将其发送到NSE 300,在NSE 300上,背板接口逻辑250d接收这些分组,并通过集群互连逻辑320将其传送给流量管理器330以待进一步处理。或者,也可以通过物理端口385从网络100上接收分组,并且通过端口接口逻辑380将其传送到流量管理器330。流量管理器330将每个分组都存储在内部分组存储器332中并且通知分组处理逻辑350。分组处理逻辑350检查分组的头部,选择一个用来接收该分组的FIFO队列405,并且将该FIFO队列的QID传递到队列管理器334。根据需要,队列管理器334分配DRAM 490中的一块或者多块(图4),将分配的块与该QID相关联并且向分组缓冲器400发送一系列命令,用于将分组放置到已分配的DRAM中。然后队列管理器334通知调度程序336安排分组出列的时间。当分组需要出列时,调度程序336会通知队列管理器334。队列管理器334接着向分组缓冲器400发送一系列命令,用于使分组出列。然后,出列的分组被处理并且被发送到背板220或者一个或多个物理端口385上。
本发明包含一种技术,其可以利用高速和低速存储器件的组合来实现高速高密度的分组缓冲器。所述新型的分组缓冲器由多个FIFO队列所组成,其中每个FIFO队列和一个特定的输入或者输出线路相关联。每个队列包含驻留于高速存储器中的高速缓存部分和驻留于低速高密度存储器中的低速高密度部分。所述高速缓存部分包含与这种新型FIFO队列的头部和/或尾部相关联的FIFO数据。所述低速高密度的部分包含那些未包括在高速缓存部分中的FIFO数据。
图4是可以被用来实现本发明的分组缓冲器400的详细的部分示意框图。分组缓冲器400包含接口逻辑410、命令译码逻辑420、读取请求队列逻辑430、队列标识符(QID)目录460、队列头部(Qhead)缓存480、写入分组队列逻辑450、DRAM控制器470和DRAM 490。优选地,接口逻辑410、命令译码逻辑420、读取请求队列430、QID目录460、Qhead缓存480、写入分组队列450和DRAM控制器470都包含在一个或者多个专用集成电路中。
接口逻辑410包含下述逻辑,其被配置来将分组缓冲器400通过接口连接到流量管理器330。为了这个目的,接口逻辑410产生必需的数据和控制信号,从而可以在流量管理器330和分组缓冲器400之间传递请求和数据。命令译码逻辑420被连接到接口逻辑410、读取请求队列逻辑430和写入分组队列逻辑450,并且包含被配置的逻辑,用于处理接口逻辑410接收到的请求。如果请求中指定了读取命令,那么逻辑420将请求转发到读取请求队列逻辑430;否则如果指定的是写入命令,那么逻辑420将请求和数据转发到写入分组队列逻辑450。
读取请求队列430包含逻辑和存储器元件,其被配置来保存和处理命令译码逻辑420接收到的读取命令。读取请求队列430包含FIFO命令队列432和命令译码逻辑434,该命令译码逻辑被配置成用于在命令到达命令队列432的头部的时候处理这个命令。优选地,FIFO命令队列432是一个32条目乘以72位的FIFO队列,该队列被配置成用于保存最多32个读取请求。
相似地,写入分组队列450包含逻辑和存储器元件,其被配置来保存和处理命令译码逻辑420接收到的写入命令和数据。写入分组队列450包含FIFO命令队列452、命令译码逻辑454和写入分组缓冲器456,该命令译码逻辑454被配置成用于在命令到达命令队列452的头部的时候处理这个命令,写入分组缓冲器456被配置成用于保存与命令队列452中的命令相关联的数据。优选地,写入分组队列450是一个16条目的队列,该队列被配置成用于保存最多16个写入请求。
DRAM控制器470包含下述逻辑,其被配置来处理写入分组队列450和QID目录逻辑460发出的请求。为了这个目的,DRAM控制器470包含的逻辑译码这些请求并且向包含在DRAM 490中的FIFO队列405的低速部分492传递或者从该部分接收与这些请求相关联的数据,所传递的数据优选地作为32字节块的形式来传递。
DRAM 490包含逻辑和存储器元件,其被配置来保存每个FIFO队列405的低速部分492,该低速部分492优选地作为一系列一个或者多个4096字节块进行保存。优选地,所述存储器元件包含能够保存分组数据的高密度商业型存储器件,例如可以从加州San Jose的Infineon技术公司获得的缩短延迟DRAM(RLDRAM)器件。
Qhead缓存480包括逻辑和存储器元件,其被配置来保存FIFO队列405的高速部分482,在优选实施例中,该高速部分就是队列头部的前1024个字节。优选地,Qhead缓存480包括高速高带宽的嵌入式存储器宏或者外部存储器件,例如可以从爱达荷州Boise的Micron技术公司获得的静态随机存取存储器(SRAM)器件。
QID目录460包含逻辑和存储器元件,其被配置来向DRAM控制器470发出请求并且保存FIFO队列405的专有信息,等等。QID目录460在读取请求队列430和写入分组队列450的指导下,向DRAM控制器470发送读取请求,用于补充Qhead缓存480。此外QID目录460还包含数据库462,该数据库被配置用来保存FIFO队列405专有的信息。优选地,数据库462以一系列8192个条目的形式组织起来,其中每个条目与一个具体的FIFO队列405相关联。
图5是包含在QID目录数据库462中的典型的条目500的示意图。条目500包含奇偶校验字段510、新条目字段520、Qtail(队列尾)偏移字段530、Qtail块地址字段540、Qhead末端偏移字段550、Qhead起始端偏移字段560和Qhead块地址字段570。奇偶校验字段510包括1位的数值,该数值代表条目500的总的奇偶校验。新条目字段520包含1位的标记字段,该字段指示该队列是否正在进行第一次数据入列。
Qtail块地址字段540保存了一个指针,该指针是DRAM 490中的与队列405的尾部相关联的4096字节块的地址,Qtail偏移字段530保存的是Qtail块地址字段540所指向的所述4096字节块内部的字节偏移。Qtail块地址540和Qtail偏移530一起产生队列尾部指针535,该指针是指向队列405尾部字节地址的指针。
Qhead块地址字段570保存了一个指针,该指针是DRAM 490中的与队列的头部相关联的4096字节块的地址。Qhead起始端偏移字段560保存的是Qhead块地址字段570所“指向”(引用)的所述4096字节块内部的字节偏移。Qhead块地址570和Qhead起始端偏移560一起产生队列的头部指针565,该指针是指向队列头部字节地址的指针。
Qhead末端偏移字段550保存的是Qhead块地址字段570所指向的块内被包括在队列405的高速部分482中的最后一个字节的字节偏移。Qhead起始端偏移和Qhead末端偏移之间的差值给出当前在相关联的FIFO队列405的高速部分中的字节数目。
例如,假设流量管理器330需要将位于内部分组存储器332中的2048字节的分组放置(入列)到FIFO队列405a中,并且根据调度程序336的决定在之后的某一时刻使该分组出列。还假设分组处理逻辑350已经检查过分组并且向流量管理器330提供了一个与FIFO队列405a相关联的QID,并且与队列405a相关联的QID条目500的新条目字段520指示该队列正在进行第一次数据入列。图7是流量管理器330可以用来将分组入列到FIFO队列405,为分组安排出列时间并且使分组出列的步骤序列的高级流程图。该序列从步骤702开始并且前进到步骤704,在步骤704中,队列管理器334在DRAM 490中分配一个4096字节的块,并且在队列405a的队列描述符存储器条目中更新队列尾部指针和队列尺寸以反映这个分组。在步骤706,队列管理器334产生一个请求600,从而将来自于内部分组存储器332的分组数据传递到队列405a。
图6是本发明可以用到的请求600的示意图。请求600包含命令字段610、地址字段630、传递尺寸字段650和队列标识符(QID)字段660。命令字段610指定分组缓冲器400要执行的操作,例如读取或者写入数据。地址字段630指定要读取或者写入的数据在DRAM中的位置。优选地,该字段是28位的字段,用于指定32字节块的地址。传递尺寸字段650指定要传递的数据量。优选地,该字段是7位的字段,用于指定要传递的32字节块的数目。QID字段660指定FIFO队列405。
流量管理器330产生请求600,该请求在命令字段610指明写入命令,在地址字段630指明与所分配的块相关联的地址,在传递尺寸字段650指明分组的尺寸并且在QID字段660指明用于队列405a的QID。然后如步骤708所指出的,流量管理器330将请求600和数据一起发送到分组缓冲器400。
图8A和8B的流程图说明了依据本发明使用高速和低速存储器件使得分组缓冲器(例如分组缓冲器400)可以实现为高速高密度分组缓冲器的步骤序列。该序列从步骤802开始并且前进到步骤804,在步骤804中,请求600和相关数据在接口逻辑410处被接收并且被传递到命令译码逻辑420。接下来在步骤806,命令译码逻辑检查命令字段610并且确定是否指明了读取命令。如上面所指出的,命令字段610指示的是写入命令,因此序列进行到步骤810,在该步骤,包含数据的请求被传递到写入分组队列450并且数据被放置到缓冲器456中。
在步骤810,写入分组队列450指导DRAM控制器470将包含在缓冲器456中的与请求600相关的数据写入队列405a的低速部分492a中由地址字段630所指定的位置。接下来在步骤812,为了反映刚刚已经被加到队列405a中去的分组,写入分组队列450更新用于队列405a的QID目录条目500。
在步骤813-814,写入分组队列450检查队列450a的QID目录并且确定具有缓存的高速部分(下文中的“Qhead缓存482a”)是否需要被补充。具体地说,就是检查新条目字段520,如果字段520指示队列405a正在进行数据的第一次入列,那么写入分组队列450“得出结论”缓存482a需要被补充,并且清空新条目字段520以指示队列正在进行数据的第一次入列,并且前进到步骤816。否则,就计算出Qhead末端偏移字段550和Qhead起始端偏移字段560之间的差值。如果这个差值小于缓存482a的大小(即1024字节),那么写入分组队列450同样地得出缓存482a需要被补充的结论并且前进到步骤816。否则,缓存482a就不需要被补充,即缓存已满,并且所述序列进行到序列结尾的步骤880。
因为新条目字段指示队列正在进行数据的第一次入列,所以新条目字段被清空,并且所述序列前进到步骤816,在步骤816中,写入分组队列450确定Qhead块地址570指出的块地址是否与Qtail块地址540指出的块地址相同,即队列405a是否包含在单一的块内。如果Qhead缓存482a不是包含在单一的块内,那么该序列前进至步骤820,在步骤820中,Qhead缓存482a被填充,直到缓存482a被充满或者已到达Qhead块地址所570指向的块的末端。假设队列405a包含在单一的块内,则该序列前进到步骤818,在步骤818中,缓存482a被队列405a的低速部分492a中包含的数据所补充,直到缓存482a被充满或者已到达队列的尾部地址。在步骤822,写入分组队列450更新Qhead末端偏移550以反映放置在Qhead缓存482a中的数据量。然后该序列前进到序列结尾的步骤880。
再一次参考图7,在步骤712,队列管理器334利用调度程序336安排分组在之后的某一时刻出列。如步骤714指出的,当调度程序336确定分组准备出列时,它会通知队列管理器334。然后在步骤716,队列管理器334按照前面描述的方式产生一个请求600,用于从FIFO队列405a中读取分组。更具体地说,队列管理器334从描述符存储器338中读取与队列405a相关联的条目,并且使用该信息产生请求600,该请求在命令字段610中指明读取命令,在地址字段630指明队列的头部地址,在传递尺寸字段650指明分组的尺寸(即2048字节),以及在QID字段660指明与队列405a相关联的QID。然后如步骤718指出的,请求600被发送到分组缓冲器400。
在步骤720,分组缓冲器400从队列405a中读取数据。更具体地说,再一次参考图8A,在步骤804,接口逻辑410接收请求600,并将该请求传送到命令译码逻辑420,如步骤806指出的,在命令译码逻辑420,该请求被检查,以确定该请求是否指明读取命令。因为该请求包含读取命令,所以该序列前进到步骤807,在步骤807,该请求被转发到读取请求队列430。然后,该序列前进到步骤840(图8B),在步骤840,读取请求队列430检查队列405a的QID目录条目500并且确定Qhead缓存482a是否为空,即没有包含数据。优选地,通过计算队列405a的Qhead起始端偏移560与Qhead块地址570之间的差值来做出这个确定,如果该差值为零,则可得出Qhead缓存482a为空的结论。如果缓存482a为空,该序列则前进至步骤844,在步骤844,读取请求队列430指示DRAM控制器470从队列405a的低速部分492a获得(读取)分组,并且序列前进至步骤852。
如上面所描述的,缓存482a不为空,因此该序列前进到步骤846,在步骤846,读取请求队列430指示QID目录从Qhead缓存482a中获得(读取)数据。在接下来的步骤848,读取请求队列430确定从Qhead缓存482a中读取的全部数据是否足够满足该请求,即从Qhead缓存482a中读取的数据量是否和请求600的传递尺寸字段650指定的数据量相同。如果相同,则该序列前进到步骤852。
因为Qhead缓存482a只提供1024字节的数据,这比传递尺寸字段650指定的尺寸要小,所以该序列前进至步骤850,在步骤850,读取请求队列430指示DRAM控制器470从FIFO队列405a的低速部分492a读取剩余数据,即1024字节。
在步骤852,读取请求队列430通过更新Qhead起始端偏移字段560来更新与队列405a相关联的QID目录条目500,从而反映已经从队列405a中读取的数据量。
在接下来的步骤856,读取请求队列430确定FIFO队列405a中是否有数据来补充Qhead缓存482a。更具体地说,读取请求队列430通过将Qhead块地址570与Qhead起始端偏移560相加来计算队列的头部指针,通过将Qtail块地址540与Qtail偏移530相加来计算队列的尾部指针,并将所述头部指针和尾部指针相比较来确定它们是否相等。如果在队列405a中没有数据,该序列则前进至步骤858,在步骤858要执行一项检查,确定Qhead块地址570和Qtail块地址540是否指向同一个块。如果是,读取请求队列430则指示QID目录460去指示DRAM控制器470从DRAM490补充Qhead缓存482a,直到缓存482a被充满或者已到达队列的尾部地址,如步骤860指出的。否则如果Qhead块地址570与Qtail块地址540不在同一个块内,则指示DRAM控制器补充缓存482a,直到缓存482a被充满或者已到达块的末端,如步骤862指出的。然后该序列前进至序列的结尾步骤880。因为队列405a中包含的所有数据都已被读取,并且队列的头部和尾部指针相等,所以读取请求队列430得出队列405a中没有数据用来补充缓存482a的结论,并且因此该序列前进至序列的结尾步骤880。
再一次参考图7,在步骤722,队列管理器334检查队列描述符存储器338中的队列405a的条目,并且确定被分配的块中的所有数据都已经被读取,即该块不再使用,并且因此释放该块。然后该序列在步骤724结束。
应该注意的是在本发明上述实施例中,FIFO队列的高速部分只包含一个队列头部缓存;然而,本发明不局限于此。更确切地说,在本发明的其他实施例中,高速部分包含队列头部和队列尾部缓存的其他组合。例如,图9示出了FIFO队列900,它采用了一个队列头部缓存和一个队列尾部缓存。队列900包含高速部分970和低速部分925,其中高速部分970包含尾部缓存915和头部缓存955。头部缓存955包含条目951、952和953,尾部缓存包含队列条目911、912和913。低速部分包含了包括第一条目923和最后条目921的多个条目。数据在910进入FIFO队列900,并且被写入尾部缓存915。当尾部缓存915被充满的时候,数据则沿路径920以上述方式被写入低速部分925。数据也按照上述方式被从队列900中读出,首先从头部缓存955中读出,然后沿路径940从低速部分925中读出,或者如果头部缓存955的尾部指针和尾部缓存915的头部指针相等时,则沿路径930从尾部缓存915中读出。同样地,按照上述方式,或者从低速部分925沿路径940,或者如果头部缓存955的尾部指针和尾部缓存915的头部指针相同时,则从尾部缓存915沿路径930来补充头部缓存955。
应该注意的是,上述新技术采用的某些方法可以使用计算机可读并且可执行指令来全部或者部分实现,所述指令存储在诸如DRAM的计算机可读介质中,并在包含能够执行指令的处理元件,例如处理器的硬件上面执行。例如,在本发明的一个实施例中,通过流量管理器、命令译码逻辑、读取请求队列、写入分组队列和QID目录来执行的多个方法被实现为一系列软件例程,这些例程被存储在处理器存储器360中并且通过处理器370来执行。
总之,本发明包含一种可以实现高速高密度的分组缓冲器的技术。该技术不会招致只使用高速存储器件实现整个缓冲器相关的成本问题。但是,很明显,可以对所述实施例做出其他的变化和修改,同样能够得到所述实施例优点中的一些或者全部。因此,附带的权利要求书的目的在于要包含落入本发明的真实精神和范围内的所有这种变化和修改。

Claims (20)

1.一种用于操作包括一个或多个队列的分组缓冲器的方法,该方法包含以下步骤:
从请求者接收请求,该请求包括队列标识符和命令;
使用所述队列标识符,从所述一个或多个队列中选择一个队列,其中每个队列被配置来保存数据,并且每个队列包含高速部分和低速部分;和
确定所述命令是否是读取命令,如果是,则从所选队列的所述高速部分获取数据并且确定所获取的数据量是否已经满足所述请求,如果不满足,则从所选队列的所述低速部分获取剩余数据。
2.如权利要求1所述的方法,其中所述队列是先进先出队列。
3.如权利要求1所述的方法,其中所述请求与数据相关联,并且所述方法还包含以下步骤:
确定所述命令是否是写入命令,如果是,则将与所述请求相关联的数据写入所选队列。
4.如权利要求3所述的方法,其中所述队列是先进先出队列,并且其中与所述请求相关联的数据被写入所选先进先出队列的所述高速部分。
5.如权利要求3所述的方法,其中所述队列是先进先出队列,并且其中与所述请求相关联的数据被写入所选先进先出队列的所述低速部分。
6.如权利要求1所述的方法,还包括以下步骤:
在确定所获取的数据量已经满足所述请求之后或者在从所选队列的所述低速部分获取剩余数据之后,更新与所选队列相关联的队列标识符目录条目。
7.如权利要求3所述的方法,还包括以下步骤:
在确定所获取的数据量已经满足所述请求之后或者在从所选队列的所述低速部分获取剩余数据之后,从包含在所选队列的所述低速部分的数据中补充所选队列的所述高速部分。
8.如权利要求1所述的方法,还包括以下步骤:
在确定所述命令是读取命令之后并且在从所选队列的所述高速部分获取数据之前,确定所选队列的所述高速部分是否为空,如果是,则从所选队列的所述低速部分获取数据。
9.如权利要求8所述的方法,其中所选队列与队列头部起始端偏移和队列头部末端偏移相关联,并且确定所选队列的所述高速部分是否为空的所述步骤还包括以下步骤:
计算所述队列头部起始端偏移和所述队列头部末端偏移之间的差值;以及
如果所述差值为零,则得出所选队列的所述高速部分为空的结论。
10.一种分组缓冲器,该分组缓冲器包括一个或者多个队列,每个队列包含高速部分和低速部分,该分组缓冲器包括:
接口逻辑,其经配置用于传递请求和数据;
被连接到所述接口逻辑的命令译码逻辑,其经配置用于处理所述接口逻辑接收到的请求;
被连接到所述命令译码逻辑的读取请求队列,其经配置用于处理所述命令译码逻辑转发过来的读取命令;
被连接到所述读取请求队列的队列标识符目录,其经配置用于在所述读取请求队列的指导下,用来自所述低速部分的数据补充所述一个或者多个队列的所述高速部分;和
被连接到所述队列标识符目录的队列头部缓存,其经配置用于保存与所述高速部分相关联的数据。
11.如权利要求10所述的分组缓冲器,其中所述队列是先进先出队列。
12.如权利要求10所述的分组缓冲器,还包括:
被连接到所述命令译码逻辑的写入分组队列,其经配置用于处理所述命令译码逻辑转发过来的写入命令。
13.如权利要求12所述的分组缓冲器,还包括:
被连接到所述写入分组队列和所述队列标识符目录的DRAM控制器,其经配置用于处理所述写入分组队列和队列标识符目录发出的请求。
14.如权利要求13所述的分组缓冲器,还包括:
被连接到所述DRAM控制器的DRAM,其经配置用于保存与所述一个或者多个队列的所述低速部分相关联的数据。
15.如权利要求10所述的分组缓冲器,还包括:
数据库,其经配置用于保存所述队列的专有信息。
16.如权利要求15所述的分组缓冲器,其中所述数据库包括一个或者多个条目,并且其中每个条目与一个队列相关联,并且其中每个条目包括:
队列头部指针;和
队列尾部指针。
17.如权利要求16所述的分组缓冲器,其中所述队列头部指针还包括指向所述分组缓冲器中的DRAM中的一个块的指针,并且每个条目还包括:
如下字节的偏移,所述字节是位于所述队列头部指针所指向的所述块内并且同时包含在所述队列的所述高速部分中的最后字节。
18.一种用于操作包括一个或多个队列的分组缓冲器的装置,该装置包括:
用于从请求者接收请求的装置,所述请求包括队列标识符和命令;
用于使用所述队列标识符从所述一个或多个队列中选择一个队列的装置,其中每个队列被配置来保存数据,并且每个队列包含高速部分和低速部分;和
用于确定所述命令是否是读取命令,如果是,则从所选队列的所述高速部分获取数据,以及确定所获取的数据量是否已经满足所述请求,如果不满足,则从所选队列的所述低速部分获取剩余数据的装置。
19.如权利要求18所述的装置,其中所述队列是先进先出队列。
20.如权利要求18所述的装置,其中所述请求与数据相关联,并且所述装置还包括:
用于确定所述命令是否是写入命令,如果是,则将与所述请求相关联的数据写入所选队列的装置。
CN038062224A 2002-04-30 2003-04-28 缓存流数据 Expired - Fee Related CN1643872B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/135,603 2002-04-30
US10/135,603 US6892285B1 (en) 2002-04-30 2002-04-30 System and method for operating a packet buffer
PCT/US2003/013130 WO2003094479A1 (en) 2002-04-30 2003-04-28 Caching streaming data

Publications (2)

Publication Number Publication Date
CN1643872A CN1643872A (zh) 2005-07-20
CN1643872B true CN1643872B (zh) 2010-05-26

Family

ID=29399223

Family Applications (1)

Application Number Title Priority Date Filing Date
CN038062224A Expired - Fee Related CN1643872B (zh) 2002-04-30 2003-04-28 缓存流数据

Country Status (8)

Country Link
US (2) US6892285B1 (zh)
EP (1) EP1500245B1 (zh)
CN (1) CN1643872B (zh)
AT (1) ATE434328T1 (zh)
AU (1) AU2003225190B2 (zh)
CA (1) CA2477668C (zh)
DE (1) DE60328012D1 (zh)
WO (1) WO2003094479A1 (zh)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040004972A1 (en) * 2002-07-03 2004-01-08 Sridhar Lakshmanamurthy Method and apparatus for improving data transfer scheduling of a network processor
FR2842978B1 (fr) * 2002-07-26 2005-03-04 Thomson Licensing Sa Dispositif et procede de lecture differee de donnees video numeriques
US20040252685A1 (en) * 2003-06-13 2004-12-16 Mellanox Technologies Ltd. Channel adapter with integrated switch
US20060031565A1 (en) * 2004-07-16 2006-02-09 Sundar Iyer High speed packet-buffering system
US8762600B2 (en) * 2004-08-05 2014-06-24 Alcatel Lucent Digital delay buffers and related methods
US7428239B1 (en) * 2004-08-26 2008-09-23 Software Site Applications, Limited Liability Company Apparatus and method for priority queuing with segmented buffers
US7522566B2 (en) 2004-09-30 2009-04-21 Alcatel-Lucent Usa Inc. Computing optimal channel allocations using decomposition methods and related devices
US7606249B1 (en) * 2004-12-21 2009-10-20 Extreme Networks, Inc. Methods and systems for caching packets to be written to or read from packet memory
US7461180B2 (en) * 2006-05-08 2008-12-02 Cisco Technology, Inc. Method and apparatus for synchronizing use of buffer descriptor entries for shared data packets in memory
US7673102B2 (en) * 2006-05-17 2010-03-02 Qualcomm Incorporated Method and system for maximum residency replacement of cache memory
US7457892B2 (en) * 2006-06-05 2008-11-25 Freescale Semiconductor, Inc. Data communication flow control device and methods thereof
US7990867B1 (en) * 2007-05-03 2011-08-02 Xilinx, Inc. Pipeline for processing network packets
US8850137B2 (en) 2010-10-11 2014-09-30 Cisco Technology, Inc. Memory subsystem for counter-based and other applications
US8897316B2 (en) * 2010-12-31 2014-11-25 Telefonaktiebolaget L M Ericsson (Publ) On-chip packet cut-through
US20120254502A1 (en) * 2011-03-28 2012-10-04 Byungcheol Cho Adaptive cache for a semiconductor storage device-based system
US9491081B2 (en) * 2012-05-22 2016-11-08 Ixia Methods, systems, and computer readable media for generating test packets in a network test device using value list caching
US8930596B2 (en) * 2012-11-30 2015-01-06 International Business Machines Corporation Concurrent array-based queue
US9092502B1 (en) 2013-02-25 2015-07-28 Leidos, Inc. System and method for correlating cloud-based big data in real-time for intelligent analytics and multiple end uses
CN104065588B (zh) * 2013-03-21 2018-10-30 南京中兴新软件有限责任公司 一种数据包调度和缓存的装置及方法
US9886273B1 (en) * 2014-08-28 2018-02-06 Marvell Israel (M.I.S.L.) Ltd. Maintaining packet order in a parallel processing network device
CN105391567B (zh) * 2014-09-05 2019-05-24 华为技术有限公司 流量管理实现方法、装置和网络设备
CN104504106B (zh) * 2014-12-04 2018-05-15 中移全通系统集成有限公司 一种地图覆盖物区域渲染方法及相关设备
CN107005494B (zh) * 2014-12-24 2021-03-19 英特尔公司 用于在交换机中缓冲数据的装置和方法
JP6618330B2 (ja) * 2015-10-28 2019-12-11 キヤノン株式会社 通信装置及びその方法、コンピュータプログラム
US9906460B2 (en) * 2015-12-31 2018-02-27 Alcatel-Lucent Usa Inc. Data plane for processing function scalability
US10552321B2 (en) 2017-08-04 2020-02-04 Microsoft Technology Licensing, Llc Flexible buffer sizing in graphics processors
US10691587B2 (en) * 2017-08-24 2020-06-23 X-Drive Technology, Inc. Methods and systems for controlling hardware queues
CN110058816B (zh) * 2019-04-10 2020-09-18 中国人民解放军陆军工程大学 一种基于ddr的高速多用户队列管理器及方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5502833A (en) * 1994-03-30 1996-03-26 International Business Machines Corporation System and method for management of a predictive split cache for supporting FIFO queues
US5651002A (en) * 1995-07-12 1997-07-22 3Com Corporation Internetworking device with enhanced packet header translation and memory
US6009472A (en) * 1995-07-21 1999-12-28 Bull, S.A. Process for transferring data between nodes in a multinodal information system
CN1303053A (zh) * 2000-01-04 2001-07-11 国际商业机器公司 缓冲器的队列管理器

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US135495A (en) * 1873-02-04 Improvement in finger-bars for harvesters
US4374428A (en) * 1979-11-05 1983-02-15 Rca Corporation Expandable FIFO system
US5091850A (en) * 1987-09-28 1992-02-25 Compaq Computer Corporation System for fast selection of non-cacheable address ranges using programmed array logic
US5398245A (en) * 1991-10-04 1995-03-14 Bay Networks, Inc. Packet processing method and apparatus
US6147996A (en) 1995-08-04 2000-11-14 Cisco Technology, Inc. Pipelined multiple issue packet switch
US6091725A (en) 1995-12-29 2000-07-18 Cisco Systems, Inc. Method for traffic management, traffic prioritization, access control, and packet forwarding in a datagram computer network
US6240461B1 (en) 1997-09-25 2001-05-29 Cisco Technology, Inc. Methods and apparatus for caching network data traffic
US6236658B1 (en) 1997-11-21 2001-05-22 Cisco Technology, Inc. Method and apparatus for message routing, including a content addressable memory
US6205150B1 (en) * 1998-05-28 2001-03-20 3Com Corporation Method of scheduling higher and lower priority data packets
US6230241B1 (en) 1998-09-09 2001-05-08 Cisco Technology, Inc. Apparatus and method for transferring data in a data communications device
US6201729B1 (en) 1999-02-01 2001-03-13 Cisco Technology Inc. DRAM hidden row access method and apparatus
US6078532A (en) 1999-02-01 2000-06-20 Cisco Technology Inc. Method and apparatus for improving performance of DRAM subsystems with SRAM overlays
US6437789B1 (en) * 1999-02-19 2002-08-20 Evans & Sutherland Computer Corporation Multi-level cache controller
JP2001292164A (ja) * 2000-04-06 2001-10-19 Nec Corp パケット・スイッチおよびその切替方法
US7028299B1 (en) * 2000-06-30 2006-04-11 Intel Corporation Task-based multiprocessing system
WO2003067799A2 (en) * 2002-02-04 2003-08-14 Intel Corporation System and method for packet storage and retrieval
GB2389504B (en) * 2002-06-07 2005-06-08 Ceramaspeed Ltd Electrical food warming apparatus

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5502833A (en) * 1994-03-30 1996-03-26 International Business Machines Corporation System and method for management of a predictive split cache for supporting FIFO queues
US5651002A (en) * 1995-07-12 1997-07-22 3Com Corporation Internetworking device with enhanced packet header translation and memory
US6009472A (en) * 1995-07-21 1999-12-28 Bull, S.A. Process for transferring data between nodes in a multinodal information system
CN1303053A (zh) * 2000-01-04 2001-07-11 国际商业机器公司 缓冲器的队列管理器

Also Published As

Publication number Publication date
US6892285B1 (en) 2005-05-10
CN1643872A (zh) 2005-07-20
WO2003094479A1 (en) 2003-11-13
ATE434328T1 (de) 2009-07-15
CA2477668A1 (en) 2003-11-13
EP1500245B1 (en) 2009-06-17
EP1500245A1 (en) 2005-01-26
AU2003225190B2 (en) 2007-07-19
AU2003225190A1 (en) 2003-11-17
CA2477668C (en) 2011-01-18
US8180966B2 (en) 2012-05-15
DE60328012D1 (de) 2009-07-30
US20050169291A1 (en) 2005-08-04

Similar Documents

Publication Publication Date Title
CN1643872B (zh) 缓存流数据
US11916781B2 (en) System and method for facilitating efficient utilization of an output buffer in a network interface controller (NIC)
CN100444131C (zh) 具有仲裁分组协议的存储器仲裁系统及方法
US5541920A (en) Method and apparatus for a delayed replace mechanism for a streaming packet modification engine
US6574194B1 (en) Architecture of data communications switching system and associated method
CN100521655C (zh) 按每流排队的物理队列动态共享装置
CN100571195C (zh) 多端口以太网交换装置及数据传输方法
US7464201B1 (en) Packet buffer management apparatus and method
WO2005124577A2 (en) Scalable distributed parallel access memory systems with internet routing applications
CN115516833A (zh) 网络设备中的分组缓冲溢出
TWI526927B (zh) 資料緩衝器記憶體、資料緩衝器記憶體系統及其資料儲存方法
US7646779B2 (en) Hierarchical packet scheduler using hole-filling and multiple packet buffering
US6850999B1 (en) Coherency coverage of data across multiple packets varying in sizes
GB2322761A (en) A method for selecting virtual channels for the transmission of data packets over an ATM network
US7065628B2 (en) Increasing memory access efficiency for packet applications
US20040062242A1 (en) Routing packets in packet-based input/output communications
KR20030076680A (ko) 메모리로의 액세스 감소 방법 및 시스템 및 기록 매체
CN102932265A (zh) 数据缓存管理装置和方法
US7525962B2 (en) Reducing memory access bandwidth consumption in a hierarchical packet scheduler
US7944930B2 (en) Memory buffering with fast packet information access for a network device
US7493392B1 (en) Method and apparatus for assembly of virtually concatenated data
US6728861B1 (en) Queuing fibre channel receive frames
WO2006015513A1 (en) Method and system for processing multicast packets
WO2001018989A1 (en) Parallel bus communications over a packet-switching fabric
US20040210642A1 (en) Method and system for caching data in a network node

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100526

Termination date: 20210428

CF01 Termination of patent right due to non-payment of annual fee