CN113050919A - 用于乘法器密集映射的高效逻辑块架构 - Google Patents
用于乘法器密集映射的高效逻辑块架构 Download PDFInfo
- Publication number
- CN113050919A CN113050919A CN202011013049.2A CN202011013049A CN113050919A CN 113050919 A CN113050919 A CN 113050919A CN 202011013049 A CN202011013049 A CN 202011013049A CN 113050919 A CN113050919 A CN 113050919A
- Authority
- CN
- China
- Prior art keywords
- logic block
- inputs
- integrated circuit
- receive
- outputs
- 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.)
- Pending
Links
- 238000013507 mapping Methods 0.000 title description 56
- 238000012545 processing Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 15
- 238000000034 method Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 8
- 238000007792 addition Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000013461 design Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 3
- 238000013144 data compression Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/57—Arithmetic 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
- G06F7/575—Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/02—Digital function generators
- G06F1/03—Digital function generators working, at least partly, by table look-up
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/57—Arithmetic 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Logic Circuits (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
一种集成电路包括被配置为执行乘法运算的逻辑块。逻辑块包括被配置为接收多个输入并生成第一多个输出的多个查找表。另外,逻辑块包括被配置为接收第一多个输出并生成第二多个输出的加法电路。此外,逻辑块包括被配置为接收多个输入的一部分、确定一个或多个部分积、并生成第三多个输出的电路。
Description
背景技术
本公开总体上涉及诸如现场可编程门阵列(FPGA)之类的集成电路。更具体地,本公开涉及执行使用集成电路(例如,FPGA的可编程逻辑)的电路元件实施的诸如乘法之类的数学运算。
该部分旨在向读者介绍可能与本公开的各个方面有关的本领域的各个方面,下面将对其进行描述和/或要求保护。该讨论被理解为有助于向读者提供背景信息以促进对本公开的各个方面的更好理解。因此,可以理解,这些陈述应从这种角度来阅读,而不是作为对现有技术的承认。
集成电路越来越多地执行诸如加密和机器学习之类的功能。加密和机器学习以及可以发生在集成电路上的许多其他操作可以利用乘法器电路(例如,乘法器)。例如,可以将乘法器编程到集成电路的逻辑上,并利用乘法器确定被相乘的数字的积。然而,可能会使用比在一些实例中所期望的更多的乘法器电路,这可能引起有限数量乘法运算被执行。例如,当太多的逻辑块可以用于执行乘法时,集成电路的资源可能被低效率地使用,并且集成电路可能不能够执行期望数量的乘法运算。此外,与所期望的相比,乘法运算可能花费更多时间来执行。
附图说明
通过阅读以下具体实施方式并参考附图,可以更好地理解本公开的各个方面,在附图中:
图1是根据实施例的用于实施算术运算的系统的框图;
图2是根据实施例的可以在其中实施加法电路的集成电路的框图;
图3是根据实施例的可以在图1的集成电路设备上实施的逻辑块的示意图;
图4示出了根据实施例的无符号乘法的示例;
图5示出了根据实施例的有符号乘法的示例;
图6是根据实施例的用于执行乘法运算的过程的流程图;
图7示出了根据实施例的用于讨论本文所讨论的乘法运算的符号;
图8示出了根据实施例的与乘法运算相关联的两个模式;
图9示出了根据实施例的与乘法运算相关联的两个附加模式;
图10示出了根据实施例的与乘法运算相关联的四个模式;
图11示出了根据实施例的与乘法运算相关联的四个附加模式;和
图12示出了根据实施例的3×3乘法运算的映射;
图13A示出了根据实施例的4×4乘法运算的映射的第一阶段;
图13B示出了根据实施例的4×4乘法运算的映射的第二阶段;
图14A示出了根据实施例的5×5乘法运算的映射的第一阶段;
图14B示出了根据实施例的5×5乘法运算的映射的第二阶段;
图15A示出了根据实施例的6×6乘法运算的映射的第一阶段;
图15B示出了根据实施例的6×6乘法运算的映射的第二阶段;
图16A示出了根据实施例的7×7乘法运算的映射的第一阶段;
图16B示出了根据实施例的7×7乘法运算的映射的第二阶段;
图17A示出了根据实施例的8×8乘法运算的映射的第一阶段;
图17B示出了根据实施例的8×8乘法运算的映射的第二阶段;
图18A示出了根据实施例的9×9乘法运算的映射的第一阶段;
图18B示出了根据实施例的9×9乘法运算的映射的第二阶段;
图19A示出了根据实施例的6×6乘法运算的映射的第一阶段;
图19B示出了根据实施例的6×6乘法运算的映射的第二阶段;
图19C示出了根据实施例的6×6乘法运算的映射的第三阶段;
图20A示出了根据实施例的7×7乘法运算的映射的第一阶段;
图20B示出了根据实施例的7×7乘法运算的映射的第二阶段;
图20C示出了根据实施例的7×7乘法运算的映射的第三阶段;
图21A示出了根据实施例的8×8乘法运算的映射的第一阶段;
图21B示出了根据实施例的8×8乘法运算的映射的第二阶段;
图21C示出了根据实施例的8×8乘法运算的映射的第三阶段;
图22A示出了根据实施例的9×9乘法运算的映射的第一阶段;
图22B示出了根据实施例的9×9乘法运算的映射的第二阶段;
图22C示出了根据实施例的9×9乘法运算的映射的第三阶段;
图23是根据实施例的可以被包括在图3的逻辑块中的电路的示意图;
图24是根据实施例的可以被包括在图3的逻辑块中的电路的示意图;
图25是根据实施例的可以在图1的集成电路设备上实施的逻辑块的示意图;
图26示出了根据实施例的与乘法运算相关联的两个模式;
图27示出了根据实施例的4×4乘法运算的映射;
图28A示出了根据实施例的5×5乘法运算的映射的第一阶段;
图28B示出了根据实施例的5×5乘法运算的映射的第二阶段;
图29A示出了根据实施例的6×6乘法运算的映射的第一阶段;
图29B示出了根据实施例的6×6乘法运算的映射的第二阶段;
图30A示出了根据实施例的7×7乘法运算的映射的第一阶段;
图30B示出了根据实施例的7×7乘法运算的映射的第二阶段;
图31A示出了根据实施例的8×8乘法运算的映射的第一阶段;
图31B示出了根据实施例的8×8乘法运算的映射的第二阶段;
图32A示出了根据实施例的9×9乘法运算的映射的第一阶段;
图32B示出了根据实施例的9×9乘法运算的映射的第二阶段;和
图33是根据实施例的数据处理系统的框图。
具体实施方式
下面将描述一个或多个具体的实施例。为了提供对这些实施例的简要描述,在说明书中并未描述实际实施方式的所有特征。可以理解的是,在任何这样的实际实施方式的开发中(例如,在任何工程或设计项目中),必须做出许多特定于实施方式的决策,以实现可能因不同的实施方式而异的开发人员的具体目标,例如遵守与系统相关的约束和与业务相关的约束。此外,可以理解的是,这种开发工作可能是复杂且耗时的,但是对于受益于本公开的普通技术人员而言,这将是设计、制作、和制造的例行工作。
当介绍本公开的各个实施例的要素时,冠词“一”、“一个”和“所述”旨在表示存在一个或多个要素。术语“包括”、“包含”和“具有”旨在是包括性的,并且意味着除所列要素之外,可能还有附加要素。另外,应当理解,对本公开的“一个实施例”或“实施例”的引用不旨在被解释为排除也结合了所记载的特征的附加实施例的存在。此外,短语“基于”B的A旨在表示A至少部分基于B。此外,除非另有明确说明,否则术语“或”旨在是包括性的(例如,逻辑或(OR)),并且不是排他性的(例如,逻辑异或(XOR))。换句话说,短语“A”或“B”旨在表示A、B、或A和B二者。
诸如可编程逻辑器件之类的集成电路可以用于执行数学运算,例如加法和乘法。例如,可编程逻辑器件上的逻辑(例如,可重配置逻辑)可以被编程以执行数学运算。例如,用于执行乘法的被编程的逻辑可以称为“乘法器”。可以包括特定电路元件(例如,查找表、加法器、复用器等)的逻辑块可以用于执行乘法。在一些情况下,用于执行乘法的可编程逻辑器件的逻辑块的量可能大得不令人期望,这可能减少可用于编程(例如,执行其他功能)的可编程逻辑器件的量。本申请通常针对用于在可编程逻辑器件(例如但不限于现场可编程门阵列(FPGA))上执行乘法的更高效的技术。例如,如下所讨论的,提供了逻辑块的各种架构,其使得能够利用更少的逻辑块来执行乘法运算,由此使得能够在可编程逻辑器件上执行更多的乘法运算。
牢记前述内容,图1示出了可以实施算术运算的系统10的框图。设计人员可以期望在集成电路设备12(例如,诸如现场可编程门阵列(FPGA)或专用集成电路(ASIC)之类的可编程逻辑器件)上实施诸如本公开的算术运算之类的功能。在一些情况下,设计人员可以指定要实施的高级程序(例如,OpenCL程序),这可以使设计人员能够更高效、更轻松地提供编程指令,以为集成电路设备12配置一组可编程逻辑单元,而无需底层硬件描述语言(例如Verilog或VHDL)的具体知识。例如,由于OpenCL与其他高级编程语言(例如,C++)非常类似,因此与需要学习不熟悉的低级硬件描述语言来实施集成电路器件12中的新功能的设计人员相比,熟悉这种编程语言的可编程逻辑设计人员可以具有减少的学习曲线。
设计人员可以使用设计软件14(例如,INTEL CORPORATION的的版本)来实施他们的高级设计。设计软件14可以使用编译器16将高级程序转换为较低级描述。编译器16可以将代表高级程序的机器可读指令提供给主机18和集成电路设备12。主机18可以接收可以由内核程序20实施的主机程序22。为了实施主机程序22,主机18可以经由通信链路24将指令从主机程序22传送到集成电路设备12,通信链路24例如可以是直接存储器访问(DMA)通信或外围组件快速互连(PCIe)通信。在一些实施例中,内核程序20和主机18可以使得能够在集成电路设备12上配置逻辑块26。逻辑块26可以包括电路和/或其他逻辑元件,并且可以被配置为实施算术运算,例如加法和乘法。
尽管本文描述的技术涉及高级程序的应用,但是在一些实施例中,设计人员可以使用设计软件14来生成和/或指定低级程序,例如,上述的低级硬件描述语言。此外,在一些实施例中,可以在没有单独的主机程序22的情况下实施系统10。此外,在一些实施例中,本文描述的技术可以在电路中被实施为非可编程电路设计。因此,本文描述的实施例旨在是说明性的而不是限制性的。
现在转到集成电路设备12的更详细的讨论,图2示出了作为可编程逻辑器件(例如,现场可编程门阵列(FPGA))的集成电路设备12的示例。此外,应当理解,集成电路设备12可以是任何其他合适类型的可编程逻辑器件(例如,ASIC和/或专用标准产品)。如图所示,集成电路设备12可以具有输入/输出电路42,输入/输出电路42用于将信号驱离器件并用于经由输入/输出引脚44从其他设备接收信号。互连资源46(例如,全局和局部垂直和水平导线和总线)可以用于在集成电路设备12上路由信号。另外,互连资源46可以包括固定互连(导线)和可编程互连(即,相应固定互连之间的可编程连接)。可编程逻辑48可以包括组合逻辑电路和顺序逻辑电路。例如,可编程逻辑48可以包括查找表、寄存器、和复用器。在各个实施例中,可编程逻辑48可以被配置为执行定制逻辑功能。与互连资源相关联的可编程互连可以被认为是可编程逻辑48的一部分。
可编程逻辑器件(例如,集成电路设备12)可以包含具有可编程逻辑48的可编程元件50。例如,如上所述,设计人员(例如,客户)可以对可编程逻辑48进行编程(例如,配置)以执行一个或多个期望的功能。举例来说,一些可编程逻辑器件可以通过使用掩模编程布置(这是在半导体制造期间执行的)来配置它们的可编程元件50来进行编程。在半导体制造操作已经完成之后,例如通过使用电编程或激光编程来对它们的可编程元件50进行编程,配置其他可编程逻辑器件。通常,可编程元件50可以基于任何合适的可编程技术,例如熔丝、反熔丝、电可编程只读存储器技术、随机存取存储器单元、掩模编程的元件等。
许多可编程逻辑器件被电编程。利用电编程布置,可以从一个或多个存储器单元形成可编程元件50。例如,在编程期间,使用引脚44和输入/输出电路42将配置数据加载到存储器单元中。在一个实施例中,可以将存储器单元实施为随机存取存储(RAM)单元。本文描述的基于RAM技术的存储器单元的使用仅旨在作为一个示例。此外,因为这些RAM单元在编程期间被加载有配置数据,所以它们有时被称为配置RAM单元(CRAM)。这些存储器单元均可以提供对应的静态控制输出信号,所述静态控制输出信号控制可编程逻辑48中的相关联逻辑组件的状态。例如,在一些实施例中,可以将输出信号施加到可编程逻辑48内的金属氧化物半导体(MOS)晶体管的栅极。
牢记对图1和图2的讨论,用户(例如,设计人员)可以利用设计软件14在集成电路设备12的可编程逻辑48上实施逻辑块26。特别地,设计人员可以在高级程序中指定数学运算(例如,加法和乘法)被执行。编译器16可以将高级程序转换为用于对可编程逻辑48进行编程以执行加法的较低级描述。牢记这一点,图3示出了可以被用来执行数学运算(例如,乘法)的逻辑块26A。
如图所示,逻辑块26A包括四个查找表(LUT)60(例如,LUT 60A-60D),其可以是四输入LUT。换句话说,LUT 60中的每个可以具有四个输入(例如,四个单个的位输入),并且LUT 60可以基于LUT中的每个被如何编程来输出一个或多个值(例如,位值)。例如,第一LUT60A和第二LUT 60B均可以接收输入A、B、C0、和D0并且基于输入A、B、C0、D0输出值。例如,输出的值可以是在执行乘法的同时确定的部分积。有点类似,第三LUT 60C和第四LUT 60D均可以接收输入A、B、D1、以及C0或C1。第三LUT 60C和第四LUT 60D均可以基于接收到的输入值来输出位值。另外,复用器62可以接收输入C0、C1、和控制信号。集成电路设备12可以发送控制信号以使复用器62输出一个值(例如,C0或C1),以用作LUT 60C、60D的输入。
LUT 60可以用于执行各种数学运算和逻辑运算。例如,LUT 60可以对输入的值(例如,A、B、C0、C1、D0、D1)执行逻辑运算,同时充当提前进位逻辑(carry-lookahead logic)操作(例如,执行加法)。输出(例如,在P0和P1处)可以用作传播进位,并且输出可以用作生成进位(例如,在G0和G1处)。输出也可以是乘法运算的部分积。由LUT 60生成的值可以用作逻辑块26A中所包括的其他电路的输入,所述其他电路例如复用器64、复用器66、复用器68、和复用器70。复用器64可以从LUT 60A、60B接收输出值,以及接收输入E。复用器64可以输出值(例如,O5_0)。类似地,复用器66可以接收来自LUT 60C、60D的输出值,以及接收输入E。复用器66可以输出可以被用作复用器68的输入的值,复用器68还可以接收复用器64的输出以及输入F。复用器68可以生成输出值O6。复用器70可以接收LUT 60C、60D的输出以及输入F,并且基于这些输入的值来生成输出O5_1。
LUT 60的输出也可以用作加法器电路80的输入,加法器电路80可以包括彼此通信地耦合的两个加法器(例如,两个提前进位加法器,其中一个加法器从另一加法器接收一个或多个输出)。加法器电路80还可以例如从集成电路设备12中所包括的其他电路(例如,另一逻辑块26)接收输入进位值(carry-in value)(例如,Cin)。更具体地,输入A、B、C0、D0、和D1可以用于生成四个部分积、传播进位例如,P0和P1)、以及生成进位(例如,G0和G1)。如下所述,加法器电路80可以缩减部分积。此外,加法器电路80可以生成可以被提供给集成电路中所包括的其他电路(例如,另一逻辑块26)的输出进位值(carry-out value)(例如,Cout)。
逻辑块26A还包括电路82,如图所示,电路82具有门84(例如,逻辑与(AND)门、逻辑与非(NAND)门)和可编程反相器。电路82可以使用输入E、D0、和C1来生成两个部分积(附加于由加法电路80生成的四个部分积)。电路82可以缩减这两个部分积以及由加法器电路80生成的四个部分积。这样,逻辑块26可以生成并缩减六个部分积。
门84A可以接收输入E和输入En。输入En可以是由集成电路设备12提供的启用/禁用信号,以在不使用电路82时禁用电路82,而在要使用电路82时启用电路82。例如,通过禁用电路82,可以减少或消除可能由切换信号引起的功率使用。门84A可以生成输出,该输出可以用作门84B、84C二者的输入。门84B可以接收输入C1并输出值(例如,其被提供给逻辑非(NOT)门86A和复用器88A),并且门84C可以接收输入D0并输出值(例如,其被提供给逻辑非门86B和复用器88B)。复用器88可以从集成电路设备12接收反相器信号(例如,对于复用器88A是Inv0并且对于复用器88B是Inv1),并且在执行有符号乘法(例如,可以包括正值和负值的乘法)时被利用。此外,尽管图3所示的实施例包括可编程反相器(例如,图3的(Inv0和Inv1)),但是在其他实施例中可以利用其他类型的反相器。
另外,逻辑块26A包括两个附加加法器90A、90B。加法器90均可以接收三个输入并输出两个值。例如,加法器90A可以从加法电路80接收输出、从复用器88A接收输出、以及接收输入进位值Cin2,以产生值S0和输出进位值。输入进位值Cin2可以是由另一逻辑块26生成的输出进位值。加法器90B可以从加法器90A接收输出进位值、从加法电路80接收输出、以及从复用器88B接收输出,以确定值S1和输出进位值Cout2。
如下所述,逻辑块26A可以用于执行乘法运算。然而,在进行由逻辑块26A执行的乘法运算的特定示例之前,提供了对乘法和映射的一般讨论。如下所述,可以进行映射以便确定如何对集成电路设备12的可编程逻辑48进行编程以执行乘法。
乘法运算大致可以在两个阶段中执行:部分积生成和部分积缩减。在部分积生成中,将一个输入的每个位与另一输入的每个位相乘。为了帮助阐述,图4示出了示意图100,其示出了将输入102与另一输入104相乘。特别地,输入102是五位输入(例如,具有位0-4的输入A),并且输入104是三位输入(例如,具有位0-2的输入B)。将输入102的每个位与输入104的每个位相乘得到部分积106。在部分积缩减状态下,可以对部分积106求和(例如,使用加法器)以确定输出108,输出108为部分积106之和以及输入102、104的积。
可以将图4中提供的示例称为无符号乘法的示例,这意味着不考虑值是正还是负。另一方面,有符号乘法确实考虑了被相乘的值是正还是负。图5是示出有符号乘法的示例的图130。最高有效位132、134可以分别指示输入136、138是正还是负。在部分积生成期间,确定部分积140。如图5中的浓淡处理所指示的,可以反转部分积140中的一些。例如,当部分积是涉及最高有效位132、134之一的部分积时,可以将其反转。常数“1”也可以被添加到部分积140的第一行。另外,如图5所示,可以将输出144的最高有效位142(即,部分积140的和)反转。
为了使用逻辑块26执行乘法,集成电路设备12可以执行映射过程以确定如何将被相乘的值的位输入到逻辑块26的输入中。牢记这一点,图6示出了过程160的流程图,过程160可以使用一个或多个逻辑块26使用集成电路设备12来执行,例如以执行乘法运算。
在过程框162处,可以接收输入。例如,输入可以包括要相乘的一个或多个位。
在处理框164处,集成电路设备12可以确定输入的映射。换句话说,集成电路设备12可以确定如何执行涉及输入的乘法运算。为了确定映射,集成电路设备12可以确定输入之中的一个或多个模式以及在确定两个输入的积的同时可以生成的部分积。下面将更详细地讨论具体模式的示例。
在过程框166处,集成电路设备12可以基于映射来将两个输入相乘。例如,集成电路设备12中的电路(例如,可编程逻辑48、查找表60)可以基于映射来进行编程,并且如下文所讨论的,每个模式的组件(例如,输入或部分积的位)可以基于映射来被输入到逻辑块26的特定输入。因此,逻辑块26可以确定被相乘的两个值的积。
牢记前述内容,将讨论不同的模式。然而,在继续讨论这些模式之前,提供图7以示出用于讨论模式的符号的类型。特别地,图7包括部分积180(由圆表示)、非进位位182(由正方形表示)、和进位位184(由五边形表示)。所示的部分积180是Bj和Ai的部分积,其中i和j分别是输入A和B的位(例如,输入A的第i位和输入B的第j位)。现在将讨论各种类型的模式以及如何将被相乘的输入的位输入到逻辑块26中。
图8示出了两个模式200A、200B。模式200A、200B分别包括可以由单个逻辑块26(例如,逻辑块26A)使用和/或确定以生成输出204A、204B的符号202A、202B。例如,可以利用输入进位值,同时可以生成部分积。例如,在模式200A中,可以接收两个输入进位值,可以确定六个部分积(基于输入A和B的位的值),并且包括两个非进位位和两个进位位的输出204A可以是从逻辑块26A的输出。更具体地,当利用模式200A、200B时,逻辑块26A可以接收两个输入进位值(例如,从通信地耦合到逻辑块26A的另一逻辑块26)和多达七个输入,并且逻辑块26A可以生成多达两个进位位和两个非进位位。下面提供了表1以指示如何使用逻辑块26A路由输入A和B。
表1
另外,简要地参考图3,可以经由进位线Cin和Cin2接收进位位(例如,从另一逻辑块26)。此外,可以在S0、S1和输出进位(例如,Cout和Cout2)处生成使用模式200A、200B生成的输出204A、204B的位。返回图8,应当注意,模式200B可以用于执行乘法累加运算。
继续讨论模式,图9示出了两个模式200C、200D。模式200C、200D分别包括可以由单个逻辑块26(例如,逻辑块26A)使用和/或确定以生成输出204C、204D的符号202C、202D。在模式200C中,可以确定四个部分积(基于输入A和B的位的值),并且包括多达四个非进位位的输出204C可以是逻辑块26A的输出。在模式200D中,可以确定三个部分积(即,符号202D),并且输出204D可以包括多达三个非进位位。下面提供了表2以指示在利用模式200C时如何使用逻辑块26A路由输入A和B,并且提供了表3以指示在利用模式200D时如何使用逻辑块26A路由输入A和B。
表2
表3
参考图3,使用模式200C生成的输出204C可以在S0、S1、O5_0和O5_1处。使用模式200D生成的输出204D可以在S0、S1和O5_1处。
图10示出了概括而言可以用于将一个或多个输入进位符号转换为非进位符号并生成部分积的四个模式200E、200F、200G、200H。另外,部分积(例如,由LUT 60或加法器电路80产生的)可以是输入。模式200E、200F、200G、200H分别包括可以由单个逻辑块26(例如,逻辑块26A)使用和/或确定以生成输出204E、204F、204G、204H的符号202E、202F、202G、202H。例如,在模式200E中,一个输入进位位可以用作输入,并且可以确定一个部分积(基于输入A和B的位的值),并且输出204E包括多达两个非进位位。在模式200F中,接收两个输入进位位并确定一个部分积。输出204F可以包括多达三个进位位。在模式200G中,可以接收一个进位,并且可以确定两个部分积。输出204G可以包括多达三个非进位位。在模式200H中,可以接收两个进位位,并且可以生成两个部分积。输出204H可以包括多达三个非进位位。
现在参考图3,当利用模式200E时,可以将部分积输入连接到输入C0和D0,并且可以将输入E设置为“1”。输出将在输出O5_0处生成。另外,可以经由进位线Cin接收传入的进位位(例如,从另一逻辑块26接收到的),并且得到的输出可以在S0处。另外,应当注意,利用模式200E仅使用逻辑块的一半。换句话说,当利用模式200E时,仅两个相邻的LUT 60、加法器电路80的一个加法器、以及加法器90A、90B之一被用于确定输出204E。因此,逻辑块26A的另一半可以用于其他确定(例如,在另一组输入上使用模式200E)。
当利用模式200F时,可以将部分积输入连接到输入C1和D1,并且将输入F设置为“1”。由部分积输入引起的输出204F的部分可以经由输出O5_1而输出。可以经由进位线Cin和Cin2接收(例如,从另一逻辑块26)进位位,并且输出204F的对应部分经由输出S0和S1而输出。
当利用模式200G时,将部分积输入之一连接到输入C0和D0,并且将另一个部分积输入连接到输入C1和D1。将输入E和F设置为“1”。与部分积相关联的输出204G的部分将在输出O5_0和O5_1处生成。类似于模式200E,可以将与进位位(例如,经由进位线Cin从另一逻辑块26接收的)相关联的输出204G的部分可以转换为在S0处输出的输出204的一部分。
模式200H可以用于在与传入的进位位相同的位位置处生成部分积并缩减该部分积。在使用模式200H时,将一个部分积输入连接到输入C0和D0。输出将在S0和S1中。将第二部分积连接到输入C1和D1,并且将输入F设置为“1”。输出204H的对应部分将在O5_1处输出。可以经由进位线Cin和Cin2接收(例如,从另一逻辑块26)进位位,并且输出204H的对应部分经由输出S0和S1而输出。
继续讨论模式,图11示出了概括而言可以用于将单个位加在一起的四个模式200I、200J、200K、200L。另外,部分积(例如,由LUT 60或加法器电路80产生的)可以是输入。模式200I、200J、200K、200L分别包括可以由单个逻辑块26(例如,逻辑块26A)使用以生成输出204I、204J、204K、204L的符号202I、202J、202K、202L。例如,在模式200I中,四个非进位位可以用作输入,并且输出204I可以包括多达四个非进位位。在模式200J中,接收到四个非进位位,并且输出204J可以包括多达三个非进位位。在模式200K中,可以接收两个进位位和六个非进位位。输出204K可以包括多达两个非进位位和两个进位位。在模式200L中,可以接收一个进位位和一个非进位位,并且输出204L可以包括一个非进位位。
现在参考图3,当利用模式200I时,将两个输入(即,符号202J中包括的两个非进位位)连接到输入A和B,并且将另外两个输入连接到输入C0、C1、D0、和D。输出将在输出S0、S1、O5_0、和O5_1处。当利用模式200J时,输入将以与当使用模式200I时的输入相同的方式连接。然而,输出204J的位将位于输出S0、S1、和O5_1处。
当利用模式200C时,可以根据下面的表4连接输入:
表4
接收到的进位位可以经由进位线Cin和Cin2从另一逻辑块26接收,另一逻辑块26通信地耦合到逻辑块26A的输入C1和D1,并且将输入F设置为“1”。输出204K的非进位位可以在输出S0和S1处生成,并且进位位可以经由Cout和Cout2输出。
模式200L可以用于在进位位和非进位位在输出的最高有效位中时生成。在这种情况下,因为进位位和非进位位将都不等于1,这意味着通过将进位和非进位求和而生成的输出将生成非进位位并且不生成任何进位位。当利用模式200L时,可以经由进位线Cin接收进位位,并且可以将非进位位连接到输入C0。输出可以在S0处生成。另外,应当注意,模式200L仅使用逻辑块26的一半,这意味着逻辑块的另一半可以用于执行其他确定。
牢记对模式200的讨论,将讨论图9和图12-22C以示出N×N乘法运算的各种示例的映射。映射可以包括以上讨论的模式200中的一个或多个。在这些示例中,N是其值的范围从2到9的整数,其指示输入中所包括的位数。例如,2×2乘法运算涉及将均包括两个位的两个输入相乘。简要地返回图9,为了执行2×2乘法运算,集成电路设备12可以利用模式200C来生成输出204C,如上所述。因此,可以使用单个逻辑块26执行2×2乘法运算。
图12示出了3×3乘法运算。如图所示,可以使用模式200A两次和模式200E一次来执行3×3乘法运算。在此示例中,部分积A0B0已从右上方位置移到左侧。输出位可以被到处移动以创建正确的输出。这样,可以使用二个半逻辑块26执来行3×3乘法运算。
可以使用多于一个的阶段来执行N大于3的N×N乘法运算。“阶段”通常是指用于执行乘法运算的逻辑块26的行数(或列数,取决于朝向)。例如,上面讨论的2×2和3×3乘法运算可以用单个阶段完成。如下所述,可以在两个阶段中执行N的范围为4至9的N×N乘法运算。在这些示例中,可以使用逻辑块的第一阶段来确定位,并且可以提供这些位作为被包括在逻辑块26的第二阶段中的逻辑块26的输入(例如,通信地耦合到逻辑块的第一阶段的逻辑块26的一个或多个逻辑块)。
图13A示出了4×4乘法运算的第一阶段。如图所示,使用了模式200C(其将生成i0、i1、和i2的非进位位)。在图13B所示的第二阶段期间,模式200A可以被使用一次,模式200B可以被使用两次,并且模式200E可以被使用一次。因此,可以利用跨两个阶段的总共四个半逻辑块26来执行4×4乘法运算。
图14A示出了5×5乘法运算的第一阶段,其中模式200A被使用三次并且模式200E被使用一次。如图14B所示,可以使用模式200B三次和模式200E一次来确定在第一阶段中未生成的部分积,并将其与在第二阶段期间所生成的位求和。因此,可以使用跨两个阶段的七个逻辑块26来执行5×5乘法运算。
对于N为2、3、4或5的情况,以上提供的示例包括最少数量的阶段和可以用于完成乘法运算的逻辑块26二者。然而,对于本文讨论的N为6、7、8或9的N×N乘法运算,可以将用于特定乘法运算的映射用于使用最少数量的阶段或最少数量的逻辑块26。图15A-图18B涉及使用最少数量的阶段的N×N乘法运算,并且图19A-图22C涉及利用最少数量的逻辑块26的N×N乘法运算。
图15A示出了6×6乘法运算的第一阶段,其中模式200A被使用五次并且模式200H被使用两次。在第二阶段中,如图15B所示,模式200B、200K可以均被使用两次,并且模式200E可以被使用一次。这样,可以使用跨两个阶段的十一个半逻辑块26来执行6×6乘法运算。
图16A示出了7×7乘法运算的第一阶段,其中模式200A被使用七次,并且模式200F、200H均被使用一次。在第二阶段中,如图16B所示,模式200B被使用两次,模式200K被使用三次,并且模式200E被使用一次。这样,可以使用跨两个阶段的十四个半逻辑块26执行7×7乘法运算。
图17A示出了8×8乘法运算的第一阶段,其中模式200A被使用十二次,模式200E被使用两次,并且模式200H被使用两次。在第二阶段中,如图17B所示,模式200B被使用一次,模式200K被使用五次,并且模式200L被使用一次。这样,可以使用跨两个阶段的二十个半逻辑块26来执行8×8乘法运算。
图18A示出了9×9乘法运算的第一阶段,其中模式200A被使用十五次并且模式200F被使用三次。在第二阶段中,如图16B所示,模式200K被使用六次,并且模式200L被使用一次。这样,可以使用跨两个阶段的二十五个半逻辑块26来执行9×9乘法运算。
如上所述,图19A-图22C提供了用于执行N×N乘法运算的映射的示例,其中使用最少数量的逻辑块26。图19A示出了6×6乘法运算的第一阶段,其中模式200C被使用一次。在第二阶段中,如图19B所示,模式200A和模式200B均被使用两次,并且模式200E被使用一次。图19C示出了6×6乘法运算的第三阶段,其中模式200B被使用四次并且模式200E被使用一次。这样,可以使用跨三个阶段的十个逻辑块26来执行6×6乘法运算。
图20A示出了7×7乘法运算的第一阶段,其中模式200A被使用三次,并且模式200H被使用一次。在第二阶段中,如图20B所示,模式200A和模式200H均被使用一次,并且模式200B被使用四次。图20C示出了7×7乘法运算的第三阶段,其中模式200B被使用四次并且模式200E被使用一次。这样,可以使用跨三个阶段的十三个半逻辑块26来执行7×7乘法运算。
图21A示出了8×8乘法运算的第一阶段,其中模式200A被使用三次并且模式200H被使用一次。在第二阶段中,如图21B所示,模式200A和模式200B均被使用四次,并且模式200H被使用两次。图21C示出了8×8乘法运算的第三阶段,其中模式200B和模式200K均被使用两次,并且模式200E被使用一次。这样,可以使用跨三个阶段的十九个半逻辑块26来执行8×8乘法运算。
图22A示出了9×9乘法运算的第一阶段,其中模式200A被使用四次并且模式200H被使用一次。在第二阶段中,如图22B所示,模式200A被使用六次,模式200B被使用五次,并且模式200H被使用两次。图22C示出了9×9乘法运算的第三阶段,其中模式200B和模式200L均被使用一次,并且模式200K被使用五次。这样,可以使用跨三个阶段的二十四个逻辑块26来执行9×9乘法运算。
继续附图,图23是电路82A的示意图,其可以用作图3所示的电路82和加法器90A、90B的替代。更具体地,与图3所示的电路82相比,在图19中,加法器90A、90B已经被异或门220A、220B和与门222A、222B代替,其使得电路82A能够生成传播和生成信号,生成传播和生成信号可以例如与传播进位加法器一起使用。另外,异或门220A可以经由线224从加法电路80接收输入,并且与门222B可以经由线226从加法电路接收输入。
有些类似地,图24是电路82B的示意图,其可以用作图3中所包括的电路82的替代。更具体地,与图3的电路82相比,不包括非门86和复用器88,并且门84B、84C(例如,与非门)已经被门84D、84E(例如,与门)代替。另外,尽管用于门84D的输入与门84B相同,但是与用于图3的电路82的门84C的输入E和门A的输出相比,门84E具有输入F和门84A的输出的输入。例如,如果逻辑块26用于无符号乘法,则可以使用电路82C。另外,应当注意,在一些实施例中,可以利用输入D0代替输入F。
在继续讨论逻辑块26的另一实施例之前,应当注意,可以利用逻辑块26A(和下面讨论的逻辑块26B)将三个两位数字加在一起。可以将一个数字的位作为输入D0和C1提供,另一数字的位可以是C0和B,并且最后一个数字的位可以是A和D1。此外,可以将输入E设置为“1”。
继续附图,图25是逻辑块26B的示意图。逻辑块26B大致类似于逻辑块26A,但是逻辑块26B包括附加电路250以及附加进位线(例如,Cin3、Cout3)。附加电路250包括门252(例如,与门252A和与非门252B、252C)、门254(例如,非门254A、254B)、复用器256(例如,复用器256A、256B)、以及加法器90C、90D。通过包括附加电路250,逻辑块26B能够使用两个非进位输出(例如,S0和S1)和多达三个进位输出(例如,Cout、Cout2、Cout3)使用九个输入位来生成和缩减八个部分积。
门252A可以接收输入F和输入En2。类似于输入En,输入En2可以是由集成电路设备12提供的启用/禁用信号,以在不使用附加电路250时禁用附加电路250。例如,通过禁用附加电路250,可以减少或消除否则可能由切换信号引起的功率使用。门252A可以生成输出,该输出可以用作门252B、252C二者的输入。门252B还可以接收输入LSIM并输出值(例如,其被提供给非门254A和复用器256A),并且门252C还可以接收输入C1并输出值(例如,其被提供给逻辑非门254B和复用器256B)。复用器256A、256B可以从集成电路设备12接收反相器信号(例如,对于复用器256A是Inv2并且对于复用器256B是Inv3),并且在执行有符号乘法时被利用。此外,尽管图3所示的实施例包括可编程反相器(例如,图25的(Inv2和Inv3)),但是在其他实施例中可以利用其他类型的反相器。
加法器90A可以从加法器90A接收输出、从复用器256A接收输出、以及接收进位值Cin3,以产生值S0和输出进位值。输入进位值Cin3可以是由另一逻辑块26(例如,逻辑块26B)生成的输出进位值。加法器90D可以从加法器90C接收输出进位值、从加法器90B接收输出、以及从复用器256B接收输出,以确定值S1和输出进位值Cout3。
如上所述,逻辑块26B可以生成并缩减八个部分积。为此,逻辑块26B可以利用图26所示的模式200M、200N。模式200M、200N分别包括可以由单个逻辑块26(例如,逻辑块26B)使用和/或确定以生成输出204M、204N的符号202M、202N,输出204M、204N可以均包括多达两个非进位位和多达三个进位位。例如,可以利用输入进位值(例如,经由图25中的Cin、Cin2、Cin3接收的值),同时可以生成部分积。例如,在模式200M中,可以接收三个进位值,可以确定八个部分积(基于输入A和B的位的值),并且生成包括多达两个非进位位和多达三个进位位的输出204M。对于模式200N,可以接收三个进位位和两个非进位位,可以生成六个部分积,并且生成包括多达两个非进位位和多达三个进位位的输出204。下面提供表5以指示如何使用逻辑块26B来路由输入A和B。
表5
另外,应当注意,以上关于逻辑块26A讨论的任何模式200可以以与以上关于逻辑块26A描述的相同方式与逻辑块26B一起使用。此外,模式200M、200N可以分别用于执行以上关于模式200A、200B所描述的乘法运算(例如,生成部分积)。牢记这一点,现在将讨论可以用于使用逻辑块26B执行N×N乘法运算的映射。
逻辑块26B可以分别使用图12所示的模式200C和映射执行N×N乘法运算,其中N等于2或3(即,2×2和3×3乘法运算)。因此,为了执行2×2乘法运算,可以使用单个逻辑块26B。另外,为了执行3×3乘法运算,可以使用两个半逻辑块26B。
图27示出了4×4乘法运算的映射。如图所示,模式200M被使用三次,并且模式200E被使用一次。因此,可以利用单个阶段中的总共三个半逻辑块26B来执行4×4乘法运算。
图28A示出了5×5乘法运算的第一阶段,其中模式200M被使用两次,并且模式200H被使用一次。如图18B所示,可以确定在第一阶段期间未生成的部分积,并将其与在第二阶段期间使用模式200N两次、模式200M一次、和模式200E一次所生成的位(例如,i0、i1、i2、i3)求和。因此,可以使用跨两个阶段的六个半逻辑块26B来执行5×5乘法运算。
图29A示出了6×6乘法运算的第一阶段,其中模式200M被使用三次,并且模式200H被使用一次。在第二阶段中,如图29B所示,模式200N可以被使用两次,并且模式200E、200M可以均被使用一次。这样,可以使用跨两个阶段的八个半逻辑块26B来执行6×6乘法运算。
图30A示出了7×7乘法运算的第一阶段,其中模式200M被使用四次,并且模式220H被使用一次。在第二阶段中,如图30B所示,模式200M被使用四次,并且模式200H被使用两次。这样,可以使用跨两个阶段的十个逻辑块26B来执行7×7乘法运算。
图31A示出了8×8乘法运算的第一阶段,其中模式200M被使用九次,模式200E被使用一次,并且模式200H被使用一次。在第二阶段中,如图31B所示,模式200M被使用一次,并且模式200K被使用三次。这样,可以使用跨两个阶段的十六个半逻辑块26B来执行8×8乘法运算。
图32A示出了9×9乘法运算的第一阶段,其中模式200M被使用十二次,模式200E被使用一次,并且模式200G被使用一次。在第二阶段中,如图32B所示,模式200K被使用七次。这样,可以使用跨两个阶段的二十个半逻辑块26B来执行9×9乘法运算。
应当注意,因为以上关于逻辑块26B讨论的每个映射都利用一个或两个阶段,所以该映射使用最少的逻辑块26B数量和阶段。为了帮助总结本文为逻辑块26A和逻辑块26B提供的映射,提供了表6。
表6
本文所讨论的技术的技术效果通过包括可以用于执行乘法运算的高密度电路,使得能够更高效地利用集成电路设备上的有限空间。例如,本文讨论的逻辑块26使得能够同时执行许多乘法运算。此外,阶段的减少的量可以用于执行某些乘法运算。因此,本文描述的技术使集成电路能够快速且高效地执行乘法运算。
集成电路设备12是数据处理系统或数据处理系统的组件。例如,集成电路设备12可以是图33所示的数据处理系统450的组件。数据处理系统450可以包括主机处理器452、存储器和/或存储电路454、以及网络接口456。数据处理系统450可以包括更多或更少的组件(例如,电子显示器、用户接口结构、专用集成电路(ASIC))。主机处理器452可以包括任何合适的处理器,例如处理器或精简指令处理器(例如,精简指令集计算机(RISC)、高级RISC机器(ARM)处理器),其可以管理对数据处理系统450的数据处理请求(例如,以执行加密、解密、机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式识别、空间导航等)。存储器和/或存储电路454可以包括随机存取存储器(RAM)、只读存储器(ROM)、一个或多个硬盘驱动器、闪速存储器等。存储器和/或存储电路454可以保存要由数据处理系统450处理的数据。在一些情况下,存储器和/或存储电路454还可以存储用于对集成电路设备12进行编程的配置程序(位流)。网络接口456可以允许数据处理系统450与其他电子设备通信。数据处理系统450可以包括几个不同的封装,或者可以被包含在单个封装衬底上的单个封装内。
在一个示例中,数据处理系统450可以是处理各种不同请求的数据中心的一部分。例如,数据处理系统450可以经由网络接口456接收数据处理请求,以执行加密、解密、机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式识别、空间导航、或某个其他特殊任务。主机处理器452可以使集成电路设备12的可编程逻辑结构用适合于实施所请求的任务的电路进行编程。例如,主机处理器452可以指示:将存储在存储器和/或存储电路454上的配置数据(位流)编程到集成电路设备12的可编程逻辑结构中。配置数据(位流)可以表示用于执行利用一个或多个逻辑块26的乘法运算的电路设计,可以根据本文所述的技术将逻辑块26映射到可编程逻辑。这样,集成电路设备12可以辅助数据处理系统450执行所请求的任务,例如执行乘法运算。
尽管本公开中阐述的实施例可以易于形成各种修改和替代形式,但是在附图中已经通过示例的方式示出了具体的实施例,并且在本文中已经对具体的实施例进行了详细描述。例如,可以实施本文描述的实施例和/或技术的任何适当的组合。此外,可以使用数字格式(例如,单精度浮点、半精度浮点、bfloat16、扩展精度等)的任何适当的组合。此外,每个DSP电路和/或DSP架构可以包括任何合适数量的元件(例如,加法器、乘法器64、布线等)。因此,应当理解,本公开内容并不旨在限于所公开的特定形式。本公开将涵盖落入如所附权利要求书所定义的本公开的精神和范围内的所有修改形式、等同形式、和替代形式。
本文提出和要求保护的技术被引用和应用于实际性质的物质对象和具体示例,其明确地改进了目前的技术领域,并且因此,不是抽象的、无形的或纯理论的。此外,如果本说明书所附的任何权利要求包含指定为“用于[执行][功能]…的单元”或“用于[执行][功能]…的步骤”的一个或多个要素,则这样的要素旨在根据美国专利法第112(f)条进行解释。然而,对于包含以任何其他方式指定的要素的任何权利要求,这样的要素不旨在根据美国专利法第112(f)条进行解释。
Claims (20)
1.一种集成电路,包括被配置为执行乘法运算的逻辑块,其中,所述逻辑块包括:
多个查找表,所述多个查找表被配置为接收多个输入并生成第一多个输出;
加法电路,所述加法电路被配置为接收所述第一多个输出并生成第二多个输出;以及
电路,所述电路被配置为接收所述多个输入的一部分、确定一个或多个部分积、并生成第三多个输出。
2.根据权利要求1所述的集成电路,包括第一加法器,所述第一加法器被配置为确定所述第二多个输出的第一部分与所述第三多个输出的第一部分的总和。
3.根据权利要求2所述的集成电路,其中,包括附加电路,所述附加电路被配置为:
接收所述多个输入的所述一部分和所述总和;以及
确定所述多个输入的所述一部分与所述总和的第二总和。
4.根据权利要求3所述的集成电路,其中,所述逻辑块被配置为生成八个部分积。
5.根据权利要求3所述的集成电路,其中:
所述加法电路被配置为从第二逻辑块接收第一输入进位值;
所述电路被配置为从所述第二逻辑块生成第二输入进位值;以及
所述附加电路被配置为从所述第二逻辑块生成第三输入进位值。
6.根据权利要求1至5中任一项所述的集成电路,其中,所述逻辑块被配置为执行有符号和无符号的乘法运算。
7.根据权利要求1至5中任一项所述的集成电路,其中:
所述多个查找表的第一部分被配置为接收所述多个输入的第一位值;以及
所述逻辑块包括通信地耦合到所述多个查找表的第二部分的复用器,所述多个查找表的所述第二部分不同于所述多个查找表的所述第一部分,其中,所述复用器被配置为:
接收所述多个输入的所述第一位值、所述多个输入的第二位值、以及控制信号;以及
基于所述控制信号,将所述第一位值或所述第二位值提供给所述多个查找表的所述第二部分。
8.根据权利要求1至5中任一项所述的集成电路,其中,所述多个查找表包括所述多个查找表的第一部分和所述多个查找表的第二部分,其中:
所述多个查找表的所述第一部分被配置为接收所述多个输入的第一值、第二值、第三值、和第四值;以及
所述多个查找表的所述第二部分被配置为接收所述多个输入的所述第一值、所述第二值、和第五值。
9.根据权利要求8所述的集成电路,其中,所述多个查找表的所述第二部分被配置为接收所述多个输入的所述第三值。
10.根据权利要求1至5中任一项所述的集成电路,其中,所述集成电路包括可编程逻辑器件。
11.根据权利要求10所述的集成电路,其中,所述可编程逻辑器件包括现场可编程门阵列(FPGA)。
12.根据权利要求1至5中任一项所述的集成电路,其中:
所述多个输入包括第一输入和第二输入,其中,所述第一输出和所述第二输入包括多达四个位;并且
所述逻辑块被配置为生成六个部分积。
13.根据权利要求1至5中任一项所述的集成电路,其中,所述逻辑块包括加法器,所述加法器被配置为接收:所述第二多个输出的一部分,来自通信地耦合到所述逻辑块的第二逻辑块的输入进位值,以及所述第三多个输出的一部分。
14.根据权利要求1至5中任一项所述的集成电路,其中,所述多个查找表包括:所述多个查找表的第一部分,以及不同于所述多个查找表的所述第一部分的所述多个查找表的第二部分,其中:
所述多个查找表的所述第一部分被配置为接收所述多个输入的第一位值、第二位值、第三位值、和第四位值;
所述多个查找表的所述第二部分被配置为接收所述多个输入的所述第一位值、所述第二位值、和第五位值;以及
所述电路被配置为接收所述多个输入的所述第四位值或所述第五位值。
15.根据权利要求14所述的集成电路,其中,所述逻辑块包括通信地耦合到所述多个查找表的所述第二部分的复用器,其中,所述复用器被配置为:
接收所述多个输入的所述第三位值、所述多个输入的所述第五位值、和控制信号;以及
基于所述控制信号,将所述第三位值或所述第五位值提供给所述多个查找表的所述第二部分。
16.一种集成电路设备,包括多个逻辑块,其中,所述多个逻辑块中的每个逻辑块包括:
多个查找表,所述多个查找表被配置为接收多个输入并生成第一多个输出;
加法电路,所述加法电路被配置为接收所述第一多个输出并生成第二多个输出;以及
电路,所述电路被配置为接收所述多个输入的至少一部分、确定一个或多个部分积、并生成第三多个输出。
17.根据权利要求16所述的集成电路设备,其中,所述电路被配置为接收启用/禁用信号,以在不使用所述电路时禁用所述电路。
18.根据权利要求16或17所述的集成电路设备,其中,所述多个逻辑块包括第一逻辑块和通信地耦合到所述第一逻辑块的第二逻辑块,其中:
所述第一逻辑块被配置为生成两个非进位位、第一进位位和第二进位位,以及
所述第二逻辑块的所述加法电路被配置为接收所述第一进位位。
19.根据权利要求18所述的集成电路设备,其中,所述第二逻辑块包括被配置为接收所述第二进位位的加法器。
20.一种集成电路,包括逻辑块,所述逻辑块被配置为执行乘法运算,其中,所述逻辑块包括:
用于接收多个输入并生成第一多个输出的单元;
用于接收所述第一多个输出并通过加法生成第二多个输出的单元;以及
用于接收所述多个输入的一部分、确定一个或多个部分积并生成第三多个输出的单元。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/729,256 US11768661B2 (en) | 2019-12-27 | 2019-12-27 | Efficient logic blocks architectures for dense mapping of multipliers |
US16/729,256 | 2019-12-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113050919A true CN113050919A (zh) | 2021-06-29 |
Family
ID=72521496
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011013049.2A Pending CN113050919A (zh) | 2019-12-27 | 2020-09-23 | 用于乘法器密集映射的高效逻辑块架构 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11768661B2 (zh) |
EP (1) | EP3842925A1 (zh) |
CN (1) | CN113050919A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210326116A1 (en) * | 2021-06-25 | 2021-10-21 | Intel Corporation | High precision decomposable dsp entity |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5436860A (en) * | 1994-05-26 | 1995-07-25 | Motorola, Inc. | Combined multiplier/shifter and method therefor |
US10715144B2 (en) | 2019-06-06 | 2020-07-14 | Intel Corporation | Logic circuits with augmented arithmetic densities |
-
2019
- 2019-12-27 US US16/729,256 patent/US11768661B2/en active Active
-
2020
- 2020-09-16 EP EP20196378.2A patent/EP3842925A1/en active Pending
- 2020-09-23 CN CN202011013049.2A patent/CN113050919A/zh active Pending
-
2023
- 2023-09-25 US US18/473,870 patent/US20240028295A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20210200514A1 (en) | 2021-07-01 |
US11768661B2 (en) | 2023-09-26 |
EP3842925A1 (en) | 2021-06-30 |
US20240028295A1 (en) | 2024-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11907719B2 (en) | FPGA specialist processing block for machine learning | |
KR910004308B1 (ko) | 조합 프로세서 | |
US10340920B1 (en) | High performance FPGA addition | |
US11899746B2 (en) | Circuitry for high-bandwidth, low-latency machine learning | |
US11809798B2 (en) | Implementing large multipliers in tensor arrays | |
US20210326111A1 (en) | FPGA Processing Block for Machine Learning or Digital Signal Processing Operations | |
US20240028295A1 (en) | Efficient logic blocks architectures for dense mapping of multipliers | |
US11163530B2 (en) | Programmable-logic-directed multiplier mapping | |
US20210117157A1 (en) | Systems and Methods for Low Latency Modular Multiplication | |
US20210326116A1 (en) | High precision decomposable dsp entity | |
US8214419B2 (en) | Methods and apparatus for implementing a saturating multiplier | |
US20190324724A1 (en) | Geometric Synthesis | |
US8805911B1 (en) | Cholesky decomposition in an integrated circuit device | |
US11016733B2 (en) | Continuous carry-chain packing | |
Supritha et al. | High speed and efficient ALU using modified booth multiplier | |
US11960853B2 (en) | Folded integer multiplication for field-programmable gate arrays | |
EP4350990A1 (en) | Flexible circuit for real and complex filter operations | |
US20230239136A1 (en) | Pipelined Galois Counter Mode Hash Circuit | |
US9223743B1 (en) | Multiplier operable to perform a variety of operations |
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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20241008 Address after: California, USA Applicant after: Altera Corp. Country or region after: U.S.A. Address before: California, USA Applicant before: INTEL Corp. Country or region before: U.S.A. |