一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

静默可重新配置数据处理器的制作方法

2022-06-05 21:57:24 来源:中国专利 TAG:


1.本技术涉及可重新配置架构和其他分布式处理架构中的静默,并且尤其可以被应用于在粗粒度可重新配置架构上执行的操作的静默。


背景技术:

2.可重新配置处理器,包括现场可编程门阵列(fpga),可以被配置为,与使用执行计算机程序的通用处理器可能实现的相比,更有效或更快地实现各种功能。正在开发所谓的粗粒度可重新配置架构(例如,cgra),其中阵列中的可配置单元比典型的、更细粒度的fpga中使用的可配置单元更复杂,并且可以实现更快或更有效地执行各种类别的功能。例如,已经提出了cgra,它可以实现机器学习和人工智能工作负载的节能加速器。参见prabhakar等人的“plasticine:a reconfigurable architecture for parallel patterns”(plasticine:一种可重新配置的并行模式架构),isca 17,2017年6月24-28日,加拿大,安大略省,多伦多。
3.分布式处理系统(诸如cgra)中的检查点、多任务和多程序呈现出复杂的问题。通常,运行时控制程序只能加载配置文件并按照配置执行机器直到完成,然后允许硬件静默。对于如抢占式多任务和调试的系统管理功能,可能没有在执行期间中断机器的能力。为了最大限度地提高操作效率,并且能够在诸如可重新配置处理器的可配置处理元件的处理系统上的处理单元之间进行协调,需要一种有效地管理处理单元的静默的手段。


技术实现要素:

4.描述了一种实现数据处理系统的处理单元的有效静默的技术,包括粗粒度可重新配置阵列处理器的可配置单元之间的静默。
5.描述了一种处理系统,其包括可配置和可重新配置的处理单元阵列,以分配阵列中的处理单元集合以实现数据处理操作的执行片段。提供包括逻辑电路的静默逻辑,所述逻辑电路耦合到阵列中的一些处理单元或所有处理单元。静默逻辑电路可配置为响应控制信号,以在执行片段的静默边界上静默阵列中的数据处理单元集合。在本文描述的实施例中,集合中的处理单元可以分布在阵列中并且异步操作。静默逻辑可操作为同步在静默边界上异步操作的处理单元集合。静默边界可以由可配置处理单元阵列中的配置数据来定义。
6.在一些实施例中,处理单元阵列可配置为分配阵列中的多个处理单元集合,指定的执行片段资源组efrg,以实现数据处理操作的相应执行片段,其中执行片段例如在cgra中包括数据处理操作的控制和数据流程图中的操作子集。这种情况下的静默逻辑可以包括静默控制器,以将静默控制信号分配到与阵列中的处理单元相关联的静默逻辑,并从相应的处理单元组接收静默就绪信号。
7.描述了一种用于操作包括具有静默的可配置处理单元阵列的处理系统的方法。该方法可以包括:将配置数据加载到阵列以用于数据处理操作,该数据处理操作将阵列配置
为多个efrg,用于具有静默边界的相应执行片段;以及向阵列中的多个efrg分发静默命令。分配给阵列的静默命令可以响应于外部静默事件而被生成,外部静默事件例如是向阵列的静默控制器发出信号以支持多任务处理的主机处理器中的运行时控制程序,或者来自由控制网络提供给阵列的静默控制器的阵列中的数据处理操作生成的内部静默事件(自静默)。在执行片段资源组中,该方法包括响应于静默命令以检测相应执行片段中静默命令之后的静默边界,超出静默边界禁止执行相应执行片段,以及产生相应执行片段的静默就绪信号。静默边界可以在配置数据中由每个efrg的处理单元中的配置的执行状态集合来定义。该方法可以包括通过检测组中的处理单元的配置状态集合来检测efrg中的静默边界。
8.描述了一种技术,通过该技术,针对给定efrg可配置静默逻辑,以在执行片段中定义静默边界或多个静默边界,并响应于控制信号,在静默边界上静默efrg中的处理单元。在所描述的示例中,可以包括计数器,诸如循环计数器,其对处理单元中的执行循环或其他类型的处理周期进行计数,以检测efrg中的处理单元中的配置状态。静默逻辑可以响应于计数器来检测与执行片段中的静默边界相对应的处理单元中的事件,诸如配置状态,否则追踪efrg中的执行片段的进度。因此,静默逻辑能够在分配给执行片段的efrg中的静默边界上同步静默操作。在所描述的示例中,提供偏斜计数器以追踪efrg中的处理单元之间的执行片段的进度差异。在一些实施例中,当在程序执行可以到达下一个静默边界之前,在执行片段中存在剩余的未决工作时,偏斜计数器为非零;备选地,偏斜计数器的非零值也可以被认为反映程序不处于静默边界。在其他实施例中,不同的偏斜计数器的值或不同的追踪手段可以指示这些条件。
9.本文描述的系统的示例中的执行片段被分配给处理单元集合,其中集合中的一个或多个处理单元被配置为输入的生产者,并且集合中的一个或多个处理单元被配置为输入的消费者。描述了一种静默技术,其中静默逻辑可配置为在静默边界上停止生产者或每个生产者,并在消费者或每个消费者完成对静默边界之前产生的输入的处理之后使efrg静默。
10.本文描述了一种架构,其中处理系统包括耦合到阵列中的处理单元的控制屏障网络。控制屏障网络可以包括可配置为在控制屏障网络中形成信号路由的控制总线,以及具有连接到控制总线和处理单元阵列的输入和输出的多个屏障逻辑单元。为了支持静默逻辑,为特定执行片段分配的用于efrg的第一逻辑单元可配置为从执行片段中的生产者接收令牌(p_qb),其中令牌用信号通知对应于执行片段中的静默边界的生产者单元中的事件,并基于来自生产者的令牌在输出上生成生产者屏障令牌。生产者屏障令牌可用于使集合中的生产者能够前进超过执行片段的静默边界。此外,为特定执行片段分配的用于efrg的第二逻辑单元可配置为从处理器单元集合中的消费者单元接收令牌(c_qb),以基于来自消费者的令牌在输出上生成消费者屏障令牌。消费者屏障令牌可以在静默逻辑中与生产者屏障令牌一起使用,以使静默边界上的单元集合同步。静默逻辑可以被配置为连接到控制总线,并且可以包括偏斜计数器,该偏斜计数器可配置为接收生产者屏障令牌和消费者屏障令牌,以追踪生产者和消费者之间的执行片段的进度差异,包括集合中的处理单元之间的静默边界令牌(p_qb和c_qb)的偏斜。
11.此外,可以提供使能电路,以响应生产者屏障令牌和其他数据和控制依赖性,为被配置为生产者的efrg中的相关处理器单元产生使能信号。此外,可以提供使能电路,可配置
为响应于数据和控制依赖性而为被配置为消费者的efrg中的相关联的处理器单元产生使能信号。生产者屏障令牌和消费者屏障令牌可用于追踪生产者和消费者之间执行片段的进度差异。此外,静默逻辑可以通过禁用生产者屏障令牌来停止生产者,并且efrg将在消费者达到配置状态之后静默。
12.在本文描述的静默架构中,阵列静默控制器可以包括将控制信号转发到阵列中的处理单元的静默逻辑的逻辑。与处理单元集合相关联的静默逻辑可以包括与阵列中的相应处理单元相关联的静默就绪逻辑,以向阵列静默控制器提供静默就绪信号。在本文描述的示例中,用于处理单元的静默就绪逻辑在阵列中的处理单元之间以菊花链形式连接。当接收到来自菊花链的先前成员的静默就绪信号并且相应efrg的静默准备就绪时,静默就绪逻辑可以将静默就绪信号转发到菊花链上的阵列静默控制器。此外,该架构可以提供可配置的静默参与标志,以及响应于静默参与标志的状态来覆盖静默就绪逻辑的逻辑。以这种方式,阵列可以被配置为在静默就绪逻辑中使用与生产者相关联的静默就绪信号。
13.通常,提供了一种用于操作包括可配置处理单元阵列的处理系统的方法,该方法包括监控阵列中efrg中的数据处理操作的执行片段的进度;以及响应控制信号以在执行片段的静默边界上使阵列中的数据处理单元集合静默。
14.该方法可以包括监控数据处理操作的相应执行片段阵列中的多个处理单元集合中的进度,将静默控制信号分配到阵列中的处理单元,以及从相应组处理单元接收静默就绪信号。
15.此外,针对包括在执行片段中定义多个静默边界的逻辑的处理系统,该方法可以包括在控制信号之后在公共静默边界上静默efrg中的处理单元。
16.还提供了用于跨efrg中的处理单元之间的静默边界追踪执行片段的进度差异的技术。
17.描述了一种用于操作数据处理系统的方法,其中可配置单元阵列耦合到执行控制程序的主机,该控制程序生成静默控制信号以支持检查点操作、断点操作、暂停和恢复操作、可重新配置系统上的多程序处理和多任务处理以及其他功能,诸如那些帮助调试在可配置单元阵列上运行的程序的功能。在一个操作中,控制程序可以迭代地使静默边界上的操作静默,卸载检查点数据的副本,例如在每个静默边界上的状态数据和存储器内容,恢复该操作并重复以收集关于在静默边界上的操作的执行的信息。
18.此外,描述了用于操作数据处理系统的方法,其中可配置单元阵列耦合到在多程序处理环境中执行控制程序的主机,在多程序处理环境中,处理单元阵列中的数据处理操作可以不时地产生资源以用于由其他进程使用,以及在多任务处理环境中,其中处理单元阵列中的数据处理操作可以响应于调度器、中断或其他外力而被迫放弃资源。控制程序可以使用可配置单元阵列来管理用于执行的多个操作,包括在产生资源的多程序处理或多任务处理事件时在这些操作之间分配优先级。利用本文描述的技术,主机可以根据优先级来调度操作,包括在具有比部署在可配置单元阵列中的操作更高优先级的操作的触发事件时,控制程序可以在静默边界上暂停正在执行的程序,在静默边界处卸载正在执行的程序的配置文件、状态和工作存储器的全部或部分,然后加载用于更高优先级操作的配置文件,并且开始执行更高优先级文件。此外,在完成较高优先级的操作时,可选地,可以通过加载其配置文件、状态和存储器,并在静默边界处恢复操作,来恢复暂停的操作。
19.本文描述的技术的其他方面和优点可以从下面的附图、具体实施方式和权利要求书的材料中看到。
附图说明
20.图1是说明包括主机、存储器和包括静默控制网络的可重新配置数据处理器的系统的系统图。
21.图2是包括具有阵列静默控制器和分布式静默逻辑的可配置单元阵列的区块的简化图。
22.图2a示出了连接阵列级网络中的元件的示例交换单元。
23.图3是类似于图2的区块的处理单元集合的示意图,示出了连接到区块中的静默逻辑的可配置互连。
24.图4是说明包括静默逻辑的示例可配置单元的框图。
25.图5是可配置为支持静默的屏障逻辑单元的实现的图示。
26.图6是用于生成生产者屏障令牌和静默就绪逻辑的静默逻辑的简化逻辑图。
27.图7是静默边界逻辑的简化逻辑图。
28.图8是用于生成消费者屏障令牌的静默逻辑的简化逻辑图。
29.图9是支持具有多个区块的实施例的顶层网络和cgra(粗粒度可重新配置架构)的组件的简化框图。
30.图10示出了可用于控制可配置单元中的单元配置加载过程的状态机图的一个示例。
31.图11是支持在可配置单元中加载和卸载配置文件的结构的逻辑表示。
32.图12是说明执行阵列配置加载过程的逻辑的一个示例的状态机图。
33.图13是说明执行阵列配置卸载过程的逻辑的一个示例的状态机图。
34.图14是随后用于可配置处理单元阵列的阵列配置和程序卸载过程的静默操作的一个示例的流程图。
35.图15是使用静默来改变可配置阵列中的数据处理操作的方法的流程图。
36.图16是使用静默来卸载用于可配置阵列中的数据处理操作的断点文件的方法的流程图。
具体实施方式
37.下面的描述通常将参考特定的结构实施例和方法。应当理解,不意图将该技术限制于具体公开的实施例和方法,而是可以使用其他特征、元件、方法和实施例来实践该技术。描述优选实施例是为了说明本技术,而不是限制其范围,其范围由权利要求书限定。本领域普通技术人员将认识到以下描述的各种等同变体。
38.图1是说明包括主机120、存储器140和可重新配置数据处理器110的系统的系统图。如图1的示例中所示,可重配置数据处理器110包括处理单元阵列190,处理单元阵列190包括本文所描述的静默控制网络。在该示例中,处理单元是可配置单元,使用配置文件或位文件可配置,以数据流形式或部分以数据流形式实现数据处理操作。在其他实施例中,处理单元阵列可以被配置用于冯
·
诺依曼或控制流操作,或用于混合操作。
39.阵列的处理单元可以异步执行,这几乎不能保证安全程序点静默。
40.在包括被配置用于执行数据处理操作的处理单元阵列的cgra和其他处理系统中,该阵列可以被配置为分配阵列中的处理单元的集合,在本文被称为“执行片段资源组efrg”,以实现数据处理操作的不同部分,在本文被称为数据处理操作的“执行片段ef”。阵列可以被配置为在阵列的不同处理单元集合中执行多个执行片段。这些不同的处理单元集合可以执行它们被异步配置的执行片段。此外,分配给单个执行片段的给定处理单元集合内的处理单元可以异步操作,这支持例如阵列中的处理单元的分布式性质。因此,当需要停止数据处理操作的执行并以可以安全恢复的方式使阵列中的处理单元静默时,会出现问题。
41.出于本描述的目的,执行片段(ef)通常是实现数据处理操作的程序的一部分,包括操作集合,例如程序中遵循类似控制流序列的操作序列。ef可以是循环体,也可以是基于条件构造(诸如if-else或switch语句)执行的操作。ef可以是分层的,并且可以完全包含其他循环嵌套。一个具体的示例是在循环繁重的程序(诸如深度学习训练和推理工作负载)中最外层的循环级别定义的ef。使用适合于一些实现方式的控制流图表示,如果程序控制流图g由边e和顶点v的集合表示,则每个唯一的ef是g的不同子图g,其将g划分为不同的g的边e和顶点v。
42.出于本描述的目的,执行片段资源组(efrg)是被分配或配置为执行ef的物理硬件资源的集合。ef与其efrg之间可以有1:1的对应关系;虽然efrg可以能够并可以串联执行多个ef,但在任何给定时间,单线程部署中的efrg中的每个组件仅执行一个ef。在处理单元阵列中,诸如cgra中的可配置单元,efrg可以包括阵列中的处理单元集合。
43.出于本描述的目的,静默边界(qb)是描述ef内被约束为在qb处具有一致状态的操作集合的事件。例如,在循环中,qb可以被定义为在任何完全执行的循环迭代之后或之前。每个ef有两个自然的qb:一个在ef执行之前,另一个在ef完成执行之后。可以根据需要在ef内定义和构建附加的qb。
44.下面是一些带有注释的通用循环的简单示例,该注释定位伪代码中的qb:
45.[0046][0047]
为了实现qb,用户可以直接向编译器指定qb,或者编译器可以在默认情况下适当地插入qb,以基于用户输入启用自检查点或其他功能(如断点)。用户可以通过由用户插入到代码中的编译器指令(编译指示)、由用户通过命令行调用编译器指定的选项、通过编译器使用的配置文件、这些技术的某种组合或某些其他手段来指定qb。在控制流实施例中,编译器然后通过插入附加的边和顶点来将原始控制流图g变换为g’,其对静默请求进行采样,并且如果静默请求在qb处是活动的,则同步/暂停执行。在ef内,该同步/暂停可以通过标识(多个)生产者和(多个)消费者,并执行例如以下操作来完成:
[0048]
a)生成生产者屏障,该生产者屏障是所有(初始)生产者的逻辑函数(例如and)。如果生产者的数目很大,则生产者屏障可以递归地构建。
[0049]
b)生成消费者屏障,该消费者屏障是所有(终端)消费者的逻辑函数(例如and)。如果消费者的数目很大,则消费者屏障可以递归地构建。
[0050]
c)表示efrg的一个组件,其包含偏斜计数器和关联控件或与其相关联。将静默请求、生产者屏障和消费者屏障路由到该偏斜计数器。将生产者屏障连接到偏斜计数器递增输入,并将消费者屏障连接到偏斜计数器递减输入。
[0051]
d)上述步骤c)中的efrg中所指示的组件中或与之相关联的屏障逻辑确定ef的生
产者是否应当继续执行直到下一个qb,或者停止并等待所有消费者赶上与生产者相同的qb。为了在下一次qb之前继续执行,参与组件向所有生产者广播控制信号。为了停止执行,在一种方法中,简单地不发送该控制信号,这有效地阻止了ef取得进展。如果参与组件已经接收到静默请求,则生产者将不会接收到所述控制信号。使用偏斜计数器,参与组件等待所有消费者达到与生产者相同的qb。当偏斜计数器达到零时,参与组件产生指示ef静默就绪的信号。
[0052]
在可配置单元阵列中,可以通过定义数据处理操作的多个执行片段来实现数据处理操作。efs可以由固定或可变的工作量组成,视程序而定。类似地,不同的efs可以包含不同的计算量。efs可以表示并行模式、并行模式的一部分或程序的控制和数据流图中的任何其他操作子集。
[0053]
数据处理操作的全部或部分可以被划分为ef集合。可配置单元阵列可以使用配置文件来配置,以分配efrg,该efrg包括在阵列中具有多个成员的处理单元集合,以实现数据处理操作的执行片段。可以将许多efrg和相应的可配置单元集合分配给相应的执行片段。efs具有从输入生产者集合接收输入数据的输入。输入的生产者集合可以包括一个或多个生产者。efs具有分布在分配给它们的可配置单元集合之间的功能元素,这些可配置单元使用输入数据并产生结果。一个ef产生的结果可以用作另一ef的输入。
[0054]
耦合到阵列中的可配置单元的静默逻辑可被配置为响应控制信号,以在执行片段的静默边界上,使阵列中分配给特定执行片段的数据处理单元集合静默。根据特定实现,执行片段可以被配置为包括一个静默边界或多个静默边界。
[0055]
在同步时,与分配给ef的efrg中直到静默边界的操作相对应的周期或者完全执行,或者完全不执行。
[0056]
在处理单元阵列中的所有单元已经达到其被分配到的efrg的efs中的静默边界之后,处理单元阵列可以被认为是静默的,并且可以针对特定实现以安全的方式暂停阵列中的执行。
[0057]
例如,静默的efrg或静默的阵列可以具有以下特性:
[0058]
1.没有执行新的计算,也没有创建新的交易。
[0059]
2.所有相关的飞行中事务(数据和控制位)均已完成并已到达其目的地。
[0060]
3.所有相关的程序状态和中间数据都存储在可配置处理单元中的状态元素和存储器中,这些可配置处理单元可以在程序卸载操作期间卸载。
[0061]
如图1的示例中所示,可重新配置数据处理器110包括可配置单元(处理单元)的阵列190和阵列静默控制器195,可重新配置数据处理器110可以被用以检查点和恢复操作、断点操作和其他操作。静默控制器可以包括配置加载/卸载控制器或与之耦合,静默控制器可以包括配置加载控制器和配置卸载控制器的组合。配置加载控制器和配置卸载控制器可以使用分隔的逻辑和数据路径资源来实现,或者可以根据特定实施例使用共享逻辑和数据路径资源来实现。
[0062]
处理器110包括通过线路125连接到主机120的外部i/o接口130,和通过线路145连接到存储器140的外部i/o接口150。i/o接口130、150通过总线系统115连接到可配置单元的阵列190。总线系统115可以具有承载一个数据块的总线宽度,对于该示例,该数据块可以是128位(通篇对128位的引用可以更一般地被认为是示例块大小)。
for parallel patterns”(plasticine:一种可重新配置的并行模式架构),isca’17,2017年6月24-28日,加拿大,安大略省,多伦多,其通过引用结合于此,就好像在本文完全阐述一样。在图2所示的架构中,主agcu 250包括阵列静默控制器251,其控制区块中的可配置单元阵列的静默操作。
[0074]
通过配置区块来实现的数据处理操作(有时称为“机器”)包括数据处理操作的多个执行片段,这些执行片段分布在相应的可配置单元集合(在该示例中为ag、cu、pmu、pcu)之间并由其执行。
[0075]
参与静默过程的阵列组件在ef静默边界处服从来自主agcu250(magcu)中的阵列静默控制器251的静默请求。在下面描述的示例中,在每个ef静默边界处的生产者和消费者之间的同步是使用两个结构来实现的:生产者-屏障(p_barrier)和消费者-屏障(c_barrier),其可以使用控制屏障网络链接到可配置单元。阵列中的静默逻辑可以通过配置控制屏障网络、通过单独的专用逻辑和通信链路、或者通过控制屏障网络和专用逻辑和链路的组合来实现。
[0076]
在该示例中,可用作静默控制网络的控制屏障网络包括与阵列中的可配置单元耦合的多个可配置静默逻辑单元(包括屏障逻辑单元)。在该示例中,多个静默逻辑单元包括,地址生成器ag中或可操作地耦合到地址生成器ag的逻辑单元(例如201)、pmu中的逻辑单元(例如202)以及pcu中的逻辑单元(例如203)。用于给定数据处理操作的控制屏障网络可以被配置为加强执行片段之间的关系,协调分布在区块上的执行片段的结束和开始执行的定时,并支持本文描述的静默过程。
[0077]
静默逻辑单元连接到控制总线,在该示例中,该控制总线使用可配置互连(未示出-参见图3)来实现。可以使用配置数据来配置控制总线,以在支持被设计用于执行数据处理操作的区块的特定配置的区块中的静默/屏障逻辑单元之间形成信号路由,包括分配给各个执行片段的多个可配置单元集合。
[0078]
这些可配置单元中的每个可配置单元都包含配置存储装置,该配置存储装置包括存储配置数据的寄存器或触发器集合,配置数据表示运行其被分配到的执行片段的设置或序列,并且可以包括嵌套循环的数目、每个循环迭代器的限制、要为每个阶段执行的指令、操作数的源以及用于输入和输出接口的网络参数。配置数据还可以包括在各种执行片段中定义静默边界的数据。
[0079]
此外,这些可配置单元中的每个可配置单元都包含配置存储装置,该配置存储装置包括寄存器或触发器集合,其存储可用于追踪嵌套循环中的进度或其他状态的状态。配置文件包含表示执行程序的每个组件的初始配置或启动状态的位流。该位流被称为位文件。
[0080]
总线系统包括互连阵列中的可配置单元的链路。阵列级网络中的链路包括一种或多种(在这种情况下为两种)物理数据总线:块级矢量总线(例如128位数据)和字级标量总线(例如32位数据)。例如,交换单元211和212之间的互连221包括具有128位矢量总线宽度的矢量总线互连和具有32位标量总线宽度的标量总线互连。还包括控制总线(见图3),其可以包括可配置互连或专用和可配置互连的组合,该控制总线在由区块的配置文件中的配置位指定的信号路由上承载多个控制位。在一些实施例中,控制总线可以包括与数据总线分开的物理线路。在其他实施例中,可以使用具有分开的协议的相同物理线路或在分时过程
中实现控制总线,并且将其实现为在具有数据总线的共享硬件上执行的虚拟总线。
[0081]
总线可以在传输数据的粒度上不同。在一个实施例中,矢量总线可以携带包括16-字节(=128位)数据的块作为其有效载荷。标量总线可以具有32-位有效负载,并携带标量操作数或控制信息。控制总线可以承载控制握手,诸如令牌和其他信号。矢量和标量总线可以是分组交换的,包括指示每个分组的目的地的报头和其他信息,例如当分组被无序接收时,可用于重组文件的序列号。每个分组报头可以包含标识目的地交换单元的地理坐标(例如,阵列中的行和列)的目的地标识符,以及标识用于到达目的地单元的目的地交换机上的接口的接口标识符(例如,北、南、东、西等)。例如,控制网络可以基于设备中的定时电路进行电路交换。配置加载/卸载控制器可以为每个128位的配置数据块生成报头。报头在报头总线上传输到可配置单元阵列中的每个可配置单元。
[0082]
在一个示例中,128位的数据块在矢量总线上传输,该矢量总线将该块作为向量输入提供给可配置单元。矢量总线可以包括128条有效载荷线标题线集合。报头可以包括每个块的序列id,它可以包括:
[0083]
·
指示数据块是便签式存储器还是配置存储数据的位。
[0084]
·
构成块编号的位。
[0085]
·
指示列标识符的位。
[0086]
·
表示行标识符的位。
[0087]
·
表示组件标识符的位。
[0088]
对于加载操作,配置加载控制器可以按照从n-1到0的顺序将块数目n发送到可配置单元。在该示例中,6个块按照块5-》块4-》块3-》块2-》块1-》块0的最高有效位优先顺序发送。(请注意,此最高有效位优先顺序导致块5分布在来自阵列配置负载控制器的分布序列的第0轮。)对于卸载操作,配置卸载控制器可以将静默的可配置单元中的配置数据、状态寄存器数据和工作存储器中的一项或多项依次写出到存储器。对于加载和卸载操作,在该示例中,在可配置单元中的配置数据存储装置中的配置串行链的移位是从lsb(最低有效位)到msb(最高有效位),或者msb先移出。
[0089]
图2a示出了连接阵列级网络中的元件的示例交换单元。如图2a的示例所示,交换单元可以有8个接口。交换单元的北、南、东和西接口用于交换单元之间的连接。交换单元的东北、东南、西北和西南接口各自用于连接到pcu或pmu实例。每个区块象限中的两个交换单元连接到地址生成单元和合并单元(agcu),地址生成单元和合并单元(agcu)包括多个地址生成(ag)单元和连接到多个地址生成单元的合并单元(cu)。合并单元(cu)在ag之间进行仲裁并处理存储器请求。交换单元的8个接口中的每个接口可以包括矢量接口、标量接口和控制接口,以与矢量网络、标量网络和控制网络通信。
[0090]
在执行配置后的机器的执行片段期间,可以使用阵列级网络上的一个或多个交换单元的矢量总线和(多个)矢量接口,经由一个或多个单元交换机以及单元交换机之间的一个或多个链路将数据发送到可配置单元。
[0091]
在一个实施例中,可配置单元包括保存在配置加载过程中加载或在配置卸载过程中卸载的单元配置文件的配置和状态寄存器。寄存器可以串行链连接,并且可以通过串行链,通过移位过程来加载。在一些实施例中,可以存在并联或串联布置的多于一个串行链。当可配置单元在一个总线周期内接收到例如128位的配置数据时,该可配置单元以每周期1
位的速率通过其串行链移位该数据,其中移位器周期可以与总线周期相同的速率运行。可配置单元需要128个移位器周期才能用通过矢量接口接收的128位数据加载128个配置位。
[0092]
在配置区块之前,可以使用相同的矢量总线,通过一个或多个单元交换和单元交换之间的一个或多个链路,使用阵列级网络上的一个或多个交换单元的矢量总线和(多个)矢量接口,将配置文件或位文件发送到可配置单元。例如,特定于可配置单元pmu 241的单元文件中的配置数据块可以被发送到pmu 241,通过地址生成器ag中的负载控制器与交换单元211的西(w)矢量接口之间的链路220,以及交换单元211的东南(se)矢量接口与pmu 241之间的链路231。控制屏障网络的配置数据可以包括在相关联的可配置单元的配置数据中,或者通过其他配置数据结构提供。
[0093]
可配置单元通过多个存储器接口与存储器相接口。可以使用若干agcu访问每个存储器接口。每个agcu包含可重新配置的标量数据路径,以生成对片外存储器的请求。每个agcu包含fifo(用于组织数据的先进先出缓冲器),用于缓冲来自片外存储器的输出命令、数据和传入响应。
[0094]
为了特定数据处理操作的目的,可以加载配置文件以指定包括efrg、静默/屏障逻辑单元和控制总线的区块的配置,包括可配置单元中的执行片段、互连配置和控制屏障网络配置。用于协调配置文件的加载和卸载的技术在shah等人于2018年11月21日提交的题为configuration load of a reconfigurable data processor(可重新配置数据处理器的配置加载)的共同拥有的美国专利申请第16/197,826号中描述,该专利申请通过引用结合于此,就好像在本文完全阐述一样。
[0095]
图3示出了移除了数据网络的区块的一部分(图2的右上部分),并且示出了控制总线的一部分,包括可用于在静默/屏障逻辑单元之间形成信号路由的可配置互连。阵列的所示部分中的多个可配置单元包括交换机s(例如350)、pmu(例如351)、pcu(例如352)、ag(354)和cu(355)。静默/屏障逻辑单元(例如370)包括在阵列中的可配置单元中。在该示例中,除了交换s和合并单元cu之外的所有可配置单元都包括静默/屏障逻辑单元。在其他示例中,可以利用静默/屏障逻辑单元的不同分布,包括其中逻辑单元连接到阵列中的多于一个可配置单元的示例,以及其中逻辑单元连接到所有可配置单元(例如,包括所示示例中的s和cu类型单元)的示例。如果静默/屏障逻辑单元被连接用于控制信号和令牌的交换,则静默/屏障逻辑单元与阵列中的可配置单元相关联,或者可配置为在可配置单元被分配到的执行片段的操作期间通过配置文件如此连接到可配置单元。
[0096]
可配置互连由与水平导线(例如361)相交的垂直导线(例如360)的栅格示出。交换盒(例如362)由配置数据设置,以将水平导线中的特定线路或线路集合与每个交叉点处的垂直导线互连。同样,每个可配置单元可以包括用于使用可配置互连来路由控制信号的输入和输出(未示出),该可配置互连可以被配置为连接到水平和垂直导线中的特定线路。
[0097]
在该实施例中,每个静默/屏障逻辑单元(例如370)包括多个输入和输出(例如371),其可配置用于连接到互连的水平导线中的特定线路。在该图示中,可配置互连中的静默/屏障逻辑单元之间的连接是利用可配置互连中的水平导线进行的。该图示不建议对可以利用静默/屏障逻辑单元中的或与静默/屏障逻辑单元相关联的可配置互连和控制网络进行的可配置连接的实现和分布进行任何限制。
[0098]
通常可以使用具有连接到存储静默/屏障逻辑单元的配置文件的位的寄存器的控
制输入的通过门来实现可配置交换。在一些实施例中,配置形成在静默/屏障逻辑单元的输入和输出之间,在数据处理操作或执行片段的整个执行过程中持续的静态路由,以建立控制屏障网络,其实现为支持静默和其他特定数据处理操作并支持对分布在区块的可配置单元之间的执行片段的控制以支持数据处理操作。在其他实施例中,配置可以形成动态路由,该动态路由根据程序的执行级而改变,或者作为控制判断(if-then-else构造)的结果,或者表示执行片段的依赖于控制流的排序的其他动态、依赖于输入的操作。
[0099]
可以将执行片段分配给包括一个或多个可配置单元的efrg,一个或多个可配置单元定义可配置单元集合,其中该集合可以具有在空间上分布在区块上的多个成员。由于可变时延、在每个单元处的可变作业、可变依赖等,空间分布可以导致efrg中的单元之间的异步操作。
[0100]
例如,可以将执行片段分配给包括一个或多个pmu和一个或多个pcu的一组可配置单元(例如380)。此外,执行片段可以被分配给可配置单元集合,包括一个或多个ag或agcu、一个或多个pmu以及一个或多个pcu。在可配置单元集合中的可配置单元中,一些单元被配置为输入的生产者,而其他单元被配置为消费者。例如,分配给执行片段的一个可配置单元集合可以包括充当生产者的两个pmu,向充当消费者的一个pcu提供输入,其输出可以存储在第三pmu中或存储在pcu上的存储器中。出于静默的目的,静默逻辑和控制屏障网络可以被配置为链接分配给特定执行片段的每个集合中的可配置单元。
[0101]
图4是示出诸如模式计算单元(pcu)的示例可配置单元400的框图。可配置单元阵列中的可配置单元包括配置数据存储装置420(例如串行链),用于存储单元文件,该单元文件包括特定于对应的可配置单元和相关联的静默/屏障逻辑单元475的配置数据的多个块(或其他大小的子文件)。可配置单元阵列中的每个可配置单元包括通过线路422连接到配置数据存储装置420的单元配置加载/卸载逻辑440,以执行单元配置加载过程。单元配置加载过程包括经由总线系统(例如,矢量输入)接收特定于可配置单元的单元文件的块,并将接收到的块加载到可配置单元的配置数据存储装置420中。
[0102]
在该示例中,多个可配置单元中的可配置单元中的配置数据存储装置420包括锁存器的串行链,其中锁存器存储控制可配置单元中的资源的配置的位。配置数据存储装置中的串行链可以包括用于配置数据的移位寄存器链和用于串联连接的状态信息和计数器值的第二移位寄存器链。
[0103]
可配置单元可以使用三个相应的输入和输出(i/o)集合与标量、矢量和控制总线接口:标量输入/输出、矢量输入/输出和控制输入/输出。标量i/o可用于通信单字数据(例如32位)。在诸如在单元配置加载过程中接收配置数据、以及在配置之后跨多个pcu之间的长流水线在操作期间发送和接收数据的情况下,矢量i/o可用于传送数据块(例如128位)。控制i/o可用于传送控制信号,诸如可配置单元的执行开始或结束。控制块470接收控制输入,并由控制块470提供控制输出。
[0104]
使用矢量fifo块460中的矢量fifo来缓冲每个矢量输入,矢量fifo块460可以包括一个或多个矢量fifo。每个标量输入使用标量fifo 450进行缓冲。使用输入fifo可使数据生产者和消费者之间的时序解耦,并通过使其对输入延迟失配具有鲁棒性来简化可配置单元间的控制逻辑。
[0105]
输入配置数据410可以作为矢量输入被提供给矢量fifo,然后被传送到配置数据
存储装置420。可以使用矢量输出从配置数据存储装置420卸载输出配置数据430。
[0106]
该阵列使用菊花链完成/静默就绪总线来指示加载/卸载命令何时已经完成,并传送静默就绪信号,如下所述。主agcu通过菊花链命令总线向可配置单元阵列中的可配置单元中的可配置单元发送静默以及程序加载和卸载命令(从s0转换到s1,图10)。如图4的示例所示,菊花链完成/静默就绪总线491和菊花链命令总线492连接到菊花链逻辑493,菊花链逻辑493与单元配置加载/卸载逻辑440通信。菊花链逻辑493可以包括加载/卸载完成和静默就绪状态逻辑,如下所述。菊花链完成总线在下面进一步描述。命令和完成/静默就绪总线的其他拓扑显然也是可能的,但在此不作描述。
[0107]
在框480中,该示例中的可配置单元包括多个可重新配置数据路径。可配置单元中的数据路径可以组织为多阶段(阶段1

阶段n)、可重新配置的simd(单指令、多数据)流水线。推入可配置单元中的配置串行链的数据块包括用于可配置单元中的每个数据路径的每个阶段的配置数据。在框480中,配置数据存储装置420中的配置串行链通过线路421连接到多个数据路径。
[0108]
所示示例中的pcu被设计成执行数据处理操作的部分执行片段,其可以包括应用中的单个的、最里面的并行模式,或者适合于使用静默和控制屏障网络进行控制的其他模式。pcu数据路径可以组织为阶段级、可重新配置的simd流水线。这种设计使每个pcu能够实现高计算密度,并利用跨通道的循环阶段并行性和跨阶段的流水线并行性。每个simd通道的每个阶段(阶段1

阶段n)可以由功能单元(fu)和相关联的流水线寄存器组成。例如,fu可以执行32位字级算术和二进制运算,包括对浮点和整数运算的支持。由于单个流水线级中的fu在simd中操作,因此在示例实施例中,每个阶段仅需要单个配置寄存器。每个fu的结果被写入其相关寄存器。
[0109]
每个通道中的流水线寄存器可以跨流水线级链接在一起,以允许活跃值在相同通道内的阶段之间传播。可以使用两种类型的pcu内网络捕获fu之间的跨通道通信。简化树网络,其允许将值从多个通道减少到单个标量,以及移位网络,其允许使用pr作为跨级的滑动窗口,以利用模板应用中的重用。两个网络都使用pr内的专用寄存器来最小化硬件开销。
[0110]
每个矢量i/o(例如,矢量fifo 460)允许在pcu中的每个通道传送一个单词,并且在诸如读取和写入pmu中的便签簿以及在多个pcu之间的长管道上传输中间数据的情况下使用。使用输入fifo使数据生产者和消费者解耦,并通过使其对输入延迟不匹配具有鲁棒性来简化pcu间控制逻辑。fifo 450、460可以生成连接到控制块470和单元中的其他电路的状态信号,诸如fifo空信号或fifo非空信号,并且可用于指示执行片段的状态,诸如所需的输入数据在fifo中是否可用。
[0111]
控制i/o(cntl输入、cntl输出)连接到控制块470,并用于传送控制信号,诸如pcu的执行开始或结束,或指示反压力。
[0112]
可重新配置的计数器链471生成模式迭代索引以及状态和控制信号,其可用于指示执行片段的状态并可用于协调可配置单元的元件之间的执行。例如,计数器链471可以生成计数器完成信号,该信号可以用于指示执行片段的状态,诸如执行片段的周期数目(诸如循环中的迭代),或者包括迭代次数的循环、静默边界以及执行片段中的循环是否完成(执行了循环的所有周期)。
[0113]
当控制块470启用其中一个计数器时,可以启用pcu中执行片段的执行。根据应用
的控制和数据依赖性,控制块可以配置为组合来自本地fifo和全局控制输入的多个状态信号,以触发pcu执行。可以使用用于状态机的可重配置组合逻辑和可编程加减计数器来实现控制块470。
[0114]
在该示例中,在可配置单元中包括静默/屏障逻辑475。静默/屏障逻辑475可以是控制块470的一部分,或者实现为设备上的单个块。静默/屏障逻辑475耦合到控制输入和控制输出。此外,静默/屏障逻辑475耦合到控制块470和计数器链471,用于交换状态信号和控制信号,以支持如上所述配置的阵列宽静默逻辑和控制屏障网络。
[0115]
模式存储器单元(例如pmu)可以包含与用于地址计算和其他标量计算的可重配置标量数据路径耦合的便签式存储器以及pcu中使用的总线接口。pmu可用于在整个可重新配置单元阵列中分布片上存储器。在一个实施例中,pmu中的存储器内的地址计算在pmu数据路径上执行,而核心计算在pcu内执行。pmu还可以包括静默/屏障逻辑单元,该静默/屏障逻辑单元被配置为与pmu的元件交换状态和控制信号,并且可用于静默并启用pmu中的执行片段。此外,该示例中的地址生成器ag还可以包括静默/屏障逻辑单元,该静默/屏障逻辑单元被配置为与ag的元件交换状态和控制信号,并且可用于静默并使能ag中的执行片段。
[0116]
图5示出了静默/屏障逻辑单元的示例,该静默/屏障逻辑单元可在可配置单元的阵列中使用,以形成本文所述的可配置控制屏障网络。使用如图5所示的多个逻辑单元,在阵列中的可配置单元中或与之相关联,可以递归地构建控制屏障网络以支持复杂的efrg。图5中的示例例如可用作图4的静默/屏障逻辑475。图5的静默/屏障逻辑单元包括连接到控制总线(图3的可配置互连)的输入(例如501、551、557)和输出(例如502、561)和相关联的可配置单元,诸如上述示例的pcu、pmu、ag。
[0117]
静默/屏障逻辑单元包括令牌存储装置,在该示例中该令牌存储装置包括多个递增/递减计数器udc(例如,510)。在其他实施例中,不同类型的锁存器,诸如置位/复位sr锁存器等,可用于实现令牌存储装置。在其他实施例中,可以使用fifo缓冲器的各种实现来实现令牌存储装置。每个udc具有递增输入(例如511)和递减输入(例如512)。递增输入可以用于将udc中存储的逻辑0更改为逻辑1,或者换言之,用于设置令牌存储装置中的值。递减输入可用于将存储在udc中的逻辑1更改为逻辑0,或者换言之,用于重置令牌存储装置中的值。udc可以配置为一位计数器或多位计数器。
[0118]
令牌存储装置耦合到可配置输入电路,在该示例中,可配置输入电路包括多个可配置交叉开关。可配置输入电路的状态交叉开关550具有输入551,其连接到可用于指示阵列中可配置单元中的执行片段的状态的信号。在该示例中,状态信号可以包括来自相关联的可配置单元中的多个计数器的静默边界计数器完成信号,其可以用于指示执行片段的状态。状态交叉开关550包括输出552、553,其可连接到递增交叉开关530和递减交叉开关540。
[0119]
可配置输入电路的递增交叉开关530向令牌存储装置中的每个udc提供递增信号,并且具有连接到控制总线的可配置互连的输入557和连接到状态交叉开关550的输出的输入。因此,每个udc具有基于来自状态交叉开关550和来自可配置互连输入557的输出的可配置选择的递增信号。递增交叉开关还具有连接的输入,以在线路552上接收由屏障逻辑520生成的屏障令牌,如下所述。
[0120]
可配置输入电路的递减交叉开关540向令牌存储装置中的每个udc提供递减信号,并且具有连接到控制总线的可配置互连的输入558(或多个输入)和连接到状态交叉开关
550的输出552、553的输入。因此,每个udc具有基于来自状态交叉开关550和来自可配置互连输入558的输出的可配置选择的递减信号。递减交叉开关还具有连接的输入,以在线路552上接收由屏障逻辑520生成的屏障令牌,如下所述。
[0121]
静默/屏障逻辑单元包括启用逻辑500(and树),其包括可配置使能掩码503,其基于令牌存储装置中的信号和来自相关联的可配置逻辑单元的状态信号的可配置组合,在线路502上生成用于连接到相关联的可配置逻辑单元的使能信号。例如,可以将线路502上的使能信号提供给图4的控制块470,控制块470可以包括利用线路502上的使能信号为pcu生成控制信号,以启动和停止执行片段的逻辑。使能逻辑500的输入包括线路501上来自相关联的可配置单元的状态信号,诸如fifo非空信号等。此外,使能逻辑500的输入可以包括令牌存储装置的输出(例如513)。因此,可以基于令牌存储装置的输出的可配置组合来生成线路502上的使能信号。还可以基于令牌存储装置的输出和来自相关联的可配置单元的状态信号的可配置组合来生成线路502上的使能信号。
[0122]
静默/屏障逻辑单元包括屏障令牌逻辑520,屏障令牌逻辑520包括可配置屏障掩码521,其基于存储在令牌存储装置中的线路513上的信号的可配置组合在线路522上生成屏障令牌。线路522上的屏障令牌作为反馈信号被反馈给递减交叉开关540,例如,该信号可以用于复位令牌存储装置。此外,在该示例中,线路522上的屏障令牌被用作递增交叉开关530的输入,可用作设置令牌存储装置中的值的条件。根据配置文件,屏障令牌可以充当生产者屏障(p_barrier)令牌或消费者屏障(c_barrier)令牌。
[0123]
静默/屏障逻辑单元包括输出交叉开关560。在该示例中,输出交叉开关的输入包括线路522上的屏障令牌,包括p_barrier或c_barrier,以及由状态交叉开关550输出的状态信号。在其他实现中,也可以将其他输入提供给输出交叉开关560。输出交叉开关可配置为将来自线路522的屏障令牌和其他信号应用于可配置互连上的选择的线路561。可配置互连上的选择的线路561可以被配置在信号路由中,该信号路由提供屏障令牌作为可配置逻辑阵列的控制屏障网络中的另一静默/屏障逻辑单元的输入(例如,输入557)。可配置互连上的选定线路561可以被配置在信号路由中,该信号路由提供来自可配置单元中的一个可配置单元的状态信号(例如,信号552、553),作为可配置逻辑阵列的控制屏障网络中的另一静默/屏障逻辑单元的输入(例如,输入557)。
[0124]
利用如图5所示的静默/屏障逻辑单元,屏障操作如下工作。每个单元可以被配置为跨所有信号实现屏障,其可以递增udc。这包括来自关联可配置单元外部的控制总线的外部控制输入,以及来自关联可配置单元内部的内部状态信号,如计数器完成信号。为了在这些信号的子集上实现屏障,配置文件在令牌存储装置中为子集中的每个信号保留一个零初始化的udc。交叉开关被配置为将所需的信号路由到它们各自的udc,其经由递增交叉开关530递增输入。接下来,配置屏障掩码以选择保留的udc。掩码选择参与and树的udc。and树的输出是1位屏障令牌,例如,当掩码中的所有udc都具有大于零的值时,该令牌变为高电平。屏障令牌可以被配置为通过选择递减交叉开关540处的线路522来递减参与屏障的所有udc。这可用于确保每个输入令牌集合的屏障信号仅在一个周期内为高电平,从而产生一个输出令牌。在此配置中,屏障令牌用于复位令牌存储装置。在其他实施例中,不同的信号可以用于该目的。此外,屏障令牌可以用于仅复位令牌存储装置中的一位,或仅复位其中的一些位,而不是所有位。所得到的屏障令牌通过对“输出”交叉开关560进行编程而在控制输出
上发出。然后可以根据程序的需要使用该令牌,例如输入到下一级的计算,或者输入到下一屏障节点等。在一些情况下,屏障令牌可能还必须被本地发送到该节点。为了便于该用例,屏障令牌也是可以递增其他udc的递增xbar 530的条目。
[0125]
这为软件提供了最大的灵活性,以实现靠近屏障令牌消费者的屏障,以更好地利用资源。
[0126]
来自可配置单元阵列中的多个源的控制令牌通常需要在屏障处同步,其中在从每个源接收一个令牌之后产生单个令牌(控制脉冲),从而允许递归和分层控制网络。
[0127]
图6示出了静默逻辑,该静默逻辑在逻辑信令意义上可以是阵列中的可配置单元(或更一般地,处理单元)中的一个可配置单元的一部分或与之相关联。在一个示例中,静默逻辑与图4所示的屏障逻辑、控制命令菊花链和完成/静默菊花链电路耦合。图6所示的静默逻辑包括偏斜计数器。偏斜计数器可以是用于追踪生产者和消费者之间的循环迭代偏斜或静默边界偏斜的专用计数器。在具有深流水线的循环中,或者当生产者和消费者在物理上间隔开时,生产者可能会在消费者之前执行或运行,从而造成偏斜。
[0128]
在包括多个可配置单元的efrg中,qb可以由分布在efrg中的一些可配置单元中的诸如可配置状态的事件的组合来定义。在给定的实现中,efrg的一些可配置单元可以被配置为生产者,而一些可配置单元可以被配置为消费者。用于执行片段的qb可以包括事件,该事件是efrg中的生产者处的不同事件的函数。efrg中的消费者可以异步操作,并响应或使用生产者提供的信号和数据。消费者处的事件可以发信号通知来自生产者的信号或数据的消费。
[0129]
在图6中,指示qb的生产者处的事件的信号被表示为p_qb_x,其中x是事件信号源的指示符,并且在所示示例中为从0到n。可以生成p_qb_x信号,如图7所示。在该示例中,p_qb_x信号的可配置组合用于生成信号ef_qb,该信号指示在efrg中检测到qb,并与静默控制信号相结合来生成信号p_barrier。因此,静默逻辑响应于efrg中的至少一个处理单元中的循环计数器来检测静默边界。如下面的图8所示,基于qb的消费者处的事件组合(表示为c_qb_x),在与efrg中的消费者相关联的静默/屏障逻辑中产生信号c_barrier,其中x是事件信号源的指示符,并且在所示示例中为从0到m。根据efrg的特定配置,m和n可以相同或不同。
[0130]
在该实现中使用p_barrier信号以使efrg中的生产者能够在qb之后继续。如果没有声明,那么生产者就不能超越qb。在生产者开始下一次qb之前,消费者可能无法完成给定的qb,这导致了efrg内部出现扭曲的可能性。
[0131]
在基本操作中,图6中的偏斜计数器由p_barrier信号递增,并由c_barrier信号递减。因此,它追踪efrg的生产者和消费者之间的静默边界(由p_barrier表示)的数目。偏斜计数器还可以用作检测从生产者到消费者的飞行中的分组或交易的机制。
[0132]
在所示逻辑中,来自阵列中的主agcu的命令agcu_cmd通过命令菊花链被递送到解码器601。如在运行期间从外部处理器上的主机控制程序接收的信号所指示的,响应于源自阵列外部的外部事件,主agcu可以使用菊花链来分配该命令。此外,主agcu可以响应于源自阵列内部的内部事件,使用菊花链来分配该命令,该内部事件诸如可以由阵列的当前配置实现的机器生成的信号来指示,并且在控制总线上或以其他方式递送到主agcu。对于静默命令,触发器602被设置为存储标志q_rcv以开始静默操作。可以通过多种方式来复位该标
志,包括例如响应于来自主agcu的任何随后接收到的不是静默命令的命令或者通过使用控制屏障逻辑中的令牌来生成复位信号。触发器602的输出连接到门603,其启用包括多路复用器604和配置存储器605的静默就绪菊花链逻辑。配置存储装置605存储静默参与q_pcpt标志。为与参与静默操作所需的静默逻辑相关联的可配置单元设置静默参与标志。例如,在静默操作中,可能只需要充当生产者的可配置单元参与。静默参与标志的使用使得能够有效地利用配置资源以达到静默的目的。
[0133]
从逻辑电路向门603提供第二输入,该逻辑电路追踪跨越静默边界的执行片段的进度,该静默边界被分配给相应的可配置单元集合。在该示例中,如元素633所示,当偏斜计数器(偏斜udc 632)的输出等于零时提供第二输入。
[0134]
触发器602还被提供为门630的反相输入,使得逻辑能够追踪执行片段的执行进度。门630的第二输入是屏障掩码与and树610的输出ef_qb,其可以使用图5中所示的元件520和521来实现。屏障掩码与and树610可以被配置为生成ef_qb信号。在图6中的简化图示中,屏障掩码与and树610的输入包括令牌存储装置的元素,其被配置为接收udc 620-622中的信号p_qb_0至p_qb_n,其用信号通知针对相关联的生产者可配置单元集合的执行片段静默边界。此外,令牌存储装置可以包括例如在主agcu中由主状态机递送到阵列中的可配置单元的udc 611中的开始令牌,以及其他令牌和控制信号。屏障掩码与and树610可以被配置为响应于特定执行片段所需的生产者的配置静默逻辑而生成ef_qb作为门630的输入。
[0135]
门630的输出作为输入提供给门631,门631的输出被施加到偏斜udc 632的递增输入。偏斜udc 632的递减输入由控制输入交叉开关640提供,控制输入交叉开关640被配置用于静默的目的,以在控制屏障网络的线路641上接收消费者屏障令牌c_barrier。
[0136]
当偏斜udc 632满时,声明禁用门631的信号。在各种实施例中可以固定或可配置的偏斜udc 632的大小以执行片段的静默边界为单位设置最大偏斜。在某些配置中,可以使用这种类型的逻辑在不同于静默边界的偏斜单元上控制单元间的偏斜。
[0137]
门631的输出还作为反馈提供给令牌存储装置udc 620-622和611,以清除或递减存储的值。此外,门631的输出被提供给控制输出交叉开关650,控制输出交叉开关650可以被配置为在控制屏障网络的线路651上,针对分配给相关联的可配置单元集合的执行片段输出作为p_barrier的信号。
[0138]
在操作中,当充当生产者的可配置单元到达执行片段中的静默边界时,p_qb_x信号被施加到令牌存储装置。然后,当所有生产者都施加了p_qb_x时,只要触发器602的输出为低电平,则在线路651上施加生产者屏障信号p_barrier,并且只要其未满,就递增偏斜udc 632。当在线路641上接收到c_barrier时,递减偏斜udc 632。因此,偏斜udc 632可用于追踪跨异步动作的可配置单元集合之间的静默边界的执行片段的进度。
[0139]
只要偏斜udc 632未满,并且触发器602的输出为低电平,则门631的输出等于ef_qb信号,并且生成p_barrier信号。该信号使得生产者能够超越ef_qb信号发出的qb到达下一片段的根。如果触发器602的输出为高电平,则门631的输出被设置为逻辑0,并且p_barrier不被声明。这防止了生产者超出ef_qb发出的qb,从而允许发生静默。
[0140]
当触发器602的输出为高电平时,逻辑停止声明线路651上的p_barrier,并且停止递增偏斜udc 632。一旦偏斜udc递减到零(633),同时门603由触发器602的输出被使能,并且q_pcpt位被置位,则静默就绪q_rdy信号在线路652上从逻辑0翻转到逻辑1。在该实施例
中,基于来自菊花链中的阵列中的前一个单元的静默就绪q_rdy信号的逻辑组合,可以将用于执行片段的q_rdy信号递送到完成/静默菊花链上的阵列静默控制器。如果q_pcpt位未被置位,则q_rdy信号保持为逻辑1,以使菊花链在参与和非参与的可配置单元之间保持连接。
[0141]
图7示出了与被配置为生产者的可配置单元相关联的逻辑,该可配置单元消费来自线路651的p_barrier令牌,在线路741上为在相关联的可配置单元上执行的执行片段部分生成生产者静默边界信号p_qb_x。当检测到在由or树和掩码750的配置以及图7中的计数器760-762表示的每个执行片段资源组中用作生产者的可配置单元的配置状态集时,生成p_qb_x信号。该逻辑在线路712上产生使能信号,以越过执行片段的静默边界前进到ef的下一片段的根,或者如果它是ef中的最后qb,则绕到ef的起始根。因此,在qb之后的ef的片段的根成为ef的静默点。
[0142]
在该示例中,p_barrier是用于执行片段的efrg的生产者组件之间的同步屏障。特定生产者处的ef的每个循环可以包括至少一个p_qb_x。生产者信号p_qb_x连接在一起以形成控制流屏障,如图6所示。使用p_qb_x信号参与p_barrier生成的客户端组件被配置为在编译时参与静默过程。
[0143]
在所示实施例中,可配置单元包括或可以被配置为连接到计数器链,该计数器链包括计数器cntr_0至cntr_n(760-762),其可以指示组件的状态。计数器链中的计数器可以位于设备上的任何位置,从该位置可以将输出递送到图7的逻辑。在一些实施例中,计数器链被实现为可配置单元的一部分。计数器链输出被施加到or树和掩码750,其可以由配置文件设置,以在计数器链中计数器的状态的任何组合上生成执行片段静默边界信号p_qb。or树与掩码750可被配置为选择计数器和计数器状态的组合以或在一起,或以其他方式进行逻辑组合,以用信号通知对应于静默边界的状态。例如,静默边界信号p_qb可以在循环完成时设置,或者在循环的可分割部分设置。例如,具有大量n次迭代的循环可以被划分为n/m个静默边界,每个边界多达m次迭代。该技术不要求m是n的除数。最终静默边界可以具有小于m的剩余迭代次数。该除法和余数循环迭代的处理可以使用可配置的or树或其他类型的逻辑来实现。
[0144]
将边界信号p_qb作为输入施加到递减交叉开关730,递减交叉开关730耦合到qb udc令牌存储装置711。qb udc令牌存储装置711的递增输入由递增交叉开关720施加,递增交叉开关720接收可配置单元是其成员的efrg的p_barrier。qb udc令牌存储装置711可以是由控制屏障网络中的控制信号和屏障信号馈送到启用掩码与and树710的许多令牌存储装置中的一个令牌存储装置,其可以使用图5的元件500和503来实现。启用掩码与and树710的输出是相关联的可配置单元的使能信号,以使执行能够在下一个静默边界之前在片段的根恢复。efrg中的所有生产者可以通过相同的p_barrier信号来启用,以管理跨成员可配置单元的efrg的同步。
[0145]
边界信号p_qb还被用作控制输出交叉开关740的输入,以将p_qb_x信号作为p_qb_x信号中的一个p_qb_x信号提供给图6中描述的逻辑。
[0146]
图8示出了屏障逻辑的实现,以在与充当efrg中的消费者的可配置单元相关联的静默逻辑中产生c_barrier令牌。c_barrier令牌是执行片段中消费者组件之间的同步屏障。充当消费者的每个可配置单元可以被配置为使得在单元中执行的ef的每个片段(诸如循环或循环部分)可以包含静默边界上的单个c_qb_x,其对应于片段的出口点。c_qb_x信号
可以在检测到在每个执行片段资源组中用作消费者的可配置单元的配置状态集时,以参考图7所示的p_qb_x信号描述的方式或者以适合于消费者功能的等效方式来生成。
[0147]
在该示例中,令牌存储装置810-812从与充当执行片段中的消费者的可配置单元相关联的静默逻辑接收c_qb_x静默边界信号。
[0148]
掩码与and树800(其可以使用图5的元件520和521实现)被配置为在检测到配置的c_qb_x信号组合时在线路801上生成用于efrg的c_barrier令牌。线路801上的c_barrier令牌被提供给图6所示的静默逻辑部分。
[0149]
响应于线路820上的信号(例如来自线路801的c_barrier信号)或其他可配置信号,令牌存储装置810-812被递减或复位。
[0150]
图6-图8中所示的电路是耦合到控制总线的静默逻辑的逻辑单元,该控制总线可被配置为在逻辑单元之间的控制屏障网络中形成信号路由。控制屏障网络包括具有连接到控制总线和处理单元阵列的输入和输出的多个屏障逻辑单元。屏障逻辑单元包括耦合到efrg的第一逻辑单元(例如,图6-7),其可配置为消费来自efrg中通知静默边界的输入的生产者的信号,并且基于来自生产者的信号来生成生产者屏障令牌;耦合到efrg的第二逻辑单元(例如,图8),可配置为消费来自输入的消费者的信号,其通知针对静默边界的efrg的输入的使用,并且基于来自消费者的信号来生成消费者屏障令牌。静默逻辑包括可配置成连接到控制总线的电路,并且包括可配置为接收生产者屏障令牌和消费者屏障令牌以追踪生产者和消费者之间的执行片段的进度差异的偏斜计数器。
[0151]
图9是cgra(粗粒度可重配置架构)处理器的组件的简化框图,其中cgra处理器具有2个区块(区块1、区块2)。区块包括连接到总线系统的可配置单元的阵列,在该示例中包括如图2和图3所示的阵列级网络。总线系统还包括将区块连接到外部i/o接口905(或任何数目的接口)的顶层网络。在其他实施例中,可以利用不同的总线系统配置。在本实施例中,每个区块中的可配置单元是阵列级网络上的节点。
[0152]
两个区块中的每个区块都具有4个agcu(地址生成和合并单元)(例如,magcu1、agcu12、agcu13、agcu14)。agcu是顶层网络上的节点和阵列级网络上的节点,并且包括用于在每个区块中的顶层网络上的节点和阵列级网络上的节点之间路由数据的资源。
[0153]
在该示例中,顶层网络上的节点包括一个或多个外部i/o接口,包括接口905。到外部设备的接口包括用于在顶层网络上的节点和连接到接口的外部设备(诸如大容量存储器、主机处理器、其他cgra处理器、fpga设备等)之间路由数据的资源。
[0154]
在该示例中,区块中的agcu中的一个agcu被配置为主agcu,其包括阵列静默控制器351和区块的配置加载/卸载控制器。在其他实施例中,每个区块可以实现多于一个阵列静默控制器351,并且可以通过分布在多于一个agcu之间的逻辑来实现一个阵列静默控制器351。
[0155]
magcu1包括用于区块1的阵列静默控制器351,并且magcu2包括用于区块2的阵列静默控制器351。在其他实施例中,阵列静默控制器351可以被设计用于多于一个区块的静默控制。在其他实施例中,可以设计一个以上的阵列静默控制器来用于单个区块的配置。此外,阵列静默控制器351可以在系统的其他部分中实现,包括作为顶层网络和阵列级网络上的独立的节点。
[0156]
顶层网络使用彼此连接的顶层交换机(911-916)以及顶层网络上的其他节点(包
括agcu)和i/o接口905来构建。顶层网络包括连接顶层交换机的链路(例如l11、l12、l21、l22)。数据以分组的形式在链路上的顶级交换机之间传输,并从交换机传输到连接到交换机的网络上的节点。例如,顶层交换机911和912通过链路l11连接,顶层交换机914和915通过链路l12连接,顶层交换机911和914通过链路l13连接,顶层交换机912和913通过链路l21连接。链路可以包括一个或多个总线和支持控制线路,包括例如块宽总线(矢量总线)。例如,顶层网络可以包括数据通道、请求通道和响应通道,这些通道可协同操作,以便以类似于axi兼容协议的方式传输数据。参见axi和ace协议规范,arm,2017。
[0157]
顶层交换机可以连接到agcu。例如,顶层交换机911、912、914和915分别连接到区块,即区块1中的magcu1、agcu12、agcu13和agcu14。顶层交换机912、913、915和916分别连接到区块,即区块2中的magcu2、agcu22、agcu23和agcu24。
[0158]
顶层交换机可以连接到一个或多个外部i/o接口(例如,接口905)。执行运行时程序的主机可以通过顶层网络与阵列静默控制器和配置加载/卸载控制器通信。
[0159]
图10示出了可用于控制可配置单元中的单元配置加载过程的状态机的一个示例。配置加载过程可以由例如主agcu中的配置加载逻辑来控制,并且可以与阵列静默控制器耦合。通常,单元配置加载过程在一个总线周期内从总线系统接收特定于可配置单元的单元文件的第一块(或子文件),然后在接收到单元文件的第二块之前,在以与总线周期相同的速率发生的后续移位器周期期间,开始将接收到的第一块推入串行链。当在稍后的总线周期中从总线系统接收到特定于可配置单元的单元文件的第二块时,该过程在将较早接收的块推入串行链之后的周期期间,开始将接收到的第二块推入串行链。在配置加载过程的一些或所有轮次中,在多个有序块中的第二块(按照单元文件的块的顺序紧随其后)被可配置单元接收之前,单元配置加载过程可以在可配置单元中消费第一块。
[0160]
图10的状态机包括六个状态s0到s5。在状态s0(空闲),单元配置加载过程等待来自主agcu中的配置加载/卸载控制器的配置加载/卸载命令。配置加载/卸载控制器负责将配置数据从/向片外存储器(140,图1)和向/从可配置单元的阵列(190,图1)加载和卸载配置数据。当在配置加载/卸载控制器处接收到加载命令时,单元配置加载过程进入状态s1。
[0161]
在状态s1(等待静默),状态机在加载或卸载命令之后等待静默状态。在状态s1中,状态机可以执行在此描述的静默过程,包括分配静默命令。当静默状态建立时,多个数据路径中的功能触发器被禁用,因此功能触发器不会循环,并且标量输出、矢量输出和控制输出被关闭,因此输出不会驱动任何负载。可以使用上述阵列静默控制器和静默逻辑来感应阵列的静默状态。如果已经接收到加载命令,则在达到静默状态之后,单元配置加载过程进入状态s2。当接收到卸载命令时,则在达到静默状态之后,单元配置加载过程进入状态s4。
[0162]
在状态s2(等待输入有效),单元配置加载过程等待输入fifo(1110,图11)变为有效。当输入fifo变为有效时,输入fifo已经经由总线系统接收到配置文件的配置数据块。例如,配置数据块可以包括在总线系统的矢量网络上接收的128位负载数据,并且矢量网络具有128位的矢量总线宽度。当输入fifo变为有效时,单元配置加载过程进入状态s3。
[0163]
在状态s3(加载移位),128位的配置数据块首先在一个时钟周期内从输入fifo出列,然后128位的配置数据块在128个时钟周期内移位到输入移位寄存器(1120,图11)。输入移位寄存器可以具有与配置数据块相同的长度(例如128位),并且将配置数据块移位到输入移位寄存器所需的移位器时钟周期的数目(例如128)与配置数据块的长度相同。如上所
述,在一些实施例中,移位器时钟和总线时钟(或总线周期)可以以相同的速率运行。
[0164]
图11是可配置单元中的配置存储的逻辑表示。在该实施例中,可配置单元中的配置数据存储装置(420,图4)包括配置串行链,包括第一移位寄存器链1130和第二移位寄存器链1140。第一移位寄存器链1130包括寄存器或锁存器集合。第二移位寄存器链1140包括另一寄存器或锁存器(触发器)集合。在本实施例中,第一移位寄存器链和第二移位寄存器链串联以形成单链。
[0165]
配置文件包括用于可配置单元阵列中的多个可配置单元中的每个可配置单元的多个配置数据块。配置数据块表示各个可配置单元的初始配置或开始状态。该系统中的配置加载操作是在可配置单元阵列中设置配置数据的单元文件以允许所有可配置单元执行程序的过程。
[0166]
第一移位寄存器链1130中的寄存器集合可以表示运行程序的设置或序列,包括对包含寄存器的可配置单元的操作的定义。这些寄存器可以记录嵌套循环的数目、每个循环迭代器的限制、静默边界、要为每个阶段执行的指令、操作数的来源以及输入和输出接口的网络参数。第二移位寄存器链中的寄存器集合可以包含关于加载在分配给阵列的执行片段的静默边界上的可配置单元中的程序的运行状态的数据。
[0167]
如图11的示例所示,第一移位寄存器链1130和第二移位寄存器链1140串联连接,使得第一移位寄存器链的msb(最高有效位)连接到第二移位寄存器链的lsb(最低有效位)。加载信号或卸载信号可以充当耦合到第一移位寄存器链的lsb和第二移位寄存器链的lsb的移位使能信号,以控制第一移位寄存器链和第二移位寄存器链上的加载/卸载操作。输入fifo 1110通过选择器1170耦合到输入移位寄存器1120。当加载信号有效时,选择器1170将输入移位寄存器1120连接到配置数据存储装置的输入端(第一移位寄存器链1130的lsb)。
[0168]
当加载信号有效时,输入移位寄存器1120中的配置数据可以移位到配置串行链中的第一移位寄存器链1130和第二移位寄存器链1140中。这里,加载信号可以用作输入移位寄存器、第一移位寄存器链和第二移位寄存器链的使能信号。加载操作可以重复,直到可配置单元的所有配置数据块都被加载到该可配置单元中的配置数据存储装置中。当串行链的长度不同于整数个块(或子文件)的长度时,可以用差值填充序列中的第一个块,并且当移入最后一个块时,填充位将移出到链的末尾。例如,可配置单元中的配置数据存储装置可以存储大小为1400位的单元文件。单元配置加载过程可以加载整数n个块。在该示例中,n=11,并且n个数目的块包括块5、块4、块3、块2、块1和块0。矢量总线具有128位的矢量宽度,配置数据块具有128位,并且可以在一个总线时钟周期内将块发送到可配置单元。n个块的大小为n
×
128=11*128=1408位,其包括8个填充位以匹配1408位的单位文件大小。
[0169]
为了从错误中恢复,卸载操作可以检查每个可配置单元的状态。卸载操作可以保存每个可配置单元在重启所需的静默边界上的执行状态,并使应用能够在发生错误时重启。它还允许出于调试目的保存或传输可配置单元的状态。需要保存的状态至少包括第一或第二移位寄存器部分的内容,并且可选地包括pmu存储器的内容。程序卸载还可能需要卸载所有第一和第二移位寄存器的状态。
[0170]
输出fifo 1160耦合到输出移位寄存器1150,输出移位寄存器1150进而耦合到配置数据存储装置的输出(第二移位寄存器链1140的msb)。对于卸载操作,当卸载信号有效时,可以将第二移位寄存器链1140和第一移位寄存器链1130中的配置数据移位到输出移位
寄存器1150中。当输出fifo 1160有效时,可以在一个时钟周期内将输出移位寄存器1150中的配置数据(例如128位)插入到输出fifo 1160中。卸载操作可以重复,直到可配置单元中的配置数据存储装置中的所有配置数据块都被卸载到输出fifo中。具有静默的程序卸载还可以用于实现多程序设计环境和实现多任务环境,其中高优先级程序可以在低优先级程序的静默边界上中断低优先级程序,静默和卸载低优先级程序,然后加载和执行高优先级程序。
[0171]
为了同步和传送由magcu中的配置加载控制器发出的配置加载命令的完成,在一个示例中实现单线菊花链方案,该方案由链的每个组件中的菊花链逻辑(例如,图4中的菊花链逻辑493)中包括的逻辑支持。该方案要求每个组件具有以下2个端口:
[0172]
1.被称为program_load_done_in的输入端口
[0173]
2.被称为program_load_done_out的输出端口
[0174]
当组件完成执行magcu发出的命令并且其program_load_done_in输入被驱动为高电平时,该组件将驱动其program_load_done_out信号。magcu在完成执行命令的所有必要步骤后,将通过驱动其program_load_done_out来启动菊花链。链中的最后一个组件将驱动其program_load_done_out,其将连接到magcu的program_load_done_in。magcu的program_load_done_in变为高电平表示命令完成。在递送与所有组件的所有块对应的数据后,magcu将其program_load_done_out端口驱动为高电平。所有组件在完成加载所有配置位后,将其各自的program_load_done_out端口驱动为高电平。该操作可以在与静默就绪信令相同的菊花链上执行。
[0175]
当magcu输入端口program_load_done_in被声明时,配置文件加载完成。可以对如上所述的q_rdy信号使用相同或类似的逻辑。
[0176]
图12是图示执行用于类似图3和图10的系统的阵列配置加载过程的逻辑的一个示例的状态机图,包括分配配置文件,配件文件包括用于阵列中的多个可配置单元的单元文件,每个单元文件包括多个有序块(或子文件),通过经由总线系统以n轮序列(r(i),i=0到n-1)向包括多个可配置单元中的多达n个子文件的所有可配置单元,直到将配置文件中的单元文件分配给多个可配置单元中的可配置单元。
[0177]
在该示例中,状态机包括六个状态s1到s6。在状态s1(空闲),配置加载控制器等待来自主机的配置加载命令。当接收到配置加载命令时,加载过程进入状态s2以开始执行分配序列的第一轮r(0)。每一轮遍历状态s2到s6。在这里描述的示例中,因为要分配给阵列中的可配置单元的组块的最大数目是六,所以存在六轮。
[0178]
在状态s2(切换请求),配置加载控制器经由顶层网络生成存储器访问请求,以取回针对相应交换单元的配置单元文件的轮次r(i)的状态s2的块,并将取回的块分配给相应交换单元。对于i=0,在轮次r(0)中,配置加载控制器针对相应交换单元的多个块中的块(0)生成存储器访问请求,并将块(0)发送到相应交换单元。对于i=1,在轮次r(1)中,配置加载控制器针对相应交换单元的多个块中的块(1)生成存储器访问请求,并将这些块发送到相应交换单元。在轮次r(i)中,当配置加载控制器已经针对相应交换单元的多个块中的块(i)生成了存储器访问请求,并针对所有交换单元分配了块时,加载过程进入状态s3。
[0179]
在状态s3(pcu请求),配置加载控制器经由顶层网络生成存储器访问请求,以针对相应pcu单元(模式计算单元)的配置单元文件的轮次r(i)取回块,并将取回的块分配给相
应pcu单元。在轮次r(i)的状态s3中,配置加载控制器针对相应pcu单元的多个块中的块(i)生成存储器访问请求,并将块(i)发送到相应pcu单元。在轮次r(i)中,当配置加载控制器针对相应pcu单元的多个块中的块(i)生成了存储器访问请求并分配了块时,加载过程进入状态s4。
[0180]
在状态s4(pmu请求),在一些实施例中,配置加载控制器经由顶层网络针对可配置单元阵列中的相应pmu单元(模式存储单元),生成存储器访问请求,以取回配置单元文件和存储器文件的块,并将取回的块发送到相应的pmu单元。在轮次r(i)的状态s4中,配置加载控制器针对相应pmu单元的多个块中的块(i)生成存储器访问请求,并将块(i)发送到相应pmu单元。例如,对于i=0,在轮次r(0)中,配置加载控制器针对相应pmu单元的多个块中的块(0)生成存储器访问请求,并将块(0)发送到相应pmu单元。对于i=1,在轮次r(1)中,配置加载控制器针对相应pmu单元的多个块中的块(1)生成存储器访问请求,并将块(1)发送到相应pmu单元。在轮次r(i)中,当配置加载控制器针对相应pmu单元的多个块中的块(i)生成了存储器访问请求并分配了块时,加载过程进入状态s5。
[0181]
在状态s5(agcu请求),配置加载控制器经由顶层网络生成存储器访问请求,以针对可配置单元阵列中的相应agcu(地址生成和合并单元)生成配置单元文件的块,并将取回的块发送到相应agcu单元。在轮次r(i)的状态s5中,配置加载控制器针对相应agcu单元的多个块中的块(i)生成存储器访问请求,并将块(i)发送到相应agcu单元。在轮次r(i)的状态s5中,当配置加载控制器针对相应agcu单元的多个块中的块(i)生成了存储器访问请求并分配了块时,加载过程进入轮次r(i)的状态s6。
[0182]
在状态s6(响应等待),配置加载控制器等待以确保阵列中的可配置单元(交换机、pcu、pmu、agcu单元)准备好在下一轮次接收更多配置数据块。如果没有发送交换单元的所有块,则加载过程递增(i)并进行到状态s2以开始下一轮次r(i 1)。如果发送了交换单元的所有块,但没有发送pcu块的所有块,则加载过程递增(i)并进行到状态s3以开始下一轮次r(i 1)。如果发送了交换单元和pcu单元的所有块,但没有发送pmu块的所有块,则加载过程递增(i)并进行到状态s4以开始下一轮次r(i 1)。如果发送了交换单元、pcu单元和pmu单元的所有块,但没有发送agcu块的所有块,则加载过程递增(i)并进行到状态s5以开始下一轮次r(i 1)。如果发送了所有可配置单元(交换机、pcu、pmu、agcu单元)的所有块(即,所有轮次完成),则加载过程进行到状态s1。
[0183]
图13是用于执行阵列配置卸载过程的逻辑的一个示例的状态机图。
[0184]
在该示例中,状态机包括三个状态s1到s3。在状态s1(空闲),配置卸载控制器等待来自主机的配置卸载命令。配置卸载控制器为阵列配置卸载过程实现两个计数“next_unld_req_count”和“next_unld_resp_count”。计数“next_unld_req_count”追踪下一个卸载请求计数。计数“next_unld_resp_count”追踪下一个卸载响应计数。在状态s1,两个计数都被复位为初始值,诸如0。当接收到配置卸载命令时,卸载过程进入状态s2。
[0185]
在状态s2(生成请求),配置卸载控制器针对可配置单元阵列中的每个可配置单元生成卸载请求,包括阵列中的交换单元、pcu、pmu和agcu。对于生成的每个卸载请求,计数“next_unld_req_count”递增。将计数“next_unld_req_count”与代表可配置单元阵列中的可配置单元总数的预定数目program_unload_req_count进行比较。只要计数“next_unld_req_count”小于program_unload_req_count,卸载过程就保持在状态s2。当计数“next_
unld_req_count”等于program_unload_req_count时,已经针对阵列中的每个可配置单元生成卸载请求,并且卸载过程进入状态s3。
[0186]
在状态s3(响应等待),对于从阵列中的可配置单元接收到的每个响应,配置卸载控制器递增计数“next_unld_resp_count”。响应包括可配置单元的配置数据的单元文件中的块(子文件)。在一些示例中,响应还可以包括pmu便签簿数据。在卸载过程中,响应被提供给可配置单元的矢量输出,并在矢量总线上被发送到配置加载控制器。只要计数“next_unld_resp_count”小于program_unload_req_count,卸载过程就保持在状态s3。
[0187]
在状态s3,卸载过程为接收到的每个响应生成存储器地址,并将接收到的每个响应与在顶层网络上生成的存储器地址一起插入。每个响应包括卸载块和序列id。从在阵列级网络中伴随携带块的分组的报头生成存储器地址,包括序列id中的块号、列标识符、行标识符和分量标识符。分量标识符可以指示可配置单元是交换单元、pcu单元、pmu单元还是agcu单元。参考图3进一步描述序列id。
[0188]
当计数“next_unld_resp_count”等于program_unload_req_count时,已经从阵列中的每个可配置单元接收到响应并将其插入顶层网络,并且卸载过程转换回状态s1。
[0189]
在一个实施例中,用于交换单元中的配置数据的线性存储器地址的顺序是第一列交换单元中的每行的第一块,接着是第二列交换单元中的每行的第一块,接着是第三列交换单元中的每行的第一块,依此类推,直到最后一列中的每行的第一块。这将所有交换单元的第一块分组在线性地址空间中。用于其他类型的可配置单元的第一块以组的形式加载在相邻的地址空间中。然后,该顺序后面是第一列交换单元中的每行的第二块,接着是第二列交换单元中的每行的第二块,接着是第三列中的每行的第二块,依此类推,直到最后一列交换单元中的最后一行的最后块,依此类推,对于所有类型的可配置单元的第二块。
[0190]
在一些实施例中,例如,卸载过程可以在静默边界处用于从efrg卸载或复制配置、状态和存储器数据,仅卸载或复制状态信息和存储器内容,或者仅卸载或复制状态信息,而不卸载或复制可用于调试目的的配置数据。
[0191]
图14是显示由主agcu处的阵列静默控制器执行静默操作的简化流程图。在该示例中,响应于来自例如主机中的运行时程序的外部请求,开始静默操作,运行时程序设置阵列静默控制器中的静默控制寄存器中的位(1400)。在一些实施例中,可以响应于在cgra内检测到的事件(诸如通过执行到达配置的断点而检测到的异常条件或执行事件)来启动静默操作,以帮助调试。作为响应,magcu向阵列中的可配置单元发送静默agcu_cmd命令(1401)。与阵列中的每个efrg相关联的阵列中的静默逻辑响应于该命令而设置q_rcv_ff标志。如果该单元的q_pcpt标志为低电平,则静默逻辑在菊花链上针对其相关联的可配置单元产生q_rdy信号(1402)。如果针对可配置单元,q_pcpt标志为高电平,则静默逻辑将停止efrg中的单元前进到qb之外,并且产生本地执行片段的静默边界上的菊花链上的q_rdy信号,其由其偏斜udc变为等于零表示,紧跟在相关可配置单元的q_rcv_ff标志设置之后(1403)。magcu等待在菊花链上接收q_rdy信号,或者从所有参与可配置单元接收q_rdy信号(1404)。当接收到用于参与可配置单元的q_rdy信号时,阵列被静默,然后magcu可以转换到下一操作,诸如断点或检查点的卸载操作,其中在静默状态期间卸载可配置单元阵列中的程序和数据资源(1405)。备选地,区块可以在不卸载的情况下保持静默,例如在前进之前等待恢复命令、设置后续断点或其他外部信息或事件。
[0192]
在检查点卸载之后,可以通过加载新的配置文件使用该阵列来实现包括多个执行片段的不同机器,或者可以执行其他操作。稍后可以通过重新加载检查点配置、状态和数据资源来恢复在检查点卸载的静默机器。因此,静默为cgra提供了抢占式多任务处理能力和多程序处理能力。
[0193]
静默分布式cgra的能力也增强了调试能力。例如,通过定义细粒度的静默边界,诸如内循环的每次迭代,或者在发生诸如错误或异常或其他断点条件的事件时可以触发的静默边界,可以暂停cgra执行,由用户检查结果,然后根据需要可以在改变状态之后继续,或者终止。
[0194]
本文描述的静默逻辑和控制屏障网络技术适用于用cgra设备实现。此外,它可以与包括处理单元阵列的其他类型的处理系统一起使用,处理单元阵列可以受益于分布在阵列中的执行片段之间的协调。
[0195]
描述了一种用于操作包括可配置处理单元阵列的处理系统的方法,可配置为实现允许以安全且可再现的方式在静默边界上停止数据处理操作的数据处理操作或“机器”。该方法可以由分布在阵列中的静默逻辑电路支持,并且被配置为设置静默边界。
[0196]
该方法可以包括将配置数据加载到阵列以用于数据处理操作,该数据处理操作将阵列配置成多个执行片段资源组,用于具有静默边界的相应执行片段。在数据处理操作的执行期间,该方法可以包括使用例如静默逻辑电路将静默命令分发给阵列中的多个执行片段资源组。在执行片段资源组中,静默逻辑响应静默命令以检测相应执行片段中静默命令之后的静默边界,禁止相应执行片段的执行超出静默边界,并产生相应执行片段的静默就绪信号。
[0197]
可以通过执行片段资源组的可配置单元中的配置的执行状态集合在配置数据中定义静默边界。该方法可以包括响应静默命令以通过检测每个执行片段资源组中的可配置单元的配置状态集合来检测静默边界。
[0198]
这种静默能力使得处理系统能够实现独特的操作场景,该处理系统包括诸如多核阵列、cgra或fpga等的可配置处理单元的阵列。例如,操作方法可以包括响应于来自主机的请求或响应在cgra内检测到的事件来分发静默命令以使数据处理操作停止。在从多个执行片段资源组接收到静默就绪信号之后,该方法可以包括从阵列卸载配置和状态以用于调试或其他目的。
[0199]
图15示出了可以在多任务和多程序设计环境中执行的操作方法,其中主机或运行时程序可以管理具有不同优先级的多个数据处理操作。例如,一个数据处理操作可以被认为是后台操作,仅当不需要更高优先级的操作时才执行。
[0200]
参考图15,一种方法可以包括启动操作1(1500),该操作可以是后台操作。如果主机检测到较高优先级的操作(1501),则该方法可以使用如上所述的技术,优选地通过在阵列的静默边界上静默阵列中的执行片段来使阵列静默(1502)。在静默之后,主机可以在停止点卸载操作1的配置、状态和/或存储器数据(1503)。可以保存该信息以用于以后恢复操作。在卸载操作1之后,加载操作2的配置文件(1504)。在成功加载操作2之后,可以开始操作(1505)。操作2将执行,直到完成,或者另一事件指示它可以停止操作(1506)。在一些示例中,可以本文描述的静默操作来停止操作2。在停止操作2之后,可以卸载操作2的配置文件(1507)。此后,可以将在静默时针对操作1卸载的配置、状态和/或存储器数据重新加载到阵
列中(1508)。在某些情况下,重新加载的数据可以包括相对于卸载数据的修改,诸如状态改变。然后,可以在由重新加载的数据表示的静默边界处恢复操作1(1509)。
[0201]
在其他操作中,这里描述的静默能力可以被用于断点处理,例如在调试期间有用。图16是这种操作的简化流程图。在图16中,操作1在可配置阵列中开始(1600)。如果在(1601)接收到断点请求,则执行静默操作,使得静默边界qb(i)上的efrg在静默命令之后静默(1602)。在静默之后,可以将qb(i)处的操作1的配置、状态和/或存储器数据复制到保持存储器(1603)。然后,操作1可以恢复(1604)。然后,主机可以通过确定qb(i)是否是要复制的最后一个断点((i)=n?)来确定它是否已完成其断点操作(1605)。如果主机在步骤1605未完成,则主机可以递增索引(i)并针对下一静默边界发出新的静默命令,从而使过程返回到步骤(1602)。如果主机在步骤(1605)结束,则断点操作结束(1607),然后主机可以分析在静默边界序列处下载的断点数据。
[0202]
提供了能够实现检查点、断点、多任务、多程序设计和处理单元的可配置阵列的其他利用的静默技术。描述了静默电路支持的静默技术,静默电路可配置为定义相应机器的静默边界。
[0203]
静默技术不需要使用插入到数据处理操作的指令序列中的指令,并且不需要用于静默功能的数据总线资源。
[0204]
在这里描述的实施例中,处理单元阵列可以包括指令处理器,诸如在cpu和gpu中使用的指令处理器,其在指令流上操作,其中指令执行状态操作。这种类型的指令处理器使用编码成位的指令进行编程。任务由软件指定为有序列表。这些单元具有硬件架构,具有追踪“程序状态”的机制。程序状态将包括一种形式的全局“程序计数器”寄存器等,以追踪要从存储器中取出的下一条指令。此外,硬件架构还将具有流水线,以解码和执行这些已经获取的指令。换言之,这些架构包含流水线,指令流在执行期间流经该流水线,其中每条指令执行操作并更新硬件状态。对这样的架构设置检查点涉及保存架构的有状态元素,诸如程序计数器和寄存器文件。例如,gpu可以由通常依赖于共享存储器池的核心中的分布式计算单元阵列组成。分布式计算单元是可通过写入指令来编程的存储程序处理器,这些指令像普通处理器一样被读取、解码和执行。通过执行在共享存储器上操作的指令序列来实现同步和通信。
[0205]
在这里描述的技术的其他实施例中,处理单元阵列包括可配置单元,就cgra而言,该可配置单元对流经可配置单元的海洋的数据流和控制消息(与指令相反)进行操作,其中可配置单元是使用诸如位文件的配置数据来编程的。基于可配置单元的实施例具有与基于存储程序指令的处理器不同的外观和操作的架构,因为它们必须以不同的方式管理执行。
[0206]
cgra和fpga中的可配置单元阵列具有不同的编程合同:配置位;这些架构没有获取和处理指令的硬件。它们没有指令处理器意义上的全局“程序计数器”寄存器,也没有为获取、解码和执行指令流而构建的流水线。相反,可配置执行单元和有状态元素在物理上分布在芯片上,并使用可编程互连连接在一起。程序不是指令流;配置位对可配置执行单元进行编程,以构建针对应用的自定义控制和数据路径。代替指令流,可配置单元被编程为对数据流和控制消息进行操作,以产生其他数据和控制消息。这使得这样的架构本质上是分布式的,没有单一的全局程序状态。
[0207]
由于能够加载和卸载配置数据或位文件,所以可配置单元阵列中的可配置单元是
可重新配置的。在优选备选方案中,这里描述的可配置单元的所有实施例都是使用可重新配置单元来实现的。
[0208]
cgra和等同架构中执行的分布式本质使构建和扩展硬件变得更容易,但执行检查点等全局同步操作则更困难。
[0209]
可以使用不依赖于单个全局程序状态的分布式协议并支持可配置逻辑来实现本文所述的用于这些架构的检查点处理方案。
[0210]
cgra包括可重新配置组件阵列。这些组件可以包括某种程度上专门的计算和存储单元。这些单元通过结构连接,以实现单元间通信和同步。组件可以以多种方式重新配置,但通常依赖于在从位文件(类似于fpga)加载的配置位的控制下改变其行为的直接硬件重新配置。不提取、解码或执行指令;相反,状态机由位文件内容配置以实现操作序列。
[0211]
因此,cgra的单元不能通过执行指令进行同步(包括静默)。他们必须使用另一种选择。在该优选实施例中,它们在控制网络中的控制线上交换表示为脉冲的令牌,尽管cgra可以使用备选机制。
[0212]
虽然本发明是通过参考上面详述的优选实施例和示例来公开的,但是应当理解,这些示例旨在说明性地而不是限制性的意义上。可以预见,本领域技术人员很容易想到修改和组合,这些修改和组合将在本发明的精神和以下权利要求的范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献