CN106610813B - 用于在乘法器累加器块中执行乘积级数运算的方法和装置 - Google Patents

用于在乘法器累加器块中执行乘积级数运算的方法和装置 Download PDF

Info

Publication number
CN106610813B
CN106610813B CN201610922486.3A CN201610922486A CN106610813B CN 106610813 B CN106610813 B CN 106610813B CN 201610922486 A CN201610922486 A CN 201610922486A CN 106610813 B CN106610813 B CN 106610813B
Authority
CN
China
Prior art keywords
dedicated processes
block
signal
processes block
input
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610922486.3A
Other languages
English (en)
Other versions
CN106610813A (zh
Inventor
M·朗翰墨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Altera Corp
Original Assignee
Altera Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Altera Corp filed Critical Altera Corp
Publication of CN106610813A publication Critical patent/CN106610813A/zh
Application granted granted Critical
Publication of CN106610813B publication Critical patent/CN106610813B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations

Abstract

集成电路上的专用处理块包括第一和第二算术操作符级、耦合至另一专用处理块的输出、以及可配置的互连电路系统,该可配置的互连电路系统可以被配置成路由信号贯穿该专用处理块,包括在该第一和第二算术运算符级内和外。该可配置的互连电路系统可以进一步包括用于路由所选择的信号的多路复用器电路系统。当实现需要使用多于一个专用处理块的数学功能时,与该可配置的互连电路系统一起耦合至另一专用处理块的该专用处理块的该输出降低了使用该专用处理块外部的资源的需要。此类数学功能的示例包括实现缩放积和、运算以及实现霍纳法则。

Description

用于在乘法器累加器块中执行乘积级数运算的方法和装置
本申请要求于2015年10月21日提交的美国专利申请号14/919,429的优先权,该申请的全文通过引用被合并于此。
技术领域
本文所公开的实施例涉及集成电路,并且更具体地涉及集成电路中的专用处理块。
背景技术
将可配置器件如可编程逻辑器件(PLD)视为集成电路的一个示例。可配置器件的应用增加了复杂度,在可配置器件中包括专用处理块已经变得更加普遍。此类专用处理块可以包括已经被部分或完全硬连线以执行一种或多种特定任务(如逻辑或数学运算)的电路系统的集合。
专用处理块还可以包含一个或更多个专用结构,如可配置存储器元件阵列。普遍实现在此类专用处理块中的结构的示例包括:乘法器、算术逻辑单元(ALU)、桶式移位器、各种存储器元件(如先进先出(FIFO)/后进先出(LIFO)/串进并出(SIPO)/随机存取存储器(RAM)/只读存储器(ROM)/内容可寻址存储器(CAM)块和寄存器文件)、AND/NAND/OR/NOR阵列等,或其组合。
发明内容
根据一些实施例,集成电路上的乘法器累加器块可以包括第一、第二、和第三输入,输出,以及第一和第二算术操作符级。该第一、第二、和第三输入可以直接耦合至该专用处理块外部的外部可配置互连电路系统。该第一算术操作符级(例如,乘法器级)可以接收来自该第一和第二输入的信号,然而,该第二算术操作符级(例如,加法器级)可以从该第三输入接收信号并具有耦合至该乘法器累加器块的该输出的输出端口。作为一个示例,该第一和第二算术操作符级都作用于浮点数输入。
该乘法器累加器块内的内部可配置互连电路系统可以包括:第一多路复用器,其在从该第一算术操作符级生成的信号与在该第二算术操作符级的该输出端口生成的信号之间选择。
可以理解的是能够以许多方式实现本发明,如过程、装置、系统、设备、计算机可读介质上的指令、或上述的任何期望组合。本文公开了本发明的若干实施例。
在一些实施例中,上述内部可配置互连电路系统可以包括:第二多路复用器,其在从该第一算术操作符级生成的信号与从该第二输入接收的信号之间选择,并且将所选择的信号路由至该第二算术操作符级。
如果期望的话,上述专用处理块可以具有第四输入和第三多路复用器。该第四输入可以直接耦合至附加乘法器累加器块,并且可以将信号路由至该第一和第二多路复用器两者。该内部可配置互连电路系统中的该第三多路复用器可以被配置成:在从该第一多路复用器生成的信号与从该第二输入接收的信号之间选择,并且可以进一步被配置成将这些选择的信号路由至该第一算术操作符级。
本发明进一步特征、其本质和各种优势从附图和以下对优选实施例的详细说明中将更加明显。
附图说明
图1是根据实施例的示意性集成电路的图。
图2是根据实施例的示意性专用处理块的逻辑图。
图3是根据实施例的示意性专用处理块的更详细的图。
图4是根据实施例的专用处理块的示意性布置的图,该专用处理块具有执行顺序缩放乘积(sequential scaled product)的数据路径的示例性选择。
图5是根据实施例的专用处理块的示意性布置的图,该专用处理块具有执行混合递归和顺序缩放乘积的数据路径的示例性选择。
图6是根据实施例的专用处理块的示意性布置的图,该专用处理块具有执行和的顺序乘积的数据路径的示例性选择。
图7是根据实施例的专用处理块的示意性布置的图,该专用处理块具有执行和的递归缩放乘积的数据路径的示例性选择。
图8是根据实施例的专用处理块的示意性布置的图,该专用处理块具有实现霍纳法则(Horner’s rule)的数据路径的示例性选择。
图9是根据实施例的用于执行缩放积和(scaled product sum)运算的示意性步骤的流程图。
图10是根据实施例的用于使用霍纳法则执行多项式求值的示意性步骤的流程图。
具体实施方式
专用处理块可以包括已经被部分或完全硬连线以执行一个或更多个具体任务(如逻辑或数学运算)的电路系统的集合。专用处理块还可以包含一个或更多个专用结构,如可配置存储器元件阵列。普遍实现在此类专用处理块中的结构的示例包括:乘法器、算术逻辑单元(ALU)、桶式移位器、各种存储器元件(如FIFO/LIFO/SIPO/RAM/ROM/CAM块和寄存器文件)、AND/NAND/OR/NOR阵列等,或其组合。
已经设置于可编程逻辑器件(PLD)上的一种特别有用类型的专用处理块是能够用于处理音频信号(作为示例)的数字信号处理(DSP)块。当它们包括用于执行乘法运算、求和、和/或乘法运算的累加的结构时,此类块有时可以称为乘法累加(“MAC”)块。
例如,美国加利福尼亚州圣何塞市(San Jose,California)的阿尔特拉公司(Altera Corporation)所销售的PLD作为家族的部分包括多个MAC块,它们当中的每一个包括多个乘法器。这些MAC块中的每一个还包括加法器和寄存器,以及允许该块的各部件以不同方式被配置的可编程连接器(例如,多路复用器)。
实现一些应用可能需要多于一个的专用处理块。此类功能的示例包括实现矢量(点积)运算或积和运算,如有限脉冲响应(FIR)滤波器,仅举以上几例。在给定的专用处理块中产生的并在另一专用处理块中消耗的信号可以要求使用特定处理块外部的互连资源。就延迟和功耗而言,对此类资源的使用可能不是高效的。因此,可以期望将直接互连资源连同可配置互连电路系统一起引入到相邻的专用处理块之间,该可配置互连电路系统可以将信号路由至那些直接互连资源并路由来自那些互连资源的信号。
对于本领域技术人员而言将明显的是,可以在没有这些具体细节中的某些或全部的情况下实践当前示例性实施例。在其他实例中,公知的操作未详细描述以防不必要地模糊当前实施例。
图1中示出了集成电路102的示意性实施例。集成电路102可以包括存储和处理电路系统104以及输入-输出电路系统108。存储和处理电路系统104可以包括嵌入式微处理器、数字信号处理器(DSP)、微控制器、专用处理块、算术处理电路、或其他处理电路系统。该存储和处理电路系统104可以进一步具有随机存取存储器(RAM)、先进先出(FIFO)电路系统、栈或后进先出(LIFO)电路系统、只读存储器(ROM)、内容可寻址存储器(CAM)、或其他存储器元件。
输入/输出电路系统可以包括并行输入/输出电路系统、差分输入/输出电路、串行数据收发器电路系统、或适用于发送和接收数据的其他输入/输出电路系统。内部互连资源106(如导线和总线)可以用于将数据从一个部件发送至另一部件,或可以用于将数据从一个部件广播至一个或更多个其他部件。
内部互连资源106还可以包括片上网络(NoC)或其他片上互连资源。外部互连资源109(如导线和总线)、光学互连基础设施、或具有可选中间开关的有线和无线网络可以用于与其他设备通信。
示意性系统图2根据实施例示出了示例性专用处理块的逻辑图,如可以包括在图1的存储和处理电路系统104中的乘法器累加器(MAC)块200。在这种逻辑表示中,省略了实施细节以简化讨论,如寄存器和一些可编程路由特征(如可以允许将具体结构的输出直接路由至MAC块200外部的多路复用器)。另外,在实际实施例中,所示的一些元件可以实现不只一次。例如,乘法器201可以实际代表两个或更多个乘法器,如前述PLD的家族中的MAC块。
在图2的逻辑表示中,加法器级202接着乘法器级201。该乘法器级可以实现定点乘法器或浮点乘法器。可以由27×27定点乘法器和一些附加逻辑构造浮点乘法器。该附加逻辑可以计算指数、以及特殊条件和误差条件,如NAN(非数值)、零和无穷大。可选地,可以提供其他逻辑以按照IEEE754格式对乘法器的结果四舍五入。当乘法器201的输出被直接从MAC块200输出时,这种四舍五入能够被实现为乘法器结构(未示出)内的最后的加法器的部分,或被实现在MAC块200外的可编程逻辑中。
乘法器级201可以直接以乘法器相加(MADD)模式馈送加法器级202,如图2中所描绘的。加法器级202可以实现定点加法器或浮点加法器。
图3根据实施例示出了示例性专用处理块300的更详细的图。专用处理块300可以具有耦合至外部可配置互连资源的输入352、353、和354。专用处理块300还可以具有直接耦合至相邻的专用处理块300的输入355和351。
类似地,专用处理块300可以具有耦合至外部可配置互连资源的输出363以及分别直接耦合至另一相邻的类似专用处理块300的输入351和355的输出361和365。除了在专用处理块300的链的末端,在输入355与输出365之间和在输入351与输出361之间存在直接连接。
作为一个示例,专用处理块300可以处理32位宽的信号,诸如,如标准IEEE754所定义的单精度浮点数。如果期望的话,专用处理块300可以处理任何位宽。例如,专用处理块300可以处理双精度浮点数(即,64位宽的信号)、四倍精度浮点数字(即,128位宽的信号)、半精度浮点数(即,16位宽的信号),仅举几例。
相应地,专用处理块300中的寄存器和多路复用器的数量可以适配于输入的信号的位宽。例如,如果所有输入信号都是32位宽,每个寄存器(即,寄存器331至337)可以实际具有32个1位的寄存器。类似地,每个二对一多路复用器(即,多路复用器341、342、344、345、346、349、和350)可以实际具有32个二对一多路复用器,并且每个三对一多路复用器(即,多路复用器343、347、和348)可以实际具有32个三对一多路复用器。例如,组成多路复用器344的这32个二对一多路复用器中的每一个可以从在输入354接收到的信号接收一位并从寄存器333接收一位。多路复用器344的所有这32个二对一多路复用器可以共享相同的控制信号,使得选择从输入354接收的所有信号或者选择从寄存器333接收的所有信号。
如果期望的话,可以可选地绕过寄存器331至337(未示出)。例如,多路复用器可以接收寄存器的输入信号和输出信号。多路复用器可以选择寄存器的输入信号以绕过寄存器,并选择寄存器的输出信号以执行流水线。
在一些实施例中,专用处理块300可以包括附加流水线(未示出)。作为一个示例,专用处理块300在乘法器级与输出363和/或输出365之间、在输入355与输出365之间、在输入355与乘法器级310之间等可以具有可选地可绕过的寄存器级。可选地,还可以在乘法器级310和加法器级320之一或两者内部设置可绕过的流水线(未示出)。
专用处理块300可以具有多路复用器341至344以在输入之间进行选择。例如,多路复用器341可以在从输入356和输入351接收的信号之间进行选择,多路复用器342可以在从输入352与寄存器331的输出接收的信号之间进行选择,多路复用器343可以在从输入353、寄存器332、和寄存器331接收的信号之间进行选择,并且多路复用器344可以在从输入354和寄存器333接收的信号之间进行选择。
可配置互连资源可以将信号从多个来源(包括输入351、352、353、354、355、和356以及加法器级320的输出)路由至乘法器级310。可配置互连资源可以将信号从多个来源(包括输入351、352、353、355、和356以及乘法器级310的输出)路由至加法器级320。
在一些实施例中,乘法器级310的输出、输入355、或加法器320的输出可以经由多路复用器347、输出365、和直接连接被路由至相邻的类似专用处理块300的输入355,并从中经由多路复用器348和/或349路由至相邻的专用路由至相邻的类似专用处理块的加法器级,和/或经由多路复用器345和346路由至相邻的类似专用处理块的乘法器级。
具体地,多路复用器349可以被配置成在输入351或352处接收的信号与在输入355处接收的信号之间进行选择。类似地,可以提供多路复用器348以在输入353处、输入355处、以及从乘法器级310的输出接收的信号之间进行选择,作为加法器级320的输入。因此,加法器级320可以从均耦合至外部可配置互连资源的两个输入(即,输入352和353)接收信号,并且来自这些输入的路径两者均绕过乘法器级310。
可以以各种不同方式配置专用处理块300,以实现各种功能。例如,专用处理块300可以被配置以实现移位寄存器、乘法器、乘法加法功能、乘法累加功能、缩放乘积(scaledproduct)、缩放积和、缩放积差(scaled product difference),仅举几例。
考虑下述场景:其中,专用处理块300被用作移位寄存器。在这种场景下,数据可以在输入352处进入专用处理块300并且可以被储存在寄存器332。从那里,可以通过多路复用器343至寄存器333路由数据,并从那里路由通过多路复用器344并绕过寄存器334至输出361。寄存器332或333的输出中的任一个可以被分接,但两者不同时被分接。例如,可以通过在输入354提供零来分接寄存器332的输出,由此在乘法器的输出处产生零。乘法器348可以被配置成选择乘法器输出作为对加法器级320的第一输入。可以选择乘法器349以选择寄存器332的输出作为对加法器级的第二输入。将加法器级的输出路由至输出363可以在输出363处提供寄存器332的输出。可以通过在输入354提供值‘1’来分接寄存器334的输出。将寄存器333的输出乘以‘1’在乘法器级310的输出处产生寄存器333的输出。可以配置多路复用器350使得乘法器输出绕过加法器级320,由此将寄存器333的输出提供至输出363。
根据实施例的多个专用处理块可以被布置在行或列中,使得能够使用输出365与输入355之间和输出361与输入351之间的前述直接连接将信息从一个块馈送至下一个块,以创造更复杂的结构。
图4根据经配置以执行顺序缩放乘积运算的实施例示出了一行四个专用处理块400A、400B、400C、和400D(例如,乘法器累加器块400链)。可替代地,这种配置中的专用处理块400可以被布置在一列中。在该列布置中,每个MAC块400可以旋转90度,而不需要必须对输入和输出重新路由,或者可替代地,如果块400未被旋转,块400外部的可配置路由结构(有时称为“软”路由电路系统)可以用于互连该系列的块400。如所示的,专用处理块400A、400B、400C、和400D各自可以由专用处理块300用附加寄存器(如耦合至乘法器级310的输出的寄存器410)实现。
有时还被称为缩放乘积的序列的乘积被定义为以下乘积
在图4的示例中,有待相乘的序列值可以是X=(A,B,C,D,E)。专用处理块400A可以在输入353和354接收信号A和B,同时专用处理块400B、400C、和400D在输入354分别接收输入C、D和E。
专用处理块400A中的可配置互连资源可以将信号A和B从输入353和354路由至乘法器级310,这可以计算A*B的乘积。
类似地,专用处理块400B、400C、和400D中的可配置互连资源可以将信号C、D、和E中的每一个从对应输入354路由至对应乘法器级310。信号C、D、和E中的每一个可以乘以在用于右侧的相邻的专用处理块内产生的先前的累加结果。例如,专用处理块400B的乘法器级310可以用专用处理块400A中产生的结果乘以C。用于右侧的相邻的专用处理块中(例如,专用处理块400A中)的可配置互连电路系统可以将该结果从乘法器级310路由通过多路复用器347和输出365至当前专用处理块(例如,专用处理块400B)的输入355。当前专用处理块(例如,专用处理块400B)中的可配置互连电路系统可以将在输入355处接收的先前计算(例如,A*B)的结果路由通过多路复用器345和346至乘法器级310。
由于来自用于右侧的相邻的专用处理块的中间结果由一个流水线级延迟,最右侧专用处理块400A左侧的每个专用处理块需要附加流水线级(即,输入480处的信号C可以由一个流水线级481延迟,输入482处的信号D可以由两个流水线级483延迟,并且专用处理块400D的输入484处的信号E可以由三个流水线级485延迟)。在一个实施例中,可以使用这些专用处理块外部的资源实现这些流水线级。
最左侧的专用处理块中的乘法器级(例如,专用处理块400D的乘法器级310)可以计算缩放乘积的最终结果(即,序列A*B*C*D*E的乘积)。最左侧专用处理块中的可配置互连电路系统可以将该结果从乘法器级310路由通过寄存器410和多路复用器350至输出363。
图4中用虚线示出了多路复用器343、344、345、346、347、和350对数据路径的示例性选择。
如所示的,专用处理块400A、400B、400C、和400D的资源中的一些可以保持未使用。如果期望的话,可以由那些未使用的资源来执行其他算术运算。例如,专用处理块400B或400C可以执行两个独立数字的相加。如图4中所示,专用处理块400B可以在输入353和352接收信号F和G。可配置的互连资源可以将信号F路由通过多路复用器343、寄存器333、多路复用器348、和寄存器335至加法器级320,并将信号G路由通过多路复用器342、寄存器332、多路复用器349、和寄存器336至加法器级320。加法器级320可以计算F与G之和,并且可配置互连资源可以将和F+G路由通过寄存器337和多路复用器350至输出363。
如果期望的话,可以在专用处理块400A、400B、400C、和400D中执行其他算术运算。作为另一示例,专用处理块400A可以计算在输入352接收的第一信号与在输入355从相邻专用处理块接收的第二信号之和,并在输出363提供结果。在本示例中,可配置的互连资源可以将第一信号路由通过多路复用器342、寄存器332、多路复用器349、和寄存器336至加法器级320,并将第二信号路由通过多路复用器348和寄存器335至加法器级320。加法器级320可以计算第一和第二信号之和,并且可配置互连资源可以将该和路由通过寄存器337和多路复用器350至输出363。
作为另一示例,专用处理块400D可以计算在输入352接收的第一信号与在输入353接收的第二信号之和,并在输出365提供结果。在本示例中,可配置的互连资源可以将第一信号路由通过多路复用器342、寄存器332、多路复用器349、和寄存器336至加法器级320,并将第二信号路由通过多路复用器343、寄存器333、多路复用器348和寄存器335至加法器级320。加法器级320可以计算第一信号和第二信号之和,并且可配置互连资源可以将该和路由通过寄存器337和多路复用器347至输出365。
图5根据实施例示出了一行五个专用处理块500A、500B、500C、500D、和500E,其被配置成执行两个顺序缩放乘积运算,紧接着递归缩放乘积运算。如所示的,专用处理块500A、500B、500C、500D、和500E可以各自由专用处理块300用附加寄存器(如耦合至乘法器级310的输出的寄存器510)实现。
在图5的示例中,有待相乘的序列值可以是X1=(A,B,C),并且X2=(D,E,F)。专用处理块500A和500B可以接收信号A、B、和C并以与图4中所展示的相同方式计算乘积A*B*C,其中不同之处在于,专用处理块500B的可配置互连资源可以将乘积A*B*C路由至输出363(而不是将A*B*C路由至图4中的专用处理块400B的输出365)。在本示例中,可以由一个流水线级581将输入580处的信号C延迟,以帮助将块500之间的输入信号同步化。
类似地,专用处理块500D和500E可以接收信号D、E、和F并以专用处理块500A和500B计算A*B*C的相同方式计算乘积D*E*F。具体地,可以由一个流水线级583延迟输入582处的信号F,以帮助块500之间的输入同步化。专用处理块500E的可配置互连资源可以将乘积D*E*F路由至输出363。
专用处理块500A、500B、500C、500D、和500E外部的可配置互连资源可以将乘积A*B*C从专用处理块500B的输出363路由至专用处理块500C的输入353并将乘积D*E*F从专用处理块500E的输出363路由至专用处理块500C的输入354。
专用处理块500C内的可配置互连电路系统可以将信号A*B*C从输入353路由通过多路复用器343、寄存器333、和多路复用器346至乘法器级310,并将信号D*E*F从输入354路由通过多路复用器344和寄存器334至乘法器级310。乘法器级310可以计算乘积A*B*C*D*E*F,并且可配置互连电路系统可以将该乘积路由通过寄存器510和多路复用器350至专用处理块500C的输出363。图5中用虚线示出了多路复用器343、344、345、346、347、和350对数据路径的示例性选择。
类似于图4中所示的,如果期望的话,专用处理块500A、500B、500C、500D、和500E中的未使用的资源可以用于执行附加算术运算。
图6根据实施例示出了一行四个专用处理块300A、300B、300C、和300D,其被配置成用于执行顺序缩放和的乘积运算、顺序缩放差的乘积运算、或顺序缩放加法/减法的乘积运算。如所示的,专用处理块300A、300B、300C、和300D可以各自由MAC块300实现,其中,加法器级320可以被配置成执行加法或减法。因此,专用处理块300A、300B、300C、和300D中的每一个块可以执行或者加法或者减法。
有时还被称为缩放积和的序列的和的乘积被定义为如下乘积
有时还被称为缩放积差的序列的差的乘积被定义为如下乘积
在图6的示例中,有待相乘的序列值可以是X=(A,C,E,G)并且Z=(B,D,F,H)。专用处理块300A可以在输入352和353接收信号A和B,同时专用处理块300B、300C、和300D分别在输入352和353接收输入C和D、E和F、以及G和H。
专用处理块300A中的可配置互连资源可以将信号A和B从输入352和353路由至加法器级320,这可以计算A+B之和。
类似地,专用处理块300B、300C、和300D中的可配置互连资源可以将信号C、E、和G中的每一个从对应的输入352路由至对应的加法器级320,并将信号D、F、H中的每一个从对应的输入353路由至对应的加法器级320。对应的加法器级320中的每一个可以计算所接收的信号之和(或差)。换言之,专用处理块300A、300B、300C、和300D的加法器级320可以分别计算和A+B、C+D、E+F、和G+H(或差A-B、C-D、E-F、和G-H)。
最右侧专用处理块(例如,专用处理块300A)中的可配置互连资源可以将该和(或差)路由至输出363,同时其他专用处理块(例如,专用处理块300B、300C、和300D)中的可配置互连资源可以将该和(或差)路由通过多路复用器345和346至对应的专用处理块的乘法器块310。
专用处理块外部的可配置互连资源可以将除了最左侧专用处理块之外所有的专用处理块的对应输出363(例如,专用处理块300A、300B、和300C的输出363)耦合至用于左侧的相邻的专用处理块的对应输入354(例如,专用处理块300B、300C、和300D的输入354)。作为一个示例,专用处理块300A的输出363可以通过这些专用处理块外部的可配置互连资源耦合至专用处理块300B的输入354。作为另一示例,专用处理块300B的输出363可以通过这些专用处理块外部的可配置互连资源耦合至专用处理块300C的输入354。
除了最右侧专用处理块之外所有的专用处理块(例如,专用处理块300B)中的可配置互连电路系统可以将在输入354处接收的先前计算(例如,A+B)的结果路由通过多路复用器344和寄存器334至乘法器级310。
由于在输入354接收的来自用于右侧的相邻的专用处理块的中间结果由一个流水线步骤延迟,最右侧专用处理块300A左侧的每个专用处理块需要一个附加流水线级(即,MAC块300B的输入680和682处的信号C和D可以各自被一个流水线级681延迟,MAC块300C的输入684和686处的信号E和F可以各自被两个流水线级685延迟,并且MAC块300D的输入688和690处的信号G和H可以各自被三个流水线级689延迟)。在一个实施例中,可以使用这些专用处理块外部的可配置资源实现这些流水线级。
除了最右侧专用处理块之外的所有专用处理块中的乘法器级(例如,专用处理块300B、300C、和300D的乘法器级310)可以基于从输入354接收的信号和从加法器级320接收的信号计算积和。对应的专用处理块中的可配置互连电路系统可以将来自乘法器级310的和的积路由通过多路复用器350至输出363。
图6中用虚线示出了多路复用器342、343、344、345、346、348、349、和350对数据路径的示例性选择。通过配置专用处理块300A、300B、300C、和300D中的所有加法器级320来执行减法,可以用数据路径的相同选择来计算差的乘积。通过单独地配置专用处理块300A、300B、300C、和300D中的每一个的加法器级320来执行加法或者减法任一,可以用数据路径的相同选择执行混合加法和减法的乘积。
图7根据实施例示出了一行四个专用处理块700A、700B、700C、和700D,其被配置成执行递归缩放和的乘积运算、递归缩放差的乘积运算、或加法/减法的递归缩放乘积运算。如所示的,专用处理块700A、700B、700C、和700D可以各自由专用处理块300用耦合在多路复用器345和多路复用器346之间的附加寄存器745实现,输出363被分成输出763A和763B,其中,输出763A耦合至加法器级320,并且输出763B耦合至乘法器级310,并且其中加法器级320可以被配置成执行加法或减法。因此,专用处理块700A、700B、700C、和700D中的每个块可以执行加法或者减法任一。
在图7的示例中,有待相乘的序列值可以是X=(A,C,E,G)并且Z=(B,D,F,H)。专用处理块700A可以在输入353和352接收信号G和H,同时专用处理块700B、700C、和700D分别在输入353和352接收输入E和F、C和D、以及A和B。
专用处理块700A、700B、700C、和700D中的可配置互连资源可以将信号A、C、E、和G中的每一个从对应的输入353路由至对应的加法器级320,并将信号B、D、F、H中的每一个从对应的输入352路由至对应的加法器级320。对应的加法器级320中的每一个可以计算所接收的信号之和(或差)。换言之,专用处理块700D、700C、700B、和700A的加法器级320可以分别计算和A+B、C+D、E+F、和G+H(或差A-B、C-D、E-F、和G-H)。
专用处理块700D和700B中的可配置互连资源可以将该和(或差)路由至输出763A,同时专用处理块700A和700C中的可配置互连资源可以将该和(或差)路由通过多路复用器345、寄存器745和多路复用器346至对应的专用处理块的乘法器块310。
专用处理块外部的可配置互连资源可以将专用处理块700D和700B的对应输出763A耦合至用于右侧的相邻的专用处理块的对应输入354。换言之,专用处理块700D的输出763A可以通过这些专用处理块外部的可配置互连资源耦合至专用处理块700C的输入354,并且专用处理块700B的输出763A可以通过这些专用处理块外部的可配置互连资源耦合至专用处理块700A的输入354。
专用处理块700C和700A中的可配置互连电路系统可以将在对应的输入354处接收的先前计算(例如,A+B和E+F)的结果路由通过多路复用器344和寄存器334至乘法器级310。
专用处理块700A和700C的乘法器级310可以基于从输入354接收的信号和从加法器级320接收的信号计算积和。因此,专用处理块700C的乘法器级310可以计算(A+B)*(C+D),同时专用处理块700A的乘法器级310计算(E+F)*(G+H)。
专用处理块700A中的可配置互连电路系统可以将和的乘积(即,(E+F)*(G+H))从乘法器级310路由至输出763B。专用处理块外部的可配置互连资源可以将专用处理块700A的输出763B耦合至专用处理块700D的输入354。
专用处理块700C中的可配置互连电路系统可以将和的乘积(即,(A+B)*(C+D))从乘法器级310路由通过多路复用器347至输出365,信号从该输出365经由直接连接到达相邻的专用处理块700D的输入355。专用处理块700D内的可配置互连电路系统可以将在输入355接收的信号(即,(A+B)*(C+D))路由通过多路复用器345、寄存器745、和多路复用器346至乘法器级310,并将在输入354接收的信号(即,(E+F)*(G+H))路由通过多路复用器344和寄存器334至乘法器级340。
乘法器级310可以计算两个信号的乘积(即,(A+B)*(C+D)*(E+F)*(G+H)),并在专用处理块700D的输出763B提供结果。
图7中用虚线示出了多路复用器342、343、344、345、346、347、348、和349对数据路径的示例性选择。通过配置专用处理块700A、700B、700C、和700D中的所有加法器级320来执行减法,可以用数据路径的相同选择来计算差的乘积。通过单独地配置专用处理块700A、700B、700C、和700D中的每一个的加法器级320来执行加法或者减法任一,可以用数据路径的相同选择执行混合加法和减法的乘积。
图8是根据实施例的四个专用处理块300A、300B、300C和300D的示意性布置的图,这些专用处理块具有实现霍纳法则(Horner’s role)的数据路径的示例性选择。如所示的,专用处理块300A、300B、300C和300D可以各自由专用处理块300实现。
通过霍纳法则进行多项式求值是计算时普遍使用的功能。多项式
y=x4+Ax3+Bx2+Cx+D (4)
可被写作
y=((((x+A)x+B)x+C)x+D) (5)
在图8的示例中,每个专用处理块可以计算该等式的一部分。例如,专用处理块300A可以在输入352和353接收信号A和X以及在输入354处接收信号X的另一实例。专用处理块300B、300C、和300D可以在输入352分别接收信号B、C、和D,并且专用处理块300B和300C可以在输入354分别接收信号X的另一实例。
由于来自先前运算(例如,专用处理块300A的加法器级320中信号A和X的相加)的中间结果相对于在输入354接收的信号X的实例被两个流水线步骤延迟,对于在输入354接收的信号X的每个实例需要两个附加流水线级。例如,在专用处理块300A、300B、和300C的输入354接收的信号X的实例可以分别被两个、四个、和六个附加流水线级延迟(即,在MAC块300A的输入880接收的信号X可以被两个流水线级881延迟;在MAC块300B的输入882接收的信号X可以被四个流水线级883延迟;并且在输入884接收的信号C可以被六个流水线级885延迟)。在一个实施例中,可以使用这些专用处理块外部的资源实现这些附加流水线级。
最右侧专用处理块中的(例如,专用处理块300A中的)可配置互连资源可以将信号A和X从输入352和353路由至加法器级320,该加法器级可以计算A+X之和。
在除最左侧专用处理块之外的所有专用处理块(例如,专用处理块300D)中的可配置互连电路系统可以将计算的和(例如专用处理块300A中A+X,或专用处理块300B中((A+X)X+B))从加法器级320路由通过多路复用器345和346至对应的专用处理块的乘法器级310。
类似地,除了最左侧专用处理块之外的所有专用处理块中的(例如,专用处理块300A、300B、和300C中的)可配置互连资源可以将在输入354接收的信号X的实例从对应的输入354路由通过多路复用器344和寄存器334至对应的乘法器级310,这可以计算从加法器级320接收的信号与信号X的实例的乘积。例如,专用处理块300A的乘法器级310可以计算乘积(A+X)*X。作为另一个示例,专用处理块300B的乘法器级310可以计算乘积((A+X)*X+B)*X。
除了最左侧专用处理块之外的所有专用处理块中的(例如,专用处理块300A、300B、和300C中的)可配置互连资源可以将由乘法器级320计算的乘积从该乘法器级路由通过乘法器347至输出365,该乘积被从该输出经直接连接发送至相邻的专用处理块的输入355。例如,可以将乘积(A+X)*X从专用处理块300A的乘法器级310路由通过多路复用器347至输出365,并从此处直接路由至专用处理块300B的输入355。
除了最右侧专用处理块之外的所有专用处理块中的(例如,专用处理块300B、300C、和300D中的)可配置互连资源可以将在输入355(例如,相邻的专用处理块的乘法器级310的输出)接收的信号从输入355路由通过多路复用器348和寄存器335至加法器级320。
对应的加法器级320中的每一个可以计算所接收的信号之和。换言之,专用处理块300A、300B、300C、和300D的加法器级320可以分别计算和X+A、(X+A)X+B、((X+A)*X+B)*X+C、以及(((X+A)*X+B)*X+C)*X+D。
最左侧专用处理块中的(例如,专用处理块300D中的)可配置互连资源可以将该和从加法器级320路由至输出363。
图8中用虚线示出了多路复用器342、343、344、345、346、347、348、349、和350对数据路径的示例性选择。
图9是根据实施例的用于执行缩放积和运算的示意性步骤的流程图。在步骤910过程中,第一专用处理块的第一、第二、和第三输入可以接收第一、第二、和第三信号。例如,图7的专用处理块700C可以分别在输入352、353、和354接收信号D、C和(A+B)。
在步骤920过程中,该第一专用处理块中的可配置互连电路系统可以将该第一和第二信号从该第一和第二输入路由至该第一专用处理块中的加法器级。例如,图7的专用处理块700C中的包括多路复用器342、343、348、和349的可配置互连电路系统可以将信号D和信号C从输入352和353路由至专用处理块700C的加法器级320。
在步骤930过程中,加法器可以计算该第一信号和第二信号的和。例如,图7的专用处理块700C的加法器级320可以计算信号D和C之和(即,生成和(C+D))。
在步骤940过程中,该可配置互连电路系统可以在第一专用处理块中将该第一和第二信号的和从该加法器级路由至乘法器级。例如,图7的专用处理块700C中的包括多路复用器345和346的可配置互连电路系统可以将D和C之和从加法器级320路由至专用处理块700C的乘法器级310。
在步骤950过程中,该可配置互连电路系统可以将该第三信号从该第三输入路由至该乘法器级。例如,图7的专用处理块700C中包括多路复用器344的可配置互连电路系统可以将信号(A+B)从输入353路由至专用处理块700C的乘法器级310。
在步骤960过程中,该乘法器级可以计算该第三信号与该第一和第二信号之和的乘积。例如,图7的专用处理块700C的乘法器级310可以计算和(C+D)与信号(A+B)的乘积,由此计算缩放积和(A+B)*(C+D)。
图10是根据实施例的用于使用霍纳法则执行多项式求值的示意性步骤的流程图。在步骤1010过程中,第一专用处理块的第一和第二输入可以经由附加可配置互连电路系统接收第一和第二信号。例如,图8的专用处理块300B可以分别在输入354和352接收信号X和信号B,由此信号B和X经由可配置互连电路系统被路由至输入352和354,该可配置互连电路系统可以形成于图7的专用处理块外部。
在步骤1020过程中,该第一专用处理块的第三输入可以直接从第二专用处理块的输出接收第三信号。例如,图8的专用处理块300B的输入355可以直接从专用处理块300A的输出365接收信号。
在步骤1030过程中,该第一专用处理块的可配置互连电路系统可以将该第二和第三信号从该第一专用处理块的该第二和第三输入路由至该第一专用处理块的加法器级。例如,图8的专用处理块300B中的可包括多路复用器342、349、和348的可配置互连电路系统可以将信号B和(X+A)*X从输入352和355分别路由至专用处理块300B的加法器级320。
在步骤1040过程中,第一专用处理块的加法器级可以计算第二与第三信号之和。例如,图8的专用处理块300B的加法器级310可以计算(X+A)*X与B之和。换言之,专用处理块300B的加法器级310可以计算(X+A)*X+B。
在步骤1050过程中,该第一专用处理块的可配置互连电路系统可以将该第一信号从该第一专用处理块的该第一输入路由至该第一专用处理块的乘法器级并将该和从该第一专用处理块的该加法器级路由至该第一专用处理块的该乘法器级。例如,图8的专用处理块300B中的可包括多路复用器344、345、和346的可配置互连电路系统可以将来自输入354的信号X和来自加法器级310的信号(X+A)*X+B分别路由至专用处理块300B的乘法器级310。
在此所述的方法和装置可以并入任何适当的集成电路(IC)或集成电路的系统中。例如,该方法和装置可以并入各种类型的器件中,如微处理器或其他IC。示例性IC包括可编程阵列逻辑(PAL)、可编程逻辑阵列(PLA)、现场可编程逻辑阵列(FPLA)、电可编程逻辑器件(EPLD)、电可擦除可编程逻辑器件(EEPLD)、逻辑单元阵列(LCA)、现场可编程门阵列(FPGA)、粗粒度可编程逻辑器件(CGPLD)、粗粒度可重构阵列(CGRA)、专用标准产品(ASSP)专用集成电路(ASIC),仅举几例。
在此所述的集成电路可以是包括以下部件中的一个或更多个的数据处理系统的部分:处理器、存储器、I/O电路系统、和外围器件。该数据处理系统能够用于广泛应用中,如计算机联网、数据联网、仪表化、视频处理、数字信号处理、或其中期望使用专用处理块的优势的任何其他合适的应用。该集成电路能够用于执行各种不同的逻辑功能。例如,该集成电路能够被配置成与系统处理器协同工作的处理器或控制器。该集成电路还可以用作仲裁器,该仲裁器用于仲裁对数据处理系统中的共享资源的访问。在又一示例中,集成电路能够被配置成处理器和该系统中的其他部件中的一个之间的接口。在一个实施例中,该集成电路可以是受让人所拥有的可编程逻辑器件家族中的一个。
虽然这些方法操作以特定顺序加以描述,应当理解的是,在所描述的操作之间可以执行其他操作,所描述的操作可以被调整为使得它们在稍微不同的时间发生,或者所描述的操作可以分布在允许以与处理相关联的各种间隔发生处理操作的系统中,只要对覆盖操作的处理是以期望方式执行的。
附加实施例
附加实施例1.一种集成电路上的乘法器累加器块,包括:第一、第二、和第三输入,该第一、第二、和第三输入直接耦合至形成于该乘法器累加器块外部的外部可配置互连电路系统;输出;第一算术操作符级,其从该第一和第二输入接收信号;第二算术操作符级,其从该第三输入接收信号并具有耦合至该输出的输出端口;内部可配置互连电路系统,其形成于该乘法器累加器块内,并且包括:第一多路复用器,其在从该第一算术操作符级生成的信号与在该第二算术操作符级的该输出端口生成的信号之间选择。
附加实施例2.如附加实施例1所述的乘法器累加器块,其中,该内部可配置互连电路系统进一步包括:第二多路复用器,其在从该第一算术操作符级生成的信号与从该第二输入接收的信号之间选择,并第二多路复用器将所选择的信号路由至该第二算术操作符级。
附加实施例3.如附加实施例2所述的乘法器累加器块,进一步包括:附加输出,其直接耦合至附加乘法器累加器块的输入;以及第三多路复用器,其具有连接至该附加输出的多路复用器输出、从该第一算术操作符级接收信号的第一多路复用器输入、以及耦合至该第二算术操作符级的该输出端口的第二多路复用器输入。
附加实施例4.如附加实施例2所述的乘法器累加器块,进一步包括:第四输入,其直接耦合至附加乘法器累加器块,其中,该第一和第二多路复用器接收来自该第四输入的信号。
附加实施例5.如附加实施例4所述的乘法器累加器块,其中,该内部可配置互连电路系统进一步包括:第三多路复用器,其在从该第一多路复用器生成的信号与从该第二输入接收的信号之间选择,并将所选择的信号路由至该第一算术操作符级。
附加实施例6.如附加实施例1所述的乘法器累加器块,其中,该第一算术操作符级包括乘法器。
附加实施例7.如附加实施例1所述的乘法器累加器块,其中,该第二算术操作符级包括加法器。
附加实施例8.如附加实施例1所述的乘法器累加器块,其中,该第一和第二算术操作符级作用于浮点数信号。
附加实施例9.一种用于操作多个专用处理块中的第一专用处理块的方法,包括:在该第一专用处理块的第一、第二、和第三输入接收第一、第二、和第三信号;用该第一专用处理块中的可配置互连电路系统,在第一专用处理块中将该第一和第二信号从该第一和第二输入路由至的加法器级;使用该加法器级计算该第一和第二信号的和;用该可配置互连电路系统,在第一专用处理块中将该第一和第二信号的和从该加法器级路由至乘法器级;用该可配置互连电路系统将该第三信号从该第三输入路由至该乘法器级;以及使用该乘法器级计算该第三信号与该第一和第二信号之和的乘积。
附加实施例10.如附加实施例9所述的方法,进一步包括:在该多个专用处理块中的第二专用处理块的第四输入接收第四信号;在该第二专用处理块的第五输入接收第五信号;用该第二专用处理块中的附加可配置互连电路系统,将该第四和第五信号从该低第四和第五输入路由至该第二专用处理块中的附加加法器级;以及使用该第二专用处理块中的该附加加法器级计算该第四和第五信号的附加和。
附加实施例11.如附加实施例10所述的方法,进一步包括:在该第一专用处理块的输出接收来自该乘法器级该乘积;以及将该乘积从该输出经由路由路径路由至该多个专用处理块中的第二专用处理块的第六输入。
附加实施例12.如附加实施例11所述的方法,其中,该路由路径将该第一专用处理块的该输出直接连接至该第二专用处理块的该第六输入。
附加实施例13.如附加实施例12所述的方法,进一步包括:用该第二专用处理块中的多路复用器,在第二专用处理块中从该第六输入接收该乘积并从该附加加法器级接收该附加和;用该多路复用器从该第六输入选择该乘积;以及在第二专用处理块中将所选择的该乘积从该多路复用器路由至乘法器级。
附加实施例14.如附加实施例11所述的方法,其中,该路由路径包括位于该多个专用处理块外部的外部可配置互连电路系统。
附加实施例15.如附加实施例14所述的方法,进一步包括:用该第二专用处理块中的多路复用器从该第六输入接收该乘积并从该第二专用处理块中的该附加加法器级接收该附加和;用该多路复用器从该第二专用处理块中的该附加加法器级选择该附加和;以及在第二专用处理块中将所选择的该附加和从该多路复用器路由至乘法器级。
附加实施例16.一种用于操作第一和第二专用处理块的方法,其中,该第一和第二专用处理块中的每一个包括加法器级、乘法器级、和可配置互连电路系统,该方法包括:在该第一专用处理块的第一和第二输入经由附加可配置互连电路系统接收第一和第二信号;在该第一专用处理块的第三输入直接从该第二专用处理块的输出接收第三信号;用该第一专用处理块中的该可配置互连电路系统将该第二和第三信号从该第一专用处理块的该第二和第三输入路由至该第一专用处理块的该加法器级;用该第一专用处理块的该加法器级计算该第二和第三信号的和;以及用该第一专用处理块的该可配置互连电路系统将该第一信号从该第一专用处理块的该第一输入路由至该第一专用处理块的该乘法器级并将该和从该第一专用处理块的该加法器级路由至该第一专用处理块的该乘法器级。
附加实施例17.如附加实施例16所述的方法,进一步包括:
使用该第一专用处理块的该乘法器级计算该和与该第一信号的乘积;以及用该第一专用处理块中的该可配置互连电路系统将该乘积从该第一专用处理块的该乘法器级路由至该第一专用处理块的附加输出。
附加实施例18.如附加实施例16所述的方法,进一步包括:在该第二专用处理块的第四和第五输入经由该附加可配置互连电路系统接收第四和第五信号;以及用该第二专用处理块中的该可配置互连电路系统将该第四和第五信号从该第二专用处理块的该第四和第五输入路由至该第二专用处理块的该加法器级。
附加实施例19.如附加实施例18所述的方法,进一步包括:用该第二专用处理块的该加法器级计算该第四和第五信号的附加和;以及用该第二专用处理块的该可配置互连电路系统将第六信号从该第二专用处理块的第六输入路由至该第二专用处理块的该乘法器级并将该附加和从该第二专用处理块的该加法器级路由至该第二专用处理块的该乘法器级。
附加实施例20.如附加实施例19所述的方法,进一步包括:使用该第二专用处理块的该乘法器级计算该附加和与该第六信号的附加乘积;以及用该第二专用处理块中的该可配置互连电路系统将该附加乘积从该第二专用处理块的该乘法器级路由至该第二专用处理块的该输出。
前述仅是本发明的说明性的原理,并且在不背离发明范围和精神的情况下本领域技术人员能够做出各种修改。

Claims (16)

1.一种集成电路上的乘法器累加器块,包括:
第一、第二、和第三输入,所述第一、第二和第三输入直接耦合至形成于所述乘法器累加器块外部的外部可配置互连电路系统;
第四输入,其直接耦合至另一乘法器累加器块并从所述另一乘法器累加器块接收信号;
输出;
第一算术操作符级,其接收来自所述第一和第二输入的信号;
第二算术操作符级,其接收来自所述第三输入的信号并具有耦合至所述输出的输出端口;
内部可配置互连电路系统,其形成于所述乘法器累加器块内,并且包括:
第一多路复用器,其在从所述第一算术操作符级生成的信号与在所述第二算术操作符级的所述输出端口生成的信号之间选择;和
第二多路复用器,其在从所述第一算术操作符级生成的信号与从所述第二输入接收的信号之间选择,并将所选择的信号路由至所述第二算术操作符级;
其中,所述第一和第二多路复用器接收来自所述第四输入的信号。
2.如权利要求1所述的乘法器累加器块,进一步包括:
附加输出,其直接耦合至附加乘法器累加器块的输入;以及
第三多路复用器,其具有连接至所述附加输出的多路复用器输出、从所述第一算术操作符级接收信号的第一多路复用器输入、以及耦合至所述第二算术操作符级的所述输出端口的第二多路复用器输入。
3.如权利要求1所述的乘法器累加器块,其中,所述内部可配置互连电路系统进一步包括:
第三多路复用器,其在从所述第一多路复用器生成的信号与从所述第二输入接收的信号之间选择,并将所选择的信号路由至所述第一算术操作符级。
4.如权利要求1所述的乘法器累加器块,其中,所述第一算术操作符级包括乘法器。
5.如权利要求1所述的乘法器累加器块,其中,所述第二算术操作符级包括加法器。
6.如权利要求1所述的乘法器累加器块,其中,所述第一和第二算术操作符级作用于浮点数信号。
7.一种用于操作多个专用处理块中的第一专用处理块的方法,包括:
在所述第一专用处理块的第一、第二、和第三输入处接收第一、第二、和第三信号;
用所述第一专用处理块中的可配置互连电路系统,在所述第一专用处理块中将所述第一和第二信号从所述第一和第二输入路由至加法器级;
使用所述加法器级计算所述第一和第二信号的和;
用所述可配置互连电路系统,在所述第一专用处理块中将所述第一和第二信号的和从所述加法器级路由至乘法器级;
用所述可配置互连电路系统将所述第三信号从所述第三输入路由至所述乘法器级;
使用所述乘法器级计算所述第三信号与所述第一和第二信号之和的乘积;
在所述多个专用处理块中的第二专用处理块的第四输入处接收第四信号;
在所述第二专用处理块的第五输入处接收第五信号;
用所述第二专用处理块中的附加可配置互连电路系统,在所述第二专用处理块中将所述第四和第五信号从所述第四和第五输入路由至附加加法器级;以及
使用所述第二专用处理块中的所述附加加法器级计算所述第四和第五信号的附加和。
8.如权利要求7所述的方法,进一步包括:
接收来自所述第一专用处理级的输出处的所述乘法器级的所述乘积;以及
将所述乘积从所述输出经由路由路径路由至所述多个专用处理块中的第二专用处理块的第六输入。
9.如权利要求8所述的方法,其中,所述路由路径直接连接所述第一专用处理块的所述输出至所述第二专用处理块的所述第六输入。
10.如权利要求9所述的方法,进一步包括:
用所述第二专用处理块中的多路复用器,在所述第二专用处理块中从所述第六输入接收所述乘积并从所述附加加法器级接收所述附加和;
用所述多路复用器从所述第六输入选择所述乘积;以及
在所述第二专用处理块中将所选择的乘积从所述多路复用器路由至乘法器级。
11.如权利要求8所述的方法,其中,所述路由路径包括位于所述多个专用处理块外部的外部可配置互连电路系统。
12.如权利要求11所述的方法,进一步包括:
用所述第二专用处理块中的多路复用器,在所述第二专用处理块中从所述第六输入接收所述乘积并从所述附加加法器级接收所述附加和;
用所述多路复用器,在所述第二专用处理块中从所述附加加法器级选择所述附加和;以及
在所述第二专用处理块中,将所选择的附加和从所述多路复用器路由至乘法器级。
13.一种用于操作第一和第二专用处理块的方法,其中,所述第一和第二专用处理块中的每一个包括加法器级、乘法器级、和可配置互连电路系统,所述方法包括:
在所述第一专用处理块的第一和第二输入处经由附加可配置互连电路系统接收第一和第二信号;
在所述第一专用处理块的第三输入处直接从所述第二专用处理块的输出接收第三信号;
用所述第一专用处理块中的所述可配置互连电路系统将所述第二和第三信号从所述第一专用处理块的所述第二和第三输入路由至所述第一专用处理块的所述加法器级;
用所述第一专用处理块的所述加法器级计算所述第二和第三信号的和;
用所述第一专用处理块的所述可配置互连电路系统,将所述第一信号从所述第一专用处理块的所述第一输入路由至所述第一专用处理块的所述乘法器级,并将所述和从所述第一专用处理块的所述加法器级路由至所述第一专用处理块的所述乘法器级;
在所述第二专用处理块的第四和第五输入处经由所述附加可配置互连电路系统接收第四和第五信号;以及
用所述第二专用处理块中的所述可配置互连电路系统,将所述第四和第五信号从所述第二专用处理块的所述第四和第五输入路由至所述第二专用处理块的所述加法器级。
14.如权利要求13所述的方法,进一步包括:
使用所述第一专用处理块的所述乘法器级计算所述和与所述第一信号的乘积;以及
用所述第一专用处理块的所述可配置互连电路系统,将所述乘积从所述第一专用处理块的所述乘法器级路由至所述第一专用处理块的附加输出。
15.如权利要求13所述的方法,进一步包括:
用所述第二专用处理块的所述加法器级计算所述第四和第五信号的附加和;以及
用所述第二专用处理块的所述可配置互连电路系统,将第六信号从所述第二专用处理块的第六输入路由至所述第二专用处理块的乘法器级,并将所述附加和从所述第二专用处理块的所述加法器级路由至所述第二专用处理块的所述乘法器级。
16.如权利要求15所述的方法,进一步包括:
使用所述第二专用处理块的所述乘法器级计算所述附加和与所述第六信号的附加乘积;以及
用所述第二专用处理块中的所述可配置互连电路系统,将所述附加乘积从所述第二专用处理块的所述乘法器级路由至所述第二专用处理块的所述输出。
CN201610922486.3A 2015-10-21 2016-10-21 用于在乘法器累加器块中执行乘积级数运算的方法和装置 Active CN106610813B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/919,429 2015-10-21
US14/919,429 US10037192B2 (en) 2015-10-21 2015-10-21 Methods and apparatus for performing product series operations in multiplier accumulator blocks

Publications (2)

Publication Number Publication Date
CN106610813A CN106610813A (zh) 2017-05-03
CN106610813B true CN106610813B (zh) 2019-06-28

Family

ID=57288131

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610922486.3A Active CN106610813B (zh) 2015-10-21 2016-10-21 用于在乘法器累加器块中执行乘积级数运算的方法和装置

Country Status (3)

Country Link
US (2) US10037192B2 (zh)
EP (1) EP3159789B1 (zh)
CN (1) CN106610813B (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10037192B2 (en) 2015-10-21 2018-07-31 Altera Corporation Methods and apparatus for performing product series operations in multiplier accumulator blocks
US10140091B2 (en) * 2016-09-27 2018-11-27 Altera Corporation Integrated circuits with specialized processing blocks for performing floating-point fast fourier transforms and complex multiplication
CN108958704B (zh) * 2017-05-18 2020-12-15 华为技术有限公司 一种数据处理装置及方法
US10970042B2 (en) 2017-11-20 2021-04-06 Intel Corporation Integrated circuits with machine learning extensions
US11175892B2 (en) 2017-11-20 2021-11-16 Intel Corporation Integrated circuits with machine learning extensions
KR102610842B1 (ko) * 2017-12-01 2023-12-07 한국전자통신연구원 뉴럴 네트워크에서의 프로세싱 엘리먼트 및 그 동작 방법
CN111971649A (zh) * 2018-03-30 2020-11-20 国立研究开发法人理化学研究所 运算装置和运算系统
JP7038608B2 (ja) * 2018-06-15 2022-03-18 ルネサスエレクトロニクス株式会社 半導体装置
CN112602054A (zh) * 2018-08-31 2021-04-02 弗莱克斯-罗技克斯技术公司 乘法器累加器电路、用于乘法累加的逻辑瓦片架构和包括逻辑瓦片阵列的ic
US11194585B2 (en) 2019-03-25 2021-12-07 Flex Logix Technologies, Inc. Multiplier-accumulator circuitry having processing pipelines and methods of operating same
US11314504B2 (en) 2019-04-09 2022-04-26 Flex Logix Technologies, Inc. Multiplier-accumulator processing pipelines and processing component, and methods of operating same
US11288076B2 (en) 2019-09-13 2022-03-29 Flex Logix Technologies, Inc. IC including logic tile, having reconfigurable MAC pipeline, and reconfigurable memory
US11842169B1 (en) * 2019-09-25 2023-12-12 Amazon Technologies, Inc. Systolic multiply delayed accumulate processor architecture
US11455368B2 (en) 2019-10-02 2022-09-27 Flex Logix Technologies, Inc. MAC processing pipeline having conversion circuitry, and methods of operating same
US11467806B2 (en) 2019-11-27 2022-10-11 Amazon Technologies, Inc. Systolic array including fused multiply accumulate with efficient prenormalization and extended dynamic range
US11816446B2 (en) 2019-11-27 2023-11-14 Amazon Technologies, Inc. Systolic array component combining multiple integer and floating-point data types
US11693625B2 (en) 2019-12-04 2023-07-04 Flex Logix Technologies, Inc. Logarithmic addition-accumulator circuitry, processing pipeline including same, and methods of operation
US11960856B1 (en) 2020-01-15 2024-04-16 Flex Logix Technologies, Inc. Multiplier-accumulator processing pipeline using filter weights having gaussian floating point data format
US11442881B2 (en) 2020-04-18 2022-09-13 Flex Logix Technologies, Inc. MAC processing pipelines, circuitry to control and configure same, and methods of operating same
US11308027B1 (en) * 2020-06-29 2022-04-19 Amazon Technologies, Inc. Multiple accumulate busses in a systolic array
US11604645B2 (en) 2020-07-22 2023-03-14 Flex Logix Technologies, Inc. MAC processing pipelines having programmable granularity, and methods of operating same
US11880682B2 (en) 2021-06-30 2024-01-23 Amazon Technologies, Inc. Systolic array with efficient input reduction and extended array performance

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4916651A (en) * 1988-01-29 1990-04-10 Texas Instruments Incorporated Floating point processor architecture
CN1658152A (zh) * 2004-02-20 2005-08-24 阿尔特拉公司 乘法器-累加器块模式划分
CN102819520A (zh) * 2011-05-09 2012-12-12 阿尔特拉公司 具有嵌入式浮点结构的数字信号处理模块

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7840630B2 (en) * 2003-12-29 2010-11-23 Xilinx, Inc. Arithmetic logic unit circuit
US7472155B2 (en) * 2003-12-29 2008-12-30 Xilinx, Inc. Programmable logic device with cascading DSP slices
US7567997B2 (en) 2003-12-29 2009-07-28 Xilinx, Inc. Applications of cascading DSP slices
US7849119B2 (en) * 2003-12-29 2010-12-07 Xilinx, Inc. Digital signal processing circuit having a pattern detector circuit
US8266199B2 (en) 2006-02-09 2012-09-11 Altera Corporation Specialized processing block for programmable logic device
US8301681B1 (en) 2006-02-09 2012-10-30 Altera Corporation Specialized processing block for programmable logic device
US8266198B2 (en) 2006-02-09 2012-09-11 Altera Corporation Specialized processing block for programmable logic device
US8307023B1 (en) 2008-10-10 2012-11-06 Altera Corporation DSP block for implementing large multiplier on a programmable integrated circuit device
US7746109B1 (en) * 2009-04-02 2010-06-29 Xilinx, Inc. Circuits for sharing self-timed logic
US9600278B1 (en) * 2011-05-09 2017-03-21 Altera Corporation Programmable device using fixed and configurable logic to implement recursive trees
US9207908B1 (en) 2013-01-29 2015-12-08 Altera Corporation Digital signal processing blocks with embedded arithmetic circuits
US9507565B1 (en) 2014-02-14 2016-11-29 Altera Corporation Programmable device implementing fixed and floating point functionality in a mixed architecture
US10037192B2 (en) 2015-10-21 2018-07-31 Altera Corporation Methods and apparatus for performing product series operations in multiplier accumulator blocks

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4916651A (en) * 1988-01-29 1990-04-10 Texas Instruments Incorporated Floating point processor architecture
CN1658152A (zh) * 2004-02-20 2005-08-24 阿尔特拉公司 乘法器-累加器块模式划分
CN102819520A (zh) * 2011-05-09 2012-12-12 阿尔特拉公司 具有嵌入式浮点结构的数字信号处理模块

Also Published As

Publication number Publication date
US10613831B2 (en) 2020-04-07
US10037192B2 (en) 2018-07-31
EP3159789B1 (en) 2018-11-28
US20170115958A1 (en) 2017-04-27
US20180341461A1 (en) 2018-11-29
CN106610813A (zh) 2017-05-03
EP3159789A1 (en) 2017-04-26

Similar Documents

Publication Publication Date Title
CN106610813B (zh) 用于在乘法器累加器块中执行乘积级数运算的方法和装置
US10838695B2 (en) Fixed-point and floating-point arithmetic operator circuits in specialized processing blocks
CN102819520B (zh) 具有嵌入式浮点结构的数字信号处理模块
US10761805B2 (en) Reduced floating-point precision arithmetic circuitry
US9207908B1 (en) Digital signal processing blocks with embedded arithmetic circuits
CN109643227B (zh) 可变精度浮点乘法器
US20220027128A1 (en) Programmable Device Implementing Fixed and Floating Point Functionality in a Mixed Architecture
CN101042583B (zh) 用于可编程逻辑器件的专门处理块
US9098332B1 (en) Specialized processing block with fixed- and floating-point structures
US20220012015A1 (en) Integrated circuits with machine learning extensions
US8543634B1 (en) Specialized processing block for programmable integrated circuit device
CN115756383A (zh) 具有用于执行浮点快速傅立叶变换和复数乘法的专用处理块的集成电路
EP3841461B1 (en) Digital circuit with compressed carry
US10037189B2 (en) Distributed double-precision floating-point multiplication
CN107045434B (zh) 一种fpga中多功能硬件专用乘法器及fpga芯片
US9904514B1 (en) Fused floating-point arithmetic circuitry
US9164728B1 (en) Ternary DSP block

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant