具有混合线程处理器的系统、具有可配置计算元件的混合线程组构以及混合互连网络

文档序号:1191906 发布日期:2020-08-28 浏览:15次 >En<

阅读说明:本技术 具有混合线程处理器的系统、具有可配置计算元件的混合线程组构以及混合互连网络 (System with hybrid-threaded processor, hybrid-threaded fabric with configurable computing elements, and hybrid interconnect network ) 是由 T·M·布鲁尔 于 2018-10-31 设计创作,主要内容包括:公开用于可配置计算的代表性设备、方法和系统实施例。在代表性实施例中,一种系统包含:第一互连网络;处理器,其耦合到所述互连网络;主机接口,其耦合到所述互连网络;以及至少一个可配置电路群,其耦合到所述互连网络,所述可配置电路群包含:布置成阵列的多个可配置电路;第二异步包网络,其耦合到所述阵列的所述多个可配置电路中的每个可配置电路;第三同步网络,其耦合到所述阵列的所述多个可配置电路中的每个可配置电路;存储器接口电路,其耦合到所述异步包网络和所述互连网络;以及调度接口电路,其耦合到所述异步包网络和所述互连网络。(Representative device, method, and system embodiments for configurable computing are disclosed. In a representative embodiment, a system comprises: a first interconnection network; a processor coupled to the interconnection network; a host interface coupled to the interconnection network; and at least one configurable circuit group coupled to the interconnection network, the configurable circuit group including: a plurality of configurable circuits arranged in an array; a second asynchronous packet network coupled to each configurable circuit of the plurality of configurable circuits of the array; a third synchronization network coupled to each configurable circuit of the plurality of configurable circuits of the array; a memory interface circuit coupled to the asynchronous packet network and the interconnection network; and scheduling interface circuitry coupled to the asynchronous packet network and the interconnection network.)

具有混合线程处理器的系统、具有可配置计算元件的混合线 程组构以及混合互连网络

相关申请的交叉引用

本申请是以下申请的非临时申请,并且要求以下申请的权益和优先权:(1)2017年10月31日提交的第62/579,749号美国临时专利申请;(2)2018年3月31日提交的第62/651,128号美国临时专利申请;(3)2018年3月31日提交的第62/651,131号美国临时专利申请;(4)2018年3月31日提交的第62/651,132号美国临时专利申请;(5)2018年3月31日提交的第62/651,134号美国临时专利申请;(6)2018年3月31日提交的第62/651,135号美国临时专利申请;(7)2018年3月31日提交的第62/651,137号美国临时专利申请;(8)2018年3月31日提交的第62/651,140号美国临时专利申请;(9)2018年3月31日提交的第62/651,142号美国临时专利申请;(10)2018年5月7日提交的第62/667,666号美国临时专利申请;(11)2018年5月7日提交的第62/667,679号美国临时专利申请;(12)2018年5月7日提交的第62/667,691号美国临时专利申请;(13)2018年5月7日提交的第62/667,699号美国临时专利申请;(14)2018年5月7日提交的第62/667,717号美国临时专利申请;(15)2018年5月7日提交的第62/667,749号美国临时专利申请;(16)2018年5月7日提交的第62/667,760号美国临时专利申请;(17)2018年5月7日提交的第62/667,780号美国临时专利申请;(18)2018年5月7日提交的第62/667,792号美国临时专利申请;(19)2018年5月7日提交的第62/667,820号美国临时专利申请;(20)2018年5月7日提交的第62/667,850号美国临时专利申请;以及(21)2018年10月31日提交的第16/176,434号美国专利申请;它们在此共同转让,并且全部以全文引用的方式由此并入本文中,效力与以其全文在本文中阐述的完全一样(下文称为“相关申请”)。

技术领域

大体来说,本发明涉及可配置计算电路系统,且更具体地说,涉及包含自调度处理器的异构计算系统,它是一种具有嵌入式互连网络并且可进行动态重新配置和对能耗或功耗的动态控制的可配置计算电路系统。

背景技术

许多现有的计算系统在计算速度、能耗(或功耗)以及相关联的散热方面都达到了计算处理能力的显著限制。例如,随着对先进计算技术的需求不断增长,例如要适应人工智能和其它重要计算应用,现有的计算解决方案越来越无法胜任。

因此,当前需要能够为计算密集型核提供高性能和节能解决方案的计算架构,例如,以便计算用于传感、通信和分析应用的快速傅立叶变换(FFT)和有限脉冲响应(FIR)滤波器,例如合成孔径雷达、5G基站和图形分析应用,如使用光谱技术的图形聚类、机器学习、5G联网算法和大型模具代码,但不限于此。

另外,当前还需要一种可配置计算架构,它能够为这些不同的应用中的任何一个进行配置,但最重要的是,它还能够进行动态自配置和自重新配置。最后,当前还需要一种处理器架构,它能够进行大量并行处理,并进一步与可配置计算架构交互和对其进行控制,以便执行这些不同应用中的任何一个。

发明内容

如下文更详细地论述,代表性设备、系统和方法提供能够为计算密集型核提供高性能和节能解决方案的计算架构,例如,以便计算用于传感、通信和分析应用的快速傅立叶变换(FFT)和有限脉冲响应(FIR)滤波器,例如合成孔径雷达、5G基站和图形分析应用,如使用光谱技术的图形聚类、机器学习、5G联网算法和大型模具代码,但不限于此。

值得注意的是,各种代表性实施例提供一种多线程粗粒度可配置计算架构,能够为这些不同应用中的任何一个进行配置,但是最重要的是,还能够自调度、动态自配置和自重新配置、条件分支、异步信令的反压控制、有序线程执行和循环线程执行(包含数据依赖)、在完成数据依赖和/或排序后自动开始线程执行、提供对私有变量的循环存取、使用重入队列提供循环线程的快速执行,以及使用各种线程标识符进行高级循环执行,包含嵌套式循环。

还如下文更详细地论述,代表性设备、系统和方法提供一种处理器架构,能够进行自调度、大量并行处理并进一步与可配置计算架构交互和对其进行控制,以便执行这些不同应用中的任何一个。

在代表性实施例中,一种系统包括:第一互连网络;处理器,其耦合到所述互连网络;主机接口,其耦合到所述互连网络;以及至少一个可配置电路群,其耦合到所述互连网络,所述可配置电路群包括:布置成阵列的多个可配置电路;第二异步包网络,其耦合到所述阵列的所述多个可配置电路中的每个可配置电路;第三同步网络,其耦合到所述阵列的所述多个可配置电路中的每个可配置电路;存储器接口电路,其耦合到所述异步包网络和所述互连网络;以及调度接口电路,其耦合到所述异步包网络和所述互连网络。

对于各种代表性实施例中的任一个,所述互连网络可包括:第一多个交叉开关,其具有折叠式Clos配置的和位于与系统端点935的接口处的多个直接网状连接。对于各种代表性实施例中的任一个,所述异步包网络可包括:第二多个交叉开关,每个交叉开关耦合到所述阵列的所述多个可配置电路中的至少一个可配置电路及所述第二多个交叉开关中的另一交叉开关。对于各种代表性实施例中的任一个,所述同步网络可包括:多个直接点到点连接,其耦合所述可配置电路群的所述多个可配置电路的所述阵列的邻近可配置电路。

在代表性实施例中,一种可配置电路可包括:可配置计算电路;多个同步网络输入,其耦合到所述可配置计算电路;多个同步网络输出,其耦合到所述可配置计算电路;以及配置存储器,其耦合到所述可配置计算电路、控制电路系统、所述同步网络输入和所述同步网络输出,其中所述配置存储器包括:第一指令存储器,其存储多个数据路径配置指令以配置所述可配置计算电路的数据路径;以及第二指令和指令索引存储器,其存储多个轮辐指令和数据路径配置指令索引以选择所述同步网络输入的主同步输入。

在代表性实施例中,所述多个可配置电路中的每个可配置电路包括:可配置计算电路;控制电路,其耦合到所述可配置计算电路,所述控制电路包括:存储器控制电路;线程控制电路;以及多个控制寄存器;第一存储器电路,其耦合到所述可配置计算电路;多个同步网络输入,其耦合到所述可配置计算电路和所述同步网络;多个同步网络输出,其耦合到所述可配置计算电路和所述同步网络;异步网络输入队列,其耦合到所述异步包网络;异步网络输出队列,其耦合到所述异步包网络;第二配置存储器电路,其耦合到所述可配置计算电路、所述控制电路系统、所述同步网络输入和所述同步网络输出,所述配置存储器电路包括:第一指令存储器,其存储多个数据路径配置指令以配置所述可配置计算电路的数据路径;以及第二指令和指令索引存储器,其存储多个轮辐指令和数据路径配置指令索引以选择所述同步网络输入的主同步输入。

在另一代表性实施例中,一种系统可包括:第一互连网络;处理器,其耦合到所述互连网络;主机接口,其耦合到所述互连网络;以及至少一个可配置电路群,其耦合到所述互连网络,所述可配置电路群包括:布置成阵列的多个可配置电路,每个可配置电路包括:可配置计算电路;第一存储器电路,其耦合到所述可配置计算电路;多个同步网络输入和输出,其耦合到所述可配置计算电路;异步网络输入队列和异步网络输出队列;第二配置存储器电路,其耦合到所述可配置计算电路、控制电路系统、所述同步网络输入和所述同步网络输出,所述第二配置存储器包括:第一指令存储器,其存储多个数据路径配置指令以配置所述可配置计算电路的数据路径;以及第二指令和指令索引存储器,其存储:多个轮辐指令和数据路径配置指令索引,用于选择所述同步网络输入的主同步输入,用于选择所述可配置计算电路的当前数据路径配置指令,并且用于选择下一可配置计算电路的下一数据路径指令或下一数据路径指令索引;以及控制电路,其耦合到所述可配置计算电路,所述控制电路包括:存储器控制电路;多个控制寄存器,其中所述多个控制寄存器存储具有第一数据完成计数的完成表格;以及线程控制电路,其用于使线程排队等候执行。

在另一代表性实施例中,一种系统可包括:第一互连网络;主机接口,其耦合到所述互连网络;至少一个可配置电路群,其耦合到所述互连网络,所述可配置电路群包括布置成阵列的多个可配置电路;以及处理器,其耦合到所述互连网络,所述处理器包括:处理器核心,其用于执行多个指令;以及核心控制电路,其耦合到所述处理器核心,所述核心控制电路包括:互连网络接口,其可耦合到互连网络以接收工作描述符数据包、将接收到的工作描述符数据包解码成具有初始程序计数和任何接收到的自变量的执行线程;线程控制存储器,其耦合到所述互连网络接口且包括多个寄存器,所述多个寄存器包括存储多个线程标识符的线程标识符池寄存器、线程状态寄存器、存储接收到的程序计数的程序计数寄存器、数据缓存和存储接收到的自变量的通用寄存器;执行队列,其耦合到所述线程控制存储器;控制逻辑和线程选择电路,其耦合到所述执行队列和所述线程控制存储器,所述控制逻辑和线程选择电路用于将可用线程标识符分配到所述执行线程,将所述线程标识符放置在所述执行队列中,选择所述线程标识符以供执行,使用所述线程标识符作为索引来存取所述线程控制存储器从而选择所述执行线程的所述初始程序计数;以及指令缓存,其耦合到所述处理器核心及所述控制逻辑和线程选择电路,以接收所述初始程序计数并向所述处理器核心提供所述多个指令中用于执行的对应指令。

在另一代表性实施例中,一种可配置电路可包括:可配置计算电路;以及配置存储器,其耦合到所述可配置计算电路、控制电路系统、同步网络输入和同步网络输出,所述配置存储器包括:第一指令存储器,其存储多个数据路径配置指令以配置所述可配置计算电路的数据路径;以及第二指令和指令索引存储器,其存储多个轮辐指令和数据路径配置指令索引以选择所述可配置计算电路的当前数据路径配置指令。

在另一代表性实施例中,一种可配置电路可包括:可配置计算电路;以及配置存储器,其耦合到所述可配置计算电路、控制电路系统、同步网络输入和同步网络输出,所述配置存储器包括:第一指令存储器,其存储多个数据路径配置指令以配置所述可配置计算电路的数据路径;以及第二指令和指令索引存储器,其存储多个轮辐指令和数据路径配置指令索引以选择下一可配置计算电路的下一数据路径配置指令。

在另一代表性实施例中,一种可配置电路可包括:可配置计算电路;控制电路,其耦合到所述可配置计算电路;第一存储器电路,其耦合到所述可配置计算电路;多个同步网络输入,其耦合到所述可配置计算电路;多个同步网络输出,其耦合到所述可配置计算电路;以及第二配置存储器电路,其耦合到所述可配置计算电路、所述控制电路系统、所述同步网络输入和所述同步网络输出,所述配置存储器电路包括:第一指令存储器,其存储多个数据路径配置指令以配置所述可配置计算电路的数据路径;以及第二指令和指令索引存储器,其存储多个轮辐指令和数据路径配置指令索引以选择所述同步网络输入的主同步输入。

在又一代表性实施例中,一种可配置电路可包括:可配置计算电路;第一存储器电路,其耦合到所述可配置计算电路;多个同步网络输入,其耦合到所述可配置计算电路;多个同步网络输出,其耦合到所述可配置计算电路;以及第二配置存储器电路,其耦合到所述可配置计算电路、控制电路系统、所述同步网络输入和所述同步网络输出;以及控制电路,其耦合到所述可配置计算电路,所述控制电路包括:存储器控制电路;线程控制电路;以及多个控制寄存器。

在另一代表性实施例中,一种可配置电路可包括:可配置计算电路;配置存储器,其耦合到所述可配置计算电路、控制电路系统、同步网络输入和同步网络输出,所述配置存储器包括:第一指令存储器,其存储多个数据路径配置指令以配置所述可配置计算电路的数据路径;以及第二指令和指令索引存储器,其存储多个轮辐指令和数据路径配置指令索引以选择下一可配置计算电路的下一数据路径指令或下一数据路径指令索引;以及条件逻辑电路,其耦合到所述可配置计算电路,其中依据来自所述可配置计算电路的输出,所述条件逻辑电路用于通过修改提供在所述多个同步网络输出中的选定输出上的所述下一数据路径指令或下一数据路径指令索引来提供条件分支。

在另一代表性实施例中,一种可配置电路可包括:可配置计算电路;控制电路,其耦合到所述可配置计算电路;第一存储器电路,其耦合到所述可配置计算电路;多个同步网络输入,其耦合到所述可配置计算电路;多个同步网络输出,其耦合到所述可配置计算电路;异步网络输入队列,其耦合到异步包网络和所述第一存储器电路;异步网络输出队列;以及流控制电路,其耦合到所述异步网络输出队列,所述流控制电路用于当所述异步网络输出队列中达到预定阈值时生成停止信号。

在另一代表性实施例中,一种可配置电路可包括:可配置计算电路;第一存储器电路,其耦合到所述可配置计算电路;多个同步网络输入,其耦合到所述可配置计算电路;多个同步网络输出,其耦合到所述可配置计算电路;以及第二配置存储器电路,其耦合到所述可配置计算电路、控制电路系统、所述同步网络输入和所述同步网络输出;以及控制电路,其耦合到所述可配置计算电路,所述控制电路包括:存储器控制电路;线程控制电路;以及多个控制寄存器,其中所述多个控制寄存器存储循环表格,所述循环表格具有多个线程标识符以及针对每一线程标识符的用于在执行当前线程之后执行的下一线程标识符,以提供有序线程执行。

在另一代表性实施例中,一种可配置电路可包括:可配置计算电路;第一存储器电路,其耦合到所述可配置计算电路;多个同步网络输入,其耦合到所述可配置计算电路;多个同步网络输出,其耦合到所述可配置计算电路;以及第二配置存储器电路,其耦合到所述可配置计算电路、控制电路系统、所述同步网络输入和所述同步网络输出;以及控制电路,其耦合到所述可配置计算电路,所述控制电路包括:存储器控制电路;多个控制寄存器,其中所述多个控制寄存器存储具有第一数据完成计数的完成表格;以及线程控制电路,其用于当针对线程的线程标识符,所述线程的完成计数递减到零时使所述线程排队等候执行。

在另一代表性实施例中,一种可配置电路可包括:可配置计算电路;第一存储器电路,其耦合到所述可配置计算电路;多个同步网络输入和输出,其耦合到所述可配置计算电路;异步网络输入队列和异步网络输出队列;第二配置存储器电路,其耦合到所述可配置计算电路、控制电路系统、所述同步网络输入和所述同步网络输出,所述第二配置存储器包括:第一指令存储器,其存储多个数据路径配置指令以配置所述可配置计算电路的数据路径;以及第二指令和指令索引存储器,其存储:多个轮辐指令和数据路径配置指令索引,用于选择所述同步网络输入的主同步输入,用于选择所述可配置计算电路的当前数据路径配置指令,并且用于选择下一可配置计算电路的下一数据路径指令或下一数据路径指令索引;且所述可配置电路其进一步包括耦合到所述可配置计算电路的控制电路,所述控制电路包括:存储器控制电路;多个控制寄存器,其中所述多个控制寄存器存储具有第一数据完成计数的完成表格;以及线程控制电路,其用于当针对线程的线程标识符,所述线程的完成计数递减到零时使所述线程排队等候执行。

在另一代表性实施例中,一种可配置电路可包括:可配置计算电路;第一存储器电路,其耦合到所述可配置计算电路;多个同步网络输入,其耦合到所述可配置计算电路;多个同步网络输出,其耦合到所述可配置计算电路;以及第二配置存储器电路,其耦合到所述可配置计算电路、控制电路系统、所述同步网络输入和所述同步网络输出;以及控制电路,其耦合到所述可配置计算电路,所述控制电路包括:存储器控制电路;多个控制寄存器,其中所述多个控制寄存器存储具有第一数据完成计数的完成表格;以及线程控制电路,其用于当针对线程的线程标识符,所述线程的完成计数递减到零且其线程标识符是下一线程时使所述线程排队等候执行。

在又一代表性实施例中,一种可配置电路可包括:可配置计算电路;第一存储器电路,其耦合到所述可配置计算电路;多个同步网络输入,其耦合到所述可配置计算电路;多个同步网络输出,其耦合到所述可配置计算电路;以及第二配置存储器电路,其耦合到所述可配置计算电路、控制电路系统、所述同步网络输入和所述同步网络输出;且所述可配置电路其进一步包括耦合到所述可配置计算电路的控制电路,所述控制电路包括:存储器控制电路;线程控制电路;以及多个控制寄存器,其存储具有多个类型的线程标识符的完成表格,其中每个类型的线程标识符指示用于循环和嵌套式循环执行的循环级别,并且其中所述多个控制寄存器进一步存储线程标识符堆叠的顶部以允许每个类型的线程标识符存取用于选定循环的私有变量。

在另一代表性实施例中,一种可配置电路可包括:可配置计算电路;第一存储器电路,其耦合到所述可配置计算电路;多个同步网络输入,其耦合到所述可配置计算电路;多个同步网络输出,其耦合到所述可配置计算电路;以及第二配置存储器电路,其耦合到所述可配置计算电路、控制电路系统、所述同步网络输入和所述同步网络输出;以及控制电路,其耦合到所述可配置计算电路,所述控制电路包括:存储器控制电路;多个控制寄存器;以及线程控制电路,其包括:继续队列,其存储具有允许执行的完成计数但尚不具有经分配线程标识符的计算线程的一或多个线程标识符;以及重入队列,其存储具有允许执行的完成计数且具有经分配线程标识符的计算线程的一或多个线程标识符,使得所述重入队列中的所述线程在指定轮辐计数后执行。

在另一代表性实施例中,一种可配置电路可包括:可配置计算电路;第一存储器电路,其耦合到所述可配置计算电路;多个同步网络输入,其耦合到所述可配置计算电路;多个同步网络输出,其耦合到所述可配置计算电路;以及第二配置存储器电路,其耦合到所述可配置计算电路、控制电路系统、所述同步网络输入和所述同步网络输出;以及控制电路,其耦合到所述可配置计算电路,所述控制电路包括:存储器控制电路;多个控制寄存器,其存储线程标识符池和具有活动循环线程数目的循环计数的完成表格;以及线程控制电路,其中响应于接收到将线程标识符返回到所述线程标识符池的异步组构消息,所述控制电路使所述循环计数递减,并在所述循环计数达到零时传输异步组构完成消息。

在代表性实施例中,公开一种系统,其可包括:异步包网络;同步网络;以及布置成阵列的多个可配置电路,所述多个可配置电路中的每个可配置电路同时耦合到所述同步网络和所述异步包网络,所述多个可配置电路用于使用所述同步网络形成多个同步域来执行多个计算,并且所述多个可配置电路进一步用于通过所述异步包网络生成和传输多个控制消息,所述多个控制消息包括一或多个完成消息和继续消息。

在另一代表性实施例中,一种系统可包括:布置成阵列的多个可配置电路;同步网络,其耦合到所述阵列的所述多个可配置电路中的每个可配置电路;以及异步包网络,其耦合到所述阵列的所述多个可配置电路中的每个可配置电路。

在另一代表性实施例中,一种系统可包括:互连网络;处理器,其耦合到所述互连网络;以及多个可配置电路群,其耦合到所述互连网络。

在代表性实施例中,一种系统包括:互连网络;处理器,其耦合到所述互连网络;主机接口,其耦合到所述互连网络;以及多个可配置电路群,其耦合到所述互连网络,所述多个可配置电路群中的每个可配置电路群包括:布置成阵列的多个可配置电路;同步网络,其耦合到所述阵列的所述多个可配置电路中的每个可配置电路;异步包网络,其耦合到所述阵列的所述多个可配置电路中的每个可配置电路;存储器接口,其耦合到所述异步包网络和所述互连网络;以及调度接口,其耦合到所述异步包网络和所述互连网络。

在另一代表性实施例中,一种系统可包括:阶层式互连网络,其包括具有折叠式Clos配置和位于与端点的接口处的多个直接网状连接的第一多个交叉开关;处理器,其耦合到所述互连网络;主机接口,其耦合到所述互连网络;以及多个可配置电路群,其耦合到所述互连网络,所述多个可配置电路群中的每个可配置电路群包括:布置成阵列的多个可配置电路;同步网络,其耦合到所述阵列的所述多个可配置电路中的每个可配置电路,并提供所述阵列的邻近可配置电路之间的多个直接连接;异步包网络,其包括第二多个交叉开关,每个交叉开关耦合到所述阵列的所述多个可配置电路中的至少一个可配置电路和所述第二多个交叉开关中的另一交叉开关;存储器接口,其耦合到所述异步包网络和所述互连网络;以及调度接口,其耦合到所述异步包网络和所述互连网络。

在另一代表性实施例中,一种系统可包括:互连网络;处理器,其耦合到所述互连网络;主机接口,其耦合到所述互连网络;以及多个可配置电路群,其耦合到所述互连网络,所述多个可配置电路群中的每个可配置电路群包括:同步网络;异步包网络;存储器接口,其耦合到所述异步包网络和所述互连网络;调度接口,其耦合到所述异步包网络和所述互连网络;以及布置成阵列的多个可配置电路,每个可配置电路包括:可配置计算电路;控制电路,其耦合到所述可配置计算电路,所述控制电路包括:存储器控制电路;线程控制电路;以及多个控制寄存器;第一存储器电路,其耦合到所述可配置计算电路;多个同步网络输入和输出,其耦合到所述可配置计算电路和所述同步网络;异步网络输入队列和异步网络输出队列,其耦合到所述异步包网络;第二配置存储器电路,其耦合到所述可配置计算电路、所述控制电路系统、所述同步网络输入和所述同步网络输出,所述配置存储器电路包括:第一指令存储器,其存储多个数据路径配置指令以配置所述可配置计算电路的数据路径;以及第二指令和指令索引存储器,其存储多个轮辐指令和数据路径配置指令索引以选择所述同步网络输入的主同步输入。

在各种代表性实施例中的任一个中,所述第二指令和指令索引存储器可以进一步存储多个轮辐指令和数据路径配置指令索引,以选择所述可配置计算电路的当前数据路径配置指令。

在各种代表性实施例中的任一个中,所述第二指令和指令索引存储器可以进一步存储多个轮辐指令和数据路径配置指令索引,以选择下一可配置计算电路的下一数据路径配置指令。

在各种代表性实施例中的任一个中,所述第二指令和指令索引存储器可以进一步存储多个轮辐指令和数据路径配置指令索引,以选择所述多个同步网络输出中的同步网络输出。

在各种代表性实施例中的任一个中,所述可配置电路或系统可进一步包括:配置存储器复用器,其耦合到所述第一指令存储器和所述第二指令和指令索引存储器。

在各种代表性实施例中的任一个中,当所述配置存储器复用器的选择输入具有第一设定时,可以使用来自所述第二指令和指令索引存储器的指令索引选择所述当前数据路径配置指令。

在各种代表性实施例中的任一个中,当所述配置存储器复用器的所述选择输入具有不同于所述第一设定的第二设定时,可以使用来自所述主同步输入的指令索引选择所述当前数据路径配置指令。

在各种代表性实施例中的任一个中,所述第二指令和指令索引存储器可以进一步存储多个轮辐指令和数据路径配置指令索引,以配置所述可配置电路中独立于所述当前数据路径指令的部分。

在各种代表性实施例中的任一个中,所述多个轮辐指令和数据路径配置指令索引中的选定轮辐指令和数据路径配置指令索引可以根据模轮辐计数来选择。

在各种代表性实施例中的任一个中,所述可配置电路或系统可进一步包括:条件逻辑电路,其耦合到所述可配置计算电路。

在各种代表性实施例中的任一个中,依据来自所述可配置计算电路的输出,所述条件逻辑电路可用于修改提供在所述多个同步网络输出中的选定输出上的所述下一数据路径指令索引。

在各种代表性实施例中的任一个中,依据来自所述可配置计算电路的输出,所述条件逻辑电路可用于通过修改提供在所述多个同步网络输出中的选定输出上的所述下一数据路径指令或下一数据路径指令索引来提供条件分支。

在各种代表性实施例中的任一个中,当启用时,所述条件逻辑电路可用于通过对所述下一数据路径指令的最低有效位与来自所述可配置计算电路的所述输出进行“或”运算来指定所述下一数据路径指令或数据路径指令索引,从而提供条件分支。

在各种代表性实施例中的任一个中,当启用时,所述条件逻辑电路可用于通过对所述下一数据路径指令索引的最低有效位与来自所述可配置计算电路的所述输出进行“或”运算来指定所述下一数据路径指令索引,从而提供条件分支。

在各种代表性实施例中的任一个中,所述多个同步网络输入可包括:多个输入寄存器,其耦合到同步网络的多个通信线路;以及输入复用器,其耦合到所述多个输入寄存器和所述第二指令和指令索引存储器,以选择所述主同步输入。

在各种代表性实施例中的任一个中,所述多个同步网络输出可包括:多个输出寄存器,其耦合到所述同步网络的多个通信线路;以及输出复用器,其耦合到所述可配置计算电路,以选择来自所述可配置计算电路的输出。

在各种代表性实施例中的任一个中,所述可配置电路或系统可进一步包括:异步组构状态机,其耦合到所述异步网络输入队列和所述异步网络输出队列,所述异步组构状态机用于解码从所述异步包网络接收到的输入数据包和汇编用于在所述异步包网络上传输的输出数据包。

在各种代表性实施例中的任一个中,所述异步包网络可包括多个交叉开关,每个交叉开关耦合到多个可配置电路和至少一个其它交叉开关。

在各种代表性实施例中的任一个中,所述可配置电路或系统可进一步包括:多个可配置电路的阵列,其中:每个可配置电路通过所述多个同步网络输入和所述多个同步网络输出耦合到所述同步网络;且每个可配置电路通过所述异步网络输入和所述异步网络输出耦合到所述异步包网络。

在各种代表性实施例中的任一个中,所述同步网络可包括耦合所述多个可配置电路的所述阵列的邻近可配置电路的多个直接点到点连接。

在各种代表性实施例中的任一个中,每个可配置电路可包括:所述多个输入寄存器和所述多个输出寄存器之间的直接通路连接。在各种代表性实施例中的任一个中,所述直接通路连接可以提供直接点对点连接,用于从在所述同步网络上接收到的第二可配置电路到在所述同步网络上传输的第三可配置电路的数据传输。

在各种代表性实施例中的任一个中,所述可配置计算电路可包括算术、逻辑和位运算电路,其用于执行选自由以下组成的群组的至少一个整数运算:有正负号和无正负号的加法、绝对值、取相反数、逻辑“非”、相加和取相反数、减法A-B、反向减法B-A、有正负号和无正负号的大于、有正负号和无正负号的大于或等于、有正负号和无正负号的小于、有正负号和无正负号的小于或等于、等于或不等于的比较、逻辑“与”运算、逻辑“或”运算、逻辑“异或”运算、逻辑“与非”运算、逻辑“或非”运算、逻辑“非异或”运算、逻辑“与非”运算、逻辑“或非”运算,以及整数和浮点之间的变换。

在各种代表性实施例中的任一个中,所述可配置计算电路可包括算术、逻辑和位运算电路,其用于执行选自由以下组成的群组的至少一个浮点运算:有正负号和无正负号的加法、绝对值、取相反数、逻辑“非”、相加和取相反数、减法A-B、反向减法B-A、有正负号和无正负号的大于、有正负号和无正负号的大于或等于、有正负号和无正负号的小于、有正负号和无正负号的小于或等于、等于或不等于的比较、逻辑“与”运算、逻辑“或”运算、逻辑“异或”运算、逻辑“与非”运算、逻辑“或非”运算、逻辑“非异或”运算、逻辑“与非”运算、逻辑“或非”运算、整数和浮点之间的变换,及其组合。

在各种代表性实施例中的任一个中,所述可配置计算电路可包括乘法和移位运算电路,其用于执行选自由以下组成的群组的至少一个整数运算:乘法、移位、传递输入(passan input)、有正负号和无正负号的乘法、有正负号和无正负号的右移、有正负号和无正负号的左移、位次序颠倒、排列、整数和浮点之间的变换,及其组合。

在各种代表性实施例中的任一个中,所述可配置计算电路可包括乘法和移位运算电路,其用于执行选自由以下组成的群组的至少浮点运算:乘法、移位、传递输入(pass aninput)、有正负号和无正负号的乘法、有正负号和无正负号的右移、有正负号和无正负号的左移、位次序颠倒、排列、整数和浮点之间的变换,及其组合。

在各种代表性实施例中的任一个中,所述多个可配置电路的所述阵列可以进一步耦合到第一互连网络。在各种代表性实施例中的任一个中,所述多个可配置电路的所述阵列可进一步包括:第三系统存储器接口电路;以及调度接口电路。在各种代表性实施例中的任一个中,所述调度接口电路可用于通过所述第一互连网络接收工作描述符包,并且响应于所述工作描述符包,生成去往所述多个可配置电路的一或多个数据和控制包以配置所述多个可配置电路,从而执行选定计算。

在各种代表性实施例中的任一个中,所述可配置电路或系统可进一步包括:流控制电路,其耦合到所述异步网络输出队列,所述流控制电路用于当所述异步网络输出队列中达到预定阈值时生成停止信号。在各种代表性实施例中的任一个中,响应于所述停止信号,每个异步网络输出队列停止在所述异步包网络上输出数据包。在各种代表性实施例中的任一个中,响应于所述停止信号,每个可配置计算电路在完成其当前指令后停止执行。

在各种代表性实施例中的任一个中,多个可配置电路的阵列中的第一多个可配置电路可通过同步网络以第一预定顺序耦合,以形成第一同步域;并且其中多个可配置电路的阵列中的第二多个可配置电路通过同步网络以第二预定顺序耦合以形成第二同步域。在各种代表性实施例中的任一个中,第一同步域可用于生成通过异步包网络传输到第二同步域的继续消息。在各种代表性实施例中的任一个中,第二同步域可用于生成通过异步包网络传输到第一同步域的完成消息。

在各种代表性实施例中的任一个中,所述多个控制寄存器可存储具有第一数据完成计数的完成表格。在各种代表性实施例中的任一个中,所述多个控制寄存器进一步存储具有第二迭代计数的完成表格。在各种代表性实施例中的任一个中,所述多个控制寄存器可进一步存储具有多个线程标识符以及针对每一线程标识符的用于在执行当前线程之后执行的下一线程标识符的循环表格。在各种代表性实施例中的任一个中,所述多个控制寄存器可进一步在所述循环表格中存储第一次迭代的标识和最后一次迭代的标识。

在各种代表性实施例中的任一个中,所述控制电路可用于当针对线程的线程标识符,所述线程的完成计数递减到零且其线程标识符是下一线程时使所述线程排队等候执行。

在各种代表性实施例中的任一个中,所述控制电路可用于当针对线程的线程标识符,所述线程的完成计数指示完成任何数据依赖时使所述线程排队等候执行。在各种代表性实施例中的任一个中,所述完成计数可指示针对多个线程中的每个选定线程在执行选定线程之前接收到的完成消息的预定数目。

在各种代表性实施例中的任一个中,所述多个控制寄存器可进一步存储具有多个类型的线程标识符的完成表格,其中每个类型的线程标识符指示用于循环和嵌套式循环执行的循环级别。

在各种代表性实施例中的任一个中,所述多个控制寄存器可进一步存储具有活动循环线程数目的循环计数的完成表格,并且其中响应于接收到将线程标识符返回到线程标识符池的异步组构消息,所述控制电路使所述循环计数递减,并在所述循环计数达到零时传输异步组构完成消息。在各种代表性实施例中的任一个中,所述多个控制寄存器可进一步存储线程标识符堆叠的顶部以允许每个类型的线程标识符存取用于选定循环的私有变量。

在各种代表性实施例中的任一个中,所述控制电路可进一步包括:继续队列;以及重入队列。在各种代表性实施例中的任一个中,所述继续队列存储具有允许执行的完成计数但尚不具有经分配线程标识符的计算线程的一或多个线程标识符。在各种代表性实施例中的任一个中,所述重入队列可存储具有允许执行的完成计数且具有经分配线程标识符的计算线程的一或多个线程标识符。在各种代表性实施例中的任一个中,所述重入队列中具有线程标识符的任何线程可以在执行所述继续队列中具有线程标识符的任何线程之前执行。

在各种代表性实施例中的任一个中,所述控制电路可进一步包括:优先级队列,其中所述优先级队列中具有线程标识符的任何线程可以在执行所述继续队列或所述重入队列中具有线程标识符的任何线程之前执行。

在各种代表性实施例中的任一个中,所述控制电路可进一步包括:运行队列,其中所述运行队列中具有线程标识符的任何线程可以在出现所述线程标识符的轮辐计数后执行。

在各种代表性实施例中的任一个中,所述第二配置存储器电路可包括:第一指令存储器,其存储多个数据路径配置指令以配置所述可配置计算电路的数据路径;以及第二指令和指令索引存储器,其存储多个轮辐指令和数据路径配置指令索引以选择所述同步网络输入的主同步输入。

在各种代表性实施例中的任一个中,所述控制电路可用于自调度计算线程以供执行。

在各种代表性实施例中的任一个中,所述条件逻辑电路可用于分支到不同的第二下一条指令以供下一可配置电路执行。

在各种代表性实施例中的任一个中,所述控制电路可用于将计算线程排序以供执行。在各种代表性实施例中的任一个中,所述控制电路可用于将循环计算线程排序以供执行。在各种代表性实施例中的任一个中,所述控制电路可用于响应于来自数据依赖的一或多个完成信号而开始执行计算线程。

还公开配置可配置电路的各种方法实施例。一个代表性方法实施例可包括:使用第一指令存储器,提供多个数据路径配置指令以配置所述可配置计算电路的数据路径;以及使用第二指令和指令索引存储器,提供多个轮辐指令和数据路径配置指令索引以选择多个同步网络输入的主同步输入。

在各种代表性实施例中的任一个中,一种配置可配置电路的方法可包括:使用第一指令存储器,提供多个数据路径配置指令以配置所述可配置计算电路的数据路径;以及使用第二指令和指令索引存储器,提供多个轮辐指令和数据路径配置指令索引以选择所述可配置计算电路的当前数据路径配置指令。

在各种代表性实施例中的任一个中,一种配置可配置电路的方法可包括:使用第一指令存储器,提供多个数据路径配置指令以配置所述可配置计算电路的数据路径;以及使用第二指令和指令索引存储器,提供多个轮辐指令和数据路径配置指令索引以选择下一可配置计算电路的下一数据路径配置指令。

还公开一种控制多线程可配置电路的线程执行的方法,其中所述可配置电路具有可配置计算电路。一个代表性方法实施例可包括:使用条件逻辑电路,依据来自所述可配置计算电路的输出,通过修改提供给下一可配置电路的下一数据路径指令或下一数据路径指令索引而提供条件分支。

控制多线程可配置电路的线程执行的另一代表性方法实施例可包括:使用流控制电路,当异步网络输出队列中达到预定阈值时生成停止信号。

控制多线程可配置电路的线程执行的另一代表性方法实施例可包括:使用多个控制寄存器,存储具有多个线程标识符以及针对每一线程标识符的用于在执行当前线程之后执行的下一线程标识符的循环表格,以提供有序线程执行。

控制多线程可配置电路的线程执行的另一代表性方法实施例可包括:使用多个控制寄存器,存储具有第一数据完成计数的完成表格;以及使用线程控制电路,当针对线程的线程标识符,所述线程的完成计数递减到零时使所述线程排队等候执行。

公开一种配置和控制具有可配置计算电路的多线程可配置电路的线程执行的方法,其中一个代表性方法实施例包括:使用第一指令存储器,提供多个配置指令以配置所述可配置计算电路的数据路径;使用第二指令和指令索引存储器,提供多个轮辐指令和数据路径配置指令索引以选择多个同步网络输入的主同步输入,选择所述可配置计算电路的当前数据路径配置指令,并选择下一可配置计算电路的下一数据路径指令或下一数据路径指令索引;使用多个控制寄存器,提供具有第一数据完成计数的完成表格;以及使用线程控制电路,当针对线程的线程标识符,所述线程的完成计数递减到零时使所述线程排队等候执行。

配置和控制多线程可配置电路的线程执行的另一方法可包括:使用第一指令存储器,提供多个配置指令以配置所述可配置计算电路的数据路径;使用第二指令和指令索引存储器,提供多个轮辐指令和数据路径配置指令索引以选择多个同步网络输入的主同步输入,选择所述可配置计算电路的当前数据路径配置指令,并选择下一可配置计算电路的下一数据路径指令或下一数据路径指令索引;使用多个控制寄存器,提供具有第一数据完成计数的完成表格;以及使用线程控制电路,当针对线程的线程标识符,所述线程的完成计数递减到零且其线程标识符是下一线程时使所述线程排队等候执行。

控制多线程可配置电路的线程执行的另一方法可包括:使用多个控制寄存器,存储具有多个类型的线程标识符的完成表格,其中每个类型的线程标识符指示用于循环和嵌套式循环执行的循环级别,并且其中所述多个控制寄存器进一步存储线程标识符堆叠的顶部;以及允许每个类型的线程标识符存取用于选定循环的私有变量。

控制多线程可配置电路的线程执行的另一方法可包括:使用多个控制寄存器,存储具有数据完成计数的完成表格;使用线程控制电路,提供存储具有允许执行的完成计数但尚不具有经分配线程标识符的计算线程的一或多个线程标识符的继续队列;以及使用线程控制电路,提供存储具有允许执行的完成计数且具有经分配线程标识符的计算线程的一或多个线程标识符的重入队列,使得所述重入队列中的所述线程在指定轮辐计数后执行。

控制多线程可配置电路的线程执行的另一方法可包括:使用多个控制寄存器,存储线程标识符池和具有活动循环线程数目的循环计数的完成表格;以及使用线程控制电路,响应于接收到将线程标识符返回到所述线程标识符池的异步组构消息,使所述循环计数递减,并在所述循环计数达到零时传输异步组构完成消息。

在各种代表性实施例中的任一个中,所述方法可进一步包括:使用所述第二指令和指令索引存储器,提供多个轮辐指令和数据路径配置指令索引以选择所述可配置计算电路的当前数据路径配置指令。

在各种代表性实施例中的任一个中,所述方法可进一步包括:使用所述第二指令和指令索引存储器,提供多个轮辐指令和数据路径配置指令索引以选择下一可配置计算电路的下一数据路径配置指令。

在各种代表性实施例中的任一个中,所述方法可进一步包括:使用所述第二指令和指令索引存储器,提供多个轮辐指令和数据路径配置指令索引以选择所述多个同步网络输出中的同步网络输出。

在各种代表性实施例中的任一个中,所述方法可进一步包括:使用配置存储器复用器,提供第一选择设定,以使用来自所述第二指令和指令索引存储器的指令索引选择所述当前数据路径配置指令。

在各种代表性实施例中的任一个中,所述方法可进一步包括:使用配置存储器复用器,提供第二选择设定,所述第二设定不同于所述第一设定,以使用来自主同步输入的指令索引选择所述当前数据路径配置指令。

在各种代表性实施例中的任一个中,所述方法可进一步包括:使用所述第二指令和指令索引存储器,提供多个轮辐指令和数据路径配置指令索引,以配置所述可配置电路中独立于所述当前数据路径指令的部分。

在各种代表性实施例中的任一个中,所述方法可进一步包括:使用配置存储器复用器,根据模轮辐计数来选择所述多个轮辐指令和数据路径配置指令索引中的轮辐指令和数据路径配置指令索引。

在各种代表性实施例中的任一个中,所述方法可进一步包括:使用条件逻辑电路并依据来自所述可配置计算电路的输出,修改所述下一数据路径指令或下一数据路径指令索引。

在各种代表性实施例中的任一个中,所述方法可进一步包括:使用条件逻辑电路并依据来自所述可配置计算电路的输出,通过修改所述下一数据路径指令或下一数据路径指令索引来提供条件分支。

在各种代表性实施例中的任一个中,所述方法可进一步包括:启用条件逻辑电路;以及使用所述条件逻辑电路并依据来自所述可配置计算电路的输出,通过对所述下一数据路径指令的最低有效位与来自所述可配置计算电路的所述输出进行“或”运算来指定所述下一数据路径指令或数据路径指令索引,从而提供条件分支。

在各种代表性实施例中的任一个中,所述方法可进一步包括:使用输入复用器,选择所述主同步输入。在各种代表性实施例中的任一个中,所述方法可进一步包括:使用输出复用器,选择来自所述可配置计算电路的输出。

在各种代表性实施例中的任一个中,所述方法可进一步包括:使用耦合到异步网络输入队列和异步网络输出队列的异步组构状态机,解码从所述异步包网络接收到的输入数据包并汇编用于在所述异步包网络上传输的输出数据包。

在各种代表性实施例中的任一个中,所述方法可进一步包括:使用所述同步网络,提供耦合所述多个可配置电路的所述阵列的邻近可配置电路的多个直接点到点连接。

在各种代表性实施例中的任一个中,所述方法可进一步包括:使用所述可配置电路,提供多个输入寄存器和多个输出寄存器之间的直接通路连接。在各种代表性实施例中的任一个中,所述直接通路连接提供直接点对点连接,用于从在所述同步网络上接收到的第二可配置电路到在所述同步网络上传输的第三可配置电路的数据传输。

在各种代表性实施例中的任一个中,所述方法可进一步包括:使用所述可配置计算电路,执行选自由以下组成的群组的至少一个整数或浮点运算:有正负号和无正负号的加法、绝对值、取相反数、逻辑“非”、相加和取相反数、减法A-B、反向减法B-A、有正负号和无正负号的大于、有正负号和无正负号的大于或等于、有正负号和无正负号的小于、有正负号和无正负号的小于或等于、等于或不等于的比较、逻辑“与”运算、逻辑“或”运算、逻辑“异或”运算、逻辑“与非”运算、逻辑“或非”运算、逻辑“非异或”运算、逻辑“与非”运算、逻辑“或非”运算,以及整数和浮点之间的变换。

在各种代表性实施例中的任一个中,所述方法可进一步包括:使用所述可配置计算电路,执行选自由以下组成的群组的至少一个整数或浮点运算:乘法、移位、传递输入(pass an input)、有正负号和无正负号的乘法、有正负号和无正负号的右移、有正负号和无正负号的左移、位次序颠倒、排列、整数和浮点之间的变换,及其组合。

在各种代表性实施例中的任一个中,所述方法可进一步包括:使用调度接口电路,通过所述第一互连网络接收工作描述符包,并且响应于所述工作描述符包,生成去往所述多个可配置电路的一或多个数据和控制包以配置所述多个可配置电路,从而执行选定计算。

在各种代表性实施例中的任一个中,所述方法可进一步包括:使用流控制电路,当所述异步网络输出队列中达到预定阈值时生成停止信号。在各种代表性实施例中的任一个中,响应于所述停止信号,每个异步网络输出队列停止在所述异步包网络上输出数据包。在各种代表性实施例中的任一个中,响应于所述停止信号,每个可配置计算电路在完成其当前指令后停止执行。

在各种代表性实施例中的任一个中,所述方法可进一步包括:通过所述同步网络以第一预定顺序耦合多个可配置电路的阵列中的第一多个可配置电路以形成第一同步域;以及通过所述同步网络以第二预定顺序耦合多个可配置电路的阵列中的第二多个可配置电路以形成第二同步域。

在各种代表性实施例中的任一个中,所述方法可进一步包括:生成从所述第一同步域到所述第二同步域的继续消息,以通过所述异步包网络传输。

在各种代表性实施例中的任一个中,所述方法可进一步包括:生成从所述第二同步域到所述第一同步域的完成消息以通过所述异步包网络传输。在各种代表性实施例中的任一个中,所述方法可进一步包括在所述多个控制寄存器中存储具有第一数据完成计数的完成表格。

在各种代表性实施例中的任一个中,所述方法可进一步包括:在所述多个控制寄存器中存储具有第二迭代计数的所述完成表格。

在各种代表性实施例中的任一个中,所述方法可进一步包括:在所述多个控制寄存器中存储具有多个线程标识符的循环表格,并且针对每一线程标识符,存储用于在执行当前线程之后执行的下一线程标识符。

在各种代表性实施例中的任一个中,所述方法可进一步包括:在所述多个控制寄存器中的所述循环表格中存储第一次迭代的标识和最后一次迭代的标识。

在各种代表性实施例中的任一个中,所述方法可进一步包括:使用所述控制电路,当针对线程的线程标识符,所述线程的完成计数递减到零时使所述线程排队等候执行。

在各种代表性实施例中的任一个中,所述方法可进一步包括:使用所述控制电路,当针对线程的线程标识符,所述线程的完成计数递减到零且其线程标识符是下一线程时使所述线程排队等候执行。

在各种代表性实施例中的任一个中,所述方法可进一步包括:使用所述控制电路,当针对线程的线程标识符,所述线程的完成计数指示完成任何数据依赖时使所述线程排队等候执行。在各种代表性实施例中的任一个中,所述完成计数可指示针对多个线程中的每个选定线程在执行选定线程之前接收到的完成消息的预定数目。

在各种代表性实施例中的任一个中,所述方法可进一步包括:在所述多个控制寄存器中存储具有多个类型的线程标识符的完成表格,其中每个类型的线程标识符指示用于循环和嵌套式循环执行的循环级别。

在各种代表性实施例中的任一个中,所述方法可进一步包括:在所述多个控制寄存器中存储具有活动循环线程数目的循环计数的完成表格,并且其中响应于接收到将线程标识符返回到线程标识符池的异步组构消息,使用所述控制电路,使所述循环计数递减,并在所述循环计数达到零时传输异步组构完成消息。

在各种代表性实施例中的任一个中,所述方法可进一步包括:在所述多个控制寄存器中存储线程标识符堆叠的顶部,以允许每个类型的线程标识符存取用于选定循环的私有变量。

在各种代表性实施例中的任一个中,所述方法可进一步包括:使用继续队列,存储具有允许执行的完成计数但尚不具有经分配线程标识符的计算线程的一或多个线程标识符。

在各种代表性实施例中的任一个中,所述方法可进一步包括:使用重入队列,存储具有允许执行的完成计数且具有经分配线程标识符的计算线程的一或多个线程标识符。

在各种代表性实施例中的任一个中,所述方法可进一步包括:在执行所述继续队列中具有线程标识符的任何线程之前,执行所述重入队列中具有线程标识符的任何线程。

在各种代表性实施例中的任一个中,所述方法可进一步包括:在执行所述继续队列或所述重入队列中具有线程标识符的任何线程之前,执行优先级队列中具有线程标识符的任何线程。

在各种代表性实施例中的任一个中,所述方法可进一步包括:在出现所述线程标识符的轮辐计数后,执行运行队列中的任何线程。

在各种代表性实施例中的任一个中,所述方法可进一步包括:使用控制电路,自调度计算线程以供执行。

在各种代表性实施例中的任一个中,所述方法可进一步包括:使用所述条件逻辑电路,分支到不同的第二下一条指令以供下一可配置电路执行。

在各种代表性实施例中的任一个中,所述方法可进一步包括:使用所述控制电路,将计算线程排序以供执行。

在各种代表性实施例中的任一个中,所述方法可进一步包括:使用所述控制电路,将循环计算线程排序以供执行。

在各种代表性实施例中的任一个中,所述方法可进一步包括:使用所述控制电路,响应于来自数据依赖的一或多个完成信号而开始执行计算线程。

公开一种自调度处理器。在代表性实施例中,所述处理器包括:处理器核心,其用于执行接收到的指令;以及核心控制电路,其耦合到所述处理器核心,所述核心控制电路用于响应于接收到的工作描述符数据包而自动调度指令以供所述处理器核心执行。在另一代表性实施例中,所述处理器包括:处理器核心,其用于执行接收到的指令;以及核心控制电路,其耦合到所述处理器核心,所述核心控制电路用于响应于接收到的事件数据包而自动调度指令以供所述处理器核心执行。

还公开一种多线程自调度处理器,其可在本地或远程计算元件上创建线程。在代表性实施例中,所述处理器包括:处理器核心,其用于执行纤程创建指令;以及核心控制电路,其耦合到所述处理器核心,所述核心控制电路用于自动调度所述纤程创建指令以供所述处理器核心执行,并生成去往另一处理器或混合线程组构电路的一或多个工作描述符数据包以执行对应多个执行线程。在另一代表性实施例中,所述处理器包括:处理器核心,其用于执行纤程创建指令;以及核心控制电路,其耦合到所述处理器核心,所述核心控制电路用于调度所述纤程创建指令以供所述处理器核心执行,在线程控制存储器中保留预定量的存储器空间以存储返回自变量,并生成去往另一处理器或混合线程组构电路的一或多个工作描述符数据包以执行对应多个执行线程。

在另一代表性实施例中,一种处理器包括:核心控制电路,其包括:互连网络接口;线程控制存储器,其耦合到所述互连网络接口;执行队列,其耦合到所述线程控制存储器;控制逻辑和线程选择电路,其耦合到所述执行队列和所述线程控制存储器;以及指令缓存,其耦合到所述控制逻辑和线程选择电路;所述处理器另外还包括处理器核心,其耦合到所述核心控制电路的所述指令缓存。

在另一代表性实施例中,一种处理器包括:核心控制电路,其包括:互连网络接口;线程控制存储器,其耦合到所述互连网络接口;网络响应存储器;执行队列,其耦合到所述线程控制存储器;控制逻辑和线程选择电路,其耦合到所述执行队列和所述线程控制存储器;指令缓存,其耦合到所述控制逻辑和线程选择电路;以及命令队列;所述处理器另外还包括处理器核心,其耦合到所述核心控制电路的所述指令缓存和所述命令队列。

在另一代表性实施例中,一种处理器包括:处理器核心和耦合到所述处理器核心的核心控制电路,其中所述核心控制电路包括:互连网络接口,其可耦合到互连网络以接收工作描述符数据包、将接收到的工作描述符数据包解码成具有初始程序计数和任何接收到的自变量的执行线程;执行队列,其耦合到所述线程控制存储器;以及控制逻辑和线程选择电路,其耦合到所述执行队列,所述控制逻辑和线程选择电路用于将可用线程标识符分配到所述执行线程,自动将所述线程标识符放置在所述执行队列中,以及周期性地选择所述线程标识符以执行所述执行线程。

在另一代表性实施例中,一种处理器包括:处理器核心和耦合到所述处理器核心的核心控制电路,其中所述核心控制电路包括:互连网络接口,其可耦合到互连网络以接收工作描述符数据包、将接收到的工作描述符数据包解码成具有初始程序计数和任何接收到的自变量的执行线程;执行队列,其耦合到所述线程控制存储器;以及控制逻辑和线程选择电路,其耦合到所述执行队列,所述控制逻辑和线程选择电路用于将可用线程标识符分配到所述执行线程,自动将所述线程标识符放置在所述执行队列中,以及周期性地选择所述线程标识符以供处理器核心执行执行线程的指令。

在另一代表性实施例中,一种处理器包括:处理器核心和耦合到所述处理器核心的核心控制电路,其中所述核心控制电路包括:执行队列,其耦合到所述线程控制存储器;以及控制逻辑和线程选择电路,其耦合到所述执行队列,所述控制逻辑和线程选择电路用于将可用线程标识符分配到所述执行线程,自动将所述线程标识符放置在所述执行队列中,以及周期性地选择所述线程标识符以供所述处理器核心执行执行线程的指令。

在另一代表性实施例中,一种处理器包括:处理器核心和耦合到所述处理器核心的核心控制电路,其中所述核心控制电路包括:线程控制存储器,其包括多个寄存器,所述多个寄存器包括存储多个线程标识符的线程标识符池寄存器、存储接收到的程序计数的程序计数寄存器、数据缓存和存储接收到的自变量的通用寄存器;执行队列,其耦合到所述线程控制存储器;以及控制逻辑和线程选择电路,其耦合到所述执行队列,所述控制逻辑和线程选择电路用于将可用线程标识符分配到所述执行线程,自动将所述线程标识符放置在所述执行队列中,以及周期性地选择所述线程标识符以供所述处理器核心执行执行线程的指令,所述处理器核心使用存储在所述数据缓存或通用寄存器中的数据。

在另一代表性实施例中,一种处理器包括:处理器核心和耦合到所述处理器核心的核心控制电路,其中所述核心控制电路包括:线程控制存储器,其包括多个寄存器,所述多个寄存器包括存储多个线程标识符的线程标识符池寄存器、存储接收到的程序计数的程序计数寄存器和存储所述多个线程标识符中的每一线程标识符的有效状态或暂停状态的线程状态寄存器;执行队列,其耦合到所述线程控制存储器;以及控制逻辑和线程选择电路,其耦合到所述执行队列,所述控制逻辑和线程选择电路用于将可用线程标识符分配到所述执行线程,当所述线程标识符具有有效状态时自动将所述线程标识符放置在所述执行队列中,以及在所述有效状态保持不变的持续时间内周期性地选择所述线程标识符以供所述处理器核心执行所述执行线程的指令,直到完成所述执行线程为止。

在另一代表性实施例中,一种处理器包括:处理器核心和耦合到所述处理器核心的核心控制电路,其中所述核心控制电路包括:线程控制存储器,其包括多个寄存器,所述多个寄存器包括存储多个线程标识符的线程标识符池寄存器、存储接收到的程序计数的程序计数寄存器和存储所述多个线程标识符中的每一线程标识符的有效状态或暂停状态的线程状态寄存器;执行队列,其耦合到所述线程控制存储器;以及控制逻辑和线程选择电路,其耦合到所述执行队列,所述控制逻辑和线程选择电路用于将可用线程标识符分配到所述执行线程,当所述线程标识符具有有效状态时自动将所述线程标识符放置在所述执行队列中,在所述有效状态保持不变的持续时间内周期性地选择所述线程标识符以供所述处理器核心执行所述执行线程的指令,以及当所述线程标识符具有暂停状态时通过不将所述线程标识符返回到所述执行队列来暂停线程执行。

在另一代表性实施例中,一种处理器包括:处理器核心和耦合到所述处理器核心的核心控制电路,其中所述核心控制电路包括:线程控制存储器,其包括多个寄存器,所述多个寄存器包括存储多个线程标识符的线程标识符池寄存器、线程状态寄存器、存储接收到的程序计数的程序计数寄存器、数据缓存和存储接收到的自变量的通用寄存器;执行队列,其耦合到所述线程控制存储器;以及控制逻辑和线程选择电路,其耦合到所述执行队列,所述控制逻辑和线程选择电路用于将可用线程标识符分配到所述执行线程,自动将所述线程标识符放置在所述执行队列中,以及周期性地选择所述线程标识符以供所述处理器核心执行执行线程的指令。

在另一代表性实施例中,一种处理器包括:处理器核心,其用于执行多个指令;以及核心控制电路,其耦合到所述处理器核心,其中所述核心控制电路包括:互连网络接口,其可耦合到互连网络以接收工作描述符数据包、将接收到的工作描述符数据包解码成具有初始程序计数和任何接收到的自变量的执行线程;线程控制存储器,其耦合到所述互连网络接口且包括多个寄存器,所述多个寄存器包括存储多个线程标识符的线程标识符池寄存器、线程状态寄存器、存储接收到的程序计数的程序计数寄存器、数据缓存和存储接收到的自变量的通用寄存器;执行队列,其耦合到所述线程控制存储器;控制逻辑和线程选择电路,其耦合到所述执行队列和所述线程控制存储器,所述控制逻辑和线程选择电路用于将可用线程标识符分配到所述执行线程,将所述线程标识符放置在所述执行队列中,选择所述线程标识符以供执行,使用所述线程标识符作为索引来存取所述线程控制存储器从而选择所述执行线程的所述初始程序计数;以及指令缓存,其耦合到所述处理器核心及所述控制逻辑和线程选择电路,以接收所述初始程序计数并向所述处理器核心提供所述多个指令中用于执行的对应指令。

在另一代表性实施例中,一种处理器包括:核心控制电路,其包括:互连网络接口,其可耦合到互连网络以接收工作描述符数据包、将接收到的工作描述符数据包解码成具有初始程序计数和任何接收到的自变量的执行线程;线程控制存储器,其耦合到所述互连网络接口且包括多个寄存器,所述多个寄存器包括存储多个线程标识符的线程标识符池寄存器、线程状态寄存器、存储接收到的程序计数的程序计数寄存器、数据缓存和存储接收到的自变量的通用寄存器;执行队列,其耦合到所述线程控制存储器;控制逻辑和线程选择电路,其耦合到所述执行队列和所述线程控制存储器,所述控制逻辑和线程选择电路用于将可用线程标识符分配到所述执行线程,自动地将所述线程标识符放置在所述执行队列中,周期性地选择所述线程标识符以供执行,使用所述线程标识符作为索引来存取所述线程控制存储器从而选择所述执行线程的所述初始程序计数;以及指令缓存,其耦合到所述控制逻辑和线程选择电路以接收所述初始程序计数并提供对应指令以供执行;所述处理器另外还包括处理器核心,其耦合到所述核心控制电路的所述指令缓存,所述处理器核心用于执行所述对应指令。

在另一代表性实施例中,一种处理器包括:核心控制电路,其包括:互连网络接口,其可耦合到互连网络以接收工作描述符数据包、将接收到的工作描述符数据包解码成具有初始程序计数和任何接收到的自变量的执行线程;线程控制存储器,其耦合到所述互连网络接口且包括多个寄存器,所述多个寄存器包括存储多个线程标识符的线程标识符池寄存器、线程状态寄存器、存储接收到的程序计数的程序计数寄存器和存储接收到的自变量的通用寄存器;执行队列,其耦合到所述线程控制存储器;控制逻辑和线程选择电路,其耦合到所述执行队列和所述线程控制存储器,所述控制逻辑和线程选择电路用于将可用线程标识符分配到所述执行线程,将所述线程标识符放置在所述执行队列中,选择所述线程标识符以供执行,使用所述线程标识符作为索引来存取所述线程控制存储器从而选择所述执行线程的所述初始程序计数;指令缓存,其耦合到所述控制逻辑和线程选择电路以接收所述初始程序计数并提供对应指令以供执行;以及命令队列;所述处理器另外还包括处理器核心,其耦合到所述核心控制电路的所述指令缓存和所述命令队列,所述处理器核心用于执行所述对应指令。

在另一代表性实施例中,一种处理器包括:核心控制电路,其耦合到互连网络接口且包括:互连网络接口,其可耦合到互连网络以接收工作描述符数据包、将接收到的工作描述符数据包解码成具有初始程序计数和任何接收到的自变量的执行线程;线程控制存储器,其耦合到所述互连网络接口且包括多个寄存器,所述多个寄存器包括存储多个线程标识符的线程标识符池寄存器、线程状态寄存器、存储接收到的程序计数的程序计数寄存器和存储接收到的自变量的通用寄存器;执行队列,其耦合到所述线程控制存储器;控制逻辑和线程选择电路,其耦合到所述执行队列和所述线程控制存储器,所述控制逻辑和线程选择电路用于将可用线程标识符分配到所述执行线程,将所述线程标识符放置在所述执行队列中,选择所述线程标识符以供执行,使用所述线程标识符作为索引来存取所述线程控制存储器从而选择所述执行线程的所述初始程序计数;以及指令缓存,其耦合到所述控制逻辑和线程选择电路以接收所述初始程序计数并提供对应指令以供执行;所述处理器另外还包括处理器核心,其耦合到所述核心控制电路的所述指令缓存,所述处理器核心用于执行所述对应指令。

在另一代表性实施例中,一种处理器包括:核心控制电路,其包括:互连网络接口,其可耦合到互连网络以接收调用工作描述符数据包、将接收到的工作描述符数据包解码成具有初始程序计数和任何接收到的自变量的执行线程并对工作描述符包进行编码以传输到其它处理元件;线程控制存储器,其耦合到所述互连网络接口且包括多个寄存器,所述多个寄存器包括存储多个线程标识符的线程标识符池寄存器、线程状态寄存器、存储接收到的程序计数的程序计数寄存器和存储接收到的自变量的通用寄存器;执行队列,其耦合到所述线程控制存储器;网络响应存储器,其耦合到所述互连网络接口;控制逻辑和线程选择电路,其耦合到所述执行队列、所述线程控制存储器和指令缓存,所述控制逻辑和线程选择电路用于将可用线程标识符分配到所述执行线程,将所述线程标识符放置在所述执行队列中,选择所述线程标识符以供执行,使用所述线程标识符作为索引来存取所述线程控制存储器从而选择所述执行线程的所述初始程序计数;指令缓存,其耦合到所述控制逻辑和线程选择电路以接收所述初始程序计数并提供对应指令以供执行;以及命令队列,其存储一或多个命令以生成一或多个工作描述符包;所述处理器另外还包括处理器核心,其耦合到所述核心控制电路的所述指令缓存和所述命令队列,所述处理器核心用于执行所述对应指令。

对于各种代表性实施例中的任一个,所述核心控制电路可进一步包括:互连网络接口,其可耦合到互连网络,所述互连网络接口用于接收工作描述符数据包、将接收到的工作描述符数据包解码成具有初始程序计数和任何接收到的自变量的执行线程。对于各种代表性实施例中的任一个,所述互连网络接口可进一步用于接收事件数据包、将接收到的事件数据包解码成事件标识符和任何接收到的自变量。

对于各种代表性实施例中的任一个,所述核心控制电路可进一步包括:控制逻辑和线程选择电路,其耦合到所述互连网络接口,所述控制逻辑和线程选择电路用于将可用线程标识符分配到所述执行线程。

对于各种代表性实施例中的任一个,所述核心控制电路可进一步包括:线程控制存储器,其具有多个寄存器,其中所述多个寄存器包括呈任何选定组合形式的以下中的一或多个:存储多个线程标识符的线程标识符池寄存器;线程状态寄存器;存储接收到的初始程序计数的程序计数寄存器;存储接收到的自变量的通用寄存器;未决纤程返回计数寄存器;返回自变量缓冲器或寄存器;返回自变量链表寄存器;自定义原子交易标识符寄存器;事件状态寄存器;事件掩码寄存器;以及数据缓存。

对于各种代表性实施例中的任一个,所述互连网络接口可进一步用于使用线程标识符作为所述线程控制存储器的索引在所述线程控制存储器中存储具有所述初始程序计数和任何接收到的自变量的所述执行线程。

对于各种代表性实施例中的任一个,所述核心控制电路可进一步包括:控制逻辑和线程选择电路,其耦合到所述线程控制存储器和所述互连网络接口,所述控制逻辑和线程选择电路用于将可用线程标识符分配到所述执行线程。

对于各种代表性实施例中的任一个,所述核心控制电路可进一步包括:执行队列,其耦合到所述线程控制存储器,所述执行队列存储一或多个线程标识符。

对于各种代表性实施例中的任一个,所述核心控制电路可进一步包括:控制逻辑和线程选择电路,其耦合到所述执行队列、所述互连网络接口和所述线程控制存储器,所述控制逻辑和线程选择电路用于将可用线程标识符分配到所述执行线程,将所述线程标识符放置在所述执行队列中,选择所述线程标识符以供执行,以及使用所述线程标识符作为索引来存取所述线程控制存储器,从而选择所述执行线程的所述初始程序计数。

对于各种代表性实施例中的任一个,所述核心控制电路可进一步包括:指令缓存,其耦合到所述控制逻辑和线程选择电路以接收所述初始程序计数并提供对应指令以供执行。

在另一代表性实施例中,所述处理器可进一步包括:处理器核心,其耦合到所述核心控制电路的所述指令缓存,所述处理器核心用于执行所述对应指令。

对于各种代表性实施例中的任一个,所述核心控制电路可进一步用于将初始有效状态分配到所述执行线程。对于各种代表性实施例中的任一个,所述核心控制电路可进一步用于响应于所述处理器核心执行存储器负载指令而将暂停状态分配到所述执行线程。对于各种代表性实施例中的任一个,所述核心控制电路可进一步用于响应于所述处理器核心执行存储器存储指令而将暂停状态分配到所述执行线程。

对于各种代表性实施例中的任一个,所述核心控制电路可进一步用于响应于所述处理器核心执行返回指令而结束执行选定线程。对于各种代表性实施例中的任一个,所述核心控制电路可进一步用于响应于所述处理器核心执行返回指令而将所述选定线程的对应线程标识符返回到所述线程标识符池寄存器。对于各种代表性实施例中的任一个,所述核心控制电路可进一步用于响应于所述处理器核心执行返回指令而清理以所述选定线程的所述对应线程标识符作索引的所述线程控制存储器的寄存器。

对于各种代表性实施例中的任一个,所述互连网络接口可进一步用于响应于所述处理器核心执行返回指令而生成返回工作描述符包。

对于各种代表性实施例中的任一个,所述核心控制电路可进一步包括:网络响应存储器。对于各种代表性实施例中的任一个,所述网络响应存储器可包括呈任何选定组合形式的以下中的一或多个:存储器请求寄存器;线程标识符和交易标识符寄存器;请求缓存行索引寄存器;字节寄存器;以及通用寄存器索引和类型寄存器。

对于各种代表性实施例中的任一个,所述互连网络接口可用于生成点到点事件数据消息。对于各种代表性实施例中的任一个,所述互连网络接口可用于生成广播事件数据消息。

对于各种代表性实施例中的任一个,所述核心控制电路可进一步用于使用存储在所述事件掩码寄存器中的事件掩码来响应接收到的事件数据包。对于各种代表性实施例中的任一个,所述核心控制电路可进一步用于确定对应于接收到的事件数据包的事件编号。对于各种代表性实施例中的任一个,所述核心控制电路可进一步用于响应于接收到的事件数据包而将线程标识符的状态从暂停变成有效,以恢复执行对应执行线程。对于各种代表性实施例中的任一个,所述核心控制电路可进一步用于响应于接收到的事件数据包的事件编号而将线程标识符的状态从暂停变成有效,以恢复执行对应执行线程。

对于各种代表性实施例中的任一个,所述控制逻辑和线程选择电路可进一步用于连续选择来自所述执行队列的下一线程标识符以执行对应执行线程的单个指令。对于各种代表性实施例中的任一个,所述控制逻辑和线程选择电路可进一步用于执行对所述多个线程标识符中来自所述执行队列的下一线程标识符的轮选选择,分别用于执行对应执行线程的单个指令。对于各种代表性实施例中的任一个,所述控制逻辑和线程选择电路可进一步用于执行对所述多个线程标识符中来自所述执行队列的下一线程标识符的轮选选择,分别用于执行对应执行线程的单个指令,直到完成所述执行线程为止。对于各种代表性实施例中的任一个,所述控制逻辑和线程选择电路可进一步用于执行对所述多个线程标识符中来自所述执行队列的下一线程标识符的桶形选择,分别用于执行对应执行线程的单个指令。

对于各种代表性实施例中的任一个,所述控制逻辑和线程选择电路可进一步用于将有效状态或暂停状态分配到线程标识符。对于各种代表性实施例中的任一个,所述控制逻辑和线程选择电路可进一步用于将优先状态分配到线程标识符。对于各种代表性实施例中的任一个,所述控制逻辑和线程选择电路可进一步用于在执行对应指令之后,将具有经分配有效状态和经分配优先级的对应线程标识符返回到所述执行队列。

对于各种代表性实施例中的任一个,所述核心控制电路可进一步包括:网络命令队列,其耦合到所述处理器核心。

对于各种代表性实施例中的任一个,所述互连网络接口可包括:输入队列;包解码器电路,其耦合到所述输入队列、所述控制逻辑和线程选择电路和所述线程控制存储器;输出队列;以及包编码器电路,其耦合到所述输出队列、所述网络响应存储器和所述网络命令队列。

对于各种代表性实施例中的任一个,所述执行队列可进一步包括:第一优先级队列;以及第二优先级队列。对于各种代表性实施例中的任一个,所述控制逻辑和线程选择电路可进一步包括:线程选择控制电路系统,其耦合到所述执行队列,所述线程选择控制电路系统用于在第一频率下选择来自所述第一优先级队列的线程标识符和在第二频率下选择来自所述第二优先级队列的线程标识符,所述第二频率低于所述第一频率。对于各种代表性实施例中的任一个,所述线程选择控制电路系统可用于将所述第二频率确定为从选择来自所述第一优先级队列的线程标识符开始的跳过计数。

对于各种代表性实施例中的任一个,所述核心控制电路可进一步包括:数据路径控制电路系统,其用于控制通过所述第一互连网络的存取大小。对于各种代表性实施例中的任一个,所述核心控制电路可进一步包括:数据路径控制电路系统,其用于响应于时间平均使用级别而增大或减小存储器负载存取大小。对于各种代表性实施例中的任一个,所述核心控制电路可进一步包括:数据路径控制电路系统,其用于响应于时间平均使用级别而增大或减小存储器存储存取大小。对于各种代表性实施例中的任一个,所述控制逻辑和线程选择电路可进一步用于增大存储器负载存取请求的大小以对应于所述数据缓存的缓存行边界。

对于各种代表性实施例中的任一个,所述核心控制电路可进一步包括:系统调用电路系统,其用于生成去往主机处理器的一或多个系统调用。对于各种代表性实施例中的任一个,所述系统调用电路系统可进一步包括:多个系统调用信用寄存器,其存储预定信用计数以调制任何预定时间段内系统调用的数目。

对于各种代表性实施例中的任一个,所述核心控制电路可进一步用于响应于来自主机处理器的请求,生成使所述互连网络接口的所述命令队列复制和传输来自所述线程控制存储器的对应于选定线程标识符的全部数据以监测线程状态的命令。

对于各种代表性实施例中的任一个,所述处理器核心可用于执行纤程创建指令以生成使所述互连网络接口的所述命令队列生成去往另一处理器核心或混合线程组构电路的一或多个调用工作描述符包的一或多个命令。对于各种代表性实施例中的任一个,所述核心控制电路可进一步用于响应于所述处理器核心执行纤程创建指令,在所述通用寄存器或返回自变量寄存器中保留预定量的存储器空间。

对于各种代表性实施例中的任一个,响应于生成去往另一处理器核心或混合线程组构的一或多个调用工作描述符包,所述核心控制电路可用于在所述线程返回寄存器中存储线程返回计数。对于各种代表性实施例中的任一个,响应于接收到返回数据包,所述核心控制电路可用于使存储在所述线程返回寄存器中的所述线程返回计数递减。对于各种代表性实施例中的任一个,响应于所述线程返回寄存器中的所述线程返回计数递减到零,所述核心控制电路可用于将对应线程标识符的暂停状态变成有效状态,以供随后执行线程返回指令来完成创建的纤程或线程。

对于各种代表性实施例中的任一个,所述处理器核心可用于执行等待或非等待纤程加入指令。对于各种代表性实施例中的任一个,所述处理器核心可用于执行纤程全部加入指令。

对于各种代表性实施例中的任一个,所述处理器核心可用于执行非缓存读取或负载指令以指定用于存储从存储器接收到的数据的通用寄存器。对于各种代表性实施例中的任一个,所述处理器核心可用于执行非缓存写入或存储指令以指定通用寄存器中用于存储在存储器中的数据。

对于各种代表性实施例中的任一个,所述核心控制电路可用于将交易标识符分配到针对存储器的任何负载或存储请求,并使所述交易标识符与线程标识符相关。

对于各种代表性实施例中的任一个,所述处理器核心可用于执行第一线程优先级指令,以将第一优先级分配到具有对应线程标识符的执行线程。对于各种代表性实施例中的任一个,所述处理器核心可用于执行第二线程优先级指令,以将第二优先级分配到具有对应线程标识符的执行线程。

对于各种代表性实施例中的任一个,所述处理器核心可用于执行自定义原子返回指令,以完成自定义原子操作的执行线程。对于各种代表性实施例中的任一个,结合存储器控制器,所述处理器核心可用于执行浮点原子存储器操作。对于各种代表性实施例中的任一个,结合存储器控制器,所述处理器核心可用于执行自定义原子存储器操作。

还公开一种指令的自调度执行的方法,其中一个代表性方法实施例包括:接收工作描述符数据包;以及响应于接收到的工作描述符数据包而自动调度指令以供执行。

还公开指令的自调度执行的另一方法,其中一个代表性方法实施例包括:接收事件数据包;以及响应于接收到的事件数据包而自动调度指令以供执行。

还公开一种第一处理元件生成多个执行线程以供第二处理元件执行的方法,其中一个代表性方法实施例包括:执行纤程创建指令;以及响应于所述纤程创建指令的执行,生成去往所述第二处理元件的一或多个工作描述符数据包以执行所述多个执行线程。

还公开一种第一处理元件生成多个执行线程以供第二处理元件执行的方法,其中一个代表性方法实施例包括:执行纤程创建指令;以及响应于执行所述纤程创建指令,在线程控制存储器中保留预定量的存储器空间以存储返回自变量,并生成去往所述第二处理元件的一或多个工作描述符数据包以执行所述多个执行线程。

还公开一种指令的自调度执行的方法,其中一个代表性方法实施例包括:接收工作描述符数据包;将接收到的工作描述符数据包解码成具有初始程序计数和任何接收到的自变量的执行线程;将可用线程标识符分配到所述执行线程;使所述线程标识符自动排队以执行所述执行线程;以及周期性地选择所述线程标识符以执行所述执行线程。

还公开指令的自调度执行的另一方法,其中一个代表性方法实施例包括:接收工作描述符数据包;将接收到的工作描述符数据包解码成具有初始程序计数和任何接收到的自变量的执行线程;将可用线程标识符分配到所述执行线程;当所述线程标识符具有有效状态时,使所述线程标识符自动排队以执行所述执行线程;以及在所述有效状态保持不变的持续时间内周期性地选择所述线程标识符以执行所述执行线程的指令,直到完成所述执行线程为止。

还公开指令的自调度执行的另一方法,其中一个代表性方法实施例包括:接收工作描述符数据包;将接收到的工作描述符数据包解码成具有初始程序计数和任何接收到的自变量的执行线程;将可用线程标识符分配到所述执行线程;当所述线程标识符具有有效状态时,使所述线程标识符在执行队列中自动排队以执行所述执行线程;以及在所述有效状态保持不变的持续时间内周期性地选择所述线程标识符以执行所述执行线程的指令;并且当所述线程标识符具有暂停状态时,通过不将所述线程标识符返回到所述执行队列来暂停线程执行。

还公开指令的自调度执行的另一方法,其中一个代表性方法实施例包括:接收工作描述符数据包;将接收到的工作描述符数据包解码成具有初始程序计数和任何接收到的自变量的执行线程;在线程控制存储器中存储所述初始程序计数和任何接收到的自变量;将可用线程标识符分配到所述执行线程;当所述线程标识符具有有效状态时,使所述线程标识符自动排队以执行所述执行线程;使用所述线程标识符作为索引来存取所述线程控制存储器,从而选择所述执行线程的所述初始程序计数;以及在所述有效状态保持不变的持续时间内周期性地选择所述线程标识符以执行所述执行线程的指令,直到完成所述执行线程为止。

对于各种代表性实施例中的任一个,所述方法可进一步包括:接收事件数据包;以及将接收到的事件数据包解码成事件标识符和任何接收到的自变量。

对于各种代表性实施例中的任一个,所述方法可进一步包括:将初始有效状态分配到所述执行线程。

对于各种代表性实施例中的任一个,所述方法可进一步包括:响应于执行存储器负载指令,将暂停状态分配到所述执行线程。对于各种代表性实施例中的任一个,所述方法可进一步包括:响应于执行存储器存储指令,将暂停状态分配到所述执行线程。

对于各种代表性实施例中的任一个,所述方法可进一步包括:响应于执行返回指令,终止执行选定线程。对于各种代表性实施例中的任一个,所述方法可进一步包括:响应于执行返回指令,将所述选定线程的对应线程标识符返回到所述线程标识符池。对于各种代表性实施例中的任一个,所述方法可进一步包括:响应于执行返回指令,清除以所述选定线程的所述对应线程标识符作索引的线程控制存储器的寄存器。对于各种代表性实施例中的任一个,所述方法可进一步包括:响应于执行返回指令,生成返回工作描述符包。

对于各种代表性实施例中的任一个,所述方法可进一步包括:生成点到点事件数据消息。对于各种代表性实施例中的任一个,所述方法可进一步包括:生成广播事件数据消息。

对于各种代表性实施例中的任一个,所述方法可进一步包括:使用事件掩码来响应接收到的事件数据包。对于各种代表性实施例中的任一个,所述方法可进一步包括:确定对应于接收到的事件数据包的事件编号。对于各种代表性实施例中的任一个,所述方法可进一步包括:响应于接收到的事件数据包而将线程标识符的状态从暂停变成有效,以恢复执行对应执行线程。对于各种代表性实施例中的任一个,所述方法可进一步包括:响应于接收到的事件数据包的事件编号而将线程标识符的状态从暂停变成有效,以恢复执行对应执行线程。

对于各种代表性实施例中的任一个,所述方法可进一步包括:连续选择来自所述执行队列的下一线程标识符以执行对应执行线程的单个指令。对于各种代表性实施例中的任一个,所述方法可进一步包括:执行对所述多个线程标识符中来自所述执行队列的下一线程标识符的轮选选择,分别用于执行对应执行线程的单个指令。对于各种代表性实施例中的任一个,所述方法可进一步包括:执行对所述多个线程标识符中来自所述执行队列的下一线程标识符的轮选选择,分别用于执行对应执行线程的单个指令,直到完成所述执行线程为止。对于各种代表性实施例中的任一个,所述方法可进一步包括:执行对所述多个线程标识符中来自所述执行队列的下一线程标识符的桶形选择,分别用于执行对应执行线程的单个指令。

对于各种代表性实施例中的任一个,所述方法可进一步包括:将有效状态或暂停状态分配到线程标识符。对于各种代表性实施例中的任一个,所述方法可进一步包括:将优先级状态分配到线程标识符。

对于各种代表性实施例中的任一个,所述方法可进一步包括:在执行对应指令之后,将具有经分配有效状态和经分配优先级的所述对应线程标识符返回到所述执行队列。

对于各种代表性实施例中的任一个,所述方法可进一步包括:在第一频率下选择来自第一优先级队列的线程标识符并在第二频率下选择来自第二优先级队列的线程标识符,所述第二频率低于所述第一频率。对于各种代表性实施例中的任一个,所述方法可进一步包括:将所述第二频率确定为从选择来自所述第一优先级队列的线程标识符开始的跳过计数。

对于各种代表性实施例中的任一个,所述方法可进一步包括:控制数据路径存取大小。对于各种代表性实施例中的任一个,所述方法可进一步包括:响应于时间平均使用级别而增大或减小存储器负载存取大小。对于各种代表性实施例中的任一个,所述方法可进一步包括:响应于时间平均使用级别而增大或减小存储器存储存取大小。对于各种代表性实施例中的任一个,所述方法可进一步包括:增大存储器负载存取请求的大小以对应于所述数据缓存的缓存行边界。

对于各种代表性实施例中的任一个,所述方法可进一步包括:生成去往主机处理器的一或多个系统调用。对于各种代表性实施例中的任一个,所述方法可进一步包括:使用预定信用计数,调制任何预定时间段内系统调用的数目。

对于各种代表性实施例中的任一个,所述方法可进一步包括:响应于来自主机处理器的请求,复制和传输来自线程控制存储器的对应于选定线程标识符的全部数据以监测线程状态。

对于各种代表性实施例中的任一个,所述方法可进一步包括:执行纤程创建指令以生成一或多个命令,所述一或多个命令是生成去往另一处理器核心或混合线程组构电路的一或多个调用工作描述符包。对于各种代表性实施例中的任一个,所述方法可进一步包括:响应于执行纤程创建指令,保留预定量的存储器空间以存储任何返回自变量。对于各种代表性实施例中的任一个,所述方法可进一步包括:响应于生成一或多个调用工作描述符包,在所述线程返回寄存器中存储线程返回计数。对于各种代表性实施例中的任一个,所述方法可进一步包括:响应于接收到返回数据包,使存储在所述线程返回寄存器中的所述线程返回计数递减。对于各种代表性实施例中的任一个,所述方法可进一步包括:响应于所述线程返回寄存器中的所述线程返回计数递减到零,将对应线程标识符的暂停状态变成有效状态,以供随后执行线程返回指令来完成创建的纤程或线程。

对于各种代表性实施例中的任一个,所述方法可进一步包括:执行等待或非等待纤程加入指令。对于各种代表性实施例中的任一个,所述方法可进一步包括:执行纤程全部加入指令。

对于各种代表性实施例中的任一个,所述方法可进一步包括:执行非缓存读取或负载指令,以指定用于存储从存储器接收到的数据的通用寄存器。

对于各种代表性实施例中的任一个,所述方法可进一步包括:执行非缓存写入或存储指令,以指定通用寄存器中用于存储在存储器中的数据。

对于各种代表性实施例中的任一个,所述方法可进一步包括:将交易标识符分配到针对存储器的任何负载或存储请求,并使所述交易标识符与线程标识符相关。

对于各种代表性实施例中的任一个,所述方法可进一步包括:执行第一线程优先级指令,以将第一优先级分配到具有对应线程标识符的执行线程。对于各种代表性实施例中的任一个,所述方法可进一步包括:执行第二线程优先级指令,以将第二优先级分配到具有对应线程标识符的执行线程。

对于各种代表性实施例中的任一个,所述方法可进一步包括:执行自定义原子返回指令,以完成自定义原子操作的执行线程。

对于各种代表性实施例中的任一个,所述方法可进一步包括:执行浮点原子存储器操作。

对于各种代表性实施例中的任一个,所述方法可进一步包括:执行自定义原子存储器操作。

根据本发明的以下详细描述和其实施例、权利要求书以及附图,本发明的许多其它优点和特征将变的显而易见。

附图说明

当结合附图考虑参考以下公开内容时,将更容易理解本发明的目标、特征和优点,附图中相似的参考标号用于在各图中表示相同的组件,并且附图中带有字母符号的参考标号用于在各图中表示选定组件实施例的额外类型、示例或变化,其中:

图1是混合计算系统的代表性第一实施例的框图。

图2是混合计算系统的代表性第二实施例的框图。

图3是混合计算系统的代表性第三实施例的框图。

图4是具有耦合到第一互连网络的可配置计算电路系统的混合线程组构的代表性实施例的框图。

图5是混合线程组构电路群的代表性实施例的一部分的高级框图。

图6是混合线程组构电路群内的第二互连网络的高级框图。

图7是混合线程组构电路群的代表性实施例的详细框图。

图8是混合线程组构可配置计算电路(磁贴(tile))的代表性实施例的详细框图。

图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是条件分支电路系统的代表性实施例的电路框图。

图25是混合线程处理器300的代表性实施例的高级框图。

图26是混合线程处理器的线程存储器的代表性实施例的详细框图。

图27是混合线程处理器的网络响应存储器的代表性实施例的详细框图。

图28是混合线程处理器的代表性实施例的详细框图。

图29A和29B(统称为图29)是用于混合线程处理器的自调度和线程控制的方法的代表性实施例的流程图。

图30是混合线程处理器的控制逻辑和线程选择电路系统的线程选择控制电路系统的代表性实施例的详细框图。

图31是第一互连网络的一部分的代表性实施例和代表性数据包的框图。

图32是混合线程处理器的数据路径控制电路系统的代表性实施例的详细框图。

图33是混合线程处理器的系统调用电路系统以及主机接口电路系统的代表性实施例的详细框图。

图34是第一互连网络的代表性第一实施例的框图。

图35是第一互连网络的代表性第二实施例的框图。

图36是第一互连网络的代表性第三实施例的框图。

图37示出系统架构所支持的代表性虚拟地址空间格式。

图38示出每个虚拟地址格式的代表性转换过程。

图39示出用于混合线程的代表性发送调用实例。

图40示出用于混合线程的代表性发送分叉实例。

图41示出用于混合线程的代表性发送传递实例。

图42示出用于混合线程的代表性调用链使用实例。

具体实施方式

虽然本发明容许许多不同形式的实施例,但在理解本公开将被视为本发明的原理的范例且并不希望将本发明限制于所示出的具体实施例的情况下,在图式中示出且将在本文中详细地描述本发明的具体示范性实施例。在这方面,在详细解释根据本发明的至少一个实施例之前,应理解,本发明不限于应用于上文和下文阐述、图式中示出或者实例中描述的构造细节以及组件布置。根据本发明的方法和设备能够有其它实施例并且能够用各种方式实践和实行。并且,应理解,本文中采用的措词和术语以及下面包含的摘要,是出于描述的目的并且不应当被看作是限制性的。

I.混合计算系统100和互连网络:

图1、2和3是混合计算系统100A、100B、100C(统称为系统100)的代表性第一、第二和第三实施例的框图。图4是具有耦合到第一互连网络150(还简称为“NOC”,代表“片上网络”)的可配置计算电路系统的混合线程组构(“HTF”)200的代表性实施例的框图。图5是具有第二互连网络250的混合线程组构电路群205的代表性实施例的一部分的高级框图。图6是混合线程组构群205内的第二互连网络的高级框图。图7是混合线程组构(HTF)群205的代表性实施例的详细框图。

图8是被称为“磁贴”210的混合线程组构可配置计算电路210的代表性实施例的高级框图。图9是作为磁贴210的特定代表性示例的被称为“磁贴”210A的混合线程组构可配置计算电路210A的代表性实施例的详细框图。除非特定地称为磁贴210A,否则对磁贴210的参考应单独地和共同地指代磁贴210和磁贴210A。混合线程组构可配置计算电路210被称为“磁贴”210,是因为在代表性实施例中,所有此类混合线程组构可配置计算电路210彼此相同并且可按任何次序排列和连接,即,每个混合线程组构可配置计算电路210可以“平铺”以形成混合线程组构群205。

参考图1到9,混合计算系统100包含混合线程处理器(“HTP”)300,在下文参考图25至33更详细地论述,其通过第一互连网络150耦合到一或多个混合线程组构(“HTF”)电路200。应理解,如本文中所使用,术语“组构”是指并包含计算电路阵列,在此情况下,计算电路是可重新配置的计算电路。图1、2和3示出了不同的系统100A、100B和100C的布置,所述布置包含形成相对较大和较小的系统100的额外组件,它们全都在本公开的范围内。如可各自为适用于芯片上系统(“SOC”)的布置的图1和2中所示,例如但不限于,混合计算系统100A、100B以如所示出的各种组合形式还可任选地包含存储器控制器120,所述存储器控制器120可耦合到存储器125(其还可以是单独的集成电路)、各种通信接口130中的任一个(例如PCIe通信接口)、一或多个主机处理器110和主机接口(“HIF”)115。如可各自为适用于共同衬底101上的“小芯片”配置的布置的图3所示,例如但不限于,不管具有还是不具有这些其它组件,混合计算系统100C还可任选地包含通信接口130。这些布置全都在本公开的范围内,并且在本文中统称为系统100。这些混合计算系统100中的任一个还可被视为在单个操作系统(“OS”)下操作的“节点”,并且还可以耦合到其它这类本地和远程节点。

系统100的每个节点运行单独的操作系统(OS)实例,从而控制相关联节点的资源。跨越多个节点的应用程序通过协调所跨越的节点的多个OS实例来执行。与每个节点上运行的应用程序相关联的进程具有地址空间,所述地址空间提供对节点私有存储器和跨节点分布的全局共享存储器的存取。每个OS实例包含管理本地节点资源的驱动器。应用程序的共享地址空间由节点上运行的一组驱动器共同管理。共享地址空间被分配全局空间ID(GSID)。在任何给定时间都处于活动中的全局空间的数目预期相对较小。GSID设定为8位宽。

如本文中所使用,混合线程指代跨不同异构类型的处理电路(硬件)引发多个计算纤程和线程的能力,例如,跨HTF电路200(作为可重新配置的计算组构)和跨处理器,如HTP300或另一类型的RISC-V处理器。混合线程还指代工作线程从一个计算元件转变到下一计算元件以将计算移动到数据所在的位置的编程语言/风格,这种转变也在代表性实施例中实施。主机处理器110通常是多核处理器,它可以嵌入在混合计算系统100内,也可以是通过通信接口130(例如,基于PCIe的接口)耦合到混合计算系统100的外部主机处理器。下文更详细地描述这些处理器,例如300和所述一或多个主机处理器110。

存储器控制器120可以像已知的那样实施,或者在电子领域中变得已知。可替代地,在代表性实施例中,存储器控制器120可以像相关申请中描述的那样实施。如下文更详细描述,第一存储器125也可以像已知的那样实施,或者在电子领域中变得已知。

同样在代表性实施例中,HTP 300是基于RISC-V ISA的多线程处理器,它具有带扩展指令集的一或多个处理器核心705,以及一或多个核心控制电路710和一或多个第二存储器715,所述第二存储器715被称为核心控制(或线程控制)存储器715,如下文更详细地论述。一般来说,HTP 300提供桶式轮选瞬时线程切换以维持较高的每时钟指令速率。

出于本文中的目的,HIF 115使得主机处理器110向HTP 300和HTF电路200发送工作,并使得HTP 300向HTF电路200发送工作,均作为通过第一互连网络150传输的“工作描述符包”。提供通用机制来开始和结束HTP 300和HTF电路200上的工作:利用“调用”工作描述符包来开始HTP 300和HTF电路200上的工作,并利用“返回”工作描述符包来结束HTP 300和电路200上的工作。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)之间的数据包路由。出于本公开的目的,第一互连网络150形成异步开关组构(“AF”)的部分,这意味着数据包可以沿着各种路径中的任一个路由,使得任何选定数据包到所寻址目的地的到达可以依据路由在多个不同时间中的任一个时间发生。这与下文更详细论述的第二互连网络250的同步网状通信网络275大不相同。

图31是第一互连网络150的一部分的代表性实施例和代表性数据包的图式。在代表性实施例中,第一互连网络150包含网络总线结构152(多个导线或线路),其中第一多个网络线路154专用于寻址(或路由)数据包(158),并且用于设定通过各个交叉开关的数据路径,其余的第二多个网络线路156专用于通过路径传输含有运算元数据、自变量、结果等的数据包(数据负载,示出为一连串或一系列“N”个数据包1621到162N),所述路径通过寻址线路(第一多个网络线路154)来建立。通常提供两个此类网络总线结构152作为进出每个计算资源的通道,第一通道用于接收数据,第二信道用于传输数据。单个第一寻址(或路由)数据包(示出为寻址(或路由)数据包1581)可用于建立到第一指定目的地的路由,并且可以后跟着(大体上在数个时钟循环后,以允许设定开关)将传输到第一指定目的地的一或多个数据包162,最多预定数目个数据包162(例如,最多N个数据包)。在所述预定数目个数据包162正在路由的同时,可以传输和利用另一第二寻址(或路由)数据包(示出为寻址(或路由)数据包1582),以针对将要去往第二指定目的地的其它后续一或多个数据包162而建立到此第二指定目的地的路由(示出为数据包162N+1)。

图34至36是第一互连网络150的代表性第一、第二和第三实施例的框图,作为实例示出了第一互连网络150的各种拓扑,例如第一互连网络150A、150B、150C(它们在本文中全称为第一互连网络150)。第一互连网络150通常体现为具有折叠式clos配置的多个交叉开关905、910,示出为通过队列925耦合到***(或边缘)交叉开关910的中央(或中心)交叉开关905,其中***交叉开关910又(也通过队列925)耦合到网状网络920,所述网状网络920提供例如小芯片之间的多个额外直接连接915,例如,上、下、左、右,这取决于系统100的实施例。许多网络拓扑是可用的,并且在本公开的范围内,例如图35和36中所示的,其中第一互连网络150B、150C进一步包含端点交叉开关930。

通过各种第一互连网络150中的任一个的路由包含负载均衡,使得从***(或边缘)交叉开关910朝向中央(或中心)交叉开关905移动的包可以通过中央(或中心)交叉开关905的任何可用的交叉开关路由,并且从端点交叉开关930朝向***(或边缘)交叉开关910移动的包可以通过任何可用的***(或边缘)交叉开关910路由,例如利用轮选分布或随机分布到任何可用的开关905、910的路由。对于从中央(或中心)交叉开关905通过***(或边缘)交叉开关910和/或端点交叉开关930到任何端点(或目的地)(其可以是HTF200或HTP300、存储器控制器120、主机处理器110等)的路由,利用端点(或目的地)的标识符或地址(例如,虚拟),它通常是具有五个字段的地址或标识符:(a)第一(或水平)标识符;(b)第二(或竖直)标识符;(c)第三边缘标识符;(d)第四群组标识符;以及(e)第五端点标识符。第一(或水平)标识符和第二(或竖直)标识符用于路由到正确的目的地中心,边缘标识符用于路由到选定芯片或小芯片的(四个可用边缘中的)边缘,群组标识符用于路由到可处于选定边缘处的选定通信接口,并且端点标识符用于任何额外的路由,例如通过端点交叉开关930或网状网络920。为了节省功率,各个中央(或中心)交叉开关905、***(或边缘)交叉开关910和端点交叉开关930中的任一个可以是功率门控或时钟门控的,以便在路由要求可为较低且所需要的容量可能较少时断开各个开关,并且在路由要求可为较高且所需要的容量可能更大时接通各个开关。在下文参考图30更详细地论述第一互连网络150的额外方面。

第一互连网络150的包由固定通用包标头加上可变大小的包有效负载组成。每个包需要单个包标头,并且所述单个包标头用于将包从系统100内的源组件路由到目的地组件。依据请求或响应包的类型,有效负载的大小可以变化。表1示出第一互连网络150的包的通用标头中所含的信息,表2示出第一互连网络150的读取请求包中所含的信息,且表3示出用于具有8B微片大小的16B读取的第一互连网络150的读取响应包中所含的信息。

表1:

第一互连网络150的通用包标头

表2:

第一互连网络150的读取请求包

表3:

第一互连网络150的16B读取响应包(具有8B微片)

Figure BDA0002470992470000392

HTF电路200通常又包括多个HTF电路群205,其中每个HTF电路群205耦合到第一互连网络150以用于数据包通信。每个HTF电路群205可以独立于其它HTF电路群205中的每一个而操作。每个HTF电路群205又包括多个在本文中同等地称为“磁贴”210的HTF可重新配置计算电路210的阵列,以及第二互连网络250。磁贴210嵌入或以其它方式耦合到第二互连网络250,第二互连网络250包括在下文更详细论述的两个不同的类型的网络。在代表性实施例中,每个HTF电路群205还包括存储器接口215、任选的第一网络接口220(其提供用于耦合到第一互连网络150的接口)和HTF调度接口225。各个存储器接口215、HTF调度接口225和任选的第一网络接口220可以使用任何适当的电路系统来实施,例如一或多个状态机电路,以执行下文更详细说明的功能性。

HTP 300是桶式多线程处理器,它设计成在各应用程序中以作用于稀疏数据集的高并行性程度表现良好(即,应用程序具有最低程度的数据重复使用)。HTP 300是基于开放源RISC-V处理器,并在用户模式中执行。HTP 300包含更多RISC-V用户模式指令,加上允许线程管理、发送和接收去往/来自其它HTP 300、HTF电路200和一或多个主机处理器110的事件的一组自定义指令,以及用于高效存取存储器125的指令。

稀疏数据集通常会产生不良的缓存命中率。每HTP处理器核心705具有许多线程的HTP 300允许一些线程等待来自存储器125的响应,同时其它线程继续执行指令。这种计算风格容许存储器125具有时延,并且允许每时钟存在高持续性的所执行指令。事件机制允许来自许多HTP核心705的线程以高效方式通信。线程在等待存储器125的响应或事件消息时暂停执行指令,从而允许其它线程使用指令执行资源。HTP 300是自调度和事件驱动的,允许线程高效地创建、破坏和与其它线程通信。在下文参考图25至33更详细地论述HTP 300。

II.混合线程:

系统100的混合线程允许计算任务从主机处理器110转变到一个节点上的HTP 300和/或HTF 200,然后到可能存在的不同节点上的HTP 300或HTF 200。在这整个序列的从一个计算元件到另一计算元件的转变工作期间,所有方面完全都在用户空间中处理。另外,计算任务从HTP 300到另一HTP 300或HTF 200的转变可通过执行单个HTP 300指令且不参考存储器125来进行。这一极轻的线程管理机制允许应用程序快速创建大量线程以处理应用程序的可平行化核,然后在核完成时重新加入。HTP 300和HTF 200的计算元件以极其不同的方式处理计算任务(RISC-V指令执行相较于数据流),但是它们都支持混合线程方法,并且可以代表应用程序无缝交互。

工作描述符包用于开始HTP 300和HTF电路200上的工作。通过HTP 300和/或HTF200接收工作描述符包构成HTP 300和/或HTF 200中将触发基于硬件的自调度和相关联功能或工作的后续执行(被称为执行线程)的“事件”,而不需要进一步存取主存储器125。一旦线程开始,它就一直执行指令到(通过HTP 300)执行线程返回指令或(通过HTF 200)生成返回消息为止。线程返回指令将返回工作描述符包发送到原始调用器。

出于本公开的目的,在高或一般级别下,工作描述符包包含(例如但不限于):(1)将工作描述符包路由到它的目的地所需要的信息;(2)初始化HTP 300和/或HTF电路200的线程背景,例如程序计数(例如,作为64位地址),以便所存储的指令(存储在图28的指令缓存740或图9的第一指令RAM 315中)开始线程执行;(3)第一存储器125中获得将用于线程执行的自变量或其它信息的任何自变量或地址;以及(4)用于传输计算结果的返回地址。尽管如上文所提及以单数形式提及“工作描述符包”,但此类工作描述符包实际上划分成用于通过第一互连网络150传输的多个包,即寻址(或路由)数据包158和一或多个数据包162。依据要执行的操作或指令,可存在许多不同种类的工作描述符包,其中在下文示出和论述了许多实例。指令缓存740和/或第一指令RAM 315已经在任何执行之前进行填充,例如填充在初始系统100配置中。一般来说,对于HTF电路200,工作描述符调用包还将具有类似信息,例如寻址、有效负载(例如,配置、自变量值等)、调用标识符(ID)和返回信息(例如,用于向所述端点提供结果),以及其它信息,如下文更详细地论述。

在高或一般级别下,并且如下文更详细地论述,主机处理器110或HTP 300可通过发送调用工作描述符包来发起另一HTP 300或HTF 200上的线程。调用信息包含目的地节点、调用的进入指令地址,以及最多四个64位自变量值。每个HTP 300初始化成具有堆叠和背景结构池。这些结构驻留在用户空间中。当HTP 300接收调用时,它从自由池中选择堆叠和背景结构。接着,HTP 300利用调用信息和堆叠结构地址来初始化新线程。此时,经初始化线程处于活动线程队列中以开始执行。发起HTP 300上的线程的步骤可以实施为硬件状态机(与执行指令相对)以最大化线程创建处理量。存在类似的用于发起HTF 200上的工作的基于硬件的方法,同样如下文所论述。

一旦线程处于HTP 300上的活动线程队列中,它就会被选定执行指令。最终,线程将完成它的计算任务。此时,HTP 300将通过执行单个自定义RISC-V发送返回指令而将返回消息发送回到调用处理器。发送返回类似于发送调用。指令释放堆叠和背景结构,并将最多四个64位参数发送回到调用处理器。调用HTP 300执行接收返回自定义RISC-V指令以接收返回。HTP调用处理器300将返回自变量复制到ISA可见寄存器中以供执行线程存取。原始发送调用包含供所调用的HTP 300知晓其返回发送位置所需的信息。信息由源HTP 300和调用线程的线程ID组成。

HTP 300具有三个选择方案,用于将工作任务发送到另一HTP 300或HTF 200计算元件。这些选择方案是为了执行调用、分叉或传递,如图39至41中所示:

(a)调用(901)发起远程HTP 300或HTF 200上的计算任务并暂停其它指令执行,直到接收到返回(902)为止。传递到远程计算元件的返回信息在它已完成且准备好返回时由远程计算任务使用。

(b)分叉(903)发起远程HTP 300或HTF 200上的计算任务并继续执行指令。单个线程可使用发送分叉机制而发起远程HTP 300或HTF 200计算元件上的许多计算任务。原始线程必须一直等到在发送其返回之前已经从每个分叉线程接收到返回(902)为止。传递到远程计算元件的返回信息在它已完成且准备好返回时由远程计算任务使用。

(c)传递(904)发起远程HTP 300或HTF 200上的计算任务并终止原始线程。传递到远程计算元件的返回(902)信息是来自发起当前线程的调用、分叉或传递的返回信息。发送分叉(903)包含返回到在第一HTP 300上执行递送分叉指令的线程的信息。在第二HTP 300上执行的发送传递(Xfer)包含返回到在第一HTP 300上执行发送分叉指令的线程的信息。基本上,发送传递仅传递在发起时提供的返回信息。最后,在第三或第四HTP 300上执行发送返回的线程使用它接收到的返回信息来确定返回的目的地。

尽管在图39至41中示出用于HTP 300之间的通信的调用、分叉和传递,但是HTP300还可向HTF 200发送类似的工作描述符包,如图42中针对调用链实例所示。

线程可以通过引用虚拟地址空间来存取本地节点上的私有存储器以及本地和远程节点上的共享存储器。HTP 300线程将主要使用所提供的入站调用自变量和私有存储器堆叠来操控存储在共享存储器中的数据结构。类似地,HTF 200线程将使用入站调用自变量和组构内存储器来操控存储在共享存储器中的数据结构。

当线程被创建时,通常向HTP 300线程提供最多四个调用自变量和一个堆叠。自变量位于寄存器(下文论述的存储器715)中,堆叠位于节点私有存储器中。通过使用基于标准堆叠帧的调用方法,线程通常将针对线程私有变量和HTP 300本地调用使用堆叠。HTP 300线程还存取应用程序的整个经分割全局存储器。预期应用程序数据结构主要从经分割全局地址空间分配,以允许所有节点计算元件都参与具有直接负载/存储存取的计算。

每个HTP 300线程都具有在发起线程时提供的背景块。背景块提供在需要时可以保存线程背景的存储器125中的位置。通常,这是为了调试而进行,并且如果创建的线程多于可用于处理它们的硬件资源,那么也会发生这种情况。用户可限制活动线程的数目,以阻止线程不断将状态写入到它的基于存储器的背景结构(除非是为了可能进行的可见性调试)。

通常,当线程被创建时,还向HTF 200线程提供最多四个调用自变量。自变量处于组构内存储器结构中以供数据流计算存取。组构内存储器还用于线程私有变量。HTF 200线程可存取应用程序的整个经分割全局存储器。

系统100的计算元件具有各自唯一地适合于特定计算任务的不同能力。当执行单个线程时,主机处理器110(在装置内部或外部)设计成用于最低可能时延。HTP 300针对并行执行较大的一组线程而优化,以提供最高执行处理量。HTF 200针对数据流风格核的极高性能而优化。计算元件已经构造成极其高效地将计算任务从一个元件传递到下一元件,以尽可能高效地执行计算核。图42示出利用每个计算元件的用于混合线程的代表性调用链使用实例,并且示出了类似于模拟的传统的阶层结构使用模型。高处理量数据密集型应用程序可能使用朝向数个独立流的不同使用模型。

全部应用程序开始在主机处理器110(内部或外部)上执行。主机处理器110在它基于输入参数决定采取适当的动作时通常将进行一组嵌套式调用。最终,应用程序到达程序的计算阶段。计算阶段可最适合在主机处理器110上执行,或适合通过调用HTP 300和/或HTF 200计算元件加速执行。图42示出主机处理器110执行到HTP 300的多个调用(901)。每个HTP 300通常会将数个线程分叉(903)以执行它的计算任务。各个线程可执行计算(整数和浮点),存取存储器(读取、写入),以及将线程执行传递到另一HTP 300或HTF 200(在同一节点或远程节点上),例如通过到HTF 200的调用(901)。将核的执行移动到另一节点的能力可以是有利的,因为允许在靠近需要存取的存储器处执行计算任务。在适当的节点装置上执行工作可大大减少节点间存储器流量,加快应用程序的执行。应注意,在代表性实施例中,HTF 200不进行到主机处理器110或HTP 300的调用,在特殊情形中(即,当限定于编译时间时)只进行到HTF 200的调用。

主机处理器110能够发起本地节点上的HTP 300或HTF 200上的线程。对于外部主机处理器110,本地节点是通过PCIe或其它通信接口130连接到主机的节点。对于内部主机处理器110,本地节点是主机处理器110嵌入其中的节点。呈现了HTP核心705上的主机处理器110如何发起工作的描述。使用类似方法发起HTF 200上的工作。

主机处理器110通过将工作描述符写入到主机接口(HIF)115的调度队列105而发起HTP核心705上的工作。调度队列105位于私有存储器中,使得主机处理器110写入到经缓存数据,以优化主机处理器110的性能。调度队列105中的条目大小通常是64字节,使得存在足够空间用于远程调用信息以及最多四个64位参数。应注意,在代表性实施例中,每节点每应用程序存在一个调度队列105。对于64节点系统,将存在64个操作系统实例。每个OS实例将具有一或多个进程,每个进程具有它们自己的调度队列105。

HIF 115监测调度队列105的写入指针,以确定***条目的时间。当存在新条目时,HIF 115验证主机处理器110的返回队列中存在用于64字节返回消息的空间。需要此检查来确保已完成调用的状态不会因为返回队列空间的缺失而被丢弃。假设存在返回空间,那么HIF 115读取来自调度队列105的调用条目并将它作为工作描述符包转发到HTP 300或HTF200上。接着,HTP 300或HTF 200处理工作描述符包,如下文更详细地论述,并生成返回包。

主机处理器110开始HTP 300或HTF 200上的新线程的整个过程需要通过调度队列105将调用信息暂存(64个字节写入到队列,64个字节从队列读取),但是不存在其它对DRAM存储器的存取。通过调度队列105将调用信息暂存提供了所需要的反压机制。如果调度队列105变满,那么主机处理器110将暂停,直到有所进展且调度队列105的条目变为可用为止。

返回包通过第一互连网络150传输到HIF 115。HIF 115将返回包写入到可用的返回队列条目。主机处理器110通常会周期性地轮询返回队列以完成调用并获得任何返回的状态。应注意,以FIFO次序存取返回队列。如果返回必须与特定调用匹配,那么运行时间库可用于执行此排序。对于许多应用程序来说,知晓已经接收到全部返回并且可开始应用程序的下一阶段就已足够。

III.混合线程组构200:

作为综述,HTF电路200是一种包括互连计算磁贴210的粗粒度可重新配置计算组构。磁贴210与被称为同步网状通信网络275的同步组构互连,从而允许数据从一个磁贴210穿到另一磁贴210,而不用排队。此同步网状通信网络275允许许多磁贴210一起管线化以产生通过算术运算的连续数据流,并且为执行一或多个计算线程而通过同步网状通信网络275连接的磁贴210的每个此类管线在本文中称为“同步域”,其可具有串联连接、并联连接,以及可能的分支连接。同步域的第一磁贴210在本文中称为“基础”磁贴210。

磁贴210还与被称为异步包网络265的异步组构互连,从而允许通过异步操作来桥接计算的同步域,其中在代表性实施例中,异步包网络265上的所有包都能够在单个时钟循环中传送。这些异步操作包含发起同步域操作、将数据从一个同步域传递到另一同步域、存取系统存储器125(读取和写入),以及执行分支和循环构造。同步和异步组构一起允许磁贴210高效地执行高级语言构造。异步包网络265在许多方面不同于第一互连网络150,包含(例如但不限于)需要更少的寻址、是单个通道、利用基于深度的反压进行排队,以及利用打包数据运算元,例如具有128位的数据路径。应注意,同样是例如但不限于,各个磁贴210的内部数据路径也是128位。例如但不限于,同步域的实例以及通过异步包网络265彼此通信的同步域的实例在图16、18、20中示出。

在代表性实施例中,在大多数情况下,线程(例如,核)执行和控制信令在这两个不同网络之间是分开的,其中线程执行使用同步网状通信网络275来进行以形成各个磁贴210的多个同步域,且控制信令使用在各个磁贴210之间通过异步包网络265传输的消息传递包来进行。例如,所述多个可配置电路用于使用同步网状通信网络275形成多个同步域来执行多个计算,并且所述多个可配置电路进一步用于通过异步包网络265生成和传输多个控制消息,其中所述多个控制消息包括(例如但不限于)一或多个完成消息和继续消息。

在代表性实施例中,第二互连网络250通常包括两个不同类型的网络,每个类型的网络提供磁贴210之间及数据通信,第一异步包网络265及与其覆叠或组合的第二同步网状通信网络275,如图6和7中所示。异步包网络265包括:多个AF开关260,其通常实施为交叉开关(其可以也可以不另外或任选地具有(例如但不限于)Clos或折叠式Clos配置);和多个通信线路(或导线)280、285,其将AF开关260连接到磁贴210,从而提供磁贴210和下文论述的其它所示组件之间的数据包通信。同步网状通信网络275提供磁贴210之间通过通信线路(或导线)270的多个直接(即,无开关、点到点)连接,其可以在磁贴210的输入和输出处由寄存器暂存,但在其它情况下在磁贴210之间不需要排队,并且不需要形成数据包。(在图6中,为了更好地示出这两个网络的覆叠,其磁贴210嵌入在第二互连网络250中,将磁贴210表示为同步网状通信网络275的顶点,并且将AF开关260示出为“Xs”,如所指示。)

参考图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、线程控制电路系统335和控制寄存器340,例如针对磁贴210A所示的那些。继续所述实例,同步网络输入135可包括输入寄存器350和输入复用器355,同步网络输出170可包括输出寄存器350和输出复用器395,异步(包)网络输入140可包括AF输入队列360,并且异步(包)网络输出165可包括AF输出队列390,并且还可包含或共享AF消息状态机345。

值得注意的是,如下文更详细地论述,配置存储器(例如,RAM)160包括配置电路系统(例如配置存储器复用器372)以及执行不同配置功能的两个不同的配置存储器,即第一指令RAM 315(其用于配置磁贴210的内部数据路径)和在本文中称为“轮辐”RAM320的第二指令和指令索引存储器(RAM)320(其用于多个目的,包含配置磁贴210中独立于当前指令的部分,选择当前指令和下一磁贴210的指令,和选择主同步输入等等,它们全部在下文更详细地论述)。

如图8和图9中所示,通信线路(或导线)270示出为通信线路(或导线)270A和270B,使得通信线路(或导线)270A是将数据馈送到输入寄存器350中的“输入”(输入通信线路(或导线)),且通信线路(或导线)270B是将数据从输出寄存器380中移出的“输出”(输出通信线路(或导线))。在代表性实施例中,存在多组或多总线的进出每个磁贴210的通信线路(或导线)270,来自和去往每个邻近磁贴(例如,同步网状通信网络275的上行链路、下行链路、左行链路和右行链路),以及来自和去往其它组件以分布各个信号,例如数据写入掩码、停止信号以及从一个磁贴210提供到另一磁贴210的指令或指令索引,如下文更详细地论述。可替代地且没有分开示出,还可存在各种专用通信线路,例如用于确证停止信号,使得从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的次数,因为可能不需要存取存储器125来完成计算,原因是线程会沿着磁贴210之间的选定数据路径执行。

在异步包网络265中,每个AF开关260通常通过通信线路(或导线)280耦合到多个磁贴210和一或多个其它AF开关260。另外,一或多个选定AF开关260还(通过通信线路(或导线)285)耦合到存储器接口215、任选的第一网络接口220和HTF调度接口225中的一或多个。如所示出,例如但不限于,HTF电路群205包含单个HTF调度接口225、两个存储器接口215和两个任选的第一网络接口220。同样如所示出,例如但不限于,除了耦合到其它AF开关260之外,AF开关260中的一个进一步耦合到存储器接口215、任选的第一网络接口220和HTF调度接口225,而AF开关260中的另一个进一步耦合到存储器接口215和任选的第一网络接口220。

依据选定实施例,存储器接口215和HTF调度接口225中的每一个还可直接连接到第一互连网络150,并且能够通过第一互连网络150和异步包网络265接收、生成和传输数据包,第一网络接口220不用于HTF电路群205或者不包含在HTF电路群205中。例如,HTF调度接口225可供各个磁贴210中的任一个用于将数据包传入和传出第一互连网络150。在其它实施例中,存储器接口215和HTF调度接口225中的任一个可以利用第一网络接口220来通过第一互连网络150接收、生成和传输数据包,以便使用第一网络接口220来提供第一互连网络150所需要的额外寻址。

电子领域中的技术人员将认识到,AF开关260、磁贴210、任选的第一网络接口220、存储器接口215和HTF调度接口225之间的连接可以任何选定的组合形式进行,其中任何选定数目个组件并且所有此类组件选择和组合被同等地看待,且被视为在本公开的范围内。电子领域中的技术人员将认识到,不需要将HTF电路200划分成多个HTF群205,只是提供一种概念性划分以便描述各种组件和各种组件之间的连接。例如,尽管HTF电路群205示出为具有十六个磁贴210,其中有四个AF开关260、单个HTF调度接口225、两个存储器接口215和两个第一网络接口220(任选的),但是更多或更少个这些组件中的任一种可以包含在HTF电路群205或HTF电路200或它们两者中,并且如下文更详细地描述,对于任何选定实施例,HTF电路群205可以进行分割以改变可在任何选定时间活动(例如,通电和运行)的组件的数目和类型。

同步网状通信网络275允许多个磁贴210管线化而不需要数据排队。参与同步域的所有磁贴210都充当单个管线化数据路径。这一系列的磁贴210中形成单个管线化数据路径的第一个磁贴在本文中称为同步域的“基础”磁贴210,并且此类基础磁贴210通过管线化磁贴210发起工作线程。基础磁贴210负责以在本文中称为“轮辐计数”的预定义步调开始工作。作为实例,如果轮辐计数是三,那么基础磁贴210可每隔两个时钟发起工作。还应注意,每个磁贴210内的计算也可管线化,使得不同指令的部分可以在执行其它指令时执行,例如在执行当前运算时,输入用于下一运算的数据。

磁贴210、存储器接口215和HTF调度接口225中的每一个在任何选定的HTF电路群205内具有不同或唯一地址(例如,作为5位宽端点ID)作为目的地或端点。例如,磁贴210可具有端点ID 0-15,存储器接口215(0和1)可具有端点ID20和21,且HTF调度接口225可具有端点ID 18(其中没有地址被提供给任选的第一网络接口220,除非它包含在选定实施例中)。HTF调度接口225接收含有将由磁贴210中的一或多个执行的工作的数据包,称为工作描述符包,其已经配置用于各个操作,如下文更详细地论述。工作描述符包将具有一或多个自变量,接着HTF调度接口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是HTF调度接口225的代表性实施例的框图。参考图14,HTF调度接口225包括状态机(和其它逻辑电路系统)470、一或多个寄存器475和一或多个调度队列472。状态机470在异步包网络265和第一互连网络150上接收、生成和传输数据包。寄存器475存储寻址信息,例如磁贴210的虚拟地址,以及跟踪分布到各个磁贴的配置和工作负载的各种表格,如下文更详细地论述。调度队列472存储等待在第一互连网络150和/或异步包网络265上传输的消息。

如上文所提及,HTF调度接口225例如从主机接口115通过第一互连网络150接收工作描述符调用包(消息)。工作描述符调用包将具有各种信息,例如有效负载(例如,配置、自变量值等)、调用标识符(ID)和返回信息(例如,用于向所述端点提供结果)。HTF调度接口225将创建:各种AF数据消息,用于通过异步包网络265传输到磁贴210,包含将数据写入到存储器325中,所述磁贴210将是基础磁贴210(基础磁贴ID,用于传输AF完成消息);以及线程ID(线程标识符或“TID”),并且将向基础磁贴210发送继续消息(例如,具有用于每个TID的完成和其它计数),使得基础磁贴210一旦接收到足够的完成消息就可开始执行。HTF调度接口225在寄存器475中保存各个表格,以针对每一线程ID和XID跟踪什么内容已经传输到哪一磁贴210。在结果生成或执行完成时,HTF调度接口225将接收AF数据消息(指示完成且具有数据)或AF完成消息(指示完成但是不具有数据)。HTF调度接口225还(在寄存器475中)保存它需要接收的完成和数据消息的数目的各个计数,以知晓核执行已完成,接着将汇编并通过第一互连网络150传输工作描述符返回数据包,带有所得数据、调用ID、返回信息(例如,请求者的地址),并释放TID。下文更详细地描述HTF调度接口225的额外特征和功能性。

应注意,如上文所提及,多个级别(或多种类型)的TID可以被使用,并且常常被使用。例如,HTF调度接口225从TID池分配第一类型的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或switch语句),如下文更详细地描述。

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和用于多个其它功能的轮辐RAM 320,所述多个其它功能包含配置磁贴210中独立于任何选定或给定数据路径的部分,从指令RAM 315中选择数据路径指令,针对每个时钟循环选择(可用输入270A当中的)主同步输入,等等。如下文更详细地论述,指令RAM 315和独立轮辐RAM 320的这一新颖使用实现了HTF电路群205和HTF电路200作为整体的动态自配置和自重新配置,等待。

每个磁贴具有含有配置信息的指令RAM 315,所述配置信息设置用于特定操作的磁贴210的数据路径,即,确定例如是否将在磁贴210的给定时间片断中执行乘法、移位、加法等以及使用哪一数据(例如,来自存储器325的数据,或来自输入寄存器350的数据)的数据路径指令。指令RAM 315具有多个条目,允许磁贴210进行时间切分,从而在管线化的同步域中执行多个不同操作,其中在图9中示出磁贴210的代表性管线区段304、306、307、308和309。任何给定指令还可指定哪些输入270A将具有供所述指令使用的数据和/或控制信息。另外,每个时间片断可依据先前磁贴210的时间片断数据依赖型条件操作而有条件地执行不同指令,如参考图24所论述。指令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的那些设置。例如,作为输入复用器355的选择控制,轮辐RAM 320用于针对每个时钟循环指定磁贴210的哪一输入(例如,数组输入通信线路270A或输入寄存器350中的一个)是主同步输入。这至关重要,因为选择磁贴210的给定时间片断的指令(来自指令RAM 315)的指令索引以及线程ID(TID)提供在主同步输入上。因此,即使在到给定磁贴210的输入270A上提供的实际指令索引可发生变化(如参考图24所描述),是哪一组输入270A将具有所述选定指令索引也不会变化,使得任何给定磁贴210事先知晓它将使用什么输入来接收选定的指令索引,与所述选定的指令索引所指定的指令无关。保存在轮辐RAM 320中的配置通常还指定哪些输出270B将用于选定指令(或时间片断)。轮辐RAM 320读取地址输入,即,轮辐索引,来自从零到轮辐计数减去一计数(模)的计数器。HTF电路群205内的全部磁贴210大体上在每个时钟都应该具有相同的轮辐RAM输入值,以具有适当的同步域操作。轮辐RAM 320还存储指令索引,并且还用于从指令RAM 315中选择指令,使得针对同步域的基础磁贴210,在轮辐RAM 320的计数改变时,可以选择一系列指令供磁贴210执行。至于同步域中的后续磁贴,指令索引可以由同步域的先前磁贴210提供。轮辐RAM 320的这一方面还参考图24来论述,因为轮辐RAM 320极具创新性,实现了HTF电路群205的动态自配置和重新配置。

轮辐RAM 320还指定同步输入270A何时写入到磁贴存储器325。这一情形会在磁贴指令需要多个输入且输入中的一个早早到达的情况下发生。早早到达的输入可以写入到磁贴存储器325,然后当其它输入到达时从存储器325中读取。针对此情形,磁贴存储器325作为FIFO存取。FIFO读取和写入指针存储在磁贴存储器区域ram中。

每个磁贴210含有一或多个存储器325,并且每个存储器通常具有数据路径的宽度(64位),并且例如,深度将在512到1024个元素的范围内。磁贴存储器325用于存储支持数据路径操作所需要的数据。所存储的数据可以是作为核群205配置的部分负载的常数,也可以是被计算为数据流的部分的变量。磁贴存储器325可以作为来自另一同步域的数据传递或由另一同步域发起的负载操作的结果而从同步网状通信网络275写入。磁贴存储器只通过同步数据路径指令执行读取。

磁贴存储器325通常分割成区域。较小磁贴存储器区域RAM存储存储器区域存取所需的信息。每个区域表示核中不同变量。区域可存储共享可变(即,所有执行线程所共享的变量)。标量共享变量具有指数值零。共享变量阵列具有可变指数值。区域可存储以TID标识符作索引的线程私有变量。变量可用于将数据从一个同步域传递到下一同步域。对于此情况,变量使用源同步域中的XID_WR标识符来写入,并使用目的地域中的XID_RD标识符来读取。最后,区域可用于暂时存储磁贴210先前在同步数据路径中产生的数据,直到其它磁贴数据输入准备好为止。对于此情况,读取和写入索引是FIFO指针。FIFO指针存储在磁贴存储器区域RAM中。

磁贴存储器区域RAM通常含有以下字段:

1.区域索引较高位:它是磁贴存储器区域索引的较高位。较低索引位从异步组构消息、TID、XID_WR或XID_RD标识符或者从FIFO读取/写入索引值获得。区域索引较高位与较低索引位进行“或”运算以产生磁贴存储器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 Op310的输出可以提供给寄存器312,或直接提供给其它组件,例如输出复用器395、条件逻辑电路系统370和/或写入掩码生成器375。

由MS Op 305执行的各种运算包含(例如但不限于):整数和浮点乘法、移位、传递输入、有正负号和无正负号的整数乘法、有正负号和无正负号的右移、有正负号和无正负号的左移、位次序颠倒、排列(所有这些运算都作为浮点运算),以及整数和浮点之间的变换,例如双精度下截断运算或将浮点转换成整数。由ALB Op 310执行的各种运算包含(例如但不限于):有正负号和无正负号的加法、绝对值、取相反数、逻辑“或非”运算、相加和取相反数、减法A-B、反向减法B-A、有正负号和无正负号的大于、有正负号和无正负号的大于或等于、有正负号和无正负号的小于、有正负号和无正负号的小于或等于、比较(等于或不等于)、逻辑运算(“与”、“或”、“异或”、“与非”、“或非”、“非异或”、“与非”、“或非”(所有这些运算都作为浮点操作),以及整数和浮点之间的变换,例如下截断运算或将浮点转换成整数。

到ALB Op 310和MS Op 305的输入来自同步磁贴输入270A(保存在寄存器350中)、来自内部磁贴存储器325或来自指令RAM 315内提供的较小恒定值。下表4示出磁贴210数据路径输入源,列出了ALB Op 310和MS Op 305的典型输入。

表4:

Figure BDA0002470992470000541

Figure BDA0002470992470000551

作为同步网状通信网络275的通信线路270的部分,磁贴210的每一个输出270B单独地启用,从而实现经停用输出的时钟门控。ALB Op 310的输出可以发送到多个目的地,如表5中所示。

表5:

目的地名称 目的地描述
SYNC_U 同步网状通信网络275上行链路
SYNC_D 同步网状通信网络275下行链路
SYNC_L 同步网状通信网络275左行链路
SYNC_R 同步网状通信网络275右行链路
WRMEM0_Z 写入存储器0。将值零用作索引来写入存储器325的区域。
WRMEM0_C 写入存储器0。将指令常量字段用作索引来写入存储器325的区域。
WRMEM0_T 写入存储器0。将TID值用作索引来写入存储器325的区域。

在高级别下,并且都作为无限制的代表性实例,磁贴210的一般操作如下。当配置负载到系统中时,作为程序编译的部分,同步网状通信网络275和各个磁贴210的同步域全部进行调度。除非暂停或停止,否则当所有所需要的输入都准备好,例如数据变量在输入寄存器350或存储器325中,并且可用于从寄存器或存储器读取或获取并被使用时,磁贴210可执行它的操作,如下文更详细描述。在代表性实施例中,每个管线级可以在单个时钟循环中操作,但是在其它代表性实施例中,每管线级可以利用额外的时钟循环。在第一管线级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的哪一区域正在存取的字段,以及指定存取索引模式的字段。存储器区域RAM 405(控制寄存器340的部分)指定提供特定区域的较高存储器地址位的区域读取掩码。所述掩码与由读取索引选择复用器403供应的较低地址位进行“或”运算(“或”门408)。当磁贴存储器325在FIFO模式中存取时,存储器区域RAM 405还含有读取索引值。当在FIFO模式中存取时,RAM 405中的读取指数值递增并被写回。在各种实施例中,存储器区域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)或发出外部存储器参考。下表6列出了异步包网络265出站消息操作:

表6:

Figure BDA0002470992470000561

异步包网络265允许消息进行发送和从不同同步域中的磁贴210接收。在一些情形下,同步域向自身发送消息是有意义的,例如,当同步域的基础磁贴210分配TID且TID将被同一同步域释放时。

如果各个磁贴210的同步域生成和发送消息的速度快于消息可以被异步包网络265或接收端点接收、路由和处理的速度,那么异步包网络265可变得拥塞。在此情形下,提供反压机制来缓解任何此类拥塞。图22是代表性流控制电路385的框图。一般来说,每HTF电路群205存在至少一个流控制电路385。当消息等待在异步包网络265上发送时,磁贴210的异步组构输出队列390将保存所述消息。为输出队列390提供预定阈值,当达到所述预定阈值时,将使磁贴210的输出队列390生成指示符,例如设置确证为通信管线384上提供给流控制电路385的“停止”信号382的位。每个通信管线384从HTF电路群205中的磁贴210提供到流控制电路385。流控制电路385具有一或多个“或”门386,其在磁贴210中的任一个生成停止信号382的持续时间内,将继续确证分布到受影响HTF电路群205内的所有磁贴210的通信管线388上的停止信号382,

停止信号382可以通过专用通信管线388或通过同步网状通信网络275分布,专用通信管线388不是如所示出的同步网状通信网络275或异步包网络265的部分。在代表性实施例中,存在HTF电路群205内的所有磁贴输出队列390可以确证的单个停止信号382,且在停止信号382确证时所述HTF电路群205内的所有磁贴210被保持(暂停或停止)。此停止信号382继续允许所有AF输入队列360接收AF消息和包,从而避免死锁,而且使所有同步域管线被保持或暂停(这还阻止生成额外的AF数据包)。停止信号382允许异步包网络265将磁贴210的输出队列390排出到(触发输出队列390的)输出队列390中的消息数目降到阈值级别以下的程度。一旦输出队列390的大小降到阈值级别以下,所述磁贴210的通过通信管线384的信号就返回到零(停止信号382不再生成)。当针对HTF电路群205中的所有磁贴210都发生这种情况时,通信管线388上的信号也返回到零,这意味着停止信号不再确证,并且结束磁贴210上的停止或暂停。

同步域的第一或“基础”磁贴210负责通过多磁贴210同步管线发起工作线程。新线程可以预定步调发起。步调间隔在本文中称为“轮辐计数”,如上文所提及。例如,如果轮辐计数是三,那么新工作线程可以每三个时钟在基础磁贴210上发起一次。如果跳过开始新线程(例如,没有线程准备好开始),那么在另一线程可以开始之前必须等待完整的轮辐计数。大于一的轮辐计数允许每个物理磁贴210在同步管线内使用多次。作为实例,如果同步域在单个物理磁贴上执行且轮辐计数是一,那么同步域可只含单个磁贴时间片断。如果针对此实例,轮辐计数是四,那么同步域可含有四个磁贴时间片段。通常,同步域通过由同步网状通信网络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、迭代增量(iterationincrement)447、迭代索引460和循环迭代计数465。可替代地,继续队列430和运行队列440可以同等地体现在控制寄存器340中。

图12是磁贴210形成第一和第二同步域526、538以及代表性异步包网络消息传递的图式。具有异步包网络265的一个难题在于所需要的数据可能会在不同时间到达磁贴210,这可能难以确保所开始的线程可以运行到具有固定管线延迟的完成。在代表性实施例中,形成同步域的磁贴210直到所有资源都准备好才执行计算线程,例如通过具有可用的所需数据、任何所需变量等,它们已经全部通过异步包网络265分布到磁贴,并且因此可以在各个时间中的任一个时间到达指定的磁贴210。另外,数据可能需要从系统存储器125读取并通过异步包网络265传递,并且因此也可以在各个时间中的任一个时间到达指定的磁贴210。

为了使线程运行到具有固定管线延迟的完成,代表性实施例在同步域的基础磁贴210处提供以线程的TID作索引的完成表格422(或暂停表格420)。完成表格422(或暂停表格420)维持必须在发起线程的执行之前接收到的依赖完成的计数。完成表格422(或暂停表格420)包含名为“完成计数”的字段,它在重设时初始化为零。使用两个类型的AF消息来修改计数字段。第一消息类型是线程开始或继续消息,并且使字段以指示必须在同步域中可以开始线程之前遵守的依赖数目的计数递增。第二AF消息类型是完成消息,并且使计数字段逐一递减,指示已接收到完成消息。一旦接收到线程开始消息且完成计数字段达到零,线程就已经准备好开始。

如图12中所示,第一同步域526的磁贴210B已通过异步包网络265将AF存储器负载消息(293)传输到存储器接口215,存储器接口215继而将生成通过第一互连网络150去往系统存储器125的另一消息(296)以获得所请求的数据(在消息297中返回)。但是,所述数据将供第二同步域538中的磁贴201E使用并且传输(消息294)到磁贴201E。当第一同步域526已经完成其管线部分时,第一同步域526中的一个磁贴(210C)将AF继续消息(291)传输到第二同步域538的基础磁贴210D。所述AF继续消息(291)包含第一同步域526的线程的TID(例如,TID=1,其也包含在图12的其它消息中),以及完成计数1,指示第二同步域538的基础磁贴210D将等待在第二同步域538上开始线程,直到它接收到一个完成消息为止。

因此,当磁贴210接收此类数据(例如图12中的磁贴210E)时,它通过将完成消息(具有线程ID(TID))发送回到基础磁贴210来确认所述接收,此处,基础磁贴210是第二同步域538的基础磁贴210D。作为提供给基础磁贴210(在初始配置时或作为继续消息的部分)且作为完成计数存储在完成表格422(或暂停表格420)中的配置的部分,基础磁贴210D知晓为了使同步域的磁贴210开始执行基础磁贴210必须接收的此类完成消息的数目,在此情况下,同步域是第二同步域538。当完成消息被基础磁贴210接收到时,对于具有所述TID的特定线程,暂停表格的完成计数递减,当针对所述线程它达到零从而指示已经接收到所有所需要的完成消息时,基础磁贴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的条目初始化为非活动,其中完成增量计数为零。接收到暂停消息使增量计数以所需完成计数的数目递增,并将暂停表格420的条目设置为活动。接收到完成消息使增量计数逐一递减。应注意,完成消息可以在相关联的暂停消息之前到达,使得增量计数为负。当暂停表格420的条目是活动的且增量计数为零时,发起相关联的活动(例如,新线程)(并撤销启动暂停表格420的条目)。

继续(或调用)队列430使线程保持准备好在同步域上开始。当接收到用于调用操作的所有完成时,将线程推动到继续队列430中。应注意,继续队列430中的线程可能需要TID和/或XID在线程可以在同步域上开始之前分配,例如,如果所有TID都在使用中,那么一旦TID被释放且可用,继续队列430中的线程就可以开始,即,线程可以一直等到TID和/或XID可用为止。

重入队列445使线程准备好在同步域上开始,其中那些线程的执行优先于继续队列430中的那些。当接收到用于继续操作的所有完成且线程已经具有TID时,将所述线程推动到重入队列445中。应注意,重入队列445中的所述线程不需要分配TID。提供单独的重入队列445和继续(continue/continuation)队列430以免出现死锁情形。一种特殊类型的继续操作是循环。循环消息含有循环迭代计数。所述计数用于指定一旦暂停操作完成就使线程开始的次数。

还可实施任选的优先级队列425,使得优先级队列425中具有线程标识符的任何线程在执行继续队列430或重入队列445中具有线程标识符的任何线程之前执行。

当开始用于循环操作的线程时,使用迭代索引460的状态。迭代索引460初始化为零,并且针对每一线程开始递增。将迭代索引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和HTF调度接口225中的各个寄存器中的任一个中,从而为HTF电路200提供配置,并且依据程序,还负载到HTP 300中。

例如但不限于,利用通常由主机处理器110或HTP 300生成的含有零或多个自变量的工作描述符消息开始核,以供一或多个HTF电路200执行。自变量在工作描述符AF消息内发送到HTF调度接口225。这些自变量提供线程特定输入值。主机处理器110或HTP 300可使用它相应的操作系统(“OS”)将初始化磁贴存储器325的位置的“主机”消息发送到核,其中此类主机消息提供非线程特定值。一个典型实例是发送供所有核线程使用的数据结构的基础地址的主机消息。

发送到核的主机消息被发送到其中负载所述核的所有HTF电路群205。此外,维持发送主机消息和发送核调度的次序。发送主机消息基本上使所述核在发送消息之前是空闲的。完成消息确保磁贴存储器325的写入在开始新同步线程之前已经完成。

通过异步包网络265进行的控制消息传递如下:

(1)HTF调度接口225接收主机消息并向目的地磁贴210发送AF数据消息。目的地磁贴210将AF数据消息的数据写入选定存储器。

(2)目的地磁贴210向HTF调度接口225发送AF完成消息,确认磁贴写入已完成。

(3)HTF调度接口225保持所有新核线程直到已经确认所有消息写入时才开始。一旦确认,HTF调度接口225就向同步域的基础磁贴传输AF调用消息以开始线程。

HTF调度接口225负责管理HTF电路群205,包含:(1)与系统100的软件交互以使HTF电路群205准备好供进程使用;(2)将工作调度到HTF电路群205的磁贴210,包含负载具有一或多个核配置的HTF电路群205;(3)针对断点和异常而保存和恢复HTF电路群205的背景到存储器125。如上文所提及,HTF调度接口225的寄存器475可包含各种表格来跟踪已经调度到各个磁贴210中的任一个和从各个磁贴210中的任一个接收到的内容,例如跟踪在代表性实施例中使用的消息传递中的任一个。在表7中列出用于执行这些操作的HTF调度接口225的基元操作(primitive operation)。

表7:

图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的计算的代表性异步包网络消息传递和执行的流程图。首先,在步骤506,主机处理器110向节点内的所有HTF电路群205发送消息(504)。消息是变量B的值。消息包含在单个通常被称为工作描述符包的数据包中,所述数据包写入到与进程相关联的HIF 115的调度队列105(在图1和2中示出)。HIF 115从调度队列105读取消息并向分配到进程的每个HTF电路群205发送包副本。经分配HTF电路群205的调度接口225接收包。还应注意,HIF 115针对所有HTP 300和HTF 200资源执行各种负载均衡功能。

在步骤510,主机处理器110向分配到进程的一个HTF电路群205发送调用消息(508)。主机处理器110可手动瞄准特定HTF电路群205来执行核,或允许HTF电路群205被自动选定。主机处理器110将调用参数写入到与进程相关联的调度队列。调用参数包含核地址、开始指令和单个自变量(变量A的地址)。主机接口(HIF)115读取经排队消息并将消息作为数据包在第一互连网络150上转发到经分配HTF电路群205,通常是具有最少负载的HTF电路群205。

在步骤514,HTF调度接口225接收主机消息(变量B的值),在到所有先前到HTF电路群205的调用都完成之前一直等待,并使用AF消息(512)通过异步包网络265将值发送到第一选定目的地磁贴210D。针对指示目的地磁贴210D、磁贴存储器325和所述磁贴210D的(RAM405中的)存储器区域的每个可能主机消息,HTF调度接口225具有存储在寄存器475中的信息表格。在步骤518,磁贴210D使用消息信息将值写入到磁贴210D中的存储器325,并且一旦值写入到磁贴存储器,就通过异步包网络265将写入完成AF消息(516)发送回到HTF调度接口225。

HTF调度接口225等待所有消息完成消息到达(在此情况下,仅为单个消息)。在步骤522,一旦所有完成消息都已到达,HTF调度接口225就在AF消息(520)中将调用自变量(变量A的地址)发送到第二选定目的地磁贴210B以便将值写入到磁贴存储器325中。HTF调度接口225具有存储在寄存器475中且指示目的地磁贴210B、磁贴存储器325和所述磁贴210B的(RAM 405中的)存储器区域的调用自变量表格。

随后,在步骤528,HTF调度接口225向第一同步域526的基础磁贴210A发送AF调用消息(524)。AF调用消息指示单个完成消息应该在调用可以通过同步磁贴210管线开始执行之前接收到。所需要的完成消息尚未到达,因此调用被暂停。

在步骤532,一旦值被写入到所述磁贴210B的磁贴存储器325,写入完成消息(530)就通过磁贴210B经由异步包网络265发送到第一同步域526的基础磁贴210A。

基础磁贴210A已接收到调用消息(524)和所需要的完成消息(530),并且现已准备好在同步域526(磁贴管线)上发起执行。在步骤536,基础磁贴210A通过经由同步网状通信网络275向磁贴210B提供初始指令和有效信号(534)来发起执行。基础磁贴210A从XID池415分配XID值,以用于第一同步域526。如果XID池415为空,那么基础磁贴210A必须等到XID可用时才开始同步管线。

当执行继续,在步骤542,磁贴210B或第一同步域526内的另一磁贴210E向第二同步域538的基础磁贴210C发送AF继续消息(540)。继续消息含有在第二同步域538可以发起执行之前必须到达的所需完成消息的数目(在此情况下,为单个完成消息)。继续消息还包含传递ID(XID)。XID用作一个同步域(526)中的写入索引,然后用作下一同步域(538)中的读取索引。XID提供不同同步域所共同的磁贴存储器索引。

在步骤546,磁贴210B或第一同步域526内的另一磁贴210F向HTF电路群205的存储器接口215发送AF存储器负载消息(544)。消息含有请求ID、虚拟地址和将用作索引以便将负载数据写入到目的地磁贴(210G)存储器325的XID。

存储器接口215接收AF负载消息并将虚拟地址转换成节点本地物理地址或远程虚拟地址。存储器接口215使用AF消息的请求ID在存储在寄存器485中的请求表格中编索引,所述请求表格含有存储器请求的参数。在步骤550,存储器接口215发出第一互连网络150的负载存储器请求包(548),其具有来自请求表格的经转换地址和大小信息。

随后,在步骤554,存储器接口215通过第一互连网络150接收具有负载数据(变量A的值)的存储器响应包(552)。在步骤558,存储器接口215将AF消息(556)发送到第二同步域538内的磁贴210G。AF消息含有变量A的值,并且使用来自存储在寄存器485中的请求表格的参数将值写入到磁贴存储器。

在步骤562,一旦值写入到磁贴存储器,AF写入完成消息(560)就通过异步包网络265发送到第二同步域538的基础磁贴210C。

第二同步域538的基础磁贴210C接收继续消息(540)和所需要的完成消息(560),并准备好在第二同步域538(磁贴管线)上发起执行。在步骤566,基础磁贴210C通过向第二同步域538的磁贴210(例如,磁贴210H)提供初始指令和有效信号(564)来发起执行。基础磁贴210C还从XID池分配XID值以用于第二同步域538。

在步骤568,第二同步域内的磁贴210H执行从主机消息中传递的B值和从系统存储器125读取的A值的加法运算。所得的值是表达式的R值。

在步骤572,第二同步域内的磁贴210J向HTF调度接口225发送含有R值的AF消息(570)。AF消息含有从基础磁贴210A分配的XID值。XID值用作HTF调度接口225内针对存储在保存返回参数的寄存器475中的表格的索引,直到值已经被读取且返回消息已经生成用于通过第一互连网络150传输为止。

在步骤576,来自第二同步域(磁贴210K)的AF消息(574)将第一同步域中分配的XID值发送回到基础磁贴210A,以供返回到XID池。在步骤580,将来自HTF调度接口225的第一互连网络150消息(578)发送到HIF 115。HIF将返回工作描述符写入到调度返回队列。在步骤584,一旦第一互连网络150已经发送返回包,XID值就通过HTF调度接口225在AF消息(582)中发送到第二同步域538的基础磁贴210C以供返回到XID池。

应注意,在图16和17的此实例中,为了示出可用于线程控制的各种AF消息,使用了许多磁贴210。在实践中,特别是对于此类简单计算,可以使用少得多的磁贴210,以便完全在单个同步域内执行计算。

在图18和19中提供用于跨多个同步域的线程控制的另一消息传递实例,同样使用异步包网络265上的AF完成和继续消息。图18是代表性混合线程组构可配置计算电路(磁贴)形成同步域和代表性异步包网络消息传递以供混合线程组构电路群执行计算的图式。图19是通过混合线程组构可配置计算电路(磁贴)进行以供混合线程组构电路群执行图18的计算的代表性异步包网络消息传递和执行的流程图。

对于此实例,HTF调度接口225向第一同步域526的基础磁贴210A发送消息。所述消息在第一同步域526上开始线程。线程向第二同步域538发送线程继续消息。所述继续消息指示当已经接收到指定数目的完成消息时,将在第二同步域538上开始线程。第一同步域526向第二同步域538发送完成消息,使暂停完成并开始同步的第二线程。第二线程将完成消息发送回到HTF调度接口225,指示第二同步线程完成,从而完成经调度核。在图18中示出释放TID和XID标识符的额外消息。

在步骤604,HTF调度接口225接收到工作描述符包(602),确保已负载正确的核配置,确定XID和TID池不为空,从而从存储在HTF调度接口225内的寄存器475中的TID和XID池获得新工作线程的XID和TID值。在步骤608,HTF调度接口225通过向第一同步域526的基础磁贴210A发送AF调用消息(606)(具有经分配XID和TID值,例如,XID=3和(第一类型)TID=11)来开始核执行。在步骤610,基础磁贴210A接收AF调用消息(606),确定TID和XID池(410,415)不为空,分配TID和XID值(例如,XID_WR=7和(第二类型)TID=1),且轮辐Ram 320正在选择基础磁贴作为磁贴数据路径的输入,使得它利用第一指定指令来开始执行,所述第一指定指令由保存在其轮辐Ram 320中的指令索引指定,而不是可能根据可由先前磁贴210提供的指令索引执行指令(例如,如下文更详细地论述,关于条件执行)。

在步骤614,基础磁贴210A通过第一同步域526开始第一线程(612),其中已分配TID值(例如,(第二类型)TID=1),XID_RD被分配来自AF调用消息(606)的值(例如,XID_RD=3),XID_WR被分配从XID池获得的值(例如,XID_WR=7),且TID来自AF调用消息(606)(例如,(第一类型)TID=11)。

在步骤618,当计算在第一同步域526中继续时,第一同步域526内的另一磁贴210B向第二同步域538的基础磁贴210D发送AF继续消息(616)。当适当数目的完成消息到达后,AF继续消息(616)提供在第二同步域538上开始第二线程所需要的信息。AF继续消息(616)包含具有指定所需完成消息的数目的值的完成计数字段。第一同步域526中的一个磁贴(210C)还向HTF调度接口225传输自由XID(例如,XID=3)消息(641)。

AF继续消息(616)可包含TID或XID_WR值作为目的地基础磁贴210D上的暂停表格420的索引。在步骤620,暂停表格累积接收到的完成消息,并确定所需数目达到且新线程可以开始的时间。发送AF继续消息(616)的磁贴210B发送选定TID或XID_WR值作为PID(暂停表格索引),并将同步域的下游TID值变为选定值(例如,(第一类型)TID=11,(第二类型)TID=1)。这个新的TID值在所有AF完成消息中传递以用作基础磁贴210D的暂停表格420的索引。

在步骤624,将具有TID值(例如,(第一类型)TID=11)的AF完成消息(622)发送到第二同步域538的基础磁贴210D。AF完成消息(622)使基础磁贴210D的暂停表格420中的增量计数字段的条目递减。AF完成消息(622)和AF继续消息(616)可按任何次序到达。最后到达的消息将观察到,AF继续消息(616)已到达,且暂停表格420中的增量计数字段已达到零。此条件指示暂停已完成且第二同步线程(626)可以开始。在步骤628,基础磁贴210D还确定或观察到暂停操作已完成,确定XID标识符池不为空并分配XID(例如,XID=5),并且轮辐Ram正在选择基础磁贴作为磁贴数据路径的输入。

接着,在步骤630,基础磁贴210D通过第二同步域538开始第二同步线程(626),其中TID和XID_RD被分配从AF继续消息(616)获得的值(例如,(第一类型)TID=11,(第二类型)TID=1,XID_RD=7)。XID_WR被分配在步骤628中从XID池获得的值(例如,XID_WR=5)。

当第二同步线程(626)的计算完成时,通过第二同步域538的各个磁贴210发送数个内务处理消息。在步骤634,将AF自由TID消息(632)发送到第一同步域526的基础磁贴210A,并在步骤636,接收基础磁贴210A将TID值添加到TID池410,因此它可供再一次使用。在步骤640,将AF自由XID消息(638)发送到第一同步域526的基础磁贴210A,并在步骤642,接收基础磁贴210将XID值添加到XID池415,因此它同样可供再一次使用。在步骤646,将AF完成消息(644)发送到HTF调度接口225,指示第二同步线程626已完成。HTF调度接口225具有预期完成消息的计数。AF完成消息(644)包含到调度接口的第二同步域538的XID_WR值和TID值((第一类型)TID=11)。接着,在步骤650,HTF调度接口225将AF自由XID消息(648)发送到第二同步域538的基础磁贴210D。然后,在步骤652,接收基础磁贴210D将XID值添加到XID池415,因此它同样可供再一次使用。

使用数据传递操作将数据从一个同步域传递到下一同步域。通常,数据传递结合从存储器125获得数据的负载操作使用。一旦负载数据到达第二同步域538,在第二同步域538中就需要来自第一同步域526的计算出的数据。在此情况下,单个暂停从第一同步域526发送到含有来自所有负载和数据传递操作的总计数的完成消息的第二同步域538。

接着,同步域之间的数据传递操作利用步骤624的变化形式。第一同步域526向第二同步域538发送具有数据的AF数据消息,而不是在步骤624中发送AF完成消息(622)。第二同步域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中维持两种完成信息,即,与应该在线程可以开始之前到达的完成消息的数目有关的第一完成计数,如上文所论述,以及用于跟踪已经开始和完成的循环线程的数目的第二循环或迭代(完成)计数。循环通过向同步域的基础磁贴210发送含有循环计数(和各个TID,如下文论述)的AF循环消息来开始。循环计数存储在完成表格422(或暂停表格420)中,并且用于确定在同步域上开始新线程的次数。在一个实施例中,每一线程以从TID池410获得的新TID开始。例如,每个活动线程具有唯一TID,从而允许存在线程私有变量。嵌套式循环的线程能够存取其自身的TID的数据或变量,加上外部循环的TID。在下文论述的第二实施例中,TID由循环的连续线程重复使用。

TID通过在线程终止时从同步域内的磁贴发送AF消息而返回到TID池410,AF消息可以是AF完成消息,或者对于第二实施例,可以是AF重入消息。这还可通过到基础磁贴210的自由TID消息来实现。将TID返回到池或重新使用TID的AF消息还供循环基础磁贴210使用以在完成表格422(或暂停表格420)的循环计数中维持活动循环线程的数目的计数。当活动循环线程的数目达到零时,循环完成。当通过循环计数转为零而检测到循环完成时,将AF完成消息发送到后循环同步域来通知完成。此机制为嵌套式循环提供了最少(若不为零)空闲循环,从而产生更好的性能。

参考图20和21,在步骤658,第一同步域526(示出为磁贴210B,但是它可以是第一同步域526中的任何其它磁贴)向第三后循环同步域654的基础磁贴210D发送AF继续消息(656),以等待循环完成消息(其将来自第二同步域538)。在步骤664,第一同步域526中的一个磁贴(示出为磁贴210B)向循环域的基础磁贴210C发送具有迭代(循环)计数的AF循环消息(660),所述循环域是第二同步域538。基础磁贴210C在第二同步域538上开始循环(IterCnt)线程(662,例如,6620,6621,到通过662N-1,其中“N”是迭代计数(IterCnt))。每一线程662具有相同的TID和XID_RD标识符。XID_WR标识符由循环基础磁贴210C(若启用)分配。迭代索引(即,从零排序到IterCnt-1(N-1))可存取作为循环域的基础磁贴210C中的数据路径复用器选择。

接着,在步骤668,循环域的每个迭代将AF完成消息(666)发送回到第二同步(循环)域538的基础磁贴210C。应注意,图20中所示的第二同步域538实际可以是数个同步域。在多个同步域形成循环的情况下,循环中的最后一个同步域的线程应该传输AF完成消息(666),使得第三后循环同步域654适当地等待所有循环操作完成。一旦第二同步(循环)域538的基础磁贴210C接收到所有迭代AF完成消息(666),它就向第三(后循环)同步域654的基础磁贴210D发送循环AF完成消息(或AF继续消息)(670)。

例如但不限于,对于包含嵌套式和双嵌套式循环的循环,利用数个额外新颖特征,以便最大限度地减少空闲时间,包含重入队列445和额外子TID,例如用于最外部循环的TID2、用于中间或中介循环的TID1和用于最内部的循环的TID0。在循环中执行的每一线程还具有唯一TID,例如对于将具有五十个迭代的外循环的TID2 0-49,它们在每个迭代完成执行时还用于对应的完成消息,同样是例如但不限于。

再次参考图11,提供数个新颖机构来支持高效循环,并最大限度地减少空闲时间。例如,具有数据依赖型结束条件的循环(例如,“while”循环)需要结束条件在执行循环时进行计算。并且,对于循环的控制和执行,如果所有TID都从TID池410分配,但是执行队列头部的线程是由于缺失可用TID而无法执行的新循环,那么可能会产生潜在的死锁问题,从而阻止其它循环线程,无法完成和释放它们的经分配TID。因此,在代表性实施例中,控制寄存器340包含两个单独队列用于准备好运行的线程,其中第一队列用于发起新循环(继续队列430,还用于非循环线程),且单独的第二队列(重入队列445)用于循环继续。继续队列430从TID池410分配TID以开始线程,如先前论述。当循环线程的每个迭代执行并传输具有先前分配的TID的AF重入消息时,重入队列445使用先前分配的TID。重入队列445中的任何线程(TID)将移动到运行队列440中在可处于其它队列(继续队列430)中的线程(TID)之前。因此,一旦循环启动,循环迭代就可以极其快速地进行,其中循环的每个随后线程通过使用单独的重入队列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中所示,在执行循环计算中涉及多个同步域682、684和686,即第二同步域682、第三同步域684、第四同步域686,以及预循环第一同步域526和后循环(第五)同步域654。循环计算可以是任何种类的循环,包含嵌套式循环,在此情况下,各个循环内存在数据依赖。例如,这些数据依赖可以发生在单个迭代内,例如在需要来自存储器125的信息时,涉及通过异步包网络265的AF消息传递。因此,应该以限定次序进行线程执行,而不仅仅是在任何特定线程具有零完成计数(这意味着线程不等待任何数据,其中所述线程的所有完成消息都已到达)时。

为了提供有序的循环线程执行,在代表性实施例中,针对每个循环迭代,在完成表格422中利用额外消息传递和额外字段。循环基础磁贴210B提供在同步消息688中通过每个同步域682、684、686并通过同步网状通信网络275传递(即,被传递到所述给定同步域中的每个连续磁贴210)的四个信息片段(用于每个循环迭代),以及通过异步包网络265去往连续同步域的基础磁贴210(其接着在同步消息中传递到所述给定同步域中的每个连续磁贴210)的AF继续消息692。接着,将那四个信息字段存储在完成表格422中并编索引,并且在循环执行前进时用于比较。这四个信息片段是:指示循环的一组线程中的第一线程的第一标记、指示循环的一组线程中的最后一个线程的第二标记、当前线程的TID和下一线程的TID。当前线程的TID从TID池获得,且下一线程的TID是来自池的将提供用于下一线程的TID。这四个信息片段供每个连续同步域的基础磁贴使用以将线程开始排序。如果线程的依赖计数已达到零且线程是循环的第一线程,或者线程TID等于先前开始的线程的下一TID,那么它可以开始。

换句话说,针对已接收所有数据完成(因此,已准备好运行)的每一线程,线程控制电路系统330(其大体上包含各种状态机)检查完成表格422,以确定所述线程是不是要运行的下一线程(具有下一线程ID,例如,TID=4),如果是,就将所述线程(TID=4)移动到运行队列440中,如果否,就不开始所述线程(例如,其数据完成计数变为零但具有TID=5的线程),但是维持接下来要开始其TID的索引。当具有下一TID的线程的数据完成递减到零(在此情况下,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的“与”门362,其中它与测试条件输出进行“与”运算。依据测试条件输出是逻辑“0”或“1”,“与”门362将生成逻辑“0”或“1”作为输出,其作为输入提供到“或”门364。当前的下一指令索引的选定字段的另一指定位通常是下一指令索引的最低有效位(“LSB”),也提供给“或”门364,其中它与“与”门362的输出进行“或”运算。如果下一指令索引的LSB是零,并且它与“与”门362的输出的逻辑“1”进行“或”运算,那么输出的下一指令索引已增加一,从而向下一磁贴210提供不同的下一指令索引。如果下一指令索引的LSB是零,并且它与“与”门362的输出的逻辑“0”进行“或”运算,那么输出的下一指令索引尚未增加一,从而向下一磁贴210提供相同的下一指令索引。因此,当前磁贴210有条件地指定了供经连接磁贴210执行的替代指令,使得能够在HTF电路群205中执行一或多个分情况语句(case statement)。通过使当前磁贴的数据路径产生布尔条件值并使用布尔值在当前磁贴的指令和作为下一指令索引提供到同步域中的下一磁贴210的替代指令之间进行选择来选择替代指令。并且,结果是,当前磁贴210已动态地配置下一磁贴210,等等,从而实现每个HTF电路群205中的动态自配置和自重新配置。

IV.混合线程处理器300:

图25是混合线程处理器(“HTP”)300的代表性实施例的高级框图。图26是HTP 300的线程存储器720(也称为线程控制存储器720)的代表性实施例的详细框图。图27是HTP300的网络响应存储器725的代表性实施例的详细框图。图28是HTP 300的代表性实施例的详细框图。图29是用于HTP 300的自调度和线程控制的方法的代表性实施例的流程图。

HTP 300通常包括一或多个处理器核心705,其可以是任何类型的处理器核心,例如RISC-V处理器核心、ARM处理器核心等,这全都是举例而不具有限制性。核心控制电路710和核心控制存储器715提供用于每个处理器核心705,并且在图25中针对一个处理器核心705示出。例如,当例如在一或多个HTP 300中实施多个处理器核心705时,还实施对应的多个核心控制电路710和核心控制存储器715,其中每个核心控制电路710和核心控制存储器715用于控制对应处理器核心705。另外,HTP 300中的一或多个还可包含数据路径控制电路系统795,其用于控制通过第一互连网络150的存取大小(例如,存储器125的负载请求)以管理数据路径的潜在拥塞。

核心控制电路710又包括控制逻辑和线程选择电路系统730和网络接口电路系统735。核心控制存储器715包括多个寄存器或其它存储器电路,在概念上划分且在本文中称为线程存储器(或线程控制存储器)720和网络响应存储器725。例如但不限于,线程存储器720包含多个寄存器,用于存储与线程状态和执行有关的信息,而网络响应存储器725包含多个寄存器,用于存储与在第一互连网络150上传输到第一存储器125和从第一存储器125传输的数据包有关的信息,例如针对第一存储器125的读取或存储数据的请求。

参考图26,线程存储器720包含多个寄存器,包含:线程ID池寄存器722(存储可以利用的且通常在系统100经配置时例如针对总共32个线程ID用标识号0到31填充的预定数目个线程ID,例如但不限于);线程状态(表格)寄存器724(存储线程信息,例如有效、空闲、暂停、等待指令、第一(正常)优先级、第二(低)优先级、在资源不可用时优先级的临时改变);程序计数器寄存器726(例如,存储在指令缓存740中线程接下来开始的地址或虚拟地址);通用寄存器728,用于存储整数和浮点数据;未决纤程返回计数寄存器732(跟踪将返回以完成执行的未决线程的数目);返回自变量缓冲器734(“RAB”,例如作为具有返回自变量缓冲器的链表的标头的标头RAB),线程返回寄存器736(例如,存储返回地址、调用标识符、与调用线程相关联的任何线程标识符);自定义原子交易标识符寄存器738;接收到的事件掩码寄存器742(用于指定要“收听”哪些事件,如下文更详细地论述,);事件状态寄存器744;和数据缓存746(通常为每一线程提供缓存存储器的4至8个缓存行)。线程存储器720的所有不同寄存器都使用给定或选定线程的经分配线程ID来编索引。

参考图27,网络响应存储器725包含多个寄存器,例如存储器请求(或命令)寄存器748(例如,读取、写入或执行自定义原子操作的命令);线程ID和交易标识符(“交易ID”)寄存器752(其中交易ID用于跟踪针对存储器的任何请求,并使每个此类交易ID与生成针对存储器125的请求的线程的线程ID相关联);请求缓存行索引寄存器754(用于指定当从给定线程(线程ID)的存储器接收到数据时要写入数据缓存746中的哪一缓存行);寄存器字节寄存器756(指定写入到通用寄存器728的字节的数目);以及通用寄存器索引和类型寄存器758(指示要写入哪一通用寄存器728,以及它是符号扩展还是浮点)。

如下文更详细地描述,HTP 300将接收工作描述符包。作为响应,HTP 300将找到空闲或空的背景并初始化背景块,从而将线程ID分配到所述执行线程(本文中总体上称为“线程”)(若线程ID可用),并将所述线程ID安置在执行(即,“准备好运行”)队列745中。通常在轮选或“桶形”式的选择过程中选择执行(准备好运行)队列745中的线程用于执行,其中第一线程的单个指令提供给所述处理器核心705的执行管线750,然后第二线程的单个指令提供给执行管线750,然后第三线程的单个指令提供给执行管线750,然后下一线程的单个指令提供给执行管线750,等等,直到执行(准备好运行)队列745中的所有线程都已经将对应指令提供给执行管线750为止,此时线程选择再次开始,其中执行(准备好运行)队列745中的第一线程的下一指令提供给执行管线750,然后第二线程的下一指令提供给执行管线750,等等,针对执行(准备好运行)队列745的所有线程循环进行。此执行将针对每个此类线程继续,直到所述线程的执行已经例如通过执行线程返回指令而完成为止,此时响应包(具有线程执行结果)被传输回到工作描述符包的源,即,回到工作描述符调用包的源。另外,在代表性实施例中且如下文更详细地论述,执行(准备好运行)队列745任选地具有不同级别的优先级,示出为第一优先级队列755和第二(较低)优先级队列760,其中第一优先级队列755中的线程的执行比第二(较低)优先级队列760中的线程的执行进行得更频繁。

因此,HTP 300是“事件驱动型”处理器,并且在接收到工作描述符包后将自动开始线程执行(条件是线程ID是可用的,但是不具有发起执行的任何其它要求),即,工作描述符包的到达自动触发本地线程执行的开始,而不用参考存储器125或针对存储器125的额外请求。这极为有用,因为并行开始执行许多线程(例如数千线程)的响应时间相当低。HTP 300将继续线程执行,直到线程执行完成为止,或者它等待响应,在响应时线程将进入“暂停”状态,如下文更详细地论述。下文更详细地论述数个不同暂停状态。在接收到所述响应之后,线程返回到活动状态,在活动状态中线程恢复执行,其中它的线程ID返回到执行(准备好运行)队列745。结合存储在线程存储器720中的线程状态信息,通过控制逻辑和线程选择电路系统730用硬件执行这一线程执行控制。

除了主机处理器110生成工作描述符包之外,HTP 300也可生成和传输工作描述符包以在另一计算资源(例如,另一HTP 300或任何HTF电路200)上将工作作为一或多个计算线程来发起。此类工作描述符包是“调用”工作描述符包,并且大体上包括正在生成调用工作描述符包的主机处理器110或HTP 300的源标识符或地址、用于标识返回或使返回与原始调用相关的线程ID(例如,16位调用标识符(ID))、64位虚拟核地址(作为程序计数,用于定位第一指令以开始执行线程,通常保存在HTP 300(或HTF电路200)的指令缓存740中,它还可以是虚拟地址空间),以及一或多个调用自变量,例如,最多四个调用自变量。

类似地,当线程已经完成时,HTP 300或HTF电路200生成另一工作描述符包,被称为“返回”工作描述符包,它大体上在HTP 300或HTF电路200执行线程的最后指令(被称为返回指令)时创建,其中返回工作描述符包由包编码器780汇编,如下文论述。返回包将寻址回到源(使用在调用工作描述符包中提供的标识符或地址)、来自调用工作描述符包的线程ID(或调用ID)(以允许源使返回与发出的调用相关,特别是在多个调用已经由源生成且同时未决时),以及一或多个返回值(作为结果),例如最多四个返回值。

图28是HTP 300的代表性实施例的详细框图。为了便于图示和论述,应注意,在图28中并未示出线程存储器720和网络响应存储器725的全部寄存器。参考图28,核心控制电路710包括控制逻辑和线程选择电路系统730和网络接口电路系统735。例如但不限于,控制逻辑和线程选择电路系统730包括使用多个不同逻辑门(例如,“与非”、“或非”、“与”、“或”、“异或”等)中的任一个和不同状态机电路(控制逻辑电路731、线程选择控制电路系统805)的组合形成的电路系统,以及复用器(例如,输入复用器787、线程选择复用器785)。网络接口电路系统735包含:AF输入队列765,用于从第一互连网络150接收数据包(包含工作描述符包);AF输出队列770,用于将数据包(包含工作描述符包)传递到第一互连网络150;数据包解码器电路775,用于解码来自第一互连网络150的传入数据包、获取(指定字段中的)数据并将在包中提供的数据传递到线程存储器720和网络响应存储器725的相关寄存器(结合通过控制逻辑和线程选择电路系统730分配到线程的线程ID,如下文更详细地论述,所述线程ID还提供或形成线程存储器720的索引);以及数据包编码器电路780,用于对传出数据包进行编码(例如,针对存储器125的请求,使用来自线程ID和交易标识符(“交易ID”)寄存器752的交易ID)以在第一互连网络150上传输。数据包解码器电路775和数据包编码器电路780可分别实施为状态机或其它逻辑电路系统。依据选定实施例,每个HTP处理器核心705可存在单独的核心控制电路710和单独的核心控制存储器715,或者单个核心控制电路710和单个核心控制存储器715可以用于多个HTP处理器核心705。

当工作描述符包到达时,控制逻辑和线程选择电路系统730从线程ID池寄存器722向工作描述符包的线程指派可用线程ID,其中经分配线程ID用作线程存储器720中的其它寄存器的索引,然后用来自工作描述符包的对应数据,通常是程序计数和一或多个自变量,来填充所述寄存器。例如但不限于,在准备开始线程执行指令时,控制逻辑和线程选择电路系统730自主地初始化线程背景状态的其余部分,例如负载数据缓存寄存器746和负载线程返回寄存器736。又例如,执行线程具有主存储器堆叠空间和主存储器背景空间。背景空间只在线程的状态需要写入到将由主机存取的存储器时使用。每个HTP 300处理器核心705利用核心堆叠基地址和核心背景基地址初始化,其中基地址指向堆叠块和背景空间块。通过获取核心堆叠基地址并添加乘以线程堆叠大小的线程ID来获得线程堆叠基地址。线程背景基地址以类似方式获得。

所述线程ID被给定有效状态(指示它准备好执行),并且线程ID被推动到执行(准备好运行)队列745的第一优先级队列755,因为线程通常被分配第一(或正常)优先级。控制逻辑和线程选择电路系统730的选择电路系统,例如复用器785,选择执行(准备好运行)队列745中的下一线程ID,其用作线程存储器720(程序计数寄存器726和线程状态寄存器724)的索引,以便从指令缓存740中选择之后提供给执行管线750以供执行的指令。接着,执行管线执行所述指令。

在完成执行指令时,在控制逻辑和线程选择电路系统730的控制下,依据各个条件,可以将相同的三元组信息(线程ID、有效状态和优先级)返回到执行(准备好运行)队列745,以便继续进行选择用于轮选执行。例如,如果选定线程ID的最后指令是返回指令(指示线程执行完成且返回数据包已提供),那么控制逻辑和线程选择电路系统730将线程ID返回到线程ID池寄存器722中的可用线程ID池,以供另一不同的线程使用。又例如,有效指示符可改变,例如变成暂停状态(例如,同时线程可以等待信息从存储器125返回或写入到存储器125或者等待另一事件),在此情况下,线程ID(现在具有暂停状态)直到状态变回有效时才返回到执行(准备好运行)队列745。

继续前一实例,当选定线程ID的最后指令是返回指令时,就通过执行管线750将返回信息(线程ID和返回自变量)推动到网络命令队列790,所述网络命令队列790通常实施为先进先出(FIFO)。线程ID用作线程返回寄存器736的索引以获得返回信息,例如交易ID和源(调用器)地址(或其它标识符),然后包编码器电路(在第一互连网络150上)生成传出返回数据包。

继续后一实例,线程的指令可以是负载指令,即,针对存储器125的读取请求,之后通过执行管线750将所述指令推动到网络命令队列790。接着,包编码器电路(在第一互连网络150上)生成具有针对存储器125的请求(读取或写入请求)的传出数据包,包含请求大小和经分配交易ID(来自线程ID和交易ID寄存器752,其还用作网络响应存储器725的索引)、HTP 300的地址(作为所请求信息的返回地址)。当从第一互连网络150接收到包并将其解码时,交易ID用作网络响应存储器725的索引,获得进行请求的线程的线程ID,它还提供数据缓存746中写入在响应中返回的数据的位置,然后交易ID返回到线程ID和交易ID寄存器752以供重复使用,并且再次将对应线程ID的状态设置为有效,并再次将线程ID推动到执行(准备好运行)队列745,以便恢复执行。

以类似方式执行针对存储器125的存储请求,其中传出包也具有将写入到存储器125的数据、经分配交易ID、HTP 300的源地址,并且其中返回包是具有交易ID的确认。接着,交易ID还返回到线程ID和交易ID寄存器752以供重复使用,并且再次将对应线程ID的状态设置为有效,并再次将线程ID推动到执行(准备好运行)队列745,以恢复执行。

图29是用于HTP 300的自调度和线程控制的方法的代表性实施例的流程图,并且提供了有用概述,其中HTP 300已经用指令缓存740中的指令和线程标识符池寄存器722中的预定数目个线程ID填充。方法开始于步骤798,在接收到工作描述符包后进行。在步骤802,解码工作描述符包,并在步骤804,用在工作描述符包中接收到的信息填充线程存储器720的各个寄存器,从而初始化背景块。当在步骤806,线程ID可用时,在步骤808,分配线程ID(如果在步骤806中线程ID不可用,那么在步骤810,线程将一直等到线程ID变得可用)。在步骤812,一开始将有效状态分配到线程(连同任何一开始分配的优先级,例如第一或第二优先级),并且在步骤814,将线程ID提供给执行(准备好运行)队列745。接着,在步骤816,选择执行(准备好运行)队列745中的线程ID用于执行(以预定频率,如下文更详细地论述)。在步骤818,使用线程ID,存取线程存储器720,并获得程序计数(或地址)。在步骤820,从指令缓存740获得对应于程序计数(或地址)的指令并将其提供给执行管线750以供执行。

当在步骤822,线程执行完成时,即,当被执行的指令是返回指令时,在步骤824,将线程ID返回到线程ID池寄存器722以供另一线程重复使用,在步骤826,(任选地)可以清理与线程ID相关联的线程存储器720的寄存器,并在返回步骤834,所述线程的线程控制可以结束。当在步骤822中线程执行未完成时,并且当在步骤828,线程状态保持有效时,将线程ID(以及其有效状态和优先级)返回到执行(准备好运行)队列745,返回到步骤814以继续执行。当在步骤828中线程状态不再有效(即,线程暂停)时,其中在线程存储器720中指示所述线程ID的暂停状态,在步骤830,暂停所述线程的执行,直到在步骤832,所述线程ID的状态返回到有效并且线程ID(以及其有效状态和优先级)返回到执行(准备好运行)队列745,返回到步骤814以继续执行。

类似地,HTP 300可以生成调用,以便在本地或远程计算元件上创建线程,从而在其它HTP 300或HTF电路200上创建线程。此类调用还创建作为传出数据包,且更确切地说,作为第一互连网络150上的传出工作描述符包。例如,被执行的当前线程的指令可以是“纤程创建”指令(在指令缓存740中存储为可能指令),以使多个线程在各个计算资源上执行。如下文更详细地论述,此类纤程创建指令指定(使用地址或虚拟地址(节点标识符))什么计算资源将执行线程,并且还将提供相关联的自变量。当在执行管线750中执行纤程创建指令时,纤程创建命令被推动到网络命令队列790中,并且在执行管线750中执行下一指令。命令被拉出网络命令队列790,并且数据包编码器电路780具有创建和向指定目的地HTF 200或HTP 300发送工作描述符包所需要的信息。

如果创建的线程将具有返回自变量,那么此类指令还将分配和保留相关联的存储器空间,例如在返回自变量缓冲器734中。如果返回自变量缓冲器734中的空间不够,那么指令将一直暂停到返回自变量缓冲器734可用为止。创建的纤程或线程的数目只受保存响应自变量的空间量限制。创建的不具有返回自变量的线程可免去保留返回自变量空间,从而避免可能的暂停状态。此机制确保来自已完成线程的返回始终有位置存储它们的自变量。当返回作为第一互连网络150上的数据包回到HTP 300时,解码那些包,如上文所论述,其中返回数据存储在线程存储器720的返回自变量缓冲器734中的相关联经保留空间中,所述空间以与纤程创建指令相关联的线程ID作索引。因为许多寄存器都可用于返回自变量,所以可以提供返回自变量缓冲器734作为所有经产生线程的链表或为所述线程ID分配的返回自变量缓冲器或寄存器。值得注意的是,此机制可使得有可能极其快速地创建数千个线程,从而有效地最小化从单个线程执行转变到高线程计数并行所涉及的时间。

如下文更详细地论述,利用各种类型的纤程加入指令来确定所有经产生线程何时完成,并且可为具有或不具有等待的指令。经产生线程的数目的计数保存在未决纤程返回计数寄存器732中,所述计数在HTP 300接收线程返回时递减。加入操作可以通过将返回复制到与经产生线程ID相关联的寄存器中来实施。如果加入指令是等待指令,那么它将保持处于暂停状态,直到指定经产生线程的线程ID的返回到达为止。在这期间,其它指令由执行管线750执行,直到加入指令的暂停状态变成有效状态且加入指令返回到执行(准备好运行)队列745为止。

线程返回指令还可用作纤程创建指令之后的指令,而不是加入指令。当未决纤程返回计数寄存器732中的计数达到零并且最后线程返回数据包被接收到时,线程返回指令也可被执行,并且指示纤程创建操作已经完成且所有返回已接收到,允许释放线程ID、返回自变量缓冲器734和链表以用于其它用途。另外,它还可生成并向称为主要线程的源(例如,生成调用的源的标识符或地址)传输工作描述符返回包(例如,具有结果数据)。

全部加入指令不需要返回自变量,只要使未决纤程返回计数寄存器732中的计数递减的确认。当所述计数达到零时,所述线程重新开始,因为全部加入现已完成。

需要处理元件之间的通信来促进并行算法的处理。代表性实施例提供一种用于一组处理资源的线程使用各个事件消息进行通信的高效手段,所述事件消息还可包含数据(例如自变量或结果)。事件消息传递允许具有硬件维持缓存一致性的任何主机处理器110和具有软件维持缓存一致性的任何加速度处理器(例如HTP 300)高效地参与事件消息传递。

事件消息传递支持点对点和广播事件消息。每个处理资源(HTP 300)可确定接收到的事件操作完成以及应该通知处理资源的时间。事件接收模式包含简单(单个接收到的事件完成操作)、收集(计数器用于确定已经接收到足够的事件来完成操作的时间)以及广播(在特定通道上接收到的事件完成事件)。另外,事件可以发送有任选的64位数据值。

HTP 300具有由2位接收模式、16位计数器/通道号和64位事件数据值组成的一组事件接收状态,存储在事件状态寄存器744中。HTP 300可针对每一线程背景具有多组事件接收状态,其中每一组以事件编号作索引。因此,事件可以针对特定线程(线程ID)和事件编号。发送的事件可以是具有单个目的地线程的点到点消息,或者是发送到属于相同进程的一组处理资源内的所有线程的广播消息。当接收到此类事件时,可以重新激活暂停或睡眠线程以恢复处理。

对事件状态寄存器744的这一使用比基于标准Linux的主机处理器高效得多,所述基于标准Linux的主机处理器可通过接口发送和接收事件,所述接口允许主机处理器110周期性地轮询完成的接收事件。等待事件消息的线程可暂停执行,直到接收操作完成为止,即,HTP 300可暂停执行接收事件的完成未决的线程,而不是因为轮询而浪费资源,从而允许其它线程在这些间隔期间执行。每个HTP 300还保存应该参与接收事件以免发生进程安全性问题的处理资源的列表。

点到点消息将指定事件编号和目的地(例如,节点号、哪一HTP 300、哪一核心和哪一线程ID)。在接收侧上,HTP 300将配置或编程有保存在事件状态寄存器744中的一或多个事件编号。如果所述HTP 300接收具有所述事件编号的事件信息,那么它被触发并从暂停状态转变到有效状态以恢复执行,例如执行事件已接收指令(例如,下文的EER)。接着,所述指令将确定是否接收到正确的事件编号,如果是,就将任何相关联的64位数据写入到通用寄存器728中以供另一指令使用。如果事件已接收指令执行并且未接收到正确的事件编号,那么它将一直暂停到接收到所述特定事件编号为止。

还可利用事件收听(EEL)指令,其中事件掩码存储在事件已接收掩码寄存器742中,指示将用于触发或唤醒线程的一或多个事件。当具有那些指定事件中的任一个的事件信息到达时,接收HTP 300将知晓触发的是哪一事件编号,例如,其它哪一进程可能已完成,并且将从那些已完成事件接收事件数据。事件收听指令还可具有等待和不等待变化,如下文更详细地论述。

对于处于收集模式中的事件消息传递,接收HTP 300将在触发之前收集(等待)一组接收事件,从而将事件状态寄存器744中的计数设置为所需要的值,所述值在接收到所需要的事件消息时递减,并且在计数递减到零时触发。

在广播模式中,发送器处理资源可向节点内的任何线程传输消息。例如,发送HTP300可以向节点内的每一其它HTP 300传输一系列点到点消息,并且接着,每个接收HTP 300将消息传递到每个内部核心705。每个核心控制电路710将检查它的线程列表以确定它是否对应于它初始化成接收的事件编号,并确定哪一通道可能已在第一互连网络150上指定。

当可以并行执行数千个线程时,此广播模式特别有用,其中最后执行的线程传输指示完成的广播事件信息。例如,需要完成的所有线程的第一计数可以保存在事件状态寄存器744中,而已经执行的所有线程的第二计数可以保存在存储器125中。在每个线程执行时,它还对第二计数执行获取和递增原子操作,例如通过存储器125的原子操作(并将其与第一计数比较),并且通过执行一直等到它接收广播消息的EER指令来将它的模式设置成接收广播消息。最后执行的线程将第二计数的所获取值视为所需要的第一计数减去一,指示它是最后执行的线程,并且因此发送广播消息,这是一种极其快速和高效地指示大量并行处理的完成的方式。

如上文所提及,虽然HTP 300可以利用标准RISC-V指令,但值得注意的是,可以提供扩展指令集以利用所有系统100的计算资源,如下文更详细地论述。从主机处理器110创建的线程通常被称为主要线程,且从HTP 300创建的线程通常被称为纤程或纤程线程,它们全部相同地在目的地HTP 300和HTF 200上执行,而不用通过存储器125。

新负载指令:

HTP 300针对每一线程具有相当少的读取/写入缓冲器,也称为数据缓存寄存器746。缓冲器(数据缓存寄存器746)临时存储供自有线程使用的共享存储器数据。数据缓存寄存器746受硬件与软件的组合管理。在需要时,硬件自动分配缓冲器并收回数据。通过使用RISC-V指令,软件决定哪些数据应该缓存(读取和写入数据),以及数据缓存寄存器746应该何时无效(若有效)或写回到存储器(若无效)。RISC-V指令集提供FENCE指令,并且获取和释放原子指令上的指示符。

标准RISC-V负载指令自动使用读取数据缓存寄存器746。标准负载进行检查以确定所需数据是否在现有数据缓存寄存器746中。如果是,那么从数据缓存寄存器746获得数据,并且执行线程能够继续执行而不用暂停。如果所需数据不在数据缓存寄存器746中,那么HTP 300查找可用的数据缓存寄存器746(需要从缓冲器中收回数据),并且将64字节从存储器读取到数据缓存寄存器746中。执行线程一直暂停到存储器读取完成且负载数据写入到RISC-V寄存器中为止。

读取缓冲具有两个主要益处:1)对存储器控制器120的更大的存取更高效,和2)对缓冲器的存取允许执行线程不会停止。但是,存在缓冲器的使用产生问题的情形。实例是收集操作,其中存取通常会导致数据缓存寄存器746的颠簸(thrashing)。出于此原因,提供一组特殊负载指令,迫使负载指令检查缓存命中,但在缓存未命中时,仅对所请求的运算元发出存储器请求并且不将获得的数据安置在数据缓存寄存器746中,而是将数据安置到一个通用寄存器728中。

针对频繁使用的数据相较于偶尔或很少使用的数据,新负载指令基于预期存取频率而提供“概率性”缓存。这与稀疏数据集一起使用时尤其重要,如果稀疏数据集安置到数据缓存寄存器746中,那么它同样将更频繁地覆写所需要的其它数据,从而有效地污染数据缓存寄存器746。新负载指令(NB或NC)允许频繁使用的数据保持在数据缓存寄存器746中,而通常会缓存的非频繁使用(稀疏)的数据实际上指定成在通用寄存器728中进行非缓存存储。

这种类型的指令具有NB后缀(非缓冲)(或同等地,NC后缀(非缓存):

LB.NB RA,40(SP)。

NB(NC)负载指令预期用于写入程序集中的运行库。

在表8中,以下负载指令添加为32位指令,其中Imm是立即字段,RA是寄存器名称,rs1是源索引,rd是目的地索引,且字段14-12和6-0中的位指定指令。

表8:

到存储器的带宽通常是限制应用程序性能的主要因素。代表性实施例提供通知HTP 300关于应该发布到存储器125的存储器负载请求的大小的手段。由于存取存储器数据不供应用程序使用,代表性实施例减少了存储器的浪费及第一互连网络150的带宽。

存在另一优化,其中应用程序知晓所存取的数据结构的大小,并且可指定要负载到数据缓存寄存器746中的数据量。作为实例,如果算法使用大小为16字节的结构,且结构分散在存储器中,那么发出16字节存储器读取并将数据放置到数据缓存寄存器746中将是最优的。代表性实施例限定一组存储器负载指令,其提供要负载到HTP 300寄存器中的运算元的大小以及在负载错过数据缓存寄存器746的情况下对存储器的存取的大小。如果存储器存取穿过缓存行边界,那么存储器125的实际负载可小于指令指定的大小。在此情况下,减小存取大小,以确保响应数据写入到数据缓存寄存器746的单个缓存行。

当所请求的数据小于缓存行时,负载指令还可请求HTP 300当前不需要但将来可能需要的额外数据,它值得同时获得(例如,作为预取),从而优化对存储器125的读取大小存取。此指令还可覆写(如下文更详细地论述,参考图32)可能已经使用的存取大小的任何减小,以进行带宽管理。

因此,代表性实施例通过只请求已知需要的存储器数据来最大限度地减少带宽浪费。结果是应用程序性能的提高。

已经限定允许指定待存取数据量的一组负载指令。数据写入到缓冲器中,并通过收回、FENCE或具有指定获取的原子变得无效。负载指令提供关于将从存储器存取和向存储缓冲器写入多少额外数据(以8字节递增)的提示。负载将只存取下一64字节边界的额外数据。负载指令指定使用操作后缀RB0-RB7负载的额外8字节元素的数目:

LD.RB7 RA,40(SP)

表9中示出指令格式。要负载到缓冲器中的8字节数据元的数目指定为32位指令中的位6和4:3。这些负载指令可用于汇编写入例程,或理想的是,通过编译器进行汇编。预期初始只是手动写入的程序集将利用这些指令。

表9:

新存储指令

HTP 300具有少量临时存储共享存储器数据的存储缓冲器。存储缓冲器允许到存储器的多个写入合并到较小数目个存储器写入请求中。这具有两个益处:1)更少的写入请求对于第一互连网络150和存储器控制器120来说更高效,和2)HTP 300暂停执行存储器存储的线程,直到数据存储到HTP 300存储缓冲器或存储器控制器120处为止。到HTP 300存储缓冲器的存储极快,并且通常不会导致线程暂停执行。当缓冲器写入到存储器控制器120时,线程一直暂停到接收到完成为止,以便确保存储器125的一致性。

标准RISC-V存储指令将数据写入到HTP 300存储缓冲器。但是,存在已知最好将数据直接写入到存储器而不写入到存储缓冲器的情形。这样一个情形是分散操作。分散操作通常仅将单个数据值写入到存储缓冲器。写入到缓冲器使缓冲器颠簸(thrash),并且使得益于写入合并的其它存储数据被迫回到存储器。针对HTP 300限定一组存储指令,指示不应使用写入缓冲。这些指令将数据直接写入到存储器125,使得执行线程一直暂停到写入完成为止。

预期存储无缓冲指令用于手动汇编的库,并用NB后缀指示:

ST.NB RA,40(SP)

添加以下存储指令,如表10中所示。

表10:

Figure BDA0002470992470000841

自定义原子存储和清除锁(CL)指令:

当存储器控制器观察到原子操作时,自定义原子操作在所提供的地址上设置锁。原子操作在相关联的HTP 300上执行。当锁应该被清除时,HTP 300应该通知存储器控制器。对于自定义原子操作,这应该在HTP 300执行的最后存储操作上(或者,如果不需要存储,那么应该在纤程终止指令上)。HTP 300指示将通过执行特殊存储操作来清除锁。存储和清除锁指令。

可使用以下指令序列来实施自定义原子DCAS操作:

//a0-原子地址

//a1-a0的64位存储器值

//a2-DCAS比较值1

//a3-DCAS比较值2

//a4-DCAS交换值1

//a5-DCAS交换值2

atomic_dcas:

bne a1,a2,fail//第一8字节比较

ld.nb a6,8(a0)//负载第二8字节存储器值-应命中存储器缓存

bne a6,a3,fail//第二8字节比较

sd a4,0(a0)//存储第一8字节交换值到线程存储缓冲器

sd.cl a5,8(a0)//存储第二8字节值并清除存储器锁

eft x0//AMO成功响应

fail:

li a1,1

eft.cl a1,(a0)//AMO失败响应(并清除存储器锁)

指示应该清除锁的存储指令是:

SB.CL RA,40(SP)

SH.CL RA,40(SP)

SW.CL RA,40(SP)

SD.CL RA,40(SP)

FSW.CL RA,40(SP)

FSD.CL RA,40(SP)

表11中示出这些存储指令的格式。

表11:

atomic_float_add:

fadd.d a2,a1,a2//a1含有存储器值,a2含有待添加的值

fsd.cl a2,0(a0)//a0含有存储器地址,清除锁并终止原子

eft//从缓冲器收回所有行,终止原子线程

线程创建指令:

纤程创建(“EFC”)指令发起HTP 300或HTF 200上的线程。

EFC.HTP.A4

EFC.HTF.A4

此指令在HTP 300(或HTF 200)上执行调用,在寄存器a0中的地址处开始执行。(任选地,可以利用后缀.DA。指令后缀DA指示通过寄存器a1中的虚拟地址确定目标HTP 300。如果DA后缀不存在,那么目标是本地系统100上的HTP 300。)后缀A1、A1、A2和A4指定将被传递到HTP 300或HTF 200的额外自变量的数目。自变量计数限于值0、1、2或4(例如,包应该能装64B)。额外自变量来自寄存器状态(a2-a5)。

应注意,如果在执行指令时返回缓冲器不可用,那么EFC指令将一直等到返回自变量缓冲器可用于开始执行。一旦EFC指令成功创建纤程,线程就在紧接着EFC指令之后的指令处继续。

还应注意,由主机处理器110创建的线程能够执行EFC指令并创建纤程。任选地,由EFC指令创建的纤程无法执行EFC指令,并产生异常。这些纤程创建指令的格式在表12中示出。

表12:

线程返回指令:

线程返回(ETR)指令将自变量传递回到(通过主机处理器110的线程创建或HTP300的纤程创建)发起当前线程的父线程。一旦线程完成返回指令,就终止线程。

ETR.A2

此指令执行返回到HTP 300或主机处理器110。ac后缀指定将被传递到HTP或主机的额外自变量的数目。自变量计数可以是值0、1、2或4。自变量来自寄存器状态(a0-a3)。这些线程返回指令的所述在表13中示出。

表13:

Figure BDA0002470992470000863

纤程加入指令:

纤程加入(EFJ)指令检查创建的纤程是否已返回。所述指令具有两个变化形式:加入等待和不等待。等待变化形式将使线程执行一直暂停到纤程已返回为止。加入不等待不暂停线程执行,而是提供成功/失败状态。对于这两个变化形式,如果在不具有未决纤程返回的情况下执行所述指令,那么会生成异常。

将来自返回纤程(最多四个)的自变量写入到寄存器a0-a3。

EFJ

EFJ.NW

这些纤程加入指令的格式在表14中示出。

表14:

纤程全部加入指令:

纤程全部加入指令(EFJ.ALL)在所有未决纤程返回之前一直未决。所述指令可以用零或多个未决纤程返回来调用。未生成指令状态和异常。忽略来自纤程返回的所有返回自变量。

EFJ.ALL

这些纤程全部加入指令的格式在表15中示出。

表15:

原子返回指令:

系统100的原子返回指令(EAR)用于完成自定义原子操作的执行线程,并且有可能提供回到发出自定义原子请求的源的响应。

EAR指令可将零个、一个或两个8字节自变量值发送回到发出计算元件。通过ac2后缀(A1或A2)来确定要发送回去的自变量的数目。无后缀意味着零自变量,A1意指单个8字节自变量,A2意指两个8字节自变量。若需要,从X个寄存器a1和a2获得自变量。

EAR指令还能够清除与原子指令相关联的存储器行锁。EAR使用a0寄存器中的值作为发送清除锁操作的地址。如果所述指令含有后缀CL,那么发出清除锁操作。

以下DCAS实例使用EAR指令将成功或失败发送回到请求处理器:

//a0-原子地址

//a1-a0的64位存储器值

//a2-DCAS比较值1

//a3-DCAS比较值2

//a4-DCAS交换值1

//a5-DCAS交换值2

atomic_dcas:

bne a1,a2,fail//第一8字节比较

ld.nb a6,8(a0)//负载第二8字节存储器值-应命中存储器缓存

bne a6,a3,fail//第二8字节比较

sd a4,0(a0)//存储第一8字节交换值到线程存储缓冲器

sd.cl a5,8(a0)//存储第二8字节值并清除存储器锁

li a1,0

ear.a1//AMO成功响应

fail:

li a1,1

ear.cl.a1//AMO失败响应(并清除存储器锁)

所述指令具有两个变化形式,允许EFT指令还清除与原子操作相关联的存储器锁。所支持的指令的格式在表16中示出。

表16:

Figure BDA0002470992470000892

第一和第二优先级指令:

第二(或低)优先级指令将具有第一优先级的当前线程转变成第二低优先级。一般在线程轮询要发生的事件(即,屏障)时使用所述指令。

ELP

ELP指令的格式在表17中示出。

表17:

第一(或高)优先级指令将具有第二(或低)优先级的当前线程转变成第一(或高或正常)优先级。一般在线程正轮询且事件已发生(即,屏障)时使用所述指令。

ENP

ENP指令的格式在表18中示出。

表18:

Figure BDA0002470992470000894

浮点原子存储器操作:

浮点原子存储器操作由与存储器控制器120相关联的HTP 300执行。对于32和64位数据类型来说,所执行的浮点操作均是MIN、MAX和ADD。

指令中的aq和rl位指定在发出原子操作之前所有写入数据是否对其它线程可见(aq)以及在原子完成之后所有先前写入的数据是否应该对此线程可见(rl)。换句话说,aq位迫使所有写入缓冲器写回到存储器,且rl位迫使所有读取缓冲器无效。应注意,rs1是X寄存器值,而rd和rs2是F寄存器值。

AMOFADD.S rd,rs2,(rs1)

AMOFMIN.S rd,rs2,(rs1)

AMOFMAX.S rd,rs2,(rs1)

AMOFADD.D rd,rs2,(rs1)

AMOFMIN.D rd,rs2,(rs1)

AMOFMAX.D rd,rs2,(rs1)

这些浮点原子存储器操作指令的格式在表19中示出。

表19:

Figure BDA0002470992470000901

自定义原子存储器操作:

自定义原子操作由与存储器控制器120相关联的HTP 300执行。操作通过执行RISC-V指令来执行。

系统100的存储器控制器120内最多可以使用32个自定义原子操作。自定义原子是系统级资源,可用于附接到系统100上的任何进程。

指令中的aq和rl位指定在发出原子操作之前所有写入数据是否对其它线程可见(aq)以及在原子完成之后所有先前写入的数据是否应该对此线程可见(rl)。换句话说,rl位迫使所有写入缓冲器写回到存储器,且aq位迫使所有读取缓冲器无效。

自定义原子使用a0寄存器指定存储器地址。源自变量的数目由后缀(A0、A1、A2或A4)提供,并且从寄存器a1-a4获得。从存储器返回的结果值的数目可以是0-2,并且由自定义存储器操作限定。结果值写入到寄存器a0-a1。

AMOCUST0.A4

如表20中所示,限定以下自定义原子指令。

表20:

Figure BDA0002470992470000911

ac字段用于指定自变量的数目(0、1、2或4)。下表21示出编码。

表21:

Figure BDA0002470992470000912

限定八个自定义原子指令,其中每个自定义原子指令具有4个自变量计数变化形式,得到总共32个可能的自定义原子算子。

事件管理:

系统100是事件驱动型架构。每一线程具有能够利用事件已接收掩码寄存器742和事件状态寄存器744进行监测的一组事件。保留事件0,用于来自创建的纤程(HTP 300或HTF200)的返回。事件的其余部分可用于事件信令,线程到线程、广播或收集。线程到线程允许线程向相同或不同节点上的一个特定目的地线程发送事件。广播允许线程向其节点上的线程子集发送经命名事件。接收线程应该指定它所期望的经命名广播事件。收集是指指定在事件变为处于活动中之前接收到的事件的数目的能力。

事件触发的位可以被清除(使用EEC指令),并且所有事件可以被收听(使用EEL指令)。收听操作可将线程一直暂停到事件被触发为止,或者在不等待模式(.NW)中,允许线程在其它执行继续时周期性地轮询。

线程能够使用事件发送指令(EES)向特定线程发送事件,或者使用事件广播指令(EEB)向节点内的所有线程广播事件。广播事件是经命名事件,其中发送线程指定事件名称(16位标识符),且接收线程在接收到的广播事件中筛选预先指定的事件标识符。一旦接收到,事件就应该被显式清除(EEC),以免再次接收到相同事件。应注意,所有事件触发的位在线程开始执行时被清除。

事件模式指令:

事件模式(EEM)指令设置事件的操作模式。保留事件0,用于线程返回事件,事件的其余部分可处于以下三个接收模式中的一个中:简单、广播或收集。

在简单模式中,接收到的事件立即设置触发的位,并使接收到的消息计数逐一递增。每个最新接收到的事件使接收到的事件计数递增。接收事件指令(EER)使接收到的事件计数逐一递减。事件触发的位在计数变回零时被清除。

在广播模式中,接收到的事件的通道与事件编号的广播通道相比较。如果通道匹配,那么设置事件触发的位。EER指令使触发的位被清除。

在收集模式中,接收到的事件使事件触发计数逐一递减。当计数达到零时,设置事件触发的位。指令使触发的位被清除。

EEM指令使事件编号准备好用于所选择的操作模式。在简单模式中,16位事件计数器设置为零。对于广播模式,16位事件通道号设置为由EEM指令指定的值。对于收集模式,16位事件计数器设置为由EEM指令指定的值。这三个模式中的每一个以不同方式使用相同的16位值。

EEM.BM rs1,rs2;rs1=事件编号,rs2=广播通道

EEM.CM rs1,rs2;rs1=事件编号,rs2=收集计数

EEM.SM rs1;rs1=事件编号

事件模式指令的格式在表22中示出。

表22:

事件目的地指令:

事件目的地(EED)指令提供执行线程内的事件的标识符。标识符在节点内的所有执行线程中是唯一的。标识符可以与事件发送指令一起使用,以使用EES指令将事件发送到线程。标识符是不透明值,其含有将事件从源线程发送到特定目的地线程所需要的信息。

标识符还可用于获得用于发送广播事件的唯一值。标识符包含事件编号的空间。输入寄存器rs1指定事件编号以在目的地线程标识符内进行编码。在所述指令执行之后,输出rd寄存器含有标识符。

EED rd,rs1

事件目的地指令的格式在表23中示出。

表23:

事件目的地指令还可供进程用于获得其自身的地址,所述地址接着可用于其它广播消息,例如,以启用所述进程接收其它事件消息作为目的地,例如,用于在所述进程是主要线程时接收返回消息。

事件发送指令:

事件发送(EES)指令将事件发送到特定线程。寄存器rs1提供目的地线程和事件编号。寄存器rs2提供任选的8字节事件数据。

EES rs1

EES.A1 rs1,rs2

rs2寄存器提供事件发送操作的目标HTP 300。寄存器rs1提供待发送事件编号。rs1的法定值是2-7。事件发送指令的格式在表24中示出。

表24:

事件广播指令:

事件广播(EEB)指令向节点内的所有线程广播事件。寄存器rs1提供待发送广播通道(0-65535)。寄存器rs2提供任选的8字节事件数据。

EEB rs1

EEB.A1 rs1,rs2

事件广播指令的格式在表25中示出。

表25:

Figure BDA0002470992470000941

事件收听指令:

事件收听(EEL)指令允许线程监测接收到的事件的状态。所述指令可在以下两个模式中的一个中操作:等待和不等待。等待模式将线程一直暂停到接收到事件为止,不等待模式在执行所述指令时提供接收到的事件。

EEL rd,rs1

EEL.NW rd,rs1

寄存器rs1提供可用事件的掩码作为收听操作的输出。如果没有可用事件,那么不等待模式在rs1中返回值零。事件收听指令的格式在表26中示出。

表26:

事件接收指令:

事件接收(EER)指令用于接收事件。接收事件包含确认观察到事件,以及接收到任选的8字节事件数据。寄存器rs1提供事件编号。寄存器rd含有任选的8字节事件数据。

EER rs1

EER.A1 rd,rs1

事件接收指令的格式在表27中示出。

表27:

还提供HTP 300指令格式用于调用、分叉或传递指令,如先前所论述。

发送调用指令:

线程发送调用指令发起HTP 300或HTF 200上的线程,并将当前线程一直暂停到远程线程执行返回操作为止:

HTSENDCALL.HTP.DA Ra,Rb,Args.

线程发送调用指令在HTP 300上执行调用,在寄存器Ra中的地址处开始执行。指令后缀DA指示通过寄存器Rb中的虚拟地址确定目标HTP 300。如果DA后缀不存在,那么目标是本地节点上的HTP 300。恒定整数值Args标识将被传递到远程HTP 300的额外自变量的数目。Args限于值0至4(例如,包应该能装64B)。额外自变量来自寄存器状态。应注意,如果返回缓冲器在执行HTSENDCALL指令时不可用,那么HTSENDCALL指令将一直等到缓冲器可用于开始执行。一旦HTSENDCALL完成,就将线程一直暂停到接收到返回为止。当接收到返回时,在紧接着HTSENDCALL指令之后的指令处恢复线程。所述指令发送含有以下值的第一互连网络150的包,如表28中所示:

表28:

线程分叉指令:

线程分叉指令发起HTP 300或HTF 200上的线程并继续当前线程:

HTSENDFORK.HTF.DA Ra,Rb,Args.

线程分叉指令在HTF 200(或HTP 300)上执行调用,在寄存器Ra中的地址处开始执行。指令后缀DA指示通过寄存器Rb中的虚拟地址内的节点ID确定目标HTF 200。如果DA后缀不存在,那么目标是本地节点上的HTF 200。恒定整数值Args标识将被传递到远程HTF的额外自变量的数目。Args限于值0至4(例如,包应该能装64B)。额外自变量来自寄存器状态。应注意,如果返回缓冲器在执行HTSENDFORK指令时不可用,那么HTSENDFORK指令将一直等到缓冲器可用于开始执行。一旦HTSENDFORK完成,就在紧接着HTSENDFORK指令之后的指令处继续执行线程。线程分叉指令发送含有以下值的第一互连网络150的包,如表29中所示:

表29:

线程传递指令:

线程传递指令发起HTP 300或HTF 200上的线程并终止当前线程:

HTSENDXFER.HTP.DA Ra,Rb,Args.

线程传递指令执行到HTP 300的传递并在寄存器Ra中的地址处开始执行。指令后缀DA指示通过寄存器Rb中的虚拟地址确定目标HTP 300。如果DA后缀不存在,那么目标是本地节点上的HTP 300。恒定整数值Args标识将被传递到远程HTP 300的额外自变量的数目。Args限于值0至4(包必须能够装64B)。额外自变量来自寄存器状态。一旦HTSENDXFER完成,就终止线程。线程传递指令发送含有以下值的第一互连网络150的包,如表30中所示:

表30:

Figure BDA0002470992470000962

接收返回指令:

线程接收返回指令HTRECVRTN。WT检查是否已接收到线程的返回。如果WT后缀存在,那么接收返回指令将一直等到接收到返回。否则,将可测试条件代码设置为指示指令的状态。当接收到返回时,返回的自变量负载到寄存器中。紧接着HTRECVRTN指令之后的指令在返回指令完成之后执行。

图30是HTP 300的控制逻辑和线程选择电路系统730的线程选择控制电路系统805的代表性实施例的详细框图。如上文所提及,提供第二或低优先级队列760,并且在线程选择控制电路系统805的控制下,使用线程选择复用器785从第一(或高)优先级队列755或第二或低优先级队列760中选择线程ID。第二优先级队列760中的线程从所述队列拉取,且其执行速率低于第一优先级队列760中的线程的速率。

如上文所提及,一对指令ENP和ELP用于将线程从第一优先级转变到第二优先级(ELP)和将其从第二优先级转变到第一优先级(ENP)。

并行应用程序中的线程通常必须要等待其它线程完成恢复执行的优先级(即,屏障操作)。等待操作通过线程之间的通信来完成。此通信可由唤醒经暂停线程的事件或通过等待线程轮询存储器装置来支持。当线程轮询时,必须结束其工作才能允许所有线程恢复高产执行导致可供线程使用的处理资源产生浪费。第二或低优先级队列760允许等待线程进入低优先级模式,这将减少轮询线程的开销。这用于减少轮询线程的线程执行开销,使得必须完成高产工作的线程占用大部分可用处理资源。

配置寄存器用于确定针对每个低优先级线程将运行的高优先级线程的数目,在图30中示出为低优先级跳过计数,它被提供给线程选择控制电路系统805,线程选择控制电路系统805以预定间隔从第二优先级队列760中选择线程。如所示出,线程选择控制电路系统805使跳过计数(寄存器842、复用器844和加法器846)递减,直到它等于零(逻辑块848)为止,在它等于零时,线程选择复用器785的选择输入切换到从第二或低优先级队列760中选择线程。

图32是HTP 300的数据路径控制电路系统795的代表性实施例的详细框图。如上文所提及,HTP 300中的一或多个还可包含数据路径控制电路系统795,其用于控制通过第一互连网络150的存取大小(例如,存储器125的负载请求)以管理潜在的拥塞,从而提供自适应带宽。

应用程序性能通常受存储器中的可用于处理器的带宽限制。性能限制可以通过确保只有应用程序需要的数据进入HTP 300来缓解。数据路径控制电路系统795自动(即,没有用户干预)减少针对主存储器125的请求大小,以减少处理器接口和存储器125的子系统的使用。

如上文所提及,系统100的计算资源可具有许多使用稀疏数据集的应用程序,它们频繁存取分布在整个数据集中的小块数据。因此,如果存取的数据量相当大,那么许多数据可能未被使用,从而导致带宽浪费。例如,缓存行可以是64字节,但它没有被完全使用。在其它时间,使用所有可用带宽是有益的,例如用于高效电力使用。数据路径控制电路系统795提供通过第一互连网络150的动态自适应带宽,从而调整数据路径负载的大小以优化任何给定应用程序的性能,例如基于回到HTP 300的第一互连网络150的接收(例如,响应)通道的利用,将数据路径负载调整降到8-32字节(作为实例)。

数据路径控制电路系统795监测第一互连网络150上的利用水平,并在利用水平提高时,减少来自网络接口电路系统735的存储器125负载(即,读取)请求的大小。在代表性实施例中,数据路径控制电路系统795执行第一互连网络150的响应通道的利用水平的时间平均加权(时间平均利用块764)。如果在固定时间段(调整间隔计时器762)之后,使用阈值逻辑电路766(具有多个比较器882和选择复用器884、886),利用水平高于阈值(且负载请求大小大于最小值),那么通过负载请求存取大小逻辑电路768减小负载请求的大小(使用负增量892,大体上从阈值逻辑电路766减小2倍(例如,8字节),使得:(a)一连串数据包162中将包含更少的数据包162,使得带宽能够用于数据包到另一位置的路由或用于另一进程;或(b)存储器125的利用更高效(例如,在只利用16字节时,不请求64字节)。如果在固定时间段之后,使用阈值逻辑电路766,利用水平低于阈值(且负载请求大小小于最大值),那么通过负载请求存取大小逻辑电路368使用正增量888增加负载请求的大小,大体上也是增加2倍(例如,8字节)。负载请求的大小的最小值和最大值可由用户配置,但是,最小大小一般是发出负载指令的大小(例如,HTP 300的最大运算元大小,例如8字节),且最大大小是缓存行大小(例如,32或64字节)。在替代实施例中,数据路径控制电路系统795可位于存储器控制器120,从而适应来自多个HTP 300的带宽压力。

图33是HTP 300的系统调用电路系统815及主机接口电路系统115的代表性实施例的详细框图。代表性系统100实施例允许用户模式只计算元件,例如HTP 300,以执行系统调用、断点和其它特许操作,而不用运行操作系统,以便打开文件、打印等等。为了这样做,这些系统操作中的任一个通过HTP 300执行用户模式指令来发起。处理器的指令执行标识处理器必须将请求转发到主机处理器110以供执行。来自HTP 300的系统请求具有发送到主机处理器110的系统调用工作描述符包的形式,并且作为响应,HTP 300可接收系统调用返回工作描述符包。

由包编码器780汇编和传输的系统调用工作描述符包包含系统调用标识符(例如,线程ID、核心705的编号、由程序计数器指示的虚拟地址、系统调用自变量或参数(它们通常存储在通用寄存器728中)和返回信息。包发送到主机接口115(SRAM FIFO 864),所述主机接口115写入到主存储器队列,并使系统调用工作描述符包在主存储器队列中排队,例如主机处理器110的主存储器中的所示DRAM FIFO 866,使写入指针递增,并且主机接口115进一步向主机处理器110发送中断以使主机处理器110在存储器中轮询系统调用工作描述符包。主机处理器的操作系统存取队列(DRAM FIFO 866)条目,执行所请求操作并将返回工作描述符数据放置在主存储器队列(DRAM FIFO 868)中,并且可以发信号通知主机接口115。主机接口115监测返回队列(DRAM FIFO 868)的状态,并且当条目存在时,将数据移动到输出队列(SRAM输出队列872)中,利用所提供的工作描述符数据将返回工作描述符包格式化,并将返回工作描述符包发送到发起系统调用包的HTP 300。

HTP 300的包解码器775接收返回工作描述符包,并将返回的自变量放置在通用寄存器728中,如同本地处理器(HTP 300)自己执行所述操作一般。在用户模式HTP 300上运行的应用程序所看到的这一透明执行使得能够使用在处理器具有本地操作系统时使用的相同编程环境和运行库,并且非常适合用于各种情形,例如程序调试、使用经***断点。

但是,主机接口115通常具有有限的FIFO空间,这在利用多个HTP 300时可能是有问题的,每个HTP 300具有大量核心(例如,96个),其中每一个核心可以运行大量线程(例如,每核心32个)。为了避免向主机接口115添加大量内存,针对每个HTP 300及HTP 300内的每个处理器核心705而使用系统调用信用机制来限制可以提交的系统调用的总数。

每个处理器核心705包含第一寄存器852,作为系统调用电路系统815的部分,用于维持第一信用计数。针对每一HTP 300提供的系统调用电路系统815包含第二寄存器858,其包含第二信用计数作为可用信用池。当生成系统调用工作描述符包时,如果第一寄存器852中存在足够可用的信用,那么可以传输系统调用工作描述符包,且如果不存在,那么系统调用工作描述符包在系统调用工作描述符包表格862中排队,有可能与来自给定HTP 300的其它处理器核心705的其它系统调用工作描述符包一起排队(通过复用器854)。如果第二寄存器858中存在足够可用的信用,从而提供用于系统调用突发且在HTP 300的所有处理器核心705当中共享的额外信用池,那么可以传输下一系统调用工作描述符包,否则将其保存在表格中。

当那些系统调用工作描述符包由主机接口115处理并从FIFO 864读出时,主机接口115生成回到系统调用电路系统815的确认,使得寄存器856(示出为寄存器8560和8561)中的每核心信用计数递增,继而可以针对每个处理器核心705,使第一寄存器852中的第一信用计数递增。

可替代地,寄存器856可等效于第一寄存器852来使用,而不需要每核心具有单独的第一寄存器852,而是在寄存器856中保存第一计数,同样是针对每一核心705。作为另一替代方案,针对每一核心705,所有系统调用工作描述符包都可以在系统调用工作描述符包表格862中排队,并且在所述核心在其对应的寄存器856中具有足够的第一信用计数或在第二寄存器858中具有足够可用的信用时传输。

还提供用于线程状态监测的机制,以收集在硬件中的HTP 300上运行的一组线程的状态,从而使得程序员能够看到应用程序的工作。例如,如果具有此特征,主机处理器110就可周期性地存取并存储信息以便后续用于生成用户分析报告。如果具有这一所提供的可见性,程序员就可改变应用程序以提高它的性能。

可监测所有线程状态改变,并且统计数据可关于每个状态中的时间量来保存。正在收集统计数据的处理器(110或300)提供供单独的第二处理器(110或300)存取和存储数据的手段。当应用程序处于运行中时,收集数据,使得显示定期报告的每个状态中的时间量的报告可以提供给应用程序分析员,从而提供关于正在运行的应用程序的详细可见性,以供应用程序分析员后续使用。

根据可实施于硬件或软件中的代表性实施例,与线程有关的所有信息都存储在线程存储器720的各个寄存器中,并且可以有规律地复制和保存在另一位置中。可以利用计数器来捕获任何给定线程在选定状态(例如,暂停状态)中耗费的时间量。例如,主机处理器110可记录或捕获所有线程的当前状态以及线程计数器(耗费在某一状态中的时间量),或状态和计数之间随时间推移的差(增量),并将其写入到文件或以其它方式将其保存在存储器中。又例如,程序或线程可以是屏障,其中所有线程必须在其它任何内容可以开始之前完成,并且在线程行进通过各个屏障或改变状态时监测什么线程处于什么状态是有帮助的。所示代码(下文)是将作为硬件执行或可转换为硬件的模拟器代码的实例:

InStateCount[N]–6b
InStateTimeStamp[N]–64b
InStateTotalTime[N]–64b

V.系统存储器和虚拟寻址:

系统100架构跨系统100内的所有节点提供经分割全局地址空间。每个节点具有共享物理系统100的存储器的一部分。每个节点的物理存储器分割成本地私有存储器和全局共享分布式存储器。

节点的本地私有存储器125可由所述节点内的所有计算元件存取。节点内的计算元件参与基于硬件的缓存一致性协议。主机处理器110和HTP 300分别维持小数据缓存以加快对私有存储器的参考。HTF 200不具有私有存储器缓存(除存储器325和配置存储器160以外),而是依赖于存储器子系统缓存来保存频繁存取的值。HTF 200的读取和写入请求在存取时是一致的。基于目录的缓存一致性机制确保HTF 200读取存取获得存储器的最近写入的值,并确保在将HTF 200的值写入到存储器之前,HTF 200的写入清空无效缓存并使共享处理器缓存无效。

系统100的分布式共享存储器可由系统100的所有节点内的所有计算元件(例如,HTF 200和HTP 300)存取。系统100的处理元件不具有用于共享存储器的缓存,而是可具有读取/写入缓冲器,其中带有由软件控制的失效/清空,以最大限度地减少对相同存储器行的存取。RISC-V ISA提供可用于指示需要存储器缓冲器失效/清空的围栏(fence)指令。类似地,HTF 200支持写入暂停操作,以指示到存储器的所有写入操作都已完成。这些写入暂停操作可用于清空读取/写入缓冲器。

外部主机处理器110将具有其自身的系统存储器。应用程序的节点私有虚拟地址空间可包含主机处理器系统存储器和系统100的节点私有存储器。外部主机处理器110对系统存储器的存取可通过主机处理器的缓存一致性协议而保持一致。外部主机处理器110跨PCIe或其它通信接口130对系统100的节点私有存储器的存取可通过不允许主机处理器110缓存数据来保持一致。其它主机到系统100节点的接口(即,CCIX或OpenCAPI)可允许主机处理器缓存所存取的数据。系统100的节点计算元件跨PCIe接口对主机处理器系统存储器的存取可通过不允许计算元件缓存数据来保持一致。其它主机到系统100节点的接口(即,CCIX或OpenCAPI)可允许系统100的计算元件缓存数据。

外部主机处理器110可通过PCIe或其它通信接口130存取节点的私有存储器。这些存取不可由外部主机处理器110缓存。类似地,所有节点处理元件可以通过PCIe或其它通信接口130存取外部处理器的存储器。如果是节点的处理元件存取外部主机的存储器而不是使主机将数据推到节点,那么性能通常会高得多。节点计算元件的架构能够处理较大数目的未决请求并且能够忍受更长的存取时延。

如上文所提及,在代表性实施例中,系统100的进程虚拟地址空间映射到一或多个系统100的物理节点上的物理存储器。系统100的架构包含“虚拟”节点的概念。系统100的虚拟地址包含虚拟节点标识符。虚拟节点标识符允许请求计算元件确定虚拟地址是指代本地节点存储器还是指代远程节点存储器。指代本地节点存储器的虚拟地址通过请求计算元件转换成本地节点物理地址。指代远程节点存储器的虚拟地址发送到远程节点,其中在进入节点时,虚拟地址转换成远程节点物理地址。

虚拟节点的概念允许进程使用同一组虚拟节点标识符,不管应用程序实际上是在什么物理节点上执行的。进程的虚拟节点标识符的范围开始于零并增加到值N-1,其中N是进程中虚拟节点的数目。进程中虚拟节点的数目在运行时确定。应用程序进行系统调用以获取物理节点。接着,操作系统判定进程将具有多少虚拟节点。给到进程的物理节点的数目通过系统100中的物理节点的数目来限制。虚拟节点的数目可等于或大于物理节点的数目,但必须是二的幂。具有大量虚拟节点允许存储器125跨物理节点更一致地分布。作为实例,如果存在5个物理节点,且进程设置成使用32个虚拟节点,那么共享分布式存储器可以1/32的增量跨物理节点分布。这五个节点针对每一节点将具有总共享分布式存储器的(7/32、7/32、6/32、6/32、6/32)。存储器分布的一致性还使得这五个节点具有更一致的带宽要求。

具有比进程内的物理节点更多的虚拟节点暗示多个虚拟节点被分配到一个物理节点。节点的计算元件将各自具有进程的小型本地节点虚拟节点ID表格。将存在每一物理节点ID的虚拟节点ID的最大数目。例如,每一物理节点ID的虚拟节点ID的最大数目可以是八个,从而允许存储器和带宽对于不同物理节点来说是相当一致的,而不会使每个计算元件的虚拟节点ID表格过大。

系统100的架构限定了供所有计算元件使用的单个公共虚拟地址空间。此公共虚拟地址空间供代表应用程序的在系统100的计算元件(主机处理器110、HTP 300和HTF 200)上执行的所有线程使用。仔细地限定可扩展多节点系统的虚拟到物理地址转换过程以确保在系统100扩展时性能下降的程度最低。作为此扩展问题的解决方案,系统100的架构将虚拟到物理地址转换推动到其中驻存了物理存储器的节点。执行虚拟到物理转换意指所引用的虚拟地址在发送到目的地节点的请求包中传递。请求包必须从虚拟地址中的信息路由(因为物理地址直到包达到目的地节点才可用)。利用嵌入在地址中的目的地节点ID限定虚拟地址。例外是外部主机虚拟地址到节点本地私有存储器。由于x86处理器虚拟地址空间的限制,需要这种例外。

当前几代的x86处理器的虚拟地址是64位宽。但是,对于这些64位地址,只实施了较低48位。较高16位必须含有较低48位的符号扩展值。根据现有处理器限制,在标准Linux操作系统上运行的应用程序的虚拟地址空间分离成其中较高位为全零或全1的虚拟地址。图37示出受系统100的架构支持的虚拟地址空间格式。

限定系统100的虚拟地址以支持全满64位虚拟地址空间。虚拟地址的较高三个位用于指定地址格式。在表31中限定格式。

表31:

虚拟地址格式ID描述

Figure BDA0002470992470001041

表31中提到的异常可由于以下两个情形出现:(1)私有地址作为已发送调用或返回操作的自变量而发送到远程节点HTP或HTF计算元件,或(2)共享存储器中的数据结构创建有私有存储器的指针。

图38示出每个虚拟地址格式的转换过程。参考图37和38:

(a)格式0和7供外部主机处理器110和本地节点主机处理器110、HTP 300和HTF200计算元件使用以存取外部主机存储器以及本地节点私有存储器。存储器请求的源计算元件将虚拟地址转换成物理地址。

(b)格式1和6供本地节点主机处理器110、HTP 300和HTF 200计算元件使用以存取本地节点私有存储器以及外部主机存储器。应注意,使用此格式允许远程节点装置验证本地节点私有存储器参考实际上是意图用于本地节点。这一情形适用于本地节点的私有虚拟地址供远程节点使用的情况。远程节点可比较嵌入的节点ID与本地节点ID,并检测存储器参考错误。应注意,此检测能力不可用于格式0。

(c)格式2供所有节点主机处理器110、HTP 300和HTF 200计算元件使用以存取非交错分布式共享存储器。对此存储器格式的分配将分配其中进行分配的节点上的连续物理存储器块。进程的每个节点用虚拟节点ID编号,所述虚拟节点ID开始于零并增加到此进程中节点的数目。虚拟到物理地址转换首先将虚拟地址中的虚拟节点ID转换成物理节点ID。节点ID转换在源节点处进行。一旦转换,物理节点ID就用于将请求路由到目的地节点。应注意,全局空间ID(GSID)和虚拟地址均在包中发送到目的地节点。一旦处于目的地节点,远程节点接口就接收请求包并将虚拟地址转换成本地节点的物理地址。

(d)格式3供所有节点主机处理器110、HTP 300和HTF 200计算元件使用以存取交错分布式共享存储器。对此存储器格式的分配将分配参与交错的每个节点上的存储器块(此进程中节点数目最多为二的幂)。对此格式的参考以4K字节粒度交错(实际交错粒度正在研究)。转换过程的第一步骤是将虚拟地址中的虚拟节点ID从较低位交换到较高位(交换到开始于位48的位置中)。在交换节点ID之后,将虚拟节点ID转换成物理节点ID。节点ID交换和转换在源节点上进行。物理节点ID用于将请求路由到目的地节点。应注意,全局空间ID(GSID)和虚拟地址均在包中发送到目的地节点。一旦处于目的地节点,远程节点接口就接收请求包,并将虚拟地址转换成本地节点物理地址。

(e)不使用格式4和5,并且在代表性实施例中,这些格式是不合法的,会产生参考异常。

代表性实施例的许多优点是易于清楚的。代表性设备、系统和方法提供能够为计算密集型核提供高性能和节能解决方案的计算架构,例如,以便计算用于传感、通信和分析应用的快速傅立叶变换(FFT)和有限脉冲响应(FIR)滤波器,例如合成孔径雷达、5G基站和图形分析应用,如使用光谱技术的图形聚类、机器学习、5G联网算法和大型模具代码,但不限于此。

值得注意的是,各种代表性实施例提供一种多线程粗粒度可配置计算架构,能够为这些不同应用中的任何一个进行配置,但是最重要的是,还能够自调度、动态自配置和自重新配置、条件分支、异步信令的反压控制、有序线程执行和循环线程执行(包含数据依赖)、在完成数据依赖和/或排序后自动开始线程执行、提供对私有变量的循环存取、使用重入队列提供循环线程的快速执行,以及使用各种线程标识符进行高级循环执行,包含嵌套式循环。

并且,代表性设备、系统和方法提供一种处理器架构,能够进行自调度、大量并行处理并进一步与可配置计算架构交互和对其进行控制,以便执行这些不同应用中的任何一个。

如本文中所使用,“处理器核心”705可以是任何类型的处理器核心,并且可以体现为配置成、设计成、编程成或以其它方式调适成执行本文所论述的功能性的一或多个处理器核心。如本文中所使用,“处理器”110可以是任何类型的处理器,并且可以体现为配置成、设计成、编程成或以其它方式调适成执行本文所论述的功能性的一或多个处理器。在本文中使用术语处理器时,处理器110或300可包含使用单个集成电路(“IC”),或者可包含使用多个集成电路或连接、布置或分组在一起的其它组件,例如控制器、微处理器、数字信号处理器(“DSP”)、阵列处理器、图形或图像处理器、并行处理器、多核处理器、自定义IC、专用集成电路(“ASIC”)、现场可编程门阵列(“FPGA”)、自适应计算IC、相关联的存储器(例如RAM、DRAM和ROM),以及其它IC和组件,不管是模拟的还是数字的。因此,如本文中所使用,术语处理器或控制器应理解为同等地意指和包含单个IC,或以下布置:自定义IC、ASIC、处理器、微处理器、控制器、FPGA、自适应计算IC或执行本文所论述的功能的集成电路的某一其它分组,并且具有相关联的存储器,例如,微处理器存储器或额外RAM、DRAM、SDRAM、SRAM、MRAM、ROM、快闪、EPROM或E2PROM。具有相关联的存储器的处理器110或300可以调适成或配置成(通过编程、FPGA互连或硬接线)执行本发明的方法,如本文所论述。例如,方法可以进行编程并存储在具有相关联的存储器(和/或存储器125)的处理器300和其它等效组件中,作为一组程序指令或其它代码(或等效配置或其它程序),以供随后在处理器110或300可以操作(即,通电和运行)时执行。同等地,当处理器300可以完整或部分地实施为FPGA、自定义IC和/或ASIC时,还可以设计、配置和/或硬接线FPGA、自定义IC或ASIC以实施本发明的方法。例如,处理器110或300可以实施为以下布置:模拟和/或数字电路、控制器、微处理器、DSP和/或ASIC,它们统称为“处理器”或“控制器”,并且分别硬接线成、编程成、设计成、调适成或配置成实施本发明的方法,包含有可能结合存储器125来实施。

依据选定实施例,可包含数据存储库(或数据库)的存储器125、325可以体现为任何数目的形式,包含在当前已知或将来可用的任何计算机或其它机器可读数据存储媒体、存储器装置或用于信息存储或通信的其它存储或通信装置内,包含但不限于存储器集成电路(“IC”)或集成电路的存储器部分(例如处理器130或处理器IC内的驻留存储器),不管是易失性的还是非易失性的,不管是可装卸式的还是非可装卸式的,包含但不限于RAM、快闪、DRAM、SDRAM、SRAM、MRAM、FeRAM、ROM、EPROM或E2PROM,或任何其它形式的存储器装置,例如磁性硬盘驱动器、光盘驱动器、磁盘或磁带驱动器、硬盘驱动器、其它机器可读存储或存储器媒体,如软盘、CDROM、CD-RW、数字通用光盘(DVD)或其它光学存储器,任何其它类型的存储器、存储媒体,或数据存储设备或电路,这些是已知的或者会变得已知。存储器125、325可用于存储各个查找表、参数、系数、其它信息和数据、(本发明的软件的)程序或指令,和其它类型的表格,例如数据库表格。

如上文所指出,处理器110、300使用本发明的软件和数据结构来硬接线或编程,例如,以执行本发明的方法。因此,本发明的系统和相关方法,包含各个指令,可以体现为提供此类编程或其它指令的软件,例如,在非暂时性计算机可读媒体内体现的指令集和/或元数据,如上文所论述。另外,还可利用元数据来限定查找表或数据库的各个数据结构。借助于实例但不限于,此类软件可呈源代码或目标代码的形式。源代码进一步可以编译成某一形式的指令或目标代码(包含汇编语言指令或配置信息)。本发明的软件、源代码或元数据可以体现为任何类型的代码,例如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可以像已知的那样实施,或可以变为在本领域中已知的,从而使用任何适用的标准(例如(例如但不限于)各种PCI、USB、RJ 45、以太网(快速以太网、千兆以太网、300ase-TX、300ase-FX等)、IEEE 802.11、蓝牙、WCDMA、WiFi、GSM、GPRS、EDGE、3G和上文所提及的其它标准和系统中的一个)提供HTF 200和/或处理器110、300和任何类型的网络或外部装置(例如无线、光学或有线)之间的数据通信,并且可包含阻抗匹配能力、用于使低压处理器与较高电压控制总线介接的电压转换、有线或无线收发器,以及响应于来自处理器130的信令而接通或断开各个线路或连接器的各个开关机构(例如,晶体管)。另外,通信接口130还可配置成和/或用于例如通过硬接线或RF或红外光信令在系统100外部接收和/或传输信号,以便例如实时接收信息,用于例如在显示器上输出。通信接口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,它们在所公开的范围的范畴内。

同样将了解,图式中所描绘的元件中的一或多个还可以更独立或集成的方式实施,或甚至在其根据具体应用可为有用的时候,在某些情况下可被移除或呈现为不可操作。组件的一体化形成组合也在本发明的范围内,尤其是对于其中离散组件的分离或组合不明确或难以辨别的实施例。另外,本文使用的术语“耦合(coupled)”,包含其各种形式(“coupling”或“couplable”),是指并包含任何直接或间接的电、结构或磁耦合、连接或附接,或用于这种直接或间接的电、结构或磁耦合、连接或附接的适配或能力,包含一体形成的组件和经由或通过另一组件耦合的组件。

至于信号,在本文中指代的是“表示”给定度量或“代表”给定度量的参数,其中度量是调节器的至少部分的状态或其输入或输出的量度。如果参数与度量充分直接相关,使得调节参数能够令人满意地调节所述度量,那么参数被视为表示所述度量。如果参数表示多个或一部分度量,那么参数可被视为所述度量的可接受表示。

此外,附图/图式中的任何信号箭头应被视为仅仅是示例性的且不具有限制性,除非另外特别指出。步骤的组成部分的组合也将被视为在本发明的范围内,尤其是在分离或组合的能力不明确或可预见的时候。如在本文中和遍及所附权利要求书使用的分离性术语“或”大体上意在意味着“和/或”,除非另有指示,否则其具有结合和分离性含义两者(并且并不限于“异或”含义)。如在本文中的描述和遍及所附权利要求书所使用的,除非上下文另外明确规定,否则“一种(a/an)”和“所述”包含多个提及物。同样,除非上下文另外明确规定,否则如在本文中的描述和遍及所附权利要求书中所使用的,“在……中(in)”的意义包含“在……中(in)”和“在……上(on)”。

所示出的本发明的实施例的前述描述,包含发明内容或摘要中的描述,并不意图为穷尽性的或将本发明限制于本文所公开的精确形式。根据前述,将观察到,可在不脱离本发明的新颖概念的精神和范围的情况下,预期并且可实现大量的变化、修改和替代。应理解,并不意图限制本文所示出的特定方法和设备,也不应推断所述限制。当然,本发明意在通过所附权利要求书将所有此类修改涵盖为属于权利要求书的范围。

183页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:数据管理装置、检索装置、登记装置、数据管理方法和数据管理程序

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!