CN117194313A - 可切换拓扑机器 - Google Patents

可切换拓扑机器 Download PDF

Info

Publication number
CN117194313A
CN117194313A CN202311295570.3A CN202311295570A CN117194313A CN 117194313 A CN117194313 A CN 117194313A CN 202311295570 A CN202311295570 A CN 202311295570A CN 117194313 A CN117194313 A CN 117194313A
Authority
CN
China
Prior art keywords
processor
configuration vector
configuration
slice
tile
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.)
Pending
Application number
CN202311295570.3A
Other languages
English (en)
Inventor
W·J·布泰拉
S·C·小斯蒂利
R·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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of CN117194313A publication Critical patent/CN117194313A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17381Two dimensional, e.g. mesh, torus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17337Direct connection machines, e.g. completely connected computers, point to point communication networks
    • G06F15/17343Direct connection machines, e.g. completely connected computers, point to point communication networks wherein the interconnection is dynamically configurable, e.g. having loosely coupled nearest neighbor architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)

Abstract

实施例涉及包括管芯上的多个处理器分片的计算设备,该多个处理器分片可以具有多个可切换拓扑。计算设备的拓扑可以包括一个或多个虚拟电路。虚拟电路可以包括多个处理器分片。拓扑的虚拟电路的处理器分片可以包括配置向量,以控制处理器分片与相邻处理器分片之间的连接。计算设备的第一拓扑可以对应于程序的计算的第一阶段,并且计算设备的第二拓扑可以对应于程序的计算的第二阶段。可以描述和/或要求保护其他实施例。

Description

可切换拓扑机器
本申请是2017年10月24日提交的申请号为201780059323.X的同名专利申请的分案申请。
相关申请
本申请要求享有于2017年6月29日提交的题为“SWITCHABLE TOPOLOGY MACHINE”的美国申请15/637,581的优先权,该申请要求享有于2016年10月26日提交的题为“Switchable Topology Machine”的美国临时申请62/413,160的优先权。
政府权利
本公开是在政府支持下以与Intel Federal LLC的合同No.#H98230-13-D-0124完成的。合同可能已经由国防部(DoD)授予。政府在本公开中拥有一定的权利。
技术领域
本公开的实施例总体上涉及计算技术领域,并且更具体地涉及多个处理器分片(tile)的计算。
背景技术
本文提供的背景描述是出于总体上呈现公开内容的上下文的目的。除非在本文中另有说明,否则本部分中描述的材料不是本申请中的权利要求的现有技术,并且不因包含在本部分中而被认为是现有技术。
可以将管芯上的多核心或多核心芯片组织成处理器分片的一维阵列或二维阵列,其中每个处理器分片可以是处理器,或简称为分片。每个处理器分片可以是包括高速缓存和开关的计算单元、处理引擎或中央处理单元(CPU)。多个处理器分片可以根据拓扑彼此耦合。可以在管芯上形成大量处理器分片,例如,多于500个处理器分片。管芯上的大量处理器分片可能增加通信复杂度。此外,多个处理器分片的拓扑可以是固定的,并且在程序的计算期间不能改变。
发明内容
本公开的一个方面涉及一种管芯上的处理器分片,包括:多个接口块;可编程互连,其耦合到所述多个接口块;存储器,其用于存储表示包括所述处理器分片的虚拟电路VC段的多个配置向量,其中,所述多个配置向量中的配置向量包括:VC的标识,拓扑的标识,所述配置向量的优先级数,所述处理器分片的要耦合到进入的相邻处理器分片的第一端口,以及所述处理器分片的要耦合到离开的相邻处理器分片的第二端口;以及控制器,其耦合到所述多个接口块、所述存储器以及所述可编程互连,以基于存储在所述存储器中的所述多个配置向量来控制所述可编程互连与所述多个接口块之间的连接。
本公开的另一个方面涉及一种计算设备,包括:管芯上的多个处理器分片;虚拟电路VC,其包括所述多个处理器分片中的数个处理器分片,其中,消息分组在单个时钟周期中遍历所述VC的数个处理器分片;第一拓扑,其包括第一数量的VC,其中,所述第一拓扑对应于程序的计算的第一阶段,并且所述第一拓扑的第一VC的第一处理器分片包括第一配置向量;第二拓扑,其包括第二数量的VC,其中,所述第二拓扑对应于所述程序的计算的第二阶段,所述第二拓扑的第二VC的第一处理器分片包括第二配置向量,所述计算的第二阶段与所述计算的第一阶段不同,并且所述第二拓扑与所述第一拓扑不同;并且其中,被包括在所述第一拓扑的第一VC的第一处理器分片中的所述第一配置向量在所述程序的计算的第一阶段期间处于活动状态,所述第一配置向量在所述程序的计算的第二阶段期间处于非活动状态,被包括在所述第二拓扑的第二VC的第一处理器分片中的所述第二配置向量在所述程序的计算的第二阶段期间处于活动状态,并且所述第二配置向量在所述程序的计算的第一阶段期间处于非活动状态;并且其中,所述第一拓扑的第一VC的第一处理器分片的第一配置向量包括:用于标识所述第一VC的第一信息,用于标识所述第一拓扑的第二信息,用于标识所述第一配置向量的优先级的第三信息,所述第一处理器分片的要耦合到进入的相邻处理器分片的第一端口,以及所述第一处理器分片的要耦合到离开的相邻处理器分片的第二端口。
本公开的另一个方面涉及一种计算设备,包括:虚拟电路VC,其包括管芯上的多个处理器分片,其中,消息分组在单个时钟周期中遍历所述VC的多个处理器分片,并且所述多个处理器分片中的处理器分片包括:多个接口块;可编程互连,其耦合到所述多个接口块;存储器,其用于存储表示包括所述处理器分片的VC段的多个配置向量;以及控制器,其耦合到所述多个接口块、所述存储器以及所述可编程互连,以基于存储在所述存储器中的所述多个配置向量来控制所述可编程互连与所述多个接口块之间的连接;其中,所述多个配置向量中的第一配置向量包括第一VC的标识和第一拓扑的标识,所述多个配置向量中的第二配置向量包括第二VC的标识和第二拓扑的标识,并且其中,所述第一拓扑对应于程序的计算的第一阶段,所述第二拓扑对应于所述程序的计算的第二阶段,所述计算的第二阶段与所述计算的第一阶段不同,并且所述第二拓扑与所述第一拓扑不同。
附图说明
通过以下具体实施方式,结合附图,将容易理解实施例。为了有助于理解本说明书,相同的附图标记表示相同的结构元素。在附图的图中通过示例的方式而非通过限制的方式来说明实施例。
图1示出了根据各种实施例的示例计算设备,其包括管芯上的多个处理器分片以及包括多个处理器分片的虚拟电路(VC)。
图2示出了根据各种实施例的另一示例计算设备,其包括具有可切换的多个拓扑的管芯上的多个处理器分片。
图3示出了根据各种实施例的示例处理器分片,其包括控制器、可编程互连和多个接口块。
图4示出了根据各种实施例的处理器分片的示例控制器,其用于控制可编程互连与多个接口块之间的连接。
图5示出了根据各种实施例的示例配置向量,其存储在处理器分片的存储器中以控制可编程互连与多个接口块之间的连接。
图6示出了根据各种实施例的VC段在两个不同的处理器分片之间的示例形成。
图7-8示出了根据各种实施例的在形成两个VC的过程期间的仲裁的示例。
图9示出了根据各种实施例的处理器分片的控制器对可编程互连与多个接口块之间的连接进行控制的示例过程。
图10示出了根据各种实施例的适用于实践本公开的各个方面的示例设备。
图11示出了根据各种实施例的具有用于实践参考图1-10描述的方法的指令的存储介质。
具体实施方式
本文公开了与由包括具有可切换拓扑的管芯上的多个处理器分片的计算设备在多个阶段中执行程序的计算有关的装置、方法和存储介质。本文的实施例可以是具有数千个处理器分片的计算设备。在实施例中,虚拟电路(VC)可以包括多个处理器分片。消息分组可以在单个时钟周期中遍历VC的多个处理器分片。计算设备的拓扑可以包括形成通信模式的多个VC。拓扑对于某些计算任务可能是高效的,而对于某些其他计算任务则不那么高效。多个处理器分片被组织成在程序的计算期间不能改变的一个固定拓扑对于计算的多个阶段可能不是高效的。
在实施例中,包括管芯上的多个处理器分片的计算设备可以具有多个可切换拓扑。第一拓扑可以对应于程序的计算的第一阶段,并且第二拓扑可以对应于程序的计算的第二阶段。当程序的计算从第一阶段转移到第二阶段时,计算设备可以从第一拓扑切换到第二拓扑,使得程序的计算的第一阶段可以由计算设备根据第一拓扑来执行,并且程序的计算的第二阶段可以由计算设备根据第二拓扑来执行。利用可切换拓扑,本文的实施例可以为程序的各种计算任务提供更高效的计算和通信。
在实施例中,计算设备可以包括具有可切换拓扑的管芯上的多个处理器分片,其中计算设备的拓扑可以包括多个VC。第一拓扑的VC的处理器分片可以包括第一配置向量,并且第二拓扑的VC的处理器分片可以包括第二配置向量。处理器分片的配置向量可以表示包括处理器分片的VC段。第一拓扑可以对应于程序的计算的第一阶段,而第二拓扑可以对应于程序的计算的第二阶段,其中计算的第二阶段可以与计算的第一阶段不同。第一配置向量在程序的计算的第一阶段期间可以处于活动状态,而在计算的第二阶段期间可以处于非活动状态。类似地,第二配置向量在程序的计算的第一阶段期间可以处于非活动状态,而在计算的第二阶段期间可以处于活动状态。
在实施例中,处理器分片可以包括多个接口块、可编程互连、存储器和控制器。存储器可以存储多个配置向量。控制器可以基于存储在存储器中的配置向量来控制可编程互连与多个接口块之间的连接。
在下面的说明书中,参考形成其一部分的附图,在附图中相同的附图标记始终表示相同的部分,并且附图通过可以实践的说明性实施例的方式示出。应该理解,在不脱离本公开的范围的情况下可以利用其他实施例并且可以进行结构或逻辑改变。因此,以下具体实施方式不应被视为具有限制意义,并且实施例的范围由所附权利要求及其等同物限定。
各种方法的操作可以以最有助于理解所要求保护的主题的方式依次描述为多个离散的动作或操作。然而,描述的次序不应被解释为暗指这些操作必须是次序相关的。特别地,这些操作可以不按照呈现的次序执行。所描述的操作可以以与所描述的实施例不同的次序来执行。在附加实施例中可以执行各种附加操作和/或可以省略、拆分或组合所描述的操作。
出于本公开的目的,短语“A或B”以及“A和/或B”表示(A)、(B)或(A和B)。出于本公开的目的,短语“A、B和/或C”表示(A)、(B)、(C)、(A和B)、(A和C)、(B和C)或(A、B和C)。
说明书可以使用短语“在一个实施例中”或“在实施例中”,其可以各自指代相同实施例或不同实施例中的一个或多个。此外,如关于本公开的实施例使用的术语“包括”、“包含”、“具有”等是同义的。
如在下文中包括在权利要求书中所使用的,术语“模块”或“例程”可以指代以下各项,是以下各项的一部分或包括以下各项:专用集成电路(ASIC)、电子电路、执行一个或多个软件或固件程序的(共享的、专用的或组)处理器和/或(共享的、专用的或组)存储器、组合逻辑电路和/或提供所描述的功能的其他合适的部件。
在公开内容叙述“一(a)”或“第一”元素或其等同物的情况下,这种公开包括一个或多个这样的元素,既不要求也不排除两个或更多个这样的元素。此外,除非另外专门陈述,否则针对识别出的元素的序数指示符(例如,第一、第二或第三)用于在元素之间进行区分,而不指示或暗示要求或限制数量的这种元素,也不指示这些元素的特定位置或次序。
本文可以使用术语“与……耦合”和“耦合到”等。“耦合”可以表示以下中的一个或多个。“耦合”可以表示两个或更多个元件直接物理或电接触。然而,“耦合”还可以表示两个或更多个元件彼此间接接触,但仍然彼此协作或交互,并且可以表示一个或多个其他元件耦合或连接在所述彼此耦合的元件之间。通过示例而非限制的方式,“耦合”可以表示两个或更多个元件或设备通过诸如主板之类的印刷电路板上的电连接而耦合。通过示例而非限制的方式,“耦合”可以表示两个或更多个元件/设备通过诸如有线网络和/或无线网络之类的一个或多个网络链接而协作和/或交互。通过示例而非限制的方式,计算装置可以包括在主板上或通过一个或多个网络链接“耦合”的两个或更多个计算设备。
如本文所使用的,术语“电路”可以指代以下各项,是以下各项的一部分或者包括以下各项:专用集成电路(ASIC)、电子电路、执行一个或多个软件或固件程序的(共享的、专用的或组)处理器和/或(共享的、专用的或组)存储器、组合逻辑电路和/或提供所描述的功能的其他合适的硬件部件。如本文所使用的,“计算机实现的方法”可以指代由以下各项执行的任何方法:一个或多个处理器,具有一个或多个处理器的计算机系统,诸如智能电话(其可以包括一个或多个处理器)、平板计算机、膝上型计算机之类的移动设备,机顶盒,游戏机等。
图1示出了根据各种实施例的示例计算设备100,其包括管芯上的多个处理器分片(例如,处理器分片101、处理器分片103、处理器分片105、处理器分片107、处理器102、处理器分片104)以及包括多个处理器分片的虚拟电路(VC)(例如,VC 111和VC 113)。为清楚起见,下面可以将计算设备100的特征描述为用于理解可以包括多个处理器分片的示例计算设备的示例。应理解,计算设备100中可以包括更多或更少的部件。此外,应理解,计算设备100内的设备和部件中的一个或多个可以包括来自下面的描述的附加的特征和/或变化的特征,并且可以包括本领域普通技术人员将视为和/或称为计算设备的任何设备。
在实施例中,计算设备100可以包括处理器分片101、处理器分片103、处理器分片105、处理器分片107、处理器分片102、处理器分片104、处理器分片151、处理器分片153、处理器分片155、处理器分片157、处理器分片159、处理器分片161、处理器分片163,以及管芯上的许多其他处理器分片。在实施例中,计算设备100中可以包括数千个处理器分片。计算设备100的处理器分片可以具有相同的结构。在一些其他实施例中,计算设备100的处理器分片可以具有彼此不同的结构。
在实施例中,处理器分片可以耦合到多个其他处理器分片。例如,处理器分片151可以耦合到在西北(NW)方向上的处理器分片153、在东北(NE)方向上的处理器分片155、在东(E)方向上的处理器分片157、在东南(SE)方向的处理器分片159、在西南(SW)方向上的处理器分片161以及在西(W)方向上的处理器分片163。在一些其他实施例中,可以有不同数量的处理器分片耦合到一个处理器分片。
在实施例中,VC可以包括多个处理器分片。例如,VC 111可以包括处理器分片101、处理器分片103、处理器分片105、处理器分片107,以及其他处理器分片。VC 113可以包括处理器分片102和处理器分片104,以及其他处理器分片。VC可以具有由VC的处理器分片内的控制器管理的状态。当VC的所有处理器分片相对于由处理器分片的控制器管理的VC沿着VC的信号路径变为活动的时,VC可以变为活动的。一旦VC是活动的,则消息分组可以在单个时钟周期中遍历VC的多个处理器分片。例如,消息分组可以在单个时钟周期中从处理器分片101开始并且至处理器分片107结束来遍历VC 111的多个处理器分片。VC段可以是VC的一部分,并且可以包括两个处理器分片。例如,VC 111的VC段121可以包括处理器分片103和处理器分片105。
图2示出了根据各种实施例的另一示例计算设备200,其包括具有可切换的多个拓扑的管芯上的多个处理器分片。计算设备200可以是图1所示的计算设备100的示例。
在实施例中,计算设备200可以包括多个处理器分片,例如,处理器分片221、处理器分片222、处理器分片223、处理器分片231、处理器分片233、处理器分片235等。处理器分片221、处理器分片222、处理器分片223、处理器分片231、处理器分片233和处理器分片235可以类似于如图1所示的处理器分片101、处理器分片103、处理器分片105、处理器分片107、处理器分片102、处理器分片104、处理器分片151、处理器分片153、处理器分片155、处理器分片157、处理器分片159、处理器分片161或处理器分片163。
在实施例中,计算设备200可以包括多个VC,例如,VC 201、VC 203、VC 205、VC207、VC 211和VC 213。每个VC可以包括多个处理器分片。例如,VC 211可以包括处理器分片221、处理器分片223和其他处理器分片。VC 205可以包括处理器分片231、处理器分片233和其他处理器分片。一些处理器分片可以包括在多个VC中。例如,处理器分片231和处理器分片233可以包括在VC 205和VC 213中。一些其他处理器分片可以仅包括在一个VC中。例如,处理器分片222可以仅包括在VC 201中,并且处理器分片235可以仅包括在VC 213中。
在实施例中,计算设备200的拓扑可以包括一个或多个VC。例如,计算设备200的第一拓扑可以包括VC 201、VC 203、VC 205和VC 207。计算设备200的第二拓扑可以包括VC211和VC 213。
在实施例中,计算设备200的拓扑可以对应于程序的计算的阶段。例如,包括VC201、VC 203、VC 205和VC 207的第一拓扑可以对应于程序的计算的第一阶段,而包括VC211和VC 213的第二拓扑可以对应于程序的计算的第二阶段。第一拓扑的VC的处理器分片(例如,第一拓扑的VC 201的处理器分片222)在程序的计算的第一阶段期间可以处于活动状态,而在程序的计算的第二阶段期间可以处于非活动状态。处理器分片222的状态可以由存储在第一拓扑的VC 201的处理器分片222中的配置向量进行控制。类似地,第二拓扑的VC的处理器分片(例如,第二拓扑的VC 213的处理器分片235)在程序的计算的第一阶段期间可以处于非活动状态,而在程序的计算的第二阶段期间可以处于活动状态。处理器分片235的状态可以由存储在第二拓扑的VC 213的处理器分片235中的配置向量进行控制。
在实施例中,处理器分片可以包括在多个VC和多个拓扑中。例如,处理器分片221可以包括在VC 203和VC 211中。当处理器分片221包括在VC 203中时,处理器分片221包括在第一拓扑中。当处理器分片221包括在VC 211中时,处理器分片221包括在第二拓扑中。当处理器分片包括在多个VC和多个拓扑中时,该处理器分片可以包括存储在处理器分片的存储器中的多个配置向量,以指示包括该处理器分片的VC和拓扑。例如,处理器分片221可以包括第一配置向量以指示处理器分片221包括在第一拓扑的VC 203中,并且包括第二配置向量以指示处理器分片221包括在第二拓扑的VC 211中。
在实施例中,程序可以是任何种类的软件,其计算由计算设备200执行。程序可以包括多个计算阶段。例如,如下面示出的,程序可以包括4个计算阶段,每个计算阶段包括具有不同计算模式的不同任务。
第一阶段(计算梯度)可以由计算设备200根据包括VC 201、VC 203、VC 205和VC207的第一拓扑来执行。第二阶段(计算方向向量)可以由计算设备200根据包括VC 211和VC213的第二拓扑来执行。可能存在其他拓扑来执行计算的其他阶段(未示出)。
图3示出了根据各种实施例的示例处理器分片300,其包括控制器301、可编程互连303和多个接口块,例如,接口块311、接口块313、接口块315、接口块317、接口块319和接口块321。处理器分片300可以是图1所示的计算设备100的处理器分片101或任何其他处理器分片的示例。
在实施例中,处理器分片300可以是VC的节点。当消息分组可以通过处理器分片300到达另一处理器分片时,处理器分片300可以是VC的传输节点。另一方面,当消息分组可以在本地保存在处理器分片300内时,处理器分片300可以是VC的终端节点。
在实施例中,处理器分片300可以包括多个接口块,例如,接口块311、接口块313、接口块315、接口块317、接口块319和接口块321。六个接口块(例如,接口块311、接口块313、接口块315、接口块317、接口块319和接口块321)可以放置在东(E)方向、西(W)方向、东北(NE)方向、西北(NW)方向、东南(SE)方向以及西南(SW)方向。每个接口块可以耦合到另一处理器分片的另一接口块以形成连接,从而可以在处理器分片300与另一处理器分片之间形成VC段,如图6所示。
在实施例中,接口块(例如,接口块311、接口块313、接口块315、接口块317、接口块319或接口块321)可以包括选择器、本地存储装置和消息传递存储装置。例如,接口块311可以包括选择器316、本地存储装置314和消息传递存储装置312。选择器316可以用于控制接口块311的连接。当选择器316关闭时,接口块311可以不具有与处理器分片300的其他部件的活动连接。当处理器分片300可以是VC的终端节点时,计算的消息分组可以通过接口块311进入处理器分片300,并且可以存储在接口块311的本地存储装置314中。另一方面,当处理器分片300可以是VC的传输节点时,计算的消息分组可以通过接口块311进入处理器分片300,并且可以经过选择器316以传送到下一个处理器分片。消息传递存储装置312可以用于不涉及VC的计算,但是用于与其他处理器分片的其他连接。
处理器分片300还可以包括耦合到多个接口块的可编程互连303。在实施例中,可编程互连303可以是多路交叉开关(multi-way crossbar)。当处理器分片300可以是VC的传输节点时,消息分组可以通过第一接口块进入处理器分片300,经过可编程互连303,并且通过第二接口块离开处理器分片300。
处理器分片300还可以包括存储器305以存储多个配置向量,例如,配置向量351、配置向量353、配置向量355和配置向量357。在实施例中,配置向量可以表示包括处理器分片300的VC段。在实施例中,配置向量可以具有包括空闲状态、发布就绪状态、已加载状态、活动状态、已退出状态或非活动状态的生命周期。
控制器301可以耦合到多个接口块、存储器305和可编程互连303,以基于存储在存储器305中的配置向量来控制可编程互连303与多个接口块之间的连接。控制器301可以管理存储在存储器305中的配置向量的生命周期。例如,控制器301的详细操作可以在图9中呈现。
图4示出了根据各种实施例的处理器分片400的示例控制器401,控制器401用于控制可编程互连403与多个接口块(例如,接口块417和接口块419)之间的连接。处理器分片400可以是如图1所示的计算设备100的处理器分片101或任何其他处理器分片的示例,或者是如图3所示的处理器分片300的示例。类似地,接口块417和接口块419可以是如图3所示的接口块317和接口块319或任何其他接口块的示例。控制器401和可编程互连403可以是如图3所示的控制器301和可编程互连303的示例。
在实施例中,处理器分片400可以包括控制器401、可编程互连403、存储器405、接口块417、接口块419、总线463和核心461,以及通常包括在处理器分片中的其他部件。类似于图3所示的接口块311,接口块417可以包括本地存储装置475和选择器471。接口块419可以包括本地存储装置495和选择器491。存储器405可以包括多个配置向量,例如,配置向量451和配置向量453。
在实施例中,当处理器分片400是VC的传输节点时,计算的消息分组或计算的阶段的消息分组可以通过第一接口块(例如,接口块417)进入处理器分片400,经过可编程互连403,并且通过第二接口块(例如,接口块419)离开处理器分片400。在一些其他实施例中,当处理器分片400是VC的终端节点时,计算的消息分组可以通过接口块(例如,接口块417)进入处理器分片400,并且可以存储在本地存储装置475中。在本地存储在本地存储装置475中的消息分组可以由总线463进一步传送,以用于在核心461中执行的计算。
控制器401可以控制可编程互连403、接口块417和接口块419之间的连接,使得消息分组可以通过接口块417、可编程互连403和接口块419。控制器401可以基于配置向量(例如,配置向量451)来控制连接,配置向量可以指示连接可编程互连403、接口块417和接口块419。控制器401可以通过激活选择线425来通过选择器471启用接口块417的连接,或者通过激活选择线435来通过选择器491启用接口块419的连接。此外,控制器401可以通过传出控制线421来启用接口块417的连接,或者通过传出控制线431来启用接口块419的连接。此外,控制器401可以针对接口块417在传入控制线423上检测信号,或者针对接口块419在传入控制线433上检测信号。
控制器401可以管理存储在存储器中的配置向量(例如,配置向量451)的生命周期。在实施例中,配置向量451的生命周期可以包括空闲状态、发布就绪状态、已加载状态、活动状态、已退出状态、非活动状态或其他状态。
图5示出了根据各种实施例的示例配置向量551,其存储在处理器分片500的存储器505中以控制可编程互连与多个接口块之间的连接。处理器分片500可以是图1所示的计算设备100的处理器分片101或任何其他处理器分片的示例,图3所示的处理器分片300的示例,图4所示的处理器400的示例。配置向量551可以是如图4所示的配置向量451的示例,或者是如图3所示的配置向量351的示例。配置向量551可以存储在存储器505中,存储器505可以是图4中的处理器分片400的存储器405或图3中的处理器分片300的存储器305的示例。
在实施例中,配置向量(例如,配置向量551)可以包括用于标识处理器分片500可能处于的VC的第一信息,用于标识VC可能处于的拓扑的第二信息,用于标识配置向量551与其他配置向量(例如,配置向量581)相比的优先级的第三信息,要耦合到进入的相邻处理器分片的第一端口,以及要耦合到离开的相邻处理器分片的第二端口。例如,配置向量551可以包括VC标识565、拓扑标识567、优先级563、第一端口569以及第二端口571。优先级563可以指示配置向量551与其他配置向量相比的重要度。例如,另一配置向量581可以包括优先级583。当优先级563高于优先级583时,处理器分片500的控制器可以越过配置向量581选择配置向量551以控制处理器分片500内的连接。
另外,配置向量551可以包括状态561,其可以指示配置向量551的生命周期的状态。例如,配置向量551可以包括空闲状态、发布就绪状态、已加载状态、活动状态、已退出状态或非活动状态。此外,配置向量551可以包括标志573,其可以包括一些其他状态值,例如,移除状态、停用状态、加载状态或空闲状态。配置向量551中可以包括未示出的其他参数。
图6示出了根据各种实施例的VC段621在两个不同处理器分片(例如,处理器分片601和处理器分片603)之间的示例形成。处理器分片601可以是计算设备100的处理器分片103的示例,处理器分片603可以是计算设备100的处理器分片105的示例,并且VC段621可以是VC段121的示例,如图1所示的。
在实施例中,处理器分片601可以包括存储器612(其包括配置向量614)、可编程互连611和多个接口块(例如,接口块613、接口块615和接口块617)。处理器分片603可以包括存储器632(其包括配置向量634)、可编程互连631和多个接口块(例如,接口块633、接口块635和接口块637)。配置向量614可以指示处理器分片601可以耦合到处理器分片603以形成VC段621。类似地,配置向量634可以指示处理器分片603可以耦合到处理器分片601以形成VC段621。详细地,配置向量614可以指示接口块613与可编程互连611之间的连接。类似地,配置向量634可以指示接口块633与可编程互连631之间的连接。配置向量614和配置向量634还可以指示接口块613与接口块633之间的连接,使得可以形成VC段621。
在实施例中,处理器分片601的接口块613可以通过链路621耦合到处理器分片603的接口块633。链路621可以包括到处理器分片601的传出控制线,其可以是到处理器分片603的传入控制线。此外,链路621可以包括到处理器分片601的传入控制线,其可以是到处理器603的传出控制线。为了在处理器分片601与处理器分片603之间启用链路621,处理器分片601的控制器可以使链路621的传出控制线上的代码生效,以指示配置向量614处于已加载状态。处理器分片601的控制器还可以检测链路621的传入控制线上的信号,以指示由配置向量634确定的相邻处理器分片(例如,处理器分片603)处于已加载状态。之后,可以在处理器分片601与处理器分片603之间启用链路621,以将处于已加载状态的配置向量614和配置向量634激活以变为活动状态。因此,计算的消息分组可以从处理器分片607开始,通过接口块671和接口块615,经过接口块613,通过链路612,到达接口块633。此外,消息分组还可以通过接口块635和接口块651传送到处理器分片605。
图7-8示出了根据各种实施例的两个VC(例如,诸如VC A和VC B之类的VC)之间的示例仲裁处理器。VC A或VC B可以是VC 201、VC 203、VC 205、VC 207、VC 211、VC 213或如图2或图1所示的任何其他VC的示例。
在实施例中,VC A可以包括处理器分片701、处理器分片703、处理器分片702和处理器分片704。VC A可以由处理器分片701内的配置向量711、处理器分片703内的配置向量731、处理器分片702内的配置向量721和处理器分片704内的配置向量741进行控制。
在实施例中,VC B可以包括处理器分片701、处理器分片703、处理器分片705和处理器分片707。VC B可以由处理器分片701内的配置向量713、处理器分片703内的配置向量733、处理器分片705内的配置向量753和处理器分片707内的配置向量773进行控制。
在实施例中,处理器分片701和处理器分片703可以包括在VC A和VC B两者中。存储在处理器分片701中用于VC A的配置向量711可以具有比存储在处理器分片701中用于VCB的配置向量713高的优先级。类似地,存储在处理器分片703中用于VC A的配置向量731可以具有比存储在处理器分片703中用于VC B的配置向量733高的优先级。因此,配置向量711可以在配置向量713之前加载到处理器分片701中,同时配置向量731可以在配置向量733之前加载到处理器分片703中。这种在加载配置向量713之前加载配置向量711的过程可以是VC的仲裁的示例。
如图7所示,当配置向量711、配置向量731、配置向量721、配置向量741全部被加载并被激活时,VC A可以处于活动状态。因此,计算的消息分组可以从处理器分片702开始,经过处理器分片701、处理器分片703,并且可以进一步被传送到处理器分片704。这样的消息分组可以用于计算的第一阶段。在计算的第一阶段结束之后,配置向量711、配置向量731、配置向量721、配置向量741可以改变为已退出状态。
如图8所示,在配置向量711之后,配置向量731、配置向量721、配置向量741全部处于已退出状态,这未在图8中示出,配置向量713、配置向量733、配置向量753和配置向量773可以被加载并被激活,VC B可以处于活动状态。因此,计算的消息分组可以从处理器分片705开始,经过处理器分片701、处理器分片703,并且可以进一步被传送到处理器分片707。这样的消息分组可以用于计算的第二阶段,该第二阶段可以是与计算的第一阶段不同的阶段。
图9示出了根据各种实施例的处理器分片的控制器对可编程互连与多个接口块之间的连接进行控制的示例过程900。在实施例中,过程900可以是由图3所示的控制器301、图4所示的控制器401或包括在图1所示的计算设备100的处理器分片中的任何控制器执行的过程。
过程900可以在交互901处开始。在交互901期间,控制器可以基于配置向量的优先级从多个配置向量中选择处于空闲状态的配置向量。例如,在交互901处,控制器301可以基于配置向量351的优先级从存储器305中选择配置向量351。
在交互903期间,控制器可以基于对处理器分片的可用资源与针对配置向量的资源进行的比较,确定选定的配置向量处于发布就绪状态。
在交互905期间,控制器可以将处于发布就绪状态的配置向量加载到可编程互连上,以将针对配置向量的资源映射到处理器分片的资源,使配置向量进入已加载状态。
在交互907期间,控制器可以通过启用处理器分片与由配置向量确定的相邻处理器分片之间的连接,将处于已加载状态的配置向量激活以变为活动状态。
更详细地,交互907还可以包括多个交互。例如,在交互911期间,控制器可以使传出控制线上的代码生效,以指示配置向量处于已加载状态。在交互913期间,控制器可以检测传入控制线上的信号以指示由配置向量确定的相邻处理器分片处于已加载状态。在交互915期间,控制器可以启用处理器分片与相邻处理器分片之间的连接,以将处于已加载状态的配置向量激活以变为活动状态。
在交互909期间,控制器可以针对配置向量释放处理器分片的资源以将配置向量改变为已退出状态。
图10示出了示例计算设备1000,其可以适合作为实践本公开的选定方面的设备。如所示出的,设备1000可以包括一个或多个处理器1001,每个处理器1001具有一个或多个处理器核心。设备1000可以是如图1所示的计算设备100、如图2所示的计算设备200的示例,并且一个或多个处理器1001可以是如图1所示的处理器分片101、如图2所示的处理器分片201或者如图3所示的处理器分片30的示例。此外,设备1000可以包括:存储器1007,其可以是多种已知的持久存储介质中的任何一种;大容量存储设备1006以及一个或多个输入/输出设备1008。此外,设备1000可以包括通信接口1010。通信接口1010可以是多种已知的通信接口中的任何一种。这些元件可以经由系统总线1012彼此耦合,系统总线1012可以代表一条或多条总线。在多条总线的情况下,这些设备可以通过一个或多个总线桥(未示出)进行桥接。
在实施例中,一个或多个处理器1001可以类似于上面讨论的处理器,并且可以包括控制器、可编程互连(例如,如上面讨论的交叉开关)。出于本申请(包括权利要求)的目的,除非上下文另外明确要求,否则术语“处理器”、“处理器核心”或“处理器分片”可以被认为是同义的。一个或多个处理器1001可以包括任何类型的处理器,例如,中央处理单元(CPU)、微处理器等。一个或多个处理器1001可以实现为具有多核心的集成电路,例如,多核心微处理器。
在实施例中,设备1000可以包括大容量存储设备1006(例如,磁盘、硬盘驱动器、易失性存储器(例如,动态随机存取存储器(DRAM)、压缩盘只读存储器(CD-ROM)、数字通用盘(DVD)等)。通常,系统存储器1007和/或大容量存储设备1006可以是任何类型的暂时和/或持久存储装置,包括但不限于易失性存储器和非易失性存储器,光学、磁性和/或固态大容量存储装置等。易失性存储器可以包括但不限于静态和/或动态随机存取存储器。非易失性存储器可以包括但不限于电可擦除可编程只读存储器、相变存储器、电阻存储器等。
在实施例中,设备1000还可以包括I/O设备1008(例如,显示器(例如,触摸屏显示器)、键盘、光标控件、遥控器、游戏控制器、图像捕获设备等)和通信接口1010(例如,网络接口卡、调制解调器、红外接收器、无线电接收器(例如,蓝牙)等)。
在实施例中,通信接口1010可以包括通信芯片(未示出),其可以被配置为根据全球移动通信系统(GSM)、通用分组无线电服务(GPRS)、通用移动电信系统(UMTS)、高速分组接入(HSPA)、演进型HSPA(E-HSPA)或长期演进(LTE)网络来操作设备1000。通信芯片还可以被配置为根据增强型数据GSM演进(EDGE)、GSM EDGE无线电接入网络(GERAN)、通用陆地无线电接入网络(UTRAN)或演进型UTRAN(E-UTRAN)来操作。通信芯片可以被配置为根据码分多址(CDMA)、时分多址(TDMA)、数字增强无绳电信(DECT)、演进数据优化(EV-DO)及其衍生物,以及被指定为3G、4G、5G及更高版本的任何其他无线协议来操作。在其他实施例中,通信接口1010可以根据其他无线协议来操作。
上面描述的设备1000元件可以经由系统总线1012彼此耦合,系统总线1012可以代表一条或多条总线。在多条总线的情况下,元件可以通过一个或多个总线桥(未示出)进行桥接。这些元件中的每一个可以执行其在本领域中已知的常规功能。特别地,系统存储器1007和大容量存储设备1006可以用于存储用于设备1000的各种部件的操作的编程指令的工作副本和永久副本,包括但不限于设备1000的操作系统和/或一个或多个应用。各种元件可以由一个或多个处理器1001支持的汇编指令或可以编译成这种指令的高级语言来实现。
编程指令的永久副本可以在工厂中或在现场例如通过诸如压缩盘(CD)之类的分发介质(未示出)或通过通信接口1010(从分发服务器(未示出))放置到大容量存储设备1006中。也就是说,可以采用具有代理程序的实现方式的一种或多种分发介质来分发代理并对各种计算设备进行编程。
元件1008、1010、1012的数量、能力和/或容量可以取决于设备1000是用作固定计算设备(例如,机顶盒或台式计算机)还是用作移动计算设备(例如,平板计算设备、膝上型计算机、游戏机或智能电话)而变化。这些设备的构造是已知的,因此将不再进一步描述。
在实施例中,存储器1007可以包括计算逻辑1022,其被配置为实现与设备1000的操作相关联的各种固件和/或软件服务。对于一些实施例,至少一个或多个处理器1001可以与被配置为实践本文描述的实施例的方面的计算逻辑1022封装在一起,以形成系统级封装(SiP)或片上系统(SoC)。
在各种实现方式中,设备1000可以包括数据中心、膝上型计算机、上网本、笔记本、超级本、智能电话、平板计算机、个人数字助理(PDA)、超移动PC、移动电话或数码相机的一个或多个部件。在另外的实现方式中,设备1000可以是处理数据的任何其他电子设备。
此外,本公开可以采取体现在任何有形的或非暂时性的表达介质中的计算机程序产品的形式,该有形的或非暂时性的表达介质具有体现在介质中的计算机可用程序代码。图11示出了可以适用于存储指令的示例计算机可读非暂时性存储介质,该指令响应于装置执行指令而使得装置实践本公开的选定方面。如所示出的,非暂时性计算机可读存储介质1102可以包括多个编程指令1104。编程指令1104可以被配置为响应于执行编程指令而使得设备(例如,设备1000)能够执行例如与如图1所示的处理器分片101、如图2所示的处理器分片201、如图9所示的处理器900相关联的各种操作,或本公开中示出的其他操作。
在替代实施例中,编程指令1104可以替代地设置在多种计算机可读非暂时存储介质1102上。在替代实施例中,编程指令1104可以设置在诸如信号之类的计算机可读暂时性存储介质1102上。可以使用一种或多种计算机可用介质或计算机可读介质的任何组合。计算机可用介质或计算机可读介质可以是例如但不限于电子、磁性、光学、电磁、红外或半导体的系统、装置、设备或传播介质。计算机可读介质的更具体的示例(非穷尽列表)将包括以下各项:具有一条或多条电线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪速存储器)、光纤、便携式压缩盘只读存储器(CD-ROM)、光学存储设备、诸如支持互联网或内联网的介质之类的传输介质或磁性存储设备。注意,计算机可用介质或计算机可读介质甚至可以是纸张或在其上打印程序的另一种合适介质,因为程序可以经由例如对纸张或其他介质进行光学扫描而被电子地捕获,然后编译、解释或以其他方式以合适方式处理(如果需要),然后存储在计算机存储器中。在本文档的上下文中,计算机可用介质或计算机可读介质可以是能够包含、存储、传达、传播或传输程序以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备相结合地使用的任何介质。计算机可用介质可以包括在基带中或者作为载波的一部分的、其中体现有计算机可用程序代码的传播数据信号。计算机可用程序代码可以使用任何适当的介质来传输,包括但不限于无线、有线、光纤电缆、RF等。
用于执行本公开的操作的计算机程序代码可以以一种或多种编程语言的任何组合来编写,编程语言包括面向对象的编程语言(例如,Java、Smalltalk、C++等)以及常规的过程编程语言(例如,“C”编程语言或类似的编程语言)。程序代码可以完全在用户的计算机上、部分在用户的计算机上、作为独立的软件包、部分在用户的计算机上且部分在远程计算机上或者完全在远程计算机或服务器上执行。在后一种场景中,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。
参照根据公开内容的实施例的方法、装置(系统)和计算机程序产品的流程图图示和/或框图来描述本公开。应该理解,流程图图示和/或框图中的每个框以及流程图图示和/或框图中的框的组合可以通过计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以用于产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图的框或多个框中指定的功能/动作的单元。
这些计算机程序指令还可以存储在计算机可读介质中,该计算机可读介质可以指导计算机或其他可编程数据处理装置以特定方式运行,使得存储在计算机可读介质中的指令产生包括实现在流程图和/或框图的框或多个框中指定的功能/动作的指令单元的制品。
计算机程序指令还可以被加载到计算机或其他可编程数据处理装置上,以使得在计算机或其他可编程装置上执行一系列操作步骤以产生计算机实现的过程,使得在计算机或其他可编程装置上执行的指令提供用于实现在流程图和/或框图的框或多个框中指定的功能/动作的过程。
附图中的流程图和框图示出了根据本公开的各种实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。在这方面,流程图或框图中的每个框可以表示包括用于实现指定的(多个)逻辑功能的一个或多个可执行指令的模块、段或代码部分。还应该注意,在一些替代实现方式中,框中指出的功能可以不按照附图中指出的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者框有时可以以相反的顺序执行。还应该注意,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作的、基于专用硬件的系统或专用硬件和计算机指令的组合来实现。
实施例可以实现为计算机进程、计算系统或者诸如计算机可读介质的计算机程序产品之类的制品。计算机程序产品可以是计算机系统可读的并且编码有用于执行计算机进程的计算机程序指令的计算机存储介质。
所附权利要求书中的所有单元或步骤加功能元素的对应结构、材料、动作和等同物旨在包括用于与特别要求保护的其他要求保护的元素相结合地执行功能的任何结构、材料或动作。对本公开的描述出于说明和描述的目的呈现,而并非旨在穷尽性的或限于以所公开的形式的公开内容。在不脱离公开内容的范围和精神的情况下进行许多修改和变化对于本领域普通技术人员将是显而易见的。选择并描述实施例以便于最好地解释公开内容的原理和实际应用,并且使本领域其他普通技术人员能够理解针对具有各种修改的实施例的公开内容适于设想的特定用途。
因此,已经描述了本公开的各种示例实施例,包括但不限于:
示例1可以包括一种管芯上的处理器分片,其包括:多个接口块;可编程互连,其耦合到多个接口块;存储器,其用于存储表示包括处理器分片的虚拟电路(VC)段的多个配置向量;以及控制器,其耦合到多个接口块、存储器以及可编程互连,以基于存储在存储器中的多个配置向量来控制可编程互连与多个接口块之间的连接。
示例2可以包括示例1和/或本文的一些其他示例的处理器分片,其中,控制器用于:基于配置向量的优先级数,从多个配置向量中选择处于空闲状态的配置向量;基于对处理器分片的可用资源与针对配置向量的资源的比较,确定选定的配置向量处于发布就绪状态;将处于发布就绪状态的配置向量加载到可编程互连上,以将针对配置向量的资源映射到处理器分片的资源,使配置向量进入已加载状态;通过启用处理器分片与由配置向量确定的相邻处理器分片之间的连接,将处于已加载状态的配置向量激活以变为活动状态;以及针对配置向量释放处理器分片的资源,以将配置向量改变为已退出状态。
示例3可以包括示例2和/或本文的一些其他示例的处理器分片,其中,为了将处于已加载状态的配置向量激活以变为活动状态,控制器用于:使传出控制线上的代码生效,以指示配置向量处于已加载状态;检测传入控制线上的信号,以指示由配置向量确定的相邻处理器分片处于已加载状态;启用处理器分片与相邻处理器分片之间的连接,以将处于已加载状态的配置向量激活以变为活动状态。
示例4可以包括示例1-3中任一项和/或本文的一些其他示例的处理器分片,其中,处理器分片在程序的计算的第一阶段期间被包括在由存储在存储器中的第一配置向量确定的第一VC中,并且在程序的计算的第二阶段期间被包括在由存储在存储器中的第二配置向量确定的第二VC中。
示例5可以包括示例1-3中任一项和/或本文的一些其他示例的处理器分片,其中,处理器分片耦合到放置在东(E)方向、西(W)方向、东北(NE)方向、西北(NW)方向、东南(SE)方向以及西南(SW)方向的六个相邻处理器分片。
示例6可以包括示例1-3中任一项和/或本文的一些其他示例的处理器分片,其中,处理器分片是VC的传输节点,消息分组通过多个接口块中的第一接口块进入处理器分片,经过可编程互连,并且通过多个接口块中的第二接口块离开处理器分片。
示例7可以包括示例1-3中任一项和/或本文的一些其他示例的处理器分片,其中,处理器分片是VC的终端节点,并且消息分组通过多个接口块中的接口块进入处理器分片并且被存储在接口块的本地存储装置中。
示例8可以包括示例1-3中任一项和/或本文的一些其他示例的处理器分片,其中,多个配置向量中的配置向量与VC段相关,VC段包括耦合到第二处理器分片的处理器分片,并且VC段是无缓冲通道,消息分组通过该无缓冲通道在处理器分片与第二处理器分片之间传递。
示例9可以包括示例1-3中任一项和/或本文的一些其他示例的处理器分片,其中,多个配置向量中的配置向量包括:VC的标识,拓扑的标识,配置向量的优先级数,处理器分片的要耦合到进入的相邻处理器分片的第一端口,以及处理器分片的要耦合到离开的相邻处理器分片的第二端口。
示例10可以包括示例13中任一项和/或本文的一些其他示例的处理器分片,其中,多个配置向量中的第一配置向量包括第一VC的标识和第一拓扑的标识,多个配置向量中的第二配置向量包括第二VC的标识和第二拓扑的标识,并且其中,第一拓扑对应于程序的计算的第一阶段,第二拓扑对应于程序的计算的第二阶段,计算的第二阶段与计算的第一阶段不同,并且第二拓扑与第一拓扑不同。
示例11可以包括一种计算设备,其包括:管芯上的多个处理器分片;虚拟电路(VC),其包括多个处理器分片中的数个处理器分片,其中,消息分组在单个时钟周期中遍历VC的数个处理器分片;第一拓扑,其包括第一数量的VC,其中,第一拓扑对应于程序的计算的第一阶段,并且第一拓扑的第一VC的第一处理器分片包括第一配置向量;第二拓扑,其包括第二数量的VC,其中,第二拓扑对应于程序的计算的第二阶段,第二拓扑的第二VC的第一处理器分片包括第二配置向量,计算的第二阶段与计算的第一阶段不同,并且第二拓扑与第一拓扑不同;并且其中,被包括在第一拓扑的第一VC的第一处理器分片中的第一配置向量在程序的计算的第一阶段期间处于活动状态,第一配置向量在程序的计算的第二阶段期间处于非活动状态,被包括在第二拓扑的第二VC的第一处理器分片中的第二配置向量在程序的计算的第二阶段期间处于活动状态,并且第二配置向量在程序的计算的第一阶段期间处于非活动状态。
示例12可以包括示例11和/或本文的一些其他示例的计算设备,其中,第一拓扑的第一VC的第一处理器分片是第一VC的传输节点,第一处理器分片包括:第一接口块;第二接口块;以及可编程互连,其耦合到第一接口块和第二接口块,并且其中,计算的第一阶段的消息分组通过第一接口块进入第一处理器分片,经过可编程互连,并且通过第二接口块离开第一处理器分片。
示例13可以包括示例11和/或本文的一些其他示例的计算设备,其中,第一拓扑的第一VC的第一处理器分片是第一VC的终端节点,第一处理器分片包括:接口块,其中,接口块包括本地存储装置,并且其中,计算的第一阶段的消息分组通过接口块进入第一处理器分片并且被存储在接口块的本地存储装置中。
示例14可以包括示例11-13中任一项和/或本文的一些其他示例的计算设备,其中,第一VC的第一处理器分片的第一配置向量与VC段相关,VC段包括耦合到第一VC的第二处理器分片的、第一VC的第一处理器分片,并且VC段是无缓冲通道,程序的计算的第一阶段的消息分组通过该无缓冲通道在第一VC的第一处理器分片与第一VC的第二处理器分片之间传递。
示例15可以包括示例11-13中任一项和/或本文的一些其他示例的计算设备,其中,第一拓扑的第一VC的第一处理器分片的第一配置向量包括:用于标识第一VC的第一信息,用于标识第一拓扑的第二信息,用于标识第一配置向量的优先级的第三信息,第一处理器分片的要耦合到进入的相邻处理器分片的第一端口,以及第一处理器分片的要耦合到离开的相邻处理器分片的第二端口。
示例16可以包括示例11-13中任一项和/或本文的一些其他示例的计算设备,其中,多个处理器分片中的处理器分片包括:存储器,其用于存储表示包括处理器分片的多个VC段的多个配置向量;以及控制器,其耦合到存储器,以管理存储在存储器中的多个配置向量中的配置向量的生命周期。
示例17可以包括示例11-13中任一项和/或本文的一些其他示例的计算设备,其中,配置向量的生命周期包括空闲状态、发布就绪状态、已加载状态、活动状态、已退出状态或非活动状态。
示例18可以包括示例11和/或本文的一些其他示例的计算设备,其中,多个处理器分片中的处理器分片包括:多个接口块;可编程互连,其耦合到多个接口块;存储器,其用于存储表示包括处理器分片的VC段的多个配置向量;以及控制器,其耦合到多个接口块、存储器以及可编程互连,以基于存储在存储器中的多个配置向量来控制可编程互连与多个接口块之间的连接。
示例19可以包括示例18和/或本文的一些其他示例的计算设备,其中,处理器分片包括六个接口块,可编程互连是多路交叉开关,并且处理器分片耦合到放置在东(E)方向、西(W)方向、东北(NE)方向、西北(NW)方向、东南(SE)方向以及西南(SW)方向的六个相邻处理器分片。
示例20可以包括示例18和/或本文的一些其他示例的计算设备,其中,控制器用于:基于配置向量的优先级数,从多个配置向量中选择处于空闲状态的配置向量;基于对处理器分片的可用资源与针对配置向量的资源的比较,确定选定的配置向量处于发布就绪状态;将处于发布就绪状态的配置向量加载到可编程互连上,以将针对配置向量的资源映射到处理器分片的资源,使配置向量进入已加载状态;通过启用处理器分片与由配置向量确定的相邻处理器分片之间的连接,将处于已加载状态的配置向量激活以变为活动状态;以及针对配置向量释放处理器分片的资源,以将配置向量改变为已退出状态。
示例21可以包括一种计算设备,包括:虚拟电路(VC),其包括管芯上的多个处理器分片,其中,消息分组在单个时钟周期中遍历VC的多个处理器分片,并且多个处理器分片中的处理器分片包括:多个接口块;可编程互连,其耦合到多个接口块;存储器,其用于存储表示包括处理器分片的VC段的多个配置向量;以及控制器,其耦合到多个接口块、存储器以及可编程互连,以基于存储在存储器中的多个配置向量来控制可编程互连与多个接口块之间的连接。
示例22可以包括示例21和/或本文的一些其他示例的计算设备,其中,控制器用于:基于配置向量的优先级数,从多个配置向量中选择处于空闲状态的配置向量;基于对处理器分片的可用资源与针对配置向量的资源的比较,确定选定的配置向量处于发布就绪状态;将处于发布就绪状态的配置向量加载到可编程互连上,以将针对配置向量的资源映射到处理器分片的资源,使配置向量进入已加载状态;通过启用处理器分片与由配置向量确定的相邻处理器分片之间的连接,将处于已加载状态的配置向量激活以变为活动状态;以及针对配置向量释放处理器分片的资源,以将配置向量改变为已退出状态。
示例23可以包括示例21-22中任一项和/或本文的一些其他示例的计算设备,其中,多个配置向量中的配置向量与VC段相关,VC段包括耦合到第二处理器分片的处理器分片,并且VC段是无缓冲通道,消息分组通过该无缓冲通道在处理器分片与第二处理器分片之间传递。
示例24可以包括示例21-22中任一项和/或本文的一些其他示例的计算设备,其中,多个配置向量中的第一配置向量包括第一VC的标识和第一拓扑的标识,多个配置向量中的第二配置向量包括第二VC的标识和第二拓扑的标识,并且其中,第一拓扑对应于程序的计算的第一阶段,第二拓扑对应于程序的计算的第二阶段,计算的第二阶段与计算的第一阶段不同,并且第二拓扑与第一拓扑不同。
示例25可以包括示例21-22中任一项和/或本文的一些其他示例的计算设备,其中,处理器分片耦合到放置在东(E)方向、西(W)方向、东北(NE)方向、西北(NW)方向、东南(SE)方向以及西南(SW)方向的六个相邻处理器分片。
示例26可以包括一种装置,其包括:节点,该节点包括6路(6x)六边形网格站点(mesh stop)。
示例27可以包括示例26和/或本文的一些其他示例的装置,其中,6x六边形网格站点包括6x交叉开关。
示例28可以包括示例27和/或本文的一些其他示例的装置,其中,交叉开关用于支持多达50毫米(mm)的电路切换连接。
示例29可以包括示例26和/或本文的一些其他示例的装置,其中,多达3个虚拟电路(VC)将传输通过节点。
示例30可以包括示例29的装置,其中,3个VC中的VC是直接的、无缓冲信号路径,其延伸通过该装置的多个网格站点。
示例31可以包括一种方法,其包括:由状态机将发布就绪配置向量映射到交叉开关内部连接上;由状态机监听控制线;由状态机读取来自相邻核心的标识符(ID)数据;以及由状态机监视终止信号和/或释放信号。
示例32可以包括示例31和/或本文的一些其他示例的方法,其中,外部连接被禁用。
示例33可以包括示例31和/或本文的一些其他示例的方法,其中,该方法包括:由状态机在来自相邻核心的ID数据与本地ID匹配时启用外部复用器(MUX)驱动器。
示例34可以包括示例31和/或本文的一些其他示例的方法,其中,该方法还包括:由状态机在接收到终止信号和/或释放信号后释放MUX资源。
示例35可以包括一种装置,其包括用于执行在示例1-34中的任一项中描述或关于示例1-34中的任一项描述的方法或者本文描述的任何其他方法或过程的一个或多个元素的单元。
示例36可以包括一种或多种非暂时性计算机可读介质,其包括指令,该指令在由电子设备的一个或多个处理器执行时,使电子设备执行在示例1-34中的任一项中描述或关于示例1-34中的任一项描述的方法或者本文描述的任何其他方法或过程的一个或多个元素。
示例37可以包括一种装置,其包括逻辑、模块和/或电路,以执行在示例1-34中的任一项中描述或关于示例1-34中的任一项描述的方法或者本文描述的任何其他方法或过程的一个或多个元素。
示例38可以包括如在示例1-34中的任一项中描述或关于示例1-34中的任一项描述的方法、技术或过程,或者其部分。
示例39可以包括一种装置,其包括:一个或多个处理器和一种或多种计算机可读介质,该计算机可读介质包括指令,该指令在由一个或多个处理器执行时,使一个或多个处理器执行如在示例1-34中的任一项中描述或关于示例1-34中的任一项描述的方法、技术或过程,或者其部分。
示例40可以包括如本文示出和描述的在无线网络中进行通信的方法。
示例41可以包括用于提供如本文示出和描述的无线通信的系统。
示例42可以包括用于提供如本文示出和描述的无线通信的设备。
各种实施例可以包括上面描述的实施例的任何合适组合,包括以结合形式(和)在上面描述的实施例的替代(或)实施例(例如,“和”可以是“和/或”)。此外,一些实施例可以包括其上存储有指令的一种或多种制品(例如,非暂时性计算机可读介质),该指令在被执行时导致上面描述的实施例中的任一个的动作。此外,一些实施例可以包括具有用于执行上面描述的实施例的各种操作的任何合适单元的装置或系统。
对所示实现方式的以上描述(包括摘要中描述的内容)并非旨在是穷举性的或将本公开的实施例限于所公开的精确形式。虽然本文中出于说明性目的描述了特定实现方式和示例,但是如相关领域技术人员将认识到的,在本公开的范围内的各种等同修改是可能的。
根据以上具体实施方式,可以对本公开的实施例进行这些修改。所附权利要求书中使用的术语不应被解释为将本公开的各种实施例限于说明书和权利要求书中公开的特定实现方式。而是,范围完全由应根据权利要求解释的既定原则来解读的所附权利要求书确定。
虽然为了描述的目的在本文中说明和描述了某些实施例,但是本申请旨在覆盖本文讨论的实施例的任何改编或变化。因此,显然旨在使本文描述的实施例仅由权利要求书限制。

Claims (12)

1.一种集成电路(IC)管芯,包括:
处理器分片的二维阵列,其用于执行程序的多个阶段;
多个链路,其用于在多个拓扑中互连所述处理器分片,所述多个拓扑中的每个拓扑包括通过所述链路的对应子集互连的所述处理器分片的对应子集,以共同地执行所述程序的多个阶段中的对应阶段;
所述处理器分片的二维阵列中的每个处理器分片具有:
多个接口块,每个接口块耦合到所述多个链路中的一个或多个链路;
可编程互连,其耦合到所述多个接口块,所述可编程互连包括用于被配置为连接所述多个接口块中的接口块的子集的交叉开关;
电路,其用于基于与所述程序的多个阶段中的当前阶段相对应的配置信息来控制所述可编程互连,其中,根据所述程序的当前阶段,所述交叉开关根据所述配置信息将所述多个接口块中的第一接口块耦合到所述多个接口块中的第二接口块,所述第一接口块接收来自所述多个链路中的对应链路的消息,并且将所述消息通过所述交叉开关传送到所述第二接口块;以及
本地存储装置,其用于存储通过所述交叉开关传送的所述消息。
2.根据权利要求1所述的IC管芯,进一步包括:耦合到所述多个接口的计算单元,所述计算单元用于执行与所述程序的当前阶段相关联的共同运算的至少一部分。
3.根据权利要求2所述的IC管芯,其中,所述共同运算包括点积运算。
4.根据权利要求2所述的IC管芯,其中,所述共同运算用于产生结果值。
5.根据权利要求1所述的IC管芯,其中,所述交叉开关用于支持电路切换互连,以连接所述多个接口块中的接口块的子集。
6.根据权利要求1所述的IC管芯,其中,所述配置信息包括配置向量,所述配置向量用于指示在所述程序的对应阶段期间通过所述多个接口中的对应接口与其他处理器分片的互连。
7.根据权利要求6所述的IC管芯,其中,所述控制器用于将由所述配置向量指示的资源映射到所述处理器分片的资源。
8.根据权利要求7所示的IC管芯,其中,所述控制器用于在确定一个或多个其他处理器分片能够执行所述共同运算后,执行由所述配置向量指示的运算。
9.根据权利要求8所述的IC管芯,其中,所述控制器用于接收传入控制线上的信号,以确定所述一个或多个其他处理器分片能够执行所述共同运算。
10.一种计算设备,包括:
管芯上的多个处理器分片,其中,所述多个处理器分片中的一个处理器分片包括:
存储器,其用于存储表示包括所述处理器分片的多个虚拟电路VC段的多个配置向量;以及
控制器,其耦合到所述存储器,用于管理存储在所述存储器中的所述多个配置向量中的配置向量的生命周期。
11.根据权利要求10所述的计算设备,其中,所述配置向量的生命周期包括空闲状态、发布就绪状态、已加载状态、活动状态、已退出状态或非活动状态。
12.根据权利要求10所述的计算设备,其中,所述控制器用于:
基于配置向量的优先级数,从所述多个配置向量中选择处于空闲状态的所述配置向量;
基于对所述处理器分片的可用资源与针对所述配置向量的资源的比较,确定选定的配置向量处于发布就绪状态;
将处于所述发布就绪状态的所述配置向量加载到可编程互连上,以将针对所述配置向量的资源映射到所述处理器分片的资源,使所述配置向量进入已加载状态;
通过启用所述处理器分片与由所述配置向量确定的相邻处理器分片之间的连接,将处于所述已加载状态的所述配置向量激活以变为活动状态;以及
针对所述配置向量释放所述处理器分片的资源,以将所述配置向量改变为已退出状态。
CN202311295570.3A 2016-10-26 2017-10-24 可切换拓扑机器 Pending CN117194313A (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201662413160P 2016-10-26 2016-10-26
US62/413,160 2016-10-26
US15/637,581 US10891254B2 (en) 2016-10-26 2017-06-29 Switchable topology processor tile and computing machine
US15/637,581 2017-06-29
PCT/US2017/058011 WO2018136123A2 (en) 2016-10-26 2017-10-24 Switchable topology machine
CN201780059323.XA CN109791534B (zh) 2016-10-26 2017-10-24 可切换拓扑机器

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201780059323.XA Division CN109791534B (zh) 2016-10-26 2017-10-24 可切换拓扑机器

Publications (1)

Publication Number Publication Date
CN117194313A true CN117194313A (zh) 2023-12-08

Family

ID=61969686

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202311295570.3A Pending CN117194313A (zh) 2016-10-26 2017-10-24 可切换拓扑机器
CN201780059323.XA Active CN109791534B (zh) 2016-10-26 2017-10-24 可切换拓扑机器

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201780059323.XA Active CN109791534B (zh) 2016-10-26 2017-10-24 可切换拓扑机器

Country Status (4)

Country Link
US (1) US10891254B2 (zh)
CN (2) CN117194313A (zh)
DE (1) DE112017005414T5 (zh)
WO (1) WO2018136123A2 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11269805B2 (en) 2018-05-15 2022-03-08 Intel Corporation Signal pathways in multi-tile processors
US10489341B1 (en) * 2018-06-25 2019-11-26 Quanta Computer Inc. Flexible interconnect port connection

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2129882A1 (en) * 1993-08-12 1995-02-13 Soheil Shams Dynamically reconfigurable interprocessor communication network for simd multiprocessors and apparatus implementing same
US5930525A (en) * 1997-04-30 1999-07-27 Adaptec, Inc. Method and apparatus for network interface fetching initial and data burst blocks and segmenting blocks and scheduling blocks compatible for transmission over multiple virtual circuits
US7581081B2 (en) 2003-03-31 2009-08-25 Stretch, Inc. Systems and methods for software extensible multi-processing
US7502333B2 (en) * 2004-03-23 2009-03-10 Hewlett-Packard Development Company, L.P. Pre-configured topology with connection management
US8155113B1 (en) * 2004-12-13 2012-04-10 Massachusetts Institute Of Technology Processing data in a parallel processing environment
US8621458B2 (en) * 2004-12-21 2013-12-31 Microsoft Corporation Systems and methods for exposing processor topology for virtual machines
US7814242B1 (en) 2005-03-25 2010-10-12 Tilera Corporation Managing data flows in a parallel processing environment
US7774579B1 (en) * 2006-04-14 2010-08-10 Tilera Corporation Protection in a parallel processing environment using access information associated with each switch to prevent data from being forwarded outside a plurality of tiles
US8265070B2 (en) * 2008-12-15 2012-09-11 Oracle America, Inc. System and method for implementing a multistage network using a two-dimensional array of tiles
GB201001621D0 (en) 2010-02-01 2010-03-17 Univ Catholique Louvain A tile-based processor architecture model for high efficiency embedded homogenous multicore platforms
US9276838B2 (en) * 2012-10-05 2016-03-01 Futurewei Technologies, Inc. Software defined network virtualization utilizing service specific topology abstraction and interface
US9294419B2 (en) 2013-06-26 2016-03-22 Intel Corporation Scalable multi-layer 2D-mesh routers
US9076017B2 (en) * 2013-11-27 2015-07-07 Cisco Technology, Inc. Hardware virtualization module for exclusive controlled access to CPU
CN106170741B (zh) * 2014-05-19 2020-04-28 弗莱克斯-罗技克斯技术公司 集成电路
US9720827B2 (en) 2014-11-14 2017-08-01 Intel Corporation Providing multiple memory modes for a processor including internal memory
US10700968B2 (en) * 2016-10-19 2020-06-30 Rex Computing, Inc. Optimized function assignment in a multi-core processor

Also Published As

Publication number Publication date
DE112017005414T5 (de) 2019-07-18
CN109791534A (zh) 2019-05-21
WO2018136123A3 (en) 2019-01-03
WO2018136123A2 (en) 2018-07-26
CN109791534B (zh) 2023-10-27
US20180113838A1 (en) 2018-04-26
US10891254B2 (en) 2021-01-12

Similar Documents

Publication Publication Date Title
US11960566B1 (en) Reducing computations for data including padding
US9582463B2 (en) Heterogeneous input/output (I/O) using remote direct memory access (RDMA) and active message
EP3803588A1 (en) Embedded scheduling of hardware resources for hardware acceleration
US20170153927A1 (en) System and method for runtime grouping of processing elements in streaming applications
CN106776395B (zh) 一种共享集群的任务调度方法及装置
WO2012166399A1 (en) Distributed computing framework
CN109791534B (zh) 可切换拓扑机器
JP2015132887A (ja) 要求分散プログラム、要求分散方法および情報処理装置
US9753769B2 (en) Apparatus and method for sharing function logic between functional units, and reconfigurable processor thereof
JP6026677B2 (ja) ソフトウェア・モジュールの並行動作
CN113419841B (zh) 消息调度方法、装置、电子设备和计算机可读介质
CN108292236B (zh) 一种信息处理方法及装置
US11294687B2 (en) Data bus with multi-input pipeline
CN110770712B (zh) 运算方法、芯片、系统、可读存储介质及计算机程序产品
CN113821174B (zh) 存储处理方法、装置、网卡设备及存储介质
US10769090B2 (en) Information processing apparatus, control method of information processing, and non-transitory computer-readable storage medium for storing program
CN114327854A (zh) 利用协程处理业务请求的方法及相关设备
CN114651237A (zh) 数据处理方法、装置、电子设备及计算机可读存储介质
CN113791908B (zh) 服务运行方法、装置和电子设备
CN111381945B (zh) 任务迁移方法及电子设备
CN117873756B (zh) 内核中断的处理方法、装置、设备、介质及异构加速设备
EP2998864B1 (en) Method, device and system for deciding on a distribution path of a task
US20240045711A1 (en) Preempting a quantum program in a quantum computing device
CN115686748B (zh) 虚拟化管理下的服务请求响应方法、装置、设备及介质
US20230273835A1 (en) Computer System and Arithmetic Processing Method

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination