CN1829200A - 用于在网络处理器中记帐的装置和方法 - Google Patents

用于在网络处理器中记帐的装置和方法 Download PDF

Info

Publication number
CN1829200A
CN1829200A CNA2006100578712A CN200610057871A CN1829200A CN 1829200 A CN1829200 A CN 1829200A CN A2006100578712 A CNA2006100578712 A CN A2006100578712A CN 200610057871 A CN200610057871 A CN 200610057871A CN 1829200 A CN1829200 A CN 1829200A
Authority
CN
China
Prior art keywords
address
counter value
counter
memory
cycle
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
CNA2006100578712A
Other languages
English (en)
Other versions
CN100531129C (zh
Inventor
J·L·卡尔维尼亚
J·F·洛根
C-J·常
F·J·韦普兰克宁
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1829200A publication Critical patent/CN1829200A/zh
Application granted granted Critical
Publication of CN100531129C publication Critical patent/CN100531129C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Landscapes

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

Abstract

公开了用于通过成本有效的存储器在网络处理器中实现计数器的系统和方法。实施例包括用于使用诸如DRAM的较廉价的存储器在网络处理器中实现计数器的系统和方法。网络处理器接收分组,并实现包括对多个流队列的每个中的分组进行计数的记帐功能。实施例包括可在R-M-W周期中不止一次递增计数器值的计数器控制器。每次当计数器控制器在已启动用于计数器的R-M-W周期中接收到更新计数器的请求时,计数器控制器递增从存储器接收的计数器值。在R-M-W周期的写周期中将所述的已递增值写入存储器。写禁用单元在较早启动的R-M-W周期中禁用写操作,否则所述写操作将在已启动用于计数器的R-M-W周期中发生。

Description

用于在网络处理器中记帐的装置和方法
技术领域
本发明涉及数字处理领域。更具体地说,本发明涉及访问成本有效的存储器以便更新网络处理器中的计数器的领域。
背景技术
许多不同类型的计算系统已经实现了在世界范围内的广泛使用。这些计算系统包括个人计算机、服务器、大型机和多种独立和嵌入式计算设备。存在延伸而来的客户端-服务器系统,其具有跨许多PC网络、大型机和小型计算机分布的应用和信息。在通过网络连接的分布式系统中,用户可访问许多应用程序、数据库、网络系统、操作系统和大型机应用。计算机向个人和企业提供了许多软件应用,包括字处理、电子表格、记帐、电子邮件、基于因特网协议的话音的远程通信以及传真。
在今天的连网世界中,带宽是关键性资源。由因特网和其它新兴应用所驱动的非常高的网络流量正使得网络基础设施的性能变得紧张。为与其同步,组织正在寻找更好的方式来支持和管理流量增长以及话音和数据的趋同。今天在网络流量上的显著增加可以被归因于因特网的普及、对远程访问信息的不断增长的需求以及新兴的应用。因特网连同其在电子商务方面的爆炸性增长已对网络主干形成了有时无法忍受的负载。对远程访问应用(包括电子邮件、数据库访问和文件传输)的不断增长的需求进一步地使网络变得紧张。
消除网络瓶颈持续成为服务供应商的最高优先级。路由器常常是这些瓶颈的来源。不过,一般而言,网络拥塞常常被错误地判断为带宽问题,并通过寻求更高带宽的解决方案来解决。今天,制造商正在认识到此困难。他们正在转向网络处理器技术,以更加高效地管理带宽资源,并用网速提供更先进的数据服务,所述数据服务通常出现在路由器和网络应用服务器中。这些服务包括负载平衡、QoS、网关、防火墙、安全性以及web缓存。
网络处理器(NP)可被定义为可编程通信集成电路,其能够执行一个或多个以下功能:
分组分类——基于已知特性(诸如地址或协议)识别分组;
分组修改——修改分组以符合IP、ATM或其它协议(例如,对于IP,更新头部中的有效时间(time-to-live)字段);
队列/策略管理——反映用于分组排队、取消排队和为特定应用调度分组的设计策略;
分组转发——通过交换结构传输和接收数据以及将分组转发或路由到适当地址。
尽管此定义精确地描述了早期NP的基本特征,但仍将会认识到NP的全部潜在能力和优点。网络处理器可以增加带宽,并通过允许将在硬件中执行的软件中预先处理连网任务,来解决大范围的应用中的等待时间问题。此外,NP可以通过某些体系结构(诸如并行分布式处理和管道处理设计)来提供速度提升。这些能力可以使能高效搜索引擎、增加吞吐量以及提供对复杂任务的快速执行。
网络处理器被期望以下述方式成为对于网络的基本网络构造块,所述方式如同CPU对于PC的相同方式。NP所提供的典型能力是实时处理、安全性、存储和转发、交换结构以及IP分组处理和学习能力。处理器模型的NP结合了多个通用处理器和专用逻辑。供应商正在转向此设计,以提供可以用及时和成本有效的方式来适应变化的可变的、灵活的解决方案。处理器模型的NP允许具备较低级别集成的分布式处理,提供较高吞吐量、灵活性和控制。可编程能力可以使能对新协议和技术的方便移植,而无需新的ASIC设计。
网络处理器包括执行记帐功能的电路,通常是通过实现网络处理器内的数据流单元中的记帐模块。记帐模块对非常大量的流队列的分组进行计数。为执行计数,网络处理器从关联于计数器的存储器位置中读取对应于流队列的当前计数器值。网络处理器将当前计数器值递增一,以产生新的计数器值。网络处理器接着将新的计数器值存储回保留当前计数器值的存储器位置中。因为对于非常大量的流的非常大量的分组进行计数,所以需要大量存储器来存储计数器值。
因为需要大量存储器,所以希望用相对廉价的存储器来实现计数器。更具体而言,因为DRAM(动态随机存取存储器)相对于诸如SRAM(静态RAM)的较高速存储器的成本来说是廉价的,所以希望在DRAM中实现计数器存储器。不过,诸如DRAM的长等待时间存储器产生了以网络处理器的分组接收速率进行分组计数的障碍。长等待时间存储器的读-修改-写周期可能比计数器更新速率更长。因此,需要用于使用成本有效的、相对长等待时间的存储器来实现网络处理器中的计数器的方法和系统。
发明内容
由此处公开的用于使用成本有效的、具有相对长等待时间访问的存储器来实现网络处理器中的计数器的方法和系统来部分地解决上述问题。实施例实现包括多个地址寄存器的计数机制,这些地址寄存器被顺序地连接以构成顺序地接收地址的地址管道。每个所接收的地址给出了存储计数器值的存储器位置。所述地址管道包括:将所接收地址输出作为地址管道开始处的读地址的寄存器,以及将所述地址输出作为管道末端处的写地址的寄存器。计数机制包括多个比较器来执行地址比较,以确定写地址是否匹配地址管道的地址寄存器中的一个或多个地址。计数器值修改器把从由读地址指示的存储器位置中读取的值递增一次,加上对于由比较器所确定的每个地址匹配递增一次。这产生了将被写入存储器的已更新的计数器值。
在一实施例中,一种用于处理数据分组的网络处理器包括数据流单元,用于接收数据分组,并对于每个分组确定该分组所属的流队列,以及传输所处理的分组。网络处理器还包括嵌入式处理器复合体,其包括多个处理器来处理数据分组。提供计数器用于对在多个流队列的每一个中所接收的分组进行计数。计数器包括地址管道,用于接收计数器值地址,并发布作为管道第一阶段的读地址和作为管道随后阶段的写地址的地址。计数器还包括多个比较器来执行地址比较,以确定写地址是否匹配地址管道的地址寄存器中的一个或多个地址。计数器值修改器把从由读地址指示的计数器值存储器中的存储器位置读取的值递增一次,加上对于由比较器所确定的每个地址匹配递增一次,以产生已递增的计数器值。
另一实施例是一种用于在网络处理器中记帐的方法,包括用多个地址寄存器构成地址管道,以及顺序地把计数器值地址的序列接收到地址管道的地址寄存器中。所述方法包括发布作为地址管道的一阶段的读地址和作为管道随后阶段的写地址的所接收的计数器值地址。从由读地址所指示的存储器位置读取计数器值。所述方法包括通过比较器对于管道中的多个阶段的每个阶段来确定匹配写地址的地址。从存储器读取的计数器值被递增至少一次,加上对于所确定的每个匹配递增一次。已递增的计数器值被写入存储器位置。
附图说明
在读以下详细描述并参考附图时,本发明的其他目的和优点将变得明显,在附图中,相同标号可指示类似单元:
图1描述了服务于网络的多个网络处理器;每个网络处理器包括数据流单元、嵌入式处理器复合体、调度器以及控制和数据存储器。
图1A描述了嵌入式处理器复合体的实施例,其具有并行运行来处理分组数据的多个处理器。
图2描述了数据流单元的实施例,其包括接收器控制器、传输器控制器以及EPC接口控制器。
图3描述了用于在网络处理器中进行计数的计数器控制电路。
图4描述了用于更新网络处理器中的计数器的实施例的流程图。
具体实施方式
以下是在附图中描述的本发明的示例性实施例的详细描述。示例性实施例非常详细,以便清晰表达本发明。不过,所提供的细节数量不是为了限制实施例的预期变体;而是相反地为了覆盖落在如所附权利要求所定义的本发明的精神和范围内的所有修改、等同物和替换方案。以下详细描述被设计用来使得这些实施例对本领域普通技术人员变得明显。
实施例包括用于使用诸如DRAM的较廉价的存储器来实现网络处理器中的计数器的系统和方法。网络处理器接收分组,并实现包括了对多个流队列的每个中的分组进行计数的记帐功能。DRAM的读-写-修改(R-M-W)周期比网络处理器的分组接收速率更长。为使用长等待时间存储器来实现计数器,实施例包括计数器控制器,其可以在R-M-W周期中使计数器值递增不止一次。在已启动用于计数器的R-M-W周期中,每次当计数器控制器接收到更新计数器的请求时,计数器控制器递增从存储器接收的计数器值。在R-M-W周期的写周期中将已递增的值写入存储器。在较早启动的R-M-W周期中,写禁用单元禁用写操作,否则其将会在已启动用于计数器的R-M-W周期中出现。
图1示出了网络中多个网络处理器100和160的实施例。连接于计算机、服务器、其它网络处理器以及网络中的其它装置的网络总线或全双工网络链路104提供数据分组流给网络处理器100的数据流单元150。网络处理器100以入口模式运行,以从网络链路104接收分组,并将经处理的分组传输到交换器102。相反地,网络处理器160以出口模式运行,以从交换器102接收分组,并将经处理的分组传输到网络链路104。因此,多个网络处理器可将来自链路的分组提供给交换器(入口),并且多个网络处理器可将来自交换器的分组提供给链路(出口)。这些处理器的总体目的是将来自网络中的多个起源点的信息路由到网络中各自的多个目标点。
数据流单元150从网络链路104接收数据分组,并对于每个分组,构成帧控制块(FCB)。数据流单元150也将每个分组写入实现于DRAM中的数据存储器130。分组的FCB包含关于该分组的信息。此信息包括分组大小以及在数据存储器130中存储分组之处。FCB也包含指向FCB链中的下一FCB的指针,所述FCB链对应于该分组所属的多个流队列之一。每个FCB存储在实现于DRAM中的控制存储器140中。因此,对下一FCB的指针指向控制存储器140中存储了链中的下一FCB之处的地址。FCB提供一种在网络处理器内跟踪分组并保持该分组相对于其它分组被接收的顺序的机制。
网络处理器将每个FCB排入由嵌入式处理器复合体(EPC)110所处理的多个队列之一。EPC 110从FCB读取帧指针,并发布读请求,以从由帧指针所指向的数据存储器130中的位置得到帧数据。EPC 110处理EPC110中的多个皮可处理器(pico-processor)之一中的帧的头部。多个皮可处理器使能对多个流队列的同步处理。EPC 110的皮可处理器执行包括过滤、分类和转发的网络处理功能。在帧处理期间,EPC 110可以发布请求到数据流单元150中的存储器判优器,以从数据存储器130读取帧的若干部分,或将帧的若干部分写入数据存储器130。一旦EPC 110处理了帧数据,则所处理的帧数据可被临时存储于数据存储器130中。
当EPC 110完成对帧处理的处理时,EPC 110将FCB传送到数据流单元150。数据流单元150把FCB排入调度器120的多个流队列之一中。调度器120通过将FCB的帧指针传送到数据流单元而从队列中选择帧用于进行传输。数据流单元150从数据存储器130中读取由帧指针所指向的帧。数据流单元150可修改分组数据的帧,并接着将经修改的分组传输到网络处理器之外。因此,调度器被配置调度将从网络处理器100传输到交换器102的数据帧。
类似地,网络处理器160提供从交换器到网络的出口。图1示出的处理器160的元件对应于相同名称的、具有类似标号的网络处理器100的元件。将对网络处理器100的元件的描述应用于相同名称的、具有类似标号的网络处理器160的元件。因此,网络处理器160包括EPC 1110、调度器1120、数据存储器1130、控制存储器1140和数据流单元1150。网络处理器160的数据流单元从交换器102接收分组,并在接收分组时构成对于所接收分组的FCB。在数据存储器中存储分组数据,而在控制存储器中存储FCB。EPC处理分组,而调度器调度用于传输到网络链路104的经处理的分组。
图1A示出了嵌入式处理器复合体EPC 110的简化框图。EPC 110从数据存储器接收帧,并在它们被分派器170分派给多个并行处理器172中的空闲处理器之前临时存储它们。当分派器170识别出EPC 110已接收帧时,它找到可用于接收帧数据进行处理的处理器172之一。处理器172并行操作不同帧,而分派器170尝试使得尽量多的处理器忙于处理帧。此外,处理器172中的每个处理器进行管道化,以增强性能。例如,每个处理器可包括3阶段管道(读取、解码和执行)。处理器172还包括通用寄存器、专用寄存器、专用算术逻辑单元(ALU)和协处理器。另外,处理器可包括用于数据存储器操作的控制寄存器、主数据缓冲器和便笺式数据缓冲器。
与将帧分派给处理器172之一同时,分类器硬件辅助174识别消息格式的类型,以及识别诸如开始地址的关于分组的关键信息和头部位置。处理器172从芯片级指令高速缓存180接收指令。指令高速缓存180从位于EPC 110外部的存储器186(诸如实现于随机存取存储器(RAM)中的系统存储器)接收指令。理想地,被反复执行的指令(即,稳态代码)被保留在指令高速缓存中,以最小化对长等待时间的外部存储器的读取。
因此,EPC 110可包括指令读取器178,以启动将指令从外部存储器186到指令高速缓存180的传输。将指令从外部存储器186传输到的高速缓存中的位置由从指令的外部存储器地址中确定的索引来确定。所述索引是高速缓存入口的地址。与存储于高速缓存中的每个指令一起,也存储了从外部存储器地址中确定的标志。所述标志识别存储在高速缓存入口的指令。在n路关联高速缓存中,存在n个位置来存储高速缓存入口中的指令。为确定n个位置中哪一个存储了指令读取器的程序计数器所需要的指令,指令读取器内的标志比较器比较来自程序计数器的标志和在高速缓存入口的每个指令的标志,直到找到正确指令。
EPC 110所接收的每个帧具有识别信息,诸如消息号、源地址和目标地址。帧数据头部中的此信息的位置和内容取决于分组格式。处理器必须确定帧中的标识信息,并确定分组的路由需求。帧头部信息允许网络处理器适当地路由该帧以及其它经处理的帧,以便在预期目标接收到完整消息。具有通用标识信息的帧构成了“流”,而处理器172同步处理多个流。
处理器172还可以执行分组过滤,实施具有复杂范围和动作规范的数百个或更多个帧过滤规则。例如,过滤规则可以基于IP头部信息拒绝或允许帧,或分配服务质量(QoS)。对于网络安全性来说过滤是必要的,而硬件辅助174提供对这些复杂规则组的网速实施。
处理器172将经处理分组发送到完成单元176。在维护帧序列时,完成单元176将经处理分组传送到数据流单元150。EPC 110还包括控制存储器判优器182,以通过处理器172对控制存储器的请求进行判优。控制存储器可包括内部存储器184和外部存储器186,控制存储器存储表格、计数器以及由处理器172使用的其它数据。
图2示出了数据流单元200和存储器系统202的实施例的框图。在被称为快周期RAM(FCRAM)的类型的DRAM中实现存储器系统202。FCRAM构成的存储器系统202可以被分为用于存储帧数据的数据存储器和用于存储FCB的控制存储器。此外,存储器系统202可被组织成片。每个片包括多个缓冲器,以存储数据存储器中的分组数据的帧或控制存储器中的FCB。DRAM控制器210控制从FCRAM 202读取数据以及将数据写入FCRAM 202。在一实施例中,DRAM控制器210控制对每个读或写请求进行16字节的传输。
存储器判优器220将数据流芯片通过接口连接到存储器系统202。存储器判优器220从接收器控制器230接收写请求,以将分组数据写入存储器系统202的数据存储器,以及将FCB写入存储器系统202的控制存储器。存储器判优器220从传输器控制器240接收读请求,以从控制存储器读取FCB,以及从数据存储器读取分组数据。存储器判优器220也从EPC接口控制器270接收读和写请求。EPC接口控制器270控制将FCB和分组数据从存储器系统202到嵌入式处理器复合体EPC 264的传输。EPC接口控制器270也控制将FCB从EPC 264到传输器控制器240的传输,以及控制将经处理的分组数据到系统存储器202的传输。
存储器判优器220从EPC接口控制器270、接收器控制器230和传输器控制器240接收读和写请求,并调度对存储器系统202的访问。帧数据被写入在不同存储器片上分布的不同缓冲器,以充分利用存储器带宽。在一实施例中,通过具有16字节的片中的每个缓冲器,以16字节的增量从FCRAM读取数据。类似地,以16字节的增量写数据。
接收器控制器230接收并临时存储来自链路或交换器的数据。在入口模式中,接收器控制器230从网络链路接收分组数据。在出口模式中,接收器控制器230从交换器接收分组数据。接收器控制器230通过接口单元232接收分组。接口单元232适合于从交换器或链路接收分组数据。当从接口单元232接收分组时,首先在预备区域234中存储该分组,同时获得该分组的帧控制块。当接收到分组时,接收器控制器230向存储器判优器220发布写请求,以将已接收的分组数据写入存储器系统202的数据存储段的独立缓冲器中。接收器控制器230也发布写请求,以将FCB写入控制存储器。
在将分组数据存储于存储器系统202的数据存储器之前,接收器控制器230在预备区域存储器234中临时存储从接口单元232接收的分组。当数据被临时存储于预备区域234时,接收器控制器230可将来自控制块(CB)自由队列280的FCB取消排队。CB自由队列280可存储未关联于任何分组的适当数量的FCB,以及提供可用FCB的存储器,当接收所述FCB时可将其与分组相关联。CB自由队列280可被组织为帧控制块,而帧控制块的组可被组织为表格控制块(TCB)。从CB自由队列280获得的每个可用FCB具有指向自由队列中的下一自由FCB的地址的指针。当分组被传输时,其FCB被返回CB自由队列280。
每个FCB包括指向数据存储器中存储了对应于FCB的分组数据帧的存储器位置的帧指针。在获得FCB之时,接收器控制器230发布写请求,并将分组传输到由FCB的帧指针所确定的位置的存储器系统202。FCB的拷贝被存储于存储器系统202的控制存储器中。控制存储器中的每个FCB包含指向包含队列中的下一FCB的控制存储器位置的指针,以构成链接在一起的帧控制块的链。
EPC接口控制器270包括将来自本地FCB队列272的FCB取消排队的分派逻辑274,所述本地FCB队列272从存储器系统202中的控制存储器接收FCB。一旦分派器逻辑单元274将来自FCB队列272的下一FCB取消排队,则分派器逻辑单元274发布读请求到存储器判优器220,以获得分组的帧头部数据。因此,EPC 264读取FCB中的帧指针,并从由帧指针指向的位置的存储器系统202的数据存储器检索帧头部。EPC 264处理帧头部,并发布写请求到存储器判优器220,以将经处理的帧数据写入存储器系统202中的数据存储器。一旦EPC 264处理了帧数据,则EPC逻辑单元276发布关联于经处理帧的FCB到调度器120或1120。
传输器控制器240包括数据预备区域248、帧改变命令预备区域246、帧改变(FA)逻辑244和接口单元242。数据预备区域248包括相对少量的存储器,其在将帧数据通过接口单元242传输到交换器或数据链路端口之前存储帧数据。帧改变命令预备区域246从EPC 264接收命令,以实现对帧的修改。帧改变逻辑244从数据预备区域248接收数据帧,并将其应用于在来自FA预备区域246的命令的控制下运行的逻辑电路。因此,数据流单元200对FCB取消排队并读取帧指针。数据预备区域存储器248从由被取消排队的FCB所指向的存储器系统202的数据存储位置接收数据。由FA预备区域246接收来自EPC 264的帧修改命令。这些命令控制FA逻辑244,以在将帧数据传送到接口单元242之前改变帧数据。
数据流单元200还包括执行基本的记帐功能的记帐模块290。例如,记帐模块290可对在多个流队列的每个中接收、处理和传输的分组进行计数。每次当记帐模块290执行对分组的计数时,必须从存储器读取适当的计数器值,递增该计数器值,并将其写回存储器。由于可能存在非常大量的(可能超过一百万)流队列,记帐模块290必须实现非常大量的计数器。因此,必须在存储器中存储非常大量的计数器值。此外,每个计数器值的存储器位置的宽度可以是32位。出于此原因,需要在DRAM或其它成本有效的存储器中对这些计数器值进行存储器存储。
表1示出了对在DRAM中实现的计数器值存储的计数器存储器访问的可能序列。
  1   2   3   4   5   6   7   8   9   10
  R1   R2   R3   R4   R5   R1
  M1   M2   M3   M4   M5
  W1   W2   W3   W4   W5
                      表1
在第一周期中,处理器开始读取第一计数器的值。这通过列1中的R1(读计数器1的值)来表示。在第二周期中,处理器开始读取计数器2的值(R2、列2),等等。在第三周期中,通过将对于计数器1读取的值递增1来修改该值(M1、列3)。在周期5期间,已递增的第一计数器值被写回它在存储器中的位置(W1、列5)。因此,新计数器值准备好通过周期6从存储器中读取。因此,只要计数器更新的周期比读-写-修改周期更长,就可以进行计数器更新。
当必须在之前的更新完成之前对计数器进行更新时,出现了问题。这在表2中示出。
  1   2   3   4   5   6   7   8   9   10
  R1   R2   R1   R3   R1   R1
  M1   M2   M1   M3   M1
  W1   W2   W1   W3   W1
                         表2
在此计数器值的存储器访问序列中,在从周期1(R1、列1)期间启动的读操作中得到的新的计数器值被写入之前,在周期3(R1、列3)期间将出现从存储器读取第一计数器值的尝试。之所以会这样,是因为直到周期5(W1、列5)才将从周期1的读操作中得到的新值写入。因此,如果计数器使用的周期比R-W-M(读-写-修改)周期更短,那么读访问会尝试访问仍未被更新的计数器值。
图3示出了计数器控制器300,其使能了使用诸如DRAM的成本有效存储器在网络处理器中的分组计数。可在数据流单元200的记帐模块290中实现计数器控制器300。计数器控制器300包括一组地址寄存器302,在图3中被标记为A1到A4。当计数器将被更新时,计数器控制器300接收包含计数器当前值的存储器位置的地址。所接收的计数器地址被放置于第一地址寄存器A1中。第一地址寄存器A1的输出是用于对DRAM中的存储器位置进行定址以读取计数器值的读地址。第四地址寄存器A4的输出是用于将新的计数器值写入DRAM的写地址。
在运行的每个周期中,被接收到寄存器A1中的计数器值的存储器地址前进到下一寄存器。因此,在第一周期中,寄存器A1接收读地址并输出读地址,以启动从DRAM中已定址的存储器位置的存储器读操作。在紧接着第一周期的第二周期中,将寄存器A1中的地址锁存到寄存器A2中,依此类推。在周期4,曾经是第一周期中的读地址的地址被寄存器A4输出作为周期4中的写地址。因此,在此实施例中,读和修改操作必须出现,并稳定地在四个周期内使能对结果的写操作。如果读-修改-写操作需要更多周期,那么需要不止四个寄存器302。因此,图3中示出的寄存器数目仅代表所述过程,但本发明并不局限于四个地址寄存器。
计数器控制器300从DRAM中检索存储于由寄存器A1的输出所定址的位置处的数据,将读取数据拷贝到计数器值修改器324的寄存器C 314中。将寄存器C的内容传送到包括增量器316、318、320和322的增量管道。可以存在和地址寄存器一样多的增量器。增量器316将来自寄存器C的值递增一次。增量器318可递增增量器316的输出。依此类推。因此,被写入寄存器C的值被递增至少一次,并可被递增两次、三次或四次。是否应用额外的增量取决于:在应用于寄存器A1的地址传播到寄存器A4的输出的四个周期中是否出现了更新计数器的尝试。
计数器控制器300还包括地址比较器304的组合体。地址比较器304中的第一个比较由寄存器A4输出的地址和由寄存器A1输出的地址,并且仅当两个地址相同时输出逻辑一。地址比较器304中的第二个比较由寄存器A4输出的地址和由寄存器A2输出的地址,并且仅当两个地址相同时输出逻辑一。地址比较器中的第三个比较由寄存器A4输出的地址和由寄存器A3输出的地址,并且仅当两个地址相同时输出逻辑一。当由寄存器A4输出的地址匹配由寄存器A1、A2或A3中之一所输出的地址时,网络处理器已尝试在由寄存器A4的输出所定址的计数器的R-W-M期间更新由寄存器A4的输出所定址的计数器。
为了将这些已尝试的更新结合到计数器值中,比较器的结果被发送到增量器318、320和322。从而,比较器304中的第三个的输出被输入到被标为L1的第一组锁存器306中的第一个。比较器304中的第二个的输出被输入到被标为L2的第二组锁存器308中的第一个。比较器304中的第一个的输出被输入到被标为L3的第三组锁存器310中的第一个。在操作的每个周期中,由锁存器组所接收的比较器的逻辑结果前进通过由锁存器构成的管道。
锁存器的每一组L1、L2和L3中的第一个的输出被分别输入到增量器318、320和322中之一。如果增量器接收的锁存器的输出为真,那么增量器中对应的一个将来自寄存器C的增量器管道中接收的值递增。如果增量器接收的锁存器的输出不为真,那么增量器中对应的一个不会将来自寄存器C的增量器管道中接收的值递增。在每个锁存器管道的末端,将管道的输出传送到写使能单元312。如果来自锁存器的值为真,写单元发布写禁用信号,以防止数据被写入由缓冲器A4的输出所定址的计数器存储器位置。
通过参考由控制器300接收的计数器更新的假定序列,可以更清楚地理解图3的电路的运行。表3示出了这样的一个假定序列。
  1   2   3   4   5   6   7
  A1   a1   a2   a1   a3
  A2   a1   a2   a1   a3
  A3   a1   a2   a1   a3
  A4   a1   a2   a1   a3
                         表3
在周期1中(列数1),地址寄存器A1(行A1)接收地址a1来更新具有存储于存储器位置a1中的计数器值的第一计数器。在周期2中(列数2),地址寄存器A1接收地址a2来更新具有存储于存储器位置a2中的计数器值的第二计数器。在此期间,地址a1前进到地址寄存器A2(行2)。在周期3中(列数3),地址寄存器A1接收地址a1来更新计数器1。依此类推。直到周期4(列数4、行A4)才从地址寄存器A4输出周期1中由地址寄存器A1接收的计数器存储器地址a1。因此,在通过在周期1中接收的更新请求对计数器进行更新之前,在周期3中接收更新计数器1的请求。
计数器控制器300的目的是导致在周期1中由存储器地址a1所定址的值进行更新,以结合两个增量:对于周期1(列数1、行A1)中接收的第一更新请求的一个增量,以及对于周期3(列数3、行A1)中接收的更新请求的一个增量。在周期4中,对寄存器A2的地址与寄存器A4的地址的比较将产生匹配。机器就是这样确定了在初始更新请求之后但在响应于该初始更新请求而写入存储器之前已接收了更新请求。由第二组锁存器308中的第一锁存器接收和输出地址寄存器A2和A4的比较结果。将锁存器组308中的第一个的输出(其为真)传送到增量器320,以导致增量器320递增其从寄存器C管道所接收的值。因此,寄存器C接收的值按照应有的情形而被递增两次。计数器控制器接着在周期4中将已适当递增的值写入地址a1处的DRAM。
现在,需要取消写操作,否则所述写操作将出现为在周期3中接收的对于计数器1的更新请求的结果。由于响应于周期3的更新请求之后的写操作出现在周期6中,写使能单元312必须在周期6中发布写禁用,以便禁止被读取作为周期3的更新请求的结果的数据被写入存储器。从而,在周期4中与A2相比较的A4的结果(其为真)在周期5和6中从锁存器308中的第一锁存器传送到随后的两个锁存器。写使能单元312在周期6中从锁存器管道308接收信号,并在周期6中强制进行写禁用。
图4示出了用于对更新请求进行计数的实施例的流程图400。当接收到更新计数器1的初始更新请求时(单元402),计数器控制器从存储器读取计数器的当前值(单元404)。计数器控制器将从存储器读取的值递增(单元406)。计数器控制器在读-修改-写周期中接收额外的更新请求(单元408)。如果在R-M-W周期中接收到对于计数器1的额外更新请求(单元410),则计数器值再次被递增(单元406)。不过,如果未接收到额外请求(单元410),则在R-M-W周期中接收额外请求(单元408)。当R-M-W周期结束后,计数器控制器将计数器值写入存储器(单元412),而过程继续(单元414)。
尽管已经对于某些实施例详细描述了本发明及其某些优点,但是应该了解,此处可以做出各种改变、替换和变化,而不会背离如所附权利要求所定义的本发明的精神和范围。尽管本发明的实施例可以实现多个目的,但并不是落在所附权利要求的范围中的每个实施例都将实现每个目的。此外,本应用的范围不是为了限制在本说明书中描述的过程、机器、制造以及事件、方式、方法和步骤的组合的特定实施例。通过本发明的公开,本领域普通技术人员将容易地了解,根据本发明可以利用当前现有的或将在以后开发的过程、机器、制造以及事件、方式、方法和步骤的组合,其实质上执行与此处所述的相应实施例相同的功能或实质上实现与此处所述的相应实施例相同的结果。从而,所附权利要求是为了在其范围内包括这些过程、机器、制造以及事件、方式、方法和步骤的组合。

Claims (20)

1.一种在网络处理器中的计数装置,包括:
多个地址寄存器,其顺序地连接起来构成地址管道以便顺序地接收地址;每个所接收的地址给出存储计数器值的存储器位置;所述地址管道包括:将所接收的地址输出作为在所述地址管道开始处的读地址的寄存器,以及将所述地址输出作为在所述管道末端处的写地址的寄存器;
多个比较器,用来执行地址比较,以确定写地址是否匹配所述地址管道的地址寄存器中的一个或多个地址;以及
计数器值修改器,用于将从由所述读地址指示的存储器位置读取的值递增一次,加上对于由所述比较器确定的每个地址匹配递增一次,以产生已递增的计数器值。
2.如权利要求1所述的计数装置,还包括多组顺序的锁存器,每组从比较器中的不同比较器接收输出,以及基于接收到指示地址匹配的比较器输出之时来确定禁用写计数器值的周期。
3.如权利要求2所述的计数装置,其中所述计数器修改器适合于从锁存器接收输出,并在由接收到指示地址匹配的比较器输出之时所确定的周期中将计数器值修改器中的值递增。
4.如权利要求1所述的计数装置,还包括写使能单元,用于接收比较器输出,以及在由接收到指示地址匹配的比较器输出之时所确定的周期中禁用对存储器的写入。
5.如权利要求1所述的计数装置,其中所述计数器修改器适合于从比较器接收输出,并在由接收到指示地址匹配的比较器输出之时所确定的周期中将计数器值修改器中的值递增。
6.如权利要求1所述的计数装置,其中所述管道中的地址寄存器的数量大于或等于用于执行读操作、递增计数器值和执行写操作的周期的数量。
7.一种用于处理数据分组的网络处理器,包括:
数据流单元,用于接收数据分组,并对于每个分组确定该分组所属的流队列,以及传输经处理的分组;
嵌入式处理器复合体,包括多个处理器来处理分组数据;以及
计数器值存储器,用于存储计数器值;
计数器,用于对在多个流队列的每个中所接收的分组进行计数,包括:
地址管道,用于接收计数器值地址,以及发布作为管道第一阶段的读地址和作为管道随后阶段的写地址的地址;
多个比较器,用于执行地址比较,以确定写地址是否匹配所述地址管道的地址寄存器中的一个或多个地址;以及
计数器值修改器,用于将从由所述读地址指示的计数器值存储器中的存储器位置读取的值递增一次,加上对于由所述比较器确定的每个地址匹配递增一次,以产生已递增的计数器值。
8.如权利要求7所述的网络处理器,还包括写使能单元,用于接收比较器输出,以及在由接收到指示地址匹配的比较器输出之时所确定的周期中禁用写入。
9.如权利要求7所述的网络处理器,还包括数据存储器,用于存储由网络处理器接收的数据分组。
10.如权利要求9所述的网络处理器,其中所述数据存储器和所述计数器值存储器在动态随机存取存储器中实现。
11.如权利要求7所述的网络处理器,其中所述计数器还包括多组顺序的锁存器,每组从比较器中的不同比较器接收输出,以及基于接收到指示地址匹配的比较器输出之时来确定禁用写计数器值的周期。
12.如权利要求11所述的网络处理器,其中所述计数器值修改器适合于从锁存器接收输出,并在由接收到指示地址匹配的比较器输出之时所确定的周期中将计数器值修改器中的值递增。
13.如权利要求7所述的网络处理器,其中所述计数器值修改器适合于从比较器接收输出,并在由接收到指示地址匹配的比较器输出之时所确定的周期中将计数器值修改器中的值递增。
14.如权利要求7所述的网络处理器,其中所述管道中的阶段的数量大于或等于用于执行读操作、递增计数器值和执行写操作的周期的数量。
15.一种在网络处理器中记帐的方法,包括:
构成包括多个地址寄存器的地址管道;
将计数器值地址的序列顺序地接收到所述地址管道的地址寄存器中;
发布作为在所述地址管道的一阶段中的读地址以及作为在所述地址管道的随后阶段中的写地址的所接收的计数器值地址;
从由所述读地址指示的存储器位置读取计数器值;
对于所述管道中的多个阶段的每个,由比较器确定匹配写地址的地址;
将从存储器读取的计数器值递增至少一次,加上对于所确定的每个匹配递增一次;以及
将已递增的计数器值写入存储器位置。
16.如权利要求15所述的方法,还包括在接收到指示地址匹配的比较器输出之时所确定的周期中禁用对存储器的写入。
17.如权利要求15所述的方法,还包括通过锁存器序列传送比较器输出,以基于接收到指示地址匹配的比较器输出之时来确定禁用写计数器值的周期。
18.如权利要求17所述的方法,其中递增计数器值包括在由接收到指示地址匹配的比较器输出之时所确定的周期中进行递增。
19.如权利要求15所述的方法,其中递增计数器值包括在由接收到指示地址匹配的比较器输出之时所确定的周期中进行递增。
20.如权利要求15所述的方法,其中所述管道中的地址寄存器的数量大于或等于用于执行读操作、递增计数器值和执行写操作的周期的数量。
CNB2006100578712A 2005-03-02 2006-03-01 用于在网络处理器中记帐的装置和方法 Expired - Fee Related CN100531129C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/070,060 US7293158B2 (en) 2005-03-02 2005-03-02 Systems and methods for implementing counters in a network processor with cost effective memory
US11/070,060 2005-03-02

Publications (2)

Publication Number Publication Date
CN1829200A true CN1829200A (zh) 2006-09-06
CN100531129C CN100531129C (zh) 2009-08-19

Family

ID=36947331

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006100578712A Expired - Fee Related CN100531129C (zh) 2005-03-02 2006-03-01 用于在网络处理器中记帐的装置和方法

Country Status (2)

Country Link
US (1) US7293158B2 (zh)
CN (1) CN100531129C (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105608050A (zh) * 2015-12-31 2016-05-25 华为技术有限公司 数据存储方法及系统
CN107104910A (zh) * 2016-02-22 2017-08-29 广达电脑股份有限公司 用以卸载服务器管理流量的系统

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1869551A1 (en) * 2005-04-13 2007-12-26 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Data value coherence in computer systems
US20090105993A1 (en) * 2007-10-22 2009-04-23 Advantest Corporation Histogram generation with multiple increment read-modify-write cycles
WO2011055168A1 (en) 2009-11-06 2011-05-12 Freescale Semiconductor, Inc. Area efficient counters array system and method for updating counters
US10405235B2 (en) * 2011-09-26 2019-09-03 Qualcomm Incorporated Systems and methods for traffic detection network control
US8995263B2 (en) * 2012-05-22 2015-03-31 Marvell World Trade Ltd. Method and apparatus for internal/external memory packet and byte counting
US9117497B2 (en) * 2013-03-15 2015-08-25 Taiwan Semiconductor Manufacturing Company, Ltd. Electrical lines with coupling effects
FR3012234B1 (fr) * 2013-10-23 2017-02-24 Proton World Int Nv Protection de l'execution d'un algorithme contre des attaques par canaux caches
US11669281B1 (en) * 2021-11-19 2023-06-06 Meta Platforms, Inc. Count circuit for symbol statistics

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4198699A (en) * 1979-03-01 1980-04-15 Kearney & Trecker Corporation Mass memory access method and apparatus
US5317745A (en) * 1992-01-10 1994-05-31 Zilog, Inc. Minimal interrupt latency scheme using multiple program counters
EP0629933A1 (en) * 1993-06-15 1994-12-21 International Business Machines Corporation An auto-sequenced state machine
KR0122099B1 (ko) * 1994-03-03 1997-11-26 김광호 라이트레이턴시제어기능을 가진 동기식 반도체메모리장치
US5915104A (en) * 1997-01-09 1999-06-22 Silicon Graphics, Inc. High bandwidth PCI to packet switched router bridge having minimized memory latency
US6360307B1 (en) * 1998-06-18 2002-03-19 Cypress Semiconductor Corporation Circuit architecture and method of writing data to a memory
KR100304963B1 (ko) * 1998-12-29 2001-09-24 김영환 반도체메모리
US6697371B1 (en) * 1999-06-01 2004-02-24 Advanced Micro Devices, Inc. Network switch with on-board management information based (MIB) counters
US6397274B1 (en) * 1999-09-30 2002-05-28 Silicon Graphics, Inc. Method and apparatus for analyzing buffer allocation to a device on a peripheral component interconnect bus
US6434674B1 (en) * 2000-04-04 2002-08-13 Advanced Digital Information Corporation Multiport memory architecture with direct data flow
US6987760B2 (en) * 2001-03-05 2006-01-17 International Business Machines Corporation High speed network processor
US6829682B2 (en) * 2001-04-26 2004-12-07 International Business Machines Corporation Destructive read architecture for dynamic random access memories

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105608050A (zh) * 2015-12-31 2016-05-25 华为技术有限公司 数据存储方法及系统
CN105608050B (zh) * 2015-12-31 2019-02-01 华为技术有限公司 数据存储方法及系统
US10261694B2 (en) 2015-12-31 2019-04-16 Huawei Technologies Co., Ltd. Data storage method and system
CN107104910A (zh) * 2016-02-22 2017-08-29 广达电脑股份有限公司 用以卸载服务器管理流量的系统
CN107104910B (zh) * 2016-02-22 2019-09-27 广达电脑股份有限公司 用以卸载服务器管理流量的系统

Also Published As

Publication number Publication date
CN100531129C (zh) 2009-08-19
US7293158B2 (en) 2007-11-06
US20060209827A1 (en) 2006-09-21

Similar Documents

Publication Publication Date Title
CN100531129C (zh) 用于在网络处理器中记帐的装置和方法
US7808999B2 (en) Method and apparatus for out-of-order processing of packets using linked lists
US7852846B2 (en) Method and apparatus for out-of-order processing of packets
US7269179B2 (en) Control mechanisms for enqueue and dequeue operations in a pipelined network processor
US5909686A (en) Hardware-assisted central processing unit access to a forwarding database
EP0992056B1 (en) Search engine architecture for a high performance multi-layer switch element
US7702742B2 (en) Mechanism for enabling memory transactions to be conducted across a lossy network
US20050219564A1 (en) Image forming device, pattern formation method and storage medium storing its program
US8155134B2 (en) System-on-chip communication manager
US7362762B2 (en) Distributed packet processing with ordered locks to maintain requisite packet orderings
CN101512482A (zh) 多线程分组处理体系结构
CA2543246C (en) Using ordered locking mechanisms to maintain sequences of items such as packets
US12068972B1 (en) Shared traffic manager
CN110519180B (zh) 网卡虚拟化队列调度方法及系统
TWI536772B (zh) 直接提供資料訊息至協定層之技術
CN118509399A (zh) 一种报文处理方法、装置、电子设备及存储介质
CN1595910A (zh) 一种网络处理器的数据包接收接口部件及其存储管理方法
CN112131154A (zh) 一种通道与业务动态匹配的dma传输控制方法
CN100499564C (zh) 分组处理引擎
CN1781079A (zh) 利用门管理器维护实体顺序
US7340570B2 (en) Engine for comparing a key with rules having high and low values defining a range
CN1602469A (zh) 用在多处理器数据处理系统中的数据处理方法和相应的数据处理系统
CN100461788C (zh) 为网络处理器调度连接的方法与装置
US9548947B2 (en) PPI de-allocate CPP bus command
CN1667602A (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
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: 20090819

Termination date: 20110301