CN109597459A - 用于空间阵列中的特权配置的处理器和方法 - Google Patents

用于空间阵列中的特权配置的处理器和方法 Download PDF

Info

Publication number
CN109597459A
CN109597459A CN201811002156.8A CN201811002156A CN109597459A CN 109597459 A CN109597459 A CN 109597459A CN 201811002156 A CN201811002156 A CN 201811002156A CN 109597459 A CN109597459 A CN 109597459A
Authority
CN
China
Prior art keywords
subset
processing element
multiple processing
different
configuration
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
CN201811002156.8A
Other languages
English (en)
Inventor
K·E·弗莱明
小西蒙·C·史迪力
K·D·格洛索普
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 CN109597459A publication Critical patent/CN109597459A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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/3017Runtime instruction translation, e.g. macros
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/14Time supervision arrangements, e.g. real time clock
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

描述了关于空间阵列中的特权配置的方法和装置。在一个实施例中,处理器包括:处理元件;处理元件之间的互连网络;以及配置控制器,耦合至多个处理元件的第一子集和不同的第二子集,该第一子集具有耦合至不同的第二子集的输入的输出,其中,该配置控制器用于将多个处理元件的第一子集与不同的第二子集之间的互连网络配置为:当特权位被设置为第一值时,不允许第一子集与不同的第二子集之间的互连网络上的通信;以及当特权位被设置为第二值时,允许多个处理元件的第一子集与不同的第二子集之间的互连网络上的通信。

Description

用于空间阵列中的特权配置的处理器和方法
技术领域
本公开总体上关于电子学,更具体地,本公开的实施例关于用于空间阵列中的特权配置的配置控制器。
背景技术
处理器或处理器集合执行来自指令集(例如,指令集架构(ISA)) 的指令。指令集是涉及编程的计算机架构的一部分,并且一般包括原生数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处置以及外部输入和输出(I/O)。应当注意,术语“指令”在本文中一般是指宏指令(例如,提供给处理器供执行的指令),或者指微指令(例如,由处理器的解码器解码宏指令所产生的指令)。
附图说明
在所附附图中以示例方式而非限制方式图示本公开,在附图中,类似的附图标记指示类似的要素,其中:
图1图示根据本公开的实施例的加速器片。
图2图示根据本公开的实施例的耦合至存储器的硬件处理器。
图3图示根据本公开的实施例的包括加速器的硬件处理器片。
图4图示根据本公开的实施例的具有多个处理元件的加速器的运行中(in-flight)配置。
图5A图示根据本公开的实施例的可配置数据路径网络。
图5B图示根据本公开的实施例的可配置流控制路径网络。
图6图示根据本公开的实施例的流程图。
图7图示根据本公开的实施例的处理器的处理元件的空间阵列中的上下文切换。
图8A-图8D图示根据本公开的实施例的用于处理元件的空间阵列的上下文切换的运行中(in-flight)配置。
图9A-图9J图示根据本公开的实施例的对配置成用于执行数据流图的处理元件的空间阵列的上下文的分阶段提取。
图10A图示根据本公开的实施例的所提取的状态。
图10B图示根据本公开的实施例的在提取的开始时的状态。
图11图示根据本公开的实施例的用于(例如,配置)控制器的状态机。
图12A图示根据本公开的实施例的对用于处理元件的空间阵列的上下文的提取。
图12B图示根据本公开的实施例的对用于处理元件的空间阵列的上下文的提取。
图13图示根据本公开的实施例的对用于处理元件的空间阵列的上下文的分阶段提取,该处理元件的空间阵列包括其间的(例如,夹层(mezzanine) 或全局)网络。
图14图示根据本公开的实施例的对用于处理元件的空间阵列的上下文的分阶段提取,该分阶段提取包括存储器访问。
图15A图示根据本公开的实施例的对用于处理元件的空间阵列的上下文的提取。
图15B图示根据本公开的实施例的对用于处理元件的空间阵列的上下文的提取。
图16图示根据本公开的实施例的流程图。
图17图示根据本公开的实施例的流程图。
图18A图示根据本公开的实施例的程序源。
图18B图示根据本公开的实施例的针对图18A的程序源的数据流图。
图18C图示根据本公开的实施例的加速器,该加速器具有配置成用于执行图18B的数据流图的多个处理元件。
图19图示根据本公开的实施例的数据流图的示例执行。
图20图示根据本公开的实施例的程序源。
图21图示根据本公开的实施例的加速器片,该加速器片包括处理元件的阵列。
图22A图示根据本公开的实施例的可配置数据路径网络。
图22B图示根据本公开的实施例的可配置流控制路径网络。
图23图示根据本公开的实施例的包括加速器的硬件处理器片。
图24图示根据本公开的实施例的处理元件。
图25图示根据本公开的实施例的请求地址文件(RAF)电路。
图26图示根据本公开的实施例的耦合在多个加速器片与多个高速缓存区块之间的多个请求地址文件(RAF)电路。
图27图示根据本公开的实施例的分区为三个区域(结果区域、三个潜在的进位区域和门控区域)的浮点乘法器。
图28图示根据本公开的实施例的具有多个处理元件的加速器的运行中配置。
图29图示根据本公开的实施例的运行中流水线式提取的快照。
图30图示根据本公开的实施例的用于加速器的编译工具链。
图31图示根据本公开的实施例的用于加速器的编译器。
图32A图示根据本公开的实施例的序列化汇编代码。
图32B图示根据本公开的实施例的针对图32A的序列化汇编代码的数据流汇编代码。
图32C图示根据本公开的实施例的针对加速器的图32B的数据流汇编代码的数据流图。
图33A图示根据本公开的实施例的C源代码。
图33B图示根据本公开的实施例的针对图33A的C源代码的数据流汇编代码。
图33C图示根据本公开的实施例的针对加速器的图33B的数据流汇编代码的数据流图。
图34A图示根据本公开的实施例的C源代码。
图34B图示根据本公开的实施例的针对图34A的C源代码的数据流汇编代码。
图34C图示根据本公开的实施例的针对加速器的图34B的数据流汇编代码的数据流图。
图35A图示根据本公开的实施例的流程图。
图35B图示根据本公开的实施例的流程图。
图36图示根据本公开的实施例的吞吐量相对于每个操作的能量的图表。
图37图示根据本公开的实施例的加速器片,该加速器片包括处理元件的阵列和本地配置控制器。
图38A-图38C图示根据本公开的实施例的配置数据路径网络的本地配置控制器。
图39图示根据本公开的实施例的配置控制器。
图40图示根据本公开的实施例的加速器片,该加速器片包括处理元件的阵列、配置高速缓存和本地配置控制器。
图41图示根据本公开的实施例的加速器片,该加速器片包括处理元件的阵列以及具有重配置电路的配置和异常处置控制器。
图42图示根据本公开的实施例的重配置电路。
图43图示根据本公开的实施例的加速器片,该加速器片包括处理元件的阵列以及具有重配置电路的配置和异常处置控制器。
图44图示根据本公开的实施例的加速器片,该加速器片包括处理元件的阵列以及耦合至片级异常聚合器的夹层异常聚合器。
图45图示根据本公开的实施例的具有异常生成器的处理元件。
图46图示根据本公开的实施例的加速器片,该加速器片包括处理元件的阵列和本地提取控制器。
图47A-图47C图示根据本公开的实施例的配置数据路径网络的本地提取控制器。
图48示出根据本公开的实施例的提取控制器。
图49示出根据本公开的实施例的流程图。
图50示出根据本公开的实施例的流程图。
图51A是图示根据本公开的实施例的通用向量友好指令格式及其A 类指令模板的框图。
图51B是图示根据本公开的实施例的通用向量友好指令格式及其B 类指令模板的框图。
图52A是图示根据本公开的实施例的用于图51A和图51B中的通用向量友好指令格式的字段的框图。
图52B是图示根据本公开的一个实施例的构成完整操作码字段的图52A中的专用向量友好指令格式的字段的框图。
图52C是图示根据本公开的一个实施例的构成寄存器索引字段的图52A中的专用向量友好指令格式的字段的框图。
图52D是图示根据本公开的一个实施例的构成扩充操作字段5150 的图52A中的专用向量友好指令格式的字段的框图。
图53是根据本公开的一个实施例的寄存器架构的框图。
图54A是图示根据本公开的实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线两者的框图。
图54B是图示根据本公开的实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核两者的框图。
图55A是根据本公开的实施例的单个处理器核以及其到管芯上互连网络的连接以及它的第2级(L2)高速缓存的本地子集的框图。
图55B是根据本公开的实施例的图55A中的处理器核的一部分的展开图。
图56是根据本公开的实施例的可具有多于一个的核、可具有集成存储器控制器、并且可具有集成图形器件的处理器的框图。
图57是根据本公开的一个实施例的系统的框图。
图58是根据本公开的实施例的更具体的示例性系统的框图。
图59所示的是根据本公开的实施例的第二更具体的示例性系统的框图。
图60示出的是根据本公开的实施例的芯片上系统(SoC)的框图。
图61是根据本公开的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
在以下描述中,陈述了多个具体细节。然而,应当理解,可不通过这些具体细节来实施本公开的实施例。在其他实例中,未详细示出公知的电路、结构以及技术,以免模糊对本描述的理解。
说明书中对“一个实施例”、“实施例”、“示例实施例”等等的引用表明所描述的实施例可以包括特定的特征、结构或特性,但是每个实施例不一定都包括该特定的特征、结构或特性。此外,此类短语不一定是指同一个实施例。此外,当结合实施例描述特定的特征、结构或特性时,认为结合无论是否被明确描述的其他实施例而影响此类特征、结构或特性是在本领域技术人员的知识范围之内的。
(例如,具有一个或多个核的)处理器可执行指令(例如,指令线程) 以对数据操作,从而例如执行算术、逻辑或其他功能。例如,软件可请求操作,并且硬件处理器(例如,该硬件处理器的一个或多个核)可响应于该请求而执行该操作。操作的一个非限制性示例是输入多个向量元素并输出具有经混合的多个元素的向量的混合操作。在某些实施例中,多个操作利用对单条指令的执行来完成。
例如由美国能源部定义的百亿亿次级性能可要求系统级浮点性能在给定的(例如,20MW)功率预算内超过每秒1018次浮点操作(exaFLOP) 或更多。本文中的某些实施例涉及针对例如处理器的高性能计算(HPC)的处理元件的空间阵列(例如,可配置空间加速器(CSA))。处理元件的空间阵列(例如,CSA)的本文中的某些实施例针对数据流图(或多个数据流图)的直接执行以实现远超常规路线图架构的计算密集但高能效的空间微架构。
空间架构的某些实施例(例如,本文中公开的空间阵列)是用于加速用户应用的高能效且高性能的方法。在某些实施例中,空间阵列(例如,通过(例如,电路交换型)(例如,互连)网络耦合在一起的多个处理元件)用于加速应用,以便例如(例如,比处理器的核更快地)执行单个流程序的某个区域。在某些实施例中,空间架构的有效性的度量是(例如,将被加速的)区域可被加速到该空间架构中的速度,例如,加载该区域花的时间越长,该区域就越大,以便分摊加载该程序的成本。相反,在配置时间为短的情况下,则可加速较小的程序区域,例如,扩大空间架构(例如,加速器)的适用性。
本文中的某些实施例提供用于提供空间阵列(例如,空间结构)中的特权配置的硬件和技术。
本文中的某些实施例提供用于使空间阵列(例如,空间结构)中的配置流水线化的硬件和技术。本文中的某些实施例利用空间阵列(例如,可配置空间阵列(CSA))的(例如,区域性的)控制(例如,配置控制器)和(例如,低级别)数据流语义来产生流水线化配置效果,该流水线化配置效果使空间阵列的在先(例如,早期)经配置的(例如,处理)元件能够在空间阵列的整个(例如,区段)被配置之前(例如,立即)开始操作。本文中的某些实施例可将配置的有效等待时间降低至几十纳秒。在一个实施例中,配置可以是两个(例如,分开的)操作:例如,实际的配置以及对加载到空间阵列(例如,结构)中的先前配置(例如,先前配置的状态)的(例如,同时的)提取,这些操作可在上下文切换期间发生。本文中的某些实施例可允许这些操作在空间阵列内同时发生。本文中的某些实施例可将(多个)微协议用于配置和提取,例如,如下文中参照图28、图29以及图37-图44所讨论。
本文中的某些实施例提供用于准许空空间阵列的配置和/或提取操作的流水线化的技术和硬件(例如,微架构扩展和/或定义)。本文中的某些实施例利用一个或多个控制器来安排跨空间阵列的配置和提取区域的波前。本文中的某些实施例利用更高级别的(例如,配置和/或提取)控制器来安排本地级别的控制器,这实现了跨空间阵列的配置和提取区域的波前。在一个实施例中,波前在逻辑上将新的和旧的(例如,程序)上下文分开,这例如使新的上下文能够立即执行。本文中的某些实施例将先前是串行过程(例如,提取,后接配置)的对象转换为流水线化过程,从而例如将等待时间减少一个数量级。
本文中的某些实施例减少配置(和/或提取)空间加速器所需的时间量,从而例如实现较小代码区域的有收益的加速。结果,可改善更多程序的性能,并且可在更大程度上改善更多程序的性能。
下文也包括对处理元件的空间阵列(例如,CSA)及其某些特征的实施例的架构理念的描述。如同任何革命性的架构那样,可编程性可能是风险。为了缓解该问题,已利用编译工具链(其也在下文中讨论)对CSA架构的实施例进行共同设计。
引论
百亿亿次级计算目标可要求在急剧的功率预算(例如,20MW)内的巨量系统级浮点性能(例如,1个ExaFLOP)。然而,利用经典的冯·诺依曼(von Neumann)架构来同时改善程序执行的性能和能效已变得困难:乱序调度、同时多线程操作、复杂寄存器堆和其他结构提供性能,但是以高能量成本来提供。本文中的某些实施例同时实现性能和能量要求。百亿亿次级计算功率-性能目标可针对每次操作既要求高吞吐量又要求低能耗。本文中的某些实施例通过提供大量低复杂度、高能效的处理(例如,计算)元件来提供此,这些低复杂度、高能效的处理元件极大地消除了先前处理器设计的控制开销。受此观察结果引导,本文中的某些实施例包括处理元件的空间阵列,例如,可配置空间加速器(CSA),该CSA例如包括由轻量型回压式(例如,通信)网络连接的处理元件(PE)的阵列。CSA片的一个示例在图1中描绘。处理(例如,计算)元件的某些实施例是数据流操作器,例如,当既满足(i)输入数据已到达数据流操作器,又满足(ii)具有可用于存储输出数据的空间(例如,否则没有处理正在发生)时仅处理输入数据的多重数据流操作器。(例如,加速器或CSA的)某些实施例不利用被触发的指令。
诸如图1中示出的可配置空间加速器(CAS)的实施例的粗粒度的空间架构是由互连网络连接的轻量型处理元件(PE)的组成物。例如被视为控制流图的程序可通过配置PE和网络而被映射到架构上。一般而言,PE可被配置为数据流操作器,例如,一旦所有的输入操作数到达PE,某个操作就发生,并且以流水线方式将结果向下游转发(到例如(多个)目的地PE)。数据流操作器可选择逐操作器地消耗传入数据。
可要求空间架构防御系统程序(例如,操作系统(OS))(例如,系统级特权)和用户程序(例如,用户级特权)两者免受恶意代码。在一个实施例中,电路交换型互连网络正在若干用户程序之间多路复用空间架构。可将空间结构(例如,电路交换型互连网络)的多个部分给予不同的用户级程序供这些用户级程序的独占使用。然而,在多个程序(例如,每个程序的多个线程) 之间支持此类多路复用会引入系统级问题:例如,程序受保护而不受彼此影响,使得程序不能够观察驻留在同一结构(例如,电路交换型互连网络)中的其他程序的操作,也不会干扰驻留在同一结构(例如,电路交换型互连网络)中的其他程序的操作。此类操作可作为诸如操作系统之类的(例如,系统级)特权程序的部分而发生。本公开的某些实施例提供对结构(例如,电路交换型互连网络)的直接用户级配置,这可显著降低配置开销。在某些实施例中,(例如, CSA的)空间阵列(例如,其电路交换型互连网络)包括特权配置(例如,特权模式),以便例如加载受保护而免受用户级修改的配置位。本文中的某些实施例利用例如用于实现空间结构中的保护机制的特权控制电路来扩充空间结构。例如,可使用特权配置电路将进程标识值(进程ID)加载到结构(例如,存储器接口)中。本文中的某些实施例允许使用结构中(例如,互连自身中) 的特权位(例如,使用配置控制器的特权模式)来对结构(CSA)分区。本文中的某些实施例提供对特权(例如,特权配置)的支持。设置或被设置为特权模式的配置控制器可使像操作系统那样的特权程序能够设置结构(例如,电路交换型互连网络)中的一个或多个特殊的配置位,这一个或多个特殊的配置位例如控制更高级别的功能(像保护)。本文中的某些实施例也实现共享结构中的保护。例如,本文中的某些实施例提供特权模式以设置被强化为硬件(例如,配置控制器和结构)的逻辑(例如,数据不横跨)区域以便例如防止信号在多个用户级程序区域之间横跨,这例如与被配置为现场可编程门阵列(FPGA) 的软防护形成对照。本文中的某些实施例涉及使用特殊硬件(例如,配置(例如,控制器)电路)来提供保护的空间架构。本文中的某些实施例不向配置时间增加显著的性能开销。本文中的某些实施例例如甚至在配置具有对物理存储器的直接访问权的情况下也不要求编程发生在特权上下文中。本文中的某些实施例将用户可见的架构从特权架构中分离出来,以便例如使可信代码库最小化并准许真实的用户级重配置。本文中的某些实施例提供用于分离这些配置的架构。该分离的另一益处可以是启用直接的用户级结构配置,这例如降低配置开销。本文中的某些实施例涉及防御其自身以及良性用户程序免受(多个)恶意用户程序的CSA硬件。本文中的某些实施例允许单个配置步骤来为(例如,所有的)后续配置设置结构(例如,电路交换型互连网络),从而例如极大地降低在配置时间方面的保护开销。本文中的某些实施例在用户级配置与特权配置之间进行区分。本文中的某些实施例提供例如在任何时刻都不对用户程序可见的硬件受保护的特权配置。本文中的某些实施例允许空间阵列(例如,CSA) 利用特权模式在共享存储器系统内安全地参与。本文中的某些实施例允许空间阵列(例如,CSA)利用特权模式来保护(例如,根据数据流图而配置的)该空间阵列的配置的多个部分和/或启用该空间阵列的其他部分的用户级配置,以便例如降低这些操作的等待时间。
附加地或替代地,本文中的某些实施例将空间阵列(例如,CSA) 的能力扩展为包括流水线化的(多个)配置和(多个)提取,这例如与这些操作被串行化形成对照。某些操作器(像处置算术表达式的无条件求值的那些操作器)可消耗所有传入数据。然而,对操作器而言,在累积操作中维持例如状态(例如,执行上下文)有时是有用的。在一个实施例中,在执行上下文切换之前,当前状态被保存。
上下文切换一般可以指这样的进程:存储并恢复操作(例如,进程或线程)的状态(更具体而言,执行上下文),使得稍后可在同一点恢复执行。本文中的某些实施例将空间阵列(例如,CSA)的能力扩展为包括流水线化的(多个)配置和(多个)提取,这例如与这些操作被串行化形成对照。本文中的某些实施例降低上下文切换的可感知的等待时间(例如,从几百个循环降低到几十周期的有效等待时间,例如,数量级降低)
图1图示根据本公开的实施例的处理元件的空间阵列的加速器片 100实施例。加速器片100可以是较大的片的部分。加速器片100执行一个或多个数据流图。数据流图一般可以指在对序列化代码的编译时出现的显式并行的程序描述。本文中的某些实施例(例如,CSA)允许数据流图被直接配置到 CSA阵列上,例如,不是被变换为序列化的指令流。本文中的某些实施例允许由空间阵列的一个或多个处理元件(PE)执行第一(例如,类型的)数据流操作,附加地或替代地,允许由该空间阵列的网络通信电路(例如,端点)中的一个或多个执行第二(例如,不同类型的)数据流操作。
数据流图距序列化的编译流的偏离允许CSA的实施例支持熟悉的编程模型并(例如,不使用工作表)直接执行现有的高性能计算(HPC)代码。 CSA处理元件(PE)可以是高能效的。在图1中,存储器接口102可耦合至存储器(例如,图2中的存储器202)以允许加速器片100向(例如,管芯外) 存储器访问(例如,加载和/或存储)数据。所描绘的加速器片100是由经由互连网络105耦合在一起的若干种类的PE组成的异构阵列。加速器片100可将以下一者或多者例如包括为处理元件101的空间阵列的部分:整数算术PE、浮点算术PE、通信电路(例如,网络数据流端点电路)和结构中存储。数据流图(例如,经编译的数据流图)可覆盖在加速器片100上供执行。在一个实施例中,对于特定的数据流图,每一个PE仅处置图中的一个或两个(例如,数据流)操作。PE阵列可以是异构的,例如使得没有PE支持完整的CSA数据流架构和/或一个或多个PE被编程(例如,定制)以执行仅一些但高度高效的操作。本文中的某些实施例因此实现具有相比路线图架构为计算密集型的处理元件的阵列的处理器或加速器,并相对于现有的HPC供应在能效和性能方面实现大约数量级增益。
本文中的某些实施例提供从在处理元件的(例如,密集的)空间阵列(例如,CSA)内的并行执行的性能提升,在该处理元件的(例如,密集的)空间阵列(例如,CSA)中,例如,如果输入数据是可用的,则所利用的每个PE可同时执行其操作。效率提升可源于每一个PE的效率,例如,其中每一个PE的操作(例如,行为)对于每一个配置(例如,映射)步骤被固定一次,并且执行在本地数据到达PE时发生(例如,不考虑其他结构活动)。在某些实施例中,PE是数据流操作器(例如,每一个PE是单个数据流操作器),例如,当既满足(i)输入数据已到达数据流操作器,又满足(ii)具有可用于存储输出数据的空间(例如,否则没有处理正在发生)时仅对输入数据进行操作的数据流操作器。
本文中的某些实施例包括处理元件的空间阵列作为加速用户应用的高能效且高性能的方法。在一个实施例中,(多个)空间阵列经由串行过程来配置,在该串行过程中,配置的等待时间经由全局重置被完全暴露。这其中的一些可源于阵列(例如,现场可编程门阵列(FPGA))的寄存器传送级(RTL) 语义。用于在阵列(例如,FPGA)上执行的程序可假定根本性的重置概念,根据该根本性的重置概念,期望设计的每个部分是出自配置重置而操作的。本文中的某些实施例提供数据流式阵列,在该数据流式阵列中,PE(例如,全部 PE)符合流控制器微协议。该微协议可产生分布式初始化的效果。该微协议可例如利用区域性(例如,非整个整列)安排而允许流水线式配置和提取机制。本文中的某些实施例提供数据流架构中的上下文切换。
所描绘的加速器片100包括(例如,片级)配置控制器104,该(例如,片级)控制器104例如用于根据输入数据流图来配置处理元件(PE)中的一个或多个和/或多个PE之间的(例如,互连网络105)网络。附加地或替代地,加速器片100包括一个或多个(例如,本地)配置控制器106、108。例如,每个本地配置控制器可配置处理元件的(例如,相应的)子集和/或(例如,输入和/或输出到处理元件的那个子集的)网络。每个本地(例如,配置)控制器可独立地操作。在一个实施例中,配置控制器包括用于设置(例如,用于PE 中的某些PE(或所有PE))和PE之间的网络的)特权级别的能力。在一个实施例中,配置控制器包括用于提取的能力,例如,提取控制器。在一个实施例中,使用配置控制器和分开的提取控制器。在一个实施例中,本地控制器位于网络上,通过该网络,这些本地控制器例如经由图37中的虚线框中的网络与上层级别的控制层次结构、存储器通信和/或彼此通信。
在一个实施例中,本地(例如,配置)控制器负责设置组件(例如,电路交换型互连网络)的特权级别和/或负责运行时服务的(例如,低级别) 工作,像(例如,PE)配置和提取。每个本地控制器可负责PE的子集(例如,少量PE),如图1和图4-图5B中所图示。图1可划分为PE的两个子集,例如,如分别由配置控制器106和配置控制器108管理。
如下文所示,用于流水线化服务的执行计划可包括三个步骤:配置(例如,以及设置特权级别)、缓冲以及提取。类似地,控制硬件(例如, (多个)控制器)需要对这三个步骤的认知和协调。示例控制流如下:每个本地控制器可包含在物理上与其邻近的那些控制器的列表。当本地控制器从先于该本地控制器的那些本地控制器中的每个接收到消息时,上下文(例如,状态) 转变可开始。随后,那个本地控制器可以开始其当前操作。当该操作完成时,该本地控制器可转变其上下文(例如,状态),并将消息发送到每个后继的控制器。在一个实施例中,本地控制器遵循四个状态:Run(运行)、Extract(提取)、 Inactive(不活跃)和Configure(配置)。Inactive可例如通过启动Configure 微协议来获得,这对PE解除激活,但是可能无法立即供应配置信息,例如由此将PE保持在解除激活状态。
流水线化的运行时服务可包括更高级别的(例如,片级)控制器与负责配置的本地控制器之间的协调。为了缩短该通信时间并改善流水线行为,本文中的某些实施例包括用于支持(例如,配置、提取和/或完成)命令在本地控制器之间的直接转发的微架构。这可允许(多个)更高级别的控制器在本地控制器顶部覆盖经协调的配置和提取图,这可用于动态地构造波前。
本文中的某些实施例跨广泛类别的现有单流和并行程序(例如,所有程序)提供性能的范式转移(paradigm-shifting)等级和极大的能效改善,同时保持熟悉的HPC编程模型。本文中的的某些实施例可针对HPC,使得浮点能效是极其重要的。本文中的某些实施例不但获得令人瞩目的性能改善和能量减少,还将这些增益传递至以主流HPC语言编写的且用于主流HPC框架的现有HPC程序。本文中的架构的某些实施例(例如,具有想到的编译)在对由现代编译器生成的控制数据流内部表示的直接支持中提供若干扩展。本文中的某些实施例涉及CSA数据流编译器(例如,其可接受C、C++和Fortran编程语言)以针对CSA架构。
图2图示根据本公开的实施例的耦合至(例如,连接至)存储器 202的硬件处理器200。在一个实施例中,硬件处理器200和存储器202是计算系统201。在某些实施例中,加速器中的一个或多个是根据本公开的CSA。在某些实施例中,处理器中的核中的一个或多个核是本文中公开的那些核。硬件处理器200(例如,其每一个核)可包括硬件解码器(例如,解码单元)和硬件执行单元。硬件处理器200可包括寄存器。注意,本文中的附图可能没有描绘所有的数据通信耦合(例如,连接)。本领域技术人员将认识到,这样做是为了不使附图中的某些细节模糊。注意,附图中的双向箭头可以不要求双向通信,例如,它可以指示单向通信(例如,去往或来自那个组件或设备)。通信路径中的任一路径或所有组合可用于本文中的某些实施例。所描绘的硬件处理器200包括根据本公开的多个核(0至N,其中,N可以是1或更大)和硬件加速器(0至M,其中,M可以是1或更大)。硬件处理器200(例如,其 (多个)加速器和/或(多个)核)可耦合至存储器202(例如,数据存储设备)。 (例如,核的)硬件解码器可接收(例如,单条)指令(例如,宏指令),并将该指令解码为例如微指令和/或微操作。(例如,核的)硬件执行单元可执行经解码的指令(例如,宏指令)以执行一个或多个操作。
以下第1节讨论特权配置以及对先前配置(例如,其状态)的配置和(例如,同时的)提取。以下第2节公开CSA架构的实施例。具体地,公开了在数据流执行模型内集成存储器的新颖的实施例。第3节探究CSA的实施例的微架构细节。在一个实施例中,CSA的主要目的是支持编译器产生的程序。以下第4节检验CSA编译工具链的实施例。在第5节中,在经编译代码的执行中将CSA的实施例的优势与其他架构进行比较。最后在第6节中讨论CSA微架构的实施例的性能,在第7节中讨论进一步的CSA细节,并且在第8节中提供总结。
1.特权配置以及对先前配置的配置和提取
在某些实施例中,如本文中所讨论,处理元件(PE)使用例如通过静态地配置(例如,电路交换型)通信网络而形成的专用虚拟电路来进行通信。这些虚拟电路可以是流受控且完全被回压的,使得例如如果源没有数据或 PE的目的地为满,则该PE将停止。在运行时,数据可流经实现经映射数据流图(例如,经映射算法)的PE。例如,可通过处理元件的空间阵列(的例如结构区域)使数据从存储器流入,随后使数据向外返回至存储器。
此类架构相对于传统多核处理器可实现卓越的性能效率:例如以 PE形式计算可以比核更简单且更多,并且例如与存储器系统的扩展形成对照,通信可以是直接的。在某些实施例中,空间阵列(例如,CSA)包括特权配置模式(例如,将组件设置为第一模式或第二模式)。这些模式可由诸如操作系统之类的特权程序调用以修改空间阵列(例如,空间阵列的电路交换型互连网络)内的安全模式,从而例如在多编程的情况下设置空间阵列中的动态分区。为了将空间阵列配置为第一模式或第二模式,特权程序可使用特权接口,例如,存储器映射的接口(例如,配置空间寄存器(例如,CSR);或将指令解码为经解码的指令,并且执行该经解码的指令以使空间阵列进入或离开特权模式 (例如,在耦合至CSA的处理器核上解码并执行该指令))。可例如分别使用虚拟存储器转换机制或通过处理器(例如,核)的特权模式来保护特权接口。在调用特权模式时,配置控制器(例如,片级配置控制器104)可将适当的配置消息发送到本地配置控制器(例如,配置控制器106和配置控制器108),该本地配置控制器随后可在它们的子区域上调用特权配置。取决于(例如,下文描述的)微协议的选择,存储器接口102可使用附加的虚拟存储器转换机制来支持由调用程序使用的任何特权地址空间。在一个实施例中,为了支持特权配置,配置微协议被扩展为包括控制通道:CFG_START_PRIVILEGE,如下文中参照图39所讨论。
CFG_START_PRIVILEGE通道上的信号可(例如,向PE和/或互连网络(例如,电路交换型网络))指示(例如,对于特权配置)的特权模式的开始和/或向(例如,特权寄存器中的)特权位存储指示它们将根据配置微协议接受传入值。在其他方面,它可以像CFG_START通道上的信号。给定这些概念,实现若干型式的特权配置是可能的。
分开的特权配置
在某些实施例中,特权配置(例如,特权模式)与用户模式配置分开。在配置微协议中使用经配置的控制位以便例如指示特权模式或非特权模式。某些实施例在CFG_START_PRIVILEGE通道上断言值以指示正在被修改的正是一个或多个特权位(例如,一个或多个特权配置位)。参考图1,可 (例如,经由特权接口,例如,如本文中所讨论)指示配置控制器(例如,其中的存储)中的一个或多个配置控制器将加速器片100(例如,PE和/或互连网络105)设置为特权模式或设置为非特权模式,以便例如当处于特权模式时更新一个或多个特权位(例如,一个或多个特权配置位)。
在一个实施例中,特权配置对于除了用于指示第一模式或第二模式的(多个)特权位之外的现有配置位(例如,用于数据流图的配置)是非破坏性的。在一个实施例中,在运行时调用向(例如,使用一个或多个特权位来阻止网络上的通信的第一模式与不使用一个或多个特权位来阻止网络上的通信的第二模式之间的)新模式的配置。在一个实施例中,当进入配置模式时,本地网络多路复用器(例如,如图22A-图22B中那样)摆动以在配置控制器与(多个)配置目标(例如,配置位存储)之间形成路径。在某些实施例中,如果本地多路复用器状态被保留,则不需要附加的配置,例如,一旦多路复用器在配置中的使用(例如,在配置控制器与(例如,将操作配置值存储在例如图24中的操作配置寄存器2419中的)PE之间提供路径)完成,它们就回复到它们的原始配置。在某些实施例中,无需重配置和/或停止正在运行的(例如,用户)程序而设置特权位是可能的。在另一实施例中,特权配置(例如,设置特权模式)包括在尝试配置之前将CSA(例如,加速器片)置于无操作(例如, no-op)状态。(例如,运行OS的)处理器例如在将特权任务向外传递到CSA (例如,加速器片)供由该CSA执行之前,可请求该CSA将该CSA中的一些或全部(例如,PE和/或互连)置于特权模式。
统一的特权配置
在一个实施例中,特权配置与用户配置分开发生。在这种情况下,特权配置的用户部分可以是无操作(no-op)配置。在后续的用户配置期间, (例如,被设置为特权模式的)特权配置不被使用,并且与特权位相关联的配置要么被忽略,要么不被包括在(例如,二进制的)用户配置格式中。在后一种情况下,特权配置状态可包括用于自动绕过其配置的状态位。
图3图示根据本公开的实施例的包括加速器302的硬件处理器片 300。加速器302可以是根据本公开的CSA。片300包括多个高速缓存区块(例如,高速缓存区块308)。请求地址文件(RAF)电路310可被包括,例如,如在以下第3.2节中所讨论。ODI可以指管芯上互连,例如,跨整个管芯伸展、连接所有片的互连。OTI可以指(例如,跨片伸展,例如,将片上的高速缓存区块连接在一起的)片上互连。CSA可允许特权配置,例如,在该特权配置中, (多个)配置位(例如,(多个)特权位)用于设置例如在加速器(例如,CSA) 302和/或RAF 310内两个用户应用(例如,进程ID零(PID 0)和进程ID一 (PID1))之间的数据不交叉的边界。波浪线被包括以大体上指示该边界,并且区域(例如,应用)之间的实际边界可以不遵循该精确图案。
实现多个分区之间的保护
在某些实施例中,(例如,处于特权模式的)保护包括对潜在共享资源的防御。在处理器中,该保护可被约束于状态,更具体而言,被约束于存储器子系统。该保护可由虚拟存储器转换机制实现。然而,除了存储器保护之外,空间阵列(例如,CSA)还可能需要保护结构(例如,电路交换型互连网络)自身内的通信。在图4和图21中,作为示例,本地电路交换型通信网络(例如,图21中的包括切换装置2110的第一网络和包括切换装置2111的第二网络)可跨越片或甚至跨越整个管芯。如果两个(例如,用户)程序共享同一片或同一管芯,则(例如,运行于空间阵列上的)这两个程序中的任一者可例如通过对共享通信通道或共享资源进行采样来观察另一者的通信。
为了实现保护,本文中的某些实施例在结构(例如,电路交换型互连网络)中的例如对应于可分区区域的某些点处提供特权(例如,特权状态) 位。例如取决于特定的设计所包括的开销级别,可分区区域可以是粗糙或精细的。例如,在图4中通过以下方式示出两路分区:将(多个)特权(例如,特权状态)位沿波浪线放置在(例如,某个或每个)本地网络交叉处(例如,与其他配置位一起放置在配置存储(例如,寄存器)410中,或放置在分开的特权存储(例如,特权状态寄存器)412中)。波浪线被包括以大体上指示该边界,并且区域(例如,应用)之间的实际边界可以不遵循该精确图案。在一个实施例中,特权位被设置为某个值(例如,逻辑一或逻辑零)以指示没有通信将横跨那个点(例如,图4中的交叉点414)。通信的阻挡可以是阻挡去往和/ 或来自交叉点414的一个或多个(例如,每个)引脚的数据流。切换装置(例如,切换电路)(例如,如下文中进一步参照图5A-图5B所讨论)可由特权位字段控制。
图4示出根据本公开的实施例的具有多个处理元件(例如,402、 404、406、408)的加速器400的运行中配置。加速器400包括特权模式和非特权模式能力,例如,允许当处于特权模式时在(例如,某个或每个)本地网络交叉处设置(多个)特权(例如,特权状态)位(例如,设置配置存储(例如,寄存器)410中的(多个)特权(例如,特权状态)位和/或设置其他配置位,或设置分开的特权存储(例如,寄存器412)中的(多个)特权(例如,特权状态)位)。虽然描绘了PE的运行中配置,但是例如对特权位的设置可与此同步或可与此分开。(例如,在交叉点414处的)切换装置(例如,切换电路)可(例如,仅)由其相关联的特权存储(例如,特权存储412)控制。在一个实施例中,在第一网络401中的交叉点414处的切换装置(例如,切换电路)(例如,下文中参照图5A-图5B进一步所讨论)和在第二网络403中的交叉点416处的切换装置(例如,切换电路)(例如,如下文中参照图5A- 图5B进一步所讨论)(例如,仅)由单个特权存储412(例如,特权状态寄存器)控制。在一个实施例中,在第一网络401中的交叉点414处的切换装置 (例如,切换电路)(例如,下文中参照图5A-图5B进一步所讨论)和在第二网络403中的交叉点416处的切换装置(例如,切换电路)(例如,如下文中参照图5A-图5B进一步所讨论)(例如,仅)由它们自身各自的特权存储 (例如,用于交叉点414的特权存储412(例如,特权状态寄存器)和用于交叉点416的特权存储418(例如,特权状态寄存器))控制。如图所描绘,每个交叉点可具有与该交叉点相关联的其自身的特权存储(例如,其物理上邻近于结构(例如,电路交换型互连网络)的、该结构控制的一个或多个切换装置)。一旦经配置,PE就可受制于数据流约束和/或(例如,与数据流约束分开的) 特权约束来执行。
在一个实施例中,如果被解除激活,则(例如,由配置控制器(例如,图1中的配置控制器中的一个或多个)设置的)(多个)特权位将抑制(例如,停止)这两个分区之间的通信。在一个实施例中,所有尝试横跨分区的信号被拉为低值(例如,零)。这可确保不相关的分区被完全隔离,以便例如创建硬电路分区,例如,不仅是软件形式的。虽然讨论了两个分区,但是可例如通过相应地设置(多个)特权位来形成三个或更多个分区,例如,加速器400 的每一列都可设置为是其自身的分区。为了对空间结构(例如,CSA)分区,操作系统或其他特权用户可为所需的(例如,用户)工作负载确定适当的设置,并且基于所需的分区操作来构建特权配置文件。操作系统或其他特权用户可例如基于本文中讨论的技术导致特权配置文件(例如,经由(多个)配置控制器) 分派到CSA。如下文中例如参照图22A-图22B进一步所讨论,互连可包括可配置数据路径(例如,网络)和可配置流控制路径(例如,网络)。除了设置数据路径和流控制(例如,回压)路径的配置之外,或者替代设置数据路径和流控制(例如,回压)路径的配置,本文中的某些实施例允许特权配置例如设置一个或多个特权位以允许或不允许(例如,阻止)数据路径(例如,网络) 和/或流控制(例如,回压)路径(例如,网络)上的通信。
图5A示出根据本公开的实施例的(例如,参照图4所讨论的网络一或网络二中的)可配置数据路径网络500。网络500包括多个多路复用器(例如,多路复用器502、504、506),这些多路复用器可(例如,经由它们相应的控制信号)经配置以将(例如,来自PE的)一个或多个数据路径连接在一起。图5B示出根据本公开的实施例的(例如,参照图4所讨论的网络一或网络二中的)可配置流控制路径网络501。网络可以是轻量PE至PE网络。网络的某些实施例可视为用于构建分布式点对点数据通道的组成基元的集合。图 5A示出使两个通道(粗体黑线和点状黑线)被启用的网络。粗体黑线通道是多播的,例如,单个输入被发送到两个输出。注意,即便专用的电路交换型路径形成在通道端点之间,通道也可在单个网络内的一些点处交叉。此外,该交叉不会引入两个通道之间的结构危害,使得每一个通道独立地且以全带宽操作。
实现分布式数据通道可包括图5A-图5B中图示的两条路径。前向路径即数据路径将数据从产生方携带到消耗方。多路复用器可配置成引导数据和有效位从产生方到消耗方,例如,如图5A中所示。在多播的情况下,数据将被引导到多个消耗方端点。网络的该实施例的第二部分是流控制即回压路径,其与前向数据路径相反地流动,例如,如图5B中所示。消耗方端点可断言它们何时准备好接受新数据。随后,可使用可配置的逻辑结(在图5B中标记为 (例如,回流)流控制功能)将这些信号往回引导到产生方。在一个实施例中,每一个流控制功能电路可以是多个切换装置(例如,多个mux),例如,与图 5A类似。流控制路径可处置控制数据从消耗方到生产方的返回。结可启用多播,例如,其中在产生方假定数据已被接收之前,每一个消耗方准备好接收数据。在一个实施例中,PE是具有作为其架构接口的数据流操作器的PE。附加地或替代地,在一个实施例中,PE可以是(例如,结构中的)任何种类的PE,例如但不限于具有指令指针、经触发指令或基于状态机的架构接口的PE。
除了例如PE被静态地配置之外,网络也可被静态地配置。在该配置步骤期间,配置位可在每一个网络组件处被设置。这些位控制例如mux选择和流控制功能。网络可包括多个网络,例如,数据路径网络和流控制路径网络。一个或多个网络可利用不同宽度(例如,第一宽度以及更窄或更宽的宽度)的路径。在一个实施例中,数据路径网络具有比流控制路径网络的宽度更宽的(例如,位传输)宽度。在一个实施例中,第一网络和第二网络中的每一个都包括它们自身的数据路径网络和流控制路径网络,例如,数据路径网络A和流控制路径网络A以及更宽的数据路径网络B和流控制路径网络B。
网络的某些实施例是无缓冲的,并且数据用于在单个周期中在产生方与消耗方之间移动。网络的某些实施例也是无边界的,即,网络跨越整个结构。在一个实施例中,一个PE用于在单个周期中与任一其他PE通信。在一个实施例中,为了改善路由带宽,可在PE的行之间并行地布置若干网络。
相对于FPGA,本文中的网络的某些实施例具有三个优势:面积、频率和程序表达。本文中的网络的某些实施例以粗粒度操作,其例如减少配置位的数量并由此减小网络的面积。网络的某些实施例还通过在电路(例如,硅) 中直接实现流控制逻辑来获得面积减小。强化的网络实现方式的某些实施例也享有相对于FPGA的频率优势。由于面积和频率优势,当在吞吐量奇偶校验处使用较低电压的情况下,可存在功率优势。最后,网络的某些实施例提供比 FPGA线更好的高级语义,尤其是相对于可变时序方面,因此,那些实施例更容易由编译器针对。本文中的网络的某些实施例可视为用于构建分布式点对点数据通道的组成基元的集合。
在某些实施例中,多播源可能无法断言其数据有效,除非该多播源从每一个接收器(sink)接收到就绪信号。因此,在多播情况下,可利用额外的结和控制位。
像某些PE那样,网络可被静态地配置。在该步骤期间,配置位在每一个网络组件处被设置。这些位控制例如mux选择和流控制功能。本申请的网络的前向路径要求一些位以使该前向路径的mux摇摆。在图5A中示出的示例中,要求每一跳(hop)四个位:东mux和西mux中的每一个利用一个位,而向南的mux利用两个位。在该实施例中,四个位可用于数据路径,但是7 个位可用于(例如,流控制路径网络中的)流控制功能。如果例如CSA进一步利用北-南方向,则其他实施例可利用更多位。流控制功能可将控制位用于流控制可从其来的每一个方向。这可实现对流控制功能的灵敏度的静态设置。以下表1总结了用于图5B中的网络的流控制功能的布尔代数实现方式,配置位被大写。在该示例中,利用七个位。
表1流实现方式
对于从图5B中的左边起的第三个流控制框,EAST_WEST_SENSITIVE 和NORTH_SOUTH_SENSITIVE被描绘为经设置以分别实现对粗体线通道和点状线通道的流控制。
所描绘的可配置数据路径网络500和可配置流控制路径网络501 可包括一个或多个特权位存储(例如,(多个)寄存器),用于存储特权位来控制一个或多个电路(例如,AND逻辑门)阻止或允许一条或多条数据路径上的通信。所描绘的每个AND逻辑门包括(例如,共享的或独占的)特权位存储,例如,用于正输入到AND逻辑门510的特权位的特权位存储508、用于正输入到AND逻辑门516的特权位的特权位存储512以及用于正输入到 AND逻辑门524的特权位的特权位存储522。在一个实施例中,每个交叉点(例如,路径多路复用器502、504、506的交叉点514,这些路径多路复用器例如累积地形成切换装置,例如,如图21中那样的电路交换型互连网络中的切换装置)可包括单个特权位存储(例如,特权位存储508,其用于正输入到AND 逻辑门510的特权位,并用于正输入到AND逻辑门516的同一特权位和/或用于正输入到AND逻辑门524的同一特权位)(例如,特权位存储522,其用于正输入到AND逻辑门524的特权位,并且用于正输入到(例如,在邻近交叉点之间的)AND逻辑门516的同一特权位)。单个特权(例如,一个或多个位)值(例如,特权位存储)可用于单个AND逻辑门或可分布至多个AND 逻辑门的任何组合。作为示例,当特权位存储512具有存储于其中(例如,存储在特权配置级中)的第一值(例如,逻辑零)时,它使AND逻辑门516不输出该AND逻辑门516从多路复用器506接收到的值,例如,在所描绘的实施例中,特权位值可以为逻辑零,以使AND逻辑门516阻止(例如,不输出) 来自该AND逻辑门516从多路复用器506接收到的输入518的值继续进入多路复用器的下一交叉点520(例如,其累积地形成切换装置,例如,如像图21 中那样的电路交换型互连网络中的切换装置)。作为另一示例,当特权位存储 512具有存储于其中(例如,存储在特权配置级中)的第二值(例如,逻辑一) (例如,与第一值不同)时,它使AND逻辑门516输出该AND逻辑门516 从多路复用器506接收到的值,例如,在所描绘的实施例中,特权位值可以为逻辑一,以使AND逻辑门516将来自该AND逻辑门516从多路复用器506接收到的输入518的值输出到多路复用器的下一交叉点520(例如,其累积地形成切换装置,例如,如像图21中那样的电路交换型互连网络中的切换装置) 中。特权位存储可沿可配置数据路径网络500和/或可配置控制路径网络501 内的数据路径被更新,例如,配置控制器(例如,仅在调用特权模式时)可引起特权位存储的更新。在一个实施例中,配置控制器(例如,本地配置控制器) (例如,在CFG_START_PRIVILEGE通道上)断言CFG_START_PRIVILEGE信号,以使(多个)网络中的切换装置(例如,多路复用器)中的某些摇摆,从而形成(多个)(例如,本地)网络中的、去往(多个)特权位存储位置的路径。在一个实施例中,处于用户模式的配置控制器不被准许引起特权位存储的更新。
所描绘的每个AND逻辑门包括特权位存储,例如,用于正输入到 AND逻辑门507的特权位的特权位存储505、用于正输入到AND逻辑门511 的特权位的特权位存储509以及用于正输入到AND逻辑门515的特权位的特权位存储513。在一个实施例中,每个交叉点(例如,流控制功能存储503或流控制功能存储517处的交叉点,例如,其累积地形成切换装置,例如,如图 21中那样的电路交换型互连网络中的切换装置)可包括单个特权位存储(例如,特权位存储509,其用于正输入到AND逻辑门511的特权位,并用于正输入到AND逻辑门515的同一特权位),例如,单个特权位可控制多个AND逻辑门(例如,可以是进入多个AND逻辑门的输入)。
用于基于通道的架构的面积减小技术
所有的通信都是隐式地流受控的,从这个意义上而言,空间阵列 (例如,CSA)可以是基于通道的架构。在CSA的某些实施例中,通过(例如,仅)操纵通道通信协议的就绪/启用信号在CSA中创建分区。在一个实施例中,简单地将这些信号拉取为不活跃值是可能的。在CSA的一个实施例中,本地电路交换型网络的配置包括可分开配置的前向数据路径和后向控制路径。在某些实施例中,如果恶意代码在一个方向上配置其数据路径并在另一方向上配置其控制路径,则这会产生安全脆弱性,因为数据路径可源自不同的分区(例如,不同的程序),而控制路径可源自本地分区。为了防止这种情况,本文中的某些实施例利用单个特权配置状态(例如,一个或多个特权位)来控制数据路径和控制路径两者的切换。按此方式,由硬件在物理上对数据路径和控制路径配对,从而例如通过操纵数据路径和控制路径来使特权分区能够被实现。
在一个实施例中,(例如,可配置数据路径网络500的)前向数据路径和(例如,可配置流控制路径网络510的)向后流的流控制路径被配对在一起(例如,向处于其中被前向数据路径和向后流的流控制路径耦合在一起的配置中的PE提供输入和/或输出),并且单个控制值(例如,控制位)可用于例如经由一个或多个AND逻辑门或其他阻挡电路来控制(例如,可配置数据路径网络500的)前向数据路径和(例如,可配置流控制路径网络501的) 配对的向后流的流控制路径。(例如,特权位存储522中的)单个特权(例如,一个或多个位)值可用于前向数据路径中的至少一个AND逻辑门,并用于向后流的流控制路径中的至少一个AND逻辑门,例如,AND逻辑门的任何组合。例如,(例如,特权位存储522中的)单个特权(例如,一个或多个位)值可用于根据该值,通过允许或阻止经过AND逻辑门(例如,AND逻辑门511、 515、516和524)(例如,其中,当AND逻辑门的所有输入为非零值(例如,逻辑一)时,AND逻辑门仅输出非零值(例如,逻辑一))的通信来允许或阻止通信。例如,(例如,特权位存储508中的)单个特权(例如,一个或多个位)值可用于根据该值,通过允许或阻止经过AND逻辑门510、517的通信来允许或阻止通信。在某些实施例中,(例如,经由AND逻辑门)关闭电路交换型路径与关闭(例如,PE中的)缓冲器(例如,寄存器)(例如,对缓冲器(例如,寄存器)进行时钟计时)以防止存储和/或接收数据不同,因为保证了数据不被任何敌对方观察。空间阵列(例如,CSA)、处理器或系统可包括本文中的公开内容中的任一者,例如,根据本文中公开的架构中的任一架构的空间阵列。
图6图示根据本公开的实施例的流程图。所描绘的流程600包括: 602:当传入操作数集到达处理器的多个处理元件时,利用该处理器的互连网络和多个处理元件执行数据流图的操作,其中,该处理器包括多个处理元件和多个处理元件之间的互连网络并具有数据流图,该数据流图包括多个节点,多个节点被覆盖到处理器的多个处理元件和处理器的多个处理元件之间的互连网络中,并且每个节点被表示为互连网络和多个处理元件中的数据流操作器;以及604:利用处理器的配置控制器将多个处理元件的第一子集与不同的第二子集之间的互连网络配置为:当特权位被设置为第一值时,不允许多个处理元件的第一子集与多个处理元件的不同的第二子集之间的互连网络上的通信;以及604:当特权位被设置为第二值时,允许多个处理元件的第一子集与多个处理元件的不同的第二子集之间的互连网络上的通信。在一个实施例中,一个或多个特权位可与其他配置位一起被存储在例如图8A-图8D中的配置存储 822A-822O中的一个或多个中。
图7图示根据本公开的实施例的处理器700的处理元件的空间阵列701中的上下文切换。空间阵列701被描绘为是耦合至处理器核702和/或向量处理单元(VPU)704的加速器,例如,用于执行任务的加速器而不是核和/ 或VPU。所描绘的处理器700包括高速缓存归属地(home)代理706,例如用于充当局部一致性和高速缓存控制器(例如,高速缓存代理)和/或也充当全局一致性和存储器控制器接口(例如,归属地代理)。
空间阵列701可以是本文中所讨论的例如在图8A-8D或图9A-9J 中的空间阵列中的任一者。具体而言,图7提供空间阵列中的上下文切换的概念视图。(例如,集中式)控制对例如从高速缓存(例如,L2高速缓存708) 向外辐射的波前进行安排。新配置710区域和旧配置716区域可以同时是活跃的,例如,处理数据。图7图示了这样的理念:通过空间阵列701(例如,结构)的协调,该空间阵列可实现流水线化的、面向波前的运行时服务。在图7 中,示出上下文切换的经协调的实现方式。在此,提取714区域(例如,其正在保存第一空间上下文的状态)与配置712区域(例如,第二(新的或在先的) 不同上下文向空间阵列的加载)同时是活跃的。在该实施例中,新配置和旧配置两者可以同时是活跃的,以便例如限制由运行时操作导致的空间阵列吞吐量的降级。在一个实施例中,为了实现流水线化的配置和提取,要保证的主要属性是新的配置712(例如,配置区域)和旧的提取714(例如,提取区域)不进行通信。为了实现这种保证,本文中的某些实施例利用空间阵列在通信方面的架构属性,例如,PE遵循可在微架构中被操纵的满/空(例如,回压)微协议以防止通信。在图8A-图8D中示出该机制的示例。本文中的某些实施例提供空间阵列的协调机制(例如,控制器)以确保新区域和旧区域不进行通信,以便例如确保程序正确性。
图8A-图8D图示根据本公开的实施例的用于处理元件802A-802O 的空间阵列800的上下文切换(例如,配置和提取)的运行中配置。在一个实施例中,空间阵列是(例如,具有核的)处理器的加速器。一旦经配置,PE 就可受制于数据流约束来执行。然而,涉及未经配置的PE的通道可由微架构禁用,从而例如防止任何未定义的操作发生。这些属性允许本文中的实施例以分布式方式初始化和执行,例如,一点也没有集中式执行控制。从未经配置的状态,配置可完全并行地发生(例如,也许在短至200纳秒内)。然而,由于对空间阵列(例如,CSA)的实施例的分布式初始化,PE可能变得活跃,以便例如当整个结构被配置好之前很久就将请求发送到存储器。提取能以与配置几乎相同的方式继续进行。本地网络(例如,804或806)可被遵守(例如,其电路被切换),以便一次从一个目标提取数据,并且提取用于实现分布式协调的状态位。空间阵列(例如,CSA)可将提取安排为是非破坏性的,即,在提取的完成时,每个可提取目标已返回到其起始状态。在该实现方式中,目标中的所有状态可被传播至以类扫描方式连至本地网络的出口寄存器。然而可通过在寄存器传送级(RTL)引入新路径或使用现有的线以便以更低开销来提供相同功能来实现原位(in-place)提取。类似的配置、层次结构提取并行地实现。
在图8A中,多个本地(例如,配置)控制器808A-808E被包括,例如,被连接至网络(例如,本地网络804或806)。在一个实施例中,本地 (例如,配置)控制器用于控制配置和/或提取。本地控制器可进一步由更高级别的控制器(例如,图1中的控制器104)控制。(例如,配置)控制器可管理处理元件的子集的配置和/或提取。本地(例如,配置)控制器808A可管理 (例如,导致)处理元件802A-802C的配置和/或提取。本地(例如,配置) 控制器808B可管理(例如,导致)处理元件802D-802O的配置和/或提取。本地(例如,配置)控制器808C可管理(例如,导致)处理元件802G-802I的配置和/或提取。本地(例如,配置)控制器808D可管理(例如,导致)处理元件802J-802L的配置和/或提取。本地(例如,配置)控制器808E可管理(例如,导致)处理元件802M-802O的配置和/或提取。虽然所管理的处理元件(例如,802A-802C)的每个子集被示出在与其本地(例如,配置)控制器(例如, 808A)相同的行上,但是其他取向是可能的。虽然三个处理元件(例如, 802A-802C)示出为具有单个本地(例如,配置)控制器(例如,808A),但是可将(例如,本地)控制器用于一个处理元件或任意多个处理元件。处理元件可以如本文中所公开,例如,如图24中所公开。处理元件可例如通过向配置寄存器写入而被配置。本地(例如,配置)控制器可以是配置控制器(例如,如图39中那样)和/或提取控制器(例如,如图48中那样)。处理元件的状态 (例如,配置信息)可包括任何(输入或输出)队列或缓冲器中的数据、回压数据(例如,信号)、操作配置和/或任何其他数据。状态可包括存储在处理元件的任何(多个)寄存器中的信息。状态可包括从哪里(例如,从一个或多个 PE或存储器)源送(输入)用于PE的数据,以及将(输出)数据发送到哪里 (例如,哪个或哪些PE或存储器)。状态可包括数据路径网络和/或流控制(例如,回压)路径网络(的例如切换设置),参见例如图22A-图22B。状态可包括与存储器访问有关的数据,例如,包括地址和所返回的数据。
在所描绘的实施例中,每个处理元件可处于所指示的状态,例如,已经用特定的配置进行了配置,活跃地配置(例如,加载并启用将执行的配置),未经配置,活跃地不配置,或提取配置(例如,状态)。空间阵列(例如,(多个)处理元件)中的配置可用于同一数据流图,例如其中一个或多个处理元件不被重配置。例如,对于每个配置,这一个或多个处理元件可执行同一操作,但以不同的(多个)输入源和/或(多个)输出目的地(例如,值)来执行。配置可用于不同的数据流图,例如其中一个或多个处理元件经重配置以执行不同的操作。配置可以是在哪里配置处理元件(的例如子集)(例如,对其编程),使得在(例如,具有作为数据流操作器的处理元件的)空间阵列中表示数据流图的每个节点。
在图8A中,本地控制器808A可能先前已经(例如,从更高级别的控制器)接收到命令以将新配置应用于该本地控制器808A耦合到的处理元件的子集802A-802C,并且在图8A中,该新配置已经完全被应用(例如,加载)。本地控制器808B可能已经(例如,从更高级别的控制器)接收到命令以将新配置应用于该本地控制器808B耦合到的处理元件的子集802D-802F。在图8A中,处理元件802D是未经配置的,处理元件802E正在活跃地被配置 (例如,用新配置来配置),并且处理元件802F已经用新配置来配置过了。本地控制器808B可将配置信息(例如,数据)810(例如,包括状态等)发送到处理元件802E以便相应地引起对处理元件802E的配置。线820示意性地图示从配置存储822E发送到网络(例如,804和/或806)以实现所需的(多个) 配置数据路径的配置控制。线820上的配置控制信号数据可来自本地控制器808B。
配置存储822A-822O示意性地图示设置网络中的电路交换的配置和提取控制数据(信号)(例如,与配置和提取数据有效载荷自身形成对照)。在一个实施例中,配置存储是本地(例如,配置和/或提取)控制器中的寄存器。线818、820、824示意性地图示从配置存储822D-822F发送到网络(例如,804 和/或806)以实现所需的(多个)配置数据路径的配置控制。从处理元件802B 到处理元件802F的线可表示网络804和/或806中的活跃通道,该活跃通道被设置(例如,电路交换型网络的切换装置被设置以允许那个数据路径)以将处理元件802B(的例如缓冲器)的输出耦合至处理元件802F(的例如缓冲器) 的输入。该通道可根据新配置来设置。虚线812、814、816可将网络的不活跃通道指示为例如当(多个)输入和输出处理元件两者被相应地配置时是活跃的。
本地(例如,配置)控制器808D被描绘为发送和/或接收不配置 (例如,提取)数据830(例如,包括状态等),并且处理元件802J相应地导致处理元件802J的不配置(例如,状态的提取)。线826示意性地图示从配置(例如,不配置)存储822J发送到网络(例如,804和/或806)以实现所需的(多个)不配置数据路径的不配置(例如,提取)控制。线826上的不配置(例如,提取)控制信号数据可来自本地控制器808D。
本地控制器808A-808E可各自包括存储828A-828E(例如,(多个)寄存器)以存储描述本地控制器之间的协调的信息,例如,每个控制器正在做什么操作(例如,以新配置来活跃,以旧配置来活跃,未经配置,不配置 (提取)或配置)。
转到图8B,例如先前在图8A中不配置的的处理元件802J现在未经配置,用于那个上下文的状态数据现在被保存在例如本文中讨论的任何存储中。随后,处理元件802J未经配置,例如,它可将回压断言到任何上游处理元件等以便不允许数据被输入到处理元件802J。在一个实施例中,当保存用于 (例如,如由本地控制器808D管理的)处理元件802J的状态数据时,可例如通过清除配置(例如,不配置)存储822J中的数据来禁用图8A中用于发送和 /或接收不配置(例如,提取)数据830的路径。
转到图8C,在处理元件802J(以及处理元件802K和处理元件802L) 的不配置(例如,不配置操作)的完成后,本地控制器809D可将(完成)消息832、834发送到邻近的控制器(分别发送到控制器808C和808E)。在一个实施例中,此类消息(例如,提取的完成)可使邻近的处理元件的集合中的一个或多个处于它们的下一批操作。
现在转到图8D,由本地控制器808C对完成(例如,不配置)消息832的接收可触发本地控制器808C开始其下一操作,例如,在图8D中指示为例如利用沿(例如,网络804和/或806中的)路径发送到处理元件802I 的配置信息(例如,数据)840对处理元件802I进行的配置以便相应地导致处理元件802I(以及例如处理元件802G和处理元件802H)的配置。在一个实施例中,配置(例如,提取)控制从配置存储822G-822I发送到网络(例如,804 和/或806)以实现所需的配置数据路径。配置控制信号842数据可来自本地控制器808C。
附加地或替代地,由本地控制器808E对完成(例如,不配置)消息834的接收可触发本地控制器808E开始其下一操作,例如,在图8D中指示为启动例如利用沿(例如,网络804和/或806中的)路径利用处理元件802O 发送和/或接收的不配置(例如,提取)数据850(例如,包括状态等)对处理元件802O进行的不配置(例如,提取),以相应地导致处理元件802O(以及例如处理元件802M和处理元件802N)的不配置(例如,提取)。在一个实施例中,不配置(例如,提取)控制从配置(例如,不配置)存储822O发送到网络(例如,804和/或806)以实现所需的(多个)不配置数据路径。不配置(例如,提取)控制信号852数据可来自本地控制器808D。注意,在参考这些附图时引用的术语“旧”可以指现存配置。注意,在参考这些附图时所使用的术语“新”可以指前一配置,但是其正在替代当前处于PE中的配置,或其被配置到未经配置的PE中。
在一个实施例中,网络(例如,电路交换型网络)包括多个通道 (例如,如图8A-图8D中所示)。通道语义(例如,图8A-图8D中被覆盖到网络中的虚线和实线)可实现流水线的自然激活,例如其中未经配置的PE对控制值箝位和/或当PE被配置时,它们开始计算。空间阵列因此可在很少的周期内(例如,在约几十纳秒内)(例如,与FPGA的周期级别语义形成对照,其中,回压不是隐式的,并且整个设计(FPGA)必须被配置,类似于“离开重置”)变得活跃。
虽然上述对图8A-图8D的讨论参照多个本地控制器,但是在另一实施例中,单个(例如,配置)控制器可实现以上方案。
图8A-图8D进一步图示在提取期间的通信微协议,例如,经由该通信微协议中的满/空(例如,回压)位的操纵以防止在运行时服务事件期间细粒度的数据流。
图9A-图9J图示根据本公开的实施例的对配置成用于执行数据流图的处理元件902A-902P的空间阵列900的(例如,第一)上下文的分阶段提取。在图9A-图9J中,单个数据流图被描绘为例如被覆盖到处理元件902A-902P 的空间阵列900(以及例如被覆盖到其间的(多个)(例如,互连)网络)中,使得该数据流图的每个节点被表示为处理元件的空间阵列中的数据流操作器。在一个实施例中,处理元件的空间阵列中的处理元件中的一个或多个用于通过存储器接口(例如,图18C中的存储器接口1802)来访问存储器。在一个实施例中,数据流图的挑选节点因此与挑选操作器904对应(例如,由挑选操作器904表示),数据流图的切换节点因此与切换操作器906对应(例如,由切换操作器906表示),数据流图的乘法器节点因此与乘法器操作器908对应(例如,由乘法器操作器908表示),数据流图的“==”节点因此与相等检验操作器 910对应(例如,由相等检验操作器910表示),并且数据流图的“<”节点与“<”操作器912对应(例如,由“<”操作器912表示)。另一处理元件和/或流控制路径网络可将控制信号(例如,控制令牌)提供给挑选操作器904A和切换操作器906以执行操作。在一个实施例中,在执行开始之前配置处理元件的空间阵列900(以执行数据流图)。在一个实施例中,编译器执行从程序和/或数据流图向图9A中的配置的转换。在一个实施例中,进入处理元件的空间阵列的数据流图节点的输入在逻辑上将数据流图嵌入到处理元件的阵列中(例如,如下文中进一步所讨论),使得输入/输出路径经配置以产生所需的结果。例如,参见下文对图18A-图18C的讨论。
在图9A-图9J中,空间阵列900被描绘为具有本地(例如,配置和/或提取)控制器908A-908D。(例如,配置)控制器可管理处理元件的子集的配置和/或提取。本地(例如,配置)控制器908A可管理(例如,导致) 处理元件902A-902D的配置和/或提取。本地(例如,配置)控制器908B可管理(例如,导致)处理元件902E-902H的配置和/或提取。本地(例如,配置) 控制器908C可管理(例如,导致)处理元件902I-922L的配置和/或提取。本地(例如,配置)控制器908D可管理(例如,导致)处理元件902M-902P的配置和/或提取。本地控制器可进一步由更高级别的控制器(例如,控制器914) 控制。
在图9A中,本地控制器从(片)控制器914接收它们的信号,以便例如获得(例如,根据第一上下文的)配置。这些信号(例如,命令)控制本地控制器的行为以配置这些本地控制器的相应的处理元件的子集。例如在从第一上下文到不同的第二上下文的上下文切换时可能期望对当前操作状态(例如,操作数等)的提取。处理元件902G和902K中的常数1和2可分别用作输入,但是本公开不限于此。
在图9B中,例如当输入数据和/或输出数据空间(例如,没有回压被断言)可用时,本地(例如,配置和/或提取)控制器908A-908D已(例如,根据第一上下文)完成它们的配置,并且现在可以操作。接下来,假定作出提取当前在图9B中的上下文的请求。该提取可按阶段执行,例如,(在程序/ 操作流中)自顶至底执行。
在图9C中,例如由本地控制器908A开始对(例如,经配置的和/ 或未经配置的)处理元件902A-902D的上下文的提取。例如,任何输入数据、输出数据和相应的回压信号从经配置的处理元件902A和902B被提取(并且被保存)。其余处理元件(902E-902P,例如,仅902G、902K和902O)可继续操作,例如,假定它们具有输入数据和/或输出数据空间(例如,没有回压被断言)。在图9C中,处理元件902G已作为挑选操作器904来执行,并且具有输出数据916。这些图中的空心圆圈可表示根据第一上下文的输入数据值和/ 或输出数据空间(例如,没有回压被断言),并且这些图中的实心圆圈可表示根据第一上下文的输入数据值和/或输出数据空间(例如,没有回压被断言)。
在图9D中,处理元件902A-902D的上下文的提取仍在发生,并且输出数据916已由作为乘法器操作器908来执行的处理元件902K消耗,并且具有输出数据918。
在图9E中,处理元件902A-902D的上下文的提取完成,并且输出数据918已由作为切换操作器906来执行的处理元件902O消耗,并且具有输出数据918。例如由本地控制器908B开始处理元件的(例如,经配置和/或未经配置的)下一子集902E-902H的上下文。例如,任何输入数据、输出数据和相应的回压信号从经配置的处理元件902G被提取(并且被保存)。其余处理元件(902I-902P,例如,仅902I和902O)可继续操作,例如,假定它们具有输入数据和/或输出数据空间(例如,没有回压被断言)。在某些实施例中,数据可以不移动通过提取区域,例如,在此提取区域是处理元件902E-902H。因此,在其中提取区域将不接受新数据(例如,处理元件的那个区域断言其回压信号)的实施例中,输出数据920被停止(例如,它原本将去往作为挑选操作器904的处理元件902G)。在一个实施例中,新数据可例如由作为“相等检验”操作器910的处理元件902A和/或由作为“小于”操作器912的处理元件902B 为(例如,按程序流顺序)在提取区域上方的区域产生。
在图9F中,处理元件902E-902H的上下文的提取完成。例如由本地控制器908C开始处理元件的(例如,经配置和/或未经配置的)下一子集 902I-902L的上下文。例如,任何输入数据、输出数据和相应的回压信号从经配置的处理元件902K被提取(并且被保存)。其余处理元件(902M-902P,例如,仅902O)可继续操作,例如,假定它们具有输入数据和/或输出数据空间(例如,没有回压被断言)。在某些实施例中,数据可以不移动通过提取区域,例如,在此提取区域是处理元件902I-902L。因此,在其中提取区域(以及(逻辑上)在上方的任何区域)将不接受新数据(例如,处理元件的那个区域断言其回压信号以防止数据跨越那个区域)的实施例中,输出数据920被停止(例如,它原本将去往作为挑选操作器904的处理元件902G)。在一个实施例中,可为(例如,按程序流顺序)在提取区域上方的区域产生新数据,例如,其中来自作为“相等检验”操作器910的处理元件902A的输出数据922被停止去往处理元件902O(例如,跨过提取区域)和/或其中来自作为“小于”操作器912的处理元件902B的输出数据924不被停止去往处理元件902G(例如,不横跨(处理中)提取区域)。
在图9G中,处理元件902I-902L的上下文的提取完成。例如由本地控制器908D开始处理元件的(例如,经配置和/或未经配置的)下一子集 902M-902P的上下文。例如,任何输入数据、输出数据(被停止的输出数据920) 和相应的回压信号从经配置的处理元件902O被提取(并且被保存)。在此,没有进一步的下游处理元件要使它们的上下文被保存(例如,这是数据流图的该部分的结尾),因此提取几乎完成。上述处理元件(902A-902L,例如,仅902A、902B、902G和902K)可继续操作,例如,假定它们具有输入数据和/ 或输出数据空间(例如,没有回压被断言)。在某些实施例中,数据可以不移动通过提取区域,例如,在此提取区域是处理元件902M-902P。因此,在其中提取区域(以及(逻辑上)在上方的任何区域)将不接受新数据(例如,处理元件的那个区域断言其回压信号以防止数据跨越那个区域)的实施例中,来自处理元件902G的输出数据被停止(例如,处理元件902G正在等待来自处理元件902O的数据以继续进行)。在一个实施例中,可为(例如,按程序流顺序)在提取区域上方的区域产生新数据,例如,其中来自作为挑选操作器904 的处理元件902G的输出数据922与来自作为挑选操作器906的处理元件902O 的输出数据一起被停止,但是不被停止横跨(处理中)提取区域。
在图9H中,例如当输入数据和/或输出数据空间(例如,没有回压被断言)可用时,本地(例如,配置和/或提取)控制器908A-908D已完成它们对第一上下文的提取(以及对第二上下文的配置),并且现在可以操作。例如,在提取之后,可为例如作为第二上下文的(输入)操作数的不同集合重新使用空间阵列900(例如,加载于其中的数据流图)。在图9H中,(例如,来自在对下文二的前一操作的)数据输出926可以是可用的(例如,配置到空间阵列900中),并因此向上流到作为挑选操作器904的处理元件902G,如图9I中所示。
在图9J中,作为挑选操作器904的处理元件902G可具有其全部的操作数且没有回压信号,因此可产生输出数据928。在一个实施例中,为了访问本地控制器,更高级别的控制器可具有对该更高级别的控制器正在管理的本地控制器的地址的访问权。本地控制器可具有对它正在管理的处理元件的地址的访问权(例如,可计算它正在管理的处理元件的地址)。可由更高级别的 (例如,区域性)控制器(例如,其知晓空间阵列上下文的存储器格式)将 PE的地址发送进来。
图10A图示根据本公开的实施例的所提取的状态1000。图10B图示根据本公开的实施例的在提取的开始时的状态1000。图10A和图10B图示当提取是分阶段的时,该提取可采取图10A中示出的数据流图的形式(例如,其中来自那个被保存的状态的输入和输出数据以空心圆圈来指示),但是该确切形式的那个状态从未在任一时刻存在过。因此,可以说图10A中的分阶段的提取输出捕获空间阵列(例如,在空间阵列中表示的数据流图)的合法视图(例如,状态),而图10B图示在包括多个阶段(例如,数据流图的单个部分的多个阶段)的分阶段提取的开始时的状态。图10A中的状态可以是例如(当提取首先开始时的)初始状态之前的若干步骤,因为若干更多操作已执行,例如,消耗输入数据1002和1004,并且产生输出数据1006。
图11图示根据本公开的实施例的用于(例如,配置)控制器的状态机1100。控制器可包括例如每个本地(例如,配置)控制器中的硬件状态机。状态机可以是Mealy机或Moore机。状态1102可以是这样一种状态:其中, (例如,更高级别的)控制器发送控制消息以例如针对另一(例如,本地)控制器的先前经配置的一个或多个PE发起上下文切换。在状态1104中,(例如,当输入数据操作数和输出空间可用时),先前经配置的一个或多个PE可根据 (例如,数据流图的)第一(例如,旧)上下文来操作,例如直到数据全部被消耗。随后可例如基于所请求的上下文切换而进入状态1106,并且先前经配置的一个或多个PE的上下文(例如,旧配置)可开始被提取。在完成提取后(例如,在状态1106后或在进入状态1112后),本地(例如,配置)控制器可将消息发送到邻近的控制器以形成流水线化的上下文切换。在一个实施例中,本地(例如,配置)控制器将消息发送到在后的一个或多个本地(例如,配置) 控制器(例如,2个、3个、4个、5个控制器等),作为它们可以开始提取它们的处理元件的子集的第一上下文的指示。附加地或替代地,本地(例如,配置)控制器将消息发送到在先的一个或多个本地(例如,配置)控制器(例如, 2个、3个、4个、5个控制器等),作为它们可以开始将第二(例如,新)上下文配置(例如,加载)到它们的处理元件的子集中的指示。在状态1112中,最新经提取的处理元件随后可被保持在未经配置状态。在状态1114中,例如在从在后的一个或多个本地(例如,配置)控制器(例如,2个、3个、4个、 5个控制器等)接收到这些控制器对第一状态的提取完成的消息后,那些未经配置的处理元件可开始将第二上下文配置(例如,加载)到它们的处理元件的子集中。在状态1116中,例如当(例如,更高级别的)控制器发送控制消息以发起另一上下文切换时,那个新状态(例如,配置)可在(多个)经配置的处理元件上执行,并且随后返回到状态1104。在一个实施例中,上下文可来自 (多个)不同数据流图或同一数据流图(的例如不同部分)。
图12A图示根据本公开的实施例的对用于处理元件的空间阵列 1202的上下文的提取。示意性地图示空间阵列1202以示出形成空间阵列范围的(例如,结构范围的)屏障(例如,提取区域)的初始配置消息,其例如在更高级别的(例如,片级)控制器1204的控制和指示下扫过整个空间阵列(例如,结构)。控制器1204可安排本地控制器来协调该流水线。ACI网络和RAF 可如下文所讨论。虽然图12A在此图示一个阶段排序,但是其他拓扑是可能的。
图12B图示根据本公开的实施例的对用于处理元件的空间阵列 1202的上下文的提取。示意性地图示空间阵列1202以示出空间阵列范围的(例如,结构范围的)屏障(例如,处于“等待配置”的提取区域),其例如在更高级别的(例如,片级)控制器1204的控制和指示下扫过整个空间阵列(例如,结构)。控制器1204可安排本地控制器来协调该流水线。在一个实施例中,图12B中的空间阵列1202的状态与前述附图中的那些状态对应。ACI网络和 RAF可如下文所讨论。虽然图12B在此图示一个阶段排序,但是其他拓扑是可能的。
图13图示根据本公开的实施例的对用于处理元件的空间阵列的上下文的分阶段提取,该处理元件的空间阵列包括其间的(例如,夹层或全局) 网络。网络可以是本文中讨论的任何网络。图13包括提取区域1302、POST (提取)(后(提取))区域1304和PRIOR(于提取)(先(于提取))区域1306的框图图示,其包括横跨这些区域的网络消息。
网络中的消息可横跨阶段边界(例如,提取区域)。在一个实施例中,硬件(例如,如本文中所讨论的网络控制器)记录网络令牌的状态。在一个实施例中,网络控制器可在每个通道上注入POST(例如,提取区域)转变消息,并且直到接收到POST消息才释放PRIOR(例如,提取区域)消息当对于所有活跃通道都接收到POST消息时,网络控制器可记录该网络控制器的状态。在一个实施例中,对消息的早消耗是合法的,但是状态被保留。匹配的消息(例如,来自同一上下文的消息)可被转发,例如,PRIOR可消耗PRIOR 消息,并且POST可消耗POST消息。失配可意味着数据来自错误的纪元并需要等待。PRIOR消息可被促进。PRIOR端点可等待提取。PRIOR消息可等待 POST转变。
图14图示根据本公开的实施例的对用于处理元件1402的空间阵列1400的上下文的分阶段提取,该分阶段提取包括存储器访问。在一些实施例中,可利用通过存储器的通信。在所描绘的实施例中,仅POST区域中的(例如,在提取区域之后的)处理元件接触存储器(例如,高速缓存),例如,通过首先提取近存储器(例如,接近请求地址文件(RAF)电路,其可以如本文中所述)PE以迅速地重新启用它们而得以缓解。在一个实施例中,空间阵列 (例如,控制器)用于将PE的PRIOR区域和PE的POST区域视为冲突的通道组,应这两个区域之间的冲突检测而回滚到PRIOR的快照。在一个实施例中,空间阵列(例如,控制器)用于在高速缓存中保持旧值和新值存活,例如,允许每个纪元访问该其值。在一个实施例中,对物理上接近高速缓存(例如,图14中的L2高速缓存)的处理元件的提取可帮助迅速恢复访问,例如,其中在图14的实施例中,提取向外继续进行(例如,辐射)。空间阵列1400可耦合至向量处理单元1404和/或处理器核1410。
处置存储器操作:情况可能是在提取时期期间,上下文具有待决的存储器操作。在这种情况下,高速缓存接口(例如,CHA)将预留已分配给待决请求的资源(例如,重排序缓冲器中的槽),直到那些请求由存储器系统完成。在那个时刻,这些请求可被写入到被驱逐的进程的存储器中表示中,并且所分配的资源被返回到存储器接口供新配置的上下文使用。在一个实施例中,当请求是待决的时,相关联的资源不由新上下文使用。
图15A图示根据本公开的实施例的对用于处理元件的空间阵列 1500A的上下文的提取。在一个实施例中,可维持第二(例如,下一个)提取区域(例如,其中没有数据可横跨区域)以便除了防止例如当前提取区域外还防止纪元间通信。在一个实施例中,例如当在提取期间(例如,经由回压信号) 禁用本地网络的情况下,可在无需对(多个)处理元件进行修改的情况下实现分阶段提取。这可提供不可逾越的屏障(例如,由于回压信号为活跃)。提取的双分层可确保第一层中的PE在它们转变到POST时不干扰PRIOR区域,例如,如图15A中那样。在某些实施例中,将细致的高级别安排和协调用于例如区域性和/或全局提取控制器的功能。POST可以指用新配置(例如,上下文) 来配置的新配置区域。PRIOR可以指用先前配置(例如,上下文)来配置的先前配置区域。
图15B图示根据本公开的实施例的对用于处理元件的空间阵列1500B的上下文的提取。图15B描绘流水线化的上下文切换的详细的时间片。在图15B中描绘五个区域:执行上下文、当前提取区域、当前配置区域和其间的缓冲器区域。
图16图示根据本公开的实施例的流程图1600。所描绘的流程1600 包括:1602:提供处理器,该处理器包括多个处理元件和多个处理元件之间的互连网络并具有数据流图,该数据流图包括多个节点,这些节点被覆盖到处理器的多个处理元件以及处理器的多个处理元件之间的互连网络中,并且每个节点被表示为互连网络和多个处理元件中的数据流操作器;1604:当传入操作数集(例如,输入数据和/或输出数据空间(例如,没有来自目的地的针对输出的回压被断言))到达多个处理元件时,利用互连网络和多个处理元件执行数据流图的操作;1606:利用处理器的配置控制器、根据用于数据流图的第一上下文的配置信息来配置多个处理元件的第一子集和不同的第二子集;以及1608:当在第一子集中完成了第一上下文的(例如,所有)待决操作之后,对于所请求的上下文切换,利用处理器的配置控制器、根据用于数据流图的第二上下文的配置信息来配置多个处理元件的第一子集,并且阻止第二上下文数据流从第一子集的输出进入不同的第二子集的输入,直到在该不同的第二子集中完成了第一上下文的待决操作。
图17图示根据本公开的实施例的流程图。所描绘的流程1700包括:1702:提供处理器,该处理器包括多个处理元件和多个处理元件之间的互连网络并具有数据流图,该数据流图包括多个节点,这些节点被覆盖到处理器的多个处理元件以及处理器的多个处理元件之间的互连网络中,并且每个节点被表示为互连网络和多个处理元件中的数据流操作器;1704:当传入操作数集到达多个处理元件时,利用互连网络和多个处理元件执行数据流图的操作; 1706:利用处理器的第一配置控制器和第二配置控制器、根据用于数据流图的第一上下文的对应的配置信息来配置多个处理元件的第一子集和不同的第二子集;以及1708:当在第一子集中完成了第一上下文的(例如,所有)待决操作之后,对于所请求的上下文切换,利用处理器的第一配置控制器、根据用于数据流图的第二上下文的配置信息来配置多个处理元件的第一子集,并且阻止第二上下文数据流从第一子集的输出进入不同的第二子集的输入,直到在该不同的第二子集中完成了第一上下文的待决操作。
2.CSA架构
CSA的某些实施例的目的是迅速且高效地执行程序(例如,由编译器产生的程序)。CSA架构的某些实施例提供支持编译器技术和编程范式的需求的编程抽象。CSA的实施例执行数据流图,例如,非常像经编译的程序的编译器自身的内部表示(IR)的程序表现形式。在该模型中,程序被表示为由节点(例如,顶点)和边缘组成的数据流图,该节点从(例如,涵盖计算操作和控制操作两者的)架构定义的数据流操作器的集合绘制,该边缘表示数据在数据流操作器之间的传送。执行可通过将数据流令牌(例如,作为数据值或表示数据值的数据流令牌)注入到数据流图中来进展。令牌可在其间流动,并可在每一个节点(例如,顶点)处被转换,从而例如形成完整的计算。在图18A- 图18C中示出样本数据流图及其距高级源代码的偏离,并且图20示出数据流图的执行的示例。
通过提供编译器所要求的确切的那些数据流图执行支持,CSA的实施例为数据流图执行进行配置。在一个实施例中,CSA是加速器(例如,图 2中的加速器),并且它不寻求提供在通用处理核(例如,图2中的核)上可用的必要但不频繁使用的机制(诸如,系统调用)中的一些。因此,在该实施例中,CSA可执行许多代码,但不能够执行所有代码。作为交换,CSA获得显著的性能和能量优势。为了实现以常用的序列化语言编写的代码的加速,本文中的实施例也引入若干新颖的架构特征来辅助编译器。一个具体的新颖性是 CSA对存储器的处理,这是先前已被忽略或未被很好地解决的课题。CSA的实施例在将数据流操作器(例如,相比将查找表(LUT))用作其基本架构接口方面也是独一无二的。
往回转到CSA的实施例,下面讨论数据流操作器。
2.1数据流操作器
加速器(例如,CSA)的实施例的关键架构接口是数据流操作器,例如,作为数据流图中的节点的直接表示。从操作的视角来看,数据流操作器流式地或以数据驱动方式表现。数据流操作器的传入操作数一可用,该数据流操作器就可执行。CSA数据流执行可(例如,仅)依赖于高度局部化的状态,从而例如导致伴随着分布式异步执行模型的高度可缩放架构。数据流操作器可包括算术数据流操作器,例如,以下一项或多项:浮点加法和乘法,整数加法、减法和乘法,各种形式的比较、逻辑操作器,以及移位。然而,CSA的实施例也可包括辅助程序图中的数据流令牌管理的丰富的控制操作器的集合。这些控制操作器的示例包括“挑选”操作器(例如,其将两个或更多个逻辑输入通道复用为单个输出通道)和“切换”操作器(例如,其操作为通道解复用器)(例如,从两个或更多个逻辑输入通道输出单个通道)。这些操作器可使编译器实现控制范式(诸如,条件表达式)。CSA的某些实施例可包括(例如,相对于较小数量的操作的)有限的数据流操作器集以实现密集且高能效的PE微架构。某些实施例可包括用于HPC代码中常见的复杂操作的数据流操作器。CSA数据流操作器架构对于部署特定的扩展是高度地可改变的。例如,更多复杂的数学数据流操作器(例如,三角函数)可被包括在某些实施例中以使某些数学密集型HPC工作负荷加速。类似地,神经网络调整的扩展可包括用于向量化、低精度算术的数据流操作器。
图18A图示根据本公开的实施例的程序源。程序源代码包括乘法函数(func)。图18B图示根据本公开的实施例的针对图18A的程序源的数据流图1800。数据流图1800包括挑选节点1804、切换节点1806和乘法节点1808。沿通信路径中的一条或多条通信路径,缓冲器可任选地可被包括。所描绘的数据流图1800可执行以下操作:利用挑选节点1804来选择输入X,将X与Y 相乘(例如,乘法节点1808),且随后从切换节点1806的左侧输出输出结果。图18C图示根据本公开的实施例的加速器(例如,CSA),该加速器具有配置成用于执行图18B的数据流图的多个处理元件1801。更具体地,数据流图1800 被覆盖到处理元件1801的阵列(以及例如其间的(多个)(例如,互连)网络)中,使得例如数据流图1800中的每一个节点被表示为处理元件1801的阵列中的数据流操作器。例如,某些数据流操作可以利用处理元件来实现,和/ 或某些数据流操作可以利用通信网络(例如,其网络数据流端点电路)来实现。例如,Pick、PickSingleLeg、PickAny、Switch和/或SwitchAny操作可以利用通信网络(例如,其网络数据流端点电路)的一个或多个组件来实现,例如,与处理元件形成对照。
在一个实施例中,处理元件1801的阵列中的处理元件中的一个或多个用于通过存储器接口1802来访问存储器。在一个实施例中,数据流图1800 的挑选节点1804因此对应于挑选操作器1804A(例如,由挑选操作器1804A 表示),数据流图1800的切换节点1806因此对应于切换操作器1806A(例如,由切换操作器1806A表示),并且数据流图1800的乘法器节点1808因此对应于乘法器操作器1808A(例如,由乘法器操作器1808A表示)。另一处理元件和/或流控制路径网络可将控制信号(例如,控制令牌)提供给挑选操作器1804A 和切换操作器1806A以执行图18A中的操作。在一个实施例中,处理元件1801 的阵列配置成用于在执行开始之前执行图18B的数据流图1800。在一个实施例中,编译器执行从图18A到图18B的转换。在一个实施例中,进入处理元件的阵列的数据流图节点的输入在逻辑上将数据流图嵌入到处理元件的阵列中(例如,如下文中进一步所讨论),使得输入/输出路径经配置以产生所需的结果。
2.2等待时间不敏感的通道
通信弧(arc)是数据流图的第二主组件。CSA的某些实施例将这些弧描述为等待时间不敏感的通道,例如,有序、回压式(例如,直到有用于存储输出的空间才产生或发送输出)、点对点通信通道。如同数据流操作器那样,等待时间不敏感的通道在根本上是异步的,从而给予了组合许多类型的网络来实现特定图的通道的自由。等待时间不敏感的通道可具有任意长的等待时间,并仍忠实地实现CSA架构。然而,在某些实施例中,在性能和能量方面具有强烈的动机来使等待时间尽可能小。本文中的第3.2公开了网络微架构,其中,以流水线方式、在不多于一个周期等待时间的情况下实现数据流图通道。等待时间不敏感的通道的实施例提供关键的抽象层,该关键的抽象层可与CSA 架构一起利用以向应用编程器提供许多运行时服务。例如,CSA可在实现CSA 配置(将程序加载到CSA阵列上)时利用等待时间不敏感的通道。
图19图示根据本公开的实施例的数据流图1900的示例执行。在步骤1,输入值(例如,针对图18B中的X的1以及针对图18B中的Y的2) 可被加载在数据流图1900中以执行1*2乘法操作。数据输入值中的一个或多个在操作中可以是静态的(例如,恒定的)(例如,参照图18B,X为1及Y 为2)或在操作期间被更新。在步骤2,(例如,流控制路径网络上的)处理元件或其他电路将0输出至挑选节点1904的控制输入(例如,mux控制信号) (例如,从端口获得“1”作为源送至其输出),并输出0以控制切换节点1906 的输入(例如,mux控制信号)(例如,以便使其输入离开端口“0”向外提供至目的地(例如,下游处理元件))。在步骤3,数据值1从挑选节点1904(并且例如在挑选节点1904处消耗其控制信号“0”)输出到乘法器节点1908,以便在步骤4处与数据值2相乘。在步骤4,乘法器节点1908的输出到达切换节点1906,例如,其使切换节点1906消耗控制信号“0”以在步骤5处从切换节点1906 的端口“0”输出值2。随后,该操作完成。因此可相应地对CSA编程,使得每一个节点的对应数据流操作器执行图19中的操作。虽然在该示例中执行被串行化,但是原则上所有数据流操作可并行地执行。在图19中使用步骤以便将数据流执行与任何物理微架构表现形式区分开。在一个实施例中,下游处理元件用于(例如,在流控制路径网络上)将信号(或不将就绪信号)发送至切换装置1906,以使来自切换装置1906的输出停止,直到下游处理元件为输出做好准备(例如,具有存储空间)。
2.3存储器
数据流架构总体上聚焦通信和数据操纵,较不关注状态。然而,启用实际的软件、尤其是以传统序列化语言编写的程序要求非常关注与存储器的对接。CSA的某些实施例将架构存储器操作用作它们对(例如,大型)状态化存储的主接口。从数据流图的视角看,存储器操作类似于其他数据流操作,例外在于,存储器操作具有更新共享存储的副作用。具体地,本文中的某些实施例的存储器操作具有与每一个其他数据流操作器相同的语义,例如,当它们的操作数(例如,地址)可用且在一些等待时间之后响应被产生时,这些存储器操作“执行”。本文中的某些实施例显式地将操作数输入与结果输出解耦,使得存储器操作器本质上是流水线式的并具有产生许多同时的待决请求的潜力,从而例如使存储器操作器非常适应存储器子系统的等待时间和带宽特性。CSA 的实施例提供基本存储器操作,诸如,加载和存储,该加载取得地址通道,并以对应于该地址的值填充响应通道。CSA的实施例也提供更高级的操作(诸如,存储器内原子和一致性操作器)。这些操作可具有与其对等的冯·诺依曼操作类似的语义。CSA的实施例可对使用序列化语言(诸如,C和Fortran)描述的现有程序进行加速。支持这些语言模型的结果是对程序存储器顺序进行寻址,例如,对典型地由这些语言规定的存储器操作的串行排序。
图20图示根据本公开的实施例的程序源(例如,C代码)2000。根据C编程语言的存储器语义,存储器复制(memcpy)应当被串行化。然而,如果已知阵列A与阵列B不相交,则memcpy可利用CSA的实施例来并行化。图20进一步图示程序顺序的问题。一般而言,编译器不能够证明阵列A与阵列B不同,例如,无论对于相同索引值还是对于跨循环体的不同索引值。这被称为指针或存储器别名(aliasing)。由于编译器用于生成静态地正确的代码,因此它们经常被迫地使存储器访问串行化。典型地,针对序列化的冯·诺依曼架构的编译器将指令排序用作实施程序顺序的自然手段。然而,CSA的实施例没有如程序计数器所定义的指令排序或基于指令的程序排序的概念。在某些实施例中,传入依赖性令牌(例如,其不包含架构可见信息)像所有其他数据流令牌,并且存储器操作直到它们接收到依赖性令牌才可以执行。在某些实施例中,一旦存储器操作的操作对逻辑上后续的依赖性存储器操作可见,这些存储器操作就产生传出依赖性令牌。在某些实施例中,依赖性令牌类似于数据流图中的其他数据流令牌。例如,由于存储器操作在有条件上下文中发生,因此依赖性令牌也可使用在第2.1节中所述的控制操作器来操纵(例如,像任何其他令牌那样)。依赖性令牌可具有使存储器访问串行化的效果,从而例如向编译器提供在架构上定义存储器访问的顺序的手段。
2.4运行时服务
对CSA的实施例的主要的架构方面考虑涉及用户级程序的实际执行,但是提供巩固该执行的若干支持机制也是理想的。这其中的首要因素是配置(其中,数据流图被加载到CSA中)、提取(其中,执行图的状态被移动到存储器)和异常(其中,结构中的数学、软性和其他类型的错误可能由外部实体检测到并处置)。以下第3.6节讨论用于实现这些功能的高效、高度流水线化的实现方式的CSA的实施例的等待时间不敏感的数据流架构的属性。从概念上说,配置可将数据流图的状态(例如,一般从存储器)加载到互连(和 /或通信网络(例如,其网络数据流端点电路))和处理元件(例如,结构)中。在该步骤期间,CSA中的所有结构可被加载有新数据流图,并且任何数据流令牌存活于那个图中例如作为上下文切换的结果。CSA的等待时间不敏感语义可准许结构的分布式异步初始化,例如,PE一经配置,它们就可立即开始执行。未经配置的PE可回压它们的通道,直到这些PE被配置,从而例如防止经配置元件与未经配置元件之间的通信。CAS配置可被分区为特权级和用户级状态。此类两级分区可使结构的主配置在不调用操作系统的情况下发生。在提取的一个实施例中,数据流图的逻辑示图被捕捉并被提交到存储器中,例如,包括图中的所有实况的控制和数据流令牌和状态。
提取也可在通过创建结构检查点来提供可靠性保证时发挥作用。 CSA中的异常一般可由导致处理器中的异常相同的事件导致,这些事件诸如,非法操作器变元或可靠性、可用性和耐用性(RAS)事件。在某些实施例中,在(例如,校验变元值的)数据流操作器的级别上或通过模块化算术方案检测异常。在检测到异常后,数据流操作器(例如,电路)可停止并发射异常消息,该异常消息例如包含操作标识符和已发生的问题的性质的一些细节两者。在一些实施例中,数据流操作器将保持停止,直到它已被重配置。随后,异常消息可被传递至相关联的处理器(例如,核)以用于服务(例如,其可包括提取图供软件分析)。
2.5片级架构
CSA计算机架构(例如,针对HPC和数据中心用途)的实施例是分片的。图21和图23示出CSA的片级部署。图23示出CSA的全片实现方式,例如,其可以是具有核的处理器的加速器。该架构的主要优势可以是降低的设计风险,例如使得CSA与核在制造时被完全解耦。除了允许更好的组件重新使用之外,这还可允许组件(像CSA高速缓存)仅考虑CSA,而不是例如需要并入对核的更严格的等待时间要求。最终,分开的片可允许CSA与小型核或大型核集成。CSA的一个实施例捕捉大多数向量并行的工作负荷,使得大多数向量型工作负荷直接在CSA上运行,但是在某些实施例中,核中的向量型指令可被包括以例如支持传统的二进制。
3.微架构
在一个实施例中,CSA微架构的目的是提供由CAS架构指定的每一个数据流操作器的高质量实现方式。CSA微架构的实施例提供了:微架构的每一个处理元件(和/或通信网络(例如,其网络数据流端点电路))都对应于架构数据流图中的大约一个节点(例如,实体)。在一个实施例中,数据流图中的节点分布在多个网络数据流端点电路中。在某些实施例中,这导致不仅紧凑而且高能效的架构元件,紧凑导致密集的计算阵列,高能效则例如处理元件 (PE)既简单又高度地未经复用(例如,针对CSA的配置(例如,编程)执行单个数据流操)。为了进一步减小能量和实现面积,CSA可包括可配置异构结构样式,其中,其每一个PE仅实现数据流操作器的子集(例如,利用以(多个)网络数据流端点电路实现的数据流操作器的分开的子集)。可供应外围和支持子系统(诸如,CSA高速缓存)以支持主CSA处理结构自身中的分布式并行性现状。CSA微架构的实现方式可实现存在于架构中的数据流和等待时间不敏感的通信抽象。在某些实施例中,在编译器生成的图中的节点与CSA中的数据流操作器(例如,数据流操作器计算元件)之间(例如,实质上)存在一对一对应关系。
以下是对示例CSA的讨论,随后是对微架构的更详细讨论。本文中的某些实施例提供允许容易的编译的CSA,例如,与现有的FPGA编译器形成对照,现有的FPGA编译器处置编程语言(例如,C或C++)的小子集,并且编译小型程序甚至都需要许多小时。
CSA架构的某些实施例准许像双精度浮点这样的异构粗粒度操作。程序能以较不粗糙粒度的操作表达,例如使得所公开的编译器比传统的空间编译器运行得更快。某些实施例包括具有新处理元件的结构来支持像程序排序的存储器访问这样的序列化概念。某些实施例实现用于支持粗粒度数据流型通信通道的硬件。这种通信模型是抽象的,并且非常接近由编译器使用的控制数据流表示。本文中的某些实施例包括支持单周期等待时间通信的网络实现方式,例如,利用支持单控制数据流操作的(例如,小型)PE。在某些实施例中,这不仅改善能效和性能,而且还简化了编译,因为编译器在在高级数据流构造与结构之间进行一对一映射。本文中的某些实施例因此简化了将现有的(例如, C、C++或Fortran)程序编译至CSA(例如,结构)的任务。
能效可以是现代计算机系统中的首要考虑。本文中的某些实施例提供高能效空间架构的新模式。在某些实施例中,这些架构形成结构,该结构具有小型、高能效、面向数据流的处理元件(PE)(和/或分组交换型通信网络(例如,其网络数据流端点电路))与轻量电路交换型通信网络(例如,互连)的异构混合的独特组成,例如,该结构具有对流控制的加强的支持。由于每一者的能量优势,这些组件的组合可形成适用于以极其高能效方式来执行编译器生成的并行程序的空间加速器(例如,作为计算机的部分)。由于该结构是异构的,可通过引入新的域特定的PE来为不同的应用域定制某些实施例。例如,用于高性能计算的结构可包括针对双精度、融合乘-加的某种定制,而针对深度神经网络的结构可包括低精度浮点操作。
空间架构模式(例如,如图21中所例示)是由处理元件(PE)间网络连接的轻量型PE的组成。一般而言,PE可包括数据流操作器,例如,其中一旦(例如,所有的)输入操作数到达数据流操作器,某个操作(例如,微指令或微指令的集合)就被执行,并且结果被转发到下游操作器。因此,控制、调度和数据存储可在多个PE之间分布,从而例如去除主导经典处理器的集中式结构的开销。
程序可通过配置PE和网络而被转换为数据流图以表达该程序的控制数据流图,该数据流图被映射到架构上。通信通道可以是流受控且完全回压的,使得例如如果源通信通道没有数据或者目的地通信信道为满,则PE将停止。在一个实施例中,在运行时,数据流过已被配置成用于实现操作(例如,经加速的算法)的PE和通道。例如,数据可从存储器通过结构而流入,并且随后向外回到存储器。
此类架构的实施例相对于传统多核处理器可实现卓越的性能效率: (例如,以PE形式的)计算相比在较大核中可以更简单、能效更高且更丰富,并且与例如像在典型的多核处理器中那样在宽的全芯片网络上进行形成对照,通信可以是直接的且主要是短途的。此外,由于架构的实施例是极度并行的,因此在不严重影响吞吐量的情况下,许多强大的电路和器件级优化是可能的,例如,低泄漏器件和低工作电压。这些较低级别的优化可实现相对于传统核的甚至更大的性能优势。这些实施例的在架构级、电路级和器件级产出的效率的组合是引人注目的。随着晶体管密度继续增加,该架构的实施例可实现更大的有效区域。
本文中的实施例提供数据流支持和电路交换的独特组合以使结构相比先前的架构能够更小,能效更高,并提供更高的聚合性能。FPGA一般朝着细粒度位操纵来调整,而本文中的实施例朝着HPC应用中发现的双精度浮点操作来调整。本文中的某些实施例除根据本公开的CSA之外还可包括FPGA。
本文中的某些实施例将轻量型网络与高能效数据流处理元件(和/ 或通信网络(例如,其网络数据流端点电路))组合以形成高吞吐量、低等待时间、高能效HPC结构。该低等待时间网络允许以更少的功能(例如,仅一条或两条指令,并也许只有一个架构可见寄存器,因为将多个PE聚集在一起来形成完整的程序是高效的)来实现处理元件(和/或通信网络(例如,其网络数据流端点电路))的建立。
相对于处理器核,本文中的CSA实施例可提供更多计算密度和能效。例如,当PE(例如,相比核)非常小时,CSA可比核执行多得多的操作,并且可具有比核多得多的计算并行性,例如,也许多达作为向量处理单元(VPU) 的FMA的数量的16倍。为了利用所有这些计算元件,在某些实施例中,每个操作的能量非常低。
本申请的数据流架构的实施例的能量优势有许多。并行性在数据流图中是显式的,并且CSA架构的实施例不花费能量或花费最小的能量来提取该并行性,例如,不像乱序处理器,该乱序处理器每当指令被执行时就必须重新发现并行性。在一个实施例中,由于每一个PE负责单个操作,因此寄存器组和端口计数可以是小的,例如经常仅为一个,并因此比在核中的它们的对等物使用更少的能量。某些CSA包括许多PE,这些PE中的每一个保存实况程序值,从而给予传统架构中的巨型寄存器组的聚合效应,这显著地减少了存储器访问。在其中存储器是多端口且分布式的实施例中,CSA相比核可维持多得多的待决存储器请求并利用更多带宽。这些优势可组合以实现现对于裸算术电路的成本仅为小百分比的每瓦能量等级。例如,在整数相乘的情况下,CSA 可消耗不比底层乘法电路多25%的能量。相对于核的一个实施例,那个CSA 结构中的整数操作消耗每个整数操作能量的小于1/30。
从编程的角度来看,CSA架构的实施例的应用特定的顺应性实现相比向量处理单元(VPU)的显著优势。在传统的非灵活性架构中,像浮点除法或各种超越数学函数这样的功能单元的数量必须在设计时基于一些期望的用例来选择。在CSA架构的实施例中,此类函数可(例如,由用户而非制造商)基于每一个应用的要求配置到结构中。应用吞吐量可由此进一步增加。同时,通过避免固化此类函数并转而供应像浮点乘法那样的基元函数的更多实例, CSA的实施例的计算密度得以改善。这些优势在HPC工作负荷中可以是显著的,HPC工作负荷中的一些在超越函数中花费浮点执行时间的75%。
CSA的某些实施例将显著的进展表示为面向数据流的空间架构,例如,本公开的PE可以更小,但也能效也更高。这些改善可直接源于面向数据流的PE与轻量、电路交换型互连的组合,轻量、电路交换型互连例如具有单周期等待时间,这例如与(例如具有高至少300%的等待时间的)分组交换型网络形成对照。PE的某些实施例支持32位或64位操作。本文中的某些实施例准许引入新的应用特定的PE,例如,用于机器学习或安全,并且不仅是同构组合。本文中的某些实施例将轻量、面向数据流的处理元件与轻量、低等待时间网络组合以形成高能效计算结构。
为使某些空间架构能够成功,编程者将花相对而言很少的功夫来配置它们,例如,同时获得相对于序列化核的显著的功率和性能优越性。本文中的某些实施例提供易于(例如,由编译器)编程、高功率效率且高度并行的 CSA(例如,空间结构)。本文中的某些实施例提供实现这三个目标的(例如,互连)网络。从可编程性的角度看,网络的某些实施例提供流受控的通道,该流受控的通道例如对应于编译器中使用的执行的控制数据流图(CDFG)模型。某些网络实施例利用专用电路交换型链路,使得程序性能更易于由人和编译器两者推导出,因为性能是可预测的。某些网络实施例提供高带宽和低等待时间两者。某些网络实施例(例如,静态的、电路交换)提供0至1周期的等待时间(例如,取决于传输距离)。某些网络实施例通过并行地(并例如在低级金属中)布置若干网络来提供高带宽。某些网络实施例在低级金属中且通过短距离来通信,因此功率效率非常高。
网络的某些实施例包括用于流控制的架构支持。例如,在由小型处理元件(PE)组成的空间加速器中,通信等待时间和带宽对于总体程序性能可以是关键的。本文中的某些实施例提供轻量、电路交换型网络以及支持该网络所需的微架构控制特征,该轻量、电路交换型网络促进空间处理阵列(诸如,图21中所示的空间阵列)中的PE之间的通信。网络的某些实施例实现点对点、流受控通信通道的构造,该点对点、流受控通信通道支持面向数据流的处理元件(PE)的通信。除了点对点通信之外,本文中的某些网络还支持多播通信。通信通道可通过静态配置网络以形成PE之间的虚拟电路来形成。本文中的电路交换技术可减小通信等待时间并相应地使网络缓冲最小化,从而例如产生高性能和高能效两者。在网络的某些实施例中,PE间等待时间可低至零个周期,这意味着下游PE可在数据被产生后在该周期内操作该数据。为了获得甚至更高的带宽,并且为了准许更多程序,多个网络可并行地布置,例如,如图21 中所示。
空间架构(诸如,图21中所示的空间架构)可以是由PE间网络 (和/或通信网络(例如,其网络数据流端点电路))连接的轻量型处理元件的组成。被视为数据流图的程序可通过配置PE和网络而被映射到架构上。一般而言,PE可被配置为数据流操作器,并且一旦(例如,所有的)输入操作数到达PE,随后一些操作就可发生,并且结果被转发到所需的下游PE。PE可通过专用虚拟电路进行通信,该专用虚拟电路通过静态地配置电路交换型通信网络而形成。这些虚拟电路可以是流受控且完全被回压(back pressure)的,使得例如如果源没有数据或目的地为满,则PE将停止。在运行时,数据可流经实现经映射算法的PE。例如,数据可从存储器通过结构而流入,随后向外回到存储器。该架构的实施例相对于传统多核处理器可实现卓越的性能效率:例如,其中,与扩展存储器系统相反,以PE形式的计算比较大的核更简单且更多,并且通信是直接的。
图21图示根据本公开的实施例的加速器片2100,该加速器片2100 包括处理元件(PE)的阵列。互连网络被描绘为电路交换型、静态配置的通信通道。例如,通道的集合通过切换装置(例如,第一网络中的切换装置2110 和第二网络中的切换装置2120)被耦合在一起。第一网络和第二网络可以是分开的或可以耦合在一起。例如,切换装置2110可将四个数据路径2112、2114、 2116、2118中的一个或多个耦合在一起,例如,经配置以执行根据数据流图的操作。在一个实施例中,数据路径的数量是任意多个。处理元件(例如,处理元件2104)可如本文中所公开,例如,如图24中那样。加速器片2100包括存储器/高速缓存层次结构接口2102,以便例如将加速器片2100与储存器和/或高速缓存对接。数据路径(例如,2118)可延伸至另一片或可终止于例如片的边缘处。处理元件可包括输入缓冲器(例如,缓冲器2106)和输出缓冲器(例如,缓冲器2108)。
操作可基于这些操作的输入的可用性以及PE的状态来执行。PE 可从输入通道获取操作数,并且可将结果写至输出通道,但是也可使用内部寄存器状态。本文中的某些实施例包括可配置数据流友好型PE。图24示出一个此类PE的详细框图:整数PE。该PE由若干I/O缓冲器、ALU、存储寄存器、一些指令寄存器和调度器组成。在每一个周期,调度器可基于输入和输出缓冲器的可用性以及PE的状态来选择供执行的指令。随后,操作的结果被写至输出寄存器,或被写至(例如,PE本地的)寄存器。被写至输出缓冲器的数据可被传输到下游PE用于进一步处理。这种PE样式可以是极其高能效的,例如,与从复杂的多端口寄存器组读取数据不同,PE从寄存器读取该数据。类似地,指令可被直接存储在寄存器中,而不是被存储在虚拟化的指令高速缓存中。
指令寄存器可在特殊的配置步骤期间被设置。在该步骤期间,除 PE间网络之外,辅助的控制线和状态也可用于跨包含结构的若干PE使配置流入。作为并行性的结果,此类网络的某些实施例可提供快速的重配置,例如,片尺寸的结构可在小于约10微秒内被配置。
图24表示处理元件的一个示例配置,例如,其中所有架构元件尺寸设定为最小。在其他实施例中,处理元件的多个组件中的每一个组件被独立地缩放以产生新PE。例如,为了处置更多复杂程序,可引入可由PE执行的更多数量的指令。可配置性的第二个维度是PE算术逻辑单元(ALU)的功能。在图24中,整数PE被描绘为其可支持加法、减法和各种逻辑操作。通过将不同种类的功能单元替换到PE中,可以创建其他种类的PE。例如,整数乘法 PE可不具有寄存器、具有单条指令,并具有单个输出缓冲器。PE的某些实施例将融合乘加(FMA)解构为分开但紧密耦合的浮点乘法和浮点加法单元以改善对乘-加重型工作负荷的支持。在下文中进一步讨论PE。
图22A图示根据本公开的实施例的(例如,参照图21所讨论的网络一或网络二中的)可配置数据路径网络2200。网络2200包括多个多路复用器(例如,多路复用器2202、2204、2206),这些多路复用器可(例如,经由它们相应的控制信号)经配置以将(例如,来自PE的)一个或多个数据路径连接在一起。图22B图示根据本公开的实施例的(例如,参照图21所讨论的网络一或网络二中的)可配置流控制路径网络2201。网络可以是轻量PE至PE 网络。网络的某些实施例可视为用于构建分布式点对点数据通道的组成基元的集合。图22A示出使两个通道(粗体黑线和点状黑线)被启用的网络。粗体黑线通道是多播的,例如,单个输入被发送到两个输出。注意,即便专用的电路交换型路径形成在通道端点之间,通道也可在单个网络内的一些点处交叉。此外,该交叉不会引入两个通道之间的结构危害,使得每一个独立地且以全带宽操作。
实现分布式数据通道可包括图22A-图22B中所示的两个路径。前向或数据路径将数据从产生方携带到消耗方。多路复用器可配置成引导数据和有效位从产生方到消耗方,例如,如图22A中所示。在多播的情况下,数据将被引导到多个消耗方端点。网络的该实施例的第二部分是流控制或回压路径,其与前向数据路径相反地流动,例如,如图22B中所示。消耗方端点可断言它们何时准备好接受新数据。随后,可使用可配置的逻辑结(在图22B中标记为 (例如,回流)流控制功能)将这些信号往回引导到产生方。在一个实施例中,每一个流控制功能电路可以是多个切换装置(例如,多个mux),例如,与图 22A类似。流控制路径可处置控制数据从消耗方返回到产生方。结可启用多播,例如,其中在产生方假定数据已被接收之前,每一个消耗方准备好接收数据。在一个实施例中,PE是具有作为其架构接口的数据流操作器的PE。附加地或替代地,在一个实施例中,PE可以是(例如,结构中的)任何种类的PE,例如但不限于具有指令指针、经触发指令或基于状态机的架构接口的PE。
除了例如PE被静态地配置之外,网络也可被静态地配置。在该配置步骤期间,配置位可在每一个网络组件处被设置。这些位控制例如mux选择和流控制功能。网络可包括多个网络,例如,数据路径网络和流控制路径网络。网络或多个网络可利用不同宽度(例如,第一宽度以及更窄或更宽的宽度)的路径。在一个实施例中,数据路径网络具有比流控制路径网络的宽度更宽的(例如,位传输)宽度。在一个实施例中,第一网络和第二网络中的每一个都包括它们自身的数据路径网络和流控制路径网络,例如,数据路径网络A和流控制路径网络A以及更宽的数据路径网络B和流控制路径网络B。
网络的某些实施例是无缓冲的,并且数据用于在单个周期中在产生方与消耗方之间移动。网络的某些实施例也是无边界的,即,网络跨越整个结构。在一个实施例中,一个PE用于在单个周期中与任何其他PE通信。在一个实施例中,为了改善路由带宽,可在PE的行之间并行地布置若干网络。
相对于FPGA,本文中的网络的某些实施例具有三个优势:面积、频率和程序表达。本文中的网络的某些实施例以粗粒度操作,其例如减少配置位的数量并由此减小网络的面积。网络的某些实施例还通过在电路(例如,硅) 中直接实现流控制逻辑来获得面积减小。强化的网络实现方式的某些实施例也享有相对于FPGA的频率优势。由于面积和频率优势,当在吞吐量奇偶校验处使用较低电压的情况下,功率优势可存在。最后,网络的某些实施例提供比 FPGA线更好的高级语义,尤其是相对于可变时序方面,因此,那些实施例更容易由编译器针对。本文中的网络的某些实施例可视为用于构建分布式点对点数据通道的组成基元的集合。
在某些实施例中,多播源可能无法断言其数据有效,除非该多播源从每一个接收器(sink)接收到就绪信号。因此,在多播情况下,可利用额外的结和控制位。
像某些PE那样,网络可被静态地配置。在该步骤期间,配置位在每一个网络组件处被设置。这些位控制例如mux选择和流控制功能。本申请的网络的前向路径要求一些位以使该前向路径的mux摇摆。在图22A中示出的示例中,要求每一跳(hop)四个位:东mux和西mux中的每一个利用一个位,而向南的mux利用两个位。在该实施例中,四个位可用于数据路径,但是7 个位可用于(例如,流控制路径网络中的)流控制功能。如果例如CSA进一步利用北-南方向,则其他实施例可利用更多位。流控制功能可将控制位用于流控制可从其来的每一个方向。这可实现静态地设置流控制功能的灵敏度。以下表2总结了用于图22B中的网络的流控制功能的布尔代数实现方式,配置位被大写。在该示例中,利用七个位。
表2:流实现方式
对于从图22B中的左边起的第三个流控制框,EAST_WEST_SENSITIVE和 NORTH_SOUTH_SENSITIVE被描绘为经设置以分别实现对粗体线通道和点状线通道的流控制。
图23图示根据本公开的实施例的包括加速器2302的硬件处理器片2300。加速器2302可以是根据本公开的CSA。片2300包括多个高速缓存区块(例如,高速缓存区块2308)。请求地址文件(RAF)电路2310可被包括,例如,如在以下第3.2节中所讨论。ODI可以指管芯上互连,例如,跨整个管芯伸展、连接所有片的互连。OTI可以指(例如,跨片伸展,例如,将片上的高速缓存区块连接在一起的)片上互连。
3.1处理元件
在某些实施例中,CSA包括异构PE的阵列,其中,结构由若干类型的PE组成,这些PE中的每一个仅实现数据流操作器的子集。作为示例,图24示出能够实现宽泛的整数和控制操作集的PE的暂定的实现方式。其他 PE(包括支持浮点加法、浮点乘法、缓冲和某些控制操作的那些PE)也可具有类似的实现样式,例如,用适当的(数据流操作器)电路替代ALU。在执行开始之前,CSA的PE(例如,数据流操作器)可经配置(例如,编程)以实现来自PE支持的集合中的特定的数据流操作。配置可包括一个或两个控制字,这一个或两个控制字指定控制ALU的操作码、引导PE内的各种多路复用器,并驱使数据流进入PE通道以及离开PE通道。数据流操作器可通过对这些配置位进行微编码来实现。图24中的所描绘的整数PE 2400被组织成从顶部流动到底部的单级逻辑流水线。数据从本地网络集合中的一个本地网络进入PE 2400,在PE 2400中,该数据被寄存在输入缓冲器中用于后续操作。每一个PE可支持多个宽的面向数据的通道以及窄的面向控制的通道。所供应的通道的数量可基于PE的功能而有所变化,但是面向整数的PE的一个实施例具有2个宽的以及1-2个窄的输入和输出通道。虽然整数PE被实现为单周期流水线,但是可利用其他流水线式选择。例如,乘法PE可具有多个流水线级。
PE执行可按数据流样式继续进行。基于配置微代码,调度器可检查PE入口和出口缓冲器的状态,并且当用于经配置操作的所有输入都已到达且操作的出口缓冲器可用时,安排由(例如,ALU上的)数据操作器对操作的实际执行。所得到的值可被放置在经配置的出口缓冲器中。当缓冲变得可用时,一个PE的出口缓冲器与另一PE的入口缓冲器之间的传送可异步地发生。在某些实施例中,提供PE使得对于每个周期至少一个数据流操作完成。第2节讨论了涵盖基元操作(诸如,加(add)、异或(xor)或挑选)的数据流操作器。某些实施例可提供在能量、面积、性能和等待时间方面的优势。在一个实施例中,凭借对PE控制路径的扩展,可启用更多融合组合。在一个实施例中,处理元件的宽度为64位,例如用于对HPC中的双精度浮点计算的高度利用,并用于支持64位存储器寻址。
3.2通信网络
CSA微架构的实施例提供多个网络的层次结构,该多个网络一起提供跨多个通信比例的等待时间不敏感的通道的架构抽象的实现方式。CSA通信层次结构的最低级可以是本地网络。本地网络可以是静态地进行电路交换的,例如,使用配置寄存器来使本地网络数据路径中的(多个)多路复用器摇摆,以便在通信PE之间形成固定的电路径。在一个实施例中,对于每个数据流图 (例如,在PE配置的同时),对本地网络的配置设置一次。在一个实施例中,静态的电路交换针对能量进行优化,例如,其中CSA通信流量中的绝大多数 (也许是大于95%)将跨越本地网络。程序可包括在多个表达式中使用的术语。为了对这种情况进行优化,本文中的实施例提供对本地网络内的多播的硬件支持。若干本地网络可被聚集在一起以形成路由通道,这些路由通道例如在PE 的行和列之间散布(为网格)。作为优化,若干本地网络可被包括以携带控制令牌。相比FPGA互连,CSA本地网络能以数据路径的粒度被路由,并且另一区别可以是CSA对控制的处理。CSA本地网络的一个实施例是显式地流受控的(例如,回压)。例如,对于每一个前向数据路径和多路复用器集合,CSA 用于提供在物理上与前向数据路径配对的后向流动流控制路径。两个微架构路径的组合可提供等待时间不敏感的通道抽象的低等待时间、低能量、小面积、点对点实现方式。在一个实施例中,CSA的流控制线对于用户程序不是可见的,但是这些流控制线可由维护用户程序的架构操纵。例如,第2.2节中描述的异常处置机制可通过以下方式来实现:在检测到异常条件后,将流控制线拉到“不存在”状态。该动作不仅可温和地停止冒犯性计算中所涉及的流水线的那些部分,而且还可保持机器状态先于异常,以便例如进行诊断分析。第二网络层(例如,夹层网络)可以是共享的分组交换型网络。夹层网络可包括多个分布式网络控制器、网络数据流端点电路。夹层网络(例如,由图37中的虚线框示意性地指示的网络)能以例如等待时间、带宽和能量为代价来提供更一般的长距离通信。在一些程序中,多数通信可在本地网路上发生,因此相比而言,夹层网络供应将显著地减少,例如,每一个PE可连接至多个本地网络,但是CSA针对PE的每一个逻辑邻域将仅供应一个夹层端点。由于夹层实际上是共享网络,因此每一个夹层网络可携带多个逻辑上独立的通道,并例如以多个虚拟通道来供应。在一个实施例中,夹层网络的主要功能是用于提供PE间以及PE 与存储器间的宽范围通信。除了该能力之外,夹层还可包括例如用于某些数据流操作的(多个)网络数据流端点电路。除了该能力之外,夹层还可操作为运行时支持网络,例如,通过该运行时支持网络,各种服务能以用户-程序透明的方式来访问完整的结构。在该能力方面,夹层端点可在例如CSA配置期间充当用于其本地邻域的控制器。为了形成跨越CSA片的通道,可利用三个子通道和两个本地网络通道(其携带至夹层网络中的单个通道以及来自夹层网络中的单个通道的流量)。在一个实施例中,利用一个夹层通道,例如,一个夹层和两个本地=总共3个网络跳。
通道跨网络层的可组成性能以片间、管芯间以及结构粒度被扩展到更高级别的网络层。
图24图示根据本公开的实施例的处理元件2400。在一个实施例中,操作配置寄存器2419在配置(例如,映射)期间被加载,并且指定该处理(例如,计算元件)将执行的特定操作(或多个操作)。寄存器2420的活动可由那个操作控制(mux 2416的输出,例如,由调度器2414控制)。例如,当输入数据和控制输入到达时,调度器2414可调度处理元件2400的一个或多个操作。控制输入缓冲器2422连接至本地网络2402(例如,并且本地网络2402 可包括如图22A中的数据路径网络和如图22B中的流控制路径网络),并且当值到达(例如,网络具有(多个)数据位和(多个)有效位)时,以该值加载该控制输入缓冲器2422。控制输出缓冲器2432、数据输出缓冲器2434和/ 或数据输出缓冲器2436可接收处理元件2400的输出(例如,如由操作(mux 2416的输出)控制)。每当ALU 2418执行(也由mux 2416的输出控制)时,状态寄存器2438可被加载。控制输入缓冲器2422和控制输出缓冲器2432中的数据可以是单个位。mux 2421(例如,操作数A)和mux 2423(例如,操作数B)可作为输入的源。
例如,假设该处理(例如,计算)元件的操作是(或包括)在图 18B中被称为调用挑选的操作。则处理元件2400用于从数据输入缓冲器2424 或数据输入缓冲器2426选择数据,以便例如去往数据输出缓冲器2434(例如,默认情况)或数据输出缓冲器2436。因此,如果从数据输入缓冲器2424选择,则2422中的控制位可以指示0,或者如果从数据输入缓冲器2426选择,则2422 中的控制位可指示1。
例如,假设该处理(例如,计算)元件的操作是(或包括)在图 18B中被称为调用切换的操作。处理元件2400用于例如从数据输入缓冲器2424 (例如,默认情况)或数据输入缓冲器2426将数据输出到数据输出缓冲器2434 或数据输出缓冲器2436。因此,如果输出到数据输出缓冲器2434,则2422中的控制位可以指示0,或者如果输出到数据输出缓冲器2436,则2422中的控制位可指示1。
多个网络(例如,互连)(例如,(输入)网络2402、2404、2406 以及(输出)网络2408、2410、2412)可连接至处理元件。连接可以是例如参照图22A和图22B所讨论的切换装置。在一个实施例中,每一个网络包括两个子网络(或网络上的两个通道),例如,一个用于图22A中的数据路径网络,一个用于图22B中的流控制(例如,回压)路径网络。作为一个示例,本地网络2402(例如,建立为控制互连)被描绘为被切换(例如,连接)到控制输入缓冲器2422。在该实施例中,数据路径(例如,图22A中的网络)可携带控制输入值(例如,一个或多个位)(例如,控制令牌),并且流控制路径(例如,网络)可携带来自控制输入缓冲器2422的回压信号(例如,回压或无回压令牌),以便例如向上游产生方(例如,PE)指示直到回压信号指示在控制输入缓冲器2422中具有用于(例如,来自上游产生方的控制输出缓冲器的) 新控制输入值的空间,该新控制输入值才将被加载到(例如,发送到)控制输入缓冲器2422。在一个实施例中,直到同时满足(i)上游产生方从“控制输入”缓冲器2422接收到“空间可用”回压信号;以及(ii)新控制输入值从上游产生方被发送,该新控制输入值才可进入控制输入缓冲器2422,例如,并且这可使处理元件2400停止,直到那种情况发生(并且(多个)目标、输出缓冲器中的空间可用)。
数据输入缓冲器2424和数据输入缓冲器2426能以类似方式执行,例如,本地网络2404(例如,被建立为数据(与控制相对照)互连)被描绘为被切换(例如,连接)到数据输入缓冲器2424。在该实施例中,数据路径(例如,图22A中的网络)可携带数据输入值(例如,一个或多个位)(例如,数据流令牌),并且流控制路径(例如,网络)可携带来自数据输入缓冲器2424 的回压信号(例如,回压或无回压令牌),以便例如向上游产生方(例如,PE) 指示直到回压信号指示在数据输入缓冲器2424中具有用于(例如,来自上游产生方的数据输出缓冲器的)新数据输入值的空间,该新数据输入值才将被加载到(例如,发送到)数据输入缓冲器2424。在一个实施例中,直到同时满足(i)上游产生方从“数据输入”缓冲器2424接收到“空间可用”回压信号;以及 (ii)新数据输入值从上游产生方被发送,该新数据输入值才可进入数据输入缓冲器2424,例如,并且这可使处理元件2400停止,直到那种情况发生(并且(多个)目标、输出缓冲器中的空间可用)。控制输出值和/或数据输出可在它们相应的输出缓冲器(例如,2432、2434、2436)中被停止,直到回压信号指示在输入缓冲器中具有用于(多个)下游处理元件的可用空间。
处理元件2400可停止执行,直到其操作数(例如,控制输入值以及该控制输入值的一个或多个对应的数据输入值)被接收和/或直到处理元件 2400的(多个)输出缓冲器中具有用于将通过执行对那些操作数的操作而产生的数据的空间。
3.3存储器接口
请求地址文件(RAF)电路(在图25中示出其简化版本)可负责执行存储器操作,并充当CSA结构与存储器层次结构之间的中介。由此,RAF 的主要微架构任务可以是用于以CSA结构的有序语义使乱序存储器子系统合理化。在该能力方面,RAF电路可供应有完成缓冲器(例如,队列状结构),这些完成缓冲器对存储器响应重排序,并按请求顺序将这些存储器请求返回至结构。RAF电路的第二主要功能可以是用于以地址转换和页行走器(walker)的形式提供支持。传入虚拟地址可使用通道关联的转换后备缓冲器(TLB)被转换为物理地址。为了提供充足的存储器带宽,每一个CSA片可包括多个RAF 电路。像结构的各种PE那样,RAF电路可通过以下方式以数据流样式操作:在选择要执行的存储器操作之前,检查输入变元和输出缓冲(如果需要)的可用性。然而,与一些PE不同,RAF电路在若干共同定位的存储器操作之间被复用。经复用的RAF电路可用于使其各个子组件的面积开销最小化,从而例如共享加速器高速缓存接口(ACI)端口(在第3.4节中更详细地描述)、共享虚拟存储器(SVM)支持硬件、夹层网络接口和其他硬件管理设施。然而,具有也促进该选择的一些程序特性。在一个实施例中,(例如,有效的)数据流图用于轮循共享虚拟存储器系统中的存储器。存储器等待时间受约束程序 (像图遍历)可利用许多分开的存储器操作,以便由于依赖于存储器的控制流而使存储器带宽饱和。虽然每一个RAF都可被复用,但是CAS可包括片粒度的多个(例如,在8个与32个之间)RAF以确保足够的高速缓存带宽。RAF 可经由本地网络和夹层网络两者来与结构的其余部分通信。在RAF被复用的情况下,每一个RAF可与若干端口一起被供应到本地网络中。这些端口可充当至存储器的最低等待时间、高度确定性路径,供由等待时间敏感的或高带宽存储器操作使用。此外,RAF可被供应有夹层网络端点,例如,该夹层网络端点将存储器访问提供给运行时服务以及远端用户级存储器访问方。
图25图示根据本公开的实施例的请求地址文件(RAF)电路2500。在一个实施例中,在配置时,已经在数据流图中的存储器加载和存储操作在寄存器2510中被指定。随后,至数据流图中的那些存储器操作的弧可连接至输入队列2522、2524和2526。来自那些存储器操作的弧因此用于离开完成缓冲器2528、2530或2532。依赖性令牌(其可以是多个单个的位)到达队列2518 和2520。依赖性令牌将从队列2516离开。依赖性令牌计数器2514可以是队列的紧凑表示,并且可跟踪用于任何给定输入队列的依赖性令牌的数量。如果依赖性令牌计数器2514饱和,则没有附加的依赖性令牌可被生成用于新的存储器操作。相应地,存储器排序电路(例如,图26中的RAF)会停止调度新存储器操作,直到依赖性令牌计数器2514变成不饱和。
作为加载的示例,地址到达队列2522,调度器2512将队列2522 与2510中的加载匹配。用于该加载的完成缓冲器槽按地址到达的顺序被指派。假定图中的该特定加载没有指定的依赖性,则由调度器(例如,经由存储器命令2542)将该地址和完成缓冲器槽派遣到存储器系统。当结果返回到mux 2540 时(示意性地示出),该结果被存储到它指定的完成缓冲器槽中(例如,由于该结果沿着通过存储器系统全程都携带着目标槽)。完成缓冲器按地址到达的顺序将结果往回发送到本地网络(例如,本地网络2502、2504、2506或2508) 中。
存储可以更简单,例外在于,当任何操作被派遣到存储器系统之前,地址和数据两者必须到达。
3.4高速缓存
数据流图可能能够并行地生成大量(例如,字粒度)请求。因此, CSA的某些实施例将足够的带宽提供给高速缓存子系统以维护CSA。可利用高度区块化的高速缓存微架构(例如,如图26中所示)。图26图示根据本公开的实施例的电路2600,该电路2600具有耦合在多个加速器片2608、2610、 2612、2614与多个高速缓存区块(例如,高速缓存区块2602)之间的多个请求地址文件(RAF)电路(例如,RAF电路1)。在一个实施例中,RAF和高速缓存区块的数量可以按1:1或1:2的比率。高速缓存区块可包括完整的高速缓存行(例如,与按字切分形成对照),并且每一行具有在该高数缓存中的确切的一个归属地(home)。高速缓存行可经由伪随机函数被映射至高速缓存区块。CSA可采用SVM模型以与其他分片架构集成。某些实施例包括将RAF 连接到高速缓存区块的加速器高速缓存互连(ACI)网络。该网络可在RAF与高速缓存之间携带地址和数据。ACI的拓扑可以是级联的交叉开关,例如,作为等待时间与实现复杂度之间的折中。
3.5浮点支持
某些HPC应用由它们对于显著的浮点带宽的需求来表征。为了满足该需求,例如取决于片配置,CSA的实施例可被供应有多个(例如,每个可被供应有128个与256个之间的)浮点加法和乘法PE。CSA可提供一些其他扩展精度模式,以便例如简化数学库实现方式。CSA浮点PE可支持单精度和双精度两者,但是较低精度的PE可支持机器学习工作负荷。CSA可提供比处理核高一数量级的浮点性能。在一个实施例中,除了增加浮点带宽之外,为了驱动所有浮点单元,浮点操作中消耗的能量减少。例如,为了减少能量,CSA 可选择性地对浮点乘法器阵列的低阶位门控。在检查浮点算术的行为时,乘法阵列的低阶位可能不会经常影响最终经舍入的积。图27图示根据本公开的实施例的分区为三个区域(结果区域、三个潜在的进位区域2702、2704、2706 和门控区域)的浮点乘法器2700。在某些实施例中,进位区域可能影响结果区域,而门控区域不太可能影响结果区域。考虑g位的门控区域,最大进位可以是:
给定该最大进位,如果进位区域的结果小于2c–g(其中,进位区域为c位宽),则门控区域可被忽略,因为该门控区域不影响结果区域。增加g意味着更有可能将需要门控区域,而增加c意味着在随机假定下,该门控区域将不被使用,并且可被禁用以避免能耗。在CSA浮点乘法PE的实施例中,利用两级流水线式方式,其中,首先确定进位区域,随后,如果发现门控区域影响结果,则确定该门控区域。如果知晓关于乘法的上下文的更多信息,则CSA更激进地调整门控区域的尺寸。在FMA中,乘法结果可被加到累加器,该累加器经常比被乘数中的任一者大得多。在这种情况下,可在乘法前提前观察加数指数,并且CSDA可相应地调整门控区域。CSA的一个实施例包括一方案,其中,上下文值(其约束计算的最小结果)被提供给相关的乘法器以选择最低能量门控配置。
3.6运行时服务
在某些实施例中,CSA包括异构的分布式结构,因此,运行时服务实现方式用于以并行的分布式方式适应若干种类的PE。虽然CSA中的运行时服务可能是关键的,但是它们相对于用户级计算可能是较不频繁的。因此,某些实施例聚焦于将服务覆盖在硬件资源上。为了满足这些目的,CSA运行时服务可构造为层次结构,例如,每一层对应于CSA网络。在片级,单个面向外部的控制器可接受服务命令,或者可将服务命令发送到与CSA片相关联的核。片级控制器可服务以(例如,使用ACI网络)协调RAF处的区域控制器。区域控制器可转而协调某些夹层网络站(例如,网络数据流端点电路)处的本地控制器。在最低级,服务特定的微协议可(例如,在通过夹层控制器控制的特殊模式期间)在本地网络上执行。微协议可准许每一个PE(例如,通过类型划分的PE类)根据其自身的需求来与运行时服务交互。因此,并行性在该层次结构组织中是隐式的,并且在最低级处的操作可同时发生。例如取决于 CSA片的配置尺寸以及CSA片在存储器层次结构中的位置,该并行性可实现在几百纳秒到几微秒之间的对CSA片的配置。因此,CSA的实施例利用数据流图的属性来改善每一个运行时服务的实现方式。一项关键的观察是运行时服务可能仅需要维持数据流图的合法逻辑视图(例如,可通过对数据流操作器执行的某种排序而产生的状态)。服务一般可不需要保证数据流图的时态视图(例如,在给定时刻数据流图在CSA中的状态)。例如,假设服务被安排以维持数据流图的逻辑示图,则这可准许CSA以分布式、流水线式的并行方式进行大多数运行时服务。本地配置微协议可以是覆盖在本地网络上的基于分组的协议。配置目标可被组织为配置链,例如,该配置链在微架构中固定。结构(例如,PE)目标可以一次被配置一个,例如,对于每一个目标使用单个额外寄存器来实现分布式协调。为了开始配置,控制器可驱动带外信号,该带外信号将其邻域内的所有结构目标置入未经配置的、暂停状态,并且将本地网络中的多路复用器摇摆到预定义的构造。当结构(例如,PE)目标被配置(即,它们完全接收到它们的配置分组)时,它们可设置它们的配置微协议寄存器,从而向下一目标(例如,PE)通知该下一目标可使用后续分组来继续进行配置。对于配置分组的尺寸没有限制,并且分组可具有动态可变的长度。例如,配置恒定操作数的PE可具有长度设定为包括恒定字段(例如,图18B-图18C中的X 和Y)的配置分组。图28图示根据本公开的实施例的具有多个处理元件(例如,PE 2802、2804、2806、2808)的加速器2800的运行中配置。一旦经配置, PE就可受制于数据流约束来执行。然而,涉及未经配置的PE的通道可由微架构禁用,从而例如防止任何未定义的操作发生。这些属性允许CSA的实施例以分布式方式初始化和执行,而一点也没有集中式控制。来自未经配置的状态,配置可完全并行地发生(例如,也许在短至200纳秒内)。然而,由于对CSA 的实施例的分布式初始化,PE可能变得活跃,以便例如当整个结构被配置好之前很久就将请求发送到存储器。提取能以与配置几乎相同的方式继续进行。本地网络可被遵守,以便一次从一个目标提取数据,并且提取用于实现分布式协调的状态位。CSA可将提取安排为是非破坏性的,即,在提取的完成时,每一个可提取目标已返回到其起始状态。在该实现方式中,目标中的所有状态可被传播至以类扫描方式连至本地网络的出口寄存器。然而可通过引入寄存器传送级(RTL)的新路径或使用现有的线以便以更低开销来提供相同功能来实现原位(in-place)提取。类似的配置、层次结构提取并行地实现。
图29图示根据本公开的实施例的运行中流水线式提取的快照2900。在提取的一些用例(诸如,检查点操作)中,只要结构吞吐量可被维持,等待时间就可以不是关注的问题。在这些情况下,提取能以流水线方式来安排。图 29中示出的这种布置准许结构中的大多数继续执行,而窄区域被禁用于提取。配置和提取可被协调和组成以实现流水线式上下文切换。定性地讲,异常可与配置和提取不同,体现在与发生在指定时间不同,异常在运行时期间的任何时刻在结构中的任何地方发生。因此,在一个实施例中,异常微协议可能无法覆盖在本地网络上,并利用其自身的网络,该本地网络在运行时由用户程序占据。然而,从本质上说,异常是稀少的,并且对等待时间和带宽不敏感。因此,CSA 的某些实施例利用分组交换型网络将异常携带至本地夹层站,例如,在该本地夹层站处,这些异常被继续沿服务层次结构向上被转发(例如,如图40中所示)。本地异常网络中的分组可以是极小的。在许多情况下,仅2至8位的 PE标识(ID)作为完整的分组就足够了,例如因为当分组遍历异常服务层次结构时,CSA可创建唯一的异常标识符。此类方案可以是所期望的,因为它减少了在每一个PE处产生异常的面积开销。
4.编译
将以高级语言编写的程序编译到CSA上对于产业应用可能是必要的。这一节给出用于CSA的实施例的编译策略的高级概览。首先是CSA软件框架的提议,该CSA软件框架说明理想的生产质量工具链的期望属性。其次,讨论了原型编译器框架。接着讨论“控制-数据流转换”,其例如用于将普通的序列化控制流代码转换为CSA数据流汇编代码。
4.1示例生产框架
图30图示根据本公开的实施例的用于加速器的编译工具链3000。该工具链将高级语言(诸如,C、C++和Fortran)编译为用于将被加速的特定区域的主代码(LLVM)中介表示(IR)的组合。该编译工具链的CSA特定的部分将LLVM IR作为其输入,将该IR优化并编译为CSA汇编,从而例如在等待时间不敏感的通道上增加适当的缓冲以用于性能。随后,它将CSA汇编放置并路由在硬件结构上,并配置PE和网络以用于执行。在一个实施例中,工具链支持CSA特定的编译作为及时(JIT)编译,从而并入来自实际执行的潜在运行时反馈。框架的关键设计特性之一是编译(LLVM)IR以获得CSA,而不是将较高级语言用作输入。虽然以专门为CSA设计的高级编程语言编写的程序可实现最高性能和/或能效,但是采用新的高级语言或编程框架可能由于转换现有代码基础的困难在实践中是慢的且受限的。将(LLVM)IR用作输入使广泛范围的现有程序能够潜在地在CSA上执行,从而例如不需要创建新语言,也不需要显著地修改想要在CSA上运行的新语言的前端。
4.2原型编译器
图31图示根据本公开的实施例的用于加速器的编译器3100。编译器3100最初聚焦于通过(例如,Clang)前端对C或C++的提前编译。为了编译(LLVM)IR,编译器利用三个主要的级在LLVM内实现CSA后端目标。首先,CSA后端将LLVM IR降低为用于序列化单元的目标特定的机器指令,该序列化单元实现大多数CSA操作以及传统的类RISC控制流架构(例如,利用分支和程序计数器)。工具链中的序列化单元可充当对编译器和应用开发器两者有用的辅助,因为该序列化单元允许从控制流(CF)到数据流(DF)的递增式变换,例如,将某时刻的一个代码段从控制流转换到数据流,并且验证程序正确性。序列化单元也可提供用于处置在空间阵列中不适配的代码的模型。随后,编译器将这些控制流指令转换为用于CSA的数据流操作器(例如,代码)。这一阶段稍后在第4.3节中描述。随后,CSA后端可对数据流指令运行其自身的优化轮次。最后,编译器可转储(dump)CSA汇编格式的指令。该汇编格式被取为对后级工具的输入,该后级工具将数据流指令放置并路由在实际的CSA硬件上。
4.3控制至数据流转换
编译器的关键部分可在控制-数据流转换轮次(或简称数据流转换轮次)中实现。该轮次吸收以控制流形式表示的函数,并将该函数转换为数据流函数,该以控制流形式表示的函数例如是具有对虚拟寄存器进行操作的序列化机器指令的控制流图(CFG),该数据流函数在概念上是由等待时间不敏感的通道(LIC)连接的数据流操作(指令)的图。本章节给出对该轮次的高级描述,从而描述在某些实施例中,该轮次如何在概念上处理存储器操作、分支和循环。
直线代码
图32A图示根据本公开的实施例的序列化汇编代码3202。图32B 图示根据本公开的实施例的针对图32A的序列化汇编代码3202的数据流汇编代码3204。图32C图示根据本公开的实施例的针对用于加速器的图32B的数据流汇编代码3204的数据流图3206。
首先,考虑将直线序列化代码转换为数据流的简单情况。数据流转换轮次可将基本的序列化代码块(诸如,图32A中示出的代码)转换为图 32B中示出的CSA汇编代码。从概念上讲,图32B中的CSA汇编表示图32C 中的数据流图。在该示例中,每一条序列化指令被转换为匹配的CSA汇编。 (例如,用于数据的).lic声明宣称与序列化代码中的虚拟寄存器(例如,Rdata) 相对应的等待时间不敏感的通道。在实践中,对数据流转换轮次的输入可以在经编号的虚拟寄存器中。然而,为清楚起见,本节使用描述性的寄存器名称。注意,在该实施例中,加载和存储操作在CSA架构中受支持,从而相比仅支持纯数据流的架构允许多得多的程序运行。由于对编译器的序列化代码输入是 SSA(单静态指派)形式的,因此对于简单的基本块,控制-数据流轮次可将每一个虚拟寄存器定义转换为在等待时间不敏感的通道上的单个值的产生。SSA 形式允许对虚拟寄存器(诸如,在Rdata2中)的单个定义的多次使用。为了支持该模型,CSA汇编代码支持对同一LIC(例如,data2)的多次使用,并且模拟器隐式地创建LIC的必要的副本。序列化代码与数据流代码之间的一个关键区别在于对存储器操作的处理。图32A中的代码在概念上是串行的,这意味着在addr和addr3地址重叠的情况下,addr3的load32(ld32)应当显得在addr 的st32之后发生。
分支
为了将具有多个基本块和条件语句的程序转换为数据流,编译器生成特殊的数据流操作器来替换分支。更具体地,编译器使用切换操作器以在原始的CFG中的基本块的结尾处引导传出数据,并使用挑选操作器以在基本块的开始处从适当的传入通道中选择值。作为具体的示例,考虑图33A-图33C 中的代码和对应的数据流图,该代码和对应的数据流图有条件地基于以下若干输入来计算y的值:a、i、x和n。在计算了分支条件测试之后,则数据流代码使用切换操作器(例如,参见图18B-图18C)以:如果测试为0,则将通道x 中的值引导到通道xF,或者如果测试为1,则将通道x中的值引导到通道xT。类似地,挑选操作器(例如,参见图18B-图18C)用于:如果测试为0,则将通道yF发送到y,或者如果测试为1,则将通道yT发送到y。在该示例中,证明了即便a的值仅用于条件语句的真分支中,CSA也将包括切换操作器,该切换操作器在测试为1时将该a的值引导到通道aT,并且当测试为0时消耗(吞噬)该值。后一种情况通过将切换装置的假输出设置为%ign来表达。简单地将通道直接连接到真路径可能不是正确的,因为在执行实际上采用假路径的情况下,该“a”的值将被留在图中,从而导致对于该函数的下一次执行的不正确的a值。该示例突出了控制等效的属性,该属性是正确的数据流转换的实施例中的关键属性。
控制等效:考虑具有两个基本块A和B的单入口单出口控制流图 G。如果通过G的所有完成控制流路径都对A和B访问相同次数,则A和B 是控制等效的。
LIC替换:在控制流图G中,假定基本块A中的操作定义虚拟寄存器x以及在基本块B中的使用x的操作。那么只有在A和B是控制等效的时,正确的控制-数据流变换才可用等待时间不敏感的通道来替换x。控制等效关系将CFG的基本块分区为强控制依赖性区域。图33A图示根据本公开的实施例的C源代码3302。图33B图示根据本公开的实施例的针对图33A的C源代码3302的数据流汇编代码3304。图33C图示根据本公开的实施例的针对图 33B的数据流汇编代码3304的数据流图3306。在图33A-图33C的示例中,在条件语句之前和之后的基本块是彼此控制等效的,但是在真路径和假路径中的基本块各自位于它们的控制依赖性区域中用于将CFG转换为数据流的一个正确算法用于使编译器:(1)插入切换装置以对在不是控制等效的基本块之间流动的任何值补偿执行频率的失配;以及(2)在基本块的开始处插入挑选装置以便正确地从任何传入值选择到基本块。生成用于这些挑选装置和切换装置的适当的控制信号可以是数据流转换的关键部分。
循环
数据流转换中的另一重要的CFG类别是用于单入口单出口循环的 CFG,这是(LLVM)IR中生成的循环的常见形式。这些循环除了从循环的结尾往回到循环头部块的单个后沿以外,可以是几乎非循环的。数据流转换轮次可使用相同的高级策略来像对于分支那样转换循环,例如,数据流转换轮次在循环的结尾插入切换装置以将值引导出循环(要么离开循环出口,要么围绕后沿到循环的开始),并且在循环的开始处插入挑选装置以在进入循环的初始值与通过后沿到来的值之间进行选择。图34A图示根据本公开的实施例的C源代码3402。图34B图示根据本公开的实施例的针对图34A的C源代码3404 的数据流汇编代码3402。图34C图示根据本公开的实施例的针对图34B的数据流汇编代码3404的数据流图3400。图34A-图34C示出用于将循环归纳变量i的值加起来的示例do-while循环的C和CSA汇编代码以及对应的数据流图。对于从概念上讲围绕循环进行循环的每一个变量(i和sum),该图具有控制这些值的流动的对应的挑选/切换装置对。注意,即便n是循环不变量,该示例也使用挑选/切换装置对使n的值围绕循环进行循环。这种n的重复使n 的虚拟寄存器能够转化到LIC中,因为它匹配循环外部的n的概念性定义与循环内部对n的一次或多次使用之间的执行频率。一般而言,为了获得正确的数据流转换,当寄存器被转换到LIC中时,对于循环体内部的每一次迭代,登入 (live-in)循环的寄存器将被重复一次。类似地,在循环内被更新且从循环登出(live-out)的寄存器将被消耗(例如,利用被发送出循环的单个最终值)。循环将褶皱引入到数据流转换过程中,即,用于循环的顶部处的挑选的控制以及用于循环底部的切换是偏移的。例如,如果图33A中的循环执行三个迭代并退出,则对挑选器的控制应当是0、1、1,而对切换器的控制应当是1、1、0。该控制通过以下方式实现:当函数在循环0(其在汇编中由指示.value 0和.avail 0指定)上开始时,以初始的额外0启动挑选器通道,随后将输出切换器复制到挑选器中。注意,切换器中的最后一个0将最终的0恢复到挑选器中,从而确保数据流图的最终状态匹配其初始状态。
图35A图示根据本公开的实施例的流程图3500。所描绘的流程 3500包括:3502:利用处理器的核的解码器将指令解码为经解码指令;3504:利用处理器的核的执行单元执行经解码指令以执行第一操作;3506:接收包括多个节点的数据流图的输入;3508:将数据流图覆盖到处理器的多个处理元件以及处理器的多个处理元件之间的互连网络中,并且每一个节点被表示为多个处理元件中的数据流操作器;以及3510:当相应的传入操作数集到达多个处理元件的数据流操作器中每一个时,利用互连网络和多个处理元件执行数据流图的第二操作。
图35B图示根据本公开的实施例的流程图3501。所描绘的流程包括:3503:接收包括多个节点的数据流图的输入;3505:将数据流图覆盖到处理器的多个处理元件、多个处理元件之间的数据路径网络以及多个处理元件之间的流控制路径网络中,并且每一个节点被表示为多个处理元件中的数据流操作器。
在一个实施例中,核将命令写入到存储器队列中,并且CSA(例如,多个处理元件)监测该存储器队列且当该命令被读取时开始执行。在一个实施例中,核执行程序的第一部分,并且CSA(例如,多个处理元件)执行该程序的第二部分。在一个实施例中,当CSA正在执行操作时,核进行其他工作。
5.CSA优势
在某些实施例中,CSA架构和微架构提供相对于路线图处理器架构和FPGA深远的能量、性能、可用性优势。在本节中,这些架构与CSA的实施例进行比较,并且强调CSA在加速并行数据流图中相对于每一者的优越性。
5.1处理器
图36图示根据本公开的实施例的吞吐量相对于每个操作的能量的图表3600。如图36中所示,小型核一般比大型核能效更高,并且在一些工作负荷中,该优势可通过更高的核计数而转换为绝对性能。CSA微架构遵循这些观察结果至它们的结论,并且去除与冯·诺依曼架构相关联的(例如,大多数) 能量饥饿型控制结构(包括指令侧微架构中的大多数)。通过去除这些开销并实现简单的单操作PE,CSA的实施例获得密集、高效的空间阵列。与通常非常串行化的小型核不同,CSA可例如经由电路交换型本地网络将其PE聚集在一起以形成显式并行的聚合数据流图。该结果为不仅在并行应用中、而且也在串行应用中的性能。与在面积和能量方面花大代价的核不同,CSA在其原生执行模型中已经是并行的。在某些实施例中,CSA既不需要推测来提升性能,也不需要反复地从序列化程序表示中重新提取并行性,由此避免了冯·诺依曼架构中主要能量税负中的两项。CSA的实施例中的大多数结构是分布式、小型且高能效的,这与核中发现的集中式、庞大的能量饥饿型结构形成对照。考虑CSA中的寄存器的情况:每一个PE可具有一些(例如,10个或更少)存储寄存器。单独而言,这些寄存器可比传统的寄存器组更高效。在聚合时,这些寄存器可提供大型结构中寄存器组的效果。作为结果,CSA的实施例避免由经典架构导致的栈溢出和填满中的大多数,同时对于每一次状态访问使用少得多的能量。当然,应用可仍访问存储器。在CSA的实施例中,存储器访问请求和响应是架构上解耦的,从而使工作负荷对于每个面积和能量单位维持多得多的待决存储器访问。该属性对高速缓存约束的工作负荷实现显著更高的性能,并且减少使存储器约束的工作负荷中的主存储器饱和所需的面积和能量。CSA的实施例暴露对非冯·诺依曼架构而言独一无二的新的能效形式。在(例如,大多数)PE处执行单个操作(例如,指令)的一个结果是减少的操作数熵。在递增式操作的情况下,每一次执行会导致少数电路级切换和非常少的能耗,这是在第6.2节中详细检验的情况。相比之下,冯·诺依曼经复用,从而导致大量位转变。CSA的实施例的异步样式也实现微架构优化,诸如,难以在被严格地调度的核流水线中实现的在第3.5节中描述的浮点优化。由于PE可以是相对简单的,并且在特定数据流图中的PE的行为可静态地被知晓,因此时钟门控和功率门控技术可以比在更粗糙架构中更高效地被采用。CSA、PE和网络的实施例的图执行样式、小尺寸和可延展性共同实现了对许多种类并行性的表达:指令、数据、流水线、向量、存储器、线程和任务并行性全都可被实现。例如,在CSA的实施例中,一个应用可使用算术单元来提供高的地址带宽等级,而另一应用可将那些相同的单元用于计算。在许多情况下,多种并行性可被组合以实现甚至更高的性能。许多关键的HPC操作可既被复制又被流水线化,从而导致多个数量级的性能增益。相比之下,冯·诺依曼核典型地针对由架构师仔细选择的一种并行性样式进行优化,从而导致不能够捕捉所有重要的应用内核。正因为CSA的实施例暴露并促进并行性的许多形式,因此它不命令特定的并行性形式,或者更糟糕地,特定的子例程存在于应用中以受益于CSA。例如即便当不进行修改就被编译时,许多应用(包括单流应用)也可从CSA的实施例获得性能和能量益处两者。这与要求大量的编程器努力获得单流应用中的显著性能增益的长期趋势相反。实际上,在一些应用中,相比从已备受煎熬来针对向量指令的其复杂的当代对等代码,CSA的实施例从功能上等效的但较不“现代化的”代码中获得更多性能。
5.2 CSA实施例与FPGA的比较
将数据流操作器选作CSA的实施例的基本架构这一选择将那些 CSA与FPGA区分开,具体地,CSA作为用于从传统编程语言产生的HPC数据流图的优越的加速器。数据流操作器在根本上是异步的。这使CSA的实施例不仅能够具有在微架构中的实现自由,而且还使CSA的实施例能够简单且简洁地适应抽象架构概念。例如,CSA的实施例利用简单的加载-存储接口自然地适应许多存储器微架构,这些许多存储器微架构基本上是异步的。人们仅需要检查FPGA DRAM控制器来领会复制度的区别。CSA的实施例也利用异步性来提供像配置和提取这样的更快且功能更全的运行时服务,人们相信这比 FPGA块4-6个数量级。通过收窄架构接口,CSA的实施例在微架构级提供对大多数时序路径的控制。这允许CSA的实施例以比在FPGA中提供的更一般的控制机制高得多的频率来操作。类似地,在架构上对于FPGA而言可能是根本性的时钟和重置在CSA中是微架构的,从而例如消除了对将时钟和重置作为可编程实体来支持的需求。数据流操作器对于大多数部分可以是粗粒度的。通过仅在粗糙的操作器中进行处理,CSA的实施例改善结构的密度及其能耗两者。CSA直接执行操作而不是利用查找表来对操作进行仿真。粗糙性的第二个结果是简化了放置和路由问题。CSA数据流图比FPGA网络表小许多数量级,并且在CSA的实施例中,放置和路由时间相应减少。CSA的实施例与FPGA 之间的显著区别使得CSA作为例如用于从传统编程语言产生的数据流的加速器是优越的。
6.评估
CSA是新颖的计算机架构,具有提供相对于路线图处理器的巨大的性能和能量优势。考虑对于跨阵列行走计算单跨步地址的情况。这种情况在 HPC应用(例如,其在计算地址偏移时花费大量整数工作)中可能是重要的。在地址计算、尤其是跨步地址计算中,对于每次计算,一个变元是恒定的,并且另一个变元仅略微变化。因此,在大多数情况下,每个周期仅少数位切换。实际上,使用与第3.5节中描述的对浮点进位位的约束类似的派生,可以显示出对于跨步计算平均而言每次计算少于两个输入位切换,从而对于随机切换分布减少50%能量。如果使用时间复用方式,则这些能量节省中的许多能量节省会丢失。在一个实施例中,CSA实现相对于核的大约3x(3倍)能效,同时获得8x(8倍)性能增益。由CSA的实施例获得的并行性增益会导致减少的程序运行时间,从而实现相应的显著的泄漏能量减少。在PE级,CSA的实施例是极其高能效的。对于CSA的第二个重要问题是CSA是否在片级小号合理量的能量。由于CSA的实施例在每个周期在结构中能够演练每一个浮点PE,引起它充当能量和功率消耗的合理上界,例如使得能量中的大部分进入浮点乘法和加法。
7.未来CSA细节
本节讨论配置和异常处置的进一步细节。
7.1用于配置CSA的微架构
本节公开了如何配置CSA(例如,结构),如何快速实现该配置,以及如何使配置的资源开销最小化的示例。快速地配置结构对于加速较大算法的小部分并因此对于放宽CSA的适用性是极其重要的。本节进一步讨论允许 CSA的实施例能够以不同长度的配置来编程的特征。
CSA(例如,结构)的实施例可与传统的核不同,体现在CSA的实施例可利用这样的配置步骤,其中,结构的(例如,大)部分在程序执行之前提前以程序配置来加载。静态配置的优势可以在于,在配置时的运行时,非常少的能量被花费,这例如与几乎每个周期都花费取出配置信息(指令)的能量的序列化核形成对照。配置的先前劣势在于,它是具有潜在的长等待时间的粗粒度步骤,潜在的长等待时间由于上下文切换的代价而对可在结构中被加速的程序的尺寸设定下界。本公开描述了用于迅速地以分布式方式(其例如避免先前的劣势)配置空间阵列的可缩放微架构。
如上文所讨论,CSA可包括由PE间网络连接的轻量型处理元件。通过配置可配置结构元件(CFE)(例如,PE和互连(结构)网络),被视为控制-数据流图的程序随后被映射到架构上。一般而言,PE可被配置为数据流操作器,并且一旦所有输入操作数到达PE,则一些操作发生,并且结果被转发到另外一个或多个PE用于消耗或输出。PE可通过专用虚拟电路进行通信,该专用虚拟电路通过静态地配置电路交换型通信网络而形成。这些虚拟电路可以是流受控且完全被回压的,使得例如如果源没有数据或目的地为满,则PE 将停止。在运行时,数据可流经实现经映射算法的PE。例如,数据可从存储器通过结构而流入,随后向外回到存储器。此类空间架构相对于传统多核处理器可实现卓越的性能效率:与扩展存储器系统形成对照,以PE形式计算可以比较大的核更简单且更多,并且通信可以是直接的。
CSA的实施例可不利用(例如,软件受控的)分组切换(例如,要求大量软件辅助来实现的分组切换),该分组切换减缓配置。CSA的实施例包括网络中的带外信令(例如,取决于所支持的特征集,仅2-3位的带外信令) 和固定的配置拓扑以避免对大量软件支持的需求。
CSA的实施例与在FPGA中使用的方式之间的一个关键区别在于, CSA方式可使用宽数据字,是分布式的,并且包括用于直接从存储器取出程序数据的机制。CSA的实施例可以不用为了面积效率而利用JTAG型单个位通信,例如因为那会要求几毫秒来完全配置大型FPGA结构。
CSA的实施例包括分布式配置协议和微架构来支持此协议。最初,配置状态可驻留在存储器中。多个(例如,分布式)本地配置控制器(箱)(LCC) 可例如使用控制信号的小集合与结构提供的网络的组合来将整个程序的多个部分流送到它们在空间结构中的本地区域中。状态元件可在每一个CFE处被使用以形成配置链,从而例如允许各个CFE自编程而无需全局寻址。
CSA的实施例包括对形成配置链的特定硬件支持,例如,不是以增加配置时间为代价来动态地建立这些链的软件。CSA的实施例不纯粹是分组交换型的,并且确实包括额外的带外控制线(例如,控制不通过数据路径被发送,从而要求额外的周期来选通此信息并使该信息重新串行化)CSA的实施例通过固定配置排序并通过提供显式的带外控制来减小配置等待时间(例如,减小至少一半),同时不显著地增加网络复杂度。
CSA的实施例不将串行配置用于其中使用类JTAG协议将数据逐位地流送到结构中的配置。CSA的实施例利用粗粒度结构方式。在某些实施例中,将一些控制线或状态元件加到面向64位或32位的CSA结构相对于将那些相同的控制机制加到4位或6位结构具有更低的成本。
图37图示根据本公开的实施例的加速器片3700,该加速器片3700 包括处理元件(PE)的阵列和本地配置控制器3702、3706。每一个PE、每一个网络控制器(例如,网络数据流端点电路)和每一个切换装置可以是可配置结构元件(CFE),例如,该CFE由CSA架构的实施例配置(例如,编程)。
CSA的实施例包括提供对异构空间结构的高效、分布式、低等待时间配置的硬件。这可以根据四项技术来实现。首先,利用硬件实体(本地配置控制器(LCC)),例如,如图37-39中所示。LCC可从(例如,虚拟)存储器取出配置信息的流。其次,配置数据路径可被包括,例如,该配置数据路径与PE结构的原生宽度一样宽,并且可被覆盖在PE结构的顶部上。第三,新控制信号可被接收到安排配置过程的PE结构中。第四,状态元件可位于(例如,在寄存器中)跟踪相邻CFE的状态的每一个可配置端点处,从而允许每一个CFE无需额外的控制信号来明确地自配置。这四个微架构特征可允许CSA 配置其CFE的链。为了获得低的配置等待时间,可通过建立许多LCC和CFE 链来对配置分区。在配置时,这些可独立地操作以便并行地加载结构,从而例如动态地降低等待时间。作为这些组合的结果,使用CSA架构的实施例配置的结构可以(例如,在几百纳秒内)被完全配置。在下文中,公开了CSA配置网络的实施例的各种组件的详细操作。
图38A-图38C图示根据本公开的实施例的配置数据路径网络的本地配置控制器3802。所描绘的网络包括多个多路复用器(例如,多路复用器 3806、3808、3810),这些多路复用器可(例如,经由它们相应的控制信号) 经配置以将(例如,来自PE的)一个或多个数据路径连接在一起。图38A图示为一些先前的操作或程序配置(例如,设置)的网络3800(例如,结构)。图38B图示选通配置信号的本地配置控制器3802(例如,包括用于发送和/或接收信号的网络接口电路3804),并且本地网络被设置为允许LCC将配置数据发送到所有可配置结构元件(CFE)(例如,mux)的默认配置(例如,如图中所描绘)。图38C图示LCC,该LCC跨网络选通配置信息,从而以预定的(例如,硅定义的)序列配置CFE。在一个实施例中,当CFE被配置时,它们可立即开始操作。在另一实施例中,CFE等待开始操作,直到结构已被完全配置(例如,对于每一个本地配置控制器,由配置终止器(例如,图40中的配置终止器4004和配置终止器4008)用信号通知)。在一个实施例中,LCC 通过发送特殊消息或驱动一信号来获得对网络结构的控制。随后,它(例如,在许多周期的时间段内)将配置数据选通到结构中的CFE。在这些附图中,多路复用器网络与在某些附图(例如,图21)中示出的“切换装置”类似。
本地配置控制器
图39图示根据本公开的实施例的(例如,本地)配置控制器3902。本地配置控制器(LCC)可以是负责以下各项的硬件实体:加载结构程序的(例如,在片的子集中或其他位置的)本地部分;解释这些程序部分;随后通过在各种配置线上驱动适当的协议将这些程序部分加载到结构中。在该能力方面, LCC可以是专用序列化微控制器。
当LCC操作接收到指向代码段的指针时,它可以开始。取决于LCB 微架构,(例如,存储在指针寄存器3906中的)该指针要么通过(例如,来自CSA(结构)自身内的)网络要么通过存储器系统访问来到LCC。当LCC 接收到此类指针时,它可任选地从用于上下文存储的结构的其部分耗尽相关状态,并随后继续进展以立即重配置该结构该LCC所负责的部分。由LCC加载的程序可以是用于结构的配置数据和用于LCC的控制命令的组合,例如,该配置数据和该控制命令被轻度编码。当LCC使程序部分流入时,它可将该程序解释为命令流,并执行适当的经编码动作以配置(例如,加载)结构。
在图37中示出用于LCC的两个不同的微架构,例如,其中之一或两者用于CSA中。第一个微架构将LCC 3702放置在存储器接口处。在这种情况下,LCC可向存储器系统做出加载数据的直接请求。在第二种情况下,LCC 3706被放置在存储器网络上,在存储器网络中,LCC3906可仅间接地向存储器作出请求。在这两种情况下,LCB的逻辑操作不改变。在一个实施例中,例如由(例如,OS可见的)控制状态寄存器的集合向LCC通知要加载的程序,该控制状态寄存器的集合将用于向各个LCC通知新程序指针等。
额外的带外控制通道(例如,线)
在某些实施例中,配置依赖于2-8个额外的带外控制通道来改善配置速度,如下文所定义。例如,配置控制器3902可包括以下控制通道:例如, CFG_START控制通道3908、CFG_START_PRIVILEDGE控制通道3909、 CFG_VALID控制通道3910以及CFG_DONE控制通道3912,每一者的示例在以下表3中讨论
表3:控制通道
一般而言,对配置信息的处置可以被留给特定CFE的实现器。例如,可选择功能CFE可具有供应以便使用现有数据路径来设置寄存器,而固定功能CFE可简单地设置配置寄存器。
由于在对CFE的大型集合编程时的长的线延迟,因此CFG_VALID 信号可视为对CFE组件的时钟/锁存启用。由于该信号被用作时钟,因此在一个实施例中,该线的占空比最多为50%。作为结果,配置吞吐量大约减半。可任选地,第二CFG_VALID信号可被添加以允许连续编程。
在一个实施例中,仅CFG_START在独立耦合装置(例如,线) 上被严格地传递,例如,CFG_VALID和CFG_DONE可被覆盖在其他网络耦合装置的顶部上。
网络资源的重新使用
为了减少配置的开销,CSA的某些实施例利用现有的网络基础结构来传递配置数据。LCC可利用芯片级存储器层次结构和结构级通信网络两者来将数据从存储移动到结构中。作为结果,在CSA的某些实施例中,配置基础结构向总结构面积和功率增加不多于2%。
在CSA的某些实施例中的网络资源的重新使用可使网络具有对配置机制的某种硬件支持。CSA的实施例的电路交换型网络使LCC在‘CFG_START’信号被断言时以特定的方式来设置这些电路交换型网络的多路复用器以进行配置。分组交换型网络不要求扩展,但是LCC端点(例如,配置终止器)使用分组交换型网络中的特定地址。网络重新使用是可任选的,并且一些实施例可发现专用配置总线是更方便的。
每个CFE状态
每一个CFE可维护表明它是否已经被配置的位(例如,参见图28)。当配置开始信号被驱动时,该位可被解除断言,随后,一旦特定的CFE已被配置,就断言该位。在一个配置协议中,CFE被布置成链,CFE并且配置状态位确定该链的拓扑。CFE可读取紧邻CFE的配置状态位。如果该相邻CFE被配置且当前CFE未被配置,则CFE和确定任何当前的配置数据针是对当前CFE 的。当‘CFG_DONE’信号被断言时,CFE可设置其配置位,以便例如使上游 CFE能够进行配置。作为配置过程的基本情况,断言其被配置的配置终止器(例如,在图37中的用于LCC3702的配置终止器3704或用于LCC 3706的配置终止器3708)可被包括在链的结尾处。
在CFE内部,该位可用于驱动流控制就绪信号。例如,当配置位被解除断言时,网络控制信号可被自动地箝位为防止数据流动的值,同时在 PE内,没有操作或其他动作将被调度。
处理高延迟配置路径
LCC的一个实施例可例如通过许多多路复用器且利用许多加载以在长距离上驱动信号。因此,信号在短时钟周期内到达远端CFE可能是困难的。在某些实施例中,配置信号处于主(例如,CSA)时钟信号的某个分频(例如,分数)以确保配置时的数字时序规则。时钟分频可用于带外信令协议中,并且不要求对主时钟树的任何修改。
确保配置期间一致的结构行为
由于某些配置方案是分布式的且由于程序和存储器效应具有非确定性时序,因此结构的不同部分可在不同时间被配置。作为结果,CSA的某些实施例提供用于防止经配置以及未经配置的CFE之间的不一致操作的机制。总体而言,一致性被视为由CFE自身例如使用内部CFE状态所要求并维持的属性。例如,当CFE处于未经配置状态时,它可宣称其输入缓冲器为满,且其输出为无效。当被配置时,这些值将被设置为缓冲器的真状态。随着结构的足够的部分从配置中出来,这些技术可准许该结构开始操作。例如,如果长等待时间存储器请求在早期被发布,则这具有进一步降低上下文切换等待时间的效果。
可变宽度配置
不同的CFE可具有不同的配置字宽度。对于较小的CFE配置字,实现器可通过跨网络线公平地指派CFE配置加载来使延迟平衡。为了平衡在网络线上的加载,一个选项是将配置位指派给网络线的不同部分以限制任何一根线上的净延迟。宽数据字可通过使用串行化/解串行化技术来处置。这些决策可逐结构地采用以优化特定CSA(例如,结构)的行为。网络控制器(例如,网络控制器3710和网络控制器3712中的一个或多个)可与CSA(例如,结构)的每一个域(例如,子集)通信,以便例如将配置信息发送至一个或多个LCC。网络控制器可以是(例如,与电路交换型网络分开的)通信网络的部分。网络控制器可包括网络数据流端点电路。
7.2用于CSA的低等待时间配置以及用于CSA的配置数据的及时取出的微架构
CSA的实施例可以是对用户应用进行加速的高能效且高性能手段。当考虑程序(例如,程序的数据流图)是否可由加速器成功地加速时,用于配置加速器的时间以及用于运行程序的时间两者可被考虑。如果运行时间为短,则配置时间在确定成功的加速时将发挥大的作用。因此,为了使可加速程序的域最大化,在一些实施例中,使配置时间尽可能短。一个或多个配置高速缓存可被包括在CSA中,例如使得高带宽、低等待时间存储实现快速重配置。接下来是对配置高速缓存的若干实施例的描述。
在一个实施例中,在配置期间,配置硬件(例如,LCC)可任选地访问配置高速缓存以获得新配置信息。配置高速缓存要么可操作为传统的基于地址的高速缓存,要么可处于OS管理的模式,在OS管理的模式中,配置被存储在本地地址空间中,并且通过参引那个地址空间被寻址。如果配置状态位于高速缓存中,则在某些实施例中,没有对后备存储的请求将被进行。在某些实施例中,该配置高速缓存与存储器层次结构中的任何(例如,较低级)共享高速缓存分开。
图40图示根据本公开的实施例的加速器片4000,该加速器片4000 包括处理元件的阵列、配置高速缓存(例如,4018或4020)和本地配置控制器(例如,4002或4006)。在一个实施例中,配置高速缓存4014与本地配置控制器4002位于一起。在一个实施例中,配置高速缓存4018位于本地配置控制器4006的配置域中,例如,第一域结束于配置终止器4004,并且第二域结束于配置终止器4008。配置高速缓存可允许本地配置控制器在配置期间可参引配置高速缓存,以便例如希望以比参引存储器更低的等待时间来获得配置状态。配置高速缓存(存储)要么可以是专用的,要么可作为结构内存储元件(例如,本地高速缓存4016)的配置模式来访问。
高速缓存模式
1.需求型高速缓存(Demand Caching)-在该模式中,配置高速缓存作为真高速缓存进行操作。配置控制器发布基于地址的请求,该基于地址的请求被对照着高速缓存中的标签来校验。未命中可被加载到高速缓存中,并且随后可在未来的重新编程期间被重新参引。
2.结构内存储(暂存器)高速缓存——在该模式中,配置高速缓存接收对其自身的小地址空间而不是主机的较大的地址空间中的配置序列的参引。这可改善存储器密度,因为高速缓存的用于存储标签的部分可替代地用于存储配置。
在某些实施例中,配置高速缓存可具有(例如,通过外部指示或内部指示)被预加载到其中的配置数据。这可允许用于加载程序的等待时间的减少。本文中的某些实施例提供至配置高速缓存的结构,该接口例如即便在配置已经正在结构中运行时也准许将新配置状态加载到高速缓存中。该加载的发起可从内部或外部源发生。预加载机制的实施例通过去除来自配置路径的高速缓存加载的等待时间来进一步减小等待时间。
预取模式
1.显式预取——以新命令ConfigurationCachePrefetch(配置高速缓存预取) 来扩充配置路径。与对结构编程不同,该命令简单地使相关程序配置加载到配置高速缓存中而无需对结构编程。由于该机制背负在现有的配置基础结构上,因此它既在结构内被暴露,又在例如访问存储器空间的核和其他实体外部被暴露。
2.隐式预取——全局配置控制器可维护预取预测器,并使用它来(例如,以自动化方式)发起对配置高速缓存的显式预取。
7.3用于响应于异常对CSA进行快速重配置的硬件
CSA(例如,空间结构)的某些实施例包括大量指令和配置状态,例如,该配置状态在CSA的操作期间很大程度上是静态的。因此,配置状态可能易受软错误影响。对这些软错误的快速且无错的恢复对于空间系统的长期可靠性和性能可能是关键的。
本文中的某些实施例提供快速配置恢复循环,例如,在该快速配置恢复循环中,配置错误被检测,并且结构的多个部分立即被重配置。本文中的某些实施例包括例如具有可靠性、可用性和耐用性(RAS)重编程特征的配置控制器。CSA的某些实施例包括用于在空间结构内进行高速配置、错误报告和奇偶校验的电路。使用这三个特征以及可任选的配置高速缓存的组合,配置 /异常处置电路可从配置中的软错误恢复。当被检测到时,软错误可被传送到配置高速缓存,该配置高速缓存发起对结构(例如,结构的那个部分)的立即重配置。某些实施例提供专用重配置电路,例如,该专用重配置电路比将被间接地实现在结构中的任何解决方案快。在某些实施例中,位于一起的异常和配置电路协作,以便在配置错误检测时对结构重新加载。
图41图示根据本公开的实施例的加速器片4100,该加速器片4100 包括处理元件的阵列以及具有重配置电路4118、4122的配置和异常处置控制器4102、4106。在一个实施例中,当PE通过其RAS特征检测到配置错误时,它通过其异常生成器将(例如,配置错误或重配置错误)消息发送到配置和异常处置控制器(例如,4102或4106)。在接收到该消息时,配置和异常处置控制器(例如,4102或4106)启动位于一起的重配置电路(例如,分别为4118 或4122)以重新加载配置状态。配置微架构继续进行并(例如,仅)重新加载配置状态,并且在某些实施例中,仅重新加载用于PE的报告RAS错误的配置状态。在重配置完成后,结构可恢复正常操作。为了减少等待时间,由配置和异常处置控制器(例如,4102或4106)使用的配置状态可从配置高速缓存源送。作为配置或重配置过程的基本情况,断言其被配置(或重配置)的配置终止器(例如,图41中用于配置和异常处置控制器4102的配置终止器4104或用于配置和异常处置控制器4106的配置终止器4108)可被包括在链的结尾处。
图42图示根据本公开的实施例的重配置电路4218。重配置电路 4218包括用于存储配置状态(或指向该配置状态的指针)的配置状态寄存器4220。
7.4用于对CSA进行的结构发起的重配置的硬件
针对CSA(例如,空间阵列)的应用的一些部分可被不频繁地运行,或者相对于程序的其他部分可以是互斥的。为了节约面积,为了改善性能和/或减小功率,在程序数据流图的若干不同部分之间对空间结构的多个部分进行时间复用可能是有用的。本文中的某些实施例包括接口,通过该接口,CSA (例如,经由空间程序)可请求结构的那个部分被重编程。这可使CSA能够根据动态控制流来动态地改变其自身。本文中的某些实施例可允许结构发起的重配置(例如,重编程)。本文中的某些实施例提供用于从结构内触发配置的接口的集合。在一些实施例中,PE基于程序数据流图中的某个决策发布重配置请求。该请求可行进通过网络到我们的新配置接口,在我们的新配置接口处,该请求触发重配置。一旦重配置完成,通知该完成的消息可以可任选地被返回。 CSA的某些实施例因此提供程序(例如,数据流图)引导的重配置能力。
图43图示根据本公开的实施例的加速器片4300,该加速器片4300 包括处理元件的阵列以及具有重配置电路4318的配置和异常处置控制器4306。在此,结构的部分将对(重)配置的请求发布至例如配置和异常处置控制器4306 和/或重配置电路4318的配置域。该域(重)配置其自身,并且当请求已被满足时,配置和异常处置控制器4306和/或重配置电路4318将响应发布至结构,以向该结构通知(重)配置完成。在一个实施例中,配置和异常处置控制器4306 和/或重配置电路4318在(重)配置正在进行期间禁用通信,因此在操作期间,程序没有一致性问题。
配置模式
通过地址配置——在该模式中,结构做出从特定地址加载配置数据的直接请求。
通过参引配置——在该模式中,结构例如通过预定义的参引ID做出加载新配置的请求。这可简化对要加载的代码的确定,因为该代码的位置已被抽象。
配置多个域
CSA可包括较高级配置控制器以支持多播机制,从而(例如,经由虚线框所指示的网络)将配置请求播到多个(例如,分布式或本地)配置控制器。这可使单个配置请求跨结构的多个较大部分被复制,从而例如触发宽的重配置。
7.5异常聚合器
CSA的某些实施例也会经历异常(例如,异常条件),例如,浮点下溢(underflow)。当这些条件发生时,特殊的处置程序可被调用,以便要么修正程序,要么终止该程序。本文中的某些实施例提供用于在空间结构中处置异常的系统级架构。由于某些空间结构强调面积效率,本文中的实施例在提供通用异常机制的同时使总面积最小化。本文中的某些实施例提供用信号通知发生在CSA(例如,空间阵列)中的异常条件的低面积手段。本文中的某些实施例提供用于传递此类异常以及PE级异常语义的接口和信令协议。本文中的某些实施例是专用异常处置能力,并且例如不要求由编程者进行的显式处置。
CSA异常架构的一个实施例由四个部分组成,例如在图44-图45 中示出。这些部分可被布置在层次结构中,在该层次结构中,异常从产生方流出,并最终向上流到片级异常聚合器(例如,处置程序),该片级异常聚合器可与例如核的异常维护器会和。这四个部分可以是:
1.PE异常生成器
2.本地异常网络
3.夹层异常聚合器
4.片级异常聚合器
图44图示根据本公开的实施例的加速器片4400,该加速器片4400 包括处理元件的阵列以及耦合至片级异常聚合器4404的夹层异常聚合器4402。图45示出根据本公开的实施例的具有异常生成器4544的处理元件4500。
PE异常生成器
处理元件4500可包括来自图24的处理元件2400,例如,类似的编号是类似的组件,例如,本地网络2402和本地网络4502。附加的网络4513 (例如,通道)可以是异常网络。PE可实现至异常网络(例如,图45上的异常网络4513(例如,通道))的接口。例如,图45图示此类接口的微架构,其中,PE具有异常生成器4544(例如,发起异常有限状态机(FSM)4540以将异常分组(例如,BOXID 4542)向外选通到异常网络上)。BOXID 4542可以是用于本地异常网络内的异常产生实体(例如,PE或块)的唯一标识符。当异常被检测时,异常生成器4544感测异常网络,并且当发现网络是空闲的时向外选通BOXID。异常可由许多条件导致,这些条件例如但不限于算术错误、对状态的失败的ECC校验等,然而,情况也可能是这样:利用支持像断点这样的构造的想法,引入异常数据流操作。
异常的发起可以要么通过编程者提供的指令显式地发生,要么当强化的错误条件(例如,浮点下溢)被检测到时隐式地发生。在异常发生时,PE 4500可进入等待状态,在该等待状态中,PE 4500等待由例如该 PE 4500外部的最终异常处置程序来维护。异常分组的内容取决于特定PE 的实现方式,如下文所述。
本地异常网络
(例如,本地)异常网络将异常分组从PE 4500引导至夹层异常网络。异常网络(例如,4513)可以是串行分组交换型网络,该串行分组交换型网络由例如以例如用于PE的子集的环形或树形拓扑组织的(例如,单个控制线)和一个或多个数据线组成。每一个PE在(例如,本地)异常网络中可具有(例如,环形)站,例如,在该站处,PE可仲裁以将消息注入到异常网络中。
需要注入异常分组的PE端点可观察它们的本地异常网络出口点。如果控制信号指示忙碌,则PE将等待开始注入该PE的分组。如果网络不繁忙,即,下游站没有分组要转发,则PE将继续开始注入。
网络分组可以具有可变或固定长度。每一个分组能以标识该分组的源PE的固定长度的头部字段开始。该头部字段随后可以是包含信息的可变数量的PE特定的字段,这些信息例如包括错误代码、数据值或其他有用的状态信息。
夹层异常聚合器
夹层异常聚合器4404负责将本地异常网络组装为较大的分组,并且将这些较大的分组发送到片级异常聚合器4402。夹层异常聚合器4404 可利用本地异常分组自身的唯一ID来预先考虑该本地异常分组,从而例如确保异常消息是明确的。夹层异常聚合器4404可对接至夹层网络中的特殊的仅用于异常的虚拟通道,从而例如确保异常无死锁。
夹层异常聚合器4404也可能能够直接维护异常的某些类别。例如,使用在夹层网络站本地的高速缓冲,来自结构的配置请求可从夹层网络向外分发。
片级异常聚合器
异常系统的最终级是片级异常聚合器4402。片级异常聚合器 4402负责从各种夹层级异常聚合器(例如,4404)收集异常,并将这些异常转发到适当的维护硬件(例如,核)。由此,片级异常聚合器4402可包括一些用于将特定的消息与处置程序例程相关联的内部表和控制器。这些表可被直接索引或能以小型状态机进行索引,从而引导特定的异常。
像夹层异常聚合器那样,片级异常聚合器可维护一些异常请求。例如,它可以响应于特定的异常而发起对PE结构的大部分的重新编程。
7.6异常控制器
CSA的某些实施例包括用于从结构提取数据的(多个)提取控制器。下文讨论如何快速实现该提取以及如何使数据提取的资源开销最小化的实施例。数据提取可用于诸如异常处置和上下文切换之类的关键任务。本文中的某些实施例通过引入允许具有可变以及动态可变数量的要提取的状态的可提取结构元件(EFE)(例如,PE、网络控制器和/或切换装置) 的特征来从异构空间结构提取数据。
CSA的实施例包括分布式数据提取协议和微架构来支持此协议。 CSA的某些实施例包括多个本地提取控制器(LEC),这些LEC使用控制信号的(例如,小)集合和结构提供的网络的组合来使程序数据从它们在空间结构中的本地区域中流出。状态元件可在每一个可提取结构元件(EFE) 处被使用以形成提取链,从而例如允许各个EFE自提取而无需全局寻址。
CSA的实施例不使用本地网络来提取程序数据。CSA的实施例包括例如用于形成提取链的特定硬件支持(例如,提取控制器),并且不依赖于软件(例如,以增加提取时间为代价)动态地建立这些链。CSA的实施例不纯粹是分组交换型的,并且确实包括额外的带外控制线(例如,控制不通过数据路径被发送,从而要求额外的周期来选通此信息并使该信息重新串行化)CSA的实施例通过固定提取排序并通过提供显式的带外控制来减小提取等待时间(例如,减小至少一半),同时不显著地增加网络复杂度。
CSA的实施例不将串行机制用于其中使用类JTAG协议从结构逐位地流送数据的数据提取。CSA的实施例利用粗粒度结构方式。在某些实施例中,将一些控制线或状态元件加到面向64位或32位的CSA结构相对于将那些相同的控制机制加到4位或6位结构具有更低的成本。
图46图示根据本公开的实施例的加速器片4600,该加速器片 4600包括处理元件的阵列和本地提取控制器4602、4606。每一个PE、每一个网络控制器和每一个切换装置可以是可提取结构元件(EFE),例如,该EFE由CSA架构的实施例配置(例如,编程)。
CSA的实施例包括提供对异构空间结构的高效、分布式、低等待时间提取的硬件。这可以根据四项技术来实现。首先,利用硬件实体(本地提取控制器(LEC)),例如,如图46-48中所示。LEC可接受来自主机(例如,处理器核)的命令,例如从空间阵列提取数据流,并将该数据往回写入到虚拟存储器供由该主机检查。其次,提取数据路径可被包括,例如,该提取数据路径与PE结构的原生宽度一样宽,并且可被覆盖在PE 结构的顶部上。第三,新控制信号可被接收到安排提取过程的PE结构中。第四,状态元件可位于(例如,在寄存器中)跟踪相邻EFE的状态的每一个可配置端点处,从而允许每一个EFE无需额外的控制信号来明确地输出其状态。这四个微架构特征可允许CSA从EFE的链提取数据。为了获得低的数据提取等待时间,某些实施例可通过将多个(例如,许多)LEC和EFE 链包括在结构中来将提取问题分区。在提取时,这些链可独立地操作以便并行地从结构提取数据,从而例如动态地降低等待时间。作为这些组合的结果,CSA可(例如,在几百纳秒内)执行完整的状态转储。
图47A-图47C图示根据本公开的实施例的配置数据路径网络的本地提取控制器4702。所描绘的网络包括多个多路复用器(例如,多路复用器4706、4708、4710),这些多路复用器可(例如,经由它们相应的控制信号)经配置以将(例如,来自PE的)一个或多个数据路径连接在一起。图47A图示为一些先前的操作程序配置(例如,设置)的网络4700(例如,结构)。图47B图示选通提取信号的本地提取控制器4702(例如,包括用于发送和/或接收信号的网络接口电路4704),并且由LEC控制的所有PE 进入提取模式。提取链中的最后一个PE(或提取终止器)可主控提取通道 (例如,总线),并且根据(1)来自LEC的信号或(2)内部(例如,从 PE)产生的信号发送数据。一旦被完成,PE可设置其完成标记,,从而例如使下一个PE能够提取其数据。图47C图示最远的PE已完成提取过程,并且作为结果,该最远的PE已设置其一个或多个提取状态位,例如,该一个或多个提取状态位使mux摇摆到相邻网络以使下一个PE能够开始提取过程。被提取的PE可恢复正常操作。在一些实施例中,PE可保持禁用,直到其他动作被采取。在这些附图中,多路复用器网络与在某些附图(例如,图21)中示出的“切换装置”类似。
下一节描述提取网络的实施例的各种组件的操作
本地提取控制器
图48图示根据本公开的实施例的提取控制器4802。本地提取控制器(LEC)可以是负责接受提取命令、协调EFE的提取过程和/或将被提取数据存储到例如虚拟存储器的硬件实体。在该能力方面,LEC可以是专用序列化微控制器。
当LEC接收到指向结构状态将被写入的缓冲器(例如,在虚拟存储器中)的指针以及可任选地接收到控制结构中的多少将被提取的命令时,LEC操作可以开始。取决于LEC微架构,(例如,存储在指针寄存器 4804中的)该指针可以要么通过网络要么通过存储器系统访问来到LEC。当LEC接收到此类指针(例如,命令)时,它继续从结构中它所负责的部分提取状态。LEC可将该被提取的数据流送出结构而流送到由外部调用器提供的缓冲器中。
在图46中示出用于LEC的两种不同的微架构。第一个将LEC 4602放置在存储器接口处。在这种情况下,LEC可向存储器系统做出写入被提取的数据的直接请求。在第二种情况下,LEC 4606被放置在存储器网络上,在存储器网络中,LCC 4606可仅间接地向存储器作出请求。在这两种情况下,LEC的逻辑操作可以不改变。在一个实施例中,例如由(例如, OS可见的)控制状态寄存器的集合向LEC通知要从结构提取数据的期望,该控制状态寄存器的集合将用于向各个LEC通知新命令。
额外的带外控制通道(例如,线)
在某些实施例中,提取依赖于2-8个额外的带外信号来改善配置速度,如下文所定义。由LEC驱动的信号可被标记为LEC。由EFE(例如,PE)驱动的信号可被标记为EFE。配置控制器4802可包括以下控制通道,例如,LEC_EXTRACT控制通道4806、LEC_START控制通道4808、LEC_STROBE控制通道4810和EFE_COMPLETE控制通道4812,每一者的示例在以下表4中讨论。
表4:提取通道
一般而言,对提取的处置可以被留给特定EFE的实现器。例如,可选择功能EFE可具有供应以便使用现有数据路径来转储寄存器,而固定功能EFE可简单地具有多路复用器。
由于在对EFE的大型集合编程时的长的线延迟,因此 LEC_STROBE信号可视为对EFE组件的时钟/锁存启用。由于该信号被用作时钟,因此在一个实施例中,该线的占空比最多为50%。作为结果,提取吞吐量大约减半。可任选地,第二LEC_STROBE信号可被添加以实现连续提取。
在一个实施例中,仅LEC_START在独立耦合装置(例如,线) 上被严格地传递,例如,其他控制通道可被覆盖在现有网络(例如,线) 上。
网络资源的重新使用
为了减少数据提取的开销,CSA的某些实施例利用现有的网络基础结构来传递提取数据。LEC可利用芯片级存储器层次结构和结构级通信网络两者来将数据从结构移动到存储中。作为结果,在CSA的某些实施例中,提取基础结构向总结构面积和功率增加不多于2%。
在CSA的某些实施例中的网络资源的重新使用可使网络具有对提取协议的某种硬件支持。电路交换型网络要求CSA的某些实施例使LEC 在“LEC_START”信号被断言时以特定的方式来设置这些电路交换型网络的多路复用器以进行配置。分组交换型网络不要求扩展,但是LEC端点(例如,提取终止器)使用分组交换型网络中的特定地址。网络重新使用是可任选的,并且一些实施例可发现专用配置总线是更方便的。
每个EFE状态
每一个EFE可维护表明它是否已输出其状态的位。当提取开始信号被驱动时,该位可被解除断言,随后,一旦特定的EFE已完成提取,就断言该位。在一个提取协议中,EFE被布置成以形成链,并且EFE提取状态位确定该链的拓扑。EFE可读取紧邻EFE的提取状态位。如果该相邻的EFE已使其提取位被设置并且当前的EFE没有使其提取位被设置,则该 EFE可确定它拥有提取总线。当EFE转储其最后的数据值时,它可驱动“EFE_DONE”信号并设置其提取位,从而例如使上游EFE能够配置用于提取。相邻于该EFE的网络可观察该信号,并且也调整其状态以处置该转变。作为提取过程的基本情况,断言提取完成的提取终止器(例如,在图37中的用于LEC 4602的提取终止器4604或用于LEC 4606的提取终止器4608) 可被包括在链的结尾处。
在EFE内部,该位可用于驱动流控制就绪信号。例如,当提取位被解除断言时,网络控制信号可被自动地箝位为防止数据流动的值,同时在PE内,没有操作或动作将被调度。
处理高延迟路径
LEC的一个实施例可例如通过许多多路复用器且利用许多加载以在长距离上驱动信号。因此,信号在短时钟周期内到达远端EFE可能是困难的。在某些实施例中,提取信号处于主(例如,CSA)时钟信号的某个分频(例如,分数)以确保提取时的数字时序规则。时钟分频可用于带外信令协议中,并且不要求对主时钟树的任何修改。
确保提取期间一致的结构行为
由于某些提取方案是分布式的且由于程序和存储器效应具有非确定性时序,因此结构的不同成员可在不同时间处于提取状态。当 LEC_EXTRACT被驱动时,所有网络流控制信号可被驱动为逻辑低,例如,由此冻结结构的特定段的操作。
提取过程可以是非破坏性的。因此,一旦提取已完成,PE的集合可认为是运行的。对提取协议的扩展可允许PE在提取后可任选地被禁用。或者,在实施例中,在提取过程期间开始配置将具有类似效果。
单个PE提取
在一些情况下,提取单个PE可能是权宜之计。在该情况下,作为提取过程的开始的部分,可任选的地址信号可被驱动。这可使该PE针对将被直接启用的提取。一旦该PE已被提取,提取过程就伴随着 LEC_EXTRACT信号的降低而终止。以此方式,单个PE可例如由本地提取控制器选择性地提取。
处置提取回压
在其中LEC将被提取的数据写入到存储器(例如,对于后处理,例如,在软件中)的实施例中,它可能受制于有限的存储器带宽。在LEC 耗尽其缓冲容量或预期它将耗尽其缓冲容量的情况下,该LEC可停止选通LEC_STROBE,直到缓冲问题已被解决。
注意,在某些附图(例如,图37、40、41、43、44和46中),示意性地示出通信。在某些实施例中,那些通信可通过(例如,互连)网络发生。
7.7流程图
图49图示根据本公开的实施例的流程图4900。所描绘的流程 4900包括:4902:利用处理器的核的解码器将指令解码为经解码指令;4904:利用所述处理器的所述核的执行单元执行所述经解码指令以执行第一操作; 4906:接收包括多个节点的数据流图的输入;4908:将所述数据流图覆盖到所述处理器的处理元件的阵列中,并且每一个节点被表示为所述处理元件的阵列中的数据流操作器;以及4910:当传入操作数集到达所述处理元件的阵列处时,利用所述处理元件的阵列执行所述数据流图的第二操作。
图50图示根据本公开的实施例的流程图5000。所描绘的流程 5000包括:5002:利用处理器的核的解码器将指令解码为经解码指令;5004:利用所述处理器的所述核的执行单元执行所述经解码指令以执行第一操作; 5006:接收包括多个节点的数据流图的输入;5008:将所述数据流图覆盖到所述处理器的多个处理元件以及所述处理器的所述多个处理元件之间的互连网络中,并且每一个节点被表示为所述多个处理元件中的数据流操作器;以及5010:当传入操作数集到达所述多个处理元件时,利用所述互连网络和所述多个处理元件执行所述数据流图的第二操作。
8.总结
ExaFLOP规模的超级计算可能是高性能计算中的挑战,该挑战可能无法由常规的冯·诺依曼架构满足。为了实现ExaFLOP,CSA的实施例提供异构空间阵列,该异构空间阵列针对(例如,编译器产生的)数据流图的直接执行。除了布置CSA的实施例的架构原理之外,上文还描述并评估了CSA的实施例,这些CSA的实施例显示出相比现有产品的高10x(10倍)的性能和能量。编译器生成的代码相比路线图架构可具有显著的性能和能量增益。作为异构的参数化架构,CSA的实施例可易于适配于所有计算用例。例如,CSA 的移动版本可调整为32位,而聚焦机器学习的阵列的特征可以是显著数量的向量化8位乘法单元。CSA的实施例的主要优势是与从超级计算和数据中心到物联网的所有形式的计算有关的高性能、极其高能效且具有特性的。
在一个实施例中,一种处理器包括:多个处理元件;多个处理元件之间的互连网络,该互连网络用于接收包括多个节点的数据流图的输入,其中,该数据流图用于被覆盖到互连网络和多个处理元件中,并且每个节点被表示为互连网络和多个处理元件中的数据流操作器,并且多个处理元件用于当传入操作数集到达多个处理元件时执行操作;以及配置控制器,耦合至多个处理元件的第一子集和不同的第二子集,多个处理元件的第一子集具有耦合到多个处理元件的不同的第二子集的输入的输出,其中,配置控制器用于将多个处理元件的第一子集与不同的第二子集之间的互连网络配置为:当特权位被设置为第一值时,不允许多个处理元件的第一子集与多个处理元件的不同的第二子集之间的互连网络上的通信;以及当特权位被设置为第二值时,允许多个处理元件的第一子集与多个处理元件的不同的第二子集之间的互连网络上的通信。互连网络包括特权状态寄存器,该特权状态寄存器在多个处理元件的第一子集与多个处理元件的不同的第二子集之间的边界处,该特权状态寄存器用于打开和关闭所述边界处的电路以:当特权状态寄存器中的特权位被配置控制器设置为第一值时,不允许多个处理元件的第一子集与多个处理元件的不同的第二子集之间的互连网络上的通信;以及当特权状态寄存器中的特权位被配置控制器设置为第二值时,允许多个处理元件的第一子集与多个处理元件的不同的第二子集之间的互连网络上的通信。在当特权位被设置为第一值时而不允许多个处理元件的第一子集与多个处理元件的不同的第二子集之间的互连网络上的通信的情况下,第一上下文用于在多个处理元件的第一子集上执行,并且第二上下文用于同时在多个处理元件的不同的第二子集上执行。当特权位被设置为第一值时,配置控制器可不允许多个处理元件的第一子集与多个处理元件的不同的第二子集之间的互连网络的前向数据路径和向后流的流控制路径中的任一者上的通信,该向后流的流控制路径与前向数据路径配对。当特权位被设置为第一值时,配置控制器可使互连网络将多个处理元件的第一子集与多个处理元件的不同的第二子集之间的边界处的所有信号拉为零。配置控制器可耦合至多个处理元件的第一子集、不同的第二子集和不同的第三子集,多个处理元件的第一子集具有耦合至多个处理元件的不同的第二子集的输入的输出,并且多个处理元件的不同的第三子集具有耦合至多个处理元件的不同的第二子集的输入的输出,其中,配置控制器可将多个处理元件的第一子集、不同的第二子集与不同的第三子集之间的互连网络配置为:当特权位被设置为第一值时,不允许多个处理元件的第一子集、不同的第二子集与不同的第三子集之间的互连网络上的通信;以及当特权位被设置为第二值时,允许多个处理元件的第一子集、不同的第二子集与不同的第三子集之间的互连网络上的通信。当特权位被设置为第二值时,配置控制器可根据用于数据流图的第一上下文的配置信息来配置多个处理元件的第一子集和不同的第二子集,并且对于所请求的上下文切换,配置控制器可以在第一子集中完成了第一上下文的待决操作后根据用于数据流图的第二上下文的配置信息来配置多个处理元件的第一子集,并阻止第二上下文数据流从多个处理元件的第一子集的输出进入多个处理元件的不同的第二子集的输入,直到在多个处理元件的不同的第二子集中完成了第一上下文的待决操作。配置控制器可在操作的运行时期间修改特权位。
在另一实施例中,一种方法包括:当传入操作数集到达处理器的多个处理元件时,利用该处理器的互连网络和多个处理元件执行数据流图的操作,其中,该处理器包括多个处理元件和多个处理元件之间的互连网络并具有数据流图,该数据流图包括多个节点,多个节点被覆盖到处理器的多个处理元件和处理器的多个处理元件之间的互连网络中,并且每个节点被表示为互连网络和多个处理元件中的数据流操作器;以及利用处理器的配置控制器将多个处理元件的第一子集与不同的第二子集之间的互连网络配置为:当特权位被设置为第一值时,不允许多个处理元件的第一子集与多个处理元件的不同的第二子集之间的互连网络上的通信;以及当特权位被设置为第二值时,允许多个处理元件的第一子集与多个处理元件的不同的第二子集之间的互连网络上的通信。该配置可包括:配置控制器更新多个处理元件的第一子集与多个处理元件的不同的第二子集之间的边界处的特权状态寄存器中的特权位以打开和关闭边界处的电路,以便:当特权状态寄存器中的特权位被设置为第一值时,不允许多个处理元件的第一子集与多个处理元件的不同的第二子集之间的互连网络上的通信;以及当特权状态寄存器中的特权位被设置为第二值时,允许多个处理元件的第一子集与多个处理元件的不同的第二子集之间的互连网络上的通信。该方法可进一步包括:在当特权位被设置为第一值时而不允许多个处理元件的第一子集与多个处理元件的不同的第二子集之间的互连网络上的通信的情况下,在多个处理元件的第一子集上执行第一上下文,并且同时在多个处理元件的不同的第二子集上执行第二上下文。该配置可进一步包括:当特权位被设置为第一值时,防止多个处理元件的第一子集与多个处理元件的不同的第二子集之间的互连网络的前向数据路径和向后流的流控制路径中的任一者上的通信,该向后流的流控制路径与前向数据路径配对。该配置可进一步包括:当特权位被设置为第一值时,使互连网络将多个处理元件的第一子集与多个处理元件的不同的第二子集之间的边界处的所有信号拉为零。该配置可进一步包括:将多个处理元件的第一子集、不同的第二子集和不同的第三子集之间的互连网络配置为:当特权位被设置为第一值时,不允许多个处理元件的第一子集、不同的第二子集与不同的第三子集之间的互连网络上的通信;以及当特权位被设置为第二值时,允许多个处理元件的第一子集、不同的第二子集与不同的第三子集之间的互连网络上的通信。该方法可进一步包括:当特权位被设置为第二值时,根据用于数据流图的第一上下文的配置信息来配置多个处理元件的第一子集和不同的第二子集,并且对于所请求的上下文切换,在第一子集中完成了第一上下文的待决操作后根据用于数据流图的第二上下文的配置信息来配置多个处理元件的第一子集,并阻止第二上下文数据流从多个处理元件的第一子集的输出进入多个处理元件的不同的第二子集的输入,直到在多个处理元件的不同的第二子集中完成了第一上下文的待决操作。该方法可包括:配置控制器在操作的运行时期间修改特权位。
在又一实施例中,一种存储代码的非暂态机器可读介质,该代码当由机器执行时使该机器执行方法,该方法包括:当传入操作数集到达处理器的多个处理元件时,利用该处理器的互连网络和多个处理元件执行数据流图的操作,其中,该处理器包括多个处理元件和多个处理元件之间的互连网络并具有数据流图,该数据流图包括多个节点,多个节点被覆盖到处理器的多个处理元件和处理器的多个处理元件之间的互连网络中,并且每个节点被表示为互连网络和多个处理元件中的数据流操作器;以及利用处理器的配置控制器将多个处理元件的第一子集与不同的第二子集之间的互连网络配置为:当特权位被设置为第一值时,不允许多个处理元件的第一子集与多个处理元件的不同的第二子集之间的互连网络上的通信;以及当特权位被设置为第二值时,允许多个处理元件的第一子集与多个处理元件的不同的第二子集之间的互连网络上的通信。该配置可包括:配置控制器更新多个处理元件的第一子集与多个处理元件的不同的第二子集之间的边界处的特权状态寄存器中的特权位以打开和关闭边界处的电路,以便:当特权状态寄存器中的特权位被设置为第一值时,不允许多个处理元件的第一子集与多个处理元件的不同的第二子集之间的互连网络上的通信;以及当特权状态寄存器中的特权位被设置为第二值时,允许多个处理元件的第一子集与多个处理元件的不同的第二子集之间的互连网络上的通信。该方法可进一步包括:在当特权位被设置为第一值时而不允许多个处理元件的第一子集与多个处理元件的不同的第二子集之间的互连网络上的通信的情况下,在多个处理元件的第一子集上执行第一上下文,并且同时在多个处理元件的不同的第二子集上执行第二上下文。该配置可进一步包括:当特权位被设置为第一值时,防止多个处理元件的第一子集与多个处理元件的不同的第二子集之间的互连网络的前向数据路径和向后流的流控制路径中的任一者上的通信,该向后流的流控制路径与前向数据路径配对。该配置可进一步包括:当特权位被设置为第一值时,使互连网络将多个处理元件的第一子集与多个处理元件的不同的第二子集之间的边界处的所有信号拉为零。该配置可进一步包括:将多个处理元件的第一子集、不同的第二子集和不同的第三子集之间的互连网络配置为:当特权位被设置为第一值时,不允许多个处理元件的第一子集、不同的第二子集与不同的第三子集之间的互连网络上的通信;以及当特权位被设置为第二值时,允许多个处理元件的第一子集、不同的第二子集与不同的第三子集之间的互连网络上的通信。该方法可进一步包括:当特权位被设置为第二值时,根据用于数据流图的第一上下文的配置信息来配置多个处理元件的第一子集和不同的第二子集,并且对于所请求的上下文切换,在第一子集中完成了第一上下文的待决操作后根据用于数据流图的第二上下文的配置信息来配置多个处理元件的第一子集,并阻止第二上下文数据流从多个处理元件的第一子集的输出进入多个处理元件的不同的第二子集的输入,直到在多个处理元件的不同的第二子集中完成了第一上下文的待决操作。该方法可包括:配置控制器在操作的运行时期间修改特权位。
在另一实施例中,一种处理器包括:多个处理元件;多个处理元件之间的互连网络,该互连网络用于接收包括多个节点的数据流图的输入,其中,该数据流图用于被覆盖到互连网络和多个处理元件中,并且每个节点被表示为互连网络和多个处理元件中的数据流操作器,并且多个处理元件用于当传入操作数集到达多个处理元件时执行操作;以及耦合至多个处理元件的第一子集和不同的第二子集的装置,多个处理元件的第一子集具有耦合到多个处理元件的不同的第二子集的输入的输出,其中,该装置用于将多个处理元件的第一子集与不同的第二子集之间的互连网络配置为:当特权位被设置为第一值时,不允许多个处理元件的第一子集与多个处理元件的不同的第二子集之间的互连网络上的通信;以及当特权位被设置为第二值时,允许多个处理元件的第一子集与多个处理元件的不同的第二子集之间的互连网络上的通信。
在一个实施例中,一种处理器包括:多个处理元件;多个处理元件之间的互连网络,用于接收包括多个节点的数据流图的输入,该数据流图用于被覆盖到互连网络和多个处理元件中,并且每个节点被表示为互连网络和多个处理元件中的数据流操作器,多个处理元件用于当传入操作数集到达多个处理元件时执行操作;以及配置控制器,耦合到多个处理元件的第一子集和不同的第二子集,该第一子集具有耦合到不同的第二子集的输入的输出,其中,该配置控制器用于:根据用于数据流图的第一上下文的配置信息来配置多个处理元件的第一子集和不同的第二子集;以及在第一子集中完成了第一上下文的待决操作之后(例如,一直到遇到回压信号和/或消耗了所有输入数据的时刻)(或者对第一上下文的待决操作未完成,例如,在状态可被提取的停止点处停止操作),对于所请求的上下文切换,根据用于数据流图的第二上下文的配置信息来配置多个处理元件的第一子集,并且阻止第二上下文数据流从第一子集的输出进入不同的第二子集的输入,直到在该不同的第二子集中完成了第一上下文的待决操作(例如,一直到遇到回压信号和/或消耗了所有输入数据的时刻)。处理器可包括第一子集的第一本地配置控制器以及不同的第二子集的第二本地配置控制器,其中,配置控制器用于将对应的配置信息发送到第一本地配置控制器和第二本地配置控制器中的每一个。待决操作可以是将要(例如,必须) 被完成以到达(例如,完全)可保存状态的操作,例如,参见上文对一个或多个附图的讨论。配置信息可被存储在某处并随后被读入,而提取信息可被写入到某个存储的某处,例如(例如,经由RAF电路)被写入到虚拟存储器。配置控制器可包括提取控制器,该提取控制器用于使来自多个处理元件的第一子集和不同的第二子集的状态数据被保存到存储器,并且该提取控制器用于:当在第一子集中完成了第一上下文的待决操作后,对于所请求的上下文切换,从第一子集提取第一状态数据。多个处理元件可包括在第一子集的输出与不同的第二子集的输入之间的多个处理元件的不同的第三子集,并且配置控制器用于:对于所请求的上下文切换,将多个处理元件的不同的第三子集保持在未经配置状态,以便阻止第二上下文数据流从第一子集的输出到不同的第二子集的输入,直到在该不同的第二子集中完成了第一上下文的待决操作。配置控制器可使不同的第三子集的回压信号针对未经配置的状态被输出到多个处理元件的第一子集。配置控制器可允许在不同的第二子集中对第一上下文的操作与在第一子集中对第二上下文的操作同时(例如,发生)。
在另一实施例中,一种方法包括:接收包括多个节点的数据流图的输入;将该数据流图覆盖到处理器的多个处理元件以及处理器的多个处理元件之间的互连网络中,并且每个节点被表示为互连网络和多个处理元件中的数据流操作器;当传入操作数集到达多个处理元件时,利用互连网络和多个处理元件执行数据流图的操作;利用处理器的配置控制器、根据用于数据流图的第一上下文的配置信息来配置多个处理元件的第一子集和不同的第二子集;以及当在第一子集中完成了第一上下文的待决操作之后,对于所请求的上下文切换,利用处理器的配置控制器,根据用于数据流图的第二上下文的配置信息来配置多个处理元件的第一子集,并且阻止第二上下文数据流从第一子集的输出进入不同的第二子集的输入,直到在不同的第二子集中完成了第一上下文的待决操作。该方法可包括:配置控制器将对应的配置信息发送到第一子集的第一本地配置控制器和不同的第二子集的第二本地配置控制器中的每一个本地配置控制器。该方法可包括:当在第一子集中完成了第一上下文的待决操作之后,对于所请求的上下文切换,从第一子集提取第一状态数据。该方法可包括:对于所请求的上下文切换,利用配置控制器将第一子集的输出与不同的第二子集的输入之间的多个处理元件的不同的第三子集保持在未经配置的状态,以阻止第二上下文数据流从第一子集的输出到不同的第二子集的输入,直到在不同的第二子集中完成了第一上下文的待决操作。该保持可包括:使不同的第三子集的回压信号针对未经配置的状态被输出到多个处理元件的第一子集。该方法可包括:利用配置控制器来允许在不同的第二子集中对第一上下文的操作与在第一子集中对第二上下文的操作同时(例如,发生)。
在又一实施例中,一种处理器包括:多个处理元件;多个处理元件之间的互连装置,用于接收包括多个节点的数据流图的输入,该数据流图用于被覆盖到互连装置和多个处理元件中,并且每个节点被表示为互连装置和多个处理元件中的数据流操作器,多个处理元件用于当传入操作数集到达多个处理元件时执行操作;以及耦合到多个处理元件的第一子集和不同的第二子集的装置,该第一子集具有耦合到不同的第二子集的输入的输出,其中,该装置用于:根据用于数据流图的第一上下文的配置信息来配置多个处理元件的第一子集和不同的第二子集;以及当在第一子集中完成了第一上下文的待决操作之后,对于所请求的上下文切换,根据用于数据流图的第二上下文的配置信息来配置多个处理元件的第一子集,并且阻止第二上下文数据流从第一子集的输出进入不同的第二子集的输入,直到在该不同的第二子集中完成了第一上下文的待决操作。
在另一实施例中,一种处理器包括:多个处理元件;多个处理元件之间的互连网络,用于接收包括多个节点的数据流图的输入,该数据流图用于被覆盖到互连网络和多个处理元件中,并且每个节点被表示为互连网络和多个处理元件中的数据流操作器,多个处理元件用于当传入操作数集到达多个处理元件时执行操作;第一配置控制器,耦合至多个处理元件的第一子集;以及第二配置控制器,耦合至多个处理元件的不同的第二子集,并且第一子集具有耦合到不同的第二子集的输入的输出,其中,第一配置控制器和第二配置控制器用于:根据用于数据流图的第一上下文的配置信息来配置多个处理元件的第一子集和不同的第二子集;以及当在第一子集中完成了第一上下文的待决操作之后,对于所请求的上下文切换,第一配置控制器用于根据用于数据流图的第二上下文的配置信息来配置多个处理元件的第一子集,并且阻止第二上下文数据流从第一子集的输出进入不同的第二子集的输入,直到在该不同的第二子集中完成了第一上下文的待决操作。该处理器可包括耦合至第一配置控制器和第二配置控制器的更高级别的配置控制器,其中,该更高级别的配置控制器用于将对应的配置信息发送到第一配置控制器和第二配置控制器中的每一个。第一配置控制器可包括提取控制器,该提取控制器用于使来自多个处理元件的第一子集的状态数据被保存到存储器,并且该提取控制器用于:当在第一子集中完成了第一上下文的待决操作后,对于所请求的上下文切换,从第一子集提取第一状态数据。多个处理元件可包括在第一子集的输出与不同的第二子集的输入之间的多个处理元件的不同的第三子集,并且第三配置控制器耦合至该不同的第三子集,用于:对于所请求的上下文切换,将多个处理元件的不同的第三子集保持在未经配置状态,以便阻止第二上下文数据流从第一子集的输出到不同的第二子集的输入,直到在该不同的第二子集中完成了第一上下文的待决操作。第三配置控制器可使不同的第三子集的回压信号针对未经配置的状态被输出到多个处理元件的第一子集。第一配置控制器和第二配置控制器可允许在不同的第二子集中对第一上下文的操作与在第一子集中对第二上下文的操作同时 (例如,发生)。
在又一实施例中,一种方法包括:接收包括多个节点的数据流图的输入;将该数据流图覆盖到处理器的多个处理元件以及处理器的多个处理元件之间的互连网络中,并且每个节点被表示为互连网络和多个处理元件中的数据流操作器;当传入操作数集到达多个处理元件时,利用互连网络和多个处理元件执行数据流图的操作;利用处理器的第一配置控制器和第二配置控制器、根据用于数据流图的第一上下文的对应的配置信息来配置多个处理元件的第一子集和不同的第二子集;以及当在第一子集中完成了第一上下文的待决操作之后,对于所请求的上下文切换,利用处理器的第一配置控制器,根据用于数据流图的第二上下文的配置信息来配置多个处理元件的第一子集,并且阻止第二上下文数据流从第一子集的输出进入不同的第二子集的输入,直到在不同的第二子集中完成了第一上下文的待决操作。该方法可包括:利用处理器的更高级别的配置控制器来将对应的配置信息发送到第一子集的第一配置控制器和不同的第二子集的第二配置控制器中的每一个配置控制器。该方法可包括:当在第一子集中完成了第一上下文的待决操作之后,对于所请求的上下文切换,从第一子集提取第一状态数据。该方法可包括:对于所请求的上下文切换,利用不同的第三子集的第三配置控制器将第一子集的输出与不同的第二子集的输入之间的多个处理元件的不同的第三子集保持在未经配置的状态,以阻止第二上下文数据流从第一子集的输出到不同的第二子集的输入,直到在不同的第二子集中完成了第一上下文的待决操作。该保持可包括:使不同的第三子集的回压信号针对未经配置的状态被输出到多个处理元件的第一子集。该方法可包括:利用第一配置控制器和第二配置控制器来允许在不同的第二子集中对第一上下文的操作与在第一子集中对第二上下文的操作同时(例如,发生)。
在另一实施例中,一种处理器包括:多个处理元件;多个处理元件之间的互连装置,用于接收包括多个节点的数据流图的输入,其中,该数据流图用于被覆盖到互连装置和多个处理元件中,并且每个节点被表示为互连装置和多个处理元件中的数据流操作器,多个处理元件用于当传入操作数集到达多个处理元件时执行操作;第一装置,耦合至多个处理元件的第一子集;以及第二装置,耦合至多个处理元件的不同的第二子集,并且第一子集具有耦合到不同的第二子集的输入的输出,其中,第一装置和第二装置用于:根据用于数据流图的第一上下文的配置信息来配置多个处理元件的第一子集和不同的第二子集;以及当在第一子集中完成了第一上下文的待决操作之后,对于所请求的上下文切换,第一装置用于根据用于数据流图的第二上下文的配置信息来配置多个处理元件的第一子集,并且阻止第二上下文数据流从第一子集的输出进入不同的第二子集的输入,直到在该不同的第二子集中完成了第一上下文的待决操作。
在一个实施例中,一种处理器包括:核,所述核具有解码器和执行单元,所述解码器用于将指令解码为经解码指令,所述执行单元用于执行所述经解码指令以执行第一操作;多个处理元件;以及互连网络,在所述多个处理元件之间,所述互连网络用于接收包括多个节点的数据流图的输入,其中,所述数据流图用于被覆盖到所述互连网络和所述多个处理元件中,并且每一个节点被表示为所述多个处理元件中的数据流操作器,并且所述多个处理元件用于当相应的传入操作数集到达所述多个处理元件的数据流操作器中的每一个时执行第二操作。当来自下游处理元件的回压信号指示所述下游处理元件中的存储不可用于所述多个处理元件中的一处理元件时,该处理元件可停止执行。所述处理器可包括流控制路径网络,所述流控制路径网络用于根据所述数据流图携带所述回压信号。数据流令牌可使来自接收所述数据流令牌的数据流操作器的输出被发送到所述多个处理元件中的特定处理元件的输入缓冲器。所述第二操作可包括存储器访问,并且所述多个处理元件包括存储器访问数据流操作器,所述存储器访问数据流操作器用于直到从逻辑上在先的数据流操作器接收到存储器依赖性令牌才执行所述存储器访问。所述多个处理元件可包括第一类型的处理元件以及第二不同类型的处理元件。
在另一实施例中,一种方法包括:利用处理器的核的解码器将指令解码为经解码指令;利用所述处理器的所述核的执行单元执行所述经解码指令以执行第一操作;接收包括多个节点的数据流图的输入;将所述数据流图覆盖到所述处理器的多个处理元件以及所述处理器的所述多个处理元件之间的互连网络中,并且每一个节点被表示为所述多个处理元件中的数据流操作器;以及当相应的传入操作数集到达所述多个处理元件的数据流操作器中每一个时,利用所述互连网络和所述多个处理元件执行所述数据流图的第二操作。所述方法可包括:当来自下游处理元件的回压信号指示所述下游处理元件中的存储不可用于所述多个处理元件中的一处理元件的输出时,停止由该处理元件进行的执行。所述方法可包括:根据所述数据流图,在流控制路径上发送所述回压信号。数据流令牌可使来自接收所述数据流令牌的数据流操作器的输出被发送到所述多个处理元件中的特定处理元件的输入缓冲器。所述方法可包括:直到从逻辑上在先的数据流操作器接收到存储器依赖性令牌,才执行存储访问,其中,所述第二操作包括所述存储器访问,并且所述多个处理元件包括存储器访问数据流操作器。所述方法可包括:提供所述多个处理元件中的第一类型的处理元件以及第二不同类型的处理元件。
在又一实施例中,一种装置包括:在多个处理元件之间的数据路径网络;以及在所述多个处理元件之间的流控制路径网络,其中,所述数据路径网络和所述流控制路径网络用于接收包括多个节点的数据流图的输入,所述数据流图用于被覆盖到所述数据路径网络、所述流控制路径网络和所述多个处理元件中,并且每一个节点被表示成所述多个处理元件中的数据流操作器,并且所述多个处理元件用于当相应的传入操作数集到达所述多个处理元件的数据流操作器中的每一个处时执行第二操作。所述流控制路径网络可根据所述数据流图将回压信号携带到多个数据流操作器。在所述数据路径网络上被发送到数据流操作器的数据流令牌可使来自所述数据流操作器的输出在所述数据路径网络上被发送到所述多个处理元件中的特定处理元件的输入缓冲器。所述数据路径网络可以是用于根据所述所述数据流图来将相应的输入操作数集携带到数据流操作器中的每一个的静态电路交换型网络。所述流控制路径网络可根据所述数据流图从下游处理元件传输回压信号以指示所述下游处理元件中的存储不可用于所述处理元件的输出。所述数据路径网络的至少一个数据路径和所述流控制路径网络的至少一个流控制路径可形成具有回压控制的通道化电路。所述流控制路径网络可在所述多个处理元件中的至少两个处理元件处串行地流水线化。
在另一实施例中,一种方法包括:接收包括多个节点的数据流图的输入;将所述数据流图覆盖到处理器的多个处理元件、所述多个处理元件之间的数据路径网络以及所述多个处理元件之间的流控制路径网络中,并且每一个节点被表示为所述多个处理元件中的数据流操作器。所述方法可包括:根据所述数据流图,利用所述流控制路径网络将回压信号携带到多个数据流操作器。所述方法可包括:在所述数据路径网络上将数据流令牌发送到数据流操作器,以使来自所述数据流操作器的输出在所述数据路径网络上被发送到所述多个处理元件中的特定处理元件的输入缓冲器。所述方法可包括:根据所述数据流图设置所述数据路径网络的多个切换装置和/或所述流控制路径网络的多个切换装置以将相应的输入操作数集携带到数据流操作器中的每一个,其中,所述数据路径网络是静态电路交换型网络。所述方法可包括:根据所述数据流图,利用所述流控制路径网络从下游处理元件传输回压信号,以指示所述下游处理元件中的存储不可用于所述处理元件的输出。所述方法可包括:利用所述数据路径网络的至少一个数据路径和所述流控制路径网络的至少一个流控制路径来形成具有回压控制的通道化电路。
在又一实施例中,一种处理器包括:核,所述核具有解码器和执行单元,所述解码器用于将指令解码为经解码指令,所述执行单元用于执行所述经解码指令以执行第一操作;多个处理元件;以及网络装置,在所述多个处理元件之间,所述网络装置用于接收包括多个节点的数据流图的输入,其中,所述数据流图用于被覆盖到所述网络装置和所述多个处理元件中,并且每一个节点被表示为所述多个处理元件中的数据流操作器,并且所述多个处理元件用于当相应的传入操作数集到达所述多个处理元件的数据流操作器中的每一个时执行第二操作。
在另一实施例中,一种设备包括:在多个处理元件之间的数据路径装置;以及在所述多个处理元件之间的流控制路径装置,其中,所述数据路径装置和所述流控制路径装置用于接收包括多个节点的数据流图的输入,所述数据流图用于被覆盖到所述数据路径装置、所述流控制路径装置和所述多个处理元件中,并且每一个节点被表示成所述多个处理元件中的数据流操作器,并且所述多个处理元件用于当相应的传入操作数集到达所述多个处理元件的数据流操作器中的每一个处时执行第二操作。
在一个实施例中,一种处理器包括:核,所述核具有解码器和执行单元,所述解码器用于将指令解码为经解码指令,所述执行单元用于执行所述经解码指令以执行第一操作;以及处理元件的阵列,所述处理元件的阵列用于接收包括多个节点的数据流图的输入,其中,所述数据流图用于被覆盖到所述处理元件的阵列,并且每一个节点被表示为所述处理元件的阵列中的数据流操作器,并且所述处理元件的阵列用于当传入操作数集到达所述处理元件的阵列时执行第二操作。所述处理元件的阵列可以直到传入操作数集到达所述处理元件的阵列且所述处理元件的阵列中的存储可用于所述第二操作的输出时才执行所述第二操作。所述处理元件的阵列可包括用于将数据流令牌和控制令牌携带到多个数据流操作器的网络(或(多个)通道)。所述第二操作可包括存储器访问,并且所述处理元件的阵列可包括存储器访问数据流操作器,所述存储器访问数据流操作器用于直到从逻辑上在先的数据流操作器接收到存储器依赖性令牌才执行所述存储器访问。每一个处理元件可仅执行所述数据流图的一个或两个操作。
在另一实施例中,一种方法包括:利用处理器的核的解码器将指令解码为经解码指令;利用所述处理器的所述核的执行单元执行所述经解码指令以执行第一操作;接收包括多个节点的数据流图的输入;将所述数据流图覆盖到所述处理器的处理元件的阵列中,并且每一个节点被表示为所述处理元件的阵列中的数据流操作器;以及当传入操作数集到达所述处理元件的阵列处时,利用所述处理元件的阵列执行所述数据流图的第二操作。所述处理元件的阵列可以直到传入操作数集到达所述处理元件的阵列且所述处理元件的阵列中的存储可用于所述第二操作的输出时才执行所述第二操作。所述处理元件的阵列可包括将数据流令牌和控制令牌携带到多个数据流操作器的网络。所述第二操作可包括存储器访问,并且所述处理元件的阵列包括存储器访问数据流操作器,所述存储器访问数据流操作器用于直到从逻辑上在先的数据流操作器接收到存储器依赖性令牌才执行所述存储器访问。每一个处理元件可仅执行所述数据流图的一个或两个操作。
在又一实施例中,一种非暂态机器可读介质存储有代码,所述代码当由机器执行时使所述机器执行方法,所述方法包括:利用处理器的核的解码器将指令解码为经解码指令;利用所述处理器的所述核的执行单元执行所述经解码指令以执行第一操作;接收包括多个节点的数据流图的输入;将所述数据流图覆盖到所述处理器的处理元件的阵列中,并且每一个节点被表示为所述处理元件的阵列中的数据流操作器;以及当传入操作数集到达所述处理元件的阵列处时,利用所述处理元件的阵列执行所述数据流图的第二操作。所述处理元件的阵列可以直到传入操作数集到达所述处理元件的阵列且所述处理元件的阵列中的存储可用于所述第二操作的输出时才执行所述第二操作。所述处理元件的阵列可包括将数据流令牌和控制令牌携带到多个数据流操作器的网络。所述第二操作可包括存储器访问,并且所述处理元件的阵列包括存储器访问数据流操作器,所述存储器访问数据流操作器用于直到从逻辑上在先的数据流操作器接收到存储器依赖性令牌才执行所述存储器访问。每一个处理元件可仅执行所述数据流图的一个或两个操作。
在另一实施例中,一种处理器包括:核,所述核具有解码器和执行单元,所述解码器用于将指令解码为经解码指令,所述执行单元用于执行所述经解码指令以执行第一操作;以及用于接收包括多个节点的数据流图的输入的装置,其中,所述数据流图用于被覆盖到所述装置,并且每一个节点被表示为所述装置中的数据流操作器,并且所述装置用于当传入操作数集到达所述装置时执行第二操作。
在一个实施例中,处理器包括:核,所述核具有解码器和执行单元,所述解码器用于将指令解码为经解码指令,所述执行单元用于执行所述经解码指令以执行第一操作;多个处理元件;以及互连网络,在所述多个处理元件之间,所述互连网络用于接收包括多个节点的数据流图的输入,其中,所述数据流图用于被覆盖到所述互连网络和所述多个处理元件中,并且每一个节点被表示为所述多个处理元件中的数据流操作器,并且所述多个处理元件用于当传入操作数集到达所述多个处理元件时执行第二操作。所述处理器可进一步包括多个配置控制器,每一个配置控制器耦合到所述多个处理元件的相应子集,并且每一个配置控制器用于从存储加载配置信息并且引起所述多个处理元件的相应子集根据所述配置信息耦合。所述处理器可包括多个配置高速缓存,每一个配置控制器耦合至相应的配置高速缓存以取出用于所述多个处理元件的相应子集的配置信息。由所述执行单元执行的所述第一操作可以将配置信息预取到所述多个配置高速缓存中的每一个中。所述多个配置控制器中的每一个可包括重配置电路,所述重配置电路用于:在从所述多个处理元件的相应子集中的至少一个处理元件接收到配置错误消息时引起对所述至少一个处理元件的重配置。所述多个配置控制器中的每一个可包括重配置电路,所述重配置电路用于:在接收到重配置请求消息时引起对所述多个处理元件的相应子集的重配置;以及禁用与所述多个处理元件的相应子集的通信,直到所述重配置完成。所述处理器可包括多个异常聚合器,并且每一个异常聚合器耦合至所述多个处理元件的相应子集,从便从所述多个处理元件的相应子集收集异常并将所述异常转发至所述核以用于维护。所述处理器可包括多个提取控制器,每一个提取控制器耦合至所述多个处理元件的相应子集,并且每一个提取控制器用于使来自所述多个处理元件的相应子集的状态数据被保存到存储器。
在另一实施例中,一种方法包括:利用处理器的核的解码器将指令解码为经解码指令;利用所述处理器的所述核的执行单元执行所述经解码指令以执行第一操作;接收包括多个节点的数据流图的输入;将所述数据流图覆盖到所述处理器的多个处理元件以及所述处理器的所述多个处理元件之间的互连网络中,并且每一个节点被表示为所述多个处理元件中的数据流操作器;以及当传入操作数集到达所述多个处理元件时,利用所述互连网络和所述多个处理元件执行所述数据流图的第二操作。所述方法可包括:从存储加载用于所述多个处理元件的相应子集的配置信息;以及根据所述配置信息引起针对所述多个处理元件的每一个相应子集的耦合。所述方法可包括:从多个配置高速缓存中的相应配置高速缓存取出用于所述多个处理元件的相应子集的配置信息。由所述执行单元执行的所述第一操作可以是将配置信息预取到所述多个配置高速缓存中的每一个中。所述方法可包括:在从所述多个处理元件的相应子集中的至少一个处理元件接收到配置错误消息时,引起对所述至少一个处理元件的重配置。所述方法可包括:在接收到重配置请求消息时引起对所述多个处理元件的相应子集的重配置;以及禁用与所述多个处理元件的相应子集的通信,直到所述重配置完成。所述方法可包括:从所述多个处理元件的相应子集收集异常;以及将所述异常转发至核以用于维护。所述方法可包括:使来自所述多个处理元件的相应子集的状态数据被保存到存储器。
在又一实施例中,一种非暂态机器可读介质存储有代码,所述代码当由机器执行时使所述机器执行方法,所述方法包括:利用处理器的核的解码器将指令解码为经解码指令;利用所述处理器的所述核的执行单元执行所述经解码指令以执行第一操作;接收包括多个节点的数据流图的输入;将所述数据流图覆盖到所述处理器的多个处理元件以及所述处理器的所述多个处理元件之间的互连网络中,并且每一个节点被表示为所述多个处理元件中的数据流操作器;以及当传入操作数集到达所述多个处理元件时,利用所述互联网络和所述多个处理元件执行所述数据流图的第二操作。所述方法可包括:从存储加载用于所述多个处理元件的相应子集的配置信息;以及根据所述配置信息引起针对所述多个处理元件的每一个相应子集的耦合。所述方法可包括:从多个配置高速缓存中的相应配置高速缓存取出用于所述多个处理元件的相应子集的配置信息。由所述执行单元执行的所述第一操作可以是将配置信息预取到所述多个配置高速缓存中的每一个中。所述方法可进一步包括:在从所述多个处理元件的相应子集中的至少一个处理元件接收到配置错误消息时,引起对所述至少一个处理元件的重配置。所述方法可包括:在接收到重配置请求消息时引起对所述多个处理元件的相应子集的重配置;以及禁用与所述多个处理元件的相应子集的通信,直到所述重配置完成。所述方法可包括:从所述多个处理元件的相应子集收集异常;以及将所述异常转发至核以用于维护。所述方法可包括:使来自所述多个处理元件的相应子集的状态数据被保存到存储器。
在另一实施例中,一种处理器包括:核,所述核具有解码器和执行单元,所述解码器用于将指令解码为经解码指令,所述执行单元用于执行所述经解码指令以执行第一操作;多个处理元件;以及在所述多个而处理元件之间的装置,所述装置用于接收包括多个节点的数据流图的输入,其中,所述数据流图用于被覆盖到所述装置和所述多个处理元件中,并且每一个节点被表示为所述多个处理元件中的数据流操作器,并且所述多个处理元件用于当传入操作数集到达所述多个处理元件时执行第二操作。
在又一实施例中,一种装置包括数据存储设备,所述数据存储设备存储代码,所述代码当由硬件处理器执行时使所述硬件处理器执行本文中公开的方法。装置可以如在“具体实施方式”中所述。方法可以如在“具体实施方式”中所述。
在另一实施例中,一种非暂态机器可读介质存储有代码,所述代码当由机器执行时使所述机器执行包括如本文中所公开的任何方法的方法。
(例如,供核执行的)指令集可包括一种或多种指令格式。给定的指令格式可定义各种字段(例如,位的数量、位的位置)以指定将要执行的操作(例如,操作码)以及将对其执行该操作的(多个)操作数和/ 或(多个)其他数据字段(例如,掩码),等等。通过指令模板(或子格式)的定义来进一步分解一些指令格式。例如,可将给定指令格式的指令模板定义为具有该指令格式的字段(所包括的字段通常按照相同顺序,但是至少一些字段具有不同的位的位置,因为较少的字段被包括)的不同子集,和/或定义为具有以不同方式进行解释的给定字段。由此,ISA的每一条指令使用给定的指令格式(并且如果经定义,则按照该指令格式的指令模板中的给定的一个指令模板)来表达,并包括用于指定操作和操作数的字段。例如,示例性ADD(加法)指令具有特定的操作码和指令格式,该特定的指令格式包括用于指定该操作码的操作码字段和用于选择操作数 (源1/目的地以及源2)的操作数字段;并且该ADD指令在指令流中出现将使得在操作数字段中具有选择特定操作数的特定的内容。已经推出和/或发布了被称为高级向量扩展(AVX)(AVX1和AVX2)和利用向量扩展 (VEX)编码方案的SIMD扩展集(参见例如2017年7月的64和 IA-32架构软件开发者手册;并且参见2017年4月的架构指令集扩展编程参考;“英特尔”是英特尔公司以及子公司在美国和/或其他国家的商标)。
示例性指令格式
本文中所描述的(多条)指令的实施例能以不同的格式体现。另外,在下文中详述示例性系统、架构和流水线。(多条)指令的实施例可在此类系统、架构和流水线上执行,但是不限于详述的那些系统、架构和流水线。
通用向量友好指令格式
向量友好指令格式是适于向量指令(例如,存在专用于向量操作的特定字段)的指令格式。尽管描述了其中通过向量友好指令格式支持向量和标量操作两者的实施例,但是替代实施例仅使用通过向量友好指令格式的向量操作。
图51A-图51B是图示根据本公开的实施例的通用向量友好指令格式及其指令模板的框图。图51A是图示根据本公开的实施例的通用向量友好指令格式及其A类指令模板的框图;而图51B是图示根据本公开的实施例的通用向量友好指令格式及其B类指令模板的框图。具体地,针对通用向量友好指令格式5100定义A类和B类指令模板,这两者都包括无存储器访问5105的指令模板和存储器访问5120的指令模板。在向量友好指令格式的上下文中的术语“通用”是指不束缚于任何特定指令集的指令格式。
尽管将描述其中向量友好指令格式支持以下情况的本公开的实施例:64字节向量操作数长度(或尺寸)与32位(4字节)或64位(8字节) 数据元素宽度(或尺寸)(并且由此,64字节向量由16个双字尺寸的元素组成,或者替代地由8个四字尺寸的元素组成);64字节向量操作数长度(或尺寸)与16位(2字节)或8位(1字节)数据元素宽度(或尺寸);32字节向量操作数长度(或尺寸)与32位(4字节)、64位(8字节)、16位(2字节) 或8位(1字节)数据元素宽度(或尺寸);以及16字节向量操作数长度(或尺寸)与32位(4字节)、64位(8字节)、16位(2字节)、或8位(1字节)数据元素宽度(或尺寸);但是替代实施例可支持更大、更小和/或不同的向量操作数尺寸(例如,256字节向量操作数)与更大、更小或不同的数据元素宽度(例如,128位(16字节)数据元素宽度)。
图51A中的A类指令模板包括:1)在无存储器访问5105的指令模板内,示出无存储器访问的完全舍入控制型操作5110的指令模板、以及无存储器访问的数据变换型操作5115的指令模板;以及2)在存储器访问5120的指令模板内,示出存储器访问的时效性5125的指令模板和存储器访问的非时效性5130的指令模板。图51B中的B类指令模板包括:1)在无存储器访问5105 的指令模板内,示出无存储器访问的写掩码控制的部分舍入控制型操作5112 的指令模板以及无存储器访问的写掩码控制的vsize型操作5117的指令模板;以及2)在存储器访问5120的指令模板内,示出存储器访问的写掩码控制5127 的指令模板。
通用向量友好指令格式5100包括以下列出的按照在图51A-51B中图示的顺序的如下字段。
格式字段5140——该字段中的特定值(指令格式标识符值)唯一地标识向量友好指令格式,并且由此标识指令在指令流中以向量友好指令格式出现。由此,该字段对于仅具有通用向量友好指令格式的指令集是不需要的,在这个意义上该字段是任选的。
基础操作字段5142——其内容区分不同的基础操作。
寄存器索引字段5144——其内容直接或者通过地址生成来指定源或目的地操作数在寄存器中或者在存储器中的位置。这些字段包括足够数量的位以从PxQ(例如,32x512、16x128、32x1024、64x1024)寄存器堆中选择N 个寄存器。尽管在一个实施例中N可多达三个源寄存器和一个目的地寄存器,但是替代实施例可支持更多或更少的源和目的地寄存器(例如,可支持多达两个源,其中这些源中的一个源还用作目的地;可支持多达三个源,其中这些源中的一个源还用作目的地;可支持多达两个源和一个目的地)。
修饰符(modifier)字段5146——其内容将指定存储器访问的以通用向量指令格式出现的指令与不指定存储器访问的以通用向量指令格式出现的指令区分开;即在无存储器访问5105的指令模板与存储器访问5120的指令模板之间进行区分。存储器访问操作读取和/或写入到存储器层次(在一些情况下,使用寄存器中的值来指定源和/或目的地地址),而非存储器访问操作不这样(例如,源和目的地是寄存器)。尽管在一个实施例中,该字段还在三种不同的方式之间选择以执行存储器地址计算,但是替代实施例可支持更多、更少或不同的方式来执行存储器地址计算。
扩充操作字段5150——其内容区分除基础操作以外还要执行各种不同操作中的哪一个操作。该字段是针对上下文的。在本公开的一个实施例中,该字段被分成类字段5168、α字段5152和β字段5154。扩充操作字段5150 允许在单条指令而非2条、3条或4条指令中执行多组共同的操作。
比例字段5160——其内容允许用于存储器地址生成(例如,用于使用(2比例*索引+基址)的地址生成)的索引字段的内容的按比例缩放。
位移字段5162A——其内容用作存储器地址生成的一部分(例如,用于使用(2比例*索引+基址+位移)的地址生成)。
位移因数字段5162B(注意,位移字段5162A直接在位移因数字段5162B上的并置指示使用一个或另一个)——其内容用作地址生成的一部分;它指定将按比例缩放存储器访问的尺寸(N)的位移因数——其中N是存储器访问中的字节数量(例如,用于使用(2比例*索引+基址+按比例缩放的位移) 的地址生成)。忽略冗余的低阶位,并且因此将位移因数字段的内容乘以存储器操作数总尺寸(N)以生成将在计算有效地址中使用的最终位移。N的值由处理器硬件在运行时基于完整操作码字段5174(稍后在本文中描述)和数据操纵字段5154C确定。位移字段5162A和位移因数字段5162B不用于无存储器访问5105的指令模板和/或不同的实施例可实现这两者中的仅一个或不实现这两者中的任一个,在这个意义上,位移字段5162A和位移因数字段5162B是任选的。
数据元素宽度字段5164——其内容区分将使用多个数据元素宽度中的哪一个(在一些实施例中用于所有指令;在其他实施例中只用于指令中的一些指令)。如果支持仅一个数据元素宽度和/或使用操作码的某一方面来支持数据元素宽度,则该字段是不需要的,在这个意义上,该字段是任选的。
写掩码字段5170——其内容逐数据元素位置地控制目的地向量操作数中的数据元素位置是否反映基础操作和扩充操作的结果。A类指令模板支持合并-写掩蔽,而B类指令模板支持合并-写掩蔽和归零-写掩蔽两者。当合并时,向量掩码允许在执行(由基础操作和扩充操作指定的)任何操作期间保护目的地中的任何元素集免于更新;在另一实施例中,保持其中对应掩码位具有 0的目的地的每一元素的旧值。相反,当归零时,向量掩码允许在执行(由基础操作和扩充操作指定的)任何操作期间使目的地中的任何元素集归零;在一个实施例中,目的地的元素在对应掩码位具有0值时被设为0。该功能的子集是控制正被执行的操作的向量长度的能力(即,从第一个到最后一个正被修改的元素的跨度),然而,被修改的元素不一定要是连续的。由此,写掩码字段 5170允许部分向量操作,这包括加载、存储、算术、逻辑等。尽管描述了其中写掩码字段5170的内容选择了多个写掩码寄存器中的包含要使用的写掩码的一个写掩码寄存器(并且由此,写掩码字段5170的内容间接地标识要执行的掩蔽)的本公开的实施例,但是替代实施例替代地或附加地允许掩码写字段 5170的内容直接指定要执行的掩蔽。
立即数字段5172——其内容允许对立即数的指定。该字段在实现不支持立即数的通用向量友好格式中不存在且在不使用立即数的指令中不存在,在这个意义上,该字段是任选的。
类字段5168——其内容在不同类的指令之间进行区分。参考图 51A-图51B,该字段的内容在A类和B类指令之间进行选择。在图51A-图51B 中,圆角方形用于指示特定的值存在于字段中(例如,在图51A-图51B中分别用于类字段5168的A类5168A和B类5168B)。
A类指令模板
在A类非存储器访问5105的指令模板的情况下,α字段5152被解释为其内容区分要执行不同扩充操作类型中的哪一种(例如,针对无存储器访问的舍入型操作5110和无存储器访问的数据变换型操作5115的指令模板分别指定舍入5152A.1和数据变换5152A.2)的RS字段5152A,而β字段5154区分要执行所指定类型的操作中的哪一种。在无存储器访问5105的指令模板中,比例字段5160、位移字段5162A和位移比例字段5162B不存在。
无存储器访问的指令模板——完全舍入控制型操作
在无存储器访问的完全舍入控制型操作5110的指令模板中,β字段5154被解释为其(多个)内容提供静态舍入的舍入控制字段5154A。尽管在本公开的所述实施例中舍入控制字段5154A包括抑制所有浮点异常(SAE) 字段5156和舍入操作控制字段5158,但是替代实施例可支持这两个概念,可将这两个概念编码为同一字段,或仅具有这些概念/字段中的一个或另一个(例如,可仅具有舍入操作控制字段5158)。
SAE字段5156——其内容区分是否禁用异常事件报告;当SAE字段5156的内容指示启用抑制时,给定的指令不报告任何种类的浮点异常标志,并且不唤起任何浮点异常处置程序。
舍入操作控制字段5158——其内容区分要执行一组舍入操作中的哪一个(例如,向上舍入、向下舍入、向零舍入以及就近舍入)。由此,舍入操作控制字段5158允许逐指令地改变舍入模式。在其中处理器包括用于指定舍入模式的控制寄存器的本公开的一个实施例中,舍入操作控制字段5150的内容覆盖(override)该寄存器值。
无存储器访问的指令模板-数据变换型操作
在无存储器访问的数据变换型操作515的指令模板中,β字段5154 被解释为数据变换字段5154B,其内容区分要执行多个数据变换中的哪一个(例如,无数据变换、混合、广播)。
在A类存储器访问5120的指令模板的情况下,α字段5152被解释为驱逐提示字段5152B,其内容区分要使用驱逐提示中的哪一个(在图51A中,对于存储器访问时效性5125的指令模板和存储器访问非时效性5130的指令模板分别指定时效性的5152B.1和非时效性的5152B.2),而β字段5154被解释为数据操纵字段5154C,其内容区分要执行多个数据操纵操作(也称为基元 (primitive))中的哪一个(例如,无操纵、广播、源的向上转换以及目的地的向下转换)。存储器访问5120的指令模板包括比例字段5160,并任选地包括位移字段5162A或位移比例字段5162B。
向量存储器指令使用转换支持来执行来自存储器的向量加载以及向存储器的向量存储。如同寻常的向量指令,向量存储器指令以数据元素式的方式从/向存储器传输数据,其中实际被传输的元素由被选为写掩码的向量掩码的内容规定。
存储器访问的指令模板——时效性的
时效性的数据是可能足够快地被重新使用以从高速缓存操作受益的数据。然而,这是提示,并且不同的处理器能以不同的方式实现它,包括完全忽略该提示。
存储器访问的指令模板——非时效性的
非时效性的数据是不太可能足够快地被重新使用以从第一级高速缓存中的高速缓存操作受益且应当被给予驱逐优先级的数据。然而,这是提示,并且不同的处理器能以不同的方式实现它,包括完全忽略该提示。
B类指令模板
在B类指令模板的情况下,α字段5152被解释为写掩码控制(Z) 字段5152C,其内容区分由写掩码字段5170控制的写掩蔽应当是合并还是归零。
在B类非存储器访问5105的指令模板的情况下,β字段5154的一部分被解释为RL字段5157A,其内容区分要执行不同扩充操作类型中的哪一种(例如,针对无存储器访问的写掩码控制部分舍入控制类型操作5112的指令模板和无存储器访问的写掩码控制VSIZE型操作5117的指令模板分别指定舍入5157A.1和向量长度(VSIZE)5157A.2),而β字段5154的其余部分区分要执行所指定类型的操作中的哪一种。在无存储器访问5105的指令模板中,比例字段5160、位移字段5162A和位移比例字段5162B不存在。
在无存储器访问的写掩码控制部分舍入控制型操作5110的指令模板中,β字段5154的其余部分被解释为舍入操作字段5159A,并且禁用异常事件报告(给定的指令不报告任何种类的浮点异常标志,并且不唤起任何浮点异常处置程序)。
舍入操作控制字段5159A——正如舍入操作控制字段5158,其内容区分要执行一组舍入操作中的哪一个(例如,向上舍入、向下舍入、向零舍入以及就近舍入)。由此,舍入操作控制字段5159A允许逐指令地改变舍入模式。在其中处理器包括用于指定舍入模式的控制寄存器的本公开的一个实施例中,舍入操作控制字段5150的内容覆盖该寄存器值。
在无存储器访问的写掩码控制VSIZE型操作5117的指令模板中,β字段5154的其余部分被解释为向量长度字段5159B,其内容区分要执行多个数据向量长度中的哪一个(例如,128字节、256字节或512字节)。
在B类存储器访问5120的指令模板的情况下,β字段5154的一部分被解释为广播字段5157B,其内容区分是否要执行广播型数据操纵操作,而β字段5154的其余部分被解释为向量长度字段5159B。存储器访问5120的指令模板包括比例字段5160,并任选地包括位移字段5162A或位移比例字段 5162B。
针对通用向量友好指令格式5100,示出完整操作码字段5174包括格式字段5140、基础操作字段5142和数据元素宽度字段5164。尽管示出了其中完整操作码字段5174包括所有这些字段的一个实施例,但是在不支持所有这些字段的实施例中,完整操作码字段5174包括少于所有的这些字段。完整操作码字段5174提供操作代码(操作码)。
扩充操作字段5150、数据元素宽度字段5164和写掩码字段5170 允许逐指令地以通用向量友好指令格式指定这些特征。
写掩码字段和数据元素宽度字段的组合创建各种类型的指令,因为这些指令允许基于不同的数据元素宽度应用该掩码。
在A类和B类内出现的各种指令模板在不同的情形下是有益的。在本公开的一些实施例中,不同处理器或处理器内的不同核可支持仅A类、仅 B类、或者可支持这两类。举例而言,旨在用于通用计算的高性能通用乱序核可仅支持B类,旨在主要用于图形和/或科学(吞吐量)计算的核可仅支持A 类,并且旨在用于通用计算和图形和/或科学(吞吐量)计算两者的核可支持A 类和B类两者(当然,具有来自这两类的模板和指令的一些混合、但是并非来自这两类的所有模板和指令的核在本公开的范围内)。同样,单个处理器可包括多个核,这多个核全部都支持相同的类,或者其中不同的核支持不同的类。举例而言,在具有单独的图形核和通用核的处理器中,图形核中的旨在主要用于图形和/或科学计算的一个核可仅支持A类,而通用核中的一个或多个可以是具有旨在用于通用计算的仅支持B类的乱序执行和寄存器重命名的高性能通用核。不具有单独的图形核的另一处理器可包括既支持A类又支持B类的一个或多个通用有序或乱序核。当然,在本公开的不同实施例中,来自一类的特征也可在其他类中实现。将使以高级语言编写的程序成为(例如,及时编译或静态编译)各种不同的可执行形式,这些可执行形式包括:1)仅具有由用于执行的目标处理器支持的(多个)类的指令的形式;或者2)具有替代例程并具有控制流代码的形式,该替代例程使用所有类的指令的不同组合来编写,该控制流代码选择这些例程以基于由当前正在执行代码的处理器支持的指令来执行。
示例性专用向量友好指令格式
图52是图示根据本公开的实施例的示例性专用向量友好指令格式的框图。图52示出专用向量友好指令格式5200,其指定各字段的位置、尺寸、解释和次序、以及那些字段中的一些字段的值,在这个意义上,该专用向量友好指令格式5200是专用的。专用向量友好指令格式5200可用于扩展x86指令集,并且由此字段中的一些字段与如在现有的x86指令集及其扩展(例如,AVX) 中所使用的那些字段类似或相同。该格式保持与具有扩展的现有x86指令集的前缀编码字段、实操作码字节字段、MOD R/M字段、SIB字段、位移字段和立即数字段一致。图示来自图51的字段,来自图52的字段映射到来自图51 的字段。
应当理解,虽然出于说明的目的在通用向量友好指令格式5100的上下文中参考专用向量友好指令格式5200描述了本公开的实施例,但是本公开不限于专用向量友好指令格式5200,除非另有声明。例如,通用向量友好指令格式5100构想了各种字段的各种可能的尺寸,而专用向量友好指令格式5200示出为具有特定尺寸的字段。作为具体示例,尽管在专用向量友好指令格式5200中数据元素宽度字段5164被图示为一位字段,但是本公开不限于此(即,通用向量友好指令格式5100构想数据元素宽度字段5164的其他尺寸)。
通用向量友好指令格式5100包括以下列出的按照图52A中图示的顺序的如下字段。
EVEX前缀(字节0-3)5202——以四字节形式进行编码。
格式字段5140(EVEX字节0,位[7:0])——第一字节(EVEX字节0)是格式字段5140,并且它包含0x62(在本公开的一个实施例中,为用于区分向量友好指令格式的唯一值)。
第二-第四字节(EVEX字节1-3)包括提供专用能力的多个位字段。
REX字段5205(EVEX字节1,位[7-5])——由EVEX.R位字段 (EVEX字节1,位[7]–R)、EVEX.X位字段(EVEX字节1,位[6]–X)以及 (5157BEX字节1,位[5]–B)组成。EVEX.R、EVEX.X和EVEX.B位字段提供与对应的VEX位字段相同的功能,并且使用1补码的形式进行编码,即ZMM0被编码为1111B,ZMM15被编码为0000B。这些指令的其他字段对如在本领域中已知的寄存器索引的较低三个位(rrr、xxx和bbb)进行编码,由此可通过增加EVEX.R、EVEX.X和EVEX.B来形成Rrrr、Xxxx和Bbbb。
REX’字段5110——这是REX’字段5110的第一部分,并且是用于对扩展的32个寄存器集合的较高16个或较低16个寄存器进行编码的EVEX.R’位字段(EVEX字节1,位[4]–R’)。在本公开的一个实施例中,该位与以下指示的其他位一起以位反转的格式存储以(在公知x86的32位模式下)与BOUND指令进行区分,该BOUND指令的实操作码字节是62,但是在MODR/M字段(在下文中描述)中不接受MOD字段中的值11;本公开的替代实施例不以反转的格式存储该指示的位以及以下其他指示的位。值1用于对较低16 个寄存器进行编码。换句话说,通过组合EVEX.R’、EVEX.R以及来自其他字段的其他RRR来形成R’Rrrr。
操作码映射字段5215(EVEX字节1,位[3:0]–mmmm)——其内容对隐含的前导操作码字节(0F、0F 38或0F 3)进行编码。
数据元素宽度字段5164(EVEX字节2,位[7]–W)——由记号 EVEX.W表示。EVEX.W用于定义数据类型(32位数据元素或64位数据元素) 的粒度(尺寸)。
EVEX.vvvv 5220(EVEX字节2,位[6:3]-vvvv)——EVEX.vvvv 的作用可包括如下:1)EVEX.vvvv对以反转(1补码)形式指定的第一源寄存器操作数进行编码,并且对具有两个或更多个源操作数的指令有效;2) EVEX.vvvv对针对特定向量位移以1补码的形式指定的目的地寄存器操作数进行编码;或者3)EVEX.vvvv不对任何操作数进行编码,该字段被预留,并且应当包含1111b。由此,EVEX.vvvv字段5220对以反转(1补码)的形式存储的第一源寄存器指定符的4个低阶位进行编码。取决于该指令,额外不同的 EVEX位字段用于将指定符尺寸扩展到32个寄存器。
EVEX.U 5168类字段(EVEX字节2,位[2]-U)——如果EVEX.U =0,则它指示A类或EVEX.U0;如果EVEX.U=1,则它指示B类或EVEX.U1。
前缀编码字段5225(EVEX字节2,位[1:0]-pp)——提供了用于基础操作字段的附加位。除了对以EVEX前缀格式的传统SSE指令提供支持以外,这也具有压缩SIMD前缀的益处(EVEX前缀仅需要2位,而不是需要字节来表达SIMD前缀)。在一个实施例中,为了支持使用以传统格式和以 EVEX前缀格式两者的SIMD前缀(66H、F2H、F3H)的传统SSE指令,将这些传统SIMD前缀编码成SIMD前缀编码字段;并且在运行时在被提供给解码器的PLA之前被扩展成传统SIMD前缀(因此,在无需修改的情况下,PLA 既可执行传统格式的这些传统指令又可执行EVEX格式的这些传统指令)。虽然较新的指令可将EVEX前缀编码字段的内容直接用作操作码扩展,但是为了一致性,特定实施例以类似的方式扩展,但允许由这些传统SIMD前缀指定的不同含义。替代实施例可重新设计PLA以支持2位SIMD前缀编码,并且由此不需要扩展。
α字段5152(EVEX字节3,位[7]–EH,也称为EVEX.EH、EVEX.rs、 EVEX.RL、EVEX.写掩码控制、以及EVEX.N;也以α图示)——如先前所述,该字段是针对上下文的。
β字段5154(EVEX字节3,位[6:4]-SSS,也称为EVEX.s2-0、 EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB,还以βββ图示)——如前所述,此字段是针对上下文的。
REX’字段5110——这是REX’字段的其余部分,并且是可用于对扩展的32个寄存器集合的较高16个或较低16个寄存器进行编码的EVEX.V’位字段(EVEX字节3,位[3]–V’)。该位以位反转的格式存储。值1用于对较低16个寄存器进行编码。换句话说,通过组合EVEX.V’、EVEX.vvvv来形成V’VVVV。
写掩码字段5170(EVEX字节3,位[2:0]-kkk)——其内容指定写掩码寄存器中的寄存器的索引,如先前所述。在本公开的一个实施例中,特定值EVEX.kkk=000具有暗示没有写掩码用于特定指令的特殊行为(这能以各种方式实现,包括使用硬连线到所有对象的写掩码或绕过掩蔽硬件的硬件来实现)。
实操作码字段5230(字节4)还被称为操作码字节。操作码的一部分在该字段中被指定。
MOD R/M字段5240(字节5)包括MOD字段5242、Reg字段5244 和R/M字段5246。如先前所述的,MOD字段5242的内容将存储器访问操作和非存储器访问操作区分开。Reg字段5244的作用可被归结为两种情形:对目的地寄存器操作数或源寄存器操作数进行编码;或者被视为操作码扩展,并且不用于对任何指令操作数进行编码。R/M字段5246的作用可包括如下:对引用存储器地址的指令操作数进行编码;或者对目的地寄存器操作数或源寄存器操作数进行编码。
比例、索引、基址(SIB)字节(字节6)——如先前所述的,比例字段5150的内容用于存储器地址生成。SIB.xxx 5254和SIB.bbb 5256——先前已经针对寄存器索引Xxxx和Bbbb提及了这些字段的内容。
位移字段5162A(字节7-10)——当MOD字段5242包含10时,字节7-10是位移字段5162A,并且它与传统32位位移(disp32)一样地工作,并且以字节粒度工作。
位移因数字段5162B(字节7)——当MOD字段5242包含01时,字节7是位移因数字段5162B。该字段的位置与以字节粒度工作的传统x86指令集8位位移(disp8)的位置相同。由于disp8是符号扩展的,因此它仅能在 -128和127字节偏移之间寻址;在64字节高速缓存行的方面,disp8使用可被设为仅四个真正有用的值-128、-64、0和64的8位;由于常常需要更大的范围,所以使用disp32;然而,disp32需要4个字节。与disp8和disp32对比,位移因数字段5162B是disp8的重新解释;当使用位移因数字段5162B时,通过将位移因数字段的内容乘以存储器操作数访问的尺寸(N)来确定实际位移。该类型的位移被称为disp8*N。这减小了平均指令长度(单个字节用于位移,但具有大得多的范围)。此类经压缩的位移基于有效位移是存储器访问的粒度的倍数的假设,并且由此地址偏移的冗余低阶位不需要被编码。换句话说,位移因数字段5162B替代传统x86指令集8位位移。由此,位移因数字段5162B 以与x86指令集8位位移相同的方式被编码(因此,在ModRM/SIB编码规则中没有变化),唯一的不同在于,将disp8超载至disp8*N。换句话说,在编码规则或编码长度方面没有变化,而仅在有硬件对位移值的解释方面有变化 (这需要将位移按比例缩放存储器操作数的尺寸以获得字节式地址偏移)。立即数字段5172如先前所述地操作。
完整操作码字段
图52B是图示根据本公开的一个实施例的构成完整操作码字段 5174的具有专用向量友好指令格式5200的字段的框图。具体地,完整操作码字段5174包括格式字段5140、基础操作字段5142和数据元素宽度(W)字段5164。基础操作字段5142包括前缀编码字段5225、操作码映射字段5215和实操作码字段5230。
寄存器索引字段
图52C是图示根据本公开的一个实施例的构成寄存器索引字段 5144的具有专用向量友好指令格式5200的字段的框图。具体地,寄存器索引字段5144包括REX字段5205、REX’字段5210、MODR/M.reg字段5244、 MODR/M.r/m字段5246、VVVV字段5220、xxx字段5254和bbb字段5256。
扩充操作字段
图52D是图示根据本公开的一个实施例的构成扩充操作字段5150 的具有专用向量友好指令格式5200的字段的框图。当类(U)字段5168包含 0时,它表明EVEX.U0(A类5168A);当它包含1时,它表明EVEX.U1(B 类5168B)。当U=0且MOD字段5242包含11(表明无存储器访问操作)时,α字段5152(EVEX字节3,位[7]–EH)被解释为rs字段5152A。当rs字段5152A包含1(舍入5152A.1)时,β字段5154(EVEX字节3,位[6:4]–SSS) 被解释为舍入控制字段5154A。舍入控制字段5154A包括一位SAE字段5156 和两位舍入操作字段5158。当rs字段5152A包含0(数据变换5152A.2)时,β字段5154(EVEX字节3,位[6:4]–SSS)被解释为三位数据变换字段5154B。当U=0且MOD字段5242包含00、01或10(表明存储器访问操作)时,α字段5352(EVEX字节3,位[7]–EH)被解释为驱逐提示(EH)字段5152B,并且β字段5154(EVEX字节3,位[6:4]–SSS)被解释为三位数据操纵字段5154C。
当U=1时,α字段5152(EVEX字节3,位[7]–EH)被解释为写掩码控制(Z)字段5152C。当U=1且MOD字段5242包含11(表明无存储器访问操作)时,β字段5154的一部分(EVEX字节3,位[4]–S0)被解释为RL 字段5157A;当它包含1(舍入5157A.1)时,β字段5154的其余部分(EVEX 字节3,位[6-5]–S2-1)被解释为舍入操作字段5159A,而当RL字段5157A包含0(VSIZE5157.A2)时,β字段5154的其余部分(EVEX字节3,位[6-5]-S2-1) 被解释为向量长度字段5159B(EVEX字节3,位[6-5]–L1-0)。当U=1且MOD 字段5242包含00、01或10(表明存储器访问操作)时,β字段5154(EVEX 字节3,位[6:4]–SSS)被解释为向量长度字段5159B(EVEX字节3,位[6-5]–L1-0) 和广播字段5157B(EVEX字节3,位[4]–B)。
示例性寄存器架构
图53是根据本公开的一个实施例的寄存器架构5300的框图。在所图示的实施例中,有32个512位宽的向量寄存器5310;这些寄存器被引用为zmm0到zmm31。较低的16个zmm寄存器的较低阶256个位覆盖(overlay) 在寄存器ymm0-16上。较低的16个zmm寄存器的较低阶128个位(ymm寄存器的较低阶128个位)覆盖在寄存器xmm0-15上。专用向量友好指令格式 5200对这些被覆盖的寄存器堆操作,如在以下表格中所图示。
换句话说,向量长度字段5159B在最大长度与一个或多个其他较短长度之间进行选择,其中每一个此类较短长度是前一长度的一半,并且不具有向量长度字段5159B的指令模板在最大向量长度上操作。此外,在一个实施例中,专用向量友好指令格式5200的B类指令模板对紧缩或标量单/双精度浮点数据以及紧缩或标量整数数据操作。标量操作是对zmm/ymm/xmm寄存器中的最低阶数据元素位置执行的操作;取决于实施例,较高阶数据元素位置要么保持与在指令之前相同,要么归零。
写掩码寄存器5315——在所图示的实施例中,存在8个写掩码寄存器(k0至k7),每一写掩码寄存器的尺寸是64位。在替代实施例中,写掩码寄存器5315的尺寸是16位。如先前所述,在本公开的一个实施例中,向量掩码寄存器k0无法用作写掩码;当将正常指示k0的编码用作写掩码时,它选择硬连线的写掩码0xFFFF,从而有效地禁止写掩蔽用于那条指令。
通用寄存器5325——在所示出的实施例中,有十六个64位通用寄存器,这些寄存器与现有的x86寻址模式一起使用以对存储器操作数寻址。这些寄存器通过名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP以及R8 到R15来引用。
标量浮点栈寄存器堆(x87栈)5345,在其上面重叠了MMX紧缩整数平坦寄存器堆5350——在所图示的实施例中,x87栈是用于使用x87指令集扩展来对32/64/80位浮点数据执行标量浮点操作的八元素栈;而使用MMX 寄存器来对64位紧缩整数数据执行操作,以及为在MMX与XMM寄存器之间执行的一些操作保存操作数。
本公开的替代实施例可以使用更宽的或更窄的寄存器。另外,本公开的替代实施例可以使用更多、更少或不同的寄存器堆和寄存器。
示例性核架构、处理器和计算机架构
处理器核能以不同方式、出于不同的目的、在不同的处理器中实现。例如,此类核的实现可以包括:1)旨在用于通用计算的通用有序核;2) 旨在用于通用计算的高性能通用乱序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)CPU,其包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用乱序核;以及2)协处理器,其包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核。此类不同的处理器导致不同的计算机系统架构,这些计算机系统架构可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中但在分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该情况下,此类协处理器有时被称为专用逻辑或被称为专用核,该专用逻辑诸如,集成图形和/或科学(吞吐量)逻辑);以及4)芯片上系统,其可以将所描述的CPU(有时被称为(多个)应用核或(多个)应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上。接着描述示例性核架构,随后描述示例性处理器和计算机架构。
示例性核架构
有序和乱序核框图
图54A是图示根据本公开的各实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线的框图。图54B是示出根据本公开的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核的框图。图54A-图54B中的实线框图示有序流水线和有序核,而虚线框的任选增加图示寄存器重命名的、乱序发布/ 执行流水线和核。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图54A中,处理器流水线5400包括取出级5402、长度解码级 5404、解码级5406、分配级5408、重命名级5410、调度(也被称为分派或发布)级5412、寄存器读取/存储器读取级5414、执行级5416、写回/存储器写入级5418、异常处置级5422和提交级5424。
图54B示出处理器核5490,该处理器核5490包括前端单元5430,该前端单元5430耦合到执行引擎单元5450,并且前端单元5430和执行引擎单元5450两者都耦合到存储器单元5470。核5490可以是精简指令集计算(RISC) 核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代的核类型。作为又一选项,核5490可以是专用核,诸如例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核,等等。
前端单元5430包括分支预测单元5432,该分支预测单元5432 耦合到指令高速缓存单元5434,该指令高速缓存单元5434耦合到指令转换后备缓冲器(TLB)5436,该指令转换后备缓冲器5436耦合到指令取出单元5438,该指令取出单元5438耦合到解码单元5440。解码单元5440(或解码器或解码单元)可对指令(例如,宏指令)解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元5440可使用各种不同的机制来实现。合适机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核5490包括存储用于某些宏指令的微代码的微代码ROM或其他介质(例如,在解码单元5440中,或以其他方式在前端单元5430内)。解码单元5440耦合到执行引擎单元5450中的重命名/分配器单元5452。
执行引擎单元5450包括重命名/分配器单元5452,该重命名/分配器单元5452耦合到引退单元5454和一个或多个调度器单元的集合5456。(多个)调度器单元5456表示任何数量的不同调度器,包括预留站、中央指令窗等。(多个)调度器单元5456耦合到(多个)物理寄存器堆单元5458。(多个)物理寄存器堆单元5458中的每一个物理寄存器堆单元表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一种或多种不同的数据类型,诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点,状态(例如,作为要执行的下一条指令的地址的指令指针)等等。在一个实施例中,(多个)物理寄存器堆单元5458包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器和通用寄存器。(多个)物理寄存器堆单元5458由引退单元5454重叠,以图示可实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器、(多个)引退寄存器堆;使用寄存器映射和寄存器池,等等)。引退单元5454和 (多个)物理寄存器堆单元5458耦合到(多个)执行集群5460。(多个)执行集群5460包括一个或多个执行单元的集合5462以及一个或多个存储器访问单元的集合5464。执行单元5462可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可包括仅一个执行单元或全都执行所有功能的多个执行单元。(多个)调度器单元5456、(多个)物理寄存器堆单元5458 和(多个)执行集群5460示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线,和/或各自具有其自身的调度器单元、(多个)物理寄存器堆单元和/或执行集群的存储器访问流水线——并且在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有(多个)存储器访问单元5464的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序的。
存储器访问单元的集合5464耦合到存储器单元5470,该存储器单元5470包括数据TLB单元5472,该数据TLB单元5472耦合到数据高速缓存单元5474,该数据高速缓存单元5474耦合到第二级(L2)高速缓存单元5476。在一个示例性实施例中,存储器访问单元5464可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合到存储器单元5470中的数据TLB单元5472。指令高速缓存单元5434还耦合到存储器单元5470中的第二级(L2)高速缓存单元5476。L2高速缓存单元5476耦合到一个或多个其他级别的高速缓存,并最终耦合到主存储器。
作为示例,示例性寄存器重命名的乱序发布/执行核架构可如下所述地实现流水线5400:1)指令取出5438执行取出级5402和长度解码级5404; 2)解码单元5440执行解码级5406;3)重命名/分配器单元5452执行分配级5408 和重命名级5410;4)(多个)调度器单元5456执行调度级5412;5)(多个) 物理寄存器堆单元5458和存储器单元5470执行寄存器读取/存储器读取级 5414;执行集群5460执行执行级5416;6)存储器单元5470和(多个)物理寄存器堆单元5458执行写回/存储器写入级5418;7)各单元可牵涉到异常处置级 5422;以及8)引退单元5454和(多个)物理寄存器堆单元5458执行提交级 5424。
核5490可支持一个或多个指令集(例如,x86指令集(具有已与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集 (具有诸如NEON的任选的附加扩展)),其中包括本文中描述的(多条)指令。在一个实施例中,核5490包括用于支持紧缩数据指令集扩展(例如,AVX1、 AVX2)的逻辑,由此允许使用紧缩数据来执行由许多多媒体应用使用的操作。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如超线程化技术中的同时多线程化)。
尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所图示的处理器的实施例还包括分开的指令和数据高速缓存单元5434/5474以及共享的L2高速缓存单元5476,但是替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如,第一级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
具体的示例性有序核架构
图55A-图55B图示更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块(包括相同类型和/或不同类型的其他核)中的一个逻辑块。取决于应用,逻辑块通过高带宽互连网络(例如,环形网络)与一些固定的功能逻辑、存储器I/O接口和其他必要的I/O逻辑进行通信。
图55A是根据本公开的实施例的单个处理器核以及它至管芯上互连网络5502的连接及其第二级(L2)高速缓存的本地子集5504的框图。在一个实施例中,指令解码单元5500支持具有紧缩数据指令集扩展的x86指令集。 L1高速缓存5506允许对进入标量和向量单元中的、对高速缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量单元5508和向量单元 5510使用分开的寄存器集合(分别为标量寄存器5512和向量寄存器5514),并且在这些寄存器之间传输的数据被写入到存储器,并随后从第一级(L1)高速缓存5506读回,但是本公开的替代实施例可以使用不同的方法(例如,使用单个寄存器集合或包括允许数据在这两个寄存器堆之间传输而无需被写入和读回的通信路径)。
L2高速缓存的本地子集5504是全局L2高速缓存的一部分,该全局L2高速缓存被划分成多个分开的本地子集,每个处理器核一个本地子集。每个处理器核具有到其自身的L2高速缓存的本地子集5504的直接访问路径。由处理器核读取的数据被存储在其L2高速缓存子集5504中,并且可以与其他处理器核访问其自身的本地L2高速缓存子集并行地被快速访问。由处理器核写入的数据被存储在其自身的L2高速缓存子集5504中,并在必要的情况下从其他子集转储清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2高速缓存和其他逻辑块之类的代理在芯片内彼此通信。每个环形数据路径为每个方向1012位宽。
图55B是根据本公开的实施例的图55A中的处理器核的一部分的展开图。图55B包括L1高速缓存5504的L1数据高速缓存5506A部分,以及关于向量单元5510和向量寄存器5514的更多细节。具体地,向量单元5510 是16宽向量处理单元(VPU)(见16宽ALU 5528),该单元执行整数、单精度浮点以及双精度浮点指令中的一个或多个。该VPU通过混合单元5520支持对寄存器输入的混合,通过数值转换单元5522A-B支持数值转换,并且通过复制单元5524支持对存储器输入的复制。写掩码寄存器5526允许预测所得的向量写入。
图56是根据本公开的实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器5600的框图。图56中的实线框图示具有单个核5602A、系统代理5610、一个或多个总线控制器单元的集合5616的处理器5600,而虚线框的任选增加图示具有多个核5602A-N、系统代理单元5610中的一个或多个集成存储器控制器单元的集合5614以及专用逻辑5608的替代处理器5600。
因此,处理器5600的不同实现可包括:1)CPU,其中专用逻辑 5608是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核5602A-N是一个或多个通用核(例如,通用有序核、通用乱序核、这两者的组合);2)协处理器,其中核5602A-N是旨在主要用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核5602A-N是大量通用有序核。因此,处理器5600可以是通用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、嵌入式处理器,等等。该处理器可以被实现在一个或多个芯片上。处理器5600可以是一个或多个基板的一部分,和/或可使用多种工艺技术(诸如例如,BiCMOS、 CMOS、或NMOS)中的任何技术被实现在一个或多个基板上。
存储器层次结构包括核内的一个或多个高速缓存级别、一个或多个共享高速缓存单元的集合5606、以及耦合到集成存储器控制器单元的集合 5614的外部存储器(未示出)。共享高速缓存单元的集合5606可包括一个或多个中间级别的高速缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4) 或其他级别的高速缓存、末级高速缓存(LLC)和/或以上各项的组合。虽然在一个实施例中,基于环的互连单元5612将集成图形逻辑5608、共享高速缓存单元的集合5606以及系统代理单元5610/(多个)集成存储器控制器单元5614 互连,但是替代实施例可使用任何数量的公知技术来互连此类单元。在一个实施例中,在一个或多个高速缓存单元5606与核5602A-N之间维持一致性。
在一些实施例中,一个或多个核5602A-N能够实现多线程化。系统代理5610包括协调和操作核5602A-N的那些组件。系统代理单元5610可包括例如功率控制单元(PCU)和显示单元。PCU可以是对核5602A-N以及集成图形逻辑5608的功率状态进行调节所需的逻辑和组件,或可包括这些逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核5602A-N在架构指令集方面可以是同构的或异构的;即,核 5602A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。
示例性计算机架构
图57-60是示例性计算机架构的框图。本领域中已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
现在参考图57,所示出的是根据本公开一个实施例的系统5700 的框图。系统5700可以包括一个或多个处理器5710、5715,这些处理器耦合到控制器中枢5720。在一个实施例中,控制器中枢5720包括图形存储器控制器中枢(GMCH)5790和输入/输出中枢(IOH)5750(其可以在分开的芯片上);GMCH 5790包括存储器和图形控制器,存储器5740和协处理器5745 耦合到该存储器和图形控制器;IOH 5750将输入/输出(I/O)设备5760耦合到GMCH5790。或者,存储器和图形控制器中的一个或这两者被集成在(如本文中所描述的)处理器内,存储器5740和协处理器5745直接耦合到处理器 5710,并且控制器中枢5720与IOH 5750处于单个芯片中。存储器5740可包括编译器模块5740A,该编译器模块5740A例如用于存储代码,该代码当被执行时使处理器执行本公开的任何方法。
附加的处理器5715的任选性在图57中通过虚线来表示。每一处理器5710、5715可包括本文中描述的处理核中的一个或多个,并且可以是处理器5600的某一版本。
存储器5740可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢5720经由诸如前端总线(FSB)之类的多分支总线、诸如快速路径互连(QPI)之类的点对点接口、或者类似的连接5795来与(多个)处理器5710、5715进行通信。
在一个实施例中,协处理器5745是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。在一个实施例中,控制器中枢5720可以包括集成图形加速器。
在物理资源5710、5715之间可以存在包括架构、微架构、热、功耗特性等一系列品质度量方面的各种差异。
在一个实施例中,处理器5710执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器5710将这些协处理器指令识别为具有应当由附连的协处理器5745执行的类型。因此,处理器5710在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器5745。(多个)协处理器5745接受并执行所接收的协处理器指令。
现在参见图58,所示出的是根据本公开的实施例的第一更具体的示例性系统5800的框图。如图58中所示,多处理器系统5800是点对点互连系统,并且包括经由点对点互连5850耦合的第一处理器5870和第二处理器 5880。处理器5870和5880中的每一个都可以是处理器5600的某一版本。在本公开的一个实施例中,处理器5870和5880分别是处理器5710和5715,而协处理器5838是协处理器5745。在另一实施例中,处理器5870和5880分别是处理器5710和协处理器5745。
处理器5870和5880示出为分别包括集成存储器控制器(IMC) 单元5872和5882。处理器5870还包括作为其总线控制器单元的一部分的点对点(P-P)接口5876和5878;类似地,第二处理器5880包括P-P接口5886和 5888。处理器5870、5880可以经由使用点对点(P-P)接口电路5878、5888的 P-P接口5850来交换信息。如图58中所示,IMC 5872和5882将处理器耦合到相应的存储器,即存储器5832和存储器5834,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器5870、5880可各自经由使用点对点接口电路5876、5894、 5886、5898的各个P-P接口5852、5854来与芯片组5890交换信息。芯片组 5890可以任选地经由高性能接口5839来与协处理器5838交换信息。在一个实施例中,协处理器5838是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享高速缓存(未示出)可被包括在任一处理器中,或在这两个处理器的外部但经由P-P互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片组5890可以经由接口5896耦合到第一总线5816。在一个实施例中,第一总线5816可以是外围组件互连(PCI)总线或诸如PCI快速总线或另一第三代I/O互连总线之类的总线,但是本公开的范围不限于此。
如图58中所示,各种I/O设备5814可连同总线桥5818一起耦合到第一总线5816,该总线桥5818将第一总线5816耦合到第二总线5820。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器5815耦合到第一总线5816。在一个实施例中,第二总线5820可以是低引脚数(LPC)总线。在一个实施例中,各种设备可耦合到第二总线5820,这些设备包括例如键盘和/或鼠标5822、通信设备5827以及存储单元5828,该存储单元5828诸如可包括指令/代码和数据 5830的盘驱动器或者其他大容量存储设备。此外,音频I/O 5824可以被耦合到第二总线5820。注意,其他架构是可能的。例如,代替图58的点对点架构,系统可以实现多分支总线或其他此类架构。
现在参考图59,示出的是根据本公开的实施例的第二更具体的示例性系统5900的框图。图58和59中的类似元件使用类似的附图标记,并且从图59中省略了图58的某些方面以避免混淆图59的其他方面。
图59图示处理器5970、5980可分别包括集成存储器和I/O控制逻辑(“CL”)5972和5982。因此,CL 5972、5982包括集成存储器控制器单元,并包括I/O控制逻辑。图59图示不仅存储器5932、5934耦合到CL 5972、5982,而且I/O设备5914也耦合到控制逻辑5972、5982。传统I/O设备5915被耦合到芯片组5890。
现在参考图60,示出的是根据本公开的实施例的SoC 6000的框图。图56中的类似要素使用类似的附图标记。另外,虚线框是更先进的SoC上的任选的特征。在图60中,(多个)互连单元6002被耦合到:应用处理器6010,其包括一个或多个核的集合202A-N的集合以及(多个)共享高速缓存单元5606;系统代理单元5610;(多个)总线控制器单元5616;(多个)集成存储器控制器单元5614;一个或多个协处理器的集合6020,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元6030;直接存储器访问(DMA)单元6032;以及用于耦合到一个或多个外部显示器的显示单元6040。在一个实施例中,(多个)协处理器6020包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器,等等。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或此类实现方式的组合中。本公开的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如,图58中图示的代码5830)应用于输入指令,以执行本文中描述的功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有处理器的任何系统,该处理器诸如例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC) 或微处理器。
程序代码可以用高级的面向过程的编程语言或面向对象的编程语言来实现,以便与处理系统通信。如果需要,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定的编程语言的范围。在任何情况下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制造用于执行本文中所述的技术的逻辑。被称为“IP核”的此类表示可以被存储在有形的机器可读介质上,并可被供应给各个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非暂态、有形布置,其包括存储介质,诸如硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW) 以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
因此,本公开的实施例还包括非暂态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
仿真(包括二进制变换、代码变形等)
在一些情况下,指令转换器可用于将指令从源指令集转换至目标指令集。例如,指令转换器可以将指令变换(例如,使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其他方式转换成要由核处理的一条或多条其他指令。指令转换器可以用软件、硬件、固件、或其组合来实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图61是根据本公开的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所图示的实施例中,指令转换器是软件指令转换器,但替代地,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图61示出可使用x86编译器6104来编译高级语言6102形式的程序,以生成可由具有至少一个x86指令集核的处理器6116原生执行的x86二进制代码6106。具有至少一个 x86指令集核的处理器6116表示通过兼容地执行或以其他方式执行以下各项来执行与具有至少一个x86指令集核英特尔处理器基本相同的功能的任何处理器:1)英特尔x86指令集核的指令集的本质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以便取得与具有至少一个 x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器6104表示可操作用于生成x86二进制代码6106(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器6116上执行。类似地,图61示出可以使用替代的指令集编译器6108来编译高级语言6102形式的程序,以生成可以由不具有至少一个x86指令集核的处理器6114(例如,具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代的指令集二进制代码6110。指令转换器6112用于将x86二进制代码6106转换成可以由不具有x86指令集核的处理器6114原生执行的代码。该转换后的代码不大可能与替代的指令集二进制代码6110相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作,并且由来自替代指令集的指令构成。因此,指令转换器6112通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码6106的软件、固件、硬件或其组合。

Claims (25)

1.一种处理器,包括:
多个处理元件;
互连网络,在所述多个处理元件之间,所述互连网络用于接收包括多个节点的数据流图的输入,其中,所述数据流图用于被覆盖到所述互连网络和所述多个处理元件中,并且每个节点被表示为所述互连网络和所述多个处理元件中的数据流操作器,并且所述多个处理元件用于当传入操作数集到达所述多个处理元件时执行操作;以及
配置控制器,耦合至所述多个处理元件的第一子集和不同的第二子集,所述多个处理元件的所述第一子集具有耦合到所述多个处理元件的所述不同的第二子集的输入的输出,其中,所述配置控制器用于将所述多个处理元件的所述第一子集与所述不同的第二子集之间的所述互连网络配置为:当特权位被设置为第一值时,不允许所述多个处理元件的所述第一子集与所述多个处理元件的所述不同的第二子集之间的所述互连网络上的通信;以及当所述特权位被设置为第二值时,允许所述多个处理元件的所述第一子集与所述多个处理元件的所述不同的第二子集之间的所述互连网络上的通信。
2.如权利要求1所述的处理器,其中,所述互连网络包括特权状态寄存器,所述特权状态寄存器在所述多个处理元件的所述第一子集与所述多个处理元件的所述不同的第二子集之间的边界处,所述特权状态寄存器用于打开和关闭所述边界处的电路以:当所述特权状态寄存器中的特权位被所述配置控制器设置为第一值时,不允许所述多个处理元件的所述第一子集与所述多个处理元件的所述不同的第二子集之间的所述互连网络上的通信;以及当所述特权状态寄存器中的所述特权位被所述配置控制器设置为第二值时,允许所述多个处理元件的所述第一子集与所述多个处理元件的所述不同的第二子集之间的所述互连网络上的通信。
3.如权利要求1所述的处理器,其中,在当所述特权位被设置为所述第一值时而不允许所述多个处理元件的所述第一子集与所述多个处理元件的所述不同的第二子集之间的所述互连网络上的通信的情况下,第一上下文用于在所述多个处理元件的所述第一子集上执行,并且第二上下文用于同时在所述多个处理元件的所述不同的第二子集上执行。
4.如权利要求1所述的处理器,其中,所述配置控制器用于:当所述特权位被设置为所述第一值时,不允许所述多个处理元件的第一子集与所述多个处理元件的所述不同的第二子集之间的所述互连网络的前向数据路径和向后流的流控制路径中的任一者上的通信,所述向后流的流控制路径与所述前向数据路径配对。
5.如权利要求1所述的处理器,其中,所述配置控制器用于:当所述特权位被设置为所述第一值时,使所述互连网络将所述多个处理元件的所述第一子集与所述多个处理元件的所述不同的第二子集之间的边界处的所有信号拉为零。
6.如权利要求1所述的处理器,其中,所述配置控制器耦合至所述多个处理元件的所述第一子集、所述不同的第二子集和不同的第三子集,所述多个处理元件的所述第一子集具有耦合至所述多个处理元件的所述不同的第二子集的输入的输出,并且所述多个处理元件的所述不同的第三子集具有耦合至所述多个处理元件的所述不同的第二子集的输入的输出,其中,所述配置控制器用于将所述多个处理元件的所述第一子集、所述不同的第二子集与所述不同的第三子集之间的所述互连网络配置为:当所述特权位被设置为所述第一值时,不允许所述多个处理元件的所述第一子集、所述不同的第二子集与所述不同的第三子集之间的所述互连网络上的通信;以及当所述特权位被设置为所述第二值时,允许所述多个处理元件的所述第一子集、所述不同的第二子集与所述不同的第三子集之间的所述互连网络上的通信。
7.如权利要求1所述的处理器,其中,所述配置控制器用于:当所述特权位被设置为所述第二值时,根据用于数据流图的第一上下文的配置信息来配置所述多个处理元件的所述第一子集和所述不同的第二子集,并且对于所请求的上下文切换,当在所述第一子集中完成了所述第一上下文的待决操作后根据用于数据流图的第二上下文的配置信息来配置所述多个处理元件的所述第一子集,并阻止第二上下文数据流从所述多个处理元件的所述第一子集的输出进入所述多个处理元件的所述不同的第二子集的输入,直到在所述多个处理元件的所述不同的第二子集中完成了所述第一上下文的待决操作。
8.如权利要求1-7中的任一项所述的处理器,其中,所述配置控制器用于在操作的运行时期间修改所述特权位。
9.一种方法,包括:
当传入操作数集到达处理器的多个处理元件时,利用所述处理器的互连网络和所述多个处理元件执行数据流图的操作,其中,所述处理器包括所述多个处理元件和所述多个处理元件之间的所述互连网络并具有数据流图,所述数据流图包括多个节点,所述多个节点被覆盖到所述处理器的所述多个处理元件和所述处理器的所述多个处理元件之间的所述互连网络中,并且每个节点被表示为所述互连网络和所述多个处理元件中的数据流操作器;以及
利用所述处理器的配置控制器将所述多个处理元件的第一子集与不同的第二子集之间的所述互连网络配置为:当特权位被设置为第一值时,不允许所述多个处理元件的所述第一子集与所述多个处理元件的所述不同的第二子集之间的所述互连网络上的通信;以及当所述特权位被设置为第二值时,允许所述多个处理元件的所述第一子集与所述多个处理元件的所述不同的第二子集之间的所述互连网络上的通信。
10.如权利要求9所述的方法,其中,所述配置包括:所述配置控制器更新所述多个处理元件的所述第一子集与所述多个处理元件的所述不同的第二子集之间的边界处的特权状态寄存器中的特权位以打开和关闭所述边界处的电路,以便:当所述特权状态寄存器中的所述特权位被设置为第一值时,不允许所述多个处理元件的所述第一子集与所述多个处理元件的所述不同的第二子集之间的所述互连网络上的通信;以及当所述特权状态寄存器中的所述特权位被设置为第二值时,允许所述多个处理元件的所述第一子集与所述多个处理元件的所述不同的第二子集之间的所述互连网络上的通信。
11.如权利要求9所述的方法,进一步包括:在当所述特权位被设置为所述第一值时而不允许所述多个处理元件的所述第一子集与所述多个处理元件的所述不同的第二子集之间的所述互连网络上的通信的情况下,在所述多个处理元件的所述第一子集上执行第一上下文,并且同时在所述多个处理元件的所述不同的第二子集上执行第二上下文。
12.如权利要求9所述的方法,其中,所述配置进一步包括:当所述特权位被设置为所述第一值时,防止所述多个处理元件的所述第一子集与所述多个处理元件的所述不同的第二子集之间的所述互连网络的前向数据路径和向后流的流控制路径中的任一者上的通信,所述向后流的流控制路径与所述前向数据路径配对。
13.如权利要求9所述的方法,其中,所述配置进一步包括:当所述特权位被设置为所述第一值时,使所述互连网络将所述多个处理元件的所述第一子集与所述多个处理元件的所述不同的第二子集之间的边界处的所有信号拉为零。
14.如权利要求9所述的方法,其中,所述配置进一步包括:将所述多个处理元件的所述第一子集、所述不同的第二子集和不同的第三子集之间的所述互连网络配置为:当所述特权位被设置为所述第一值时,不允许所述多个处理元件的所述第一子集、所述不同的第二子集与所述不同的第三子集之间的所述互连网络上的通信;以及当所述特权位被设置为所述第二值时,允许所述多个处理元件的所述第一子集、所述不同的第二子集与所述不同的第三子集之间的所述互连网络上的通信。
15.如权利要求9所述的方法,进一步包括:当所述特权位被设置为所述第二值时,根据用于数据流图的第一上下文的配置信息来配置所述多个处理元件的所述第一子集和所述不同的第二子集,并且对于所请求的上下文切换,当在所述第一子集中完成了所述第一上下文的待决操作后根据用于数据流图的第二上下文的配置信息来配置所述多个处理元件的所述第一子集,并阻止第二上下文数据流从所述多个处理元件的所述第一子集的输出进入所述多个处理元件的所述不同的第二子集的输入,直到在所述多个处理元件的所述不同的第二子集中完成了所述第一上下文的待决操作。
16.如权利要求9-15中的任一项所述的方法,进一步包括:所述配置控制器在操作的运行时期间修改所述特权位。
17.一种存储代码的非暂态机器可读介质,所述代码当由机器执行时使所述机器执行方法,所述方法包括:
当传入操作数集到达处理器的多个处理元件时,利用所述处理器的互连网络和所述多个处理元件执行数据流图的操作,其中,所述处理器包括所述多个处理元件和所述多个处理元件之间的所述互连网络并具有数据流图,所述数据流图包括多个节点,所述多个节点被覆盖到所述处理器的所述多个处理元件和所述处理器的所述多个处理元件之间的所述互连网络中,并且每个节点被表示为所述互连网络和所述多个处理元件中的数据流操作器;以及
利用所述处理器的配置控制器将所述多个处理元件的第一子集与不同的第二子集之间的所述互连网络配置为:当特权位被设置为第一值时,不允许所述多个处理元件的所述第一子集与所述多个处理元件的所述不同的第二子集之间的所述互连网络上的通信;以及当所述特权位被设置为第二值时,允许所述多个处理元件的所述第一子集与所述多个处理元件的所述不同的第二子集之间的所述互连网络上的通信。
18.如权利要求17所述的非暂态机器可读介质,其中,所述配置包括:所述配置控制器更新所述多个处理元件的所述第一子集与所述多个处理元件的所述不同的第二子集之间的边界处的特权状态寄存器中的特权位以打开和关闭所述边界处的电路,以便:当所述特权状态寄存器中的所述特权位被设置为第一值时,不允许所述多个处理元件的所述第一子集与所述多个处理元件的所述不同的第二子集之间的所述互连网络上的通信;以及当所述特权状态寄存器中的所述特权位被设置为第二值时,允许所述多个处理元件的所述第一子集与所述多个处理元件的所述不同的第二子集之间的所述互连网络上的通信。
19.如权利要求17所述的非暂态机器可读介质,其中,所述方法进一步包括:在当所述特权位被设置为所述第一值时而不允许所述多个处理元件的所述第一子集与所述多个处理元件的所述不同的第二子集之间的所述互连网络上的通信的情况下,在所述多个处理元件的所述第一子集上执行第一上下文,并且同时在所述多个处理元件的所述不同的第二子集上执行第二上下文。
20.如权利要求17所述的非暂态机器可读介质,其中,所述配置进一步包括:当所述特权位被设置为所述第一值时,防止所述多个处理元件的所述第一子集与所述多个处理元件的所述不同的第二子集之间的所述互连网络的前向数据路径和向后流的流控制路径中的任一者上的通信,所述向后流的流控制路径与所述前向数据路径配对。
21.如权利要求17所述的非暂态机器可读介质,其中,所述配置进一步包括:当所述特权位被设置为所述第一值时,使所述互连网络将所述多个处理元件的所述第一子集与所述多个处理元件的所述不同的第二子集之间的边界处的所有信号拉为零。
22.如权利要求17所述的非暂态机器可读介质,其中,所述配置进一步包括:将所述多个处理元件的所述第一子集、所述不同的第二子集和不同的第三子集之间的所述互连网络配置为:当所述特权位被设置为所述第一值时,不允许所述多个处理元件的所述第一子集、所述不同的第二子集与所述不同的第三子集之间的所述互连网络上的通信;以及当所述特权位被设置为所述第二值时,允许所述多个处理元件的所述第一子集、所述不同的第二子集与所述不同的第三子集之间的所述互连网络上的通信。
23.如权利要求17所述的非暂态机器可读介质,其中,所述方法进一步包括:当所述特权位被设置为所述第二值时,根据用于数据流图的第一上下文的配置信息来配置所述多个处理元件的所述第一子集和所述不同的第二子集,并且对于所请求的上下文切换,当在所述第一子集中完成了所述第一上下文的待决操作后根据用于数据流图的第二上下文的配置信息来配置所述多个处理元件的所述第一子集,并阻止第二上下文数据流从所述多个处理元件的所述第一子集的输出进入所述多个处理元件的所述不同的第二子集的输入,直到在所述多个处理元件的所述不同的第二子集中完成了所述第一上下文的待决操作。
24.如权利要求17-23中的任一项所述的非暂态机器可读介质,其中,所述方法进一步包括:所述配置控制器在操作的运行时期间修改所述特权位。
25.一种处理器,包括:
多个处理元件;
互连网络,在所述多个处理元件之间,所述互连网络用于接收包括多个节点的数据流图的输入,其中,所述数据流图用于被覆盖到所述互连网络和所述多个处理元件中,并且每个节点被表示为所述互连网络和所述多个处理元件中的数据流操作器,并且所述多个处理元件用于当传入操作数集到达所述多个处理元件时执行操作;以及
耦合至所述多个处理元件的第一子集和不同的第二子集的装置,所述多个处理元件的所述第一子集具有耦合到所述多个处理元件的所述不同的第二子集的输入的输出,其中,所述装置用于将所述互连网络配置为:当特权位被设置为第一值时,不允许所述多个处理元件的所述第一子集与所述多个处理元件的所述不同的第二子集之间的所述互连网络上的通信;以及当所述特权位被设置为第二值时,允许所述多个处理元件的所述第一子集与所述多个处理元件的所述不同的第二子集之间的所述互连网络上的通信。
CN201811002156.8A 2017-09-30 2018-08-30 用于空间阵列中的特权配置的处理器和方法 Pending CN109597459A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/721,809 US10445098B2 (en) 2017-09-30 2017-09-30 Processors and methods for privileged configuration in a spatial array
US15/721,809 2017-09-30

Publications (1)

Publication Number Publication Date
CN109597459A true CN109597459A (zh) 2019-04-09

Family

ID=65728085

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811002156.8A Pending CN109597459A (zh) 2017-09-30 2018-08-30 用于空间阵列中的特权配置的处理器和方法

Country Status (3)

Country Link
US (1) US10445098B2 (zh)
CN (1) CN109597459A (zh)
DE (1) DE102018006889A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112368675A (zh) * 2018-06-06 2021-02-12 起元技术有限责任公司 更新可执行图
CN115048296A (zh) * 2022-06-09 2022-09-13 中金金融认证中心有限公司 用于对内存屏障指令有效性进行验证的方法和相关产品
CN117951346A (zh) * 2024-03-26 2024-04-30 深存科技(无锡)有限公司 面向向量数据库的混合加速架构

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013100783A1 (en) 2011-12-29 2013-07-04 Intel Corporation Method and system for control signalling in a data path module
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
US10402168B2 (en) 2016-10-01 2019-09-03 Intel Corporation Low energy consumption mantissa multiplication for floating point multiply-add operations
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10387319B2 (en) 2017-07-01 2019-08-20 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US10445451B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10496574B2 (en) 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10380063B2 (en) 2017-09-30 2019-08-13 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US11277455B2 (en) 2018-06-07 2022-03-15 Mellanox Technologies, Ltd. Streaming system
US10776087B2 (en) * 2018-06-25 2020-09-15 Intel Corporation Sequence optimizations in a high-performance computing environment
US10459866B1 (en) * 2018-06-30 2019-10-29 Intel Corporation Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US10418125B1 (en) * 2018-07-19 2019-09-17 Marvell Semiconductor Write and read common leveling for 4-bit wide DRAMs
US20200106828A1 (en) * 2018-10-02 2020-04-02 Mellanox Technologies, Ltd. Parallel Computation Network Device
US11188497B2 (en) * 2018-11-21 2021-11-30 SambaNova Systems, Inc. Configuration unload of a reconfigurable data processor
US10831507B2 (en) 2018-11-21 2020-11-10 SambaNova Systems, Inc. Configuration load of a reconfigurable data processor
US10761822B1 (en) * 2018-12-12 2020-09-01 Amazon Technologies, Inc. Synchronization of computation engines with non-blocking instructions
US10678724B1 (en) 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
US11625393B2 (en) 2019-02-19 2023-04-11 Mellanox Technologies, Ltd. High performance computing system
EP3699770A1 (en) 2019-02-25 2020-08-26 Mellanox Technologies TLV Ltd. Collective communication system and methods
US10965536B2 (en) 2019-03-30 2021-03-30 Intel Corporation Methods and apparatus to insert buffers in a dataflow graph
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US11029927B2 (en) 2019-03-30 2021-06-08 Intel Corporation Methods and apparatus to detect and annotate backedges in a dataflow graph
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US20200409709A1 (en) * 2019-06-29 2020-12-31 Intel Corporation Apparatuses, methods, and systems for time-multiplexing in a configurable spatial accelerator
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
WO2021026225A1 (en) * 2019-08-08 2021-02-11 Neuralmagic Inc. System and method of accelerating execution of a neural network
US11080227B2 (en) * 2019-08-08 2021-08-03 SambaNova Systems, Inc. Compiler flow logic for reconfigurable architectures
US11900156B2 (en) 2019-09-24 2024-02-13 Speedata Ltd. Inter-thread communication in multi-threaded reconfigurable coarse-grain arrays
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator
US11750699B2 (en) 2020-01-15 2023-09-05 Mellanox Technologies, Ltd. Small message aggregation
US11252027B2 (en) 2020-01-23 2022-02-15 Mellanox Technologies, Ltd. Network element supporting flexible data reduction operations
US11175922B1 (en) * 2020-04-28 2021-11-16 Speedata Ltd. Coarse-grain reconfigurable array processor with concurrent handling of multiple graphs on a single grid
US11354157B2 (en) * 2020-04-28 2022-06-07 Speedata Ltd. Handling multiple graphs, contexts and programs in a coarse-grain reconfigurable array processor
US11876885B2 (en) 2020-07-02 2024-01-16 Mellanox Technologies, Ltd. Clock queue with arming and/or self-arming features
US11848980B2 (en) * 2020-07-09 2023-12-19 Boray Data Technology Co. Ltd. Distributed pipeline configuration in a distributed computing system
US11556378B2 (en) 2020-12-14 2023-01-17 Mellanox Technologies, Ltd. Offloading execution of a multi-task parameter-dependent operation to a network device
US11409540B1 (en) * 2021-07-16 2022-08-09 SambaNova Systems, Inc. Routing circuits for defect repair for a reconfigurable data processor
US11556494B1 (en) 2021-07-16 2023-01-17 SambaNova Systems, Inc. Defect repair for a reconfigurable data processor for homogeneous subarrays
US11327771B1 (en) 2021-07-16 2022-05-10 SambaNova Systems, Inc. Defect repair circuits for a reconfigurable data processor
US20230195478A1 (en) * 2021-12-21 2023-06-22 SambaNova Systems, Inc. Access To Intermediate Values In A Dataflow Computation
US11922237B1 (en) 2022-09-12 2024-03-05 Mellanox Technologies, Ltd. Single-step collective operations

Family Cites Families (218)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US672177A (en) 1900-02-08 1901-04-16 William H Metcalf Inhaler.
ATE200357T1 (de) 1991-07-08 2001-04-15 Seiko Epson Corp Risc-prozessor mit dehnbarer architektur
JPH0713945A (ja) 1993-06-16 1995-01-17 Nippon Sheet Glass Co Ltd 演算処理部および制御・記憶部分離型マルチプロセッサ ・システムのバス構造
US5574944A (en) 1993-12-15 1996-11-12 Convex Computer Corporation System for accessing distributed memory by breaking each accepted access request into series of instructions by using sets of parameters defined as logical channel context
US5787029A (en) 1994-12-19 1998-07-28 Crystal Semiconductor Corp. Ultra low power multiplier
US5734601A (en) 1995-01-30 1998-03-31 Cirrus Logic, Inc. Booth multiplier with low power, high performance input circuitry
US6020139A (en) 1995-04-25 2000-02-01 Oridigm Corporation S-adenosyl methionine regulation of metabolic pathways and its use in diagnosis and therapy
US5805827A (en) 1996-03-04 1998-09-08 3Com Corporation Distributed signal processing for data channels maintaining channel bandwidth
US6088780A (en) 1997-03-31 2000-07-11 Institute For The Development Of Emerging Architecture, L.L.C. Page table walker that uses at least one of a default page size and a page size selected for a virtual address space to position a sliding field in a virtual address
US5840598A (en) 1997-08-14 1998-11-24 Micron Technology, Inc. LOC semiconductor assembled with room temperature adhesive
US6604120B1 (en) 1997-09-04 2003-08-05 Cirrus Logic, Inc. Multiplier power saving design
US5930484A (en) 1997-09-18 1999-07-27 International Business Machines Corporation Method and system for input/output control in a multiprocessor system utilizing simultaneous variable-width bus access
US6141747A (en) 1998-09-22 2000-10-31 Advanced Micro Devices, Inc. System for store to load forwarding of individual bytes from separate store buffer entries to form a single load word
US6314503B1 (en) 1998-12-30 2001-11-06 Emc Corporation Method and apparatus for managing the placement of data in a storage system to achieve increased system performance
US6295571B1 (en) 1999-03-19 2001-09-25 Times N Systems, Inc. Shared memory apparatus and method for multiprocessor systems
JP5285828B2 (ja) 1999-04-09 2013-09-11 ラムバス・インコーポレーテッド 並列データ処理装置
WO2000068784A1 (en) 1999-05-06 2000-11-16 Koninklijke Philips Electronics N.V. Data processing device, method for executing load or store instructions and method for compiling programs
US6393536B1 (en) 1999-05-18 2002-05-21 Advanced Micro Devices, Inc. Load/store unit employing last-in-buffer indication for rapid load-hit-store
US6205533B1 (en) 1999-08-12 2001-03-20 Norman H. Margolus Mechanism for efficient data access and communication in parallel computations on an emulated spatial lattice
US7911960B1 (en) 1999-08-13 2011-03-22 International Business Machines Corporation Delayed-start method for minimizing internal switch congestion
JP2001109661A (ja) 1999-10-14 2001-04-20 Hitachi Ltd キャッシュメモリの割当方法及びオペレーティングシステム及びそのオペレーティングシステムを有するコンピュータシステム
US6601126B1 (en) 2000-01-20 2003-07-29 Palmchip Corporation Chip-core framework for systems-on-a-chip
CA2430166A1 (en) 2000-11-28 2002-06-06 Seachange International, Inc. Content/service handling and delivery
GB2370381B (en) * 2000-12-19 2003-12-24 Picochip Designs Ltd Processor architecture
GB2374443B (en) 2001-02-14 2005-06-08 Clearspeed Technology Ltd Data processing architectures
WO2005045692A2 (en) 2003-08-28 2005-05-19 Pact Xpp Technologies Ag Data processing device and method
US6725364B1 (en) 2001-03-08 2004-04-20 Xilinx, Inc. Configurable processor system
GB2374242B (en) 2001-04-07 2005-03-16 Univ Dundee Integrated circuit and related improvements
EP1402379A4 (en) 2001-05-25 2009-08-12 Annapolis Micro Systems Inc METHOD AND APPARATUS FOR MODELING DATA STREAM SYSTEMS AND MAKING SUCH SYSTEMS IN COMPUTER EQUIPMENT
US20020184291A1 (en) 2001-05-31 2002-12-05 Hogenauer Eugene B. Method and system for scheduling in an adaptable computing engine
US6874079B2 (en) 2001-07-25 2005-03-29 Quicksilver Technology Adaptive computing engine with dataflow graph based sequencing in reconfigurable mini-matrices of composite functional blocks
US20030023830A1 (en) 2001-07-25 2003-01-30 Hogenauer Eugene B. Method and system for encoding instructions for a VLIW that reduces instruction memory requirements
US8412915B2 (en) 2001-11-30 2013-04-02 Altera Corporation Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements
US20030105799A1 (en) 2001-12-03 2003-06-05 Avaz Networks, Inc. Distributed processing architecture with scalable processing layers
US20040022094A1 (en) 2002-02-25 2004-02-05 Sivakumar Radhakrishnan Cache usage for concurrent multiple streams
US9170812B2 (en) 2002-03-21 2015-10-27 Pact Xpp Technologies Ag Data processing system having integrated pipelined array data processor
AU2003228353A1 (en) 2002-03-22 2003-10-13 Michael F. Deering Scalable high performance 3d graphics
US7987479B1 (en) 2002-03-28 2011-07-26 Cisco Technology, Inc. System and method for distribution of content over a network
US7200735B2 (en) 2002-04-10 2007-04-03 Tensilica, Inc. High-performance hybrid processor with configurable execution units
JP2004005249A (ja) 2002-05-31 2004-01-08 Fujitsu Ltd 負荷分散型マルチプロセッサに対する信号振分装置
US6986131B2 (en) 2002-06-18 2006-01-10 Hewlett-Packard Development Company, L.P. Method and apparatus for efficient code generation for modulo scheduled uncounted loops
US20040001458A1 (en) 2002-06-27 2004-01-01 Motorola, Inc. Method and apparatus for facilitating a fair access to a channel by participating members of a group communication system
US7486678B1 (en) 2002-07-03 2009-02-03 Greenfield Networks Multi-slice network processor
AU2003286131A1 (en) 2002-08-07 2004-03-19 Pact Xpp Technologies Ag Method and device for processing data
US6986023B2 (en) 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
US7181578B1 (en) 2002-09-12 2007-02-20 Copan Systems, Inc. Method and apparatus for efficient scalable storage management
US6983456B2 (en) 2002-10-31 2006-01-03 Src Computers, Inc. Process for converting programs in high-level programming languages to a unified executable for hybrid computing platforms
US7047370B1 (en) 2003-01-14 2006-05-16 Cisco Technology, Inc. Full access to memory interfaces via remote request
WO2004114577A2 (en) 2003-06-18 2004-12-29 Centillium Communications, Inc. Event scheduling for multi-port xdsl transceivers
US7714870B2 (en) 2003-06-23 2010-05-11 Intel Corporation Apparatus and method for selectable hardware accelerators in a data driven architecture
US7088371B2 (en) 2003-06-27 2006-08-08 Intel Corporation Memory command handler for use in an image signal processor having a data driven architecture
US20050007618A1 (en) * 2003-07-07 2005-01-13 Thomason Tamra L. System for restricted execution of user requests for printing data
US20130111188A9 (en) 2003-07-24 2013-05-02 Martin Vorbach Low latency massive parallel data processing device
US7257665B2 (en) 2003-09-29 2007-08-14 Intel Corporation Branch-aware FIFO for interprocessor data sharing
US20050138323A1 (en) 2003-12-18 2005-06-23 Intel Corporation, A Delaware Corporation Accumulator shadow register systems and methods
JP4104538B2 (ja) 2003-12-22 2008-06-18 三洋電機株式会社 リコンフィギュラブル回路、リコンフィギュラブル回路を備えた処理装置、リコンフィギュラブル回路における論理回路の機能決定方法、回路生成方法および回路
TWI323584B (en) 2003-12-26 2010-04-11 Hon Hai Prec Ind Co Ltd Method and system for burning mac address
US7490218B2 (en) 2004-01-22 2009-02-10 University Of Washington Building a wavecache
JP4502650B2 (ja) 2004-02-03 2010-07-14 日本電気株式会社 アレイ型プロセッサ
JP4546775B2 (ja) 2004-06-30 2010-09-15 富士通株式会社 時分割多重処理可能なリコンフィギュラブル回路
US7509484B1 (en) 2004-06-30 2009-03-24 Sun Microsystems, Inc. Handling cache misses by selectively flushing the pipeline
US7877748B2 (en) 2004-11-19 2011-01-25 The United States Of America As Represented By The Secretary Of The Air Force Method and apparatus for timing information flow in a distributed system
US7594102B2 (en) 2004-12-15 2009-09-22 Stmicroelectronics, Inc. Method and apparatus for vector execution on a scalar machine
US7613886B2 (en) 2005-02-08 2009-11-03 Sony Computer Entertainment Inc. Methods and apparatus for synchronizing data access to a local memory in a multi-processor system
US7546331B2 (en) 2005-03-17 2009-06-09 Qualcomm Incorporated Low power array multiplier
US7793040B2 (en) 2005-06-01 2010-09-07 Microsoft Corporation Content addressable memory architecture
JP4536618B2 (ja) 2005-08-02 2010-09-01 富士通セミコンダクター株式会社 リコンフィグ可能な集積回路装置
US20160098279A1 (en) 2005-08-29 2016-04-07 Searete Llc Method and apparatus for segmented sequential storage
US8275976B2 (en) 2005-08-29 2012-09-25 The Invention Science Fund I, Llc Hierarchical instruction scheduler facilitating instruction replay
US8099556B2 (en) 2005-09-13 2012-01-17 Arm Limited Cache miss detection in a data processing apparatus
JP2007079958A (ja) 2005-09-14 2007-03-29 Hitachi Ltd 記憶制御装置、データ処理方法、及びコンピュータプログラム
US8620623B2 (en) 2005-11-14 2013-12-31 Globaltrak, Llc Hierarchical and distributed information processing architecture for a container security system
US20070143546A1 (en) 2005-12-21 2007-06-21 Intel Corporation Partitioned shared cache
EP1808774A1 (en) 2005-12-22 2007-07-18 St Microelectronics S.A. A hierarchical reconfigurable computer architecture
JP4795025B2 (ja) 2006-01-13 2011-10-19 キヤノン株式会社 ダイナミックリコンフィギャラブルデバイス、制御方法、及びプログラム
US8595279B2 (en) 2006-02-27 2013-11-26 Qualcomm Incorporated Floating-point processor with reduced power requirements for selectable subprecision
WO2007133101A1 (en) 2006-05-16 2007-11-22 Intel Corporation Floating point addition for different floating point formats
EP2021921A2 (en) 2006-05-17 2009-02-11 Nxp B.V. Multi-processing system and a method of executing a plurality of data processing tasks
US7594055B2 (en) 2006-05-24 2009-09-22 International Business Machines Corporation Systems and methods for providing distributed technology independent memory controllers
US8456191B2 (en) 2006-06-21 2013-06-04 Element Cxi, Llc Data-driven integrated circuit architecture
US9946547B2 (en) 2006-09-29 2018-04-17 Arm Finance Overseas Limited Load/store unit for a processor, and applications thereof
US8010766B2 (en) 2006-10-12 2011-08-30 International Business Machines Corporation Increasing buffer locality during multiple table access operations
US7660911B2 (en) 2006-12-20 2010-02-09 Smart Modular Technologies, Inc. Block-based data striping to flash memory
JPWO2008087779A1 (ja) 2007-01-19 2010-05-06 日本電気株式会社 アレイ型プロセッサおよびデータ処理システム
JP4933284B2 (ja) 2007-01-25 2012-05-16 株式会社日立製作所 ストレージ装置及び負荷分散方法
US8543742B2 (en) 2007-02-22 2013-09-24 Super Talent Electronics, Inc. Flash-memory device with RAID-type controller
US8321597B2 (en) 2007-02-22 2012-11-27 Super Talent Electronics, Inc. Flash-memory device with RAID-type controller
US7479802B2 (en) 2007-03-09 2009-01-20 Quadric, Inc Programmable logic integrated circuit for digital algorithmic functions
US7613909B2 (en) 2007-04-17 2009-11-03 Xmos Limited Resuming thread to service ready port transferring data externally at different clock rate than internal circuitry of a processor
US7779298B2 (en) 2007-06-11 2010-08-17 International Business Machines Corporation Distributed job manager recovery
US9648325B2 (en) 2007-06-30 2017-05-09 Microsoft Technology Licensing, Llc Video decoding implementations for a graphics processing unit
US8347312B2 (en) 2007-07-06 2013-01-01 Xmos Limited Thread communications
US7822951B2 (en) 2007-08-01 2010-10-26 Advanced Micro Devices, Inc. System and method of load-store forwarding
US7895463B2 (en) 2007-08-28 2011-02-22 Cisco Technology, Inc. Redundant application network appliances using a low latency lossless interconnect link
DE212007000102U1 (de) 2007-09-11 2010-03-18 Core Logic, Inc. Rekonfigurierbarer Array-Prozessor für Gleitkomma-Operationen
KR101312281B1 (ko) 2007-11-06 2013-09-30 재단법인서울대학교산학협력재단 프로세서 및 메모리 제어 방법
US8078839B2 (en) 2007-12-13 2011-12-13 Wave Semiconductor Concurrent processing element system, and method
US9219603B2 (en) 2008-01-09 2015-12-22 International Business Machines Corporation System and method for encryption key management in a mixed infrastructure stream processing framework
US8160975B2 (en) 2008-01-25 2012-04-17 Mcafee, Inc. Granular support vector machine with random granularity
US8481253B2 (en) 2008-03-19 2013-07-09 Cryo-Save Ag Cryopreservation of adipose tissue for the isolation of mesenchymal stem cells
RU2374684C1 (ru) 2008-05-04 2009-11-27 Государственное образовательное учреждение высшего профессионального образования Курский государственный технический университет Параллельно-конвейерное устройство для векторизации аэрокосмических изображений земной поверхности
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
JP5056644B2 (ja) 2008-07-18 2012-10-24 富士通セミコンダクター株式会社 データ変換装置、データ変換方法及びプログラム
US8001510B1 (en) 2008-09-05 2011-08-16 Xilinx, Inc. Automated method of architecture mapping selection from constrained high level language description via element characterization
US20100191814A1 (en) 2008-12-23 2010-07-29 Marco Heddes System-On-A-Chip Employing A Network Of Nodes That Utilize Receive Side Flow Control Over Channels For Messages Communicated Therebetween
US8078848B2 (en) 2009-01-09 2011-12-13 Micron Technology, Inc. Memory controller having front end and back end channels for modifying commands
US8086783B2 (en) 2009-02-23 2011-12-27 International Business Machines Corporation High availability memory system
US8055816B2 (en) 2009-04-09 2011-11-08 Micron Technology, Inc. Memory controllers, memory systems, solid state drives and methods for processing a number of commands
US8910168B2 (en) 2009-04-27 2014-12-09 Lsi Corporation Task backpressure and deletion in a multi-flow network processor architecture
US8576714B2 (en) 2009-05-29 2013-11-05 Futurewei Technologies, Inc. System and method for relay node flow control in a wireless communications system
GB2471067B (en) 2009-06-12 2011-11-30 Graeme Roy Smith Shared resource multi-thread array processor
US20110004742A1 (en) 2009-07-06 2011-01-06 Eonsil, Inc. Variable-Cycle, Event-Driven Multi-Execution Flash Processor
US8650240B2 (en) 2009-08-17 2014-02-11 International Business Machines Corporation Complex matrix multiplication operations with data pre-conditioning in a high performance computing architecture
US8301803B2 (en) 2009-10-23 2012-10-30 Samplify Systems, Inc. Block floating point compression of signal data
GB201001621D0 (en) 2010-02-01 2010-03-17 Univ Catholique Louvain A tile-based processor architecture model for high efficiency embedded homogenous multicore platforms
US8578117B2 (en) 2010-02-10 2013-11-05 Qualcomm Incorporated Write-through-read (WTR) comparator circuits, systems, and methods use of same with a multiple-port file
US8495341B2 (en) 2010-02-17 2013-07-23 International Business Machines Corporation Instruction length based cracking for instruction of variable length storage operands
US9141350B2 (en) 2010-04-23 2015-09-22 Vector Fabrics B.V. Embedded system performance
US8438341B2 (en) 2010-06-16 2013-05-07 International Business Machines Corporation Common memory programming
US8719455B2 (en) 2010-06-28 2014-05-06 International Business Machines Corporation DMA-based acceleration of command push buffer between host and target devices
US9201801B2 (en) 2010-09-15 2015-12-01 International Business Machines Corporation Computing device with asynchronous auxiliary execution unit
TWI425357B (zh) 2010-09-27 2014-02-01 Silicon Motion Inc 用來進行區塊管理之方法以及記憶裝置及控制器
KR101735677B1 (ko) 2010-11-17 2017-05-16 삼성전자주식회사 부동 소수점의 복합 연산장치 및 그 연산방법
US9026769B1 (en) 2011-01-31 2015-05-05 Marvell International Ltd. Detecting and reissuing of loop instructions in reorder structure
TWI432987B (zh) 2011-03-15 2014-04-01 Phison Electronics Corp 記憶體儲存裝置、其記憶體控制器與病毒掃描方法
US9170846B2 (en) 2011-03-29 2015-10-27 Daniel Delling Distributed data-parallel execution engines for user-defined serial problems using branch-and-bound algorithm
US8799880B2 (en) 2011-04-08 2014-08-05 Siemens Aktiengesellschaft Parallelization of PLC programs for operation in multi-processor environments
US9817700B2 (en) 2011-04-26 2017-11-14 International Business Machines Corporation Dynamic data partitioning for optimal resource utilization in a parallel data processing system
US10078620B2 (en) 2011-05-27 2018-09-18 New York University Runtime reconfigurable dataflow processor with multi-port memory access module
US9116634B2 (en) 2011-06-10 2015-08-25 International Business Machines Corporation Configure storage class memory command
US9727827B2 (en) 2011-06-24 2017-08-08 Jobvite, Inc. Method and system for referral tracking
US8990452B2 (en) 2011-07-26 2015-03-24 International Business Machines Corporation Dynamic reduction of stream backpressure
US9148495B2 (en) 2011-07-26 2015-09-29 International Business Machines Corporation Dynamic runtime choosing of processing communication methods
US9201817B2 (en) 2011-08-03 2015-12-01 Montage Technology (Shanghai) Co., Ltd. Method for allocating addresses to data buffers in distributed buffer chipset
US8694754B2 (en) 2011-09-09 2014-04-08 Ocz Technology Group, Inc. Non-volatile memory-based mass storage devices and methods for writing data thereto
US8966457B2 (en) 2011-11-15 2015-02-24 Global Supercomputing Corporation Method and system for converting a single-threaded software program into an application-specific supercomputer
US8898505B2 (en) 2011-12-01 2014-11-25 International Business Machines Corporation Dynamically configureable placement engine
US8892914B2 (en) 2011-12-08 2014-11-18 Active-Semi, Inc. Programmable fault protect for processor controlled high-side and low-side drivers
WO2013100783A1 (en) 2011-12-29 2013-07-04 Intel Corporation Method and system for control signalling in a data path module
KR101968512B1 (ko) 2012-02-21 2019-04-12 삼성전자주식회사 Nfc를 이용한 멀티미디어 데이터 송수신 장치 및 방법
KR101929814B1 (ko) * 2012-02-27 2019-03-14 엘지전자 주식회사 영상 표시 장치 및 이의 제어 방법
US9146775B2 (en) 2012-04-26 2015-09-29 International Business Machines Corporation Operator graph changes in response to dynamic connections in stream computing applications
US9128725B2 (en) 2012-05-04 2015-09-08 Apple Inc. Load-store dependency predictor content management
US8995410B2 (en) 2012-05-25 2015-03-31 University Of Southern California Airsync: enabling distributed multiuser MIMO with full multiplexing gain
US9213571B2 (en) 2012-06-06 2015-12-15 2236008 Ontario Inc. System and method for changing abilities of a process
US9110713B2 (en) 2012-08-30 2015-08-18 Qualcomm Incorporated Microarchitecture for floating point fused multiply-add with exponent scaling
US9063974B2 (en) * 2012-10-02 2015-06-23 Oracle International Corporation Hardware for table scan acceleration
US9632787B2 (en) 2012-10-23 2017-04-25 Ca, Inc. Data processing system with data characteristic based identification of corresponding instructions
US9104474B2 (en) 2012-12-28 2015-08-11 Intel Corporation Variable precision floating point multiply-add circuit
US10467010B2 (en) 2013-03-15 2019-11-05 Intel Corporation Method and apparatus for nearest potential store tagging
US9268528B2 (en) 2013-05-23 2016-02-23 Nvidia Corporation System and method for dynamically reducing power consumption of floating-point logic
US9792252B2 (en) 2013-05-31 2017-10-17 Microsoft Technology Licensing, Llc Incorporating a spatial array into one or more programmable processor cores
US9715389B2 (en) 2013-06-25 2017-07-25 Advanced Micro Devices, Inc. Dependent instruction suppression
US9424079B2 (en) 2013-06-27 2016-08-23 Microsoft Technology Licensing, Llc Iteration support in a heterogeneous dataflow engine
US9524164B2 (en) 2013-08-30 2016-12-20 Advanced Micro Devices, Inc. Specialized memory disambiguation mechanisms for different memory read access types
US9292076B2 (en) 2013-09-16 2016-03-22 Intel Corporation Fast recalibration circuitry for input/output (IO) compensation finite state machine power-down-exit
US9244827B2 (en) 2013-09-25 2016-01-26 Intel Corporation Store address prediction for memory disambiguation in a processing device
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
US9594720B2 (en) 2013-10-21 2017-03-14 Xmos Limited Interface between a bus and a inter-thread interconnect
JP6446995B2 (ja) 2013-10-29 2019-01-09 株式会社リコー 情報処理システム及び情報処理方法
US10591983B2 (en) 2014-03-14 2020-03-17 Wisconsin Alumni Research Foundation Computer accelerator system using a trigger architecture memory access processor
KR20150126484A (ko) 2014-05-02 2015-11-12 삼성전자주식회사 소스 코드를 머신 코드로 변환하는 전자 장치 및 방법
US9696927B2 (en) 2014-06-19 2017-07-04 International Business Machines Corporation Memory transaction having implicit ordering effects
WO2016003646A1 (en) 2014-06-30 2016-01-07 Unisys Corporation Enterprise management for secure network communications over ipsec
DE102014113430A1 (de) 2014-09-17 2016-03-17 Bundesdruckerei Gmbh Verteilte Datenspeicherung mittels Berechtigungstoken
US9836473B2 (en) 2014-10-03 2017-12-05 International Business Machines Corporation Hardware acceleration for a compressed computation database
US9473144B1 (en) 2014-11-25 2016-10-18 Cypress Semiconductor Corporation Integrated circuit device with programmable analog subsystem
US20180008183A1 (en) * 2015-01-28 2018-01-11 Seventh Sense Biosystems, Inc. Devices and methods for delivering and/or receiving fluid
US9851945B2 (en) 2015-02-16 2017-12-26 Advanced Micro Devices, Inc. Bit remapping mechanism to enhance lossy compression in floating-point applications
US9658676B1 (en) 2015-02-19 2017-05-23 Amazon Technologies, Inc. Sending messages in a network-on-chip and providing a low power state for processing cores
US9594521B2 (en) 2015-02-23 2017-03-14 Advanced Micro Devices, Inc. Scheduling of data migration
US9946719B2 (en) 2015-07-27 2018-04-17 Sas Institute Inc. Distributed data set encryption and decryption
US10216693B2 (en) 2015-07-30 2019-02-26 Wisconsin Alumni Research Foundation Computer with hybrid Von-Neumann/dataflow execution architecture
US10108417B2 (en) 2015-08-14 2018-10-23 Qualcomm Incorporated Storing narrow produced values for instruction operands directly in a register map in an out-of-order processor
US20170083313A1 (en) 2015-09-22 2017-03-23 Qualcomm Incorporated CONFIGURING COARSE-GRAINED RECONFIGURABLE ARRAYS (CGRAs) FOR DATAFLOW INSTRUCTION BLOCK EXECUTION IN BLOCK-BASED DATAFLOW INSTRUCTION SET ARCHITECTURES (ISAs)
US10121553B2 (en) 2015-09-30 2018-11-06 Sunrise Memory Corporation Capacitive-coupled non-volatile thin-film transistor NOR strings in three-dimensional arrays
US9847783B1 (en) 2015-10-13 2017-12-19 Altera Corporation Scalable architecture for IP block integration
US9762563B2 (en) 2015-10-14 2017-09-12 FullArmor Corporation Resource access system and method
CN105512060B (zh) 2015-12-04 2018-09-14 上海兆芯集成电路有限公司 输入/输出电路以及数据传输控制方法
US9923905B2 (en) 2016-02-01 2018-03-20 General Electric Company System and method for zone access control
US9959068B2 (en) 2016-03-04 2018-05-01 Western Digital Technologies, Inc. Intelligent wide port phy usage
KR20170105353A (ko) 2016-03-09 2017-09-19 삼성전자주식회사 전자장치 및 그 제어방법
US20170286169A1 (en) 2016-03-31 2017-10-05 National Instruments Corporation Automatically Mapping Program Functions to Distributed Heterogeneous Platforms Based on Hardware Attributes and Specified Constraints
US10466868B2 (en) 2016-04-27 2019-11-05 Coda Project, Inc. Operations log
US11687345B2 (en) 2016-04-28 2023-06-27 Microsoft Technology Licensing, Llc Out-of-order block-based processors and instruction schedulers using ready state data indexed by instruction position identifiers
US10110233B2 (en) 2016-06-23 2018-10-23 Altera Corporation Methods for specifying processor architectures for programmable integrated circuits
US20180081834A1 (en) * 2016-09-16 2018-03-22 Futurewei Technologies, Inc. Apparatus and method for configuring hardware to operate in multiple modes during runtime
US20180081806A1 (en) 2016-09-22 2018-03-22 Qualcomm Incorporated Memory violation prediction
US10168758B2 (en) 2016-09-29 2019-01-01 Intel Corporation Techniques to enable communication between a processor and voltage regulator
US10402168B2 (en) 2016-10-01 2019-09-03 Intel Corporation Low energy consumption mantissa multiplication for floating point multiply-add operations
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US20180189675A1 (en) 2016-12-31 2018-07-05 Intel Corporation Hardware accelerator architecture and template for web-scale k-means clustering
US10180928B2 (en) 2016-12-31 2019-01-15 Intel Corporation Heterogeneous hardware accelerator architecture for processing sparse matrix data with skewed non-zero distributions
US10490251B2 (en) 2017-01-30 2019-11-26 Micron Technology, Inc. Apparatuses and methods for distributing row hammer refresh events across a memory device
US10754829B2 (en) 2017-04-04 2020-08-25 Oracle International Corporation Virtual configuration systems and methods
CN108694014A (zh) 2017-04-06 2018-10-23 群晖科技股份有限公司 用来进行内存空间保留及管理的方法与装置
US10452452B2 (en) 2017-04-17 2019-10-22 Wave Computing, Inc. Reconfigurable processor fabric implementation using satisfiability analysis
US10346145B2 (en) 2017-06-23 2019-07-09 Intel Corporation Loop execution with predicate computing for dataflow machines
US20190004878A1 (en) 2017-07-01 2019-01-03 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with security, power reduction, and performace features
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
US10387319B2 (en) 2017-07-01 2019-08-20 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10445451B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
US10496574B2 (en) 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10380063B2 (en) 2017-09-30 2019-08-13 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
US20190101952A1 (en) 2017-09-30 2019-04-04 Intel Corporation Processors and methods for configurable clock gating in a spatial array
US10402176B2 (en) 2017-12-27 2019-09-03 Intel Corporation Methods and apparatus to compile code to generate data flow code
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US10776087B2 (en) 2018-06-25 2020-09-15 Intel Corporation Sequence optimizations in a high-performance computing environment
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112368675A (zh) * 2018-06-06 2021-02-12 起元技术有限责任公司 更新可执行图
CN112368675B (zh) * 2018-06-06 2021-12-24 起元技术有限责任公司 更新可执行图的方法、系统和介质
US11372631B2 (en) 2018-06-06 2022-06-28 Ab Initio Technology Llc Updating executable graphs
CN115048296A (zh) * 2022-06-09 2022-09-13 中金金融认证中心有限公司 用于对内存屏障指令有效性进行验证的方法和相关产品
CN115048296B (zh) * 2022-06-09 2024-05-31 中金金融认证中心有限公司 用于对内存屏障指令有效性进行验证的方法和相关产品
CN117951346A (zh) * 2024-03-26 2024-04-30 深存科技(无锡)有限公司 面向向量数据库的混合加速架构
CN117951346B (zh) * 2024-03-26 2024-05-28 深存科技(无锡)有限公司 面向向量数据库的混合加速架构

Also Published As

Publication number Publication date
US20190102179A1 (en) 2019-04-04
DE102018006889A1 (de) 2019-04-04
US10445098B2 (en) 2019-10-15

Similar Documents

Publication Publication Date Title
CN109597459A (zh) 用于空间阵列中的特权配置的处理器和方法
CN109597458A (zh) 用于空间阵列中的可配置时钟门控的处理器和方法
CN109213523A (zh) 具有存储器系统性能、功率减小和原子支持特征的可配置空间加速器的处理器、方法和系统
CN109992306A (zh) 用于可配置空间加速器存储器一致性的装置、方法和系统
CN108268278A (zh) 具有可配置空间加速器的处理器、方法和系统
CN109215728A (zh) 用于分布式存储器危险检测和错误恢复的存储器电路和方法
CN109597646A (zh) 具有可配置空间加速器的处理器、方法和系统
CN109213723A (zh) 用于具有安全、功率降低和性能特征的可配置空间加速器的处理器、方法和系统
DE102018005181B4 (de) Prozessor für einen konfigurierbaren, räumlichen beschleuniger mit leistungs-, richtigkeits- und energiereduktionsmerkmalen
CN110018850A (zh) 用于可配置空间加速器中的多播的设备、方法和系统
CN111566623A (zh) 用于可配置空间加速器中的集成性能监视的装置、方法和系统
US11307873B2 (en) Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10496574B2 (en) Processors, methods, and systems for a memory fence in a configurable spatial accelerator
CN111868702A (zh) 用于可配置空间加速器中的远程存储器访问的装置、方法和系统
US10445250B2 (en) Apparatus, methods, and systems with a configurable spatial accelerator
CN111767236A (zh) 用于可配置空间加速器中的存储器接口电路分配的装置、方法和系统
US20190004994A1 (en) Processors and methods for pipelined runtime services in a spatial array
DE102018005169A1 (de) Prozessoren und verfahren mit konfigurierbaren netzwerkbasierten datenflussoperatorschaltungen
US20190004945A1 (en) Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
CN111512298A (zh) 用于可配置空间加速器中的条件队列的装置、方法和系统
CN111767080A (zh) 用于可配置空间加速器中的操作的设备、方法和系统
CN112559051A (zh) 使用脉动阵列和融合操作的深度学习实现方式
US20220100680A1 (en) Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits
WO2020005449A1 (en) Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
CN112148647A (zh) 用于存储器接口电路仲裁的装置、方法和系统

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