CN111767236A - 用于可配置空间加速器中的存储器接口电路分配的装置、方法和系统 - Google Patents

用于可配置空间加速器中的存储器接口电路分配的装置、方法和系统 Download PDF

Info

Publication number
CN111767236A
CN111767236A CN202010181220.4A CN202010181220A CN111767236A CN 111767236 A CN111767236 A CN 111767236A CN 202010181220 A CN202010181220 A CN 202010181220A CN 111767236 A CN111767236 A CN 111767236A
Authority
CN
China
Prior art keywords
memory
data
interface circuit
memory interface
processing element
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010181220.4A
Other languages
English (en)
Inventor
K·丘弗莱明
Y·白
S·C·史迪力
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN111767236A publication Critical patent/CN111767236A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • 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
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0853Cache with multiport tag or data arrays
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0857Overlapped cache accessing, e.g. pipeline by multiple requestors
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1684Details of memory controller using multiple buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • 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
    • G06F2212/1024Latency reduction
    • 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/1041Resource optimization
    • 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/601Reconfiguration of cache memory
    • 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 Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

描述了关于可配置空间加速器中的存储器接口电路分配的系统、方法和装置。在一个实施例中,可配置空间加速器(CSA)包括:多个处理元件;多个请求地址文件(RAF)电路;以及多个处理元件与RAF电路之间的电路交换型互连网络。作为数据流架构,CSA的实施例具有独特的存储器架构,其中存储器访问被解耦为允许通过存储器流水线化的显式的请求和响应阶段。本文中的某些实施例经由本文中讨论的对分配的改进来提供改进的存储器子系统设计。

Description

用于可配置空间加速器中的存储器接口电路分配的装置、方 法和系统
关于联邦资助的研发的声明
本发明是在由国防部授予的合同号H98230-13-D-0124的政府支持 下进行的。政府具有本发明的某些权益。
技术领域
本公开总体上关于电子学,更具体地,本公开的实施例关于用于可 配置空间加速器的存储器接口电路的分配电路。
背景技术
处理器或处理器集合执行来自指令集(例如,指令集架构(ISA)) 的指令。指令集是计算机架构的关于编程的部分,并且一般包括原生数据类型、 指令、寄存器架构、寻址模式、存储器架构、中断和异常处置以及外部输入和 输出(I/O)。应当注意,术语“指令”在本文中可以指宏指令或指微指令,该宏 指令例如提供给处理器供执行的指令,该微指令例如由处理器的解码器对宏指 令解码所产生的指令。
附图说明
在所附附图中以示例方式而非限制方式图示本公开,在附图中,类 似的附图标记指示类似的要素,其中:
图1图示根据本公开的实施例的加速器片。
图2图示根据本公开的实施例的耦合至存储器的硬件处理器。
图3A图示根据本公开的实施例的程序源。
图3B图示根据本公开的实施例的针对图3A的程序源的数据流图。
图3C图示根据本公开的配置成用于执行图3B的数据流图的具有多 个处理元件的加速器。
图4图示根据本公开的实施例的数据流图的示例执行。
图5图示根据本公开的实施例的程序源。
图6图示根据本公开的实施例的加速器片,该加速器片包括处理元 件的阵列。
图7A图示根据本公开的实施例的可配置数据路径网络。
图7B图示根据本公开的实施例的可配置流控制路径网络。
图8图示根据本公开的实施例的电路交换型网络。
图9图示根据本公开的实施例的包括加速器的硬件处理器片。
图10图示根据本公开的实施例的处理元件。
图11图示根据本公开的实施例的请求地址文件(RAF)电路。
图12图示根据本公开的实施例的另一请求地址文件(RAF)电路。
图13图示根据本公开的实施例的耦合在多个加速器片与多个高速 缓存区块之间的多个请求地址文件(RAF)电路。
图14图示根据本公开的实施例的耦合在多个加速器片与多个高速 缓存区块之间的多个请求地址文件(RAF)电路。
图15图示根据本公开的实施例的流程图。
图16图示根据本公开的实施例的可配置空间加速器及其存储器子 系统的高级别视图。
图17图示根据本公开的实施例的RAF电路与高速缓存区块之间的、 利用针对RAF电路分配的投标组的网络。
图18图示根据本公开的实施例的另一请求地址文件(RAF)电路。
图19图示根据本公开的实施例的针对分配的软件流程。
图20图示根据本公开的实施例的伪代码函数调用的数据流图。
图21图示根据本公开的实施例的具有多个网络数据流端点电路的 处理元件的空间阵列。
图22图示根据本公开的实施例的网络数据流端点电路。
图23图示根据本公开的实施例的用于发送操作和接收操作的数据 格式。
图24图示根据本公开的实施例的用于发送操作的另一数据格式。
图25图示根据本公开的实施例的配置电路元件(例如,网络数据 流端点电路)数据格式以配置用于发送(例如,switch(切换))操作和接收 (例如,pick(挑选))操作的电路元件(例如,网络数据流端点电路)。
图26图示根据本公开的实施例的配置数据格式,其用于利用标注 在电路上的电路元件(例如,网络数据流端点电路)的输入、输出和控制数据 来配置用于发送操作的电路元件(例如,网络数据流端点电路)。
图27图示根据本公开的实施例的配置数据格式,其用于利用标注 在电路上的电路元件(例如,网络数据流端点电路)的输入、输出和控制数据 来配置用于所选择操作的电路元件(例如,网络数据流端点电路)。
图28图示根据本公开的实施例的配置数据格式,其用于利用标注 在电路上的电路元件(例如,网络数据流端点电路)的输入、输出和控制数据 来配置用于Switch(切换)操作的电路元件(例如,网络数据流端点电路)。
图29图示根据本公开的实施例的配置数据格式,其用于利用标注 在电路上的电路元件(例如,网络数据流端点电路)的输入、输出和控制数据 来配置用于SwitchAny(切换任何)操作的电路元件(例如,网络数据流端点 电路)。
图30图示根据本公开的实施例的配置数据格式,其用于利用标注 在电路上的电路元件(例如,网络数据流端点电路)的输入、输出和控制数据 来配置用于Pick操作的电路元件(例如,网络数据流端点电路)。
图31图示根据本公开的实施例的配置数据格式,其用于利用标注 在电路上的电路元件(例如,网络数据流端点电路)的输入、输出和控制数据 来配置用于PickAny(挑选任何)操作的电路元件(例如,网络数据流端点电 路)。
图32图示根据本公开的实施例的对由用于执行的网络数据流端点 电路进行的操作的选择。
图33图示根据本公开的实施例的网络数据流端点电路。
图34图示根据本公开的实施例的当执行pick(挑选)操作时接收 输入零(0)的网络数据流端点电路。
图35图示根据本公开的实施例的当执行pick(挑选)操作时接收输 入一(1)的网络数据流端点电路。
图36图示根据本公开的实施例的当执行pick(挑选)操作时输出 所选择的输入的网络数据流端点电路。
图37图示根据本公开的实施例的流程图。
图38图示根据本公开的实施例的分区为三个区域(结果区域、三 个潜在的进位区域和门控区域)的浮点乘法器。
图39图示根据本公开的实施例的具有多个处理元件的加速器的运 行中(in-flight)配置。
图40图示根据本公开的实施例的运行中流水线式提取的快照。
图41图示根据本公开的实施例的用于加速器的编译工具链。
图42图示根据本公开的实施例的用于加速器的编译器。
图43A图示根据本公开的实施例的序列化汇编代码。
图43B图示根据本公开的实施例的针对图43A的序列化汇编代码的 数据流汇编代码。
图43C图示根据本公开的实施例的用于加速器的针对图43B的数据 流汇编代码的数据流图。
图44A图示根据本公开的实施例的C源代码。
图44B图示根据本公开的实施例的针对图44A的C源代码的数据 流汇编代码。
图44C示出根据本公开的实施例的用于加速器的针对图44B的数据 流汇编代码的数据流图。
图45A图示根据本公开的实施例的C源代码。
图45B图示根据本公开的实施例的针对图45A的C源代码的数据 流汇编代码。
图45C图示根据本公开的实施例的用于加速器的针对图45B的数据 流汇编代码的数据流图。
图46A图示根据本公开的实施例的流程图。
图46B图示根据本公开的实施例的流程图。
图47图示根据本公开的实施例的吞吐量相对于每个操作的能量的 图表。
图48图示根据本公开的实施例的加速器片,该加速器片包括处理 元件的阵列和本地配置控制器。
图49A-图49C图示根据本公开的实施例的配置数据路径网络的本 地配置控制器。
图50图示根据本公开的实施例的配置控制器。
图51图示根据本公开的实施例的加速器片,该加速器片包括处理 元件的阵列、配置高速缓存和本地配置控制器。
图52图示根据本公开的实施例的加速器片,该加速器片包括处理 元件的阵列以及具有重配置电路的配置和异常处置控制器。
图53图示根据本公开的实施例的重配置电路。
图54图示根据本公开的实施例的加速器片,该加速器片包括处理 元件的阵列以及具有重配置电路的配置和异常处置控制器。
图55图示根据本公开的实施例的加速器片,该加速器片包括处理 元件的阵列以及耦合至片级异常聚合器的夹层异常聚合器。
图56图示根据本公开的实施例的具有异常生成器的处理元件。
图57图示根据本公开的实施例的加速器片,该加速器片包括处理 元件的阵列和本地提取控制器。
图58A-图58C图示根据本公开的实施例的配置数据路径网络的本 地提取控制器。
图59图示根据本公开的实施例的提取控制器。
图60图示根据本公开的实施例的流程图。
图61图示根据本公开的实施例的流程图。
图62A是根据本公开的实施例的系统的框图,该系统采用插入在存 储器子系统与加速硬件之间的存储器排序电路。
图62B是根据本公开的实施例的图62A中的系统的框图,但是该系 统采用多个存储器排序电路。
图63是图示根据本公开的实施例的进入加速硬件以及离开加速硬 件的存储器操作的一般运行的框图。
图64是图示根据本公开的实施例的存储操作的空间依赖性流的框 图。
图65是根据本公开的实施例的图62中的存储器排序电路的详细框 图。
图66是根据本公开的实施例的图62中的存储器排序电路的微架构 的流示图。
图67是根据本公开的实施例的可执行确定器电路的框图。
图68是根据本公开的实施例的优先级编码器的框图。
图69是根据本公开的实施例的逻辑和二进制两种形式的示例性加 载操作的框图。
图70A是图示根据本公开的实施例的示例代码的逻辑执行的流示 图。
图70B是图示根据本公开的实施例的示例代码的展开版本中的存储 器级并行性的图70A的流示图。
图71A是根据本公开的实施例的用于加载操作以及用于存储操作 的示例性存储器自变量(argument)的框图。
图71B是图示根据本公开的实施例的、通过图66中的存储器排序 电路的微架构进行加载操作和存储操作(诸如,图71A中的那些操作)的流的 框图。
图72A、图72B、图72C、图72D、图72E、图72F、图72G和图 72H是图示根据本公开的实施例的通过图72B中的微架构的队列对示例性程序 进行的加载操作和存储操作的功能流的框图。
图73是根据本公开的实施例的用于对加速硬件与乱序存储器子系 统之间的存储器操作进行排序的方法的流程图。
图74A是图示根据本公开的实施例的通用向量友好指令格式及其A 类指令模板的框图。
图74B是图示根据本公开的实施例的通用向量友好指令格式及其B 类指令模板的框图。
图75A是图示根据本公开的实施例的用于图74A和图74B中的通 用向量友好指令格式的字段的框图。
图75B是图示根据本公开的一个实施例的构成完整操作码字段的图 75A中的专用向量友好指令格式的字段的框图。
图75C是图示根据本公开的一个实施例的构成寄存储器索引字段的 图75A中的专用向量友好指令格式的字段的框图。
图75D是图示根据本公开的一个实施例的构成扩充操作字段7450 的图75A中的专用向量友好指令格式的字段的框图。
图76是根据本公开的一个实施例的寄存器架构的框图。
图77A是图示根据本公开的实施例的示例性有序流水线和示例性 的寄存器重命名的乱序发布/执行流水线两者的框图。
图77B是图示根据本公开的实施例的要包括在处理器中的有序架构 核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核两者的框 图。
图78A是根据本公开的实施例的单个处理器核以及其到管芯上互 连网络的连接以及它的第2级(L2)高速缓存的本地子集的框图。
图78B是根据本公开的实施例的图78A中的处理器核的一部分的 展开图。
图79是根据本公开的实施例的可具有多于一个的核、可具有集成 存储器控制器、并且可具有集成图形器件的处理器的框图。
图80是根据本公开的一个实施例的系统的框图。
图81是根据本公开的实施例的更具体的示例性系统的框图。
图82所示的是根据本公开的实施例的第二更具体的示例性系统的 框图。
图83示出的是根据本公开的实施例的芯片上系统(SoC)的框图。
图84是根据本公开的实施例的对照使用软件指令转换器将源指令 集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
在以下描述中,陈述了多个具体细节。然而,应当理解,可不通 过这些具体细节来实施本公开的实施例。在其他实例中,未详细示出公知的电 路、结构以及技术,以免模糊对本描述的理解。
说明书中对“一个实施例”、“实施例”、“示例实施例”等等的引用表 明所描述的实施例可以包括特定的特征、结构或特性,但是每个实施例不一定 都包括该特定的特征、结构或特性。此外,此类短语不一定是指同一个实施例。 此外,当结合实施例描述特定的特征、结构或特性时,认为结合无论是否被明 确描述的其他实施例而影响此类特征、结构或特性是在本领域技术人员的知识 范围之内的。
(例如,具有一个或多个核的)处理器可执行指令(例如,指令线 程)以对数据操作,从而例如执行算术、逻辑或其他功能。例如,软件可请求 操作,并且硬件处理器(例如,该硬件处理器的一个或多个核)可响应于该请 求而执行该操作。操作的一个非限制性示例是输入多个向量元素并输出具有经 混合的多个元素的向量的混合操作。在某些实施例中,多个操作利用对单条指 令的执行来完成。
例如由美国能源部定义的百亿亿次级性能可要求系统级浮点性能 在给定的(例如,20MW)功率预算内超过每秒1018次浮点操作(exaFLOP) 或更多。本文中的某些实施例涉及针对例如处理器的高性能计算(HPC)的处 理元件的空间阵列(例如,可配置空间加速器(CSA))。处理元件的空间阵 列(例如,CSA)的本文中的某些实施例针对数据流图的直接执行以实现远超 常规路线图架构的计算密集但高能效的空间微架构。本文中的某些实施例例如 除了通信网络在处理元件、存储器等之间路由数据和/或通信网络执行其他通信 (例如,非数据处理)操作之外,还将(例如,高基)数据流操作叠加在通信 网络上。本文中的某些实施例例如除了通信网络在处理元件、存储器等之间路 由数据或通信网络执行其他通信操作之外,还涉及(例如,耦合到)处理元件 的空间阵列(例如,CSA)的通信网络(例如,分组交换型网络)执行某些数 据流操作。本文中的某些实施例涉及(例如,各自)执行例如数据流图的(例 如,部分或全部)一个或多个数据流操作(例如,pick(挑选)数据流操作或switch(切换)数据流操作)的网络数据流端点电路。本文中的某些实施例包 括扩充的网络端点(例如,网络数据流端点电路),这些扩充的网络端点例如 利用网络端点来执行(例如,数据流)操作而不是处理元件(例如,核)或(例 如,用于执行算术和逻辑操作的)算术逻辑单元执行那个(例如,数据流)操 作来支持对(例如,多个)数据流操作(或数据流操作的子集)的控制。在一 个实施例中,网络数据流端点电路与空间整列(例如,互连或互连的结构)和 /或处理元件分开。
下文也包括对处理元件的空间阵列(例如,CSA)及其某些特征的 实施例的架构理念的描述。如同任何革命性的架构那样,可编程性可能是风险。 为了缓解该问题,已利用编译工具链(其也在下文中讨论)对CSA架构的实 施例进行共同设计。
引论
百亿亿次级计算目标可要求在急剧的功率预算(例如,20MW)内 的巨量系统级浮点性能(例如,1个ExaFLOP)。然而,利用经典的冯·诺依 曼(von Neumann)架构来同时改善程序执行的性能和能效已变得困难:乱序 调度、同时多线程操作、复杂寄存器堆和其他结构提供性能,但是以高能量成 本来提供。本文中的某些实施例同时实现性能和能量要求。百亿亿次级计算功 率-性能目标可针对每次操作既要求高吞吐量又要求低能耗。本文中的某些实 施例通过提供大量低复杂度、高能效的处理(例如,计算)元件来提供此,这 些低复杂度、高能效的处理元件极大地消除了先前处理器设计的控制开销。受 此观察结果引导,本文中的某些实施例包括处理元件的空间阵列,例如,可配 置空间加速器(CSA),该CSA例如包括由轻量型回压式(例如,通信)网 络连接的处理元件(PE)的阵列。CSA片的一个示例在图1中描绘。处理(例 如,计算)元件的某些实施例是数据流操作器,例如,当既满足(i)输入数据 已到达数据流操作器,又满足(ii)具有可用于存储输出数据的空间(例如, 否则没有处理正在发生)时仅处理输入数据的多重数据流操作器。(例如,加 速器或CSA的)某些实施例不利用被触发的指令。
图1图示根据本公开的实施例的处理元件的空间阵列的加速器片 100实施例。加速器片100可以是较大的片的部分。加速器片100执行一个或 多个数据流图。数据流图一般可以指在对序列化代码的编译时出现的显式并行 的程序描述。本文中的某些实施例(例如,CSA)允许数据流图被直接配置到 CSA阵列上,例如,不是被变换为序列化的指令流。本文中的某些实施例允许 由空间阵列的一个或多个处理元件(PE)执行第一(例如,类型的)数据流操 作,附加地或替代地,允许由该空间阵列的网络通信电路(例如,端点)中的 一个或多个执行第二(例如,不同类型的)数据流操作。
数据流图距序列化的编译流的偏离允许CSA的实施例支持熟悉的 编程模型并(例如,不使用工作表)直接执行现有的高性能计算(HPC)代码。 CSA处理元件(PE)可以是高能效的。在图1中,存储器接口102可耦合至 存储器(例如,图2中的存储器202)以允许加速器片100向(例如,管芯外) 存储器访问(例如,加载和/或存储)数据。所描绘的加速器片100是由经由互 连网络104耦合在一起的若干种类的PE组成的异构阵列。加速器片100可将 以下一者或多者例如包括为处理元件101的空间阵列的部分:整数算术PE、 浮点算术PE、通信电路(例如,网络数据流端点电路)和结构中存储。数据 流图(例如,经编译的数据流图)可覆盖在加速器片100上供执行。在一个实 施例中,对于特定的数据流图,每一个PE仅处置图中的一个或两个(例如, 数据流)操作。PE阵列可以是异构的,例如使得没有PE支持完整的CSA数 据流架构和/或一个或多个PE被编程(例如,定制)以执行仅一些但高度高效 的操作。本文中的某些实施例因此实现具有相比路线图架构为计算密集型的处 理元件的阵列的处理器或加速器,并相对于现有的HPC供应在能效和性能方 面实现大约数量级增益。
本文中的某些实施例提供从在处理元件的(例如,密集的)空间 阵列(例如,CSA)内的并行执行的性能提升,在该处理元件的(例如,密集 的)空间阵列(例如,CSA)中,例如,如果输入数据是可用的,则所利用的 每个PE和/或网络数据流端点电路可同时执行其操作。效率提升可源于每一个 PE和/或网络数据流端点电路的效率,例如,其中每一个PE的操作(例如, 行为)对于每一个配置(例如,映射)步骤被固定一次,并且执行在本地数据 到达PE时发生(例如,不考虑其他结构活动),和/或其中每个网络数据流端 点电路的操作(例如,行为)当被配置(例如,映射)时是可变的(例如,不 是固定的)。在某些实施例中,PE和/或网络数据流端点电路是数据流操作器(例如,每一个PE是单个数据流操作器),例如,当既满足(i)输入数据已 到达数据流操作器,又满足(ii)具有可用于存储输出数据的空间(例如,否 则没有处理正在发生)时仅对输入数据进行操作的数据流操作器。
本文中的某些实施例包括处理元件的空间阵列作为加速用户应用 的高能效且高性能的方法。在一些实施例中,以极度并行的方式映射应用。例 如,可展开内循环多次以改善并行性。例如,当展开的代码的占用(例如,使 用)为高时,该方式可提供高性能。然而,如果在展开的循环体内存在较少使 用的代码路径(例如,异常代码路径,像浮点去标准化模式),则可能浪费处 理元件的空间阵列(的例如结构面积),结果可能损失吞吐量。
用于(例如,在利用不足的代码段的情况下)降低对处理元件的 空间阵列(的例如结构面积)的压力的本文中的一个实施例是时间复用。在该 模式中,可在若干循环体之间共享较少使用的(例如,较冷的)代码的单个实 例,例如,与共享库中的函数调用类似。在一个实施例中,(例如,处理元件 的)空间阵列支持经复用代码的直接实现。然而,例如当空间阵列中的复用或 解复用涉及在许多遥远的目标(例如,共享方)之间进行选择时,使用数据流 操作器(例如,使用处理元件)的直接实现在等待时间、吞吐量、实现面积和 /或能量方面可能是低效的。本文中的某些实施例描述了支持(例如,高基)复 用或解复用的硬件机制(例如,网络电路)。本文中的(例如,网络数据流端 点电路的)某些实施例准许以很小的硬件开销或性能影响聚合许多目标(例如, 共享方)。本文中的某些实施例允许将(例如,传统)序列化代码编译为空间 阵列中的并行架构。
在一个实施例中,多个网络数据流端点电路组合为单个数据流操 作器,例如,如下文参照图21所讨论。作为非限制性示例,下文列举某些(例 如,高(例如,4-6)基)数据流操作器。
“Pick(挑选)”数据流操作器的实施例用于从多个输入通道选择数 据(例如,令牌),并且根据控制数据将那个数据提供为该“Pick”数据流操作 器的(例如,单个)输出。用于Pick的控制数据可包括输入选择器值。在一个 实施例中,所选择的输入通道用于使其数据(例如,令牌)被移除(例如,被 丢弃),以便例如完成那个数据流操作(或数据流操作的该输入通道的部分) 的执行。在一个实施例中,附加地,那些非选择的输入通道也用于使其数据(例 如,令牌)被移除(例如,被丢弃),以便例如完成那个数据流操作(或数据 流操作的该输入通道的部分)的执行。
“PickSingleLeg(挑选单支路)”数据流操作器的实施例用于从多个 输入通道选择数据(例如,令牌),并且根据控制数据将那个数据提供为该 PickSingleLeg数据流操作器的(例如,单个)输出,但是在某些实施例中,非 选择输入通道被忽略,例如,那些非选择输入通道不使它们的数据(例如,令 牌)被移除(例如,被丢弃)以例如完成那个数据流操作(或数据流操作的该 输入通道的部分)的执行。用于PickSingleLeg的控制数据可包括输入选择器 值。在一个实施例中,所选择的输入通道也用于使其数据(例如,令牌)被移 除(例如,被丢弃),以便例如完成那个数据流操作(或数据流操作的该输入 通道的部分)的执行。
“PickAny(挑选任何)”数据流操作器的实施例用于从多个输入通 道选择(例如,对于执行操作的电路)第一可用的数据(例如,令牌),并且 将那个数据提供为该PickAny数据流操作器的(例如,单个)输出。在一个实 施例中,如果PickSingleLeg的数据已被选择,则PickSingleLeg也用于输出(例 如,指示多个输入通道中的哪个通道的)索引。在一个实施例中,所选择的输 入通道用于使其数据(例如,令牌)被移除(例如,被丢弃),以便例如完成 那个数据流操作(或数据流操作的该输入通道的部分)的执行。在某些实施例 中,(例如,具有或不具有输入数据的)非选择输入通道被忽略,例如,那些 非选择输入通道不用于使其数据(例如,令牌)被移除(例如,被丢弃)以例 如完成那个数据流操作(或数据流操作的该输入通道的部分)的执行。用于 PickAny的控制数据可包括与PickAny对应的值,例如,无需输入选择器值。
“Switch(切换)”数据流操作器的实施例用于引导(例如,单个) 输入数据(例如,令牌),从而根据控制数据将那个输入数据提供给一个或多 个(例如,少于全部)输出。用于Switch的控制数据可包括一个或多个(多) 输出选择器值。在一个实施例中,(例如,来自输入通道的)输入数据用于使 其数据(例如,令牌)被移除(例如,被丢弃),以便例如完成那个数据流操 作(或数据流操作的该输入通道的部分)的执行。
“SwitchAny(切换任何)”数据流操作器的实施例用于引导(例如, 单个)输入数据(例如,令牌),从而例如根据控制数据将那个输入数据提供 给可接收那个数据的一个或多个(例如,少于全部)输出。在一个实施例中, SwitchAny可将输入数据提供给在该SwitchAny的入口缓冲器(例如,图22 中的网络入口缓冲器)中具有可用性(例如,可用的存储空间)的任何耦合的 输出通道。用于SwitchAny的控制数据可包括与SwitchAny对应的值,例如, 无需一个或多个(多)输出选择器值。在一个实施例中,(例如,来自输入通 道的)输入数据用于使其数据(例如,令牌)被移除(例如,被丢弃),以便 例如完成那个数据流操作(或数据流操作的该输入通道的部分)的执行。在一 个实施例中,SwitchAny也用于输出该SwitchAny将输入数据提供(例如,发 送)到的(例如,指示多个输出通道中的哪个输出通道的)索引。。可利用 SwitchAny来管理空间阵列中的经复制的子图,例如,展开的循环。
本文中的某些实施例因此跨广泛类别的现有单流和并行程序(例 如,所有程序)提供性能的范式转移(paradigm-shifting)等级和极大的能效改 善,同时保持熟悉的HPC编程模型。本文中的某些实施例可针对HPC,使得 浮点能效是极其重要的。本文中的某些实施例不但获得令人瞩目的性能改善和 能量减少,还将这些增益传递至以主流HPC语言编写的且用于主流HPC框架 的现有HPC程序。本文中的架构的某些实施例(例如,具有想到的编译)在 对由现代编译器生成的控制数据流内部表示的直接支持中提供若干扩展。本文 中的某些实施例涉及CSA数据流编译器(例如,其可接受C、C++和Fortran 编程语言)以针对CSA架构。
图2图示根据本公开的实施例的耦合至(例如,连接至)存储器 202的硬件处理器200。在一个实施例中,硬件处理器200和存储器202是计 算系统201。在某些实施例中,加速器中的一个或多个是根据本公开的CSA。 在某些实施例中,处理器中的核中的一个或多个核是本文中公开的那些核。硬 件处理器200(例如,其每一个核)可包括硬件解码器(例如,解码单元)和 硬件执行单元。硬件处理器200可包括寄存器。注意,本文中的附图可能没有描绘所有的数据通信耦合(例如,连接)。本领域技术人员将认识到,这样做 是为了不使附图中的某些细节模糊。注意,附图中的双向箭头可以不要求双向 通信,例如,它可以指示单向通信(例如,去往或来自那个组件或设备)。通 信路径中的任一路径或所有组合可用于本文中的某些实施例。所描绘的硬件处 理器200包括根据本公开的多个核(0至N,其中,N可以是1或更大)和硬 件加速器(0至M,其中,M可以是1或更大)。硬件处理器200(例如,其 (多个)加速器和/或(多个)核)可耦合至存储器202(例如,数据存储设备)。 (例如,核的)硬件解码器可接收(例如,单条)指令(例如,宏指令),并 将该指令解码为例如微指令和/或微操作。(例如,核的)硬件执行单元可执行 经解码的指令(例如,宏指令)以执行一个或多个操作。
以下第1节公开CSA架构的实施例。具体地,公开了在数据流执 行模型内集成存储器的新颖的实施例。第2节探究CSA的实施例的微架构细 节。在一个实施例中,CSA的主要目的是支持编译器产生的程序。以下第3 节检验CSA编译工具链的实施例。在第4节中,在经编译代码的执行中将CSA 的实施例的优势与其他架构进行比较。最后在第5节中讨论CSA微架构的实 施例的性能,在第6节中讨论进一步的CSA细节,并且在第7节中提供总结。
1.CSA架构
CSA的某些实施例的目的是迅速且高效地执行程序(例如,由编 译器产生的程序)。CSA架构的某些实施例提供支持编译器技术和编程范式的 需求的编程抽象。CSA的实施例执行数据流图,例如,非常像编译器自身对经 编译的程序的内部表示(IR)的程序表现形式。在该模型中,程序被表示为由 节点(例如,顶点)和边缘组成的数据流图,这些节点从(例如,涵盖计算操 作和控制操作两者的)架构定义的数据流操作器的集合绘制,这些边缘表示数 据在数据流操作器之间的传送。执行可通过将数据流令牌(例如,作为数据值 或表示数据值的数据流令牌)注入到数据流图中来进展。令牌可在其间流动, 并可在每一个节点(例如,顶点)处被转换,从而例如形成完整的计算。在图 3A-图3C中示出样本数据流图及其从高级源代码的推导,并且图5示出数据流 图的执行的示例。
通过提供编译器所要求的确切的那些数据流图执行支持,CSA的 实施例为数据流图执行进行配置。在一个实施例中,CSA是加速器(例如,图2中的加速器),并且它不寻求提供在通用处理核(例如,图2中的核)上可 用的必要但不频繁使用的机制(诸如,系统调用)中的一些机制。因此,在该 实施例中,CSA可执行许多代码,但不能够执行所有代码。作为交换,CSA 获得显著的性能和能量优势。为了实现以常用的序列化语言编写的代码的加速,本文中的实施例也引入若干新颖的架构特征来辅助编译器。一个具体的新颖性 是CSA对存储器的处理,这是先前被忽略或未被很好地解决的课题。CSA的 实施例在将数据流操作器(例如,相比将查找表(LUT))用作它们的基本架 构接口方面也是独一无二的。
转到CSA的实施例,下面讨论数据流操作器。
1.1 数据流操作器
加速器(例如,CSA)的实施例的关键架构接口是数据流操作器, 例如,作为数据流图中的节点的直接表示。从操作的视角来看,数据流操作器 流式地或以数据驱动方式表现。数据流操作器的传入操作数一可用,该数据流 操作器就可执行。CSA数据流执行可(例如,仅)依赖于高度局部化的状态, 从而例如导致伴随着分布式异步执行模型的高度可缩放架构。数据流操作器可 包括算术数据流操作器,例如,以下一项或多项:浮点加法和乘法,整数加法、 减法和乘法,各种形式的比较、逻辑操作器,以及移位。然而,CSA的实施例也可包括辅助程序图中的数据流令牌管理的丰富的控制操作器的集合。这些控 制操作器的示例包括“pick”操作器(例如,其将两个或更多个逻辑输入通道复 用为单个输出通道)和“switch”操作器(例如,其操作为通道解复用器)(例 如,从两个或更多个逻辑输入通道输出单个通道)。这些操作器可使编译器实 现控制范式(诸如,条件表达式)。CSA的某些实施例可包括(例如,相对于 较小数量的操作的)有限的数据流操作器集以实现密集且高能效的PE微架构。 某些实施例可包括用于HPC代码中常见的复杂操作的数据流操作器。CSA数据流操作器架构对于部署特定的扩展是高度地可改变的。例如,更多复杂的数 学数据流操作器(例如,三角函数)可被包括在某些实施例中以使某些数学密 集型HPC工作负荷加速。类似地,神经网络调整的扩展可包括用于向量化、 低精度算术的数据流操作器。
图3A图示根据本公开的实施例的程序源。程序源代码包括乘法函 数(func)。图3B图示根据本公开的实施例的针对图3A的程序源的数据流图 300。数据流图300包括pick节点304、switch节点306和乘法节点308。沿通 信路径中的一条或多条通信路径,缓冲器可任选地可被包括。所描绘的数据流 图300可执行以下操作:利用pick节点304来选择输入X,将X与Y相乘(例 如,乘法节点308),且随后从switch节点306的左侧输出输出结果。图3C 图示根据本公开的实施例的加速器(例如,CSA),该加速器具有配置成用于 执行图3B的数据流图的多个处理元件301。更具体地,数据流图300被覆盖 到处理元件301的阵列(以及例如其间的(多个)(例如,互连)网络)中, 使得例如数据流图300中的每一个节点被表示为处理元件301的阵列中的数据 流操作器。例如,某些数据流操作可以利用处理元件来实现,和/或某些数据流 操作可以利用通信网络(例如,其网络数据流端点电路)来实现。例如,Pick、PickSingleLeg、PickAny、Switch和/或SwitchAny操作可以利用通信网络(例 如,其网络数据流端点电路)的一个或多个组件来实现,例如,与处理元件形 成对照。
在一个实施例中,处理元件301的阵列中的处理元件中的一个或 多个用于通过存储器接口302来访问存储器。在一个实施例中,数据流图300 的pick节点304因此对应于pick操作器304A(例如,由pick操作器304A表 示),数据流图300的switch节点306因此对应于switch操作器306A(例如, 由switch操作器306A表示),并且数据流图300的乘法器节点308因此对应 于乘法器操作器308A(例如,由乘法器操作器308A表示)。另一处理元件和 /或流控制路径网络可将控制信号(例如,控制令牌)提供给pick操作器304A 和switch操作器306A以执行图3A中的操作。在一个实施例中,处理元件301 的阵列配置成用于在执行开始之前执行图3B的数据流图300。在一个实施例 中,编译器执行从图3A到图3B的转换。在一个实施例中,进入处理元件的 阵列的数据流图节点的输入在逻辑上将数据流图嵌入到处理元件的阵列中(例 如,如下文中进一步所讨论),使得输入/输出路径经配置以产生所需的结果。
1.2 等待时间不敏感的通道
通信弧(arc)是数据流图的第二主组件。CSA的某些实施例将这 些弧描述为等待时间不敏感的通道,例如,有序、回压式(例如,直到有用于 存储输出的空间才产生或发送输出)、点对点通信通道。如同数据流操作器那 样,等待时间不敏感的通道在根本上是异步的,从而给予了组合许多类型的网 络来实现特定图的通道的自由。等待时间不敏感的通道可具有任意长的等待时 间,并仍忠实地实现CSA架构。然而,在某些实施例中,在性能和能量方面 具有强烈的动机来使等待时间尽可能小。本文中的第2.2公开了网络微架构, 其中,以流水线方式、在不多于一个周期等待时间的情况下实现数据流图通道。 等待时间不敏感的通道的实施例提供关键的抽象层,该关键的抽象层可与CSA 架构一起利用以向应用编程器提供许多运行时服务。例如,CSA可在实现CSA 配置(将程序加载到CSA阵列上)时利用等待时间不敏感的通道。
图4图示根据本公开的实施例的数据流图400的示例执行。在步 骤1,输入值(例如,针对图3B中的X的1以及针对图3B中的Y的2)可被 加载在数据流图400中以执行1*2乘法操作。数据输入值中的一个或多个在操 作中可以是静态的(例如,恒定的)(例如,参照图3B,X为1及Y为2) 或在操作期间被更新。在步骤2,(例如,流控制路径网络上的)处理元件或其他电路将0输出至pick节点404的控制输入(例如,多路复用器控制信号) (例如,从端口获得“1”作为源送至其输出),并输出0以控制switch节点406 的输入(例如,多路复用器控制信号)(例如,以便使其输入离开端口“0”向 外提供至目的地(例如,下游处理元件))。在步骤3,数据值1从pick节点 404(并且例如在pick节点404处消耗其控制信号“0”)输出到乘法器节点408, 以便在步骤4处与数据值2相乘。在步骤4,乘法器节点408的输出到达switch节点406,例如,其使switch节点406消耗控制信号“0”以在步骤5处从switch 节点406的端口“0”输出值2。随后,该操作完成。因此可相应地对CSA编程, 使得每一个节点的对应数据流操作器执行图4中的操作。虽然在该示例中执行 被串行化,但是原则上所有数据流操作可并行地执行。在图4中使用步骤以便 将数据流执行与任何物理微架构表现形式区分开。在一个实施例中,下游处理 元件用于(例如,在流控制路径网络上)将信号(或不将就绪信号)发送至切 换装置406,以使来自切换装置406的输出停止,直到下游处理元件为输出做好准备(例如,具有存储空间)。
1.3 存储器
数据流架构总体上聚焦通信和数据操纵,较不关注状态。然而, 启用实际的软件、尤其是以传统序列化语言编写的程序要求非常关注与存储器 的对接。CSA的某些实施例将架构存储器操作用作它们对(例如,大型)状态 化存储的主接口。从数据流图的视角看,存储器操作类似于其他数据流操作, 例外在于,存储器操作具有更新共享存储的副作用。具体地,本文中的某些实 施例的存储器操作具有与每一个其他数据流操作器相同的语义,例如,当它们 的操作数(例如,地址)可用且在一些等待时间之后响应被产生时,这些存储 器操作“执行”。本文中的某些实施例显式地将操作数输入与结果输出解耦,使 得存储器操作器本质上是流水线式的并具有产生许多同时的待决请求的潜力, 从而例如使存储器操作器非常适应存储器子系统的等待时间和带宽特性。CSA 的实施例提供基本存储器操作,诸如,加载和存储,该加载取得地址通道,并 以对应于该地址的值填充响应通道。CSA的实施例也提供更高级的操作(诸如, 存储器内原子和一致性操作器)。这些操作可具有与其对等的冯·诺依曼操作 类似的语义。CSA的实施例可对使用序列化语言(诸如,C和Fortran)描述 的现有程序进行加速。支持这些语言模型的结果是对程序存储器顺序进行寻址, 例如,对典型地由这些语言规定的存储器操作的串行排序。
图5图示根据本公开的实施例的程序源(例如,C代码)500。根 据C编程语言的存储器语义,存储器复制(memcpy)应当被串行化。然而, 如果已知阵列A与阵列B不相交,则memcpy可利用CSA的实施例来并行化。 图5进一步图示程序顺序的问题。一般而言,编译器不能够证明阵列A与阵列 B不同,例如,无论对于相同索引值还是对于跨循环体的不同索引值。这被称 为指针或存储器别名(aliasing)。由于编译器用于生成静态地正确的代码,因此它们经常被迫地使存储器访问串行化。典型地,针对序列化的冯·诺依曼架 构的编译器将指令排序用作实施程序顺序的自然手段。然而,CSA的实施例没 有如程序计数器所定义的指令排序或基于指令的程序排序的概念。在某些实施 例中,传入依赖性令牌(例如,其不包含架构可见信息)像所有其他数据流令 牌,并且存储器操作直到它们接收到依赖性令牌才可以执行。在某些实施例中, 一旦存储器操作的操作对逻辑上后续的依赖性存储器操作可见,这些存储器操 作就产生传出依赖性令牌。在某些实施例中,依赖性令牌类似于数据流图中的 其他数据流令牌。例如,由于存储器操作在有条件上下文中发生,因此依赖性 令牌也可使用在第1.1节中所述的控制操作器来操纵(例如,像任何其他令牌 那样)。依赖性令牌可具有使存储器访问串行化的效果,从而例如向编译器提 供在架构上定义存储器访问的顺序的手段。
1.4 运行时服务
对CSA的实施例的主要的架构方面考虑涉及用户级程序的实际执 行,但是提供巩固该执行的若干支持机制也是理想的。这其中的首要因素是配 置(其中,数据流图被加载到CSA中)、提取(其中,执行图的状态被移动 到存储器)和异常(其中,结构中的数学、软性和其他类型的错误可能由外部 实体检测到并处置)。以下第2.9节讨论用于实现这些功能的高效、高度流水 线化的实现方式的CSA的实施例的等待时间不敏感的数据流架构的属性。从 概念上说,配置可将数据流图的状态(例如,一般从存储器)加载到互连(和 /或通信网络(例如,其网络数据流端点电路))和处理元件(例如,结构)中。 在该步骤期间,CSA中的所有结构可被加载有新数据流图,并且任何数据流令 牌存活于那个图中例如作为上下文切换的结果。CSA的等待时间不敏感语义可 准许结构的分布式异步初始化,例如,PE一经配置,它们就可立即开始执行。 未经配置的PE可回压它们的通道,直到这些PE被配置,从而例如防止经配 置元件与未经配置元件之间的通信。CAS配置可被分区为特权级和用户级状态。 此类两级分区可使结构的主配置在不调用操作系统的情况下发生。在提取的一 个实施例中,数据流图的逻辑示图被捕捉并被提交到存储器中,例如,包括图 中的所有实况的控制和数据流令牌和状态。
提取也可在通过创建结构检查点来提供可靠性保证时发挥作用。 CSA中的异常一般可由导致处理器中的异常相同的事件导致,这些事件诸如, 非法操作器自变量或可靠性、可用性和耐用性(RAS)事件。在某些实施例中, 在(例如,校验自变量值的)数据流操作器的级别上或通过模块化算术方案检 测异常。在检测到异常后,数据流操作器(例如,电路)可停止并发射异常消 息,该异常消息例如包含操作标识符和已发生的问题的性质的一些细节两者。 在一些实施例中,数据流操作器将保持停止,直到它已被重配置。随后,异常消息可被传递至相关联的处理器(例如,核)以用于服务(例如,其可包括提 取图供软件分析)。
1.5 片级架构
CSA计算机架构(例如,针对HPC和数据中心用途)的实施例是 分片的。图6和图9示出CSA的片级部署。图9示出CSA的全片实现方式, 例如,其可以是具有核的处理器的加速器。该架构的主要优势可以是降低的设 计风险,例如使得CSA与核在制造时被完全解耦。除了允许更好的组件重新 使用之外,这还可允许组件(像CSA高速缓存)仅考虑CSA,而不是例如需 要并入对核的更严格的等待时间要求。最终,分开的片可允许CSA与小型核 或大型核集成。CSA的一个实施例捕捉大多数向量并行的工作负荷,使得大多 数向量型工作负荷直接在CSA上运行,但是在某些实施例中,核中的向量型 指令可被包括以例如支持传统的二进制。
2.微架构
在一个实施例中,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可通过专用虚 拟电路进行通信,该专用虚拟电路通过静态地配置电路交换型通信网络而形成。 这些虚拟电路可以是流受控且完全被回压(back pressure)的,使得例如如果源没有数据或目的地为满,则PE将停止。在运行时,数据可流经实现经映射 算法的PE。例如,数据可从存储器通过结构而流入,随后向外回到存储器。 该架构的实施例相对于传统多核处理器可实现卓越的性能效率:例如,其中, 与扩展存储器系统相反,以PE形式的计算比较大的核更简单且更多,并且通 信是直接的。
图6图示根据本公开的实施例的加速器片600,该加速器片600包 括处理元件(PE)的阵列。互连网络被描绘为电路交换型、静态配置的通信通 道。例如,通道的集合通过切换装置(例如,第一网络中的切换装置610和第 二网络中的切换装置620)被耦合在一起。第一网络和第二网络可以是分开的 或可以耦合在一起。例如,切换装置610可将四个数据路径612、614、616、 618中的一个或多个耦合在一起,例如,经配置以执行根据数据流图的操作。在一个实施例中,数据路径的数量是任意多个。处理元件(例如,处理元件604) 可如本文中所公开,例如,如图10中那样。加速器片600包括存储器/高速缓 存层次结构接口602,以便例如将加速器片600与储存器和/或高速缓存对接。 数据路径(例如,618)可延伸至另一片或可终止于例如片的边缘处。处理元 件可包括输入缓冲器(例如,缓冲器606)和输出缓冲器(例如,缓冲器608)。
操作可基于这些操作的输入的可用性以及PE的状态来执行。PE 可从输入通道获取操作数,并且可将结果写至输出通道,但是也可使用内部寄 存器状态。本文中的某些实施例包括可配置数据流友好型PE。图10示出一个 此类PE的详细框图:整数PE。该PE由若干I/O缓冲器、ALU、存储寄存器、 一些指令寄存器和调度器组成。在每一个周期,调度器可基于输入和输出缓冲 器的可用性以及PE的状态来选择供执行的指令。随后,操作的结果被写至输 出寄存器,或被写至(例如,PE本地的)寄存器。被写至输出缓冲器的数据 可被传输到下游PE用于进一步处理。这种PE样式可以是极其高能效的,例 如,与从复杂的多端口寄存器组读取数据不同,PE从寄存器读取该数据。类 似地,指令可被直接存储在寄存器中,而不是被存储在虚拟化的指令高速缓存 中。
指令寄存器可在特殊的配置步骤期间被设置。在该步骤期间,除 PE间网络之外,辅助的控制线和状态也可用于跨包含结构的若干PE使配置流 入。作为并行性的结果,此类网络的某些实施例可提供快速的重配置,例如, 片尺寸的结构可在小于约10微秒内被配置。
图10表示处理元件的一个示例配置,例如,其中所有架构元件尺 寸设定为最小。在其他实施例中,处理元件的多个组件中的每一个组件被独立 地缩放以产生新PE。例如,为了处置更多复杂程序,可引入可由PE执行的更 多数量的指令。可配置性的第二个维度是PE算术逻辑单元(ALU)的功能。 在图10中,整数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被静态地配置之外,网络也可被静态地配置。在该配 置步骤期间,配置位可在每一个网络组件处被设置。这些位控制例如多路复用 器选择和流控制功能。网络可包括多个网络,例如,数据路径网络和流控制路 径网络。网络或多个网络可利用不同宽度(例如,第一宽度以及更窄或更宽的 宽度)的路径。在一个实施例中,数据路径网络具有比流控制路径网络的宽度 更宽的(例如,位传输)宽度。在一个实施例中,第一网络和第二网络中的每 一个都包括它们自身的数据路径网络和流控制路径网络,例如,数据路径网络A和流控制路径网络A以及更宽的数据路径网络B和流控制路径网络B。
网络的某些实施例是无缓冲的,并且数据用于在单个周期中在产 生方与消耗方之间移动。网络的某些实施例也是无边界的,即,网络跨越整个 结构。在一个实施例中,一个PE用于在单个周期中与任何其他PE通信。在 一个实施例中,为了改善路由带宽,可在PE的行之间并行地布置若干网络。
相对于FPGA,本文中的网络的某些实施例具有三个优势:面积、 频率和程序表达。本文中的网络的某些实施例以粗粒度操作,其例如减少配置 位的数量并由此减小网络的面积。网络的某些实施例还通过在电路(例如,硅) 中直接实现流控制逻辑来获得面积减小。强化的网络实现方式的某些实施例也 享有相对于FPGA的频率优势。由于面积和频率优势,当在吞吐量奇偶校验处 使用较低电压的情况下,功率优势可存在。最后,网络的某些实施例提供比 FPGA线更好的高级语义,尤其是相对于可变时序方面,因此,那些实施例更 容易由编译器针对。本文中的网络的某些实施例可视为用于构建分布式点对点 数据通道的组成基元的集合。
在某些实施例中,多播源可能无法断言其数据有效,除非该多播 源从每一个接收器(sink)接收到就绪信号。因此,在多播情况下,可利用额 外的结和控制位。
像某些PE那样,网络可被静态地配置。在该步骤期间,配置位在 每一个网络组件处被设置。这些位控制例如多路复用器选择和流控制功能。本 申请的网络的前向路径要求一些位以使该前向路径的mux摇摆。在图7A中示 出的示例中,要求每一跳(hop)四个位:东mux和西mux中的每一个利用一 个位,而向南的多路复用器利用两个位。在该实施例中,四个位可用于数据路 径,但是7个位可用于(例如,流控制路径网络中的)流控制功能。如果例如 CSA进一步利用北-南方向,则其他实施例可利用更多位。流控制功能可将控 制位用于流控制可从其来的每一个方向。这可实现静态地设置流控制功能的灵 敏度。以下表1总结了用于图7B中的网络的流控制功能的布尔代数实现方式, 配置位被大写。在该示例中,利用七个位。
表1:流实现方式
Figure BDA0002412558780000281
对于从图7B中的左边起的第三个流控制框,EAST_WEST_SENSITIVE 和NORTH_SOUTH_SENSITIVE被描绘为经设置以分别实现对粗体线通道和 点状线通道的流控制。
图8图示根据本公开的实施例的电路交换型网络800。电路交换型 网络800例如通过从切换装置(例如,多路复用器)804-828创建的一个或多 个通道耦合至CSA组件(例如,处理元件(PE))802,并且可类似地耦合至 (多个)其他CSA组件(例如,PE)。这可包括横向(H)切换装置和/或纵 向(V)切换装置。所描绘的切换装置可以是图6中的切换装置。切换装置可 包括一个或多个寄存器804A-828A,这一个或多个寄存器804A-828A用于存 储控制值(例如,配置位),这些控制值(例如,配置位)用于控制对切换装 置的(多个)输入和/或(多个)输出的选择以允许值从(多个)输入传递到(多 个)输出。在一个实施例中,切换装置选择性地耦合至以下一个或多个:网络 830(例如,将数据发送到右方(东(E)))、网络832(例如,向下发送数 据(南(S)))、网络834((例如,将数据发送到左方(西(W))))、 和/或网络836(例如,向上发送数据(北(N)))。网络830、832、834和/ 或836可耦合至图8中的组件(或组件的子集)的另一实例,以例如创建流受 控的通信通道(例如,路径),这些流受控的通信通道支持可配置空间加速器 (例如,如本文中讨论的CSA)的组件(例如,PE)之间的通信。在一个实 施例中,网络(例如,网络830、832、834和/或836或分开的网络)从源(例 如,核)接收控制值(例如,配置位),并且使那个控制值(例如,配置位) 被存储在寄存器804A-828A中以使对应的切换装置804-828(例如,根据数据 流图)形成期望的通道。处理元件802还可包括(多个)控制寄存器802A, 例如作为图9中的操作配置寄存器919。切换装置和其他组件因此在某些实施 例中可设置为创建处理元件之间的一条或多条数据路径和/或针对那些数据路 径的回压路径,例如,如本文中所讨论。在一个实施例中,以指代针对输入的 mux(多路复用器)选择的变量名称(例如,以具有指代端口号的数字的值以 及指代数据正来自的方向或PE输出的字母,例如,其中806A中的E1指代来 自网络的东侧的端口号1)来描绘这些(控制)寄存器804A-828A中的值(例 如,配置位)。
除了例如PE在针对数据流图的配置期间被静态地配置之外,(多 个)网络也可被静态地配置。在该配置步骤期间,配置位可在每一个网络组件 处被设置。这些位可控制例如多路复用器选择以控制(例如,在数据流路径网 络上的)数据流令牌的流以及(例如,在流控制路径网络上的)数据流令牌的 对应的回压令牌。网络可包括多个网络,例如,数据路径网络和流控制路径网 络。一个或多个网络可利用不同宽度(例如,第一宽度以及更窄或更宽的第二 宽度)的路径。在一个实施例中,数据路径网络具有比流控制路径网络的宽度更宽的(例如,位传输)宽度。在一个实施例中,第一网络和第二网络中的每 一个都包括它们自身的数据路径和流控制路径,例如,数据路径A和流控制路 径A、以及更宽的数据路径B和流控制路径B。例如,用于产生方PE的单个 输出缓冲器的数据路径和流控制路径耦合至消耗方PE的多个输入缓冲器。在 一个实施例中,为了改善路由带宽,在PE的行之间并行地布置若干网络。像 某些PE那样,网络可被静态地配置。在该步骤期间,配置位可在每一个网络 组件处被设置。这些位控制例如数据路径(例如,多路复用器创建的数据路径) 和/或流控制路径(例如,多路复用器创建的流控制路径)。前向(例如,数据) 路径可利用控制位来使其切换装置和/或逻辑门摆动。
图9图示根据本公开的实施例的包括加速器902的硬件处理器片 900。加速器902可以是根据本公开的CSA。片900包括多个高速缓存区块(例 如,高速缓存区块908)。请求地址文件(RAF)电路910可被包括,例如, 如在以下第2.2节中所讨论。ODI可以指管芯上互连,例如,跨整个管芯伸展、 连接所有片的互连。OTI可以指(例如,跨片伸展,例如,将片上的高速缓存 区块连接在一起的)片上互连。
2.1 处理元件
在某些实施例中,CSA包括异构PE的阵列,其中,结构由若干类 型的PE组成,这些PE中的每一个仅实现数据流操作器的子集。作为示例, 图10示出能够实现宽泛的整数和控制操作集的PE的暂定的实现方式。其他 PE(包括支持浮点加法、浮点乘法、缓冲和某些控制操作的那些PE)也可具 有类似的实现样式,例如,用适当的(数据流操作器)电路替代ALU。在执 行开始之前,CSA的PE(例如,数据流操作器)可经配置(例如,编程)以 实现来自PE支持的集合中的特定的数据流操作。配置可包括一个或两个控制 字,这一个或两个控制字指定控制ALU的操作码、引导PE内的各种多路复用 器,并驱使数据流进入PE通道以及离开PE通道。数据流操作器可通过对这 些配置位进行微编码来实现。图10中的所描绘的整数PE1000被组织成从顶 部流动到底部的单级逻辑流水线。数据从本地网络集合中的一个本地网络进入 PE 1000,在PE 1000中,该数据被寄存在输入缓冲器中用于后续操作。每一 个PE可支持多个宽的面向数据的通道以及窄的面向控制的通道。所供应的通 道的数量可基于PE的功能而有所变化,但是面向整数的PE的一个实施例具 有2个宽的以及1-2个窄的输入和输出通道。虽然整数PE被实现为单周期流 水线,但是可利用其他流水线式选择。例如,乘法PE可具有多个流水线级。
PE执行可按数据流样式继续进行。基于配置微代码,调度器可检 查PE入口和出口缓冲器的状态,并且当用于经配置操作的所有输入都已到达 且操作的出口缓冲器可用时,安排由(例如,ALU上的)数据操作器对操作 的实际执行。所得到的值可被放置在经配置的出口缓冲器中。当缓冲变得可用 时,一个PE的出口缓冲器与另一PE的入口缓冲器之间的传送可异步地发生。 在某些实施例中,提供PE使得对于每个周期至少一个数据流操作完成。第2 节讨论了涵盖基元操作(诸如,加(add)、异或(xor)或pick)的数据流操 作器。某些实施例可提供在能量、面积、性能和等待时间方面的优势。在一个 实施例中,凭借对PE控制路径的扩展,可启用更多融合组合。在一个实施例 中,处理元件的宽度为64位,例如用于对HPC中的双精度浮点计算的高度利 用,并用于支持64位存储器寻址。
2.2 通信网络
CSA微架构的实施例提供多个网络的层次结构,该多个网络一起 提供跨多个通信比例的等待时间不敏感的通道的架构抽象的实现方式。CSA通 信层次结构的最低级可以是本地网络。本地网络可以是静态地进行电路交换的, 例如,使用配置寄存器来使本地网络数据路径中的(多个)多路复用器摇摆, 以便在通信PE之间形成固定的电路径。在一个实施例中,对于每个数据流图 (例如,在PE配置的同时),对本地网络的配置设置一次。在一个实施例中, 静态的电路交换针对能量进行优化,例如,其中CSA通信流量中的绝大多数 (也许是大于95%)将跨越本地网络。程序可包括在多个表达式中使用的术语。 为了对这种情况进行优化,本文中的实施例提供对本地网络内的多播的硬件支 持。若干本地网络可被聚集在一起以形成路由通道,这些路由通道例如在PE 的行和列之间散布(为网格)。作为优化,若干本地网络可被包括以携带控制 令牌。相比FPGA互连,CSA本地网络能以数据路径的粒度被路由,并且另一 区别可以是CSA对控制的处理。CSA本地网络的一个实施例是显式地流受控 的(例如,回压)。例如,对于每一个前向数据路径和多路复用器集合,CSA 用于提供在物理上与前向数据路径配对的后向流动流控制路径。两个微架构路 径的组合可提供等待时间不敏感的通道抽象的低等待时间、低能量、小面积、 点对点实现方式。在一个实施例中,CSA的流控制线对于用户程序不是可见的, 但是这些流控制线可由维护用户程序的架构操纵。例如,第1.2节中描述的异 常处置机制可通过以下方式来实现:在检测到异常条件后,将流控制线拉到“不 存在”状态。该动作不仅可温和地停止冒犯性计算中所涉及的流水线的那些部 分,而且还可保持机器状态先于异常,以便例如进行诊断分析。第二网络层(例如,夹层网络)可以是共享的分组交换型网络。夹层网络可包括多个分布式网 络控制器、网络数据流端点电路。夹层网络(例如,由图48中的虚线框示意 性地指示的网络)能以例如等待时间、带宽和能量为代价来提供更一般的长距 离通信。在一些程序中,多数通信可在本地网路上发生,因此相比而言,夹层 网络供应将显著地减少,例如,每一个PE可连接至多个本地网络,但是CSA 针对PE的每一个逻辑邻域将仅供应一个夹层端点。由于夹层实际上是共享网 络,因此每一个夹层网络可携带多个逻辑上独立的通道,并例如以多个虚拟通 道来供应。在一个实施例中,夹层网络的主要功能是用于提供PE间以及PE 与存储器间的宽范围通信。除了该能力之外,夹层还可包括例如用于某些数据 流操作的(多个)网络数据流端点电路。除了该能力之外,夹层还可操作为运 行时支持网络,例如,通过该运行时支持网络,各种服务能以用户-程序透明 的方式来访问完整的结构。在该能力方面,夹层端点可在例如CSA配置期间 充当用于其本地邻域的控制器。为了形成跨越CSA片的通道,可利用三个子 通道和两个本地网络通道(其携带至夹层网络中的单个通道以及来自夹层网络 中的单个通道的流量)。在一个实施例中,利用一个夹层通道,例如,一个夹 层和两个本地=总共3个网络跳。
通道跨网络层的可组成性能以片间(inter-tile)、管芯间以及结构 粒度被扩展到更高级别的网络层。
图10图示根据本公开的实施例的处理元件1000。在一个实施例中, 操作配置寄存器1019在配置(例如,映射)期间被加载,并且指定该处理(例 如,计算元件)将执行的特定操作(或多个操作)。寄存器1020的活动可由 那个操作控制(多路复用器1016的输出,例如,由调度器1014控制)。例如, 当输入数据和控制输入到达时,调度器1014可调度处理元件1000的一个或多 个操作。控制输入缓冲器1022连接至本地网络1002(例如,并且本地网络1002 可包括如图7A中的数据路径网络和如图7B中的流控制路径网络),并且当 值到达(例如,网络具有(多个)数据位和(多个)有效位)时,以该值加载 该控制输入缓冲器1022。控制输出缓冲器1032、数据输出缓冲器1034和/或数 据输出缓冲器1036可接收处理元件1000的输出(例如,如由操作(多路复用 器1016的输出)控制)。每当ALU 1018执行(也由多路复用器1016的输 出控制)时,状态寄存器1038可被加载。控制输入缓冲器1022和控制输出缓 冲器1032中的数据可以是单个位。多路复用器1021(例如,操作数A)和多 路复用器1023(例如,操作数B)可作为输入的源。
例如,假设该处理(例如,计算)元件的操作是(或包括)在图 3B中被称为调用pick的操作。则处理元件1000用于从数据输入缓冲器1024 或数据输入缓冲器1026选择数据,以便例如去往数据输出缓冲器1034(例如, 默认情况)或数据输出缓冲器1036。因此,如果从数据输入缓冲器1022选择, 则1022中的控制位可指示0,或者如果从数据输入缓冲器1026选择,则1022 中的控制位可指示1。
例如,假设该处理(例如,计算)元件的操作是(或包括)在图 3B中被称为调用switch的操作。处理元件1000用于例如从数据输入缓冲器 1024(例如,默认情况)或数据输入缓冲器1026将数据输出到数据输出缓冲 器1034或数据输出缓冲器1036。因此,如果输出到数据输出缓冲器1034,则 1022中的控制位可指示0,或者如果输出到数据输出缓冲器1036,则1022中 的控制位可指示1。
多个网络(例如,互连)(例如,(输入)网络1002、1004、1006 以及(输出)网络1008、1010、1012)可连接至处理元件。连接可以是例如参 照图7A和图7B所讨论的切换装置。在一个实施例中,每一个网络包括两个 子网络(或网络上的两个通道),例如,一个用于图7A中的数据路径网络, 一个用于图7B中的流控制(例如,回压)路径网络。作为一个示例,本地网络1002(例如,建立为控制互连)被描绘为被切换(例如,连接)到控制输入 缓冲器1022。在该实施例中,数据路径(例如,图7A中的网络)可携带控制 输入值(例如,一个或多个位)(例如,控制令牌),并且流控制路径(例如, 网络)可携带来自控制输入缓冲器1022的回压信号(例如,回压或无回压令 牌),以便例如向上游产生方(例如,PE)指示直到回压信号指示在控制输入 缓冲器1022中具有用于(例如,来自上游产生方的控制输出缓冲器的)新控 制输入值的空间,该新控制输入值才将被加载到(例如,发送到)控制输入缓 冲器1022。在一个实施例中,直到同时满足(i)上游产生方从“控制输入”缓 冲器1022接收到“空间可用”回压信号;以及(ii)新控制输入值从上游产生方 被发送,该新控制输入值才可进入控制输入缓冲器1022,例如,并且这可使处 理元件1000停止,直到那种情况发生(并且(多个)目标、输出缓冲器中的 空间可用)。
数据输入缓冲器1024和数据输入缓冲器1026能以类似方式执行, 例如,本地网络1004(例如,被建立为数据(与控制相对照)互连)被描绘为 被切换(例如,连接)到数据输入缓冲器1024。在该实施例中,数据路径(例 如,图7A中的网络)可携带数据输入值(例如,一个或多个位)(例如,数 据流令牌),并且流控制路径(例如,网络)可携带来自数据输入缓冲器1024 的回压信号(例如,回压或无回压令牌),以便例如向上游产生方(例如,PE) 指示直到回压信号指示在数据输入缓冲器1024中具有用于(例如,来自上游 产生方的数据输出缓冲器的)新数据输入值的空间,该新数据输入值才将被加 载到(例如,发送到)数据输入缓冲器1024。在一个实施例中,直到同时满足 (i)上游产生方从“数据输入”缓冲器1024接收到“空间可用”回压信号;以及 (ii)新数据输入值从上游产生方被发送,该新数据输入值才可进入数据输入 缓冲器1024,例如,并且这可使处理元件1000停止,直到那种情况发生(并且(多个)目标、输出缓冲器中的空间可用)。控制输出值和/或数据输出可在 它们相应的输出缓冲器(例如,1032、1034、1036)中被停止,直到回压信号 指示在输入缓冲器中具有用于(多个)下游处理元件的可用空间。
处理元件1000可停止执行,直到其操作数(例如,控制输入值以 及该控制输入值的一个或多个对应的数据输入值)被接收和/或直到处理元件 1000的(多个)输出缓冲器中具有用于将通过执行对那些操作数的操作而产生 的数据的空间。
在某些实施例中,面积和能量减少的重要来源是由每种类型的处 理元件支持的数据流操作的定制。在一个实施例中,适当的子集(例如,大多 数)处理元件仅支持一些操作(例如,一种、两种、三种、或四种操作类型), 例如,其中浮点PE仅支持浮点乘法或浮点加法中的一者但不是这两者的实现 选择。
2.3 存储器接口
在某些实施例中,数据请求(例如,加载请求或存储请求)由可 配置空间加速器的存储器接口电路(例如,RAF电路)发送和接收。在一个实 施例中,与请求(例如,加载请求或存储请求)对应的数据被返回到发布该请 求的同一存储器接口电路(例如,RAF电路)。在另一实施例中,与来自第一 存储器接口电路(例如,RAF电路)的请求(例如,加载请求或存储请求)对 应的数据被发送到未发布该请求但用于接收该请求的对应数据的另一存储器 接口电路(例如,RAF电路)。请求地址文件(RAF)电路(在图11和图 12中中示出多个版本)可负责执行存储器操作,并充当CSA结构与存储器层 次结构之间的中介。由此,RAF的主要微架构任务可以是用于以CSA结构的 有序语义使乱序存储器子系统合理化。在该能力方面,RAF电路可供应有完成 缓冲器(例如,数据存储结构),这些完成缓冲器对存储器响应重排序,并按 请求顺序将这些存储器请求返回至结构。RAF电路的第二主要功能可以是用于 以地址转换和页遍历器(walker)的形式提供支持。传入虚拟地址可使用(例 如,通道关联的)转换后备缓冲器(TLB)被转换为物理地址。为了提供充足 的存储器带宽,每一个CSA片可包括多个RAF电路。像结构的各种PE那样, RAF电路可通过以下方式以数据流样式操作:在选择要执行的存储器操作之前, 检查输入自变量和输出缓冲(如果需要)的可用性。在某些实施例中,单个 RAF电路(例如,进入存储器的该单个RAF电路的端口)在若干共同定位的 存储器操作之间被复用(例如,如由存储在用于RAF电路的存储器操作寄存 器中的值所指示)。经复用的RAF电路可用于使其各个子组件的面积开销最 小化,从而例如共享加速器高速缓存互连(ACI)网络(例如,如下文中更详 细地所描述)、共享虚拟存储器(SVM)支持硬件、夹层网络接口和/或其他 硬件管理设施。然而,具有也促进该选择的一些程序特性。在一个实施例中, (例如,有效的)数据流图用于轮循共享虚拟存储器系统中的存储器。存储器 等待时间受约束程序(像图遍历)可利用许多分开的存储器操作,以便由于依 赖于存储器的控制流而使存储器带宽饱和。虽然每一个RAF都可被复用,但 是CAS可包括片粒度的多个(例如,在8个与32个之间)RAF以确保足够的 高速缓存带宽。RAF可经由本地网络和夹层网络两者来与结构的其余部分通信。 在RAF被复用的情况下,每一个RAF可与若干端口一起被供应到本地网络中。 这些端口可充当至存储器的最低等待时间、高度确定性路径,供由等待时间敏 感的或高带宽存储器操作使用。此外,RAF可被供应有夹层网络端点,例如, 该夹层网络端点将存储器访问提供给运行时服务以及远端用户级存储器访问 方。
图11图示根据本公开的实施例的请求地址文件(RAF)电路1100。 在一个实施例中,在配置时,已经在数据流图中的存储器加载和存储操作在(多 个)寄存器1110中被指定。随后,至数据流图中的那些存储器操作的弧可连 接至输入队列1122、1124和1126。在某些实施例中,来自那些存储器操作的 弧因此用于离开完成缓冲器1128、1130或1132。在某些实施例中,依赖性令 牌(其可以是多个单个的位)到达队列1118和1120。在某些实施例中,依赖 性令牌将从队列1116离开。依赖性令牌计数器1114可以是队列的紧凑表示, 并且可跟踪用于任何给定输入队列的依赖性令牌的数量。在某些实施例中,如 果依赖性令牌计数器1114饱和,则没有附加的依赖性令牌可被生成用于新的 存储器操作。相应地,存储器排序电路(例如,图13中的RAF)会停止调度 新存储器操作,直到依赖性令牌计数器1114变成不饱和。任选地,可包括分 配器电路1250,例如,如2.4节中所讨论。在某些实施例中,分配器电路1250 用于将RAF电路1100的组件分配给特定的存储器操作(例如,存储操作或加载操作),例如,如由存储在(多个)寄存器1110中的值所指示。在一个实 施例中,用于操作的组件是:(i)(例如,用于经由端口1101从存储器(例 如,高速缓存)接收用于由PE请求的加载操作的来自PE的地址数据的)单 个输入队列1122、1124或1126和(例如,用于接收已从存储器完成加载操作 的指示的)对应的完成缓冲器1128、1130或1132;或者(ii)来自1122、1124 或1126的成对的输入队列(例如,一个用于接收要存储的数据(例如,有效 载荷数据),并且一个用于接收指示经由端口1101将来自PE的该数据存储到 存储器(例如,高速缓存)中的何处的地址)以及(例如,用于接收存储操作 已在存储器中完成的指示的)对应的完成缓冲器1128、1130或1132。作为 加载的示例,地址到达队列1122,调度器1112在寄存器1110中将队列1122 匹配为被编程为是加载操作。在某些实施例中,用于该加载的完成缓冲器槽例 如按地址到达的顺序被指派。在某些实施例中,假定图中的该特定加载没有指 定的依赖性,则由调度器(例如,经由存储器命令1142)将该地址和完成缓冲 器槽派遣到存储器系统。在某些实施例中,当结果返回到多路复用器1140时 (示意性地示出),该结果被存储到它指定的完成缓冲器槽中(例如,由于该 结果沿着通过存储器系统全程都携带着目标槽)。在某些实施例中,完成缓冲 器按地址到达的顺序将结果往回发送到本地网络(例如,本地网络1102、1104、 1106或1108)中。
存储可以是类似的,例如例外在于,在某些实施例中,在任何操 作被派遣到存储器系统之前,地址和数据两者必须(例如,从一个或多个PE) 到达。
本地网络1102、1104、1106或1108可以是电路交换型网络,例 如,如参考图6-图8所讨论。在某些实施例中,当RAF电路1100的输入队列 为满时,RAF电路1100用于经由网络将回压值发送到产生方(例如,发射方) 组件(例如,PE)。回压值可使产生组件(例如,PE)停止(例如,向那个 特定的输入队列)发布或发送附加的存储器请求,直到在RAF电路的输入队 列中存储空间可用。在某些实施例中,接收组件(例如,PE)用于经由网络将 回压值发送到RAF电路1100,以停止从完成缓冲器1128、1130或1132发送 数据,直到在接收组件(例如,PE)的输入队列中存储空间可用。
任选地,转换后备缓冲器(TLB)1146可被包括,以将从输入队 列1122、1124或1126接收的逻辑地址转换为存储器(例如,高速缓存)的物 理地址。在一个实施例中,所访问的存储器是本文中讨论的高速缓存区块中的 一个或多个。
图12图示根据本公开的实施例的请求地址文件(RAF)电路1200。 在一个实施例中,在配置时,已经在数据流图中的存储器加载操作和存储器存 储操作在(多个)寄存器1210中被指定。随后,至数据流图中的那些存储器 操作的弧可连接至输入队列1222、1224和1226。在某些实施例中,来自那些 存储器操作的弧因此用于离开完成缓冲器1228、1230或1032。在某些实施例 中,依赖性令牌(其可以是多个单个的位)到达队列1218和1220中。在某些 实施例中,依赖性令牌用于从队列1216离开。依赖性令牌计数器1214可以是 队列的紧凑表示,并且可跟踪用于任何给定输入队列的依赖性令牌的数量。在 某些实施例中,如果依赖性令牌计数器1214饱和,则没有附加的依赖性令牌 可被生成用于新的存储器操作。相应地,存储器排序电路(例如,图13中的 RAF)会停止调度新存储器操作,直到依赖性令牌计数器1214变成不饱和。 在某些实施例中,在RAF电路1200中提供ALU 1248以准许直接在RAF中执 行存储器地址计算,例如,其中ALU的使用被任选地指定为寄存器1210中的配置值的部分。示例使用包括:地址位移计算,其中基址被加到偏移;和/或有 状态计算,其中可在RAF处重复地递增地址,诸如,流式加载(sld)。
任选地,可包括分配器电路1250,例如,如2.4节中所讨论。在 某些实施例中,分配器电路1250用于将RAF电路1200的组件分配给特定的 存储器操作(例如,存储操作或加载操作),例如,如由存储在(多个)寄存 器1210中的值所指示。在一个实施例中,用于操作的组件是:(i)(例如, 用于经由端口1201从存储器(例如,高速缓存)接收用于由PE请求的加载操 作的来自PE的地址数据的)单个输入队列1222、1224或1226和(例如,用 于接收已从存储器完成加载操作的指示的)对应的完成缓冲器1228、1230或 1232;或者(ii)来自1222、1224或1226的成对的输入队列(例如,一个用 于接收要存储的数据(例如,有效载荷数据),并且一个用于接收指示经由端 口1201将来自PE的该数据存储到存储器(例如,高速缓存)中的何处的地址) 以及(例如,用于接收存储操作已在存储器中完成的指示的)对应的完成缓冲 器1228、1230或1232。作为加载的示例,地址到达队列1222中,调度器1210 在寄存器1210中将该队列1222匹配为被编程为是加载操作。在某些实施例中, 用于该加载的完成缓冲器槽例如按地址到达的顺序被指派。在某些实施例中, 假定图中的该特定加载没有指定的依赖性,则由调度器(例如,经由存储器命 令1242)将该地址和完成缓冲器槽派遣到存储器系统。在某些实施例中,当结 果返回到解复用器1240时(示意性地示出),该结果被存储到由控制解复用 器1244提供的控制信息所指定的完成缓冲器槽中(例如,由于该结果沿着通 过存储器系统全程都携带目标槽)。在某些实施例中,完成缓冲器按照地址到 达的顺序将结果往回发送到CSA网络(例如,夹层网络1202)中。
存储可以是类似的,例如例外在于,在某些实施例中,在任何操 作被派遣到存储器系统之前,地址和数据两者必须(例如,从一个或多个PE) 到达。
网络1202可以是分组交换型网络,例如,参考图48-图55所讨论 的夹层网络。在某些实施例中,当RAF电路1200的输入队列为满时,RAF电 路1200用于经由网络将回压值发送到产生方(例如,发射方)组件(例如, PE)。回压值可使产生组件(例如,PE)停止(例如,向那个特定的输入队 列)发布或发送附加的存储器请求,直到在RAF电路的输入队列中存储空间 可用。在某些实施例中,接收组件(例如,PE)用于经由网络将回压值发送到 RAF电路1200,以停止从完成缓冲器1228、1230或1232发送数据,直到在 接收组件(例如,PE)的输入队列中存储空间可用。从网络1220发送和发送 到网络1220中的数据可包括通道标识值,该通道标识值标识数据将存储到哪 个输入队列1222、1224或1226中(例如,数据减去用于标识值的位)。例如, 标识值可包括标识RAF电路的特定输入队列的第一字段(以及例如从多个RAF 电路中标识出那个特定的RAF电路的第二字段)。
任选地,转换后备缓冲器(TLB)1246可被包括,以将从输入队 列1222、1224或1226接收的逻辑地址转换为存储器(例如,高速缓存)的物 理地址。在一个实施例中,所访问的存储器是本文中讨论的高速缓存区块中的 一个或多个。
数据流图可能能够并行地生成大量(例如,字粒度)请求。因此, CSA的某些实施例将足够的带宽提供给高速缓存子系统以维护CSA。可利用 高度区块化的高速缓存微架构(例如,如图13中所示)。图13图示根据本公 开的实施例的电路1300,该电路1300具有耦合在多个加速器片1308、1310、 1312、1314与多个高速缓存区块(例如,高速缓存区块1302)之间的多个请 求地址文件(RAF)电路(例如,RAF电路1)。在一个实施例中,RAF和高 速缓存区块的数量可以按1:1或1:2的比率。高速缓存区块可包括完整的高速 缓存行(例如,与按字切分形成对照),并且每一行具有在该高数缓存中的确 切的一个归属地(home)。高速缓存行可经由伪随机函数被映射至高速缓存区 块。CSA可采用共享虚拟存储器(SVM)模型以与其他分片架构集成。某些 实施例包括将RAF连接到高速缓存区块的加速器高速缓存互连(ACI)网络 1340。该网络可在RAF与高速缓存之间携带地址和数据。ACI的拓扑可以是 级联的交叉开关(crossbar),例如,作为等待时间与实现复杂度之间的折中。 分配器1330(例如,分配器电路)可被包括,以为特定操作或特定操作的实例 分配(多个)RAF电路的组件,例如,如下文在2.4节中所讨论。分配器可耦 合至处理器的核,例如,图2中的核中的一个核。核可将指示发送到分配器以 开始分配。PE可经由例如如本文中讨论的电路交换型网络来与RAF电路通信。
在某些实施例中,加速器-高速缓存网络进一步耦合至电路1320, 该电路1320包括高速缓存归属地代理和/或下一级高速缓存。在某些实施例中, 加速器-高速缓存网络(例如,互连)与加速器(例如,加速器片)的任何(例 如,电路交换型或分组交换型)网络分开,例如,RAF是处理元件与高速缓存 归属地代理和/或下一级高速缓存之间的接口。在一个实施例中,高速缓存归属 地代理用于连接到(例如,与高速缓存区块分开的)存储器以从那个存储器(例 如,图2中的存储器202)访问数据,从而例如在高速缓存区块与(例如,系统)存储器之间移动数据。在一个实施例中,下一级高速缓存是(例如,单个) 较高级别高速缓存,例如使得对该下一级高速缓存(例如,较高级别高速缓存) 检查未在较低级别高速缓存(例如,高速缓存区块)中找到(例如,未命中) 的数据。在一个实施例中,该数据是有效载荷数据。在另一实施例中,该数据 是物理地址至虚拟地址映射。在一个实施例中,CHA用于对未命中(例如, 较高级别高速缓存中的未命中)执行对(例如,系统)存储器的搜索,并且不 对命中(例如,所请求的数据在被搜索的高速缓存中)执行搜索。
图14图示根据本公开的实施例的电路1400,该电路1400具有耦 合在多个加速器片(1408、1410、1412、1414)与多个高速缓存区块(例如, 高速缓存区块1402)之间的多个请求地址文件(RAF)电路(例如,RAF电 路(1))。在一个实施例中,RAF和高速缓存区块的数量可以按1:1或1:2 的比率。高速缓存区块可包含完整的高速缓存行(例如,与按字切分形成对照), 并且每一行具有在该高数缓存中的确切的一个原位(home)。高速缓存行可经 由伪随机函数被映射至高速缓存区块。CSA可采用共享虚拟存储器(SVM) 模型以与其他分片架构集成。某些实施例包括将RAF连接到高速缓存区块的 加速器高速缓存互连(ACI)网络1440。该网络可在RAF与高速缓存之间承 载地址和数据。ACI的拓扑可以是级联的交叉开关,例如,作为等待时间与实 现复杂度之间的折中。分配器1430(例如,分配器电路)可被包括,以为特定 操作或特定操作的实例分配(多个)RAF电路的组件,例如,如下文在2.4节 中所讨论。分配器可耦合至处理器的核,例如,图2中的核中的一个核。核可 将指示发送到分配器以开始分配。PE可经由分组交换型网络(例如,如本文 中讨论的夹层网络)来与RAF电路通信。在所描绘的实施例中,RAF电路(1) 至(8)中的每一个包括以虚线框示出的其自身相应的夹层网络1442(1)至(8) 以耦合至图14中的PE中的一个或多个(例如,任何)PE。
在某些实施例中,加速器-高速缓存网络进一步耦合至电路1420, 该电路1420包括高速缓存归属地代理和/或下一级高速缓存。在某些实施例中, 加速器-高速缓存网络(例如,互连)与加速器(例如,加速器片)的任何(例 如,电路交换型或分组交换型)网络分开,例如,RAF是处理元件与高速缓存 归属地代理和/或下一级高速缓存之间的接口。在一个实施例中,高速缓存归属 地代理用于连接到(例如,与高速缓存区块分开的)存储器以从那个存储器(例 如,图2中的存储器202)访问数据,从而例如在高速缓存区块与(例如,系统)存储器之间移动数据。在一个实施例中,下一级高速缓存是(例如,单个) 较高级别高速缓存,例如使得对该下一级高速缓存(例如,较高级别高速缓存) 检查未在较低级别高速缓存(例如,高速缓存区块)中找到(例如,未命中) 的数据。在一个实施例中,该数据是有效载荷数据。在另一实施例中,该数据 是物理地址至虚拟地址映射。在一个实施例中,CHA用于对未命中(例如, 较高级别高速缓存中的未命中)执行对(例如,系统)存储器的搜索,并且不 对命中(例如,所请求的数据在被搜索的高速缓存中)执行搜索。
2.4 分配存储器接口电路和/或其组件
为了满足如今日益高级的性能目标和激进的能量目标,已开发了 被命名为可配置空间架构(CSA)的并行分布式数据流架构。CSA可包括处理 元件、请求地址文件(RAF)电路、处理元件与RAF电路之间的网络、(多 个)高速缓存、RAF电路与(多个)高速缓存之间的网络、其他存储器(例如, 如图16中所示)、高速缓存与存储器之间的网络、或上述各项的任何组合。
作为数据流架构,CSA的实施例具有独特的存储器架构,例如, 其中存储器访问被解耦为允许通过存储器流水线化的显式的请求和响应阶段。 该架构准许数据流图的地址生成部分典型地产生大量地址访问,并允许CSA 的这些实施例驱动高存储器带宽,并且还通过观察存储器访问流来给予CSA 存储器接口微架构改善程序性能的许多机会。本文中的某些实施例利用这些改 进,以便例如通过允许在给定时间段内允许更多数据访问来改善数据流图的性 能。在一个实施例中,并行计算的特性确定密集的存储器访问,因此CSA的存储器子系统对于最终性能水平是关键的,以便例如使存储器子系统内的执行 时间最小化。本文中的某些实施例经由分配和本文中讨论的对分配的改进来提 供改进的存储器子系统设计。
图15图示根据本公开的实施例的流程图1500。所描绘的流程1500 包括:1502:将处理元件的空间阵列耦合至第一存储器接口电路和第二存储器 接口电路,第一存储器接口电路包括进入高速缓存的第一端口、、用于存储用 于来自处理元件的空间阵列的存储器请求的数据的第一多个输入队列、以及第 一存储器操作寄存器,第二存储器接口电路包括进入高速缓存的第二端口、用 于存储用于来自处理元件的空间阵列的存储器请求的数据的第二多个输入队 列、以及第二存储器操作寄存器;1504:根据第一分配模式将相应的第一值设 置到第一存储器操作寄存器和第二存储器操作寄存器中以:将第一端口耦合至 第一多个输入队列中的、存储用于来自处理元件的空间阵列的第一处理元件的 存储器请求的数据的第一输入队列;将第二端口耦合至第二多个输入队列中的、 存储用于来自处理元件的空间阵列的第二处理元件的存储器请求的数据的第 一输入队列;以及将第一端口耦合至第一多个输入队列中的、存储来自处理元 件的空间阵列的第三处理元件的存储器请求的数据的第二输入队列;以及1506: 根据第二分配模式将相应的第二值设置到第一存储器操作寄存器和第二存储 器操作寄存器中以:将第一端口耦合至第一多个输入队列中的、存储用于来自 处理元件的空间阵列的第一处理元件的存储器请求的数据的第一输入队列;将 第二端口耦合至第二多个输入队列中的、存储用于来自处理元件的空间阵列的 第二处理元件的存储器请求的数据的第一输入队列;以及将第二端口耦合至第 二多个输入队列中的、存储来自处理元件的空间阵列的第三处理元件的存储器 请求的数据的第二输入队列。
图16图示根据本公开的实施例的可配置空间加速器及其存储器子 系统(包括RAF电路1606、加速器高速缓存接口(ACI)网络1604、高速缓 存区块1602、存储器(例如,一致性)网络1616、高速缓存归属地代理1618、 以及主存储器1620)的高级别视图。所描绘的CSA存储器子系统是分布式的, 其中,多个接口(例如,RAF电路)能够注入请求。在某些实施例中,该分布 式数据流架构和微架构改善计算机(例如,包括RAF电路)的运作。
在一个实施例中,每个RAF电路包括多个输入队列(以及例如多 个完成缓冲器),这些输入队列(以及例如完成缓冲器)用于(例如,经由将 相应的值存储到(多个)存储器操作寄存器中)被编程为(例如,反复地)执 行某个操作。例如,给定的处理元件可从存储器(例如,高速缓存)请求数据, 并且经由将存储器请求发送(例如,将指示存储器地址的值发送)到RAF电 路的(多个)特定的输入队列来这样做,并且那个RAF电路(例如,其(多 个)存储器操作寄存器)被预编程为使那些请求发布到存储器。作为另一示例, 每个RAF电路包括多个输入队列(例如,RAF电路1中的输入队列1622)以 及完成缓冲器(例如,RAF电路1中的完成缓冲器1624)中被指派给特定的 存储器操作(例如,用于特定的数据请求PE和/或数据接收PE,在一个实施 例中,它们可以是同一PE)的多个槽。RAF电路可从(多个)加速器片1608 (例如,如本文中讨论的具有多个处理元件的加速器片)接收存储器操作请求。
在图16中,分配器1610(例如,分配器电路)用于发送适当的控 制值(例如,发送到(多个)存储器操作寄存器中)以根据多种分配模式中的 期望分配模式将存储器操作指派给特定的RAF电路(例如,并且更具体地指 派给那个特定RAF电路的组件的特定子集)。具有多种分配模式是对计算机 运作的改进,因为它允许基于数据流图的静态和动态执行属性的分配灵活性。 本文中的某些实施例利用存储器操作和RAF电路资源(例如,输入缓冲器和/ 或完成缓冲器)的优化的映射来改善CSA的性能。
本文中的分配模式中的一种或多种分配模式允许优化RAF电路资 源,从而匹配每个应用的要求并因此实现最优性能目标。在具有静态复用的分 布式结构的实施例中,RAF电路(以及例如本文中的组件的适当子集)的分配 允许数据流图的存储器操作以实现最大性能的方式被绑定至RAF电路。若干 考量可参与该决策,包括数据流图的静态和动态执行属性。
在某些实施例中,对于图执行的生命周期,存储器操作(或数据 流图的存储器操作的子集)被静态地指派给特定的RAF电路。在一个实施例 中,多个相应的存储器操作被指派给每个相应的RAF电路,并且在运行时, RAF电路(例如,硬件)将从准备好执行的存储器操作(例如,准备好是因为 这些准备好执行的存储器操作的数据在(多个)输入队列中是可用的,并且在 用于这些准备好执行的存储器操作的数据和/或完成指示的这些准备好执行的 存储器操作的完成缓冲器中存在可用的空间)之中选择(例如,每个周期的) 一个存储器操作。在某些实施例中,在图执行的生命周期期间,存储器操作(或 数据流图的存储器操作的子集)被动态地指派给特定的RAF电路。
在某些实施例中,RAF电路负责执行存储器操作,并且充当CSA 结构(例如PE)与存储器层次结构之间的接口。本文中的某些实施例包括将 存储器操作指派给RAF通道的分配器(例如,分配器电路)。在一个实施例 中,分配器用于实现最佳性能和最大带宽。分配器可获得以下各项作为输入: (i)在执行数据流图时要执行的存储器操作的数量(例如,图中的“N”个数量 的存储器操作(OP):OP0、OP1、OP2、…、OPN-1);(ii)RAF电路的数 量;和/或(iii)用于每个RAF电路的输入队列(和/或完成缓冲器)的数量(例 如,(例如,每个CSA片的)“R”个数量的RAF电路以及每个RAF电路的“C” 个数量的输入队列:RAF(0)_InputQueue0、RAF(0)_InputQueue1、…、 RAF(0)_InputQueueC-1、RAF(1)_InputQueue0、RAF(1)_InputQueue1、…、 RAF(1)_InputQueueC-1、以及RAF(R-1)_InputQueue0、RAF(R-1)_InputQueue1… RAF(R-1)_InputQueueC-1)。如上文讨论的InputQueue可以是单个输入队列或 被绑定在一起的成对的输入队列(例如,在存储操作中,用于接收要存储的数 据的第一输入队列以及用于接收用于要存储的数据的地址的第二输入队列)。 在一个实施例中,每个周期由每个RAF电路(例如,经由ACI网络)将单个 存储器请求发布(例如,仲裁)到高速缓存中,因此存储器操作向RAF电路 的分配对于性能是关键的。在一个实施例中,该分配用于在多种操作模式之间 进行选择,以实现取得最佳性能和/或最低功耗的N个存储器操作至(例如,R x C个)RAF资源(例如,输入队列)的映射。在一个实施例中,每个RAF 电路具有与所利用的任何其他RAF电路相同数量的输入队列(和/或完成缓冲 器)。
在一个实施例中,完成存储器操作向RAF组件(例如,输入队列) 的随机分配,但是此类分配会具有极端的负载不平衡,并且使得性能不可接受 且不可预测。
下文包括供分配器利用以将存储器操作指派给RAF电路来实现期 望目标(例如,最优性能水平)的(例如,非随机)分配模式的十二个示例。 分配模式可从以下目标中的一个或多个目标选择:(1)高带宽存储器操作对 性能更关键;(2)高等待时间存储器操作对性能更关键;(3)跨所有RAF 电路的负载平衡导致更好的性能;(4)基于投标组的指派帮助改善性能;(5) 基于操作类型的指派帮助改善性能;或(6)基于具有带宽范围的操作箱体的指派帮助改善性能。进一步地,下文包括用于分配完成缓冲器的两种分配模式。
在某些实施例中,分配器(例如,分配器电路)收集运行时数据 (或访问先前收集的运行时数据)。运行时数据可包括针对数据流图的存储器 发布计数。在一个实施例中,存储器发布计数可以是任何整数,例如,某些数 据流图可包括针对那个数据流图的数十、数百、数千、数万、数十万、数百万 或甚至数十亿个存储器发布。
在一个实施例中,RAF电路中的每个RAF电路是图11的RAF电 路1100或图12的RAF电路1200的实例。在某些实施例中,将值设置到存储 器操作寄存器中(例如,设置到图11中的(多个)寄存器1110中或设置到图 12中的(多个)寄存器1210中)将那个RAF电路设置为期望的分配模式,例 如,以根据分配模式引起为相应的特定存储器操作指派输入队列。在某些实施 例中,指派包括将输入队列耦合至RAF电路的进入存储器(例如,进入高速 缓存)的端口。
I.负载平衡最长作业优先(LB-LJF)分配模式
在某些实施例中,被发布更多次的存储器操作对性能更关键。在 一个实施例中,对于给定的数据流图和输入数据集,每个存储器操作将执行固 定数量的次数。在某些实施例中,如果被频繁发布的存储器操作被给予较少的 发布带宽,则最小执行时间将增加。
因此,在这些实施例中,给予高发布计数的操作更高的仲裁优先 级可帮助改善性能并实现更高的带宽。此外,如果跨所有RAF电路的发布次 数的总数是平衡的,则在这些实施例中将实现更好的性能。该第一分配模式通 过根据(例如,单个数据流图的)存储器操作的发布计数来对它们排序并以平 衡的方式将存储器操作指派给RAF组件(例如,输入队列)来提供那两个改 善。这可称为负载平衡最长作业优先(LB-LJF)分配模式。
下文描述该分配模式的示例:
1)从最高发布计数(例如,特定存储器操作执行的次数)到最低发布计 数对所有存储器操作排序。发布计数可通过反馈(例如,简档引导的优化)获 得,或从编译器生成的相对发布计数估计获得;
2)开始将经排序的存储器操作指派给RAF(0)_InputQueue0、 RAF(1)_InputQueue0、…、RAF(R-1)_InputQueue0,直到每个RAF电路的第一 个组件(例如,输入队列)被分配;
3)对目前为止已经被指派的所有RAF电路的发布计数(例如,加载和存 储)进行计数,例如,将每个RAF电路中的所有组件(例如,输入队列)的 所有发布计数相加;
4)将下一经排序的存储器操作指派给RAF电路的具有最小负载的下一可 用的组件(例如,输入队列);
5)重复3)和4),直到存储器操作中的最后的存储器操作被分配给RAF 电路;以及
6)注意,如果两个存储器操作的发布计数相同,则该分配模式按与词汇 程序顺序相反的顺序(或者在另一实施例中,按词汇程序顺序)来处置它们。
在一个实施例中,LB-LJF RAF分配模式在应用开始运行之前静态 地将RAF组件(例如,输入队列)指派给存储器操作,并且依赖于带宽信息, 该带宽信息的估计(例如,发布计数)假定由(例如,生成数据流图的)编译 器和/或后期工具(例如,图19中的精化、缓冲器插入、融合、以及放置和路 由软件模块中的任一个)提供。在某些实施例中,LB-LJF分配模式能够跨多 个RAF电路使存储器操作(例如,发布计数)平衡。
II.负载平衡(LB)分配模式
第二分配模式被称为负载平衡(LB)分配模式。与第一分配模式 类似,该分配模式给予高发布计数操作更高的仲裁优先级,并且使跨所有RAF 的发布次数的总数平衡。与第一分配模式的一个区别在于,该分配模式不根据 存储器操作的发布计数来对存储器操作排序,而是根据存储器操作的词汇程序 顺序来将存储器操作指派给RAF组件(例如,输入队列)。
下文描述该分配模式的示例:
1)开始按词汇程序顺序(例如,未经排序)将存储器操作指派给 RAF(0)_InputQueue0、RAF(1)_InputQueue0、…、RAF(R-1)_InputQueue0,直 到每个RAF电路的第一个组件(例如,输入队列)被分配;
2)对目前为止已经被指派的所有RAF电路的发布计数(例如,加载和存 储)进行计数,例如,将每个RAF电路中的所有组件(例如,输入队列)的 所有发布计数相加。在一个实施例中,发布计数可通过反馈(例如,简档引导 的优化)获得,或从编译器生成的相对发布计数估计获得;
3)将下一(例如,未经排序的)存储器操作指派给RAF电路的具有最小 负载的下一可用的组件(例如,输入队列);以及
4)重复2)和3),直到存储器操作中的最后的存储器操作被分配给RAF 电路。
在一个实施例中,LB RAF分配模式在应用开始运行之前静态地将 RAF组件(例如,输入队列)指派给存储器操作,并且依赖于带宽信息,该带 宽信息的估计(例如,发布计数)假定由(例如,生成数据流图的)编译器和 /或后期工具(例如,图19中的精化、缓冲器插入、融合、以及放置和路由软 件模块中的任一个)提供。在某些实施例中,LB分配模式能够跨多个RAF电 路使存储器操作(例如,发布计数)平衡。
III.基于箱体的负载平衡最长作业优先(BB-LB-LJF)
第三RAF分配模式被称为基于箱体的负载平衡最长作业优先 (BB-LB-LJF)分配模式。与第一分配模式类似,该分配模式给予高发布计数 操作更高的仲裁优先级,并且使跨所有RAF的发布次数的总数平衡。与第一 分配模式的一个区别在于,该分配模式将被发布基本上相同次数的存储器操作 的适当子集置于同一箱体中,并且均等地对待每个箱体中的那些存储器操作, 从而进一步优化性能。描述了详细的分配模式。
下文描述该分配模式的示例:
1)从最高发布计数(例如,特定存储器操作执行的次数)到最低发布计 数对所有存储器操作排序。发布计数可通过反馈(例如,简档引导的优化)获 得,或从编译器生成的相对发布计数估计获得;
2)此外,具有接近的发布计数(例如,±约2%、3%、4%、5%、6%、7%、 8%、9%、10%或任何其他整数)的存储器操作被视为单个箱体的部分,使得 多个箱体中的每个箱体覆盖小范围的发布计数而不是单个发布计数;
3)从最高发布计数范围到最低发布计数范围对所有箱体排序;但是在每 个箱体内,存储器操作保持按照词汇程序顺序(例如,针对100与1000之间 的发布计数的箱体可包括具有发布计数850的第一(按程度顺序的)存储器操 作以及具有发布计数950的第二(按程序顺序的)存储器操作);
4)开始将以经排序的箱体中的第一个箱体开始的存储器操作指派给 RAF(0)_InputQueue0、RAF(1)_InputQueue0、…、RAF(R-1)_InputQueue0,直 到每个RAF电路的第一个组件(例如,输入队列)被分配;
5)对目前为止已经被指派的所有RAF电路的发布计数(例如,加载和存 储)进行计数,例如,将每个RAF电路中的所有组件(例如,输入队列)的 所有发布计数相加;
6)将来自箱体的下一(按程序顺序的)存储器操作指派给RAF电路的具 有最小负载的下一可用的组件(例如,输入队列);以及
7)重复5)和6),直到存储器操作中的最后的存储器操作被分配给RAF 电路。
在一个实施例中,BB-LB-LJF RAF分配模式在应用开始运行之前 静态地将RAF组件(例如,输入队列)指派给存储器操作,并且依赖于带宽 信息,该带宽信息的估计(例如,发布计数)假定由(例如,生成数据流图的) 编译器和/或后期工具(例如,图19中的精化、缓冲器插入、融合、以及放置 和路由软件模块中的任一个)提供。在某些实施例中,BB-LB-LJF分配模式能 够跨多个RAF电路使存储器操作(例如,发布计数)平衡。
IV.基于类型的负载平衡最长作业优先(TB-LB-LJF)分配模式
第四RAF分配模式被称为基于类型的负载平衡最长作业优先 (TB-LB-LJF)分配模式。该分配模式将带宽用作竞争的存储器操作之间的 RAF组件(例如,输入队列)资源分配的关键决策符(例如,其中发布次数作 为带宽指示符),以提供也应用最长作业优先的负载平衡分配模式。该模式的 某些实施例还对不同类型的存储器请求排定优先级以进一步优化性能。
在某些实施例中,存在由CSA存储器子系统处置的三种主要类型 的存储器操作,即,加载、存储和预取。然而,在某些数据流图中,当分配 RAF电路资源时,可能不期望以相同的优先级级别来对待所有那三种主要类型。 在某些实施例中,在预取旨在通过在数据实际被需要之前很好地取出数据来提 升性能的情况下,预取不如加载请求和存储请求关键。在某些实施例中,在预 取之前分配加载和存储导致更好地执行CSA。
在某些实施例中,在第四分配模式中,按照加载-存储-预取的顺序 的存储器操作根据它们的发布计数被排序,并且按平衡的方式被指派给RAF 组件(例如,输入队列)。
下文描述该分配模式的示例:
1)从最高发布计数(例如,特定存储器操作执行的次数)到最低发布计 数对所有加载操作排序。发布计数可通过反馈(例如,简档引导的优化)获得, 或从编译器生成的相对发布计数估计获得;
2)从最高发布计数(例如,特定存储器操作执行的次数)到最低发布计 数对所有存储操作排序。发布计数可通过反馈(例如,简档引导的优化)获得, 或从编译器生成的相对发布计数估计获得;
3)从最高发布计数(例如,特定存储器操作执行的次数)到最低发布计 数对所有预取操作排序。发布计数可通过反馈(例如,简档引导的优化)获得, 或从编译器生成的相对发布计数估计获得;
4)开始指派经排序的存储器操作(例如,根据需要按以下顺序:经排序 的加载操作,随后是经排序的存储操作,最后是经排序的预取操作)指派给 RAF(0)_InputQueue0、RAF(1)_InputQueue0、…、RAF(R-1)_InputQueue0,直 到每个RAF电路的第一个组件(例如,输入队列)被分配;
5)对目前为止已经被指派的所有RAF电路的发布计数(例如,加载和存 储)进行计数,例如,将每个RAF电路中的所有组件(例如,输入队列)的 所有发布计数相加;
6)将下一存储器操作指派给RAF电路的针对经排序的操作(例如,根据 需要按以下顺序:经排序的加载操作,随后是经排序的存储操作,最后是经排 序的预取操作)具有最小负载的下一可用的组件(例如,输入队列);
7)重复5)和6),直到存储器操作中的最后的存储器操作被分配给RAF 电路;以及
8)注意,如果两个存储器操作的发布计数相同,则该分配模式按与词汇 程序顺序相反的顺序(或者在另一实施例中,按词汇程序顺序)来处置它们。
在一个实施例中,TB-LB-LJF RAF分配模式在应用开始运行之前 静态地将RAF组件(例如,输入队列)指派给存储器操作,并且依赖于带宽 信息,该带宽信息的估计(例如,发布计数)假定由(例如,生成数据流图的) 编译器和/或后期工具(例如,图19中的精化、缓冲器插入、融合、以及放置 和路由软件模块中的任一个)提供。在某些实施例中,TB-LB-LJF分配模式能 够跨多个RAF电路使存储器操作(例如,发布计数)平衡,并且将存储器操 作的类型考虑在内。
V.随机化负载平衡最长作业优先(RANDOMIZED-LB-LJF)分配模式
第五RAF分配模式被称为随机化负载平衡最长作业优先 (Randomized-LB-LJF)分配模式。该分配模式应用随机化策略来使RAF分配 更加粗粒度。在该模式的一个实施例中,根据存储器操作的发布计数对存储器 操作排序,并通过应用随机化方法按平衡的方式将存储器操作指派给RAF组 件(例如,输入队列)。
下文描述该分配模式的示例:
1)从最高发布计数(例如,特定存储器操作执行的次数)到最低发布计 数对所有存储器操作排序。发布计数可通过反馈(例如,简档引导的优化)获 得,或从编译器生成的相对发布计数估计获得;
2)开始将经排序的存储器操作指派给RAF(0)_InputQueue0、 RAF(1)_InputQueue0、…、RAF(R-1)_InputQueue0,直到每个RAF电路的第一 个组件(例如,输入队列)被分配;
3)对目前为止已经被指派的所有RAF电路的发布计数(例如,加载和存 储)进行计数,例如,将每个RAF电路中的所有组件(例如,输入队列)的 所有发布计数相加;
4)挑选低于(例如,最低)发布计数值的RAF电路中的“M”数量个(例 如,所有RAF电路的适当子集)RAF电路;
5)随机地从这M数量个(例如,多于一个但少于全部)RAF电路选择一 个RAF电路;
6)将下一经排序的存储器操作指派给那个被选择的RAF电路;
7)重复3)-6),直到存储器操作中的最后的存储器操作被分配;以及
8)注意,如果两个存储器操作的发布计数相同,则该分配模式按与词汇 程序顺序相反的顺序(或者在另一实施例中,按词汇程序顺序)来处置它们。
在一个实施例中,Randomized-LB-LJF RAF分配模式在应用开始 运行之前静态地将RAF组件(例如,输入队列)指派给存储器操作,并且依 赖于带宽信息,该带宽信息的估计(例如,发布计数)假定由(例如,生成数 据流图的)编译器和/或后期工具(例如,图19中的精化、缓冲器插入、融合、 以及放置和路由软件模块中的任一个)提供。在某些实施例中,Randomized-LB-LJF分配模式能够跨多个RAF电路使存储器操作(例如,发布 计数)平衡,并且还利用随机化策略的优势。
VI.随机化基于箱体的负载平衡最长作业优先 (RANDOMIZED-BB-LB-LJF)分配模式
第六RAF分配模式被称为随机化基于箱体的负载平衡最长作业优 先(Randomized-BB-LB-LJF)分配模式。该分配模式将带宽用作竞争的存储器 操作之间的RAF通道(例如,输入队列)资源分配的关键决策符(例如,其 中发布次数作为带宽指示符)。在一个实施例中,该模式还应用最长作业优先 策略和随机化策略两者。该模式的某些实施例还将被发布(例如,基本上或粗 略地)相同次数的所有存储器操作置于同一箱体中并均等地对待它们,以进一 步优化性能。因此,本文中的实施例利用根据存储器操作的发布计数排序的存 储器操作,将它们置入箱体中,并且通过应用随机化策略以平衡的方式来将它们指派给RAF组件(例如,输入队列)。
下文描述该分配模式的示例:
1)从最高发布计数(例如,特定存储器操作执行的次数)到最低发布计 数对所有存储器操作排序。发布计数可通过反馈(例如,简档引导的优化)获 得,或从编译器生成的相对发布计数估计获得;
2)此外,具有接近的发布计数(例如,±约2%、3%、4%、5%、6%、7%、 8%、9%、10%或任何其他整数)的存储器操作被视为单个箱体的部分,使得 多个箱体中的每个箱体覆盖小范围的发布计数而不是单个发布计数;
3)从最高发布计数范围到最低发布计数范围对所有箱体排序;但是在每 个箱体内,存储器操作保持按照词汇程序顺序(例如,针对100与1000之间 的发布计数的箱体可包括具有发布计数850的第一(按程度顺序的)存储器操 作以及具有发布计数950的第二(按程序顺序的)存储器操作);
4)开始将以经排序的箱体中的第一个箱体开始的存储器操作指派给 RAF(0)_InputQueue0、RAF(1)_InputQueue0、…、RAF(R-1)_InputQueue0,直 到每个RAF电路的第一个组件(例如,输入队列)被分配;
4)对目前为止已经被指派的所有RAF电路的发布计数(例如,加载和存 储)进行计数,例如,将每个RAF电路中的所有组件(例如,输入队列)的 所有发布计数相加;
5)挑选低于(例如,最低)发布计数值的RAF电路中的“M”数量个(例 如,所有RAF电路的适当子集)RAF电路;
6)随机地从这M数量个(例如,多于一个但少于全部)RAF电路选择一 个RAF电路;
7)将下一经排序的存储器操作指派给那个被选择的RAF电路;以及
8)重复4)-7),直到存储器操作中的最后的存储器操作被分配。
在一个实施例中,Randomized-BB-LB-LJF RAF分配模式在应用开 始运行之前静态地将RAF组件(例如,输入队列)指派给存储器操作,并且 依赖于带宽信息,该带宽信息的估计(例如,发布计数)假定由(例如,生成 数据流图的)编译器和/或后期工具(例如,图19中的精化、缓冲器插入、融 合、以及放置和路由软件模块中的任一个)提供。在某些实施例中, Randomized-BB-LB-LJF分配模式能够跨多个RAF电路使存储器操作(例如, 发布计数)平衡,并且还利用随机化策略和基于箱体的策略的优势。
VII.基于箱体的随机化负载平衡最长作业优先(BB-RANDOMIZED- LB-LJF)分配模式
第七RAF分配模式被称为基于箱体的随机化负载平衡最长作业优 先(BB-Randomized-LB-LJF)分配模式。在某些实施例中,被发布更多次的 存储器操作对性能更关键,如果使跨所有RAF电路的发布次数的总数平衡, 则具有更好的性能,随机化策略使分配更加粗粒度,并且具有类似的(例如, 非常接近的)发布计数的存储器操作被置入同一箱体中且以类似方式被对待。 在该模式的某些实施例中,根据存储器操作的发布计数对存储器操作排序,将 存储器操作置于箱体中,并通过应用随机化策略按平衡的方式将存储器操作指 派给RAF组件(例如,输入队列)。
下文描述该分配模式的示例:
1)从最高发布计数(例如,特定存储器操作执行的次数)到最低发布计 数对所有存储器操作排序。发布计数可通过反馈(例如,简档引导的优化)获 得,或从编译器生成的相对发布计数估计获得;
2)此外,具有接近的发布计数(例如,±约2%、3%、4%、5%、6%、7%、 8%、9%、10%或任何其他整数)的存储器操作被视为单个箱体的部分,使得 多个箱体中的每个箱体覆盖小范围的发布计数而不是单个发布计数;
3)从最高发布计数范围到最低发布计数范围对所有箱体排序;但是在每 个箱体内,存储器操作保持按照词汇程序顺序(例如,针对100与1000之间 的发布计数的箱体可包括具有发布计数850的第一(按程度顺序的)存储器操 作以及具有发布计数950的第二(按程序顺序的)存储器操作);
4)开始随机地从经排序的箱体中的第一个箱体(例如,随后当完成时, 随机地从第二个箱体,以此类推)将存储器操作指派给RAF(0)_InputQueue0、 RAF(1)_InputQueue0、…、RAF(R-1)_InputQueue0,直到每个RAF电路的第一 个组件(例如,输入队列)被分配。注意,同一箱体中的存储器操作按随机顺 序被分配给RAF电路;
5)对目前为止已经被指派的所有RAF电路的发布计数(例如,加载和存 储)进行计数,例如,将每个RAF电路中的所有组件(例如,输入队列)的 所有发布计数相加;
6)将来自最高发布计数的箱体的下一(按随机顺序的)存储器操作指派 给RAF电路的具有最小负载的下一可用的组件(例如,输入队列);以及
7)重复5)和6),直到存储器操作中的最后的存储器操作被分配给RAF 电路。
在一个实施例中,BB-Randomized-LB-LJF分配模式在应用开始运 行之前静态地将RAF组件(例如,输入队列)指派给存储器操作,并且依赖 于带宽信息,该带宽信息的估计(例如,发布计数)假定由(例如,生成数据 流图的)编译器和/或后期工具(例如,图19中的精化、缓冲器插入、融合、 以及放置和路由软件模块中的任一个)提供。在某些实施例中,BB-Randomized-LB-LJF分配模式能够跨多个RAF电路使存储器操作(例如, 发布计数)平衡,并且还利用随机化策略和基于箱体的策略的优势。
VIII.带宽平衡最长作业优先(带宽平衡LJF)分配模式
第八RAF分配模式被称为带宽平衡最长作业优先(带宽平衡LJF) 分配模式。该分配模式将请求带宽和响应带宽用作竞争的存储器操作之间的 RAF组件(例如,输入队列)资源分配的关键决策符。在一个实施例中,该模 式是也应用最长作业优先策略的负载平衡分配模式。在该模式的某些实施例中, 根据存储器操作的发布计数对存储器操作排序,并通过按请求/响应带宽平衡的 方式将存储器操作指派给RAF组件(例如,输入队列)。
下文描述该分配模式的示例:
1)从最高发布计数(例如,特定存储器操作执行的次数)到最低发布计 数对所有存储器操作排序。发布计数可通过反馈(例如,简档引导的优化)获 得,或从编译器生成的相对发布计数估计获得;
2)开始将经排序的存储器操作指派给RAF(0)_InputQueue0、 RAF(1)_InputQueue0、…、RAF(R-1)_InputQueue0,直到每个RAF电路的第一 个组件(例如,输入队列)被分配;
3)单独地跟踪每个RAF电路(“RAFi”):其总请求带宽(“Req_BW”) 和总响应带宽(“Res_BW”),例如,对于i=0、1、2、…、R-1,RAFi:Req_BWi 和Res_BWi;
4)将下一经排序的存储器操作指派给RAF电路的满足 Minimum(Maximum(Req_BWi+Req_BWNext,Res_BWi+Res_BWNext),对于 i=0…R-1)的下一可用组件(例如,输入队列);以及
5)重复3)和4),直到存储器操作中的最后的存储器操作被分配给RAF 电路。
在一个实施例中,带宽平衡LJF分配模式在应用开始运行之前静 态地将RAF组件(例如,输入队列)指派给存储器操作,并且依赖于带宽信 息,该带宽信息的估计(例如,发布计数)假定由(例如,生成数据流图的) 编译器和/或后期工具(例如,图19中的精化、缓冲器插入、融合、以及放置 和路由软件模块中的任一个)提供。在某些实施例中,带宽平衡LJF分配模式 能够跨多个RAF电路使请求/响应带宽平衡,同时将更高的仲裁优先级给予更 长的存储器操作。
IX.带宽平衡分配模式
第九RAF分配模式被称为带宽平衡分配模式。该分配模式将请求 带宽和响应带宽用作竞争的存储器操作之间的RAF组件(例如,输入队列) 资源分配的关键决策符。在一个实施例中,该模式是用于优化性能以使得每个 电路的请求/响应带宽平衡的带宽平衡分配模式。
下文描述该分配模式的示例:
1)开始按词汇程序顺序将(例如,未经排序的)存储器操作指派给 RAF(0)_InputQueue0、RAF(1)_InputQueue0、…、RAF(R-1)_InputQueue0,直 到每个RAF电路的第一个组件(例如,输入队列)被分配;
2)单独地跟踪每个RAF电路(“RAFi”):其总请求带宽(“Req_BW”) 和总响应带宽(“Res_BW”),例如,对于i=0、1、2、、R-1,RAFi:Req_BWi 和Res_BWi;
3)将按词汇程序顺序的下一(例如,未经排序的)存储器操作指派给RAF 电路的满足Minimum(Maximum(Req_BWi+Req_BWNext,Res_BWi+ Res_BWNext),对于i=0…R-1)的下一可用组件(例如,输入队列);以及
4)重复2)和3),直到存储器操作中的最后的存储器操作被分配给RAF 电路。
在一个实施例中,带宽平衡分配模式在应用开始运行之前静态地 将RAF组件(例如,输入队列)指派给存储器操作,并且依赖于带宽信息, 该带宽信息的估计(例如,发布计数)假定由(例如,生成数据流图的)编译 器和/或后期工具(例如,图19中的精化、缓冲器插入、融合、以及放置和路 由软件模块中的任一个)提供。在某些实施例中,带宽平衡分配模式能够跨 RAF电路使请求/响应带宽平衡。
X.等待时间知晓的负载平衡最长作业优先(LA-LB-LJF)分配模式
第十RAF分配模式被称为等待时间知晓的负载平衡最长作业优先 (LA-LB-LJF)分配模式。该分配模式将带宽和等待时间两者用作竞争的存储 器操作之间的RAF组件(例如,输入队列)资源分配的关键决策符。该分配 模式将发布次数用作带宽指示符,并将带宽与等待时间的相乘用作负载指示符, 并使用最长作业优先策略。在一个实施例中,给予高带宽操作更高的仲裁优先 级帮助改善性能并实现更高带宽,但是在某些实施例中,具有更长等待时间的 存储器操作可能更有可能是重要,并且在RAF资源分配期间给予它们更高的优先级帮助减少等待时间并产生更好的性能。本文中的某些实施例提供考虑带 宽和等待时间两者(例如,其中负载是带宽和等待时间的相乘)且以平衡的方 式跨所有RAF电路来平衡负载的分配模式。在一个实施例中,根据存储器操 作的负载(例如,乘以等待时间值的带宽值)对存储器操作排序,并且按平衡 的方式将存储器操作指派给RAF组件(例如,输入队列)。
下文描述该分配模式的示例:
1)在某些实施例中,存储器操作的负载被表示为该存储器操作的发布计 数和存储器等待时间的相乘。发布计数和/或等待时间可通过反馈(例如,简档 引导的优化)获得,或从编译器生成的相对发布计数估计获得;
2)从最高负载(例如,如上文所表示的负载)到最低负载(例如,如上 文所表示的负载)对所有存储器操作排序;
3)开始将经排序的存储器操作指派给RAF(0)_InputQueue0、 RAF(1)_InputQueue0、…、RAF(R-1)_InputQueue0,直到每个RAF电路的第一 个组件(例如,输入队列)被分配;
4)单独地对每个RAF电路跟踪到目前为止的该RAF电路的负载;
5)将下一存储器操作指派给RAF电路的具有最小负载的下一可用的组件 (例如,输入队列);
6)重复4)和5),直到存储器操作中的最后的存储器操作被分配给RAF 电路;以及
7)注意,如果两个存储器操作的发布计数相同,则该分配模式按与词汇 程序顺序相反的顺序(或者在另一实施例中,按词汇程序顺序)来处置它们。
在一个实施例中,LA-LB-LJF RAF分配模式在应用开始运行之前 静态地将RAF组件(例如,输入队列)指派给存储器操作,并且依赖于带宽 信息,该带宽信息的估计(例如,发布计数)假定由(例如,生成数据流图的) 编译器和/或后期工具(例如,图19中的精化、缓冲器插入、融合、以及放置 和路由软件模块中的任一个)提供。在某些实施例中,LA-LB-LJF分配模式能 够通过将带宽和等待时间两者考虑在内而跨多个RAF电路使存储器操作(例如,发布计数)平衡。
XI.基于投标组的负载平衡最长作业优先(BGB-LB-LJF)分配模式
第十一RAF分配模式被称为基于投标组的负载平衡最长作业优先 (BGB-LB-LJF)分配模式。该分配模式的某些实施例包括两部分:(i)首先 将存储器操作分配给所描述的RAF电路投标组(例如,如下文参照图17所讨 论);以及随后将这些存储器操作分配给每个投标组内的各个RAF电路,例 如,其中在这两个部分中,负载平衡模式也应用最长作业优先策略。该分配模 式将带宽用作竞争的存储器操作之间的RAF组件(例如,输入队列)资源分配的关键决策符(例如,将发布次数用作带宽指示符)。在某些实施例中,该 模式给予高发布计数操作更高的仲裁优先级(以便例如改善性能并实现更高带 宽),并且跨RAF电路使带宽平衡。
下文描述该分配模式的示例:
1)从最高发布计数(例如,特定存储器操作执行的次数)到最低发布计 数对所有存储器操作排序。发布计数可通过反馈(例如,简档引导的优化)获 得,或从编译器生成的相对发布计数估计获得;
2)将RAF电路的适当子集划分为M个(例如,其中M是大于1的整数) 数量的投标组(例如,Group1、Group2、…、GroupM);
3)作为第一部分,通过以下步骤将存储器操作指派给RAF投标组:
a)遍历通过经排序的存储器操作并将存储器操作指派给Group1、 Group2、…、GroupM,直到每个投标组被分配存储器操作;
b)对到目前为止的所有组的负载(例如,发布计数)进行计数(例 如,将每个投标组中的存储器操作的所有发布计数相加);
c)继续遍历通过经排序的存储器操作,并将下一存储器操作分配给 具有最小负载的组;
d)往回循环到3b),直到最后的存储器操作被分配给投标组;
6)注意,如果两个存储器操作的发布计数相同,则该分配模式按与 词汇程序顺序相反的顺序(或者在另一实施例中,按词汇程序顺序)来处 置它们;
4)作为第二部分;将存储器操作指派给每个投标组中的RAF电路。例如, 在第一部分(即,上述3))中,可将某个数量的存储器操作指派给具有X个 RAF电路(RAFXi、RAFXi+1、…、RAFXi+X-1)的投标组Groupi(其中,i是 从1至M的组号)
a)遍历通过被指派给Groupi的经排序的存储器操作并将这些经排序 的存储器操作指派给RAFXi、RAFXi+1、…、RAFXi+X-1,直到每个RAF 电路的第一个组件(例如,输入队列)被分配;
b)对目前为止的所有X个RAF电路的负载进行计数;
c)继续遍历通过经排序的存储器操作,并将下一存储器操作分配给 RAF电路的具有最小负载的下一可用的组件(例如,输入队列);
d)往回循环到b),直到最后的存储器操作被分配;以及
e)注意,如果两个存储器操作的发布计数相同,则该分配模式按与 词汇程序顺序相反的顺序(或者在另一实施例中,按词汇程序顺序)来处 置它们
在一个实施例中,BGB-LB-LJF RAF分配模式在应用开始运行之 前静态地将RAF组件(例如,输入队列)指派给存储器操作,并且依赖于带 宽信息,该带宽信息的估计(例如,发布计数)假定由(例如,生成数据流图 的)编译器和/或后期工具(例如,图19中的精化、缓冲器插入、融合、以及 放置和路由软件模块中的任一个)提供。在某些实施例中,BGB-LB-LJF分配 模式能够跨RAF投标组以及在每个组内使存储器操作(例如,发布计数)平 衡。
XII.负载平衡最长作业优先基于投标组的(LB-LJF-BGB)分配模式
第十二RAF分配模式被称为负载平衡最长作业优先基于投标组的 (LB-LJF-BGB)分配模式。与上文针对第十一分配模式讨论的示例中的1)-4) 形成对照,第十二分配模式的实施例交换了第十一分配模式的那个示例中的两 个部分的顺序(例如,部分3和部分4)。例如,第十二分配模式的实施例首 先将存储器操作分配给RAF电路,随后使RAF电路成组为投标组。
该分配模式将带宽用作竞争的存储器操作之间的RAF组件(例如, 输入队列)资源分配的关键决策符(例如,将发布次数用作带宽指示符)。在 某些实施例中,根据存储器操作的发布计数对存储器操作排序,并且将存储器 操作指派给RAF电路,随后以平衡的方式使RAF电路成组为相应的投标组。
下文描述该分配模式的示例:
1)从最高发布计数(例如,特定存储器操作执行的次数)到最低发布计 数对所有存储器操作排序。发布计数可通过反馈(例如,简档引导的优化)获 得,或从编译器生成的相对发布计数估计获得;
2)将RAF电路的适当子集划分为例如具有“R”个数量的RAF电路的M 个(例如,其中M是大于1的整数)数量的投标组(例如,Group1、Group2、…、 GroupM),每个RAF电路具有针对每个RAF电路的“C”个数量的组件(例如, 输入队列);
3)将存储器操作指派给R个虚拟RAF电路并且:
a)遍历通过经排序的存储器操作,并将这些经排序的存储器操作指 派给虚拟RAF(0)、虚拟RAF(1)、…、虚拟RAF(R-1),直到每个RAF电 路的第一个组件(例如,输入队列)被分配;
b)对目前为止的所有虚拟RAF电路的负载进行计数(例如,将为 每个虚拟RAF指派的存储器操作的所有发布计数相加);
c)继续遍历通过经排序的存储器操作,并将下一存储器操作分配给 虚拟RAF的具有最小负载的下一可用的组件(例如,输入队列);
d)往回循环到b),直到最后的存储器操作被分配;
e)注意,如果两个存储器操作的发布计数相同,则该分配模式按与 词汇程序顺序相反的顺序(或者在另一实施例中,按词汇程序顺序)来处 置它们;
4)将R个数量的虚拟RAF指派给M个数量的投标组,同时针对每个组 存在X个数量的虚拟RAF(例如,其中M×X=R),并且:
a)计算所有R个虚拟RAF电路的总负载(例如,发布计数)并相应 地对它们进行排序;
b)从最高负载到最低负载遍历通过经排序的虚拟RAF,并且将它们 指派给Group1、Group2、…、GroupM,直到每个投标组被分配了第一个 RAF电路;
c)对到目前为止的所有投标组的负载(例如,发布计数)进行计数 (例如,将每个投标组的存储器操作的所有发布计数相加);
d)继续遍历通过经排序的虚拟RAF,并将下一虚拟RAF分配给具有 最小负载的组;
e)往回循环到c),直到最后的虚拟RAF被分配给投标组,如果投 标组具有经指派的X个虚拟RAF,则该投标组被移除而不进行考虑,并 且没有进一步的RAF将指派给该投标组;
f)注意,如果两个存储器操作的发布计数相同,则该分配模式按与 词汇程序顺序相反的顺序(或者在另一实施例中,按词汇程序顺序)来处 置它们;
5)按以下方式将M个投标组中的R个虚拟RAF映射至R个物理(例如, 实际的)RAF:
Group1中的X个虚拟RAF为RAF(0)、RAF(1)、…、RAFX-1
Group2中的X个虚拟RAF为RAFX、RAFX+1、…、RAF2X-1
GroupM中的X个虚拟RAF为RAFR-X、RAFR-X+1、…、RAF(R-1)。
在一个实施例中,LB-LJF-BGB RAF分配模式在应用开始运行之 前静态地将RAF组件(例如,输入队列)指派给存储器操作,并且依赖于带 宽信息,该带宽信息的估计(例如,发布计数)假定由(例如,生成数据流图 的)编译器和/或后期工具(例如,图19中的精化、缓冲器插入、融合、以及 放置和路由软件模块中的任一个)提供。在某些实施例中,LB-LJF-BGB分配 模式能够跨RAF投标组以及在每个组内使存储器操作(例如,发布计数)平 衡。
因此,在硬件的某些实施例中,不存在能够帮助每个工作负载实 现最优性能水平的单个分配模式。不同的工作负载受益于不同的分配模式,因 此通过切换到不同的(例如,上述十二种中的)分配模式来优化性能可将单个 硬件设计用于(例如,具有不同工作负载的)多个数据流图。
图17图示根据本公开的实施例的RAF电路1706与高速缓存区块 1702之间的、利用针对RAF电路分配的投标组的网络1704(例如,ACI网络)。 为了改善ACI网络带宽,本文中的某些实施例采用基于投标组的方式。按此方 式,每个ACI网络端点(例如,RAF电路或高速缓存区块)供应有多个请求 存储(例如,输入)队列。(例如,靠近的)RAF电路(或高速缓存区块)的 组共享进入多个高速缓存区块中的每个高速缓存区块的这些输入队列中的一 个输入队列。图17示出ACI网络1704,在ACI网络1704中,RAF电路已被 布置为各自为四个RAF电路的两个组。在某些实施例中,ACI网络因此通过 将请求方分区到投标组中而允许投标组之间的冲突同时被缓冲,从而例如缓解 跨时间的冲突并改善可实现的ACI网络带宽。
附加于或替代于本文中讨论的RAF电路分配模式,可根据多种分 配模式来分配单个RAF电路的完成缓冲器。在某些实施例中,RAF电路负责 执行存储器操作,并且充当CSA结构的处理元件与存储器层次结构之间的接 口。在一个实施例中,RAF电路用于利用CSA结构的有序语义来使乱序存储 器子系统合理化。在该能力方面,RAF电路可供应有完成缓冲器(CB)(例 如,队列状结构),该完成缓冲器可对存储器响应重排序,并按原始的请求顺 序将这些存储器请求返回至CSA结构。因此,在某些实施例中,每个加载请 求或存储请求用于在该加载请求或存储请求能够发布到存储器子系统中之前 分配完成缓冲器中的槽。
然而,在一个实施例中,由单个RAF电路处置的多个(例如,所 有)存储器操作共享CB条目(例如,槽),因此它们竞争使用那些CB条目 (例如,槽)。在没有足够的CB条目的情况下,存储器操作可能不得不停止。 此外,由单个RAF电路处置的所有存储器操作可竞争发布(例如,仲裁)到 (例如,ACI)网络中,从而被发布到高速缓存区块。
在某些实施例中,完成缓冲器槽在存储器操作之间被静态地分区 为程序/图配置的部分。然而,在其他实施例中,较多的CB条目被指派给对性 能更关键的存储器操作且较少的CB条目应当被指派给不在关键路径上的不重 要的存储器操作可能是期望的。此外,在一些情况下,不过度供应完成缓冲器 存储是关键的。如先前所述,数据流图通常生成大量存储器请求,大量存储器 请求会导致低效的请求带宽分配,并且由此在低带宽存储器操作的情况下导致 性能降级。因此,细致的CB分配充当带宽平衡器并改善性能。
本文中的某些实施例优化CB资源以匹配每个数据流图的静态和 动态要求,从而实现最优性能目标(例如,数据流图的最短执行时间)。在一 个实施例中,“N”个(例如,多于1个)存储器操作op0、op1、op2、…、opN-1 被指派给RAFM(例如,其中值“M”标识特定的RAF电路)。注意,在某些实 施例中,(例如,在每个周期中)在给定的时间段中,仅存储器操作中的一个 存储器操作可被仲裁到ACI网络(例如,朝向高速缓存),使得那N个数量 的存储器操作正在彼此竞争。
假定在RAFM中具有由N个存储器操作共享的“B”个数量的(例如, 多于一个的)CB条目,则在一个实施例中,完成缓冲器的分配用于在多种分 配模式之间进行选择以实现针对N个存储器操作op0、op1、op2、…、opN-1 的“B”个数量的CB条目的最优映射,该最优映射可根据Bi个数量的CB条目 被指派以使得以下公式成立而实现最好的性能。
B=Σ Bi(对于i=0到(N-1) (1)
在一些实施例中,随机分配导致资源利用的极端不平衡性,从而 使性能不可接受且不可预测。在一些实施例中,可完成等权重分配,但是那可 能不是灵活的,因此不实现所期望的最优性能。本文中的某些实施例根据作为 关键决策符的带宽/等待时间在竞争的存储器操作之间分配完成缓冲器(CB) 槽。在一个实施例中,每个存储器操作的负载指示符基于带宽/等待时间。在某 些实施例中,CB分配模式基于负载指示符指派全部CB条目的一些部分,并 且为全部CB条目的其余部分应用等权重分配,从而帮助(例如,每个)存储 器操作接收期望量的资源。
图18图示根据本公开的实施例的请求地址文件(RAF)电路1800。 在所描绘的实施例中,RAF电路1800包括(例如,具有耦合至槽1828、1830 和1832的适当子集的多个端口中的相应端口的)统一物理完成缓冲器1827(例 如,仅为加载操作预留的缓冲器)和(例如,具有耦合至槽1834、1836和1838 的适当子集的多个端口中的相应端口的)统一物理完成缓冲器1833(例如,仅 为存储操作预留的缓冲器)。在一个实施例中,在配置时,已经在数据流图中 的存储器加载操作和存储器存储操作在(多个)寄存器1810中被指定。随后, 至数据流图中的那些存储器操作的弧可连接至输入队列1822、1824和1826。 在某些实施例中,来自那些存储器操作的弧因此用于离开完成缓冲器1827或 1833。在一个实施例中,完成缓冲器槽1828、1830和1832的集合各自都是在 逻辑上被划分(例如,指派)为可指派给特定存储器操作的逻辑缓冲器(例如, 被指派统一物理完成缓冲器1827中的(例如,少于全部的)槽的逻辑加载缓 冲器1831)的单个(例如,统一)完成缓冲器硬件1827的部分,并且/或者完 成缓冲器1834、1836和1838的集合各自都是在逻辑上被划分为可指派给特定 存储器操作的逻辑缓冲器(例如,被指派统一完成缓冲器1835中的(例如, 少于全部的)槽的逻辑存储缓冲器1835)的另一单个(例如,统一)完成缓冲 器硬件1833的部分。在一个实施例中,完成缓冲器槽1828、1830、1832、1834、 1836和1838的集合各自都是逻辑上被划分为可指派给特定存储器操作的槽的 单个(例如,统一)完成缓冲器硬件的部分,例如,单个完成缓冲器由加载完 成缓冲器1827和存储完成缓冲器1833形成。在某些实施例中,完成缓冲器(例 如,统一完成缓冲器的某个数量的槽)的指派根据本文中的本公开的任何内容。
在某些实施例中,依赖性令牌(其可以是多个单个的位)到达队 列1818和1220中。在某些实施例中,依赖性令牌用于从队列1816离开。依 赖性令牌计数器1814可以是队列的紧凑表示,并且可跟踪用于任何给定输入 队列的依赖性令牌的数量。在某些实施例中,如果依赖性令牌计数器1814饱 和,则没有附加的依赖性令牌可被生成用于新的存储器操作。相应地,存储器 排序电路(例如,RAF电路)会停止调度新存储器操作,直到依赖性令牌计数器1814变成不饱和。在某些实施例中,在RAF电路1800中提供ALU 1848 以准许直接在RAF中执行存储器地址计算,例如,其中ALU的使用被任选地 指定为(例如,被存储到寄存器1810中的)配置值的部分。示例使用包括: 地址位移计算,其中基址被加到偏移;和/或有状态计算,其中可在RAF处重 复地递增地址,诸如,流式加载(sld)。
任选地,可包括分配器电路1850,例如,如2.4节中所讨论。在 某些实施例中,分配器电路1850用于将RAF电路1800的组件(例如,完成 缓冲器的槽中的一个或多个(但少于全部的)槽)分配给特定的存储器操作(例 如,存储操作或加载操作),例如,如由存储在(多个)寄存器1810中的值 所指示。在一个实施例中,用于操作的组件是:(i)(例如,用于经由端口 1801从存储器(例如,高速缓存)接收用于由PE请求的加载操作的来自PE 的地址数据的)单个输入队列1822、1824或1826和(例如,用于接收已从存 储器完成加载操作的指示的)对应的完成缓冲器(例如,来自统一物理完成缓 冲器1827的逻辑缓冲器);或者(ii)来自1822、1824或1826的成对的输入 队列(例如,一个用于接收要存储的数据(例如,有效载荷数据),并且一个 用于接收指示将数据从PE经由端口1801存储到存储器(例如,高速缓存)中 的何处的地址)以及(例如,用于接收存储操作已在存储器中完成的指示的) 对应的完成缓冲器(来自统一物理完成缓冲器1833的逻辑缓冲器)。作为加 载的示例,地址到达队列1822中,调度器1812在寄存器1810中将该队列1822 匹配为被编程为是加载操作。在某些实施例中,用于该加载的完成缓冲器槽例 如按地址到达的顺序被指派。在某些实施例中,假定图中的该特定加载没有指 定的依赖性,则由调度器(例如,经由存储器命令1842)将该地址和完成缓冲 器槽派遣到存储器系统。在某些实施例中,当结果返回到多路复用器1840(示 意性地示出)时,该结果被存储到它指定的完成缓冲器槽中(例如,由于该结 果沿着通过存储器系统全程都携带目标槽)。在某些实施例中,完成缓冲器按 照地址到达的顺序将结果往回发送到CSA网络(例如,夹层网络1802)中。
存储可以是类似的,例如例外在于,在某些实施例中,在任何操 作被派遣到存储器系统之前,地址和数据两者必须(例如,从一个或多个PE) 到达。
存储器命令1842(例如,ACI消息)可包括以下各项中的一项或 多项(例如,任何组合):操作代码(操作码)、数据、物理地址、RAF电路 标识(ID)、高速缓存ID(例如,高速缓存区块ID)、或完成缓冲器槽ID。
网络1802可以是分组交换型网络,例如,参考图48-图55所讨论 的夹层网络。在某些实施例中,当RAF电路1800的输入队列为满时,RAF电 路1800用于经由网络将回压值发送到产生方(例如,发射方)组件(例如, PE)。回压值可使产生组件(例如,PE)停止(例如,向那个特定的输入队 列)发布或发送附加的存储器请求,直到在RAF电路的输入队列中存储空间 可用。在某些实施例中,接收组件(例如,PE)用于经由网络将回压值发送到 RAF电路1800,以停止从完成缓冲器槽1828、1830或1832发送数据,直到 在接收组件(例如,PE)的输入队列中存储空间可用。从网络1820发送和发 送到网络1820中的数据可包括通道标识值,该通道标识值标识数据将存储到 哪个输入队列1822、1824或1826中(例如,数据减去用于标识值的位)。例 如,标识值可包括标识RAF电路的特定输入队列的第一字段(以及例如从多 个RAF电路中标识出那个特定的RAF电路的第二字段)。
任选地,转换后备缓冲器(TLB)1846可被包括,以将从输入队 列1822、1824或1826接收的逻辑地址转换为存储器(例如,高速缓存)的物 理地址。在一个实施例中,所访问的存储器是本文中讨论的高速缓存区块中的 一个或多个。
在一个实施例中,单个RAF电路中的所有存储器操作共享完成缓 冲器条目,此外,每个RAF电路中的仅一个存储器操作可(例如,由ACI仲 裁电路)准予进入存储器。在某些实施例中,当被指派给存储器操作的完成缓 冲器条目全部被占据时,存储器请求必须停止并等待,直到一些完成缓冲器条 目被清除并再次变得可用。在一个实施例中,缓冲器使用由乘以等待时间的带 宽来表示,并且那个结果指示相对于存储器操作的带宽和/或存储器操作的等待 时间应当使哪个(些)缓冲器平衡以优化吞吐量。已确定了完成缓冲器资源使 用是某些数据流图的主要性能瓶颈,因此那些资源的某些分配模式对于某些情 形是期望的。下文包括供分配器利用以将(多个)CB槽指派给RAF电路中的 存储器操作来实现期望目标(例如,最优性能水平)的(例如,非随机)CB 分配模式的两个示例。在某些实施例中,将值设置到存储器操作寄存器中(例 如,设置到图18中的(多个)寄存器1810中)将那个RAF电路设置为期望 的CB分配模式,从而例如引起为特定的存储器操作预留加载完成缓冲器或存 储完成缓冲器的任何适当子集(例如,少于全部)数量的槽。在某些实施例中, 完成缓冲器(例如,为特定的存储器操作预留的一个或多个槽)接收存储器操 作的实例的结果(例如,存储操作的成功的指示、或加载操作的所检取的数据 值)。
I.带宽知晓的模式
在某些实施例中,更关键的存储器操作将被指派更多条目(例如, 槽)以使那些关键的存储器操作停止的时间最小化,因为那些关键的存储器操 作更影响最终性能。本文中的某些实施例通过标识具有最高带宽的存储器操作 来标识那些关键的存储器操作,并且指派更多硬件资源,从而实现更高的性能 水平。该CB分配模式是带宽知晓的完成缓冲器指派(例如,其中存储器操作 的带宽越高,被指派的CB条目就越多)。在一个实施例中,特定数据流图的 每个存储器操作的发布次数被用作带宽的指示。该发布计数可通过反馈(例如,简档引导的优化)获得,或从编译器生成的相对发布计数估计获得。在一个实 施例中,为了保证所有存储器操作具有期望的完成缓冲器资源,完成缓冲器资 源的一些部分被均匀地分布至其他存储器操作。
下文描述该带宽知晓的分配模式的示例:
1)(例如,每个CSA片的)“R”个数量的RAF电路和每个RAF电路的“C” 个存储器操作(例如,输入队列):RAF0_InputQueue0、…、RAF0_InputQueueC-1, RAF1_InputQueue0、…,、RAF1_InputQueueC-1、…、RAFR-1_InputQueue0、…, RAFR-1_InputQueueC-1;
2)N个存储器操作op0、op1、op2、…、opN-1被指派给RAFM(例如,其 中值“M”标识特定的RAF电路),并且在RAFM中总共具有“B”个数量的CB 条目;
3)计算RAFM的总带宽:Total_Bandwidth_M=ΣIssueCount_opi(对 于i=0至(C-1));
4)根据下式来指派存储器操作opi
{[(B×P%÷N)+(B×(1-P%)×(Issue_Count_opi/ Total_Bandwidth_M)]}CB条目,其中,第一部分是均匀分布,并且第二部分 是比例分布。在该实施例中,每个存储器操作用于接收与(例如,通过发布计 数估计的)其带宽成比例的完成缓冲器资源。为了进一步改善性能并为了保证 每个存储器操作得到最少量的完成缓冲器资源以平稳地运行,某些实施例将整 个完成缓冲器资源划分为两个池。例如,其中第一池被均匀地指派给所有存储 器操作(被命名为均匀池,即,总CB条目的P%),并且第二池如上文所描 述根据带宽被指派(被命名为比例池或带宽知晓的池,即,总CB条目的1-P%)。 该划分对于不同的图可以是不同的,并且可以是动态的。
2.等待时间和带宽知晓的模式
虽然在某些实施例中,具有更高带宽的存储器操作对性能更关键, 但是在其他实施例中,具有更长等待时间的存储器操作对性能更关键,并且将 更多完成缓冲器指派给它们改善了性能。
该CB分配模式是带宽和等待时间知晓的完成缓冲器指派(例如, 其中负载指示值是每个存储器操作的带宽和等待时间的相乘的结果)。例如, 其中最高负载被指派最多CB条目。该发布计数和等待时间可通过反馈(例如, 简档引导的优化)获得,或从编译器生成的相对发布计数估计获得。在一个实 施例中,为了保证所有存储器操作具有最少完成缓冲器资源,完成缓冲器资源 的一些部分被均匀地分布至所有存储器操作。因此,在某些实施例中,基于被 指派给特定RAF电路的各种存储器操作的带宽-延迟乘积来分配CB槽。
下文描述该等待时间和带宽知晓的分配模式的示例:
1)(例如,每个CSA片的)“R”个数量的RAF电路和每个RAF电路的“C” 个存储器操作(例如,输入队列):RAF0_InputQueue0、…、RAF0_InputQueueC-1, RAF1_InputQueue0、…,、RAF1_InputQueueC-1、…、RAFR-1_InputQueue0、…, RAFR-1_InputQueueC-1;
2)N个存储器操作op0、op1、op2、…、opN-1被指派给RAFM(例如,其 中值“M”标识特定的RAF电路),并且在RAFM中总共具有“B”个数量的CB 条目;
3)计算RAFM的总负载:Total_Load_M=Σ(IssueCount_opi×Latency_opi)(对于i=0至(C-1));
4)根据下式来指派存储器操作opi
{[(B×P%÷N)+(B×(1-P%)×((Issue_Count_opi x Latency_opi)/ Total_Load_M)]}CB条目,其中,第一部分是均匀分布,并且第二部分是比例 分布。在该实施例中,每个存储器操作用于接收与通过发布计数和等待时间的 相乘估计的该存储器操作的负载成比例的完成缓冲器资源。为了进一步改善性 能并为了保证每个存储器操作得到最少量的完成缓冲器资源以平稳地运行,某 些实施例将整个完成缓冲器资源划分为两个池。例如,其中第一池被均匀地指 派给所有存储器操作(被命名为均匀池,即,总CB条目的P%),并且第二 池如上文所描述根据负载被指派(被命名为比例池或负载知晓的池,即,总 CB条目的1-P%)。该划分对于不同的数据流图可以是不同的,并且可以是动 态的。
图19图示根据本公开的实施例的针对分配的软件流程1900。所描 绘的流程1900指示了通过其可将高级语言(例如,C、C++和Fortran)转换为 可由CSA软件的实施例执行的机器介质的路径。具体而言,阶段之间的通信 路径不仅表示转换阶段之间的此类介质的通信,而且还表示元数据(诸如,带 宽消耗、执行频率和循环身份)的通信。编译从源代码1902开始,其可包括 用于由转换器的稍后级(例如,RAF分配器1914)消耗的标注1918。编译器1906将源代码转换为抽象数据流图操作集架构。随后由精化阶段1908将抽象 操作集架构映射到特定的CSA实例(例如,硬件结构),该精化阶段1908用 机器专用实现方式替换某些复杂的数据流操作器。任选地,例如通过手工编码 而产生的抽象数据流图操作集架构源1904可被引入作为用于精化的输入。经 精化的数据流图进一步由缓冲器插入1910和融合1912修改,该缓冲器插入 1910将存储添加到图,该融合1912使一些操作坍缩到单个处理元件中。这些 阶段能以循环方式运行多次。最终,在实际的CAS架构(例如,硬件结构) 中放置和路由1916图。先前在2.4节中考虑的RAF分配1914可参与放置和路 由,以在提供将受制于RAF分配的行为而改善程序性能的解决方案时辅助转 换机制。
可鉴于以下示例来描述所公开的技术的至少一些实施例:
示例1:一种装置(例如,处理器),包括:处理元件的空间阵 列;高速缓存;第一存储器接口电路,包括进入高速缓存的第一端口、用 于存储用于来自处理元件的空间阵列的存储器请求的数据的第一多个输入 队列、以及第一存储器操作寄存器;第二存储器接口电路,包括进入高速 缓存的第二端口、用于存储用于来自处理元件的空间阵列的存储器请求的 数据的第二多个输入队列、以及第二存储器操作寄存器;以及分配器电路, 用于:根据第一分配模式将相应的第一值设置到第一存储器操作寄存器和 第二存储器操作寄存器中,以:将第一端口耦合至第一多个输入队列中的、 存储来自处理元件的空间阵列的第一处理元件的存储器请求的数据的第一 输入队列;将第二端口耦合至第二多个输入队列中的、存储来自处理元件 的空间阵列的第二处理元件的存储器请求的数据的第一输入队列;以及将 第一端口耦合至所述第一多个输入队列中的、存储来自处理元件的空间阵 列的第三处理元件的存储器请求的数据的第二输入队列;以及根据第二分 配模式将相应的第二值设置到第一存储器操作寄存器和第二存储器操作寄 存器中,以:将第一端口耦合至第一多个输入队列中的、存储来自处理元 件的空间阵列的第一处理元件的存储器请求的数据的第一输入队列;将第 二端口耦合至第二多个输入队列中的、存储来自处理元件的空间阵列的第 二处理元件的存储器请求的数据的第一输入队列;以及将第二端口耦合至 第二多个输入队列中的、存储来自处理元件的空间阵列的第三处理元件的 存储器请求的数据的第二输入队列。
示例2:如示例1所述的装置,其中,在第一存储器操作寄存器和 第二存储器操作寄存器中设置的相应的第一值使第一存储器接口电路的第一 完成缓冲器从高速缓存接收针对来自第一处理元件的存储器请求的完成指示, 使第二存储器接口电路的第一完成缓冲器从高速缓存接收针对来自第二处理 元件的存储器请求的完成指示,并且使第一存储器接口电路的第二完成缓冲器 从高速缓存接收针对来自第三处理元件的存储器请求的完成指示。
示例3:如示例2所述的装置,其中,第一存储器接口电路的第一 完成缓冲器是第一存储器接口电路的统一完成缓冲器的槽的第一适当子集,第 一存储器接口电路的第二完成缓冲器是第一存储器接口电路的统一完成缓冲 器的槽的第二适当子集,并且分配器电路将统一完成缓冲器的最多数量的缓冲 器槽指派给第一处理元件或第三处理元件中的、发布针对数据流图的最多数量 的存储器请求的一个处理元件。
示例4:如示例2所述的装置,其中,第一存储器接口电路的第一 完成缓冲器是第一存储器接口电路的统一完成缓冲器的槽的第一适当子集,第 一存储器接口电路的第二完成缓冲器是第一存储器接口电路的统一完成缓冲 器的槽的第二适当子集,并且分配器电路将统一完成缓冲器的最多数量的缓冲 器槽指派给第一处理元件或第三处理元件中的、具有针对数据流图的存储器请 求的最长等待时间的一个处理元件。
示例5:如示例1所述的装置,其中,第二分配模式基于以下各项 来分配输入队列:由第一处理元件对针对数据流图的最多数量的存储器请求的 发布;由第二处理元件对针对数据流图的次多数量的存储器请求的发布;以及 由第三处理元件对针对数据流图的、比次多数量的存储器请求更少数量的存储 器请求的发布。
示例6:如示例1所述的装置,其中,分配器电路将第一存储器接 口电路或第二存储器接口电路中的、按程序顺序的下一输入队列分配给第一存 储器接口电路或第二存储器接口电路中的、具有被指派给针对数据流图的存储 器接口电路的输入队列的最少数量的存储器请求的一个存储器接口电路。
示例7:如示例1所述的装置,其中,分配器电路在数据流图的运 行时中从第一分配模式切换到第二分配模式。
示例8:如示例1所述的装置,其中,第一存储器接口电路当处于 第一分配模式时,发送第一回压值,以便当第一存储器接口电路的第一输入队 列不能用于针对附加的存储器请求的数据时使第一处理元件停止发布附加的 存储器请求,第二存储器接口电路当处于第一分配模式时,发送第二回压值, 以便当第二存储器接口电路的第一输入队列不能用于针对附加的存储器请求 的数据时使第二处理元件停止发布附加的存储器请求,并且第一存储器接口电 路当处于第一分配模式时,发送第三回压值,以便当第一存储器接口电路的第 二输入队列不能用于针对附加的存储器请求的数据时使第三处理元件停止发 布附加的存储器请求。
示例9:一种方法,包括:将处理元件的空间阵列耦合至第一存储 器接口电路和第二存储器接口电路,第一存储器接口电路包括进入高速缓存的 第一端口、用于存储用于来自处理元件的空间阵列的存储器请求的数据的第一 多个输入队列、以及第一存储器操作寄存器,第二存储器接口电路包括进入高 速缓存的第二端口、用于存储用于来自处理元件的空间阵列的存储器请求的数 据的第二多个输入队列、以及第二存储器操作寄存器;根据第一分配模式将相 应的第一值设置到第一存储器操作寄存器和第二存储器操作寄存器中以:将第 一端口耦合至第一多个输入队列中的、存储用于来自处理元件的空间阵列的第一处理元件的存储器请求的数据的第一输入队列;将第二端口耦合至第二多个 输入队列中的、存储用于来自处理元件的空间阵列的第二处理元件的存储器请 求的数据的第一输入队列;以及将第一端口耦合至第一多个输入队列中的、存 储来自处理元件的空间阵列的第三处理元件的存储器请求的数据的第二输入 队列;以及根据第二分配模式将相应的第二值设置到第一存储器操作寄存器和 第二存储器操作寄存器中以:将第一端口耦合至第一多个输入队列中的、存储 用于来自处理元件的空间阵列的第一处理元件的存储器请求的数据的第一输 入队列;将第二端口耦合至第二多个输入队列中的、存储用于来自处理元件的 空间阵列的第二处理元件的存储器请求的数据的第一输入队列;以及将第二端 口耦合至第二多个输入队列中的、存储来自处理元件的空间阵列的第三处理元 件的存储器请求的数据的第二输入队列。
示例10:如示例9所述的方法,其中,将相应的第一值设置在第 一存储器操作寄存器和第二存储器操作寄存器中使第一存储器接口电路的第 一完成缓冲器从高速缓存接收针对来自第一处理元件的存储器请求的完成指 示,使第二存储器接口电路的第一完成缓冲器从高速缓存接收针对来自第二处 理元件的存储器请求的完成指示,并且使第一存储器接口电路的第二完成缓冲 器从高速缓存接收针对来自第三处理元件的存储器请求的完成指示。
示例11:如示例10所述的方法,其中,第一存储器接口电路的第 一完成缓冲器是第一存储器接口电路的统一完成缓冲器的槽的第一适当子集, 第一存储器接口电路的第二完成缓冲器是第一存储器接口电路的统一完成缓 冲器的槽的第二适当子集,并且设置相应的第一值或相应的第二值包括:将统 一完成缓冲器的最多数量的缓冲器槽指派给第一处理元件或第三处理元件中 的、发布针对数据流图的最多数量的存储器请求的一个处理元件。
示例12:如示例10所述的方法,其中,第一存储器接口电路的第 一完成缓冲器是第一存储器接口电路的统一完成缓冲器的槽的第一适当子集, 第一存储器接口电路的第二完成缓冲器是第一存储器接口电路的统一完成缓 冲器的槽的第二适当子集,并且设置相应的第一值或相应的第二值包括:将统 一完成缓冲器的最多数量的缓冲器槽指派给第一处理元件或第三处理元件中 的、具有针对数据流图的存储器请求的最长等待时间的一个处理元件。
示例13:如示例9所述的方法,其中,第二分配模式基于以下各 项来分配输入队列:由第一处理元件对针对数据流图的最多数量的存储器请求 的发布;由第二处理元件对针对数据流图的次多数量的存储器请求的发布;以 及由第三处理元件对针对数据流图的、比次多数量的存储器请求更少数量的存 储器请求的发布。
示例14:如示例9所述的方法,其中,设置相应的第一值或相应 的第二值包括:将第一存储器接口电路或第二存储器接口电路的、按程序顺序 的下一输入队列分配给第一存储器接口电路或第二存储器接口电路中的、具有 被指派给针对数据流图的存储器接口电路的输入队列的最少数量的存储器请 求的一个存储器接口电路。
示例15:如示例9所述的方法,其中,该方法包括:在数据流图 的运行时中,从第一分配模式切换到第二分配模式。
示例16:如示例9所述的方法,其中,第一存储器接口电路当处 于第一分配模式时,发送第一回压值,以便当第一存储器接口电路的第一输入 队列不能用于针对附加的存储器请求的数据时使第一处理元件停止发布附加 的存储器请求,第二存储器接口电路当处于第一分配模式时,发送第二回压值, 以便当第二存储器接口电路的第一输入队列不能用于针对附加的存储器请求 的数据时使第二处理元件停止发布附加的存储器请求,并且第一存储器接口电 路当处于第一分配模式时,发送第三回压值,以便当第一存储器接口电路的第 二输入队列不能用于针对附加的存储器请求的数据时使第三处理元件停止发 布附加的存储器请求。
示例17:一种非暂态机器可读介质,存储有代码,该代码当由机 器执行时,使该机器执行包括以下步骤的方法:将处理元件的空间阵列耦合至 第一存储器接口电路和第二存储器接口电路,第一存储器接口电路包括进入高 速缓存的第一端口、用于存储用于来自处理元件的空间阵列的存储器请求的数 据的第一多个输入队列、以及第一存储器操作寄存器,第二存储器接口电路包 括进入高速缓存的第二端口、用于存储用于来自处理元件的空间阵列的存储器 请求的数据的第二多个输入队列、以及第二存储器操作寄存器;根据第一分配 模式将相应的第一值设置到第一存储器操作寄存器和第二存储器操作寄存器 中以:将第一端口耦合至第一多个输入队列中的、存储用于来自处理元件的空 间阵列的第一处理元件的存储器请求的数据的第一输入队列;将第二端口耦合 至第二多个输入队列中的、存储用于来自处理元件的空间阵列的第二处理元件 的存储器请求的数据的第一输入队列;以及将第一端口耦合至第一多个输入队 列中的、存储来自处理元件的空间阵列的第三处理元件的存储器请求的数据的 第二输入队列;以及根据第二分配模式将相应的第二值设置到第一存储器操作 寄存器和第二存储器操作寄存器中以:将第一端口耦合至第一多个输入队列中 的、存储用于来自处理元件的空间阵列的第一处理元件的存储器请求的数据的 第一输入队列;将第二端口耦合至第二多个输入队列中的、存储用于来自处理 元件的空间阵列的第二处理元件的存储器请求的数据的第一输入队列;以及将 第二端口耦合至第二多个输入队列中的、存储来自处理元件的空间阵列的第三 处理元件的存储器请求的数据的第二输入队列。
示例18:如示例17所述的非暂态机器可读介质,其中,将相应的 第一值设置在第一存储器操作寄存器和第二存储器操作寄存器中使第一存储 器接口电路的第一完成缓冲器从高速缓存接收针对来自第一处理元件的存储 器请求的完成指示,使第二存储器接口电路的第一完成缓冲器从高速缓存接收 针对来自第二处理元件的存储器请求的完成指示,并且使第一存储器接口电路 的第二完成缓冲器从高速缓存接收针对来自第三处理元件的存储器请求的完 成指示。
示例19:如示例18所述的非暂态机器可读介质,其中,第一存储 器接口电路的第一完成缓冲器是第一存储器接口电路的统一完成缓冲器的槽 的第一适当子集,第一存储器接口电路的第二完成缓冲器是第一存储器接口电 路的统一完成缓冲器的槽的第二适当子集,并且设置相应的第一值或相应的第 二值包括:将统一完成缓冲器的最多数量的缓冲器槽指派给第一处理元件或第 三处理元件中的、发布针对数据流图的最多数量的存储器请求的一个处理元件。
示例20:如示例18所述的非暂态机器可读介质,其中,第一存储 器接口电路的第一完成缓冲器是第一存储器接口电路的统一完成缓冲器的槽 的第一适当子集,第一存储器接口电路的第二完成缓冲器是第一存储器接口电 路的统一完成缓冲器的槽的第二适当子集,并且设置相应的第一值或相应的第 二值包括:将统一完成缓冲器的最多数量的缓冲器槽指派给第一处理元件或第 三处理元件中的、具有针对数据流图的存储器请求的最长等待时间的一个处理 元件。
示例21:如示例17所述的非暂态机器可读介质,其中,第二分配 模式基于以下各项来分配输入队列:由第一处理元件对针对数据流图的最多数 量的存储器请求的发布;由第二处理元件对针对数据流图的次多数量的存储器 请求的发布;以及由第三处理元件对针对数据流图的、比次多数量的存储器请 求更少数量的存储器请求的发布。
示例22:如示例17所述的非暂态机器可读介质,其中,设置相应 的第一值或相应的第二值包括:将第一存储器接口电路或第二存储器接口电路 的、按程序顺序的下一输入队列分配给第一存储器接口电路或第二存储器接口 电路中的、具有被指派给针对数据流图的存储器接口电路的输入队列的最少数 量的存储器请求的一个存储器接口电路。
示例23:如示例17所述的非暂态机器可读介质,其中,方法包括: 在数据流图的运行时中,从第一分配模式切换到第二分配模式。
示例24:如示例17所述的非暂态机器可读介质,其中,第一存储 器接口电路当处于第一分配模式时,发送第一回压值,以便当第一存储器接口 电路的第一输入队列不能用于针对附加的存储器请求的数据时使第一处理元 件停止发布附加的存储器请求,第二存储器接口电路当处于第一分配模式时, 发送第二回压值,以便当第二存储器接口电路的第一输入队列不能用于针对附 加的存储器请求的数据时使第二处理元件停止发布附加的存储器请求,并且第 一存储器接口电路当处于第一分配模式时,发送第三回压值,以便当第一存储 器接口电路的第二输入队列不能用于针对附加的存储器请求的数据时使第三 处理元件停止发布附加的存储器请求。
2.5 用于执行(例如,数据流)操作的网络资源(例如,电路)
在某些实施例中,处理元件(PE)使用通过静态地配置(例如, 电路交换型)通信网络而形成的专用虚拟电路来进行通信。这些虚拟电路可以 是流受控且完全被回压的,使得例如如果源没有数据或PE的目的地为满,则 该PE将停止。在运行时,数据可流过实现经映射数据流图(例如,经映射算 法)的PE。例如,可通过处理元件的空间阵列(的例如结构区域)使数据从 存储器流入,随后使数据向外返回至存储器。
此类架构相对于传统多核处理器可实现卓越的性能效率:例如与 存储器系统的扩展形成对照,例如以PE形式计算可以比核更简单且更多,并 且通信可以是直接的。然而,处理元件的空间阵列(的例如结构区域)可针对 编译器生成的表达树的实现方式进行调整,编译器生成的表达树的实现方式特 征可以是很少的复用操作或解复用操作。本文中的某些实施例(例如,经由网 络资源,该网络资源诸如但不限于网络数据流端点电路)将架构扩展为例如尤 其在函数调用的上下文中支持(例如,高基)复用操作和/或解复用操作。
诸如图1中的处理元件的空间阵列101之类的空间阵列可将(例 如,分组交换型)网络用于通信。本文中的某些实施例提供用于将高基数据流 操作叠加在这些网络上以进行通信的电路。例如,本文中的某些实施例利用用 于通信的现有网络(例如,参考图1描述的互连网络104)以提供空间阵列的 处理元件与其他组件之间的数据路由能力,并且还(例如,在不利用处理元件 来执行那些数据流操作的情况下)将网络(例如,网络端点)扩充为支持数据 流操作中的一些(例如,少于全部)数据流操作的执行和/或控制。在一个实施 例中,利用空间阵列内的特殊硬件结构(例如,网络数据流端点电路),例如, 在不消耗处理资源或不使(例如,处理元件的)性能降级的情况下支持(例如, 高基)数据流操作。
在一个实施例中,两个点之间(例如,数据的产生方和消耗方) 的电路交换型网络包括那两个点之间的专用通信线,例如,其中这两个点之间 的(例如,物理)切换转置设置成创建这两个点之间的(例如,排他的)物理 电路。在一个实施例中,两个点之间的电路交换型网络在开始使用这两个点之 间的连接时被建立,并且贯穿该连接的使用被维护。在另一实施例中,分组交 换型网络包括两个(例如,或更多个)点之间的共享通信线(例如,通道), 例如,其中来自不同连接的分组共享那个通信线(例如,根据每个分组的数据 被路由,例如,在包括头部和有效载荷的分组的头部中)。下文例如参考夹层 网络讨论分组交换型网络的示例。
图20图示根据本公开的实施例的伪代码函数调用2001的数据流 图2000。函数调用2001用于加载(例如,分别由指针*a和*b指示的)两个输 入数据操作数,并且将它们乘在一起,并返回结果数据。该函数或其他函数可 (例如,在数据流图中)被执行多次。图20中的数据流图图示用于执行以下 操作的PickAny数据流操作器2002:(例如,从调用地点200A)选择控制数 据(例如,索引),并且利用复制数据流操作器2004将该控制数据(例如, 索引)复制到第一Pick数据流操作器2006、第二Pick数据流操作器2008和 Switch数据流操作器2016中的每个数据流操作器。在一个实施例中,(例如, 来自PickAny的)索引因此将数据输入和输出到例如[0,1...M]的相同索引位置, 其中,M是整数。第一Pick数据流操作器2006随后可根据控制数据拉取多个 输入数据元素2006A中的一个输入数据元素,并且将这个输入数据元素用作 (*a),以便随后利用加载数据流操作器2010加载存储在*a处的输入数据值。 第二Pick数据流操作器2008随后可根据控制数据拉取多个输入数据元素 2008A中的一个输入数据元素,并且将这个输入数据元素用作(*b),以便随 后利用加载数据流操作器2012加载存储在*b处的输入数据值。随后可由(例 如,作为处理元件的部分的)乘法数据流操作器2014将那两个输入数据值相 乘。随后可由Switch数据流操作器2016例如根据去往Switch数据流操作器 2016的控制数据(例如,索引)将该乘法的结果数据路由(到例如下游处理元 件或其他组件)到例如调用地点2016A。
图20是函数调用的示例,其中,用于管理数据(例如,令牌)的 引导的数据流操作器的数量可以是非常大的以例如引导数据去往调用地点和/ 或从调用地点引导数据。在一个实施例中,例如当存在多个(例如,许多)调 用地点时,可利用PickAny数据流操作器2002、第一Pick数据流操作器2006、 第二Pick数据流操作器2008和Switch数据流操作器2016中的一个或多个来 路由(例如,引导)数据。在其中引入被复用和/或解复用的函数调用的(例如, 主要)目的是减小特定数据流图的实现面积的实施例中,(例如,微架构的) 本文中的某些实施例减小数据流图的此类被复用和/或解复用的(例如,多个部 分)的面积开销。
图21图示根据本公开的实施例的具有多个网络数据流端点电路 2102、2104、2016的处理元件的空间阵列2101。处理元件的空间阵列2101可 包括在例如如本文中所讨论的组件之间的通信(例如,互连)网络。在一个实 施例中,通信网络是一个或多个分组交换型通信网络(例如,一个或多个分组 交换型通信网络的通道)。在一个实施例中,通信网络是一个或多个电路交换 型、静态配置的通信通道。例如,通道的集合通过切换装置(例如,第一网络 中的切换装置2110和第二网络中的切换装置2111)被耦合在一起。第一网络 和第二网络可以是分开的或可以耦合在一起。例如,切换装置2110可将其中 的多个(例如,四个)数据路径中的一个或多个数据路径耦合在一起,例如, 经配置以执行根据数据流图的操作。在一个实施例中,数据路径的数量是任意 多个。处理元件(例如,处理元件2108)可如本文中所公开,例如,如图10 中那样。加速器片2100包括存储器/高速缓存层次结构接口2112,以便例如将 加速器片2100与存储器和/或高速缓存对接。数据路径可延伸至另一片或可终 止于例如片的边缘处。处理元件可包括输入缓冲器(例如,缓冲器2109)和输 出缓冲器。
操作可基于这些操作的输入的可用性以及PE的状态来执行。PE 可从输入通道获取操作数,并且可将结果写至输出通道,但是也可使用内部寄 存器状态。本文中的某些实施例包括可配置数据流友好型PE。图10示出一个 此类PE的详细框图:整数PE。该PE由若干I/O缓冲器、ALU、存储寄存器、 一些指令寄存器和调度器组成。对于每一个周期,调度器可基于输入缓冲器和 输出缓冲器的可用性以及PE的状态来选择供执行的指令。随后,可将操作的 结果写至输出寄存器,或写至(例如,PE本地的)寄存器。被写至输出缓冲 器的数据可被传输到下游PE用于进一步处理。这种PE样式可以是极其高能 效的,例如,与从复杂的多端口寄存器堆读取数据不同,PE从寄存器读取该 数据。类似地,指令可被直接存储在寄存器中,而不是被存储在虚拟化的指令 高速缓存中。
指令寄存器可在特殊的配置步骤期间被设置。在该步骤期间,除 PE间网络之外,辅助的控制线和状态也可用于跨包含结构的若干PE使配置流 入。作为并行性的结果,此类网络的某些实施例可提供快速的重配置,例如, 片尺寸的结构可在小于约10微秒内被配置。
此外,所描绘的加速器片2100包括例如作为例如下文所描述的夹 层网络的部分的分组交换型通信网络2114。本文中的某些实施例允许(例如, 分布式)数据流操作(例如,仅路由数据的操作)在通信网络上(例如,在通 信网络内)(例如,并且不在(多个)处理元件中)被执行。作为示例,在图 21中描绘数据流图的分布式Pick数据流操作。具体而言,使用对三个单独的 网络(例如,全局)端点(例如,网络数据流端点电路2102、2104、2106)的 三个单独配置来实现分布式pick。可分布数据流操作,例如,其中若干端点以 协调方式被配置。例如,编译工具可理解协调的需求。端点(例如,网络数据 流端点电路)可在若干分布式操作之间被共享,例如,数据流操作(例如,pick) 端点可与同数据流操作(例如,pick)有关的若干send(发送)进行核对。分 布式数据流操作(例如,pick)可生成与非分布式数据流操作(例如,pick) 相同的结果。在某些实施例中,分布式数据流操作与非分布式数据流操作之间 的差异在于,分布式数据流操作例如利用相关联的流控制和分布式协调通过分 组交换型通信网络具有其数据(例如,要路由的、但可能不包括控制数据的数 据)。虽然示出不同尺寸的处理元件(PE),但是在一个实施例中,每个处理 元件具有相同尺寸(例如,硅面积)。在一个实施例中,用于对数据进行缓冲 的缓冲器元件也可被包括,例如,与处理元件分开。
作为一个示例,pick数据流操作可具有多个输入,并且引导(例 如,路由)这些输入中的一个输入作为输出,例如,如图20中那样。与利用 处理元件来执行pick数据流操作不同,可利用网络通信资源(例如,网络数据 流端点电路)中的一个或多个来实现此。附加地或替代地,网络数据流端点电 路可在处理元件之间路由数据,以便例如使处理元件执行对数据的处理操作。 本文中的实施例因此可利用通信网络来执行(例如,引导)数据流操作。附加 地或替代地,网络数据流端点电路可作为下文讨论的夹层网络来执行。
在所描绘的实施例中,分组交换型通信网络2114可处置某些(例 如,配置)通信,以例如对处理元件和/或电路交换型网络(例如,可包括切换 装置的网络2113)编程。在一个实施例中,电路交换型网络被配置(例如,编 程)为用于执行一个或多个操作(例如,数据流图的数据流操作)。
分组交换型通信网络2114包括多个端点(例如,网络数据流端点 电路2102、2104、2106)。在一个实施例中,每个端点包括用于允许数据例如 根据数据分组(的例如头部)被路由到那个端点和/或从那个端点被路由的地址 或其他指示符值。
附加于或替代于执行上文中的一项或多项,分组交换型通信网络 2114可执行数据流操作。网络数据流端点电路2102、2104、2106可被配置(例 如,编程)为用于执行数据流图的(例如,分布式pick)操作。组件(例如, 电路)的编程在本文中描述。参考图22讨论配置网络数据流端点电路(例如, 其操作配置寄存器)的实施例。
作为分布式pick数据流操作的示例,图21中的网络数据流端点电 路2102、2104、2106可配置(例如,编程)为执行数据流图的分布式pick操 作。参考图22讨论配置网络数据流端点电路(例如,其操作配置寄存器)的 实施例。附加于或替代于配置远程端点电路,还可根据本公开配置本地端点电 路。
网络数据流端点电路2102可配置成用于从多个源(例如,网络数 据流端点电路2104和网络数据流端点电路2106)接收数据,并用于例如根据 控制数据来(例如,如图20中那样)输出结果数据。网络数据流端点电路2104 可配置成例如在从处理元件2122接收到输入数据后将该输入数据提供(例如, 发送)到网络数据流端点电路2102。这在图21中可称为输入0。在一个实施 例中,电路交换型网络被配置(例如,编程)为用于沿路径2124在处理元件 2122与网络数据流端点电路2104之间提供专用通信线。网络数据流端点电路 2106可配置成例如在从处理元件2122接收到输入数据后将该输入数据提供(例如,发送)到网络数据流端点电路2120。这在图21中可称为输入1。在 一个实施例中,电路交换型网络被配置(例如,编程)为用于沿路径2116在 处理元件2120与网络数据流端点电路2106之间提供专用通信线。
当网络数据流端点电路2104用于将输入数据传送到网络数据流端 点电路2102(例如,当网络数据流端点电路2102具有用于数据的可用的存储 空间和/或网络数据流端点电路2104具有其输入数据时),网络数据流端点电 路2104可生成(例如,包括该输入数据和头部的)分组,以在分组交换型通 信网络2114上(例如,作为在那个(例如,环形)网络2114上的站点)将那 个数据引导到网络数据流端点电路2102。这在图21中以虚线2126示意性地图 示。虽然图21中示出的示例利用两个源(例如,两个输入),但是可利用单 个或任何多个(例如,多于两个)源(例如,输入)。
当网络数据流端点电路2106用于将输入数据传送到网络数据流端 点电路2102(例如,当网络数据流端点电路2102具有用于数据的可用的存储 空间和/或网络数据流端点电路2106具有其输入数据时),网络数据流端点电 路2104可生成(例如,包括该输入数据和头部的)分组,以在分组交换型通 信网络2114上(例如,作为在那个(例如,环形)网络2114上的站点)将那 个数据引导到网络数据流端点电路2102。这在图21中以虚线2118示意性地图 示。虽然示出网格网络,但是可使用其他网络拓扑。
网络数据流端点电路2102(例如,在从网络数据流端点电路2104 接收到输入0后,在从网络数据流端点电路2106接收到输入1后,和/或在接 收到控制数据后)随后可执行所编程的数据流操作(例如,该示例中的Pick 操作)。在图21中,网络数据流端点电路2102随后可将来自操作的对应的结 果数据输出到例如处理元件2108。在一个实施例中,电路交换型网络被配置(例 如,编程)为用于沿路径2128在处理元件2108(例如,其缓冲器)与网络数据流端点电路2102之间提供专用通信线。下文参考图34-图36讨论分布式Pick 操作的进一步的示例。
在一个实施例中,用于执行操作(例如,pick操作)的控制数据 来自空间阵列的其他组件(例如,处理元件)或通过网络。下文参考图22讨 论其示例。注意,在端点2102中示意性地示出Pick操作器,并且该Pick操作 器可以不是多路复用器电路,例如,参见下文对图22中的网络数据流端点电 路2200的讨论。
在某些实施例中,数据流图可具有由处理元件执行的某些操作以 及由通信网络(例如,一个或多个网络数据流端点电路)执行的某些操作。
图22图示根据本公开的实施例的网络数据流端点电路2200。虽然 在网络数据流端点电路2200中图示多个组件,但是可在单个网络数据流端点 电路中利用每个组件的一个或多个实例。网络数据流端点电路的实施例可包括 图22中的组件中的任何(例如,非全部)组件。
图22描绘示出主数据路径(实线)和控制数据路径(虚线)的实 施例的(例如,夹层)网络接口的微架构。该微架构提供用于启用(例如,高 基)数据流操作器的配置存储和调度器。本文中的某些实施例包括至调度器的 数据路径以启用支路选择和描述。图22示出网络(例如,夹层)端点(例如, 站点)的高级别微架构,该网络(例如,夹层)端点(例如,站点)可以是用 于上下文的环形网络的成员。为了支持(例如,高基)数据流操作,端点(例如,操作配置存储2226)的配置包括检查多个网络(例如,虚拟)通道(例如, 与在基线实现方式中的单个虚拟通道形成对照)的配置。网络数据流端点电路 2200的某些实施例包括来自入口以及去往出口的数据路径,以控制(例如,pick 型操作和switch型操作的)选择,和/或在PickAny数据流操作器或SwitchAny 数据流操作器的情况下描述由调度器作出的选择。可在每个通信通道,例如, 在(例如,分组交换型通信)网络和(例如,电路交换型)网络(例如,处理 元件的空间阵列的结构)中利用流控制和回压行为。
作为微架构的实施例的一种描述,pick数据流操作器可运作以例 如基于控制数据从输入数据的多个输入挑选结果数据的一个输出。网络数据流 端点电路2200可配置成用于考虑电路2200的(多个)空间阵列入口缓冲器2202 中的一个空间阵列入口缓冲器(例如,来自结构的、作为控制数据的数据), 以在存储在电路2200的(多个)网络入口缓冲器2224中的多个输入数据元素 之中进行选择,从而将结果数据引导到电路2200的空间阵列出口缓冲器2208。 因此,(多个)网络入口缓冲器2224可被认为是至虚拟mux(多路复用器)的输入,空间阵列入口缓冲器2202可被认为是多路复用器选择,并且空间阵 列出口缓冲器2208可被认为是多路复用器输出。在一个实施例中,当(例如, 控制数据)值被检测到和/或到达空间阵列入口缓冲器2202时,调度器2228(例 如,如由存储2226中的操作配置编程)被敏化为检查对应的网络入口通道。 当数据在那个通道中可用时,该数据从网络入口缓冲器2224被移除,并且被 移动到空间阵列出口缓冲器2208。入口和出口两者的控制位随后可被更新以反 映数据的传送。这可导致控制流令牌或信用在相关联的网络中传播。在某些实施例中,所有输入(例如,控制或数据)可在本地或通过网络产生。
最初,使用分组交换型网络来实现经复用和/或解复用代码的(例 如,高基分级式)操作器可能似乎妨碍性能。例如,在一个实施例中,分组交 换型网络一般地被共享,并且调用方数据流图和被调用方数据流图可能彼此远 离。然而,回想一下,在某些实施例中,支持复用操作和/或解复用操作的意图 在于减小由数据流操作器内的不频繁的代码路径(例如,由空间阵列)消耗的 面积。因此,本文中的某些实施例例如在(基本上)不影响各个PE的面积和 效率以支持那些(例如,不频繁的)操作的情况下减小了面积并避免了更昂贵的结构资源(例如,像PE)的消耗。
现在转到图22的进一步的细节,所描绘的网络数据流端点电路 2200包括空间阵列(例如,结构)入口缓冲器2202,其例如用于从(例如, 电路交换型)网络输入数据(例如,控制数据)。如上文所述,虽然描绘了单 个空间阵列(例如,结构)入口缓冲器2202,但是多个空间阵列(例如,结构) 入口缓冲器可处于网络数据流端点电路中。在一个实施例中,空间阵列(例如, 结构)入口缓冲器2202用于从空间阵列(例如,处理元件的空间阵列)的通信网络,例如从网络2204和网络2206中的一个或多个接收数据(例如,控制 数据)。在一个实施例中,网络2204是图21中的网络2113的部分。
所描绘的网络数据流端点电路2200包括空间阵列(例如,结构) 出口缓冲器2208,其例如用于向(例如,电路交换型)网络输出数据(例如, 控制数据)。如上文所述,虽然描绘了单个空间阵列(例如,结构)出口缓冲 器2208,但是多个空间阵列(例如,结构)出口缓冲器可处于网络数据流端点 电路中。在一个实施例中,空间阵列(例如,结构)出口缓冲器2208用于将 数据(例如,控制数据)发送(例如,传送)到空间阵列(例如,处理元件的 空间阵列)的通信网络上,例如,发送(例如,传送)到网络2201和网络2212 中的一个或多个上。。在一个实施例中,网络2210是图21中的网络2113的 部分。
附加地或替代地,网络数据流端点电路2200可耦合至另一网络(例 如,分组交换型网络)。另一网络2214(例如,分组交换型网络)可用于将(例 如,输入和/或结果)数据传送(例如,发送或接收)到空间阵列的处理元件或 其他组件,和/或用于传送输入数据或结果数据中的一个或多个。在一个实施例 中,网络2214是图21中的分组交换型通信网络2114(例如,时间复用型网络) 的部分。
网络缓冲器2218(例如,(多个)寄存器)可以是(例如,环形) 网络2214上的站点,以便例如从网络2214接收数据。
所描绘的网络数据流端点电路2200包括网络出口缓冲器2222,其 例如用于向(例如,分组交换型)网络输出数据(例如,结果数据)。如上所 述,虽然描绘了单个网络出口缓冲器2222,但是多个网络出口缓冲器可处于网 络数据流端点电路中。在一个实施例中,网络出口缓冲器2222用于将数据(例 如,结果数据)发送(例如,传送)到空间阵列(例如,处理元件的空间阵列) 的通信网络上,例如,发送(例如,传送)到网络2214上。在一个实施例中,网络2214是图21中的分组交换型网络2114的部分。在某些实施例中,网络 出口缓冲器2222用于将(例如,来自空间阵列入口缓冲器2202的)数据输出 到(例如,分组交换型)网络2214,以便被路由(例如,引导)到其他组件(例 如,(多个)其他网络数据流端点电路)。
所描绘的网络数据流端点电路2200包括网络入口缓冲器2222, 其例如用于从(例如,分组交换型)网络输入数据(例如,被输入的数据)。 如上所述,虽然描绘了单个网络入口缓冲器2224,但是多个网络入口缓冲器可 处于网络数据流端点电路中。在一个实施例中,网络入口缓冲器2224用于从 空间阵列(例如,处理元件的空间阵列)的通信网络(例如,从网络2214)接 收(例如,传送)数据(例如,输入数据)。在一个实施例中,网络2214是 图21中的分组交换型网络2114的部分。在某些实施例中,网络入口缓冲器2224 用于从(例如,分组交换型)网络2214(例如,从空间阵列入口缓冲器2202) 输入数据,以便在那里从其他组件(例如,(多个)其他网络数据流端点电路) 被路由(例如,引导)(例如,到空间阵列出口缓冲器2208中)。
在一个实施例中,(例如,网络2214上的数据的)数据格式包括 具有数据和(例如,具有那个数据的目的地)头部的分组。在一个实施例中, (例如,网络2204和/或2206上的数据的)数据格式仅包括数据(例如,不是 具有数据和(例如,具有那个数据的目的地的)头部的分组)。网络数据流端 点电路2200可将头部(或其他数据)添加到分组(例如,来自电路2200的数 据输出)或从分组移除头部(或其他数据)(例如,进入电路2200的数据输 入)。耦合装置2220(例如,线)可将从网络2214(例如,从网络缓冲器2218) 接收的数据发送到网络入口缓冲器2224和/或多路复用器2216。多路复用器 2216可(例如,经由来自调度器2228的控制信号)输出来自网络缓冲器2218 或来自网络出口缓冲器2222的数据。在一个实施例中,多路复用器2216或网 络缓冲器2218中的一个或多个是来自网络数据流端点电路2200的分开的组件。 缓冲器可包括多个(例如,分立的)条目,例如,多个寄存器。
在一个实施例中,操作配置存储2226(例如,一个或多个寄存器) 在配置(例如,映射)期间被加载,并且指定该网络数据流端点电路2200(例 如,不是空间阵列的处理元件)要执行的特定操作(或多个操作)(例如,与 逻辑和/或算术操作形成对照的数据引导操作)。(多个)缓冲器(例如,2202、 2208、2222和/或2224)活动可由那个操作控制(例如,由调度器2228控制)。 例如,当(例如,所有)输入(例如,有效载荷)数据和/或控制数据到达时,调度器2228可调度网络数据流端点电路2200的一个或多个操作。去往和来自 调度器2228的虚线指示可用于例如去往和/或来自调度器2228的控制数据的路 径。调度器还可控制多路复用器2216,以例如将数据引导到网络数据流端点电 路2220和网络2214和/或从网络数据流端点电路2220和网络2214引导数据。
参考上文在图21中的分布式pick操作,网络数据流端点电路2102 (例如,作为如图22中的其操作配置寄存器2226中的操作)可配置成用于从 网络数据流端点电路2104和网络数据流端点电路2106中的每一个(例如,在 如图22中的该网络数据流端点电路2102的网络入口缓冲器2224(中的例如两 个存储位置)中)接收输入数据,并用于例如根据(例如,在如图22中的该 网络数据流端点电路2102的空间阵列入口缓冲器2202中的)控制数据(例如, 从如图22中的该网络数据流端点电路2102的空间阵列出口缓冲器2208)输出 结果数据。网络数据流端点电路2104(例如,作为如图22中的其操作配置寄 存器2226中的操作)可配置成用于例如在从处理元件2122(例如,在如图22 中的电路2104的空间阵列入口缓冲器2202中)接收到输入数据后,将输入数 据提供给(例如,经由如图22中的电路2104的网络出口缓冲器2222将输入 数据发送到)网络数据流端点电路2102。这在图21中可称为输入0。在一个 实施例中,电路交换型网络被配置(例如,编程)为用于沿路径2124在处理 元件2122与网络数据流端点电路2104之间提供专用通信线。网络数据流端点 电路2104(例如,在如图22中的其网络出口缓冲器2222中)将头部分组与所 接收的数据包括(例如,添加)在一起,以将分组(例如,输入数据)引导到 网络数据流端点电路2102。网络数据流端点电路2106(例如,作为如图22中 的其操作配置寄存器2226中的操作)可配置成用于例如在从处理元件2120(例 如,在如图22中的电路2106的空间阵列入口缓冲器2202中)接收到输入数据后,将输入数据提供给(例如,经由如图22中的电路2106的网络出口缓冲 器2222将输入数据发送到)网络数据流端点电路2102。这在图21中可称为输 入1。在一个实施例中,电路交换型网络被配置(例如,编程)为用于沿路径 2116在处理元件2120与网络数据流端点电路2106之间提供专用通信线。网络 数据流端点电路2106(例如,在如图22中的其网络出口缓冲器2222中)将头 部分组与所接收的数据包括(例如,添加)在一起,以将分组(例如,输入数 据)引导到网络数据流端点电路2102。
当网络数据流端点电路2104用于将输入数据传送到网络数据流端 点电路2102(例如,当网络数据流端点电路2102具有用于数据的可用的存储 空间和/或网络数据流端点电路2104具有其输入数据时),网络数据流端点电 路2104可生成(例如,包括该输入数据和头部的)分组,以在分组交换型通 信网络2114上(例如,作为在那个(例如,环形)网络上的站点)将那个数 据引导到网络数据流端点电路2102。这在图21中以虚线2126示意性地图示。 在图21中,网络2114以多个虚线框示意性地示出。网络2114可包括网络控 制器2114A,其例如用于管理网络2114A上的数据的入口和/或出口。
当网络数据流端点电路2106用于将输入数据传送到网络数据流端 点电路2102时(例如,当网络数据流端点电路2102具有用于数据的可用的存 储空间和/或网络数据流端点电路2106具有其输入数据时),网络数据流端点 电路2104可生成(例如,包括该输入数据和头部的)分组,以在分组交换型 通信网络2114上(例如,作为在那个(例如,环形)网络上的站点)将那个 数据引导到网络数据流端点电路2102。这在图21中以虚线2118示意性地图示。
网络数据流端点电路2102(例如,当在电路2102的(多个)网络 入口缓冲器中从网络数据流端点电路2104接收到输入0后,在电路2102的(多 个)网络入口缓冲器中从网络数据流端点电路2106接收到输入1后,和/或在 电路2102的空间阵列入口缓冲器中从处理元件2108接收到控制数据后)随后 可执行所编程的数据流操作(例如,该示例中的Pick操作)。在图21中,网 络数据流端点电路2102随后可将来自操作的对应的结果数据输出到例如处理 元件2108。在一个实施例中,电路交换型网络被配置(例如,编程)为用于沿 路径2128在处理元件2108(例如,其缓冲器)与网络数据流端点电路2102 之间提供专用通信线。下文参考图34-图36讨论分布式Pick操作的进一步的 示例。图21中的缓冲器可以是在每个PE中的小的、未标记的框。
以下图23-图31包括示例数据格式,但是可使用其他数据格式。 一个或多个字段可被包括在数据格式中(例如,被包括在分组中)。数据格式 可由网络数据流端点电路使用,以例如在第一组件之间(例如,在第一网络数 据流端点电路和第二网络数据流端点电路、空间阵列的组件等之间)传送(例 如,发送和/或接收)数据。
图23图示根据本公开的实施例的用于发送操作的数据格式2302 和用于接收操作的数据格式2304。在一个实施例中,发送操作2302和接收操 作2304是在分组交换型通信网络上传送的数据的数据格式。所描绘的发送操 作2302数据格式包括(例如,指示数据要发送到的网络中的哪个组件的)目 的地字段2302A、(例如,指示数据要在网络上的哪个通道上发送的)通道字 段2302B、以及输入字段2302C(例如,要发送的有效载荷或输入数据)。所描绘的接收操作2304包括输出字段,例如,该接收操作也可包括目的地字段 (未描绘)。可使用这些数据格式(例如,用于(多个)分组)以处置将数据 移入和移出组件。这些配置可以是可分开的和/或可并行地发生。这些配置可使 用单独的资源。术语通道一般指与请求相关联的(例如,管理硬件中的)通信 资源。配置与队列管理硬件的关联性可以是显式的。
图24图示根据本公开的实施例的用于发送操作2402的另一数据 格式。在一个实施例中,发送操作2402是在分组交换型通信网络上传送的数 据的数据格式。所描绘的发送操作2402数据格式包括(例如,用于标注特殊 控制分组(诸如但不限于配置分组、提取分组或异常分组)的)类型字段、(例 如,指示数据要发送到网络中的哪个组件的)目的地字段2402B、(例如,指 示数据要在网络上的哪个通道上发送的)通道字段2402C、以及输入字段2402D (例如,要发送的有效载荷或输入数据)。
图25图示根据本公开的实施例的用于配置用于发送(例如,switch) 操作2502的电路元件(例如,网络数据流端点电路)的配置数据格式、以及 用于配置用于接收(例如,pick)操作2504的电路元件(例如,网络数据流端 点电路)的配置数据格式2504。在一个实施例中,发送操作2502和接收操作 2504是用于要在例如网络数据流端点电路之间的分组交换型通信网络上传送 的数据的配置数据格式。所描绘的发送操作配置数据格式2502包括(例如, 指示(输入)数据要发送到网络中的哪个(些)组件的)目的地字段2502A、 (例如,指示(输入)数据要在网络上的哪个通道上发送的)通道字段2502B、 输入字段2502C(例如,用于发送输入数据的(多个)组件的标识符,例如, 该元件对其敏感的(例如,结构入口)缓冲器中的输入的集合)、以及(例如, 指示要执行多个操作中的哪个操作的)操作字段2502D。在一个实施例中,(例 如,传出)操作是例如与数据流图的(例如,相同的)数据流操作器对应的 Switch数据流操作或SwitchAny数据流操作中的一个数据流操作。
所描绘的接收操作配置数据格式2504包括(例如,指示(结果) 数据要发送到网络中的哪个(些)组件的)输出字段2504A、输入字段2504B (例如,用于发送输入数据的(多个)组件的标识符)、以及(例如,指示要 执行多个操作中的哪个操作的)操作字段2504C。在一个实施例中,(例如, 传入)操作是例如与数据流图的(例如,相同的)数据流操作器对应的Pick 数据流操作、PickSingleLeg数据流操作、PickAny数据流操作或Merge(合并) 数据流操作中的一个数据流操作。在一个实施例中,merge数据流操作是需要 所有操作数并(例如,利用接收控制的出口端点)使所有操作数出列的pick。
本文中利用的配置数据格式可包括例如按任何顺序的本文中描述 的字段中的一个或多个字段。
图26图示根据本公开的实施例的配置数据格式2602,其用于利用 标注在电路2600上的电路元件(例如,网络数据流端点电路)的输入、输出 和控制数据来配置用于发送操作的电路元件(例如,网络数据流端点电路)。 所描绘的发送操作配置数据格式2602包括(例如,指示数据要发送到的网络 中的哪个组件的)目的地字段2602A、(例如,指示数据要在(分组交换型) 网络上的哪个通道上发送的)通道字段2602B、以及输入字段2302C(例如,用于发送输入数据的(多个)组件的标识符)。在一个实施例中,电路2600 (例如,网络数据流端点电路)用于接收按发送操作配置数据格式2602的数 据格式的数据的分组,该发送操作配置数据格式2602例如具有指示结果要发 送到多个电路中的哪个电路的目的地、指示数据要在(分组交换型)网络的哪 个通道上发送的通道、以及输入,该输入为要从多个电路中的哪个电路接收输 入数据。“与(AND)”门2604用于:当输入数据是可用的且信用状态为指示 存在用于要存储的输出数据的空间的“是”(例如,依赖性令牌指示)时,允许 操作被执行,例如,在目的地的缓冲器内。在某些实施例中,每个操作标注有 其要求(例如,输入、输出和控制),并且如果满足所有要求,则配置是电路 (例如,网络数据流端点电路)“可执行的”。
图27图示根据本公开的实施例的配置数据格式2702,其用于利用 标注在电路2700上的电路元件(例如,网络数据流端点电路)的输入、输出 和控制数据来配置用于所选择的(例如,发送)操作的电路元件(例如,网络 数据流端点电路)。所描绘的(例如,发送)操作配置数据格式2702包括(例 如,指示(输入)数据要发送到的网络中的哪个(些)组件的)目的地字段2702A、 (例如,指示(输入)数据要在网络上的哪个通道上发送的)通道字段2702B、 输入字段2702C(例如,用于发送输入数据的(多个)组件的标识符)、以及 (例如,指示要执行多个操作中的哪个操作和/或用于那个操作的控制数据的源 的)操作字段2702D。在一个实施例中,(例如,传出)操作是例如与数据流 图的(例如,相同的)数据流操作器对应的发送数据流操作、Switch数据流操 作或SwitchAny数据流操作中的一个数据流操作。
在一个实施例中,电路2700(例如,网络数据流端点电路)用于 接收按(例如,发送)操作配置数据格式2702的数据格式的数据的分组,该 (例如,发送)操作配置数据格式2702例如具有输入和操作字段,该输入是 有效载荷(例如,输入数据)的(多个)源,该操作字段指示要执行哪个操作 (例如,示意性地示出为Switch或SwitchAny)。所描绘的多路复用器2704 可例如基于操作字段2702D中的值从多个可用的操作选择要执行的操作。在一个实施例中,电路2700用于:当数据是可用的且信用状态为指示(例如,在 目的地的缓冲器中)存在用于要存储的输出数据的空间的“是”(例如,依赖性 令牌指示)时,执行那个操作。
在一个实施例中,发送操作不利用超出检查其(多个)输入可用 于发送的控制。这可使切换装置在无需在所有支路上具有信用的情况下执行操 作。在一个实施例中,Switch和/或SwitchAny操作包括多路复用器,该多路 复用器由存储在操作字段2702D中的、用于选择正确的队列管理电路的值控制。
存储在操作字段2702D中的值可在控制选项之中进行选择,例如, 如在图28-图31中那样,具有针对每个操作的不同的控制(例如,逻辑)电路。 在一些实施例中,信用(例如,网络上的信用)状态是另一输入(例如,如此 处在图28-图29中所描绘)。
图28图示根据本公开的实施例的配置数据格式,其用于利用标注 在电路2800上的电路元件(例如,网络数据流端点电路)的输入、输出和控 制数据来配置用于Switch操作配置数据格式2802的电路元件(例如,网络数 据流端点电路)。在一个实施例中,存储在操作字段2702D中的(例如,传出) 操作值用于例如与数据流图的Switch数据流操作器对应的Switch操作。在一 个实施例中,电路2800(例如,网络数据流端点电路)用于接收按Swtich操 作的数据格式2802的数据的分组,该Swtich操作的数据格式2802例如具有输 入字段2802A和操作字段2802B,该输入字段2802A是(多个)什么组件用 于发送数据,该操作字段2802B指示要执行哪个操作(例如,示意性地示出为 Switch)。所描绘的电路2800可基于操作字段2802B从多个可用的操作选择 要执行的操作。在一个实施例中,电路2700用于:当输入数据(例如,根据 输入状态,例如,在(多个)目的地中存在用于数据的空间)是可用的且信用 状态(例如,选择操作(OP)状态)为“是”(例如,网络信用指示在网络上存 在将那个数据发送到(多个)目的地的可用性)时,执行那个操作。例如,多 路复用器2810、2812、2814可与针对(例如,在switch操作中,输出数据要 发送到的所在之处的)每个输入的相应的输入状态和信用状态一起使用,以便 例如防止输入显示为可用,直到输入状态(例如,目的地中用于数据的空间) 和信用状态(例如,在网络上存在用于到达目的地的空间)两者为“真”(例如, “是”)。在一个实施例中,输入状态是如下指示:例如在目的地的缓冲器中存 在或不存在用于要存储的(输出)数据的空间。在某些实施例中,“与”门2806 用于:当输入数据是可用的(例如,如从多路复用器2804输出)且选择操作 (例如,控制数据)状态是例如指示选择操作(例如,输入要发送到多个输出 中的哪个输出,参见例如图20)的“是”时,允许操作被执行。在某些实施例中, 利用控制数据(例如,选择操作)对操作的执行用于使来自输入中的一个输入 的输入数据根据来自多路复用器2808的多路复用器选择位在(例如,如由控 制数据指示的)一个或多个(例如,多个)输出上被输出在一个实施例中,选 择操作选择switch输出的哪个支路将被使用,和/或选择解码器创建多路复用 器选择位。
图29图示根据本公开的实施例的配置数据格式,其用于利用标注 在电路2900上的电路元件(例如,网络数据流端点电路)的输入、输出和控 制数据来配置用于SwitchAny操作配置数据格式2902的电路元件(例如,网 络数据流端点电路)。在一个实施例中,存储在操作字段2702D中的(例如, 传出)操作值用于例如与数据流图的SwitchAny数据流操作器对应的 SwitchAny操作。在一个实施例中,电路2900(例如,网络数据流端点电路) 用于接收按SwtichAny操作配置数据格式2902的数据格式的数据的分组,该 SwtichAny操作配置数据格式2902例如具有输入字段2902B中的输入和操作 字段2902B,该输入字段2802A中的输入是(多个)什么组件用于发送数据, 该操作字段2902B指示要执行哪个操作(例如,示意性地示出为SwitchAny) 和/或用于那个操作的控制数据的源。在一个实施例中,电路2900用于:当输 入数据中的任何输入数据(例如,根据输入状态,例如,在(多个)目的地中存在用于数据的空间)是可用的且信用状态为是“是”(例如,网络信用指示在 网络上存在将那个数据发送到(多个)目的地的可用性)时,执行那个操作。 例如,多路复用器2910、2912、2914可与针对(例如,在SwitchAny操作中, 输出数据要发送到的所在之处的)每个输入的相应的输入状态和信用状态一起 使用,以便例如防止输入显示为可用,直到输入状态(例如,目的地中用于数 据的空间)和信用状态(例如,在网络上存在用于到达目的地的空间)两者为 “真”(例如,“是”)。在一个实施例中,输入状态是如下指示:例如在目的地 的缓冲器中存在或不存在用于要存储的(输出)数据的空间。在某些实施例中, “或(OR)”门2904用于:当输出中的任一输出可用时,允许操作被执行。在 某些实施例中,操作的执行用于使来自输入中的一个输入的第一可用的输入数 据例如根据来自多路复用器2906的多路复用器选择位在一个或多个(例如, 多个)输出上被输出。在一个实施例中,任何输出信用一可用,SwitchAny就 发生(例如,与利用选择操作的Switch形成对照)。多路复用器选择位可用于 将输入引导到网络数据流端点电路的(例如,网络)出口缓冲器。
图30图示根据本公开的实施例的配置数据格式,其用于利用标注 在电路3000上的电路元件(例如,网络数据流端点电路)的输入、输出和控 制数据来配置用于Pick操作配置数据格式3002的电路元件(例如,网络数据 流端点电路)。在一个实施例中,存储在操作字段3002C中的(例如,传入) 操作值用于例如与数据流图的Pick数据流操作器对应的Pick操作。在一个实 施例中,电路3000(例如,网络数据流端点电路)用于接收按Pick操作配置数据格式3002的数据格式的数据的分组,该Pick操作配置数据格式3002例如 具有输入字段3002B中的数据、输出字段3002A中的数据和操作字段3002C, 该输入字段3002B中的数据是(多个)什么组件用于发送输入数据,该输出字 段3002A中的数据是(多个)什么组件用于被发送输入数据,该操作字段3002C 指示要执行哪个操作(例如,示意性地示出为Pick)和/或用于那个操作的控 制数据的源。所描绘的电路3000可基于操作字段3002C从多个可用的操作选 择要执行的操作。在一个实施例中,电路3000用于:当(例如,根据输入(例 如,网络入口缓冲器)状态,例如,全部输入数据已到达)输入数据是可用的, 信用状态(例如,输出状态)为指示例如在(多个)目的地的缓冲器中存在用 于要存储的输出数据的空间的“是”(例如,空间阵列出口缓冲器),并且选择 操作(例如,控制数据)状态为“是”时,执行那个操作。在某些实施例中,“与” 门3006用于:当输入数据是可用的(例如,如从多路复用器3004输出),输 出空间是可用的,并且选择操作(例如,控制数据)状态是例如指示选择操作 (例如,输入要发送到多个输出中的哪个输出,参见例如图20)的“是”时,允 许操作被执行。在某些实施例中,利用控制数据(例如,选择操作)对操作的 执行用于使来自(例如,由控制数据指示的)多个输入中的一个输入的输入数 据例如根据来自多路复用器3008的多路复用器选择位在一个或多个(例如, 多个)输出上被输出。在一个实施例中,选择操作选择pick的哪个支路将被使 用,和/或选择解码器创建多路复用器选择位。
图31图示根据本公开实施例的用于利用标注在电路3100上的电 路元件(例如,网络数据流端点电路)的输入、输出和控制数据来配置用于 PickAny操作的电路元件(例如,网络数据流端点电路)的配置数据格式3102。 在一个实施例中,存储在操作字段3102C中的(例如,传入)操作值用于例如 与数据流图的PickAny数据流操作器对应的PickAny操作。在一个实施例中, 电路3100(例如,网络数据流端点电路)用于接收按PickAny操作配置数据格 式3102的数据格式的数据的分组,该PickAny操作配置数据格式3102例如具 有输入字段3102B中的数据、输出字段3102A中的数据和操作字段3102C, 该输入字段3102B中的数据是(多个)什么组件用于发送输入数据,该输出字 段3102A中的数据是(多个)什么组件用于被发送输入数据,该操作字段3102C 指示要执行哪个操作(例如,示意性地示出为PickAny)。所描绘的电路3100 可基于操作字段3102C从多个可用的操作选择要执行的操作。在一个实施例中, 电路3100用于:当(例如,根据输入(例如,网络入口缓冲器)状态,例如, 输入数据中的任何输入数据已到达)输入数据中的任何输入数据(的例如首次 到达)是可用的且信用状态(例如,输出状态)为指示例如(多个)目的地的 缓冲器中存在用于要存储的输出数据的空间的“是”时,执行那个操作。在某些 实施例中,“与”门3106用于当输入数据中的任何输入数据是可用的(例如, 如从多路复用器3104输出)且输出空间是可用的时允许操作被执行。在某些 实施例中,操作的执行用于使来自多个输出中的一个输出的(例如,首个到达 的)输入数据例如根据来自多路复用器3108的多路复用器选择位在一个或多 个(例如,多个)输出上被输出。
在一个实施例中,PickAny在任何数据存在时执行,和/或选择解 码器创建多路复用器选择位。
图32图示根据本公开的实施例的对由用于执行的网络数据流端点 电路3200进行的操作3202、3204、3206的选择。(例如,图22中的调度器 2228中的)待决操作存储3201可例如根据本文中讨论的(多种)格式存储一 个或多个数据流操作。调度器(例如,基于例如具有其所有操作数的操作的固 定优先级或操作中的最旧操作)来调度用于执行的操作。例如,调度器可选择 操作3202,并且根据存储在操作字段中的值发送来自多路复用器3208和/或多 路复用器3210的对应控制信号。作为示例,若干操作在单个网络数据流端点 电路中可以是同时可执行的。假定所有数据在那里,则“可执行”信号(例如, 如在图26-图31中所示)可被输入为进入多路复用器3212中的信号。多路复 用器3212可发送用于所选择操作(例如,操作3202、3204和3206中的一个 操作)的控制信号作为输出,这些控制信号使多路复用器3208配置网络数据 流端点电路中的连接以执行所选择操作(例如,以从(多个)缓冲器源送数据 或向(多个)缓冲器发送数据)。多路复用器3212可发送用于所选择操作(例如,操作3202、3204和3206中的一个操作)的控制信号作为输出,这些控制 信号使多路复用器3210配置网络数据流端点电路中的连接以从(多个)队列 移除数据(例如,被消耗的数据)。作为示例,参见下文关于使数据(例如, 令牌)被移除的讨论。图32中的“PE状态”可以是来自PE的控制数据,例如, 队列的空指示符和满指示符(例如,回压信号和/或网络信用)。在一个实施例 中,例如在本文中的图22中,PE状态针对所有缓冲器和/或数据路径可包括空 位或满位。图32图示用于本文中的实施例的通用调度,例如,其中用于实施 例的专用调度参考图28-图31进行讨论。
在一个实施例中,(例如,对于调度)出列的选择由操作和该操 作的动态行为确定,以便例如在执行后使操作出列。在一个实施例中,电路用 于使用操作数选择位来使数据(例如,输入、输出和/或控制数据)出列。
图33图示根据本公开的实施例的网络数据流端点电路3300。与图 22相比,网络数据流端点电路3300已将配置和控制拆分到两个单独的调度器 中。在一个实施例中,出口调度器3328A用于调度对以下数据的操作:要(例 如,在自变量队列3302(例如,如图22中的空间阵列入口队列2202)处)(例 如,从被耦合到的电路交换型通信网络)进入数据流网络端点电路3300、以及 要(例如,在网络出口缓冲器3322(例如,如图22中的网络出口缓冲器2222) 处)(例如,从被耦合到的分组交换型通信网络)输出数据流端点电路3300 的数据。在一个实施例中,入口调度器3328B用于调度对以下数据的操作:要 (例如,在网络入口缓冲器3324(例如,如图22中的网络入口缓冲器3224) 处)(例如,从被耦合到的分组交换型通信网络)进入数据流网络端点电路3300、 以及要(例如,在出口缓冲器3308(例如,如图22中的空间阵列出口缓冲器 3208)处)(例如,从被耦合到的电路交换型通信网络)输出数据流端点电路 3300的数据。调度器3328A和/或调度器3328B可包括电路3300的(例如, 操作)状态作为输入,该电路3300的(例如,操作)状态例如,输入(例如, 缓冲器3302A、3302)的充满级别、输出(例如,缓冲器3308)的充满级别、 值(例如,3302A中的值)等。调度器3328B可包括信用返回电路,其例如用 于例如当在电路3300的网络入口缓冲器3324中接收到时标注信用被返回到发 送方。
网络3314可以是例如如本文中所讨论的电路交换型网络。附加地 或替代地,也可利用(例如,如本文中所讨论的)分组交换型网络,例如,耦 合至网络出口缓冲器3322、网络入口缓冲器3324、或本文中的其他组件。自 变量队列3302可包括控制缓冲器3302A,其例如用于指示相应的输入队列(例 如,缓冲器)何时包括(新)数据项,例如,作为单个位。现在转到图34-图 36,在一个实施例中,这些附图渐增地示出用于创建分布式pick的配置。
图34图示根据本公开的实施例的、例如如上文中参考图21所讨 论的当执行pick操作时接收输入零(0)的网络数据流端点电路3400。在一个 实施例中,出口配置3426A(例如,在配置步骤期间)被加载有pick操作的用 于将数据发送到不同的网络数据流端点电路(例如,图36中的电路3600)的 部分。在一个实施例中,出口调度器3428A用于针对(例如,来自处理元件的) 输入数据来监测自变量队列3402(例如,数据队列)。根据所描绘的数据格式 的实施例,“发送”(例如,用于其的二进制值)指示要根据字段X、Y来发送 数据,其中,X是指示特定的目标网络数据流端点电路的值(例如,0是图36 中的网络数据流端点电路3600),并且Y是指示值要存储在哪个网络入口缓 冲器(例如,缓冲器3624)位置的值。在一个实施例中,Y是指示多通道(例 如,分组交换型)网络的特定通道的值(例如,0是图36中的网络数据流端点 电路3600的通道0和/或缓冲器元件0)。当输入数据到达时,该输入数据随后由网络数据流端点电路3400(例如,从网络出口缓冲器3422)发送到不同 的网络数据流端口电路(例如,图36中的网络数据流端点电路3600)。
图35图示根据本公开的实施例的、例如如上文中参考图21所讨 论的当执行pick操作时接收输入一(1)的网络数据流端点电路3500。在一个 实施例中,出口配置3526A(例如,在配置步骤期间)被加载有pick操作的用 于将数据发送到不同的网络数据流端点电路(例如,图36中的电路3600)的 部分。在一个实施例中,出口调度器3528A用于针对(例如,来自处理元件的) 输入数据来监测自变量队列3520(例如,数据队列3502B)。根据所描绘的数据格式的实施例,“发送”(例如,用于其的二进制值)指示要根据字段X、Y 来发送数据,其中,X是指示特定的目标网络数据流端点电路的值(例如,0 是图36中的网络数据流端点电路3600),并且Y是指示值要存储在哪个网络 入口缓冲器(例如,缓冲器3624)位置的值。在一个实施例中,Y是指示多通 道(例如,分组交换型)网络的特定通道的值(例如,1是图36中的网络数据 流端点电路3600的通道1和/或缓冲器元件1)。当输入数据到达时,该输入 数据随后由网络数据流端点电路3500(例如,从网络出口缓冲器3422)发送 到不同的网络数据流端口电路(例如,图36中的网络数据流端点电路3600)。
图36图示根据本公开的实施例的、例如如上文中参考图21所讨 论的当执行pick操作时输出所选择输入的网络数据流端点电路3600。在一个 实施例中,其他网络数据流端点电路(例如,电路3400和电路3500)用于将 它们的输入数据发送到电路3600的网络入口缓冲器3624。在一个实施例中, 入口配置3626B(例如,在配置步骤期间)被加载有pick操作的用于例如根据 控制值来挑选被发送到网络数据里端点电路3600的部分。在一个实施例中, 控制值用于在入口控制3632(例如,缓冲器)中被接收。在一个实施例中,入 口调度器3528A用于(例如,在网络入口缓冲器3624中)监测控制值和输入 值的接收。例如,如果控制值表明从网络入口缓冲器3624的缓冲器元件A(例 如,该示例中的0或1)(例如,从通道A)挑选,则例如当输出缓冲器具有 存储空间时(例如,如由回压信号所指示),存储在那个缓冲器元件A中的值 随后作为由电路3600进行的操作的结果被输出到例如输出缓冲器3608中。在 一个实施例中,当出口缓冲器具有令牌(例如,输入数据和控制数据)且接收 方断言该接收方具有缓冲器(例如,指示存储可用,但是其他资源指派方式是 可能的,该示例仅是说明性的)时,电路3600的输出数据被向外发送。
图37图示根据本公开的实施例的流程图3700。所描绘的流程3700 包括:3702:提供处理元件的空间阵列;3704:利用分组交换型通信网络根据 数据流图在空间阵列内在处理元件之间路由数据;3706:利用处理元件执行数 据流图的第一数据流操作;以及3708:利用分组交换型通信网络的多个网络数 据流端点电路执行数据流图的第二数据流操作。
再次参见图9,加速器(例如,CSA)902可执行(例如,或请求 执行)向多个高速缓存区块(例如,高速缓存区块908)中的一个或多个高速 缓存区块的对数据的访问(例如,加载和/或存储)。例如,如本文中所讨论, 存储器接口电路(例如,(多个)请求地址文件(RAF)电路)可被包括以提 供存储器(例如,高速缓存区块)与加速器902之间的访问。再次参见图13, 作出请求的电路(例如,处理元件)可执行(例如,或请求执行)向多个高速 缓存区块(例如,高速缓存区块1302)中的一个或多个高速缓存区块的对数据 的访问(例如,加载和/或存储)。例如,如本文中所讨论,存储器接口电路(例 如,(多个)请求地址文件(RAF)电路)可被包括以提供存储器(例如,高 速缓存存储器的一个或多个区块)与加速器(例如,加速器片1308、1310、1312、 1314中的一个或多个加速器片)之间的访问。再次参见图21和/或图22,作出 请求的电路(例如,处理元件)可执行(例如,或请求执行)向多个高速缓存 区块中的一个或多个高速缓存区块的对数据的访问(例如,加载和/或存储)。 例如,如本文中所讨论,存储器接口电路(例如,(多个)请求地址文件(RAF) 电路,例如,RAF/高速缓存接口2112)可被包括以提供存储器(例如,高速 缓存存储器的一个或多个区块)与加速器(例如,处理元件和/或网络数据流端 点电路(例如,电路2102、2104、2106)中的一个或多个)之间的访问。
在某些实施例中,加速器(例如,其PE)通过以下网络耦合至RAF 电路或多个RAF电路:(i)电路交换型网络(例如,如本文中所讨论,例如, 参考图6-图13);或(ii)分组交换型网络(例如,如本文中所讨论,例如, 参考图20-图37)。
在某些实施例中,电路(例如,请求地址文件(RAF)电路)(例 如,多个RAF电路中的每个RAF电路)包括转换后备缓冲器(TLB)(例如, TLB电路)。TLB可接收虚拟地址的输入,并且可输出与虚拟地址至物理地址 的映射(例如,地址映射)(例如,与数据流图至硬件的任何映射不同)对应 的物理地址。虚拟地址可以是如由在电路上(例如,在加速器和/或处理器上) 运行的程序所见的地址。物理地址可以是存储器硬件中的(例如,与虚拟地址 不同的)地址。TLB可包括数据结构(例如,表),该数据结构(例如,表) 用于存储(例如,最近使用的)虚拟至物理存储器地址转换,例如使得不必对 存在的每个虚拟地址执行转换以获得与那个虚拟地址对应的物理存储器地址。 如果虚拟地址条目不在TLB中,则电路(例如,TLB管理电路)可执行页遍 历以确定虚拟至物理存储器地址转换。在一个实施例中,电路(例如,RAF电 路)用于经由(例如,如图6-图13中那样的)电路交换型网络从作出请求的 实体(例如,PE或其他硬件组件)接收用于在TLB(例如,RAF电路中的TLB) 中的转换的虚拟地址的输入。附加地或替代地,电路(例如,RAF电路)可经 由(例如,如图20-图37中那样的)分组交换型网络从作出请求的实体(例如, PE、网络数据流端点电路、或其他硬件组件)接收用于在TLB(例如,RAF 电路中的TLB)中的转换的虚拟地址的输入。在某些实施例中,针对存储器(例 如,高速缓存)访问请求接收的数据是存储器命令。存储器命令可包括要访问 的虚拟地址、要执行的操作(例如,加载或存储)、和/或(例如,针对存储的) 有效载荷数据。
2.6 浮点支持
某些HPC应用由它们对于显著的浮点带宽的需求来表征。为了满 足该需求,例如取决于片配置,CSA的实施例可被供应有多个(例如,每个可 被供应有128个与256个之间的)浮点加法和乘法PE。CSA可提供一些其他 扩展精度模式,以便例如简化数学库实现方式。CSA浮点PE可支持单精度和 双精度两者,但是较低精度的PE可支持机器学习工作负荷。CSA可提供比处 理核高一数量级的浮点性能。在一个实施例中,除了增加浮点带宽之外,为了 驱动所有浮点单元,浮点操作中消耗的能量减少。例如,为了减少能量,CSA 可选择性地对浮点乘法器阵列的低阶位门控。在检查浮点算术的行为时,乘法 阵列的低阶位可能不会经常影响最终经舍入的积。图38图示根据本公开的实 施例的分区为三个区域(结果区域、三个潜在的进位区域3802、3804、3806 和门控区域)的浮点乘法器2900。在某些实施例中,进位区域可能影响结果区 域,而门控区域不太可能影响结果区域。考虑g位的门控区域,最大进位可以 是:
Figure BDA0002412558780000991
给定该最大进位,如果进位区域的结果小于2c–g(其中,进位区域为c位宽), 则门控区域可被忽略,因为该门控区域不影响结果区域。增加g意味着更有可 能将需要门控区域,而增加c意味着在随机假定下,该门控区域将不被使用, 并且可被禁用以避免能耗。在CSA浮点乘法PE的实施例中,利用两级流水线 式方式,其中,首先确定进位区域,随后,如果发现门控区域影响结果,则确 定该门控区域。如果知晓关于乘法的上下文的更多信息,则CSA更激进地调 整门控区域的尺寸。在FMA中,乘法结果可被加到累加器,该累加器经常比 被乘数中的任一者大得多。在这种情况下,可在乘法前提前观察加数指数,并 且CSDA可相应地调整门控区域。CSA的一个实施例包括一方案,其中,上 下文值(其约束计算的最小结果)被提供给相关的乘法器以选择最低能量门控 配置。
2.7 运行时服务
在某些实施例中,CSA包括异构的分布式结构,因此,运行时服 务实现方式用于以并行的分布式方式适应若干种类的PE。虽然CSA中的运行 时服务可能是关键的,但是它们相对于用户级计算可能是较不频繁的。因此, 某些实施例聚焦于将服务覆盖在硬件资源上。为了满足这些目的,CSA运行时 服务可构造为层次结构,例如,每一层对应于CSA网络。在片级,单个面向 外部的控制器可接受服务命令,或者可将服务命令发送到与CSA片相关联的 核。片级控制器可服务以(例如,使用ACI网络)协调RAF处的区域控制器。 区域控制器可转而协调某些夹层网络站(例如,网络数据流端点电路)处的本 地控制器。在最低级,服务特定的微协议可(例如,在通过夹层控制器控制的 特殊模式期间)在本地网络上执行。微协议可准许每一个PE(例如,通过类 型划分的PE类)根据其自身的需求来与运行时服务交互。因此,并行性在该 层次结构组织中是隐式的,并且在最低级处的操作可同时发生。例如取决于 CSA片的配置尺寸以及CSA片在存储器层次结构中的位置,该并行性可实现 在几百纳秒到几微秒之间的对CSA片的配置。因此,CSA的实施例利用数据 流图的属性来改善每一个运行时服务的实现方式。一项关键的观察是运行时服 务可能仅需要维持数据流图的合法逻辑视图(例如,可通过对数据流操作器执 行的某种排序而产生的状态)。服务一般可不需要保证数据流图的时态视图(例 如,在给定时刻数据流图在CSA中的状态)。例如,假设服务被安排以维持 数据流图的逻辑示图,则这可准许CSA以分布式、流水线式的并行方式进行 大多数运行时服务。本地配置微协议可以是覆盖在本地网络上的基于分组的协 议。配置目标可被组织为配置链,例如,该配置链在微架构中固定。结构(例 如,PE)目标可以一次被配置一个,例如,对于每一个目标使用单个额外寄存 器来实现分布式协调。为了开始配置,控制器可驱动带外信号,该带外信号将 其邻域内的所有结构目标置入未经配置的、暂停状态,并且将本地网络中的多 路复用器摇摆到预定义的构造。当结构(例如,PE)目标被配置(即,它们完 全接收到它们的配置分组)时,它们可设置它们的配置微协议寄存器,从而向 下一目标(例如,PE)通知该下一目标可使用后续分组来继续进行配置。对于 配置分组的尺寸没有限制,并且分组可具有动态可变的长度。例如,配置恒定 操作数的PE可具有长度设定为包括恒定字段(例如,图3B-图3C中的X和Y) 的配置分组。图39图示根据本公开的实施例的具有多个处理元件(例如,PE 3902、3904、3906、3908)的加速器3900的运行中配置。一旦经配置,PE就 可受制于数据流约束来执行。然而,涉及未经配置的PE的通道可由微架构禁 用,从而例如防止任何未定义的操作发生。这些属性允许CSA的实施例以分 布式方式初始化和执行,而一点也没有集中式控制。来自未经配置的状态,配 置可完全并行地发生(例如,也许在短至200纳秒内)。然而,由于对CSA 的实施例的分布式初始化,PE可能变得活跃,以便例如当整个结构被配置好 之前很久就将请求发送到存储器。提取能以与配置几乎相同的方式继续进行。 本地网络可被遵守,以便一次从一个目标提取数据,并且提取用于实现分布式 协调的状态位。CSA可将提取安排为是非破坏性的,即,在提取的完成时,每一个可提取目标已返回到其起始状态。在该实现方式中,目标中的所有状态可 被传播至以类扫描方式连至本地网络的出口寄存器。然而可通过引入寄存器传 送级(RTL)的新路径或使用现有的线以便以更低开销来提供相同功能来实现 原位(in-place)提取。类似的配置、层次结构提取并行地实现。
图40图示根据本公开的实施例的运行中流水线式提取的快照4000。 在提取的一些用例(诸如,检查点操作)中,只要结构吞吐量可被维持,等待 时间就可以不是关注的问题。在这些情况下,提取能以流水线方式来安排。图 40中示出的这种布置准许结构中的大多数继续执行,而窄区域被禁用于提取。 配置和提取可被协调和组成以实现流水线式上下文切换。定性地讲,异常可与 配置和提取不同,体现在与发生在指定时间不同,异常在运行时期间的任何时 刻在结构中的任何地方发生。因此,在一个实施例中,异常微协议可能无法覆 盖在本地网络上,并利用其自身的网络,该本地网络在运行时由用户程序占据。 然而,从本质上说,异常是稀少的,并且对等待时间和带宽不敏感。因此,CSA 的某些实施例利用分组交换型网络将异常携带至本地夹层站,例如,在该本地 夹层站处,这些异常被继续沿服务层次结构向上被转发(例如,如图55中所 示)。本地异常网络中的分组可以是极小的。在许多情况下,仅2至8位的PE标识(ID)作为完整的分组就足够了,例如因为当分组遍历异常服务层次 结构时,CSA可创建唯一的异常标识符。此类方案可以是所期望的,因为它减少了在每一个PE处产生异常的面积开销。
3.编译
将以高级语言编写的程序编译到CSA上对于产业应用可能是必要 的。这一节给出用于CSA的实施例的编译策略的高级概览。首先是CSA软件 框架的提议,该CSA软件框架说明理想的生产质量工具链的期望属性。其次, 讨论了原型编译器框架。接着讨论“控制-数据流转换”,其例如用于将普通的序 列化控制流代码转换为CSA数据流汇编代码。
3.1 示例生产框架
图41图示根据本公开的实施例的用于加速器的编译工具链4100。 该工具链将高级语言(诸如,C、C++和Fortran)编译为用于将被加速的特定 区域的主代码(LLVM)中介表示(IR)的组合。该编译工具链的CSA特定的 部分将LLVM IR作为其输入,将该IR优化并编译为CSA汇编,从而例如在 等待时间不敏感的通道上增加适当的缓冲以用于性能。随后,它将CSA汇编 放置并路由在硬件结构上,并配置PE和网络以用于执行。在一个实施例中, 工具链支持CSA特定的编译作为及时(JIT)编译,从而并入来自实际执行的 潜在运行时反馈。框架的关键设计特性之一是编译(LLVM)IR以获得CSA, 而不是将较高级语言用作输入。虽然以专门为CSA设计的高级编程语言编写 的程序可实现最高性能和/或能效,但是采用新的高级语言或编程框架可能由于 转换现有代码基础的困难在实践中是慢的且受限的。将(LLVM)IR用作输入 使广泛范围的现有程序能够潜在地在CSA上执行,从而例如不需要创建新语 言,也不需要显著地修改想要在CSA上运行的新语言的前端。
3.2 原型编译器
图42图示根据本公开的实施例的用于加速器的编译器4200。编译 器4200最初聚焦于通过(例如,Clang)前端对C或C++的提前编译。为了编 译(LLVM)IR,编译器利用三个主要的级在LLVM内实现CSA后端目标。 首先,CSA后端将LLVM IR降低为用于序列化单元的目标特定的机器指令, 该序列化单元实现大多数CSA操作以及传统的类RISC控制流架构(例如,利 用分支和程序计数器)。工具链中的序列化单元可充当对编译器和应用开发器 两者有用的辅助,因为该序列化单元允许从控制流(CF)到数据流(DF)的 递增式变换,例如,将某时刻的一个代码段从控制流转换到数据流,并且验证 程序正确性。序列化单元也可提供用于处置在空间阵列中不适配的代码的模型。 随后,编译器将这些控制流指令转换为用于CSA的数据流操作器(例如,代 码)。这一阶段稍后在第3.3节中描述。随后,CSA后端可对数据流指令运行 其自身的优化轮次。最后,编译器可转储(dump)CSA汇编格式的指令。该 汇编格式被取为对后级工具的输入,该后级工具将数据流指令放置并路由在实 际的CSA硬件上。
3.3 控制至数据流转换
编译器的关键部分可在控制-数据流转换轮次(或简称数据流转换 轮次)中实现。该轮次吸收以控制流形式表示的函数,并将该函数转换为数据 流函数,该以控制流形式表示的函数例如是具有对虚拟寄存器进行操作的序列 化机器指令的控制流图(CFG),该数据流函数在概念上是由等待时间不敏感 的通道(LIC)连接的数据流操作(指令)的图。本章节给出对该轮次的高级 描述,从而描述在某些实施例中,该轮次如何在概念上处理存储器操作、分支 和循环。
直线代码
图43A图示根据本公开的实施例的序列化汇编代码4302。图43B 图示根据本公开的实施例的针对图43A的序列化汇编代码4302的数据流汇编 代码4304。图43C图示根据本公开的实施例的针对用于加速器的图43B的数 据流汇编代码4304的数据流图4306。
首先,考虑将直线序列化代码转换为数据流的简单情况。数据流 转换轮次可将基本的序列化代码块(诸如,图43A中示出的代码)转换为图 43B中示出的CSA汇编代码。从概念上讲,图43B中的CSA汇编表示图43C 中的数据流图。在该示例中,每一条序列化指令被转换为匹配的CSA汇编。 (例如,用于数据的).lic声明宣称与序列化代码中的虚拟寄存器(例如,Rdata) 相对应的等待时间不敏感的通道。在实践中,对数据流转换轮次的输入可以在经编号的虚拟寄存器中。然而,为清楚起见,本节使用描述性的寄存器名称。 注意,在该实施例中,加载和存储操作在CSA架构中受支持,从而相比仅支 持纯数据流的架构允许多得多的程序运行。由于对编译器的序列化代码输入是 SSA(单静态指派)形式的,因此对于简单的基本块,控制-数据流轮次可将每 一个虚拟寄存器定义转换为在等待时间不敏感的通道上的单个值的产生。SSA 形式允许对虚拟寄存器(诸如,在Rdata2中)的单个定义的多次使用。为了 支持该模型,CSA汇编代码支持对同一LIC(例如,data2)的多次使用,并且 模拟器隐式地创建LIC的必要的副本。序列化代码与数据流代码之间的一个关 键区别在于对存储器操作的处理。图43A中的代码在概念上是串行的,这意味 着在addr和addr3地址重叠的情况下,addr3的load32(ld32)应当显得在addr 的st32之后发生。
分支
为了将具有多个基本块和条件语句的程序转换为数据流,编译器 生成特殊的数据流操作器来替换分支。更具体地,编译器使用switch操作器以 在原始的CFG中的基本块的结尾处引导传出数据,并使用pick操作器以在基 本块的开始处从适当的传入通道中选择值。作为具体的示例,考虑图44A-图 44C中的代码和对应的数据流图,该代码和对应的数据流图有条件地基于以下 若干输入来计算y的值:a、i、x和n。在计算了分支条件测试之后,则数据流 代码使用switch操作器(例如,参见图3B-图3C)以:如果测试为0,则将通 道x中的值引导到通道xF,或者如果测试为1,则将通道x中的值引导到通道 xT。类似地,pick操作器(例如,参见图3B-图3C)用于:如果测试为0,则 将通道yF发送到y,或者如果测试为1,则将通道yT发送到y。在该示例中, 证明了即便a的值仅用于条件语句的真分支中,CSA也将包括switch操作器, 该switch操作器在测试为1时将该a的值引导到通道aT,并且当测试为0时消 耗(吞噬)该值。后一种情况通过将switch装置的假输出设置为%ign来表达。 简单地将通道直接连接到真路径可能不是正确的,因为在执行实际上采用假路 径的情况下,该“a”的值将被留在图中,从而导致对于该函数的下一次执行的 不正确的a值。该示例突出了控制等效的属性,该属性是正确的数据流转换的 实施例中的关键属性。
控制等效:考虑具有两个基本块A和B的单入口单出口控制流图 G。如果通过G的所有完成控制流路径都对A和B访问相同次数,则A和B 是控制等效的。
LIC替换:在控制流图G中,假定基本块A中的操作定义虚拟寄 存器x以及在基本块B中的使用x的操作。那么只有在A和B是控制等效的 时,正确的控制-数据流变换才可用等待时间不敏感的通道来替换x。控制等效 关系将CFG的基本块分区为强控制依赖性区域。图44A图示根据本公开的实 施例的C源代码4402。图44B图示根据本公开的实施例的针对图44A的C源 代码4402的数据流汇编代码4404。图44C图示根据本公开的实施例的针对图 44B的数据流汇编代码4404的数据流图4406。在图44A-图44C的示例中,在 条件语句之前和之后的基本块是彼此控制等效的,但是在真路径和假路径中的 基本块各自位于它们的控制依赖性区域中用于将CFG转换为数据流的一个正 确算法用于使编译器:(1)插入switch以对在不是控制等效的基本块之间流 动的任何值补偿执行频率的失配;以及(2)在基本块的开始处插入pick以便 正确地从任何传入值选择到基本块。生成用于这些pick和switch的适当的控 制信号可以是数据流转换的关键部分。
循环
数据流转换中的另一重要的CFG类别是用于单入口单出口循环的 CFG,这是(LLVM)IR中生成的循环的常见形式。这些循环除了从循环的结 尾往回到循环头部块的单个后沿以外,可以是几乎非循环的。数据流转换轮次 可使用相同的高级策略来像对于分支那样转换循环,例如,数据流转换轮次在 循环的结尾插入switch以将值引导出循环(要么离开循环出口,要么围绕后沿 到循环的开始),并且在循环的开始处插入pick以在进入循环的初始值与通过 后沿到来的值之间进行选择。图45A图示根据本公开的实施例的C源代码4502。 图45B图示根据本公开的实施例的针对图45A的C源代码4504的数据流汇编 代码4502。图45C图示根据本公开的实施例的针对图45B的数据流汇编代码4504的数据流图4500。图45A-图45C示出用于将循环归纳变量i的值加起 来的示例do-while循环的C和CSA汇编代码以及对应的数据流图。对于从概 念上讲围绕循环进行循环的每一个变量(i和sum),该图具有控制这些值的 流动的对应的pick/switch对。注意,即便n是循环不变量,该示例也使用 pick/switch对使n的值围绕循环进行循环。这种n的重复使n的虚拟寄存器能够转化到LIC中,因为它匹配循环外部的n的概念性定义与循环内部对n的一 次或多次使用之间的执行频率。一般而言,为了获得正确的数据流转换,当寄 存器被转换到LIC中时,对于循环体内部的每一次迭代,登入(live-in)循环 的寄存器将被重复一次。类似地,在循环内被更新且从循环登出(live-out)的 寄存器将被消耗(例如,利用被发送出循环的单个最终值)。循环将褶皱引入 到数据流转换过程中,即,用于循环的顶部处的pick的控制以及用于循环底部 的switch是偏移的。例如,如果图44A中的循环执行三个迭代并退出,则对 挑选器的控制应当是0、1、1,而对切换器的控制应当是1、1、0。该控制通 过以下方式实现:当函数在循环0(其在汇编中由指示.value 0和.avail 0指定) 上开始时,以初始的额外0启动挑选器通道,随后将输出切换器复制到挑选器 中。注意,切换器中的最后一个0将最终的0恢复到挑选器中,从而确保数据 流图的最终状态匹配其初始状态。
图46A图示根据本公开的实施例的流程图4600。所描绘的流程 4600包括:4602:利用处理器的核的解码器将指令解码为经解码指令;4604: 利用处理器的核的执行单元执行经解码指令以执行第一操作;4606:接收包括 多个节点的数据流图的输入;4608:将数据流图覆盖到处理器的多个处理元件 以及处理器的多个处理元件之间的互连网络中,并且每一个节点被表示为多个 处理元件中的数据流操作器;以及4610:当相应的传入操作数集到达多个处理 元件的数据流操作器中每一个时,利用互连网络和多个处理元件执行数据流图 的第二操作。
图46B图示根据本公开的实施例的流程图4601。所描绘的流程包 括:4603:接收包括多个节点的数据流图的输入;4605:将数据流图覆盖到处 理器的多个处理元件、多个处理元件之间的数据路径网络以及多个处理元件之 间的流控制路径网络中,并且每一个节点被表示为多个处理元件中的数据流操 作器。
在一个实施例中,核将命令写入到存储器队列中,并且CSA(例 如,多个处理元件)监测该存储器队列且当该命令被读取时开始执行。在一个 实施例中,核执行程序的第一部分,并且CSA(例如,多个处理元件)执行该 程序的第二部分。在一个实施例中,当CSA正在执行操作时,核进行其他工 作。
4.CSA优势
在某些实施例中,CSA架构和微架构提供相对于路线图处理器架 构和FPGA深远的能量、性能、可用性优势。在本节中,这些架构与CSA的 实施例进行比较,并且强调CSA在加速并行数据流图中相对于每一者的优越 性。
4.1 处理器
图47图示根据本公开的实施例的吞吐量相对于每个操作的能量的 图表4700。如图47中所示,小型核一般比大型核能效更高,并且在一些工作 负荷中,该优势可通过更高的核计数而转换为绝对性能。CSA微架构遵循这些 观察结果至它们的结论,并且去除与冯·诺依曼架构相关联的(例如,大多数) 能量饥饿型控制结构(包括指令侧微架构中的大多数)。通过去除这些开销并 实现简单的单操作PE,CSA的实施例获得密集、高效的空间阵列。与通常非 常串行化的小型核不同,CSA可例如经由电路交换型本地网络将其PE聚集在一起以形成显式并行的聚合数据流图。该结果为不仅在并行应用中、而且也在 串行应用中的性能。与在面积和能量方面花大代价的核不同,CSA在其原生执 行模型中已经是并行的。在某些实施例中,CSA既不需要推测来提升性能,也 不需要反复地从序列化程序表示中重新提取并行性,由此避免了冯·诺依曼架 构中主要能量税负中的两项。CSA的实施例中的大多数结构是分布式、小型且 高能效的,这与核中发现的集中式、庞大的能量饥饿型结构形成对照。考虑 CSA中的寄存器的情况:每一个PE可具有一些(例如,10个或更少)存储寄存器。单独而言,这些寄存器可比传统的寄存器组更高效。在聚合时,这些寄 存器可提供大型结构中寄存器组的效果。作为结果,CSA的实施例避免由经典 架构导致的栈溢出和填满中的大多数,同时对于每一次状态访问使用少得多的 能量。当然,应用可仍访问存储器。在CSA的实施例中,存储器访问请求和 响应是架构上解耦的,从而使工作负荷对于每个面积和能量单位维持多得多的 待决存储器访问。该属性对高速缓存约束的工作负荷实现显著更高的性能,并 且减少使存储器约束的工作负荷中的主存储器饱和所需的面积和能量。CSA的 实施例暴露对非冯·诺依曼架构而言独一无二的新的能效形式。在(例如,大 多数)PE处执行单个操作(例如,指令)的一个结果是减少的操作数熵。在 递增式操作的情况下,每一次执行会导致少数电路级切换和非常少的能耗,这 是在第5.2节中详细检验的情况。相比之下,冯·诺依曼经复用,从而导致大量 位转变。CSA的实施例的异步样式也实现微架构优化,诸如,难以在被严格地 调度的核流水线中实现的在第2.6节中描述的浮点优化。由于PE可以是相对 简单的,并且在特定数据流图中的PE的行为可静态地被知晓,因此时钟门控 和功率门控技术可以比在更粗糙架构中更高效地被采用。CSA、PE和网络的 实施例的图执行样式、小尺寸和可延展性共同实现了对许多种类并行性的表达: 指令、数据、流水线、向量、存储器、线程和任务并行性全都可被实现。例如, 在CSA的实施例中,一个应用可使用算术单元来提供高的地址带宽等级,而 另一应用可将那些相同的单元用于计算。在许多情况下,多种并行性可被组合 以实现甚至更高的性能。许多关键的HPC操作可既被复制又被流水线化,从 而导致多个数量级的性能增益。相比之下,冯·诺依曼核典型地针对由架构师 仔细选择的一种并行性样式进行优化,从而导致不能够捕捉所有重要的应用内 核。正因为CSA的实施例暴露并促进并行性的许多形式,因此它不命令特定 的并行性形式,或者更糟糕地,特定的子例程存在于应用中以受益于CSA。例 如即便当不进行修改就被编译时,许多应用(包括单流应用)也可从CSA的 实施例获得性能和能量益处两者。这与要求大量的编程器努力获得单流应用中 的显著性能增益的长期趋势相反。实际上,在一些应用中,相比从已备受煎熬 来针对向量指令的其复杂的当代对等代码,CSA的实施例从功能上等效的但较 不“现代化的”代码中获得更多性能。
4.2 CSA实施例与FPGA的比较
将数据流操作器选作CSA的实施例的基本架构这一选择将那些 CSA与FPGA区分开,具体地,CSA作为用于从传统编程语言产生的HPC数 据流图的优越的加速器。数据流操作器在根本上是异步的。这使CSA的实施 例不仅能够具有在微架构中的实现自由,而且还使CSA的实施例能够简单且 简洁地适应抽象架构概念。例如,CSA的实施例利用简单的加载-存储接口自 然地适应许多存储器微架构,这些许多存储器微架构基本上是异步的。人们仅 需要检查FPGA DRAM控制器来领会复制度的区别。CSA的实施例也利用异 步性来提供像配置和提取这样的更快且功能更全的运行时服务,人们相信这比 FPGA块4-6个数量级。通过收窄架构接口,CSA的实施例在微架构级提供对 大多数时序路径的控制。这允许CSA的实施例以比在FPGA中提供的更一般 的控制机制高得多的频率来操作。类似地,在架构上对于FPGA而言可能是根 本性的时钟和重置在CSA中是微架构的,从而例如消除了对将时钟和重置作 为可编程实体来支持的需求。数据流操作器对于大多数部分可以是粗粒度的。 通过仅在粗糙的操作器中进行处理,CSA的实施例改善结构的密度及其能耗两 者。CSA直接执行操作而不是利用查找表来对操作进行仿真。粗糙性的第二个 结果是简化了放置和路由问题。CSA数据流图比FPGA网络表小许多数量级, 并且在CSA的实施例中,放置和路由时间相应减少。CSA的实施例与FPGA 之间的显著区别使得CSA作为例如用于从传统编程语言产生的数据流的加速 器是优越的。
5.评估
CSA是新颖的计算机架构,具有提供相对于路线图处理器的巨大 的性能和能量优势。考虑对于跨阵列遍历计算单跨步地址的情况。这种情况在 HPC应用(例如,其在计算地址偏移时花费大量整数工作)中可能是重要的。 在地址计算、尤其是跨步地址计算中,对于每次计算,一个自变量是恒定的, 并且另一个自变量仅略微变化。因此,在大多数情况下,每个周期仅少数位切 换。实际上,使用与第3.5节中描述的对浮点进位位的约束类似的派生,可以 显示出对于跨步计算平均而言每次计算少于两个输入位切换,从而对于随机切换分布减少50%能量。如果使用时间复用方式,则这些能量节省中的许多能量 节省会丢失。在一个实施例中,CSA实现相对于核的大约3x(3倍)能效,同 时获得8x(8倍)性能增益。由CSA的实施例获得的并行性增益会导致减少 的程序运行时间,从而实现相应的显著的泄漏能量减少。在PE级,CSA的实 施例是极其高能效的。对于CSA的第二个重要问题是CSA是否在片级小号合 理量的能量。由于CSA的实施例在每个周期在结构中能够演练每一个浮点PE, 引起它充当能量和功率消耗的合理上界,例如使得能量中的大部分进入浮点乘 法和加法。
6.进一步的CSA细节
本节讨论配置和异常处置的进一步细节。
6.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位结构具有更低的成本。
图48图示根据本公开的实施例的加速器片4800,该加速器片4800 包括处理元件(PE)的阵列和本地配置控制器4802、4806。每一个PE、每一 个网络控制器(例如,网络数据流端点电路)和每一个切换装置可以是可配置 结构元件(CFE),例如,该CFE由CSA架构的实施例配置(例如,编程)。
CSA的实施例包括提供对异构空间结构的高效、分布式、低等待 时间配置的硬件。这可以根据四项技术来实现。首先,利用硬件实体(本地配 置控制器(LCC)),例如,如图48-50中所示。LCC可从(例如,虚拟)存 储器取出配置信息的流。其次,配置数据路径可被包括,例如,该配置数据路 径与PE结构的原生宽度一样宽,并且可被覆盖在PE结构的顶部上。第三, 新控制信号可被接收到安排配置过程的PE结构中。第四,状态元件可位于(例 如,在寄存器中)跟踪相邻CFE的状态的每一个可配置端点处,从而允许每 一个CFE无需额外的控制信号来明确地自配置。这四个微架构特征可允许CSA 配置其CFE的链。为了获得低的配置等待时间,可通过建立许多LCC和CFE 链来对配置分区。在配置时,这些可独立地操作以便并行地加载结构,从而例 如动态地降低等待时间。作为这些组合的结果,使用CSA架构的实施例配置 的结构可以(例如,在几百纳秒内)被完全配置。在下文中,公开了CSA配 置网络的实施例的各种组件的详细操作。
图49A-图49C图示根据本公开的实施例的配置数据路径网络的本 地配置控制器4902。所描绘的网络包括多个多路复用器(例如,多路复用器 4906、4908、4910),这些多路复用器可(例如,经由它们相应的控制信号) 经配置以将(例如,来自PE的)一个或多个数据路径连接在一起。图49A图 示为一些先前的操作或程序配置(例如,设置)的网络4900(例如,结构)。 图49B图示选通配置信号的本地配置控制器4902(例如,包括用于发送和/或 接收信号的网络接口电路4904),并且本地网络被设置为允许LCC将配置数 据发送到所有可配置结构元件(CFE)(例如,mux)的默认配置(例如,如 图中所描绘)。图49C图示LCC,该LCC跨网络选通配置信息,从而以预定 的(例如,硅定义的)序列配置CFE。在一个实施例中,当CFE被配置时, 它们可立即开始操作。在另一实施例中,CFE等待开始操作,直到结构已被完全配置(例如,对于每一个本地配置控制器,由配置终止器(例如,图51中 的配置终止器5104和配置终止器5108)用信号通知)。在一个实施例中,LCC 通过发送特殊消息或驱动一信号来获得对网络结构的控制。随后,它(例如, 在许多周期的时间段内)将配置数据选通到结构中的CFE。在这些附图中,多 路复用器网络与在某些附图(例如,图6)中示出的“切换装置”类似。
本地配置控制器
图50图示根据本公开的实施例的(例如,本地)配置控制器5002。 本地配置控制器(LCC)可以是负责以下各项的硬件实体:加载结构程序的(例 如,在片的子集中或其他位置的)本地部分;解释这些程序部分;随后通过在 各种配置线上驱动适当的协议将这些程序部分加载到结构中。在该能力方面, LCC可以是专用序列化微控制器。
当LCC操作接收到指向代码段的指针时,它可以开始。取决于LCB 微架构,(例如,存储在指针寄存器5006中的)该指针要么通过(例如,来 自CSA(结构)自身内的)网络要么通过存储器系统访问来到LCC。当LCC 接收到此类指针时,它可任选地从用于上下文存储的结构的其部分耗尽相关状 态,并随后继续进展以立即重配置该结构该LCC所负责的部分。由LCC加载 的程序可以是用于结构的配置数据和用于LCC的控制命令的组合,例如,该 配置数据和该控制命令被轻度编码。当LCC使程序部分流入时,它可将该程 序解释为命令流,并执行适当的经编码动作以配置(例如,加载)结构。
在图48中示出用于LCC的两个不同的微架构,例如,其中之一或 两者用于CSA中。第一个微架构将LCC 4802放置在存储器接口处。在这种情 况下,LCC可向存储器系统做出加载数据的直接请求。在第二种情况下,LCC 4806被放置在存储器网络上,在存储器网络中,LCC 4806可仅间接地向存储 器作出请求。在这两种情况下,LCB的逻辑操作不改变。在一个实施例中,例 如由(例如,OS可见的)控制状态寄存器的集合向LCC通知要加载的程序,该控制状态寄存器的集合将用于向各个LCC通知新程序指针等。
额外的带外控制通道(例如,线)
在某些实施例中,配置依赖于2-8个额外的带外控制通道来改善配 置速度,如下文所定义。例如,配置控制器5002可包括以下控制通道:例如,CFG_START控制通道5008、CFG_VALID控制通道5010以及CFG_DONE控 制通道5012,每一者的示例在以下表2中讨论
表2:控制通道
Figure BDA0002412558780001141
一般而言,对配置信息的处置可以被留给特定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可维护表明它是否已经被配置的位(例如,参见图39)。 当配置开始信号被驱动时,该位可被解除断言,随后,一旦特定的CFE已被 配置,就断言该位。在一个配置协议中,CFE被布置成链,CFE并且配置状态 位确定该链的拓扑。CFE可读取紧邻CFE的配置状态位。如果该相邻CFE被 配置且当前CFE未被配置,则CFE和确定任何当前的配置数据针是对当前CFE 的。当‘CFG_DONE’信号被断言时,CFE可设置其配置位,以便例如使上游 CFE能够进行配置。作为配置过程的基本情况,断言其被配置的配置终止器(例 如,在图48中的用于LCC 4802的配置终止器4804或用于LCC 4806的配置 终止器4808)可被包括在链的结尾处。
在CFE内部,该位可用于驱动流控制就绪信号。例如,当配置位 被解除断言时,网络控制信号可被自动地箝位为防止数据流动的值,同时在 PE内,没有操作或其他动作将被调度。
处理高延迟配置路径
LCC的一个实施例可例如通过许多多路复用器且利用许多加载以 在长距离上驱动信号。因此,信号在短时钟周期内到达远端CFE可能是困难 的。在某些实施例中,配置信号处于主(例如,CSA)时钟信号的某个分频(例 如,分数)以确保配置时的数字时序规则。时钟分频可用于带外信令协议中, 并且不要求对主时钟树的任何修改。
确保配置期间一致的结构行为
由于某些配置方案是分布式的且由于程序和存储器效应具有非确 定性时序,因此结构的不同部分可在不同时间被配置。作为结果,CSA的某些 实施例提供用于防止经配置以及未经配置的CFE之间的不一致操作的机制。 总体而言,一致性被视为由CFE自身例如使用内部CFE状态所要求并维持的 属性。例如,当CFE处于未经配置状态时,它可宣称其输入缓冲器为满,且 其输出为无效。当被配置时,这些值将被设置为缓冲器的真状态。随着结构的 足够的部分从配置中出来,这些技术可准许该结构开始操作。例如,如果长等 待时间存储器请求在早期被发布,则这具有进一步降低上下文切换等待时间的 效果。
可变宽度配置
不同的CFE可具有不同的配置字宽度。对于较小的CFE配置字, 实现器可通过跨网络线公平地指派CFE配置加载来使延迟平衡。为了平衡在 网络线上的加载,一个选项是将配置位指派给网络线的不同部分以限制任何一 根线上的净延迟。宽数据字可通过使用串行化/解串行化技术来处置。这些决策 可逐结构地采用以优化特定CSA(例如,结构)的行为。网络控制器(例如, 网络控制器4810和网络控制器4812中的一个或多个)可与CSA(例如,结构) 的每一个域(例如,子集)通信,以便例如将配置信息发送至一个或多个LCC。 网络控制器可以是(例如,与电路交换型网络分开的)通信网络的部分。网络 控制器可包括网络数据流端点电路。
6.2 用于CSA的低等待时间配置以及用于CSA的配置数据的及时取出的微架构
CSA的实施例可以是对用户应用进行加速的高能效且高性能手段。 当考虑程序(例如,程序的数据流图)是否可由加速器成功地加速时,用于配 置加速器的时间以及用于运行程序的时间两者可被考虑。如果运行时间为短, 则配置时间在确定成功的加速时将发挥大的作用。因此,为了使可加速程序的 域最大化,在一些实施例中,使配置时间尽可能短。一个或多个配置高速缓存 可被包括在CSA中,例如使得高带宽、低等待时间存储实现快速重配置。接 下来是对配置高速缓存的若干实施例的描述。
在一个实施例中,在配置期间,配置硬件(例如,LCC)可任选地 访问配置高速缓存以获得新配置信息。配置高速缓存要么可操作为传统的基于 地址的高速缓存,要么可处于OS管理的模式,在OS管理的模式中,配置被 存储在本地地址空间中,并且通过参引那个地址空间被寻址。如果配置状态位 于高速缓存中,则在某些实施例中,没有对后备存储的请求将被进行。在某些 实施例中,该配置高速缓存与存储器层次结构中的任何(例如,较低级)共享 高速缓存分开。
图51图示根据本公开的实施例的加速器片5100,该加速器片5100 包括处理元件的阵列、配置高速缓存(例如,5118或5120)和本地配置控制 器(例如,5102或5106)。在一个实施例中,配置高速缓存5114与本地配置 控制器5102位于一起。在一个实施例中,配置高速缓存5118位于本地配置控 制器5106的配置域中,例如,第一域结束于配置终止器5104,并且第二域结 束于配置终止器5108。配置高速缓存可允许本地配置控制器在配置期间可参引 配置高速缓存,以便例如希望以比参引存储器更低的等待时间来获得配置状态。 配置高速缓存(存储)要么可以是专用的,要么可作为结构内存储元件(例如, 本地高速缓存5116)的配置模式来访问。
高速缓存模式
1.需求型高速缓存(Demand Caching)-在该模式中,配置高速缓存作为 真高速缓存进行操作。配置控制器发布基于地址的请求,该基于地址的请求被 对照着高速缓存中的标签来校验。未命中可被加载到高速缓存中,并且随后可 在未来的重新编程期间被重新参引。
2.结构内存储(暂存器)高速缓存——在该模式中,配置高速缓存接收对 其自身的小地址空间而不是主机的较大的地址空间中的配置序列的参引。这可 改善存储器密度,因为高速缓存的用于存储标签的部分可替代地用于存储配置。
在某些实施例中,配置高速缓存可具有(例如,通过外部指示或 内部指示)被预加载到其中的配置数据。这可允许用于加载程序的等待时间的 减少。本文中的某些实施例提供至配置高速缓存的结构,该接口例如即便在配 置已经正在结构中运行时也准许将新配置状态加载到高速缓存中。该加载的发 起可从内部或外部源发生。预加载机制的实施例通过去除来自配置路径的高速 缓存加载的等待时间来进一步减小等待时间。
预取模式
1.显式预取——以新命令ConfigurationCachePrefetch(配置高速缓存预取) 来扩充配置路径。与对结构编程不同,该命令简单地使相关程序配置加载到配 置高速缓存中而无需对结构编程。由于该机制背负在现有的配置基础结构上, 因此它既在结构内被暴露,又在例如访问存储器空间的核和其他实体外部被暴 露。
2.隐式预取——全局配置控制器可维护预取预测器,并使用它来(例如, 以自动化方式)发起对配置高速缓存的显式预取。
6.3 用于响应于异常对CSA进行快速重配置的硬件
CSA(例如,空间结构)的某些实施例包括大量指令和配置状态, 例如,该配置状态在CSA的操作期间很大程度上是静态的。因此,配置状态 可能易受软错误影响。对这些软错误的快速且无错的恢复对于空间系统的长期 可靠性和性能可能是关键的。
本文中的某些实施例提供快速配置恢复循环,例如,在该快速配 置恢复循环中,配置错误被检测,并且结构的多个部分立即被重配置。本文中 的某些实施例包括例如具有可靠性、可用性和耐用性(RAS)重编程特征的配 置控制器。CSA的某些实施例包括用于在空间结构内进行高速配置、错误报告 和奇偶校验的电路。使用这三个特征以及可任选的配置高速缓存的组合,配置 /异常处置电路可从配置中的软错误恢复。当被检测到时,软错误可被传送到配 置高速缓存,该配置高速缓存发起对结构(例如,结构的那个部分)的立即重配置。某些实施例提供专用重配置电路,例如,该专用重配置电路比将被间接 地实现在结构中的任何解决方案快。在某些实施例中,位于一起的异常和配置 电路协作,以便在配置错误检测时对结构重新加载。
图52图示根据本公开的实施例的加速器片5200,该加速器片5200 包括处理元件的阵列以及具有重配置电路5218、5222的配置和异常处置控制 器5202、5206。在一个实施例中,当PE通过其RAS特征检测到配置错误时, 它通过其异常生成器将(例如,配置错误或重配置错误)消息发送到配置和异 常处置控制器(例如,5202或5206)。在接收到该消息时,配置和异常处置 控制器(例如,5202或5206)启动位于一起的重配置电路(例如,分别为5218 或5222)以重新加载配置状态。配置微架构继续进行并(例如,仅)重新加载 配置状态,并且在某些实施例中,仅重新加载用于PE的报告RAS错误的配置 状态。在重配置完成后,结构可恢复正常操作。为了减少等待时间,由配置和 异常处置控制器(例如,5202或5206)使用的配置状态可从配置高速缓存源 送。作为配置或重配置过程的基本情况,断言其被配置(或重配置)的配置终 止器(例如,图52中用于配置和异常处置控制器5202的配置终止器5204或 用于配置和异常处置控制器5206的配置终止器5208)可被包括在链的结尾处。
图53图示根据本公开的实施例的重配置电路5318。重配置电路 5318包括用于存储配置状态(或指向该配置状态的指针)的配置状态寄存器 5320。
6.4 用于对CSA进行的结构发起的重配置的硬件
针对CSA(例如,空间阵列)的应用的一些部分可被不频繁地运 行,或者相对于程序的其他部分可以是互斥的。为了节约面积,为了改善性能 和/或减小功率,在程序数据流图的若干不同部分之间对空间结构的多个部分进 行时间复用可能是有用的。本文中的某些实施例包括接口,通过该接口,CSA (例如,经由空间程序)可请求结构的那个部分被重编程。这可使CSA能够 根据动态控制流来动态地改变其自身。本文中的某些实施例可允许结构发起的 重配置(例如,重编程)。本文中的某些实施例提供用于从结构内触发配置的 接口的集合。在一些实施例中,PE基于程序数据流图中的某个决策发布重配 置请求。该请求可行进通过网络到我们的新配置接口,在我们的新配置接口处, 该请求触发重配置。一旦重配置完成,通知该完成的消息可以可任选地被返回。 CSA的某些实施例因此提供程序(例如,数据流图)引导的重配置能力。
图54图示根据本公开的实施例的加速器片5400,该加速器片5400 包括处理元件的阵列以及具有重配置电路5418的配置和异常处置控制器5406。 在此,结构的部分将对(重)配置的请求发布至例如配置和异常处置控制器5406 和/或重配置电路5418的配置域。该域(重)配置其自身,并且当请求已被满 足时,配置和异常处置控制器5406和/或重配置电路5418将响应发布至结构, 以向该结构通知(重)配置完成。在一个实施例中,配置和异常处置控制器5406 和/或重配置电路5418在(重)配置正在进行期间禁用通信,因此在操作期间, 程序没有一致性问题。
配置模式
通过地址配置——在该模式中,结构做出从特定地址加载配置数 据的直接请求。
通过参引配置——在该模式中,结构例如通过预定义的参引ID做 出加载新配置的请求。这可简化对要加载的代码的确定,因为该代码的位置已 被抽象。
配置多个域
CSA可包括较高级配置控制器以支持多播机制,从而(例如,经 由虚线框所指示的网络)将配置请求播到多个(例如,分布式或本地)配置控 制器。这可使单个配置请求跨结构的多个较大部分被复制,从而例如触发宽的 重配置。
6.5 异常聚合器
CSA的某些实施例也会经历异常(例如,异常条件),例如,浮 点下溢(underflow)。当这些条件发生时,特殊的处置程序可被调用,以便要 么修正程序,要么终止该程序。本文中的某些实施例提供用于在空间结构中处 置异常的系统级架构。由于某些空间结构强调面积效率,本文中的实施例在提 供通用异常机制的同时使总面积最小化。本文中的某些实施例提供用信号通知 发生在CSA(例如,空间阵列)中的异常条件的低面积手段。本文中的某些实 施例提供用于传递此类异常以及PE级异常语义的接口和信令协议。本文中的 某些实施例是专用异常处置能力,并且例如不要求由编程者进行的显式处置。
CSA异常架构的一个实施例由四个部分组成,例如在图55-图56 中示出。这些部分可被布置在层次结构中,在该层次结构中,异常从产生方流 出,并最终向上流到片级异常聚合器(例如,处置程序),该片级异常聚合器 可与例如核的异常维护器会和。这四个部分可以是:
1. PE异常生成器
2. 本地异常网络
3. 夹层异常聚合器
4. 片级异常聚合器
图55图示根据本公开的实施例的加速器片5500,该加速器片5500 包括处理元件的阵列以及耦合至片级异常聚合器5504的夹层异常聚合器5502。 图56示出根据本公开的实施例的具有异常生成器5644的处理元件5600。
PE异常生成器
处理元件5600可包括来自图10的处理元件1000,例如,类似的 编号是类似的组件,例如,本地网络1002和本地网络5602。附加的网络5613 (例如,通道)可以是异常网络。PE可实现至异常网络(例如,图56上的异 常网络5613(例如,通道))的接口。例如,图56图示此类接口的微架构, 其中,PE具有异常生成器5644(例如,发起异常有限状态机(FSM)5640以 将异常分组(例如,BOXID 5642)向外选通到异常网络上)。BOXID 5642可 以是用于本地异常网络内的异常产生实体(例如,PE或块)的唯一标识符。 当异常被检测时,异常生成器5644感测异常网络,并且当发现网络是空闲的 时向外选通BOXID。异常可由许多条件导致,这些条件例如但不限于算术错 误、对状态的失败的ECC校验等,然而,情况也可能是这样:利用支持像断 点这样的构造的想法,引入异常数据流操作。
异常的发起可以要么通过编程者提供的指令显式地发生,要么 当强化的错误条件(例如,浮点下溢)被检测到时隐式地发生。在异常发 生时,PE 5600可进入等待状态,在该等待状态中,PE 5600等待由例如该 PE 5600外部的最终异常处置程序来维护。异常分组的内容取决于特定PE 的实现方式,如下文所述。
本地异常网络
(例如,本地)异常网络将异常分组从PE 5600引导至夹层异 常网络。异常网络(例如,5613)可以是串行分组交换型网络,该串行分 组交换型网络由例如以例如用于PE的子集的环形或树形拓扑组织的(例如, 单个控制线)和一个或多个数据线组成。每一个PE在(例如,本地)异常 网络中可具有(例如,环形)站,例如,在该站处,PE可仲裁以将消息注 入到异常网络中。
需要注入异常分组的PE端点可观察它们的本地异常网络出口 点。如果控制信号指示忙碌,则PE将等待开始注入该PE的分组。如果网 络不繁忙,即,下游站没有分组要转发,则PE将继续开始注入。
网络分组可以具有可变或固定长度。每一个分组能以标识该分 组的源PE的固定长度的头部字段开始。该头部字段随后可以是包含信息的 可变数量的PE特定的字段,这些信息例如包括错误代码、数据值或其他有 用的状态信息。
夹层异常聚合器
夹层异常聚合器5504负责将本地异常网络组装为较大的分组, 并且将这些较大的分组发送到片级异常聚合器5502。夹层异常聚合器5504 可利用本地异常分组自身的唯一ID来预先考虑该本地异常分组,从而例如 确保异常消息是明确的。夹层异常聚合器5504可对接至夹层网络中的特殊 的仅用于异常的虚拟通道,从而例如确保异常无死锁。
夹层异常聚合器5504也可能能够直接维护异常的某些类别。例 如,使用在夹层网络站本地的高速缓冲,来自结构的配置请求可从夹层网 络向外分发。
片级异常聚合器
异常系统的最终级是片级异常聚合器5502。片级异常聚合器 5502负责从各种夹层级异常聚合器(例如,5504)收集异常,并将这些异 常转发到适当的维护硬件(例如,核)。由此,片级异常聚合器5502可包 括一些用于将特定的消息与处置程序例程相关联的内部表和控制器。这些 表可被直接索引或能以小型状态机进行索引,从而引导特定的异常。
像夹层异常聚合器那样,片级异常聚合器可维护一些异常请求。 例如,它可以响应于特定的异常而发起对PE结构的大部分的重新编程。
6.6 提取控制器
CSA的某些实施例包括用于从结构提取数据的(多个)提取控 制器。下文讨论如何快速实现该提取以及如何使数据提取的资源开销最小 化的实施例。数据提取可用于诸如异常处置和上下文切换之类的关键任务。 本文中的某些实施例通过引入允许具有可变以及动态可变数量的要提取的 状态的可提取结构元件(EFE)(例如,PE、网络控制器和/或切换装置) 的特征来从异构空间结构提取数据。
CSA的实施例包括分布式数据提取协议和微架构来支持此协议。CSA的某些实施例包括多个本地提取控制器(LEC),这些LEC使用控制 信号的(例如,小)集合和结构提供的网络的组合来使程序数据从它们在 空间结构中的本地区域中流出。状态元件可在每一个可提取结构元件(EFE) 处被使用以形成提取链,从而例如允许各个EFE自提取而无需全局寻址。
CSA的实施例不使用本地网络来提取程序数据。CSA的实施例 包括例如用于形成提取链的特定硬件支持(例如,提取控制器),并且不 依赖于软件(例如,以增加提取时间为代价)动态地建立这些链。CSA的 实施例不纯粹是分组交换型的,并且确实包括额外的带外控制线(例如, 控制不通过数据路径被发送,从而要求额外的周期来选通此信息并使该信息重新串行化)CSA的实施例通过固定提取排序并通过提供显式的带外控 制来减小提取等待时间(例如,减小至少一半),同时不显著地增加网络 复杂度。
CSA的实施例不将串行机制用于其中使用类JTAG协议从结构 逐位地流送数据的数据提取。CSA的实施例利用粗粒度结构方式。在某些 实施例中,将一些控制线或状态元件加到面向64位或32位的CSA结构相 对于将那些相同的控制机制加到4位或6位结构具有更低的成本。
图57图示根据本公开的实施例的加速器片5700,该加速器片 5700包括处理元件的阵列和本地提取控制器5702、5706。每一个PE、每 一个网络控制器和每一个切换装置可以是可提取结构元件(EFE),例如, 该EFE由CSA架构的实施例配置(例如,编程)。
CSA的实施例包括提供对异构空间结构的高效、分布式、低等 待时间提取的硬件。这可以根据四项技术来实现。首先,利用硬件实体(本 地提取控制器(LEC)),例如,如图57-59中所示。LEC可接受来自主 机(例如,处理器核)的命令,例如从空间阵列提取数据流,并将该数据 往回写入到虚拟存储器供由该主机检查。其次,提取数据路径可被包括, 例如,该提取数据路径与PE结构的原生宽度一样宽,并且可被覆盖在PE 结构的顶部上。第三,新控制信号可被接收到安排提取过程的PE结构中。 第四,状态元件可位于(例如,在寄存器中)跟踪相邻EFE的状态的每一 个可配置端点处,从而允许每一个EFE无需额外的控制信号来明确地输出 其状态。这四个微架构特征可允许CSA从EFE的链提取数据。为了获得低 的数据提取等待时间,某些实施例可通过将多个(例如,许多)LEC和EFE 链包括在结构中来将提取问题分区。在提取时,这些链可独立地操作以便 并行地从结构提取数据,从而例如动态地降低等待时间。作为这些组合的 结果,CSA可(例如,在几百纳秒内)执行完整的状态转储。
图58A-图58C图示根据本公开的实施例的配置数据路径网络的 本地提取控制器5802。所描绘的网络包括多个多路复用器(例如,多路复 用器5806、5808、5810),这些多路复用器可(例如,经由它们相应的控 制信号)经配置以将(例如,来自PE的)一个或多个数据路径连接在一起。 图58A图示为一些先前的操作程序配置(例如,设置)的网络5800(例如,结构)。图58B图示选通提取信号的本地提取控制器5802(例如,包括用 于发送和/或接收信号的网络接口电路5804),并且由LEC控制的所有PE 进入提取模式。提取链中的最后一个PE(或提取终止器)可主控提取通道 (例如,总线),并且根据(1)来自LEC的信号或(2)内部(例如,从 PE)产生的信号发送数据。一旦被完成,PE可设置其完成标记,,从而例 如使下一个PE能够提取其数据。图58C图示最远的PE已完成提取过程, 并且作为结果,该最远的PE已设置其一个或多个提取状态位,例如,该一 个或多个提取状态位使mux摇摆到相邻网络以使下一个PE能够开始提取 过程。被提取的PE可恢复正常操作。在一些实施例中,PE可保持禁用, 直到其他动作被采取。在这些附图中,多路复用器网络与在某些附图(例 如,图6)中示出的“切换装置”类似。
下一节描述提取网络的实施例的各种组件的操作。
本地提取控制器
图59图示根据本公开的实施例的提取控制器5902。本地提取 控制器(LEC)可以是负责接受提取命令、协调EFE的提取过程和/或将被 提取数据存储到例如虚拟存储器的硬件实体。在该能力方面,LEC可以是 专用序列化微控制器。
当LEC接收到指向结构状态将被写入的缓冲器(例如,在虚拟 存储器中)的指针以及可任选地接收到控制结构中的多少将被提取的命令 时,LEC操作可以开始。取决于LEC微架构,(例如,存储在指针寄存器 5904中的)该指针可以要么通过网络要么通过存储器系统访问来到LEC。 当LEC接收到此类指针(例如,命令)时,它继续从结构中它所负责的部 分提取状态。LEC可将该被提取的数据流送出结构而流送到由外部调用器 提供的缓冲器中。
在图57中示出用于LEC的两种不同的微架构。第一个将LEC 5702放置在存储器接口处。在这种情况下,LEC可向存储器系统做出写入 被提取的数据的直接请求。在第二种情况下,LEC 5706被放置在存储器网 络上,在存储器网络中,LCC 5706可仅间接地向存储器作出请求。在这两 种情况下,LEC的逻辑操作可以不改变。在一个实施例中,例如由(例如,OS可见的)控制状态寄存器的集合向LEC通知要从结构提取数据的期望, 该控制状态寄存器的集合将用于向各个LEC通知新命令。
额外的带外控制通道(例如,线)
在某些实施例中,提取依赖于2-8个额外的带外信号来改善配 置速度,如下文所定义。由LEC驱动的信号可被标记为LEC。由EFE(例 如,PE)驱动的信号可被标记为EFE。配置控制器5902可包括以下控制通 道,例如,LEC_EXTRACT控制通道5906、LEC_START控制通道5908、 LEC_STROBE控制通道5910和EFE_COMPLETE控制通道5912,每一者 的示例在以下表3中讨论。
表3:提取通道
Figure BDA0002412558780001251
Figure BDA0002412558780001261
一般而言,对提取的处置可以被留给特定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的网络可观察该信号,并且也调整其状态以处置该转变。 作为提取过程的基本情况,断言提取完成的提取终止器(例如,在图48中 的用于LEC 5702的提取终止器5704或用于LEC 5706的提取终止器5708)可被包括在链的结尾处。
在EFE内部,该位可用于驱动流控制就绪信号。例如,当提取 位被解除断言时,网络控制信号可被自动地箝位为防止数据流动的值,同 时在PE内,没有操作或动作将被调度。
处理高延迟路径
LEC的一个实施例可例如通过许多多路复用器且利用许多加载 以在长距离上驱动信号。因此,信号在短时钟周期内到达远端EFE可能是 困难的。在某些实施例中,提取信号处于主(例如,CSA)时钟信号的某 个分频(例如,分数)以确保提取时的数字时序规则。时钟分频可用于带 外信令协议中,并且不要求对主时钟树的任何修改。
确保提取期间一致的结构行为
由于某些提取方案是分布式的且由于程序和存储器效应具有非 确定性时序,因此结构的不同成员可在不同时间处于提取状态。当 LEC_EXTRACT被驱动时,所有网络流控制信号可被驱动为逻辑低,例如, 由此冻结结构的特定段的操作。
提取过程可以是非破坏性的。因此,一旦提取已完成,PE的集 合可认为是运行的。对提取协议的扩展可允许PE在提取后可任选地被禁用。 或者,在实施例中,在提取过程期间开始配置将具有类似效果。
单个PE提取
在一些情况下,提取单个PE可能是权宜之计。在该情况下,作 为提取过程的开始的部分,可任选的地址信号可被驱动。这可使该PE针对 将被直接启用的提取。一旦该PE已被提取,提取过程就伴随着 LEC_EXTRACT信号的降低而终止。以此方式,单个PE可例如由本地提 取控制器选择性地提取。
处置提取回压
在其中LEC将被提取的数据写入到存储器(例如,对于后处理, 例如,在软件中)的实施例中,它可能受制于有限的存储器带宽。在LEC 耗尽其缓冲容量或预期它将耗尽其缓冲容量的情况下,该LEC可停止选通 LEC_STROBE,直到缓冲问题已被解决。
注意,在某些附图(例如,图48、51、52、54、55和57中), 示意性地示出通信。在某些实施例中,那些通信可通过(例如,互连)网 络发生。
6.7 流程图
图60图示根据本公开的实施例的流程图6000。所描绘的流程 6000包括:6002:利用处理器的核的解码器将指令解码为经解码指令;6004: 利用处理器的核的执行单元执行经解码指令以执行第一操作;6006:接收 包括多个节点的数据流图的输入;6008:将数据流图覆盖到处理器的处理 元件的阵列中,并且每一个节点被表示为处理元件的阵列中的数据流操作 器;以及6010:当传入操作数集到达处理元件的阵列处时,利用处理元件 的阵列执行数据流图的第二操作。
图61图示根据本公开的实施例的流程图6100。所描绘的流程 6100包括:6102:利用处理器的核的解码器将指令解码为经解码指令;6104: 利用处理器的核的执行单元执行经解码指令以执行第一操作;6106:接收 包括多个节点的数据流图的输入;6108:将数据流图覆盖到处理器的多个 处理元件以及处理器的多个处理元件之间的互连网络中,并且每一个节点 被表示为多个处理元件中的数据流操作器;以及6110:当传入操作数集到 达多个处理元件时,利用互连网络和多个处理元件执行数据流图的第二操 作。
6.8 存储器
图62A是根据本公开的实施例的系统6200的框图,该系统6200 采用插入在存储器子系统6210与加速硬件6202之间的存储器排序电路6205。 存储器子系统6210可包括已知的存储器组件,包括与基于处理器的架构相关 联的高速缓存、存储器以及一个或多个存储器控制器。加速硬件6202可以是 由通过处理元件(PE)间网络或另一类型的组件间网络连接的轻量型处理元件 (或其他类型的处理组件)组成的粗粒度空间架构。
在一个实施例中,被视为控制数据流图的程序可通过配置PE和通 信网络而被映射到空间架构上。一般而言,PE被配置为数据流操作器,类似 于处理器中的功能单元:一旦输入操作数到达PE,某个操作发生,并且结果 被以流水线形式转发到下游PE。数据流操作器(或其他类型的操作器)可选 择逐操作器地消耗传入数据。简单操作器(像处置算术表达式的无条件求值的 那些操作)常消耗所有传入数据。然而,有时操作器维持状态(例如,在累加 中)是有用的。
PE使用专用虚拟电路进行通信,该专用虚拟电路通过静态地配置 电路交换型通信网络而形成。这些虚拟电路是流受控且完全被回压(back pressure)的,使得如果源没有数据或目的地为满,则PE将停止。在运行时, 根据数据流图实现映射算法的通过PE的数据流在本文中也被称为子程序。例 如,数据可从存储器通过加速硬件6202而流入,随后向外回到存储器。此类 架构相对于传统多核处理器可实现卓越的性能效率:与扩展存储器子系统6210 相反,以PE形式计算比较大的核更简单且更多,并且通信是直接的。然而, 存储器系统并行性帮助支持并行PE计算。如果存储器访问被串行化,则高并 行性可能不可实现。为了促进存储器访问的并行性,所公开的存储器排序电路 6205包括如将详细解释的存储器排序架构和微架构。在一个实施例中,存储器 排序电路6205是请求地址文件电路(或“RAF”)或其他存储器请求电路。
图62B是根据本公开的实施例的图62A中的系统6200的框图,但 是该系统6200采用多个存储器排序电路6205。每一个存储器排序电路6205 可充当存储器子系统6210与加速硬件6202(例如,处理元件或片的空间阵列) 的部分之间的接口。存储器子系统6210可包括多个高速缓存片12(例如,在 图62B的实施例中,高速缓存片12A、12B、12C和12D)以及某个数量的(在 该实施例中为四个)存储器排序电路6205可用于每个高速缓存片12。交叉开关6204(例如,RAF电路)可将存储器排序电路6205连接至构成每一个高速 缓存片12A、12B、12C和12D的高速缓存的区块。例如,在一个实施例中, 每一个高速缓存片中可以有八个存储器的区块。系统6200可实例化在单个管 芯上,例如,实例化为芯片上系统(SoC)。在一个实施例中,SoC包括加速 硬件6202。在替代实施例中,加速硬件6202是外部可编程芯片(诸如,FPGA 或CGRA),并且存储器排序电路6205通过输入/输出中枢等与加速硬件6202 对接。
每一个存储器排序电路6205可将读取和写入请求接受到存储器子 系统6210。来自加速硬件6202的请求到达用于发起读取或写入访问(在本文 中也称为加载或存储访问)的数据流图的每一个节点的分开的通道中的存储器 排序电路6205。也提供缓冲,使得对加载的处理将会将被请求的数据按其被请 求的顺序返回到加速硬件6202。换言之,迭代六的数据在迭代七的数据之前被 返回,以此类推。此外,注意从存储器排序电路6205到特定高速缓冲区块的 请求通道可实现为经排序通道,并且在第二请求之前离开的任何第一请求将在 该第二请求之前到达高速缓存区块。
图63是图示根据本公开的实施例的进入加速硬件6202以及离开 加速硬件6202的存储器操作的一般运行的框图6300。在加速硬件6202的顶部 外发生的操作被理解为去往以及离开存储器子系统6210的存储器而进行。注 意,作出两个加载请求,随后是对应的加载响应。当加速硬件6202执行对来 自加载响应的数据的处理时,第三加载请求和响应发生,这触发附加的加速硬 件处理。随后,加速硬件对这三个加载操作的处理的结果被传递到存储操作, 因此,最终结果被往回存储到存储器。
通过考虑该操作序列,空间阵列更自然地映射至通道可以是明显 的。此外,加速硬件6202在请求和响应通道以及可能发生的固有并行处理方 面是等待时间不敏感的。当与存储器的对接发生在与由加速硬件6202进行的 多个处理步骤分开的离散时刻时,加速硬件也可将对程序的执行从存储器子系 统6210的实现方式(图62A)解耦。例如,对存储器的加载请求以及来自于 存储器的加载响应是分开的动作,并且在不同情况下取决于存储器操作的依赖 流能以不同方式被调度。将空间结构用于例如处理指令促进了对此类加载请求 和加载响应的空间分离和分布。
图64是图示根据本公开的实施例的存储操作6401的空间依赖性 流的框图6400。参照存储操作是示例性的,因为相同的流可应用于加载操作(但 是没有传入数据),或者可应用于其他操作符(诸如,围栏)。围栏是用于存 储器子系统的、确保一类型的所有在先存储器操作(诸如,所有存储或所有加 载)已完成的排序操作。存储操作6401可接收从加速硬件6202接收的(存储 器的)地址6402和数据6404。存储操作6401还可接收传入依赖性令牌6408, 并且响应于这三项的可用性,存储操作6401可生成传出依赖性令牌6412。传 入依赖性令牌(其可以例如是程序的初始依赖性令牌)可在程序的编译器供应 的配置中提供,或者可通过执行存储器映射的输入/输出(I/O)来提供。替代 地,如果程序已经运行,则传入依赖性令牌可从加速硬件6202接收,例如, 与存储操作6401所依赖的在先存储器操作相关联。传出依赖性令牌6412可基 于正由程序后续的存储器操作要求的地址6402和数据6404来生成。
图65是根据本公开的实施例的图62A中的存储器排序电路6205 的详细框图。存储器排序电路6205可耦合至乱序存储器子系统6210,如所讨 论的,乱序存储器子系统6210可包括高速缓存12和存储器18以及(多个) 相关联的乱序存储器控制器。存储器排序电路6205可包括或可耦合至通信网 络接口20,该通信网络接口20可以是片间网络接口或片内(intra-tile)网络接 口,并且可以是电路交换型网络接口(如图所示),且因此包括电路交换型互 连。替代地或附加地,通信网络接口20可包括分组交换型互连。
存储器排序电路6205可进一步包括但不限于存储器接口6510、操 作队列6512、(多个)输入队列6516、完成队列6520、操作配置数据结构6524 以及操作管理器电路6530,该操作管理器电路6530可进一步包括调度器电路 6532和执行电路6534。在一个实施例中,存储器接口6510可以是电路交换型 的,在另一实施例中,存储器接口6510可以是分组交换型的,或者这两者可 同时存在。操作队列6512可对正为请求进行处理并因此可对应于进入输入队 列6516的地址和数据的(具有对应自变量的)存储器操作进行缓冲。
更具体地,输入队列6516可以是至少以下各项的聚合:加载地址 队列、存储地址队列、存储数据队列以及依赖性队列。当将输入队列6516实 现为被聚合时,存储器排序电路6205可提供对逻辑队列的共享,并且附加的 控制逻辑用于在逻辑上将队列分开,这些队列是存储器排序电路的各个通道。 这可使输入队列的使用最大化,但是也会要求附加的复杂度和空间供逻辑电路 管理被聚合队列的逻辑分离。替代地,如将参照图66所讨论,输入队列6516 能以分离方式来实现,其中每一个输入队列具有分开的硬件逻辑。无论是聚合的(图65)还是非聚合的(图66),为本公开目的的实现方式基本上相同, 前者使用附加的逻辑来从逻辑上将单个共享硬件队列中的队列分开。
当被共享时,输出队列6516和完成队列6520可实现为固定大小 的环形缓冲器。环形缓冲器是具有先入先出(FIFO)数据特性的循环队列的高 效实现方式。因此,这些队列可实施存储器操作正被请求所针对的程序的语义 顺序。在一个实施例中,(诸如,用于存储地址队列的)环形缓冲器可具有与 以相同速率流过相关联的队列(诸如,存储数据队列或依赖性队列)的条目相 对应的条目。以此方式,存储地址可保持与对应的存储数据相关联。
更具体地,加载地址队列可对存储器18从中检索数据的传入地址 进行缓冲。存储地址队列可对将会向其写入数据的存储器18的传入地址进行 缓冲,该数据被缓冲在存储数据队列中。依赖性队列可对与加载地址队列和存 储地址队列的地址相关联的依赖性令牌进行缓冲。表示分开的通道的每一个队 列能以固定或动态数量的条目来实现。当为固定数量时,越多的条目可用,就 可进行越高效的复杂循环处理。但是,具有过多条目花费了要实现的更多面积 和能量。在一些情况下(例如,对于聚合式架构),所公开的输入队列6516可共享队列槽。对队列中的槽的使用可静态地分配。
完成队列6520可以是用于响应于由加载操作发布的存储器命令而 对从存储器接收的数据进行缓冲的分开的队列集。完成队列6520可用于保存 已被调度但用于其的数据还未被接收到的(且因此还未完成)加载操作。因此, 完成队列6520可用于对数据和操作流重排序。
操作管理器电路6530(将参照图66至图73更详细地解释)可提 供逻辑以用于当将用于提供存储器操作的正确排序的依赖性令牌考虑在内时 调度并执行经排队的存储器操作。操作管理器6530可访问操作配置数据结构 6524以确定哪些队列被分组在一起来形成给定的存储器操作。例如,操作配置 数据结构6524可包括特定的依赖性计数器(或队列)、输入队列、输出队列 和完成队列全都分组在一起用于特定的存储器操作。由于每一个连续的存储器 操作可被指派不同的队列组,因此对不同队列的访问会跨存储器操作的子程序而交织。知晓所有这些队列,操作管理器电路6530可与操作队列6512、(多 个)输入队列6516、(多个)完成队列6520和存储器子系统6210对接,以便 最初当连续的存储器操作变得“可执行”时将存储器操作发布至存储器子系统 6210,并随后完成具有来自存储器子系统的某个确收的存储器操作。该确收可 例如是响应于加载操作命令的数据或对响应于存储操作命令而被存储在存储 器中的数据的确收。
图66是根据本公开的实施例的图62A中的存储器排序电路6205 的微架构6600的流程图。存储器子系统6210可允许由于C语言(以及其他面 向对象的程序语言)的语义而对其中存储器操作的排序是错误的程序的非法执 行。微架构6600可实施存储器操作(从存储器加载以及向存储器存储的序列) 的排序,使得加速硬件6202执行的指令的结果被适当地排序。图示许多本地 网络50以表示加速硬件6202中耦合至微架构6600的部分。
从架构的视角看,至少具有两个目的:首先,为了正确地运行总 体上顺序的代码;其次,为了在由微架构6600执行的存储器操作中获得高性 能。为了确保程序正确性,编译器以某种方式将存储操作与加载操作之间的依 赖性表达为阵列p,这将通过将进行解释的依赖性令牌来表达。为了改善性能, 微架构6600发现并且并行地发布相对于程序顺序合法的尽可能多的阵列的加 载命令。
在一个实施例中,微架构6600可包括上文中参照图65所讨论的 操作队列6521、输入队列6516、完成队列6520和操作管理器电路6530,其中 各个队列可称为通道。微架构6600可进一步包括多个依赖性令牌计数器6614 (例如,每个输入队列一个)、依赖性队列6618的集合(例如,每个输入队 列一个)、地址多路复用器6632、存储数据多路复用器6634、完成队列索引 多路复用器6636以及加载数据多路复用器6638。在一个实施例中,操作管理器电路6530可指示这些不同的多路复用器生成(将发送至存储器子系统6210) 的存储器命令6650以及从存储器子系统6210往回接收加载命令的响应,如将 要解释的那样。
如提及的那样,输入队列6516可包括加载地址队列6622、存储地 址队列6624和存储数据队列6626。(小标数字0、1、2是通道标记,并且稍 后将在图69和图72A中被引用。)在各种实施例中,这些输入队列可增殖以 包含附加通道,从而处理存储器操作处理的附加的并行性。每一个依赖性队列 6618可与输入队列6516中的一个相关联。更具体地,标记为B0的依赖性队 列6618可与加载地址队列6622相关联,并且标记为B1的依赖性队列可与存 储地址队列6624相关联。如果提供了输入队列6516的附加通道,则依赖性队 列6618可包括附加的对应通道。
在一个实施例中,完成队列6520可包括输出缓冲器6644和6646 的集合,用于从存储器子系统6210和完成队列6642接收加载数据以便对地址 和数据进行缓冲而根据由操作管理器电路6530维护的索引进行加载操作。操 作管理器电路6530可管理索引以确保加载操作的有序执行,并标识被接收到 输出缓冲器6644和6646中的、可被移动到完成队列6642中的经调度的加载 操作的数据。
更具体地,由于存储器子系统6210是乱序的,但是加速硬件6202 有序地完成操作,因此微架构6600可利用完成队列6642对存储器操作重排序。 可相对于完成队列6642执行三个不同的子操作,即,分配、入列和出列。为 了进行分配,操作管理器电路6530可将索引分配到完成队列6642中的完成队 列的按顺序的下一个槽中。操作管理器电路可将此索引提供给存储器子系统 6210,存储器子系统6210随后可知晓将用于加载操作的数据写入到其中的槽。 为了入列,存储器子系统5210可将数据作为条目写入完成队列6642(像随机存取存储器(RAM))中的经索引的按顺序的下一个槽,从而将该条目的状态 位置位为有效。为了出列,操作管理器电路6530可呈现存储在该按顺序的下 一个槽中的数据以完成加载操作,从而将该条目的状态位置位为无效。无效条 目随后可用于新的分配。
在一个实施例中,状态信号6548可以指输入队列6516、完成队列 6520、依赖性队列6618和依赖性令牌计数器6614的状态。这些状态例如可包 括输入状态、输出状态和控制状态,控制状态可以指与输入或输出相关联的依 赖性令牌的存在或缺失。输入状态可包括地址的存在或缺失,而输出状态可包 括存储值和可用的完成缓冲器槽的存在或缺失。依赖性令牌计数器6614可以 是队列的紧凑表示,并且可跟踪用于任何给定输入队列的依赖性令牌的数量。 如果依赖性令牌计数器6614饱和,则没有附加的依赖性令牌可被生成用于新的存储器操作。相应地,存储器排序电路6205会停止调度新存储器操作,直 到依赖性令牌计数器6614变成不饱和。
再参照图67,图67是根据本公开的实施例的可执行确定器电路 6700的框图。存储器排序电路6205能以若干不同种类的存储器操作(例如, 加载和存储)来建立:
ldNo[d,x]result.outN,addr.in64,order.in0,order.out0
stNo[d,x]addr.in64,data.inN,order.in0,order.out0
可执行确定器电路6700可集成为调度器电路6532的部分,并且 其可执行逻辑操作以确定给定的存储器操作是否是可执行的以及是否因此准 备好被发布至存储器。当对应于队列的存储器自变量的队列具有数据且相关联 的依赖性令牌存在时,可执行存储器操作。这些存储器自变量可包括例如(指 示输入队列6516的通道的)输入队列标识符6710、(指示完成队列6520的通 道的)输出队列标识符6720、依赖性队列标识符6730(例如,应当参考什么 依赖性队列或计数器)和操作类型指示符6740(例如,加载操作或存储操作)。
这些存储器自变量可在操作队列6512内被排队,并且用于对与来 自存储器和加速硬件6202的传入地址和数据相关联的存储器操作的发布进行 调度。(参见图68。)传入状态信号6548可与这些标识符逻辑地组合,随后 结果可(例如,通过”与”门6750)相加以输出可执行信号,例如,当存储器操 作为可执行时,该可执行信号被断言。传入状态信号6548可包括用于输入队 列标识符6710的输入状态6712、用于输出队列标识符6720的输出状态6722 以及用于依赖性队列标识符6730的控制状态6732(与依赖性令牌相关)。(例 如,存储器请求的)字段可例如被包括在上述格式中,上述格式存储用于指示 来使用危险检测硬件的一个或多个位。
为了进行加载操作,作为示例,当加载操作具有用于对完成队列 6642中的加载结果(输出状态)进行缓冲的地址(输入状态)和空间时,存储 器排序电路6205可发布加载命令。类似地,当存储操作既具有地址又具有数 据值(输入状态)时,存储器排序电路6205可发布用于存储操作的存储命令。 相应地,状态信号6548可传递这些状态信号所涉及的队列的空(或满)等级。 随后,操作类型可取决于什么地址和数据应当可用以表明逻辑是否产生可执行 信号。
为了实现依赖性排序,调度器电路6532可扩展存储器操作以包括 在示例加载和存储操作中的上述划线的依赖性令牌。控制状态6732可指示依 赖性令牌在由依赖性队列标识符6730标识的依赖性队列内是否可用,该依赖 性队列可以是依赖性队列6618(对于传入存储器操作)或依赖性令牌计数器 6614(对于完成的存储器操作)中的一个。在此构想下,依赖性存储器操作在 该存储器操作完成时要求附加的排序令牌来执行并生成附加的排序令牌,其中, 完成意味着来自存储器操作的结果的数据已变得可用于程序后续的存储器操 作。
在一个实施例中,进一步参照图66,取决于当前正在调度加载操 作还是存储操作供执行,操作管理器电路6530可指示地址多路复用器6632选 择在加载地址队列6622或存储地址队列6624中被缓冲的地址自变量。如果它 是存储操作,则操作管理器电路6530也可指示存储数据多路复用器6634从存 储数据队列6626选择对应数据。操作管理器电路6530也可指示完成队列索引 多路复用器6636检索完成队列6520内的根据队列状态和/或程序顺序经索引的 加载操作条目,从而完成加载操作。操作管理器电路6530也可指示加载数据多路复用器6638将从存储器子系统6210接收的数据选到完成队列6520中, 用于正等待完成的加载操作。以此方式,操作管理器电路6530可指示对着手 形成存储器命令6650(例如,加载命令或存储命令)或执行电路6534正等待 的用于完成存储器操作的输入的选择。
图68是根据本公开的一个实施例的执行电路6534的框图,该执 行电路6534可包括优先级编码器6806、选择电路6808,该选择电路6808生 成(多个)输出控制线6810。在一个实施例中,执行电路6534可访问已确定 为可执行的(图67)(操作队列6512中的)经排队的存储器操作。执行电路 6534也可接收调度6804A、6804B、6804C,这些调度6804A、6804B、6804C 用于已排好队且也指示为准备好发布至存储器的多个经排队的存储器操作。优 先级编码器6806因此可接收已经被调度的可执行存储器操作的标识,并且执 行某些规则(或遵循特定逻辑)以从进入的具有要首先被执行的优先级的那些 存储器操作中选择存储器操作。优先级编码器6806可输出选择器信号6807, 该选择器信号6807标识具有最高优先级且因此已被选择的经调度的存储器操 作。
优先级编码器6806例如可以是将多个二进制输入压缩为较少数量 的输出(包括可能仅是一个输出)的电路(诸如,状态机或更简单的转换器)。 优先级编码器的输出是从最高有效输出位的零开始的原始号码的二进制表示。 因此,在一个实施例中,当存储器操作0(“零”)、存储器操作一(“1”)和存 储器操作二(“2”)是可执行的且被调度时,分别对应于6804A、6804B和6804C。 优先级编码器6806可配置成用于将选择器信号6807输出至选择电路6808,该 选择器信号6807将存储器操作零指示为具有最高优先级的存储器操作。在一个实施例中,选择电路6808可以是多路复用器,并且可配置成用于响应于来 自优先级编码器6806的选择器信号(且指示对最高优先级的存储器操作的选 择)将其(例如,对存储器操作零的)选择输出到控制线6810上作为控制信 号。该控制信号可去往如参照图66所讨论的多路复用器6632、6634、6636和 /或6638以填充下一个将发布(被发送)到存储器子系统6210的存储器命令 6650。存储器命令的传输可理解为向存储器子系统6210发布存储器操作。
图69是根据本公开的实施例的逻辑和二进制两种形式的示例性加 载操作6900的框图。往回参照图67,加载操作6900的逻辑表示可包括作为输 入队列标识符6710的(对应于加载地址队列6622的)通道零(“0”)以及作 为输出队列标识符6720的(对应于输出缓冲器6644的)完成通道一(“1”)。 依赖性队列标识符6730可包括两个标识符:用于传入依赖性令牌的(对应于 依赖性队列6618中的第一个的)通道B0以及用于传出依赖性令牌的计数器C0。操作类型6740具有“加载”指示(其也可以是数值指示符)以指示存储器 操作是加载操作。在逻辑存储器操作的逻辑表示下方的是出于示例性目的的二 进制表示,例如其中加载由“00”来指示。图69中的加载操作可被扩展以包括 其他配置,诸如,存储操作(图71A)或其他类型的存储器操作(诸如,围栏)。
出于解释的目的,参照图70A-70B、71A-71B和72A-72G,将利 用简化的示例来说明由存储器排序电路6205进行的存储器排序的示例。对于 此示例,以下代码包括阵列p,该阵列p通过索引i和i+2来访问:
Figure BDA0002412558780001381
对于此示例,假设阵列p包含0、1、2、3、4、5、6,并且在循环 执行的结束时,阵列p将包含0、1、0、1、0、1、0。该代码可通过将循环展 开来变化,如图70A和图70B中所示。真实的地址依赖性由图70A中的箭头 标注,即,在每一种情况下,加载操作依赖于向相同地址的存储操作。例如, 对于此类依赖性中的第一个,向p[2]的存储(例如,写入)需要在从p[2]的加载(例如,读取)之前发生,对于此类依赖性中的第二个,向p[3]的存储需要 在从p[3]的加载之前发生,以此类推。由于编译器将是悲观型的,因此编译器 标注两个存储器操作loadp[i]与store[i+2]之间的依赖性。注意,仅在有些时候 读取和写入才确实发生冲突。微架构6600设计成在当没有至相同地址的冲突 的同时存储器操作可向前移动的情况下提取存储器级并行性。加载操作尤其是 这种情况,由于要等待在先的依赖性存储操作完成,加载操作在代码执行中暴 露等待时间。在图70B中的示例代码中,安全的重排序由展开代码左边的箭头 标注。
微架构可执行此重排序的方式参照图71A-71B和72A-72G来讨论。 注意,此方式不是尽可能最优化的,因为微架构6600可能无法每个周期将存 储器命令发送至存储器。然而,利用最少的硬件,微架构通过当操作数(例如, 对于存储的地址和数据,或对于加载的地址)和依赖性令牌可用时执行存储器 操作来支持依赖性流。
图71A是根据本公开的实施例的用于加载操作7102和存储操作 7104的示例性存储器自变量的框图。已参照图69讨论的这些或类似的存储器 自变量,并且在此将不再重复。然而,要注意,存储操作7104不具有用于输 出队列标识符的指示符,因为数据正在被输出到加速硬件6202。相反,如输入 队列标识符存储器自变量中所指示,输入队列6516的通道1中的存储地址和 通道2中的数据将被调度,以便在存储器命令中传输至存储器子系统6210,从 而完成存储操作7104。此外,依赖性队列的输入通道和输出通道两者都以计数 器来实现。由于图70A和图70B中所显示的加载操作和存储操作是互相依赖 的,因此计数器可在代码流内的加载操作与存储操作之间轮转。
图71B是图示根据本公开的实施例的、通过图66中的存储器排序 电路的微架构6600进行加载操作和存储操作(诸如,图70A中的加载操作7102 和存储操作7104)的流的框图。为了简化解释,不是所有组件都被显示,但是 可往回引用图66中显示的附加组件。指示加载操作7102的“加载”和存储操作 7104的“存储”的各个椭圆形覆盖在微架构的组件中的一些组件上,作为对队列 的各通道如何正被用作存储器操作,如何通过微架构6600被排队和排序的指 示。
图72A、72B、72C、72D、72E、72F、72G和72H是图示根据本 公开的实施例的通过图71B中的微架构的队列对图70A和图70B中的示例性 程序进行的加载操作和存储操作的功能性流的框图。每一个图可对应于由微架 构6600进行的下一处理周期。斜体的值是(进入队列的)传入值,而粗体的 值是(离开队列的)传出值。普通字体的所有其他所有值是已经存在于队列中 的保留值。
在图72A中,地址p[0]正传入加载地址队列6622,并且地址p[2] 正传入存储地址队列6624,从而开始控制流过程。注意,用于加载地址队列的 依赖性输入的计数器C0为“1”,而用于依赖性输出的计数器C1为零。相比之 下,C0的“1”对于存储操作指示依赖性出值(out value)。这指示了对于p[0] 的加载操作的传入依赖性以及对于p[2]的存储操作的传出依赖性。然而,这些 值还不是活跃的,并且将在图72B中以此方式变得活跃。
在图72B中,地址p[0]是粗体的以指示它在该周期中正传出。新 地址p[1]正传入加载地址队列,并且新地址p[3]正传入存储地址队列。完成队 列6642中的零(“0”)值位也正传入,其指示针对那个经索引条目存在的任何 数据都是无效的。如所提及的那样,计数器C0和C1的值现在被指示为传入, 并且因此现在对于该周期是活跃的。
在图72C中,传出地址p[0]现在已离开加载地址队列,并且新地 址p[2]正传入加载地址队列。并且数据(“0”)正传入地址p[0]的完成队列。有 效性位被置位为“1”以指示完成队列中的数据是有效的。此外,新地址p[4]正 传入存储地址队列。计数器C0的值被指示为传出,并且计数器C1的值被指 示为传入。C1的值“1”指示向地址p[4]的存储操作的传入依赖性。
注意,用于最新加载操作的地址p[2]依赖于首先需要由针对地址 p[2]的存储操作存储的值,其在存储地址队列的顶部。此后,用于从地址p[2] 进行的加载操作的完成队列中的经索引条目可保持被缓冲,直到来自向地址 p[2]的存储操作的数据完成(参见图72F-72H)。
在图72D中,数据(“0”)正从用于地址p[0]的完成队列传出,因 此它正被向外发送到加速硬件6202。此外,新地址p[3]正传入加载地址队列, 并且新地址p[5]正传入存储地址队列。计数器C0和C1的值保持不变。
在图72E中,用于地址p[2]的值(“0”)正传入存储数据队列,同 时新地址p[4]进入加载地址队列且新地址p[6]进入存储地址队列。计数器C0 和C1的值保持不变。
在图72F中,存储数据队列中用于地址p[2]的值(“0”)和存储地 址队列中的地址p[2]两者都是传出值。类似地,计数器C1的值被指示为传出, 而计数器C0的值(“0”)保持不变。此外,新地址p[5]正传入加载地址队列, 并且新地址p[7]正传入存储地址队列。
在图72G中,值(“0”)正传入以指示在完成队列6642中的经索 引的值是无效的。地址p[1]是粗体的以指示它正从加载地址队列传出,同时新 地址p[6]正传入加载地址队列。新地址p[8]也正传入存储地址队列。计数器C0 的值正作为“1”传入,这对应于针对地址p[6]的加载操作的传入依赖性以及针 对地址p[8]的存储操作的传出依赖性。计数器C1的值现在是“0”,并且被指示 为传出。
在图72H中,数据值“1”正传入完成队列6642,同时有效性位也作 为“1”传入,这意味着经缓冲的数据是有效的。这是完成针对地址p[2]的加载 操作所需的数据。回忆一下,该数据必须首选被存储到地址p[2],这在图72F 中发生。计数器C0的值“0”正传出,而计数器C1的值“1”正传入。此外,新地 址p[7]正传入加载地址队列,并且新地址p[9]正传入存储地址队列。
在当前实施例中,凭借用于加载操作和存储操作的“0”和“1”之间的 弹跳的(bouncing)依赖性令牌,执行图70A和图70B的代码的过程可继续进 行。这是由于p[i]与p[i+2]之间紧密的依赖性。具有较不频繁依赖性的其他代 码能以较慢速率生成依赖性令牌,并因此以较慢速率重置计数器C0和C1,从 而导致(对应于进一步语义分离的存储器操作的)较高值的令牌的生成。
图73是根据本公开的实施例的用于对加速硬件与乱序存储器子系 统之间的存储器操作进行排序的方法7300的流程图。方法7300可由包括硬件 (例如,电路、专用逻辑和/或可编程逻辑)、软件(例如,在计算机系统上可 执行以执行硬件仿真的指令)或硬件和软件的组合的系统来执行。在说明性示 例中,方法7300可由存储器排序电路6205以及该存储器排序电路6205的各 子组件执行。
更具体地,参照图73,方法7300可开始于:7310:存储器排序电 路在该存储器排序电路的操作队列中对存储器操作排队。存储器操作和控制自 变量可构成如经排队的存储器操作,其中,如先前所讨论,存储器操作和控制 自变量被映射至存储器排序电路内的某些队列。存储器排序电路可运作以将存 储器操作发布至与加速硬件相关联的存储器,从而确保这些存储器操作按程序 顺序完成。方法7300可继续进行以下步骤:7320:存储器排序电路在输入队 列的集合中从加速硬件接收与存储器操作中的第二存储器操作相关联的存储 器的地址。在一个实施例中,输入队列的集合中的加载地址队列是用于接收该 地址的通道。在另一实施例中,输入队列的集合中的存储地址队列是用于接收 该地址的通道。方法7300可继续进行以下步骤:7330:存储器排序电路从加 速硬件接收与该地址相关联的依赖性令牌,其中,该依赖性令牌指示对由存储 器操作中的第一存储器操作生成的数据的依赖性,该第一存储器操作先于第二 存储器操作。在一个实施例中,依赖性队列的通道用于接收该依赖性令牌。第 一存储器操作可以是加载操作或存储操作。
方法7300可继续进行以下步骤:7340:存储器排序电路响应于接 收到该依赖性令牌和与该依赖性令牌相关联的地址而调度第二存储器操作向 存储器的发布。例如,当加载地址队列接收用于加载操作的地址自变量的地址 且依赖性队列接收用于加载操作的控制自变量的依赖性令牌时,存储器排序电 路可将第二存储器操作的发布调度为加载操作。方法7300可继续进行以下步 骤:7350:存储器排序电路响应于第一存储器操作的完成而(例如,在命令中) 将第二存储器操作发布至存储器。例如,如果第一存储器操作是存储,则完成 可通过输入队列的集合中的存储数据队列中的数据已被写入存储器中的地址 的确收来验证。类似地,如果第一存储器操作是加载操作,则完成可通过针对 加载操作的从存储器接收到数据来验证。
7.总结
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月的英
Figure BDA0002412558780001622
64和IA-32架构软件开发者手册;并且参见2016年2月的
Figure BDA0002412558780001621
构指令集扩展编程参考)。
示例性指令格式
本文中所描述的(多条)指令的实施例能以不同的格式体现。另 外,在下文中详述示例性系统、架构和流水线。(多条)指令的实施例可在此 类系统、架构和流水线上执行,但是不限于详述的那些系统、架构和流水线。
通用向量友好指令格式
向量友好指令格式是适于向量指令(例如,存在专用于向量操作 的特定字段)的指令格式。尽管描述了其中通过向量友好指令格式支持向量和 标量操作两者的实施例,但是替代实施例仅使用通过向量友好指令格式的向量 操作。
图74A-图74B是图示根据本公开的实施例的通用向量友好指令格 式及其指令模板的框图。图74A是图示根据本公开的实施例的通用向量友好指 令格式及其A类指令模板的框图;而图74B是图示根据本公开的实施例的通 用向量友好指令格式及其B类指令模板的框图。具体地,针对通用向量友好指 令格式7400定义A类和B类指令模板,这两者都包括无存储器访问7405的 指令模板和存储器访问7420的指令模板。在向量友好指令格式的上下文中的 术语“通用”是指不束缚于任何特定指令集的指令格式。
尽管将描述其中向量友好指令格式支持以下情况的本公开的实施 例: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字节)数据元素宽度)。
图74A中的A类指令模板包括:1)在无存储器访问7405的指令 模板内,示出无存储器访问的完全舍入控制型操作7410的指令模板、以及无 存储器访问的数据变换型操作7415的指令模板;以及2)在存储器访问7420的 指令模板内,示出存储器访问的时效性7425的指令模板和存储器访问的非时 效性7430的指令模板。图74B中的B类指令模板包括:1)在无存储器访问7405 的指令模板内,示出无存储器访问的写掩码控制的部分舍入控制型操作7412 的指令模板以及无存储器访问的写掩码控制的vsize型操作7417的指令模板; 以及2)在存储器访问7420的指令模板内,示出存储器访问的写掩码控制7427 的指令模板。
通用向量友好指令格式7400包括以下列出的按照在图74A-74B 中图示的顺序的如下字段。
格式字段7440——该字段中的特定值(指令格式标识符值)唯一 地标识向量友好指令格式,并且由此标识指令在指令流中以向量友好指令格式 出现。由此,该字段对于仅具有通用向量友好指令格式的指令集是不需要的, 在这个意义上该字段是任选的。
基础操作字段7442——其内容区分不同的基础操作。
寄存器索引字段7444——其内容直接或者通过地址生成来指定源 或目的地操作数在寄存器中或者在存储器中的位置。这些字段包括足够数量的 位以从PxQ(例如,32x512、16x128、32x1024、64x1024)寄存器堆中选择N 个寄存器。尽管在一个实施例中N可多达三个源寄存器和一个目的地寄存器, 但是替代实施例可支持更多或更少的源和目的地寄存器(例如,可支持多达两 个源,其中这些源中的一个源还用作目的地;可支持多达三个源,其中这些源 中的一个源还用作目的地;可支持多达两个源和一个目的地)。
修饰符(modifier)字段7446——其内容将指定存储器访问的以 通用向量指令格式出现的指令与不指定存储器访问的以通用向量指令格式出 现的指令区分开;即在无存储器访问7405的指令模板与存储器访问7420的指 令模板之间进行区分。存储器访问操作读取和/或写入到存储器层次(在一些情 况下,使用寄存器中的值来指定源和/或目的地地址),而非存储器访问操作不 这样(例如,源和/或目的地是寄存器)。尽管在一个实施例中,该字段还在三 种不同的方式之间选择以执行存储器地址计算,但是替代实施例可支持更多、 更少或不同的方式来执行存储器地址计算。
扩充操作字段7450——其内容区分除基础操作以外还要执行各种 不同操作中的哪一个操作。该字段是针对上下文的。在本公开的一个实施例中, 该字段被分成类字段7468、α字段7452和β字段7454。扩充操作字段7450 允许在单条指令而非2条、3条或4条指令中执行多组共同的操作。
比例字段7460——其内容允许用于存储器地址生成(例如,用于 使用(2比例*索引+基址)的地址生成)的索引字段的内容的按比例缩放。
位移字段7462A——其内容用作存储器地址生成的一部分(例如, 用于使用(2比例*索引+基址+位移)的地址生成)。
位移因数字段7462B(注意,位移字段7462A直接在位移因数字 段7462B上的并置指示使用一个或另一个)——其内容用作地址生成的一部分; 它指定将按比例缩放存储器访问的尺寸(N)的位移因数——其中N是存储器 访问中的字节数量(例如,用于使用(2比例*索引+基址+按比例缩放的位移) 的地址生成)。忽略冗余的低阶位,并且因此将位移因数字段的内容乘以存储 器操作数总尺寸(N)以生成将在计算有效地址中使用的最终位移。N的值由 处理器硬件在运行时基于完整操作码字段7474(稍后在本文中描述)和数据操 纵字段7454C确定。位移字段7462A和位移因数字段7462B不用于无存储器 访问7405的指令模板和/或不同的实施例可实现这两者中的仅一个或不实现这 两者中的任一个,在这个意义上,位移字段7462A和位移因数字段7462B是 任选的。
数据元素宽度字段7464——其内容区分将使用多个数据元素宽度 中的哪一个(在一些实施例中用于所有指令;在其他实施例中只用于指令中的 一些指令)。如果支持仅一个数据元素宽度和/或使用操作码的某一方面来支持 数据元素宽度,则该字段是不需要的,在这个意义上,该字段是任选的。
写掩码字段7470——其内容逐数据元素位置地控制目的地向量操 作数中的数据元素位置是否反映基础操作和扩充操作的结果。A类指令模板支 持合并-写掩码,而B类指令模板支持合并-写掩码和归零-写掩码两者。当合并 时,向量掩码允许在执行(由基础操作和扩充操作指定的)任何操作期间保护 目的地中的任何元素集免于更新;在另一实施例中,保持其中对应掩码位具有 0的目的地的每一元素的旧值。相反,当归零时,向量掩码允许在执行(由基 础操作和扩充操作指定的)任何操作期间使目的地中的任何元素集归零;在一 个实施例中,目的地的元素在对应掩码位具有0值时被设为0。该功能的子集 是控制正被执行的操作的向量长度的能力(即,从第一个到最后一个正被修改 的元素的跨度),然而,被修改的元素不一定要是连续的。由此,写掩码字段 7470允许部分向量操作,这包括加载、存储、算术、逻辑等。尽管描述了其中 写掩码字段7470的内容选择了多个写掩码寄存器中的包含要使用的写掩码的 一个写掩码寄存器(并且由此,写掩码字段7470的内容间接地标识要执行的 掩码)的本公开的实施例,但是替代实施例替代地或附加地允许掩码写字段7470的内容直接指定要执行的掩码。
立即数字段7472——其内容允许对立即数的指定。该字段在实现 不支持立即数的通用向量友好格式中不存在且在不使用立即数的指令中不存 在,在这个意义上,该字段是任选的。
类字段7468——其内容在不同类的指令之间进行区分。参考图 74A-图74B,该字段的内容在A类和B类指令之间进行选择。在图74A-图74B 中,圆角方形用于指示特定的值存在于字段中(例如,在图74A-图74B中分 别用于类字段7468的A类7468A和B类7468B)。
A类指令模板
在A类非存储器访问7405的指令模板的情况下,α字段7452被 解释为其内容区分要执行不同扩充操作类型中的哪一种(例如,针对无存储器 访问的舍入型操作7410和无存储器访问的数据变换型操作7415的指令模板分 别指定舍入7452A.1和数据变换7452A.2)的RS字段7452A,而β字段7454 区分要执行所指定类型的操作中的哪一种。在无存储器访问7405的指令模板 中,比例字段7460、位移字段7462A和位移比例字段7462B不存在。
无存储器访问的指令模板——完全舍入控制型操作
在无存储器访问的完全舍入控制型操作7410的指令模板中,β字 段7454被解释为其(多个)内容提供静态舍入的舍入控制字段7454A。尽管 在本公开的所述实施例中舍入控制字段7454A包括抑制所有浮点异常(SAE) 字段7456和舍入操作控制字段7458,但是替代实施例可支持这两个概念,可 将这两个概念编码为同一字段,或仅具有这些概念/字段中的一个或另一个(例 如,可仅具有舍入操作控制字段7458)。
SAE字段7456——其内容区分是否禁用异常事件报告;当SAE字 段7456的内容指示启用抑制时,给定的指令不报告任何种类的浮点异常标志, 并且不唤起任何浮点异常处置程序。
舍入操作控制字段7458——其内容区分要执行一组舍入操作中的 哪一个(例如,向上舍入、向下舍入、向零舍入以及就近舍入)。由此,舍入 操作控制字段7458允许逐指令地改变舍入模式。在其中处理器包括用于指定 舍入模式的控制寄存器的本公开的一个实施例中,舍入操作控制字段7450的 内容覆盖(override)该寄存器值。
无存储器访问的指令模板-数据变换型操作
在无存储器访问的数据变换型操作7415的指令模板中,β字段 7454被解释为数据变换字段7454B,其内容区分要执行多个数据变换中的哪一 个(例如,无数据变换、混合、广播)。
在A类存储器访问7420的指令模板的情况下,α字段7452被解 释为驱逐提示字段7452B,其内容区分要使用驱逐提示中的哪一个(在图74A 中,对于存储器访问时效性7425的指令模板和存储器访问非时效性7430的指 令模板分别指定时效性的7452B.1和非时效性的7452B.2),而β字段7454被 解释为数据操纵字段7454C,其内容区分要执行多个数据操纵操作(也称为基 元(primitive))中的哪一个(例如,无操纵、广播、源的向上转换以及目的 地的向下转换)。存储器访问7420的指令模板包括比例字段7460,并任选地 包括位移字段7462A或位移比例字段7462B。
向量存储器指令使用转换支持来执行来自存储器的向量加载以及 向存储器的向量存储。如同寻常的向量指令,向量存储器指令以数据元素式的 方式从/向存储器传输数据,其中实际被传输的元素由被选为写掩码的向量掩码 的内容规定。
存储器访问的指令模板——时效性的
时效性的数据是可能足够快地被重新使用以从高速缓存操作受益 的数据。然而,这是提示,并且不同的处理器能以不同的方式实现它,包括完 全忽略该提示。
存储器访问的指令模板——非时效性的
非时效性的数据是不太可能足够快地被重新使用以从第一级高速 缓存中的高速缓存操作受益且应当被给予驱逐优先级的数据。然而,这是提示, 并且不同的处理器能以不同的方式实现它,包括完全忽略该提示。
B类指令模板
在B类指令模板的情况下,α字段7452被解释为写掩码控制(Z) 字段7452C,其内容区分由写掩码字段7470控制的写掩码应当是合并还是归 零。
在B类非存储器访问7405的指令模板的情况下,β字段7454的 一部分被解释为RL字段7457A,其内容区分要执行不同扩充操作类型中的哪 一种(例如,针对无存储器访问的写掩码控制部分舍入控制类型操作7412的 指令模板和无存储器访问的写掩码控制VSIZE型操作7417的指令模板分别指 定舍入7457A.1和向量长度(VSIZE)7457A.2),而β字段7454的其余部分 区分要执行所指定类型的操作中的哪一种。在无存储器访问7405的指令模板中,比例字段7460、位移字段7462A和位移比例字段7462B不存在。
在无存储器访问的写掩码控制部分舍入控制型操作7410的指令 模板中,β字段7454的其余部分被解释为舍入操作字段7459A,并且禁用异常 事件报告(给定的指令不报告任何种类的浮点异常标志,并且不唤起任何浮点 异常处置程序)。
舍入操作控制字段7459A——正如舍入操作控制字段7458,其内 容区分要执行一组舍入操作中的哪一个(例如,向上舍入、向下舍入、向零舍 入以及就近舍入)。由此,舍入操作控制字段7459A允许逐指令地改变舍入模 式。在其中处理器包括用于指定舍入模式的控制寄存器的本公开的一个实施例 中,舍入操作控制字段7450的内容覆盖该寄存器值。
在无存储器访问的写掩码控制VSIZE型操作7417的指令模板中, β字段7454的其余部分被解释为向量长度字段7459B,其内容区分要执行多个 数据向量长度中的哪一个(例如,128字节、256字节或512字节)。
在B类存储器访问7420的指令模板的情况下,β字段7454的一 部分被解释为广播字段7457B,其内容区分是否要执行广播型数据操纵操作, 而β字段7454的其余部分被解释为向量长度字段7459B。存储器访问7420的 指令模板包括比例字段7760,并任选地包括位移字段7462A或位移比例字段 7462B。
针对通用向量友好指令格式7400,示出完整操作码字段7474包 括格式字段7440、基础操作字段7442和数据元素宽度字段7464。尽管示出了 其中完整操作码字段7474包括所有这些字段的一个实施例,但是在不支持所 有这些字段的实施例中,完整操作码字段7474包括少于所有的这些字段。完 整操作码字段7474提供操作代码(操作码)。
扩充操作字段7450、数据元素宽度字段7464和写掩码字段7470 允许逐指令地以通用向量友好指令格式指定这些特征。
写掩码字段和数据元素宽度字段的组合创建各种类型的指令,因 为这些指令允许基于不同的数据元素宽度应用该掩码。
在A类和B类内出现的各种指令模板在不同的情形下是有益的。 在本公开的一些实施例中,不同处理器或处理器内的不同核可支持仅A类、仅 B类、或者可支持这两类。举例而言,旨在用于通用计算的高性能通用乱序核 可仅支持B类,旨在主要用于图形和/或科学(吞吐量)计算的核可仅支持A 类,并且旨在用于通用计算和图形和/或科学(吞吐量)计算两者的核可支持A 类和B类两者(当然,具有来自这两类的模板和指令的一些混合、但是并非来 自这两类的所有模板和指令的核在本公开的范围内)。同样,单个处理器可包 括多个核,这多个核全部都支持相同的类,或者其中不同的核支持不同的类。 举例而言,在具有单独的图形核和通用核的处理器中,图形核中的旨在主要用 于图形和/或科学计算的一个核可仅支持A类,而通用核中的一个或多个可以 是具有旨在用于通用计算的仅支持B类的乱序执行和寄存器重命名的高性能 通用核。不具有单独的图形核的另一处理器可包括既支持A类又支持B类的 一个或多个通用有序或乱序核。当然,在本公开的不同实施例中,来自一类的 特征也可在其他类中实现。将使以高级语言编写的程序成为(例如,及时编译 或静态编译)各种不同的可执行形式,这些可执行形式包括:1)仅具有由用于 执行的目标处理器支持的(多个)类的指令的形式;或者2)具有替代例程并具 有控制流代码的形式,该替代例程使用所有类的指令的不同组合来编写,该控 制流代码选择这些例程以基于由当前正在执行代码的处理器支持的指令来执 行。
示例性专用向量友好指令格式
图75A是图示根据本公开的实施例的示例性专用向量友好指令格 式的框图。图75A示出专用向量友好指令格式7500,其指定各字段的位置、 尺寸、解释和次序、以及那些字段中的一些字段的值,在这个意义上,该专用 向量友好指令格式750是专用的。专用向量友好指令格式7500可用于扩展x86 指令集,并且由此字段中的一些字段与如在现有的x86指令集及其扩展(例如, AVX)中所使用的那些字段类似或相同。该格式保持与具有扩展的现有x86指 令集的前缀编码字段、实操作码字节字段、MOD R/M字段、SIB字段、位移 字段和立即数字段一致。图示来自图74A-图74B的字段,来自图75A的字段 映射到来自图74A-图74B的字段。
应当理解,虽然出于说明的目的在通用向量友好指令格式7400的 上下文中参考专用向量友好指令格式7500描述了本公开的实施例,但是本公 开不限于专用向量友好指令格式7500,除非另有声明。例如,通用向量友好指 令格式7400构想了各种字段的各种可能的尺寸,而专用向量友好指令格式 7500示出为具有特定尺寸的字段。作为具体示例,尽管在专用向量友好指令格 式7500中数据元素宽度字段7464被图示为一位字段,但是本公开不限于此(即, 通用向量友好指令格式7400构想数据元素宽度字段7464的其他尺寸)。
通用向量友好指令格式7400包括以下列出的按照图75A中图示 的顺序的如下字段。
EVEX前缀(字节0-3)7502——以四字节形式进行编码。
格式字段7440(EVEX字节0,位[7:0])——第一字节(EVEX 字节0)是格式字段7440,并且它包含0x62(在本公开的一个实施例中,为用 于区分向量友好指令格式的唯一值)。
第二-第四字节(EVEX字节1-3)包括提供专用能力的多个位字 段。
REX字段7505(EVEX字节1,位[7-5])——由EVEX.R位字段 (EVEX字节1,位[7]–R)、EVEX.X位字段(EVEX字节1,位[6]–X)以及 (7457BEX字节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’字段7410——这是REX’字段7410的第一部分,并且是用于 对扩展的32个寄存器集合的较高16个或较低16个寄存器进行编码的EVEX.R’ 位字段(EVEX字节1,位[4]–R’)。在本公开的一个实施例中,该位与以下 指示的其他位一起以位反转的格式存储以(在公知x86的32位模式下)与 BOUND指令进行区分,该BOUND指令的实操作码字节是62,但是在MOD R/M字段(在下文中描述)中不接受MOD字段中的值11;本公开的替代实施 例不以反转的格式存储该指示的位以及以下其他指示的位。值1用于对较低16 个寄存器进行编码。换句话说,通过组合EVEX.R’、EVEX.R以及来自其他字 段的其他RRR来形成R’Rrrr。
操作码映射字段7515(EVEX字节1,位[3:0]–mmmm)——其内 容对隐含的前导操作码字节(0F、0F 38或0F 3)进行编码。
数据元素宽度字段7464(EVEX字节2,位[7]–W)——由记号 EVEX.W表示。EVEX.W用于定义数据类型(32位数据元素或64位数据元素) 的粒度(尺寸)。
EVEX.vvvv 7520(EVEX字节2,位[6:3]-vvvv)——EVEX.vvvv 的作用可包括如下:1)EVEX.vvvv对以反转(1补码)形式指定的第一源寄存 器操作数进行编码,并且对具有两个或更多个源操作数的指令有效;2) EVEX.vvvv对针对特定向量位移以1补码的形式指定的目的地寄存器操作数进 行编码;或者3)EVEX.vvvv不对任何操作数进行编码,该字段被预留,并且 应当包含1111b。由此,EVEX.vvvv字段7520对以反转(1补码)的形式存储 的第一源寄存器指定符的4个低阶位进行编码。取决于该指令,额外不同的 EVEX位字段用于将指定符尺寸扩展到32个寄存器。
EVEX.U 7468类字段(EVEX字节2,位[2]-U)——如果EVEX.U =0,则它指示A类或EVEX.U0;如果EVEX.U=1,则它指示B类或EVEX.U1。
前缀编码字段7525(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前缀编码,并且由 此不需要扩展。
α字段7452(EVEX字节3,位[7]–EH,也称为EVEX.EH、EVEX.rs、 EVEX.RL、EVEX.写掩码控制、以及EVEX.N;也以α图示)——如先前所述, 该字段是针对上下文的。
β字段7454(EVEX字节3,位[6:4]-SSS,也称为EVEX.s2-0、 EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB,还以βββ图示)——如前所 述,此字段是针对上下文的。
REX’字段7410——这是REX’字段的其余部分,并且是可用于对 扩展的32个寄存器集合的较高16个或较低16个寄存器进行编码的EVEX.V’ 位字段(EVEX字节3,位[3]–V’)。该位以位反转的格式存储。值1用于对 较低16个寄存器进行编码。换句话说,通过组合EVEX.V’、EVEX.vvvv来形 成V’VVVV。
写掩码字段7470(EVEX字节3,位[2:0]-kkk)——其内容指定 写掩码寄存器中的寄存器的索引,如先前所述。在本公开的一个实施例中,特 定值EVEX.kkk=000具有暗示没有写掩码用于特定指令的特殊行为(这能以各 种方式实现,包括使用硬连线到所有对象的写掩码或绕过掩码硬件的硬件来实 现)。
实操作码字段7530(字节4)还被称为操作码字节。操作码的一 部分在该字段中被指定。
MOD R/M字段7540(字节5)包括MOD字段7542、Reg字段7544 和R/M字段7546。如先前所述的,MOD字段7542的内容将存储器访问操作 和非存储器访问操作区分开。Reg字段7544的作用可被归结为两种情形:对 目的地寄存器操作数或源寄存器操作数进行编码;或者被视为操作码扩展,并 且不用于对任何指令操作数进行编码。R/M字段7546的作用可包括如下:对 引用存储器地址的指令操作数进行编码;或者对目的地寄存器操作数或源寄存器操作数进行编码。
比例、索引、基址(SIB)字节(字节6)——如先前所述的,比 例字段7450的内容用于存储器地址生成。SIB.xxx 7554和SIB.bbb 7556——先 前已经针对寄存器索引Xxxx和Bbbb提及了这些字段的内容。
位移字段7462A(字节7-10)——当MOD字段7542包含10时, 字节7-10是位移字段7462A,并且它与传统32位位移(disp32)一样地工作, 并且以字节粒度工作。
位移因数字段7462B(字节7)——当MOD字段7542包含01时, 字节7是位移因数字段7462B。该字段的位置与以字节粒度工作的传统x86指 令集8位位移(disp8)的位置相同。由于disp8是符号扩展的,因此它仅能在 -128和127字节偏移之间寻址;在64字节高速缓存行的方面,disp8使用可被 设为仅四个真正有用的值-128、-64、0和64的8位;由于常常需要更大的范 围,所以使用disp32;然而,disp32需要4个字节。与disp8和disp32对比, 位移因数字段7462B是disp8的重新解释;当使用位移因数字段7462B时,通 过将位移因数字段的内容乘以存储器操作数访问的尺寸(N)来确定实际位移。 该类型的位移被称为disp8*N。这减小了平均指令长度(单个字节用于位移, 但具有大得多的范围)。此类经压缩的位移基于有效位移是存储器访问的粒度 的倍数的假设,并且由此地址偏移的冗余低阶位不需要被编码。换句话说,位 移因数字段7462B替代传统x86指令集8位位移。由此,位移因数字段7462B 以与x86指令集8位位移相同的方式被编码(因此,在ModRM/SIB编码规则 中没有变化),唯一的不同在于,将disp8超载至disp8*N。换句话说,在编 码规则或编码长度方面没有变化,而仅在有硬件对位移值的解释方面有变化 (这需要将位移按比例缩放存储器操作数的尺寸以获得字节式地址偏移)。立 即数字段7472如先前所述地操作。
完整操作码字段
图75B是图示根据本公开的一个实施例的构成完整操作码字段 7474的具有专用向量友好指令格式7500的字段的框图。具体地,完整操作码 字段7474包括格式字段7440、基础操作字段7442和数据元素宽度(W)字段 7464。基础操作字段7442包括前缀编码字段7525、操作码映射字段7515和实 操作码字段7530。
寄存器索引字段
图75C是图示根据本公开的一个实施例的构成寄存器索引字段 7444的具有专用向量友好指令格式7500的字段的框图。具体地,寄存器索引 字段7444包括REX字段7505、REX’字段7510、MODR/M.reg字段7544、 MODR/M.r/m字段7546、VVVV字段7520、xxx字段7554和bbb字段7556。
扩充操作字段
图75D是图示根据本公开的一个实施例的构成扩充操作字段7450 的具有专用向量友好指令格式7500的字段的框图。当类(U)字段7468包含 0时,它表明EVEX.U0(A类7468A);当它包含1时,它表明EVEX.U1(B 类7468B)。当U=0且MOD字段7542包含11(表明无存储器访问操作)时, α字段7452(EVEX字节3,位[7]–EH)被解释为rs字段7452A。当rs字段7452A包含1(舍入7452A.1)时,β字段7454(EVEX字节3,位[6:4]–SSS) 被解释为舍入控制字段7454A。舍入控制字段7454A包括一位SAE字段7456 和两位舍入操作字段7458。当rs字段7452A包含0(数据变换7452A.2)时, β字段7454(EVEX字节3,位[6:4]–SSS)被解释为三位数据变换字段7454B。 当U=0且MOD字段7442包含00、01或10(表明存储器访问操作)时,α字段7452(EVEX字节3,位[7]–EH)被解释为驱逐提示(EH)字段7452B,并 且β字段7454(EVEX字节3,位[6:4]–SSS)被解释为三位数据操纵字段7454C。
当U=1时,α字段7452(EVEX字节3,位[7]–EH)被解释为写 掩码控制(Z)字段7452C。当U=1且MOD字段7542包含11(表明无存储 器访问操作)时,β字段7454的一部分(EVEX字节3,位[4]–S0)被解释为RL字段7457A;当它包含1(舍入7457A.1)时,β字段7454的其余部分(EVEX 字节3,位[6-5]–S2-1)被解释为舍入操作字段7459A,而当RL字段7457A包含0(VSIZE 7457.A2)时,β字段7454的其余部分(EVEX字节3,位[6-5]-S2-1) 被解释为向量长度字段7459B(EVEX字节3,位[6-5]–L1-0)。当U=1且MOD 字段7542包含00、01或10(表明存储器访问操作)时,β字段7454(EVEX 字节3,位[6:4]–SSS)被解释为向量长度字段7459B(EVEX字节3,位[6-5]–L1-0) 和广播字段7457B(EVEX字节3,位[4]–B)。
示例性寄存器架构
图76是根据本公开的一个实施例的寄存器架构7600的框图。在 所图示的实施例中,有32个512位宽的向量寄存器7610;这些寄存器被引用 为zmm0到zmm31。较低的16个zmm寄存器的较低阶256个位覆盖(overlay) 在寄存器ymm0-16上。较低的16个zmm寄存器的较低阶128个位(ymm寄 存器的较低阶128个位)覆盖在寄存器xmm0-15上。专用向量友好指令格式 7500对这些被覆盖的寄存器堆操作,如在以下表格中所图示。
Figure BDA0002412558780001751
换句话说,向量长度字段7459B在最大长度与一个或多个其他较 短长度之间进行选择,其中每一个此类较短长度是前一长度的一半,并且不具 有向量长度字段7459B的指令模板在最大向量长度上操作。此外,在一个实施 例中,专用向量友好指令格式7500的B类指令模板对紧缩或标量单/双精度浮 点数据以及紧缩或标量整数数据操作。标量操作是对zmm/ymm/xmm寄存器中 的最低阶数据元素位置执行的操作;取决于实施例,较高阶数据元素位置要么 保持与在指令之前相同,要么归零。
写掩码寄存器7615——在所图示的实施例中,存在8个写掩码寄 存器(k0至k7),每一写掩码寄存器的尺寸是64位。在替代实施例中,写掩 码寄存器7615的尺寸是16位。如先前所述,在本公开的一个实施例中,向量 掩码寄存器k0无法用作写掩码;当将正常指示k0的编码用作写掩码时,它选 择硬连线的写掩码0xFFFF,从而有效地禁止写掩码用于那条指令。
通用寄存器7625——在所示出的实施例中,有十六个64位通用 寄存器,这些寄存器与现有的x86寻址模式一起使用以对存储器操作数寻址。 这些寄存器通过名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP以及 R8到R15来引用。
标量浮点栈寄存器堆(x87栈)7645,在其上面重叠了MMX紧 缩整数平坦寄存器堆7650——在所图示的实施例中,x87栈是用于使用x87指 令集扩展来对32/64/80位浮点数据执行标量浮点操作的八元素栈;而使用 MMX寄存器来对64位紧缩整数数据执行操作,以及为在MMX与XMM寄存 器之间执行的一些操作保存操作数。
本公开的替代实施例可以使用更宽的或更窄的寄存器。另外,本 公开的替代实施例可以使用更多、更少或不同的寄存器堆和寄存器。
示例性核架构、处理器和计算机架构
处理器核能以不同方式、出于不同的目的、在不同的处理器中实 现。例如,此类核的实现可以包括:1)旨在用于通用计算的通用有序核;2) 旨在用于通用计算的高性能通用乱序核;3)旨在主要用于图形和/或科学(吞 吐量)计算的专用核。不同处理器的实现可包括:1)CPU,其包括旨在用于 通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用 乱序核;以及2)协处理器,其包括旨在主要用于图形和/或科学(吞吐量)的 一个或多个专用核。此类不同的处理器导致不同的计算机系统架构,这些计算 机系统架构可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相 同的封装中但在分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理 器(在该情况下,此类协处理器有时被称为专用逻辑或被称为专用核,该专用 逻辑诸如,集成图形和/或科学(吞吐量)逻辑);以及4)芯片上系统,其可 以将所描述的CPU(有时被称为(多个)应用核或(多个)应用处理器)、以 上描述的协处理器和附加功能包括在同一管芯上。接着描述示例性核架构,随 后描述示例性处理器和计算机架构。
示例性核架构
有序和乱序核框图
图77A是图示根据本公开的各实施例的示例性有序流水线和示例 性的寄存器重命名的乱序发布/执行流水线的框图。图77B是示出根据本公开 的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄 存器重命名的乱序发布/执行架构核的框图。图77A-图77B中的实线框图示有 序流水线和有序核,而虚线框的任选增加图示寄存器重命名的、乱序发布/执行 流水线和核。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图77A中,处理器流水线7700包括取出级7702、长度解码级 7704、解码级7706、分配级7708、重命名级7710、调度(也被称为指派或发 布)级7712、寄存器读取/存储器读取级7714、执行级7716、写回/存储器写 入级7718、异常处置级7722和提交级7724。
图77B示出处理器核7790,该处理器核7790包括前端单元7730, 该前端单元7730耦合到执行引擎单元7750,并且前端单元7730和执行引擎单 元7750两者都耦合到存储器单元7770。核7790可以是精简指令集计算(RISC) 核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代的 核类型。作为又一选项,核7790可以是专用核,诸如例如,网络或通信核、 压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核,等等。
前端单元7730包括分支预测单元7732,该分支预测单元7732耦 合到指令高速缓存单元7734,该指令高速缓存单元7734耦合到指令转换后备 缓冲器(TLB)7736,该指令转换后备缓冲器7736耦合到指令取出单元7738, 该指令取出单元7738耦合到解码单元7740。解码单元7740(或解码器或解码 单元)可对指令(例如,宏指令)解码,并且生成从原始指令解码出的、或以 其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进 入点、微指令、其他指令、或其他控制信号作为输出。解码单元7740可使用 各种不同的机制来实现。合适机制的示例包括但不限于,查找表、硬件实现、 可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中, 核7790包括存储用于某些宏指令的微代码的微代码ROM或其他介质(例如, 在解码单元7740中,或以其他方式在前端单元7730内)。解码单元7740耦 合到执行引擎单元7750中的重命名/分配器单元7752。
执行引擎单元7750包括重命名/分配器单元7752,该重命名/分配 器单元7752耦合到引退单元7754和一个或多个调度器单元的集合7756。(多 个)调度器单元7756表示任何数量的不同调度器,包括预留站、中央指令窗 等。(多个)调度器单元7756耦合到(多个)物理寄存器堆单元7758。(多 个)物理寄存器堆单元7758中的每一个物理寄存器堆单元表示一个或多个物 理寄存器堆,其中不同的物理寄存器堆存储一种或多种不同的数据类型,诸如, 标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点,状态(例 如,作为要执行的下一条指令的地址的指令指针)等等。在一个实施例中,(多 个)物理寄存器堆单元7758包括向量寄存器单元、写掩码寄存器单元和标量 寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器和通 用寄存器。(多个)物理寄存器堆单元7758由引退单元7754重叠,以图示可 实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器 和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器、(多 个)引退寄存器堆;使用寄存器映射和寄存器池,等等)。引退单元7754和 (多个)物理寄存器堆单元7758耦合到(多个)执行集群7760。(多个)执 行集群7760包括一个或多个执行单元的集合7762以及一个或多个存储器访问 单元的集合7764。执行单元7762可执行各种操作(例如,移位、加法、减法、 乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整 数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集合的 多个执行单元,但是其他实施例可包括仅一个执行单元或全都执行所有功能的 多个执行单元。(多个)调度器单元7756、(多个)物理寄存器堆单元7758 和(多个)执行集群7760示出为可能有多个,因为某些实施例为某些类型的 数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧 缩浮点/向量整数/向量浮点流水线,和/或各自具有其自身的调度器单元、(多 个)物理寄存器堆单元和/或执行集群的存储器访问流水线——并且在分开的存 储器访问流水线的情况下,实现其中仅该流水线的执行集群具有(多个)存储 器访问单元7764的某些实施例)。还应当理解,在使用分开的流水线的情况 下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是 有序的。
存储器访问单元的集合7764耦合到存储器单元7770,该存储器单 元7770包括数据TLB单元7772,该数据TLB单元7772耦合到数据高速缓存 单元7774,该数据高速缓存单元7774耦合到第二级(L2)高速缓存单元7776。 在一个示例性实施例中,存储器访问单元7764可包括加载单元、存储地址单 元和存储数据单元,其中的每一个均耦合到存储器单元7770中的数据TLB单 元7772。指令高速缓存单元7734还耦合到存储器单元7770中的第二级(L2)高速缓存单元7776。L2高速缓存单元7776耦合到一个或多个其他级别的高速 缓存,并最终耦合到主存储器。
作为示例,示例性寄存器重命名的乱序发布/执行核架构可如下所 述地实现流水线7700:1)指令取出7738执行取出级7702和长度解码级7704; 2)解码单元7740执行解码级7706;3)重命名/分配器单元7752执行分配级7708 和重命名级7710;4)(多个)调度器单元7756执行调度级7712;5)(多个) 物理寄存器堆单元7758和存储器单元7770执行寄存器读取/存储器读取级 7714;执行集群7760执行执行级7716;6)存储器单元7770和(多个)物理寄 存器堆单元7758执行写回/存储器写入级7718;7)各单元可牵涉到异常处置级 7722;以及8)引退单元7754和(多个)物理寄存器堆单元7758执行提交级 7724。
核7790可支持一个或多个指令集(例如,x86指令集(具有已与 较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司 的MIPS指令集;加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集 (具有诸如NEON的任选的附加扩展)),其中包括本文中描述的(多条)指 令。在一个实施例中,核7790包括用于支持紧缩数据指令集扩展(例如,AVX1、 AVX2)的逻辑,由此允许使用紧缩数据来执行由许多多媒体应用使用的操作。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或 线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多 线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中 的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸 如
Figure BDA0002412558780001801
超线程化技术中的同时多线程化)。
尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解, 可以在有序架构中使用寄存器重命名。尽管所图示的处理器的实施例还包括分 开的指令和数据高速缓存单元7734/7774以及共享的L2高速缓存单元7776, 但是替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如, 第一级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,该 系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者, 所有高速缓存都可以在核和/或处理器的外部。
具体的示例性有序核架构
图78A-图78B图示更具体的示例性有序核架构的框图,该核将是 芯片中的若干逻辑块(包括相同类型和/或不同类型的其他核)中的一个逻辑块。 取决于应用,逻辑块通过高带宽互连网络(例如,环形网络)与一些固定的功 能逻辑、存储器I/O接口和其他必要的I/O逻辑进行通信。
图78A是根据本公开的实施例的单个处理器核以及它至管芯上互 连网络7802的连接及其第二级(L2)高速缓存的本地子集7804的框图。在一个 实施例中,指令解码单元7800支持具有紧缩数据指令集扩展的x86指令集。 L1高速缓存7806允许对进入标量和向量单元中的、对高速缓存存储器的低等 待时间访问。尽管在一个实施例中(为了简化设计),标量单元7808和向量单元 7810使用分开的寄存器集合(分别为标量寄存器7812和向量寄存器7814),并 且在这些寄存器之间传输的数据被写入到存储器,并随后从第一级(L1)高速缓 存7806读回,但是本公开的替代实施例可以使用不同的方法(例如,使用单个 寄存器集合或包括允许数据在这两个寄存器堆之间传输而无需被写入和读回 的通信路径)。
L2高速缓存的本地子集7804是全局L2高速缓存的一部分,该全 局L2高速缓存被划分成多个分开的本地子集,每个处理器核一个本地子集。 每个处理器核具有到其自身的L2高速缓存的本地子集7804的直接访问路径。 由处理器核读取的数据被存储在其L2高速缓存子集7804中,并且可以与其他 处理器核访问其自身的本地L2高速缓存子集并行地被快速访问。由处理器核 写入的数据被存储在其自身的L2高速缓存子集7804中,并在必要的情况下从 其他子集转储清除。环形网络确保共享数据的一致性。环形网络是双向的,以 允许诸如处理器核、L2高速缓存和其他逻辑块之类的代理在芯片内彼此通信。 每个环形数据路径为每个方向1012位宽。
图78B是根据本公开的实施例的图78A中的处理器核的一部分的 展开图。图78B包括L1高速缓存7804的L1数据高速缓存7806A部分,以及 关于向量单元7810和向量寄存器7814的更多细节。具体地,向量单元7810 是16宽向量处理单元(VPU)(见16宽ALU 7828),该单元执行整数、单精度浮 点以及双精度浮点指令中的一个或多个。该VPU通过混合单元7820支持对寄 存器输入的混合,通过数值转换单元7822A-B支持数值转换,并且通过复制单 元7824支持对存储器输入的复制。写掩码寄存器7826允许掩蔽所得的向量写 入。
图79是根据本公开的实施例的可具有多于一个的核、可具有集成 存储器控制器、以及可具有集成图形器件的处理器7900的框图。图79中的实 线框图示具有单个核7902A、系统代理7910、一个或多个总线控制器单元的集 合7916的处理器7900,而虚线框的任选增加图示具有多个核7902A-N、系统 代理单元7910中的一个或多个集成存储器控制器单元的集合7914以及专用逻 辑7908的替代处理器7900。
因此,处理器7900的不同实现可包括:1)CPU,其中专用逻辑 7908是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且 核7902A-N是一个或多个通用核(例如,通用有序核、通用乱序核、这两者的 组合);2)协处理器,其中核7902A-N是旨在主要用于图形和/或科学(吞吐 量)的大量专用核;以及3)协处理器,其中核7902A-N是大量通用有序核。 因此,处理器7900可以是通用处理器、协处理器或专用处理器,诸如例如, 网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、 高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、嵌入式处理 器,等等。该处理器可以被实现在一个或多个芯片上。处理器7900可以是一 个或多个基板的一部分,和/或可使用多种工艺技术(诸如例如,BiCMOS、 CMOS、或NMOS)中的任何技术被实现在一个或多个基板上。
存储器层次结构包括核内的一个或多个级别的高速缓存、一个或 多个共享高速缓存单元的集合7906、以及耦合到集成存储器控制器单元的集合 7914的外部存储器(未示出)。共享高速缓存单元的集合7906可包括一个或 多个中间级别的高速缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4) 或其他级别的高速缓存、末级高速缓存(LLC)和/或以上各项的组合。虽然在 一个实施例中,基于环的互连单元7912将集成图形逻辑7908、共享高速缓存 单元的集合7906以及系统代理单元7910/(多个)集成存储器控制器单元7914 互连,但是替代实施例可使用任何数量的公知技术来互连此类单元。在一个实 施例中,在一个或多个高速缓存单元7906与核7902A-N之间维持一致性。
在一些实施例中,一个或多个核7902A-N能够实现多线程化。系 统代理7910包括协调和操作核7902A-N的那些部件。系统代理单元7910可包 括例如功率控制单元(PCU)和显示单元。PCU可以是对核7902A-N以及集 成图形逻辑7908的功率状态进行调节所需的逻辑和部件,或可包括这些逻辑 和部件。显示单元用于驱动一个或多个外部连接的显示器。
核7902A-N在架构指令集方面可以是同构的或异构的;即,核 7902A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够 执行该指令集的仅仅子集或不同的指令集。
示例性计算机架构
图80-83是示例性计算机架构的框图。本领域中已知的对膝上型 设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、 网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、 视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备 以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含 如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
现在参考图80,所示出的是根据本公开一个实施例的系统8000 的框图。系统8000可以包括一个或多个处理器8010、8015,这些处理器耦合 到控制器中枢8020。在一个实施例中,控制器中枢8020包括图形存储器控制 器中枢(GMCH)8090和输入/输出中枢(IOH)8050(其可以在分开的芯片 上);GMCH 8090包括存储器和图形控制器,存储器8040和协处理器8045 耦合到该存储器和图形控制器;IOH 8050将输入/输出(I/O)设备8060耦合 到GMCH 8090。或者,存储器和图形控制器中的一个或这两者被集成在(如 本文中所描述的)处理器内,存储器8040和协处理器8045直接耦合到处理器 8010,并且控制器中枢8020与IOH 8050处于单个芯片中。存储器8040可包 括CSA软件模块8040A,其例如用于存储代码,该代码当被执行时使处理器 执行本公开的任何方法。
附加的处理器8015的任选性在图80中通过虚线来表示。每一处 理器8010、8015可包括本文中描述的处理核中的一个或多个,并且可以是处 理器7900的某一版本。
存储器8040可以是例如动态随机存取存储器(DRAM)、相变存 储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢8020经由 诸如前端总线(FSB)之类的多分支总线、诸如快速路径互连(QPI)之类的 点对点接口、或者类似的连接8095来与(多个)处理器8010、8015进行通信。
在一个实施例中,协处理器8045是专用处理器,诸如例如,高吞 吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌 入式处理器,等等。在一个实施例中,控制器中枢8020可以包括集成图形加 速器。
在物理资源8010、8015之间可以存在包括架构、微架构、热、功 耗特性等一系列品质度量方面的各种差异。
在一个实施例中,处理器8010执行控制一般类型的数据处理操作 的指令。嵌入在这些指令内的可以是协处理器指令。处理器8010将这些协处 理器指令识别为具有应当由附连的协处理器8045执行的类型。因此,处理器 8010在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器 指令的控制信号)发布到协处理器8045。(多个)协处理器8045接受并执行 所接收的协处理器指令。
现在参见图81,所示出的是根据本发明公开的实施例的第一更具 体的示例性系统8100的框图。如图81中所示,多处理器系统8100是点对点 互连系统,并且包括经由点对点互连8150耦合的第一处理器8170和第二处理 器8180。处理器8170和8180中的每一个都可以是处理器7900的某一版本。 在本发明公开的一个实施例中,处理器8170和8180分别是处理器8010和8015, 而协处理器8138是协处理器8045。在另一实施例中,处理器8170和8180分 别是处理器8010和协处理器8045。
处理器8170和8180示出为分别包括集成存储器控制器(IMC) 单元8172和8182。处理器8170还包括作为其总线控制器单元的一部分的点对 点(P-P)接口8176和8178;类似地,第二处理器8180包括P-P接口8186和 8188。处理器8170、8180可以经由使用点对点(P-P)接口电路8178、8188的 P-P接口8150来交换信息。如图81中所示,IMC 8172和8182将处理器耦合 到相应的存储器,即存储器8132和存储器8134,这些存储器可以是本地附连 到相应处理器的主存储器的部分。
处理器8170、8180可各自经由使用点对点接口电路8176、8194、 8186、8198的各个P-P接口8152、8154来与芯片组8190交换信息。芯片组 8190可以任选地经由高性能接口8139来与协处理器8138交换信息。在一个实 施例中,协处理器8138是专用处理器,诸如例如,高吞吐量MIC处理器、网 络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享高速缓存(未示出)可被包括在任一处理器中,或在这两个 处理器的外部但经由P-P互连与这些处理器连接,使得如果处理器被置于低功 率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在共享高速缓 存中。
芯片组8190可以经由接口8196耦合到第一总线8116。在一个实 施例中,第一总线8116可以是外围部件互连(PCI)总线或诸如PCI快速总线 或另一第三代I/O互连总线之类的总线,但是本发明公开的范围不限于此。
如图81中所示,各种I/O设备8114可连同总线桥8118一起耦合 到第一总线8116,该总线桥8118将第一总线8116耦合到第二总线8120。在 一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸 如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任 何其他处理器的一个或多个附加处理器8115耦合到第一总线8116。在一个实 施例中,第二总线8120可以是低引脚数(LPC)总线。在一个实施例中,各 种设备可耦合到第二总线8120,这些设备包括例如键盘和/或鼠标8122、通信 设备8127以及存储单元8128,该存储单元8128诸如可包括指令/代码和数据 8130的盘驱动器或者其他大容量存储设备。此外,音频I/O 8124可以被耦合 到第二总线8120。注意,其他架构是可能的。例如,代替图81的点对点架构, 系统可以实现多分支总线或其他此类架构。
现在参考图82,示出的是根据本发明公开的实施例的第二更具体 的示例性系统8200的框图。图81和82中的类似元件使用类似的附图标记, 并且从图82中省略了图81的某些方面以避免混淆图82的其他方面。
图82图示处理器8170、8180可分别包括集成存储器和I/O控制 逻辑(“CL”)8172和8182。因此,CL 8172、8182包括集成存储器控制器 单元,并包括I/O控制逻辑。图82图示不仅存储器8132、8134耦合到CL 8172、 8182,而且I/O设备8214也耦合到控制逻辑8172、8182。传统I/O设备8215 被耦合到芯片组8190。
现在参考图83,示出的是根据本发明公开的实施例的SoC 8300 的框图。图79中的类似要素使用类似的附图标记。另外,虚线框是更先进的 SoC上的任选的特征。在图83中,(多个)互连单元8302被耦合到:应用处 理器8310,其包括一个或多个核的集合202A-N的集合以及(多个)共享高速 缓存单元7906;系统代理单元7910;(多个)总线控制器单元7916;(多个) 集成存储器控制器单元7914;一个或多个协处理器的集合8320,其可包括集 成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元8330;直接存储器访问(DMA)单元8332;以及用于耦合到一个或 多个外部显示器的显示单元8340。在一个实施例中,(多个)协处理器8320 包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐 量MIC处理器、或嵌入式处理器,等等。
本文公开的(例如,机制的)各实施例可以被实现在硬件、软件、 固件或此类实现方式的组合中。本发明公开的实施例可实现为在可编程系统上 执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统 (包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一 个输出设备。
可将程序代码(诸如,图81中图示的代码8130)应用于输入指 令,以执行本文中描述的功能并生成输出信息。可以按已知方式将输出信息应 用于一个或多个输出设备。为了本申请的目的,处理系统包括具有处理器的任 何系统,该处理器诸如例如,数字信号处理器(DSP)、微控制器、专用集成电 路(ASIC)或微处理器。
程序代码可以用高级的面向过程的编程语言或面向对象的编程语 言来实现,以便与处理系统通信。如果需要,也可用汇编语言或机器语言来实 现程序代码。事实上,本文中描述的机制不限于任何特定的编程语言的范围。 在任何情况下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上 的表示性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取 时使得该机器制造用于执行本文中所述的技术的逻辑。被称为“IP核”的此类 表示可以被存储在有形的机器可读介质上,并可被供应给各个客户或生产设施 以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可以包括但不限于通过机器或设备制造或 形成的制品的非暂态、有形布置,其包括存储介质,诸如硬盘;任何其他类型 的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW) 以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储 器(DRAM)和静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可 编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相 变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
因此,本发明公开的实施例还包括非暂态的有形机器可读介质, 该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描 述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
仿真(包括二进制变换、代码变形等)
在一些情况下,指令转换器可用于将指令从源指令集转换至目标 指令集。例如,指令转换器可以将指令变换(例如,使用静态二进制变换、包 括动态编译的动态二进制变换)、变形、仿真或以其他方式转换成要由核处理 的一条或多条其他指令。指令转换器可以用软件、硬件、固件、或其组合来实 现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在 处理器外。
图84是根据本发明公开的实施例的对照使用软件指令转换器将 源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所图示 的实施例中,指令转换器是软件指令转换器,但替代地,该指令转换器可以用 软件、固件、硬件或其各种组合来实现。图84示出可使用x86编译器8404来 编译高级语言8402形式的程序,以生成可由具有至少一个x86指令集核的处 理器8416原生执行的x86二进制代码8406。具有至少一个x86指令集核的处 理器8416表示通过兼容地执行或以其他方式处理以下各项来执行与具有至少 一个x86指令集核的英特尔处理器基本相同的功能的任何处理器:1)英特尔x86 指令集核的指令集的实质部分,或2)目标为在具有至少一个x86指令集核的英 特尔处理器上运行以便取得与具有至少一个x86指令集核的英特尔处理器基本 相同的结果的应用或其他软件的目标代码版本。x86编译器8404表示可操作用 于生成x86二进制代码8406(例如,目标代码)的编译器,该二进制代码可通 过或不通过附加的链接处理在具有至少一个x86指令集核的处理器8416上执 行。类似地,图84示出可以使用替代的指令集编译器8408来编译高级语言8402 形式的程序,以生成可以由不具有至少一个x86指令集核的处理器8414(例如, 具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执 行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器) 原生执行的替代的指令集二进制代码8410。指令转换器8412用于将x86二进 制代码8406转换成可以由不具有x86指令集核的处理器8414原生执行的代码。 该转换后的代码不大可能与替代的指令集二进制代码8410相同,因为能够这 样做的指令转换器难以制造;然而,转换后的代码将完成一般操作,并且由来 自替代指令集的指令构成。因此,指令转换器8412通过仿真、模拟或任何其 他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行 x86二进制代码8406的软件、固件、硬件或其组合。

Claims (24)

1.一种装置,包括:
处理元件的空间阵列;
高速缓存;
第一存储器接口电路,包括进入所述高速缓存的第一端口、用于存储用于来自所述处理元件的空间阵列的存储器请求的数据的第一多个输入队列、以及第一存储器操作寄存器;
第二存储器接口电路,包括进入所述高速缓存的第二端口、用于存储用于来自所述处理元件的空间阵列的存储器请求的数据的第二多个输入队列、以及第二存储器操作寄存器;以及
分配器电路,用于:
根据第一分配模式将相应的第一值设置到所述第一存储器操作寄存器和所述第二存储器操作寄存器中,以:将所述第一端口耦合至所述第一多个输入队列中的、存储来自所述处理元件的空间阵列的第一处理元件的存储器请求的数据的第一输入队列;将所述第二端口耦合至所述第二多个输入队列中的、存储来自所述处理元件的空间阵列的第二处理元件的存储器请求的数据的第一输入队列;以及将所述第一端口耦合至所述第一多个输入队列中的、存储来自所述处理元件的空间阵列的第三处理元件的存储器请求的数据的第二输入队列;以及
根据第二分配模式将相应的第二值设置到所述第一存储器操作寄存器和所述第二存储器操作寄存器中,以:将所述第一端口耦合至所述第一多个输入队列中的、存储来自所述处理元件的空间阵列的所述第一处理元件的存储器请求的数据的第一输入队列;将所述第二端口耦合至所述第二多个输入队列中的、存储来自所述处理元件的空间阵列的所述第二处理元件的存储器请求的数据的第一输入队列;以及将所述第二端口耦合至所述第二多个输入队列中的、存储来自所述处理元件的空间阵列的所述第三处理元件的存储器请求的数据的第二输入队列。
2.如权利要求1所述的装置,其中,在所述第一存储器操作寄存器和所述第二存储器操作寄存器中设置的所述相应的第一值使所述第一存储器接口电路的第一完成缓冲器从所述高速缓存接收针对来自所述第一处理元件的存储器请求的完成指示,使所述第二存储器接口电路的第一完成缓冲器从所述高速缓存接收针对来自所述第二处理元件的存储器请求的完成指示,并且使所述第一存储器接口电路的第二完成缓冲器从所述高速缓存接收针对来自所述第三处理元件的存储器请求的完成指示。
3.如权利要求2所述的装置,其中,所述第一存储器接口电路的所述第一完成缓冲器是所述第一存储器接口电路的统一完成缓冲器的槽的第一适当子集,所述第一存储器接口电路的所述第二完成缓冲器是所述第一存储器接口电路的所述统一完成缓冲器的槽的第二适当子集,并且所述分配器电路将所述统一完成缓冲器的最多数量的缓冲器槽指派给所述第一处理元件或所述第三处理元件中的、发布针对数据流图的最多数量的存储器请求的一个处理元件。
4.如权利要求2所述的装置,其中,所述第一存储器接口电路的所述第一完成缓冲器是所述第一存储器接口电路的统一完成缓冲器的槽的第一适当子集,所述第一存储器接口电路的所述第二完成缓冲器是所述第一存储器接口电路的所述统一完成缓冲器的槽的第二适当子集,并且所述分配器电路将所述统一完成缓冲器的最多数量的缓冲器槽指派给所述第一处理元件或所述第三处理元件中的、具有针对数据流图的存储器请求的最长等待时间的一个处理元件。
5.如权利要求1所述的装置,其中,所述第二分配模式基于以下各项来分配输入队列:由所述第一处理元件对针对数据流图的最多数量的存储器请求的发布;由所述第二处理元件对针对所述数据流图的次多数量的存储器请求的发布;以及由所述第三处理元件对针对所述数据流图的、比所述次多数量的存储器请求更少数量的存储器请求的发布。
6.如权利要求1所述的装置,其中,所述分配器电路将所述第一存储器接口电路或所述第二存储器接口电路中的、按程序顺序的下一输入队列分配给所述第一存储器接口电路或所述第二存储器接口电路中的、具有被指派给针对数据流图的存储器接口电路的输入队列的最少数量的存储器请求的一个存储器接口电路。
7.如权利要求1所述的装置,其中,所述分配器电路在数据流图的运行时中从所述第一分配模式切换到所述第二分配模式。
8.如权利要求1-7中的任一项所述的装置,其中,所述第一存储器接口电路当处于所述第一分配模式时,发送第一回压值,以便当所述第一存储器接口电路的所述第一输入队列不能用于针对附加的存储器请求的数据时使所述第一处理元件停止发布附加的存储器请求,所述第二存储器接口电路当处于所述第一分配模式时,发送第二回压值,以便当所述第二存储器接口电路的所述第一输入队列不能用于针对附加的存储器请求的数据时使所述第二处理元件停止发布附加的存储器请求,并且所述第一存储器接口电路当处于所述第一分配模式时,发送第三回压值,以便当所述第一存储器接口电路的所述第二输入队列不能用于针对附加的存储器请求的数据时使所述第三处理元件停止发布附加的存储器请求。
9.一种方法,包括:
将处理元件的空间阵列耦合至第一存储器接口电路和第二存储器接口电路,所述第一存储器接口电路包括进入高速缓存的第一端口、用于存储用于来自所述处理元件的空间阵列的存储器请求的数据的第一多个输入队列、以及第一存储器操作寄存器,所述第二存储器接口电路包括进入所述高速缓存的第二端口、用于存储用于来自所述处理元件的空间阵列的存储器请求的数据的第二多个输入队列、以及第二存储器操作寄存器;
根据第一分配模式将相应的第一值设置到所述第一存储器操作寄存器和所述第二存储器操作寄存器中,以:将所述第一端口耦合至所述第一多个输入队列中的、存储来自所述处理元件的空间阵列的第一处理元件的存储器请求的数据的第一输入队列;将所述第二端口耦合至所述第二多个输入队列中的、存储来自所述处理元件的空间阵列的第二处理元件的存储器请求的数据的第一输入队列;以及将所述第一端口耦合至所述第一多个输入队列中的、存储来自所述处理元件的空间阵列的第三处理元件的存储器请求的数据的第二输入队列;以及
根据第二分配模式将相应的第二值设置到所述第一存储器操作寄存器和所述第二存储器操作寄存器中,以:将所述第一端口耦合至所述第一多个输入队列中的、存储来自所述处理元件的空间阵列的所述第一处理元件的存储器请求的数据的第一输入队列;将所述第二端口耦合至所述第二多个输入队列中的、存储来自所述处理元件的空间阵列的所述第二处理元件的存储器请求的数据的第一输入队列;以及将所述第二端口耦合至所述第二多个输入队列中的、存储来自所述处理元件的空间阵列的所述第三处理元件的存储器请求的数据的第二输入队列。
10.如权利要求9所述的方法,其中,将所述相应的第一值设置在所述第一存储器操作寄存器和所述第二存储器操作寄存器中使所述第一存储器接口电路的第一完成缓冲器从所述高速缓存接收针对来自所述第一处理元件的存储器请求的完成指示,使所述第二存储器接口电路的第一完成缓冲器从所述高速缓存接收针对来自所述第二处理元件的存储器请求的完成指示,并且使所述第一存储器接口电路的第二完成缓冲器从所述高速缓存接收针对来自所述第三处理元件的存储器请求的完成指示。
11.如权利要求10所述的方法,其中,所述第一存储器接口电路的所述第一完成缓冲器是所述第一存储器接口电路的统一完成缓冲器的槽的第一适当子集,所述第一存储器接口电路的所述第二完成缓冲器是所述第一存储器接口电路的所述统一完成缓冲器的槽的第二适当子集,并且设置所述相应的第一值或所述相应的第二值包括:将所述统一完成缓冲器的最多数量的缓冲器槽指派给所述第一处理元件或所述第三处理元件中的、发布针对数据流图的最多数量的存储器请求的一个处理元件。
12.如权利要求10所述的方法,其中,所述第一存储器接口电路的所述第一完成缓冲器是所述第一存储器接口电路的统一完成缓冲器的槽的第一适当子集,所述第一存储器接口电路的所述第二完成缓冲器是所述第一存储器接口电路的所述统一完成缓冲器的槽的第二适当子集,并且设置所述相应的第一值或所述相应的第二值包括:将所述统一完成缓冲器的最多数量的缓冲器槽指派给所述第一处理元件或所述第三处理元件中的、具有针对数据流图的存储器请求的最长等待时间的一个处理元件。
13.如权利要求9所述的方法,其中,所述第二分配模式基于以下各项来分配输入队列:由所述第一处理元件对针对数据流图的最多数量的存储器请求的发布;由所述第二处理元件对针对所述数据流图的次多数量的存储器请求的发布;以及由所述第三处理元件对针对所述数据流图的、比所述次多数量的存储器请求更少数量的存储器请求的发布。
14.如权利要求9所述的方法,其中,设置所述相应的第一值或所述相应的第二值包括:将所述第一存储器接口电路或所述第二存储器接口电路的、按程序顺序的下一输入队列分配给所述第一存储器接口电路或所述第二存储器接口电路中的、具有被指派给针对数据流图的存储器接口电路的输入队列的最少数量的存储器请求的一个存储器接口电路。
15.如权利要求9所述的方法,其中,所述方法包括:在数据流图的运行时中,从所述第一分配模式切换到所述第二分配模式。
16.如权利要求9-15中的任一项所述的方法,其中,所述第一存储器接口电路当处于所述第一分配模式时,发送第一回压值,以便当所述第一存储器接口电路的所述第一输入队列不能用于针对附加的存储器请求的数据时使所述第一处理元件停止发布附加的存储器请求,所述第二存储器接口电路当处于所述第一分配模式时,发送第二回压值,以便当所述第二存储器接口电路的所述第一输入队列不能用于针对附加的存储器请求的数据时使所述第二处理元件停止发布附加的存储器请求,并且所述第一存储器接口电路当处于所述第一分配模式时,发送第三回压值,以便当所述第一存储器接口电路的所述第二输入队列不能用于针对附加的存储器请求的数据时使所述第三处理元件停止发布附加的存储器请求。
17.一种非暂态机器可读介质,存储有代码,所述代码当由机器执行时,使所述机器执行包括以下步骤的方法:
将处理元件的空间阵列耦合至第一存储器接口电路和第二存储器接口电路,所述第一存储器接口电路包括进入高速缓存的第一端口、用于存储用于来自所述处理元件的空间阵列的存储器请求的数据的第一多个输入队列、以及第一存储器操作寄存器,所述第二存储器接口电路包括进入所述高速缓存的第二端口、用于存储用于来自所述处理元件的空间阵列的存储器请求的数据的第二多个输入队列、以及第二存储器操作寄存器;
根据第一分配模式将相应的第一值设置到所述第一存储器操作寄存器和所述第二存储器操作寄存器中,以:将所述第一端口耦合至所述第一多个输入队列中的、存储来自所述处理元件的空间阵列的第一处理元件的存储器请求的数据的第一输入队列;将所述第二端口耦合至所述第二多个输入队列中的、存储来自所述处理元件的空间阵列的第二处理元件的存储器请求的数据的第一输入队列;以及将所述第一端口耦合至所述第一多个输入队列中的、存储来自所述处理元件的空间阵列的第三处理元件的存储器请求的数据的第二输入队列;以及
根据第二分配模式将相应的第二值设置到所述第一存储器操作寄存器和所述第二存储器操作寄存器中,以:将所述第一端口耦合至所述第一多个输入队列中的、存储来自所述处理元件的空间阵列的所述第一处理元件的存储器请求的数据的第一输入队列;将所述第二端口耦合至所述第二多个输入队列中的、存储来自所述处理元件的空间阵列的所述第二处理元件的存储器请求的数据的第一输入队列;以及将所述第二端口耦合至所述第二多个输入队列中的、存储来自所述处理元件的空间阵列的所述第三处理元件的存储器请求的数据的第二输入队列。
18.如权利要求17所述的非暂态机器可读介质,其中,将所述相应的第一值设置在所述第一存储器操作寄存器和所述第二存储器操作寄存器中使所述第一存储器接口电路的第一完成缓冲器从所述高速缓存接收针对来自所述第一处理元件的存储器请求的完成指示,使所述第二存储器接口电路的第一完成缓冲器从所述高速缓存接收针对来自所述第二处理元件的存储器请求的完成指示,并且使所述第一存储器接口电路的第二完成缓冲器从所述高速缓存接收针对来自所述第三处理元件的存储器请求的完成指示。
19.如权利要求18所述的非暂态机器可读介质,其中,所述第一存储器接口电路的所述第一完成缓冲器是所述第一存储器接口电路的统一完成缓冲器的槽的第一适当子集,所述第一存储器接口电路的所述第二完成缓冲器是所述第一存储器接口电路的所述统一完成缓冲器的槽的第二适当子集,并且设置所述相应的第一值或所述相应的第二值包括:将所述统一完成缓冲器的最多数量的缓冲器槽指派给所述第一处理元件或所述第三处理元件中的、发布针对数据流图的最多数量的存储器请求的一个处理元件。
20.如权利要求18所述的非暂态机器可读介质,其中,所述第一存储器接口电路的所述第一完成缓冲器是所述第一存储器接口电路的统一完成缓冲器的槽的第一适当子集,所述第一存储器接口电路的所述第二完成缓冲器是所述第一存储器接口电路的所述统一完成缓冲器的槽的第二适当子集,并且设置所述相应的第一值或所述相应的第二值包括:将所述统一完成缓冲器的最多数量的缓冲器槽指派给所述第一处理元件或所述第三处理元件中的、具有针对数据流图的存储器请求的最长等待时间的一个处理元件。
21.如权利要求17所述的非暂态机器可读介质,其中,所述第二分配模式基于以下各项来分配输入队列:由所述第一处理元件对针对数据流图的最多数量的存储器请求的发布;由所述第二处理元件对针对所述数据流图的次多数量的存储器请求的发布;以及由所述第三处理元件对针对所述数据流图的、比所述次多数量的存储器请求更少数量的存储器请求的发布。
22.如权利要求17所述的非暂态机器可读介质,其中,设置所述相应的第一值或所述相应的第二值包括:将所述第一存储器接口电路或所述第二存储器接口电路的、按程序顺序的下一输入队列分配给所述第一存储器接口电路或所述第二存储器接口电路中的、具有被指派给针对数据流图的存储器接口电路的输入队列的最少数量的存储器请求的一个存储器接口电路。
23.如权利要求17所述的非暂态机器可读介质,其中,所述方法包括:在数据流图的运行时中,从所述第一分配模式切换到所述第二分配模式。
24.如权利要求17-23中的任一项所述的非暂态机器可读介质,其中,所述第一存储器接口电路当处于所述第一分配模式时,发送第一回压值,以便当所述第一存储器接口电路的所述第一输入队列不能用于针对附加的存储器请求的数据时使所述第一处理元件停止发布附加的存储器请求,所述第二存储器接口电路当处于所述第一分配模式时,发送第二回压值,以便当所述第二存储器接口电路的所述第一输入队列不能用于针对附加的存储器请求的数据时使所述第二处理元件停止发布附加的存储器请求,并且所述第一存储器接口电路当处于所述第一分配模式时,发送第三回压值,以便当所述第一存储器接口电路的所述第二输入队列不能用于针对附加的存储器请求的数据时使所述第三处理元件停止发布附加的存储器请求。
CN202010181220.4A 2019-03-30 2020-03-16 用于可配置空间加速器中的存储器接口电路分配的装置、方法和系统 Pending CN111767236A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/370,928 2019-03-30
US16/370,928 US10915471B2 (en) 2019-03-30 2019-03-30 Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator

Publications (1)

Publication Number Publication Date
CN111767236A true CN111767236A (zh) 2020-10-13

Family

ID=69701061

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010181220.4A Pending CN111767236A (zh) 2019-03-30 2020-03-16 用于可配置空间加速器中的存储器接口电路分配的装置、方法和系统

Country Status (3)

Country Link
US (1) US10915471B2 (zh)
EP (1) EP3726389B1 (zh)
CN (1) CN111767236A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112100121A (zh) * 2020-11-17 2020-12-18 北京壁仞科技开发有限公司 计算装置、计算设备以及可编程调度方法
CN112965854A (zh) * 2021-04-16 2021-06-15 吉林大学 一种提升卷积神经网络可靠性的方法、系统及设备
CN113891396A (zh) * 2021-09-01 2022-01-04 深圳金信诺高新技术股份有限公司 数据包的处理方法、装置、计算机设备和存储介质
CN115244909A (zh) * 2020-10-14 2022-10-25 谷歌有限责任公司 机器学习加速器中的队列分配

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020055921A1 (en) 2018-09-10 2020-03-19 GigaIO Networks, Inc. Methods and apparatus for high-speed data bus connection and fabric management
US11461127B2 (en) * 2019-05-24 2022-10-04 Texas Instruments Incorporated Pipeline arbitration
US11392498B2 (en) 2019-05-24 2022-07-19 Texas Instruments Incorporated Aliased mode for cache controller
US11176065B2 (en) * 2019-08-12 2021-11-16 Micron Technology, Inc. Extended memory interface
US11403247B2 (en) 2019-09-10 2022-08-02 GigaIO Networks, Inc. Methods and apparatus for network interface fabric send/receive operations
US11593288B2 (en) * 2019-10-02 2023-02-28 GigalO Networks, Inc. Methods and apparatus for fabric interface polling
EP4049143A4 (en) 2019-10-25 2024-02-21 Gigaio Networks Inc METHODS AND APPARATUS FOR DMA ENGINE DESCRIPTORS FOR HIGH-SPEED DATA SYSTEMS
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
US11416399B2 (en) * 2020-06-25 2022-08-16 Nokia Solutions And Networks Oy Dedicated memory buffers for supporting deterministic inter-FPGA communication
US11809908B2 (en) * 2020-07-07 2023-11-07 SambaNova Systems, Inc. Runtime virtualization of reconfigurable data flow resources
CN111985626B (zh) * 2020-09-25 2022-06-07 苏州浪潮智能科技有限公司 一种加速rnn网络的系统、方法及存储介质
US11733902B2 (en) 2021-04-30 2023-08-22 International Business Machines Corporation Integrating and increasing performance of disaggregated memory in operating systems
CN113360565B (zh) * 2021-08-10 2021-11-02 蚂蚁金服(杭州)网络技术有限公司 用于流量控制的方法和装置
US20230063727A1 (en) * 2021-08-31 2023-03-02 Arm Limited Multi-Bit Scan Chain with Error-Bit Generator

Family Cites Families (356)

* 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
US4965716A (en) 1988-03-11 1990-10-23 International Business Machines Corporation Fast access priority queue for managing multiple messages at a communications node or managing multiple programs in a multiprogrammed data processor
JPH03500461A (ja) 1988-07-22 1991-01-31 アメリカ合衆国 データ駆動式計算用のデータ流れ装置
US5241635A (en) 1988-11-18 1993-08-31 Massachusetts Institute Of Technology Tagged token data processing system with operand matching in activation frames
US5141747A (en) 1989-05-23 1992-08-25 Minnesota Mining And Manufacturing Company Denatured collagen membrane
EP0410777B1 (en) 1989-07-28 1996-11-06 Texas Instruments Incorporated Video graphics display memory swizzle logic circuit and method
US5239634A (en) 1989-09-21 1993-08-24 Digital Equipment Corporation Memory controller for enqueuing/dequeuing process
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
US5689719A (en) 1991-06-28 1997-11-18 Sanyo Electric O., Ltd. Parallel computer system including processing elements
EP1526446A3 (en) 1991-07-08 2007-04-04 Seiko Epson Corporation Extensible RISC microprocessor architecture
EP0592715B1 (en) 1992-10-15 1997-06-11 Siemens Aktiengesellschaft Checking design for testability rules with a VHDL simulator
US5410722A (en) 1993-01-21 1995-04-25 Conner Peripherals, Inc. Queue system for dynamically allocating and moving memory registers between a plurality of pseudo queues
US5314503A (en) 1993-03-23 1994-05-24 Rasor Associates, Inc. Automatic sheath protection of hypodermic needle
US5393536A (en) 1993-04-05 1995-02-28 Crane Plastics Company Coextrusion apparatus
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
US5393454A (en) 1994-02-03 1995-02-28 Colgate Palmolive Co. Thickened composition containing polymeric thickener and aliphatic hydrocarbon
JP3610600B2 (ja) 1994-08-22 2005-01-12 チッソ株式会社 光学活性エンド−2−ノルボルネオール類の製造方法
US5787029A (en) 1994-12-19 1998-07-28 Crystal Semiconductor Corp. Ultra low power multiplier
US6247064B1 (en) 1994-12-22 2001-06-12 Unisys Corporation Enqueue instruction in a system architecture for improved message passing and process synchronization
US5734601A (en) 1995-01-30 1998-03-31 Cirrus Logic, Inc. Booth multiplier with low power, high performance input circuitry
US5818743A (en) 1995-04-21 1998-10-06 Texas Instruments Incorporated Low power multiplier
US6020139A (en) 1995-04-25 2000-02-01 Oridigm Corporation S-adenosyl methionine regulation of metabolic pathways and its use in diagnosis and therapy
US5925099A (en) 1995-06-15 1999-07-20 Intel Corporation Method and apparatus for transporting messages between processors in a multiple processor system
US5822540A (en) 1995-07-19 1998-10-13 Fujitsu Network Communications, Inc. Method and apparatus for discarding frames in a communications device
US5725364A (en) 1996-02-20 1998-03-10 Wagner Spray Tech Corporation Pressure control module
US5805827A (en) 1996-03-04 1998-09-08 3Com Corporation Distributed signal processing for data channels maintaining channel bandwidth
US5790821A (en) 1996-03-08 1998-08-04 Advanced Micro Devices, Inc. Control bit vector storage for storing control vectors corresponding to instruction operations in a microprocessor
US5625630A (en) 1996-04-24 1997-04-29 Lucent Technologies Inc. Increasing testability by clock transformation
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
US5948081A (en) 1997-12-22 1999-09-07 Compaq Computer Corporation System for flushing queued memory write request corresponding to a queued read request and all prior write requests with counter indicating requests to be flushed
JP3946873B2 (ja) 1998-06-19 2007-07-18 株式会社日立製作所 ディスクアレイ制御装置
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
US6611891B1 (en) 1998-11-23 2003-08-26 Advanced Micro Devices, Inc. Computer resource configuration mechanism across a multi-pipe communication link
US6314503B1 (en) 1998-12-30 2001-11-06 Emc Corporation Method and apparatus for managing the placement of data in a storage system to achieve increased system performance
US6295571B1 (en) 1999-03-19 2001-09-25 Times N Systems, Inc. Shared memory apparatus and method for multiprocessor systems
JP5285828B2 (ja) 1999-04-09 2013-09-11 ラムバス・インコーポレーテッド 並列データ処理装置
EP1093611A1 (en) 1999-05-06 2001-04-25 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
US6640267B1 (en) 1999-09-27 2003-10-28 Cypress Semiconductor Corp. Architecture for multi-queue storage element
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
US7139901B2 (en) 2000-02-08 2006-11-21 Mips Technologies, Inc. Extended instruction set for packet processing applications
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
US6886085B1 (en) 2000-04-19 2005-04-26 International Business Machines Corporation Method and apparatus for efficient virtual memory management
CN1486568A (zh) 2000-11-28 2004-03-31 ϣ�����ʹ�˾ 内容/服务处理及输送
US6947416B1 (en) 2000-12-13 2005-09-20 Cisco Technology, Inc. Generalized asynchronous HDLC services
GB2370381B (en) 2000-12-19 2003-12-24 Picochip Designs Ltd Processor architecture
GB2377519B (en) 2001-02-14 2005-06-15 Clearspeed Technology Ltd Lookup engine
US6728945B1 (en) 2001-02-26 2004-04-27 Cadence Design Systems, Inc. Behavioral level observability analysis and its applications
US7436954B2 (en) 2001-02-28 2008-10-14 Cavium Networks, Inc. Security system with an intelligent DMA controller
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
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US6725364B1 (en) 2001-03-08 2004-04-20 Xilinx, Inc. Configurable processor system
GB2374242B (en) 2001-04-07 2005-03-16 Univ Dundee Integrated circuit and related improvements
US6515333B1 (en) 2001-04-27 2003-02-04 Advanced Micro Devices, Inc. Removal of heat from SOI device
WO2002097565A2 (en) 2001-05-25 2002-12-05 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
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
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
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 ソニー株式会社 データ通信システム、データ送信装置、データ受信装置、および方法、並びにコンピュータ・プログラム
US20040022094A1 (en) 2002-02-25 2004-02-05 Sivakumar Radhakrishnan Cache usage for concurrent multiple streams
US9170812B2 (en) 2002-03-21 2015-10-27 Pact Xpp Technologies Ag Data processing system having integrated pipelined array data processor
CN1656465B (zh) 2002-03-22 2010-05-26 迈克尔·F·迪林 用于由多个互连节点执行渲染计算来渲染图形的方法和系统
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
US6922714B2 (en) 2002-05-09 2005-07-26 International Business Machines Corporation Floating point unit power reduction scheme
TWI289789B (en) 2002-05-24 2007-11-11 Nxp Bv A scalar/vector processor and processing system
EP1367499A1 (en) 2002-05-28 2003-12-03 Fujitsu Siemens Computers, LLC Compute node to mesh interface for highly scalable parallel processing system
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
US7415594B2 (en) 2002-06-26 2008-08-19 Coherent Logix, Incorporated Processing system with interspersed stall propagating processors and communication elements
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
US7277449B2 (en) 2002-07-29 2007-10-02 Freescale Semiconductor, Inc. On chip network
US7200137B2 (en) 2002-07-29 2007-04-03 Freescale Semiconductor, Inc. On chip network that maximizes interconnect utilization between processing elements
AU2003286131A1 (en) 2002-08-07 2004-03-19 Pact Xpp Technologies Ag Method and device for processing data
US6986023B2 (en) 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
US7724740B1 (en) 2002-08-27 2010-05-25 3Com Corporation Computer system and network interface supporting class of service queues
US7181578B1 (en) 2002-09-12 2007-02-20 Copan Systems, Inc. Method and apparatus for efficient scalable storage management
GB2395298B (en) 2002-09-17 2007-02-14 Micron Technology Inc Flexible results pipeline for processing element
GB2395299B (en) 2002-09-17 2006-06-21 Micron Technology Inc Control of processing elements in parallel processors
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
US7099983B2 (en) 2002-11-25 2006-08-29 Lsi Logic Corporation Multi-core communications module, data communications system incorporating a multi-core communications module, and data communications process
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
US7137021B2 (en) 2003-05-15 2006-11-14 International Business Machines Corporation Power saving in FPU with gated power based on opcodes and data
US7058785B1 (en) 2003-05-23 2006-06-06 Xilinx, Inc. Addressing objects in a large persistent storage address space
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
JP4700611B2 (ja) 2003-08-28 2011-06-15 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト データ処理装置およびデータ処理方法
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 富士通株式会社 時分割多重処理可能なリコンフィギュラブル回路
US7281116B2 (en) 2004-07-30 2007-10-09 Hewlett-Packard Development Company, L.P. Multiprocessor system having plural memory locations for respectively storing TLB-shootdown data for plural processor nodes
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
US7136954B2 (en) 2005-01-31 2006-11-14 International Business Machines Corporation Data communication method and apparatus utilizing credit-based data transfer protocol and credit loss detection mechanism
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
EP2317446A1 (en) 2005-06-30 2011-05-04 Imec A memory arrangement for multi-processor systems
JP4536618B2 (ja) 2005-08-02 2010-09-01 富士通セミコンダクター株式会社 リコンフィグ可能な集積回路装置
US8275976B2 (en) 2005-08-29 2012-09-25 The Invention Science Fund I, Llc Hierarchical instruction scheduler facilitating instruction replay
US20160098279A1 (en) 2005-08-29 2016-04-07 Searete Llc Method and apparatus for segmented sequential storage
US8099556B2 (en) 2005-09-13 2012-01-17 Arm Limited Cache miss detection in a data processing apparatus
JP2007079958A (ja) 2005-09-14 2007-03-29 Hitachi Ltd 記憶制御装置、データ処理方法、及びコンピュータプログラム
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
US8656409B2 (en) 2005-12-29 2014-02-18 Intel Corporation High performance queue implementations in multiprocessor systems
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
DE112006003875T5 (de) 2006-05-16 2009-06-18 Intel Corporation, Santa Clara Gleitkommaaddition für unterschiedliche Gleitkommaformate
US8065459B2 (en) 2006-05-17 2011-11-22 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
US7613848B2 (en) 2006-06-13 2009-11-03 International Business Machines Corporation Dynamic stabilization for a stream processing system
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
US8395414B2 (en) 2006-06-21 2013-03-12 Element Cxi, Llc Hierarchically-scalable reconfigurable integrated circuit architecture with unit delay modules
US8390325B2 (en) 2006-06-21 2013-03-05 Element Cxi, Llc Reconfigurable integrated circuit architecture with on-chip configuration and reconfiguration
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 株式会社日立製作所 ストレージ装置及び負荷分散方法
US8321597B2 (en) 2007-02-22 2012-11-27 Super Talent Electronics, Inc. Flash-memory device with RAID-type controller
US8543742B2 (en) 2007-02-22 2013-09-24 Super Talent Electronics, Inc. Flash-memory device with RAID-type controller
US7479802B2 (en) 2007-03-09 2009-01-20 Quadric, Inc Programmable logic integrated circuit for digital algorithmic functions
US7613909B2 (en) 2007-04-17 2009-11-03 Xmos Limited Resuming thread to service ready port transferring data externally at different clock rate than internal circuitry of a processor
US7779298B2 (en) 2007-06-11 2010-08-17 International Business Machines Corporation Distributed job manager recovery
US9648325B2 (en) 2007-06-30 2017-05-09 Microsoft Technology Licensing, Llc Video decoding implementations for a graphics processing unit
US8347312B2 (en) 2007-07-06 2013-01-01 Xmos Limited Thread communications
US7822951B2 (en) 2007-08-01 2010-10-26 Advanced Micro Devices, Inc. System and method of load-store forwarding
US8161167B2 (en) 2007-08-28 2012-04-17 Cisco Technology, Inc. Highly scalable application layer service 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 재단법인서울대학교산학협력재단 프로세서 및 메모리 제어 방법
US8032772B2 (en) 2007-11-15 2011-10-04 Intel Corporation Method, apparatus, and system for optimizing frequency and performance in a multi-die microprocessor
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
US8365111B2 (en) 2008-02-29 2013-01-29 Et International, Inc. Data driven logic simulation
US7904700B2 (en) 2008-03-10 2011-03-08 International Business Machines Corporation Processing unit incorporating special purpose register for use with instruction-based persistent vector multiplexer control
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
US8115659B2 (en) 2008-06-10 2012-02-14 International Business Machines Corporation Method and apparatus for efficient gathering of information in a multicore system
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
JP5056644B2 (ja) 2008-07-18 2012-10-24 富士通セミコンダクター株式会社 データ変換装置、データ変換方法及びプログラム
US8001510B1 (en) 2008-09-05 2011-08-16 Xilinx, Inc. Automated method of architecture mapping selection from constrained high level language description via element characterization
US20100191814A1 (en) 2008-12-23 2010-07-29 Marco Heddes System-On-A-Chip Employing A Network Of Nodes That Utilize Receive Side Flow Control Over Channels For Messages Communicated Therebetween
US8078848B2 (en) 2009-01-09 2011-12-13 Micron Technology, Inc. Memory controller having front end and back end channels for modifying commands
US8086783B2 (en) 2009-02-23 2011-12-27 International Business Machines Corporation High availability memory system
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
US9429983B1 (en) 2013-09-12 2016-08-30 Advanced Processor Architectures, Llc System clock distribution in a distributed computing environment
US8332597B1 (en) 2009-08-11 2012-12-11 Xilinx, Inc. Synchronization of external memory accesses in a dataflow machine
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
EP2333673B1 (en) 2009-12-07 2014-04-16 STMicroelectronics (Research & Development) Limited Signal sampling and transfer
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
EP2553815A1 (en) 2010-04-02 2013-02-06 Tabula, Inc. System and method for reducing reconfiguration power usage
US9141350B2 (en) 2010-04-23 2015-09-22 Vector Fabrics B.V. 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
US8051227B1 (en) 2010-05-10 2011-11-01 Telefonaktiebolaget L M Ericsson (Publ) Programmable queue structures for multiprocessors
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
US9052890B2 (en) 2010-09-25 2015-06-09 Intel Corporation Execute at commit state update instructions, apparatus, methods, and systems
TWI425357B (zh) 2010-09-27 2014-02-01 Silicon Motion Inc 用來進行區塊管理之方法以及記憶裝置及控制器
KR101735677B1 (ko) 2010-11-17 2017-05-16 삼성전자주식회사 부동 소수점의 복합 연산장치 및 그 연산방법
US8548104B2 (en) 2010-11-23 2013-10-01 Siano Mobile Silicon Ltd. Receiver with configurable clock frequencies
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
US9367438B2 (en) 2011-04-21 2016-06-14 Renesas Electronics Corporation Semiconductor integrated circuit and method for operating same
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
KR101918464B1 (ko) 2011-09-14 2018-11-15 삼성전자 주식회사 스위즐드 버추얼 레지스터 기반의 프로세서 및 스위즐 패턴 제공 장치
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
US20130160028A1 (en) 2011-12-14 2013-06-20 John E. Black Method and apparatus for low latency communication and synchronization for multi-thread applications
WO2013100783A1 (en) 2011-12-29 2013-07-04 Intel Corporation Method and system for control signalling in a data path module
KR101968512B1 (ko) 2012-02-21 2019-04-12 삼성전자주식회사 Nfc를 이용한 멀티미디어 데이터 송수신 장치 및 방법
US9009712B2 (en) 2012-03-16 2015-04-14 Advanced Micro Devices, Inc. GPU distributed work-item queuing
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
US9026705B2 (en) 2012-08-09 2015-05-05 Oracle International Corporation Interrupt processing unit for preventing interrupt loss
WO2014031495A2 (en) 2012-08-18 2014-02-27 Arteris SAS System translation look-aside buffer with request-based allocation and prefetching
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
US9829956B2 (en) 2012-11-21 2017-11-28 Nvidia Corporation Approach to power reduction in floating-point operations
US9274971B2 (en) 2012-11-27 2016-03-01 International Business Machines Corporation Low latency data exchange
US10133577B2 (en) 2012-12-19 2018-11-20 Intel Corporation Vector mask driven clock gating for power efficiency of a processor
US8625422B1 (en) 2012-12-20 2014-01-07 Unbound Networks 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
US9507404B2 (en) 2013-08-28 2016-11-29 Via Technologies, Inc. Single core wakeup multi-core synchronization mechanism
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 株式会社リコー 情報処理システム及び情報処理方法
US8924596B1 (en) 2013-12-06 2014-12-30 Concurrent Ventures, LLC System and method for dividing and synchronizing a processing task across multiple processing elements/processors in hardware
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
US9870209B2 (en) 2014-03-28 2018-01-16 Intel Corporation Instruction and logic for reducing data cache evictions in an out-of-order processor
KR20150126484A (ko) 2014-05-02 2015-11-12 삼성전자주식회사 소스 코드를 머신 코드로 변환하는 전자 장치 및 방법
US9696927B2 (en) 2014-06-19 2017-07-04 International Business Machines Corporation Memory transaction having implicit ordering effects
KR101864980B1 (ko) 2014-06-24 2018-06-05 인텔 코포레이션 가상 머신 전력 관리
US9330433B2 (en) 2014-06-30 2016-05-03 Intel Corporation Data distribution fabric in scalable GPUs
US10409763B2 (en) 2014-06-30 2019-09-10 Intel Corporation Apparatus and method for efficiently implementing a processor pipeline
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
US9928190B2 (en) 2015-06-15 2018-03-27 International Business Machines Corporation High bandwidth low latency data exchange between processing elements
US9743151B2 (en) 2015-06-24 2017-08-22 Time Warner Cable Enterprises Llc Multicast video program switching architecture
US10111024B2 (en) 2015-07-10 2018-10-23 Lg Electronics Inc. Method and apparatus for an input data processing via a local computing or offloading based on power harvesting in a wireless communication system
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
US20170116154A1 (en) 2015-10-23 2017-04-27 The Intellisis Corporation Register communication in a network-on-a-chip architecture
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
US9520876B1 (en) 2016-02-17 2016-12-13 International Business Machines Corporation Power gating and clock gating in wiring levels
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
US20180225403A1 (en) 2016-03-31 2018-08-09 Wave Computing, Inc. Dynamic configuration of a reconfigurable hum fabric
EP3452924A4 (en) 2016-04-27 2020-01-01 Coda Project, Inc. SYSTEM, METHOD AND APPARATUS FOR OPERATING A UNIFIED DOCUMENT SURFACE WORKSPACE
US11106467B2 (en) 2016-04-28 2021-08-31 Microsoft Technology Licensing, Llc Incremental scheduler for out-of-order block ISA processors
US10764781B2 (en) 2016-05-03 2020-09-01 Qualcomm Incorporated Systems and methods for reordering data received from a plurality of radio access technologies (RATs)
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
US10795853B2 (en) 2016-10-10 2020-10-06 Intel Corporation Multiple dies hardware processors and methods
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
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US20180189675A1 (en) 2016-12-31 2018-07-05 Intel Corporation Hardware accelerator architecture and template for web-scale k-means clustering
US10180928B2 (en) 2016-12-31 2019-01-15 Intel Corporation Heterogeneous hardware accelerator architecture for processing sparse matrix data with skewed non-zero distributions
US11853244B2 (en) 2017-01-26 2023-12-26 Wisconsin Alumni Research Foundation Reconfigurable computer accelerator providing stream processor and dataflow processor
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 群晖科技股份有限公司 用来进行内存空间保留及管理的方法与装置
CA3060368C (en) 2017-04-17 2020-07-28 Cerebras Systems Inc. Dataflow triggered tasks for accelerated deep learning
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
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
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
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
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
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
US11157287B2 (en) 2017-07-24 2021-10-26 Tesla, Inc. Computational array microprocessor system with variable latency memory access
US10461747B2 (en) 2017-09-20 2019-10-29 Apple Inc. Low power clock gating circuit
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10496574B2 (en) 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
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
US10380063B2 (en) 2017-09-30 2019-08-13 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
US10402176B2 (en) 2017-12-27 2019-09-03 Intel Corporation Methods and apparatus to compile code to generate data flow code
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
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
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
US10552339B2 (en) 2018-06-12 2020-02-04 Advanced Micro Devices, Inc. Dynamically adapting mechanism for translation lookaside buffer shootdowns
US10776087B2 (en) 2018-06-25 2020-09-15 Intel Corporation Sequence optimizations in a high-performance computing environment
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115244909A (zh) * 2020-10-14 2022-10-25 谷歌有限责任公司 机器学习加速器中的队列分配
CN112100121A (zh) * 2020-11-17 2020-12-18 北京壁仞科技开发有限公司 计算装置、计算设备以及可编程调度方法
CN112100121B (zh) * 2020-11-17 2021-02-12 北京壁仞科技开发有限公司 计算装置、计算设备以及可编程调度方法
CN112965854A (zh) * 2021-04-16 2021-06-15 吉林大学 一种提升卷积神经网络可靠性的方法、系统及设备
CN112965854B (zh) * 2021-04-16 2022-04-29 吉林大学 一种提升卷积神经网络可靠性的方法、系统及设备
CN113891396A (zh) * 2021-09-01 2022-01-04 深圳金信诺高新技术股份有限公司 数据包的处理方法、装置、计算机设备和存储介质
CN113891396B (zh) * 2021-09-01 2022-07-26 深圳金信诺高新技术股份有限公司 数据包的处理方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
EP3726389A1 (en) 2020-10-21
US20200310994A1 (en) 2020-10-01
US10915471B2 (en) 2021-02-09
EP3726389B1 (en) 2021-11-17

Similar Documents

Publication Publication Date Title
CN109215728B (zh) 用于分布式存储器危险检测和错误恢复的存储器电路和方法
CN108268278B (zh) 具有可配置空间加速器的处理器、方法和系统
CN111767236A (zh) 用于可配置空间加速器中的存储器接口电路分配的装置、方法和系统
US11307873B2 (en) Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10445250B2 (en) Apparatus, methods, and systems with a configurable spatial accelerator
US10565134B2 (en) Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US10417175B2 (en) Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
CN111566623A (zh) 用于可配置空间加速器中的集成性能监视的装置、方法和系统
CN111868702A (zh) 用于可配置空间加速器中的远程存储器访问的装置、方法和系统
US10891240B2 (en) Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
CN111512298A (zh) 用于可配置空间加速器中的条件队列的装置、方法和系统
US20190018815A1 (en) Processors, methods, and systems with a configurable spatial accelerator
US10459866B1 (en) Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator
US11029958B1 (en) Apparatuses, methods, and systems for configurable operand size operations in an operation configurable spatial accelerator
CN111767080A (zh) 用于可配置空间加速器中的操作的设备、方法和系统
US10853073B2 (en) Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US10678724B1 (en) Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
US20220100680A1 (en) Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits
CN112148647A (zh) 用于存储器接口电路仲裁的装置、方法和系统
US20200409709A1 (en) Apparatuses, methods, and systems for time-multiplexing in a configurable spatial accelerator
US11907713B2 (en) Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator

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