CN104919442B - 具有改进的辅互连网络的多处理器*** - Google Patents
具有改进的辅互连网络的多处理器*** Download PDFInfo
- Publication number
- CN104919442B CN104919442B CN201380070450.1A CN201380070450A CN104919442B CN 104919442 B CN104919442 B CN 104919442B CN 201380070450 A CN201380070450 A CN 201380070450A CN 104919442 B CN104919442 B CN 104919442B
- Authority
- CN
- China
- Prior art keywords
- processor
- message
- interference networks
- control unit
- bus control
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/362—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17356—Indirect interconnection networks
- G06F15/17368—Indirect interconnection networks non hierarchical topologies
- G06F15/17381—Two dimensional, e.g. mesh, torus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7817—Specially adapted for signal processing, e.g. Harvard architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7871—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
- G06F15/7882—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS for self reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Multi Processors (AREA)
- Debugging And Monitoring (AREA)
Abstract
公开了多处理器***的实施例,该多处理器***可包括多个处理器,该多个处理器与多个数据存储路由器、多个总线接口单元、总线控制电路和处理器接口电路散布。数据存储路由器可被耦接在一起以形成主互连网络。总线接口单元和总线控制电路可以以菊花链方式耦接在一起以形成辅互连网络。每个总线接口单元可被配置为读取数据或指令、或向所述多个数据存储路由器中相应的一个数据存储路由器和相应的处理器写入数据或指令。与处理器接口电路耦接的总线控制电路可被配置为用作主网络和辅网络之间的双向桥。总线控制电路还可耦接到其它接口电路并对它们对辅网络的访问进行仲裁。
Description
技术领域
本发明涉及多处理器***,并且更具体地涉及具有多个处理器元件、存储器和主互连网络的多处理器***中的改进的辅互连网络。
背景技术
计算机和数字信号处理(DSP)***可包括多个处理元件(PE)、支持性存储器(SM)、数据互连网络(IN)、以及输入和输出(I/O)接口。在多个PE可用的情况下,***可支持并行算法以更快地完成任务或降低完成任务的能量。并行算法常常需要以很高的速率进出***以及穿过***在PE和SM之间来对数据进行流送。在这些***中,互连网络一般包括至少一个高带宽(高的每秒位吞吐量)主互连网络(PIN)。PIN被优化用于相对较大的消息的高的每秒位吞吐量,但不具有特别低的延迟(点到点的递送延时)。
包括PIN的至少一个现有技术的多处理器***还包括附加低带宽辅互连网络(SIN)。被实现为“串行总线”(SB)的高延迟类型SIN先前已被实现在由Coherent Logix公司(本申请的受让人)制造的、被称为HyperX hx3100A的多处理器IC芯片上。图1示出了在HyperX hx3100A上实现的现有技术的串行总线(SB),其还被称为辅互连网络(SIN)。图1所示的现有技术SIN被设计为与PE、SM、PIN、芯片I/O接口、电网和时钟网络一起被嵌入多处理器IC芯片中。如所示出的,该串行总线架构在穿过该芯片曲折反复的长环路中将所有PE和SM互连。这允许SIN用最小的面积和功率消耗来支持有保障的消息递送(GMD)。因此,SIN是首先旨在为应用和***软件的程序员提供调试支持的片上串行总线(SB)。此外,SB能够在***启动期间被用于加载存储器和执行通电***测试。此外,SB可在运行时被用于执行各种***管理功能,诸如针对个体PE和I/O端口的时钟频率的控制、在PIN中设置安全性屏障以及PE消息传递。最后,SB还可被用于IC测试和评估。
图1所示的现有技术SIN具有组织为本地接口单元之间的链路的单向菊花链的串行总线(SB)架构,该链的两端均被耦接到串行总线控制器(SBC)单元。如图1所示,典型本地接口单元被称为串行总线从属(SBS)接口单元;之所以这样叫是因为其不能发布命令(如下文所更详细描述的)。每个SBS接口单元被耦接到一个PE、一个SM单元、一个SB输入链路和一个SB输出链路。每个SBS单元被分配唯一的地址值,使得个体消息可被发送给特定的SBS单元。每个SBS接口单元(SBS-IU)包含寄存器和逻辑,以将PE和SM的占主导地位的字并行格式之间的消息格式转换为SB链路的占主导地位的位串行格式。接口单元之间的每条链路是2条并行线,一条线运送数据信号(SBDATA),另一条线运送时钟信号(SBCLK),以在接收器输入触发器处捕获数据。由SBCLK上的多个脉冲来表示存在消息,一个脉冲用于SBDATA上的每个数据位;并且由SBCLK上的恒定值来表示不存在消息。
在一些实施例中,SBS-IU可配置有缓冲器以接收固定长度的SB消息。首先(在芯片重置时),SBS-IU可进入中继器模式,在该模式中,SBS-IU可接收固定长度的SB消息并将消息头中的地址与其自身的唯一地址进行比较。如果不存在地址匹配,则SBS-IU可将消息传递给该链中的下一个SBS-IU。在地址匹配的情况下,SBS-IU可进入通道模式,在该模式中,随后的消息被认为是可能的命令,直到它接收到返回中继器模式的命令为止。SBS-IU可被配置为对来自适当编码的SB消息的一组命令进行解码。如果SB消息不是针对该组命令中的一个命令适当编码的,则SBS-IU忽略该SB消息。在各个实施例中,命令包括:读取和写入SBS-IU配置寄存器、(重置DMR、重置PE、设置PE的时钟频率、重置I/O电路(如果存在的话)以及设置PIN路由器安全性屏障)、在特定地址或地址块处读取和写入SM、读取和写入在某些情况下包括消息寄存器的PE寄存器、设置PE断点、强制PE中断、单步执行PE、唤醒PE(使运行)、以及启用/禁用PE参与全局中断信令。对于读取命令,SBS-IU可生成包含读出数据的返回SB消息,并将其发送给链中的下一个SBS-IU。返回SB消息可穿过链中的其它SBS-IU(因为它们处于中继器模式);并且可被SBC转发给建立通道的控制器。
如图1所示,串行总线控制器(SBC)被耦接到SB的两端、调试访问端口(DAP)控制器和启动(Boot)控制器。SBC从DAP和启动控制器接收SB消息,并将返回消息提供回给DAP和启动控制器。SBC的主要目的是防止多于一个控制器同时获得SB访问(这可能产生命令的随机混合以及错误的结果)。如果SB是静止的,则任何一个控制器可发起到SBS-IU的通道。如果通道已经存在,则SBC控制器将忽略任何新的试图发起通道的尝试,直到当前的通道终止为止。如果两个控制器同时试图发起通道,则SBC将作出仲裁使得一个获得访问而另一个SBC被忽略。
如图1所示,为了允许PE 0,0向SBC发送消息并从SBC接收结果消息,专用于DMR 0,0的一些寄存器被耦接到启动控制器。DMR 0,0中的这些专用寄存器不能被PIN访问,也不能被除了PE 0,0之外的任何PE访问。当DMR 0,0中的特定寄存器被PE 0,0写入时,消息被传送给SBC。来自SBC的返回SB消息数据可被复制到DMR 0,0中的特定寄存器。利用SB的PE 0,0上的软件程序可能需要包括适当的延时,以等待SB消息传输的相对长的延迟。
需要改进的辅互连网络(SIN)架构以用于多处理器***。
发明内容
公开了多处理器***的各种实施例,多处理器***包括多个处理器、多个存储器和多个路由器。在一个实施例中,每个处理器具有关联的存储器和路由器,并且所述多个处理器、存储器和路由器以散布方式耦接在一起。所述多个路由器被耦接在一起以形成主互连网络。多处理器***还包括多个接口单元,其中每个相应的处理器/路由器组合具有关联的接口单元。所述多个接口单元和至少一个控制器被耦接在一起以形成辅互连网络(SIN)。所述多个接口单元可以以菊花链的方式或以多个环路的方式耦接在一起,以形成辅互连网络。所述至少一个控制器被耦接到SIN外的其它控制器和消息源,并且被配置为从所述源接收消息以访问SIN、将消息返回到所述源并且对来自所述源的请求进行仲裁以防止SIN控制错误。接口单元的多个链可被耦接到SIN控制器,并且接口单元的每个链可被配置为支持单向或双向的消息流。
指定处理器可被配置为耦接到SIN控制器(在本文中还被称为“总线控制器”)。指定处理器具有关联的指定路由器和关联的至少一个指定接口单元,该指定接口单元被耦接到总线控制器。总线控制器被配置为向所述至少一个指定接口单元发送数据和从所述至少一个指定接口单元接收数据。在一个实施例中,所述至少一个指定接口单元包括两个不同的指定接口单元,每个指定接口单元与相应的处理器关联,其中一个指定接口单元被配置为向总线控制器发送数据,而另一个指定接口单元被配置为从控制器读取数据。
总线控制器可被配置为在访问所述至少一个指定接口单元的请求之间进行仲裁。换句话说,总线控制器可被配置为从不同逻辑块接收访问指定接口单元的请求,并选择这些请求中的一个提供给指定接口单元。可请求访问指定接口单元的逻辑块可包括处理器接口块和其它块,诸如主机接口、启动控制器和调试访问端口。处理器接口块被耦接到总线控制器,并且还被耦接到与所述至少一个指定接口单元关联的指定路由器。处理器接口单元被配置为允许多处理器***中的多个处理器中的任何一个处理器或者可能是所有处理器使用主互连网络通过指定路由器来访问辅互连网络。处理器接口块可包括用于缓冲辅互连网络消息的一个或多个缓冲寄存器和防止消息丢失或重复的流控制电路。一个或多个缓冲寄存器和流控制电路被用于使任何处理器能够使用主互连网络来访问辅互连网络。
例如,指定路由器可接收产生于主互连网络的消息。处理器接口块可从指定路由器接收这些消息,并将这些消息提供给总线控制器以提供到辅互连网络上。此外,处理器接口块可通过总线控制器从辅互连网络接收消息,并将这些消息提供给指定路由器以提供到主互连网络上。
在一个实施例中,多处理器***中的任何相应的处理器可被配置为:1)在主互连网络上从相应处理器的邻近路由器到指定路由器建立第一通信路径,以创建到辅互连网络的前向路径;以及2)在主互连网络上从指定路由器到相应处理器的邻近路由器建立第二通信路径,以创建从辅互连网络出发的反向路径,以用于与辅互连网络的全双工通信。
因此,任何相应的处理器可操作为将辅互连网络消息发布到主互连网络上以到达指定路由器,以供通过处理器接口块和总线控制器来提供给辅互连网络。此外,任何这样相应的处理器被配置为从辅互连网络接收结果和/或消息状态信息,该结果和/或消息状态信息通过总线控制器和处理器接口块提供到指定路由器。
总线控制器可被配置为从两个或更多处理器中的每一个接收命令并将接收到的命令进行比较,然后基于比较采取动作。例如,如果命令被确定为匹配,则总线控制器可被配置为将命令中的一个发送给辅互连网络。如果命令被确定为不匹配,则总线控制器可被配置为向可编程错误处理机发送消息。在一个实施例中,指定处理器具有到总线控制器的分离的通信路径,并且总线控制器被配置为从指定处理器和另一处理器接收命令。总线控制器可被配置为将从指定处理器和另一处理器接收的命令进行比较并执行上述动作。
在一些实施例中,多芯片***可包括多个上述多处理器***,这些多处理器***被实现在不同的相应芯片上并且通过其各自的主互连网络耦接在一起。在该多芯片***中,一个芯片上的任何处理器可以能够访问多芯片***中的任何其它芯片上的辅互连网络。
用于在多处理器***中通信的方法可包括以下步骤。首先可以在主互连网络上从第一处理器到与指定处理器关联的指定路由器建立通信路径。指定路由器可被连接到处理器接口块。然后第一处理器可通过主互连网络向指定路由器发送辅互连网络消息。然后指定路由器可向处理器接口块提供辅互连网络消息,处理器接口块进而向总线控制器提供所述消息。然后总线控制器将辅互连网络消息提供到辅互连网络上。该方法可用于使得多处理器***中的任何处理器能够在辅互连网络上通信。
该方法还可提供从辅互连网络回到第一处理器的通信。这可包括从指定路由器到第一处理器的反向通信路径的建立,其中,反向通信路径可用于将响应信息从辅互连网络提供回第一处理器。通信方法可包括总线控制器从辅互连网络接收响应信息并将响应信息提供给处理器接口块。响应信息可在处理器接口块中缓冲。然后处理器接口块可将响应信息提供给指定路由器,然后指定路由器通过反向通信路径将响应信息提供给第一处理器。
附图说明
图1是多处理器***的现有技术的辅互连串行总线的框图。
图2是示出了包括主互连网络的多处理器***的实施例的框图。
图3是示出了多处理器***的辅互连网络的框图。
图4是路由器及其关联的处理器、存储器和接口单元的实施例的框图。
图5是处理器通过主互连网络通信以访问辅互连网络的方法的一个实施例的流程图。
图6是来自辅互连网络的消息被提供回主互连网络以提供给处理器的方法的一个实施例的流程图。
图7是示出了多芯片***实施例的框图,通过多芯片***,芯片之间的主互连网络路径被用于访问远程芯片上的辅互连网络。
虽然本公开可以有各种修改和替换形式,但是其具体实施例在附图中以示例的方式示出,并且在本文中将被详细描述。但是,应该理解,附图和其详细描述不意图将本公开限制于所示的具体形式,相反,意图是涵盖落入由所附权利要求限定的本公开的精神和范围内的所有修改、等同和替换。本文使用的标题只为组织目的,并且不意味着被用于限制说明书的范围。如在本申请中所使用的,词语“可以”被用于允许意义(即,意味着可能)而不是强制意义(即,意味着必须)。类似地,词语“包括”、“包含”意为包括而非限制。
各种单元、电路或其它部件可被描述为“被配置为”执行一个或多个任务。在这种情况下,“被配置为”是对结构的广义记载,一般意为“具有电路”在操作期间执行所述一个或多个任务。因此,即使在单元/电路/部件当前未开启时,所述单元/电路/部件也可被配置为执行任务。一般地,形成与“被配置为”对应的结构的电路可包括硬件电路。类似地,为方便描述,各种单元/电路/部件可被描述为执行一个或多个任务。该描述应被解释为包括短语“被配置为”。记载被配置为执行一个或多个任务的单元/电路/部件明确意为不援引美国法典第35卷第112条第六款关于单元/电路/部件的解释。更一般地,对任何元件的记载明确意为不援引美国法典第35卷第112条第六款关于元件的解释,除非语言“用于……的装置”或“用于……的步骤”被特别记载。
具体实施方式
通过引用合并
发明人为Michael B.Doerr、William H.Hallidy、David A.Gibson和CraigM.Chase,名称为“Processing System With Interspersed Stall PropagatingProcessors And Communication Elements”的美国专利第7,415,594号的全部内容被通过引用结合于此,如同完全且全部在本文中阐述。
于2011年10月4日递交的、发明人为Michael B.Doerr、Carl S.Dobbs、MichaelB.Solka、Michael R.Trocino和David A.Gibson,名称为“Disabling Communication in aMultiprocessor System'”的美国专利申请序列号13/274,138的全部内容被通过引用结合于此,如同完全且全部在本文中阐述。
术语
硬件配置程序——由可被编译为二进制映像的源文本组成的程序,该二进制映像可被用于编程或配置硬件,例如诸如集成电路。
计算机***——各种类型的计算或处理***(包括个人计算机***(PC)、大型计算机***、工作站、网络器具、互联网器具、个人数字助理(PDA)、网格计算***或其它设备或设备的组合)中的任何一种。一般来说,术语“计算机***”可被广泛地定义为包括具有执行来自存储器介质的指令的至少一个处理器的任何设备(或设备的组合)。
自动——指的是动作或操作在没有直接指定或执行该动作或操作的用户输入的情况下,由计算机***(例如,由计算机***执行的软件)或设备(例如,电路、可编程硬件元件、ASIC等)执行。因此,术语“自动地”与操作由用户手动执行或指定相反,在用户手动执行或指定操作的情况下,用户提供输入以直接执行该操作。自动过程可由用户提供的输入启动,但是被“自动”执行的后续动作不由用户指定,即,不是“手动”执行的,在“手动”执行的情况下,用户指定要执行的每个动作。例如,用户通过选择每个字段并提供指定信息的输入(例如,通过键入信息、选择复选框、单选等)来填写电子表格是手动填写表铬,即使计算机***必须响应于用户动作而更新表格。表格可由计算机***自动填写,其中,计算机***(例如,在计算机***上执行的软件)分析表格的字段,并且在没有任何指定字段的答案的用户输入的情况下填写表格。如上所述,用户可调用表格的自动填写,但不参与到表格的实际填写中(例如,用户不手动指定字段的答案,而是这些字段的答案被自动完成)。本说明书提供了响应于用户已经采取的动作而自动执行的操作的各种示例。
多处理器***上的互连网络
图2示出了包括多个处理器(还被称为处理元件(PE))、数据存储路由器(DMR)(还被称为支持性存储器(SM))、主互连网络(PIN)、辅互连网络(SIN)(未示出)以及输入和输出(I/O)接口的多处理器***。如图所示,图中的正方形表示处理器(或处理元件),而圆形表示数据存储路由器(DMR)。数据存储路由器包括路由器和存储器,其中,该存储器可被称为“支持性存储器”(SM)。路由器及其关联的存储器可被视为分离的独立单元,或者可被视为组合的数据存储路由器。每个处理器(PE)被连接到四个邻近DMR,但是为了便于说明,该连接未被示于图中。DMR之间的连接(被称为DMR到DMR的链路)形成了主互连网络(PIN),该PIN允许在多处理器***中在各个处理器之间进行通信。如图所示,多个处理器、多个存储器和多个路由器以散布方式被耦接在一起。虽然未被示于图2中(但是被示于图3中),但是多处理器***包括多个接口单元,其中每个接口单元被耦接到相应的处理器(PE)和相应的路由器(DMR)。多个接口单元被耦接在一起以形成辅互连网络(SIN)。如下文进一步探讨的,多处理器***包括改进的架构,该架构允许任何处理器(至少是处理器的复数子集)与SIN通信。
在存在多个处理器(PE)的情况下,多处理器***可支持并行算法以更快地完成任务或减少用于完成任务的能量。并行算法通常需要以很高的速率穿过***在PE和SM之间以及进出***来对数据进行流送。主互连网络(PIN)优选是对相对较大的消息的高的每秒位吞吐量而不是特别低的延迟(点到点的递送延时)进行了优化的高带宽(高的每秒位吞吐量)的互连网络。在轻流量负载的条件下,多数消息将没有障碍地顺利通过PIN。在重流量负载的条件下,消息可能被网络上的其它消息阻塞。最后PIN硬件可在流量逐渐消失并且阻塞流量离开之后递送被阻塞的消息,但同时PIN可向发送方反映忙碌信号。
图2还示出了多处理器***中的示例性平面网状PIN。使用当前硅晶体管IC制造技术,100或更多PE可在单个IC芯片上集成并互连。具有数千个PE的***可用通过高级的电路板和其它基板互连的很多这些芯片来制造。
虽然并行算法可被设计为使消息阻塞最小化,但是它们可能不能总是消除消息阻塞,尤其是在算法正被调整到硬件的应用软件的开发中。一般地,需要两种类型的一个或多个附加低带宽辅互连网络(SIN)。一种类型以比PIN低的延迟支持紧急通信,另一种类型用有保障的消息递送(GMD)但更高的延迟支持配置和调试功能。在一些实施例中,辅互连网络(SIN)可以是串行总线,因此在本文中可被称为“串行总线”(SB)。
转到图3,示出了辅互连网络(SIN)的实施例。SIN可与多个处理器(PE)、支持性存储器(SM)、路由器、主互连网络(PIN)、芯片I/O接口、电网和时钟网络一起被嵌入多处理器***IC芯片中。更具体地,如图3所示,多处理器***包括图3中用圆形表示的多个处理器(PE)和用矩形表示的数据存储路由器(DMR)。同样如图所示,多处理器***包括多个接口单元,其中每个接口单元被耦接到相应的处理器和相应的路由器。接口单元被表示为位于相应的处理器(PE)和相应的DMR之间的小正方形。每个接口单元可被分配唯一的地址值,使得个体消息可被发送给特定的接口单元。如图所示,多个接口单元被耦接到一起以形成辅互连网络。更具体地,多个接口单元以菊花链的方式耦接在一起以形成辅互连网络(SIN)。
在一些实施例中,SIN可具有串行总线架构,以在穿过芯片曲折反复的长环路中将所有PE和SM互连。因此,本文中所表示的SIN的一个示例是片上串行总线(SB)。SIN可以以最小的面积和功率消耗进行操作来支持有保障的消息递送(GMD)。SIN可为应用和***软件的程序员提供调试支持。此外,SIN可在***启动期间及任何时候被用于加载存储器和执行通电***测试。此外,SIN可在运行时期间被用于执行各种***管理功能,诸如时钟控制管理和PE消息传递。最后,SIN还可被用于IC测试和评估。
在这里所述的实施例中,SIN具有串行总线(SB)架构,该SB架构被组织为本地接口单元之间的链路的单向菊花链,该单向菊花链的两端都被耦接到总线控制器(还被称为串行总线控制器(SBC)),如图3所示。在图3所示的实施例中,接口单元被标记为图3中的串行总线从属(SBS)接口。每个接口单元(SBS单元)耦接到一个PE、一个SM单元、一个SB输入链路和一个SB输出链路。如上所述,每个接口单元(SBS单元)可被分配唯一的地址值,使得个体消息可被发送到特定的SBS单元。每个接口单元(SBS-IU)包含寄存器和逻辑,以将PE和SM的占主导地位的字并行格式之间的消息格式转换为SB链路的占主导地位的位串行格式。
SB可支持多种命令。例如,在一些实施例中,SB命令可支持并行操作,诸如例如重置、归零、并行加载(指令和/或数据)、唤醒PE、强制中断点、单步执行等。在其它实施例中,SB可支持允许PE流水线状态、指令指针的读出以及篡改检测重置的命令。
接口单元之间的每条链路可以是N条串行导线,其中小的N节约功率,大的N递送更多的每秒位吞吐量。因为吞吐量通常不是SIN的问题,因此可使用两条导线(N=2)的链路。一条导线可运送数据信号(SBDATA),而另一条导线运送时钟信号(SBCLK),以在接收器输入触发器处捕获数据。SBCLK上的方波可表示存在消息;SBCLK上的恒定值可表示不存在消息。
在优选实施例中,一个处理器是指定处理器,即,被预先配置为耦接到总线控制器(在图3中被称为串行总线控制器)。指定处理器还具有关联的“指定路由器”和“指定接口单元”。如图所示,指定路由器被连接到处理器接口单元。因此,多处理器***中的任何处理器(PE)能够与指定路由器通信以提供访问SIN的请求。因此,例如,如果处理器(除指定处理器之外)想要在SIN上通信,则该处理器向指定路由器提供通信请求。然后,指定路由器可将该请求转发给处理器接口块。然后,处理器接口块可将该请求转发给总线控制器。
总线控制器被耦接到至少一个指定接口单元,并且被配置为向所述至少一个指定接口单元发送数据和从所述至少一个指定接口单元接收数据。指定接口单元形成了到SIN的“进入点”或“访问点”。因此,总线控制器被配置为将在处理器接口块处接收的消息传递到指定接口单元,从而传递到SIN上。在一个实施例中,同一指定接口单元被配置为在SIN和总线控制器之间发送和接收数据。在另一实施例中,第一指定接口单元被配置为从总线控制器接收数据,并将该数据提供到SIN上,并且第二指定接口单元被配置为从SIN接收数据并将该数据提供给总线控制器。
总线控制器被配置为对访问请求之间的任何冲突进行仲裁,“每次一个”地准许请求的指定接口单元中的一个访问SIN。多个不同的逻辑块可被耦接到总线控制器,并向总线控制器提供请求以访问SIN。这些逻辑块可包括启动控制器、调试访问端口(DAP)控制器、外部主机接口和处理器接口块。在一些实施例中,总线控制器使用的仲裁方案和优先级可以是固定的,而在其它实施例中,仲裁方案和优先级可受程序控制。
如上所述,处理器接口块被耦接到总线控制器,并且还被耦接到与所述至少一个指定接口单元关联的指定路由器。处理器接口块被配置为允许多处理器***中的多个处理器中的任何一个使用主互连网络通过指定路由器通信来访问辅互连网络(SIN)。
每个接口单元(SBS-IU)可包括串行输入寄存器、串行输出寄存器和缓冲它的其它端口的附加寄存器、以及在端口和串行总线之间转换消息格式的一个或多个状态机。当在SBS-IU处接收SB命令时,可针对初始化命令测试该命令。如果初始化命令不存在,则SBS-IU可能停留在旁路模式。然而,如果初始化命令存在,则SBS-IU可将与该命令关联的地址与硬连线地址进行对比。当与该命令关联的地址匹配SBS-IU的硬连线地址时,SBS-IU将所有后续的命令解释为指向其自身,直到接收到结束命令(此时,SBS-IU回到旁路模式)为止。
在各个实施例中,SB收发器与DMR在同一核心主时钟上运行,以防止当执行到DMR存储器或寄存器的访问时的定时问题。然而,在一些实施例中,PE可被允许以较慢的时钟运行,从而可能导致错误地封锁在SBC-IU和PE之间移动的数据。在这种情况下,在任何数据通过SBS-IU传送期间,PE可被临时切换到主时钟。
SIN上的通信可使用具有固定位长度的短消息通过采用具有并行输入和输出的移位寄存器来完成。具有M位的固定长度的消息容易被捕获到具有相同长度的移位寄存器中或从具有相同长度的移位寄存器发送,但是可使用更长的寄存器,也可使用总和为M位或更多的更短的寄存器的组合。发送器可具有输出被耦接到SBDATA的输出移位寄存器和被耦接到SBCLK的移位时钟。发送器并行加载其输出移位寄存器,然后打开移位时钟以将消息发送出去,并且在M位之后停止。接收器可具有其数据输入被耦接到SBDATA的输入移位寄存器和被耦接到SBCLK的输入时钟。当M位已到达后,输入移位寄存器可被并行读出,并且该数据可被针对命令代码、地址、块数据大小和数据来解码。使用固定长度消息和移位寄存器只是示例,并且可替代使用其它消息格式。
如果在特定接口单元(SBS-IU)处接收到的消息不包含以该接口单元为地址的命令,则该接口单元(SBS-IU)可忽略该消息并将该消息转发到链中的下一接口单元(SBS-IU)。如果命令以该SBS-IU为地址或者是广播命令,则该SBS-IU可简单地做所指示的动作。如果命令需要响应消息,则该SBS-IU可生成消息并将其发送给菊花链中的下一SBS-IU;其中,当该消息穿过很多SBS-IU后,其将回到串行总线控制器(SBC)处,以供转发给等待它的控制器。源自SBS-IU的消息可以是与来自SBC的消息相同的固定长度消息格式,不同点在于目的地址是SBC地址。
如图3所示并且如上所述,总线控制器(SBC)被耦接到启动控制器(BC)、调试访问端口(DAP)控制器、外部主机接口(EHI)和处理器接口块(内部PE接口)。此外,指定处理器具有通过指定DMR到启动控制器然后回到总线控制器(SBC)中的访问路径。这些主控制器(启动控制器、调试访问端口控制器、外部主机接口和处理器接口块)中的每一个可请求访问SIN。每个主控制器向总线控制器(SBC)提供适当格式的消息,SBC可检测也可不检测消息格式错误。
如上所述,图3所示的SIN总线拓扑包括访问总线控制器的路径。该路径从指定DMR(DMR 0,0)的南端口到处理器接口块。该路径供任何内部PE使用。处理器接口块或内部PE接口(IPEI)的目的是为SIN消息提供缓冲寄存器,从而允许***中的任何PE使用PIN来通过指定DMR(DMR 0,0)的南端口访问SIN。为了使任何处理器在SIN上通信,对象PE(subject PE)从其邻近DMR中的一个到指定DMR(DMR 0,0)以通常的方式在PIN上建立通信路径;然后提供返回路径信息用于创建全双工通信的反向路径。当建立了前向和反向路径后,对象PE可发布SIN命令并接收从总线控制器返回的结果和消息状态信息。
DMR的一个实施例和其关联的处理器、存储器和接口单元被示于图4中。在所示实施例中,DMR 401包括存储器402和路由器403。存储器402被耦接到路由器403,路由器403进而被耦接到PE404和串行总线从属(SBS)405。
路由器403可被耦接到邻近DMR和邻近PE。此外,路由器403可被耦接到存储器402和SBS 405。在一些实施例中,路由器403可包括纵横开关,其可被配置为选择性地将接收到的数据分组发送给所耦接的设备中的一个,诸如例如PE 404。在其它实施例中,路由器403可被配置为在PIN的多个层之间发送和接收数据分组。
存储器402可根据各种设计风格中的一种来设计。在一些实施例中,存储器402可包括多个静态随机存取存储器(SRAM)单元或任何其它适当的存储电路。例如,存储器402可包括被安排为登记文件的锁存器或触发器电路。
在一些实施例中,SBS 405可通过专用端口耦接到路由器403和PE 404。此外,SBS405还可被耦接到其它SBS单元,以形成上述菊花链连接。在各个实施例中,SBS 405可包括可用来缓冲串行总线链路上的通信的串行输入寄存器和串行输出寄存器。还可包括附加寄存器以缓冲其它端口。在一些实施例中,SBS 405可包括一个或多个时序逻辑电路或状态机。这样的电路可被配置为在各个端口和串行链路之间转换消息格式。在各个实施例中,SBS 405可被合并到DMR401中。在其它实施例中,SBS 405可以是分离的功能块。
在一些实施例中,配置寄存器可位于SBS(诸如例如图4所示的SBS 405)中。在各个实施例中,可通过使用串行总线命令来读取或写入配置寄存器。配置寄存器内的个***可被置位或清零,以出于安全目的来控制对耦接到SBS 405的宏单元(诸如例如PE、DMR,以及芯片I/O端口逻辑(NR)和/或DDR外部存储控制器(如果存在的话))的访问,以及为了节省动态功率而控制宏单元时钟速率。可使用配置寄存器内的附加位,通过控制在电源和给定的宏单元之间串联的晶体管或通过激活对给定宏单元内的晶体管的衬底偏置从而抑制通过晶体管的泄露来减少泄漏功率。在各个实施例中,配置寄存器可包括用于控制超出基本DMR和PE的附加宏单元的附加位。例如,额外的宏单元可以是关联的DMR内的路由电路的附加层。
在各个实施例中,SBS配置寄存器可以是21位的长度,并且低20位可被用于配置本地宏单元以用于安全性和功率节省。第21位可以是锁定位,其可被用于防止进一步的改变,从而保护配置直到下一次芯片范围的重置为止。
在一些实施例中,低6位可选择性地控制本地宏单元(PE、DMR,还有芯片I/O端口逻辑(NR)和/或DDR外部存储控制器(如果存在的话))的时钟使能和重置。较高位可用于出于安全目的而选择性地禁用本地通信端口。在一些实施例中,第6位和16-19位可被用于控制对添加的第二路由器(B层路由器)的访问。
诸如本文所述的那些寄存器的寄存器可以是存储电路的具体实施例。在一些实施例中,寄存器可包括一个或多个锁存器、触发电路或其它适当的存储电路,每一个被配置为存储单个数据位。在一些实施例中,寄存器可响应于时钟沿或其它定时信号存储数据。
注意,图4所示的实施例只是示例。在其它实施例中,可以使用和考虑不同的功能块以及功能块的不同配置。
转到图5,示出了处理器通过主互连网络初始化通信以访问辅互连网络的方法的实施例的流程图。共同参考图3和图5所示的流程图,该方法开始于方框501。然后主互连网络上从处理器到指定路由器的通信路径可被建立(方框502)。在一些实施例中,图3所示的指定路由器(例如,DMR 0,0)可被耦接到处理器接口块,诸如例如图3所示的内部PE接口302。在一些实施例中,指定路由器可被耦接到指定PE,诸如例如图3所示的PE 0,0。
在PIN上建立了通信路径的情况下,处理器可向指定路由器发送一个或多个辅互连网络(SIN)消息(方框503)。在一些实施例中,SIN消息可根据PIN上采用的通信协议来格式化。例如,SIN消息可被划分为一系列的数据字,其中每个数据字作为流控制单元(FLIT)在PIN上进行位并行发送。在各个实施例中,SIN消息可以分组或一系列分组进行发送,所述分组除了包括包含所述一个或多个SIN消息的数据有效载荷外,还可包括控制或路由信息。
到达指定路由器(例如,图3的DMR 0,0)处的FLIT和分组可在流控制下转发到处理器接口块(图3的302)并在寄存器中缓冲。然后,控制和路由信息可从包含所述一个或多个SIN消息的数据有效载荷分离(方框504)。在一些实施例中,处理器接口块可使用来自分组头的控制和路由信息,通过处理器接口块到指定路由器的反向耦接在PIN中建立到一个或多个个体DMR或PE的一个或多个返回路径。
一旦足够重建第一SIN消息的数据到达处理器接口块的缓冲器中,则第一SIN消息可以以位串行方式被发送到SIN总线控制器(方框503)。然后,第一SIN消息可被用于向SIN控制器询问其是否已经在另一控制器的使用中。如果SIN控制器已经在使用中,则处理器接口块可使用流控制信令来停止从所耦接的DMR和PIN一路返回到发送PE的FLIT的传送。如果SIN控制器未在使用中,则包含第二SIN消息的FLIT可被接受到处理器接口块的缓冲器中。在一些实施例中,接受和停止的交替可被无限使用。在各个实施例中,发送PE可另外***其自身的延时并且使用这些间隔来做其它工作。
当接收到足够重建第二SIN消息的FLIT时,处理器接口块可随后以位串行方式向SIN总线控制器提供第二SIN消息(方框505)。第二SIN消息可被SIN控制器用来初始化到用其唯一地址标识的特定SBS-IU的SIN通道(方框506)。
在一些实施例中,SIN总线控制器(诸如例如图3所示的串行总线控制器301)可被耦接到启动控制器、调试访问端口(DAP)、外部主机接口和内部处理器接口,它们的示例被示于图3中。然后,SIN总线控制器可在来自上述块的各个请求之间进行仲裁,以进行选择并将辅互连网络消息发送到辅互连网络上(方框506)。一旦在SIN上初始化通道的SIN消息到达预期的SBS-IU,则该方法可在方框507结束。在一些实施例中,SIN控制器的第三SIN消息请求可被用于确认预期的通道已被初始化。
在一些实施例中,总线控制器可在命令被转发到辅互连网络之前对命令进行验证。可通过将由两个不同的PE发送的两个相同的命令进行比较来执行该验证。在一些实施例中,PE中的一个可以是指定PE或主PE,诸如例如图3所示的PE 0,0。所述两个命令的定时可由软件控制。在一些实施例中,信号传递机制可被用于确保来自两个不同端口的写入不冲突。
一旦所述两个命令被存储在总线控制器中,则所述命令可被比较。当所述命令匹配时,所述命令被提供到辅互连网络上。在所述命令不匹配的情况下,没有命令被提供到辅互连网络上,并且可以被发送给可编程错误处理单元。在各个实施例中,可编程错误处理单元的功能可包括但不限于报告篡改事件、禁用I/O电路、“归零”存储器、重置芯片、关闭/打开时钟或电源、或者烧断保险丝以持久禁用芯片的一个或多个特征的能力。
虽然图5所示的方法的操作被示为按串行方式执行,但是在其它实施例中,一个或多个操作可并行执行。此外,在上述方法的实施例中,单个辅互连网络消息通过PIN从给定PE发送到处理器接口块,然后通过总线控制器发送到辅互连网络上。然而,需要注意的是消息可源自包括在多处理器阵列中的任何PE。
图6示出了来自辅互连网络的消息被提供回主互连网络以提供给处理器的方法的实施例。共同参考图3和图6所示的流程图,该方法开始于方框601。然后,可建立从指定路由器(例如,图3的DMR 0,0)到处理器的通信路径(方框602)。在一些实施例中,所述处理器可以是产生辅互连网络消息的处理器,诸如以上关于图5所述的处理器。
一旦反向通信路径已被建立,则总线控制器(诸如例如图3所示的串行总线控制器301)可从辅互连网络接收响应(方框603)。然后,所接收的响应可从总线控制器发送到处理器接口块(方框604)。在一些实施例中,处理器接口块(诸如例如图3所示的内部PE接口302)可包括一个或多个缓冲器,每个缓冲器被配置为存储通过总线控制器从辅互连网络接收的接收响应。
一旦处理器接口块已经接收到来自总线控制器的响应,则处理器接口块可将该响应转发给指定路由器,诸如例如图3所示的DMR0,0(方框605)。然后,指定路由器可发起将该响应传送到目标处理器(方框606)。在一些实施例中,该响应在到达目的地处理器之前可沿所建立的通信路径通过的一个或多个路由器。随着响应到达目的地处理器,该方法可在方框607结束。
注意图6所示的方法只是示例。在其它实施例中,可使用不同的操作和操作的不同顺序。
在一些实施例中,串行总线不超出一个芯片;在多芯片***中也如此,若干DAP端口可被复用到一起,并且写入软件驱动来操作它们。基于多处理器芯片和程序员的PC之间的通信链,这可能乏味且慢。
转到图7,示出了多芯片***的实施例,该多芯片***可提供包括在该***中的芯片之间的较快通信。在所示实施例中,芯片701耦接到芯片702至704。在这样的多芯片***中,一个芯片上的PE可通过PIN、目标芯片DMR 0,0和内部PE接口(IPEI)来访问另一芯片上的SBC。
在图7所示的实施例中,芯片0的PE 0,0可访问其它三个芯片的SBC。另外的芯片的SBC可被访问直到来自PE的退出路径被填满,然后额外的PE可被使用。PIN芯片间耦接不像真实串行总线端口和芯片之间的链路那样在导线方面是高效的,即,PIN端口可能采用比串行总线端口多6至17倍的并行导线,但是PIN端口可对于其它目的在时间上被共享。
虽然在图7所示的多芯片***中示出了四个芯片,但是在其它实施例中,可使用和考虑不同数量的芯片以及芯片的不同配置。
一旦以上公开被完全领会,则很多变化和修改对本领域技术人员而言将是清楚的。以下权利要求要被解释为包括所有这些改变和修改。
Claims (30)
1.一种多处理器***,包括:
多个处理器,每个处理器包括多个处理器端口;
多个存储器;
多个路由器,其中所述多个路由器形成主互连网络;
其中,所述多个处理器、所述多个存储器和所述多个路由器以散布方式被耦接在一起;
多个接口单元,其中每个接口单元被耦接到相应的处理器和相应的路由器;
其中,所述多个接口单元被耦接到一起以形成辅互连网络;
总线控制器,被耦接到至少一个指定接口单元,其中所述总线控制器被配置为向所述至少一个指定接口单元发送数据,以及从所述至少一个指定接口单元接收数据;
其中,所述总线控制器被配置为对访问所述至少一个指定接口单元的请求进行仲裁;
处理器接口块,被耦接到所述总线控制器,并且还被耦接到与所述至少一个指定接口单元关联的指定路由器,其中,所述处理器接口块被配置为允许所述多处理器***中的多个处理器中的任何一个使用所述主互连网络通过所述指定路由器来访问所述辅互连网络。
2.如权利要求1所述的多处理器***,
其中,所述处理器接口块被配置为从所述指定路由器接收消息,并将这些消息提供给所述总线控制器以提供到所述辅互连网络上,其中来自所述指定路由器的消息产生于所述主互连网络上;并且
其中,所述处理器接口块被配置为通过所述总线控制器从所述辅互连网络接收消息,并且将这些消息提供给所述指定路由器以提供到所述主互连网络上。
3.如权利要求1所述的多处理器***,
其中,所述多处理器***中的任何相应的处理器能够被配置为:
1)在主互连网络上从所述相应处理器的邻近路由器到所述指定路由器建立第一通信路径,以创建到所述辅互连网络的前向路径;以及
2)在主互连网络上从所述指定路由器到所述相应处理器的邻近路由器建立第二通信路径,以创建从所述辅互连网络出发的反向路径用于与所述辅互连网络的全双工通信。
4.如权利要求1所述的多处理器***,
其中,所述处理器接口块包括用于缓冲辅互连网络消息的一个或多个缓冲寄存器,其中所述一个或多个缓冲寄存器使得任何处理器能够使用所述主互连网络来访问所述辅互连网络。
5.如权利要求1所述的多处理器***,
其中,任何相应的处理器能够操作以将辅互连网络消息发布到所述主互连网络上以到达所述指定路由器,以供通过所述处理器接口块和所述总线控制器提供给所述辅互连网络;
其中,所述任何相应的处理器被配置为从所述辅互连网络接收结果和/或消息状态信息,所述结果和/或消息状态信息通过所述总线控制器和所述处理器接口块被提供到所述指定路由器。
6.如权利要求1所述的多处理器***,
其中,所述总线控制器被配置为对来自多个电路块的访问所述指定接口单元的请求进行仲裁,其中所述多个电路块包括:
所述处理器接口块;以及
外部主机接口。
7.如权利要求1所述的多处理器***,
其中,所述多处理器***被包括在多芯片***中的第一芯片上,其中所述多芯片***在通过相应的主互连网络耦接在一起的相应的芯片上包括多个多处理器***,其中第一芯片上的任何处理器能够被配置为访问所述多芯片***中的第二芯片上的辅互连网络。
8.如权利要求1所述的多处理器***,
其中,所述多个接口单元以菊花链的方式被耦接在一起以形成所述辅互连网络。
9.如权利要求1所述的多处理器***,
其中,所述总线控制器被配置为从两个或更多处理器中的每一个处理器接收消息;
其中,所述总线控制器被配置为将从所述两个或更多处理器接收的消息进行比较,并且基于所述比较采取动作。
10.如权利要求9所述的多处理器***,
其中,如果接收到的消息被确定为匹配,则所述总线控制器被配置为将接收到的消息中的一个消息发送给所述辅互连网络;
其中,如果接收到的消息被确定为不匹配,则所述总线控制器被配置为向可编程错误处理机发送消息。
11.如权利要求1所述的多处理器***,
其中,所述指定路由器与指定处理器关联,其中所述指定处理器具有到所述总线控制器的分离的通信路径;
其中,所述总线控制器被配置为从所述指定处理器和另一处理器接收消息;
其中,所述总线控制器被配置为将从所述指定处理器和另一处理器接收的消息进行比较;
其中,如果接收到的消息被确定为匹配,则所述总线控制器被配置为将接收到的消息中的一个消息发送给所述辅互连网络;
其中,如果接收到的消息被确定为不匹配,则所述总线控制器被配置为向可编程错误处理机发送消息。
12.一种用于在多处理器***中通信的方法,其中,所述多处理器***包括以散布方式耦接在一起的多个处理器和多个数据存储路由器,所述方法包括:
在主互连网络上建立从第一处理器到与指定处理器关联的指定路由器的通信路径,其中所述指定路由器被连接到处理器接口块;
由所述第一处理器通过所述主互连网络向所述指定路由器发送辅互连网络消息;
由所述指定路由器向所述处理器接口块提供所述辅互连网络消息;
由所述处理器接口块向总线控制器提供所述辅互连网络消息;
由所述总线控制器将所述辅互连网络消息提供到所述辅互连网络上;
其中,所述方法能够用于使得所述多处理器***中的任何处理器能够在所述辅互连网络上通信。
13.如权利要求12所述的方法,还包括:
建立从所述指定路由器到所述第一处理器的反向通信路径,其中,所述反向通信路径能够用于从所述辅互连网络向所述第一处理器往回提供响应信息。
14.如权利要求13所述的方法,还包括:
由所述总线控制器从所述辅互连网络接收响应信息;
由所述总线控制器向所述处理器接口块提供所述响应信息;
由所述处理器接口块向所述指定路由器提供所述响应信息;
由所述指定路由器通过所述反向通信路径向所述第一处理器提供所述响应信息。
15.如权利要求12所述的方法,还包括:
在所述处理器接口块处缓冲所述辅互连网络消息。
16.如权利要求12所述的方法,还包括:
由所述总线控制器对来自多个电路块的访问第一接口单元的请求进行仲裁,其中所述多个电路块包括所述处理器接口块以及外部主机接口。
17.如权利要求12所述的方法,还包括:
由所述总线控制器从所述多个处理器中的两个或更多处理器中的每一个接收消息;
将从所述两个或更多处理器接收的消息进行比较,并且基于所述比较采取动作。
18.如权利要求17所述的方法,还包括:
响应于确定接收的消息匹配,将接收的消息中的一个消息发送给所述辅互连网络;
响应于确定接收的消息不匹配,向可编程错误处理机发送消息。
19.如权利要求12所述的方法,还包括:
由所述总线控制器从所述指定处理器和另一处理器接收消息,其中所述指定处理器与所述指定路由器关联,并且其中所述指定处理器具有到所述总线控制器的分离的通信路径;
将从所述指定处理器和所述另一处理器接收的消息进行比较;
响应于确定接收的消息匹配,将接收的消息中的一个消息发送给所述辅互连网络;
响应于确定接收的消息不匹配,向可编程错误处理机发送消息。
20.一种多处理器***,包括:
多个处理器,每个处理器包括多个处理器端口;
多个数据存储路由器,每个数据存储路由器包括多个通信端口、第一存储器和路由引擎;
其中,所述多个处理器和所述多个数据存储路由器以散布方式耦接在一起,其中所述多个数据存储路由器形成主互连网络;
多个接口单元,其中每个接口单元被耦接到相应的处理器和相应的数据存储路由器;
其中,所述多个接口单元被耦接到一起以形成辅互连网络;
总线控制器,被耦接到至少第一接口单元和第二接口单元,其中所述总线控制器被配置为向所述第一接口单元发送数据,以及从所述第二接口单元接收数据;
其中,所述总线控制器被配置为对访问至少所述第一接口单元和第二接口单元的请求进行仲裁;
处理器接口块,被耦接到所述总线控制器,并且还被耦接到与所述第一接口单元关联的第一数据存储路由器,其中,所述处理器接口块被配置为允许所述多处理器***中的多个处理器中的任何一个处理器使用所述主互连网络通过所述第一数据存储路由器来访问所述辅互连网络。
21.如权利要求20所述的多处理器***,
其中,所述处理器接口块被配置为从所述第一数据存储路由器接收消息,并将这些消息提供给所述总线控制器以提供到所述辅互连网络上,其中来自所述第一数据存储路由器的消息产生于所述主互连网络上;并且
其中,所述处理器接口块被配置为通过所述总线控制器从所述辅互连网络接收消息,并且将这些消息提供给所述第一数据存储路由器以提供到所述主互连网络上。
22.如权利要求20所述的多处理器***,
其中,所述多个处理器中的任何相应的处理器能够被配置为:
1)在所述主互连网络上从所述相应处理器的邻近路由器到所述第一数据存储路由器建立第一通信路径,以创建到所述辅互连网络的前向路径;以及
2)在所述主互连网络上从所述第一数据存储路由器到所述相应处理器的邻近路由器建立第二通信路径,以创建从所述辅互连网络出发的反向路径用于与所述辅互连网络的全双工通信。
23.如权利要求20所述的多处理器***,
其中,所述处理器接口块包括用于缓冲辅互连网络消息的一个或多个缓冲寄存器,其中所述一个或多个缓冲寄存器使得任何处理器能够使用所述主互连网络来访问所述辅互连网络。
24.如权利要求20所述的多处理器***,
其中,任何相应的处理器能够操作以将辅互连网络消息发布到主互连网络上以到达所述第一数据存储路由器,以供通过所述处理器接口块和所述总线控制器来提供给所述辅互连网络;
其中,所述任何相应的处理器被配置为从所述辅互连网络接收结果和/或消息状态信息,该结果和/或消息状态信息通过所述总线控制器和所述处理器接口块提供到所述第一数据存储路由器。
25.如权利要求20所述的多处理器***,
其中,所述总线控制器被配置为对来自多个电路块的访问所述第一接口单元和所述第二接口单元的请求进行仲裁,其中所述多个电路块包括:
所述处理器接口块;以及
外部主机接口。
26.如权利要求20所述的多处理器***,
其中,所述多处理器***被包括在多芯片***中的第一芯片上,其中所述多芯片***在通过相应的主互连网络耦接在一起相应的芯片上包括多个多处理器***,其中所述第一芯片上的任何处理器能够被配置为访问所述多芯片***中的第二芯片上的辅互连网络。
27.如权利要求20所述的多处理器***,
其中,所述多个接口单元以菊花链的方式被耦接在一起以形成所述辅互连网络。
28.如权利要求20所述的多处理器***,
其中,所述总线控制器被配置为从两个或更多处理器中的每一个处理器接收消息;
其中,所述总线控制器被配置为将从所述两个或更多处理器接收的消息进行比较,并且基于所述比较采取动作。
29.如权利要求28所述的多处理器***,
其中,如果接收的消息被确定为匹配,则所述总线控制器被配置为将接收的消息中的一个消息发送给所述辅互连网络;
其中,如果接收的消息被确定为不匹配,则所述总线控制器被配置为向可编程错误处理机发送消息。
30.如权利要求20所述的多处理器***,
其中,所述第一数据存储路由器与指定处理器关联,其中所述指定处理器具有到所述总线控制器的分离的通信路径;
其中,所述总线控制器被配置为从所述指定处理器和另一处理器接收消息;
其中,所述总线控制器被配置为将从所述指定处理器和另一处理器接收的消息进行比较;
其中,如果所述消息被确定为匹配,则所述总线控制器被配置为将接收的消息中的一个消息发送给所述辅互连网络;
其中,如果所述消息被确定为不匹配,则所述总线控制器被配置为向可编程错误处理机发送消息。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261736851P | 2012-12-13 | 2012-12-13 | |
US61/736,851 | 2012-12-13 | ||
PCT/US2013/071307 WO2014092968A1 (en) | 2012-12-13 | 2013-11-21 | Multiprocessor system with improved secondary interconnection network |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104919442A CN104919442A (zh) | 2015-09-16 |
CN104919442B true CN104919442B (zh) | 2017-10-10 |
Family
ID=49765667
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380070450.1A Active CN104919442B (zh) | 2012-12-13 | 2013-11-21 | 具有改进的辅互连网络的多处理器*** |
Country Status (5)
Country | Link |
---|---|
US (5) | US9292464B2 (zh) |
EP (3) | EP3109769B1 (zh) |
JP (4) | JP6341930B2 (zh) |
CN (1) | CN104919442B (zh) |
WO (1) | WO2014092968A1 (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104919442B (zh) * | 2012-12-13 | 2017-10-10 | 相干逻辑公司 | 具有改进的辅互连网络的多处理器*** |
CN104780122B (zh) * | 2015-03-23 | 2018-09-11 | 中国人民解放军信息工程大学 | 基于缓存再分配的层次化片上网络路由器的控制方法 |
JP5943115B1 (ja) * | 2015-03-27 | 2016-06-29 | 日本電気株式会社 | 集積回路、半導体装置、カード及びデータ転送方法 |
CA3060969C (en) * | 2017-04-17 | 2020-12-29 | Cerebras Systems Inc. | Neuron smearing for accelerated deep learning |
US11093251B2 (en) | 2017-10-31 | 2021-08-17 | Micron Technology, Inc. | System having a hybrid threading processor, a hybrid threading fabric having configurable computing elements, and a hybrid interconnection network |
WO2019090032A1 (en) * | 2017-11-03 | 2019-05-09 | Coherent Logix, Inc. | Memory network processor |
WO2019191738A1 (en) | 2018-03-31 | 2019-10-03 | Micron Technology, Inc. | Backpressure control using a stop signal for a multi-threaded, self-scheduling reconfigurable computing fabric |
KR102447816B1 (ko) | 2018-03-31 | 2022-09-27 | 마이크론 테크놀로지, 인크. | 멀티 스레드, 자체 스케줄링 재구성 가능한 컴퓨팅 패브릭에 대한 다수의 유형의 스레드 식별자 |
EP3776188A1 (en) | 2018-03-31 | 2021-02-17 | Micron Technology, Inc. | Conditional branching control for a multi-threaded, self- scheduling reconfigurable computing fabric |
KR102446709B1 (ko) | 2018-03-31 | 2022-09-26 | 마이크론 테크놀로지, 인크. | 멀티 스레드, 자체 스케줄링 재구성 가능한 컴퓨팅 패브릭의 실행 제어 |
US11275710B2 (en) | 2018-03-31 | 2022-03-15 | Micron Technology, Inc. | Loop thread order execution control of a multi-threaded, self-scheduling reconfigurable computing fabric |
EP3776236A1 (en) | 2018-03-31 | 2021-02-17 | Micron Technology, Inc. | Efficient loop execution for a multi-threaded, self-scheduling reconfigurable computing fabric |
CN111919207A (zh) | 2018-03-31 | 2020-11-10 | 美光科技公司 | 多线程自调度可重新配置计算架构 |
EP3776239A1 (en) | 2018-03-31 | 2021-02-17 | Micron Technology, Inc. | Loop execution control for a multi-threaded, self-scheduling reconfigurable computing fabric using a reenter queue |
CN110262993B (zh) * | 2019-06-11 | 2022-02-08 | 浙江华创视讯科技有限公司 | 输入信息的读取方法及电路、存储介质、电子装置 |
US11102030B2 (en) * | 2019-06-27 | 2021-08-24 | Rockwell Automation Technologies, Inc. | Daisy chaining point-to-point link sensors |
US11573834B2 (en) | 2019-08-22 | 2023-02-07 | Micron Technology, Inc. | Computational partition for a multi-threaded, self-scheduling reconfigurable computing fabric |
US11150900B2 (en) | 2019-08-28 | 2021-10-19 | Micron Technology, Inc. | Execution or write mask generation for data selection in a multi-threaded, self-scheduling reconfigurable computing fabric |
US11494331B2 (en) | 2019-09-10 | 2022-11-08 | Cornami, Inc. | Reconfigurable processor circuit architecture |
CN112419140B (zh) * | 2020-12-02 | 2024-01-23 | 海光信息技术股份有限公司 | 数据处理装置、数据处理方法及电子设备 |
FR3121239A1 (fr) | 2021-03-24 | 2022-09-30 | Thales | Système de communication comprenant une pluralité de processeurs et au moins un commutateur, et un procédé de communication associé |
US20240201990A1 (en) * | 2022-12-14 | 2024-06-20 | Advanced Micro Devices, Inc. | Fused Data Generation and Associated Communication |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101479704A (zh) * | 2006-03-27 | 2009-07-08 | 相干逻辑公司 | 为多处理器***设计程序 |
CN102461264A (zh) * | 2009-06-19 | 2012-05-16 | 德克萨斯***大学董事会 | 可缩放的基于总线的片上互连网络 |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5123109A (en) * | 1983-05-31 | 1992-06-16 | Thinking Machines Corporation | Parallel processor including a processor array with plural data transfer arrangements including (1) a global router and (2) a proximate-neighbor transfer system |
US5280474A (en) * | 1990-01-05 | 1994-01-18 | Maspar Computer Corporation | Scalable processor to processor and processor-to-I/O interconnection network and method for parallel processing arrays |
EP0562251A2 (en) * | 1992-03-24 | 1993-09-29 | Universities Research Association, Inc. | Parallel data transfer network controlled by a dynamically reconfigurable serial network |
JP3595033B2 (ja) * | 1995-07-18 | 2004-12-02 | 株式会社日立製作所 | 高信頼化コンピュータシステム |
US5859985A (en) | 1996-01-14 | 1999-01-12 | At&T Wireless Services, Inc. | Arbitration controller for providing arbitration on a multipoint high speed serial bus using drivers having output enable pins |
KR100259276B1 (ko) * | 1997-01-27 | 2000-06-15 | 윤종용 | 대역폭확장이 가능한 상호연결망 |
US6131135A (en) | 1998-06-30 | 2000-10-10 | Intel Corporation | Arbitration method for a system with two USB host controllers |
US6247100B1 (en) | 2000-01-07 | 2001-06-12 | International Business Machines Corporation | Method and system for transmitting address commands in a multiprocessor system |
US6961782B1 (en) * | 2000-03-14 | 2005-11-01 | International Business Machines Corporation | Methods for routing packets on a linear array of processors |
US7058750B1 (en) * | 2000-05-10 | 2006-06-06 | Intel Corporation | Scalable distributed memory and I/O multiprocessor system |
US6697919B2 (en) * | 2000-06-10 | 2004-02-24 | Hewlett-Packard Development Company, L.P. | System and method for limited fanout daisy chaining of cache invalidation requests in a shared-memory multiprocessor system |
US7415594B2 (en) | 2002-06-26 | 2008-08-19 | Coherent Logix, Incorporated | Processing system with interspersed stall propagating processors and communication elements |
US7359932B2 (en) * | 2002-12-12 | 2008-04-15 | International Business Machines Corporation | Method and data processing system for microprocessor communication in a cluster-based multi-processor system |
US6920627B2 (en) * | 2002-12-13 | 2005-07-19 | Xilinx, Inc. | Reconfiguration of a programmable logic device using internal control |
JP4492035B2 (ja) * | 2003-04-21 | 2010-06-30 | 日本電気株式会社 | データ処理装置 |
US7574581B2 (en) * | 2003-04-28 | 2009-08-11 | International Business Machines Corporation | Cross-chip communication mechanism in distributed node topology to access free-running scan registers in clock-controlled components |
US7290169B2 (en) * | 2004-04-06 | 2007-10-30 | Hewlett-Packard Development Company, L.P. | Core-level processor lockstepping |
EP2383657A1 (en) * | 2005-04-21 | 2011-11-02 | Violin Memory, Inc. | Interconnetion system |
US7649845B2 (en) * | 2005-09-30 | 2010-01-19 | Intel Corporation | Handling hot spots in interconnection networks |
US8228930B1 (en) * | 2006-06-02 | 2012-07-24 | The Board Of Trustees Of The Leland Stanford Junior University | Interconnection network router arrangements and methods therefor |
JP5055942B2 (ja) * | 2006-10-16 | 2012-10-24 | 富士通株式会社 | 計算機クラスタ |
US8285789B2 (en) * | 2007-10-05 | 2012-10-09 | Intel Corporation | Flattened butterfly processor interconnect network |
US7877536B2 (en) * | 2007-12-26 | 2011-01-25 | Texas Instruments Incorporated | Scalable distributed routing scheme for PCI express switches |
US8140796B2 (en) * | 2007-12-27 | 2012-03-20 | Igt | Serial advanced technology attachment write protection: mass storage data protection device |
WO2010060243A1 (en) * | 2008-11-28 | 2010-06-03 | Siemens Aktiengesellschaft | Automatic control system and method for executing control program in parallel |
US8171328B2 (en) * | 2008-12-31 | 2012-05-01 | Intel Corporation | State history storage for synchronizing redundant processors |
JP5333200B2 (ja) * | 2009-12-25 | 2013-11-06 | 富士通株式会社 | パケット通信制御装置、メモリアクセス制御装置及び情報処理システム |
US8880866B2 (en) * | 2010-10-15 | 2014-11-04 | Coherent Logix, Incorporated | Method and system for disabling communication paths in a multiprocessor fabric by setting register values to disable the communication paths specified by a configuration |
WO2013128494A1 (en) * | 2012-03-02 | 2013-09-06 | Hitachi, Ltd. | Storage system and data transfer control method |
JP6317365B2 (ja) * | 2012-12-06 | 2018-04-25 | コーヒレント・ロジックス・インコーポレーテッド | 同期命令を含む処理システム |
CN104919442B (zh) * | 2012-12-13 | 2017-10-10 | 相干逻辑公司 | 具有改进的辅互连网络的多处理器*** |
US9992135B2 (en) * | 2015-12-11 | 2018-06-05 | Intel Corporation | Apparatus and method for fusion of compute and switching functions of exascale system into a single component by using configurable network-on-chip fabric with distributed dual mode input-output ports and programmable network interfaces |
-
2013
- 2013-11-21 CN CN201380070450.1A patent/CN104919442B/zh active Active
- 2013-11-21 EP EP16174345.5A patent/EP3109769B1/en active Active
- 2013-11-21 JP JP2015547381A patent/JP6341930B2/ja active Active
- 2013-11-21 WO PCT/US2013/071307 patent/WO2014092968A1/en active Application Filing
- 2013-11-21 US US14/086,648 patent/US9292464B2/en active Active
- 2013-11-21 EP EP19195487.4A patent/EP3614273A3/en not_active Ceased
- 2013-11-21 EP EP13805655.1A patent/EP2932398B1/en active Active
-
2016
- 2016-02-15 US US15/043,905 patent/US9612984B2/en active Active
-
2017
- 2017-02-20 US US15/437,343 patent/US10185672B2/en active Active
-
2018
- 2018-05-15 JP JP2018093528A patent/JP6603363B2/ja active Active
-
2019
- 2019-01-21 US US16/252,827 patent/US10747689B2/en active Active
- 2019-10-10 JP JP2019186694A patent/JP6959310B2/ja active Active
-
2020
- 2020-07-14 US US16/928,611 patent/US11755504B2/en active Active
-
2021
- 2021-10-07 JP JP2021165241A patent/JP7289341B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101479704A (zh) * | 2006-03-27 | 2009-07-08 | 相干逻辑公司 | 为多处理器***设计程序 |
CN102461264A (zh) * | 2009-06-19 | 2012-05-16 | 德克萨斯***大学董事会 | 可缩放的基于总线的片上互连网络 |
Also Published As
Publication number | Publication date |
---|---|
US20190155761A1 (en) | 2019-05-23 |
US20160162424A1 (en) | 2016-06-09 |
JP6341930B2 (ja) | 2018-06-13 |
JP6603363B2 (ja) | 2019-11-06 |
US11755504B2 (en) | 2023-09-12 |
US20200341914A1 (en) | 2020-10-29 |
JP2015537324A (ja) | 2015-12-24 |
US20140173161A1 (en) | 2014-06-19 |
JP2022023108A (ja) | 2022-02-07 |
US10747689B2 (en) | 2020-08-18 |
JP7289341B2 (ja) | 2023-06-09 |
EP2932398A1 (en) | 2015-10-21 |
US10185672B2 (en) | 2019-01-22 |
EP3109769A2 (en) | 2016-12-28 |
CN104919442A (zh) | 2015-09-16 |
JP2020004458A (ja) | 2020-01-09 |
EP3614273A2 (en) | 2020-02-26 |
WO2014092968A1 (en) | 2014-06-19 |
EP3614273A3 (en) | 2020-04-15 |
JP2018125044A (ja) | 2018-08-09 |
US9292464B2 (en) | 2016-03-22 |
EP3109769A3 (en) | 2018-03-28 |
US9612984B2 (en) | 2017-04-04 |
EP2932398B1 (en) | 2016-07-13 |
JP6959310B2 (ja) | 2021-11-02 |
EP3109769B1 (en) | 2019-10-16 |
US20170161214A1 (en) | 2017-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104919442B (zh) | 具有改进的辅互连网络的多处理器*** | |
CN107239420B (zh) | 具有散布处理器dma-fifo的处理*** | |
TWI453760B (zh) | 菊鍊串接架構識別技術 | |
TWI264904B (en) | Method and apparatus for separating transactions | |
CN102291423B (zh) | 控制物理层芯片的方法及控制电路 | |
CN105068951B (zh) | 一种具有非等时传输结构的片上***总线 | |
CN102812438A (zh) | 用于优化多核***中的并发性的各种方法和装置 | |
CN107787484A (zh) | 通过网络配置加速部件 | |
US20090055837A1 (en) | Real-Time Distributed Processor Environment | |
CN101689159A (zh) | 令牌协议 | |
US9367493B2 (en) | Method and system of communicating between peer processors in SoC environment | |
CN101739367B (zh) | 多类总线存储控制的方法与装置 | |
CN100579057C (zh) | 实现基于单元的交换结构的构造的芯片 | |
CN103853692B (zh) | 一种基于中断判断机制的多处理器数据通讯方法 | |
CN103218344A (zh) | 采用数据驱动机制多处理器间数据通信电路 | |
JP2966051B2 (ja) | プロセッサ装置 | |
JPS63307570A (ja) | 星形トポロジのスイツチ装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |