CN111971652A - 多线程自调度可重新配置计算架构的条件分支控制 - Google Patents
多线程自调度可重新配置计算架构的条件分支控制 Download PDFInfo
- Publication number
- CN111971652A CN111971652A CN201980022372.5A CN201980022372A CN111971652A CN 111971652 A CN111971652 A CN 111971652A CN 201980022372 A CN201980022372 A CN 201980022372A CN 111971652 A CN111971652 A CN 111971652A
- Authority
- CN
- China
- Prior art keywords
- circuit
- configurable
- instruction
- thread
- memory
- 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.)
- Granted
Links
- 230000015654 memory Effects 0.000 claims abstract description 284
- 230000001360 synchronised effect Effects 0.000 claims description 196
- 230000004044 response Effects 0.000 claims description 18
- 238000012986 modification Methods 0.000 claims description 8
- 230000004048 modification Effects 0.000 claims description 8
- 238000000034 method Methods 0.000 abstract description 75
- 238000004891 communication Methods 0.000 description 98
- 238000010586 diagram Methods 0.000 description 49
- 238000012546 transfer Methods 0.000 description 17
- 238000007667 floating Methods 0.000 description 14
- 230000005540 biological transmission Effects 0.000 description 10
- 238000006243 chemical reaction Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 230000008878 coupling Effects 0.000 description 8
- 238000010168 coupling process Methods 0.000 description 8
- 238000005859 coupling reaction Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 8
- 238000012360 testing method Methods 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 6
- 239000004744 fabric Substances 0.000 description 6
- 230000011664 signaling Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 4
- 239000000463 material Substances 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000010276 construction Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 238000004611 spectroscopical analysis Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 235000019800 disodium phosphate Nutrition 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000017525 heat dissipation Effects 0.000 description 1
- 238000010191 image analysis Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7825—Globally asynchronous, locally synchronous, e.g. network on chip
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7871—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
- G06F15/7882—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS for self reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3871—Asynchronous instruction pipeline, e.g. using handshake signals between stages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Logic Circuits (AREA)
Abstract
揭示用于可配置计算的代表性设备、方法及系统实施例。代表性系统包含互连网络;处理器;及多个可配置电路集群。每一可配置电路集群包含:多个可配置电路,其布置成阵列;同步网络,其耦合到所述阵列的每一可配置电路;及异步分组网络,其耦合到所述阵列的每一可配置电路。代表性可配置电路包含:可配置计算电路;及配置存储器,其具有:第一指令存储器,其存储用以配置所述可配置计算电路的数据路径的多个数据路径配置指令;及第二指令及指令索引存储器,其存储用于主同步输入、当前数据路径配置指令及下一可配置计算电路的下一数据路径配置指令的选择的多个辐条指令及数据路径配置指令索引。
Description
相关申请案的交叉参考
此申请案是2018年3月31日申请的发明者是托尼M.布鲁尔(Tony M.Brewer)的标题为“多线程自调度可重新配置计算架构的条件分支控制(Conditional BranchingControl for a Multi-Threaded,Self-Scheduling Reconfigurable ComputingFabric)”的第62/651,140号美国临时专利申请案的非临时案且主张所述美国专利申请案的权益及优先级,所述美国专利申请案随本文一起共同转让,且其全部内容以如同在本文中作为一个整体陈述的相同的完全效力及效果特此以全文引用方式并入本文中(下文称为“相关申请案”)。
技术领域
本发明大体上涉及可配置计算电路系统,且更特定来说,涉及异构计算系统,其包含具有嵌入式互连网络、动态重新配置及对能量或功耗的动态控制的可配置计算电路系统。
背景技术
在计算速度、能量(或功率)消耗及相关联散热方面,许多现有计算系统已经达到了计算处理能力的显著极限。举例来说,随着对先进计算技术的需求的增长,现有计算解决方案越来越不足以适应例如人工智能及其它重要的计算应用。
因此,持续需要一种能够为计算密集型内核提供高性能及高能效解决方案的计算架构,例如用于在感测、通信及分析应用(合成孔径雷达、5G基站)及图形分析应用(例如使用光谱技术、机器学习、5G联网算法及大模板代码的图形聚类)中使用的快速傅里叶变换(FFT)及有限脉冲响应(FIR)滤波器的计算,举例来说而无限制。
还持续需要一种能够针对这些各种应用中的任一者进行配置,但最重要的是,还能够进行动态自配置及自重新配置的可配置计算架构。
发明内容
如下文更详细论述,代表性设备、系统及方法提供一种能够为计算密集型内核提供高性能及高能效解决方案的计算架构,用于在感测、通信及分析应用(合成孔径雷达、5G基站)及图形分析应用(例如使用光谱技术、机器学习、5G联网算法及大模板代码的图形聚类)中使用的快速傅里叶变换(FFT)及有限脉冲响应(FIR)滤波器的计算,举例来说而无限制。
显著地,各种代表性实施例提供一种能够针对这些各种应用中的任一者进行配置,但最重要的是,还能够进行自调度、动态自配置及自重新配置、条件分支、异步信令的背压控制、有序的线程执行及循环线程执行(包含在数据依赖性中)、在数据依赖性及/或排序完成之后自动起始线程执行、提供对私有变量的循环存取、使用重入队列提供循环线程的快速执行及将各种线程标识符用于高级循环执行(包含嵌套循环)的多线程粗粒度可配置计算架构。
在代表性实施例中,可配置电路可包括:可配置计算电路;多个同步网络输入,其耦合到所述可配置计算电路;多个同步网络输出,其耦合到所述可配置计算电路;及配置存储器,其耦合到所述可配置计算电路、控制电路系统、所述同步网络输入及所述同步网络输出,其中所述配置存储器包括:第一指令存储器,其存储用以配置所述可配置计算电路的数据路径的多个数据路径配置指令;及第二指令及指令索引存储器,其存储用于所述同步网络输入的主同步输入的选择的多个辐条指令(spoke instructions)及数据路径配置指令索引。
在另一代表性实施例中,可配置电路可包括:可配置计算电路;及配置存储器,其耦合到所述可配置计算电路、控制电路系统、同步网络输入及所述同步网络输出,所述配置存储器包括:第一指令存储器,其存储用以配置所述可配置计算电路的数据路径的多个数据路径配置指令;及第二指令及指令索引存储器,其存储用于所述可配置计算电路的当前数据路径配置指令的选择的多个辐条指令及数据路径配置指令索引。
在另一代表性实施例中,可配置电路可包括:可配置计算电路;及配置存储器,其耦合到所述可配置计算电路、控制电路系统、同步网络输入及同步网络输出,所述配置存储器包括:第一指令存储器,其存储用以配置所述可配置计算电路的数据路径的多个数据路径配置指令;及第二指令及指令索引存储器,其存储用于下一可配置计算电路的下一数据路径配置指令的选择的多个辐条指令及数据路径配置指令索引。
在另一代表性实施例中,可配置电路可包括:可配置计算电路;控制电路,其耦合到所述可配置计算电路;第一存储器电路,其耦合到所述可配置计算电路;多个同步网络输入,其耦合到所述可配置计算电路;多个同步网络输出,其耦合到所述可配置计算电路;及第二配置存储器电路,其耦合到所述可配置计算电路、控制电路系统、所述同步网络输入及所述同步网络输出,所述配置存储器电路包括:第一指令存储器,其存储用以配置所述可配置计算电路的数据路径的多个数据路径配置指令;及第二指令及指令索引存储器,其存储用于所述同步网络输入的主同步输入的选择的多个辐条指令及数据路径配置指令索引。
在又另一代表性实施例中,可配置电路可包括:可配置计算电路;第一存储器电路,其耦合到所述可配置计算电路;多个同步网络输入,其耦合到所述可配置计算电路;多个同步网络输出,其耦合到所述可配置计算电路;及第二配置存储器电路,其耦合到所述可配置计算电路、控制电路系统、所述同步网络输入及所述同步网络输出;及控制电路,其耦合到所述可配置计算电路,所述控制电路包括:存储器控制电路;线程控制电路;及多个控制寄存器。
在另一代表性实施例中,可配置电路可包括:可配置计算电路;配置存储器,其耦合到所述可配置计算电路、控制电路系统、同步网络输入及同步网络输出,所述配置存储器包括:第一指令存储器,其存储用以配置所述可配置计算电路的数据路径的多个数据路径配置指令;及第二指令及指令索引存储器,其存储用于下一可配置计算电路的下一数据路径指令或下一数据路径指令索引的选择的多个辐条指令及数据路径配置指令索引;及条件逻辑电路,其耦合到所述可配置计算电路,其中取决于来自所述可配置计算电路的输出,所述条件逻辑电路适于通过修改提供于所述多个同步网络输出中的所选择输出上的所述下一数据路径指令或下一数据路径指令索引来提供条件分支。
在另一代表性实施例中,可配置电路可包括:可配置计算电路;控制电路,其耦合到所述可配置计算电路;第一存储器电路,其耦合到所述可配置计算电路;多个同步网络输入,其耦合到所述可配置计算电路;多个同步网络输出,其耦合到所述可配置计算电路;异步网络输入队列,其耦合到异步分组网络及所述第一存储器电路;异步网络输出队列;及流量控制电路,其耦合到所述异步网络输出队列,所述流量控制电路适于当在所述异步网络输出队列中已经达到预定阈值时产生停止信号。
在另一代表性实施例中,可配置电路可包括:可配置计算电路;第一存储器电路,其耦合到所述可配置计算电路;多个同步网络输入,其耦合到所述可配置计算电路;多个同步网络输出,其耦合到所述可配置计算电路;及第二配置存储器电路,其耦合到所述可配置计算电路、控制电路系统、所述同步网络输入及所述同步网络输出;及控制电路,其耦合到所述可配置计算电路,所述控制电路包括:存储器控制电路;线程控制电路;及多个控制寄存器,其中所述多个控制寄存器存储循环表,所述循环表具有多个线程标识符,且针对每一线程标识符具有用于在当前线程的执行之后执行的下一线程标识符以提供有序线程执行。
在另一代表性实施例中,可配置电路可包括:可配置计算电路;第一存储器电路,其耦合到所述可配置计算电路;多个同步网络输入,其耦合到所述可配置计算电路;多个同步网络输出,其耦合到所述可配置计算电路;及第二配置存储器电路,其耦合到所述可配置计算电路、控制电路系统、所述同步网络输入及所述同步网络输出;及控制电路,其耦合到所述可配置计算电路,所述控制电路包括:存储器控制电路;多个控制寄存器,其中所述多个控制寄存器存储具有第一数据完成计数的完成表;及线程控制电路,其适于对线程进行排队以用于在针对其线程标识符其完成计数已经递减到零时执行。
在另一代表性实施例中,可配置电路可包括:可配置计算电路;第一存储器电路,其耦合到所述可配置计算电路;多个同步网络输入及输出,其耦合到所述可配置计算电路;及异步网络输入队列及异步网络输出队列;第二配置存储器电路,其耦合到所述可配置计算电路、控制电路系统、所述同步网络输入及所述同步网络输出,所述第二配置存储器包括:第一指令存储器,其存储用以配置所述可配置计算电路的数据路径的多个数据路径配置指令;及第二指令及指令索引存储器,其存储:用于所述同步网络输入的主同步输入的选择、用于所述可配置计算电路的当前数据路径配置指令的选择及用于下一可配置计算电路的下一数据路径指令或下一数据路径指令索引的选择的多个辐条指令及数据路径配置指令索引;且所述可配置电路进一步包括:控制电路,其耦合到所述可配置计算电路,所述控制电路包括:存储器控制电路;多个控制寄存器,其中所述多个控制寄存器存储具有第一数据完成计数的完成表;及线程控制电路,其适于对线程进行排队以用于在针对其线程标识符其完成计数已经递减到零时执行。
在另一代表性实施例中,可配置电路可包括:可配置计算电路;第一存储器电路,其耦合到所述可配置计算电路;多个同步网络输入,其耦合到所述可配置计算电路;多个同步网络输出,其耦合到所述可配置计算电路;及第二配置存储器电路,其耦合到所述可配置计算电路、控制电路系统、所述同步网络输入及所述同步网络输出;及控制电路,其耦合到所述可配置计算电路,所述控制电路包括:存储器控制电路;多个控制寄存器,其中所述多个控制寄存器存储具有第一数据完成计数的完成表;及线程控制电路,其适于对线程进行排队以用于在针对其线程标识符其完成计数已经递减到零且其线程标识符是下一线程时执行。
在又另一代表性实施例中,可配置电路可包括:可配置计算电路;第一存储器电路,其耦合到所述可配置计算电路;多个同步网络输入,其耦合到所述可配置计算电路;多个同步网络输出,其耦合到所述可配置计算电路;及第二配置存储器电路,其耦合到所述可配置计算电路、控制电路系统、所述同步网络输入及所述同步网络输出;且所述可配置电路进一步包括:控制电路,其耦合到所述可配置计算电路,所述控制电路包括:存储器控制电路;线程控制电路;及多个控制寄存器,其存储具有多个类型的线程标识符的完成表,其中每一类型的线程标识符指示用于循环及嵌套循环执行的循环级,且其中所述多个控制寄存器进一步存储线程标识符堆叠的顶部以允许每一类型的线程标识符存取所选择循环的私有变量。
在另一代表性实施例中,可配置电路可包括:可配置计算电路;第一存储器电路,其耦合到所述可配置计算电路;多个同步网络输入,其耦合到所述可配置计算电路;多个同步网络输出,其耦合到所述可配置计算电路;及第二配置存储器电路,其耦合到所述可配置计算电路、控制电路系统、所述同步网络输入及所述同步网络输出;及控制电路,其耦合到所述可配置计算电路,所述控制电路包括:存储器控制电路;多个控制寄存器;及线程控制电路,其包括:接续队列,其存储具有允许执行的完成计数但尚不具有经指派线程标识符的计算线程的一或多个线程标识符;及重入队列,其存储具有允许执行的完成计数且具有经指派线程标识符的计算线程的一或多个线程标识符以提供所述重入队列中的所述线程在指定辐条计数之后的执行。
在另一代表性实施例中,可配置电路可包括:可配置计算电路;第一存储器电路,其耦合到所述可配置计算电路;多个同步网络输入,其耦合到所述可配置计算电路;多个同步网络输出,其耦合到所述可配置计算电路;及第二配置存储器电路,其耦合到所述可配置计算电路、控制电路系统、所述同步网络输入及所述同步网络输出;及控制电路,其耦合到所述可配置计算电路,所述控制电路包括:存储器控制电路;多个控制寄存器,其存储线程标识符池及具有有效数目个循环线程的循环计数的完成表;及线程控制电路,其中响应于将线程标识符传回到所述线程标识符池的异步架构(fabric)消息的接收,所述控制电路使所述循环计数递减,且当所述循环计数达到零时,传输异步架构完成消息。
在代表性实施例中,揭示一种系统,其可包括:异步分组网络;同步网络;及经布置成阵列的多个可配置电路,所述多个可配置电路中的每一可配置电路耦合到所述同步网络及所述异步分组网络两者,所述多个可配置电路适于使用所述同步网络执行多个计算来形成多个同步域,且所述多个可配置电路进一步适于通过所述异步分组网络产生及及传输多个控制消息,所述多个控制消息包括一或多个完成消息及继续消息。
在另一代表性实施例中,系统可包括:多个可配置电路,其布置成阵列;同步网络,其耦合到所述阵列的所述多个可配置电路中的每一可配置电路;及异步分组网络,其耦合到所述阵列的所述多个可配置电路中的每一可配置电路。
在另一代表性实施例中,系统可包括:互连网络;处理器,其耦合到所述互连网络;及多个可配置电路集群,其耦合到所述互连网络。
在代表性实施例中,系统可包括:互连网络;处理器,其耦合到所述互连网络;主机接口,其耦合到所述互连网络;及多个可配置电路集群,其耦合到所述互连网络,所述多个可配置电路集群中的每一可配置电路集群包括:多个可配置电路,其经布置成阵列;同步网络,其耦合到所述阵列的所述多个可配置电路中的每一可配置电路;异步分组网络,其耦合到所述阵列的所述多个可配置电路中的每一可配置电路;存储器接口,其耦合到所述异步分组网络及所述互连网络;及分派接口,其耦合到所述异步分组网络及所述互连网络。
在另一代表性实施例中,系统可包括:阶层式互连网络,其包括第一多个纵横式交换机,所述交换机具有折叠式克劳斯(Folded Clos)配置及在与端点的接口处的多个直接网状连接;处理器,其耦合到所述互连网络;主机接口,其耦合到所述互连网络;及多个可配置电路集群,其耦合到所述互连网络,所述多个可配置电路集群中的每一可配置电路集群包括:多个可配置电路,其经布置成阵列;同步网络,其耦合到所述阵列的所述多个可配置电路中的每一可配置电路且在所述阵列的邻近可配置电路之间提供多个直接连接;异步分组网络,其包括第二多个纵横式交换机,每一纵横式交换机耦合到所述阵列的所述多个可配置电路中的至少一个可配置电路及所述第二多个纵横式交换机中的另一纵横式交换机;存储器接口,其耦合到所述异步分组网络及所述互连网络;及分派接口,其耦合到所述异步分组网络及所述互连网络。
在另一代表性实施例中,系统可包括:互连网络;处理器,其耦合到所述互连网络;主机接口,其耦合到所述互连网络;及多个可配置电路集群,其耦合到所述互连网络,所述多个可配置电路集群中的每一可配置电路集群包括:同步网络;异步分组网络;存储器接口,其耦合到所述异步分组网络及所述互连网络;分派接口,其耦合到所述异步分组网络及所述互连网络;及经布置成阵列的多个可配置电路,每一可配置电路包括:可配置计算电路;控制电路,其耦合到所述可配置计算电路,所述控制电路包括:存储器控制电路;线程控制电路;及多个控制寄存器;第一存储器电路,其耦合到所述可配置计算电路;多个同步网络输入及输出,其耦合到所述可配置计算电路及所述同步网络;异步网络输入队列及异步网络输出队列;第二配置存储器电路,其耦合到所述可配置计算电路、控制电路系统、所述同步网络输入及所述同步网络输出,所述配置存储器电路包括:第一指令存储器,其存储用以配置所述可配置计算电路的数据路径的多个数据路径配置指令;及第二指令及指令索引存储器,其存储:用于所述同步网络输入的主同步输入的选择的多个辐条指令及数据路径配置指令索引。
在各个代表性实施例中的任一者中,所述第二指令及指令索引存储器可进一步存储用于所述可配置计算电路的当前数据路径配置指令的选择的多个辐条指令及数据路径配置指令索引。
在各个代表性实施例中的任一者中,所述第二指令及指令索引存储器可进一步存储用于下一可配置计算电路的下一数据路径配置指令的选择的多个辐条指令及数据路径配置指令索引。
在各个代表性实施例中的任一者中,所述第二指令及指令索引存储器可进一步存储用于所述多个同步网络输出中的同步网络输出的选择的多个辐条指令及数据路径配置指令索引。
在各个代表性实施例中的任一者中,所述可配置电路或系统可进一步包括:配置存储器多路复用器,其耦合到所述第一指令存储器及所述第二指令及指令索引存储器。
在各个代表性实施例中的任一者中,当所述配置存储器多路复用器的选择输入具有第一设置时,可使用来自第二指令及指令索引存储器的指令索引选择所述当前数据路径配置指令。
在各个代表性实施例中的任一者中,当所述配置存储器多路复用器的所述选择输入具有不同于所述第一设置的第二设置时,可使用来自主同步输入的指令索引选择所述当前数据路径配置指令。
在各个代表性实施例中的任一者中,所述第二指令及指令索引存储器可进一步存储用于独立于所述当前数据路径指令配置所述可配置电路的部分的多个辐条指令及数据路径配置指令索引。
在各个代表性实施例中的任一者中,可根据模辐条计数选择所述多个辐条指令及数据路径配置指令索引中的所选择辐条指令及数据路径配置指令索引。
在各个代表性实施例中的任一者中,所述可配置电路或系统可进一步包括:耦合到所述可配置计算电路的条件逻辑电路。
在各个代表性实施例中的任一者中,取决于来自所述可配置计算电路的输出,所述条件逻辑电路可适于修改提供于所述多个同步网络输出中的所选择输出上的下一数据路径指令索引。
在各个代表性实施例中的任一者中,取决于来自所述可配置计算电路的输出,所述条件逻辑电路可适于通过修改提供于所述多个同步网络输出中的所选择输出上的下一数据路径指令或下一数据路径指令索引提供条件分支。
在各个代表性实施例中的任一者中,所述条件逻辑电路在启用时可适于通过对所述下一数据路径指令的最低有效位与来自所述可配置计算电路的输出进行OR运算以指定下一数据路径指令或数据路径指令索引来提供条件分支。
在各个代表性实施例中的任一者中,所述条件逻辑电路在启用时可适于通过对所述下一数据路径指令的最低有效位与来自所述可配置计算电路的输出进行OR运算以指定下一数据路径指令索引来提供条件分支。
在各个代表性实施例中的任一者中,所述多个同步网络输入可包括:多个输入寄存器,其耦合到同步网络的多个通信线;及输入多路复用器,其耦合到所述多个输入寄存器及所述第二指令及指令索引存储器以用于所述主同步输入的选择。
在各个代表性实施例中的任一者中,所述多个同步网络输出可包括:多个输出寄存器,其耦合到所述同步网络的多个通信线;及输出多路复用器,其耦合到所述可配置计算电路以用于来自所述可配置计算电路的输出的选择。
在各个代表性实施例中的任一者中,所述可配置电路或系统可进一步包括:异步网络输入队列,其耦合到异步分组网络及所述存储器电路;及异步网络输出队列,其耦合到所述输出多路复用器。
在各个代表性实施例中的任一者中,所述可配置电路或系统可进一步包括:异步架构状态机,其耦合到所述异步网络输入队列及所述异步网络输出队列,所述异步架构状态机适于解码从所述异步分组网络接收的输入数据分组及组装输出数据分组以在所述异步分组网络上传输。
在各个代表性实施例中的任一者中,所述异步分组网络可包括多个纵横式交换机,每一纵横式交换机耦合到多个可配置电路及至少另一纵横式交换机。
在各个代表性实施例中的任一者中,所述可配置电路或系统可进一步包括:多个可配置电路的阵列,其中:每一可配置电路通过所述多个同步网络输入及所述多个同步网络输出耦合到所述同步网络;且每一可配置电路通过所述异步网络输入及所述异步网络输出耦合到所述异步分组网络。
在各个代表性实施例中的任一者中,所述同步网络可包括耦合所述多个可配置电路的所述阵列的邻近可配置电路的多个直接点到点连接。
在各个代表性实施例中的任一者中,每一可配置电路可包括:所述多个输入寄存器与所述多个输出寄存器之间的直接传递连接。在各个代表性实施例中的任一者中,所述直接传递连接可提供直接点到点连接以用于从在所述同步网络上接收的第二可配置电路到在所述同步网络上传输的第三可配置电路的数据传输。
在各个代表性实施例中的任一者中,所述可配置计算电路可包括算术、逻辑及位运算,其适于执行从由以下各者组成的群组选择的至少一个整数运算:有符号及无符号加法、绝对值、取否定、逻辑NOT、加算及取否定、减法A-B、反向减法B-A、有符号及无符号大于、有符号及无符号大于或等于、有符号及无符号小于、有符号及无符号小于或等于、等于或不等于的比较、逻辑AND运算、逻辑OR运算、逻辑XOR运算、逻辑NAND运算、逻辑NOR运算、逻辑NOT XOR运算、逻辑AND NOT运算、逻辑OR NOT运算及整数与浮点之间的互相转换。
在各个代表性实施例中的任一者中,所述可配置计算电路可包括算术逻辑及位运算,其适于执行从由以下各者组成的群组选择的至少一个浮点运算:有符号及无符号加法、绝对值、取否定、逻辑NOT、加算及取否定、减法A-B、反向减法B-A、有符号及无符号大于、有符号及无符号大于或等于、有符号及无符号小于、有符号及无符号小于或等于、等于或不等于的比较、逻辑AND运算、逻辑OR运算、逻辑XOR运算、逻辑NAND运算、逻辑NOR运算、逻辑NOTXOR运算、逻辑AND NOT运算、逻辑OR NOT运算、整数与浮点之间的互相转换及其组合。
在各个代表性实施例中的任一者中,所述可配置计算电路可包括乘法及移位运算电路,其适于执行从由以下各者组成的群组选择的至少一个整数运算:乘法、移位、传递输入、有符号及无符号乘法、有符号及无符号右移、有符号及无符号左移、位顺序逆转、置换、整数与浮点之间的互相转换及其组合。
在各个代表性实施例中的任一者中,所述可配置计算电路可包括乘法及移位运算电路,其适于执行从由以下各者组成的群组选择的至少一个浮点运算:乘法、移位、传递输入、有符号及无符号乘法、有符号及无符号右移、有符号及无符号左移、位顺序逆转、置换、整数与浮点之间的互相转换及其组合。
在各个代表性实施例中的任一者中,所述多个可配置电路的所述阵列可进一步耦合到第一互连网络。在各个代表性实施例中的任一者中,所述多个可配置电路的所述阵列可进一步包括:第三系统存储器接口电路;及分派接口电路。在各个代表性实施例中的任一者中,所述分派接口电路可适于通过所述第一互连网络接收工作描述符分组,且响应于所述工作描述符分组,产生到所述多个可配置电路的一或多个数据及控制分组来配置所述多个可配置电路用于所选择计算的执行。
在各个代表性实施例中的任一者中,所述可配置电路或系统可进一步包括:流量控制电路,其耦合到所述异步网络输出队列,所述流量控制电路适于当在所述异步网络输出队列中已经达到预定阈值时产生停止信号。在各个代表性实施例中的任一者中,响应于所述停止信号,每一异步网络输出队列停止在所述异步分组网络上输出数据分组。在各个代表性实施例中的任一者中,响应于所述停止信号,每一可配置计算电路在其当前执行完成之后停止执行。
在各个代表性实施例中的任一者中,多个可配置电路的阵列的第一多个可配置电路可通过所述同步网络按第一预定顺序耦合以形成第一同步域;且其中多个可配置电路的阵列的第二多个可配置电路通过所述同步网络按第二预定顺序耦合以形成第二同步域。在各个代表性实施例中的任一者中,所述第一同步域可适于产生通过所述异步分组网络传输到所述第二同步域的接续消息。在各个代表性实施例中的任一者中,所述第二同步域可适于产生通过所述异步分组网络传输到所述第一同步域的完成消息。
在各个代表性实施例中的任一者中,所述多个控制寄存器可存储具有第一数据完成计数的完成表。在各个代表性实施例中的任一者中,所述多个控制寄存器进一步存储具有第二迭代计数的完成表。在各个代表性实施例中的任一者中,所述多个控制寄存器可进一步存储循环表,所述循环表具有多个线程标识符且针对每一线程标识符,具有用于在当前线程的执行之后执行的下一线程标识符。在各个代表性实施例中的任一者中,所述多个控制寄存器可进一步将第一迭代的识别及最后一个迭代的识别存储于循环表中。
在各个代表性实施例中的任一者中,所述控制电路可适于对线程进行排队以用于在针对其线程标识符其完成计数已经递减到零且其线程标识符是下一线程时执行。
在各个代表性实施例中的任一者中,所述控制电路可适于对线程进行排队以用于在针对其线程标识符其完成计数指示任何数据依赖性的完成时执行。在各个代表性实施例中的任一者中,完成计数可指示在所选择线程执行之前将针对多个线程中的每各所选择线程接收的完成消息的预定数目。
在各个代表性实施例中的任一者中,所述多个控制寄存器可进一步存储具有多个类型的线程标识符的完成表,其中每一类型的线程标识符指示用于循环及嵌套循环执行的循环级。
在各个代表性实施例中的任一者中,所述多个控制寄存器可进一步存储具有有效数目个循环线程的循环计数的完成表,且其中响应于将线程标识符传回到线程标识符池的异步架构消息的接收,所述控制电路使所述循环计数递减,且当所述循环计数达到零时,传输异步架构完成消息。在各个代表性实施例中的任一者中,所述多个控制寄存器可进一步存储线程标识符堆叠的顶部以允许每一类型的线程标识符存取所选择循环的私有变量。
在各个代表性实施例中的任一者中,所述控制电路可进一步包括:接续队列;及重入队列。在各个代表性实施例中的任一者中,所述接续队列存储具有允许执行的完成计数但尚不具有经指派线程标识符的计算线程的一或多个线程标识符。在各个代表性实施例中的任一者中,所述重入队列可存储具有允许执行的完成计数且具有经指派线程标识符的计算线程的一或多个线程标识符。在各个代表性实施例中的任一者中,可在具有所述接续队列中的线程标识符的任何线程的执行之前执行具有所述重入队列中的线程标识符的任何线程。
在各个代表性实施例中的任一者中,所述控制电路可进一步包括:优先级队列,其中可在具有所述接续队列或所述重入队列中的线程标识符的任何线程的执行之前执行具有所述优先级队列中的线程标识符的任何线程。
在各个代表性实施例中的任一者中,所述控制电路可进一步包括:运行队列,其中一旦出现线程标识符的辐条计数,就可执行具有所述运行队列中的线程标识符的任何线程。
在各个代表性实施例中的任一者中,所述第二配置存储器电路可包括:第一指令存储器,其存储用以配置所述可配置计算电路的数据路径的多个数据路径配置指令;及第二指令及指令索引存储器,其存储用于所述同步网络输入的主同步输入的选择的多个辐条指令及数据路径配置指令索引。
在各个代表性实施例中的任一者中,所述控制电路可适于自调度计算线程以进行执行。
在各个代表性实施例中的任一者中,所述条件逻辑电路可适于分支到不同第二下一指令以由下一可配置电路执行。
在各个代表性实施例中的任一者中,所述控制电路可对排序计算线程进行排序以进行执行。在各个代表性实施例中的任一者中,所述控制电路可适于对循环计算线程进行排序以进行执行。在各个代表性实施例中的任一者中,所述控制电路可适于响应于来自数据依赖性的一或多个完成信号开始计算线程的执行。
还揭示配置可配置电路的各个方法实施例。代表性方法实施例可包括:使用第一指令存储器,提供用以配置所述可配置计算电路的数据路径的多个数据路径配置指令;及使用第二指令及指令索引存储器,提供用于多个同步网络输入中的主同步输入的选择的多个辐条指令及数据路径配置指令索引。
在各个代表性实施例中的任一者中,配置可配置电路的方法可包括:使用第一指令存储器,提供用以配置所述可配置计算电路的数据路径的多个数据路径配置指令;及使用第二指令及指令索引存储器,提供用于所述可配置计算电路的当前数据路径配置指令的选择的多个辐条指令及数据路径配置指令索引。
在各个代表性实施例中的任一者中,一种配置可配置电路的方法可包括:使用第一指令存储器,提供用以配置所述可配置计算电路的数据路径的多个数据路径配置指令;使用第二指令及指令索引存储器,提供用于下一可配置计算电路的下一数据路径配置指令的选择的多个辐条指令及数据路径配置指令索引。
还揭示控制多线程可配置电路的线程执行的方法,其中所述可配置电路具有可配置计算电路。代表性方法实施例可包括:使用条件逻辑电路,取决于来自所述可配置计算电路的输出,通过修改提供到下一可配置电路的所述下一数据路径指令或下一数据路径指令索引来提供条件分支。
控制多线程可配置电路的线程执行的另一代表性方法实施例可包括:使用流量控制电路,当在异步网络输出队列中已经达到预定阈值时产生停止信号。
控制多线程可配置电路的线程执行的另一代表性方法实施例可包括:使用多个控制寄存器存储具有多个线程标识符且针对每一线程标识符具有用于在当前线程的执行之后执行的下一线程标识符以提供有序线程执行的循环表。
控制多线程可配置电路的线程执行的另一代表性方法实施例可包括:使用多个控制寄存器存储具有第一数据完成计数的完成表;及使用线程控制电路,对线程进行排队以用于在针对其线程标识符其完成计数已经递减到零时执行。
揭示配置及控制具有可配置计算电路的多线程可配置电路的线程执行的方法,其中代表性方法实施例包括:使用第一指令存储器,使用用以配置所述可配置计算电路的数据路径的配置指令提供多个数据路径;使用第二指令及指令索引存储器,提供用于多个同步网络输入中的主同步输入的选择、用于所述可配置计算电路的当前数据路径配置指令的选择及用于下一可配置计算电路的下一数据路径指令或下一数据路径指令索引的选择的多个辐条指令及数据路径配置指令索引;使用多个控制寄存器,提供具有第一数据完成计数的完成表;及使用线程控制电路,对线程排队以在针对其线程标识符其完成计数已经递减到零时执行。
配置及控制多线程可配置电路的线程执行的另一方法可包括:使用第一指令存储器,使用用以配置所述可配置计算电路的数据路径的配置指令提供多个数据路径;使用第二指令及指令索引存储器,提供用于多个同步网络输入中的主同步输入的选择、用于所述可配置计算电路的当前数据路径配置指令的选择及用于下一可配置计算电路的下一数据路径指令或下一数据路径指令索引的选择的多个辐条指令及数据路径配置指令索引;使用多个控制寄存器,提供具有第一数据完成计数的完成表;及使用线程控制电路,对线程排队以在针对其线程标识符其完成计数已经递减到零且其线程标识符是下一线程时执行。
控制多线程可配置电路的线程执行的另一方法可包括:使用多个控制寄存器,存储具有多个类型的线程标识符的完成表,其中每一类型的线程标识符指示用于循环及嵌套循环执行的循环级,且其中所述多个控制寄存器进一步存储线程标识符堆叠的顶部;及允许每一类型的线程标识符存取所选择循环的私有变量。
控制多线程可配置电路的线程执行的另一方法可包括:使用多个控制寄存器,存储具有数据完成计数的完成表;使用线程控制电路,提供存储具有允许执行的完成计数但尚不具有经指派线程标识符的计算线程的一或多个线程标识符的接续队列;及使用线程控制电路,提供存储具有允许执行的完成计数且具有经指派线程标识符的计算线程的一或多个线程标识符以提供所述重入队列中的所述线程在指定辐条计数之后的执行的重入队列。
控制多线程可配置电路的线程执行的另一方法可包括:使用多个控制寄存器,存储线程标识符池及具有有效数目个循环线程的循环计数的完成表;及使用线程控制电路,响应于将线程标识符传回到所述线程标识符池的异步架构消息的接收,使所述循环计数递减,且当所述循环计数达到零时,传输异步架构完成消息。
在各个代表性实施例中的任一者中,所述方法可进一步包括:使用所述第二指令及指令索引存储器,提供用于所述可配置计算电路的当前数据路径配置指令的选择的多个辐条指令及数据路径配置指令索引。
在各个代表性实施例中的任一者中,所述方法可进一步包括:使用所述第二指令及指令索引存储器,提供用于下一可配置计算电路的下一数据路径配置指令的选择的多个辐条指令及数据路径配置指令索引。
在各个代表性实施例中的任一者中,所述方法可进一步包括:使用所述第二指令及指令索引存储器,提供用于所述多个同步网络输出中的同步网络输出的选择的多个辐条指令及数据路径配置指令索引。
在各个代表性实施例中的任一者中,所述方法可进一步包括:使用配置存储器多路复用器,提供第一选择设置以使用来自所述第二指令及指令索引存储器的指令索引选择当前数据路径配置指令。
在各个代表性实施例中的任一者中,所述方法可进一步包括:使用配置存储器多路复用器,提供第二选择设置以使用来自主同步输入的指令索引选择当前数据路径配置指令,所述第二设置不同于所述第一设置。
在各个代表性实施例中的任一者中,所述方法可进一步包括:使用所述第二指令及指令索引存储器,提供用于独立于所述当前数据路径指令配置所述可配置电路的部分的多个辐条指令及数据路径配置指令索引。
在各个代表性实施例中的任一者中,所述方法可进一步包括:使用配置存储器多路复用器,根据模辐条计数选择所述多个辐条指令及数据路径配置指令索引中的辐条指令及数据路径配置指令索引。
在各个代表性实施例中的任一者中,所述方法可进一步包括:使用条件逻辑电路且取决于来自所述可配置计算电路的输出,修改下一数据路径指令或下一数据路径指令索引。
在各个代表性实施例中的任一者中,所述方法可进一步包括:使用条件逻辑电路且取决于来自所述可配置计算电路的输出,通过修改下一数据路径指令或下一数据路径指令索引提供条件分支。
在各个代表性实施例中的任一者中,所述方法可进一步包括:启用条件逻辑电路;及使用所述条件逻辑电路且取决于来自所述可配置计算电路的输出,通过对所述下一数据路径指令的最低有效位与来自所述可配置计算电路的输出进行OR运算以指定下一数据路径指令或数据路径指令索引来提供条件分支。
在各个代表性实施例中的任一者中,所述方法可进一步包括:使用输入多路复用器,选择主同步输入。在各个代表性实施例中的任一者中,所述方法可进一步包括:使用输出多路复用器,选择来自所述可配置计算电路的输出。
在各个代表性实施例中的任一者中,所述方法可进一步包括:使用耦合到异步网络输入队列及异步网络输出队列的异步架构状态机、解码从异步分组网络接收的输入数据分组及组装输出数据分组以在异步分组网络上传输。
在各个代表性实施例中的任一者中,所述方法可进一步包括:使用所述同步网络,提供耦合所述多个可配置电路的所述阵列的邻近可配置电路的多个直接点到点连接。
在各个代表性实施例中的任一者中,所述方法可进一步包括:使用所述可配置电路,在多个输入寄存器与多个输出寄存器之间提供直接传递连接。在各个代表性实施例中的任一者中,所述直接传递连接提供直接点到点连接以用于从在所述同步网络上接收的第二可配置电路到在所述同步网络上传输的第三可配置电路的数据传输。
在各个代表性实施例中的任一者中,所述方法可进一步包括:使用所述可配置计算电路,执行从由以下各者组成的群组选择的至少一个整数或浮点运算:有符号及无符号加法、绝对值、取否定、逻辑NOT、加算及取否定、减法A-B、反向减法B-A、有符号及无符号大于、有符号及无符号大于或等于、有符号及无符号小于、有符号及无符号小于或等于、等于或不等于的比较、逻辑AND运算、逻辑OR运算、逻辑XOR运算、逻辑NAND运算、逻辑NOR运算、逻辑NOT XOR运算、逻辑AND NOT运算、逻辑OR NOT运算及整数与浮点之间的互相转换。
在各个代表性实施例中的任一者中,所述方法可进一步包括:使用所述可配置计算电路,执行从由以下各者组成的群组选择的至少一个整数或浮点运算:乘法、移位、传递输入、有符号及无符号乘法、有符号及无符号右移、有符号及无符号左移、位顺序逆转、置换、整数与浮点之间的互相转换及其组合。
在各个代表性实施例中的任一者中,所述方法可进一步包括:使用分派接口电路,通过所述第一互连网络接收工作描述符分组,且响应于所述工作描述符分组,产生到所述多个可配置电路的一或多个数据及控制分组来配置所述多个可配置电路用于所选择计算的执行。
在各个代表性实施例中的任一者中,所述方法可进一步包括:使用流量控制电路,当在异步网络输出队列中已经达到预定阈值时产生停止信号。在各个代表性实施例中的任一者中,响应于所述停止信号,每一异步网络输出队列停止在所述异步分组网络上输出数据分组。在各个代表性实施例中的任一者中,响应于所述停止信号,每一可配置计算电路在其当前执行完成之后停止执行。
在各个代表性实施例中的任一者中,所述方法可进一步包括:通过所述同步网络按第一预定顺序耦合多个可配置电路的阵列的第一多个可配置电路以形成第一同步域;及通过所述同步网络按第二预定顺序耦合多个可配置电路的阵列的第二多个可配置电路以形成第二同步域。
在各个代表性实施例中的任一者中,所述方法可进一步包括:产生从所述第一同步域到所述第二同步域的接续消息以通过异步分组网络进行传输。
在各个代表性实施例中的任一者中,所述方法可进一步包括:产生从所述第二同步域到所述第一同步域的完成消息以通过异步分组网络进行传输。在各个代表性实施例中的任一者中,所述方法可进一步包括将具有第一数据完成计数的完成表存储于所述多个控制寄存器中。
在各个代表性实施例中的任一者中,所述方法可进一步包括:将具有第二迭代计数的完成表存储于所述多个控制寄存器中。
在各个代表性实施例中的任一者中,所述方法可进一步包括:将具有多个线程标识符的循环表存储于所述多个控制寄存器中;及针对每一线程标识符,存储下一线程标识符以在当前线程执行之后执行。
在各个代表性实施例中的任一者中,所述方法可进一步包括:将第一迭代的识别及最后一个迭代的识别存储于所述多个控制寄存器中的循环表中。
在各个代表性实施例中的任一者中,所述方法可进一步包括:使用所述控制电路,对线程进行排队以用于在针对其线程标识符其完成计数已经递减到零时执行。
在各个代表性实施例中的任一者中,所述方法可进一步包括:使用所述控制电路,对线程进行排队以用于在针对其线程标识符其完成计数已经递减到零且其线程标识符是下一线程时执行。
在各个代表性实施例中的任一者中,所述方法可进一步包括:使用所述控制电路,对线程进行排队以用于在针对其线程标识符其完成计数指示任何数据依赖性的完成时执行。在各个代表性实施例中的任一者中,完成计数可指示在所选择线程执行之前将针对多个线程中的每个所选择线程接收的完成消息的预定数目。
在各个代表性实施例中的任一者中,所述方法可进一步包括:将具有多个类型的线程标识符的完成表存储于所述多个控制寄存器中,其中每一类型的线程标识符指示用于循环及嵌套循环执行的循环级。
在各个代表性实施例中的任一者中,所述方法可进一步包括:将具有有效数目个循环线程的循环计数的完成表存储于所述多个控制寄存器中,且其中响应于将线程标识符传回到线程标识符池的异步架构消息的接收,使用所述控制电路使所述循环计数递减,且当所述循环计数达到零时,传输异步架构完成消息。
在各个代表性实施例中的任一者中,所述方法可进一步包括:将线程标识符堆叠的顶部存储于所述多个控制寄存器中以允许每一类型的线程标识符存取所选择循环的私有变量。
在各个代表性实施例中的任一者中,所述方法可进一步包括:使用接续队列,存储具有允许执行的完成计数但尚不具有经指派线程标识符的计算线程的一或多个线程标识符。
在各个代表性实施例中的任一者中,所述方法可进一步包括:使用重入队列,存储具有允许执行的完成计数且具有经指派线程标识符的计算线程的一或多个线程标识符。
在各个代表性实施例中的任一者中,所述方法可进一步包括:在具有所述接续队列中的线程标识符的任何线程的执行之前执行具有所述重入队列中的线程标识符的任何线程。
在各个代表性实施例中的任一者中,所述方法可进一步包括:在具有所述接续队列或所述重入队列中的线程标识符的任何线程的执行之前执行具有优先级队列中的线程标识符的任何线程。
在各个代表性实施例中的任一者中,所述方法可进一步包括:一旦出现线程标识符的辐条计数,就执行运行队列中的任何线程。
在各个代表性实施例中的任一者中,所述方法可进一步包括:使用控制电路自调度计算线程以进行执行。
在各个代表性实施例中的任一者中,所述方法可进一步包括:使用条件逻辑电路,分支到不同第二下一指令以由下一可配置电路执行。
在各个代表性实施例中的任一者中,所述方法可进一步包括:使用所述控制电路对计算线程进行排序以进行执行。
在各个代表性实施例中的任一者中,所述方法可进一步包括:使用所述控制电路对循环计算线程进行排序以进行执行。
在各个代表性实施例中的任一者中,所述方法可进一步包括:使用所述控制电路,响应于来自数据依赖性的一或多个完成信号开始计算线程的执行。
从本发明的以下详细描述及其实施例、从权利要求书及附图,将容易地明白本发明的众多其它优点及特征。
附图说明
在参考以下揭示内容后在连同附图考虑时将更容易地了解本发明的目的、特征及优点,其中相似参考数字用于识别各个图中的相同组件,且其中具有字母字符的参考数字用于识别各个图中的所选择组件实施例的额外类型、实例化或变化,其中:
图(Figure/FIG.)1是混合计算系统的代表性第一实施例的框图。
图2是混合计算系统的代表性第二实施例的框图。
图3是混合计算系统的代表性第三实施例的框图。
图4是具有耦合到第一互连网络的可配置计算电路系统的混合线程架构的代表性实施例的框图。
图5是混合线程架构电路集群的代表性实施例的一部分的高级框图。
图6是混合线程架构电路集群内的第二互连网络的高级框图。
图7是混合线程架构电路集群的代表性实施例的详细框图。
图8是混合线程架构可配置计算电路(图块)的代表性实施例的详细框图。
图9、9A及9B(其中图9被分成图9A及9B(且统称为图9))共同地是混合线程架构可配置计算电路(图块)的代表性实施例的详细框图。
图10是混合线程架构可配置计算电路(图块)的存储器控制电路的代表性实施例的详细框图。
图11是混合线程架构可配置计算电路(图块)的线程控制电路的代表性实施例的详细框图。
图12是形成同步域的代表性混合线程架构可配置计算电路(图块)及代表性异步分组网络消息传递的图。
图13是存储器接口的代表性实施例的框图。
图14是分派接口的代表性实施例的框图。
图15是任选第一网络接口的代表性实施例的框图。
图16是形成同步域的代表性混合线程架构可配置计算电路(图块)及用于由混合线程架构电路集群执行计算的代表性异步分组网络消息传递的图。
图17A、17B及17C(统称为图17)是用于由混合线程架构电路集群执行图16的计算的由混合线程架构可配置计算电路(图块)进行的代表性异步分组网络消息传递及执行的流程图。
图18是形成同步域的代表性混合线程架构可配置计算电路(图块)及用于由混合线程架构电路集群执行计算的代表性异步分组网络消息传递的图。
图19A及19B(统称为图19)是用于由混合线程架构电路集群执行图18的计算的由混合线程架构可配置计算电路(图块)进行的代表性异步分组网络消息传递及执行的流程图。
图20是形成同步域的代表性混合线程架构可配置计算电路(图块)及用于由混合线程架构电路集群在计算中执行循环的代表性异步分组网络消息传递的图
图21是用于由混合线程架构电路集群在图20的计算中执行循环的由混合线程架构可配置计算电路(图块)进行的代表性异步分组网络消息传递及执行的流程图。
图22是代表性流量控制电路的框图。
图23是形成同步域的代表性混合线程架构可配置计算电路(图块)及用于由混合线程架构电路集群在计算中执行循环的代表性异步分组网络消息传递及同步消息传递的图。
图24是条件分支电路系统的代表性实施例的框图及电路图。
具体实施方式
虽然本发明可具有呈许多不同形式的实施例,但在图中展示且将在本文中详细描述本发明的特定示范性实施例,应理解,应将本发明视作本发明的原理的范例且不希望将本发明限于说明的特定实施例。在此方面中,在详细解释与本发明一致的至少一个实施例之前,应理解,本发明在其应用中不限于上文及下文陈述、图中说明或如实例中所描述的构造细节及组件布置。与本发明一致的方法及设备能够具有其它实施例且能够以各种方式实践及实施。而且,应理解,本文中以及下文包含的摘要说明书采用的措辞及术语是出于描述的目的,且不应被认为具有限制性。
图1、2及3是混合计算系统100A、100B、100C(统称为系统100)的代表性第一、第二及第三实施例的框图。图4是具有耦合到第一互连网络150的可配置计算电路系统的混合线程架构(“HTF”)200的代表性实施例的框图。图5是混合线程架构集群205的代表性实施例的一部分的高级框图。图6是混合线程架构集群205内的第二互连网络的高级框图。图7是混合线程架构(HTF)集群205的代表性实施例的详细框图。
图8是称为“图块”210的混合线程架构可配置计算电路210的代表性实施例的高级框图。图9、9A及9B(其中图9被分成图9A及9B(且统称为图9))共同为称为“图块”210A(作为图块210的特定代表性实例化)的混合线程架构可配置计算电路210A的代表性实施例的详细框图。除非明确地称为图块210A,否则对图块210的参考应个别地及共同地表示及指代图块210及图块210A。混合线程架构可配置计算电路210称为“图块”210,这是因为在代表性实施例中所有此类混合线程架构可配置计算电路210都是彼此相同的且可按任何顺序排列及连接,即,每一混合线程架构可配置计算电路210可经“平铺”以形成混合线程架构集群205。
参考图1到9,混合计算系统100包含混合线程处理器(“HTP”)300,其通过第一互连网络150耦合到一或多个混合线程架构(“HTF”)电路200。应理解,本文中所使用的术语“架构”表示且包含计算电路阵列,其在此情况中是可重新配置计算电路。图1、2及3展示不同系统100A、100B及100C布置,其包含形成相对较大及较小系统100的额外组件,其中任一者及其全部都在本发明的范围内。如各自可为适于芯片上系统(“SOC”)的布置的图1及2中展示,举例来说且无限制,混合计算系统100A、100B在所说明的各个组合中还可任选地包含可耦合到存储器125(其也可为单独集成电路)的存储器控制器120、各个通信接口130中的任一者(例如PCIe通信接口)、一或多个主机处理器110及主机接口(“HIF”)115。如各自可为适于共同衬底101上的“小芯片”配置的布置的图3中展示,举例来说且无限制,混合计算系统100C还可任选地包含通信接口130,其具有或不具有这些其它组件。这些布置中的任一者及全部这些布置都在本发明的范围内,且在本文中统称为系统100。这些混合计算系统100中的任一者也可被认为是在单个操作系统(“OS”)下操作的“节点”,且同样也可耦合到其它此类本地及远程节点。
本文中所使用的混合线程是指跨不同异构类型的处理电路(硬件)(例如跨HTF电路200(作为可重新配置计算架构))及跨处理器(例如RISC-V处理器)派生多个计算纤程(fiber)及线程的能力。混合线程还指代一种编程语言/风格,其中工作线程从一个计算元素过渡到下一计算元素以将计算移动到数据所定位之处,其也经实施于代表性实施例中。而且,在代表性实施例中,HTP 300是基于RISC-V ISA的多线程处理器。HTP 300提供筒式(barrel-style)循环瞬时线程切换以维持较高每时钟指令速率。主机处理器110通常是多核处理器,其可经嵌入于混合计算系统100内,或其可为经由通信接口130(例如基于PCIe的接口)耦合到混合计算系统100中的外部主机处理器。在下文更详细描述这些处理器,例如HTP 300及一或多个主机处理器110。
存储器控制器120可如在电子领域中已知或变为已知那样实施。替代地,在代表性实施例中,存储器控制器120可如相关申请案中描述那样实施。存储器125也可如在电子领域中已知或变为已知那样实施,及如下文更详细描述那样实施。
出于本文中的目的,HIF 115提供主机处理器110以将工作发送到HTP 300及HTF电路200,且提供HTP 300以将工作发送到HTF电路200,两者都作为通过第一互连网络150传输的工作描述符分组。HIF 115包含分派电路及队列(简称为“分派队列”105),其还提供用于监测提供到HTF电路200及/或HTP 300的负载及HTF电路200及/或HTP 300的资源可用性的管理功能性。当资源在HTF电路200及/或HTP 300上可用时,分派队列105确定经最少加载的HTF电路200及/或HTP 300。在具有相同或类似工作加载的多个HTF电路集群205的情况中,如果可能的话,其选取当前正执行相同内核的HTF电路集群205(以避免必须加载或重新加载内核配置)。HIF 115的类似功能性也可包含于HTP 300中,例如,尤其是针对可能不包含单独HIF 115的系统100的布置。下文更详细描述其它HIF 115的功能。HIF 115可如在电子领域中已知或变为已知那样实施,例如,经实施作为具有寄存器的一或多个状态机(形成FIFO、队列等)。
第一互连网络150是在HTF电路200、混合线程处理器300与其它任选组件(例如存储器控制器120、通信接口130及主机处理器110)之间及之中提供数据分组路由的基于分组的通信网络。取决于系统100的实施例,第一互连网络150通常经体现为具有折叠式克劳斯配置且通常针对额外连接具有网状网络的多个纵横式交换机。出于本发明的目的,第一互连网络150形成异步交换架构(“AF”)的部分,这意味着数据分组可沿着各个路径中的任一者路由,使得取决于路由,任何所选择数据分组到达经寻址目的地处可在多个不同时间中的任一者出现。此与下文更详细论述的第二互连网络250的同步网状通信网络275形成对比。
HTF电路200通常又包括多个HTF电路集群205,其中每一HTF电路集群205耦合到第一互连网络150以进行数据分组通信。每一HTF电路集群205可独立于其它HTF电路集群205中的每一者进行操作。每一HTF电路集群205又包括在本文中等效地称为“图块”210的多个HTF可重新配置计算电路210的阵列及第二互连网络250。图块210经嵌入于第二互连网络250中或以其它方式耦合到第二互连网络250,第二互连网络250包括在下文更详细地论述的两种不同类型的网络。在代表性实施例中,每一HTF电路集群205还包括存储器接口215、任选第一网络接口220(其提供用于耦合到第一互连网络150的接口)及分派接口225。各个存储器接口215、分派接口225及任选第一网络接口220可使用例如一或多个状态机电路的任何适当电路系统来实施以执行下文更详细指定的功能性。
作为概述,HTF电路200是由经互连计算图块210组成的粗粒度可重新配置计算架构。图块210与称为同步网状通信网络275的同步架构互连,从而允许数据在无需排队的情况下从一个图块210遍历到另一图块210。此同步网状通信网络275允许使许多图块210管线化在一起以通过算术运算产生连续数据流,且通过同步网状通信网络275连接以用于执行一或多个计算线程的图块210的每一此管线在本文中称为“同步域”,其可具有串行连接、并行连接,且还潜在地具有分支连接。同步域的第一图块210在本文中称为“基础”图块210。
图块210还与称为允许计算的同步域通过异步操作桥接的异步分组网络265的异步架构互连,其中在代表性实施例中异步分组网络265上的所有分组都能够在单个时钟周期中传递。这些异步操作包含启动同步域操作、将数据从一个同步域传送到另一同步域、存取系统存储器125(读取及写入)及执行分支及循环构建。同步架构与异步架构一起允许图块210有效地执行高级语言构建。异步分组网络265在许多方面不同于第一互连网络150,举例来说且无限制,包含需要更少寻址、是单通道、在基于深度的背压下排队及利用紧缩数据操作数(例如具有128个位的数据路径)。应注意,同样举例来说且无限制,各个图块210的内部数据路径也是128个位。举例来说且无限制,在图16、18、20中说明同步域的实例及同步域通过异步分组网络265彼此通信的实例。
在代表性实施例中,在多数情况下,线程(例如,内核)执行及控制信令在这两个不同网络之间分离,其中线程执行使用同步网状通信网络275发生以形成各个图块210的多个同步域,且控制信令使用通过异步分组网络265在各个图块210之间及之中传输的消息传递分组发生。举例来说,多个可配置电路适于使用同步网状通信网络275执行多个计算以形成多个同步域,且所述多个可配置电路进一步适于通过异步分组网络265产生及传输多个控制消息,举例来说且无限制,其中所述多个控制消息包括一或多个完成消息及继续消息。
在代表性实施例中,第二互连网络250通常包括两种不同类型的网络,其各自在图块210之间及之中提供数据通信,第一异步分组网络265与第二同步网状通信网络275叠加或组合,如图6及7中说明。异步分组网络265由以下组成:多个AF交换机260,其通常经实施为纵横式交换机(举例来说且无限制,其可或可不另外或任选地具有克劳斯或折叠式克劳斯配置);及多个通信线(或电线)280、285,其将AF交换机260连接到图块210、在图块210与下文论述的其它说明的组件之间及之中提供数据分组通信。同步网状通信网络275通过通信线(或电线)270在图块210之间及之中提供多个直接(即,不切换的点到点)连接,其可被寄存器暂存(register-staged)在图块210的输入及输出处,但在其它方面无需在图块210之间排队且无需形成数据分组。(在图6中,为了更好地说明两个网络与嵌入于第二互连网络250中的图块210的叠加,将图块210表示为同步网状通信网络275的顶点,且将AF交换机260说明为“X”,如指示。)
参考图8,图块210包括一或多个可配置计算电路155、控制电路系统145、一或多个存储器325、配置存储器(例如,RAM)160、同步网络输入135(其耦合到同步网状通信网络275)、同步网络输出170(其也耦合到同步网状通信网络275)、异步(分组)网络输入140(其耦合到异步分组网络265)及异步(分组)网络输出165(也耦合到异步分组网络265)。展示这些各个组件中的每一者通过总线180、185以所说明的各个组合彼此耦合。电子领域的技术人员将认识到,在图块210中可包含更少或更多组件以及各种耦合组合中的任一者,其中任一者及全部都被认为是等效的且在本发明的范围内。
下文参考图9说明及论述这些各个组件中的每一者的代表性实例。举例来说,在代表性实施例中,一或多个可配置计算电路155经体现为乘法及移位运算电路(“MS Op”)305及算术逻辑及位运算电路(“ALB Op”)310,举例来说且无限制,具有相关联配置能力(例如通过中间多路复用器365)及相关联寄存器(例如寄存器312)。而且,在代表性实施例中,同样举例来说且无限制,一或多个可配置计算电路155可包含写入掩码生成器375及条件(分支)逻辑电路系统370。同样在代表性实施例中,举例来说且无限制,控制电路系统145可包含存储器控制电路系统330、线程控制电路系统355及控制寄存器340,例如针对图块210A说明的那些元件。继续实例,同步网络输入135可由输入寄存器350及输入多路复用器355组成,同步网络输出170可由输出寄存器350及输出多路复用器395组成,异步(分组)网络输入140可由AF输入队列360组成,且异步(分组)网络输出165可由AF输出队列390组成且还可包含或共享AF消息状态机345。
显著地且如下文更详细论述,配置存储器(例如,RAM)160由配置电路系统(例如配置存储器多路复用器372)及执行不同配置功能的两种不同配置存贮器组成,两种不同配置存贮器是:第一指令RAM 315(其用于配置图块210的内部数据路径)及第二指令(及索引)RAM 320,在本文中称为“辐条”RAM 320(其用于多种目的,尤其包含配置图块210的独立于当前指令的部分、选择下一图块210的当前指令及指令、及选择主同步输入,全都如下文更详细论述)。
如图8及图9中说明,将通信线(或电线)270说明为通信线(或电线)270A及270B,使得通信线(或电线)270A是将数据馈送到输入寄存器350中的“输入”(输入通信线(或电线)),且通信线(或电线)270B是从输出寄存器380移动数据的“输出”(输出通信线(或电线))。在代表性实施例中,存在进出每一图块210、往返于每一邻近图块(例如,同步网状通信网络275的上行链路、下行链路、左行链路及右行链路)及往返于用于各个信号(例如数据写入掩码、停止信号及从一个图块210提供到另一图块210的指令或指令索引)的分布的其它组件的通信线(或电线)270的多个集合或总线,如下文更详细论述。替代地,且未单独说明,还可存在各种专用通信线,例如用于断言停止信号,使得可在有限数目个时钟周期内由HTF电路集群205中的所有其它图块210迅速地接收从HTF电路集群205中的任何图块210产生的停止信号。
应注意,在形成同步网状通信网络275的通信线的各个集合或总线中存在各种字段。举例来说,图8及图9分别说明传入及外送通信线(或电线)270A及270B的四个总线。这些通信线(或电线)270A及270B的集合中的每一者可载送不同信息,例如数据、指令索引、控制信息及线程信息(例如TID、XID、循环依赖性信息、用于选择有效位的写入掩码位等)。输入270A中的一者还可经标示为主同步输入,包含图块210内部的输入(来自输出的反馈),举例来说且无限制,其可针对图块210的每一时间切片不同,其可具有用于同步域的所述图块210的指令索引的数据,在下文进行更详细论述。
另外,如下文更详细论述,针对接收于同步网状通信网络275上且保持于(同步网络输入135的)一或多个输入寄存器350中的任何输入,每一图块210可将所述输入直接传送到(同步网络输出170的)一或多个输出寄存器380以输出(通常在单个时钟周期上)到同步网状通信网络275的另一位置,借此允许第一图块210经由一或多个中间第二图块210与HTF电路集群205内的任何其它第三图块210通信。此同步网状通信网络275启用图块210之间及之中的经静态调度的同步管线的配置(及重新配置),使得一旦线程沿着图块210之间及之中的所选择数据路径起始(作为同步域),数据处理的完成就将在固定时间段内发生。另外,同步网状通信网络275用于最小化对存储器125的任何所需存取的数目,这是因为完成针对沿着图块210之间及之中的所选择数据路径执行的所述线程的计算可能不需要对存储器125的存取。
在异步分组网络265中,每一AF交换机260通常通过通信线(或电线)280耦合到多个图块210及一或多个其它AF交换机260。另外,一或多个所选择AF交换机260(通过通信线(或电线)285)还耦合到存储器接口215、任选第一网络接口220及分派接口225中的一或多者。如说明,作为实例且无限制,HTF电路集群205包含单个分派接口225、两个存储器接口215及两个任选第一网络接口220。同样如所说明,作为实例且无限制,除了耦合到其它AF交换机260之外,AF交换机260中的一者进一步耦合到存储器接口215、任选第一网络接口220及分派接口225,而AF交换机260中的另一者进一步耦合到存储器接口215及任选第一网络接口220。
取决于所选择实施例,存储器接口215及分派接口225中的每一者还可直接连接到第一互连网络150,具有通过第一互连网络150及异步分组网络265两者接收、产生及传输数据分组的能力,且第一网络接口220不用于或包含于HTF电路集群205中。举例来说,分派接口225可由各个图块210中的任一者用来将数据分组传输到第一互连网络150及从第一互连网络150传输数据分组。在其它实施例中,存储器接口215及分派接口225中的任一者可利用第一网络接口220通过第一互连网络150接收、产生及传输数据分组,例如使用第一网络接口220提供第一互连网络150所需的额外寻址。
电子领域的技术人员将认识到,AF交换机260、图块210、任选第一网络接口220、存储器接口215与分派接口225之间及之中的连接可以具有任何所选择数目个组件且具有任何全部此类组件选择的任何所选择组合及被认为是等效且在本发明的范围内的组合出现。电子领域的技术人员将认识到,将HTF电路200分成多个HTF集群205是不需要的,且仅提供概念划分以便于描述各个组件及各个组件之间及之中的连接。举例来说,虽然HTF电路集群205被说明为具有16个图块210,具有4个AF交换机260、单个分派接口225、2个存储器接口215及2个第一网络接口220(任选的),但在HTF电路集群205或HTF电路200中的任一者或两者中可包含更多或更少个这些组件中的任一者,且如下文更详细描述,针对任何所选择实施例,HTF电路集群205可经分区以改变在任何所选择时间可为作用的(例如,通电且起作用)的组件的数目及类型。
同步网状通信网络275允许在无需数据排队的情况下使多个图块210管线化。参与同步域的所有图块210用作单个管线化数据路径。形成单个管线化数据路径的此图块210序列中的第一图块在本文中称为同步域的“基础”图块210,且此基础图块210启动通过管线化图块210的工作线程。基础图块210负责以预定义节奏起始工作,在本文中称为“辐条计数”。作为实例,如果辐条计数是3,那么基础图块210可每隔三个时钟就启动工作。还应注意,还可使每一图块210内的计算管线化,使得在其它指令正在执行时可执行不同指令的部分,例如在当前操作正在执行时输入数据用于下一操作。
图块210、存储器接口215及分派接口225中的每一者具有相异或唯一地址(例如,作为5位宽端点ID)作为任何所选择HTF电路集群205内的目的地或端点。举例来说,图块210可具有端点ID 0到15,存储器接口215(0及1)可具有端点ID 20及21,且分派接口225可具有端点ID 18(其中没有地址被提供到任选第一网络接口220,除非其包含于所选择实施例中)。分派接口225接收含有将由图块210中的一或多者执行的工作的数据分组,指代工作描述符分组,其已经配置用于各种操作,如下文更详细论述。工作描述符分组将具有一或多个自变量,接着,分派接口225将把所述一或多个自变量作为通过AF交换机260传输到所选择经寻址图块210的分组或消息(AF消息)提供或分布到各个图块,且进一步将通常包含图块存储器325中用以存储数据(自变量)的区域的识别及用于跟踪及识别相关联计算及其完成的线程标识符(“ID”)。
消息通过异步分组网络265从源端点路由到目的地端点。从不同源到相同目的地的消息采用不同路径且可遇到不同等级的拥塞。消息可按与在将其发送出去时不同的顺序到达。消息传递机制经构造以依非确定性到达顺序适当地工作。
图13是存储器接口215的代表性实施例的框图。参考图13,每一存储器接口215包括状态机(及其它逻辑电路系统)480、一或多个寄存器485及任选地一或多个队列474。状态机480在异步分组网络265及第一互连网络150上接收、产生及传输数据分组。寄存器485存储寻址信息,例如图块210的虚拟地址、给定节点内的物理地址及用以将虚拟地址转译成物理地址的各种表。任选队列474存储等待在第一互连网络150及/或异步分组网络265上传输的消息。
存储器接口215允许HTF电路集群205内的图块210向系统存储器125(例如DRAM存储器)提出请求。由存储器接口215支持的存储器请求类型是负载、存储及原子。从存储器接口215的角度来看,负载将地址发送到存储器125且数据被传回。写入将地址及数据两者发送到存储器125且完成消息被传回。原子操作将地址及数据两者发送到存储器125且数据被传回。应注意,仅从存储器接收数据(即,提取并递增)的原子将被存储器接口215处置为负载请求。所有存储器接口215操作需要单个64位虚拟地址。用于操作的数据大小可从单个字节变为64个字节。较大数据有效负载大小对装置更有效且可被使用;然而,数据有效负载大小将受高级语言编译程序检测对大数据块的存取的能力控管。
图14是分派接口225的代表性实施例的框图。参考图14,分派接口225包括状态机(及其它逻辑电路系统)470、一或多个寄存器475及一或多个分派队列472。状态机470在异步分组网络265及第一互连网络150上接收、产生及传输数据分组。寄存器475存储寻址信息,例如图块210的虚拟地址及跟踪分布到各个图块的配置及工作量的多种多样的表,在下文进行更详细论述。分派队列472存储等待在第一互连网络150及/或异步分组网络265上传输的消息。
如上提及,分派接口225通过第一互连网络150例如从主机接口115接收工作描述符调用分组(消息)。工作描述符调用分组将具有各种信息,例如有效负载(例如,配置、自变量值等)、调用标识符(ID)及传回信息(例如,用于将结果提供到那个端点)。分派接口225将创建各种AF数据消息以用于通过异步分组网络265传输到图块210,包含将数据写入到存储器325中,所述图块210将是基础图块210(基础图块ID,用于AF完成消息的传输)、线程ID(线程标识符或“TID”),且将接续消息发送到基础图块210(例如,以每一TID的完成计数及其它计数),使得一旦基础图块210已接收足够的完成消息其就可开始执行。分派接口225将用以跟踪每线程ID及XID哪些内容已被传输到哪一图块210的各个表维持于寄存器475中。随着结果产生或执行完成,分派接口225将接收AF数据消息(指示完成且具有数据)或AF完成消息(指示完成但没有数据)。分派接口225还已(在寄存器475中)维持其将需要接收以知道内核执行已完成的完成及数据消息的数目的各种计数,且接着,将经由第一互连网络150组装及传输工作描述符传回数据分组与所得数据、调用ID、传回消息(例如,请求者的地址)并释放TID。分派接口225的额外特征及功能性在下文更详细地描述。
应注意,如上提及,多层(或多个类型)的TID可被利用且通常被利用。举例来说,分派接口225从TID池分配第一类型的TID,分派接口225将把第一类型的TID传输到基础图块210。举例来说且无限制,基础图块210又可分配额外TID(例如第二及第三类型的TID)例如以跟踪在循环及嵌套循环中利用的线程。接着,这些不同TID还可用于存取对给定循环是私有的变量。举例来说,第一类型的TID可用于外层循环,且第二及第三类型的TID可用于跟踪嵌套循环的迭代。
还应注意,单独事务ID用于通过第一互连网络150跟踪各种存储器请求。
图15是任选第一网络接口的代表性实施例的框图。参考图15,当经包含时,每一存储器接口220包括状态机(及其它逻辑电路系统)490及一或多个寄存器495。状态机490在异步分组网络265及第一互连网络150上接收、产生及传输数据分组。寄存器495存储寻址信息,例如图块210的虚拟地址、给定节点内的物理地址及用以将虚拟地址转译成物理地址的各种表。
再次参考图9,代表性HTF可重新配置计算电路(图块)210A包括至少一个乘法及移位运算电路(“MS Op”)305、至少一个算术逻辑及位运算电路(“ALB Op”)310、第一指令RAM315、在本文中称为“辐条”RAM 320的第二指令(及索引)RAM 320、一或多个图块存储器电路(或存储器)325(说明为存储器“0”325A、存储器“1”325B到存储器“N”325C,且个别地且统称为存储器325或图块存储器325)。另外,如先前提及,代表性图块210A通常还包含通过通信线(或电线)270A、270B耦合到异步网状通信网络275的输入寄存器350及输出寄存器380、及通过异步分组网络265的通信线(或电线)280耦合到AF交换机260的AF输入队列360及AF输出队列390。控制电路145通常还包含于图块210中,例如针对图块210A说明的存储器控制电路系统330、线程控制电路系统335及控制寄存器340。为了解码及准备(组装)从异步分组网络265接收或提供到异步分组网络265的数据分组,AF消息状态机345通常也包含于图块210中。作为图块210的可配置性的部分,通常包含一或多个多路复用器,说明为输入多路复用器355、输出多路复用器395及一或多个中间多路复用器365以用于选择到MS Op 305及ALBOp 310的输入。任选地,其它组件也可包含于图块210中,例如条件(分支)逻辑电路370、写入掩码生成器375及流量控制电路385(其被说明为经包含作为AF输出队列390的部分,且其可被等效地提供为单独流量控制电路)。MS Op 305及ALB Op 310的能力在下文进行更详细描述。
同步网状通信网络275传送使同步域起作用所需的信息。同步网状通信网络275包含下文指定的字段。另外,用于这些字段中的许多参数也经存储于控制寄存器340中且经指派到将在由多个图块210形成的同步域中执行的线程。同步网状通信网络275的指定字段包含:
1.数据,通常具有64个位的字段宽度,且包括在同步域中从一个图块210传送到下一图块210的计算得到的数据。
2.指令RAM 315地址,简称“INSTR”,通常具有8个位的字段宽度,且包括下一图块210的指令RAM 315地址。基础图块210指定域中的第一图块210的指令RAM 315地址。后续图块210可在未修改的情况下传递指令,或可针对下一图块210有条件地改变指令从而允许下文更详细地描述的允许条件执行(即,if-then-else或开关语句)。
3.线程标识符,在本文中称为“TID”,通常具有8个位的字段宽度,且包括内核的线程的唯一标识符,其中预定数目个TID(“TID池”)存储于控制寄存器340中且潜在地可由线程(如果尚未准备好由另一线程使用)使用。TID分配在同步域的基础图块210处且可用作到图块存储器325中的读取索引。TID可通过异步分组网络265从一个同步域传递到另一同步域。因为存在用以执行其它功能或计算的有限数目个可用TID,所以最终TID应被释放回到分配基础图块的TID池用于随后再次使用。释放使用通过异步分组网络265传输的异步架构消息来完成。
4.传送标识符,称为“XID”,通常具有8个位的字段宽度,且包括用于将数据从一个同步域传送到另一同步域的唯一标识符,其中预定数目个XID(“XID池”)存储于控制寄存器340中且潜在地可由一个线程使用(如果尚未准备好由另一线程使用)。传送可为从一个域到另一域的直接数据写入,作为“XID_WR”,或其可为存储器125读取的结果(作为“XID_RD”),其中源域将虚拟地址发送到存储器125且目的地域接收存储器读取数据。XID_WR分配在源域的基础图块210处。源域中的XID_WR变成目的地域中的XID_RD。XID_WR可用作目的地域中的图块存储器325的写入索引。XID_RD在目的地域中用作图块存储器325读取索引。因为存在有限数目个XID可供使用,所以为执行其它功能或计算,最终XID应被释放回到分配基础图块的XID池用于随后再次使用。目的地域应通过也经过异步分组网络265将异步消息发送到源域的基础图块210来释放XID。
异步网状通信网络275提供数据及控制信息两者。控制信息(INSTR、XID、TID)用于设置数据路径,且DATA字段可经选择作为经配置数据路径的源。注意,与数据字段相比,更早地需要控制字段(来配置数据路径)。为了最小化通过图块210的同步域管线延迟,控制信息比数据早几个时钟周期到达图块210。
HTF电路200及其复合HTF电路集群205及其复合图块210的架构的特定发明特征是使用两种不同配置RAM:用于数据路径配置的指令RAM 315及用于多个其它功能的辐条RAM320,包含图块210的独立于任何所选择或给定数据路径的部分的配置、数据路径指令从指令RAM 315的选择、每一时钟周期的主同步输入(在可用输入270A之中)的选择等。如下文更详细论述,指令RAM 315及独立辐条RAM 320两者的此新颖使用尤其实现HTF电路集群205及HTF电路200作为一个整体的动态自配置及自重新配置。
每一图块具有含有用以设置用于特定操作的图块210数据路径的配置信息的指令RAM 315,即,例如,确定乘法、移位、加法等是否将在图块210的给定时间切片中执行及使用哪些数据(例如,来自存储器325的数据或来自输入寄存器350的数据)执行的数据路径指令。指令RAM 315具有允许对图块210进行时间切割从而在经管线化同步域中执行多个不同操作的多个条目,其中在图9中说明图块210的代表性管线区段304、306、307、308及309。任何给定指令还可指定哪些输入270A将具有将被所述指令利用的数据及/或控制信息。另外,每一时间切片可取决于参考图24论述的先前图块210时间切片数据依赖性条件运算有条件地执行不同指令。指令RAM 315内的条目的数目通常将是大约256。所述数目可取决于从将内核移植到HTF 200获得的经验而改变。
支持指令集应匹配目标应用的需求,例如具有32及64位整数及浮点值的数据类型的应用。例如机器学习、图像分析及5G无线处理的额外应用可使用HTF 200执行。这整个应用集将需要16、32及64位浮点及8、16、32及64位整数数据类型。支持指令集需要支持用于加载、存储及算术运算的这些数据类型。所支持的运算需要允许编译程序有效地将高级语言源映射到图块210指令。在代表性实施例中,图块210支持与标准高性能处理器相同的指令集,包含单指令多数据(SIMD)指令变体。
辐条RAM 320具有多个功能,且在代表性实施例中,所述功能中的一者将用于配置独立于数据路径的当前指令的图块210的(时间切片的)部分,即,保持于辐条RAM 320中的图块210配置可用于配置图块210的配置的不变部分,例如,图块210的跨不同数据路径指令保持相同的那些设置。举例来说,辐条RAM 320用于指定图块210的哪一输入(例如,若干组输入通信线270A或输入寄存器350中的一者)是每一时钟周期的主同步输入,作为输入多路复用器355的选择控制。此是重要的,这是因为用以选择图块210的给定时间切片的指令(来自指令RAM 315)及线程ID(TID)的指令索引经提供于主同步输入上。因此,即使是提供于到给定图块210的输入270A上的实际指令索引可为可变的(如参考图24描述),哪一组输入270A将具有那个所选择指令索引也将不变,使得任何给定图块210独立于由那个所选择指令索引指定的指令提前知道其将使用哪一输入来接收所选择指令索引。保持于辐条RAM320中的配置通常还指定哪些输出270B将用于所选择指令(或时间切片)。辐条RAM 320读取地址输入(即,辐条索引)来自从零计数(取模)到辐条计数减1的计数器。HTF电路集群205内的所有图块210每一时钟通常应具有相同辐条RAM输入值以具有适当同步域操作。辐条RAM320还存储指令索引且还用于从指令RAM 315选择指令,使得随着辐条RAM 320的计数针对同步域的基础图块210改变,可选择一系列指令供图块210执行。针对同步域中的后续图块,指令索引可由同步域的先前图块210提供。辐条RAM 320的此方面还参考图24进行论述,因为辐条RAM 320是高度密集的,从而实现HTF电路集群205的动态自配置及重新配置。
辐条RAM 320还指定何时将同步输入270A写入到图块存储器325。如果图块指令需要多个输入且输入中的一者提早到达,就会出现此情况。提早到达的输入可被写入到图块存储器325,且接着稍后在其它输入已到达时从存储器325读取。针对此情况,如FIFO那样存取图块存储器325。FIFO读取及写入指针经存储于图块存储器区域ram中。
举例来说,每一图块210含有一或多个存储器325,且通常各自是数据路径的宽度(64位),且深度将在512到1024个元素的范围内。图块存储器325用于存储支持数据路径操作所需的数据。经存储数据可为作为内核的集群205配置的部分加载的常数或作为数据流的部分计算的变量。图块存储器325可从同步网状通信网络275写入作为来自另一同步域的数据传送或由另一同步域启动的加载操作的结果。仅经由同步数据路径指令执行读取图块存储器。
图块存储器325通常经分区成多个区域。小图块存储器区域RAM存储存储器区域存取所需的信息。每一区域表示内核中的不同变量。区域可存储共享变量(即,由所有执行线程共享的变量)。标量共享变量具有索引值0。共享变量阵列具有可变索引值。区域可存储由TID标识符索引的线程私有变量。变量可用于将数据从一个同步域传送到下一同步域。针对此情况,变量使用源同步域中的XID_WR标识符写入,且使用目的地域中的XIN_RD标识符读取。最后,区域可用于临时存储由图块210先前在同步数据路径中产生的数据直到其它图块数据输入就绪。针对此情况,读取及写入索引是FIFO指针。FIFO指针经存储于图块存储器区域RAM中。
图块存储器区域RAM通常含有以下字段:
1.区域索引高,其是图块存储器区域索引的高位。低索引位是从异步架构消息、TID、XID_WR或XID_RD标识符获得或从FIFO读取/写入索引值获得。区域索引高位与低索引位进行OR运算以产生图块存储器325索引。
2.区域SizeW,其是存储器区域的低索引的宽度。存储器区域的大小是2SizeW个元素。
3.区域FIFO读取索引,其是用作FIFO的存储器区域的读取索引。
4.区域FIFO写入索引,其是用作FIFO的存储器区域的写入索引。图块执行HTF 200的计算操作。
计算操作通过配置图块210内的数据路径来执行。存在执行图块210的所有计算的两个功能块:乘法及移位运算电路(“MS Op”)305及算术逻辑及位运算电路(“ALB Op”)310。MS Op 305及ALB Op 310受来自指令RAM 315的指令的控制,且可经配置以执行两个经管线化运算,举例来说且无限制,例如乘法及加法、或移位及加法。(在代表性实施例中,支持HTF200的所有装置将具有完整支持指令集。此将提供跨所有装置的二进制兼容性。然而,具有一组基础功能性及任选指令集类以满足裸片大小折衷可能是必要的。此方法类似于RISC-V指令集如何具有基础及多个任选指令子集。)如图9中说明,MS Op 305及ALBL Op 310的输出可经提供到寄存器312,或直接提供到其它组件,例如输出多路复用器395、条件逻辑电路系统370及/或写入掩码生成器375。
由MS Op 305执行的各种操作包含(举例来说且无限制):整数及浮点乘法、移位、传递任一输入、有符号及无符号整数乘法、有符号及无符号右移、有符号及无符号左移、位顺序逆转、置换、作为浮点运算的这些运算中的任一者及全部、及整数与浮点之间的互相转换,例如双精度向下取整运算或将浮点转换成整数。由ALB Op 310执行的各种运算包含(举例来说且无限制):有符号及无符号加法、绝对值、取否定、逻辑NOT、加算及取否定、减法A-B、反向减法B-A、有符号及无符号大于、有符号及无符号大于或等于、有符号及无符号小于、有符号及无符号小于或等于、比较(等于或不等于)、逻辑运算(AND、OR、XOR、NAND、NOR、NOTXOR、AND NOT、OR NOT)、作为浮点运算的这些运算中的任一者及全部者及整数与浮点之间的互相转换,例如向下取整运算或将浮点转换成整数。
到ALB Op 310及MS Op 305的输入是来自同步图块输入270A(保持于寄存器350中)、来自内部图块存储器325、或来自提供于指令RAM 315内的小常数值。展示图块210数据路径输入资源的下表1列出ALB Op 310及MS Op 305的典型输入。
表1:
图块210的输出270B中的每一者作为同步网状通信网络275的通信线270的部分个别地经启用从而允许对停用输出进行时钟门控。ALB Op 310的输出可经发送到表2中展示的多个目的地。
表2:
目的地命名 | 目的地描述 |
SYNC_U | 同步网状通信网络275上行链路 |
SYNC_D | 同步网状通信网络275下行链路 |
SYNC_L | 同步网状通信网络275左行链路 |
SYNC_R | 同步网状通信网络275右行链路 |
WRMEM0_Z | 写入存储器0。存储器325区域使用值0作为索引来写入。 |
WRMEM0_C | 写入存储器0。存储器325区域使用指令常数字段作为索引来写入。 |
WRMEM0_T | 写入存储器0。存储器325区域使用TID值作为索引来写入。 |
在高等级下,且全都作为代表性实例(无限制),图块210的一般操作如下。作为程序编译的部分且在配置被加载到系统中时,各个图块210的同步网状通信网络275及同步域全都被调度。除非暂停或停止,否则图块210可在所有需要输入都就绪时执行其操作,例如,数据变量在输入寄存器350或存储器325中且可用于从寄存器或存储器读取或获得且被使用,如下文更详细描述。在代表性实施例中,每一管线阶段可在单个时钟周期中操作,而在其它代表性实施例中,每管线阶段可利用额外时钟周期。在第一管线阶段304中,数据被输入,例如被输入到AF输入队列360及输入寄存器350中,且任选地被直接输入到存储器325中。在下一管线阶段306中,例如,AF消息由AF状态机345解码且被移到存储器325中;AF状态机345从存储器325读取数据或读取从输出多路复用器395接收的数据且产生数据分组以用于通过异步分组网络265进行传输;输入寄存器350中的数据被移到存储器325中或经选择作为操作数数据(使用输入多路复用器355及中间多路复用器365)或直接被传递到输出寄存器380以在同步网状通信网络275上进行输出。在下一管线阶段307及308中的一或多者中,由ALB Op 310及/或MS Op 305执行计算,写入掩码可由写入掩码生成器375产生,且指令(或指令索引)可基于条件(分支)逻辑电路系统370中的测试条件进行选择。在下一管线阶段309中,输出使用输出多路复用器395来选择,且输出消息(其可能已经存储于AF输出队列390中)在异步分组网络265上传输,且输出寄存器380中的任一者中的输出数据在同步网状通信网络275上传输。
图10是混合线程架构可配置计算电路(图块)210的存储器控制电路330(具有相关联控制寄存器340)的代表性实施例的详细框图。图10展示存储器控制电路330的图块存储器325读取索引逻辑的图,且经复制用于每一存储器325(未单独说明)。指令RAM 315具有指定图块存储器325的哪一区域正被存取的字段及指定存取索引模式的字段。存储器区域RAM405(控制寄存器340的部分)指定提供特定区域的高存储器地址位的区域读取掩码。掩码与由读取索引选择多路复用器403供应的低地址位进行OR运算(OR门408)。当图块存储器325在FIFO模式中进行存取时,区域RAM 405还含有读取索引值。RAM 405中的读取索引值经递增且当在FIFO模式中存取时被写回。在各个实施例中,存储器区域RAM 405还可通过嵌套循环维持TID堆叠的顶部,在下文描述。
图10还展示对同步网状通信网络275的控制信息(INSTR、XID、TID)的需要比数据输入早几个时钟。出于此原因,在发送数据之前的几个时钟从先前图块210发送出控制信息。同步网状通信网络275信息的此分阶段减少了每图块210的整体管线阶段,但其可使使用计算得到的值作为到图块存储器325的索引具有挑战性。具体来说,同步网状通信网络275数据可能太晚到达而不能用作到图块存储器325中的索引。对此问题的架构化解决方案是从控制寄存器340的可变索引寄存器中的先前图块210提供计算得到的索引。稍后,另一输入270A致使可变索引寄存器被用作图块存储器325索引。
异步分组网络265用于执行与同步域异步地发生的操作。每一图块210含有到异步分组网络265的接口,如图9中展示。入站接口(从通信线280A)是用以为无法立即处理的消息提供存储的AF输入队列360(作为FIFO)。类似地,出站接口(到通信线280B)是用以为无法立即发送出的消息提供存储的AF输出队列390(作为FIFO)。通过异步分组网络265的消息可被分类为数据消息或控制。数据消息含有被写入到图块存储器325中的一者的64位数据值。控制消息是用于控制线程创建、释放资源(TID或XID)或发出外部存储器参考。下表3列出异步分组网络265出站消息操作:
表3:
异步分组网络265允许消息被发送及在不同同步域中从图块210接收。这些是其中同步域向其自身发送消息有意义的几种情况,例如当同步域的基础图块210分配TID且TID将被同一同步域释放时。
如果各个图块210的同步域比消息可被异步分组网络265或接收端点接收、路由及处理更快地产生及发送消息,那么异步分组网络265可变为拥塞。在此情况中,提供背压机制以缓解任何此拥塞。图22是代表性流量控制电路385的框图。一般来说,每HTF电路集群205存在至少一个流量控制电路385。图块210异步架构输出队列390将在消息等待在异步分组网络265上发送时保持消息。为输出队列390提供预定阈值,当达到所述预定阈值时将致使图块210的输出队列390产生指示符,例如设置位,其被断言为通信线384上提供到流量控制电路385的“停止”信号382。来自HTF电路集群205中的图块210的每一通信线384被提供到流量控制电路385。流量控制电路385具有一或多个OR门386,其将继续断言通信线388上分布到受影响的HTF电路集群205内的所有图块210的停止信号382,只要图块210中的任一者正产生停止信号382。
停止信号382可通过并非所说明的同步网状通信网络275或异步分组网络265的部分的专用通信线388分布或通过同步网状通信网络275分布。在代表性实施例中,存在单个停止信号382,使得HTF电路集群205内的所有图块输出队列390都可断言,且HTF电路集群205内的所有图块210在停止信号382被断言时都被保持(暂停或停止)。此停止信号382继续允许所有AF输入队列360接收AF消息及分组,从而避免死锁,而且还导致所有同步域管线都被保持或暂停(这还防止额外AF数据分组产生)。停止信号382允许异步分组网络265将图块210输出队列390排空到其中输出队列390中的(触发输出队列390的)消息数目已经下降到低于阈值水平的点。一旦输出队列390的大小已经下降到低于阈值水平,就针对所述图块210将通过通信线384的信号返回到0(停止信号382不再产生)。当HTF电路集群205中的全部图块210都已经发生所述情况时,通信线388上的信号也返回到0,从而意味着停止信号不再被断言,且结束图块210上的停止或暂停。
同步域的第一或“基础”图块210有责任通过多图块210同步管线启动工作线程。可按预定节奏启动新的线程。节奏间隔在本文中称为上文所提及的“辐条计数”。举例来说,如果辐条计数是3,那么可每隔三个时钟在基础图块210上启动新的工作线程。如果起始新的线程被跳过(例如,无线程准备好起始),那么在可起始另一线程之前必须等待完整的辐条计数。大于1的辐条计数允许在同步管线内多次使用每一物理图块210。作为实例,如果同步域在单个物理图块上执行且辐条计数是1,那么同步域可含有单个图块时间切片。如果针对此实例辐条计数是4,那么同步域可含有4个图块时间切片。通常,同步域由通过同步网状通信网络275的同步链路互连的多个图块210执行。同步域不限于集群205内的图块210的子集,即,多个同步域可共享集群205的图块210。单个图块210可参与多个同步域,例如,辐条0,图块210在同步域“A”上工作;辐条1,图块210在同步域“B”上工作;辐条2,图块210在同步域“A”上工作;且辐条3,图块210在同步域“C”上工作。图块的线程控制在下文参考图11描述。
图11是混合线程架构可配置计算电路(图块)210的线程控制电路335(具有相关联控制寄存器340)的代表性实施例的详细框图。参考图11,数个寄存器包含于控制寄存器340内,即,TID池寄存器410、XID池寄存器415、暂停表420及完成表422。在各个实施例中,完成表422的数据可相等地保持于暂停表420中,且反之亦然。线程控制电路系统335包含继续队列430、重入队列445、线程控制多路复用器435、运行队列440、迭代递增447、迭代索引460及循环迭代计数465。替代地,继续队列430及运行队列440可相等地体现于控制寄存器340中。
图12是形成第一及第二同步域526、538的图块210及代表性异步分组网络消息传递的图。具有异步分组网络265的一个难点是所需数据可在不同时间到达图块210,这可使保证经起始线程可在固定管线延迟下运行到完成变得困难。在代表性实施例中,形成同步域的图块210不执行计算线程直到所有资源都就绪,例如通过具有可用的所需数据、任何所需变量等,其全部都已经通过异步分组网络265分布到图块,且因此可能已经在各个时间的任一者到达指定图块210。另外,数据可能必须从系统存储器125读取且通过异步分组网络265传送,且因此也可能已经在各个时间的任一者到达指定图块210。
为了使线程在固定管线延迟下运行到完成,代表性实施例提供由线程的TID在同步域的基础图块210处索引的完成表422(或暂停表420)。完成表422(或暂停表420)维持必须在启动线程的执行之前接收的相关性完成计数。完成表422(或暂停表420)包含命名为“完成计数”的字段,其在复位时被初始化到0。两种类型的AF消息用于修改计数字段。第一消息类型是线程开始或继续消息,且使字段递增在可在同步域中起始线程之前必须观测的相关性数目的计数。第二AF消息类型是完成消息且使计数字段递减指示完成消息被接收的1。一旦线程开始消息被接收且完成计数字段达到0,线程就准备好被起始。
如图12中说明,第一同步域526的图块210B已经通过异步分组网络265将AF存储器加载消息293传输到存储器接口215,其又将通过第一互连网络150产生另一消息296到系统存储器125以获得所请求数据(在消息297中传回)。然而,所述数据将由第二同步域538中的图块201E利用且被传输(消息294)到图块201E。随着第一同步域526已经完成管线的其部分,第一同步域526中的图块中的一者210C将AF继续消息291传输到第二同步域538的基础图块210D。所述AF继续消息291包含第一同步域526的线程的TID(例如,TID=1,其也被包含于图12的其它消息中)及完成计数1,其指示第二同步域538的基础图块210D将等待在第二同步域538上起始线程直到其已接收到一个完成消息。
因此,当例如图12中的图块210E的图块210接收此数据时,其通过将完成消息(具有线程ID(TID))发送回到基础图块210(此处,第二同步域538的基础图块210D)来确认所述接收。作为提供到基础图块210(在初始配置处或作为继续消息的部分)且存储于完成表422(或暂停表420)中作为完成计数的配置的部分,基础图块210D知道基础图块210必须接收多少此类完成消息以便开始由同步域(在此情况中,第二同步域538)的图块210执行。随着完成消息由基础图块210接收,针对具有所述TID的特定线程,使暂停表的完成计数递减且当其针对所述线程达到0(指示所有所需完成消息都已被接收)时,基础图块210可开始线程的执行。为了开始执行,将线程的TID传送到继续队列430,从继续队列430选择线程来运行(在图块210的适当时间切片的适当辐条计数处)。应注意,在线程的执行期间确定且可通过同步网状通信网络275在同步域的图块210之间传送的数据不需要完成消息。
此类型的线程控制存在若干优点。此线程控制在起始线程之前等待完成所有依赖性,从而允许经起始线程具有固定同步执行时间。固定执行时间允许贯穿管线使用寄存器级而非FIFO。另外,在图块210的一个线程可能正等待执行时,其它线程可能正在所述图块210上执行,从而提供高得多的整体处理量且最小化闲置时间且最小化未使用资源。
当横跨同步域时提供类似控制,例如以执行多个线程(例如,针对形成计算纤程的相关计算线程)。举例来说,第一同步域将在通过异步分组网络265传输的接续消息中通知下一同步域的基础图块210其将需要接收多少完成消息以便使其开始下一线程的执行。而且,例如,针对横跨同步域的迭代循环,第一同步域将在通过异步分组网络265传输的循环消息(具有循环计数及相同TID)中通知下一同步域的基础图块210其将需要接收多少完成消息以便使其开始下一线程的执行。
还应提及的是,可能需要实施各种延迟,例如当来自第一图块210的第一数据可用而第二数据仍正被第二图块210确定时,在由第三图块210进行的下一计算中将需要所述第一数据及第二数据两者。针对此类情况,延迟可引入在创建第一数据的第一图块210处的输出寄存器380处或引入于第三图块210的图块存储器325中。此延迟机制还适用于可使用第二图块210作为直通从第一图块210传送到第三图块210的数据。
暂停表420用于保持或暂停图块210中的新的同步线程的创建直到所有所需完成消息都已被接收。来自先前同步域的线程将消息发送到基础图块210,所述消息含有期望新的同步线程的完成消息的数目及当全部完成消息都已被接收时要采取的行动。所述行动包含:调用、继续或循环。许多暂停操作通常是同时有效的。用于特定暂停操作的所有消息(即,一组暂停及完成消息)将在相应消息内具有相同暂停索引。暂停索引是来自发送图块210的TID。暂停表420条目经初始化以在完成Δ计数是0的情况下是无效的。接收暂停消息使Δ计数递增所需完成计数的数目,且将暂停表420条目设置为有效的。接收完成消息使Δ计数递减1。应注意,完成消息可在相关联暂停消息之前到达,从而导致Δ计数是负数。当暂停表420条目在Δ计数是0的情况下有效时,则相关联活动(例如,新的线程)被初始化(且暂停表420条目被撤销激活)。
接续(或调用)队列430保持准备好在同步域上起始的线程。当调用操作的所有完成都被接收时,将线程推到接续队列430中。应注意,接续队列430中的线程可能需要在线程可在同步域上起始之前分配TID及/或XID,例如,如果所有TID都在使用中,那么一旦TID被释放且可用(即,线程可等到TID及/或XID可用),接续队列430中的线程就可被起始。
在执行具有优先于接续队列430中的线程的优先级的那些线程的情况下,重入队列445保持准备好在同步域上起始的线程。当继续操作的所有完成都被接收且线程已经具有TID时,将线程推到重入队列445中。应注意,重入队列445中的线程可能不需要TID的分配。提供单独重入队列445及继续(或接续)队列430来避免死锁情况。一种特殊类型的继续操作是循环。循环消息含有循环迭代计数。所述计数用于指定一旦暂停操作完成,线程将被起始的次数。
任选优先级队列425也可经实施,使得在具有接续队列430或重入队列445中的线程标识符的任何线程执行之前执行具有优先级队列425中的线程标识符的任何线程。
当起始循环操作的线程时使用迭代索引460状态。迭代索引460被初始化到0且针对每一线程起始递增。迭代索引460与来自继续队列430的线程信息一起被推到运行队列440中。迭代索引460可用作对同步域的第一图块(基础图块)210内的数据路径输入多路复用器365的选择。
循环迭代计数465被接收作为循环消息的部分、保存于暂停表420中、被推到继续队列430中且接着用于确定适当数目个线程何时被起始用于循环操作。
运行队列440保持具有经指派TID及/或XID且可在适当辐条计数时钟已经出现时执行的准备好运行的线程。TID池410随着线程在同步域上起始将唯一线程标识符(TID)提供到线程。仅接续队列430内的线程可以获取TID。XID池415随着线程在同步域上起始将唯一传送标识符(XID)提供到线程。来自继续队列430的线程可以获取XID。经分配XID变成经起始线程的XID_WR。
针对将执行的任何给定或所选择程序,针对所述程序以任何适当或所选择编程语言写入或产生的代码或指令经编译用于系统100及经加载到系统100中,包含用于HTP 300及HTF电路200的指令,且其中任一者可适用于主机处理器110,以将所选择配置提供到系统100。因此,用于一或多个所选择计算的各个指令集经加载到每一图块210的指令RAM 315及辐条RAM 320中,且经加载到维持于每一图块210的存储器接口215及分派接口225中的各个寄存器中的任一者中,从而为HTF电路200提供配置,且取决于程序,还经加载到HTP 300中。
举例来说且无限制,内核用含有通常由主机处理器110或HTP 300产生的零个或多个自变量的工作描述符消息来起始以由一或多个HTF电路200执行。自变量在工作描述符AF消息内经发送到分派接口225。这些自变量提供线程特定输入值。主机处理器110或HTP 300使用其相应操作系统(“OS”)可将“主机”消息发送到初始化图块存储器325位置的内核,其中此类主机消息提供非线程特定值。典型的实例是发送由所有内核线程使用的数据结构的基础地址的主机消息。
发送到内核的主机消息被发送到加载内核的所有HTF电路集群205。此外,维持发送主机消息及发送内核分派的顺序。发送主机消息使所述内核在发送所述消息之前基本上闲置。完成消息保证图块存储器325写入在起始新的同步线程之前已经完成。
通过异步分组网络265的控制消息传递如下:
(1)分派接口225接收主机消息且将AF数据消息发送到目的地图块210。目的地图块210向所选择存储器写入AF数据消息的数据。
(2)目的地图块210将确认图块写入完成的AF完成消息发送到分派接口225。
(3)分派接口225保持所有新的内核线程都起始直到所有消息写入都已被确认。一旦确认,分派接口225就将AF调用消息传输到同步域的基础图块以起始线程。
分派接口225负责管理HTF电路集群205,包含:(1)与系统100软件交互以使HTF电路集群205准备好被过程使用;(2)将工作分派到HTF电路集群205的图块210,包含以一或多个内核配置加载HTF电路集群205;(3)将HTF电路集群205的上下文保存且还原到存储器125以获得断点及异常。如上提及,分派接口225的寄存器475可包含多种多样的表来跟踪哪些内容已被分派到各个图块210中的任一者及已从各个图块210中的任一者接收到哪些内容,例如跟踪在代表性实施例中利用的消息传递中的任一者。用于执行这些操作的分派接口225原始操作在表4中列出。
表4:
图16及17提供系统100内的消息传递及线程控制的实例,其中提供实例计算以展示同步网状通信网络275与异步分组网络265如何一起工作来执行简单内核,在此,求解简单的表达式R=*A+B。为了展示此消息传递,已跨两个不同同步域526及538划分计算。变量B作为主机消息被传递到所有HTF电路集群205,且地址A作为自变量被传递到工作描述符分组中的调用。结果R通过第一互连网络150在传回数据分组中被传递回。实例几乎不做计算,使得每所执行计算的消息数目十分高。当在一个循环内执行了大量计算使得每计算的消息数目较低时,HTF电路200具有高得多的性能。
图16是形成同步域的代表性混合线程架构可配置计算电路(图块)210及用于由HTF电路集群205执行计算的代表性异步分组网络消息传递的图。图17是用于由HTF电路集群205执行图16的计算的由混合线程架构可配置计算电路(图块)进行的代表性异步分组网络消息传递及执行的流程图。首先,主机处理器110发送消息504到节点内的所有HTF电路集群205(步骤506)。所述消息是变量B的值。所述消息含于通常称为工作描述符分组的单个数据分组中,其被写入到与过程相关联的HIF 115的分派队列105(在图1及2中说明)。HIF 115从分派队列105读取消息且将分组的副本发送到指派到过程的每一HTF电路集群205。经指派HTF电路集群205的分派接口225接收分组。还应注意,HIF 115跨所有HTP 300及HTF 200资源执行各种负载平衡功能。
主机处理器110发送调用消息508到指派到过程的一个HTF电路集群205(步骤510)。主机处理器110可手动标定要执行内核的特定HTF电路集群205,或允许HTF电路集群205被自动选择。主机处理器110将调用参数写入到与过程相关联的分派队列。调用参数包含内核地址、起始指令及单个自变量(变量A的地址)。主机接口(HIF)115读取队列化消息且将消息作为第一互连网络150上的数据分组转发到经指派HTF电路集群205,通常是具有最少负载的HTF电路集群205。
分派接口225接收主机消息(变量B的值)、等到对HTF电路集群205的所有先前调用都已完成及通过异步分组网络265使用AF消息512将值发送到第一所选择目的地图块210D(步骤514)。分派接口225具有存储于寄存器475中的针对指示目的地图块210D、图块存储器325及那个图块210D的存储器区域(在RAM 405中)的每一可能主机消息的信息表。图块210D使用消息信息将值写入到图块210D中的存储器325,且一旦值被写入到图块存储器,就经由异步分组网络265将写入完成AF消息516发送回到分派接口225(步骤518)。
分派接口225等待所有消息完成消息到达(在此情况中,仅单个消息)。一旦所有完成消息都已到达,分派接口225就在AF消息520中发送调用自变量(变量A的地址)到第二所选择目的地图块210B以将值写入到图块存储器325中(步骤522)。分派接口225具有存储于寄存器475中的指示目的地图块210B、图块存储器325及那个图块210B的存储器区域(在RAM405中)的调用自变量表。
分派接口225接着发送AF调用消息524到第一同步域526的基础图块210A(步骤528)。AF调用消息指示单个完成消息应在调用可起始通过同步图块210管线的执行之前被接收。所需完成消息尚未到达,所以调用被暂停。
一旦值被写入到那个图块210B的图块存储器325,写入完成消息530就由图块210B经由异步分组网络265发送到第一同步域526的基础图块210A(步骤532)。
基础图块210A已接收调用消息524及所需完成消息530两者,且现在准备好在同步域526(图块管线)上启动执行。基础图块210A通过经由同步网状通信网络275将初始指令及有效信号534提供到图块210B启动执行(步骤536)。基础图块210A从XID池415分配XID值以用于第一同步域526中。如果XID池415为空,那么基础图块210A必须等待起始同步管线直到XID可用。
随着执行进行,图块210B或第一同步域526内的另一图块210E发送AF继续消息540到第二同步域538的基础图块210C(步骤542)。继续消息含有必须在第二同步域538可启动执行之前到达的所需完成消息的数目(在此情况中,单个完成消息)。继续消息还包含传送ID(XID)。XID用作一个同步域526中的写入索引,且接着用作下一同步域538中的读取索引。XID将共同图块存储器索引从一个同步域提供到下一同步域。
图块210B或第一同步域526内的另一图块210F发送AF存储器加载消息544到HTF电路集群205的存储器接口215(步骤546)。消息含有请求ID、虚拟地址及将用作用于将加载数据写入到目的地图块210G存储器325的索引的XID。
存储器接口215接收AF加载消息及将虚拟地址转译成节点本地物理地址或远程虚拟地址。存储器接口215使用AF消息的请求ID以索引到存储于含有存储器请求的参数的寄存器485中的请求表中。存储器接口215用来自请求表的经转译地址及大小信息发出第一互连网络150的加载存储器请求分组548(步骤550)。
存储器接口215随后通过第一互连网络150用加载数据(变量A的值)接收存储器响应分组552(步骤554)。存储器接口215发送AF消息556到第二同步域538内的图块210G(步骤558)。AF消息含有变量A的值且使用来自存储于寄存器485中的请求表的参数将所述值写入到图块存储器。
一旦值被写入到图块存储器,就经由异步分组网络265将AF写入完成消息560发送到第二同步域538的基础图块210C(步骤562)。
第二同步域538的基础图块210C接收继续消息540及所需完成消息560两者,且准备好在第二同步域538(图块管线)上启动执行。基础图块210C通过将初始指令及有效信号564提供到第二同步域538的图块210(例如图块210H)启动执行(步骤566)。基础图块210C还从XID池分配XID值以用于第二同步域538中。
第二同步域内的图块210H执行从主机消息传入的B值与从系统存储器125读取的A值的加法运算(步骤568)。所得值是表达式的R值。
第二同步域内的图块210J将含有R值的AF消息570发送到分派接口225(步骤572)。AF消息含有来自基础图块210A的经分配XID值。XID值用作分派接口225内的针对存储于寄存器475中表的索引,寄存器475保持传回参数直到值被读取且传回消息已经产生以通过第一互连网络150传输。
来自第二同步域(图块210K)的AF消息574将分配于第一同步域中的XID值发送回到基础图块210A以被传回到XID池(步骤576)。将来自分派接口225的第一互连网络150消息578发送到HIF 115(步骤580)。HIF将传回工作描述符写入到分派传回队列。一旦第一互连网络150已发送传回分组,XID值就在AF消息582中由分派接口225发送到第二同步域538的基础图块210C以被传回到XID池(步骤584)。
应注意,在图16及17的此实例中,已利用许多图块210以便展示可用于线程控制的多种多样的AF消息。在实践中,尤其是针对此简单计算,可利用明显更少的图块210,例如来完全在单个同步域内执行计算。
在图18及19中提供跨多个同步域的线程控制的另一消息传递实例,其也使用异步分组网络265上的AF完成及继续消息。图18是形成同步域的代表性混合线程架构可配置计算电路(图块)及用于由混合线程架构电路集群执行计算的代表性异步分组网络消息传递的图。图19是用于由混合线程架构电路集群执行图18的计算的由混合线程架构可配置计算电路(图块)进行的代表性异步分组网络消息传递及执行的流程图。
针对此实例,分派接口225发送消息到第一同步域526的基础图块210A。消息在第一同步域526上起始线程。线程发送线程继续消息到第二同步域538。继续消息指示当特定数目个完成消息已被接收时将在第二同步域538上起始线程。第一同步域526发送导致暂停以完成及起始同步第二线程的完成消息到第二同步域538。第二线程将指示第二同步线程完成的完成消息发送回到分派接口225,从而完成经分派内核。释放TID及XID标识符的额外消息在图18中展示。
分派接口225已接收工作描述符分组602、保证了正确内核配置被加载、已确定XID及TID池非空,从而从存储于分派接口225内的寄存器475中的TID及XID池获得新工作线程的XID及TID值(步骤604)。分派接口225通过将AF调用消息606(具有经分配XID及TID值,例如,XID=3且(第一类型的)TID=11)发送到第一同步域526的基础图块210A起始内核执行(步骤608)。基础图块210A接收AF调用消息606、确定TID及XID池410、415非空、分配TID及XID值(例如,XID_WR=7且(第二类型的)TID=1),且辐条Ram 320正选择基础图块作为图块数据路径的输入(步骤610),使得其用由保持于其辐条Ram 320中的指令索引标示的第一指定指令开始执行,而非潜在地从可能已经由先前图块210提供的指令索引执行指令(例如,如下文关于条件执行更详细地论述)。
基础图块210A以经指派TID值(例如,(第二类型的)TID=1)、被从AF调用消息606指派值的XID_RD(例如,XID_RD=3)、被指派从XID池获得的值的XID_WR(例如,XID_WR=7)及来自AF调用消息606的TID(例如,(第一类型的)TID=11)起始通过第一同步域526的第一线程612(步骤614)。
随着计算在第一同步域526中进行,第一同步域526内的另一图块210B发送AF继续消息616到第二同步域538的基础图块210D(步骤618)。AF继续消息616提供当适当数目个完成消息已到达时在第二同步域538上起始第二线程所必需的信息。AF继续消息616包含具有指定所需完成消息的数目的值的完成计数字段。第一同步域526中的图块210C中的一者还将自由XID(例如,XID=3)消息641传输到分派接口225。
AF继续消息616可包含TID或XID_WR值作为到目的地基础图块210D上的暂停表420中的索引。暂停表积累接收到的完成消息且确定何时达到必要数目且可起始新的线程(步骤620)。发送AF继续消息616的图块210B发送所选择TID或XID_WR值作为PID(暂停表索引)且将同步域的下游TID值改为所选择值(例如,(第一类型的)TID=11,(第二类型的)TID=1)。此新的TID值在所有AF完成消息中传递以用作到基础图块210D的暂停表420中的索引。
以TID值(例如,(第一类型的)TID=11)将AF完成消息622发送到第二同步域538的基础图块210D(步骤624)。AF完成消息622使基础图块210D的暂停表420中的Δ计数字段的条目递减。AF完成消息622及AF继续消息616可按任何顺序到达。到达的最后一个消息将观察到,AF继续消息616已经到达且暂停表420中的Δ计数字段已经达到0。此条件指示暂停已经完成且第二同步线程626可被起始。基础图块210D还确定或观察到暂停操作已经完成,确定XID标识符值非空且分配XID(例如,XID=5),且辐条Ram正选择基础图块作为图块数据路径的输入(步骤628)。
接着,基础图块210D以被指派从AF继续消息616获得的值的TID及XID_RD(例如,(第一类型的)TID=11,(第二类型的)TID=1,XID_RD=7)起始通过第二同步域538的第二同步线程626(步骤630)。在步骤628中,向XID_WR指派从XID池获得的值(例如,XID_WR=5)。
当第二同步线程626的计算已经完成时,由第二同步域538的各个图块210发送若干内务处理消息。将AF自由TID消息632发送到第一同步域526的基础图块210A(步骤634),且接收基础图块210A将TID值添增到TID池410(步骤636),使得其再次可供使用。将AF自由XID消息638发送到第一同步域526的基础图块210A(步骤640),且接收基础图块210将XID值添增到XID池415(步骤642),同样使得其再次可供使用。将指示第二同步线程626已经完成的AF完成消息644发送到分派接口225(步骤646)。分派接口225具有预期完成消息的计数。AF完成消息644包含到分派接口的第二同步域538的XID_WR值及TID值((第一类型的)TID=11)。接着,分派接口225发送AF自由XID消息648到第二同步域538的基础图块210D(步骤650)。接着,接收基础图块210D将XID值添增到XID池415(步骤652),使得其再次可供使用。
数据传送操作用于将数据从一个同步域传送到下一同步域。通常,数据传送是结合从存储器125获得数据的加载操作使用。一旦加载数据已到达第二同步域538,在第二同步域538中就需要从第一同步域526计算得到的数据。在此情况中,将含有来自所有加载及数据传送操作的总完成消息计数的单个暂停从第一同步域526发送到第二同步域538。
接着,同步域之间的数据传送操作利用步骤624的变化。代替在步骤624中发送AF完成消息622,第一同步域526用数据将AF数据消息发送到第二同步域538。第二同步域538中的目的地图块210将AF数据消息内的数据写入到所选择图块存储器325。接着,接收AF数据消息的图块210发送AF完成消息到第二同步域538的基础图块210。一旦加载数据已到达第二同步域538,第二同步域538的基础图块210就在第二同步域538上开始第二线程。
对跨同步域的迭代线程循环的控制利用类似控制消息传递模式。循环消息流允许多个同步域从单个循环消息起始。经起始同步线程中的每一者能够存取其迭代索引。图20是形成同步域的代表性混合线程架构可配置计算电路(图块)及用于由混合线程架构电路集群在计算中执行循环的代表性异步分组网络消息传递的图。图21是用于由混合线程架构电路集群在图20的计算中执行循环的由混合线程架构可配置计算电路(图块)进行的代表性异步分组网络消息传递及执行的流程图。
图20展示三个同步域:第一同步域526、第二同步域538及第三同步域654。第一同步域526用于预循环设置,第二同步域538以线程数目的迭代计数(IterCnt)起始,且最后第三同步域654是后循环。应注意,循环同样也可使用索引的额外层而为嵌套式的,在下文更详细论述。
再次参考图11,控制寄存器340包含完成表422(或暂停表420)。针对循环,两类完成信息被维持于完成表422中:关于应在线程可起始之前到达的完成消息的数目的第一完成计数,如上文论述;及用以跟踪有多少循环线程已经起始及完成的第二循环或迭代(完成)计数。循环通过将含有循环计数(及各种TID,在下文论述)的AF循环消息发送到同步域的基础图块210来起始。循环计数经存储于完成表422(或暂停表420)中,且用于确定新的线程在同步域上起始的次数。在一个实施例中,每一线程都是以从TID池410获得的新的TID起始。举例来说,每一活动线程具有允许线程私有变量的唯一TID。向嵌套循环的线程提供对其自身TID加上外层循环的TID的的数据或变量的存取。在下文论述的第二实施例中,TID由循环的连续线程重复使用。
TID通过在线程正终止时从同步域内的图块发送的AF消息传回到TID池410,AF消息可为AF完成消息,或针对第二实施例,是AF重入消息。此也可通过到基础图块210的自由TID消息来实现。将TID传回到池或重复使用TID的AF消息还由循环基础图块210使用以维持有效循环线程的数目的计数维持在完成表422(或暂停表420)的循环计数中。当有效循环线程的数目达到0时,那么循环完成。当循环完成由转到0的循环计数检测到时,那么将AF完成消息发送到后循环同步域从而通知完成。此机制提供嵌套循环的最小(如果非零)闲置循环,从而导致更好性能。
参考图20及21,第一同步域526(说明为图块210B,尽管其可来自第一同步域526中的任何其它图块)发送AF继续消息656到第三后循环同步域654的基础图块210D(步骤658),以等待循环完成消息(其将来自第二同步域538)。第一同步域526中的图块中的一者,说明为图块210B,发送具有迭代(循环)计数的AF循环消息660到是第二同步域538的循环域的基础图块210C(步骤664)。基础图块210C在第二同步域538上起始循环(IterCnt)线程(662,例如,6620、6621到662N-1,其中“N”是迭代计数(IterCnt))。每一线程662具有相同TID及XID_RD标识符。XID_WR标识符由循环基础图块210C(如果被启用)分配。迭代索引(即,从0到IterCnt-1(N-1)排序)可作为循环域的基础图块210C中的数据路径多路复用器选择进行存取。
接着,循环域的每一迭代将AF完成消息666发送回到第二同步(循环)域538的基础图块210C(步骤668)。应注意,图20中展示的第二同步域538实际上可为若干同步域。针对其中多个同步域形成循环的情况,循环的最后一同步域的线程应传输AF完成消息666,使得后循环第三同步域654适当地等待所有循环操作都完成。一旦第二同步(循环)域538的基础图块210C都已接收所有迭代AF完成消息666,其就将循环AF完成消息(或AF接续消息)670发送到第三(后循环)同步域654的基础图块210D。
针对包含嵌套循环及双嵌套循环的循环,利用若干额外及新颖特征,例如以最小化闲置时间,举例来说且无限制,包含重入队列445及额外子TID,例如用于最外循环的TID2、用于中间(middle/intermediate)循环的TID1及用于最内循环的TID0。正在循环中执行的每一线程也具有唯一TID,例如用于将具有50个迭代的外层循环的TID2 0到49,还举例来说且无限制,其在每一迭代完成执行时也用于对应完成消息中。
再次参考图11,提供若干新颖机制以支持有效循环及最小化闲置时间。举例来说,具有数据依赖性结束条件的循环(例如,“while”循环)需要在循环被执行时计算结束条件。而且针对循环的控制及执行,如果所有TID都是从TID池410分配,但用于执行的队列的头部处的线程是新的线程,其由于缺少可用TID而无法执行,从而阻止无法完成且释放其经指派TID的其它循环线程,那么可发生潜在死锁问题。因此,在代表性实施例中,控制寄存器340包含针对准备好运行的线程的两个单独队列,其中第一队列用于启动新的循环(接续队列430,也用于非循环线程),且第二单独队列(重入队列445)用于循环接续。接续队列430从TID池410分配TID以起始线程,如先前论述。当循环线程的每一迭代执行且用先前分配的TID传输AF重入消息时,重入队列445使用先前分配的TID。重入队列445中的任何线程(TID)将在可在其它队列(接续队列430)中的线程(TID)之前移到运行队列440中。因此,一旦循环开始,循环迭代就十分快速地发生,其中循环的每一下一线程通过使用单独重入队列445快速地开始,且此外,无发生死锁问题的可能性。另外,重入队列445允许此快速执行,其对具有数据依赖性结束条件的循环十分重要,其现可有效地运行而不会中断产生数据依赖性结束条件的最后一个迭代。
再次参考图9及10,控制寄存器340包含存储器区域RAM 405。在各个实施例中,存储器区域RAM 405还可通过嵌套循环维持TID堆叠的顶部(用标识符),在下文描述。如上文提及,每一嵌套循环以一组新的(或重复使用的)TID启动线程。循环的线程可能需要存取其TID加上外层循环线程的TID。存取每一嵌套循环线程的TID允许存取每一线程的私有变量,例如上文描述的不同层或类型的TID,TID0、TID1及TID2。堆叠TID标识符的顶部指示活动线程的TID。堆叠TID标识符的顶部用于选择针对各种操作使用三个TID(TID0、TID1及TID2)中的哪一者。这三个TID及堆叠TID标识符的顶部包含于在同步网状通信网络275上传输的同步架构控制信息(或消息)中,所以是每一线程已知的。因为多个TID包含于同步架构消息内且包含堆叠TID标识符的顶部,所以多个TID允许嵌套循环中的线程从嵌套循环线程内的任何层存取变量。所选择TID加上图块存储器区域RAM 405标识符用于存取私有线程变量。
本发明的另一新颖特征是用以对循环线程执行排序以处置循环迭代相关性的机制,其还适应完成消息及通过异步分组网络265接收的数据中的任何延迟。图23是形成同步域的图块210及用于由混合线程架构电路集群在计算中执行循的代表性异步分组网络消息传递及同步消息传递的图。如图23中说明,在循环计算的执行中涉及除了预循环第一同步域526及后循环(第五)同步域654外的多个同步域682、684及686:第二同步域682、第三同步域684、第四同步域686。循环计算可为任何种类的循环,包含嵌套循环,且在此情况中,在各个循环内存在数据依赖性。举例来说,这些数据依赖性可在单个迭代内发生,例如当需要来自存储器125的信息时,包含通过异步分组网络265的AF消息传递。因此,线程执行应按经定义顺序进行,且不仅仅是在任何特定线程具有完成计数0时(意味着线程不等待任何数据,其中那个线程的所有完成消息都已经到达)。
为了提供有序的循环线程执行,在代表性实施例中,在完成表422中针对每一循环迭代利用额外消息传递及额外字段。循环基础图块210B提供在同步消息688中通过同步网状通信网络275传递到每一同步域682、684、686(即,传递到那个给定同步域中的每个连续图块210)的四个信息片段(针对每一循环迭代)及经由异步分组网络265到连续同步域的基础图块210的AF继续消息692(接着,其在同步消息中传递到那个给定同步域中的每一连续图块210)。接着,那四个信息字段经存储及索引于完成表422中且用于在循环执行前进时进行比较。四个信息片段是:指示循环的一组线程中的第一线程的第一旗标、指示循环的一组线程中的最后一线程的第二旗标、当前线程的TID及下一线程的TID。当前线程的TID从TID池获得,且下一线程的TID是来自将针对下一线程提供的池的TID。这四个信息片段由每一连续同步域的基础图块使用以对线程起始进行排序。如果其相关性计数已达到0且线程是循环的第一线程或线程TID等于先前起始的线程的下一TID,那么线程可被起始。
换种方式来说,线程控制电路系统330(其通常包含各种状态机)检查已接收所有数据完成(所以原本将准备好运行)的每一线程的完成表422,那个线程是否是要运行的下一线程(具有下一线程ID,例如,TID=4),且如果是,那么将线程(TID=4)移动到运行队列440中,且如果不是,那么不起始那个线程(例如,其数据完成计数转到0但具有TID=5的线程)但维持接着要起始的TID的索引。当具有下一TID的线程的数据完成递减到0(在此情况中,TID=4)时,所以所有完成消息都已到达,使那个线程排队执行,且将正执行的那个线程(TID=4)同样也具有下一TID,在此情况中,其下一TID是TID=5。因此,当具有TID=4的线程已完成时,线程控制电路系统330检查完成表422且现在确定线程(TID=5)是下一线程ID,且使那个线程排队执行。接着,当线程ID是最后一个TID时,在其执行之后,AF完成消息656被传输到后循环基础图块(在此情况中,210E)。应注意,额外字段在完成表422中的此使用可扩展到其中应维持线程执行的特定排序的任何情况。
图24是条件分支电路系统370的代表性实施例的框图及电路图。同步域,例如上文提及的第一、第二及第三同步域,是通过同步网状通信网络275按顺序或串联连接的一组经互连图块。线程的执行在同步域的第一图块210(称为基础图块210)处开始,且从那经由同步网状通信网络275的经配置连接前进到同步域的其它图块210。如图24中说明,当图块210已经配置为同步域的基础图块210时(因为那些配置已被在运行时间前被加载到HTF电路200中),配置存储器多路复用器372的选择374被设置为等于1,其借此选择辐条RAM 320以提供指令索引以从指令RAM 315选择指令。针对同步域的所有其它图块210,配置存储器多路复用器372的选择374被设置为等于0,其借此选择由同步域的图块210的序列中的先前图块210提供的指令索引。因此,基础图块210经由通信线(或电线)270B及270A的指定字段(或部分)(其已被标示为主同步输入,如上文提及)将要执行的指令索引(或指令)提供到域的下一第二图块。此后,默认情况下,此下一图块210及同步域的每一随后图块210将把相同指令提供到经连接图块210的每一下一图块210以执行,作为静态配置。
然而,在代表性实施例中,使用辐条RAM 320、指令RAM 315及条件分支电路系统370提供动态自配置的机制。参考图24,针对当前图块210,ALB Op 310可经配置以产生作为测试条件的结果的输出,测试条件例如(举例来说)一个输入是否大于第二输入。测试条件输入在通信线(或电线)378上被提供到条件分支电路系统370。当条件分支电路系统370被启用(通过提供于线(或电线)379上的指令的一或多个位)时,测试条件输出用于选择被提供到同步域的下一图块210的下一指令索引(或指令),例如针对下一图块210在“X”指令或“Y”指令之间做出选择,从而在第一或第二指令被选择时提供数据路径的条件分支。此条件分支也可被级联,例如,当下一图块210也被启用以提供条件分支时。通过选择用于下一图块210中的一或多者的下一指令,动态自配置及重新自配置在每一此HTF电路集群205中启用。
在代表性实施例中,条件分支电路系统370已经布置以取决于测试条件结果在两种不同指令之间做出选择或切换。分支启用经提供于当前(当前下一)指令的字段中的一者中,且被提供到条件分支电路系统370的AND门362,在AND门362处其与测试条件输出进行AND运算。取决于测试条件输出是逻辑“0”还是“1”,AND门362将产生逻辑“0”或“1”作为输出,其作为输入被提供到OR门364。当前下一指令索引的所选择字段的另一指定位,通常是下一指令索引的最低有效位(“LSB”),也被提供到OR门364,在OR门364处其与AND门362的输出进行OR运算。如果下一指令索引的LSB是0且其与AND门362的输出的逻辑“1”进行OR运算,那么作为输出的下一指令索引已递增1,从而将不同下一指令索引提供到下一图块210。如果下一指令索引的LSB是0且其与AND门362的输出的逻辑“0”进行OR运算,那么作为输出的下一指令索引尚未递增1,从而将相同下一指令索引提供到下一图块210。因此,当前图块210已有条件地指定要执行的经连接图块210的替代指令,从而在HTF电路集群205中实现一或多个选择语句的执行。替代指令通过使当前图块的数据路径产生布尔条件值及使用布尔值在当前图块的指令及作为下一指令索引提供到同步域中的下一图块210的替代指令之间做出选择来选择。也因此,当前图块210已经动态地配置了下一图块210等,从而导致每一HTF电路集群205中的动态自配置及重新自配置。
代表性实施例的众多优点是显而易见的。代表性设备、系统及方法提供一种能够为计算密集型内核提供高性能及高能效解决方案的计算架构,例如用于在感测、通信及分析应用(合成孔径雷达、5G基站)及图形分析应用(例如使用光谱技术、机器学习、5G联网算法及大模板代码的图形聚类)中使用的快速傅里叶变换(FFT)及有限脉冲响应(FIR)滤波器的计算,举例来说而无限制。
如本文中使用,“处理器”110、300可为任何类型的处理器或控制器,且可经体现为经配置、设计、编程或以其它方式适于执行本文中论述的功能性的一或多个处理器110、300。因为在本文中使用术语处理器或控制器,所以处理器110、300可包含使用单个集成电路(“IC”),或可包含使用多个集成电路或连接、布置或分组在一起的其它组件,例如控制器、微处理器、数字信号处理器(“DSP”)、阵列存储器、图形或图像处理器、并行处理器、多核存储器、定制IC、专用集成电路(“ASIC”)、现场可编程门阵列(“FPGA”)、自适应计算IC、相关联存储器(例如RAM、DRAM及ROM)及其它IC及组件,无论是模拟的还是数字的。因此,如本文中使用,术语处理器或控制器应被理解为等效地意味着且包含单个IC、或定制IC、ASIC、处理器、微处理器、控制器、FPGA、自适应计算IC或与相关联存储器(例如微处理器存储器或额外RAM、DRAM、SDRAM、SRAM、MRAM、ROM、FLASH、EPROM或E2PROM)一起执行本文中论述的功能的电路系统的一些其它分组的布置。处理器110、300与相关联存储器可经调适或配置(经由编程、FPGA互连或硬接线)以执行本发明的方法论,如本文中论述。举例来说,方法可经编程及存储于处理器110、300以及其相关联存储器(及/或存储器125)及其等效组件中,作为程序指令集或其它代码(或等效配置或其它程序)以在处理器110、300操作(即,通电及运行)时进行后续执行。等效地,当处理器110、300可整体或部分经实施为FPGA、定制IC及/或ASIC、FPGA时,定制IC或ASIC也可经设计、配置及/或硬接线以实施本发明的方法。举例来说,处理器110、300可经实施为模拟及/或数字电路、控制器、微处理器、DSP及/或ASIC(统称为“处理器”或“控制器”)的布置,其分别经硬接线、编程、设计、调适或配置以实施本发明的方法,包含可能结合存储器125来实施本发明的方法。
可包含数据储存库(或数据库)的存储器125、325可以任何数目种形式体现,包含体现于任何计算机或其它机器可读数据存储媒体、存储器装置或其它存储装置或通信装置内以进行信息的存储或通信,其是当前已知或将来可用的,包含(但不限于)存储器集成电路(“IC”)或集成电路的存储器部分(例如处理器130或处理器IC内的常驻存储器),无论是易失性还是非易失性的,无论是可装卸还是不可装卸的,包含(无限制)RAM、FLASH、DRAM、SDRAM、SRAM、MRAM、FeRAM、ROM、EPROM或E2PROM或任何其它形式的存储器装置,例如磁性硬驱动、光驱、磁盘或磁带驱动、硬盘驱动、其它机器可读存储装置或存储器媒体,例如软盘、CDRAM、CD-RW、数字多功能盘(DVD)或其它光学存储器或任何其它类型的存储器、存储媒体或数据存储设备或电路,取决于所选择实施例,其是已知或将变为已知的。存储器125、325可适于存储各种查找表、参数、系数、其它信息及数据、(本发明的软件的)程序或指令或其它类型的表(例如数据库表)。
如上文指示,处理器110、300使用本发明的软件及数据结构进行硬接线或编程,例如以执行本发明的方法。因此,本发明的系统及相关方法,包含配置存储器160的各种指令,可经体现为提供此编程或其它指令(例如上文论述的体现于非暂时性计算机可读媒体内的指令集及/或元数据)的软件。另外,元数据还可用于定义查找表或数据库的各种数据结构。通过实例且无限制,此软件可呈源代码或目标代码的形式。源代码进一步可经编译成某种形式的指令或目标代码(包含汇编语言指令或配置信息)。本发明的软件、源代码或元数据可经体现为任何类型的代码,例如C、C++、Matlab、SystemC、LISA、XML、Java、Brew、SQL及其变化(例如,SQL 99或私有版本的SQL)、DB2、Oracle或执行本文中论述的功能性的任何其它类型的编程语言,包含各种硬件定义或硬件建模语言(例如,Verilog、VHDL、RTL)及所得数据库文件(例如,GDSII)。因此,本文中所等效使用的“构建”、“程序构建”、“软件构建”或“软件”意味着且指代具有任何语法或签名的任何种类的任何编程语言,其提供或可经解译以提供(当实例化或加载到处理器或计算机中且执行时,例如,包含处理器110、300)指定的相关联功能性或方法。
本发明的软件、元数据或其它源代码及任何所得位文件(目标代码、数据库或查找表)可经体现于任何有形非暂时性存储媒体内,例如计算机或其它机器可读数据存储媒体中的任一者,作为计算机可读指令、数据结构、程序模块或其它数据,例如上文关于存储器125、325论述,例如软盘、CDROM、CD-RW、DVD、磁性硬驱动、光驱或任何其它类型的数据存储设备或媒体,如上文提及。
通信接口130用于适当连接到相关通道、网络或总线;例如,通信接口130可为电缆或无线接口提供阻抗匹配、驱动程序或其它功能,可为无线接口提供解调及模拟到数字转换,且可分别为处理器110、300及/或存储器125以及其它装置提供物理接口。一般来说,通信接口130取决于所选择实施例用于接收及传输数据,例如程序指令、参数、配置信息、控制消息、数据及其它相关信息。
通信接口130可如已知那样实施或可在所属领域中变为已知,以在HTF 200及/或处理器110、300及任何类型的网络或外部装置之间提供数据通信,例如无线、光学或电缆,及使用任何可适用标准(例如,(举例来说且无限制)各种PCI、USB、RJ 45、以太网(快速以太网、吉比特以太网、300ase-TX、300ase-FX等)、IEEE 802.11、蓝牙、WCDMA、WiFi、GSM、GPRS、EDGE、3G及上文提及的其它标准及系统中的一者),且可包含阻抗匹配能力、用以与较高电压控制总线介接的低电压处理器的电压漂移、电线或无线收发器及用以响应于来自处理器130的信令接通或关断各种线或连接器的各种开关机构(例如,晶体管)。另外,通信接口130还可经配置及/或调适以在系统100外部接收及/或传输信号,例如通过硬接线或RF或红外信令,例如,以实时接收信息以例如在显示器上进行输出。通信接口130可提供使用任何所选择架构提供到任何类型的总线或网络结构或媒体的连接。通过实例且无限制,此类架构包含工业标准架构(ISA)总线、增强型ISA(EISA)总线、微通道架构(MCA)总线、外围组件互联(PCI)总线、SAN总线或任何其它通信或信令媒体,例如以太网、ISDN、T1、卫星、无线等。
本发明将被视作本发明的原理的范例且不希望将本发明限于说明的特定实施例。在此方面中,应理解,本发明在其应用中不限于图中说明或实例中所描述的构造细节及上文及下文陈述的组件布置。与本发明一致的系统、方法及设备能够具有其它实施例且能够以各种方式实践及实施。
尽管已关于本发明的特定实施例描述了本发明,但这些实施例仅是说明性的且不限制本发明。在本文中的描述中,提供众多特定细节,例如电子组件、电子及结构连接、材料及结构变化的实例,以提供本发明的实施例的详尽理解。然而,相关领域的技术人员应认识到,可无需运用特定细节中的一或多者或运用其它设备、系统组合件、组件、材料、部件等而实践本发明的实施例。在其它例子中,未明确展示或详细描述众所周知的结构、材料或操作以避免使本发明的实施例的方面模糊。另外,各个图不是按比例绘制的且不应看作具限制性。
贯穿此说明书对“一个实施例”、“实施例”或特定“实施例”的参考意味着结合实施例描述的特定特征、结构或特性包含于本发明的至少一个实施例中且在所有实施例中是不必要的,且此外,不一定是指相同实施例。此外,本发明的任何特定实施例的特定特征、结构或特性可以任何合适的方式组合且与一或多个其它实施例组合成任何合适的组合,包含在不对应使用其它特征的情况下所选择特征的使用。另外,可作出许多修改来针对本发明的基本范围及精神调适特定应用、情况或材料。应理解,本文中描述及说明的本发明的实施例的各种变化及修改可能是鉴于本文中的教示且应被视作本发明的精神及范围的部分。
针对本文中数值范围的陈述,明确考虑在其之间具有相同精度的每一中介数字。举例来说,针对范围6到9,考虑除了6及9之外的数字7及8,且针对范围6.0到7.0,明确考虑数字6.0、6.1、6.2、6.3、6.4、6.5、6.6、6.7、6.8、6.9及7.0。另外,在任何组合中,考虑范围内的每个中介子范围,且其在本发明的范围内。举例来说,针对范围5到10,子范围5到6、5到7、5到8、5到9、6到7、6到8、6到9、6到10、7到8、7到9、7到10、8到9、8到10及9到10被考虑且在揭示范围的范围内。
还应了解,图中描绘的元件中的一或多者还可以更单独或集成方式实施,或在某些情况中,甚至被移除或使其不可操作,根据特定应用可能是有用的。整体形成的组件组合也在本发明的范围内,尤其是针对其中离散组件的分离或组合是不明确或难以分辨的实施例。另外,术语“耦合”在本文中的使用,包含呈其各种形式例如“耦合”或“可耦合”,意味着且包含任何直接或间接电、结构或磁性耦合、连接或附接、或用于此直接或间接电、结构或磁性耦合、连接或附接的调适或能力,包含整体形成的组件及经由或通过另一组件耦合的组件。
关于信号,本文中参考“表示(represent)”给定度量或“表示(representative)”给定度量的参数,其中度量是调整器或其输入或输出的至少部分的状态的测量值。如果参数与度量足够直接相关使得调整参数将能令人满意地调整度量,那么认为参数表示度量。如果参数表示度量的倍数或分数,那么可认为参数是度量的可接受表示。
此外,应认为图(drawings/Figures)中的任何信号箭头仅是示范性的,且不具限制性,除非另外明确提及。还将认为步骤的组件的组合是在本发明的范围内,尤其是在分离或组合的能力是不明确或不可预见的情况下。如本文中且贯穿以下权利要求书使用,分离性术语“或”通常希望意味着“及/或”,具有结合及分离意义(且不限于“互斥或”意义),除非另外指示。如本文中的描述中且贯穿所附权利要求书使用,“一(a/an)”及“所述”包含复数参照物,除非上下文另外明确指示。而且,如本文中的描述中且贯穿所附权利要求书使用,“在…中”的意义包含“在…中”及“在…上”,除非上下文另外明确指示。
本发明的所说明的实施例的前文描述(包含在发明内容及说明书摘要中描述的内容)不希望是详尽的或将本发明限制于本文中揭示的精确形式。从前述内容应观察到,希望众多变化、修改及替代,且可在不背离本发明的新颖概念的精神及范围的情况下达到目的。应理解,没有意图或不应推断出对本文中说明的特定方法及设备的限制。当然,希望由所附权利要求书涵盖落入权利要求书范围内的所有此类修改。
Claims (20)
1.一种可配置电路,其包括:
可配置计算电路;
配置存储器,其耦合到所述可配置计算电路、所述控制电路系统、所述同步网络输入及所述同步网络输出,所述配置存储器包括:
第一指令存储器,其存储用以配置所述可配置计算电路的数据路径的多个数据路径配置指令;及
第二指令及指令索引存储器,其存储用于下一可配置计算电路的下一数据路径指令或下一数据路径指令索引的选择的多个辐条指令及数据路径配置指令索引;及
条件逻辑电路,其耦合到所述可配置计算电路,其中取决于来自所述可配置计算电路的输出,所述条件逻辑电路适于通过修改提供于所述多个同步网络输出中的所选择输出上的所述下一数据路径指令或下一数据路径指令索引来提供条件分支。
2.根据权利要求1所述的可配置电路,其中取决于来自所述可配置计算电路的输出,所述条件逻辑电路适于通过在所述多个同步网络输出中的所选择输出上直接提供所述下一数据路径指令或下一数据路径指令索引而无需修改来提供条件分支。
3.根据权利要求1所述的可配置电路,其中所述条件逻辑电路在启用时适于通过对所述下一数据路径指令的最低有效位与来自所述可配置计算电路的所述输出进行OR运算以指定所述下一数据路径指令或数据路径指令索引来提供条件分支。
4.根据权利要求1所述的可配置电路,其中所述条件逻辑电路在启用时适于通过对所述下一数据路径指令的最低有效位与来自所述可配置计算电路的所述输出进行OR运算以指定所述下一数据路径指令索引来提供条件分支。
5.根据权利要求1所述的可配置电路,其中所述条件逻辑电路在未启用时所述条件逻辑电路适于在所述多个同步网络输出中的所选择输出上直接提供所述下一数据路径指令或下一数据路径指令索引而无需修改。
6.根据权利要求1所述的可配置电路,其中所述第二指令及指令索引存储器进一步存储用于所述多个同步网络输入的主同步输入的选择的多个辐条指令及数据路径配置指令索引。
7.根据权利要求1所述的可配置电路,其中所述第二指令及指令索引存储器进一步存储用于所述可配置计算电路的当前数据路径配置指令的选择的多个辐条指令及数据路径配置指令索引。
8.根据权利要求1所述的可配置电路,其进一步包括:
第二控制存储器电路,其耦合到所述可配置计算电路;及
控制电路,其耦合到所述可配置计算电路,所述控制电路包括:
存储器控制电路;
线程控制电路;及
多个控制寄存器。
9.根据权利要求1所述的可配置电路,其进一步包括:
控制电路,其耦合到所述可配置计算电路,所述控制电路包括:
存储器控制电路;
线程控制电路;及
多个控制寄存器,其中所述多个控制寄存器存储循环表,所述循环表具有多个线程标识符且针对每一线程标识符,具有用于在当前线程的执行之后执行的下一线程标识符以提供有序线程执行。
10.根据权利要求1所述的可配置电路,其进一步包括:
控制电路,其耦合到所述可配置计算电路,所述控制电路包括:
存储器控制电路;
多个控制寄存器,其中所述多个控制寄存器存储具有第一数据完成计数的完成表;及
线程控制电路,其适于对线程进行排队以用于在针对其线程标识符其完成计数已经递减到零且其线程标识符是所述下一线程时执行。
11.根据权利要求1所述的可配置电路,其进一步包括:
控制电路,其耦合到所述可配置计算电路,所述控制电路包括:
存储器控制电路;
多个控制寄存器;及
线程控制电路,其包括:
接续队列,其存储具有允许执行的完成计数但尚不具有经指派线程标识符的计算线程的一或多个线程标识符;及
重入队列,其存储具有允许执行的完成计数且具有用经指派线程标识符的计算线程的一或多个线程标识符以提供所述重入队列中的所述线程根据指定辐条计数的执行。
12.根据权利要求1所述的可配置电路,其进一步包括:
异步网络输入队列,其耦合到异步分组网络;
异步网络输出队列,其耦合到所述异步分组网络;及
控制电路,其耦合到所述可配置计算电路,所述控制电路包括:
存储器控制电路;
多个控制寄存器,其存储线程标识符池及具有有效数目个循环线程的循环计数的完成表;及
线程控制电路,其中响应于将线程标识符传回到所述线程标识符池的异步分组网络消息的接收,所述控制电路使所述循环计数递减,且当所述循环计数达到零时,传输异步分组网络完成消息。
13.一种系统,其包括:
异步分组网络;
同步网络;及
经布置成阵列的多个可配置电路,所述多个可配置电路中的每一可配置电路耦合到所述同步网络及所述异步分组网络两者,所述多个可配置电路适于使用所述同步网络执行多个计算来形成多个同步域,且所述多个可配置电路进一步适于通过所述异步分组网络产生及传输多个控制消息,所述多个控制消息包括一或多个完成消息及继续消息;
其中所述多个可配置电路中的每一可配置电路包括:
可配置计算电路;
配置存储器,其耦合到所述可配置计算电路、所述控制电路系统、所述同步网络输入及所述同步网络输出,所述配置存储器包括:
第一指令存储器,其存储用以配置所述可配置计算电路的数据路径的多个数据路径配置指令;及
第二指令及指令索引存储器,其存储用于下一可配置计算电路的下一数据路径指令或下一数据路径指令索引的选择的多个辐条指令及数据路径配置指令索引;及
条件逻辑电路,其耦合到所述可配置计算电路,其中取决于来自所述可配置计算电路的输出,所述条件逻辑电路适于通过修改提供于所述多个同步网络输出中的所选择输出上的所述下一数据路径指令或下一数据路径指令索引来提供条件分支。
14.根据权利要求13所述的系统,其中取决于来自所述可配置计算电路的输出,所述条件逻辑电路适于通过在所述多个同步网络输出中的所选择输出上直接提供所述下一数据路径指令或下一数据路径指令索引而无需修改来提供条件分支。
15.根据权利要求13所述的系统,其中所述条件逻辑电路在启用时适于通过对所述下一数据路径指令的最低有效位与来自所述可配置计算电路的所述输出进行OR运算以指定所述下一数据路径指令或数据路径指令索引来提供条件分支。
16.根据权利要求13所述的系统,其中所述条件逻辑电路在启用时适于通过对所述下一数据路径指令的最低有效位与来自所述可配置计算电路的所述输出进行OR运算以指定所述下一数据路径指令索引来提供条件分支。
17.根据权利要求13所述的系统,其中所述条件逻辑电路在未启用时所述条件逻辑电路适于在所述多个同步网络输出中的所选择输出上直接提供所述下一数据路径指令或下一数据路径指令索引而无需修改。
18.根据权利要求13所述的系统,其中所述第二指令及指令索引存储器进一步存储用于所述多个同步网络输入的主同步输入的选择及用于所述可配置计算电路的当前数据路径配置指令的选择的多个辐条指令及数据路径配置指令索引。
19.根据权利要求13所述的系统,其进一步包括:
控制电路,其耦合到所述可配置计算电路,所述控制电路包括:
存储器控制电路;
多个控制寄存器,其中所述多个控制寄存器存储具有第一数据完成计数的完成表;及
线程控制电路,其适于对线程进行排队以用于在针对其线程标识符其完成计数已经递减到零且其线程标识符是所述下一线程时执行。
20.一种可配置电路,其包括:
可配置计算电路;
第一存储器电路,其耦合到所述可配置计算电路;
多个同步网络输入及输出,其耦合到所述可配置计算电路;
异步网络输入队列及异步网络输出队列;
第二配置存储器电路,其耦合到所述可配置计算电路、所述控制电路系统、所述同步网络输入及所述同步网络输出,所述第二配置存储器包括:
第一指令存储器,其存储用以配置所述可配置计算电路的数据路径的多个数据路径配置指令;及
第二指令及指令索引存储器,其存储:用于所述同步网络输入的主同步输入的选择、用于所述可配置计算电路的当前数据路径配置指令的选择及用于下一可配置计算电路的下一数据路径指令或下一数据路径指令索引的选择的多个辐条指令及数据路径配置指令索引;
条件逻辑电路,其耦合到所述可配置计算电路,其中取决于来自所述可配置计算电路的输出,所述条件逻辑电路适于通过修改提供于所述多个同步网络输出中的所选择输出上的所述下一数据路径指令或下一数据路径指令索引来提供条件分支;及
控制电路,其耦合到所述可配置计算电路,所述控制电路包括:
存储器控制电路;
多个控制寄存器,其中所述多个控制寄存器存储具有第一数据完成计数的完成表;及
线程控制电路,其适于对线程进行排队以用于在针对其线程标识符其完成计数已经递减到零从而指示任何数据依赖性的完成且其线程标识符是所述下一线程时执行。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862651140P | 2018-03-31 | 2018-03-31 | |
US62/651,140 | 2018-03-31 | ||
PCT/US2019/025080 WO2019191743A1 (en) | 2018-03-31 | 2019-03-31 | Conditional branching control for a multi-threaded, self- scheduling reconfigurable computing fabric |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111971652A true CN111971652A (zh) | 2020-11-20 |
CN111971652B CN111971652B (zh) | 2024-06-04 |
Family
ID=68056278
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980022372.5A Active CN111971652B (zh) | 2018-03-31 | 2019-03-31 | 多线程自调度可重新配置计算架构的条件分支控制 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11119768B2 (zh) |
EP (1) | EP3776188A1 (zh) |
KR (1) | KR102465213B1 (zh) |
CN (1) | CN111971652B (zh) |
WO (1) | WO2019191743A1 (zh) |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102454405B1 (ko) * | 2018-03-31 | 2022-10-17 | 마이크론 테크놀로지, 인크. | 멀티 스레드, 자체 스케줄링 재구성 가능한 컴퓨팅 패브릭에 대한 효율적인 루프 실행 |
US11003451B2 (en) * | 2018-03-31 | 2021-05-11 | Micron Technology, Inc. | Execution control of a multi-threaded, self-scheduling reconfigurable computing fabric |
EP3776243A1 (en) * | 2018-03-31 | 2021-02-17 | Micron Technology, Inc. | Backpressure control using a stop signal for a multi-threaded, self-scheduling reconfigurable computing fabric |
CN112055853B (zh) * | 2018-03-31 | 2024-04-09 | 美光科技公司 | 用于多线程自调度可重新配置计算架构的电路及系统 |
US11119768B2 (en) * | 2018-03-31 | 2021-09-14 | Micron Technology, Inc. | Conditional branching control for a multi-threaded, self-scheduling reconfigurable computing fabric |
CN111177067B (zh) * | 2019-12-13 | 2023-09-19 | 广东高云半导体科技股份有限公司 | 一种片上系统 |
US11294848B1 (en) | 2020-10-20 | 2022-04-05 | Micron Technology, Inc. | Initialization sequencing of chiplet I/O channels within a chiplet system |
US11693690B2 (en) | 2020-10-20 | 2023-07-04 | Micron Technology, Inc. | Method of completing a programmable atomic transaction by ensuring memory locks are cleared |
US11436187B2 (en) | 2020-10-20 | 2022-09-06 | Micron Technology, Inc. | Method of notifying a process or programmable atomic operation traps |
US11409533B2 (en) | 2020-10-20 | 2022-08-09 | Micron Technology, Inc. | Pipeline merging in a circuit |
US11586443B2 (en) | 2020-10-20 | 2023-02-21 | Micron Technology, Inc. | Thread-based processor halting |
US11740929B2 (en) | 2020-10-20 | 2023-08-29 | Micron Technology, Inc. | Registering a custom atomic operation with the operating system |
US12020062B2 (en) | 2020-10-20 | 2024-06-25 | Micron Technology, Inc. | Method of executing programmable atomic unit resources within a multi-process system |
US11379365B2 (en) | 2020-10-20 | 2022-07-05 | Micron Technology, Inc. | Memory access bounds checking for a programmable atomic operator |
US11507453B2 (en) | 2020-10-20 | 2022-11-22 | Micron Technology, Inc. | Low-latency register error correction |
US11526361B2 (en) | 2020-10-20 | 2022-12-13 | Micron Technology, Inc. | Variable pipeline length in a barrel-multithreaded processor |
US11403023B2 (en) | 2020-10-20 | 2022-08-02 | Micron Technology, Inc. | Method of organizing a programmable atomic unit instruction memory |
US11803391B2 (en) | 2020-10-20 | 2023-10-31 | Micron Technology, Inc. | Self-scheduling threads in a programmable atomic unit |
US11614942B2 (en) | 2020-10-20 | 2023-03-28 | Micron Technology, Inc. | Reuse in-flight register data in a processor |
US11409539B2 (en) | 2020-10-20 | 2022-08-09 | Micron Technology, Inc. | On-demand programmable atomic kernel loading |
US11431653B2 (en) | 2020-10-20 | 2022-08-30 | Micron Technology, Inc. | Packet arbitration for buffered packets in a network device |
US11586439B2 (en) | 2020-10-20 | 2023-02-21 | Micron Technology, Inc. | Detecting infinite loops in a programmable atomic transaction |
US11614891B2 (en) | 2020-10-20 | 2023-03-28 | Micron Technology, Inc. | Communicating a programmable atomic operator to a memory controller |
US11907718B2 (en) * | 2020-12-31 | 2024-02-20 | Micron Technology, Inc. | Loop execution in a reconfigurable compute fabric using flow controllers for respective synchronous flows |
US11698853B2 (en) | 2020-12-31 | 2023-07-11 | Micron Technology, Inc. | Saturating local cache in memory-compute systems |
CN112965689B (zh) * | 2021-02-26 | 2023-05-09 | 西安微电子技术研究所 | 一种基于源同步的分布式异步fifo数据交互方法及fifo结构 |
US11740800B2 (en) | 2021-06-22 | 2023-08-29 | Micron Technology, Inc. | Alleviating memory hotspots on systems with multiple memory controllers |
US11762661B2 (en) | 2021-07-28 | 2023-09-19 | Micron Technology, Inc. | Counter for preventing completion of a thread including a non-blocking external device call with no-return indication |
US11768626B2 (en) | 2021-08-11 | 2023-09-26 | Micron Technology, Inc. | Stencil data access from tile memory |
US11861366B2 (en) | 2021-08-11 | 2024-01-02 | Micron Technology, Inc. | Efficient processing of nested loops for computing device with multiple configurable processing elements using multiple spoke counts |
US11604650B1 (en) | 2021-08-11 | 2023-03-14 | Micron Technology, Inc. | Packing conditional branch operations |
US11886728B2 (en) | 2021-08-13 | 2024-01-30 | Micron Technology, Inc. | Undo capability for memory devices |
US11709796B2 (en) | 2021-08-16 | 2023-07-25 | Micron Technology, Inc. | Data input/output operations during loop execution in a reconfigurable compute fabric |
US11853216B2 (en) | 2021-08-16 | 2023-12-26 | Micron Technology, Inc. | High bandwidth gather cache |
US11704130B2 (en) | 2021-08-16 | 2023-07-18 | Micron Technology, Inc. | Indexing external memory in a reconfigurable compute fabric |
US11841823B2 (en) | 2021-08-16 | 2023-12-12 | Micron Technology, Inc. | Connectivity in coarse grained reconfigurable architecture |
US11782725B2 (en) | 2021-08-16 | 2023-10-10 | Micron Technology, Inc. | Mask field propagation among memory-compute tiles in a reconfigurable architecture |
US11507493B1 (en) | 2021-08-18 | 2022-11-22 | Micron Technology, Inc. | Debugging dataflow computer architectures |
US11860800B2 (en) * | 2021-08-20 | 2024-01-02 | Micron Technology, Inc. | Kernel mapping to nodes in compute fabric |
US11675588B2 (en) * | 2021-08-20 | 2023-06-13 | Micron Technology, Inc. | Tile-based result buffering in memory-compute systems |
US12039335B2 (en) * | 2022-03-25 | 2024-07-16 | Micron Technology, Inc. | Schedule instructions of a program of data flows for execution in tiles of a coarse grained reconfigurable array |
US11815935B2 (en) | 2022-03-25 | 2023-11-14 | Micron Technology, Inc. | Programming a coarse grained reconfigurable array through description of data flow graphs |
US12118224B2 (en) | 2022-04-08 | 2024-10-15 | Micron Technology, Inc. | Fine grained resource management for rollback memory operations |
US11960403B2 (en) | 2022-08-30 | 2024-04-16 | Micron Technology, Inc. | Variable execution time atomic operations |
US11940919B2 (en) | 2022-08-30 | 2024-03-26 | Micron Technology, Inc. | Recall pending cache line eviction |
US11899953B1 (en) | 2022-08-30 | 2024-02-13 | Micron Technology, Inc. | Method of efficiently identifying rollback requests |
US12038868B2 (en) | 2022-08-31 | 2024-07-16 | Micron Technology, Inc. | Context load mechanism in a coarse-grained reconfigurable array processor |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7635987B1 (en) * | 2004-12-13 | 2009-12-22 | Massachusetts Institute Of Technology | Configuring circuitry in a parallel processing environment |
CN102144225A (zh) * | 2008-05-29 | 2011-08-03 | 阿克西斯半导体有限公司 | 实时数据处理方法和装置 |
EP2441013A1 (en) * | 2009-06-12 | 2012-04-18 | Graeme Roy Smith | Shared resource multi-thread processor array |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5442797A (en) * | 1991-12-04 | 1995-08-15 | Casavant; Thomas L. | Latency tolerant risc-based multiple processor with event driven locality managers resulting from variable tagging |
US5684980A (en) | 1992-07-29 | 1997-11-04 | Virtual Computer Corporation | FPGA virtual computer for executing a sequence of program instructions by successively reconfiguring a group of FPGA in response to those instructions |
US5892962A (en) | 1996-11-12 | 1999-04-06 | Lucent Technologies Inc. | FPGA-based processor |
US6452915B1 (en) * | 1998-07-10 | 2002-09-17 | Malibu Networks, Inc. | IP-flow classification in a wireless point to multi-point (PTMP) transmission system |
US6108346A (en) * | 1998-08-27 | 2000-08-22 | Xiox Corporation | Combined synchronous and asynchronous message transmission |
US6230260B1 (en) * | 1998-09-01 | 2001-05-08 | International Business Machines Corporation | Circuit arrangement and method of speculative instruction execution utilizing instruction history caching |
US7051330B1 (en) | 2000-11-21 | 2006-05-23 | Microsoft Corporation | Generic application server and method of operation therefor |
US7415594B2 (en) | 2002-06-26 | 2008-08-19 | Coherent Logix, Incorporated | Processing system with interspersed stall propagating processors and communication elements |
US7194609B2 (en) * | 2002-08-08 | 2007-03-20 | Hewlett-Packard Development Company, L.P. | Branch reconfigurable systems and methods |
US7263602B2 (en) | 2002-08-16 | 2007-08-28 | Carnegie Mellon University | Programmable pipeline fabric utilizing partially global configuration buses |
US8390325B2 (en) | 2006-06-21 | 2013-03-05 | Element Cxi, Llc | Reconfigurable integrated circuit architecture with on-chip configuration and reconfiguration |
US8456191B2 (en) | 2006-06-21 | 2013-06-04 | Element Cxi, Llc | Data-driven integrated circuit architecture |
JP4911022B2 (ja) | 2007-12-27 | 2012-04-04 | 富士通セミコンダクター株式会社 | カウンタ制御回路、動的再構成回路およびループ処理制御方法 |
US8266409B2 (en) * | 2009-03-03 | 2012-09-11 | Qualcomm Incorporated | Configurable cache and method to configure same |
KR101581882B1 (ko) | 2009-04-20 | 2015-12-31 | 삼성전자주식회사 | 재구성 가능한 프로세서 및 그 재구성 방법 |
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 |
WO2014092968A1 (en) | 2012-12-13 | 2014-06-19 | Coherent Logix, Incorporated | Multiprocessor system with improved secondary interconnection network |
GB2519813B (en) | 2013-10-31 | 2016-03-30 | Silicon Tailor Ltd | Pipelined configurable processor |
US9009332B1 (en) * | 2014-07-18 | 2015-04-14 | Kaspersky Lab Zao | Protection against network-based malicious activity utilizing transparent proxy services |
US9513833B2 (en) * | 2014-09-23 | 2016-12-06 | Amazon Technologies, Inc. | Asynchronous processing of mapping information |
US10120685B2 (en) | 2015-11-04 | 2018-11-06 | International Business Machines Corporation | Tightly coupled processor arrays using coarse grained reconfigurable architecture with iteration level commits |
US11119768B2 (en) * | 2018-03-31 | 2021-09-14 | Micron Technology, Inc. | Conditional branching control for a multi-threaded, self-scheduling reconfigurable computing fabric |
-
2019
- 2019-03-31 US US16/371,060 patent/US11119768B2/en active Active
- 2019-03-31 EP EP19721176.6A patent/EP3776188A1/en active Pending
- 2019-03-31 KR KR1020207031174A patent/KR102465213B1/ko active IP Right Grant
- 2019-03-31 CN CN201980022372.5A patent/CN111971652B/zh active Active
- 2019-03-31 WO PCT/US2019/025080 patent/WO2019191743A1/en active Search and Examination
-
2021
- 2021-08-11 US US17/399,427 patent/US11573796B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7635987B1 (en) * | 2004-12-13 | 2009-12-22 | Massachusetts Institute Of Technology | Configuring circuitry in a parallel processing environment |
CN102144225A (zh) * | 2008-05-29 | 2011-08-03 | 阿克西斯半导体有限公司 | 实时数据处理方法和装置 |
EP2441013A1 (en) * | 2009-06-12 | 2012-04-18 | Graeme Roy Smith | Shared resource multi-thread processor array |
Non-Patent Citations (1)
Title |
---|
李苗;王叶辉;周彩宝;: "网络处理器数据处理内核的设计与实现", 计算机工程, no. 03 * |
Also Published As
Publication number | Publication date |
---|---|
WO2019191743A1 (en) | 2019-10-03 |
US11119768B2 (en) | 2021-09-14 |
KR102465213B1 (ko) | 2022-11-10 |
US20210373890A1 (en) | 2021-12-02 |
KR20200138339A (ko) | 2020-12-09 |
US20190303154A1 (en) | 2019-10-03 |
CN111971652B (zh) | 2024-06-04 |
US11573796B2 (en) | 2023-02-07 |
EP3776188A1 (en) | 2021-02-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111971652B (zh) | 多线程自调度可重新配置计算架构的条件分支控制 | |
CN111919206B (zh) | 将停止信号用于多线程自调度可重新配置计算架构的背压控制 | |
CN111919205B (zh) | 多线程自调度可重新配置计算架构的循环线程顺序执行控制 | |
CN112055853B (zh) | 用于多线程自调度可重新配置计算架构的电路及系统 | |
CN111919204A (zh) | 用于多线程自调度可重新配置计算架构的高效循环执行 | |
CN111919203A (zh) | 使用重入队列的多线程自调度可重新配置计算架构的循环执行控制 | |
US11915057B2 (en) | Computational partition for a multi-threaded, self-scheduling reconfigurable computing fabric | |
KR102446709B1 (ko) | 멀티 스레드, 자체 스케줄링 재구성 가능한 컴퓨팅 패브릭의 실행 제어 | |
CN111919207A (zh) | 多线程自调度可重新配置计算架构 | |
CN111919202B (zh) | 多线程自调度可重新配置计算架构的执行控制 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |