CN100354853C - 用于芯片处理器间的控制平面通信的系统和方法 - Google Patents
用于芯片处理器间的控制平面通信的系统和方法 Download PDFInfo
- Publication number
- CN100354853C CN100354853C CNB038125234A CN03812523A CN100354853C CN 100354853 C CN100354853 C CN 100354853C CN B038125234 A CNB038125234 A CN B038125234A CN 03812523 A CN03812523 A CN 03812523A CN 100354853 C CN100354853 C CN 100354853C
- Authority
- CN
- China
- Prior art keywords
- icc
- processor
- message
- request
- cluster
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/12—Protocol engines
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multi Processors (AREA)
Abstract
一种芯片间通信(ICC)机制使得流水线式的阵列化处理引擎中的任何处理器都能够通过低延迟的通信路径,与该引擎的任何其它处理器直接通信。所述ICC机制包括与所述引擎的数据平面路径相互隔离的单向控制平面路径,其容纳着处理器之间的控制信息流。所述机制因而实现了处理器之间的通信,而无需在延伸通过每条流水线的各处理器的数据平面通信路径上发送消息。
Description
相关申请的交叉引用
本发明与共同转让给本发明受让人的以下待审查申请相关,所述申请是2000年9月18日提交的美国专利申请No.09/663,777,名称为“PacketStriping Across a Parallel Header Processor”。
技术领域
本发明涉及处理器间的通信,更具体地说,涉及中间网络站的阵列化处理引擎的多个处理器之间的通信。
背景技术
脉动阵列(systolic array)提供了一种在问题可被划分为若干离散的工作单元时,用于提高计算机系统的处理能力的通用方法。一维脉动阵列包括单“行”处理元件或处理器,该阵列中的每个处理器在将输入数据传递到阵列中的下一元件前,都负责对该输入数据执行一组不同的指令。为了最大化吞吐率,将对问题进行划分,使得每个处理器要完成它那部分工作都需要大致相同的时间量。按照这种方式,新的输入数据可以以与每个处理器的处理时间相等的速率被“流水线式地输送”到所述阵列中,这些输入数据被划分为和阵列中的处理器一样多的单元,被并行处理。只要问题可以继续被划分为更小的工作单元,那么通过向阵列中增加更多的元件就可以提高性能。一旦达到了这种划分的上限,则通过并行配置的多行,并将新的输入数据分配给阵列中按顺序的下一行的第一处理器,就可以进一步增大处理容量。
在并行处理器脉动阵列的情况下,数据一般通过该阵列的数据平面路径,在一行中从一个处理器流动到下一个处理器。这样一种脉动阵列的例子是在美国专利申请No.09/106,478中所公开的处理引擎,上述申请是由Darren Kerr等人提交的,名称为“Programmable Arrayed ProcessingEngine Architecture for a Network Switch”,该申请作为参考包含在本申请中,如同在这里全部阐释的一样。处理引擎通常包括嵌入在中间网络站的输入缓冲器和输出缓冲器之间的一个处理器阵列,例如网络交换机。这些处理器被对称地排列为若干行和列,其中每一行的处理器被配置为流水线的多个级(stage),这些级顺序地对处理器间串行传递的数据(例如因特网协议(IP)分组)执行各项操作。
虽然数据平面路径主要是用于分组数据流,但是这一路径也可以用于引擎处理器之间的通信,特别是流水线的上游处理器和下游处理器之间的通信。这里,数据平面路径上的分组流在那些处理器之间是单向的。通过在分组中插入控制信息,上游处理器可以按照与通过处理引擎的分组数据流一致的方式来和下游处理器通信。然而,数据平面路径一般包含相当多的缓冲,结果,将该路径用于处理器通信就可能导致相当大的延迟。
将数据平面路径用于引擎的其它处理器之间的通信可能会更加困难并且费时。具体地说,对于一个与上游处理器通信的下游处理器而言,控制分组必须流经通过处理器流水线的附加路径。除了引起长延迟外,这种方法还可能浪费相当多的处理资源。此外,使用数据平面通信路径对于处在不同流水线中的处理器而言是不可能的。
发明内容
本发明主要涉及芯片间通信(ICC)机制,该机制使得一个流水线式的阵列化处理引擎中的任何处理器都能够通过低延迟通信路径,与该引擎中的其它处理器直接进行通信。ICC机制包括单向控制平面通信路径,该路径与所述引擎的数据平面路径相互独立,并且容纳着处理器之间的控制信息流。所述控制平面路径被耦合到与所述处理器相关联的ICC接口逻辑电路。每个ICC接口逻辑电路被配置为:响应于由任何源处理器发出的ICC请求而创建多位的ICC消息,并且如果适当的话,通过所述控制平面路径将所述消息“反向”(与所述数据平面路径的方向相反)转发到任何目的地处理器。结果,这种新颖的机制就实现了处理器间的通信,而无需在延伸通过每条流水线的各处理器的数据平面路径上发送消息。
在图示的实施方式中,处理引擎中的每个处理器被配置有唯一的地址。通过控制平面通信路径的通信包括使用多位的ICC消息,所述多位的ICC消息包括发起生成所述消息的源处理器的唯一地址以及接收所述消息的目的地处理器的唯一地址。相对于ICC消息可以被发送到单个处理器,ICC消息也可以被发送到处理器流水线的一组同级处理器。在后一种情形中,该流水线级中的任何一个处理器都可以处理进入的消息。
附图说明
结合附图,参考以下描述将更好地理解本发明的以上及其它优点,其中相同的标号代表相同的或功能上相似的元件:
图1是一个计算机网络的框图,所述计算机网络包括互连的通信媒体和附属有多个站的子网的集合;
图2是一个中间站的部分示意框图,该中间站例如是网络交换机,其具有根据本发明的控制平面通信路径;
图3是具有配置为集群(cluster)的多个处理器的可编程阵列化处理引擎的示意框图;
图4是根据本发明的芯片间通信(ICC)接口逻辑的示意框图,所述ICC接口逻辑包括ICC发送模块和接收模块;
图5是图示了根据本发明的ICC总线的示意框图;
图6是图示了根据本发明的ICC消息的示意框图;
图7中的流程图根据本发明示出了ICC发送模块为了生成并转发ICC消息所实施的步骤序列;
图8中的流程图示出了ICC接收模块响应于通过控制平面通信路径接收到ICC消息而实施的步骤序列;以及
图9中的流程图示出了ICC接收模块根据ICC总线上的请求/确认握手交换而实施的步骤序列。
具体实施方式
图1是计算机网络100的框图,该计算机网络包括互连的通信媒体和附属有多个站的子网的集合。所述站一般是包括终端站102、112和中间站200在内的多台计算机。中间站200可以是路由器或网络交换机,而终端站102、112可以包括个人计算机或工作站。所述子网通常包括局域网(LAN)110和120,虽然本发明使用其它的通信媒体配置(例如点到点的网络链路)可能更加有利。一般根据预先定义的协议在进行通信的站之间交换离散的数据帧或分组,这样就可以在网络的各个站之间实现通信。对于这里所描述的示意性的实施方式而言,预先定义的协议是因特网协议(IP),虽然可以用其它协议来实现本发明,例如因特网分组交换协议、AppleTalk或DECNet协议。
图2是一个中间站200的部分示意框图,该中间站在图示的实施方式中是一个网络交换机。该交换机通常执行第2层的处理功能,虽然它可被配置来实施第3层的转发操作。此外,中间站可以被配置为用于执行第3层路由处理的路由器。中间站体系结构的一种特性就是对站进行编程以执行第2层、第3层或更高层操作的能力。交换机的操作通常被描述为分组的IP交换,虽然交换机可被编程用于其它应用,例如数据加密。
交换机200包括多个互连的组件,这些组件包括数据馈送设备210、各种存储器和阵列化处理引擎250。存储器通常包括可由处理引擎寻址的随机访问存储器存储位置、以及用于存储由各个组件访问的软件程序和数据结构的逻辑。操作系统的多个部分一般驻留在存储器中并且由引擎来执行,操作系统通过调用支持在交换机上执行的软件处理的网络操作,从而在功能上组织交换机。本领域的技术人员将清楚:包括各种计算机可读介质在内的其它存储装置可被用来存储并执行与这里所描述的创造性技术和机制有关的程序指令。
阵列化处理引擎250可以用多个专用集成电路(ASIC)300来实现,其中每一个ASIC都与外部存储器280耦合。外部存储器用于存储非暂态(non-transient)数据,这些非暂态数据被组织在数据结构中,供在处理暂态(“上下文”)数据时使用。非暂态数据一般包括在转发和路由表中包含的“表”数据、统计信息、访问过滤器、加密密钥和/或队列信息。数据馈送设备210包含缓冲器,该缓冲器用于暂时存储从网络100接收的上下文数据,例如IP分组。此后,设备210将上下文数据递送给阵列化处理引擎ASIC 300的处理器。在图示的实施方式中,4个阵列化处理引擎ASIC0-3通过数据平面路径220与数据馈送设备210串行互连,所述数据平面路径220被配置为将来自馈送设备210的上下文传递到ASIC 0-3之一。为了绘制和描述创造性的技术和机制,这里将数据馈送设备210和ASIC 0-3统称为处理引擎250。
根据本发明,芯片间通信(ICC)机制使得阵列化处理引擎250中的任何处理器都能够通过低延迟的通信路径,直接与该引擎中的其它任何处理器通信。ICC机制包括单向控制平面路径230,该路径230与引擎的数据平面路径220相互隔离,并且容纳着处理器之间在与数据平面路径220相反的方向上的控制信息流。具体地说,控制平面通信路径230在返回设备210之前将穿过处理引擎250的数据馈送设备210和每一个ASIC 0-3,以有效地形成一条延伸通过这些设备中每一个的“回路”。尽管上游处理器可以通过数据平面路径220将上下文数据传递到下游处理器,但是下游处理器也可以通过控制平面路径230与上游处理器进行通信,正如这里所进一步描述的那样。
需要注意的是,控制平面通信路径230与通过数据平面路径220的高延迟路径相比,是一条“低延迟”路径。也就是说,在每一个处理引擎ASIC 300内都有相当多的缓冲,例如输入/输出缓冲器和上下文存储器,这些缓冲造成了具有高延迟的上下文数据流路径220。相反,控制平面路径230上的缓冲例如寄存器和队列就少一些。因此,低延迟路径230被配置来提供一种在处理引擎250的处理器之间传送控制(通信)信息的有效机制。这种全新的机制无需在穿过每条流水线的各个处理器的数据平面路径上发送消息,就可以实现处理器间的通信。
具体地说,ICC机制允许阵列化处理引擎250的处理器在“带内”数据平面路径220之外进行通信,所述“带内”数据平面路径220用于在流水线的处理器之间转发上下文。除了处理引擎的处理器之外,ICC机制还实现了其它外部设备之间的通信,所述外部设备例如包括数据馈送器210或现场可编程门阵列(FPGA)设备。正如这里所进一步描述的那样,ICC机制包括ICC接口逻辑电路400,这些电路包含在ASIC和数据馈送设备中,从而与各个处理器相关联。ICC接口逻辑被配置为响应于ASIC 300的源处理器发出的ICC请求而创建多位的ICC消息,并且如果适当的话,通过所述控制路径230将所述消息“反向”(与所述数据平面路径220的方向相反)转发到目的地处理器或者数据馈送设备210。
ICC接口逻辑电路400通过控制平面路径230互连,所述控制平面路径230包括23位的数据/地址双倍数据率(DDR)线232以及适于传输ICC时钟信号的1位时钟线234。路径230还包括2位的奇偶线235,其被配置为传送奇偶信息,还包括传送1位有效(valid)信号的线236和传送1位就绪(ready)信号的线238。用于ICC逻辑400的数据/地址接口示例性地表示为DDR接口,虽然单倍数据率(SDR)接口也可以用来实现ICC逻辑400与FPGA设备的接口。DDR接口以每周期寻址来支持多位ICC消息(例如46位消息)的吞吐率,而SDR接口以每隔一个周期的寻址来支持多位消息。奇偶线235传送2位的奇偶信息,该信息用于检测接口上的故障。
ICC时钟信号通过时钟线234来转发,并且在ICC接口400处与每个ASIC或数据馈送设备中的内部核心时钟异步地被接收。在ICC接口上示例性地给出了一个时钟位。对于DDR模式,在ICC时钟信号的上升沿和下降沿都捕获数据。对于SDR模式,只在时钟信号的上升沿捕获数据。
在线236、238上传送的有效和就绪信号控制着ICC接口电路400上的信息流。有效信号的断言(assertion)指示出DDR数据是有效的。有效信号在ICC时钟信号的正(上升)沿进行转换;因此,ICC接收器将在有效信号被断言(活动态)时接收46位的数据/地址。具体地说,根据DDR时钟模式,23位的数据/地址在时钟信号的上升沿通过路径230来传输,而剩余的23位则在时钟信号的负(下降)沿通过所述路径来传输。就绪信号的断言指示出ICC消息的接收器能够接收更多的数据。当就绪信号从活动态转换到非活动态时,所述接收器在ICC逻辑400的接收队列超限(overrun)之前仍能够接收少量的消息。就绪信号是一个异步信号,在内部使用该信号前,它将在ASIC或类似设备上进行同步。
图3是阵列化处理引擎ASIC 300的示意框图,它包括嵌入在输入缓冲器和输出缓冲器之间的处理器阵列340。处理器340被示例性地排列为多行和多列,并可被进一步配置为一个脉动阵列。在图示的实施方式中,处理器被排列为8行2列的8×2阵列化结构,其嵌入在输入缓冲310和输出缓冲器320之间。然而,应当注意,本发明中也可以有利地使用诸如4×4或8×1阵列化结构的其它布局。每行的处理器与上下文存储器345相连;合在一起,行内的这些元件被组织为集群0-7330。
每个处理器都是定制的单线程化微控制器(TMC,single-threadedmicrocontroller)340,其具有的高密度结构使得能够在ASIC上实现类似的处理器。本发明可以在阵列化引擎的一列中设置任意数量的处理器。TMC 340被示例性地表示为流水线化的处理器,该处理器包括多个算术逻辑单元(ALU)以及具有多个通用寄存器的寄存器文件等,所述通用寄存器用于存储ALU所处理的中间结果信息。每个TMC处理器配置有唯一的7位地址,正如这里所进一步描述的那样,该地址中包括3位的处理器行标识符(ID)、1位的处理器列ID和3位的“芯片”ID。
每个集群0-7330的处理器(TMC0、TMC1)都对由输入缓冲器310从数据平面路径220加载到上下文存储器345中的暂态数据执行操作,而每一列的处理器都并行地对级平移(shifted phase)后的暂态数据执行基本相同的操作。每个处理器都加入到“软件流水线”级中,如果某个集群的一个处理器所进行的处理停止(即,被延迟)的话,则该集群中的所有处理器都被延迟。如果在最大间隔内没有完成所有的级,并且暂态数据是不相关的,则这种设置可能产生不希望得到的依赖性。一旦完成了处理,每个集群0-7330就将暂态数据转发到输出缓冲器320,并置于数据平面路径220上。
除了存储流经集群的暂态数据之外,上下文存储器345还存储指针,这些指针指向例如存储在供TMC 340使用的外部存储器280中的数据结构和表。每个外部存储器280都耦合到一列存储器,从而实现对存储在该存储器中的非暂态数据的列式处理器访问。处理器访问的共享存储器280还可以包括数据结构(例如表)中不断由每一列的处理器进行更新和访问的那些条目。这种表结构的一个例子就是转发信息库表,它由处理引擎用来执行转发操作。
每个集群0-7都经由ICC总线500耦合到ICC接口逻辑400;因此,集群内的每个TMC处理器都共享一条公共ICC总线500。在每个集群330内配备了一个仲裁器350,用于在由多个TMC处理器340发出的访问总线500的同时请求之间进行仲裁。该仲裁器包括传统的仲裁逻辑,被示例性地构造为实现“先到先服务”的仲裁策略。假如每个处理器都同时发出了对ICC总线500的请求,则调用“乒乓式”冲突解决策略,以允许处理器之一访问总线。具体地说,配备了一个乒乓寄存器354来“记住”被授予总线访问权的最后一个TMC处理器,即先前冲突的仲裁结果。在发生了后续的冲突后,其它TMC处理器被授予共享总线500的访问权。每个处理器都具有相关联的数据/地址寄存器352,该寄存器被配置为在仲裁逻辑350将ICC总线500的访问权授予该处理器之前,保持由TMC 340产生的数据和地址信息。
图5是图示ICC总线500的示意框图,所述ICC总线500包括ICC总线段510-530。ICC总线段510包括耦合在每个集群330和ICC接口逻辑400的ICC发送模块410之间的多条通信线。因此,在图示的实施方式中,一共有8个ICC总线段510,其中每一个在ASIC 300或数据馈送设备210上将集群0-7连接到ICC接口逻辑400。ICC总线段510包括7位的“To:地址”线512,其被配置为传送“To地址”605(见图6)。ICC总线段510还包括2位的请求线516,该线指示了集群内的哪一个处理器发起了ICC通信请求,还包括2位的确认线518,该线将来自ICC发送模块410的确认信息传送到集群330内发出请求的处理器。另外,总线段510包括32位的数据线514,该线适于传送ICC消息600的数据字614。
ICC总线500还包括ICC总线段520,其具有线522,适于将来自ICC接收模块440的2位有效信息传送到每个集群330内适当的TMC处理器340。请求线526将来自集群内特定TMC处理器的2位请求信息传送到ICC接收模块,而确认线524将来自接收模块440的2位确认信息传送到集群内的处理器。另外,ICC总线500包括一个独立总线段530,其将来自ICC接收模块440的39位数据/地址信息传送到ASIC 300的所有集群330。段530上的数据/地址信息包括ICC消息600的32位数据字614和7位源(From)地址615。因为总线段520上所传送的信息标识出根据请求/确认握手预定接收数据/地址530的特定处理器/集群,所以不需要目的地(To)地址605。
图6是图示了ICC消息600的示意框图,所述ICC消息600包括32位的数据字614、7位的“From(源)地址”615和7位的“To(目的地)地址”605。数据字614包括源处理器用来和目的地处理器通信的32位信息。7位“From地址”615包括字段612中的3位“From处理器行标识(ID)”、字段610中的1位“From处理器列ID”以及字段608中的3位“From芯片ID”。7位的“To地址”605包括字段606中的3位“To处理器行ID”、字段604中的1位“To处理器列ID”以及字段602中的3位“To芯片ID”。针对每个ASIC 300默认的8×2行/列阵列,每个3位的处理器行ID示例性地支持多达8行(集群)。每个3位的芯片ID示例性地支持多达8个阵列化处理引擎ASIC和/或数据馈送设备。
在图示的实施方式中,ICC消息600在控制平面路径230上的通信包括多项传输。第一传输包括线232上的ICC消息位[45:39]和[31:16]。对于这个第一传输,线235的奇偶位[1]统管ICC消息位[45:39]和[31:28],而线235的奇偶位[0]统管ICC消息位[27:16]。在路径230的线232上的第二传输包括ICC消息位[38:32]和[15:0]。对于第二传输,线235的奇偶位[1]统管ICC消息位[38:32]和[15:12],而线235的奇偶位[0]统管ICC消息位[11:0]。奇偶的类型(例如,奇数或偶数)在ICC配置寄存器中是可编程的。
为了创建ICC消息600,运行在源TMC处理器340上的微代码生成一个ICC通信请求,该请求包括32位的数据字614和预定接收该消息的处理器的7位“To地址”605。这个ICC请求信息随后通过ICC总线500被传递到ICC接口逻辑400,该逻辑400生成所述消息的“From地址”615。每个ASIC 300和数据馈送设备210都具有唯一的芯片ID,这可以由交换机的远程处理器(RP)来编程;ICC接口400将这个ID加载到ICC消息600的字段608中。逻辑400然后加载代表与源处理器相关联的特定集群的3位行ID以及指示该集群的TMC0或TMC1的1位列ID。
然后,由源ASIC上的源处理器发起的ICC消息600可以在交换机200中的ASIC/数据馈送设备的ICC接口逻辑电路400之间传递,直到该消息到达了目的地。“From芯片ID”608代表发出该请求的源设备,而“To芯片ID”602代表该消息的目的地设备。如果ICC消息是从源设备“片外(off-chip)”发送的,后来又在该源设备处被接收到,则ICC接口400将丢弃这个消息,因为认定“To芯片ID”是无效的。也就是说,如果进入的ICC消息在字段608中包含的“From芯片ID”等于该ICC逻辑400的唯一ID(此后称为“ICC芯片ID”),则丢弃该消息,因为它在未被要求的情况下,已循环了控制平面路径“回路”一周。因此,通过线456从FIFO 430传输到ICC接收模块440的ICC消息要想“有效”的话,源ID一定不能等于该ICC芯片ID。
图4是ICC接口逻辑400的示意框图,所述逻辑400包括耦合于ICC接收模块440的ICC发送模块410。ICC片上先入先出(FIFO)队列420将ICC发送模块410连接到控制平面通信路径230,并被配置来存储由位于ASIC/数据馈送设备“内部”的处理器发出的ICC消息。ICC片上FIFO420示例性地包括16个条目,其中每一个都有46位长,用于容纳ICC消息600。ICC接口逻辑400还包括ICC片外FIFO 422,其被配置为存储以下ICC消息600,该ICC消息600是在到处理引擎250的另一个设备上的目的地处理器的路由上“途经”这个设备的ICC接口逻辑400的消息。传统的仲裁器426耦合于FIFO 420和422,用于选择通过控制平面路径230传输的ICC消息600。
ICC接口逻辑还包括ICC接收FIFO队列430,其将ICC接收模块440连接到控制平面通信路径230,并被配置来存储由位于该ICC接口逻辑所在设备(ASIC或数据馈送器)“外部”的处理器发出并通过路径230接收到的ICC消息。ICC接收FIFO队列430示例性地包含16个条目,其中每一个条目都长46位,用于容纳ICC消息。消息信息基于DDR输入时钟被写入(载入)FIFO 430中,并基于内部核心时钟从FIFO 430中取出(读出)。这些进入的ICC消息可被导向包含在所述ASIC中的TMC处理器或另一个ASIC/数据馈送设备。
在ICC接口逻辑400的接口处使用FIFO,使得能够在不同的应用中使用控制平面通信路径230。例如,ICC逻辑和通信路径(回路)可以被耦合到实施为现场可编程门阵列(FPGA)器件的设备,这些设备不象ASIC 300运行得那么快。使用FIFO就能够在耦合到ICC机制的设备之间实现同步,这些设备可能运行在具有不同速率的内部时钟上。因此,ICC片上FIFO 420、ICC片外FIFO 422和接收FIFO 430在设备(ASIC 300或数据馈送器210)的内部时钟域和ICC接口逻辑的ICC时钟域之间基本上实现了同步。这些FIFO支持以下操作:基于内部核心时钟将信息加载到(写入)它们的条目中,以及基于ICC DDR域的时钟从这些条目中取出(读出)信息。
ICC发送模块410包括第一传统仲裁器412,其适于接收由该设备内的集群330的TMC处理器发出的ICC请求。仲裁器412示例性地采用先到先服务策略,并且与ICC源生成逻辑415协作来编制完整的ICC消息,正如这里所描述的那样。向设备的每一个集群0-7提供一个数据/地址寄存器414,这样一组寄存器414用于存储预定前往包含在引擎的ASIC或其它设备上的处理器的ICC消息600。例如,响应于由某个集群的源处理器向包含该源处理器的设备之外的目的地处理器发出的通信请求(即,“片外”请求),仲裁器412将接收自所述集群的ICC消息加载到适当的寄存器414中。第二传统仲裁器416被配备来选择数据/地址寄存器414之一,以将其内容通过线425转发到ICC片上FIFO缓冲器420。
ICC发送模块410还包括用于存储以下ICC消息600的片外寄存器418,所述ICC消息600是在到例如处理引擎250中的目的地TMC处理器的路由上“途经”所述ICC接口逻辑400的消息。片外寄存器418示例性地接收通过线452从ICC接收模块440而来的46位ICC消息600,还有指示寄存器418是否可用于容纳该ICC消息的握手信号。然后,片外寄存器418通过线424将所述消息转发到ICC片外FIFO 422。与ICC片上FIFO420一样,ICC片外FIFO 422也具有16个条目,其中每一个条目都长46位,用于容纳ICC消息600。
ICC接收模块440包括传统的仲裁器442,其被配置来管理接收存储器446,该存储器用于存储预定前往所述(ASIC)设备上的处理器的ICC消息。接收存储器446示例性地包括128个条目,每一个条目包含用于容纳ICC消息600的46位。配备一个请求队列444,用于存储由ASIC的处理器在“轮询”来确定在接收存储器中是否有待用于这些处理器的未决消息时所发出的请求。所述请求队列示例性地包括4个条目,其中每一个条目容纳从ASIC 300上的16个处理器当中发出的一个请求。接收模块440还包括数据/地址寄存器448,其被配置来存储从接收FIFO 430传输而来的ICC消息600。
图7中的流程图根据本发明示出了ICC发送模块为了生成并转发ICC消息600所实施的步骤序列。该序列从步骤700开始并前进到步骤702,在此源TMC处理器生成向引擎250的目的地处理器发出ICC消息的ICC请求。所述ICC请求包括32位数据字614和预定接收该消息的处理器的7位To地址605。在步骤704中,在ICC发送模块410处接收到所述ICC请求,在步骤706中,仲裁器412的仲裁逻辑与ICC源生成逻辑415协作来创建完整的ICC消息。
具体地说,ICC源生成逻辑415产生ICC消息600的7位“From地址”615。为此,逻辑415获取与特定ASIC或馈送设备210的ICC逻辑相关联的“From芯片ID”,并将该ID加载到字段608中。注意,“From芯片ID”可以从所述设备的永久存储设备中获取,或者可以从ICC逻辑400中例如由RP配置的寄存器处获取。由于和ICC发送模块410接口的ICC总线段510示例性地表示为8个,所以源生成逻辑415可以识别出哪个总线段510运送了来自特定集群330的ICC消息600。因此,逻辑415就获得了这个源集群330的“From处理器行ID”,并将它加载到消息600的字段612中。逻辑415还监控2位请求线516的状态,以确定源集群330的哪个TMC处理器340发出了所述ICC请求,并据此捕获适当的状态值,并将它加载到消息600的列ID字段610中。
然后在步骤708中,仲裁逻辑412将该消息加载到模块410上适当的数据/地址寄存器414中。仅当这个寄存器是“空的”(即,该寄存器的内容无效)时,从某个集群接收的ICC请求才由仲裁逻辑412加载到适当的寄存器414中。此时,仲裁器412生成适当的确认信号,并通过线518将该信号返回到生成所述ICC请求的处理器,参见步骤710。注意,仲裁逻辑412在适当的寄存器414可用于载入当前的ICC请求前,不会产生确认。因此,源集群330上的TMC处理器340必须保持它的数据和地址信息有效,直到它从ICC发送模块410接收到确认信号。
仲裁逻辑然后确定接收所述消息的目的地处理器的位置。为此,在步骤712,仲裁逻辑412将所述ICC消息的目的地(To芯片)ID 602与特定ICC逻辑400的源(ICC芯片)ID进行比较。在步骤714处,如果这两个ID匹配(即,目的地在“片上”),则在步骤716处,仲裁逻辑412选择适当的数据/地址寄存器414的内容(即,46位消息600),从而通过线454将其传输到ICC接收模块440上的仲裁逻辑442,以存储在接收存储器446中。线454还包括握手信号,例如从仲裁逻辑412到仲裁逻辑442的1位请求信号、以及从仲裁逻辑442到仲裁逻辑412的1位就绪信号。线454上ICC消息600的传输意味着由源TMC 340产生的ICC消息预定前往同一ASIC 300上的另一个TMC处理器340。所述序列然后在步骤722处结束。
然而,如果ICC请求的目的地ID与ICC逻辑400的源ID不匹配的话(步骤714),则该ICC消息600的目的地处理器是“片外”的,并且在步骤718处,ICC发送模块410的仲裁逻辑416选择数据/地址寄存器414之一,让它通过线425将其内容提供给ICC片上FIFO 420。信息将在以下示例性的条件下通过线425被传输到片上FIFO 420:当ICC消息600的目的地(To芯片)ID不等于ICC接口逻辑400的源(ICC芯片)ID时。仲裁逻辑416在所述数据/地址寄存器414组之间示例性地实施“先到先服务”仲裁策略,从而选择特定寄存器的内容传输到FIFO 420,最终到达控制平面通信路径230上。
在步骤720,FIFO 420和422的内容被提供(转发)给仲裁逻辑426,以传输到控制平面通信路径230上。仲裁器426示例性地实施以下仲裁策略,即当选择ICC消息600时,给予片外FIFO 422以优先权。之所以将优先权给予片外FIFO 422,是因为其中所包含的消息通常是在ICC片上FIFO 420内所驻留的那些消息之前产生的。更有意义的是,逻辑426所实施的优先权策略为那些在交换机中遍历多个设备(ASIC 300或数据馈送器210)的消息提供了低延迟的通信路径。本领域的技术人员可以理解,可以将仲裁策略变更为给予片上FIFO 420以优先权。所述序列然后在步骤722处结束。
图8中的流程图示出了ICC接收模块440响应于通过控制平面通信路径230接收到ICC消息600而实施的步骤序列。该序列从步骤800开始并前进到步骤802,在此ICC消息从ICC接收FIFO 430传输而来并存储在数据/地址寄存器448中。包含在数据/地址寄存器448的输出端的可编程逻辑(PL 449)确定对所述消息采取何种动作。在步骤804,所述可编程逻辑将所述消息的“From芯片ID”608与ICC逻辑400的设备的ICC芯片ID进行比较。如果在步骤806中两者匹配,则在步骤808中丢弃所述消息,因为如前所述,它在未被要求的情况下,已循环了控制平面路径“回路”一周。然而,如果在步骤806中两者不匹配,则在步骤810中,可编程逻辑比较(目的地)“To芯片ID”602与所述设备的“ICC芯片ID”。
如果目的地ID与“ICC芯片ID”不匹配(步骤812),则在步骤814,ICC消息通过线452被传输到ICC发送模块410上的片外寄存器418。从那里开始,所述消息将通过ICC片外FIFO 422,并经由控制平面通信路径230转发到另一个ASIC或数据馈送设备(步骤)。所述序列然后在步骤820结束。另一方面,如果目的地ID与所述设备的唯一“ICC芯片ID”匹配(步骤812),则在步骤818中,所述ICC消息通过线450被转发到接收存储器446。所述序列然后在步骤820结束。
接收存储器446(和ICC接收模块440)可被配置为运行在两种示例性的模式之一中。第一种“行模式”使得ICC消息可以基于ICC消息600的目的地地址605的“To处理器行ID”606和列ID 604,被导向特定的处理器340。在行模式中,接收存储器446逻辑上被划分为16个FIFO,每一个TMC处理器340对应于其中一个FIFO,其中每一个FIFO包含8个46位条目。只要8个条目中有一个可用,导向特定TMC 340的ICC消息就被加载到存储器446的适当的段中。
运行的第二种“列模式”使得ICC消息可被导向ASIC 300上的任何一列处理器。对于这种运行模式,接收存储器446逻辑上被划分为2个FIFO,一个对应于第0列,另一个对应于第1列,其中每个FIFO都包含64个46位条目。由于一列中的所有处理器因执行基本相同的代码而基本上执行相同的工作,所以存在以下状况,即特定的源处理器可能想要向一列中的任意一个处理器发送ICC消息。在图示的实施方式中,一个特定的处理器或一列特定的处理器根据ICC总线段520上的请求/确认握手交换,通过轮询ICC接收模块440来识别是否有一个ICC消息将预定到来。
图9中的流程图示出了ICC接收模块440根据ICC总线段520上的请求/确认握手交换而实施的步骤序列。该序列从步骤900开始并前进到步骤902,在此集群(例如集群0)的处理器(例如TMC1)在总线段520上发出了轮询请求,用以确定是否有驻留于接收存储器446中并预定前往所述处理器的未决ICC消息600。对于每一个请求,ICC接收模块440的仲裁逻辑442在请求线526上接收到对应于所述处理器(例如集群0的TMC1)的被断言位(asserted bit)。具体地说,2位的请求线526从阵列化处理引擎ASIC 300的每个集群330延伸到ICC接收模块440。根据其多个位的状态,线526识别该集群内的特定TMC处理器340。因此,在8条线526上传播的总共16个请求信号可被配置来识别ASIC中可以轮询接收存储器446的每一个处理器。
响应于在ICC接收模块440处接收的每一个ICC总线段520的请求526,仲裁逻辑442在这些请求/段当中进行仲裁,以选择预定数量的(例如4个)请求,参见步骤904;然后,这些请求在步骤906被加载到请求队列444中。需要注意,请求队列示例性地包括4个条目,其中每一个条目容纳从阵列化处理引擎ASIC 300上的16个处理器当中发出的一个请求。因此,如果ASIC 300上的每个处理器340都发出请求来确定它在接收存储器446中是否具有未决的ICC消息600,则仲裁逻辑442在每个时钟周期上最多选择4个请求加载到请求队列444中。因为数据/地址段530由所有的集群共用,所以每个时钟周期在总线段530上只有一个ICC消息/请求可被传输到特定的处理器/集群。
如果请求队列444中有足够的容量,则逻辑442就将选出的请求加载到请求队列中,并通过线524向发出请求的处理器(例如TMC1)返回适当的确认信号(步骤908)。所述确认信号指示出所述请求已被“排入队列”,并且当处理器可用时将把ICC消息传递给它。(在8条线524上传播的)总共16个确认信号可被配置来识别ASIC的每一个处理器。每个确认信号在请求发出后的一个固定时间上(例如1或2周期后)被返回发出请求的处理器。所述确认可以是被断言的或未断言的,以指示所述请求已被接受或拒绝。被断言的确认信号仅通过线524被返回到其请求被载入请求队列444的那些TMC处理器。一旦确认信号返回到发出请求的处理器,则该处理器可以预期在固定的时限内(例如4个周期内)通过总线段530传递ICC消息。
此外,(8条线522上传播的)16个有效信号可被配置来识别ASIC的每个处理器。在步骤910,通过向发出请求的处理器断言线522上适当的有效信号,该处理器340被告知:段530上的ICC消息的数据/地址信息对该处理器可用。也就是说,当线522上适当的位被ICC接收模块440断言后,39位的数据/地址信息将对特定的处理器有效。线522上的有效信号将线524、526上的请求/确认握手交换与总线段530上实际数据/地址信息的传递分隔开。这样,对于接收存储器446中未决的ICC消息,就能够对ICC接收模块440处接收的多达4个同时请求进行排序。所述序列在步骤912结束。
应当注意,如果特定的TMC处理器340向ICC接收模块440发出的请求是针对并非在接收存储器446中的未决的ICC消息600,则该处理器将不会在线524上接收到确认信号。这种情况下,所述处理器随后必须再次发出请求。仲裁器442通过线455查询接收存储器446的状态,来确定对于特定的TMC处理器是否有一个未决的消息。如果对于特定的TMC处理器请求没有未决的ICC消息,则不将所述请求加载到请求队列444中。因此,只有当存储器446中对于请求存在未决的ICC消息时,仲裁逻辑442才将这些请求加载到队列444中。因此,只有当通过线526发出的请求被载入请求队列444时,才通过线524返回确认信号。
虽然已经示出并描述了以下机制的示例性实施方式,所述机制使得流水线式的阵列化处理引擎中的任何处理器都能够通过一条低延迟的通信路径与该引擎中的其它处理器直接通信,但是可以理解,在本发明的精神和范围内可以做出其它各种调整和修改。例如,进一步改变示例性的实施方式,仲裁逻辑442可被配置为相对于TMC处理器340发出的进入请求采用“严格处理器优先权顺序”仲裁策略。根据这一策略,集群0的处理器相对于集群1-7的处理器具有优先权,依此类推。然而,一个集群的处理器(例如TMC0、TMC1)之间的优先权可以在第0列和第1列之间“乒乓式来回”。例如,假设集群0/列0的处理器和集群1/列0、集群2/列0和集群5/列0的处理器一起发出请求。另外,集群2/列1、集群4/列1和集群5/列1的处理器发出从存储器446取ICC消息600的请求。
假设这些处理器中的每一个都在同一时钟周期上发出请求,则仲裁逻辑442根据示例性的仲裁策略,在这些进入请求之间做出仲裁。还假设请求队列444为空,则仲裁器442确认来自列0的两个请求以及来自列1的两个请求,其中基于严格优先权来授予每一列内的请求。因此,仲裁逻辑442确认由集群0/列0和集群1/列0的处理器发出的请求,还确认来自集群2/列1和集群4/列1的处理器的请求。
然而,如果有一个请求当前正处于请求队列444中未决,使得仲裁逻辑442只能确认进入请求中的三个,则仲裁策略规定被授予奇数个(1个)请求的列就是前面发生冲突时被授予了偶数个(2个)请求的那个列。为此,仲裁逻辑442使用乒乓寄存器458,该寄存器指示了哪个列在上一次冲突中被赋予了“优先权”(即,被授予的请求较多)。因此,在仲裁期间,另一个列被授予优先权,其中奇数个请求可被确认。
已对这一发明的特定实施方式进行了上述描述。然而应当清楚的是,可以对所描述的实施方式做出其它各种改变和修改,但仍能实现它们的全部或部分优点。因此,所附权利要求书的目的是要覆盖落入本发明的真正精神和范围内的所有这些改变和修改。
Claims (20)
1.一种适于使得具有多个处理器的处理引擎中的任何处理器都能够与该引擎中的任何其它处理器直接通信的系统,所述系统包括:
与所述引擎中的数据平面路径相互隔离的控制平面通信路径,该路径被配置来容纳所述处理器之间的控制信息流;和
至少一个耦合到所述控制平面通信路径并且通过总线与所述处理器相关联的芯片间通信接口逻辑电路,即ICC接口逻辑电路,所述ICC接口逻辑电路包括耦合到ICC接收模块的ICC发送模块,
其中,所述ICC发送模块配置为,
接收与所述ICC接口逻辑电路相关联的处理器处生成的芯片间通信请求,即ICC请求;
响应于所述ICC请求来创建ICC消息;
确定接收所述ICC消息的目的地处理器的位置;并且
通过所述控制平面通信路径将所述ICC消息转发到所述目的地处理器。
2.如权利要求1所述的系统,其中,所述控制平面通信路径是低延迟的通信路径。
3.如权利要求2所述的系统,其中,所述低延迟的通信路径容纳与所述数据平面路径方向相反的信息流。
4.如权利要求1所述的系统,其中,所述多位的ICC消息包括发起生成所述消息的源处理器的唯一地址以及接收所述消息的目的地处理器的唯一地址。
5.如权利要求1所述的系统,其中,所述处理器被排列成多行多列,并且其中每一行处理器被组织为一个集群。
6.如权利要求5所述的系统,其中,与所述处理器相关联的ICC接口逻辑电路被包含在所述处理引擎的专用集成电路和数据馈送设备之一上。
7.如权利要求1所述的系统,其中,所述ICC接口逻辑电路还包括ICC片上先入先出,即ICC片上FIFO,其将所述ICC发送模块连接到所述控制平面通信路径,所述ICC片上FIFO被配置来存储由某一设备内部的源处理器发出的第一ICC消息。
8.如权利要求7所述的系统,其中,所述ICC接口逻辑电路还包括ICC片外FIFO,其被配置来存储第二ICC消息,所述第二ICC消息在前往所述处理引擎的目的地处理器的路由中途经所述ICC接口逻辑电路。
9.如权利要求1所述的系统,其中,所述ICC接口逻辑电路还包括ICC接收先入先出,即ICC接收FIFO,其将所述ICC接收模块连接到所述控制平面通信路径,所述ICC接收FIFO被配置来存储由包含所述ICC接口逻辑电路的设备之外的源处理器发出的第一ICC消息。
10.如权利要求9所述的系统,其中,所述ICC接收模块包括接收存储器,其被配置来存储预定前往所述设备上的至少一个目的地处理器的第一ICC消息。
11.如权利要求10所述的系统,其中,所述接收存储器被配置为运行在行模式中,所述行模式使得所述第一ICC消息可被导向所述设备上的特定目的地处理器。
12.如权利要求10所述的系统,其中,所述接收存储器被配置为运行在列模式中,所述列模式使得所述第一ICC消息可被导向所述设备上的一列目的地处理器。
13.如权利要求5所述的系统,ICC总线将每个集群耦合到所述ICC接口逻辑电路,使得一个集群的每个处理器共享该ICC总线。
14.如权利要求13所述的系统,还包括每个集群的仲裁器,其适于在由一个集群的处理器发出的访问所述ICC总线的同时请求之间做出仲裁。
15.一种使得处理引擎中的源处理器能够与该引擎的目的地处理器直接通信的方法,所述源处理器位于所述处理引擎的第一设备上,所述方法包括以下步骤:
在所述源处理器处生成芯片间通信请求,即ICC请求,所述ICC请求包括数据字和所述目的地处理器的To地址;
在与所述源处理器相关联的ICC接口逻辑电路的ICC发送模块处接收所述ICC请求;
在所述ICC发送模块处响应于所述ICC请求,产生“From地址”以创建ICC消息;
确定接收所述消息的目的地处理器的位置;以及
如果所述目的地处理器位于所述处理引擎的另一个设备上,则通过控制平面通信路径将所述ICC消息转发到所述目的地处理器。
16.如权利要求15所述的方法,其中,所述产生步骤包括以下步骤:
获取与所述第一设备相关联的“From芯片标识符”,即“From芯片ID”;
通过识别运送来自所述源处理器集群的ICC请求的ICC总线段,从而获得与所述源处理器的集群相关联的“From处理器行ID”;以及
由与所述源处理器相关联的所述ICC总线段的请求线的状态来捕获“From处理器列ID”。
17.如权利要求16所述的方法,其中,所述确定步骤包括以下步骤:比较所述ICC消息的“To芯片ID”与所述设备的“ICC芯片ID”。
18.如权利要求17所述的方法,还包括以下步骤:如果所述的芯片ID匹配,则将所述ICC消息传递到ICC接收模块,以存储在接收存储器中。
19.一种适于使得处理引擎中的源处理器能够与该引擎的目的地处理器直接通信的装置,所述源处理器位于所述处理引擎的第一设备上,所述装置包括:
用于在所述源处理器处生成芯片间通信请求,即ICC请求的装置,所述ICC请求包括数据字和所述目的地处理器的“To地址”;
用于在与所述源处理器相关联的ICC接口逻辑电路的ICC发送模块处接收所述ICC请求的装置;
用于在所述ICC发送模块处响应于所述ICC请求,产生“From地址”以创建ICC消息的装置;
用于确定接收所述消息的目的地处理器的位置的装置;以及
用于如果所述目的地处理器位于所述处理引擎的另一个设备上,则通过控制平面通信路径将所述ICC消息转发到所述目的地处理器的装置。
20.如权利要求19所述的装置,其中,用于产生的装置包括:
用于获取与所述第一设备相关联的“From芯片标识符”,即“From芯片ID”的装置;
用于获得与所述源处理器的集群相关联的“From处理器行ID”的装置;以及
用于由与所述源处理器相关联的ICC总线段的请求线的状态来捕获“From处理器列ID”的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/158,768 US7447872B2 (en) | 2002-05-30 | 2002-05-30 | Inter-chip processor control plane communication |
US10/158,768 | 2002-05-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1656470A CN1656470A (zh) | 2005-08-17 |
CN100354853C true CN100354853C (zh) | 2007-12-12 |
Family
ID=29582750
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB038125234A Expired - Fee Related CN100354853C (zh) | 2002-05-30 | 2003-05-27 | 用于芯片处理器间的控制平面通信的系统和方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7447872B2 (zh) |
EP (1) | EP1508100B1 (zh) |
CN (1) | CN100354853C (zh) |
AT (1) | ATE534955T1 (zh) |
AU (1) | AU2003234641B2 (zh) |
CA (1) | CA2487355C (zh) |
WO (1) | WO2003102805A2 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050138324A1 (en) * | 2003-12-19 | 2005-06-23 | International Business Machines Corporation | Processing unit having a dual channel bus architecture |
US8453147B2 (en) * | 2006-06-05 | 2013-05-28 | Cisco Technology, Inc. | Techniques for reducing thread overhead for systems with multiple multi-threaded processors |
US8041929B2 (en) | 2006-06-16 | 2011-10-18 | Cisco Technology, Inc. | Techniques for hardware-assisted multi-threaded processing |
US8010966B2 (en) | 2006-09-27 | 2011-08-30 | Cisco Technology, Inc. | Multi-threaded processing using path locks |
US20080133879A1 (en) * | 2006-12-05 | 2008-06-05 | Electronics And Telecommunications Research Institute | SIMD parallel processor with SIMD/SISD/row/column operation modes |
US7813277B2 (en) * | 2007-06-29 | 2010-10-12 | Packeteer, Inc. | Lockless bandwidth management for multiprocessor networking devices |
US8279885B2 (en) * | 2007-09-25 | 2012-10-02 | Packeteer, Inc. | Lockless processing of command operations in multiprocessor systems |
US8111707B2 (en) * | 2007-12-20 | 2012-02-07 | Packeteer, Inc. | Compression mechanisms for control plane—data plane processing architectures |
US9419867B2 (en) * | 2007-03-30 | 2016-08-16 | Blue Coat Systems, Inc. | Data and control plane architecture for network application traffic management device |
US8059532B2 (en) * | 2007-06-21 | 2011-11-15 | Packeteer, Inc. | Data and control plane architecture including server-side triggered flow policy mechanism |
US8612733B2 (en) * | 2011-07-15 | 2013-12-17 | O2Micro, Inc. | Battery management systems with enumerating circuits |
US8907625B2 (en) | 2011-07-15 | 2014-12-09 | O2Micro, Inc. | Battery management systems with vertical bus circuits |
US10091082B2 (en) | 2014-11-28 | 2018-10-02 | At&T Intellectual Property I, L.P. | Methods and apparatus to capture data plane information |
US10042749B2 (en) * | 2015-11-10 | 2018-08-07 | International Business Machines Corporation | Prefetch insensitive transactional memory |
JP6734760B2 (ja) * | 2015-11-10 | 2020-08-05 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | プリフェッチ・インセンシティブのトランザクション・メモリ |
US10872145B2 (en) * | 2017-10-25 | 2020-12-22 | International Business Machines Corporation | Secure processor-based control plane function virtualization in cloud systems |
US11169957B2 (en) * | 2019-03-31 | 2021-11-09 | Intel Corporation | Systems and methods for reconfigurable systolic arrays |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5481669A (en) * | 1992-11-13 | 1996-01-02 | The University Of North Carolina At Chapel Hill | Architecture and apparatus for image generation utilizing enhanced memory devices |
US5966528A (en) * | 1990-11-13 | 1999-10-12 | International Business Machines Corporation | SIMD/MIMD array processor with vector processing |
US6229553B1 (en) * | 1998-08-20 | 2001-05-08 | Apple Computer, Inc. | Deferred shading graphics pipeline processor |
Family Cites Families (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4598400A (en) | 1983-05-31 | 1986-07-01 | Thinking Machines Corporation | Method and apparatus for routing message packets |
US5151996A (en) | 1983-05-31 | 1992-09-29 | Thinking Machines Corporation | Multi-dimensional message transfer router |
US4720780A (en) | 1985-09-17 | 1988-01-19 | The Johns Hopkins University | Memory-linked wavefront array processor |
US4809202A (en) | 1985-12-27 | 1989-02-28 | Thinking Machines Corporation | Method and apparatus for simulating systems described by partial differential equations |
US4870568A (en) | 1986-06-25 | 1989-09-26 | Thinking Machines Corporation | Method for searching a database system including parallel processors |
CA1293819C (en) | 1986-08-29 | 1991-12-31 | Thinking Machines Corporation | Very large scale computer |
US4791641A (en) | 1986-09-15 | 1988-12-13 | Thinking Machines Corporation | Parallel processor error checking |
US5117420A (en) * | 1987-04-27 | 1992-05-26 | Thinking Machines Corporation | Method and apparatus for routing message packets |
US5093920A (en) | 1987-06-25 | 1992-03-03 | At&T Bell Laboratories | Programmable processing elements interconnected by a communication network including field operation unit for performing field operations |
US4885739A (en) * | 1987-11-13 | 1989-12-05 | Dsc Communications Corporation | Interprocessor switching network |
US4993028A (en) | 1988-09-07 | 1991-02-12 | Thinking Machines Corporation | Error detection and correction coding |
US4954988A (en) | 1988-10-28 | 1990-09-04 | Rockwell International Corporation | Memory device wherein a shadow register corresponds to each memory cell |
US5070446A (en) | 1988-11-13 | 1991-12-03 | Thinking Machines Corporation | Method of simulating a hexagonal array of computer processors and/or memories |
US6070003A (en) * | 1989-11-17 | 2000-05-30 | Texas Instruments Incorporated | System and method of memory access in apparatus having plural processors and plural memories |
US5191578A (en) * | 1990-06-14 | 1993-03-02 | Bell Communications Research, Inc. | Packet parallel interconnection network |
US5093801A (en) | 1990-07-06 | 1992-03-03 | Rockwell International Corporation | Arrayable modular FFT processor |
US5617538A (en) | 1991-07-02 | 1997-04-01 | Tm Patents, L.P. | Message transfer system and method for parallel computer with message transfers being scheduled by skew and roll functions to avoid bottlenecks |
FR2680026B1 (fr) | 1991-07-30 | 1996-12-20 | Commissariat Energie Atomique | Architecture de systeme en tableau de processeurs a structure parallele. |
CA2073516A1 (en) | 1991-11-27 | 1993-05-28 | Peter Michael Kogge | Dynamic multi-mode parallel processor array architecture computer system |
US5442797A (en) | 1991-12-04 | 1995-08-15 | Casavant; Thomas L. | Latency tolerant risc-based multiple processor with event driven locality managers resulting from variable tagging |
CA2100540A1 (en) * | 1992-10-19 | 1994-04-20 | Jonel George | System and method for performing resource reconfiguration in a computer system |
US5960211A (en) | 1995-12-15 | 1999-09-28 | Hughes Aircraft | Data formatting method and apparatus for a data processing array |
US5832291A (en) | 1995-12-15 | 1998-11-03 | Raytheon Company | Data processor with dynamic and selectable interconnections between processor array, external memory and I/O ports |
US5898827A (en) * | 1996-09-27 | 1999-04-27 | Hewlett-Packard Co. | Routing methods for a multinode SCI computer system |
KR100259276B1 (ko) * | 1997-01-27 | 2000-06-15 | 윤종용 | 대역폭확장이 가능한 상호연결망 |
US5974051A (en) | 1998-03-03 | 1999-10-26 | Cisco Technology, Inc. | System interprocessor communication using media independent interface-based channel |
US6314110B1 (en) * | 1998-03-06 | 2001-11-06 | Cisco Technology, Inc. | Method and apparatus for distributed bandwidth allocation for a bi-directional ring media with spatial and local reuse |
US6119215A (en) | 1998-06-29 | 2000-09-12 | Cisco Technology, Inc. | Synchronization and control system for an arrayed processing engine |
US6101599A (en) | 1998-06-29 | 2000-08-08 | Cisco Technology, Inc. | System for context switching between processing elements in a pipeline of processing elements |
US6195739B1 (en) * | 1998-06-29 | 2001-02-27 | Cisco Technology, Inc. | Method and apparatus for passing data among processor complex stages of a pipelined processing engine |
US6173386B1 (en) | 1998-12-14 | 2001-01-09 | Cisco Technology, Inc. | Parallel processor with debug capability |
US6938094B1 (en) * | 1999-09-17 | 2005-08-30 | Advanced Micro Devices, Inc. | Virtual channels and corresponding buffer allocations for deadlock-free computer system operation |
US6888843B2 (en) * | 1999-09-17 | 2005-05-03 | Advanced Micro Devices, Inc. | Response virtual channel for handling all responses |
JP4119582B2 (ja) * | 1999-09-28 | 2008-07-16 | 富士通株式会社 | 転送制御方法及び情報処理装置 |
US6680934B1 (en) * | 1999-12-02 | 2004-01-20 | Nortel Networks Limited | System, device and method for expediting control flow in a communication system |
US6668308B2 (en) | 2000-06-10 | 2003-12-23 | Hewlett-Packard Development Company, L.P. | Scalable architecture based on single-chip multiprocessing |
US7069337B2 (en) * | 2001-03-20 | 2006-06-27 | Mci, Inc. | Policy-based synchronization of per-class resources between routers in a data network |
-
2002
- 2002-05-30 US US10/158,768 patent/US7447872B2/en not_active Expired - Lifetime
-
2003
- 2003-05-27 AU AU2003234641A patent/AU2003234641B2/en not_active Ceased
- 2003-05-27 AT AT03729142T patent/ATE534955T1/de active
- 2003-05-27 EP EP03729142A patent/EP1508100B1/en not_active Expired - Lifetime
- 2003-05-27 CA CA2487355A patent/CA2487355C/en not_active Expired - Fee Related
- 2003-05-27 CN CNB038125234A patent/CN100354853C/zh not_active Expired - Fee Related
- 2003-05-27 WO PCT/US2003/016557 patent/WO2003102805A2/en not_active Application Discontinuation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5966528A (en) * | 1990-11-13 | 1999-10-12 | International Business Machines Corporation | SIMD/MIMD array processor with vector processing |
US5481669A (en) * | 1992-11-13 | 1996-01-02 | The University Of North Carolina At Chapel Hill | Architecture and apparatus for image generation utilizing enhanced memory devices |
US6229553B1 (en) * | 1998-08-20 | 2001-05-08 | Apple Computer, Inc. | Deferred shading graphics pipeline processor |
Also Published As
Publication number | Publication date |
---|---|
US7447872B2 (en) | 2008-11-04 |
AU2003234641A1 (en) | 2003-12-19 |
CA2487355A1 (en) | 2003-12-11 |
WO2003102805A3 (en) | 2004-08-26 |
EP1508100A2 (en) | 2005-02-23 |
CN1656470A (zh) | 2005-08-17 |
EP1508100B1 (en) | 2011-11-23 |
ATE534955T1 (de) | 2011-12-15 |
WO2003102805A2 (en) | 2003-12-11 |
AU2003234641B2 (en) | 2009-08-27 |
US20030225995A1 (en) | 2003-12-04 |
CA2487355C (en) | 2012-07-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100354853C (zh) | 用于芯片处理器间的控制平面通信的系统和方法 | |
US7225279B2 (en) | Data distributor in a computation unit forwarding network data to select components in respective communication method type | |
US6119196A (en) | System having multiple arbitrating levels for arbitrating access to a shared memory by network ports operating at different data rates | |
US6667920B2 (en) | Scratchpad memory | |
EP0993680B1 (en) | Method and apparatus in a packet routing switch for controlling access at different data rates to a shared memory | |
US6594713B1 (en) | Hub interface unit and application unit interfaces for expanded direct memory access processor | |
US7551564B2 (en) | Flow control method and apparatus for single packet arrival on a bidirectional ring interconnect | |
CN101989942B (zh) | 仲裁控制方法、通信方法、仲裁器和通信系统 | |
CN103946803A (zh) | 具有高效工作排队的处理器 | |
US20030033350A1 (en) | Method and apparatus for transmitting packets within a symmetric multiprocessor system | |
CN100401279C (zh) | 支持包处理的可配置的多端口多协议网络接口 | |
US7346722B2 (en) | Apparatus for use in a computer systems | |
US20040100900A1 (en) | Message transfer system | |
US6651083B1 (en) | Distributed service request system for providing fair arbitration using token passing scheme to resolve collisions | |
CN101184022B (zh) | 信用处理装置和流控制传输装置及其方法 | |
CN100461788C (zh) | 为网络处理器调度连接的方法与装置 | |
US20050050233A1 (en) | Parallel processing apparatus | |
Scott | Toward the design of large-scale, shared-memory multiprocessors | |
GB2341771A (en) | Address decoding | |
Mavroidis | The IRAM Network Interface | |
GB2341766A (en) | Bus architecture | |
GB2341765A (en) | Bus idle usage | |
GB2341772A (en) | Primary and secondary bus architecture | |
GB2341769A (en) | Data packet reordering | |
GB2341699A (en) | Inter-module data transfer |
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: 20071212 Termination date: 20210527 |
|
CF01 | Termination of patent right due to non-payment of annual fee |