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

用于低延时模块化乘法的系统和方法与流程

2022-06-30 00:24:01 来源:中国专利 TAG:


1.本公开总体上涉及诸如可编程逻辑器件(pld)之类的集成电路(ic)设备。更具体地,本公开涉及用于在集成电路设备上执行模块化乘法运算的技术,该集成电路设备包括诸如现场可编程门阵列(fpga)之类的可编程逻辑器件。


背景技术:

2.本部分旨在向读者介绍与在下面描述和/或要求保护的本公开的各个方面相关的技术领域的各个方面。该论述被认为有助于为读者提供背景技术信息以促进更好地理解本公开的各个方面。因此,可以理解的是,这些陈述将在此情况下阅读,而不是作为对现有技术的承认。
3.集成电路设备可以用于各种目的或应用,例如,数字信号处理、机器学习和加密货币或其他区块链相关应用。可编程逻辑器件可以用于执行这些功能,例如,使用特定电路(例如,处理块)。在一些情况下,对于执行乘法运算(例如,模块化乘法运算)高效的特定电路可能以不期望地高的延时来执行这些运算,特定电路可能占据集成电路设备上不期望的面积量,或两者。
附图说明
4.在阅读以下详细描述并且参考附图时,可以更好地理解本公开的各个方面,其中:
5.图1是根据本公开的实施例的可以使用乘法器电路来实现算术运算的系统的框图;
6.图2是根据本公开的实施例的图1的集成电路设备的示例的框图;
7.图3是根据本公开的实施例的图1的集成电路设备的乘法器电路可以在进行乘法运算时执行的过程的流程图;
8.图4是示出根据本公开的实施例的子积的列和子积的列之和的行的框图;
9.图5是示出根据本公开的实施例的生成模值并对模值求和的示例的示图;
10.图6是示出根据本公开的另一实施例的生成模值并对模值求和的另一示例的示图;
11.图7是示出根据本公开的实施例的图4的子积的列和子积的列之和的行以及减少的和(reduced sum)的框图;
12.图8是根据本公开的实施例的独立加法器树的框图;
13.图9是根据本公开的实施例的其中在加法器树之间共享进位输出值(carry-out value)的加法器树的框图;
14.图10是根据本公开的另一实施例的其中在加法器树之间共享进位输出值的加法器树的框图;
15.图11是根据本公开的实施例的可以包含于图10的加法器树中的一个或多个加法器树中的加法器电路的框图;
16.图12是根据本公开的实施例的图11的三元加法器电路的框图;以及
17.图13是根据本公开的实施例的数据处理系统。
具体实施方式
18.下面将描述一个或多个具体实施例。为了提供这些实施例的简明描述,在说明书中并未描述实际实现方式的所有特征。应该理解,在任何此类实际实现方式的开发中,就像在任何工程或设计项目中一样,必须做出许多特定于实现方式的决策来实现开发人员的特定目标,例如,遵守与系统相关和与业务相关的约束,这可能因实现方式而异。此外,应当理解,这样的开发工作可能是复杂且耗时的,但是虽然如此,对于受益于本公开的普通技术人员而言,这将是设计、制作和制造的例行任务。
19.当介绍本公开的各种实施例的元素时,冠词“一(a)”、“一个(an)”和“该(the)”旨在表示存在元素中的一个或多个元素。术语“包括”和“具有”旨在是包含性的并且表示除了所列元素之外可能存在附加元素。此外,应当理解,对本公开的“一些实施例”、“实施例”、“一个实施例”或“一实施例”的引用并不旨在被解释为排除存在也包含所引述特征的附加实施例。此外,短语a“基于”b旨在表示a至少部分地基于b。此外,术语“或”旨在是包含性的(例如,逻辑or)而不是排他性的(例如,逻辑xor)。换言之,短语a“或”b旨在表示a、b或者a和b两者。
20.随着诸如机器学习、人工智能应用、加密货币相关应用和数字信号处理(dsp)应用之类的各种应用变得越来越普遍,越来越期望以更高效的方式执行与这些应用相关联的各种运算。例如,可能期望改变(例如,减少)用于执行这些运算中的一个或多个运算的电路量,以便为执行一个或多个其他运算的电路提供空间。类似地,可能期望减少用于执行与这些应用相关联的运算的时间量。换言之,期望以较低延时的方式执行这些运算,例如,以使运算能够被更快地执行。记住这一点,当前描述的技术涉及减少与模块化乘法运算相关联的延时以及减少用于执行模块化乘法运算的电路量。例如,模块化乘法运算可以由集成电路设备(包括可编程逻辑器件,例如,fpga、专用标准产品(assp)和专用集成电路(asic))在用于机器学习、人工智能应用以及加密货币相关应用时执行。如下面讨论的,包含于集成电路设备上的电路(例如,dsp电路、乘法电路、加法电路)以减少与执行这些运算相关联的延时同时还减少用于执行这些运算的集成电路设备上的面积量的方式执行模块化乘法。
21.作为更具体的示例,集成电路设备可以执行与可变延迟函数(vdf)相关联的数学运算,vdf可以用作在诸如加密货币或区块链应用之类的密码应用中使用的工作证明。一般而言,工作证明是其中一方(例如,进行操作的或与用于加密货币应用的一个或多个集成电路设备相关联的一方)向其他人(加密货币交易的一方或多方)证明已经花费了一定数量的计算努力的证明。因此,vdf具有一定程度上最小的延时。也即,vdf不能被加速或并行化超过最知名的实现方式。因此,确定vdf的最佳(例如,最优或最快)实现方式将是有益的。在许多情况下,模块化乘法和其他数学运算(例如,加法)由集成电路设备中包括的电路作为确定这种实现方式的一部分而执行。因此,通过以较低延时的方式执行模块化乘法(以及作为执行模块化乘法的一部分执行的运算),集成电路设备能够确定用于vdf的最佳(例如,最优或更快)解决方案,从而增强集成电路设备在用于加密货币和区块链应用等时的性能。
22.考虑到上述情况,图1是可以使用乘法器电路来实现算术运算(例如,模块化乘法)
的系统10的框图。设计者可能期望在集成电路设备12(例如,现场可编程门阵列(fpga)或专用集成电路(asic))上实现功能,例如,本公开的大精度算术运算。在一些情况下,设计者可以指定要实现的高级程序,例如,opencl程序,这可以使设计者能够在没有低级硬件描述语言(例如,verilog或vhdl)的特定知识的情况下更高效且容易地提供编程指令来为集成电路设备12配置可编程逻辑单元的集合。例如,因为opencl与诸如c 之类的其他高级编程语言非常相似,因此相比于被要求学习不熟悉的低级硬件描述语言以实现集成电路设备12中的新功能的设计者,熟悉此类编程语言的可编程逻辑的设计者可能具有减少的学习曲线。
23.设计者可以使用设计软件14来实现他们的高级设计,设计软件14例如为intel corporation的版本。设计软件14可以使用编译器16将高级程序转换为较低级描述。编译器16可以向主机18和集成电路设备12提供代表高级程序的机器可读指令。主机18可以接收可以由内核程序20实现的主机程序22。为了实现主机程序22,主机18可以经由通信链路24将来自主机程序22的指令传送到集成电路设备12,通信链路24可以是例如直接存储器访问(dma)通信或快速外围组件互连(pcie)通信。在一些实施例中,内核程序20和主机18可以启用集成电路设备12上的乘法器电路26的配置。乘法器电路26可以包括用于执行若干不同运算的电路。例如,乘法器电路26可以包括分别用于执行乘法和加法运算的一个或多个乘法器和加法器。因此,乘法器电路26可以包括用于实现例如执行用于ai或非ai数据处理的乘法(例如,模块化乘法、矩阵-矩阵乘法、矩阵-向量乘法、向量-向量乘法)的运算的电路。此外,在一些实施例中,乘法器电路26可以包括一个或多个dsp块,并且集成电路设备12可以包括许多(例如,数百或数千)dsp块。dsp块可以通信地彼此耦合,使得从一个dsp块输出的数据可以提供给其他dsp块。此外,加法器电路可以包含于乘法器电路26中,例如,以将在执行乘法运算时确定的子积相加。实际上,如下面的示例中所讨论的,乘法器电路26可以通过以下步骤执行涉及相对大的值(例如,乘数和/或被乘数)的乘法:将值中的一个或多个值分解成若干较小的值,生成子积,以及将子积相加。当执行模块化乘法时,还可以确定与子积相关联的一个或多个和(例如,子积的列之和)的模值。
24.虽然以上讨论的技术是针对高级程序的应用描述的,但是在一些实施例中,设计者可以使用设计软件14来生成和/或指定低级程序,例如,上面描述的低级硬件描述语言。此外,在一些实施例中,可以在没有单独的主机程序22的情况下实现系统10。此外,在一些实施例中,本文描述的技术可以在电路中实现为不可编程的电路设计。例如,乘法器电路26可以至少部分地形成在可编程逻辑器件(例如,fpga或asic)的不可编程部分中。此外,在其他实施例中,乘法器电路26可以部分地实现在集成电路设备12的可由最终用户编程的部分中(例如,软逻辑)和集成电路设备12的不能由最终用户编程的部分中(例如,硬逻辑)。例如,dsp块可以用硬逻辑实现,而包含于乘法器电路中的其他电路(包括用于在乘法器电路的各部分之间路由数据的电路)可以用软逻辑实现。因此,本文描述的实施例旨在是说明性的而非限制性的。
25.现在转向对集成电路设备12的更详细讨论,图2示出了作为诸如现场可编程门阵列(fpga)之类的可编程逻辑器件的集成电路设备12的示例。此外,应当理解,集成电路设备12可以是任何其他合适类型的集成电路设备(例如,专用集成电路和/或专用标准产品)。如图所示,集成电路设备12可以具有输入/输出电路42,其用于经由输入/输出引脚44驱动信号离开设备并且从其他设备接收信号。互连资源46(例如,全局和局部垂直和水平导线和总
线)可以用于在集成电路设备12上路由信号。另外,互连资源46可以包括固定互连(导线)和可编程互连(例如,在相应固定互连之间的可编程连接)。可编程逻辑48可以包括组合和顺序逻辑电路。例如,可编程逻辑48可以包括查找表、寄存器和复用器。在各种实施例中,可编程逻辑48可以被配置为执行定制逻辑功能。与互连资源相关联的可编程互连可以被认为是可编程逻辑48的一部分。
26.集成电路设备12可以表示的可编程逻辑器件可以在可编程逻辑48内包含可编程元件50。例如,如上面讨论的,设计者(例如,客户)可以编程(例如,配置)可编程逻辑48以执行一个或多个期望功能。通过示例的方式,一些可编程逻辑器件可以通过使用掩模编程布置配置它们的可编程元件50(这在半导体制造期间执行)来编程。其他可编程逻辑器件在半导体制造操作已完成之后配置,例如,通过使用电编程或激光编程来对它们的可编程元件50进行编程。通常,可编程元件50可以基于任何合适的可编程技术,例如,熔丝、反熔丝、电可编程只读存储器技术、随机存取存储器单元、掩模编程元件等。
27.许多可编程逻辑器件是电编程的。通过电编程布置,可编程元件50可以由一个或多个存储器单元形成。例如,在编程期间,使用引脚44和输入/输出电路42将配置数据加载到存储器单元中。在一个实施例中,存储器单元可以实现为随机存取存储器(ram)单元。本文描述的基于ram技术的存储器单元的使用旨在仅作为一个示例。此外,因为这些ram单元在编程期间加载有配置数据,所以它们有时被称为配置ram单元(cram)。这些存储器单元可以各自提供对应的静态控制输出信号,该静态控制输出信号控制可编程逻辑48中相关联的逻辑组件的状态。例如,在一些实施例中,输出信号可以施加于可编程逻辑48内的金属氧化物半导体(mos)晶体管的栅极。
28.记住上述内容,本文讨论的乘法器电路26可以用于各种应用并且执行与应用相关联的许多不同运算,例如,乘法和加法。例如,模块化乘法运算可能非常适合加密货币应用。如下面讨论的,由于乘法器电路26本身以及乘法器电路26执行模块化乘法的方式,乘法器电路26可以减少与模块化乘法运算相关联的延时。为了帮助提供乘法器电路26可以执行的运算的概览,提供了图3。具体地,图3是乘法器电路26可以对乘法器电路26接收的数据执行以确定输入数据的乘积的过程70的流程图。另外,应当注意,关于过程70描述的操作将关于随后的附图更详细地讨论。过程70通常包括:接收数据(过程框72);根据接收到的数据确定子积(过程框74);以及确定子积之和(过程框76),这可以通过确定每个子积的列之和(子过程框78)和使子积的列之和相加(子过程框80)来完成。过程70还包括减少子积的列(过程框82)以及确定并输出一个或多个和(过程框84)。
29.在过程框72处,乘法器电路26接收数据。数据可以包括待相乘的值。数据可以包括定点数据类型。在一些情况下,待相乘的值可能比用于执行乘法运算的乘法器电路26的单独的部分的精度更精确。例如,乘法器电路26可以包括处理值的27比特宽的dsp块,但是待相乘的值中的一个或多个值可以包括多于27比特(例如,128比特、256比特、512比特、1024比特或超过1024比特)。在这样的实施例中,乘法器电路26或集成电路设备12可以将待相乘的值中的一个或多个值细分为若干更小的值。例如,继续其中乘法器电路26包括处理27比特值的dsp块的示例,待相乘的两个128比特值可以各自被细分为五个子项。
30.在过程框74处,乘法器电路26可以确定子积。换言之,乘法器电路26可以使与一个值(例如,被乘数)相关联的子项乘以与另一值(例如,乘数)(或者在只有一个值被划分为子
项的情况下的另一值)相关联的子项。在上面的示例中,其中两个128比特值各自被细分为五个子项,可以使用二十五个dsp块(例如,dsp块的5乘5布置)来乘以这些子项。
31.为了帮助进一步扩展生成子积的乘法器电路26,提供了图4。具体地,图4是示出子积92的列90(例如,列90a-90g)以及列90的和96(例如,和96a-96g)的行94的图。更具体地,图4包括子积92的七个列90。虽然提供了子积92的七个列90,但是应当注意,列90和子积92的数量在其他实施例中可以不同。实际上,七个列90可能不对应于任何特定大小的(例如,待相乘的一个或多个值的)乘数或分解。相反,列90的数量和列90的深度(即,每列90的子积92的数量)可以取决于待相乘的值的大小以及值如何细分(例如,分解成将被相乘以生成子积92的更小的值)。例如,在两个128比特值被分解到27比特dsp块中(例如,dsp块的5x5布置)的示例中,将存在十个列90,其中列深度最多为九个项(即,子积92)。这表示,无论列90的数量如何,每个列90中的子积92的数量通常从右到左增加直到中间(例如,列90d),然后再次从中间到左减少,如图4所示。因此,虽然图4包括最大深度为七的子积92的七个列90(例如,列90d的七个子积92),但是图4中所示的乘法运算仅是一个示例。在其他实施例中,可以包括与图4相比更少或更多的列90,并且列90的最大深度可以不同于图4。
32.记住图4并返回到图3和过程70的讨论,在过程框76处,乘法器电路26可以确定子积之和。换言之,可以包含于乘法器电路26中的加法器电路可以将子积92相加在一起(例如,作为确定待相乘的两个初始值的乘积的一部分)。为了确定子积之和,乘法器电路26在子框78处可以针对子积92的每个列90确定和(例如,通过将特定列90中的每个子积92相加到一起),并且在子框80处,将列90的和相加。换言之,乘法器电路26可以针对列90中的每列将列90中的子积中的每个子积相加,并且将列90的和相加到一起。例如,在图4中,和96中的每个和是通过将特定列90(即,给定和96所位于的列90)的子积92相加而确定的和。更具体地,可以独立地确定每个和96。也即,可以在不考虑与其他列相关联的值(例如,子积、和、字增长)的情况下确定和96。
33.通常,取决于子积92的列90的数量和列90的深度,可能发生字增长。换言之,如比特98(例如,比特98a-98e)或由和96内的条形指示的任何比特(例如,和96b-96f)所示,和96的一部分可以包括多于乘法器电路26中包括的dsp块可处理的宽度的一个或多个比特。例如,在图4中,和96b、96f包括两个比特的字增长,而和96c、96d、96e包括三个比特的字增长。作为另一示例,在上面讨论的27比特宽的dsp块的情况下,子积92的给定列90的和96可以包括比27比特多的一个、两个、三个或四个比特(即,一个、两个、三比特或四个比特的字增长)。与列的深度类似,字增长的量通常从右到中间(例如,列90d)增加,并从中间到左减少。
34.乘法器电路26可以执行进一步的加法运算以将和96加在一起。例如,在过程框82处,乘法器电路26可以通过确定和96中的每个和的模的秩大于输入变元大小来减少列90的和96中的一个或多个和。换言之,包括比乘法器电路进行相乘的细分值多的比特的和96中的每个和(其可以是与用于确定子积92的dsp块的宽度相同的比特数)可以被替换为它的模。可以基于下面提供的模恒等式执行模块化减少:
35.((a b)mod n)=a mod n b mod n
36.其中a和b是待相加的值(例如,和96中的两个和),“mod”是取模运算,并且n是值。具体地,n的值可以是由乘法器电路26或集成电路设备12例如基于和96的值在逐例基础上确定的整数值。因此,可以确定和96中的每个和的模值。
37.返回图3和对过程70的讨论,在过程框84处,乘法器电路26可以确定并输出一个或多个和。例如,乘法器电路26中的加法器电路可以将根据执行上面讨论的模块化减少生成的值相加。
38.为了帮助扩展该讨论,提供了图5。具体地,图5示出了集成电路设备12和乘法器电路26可以如何执行上面关于过程70的过程框82和84所讨论的操作的一个示例。例如,乘法器块100(例如,乘法器块100a-100i)可以包含于乘法器电路26中并确定子积92以及和96。包含于乘法器电路26中(或在集成电路设备12中的别处)的查找表(lut)102(例如,lut 102a-102e)可以通信地耦合到对应的乘法器块100,从乘法器块100接收输出(例如,和96),对从乘法器块100接收到的值执行取模运算,并且输出模值。因此,lut 102可以用于执行模块化减少。类似于上面对列90和列90的深度的讨论,所使用的乘法器块100和lut 102的量可以取决于被相乘的比特数而变化。因此,在其他实施例中,可以使用比图5中所示的那些更少或更多的乘法器块100和lut 102。
39.lut 102的输出可以提供给加法器电路104,该加法器电路104可以包含于乘法器电路26中或以其他方式包含于集成电路设备12中。具体地,加法器电路104的第一部分(例如,行)106可以从lut 102中的两个lut(例如,lut 102d和lut 102e)接收值(例如,由取模运算生成的值的部分),将这些值相加,生成输出(例如,相加的值的和),以及将输出提供给加法器电路104的后续部分(例如,第二部分108)。第二部分108以及加法器电路104的第三部分110和第四部分112可以接收来自加法器电路104的前一部分的一组值以及来自lut 102之一的一组值,并且将这两组值相加到一起。虽然加法器电路104被示为具有四行(例如,部分106、108、110、112),每行包括四个加法器,但是例如基于lut 102的数量、待相乘的值的大小(例如,比特数)、dsp块的宽度或其组合,加法器电路104在其他实施例中可以包括不同数量的行以及每行不同数量的加法器。
40.在继续讨论集成电路设备12和乘法器电路26如何可以更快地(即,以更少的延时)执行过程70的部分之前,应当注意,过程70可以包括附加操作。例如,在其他实施例中,过程70可以包括确定两个初始值的乘积并输出这样的乘积。更具体地,可以基于在过程框84处确定的(多个)和以及子积92的没有对其进行约减(例如,在过程框82处)的列90之和96的和来确定乘积。因此,乘法器电路26和集成电路设备12可以通过使用两个值的子值执行乘法和加法(和取模)运算来确定两个值的乘积。另外,应当注意,作为对以上提供的讨论的替代,所示出的乘法器块100中的每一个可以被认为是和96,并且lut 102可以被认为是由包含于集成电路设备12中的查找表输出的模值。
41.记住上述内容,因为加法电路可以用于对部分乘积以及根据执行模块化减少产生的值执行加法,所以用于执行初始值的乘法的电路(例如,乘法器电路26、lut 102和加法器电路104)可以利用集成电路设备12上比期望的面积量更大的面积量。此外,由于待相乘的初始值的分割,在执行乘法运算时可能引入延时。例如,如上面讨论的,当将初始值转换为若干较小的值时,可以确定部分乘积,并且将部分乘积相加以确定初始值的乘积。换言之,因为运算次数增加,所以用于计算值的乘积的时间量可能比在使用被配置为对具有与初始值相同的宽度(例如,比特数)的数据执行乘法的电路执行乘法运算的情况下更多。另外,基于数据量(例如,列90的深度)、列90相加的次序、彼此独立地确定的子积的列90的和96或其任意组合,可能发生相对较高的延时量。延时也可能由于字增长(例如,由于执行约减操作
以减少字增长)而发生。
42.例如,在图4中,由于子积的第四列90d包括比其他列90中的任一列多的部分乘积,所以乘法器电路26可能花费更多时间来确定列90d的子积92,这意味着乘法器电路26也可能花费更多时间来确定第四列90d的和96d。相反,其他列(例如,列90a、90b、90f、90g)可以包括相对较少的子积92,这意味着与列90a、90b、90f、90g相关联的和(例如,分别为和96a、96b、96f、96g)可以比与具有更大数量的子积92的列90相关联的和96更快地被确定。
43.考虑到这一点,并且转向图5,乘法器块100可以展现出与图4的列90以及和96的那些模式总体上相似的模式。例如,乘法器块100i可以与第一数量的子积92相关联,乘法器块100h可以与更多数量的子积92(例如,第二数量的子积92)相关联,乘法器块100g可以与更多数量的子积92(例如,第三数量的子积92)相关联,乘法器块100f可以与更多数量的子积92(例如,第四数量的子积92)相关联,乘法器块100e可以与更多数量的子积92(例如,第五数量的子积92)相关联,乘法器块100d可以与更少数量的子积92(例如,第四数量的子积92)相关联,乘法器块100c可以与更少数量的子积92(例如,第三数量的子积92)相关联,乘法器块100b可以与更少数量的子积92(例如,第二数量的子积92)相关联,以及乘法器块100a可以与更少数量的子积92(例如,第一数量的子积92)相关联。并且,如上面指出的,具有更少子积的列90可以在具有更多子积92的列90之前求和。因此,与具有更多子积92的列90相关联的lut 100可能需要花费更多时间来产生可以提供给加法器电路104以进行求和的输出。因此,在图5中,与来自lut 102c、102b、102a的输出相比,来自lut 102e和lut 102d的输出将花费相对更多的时间来确定和生成。
44.为了减少延时,可以以基于与每个列90相关联的延迟量(例如,可以对应于列90的深度)的次序来执行涉及约减的值(例如,与过程70的过程框82相关联地产生的值)的加法。也即,执行加法运算的次序可以考虑列90相对于其他列90中的一个或多个列具有的部分乘积92的数量。图6是与图5中已经被布置以基于列深度的次序执行加法的电路相同的电路的框图。更具体地,在图6中(相对于图5),加法器电路104的第一部分106使用来自lut 102a和lut 102b的输出来执行加法,这些输出将在具有相对最低量的部分乘积92(例如,与lut 102c、102d、102e相比)的列中。加法器电路104的第二部分108从lut 102c和lut 102d接收输出并将输入相加。来自加法器电路104的第一部分106和第二部分108的输出由加法器电路104的第三部分110相加。此外,加法器电路104的第四部分112将从加法器电路104的第三部分110和lut 102e接收的值相加,其中lut 102e是由于与具有最多部分乘积的列相关联而与最长延迟相关联的lut 102。以此方式,由lut 102生成的模的每一部分被输入到加法器电路104的相应部分中,并且每一列被独立地相加(即,列之间没有任何进位)。因此,列90可以按照预期延迟(例如,基于每列90中的部分乘积92的数量)进行分组,并且与具有越大延迟(例如,延时)的列相关联的加法运算(例如,涉及模值的加法)发生在加法器树的越下方(例如,在与具有较低预期延迟的列相关联的加法之后)。实际上,可以在其他lut(例如,lut 102c、102d)输出模值之前确定特定和(例如,由加法器电路104的第一部分106输出的值)。
45.继续附图,图7是总体上类似于图4的框图,还包括加法器电路120(包括加法器122),其用于约减和96的行94中的和96。具体地,加法器122可以是接收和96与来自前一列(例如,在给定加法器122所在的列90正右侧的列90)的进位输出值之一的加法器。换言之,
加法器122中的每个加法器可以将来自和96的进位输出比特(例如,字增长的比特,例如,比特98)加到下一最高和的比特(在这种情况下,进位输出比特98可以与下一最高和的n个最低有效比特具有相同的量级,其中n是给定进位输出值中的比特值的数量)。因此,通过再一次独立地相加每一列来约减每一列中的附加进位(例如,比特98)。由于跨列没有进位,因此来自列约减的进位输出被加到下一更高秩的列中。此外,虽然由加法器122中的一些加法器生成的和124(例如,和124a-124g)可以包括额外比特(例如,比特126),但是额外比特126是单个比特而不是在和124的行128中出现的若干进位比特。可以通过执行另一轮加法来去除这些额外比特98。例如,任何单个比特126都可以视为被加到来自大一个数量级的列(例如,正左侧的列90)的和的进位输出值。
46.然而,虽然可以利用加法电路来减少字增长和进位输出比特的数量,但在集成电路设备12上加法电路占据的空间量以及与要执行的加法的若干级别相关联的延时方面,加法电路可能是相对昂贵的。例如,在将使用27比特dsp块执行涉及128比特乘法器的乘法的情况下,128比特乘法器可以根据以下5项多项式表达式来表示:
47.a4x4 a3x3 a2x2 a1x a048.其中每个a系数是26比特值。在这种情况下,存在待减少的部分乘积92的六个列90(例如,消除或减少字增长的量),并且列90的最大深度为九,这意味着在给定列90中可能有多达九个子积92。在该示例中,可能需要多达四个级别的2输入加法器来计算每列90的和96。此外,将减少六个列(例如,通过使用经由lut 102生成的每列的模值),并且将需要多达三个级别的2输入加法器来对减少的值执行加法。因此,总共可能需要共七个级别的加法器电路。忽略dsp块或取模lut的成本,添加最终进位减少加法器电路可能会将加法器电路使用的面积量增加大约15%。
49.继续附图,图8示出了可以用于将子积92相加以确定列90的和96的加法电路140a。加法电路140a还可以用于执行涉及模值的加法。具体地,加法电路140包括彼此独立的第一加法器树142a、第二加法器树144a和第三加法器树146a。加法器树142a、144a、146a中的每一个包括加法器148,该加法器148是两输入加法器。例如,第一加法器树142a包括可以确定三个输入之和的两级加法器148。第二加法器树144a包括可以确定五个输入之和的三级加法器148。第三加法器树146a包括可以确定七个输入之和的四级加法器148。应当注意,加法电路140a不限于包括加法器树142a、144a、146a。换言之,在其他实施例中,加法电路140a可以包括其他加法器树。例如,加法电路140a可以包括九输入加法器树,该九输入加法器树包括四级加法器148。因此,加法电路140a(以及下面讨论的加法电路140b和加法电路140c)可以包括任何合适数量的加法器树,其中的每个加法器树可以包括以任何合适数量的级布置的任何合适数量的加法器(例如,加法器148或如下面介绍的三元加法器)。
50.加法器树(例如,加法器树142a、144a、146a之一)可以用于对列90中的子积求和。因为列90中的每个列可以包括不同数量的子积,所以可以使用能够将不同量的输入相加的加法器树。例如,第一加法器树142a可以用于针对具有三个(或少于三个)子积的列90将子积相加。因为各种加法器树142a、144a、146a可能具有不同量(例如,垂直级别)的输入(和加法器148),所以与处理更多输入的其他加法器树相比,某些加法器树可以更快地生成列和。此外,如上面指出的,当加法树彼此独立时,意味着每个加法器树对列90的子积92求和而不将任何值传递给用于不同列90的加法器树,将使用更多的加法电路来将列相加(例如,以减
少字增长)。
51.为了帮助说明加法器树(例如,加法器树142a、144a、146a)的一般不平衡的性质并且减少与利用独立加法器树相关联的延时,现在将讨论图9。具体地,图9示出了包括加法器树142a、144b、146b的加法电路140b,其中加法器树144b、146b分别是加法电路144a、146a的不同实施例。更具体地,来自较低有效加法器(例如,图9中更靠右侧的加法器)的进位输出值(由对角线160、162表示)被加到输入(例如,在进位输出值源自的列正左侧的列的子积上)。在与图8的加法电路140a相比,加法器164已被添加到加法电路140b时,这样做可能是有益的,因为乘法器电路26的延迟(在执行乘法运算中)受到具有最长延迟的列的限制。
52.考虑到这一点,与图8的加法电路140a相关联的延时可以通过使用三元加法器来进一步减少,三元加法器是可以将三个值相加的加法器。例如,在图10中,加法电路140c总体上类似于图8的加法电路140a,但是包含于加法器树144c、146c中的加法器180(例如,加法器180a、180b)是三元加法器。加法器180各自接收三个输入并输出输入之和(以及当适用时,输出进位输出值)。加法器180接收到的输入包括与同一列90相关联的两个值(例如,两个子积92)和进位输入值,该进位输入值是由另一加法器(例如,在加法器180a的情况下为加法器148,或在加法器180b的情况下为加法器180a)生成的进位输出值(由对角线182、184表示)。输入到加法器180的进位输入值通常是比其他两个输入精度更低的值(例如,1、2、3或4比特值)。例如,输入中的两个可以是26比特值,而第三输入可以是包括一、二、三或四比特的进位输入值。然而,由于三元加法涉及一个值通常比被相加的其他两个值的精度低得多(例如,包括更少的比特),因此可以避免能够对具有更高精度(例如,26比特)的三个值求和的“全宽”三元加法器。实际上,如下面所讨论的,三元加法器(例如,加法器180)可以使用包括相对低精度的三元加法器(或等效逻辑)、2:2压缩器电路以及加法电路的电路组合来实现。因此,下面讨论的电路可以在诸如fpga之类的可编程逻辑器件上实现,而不管可编程逻辑器件是否被配置为支持三元加法器。例如,为了支持三元加法器,与支持二元(即,两输入)加法器时相比,可编程逻辑器件可以使用更多的线(例如,以路由数据)。而且,在一些情况下,fpga或其他可编程逻辑器件可以不包括足够的线(或具有足够高密度的线)来支持被配置为将三个“全宽”值相加的三元加法器。因此,下面讨论的电路(例如,关于图11和图12)可以在不支持三元加法器的集成电路设备上实现。
53.考虑到这一点,图11示出了加法器电路200,其可以包含于图10的加法器180中。换言之,加法器电路200可以用作加法器树(例如,用于将子积92或列的和96相加的加法器树)内的三元加法器。加法器电路200包括三元加法器202、压缩器电路(例如,2:2压缩器电路)204和加法器电路206。
54.三元加法器202可以接收三个n比特输入,其中n是整数值,其等于来自加法器(例如,图10的加法器148)的进位输出中包括的比特的数量。输入之一是这样的进位输出值,而其他两个输入是待求和的两个值(例如,值a和值b)的n个最低有效比特。例如,其他两个输入可以是列90的子积92,并且这样的列可以包括比进位输出值源自的列更多的子积。在任何情况下,这样的列都将包括比从其接收进位输出值的列更有效的子积。三元加法器202可以输出包括n个比特、一比特字增长(由“1”指示)和进位输出值(由“cout”指示)的值。因此,三元加法器202可以将具有n个比特的进位输出值与同样包括n个比特的其他值(例如,子积或通过将子积相加在一起确定的值,或其组合)的部分相加。
55.三元加法器202可以以几种不同的方式来实现,这通常取决于n的值。例如,当n是相对较小的比特数量(例如,一比特或两比特)时,三元加法器202可以被实现为查找表。查找表可以在集成电路设备12的软逻辑中实现。作为更具体的示例,当n是2时可以使用lut6。在其他实施例中,包括针对具有其他值的n比特的输入的实施例,可以利用集成电路设备12的其他电路,例如,当集成电路设备12是fpga时,在集成电路设备12的软逻辑中实现的逻辑。这种逻辑的示例在图12中示出并在下面更详细地讨论。
56.继续对加法器电路200的讨论,压缩器电路204包括若干半加器(例如,半加器208),其用于对不是进位输出值的两个输入之一进行逻辑移位。更具体地,压缩器电路204可以是2:2压缩器电路,其接收与提供给三元加法器202的那些不同的、输入a和输入b的比特(例如,待相加到一起的列的子积的比特,或通过将两个子积相加到一起而生成的和的比特),并且产生两个新的输出na和nb,其中na与a对齐,并且nb与b左移一个位置对齐。例如,压缩器电路204可以使“0”插入到输入b的最低有效比特位置以生成输出nb。此外,如图所示,每个半加器包括xor门210和and门212。在半加器208的情况下,and门212从三元加法器接收字增长的比特(如“1”所指示的)。
57.因为第二输出(例如,输出nb)的比特已经相对于第二输入(例如,输入b)左移了一个位置,所以输出nb的最低有效比特可以被认为是“空闲的”。换言之,提供给加法器电路206的、压缩器电路204的输出可以是输入na(具有与输入a相同的对齐)和输入nb(具有输入b左移一个位置的对齐)。此外,来自三元加法器202的进位输出比特(如“cout”所指示的)可以被提供给加法器电路206,并且被视为好像它是待相加的输入的最低有效比特。
58.加法器电路206包括二元(即,双输入)加法器214(例如,加法器214a-214d),其将从压缩器电路204接收到的比特相加。具体地,每个加法器214可以将两个输入(例如,26比特值)以及进位输入值(例如,作为来自前一加法器的进位输入值接收的进位输出值,或者在加法器214d的情况下,来自三元加法器202的进位输出值)相加。因此,可以利用加法器电路206将比特位置高于n的、值的任何比特相加。例如,如果n等于2,则加法器电路206可以用于将输入的第三最低有效比特以及输入的任何更高有效比特相加。如此,加法器电路206可以用于对未由三元加法器202相加的输入的比特执行加法(例如,二元加法)。
59.在继续讨论图12之前,应注意图11的加法电路200可能只是包含于图10的三元加法器202中的电路的一部分。例如,在其他实施例中,压缩电路204可以包括比图11中描绘的更多的半加器208(例如,数十、数百或数千个半加器208),并且加法电路206可以包括比图11中描绘的那些更多的加法器214。例如,可以存在与压缩电路204中的半加器208一样多的加法器214。因此,加法电路200可以被定制为对具有一定数量的比特的值执行加法,这可以进一步减少与执行模块化乘法运算相关联的延时,以及减少由加法器电路(或在执行乘法运算时使用的其他电路)占用的集成电路设备12的面积量。
60.继续附图,图12是三元加法器电路240的框图,其可以用作图11中的三元加法器202。更具体地,可以利用三元加法器电路240来将三个输入相加,其中每个输入具有五比特(即,三个输入,其中n等于五)。如图所示,三元加法器电路240包括各种类型的逻辑块,例如,xor逻辑块242、多数函数块244(例如,当超过一半的输入为真(例如,值为“1”)时输出“1”的电路)和and函数块246。另外,三元加法器电路240包括加法器248,其接收逻辑块中的一些逻辑块的输出作为输入并将输入相加。如图所示,加法器248可以各自接收两个输入以
及进位输入值并生成和以及进位输出值。
61.记住上述内容,现在将讨论乘法器电路26的实现方式的示例。在该示例中,集成电路设备12可以是可编程逻辑器件。更具体地,可编程逻辑器件可以是fpga。乘法器电路26可以使用fpga的硬逻辑和软逻辑的组合来实现。换言之,乘法运算(例如,模块化乘法运算)可以使用fpga上对于最终用户通常不是可改变或可编程的电路(例如,硬逻辑)以及fpga上可由最终用户改变或编程的电路(例如,软逻辑)的组合来执行。在该示例中,乘法器电路26可以包括以硬逻辑实现的一个或多个dsp块,这些dsp块用于将输入相乘以生成子积。例如,如上面讨论的,dsp块可以将通常较低精度的值相乘,这些值是从待相乘的两个相对较高精度的值导出的,并且子积是由dsp块在使用通常较低精度的值执行乘法运算时生成的值。因此,dsp块可以生成上面讨论的子积的列。
62.乘法器电路还可以包括加法器电路,例如,本文讨论的加法器树,其用于对子积的列求和。加法器树可以在fpga的硬逻辑或软逻辑中实现,但是为了当前正在讨论的示例的目的,加法器树在软逻辑中实现。此外,可以利用fpga的软逻辑来实现从dsp块到加法器树的路由电路以及构成加法器树本身的电路(例如,逻辑块)。更具体地,对于包括一个以上子积的、子积的每一列,可能存在一个加法器树。
63.如上面讨论的,加法器树可以包括各种类型的加法器,例如,二元加法器和三元加法器。此外,如上面描述的,用于列的加法器树可以彼此通信地耦合,使得与列相关联的进位输出值可以提供给另一列(例如,进位输出值源自的列的更高有效性的列的二元加法器或三元加法器)。例如,加法器树可以包括二元加法器和三元加法器的组合,包括图11所示的三元加法器的实现方式,其包括三元加法器电路、压缩器电路(例如,2:2压缩器电路)和二元加法器电路。此外,如图10中示出并且也在上面讨论过的,加法器树中包括的三元加法器可以接收两个值,这两个值要么是子积、是从子积导出的(例如,在确定子积的整个列之和时确定的子积之和)要么是它们的组合。三元加法器还可以接收进位输入值,该进位输入值是由另一加法器树内的加法器电路生成的进位输出值。此外,加法器树可能最终生成包括单个比特的字增长的列之和(例如,如图7所描绘的)。
64.乘法器电路26还可以包括各自接收特定列之和的查找表。例如,查找表可以接收包括比被相乘以生成子积的值更多比特的值。换言之,具有高于输入变元大小的秩的每一列的输出(例如,和)可以被提供给查找表,该查找表执行取模运算并输出输入的模。
65.乘法器电路26可以包括附加的加法器电路,该附加的加法器电路可以包括加法器树,加法器树用于将由查找表生成的模值相加。此外,附加的加法器电路可以将其他值(例如,来自未确定模的列的和)与模值相加。如上面讨论的(例如,关于图6),附加的加法器电路可以按照与根据其生成给定模值的列的子积的数量相关的次序对模值求和。例如,可以更快地对具有相对较少子积的列求和,这意味着可以比具有相对较多数量的子积的列的模值更快地生成这些列的模值。
66.考虑到上述内容,集成电路12可以包括乘法器电路26,其可以具有用于连接到其他集成电路设备的接口。此外,集成电路设备12可以是数据处理系统或包含在数据处理系统中的组件。例如,集成电路设备12可以是如图13所示的数据处理系统270的组件。数据处理系统270可以包括主机处理器272(例如,中央处理单元(cpu))、存储器和/或存储电路274,以及网络接口276。数据处理系统270可以包括更多或更少组件(例如,电子显示器、用
户接口结构、专用集成电路(asic))。主机处理器272可以包括任何合适的处理器,例如,处理器或精简指令处理器(例如,精简指令集计算机(risc)、高级risc机器(arm)处理器),其可以管理针对数据处理系统270的处理请求(例如,以执行加密、解密、机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式识别、空间导航、加密货币运算等)。存储器和/或存储电路274可以包括随机存取存储器(ram)、只读存储器(rom)、一个或多个硬盘驱动器、闪速存储器等。存储器和/或存储电路274可以保存待由数据处理系统270处理的数据。在一些情况下,存储器和/或存储电路274还可以存储用于对集成电路设备12进行编程的配置程序(比特流)。网络接口276可以允许数据处理系统270与其他电子设备通信。数据处理系统270可以包括若干不同的封装,或者可以包含于单个封装基板上的单个封装内。例如,数据处理系统270的组件可以位于一个位置(例如,数据中心)或多个位置的若干不同封装上。例如,数据处理系统270的组件可以位于单独的地理位置或区域,例如,城市、州或国家。
67.在一个示例中,数据处理系统270可以是处理各种不同请求的数据中心的一部分。例如,数据处理系统270可以经由网络接口276接收数据处理请求以执行加密、解密、机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式识别、空间导航、数字信号处理或某种其他专门任务。
68.此外,在一些实施例中,乘法器电路26和数据处理系统270可以被虚拟化。也即,可以利用一个或多个虚拟机来实现乘法器电路26和数据处理系统270的基于软件的表示,该基于软件的表示模拟本文描述的乘法器电路26和数据处理系统270的功能。例如,系统(例如,包括一个或多个计算设备)可以包括管理程序,该管理程序管理与一个或多个虚拟机相关联的资源,并且可以分配模拟乘法器电路26或数据处理系统270的一个或多个虚拟机以执行本文描述的乘法运算和其他运算。
69.因此,本文描述的技术使得乘法(例如,模块化乘法)能够更快地执行(即,具有减少的延时),并且与同样可以用于执行乘法的其他电路相比,用于执行乘法的电路可以在集成电路设备上占用更少的物理空间。例如,三元加法(在可用的情况下)可以大大减少用于执行(模块化)乘法运算的电路的整体结构的延时。这可能是使用两输入加法器的延时的一半。例如,九个元素的减少将使用四个两输入级别的加法器,但是当以本文描述的方式使用三元加法器时仅为两个级别。因此,即使所使用的三元加法器可能是路由密集型的,但是本文描述的被分割成组合部分和基于进位的部分的三元结构可以显著减少延时。实际上,虽然九个元素减少中的级别数量与两输入的情况下相同,但组合的交替级别可以显著简化放置,从而导致较低的延时。因此,本公开的技术效果包括以减少的延时执行模块化乘法同时使用利用集成电路设备上减少的空间量的电路。
70.尽管本公开中阐述的实施例可能易于实现各种修改和替代形式,但是已经在附图中通过示例的方式示出了具体的实施例,并且在本文中对其详细描述。然而,应当理解,公开内容不旨在限于所公开的特定形式。公开内容将覆盖落入由所附权利要求书限定的公开内容的精神和范围内的所有修改、等同方案和替代方案。
71.本文提出和要求保护的技术被引用并应用于具有实际性质的材料对象和具体示例,这些材料对象和具体示例可证明地改进了本技术领域,因此不是抽象的、无形的或纯理论上的。此外,如果本说明书所附的任何权利要求包含被指定为“用于[执行]
……
[功能]的
单元”或“用于[执行]
……
[功能]的步骤”的一个或多个元素,则旨在此类元素应根据35u.s.c.112(f)进行解释。然而,对于包含以任何其他方式指定的元素的任何权利要求,旨在不应根据35u.s.c.112(f)解释这些元素。
[0072]
公开内容的示例实施例
[0073]
以下编号的条款定义了本公开的某些示例实施例。
[0074]
条款1
[0075]
一种集成电路设备,包括:
[0076]
乘法器电路,所述乘法器电路被配置为通过将多个值相乘来确定子积的多个列,其中,所述子积的多个列包括多个子积,并且所述多个列中的每一列包括所述多个子积中的一个或多个子积;以及
[0077]
加法器电路,所述加法器电路被配置为确定多个和,其中,所述多个和中的每个和是所述多个列中的一列之和,其中,所述加法器电路的与所述多个列中的第一列相关联的第一部分被配置为接收与所述第一列相关联的第一值、与所述第一列相关联的第二值以及与所述多个列中不同于所述第一列的第二列相关联的第三值,其中,所述第三值是由所述加法器电路的与所述多个列中的第二列相关联的第二部分生成的进位输出值。
[0078]
条款2
[0079]
条款1的集成电路设备,包括一个或多个查找表,所述一个或多个查找表被配置为根据所述多个和的一部分生成多个模值。
[0080]
条款3
[0081]
条款2的集成电路设备,包括第二加法器电路,所述第二加法器电路被配置为确定所述多个模值之和。
[0082]
条款4
[0083]
条款3的集成电路设备,其中:
[0084]
所述多个模值包括:
[0085]
第一模值,所述第一模值与所述多个列中具有所述多个子积的第一部分的第三列相关联;
[0086]
第二模值,所述第二模值与所述多个列中具有所述多个子积的第二部分的第四列相关联,其中,所述多个子积的第二部分包括比所述多个子积的第一部分更多的子积;
[0087]
第三模值,所述第三模值与所述多个列中具有所述多个子积的第三部分的第五列相关联,其中,所述多个子积的第三部分包括比所述多个子积的第二部分更多的子积;以及
[0088]
第四模值,所述第四模值与所述多个列中具有所述多个子积的第四部分的第六列相关联,其中,所述多个子积的第四部分包括比所述多个子积的第三部分更多的子积;并且
[0089]
所述第二加法器电路被配置为在所述第三模值、所述第四模值或两者被确定之前确定所述第一模值与所述第二模值的第一和。
[0090]
条款5
[0091]
条款4的集成电路设备,其中,所述第二加法器电路被配置为:
[0092]
在确定所述第一和之后,确定所述第三模值与所述第四模值的第二和;以及
[0093]
在确定所述第二和之后,确定所述第一和与所述第二和的第三和。
[0094]
条款6
[0095]
条款1的集成电路设备,其中,所述加法器电路的第一部分包括:
[0096]
三元加法器电路,所述三元加法器电路被配置为将所述第一值的第一部分、所述第二值的第二部分以及所述第三值相加,其中,所述第一值的第一部分、所述第二值的第二部分以及所述第三值各自包括第一数量的比特;
[0097]
压缩器电路,所述压缩器电路通信地耦合到所述三元加法器电路,其中,所述压缩器电路被配置为接收所述第一值的第一剩余部分和所述第二值的第二剩余部分,其中,所述第一值的第一剩余部分和所述第二值的第二剩余部分各自包括第二数量的比特,其中,比特的第二数量大于比特的第一数量;以及
[0098]
二元加法器电路,所述二元加法器电路通信地耦合到所述压缩器电路,其中,所述二元加法器电路被配置为输出所述第一值的第一剩余部分与所述第二值的第二剩余部分之和。
[0099]
条款7
[0100]
条款6的集成电路设备,其中:
[0101]
所述压缩器电路被配置为左移所述第二值的第二剩余部分的比特;并且
[0102]
所述二元加法器电路被配置为接收由所述三元加法器电路生成的第二进位输出值。
[0103]
条款8
[0104]
条款1的集成电路设备,其中,所述集成电路设备包括现场可编程门阵列(fpga)。
[0105]
条款9
[0106]
条款8的集成电路设备,其中,所述乘法器电路包括所述fpga的一个或多个数字信号处理(dsp)块。
[0107]
条款10
[0108]
条款8的集成电路设备,其中:
[0109]
所述乘法器电路是在所述fpga的硬逻辑上实现的;并且
[0110]
所述加法器电路是在所述fpga的软逻辑上实现的。
[0111]
条款11
[0112]
条款10的集成电路设备,其中,所述加法器电路包括:
[0113]
在所述fpga的软逻辑上实现的三元加法器;
[0114]
在所述fpga的软逻辑上实现的压缩器电路;
[0115]
在所述fpga的软逻辑上实现的二元加法器电路;或者
[0116]
它们的组合。
[0117]
条款12
[0118]
一种方法,包括:
[0119]
经由集成电路设备的乘法器电路,通过将多个值相乘来确定子积的多个列,其中,所述子积的多个列包括多个子积,并且所述多个列中的每一列包括所述多个子积中的一个或多个子积;以及
[0120]
经由所述集成电路设备的加法器电路,确定多个和,其中,所述多个和中的每个和是所述多个列中的一列之和,其中,确定所述多个和包括:
[0121]
经由所述加法器电路的与所述多个列中的第一列相关联的第一部分,接收与所述
第一列相关联的第一值、与所述第一列相关联的第二值以及与所述多个列中不同于所述第一列的第二列相关联的第三值,其中,所述第三值是由所述加法器电路的与所述多个列中的所述第二列相关联的第二部分生成的进位输出值;以及
[0122]
经由所述加法器电路的第一部分,确定所述第一值的第一部分、所述第二值的第二部分以及所述第三值之和。
[0123]
条款13
[0124]
条款12的方法,包括:经由所述集成电路设备根据所述多个和的一部分生成多个模值。
[0125]
条款14
[0126]
条款12的方法,包括:以基于与确定所述多个列相关联的延时的次序将所述多个模值相加。
[0127]
条款15
[0128]
条款12的方法,包括:经由所述加法器电路的第一部分,确定所述第一值的剩余部分与所述第二值的剩余部分之和。
[0129]
条款16
[0130]
条款12的方法,其中,所述集成电路设备包括可编程逻辑器件。
[0131]
条款17
[0132]
一种可编程逻辑器件,其可被配置为被编程以执行模块化乘法,其中,当被编程时,所述可编程逻辑器件包括:
[0133]
乘法器电路,所述乘法器电路被配置为通过将多个值相乘来确定子积的多个列,其中,所述子积的多个列包括多个子积,并且所述多个列中的每一列包括所述多个子积中的一个或多个子积;以及
[0134]
加法器电路,所述加法器电路至少部分地在所述可编程逻辑器件的可编程逻辑中实现,其中,所述加法器电路被配置为确定多个和,其中,所述多个和中的每个和是所述多个列中的一列之和,其中,所述加法器电路的与所述多个列中的第一列相关联的第一部分被配置为接收与所述第一列相关联的第一值、与所述第一列相关联的第二值以及与所述多个列中不同于所述第一列的第二列相关联的第三值,其中,所述第三值是由所述加法器电路的与所述多个列中的第二列相关联的第二部分生成的进位输出值。
[0135]
条款18
[0136]
条款17的可编程逻辑器件,其中,所述乘法器电路包括在所述可编程逻辑器件的不可编程部分中实现的数字信号处理(dsp)电路。
[0137]
条款19
[0138]
条款17的可编程逻辑器件,其中:
[0139]
所述第三值包括第一数量的比特;
[0140]
所述加法器电路的第一部分包括查找表,所述查找表被配置为接收各自具有所述第一数量的比特的第一输入、第二输入以及第三输入,其中,所述第一输入是所述第一值的第一部分,所述第二输入是所述第二值的第二部分,并且所述第三输入是所述第三值。
[0141]
条款20
[0142]
条款17的可编程逻辑器件,其中,所述可编程逻辑器件包括现场可编程门阵列
(fpga)。
再多了解一些

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

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

相关文献