掌桥专利:专业的专利平台
掌桥专利
首页

硬件加速器

文献发布时间:2023-06-19 19:28:50


硬件加速器

背景技术

本发明涉及具有处理元件的阵列的硬件加速器。

通用处理器用途极为广泛,但是在执行某些信号处理任务诸如计算快速傅立叶变换(FFT)时可能是缓慢的并且能源效率低下。数字信号处理器(DSP)可以更快但是仍然消耗相当多的能量;它们还占用相对较大的硅面积,使得它们成本高昂。固定数字逻辑(例如专用集成电路)可能是快速、高效和紧凑的,但不灵活,仅能提供一个固定任务。

为了缓解这些问题,已知提供了包括可重配置的相对简单的硬件处理元件(PE)的阵列的硬件加速器。例如,阵列可以具有64个PE,逻辑上排列成4×16的矩形阵列。每个PE可以具有多个数据输入端(例如两个输入端)和多个数据输出端(例如两个输出端),并且可以动态配置以对其输入数据执行选定的逻辑或算术运算。可配置互连部使一个PE的输出端可选择性地连接到另一个PE的输入端。数据可以沿着阵列的第一(例如顶部)边缘输入到PE,在多个时钟周期中按时钟从一个PE到下一个PE地经过PE阵列,并且沿着阵列的第二(例如底部)边缘输出。专用本地存储体可以位于这两个边缘附近,用于通过阵列快速输入和输出数据。

在PE运算和互连部已被适当配置(例如通过从配置文件加载配置数据)之后,硬件加速器则可以对一个本地存储体中存储的数据执行一系列复杂的运算,诸如FFT或复数互相关,将结果输出到另一本地存储体。

硬件加速器可以被设置为片上系统(SoC)上的协处理器,与一个或更多个通用处理器集成。硬件加速器可以包括直接存储器存取(DMA)单元,用于在硬件加速器的本地存储器和通用处理器可访问的系统存储器之间传输输入及输出数据。DMA单元还可用于将新的配置数据读入加速器。

这种硬件加速器可以为某些重复性处理任务提供显著的性能优势。然而,本发明人已确认了具有提供明显更好性能的潜力的改进。

发明内容

从第一方面,本发明提供了一种硬件加速器,包括:

直接存储器存取系统,用于在硬件加速器和系统存储器之间传输数据;

处理元件的阵列,每个处理元件包括两个数据输入端和两个数据输出端,并且被配置成对在一个或更多个数据输入端处接收到的输入数据执行可选择的逻辑或算术运算以在一个或更多个数据输出端处生成输出数据,其中,阵列包括沿着阵列的第一边缘的两个或更多个第一边缘处理元件的集合和沿着阵列的第二边缘的两个或更多个第二边缘处理元件的集合,第二边缘处理元件不同于第一边缘处理元件;

可配置互连部,用于选择性地将相应的处理元件的输出端连接到相应的处理元件的输入端;

第一数据缓冲器,包括两个或更多个第一边缘循环寄存器,每个第一边缘循环寄存器包括多个链式触发器,其包括近端触发器和远端触发器,其中,每个第一边缘循环寄存器的远端触发器被布置成从直接存储器存取系统接收数据,以及其中,每个第一边缘循环寄存器的近端触发器可选择性地连接到第一边缘处理元件中的相应的一个的数据输入端;以及

第二数据缓冲器,包括两个或更多个第二边缘移位寄存器,每个第二边缘移位寄存器包括多个链式触发器,其包括近端触发器和远端触发器,其中,每个第二边缘移位寄存器的近端触发器可选择性地连接到第二边缘处理元件中的相应的一个的数据输出端,以及其中,每个第二边缘移位寄存器的远端触发器被布置成将数据输出到直接存储器存取系统。

从第二方面,本发明提供了一种包括这种硬件加速器的集成电路芯片。

集成电路芯片可以包括所述系统存储器。它可以包括将系统存储器连接到硬件加速器的直接存储器存取(DMA)系统的总线系统。它还可以包括不同于硬件加速器的通用处理器。它可以是片上系统装置。

因此,将看到,根据本发明,基于阵列的硬件加速器使用沿着阵列的第一边缘(例如顶部边缘)的、用于按时钟将数据输入到处理元件的阵列中的循环寄存器的数据缓冲器。输出数据可以使用沿着第二边缘(例如底部边缘)布置的移位寄存器的集合按时钟输出。使至少一些输入数据转圈循环以使相同的输入数据多次进入阵列的能力能够高效实现一系列处理任务。

例如,在至少一些实施方式中,硬件加速器可以被配置成执行模板信号模式(例如,表示无线电通信系统中的固定前导码)和更长的传入数据流(例如,接收到的无线电信号)之间的高效互相关运算。在该示例中,表示模板信号模式的固定系数的集合可以一次加载到一个或更多个循环寄存器中,然后随着阵列计算固定系数和传入数据流之间的一连串点积运算而反复转圈循环。

更一般地,每当要多次处理相同的输入数据时,通过减少对通过硬件加速器的DMA重复加载相同数据的需要,循环寄存器能够潜在地提供比没有反馈路径的移位寄存器更高的效率。

使用循环寄存器还允许比使用本地存储体(例如行和列寻址的寄存器文件)更紧凑的实现,以保存要加载到阵列中的数据,因为循环寄存器不需要复杂的寻址逻辑来将数据移动到处理阵列中。相反,近端触发器的输出端可以直接耦接到选定的处理元件的输入端。这特别适合数字信号处理(DSP)应用,其中通常不需要随机数据读取和写入能力。

在一些次优选的实施方式中,第二边缘移位寄存器可以是线性(即非循环)移位寄存器,但在优选实施方式中它们也是循环寄存器。

每个第一边缘循环寄存器优选地包括相应的第一反馈路径,使得使数据在每个第一边缘循环寄存器轮回循环包括:沿着多个链式触发器中的连续触发器将数据从远端触发器移动到近端触发器,并且沿着第一反馈路径将数据从近端触发器移动到远端触发器。在一些实施方式中,可以(例如,使用在运行时设置的配置数据)控制第一边缘循环寄存器,以使数据在寄存器轮回循环或不使数据循环。在一些实施方式中,每个循环寄存器可被独立地(即,与其他循环寄存器分离地)控制,以进行循环或不进行循环。在一些实施方式中,硬件加速器可以被布置成,使得第一和/或第二数据缓冲器的一个或更多个寄存器的可配置子集(优选地都是循环寄存器)可以被使能以进行移位,而剩余的第一和/或第二数据缓冲器的一些或所有寄存器(即不在所述子集中的那些)不进行移位(即,当使能的寄存器进行移位时它们的内容保持不动(static))。可配置子集可以由配置数据指定,并且甚至可以在运算中动态改变。这样的布置可以支持诸如互相关的运算的性能,其中一个寄存器中包含的值在运算的连续阶段之间针对同一数据缓冲器的另一个寄存器中的值进行移位。

第一边缘循环寄存器可以是单向的,但是在优选实施方式中,它们是双向的。每个第一边缘循环寄存器的近端触发器可以(例如,通过可被配置成断开或闭合的可配置开关)选择性地连接到第一边缘处理元件中的相应的一个第一边缘处理元件的数据输出端,并且每个第一边缘循环寄存器的远端触发器可以被布置成将数据输出到直接存储器存取系统。除了包括第一反馈路径之外,为了将数据从近端触发器直接传递到远端触发器,每个第一边缘循环寄存器还可以包括第二反馈路径,其可以允许将数据从远端触发器直接传递到近端触发器。

因此,在一些实施方式中,每个第一边缘循环寄存器是双向的,并且能够被独立控制成向前移位、向后移位或不移位。这可以促进将数据高效地输入到处理元件中。例如,当第一循环寄存器中存储的模板向量要在互相关运算中重复施加到第二循环寄存器中存储的信号向量,但是模板向量占用第一循环寄存器中的少于一半数量的链式触发器时,模板值可以在朝着处理元件的前向方向上移位以及轮回循环以执行第一相关步骤,然后在远离处理元件的反向方向上移位以及反向循环,以准备在下一个相关步骤中再次向前移位。然而,对于较长的模板向量,在每个连续的相关步骤处仅在前向方向上使模板值轮回循环可能是更高效的。根据要求为不同的移位行为重新配置实施方式的能力提供了支持不同使用模式的多功能性。

第二边缘移位寄存器优选地是双向的。每个第二边缘循环寄存器的远端触发器可以被布置成接收来自直接存储器存取系统的数据,并且每个第二边缘循环寄存器的近端触发器可以选择性地连接到第二边缘处理元件中的相应的一个第二边缘处理元件的数据输入端。

因此,在一些实施方式中,阵列可以在第一配置中(例如,在第一时间)被配置成处理从第一边缘开始经过阵列流到第二边缘的数据,并且在第二配置中(例如,在第二时间)处理从第二边缘流到第一边缘的数据。

在一些实施方式中,第二边缘移位寄存器也是循环寄存器,并且均可以包括第一反馈路径,用于将数据从循环寄存器的近端触发器直接传递到远端触发器。这可以允许输入数据轮回循环并且多次输入到处理阵列的第二边缘,而不必不止一次将数据加载到第二边缘移位寄存器中。第二边缘循环寄存器可以是双向的,并且均可以包括用于将数据从循环寄存器的远端触发器直接传递到近端触发器的第二反馈路径。在一些实施方式中,第一边缘循环寄存器和第二边缘循环寄存器中的每一个都是双向的并且能够独立地被控制成移位或不移位。这些实施方式在如何进行配置和控制以支持一系列使用场景方面提供了很大程度的灵活性,例如,通过首先将所有循环寄存器配置成向前移位,然后在多个时钟周期之后,重新配置缓冲器,使得循环寄存器的子集向后移位,或者根本不移位,同时剩余寄存器继续在连续的时钟周期中向前移位。

在一些实施方式中,每个第一边缘循环寄存器和/或每个第二边缘循环寄存器的近端触发器(不仅是远端触发器)被布置成接收来自直接存储器存取系统的数据。该连接(亦如从DMA系统到第一和/或第二循环寄存器的每个远端触发器的连接)可以基于配置数据而对于每个循环寄存器是可切换的(即,能够选择性地使能或禁用)。这可以在将数据加载(即注入)到数据缓冲器时提供更高的灵活性和效率,例如如果要将少于32个值加载到特定的循环寄存器中,则可以从近端加载它们,以避免必须从远端开始沿着特定寄存器而朝着阵列对数据进行移位。

处理元件的数据输入端和数据输出端优选地是多比特位(例如,用于接收和输出16比特位或32比特位字)。第一数据缓冲器和第二数据缓冲器中的每个移位和循环寄存器优选地包括多位比特寄存器链,例如包括16个或32个并行的单比特位触发器链,用于在链的每个链接处存储多比特位值。

第一边缘循环寄存器都可以具有相同数量的寄存器(即共同的链长度),例如每个包含链中的32个16比特位寄存器。第二边缘循环寄存器都可以具有共同的链长度,其可以与第一边缘循环寄存器的长度相同,例如均具有32个寄存器。

至少可以存在与第一边缘处理元件的数据输入端一样多的第一边缘循环寄存器。至少可以存在与第二边缘处理元件的数据输出端一样多的第二边缘循环寄存器。这可以实现阵列的完全并行的数据流入和流出。

在一些实施方式中,每个处理元件恰好具有两个数据输入端和两个数据输出端。在这种情况下,第一边缘循环寄存器的数量可以是第一边缘处理元件的两倍,并且第二边缘循环寄存器的数量可以是第二边缘处理元件的两倍。

第一边缘和第二边缘可以是相对的边缘。它们可以具有相同数量的处理元件。

处理元件的阵列可以具有任何合乎逻辑的形状(例如六边形),但是在一些实施方式中,它是矩形阵列(例如方形阵列)。第二边缘可以平行于第一边缘。阵列的合乎逻辑的结构可能特别重要,因为在一些实施方式中,不可能将每个PE输出端连接到每个PE输入端,而是每个PE输入端可以连接到该PE输入端的邻域中的PE输出端(并且对于某些PE,诸如通过从第二边缘到第一边缘的反馈路径,可选地连接到一个或更多个较远的PE输出端),但不是连接到每个PE输出端。这种限制对于减小可配置互连系统的尺寸和复杂性可能是合乎需要的。PE的邻域可以小于整个阵列。在一些实施方式中,阵列中的每个PE可以从相应的对象(subject)PE的邻域中的所有PE接收数据,其中邻域都具有共同的形状(例如,都是以相应PE为中心的3×3方形)。当然,由于边界效应,邻域中的PE数量可以朝着阵列的一个或更多个边缘减少(例如,当对象PE位于阵列的边缘时,3×3方形窗口仅包括2×3=6个PE,而当其正好位于阵列的角上时则仅有2×2=4个PE)。邻域可以具有任何共同的形状并且不一定是矩形;它们可以以对象PE为中心也可以不以对象PE为中心,并且可以包括或可以不包括对象PE。互连系统还可以支持与不是普通邻域的一部分的一个或更多个较远的PE的连接。

在一些实施方式中,其中阵列是矩形的并且被配置成在输入边缘处接收输入数据,对象PE的可切换连接的邻域可以包括以下中的任何一个或更多个:

对象PE自身(即允许从PE的输出端到它自己的一个输入端的反馈);

与对象PE相邻并且距输入边缘的距离与对象PE相同的两个PE中的一个或两个(例如,当输入边缘是顶部边缘时,紧邻对象PE的左侧或右侧);

位于在正对输入边缘的方向上距对象PE一个步长(即沿着阵列的行或列的一个更远的位置)处的相邻PE(例如,当输入边缘是顶部边缘时,紧邻上方);

按照在对着输入边缘的方向上距对象PE一个步长、以及在平行于输入边缘的方向上远对象PE一个步长的方式而从对象PE沿对角线位移的两个PE中的一个或两个(例如,当输入边缘是顶部边缘时,沿左上对角线或者沿右上对角线);

在正对输入边缘的方向上距对象PE两个步长的PE(例如,当输入边缘是顶部边缘时,紧邻上方的两个位置);以及

按照在对着输入边缘的方向上距对象PE两个步长、以及在平行于输入边缘的方向上远离对象PE一个步长的方式而从对象PE沿对角线位移的两个PE中的一个或两个(例如,更靠近顶部边缘的上面的两行并且向左或向右一个步长)。

在一些实施方式中,阵列中的至少一个PE能够接收来自该PE的邻域中的所有9个PE的输入。在一些实施方式中,阵列中的至少一个PE可以仅接收来自这9个PE的输入。在一些实施方式中,阵列中的每个PE能够接收来自该PE的一个这样的相应的邻域中的多达所有9个PE的输入,在该邻域中存在这样的PE输出(即,阵列边缘附近的PE受边缘约束)。

如果阵列是双向的,则当数据在反向方向上移动时,邻域可以由这些PE中的在朝着相反边缘的方向上的在最前面的同样的三个外加较远的6个PE组成。因此,互连系统可以支持从对象PE到总共至少15个PE(包括对象PE自身)的连接。

在一些实施方式中,可配置互连部被布置成使得每个第一边缘PE(除了能够接收来自第一数据缓冲器的输入之外)还能够接收来自任何第二边缘PE的输出。这可以使结果能够从阵列的第二(输出)边缘直接反馈到第一(输入)边缘,而不必使通过阵列的流动方向反转或者不必使用缓冲器和DMA来将结果从输出边缘移回输入边缘。这可以提供额外的灵活性并且使阵列能够支持更多不同的计算。当数据在反向方向上流动,即从第二边缘流动到第一条边缘时,可配置互连部还可以被布置成使得每个第二边缘PE(除了能够接收来自第二数据缓冲器的输入之外)还能够接收来自任何第一边缘PE的输出。

在一些实施方式中,阵列是矩形阵列并且可配置互连部被布置成使得沿着阵列的垂直于第一边缘和第二边缘的第三边缘的每个PE还能够(在一个输入端处,或者在两个或更多个不同的输入端中的任何输入端处)接收来自沿着阵列的平行于第三边缘的第四边缘的相应PE的输出。具体地,沿着第三边缘的每个对象PE可能能够接收来自位于第四边缘并且比对象PE更靠近输入边缘一个步长(即一行或一列)设置的相应PE的输出。在一些实施方式中,这是每个第三边缘PE能够从其接收输出的唯一的相应的第四边缘PE。类似地,每个第四边缘PE可能能够(在一个输入端处,或者在两个或更多个不同的输入端中的任何输入端处)接收来自相应的第三边缘PE的输出并且可能没有来自其他第三边缘PE的输出,该相应的第三边缘PE可以是位于第三边缘的比相应的第四边缘PE更靠近输入边缘一个步长(即一行或一列)的PE。这些连接可以有助于高效地实现诸如有限冲激响应(FIR)或无限冲激响应(IIR)滤波的运算。

系统存储器可以包括RAM和/或诸如闪存的非易失性存储器。DMA系统可以包括一个或更多个DMA分散-聚集单元。在一些实施方式中,DMA系统包括用于从系统存储器(例如从RAM)读取数据的传入DMA单元和用于将数据写入系统存储器(例如RAM)的传出DMA单元。DMA系统还可以被布置成从系统存储器读取配置数据,用于配置处理元件的阵列。在一些优选实施方式中,DMA系统专用于硬件加速器;然而,在其他实施方式中,它可以是共享的DMA控制器,其也可以被配置成在系统存储器和一个或更多个其他外围设备之间传输数据。

在一些实施方式中,每个PE恰好具有两个数据输入端。每个PE可以恰好具有两个数据输出端。数据输入端和输出端的比特位长度可以全都相同。每个数据输入端可以是16比特位输入端。每个数据输出端可以是16比特位输出端。

每个处理元件(PE)可以包括(例如,关联)相应的配置存储器(例如,寄存器文件)并且被配置成根据配置存储器中存储的配置数据确定要对在一个或更多个数据输入端处接收到的输入数据执行的逻辑或算术运算。每个PE可被配置成执行以下任何一个或更多个:加法、减法、乘法、除法、左移、右移、逻辑取反(negation)、以及异或、与、或和非运算。配置存储器的尺寸可以被确定为存储配置数据,该配置数据准确地标识用于PE的每个数据输出端的一个相应的运算;即在PE可以执行不同的运算之前,新的配置数据必须被加载到该PE。

每个PE可以包括用于存储针对一个或更多个输入端的一个或更多个运算中使用的立即值(即恒定值)的立即数寄存器,所述运算例如是与立即值相加和/或与立即值相乘。在将配置数据加载到配置存储器的同时,可以将立即值加载到PE。

每个PE可以选择性地配置成执行NOP或无运算(即延迟输出未更改的输入数据)操作,其可以具有等于一个或更多个或所有逻辑和/或算术运算的延时的延时(例如两个时钟周期)。PE可以支持两个或更多个无运算(NOP)操作,它们可以具有不同的延时,例如第一NOP具有双周期延时,并且第二NOP(其可被称为馈通操作),其同样输出未改变的输入数据并且具有一个时钟周期的延时。换言之,在一些实施方式中,每个处理元件可以被配置成在处理元件的数据输入端处接收值并且在可被配置成具有两个不同的持续时间之一的延迟之后在处理元件的数据输出端处输出该值。这可以在控制通过阵列的数据流方面提供更大的通用性。

在一些实施方式中,每个PE可以对其输出中的每一个执行相应的不同的运算。具体地,PE可以提供选项以在第一输出端处输出两个输入的和,并且同时在第二输出端处输出相同的两个输入的差(减法)。这能够特别高效地实现某些运算,诸如基2FFT蝶形计算。类似地,在一些实施方式中,PE可以提供选项以在第一输出端处输出两个输入中的最大值,并且同时在第二输出端处输出相同的两个输入中的最小值。

在一些实施方式中,每个PE被配置成选择性地对在两个数据输入端处接收到的数据执行组合的乘法和右移操作。它可以在一个数据输出端处输出右移预定比特位数的两个输入的乘积。当数据输出端与数据输入端的尺寸相同(例如,都是16比特位长)时,这可能是特别有益的,因为它可以允许通常会溢出数据输出端的两个值的相乘而不会丢失答案的最高有效位。右移的尺寸可以由加载到PE的立即数寄存器中的值来确定。

硬件加速器可以包括配置逻辑,诸如实现状态机的控制单元,用于配置处理元件以执行相应的逻辑或算术运算和/或用于配置可配置互连部。硬件加速器可以提供用于例如通过总线接收诸如来自通用处理器的指令的寄存器接口。硬件加速器可以被配置成通过DMA系统或通过寄存器接口获得处理元件和/或可配置互连部的配置数据。

在一些实施方式中,针对每个PE的每个输入端可以选择性地连接到相应的可能的源的集合中的任何一个。可配置互连部可以包括线的集合和多路复用器的集合,其中每个PE输入端连接到相应的多路复用器的输出端,并且其中每个多路复用器可选择性地连接到源的集合中的一个。多路复用器可以由相应PE的配置存储器中存储的配置数据控制。源的集合可以包括阵列中一个或更多个其他PE的一个或更多个输出端。它们可以包括第一边缘或第二边缘寄存器的一个或更多个或所有的近端触发器。可能的源可以包括同一个PE自身的一个或更多个输出,即立即反馈路径;这在实现迭代运算时可能是有用的。然而,在一些实施方式中,PE的反馈路径替代地在PE自身内实现(而不是通过多路复用器)。这可以潜在地允许更快地,例如在单个周期内反馈数据。

在一些实施方式中,第一边缘循环寄存器和第二边缘循环或移位寄存器的每个近端触发器被永久地布置成接收来自处理元件的相应的不同的输出端的数据,而没有来自其他输出端的数据。以这种方式,可以通过选择阵列中的相关PE的输入端、以及针对被设置为从阵列接收数据的任何数据缓冲器的相关寄存器的输入端的源来直接配置互连结构。

在一些实施方式中,PE被合乎逻辑地布置在矩形阵列中并且可配置互连部被布置成使得第一PE的输入端能够选择性地连接到第二PE的输出端,其中第二PE不是第一PE的8个最近邻居中的一个并且不在与第一PE相同的行或列中更靠近阵列的第一边缘或第二边缘的两个位置。在一些实施方式中,第二PE可以在与第一PE相邻的行或列中并且在更靠近阵列的第一边缘或第二边缘的两个位置,即长对角线互连部。在一些实施方式中,第一PE可以是第一边缘PE,并且第二PE可以是第二边缘PE,或者第一PE是第二边缘PE,并且第二PE可以是第一边缘PE(即提供阵列反馈路径)。

在一些实施方式中,阵列恰好包括16个处理元件。它们可以合乎逻辑地布置在四乘四方形阵列中。16个PE中的每一个均可以恰好具有两个数据输入端和两个数据输出端。第一数据缓冲器中可以存在8个循环寄存器,并且第二数据缓冲器中可以存在8个循环寄存器。已发现这种布置特别紧凑,但仍支持一系列使用信号处理运算,包括复相关、基2FFT蝶形计算和冲激响应滤波器。

硬件加速器可以在半导体装置,例如硅芯片上实现。它可以使用固定的专用的硬件逻辑来实现。然而,在一些实施方式中,它可以至少部分地使用FPGA来实现。

包括硬件加速器的集成电路芯片还可以包括存储硬件加速器的配置数据的存储器。当加载到硬件加速器中时,配置数据可以使其计算以下中的任何一个或更多个:复数乘积之和的幅度的平方;复点积;复互相关;基2FFT蝶形计算;基2FFT计算;或任何其他可行的运算。

尽管DMA单元提供了用于配置和使用硬件加速器的便利手段,但是某些实现可以通过其他手段诸如寄存器接口加载数据。因此,从另一方面,本发明提供了一种硬件加速器,其包括:

接口,用于在硬件加速器和系统存储器之间传输数据;

处理元件的阵列,每个处理元件包括两个数据输入端和两个数据输出端,并且被配置成对在一个或更多个数据输入端处接收到的输入数据执行可选择的逻辑或算术运算以在一个或更多个数据输出端处生成输出数据,其中,阵列包括沿着阵列的第一边缘的两个或更多个第一边缘处理元件的集合和沿着阵列的第二边缘的两个或更多个第二边缘处理元件的集合,第二边缘处理元件不同于第一边缘处理元件;

可配置互连部,用于选择性地将相应的处理元件的输出端连接到相应的处理元件的输入端;

第一数据缓冲器,包括两个或更多个第一边缘循环寄存器,每个第一边缘循环寄存器包括多个链式触发器,其包括近端触发器和远端触发器,其中,每个第一边缘循环寄存器的远端触发器被布置成接收来自接口的数据,以及其中,每个第一边缘循环寄存器的近端触发器可选择性地连接到第一边缘处理元件中的相应的一个第一边缘处理元件的数据输入端;以及

第二数据缓冲器,包括两个或更多个第二边缘移位寄存器,每个第二边缘移位寄存器包括多个链式触发器,其包括近端触发器和远端触发器,其中,每个第二边缘移位寄存器的近端触发器可选择性地连接到第二边缘处理元件中的相应的一个第二边缘处理元件的数据输出端,以及其中,每个第二边缘移位寄存器的远端触发器被布置成将数据输出到接口。

本文描述的任何方面或实施方式的特征可以在适当的情况下应用于本文描述的任何其他方面或实施方式。在提及不同实施方式或实施方式的集合的情况下,应当理解它们不一定不同但可以交叠。

附图说明

现将参考附图仅通过示例的方式描述本发明的某些优选实施方式,其中:

图1是包括实施本发明的硬件加速器的片上系统的示意图;

图2是硬件加速器的示意图;

图3是一个循环寄存器的集合的示意图外加该集合中的典型循环寄存器的放大视图;

图4是阵列的典型处理元件的示意图;

图5是硬件加速器中的一些互连部的示意图;

图6是用于计算复数乘积之和的幅度的平方的硬件加速器的配置的示意图;

图7是用于执行复双相关的硬件加速器的配置的示意图;

图8是当执行两个长度不等的向量之间的相关时的硬件加速器的数据缓冲器在某一时间点的状态的示意图;

图9是数据缓冲器在稍晚的时间点的状态的示意图;

图10是数据缓冲器在更晚的时间点的状态的示意图;以及

图11是用于执行基2FFT蝶形计算的硬件加速器的配置的示意图。

具体实施方式

图1示出了片上系统(SoC)装置1。它包括微处理器2(例如Arm

SoC 1可以包括其他部件,诸如另外的处理器、DSP和协处理器(例如,用于加密运算);用于管理配电、时钟信号和复位处理的系统;以及外围设备,诸如数字无线电设备、输入输出模块、定时器等。为简单起见,这些在图1中被省略。SoC 1可以具有用于连接到诸如电源、晶体谐振器、电容器、电阻器、无线电天线、用户接口等的各种外部部件的引脚或焊盘。

硬件加速器4是用于加速数字信号处理应用的通用可重配置的加速器。该设计是可重配置的,意味着其功能可以在运行时切换以能够处理不同的算法。

它包括阵列核心6,其包括处理元件(PE)的阵列、第一直接存储器存取(DMA)分散-聚集单元7(DMA_A)、第二直接存储器存取(DMA)分散-聚集单元8(DMA_B)和控制单元9。它还包括三个接口模块:可编程外围互连(PPI)单元10、电源和时钟门控单元11以及接口单元12。

DMA单元7、8可以通过AHB-lite读取和写入存储器3,而无需处理器2参与。具体地,它们可以读取控制单元9的配置数据,以及读取用于由阵列核心6处理的传入数据,并且将阵列核心6输出的结果写到外部。第一DMA单元7(DMA_A)用于将数据从数据存储器3传输到阵列核心6,而第二DMA单元8(DMA_B)将最终结果从阵列核心6放入主存储器3。

PPI单元10连接到PPI并且使加速器4能够响应来自其他外围设备的任务信号,并且向其他外围设备指示事件,例如如本申请人的在先申请WO 2020/002423中所述。

电源和时钟门控单元11连接到PCGC总线,用于对输入到加速器4的电源和时钟信号的门控进行控制,以便降低加速器4未激活时的功耗。加速器4接收三个不同的时钟信号:一个用于接口单元12,一个用于控制单元9,并且一个用于阵列核心6。

接口单元12用于生成任务、事件和基于事件的中断,并且提供可通过APB访问的寄存器接口,这允许处理器2(以及潜在地其他部件)向加速器4发送与计算相关的任务指令和基于DMA的任务指令并且确定来自加速器4的状态信息,例如用于启动或中断处理任务;用于使能或禁用中断;用于提供存储器3中的地址以供DMA7、8访问;等等。

控制单元9提供用于控制DMA传输的状态机和用于控制由阵列核心6执行的计算的状态机。它从接口单元12中的读取/写入寄存器访问与计算相关的信息。

图2更详细地示出了阵列核心6。

核心6包括处理元件(PE)或计算单元的4×4方形阵列20,其中PE是该结构中的计算单元。每个PE均配备有其自身的本地配置存储器,其能够在系统启动时加载配置数据。还可以在运行时加载新的配置流,使得设计可动态重新配置以为了处理不同的算法而切换其功能。

包括4×4PE阵列20的阵列核心6还配备有邻近阵列20的顶部边缘的第一硬件数据缓冲器21(数据缓冲器A)和邻近阵列20的底部边缘的第二硬件数据缓冲器22(数据缓冲器B)。这些数据缓冲器21、22提供要处理的数据并且存储中间结果和最终结果。

每个数据缓冲器21、22由8个16比特位双向循环寄存器(CR)组成,每个长度为32个寄存器。每个PE均具有两个输入,并且顶部行和底部行中的每一个由四个PE组成,使得沿顶部边缘和底部边缘中的每一个总共有8个输入端。因此,沿每个边缘的8个CR提供了完全的并行性。

图3更详细地示出了来自第一缓冲器21的示例性CR 21a。CR 21a包括32个16比特位寄存器的链,包括最靠近阵列20(并且可以从阵列20接收数据以及向阵列20输出数据)的近端寄存器30(包括16个近端触发器)和距阵列20最远的远端寄存器31(包括16个远端触发器)。它还具有用于(当CR 21a处于“前向”流配置时)将16比特位寄存器值直接从近端寄存器30移动到远端寄存器31的第一反馈路径32,以及用于(当CR 21a处于“后向”流配置时)将16比特位寄存器值从远端寄存器31直接移动到近端寄存器30的第二反馈路径33。在被使能时,这些反馈路径32、33允许CR 21a使数据在任一方向上循环。缓冲器21、22二者中的所有CR都是相似的。

在任何时间,CR的任何自定义组合都可以被使能以进行移位以及用于由DMA单元7、8和PE阵列20进行读取和写入操作。配置数据可以指明要被使能以进行移位的CR的子集,而剩余的CR不进行移位。DMA单元7、8和PE阵列20可以在CR的顶部或底部注入数据。CR的任何期望的子集的反馈路径32、33可以根据需要在运行时激活。可以在软件中定义自定义延时和读取周期以进行自定义处理。

顶部行中的PE的每个输入端能够接收来自第一缓冲器21中的任何CR的端部寄存器的输出,并且底部行中的PE的每个输入端能够接收来自第二缓冲器22中的任何CR的端部寄存器的输出。然而,底部行中的每个输出端仅能对第二缓冲器22中的一个对应的CR的端部寄存器进行写入,并且顶部行中的每个输出端仅能对第一缓冲器21中的一个对应的CR的端部寄存器进行写入。(除此之外,顶部行和底部行上的PE输出端可以被选择性地反馈到沿着相对边缘的PE的输入端,而不是或者也被设置为对它们相邻的缓冲器21、22进行输出,如下面参照图5更详细描述的那样。)

数据缓冲器21、22可以使用DMA单元7、8在其近端或远端进行写入和读取。第一DMA单元7还负责将配置流传输到PE阵列20。即使要传输的目标数据分散在许多不同的位置,DMA单元7、8也可以以高效的方式将数据传输到数据存储器3中的RAM或传输来自数据存储器3中的RAM的数据。

处理器2通过在APB总线上的控制而向DMA单元7、8发送指令,用于将数据从存储器3数据加载到阵列核心6中并且用于配置数据缓冲器21、22。配置选项包括:标识每个缓冲器中的被使能以使数据循环的CR子集;针对每个缓冲器设置循环移位的方向;以及设置DMA是否应访问每个缓冲器顶部或底部的数据。选择性地使能CR子集以进行循环,同时另一个CR子集保持不动,可以允许各个值在数据缓冲器21、22中的CR上高效地对齐,而不需要能够在其中向每个CR提供其自身的要移位多少个周期的个性化信息的电路,该电路将是更复杂且面积开销更大的方式。

处理器2还向接口单元12发送与计算相关的信息,其定义PE阵列核心6的期望配置以执行特定计算。该信息包括PE阵列核心6的控制字的集合。这些被存储在控制单元9可访问的接口单元12的寄存器中。每个32比特位控制字包括确定数据缓冲器21、22的循环移位方向、PE之间的互连模式、要由所有PE执行的运算以及处理子任务所需的其他循环精度参数的字段。

图4更详细地示出了来自PE阵列20的示例性PE 20a。所有的PE在物理上是相似的。

每个PE 20a具有两个数据输入端,分别连接到第一16比特位输入寄存器(In_A)40和第二16比特位输入寄存器(In_B)41,以及两个数据输出端,分别连接第一16比特位输出寄存器(Out_A)42和第二16比特位输出寄存器(Out_B)43。(当然,在其他实施方式中,输入寄存器和输出寄存器可以具有不同的长度。)它还具有配置寄存器文件45,用于存储PE 20a的数字逻辑46的配置数据。实现以寄存器方式进行输入和输出,以防止组合环路。

PE 20a中的数字逻辑46能够在任何时间被配置成针对每个输出端42、43执行16种不同的算术运算和逻辑运算中的选定的一种。提供两个输出端42、43(而不是只有单个输出端)使数字逻辑46能够同时对相应的输入或者对同一对输入运算数执行两个不同的运算,例如对从输入端A到输出端A的非(NOT)运算以及对从输入端B到输出端B的取反(NEGATIVE)运算;或对从输入端A和输入端B到输出端A的取最大值(MAX)运算以及对从相同的输入A端和输入端B到输出端B的取最小值(MIN)运算。这种潜在地针对同一对输入端执行两种不同运算的能力可以特别有助于高效地实现某些运算,诸如基2快速傅里叶变换蝶形计算,其中针对同一对运算数计算和与差。

数字逻辑46包括“立即数”寄存器(在该示例中为16比特位长),当配置寄存器文件45被加载时,其可以加载值。

存储在配置寄存器文件45中的配置字选择要在一个或两个输出端42、43处多路输出(mux-out)的运算结果。

下表示出了PE能够执行的每个运算的详细信息。只要必要的输入端和输出端可用,PE就可以被配置成执行任意一对运算。表中的PE运算的延时是以时钟周期数来衡量的,并且所有算术运算都具有2进制补码整数类型。

MUL-SHIFT运算将输入A和B的乘积右移立即数寄存器中设置的比特位数。当移位尺寸被适当设置时,这可以实现在单个运算中将两个16比特位输入的乘积输出到16比特位输出寄存器,同时保留16个最高有效位。

阵列核心6的配置流包含16个32比特位配置字,一一对应于16个PE。每个字对流标识符、PE标识符、两个运算标识符、每个PE输出端中的一个以及PE的输入端的互连设置进行编码。16种不同的配置流可以在系统启动时加载到硬件加速器4中,然后在它们之间切换。如果算法需要超过16种配置流,则可以在运行时加载另外的流。

图5示出了可配置互连结构23的代表性部分。它示出了当阵列核心20被配置成数据从顶部到底部向下流过阵列时的示例性PE Dest-9的第一输入端(In_A)的连接选项。可以通过由PE Dest-9的配置存储器中存储的配置数据控制的多路复用器23a选择输入。

PE Dest-9的输入端能够接收来自其左右两侧的PE(Dest-10、Dest-8)、以及其上方紧邻的PE(Dest-5)和Dest-5左右两侧的PE(Dest-6、Dest-4)、以及其上方2个步长处的PE(Dest-1)和Dest-1左右两侧的PE(Dest-2、Dest-0)的数据。PE Dest-9还包括从它自己的每个输出端到它自己的输入端的可选择的反馈路径(此处未示出)以支持迭代运算。

阵列20中的每个PE都可以类似地配置,尽管由于阵列的尺寸有限,即对于位于或靠近阵列边缘的PE,有些选项是不可能的。

顶部两行中的PE(Dest-0到Dest-7)的输入端也可以均被配置成接收来自第一数据缓冲器21(CR0-CR7)中的任何一个选定的近端CR的数据。

此外,顶部行中的每个PE的输入端均能够选择性地连接以接收来自底部行中的任何PE的输出。在图5中示意性地示出了这样的示例,顶部行PE Dest-3能够可切换地在其一个输入端In_B接收沿阵列反馈路径23b的来自底部行PE Dest-14的一个输出端Out_A的值。实际上,这可以通过将In_B与多路复用器输入端相连接来实现,该连接可以以编程方式设置为传递来自数据缓冲器21或者来自Dest-14的反馈路径23b的输入。尽管图5中没有示出,但是互连结构23可以被配置成将任何底部行输出端连接到任何顶部行输入端。这可以允许某些中间结果通过阵列后向循环,而不必被输出到数据缓冲器21、22。

在一些实施方式中,可以选择性地连接最左边的列中的每个PE的输入端以接收来自上方行和最右边的列中的相应PE的输出端。类似地,可以选择性地连接最右边的列中的每个PE的输入端以接收来自上方行和最左边的列中的相应PE的输出端。这可以有助于实现高效的FIR和IIR配置。

互连结构包含足够的线路和多路复用器以支持任一方向上的数据流。当流动方向反转,即从底部到顶部时,连接选项被竖直镜像(mirror vertically)。例如,当流从底部到顶部时,PE Dest-9可以接收来自Dest-8、Dest-9(自身)、Dest-10、Dest-12、Dest-13和Dest-14的数据。由于它位于最靠近第二数据缓冲器22的两个行中,因此其输入端也可以被设置为接收由第二数据缓冲器22中的近端CR中的任何一个选定的CR输出的数据。

图6示出了单元阵列20的示例配置60,当输入数据缓冲器21如所指示的那样加载有复系数时,其计算各复数对的一系列乘积之和的幅度的平方|∑

在某些情况下,将一长串复样本值重复乘以固定的32个或更少的复常数的集合可能是有用的。在这种情况下,可以在运行时控制包含常数值的CR以使常数重复地轮回循环,第一DMA单元7在同时将样本值的线性流馈送到其他CR,对这些其他CR进行控制,以不使它们的内容轮回循环(即被设置为像简单的移位寄存器一样做动作)。

图7示出了单元阵列20的示例配置70,其可用于对从输入数据缓冲器21馈送到阵列20的数据并行地执行两个复相关运算。具体地,当加载有数据缓冲器21的k个连续行中的复数X

重要的是,如果值集中的一个(例如Y

图8、图9和图10例示了在某些情况下反转流动方向如何显著提高效率。在该具体示例中,在两个值向量之间执行互相关。执行双向移位以高效地计算相关运算的每个点。通过使用选择性地改变流过硬件数据缓冲器21、22的各个循环寄存器(CR)21a的方向的能力,显著减少了用于相关处理的时钟周期数。

在该示例中,PE阵列20(未示出)被配置成执行两个长度不等的向量之间的相关,向量X(例如信号向量)的长度为32并且向量Y的长度为5(例如模板向量,表示无线电信号的恒定前导码部分)。

图8示出了在相关运算开始时第一硬件数据缓冲器21内部的数据定位。寄存器CR7填充有向量X的值,而寄存器CR6包含向量Y的值。每个向量的第一元素X1和Y1在缓冲器21的近端边缘处彼此对齐,准备在向下的流动方向上输入到PE阵列6。

图9示出了在生成第一相关点(其结果将被存储在第二硬件数据缓冲器22中)之后第一硬件数据缓冲器21中的X向量和Y向量的数据定位。向量X和向量Y的五个向量元素X1、X2、X3、X4、X5和Y1、Y2、Y3、Y4、Y5已被轮回循环(即使用前向反馈路径32),并且现在分别驻留在寄存器CR7和CR6的五个最远端的元件中。向量X的剩余元素已下移。

为了执行下一个相关点,有必要使向量Y的五个元素回到寄存器CR6的近端边缘,准备与向量X的元素X2、X3、X4、X5、X6一起输入到PE阵列6,如图10所示。

这可以通过对寄存器CR6和CR7执行28次连续的前向方向(即向下)的寄存器移位操作,加上了只是寄存器CR7中的X向量的另外一个前向移位来实现。(数目28是因为每个CR具有32个元件,而向量Y的长度是5,并且32-5=28)。然而,这将耗用29个时钟周期(假设每次移位需要一个时钟周期)。通过利用循环寄存器的双向性,并且反转流动方向,从而使向量X和向量Y在后向方向上(即向上)并且环绕从缓冲器21的远端边缘到其近端边缘的后向方向反馈路径33循环,这个过程可以减少到只有CR6的5次移位和CR7的4次移位,这仅耗用5个时钟周期。

可以重复向量X和向量Y的这种前向和后向移位直到计算完所有相关点为止。

与仅采用单向(即前向)循环移位相比,这可以导致时钟周期显著减少。对于32点X向量和5点Y向量的相关,完整的相关结果将是32+5+1=38点长,并且如果仅采用单向循环移位,则需要28×38=896个周期的开销(即用于重新对齐X向量和Y向量,没有计入用于实际计算相关性所需的额外移位),相比之下,如果使用双向循环移位,则只有5×38=160个周期。因此,在这种情况下,双向反馈能够提供大于5的加速因子。

当一个向量的长度小于循环寄存器的长度的一半时,这种双向反馈是有益的。两个数据缓冲器21、22中的CR可以根据数据的长度选择性地和动态地被配置成前馈或反馈移位,并且因此能够高效地对长度变化的数据进行操作。

图11示出了单元阵列6的示例配置80,其对64点FFT执行基2FFT蝶形运算。

顶部行左起第三个PE针对相同的输入在其第一输出端处输出和运算并且在其第二输出端处输出差运算。标记为“D”的PE只是以两个周期的延迟透传其输入,即NOP。

底部行的第一个PE的输出端是W=a1+a2;第二个PE的输出端是X=(a1-a2)w1-(b1-b2)w2;第三个PE的输出端是Y=(a1-a2)w2+(b1-b2)w2;第四个PE的输出端是Z=b1+b2。值W+iZ和X+iY是对a1+ib1和a2+ib2进行FFT蝶形运算的两个输出。

尽管在执行FFT运算时不一定利用循环寄存器的循环特性,但是执行高效FFT蝶形运算的能力表明硬件加速器能够被配置成执行各种不同的处理操作的灵活性。

如所论证的,4×4阵列可用于实现许多重要的信号处理操作(所有这些信号处理操作在数字无线电以及其他应用中都是有用的),同时尺寸紧凑。具体地,具有支持联合乘法移位操作的PE的4×4PE阵列提供了一种在紧凑阵列中实现基2蝶形计算的精妙的方式。然而,实施方式不限于4×4阵列,并且也可以实现任何其他尺寸的阵列。

本领域的技术人员将认识到,本发明已经通过描述一个或更多个具体实施方式进行了说明,但不限于这些实施方式;在所附权利要求的范围内,许多变化和修改是可能的。

技术分类

06120115927909