CN1406037A - 分组处理器和分组处理器系统 - Google Patents

分组处理器和分组处理器系统 Download PDF

Info

Publication number
CN1406037A
CN1406037A CN02142686A CN02142686A CN1406037A CN 1406037 A CN1406037 A CN 1406037A CN 02142686 A CN02142686 A CN 02142686A CN 02142686 A CN02142686 A CN 02142686A CN 1406037 A CN1406037 A CN 1406037A
Authority
CN
China
Prior art keywords
packet handler
program
packet
grouping
command
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.)
Granted
Application number
CN02142686A
Other languages
English (en)
Other versions
CN1199423C (zh
Inventor
阿比留健一
鹤冈哲明
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of CN1406037A publication Critical patent/CN1406037A/zh
Application granted granted Critical
Publication of CN1199423C publication Critical patent/CN1199423C/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
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • H04L49/9073Early interruption upon arrival of a fraction of a packet
    • 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
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9057Arrangements for supporting packet reassembly or resequencing
    • 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/12Protocol engines
    • 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/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

在用于为分组转发设备等设备的输入分组执行预定分组处理的分组处理器和分组处理器系统中,包括一个分组数据保存器,用于从一个分组的头部顺序地将其接收;一个执行程序保存器保存一个描述分组处理过程的程序;和一个程序执行控制器,根据所提供的分组长度和上述程序确定将要执行的一个程序的命令数,并控制该程序的执行。而且,该程序执行控制器将一个命令获取定时和一个命令获取位置通知给前一级和后一级上的分组处理器中的至少一个分组处理器的程序执行控制器。

Description

分组处理器和分组处理器系统
技术领域
本发明涉及一种分组处理器和分组处理器系统,尤其涉及一种对输入给分组转发设备等设备的分组执行预定的分组处理的分组处理器和分组处理器系统。
随着通信技术的最新发展,为了在计算机和各种信息处理硬件(终端)之间交换数据,已经建立了一个全球性的网络系统,在该网络中诸如LAN(局域网)的专用网被互相连接。
根据用于例如在OSI(开放系统互连)模型中每一层的各种通信协议,在该全球网络系统中进行通信。最近,对应于OSI模型的传输层/网络层的一层中的主流通信协议分别是TCP/IP协议(传输控制协议/互联网协议)。
使用包括数据和首部信息的分组来执行通过TCP/IP协议在终端之间的通信。IP协议是无连接型的,相互连接局域网的诸如路由器的分组转发设备将分组择路发送到目的终端。为此,需要根据分组的首部信息来执行分组处理,例如目的表的检索处理和首部的重写处理。
背景技术
为了IP协议中的分组处理,除了上述目的表检索处理和首部重写处理之外,还有转发一个分组所必需的处理,例如一个输入分组的首部校验和的计算等,以及用于限制网络通信的分组过滤处理等。而且,分组处理依赖于用于各层的不同协议。
如果一个用于对应于各层的不同协议的分组处理的专用电路仅由硬件构成,电路组成很复杂。另外,很难适应与协议本身修改有关的处理程序上的改变。
因此,为了适应各种协议和协议本身的改变,分组处理一般必需经过通用处理器的软件处理。
[1]分组处理器
图12图示一个现有技术通用处理器102的结构,它由运算单元10、内部通用寄存器11、内部状态保存器12、控制器13和外部总线缓冲器14组成。而且,外部存储器120通过一条总线110连接到处理器102。
输入分组201被临时存储在存储器120中。处理器102将分组201或分组201的一部分从存储器120读出到内部通用寄存器11中,以软件形式执行预定的分组处理,并将处理后的数据从内部通用寄存器11写入到外部存储器中,以便根据该分组201重新构建一个分组202。这个分组202通过总线110被输出给例如在分组转发设备中所包括的下一级上的交换结构(未图示)。
在这种由通用处理器102、外部存储器120和总线110构成的分组处理中,通过总线110对存储器120的输入分组210/输出分组202的访问(写/读)以及通过同一总线110从处理器102对存储器120中存储的输入分组201/输出分组202的访问(读/写)导致额外开销。
除了额外开销之外,还存在一个问题,即由于存储器120自身的访问带宽的限制,导致很难提高分组处理的速度。
为了解决这个问题,在如图13所示的日本专利申请公开文本No.2000-349816中的分组处理器101安装有一个分组数据访问寄存器(包括在分组数据保存器70中;未图示),用于代替上述存储器1 2 0来直接获得输入分组2 01。
即,处理器101由运算单元10、内部通用寄存器11、执行程序保存器20、程序启动单元30a、控制器40a、内部状态保存器50、分组数据输入单元60、分组数据保存器70、分组数据输出单元80和中间数据保存器90构成。
在下文中,将描述每个组成部分的操作。
分组数据输入单元60通过一个外部分组到达信号221检测接收分组201的到达,并从将被顺序和直接存储在分组数据保存器70中的分组数据访问寄存器组(未示出)中的分组首部开始使该分组201与一个传输时钟同步。
程序启动单元30a与来自分组数据输入单元60的接收分组传输定时信号222同步以启动程序。
分组数据保存器70将从分组数据输入单元60输入的分组数据的一部分或全部存储在寄存器中。中间数据保存器90包括一个存储分组数据处理结果的寄存器组(未图示)。
可以通过程序访问保存器70和90中所包括的所有这些寄存器。与传输时钟同步,由分组数据保存器70和中间数据保存器90的寄存器所保存的数据被顺序移动到寄存器组中的下一个寄存器,并输出给分组数据输出单元80。
分组数据输出单元80将构成输入分组201处理结果的分组202顺序发送到处理器101的外部。
运算单元10执行各种操作,例如四种运算操作。内部通用寄存器11与程序合作。运算单元10可以使用内部通用寄存器11、保存器70和90的寄存器。操作结果(进位标志)作为一个内部状态被顺序存储在内部状态保存器50中。
执行程序保存器20保存一个由将要执行的命令构成的程序(例如微代码等)。
通过来自程序启动单元30a的启动命令信号233,控制器40a开始从执行程序保存器20获得命令,解码所获得的命令,并确定处理。例如,切换程序的列值,并执行预定寄存器的运算和数据传输处理,以便根据每个单元的内部状态确定随后的状态。在内部状态保存器50中保存该内部状态。
控制器40a将程序计数器递增“1”,获取下一个命令,并重复执行对应于该命令的处理。控制器40a执行预定数目的命令,结束操作,并等待下一分组的启动指示信号233。
图14更详细地图示获取一个命令的程序执行控制的例子。通过控制器40中包括的加一加法器35和程序计数器33执行这个程序执行控制。在执行程序保存器20中包括的存储器21由L个列0、1、……、L-1组成,由来自控制器40a的列切换信号224执行列的切换。
用于单个分组的微代码的可执行最大命令数N可以被存储在处理器101的0-(L-1)列中,微代码由条件和命令组成,并可以通过向存储器21提供存储器地址225和列切换信号224来获得。
输出存储器地址225的程序计数器33被初始化到地址0,并在命令执行开始之后,在+1加法器35上为每次命令执行时钟递增1,并顺序地指定地址1、地址2、……、和地址N-1。
而且,列切换信号224在初始状态上输出第0列,并在命令执行开始之后,例如在程序计数器33指示地址4、地址6等时,切换到分别指示第1列、第L-1列等的信号。因此,以MC0、MC1、……、MC4、……、MC6、MC7、……的微代码的顺序选择执行命令。
输入分组201通过输入单元60被存储在分组数据保存器70的寄存器中,以便根据微代码MC0、MC1等对分组的数据和首部信息执行分组处理。
此时,通过运算单元10和内部通用寄存器11来高速访问分组201的首部信息和数据,从而解决图12所示的处理器102和存储器120之间分组数据的读/写处理的额外开销。
分组处理器101具有不仅实现高速分组处理,而且能够通过在执行程序保存器中保存的微代码描述分组处理程序的灵活性。
[2]分组处理器系统
在图15所示的日本专利申请No.2000-373732的分组处理器系统中,图13所示的分组处理器101_1、101_2、……(在下文中,有时用参考数字101表示)被串行连接,其中在当前级上分组处理器101的分组处理结果输出(分组202、中间数据、内部状态234等)被用作前一级分组处理器101的数据输入。
根据图8A和图8B,在分组处理器系统中分组处理器的“前一级”和“后一级”被定义如下:当一个分组201被顺序为该分组201启动的多个分组处理器100构成的组中被接收并在分组数据保存器(分组寄存器)70中移动时,以驱动当前分组首部的分组处理器100(当前级)为基准,下一级的分组处理器指示在时间轴上先前启动的分组处理器100,前一级分组处理器指示在时间轴上将来被驱动的分组处理器100。
在分组处理器系统中,当例如因为预定的分组处理复杂导致程序的命令步骤数多时,划分分组处理并将划分后的处理的命令步骤分配给分组处理器101,从而实现流水线操作。
因而,保证单个分组处理器101的命令步骤数等于或小于一个预定值,从而,在维持所要求的高吞吐量的同时,能够进行高速和可编程的分组处理。
[1]分组处理器
由现有技术的分组处理器101用于单个分组的可执行命令数N是一个由请求吞吐量、命令执行时钟速率、分组数据保存器70中的数据传输带宽及其传输时钟速率所确定的一个有限值。
例如因为请求吞吐量变快,这个值变得较小,从而限制由处理器101执行的分组处理内容。
而且,因为分组处理器101与指示分组201到达的分组到达信号221同步启动该程序,可访问的分组数据范围还受命令执行时钟速率、分组数据保存器70中的数据传输带宽和传输时钟速率的限制。
即,从其首部到在执行可执行命令步骤时在分组数据保存器70中可存储之位置的分组数据构成可访问的范围。因此,数据传输带宽/传输时钟速率/分组数据保存装置的(在分组数据保存器70中包括)的寄存器级数越大,可访问的分组范围变得越宽。然而,寄存器带宽/级数是考虑硬件尺度等后最终确定的一个有限值。
因此,存在一个问题,当需要访问上层协议或数据内容时,例如在具有分层结构的网络模型中,可执行的命令数目和可访问的分组范围是有限的。
[2]分组处理器系统
因此,当分组处理所需要的命令数超过可执行的命令数时,图15所示的分组处理器系统已经作为第二现有技术被包括,以便通过流水线方法增加单个分组的可执行命令数。
然而,存在这样一个问题,即在图15所示的分组处理器系统中,每个分组处理器101可执行的命令数(命令步骤数)是有限的,因此,可执行命令数和可访问的分组范围受到限制。
因此,在串行连接分组处理器101的整个分组处理器系统的处理量在物理设备层中具有一个有限的命令步骤数。在硬件制造、产品发货等之后,仅在冗余步骤中可执行的处理可以适应功能的添加。
考虑到将来添加功能,当在一个安装好的硬件中需要超过可执行命令步骤数的处理的情况下,必须以设备为基础多级连接设备从而保证足够的命令步骤数。
然而,大量分组处理利用基本处理是足够的。另外,安装用于可选处理和在将来可能添加的功能的硬件(设备)在硬件规模和成本方面并不值得。
如上所述,每种网络协议具有一种分层结构,所以分组传输数据具有分层结构。而且,一种特定协议的一些分组具有可变长度的首部结构。
除了当前作为主流的IPv4(互联网协议版本4)之外,还存在下述协议,例如IPv6(互联网协议版本6)协议和MPLS(多协议标记交换)协议。
图16A图示IPv4协议的首部,包括版本、互联网首部长度、服务类型、总长度、标识、标记、分段偏移、生存期、协议、首部校验和、源地址、目的地址、选项(可变)和填充字节等字段。
在互联网首部长度(IHI)字段中,设置指示IP首部自身长度的信息。通过这个信息,可以确认IPv4的首部长度。
图16B图示IPv6协议的首部,它包括版本、优先权、流标签、负载长度、下一首部、跳限制、源地址和目的地址等字段。其长度是固定的40字节。
当使用一个扩展首部时,指示在IPv6首部之后的扩展首部类型的信息被设置在下一首部字段中。
图16C图示IPv6协议的扩展首部的例子,它包括下一首部、首部扩展长度等字段。扩展首部长度是8字节דn”的任意字节长度,并且其长度被设置在首部扩展长度字段中。
当进一步使用扩展首部时,在其自身首部之后指示扩展首部类型的信息被设置在下一个首部字段中,当不使用扩展首部时,设置一个上层协议号。
为了识别包括IPv6扩展首部的IPv6首部的长度,参考在图16B所示的IPv6扩展首部的“下一首部字段”来识别IPv6扩展首部是否跟随在IPv6首部之后和在跟随时所跟随的IPv6扩展首部的类型。而且,通过“首部扩展长度字段”的值来识别当前扩展首部的长度。
而且,参考图16C所示的扩展首部的下一首部字段,识别是否还跟随有IPv6扩展首部,当跟随时,跟随有何种IPv6扩展首部。重复该标识,直到不跟随有扩展首部时,从而能够识别包括扩展首部的IP首部的长度。
类似地,可以访问一个包括固定或可变长度首部的分组的一个预定字段中的数据。
图17A图示MPLS的填充首部。该填充首部包括一个为试验预留的标签、一个S比特和生存时间(TTL)的字段。在这个填充首部中,参考S比特确定是否进一步跟随有填充首部或有效负载,以便可以识别一个连续填充首部的整个长度。
图17B图示TCP协议的首部。这个首部包括下述字段:源端口号、目的端口号、序列号、接收确认号、数据偏移、保留字段、控制标记、窗口、校验和、紧急指针、任选字段和填充字段。
图18图示一个分层分组的例子。在这个例子中,在IPv6分组的数据(有效负载)字段中容纳上层的TCP分组。而且,IPv6首部包括一个IPv6基本首部(固定长度,参见图16B)和任意级数的IPv6扩展首部(任意长度,参见图16C)。
为了根据如此分层的IPv6分组的首部位置识别分组在上层的开始位置及其类型(虽然在图18中类型是TCP分组,也存在类型是UDP(用户数据报协议)分组等的情况)必需通过上述程序来识别首部长度。
因此,一般需要分组处理器101根据通过每种协议确定的分组格式来执行处理。例如,在上述扩展首部重复的情况下,需要重复通常的处理。
图19图示在分组处理器101的控制器40a中包括的程序计数器33和程序加法器34,和在执行程序保存器20中包括的存储器21。
可以通过硬件组合,使分组处理器101的命令集(微代码集)成为高速执行分组处理所必需的功能集。例如,可以使指示一个跳转的微代码为“con”(跳转命令的执行条件)+“jmp”(跳转命令的助记符)+“r(i)”(指示跳转目标位置的操作数)。可以通过相对位置或绝对位置来指定跳转目标的位置。
当微代码的操作数r(i)=“正增量值(相对位置)”时,加法器34将通过相加该增量值和程序计数器33的当前值所获得的值设置到程序计数器33。也就是说,该程序跳回到当前执行位置之前的上述增量上的命令位置。
这意味着在执行跳转之后,不执行从当前执行位置到命令位置的命令。
另一方面,微代码的操作数r(i)=“负增量值(相对位置)”意味着重复执行从跳转命令执行位置到该执行之前位置的命令。
图20A和20B分别图示重复相同命令的流程的例子。图20A图示一个流程,其中在步骤T13的跳转命令是con=“No”,相对位置=“负”。图20B图示一个流程,其中在步骤T23的跳转命令是con=“无条件”,相对位置=“负”。
在普通处理器中,通过组合跳转命令来实现重复处理。
然而,在现有技术的分组处理器系统中,执行预定命令数之后的分组处理器101仅通过下一分组的到达就启动处理。这意味着当前为单个分组执行处理的分组处理器101的“前一级”和“下一级”上的分组处理器101处于停止处理该分组的状态上。
因此,存在一个问题,即一个跨越多个分组处理器101的程序的转移命令既不能被描述,也不能被执行。
发明内容
因此,本发明的一个目的是提供一种对输入分组执行预定分组处理的分组处理器和分组处理器系统,其中增加了可执行的命令数,扩大了可访问的分组范围、易于转移处理,并灵活地描述一个分组处理程序。
为了实现上述目的,本发明的分组处理器包括:一个分组寄存器,用于从一个分组的首部将其顺序地接收;一个执行程序保存器,用于保存一个描述分组处理过程的程序;和一个程序执行控制器,用于根据所提供分组的长度和程序来确定将被执行的程序的命令数,并用于控制该程序的执行(权利要求1)。
首先,将描述本发明的原理。分组通过分组寄存器中一点的时间正比于分组长度而延长。即该分组处理器可以读取该分组的时间延长。
因此,根据程序的处理内容和通过这一处理访问的分组内的位置,可以增加可执行的命令数,并扩大可访问的分组范围。
因此,本发明的分组处理器不仅包括运算单元、内部通用寄存器和通用处理器所包括的命令执行单元,而且包括可以直接访问的分组寄存器、执行程序保存器和程序执行控制器。该执行程序保存器保存一个描述该分组处理过程的程序。该分组寄存器顺序地从分组首部进行接收。程序执行控制器根据从内部或外部提供的分组长度和该程序来确定将被执行的命令数以控制程序的执行。
因此,能够增加可执行命令数,并扩大可访问的分组范围。
而且,本发明的分组处理器系统包括:级联的至少两个分组处理器;每个处理器包括:一个从其首部顺序接收分组的分组寄存器、一个用于保存一个描述分组处理过程的程序的执行程序保存器、一个根据所提供分组的长度和程序来确定将被执行的命令数,并用于控制程序执行的程序执行控制器、和一个用于保存内部状态的内部状态保存器;当前级上的分组处理器的内部状态和一个输出分组被提供给前一级上的分组处理器(权利要求2)。
即,分组处理器不仅包括一个运算单元、一个内部通用寄存器和通用处理器所包括的一个命令执行单元,而且包括一个分组寄存器、一个执行程序保存器、一个程序执行控制器以及一个用于保存内部状态的内部状态保存器。
至少两个分组处理器被级联以组成分组处理器系统,从而将当前级上的分组处理器的内部状态和输出分组提供给前一级上的分组处理器,它根据内部状态执行所输入的输出分组的分组处理。
因而,能够增加单个分组的可执行命令数,并扩大整个分组处理器系统的可访问的范围。
而且,本发明的分组处理器系统包括:级联的至少两个分组处理器,以便当前级上的分组处理器的输出分组被提供给前一级上的分组处理器;每个处理器包括:一个从其首部顺序接收分组的分组寄存器、一个用于保存一个描述分组处理过程的程序的执行程序保存器和一个用于控制程序执行的程序执行控制器;当前级上的分组处理器的程序执行控制器将一个命令获取定时和一个命令获取位置通知给前一级和下一级上的分组处理器中的至少一个分组处理器的程序执行控制器(权利要求3)。
即,分组处理器不仅包括一个运算单元、一个内部通用寄存器和通用处理器所包括的一个命令执行单元,而且包括一个分组寄存器、一个执行程序保存器和一个程序执行控制器。
至少两个分组处理器被级联以组成分组处理器系统。在这个系统中,存在下述情况:仅前一级上的分组处理器被连接到当前级上的分组处理器、前一级和后一级上的分组处理器被连接到当前级上的分组处理器,和仅后一级上的分组处理器被连接到当前级上的分组处理器。
当前级上的分组处理器的程序执行控制器将一个命令获取定时和一个命令获取位置通知所连接分组处理器的程序执行控制器。
因此,能够描述和执行跨越分组处理器的程序的转移命令,从而能够灵活地执行分组处理程序。
而且,在根据上述发明的本发明的分组处理器系统中,程序执行控制器可以根据所提供分组的长度和一个程序来确定将被执行的该程序的命令数(权利要求4)。
因此,可以根据分组长度和程序内容增加可执行命令的数目,扩大可访问的分组范围,并降低例如分组处理级数。
而且,在根据上述发明的本发明的分组处理器系统中,分组处理器还可以包括一个用于保存一个内部状态的内部状态保存器,并且当前级上分组处理器的内部状态可以被提供给前一级上的分组处理器(权利要求5)。
因此,能够轻易地连接分组处理器。
而且,在根据上述发明的本发明的分组处理器系统中,执行程序保存器能够在列间切换,内部状态可以包括一个列的值(权利要求6和19)。
即,执行程序保存器可以在列间切换。例如,当前和前一级上的执行程序保存器保存跨越同一列的一连串程序。当前级上的分组处理向前一级上的分组处理器通知在当前执行程序中存储的列值。
因而,当前/前一级上的分组处理器可以根据列值选择和执行该一连串程序。
而且,在根据上述发明的本发明中,通过完成分组处理或输入一个新分组,程序执行控制器可以停止获取用于该分组的下一命令(权利要求7、8和20)。
即,当一个分组处理在分组寄存器中完成时,不能执行对该分组的处理。而且,当输入一个新分组时,必需开始对新分组的处理。因此,程序执行控制器停止获取用于当前处理中的分组的命令。
因此,可以消除无关紧要的分组处理操作,并可靠地为下一个新分组开始分组处理。
而且,在根据上述发明的本发明中,程序执行控制器可以不为预定命令执行时钟执行一个命令获取(权利要求书9、10和21)。
即,程序执行控制器并不在当前命令获取和下一命令获取之间为预定命令执行时钟执行命令获取。为了这些预定命令执行时钟,分组在分组寄存器中移位。
因此,当由下一命令处理的分组字段进入在分组寄存器中将被处理的分组寄存器的位置中时,程序执行控制器可以执行命令获取,以便可以执行下一个命令。
因此,不再需要仅在分组寄存器中移位分组而不执行其它操作的命令,从而降低命令数量。能够灵活地执行分组处理程序。
而且,在根据上述发明的本发明中,当接收到一个指示何时输入一个分组的传输定时信号之后,程序执行控制器可以不为预定命令执行时钟执行一个命令获取。
因此,不再需要使程序开始位置是程序的开头,从而能够灵活地描述分组处理程序。
注意到预定命令执行时钟可以包括一个命令获取位置(权利要求14)。
因此,很容易描述跨越分组处理器的转移程序。
而且,在根据上述发明的本发明中,程序执行控制器可以根据分组处理器自身的内部状态和程序来确定一个命令获取位置(权利要求15、16和22)。
而且,在根据上述发明的本发明中,内部状态可以包括一个可允许的命令数或一个可执行的命令数(权利要求17和18)。
通过这些发明,能够灵活地描述分组处理程序。
附图说明
图1是图示根据本发明的分组处理器的一个实施例的方框图;
图2是一个方框图,更详细地图示根据本发明的分组处理器中的执行程序保存器、分组数据保存器和程序执行控制器;
图3图示根据本发明的分组处理器中程序执行控制的一个例子;
图4A和图4B图示根据本发明的分组处理器中命令执行定时(列切换和命令获取(1))的一个例子;
图5是图示根据本发明的分组处理器系统的实施例(1)的方框图;
图6是图示根据本发明的分组处理器系统的实施例(2)的方框图;
图7是图示根据本发明的分组处理器系统中程序执行控制器的结构的方框图;
图8A和图8B图示根据本发明的分组处理器系统中根据转移命令的命令执行顺序的一个例子;
图9A和图9B图示在根据本发明的分组处理器系统中的一个命令执行定时(命令获取(2))的一个例子;
图10A和图10B图示在根据本发明的分组处理器中在IPv6分组中所包括的TCP端口号获取算法的一个例子;
图11A-11D图示在根据本发明的分组处理器中在IPv6分组中包括的TCP端口号获取的一个例子;
图12是图示现有技术分组处理器的结构(1)的方框图;
图13是图示现有技术分组处理器的结构(2)的方框图;
图14图示现有技术分组处理器的程序执行控制;
图15是图示现有技术分组处理器系统的结构的方框图;
图16A-16C是普通IP首部的格式图;
图17A和17B是普通填充首部和TCP首部的格式图;
图18图示包括一个普通TCP分组的IPv6首部的结构;
图19是图示普通分组处理器的转移命令的示意图;和
图20A和20B是图示普通重复处理流程的流程图。
在所有附图中,相同的参考数字表示相同或相应的组件。
具体实施方式
[1]分组处理器的实施例
图1图示根据本发明的分组处理器100的实施例。这个处理器100与图13所示的现有技术处理器101的不同在于用程序执行控制器30和命令执行单元40代替了现有技术的程序启动单元30a和控制器40a。
另外,该处理器100与处理器101的不同还在于程序执行控制器30从分组数据输入单元60接收一个接收分组长度信号223。
程序执行控制器30和命令执行单元40中基本操作的组合与程序启动单元30a和控制器40a中操作的组合相同。然而,处理器100与现有技术处理器101的不同还在于程序执行控制器30可以根据接收分组长度信号223、接收分组传输定时信号222等来改变执行程序的命令数。
图2图示上述执行程序保存器20、程序执行控制器30和分组数据保存器70的结构。除了与图14所示的现有技术存储器的存储器21相应的基本命令存储器21_1之外,执行程序保存器20的微代码存储器21还包括扩展命令存储器21_2-21_4。
在基本命令存储器21_1中,维持预定吞吐量的可执行数目N=“10”的命令(微代码)以与现有技术存储器21相同的方式被存储。在扩展命令存储器21_2-21_4中,存储扩展命令(微代码)。根据来自程序执行控制器30的指令来确定是否执行存储器21_2-21_4中的扩展命令。
程序执行控制器30包括一个解码器312。分组数据保存器70包括分组数据访问寄存器p0-p9。
分组数据输入单元60以与现有技术输入单元60相同的方式通过外部分组到达信号221来检测接收分组201的到来,并使接收分组201与来自分组的首部的时钟同步以便被顺序和直接存储在寄存器p9-p0中。
而且,与现有技术的输入单元60不同,除了接收分组传输定时信号222之外,输入单元60还将接收分组长度信号223输出给程序执行控制器30。该接收分组长度信号223被保存直到新的分组数据被输出给分组数据保存器70。
注意到接收分组长度信号223可以在分组数据输入单元60中被测量并获得,或者可以从外部与分组的输入同步地直接提供给程序执行控制器30。
图3图示用于执行图2所示的执行程序保存器20中所存储的程序的一个控制例子。在这个保存器20中,为了简化,省略了图2所示的扩展命令存储器21_3和21_4。
在图3中,在基本命令存储器21_1中命令数N=“10”,在扩展命令存储器21_2中命令数M=“30”。
程序执行控制器30,如随后将要描述的图7所示,包括与图14所示相同的程序计数器33和加一加法器35。
通过接收分组传输定时信号222的接收来触发,控制器30将列切换信号224=“第0列”和存储器地址225=“地址0”作为输出提供给执行程序保存器20,并通过命令数据226在基本命令存储器21_1中获取首部命令=“微代码MC0”作为一个输入。
然后,控制器30重复执行操作:将程序计数器33(未图示)递增1,并获取下一个命令直到在基本命令存储器21_1中存储的最终命令。控制器30仅执行程序控制命令,例如列切换。命令执行单元40执行其它命令。
当所获取的命令是一个列切换命令时,程序执行控制器30将由列切换命令的操作数指定的列值通过列切换信号224提供给保存器20以执行切换。保存这个列值直到通过下一列切换命令来改变该值,或者输入一个新的接收分组传输定时信号222。
在处理完基本命令存储器21_1中所存储的命令之后,根据通过请求吞吐量获得的所允许命令数、命令执行时钟速率、分组数据保存器70的数据传输带宽、传输时钟速率、目标分组长度(最小值)和通过接收分组长度信号223从分组数据输入单元60获得的可执行命令数,程序执行控制器30确定是否执行扩展命令存储器21_2。
当请求吞吐量是2.5Gbps,分组数据保存器70的数据传输带宽和传输时钟速率分别是32比特和100MHz,命令执行速率也是100 MHz时,对于40字节的分组所允许的命令数假设为“12”。
而且,假设当由来自分组数据输入单元60的接收分组长度信号223所指示的分组长度=80字节时,在基本命令存储器21_1中的N=“12”,在执行命令存储器21_2中的M=“36”,可执行命令数为“24”,以便扩展命令存储器中的“12”个命令变得可以执行。
而且,当分组长度是160字节时,可执行命令数=“48”。因此,扩展命令存储器21_2中的“36”个命令变得可以执行。
图4A图示在程序执行控制器30中所包括的命令获取使能信号生成器311。根据接收分组传输定时信号222、所允许的命令数227和根据接收的分组长度获得的可执行命令数228,这个生成器311生成一个命令获取使能信号229。
所允许的命令数227被设置为“12”。命令获取使能信号生成器311根据可执行的命令数228输出时钟数的命令获取使能信号229,以便确定是否执行扩展命令命令存储器21_2。
图4B图示当程序执行控制器30和命令执行控制器单元40根据命令获取使能信号229改变将要执行的命令数时的一个定时的例子和一个列切换的例子。
时钟220用作命令执行时钟和传输时钟,以便程序执行控制器30和命令执行单元40与时钟220同步操作。由接收分组传输定时信号222的出现来触发,寄存器p9-p0(参见图2)使分组201的数据D0-D9与时钟220同步以便被顺序地传输(移动)。
控制器30输出存储器地址225=“存储器地址0”和存储器列切换信号224=“第0列”。
程序执行控制器30和命令执行单元40执行在“存储器地址Adr0”和“第0列”中存储的微代码MC0。此后,以相同的方式执行微代码MC1和MC2。
当微代码MC2是一个条件转移命令(列切换命令),控制器30根据该条件输出存储器地址225=“地址Adr4”和存储器列切换信号224=“第1列”以获取微代码MC4。
注意到当条件并不需要列切换时,控制器30并不改变存储器列切换信号224=“第0列”,而是输出存储器地址225=“地址Adr4”以获取“第0列”的微代码“地址Adr4”和随后的微代码(见图3)。
此后,命令执行单元40顺序地执行转移的命令MC4、MC5等。然后,控制器30在每次命令切换列时执行指定的列切换,并且命令执行单元40以相同的方式执行由列切换选择的命令。
执行在基本命令存储器21_1中设置的所有微代码MC0-MC9。当如虚线所示的命令获取使能信号229进一步指示“命令获取使能”时,例如,顺序地执行命令获取使能信号229结束后单个时钟之后的从微代码MC10到微代码MC11的处理。
即,当可执行命令数等于或小于所允许的命令数时,程序执行控制器30仅执行基本命令存储器21_1直到结束该命令,否则,进一步执行扩展命令存储器21_2的命令(可执行的命令数-所允许的命令数)。
因此,根据接收分组长度信号223和程序的处理内容,本发明的处理器101改变程序执行控制器30执行的命令数,从而能够增加可执行的命令数。而且,这使得能够访问位于分组后部的位置的数据。
虽然在图4A和图4B中通过命令获取使能信号229来改变可执行命令数,但也可以通过例如描述将所允许命令数227重新写入基本命令存储器21_1内程序中的命令来改变可执行的命令数228。
此后,这将在处理包括IPv6首部的分组201的情况中描述。
如图12所示,分组201的IPv6基本首部的长度被固定在40字节。因此,假如寄存器p0-p9的宽度=“32比特”,τ=“传输时钟宽度”=“命令执行时钟宽度”,在IPv6基本首部中使能用于10τ命令的分组处理(即10个命令;这个数量等于在基本命令存储器21_1中所存储的可执行命令数)。
在执行IPv6基本首部的分组处理和基本命令存储器2 1_1中存储的所有命令之后,IPv6扩展首部的首部或上层(TCP/UDP等)跟随在基本首部之后。
为了确定所跟随的是这些首部中的哪种首部,在基本命令存储器21_1中预先描述IPv6基本首部的处理,并提取“下一首部字段”的值,以便描述在诸如通用寄存器11(参见图1)中存储的命令。
根据这种方法,不需要确定是否通过基本命令存储器21_1中的程序(命令)来执行扩展首部的处理。基于在上述通用寄存器11中设置下一首部的值的前提,仅必须在扩展命令存储器21_1中执行编程。
作为一个编程的例子,对应于IPv6扩展首部、TCP首部和UDP首部的分组处理程序分别存储在扩展命令存储器21_2的第0-2列中。
程序执行控制器30仅必须根据在通用寄存器11中所存储的“下一首部字段”的值来确定IPv6扩展首部、TCP首部或UDP首部是否跟随其后,从而通过所获得的列切换来选择对应于所确定的首部的分组处理程序。
如上所述,减少了编程中的处理开销,在维持预定吞吐量的情况下能够安装可选处理。
[2-1]分组处理器系统的实施例(1)
图5图示根据本发明的分组处理器系统的实施例(1),其中图1所示的分组处理器100_1、100_2、……(在下文中,有时用参考数字100表示)被串行连接以组成一个分组处理器系统。
每个分组处理器100内的程序执行控制器30的内部状态234被保存在内部状态保存器50中,将被交接给前一级上的分组处理器100。
内部状态234包括一个所允许的命令数、一个可执行的命令数和一个列值。注意到所允许的命令数和可执行的命令数不由内部状态交接,但根据在实施例(1)中所描述的算法确定的结果指示是否获得下一个命令。因此,所允许的命令数和可执行的命令数可以与分组201同步作为中间数据2 35从分组处理器100发送给前一级上的分组处理器100。
而且,可以通过前一级上的分组处理器100中的程序来设置将被从当前级上的分组处理器发送到前一级上的分组处理器100的所允许命令数和可执行命令数。
根据本发明的分组处理器系统,可以增加每个分组处理器100中可执行的命令数,并扩大对分组201的可访问范围,同时增加整个系统的可执行命令数,并扩大可访问的范围。
因而,可以降低分组处理器系统的级数。
[2-2]分组处理器系统的实施例(2)
图6图示根据本发明的分组处理器系统的实施例(2)。在这个系统中,以与图5所示的实施例(2)的系统相同的方式,串行连接多个分组处理器100_1、100_2、……(在下文中,有时用参考号100表示)。
实施例(2)的系统与实施例(1)的系统不同在于每个分组处理器100向下一级上的处理器100提供“启动指示信号230_1”和“程序计数器值231_1”,并将“启动指示信号230_2”和“程序计数器值231_2”提供给前一级上的处理器100。
注意最后一级上的分组处理器100_1没有跟随其后的处理器100,并仅向前一级上的处理器100提供“启动指示信号230_2”和“程序计数器值231_2”。类似地,第一分组处理器100仅向后一级上的处理器100提供“启动指示信号230_1”和“程序计数器值231_1”。
图7图示实施例(2)系统中的每个分组处理器100的执行程序保存器20和程序执行控制器30的结构。保存器20的结构与图2所示的相同,并安装有存储微代码的存储器21。
程序执行控制器30包括控制器31、程序控制器32、程序计数器33、加法器34、加一加法器35、选择器36和37以及寄存器38。
控制器31包括命令获取使能信号生成器311和解码器312,用于输入定时信号222、来自前一级的启动指示信号230_1、来自后一级的启动指示信号230_2、延迟时钟数232和命令数据226,并用于输出到下一级的启动指示信号230_1、到下一级的程序计数器值232_1、到前一级的启动指示信号230_2、到前一级的程序计数器值231_2以及命令获取使能信号229。
存储器控制器32输入命令获取使能信号229,并输出用于控制列切换信号224和程序计数器33的信号。程序计数器33输出存储器地址225。
当输入启动指示信号230_1、启动指示信号230_2或定时信号222时,控制器31向选择器36提供一个信号,指示其选择“预定初始化值”、“计数器值231_1”或“计数器值231_2”作为程序计数器3 3的下一个值。
当既不输入启动指示信号230_1、230_2,也不输入定时信号222时,控制器31对通过存储器地址225和列切换信号224指定的存储器21中的命令数据226解码,并作为程序计数器33的下一个值,确定选择下述值中的任一个:“通过在加一加法器上将程序计数器33的值递增“1”获得的值”、“由命令数据226的操作数指定的绝对位置”和“由命令数据226的操作数指定的相对位置”。
在如图15所示的现有技术的分组处理器系统中,分组处理器101在执行预定的命令数之后仅通过下一分组到达信号221来启动处理。
结果,当在为了分组201在分组数据保存器70中移动而顺序启动的多个分组处理器101中接收到某一分组201时,前一级和后一级上的分组处理器101对于当前被驱动的分组处理器101来说处于停止状态。
因此,不可能描述跨越分组处理器101的处理,并继续重复处理。
为了解决上述问题,除了用于立即开始从执行程序保存器20中获取命令的普通接收分组传输定时信号222的启动指令之外,实施例(2)的分组处理器系统中的分组处理器100的程序执行控制器30还使能来自前一级和后一级的分组处理器100的启动指令。
即,在通过接收分组传输定时信号222的启动指令的情况下,控制器30从基本命令存储器21_1的开头位置开始命令获取。当从前一级和后一级上的分组处理器100接收启动指示信号2 30_1和2 30_2时,从被提供该信号的程序计数器值231_1和231_2的位置开始命令获取。
控制器30在解码器312上解码所获取的命令数据226,并确定仅与诸如列切换的程序控制命令有关的处理。由命令执行单元40(参见图6)确定其它命令数据226的处理。
即,如果命令数据226不是程序控制命令,控制器30将所获取的命令数据226输出给命令执行单元40,并将程序计数器33递增“1”以获取下一个命令数据226。
而且,如果所获取的命令数据226是列切换命令,控制器30根据该命令指定的操作数(列值)从该列获得下一个命令数据。保存该列值,直到通过命令改变该值,或者输入一个新的分组。
命令数据226可以指定程序计数器33的递增值(j)。当获取命令数据226,其中指定一个正的或负的递增值“j”时,控制器30根据递增值(j)、该命令的所在位置(i)和分组处理器所存储的命令数(N)来确定该转移是否跨越分组处理器100。
当该转移并不跨越分组处理器100时,控制器30用一个值更新该程序计数器33,所述值是包括标明正或负符号的递增值(j)与程序计数器33的当前计数器值相加而得到的值,从而获取下一个命令数据226。
图8A和图8B图示根据转移命令的命令执行顺序的例子。图8A图示一个后向转移的例子。在当前级上的处理器中,在所在位置“i”上的命令数据表示一个负的递增值“j”。图8B图示一个前向转移的例子。在当前级的处理器中,在所在位置“i”上的命令数据指示一个正的递增值“j”。
当转移跨越分组处理器100并指定负的递增值“j”时,控制器30将启动指示信号230_1和程序计数器值231_1输出给下一级上的分组处理器100。
根据所指定的递增值“j”、这个命令的所在部分“i”和分组处理器100的可执行命令数N获得将发送给下一级上的分组处理器100的程序计数器值231_1(=“x”)(参见图8A)。
当转移跨越分组处理器100并指定正的递增值“j”时,控制器30将启动指示信号230_2和程序计数器值231_2输出给前一级上的分组处理器100。
根据所指定的递增值“j”、这个命令所在的部分“i”和分组处理器的可执行命令数N获得将发送给前一级上的分组处理器的程序计数器值231_2(=“x”)(参见图8B)。
注意到前一级上的分组处理器100使用程序计数器值231_2作为一个延迟时间,直到程序获取开始。
将参考图8A和图8B描述控制器30获取程序计数器值231_1和231_2的过程。
(1)如果由命令所指示的递增值“j”为负,则控制器30比较“i”与“j”(绝对值)(参见图8A)。
(1-1)当i<j时,控制器30确定该转移跨越分组处理器100,并将启动指示信号230_1和程序计数器值231_1=“x”=“N-(j-i)”输出给下一级上的分组处理器100。
(1-2)当i>j时,控制器30确定该转移并不跨越分组处理器100,从程序计数器值“i”中减去“j”以获得新的程序计数器值=“i-j”。
(2)如果由命令所指定的递增值“j”为正,则控制器30比较“i+j”与N(参见图8B)。
(2-1)当i+j>N时,控制器30确定该转移跨越分组处理器100,并将启动指示信号230_2和程序计数器值231_2=“x”=“i+j-N”输出给前一级上的分组处理器100。
(2-2)当i+j<N时,控制器30确定该转移并不跨越分组处理器100,则将“j”与当前程序计数器值“i”相加以获得一个新的程序计数器值=“i+j”。
控制器30重复上述转移过程,直到获取命令存储器中程序的最终地址的命令。
当识别到接收分组传输定时信号222时,控制器30一般以与上述的图1实施例相同的方式从基本命令存储器21_1的起始点开始执行。然而,当从前一级上的分组处理器100接收到启动指示信号230_1时,控制器30获取与启动指示信号230_1同时提供的程序计数器值231_1的地址的命令。
反之,当接收来自下一级上分组处理器100的启动指示信号230_2时,控制器30识别到接收分组传输定时信号222的输入,并在相同命令执行时钟的延迟时间之后,获取程序计数器值231_2的地址的命令,因为程序计数器值231_2与启动指示信号230_2被同时提供。
因此,本发明的分组处理器系统可以执行跨越分组处理器100的转移命令。
图9A和图9B图示当程序执行控制器30从下一级上的分组处理器100接收启动指示信号230_2时命令执行的时序的例子。如图7所示,控制器30包括控制器31,所述控制器31包括命令获取使能信号生成器311。
图9A图示该生成器311,它从寄存器38输入接收分组传输定时信号222和延迟时钟数232(参见图7),并输出命令获取使能信号229。
如此构成控制器30以便来自下一级上的分组处理器100的程序计数器值231_2可以作为延迟时钟数(命令执行时钟数)232被设置在寄存器38中。即,如图7所示,控制器30如此构成,以便程序计数器值231_2可以通过选择器37存储在寄存器38中。
在图9B中,定时①表示延迟时钟数等于“0”的情况,定时②表示延迟时钟数等于“3”的情况。
注意到生成器311与时钟220同步。
在定时①上,生成器311在接收分组传输定时信号222上升沿之后延迟1个时钟后使命令获取使能信号229“有效”。结果,输出存储器地址225=“Adr0”,并在延迟1个时钟后输出命令数据226=“微代码MC0”。
此后,存储器地址225=“Adr1”、……、“Adr4”被顺序输出,在以相同方式延迟1个时钟后,输出相应的命令数据226=“MC1”、……、“MC4”。
在定时②上,生成器311与时钟220的上升沿同步使命令获取使能信号229“有效”,并进一步自时钟220的该上升沿开始延迟在寄存器38中存储的“延迟时钟数”=“3”个时钟,所述时钟220的上升沿自接收分组传输定时信号222的上升沿延迟1个时钟。
因此,顺序输出存储器地址225=“Adr0”、“Adr1”、……,以便在仅延迟1个时钟的情况下输出相应的命令数据226=“MC0”、“MC1”、……。
因此,可以提供这样一个区域,其中在接收分组传输定时信号222之后不为预定命令执行时钟执行一个命令。
注意到在分组头部输入之后,在已经超过根据数据传输带宽、传输时钟速率和分组数据保存器70的接收分组长度而获得的所需传输时钟数的时间时,控制器30结束下一个命令的获取,并等待接收分组传输定时信号222(即下一个分组的输入)或启动指示信号230_1或230_2。
因而,可以避免故障以便执行无用分组处理,尽管处理中的分组在单个处理器100的分组数据保存器70中并不存在。
图10A图示在同一分组处理器100中执行重复处理的一个算法的例子。在这个算法的例子中,考虑到在IPv6分组中分配任意长度的扩展首部,获取上层协议TCP源/目的端口号。
为了简化说明,假设命令执行时钟速率是分组保存器70中分组201的传输时钟速率的两倍,分组数据保存器70中的寄存器p0-p9带宽假设为32比特。
如图18所示,IPv6首部包括这样一个部分,其中长度为8字节整数倍的各种扩展首部被链接到固定长度(40字节)的基本首部。
因此,为了从IPv6分组获取上层协议UDP/TCP源/目的端口号,要求控制器30顺序地重复下述处理:通过设置在基本首部或扩展首部中“下一首部字段”的一个“类型值”,确定是否跟随有扩展首部或跟随有上层协议,使用基本首部中的“下一个首部字段”  作为基点,并通过“首部扩展长度字段”的值获取下一个首部字段。
注意到通过RFC1700确定插入到“下一个首部字段”中的“首部类型值”。在TCP的情况下,例如,首部类型值是“6(十进制)”,和在UDP的情况下,首部类型值是“17(十进制)”。因此,当“下一个首部字段”的值=“6”或“17”时,控制器30可以确定紧接着的是上层TCP或UDP分组的首部。
虽然每个分组处理器100通过命令执行时钟顺序地执行命令,目标分组201的数据通过传输时钟被顺序地在分组数据保存器70的分组数据访问寄存器p0-p9中传输。考虑到该事实,要求控制器30提取IPv6扩展首部的下一个首部和下一个首部扩展长度字段。
通过一个运算命令执行这一提取,获得操作数“分组数据访问寄存器p0-p9的参考位置(例如寄存器p9)”。
类似地,TCP首部的“源/目的端口号字段”通过数据传输命令被传输给“传输目的寄存器”,这获得操作数“寄存器p0-p9的参考位置”和“传输目的寄存器名称”。
为了通过该算法重复执行运算命令和数据传输命令,固定被描述为一个操作数的参考位置(寄存器p9)。
因此,需要如此构建该程序以便可以在执行运算命令和数据传输命令之前调整定时,使得在执行运算命令和数据传输命令时,目标字段“下一个首部字段”和扩展首部中的“首部扩展长度字段”或TCP首部的“源/目的端口号字段”可以存在于寄存器p0-p9中的参考位置上。
而且,分组处理器100执行包括操作数“寄存器38”和“任意延迟时钟数”的寄存器更新命令,从而可以用“任意延迟时钟数”来更新寄存器38。即,如图7所示,命令数据226(=寄存器更新命令)的操作数(延迟时钟数)通过选择器37被存储在寄存器38中。
当执行在操作数中设置“寄存器38”和“延迟时钟数”的寄存器更新命令时,在停止执行“延迟时钟数”命令之后,执行寄存器更新命令的下一个命令。
在执行寄存器更新命令之后,控制器30必须将程序计数器33(参见图7)递增1,并等待下一个命令获取开始。
因此,可以将命令执行停止一个任意命令执行时钟。
图1 0B图示程序存储器21上命令结构的一个例子。在下文中,将参考图10A和10B描述该算法和命令。注意到上述参考位置被假设为寄存器p9。
步骤S1:命令执行单元40通过运算命令比较分组数据访问寄存器中基本首部的下一个首部字段值与表示TCP值的“6(十进制)”,并在内部状态中设置结果(标志)。
步骤S2:寄存器更新命令利用“延迟时钟数”更新寄存器38,并以“延迟时钟数”推迟寄存器p0-p9中的分组数据201,执行调整使IPv6首部的“下一个首部字段”可以进入访问寄存器p9的步骤S4。至此所述的“延迟时钟数”是根据IPv6基本首部大小而获得的固定值=“16”。
步骤S3:根据在步骤S1或步骤S4上运算结果的标记状态,该程序转移。当标记相互一致时,该程序前进到步骤S7,否则前进到下一步骤S4。
步骤S4:运算命令数据比较寄存器p9中扩展首部的“下一个首部字段”的值与表示TCP的“6(十进制)”,并在标记中设置结果。
步骤S5:寄存器更新命令利用“延迟时钟数”更新寄存器38,并将分组数据访问寄存器p0-p9中的分组数据201推迟该“延迟时钟数”。
在此所述的“延迟时钟数”是从扩展首部的“首部长度字段”获得的一个可变值。例如,在首部长度=“8”的情况下该值为“0”,在首部长度=“16”的情况下该值为“4”。结果,为扩展首部大小执行等待。
步骤S6:通过无条件转移命令,该程序跳转到步骤S3。
步骤S7:通过数据传输命令,TCP首部的“源/目的端口号”被传输到指定寄存器。
因而,获取了“源/目的端口号”。
图11A至11D图示根据图10A所示算法获取包括在IPv6分组中的TCP分组的源/目的端口号的操作步骤的例子。
图11A-11D分别图示IPv6首部分别仅是基本首部、基本首部+8字节扩展首部、基本首部+16字节扩展首部和基本首部+16字节扩展首部+8字节扩展首部的情况。
图11A-11D中的参考号S0-S7和w1-w16分别表示当分组字段被存储在分组数据访问寄存器的第一寄存器p9(参见图2)时执行的程序步骤号(图10A中的步骤S0-S9)和等待状态。
在下文中,将描述图11D的一个操作例子。
<基本首部>:
步骤S1:通过运算命令比较基本首部的“下一个首部字段”的值与一个预定值,以确认随后的扩展首部。
步骤S2:通过寄存器更新命令,插入用于固定长度的基本首部的等待状态w1-w16。
步骤S3:因为在步骤S1确认下一首部不是一个TCP首部,该程序通过转移命令前进到步骤S4。
<第一扩展首部>:
步骤S4和S5:通过运算命令确认下一首部是扩展首部,并通过寄存器更新命令根据首部长度字段的值插入等待状态w1-w4。
步骤S6:通过无条件转移命令,该程序返回步骤S3。
步骤S3:因为在步骤S4确认下一首部不是一个TCP首部,该程序通过转移命令前进到步骤S4。
<第二扩展首部>:
步骤S4和S5:通过运算命令确认下一首部是一个TCP首部,以便在不通过寄存器更新命令根据首部长度字段的值插入等待状态的情况下,该程序前进到步骤S6。
步骤S6:通过无条件转移命令,该程序返回到步骤S3。
步骤S3:因为在步骤S4确认下一首部是一个TCP首部,该程序通过转移命令前进到步骤S7。
<TCP首部>
步骤S7:“源/目的端口号”通过数据传输命令存储在一个预定寄存器中。
类似的,在图11A-11C的操作例子中,通过执行在操作例子中所示的步骤号的命令,并根据命令插入等待状态,能够识别TCP首部的源/目的端口号。
即,图1 0B所示的程序指示可以提取包括在IPv6分组中的上层TCP首部的源/目的端口号,所述IPv6分组包括各种首部。
在包括图10A和图10B以及图11A-11D所示的转移命令的算法的例子中,仅描述了同一分组处理器100中的转移。即,上文描述了可以在同一分组处理器100中进行转移。
当在单个分组处理器100中的可执行命令数=“5”,因为高速请求吞吐量,例如,图10B所示的步骤S0-S7的微代码必须被分散排列在多个分组处理器100的存储器21中。
因此,步骤S0-S4的微代码被安排在图8A所示的下一级上的分组处理器100的存储器21中,并且步骤S5-S7的微代码被安排在当前级上的存储器21中。如果在图8B中图示,步骤S0-S4的微代码被安排在当前级上的存储器21中,步骤S5-S7的微代码被安排在前一级上的存储器2 1中。
虽然通过在步骤S6的无条件转移命令到步骤S3的转移(参见图10A)对应于图8A中所述的后向转移,通过在步骤S3上的条件转移命令到步骤S7的转移对应于图8B所示的前向转移。
当获取转移命令时,在每一级上的分组处理器100的程序执行控制器30(参见图7)必须仅通过图8A和8B所示的程序执行转移命令,并将启动指示信号和程序计数器值发送给对应分组处理器100的程序执行控制器30。
如上所述,在现有技术的分组处理器系统中,可以描述自分组头部的固定范围的处理,即,仅在所允许命令数的命令执行时间内在分组数据保存器中传输的分组数据。然而,在本发明的分组处理器系统中,只要目标分组在分组数据保存器70中传输,就可以描述转移处理和重复处理。
注意到在本发明的上述实施例中已经描述了对TCP/IP协议分组的分组处理。然而,本发明的分组处理器和分组处理器系统可以被应用于其它协议、其它分层分组(信元、数据包、帧)等的处理。
例如,通过与图11A-11D中所示的操作例子相同的操作,本发明的分组处理器系统可以描述诸如在分组尾部上的FCS(帧校验序列)和校验和的数据的提取处理以及延伸在整个分组上的处理。
注意到在处理器和处理器系统的上述实施例中,安排分组数据内容在分组访问寄存器中移动。然而,在分组数据访问寄存器中实际存储的内容并不限制于分组数据内容,也可以是从分组数据中提取用于重新组合的数据。
而且,如在日本专利申请No.12-240829的“分组数据处理设备”中所描述的,如果在分组处理器系统内的每个分组处理器100中分组数据保存器70的总级数远大于所处理分组的最大长度,通过组合FIFO(先进先出)型分组处理器100之间的信息通信装置,上述处理结果可以被用在前一级的分组处理器上。
如上所述,根据本发明的分组处理器和分组处理器系统被安排以便分组寄存器顺序地从其头部接收一个分组;执行程序保存器保存一个描述分组处理过程的程序;程序执行控制器根据所提供的分组长度和程序来确定将被执行的程序的命令数,并控制该程序的执行。因此,可以增加可执行的命令数,并扩大可访问的分组范围。
尤其在分组处理器系统中,因为可以增加整个系统对单个分组的可执行命令数和可访问的范围,可以减少系统的级数。结果,能够有效地使用硬件资源。
而且,程序执行控制器将命令获取定时和命令获取位置通知前一级和后一级上的分组处理器中的至少一个分组处理器的程序执行控制器。因而,可以描述和执行一个跨越分组处理器的程序的转移命令,并灵活地执行分组处理程序。
而且,程序执行控制器可以不必在预定的命令执行时钟上执行一个命令获取,也不必在接收一个传输定时信号之后在预定的命令执行时钟上执行一个命令获取,从而能够灵活地描述一个分组处理程序。
因而,本发明能够实现分组处理器中的命令执行延迟机制、相同列中的转移命令和分组处理器之间的相互启动控制,从而能够灵活地实现分组处理器编程。

Claims (22)

1.一种分组处理器,包括:
一个分组寄存器,用于从一个分组的头部将其顺序地接收;
一个执行程序保存器,用于保存一个描述分组处理过程的程序;和
一个程序执行控制器,用于根据所提供的分组长度和上述程序确定将要执行的程序的命令数,并用于控制该程序的执行。
2.一种分组处理器系统,包括:
级联的至少两个分组处理器;
每个分组处理器包括:
一个分组寄存器,用于从一个分组的头部将其顺序地接收;
一个执行程序保存器,用于保存一个描述分组处理过程的程序;
一个程序执行控制器,用于根据所提供的分组长度和上述程序确定将要执行的程序的命令数,并用于控制该程序的执行;和
一个内部状态保存器,用于保存一个内部状态;
当前级上的分组处理器的内部状态和一个输出分组被提供给前一级上的分组处理器。
3.一种分组处理器系统,包括:
级联的至少两个分组处理器,以便当前级上的分组处理器的输出分组被提供给前一级上的分组处理器;
每个处理器包括:
一个分组寄存器,用于从一个分组的头部将其顺序地接收;
一个执行程序保存器,用于保存一个描述分组处理过程的程序;
一个程序执行控制器,用于控制该程序的执行;
当前级上的分组处理器的程序执行控制器将一个命令获取定时和一个命令获取位置通知前一级和后一级上的分组处理器中的至少一个分组处理器的程序执行控制器。
4.如权利要求3所述的分组处理器系统,其中程序执行控制器根据所提供的分组长度和程序确定将要执行的程序的命令数。
5.如权利要求3所述的分组处理器系统,其中分组处理器还包括一个用于保存一个内部状态的内部状态保存器,和
当前级上的分组处理器的内部状态被提供给前一级上的分组处理器。
6.如权利要求2所述的分组处理器系统,其中执行程序控制器能够在列间切换,并且内部状态包括一个列值。
7.如权利要求1所述的分组处理器,其中通过完成一个分组处理或输入一个新分组,程序执行控制器停止获取用于该分组的下一个命令。
8.如权利要求2所述的分组处理器系统,其中通过完成一个分组处理或输入一个新分组,程序执行控制器停止获取用于该分组的下一个命令。
9.如权利要求1所述的分组处理器,其中程序执行控制器并不为预定的命令执行时钟执行一个命令获取。
10.如权利要求2所述的分组处理器系统,其中程序执行控制器并不为预定的命令执行时钟执行一个命令获取。
11.如权利要求1所述的分组处理器,其中在接收到一个指示分组何时被输入的传输定时信号之后,程序执行控制器并不为预定的命令执行时钟执行一个命令获取。
12.如权利要求2所述的分组处理器系统,其中在接收到一个指示分组何时被输入的传输定时信号之后,程序执行控制器并不为预定的命令执行时钟执行一个命令获取。
13.如权利要求3所述的分组处理器系统,其中在接收到一个指示分组何时被输入的传输定时信号之后,程序执行控制器并不为预定的命令执行时钟执行一个命令获取。
14.如权利要求13所述的分组处理器系统,其中预定命令执行时钟包括一个命令获取位置。
15.如权利要求1所述的分组处理器,其中程序执行控制器根据分组处理器自身的内部状态和上述程序确定一个命令获取位置。
16.如权利要求2所述的分组处理器系统,其中程序执行控制器根据分组处理器自身的内部状态和上述程序确定一个命令获取位置。
17.如权利要求15所述的分组处理器,其中内部状态包括一个可允许的命令数或一个可执行的命令数。
18.如权利要求16所述的分组处理器系统,其中内部状态包括一个可允许的命令数或一个可执行的命令数。
19.如权利要求5所述的分组处理器系统,其中执行程序保存器能够切换到一列,并且内部状态包括一个列值。
20.如权利要求3所述的分组处理器系统,其中通过完成一个分组的处理或输入一个新分组,程序执行控制器停止获取用于该分组的下一个命令。
21.如权利要求3所述的分组处理器系统,其中程序执行控制器并不为预定的命令执行时钟执行一个命令获取。
22.如权利要求5所述的分组处理器系统,其中程序执行控制器根据分组处理器自身的内部状态和上述程序来确定一个命令获取位置。
CNB021426864A 2001-09-18 2002-09-17 分组处理器和分组处理器系统 Expired - Fee Related CN1199423C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP283999/2001 2001-09-18
JP2001283999A JP4342128B2 (ja) 2001-09-18 2001-09-18 パケット処理プロセッサ及びパケット処理プロセッサシステム

Publications (2)

Publication Number Publication Date
CN1406037A true CN1406037A (zh) 2003-03-26
CN1199423C CN1199423C (zh) 2005-04-27

Family

ID=19107402

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB021426864A Expired - Fee Related CN1199423C (zh) 2001-09-18 2002-09-17 分组处理器和分组处理器系统

Country Status (3)

Country Link
US (1) US20030053481A1 (zh)
JP (1) JP4342128B2 (zh)
CN (1) CN1199423C (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114545871A (zh) * 2020-11-19 2022-05-27 西门子股份公司 用于与一个或多个现场设备通信的方法

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL130796A (en) * 1999-07-05 2003-07-06 Brightcom Technologies Ltd Packet processor
SE525183C2 (sv) * 2002-04-04 2004-12-21 Xelerated Ab Förfarande och medel för behandling med pipelining av datapaket
US20040008708A1 (en) * 2002-07-11 2004-01-15 Giacomini Peter J. Overhead engine for telecommunications nodes
US20040008673A1 (en) * 2002-07-11 2004-01-15 Ygal Arbel Overhead processing in telecommunications nodes
US20040008701A1 (en) * 2002-07-11 2004-01-15 Giacomini Peter J. Hierarchical finite-state machines
US7349435B2 (en) 2002-07-11 2008-03-25 Bay Microsystems, Inc. Multiport overhead cell processor for telecommunications nodes
KR100477698B1 (ko) * 2003-01-13 2005-03-18 삼성전자주식회사 IPv6 헤더 수신 장치 및 IPv6 헤더 처리 방법
CN101539771B (zh) * 2008-03-21 2012-09-19 鸿富锦精密工业(深圳)有限公司 主设备对从设备的自动定址系统
US11178261B1 (en) * 2019-08-23 2021-11-16 Fitbit, Inc. Device communication techniques

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69329709D1 (de) * 1993-04-29 2001-01-04 Ibm Verfahren und Gerät für Mehrfachübertragung von Daten in einem Kommunikationssystem
US6870874B2 (en) * 1994-04-28 2005-03-22 Canon Kabushiki Kaisha Communication apparatus
US5490168A (en) * 1994-07-08 1996-02-06 Motorola, Inc. Method and system for automatic optimization of data throughput using variable packet length and code parameters
JP3203978B2 (ja) * 1994-07-25 2001-09-04 ソニー株式会社 データ送受信装置、データ受信装置及びデータ送信装置
US6577610B1 (en) * 1997-06-30 2003-06-10 Spacenet, Inc. Flex slotted Aloha transmission system and method
US6480497B1 (en) * 1998-11-23 2002-11-12 Ricochet Networks, Inc. Method and apparatus for maximizing data throughput in a packet radio mesh network
JP2000295279A (ja) * 1999-04-02 2000-10-20 Nec Corp パケットスイッチ
JP2000324164A (ja) * 1999-05-12 2000-11-24 Nec Corp パケットデータ転送装置
GB2356104B (en) * 1999-11-04 2001-10-10 3Com Corp Network switch including bandwidth controller
JP2001251349A (ja) * 2000-03-06 2001-09-14 Fujitsu Ltd パケットプロセッサ
US20030023960A1 (en) * 2001-07-25 2003-01-30 Shoab Khan Microprocessor instruction format using combination opcodes and destination prefixes
US7039038B2 (en) * 2001-01-18 2006-05-02 Texas Instruments Incorporated Adaptive fragmentation for wireless network communications
US7418536B2 (en) * 2001-07-30 2008-08-26 Cisco Technology, Inc. Processor having systolic array pipeline for processing data packets

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114545871A (zh) * 2020-11-19 2022-05-27 西门子股份公司 用于与一个或多个现场设备通信的方法
US11907576B2 (en) 2020-11-19 2024-02-20 Siemens Aktiengesellschaft Method for communicating with one or more field devices

Also Published As

Publication number Publication date
JP4342128B2 (ja) 2009-10-14
JP2003092591A (ja) 2003-03-28
CN1199423C (zh) 2005-04-27
US20030053481A1 (en) 2003-03-20

Similar Documents

Publication Publication Date Title
CN1249963C (zh) 使用分组摘要信息快速和自适应处理分组的设备和方法
CN1202470C (zh) 处理器
CN1153155C (zh) 装有高效利用主处理器中的寄存器数据的协处理器的信息处理装置
CN1500336A (zh) 可编微程序的协议包解析程序和封装程序
CN1199423C (zh) 分组处理器和分组处理器系统
CN1311377C (zh) 转寄信息封包的方法
CN1253790C (zh) 指令调度方法和指令调度设备
CN1271513C (zh) 转移指令的方法和处理器
CN1916962A (zh) 存储和回存状态上下文在图形处理单元的方法和装置
CN1201242C (zh) 数据传送控制装置和电子装置
CN1916961A (zh) 可中断图形处理单元及其控制方法
CN1601474A (zh) 执行实时操作的方法和系统
CN1266512A (zh) 适用于面向对象编程语言的硬件加速器
CN1319210A (zh) 可配置的硬件块的配置方法
CN1175034A (zh) 存储器控制器和存储器控制系统
CN1912926A (zh) 可中断图形处理单元处理多个程序的方法和图形处理单元
CN1890624A (zh) 电子装置及其控制方法、主机装置及其控制方法
CN1624611A (zh) 可编程控制器、通信单元、变量解决方法和数据交接方法
CN1385793A (zh) 数据传送控制装置、电子机器及数据传送控制方法
CN1960336A (zh) 一种实现灵活QinQ的方法及设备
CN1862486A (zh) 数字信号处理器
CN1114153C (zh) 支持程序编码长度减小的微处理器
CN1279435C (zh) 数字信号处理器
CN1022591C (zh) 信号处理装置的地址处理器
CN101048980A (zh) 信号处理装置、方法、程序及记录媒体

Legal Events

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

Granted publication date: 20050427

Termination date: 20100917