乘法器累加器电路、用于乘法累加的逻辑瓦片架构和包括逻辑瓦片阵列的ic

文档序号:751833 发布日期:2021-04-02 浏览:14次 >En<

阅读说明:本技术 乘法器累加器电路、用于乘法累加的逻辑瓦片架构和包括逻辑瓦片阵列的ic (Multiplier accumulator circuit, logic tile architecture for multiply accumulation and IC including logic tile array ) 是由 C·C·王 于 2019-08-20 设计创作,主要内容包括:一种集成电路,包括以级联架构互连的多个乘法累加器电路系统。每个乘法累加器电路系统包括第一和第二MAC电路以及负载存储寄存器。第一MAC电路包括:乘法器,用于将第一数据乘以第一乘法器权重数据并生成第一乘积数据;以及累加器,用于将第一输入数据与第一乘积数据相加以生成第一求和数据。第二MAC电路包括:乘法器,用于将第二数据乘以第二乘法器权重数据并生成第二乘积数据;以及累加器,耦合到第二MAC电路的乘法器与第一MAC电路的累加器,以将第一求和数据与第二乘积数据相加以生成第二求和数据。负载存储寄存器耦合到第二MAC电路的累加器,以临时存储第二求和数据。(An integrated circuit includes a plurality of multiply accumulator circuitry interconnected in a cascaded architecture. Each multiply accumulator circuitry includes first and second MAC circuits and a load store register. The first MAC circuit includes: a multiplier for multiplying the first data by the first multiplier weight data and generating first product data; and an accumulator for adding the first input data and the first product data to generate first summation data. The second MAC circuit includes: a multiplier for multiplying the second data by second multiplier weight data and generating second product data; and an accumulator coupled to the multiplier of the second MAC circuit and the accumulator of the first MAC circuit to add the first summation data and the second product data to generate second summation data. A load storage register is coupled to the accumulator of the second MAC circuit to temporarily store the second summation data.)

具体实施方式

在第一方面,本发明涉及乘法器累加器电路系统以及用于操作这种电路系统的技术。在一个实施例中,本发明的乘法器累加器电路系统包括促进乘法和累加运算的流水线的多个分开的乘法器累加器电路和多个寄存器(包括多个影子寄存器)。此外,乘法器累加器电路系统还包括促进实现或并入级联架构的电路系统,由此多个乘法器累加器电路系统将乘法和累加运算级联。以这种方式,多个乘法器累加器电路系统可以更迅速地和/或以更小/更少的数据移动和存储器访问来执行和/或完成这样的运算。值得注意的是,可以例如原位(即,在集成电路的操作期间)修改、改变或调整(即,增加或减少)级联的程度或长度(即,被采用和/或互连以实现或执行乘法和累加运算的乘法器累加器电路的数量),以例如满足系统要求或约束(例如,基于时间的要求)。

在一个实施例中,乘法器累加器电路系统还包括位于累加电路的输出处的负载/存储寄存器(两个互连的寄存器,其中每个寄存器的输出被路由到另一个寄存器的输入),以促进数据正在移入和移出乘法器累加器电路系统时乘法器累加器电路系统的连续操作。以这种方式,乘法器累加器电路系统可以在多个时钟沿上执行运算,从而在连续的流水线基础上完成这种运算。值得注意的是,负载/存储寄存器的负载和存储操作可以在同一时钟周期内发生,在这种情况下,常规寄存器中的数据和影子移位寄存器中的数据被交换。

在另一个方面中,本发明涉及具有多个乘法器累加器电路的集成电路以及用于操作这种电路的技术。例如,在一个实施例中,集成电路是包括多个逻辑瓦片的FPGA—其中一个或多个这样的瓦片包括多个乘法器累加器电路,以例如以流水线方式实现乘法和累加运算。而且,这样的乘法器累加器电路可以进一步促进级联乘法和累加运算,从而允许多个乘法器累加器电路系统更迅速地执行这样的运算。实际上,可以例如原位(即,在集成电路的操作期间)修改、改变或调整(即,增加或减少)级联的程度或长度(即,被采用和/或互连以实现或执行乘法和累加运算的乘法器累加器电路的数量),以例如满足系统要求或约束(例如,基于时间的要求)。

参考图1A,在一个实施例中,示例性乘法器累加器电路系统包括两个分开的乘法器累加器电路—包括乘法器0和累加器0的第一乘法器累加器电路以及包括乘法器1和累加器1的第二乘法器累加器电路。乘法器累加器电路系统还包括多个影子寄存器(包括影子寄存器0和影子寄存器1),这些影子寄存器存储输入数据,直到输入数据被传输到第二组寄存器(即,分别为寄存器0和寄存器1)以供乘法器0和乘法器1使用为止。乘法器权重存储在存储器(例如,ROM)中,并选择性地(相对于与其相关联的输入数据)被提供给乘法器0和乘法器1,以执行或进行乘法运算。值得注意的是,在说明性实施例中,乘法器累加器电路系统有时被标记为“2-NMAX”或“NMAX”。

参考图2A和图2B,在一个实施例中,在操作中,在周期0至周期4期间,最初将输入数据时钟输入到并存储到乘法器累加器电路系统的影子寄存器(即,影子寄存器0和影子寄存器1)中。在周期5上,输入数据被时钟输入、存储或传输到寄存器(即,分别为寄存器0和1)中,以供乘法器0和乘法器1用于执行乘法运算(与存储在与输入数据相关联的存储器中的权重数据有关)。(参见,图2C中的周期6)。此后,每个乘法器的输出被提供给相关联的累加器,并且在新的输入数据和新的权重数据(与这种“新的”输入数据相关联)被传输到乘法器之前,累加加权的输入数据。(参见,与周期6的结束-周期7的开始相对应的时钟沿)。这些处理以流水线方式继续。

在对输入数据进行运算并累加加权的数据之后,可以在数据卸载期间或在数据卸载之后对累加的加权数据执行附加操作(例如,非线性操作、激活功能)。例如,参考图2D,在周期11、12、13和14期间,可以将累积的加权数据应用于附加操作(即,可以实现/采用现在已知或以后开发的任何操作—所有这些都可以意在落入本发明的范围内)。可以在将新的输入数据(从影子寄存器)加载到与乘法器累加器电路系统的乘法电路连接并相关联的寄存器中时以及在输出数据被卸载或输出时执行附加操作。在该实施例中,执行数据加载/输入操作(包括乘法和累加)以及卸载/输出操作并且以这种流水线方式继续。(参见,例如,图2B-图2E)。

值得注意的是,在一个实施例中,示例性乘法器累加器电路系统的架构被组织为允许或以级联方式执行图2A中所示的乘法和累加运算。就这一点而言,乘法器累加器电路系统向连接到第一乘法器累加器电路系统(参见图3)的第二乘法器累加器电路系统(参见图1A)的输入(例如,在输入MAC I处)输出/提供图1C中所示的部分完成的运算(例如,在输出MAC O处)。除此之外或作为代替,乘法器累加器电路系统的输出也可以提供给其它电路系统,例如存储器。也就是说,数据可以在MAC SO输出处输出或移出乘法器累加器电路系统,并且在一个实施例中,可以将由乘法器累加器电路系统生成的输出数据存储在存储器中。

可以使用现在已知或以后开发的任何电路系统和技术将乘法权重的数据存储在与乘法器累加器电路系统相关联的存储器中—所有这些电路系统和技术均旨在落入本发明的范围内。例如,在一个实施例中,可以经由图1B的电路系统将这样的数据存储在多个乘法器累加器电路系统的存储器中。下面将结合其它实施例来讨论图1B的电路系统和运算。

参考图1A和图1C,在一个实施例中,乘法器累加器电路系统包括在数据移入和移出时促进乘法器累加器电路系统的连续运算的负载/存储寄存器。(参见,例如,图1A中的负载/存储影子寄存器A和负载/存储影子寄存器B)。也就是说,负载/存储寄存器允许在“白色”常规寄存器和“阴影”(或“斜线的”)影子移位寄存器之间进行数据传输。在此,当乘法和累加运算完成时,输出数据首先存储在“白色”常规寄存器中。然后,MAC_ST控制信号允许从白色常规寄存器到“阴影”移位寄存器上/中的数据传输。此外,如果“白色”常规寄存器需要被初始化为某个值,则“阴影”移位寄存器可以移入初始化数据,并使用MAC_LD将数据从“阴影”移位寄存器移入“白色”常规寄存器上/中。MAC_ST和MAC_LD均可能在同一时钟周期内发生,在这种情况下,“白色”常规寄存器和“阴影”(影子)移位寄存器中的数据将交换。

值得注意的是,继续参考图1A,可以经由输入MAC SI将数据直接施加/输入到负载/存储影子寄存器A和负载/存储影子寄存器B,其中数据移入“阴影”或“斜线的”移位寄存器中。在此,可以采用旁路电路(包括,例如多路复用器)来旁路某些乘法器累加器电路系统(例如,包括乘法器0和累加器0的乘法器累加器电路),其中输入信号MAC_SI上的数据可以存储在累加器0的输出处的(一个或多个)负载/存储寄存器的“阴影”移位寄存器中。类似地,可以采用旁路电路(例如,多路复用器)来旁路乘法器1和累加器1的乘法器累加器电路系统,其中来自累加器0的输出处的(一个或多个)负载/存储寄存器的“阴影”移位寄存器的数据可以存储在累加器1的输出处的(一个或多个)负载/存储寄存器的“阴影”移位寄存器中。在一个实施例中,数据(例如,初始化数据)可以被移位到寄存器中,并且经由施加MAC_LD控制信号,这种数据可以从“阴影”(影子)移位寄存器将数据传输到“白色”常规寄存器上/中以供乘法器累加器电路系统使用或实现为乘法器累加器电路系统。在一个实施例中,然后可以经由旁路电路将存储在(一个或多个)负载/存储寄存器(即,在该说明性实施例中为负载/存储影子寄存器B)中的数据输出到例如相继的乘法器累加器电路系统,其中多个乘法器累加器电路系统以级联架构或配置互连。(参见,例如,图3)。乘法器累加器电路系统此后可以执行包括乘法和累加运算的运算,如本文所述。

在另一个方面中,本发明针对具有多个逻辑瓦片的集成电路—其中一个或多个(或全部)这样的瓦片包括多个乘法器累加器电路(例如,图1A-图1C中所示的乘法器累加器电路系统—即,促进乘法和累加运算的流水线的多个分开的乘法器累加器电路和多个寄存器(包括多个影子寄存器)),以例如以流水线方式(即,采用流水线处理技术)实现乘法和累加运算。(参见,例如,图4)。在一个实施例中,集成电路是或包括耦合到和/或包括多个乘法器累加器电路系统(标记为“NMAX行”)的FPGA(如上所述,“FPGA”在本文中意指分立FPGA或嵌入式FPGA)。(参见,例如,图5A)。乘法器累加器电路系统可以按行和/或列组织(在下文中统称为“行”或“行”)。即,在一个实施例中,多个乘法器累加器电路被串联连接(级联架构)并且被组织成多行,每行包括多个乘法器累加器电路。如下所详细讨论的,乘法器累加器电路的行可以连接或断开以调整级联的程度或长度(即,增加或减少互连以执行乘法和累加运算的乘法器累加器电路的数量)。

值得注意的是,集成电路可以包括在运算期间(例如,在FPGA和/或乘法器累加器电路系统的数据处理期间/用于数据处理)使用的“本地”存储器(例如,SRAM、DRAM、MRAM、ROM和/或闪存存储器)。(参见,例如,图4和图5A)。

在一个实施例中,集成电路的FPGA部分包括多个逻辑瓦片。(参见,例如,图6A和图6B)。FPGA还可以包括控制电路系统、定时或时钟电路系统以及电源电路系统。在一个实施例中,每个逻辑瓦片可以包括具有两个或更多个输入的多个多路复用器,所述多个多路复用器被电互连以形成开关互连网络(例如,可以被配置为分层和/或网状互连网络)以及连接到例如相关联的数据存储元件、输入引脚和/或查找表(LUT),当被编程时,它们确定多路复用器的操作)。

参考图5B、图5C和图5D,一个或多个(或全部)逻辑瓦片还可以包括一个或多个计算元件(例如,多个乘法器累加器电路—诸如,例如,如图3中所示地互连的图1A的多个乘法器累加器电路系统)。(参见在图5B和图5C中所示的逻辑瓦片布局或物理平面布置图中标记为“NMAX集群”的区域)。如上所述,互连网络(例如,混合模式互连网络(即,分层开关矩阵互连网络和网状、环形等的互连网络(在下文中统称为“网状网络”或“网状互连网络”))。例如,参考图5D,在一个实施例中,每个逻辑瓦片可以包括乘法器累加器电路系统、逻辑存储器和/或DSP内核,并且包含来自数百个可重新配置的构建块(RBB)(包括Kb RAM)的多于一千个LUT(例如,6输入LUT)和数百个I/O块(例如,各自为2输入、2输出)。如上所述,逻辑瓦片可以被“平铺”以由例如LUT形成阵列。

在一个实施例中,每个逻辑瓦片的开关互连网络可以包括布置在互连到分层互连网络中的多个开关矩阵级或开关矩阵级中的多个开关矩阵(例如,M×N开关矩阵)。(参见,例如,在美国专利9,503,092中描述和/或示出的互连网络,该美国专利通过引用并入本文)。在一个实施例中,开关互连网络直接连接到乘法器累加器电路的每一行中的至少一个乘法器累加器电路,以除其它外提供以下灵活性:配置、调整、修改和/或改变(i)被采用和/或互连以实现或执行乘法和累加运算的乘法器累加器电路(和/或乘法器累加器电路的行)和/或(ii)被采用和/或互连以执行乘法和累加运算的乘法器累加器电路的数量。如上所述,可以例如原位(即,在集成电路的操作期间)实现这样的配置、选择、修改和/或调整,以例如满足或超过系统要求或约束。

逻辑瓦片的开关互连网络还可以经由瓦片与瓦片互连网络(例如,网状互连网络,其中多个瓦片与瓦片互连在例如逻辑瓦片的一个或多个开关矩阵和逻辑瓦片的互连网络之间提供通信)的瓦片与瓦片互连来进行互连。这样,逻辑瓦片可配置为在集成电路的操作期间与逻辑瓦片内的计算元件(例如,多个乘法器累加器电路系统)以及与FPGA的至少一个其它逻辑瓦片进行通信(例如,提供/接收数据和地址以及提供控制信息)。此外,这些逻辑瓦片可配置为互连同一逻辑瓦片和/或不同的逻辑瓦片中或内部的计算元件(例如,(i)处理器电路系统(例如,一个或多个数字信号处理器(DSP))和(ii)多个乘法器累加器电路系统)以及集成电路的FPGA。

参考图5C、图5D和图7A-图7C,如上所提及的,集成电路的FPGA的一个或多个(或全部)逻辑瓦片包括作为乘法器累加器电路系统(例如,如上所述和如图1A-图1C中所示的乘法器累加器电路系统)的多个乘法器累加器电路(标记为“NMAX行”或“NMAX集群”)。在这些示例性实施例中,多个乘法器累加器电路如图3中所示地连接在一起,以提供乘法器累加器电路系统的行。乘法器累加器电路系统的行设置并连接在权重/数据存储器(例如,SRAM存储器存储体—参见图5B和图5C)之间。在一个实施例中,权重/数据存储器存储代表在多个乘法器累加器电路系统的乘法运算中采用的乘法器权重数据的数据。在一个实施例中,权重/数据存储器可以经由互连网络接收代表乘法器权重的数据。即,在一个实施例中,控制电路系统经由互连网络管理/控制将代表乘法器权重的数据写入权重/数据存储器(例如,SRAM存储器存储体)中。此后,可以将乘法器权重数据写入乘法器累加器电路系统的存储器(例如,ROM)中,该乘法器累加器电路系统选择性地将权重数据(相对于与之相关联的输入数据)提供给乘法器0和乘法器1(可以视情况而定)以执行乘法运算(参见图1A)。

继续参考图5C、图5D和图7A-图7C,在另一个实施例中,权重/数据存储器可以经由互连网络接收代表输入数据的数据。这些数据可以被从例如外部存储器(例如,DRAM)或其它片上存储器(即,在集成电路中/上设置或制造的存储器(例如,片上SRAM))读取、提供或到达。实际上,在另一个实施例中,权重/数据存储器可以接收和存储来自一个或多个NMAX集群(例如,来自NMAX电路系统(诸如来自多个逻辑瓦片中的相关联/同一逻辑瓦片或不同逻辑瓦片的其它NMAX电路系统)的输出数据)或另一组NMAX集群(诸如来自多个逻辑瓦片中的相关联/同一逻辑瓦片或不同逻辑瓦片的另一个NMAX集群)的数据。在任一实施例中,输入数据被移位到NMAX电路系统或NMAX集群的数据输入(例如,图1A的D0_I或D1_I端口)中。可以经由逻辑瓦片的互连网络在例如同一或不同逻辑瓦片的NMAX电路系统之间提供这种连接。

在又另一个实施例中,权重/数据存储器可以经由互连网络接收代表部分累加的MAC数据的数据。这样的数据可以从例如外部存储器(例如,DRAM)、另一片上存储器(例如,片上SRAM)或者一个或多个其它NMAX电路系统或NMAX集群(即,另一组NMAX集群)的输出到达/被提供。此后,部分累加的MAC数据被移入NMAX集群的MAC影子寄存器输入(例如,图1A的MAC_SI端口)中以将那些NMAX集群中的NMAX电路系统的MAC处理操作初始化为部分累加的MAC数据,以继续乘法和累加处理或运算。在一个实施例中,经由逻辑瓦片的开关互连网络来提供/建立这种连接。

值得注意的是,在一个实施例中,其中权重/数据存储器包括SRAM存储器存储体,采用修改的寻址电路系统和技术将数据写入SRAM中可能是有利的。参考图8,用于寻址SRAM的技术可以包括(除了SRAM中的寻址电路系统之外)促进经由数据扩展技术和地址扩展技术写入更多的SRAM的电路系统。通过数据扩展,SRAM比每个单独的SRAM数据端口实际上更宽,从而允许代表乘法器权重的数据并行将数据写入权重/数据SRAM存储体(例如,图8中的Q0和Q8是32位数据接口,每个接口可以同时写入2个SRAM)中,从而加快了将适当的数据写入权重/数据SRAM存储体中的操作。通过将一个地址应用于SRAM地址扩展电路系统,地址扩展允许访问单独的SRAM存储体,而无需为每个SRAM存储体单独寻址(例如,图8中的SRAM12、13、14、15共享公共输出数据Q8[31:16],并共享公共输入数据D8[31:16],但是它们经由XA[11]和XA[12]单独地可寻址),多个SRAM存储体作为单个“更深的”SRAM存储体行动、起作用或操作。实际上,实施地址扩展减少了用于与互连网络接口的输入/输出引脚/导体(例如,图8中的SRAM8、9、10、11、12、13、14和15共享一组输入和输出数据端口(D8,Q8)和一组控制输入(WA8,XA8,WE8,CE8,SLP8,SD8))。此外,乒乓缓冲器允许使用奇数/偶数读取写入技术/方法以促进同时向SRAM的每个存储体写入数据/从SRAM的每个存储体读取数据,只要读取地址为奇数且写入地址为偶数即可,或者反之亦然。

可以使用现在已知或以后开发的任何电路系统和技术将乘法权重的数据存储在与乘法器累加器电路系统相关联的存储器中—所有这些都旨在落入本发明的范围内。如上所提及的,在一个实施例中,这样的数据可以存储在采用图1B中所示的电路系统的多个乘法器累加器电路系统的存储器中。简要地说,并且参考图1B、图5C和图7C,可以直接经由连接到输入WD_I的相关联的互连网络或经由连接到输入WD Nl和/或WD SI的权重/数据存储器(例如,SRAM存储器存储体)将权重数据写入与乘法器累加器电路系统相关联的存储器(例如,ROM)中。乘法器累加器电路系统中的权重数据选择多路复用器(MUX)确定选择/启用哪个输入(即,连接到多路复用器的输出)并由此提供给存储器,以促进将数据写入乘法器累加器电路系统的存储器(例如,ROM)中。

其中在经由输入WD I直接写入每个乘法器累加器电路系统的存储器(例如,ROM)的情况下,互连网络经由NLINX接口连接器的WD_I连接到输入WD I,以通过移入数据直接和串行/顺序地将数据写入每个乘法器累加器电路系统的存储器。在一个实施例中,NLINX接口连接器包括用于每两行2-NMAX乘法器累加器电路系统的WD_I连接/输出,以连接到与两行2-NMAX乘法器累加器电路系统的每个乘法器累加器电路系统相关联的WD I信号线。(参见,图7A-图7C)。

但是,其中经由信号线WD NI和/或WD IS将权重数据从设置在每个乘法器累加器电路系统中的存储器之间并且连接到每个乘法器累加器电路系统中的存储器的权重/数据存储器(例如,SRAM存储器存储体)写入乘法器累加器电路系统的行中,存储器并行地将数据写入每行乘法器累加器电路系统中的每个乘法器累加器电路系统的存储器(例如,ROM)中。每行乘法器累加器电路系统的权重数据可以被串行/顺序写入。这样,在此实施例中将权重数据写入乘法器累加器电路系统的行中的时间可能比经由NLINX接口连接器的WD_I从相关联的逻辑瓦片互连网络到每行乘法器累加器电路系统的输入WD I的直接和串行/顺序写入操作的时间要快得多。

如上所述,在一个实施例中,逻辑电路系统(例如,一个或多个计算元件,诸如,例如处理器电路(例如,数据处理器或数字信号处理器)、控制器电路、加速器、数据加密引擎、滤波器、编码器、状态机和/或组合逻辑电路)与权重/数据存储器(例如,SRAM存储器存储体)相邻定位并且在权重/数据存储器与I/O电路系统之间。(参见,例如,图5C和图7A-图7C)。计算元件可以被配置为连接到逻辑瓦片的互连网络(例如,分层互连网络和/或混合模式互连网络,美国专利9,503,092)。逻辑瓦片的互连网络可以经由瓦片与瓦片互连网络(例如,网状互连网络)的瓦片与瓦片互连将逻辑瓦片的计算元件连接到其它逻辑瓦片中的计算元件或其它电路系统。在此,瓦片互连网络经由瓦片与瓦片互连网络连接到其它逻辑瓦片(例如,例如逻辑瓦片的阵列的相邻逻辑瓦片,参见,例如,图5B、图5C和图6B)的互连网络,瓦片与瓦片互连网络提供或促进到多个逻辑瓦片(例如,可以布置在一行或多个行和/或列的阵列中)的其它逻辑瓦片(例如,布置在其中的电路系统(例如,一个或多个计算元件))的可配置或可重新配置的通信/连接。

参考图5B和图5C,在一个实施例中,逻辑瓦片的互连网络设置在逻辑瓦片的中心或书脊中,并且瓦片与瓦片互连被示出为设置在逻辑瓦片的边缘上的双箭头线(I/O或I/O电路系统中所示并相应标记的双箭头线除外)。

值得注意的是,I/O电路系统设置在边缘上,以促进与逻辑瓦片(或逻辑瓦片的阵列)外部的电路系统的可配置或可重新配置的连接,诸如,例如,与集成电路的片上系统(SOC)的电路系统、外部存储器接口电路系统(例如,DRAM接口)和/或设置在逻辑瓦片之间的一个或多个存储器块的连接(参见,例如,美国专利9,973,194,该美国专利通过引用并入本文)。

如上所述,参考图7A-图7C,在一个实施例中,多个乘法器累加器电路系统被组织和/或配置为互连的乘法器累加器电路系统的行。在该实施例中,每行乘法器累加器电路系统(由多个互连的乘法器累加器电路组成)经由行互连而连接到另一行的多个乘法器累加器电路系统,由此一行乘法器累加器电路系统的某些输出连接到并且应用作为第二行的多个互连的乘法器累加器电路系统的输入。例如,另外参考图1A和图3,第一行的互连的乘法器累加器电路系统的最后一个乘法器累加器电路系统的MAC O连接到第二行的互连的乘法器累加器电路系统中的第一个乘法器累加器电路系统的MAC I。行互连还包括例如图1A中所示的实施例的互连的乘法器累加器电路系统的其它输出/输入。在图7A-图7C的详细示出的示例性实施例中,两行的乘法器累加器电路系统(经由行互连而互连)由32块2-NMAX乘法器累加器电路系统(例如,像图1A中所示的那样)组成。

在一个实施例中,可以例如原位(即,在集成电路的操作期间)调整(即,增加或减少)级联的程度或长度(即,互连以实现或执行乘法和累加运算的乘法器累加器电路的数量)。例如,参考图7A-图7C,在一个实施例中,多于两行的乘法器累加器电路系统可以互连,以提供更长或更大数量或更多串的互连的乘法器累加器电路系统。例如,第二行的乘法器累加器电路系统(参见图7C中的2-NMAX行B)可以进一步经由NLINX接口连接器的NLINX多路复用器和导体连接到第三行的乘法器累加器电路系统(参见图7C中的2-NMAX行C)。而且,NLINX接口的NLINX多路复用器和导体可以被配置为互连一个或多个相邻和/或非相邻行的乘法器累加器电路。例如,一行乘法器累加器电路的输出(参见图7C中的行D的MAC_O)可以选择性地连接到非相邻行的乘法器累加器电路的输入(参见图7C中的行A的MAC_I)。这样,NLINX接口连接器,具体地此说明性实施例中的NLINX多路复用器,可配置为互连乘法器累加器电路的行,其中NLINX多路复用器可控地将一行乘法器累加器电路的最后一个乘法器累加器电路的输出连接到一个或多个不同行的乘法器累加器电路的第一个乘法器累加器电路的输入。

另外,NLINX接口连接器的NLINX多路复用器和导体可以被配置为连接相邻行的乘法器累加器电路,其中一行乘法器累加器电路的输出(参见图7C中的行D的MAC_O)可以经由其间设置的NLINX多路复用器选择性地连接到相邻行的乘法器累加器电路的输入(参见图7C中的行C的MAC_I)。这样,在一个实施例中,第三行的乘法器累加器电路系统经由行互连而连接到第四行的乘法器累加器电路系统(参见图7C中的2-NMAX行D),以实现甚至更长或更大串的互连的乘法器累加器电路系统(即,增加互连以实现或执行乘法和累加运算的乘法器累加器电路的数量),以及第四行的乘法器累加器电路系统的输出(参见图7C中的2-NMAX行D)可以经由NLINX接口(在图7A-图7C的该说明性实施例中,NLINX接口连接器的NLINX多路复用器和导体)连接到相邻或非相邻行的乘法器累加器电路的输入(参见图7C中的2-NMAX行A和/或行C)。

因此,在一个实施例中,开关互连网络连接到每行乘法器累加器电路中的至少一个乘法器累加器电路,以除其它外提供以下灵活性:配置、调整、修改和/或改变(i)被采用和/或互连以实现或执行乘法和累加运算的乘法器累加器电路(和/或乘法器累加器电路的行)和/或(ii)被采用和/或互连以执行乘法和累加运算的乘法器累加器电路的数量。在一个实施例中,配置电路系统例如经由多路复用器/开关来配置开关互连网络(在该说明性实施例中为NLINX接口连接器)的各方面的互连,以采用或实现特定数量和配置的乘法器累加器电路(和/或乘法器累加器电路的行)。该配置、选择、修改和/或调整可以例如原位(即,在集成电路的操作期间)实现,以例如执行或提供特定的操作和/或满足或超过系统要求或约束(例如,基于时间的要求或约束)。(参见,例如,图9)。

值得注意的是,可以互连任何数量的互连的乘法器累加器电路,以实现或执行级联的乘法和累加运算。在图7A-图7C中所示的实施例的上下文中,可以连接任何数量的行的乘法器累加器电路系统(即,两个、三个、四个等)以实现或执行级联的乘法和累加运算。事实上,在一个实施例中,逻辑瓦片中的全部乘法器累加器电路系统(参见,例如,图5B-图5D和图7A)可以经由NLINX接口连接器和行互连而连接在一起以形成乘法器累加器电路系统的完整“环”。再次,尽管前述讨论有时集中于连接乘法器累加器电路系统的行,但应注意,在一个实施例中,可以互连任何数量的互连的乘法器累加器电路系统以提供逻辑瓦片的期望配置(即,互连多个乘法器累加器电路系统(参见,例如,图3)—也就是说,在一个实施例中,可以互连逻辑瓦片中的从两个乘法器累加器电路系统到全部乘法器累加器电路系统的任何数量以实现或执行级联的乘法和累加运算)。

逻辑瓦片的多个乘法器累加器电路系统可以被配置和重新配置(例如,原位)以执行预定的乘法累加运算(例如,通常由神经网络执行的运算)。在一个实施例中,多个逻辑瓦片的多个乘法器累加器电路系统可以被配置为执行卷积(即,3D运算(W×H×Din×Dout))。例如,参考图9,在一个实施例中,逻辑瓦片的多个乘法器累加器电路系统可以被组织/配置为脉动阵列以实现三层卷积。简要地说,可以经由每行256个NMAX的两行互连的乘法器累加器电路系统来实现运算A的处理,每行将需要八行的16个2-NMAX行(参见,图7A-图7C)。将运算A的结果(参见OUT)求和并可以将其存储在本地存储器中和/或经由互连网络输出到处理电路系统(例如,DSP)以用于进一步的数据处理。可以经由每行256个NMAX的9行互连的乘法器累加器电路系统来实现运算B的处理。将运算B的结果(参见OUT)求和并且也可以将其存储在本地存储器中和/或经由互连网络输出到处理电路系统(例如,DSP)以用于进一步的数据处理。可以经由每行256个NMAX的4行互连的乘法器累加器电路系统来实现运算C的处理。可以将运算C的结果(参见OUT)再次存储在本地存储器中和/或经由互连网络输出到处理电路系统(例如,DSP)以用于进一步的数据处理。

在一个实施例中,采用开关互连网络以除其它外提供以下灵活性:配置、调整、修改和/或改变(i)被采用和/或互连以实现或执行乘法和累加运算的乘法器累加器电路(和/或乘法器累加器电路的行)和/或(ii)被采用和/或互连以执行乘法和累加运算的乘法器累加器电路的数量。该配置、选择、修改和/或调整可以例如原位(即,在集成电路的操作期间)实现。

值得注意的是,图9中所示的运算、配置和脉动阵列是示例性的。本发明不限于根据这样的示例性运算、配置和/或阵列实现的处理和/或算法,而是旨在除其它外覆盖现在已知或以后开发的任何运算、配置和/或阵列。

在神经网络的情况下,采用使用推理语言(例如,Caffe或TF)对乘法器累加器电路系统的配置进行编程可能是有利的。例如,参考图10,在一个实施例中,2级4×4全连接层的示例性配置直接映射到本发明的乘法器累加器电路系统和架构。FPGA的可配置和可重新配置逻辑促进实现所采用的控制逻辑(例如,加载/卸载和数据路径控制)。

本文描述和示出了许多发明。尽管已经描述和示出了本发明的某些实施例、特征、属性和优点,但是应当理解,本发明的许多其它以及不同和/或相似的实施例、特征、属性和优点从本说明和图示中将是清楚的。这样,本文描述和示出的本发明的实施例、特征、属性和优点不是穷举的,并且应当理解,本发明的这些其它的、相似的以及不同的实施例、特征、属性和优点也在本发明的范围内。

例如,乘法器累加器电路系统的各级可以更完整地流水线化和/或写入存储器。(参见,例如,图11A-图11E)。再次在这里,影子寄存器(例如,在乘法器累加器电路系统内—参见图1A)被用来促进或实现流水线操作。

而且,乘法器累加器电路系统可以被配置和/或重新配置(例如,在启动时和/或原位)以实现利用现在已知或以后开发的乘法和累加运算的任何功能。例如,在一个实施例中,电路系统的乘法器累加器电路的输出可以连接到一系列电路系统中的较早的乘法器累加器电路的输入。例如,参考图12,多个互连的乘法器累加器电路系统(例如,各自具有多个(例如,两个)乘法器累加器电路—例如包括乘法器0和累加器0的第一电路以及包括乘法器1和累加器1的第二电路,像图1A的实施例中那样)可以串联连接,以级联的方式执行/实现乘法和累加运算(参见,例如,图2A和图11A)。在此,乘法器累加器电路系统向相继的乘法器累加器电路系统的输入(例如,在输入MAC I-参见,图1A)输出/提供部分完成的运算(例如,在输出MAC O-参见,例如,图1A),以级联的方式处理数据,其中,乘法器累加器电路系统X的输出可配置为(经由输入选择电路的控制)施加或输入到前一乘法器累加器电路系统A(在图12中,乘法器累加器电路系统A的乘法器累加器电路(例如,MAC_I))。因此,随后或之后的乘法器累加器电路(例如,一系列的最后一个乘法器累加器—在此,乘法器累加器电路系统X的乘法器累加器电路)的输出被级联回到前一乘法器累加器电路(例如,乘法器累加器电路系统A的第一个乘法器累加器电路(例如,MAC_I))的输入以实现乘法器累加器电路系统配置。

继续参考图12,乘法器累加器电路系统可以被配置和/或重新配置,以使得乘法器累加器电路系统可以经由输入选择电路(例如,多路复用器)的控制从(i)乘法器累加器电路系统X(即,同一环)的乘法器累加器电路或(ii)配置的另一个乘法器累加器电路系统的乘法器累加器电路(例如,同一环或另一个环中的乘法器累加器电路)接收乘法累加数据。所有的组合和排列都意图落入本发明的范围内。

值得注意的是,多个乘法器累加器电路系统的系列的配置、选择、修改和/或调整可以例如原位(即,在集成电路的操作期间)实现,以例如执行或提供特定的操作和/或满足或超过系统要求或约束(例如,基于时间的要求或约束)。(参见,例如图9)。

重要的是,本发明既不限于任何单个方面或其实施例,也不限于这些方面和/或实施例的任何组合和/或排列。而且,本发明的方面和/或其实施例中的每一个可以单独使用,或者可以与本发明的一个或多个其它方面和/或其实施例结合使用。

此外,尽管在某些实施例中将存储器单元示出为静态存储器单元或存储元件,但是本发明可以采用动态或静态存储器单元或存储元件。实际上,如上所述,这样的存储器单元可以是锁存器、触发器或任何其它静态/动态存储器单元或现在已知或以后开发的存储器单元电路或存储元件。

值得注意的是,本文公开的各种电路、电路系统和技术可以使用计算机辅助设计工具进行描述,并根据其行为、寄存器传输、逻辑组件、晶体管、布局几何形状和/或其它特性表达为(或表示为)各种计算机可读介质中体现的数据和/或指令。可以实现此类电路、电路系统、布局和路由表达式的文件和其它对象的格式包括但不限于支持行为语言(诸如C、Verilog和HLDL)的格式、支持寄存器级描述语言(如RTL)的格式和支持几何描述语言(诸如GDSII、GDSIII、GDSIV、CIF、MEBES)的格式以及现在已知或以后开发的任何其它格式和/或语言。可以体现这种格式化的数据和/或指令的计算机可读介质包括但不限于各种形式的非易失性存储介质(例如,光、磁或半导体存储介质)以及可以用于通过无线、光或有线信令介质或其任何组合来传输此类格式化的数据和/或指令的载波。通过载波进行的这种格式化的数据和/或指令的传输的示例包括但不限于经由一个或多个数据传输协议(例如,HTTP、FTP、SMTP等)在互联网和/或其它计算机网络上的传输(上载、下载、电子邮件等)。

实际上,当在计算机系统内经由一个或多个计算机可读介质接收时,上述电路的基于此类数据和/或指令的表达式可以由计算机系统内的处理实体(例如,一个或多个处理器)结合一个或多个其它计算机程序的执行进行处理以生成这种电路的物理表现形式的表示或图像,一个或多个其它计算机程序包括但不限于网表生成程序、布局和布线程序等。例如,通过使得能够生成用于在装置制造处理中形成电路的各种组件的一个或多个掩模,这种表示或图像可以随后在装置制造中使用。

而且,本文公开的各种电路、电路系统和技术可以使用计算机辅助设计和/或测试工具通过仿真来表示。可以通过计算机系统来实现对由此实现的电路、电路系统、布局和布线和/或技术的仿真,其中,可以通过计算机系统模仿、复制和/或预测由此实现的这种电路、电路系统、布局和技术的特性和操作。本发明还针对由此实现的发明性电路、电路系统和/或技术的这种仿真,并且因此旨在落入本发明的范围内。对应于这样的仿真和/或测试工具的计算机可读介质也意图落入本发明的范围内。

值得注意的是,本文中对“一个实施例”或“实施例”(等)的引用意味着结合该实施例描述的特定特征、结构或特性可以被包括、采用和/或结合在本发明的实施例中的一个、一些或全部中。说明书中的短语“在一个实施例中”或“在另一个实施例中”(等)的用法或出现不是指相同的实施例,也不是必须相互排斥一个或多个其它实施例的分离或替代实施例,也不限于单个排他的实施例。这同样适用于术语“实现方式”。本发明既不限于任何单个方面或其实施例,也不限于这些方面和/或实施例的任何组合和/或排列。而且,本发明的方面和/或其实施例中的每一个可以单独使用,或者可以与本发明的一个或多个其它方面和/或其实施例结合使用。为了简洁起见,本文不分开讨论和/或示出某些排列和组合。

此外,如上所述,本文描述为“示例性”的实施例或实现方式不应被解释为例如相对于其它实施例或实现方式而言是理想的、优选的或有利的;相反,旨在传达或指示一个或多个实施例是(一个或多个)示例实施例。

尽管已经在某些具体方面描述了本发明,但是许多另外的修改和变化对于本领域技术人员将是清楚的。因此,应当理解,在不脱离本发明的范围和精神的情况下,可以以不同于具体描述的方式来实践本发明。因此,本发明的实施例在所有方面都应被认为是说明性/示例性而非限制性的。

在权利要求书中以及其它地方,术语“包含”、“包含有”、“包括”、“包括有”、“具有”和“有”或其任何其它变型旨在覆盖非排他性包括,以使得包括/包含元件、组件、步骤(等)的列表的处理、方法、电路、物品、集成电路或设备不仅仅包括那些元件、组件、步骤(等),还可以包括这些处理、方法、电路、物品、集成电路或设备未明确列出或固有的其它元件、组件、步骤(等)。此外,在权利要求书中,在整个文档中术语“连接”、“被连接”、“连接到”或“连接”的使用应广义地解释为包括直接或间接(例如,经由一个或多个导体和/或中间装置/元件(有源或无源)和/或经由电感或电容耦合)),除非另有说明(例如,使用术语“直接连接”或“被直接连接”)。

在权利要求书中以及其它地方,本文中的术语“一”和“一个”不表示数量限制,而是表示存在至少一个所引用的项目。此外,术语“第一”、“第二”等在本文中不表示任何次序、数量或重要性,而是用于将一个元件与另一个元件区分开。

此外,在权利要求书中以及其它地方,术语“逻辑瓦片”意指多个晶体管的设计单位或块(通常多于数千个),在本申请中,逻辑瓦片能够连接到多个其它(例如,邻近或相邻)逻辑瓦片、逻辑单元、逻辑内核、可配置逻辑块、逻辑阵列块和/或逻辑块。

另外,在权利要求书中以及其它地方,术语“集成电路”除其它外意指处理器、控制器、状态机、门阵列、SoC、PGA和/或FPGA。术语“集成电路”还意指例如处理器、控制器、状态机和SoC—包括嵌入式FPGA。为避免疑问,现场可编程门阵列或FPGA既指FPGA又指嵌入式FPGA。

此外,权利要求中的术语“多路复用器”意指多路复用器和/或开关。术语“电路系统”除其它外意指电路(无论是集成的还是其它方式的)、这样的电路的集合、一个或多个处理器、一个或多个状态机、一个或多个实现软件的处理器、一个或多个门阵列、可编程门阵列和/或现场可编程门阵列,或者一个或多个电路(无论是集成的还是其它方式的)、一个或多个状态机、一个或多个处理器、一个或多个实现软件的处理器、一个或多个门阵列、可编程门阵列和/或现场可编程门阵列的组合。另外,术语“数据”除其它外意指例如在(一个或多个)电流或电压信号中提供或包含和/或存储在存储器等中的信息(复数或单数),无论是模拟还是数字形式,其可以是单个位(等)或多个位(等)。

在权利要求中,术语“MAC电路”意指例如像图1A-图1C的示例性实施例以及与之相关联的文本中所描述和示出的乘法累加器电路。但是,值得注意的是,术语“MAC电路”不限于根据例如图1A-图1C的示例性实施例示出和/或描述的特定的电路图、逻辑图、框图、功能和/或物理图、块/数据宽度、数据路径宽度、带宽以及处理。

51页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:车辆用电子控制系统、程序更新的报告控制方法以及程序更新的报告控制程序

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!

技术分类