CN108268278B - 具有可配置空间加速器的处理器、方法和*** - Google Patents

具有可配置空间加速器的处理器、方法和*** Download PDF

Info

Publication number
CN108268278B
CN108268278B CN201810001530.6A CN201810001530A CN108268278B CN 108268278 B CN108268278 B CN 108268278B CN 201810001530 A CN201810001530 A CN 201810001530A CN 108268278 B CN108268278 B CN 108268278B
Authority
CN
China
Prior art keywords
processing elements
configuration
data
csa
network
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810001530.6A
Other languages
English (en)
Other versions
CN108268278A (zh
Inventor
K·弗莱明
K·D·格洛索普
小西蒙·C·史迪力
J·唐
A·G·加拉
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
Priority to CN202311494617.9A priority Critical patent/CN117762484A/zh
Publication of CN108268278A publication Critical patent/CN108268278A/zh
Application granted granted Critical
Publication of CN108268278B publication Critical patent/CN108268278B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7871Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8023Two dimensional arrays, e.g. mesh, torus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • G06F7/575Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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/3802Instruction prefetching
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/602Details relating to cache prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • 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)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

描述了关于可配置空间加速器的***、方法和装置。在一个实施例中,处理器包括:核,所述核具有解码器和执行单元,所述解码器用于将指令解码为经解码指令,所述执行单元用于执行所述经解码指令以执行第一操作;多个处理元件;以及互连网络,在所述多个处理元件之间,所述互连网络用于接收包括多个节点的数据流图的输入,其中,所述数据流图用于被覆盖到所述互连网络和所述多个处理元件中,并且每一个节点被表示为所述多个处理元件中的数据流操作器,并且所述多个处理元件用于当传入操作数集到达所述多个处理元件时执行第二操作。

Description

具有可配置空间加速器的处理器、方法和***
关于联邦资助的研发的声明
本发明是在由国防部授予的合同号H98230A-13-D-0124的政府支持下进行的。政府具有本发明的某些权利。
技术领域
本公开总体上关于电子学,更具体地,本公开的实施例关于可配置空间加速器。
背景技术
处理器或处理器集合执行来自指令集(例如,指令集架构(ISA))的指令。指令集是涉及编程的计算机架构的一部分,并且一般包括原生数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理以及外部输入和输出(I/O)。应当注意,术语“指令”在本文中一般是指宏指令(例如,提供给处理器供执行的指令),或者指微指令(例如,由处理器的解码器解码宏指令所产生的指令)。
附图说明
在所附附图中以示例方式而非限制方式说明本公开,在附图中,类似的参考标号指示类似的元件,其中:
图1示出根据本公开的实施例的加速器片。
图2示出根据本公开的实施例的耦合至存储器的硬件处理器。
图3A示出根据本公开的实施例的程序源。
图3B示出根据本公开的实施例的针对图3A的程序源的数据流图。
图3C示出根据本公开的实施例的加速器,该加速器具有配置成用于执行图3B的数据流图的多个处理元件。
图4示出根据本公开的实施例的数据流图的示例执行。
图5示出根据本公开的实施例的程序源。
图6示出根据本公开的实施例的加速器片,该加速器片包括处理元件的阵列。
图7A示出根据本公开的实施例的可配置数据路径网络。
图7B示出根据本公开的实施例的可配置流控制路径网络。
图8示出根据本公开的实施例的包括加速器的硬件处理器片。
图9示出根据本公开的实施例的处理元件。
图10示出根据本公开的实施例的请求地址文件(RAF)电路。
图11示出根据本公开的实施例的耦合在多个加速器片与多个高速缓存区块之间的多个请求地址文件(RAF)电路。
图12示出根据本公开的实施例的分区为三个区域(结果区域、三个潜在的进位区域和门控区域)的浮点乘法器。
图13示出根据本公开的实施例的具有多个处理元件的加速器的飞行中(in-flight)配置。
图14示出根据本公开的实施例的飞行中流水线式提取的快照。
图15示出根据本公开的实施例的用于加速器的编译工具链。
图16示出根据本公开的实施例的用于加速器的编译器。
图17A示出根据本公开的实施例的序列化汇编代码。
图17B示出根据本公开的实施例的针对图17A的序列化汇编代码的数据流汇编代码。
图17C示出根据本公开的实施例的针对图17B的数据流汇编代码的数据流图。
图18A示出根据本公开的实施例的C源代码。
图18B示出根据本公开的实施例的针对图18A的C源代码的数据流汇编代码。
图18C示出根据本公开的实施例的针对图18B的数据流汇编代码的数据流图。
图19A示出根据本公开的实施例的C源代码。
图19B示出根据本公开的实施例的针对图19A的C源代码的数据流汇编代码。
图19C示出根据本公开的实施例的针对图19B的数据流汇编代码的数据流图。
图20A示出根据本公开的实施例的流程图。
图20B示出根据本公开的实施例的流程图。
图21示出根据本公开的实施例的吞吐量相对于每个操作的能量的图表。
图22示出根据本公开的实施例的加速器片,该加速器片包括处理元件的阵列和本地配置控制器。
图23A-图23C示出根据本公开的实施例的配置数据路径网络的本地配置控制器。
图24示出根据本公开的实施例的配置控制器。
图25示出根据本公开的实施例的加速器片,该加速器片包括处理元件的阵列、配置高速缓存和本地配置控制器。
图26示出根据本公开的实施例的加速器片,该加速器片包括处理元件的阵列以及具有重配置电路的配置和异常处理控制器。
图27示出根据本公开的实施例的重配置电路。
图28示出根据本公开的实施例的加速器片,该加速器片包括处理元件的阵列以及具有重配置电路的配置和异常处理控制器。
图29示出根据本公开的实施例的加速器片,该加速器片包括处理元件的阵列以及耦合至片级异常聚合器的夹层异常聚合器。
图30示出根据本公开的实施例的具有异常生成器的处理元件。
图31示出根据本公开的实施例的加速器片,该加速器片包括处理元件的阵列和本地提取控制器。
图32A-图32C示出根据本公开的实施例的配置数据路径网络的本地提取控制器。
图33示出根据本公开的实施例的提取控制器。
图34示出根据本公开的实施例的流程图。
图35示出根据本公开的实施例的流程图。
图36A是示出根据本公开的实施例的通用向量友好指令格式及其A类指令模板的框图。
图36B是示出根据本公开的实施例的通用向量友好指令格式及其B类指令模板的框图。
图37A是示出根据本公开的实施例的用于图36A和图36B中的通用向量友好指令格式的字段的框图。
图37B是示出根据本公开的一个实施例的构成完整操作码字段的图37A中的专用向量友好指令格式的字段的框图。
图37C是示出根据本公开的一个实施例的构成寄存器索引字段的图37A中的专用向量友好指令格式的字段的框图。
图37D是示出根据本公开的一个实施例的构成扩充操作码字段3650的图37A中的专用向量友好指令格式的字段的框图。
图38是根据本公开的一个实施例的寄存器架构的框图。
图39A是示出根据本公开的实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线两者的框图。
图39B是示出根据本公开的实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核两者的框图。
图40A是根据本公开的实施例的单个处理器核以及其到管芯上互连网络的连接以及它的第2级(L2)高速缓存的本地子集的框图。
图40B是根据本公开的实施例的图40A中的处理器核的一部分的展开图。
图41是根据本公开的实施例的可具有超过一个的核、可具有集成的存储器控制器、并且可具有集成图形的处理器的框图。
图42是根据本公开的一个实施例的***的框图。
图43是根据本公开的实施例的更具体的示例性***的框图。
图44所示的是根据本公开的实施例的第二更具体的示例性***的框图。
图45示出的是根据本公开的实施例的芯片上***(SoC)的框图。
图46是根据本公开的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
在以下描述中,陈述了多个具体细节。然而,应当理解,可不通过这些具体细节来实施本公开的实施例。在其他实例中,未详细示出公知的电路、结构以及技术,以免模糊对本描述的理解。
说明书中对“一个实施例”、“实施例”、“示例实施例”等等的引用表明所描述的实施例可以包括特定的特征、结构或特性,但是每个实施例不一定都包括该特定的特征、结构或特性。此外,此类短语不一定是指同一个实施例。此外,当结合实施例描述特定的特征、结构或特性时,认为结合无论是否被明确描述的其他实施例而影响此类特征、结构或特性是在本领域技术人员的知识范围之内的。
(例如,具有一个或多个核的)处理器可执行指令(例如,指令线程)以对数据操作,从而例如执行算术、逻辑或其他功能。例如,软件可请求操作,并且硬件处理器(例如,该硬件处理器的一个或多个核)可响应于该请求而执行该操作。操作的一个非限制性示例是输入多个向量元素并输出具有经混合的多个元素的向量的混合操作。在某些实施例中,多个操作利用对单条指令的执行来完成。
例如由美国能源部定义的百亿亿次级性能可要求***级浮点性能在给定的(例如,20MW)功率预算内超过每秒1018次浮点操作(exaFLOP)或更多。本文中的某些实施例涉及目标为高性能计算(HPC)的可配置空间加速器(CSA)。CSA的某些实施例目标为对数据流图的直接执行以实现远超常规路线图架构的计算密集但高能效的空间微架构。下文包括对CSA及其某些特征的实施例的架构理念的描述。如图任何革命性架构那样,可编程性可能是风险。为了缓解该问题,已利用编译工具链(其也在下文中讨论)对CSA架构的实施例进行共同设计。
1.引论
百亿亿次级计算目标可要求在急剧的功率预算(例如,20MW)内的巨量***级浮点性能(例如,1个ExaFLOP)。然而,利用经典的冯·诺依曼(von Neumann)架构来同时改善程序执行性能和能效已变得困难:乱序调度、同时多线程操作、复杂寄存器组和其他结构提供性能,但是具有高能量成本。本文中的某些实施例同时实现性能和能量要求。百亿亿次级计算功率-性能目标可针对每次操作既要求高吞吐量又要求低功耗。本文中的某些实施例通过提供大量低复杂度、高能效的处理(例如,计算)元件来提供此,这些低复杂度、高能效的处理元件极大地消除了先前处理器设计的控制开销。受此观察结果引导,本文中的某些实施例包括可配置空间加速器(CSA),例如包括由轻量型回压式网络的集合连接的处理元件(PE)的阵列。CSA片的一个示例在图1中描绘。处理(例如,计算)元件的某些实施例是数据流操作器,例如,当既满足(i)输入数据已到达数据流操作器又满足(ii)具有可用于存储输出数据的空间时(例如,否则没有处理正在发生)仅处理输入数据的多重数据流操作器。(例如,加速器或CSA的)某些实施例不利用被触发的指令。
图1示出根据本公开的实施例的加速器片100。加速器片100可以是较大的片的部分。加速器片100执行一个或多个数据流图。数据流图一般可以指在对序列化代码的编译时出现的显式并行的程序描述。本文中的某些实施例(例如,CSA)允许数据流图被直接配置到CSA阵列上,例如,不是被变换为序列化的指令流。数据流图偏离序列化的编译流允许CSA的实施例支持熟悉的编程模型并(例如,不使用工作表)直接执行现有的高性能计算(HPC)代码。CSA处理元件(PE)可以是高能效的。在图1中,存储器接口102可耦合至存储器(例如,图2中的存储器202)以允许加速器片100向(例如,管芯外)存储器访问(例如,加载和/或存储)数据。所描绘的加速器片100是由经由互连网络104耦合在一起的若干种类的PE组成的异构阵列。加速器片100可包括以下一者或多者:整数算术PE、浮点算术PE、通信电路和结构内存储。数据流图(例如,经编译的数据流图)可覆盖在加速器片100上供执行。在一个实施例中,对于特定的数据流图,每一个PE仅处理图中的一个或两个操作。PE阵列可以是异构的,例如使得没有PE支持完整的CSA数据流架构和/或一个或多个PE被编程(例如,定制)以执行仅一些但高度高效的操作。本文中的某些实施例因此实现具有相比路线图架构为计算密集型的处理元件的阵列的加速器,并相对于现有的HPC供应在能量效率和性能方面实现大约一数量级的增益。
性能提升可源于在其中每一个PE可同时执行(例如,如果输入数据可用)的(例如,密集的)CSA内的并行执行。效率提升可源于每一个PE的效率,例如,其中每一个PE的操作(例如,行为)对于每一个配置(例如,映射)步骤被固定一次,并且执行在本地数据到达PE时发生(例如,不考虑其他结构活动)。在某些实施例中,PE是数据流操作器(例如,每一个PE是单个数据流操作器),例如,当既满足(i)输入数据已到达数据流操作器又满足(ii)具有可用于存储输出数据的空间时(例如,否则没有处理正在发生)仅处理输入数据的数据流操作器。这些属性使CSA的实施例能够跨广泛类型的现有单流和并行程序(例如,所有程序)提供性能的范式转移(paradigm-shifting)等级和极大的能效改善,同时保持熟悉的HPC编程模型。CSA的某些实施例可针对HPC,使得浮点能效是极其重要的。CSA的某些实施例不但获得令人瞩目的性能改善和能量减少,还将这些增益传递至以主流HPC语言编写的且用于主流HPC框架的现有HPC程序。CSA架构的某些实施例(例如,具有想到的编译)在对由现代编译器生成的控制数据流内部表示的直接支持中提供若干扩展。本文中的某些实施例涉及CSA数据流编译器(例如,其可接受C、C++和Fortran编程语言)以针对CSA架构。
以下第2节公开CSA架构的实施例。具体地,公开了在数据流执行模型内集成存储器的新颖的实施例。第3节探究CSA的实施例的微架构细节。在一个实施例中,CSA的主要目的是支持编译器产生的程序。以下第4节检验CSA编译工具链的实施例。在第5节中,在经编译代码的执行中将CSA的实施例的优势与其他架构进行比较。最后,在第6节中讨论CSA微架构的实施例的性能,在第7节中讨论进一步的CSA细节,并在第8节中提供总结。
2.架构
CSA的某些实施例的目的是迅速且高效地执行程序(例如,由编译器产生的程序)。CSA架构的某些实施例提供支持编译器技术和编程范式的需求的编程抽象。CSA的实施例执行数据流图,例如,非常像经编译的程序的编译器自身的内部表示(IR)的程序表现形式。在该模型中,程序被表示为由节点(例如,顶点)和边缘组成的数据流图,该节点从(例如,涵盖计算操作和控制操作两者的)架构定义的数据流操作器的集合绘制,该边缘表示数据在数据流操作器之间的传送。执行可通过将数据流令牌(例如,作为数据值或表示数据值的数据流令牌)注入到数据流图中来进展。令牌可在其间流动,并可在每一个节点(例如,顶点)处被转换,从而例如形成完整的计算。在图3A-图3C中示出样本数据流图及其距高级源代码的偏离,并且图5示出数据流图的执行的示例。
通过提供编译器所要求的确切的那些数据流图执行支持,CSA的实施例为数据流图执行进行配置。在一个实施例中,CSA是加速器(例如,图2中的加速器),并且它不寻求提供在通用处理核(例如,图2中的核)上可用的必要但不频繁使用的机制(诸如,***调用)中的一些。因此,在该实施例中,CSA可执行许多代码,但不能够执行所有代码。作为交换,CSA获得显著的性能和能量优势。为了实现以常用的序列化语言编写的代码的加速,本文中的实施例也引入若干新颖的架构特征来辅助编译器。一个具体的新颖性是CSA对存储器的处理,这是先前已被忽略或未被很好地解决的课题。CSA的实施例在将数据流操作器(例如,相比将查找表(LUT))用作其基本架构接口方面也是独一无二的。
图2示出根据本公开的实施例的耦合至(例如,连接至)存储器202的硬件处理器200。在一个实施例中,硬件处理器200和存储器202是计算***201。在某些实施例中,加速器中的一个或多个是根据本公开的CSA。在某些实施例中,处理器中的核中的一个或多个核是本文中公开的那些核。硬件处理器200(例如,其每一个核)可包括硬件解码器(例如,解码单元)和硬件执行单元。硬件处理器200可包括寄存器。注意,本文中的附图可能没有描绘所有的数据通信耦合(例如,连接)。本领域普通技术人员将认识到,这样做是为了不使附图中的某些细节模糊。注意,附图中的双向箭头可以不要求双向通信,例如,它可以指示单向通信(例如,去往或来自那个组件或设备)。通信路径中的任一路径或所有组合可用于本文中的某些实施例。所描绘的硬件处理器200包括根据本公开的多个核(0至N,其中,N可以是1或更大)和硬件加速器(0至M,其中,M可以是1或更大)。硬件处理器200(例如,其(多个)加速器和/或(多个)核)可耦合至存储器202(例如,数据存储设备)。(例如,核的)硬件解码器可接收(例如,单条)指令(例如,宏指令),并将该指令解码为例如微指令和/或微操作。(例如,核的)硬件执行单元可执行经解码的指令(例如,宏指令)以执行一个或多个操作。往回转到CSA的实施例,下面讨论数据流操作器。
2.1数据流操作器
加速器(例如,CSA)的实施例的关键架构接口是数据流操作器,例如,作为数据流图中的节点的直接表示。从操作的视角来看,数据流操作器流式地或以数据驱动方式表现。数据流操作器的传入操作数一可用,该数据流操作器就可执行。CSA数据流执行可(例如,仅)依赖于高度局部化的状态,从而例如导致伴随着分布式异步执行模型的高度可缩放架构。数据流操作器可包括算术数据流操作器,例如,以下一项或多项:浮点加法和乘法,整数加法、减法和乘法,各种形式的比较、逻辑操作器,以及移位。然而,CSA的实施例也可包括辅助程序图中的数据流令牌管理的丰富的控制操作器的集合。这些控制操作器的示例包括“挑选”操作器(例如,其将两个或更多个逻辑输入通道复用为单个输出通道)和“切换”操作器(例如,其操作为通道解复用器)(例如,从两个或更多个逻辑输入通道输出单个通道)。这些操作器可使编译器实现控制范式(诸如,条件表达式)。CSA的某些实施例可包括(例如,相对于较小数量的操作的)有限的数据流操作器集以实现密集且高能效的PE微架构。某些实施例可包括用于HPC代码中常见的复杂操作的数据流操作器。CSA数据流操作器架构对于部署特定的扩展是高度地可改变的。例如,更多复杂的数学数据流操作器(例如,三角函数)可被包括在某些实施例中以使某些数学密集型HPC工作负荷加速。类似地,神经网络调整的扩展可包括用于向量化、低精度算术的数据流操作器。
图3A示出根据本公开的实施例的程序源。程序源代码包括乘法函数(func)。图3B示出根据本公开的实施例的针对图3A的程序源的数据流图300。数据流图300包括挑选节点304、切换节点306和乘法节点308。沿通信路径中的一条或多条通信路径,缓冲器可任选地可被包括。所描绘的数据流图300可执行以下操作:利用挑选节点304来选择输入X,将X与Y相乘(例如,乘法节点308),且随后从切换节点306的左侧输出输出结果。图3C示出根据本公开的实施例的加速器(例如,CSA),该加速器具有配置成用于执行图3B的数据流图的多个处理元件301。更具体地,数据流图300被覆盖到处理元件301的阵列(以及例如其间的(多个)(例如,互连)网络)中,使得例如数据流图300中的每一个节点被表示为处理元件301的阵列中的数据流操作器。在一个实施例中,处理元件301的阵列中的处理元件中的一个或多个用于通过存储器接口302来访问存储器。在一个实施例中,数据流图300的挑选节点304因此对应于挑选操作器304A(例如,由挑选操作器304A表示),数据流图300的切换节点306因此对应于切换操作器306A(例如,由切换操作器306A表示),并且数据流图300的乘法器节点308因此对应于乘法器操作器308A(例如,由乘法器操作器308A表示)。另一处理元件和/或流控制路径网络可将控制信号(例如,控制令牌)提供给挑选操作器304A和切换操作器306A以执行图3A中的操作。在一个实施例中,处理元件301的阵列配置成用于在执行开始之前执行图3B的数据流图300。在一个实施例中,编译器执行从图3A到图3B的转换。在一个实施例中,进入处理元件的阵列的数据流图节点的输入在逻辑上将数据流图嵌入到处理元件的阵列中(例如,如下文中进一步所讨论),使得输入/输出路径经配置以产生所需的结果。
2.2等待时间不敏感的通道
通信弧(arc)是数据流图的第二主组件。CSA的某些实施例将这些弧描述为等待时间不敏感的通道,例如,有序、回压式(例如,直到有用于存储输出的空间才产生或发送输出)、点对点通信通道。如同数据流操作器那样,等待时间不敏感的通道在根本上是异步的,从而给予了组合许多类型的网络来实现特定图的通道的自由。等待时间不敏感的通道可具有任意长的等待时间,并仍忠实地实现CSA架构。然而,在某些实施例中,在性能和能量方面具有强烈的动机来使等待时间尽可能小。本文中的第3.2公开了网络微架构,其中,以流水线方式、在不多于一个周期等待时间的情况下实现数据流图通道。等待时间不敏感的通道的实施例提供关键的抽象层,该关键的抽象层可与CSA架构一起利用以向应用编程器提供许多运行时服务。例如,CSA可在实现CSA配置(将程序加载到CSA阵列上)时利用等待时间不敏感的通道。
图4示出根据本公开的实施例的数据流图400的示例执行。在步骤1,输入值(例如,针对图3B中的X的1以及针对图3B中的Y的2)可被加载在数据流图400中以执行1*2乘法操作。数据输入值中的一个或多个在操作中可以是静态的(例如,恒定的)(例如,参照图3B,X为1及Y为2)或在操作期间被更新。在步骤2,(例如,流控制路径网络上的)处理元件或其他电路将0输出至挑选节点404的控制输入(例如,mux控制信号)(例如,从端口获得“1”作为源送至其输出),并输出0以控制切换节点406的输入(例如,mux控制信号)(例如,以便使其输入离开端口“0”向外提供至目的地(例如,下游处理元件))。在步骤3,数据值1从挑选节点404(并且例如在挑选节点404处消耗其控制信号“0”)输出到乘法器节点408,以便在步骤4处与数据值2相乘。在步骤4,乘法器节点408的输出到达切换节点406,例如,其使切换节点406消耗控制信号“0”以在步骤5处从切换节点406的端口“0”输出值2。随后,该操作完成。因此可相应地对CSA编程,使得每一个节点的对应数据流操作器执行图4中的操作。虽然在该示例中执行被串行化,但是原则上所有数据流操作可并行地执行。在图4中使用步骤以便将数据流执行与任何物理微架构表现形式区分开。在一个实施例中,下游处理元件用于(例如,在流控制路径网络上)将信号(或不将就绪信号)发送至切换装置406,以使来自切换装置406的输出停止,直到下游处理元件为输出做好准备(例如,具有存储空间)。
2.3存储器
数据流架构总体上聚焦通信和数据操纵,较不关注状态。然而,启用实际的软件、尤其是以传统序列化语言编写的程序要求非常关注与存储器的对接。CSA的某些实施例将架构存储器操作用作它们对(例如,大型)状态化存储的主接口。从数据流图的视角看,存储器操作类似于其他数据流操作,例外在于,存储器操作具有更新共享存储的副作用。具体地,本文中的某些实施例的存储器操作具有与每一个其他数据流操作器相同的语义,例如,当它们的操作数(例如,地址)可用且在一些等待时间之后响应被产生时,这些存储器操作“执行”。本文中的某些实施例显式地将操作数输入与结果输出解耦,使得存储器操作器本质上是流水线式的并具有产生许多同时的待决请求的潜力,从而例如使存储器操作器非常适应存储器子***的等待时间和带宽特性。CSA的实施例提供基本存储器操作,诸如,加载和存储,该加载取得地址通道,并以对应于该地址的值填充响应通道。CSA的实施例也提供更高级的操作(诸如,存储器内原子和一致性操作器)。这些操作可具有与其对等的冯·诺依曼操作类似的语义。CSA的实施例可对使用序列化语言(诸如,C和Fortran)描述的现有程序进行加速。支持这些语言模型的结果是对程序存储器顺序进行寻址,例如,对典型地由这些语言规定的存储器操作的串行排序。
图5示出根据本公开的实施例的程序源(例如,C代码)500。根据C编程语言的存储器语义,存储器复制(memcpy)应当被串行化。然而,如果已知阵列A与阵列B不相交,则memcpy可利用CSA的实施例来并行化。图5进一步示出程序顺序的问题。一般而言,编译器不能够证明阵列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和数据中心用途)的实施例是分片的。图6和图8示出CSA的片级部署。图8示出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来为不同的应用域定制某些实施例。例如,用于高性能计算的结构可包括针对双精度、融合乘-加的某种定制,而针对深度神经网络的结构可包括低精度浮点操作。
空间架构模式(例如,如图6中所例示)是由处理元件(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)组成的空间加速器中,通信等待时间和带宽对于总体程序性能可以是关键的。本文中的某些实施例提供轻量、电路交换型网络以及支持该网络所需的微架构控制特征,该轻量、电路交换型网络促进空间处理阵列(诸如,图6中所述的空间阵列)中的PE之间的通信。网络的某些实施例实现点对点、流受控通信通道的构造,该点对点、流受控通信通道支持面向数据流的处理元件(PE)的通信。除了点对点通信之外,本文中的某些网络还支持多播通信。通信通道可通过静态配置网络以形成PE之间的虚拟电路来形成。本文中的电路交换技术可减小通信等待时间并相应地使网络缓冲最小化,从而例如产生高性能和高能效两者。在网络的某些实施例中,PE间等待时间可低至零个周期,这意味着下游PE可在数据被产生后在该周期内操作该数据。为了获得甚至更高的带宽,并且为了准许更多程序,多个网络可并行地布置,例如,如图6中所示。
空间架构(诸如,图6中所述的空间架构)可以是由PE间网络连接的轻量型处理元件的组成。被视为数据流图的程序可通过配置PE和网络而被映射到架构上。一般而言,PE可被配置为数据流操作器,并且一旦所有输入操作数到达PE,随后一些操作就可发生,并且结果被转发到所需的下游PE。PE可通过专用虚拟电路进行通信,该专用虚拟电路通过静态地配置电路交换型通信网络而形成。这些虚拟电路可以是流受控且完全被回压(backpressure)的,使得例如如果源没有数据或目的地为满,则PE将停止。在运行时,数据可流经实现经映射算法的PE。例如,数据可从存储器通过结构而流入,随后向外回到存储器。该架构的实施例相对于传统多核处理器可实现卓越的性能效率:例如,其中,与扩展存储器***相反,以PE形式的计算比较大的核更简单且更多,并且通信是直接的。
图6示出根据本公开的实施例的加速器片600,该加速器片600包括处理元件(PE)的阵列。互连网络被描绘为电路交换型、静态配置的通信通道。例如,通道的集合通过切换装置(例如,第一网络中的切换装置610和第二网络中的切换装置620)被耦合在一起。第一网络和第二网络可以是分开的或可以耦合在一起。例如,切换装置610可将四个数据路径612、614、616、618中的一个或多个耦合在一起,例如,经配置以执行根据数据流图的操作。在一个实施例中,数据路径的数量是任意多个。处理元件(例如,处理元件604)可如本文中所公开,例如,如图9中那样。加速器片600包括存储器/高速缓存层次结构接口602,以便例如将加速器片600与储存器和/或高速缓存对接。数据路径(例如,618)可延伸至另一片或可终止于例如片的边缘处。处理元件可包括输入缓冲器(例如,缓冲器606)和输出缓冲器(例如,缓冲器608)。
操作可基于这些操作的输入的可用性以及PE的状态来执行。PE可从输入通道获取操作数,并且可将结果写至输出通道,但是也可使用内部寄存器状态。本文中的某些实施例包括可配置数据流友好型PE。图9示出一个此类PE的详细框图:整数PE。该PE由若干I/O缓冲器、ALU、存储寄存器、一些指令寄存器和调度器组成。在每一个周期,调度器可基于输入和输出缓冲器的可用性以及PE的状态来选择供执行的指令。随后,操作的结果被写至输出寄存器,或被写至(例如,PE本地的)寄存器。被写至输出缓冲器的数据可被传输到下游PE用于进一步处理。这种PE样式可以是极其高能效的,例如,与从复杂的多端口寄存器组读取数据不同,PE从寄存器读取该数据。类似地,指令可被直接存储在寄存器中,而不是被存储在虚拟化的指令高速缓存中。
指令寄存器可在特殊的配置步骤期间被设置。在该步骤期间,除PE间网络之外,辅助的控制线和状态也可用于跨包含结构的若干PE使配置流入。作为并行性的结果,此类网络的某些实施例可提供快速的重配置,例如,片尺寸的结构可在小于约10微秒内被配置。
图9表示处理元件的一个示例配置,例如,其中所有架构元件尺寸设定为最小。在其他实施例中,处理元件的多个组件中的每一个组件被独立地缩放以产生新PE。例如,为了处理更多复杂程序,可引入可由PE执行的更多数量的指令。可配置性的第二个维度是PE算术逻辑单元(ALU)的功能。在图9中,整数PE被描绘为其可支持加法、减法和各种逻辑操作。通过将不同种类的功能单元替换到PE中,可以创建其他种类的PE。例如,整数乘法PE可不具有寄存器、具有单条指令,并具有单个输出缓冲器。PE的某些实施例将融合乘加(FMA)解构为分开但紧密耦合的浮点乘法和浮点加法单元以改善对乘-加重型工作负荷的支持。在下文中进一步讨论PE。
图7A示出根据本公开的实施例的(例如,参照图6所讨论的网络一或网络二中的)可配置数据路径网络700。网络700包括多个多路复用器(例如,多路复用器702、704、706),这些多路复用器可(例如,经由它们相应的控制信号)经配置以将(例如,来自PE的)一个或多个数据路径连接在一起。图7B示出根据本公开的实施例的(例如,参照图6所讨论的网络一或网络二中的)可配置流控制路径网络701。网络可以是轻量PE至PE网络。网络的某些实施例可视为用于构建分布式点对点数据通道的组成基元的集合。图7A示出使两个通道(粗体黑线和点状黑线)被启用的网络。粗体黑线通道是多播的,例如,单个输入被发送到两个输出。注意,即便专用的电路交换型路径形成在通道端点之间,通道也可在单个网络内的一些点处交叉。此外,该交叉不会引入两个通道之间的结构危害,使得每一个独立地且以全带宽操作。
实现分布式数据通道可包括图7A-图7B中所示的两个路径。前向或数据路径将数据从生产方携带到消耗方。多路复用器可配置成引导数据和有效位从生产方到消耗方,例如,如图7A中所示。在多播的情况下,数据将被引导到多个消耗方端点。网络的该实施例的第二部分是流控制或回压路径,其与前向数据路径相反地流动,例如,如图7B中所示。消耗方端点可断言它们何时准备好接受新数据。随后,可使用可配置的逻辑结(在图7B中标记为(例如,回流)流控制功能)将这些信号往回引导到生产方。在一个实施例中,每一个流控制功能电路可以是多个切换装置(例如,多个mux),例如,与图7A类似。流控制路径可处理控制数据从消耗方返回到生产方。结可启用多播,例如,其中在生产方假定数据已被接收之前,每一个消耗方准备好接收数据。在一个实施例中,PE是具有作为其架构接口的数据流操作器的PE。附加地或替代地,在一个实施例中,PE可以是(例如,结构中的)任何种类的PE,例如但不限于具有指令指针、经触发指令或基于状态机的架构接口的PE。
除了例如PE被静态地配置之外,网络也可被静态地配置。在该配置步骤期间,配置位可在每一个网络组件处被设置。这些位控制例如mux选择和流控制功能。网络可包括多个网络,例如,数据路径网络和流控制路径网络。网络或多个网络可利用不同宽度(例如,第一宽度以及更窄或更宽的宽度)的路径。在一个实施例中,数据路径网络具有比流控制路径网络的宽度更宽的(例如,位传输)宽度。在一个实施例中,第一网络和第二网络中的每一个都包括它们自身的数据路径网络和流控制路径网络,例如,数据路径网络A和流控制路径网络A以及更宽的数据路径网络B和流控制路径网络B。
网络的某些实施例是无缓冲的,并且数据用于在单个周期中在生产方与消费方之间移动。网络的某些实施例也是无边界的,即,网络跨越整个结构。在一个实施例中,一个PE用于在单个周期中与任何其他PE通信。在一个实施例中,为了改善路由带宽,可在PE的行之间并行地布置若干网络。
相对于FPGA,本文中的网络的某些实施例具有三个优势:面积、频率和程序表达。本文中的网络的某些实施例以粗粒度操作,其例如减少配置位的数量并由此减小网络的面积。网络的某些实施例还通过在电路(例如,硅)中直接实现流控制逻辑来获得面积减小。强化的网络实现方式的某些实施例也享有相对于FPGA的频率优势。由于面积和频率优势,当在吞吐量奇偶校验处使用较低电压的情况下,功率优势可存在。最后,网络的某些实施例提供比FPGA线更好的高级语义,尤其是相对于可变时序方面,因此,那些实施例更容易由编译器针对。本文中的网络的某些实施例可视为用于构建分布式点对点数据通道的组成基元的集合。
在某些实施例中,多播源可能无法断言其数据有效,除非该多播源从每一个接收器(sink)接收到就绪信号。因此,在多播情况下,可利用额外的结和控制位。
像某些PE那样,网络可被静态地配置。在该步骤期间,配置位在每一个网络组件处被设置。这些位控制例如mux选择和流控制功能。本申请的网络的前向路径要求一些位以使该前向路径的mux摇摆。在图7A中示出的示例中,要求每一跳(hop)四个位:东mux和西mux中的每一个利用一个位,而向南的mux利用两个位。在该实施例中,四个位可用于数据路径,但是7个位可用于(例如,流控制路径网络中的)流控制功能。如果例如CSA进一步利用北-南方向,则其他实施例可利用更多位。流控制功能可将控制位用于流控制可从其来的每一个方向。这可实现静态地设置流控制功能的灵敏度。以下表1总结了用于图7B中的网络的流控制功能的布尔代数实现方式,配置位被大写。在该示例中,利用七个位。
表1:流实现方式
对于从图7B中的左边起的第三个流控制框,EAST_WEST_SENSITIVE和NORTH_SOUTH_SENSITIVE被描绘为经设置以分别实现对粗体线通道和点状线通道的流控制。
图8示出根据本公开的实施例的包括加速器802的硬件处理器片800。加速器802可以是根据本公开的CSA。片800包括多个高速缓存区块(例如,高速缓存区块808)。请求地址文件(RAF)电路810可被包括,例如,如在以下第3.2节中所讨论。ODI可以指管芯上互连,例如,跨整个管芯伸展、连接所有片的互连。OTI可以指(例如,跨片伸展,例如,将片上的高速缓存区块连接在一起的)片上互连。
3.1处理元件
在某些实施例中,CSA包括异构PE的阵列,其中,结构由若干类型的PE组成,这些PE中的每一个仅实现数据流操作器的子集。作为示例,图9示出能够实现宽泛的整数和控制操作集的PE的暂定的实现方式。其他PE(包括支持浮点加法、浮点乘法、缓冲和某些控制操作的那些PE)也可具有类似的实现样式,例如,用适当的(数据流操作器)电路替代ALU。在执行开始之前,CSA的PE(例如,数据流操作器)可经配置(例如,编程)以实现来自PE支持的集合中的特定的数据流操作。配置可包括一个或两个控制字,这一个或两个控制字指定控制ALU的操作码、引导PE内的各种多路复用器,并驱使数据流进入PE通道以及离开PE通道。数据流操作器可通过对这些配置位进行微编码来实现。图9中的所描绘的整数PE 900被组织成从顶部流动到底部的单级逻辑流水线。数据从本地网络集合中的一个本地网络进入PE 900,在PE900中,该数据被寄存在输入缓冲器中用于后续操作。每一个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节中描述的异常处理机制可通过以下方式来实现:在检测到异常条件后,将流控制线拉到“不存在”状态。该动作不仅可温和地停止冒犯性计算中所涉及的流水线的那些部分,而且还可保持机器状态先于异常,以便例如进行诊断分析。第二网络层(例如,夹层网络)可以是共享的分组交换型网络。夹层网络(例如,由图22中的虚线框示意性地指示的网络)能以等待时间、带宽和能量为代价来提供更一般的长距离通信。在经很好地路由的程序中,多数通信可在本地网路上发生,因此相比而言,夹层网络供应将显著地减少,例如,每一个PE可连接至多个本地网络,但是CSA针对PE的每一个逻辑邻域将仅供应一个夹层端点。由于夹层实际上是共享网络,因此每一个夹层网络可携带多个逻辑上独立的通道,并例如以多个虚拟通道来供应。在一个实施例中,夹层网络的主要功能是用于提供PE间以及PE与存储器间的宽范围通信。除了该能力之外,夹层还可操作为运行时支持网络,例如,通过该运行时支持网络,各种服务能以用户-程序透明的方式来访问完整的结构。在该能力方面,夹层端点可在例如CSA配置期间充当用于其本地邻域的控制器。为了形成跨越CSA片的通道,可利用三个子通道和两个本地网络通道(其携带至夹层网络中的单个通道以及来自夹层网络中的单个通道的流量)。在一个实施例中,利用一个夹层通道,例如,一个夹层和两个本地=总共3个网络跳。
通道跨网络层的可组成性能以片间、管芯间以及结构粒度被扩展到更高级别的网络层。
图9示出根据本公开的实施例的处理元件900。在一个实施例中,操作配置寄存器919在配置(例如,映射)期间被加载,并且指定该处理(例如,计算元件)将执行的特定操作(或多个操作)。寄存器920的活动可由那个操作控制(mux 916的输出,例如,由调度器914控制)。例如,当输入数据和控制输入到达时,调度器914可调度处理元件900的一个或多个操作。控制输入缓冲器922连接至本地网络902(例如,并且本地网络902可包括如图7A中的数据路径网络和如图7B中的流控制路径网络),并且当值到达(例如,网络具有(多个)数据位和(多个)有效位)时,以该值加载该控制输入缓冲器922。控制输出缓冲器932、数据输出缓冲器934和/或数据输出缓冲器936可接收处理元件900的输出(例如,如由操作(mux 916的输出)控制)每当ALU918执行(也由mux 916的输出控制)时,状态寄存器938可被加载。控制输入缓冲器922和控制输出缓冲器932中的数据可以是单个位。mux 921(例如,操作数A)和mux 923(例如,操作数B)可作为输入的源。
例如,假设该处理(例如,计算)元件的操作是(或包括)在图3B中被称为调用挑选的操作。则处理元件900用于从数据输入缓冲器924或数据输入缓冲器926选择数据,以便例如去往数据输出缓冲器934(例如,默认情况)或数据输出缓冲器936。因此,如果从数据输入缓冲器924选择,则922中的控制位可以指示0,或者如果从数据输入缓冲器926选择,则922中的控制位可指示1。
例如,假设该处理(例如,计算)元件的操作是(或包括)在图3B中被称为调用切换的操作。处理元件900用于例如从数据输入缓冲器924(例如,默认情况)或数据输入缓冲器926将数据输出到数据输出缓冲器934或数据输出缓冲器936。因此,如果输出到数据输出缓冲器934,则922中的控制位可以指示0,或者如果输出到数据输出缓冲器936,则922中的控制位可指示1。
多个网络(例如,互连)(例如,(输入)网络902、904、906以及(输出)网络908、910、912)可连接至处理元件。连接可以是例如参照图7A和图7B所讨论的切换装置。在一个实施例中,每一个网络包括两个子网络(或网络上的两个通道),例如,一个用于图7A中的数据路径网络,一个用于图7B中的流控制(例如,回压)路径网络。作为一个示例,本地网络902(例如,建立为控制互连)被描绘为被切换(例如,连接)到控制输入缓冲器922。在该实施例中,数据路径(例如,图7A中的网络)可携带控制输入值(例如,一个或多个位)(例如,控制令牌),并且流控制路径(例如,网络)可携带来自控制输入缓冲器922的回压信号(例如,回压或无回压令牌),以便例如向上游生产方(例如,PE)指示直到回压信号指示在控制输入缓冲器922中具有用于(例如,来自上游生产方的控制输出缓冲器的)新控制输入值的空间,该新控制输入值才将被加载到(例如,发送到)控制输入缓冲器922。在一个实施例中,直到同时满足(i)上游生产方从“控制输入”缓冲器922接收到“空间可用”回压信号;以及(ii)新控制输入值从上游生产方被发送,该新控制输入值才可进入控制输入缓冲器922,例如,并且这可使处理元件900停止,直到那种情况发生(并且(多个)目标、输出缓冲器中的空间可用)。
数据输入缓冲器924和数据输入缓冲器926能以类似方式执行,例如,本地网络904(例如,被建立为数据(与控制相对照)互连)被描绘为被切换(例如,连接)到数据输入缓冲器924。在该实施例中,数据路径(例如,图7A中的网络)可携带数据输入值(例如,一个或多个位)(例如,数据流令牌),并且流控制路径(例如,网络)可携带来自数据输入缓冲器924的回压信号(例如,回压或无回压令牌),以便例如向上游生产方(例如,PE)指示直到回压信号指示在数据输入缓冲器924中具有用于(例如,来自上游生产方的数据输出缓冲器的)新数据输入值的空间,该新数据输入值才将被加载到(例如,发送到)数据输入缓冲器924。在一个实施例中,直到同时满足(i)上游生产方从“数据输入”缓冲器924接收到“空间可用”回压信号;以及(ii)新数据输入值从上游生产方被发送,该新数据输入值才可进入数据输入缓冲器924,例如,并且这可使处理元件900停止,直到那种情况发生(并且(多个)目标、输出缓冲器中的空间可用)。控制输出值和/或数据输出可在它们相应的输出缓冲器(例如,932、934、936)中被停止,直到回压信号指示在输入缓冲器中具有用于(多个)下游处理元件的可用空间。
处理元件900可停止执行,直到其操作数(例如,控制输入值以及该控制输入值的一个或多个对应的数据输入值)被接收和/或直到处理元件900的(多个)输出缓冲器中具有用于将通过执行对那些操作数的操作而产生的数据的空间。
3.3存储器接口
请求地址文件(RAF)电路(在图10中示出其简化版本)可负责执行存储器操作,并充当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可被供应有夹层网络端点,例如,该夹层网络端点将存储器访问提供给运行时服务以及远端用户级存储器访问方。
图10示出根据本公开的实施例的请求地址文件(RAF)电路1000。在一个实施例中,在配置时,已经在数据流图中的存储器加载和存储操作在寄存器1010中被指定。随后,至数据流图中的那些存储器操作的弧可连接至输入队列1022、1024和1026。来自那些存储器操作的弧因此用于离开完成缓冲器1028、1030或1032。依赖性令牌(其可以是多个单个的位)到达队列1018和1020。依赖性令牌将从队列1016离开。依赖性令牌计数器1014可以是队列的紧凑表示,并且可跟踪用于任何给定输入队列的依赖性令牌的数量。如果依赖性令牌计数器1014饱和,则没有附加的依赖性令牌可被生成用于新的存储器操作。相应地,存储器排序电路(例如,图11中的RAF)会停止调度新存储器操作,直到依赖性令牌计数器1014变成不饱和。
作为加载的示例,地址到达队列1022,调度器1012将队列1022与1010中的加载匹配。用于该加载的完成缓冲器槽按地址到达的顺序被指派。假定图中的该特定加载没有指定的依赖性,则由调度器(例如,经由存储器命令1042)将该地址和完成缓冲器槽派遣到存储器***。当结果返回到mux 1040时(示意性地示出),该结果被存储到它指定的完成缓冲器槽中(例如,由于该结果沿着通过存储器***全程都携带着目标槽)。完成缓冲器按地址到达的顺序将结果往回发送到本地网络(例如,本地网络1002、1004、1006或1008)中。
存储可以更简单,例外在于,当任何操作被派遣到存储器***之前,地址和数据两者必须到达。
3.4高速缓存
数据流图可能能够并行地生成大量(例如,字粒度)请求。因此,CSA的某些实施例将足够的带宽提供给高速缓存子***以维护CSA。可利用高度区块化的高速缓存微架构(例如,如图11中所示)。图11示出根据本公开的实施例的电路1100,该电路1100具有耦合在多个加速器片1108、1110、1112、1114与多个高速缓存区块(例如,高速缓存区块1102)之间的多个请求地址文件(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可选择性地对浮点乘法器阵列的低阶位门控。在检查浮点算术的行为时,乘法阵列的低阶位可能不会经常影响最终经舍入的积。图12示出根据本公开的实施例的分区为三个区域(结果区域、三个潜在的进位区域1202、1204、1206和门控区域)的浮点乘法器1200。在某些实施例中,进位区域可能影响结果区域,而门控区域不太可能影响结果区域。考虑g位的门控区域,最大进位可以是:
≤g-1
给定该最大进位,如果进位区域的结果小于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可具有长度设定为包括恒定字段(例如,图3B-图3C中的X和Y)的配置分组。图13示出根据本公开的实施例的具有多个处理元件(例如,PE 1302、1304、1306、1308)的加速器1300的运行中配置。一旦经配置,PE就可受制于数据流约束来执行。然而,涉及未经配置的PE的通道可由微架构禁用,从而例如防止任何未定义的操作发生。这些属性允许CSA的实施例以分布式方式初始化和执行,而一点也没有集中式控制。来自未经配置的状态,配置可完全并行地发生(例如,也许在短至200纳秒内)。然而,由于对CSA的实施例的分布式初始化,PE可能变得活跃,以便例如当整个结构被配置好之前很久就将请求发送到存储器。提取能以与配置几乎相同的方式继续进行。本地网络可被遵守,以便一次从一个目标提取数据,并且提取用于实现分布式协调的状态位。CSA可将提取安排为是非破坏性的,即,在提取的完成时,每一个可提取目标已返回到其起始状态。在该实现方式中,目标中的所有状态可被传播至以类扫描方式连至本地网络的出口寄存器。然而可通过引入寄存器传送级(RTL)的新路径或使用现有的线以便以更低开销来提供相同功能来实现原位(in-place)提取。类似的配置、层次结构提取并行地实现。
图14示出根据本公开的实施例的飞行中流水线式提取的快照1400。在提取的一些用例(诸如,检查点操作)中,只要结构吞吐量可被维持,等待时间就可以不是关注的问题。在这些情况下,提取能以流水线方式来安排。图14中示出的这种布置准许结构中的大多数继续执行,而窄区域被禁用于提取。配置和提取可被协调和组成以实现流水线式上下文切换。定性地讲,异常可与配置和提取不同,体现在与发生在指定时间不同,异常在运行时期间的任何时刻在结构中的任何地方发生。因此,在一个实施例中,异常微协议可能无法覆盖在本地网络上,并利用其自身的网络,该本地网络在运行时由用户程序占据。然而,从本质上说,异常是稀少的,并且对等待时间和带宽不敏感。因此,CSA的某些实施例利用分组交换型网络将异常携带至本地夹层站,例如,在该本地夹层站处,这些异常被继续沿服务层次结构向上被转发(例如,如图29中所示)。本地异常网络中的分组可以是极小的。在许多情况下,仅2至8位的PE标识(ID)作为完整的分组就足够了,例如因为当分组遍历异常服务层次结构时,CSA可创建唯一的异常标识符。此类方案可以是所期望的,因为它减少了在每一个PE处产生异常的面积开销。
4.编译
将以高级语言编写的程序编译到CSA上对于产业应用可能是必要的。这一节给出用于CSA的实施例的编译策略的高级概览。首先是CSA软件框架的提议,该CSA软件框架说明理想的生产质量工具链的期望属性。其次,讨论了原型编译器框架。接着讨论“控制-数据流转换”,其例如用于将普通的序列化控制流代码转换为CSA数据流汇编代码。
4.1示例生产框架。
图15示出根据本公开的实施例的用于加速器的编译工具链1500。该工具链将高级语言(诸如,C、C++和Fortran)编译为用于将被加速的特定区域的主代码(LLVM)中介表示(IR)的组合。该编译工具链的CSA特定的部分将LLVM IR作为其输入,将该IR优化并编译为CSA汇编,从而例如在等待时间不敏感的通道上增加适当的缓冲以用于性能。随后,它将CSA汇编放置并路由在硬件结构上,并配置PE和网络以用于执行。在一个实施例中,工具链支持CSA特定的编译作为及时(JIT)编译,从而并入来自实际执行的潜在运行时反馈。框架的关键设计特性之一是编译(LLVM)IR以获得CSA,而不是将较高级语言用作输入。虽然以专门为CSA设计的高级编程语言编写的程序可实现最高性能和/或能效,但是采用新的高级语言或编程框架可能由于转换现有代码基础的困难在实践中是慢的且受限的。将(LLVM)IR用作输入使广泛范围的现有程序能够潜在地在CSA上执行,从而例如不需要创建新语言,也不需要显著地修改想要在CSA上运行的新语言的前端。
4.2原型编译器
图16示出根据本公开的实施例的用于加速器的编译器1600。编译器1600最初聚焦于通过(例如,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)连接的数据流操作(指令)的图。本章节给出对该轮次的高级描述,从而描述在某些实施例中,该轮次如何在概念上处理存储器操作、分支和循环。
直线代码
图17A示出根据本公开的实施例的序列化汇编代码1702。图17B示出根据本公开的实施例的针对图17A的序列化汇编代码1702的数据流汇编代码1704。图17C示出根据本公开的实施例的针对用于加速器的图17B的数据流汇编代码1704的数据流图1706。
首先,考虑将直线序列化代码转换为数据流的简单情况。数据流转换轮次可将基本的序列化代码块(诸如,图17A中示出的代码)转换为图17B中示出的CSA汇编代码。从概念上讲,图17B中的CSA汇编表示图17C中的数据流图。在该示例中,每一条序列化指令被转换为匹配的CSA汇编。(例如,用于数据的).lic声明宣称与序列化代码中的虚拟寄存器(例如,Rdata)相对应的等待时间不敏感的通道。在实践中,对数据流转换轮次的输入可以在经编号的虚拟寄存器中。然而,为清楚起见,本节使用描述性的寄存器名称。注意,在该实施例中,加载和存储操作在CSA架构中受支持,从而相比仅支持纯数据流的架构允许多得多的程序运行。由于对编译器的序列化代码输入是SSA(单静态指派)形式的,因此对于简单的基本块,控制-数据流轮次可将每一个虚拟寄存器定义转换为在等待时间不敏感的通道上的单个值的产生。SSA形式允许对虚拟寄存器(诸如,在Rdata2中)的单个定义的多次使用。为了支持该模型,CSA汇编代码支持对同一LIC(例如,data2)的多次使用,并且模拟器隐式地创建LIC的必要的副本。序列化代码与数据流代码之间的一个关键区别在于对存储器操作的处理。图17A中的代码在概念上是串行的,这意味着在addr和addr3地址重叠的情况下,addr3的load32(ld32)应当显得在addr的st32之后发生。
分支
为了将具有多个基本块和条件语句的程序转换为数据流,编译器生成特殊的数据流操作器来替换分支。更具体地,编译器使用切换操作器以在原始的CFG中的基本块的结尾处引导传出数据,并使用挑选操作器以在基本块的开始处从适当的传入通道中选择值。作为具体的示例,考虑图18A-图18C中的代码和对应的数据流图,该代码和对应的数据流图有条件地基于以下若干输入来计算y的值:a、i、x和n。在计算了分支条件测试之后,则数据流代码使用切换操作器(例如,参见图3B-图3C)以:如果测试为0,则将通道x中的值引导到通道xF,或者如果测试为1,则将通道x中的值引导到通道xT。类似地,挑选操作器(例如,参见图3B-图3C)用于:如果测试为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的基本块分区为强控制依赖性区域。图18A示出根据本公开的实施例的C源代码1802。图18B示出根据本公开的实施例的针对图18A的C源代码1802的数据流汇编代码1804。图18C示出根据本公开的实施例的针对图18B的数据流汇编代码1804的数据流图1806。在图18A-图18C的示例中,在条件语句之前和之后的基本块是彼此控制等效的,但是在真路径和假路径中的基本块各自位于它们的控制依赖性区域中用于将CFG转换为数据流的一个正确算法用于使编译器:(1)***切换装置以对在不是控制等效的基本块之间流动的任何值补偿执行频率的失配;以及(2)在基本块的开始处***挑选装置以便正确地从任何传入值选择到基本块。生成用于这些挑选装置和切换装置的适当的控制信号可以是数据流转换的关键部分。
循环
数据流转换中的另一重要的CFG类别是用于单入口单出口循环的CFG,这是(LLVM)IR中生成的循环的常见形式。这些循环除了从循环的结尾往回到循环头部块的单个后沿以外,可以是几乎非循环的。数据流转换轮次可使用相同的高级策略来像对于分支那样转换循环,例如,数据流转换轮次在循环的结尾***切换装置以将值引导出循环(要么离开循环出口,要么围绕后沿到循环的开始),并且在循环的开始处***挑选装置以在进入循环的初始值与通过后沿到来的值之间进行选择。图19A示出根据本公开的实施例的C源代码1902。图19B示出根据本公开的实施例的针对图19A的C源代码1904的数据流汇编代码1902。图19C示出根据本公开的实施例的针对图19B的数据流汇编代码1904的数据流图1906。图19A-图19C示出用于将循环归纳变量i的值加起来的示例do-while循环的C和CSA汇编代码以及对应的数据流图。对于从概念上讲围绕循环进行循环的每一个变量(i和sum),该图具有控制这些值的流动的对应的挑选/切换装置对。注意,即便n是循环不变量,该示例也使用挑选/切换装置对使n的值围绕循环进行循环。这种n的重复使n的虚拟寄存器能够转化到LIC中,因为它匹配循环外部的n的概念性定义与循环内部对n的一次或多次使用之间的执行频率。一般而言,为了获得正确的数据流转换,当寄存器被转换到LIC中时,对于循环体内部的每一次迭代,登入(live-in)循环的寄存器将被重复一次。类似地,在循环内被更新且从循环登出(live-out)的寄存器将被消耗(例如,利用被发送出循环的单个最终值)。循环将褶皱引入到数据流转换过程中,即,用于循环的顶部处的挑选的控制以及用于循环底部的切换是偏移的。例如,如果图18A中的循环执行三个迭代并退出,则对挑选器的控制应当是0、1、1,而对切换器的控制应当是1、1、0。该控制通过以下方式实现:当函数在循环0(其在汇编中由指示.value 0和.avail 0指定)上开始时,以初始的额外0启动挑选器通道,随后将输出切换器复制到挑选器中。注意,切换器中的最后一个0将最终的0恢复到挑选器中,从而确保数据流图的最终状态匹配其初始状态。
图20A示出根据本公开的实施例的流程图2000。所描绘的流程2000包括:利用处理器的核的解码器将指令解码为经解码指令2002;利用处理器的核的执行单元执行经解码指令以执行第一操作2004;接收包括多个节点的数据流图的输入2006;将数据流图覆盖到处理器的多个处理元件以及处理器的多个处理元件之间的互连网络中,并且每一个节点被表示为多个处理元件中的数据流操作器2008;以及当相应的传入操作数集到达多个处理元件的数据流操作器中每一个时,利用互连网络和多个处理元件执行数据流图的第二操作。
图20B示出根据本公开的实施例的流程图2001。所描绘的流程包括:接收包括多个节点的数据流图的输入2003;将数据流图覆盖到处理器的多个处理元件、多个处理元件之间的数据路径网络以及多个处理元件之间的流控制路径网络中,并且每一个节点被表示为多个处理元件中的数据流操作器2005。
在一个实施例中,核将命令写入到存储器队列中,并且CSA(例如,多个处理元件)监测该存储器队列且当该命令被读取时开始执行。在一个实施例中,核执行程序的第一部分,并且CSA(例如,多个处理元件)执行该程序的第二部分。在一个实施例中,当CSA正在执行操作时,核进行其他工作。
5.CSA优势
在某些实施例中,CSA架构和微架构提供相对于路线图处理器架构和FPGA深远的能量、性能、可用性优势。在本节中,这些架构与CSA的实施例进行比较,并且强调CSA在加速并行数据流图中相对于每一者的优越性。
5.1处理器
图21示出根据本公开的实施例的吞吐量相对于每个操作的能量的图表2100。如图21中所示,小型核一般比大型核能效更高,并且在一些工作负荷中,该优势可通过更高的核计数而转换为绝对性能。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.2CSA实施例与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位结构具有更低的成本。
图22示出根据本公开的实施例的加速器片2200,该加速器片2200包括处理元件(PE)的阵列和本地配置控制器2202、2206。每一个PE、每一个网络控制器和每一个切换装置可以是可配置结构元件(CFE),例如,该CFE由CSA架构的实施例配置(例如,编程)。
CSA的实施例包括提供对异构空间结构的高效、分布式、低等待时间配置的硬件。这可以根据四项技术来实现。首先,利用硬件实体(本地配置控制器(LCC)),例如,如图22-24中所示。LCC可从(例如,虚拟)存储器取出配置信息的流。其次,配置数据路径可被包括,例如,该配置数据路径与PE结构的原生宽度一样宽,并且可被覆盖在PE结构的顶部上。第三,新控制信号可被接收到安排配置过程的PE结构中。第四,状态元件可位于(例如,在寄存器中)跟踪相邻CFE的状态的每一个可配置端点处,从而允许每一个CFE无需额外的控制信号来明确地自配置。这四个微架构特征可允许CSA配置其CFE的链。为了获得低的配置等待时间,可通过建立许多LCC和CFE链来对配置分区。在配置时,这些可独立地操作以便并行地加载结构,从而例如动态地降低等待时间。作为这些组合的结果,使用CSA架构的实施例配置的结构可以(例如,在几百纳秒内)被完全配置。在下文中,公开了CSA配置网络的实施例的各种组件的详细操作。
图23A-图23C示出根据本公开的实施例的配置数据路径网络的本地配置控制器2302。所描绘的网络包括多个多路复用器(例如,多路复用器2306、2308、2310),这些多路复用器可(例如,经由它们相应的控制信号)经配置以将(例如,来自PE的)一个或多个数据路径连接在一起。图23A示出为一些先前的操作或程序配置(例如,设置)的网络2300(例如,结构)。图23示出选通配置信号的本地配置控制器2302(例如,包括用于发送和/或接收信号的网络接口电路2304),并且本地网络被设置为允许LLC将配置数据发送到所有可配置结构元件(CFE)(例如,mux)的默认配置(例如,如图中所描绘)。图23C示出LCC,该LCC跨网络选通配置信息,从而以预定的(例如,硅定义的)序列配置CFE。在一个实施例中,当CFE被配置时,它们可立即开始操作。在另一实施例中,CFE等待开始操作,直到结构已被完全配置(例如,对于每一个本地配置控制器,由配置终止器(例如,图25中的配置终止器2504和配置终止器2508)用信号通知)。在一个实施例中,LCC通过发送特殊消息或驱动一信号来获得对网络结构的控制。随后,它(例如,在许多周期的时间段内)将配置数据选通到结构中的CFE。在这些附图中,多路复用器网络与在某些附图(例如,图6)中示出的“切换装置”类似。
本地配置控制器
图24示出根据本公开的实施例的(例如,本地)配置控制器2402。本地配置控制器(LCC)可以是负责以下各项的硬件实体:加载结构程序的(例如,在片的子集中或其他位置的)本地部分;解释这些程序部分;随后通过在各种配置线上驱动适当的协议将这些程序部分加载到结构中。;在该能力方面,LLC可以是专用序列化微控制器。
当LLC操作接收到指向代码段的指针时,它可以开始。取决于LCB微架构,(例如,存储在指针寄存器2406中的)该指针要么通过(例如,来自CSA(结构)自身内的)网络要么通过存储器***访问来到LCC。当LLC接收到此类指针时,它可任选地从用于上下文存储的结构的其部分耗尽相关状态,并随后继续进展以立即重配置该结构该LLC所负责的部分。由LCC加载的程序可以是用于结构的配置数据和用于LCC的控制命令的组合,例如,该配置数据和该控制命令被轻度编码。当LLC使程序部分流入时,它可将该程序解释为命令流,并执行适当的经编码动作以配置(例如,加载)结构。
在图22中示出用于LCC的两个不同的微架构,例如,其中之一或两者用于CSA中。第一个微架构将LCC 2202放置在存储器接口处。在这种情况下,LCC可向存储器***做出加载数据的直接请求。在第二种情况下,LCC 2206被放置在存储器网络上,在存储器网络中,LCC2206可仅间接地向存储器作出请求。在这两种情况下,LCB的逻辑操作不改变。在一个实施例中,例如由(例如,OS可见的)控制状态寄存器的集合向LCC通知要加载的程序,该控制状态寄存器的集合将用于向各个LCC通知新程序指针等。
额外的带外控制通道(例如,线)
在某些实施例中,配置依赖于2-8个额外的带外控制通道来改善配置速度,如下文所定义。例如,配置控制器2402可包括以下控制通道:例如,CFG_START控制通道2408、CFG_VALID控制通道2410以及CFG_DONE控制通道2412,每一者的示例在以下表2中讨论
表2:控制通道
一般而言,对配置信息的处理可以被留给特定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可维护表明它是否已经被配置的位(例如,参见图13)。当配置开始信号被驱动时,该位可被解除断言,随后,一旦特定的CFE已被配置,就断言该位。在一个配置协议中,CFE被布置成链,CFE并且配置状态位确定该链的拓扑。CFE可读取紧邻CFE的配置状态位。如果该相邻CFE被配置且当前CFE未被配置,则CFE和确定任何当前的配置数据针是对当前CFE的。当‘CFG_DONE’信号被断言时,CFE可设置其配置位,以便例如使上游CFE能够进行配置。作为配置过程的基本情况,断言其被配置的配置终止器(例如,在图22中的用于LCC2202的配置终止器2204或用于LCC 2206的配置终止器2208)可被包括在链的结尾处。
在CFE内部,该位可用于驱动流控制就绪信号。例如,当配置位被解除断言时,网络控制信号可被自动地箝位为防止数据流动的值,同时在PE内,没有操作或其他动作将被调度。
处理高延迟配置路径
LCC的一个实施例可例如通过许多多路复用器且利用许多加载以在长距离上驱动信号。因此,信号在短时钟周期内到达远端CFE可能是困难的。在某些实施例中,配置信号处于主(例如,CSA)时钟信号的某个分频(例如,分数)以确保配置时的数字时序规则。时钟分频可用于带外信令协议中,并且不要求对主时钟树的任何修改。
确保配置期间一致的结构行为
由于某些配置方案是分布式的且由于程序和存储器效应具有非确定性时序,因此结构的不同部分可在不同时间被配置。作为结果,CSA的某些实施例提供用于防止经配置以及未经配置的CFE之间的不一致操作的机制。总体而言,一致性被视为由CFE自身例如使用内部CFE状态所要求并维持的属性。例如,当CFE处于未经配置状态时,它可宣称其输入缓冲器为满,且其输出为无效。当被配置时,这些值将被设置为缓冲器的真状态。随着结构的足够的部分从配置中出来,这些技术可准许该结构开始操作。例如,如果长等待时间存储器请求在早期被发布,则这具有进一步降低上下文切换等待时间的效果。
可变宽度配置
不同的CFE可具有不同的配置字宽度。对于较小的CFE配置字,实现器可通过跨网络线公平地指派CFE配置加载来使延迟平衡。为了平衡在网络线上的加载,一个选项是将配置位指派给网络线的不同部分以限制任何一根线上的净延迟。宽数据字可通过使用串行化/解串行化技术来处理。这些决策可逐结构地采用以优化特定CSA(例如,结构)的行为。网络控制器(例如,网络控制器2210和网络控制器2212中的一个或多个)可与CSA(例如,结构)的每一个域(例如,子集)通信,以便例如将配置信息发送至一个或多个LCC。
7.2用于CSA的低等待时间配置以及用于CSA的配置数据的及时取出的微架构
CSA的实施例可以是对用户应用进行加速的高能效且高性能手段。当考虑程序(例如,程序的数据流图)是否可由加速器成功地加速时,用于配置加速器的时间以及用于运行程序的时间两者可被考虑。如果运行时间为短,则配置时间在确定成功的加速时将发挥大的作用。因此,为了使可加速程序的域最大化,在一些实施例中,使配置时间尽可能短。一个或多个配置高速缓存可被包括在CSA中,例如使得高带宽、低等待时间存储实现快速重配置。接下来是对配置高速缓存的若干实施例的描述。
在一个实施例中,在配置期间,配置硬件(例如,LCC)可任选地访问配置高速缓存以获得新配置信息。配置高速缓存要么可操作为传统的基于地址的高速缓存,要么可处于OS管理的模式,在OS管理的模式中,配置被存储在本地地址空间中,并且通过参引那个地址空间被寻址。如果配置状态位于高速缓存中,则在某些实施例中,没有对后备存储的请求将被进行。在某些实施例中,该配置高速缓存与存储器层次结构中的任何(例如,较低级)共享高速缓存分开。
图25示出根据本公开的实施例的加速器片2500,该加速器片2500包括处理元件的阵列、配置高速缓存(例如,2518或2520)和本地配置控制器(例如,2502或2506)。在一个实施例中,配置高速缓存2514与本地配置控制器2502位于一起。在一个实施例中,配置高速缓存2518位于本地配置控制器2506的配置域中,例如,第一域结束于配置终止器2504,并且第二域结束于配置终止器2508。配置高速缓存可允许本地配置控制器在配置期间可参引配置高速缓存,以便例如希望以比参引存储器更低的等待时间来获得配置状态。配置高速缓存(存储)要么可以是专用的,要么可作为结构内存储元件(例如,本地高速缓存2516)的配置模式来访问。
高速缓存模式
1.需求型高速缓存(Demand Caching)-在该模式中,配置高速缓存作为真高速缓存进行操作。配置控制器发布基于地址的请求,该基于地址的请求被对照着高速缓存中的标签来校验。未命中可被加载到高速缓存中,并且随后可在未来的重新编程期间被重新参引。
2.结构内存储(暂存器)高速缓存——在该模式中,配置高速缓存接收对其自身的小地址空间而不是主机的较大的地址空间中的配置序列的参引。这可改善存储器密度,因为高速缓存的用于存储标签的部分可替代地用于存储配置。
在某些实施例中,配置高速缓存可具有(例如,通过外部指示或内部指示)被预加载到其中的配置数据。这可允许用于加载程序的等待时间的减少。本文中的某些实施例提供至配置高速缓存的结构,该接口例如即便在配置已经正在结构中运行时也准许将新配置状态加载到高速缓存中。该加载的发起可从内部或外部源发生。预加载机制的实施例通过去除来自配置路径的高速缓存加载的等待时间来进一步减小等待时间。
预取模式
1.显式预取——以新命令ConfigurationCachePrefetch(配置高速缓存预取)来扩充配置路径。与对结构编程不同,该命令简单地使相关程序配置加载到配置高速缓存中而无需对结构编程。由于该机制背负在现有的配置基础结构上,因此它既在结构内被暴露,又在例如访问存储器空间的核和其他实体外部被暴露。
2.隐式预取——全局配置控制器可维护预取预测器,并使用它来(例如,以自动化方式)发起对配置高速缓存的显式预取。
7.3用于响应于异常对CSA进行快速重配置的硬件
CSA(例如,空间结构)的某些实施例包括大量指令和配置状态,例如,该配置状态在CSA的操作期间很大程度上是静态的。因此,配置状态可能易受软错误影响。对这些软错误的快速且无错的恢复对于空间***的长期可靠性和性能可能是关键的。
本文中的某些实施例提供快速配置恢复循环,例如,在该快速配置恢复循环中,配置错误被检测,并且结构的多个部分立即被重配置。本文中的某些实施例包括例如具有可靠性、可用性和耐用性(RAS)重编程特征的配置控制器。CSA的某些实施例包括用于在空间结构内进行高速配置、错误报告和奇偶校验的电路。使用这三个特征以及可任选的配置高速缓存的组合,配置/异常处理电路可从配置中的软错误恢复。当被检测到时,软错误可被传送到配置高速缓存,该配置高速缓存发起对结构(例如,结构的那个部分)的立即重配置。某些实施例提供专用重配置电路,例如,该专用重配置电路比将被间接地实现在结构中的任何解决方案快。在某些实施例中,位于一起的异常和配置电路协作,以便在配置错误检测时对结构重新加载。
图26示出根据本公开的实施例的加速器片2600,该加速器片2600包括处理元件的阵列以及具有重配置电路2618、2622的配置和异常处理控制器2602、2606。在一个实施例中,当PE通过其RAS特征检测到配置错误时,它通过其异常生成器将(例如,配置错误或重配置错误)消息发送到配置和异常处理控制器(例如,2602或2606)。在接收到该消息时,配置和异常处理控制器(例如,2602或2606)启动位于一起的重配置电路(例如,分别为2618或2622)以重新加载配置状态。配置微架构继续进行并(例如,仅)重新加载配置状态,并且在某些实施例中,仅重新加载用于PE的报告RAS错误的配置状态。在重配置完成后,结构可恢复正常操作。为了减少等待时间,由配置和异常处理控制器(例如,2602或2606)使用的配置状态可从配置高速缓存源送。作为配置或重配置过程的基本情况,断言其被配置(或重配置)的配置终止器(例如,图26中用于配置和异常处理控制器2602的配置终止器2604或用于配置和异常处理控制器2606的配置终止器2608)可被包括在链的结尾处。
图27示出根据本公开的实施例的重配置电路2718。重配置电路2718包括用于存储配置状态(或指向该配置状态的指针)的配置状态寄存器2720。
7.4用于对CSA进行的结构发起的重配置的硬件
针对CSA(例如,空间阵列)的应用的一些部分可被不频繁地运行,或者相对于程序的其他部分可以是互斥的。为了节约面积,为了改善性能和/或减小功率,在程序数据流图的若干不同部分之间对空间结构的多个部分进行时间复用可能是有用的。本文中的某些实施例包括接口,通过该接口,CSA(例如,经由空间程序)可请求结构的那个部分被重编程。这可使CSA能够根据动态控制流来动态地改变其自身。本文中的某些实施例可允许结构发起的重配置(例如,重编程)。本文中的某些实施例提供用于从结构内触发配置的接口的集合。在一些实施例中,PE基于程序数据流图中的某个决策发布重配置请求。该请求可行进通过网络到我们的新配置接口,在我们的新配置接口处,该请求触发重配置。一旦重配置完成,通知该完成的消息可以可任选地被返回。CSA的某些实施例因此提供程序(例如,数据流图)引导的重配置能力。
图28示出根据本公开的实施例的加速器片2800,该加速器片2800包括处理元件的阵列以及具有重配置电路2818的配置和异常处理控制器2806。在此,结构的部分将对(重)配置的请求发布至例如配置和异常处理控制器2806和/或重配置电路2818的配置域。该域(重)配置其自身,并且当请求已被满足时,配置和异常处理控制器2806和/或重配置电路2818将响应发布至结构,以向该结构通知(重)配置完成。在一个实施例中,配置和异常处理控制器2806和/或重配置电路2818在(重)配置正在进行期间禁用通信,因此在操作期间,程序没有一致性问题。
配置模式
通过地址配置——在该模式中,结构做出从特定地址加载配置数据的直接请求。
通过参引配置——在该模式中,结构例如通过预定义的参引ID做出加载新配置的请求。这可简化对要加载的代码的确定,因为该代码的位置已被抽象。
配置多个域
CSA可包括较高级配置控制器以支持多播机制,从而(例如,经由虚线框所指示的网络)将配置请求播到多个(例如,分布式或本地)配置控制器。这可使单个配置请求跨结构的多个较大部分被复制,从而例如触发宽的重配置。
7.5异常聚合器
CSA的某些实施例也会经历异常(例如,异常条件),例如,浮点下溢(underflow)。当这些条件发生时,特殊的处理程序可被调用,以便要么修正程序,要么终止该程序。本文中的某些实施例提供用于在空间结构中处理异常的***级架构。由于某些空间结构强调面积效率,本文中的实施例在提供通用异常机制的同时使总面积最小化。本文中的某些实施例提供用信号通知发生在CSA(例如,空间阵列)中的异常条件的低面积手段。本文中的某些实施例提供用于传递此类异常以及PE级异常语义的接口和信令协议。本文中的某些实施例是专用异常处理能力,并且例如不要求由编程者进行的显式处理。
CSA异常架构的一个实施例由四个部分组成,例如在图29-图30中示出。这些部分可被布置在层次结构中,在该层次结构中,异常从生产方流出,并最终向上流到片级异常聚合器(例如,处理程序),该片级异常聚合器可与例如核的异常维护器会和。这四个部分可以是:
1.PE异常生成器
2.本地异常网络
3.夹层异常聚合器
4.片级异常聚合器
图29示出根据本公开的实施例的加速器片2900,该加速器片2900包括处理元件的阵列以及耦合至片级异常聚合器2904的夹层异常聚合器2902。图30示出根据本公开的实施例的具有异常生成器3044的处理元件3000。
PE异常生成器
处理元件3000可包括来自图9的处理元件900,例如,类似的编号是类似的组件,例如,本地网络902和本地网络3002。附加的网络3013(例如,通道)可以是异常网络。PE可实现至异常网络(例如,图30上的异常网络3013(例如,通道))的接口。例如,图30示出此类接口的微架构,其中,PE具有异常生成器3044(例如,发起异常有限状态机(FSM)3040以将异常分组(例如,BOXID 3042)向外选通到异常网络上)。BOXID 3042可以是用于本地异常网络内的异常产生实体(例如,PE或块)的唯一标识符。当异常被检测时,异常生成器3044感测异常网络,并且当发现网络是空闲的时向外选通BOXID。异常可由许多条件导致,这些条件例如但不限于算术错误、对状态的失败的ECC校验等,然而,情况也可能是这样:利用支持像断点这样的构造的想法,引入异常数据流操作。
异常的发起可以要么通过编程者提供的指令显式地发生,要么当强化的错误条件(例如,浮点下溢)被检测到时隐式地发生。在异常发生时,PE 3000可进入等待状态,在该等待状态中,PE 3000等待由例如该PE 3000外部的最终异常处理程序来维护。异常分组的内容取决于特定PE的实现方式,如下文所述。
本地异常网络
(例如,本地)异常网络将异常分组从PE 3000引导至夹层异常网络。异常网络(例如,3013)可以是串行分组交换型网络,该串行分组交换型网络由例如以例如用于PE的子集的环形或树形拓扑组织的(例如,单个控制线)和一个或多个数据线组成。每一个PE在(例如,本地)异常网络中可具有(例如,环形)站,例如,在该站处,PE可仲裁以将消息注入到异常网络中。
需要注入异常分组的PE端点可观察它们的本地异常网络出口点。如果控制信号指示忙碌,则PE将等待开始注入该PE的分组。如果网络不繁忙,即,下游站没有分组要转发,则PE将继续开始注入。
网络分组可以具有可变或固定长度。每一个分组能以标识该分组的源PE的固定长度的头部字段开始。该头部字段随后可以是包含信息的可变数量的PE特定的字段,这些信息例如包括错误代码、数据值或其他有用的状态信息。
夹层异常聚合器
夹层异常聚合器2904负责将本地异常网络组装为较大的分组,并且将这些较大的分组发送到片级异常聚合器2902。夹层异常聚合器2904可利用本地异常分组自身的唯一ID来预先考虑该本地异常分组,从而例如确保异常消息是明确的。夹层异常聚合器2904可对接至夹层网络中的特殊的仅用于异常的虚拟通道,从而例如确保异常无死锁。
夹层异常聚合器2904也可能能够直接直接维护异常的某些类别。例如,使用在夹层网络站本地的高速缓冲,来自结构的配置请求可从夹层网络向外分发。
片级异常聚合器
异常***的最终级是片级异常聚合器2902。片级异常聚合器2902负责从各种夹层级异常聚合器(例如,2904)收集异常,并将这些异常转发到适当的维护硬件(例如,核)。由此,片级异常聚合器2902可包括一些用于将特定的消息与处理程序例程相关联的内部表和控制器。这些表可被直接索引或能以小型状态机进行索引,从而引导特定的异常。
像夹层异常聚合器那样,片级异常聚合器可维护一些异常请求。例如,它可以响应于特定的异常而发起对PE结构的大部分的重新编程。
7.6异常控制器
CSA的某些实施例包括用于从结构提取数据的(多个)提取控制器。下文讨论如何快速实现该提取以及如何使数据提取的资源开销最小化的实施例。数据提取可用于诸如异常处理和上下文切换之类的关键任务。本文中的某些实施例通过引入允许具有可变以及动态可变数量的要提取的状态的可提取结构元件(EFE)(例如,PE、网络控制器和/或切换装置)的特征来从异构空间结构提取数据。
CSA的实施例包括分布式数据提取协议和微架构来支持此协议。CSA的某些实施例包括多个本地提取控制器(LEC),这些LEC使用控制信号的(例如,小)集合和结构提供的网络的组合来使程序数据从它们在空间结构中的本地区域中流出。状态元件可在每一个可提取结构元件(EFE)处被使用以形成提取链,从而例如允许各个EFE自提取而无需全局寻址。
CSA的实施例不使用本地网络来提取程序数据。CSA的实施例包括例如用于形成提取链的特定硬件支持(例如,提取控制器),并且不依赖于软件(例如,以增加提取时间为代价)动态地建立这些链。CSA的实施例不纯粹是分组交换型的,并且确实包括额外的带外控制线(例如,控制不通过数据路径被发送,从而要求额外的周期来选通此信息并使该信息重新串行化)CSA的实施例通过固定提取排序并通过提供显式的带外控制来减小提取等待时间(例如,减小至少一半),同时不显著地增加网络复杂度。
CSA的实施例不将串行机制用于其中使用类JTAG协议从结构逐位地流送数据的数据提取。CSA的实施例利用粗粒度结构方式。在某些实施例中,将一些控制线或状态元件加到面向64位或32位的CSA结构相对于将那些相同的控制机制加到4位或6位结构具有更低的成本。
图31示出根据本公开的实施例的加速器片3100,该加速器片3100包括处理元件的阵列和本地提取控制器3102、3106。每一个PE、每一个网络控制器和每一个切换装置可以是可提取结构元件(EFE),例如,该EFE由CSA架构的实施例配置(例如,编程)。
CSA的实施例包括提供对异构空间结构的高效、分布式、低等待时间提取的硬件。这可以根据四项技术来实现。首先,利用硬件实体(本地提取控制器(LEC)),例如,如图31-33中所示。LEC可接受来自主机(例如,处理器核)的命令,例如从空间阵列提取数据流,并将该数据往回写入到虚拟存储器供由该主机检查。其次,提取数据路径可被包括,例如,该提取数据路径与PE结构的原生宽度一样宽,并且可被覆盖在PE结构的顶部上。第三,新控制信号可被接收到安排提取过程的PE结构中。第四,状态元件可位于(例如,在寄存器中)跟踪相邻EFE的状态的每一个可配置端点处,从而允许每一个EFE无需额外的控制信号来明确地输出其状态。这四个微架构特征可允许CSA从EFE的链提取数据。为了获得低的数据提取等待时间,某些实施例可通过将多个(例如,许多)LEC和EFE链包括在结构中来将提取问题分区。在提取时,这些链可独立地操作以便并行地从结构提取数据,从而例如动态地降低等待时间。作为这些组合的结果,CSA可(例如,在几百纳秒内)执行完整的状态转储。
图32A-图32C示出根据本公开的实施例的配置数据路径网络的本地提取控制器3202。所描绘的网络包括多个多路复用器(例如,多路复用器3206、3208、3210),这些多路复用器可(例如,经由它们相应的控制信号)经配置以将(例如,来自PE的)一个或多个数据路径连接在一起。图32A示出为一些先前的操作程序配置(例如,设置)的网络3200(例如,结构)。图32B示出选通提取信号的本地提取控制器3202(例如,包括用于发送和/或接收信号的网络接口电路3204),并且由LEC控制的所有PE进入提取模式。提取链中的最后一个PE(或提取终止器)可主控提取通道(例如,总线),并且根据(1)来自LEC的信号或(2)内部(例如,从PE)产生的信号发送数据。一旦被完成,PE可设置其完成标记,,从而例如使下一个PE能够提取其数据。图32示出最远的PE已完成提取过程,并且作为结果,该最远的PE已设置其一个或多个提取状态位,例如,该一个或多个提取状态位使mux摇摆到相邻网络以使下一个PE能够开始提取过程。被提取的PE可恢复正常操作。在一些实施例中,PE可保持禁用,直到其他动作被采取。在这些附图中,多路复用器网络与在某些附图(例如,图6)中示出的“切换装置”类似。
下一节描述提取网络的实施例的各种组件的操作
本地提取控制器
图33示出根据本公开的实施例的提取控制器3302。本地提取控制器(LEC)可以是负责接受提取命令、协调EFE的提取过程和/或将被提取数据存储到例如虚拟存储器的硬件实体。在该能力方面,LEC可以是专用序列化微控制器。
当LEC接收到指向结构状态将被写入的缓冲器(例如,在虚拟存储器中)的指针以及可任选地接收到控制结构中的多少将被提取的命令时,LEC操作可以开始。取决于LEC微架构,(例如,存储在指针寄存器3304中的)该指针可以要么通过网络要么通过存储器***访问来到LEC。当LEC接收到此类指针(例如,命令)时,它继续从结构中它所负责的部分提取状态。LEC可将该被提取的数据流送出结构而流送到由外部调用器提供的缓冲器中。
在图31中示出用于LEC的两种不同的微架构。第一个将LEC 3102放置在存储器接口处。在这种情况下,LEC可向存储器***做出写入被提取的数据的直接请求。在第二种情况下,LEC 3106被放置在存储器网络上,在存储器网络中,LCC 3106可仅间接地向存储器作出请求。在这两种情况下,LEC的逻辑操作可以不改变。在一个实施例中,例如由(例如,OS可见的)控制状态寄存器的集合向LEC通知要从结构提取数据的期望,该控制状态寄存器的集合将用于向各个LEC通知新命令。
额外的带外控制通道(例如,线)
在某些实施例中,提取依赖于2-8个额外的带外信号来改善配置速度,如下文所定义。由LEC驱动的信号可被标记为LEC。由EFE(例如,PE)驱动的信号可被标记为EFE。配置控制器3302可包括以下控制通道,例如,LEC_EXTRACT控制通道3406、LEC_START控制通道3308、LEC_STROBE控制通道3310和EFE_COMPLETE控制通道3312,每一者的示例在以下表3中讨论。
表3:提取通道
一般而言,对提取的处理可以被留给特定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的网络可观察该信号,并且也调整其状态以处理该转变。作为提取过程的基本情况,断言提取完成的提取终止器(例如,在图22中的用于LEC 3102的提取终止器3104或用于LEC 3106的提取终止器3108)可被包括在链的结尾处。
在EFE内部,该位可用于驱动流控制就绪信号。例如,当提取位被解除断言时,网络控制信号可被自动地箝位为防止数据流动的值,同时在PE内,没有操作或动作将被调度。
处理高延迟路径
LEC的一个实施例可例如通过许多多路复用器且利用许多加载以在长距离上驱动信号。因此,信号在短时钟周期内到达远端EFE可能是困难的。在某些实施例中,提取信号处于主(例如,CSA)时钟信号的某个分频(例如,分数)以确保提取时的数字时序规则。时钟分频可用于带外信令协议中,并且不要求对主时钟树的任何修改。
确保提取期间一致的结构行为
由于某些提取方案是分布式的且由于程序和存储器效应具有非确定性时序,因此结构的不同成员可在不同时间处于提取状态。当LEC_EXTRACT被驱动时,所有网络流控制信号可被驱动为逻辑低,例如,由此冻结结构的特定段的操作。
提取过程可以是非破坏性的。因此,一旦提取已完成,PE的集合可认为是运行的。对提取协议的扩展可允许PE在提取后可任选地被禁用。或者,在实施例中,在提取过程期间开始配置将具有类似效果。
单个PE提取
在一些情况下,提取单个PE可能是权宜之计。在该情况下,作为提取过程的开始的部分,可任选的地址信号可被驱动。这可使该PE针对将被直接启用的提取。一旦该PE已被提取,提取过程就伴随着LEC_EXTRACT信号的降低而终止。以此方式,单个PE可例如由本地提取控制器选择性地提取。
处理提取回压
在其中LEC将被提取的数据写入到存储器(例如,对于后处理,例如,在软件中)的实施例中,它可能受制于有限的存储器带宽。在LEC耗尽其缓冲容量或预期它将耗尽其缓冲容量的情况下,该LEC可停止选通LEC_STROBE,直到缓冲问题已被解决。
注意,在某些附图(例如,图22、25、26、28、29和31中),示意性地示出通信。在某些实施例中,那些通信可通过(例如,互连)网络发生。
7.7流程图
图34示出根据本公开的实施例的流程图3400。所描绘的流程3400包括:利用处理器的核的解码器将指令解码为经解码指令3402;利用所述处理器的所述核的执行单元执行所述经解码指令以执行第一操作3404;接收包括多个节点的数据流图的输入3406;将所述数据流图覆盖到所述处理器的处理元件的阵列中,并且每一个节点被表示为所述处理元件的阵列中的数据流操作器3408;以及当传入操作数集到达所述处理元件的阵列处时,利用所述处理元件的阵列执行所述数据流图的第二操作3410。
图35示出根据本公开的实施例的流程图3500。所描绘的流程3500包括:利用处理器的核的解码器将指令解码为经解码指令3502;利用所述处理器的所述核的执行单元执行所述经解码指令以执行第一操作3504;接收包括多个节点的数据流图的输入3506;将所述数据流图覆盖到所述处理器的多个处理元件以及所述处理器的所述多个处理元件之间的互连网络中,并且每一个节点被表示为所述多个处理元件中的数据流操作器3508;以及当传入操作数集到达所述多个处理元件时,利用所述互连网络和所述多个处理元件执行所述数据流图的第二操作3510。
8.总结
ExaFLOP规模的超级计算可能是高性能计算中的挑战,该调整可能无法由常规的冯·诺依曼架构满足。为了实现ExaFLOP,CSA的实施例提供异构空间阵列,该异构空间阵列针对(例如,编译器产生的)数据流图的直接执行。除了布置CSA的实施例的架构原理之外,上文还描述并评估了CSA的实施例,这些CSA的实施例显示出相比现有产品的高10x(10倍)的性能和能量。编译器生成的代码相比路线图架构可具有显著的性能和能量增益。作为异构的参数化架构,CSA的实施例可易于适配于所有计算用例。例如,CSA的移动版本可调整为32位,而聚焦机器学习的阵列的特征可以是显著数量的向量化8位乘法单元。CSA的实施例的主要优势是相对于从超级计算和数据中心到物联网的所有形式的计算是高性能、极其高能效且具有特性的。
在一个实施例中,一种处理器包括:核,所述核具有解码器和执行单元,所述解码器用于将指令解码为经解码指令,所述执行单元用于执行所述经解码指令以执行第一操作;多个处理元件;以及互连网络,在所述多个处理元件之间,所述互连网络用于接收包括多个节点的数据流图的输入,其中,所述数据流图用于被覆盖到所述互连网络和所述多个处理元件中,并且每一个节点被表示为所述多个处理元件中的数据流操作器,并且所述多个处理元件用于当相应的传入操作数集到达所述多个处理元件的数据流操作器中的每一个时执行第二操作。当来自下游处理元件的回压信号指示所述下游处理元件中的存储不可用于所述多个处理元件中的一处理元件时,该处理元件可停止执行。所述处理器可包括流控制路径网络,所述流控制路径网络用于根据所述数据流图携带所述回压信号。数据流令牌可使来自接收所述数据流令牌的数据流操作器的输出被发送到所述多个处理元件中的特定处理元件的输入缓冲器。所述第二操作可包括存储器访问,并且所述多个处理元件包括存储器访问数据流操作器,所述存储器访问数据流操作器用于直到从逻辑上在先的数据流操作器接收到存储器依赖性令牌才执行所述存储器访问。所述多个处理元件可包括第一类型的处理元件以及第二不同类型的处理元件。
在另一实施例中,一种方法包括:利用处理器的核的解码器将指令解码为经解码指令;利用所述处理器的所述核的执行单元执行所述经解码指令以执行第一操作;接收包括多个节点的数据流图的输入;将所述数据流图覆盖到所述处理器的多个处理元件以及所述处理器的所述多个处理元件之间的互连网络中,并且每一个节点被表示为所述多个处理元件中的数据流操作器;以及当相应的传入操作数集到达所述多个处理元件的数据流操作器中每一个时,利用所述互连网络和所述多个处理元件执行所述数据流图的第二操作。所述方法可包括:当来自下游处理元件的回压信号指示所述下游处理元件中的存储不可用于所述多个处理元件中的一处理元件的输出时,停止由该处理元件进行的执行。所述方法可包括:根据所述数据流图,在流控制路径上发送所述回压信号。数据流令牌可使来自接收所述数据流令牌的数据流操作器的输出被发送到所述多个处理元件中的特定处理元件的输入缓冲器。所述方法可包括:直到从逻辑上在先的数据流操作器接收到存储器依赖性令牌,才执行存储访问,其中,所述第二操作包括所述存储器访问,并且所述多个处理元件包括存储器访问数据流操作器。所述方法可包括:提供所述多个处理元件中的第一类型的处理元件以及第二不同类型的处理元件。
在又一实施例中,一种装置包括:在多个处理元件之间的数据路径网络;以及在所述多个处理元件之间的流控制路径网络,其中,所述数据路径网络和所述流控制路径网络用于接收包括多个节点的数据流图的输入,所述数据流图用于被覆盖到所述数据路径网络、所述流控制路径网络和所述多个处理元件中,并且每一个节点被表示成所述多个处理元件中的数据流操作器,并且所述多个处理元件用于当相应的传入操作数集到达所述多个处理元件的数据流操作器中的每一个处时执行第二操作。所述流控制路径网络可根据所述数据流图将回压信号携带到多个数据流操作器。在所述数据路径网络上被发送到数据流操作器的数据流令牌可使来自所述数据流操作器的输出在所述数据路径网络上被发送到所述多个处理元件中的特定处理元件的输入缓冲器。所述数据路径网络可以是用于根据所述所述数据流图来将相应的输入操作数集携带到数据流操作器中的每一个的静态电路交换型网络。所述流控制路径网络可根据所述数据流图从下游处理元件传输回压信号以指示所述下游处理元件中的存储不可用于所述处理元件的输出。所述数据路径网络的至少一个数据路径和所述流控制路径网络的至少一个流控制路径可形成具有回压控制的通道化电路。所述流控制路径网络可在所述多个处理元件中的至少两个处理元件处串行地流水线化。
在另一实施例中,一种方法包括:接收包括多个节点的数据流图的输入;将所述数据流图覆盖到处理器的多个处理元件、所述多个处理元件之间的数据路径网络以及所述多个处理元件之间的流控制路径网络中,并且每一个节点被表示为所述多个处理元件中的数据流操作器。所述方法可包括:根据所述数据流图,利用所述流控制路径网络将回压信号携带到多个数据流操作器。所述方法可包括:在所述数据路径网络上将数据流令牌发送到数据流操作器,以使来自所述数据流操作器的输出在所述数据路径网络上被发送到所述多个处理元件中的特定处理元件的输入缓冲器。所述方法可包括:根据所述数据流图设置所述数据路径网络的多个切换装置和/或所述流控制路径网络的多个切换装置以将相应的输入操作数集携带到数据流操作器中的每一个,其中,所述数据路径网络是静态电路交换型网络。所述方法可包括:根据所述数据流图,利用所述流控制路径网络从下游处理元件传输回压信号,以指示所述下游处理元件中的存储不可用于所述处理元件的输出。所述方法可包括:利用所述数据路径网络的至少一个数据路径和所述流控制路径网络的至少一个流控制路径来形成具有回压控制的通道化电路。
在又一实施例中,一种处理器包括:核,所述核具有解码器和执行单元,所述解码器用于将指令解码为经解码指令,所述执行单元用于执行所述经解码指令以执行第一操作;多个处理元件;以及网络装置,在所述多个处理元件之间,所述网络装置用于接收包括多个节点的数据流图的输入,其中,所述数据流图用于被覆盖到所述网络装置和所述多个处理元件中,并且每一个节点被表示为所述多个处理元件中的数据流操作器,并且所述多个处理元件用于当相应的传入操作数集到达所述多个处理元件的数据流操作器中的每一个时执行第二操作。
在另一实施例中,一种设备包括:在多个处理元件之间的数据路径装置;以及在所述多个处理元件之间的流控制路径装置,其中,所述数据路径装置和所述流控制路径装置用于接收包括多个节点的数据流图的输入,所述数据流图用于被覆盖到所述数据路径装置、所述流控制路径装置和所述多个处理元件中,并且每一个节点被表示成所述多个处理元件中的数据流操作器,并且所述多个处理元件用于当相应的传入操作数集到达所述多个处理元件的数据流操作器中的每一个处时执行第二操作。
在一个实施例中,一种处理器包括:核,所述核具有解码器和执行单元,所述解码器用于将指令解码为经解码指令,所述执行单元用于执行所述经解码指令以执行第一操作;以及处理元件的阵列,所述处理元件的阵列用于接收包括多个节点的数据流图的输入,其中,所述数据流图用于被覆盖到所述处理元件的阵列,并且每一个节点被表示为所述处理元件的阵列中的数据流操作器,并且所述处理元件的阵列用于当传入操作数集到达所述处理元件的阵列时执行第二操作。所述处理元件的阵列可以直到传入操作数集到达所述处理元件的阵列且所述处理元件的阵列中的存储可用于所述第二操作的输出时才执行所述第二操作。所述处理元件的阵列可包括用于将数据流令牌和控制令牌携带到多个数据流操作器的网络(或(多个)通道)。所述第二操作可包括存储器访问,并且所述处理元件的阵列可包括存储器访问数据流操作器,所述存储器访问数据流操作器用于直到从逻辑上在先的数据流操作器接收到存储器依赖性令牌才执行所述存储器访问。每一个处理元件可仅执行所述数据流图的一个或两个操作。
在另一实施例中,一种方法包括:利用处理器的核的解码器将指令解码为经解码指令;利用所述处理器的所述核的执行单元执行所述经解码指令以执行第一操作;接收包括多个节点的数据流图的输入;将所述数据流图覆盖到所述处理器的处理元件的阵列中,并且每一个节点被表示为所述处理元件的阵列中的数据流操作器;以及当传入操作数集到达所述处理元件的阵列处时,利用所述处理元件的阵列执行所述数据流图的第二操作。所述处理元件的阵列可以直到传入操作数集到达所述处理元件的阵列且所述处理元件的阵列中的存储可用于所述第二操作的输出时才执行所述第二操作。所述处理元件的阵列可包括将数据流令牌和控制令牌携带到多个数据流操作器的网络。所述第二操作可包括存储器访问,并且所述处理元件的阵列包括存储器访问数据流操作器,所述存储器访问数据流操作器用于直到从逻辑上在先的数据流操作器接收到存储器依赖性令牌才执行所述存储器访问。每一个处理元件可仅执行所述数据流图的一个或两个操作。
在又一实施例中,一种非暂态机器可读介质存储有代码,所述代码当由机器执行时使所述机器执行方法,所述方法包括:利用处理器的核的解码器将指令解码为经解码指令;利用所述处理器的所述核的执行单元执行所述经解码指令以执行第一操作;接收包括多个节点的数据流图的输入;将所述数据流图覆盖到所述处理器的处理元件的阵列中,并且每一个节点被表示为所述处理元件的阵列中的数据流操作器;以及当传入操作数集到达所述处理元件的阵列处时,利用所述处理元件的阵列执行所述数据流图的第二操作。所述处理元件的阵列可以直到传入操作数集到达所述处理元件的阵列且所述处理元件的阵列中的存储可用于所述第二操作的输出时才执行所述第二操作。所述处理元件的阵列可包括将数据流令牌和控制令牌携带到多个数据流操作器的网络。所述第二操作可包括存储器访问,并且所述处理元件的阵列包括存储器访问数据流操作器,所述存储器访问数据流操作器用于直到从逻辑上在先的数据流操作器接收到存储器依赖性令牌才执行所述存储器访问。每一个处理元件可仅执行所述数据流图的一个或两个操作。
在另一实施例中,一种处理器包括:核,所述核具有解码器和执行单元,所述解码器用于将指令解码为经解码指令,所述执行单元用于执行所述经解码指令以执行第一操作;以及用于接收包括多个节点的数据流图的输入的装置,其中,所述数据流图用于被覆盖到所述装置,并且每一个节点被表示为所述装置中的数据流操作器,并且所述装置用于当传入操作数集到达所述装置时执行第二操作。
在一个实施例中,处理器包括:核,所述核具有解码器和执行单元,所述解码器用于将指令解码为经解码指令,所述执行单元用于执行所述经解码指令以执行第一操作;多个处理元件;以及互连网络,在所述多个处理元件之间,所述互连网络用于接收包括多个节点的数据流图的输入,其中,所述数据流图用于被覆盖到所述互连网络和所述多个处理元件中,并且每一个节点被表示为所述多个处理元件中的数据流操作器,并且所述多个处理元件用于当传入操作数集到达所述多个处理元件时执行第二操作。所述处理器可进一步包括多个配置控制器,每一个配置控制器耦合到所述多个处理元件的相应子集,并且每一个配置控制器用于从存储加载配置信息并且引起所述多个处理元件的相应子集根据所述配置信息耦合。所述处理器可包括多个配置高速缓存,每一个配置控制器耦合至相应的配置高速缓存以取出用于所述多个处理元件的相应子集的配置信息。由所述执行单元执行的所述第一操作可以将配置信息预取到所述多个配置高速缓存中的每一个中。所述多个配置控制器中的每一个可包括重配置电路,所述重配置电路用于:在从所述多个处理元件的相应子集中的至少一个处理元件接收到配置错误消息时引起对所述至少一个处理元件的重配置。所述多个配置控制器中的每一个可包括重配置电路,所述重配置电路用于:在接收到重配置请求消息时引起对所述多个处理元件的相应子集的重配置;以及禁用与所述多个处理元件的相应子集的通信,直到所述重配置完成。所述处理器可包括多个异常聚合器,并且每一个异常聚合器耦合至所述多个处理元件的相应子集,从便从所述多个处理元件的相应子集收集异常并将所述异常转发至所述核以用于维护。所述处理器可包括多个提取控制器,每一个提取控制器耦合至所述多个处理元件的相应子集,并且每一个提取控制器用于使来自所述多个处理元件的相应子集的状态数据被保存到存储器。
在另一实施例中,一种方法包括:利用处理器的核的解码器将指令解码为经解码指令;利用所述处理器的所述核的执行单元执行所述经解码指令以执行第一操作;接收包括多个节点的数据流图的输入;将所述数据流图覆盖到所述处理器的多个处理元件以及所述处理器的所述多个处理元件之间的互连网络中,并且每一个节点被表示为所述多个处理元件中的数据流操作器;以及当传入操作数集到达所述多个处理元件时,利用所述互连网络和所述多个处理元件执行所述数据流图的第二操作。所述方法可包括:从存储加载用于所述多个处理元件的相应子集的配置信息;以及根据所述配置信息引起针对所述多个处理元件的每一个相应子集的耦合。所述方法可包括:从多个配置高速缓存中的相应配置高速缓存取出用于所述多个处理元件的相应子集的配置信息。由所述执行单元执行的所述第一操作可以是将配置信息预取到所述多个配置高速缓存中的每一个中。所述方法可包括:在从所述多个处理元件的相应子集中的至少一个处理元件接收到配置错误消息时,引起对所述至少一个处理元件的重配置。所述方法可包括:在接收到重配置请求消息时引起对所述多个处理元件的相应子集的重配置;以及禁用与所述多个处理元件的相应子集的通信,直到所述重配置完成。所述方法可包括:从所述多个处理元件的相应子集收集异常;以及将所述异常转发至核以用于维护。所述方法可包括:使来自所述多个处理元件的相应子集的状态数据被保存到存储器。
在又一实施例中,一种非暂态机器可读介质存储有代码,所述代码当由机器执行时使所述机器执行方法,所述方法包括:利用处理器的核的解码器将指令解码为经解码指令;利用所述处理器的所述核的执行单元执行所述经解码指令以执行第一操作;接收包括多个节点的数据流图的输入;将所述数据流图覆盖到所述处理器的多个处理元件以及所述处理器的所述多个处理元件之间的互连网络中,并且每一个节点被表示为所述多个处理元件中的数据流操作器;以及当传入操作数集到达所述多个处理元件时,利用所述互联网络和所述多个处理元件执行所述数据流图的第二操作。所述方法可包括:从存储加载用于所述多个处理元件的相应子集的配置信息;以及根据所述配置信息引起针对所述多个处理元件的每一个相应子集的耦合。所述方法可包括:从多个配置高速缓存中的相应配置高速缓存取出用于所述多个处理元件的相应子集的配置信息。由所述执行单元执行的所述第一操作可以是将配置信息预取到所述多个配置高速缓存中的每一个中。所述方法可进一步包括:在从所述多个处理元件的相应子集中的至少一个处理元件接收到配置错误消息时,引起对所述至少一个处理元件的重配置。所述方法可包括:在接收到重配置请求消息时引起对所述多个处理元件的相应子集的重配置;以及禁用与所述多个处理元件的相应子集的通信,直到所述重配置完成。所述方法可包括:从所述多个处理元件的相应子集收集异常;以及将所述异常转发至核以用于维护。所述方法可包括:使来自所述多个处理元件的相应子集的状态数据被保存到存储器。
在另一实施例中,一种处理器包括:核,所述核具有解码器和执行单元,所述解码器用于将指令解码为经解码指令,所述执行单元用于执行所述经解码指令以执行第一操作;多个处理元件;以及在所述多个而处理元件之间的装置,所述装置用于接收包括多个节点的数据流图的输入,其中,所述数据流图用于被覆盖到所述装置和所述多个处理元件中,并且每一个节点被表示为所述多个处理元件中的数据流操作器,并且所述多个处理元件用于当传入操作数集到达所述多个处理元件时执行第二操作。
在又一实施例中,一种装置包括数据存储设备,所述数据存储设备存储代码,所述代码当由硬件处理器执行时使所述硬件处理器执行本文中公开的方法。装置可以如在“具体实施方式”中所述。方法可以如在“具体实施方式”中所述。
在另一实施例中,一种非暂态机器可读介质存储有代码,所述代码当由机器执行时使所述机器执行包括如本文中所公开的任何方法的方法。
(例如,用于由核执行的)指令集可包括一个或多个指令格式。给定的指令格式可定义各种字段(例如,位的数量、位的位置)以指定将要执行的操作(例如,操作码)以及将对其执行该操作的(多个)操作数和/或(多个)其他数据字段(例如,掩码),等等。通过指令模板(或子格式)的定义来进一步分解一些指令格式。例如,可将给定指令格式的指令模板定义为具有指令格式字段(所包括的字段通常按照相同顺序,但是至少一些字段具有不同的位的位置,因为更少的字段被包括)的不同子集,和/或定义为具有以不同方式进行解释的给定字段。因此,ISA的每一条指令使用给定的指令格式来表达(并且如果经定义,则按照该指令格式的指令模板中的一个给定指令模板),并包括用于指定操作和操作数的字段。例如,示例性ADD(加法)指令具有特定的操作码和指令格式(包括用于指定该操作码的操作码字段和用于选择操作数(源1/目的地以及源2)的操作数字段),并且该ADD指令在指令流中出现将使得在选择特定操作数的操作数字段中具有特定的内容。已经推出和/或发布了被称为高级向量扩展(AVX)(AVX1和AVX2)和利用向量扩展(VEX)编码方案的SIMD扩展集(参见例如2016年6月的64和IA-32架构软件开发者手册;以及参见2016年2月的/>架构指令集扩展编程参考)。
示例性指令格式
本文中所描述的指令的实施例可以不同的格式体现。另外,在下文中详述示例性***、架构以及流水线。指令的实施例可在这些***、架构以及流水线上执行,但是不限于详述的***、架构以及流水线。
通用向量友好指令格式
向量友好指令格式是适于向量指令(例如,存在专用于向量操作的特定字段)的指令格式。尽管描述了其中通过向量友好指令格式支持向量和标量运算两者的实施例,但是替代实施例仅使用通过向量友好指令格式的向量运算。
图36A-36B是示出根据本公开的实施例的通用向量友好指令格式及其指令模板的框图。图36A是示出根据本公开的实施例的通用向量友好指令格式及其A类指令模板的框图;而图36B是示出根据本公开的实施例的通用向量友好指令格式及其B类指令模板的框图。具体地,针对通用向量友好指令格式3600定义A类和B类指令模板,两者包括无存储器访问3605的指令模板和存储器访问3620的指令模板。在向量友好指令格式的上下文中的术语“通用”指不束缚于任何专用指令集的指令格式。
尽管将描述其中向量友好指令格式支持以下情况的本公开的实施例,即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字节)数据元素宽度)。
图36A中的A类指令模板包括:1)在无存储器访问3605的指令模板内,示出无存储器访问的完全舍入控制型操作3610的指令模板、以及无存储器访问的数据变换型操作3615的指令模板;以及2)在存储器访问3620的指令模板内,示出存储器访问的时效性3625的指令模板和存储器访问的非时效性3630的指令模板。图36B中的B类指令模板包括:1)在无存储器访问3605的指令模板内,示出无存储器访问的写掩码控制的部分舍入控制型操作3612的指令模板以及无存储器访问的写掩码控制的vsize型操作3617的指令模板;以及2)在存储器访问3620的指令模板内,示出存储器访问的写掩码控制3627的指令模板。
通用向量友好指令格式3600包括以下列出的按照在图36A-36B中示出的顺序的如下字段。
格式字段3640-该字段中的特定值(指令格式标识符值)唯一地标识向量友好指令格式,并且由此标识指令在指令流中以向量友好指令格式出现。由此,该字段对于仅具有通用向量友好指令格式的指令集是不需要的,在这个意义上该字段是任选的。
基础操作字段3642-其内容区分不同的基础操作。
寄存器索引字段3644-其内容直接或者通过地址生成来指定源或目的地操作数在寄存器中或者在存储器中的位置。这些字段包括足够数量的位以从PxQ(例如,32x512、16x128、32x1024、64x1024)个寄存器组选择N个寄存器。尽管在一个实施例中N可高达三个源和一个目的地寄存器,但是替代实施例可支持更多或更少的源和目的地寄存器(例如,可支持高达两个源,其中这些源中的一个源还用作目的地,可支持高达三个源,其中这些源中的一个源还用作目的地,可支持高达两个源和一个目的地)。
修饰符(modifier)字段3646-其内容将指定存储器访问的以通用向量指令格式出现的指令与不指定存储器访问的以通用向量指令格式出现的指令区分开;即在无存储器访问3605的指令模板与存储器访问3620的指令模板之间进行区分。存储器访问操作读取和/或写至存储器层次(在一些情况下,使用寄存器中的值来指定源和/或目的地地址),而非存储器访问操作不这样(例如,源和/或目的地是寄存器)。尽管在一个实施例中,该字段还在三种不同的方式之间选择以执行存储器地址计算,但是替代实施例可支持更多、更少或不同的方式来执行存储器地址计算。
扩充操作字段3650-其内容区分除基础操作以外还要执行各种不同操作中的哪一个操作。该字段是针对上下文的。在本公开的一个实施例中,该字段被分成类字段3668、α字段3652以及β字段3654。扩充操作字段3650允许在单一指令而非2、3或4个指令中执行多组共同的操作。
比例字段3660-其内容允许用于存储器地址生成(例如,用于使用2比例*索引+基址的地址生成)的索引字段的内容的按比例缩放。
位移字段3662A-其内容用作存储器地址生成的一部分(例如,用于使用2比例*索引+基址+位移的地址生成)。
位移因数字段3662B(注意,位移字段3662A直接在位移因数字段3662B上的并置指示使用一个或另一个)-其内容用作地址生成的一部分,它指定通过存储器访问的尺寸(N)按比例缩放的位移因数,其中N是存储器访问中的字节数量(例如,用于使用2比例*索引+基址+按比例缩放的位移的地址生成)。忽略冗余的低阶位,并且因此将位移因数字段的内容乘以存储器操作数总尺寸(N)以生成在计算有效地址中使用的最终位移。N的值由处理器硬件在运行时基于完整操作码字段3674(稍后在本文中描述)和数据操纵字段3654C确定。位移字段3662A和位移因数字段3662B可以不用于无存储器访问3605的指令模板和/或不同的实施例可实现两者中的仅一个或不实现两者中的任一个,在这个意义上位移字段3662A和位移因数字段3662B是任选的。
数据元素宽度字段3664-其内容区分使用多个数据元素宽度中的哪一个(在一些实施例中用于所有指令,在其他实施例中只用于一些指令)。如果支持仅一个数据元素宽度和/或使用操作码的某一方面来支持数据元素宽度,则该字段是不需要的,在这个意义上该字段是任选的。
写掩码字段3670-其内容在每一数据元素位置的基础上控制目的地向量操作数中的数据元素位置是否反映基础操作和扩充操作的结果。A类指令模板支持合并-写掩码操作,而B类指令模板支持合并写掩码操作和归零写掩码操作两者。当合并时,向量掩码允许在执行任何操作期间保护目的地中的任何元素集免于更新(由基础操作和扩充操作指定);在另一实施例中,保持其中对应掩码位具有0的目的地的每一元素的旧值。相反,当归零时,向量掩码允许在执行任何操作期间使目的地中的任何元素集归零(由基础操作和扩充操作指定);在一个实施例中,目的地的元素在对应掩码位具有0值时被设为0。该功能的子集是控制执行的操作的向量长度的能力(即,从第一个到最后一个要修改的元素的跨度),然而,被修改的元素不一定要是连续的。由此,写掩码字段3670允许部分向量操作,这包括加载、存储、算术、逻辑等。尽管描述了其中写掩码字段3670的内容选择了多个写掩码寄存器中的包含要使用的写掩码的一个写掩码寄存器(并且由此写掩码字段3670的内容间接地标识了要执行的掩码操作)的本公开的实施例,但是替代实施例相反或另外允许掩码写字段3670的内容直接地指定要执行的掩码操作。
立即数字段3672-其内容允许对立即数的指定。该字段在实现不支持立即数的通用向量友好格式中不存在且在不使用立即数的指令中不存在,在这个意义上该字段是任选的。
类字段3668-其内容在不同类的指令之间进行区分。参考图36A-B,该字段的内容在A类和B类指令之间进行选择。在图36A-B中,圆角方形用于指示专用值存在于字段中(例如,在图36A-B中分别用于类字段3668的A类3668A和B类3668B)。
A类指令模板
在A类非存储器访问3605的指令模板的情况下,α字段3652被解释为其内容区分要执行不同扩充操作类型中的哪一种(例如,针对无存储器访问的舍入型操作3610和无存储器访问的数据变换型操作3615的指令模板分别指定舍入3652A.1和数据变换3652A.2)的RS字段3652A,而β字段3654区分要执行指定类型的操作中的哪一种。在无存储器访问3605指令模板中,比例字段3660、位移字段3662A以及位移比例字段3662B不存在。
无存储器访问的指令模板-完全舍入控制型操作
在无存储器访问的完全舍入控制型操作3610的指令模板中,β字段3654被解释为其(多个)内容提供静态舍入的舍入控制字段3654A。尽管在本公开的所述实施例中舍入控制字段3654A包括抑制所有浮点异常(SAE)字段3656和舍入操作控制字段3658,但是替代实施例可支持、可将这些概念两者都编码成相同的字段或者仅具有这些概念/字段中的一个或另一个(例如,可仅有舍入操作控制字段3658)。
SAE字段3656-其内容区分是否停用异常事件报告;当SAE字段3656的内容指示启用抑制时,给定指令不报告任何种类的浮点异常标志且不唤起任何浮点异常处理程序。
舍入操作控制字段3658-其内容区分执行一组舍入操作中的哪一个(例如,向上舍入、向下舍入、向零舍入、以及就近舍入)。由此,舍入操作控制字段3658允许在每一指令的基础上改变舍入模式。在其中处理器包括用于指定舍入模式的控制寄存器的本公开的一个实施例中,舍入操作控制字段3650的内容优先于该寄存器值。
无存储器访问的指令模板-数据变换型操作
在无存储器访问的数据变换型操作3615的指令模板中,β字段3654被解释为数据变换字段3654B,其内容区分要执行多个数据变换中的哪一个(例如,无数据变换、混合、广播)。
在A类存储器访问3620的指令模板的情况下,α字段3652被解释为驱逐提示字段3652B,其内容区分要使用驱逐提示中的哪一个(在图36A中,对于存储器访问时效性3625的指令模板和存储器访问非时效性3630的指令模板分别指定时效性的3652B.1和非时效性的3652B.2),而β字段3654被解释为数据操纵字段3654C,其内容区分要执行多个数据操纵操作(也称为基元(primitive))中的哪一个(例如,无操纵、广播、源的向上转换、以及目的地的向下转换)。存储器访问3620的指令模板包括比例字段3660、以及任选的位移字段3662A或位移比例字段3662B。
向量存储器指令使用转换支持来执行来自存储器的向量加载并将向量存储到存储器。如同寻常的向量指令,向量存储器指令以数据元素式的方式与存储器来回传输数据,其中实际传输的元素由选为写掩码的向量掩码的内容规定。
存储器访问的指令模板-时效性的
时效性的数据是可能足够快地重新使用以从高速缓存受益的数据。然而,这是提示,且不同的处理器可以不同的方式实现它,包括完全忽略该提示。
存储器访问的指令模板-非时效性的
非时效性的数据是不可能足够快地重新使用以从第一级高速缓存中的高速缓存受益且应当被给予驱逐优先级的数据。然而,这是提示,且不同的处理器可以不同的方式实现它,包括完全忽略该提示。
B类指令模板
在B类指令模板的情况下,α字段3652被解释为写掩码控制(Z)字段3652C,其内容区分由写掩码字段3670控制的写掩码操作应当是合并还是归零。
在B类非存储器访问3605的指令模板的情况下,β字段3654的一部分被解释为RL字段3657A,其内容区分要执行不同扩充操作类型中的哪一种(例如,针对无存储器访问的写掩码控制部分舍入控制类型操作3612的指令模板和无存储器访问的写掩码控制VSIZE型操作3617的指令模板分别指定舍入3657A.1和向量长度(VSIZE)3657A.2),而β字段3654的其余部分区分要执行指定类型的操作中的哪一种。在无存储器访问3605指令模板中,比例字段3660、位移字段3662A以及位移比例字段3662B不存在。
在无存储器访问的写掩码控制的部分舍入控制型操作3610的指令模板中,β字段3654的其余部分被解释为舍入操作字段3659A,并且停用异常事件报告(给定指令不报告任何种类的浮点异常标志且不唤起任何浮点异常处理程序)。
舍入操作控制字段3659A-正如舍入操作控制字段3658,其内容区分执行一组舍入操作中的哪一个(例如,向上舍入、向下舍入、向零舍入、以及就近舍入)。由此,舍入操作控制字段3659A允许在每一指令的基础上改变舍入模式。在其中处理器包括用于指定舍入模式的控制寄存器的本公开的一个实施例中,舍入操作控制字段3650的内容优先于该寄存器值。
在无存储器访问的写掩码控制VSIZE型操作3617的指令模板中,β字段3654的其余部分被解释为向量长度字段3659B,其内容区分要执行多个数据向量长度中的哪一个(例如,128字节、256字节、或512字节)。
在B类存储器访问3620的指令模板的情况下,β字段3654的一部分被解释为广播字段3657B,其内容区分是否要执行广播型数据操纵操作,而β字段3654的其余部分被解释为向量长度字段3659B。存储器访问3620的指令模板包括比例字段3660、以及任选的位移字段3662A或位移比例字段3662B。
针对通用向量友好指令格式3600,示出完整操作码字段3674包括格式字段3640、基础操作字段3642以及数据元素宽度字段3664。尽管示出了其中完整操作码字段3674包括所有这些字段的一个实施例,但是在不支持所有这些字段的实施例中,完整操作码字段3674包括少于所有的这些字段。完整操作码字段3674提供操作码(opcode)。
扩充操作字段3650、数据元素宽度字段3664以及写掩码字段3670允许在每一指令的基础上以通用向量友好指令格式指定这些特征。
写掩码字段和数据元素宽度字段的组合创建各种类型的指令,因为这些指令允许基于不同的数据元素宽度应用该掩码。
在A类和B类内出现的各种指令模板在不同的情形下是有益的。在本公开的一些实施例中,不同处理器或者处理器内的不同核可支持仅A类、仅B类、或者可支持两类。举例而言,旨在用于通用计算的高性能通用乱序核可仅支持B类,旨在主要用于图形和/或科学(吞吐量)计算的核可仅支持A类,并且旨在用于两者的核可支持两者(当然,具有来自两类的模板和指令的一些混合、但是并非来自两类的所有模板和指令的核在本公开的范围内)。同样,单一处理器可包括多个核,所有核支持相同的类或者其中不同的核支持不同的类。举例而言,在具有单独的图形和通用核的处理器中,图形核中的旨在主要用于图形和/或科学计算的一个核可仅支持A类,而通用核中的一个或多个可以是具有旨在用于通用计算的仅支持B类的乱序执行和寄存器重命名的高性能通用核。不具有单独的图形核的另一处理器可包括既支持A类又支持B类的一个或多个通用有序或乱序核。当然,在本公开的不同实施例中,来自一类的特征也可在其他类中实现。可使以高级语言撰写的程序成为(例如,及时编译或者统计编译)各种不同的可执行形式,包括:1)仅具有用于执行的目标处理器支持的类的指令的形式;或者2)具有使用所有类的指令的不同组合而编写的替代例程且具有选择这些例程以基于由当前正在执行代码的处理器支持的指令而执行的控制流代码的形式。
示例性专用向量友好指令格式
图37是示出根据本发明的实施例的示例性专用向量友好指令格式的框图。图37示出专用向量友好指令格式3700,其指定位置、尺寸、解释和字段的次序、以及那些字段中的一些字段的值,在这个意义上向量友好指令格式3700是专用的。专用向量友好指令格式3700可用于扩展x86指令集,并且由此一些字段类似于在现有x86指令集及其扩展(例如,AVX)中使用的那些字段或与之相同。该格式保持与具有扩展的现有x86指令集的前缀编码字段、实操作码字节字段、MOD R/M字段、SIB字段、位移字段、以及立即数字段一致。示出来自图36的字段,来自图37的字段映射到来自图36的字段。
应当理解,虽然出于说明的目的在通用向量友好指令格式3600的上下文中参考专用向量友好指令格式3700描述了本公开的实施例,但是本公开不限于专用向量友好指令格式3700,除非另有声明。例如,通用向量友好指令格式3600构想各种字段的各种可能的尺寸,而专用向量友好指令格式3700被示为具有特定尺寸的字段。作为具体示例,尽管在专用向量友好指令格式3700中数据元素宽度字段3664被示为一位字段,但是本公开不限于此(即,通用向量友好指令格式3600构想数据元素宽度字段3664的其他尺寸)。
通用向量友好指令格式3600包括以下列出的按照图37A中示出的顺序的如下字段。
EVEX前缀(字节0-3)3702-以四字节形式进行编码。
格式字段3640(EVEX字节0,位[7:0])-第一字节(EVEX字节0)是格式字段3640,并且它包含0x62(在本公开的一个实施例中用于区分向量友好指令格式的唯一值)。
第二-第四字节(EVEX字节1-3)包括提供专用能力的多个位字段。
REX字段3705(EVEX字节1,位[7-5])-由EVEX.R位字段(EVEX字节1,位[7]–R)、EVEX.X位字段(EVEX字节1,位[6]–X)以及(3657BEX字节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’字段3610-这是REX’字段3610的第一部分,并且是用于对扩展的32个寄存器集合的较高16个或较低16个寄存器进行编码的EVEX.R’位字段(EVEX字节1,位[4]–R’)。在本公开的一个实施例中,该位与以下指示的其他位一起以位反转的格式存储以(在公知x86的32位模式下)与实操作码字节是62的BOUND指令进行区分,但是在MOD R/M字段(在下文中描述)中不接受MOD字段中的值11;本公开的替代实施例不以反转的格式存储该指示的位以及其他指示的位。值1用于对较低16个寄存器进行编码。换句话说,通过组合EVEX.R’、EVEX.R、以及来自其他字段的其他RRR来形成R’Rrrr。
操作码映射字段3715(EVEX字节1,位[3:0]–mmmm)–其内容对隐含的前导操作码字节(0F、0F 38、或0F 3)进行编码。
数据元素宽度字段3664(EVEX字节2,位[7]–W)-由记号EVEX.W表示。EVEX.W用于定义数据类型(32位数据元素或64位数据元素)的粒度(尺寸)。
EVEX.vvvv 3720(EVEX字节2,位[6:3]-vvvv)-EVEX.vvvv的作用可包括如下:1)EVEX.vvvv编码第一源寄存器操作数且对具有两个或两个以上源操作数的指令有效,第一源寄存器操作数以反转(1补码)的形式被指定;2)EVEX.vvvv编码目的地寄存器操作数,目的地寄存器操作数针对特定向量位移以1补码的形式被指定;或者3)EVEX.vvvv不编码任何操作数,保留该字段,并且应当包含1111b。由此,EVEX.vvvv字段3720对以反转(1补码)的形式存储的第一源寄存器指定符的4个低阶位进行编码。取决于该指令,额外不同的EVEX位字段用于将指定符尺寸扩展到32个寄存器。
EVEX.U 3668类字段(EVEX字节2,位[2]-U)-如果EVEX.U=0,则它指示A类或EVEX.U0;如果EVEX.U=1,则它指示B类或EVEX.U1。
前缀编码字段3725(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前缀编码,并且由此不需要扩展。
α字段3652(EVEX字节3,位[7]–EH,也称为EVEX.EH、EVEX.rs、EVEX.RL、EVEX.写掩码控制、以及EVEX.N;也以α示出)-如先前所述,该字段是针对上下文的。
β字段3654(EVEX字节3,位[6:4]-SSS,也称为EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;也以βββ示出)-如先前所述,该字段是针对上下文的。
REX’字段3610-这是REX’字段的其余部分,并且是可用于对扩展的32个寄存器集合的较高16个或较低16个寄存器进行编码的EVEX.V’位字段(EVEX字节3,位[3]–V’)。该位以位反转的格式存储。值1用于对较低16个寄存器进行编码。换句话说,通过组合EVEX.V’、EVEX.vvvv来形成V’VVVV。
写掩码字段3670(EVEX字节3,位[2:0]-kkk)-其内容指定写掩码寄存器中的寄存器索引,如先前所述。在本公开的一个实施例中,特定值EVEX.kkk=000具有暗示没有写掩码用于特定指令的特殊行为(这可以各种方式实现,包括使用硬连线到所有的写掩码或者旁路掩码硬件的硬件来实现)。
实操作码字段3730(字节4)还被称为操作码字节。操作码的一部分在该字段中被指定。
MOD R/M字段3740(字节5)包括MOD字段3742、Reg字段3744以及R/M字段3746。如先前所述的,MOD字段3742的内容将存储器访问和非存储器访问操作区分开。Reg字段3744的作用可被归结为两种情形:对目的地寄存器操作数或源寄存器操作数进行编码;或者被视为操作码扩展且不用于对任何指令操作数进行编码。R/M字段3746的作用可包括如下:对引用存储器地址的指令操作数进行编码;或者对目的地寄存器操作数或源寄存器操作数进行编码。
比例、索引、基址(SIB)字节(字节6)-如先前所述的,比例字段3650的内容用于存储器地址生成。SIB.xxx 3754和SIB.bbb 3756-先前已经针对寄存器索引Xxxx和Bbbb提及了这些字段的内容。
位移字段3662A(字节7-10)-当MOD字段3742包含10时,字节7-10是位移字段3662A,并且它与传统32位位移(disp32)一样地工作,并且以字节粒度工作。
位移因数字段3662B(字节7)-当MOD字段3742包含01时,字节7是位移因数字段3662B。该字段的位置与传统x86指令集8位位移(disp8)的位置相同,它以字节粒度工作。由于disp8是符号扩展的,因此它仅能在-128和127字节偏移量之间寻址;在64字节高速缓存行的方面,disp8使用可被设为仅四个真正有用的值-128、-64、0和64的8位;由于常常需要更大的范围,所以使用disp32;然而,disp32需要4个字节。与disp8和disp32对比,位移因数字段3662B是disp8的重新解释;当使用位移因数字段3662B时,通过将位移因数字段的内容乘以存储器操作数访问的尺寸(N)来确定实际位移。该类型的位移被称为disp8*N。这减小了平均指令长度(单个字节用于位移,但具有大得多的范围)。这种压缩位移基于有效位移是存储器访问的粒度的倍数的假设,并且由此地址偏移量的冗余低阶位不需要被编码。换句话说,位移因数字段3,662B替代传统x86指令集8位位移。由此,位移因数字段3662B以与x86指令集8位位移相同的方式(因此在ModRM/SIB编码规则中没有变化)进行编码,唯一的不同在于,将disp8超载至disp8*N。换句话说,在编码规则或编码长度中没有变化,而仅在通过硬件对位移值的解释中有变化(这需要按存储器操作数的尺寸按比例缩放位移量以获得字节式地址偏移量)。立即数字段3672如先前所述地操作。
完整操作码字段
图37B是示出根据本公开的实施例的构成完整操作码字段3674的具有专用向量友好指令格式3700的字段的框图。具体地,完整操作码字段3674包括格式字段3640、基础操作字段3642、以及数据元素宽度(W)字段3664。基础操作字段3642包括前缀编码字段3725、操作码映射字段3715以及实操作码字段3730。
寄存器索引字段
图37C是示出根据本公开的一个实施例的构成寄存器索引字段3644的具有专用向量友好指令格式3700的字段的框图。具体地,寄存器索引字段3644包括REX字段3705、REX’字段3710、MODR/M.reg字段3744、MODR/M.r/m字段3746、VVVV字段3720、xxx字段3754以及bbb字段3756。
扩充操作字段
图37D是示出根据本公开的一个实施例的构成扩充操作字段3650的具有专用向量友好指令格式3700的字段的框图。当类(U)字段3668包含0时,它表明EVEX.U0(A类3668A);当它包含1时,它表明EVEX.U1(B类3668B)。当U=0且MOD字段3742包含11(表明无存储器访问操作)时,α字段3652(EVEX字节3,位[7]–EH)被解释为rs字段3652A。当rs字段3652A包含1(舍入3652A.1)时,β字段3654(EVEX字节3,位[6:4]–SSS)被解释为舍入控制字段3654A。舍入控制字段3654A包括一位SAE字段3656和两位舍入操作字段3658。当rs字段3652A包含0(数据变换3652A.2)时,β字段754(EVEX字节3,位[6:4]–SSS)被解释为三位数据变换字段3654B。当U=0且MOD字段3742包含00、01或10(表明存储器访问操作)时,α字段3652(EVEX字节3,位[7]–EH)被解释为驱逐提示(EH)字段3652B且β字段3654(EVEX字节3,位[6:4]–SSS)被解释为三位数据操纵字段3654C。
当U=1时,α字段3652(EVEX字节3,位[7]–EH)被解释为写掩码控制(Z)字段3652C。当U=1且MOD字段3742包含11(表明无存储器访问操作)时,β字段3754的一部分(EVEX字节3,位[4]–S0)被解释为RL字段3657A;当它包含1(舍入3657A.1)时,β字段3654的其余部分(EVEX字节3,位[6-5]–S2-1)被解释为舍入操作字段3659A,而当RL字段3657A包含0(VSIZE3657.A2)时,β字段3654的其余部分(EVEX字节3,位[6-5]-S2-1)被解释为向量长度字段3659B(EVEX字节3,位[6-5]–L1-0)。当U=1且MOD字段3742包含00、01或10(表明存储器访问操作)时,β字段3654(EVEX字节3,位[6:4]–SSS)被解释为向量长度字段3659B(EVEX字节3,位[6-5]–L1-0)和广播字段3657B(EVEX字节3,位[4]–B)。
示例性寄存器架构
图38是根据本公开的一个实施例的寄存器架构3800的框图。在所示出的实施例中,有32个512位宽的向量寄存器3810;这些寄存器被引用为zmm0到zmm31。较低的16zmm寄存器的较低阶256个位覆盖在寄存器ymm0-16上。较低的16zmm寄存器的较低阶128个位(ymm寄存器的较低阶128个位)覆盖在寄存器xmm0-15上。专用向量友好指令格式3700对这些覆盖的寄存器组操作,如在以下表格中所示的。
换句话说,向量长度字段3659B在最大长度与一个或多个其他较短长度之间进行选择,其中每一这种较短长度是前一长度的一半,并且不具有向量长度字段3,659B的指令模板在最大向量长度上操作。此外,在一个实施例中,专用向量友好指令格式3700的B类指令模板对紧缩或标量单/双精度浮点数据以及紧缩或标量整数数据操作。标量操作是对zmm/ymm/xmm寄存器中的最低阶数据元素位置执行的操作;取决于本实施例,较高阶数据元素位置保持与在指令之前相同或者归零。
写掩码寄存器3815-在所示的实施例中,存在8个写掩码寄存器(k0至k7),每一写掩码寄存器的尺寸是64位。在替代实施例中,写掩码寄存器3815的尺寸是16位。如先前所述的,在本公开的一个实施例中,向量掩码寄存器k0无法用作写掩码;当正常指示k0的编码用作写掩码时,它选择硬连线的写掩码0xFFFF,从而有效地停用该指令的写掩码操作。
通用寄存器3825——在所示出的实施例中,有十六个64位通用寄存器,这些寄存器与现有的x86寻址模式一起使用来寻址存储器操作数。这些寄存器通过名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP以及R8到R15来引用。
标量浮点堆栈寄存器组(x87栈)3845,在其上面重叠了MMX紧缩整数平坦寄存器组3850——在所示出的实施例中,x87栈是用于使用x87指令集扩展来对32/64/80位浮点数据执行标量浮点运算的八元素堆栈;而使用MMX寄存器来对64位紧缩整数数据执行操作,以及为在MMX和XMM寄存器之间执行的一些操作保存操作数。
本公开的替代实施例可以使用较宽的或较窄的寄存器。另外,本公开的替代实施例可以使用更多、更少或不同的寄存器组和寄存器。
示例性核架构、处理器和计算机架构
处理器核可以用出于不同目的的不同方式在不同的处理器中实现。例如,这样的核的实现可以包括:1)旨在用于通用计算的通用有序核;2)预期用于通用计算的高性能通用乱序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用乱序核的CPU;以及2)包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核的协处理器。这样的不同处理器导致不同的计算机***架构,其可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中但分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该情况下,这样的协处理器有时被称为诸如集成图形和/或科学(吞吐量)逻辑等专用逻辑,或被称为专用核);以及4)可以将所描述的CPU(有时被称为应用核或应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上的芯片上***。接着描述示例性核架构,随后描述示例性处理器和计算机架构。
示例性核架构
有序和乱序核框图
图39A是示出根据本公开的各实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线的框图。图39B是示出根据本公开的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核的框图。图39A-图39B中的实线框示出了有序流水线和有序核,而可选增加的虚线框示出了寄存器重命名的、乱序发布/执行流水线和核。给定有序方面是乱序方面的子集的情况下,将描述乱序方面。
在图39A中,处理器流水线3900包括取出级3902、长度解码级3904、解码级3906、分配级3908、重命名级3910、调度(也被称为分派或发布)级3912、寄存器读取/存储器读取级3914、执行级3916、写回/存储器写入级3918、异常处理级3922和提交级3924。
图39B示出处理器核3990,包括耦合至执行引擎单元3950的前端单元3930,该前端单元和执行引擎单元两者均耦合至存储器单元3970。核3990可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或其他核类型。作为又一选项,核3990可以是专用核,诸如例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、或图形核等等。
前端单元3930包括耦合到指令高速缓存单元3934的分支预测单元3932,该指令高速缓存单元耦合到指令转换后备缓冲器(TLB)3936,该指令转换后备缓冲器耦合到指令取出单元3938,指令取出单元耦合到解码单元3940。解码单元3940(或解码器或解码器单元)可解码指令(例如,宏指令),并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元3940可使用各种不同的机制来实现。合适机构的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核3990包括存储用于(例如,在解码单元3940或以其他方式在前端单元3930内的)某些宏指令的微代码的微代码ROM或其他介质。解码单元3940耦合至执行引擎单元3950中的重命名/分配器单元3952。
执行引擎单元3950包括耦合到引退单元3954和一个或多个调度器单元3956的集合的重命名/分配器单元3952。(多个)调度器单元3956表示任意数量的不同调度器,包括预留站、中央指令窗口等。(多个)调度器单元3956耦合到(多个)物理寄存器组单元3958。(多个)物理寄存器组单元3958中的每一个表示一个或多个物理寄存器组,其中不同的物理寄存器组保存一个或多个不同的数据类型(诸如:标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)、状态(诸如,指令指针是将要执行的下一个指令的地址)等等。在一个实施例中,(多个)物理寄存器组单元3958包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器、和通用寄存器。(多个)物理寄存器组单元3958被引退单元3954所覆盖,以示出可实现寄存器重命名和无序执行的多种方式(诸如,使用(多个)重排序缓冲器和(多个)引退寄存器组、使用(多个)未来文件(future file)、(多个)历史缓冲器、(多个)引退寄存器组、使用寄存器映射和寄存器池等等)。引退单元3954和(多个)物理寄存器组单元3958耦合至(多个)执行群集3960。(多个)执行群集3960包括一个或多个执行单元3962的集合以及一个或多个存储器访问单元3964的集合。执行单元3962可执行多种操作(包括:移位、加法、减法、乘法)并可在各种数据类型(诸如、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)上执行。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但其他实施例可包括全部执行所有功能的仅一个执行单元或多个执行单元。(多个)调度器单元3956、(多个)物理寄存器组单元3958和(多个)执行群集3960被示为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整型流水线、标量浮点/紧缩整型/紧缩浮点/向量整型/向量浮点流水线,和/或各自具有其自己的调度器单元、(多个)物理寄存器组单元和/或执行群集的存储器访问流水线——以及在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行群集具有(多个)存储器访问单元3964的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以为乱序发布/执行,并且其余流水线可以为有序发布/执行。
存储器访问单元3964的集合耦合到存储器单元3970,该存储器单元包括耦合到数据高速缓存单元3974的数据TLB单元3972,其中数据高速缓存单元耦合到二级(L2)高速缓存单元3976。在一个示例性实施例中,存储器访问单元3964可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元3970中的数据TLB单元3972。指令高速缓存单元3934还耦合到存储器单元3970中的第二级(L2)高速缓存单元3976。L2高速缓存单元3976耦合至一个或多个其他级别的高速缓存,并最终耦合至主存储器。
作为示例,示例性的寄存器重命名乱序发布/执行核架构可以如下所述地实现流水线3900:1)指令取出3938执行取出和长度解码级3902和3904;2)解码单元3940执行解码级3906;3)重命名/分配器单元3952执行分配级3908和重命名级3910;4)(多个)调度器单元3956执行调度级3912;5)(多个)物理寄存器组单元3958和存储器单元3970执行寄存器读取/存储器读取级3914;执行群集3960执行执行级3916;6)存储器单元3970和(多个)物理寄存器组单元3958执行写回/存储器写入级3918;7)各单元可牵涉到异常处理级3922中;以及8)引退单元3954和(多个)物理寄存器组单元3958执行提交级3924。
核3990可支持一个或多个指令集(例如,x86指令集(具有与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔市的ARM控股的ARM指令集(具有诸如NEON等可选附加扩展)),其中包括本文中描述的各指令。在一个实施例中,核3990包括用于支持紧缩数据指令集扩展(例如,AVX1、AVX2)的逻辑,由此允许许多多媒体应用所使用的操作利用紧缩数据来执行。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,此各种方式包括时分多线程化、同步多线程化(其中单个物理核为物理核正在同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后诸如用超线程化技术来同步多线程化)。
尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所示出的处理器的实施例还包括分开的指令和数据高速缓存单元3934/3974以及共享L2高速缓存单元3976,但替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如一级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,该***可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
具体的示例性有序核架构
图40A-图40B示出了更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块之一(包括相同类型和/或不同类型的其他核)。根据应用,这些逻辑块通过高带宽的互连网络(例如,环形网络)与一些固定的功能逻辑、存储器I/O接口和其他必要的I/O逻辑通信。
图40A是根据本公开的各实施例的单个处理器核以及它与管芯上互连网络4002的连接及其二级(L2)高速缓存的本地子集4004的框图。在一个实施例中,指令解码单元4000支持具有紧缩数据指令集扩展的x86指令集。L1高速缓存4006允许对进入标量和向量单元中的高速缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量单元4008和向量单元4010使用分开的寄存器集合(分别为标量寄存器4012和向量寄存器4014),并且在这些寄存器之间转移的数据被写至存储器并随后从一级(L1)高速缓存4006读回,但是本公开的替代实施例可以使用不同的方法(例如使用单个寄存器集合或包括允许数据在这两个寄存器组之间传输而无需被写入和读回的通信路径)。
L2高速缓存的本地子集4004是全局L2高速缓存的一部分,该全局L2高速缓存被划分成多个分开的本地子集,即每个处理器核一个本地子集。每个处理器核具有到其自己的L2高速缓存4004的本地子集的直接访问路径。被处理器核读出的数据被存储在其L2高速缓存子集4004中,并且可以与其他处理器核访问其自己的本地L2高速缓存子集并行地被快速访问。被处理器核写入的数据被存储在其自己的L2高速缓存子集4004中,并在必要的情况下从其他子集转储清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2高速缓存和其他逻辑块之类的代理在芯片内彼此通信。每个环形数据路径为每个方向1012位宽。
图40B是根据本公开的各实施例的图40A中的处理器核的一部分的展开图。图40B包括L1高速缓存4004的L1数据高速缓存4006A部分,以及关于向量单元4010和向量寄存器4014的更多细节。具体地说,向量单元4010是16宽向量处理单元(VPU)(见16宽ALU 4028),该单元执行整型、单精度浮点以及双精度浮点指令中的一个或多个。该VPU通过混合单元4020支持对寄存器输入的混合、通过数值转换单元4022A-B支持数值转换、并通过复制单元4024支持对存储器输入的复制。写掩码寄存器4026允许断言所得的向量写入。
图41是根据本公开的各实施例可能具有超过一个核、可能具有集成存储器控制器、以及可能具有集成图形器件的处理器4100的框图。图41中的实线框示出具有单个核4102A、***代理4110、一个或多个总线控制器单元4116的集合的处理器4100,而虚线框的可选附加示出具有多个核4102A-N、***代理单元4110中的一个或多个集成存储器控制器单元4114的集合以及专用逻辑4108的替代处理器4100。
因此,处理器4100的不同实现可包括:1)CPU,其中专用逻辑4108是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核4102A-N是一个或多个通用核(例如,通用的有序核、通用的无序核、这两者的组合);2)协处理器,其中核4102A-N是旨在主要用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核4102A-N是大量通用有序核。因此,处理器4100可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、或嵌入式处理器等。该处理器可以被实现在一个或多个芯片上。处理器4100可以是一个或多个基板的一部分,和/或使用多种工艺技术(诸如,BiCMOS、CMOS、或NMOS)中的任意技术被实现在一个或多个基板上。
存储器层级包括核内的一个或多个高速缓存级、一个或多个共享高速缓存单元4106的集合、以及耦合至集成存储器控制器单元4114的集合的外部存储器(未示出)。共享高速缓存单元4106的集合可包括一个或多个中级高速缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)和/或以上的组合。尽管在一个实施例中,基于环的互连单元4112将集成图形逻辑4108、共享高速缓存单元4106的集合以及***代理单元4110/(多个)集成存储器控制器单元4114互连,但替代实施例可使用任何数量的公知技术来将这些单元互连。在一个实施例中,可以维护一个或多个高速缓存单元4106和核4102A-N之间的一致性(coherency)。
在一些实施例中,一个或多个核4102A-N能够实现多线程。***代理4110包括协调和操作核4102A-N的那些组件。***代理单元4110可包括例如功率控制单元(PCU)和显示单元。PCU可以是对核4102A-N以及集成图形逻辑4108的功率状态进行调节所需的逻辑和组件,或可包括这些逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核4102A-N在架构指令集方面可以是同构的或异构的;即,这些核4102A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。
示例性计算机架构
图42-图45是示例性计算机架构的框图。本领域已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他***设计和配置也是合适的。一般地,能够包含本文中所公开的处理器和/或其他执行逻辑的多个***和电子设备一般都是合适的。
现在参见图42,所示为根据本发明的一个实施例的***4200的框图。***4200可以包括一个或多个处理器4210、4215,这些处理器耦合到控制器中枢4220。在一个实施例中,控制器中枢4220包括图形存储器控制器中枢(GMCH)4290和输入/输出中枢(IOH)4250(其可以在分开的芯片上);GMCH 4290包括存储器和图形控制器,存储器4240和协处理器4245耦合到该存储器和图形控制器;IOH 4250将输入/输出(I/O)设备4260耦合到GMCH4290。或者,存储器和图形控制器中的一个或两者可以被集成在处理器内(如本文中所描述的),存储器4240和协处理器4245直接耦合到处理器4210以及控制器中枢4220,控制器中枢4220与IOH 4250处于单个芯片中。存储器4240可包括例如用于存储代码的编译器模块4240A,该代码当被执行时使处理器执行被公开的任何方法。
附加的处理器4215的可选性在图42中通过虚线来表示。每一处理器4210、4215可包括本文中描述的处理核中的一个或多个,并且可以是处理器4100的某一版本。
存储器4240可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢4220经由诸如前端总线(FSB)之类的多分支总线、诸如快速通道互连(QPI)之类的点对点接口、或者类似的连接4295与处理器4210、4215进行通信。
在一个实施例中,协处理器4245是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。在一个实施例中,控制器中枢4220可以包括集成图形加速器。
在物理资源4210、4215之间可以存在包括架构、微架构、热、和功耗特征等的一系列品质度量方面的各种差异。
在一个实施例中,处理器4210执行控制一般类型的数据处理操作的指令。协处理器指令可嵌入在这些指令中。处理器4210将这些协处理器指令识别为应当由附连的协处理器4245执行的类型。因此,处理器4210在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器4245。(多个)协处理器4245接受并执行所接收的协处理器指令。
现在参考图43,所示为根据本公开的实施例的更具体的第一示例性***4300的框图。如图43所示,多处理器***4300是点对点互连***,且包括经由点对点互连4350耦合的第一处理器4370和第二处理器4380。处理器4370和4380中的每一个都可以是处理器4100的某一版本。在本公开的一个实施例中,处理器4370和4380分别是处理器4210和4215,而协处理器4338是协处理器4245。在另一实施例中,处理器4370和4380分别是处理器4210和协处理器4245。
处理器4370和4380被示为分别包括集成存储器控制器(IMC)单元4372和4382。处理器4370还包括作为其总线控制器单元的一部分的点对点(P-P)接口4376和4378;类似地,第二处理器4380包括P-P接口4386和4388。处理器4370、4380可以经由使用点对点(P-P)接口电路4378、4388的P-P接口4350来交换信息。如图43所示,IMC 4372和4382将处理器耦合到相应的存储器,即存储器4332和存储器4334,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器4370、4380可各自经由使用点对点接口电路4376、4394、4386、4398的各个P-P接口4352、4354与芯片组4390交换信息。芯片组4390可以可选地经由高性能接口4339与协处理器4338交换信息。在一个实施例中,协处理器4338是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。
共享高速缓存(未示出)可被包括在任一处理器中,或在两个处理器的外部但经由P-P互连与这些处理器连接,从而如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在该共享的高速缓存中。
芯片组4390可以经由接口4396耦合至第一总线4316。在一个实施例中,第一总线4316可以是***组件互连(PCI)总线或诸如PCI高速总线或另一第三代I/O互连总线之类的总线,但是本公开的范围不限于此。
如图43所示,各种I/O设备4314可连同总线桥4318一起耦合到第一总线4316,总线桥4318将第一总线4316耦合到第二总线4320。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU的处理器、加速器(诸如例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器4315耦合到第一总线4316。在一个实施例中,第二总线4320可以是低引脚数(LPC)总线。各种设备可耦合到第二总线4320,包括例如键盘和/或鼠标4322、通信设备4327以及存储单元4328,诸如在一个实施例中可包括指令/代码和数据4330的盘驱动器或者其他大容量存储设备。此外,音频I/O 4324可以被耦合至第二总线4320。注意,其他架构是可能的。例如,代替图43的点对点架构,***可以实现多分支总线或其他这类架构。
现在参考图44,所示为根据本公开的实施例的更具体的第二示例性***4400的框图。图43和图44中的相同部件用相同附图标记表示,并从图44中省去了图43中的某些方面,以避免使图44的其他方面变得模糊。
图44示出处理器4370、4380可分别包括集成存储器和I/O控制逻辑(“CL”)4372和4382。因此,CL 4372、4382包括集成存储器控制器单元并包括I/O控制逻辑。图44示出不仅存储器4332、4334耦合至CL 4372、4382,而且I/O设备4414也耦合至控制逻辑4372、4382。传统I/O设备4415被耦合至芯片组4390。
现在参照图45,所示出的是根据本公开的实施例的SoC 4500的框图。在图41中,相似的部件具有同样的附图标记。另外,虚线框是更先进的SoC的可选特征。在图45中,(多个)互连单元4502被耦合至:应用处理器4510,该应用处理器包括一个或多个核202A-N的集合以及(多个)共享高速缓存单元4106;(多个)***代理单元4110;(多个)总线控制器单元4116;(多个)集成存储器控制器单元4114;一组或一个或多个协处理器4520,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元4530;直接存储器存取(DMA)单元4532;以及用于耦合至一个或多个外部显示器的显示单元4540。在一个实施例中,(多个)协处理器4520包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器等等。
本文公开的(例如,各机制的)各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本公开的实施例可实现为在可编程***上执行的计算机程序或程序代码,该可编程***包括至少一个处理器、存储***(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如图43中示出的代码4330)应用于输入指令,以执行本文描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理***包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何***。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理***通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,指令表示处理器中的各种逻辑,指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。被称为“IP核”的这些表示可以被存储在有形的机器可读介质上,并被提供给多个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
这样的机器可读存储介质可以包括但不限于通过机器或设备制造或形成的物品的非瞬态的有形安排,其包括存储介质,诸如:硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,例如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
因此,本公开的各实施例还包括非瞬态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或***特征。这些实施例也被称为程序产品。
仿真(包括二进制变换、代码变形等)
在一些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其他方式将指令转换成将由核来处理的一个或多个其他指令。指令转换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图46是根据本公开的各实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但作为替代,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图46示出可使用x86编译器4604来编译利用高级语言4602的程序,以生成可由具有至少一个x86指令集核的处理器4616原生执行的x86二进制代码4606。具有至少一个x86指令集核的处理器4616表示任何处理器,这些处理器能通过兼容地执行或以其他方式处理以下内容来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能:1)英特尔x86指令集核的指令集的本质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行的应用或其他软件的目标代码版本,以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果。x86编译器4604表示用于生成x86二进制代码4606(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器4616上执行。类似地,图46示出可以使用替代的指令集编译器4608来编译利用高级语言4602的程序,以生成可以由不具有至少一个x86指令集核的处理器4614(例如具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代指令集二进制代码4610。指令转换器4612被用来将x86二进制代码4606转换成可以由不具有x86指令集核的处理器4614原生执行的代码。该转换后的代码不大可能与替代性指令集二进制代码4610相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作并由来自替代指令集的指令构成。因此,指令转换器4612通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码4606的软件、固件、硬件或其组合。

Claims (18)

1.一种处理器,包括:
核,所述核具有解码器和执行单元,所述解码器用于将指令解码为经解码指令,所述执行单元用于执行所述经解码指令以执行第一操作;
多个处理元件,所述多个处理元件各自包括多个输入缓冲器和多个输出缓冲器;以及
互连网络,在所述多个处理元件之间,所述互连网络用于接收包括多个节点的数据流图的输入,其中,所述数据流图用于被覆盖到所述互连网络和所述多个处理元件中,并且每一个节点被表示为所述多个处理元件中的数据流操作器,所述互连网络的配置用于通过由从处理元件的每个输出缓冲器向另一处理元件的对应输入缓冲器延伸的回压路径携带的回压信号来指示:直到在输入缓冲器中存在用于新数据值的可用空间,所述新数据值才被加载到输入缓冲器中,并且所述多个处理元件中的每个处理元件用于当传入操作数集到达处理元件的、被配置成用于根据所述数据流图接收输入数据的一个或多个输入缓冲器并且存储空间在处理元件的、被配置成用于根据所述数据流图存储结果数据的一个或多个输出缓冲器中可用时执行对应的操作。
2.如权利要求1所述的处理器,进一步包括多个配置控制器,每一个配置控制器耦合到所述多个处理元件的相应子集,并且每一个配置控制器用于从存储加载配置信息并且引起所述多个处理元件的相应子集根据所述配置信息耦合。
3.如权利要求2所述的处理器,进一步包括多个配置高速缓存,每一个配置控制器耦合至相应的配置高速缓存以取出用于所述多个处理元件的相应子集的配置信息。
4.如权利要求3所述的处理器,其中,由所述执行单元执行的所述第一操作用于将配置信息预取到所述多个配置高速缓存中的每一个中。
5.如权利要求2所述的处理器,其中,所述多个配置控制器中的每一个包括重配置电路,所述重配置电路用于:在从所述多个处理元件的相应子集中的至少一个处理元件接收到配置错误消息时引起对所述至少一个处理元件的重配置。
6.如权利要求2所述的处理器,其中,所述多个配置控制器中的每一个包括重配置电路,所述重配置电路用于:在接收到重配置请求消息时引起对所述多个处理元件的相应子集的重配置;以及禁用与所述多个处理元件的相应子集的通信,直到所述重配置完成。
7.如权利要求1所述的处理器,进一步包括多个异常聚合器,并且每一个异常聚合器耦合至所述多个处理元件的相应子集,从便所述多个处理元件的相应子集收集异常并将所述异常转发至所述核以用于维护。
8.如权利要求1-7中的任一项所述的处理器,进一步包括多个提取控制器,每一个提取控制器耦合至所述多个处理元件的相应子集,并且每一个提取控制器用于使来自所述多个处理元件的相应子集的状态数据被保存到存储器。
9.一种用于电子学的方法,包括:
利用处理器的核的解码器将指令解码为经解码指令;
利用所述处理器的所述核的执行单元执行所述经解码指令以执行第一操作;
接收包括多个节点的数据流图的输入;
将所述数据流图覆盖到所述处理器的多个处理元件以及所述处理器的所述多个处理元件之间的互连网络中,并且每一个节点被表示为所述多个处理元件中的数据流操作器,所述多个处理元件中的每个处理元件包括多个输入缓冲器和多个输出缓冲器,所述互连网络的配置用于通过由从处理元件的每个输出缓冲器向另一处理元件的对应输入缓冲器延伸的回压路径携带的回压信号来指示:直到在输入缓冲器中存在用于新数据值的可用空间,所述新数据值才被加载到输入缓冲器中;以及
当传入操作数集到达处理元件的、被配置成用于根据所述数据流图接收输入数据的一个或多个输入缓冲器并且存储空间在处理元件的、被配置成用于根据所述数据流图存储结果数据的一个或多个输出缓冲器中可用时,利用所述互连网络和所述多个处理元件中的每个处理元件来执行所述数据流图的对应操作。
10.如权利要求9所述的方法,进一步包括:
从存储加载用于所述多个处理元件的相应子集的配置信息;以及根据所述配置信息引起针对所述多个处理元件的每一个相应子集的耦合。
11.如权利要求10所述的方法,进一步包括:从多个配置高速缓存中的相应配置高速缓存取出用于所述多个处理元件的相应子集的配置信息。
12.如权利要求11所述的方法,其中,由所述执行单元执行的所述第一操作为:将配置信息预取到所述多个配置高速缓存中的每一个中。
13.如权利要求10所述的方法,进一步包括:在从所述多个处理元件的相应子集中的至少一个处理元件接收到配置错误消息时,引起对所述至少一个处理元件的重配置。
14.如权利要求10所述的方法,进一步包括:
在接收到重配置请求消息时,引起对所述多个处理元件的相应子集的重配置;以及
禁用与所述多个处理元件的相应子集的通信,直到所述重配置完成。
15.如权利要求9所述的方法,进一步包括:
从所述多个处理元件的相应子集收集异常;以及
将所述异常转发至核以用于维护。
16.如权利要求9-15中的任一项所述的方法,进一步包括:使来自所述多个处理元件的相应子集的状态数据被保存到存储器。
17.一种机器可读介质,包括代码,所述代码当被执行时使机器执行如权利要求9-16中的任一项所述的方法。
18.一种用于电子学的设备,包括:
用于将指令解码为经解码指令的装置;
用于执行所述经解码指令以执行第一操作的装置;
用于接收包括多个节点的数据流图的输入的装置;
用于将数据流图覆盖到多个处理元件以及所述多个处理元件之间的互连网络中的装置,并且每一个节点被表示为所述多个处理元件中的数据流操作器,所述多个处理元件中的每个处理元件包括多个输入缓冲器和多个输出缓冲器,所述互连网络的配置用于通过由从处理元件的每个输出缓冲器向另一处理元件的对应输入缓冲器延伸的回压路径携带的回压信号来指示:直到在输入缓冲器中存在用于新数据值的可用空间,所述新数据值才被加载到输入缓冲器中;以及
用于当传入操作数集到达处理元件的、被配置成用于根据所述数据流图接收输入数据的一个或多个输入缓冲器并且存储空间在处理元件的、被配置成用于根据所述数据流图存储结果数据的一个或多个输出缓冲器中可用时执行对应操作的装置。
CN201810001530.6A 2016-12-30 2018-01-02 具有可配置空间加速器的处理器、方法和*** Active CN108268278B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311494617.9A CN117762484A (zh) 2016-12-30 2018-01-02 具有可配置空间加速器的处理器、方法和***

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/396,402 2016-12-30
US15/396,402 US10558575B2 (en) 2016-12-30 2016-12-30 Processors, methods, and systems with a configurable spatial accelerator

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202311494617.9A Division CN117762484A (zh) 2016-12-30 2018-01-02 具有可配置空间加速器的处理器、方法和***

Publications (2)

Publication Number Publication Date
CN108268278A CN108268278A (zh) 2018-07-10
CN108268278B true CN108268278B (zh) 2023-11-14

Family

ID=62711729

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202311494617.9A Pending CN117762484A (zh) 2016-12-30 2018-01-02 具有可配置空间加速器的处理器、方法和***
CN201810001530.6A Active CN108268278B (zh) 2016-12-30 2018-01-02 具有可配置空间加速器的处理器、方法和***

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202311494617.9A Pending CN117762484A (zh) 2016-12-30 2018-01-02 具有可配置空间加速器的处理器、方法和***

Country Status (2)

Country Link
US (1) US10558575B2 (zh)
CN (2) CN117762484A (zh)

Families Citing this family (93)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10157060B2 (en) 2011-12-29 2018-12-18 Intel Corporation Method, device and system for control signaling in a data path module of a data stream processing engine
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
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US10416999B2 (en) 2016-12-30 2019-09-17 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
CN207517054U (zh) 2017-01-04 2018-06-19 意法半导体股份有限公司 串流开关
US10402527B2 (en) * 2017-01-04 2019-09-03 Stmicroelectronics S.R.L. Reconfigurable interconnect
CN113792847B (zh) 2017-02-23 2024-03-08 大脑***公司 加速的深度学习的设备、方法和***
US11544545B2 (en) 2017-04-04 2023-01-03 Hailo Technologies Ltd. Structured activation based sparsity in an artificial neural network
US11551028B2 (en) 2017-04-04 2023-01-10 Hailo Technologies Ltd. Structured weight based sparsity in an artificial neural network
US10387298B2 (en) 2017-04-04 2019-08-20 Hailo Technologies Ltd Artificial neural network incorporating emphasis and focus techniques
US11615297B2 (en) 2017-04-04 2023-03-28 Hailo Technologies Ltd. Structured weight based sparsity in an artificial neural network compiler
US11238334B2 (en) 2017-04-04 2022-02-01 Hailo Technologies Ltd. System and method of input alignment for efficient vector operations in an artificial neural network
WO2018193354A1 (en) * 2017-04-17 2018-10-25 Cerebras Systems Inc. Wavelet representation for accelerated deep learning
US11488004B2 (en) 2017-04-17 2022-11-01 Cerebras Systems Inc. Neuron smearing for accelerated deep learning
US11475282B2 (en) 2017-04-17 2022-10-18 Cerebras Systems Inc. Microthreading for accelerated deep learning
US10409614B2 (en) 2017-04-24 2019-09-10 Intel Corporation Instructions having support for floating point and integer data types in the same register
US10474458B2 (en) * 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
US10528293B2 (en) * 2017-06-26 2020-01-07 International Business Machines Corporation Grouping devices as a virtual device for providing better quality of device data
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
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
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
US10879904B1 (en) 2017-07-21 2020-12-29 X Development Llc Application specific integrated circuit accelerators
US10790828B1 (en) * 2017-07-21 2020-09-29 X Development Llc Application specific integrated circuit accelerators
US11341400B1 (en) * 2017-08-30 2022-05-24 Marvell Asia Pte, Ltd. Systems and methods for high-throughput computations in a deep neural network
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
US10445098B2 (en) 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
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
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in 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
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
US10417558B1 (en) 2018-09-28 2019-09-17 Deep Insight Solutions, Inc. Methods and systems for artificial neural network optimistic event processing
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication 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
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
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
WO2020044152A1 (en) 2018-08-28 2020-03-05 Cerebras Systems Inc. Scaled compute fabric for accelerated deep learning
WO2020044208A1 (en) 2018-08-29 2020-03-05 Cerebras Systems Inc. Isa enhancements for accelerated deep learning
US11328208B2 (en) 2018-08-29 2022-05-10 Cerebras Systems Inc. Processor element redundancy for accelerated deep learning
CN111079909B (zh) * 2018-10-19 2021-01-26 安徽寒武纪信息科技有限公司 运算方法、***及相关产品
CN111090611A (zh) * 2018-10-24 2020-05-01 上海雪湖信息科技有限公司 一种基于fpga的小型异构分布式计算***
US10831507B2 (en) 2018-11-21 2020-11-10 SambaNova Systems, Inc. Configuration load of a reconfigurable data processor
US11188497B2 (en) * 2018-11-21 2021-11-30 SambaNova Systems, Inc. Configuration unload of a reconfigurable data processor
TWI766211B (zh) * 2018-11-21 2022-06-01 美商聖巴諾瓦系統公司 可重組態資料處理器的組態加載和卸載
US10942985B2 (en) 2018-12-29 2021-03-09 Intel Corporation Apparatuses, methods, and systems for fast fourier transform configuration and computation instructions
US10922077B2 (en) 2018-12-29 2021-02-16 Intel Corporation Apparatuses, methods, and systems for stencil configuration and computation instructions
US10678724B1 (en) 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
US10698853B1 (en) 2019-01-03 2020-06-30 SambaNova Systems, Inc. Virtualization of a reconfigurable data processor
US10768899B2 (en) 2019-01-29 2020-09-08 SambaNova Systems, Inc. Matrix normal/transpose read and a reconfigurable data processor including same
US11429555B2 (en) 2019-02-26 2022-08-30 Apple Inc. Coprocessors with bypass optimization, variable grid architecture, and fused vector operations
KR20210135998A (ko) 2019-03-15 2021-11-16 인텔 코포레이션 매트릭스 가속기 아키텍처를 위한 희소 최적화
EP3938914A1 (en) 2019-03-15 2022-01-19 INTEL Corporation Dynamic memory reconfiguration
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US10965536B2 (en) 2019-03-30 2021-03-30 Intel Corporation Methods and apparatus to insert buffers in a dataflow graph
US11029927B2 (en) 2019-03-30 2021-06-08 Intel Corporation Methods and apparatus to detect and annotate backedges 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
US11386038B2 (en) 2019-05-09 2022-07-12 SambaNova Systems, Inc. Control flow barrier and reconfigurable data processor
CN110163372B (zh) * 2019-05-31 2020-04-21 中科寒武纪科技股份有限公司 运算方法、装置及相关产品
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
US11334647B2 (en) 2019-06-29 2022-05-17 Intel Corporation Apparatuses, methods, and systems for enhanced matrix multiplier architecture
US11055141B2 (en) 2019-07-08 2021-07-06 SambaNova Systems, Inc. Quiesce reconfigurable data processor
CN112308198A (zh) * 2019-07-26 2021-02-02 中科寒武纪科技股份有限公司 循环神经网络的计算方法及相关产品
US11080227B2 (en) * 2019-08-08 2021-08-03 SambaNova Systems, Inc. Compiler flow logic for reconfigurable architectures
US11847450B2 (en) 2019-12-13 2023-12-19 Intel Corporation Apparatuses, methods, and systems for instructions to multiply values of zero
US11875154B2 (en) 2019-12-13 2024-01-16 Intel Corporation Apparatuses, methods, and systems for instructions to multiply floating-point values of about zero
US11650819B2 (en) 2019-12-13 2023-05-16 Intel Corporation Apparatuses, methods, and systems for instructions to multiply floating-point values of about one
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
US11593609B2 (en) 2020-02-18 2023-02-28 Stmicroelectronics S.R.L. Vector quantization decoding hardware unit for real-time dynamic decompression for parameters of neural networks
US11366618B2 (en) 2020-03-02 2022-06-21 Silicon Motion, Inc. All flash array server and control method thereof
US11249683B2 (en) 2020-03-13 2022-02-15 Intel Corporation Simulated-annealing based memory allocations
US11366647B2 (en) 2020-04-30 2022-06-21 Intel Corporation Automatic compiler dataflow optimization to enable pipelining of loops with local storage requirements
US11531873B2 (en) 2020-06-23 2022-12-20 Stmicroelectronics S.R.L. Convolution acceleration with embedded vector decompression
US11809908B2 (en) 2020-07-07 2023-11-07 SambaNova Systems, Inc. Runtime virtualization of reconfigurable data flow resources
US11782729B2 (en) 2020-08-18 2023-10-10 SambaNova Systems, Inc. Runtime patching of configuration files
US11874900B2 (en) 2020-09-29 2024-01-16 Hailo Technologies Ltd. Cluster interlayer safety mechanism in an artificial neural network processor
US11221929B1 (en) 2020-09-29 2022-01-11 Hailo Technologies Ltd. Data stream fault detection mechanism in an artificial neural network processor
US11263077B1 (en) 2020-09-29 2022-03-01 Hailo Technologies Ltd. Neural network intermediate results safety mechanism in an artificial neural network processor
US11237894B1 (en) 2020-09-29 2022-02-01 Hailo Technologies Ltd. Layer control unit instruction addressing safety mechanism in an artificial neural network processor
US11811421B2 (en) 2020-09-29 2023-11-07 Hailo Technologies Ltd. Weights safety mechanism in an artificial neural network 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
US11409540B1 (en) 2021-07-16 2022-08-09 SambaNova Systems, Inc. Routing circuits for defect repair for a reconfigurable data processor
US11487694B1 (en) 2021-12-17 2022-11-01 SambaNova Systems, Inc. Hot-plug events in a pool of reconfigurable data flow resources
CN115145832B (zh) * 2022-09-05 2022-11-11 北京麟卓信息科技有限公司 一种公共数据的多线程访问轨迹的分析方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8812820B2 (en) * 2003-08-28 2014-08-19 Pact Xpp Technologies Ag Data processing device and method
CN104641346A (zh) * 2012-09-28 2015-05-20 英特尔公司 用于在128位数据路径上的sha1轮处理的指令集

Family Cites Families (273)

* 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.
US5093920A (en) 1987-06-25 1992-03-03 At&T Bell Laboratories Programmable processing elements interconnected by a communication network including field operation unit for performing field operations
GB8717689D0 (en) 1987-07-25 1987-09-03 British Petroleum Co Plc Computers
US5655096A (en) 1990-10-12 1997-08-05 Branigin; Michael H. Method and apparatus for dynamic scheduling of instructions to ensure sequentially coherent data in a processor employing out-of-order execution
EP1526446A3 (en) 1991-07-08 2007-04-04 Seiko Epson Corporation Extensible RISC microprocessor architecture
JPH0713945A (ja) * 1993-06-16 1995-01-17 Nippon Sheet Glass Co Ltd 演算処理部および制御・記憶部分離型マルチプロセッサ ・システムのバス構造
US6460131B1 (en) 1993-08-03 2002-10-01 Xilinx Inc. FPGA input output buffer with registered tristate enable
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
WO1997004552A1 (en) 1995-07-19 1997-02-06 Fujitsu Network Communications, Inc. Point-to-multipoint transmission using subqueues
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
US6212623B1 (en) 1998-08-24 2001-04-03 Advanced Micro Devices, Inc. Universal dependency vector/queue entry
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
AU3829500A (en) 1999-04-09 2000-11-14 Clearspeed Technology Limited Parallel data processing apparatus
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
US6507947B1 (en) 1999-08-20 2003-01-14 Hewlett-Packard Company Programmatic synthesis of processor element arrays
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
US6877044B2 (en) 2000-02-10 2005-04-05 Vicom Systems, Inc. Distributed storage management platform architecture
US7210025B1 (en) 2000-04-19 2007-04-24 Uht Augustus K Automatic and transparent hardware conversion of traditional control flow to predicates
CN1486568A (zh) 2000-11-28 2004-03-31 ϣ�����ʹ�˾ 内容/服务处理及输送
GB2370381B (en) 2000-12-19 2003-12-24 Picochip Designs Ltd Processor architecture
WO2002065700A2 (en) 2001-02-14 2002-08-22 Clearspeed Technology Limited An interconnection system
US6728945B1 (en) 2001-02-26 2004-04-27 Cadence Design Systems, Inc. Behavioral level observability analysis and its applications
US6553448B1 (en) 2001-03-01 2003-04-22 3Com Corporation Method for unit distance encoding of asynchronous pointers for non-power-of-two sized buffers
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
AU2002344288A1 (en) 2001-05-25 2002-12-09 Annapolis Micro Systems, Inc. Method and apparatus for modeling dataflow systems and realization to hardware
US20020184291A1 (en) 2001-05-31 2002-12-05 Hogenauer Eugene B. Method and system for scheduling in an adaptable computing engine
US7305492B2 (en) 2001-07-06 2007-12-04 Juniper Networks, Inc. Content service aggregation system
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
US6834383B2 (en) 2001-11-26 2004-12-21 Microsoft Corporation Method for binary-level branch reversal on computer architectures supporting predicated execution
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
JP3912091B2 (ja) 2001-12-04 2007-05-09 ソニー株式会社 データ通信システム、データ送信装置、データ受信装置、および方法、並びにコンピュータ・プログラム
US6912612B2 (en) 2002-02-25 2005-06-28 Intel Corporation Shared bypass bus structure
US9170812B2 (en) * 2002-03-21 2015-10-27 Pact Xpp Technologies Ag Data processing system having integrated pipelined array data processor
EP1495412B1 (en) 2002-03-22 2012-11-28 Alandro Consulting NY LLC 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
WO2004021176A2 (de) 2002-08-07 2004-03-11 Pact Xpp Technologies Ag Verfahren und vorrichtung zur datenverarbeitung
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
US7415540B2 (en) 2002-12-31 2008-08-19 Intel Corporation Scheduling processing threads
US7047370B1 (en) 2003-01-14 2006-05-16 Cisco Technology, Inc. Full access to memory interfaces via remote request
SE0300742D0 (sv) 2003-03-17 2003-03-17 Flow Computing Ab Data Flow Machine
US20050025120A1 (en) 2003-06-18 2005-02-03 O'toole Anthony J.P. 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
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 日本電気株式会社 アレイ型プロセッサ
US20050223131A1 (en) 2004-04-02 2005-10-06 Goekjian Kenneth S Context-based direct memory access engine for use with a memory system shared by devices associated with multiple input and output ports
US7509484B1 (en) 2004-06-30 2009-03-24 Sun Microsystems, Inc. Handling cache misses by selectively flushing the pipeline
JP4546775B2 (ja) 2004-06-30 2010-09-15 富士通株式会社 時分割多重処理可能なリコンフィギュラブル回路
US7890735B2 (en) 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
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
US7676646B2 (en) 2005-03-02 2010-03-09 Cisco Technology, Inc. Packet processor with wide register set architecture
US7546331B2 (en) 2005-03-17 2009-06-09 Qualcomm Incorporated Low power array multiplier
US8694589B2 (en) 2005-03-31 2014-04-08 Google Inc. Methods and systems for saving draft electronic communications
US7373444B2 (en) 2005-04-15 2008-05-13 Kabushiki Kaisha Toshiba Systems and methods for manipulating entries in a command buffer using tag information
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
WO2007031696A1 (en) 2005-09-13 2007-03-22 Arm Limited Cache miss detection in a data processing apparatus
JP2007079958A (ja) 2005-09-14 2007-03-29 Hitachi Ltd 記憶制御装置、データ処理方法、及びコンピュータプログラム
US7472299B2 (en) 2005-09-30 2008-12-30 Intel Corporation Low power arbiters in interconnection routers
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
US7533244B2 (en) 2006-05-09 2009-05-12 Le Nguyen Tran Network-on-chip dataflow architecture
US7817652B1 (en) 2006-05-12 2010-10-19 Integrated Device Technology, Inc. System and method of constructing data packets in a packet switch
CN101438232B (zh) 2006-05-16 2015-10-21 英特尔公司 不同浮点格式的浮点加法
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
US7493406B2 (en) 2006-06-13 2009-02-17 International Business Machines Corporation Maximal flow scheduling for a stream processing system
US8456191B2 (en) 2006-06-21 2013-06-04 Element Cxi, Llc Data-driven integrated circuit architecture
US20080072113A1 (en) 2006-08-30 2008-03-20 Siukwin Tsang Method of locating packet for resend from retry buffer
US9946547B2 (en) 2006-09-29 2018-04-17 Arm Finance Overseas Limited Load/store unit for a processor, and applications thereof
US8095699B2 (en) 2006-09-29 2012-01-10 Mediatek Inc. Methods and apparatus for interfacing between a host processor and a coprocessor
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
US20090300324A1 (en) 2007-01-19 2009-12-03 Nec Corporation Array type processor and data processing system
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
US7843215B2 (en) 2007-03-09 2010-11-30 Quadric, Inc. Reconfigurable array to compute digital algorithms
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
US7921686B2 (en) 2007-08-28 2011-04-12 Cisco Technology, Inc. Highly scalable architecture for application network appliances
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 재단법인서울대학교산학협력재단 프로세서 및 메모리 제어 방법
US7936753B1 (en) 2007-11-30 2011-05-03 Qlogic, Corporation Method and system for reliable multicast
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
US8356162B2 (en) 2008-03-18 2013-01-15 International Business Machines Corporation Execution unit with data dependent conditional write instructions
WO2009115581A2 (en) 2008-03-19 2009-09-24 Cryo-Save Ag Improved cryopreservation of adipose tissue for the isolation of mesenchymal stem cells
RU2374684C1 (ru) 2008-05-04 2009-11-27 Государственное образовательное учреждение высшего профессионального образования Курский государственный технический университет Параллельно-конвейерное устройство для векторизации аэрокосмических изображений земной поверхности
US8316252B2 (en) 2008-05-30 2012-11-20 Advanced Micro Devices, Inc. Distributed clock gating with centralized state machine control
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
US20100191911A1 (en) 2008-12-23 2010-07-29 Marco Heddes System-On-A-Chip Having an Array of Programmable Processing Elements Linked By an On-Chip Network with Distributed On-Chip Shared Memory and External Shared Memory
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
US8248936B2 (en) 2009-04-01 2012-08-21 Lockheed Martin Corporation Tuning congestion control in IP multicast to mitigate the impact of blockage
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
WO2011123151A1 (en) 2010-04-02 2011-10-06 Tabula Inc. System and method for reducing reconfiguration power usage
WO2011133030A1 (en) 2010-04-23 2011-10-27 Vector Fabrics B.V. Improved embedded system performance
US9285860B2 (en) 2010-05-03 2016-03-15 Qualcomm Incorporated Apparatus and methods employing variable clock gating hysteresis for a communications port
KR101751045B1 (ko) 2010-05-25 2017-06-27 삼성전자 주식회사 3d 반도체 장치
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
CN101950282B (zh) 2010-08-30 2012-05-23 中国科学院计算技术研究所 一种多处理器***及其同步引擎
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 삼성전자주식회사 부동 소수점의 복합 연산장치 및 그 연산방법
US9274962B2 (en) 2010-12-07 2016-03-01 Intel Corporation Apparatus, method, and system for instantaneous cache state recovery from speculative abort/commit
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
JP5693712B2 (ja) 2011-04-21 2015-04-01 ルネサスエレクトロニクス株式会社 半導体集積回路
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
US20130024875A1 (en) 2011-07-22 2013-01-24 Yilin Wang Event System And Methods For Using Same
US9148495B2 (en) 2011-07-26 2015-09-29 International Business Machines Corporation Dynamic runtime choosing of processing communication methods
US8990452B2 (en) 2011-07-26 2015-03-24 International Business Machines Corporation Dynamic reduction of stream backpressure
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
US10157060B2 (en) 2011-12-29 2018-12-18 Intel Corporation Method, device and system for control signaling in a data path module of a data stream processing engine
RU2586589C2 (ru) * 2011-12-30 2016-06-10 Интел Корпорейшн Модуль сопроцессора кэша
KR101968512B1 (ko) 2012-02-21 2019-04-12 삼성전자주식회사 Nfc를 이용한 멀티미디어 데이터 송수신 장치 및 방법
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
US9292569B2 (en) 2012-10-02 2016-03-22 Oracle International Corporation Semi-join acceleration
US9632787B2 (en) 2012-10-23 2017-04-25 Ca, Inc. Data processing system with data characteristic based identification of corresponding instructions
DE112012007058T5 (de) 2012-12-19 2015-08-06 Intel Corporation Vektormaskengesteuertes Clock-Gating für Leistungseffizenz eines Prozessors
US8693490B1 (en) 2012-12-20 2014-04-08 Unbound Networks, Inc. Parallel processing using multi-core processor
US9104474B2 (en) 2012-12-28 2015-08-11 Intel Corporation Variable precision floating point multiply-add circuit
US9424045B2 (en) 2013-01-29 2016-08-23 Arm Limited Data processing apparatus and method for controlling use of an issue queue to represent an instruction suitable for execution by a wide operand execution unit
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
US9886072B1 (en) 2013-06-19 2018-02-06 Altera Corporation Network processor FPGA (npFPGA): multi-die FPGA chip for scalable multi-gigabit network processing
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
US9996490B2 (en) 2013-09-19 2018-06-12 Nvidia Corporation Technique for scaling the bandwidth of a processing element to match the bandwidth of an interconnect
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
HUP1300561A2 (en) 2013-09-27 2015-03-30 Pazmany Peter Katolikus Egyetem Computer architecture and processing
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 株式会社リコー 情報処理システム及び情報処理方法
US9699079B2 (en) 2013-12-30 2017-07-04 Netspeed Systems Streaming bridge design with host interfaces and network on chip (NoC) layers
US10591983B2 (en) 2014-03-14 2020-03-17 Wisconsin Alumni Research Foundation Computer accelerator system using a trigger architecture memory access processor
US20150268963A1 (en) 2014-03-23 2015-09-24 Technion Research & Development Foundation Ltd. Execution of data-parallel programs on coarse-grained reconfigurable architecture hardware
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
US9330433B2 (en) 2014-06-30 2016-05-03 Intel Corporation Data distribution fabric in scalable GPUs
WO2016003646A1 (en) 2014-06-30 2016-01-07 Unisys Corporation Enterprise management for secure network communications over ipsec
US10108241B2 (en) 2014-09-15 2018-10-23 Intel Corporation Method and apparatus for saving power of a processor socket in a multi-socket computer system
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
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
US9990367B2 (en) 2015-07-27 2018-06-05 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
US20170062075A1 (en) 2015-08-31 2017-03-02 Sandisk Technologies Inc. Apparatus including core and clock gating circuit and method of operating same
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
US11775136B2 (en) 2016-04-27 2023-10-03 Coda Project, Inc. Conditional formatting
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
US10037267B2 (en) 2016-10-21 2018-07-31 Advanced Micro Devices, Inc. Instruction set architecture and software support for register state migration
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10180928B2 (en) 2016-12-31 2019-01-15 Intel Corporation Heterogeneous hardware accelerator architecture for processing sparse matrix data with skewed non-zero distributions
US20180189675A1 (en) 2016-12-31 2018-07-05 Intel Corporation Hardware accelerator architecture and template for web-scale k-means clustering
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
US10778767B2 (en) 2017-04-28 2020-09-15 International Business Machines Corporation Persistent memory replication in RDMA-capable networks
US10645448B2 (en) 2017-05-15 2020-05-05 Omnivision Technologies, Inc. Buffer-aware transmission rate control for real-time video streaming system
US10191871B2 (en) 2017-06-20 2019-01-29 Infineon Technologies Ag Safe double buffering using DMA safe linked lists
US10346145B2 (en) 2017-06-23 2019-07-09 Intel Corporation Loop execution with predicate computing for dataflow machines
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
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
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
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
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
US10461747B2 (en) 2017-09-20 2019-10-29 Apple Inc. Low power clock gating circuit
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
US10445098B2 (en) 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
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
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with 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
US20190303263A1 (en) 2018-03-30 2019-10-03 Kermin E. Fleming, JR. Apparatus, methods, and systems for integrated performance monitoring in a configurable spatial accelerator
US20190303297A1 (en) 2018-04-02 2019-10-03 Intel Corporation Apparatus, methods, and systems for remote memory access 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
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues 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

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8812820B2 (en) * 2003-08-28 2014-08-19 Pact Xpp Technologies Ag Data processing device and method
CN104641346A (zh) * 2012-09-28 2015-05-20 英特尔公司 用于在128位数据路径上的sha1轮处理的指令集

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CONTEXT SAVING AND RESTORING FOR MULTITASKING IN RECONFIGURABLE SYSTEMS;H.Kalte et al;《International Conference on Field Programmable Logic and Applications, 2005》;20051010;223-228页 *
Run-time Partial Reconfiguration on the Virtex-II Pro;stefan;《Computer Engineering》;20071231;1-69页 *
SIMD指令集设计空间的形式化描述;李春江等;《计算机科学》;20130630;第40卷(第06期);32-36页 *

Also Published As

Publication number Publication date
US10558575B2 (en) 2020-02-11
CN108268278A (zh) 2018-07-10
CN117762484A (zh) 2024-03-26
US20180189231A1 (en) 2018-07-05

Similar Documents

Publication Publication Date Title
CN108268278B (zh) 具有可配置空间加速器的处理器、方法和***
CN109215728B (zh) 用于分布式存储器危险检测和错误恢复的存储器电路和方法
US11086816B2 (en) Processors, methods, and systems for debugging a configurable spatial accelerator
US10445451B2 (en) Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10380063B2 (en) Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
US10496574B2 (en) Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US11307873B2 (en) Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10416999B2 (en) Processors, methods, and systems with a configurable spatial accelerator
US10387319B2 (en) Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US10515046B2 (en) Processors, methods, and systems with a configurable spatial accelerator
US10467183B2 (en) Processors and methods for pipelined runtime services in a spatial array
US10469397B2 (en) Processors and methods with configurable network-based dataflow operator circuits
US10445234B2 (en) Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10915471B2 (en) Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US20190004878A1 (en) Processors, methods, and systems for a configurable spatial accelerator with security, power reduction, and performace features
CN111566623A (zh) 用于可配置空间加速器中的集成性能监视的装置、方法和***
US20190101952A1 (en) Processors and methods for configurable clock gating in a spatial array
CN111868702A (zh) 用于可配置空间加速器中的远程存储器访问的装置、方法和***
CN111512298A (zh) 用于可配置空间加速器中的条件队列的装置、方法和***
US10459866B1 (en) Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator
CN111767080A (zh) 用于可配置空间加速器中的操作的设备、方法和***
US20220100680A1 (en) Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits
US20200210358A1 (en) Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
WO2020005449A1 (en) Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
CN112148664A (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
GR01 Patent grant
GR01 Patent grant