电路、对应的设备、系统和方法

文档序号:168653 发布日期:2021-10-29 浏览:36次 >En<

阅读说明:本技术 电路、对应的设备、系统和方法 (Circuit, corresponding device, system and method ) 是由 G·博尔戈诺沃 L·雷菲奥伦汀 于 2021-04-28 设计创作,主要内容包括:本公开的实施例涉及电路、对应的设备、系统和方法。一种实施例电路包括:输入端子集合,被配置为接收携带输入数据的输入数字信号;输出端子集合,被配置为提供携带输出数据的输出数字信号;以及计算电路装置,被配置为根据输入数据产生输出数据。计算电路装置包括乘法器电路集合、加法器-减法器电路集合、累加器电路集合以及可配置的互连网络。可配置的互连网络被配置为在至少两种处理配置中选择性地耦合乘法器电路、加法器-减法器电路、累加器电路、输入端子以及输出端子。在第一配置中,计算电路装置被配置为根据第一功能集合计算输出数据,并且在第二配置中,计算电路装置被配置为根据不同的功能集合计算输出数据。(Embodiments of the present disclosure relate to circuits, corresponding devices, systems, and methods. An embodiment circuit includes: a set of input terminals configured to receive an input digital signal carrying input data; an output terminal set configured to provide an output digital signal carrying output data; and computing circuitry configured to generate output data from the input data. The computational circuit arrangement includes a set of multiplier circuits, a set of adder-subtractor circuits, a set of accumulator circuits, and a configurable interconnection network. The configurable interconnection network is configured to selectively couple the multiplier circuit, the adder-subtractor circuit, the accumulator circuit, the input terminal, and the output terminal in at least two processing configurations. In a first configuration, the computation circuitry is configured to compute the output data in accordance with a first set of functions, and in a second configuration, the computation circuitry is configured to compute the output data in accordance with a different set of functions.)

电路、对应的设备、系统和方法

相关申请的交叉引用

本申请要求于2020年4月29日提交的意大利申请No.102020000009358的权益,其申请内容通过引用并入本文。

技术领域

本描述涉及数字信号处理电路,诸如硬件加速器,以及相关的方法、设备和系统。

背景技术

各种实时数字信号处理系统(随着汽车领域中的需求日益增长,例如,用于处理视频数据和/或图像数据、雷达数据、无线通信数据)可以涉及每单位时间处理相关数量的数据。在各种应用中,这种处理对于纯粹基于核心的实现方式(即,涉及运行处理软件的通用微处理器或微控制器的实现)可能变得要求很高。

因此,硬件加速器的使用在数据处理的某些领域中变得越来越重要,这是因为它有助于加速某些算法的计算。与基于核心的实现方式相比,正确设计的硬件加速器可以减少特定操作的处理时间。

文献中描述的或作为商业产品可用的常规硬件加速器可以包括不同类型的处理元件(也称为“数学单元”或“数学运算器”),其中每个处理元件专用于特定操作的计算。例如,这样的处理元件可以包括乘法和累加(MAC)电路和/或配置为计算诸如激活非线性函数(ANLF)的激活函数的电路(例如,坐标旋转数字计算机(CORDIC)电路)。

上述处理元件中的每个处理元件通常被设计用于实现特定函数(例如,基-2蝶形算法、复向量的乘法、向量/矩阵积、三角函数或指数函数或对数函数、卷积等)。因此,常规硬件加速器通常包括通过某种互连网络连接在一起的各种这样的不同处理元件。在一些情况下,由于数据依赖性和/或架构限制,一次激活一个不同的处理元件,导致对硅区域和可用硬件资源的低效使用。

另一方面,纯粹用软件实现的、基于核心的方法(例如,利用单指令多数据(SIMD)处理器)可以涉及高时钟频率,以满足实时系统的通常的带宽要求,因为在这种情况下,每个处理元件都执行基本操作。

发明内容

一个或多个实施例的目的是提供解决上述缺点中的一个或多个缺点的硬件加速器设备。

特别地,一个或多个实施例旨在提供包括一个或多个处理元件的基于存储器的硬件加速器设备(在本公开的上下文中,也用缩写EDPA、增强的数据处理架构来指代)。硬件加速器设备中的处理元件可以在运行时重新配置,以提供提升的使用灵活性,并且有助于各种信号处理操作的有效计算,这些信号处理操作可以是在资源方面的特别要求(例如,快速傅立叶变换、数字滤波、人工神经网络的实现等)。

一个或多个实施例可以在实时处理系统中找到应用,在实时处理系统中,要求计算的操作(例如,向量/矩阵积、卷积、FFT、基-2蝶形算法、复向量乘法、三角函数或指数函数或对数函数等)的加速可以有助于满足某些性能要求(例如,在处理时间方面)。例如,在汽车领域可能就是这样。

根据一个或多个实施例,这种目标可以借助具有以下权利要求中阐述的特征的电路(例如,运行时可重构处理单元)来实现。

一个或多个实施例可以涉及对应的设备(例如,包括一个或多个运行时可重构处理单元的硬件加速器电路)。

一个或多个实施例可以涉及对应的系统(例如,包括硬件加速器电路的片上系统集成电路)。

一个或多个实施例可以涉及对应的方法。

权利要求是本文针对实施例提供的技术教学的组成部分。

根据一个或多个实施例,提供了一种电路,该电路可以包括输入端子集合,被配置为接收携带输入数据的输入数字信号;以及输出端子集合,被配置为提供携带输出数据的输出数字信号。电路可以包括计算电路装置,被配置为根据输入数据产生输出数据。该计算电路装置可以包括乘法器电路集合、加法器-减法器电路集合、累加器电路集合以及可配置的互连网络。可配置的互连网络可以被配置为在至少两种处理配置中选择性地耦合乘法器电路、加法器-减法器电路、累加器电路、输入端子以及输出端子。在第一处理配置中,计算电路装置被配置为根据第一函数集合计算输出数据,并且在至少一个第二处理配置中,计算电路装置被配置为根据相应的第二函数集合计算输出数据。第二函数集合与第一函数集合不同。

因此,一个或多个实施例可以提供增加的灵活性、改善的硬件资源使用和/或改善的并行计算性能。

附图说明

现在将参考附图仅通过示例来描述一个或多个实施例,其中:

图1是根据一个或多个实施例的电子系统(诸如片上系统)的示例性电路框图;

图2是根据一个或多个实施例的实现硬件加速器的电子设备的示例性电路框图;

图3是根据一个或多个实施例的用于根据实施例的电子设备的处理电路的示例性电路框图;

图4是根据一个或多个实施例的用于根据实施例的电子设备的处理电路的另一个示例性电路框图;以及

图5是多层感知器网络结构的示例图。

具体实施方式

在随后的描述中,说明了一个或多个特定细节,旨在提供对本描述的实施例的示例的深入理解。可以在没有一个或多个特定细节的情况下,或者通过其他方法、部件、材料等来获得实施例。在其他情况下,不详细地说明或描述已知结构、材料或操作,以便不会模糊实施例的某些方面。

在本描述的框架中引用“实施例”或“一个实施例”旨在指示关于该实施例描述的特定配置、结构或特征被包括在至少一个实施例中。因此,在本描述的一个或多个点中可能出现的诸如“在实施例中”或“在一个实施例中”的短语不一定是指一个或多个相同的实施例。此外,特定构造、结构或特征可以在一个或多个实施例中以任何适当方式组合。

在本文所附的附图中,相似的部分或元件用相似的参考/数字表示,并且为了简洁起见,将不重复对应的描述。

本文中使用的参考文献仅为了方便起见,因此不定义保护范围或实施例的范围。

图1是根据一个或多个实施例的电子系统1的示例,诸如片上系统(SoC)。电子系统1可以包括各种电子电路,例如:中央处理单元10(CPU,例如微处理器)、主系统存储器12(例如,系统RAM-随机访问存储器)、直接存储器访问(DMA)控制器14和硬件加速器设备16。

如图1中所示,电子系统1中的电子电路可以通过系统互连网络18(例如SoC互连)连接。

一个或多个实施例的目的是提供一种(运行时)可重构硬件加速器电路16,被设计用于支持各种(基本)算术功能的执行,并且具有改善的使用灵活性。因此,一个或多个实施例可以有助于改善硅区域的使用以及提供令人满意的处理性能,例如,以满足实时数据处理系统的处理时间要求。

如图1中所示,在一个或多个实施例中,硬件加速器电路16可以包括至少一个(运行时)可配置处理元件160,优选数目P的(运行时)可配置处理元件1600、1601、…、160P-1,以及本地数据存储器组集合M,优选地为数目Q=2*P的本地数据存储器组M0、…、MQ-1

在一个或多个实施例中,硬件加速器电路16可以进一步包括本地控制单元161、本地互连网络162、本地数据存储器控制器163、本地ROM控制器164、(本地ROM控制器164被耦合到本地只读存储器集合165,优选地为数目P个本地只读存储器1650、1651、…、165P-1)以及本地配置存储器控制器166,(本地配置存储器控制器166被耦合到本地可配置系数存储器集合167,优选地为数目P个本地可配置系数存储器1670、1671、…、167P-1)。例如,存储器167可以包括易失性存储器(例如,RAM存储器)和/或非易失性存储器(例如,PCM存储器)。

不同的实施例可以包括不同数目的P个处理元件160和/或不同数目的Q个本地数据存储器组M0、…、MQ-1。例如,P可以等于8并且Q可以等于16。

在一个或多个实施例中,处理元件160可以被配置以支持具有不同级别的计算并行度的不同(基本)处理功能。例如,处理元件160可以支持(例如,基于适当的静态配置)不同类型的算术(例如,浮点单精度32位、定点/整数32位、或具有并行计算或向量化模式的16或8位)。

处理元件160可以包括具有低复杂性的相应的内部直接存储器访问(DMA)控制器1680、1681、…、168P-1。特别地,处理元件160可以被配置为通过相应的直接存储器访问控制器168从本地数据存储器组M0、…、MQ-1和/或从主系统存储器12检索输入数据。因此,处理元件160可以细化检索到的输入数据以生成经处理的输出数据。处理元件160可以被配置为通过相应的直接存储器访问控制器168将经处理的输出数据存储在本地数据存储器组M0、…、MQ-1和/或主系统存储器12中。

此外,处理元件160可以被配置为从本地只读存储器165和/或从本地可配置系数存储器167检索输入数据以执行这种细化。

在一个或多个实施例中,提供本地数据存储器组集合M0、…、MQ-1可以有助于并行处理数据以及减少存储器访问冲突。

优选地,本地数据存储器组M0、…、MQ-1可以提供缓冲(例如,双缓冲),其可以有助于恢复存储器上载时间(写入操作)和/或下载时间(读取操作)。特别地,可以复制每个本地数据存储器组,以便可以从两个存储器组中的一个存储器组读取(例如,用于处理)数据,并且同时可以将(新的)数据存储(例如,用于稍后处理)在另一个存储器组中。因此,移动数据可以不对计算性能产生负面影响,因为它可以被屏蔽。

在一个或多个实施例中,本地数据存储器组M0、…、MQ-1的双缓冲方案与流模式或背靠背的数据处理组合可以是有利的(例如,如适用于被配置为阐述N个数据输入的连续序列的FFT N点处理器)。

在一个或多个实施例中,本地数据存储器组M0、…、MQ-1可以包括具有有限存储容量(因此,有限的硅足迹)的存储器组。在FFT处理器的示例性情况下,每个本地数据存储器组可以具有至少(maxN)/Q的存储容量,其中maxN是硬件能够处理的最长FFT。涉及硬件加速器的应用中的通常值可以如下所示:

N=4096个点,例如每个点是浮点单精度复数(实数,虚数),其大小为64位(或8字节),

P=8,导致Q=16,

使得每个本地数据存储器组的存储容量可以等于(4096*8字节)/16=2KB(KB=千字节)。

在一个或多个实施例中,本地控制单元161可以包括寄存器文件,该寄存器文件包括用于设置处理元件160的配置的信息。例如,本地控制单元161可以设置处理元件160以按照在中央处理单元10上运行的主机应用的指示执行特定算法。

在一个或多个实施例中,本地控制单元161因此可以包括硬件加速器电路16的控制器电路。这样的控制器电路可以配置(例如,动态地)用于计算特定(基本)功能的每个处理元件160,并且可以配置具有特定存储器访问方案和循环周期的相应的内部直接存储器访问控制器168。

在一个或多个实施例中,本地互连网络162可包括低复杂性互连系统,例如,基于已知类型的总线网络,诸如基于AXI4的互连。例如,本地互联网络162的数据并行度可以是64位,地址宽度可以是32位。

本地互连网络162可以被配置为将处理元件160连接到本地数据存储器组M0、…、MQ-1和/或主系统存储器12。此外,本地互连网络162可以被配置为将本地控制单元161和本地配置存储器控制器166连接到系统互连网络18。

特别地,互连网络162可以包括P主端口集合MP0、MP1、…、MPP-1,这些主端口中的每个主端口都耦合到相应的处理元件160;P从端口集合SP0、SP1、…、SPP-1,这些从端口中的每个从端口都可以经由本地数据存储器控制器163耦合到本地数据存储器组M0、…、MQ-1;另一对端口包括系统主端口MPP和系统从端口SPP,被配置为耦合到系统互连网络18(例如,以便从中央处理单元10接收指令和/或访问存储在系统存储器12中的数据);以及另一从端口SPP+1,被耦合到本地控制单元161和本地配置存储器控制器166。

在一个或多个实施例中,互连网络162可以是固定的(即,不可重新配置)。

在示例性实施例中(例如,参见下文提供的表I-1,其中“X”符号指示在两个端口之间的现有连接),互连网络162可以实现以下连接:被耦合到处理元件160的P主端口MP0、MP1、…、MPP-1可以被连接到被耦合到本地数据存储器控制器163的相应的从端口SP0、SP1、…、SPP-1;以及被耦合到系统互连网络18的系统主端口MPP可以被连接到被耦合到本地控制单元161的从端口SPP+1和本地配置存储器控制器166。

下文提供的表I-1总结了通过互连网络162实现的这种示例性连接。

表I-1

SP<sub>0</sub> SP<sub>1</sub> SP<sub>P-1</sub> SP<sub>P</sub> SP<sub>P+1</sub>
MP<sub>0</sub> X
MP<sub>1</sub> X
MP<sub>P-1</sub> X
MP<sub>P</sub> X

在另一个示例性实施例中(例如,参见下文提供的表I-2),互连网络162可进一步实现以下连接:P主端口MP0、MP1、…、MPP-1中的每个P主端口可以被连接到耦合到系统互连网络18的系统从端口SPP。以这种方式,可以经由系统互连网络18在任何处理元件160与SoC之间提供连接性。

下文提供的表I-2总结了通过互连网络162实现的这种示例性连接。

表I-2

SP<sub>0</sub> SP<sub>1</sub> SP<sub>P-1</sub> SP<sub>P</sub> SP<sub>P+1</sub>
MP<sub>0</sub> X X
MP<sub>1</sub> X X
MP<sub>P-1</sub> X X
MP<sub>P</sub> X

在另一示例性实施例中(例如,参见下文提供的表I-3,其中“X”符号指示两个端口之间的现有连接,以及在括号中的“X”指示可选连接),互连网络162可以进一步实现以下连接:被耦合到系统互连网络18的系统主端口MPP可以被连接到从端口SP0、SP1、…、SPP-1中的至少一个从端口(这里,该P从端口集合SP0、SP1、…、SPP-1中的第一从端口SP0)。以这种方式,可以在主端口MPP与(任何)从端口之间提供连接。根据系统1的特定应用,主端口MPP的连接可以被扩展到多个(例如,所有)从端口SP0、SP1、…、SPP-1。主端口MPP到从端口SP0、SP1、…、SPP-1中的至少一个从端口的连接可以(仅)用于将要处理的输入数据加载到本地数据存储器组M0、…、MQ-1中,这是因为所有的存储器组都可以经由单个从端口访问。加载输入数据可以仅使用一个从端口来完成,而借助并行计算来处理数据可以有利地使用多个(例如,所有)从端口SP0、SP1、…、SPP-1

下文提供的表I-3总结了借助互连网络162实现的这种示例性连接。

表I-3

SP<sub>0</sub> SP<sub>1</sub> SP<sub>P-1</sub> SP<sub>P</sub> SP<sub>P+1</sub>
MP<sub>0</sub> X X
MP<sub>1</sub> X X
MP<sub>P-1</sub> X X
MP<sub>P</sub> X (X) (X) (X) X

在一个或多个实施例中,本地数据存储器控制器163可以被配置为仲裁(例如,由处理元件160)对本地数据存储器组M0、…、MQ-1的访问。例如,本地数据存储器控制器163可以使用根据从本地控制单元161接收的信号可选择的存储器访问方案(例如,用于特定算法的计算)。

在一个或多个实施例中,本地数据存储器控制器163可以根据指定的突发类型、突发长度和存储器访问方案,将由直接读取/写入存储器访问控制器168生成的输入读/写事务突发(例如,AXI突发)转换为读/写存储器访问序列。

因此,如图1中所示的硬件加速器电路16的一个或多个实施例可以旨在通过将处理元件与本地数据存储器组之间的(可重构)连接的实现方式委托给本地数据存储器控制器163,来降低本地互连网络162的复杂性。

在一个或多个实施例中,由处理元件160经由本地ROM控制器164可访问的本地只读存储器1650、1651、…、165P-1可以被配置为存储用于实现特定算法或操作的数字因数和/或固定系数(例如,用于FFT计算的旋转因数或其他复系数)。本地ROM控制器164可以实现特定的寻址方案。

在一个或多个实施例中,由处理元件160经由本地配置存储器控制器166可访问的本地可配置系数存储器1670、1671、…、167P-1可以被配置为存储可以由软件配置的依赖于应用的数字因数和/或系数(例如,用于实现FIR滤波器或波束形成操作的系数、神经网络的权重等)。本地配置存储器控制器166可以实现特定的寻址方案。

在一个或多个实施例中,本地只读存储器1650、1651、…、165P-1和/或本地可配置系数存储器1670、1671、…、167P-1可以有利地被分割成与包括在硬件加速器电路16中的处理元件160的数目相等的数目P个组。这有助于避免在并行计算期间的冲突。例如,每个本地可配置系数存储器可以被配置为并行地提供每个处理元件160所需的完整系数集合。

图2是处理元件160以及到本地ROM控制器164、本地配置存储器控制器166和本地数据存储器组M0、…、MQ-1的相关连接的一个或多个实施例的示例性电路框图(其中虚线示意性地指示在处理元件160与本地数据存储器组M0、…、MQ-1之间的可重构连接)。

如图2中所示的处理元件160可以被配置为接收:经由相应的直接读取存储器访问2000和缓冲寄存器2020(例如,FIFO寄存器)的第一输入信号P(例如,指示来自本地数据存储器组M0、…、MQ-1的二进制值的数字信号,可能具有实部和虚部的复数数据);经由相应的直接读取存储器访问2001和缓冲寄存器2021(例如,FIFO寄存器)的第二输入信号Q(例如,指示来自本地数据存储器组M0、…、MQ-1的二进制值的数字信号,可以具有实部和虚部的复数数据);第一输入系数W0(例如,表示来自本地只读存储器165的二进制值的数字信号);以及第二、第三、第四和第五输入系数W1、W2、W3、W4(例如,指示来自本地可配置系数存储器167的相应的二进制值的数字信号)。

在一个或多个实施例中,处理元件160可以包括与输入信号P、Q的数目相等的多个直接读取存储器访问200。

应当理解的是,在不同的实施例中,在处理元件160处接收的输入信号和/或输入系数的数目可以变化。

处理元件160可以包括计算电路20,计算电路20可以被配置为(可能在运行时)处理输入值P、Q和输入系数W0、W1、W2、W3、W4,以产生第一输出信号X0(例如,指示经由相应的直接写入存储器访问2040和缓冲寄存器2060(诸如FIFO寄存器)要存储在本地数据存储器组M0、…、MQ-1中的二进制值的数字信号)以及第二输出信号X1(例如,指示经由相应的写入直接存储器访问2041和缓冲寄存器2061(诸如FIFO寄存器)要存储在本地数据存储器组M0、…、MQ-1中的二进制值的数字信号)。

在一个或多个实施例中,处理元件160可以包括与输出信号X0、X1的数目相等的多个写入直接存储器访问204。

在一个或多个实施例中,读取和/或写入直接存储器访问200、204(包括在直接存储器访问控制器168中)的编程可以经由接口(例如,AMBA接口)执行,该接口可以允许访问位于本地控制单元161中的内部控制寄存器。

此外,处理元件160可以包括被耦合到本地ROM控制器164的ROM地址发生器电路208和被耦合到本地配置存储器控制器166的存储器地址发生器电路210,以管理从中检索的数据。

图3是处理元件160的一个或多个实施例中可能包括的计算电路20的示例性电路框图。

如图3中所示,计算电路20可以包括处理资源集合,例如包括四个复/实乘法器电路(30a、30b、30c、30d)、两个复加法器-减法器电路(32a、32b)和两个累加器电路(34a,34b),处理资源集合如图3中所示可以重构耦合。例如,可以借助复用器电路(例如,36a至36j)获得处理资源的可重构耦合以形成不同的数据路径,其中不同的数据路径对应于不同的数学运算,其中每个复用器接收相应的控制信号(例如,S0至S7)。

在一个或多个实施例中,乘法器电路30a、30b、30c、30d可以被配置为(例如,借助于图中不可见的内部多路复用器电路)根据两种不同的配置进行操作,这两种配置可以根据提供给乘法器的控制信号S8来选择。在第一配置中(例如,如果S8=0),乘法器可以计算每个时钟周期的四个实数操作数上的两个实数积的结果(即,每个输入信号携带两个实数值)。在第二配置中(例如,如果S8=1),乘法器可以计算每个时钟周期的两个复数操作数上的一个复数积的结果(即,每个输入信号携带两个值,其中第一个值是操作数的实部,第二个值是操作数的虚部)。

下文提供的表II总结了乘法器电路30a、30b、30c、30d的示例性可能配置。

表II

通过示例的方式并且参考图3,处理资源可以如下所述进行布置。

第一乘法器30a可以接收第一输入信号W1和第二输入信号P(例如,复数操作数)。

第二乘法器30b可以借助第一复用器36a接收从输入信号W2和W4中选择的第一输入信号Q和第二输入信号,第一复用器36a接收相应的控制信号S2。例如,如果S2=0,则乘法器30b接收信号W2作为第二输入,如果S2=1,则乘法器30b接收信号W4作为第二输入。

第三乘法器30c可以接收从来自第一乘法器30a的输出信号和输入信号P中选择的第一输入信号。

例如,如图3中所示,第二复用器36b可以根据相应的控制信号S0提供来自第一乘法器30a的输出信号(例如,如果S0=0)或输入信号P(例如,如果S0=1)中的任一者作为输出。第三复用器36c可以根据相应的控制信号S3提供来自第二复用器36b的输出信号(例如,如果S3=1)或输入信号P(例如,如果S3=0)中的任一者作为对第三乘法器30c的第一输入的输出。

第三乘法器30c可以接收从输入信号W3、输入信号W4和输入信号W0中选择的第二输入信号。

例如,如图3中所示,第四复用器36d可以根据相应的控制信号S3提供输入信号W4(例如,如果S3=0)或输入信号W0(例如,如果S3=1)中任一者作为输出。第五复用器36e可以根据相应的控制信号S3提供输入信号W3(例如,如果S3=0)或来自第四复用器36d的输出信号(例如,如果S3=1)中任一者作为对第三乘法器30c的第二输入的输出。

第四乘法器30d可以接收从输入信号Q和来自第二乘法器30b的输出信号中选择的第一输入信号。

例如,如图3中所示,第六复用器36f可以根据相应的控制信号S1提供输入信号Q(例如,如果S1=0)或来自第二乘法器30b的输出信号(例如,如果S1=1)中任一者作为对第四乘法器30d的第一输入的输出。

第四乘法器30d可以接收从输入信号W4和输入信号W0中选择的第二输入信号。

例如,如图3所示,第四乘法器30d的第二输入可以被耦合到第四复用器36d的输出。

第一加法器-减法器32a可以接收从来自第一乘法器30a的输出信号、输入信号P和来自第三乘法器30c的输出信号中选择的第一输入信号。

例如,如图3中所示,第七复用器36g可以提供来自第二复用器36b的输出信号(例如,如果S7=1)或来自第三乘法器30c的输出信号(例如,如果S7=0)中任一者作为对第一加法器-减法器32a的第一输入的输出。

第一加法器-减法器32a可以接收从输入信号Q、来自第二乘法器30b的输出和零信号(即,等于零的二进制信号)中选择的第二输入信号。

例如,如图3中所示,第八复用器36h可以根据相应的控制信号S6提供输入信号Q(例如,如果S6=0)或来自第二乘法器30b的输出信号(例如,如果S6=1)中任一者作为输出。第一与门38a可以接收来自第八复用器36h的输出信号作为第一输入信号,以及接收控制信号G0作为第二输入信号。第一与门38a的输出可以被耦合到第一加法器-减法器32a的第二输入。

第二加法器-减法器32b可以接收从第三乘法器30c的输出信号和第四乘法器30d的输出信号中选择的第一输入信号。

例如,如图3中所示,第九复用器36i可以根据相应的控制信号S5提供来自第三乘法器30c的输出信号(例如,如果S5=0)或来自第四乘法器30d的输出信号(例如,如果S5=1)中任一者作为对第二加法器-减法器32b的第一输入的输出。

第二加法器-减法器32b可以接收从来自第四乘法器30d的输出、来自第二乘法器30b的输出和零信号(即,等于零的二进制信号)中选择的第二输入信号。

例如,如图3中所示,第十复用器36j可以根据相应的控制信号S4提供来自第四乘法器30d的输出信号(例如,如果S4=0)或来自第二乘法器30b的输出信号(例如,如果S4=1)中任一者作为输出。第二与门38b可以接收来自第十复用器36j的输出信号作为第一输入信号,以及控制信号G1作为第二输入信号。第二与门38b的输出可以被耦合到第二加法器-减法器32b的第二输入。

第一累加器34a可以接收来自第一加法器-减法器32a的输出的输入信号和控制信号EN,以提供计算电路20的第一输出信号X0。

第二累加器34b可以接收来自第二加法器-减法器32b的输出的输入信号和控制信号EN,以提供计算电路20的第二输出信号X1。

包括加法器-减法器32a、32b的一个或多个实施例可以保持借助与门38a、38b“旁路”它们的操作,与门38a、38b可以用于在加法器-减法器32a、32b的第二输入处强制零信号。

图4是处理元件160的一个或多个实施例中可能包括的计算电路20的其他实施例的示例性电路框图。

如图4中所示的一个或多个实施例可以包括与参考图3所讨论的相同的处理资源和多路复用器电路的布置,附加两个被配置为计算激活非线性函数(ANLF)的电路40a、40b以及相应的多路复用器电路36k,36m。

通过示例的方式并且参考图4,附加处理资源40a、40b可以如下所述布置。

第一ANLF电路40a可以从第一累加器34a的输出接收输入信号。第十一复用器36k可以根据相应的控制信号S9通过选择来自第一累加器34a的输出信号(例如,如果S9=0)或来自第一ANLF电路40a的输出信号(例如,如果S9=1)中任一者来提供计算电路20的第一输出信号X0。

第二ANLF电路40b可以从第二累加器34b的输出接收输入信号。第十二复用器36m可以根据相应的控制信号S9通过选择来自第二累加器34b的输出信号(例如,如果S9=0)或来自第二ANLF电路40b的输出信号(例如,如果S9=1)中任一者来提供计算电路20的第二输出信号X1。

因此,在如图4中所示的一个或多个实施例中,ANLF电路40a和40b可以借助复用器电路36k和36m“旁路”,从而提供类似于图3中所示的实施例的操作。

因此,参考图3和图4所示,计算电路20中的数据路径可以被配置为支持并行计算,并且可以有助于不同功能的执行。在一个或多个实施例中,内部管道可以被设计成满足对最小延迟的时序约束(例如,时钟频率)。

在下文中,提供了计算电路20的可能配置的各种非限制性示例。在每个示例中,计算电路20被配置为计算依赖于算法的(基本)函数。

在第一示例中,描述了用于执行快速傅立叶变换(FFT)算法的计算电路20的配置。

在需要硬件加速器电路16计算FFT算法的情况下,单个处理元件160可以被编程为实现基-2DIF(按频率抽取)蝶形算法,执行以下复数运算,例如,使用来自内部控制单元161的信号:

X0=P+Q

X1=P*W0-Q*W0

其中W0可以是存储在本地只读存储器165内的旋转因数。

在本第一示例中,输入信号(P、Q、W0、W1、W2、W3、W4)和输出信号(X0、X1)可以是复数数据类型。

可选地,为了减少计算FFT算法的数据块边缘的不连续性对频谱的影响,可以在计算FFT算法之前对输入数据应用窗函数。例如,通过使用四个乘法器电路,处理元件160可以支持这种窗处理。

可选地,频谱分量的模或相位可以用于代替复数值(例如,在雷达目标检测等应用中)。在这种情况下,内部(可选)ANLF电路可以在最后一个FFT阶段期间使用。例如,可以旋转输入复数向量,使其与x轴线对齐以计算模块。

下文提供的表III总结了用于计算不同基-2算法的计算电路20的一些示例性配置。

表III

因此,与上文例示的功能“基-2蝴蝶算法”对应的数据流可以是:

X0=P+Q

X1=P*W0-Q*W0

与上文例示的函数“基-2蝴蝶算法+窗”对应的数据流可以是:

X0=W1*P+W2*Q

X1=(W1*P)*W0-(W2*Q)*W0

与上文例示的功能“基-2蝴蝶算法+模”对应的数据流可以是:

X0=abs(P+Q)

X1=abs(P*W0-Q*W0)

在本文考虑的第一示例中,与“基-2蝴蝶算法”对应的配置可以涉及使用两个乘法器电路、两个加法器-减法器电路,无累加器并且无ANLF电路。

在本文考虑的第一示例中,与“基-2蝴蝶算法+窗”对应的配置可以涉及使用四个乘法器电路、两个加法器-减法器电路,无累加器并且无ANLF电路。

在本文考虑的第一示例中,与“基-2蝴蝶算法+模”对应的配置可以涉及使用两个乘法器电路、两个加法器-减法器电路、两个ANLF电路,无累加器。

在第二示例中,描述了用于执行复数据向量的标量积的计算电路20的配置。

可能需要硬件加速器电路16来计算复数据向量的标量积。例如,这可以是涉及滤波操作的应用的情况,例如涉及称为波束形成的处理阶段的相控阵雷达系统。波束形成技术可以帮助雷达系统在距离和径向速度的基础上,在角度(方位)上分辨目标。

在本第二示例中,输入信号(P、Q、W0、W1、W2、W3、W4)和输出信号(X0、X1)可以是复数数据类型。

在本第二示例中,两个不同的标量向量积运算(例如,波束形成操作)可以由单个处理元件160(例如,通过利用所有内部硬件资源)同时执行。

在波束形成操作期间,本地可配置系数存储器167可以用于存储不同阵列天线元件的相移。

与第一示例类似,在本第二示例中,如果要计算模而不是复数值,则可以选择使用ANLF电路。

下文提供的表IV例示了用于同时计算两个向量的标量积的计算电路20的可能配置。

表IV

因此,与上文例示的函数“向量的标量积”对应的数据流可以是:

X0=ACC(P*W1+Q*W2)

X1=ACC(P*W3+Q*W4)

与上文例示的功能“向量的标量积+模”对应的数据流可以是:

X0=abs(ACC(P*W1+Q*W2))

X1=abs(ACC(P*W3+Q*W4))

在本文考虑的第二示例中,与“向量的标量积”对应的配置可以涉及使用四个乘法器电路、两个加法器-减法器电路、两个累加器并且无ANLF电路。

在本文考虑的第二示例中,与“向量的标量积+模”对应的配置可以涉及使用四个乘法器电路、两个加法器-减法器电路、两个累加器和两个ANLF电路。

在第三示例中,描述了用于执行实数数据向量的标量积的计算电路20的配置。

可以需要硬件加速器电路16来计算大型实数数据结构上实数数据向量的标量积,例如,用于计算数字滤波器。例如,在许多应用中,现实世界(例如,模拟)信号在被数字化之后可以进行滤波,以便(仅)提取相关信息。

在数字域中,在输入信号与滤波器冲激响应(FIR)之间的卷积运算可以采用两个实数数据向量的标量积的形式。两个向量中的一个向量可以保持输入数据,而另一个向量可以保持定义滤波操作的系数。

在本第三示例中,输入信号(P、Q、W0、W1、W2、W3、W4)和输出信号(X0、X1)是实数数据类型。

在本第三示例中,两个不同的滤波操作可以由单个处理元件160在同一数据集上同时执行,例如通过利用所有内部硬件资源,在每个时钟周期处理四个不同的输入数据。

下文提供的表V例示了计算电路20的用于对实数数据向量同时计算两个滤波操作的可能的配置。

表V

因此,与上文例示的函数对应的数据流如下,其中下标“h”表示MSB部分,下标“l”表示LSB部分:

X0h=ACC(Ph*W1h+Qh*W2h)

X0l=ACC(Pl*W1l+Ql*W2l)

X1h=ACC(Ph*W3h+Qh*W4h)

X1l=ACC(Pl*W3l+Ql*W4l)

在本文考虑的第三示例中,与“实向量的标量积”对应的配置可以涉及使用四个乘法器电路、两个加法器-减法器电路、两个累加器并且无ANLF电路。

在第四示例中,描述了用于计算非线性函数的计算电路20的配置。

多层感知器(MLP)是一类完全连接的前馈人工神经网络,它可以包括至少三层节点/神经元。除了在输入层中的神经元外,每个神经元计算前一层所有节点的加权和,然后对结果应用非线性激活函数。如本文所公开的处理元件160可以处理此类非线性函数,例如,使用内部ANLF电路。通常,神经网络处理来自真实世界的数据,并且使用真实的权重和函数来计算类别成员概率(最后一层的输出)。因此,对于这类人工网络,实数数据标量积可以是计算要求最高、使用频率最高的运算。

图5是多层感知器网络50的通常结构的示例图。

如图5中所示,多层感知器网络50可以包括输入层50a,包括N个输入U1、…、UN(Ui,i=1、…、N),隐藏层50b,包括M个隐藏节点X1、…、XM(Xk,k=1、…、M),输出层50c,包括P个输出节点Y1、…、YP(Yj,j=1、…、P)。

应当理解的是,在一个或多个实施例中,多层感知器网络可以包括多于一个的隐藏层50b。

如图5所示,多层感知器网络50可以包括在输入U1、…、UN与隐藏节点X1、…、XM之间的第一N*M权重集合Wi,k,以及在隐藏节点X1、…、XM与输出节点Y1、…、YP之间的第二M*P权重集合Wk,j

存储在输入Ui、隐藏节点Xk和输出节点Yj中的值例如可以作为具有单精度的MAC浮点来计算。

隐藏节点Xk和输出节点Yj的值可以根据以下等式计算:

在本第四示例中,与MLP的所有边缘相关联的训练的实际权重可以存储在本地可配置系数存储器167中。实数层输入可以从硬件加速器电路16的本地数据存储器(例如,本地数据存储器组M0、…、MQ-1)检索,并且实数层输出可以存储到硬件加速器电路16的本地数据存储器中。

由于MLP模型被映射到硬件加速器电路16上,其中包括的每个处理元件160(例如,P个处理元件)可以用于计算与同一层的两个不同神经元相关联的标量积和激活函数输出,例如,每个时钟周期处理四个边缘。因此,可以同时使用所有处理元件1600、1601、…、160P-1

下文提供的表VI例示了计算电路20的可能配置,用于同时计算与两个不同神经元相关联的两个激活功能输出。

表VI

因此,与上文例示的函数对应的数据流如下,其中下标“h”表示MSB部分,下标“l”表示LSB部分:

X0h=f(ACC(Ph*W1h+Qh*W2h))

X0l=f(ACC(Pl*W1l+Ql*W2l))

X1h=f(ACC(Ph*W3h+Qh*W4h))

X1l=f(ACC(Pl*W3l+Ql*W4l))

在本文考虑的第四示例中,与功能“MLP计算引擎”(其可以包括计算向量的两个标量积并对其应用非线性激活函数)对应的配置可以涉及使用四个乘法器电路、两个加法器-减法器电路、两个累加器和两个ANLF电路。

下文提供的表VII例示了可以在一个或多个实施例中实现的非线性函数。用“算法=NN”表示的一些函数可以在神经网络的上下文中专门使用。

表VII

因此,硬件加速器电路16的一个或多个实施例,包括本文和/或以上示例中所示的至少一个计算电路20,可有助于实现具有以下一个或多个优点的数字信号处理系统:灵活性(例如,处理不同类型算法的能力)、硬件资源的改善使用、并行计算的改善性能、每个处理元件160到本地数据存储器组M0、…、MQ-1和/或到系统存储器12的扩展连接性和高带宽,通过简单的本地互联网络162和内部网络162直接内存访问控制器1680、1681、…、168P-1、以及通过集成不同的处理元件的可扩展体系结构来支持额外的算法。

在一个或多个实施例中,电子系统1可以实现为单个硅芯片或芯片中的集成电路(例如,作为片上系统)。或者,电子系统1可以是分布式系统,包括例如借助印刷电路板(PCB)互连在一起的多个集成电路。

如本文所示,电路(例如160)可以包括输入端子集合,被配置为接收携带输入数据的输入数字信号集合(例如P、Q、W0、W1、W2、W3、W4);输出端子集合,被配置为提供携带输出数据的输出数字信号集合(例如X0,X1);以及计算电路装置(例如,20),被配置为根据输入数据产生输出数据。计算电路装置可以包括:乘法器电路集合(例如,30a、30b、30c、30d)、加法器-减法器电路集合(例如,32a、32b)、累加器电路集合(例如,34a、34b)以及可配置互连网络(例如,36a、…、36j),该可配置互连网络被配置为在至少两种处理配置中选择性地耦合(例如,S1、…、S7)乘法器电路、加法器-减法器电路、累加器电路、输入端子和输出端子。

如本文所示,在第一处理配置中,计算电路装置可以被配置为根据第一函数集合计算输出数据,并且在至少一个第二处理配置中,计算电路装置可以被配置为根据相应的第二函数集合计算输出数据,相应的第二函数集合与第一函数集合不同。

如本文所示,电路可以包括相应的可配置的直接读取存储器访问控制器(例如,2000、2001),被耦合到输入端子集合的第一子集以接收(例如,162、163)携带输入数据(例如,P、Q)的第一子集的输入数字信号的相应的第一子集。可配置的直接读取存储器访问控制器可以被配置为控制从存储器(例如,M0、…、MQ-1)获取输入数据的第一子集。

如本文所示,电路可以包括相应的可配置的直接写入存储器访问控制器(例如2040、2041),被耦合到该组输出端子以提供携带输出数据的输出数字信号。可配置的直接写入存储器访问控制器可以被配置为控制到存储器中的输出数据存储。

如本文所示,电路可以包括被耦合到可配置的直接读取存储器访问控制器的相应的输入缓冲寄存器(例如,2020、2021)和被耦合到可配置的写入直接存储器访问控制器的各个输出缓冲寄存器(例如,2060、2061)。

如本文所示,电路可以包括ROM地址发生器电路(例如208),被配置为控制经由输入数字信号的第二子集从至少一个只读存储器(例如,164、165)获取输入数据的第二子集(例如W0),和/或存储器地址发生器电路(例如,210),被配置为控制经由输入数字信号的第三子集从至少一个可配置存储器(例如,166、167)获取输入数据的第三子集(例如,W1、W2、W3、W4)。

如本文所示,在根据实施例的电路中,该乘法器电路集合可以包括第一乘法器电路(例如,30a)、第二乘法器电路(例如,30b)、第三乘法器电路(例如,30c)和第四乘法器电路(例如,30d)。该加法器-减法器电路集合可以包括第一加法器-减法器电路(例如,32a)和第二加法器-减法器电路(32b)。该累加器电路集合可以包括第一累加器电路(例如,34a)和第二累加器电路(例如,34b)。

如本文所示,第一乘法器电路可以接收输入数字信号集的第一输入信号(例如,W1)作为第一操作数,并且可以接收输入数字信号集的第二输入信号(例如,P)作为第二操作数。第二乘法器电路可以接收输入数字信号集合的第三输入信号(例如,Q)作为第一操作数,并且可以接收从该输入数字信号集合的第四输入信号(例如,W2)和第五输入信号(例如,W4)中可选择的信号作为第二操作数。第三乘法器电路可以接收从来自第一乘法器电路的输出信号和第二输入信号中可选择的信号作为第一操作数,并且可以接收从第六输入信号(例如W3)、第七输入信号(例如W0)和第五输入信号中选择的信号作为第二操作数。第四乘法器电路可以接收从来自第二乘法器的输出信号和第三输入信号中可选择的信号作为第一操作数,并且可以接收从第五输入信号和第七输入信号中选择的信号作为第二操作数。第一加法器-减法器电路可以接收从来自第一乘法器电路的输出信号、第二输入信号和来自第三乘法器电路的输出信号中可选择的信号作为第一操作数,并且可以接收从第三输入信号、来自第二乘法器电路的输出信号和零信号中可选择的信号作为第二操作数。第二加法器-减法器电路可以接收从来自第三乘法器电路的输出信号和来自第四乘法器电路的输出信号中可选择的信号作为第一操作数,并且可以接收从来自第四乘法器电路的输出信号、来自第二乘法器电路的输出信号和零信号中可选择的信号作为第二操作数。第一累加器电路可以接收来自第一加法器-减法器电路的输出信号作为输入,并且第二累加器电路可以接收来自第二加法器-减法器电路的输出信号作为输入。第一累加器电路可以选择性地激活(例如,EN)以提供第一输出信号(例如,X0),并且第二累加器电路可以选择性地激活以提供第二输出信号(例如,X1)。

如本文所示,计算电路装置可以包括一组被配置为计算非线性函数的电路(例如,40a、40b)。

如本文所示,被配置为计算非线性函数的电路集合可以包括被配置为计算非线性函数的第一电路(例如,40a)和被配置为计算非线性函数的第二电路(例如,40b)。被配置为计算非线性函数的第一电路可以接收来自第一累加器电路的输出信号作为输入。被配置为计算非线性函数的第二电路可以接收来自第二累加器电路的输出信号作为输入。第一输出信号可以在来自第一累加器电路的输出信号与来自被配置为计算非线性函数的第一电路的输出信号之间可选择(例如,36k),并且第二输出信号可以在来自第二累加器电路的输出信号与来自被配置为计算非线性函数的第二电路的输出信号之间可选择(例如,36m)。

如本文所示,设备(例如,16)可以包括根据一个或多个实施例的一组电路、一组数据存储器组(例如,M0、…、MQ-1)和控制单元(例如,161)。根据存储在控制单元中的配置数据,电路可以被配置(例如,161、168)为经由互连网络(例如,162、163)从数据存储器组读取数据并将数据写入数据存储器组。

如本文所示,数据存储器组可以包括缓冲寄存器,优选地为双缓冲寄存器。

如本文所示,系统(例如,1)可以包括根据一个或多个实施例的设备和经由系统互连(例如,18)耦合到该设备的处理单元(例如,10)。根据从处理单元接收的控制信号,设备的电路集合中的电路可以在至少两种处理配置中配置。

如本文所示,根据一个或多个实施例操作电路的方法、根据一个或多个实施例的设备或根据一个或多个实施例的系统可以包括在至少第一和第二操作间隔中划分计算电路装置的操作时间,其中该计算电路装置分别在第一处理配置和至少一个第二处理配置中操作。

在不损害基本原则的情况下,细节和实施例可以相对于仅通过示例的方式描述的内容而变化,甚至显著变化,而不背离保护的范围。

所附权利要求定义了保护范围。

虽然本发明已经参考示例性实施例进行了描述,但是本描述不旨在限制意义上进行解释。本领域的技术人员通过参考说明书,将清楚地看到说明性实施例以及本发明的其他实施例的各种修改和组合。因此,所附权利要求旨在包含任何此类修改或实施例。

28页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:面向自供能系统的存算一体架构及软件优化方法

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!