CN110716707A - 前缀网络定向的加法 - Google Patents

前缀网络定向的加法 Download PDF

Info

Publication number
CN110716707A
CN110716707A CN201910505521.5A CN201910505521A CN110716707A CN 110716707 A CN110716707 A CN 110716707A CN 201910505521 A CN201910505521 A CN 201910505521A CN 110716707 A CN110716707 A CN 110716707A
Authority
CN
China
Prior art keywords
bits
subset
adder
signal
carry
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
Application number
CN201910505521.5A
Other languages
English (en)
Inventor
M.朗哈默
B.M.帕斯卡
S.V.格里波克
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of CN110716707A publication Critical patent/CN110716707A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17736Structural details of routing resources
    • H03K19/17744Structural details of routing resources for input/output signals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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/50Adding; Subtracting
    • G06F7/501Half or full adders, i.e. basic adder cells for one denomination
    • G06F7/503Half or full adders, i.e. basic adder cells for one denomination using carry switching, i.e. the incoming carry being connected directly, or only via an inverter, to the carry output under control of a carry propagate signal
    • 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/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • 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/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/506Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/1733Controllable logic circuits
    • H03K19/1737Controllable logic circuits using multiplexers
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17724Structural details of logic blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4812Multiplexers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/506Indexing scheme relating to groups G06F7/506 - G06F7/508
    • G06F2207/50632-input gates, i.e. only using 2-input logical gates, e.g. binary carry look-ahead, e.g. Kogge-Stone or Ladner-Fischer adder

Abstract

本公开一般涉及用于增强在集成电路上实现的加法器的技术。具体地说,可以重构由实现为接收具有第一精度的操作数的加法器执行的算术,使得一组子加法器可以对相应的操作数段执行算术。更确切地说,可以重构加法器,使得解码器可以确定用于每个子加法器的生成信号和传播信号,并且可以将生成信号和传播信号路由到前缀网络。前缀网络可以确定相应的(一个或多个)进位比特,进位比特可以进位到和/或选择在后续子加法器处的和。作为结果,集成电路可受益于实现加法所涉及的增加的效率、减少的时延和减少的资源消耗(例如,面积和/或功率),这可改进诸如在集成电路上的加密或机器学习的操作。

Description

前缀网络定向的加法
相关申请的交叉引用
本申请要求2018年7月12日提交的题为“Multi-Input Reduction Structure forVery Large Integers”的美国临时申请序列号No. 62/697,265的优先权和权益,其对于所有目的通过引用以其整体结合于本文中。
技术领域
本公开一般涉及集成电路,诸如现场可编程门阵列(FPGA)。更具体地说,本公开涉及执行使用集成电路的电路元件(例如,FPGA的可编程逻辑)实现的大算术运算的加法器电路。
背景技术
这部分旨在向读者介绍可与下面描述和/或要求权利的本公开的各个方面有关的技术的各个方面。该讨论被认为有助于向读者提供背景信息以促进更好地理解本公开的各个方面。因而,应该理解,这些陈述要在这个角度来阅读,而不是作为对现有技术的承认。
集成电路越来越多地执行功能,诸如对每天生活已经变得至关重要的加密。实际上,加密在许多技术领域(诸如金融交易安全性)中正变得越来越有价值。加密(以及可在集成电路上发生的许多其他操作,诸如某些乘法运算)可以使用越来越大的精度算术,在一些情况下,可涉及最终加法运算以对具有大精度的操作数求和。在一些情况下,例如,操作数的精度可以是大约数千比特。最终加法运算可以由最终加法器电路执行。然而,由于最终加法器电路可包含链接在一起的较小加法器电路以适应与对操作数求和所涉及的大精度算术,因此最终加法器电路可以表示在集成电路上实现的加密和/或乘法运算的关键路径。实际上,最终加法器可以消耗集成电路的相当大面积,消耗相当大量的功率,和/或在集成电路中产生附加时延。
附图说明
在阅读以下详细描述并参考附图时,可以更好地理解本公开的各个方面,附图中:
图1是按照实施例的用于实现算术运算的系统的框图;
图2是按照实施例的其中可以实现加法器的集成电路的框图;
图3是按照实施例的流水线加法器的框图;
图4是按照实施例的解码器电路的框图;
图5是按照实施例的将生成信号值和由图4的解码器产生的传播信号(例如,传播’信号)值的先驱映射到所得到的传播信号值的表;
图6是按照实施例的重构加法器的框图;
图7是按照实施例的流水线重构加法器的框图;
图8是按照实施例的具有前缀网络的递归重构加法器实现的最上级重构加法器的框图;
图9是按照实施例的具有前缀网络的递归重构加法器实现的第一中级重构加法器的框图;
图10是按照实施例的具有前缀网络的递归重构加法器实现的第二中级重构加法器的框图;
图11是按照实施例的具有前缀网络的递归重构加法器实现的最后级重构加法器的框图;
图12是按照实施例的重构解码器的框图;
图13是按照实施例的图12的重构解码器的多输入加法器的框图;
图14是按照实施例的重构子加法器的框图;以及
图15是按照实施例的数据处理系统的框图。
具体实施方式
下面将描述一个或多个特定实施例。为了提供这些实施例的简明描述,未在说明书中描述实际实现的所有特征。应当理解,在任何这样的实际实现的开发中,如在任何工程或设计项目中一样,可以做出众多实现特定的决定以实现开发者的特定目标,诸如遵守系统相关的和商务相关的约束,这些约束可能从一个实现到另一个实现而变化。而且,应当理解,这种开发努力可能是复杂且耗时的,但是对于受益于本公开的普通技术人员来说仍然将是设计、制作和制造的例行任务。另外,应该注意,如在本公开中所提到的,术语“行波进位加法器”一般是指实现成使得全加器的进位输出被馈送(例如,行波)到行波进位加法器的后续更高有效全加器的进位输入位置的加法器电路结构。如在本公开中附加提到的,术语“进位传播加法器”可以是指可以由多个较小的加法器电路(诸如行波进位加法器)构成的加法器电路。
如下面进一步详细所讨论的,本公开的实施例一般涉及减小由加法器电路消耗的集成电路的面积和/或由加法器电路引起的时延。更确切地说,本公开涉及适合于执行大算术运算的加法器(诸如用于执行乘法运算的最终加法器)到可编程逻辑的更有效地映射。在一些情况下,进位传播加法器电路,诸如用于执行乘法的最终加法器,可以用行波进位加法器实现。另外,为了构造具有合适精度的进位传播加法器和/或为了将进位传播加法器装配到集成电路上,可以将具有较小精度的一组加法器(例如,子加法器电路)链接和/或流水线化在一起,并且与链接和/或流水线化在一起的该组子加法器中的每个加法器相关联的输入和/或输出数据路径可以彼此延迟平衡。因为延迟平衡可使用有效的寄存器和/或存储器,因此进位传播加法器可导致集成电路上的相当大的面积、时延和/或功率问题。
因而,为了减小将加法器实现为可编程逻辑所涉及的面积、功率和/或时延,可以重构加法器,使得该组子加法器不被链接和/或流水线化在一起(例如,取决于彼此的时延)。如下面将进一步详细讨论的,重构加法器可以涉及将用于该组子加法器中的每一个子加法器的在解码器电路处确定的生成和传播信号路由到前缀网络电路,该前缀网络电路被实现为产生合适的进位比特以进位到该组子加法器中的后续子加法器。重构加法器可以进一步涉及将在加法器处从在解码器中实现的子加法器接收的一对操作数(例如,操作数段)的段的和流水线化到实现为从前缀网络接收进位输出比特作为进位输入比特的子加法器。另外,在一些实施例中,重构加法器的前缀网络可以被实现为重构加法器本身的递归实现。附加地或备选地,重构加法器的解码器可以被重构成使用多输入“与”门和/或压缩操作数段的求和。而且,重构加法器可以包含上述技术的任何合适的组合。
记住前述内容,图1图示了可以实现算术运算的系统10的框图。设计人员可能想要在集成电路器件12(诸如现场可编程门阵列(FPGA)或专用集成电路(ASIC))上实现诸如此公开的大精度算术运算的功能性。在一些情况下,设计人员可以规定要实现的高级程序,诸如OpenCL程序,其可以使设计人员能够更有效且容易地提供编程指令以为集成电路器件12配置一组可编程逻辑单元而无需低级硬件描述语言(例如,Verilog或VHDL)的特定知识。例如,因为OpenCL与其他高级编程语言(诸如C++)非常类似,因此熟悉此类编程语言的可编程逻辑的设计人员可能比被要求学习不熟悉的低级硬件描述语言以在集成电路器件12中实现新功能性的设计人员具有更简化的学习曲线。
设计人员可以使用设计软件14(诸如由英特尔公司的Intel® Quartus®的版本)来实现他们的高级设计。设计软件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可以是任何其他合适类型的可编程逻辑器件(例如,专用集成电路和/或专用标准产品)。如所示,集成电路器件12可以具有输入/输出电路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)晶体管的栅极。
现在转到图3,图示了流水线加法器100(例如,加法器电路),诸如进位传播加法器(CPA),其可以通过将操作数分解成更小的段来处置大操作数的求和。在图示的实施例中,流水线加法器100接收两个128比特操作数AA[127:0]和BB[127:0],它们各被分离成四个32比特段(例如分别是AA[31:0]、AA[63:32]、AA[95:64]和AA[127:96]以及BB[31:0]、BB[63:32]、BB[95:64]和BB[127:96])。通过将两个128比特操作数分离成更小的(例如32比特)段(例如操作数段),可以用一组四个32比特子加法器102确定两个128比特操作数的和,32比特子加法器102可以被实现为行波进位加法器,它们被流水线化在一起。从而,如图3中所图示的,第一子加法器102可以对AA[31:0]和BB [31:0]求和,第二子加法器102可以将AA[63:32]和BB[63:32]与从第一子加法器102接收的第一进位输入值求和,第三子加法器102可以将AA[95:64]和BB[95:64]与从第二子加法器102接收的第二进位输入值求和,并且第四子加法器102可以将AA[127:96]和BB[127:96]与从第三子加法器102接收的第三进位输入值求和。
为了在AA[63:32]与BB[63:32]的求和期间使用第一进位输入值,输入到第二子加法器102的操作数段AA[63:32]和BB[63:32]可以被延迟一个或多个时钟循环以与第一进位输入值同时到达。例如,因为AA[31:0]和BB[31:0]相加的结果(例如进位输出)被用作AA[63:32]和BB[63:32]的求和中的第一进位输入值,因此AA[63:32]和BB[63:32]的求和可以被延迟直到来自第一子加法器102的进位输出(其可以被存储在寄存器104中)可用为止。在一些实施例中,为了延迟操作数段AA[63:32]和BB[63:32],流水线加法器100可以通过第一延迟链106路由操作数段AA[63:32]和BB[63:32],第一延迟链106可以在第二子加法器102处接收到操作数段AA[63:32]和BB[63:32]之前用一个或多个寄存器104、存储器、先进先出(FIFO)数据结构和/或类似的来实现。另外,为了适当地延迟操作数段AA[95:64]和BB[95:64],流水线加法器100可以通过第二延迟链106路由操作数段AA[95:64]和BB[95:64],在一些实施例中,第二延迟链106可以将操作数段AA[95:64]和BB [95:64]从到达第三子加法器102延迟两个或更多个时钟循环,使得操作数段AA[95:64]和BB[95:64]在第三子加法器102处与从第二子加法器102接收的第二进位输入值同时可用。因而,流水线加法器100可以包含第三延迟链106以在它们到达第四子加法器102之前将操作数段AA[127:96]和BB[127:96]延迟三个或更多个时钟循环,使得操作数段AA[127:96]和BB[127:96]与从第三子加法器102接收的第三进位输入值同时可用。
另外,通过将第一32比特加法器102的输出与第二子加法器102、第三子加法器102和第四子加法器102的输出连结,可以形成AA[127:0]和BB[127:0]的128比特和。由于第一子加法器102可以在任何其他子加法器102(例如,第二子加法器102、第三子加法器102和第四子加法器102)之前计算并输出操作数段AA[31:0]和BB[31:0]的和,因此流水线加法器100可以被实现为通过第四延迟链106路由第一子加法器102的输出。第四延迟链可以将第一子加法器102的输出延迟若干时钟循环,这些时钟循环可以取决于流水线加法器100中的第一子加法器102之后的子加法器102的数量。因而,在图示的实施例中,第四延迟链106可以将第一子加法器102的输出延迟三个时钟循环,但是在其他实施例中,第四延迟链106可以被实现为延迟第一子加法器102的输出更多或更少数量的时钟循环。另外,流水线加法器100可以通过第五延迟链106路由第二子加法器102的输出,并且通过第六延迟链106路由第三子加法器102的输出,使得每个子加法器102的输出同时可用。
虽然上面描述的技术参考128比特流水线加法器100,其包含流水线化在一起的四个32比特子加法器102,但在一些实施例中,流水线加法器100可以以更大的精度实现,诸如1024比特流水线加法器100和/或另一合适的大小。在这种情况下,流水线加法器100可以被分解为更多数量的子加法器102,诸如32个32比特子加法器102。另外,延迟链106可以被实现为在使得对子加法器102的输入和/或来自子加法器102的输出可用之前增加时延(例如,延迟)。附加地或备选地,可以增加或减少操作数段和/或子加法器102的精度,并且在一些实施例中,可以部分地基于集成电路器件12的精度来确定操作数段和/或子加法器100的精度。在任何情况下,本文描述的示例意图是说明性而非限制的。
在一些实施例中,流水线加法器100的延迟链106可以在集成电路器件12中使用相当大的资源,因为延迟链106可以占用集成电路器件12中的相当大的面积和/或消耗集成电路器件中的相当大的功率。另外,因为流水线加法器100的每个子加法器102在算术上连接到流水线加法器100中的前一个子加法器102(例如,第二子加法器102在算术上取决于第一子加法器102),集成电路器件12可以将流水线加法器100装配在集成电路器件12的毗连区域中,这可以限制和/或限定集成电路器件12中的可用区域的使用。此外,因为子加法器102不是独立的,所以由流水线加法器100执行的加法可能引起相当大的时延,以适当地延迟输入操作数段和子加法器102的输出。
因而,如图4中所图示的,解码器120可以被实现为解码来自独立的子加法器102的生成信号(G)和/或传播信号(P)。在一些实施例中,如下面更详细描述的,重构加法器可以使用生成信号和/或传播信号来确定在子加法器处的两个操作数段(例如,AA[31:0]和BB[31:0])的和,独立于由另一个子加法器102生成的输出和/或进位输入值。
为了解码生成信号,解码器120可以使用子加法器102确定由第一操作数段(A)和第二操作数段(B)之和得到的进位输出信号。在一些实施例中,解码器120可以直接路由来自解码器120的子加法器102的进位链的生成信号(例如,进位输出信号)。附加地或备选地,解码器120可以例如通过对第一子加法器102的最高有效比特进行零扩展来从逻辑输出生成信号。解码器120可以将所得到的生成信号路由到逻辑“与”门122,逻辑“与”门122可以使用生成信号的补码来生成传播信号。例如,解码器的逻辑“与”门122可以接收生成信号的补码和传播’信号(P’)(例如,传播信号的先驱),该信号可由附加子加法器102生成,附加子加法器102实现为将第一操作数段和第二操作数段与进位输入值1求和作为输入,并且可以确定这些输入的逻辑“与”(NOT(G)AND P’)以生成传播信号(P)。
现在转向图5,表140示出了由生成信号和传播信号的值的组合产生的传播信号的值。因而,当生成信号具有值0(例如,未生成),并且传播’信号具有值1,解码器120可以输出具有值1的传播信号,并且可以对于生成信号和传播信号值的任何其他组合输出具有值0的传播信号时。
如上所讨论的,重构加法器可以使用生成信号和传播信号来独立于一个或多个附加子加法器102的输出而确定在一个或多个子加法器102处的一个或多个和。因而,图6图示了重构加法器160(例如加法器电路),其被实现成使用解码器120和前缀网络162来确定两个操作数之和。更确切地说,使用解码器120和前缀网络162,重构加法器160可以部分地基于两个操作数(各具有第二精度)的对应段对(例如,操作数段对)的和来确定两个操作数(各具有第一精度)的和,第二精度可以是比第一精度更小的精度。
如在图示的实施例中所示,重构加法器160可以包含用于每对操作数段的解码器120。例如,重构加法器160可以包含:第一解码器120,其被实现成解码由第一对操作数段AA[31:0]和BB[31:0]得到的生成信号和/或传播信号(例如,分别为G1和P1);第二解码器,实现成解码由第二对操作数段AA[63:32]和BB[63:32]得到的生成信号和/或传播信号(例如分别为G2和P2);以及第三解码器120,实现成解码由第三对操作数段AA[95:64]和BB[95:64]得到的生成信号和/或传播信号(例如,分别为G3和P3)。虽然未示出,但是第一对操作数段、第二对操作数段和第三对操作数段中的每一对可以从实现成分别接收第一操作数(AA)和第二操作数(BB)的重构加法器160的第一输入电路和第二输入电路路由。另外,如上所讨论,在每个解码器120处解码的生成信号和传播信号独立于其他生成和传播信号以及其他对操作数段的值生成。因而,解码器120和/或输入到相应解码器120的操作数段可以被放置在集成电路器件12上彼此分离且远离的区域中而不是毗连的区域内。像这样,在一些实施例中,将重构加法器160装配到集成电路器件12上可能没有装配流水线加法器100那么麻烦。
来自每个解码器120的生成信号和传播信号可以被馈送到前缀网络162中,诸如软逻辑前缀网络。前缀网络162可以由组合逻辑(例如,组合电路)构造,并且前缀网络162的布局可以是灵活的。因而,在一些实施例中,前缀网络162可以用Kogge-Stone拓扑、Brent-Kung拓扑、Sklansky拓扑、流水线拓扑和/或任何其他合适的拓扑来实现。在任何情况下,前缀网络162可以被实现为从解码器120接收生成信号和传播信号作为输入,并基于接收的生成信号和接收的传播信号生成进位比特。重构加法器160可以将所生成的进位比特馈送到子加法器102的输入中,子加法器102被实现成对在输入到解码器120的那对操作数段之后的那对操作数段(例如,具有立即更高有效比特位置)求和,解码器120负责产生对应于进位比特的生成信号和传播信号。例如,前缀网络162可以生成与由子加法器102执行的每个求和对应的相应进位输出比特,并且可以将进位输出比特路由到相应的随后子加法器102的进位输入比特置。因而,重构加法器160可以模仿由流水线加法器100使用的进位链,以使用前缀网络162将每个进位输出比特从前面的子加法器102馈送到后面的子加法器102。另外,如上所讨论,通过用前缀网络162和解码器120替换进位链,重构加法器160可以用于彼此独立地生成多对操作数段之和。因而,解码器120和/或子加法器102可以与附加解码器120和/或子加法器分开地装配到集成电路器件12上,这可以减小用于执行求和的集成电路器件12的面积。
在一些实施例中,为了确保一对操作数段在重构加法器160的最终子加法器102处与由前缀网络162生成的对应的进位输出比特同时可用,重构加法器160可以包含延迟链106,延迟链106实现成延迟该对操作数段合适数量的时钟循环,以补偿在前缀网络162的拓扑中实现的任何流水线操作。在这样的实施例中,重构加法器160中包含的每个延迟链106可以实现相同的延迟(例如,相同数量的时钟循环)。另外,因为操作数段(例如,AA[31:0]和BB[31:0])的最低有效对的相加不包含进位输入,所以操作数段的最低有效对的和可以通过延迟最低有效生成信号的产生来实现。
尽管重构加法器160看起来可能比流水线加法器100更复杂,但重构加法器160的深度(例如,阶段数和/或时延)可保持相对恒定,而不管重构加法器160的精度如何。例如,具有1024比特精度的重构加法器160可以包含比重构加法器160的所图示的实施例(其具有128比特的精度)更宽(例如,更高精度)的前缀网络162,但是因为前缀网络162可以用组合逻辑构造,因此增加前缀网络162的宽度(例如,精度)可以不增加重构加法器160的深度和/或时延。因而,在前缀网络162的输出处使用的延迟链106的深度可以在具有1024比特精度的重构加法器160与所图示的重构加法器160之间保持相同。另一方面,流水线加法器100的深度可以随用于对操作数段的每个附加对求和的每个附加子加法器102而增加一,因为流水线加法器100可以包含流水线化的附加阶段(例如,进位链)。因而,由流水线加法器100的延迟链106产生的时延可以随着流水线加法器100的精度的增加而增加。
现在转到图7,重构加法器160的延迟链106可以被放置在重构加法器160的任何合适的部分中。因而,在一些实施例中,代替或除了在将操作数段对路由到最终子加法器102之前对它们进行流水线化(例如,延迟),重构加法器160可以被实现成重用在最终子加法器102处在第一子加法器102处确定的操作数段对之和。例如,重构加法器160可以将由第一子加法器102生成的和路由成旁路前缀网络162并且用作输入,连同由前缀网络162确定的进位输入值,到最终子加法器102。像这样,最终子加法器可以将由第一子加法器102生成的和与进位输入值相加以生成输出段。
通过重用由第一子加法器102生成的和,图7的重构加法器160可以减小由图7的重构加法器160使用的面积,以将操作数段对流水线化到最终子加法器中。因而,在一些实施例中,图7的重构加法器160可以比图6的重构加法器160更容易地装配到集成电路器件12上。
现在转向图8,在一些实施例中,传播’信号可以被馈送到前缀网络162中以代替在图6中生成的传播信号。在这样的实施例中,对于输入到重构加法器160的每对操作数段,相应解码器120可以计算该对操作数段的和,其可以表示为对于i>=1,
Figure DEST_PATH_IMAGE001
= Ai + Bi,并且除了在最后(例如,最高有效的)一对操作数段的情况下,可以产生生成信号Gi。相应解码器120可以附加地计算那对操作数段与进位输入值1的和,其可以表示为对于i> = 1,
Figure 311718DEST_PATH_IMAGE002
= Ai + Bi+ 1,并且除了在最后一对操作数段的情况,可以产生传播'信号P' i。对于第一(例如,最低有效的)对操作数段(例如,= 0),子加法器102可以计算生成信号,其可以表示为
Figure DEST_PATH_IMAGE003
= A0 +B0 + cin。
在一些实施例中,前缀网络162可以生成适合于在该对操作数段的和与那对操作数段与进位输入值1的和之间进行选择的进位输出比特。因而,重构加法器160可以包含与每对操作数段对应的多路复用器172(mux),其可以基于从前缀网络162在多路复用器172处作为选择信号接收的进位输出比特的值,或者输出该对操作数段的和,或者输出那对操作数段与进位输入值1的和。附加地或备选地,如图6中所描述的,进位输出比特可以进位输入到该对操作数段的和。
为了生成进位输入和/或要用作选择信号的进位输出比特,前缀网络162可接收第一输入串(X),其可以包含交替的P’ i和1,如所描绘的,对于i> = 1且以上,但排除最后一对操作数段,并且可接收第二输入串(Y),其可以包含交替的Gi和0,对于i> = 1且以上,但排除最后一对操作数段。第一输入串和第二输入串的和(例如,X + Y)可以含有否定的进位输出,其可以由重构加法器160用作前缀网络162的进位输出比特,对应于在和的奇数索引上的前一对操作数段(例如,在分别对应于第一输入串和第二输入串中的交替0和1的比特位置的和比特上)。
另外,在一些实施例中,如果第一输入串和第二输入串的大小(例如,比特宽)小于或等于操作数段的比特宽(例如,子加法器102的精度),然后重构加法器160可以使用1循环的行波进位加法器(未示出)对第一输入串和第二输入串求和,该行波进位加法器可以被实现为前缀网络162。然而,如果第一输入串和第二输入串的大小大于操作数段的位宽,则前缀网络162实现为行波进位加法器可导致电路频率降低。因而,如下面更详细描述的,在这样的实施例中,备选前缀网络162拓扑可以被实现为改进由第一输入串和第二输入串的相加产生的电路频率。
虽然前缀网络162在上面被描述为具有拓扑,诸如Kogge-Stone拓扑、Brent-Kung拓扑、Sklansky拓扑和/或类似的,但是在一些实施例中,重构加法器160的递归实现可以被用于在重构加法器160中实现前缀网络162。作为说明性示例,作为前缀网络162的重构加法器160的递归实现下面在图8-11中在作为对最上级重构加法器160A的输入接收的两个4000比特操作数(例如,A和B)的上下文中进行描述。然而,在一些实施例中,可以将这些技术扩展用于在任何适当大小的重构加法器160和/或前缀网络162中使用。也就是,本文描述的示例意图是说明性而非限制的。
为了将4000比特操作数分段为18比特操作数段,最上级重构加法器160A可以包含223个操作数段,其可以通过如下等式计算:
k=⌊N/w⌋+int(N % w>0),
其中k表示操作数段的数量,N表示操作数的比特宽,w表示操作数段的比特宽(例如,子加法器102的比特宽)。在这种情况下,第一输入串(X)和第二输入串(Y)可以各具有442的比特宽以分别包含对于除最高有效和最低有效的操作数段之外的每对操作数段的交替的1或0,连同传播’信号或生成信号。例如,可以通过从操作数段(223)的数量中减去2并将该结果乘以2(例如,(223-2)*2)来确定第一输入串和第二输入串的比特宽。
因而,最上级重构加法器的前缀网络162可以具有442的精度。更确切地说,在一些实施例中,最上级重构加法器160A可以将第一输入串和第二输入串路由到第一中级重构加法器160B,加法器160B被实现为接收具有442比特宽的操作数。转到图9,第一中级重构加法器160B可以将第一输入串和第二输入串分段为25个18比特操作数段。因而,第一中级重构加法器160B可以路由第一中级第一输入串(X’),X’可以通过在由实现为对第一输入串(X)和第二输入串(Y)与进位输入1的求和的解码器120生成的传播’信号值之间交替1来形成,并且可以路由第一中级第二输入串(Y’),Y’可以通过在由实现为对第一输入串(X)和第二输入串(Y)求和的解码器120生成的生成信号值之间交替0来形成。为此,第一中级重构加法器160B的前缀网络162可以接收两个46比特输入串(例如,X'和Y')。
像这样,第一中级重构加法器160B可以包含具有46比特精度的第二中级重构加法器160C,其被实现为第一中级重构加法器160B的前缀网络162。如图10中所图示的,第二中级重构加法器160C可以接收第一中级输入串X'和第一中级第二输入串Y'作为输入操作数。第二中级重构加法器160C可以将每一个46比特操作数分段为3个18比特操作数段。因而,第二中级重构加法器160C可以路由第二中级第一输入串(X”),X”可以通过在由实现为对第一中级第一输入串(X’)和第一中级第二输入串(Y’)与进位输入1的求和的解码器120生成的传播’信号值之间交替1来形成,并且可以路由第一中级第二输入串(Y”),Y”可以通过在由实现为对第一中级第一输入串(X’)和第一中级第二输入串(Y’)求和的解码器120生成的生成信号值之间交替0来形成。为此,第二中级重构加法器160C的前缀网络162可以接收两个2比特输入串(例如,X”和Y”)。
在一些实施例中,当前缀网络162的精度小于操作数段的比特宽时,作为前缀网络162的重构加法器160的递归实现终止。例如,当相应的第一输入串和相应的第二输入串的比特宽对于重构加法器160的递归实现的级小于操作数段的比特宽时,递归实现可以终止。因而,如图11中所图示的,实现为接收两个2比特输入串(X”和Y”)的最终级重构加法器160D可以是重构加法器160的递归实现的基础(例如,根)。
转到图11,在一些实施例中,最终级重构加法器160D可以被实现为行波进位加法器。因而,最终级重构加法器160D可以包含第一二进制加法器174,其被实现为接收第二中级第二输入串(X”)的第一比特、第二中级第二输入串(Y”)的第一比特和进位输入比特(G0)。另外,第一二进制加法器174可以产生进位输出比特,其作为进位输入值被接收到最终级重构加法器160D的第二二进制加法器174。连同由第一二进制加法器174产生的进位输出,最终级重构加法器160D的第二二进制加法器174可以接收第二中级第二输入串(X”)的第二比特和第二中级第二输入串(Y”)的第二比特作为输入以产生进位输出比特。
由于最终级重构加法器160D可以是重构加法器160的递归实现的基础,所以由第二二进制加法器174产生的进位输出比特可以选择和,和/或可以进位到由第二中级重构加法器160C产生的和中。例如,因为第二中级重构加法器160C可以使用最终级重构加法器160D作为前缀网络162,所以如参考图8所描述的,第二中级重构加法器160C可以使用由最终级重构加法器160D产生的进位输出值来确定操作数段对的和。因而,第一中级重构加法器160B可以使用由第二中级重构加法器160C产生的任何和来确定第一中级重构加法器160B中的操作数段对的一个或多个和,并且最上级重构加法器160A可以使用由第一中级重构加法器160B产生的任何和来确定最上级重构加法器160A中的操作数段对的一个或多个和。
作为用作为前缀网络162的重构加法器160的递归实现来实现重构加法器160的附加或备选,在一些实施例中,重构加法器160可以用使用适合于确定一组两比特或更多比特的逻辑“与”的“与”门来生成传播和/或传播’信号的架构来实现。因而,如图12中所图示,重构解码器180可以用实现为从子加法器102接收一对操作数段的和的多输入“与”门182生成传播信号。
在一些实施例中,如参考图4所描述的,传播信号可以被定义为生成信号的补码与第一操作数段和第二操作数段与进位输入值1的和的逻辑“与”。在其他实施例中,传播信号可以被重新表示为该对操作数段的和的每个比特的逻辑“与”。因而,对于通过第一操作数段(例如,AA[31:0])和第二操作数段(例如,BB [31:0])的相加而生成的和(S),传播信号可以被定义为S0&S1&...&SN-1,其中S = {SN-1, ...,S0}。为此,多输入“与”门182可以从子加法器102接收该对操作数段的和,并生成传播信号,如由S0&S1&...&SN-1所定义的。
如图13中所图示,为了确定操作数段的和的每个比特的逻辑“与”,多输入“与”门182可以包含一个或多个查找表184(LUT)。更确切地说,在一些实施例中,多输入“与”门182可以包含一个或多个算术单元186(例如,逻辑单元和/或逻辑块),每个算术单元可以包含算术逻辑结构,诸如一个或多个LUT 184、多路复用器和/或类似的。因而,最低有效算术单元186可以包含多路复用器172,多路复用器172实现为接收0作为第一输入值并且接收来自该对操作数的和的比特的第一子集(例如,S0,S1,S2和S3)的逻辑“与”的结果作为第二输入值,并且可以基于选择信号的值在第一输入值和第二输入值之间进行选择。在一些实施例中,到多路复用器172的第一输入值和/或第二输入值各可以从实现为产生相应值的相应LUT 184路由。在第二输入值的情况下,例如,LUT 184可以接收比特的第一子集(例如,S0,S1,S2和S3)并且可以确定由每个比特的逻辑“与”产生的值(例如,S0&S1&S2&S3)。另外,在一些实施例中,在最低有效算术单元186的多路复用器172处提供的选择信号可以被实现为使多路复用器172选择由该对操作数段的和的每个比特的逻辑“与”产生的值(例如,第二输入值),该值在所图示的实施例中对应于输入到对应于具有值0的选择信号的多路复用器172的值。然而,在其他实施例中,由该对操作数段的和的每个比特的逻辑“与”产生的值可以对应于具有值1的选择信号和/或任何其他合适的选择信号值。在任何情况下,在最低有效算术单元186的多路复用器172处提供的选择信号可以实现为使多路复用器172选择由该对操作数段的和的每个比特的逻辑“与”产生的值。
在一些实施例中,最低有效算术单元186的多路复用器172的输出可以馈送到第二算术单元186(例如,后续算术单元186)中的多路复用器172的输入中,其可以对应于选择信号值1。第二多路复用器172此外可以接收0作为输入,其可对应于选择信号值0。另外,第二算术单元186可以接收来自该对操作数的和的比特的第二子集(例如,S4和S5)作为到LUT184的输入,LUT 184被实现为确定比特的第二子集(例如,S4和S5)的逻辑“与”,并将结果路由到多路复用器172作为选择信号。因而,如果比特的第一子集(例如,S0&S1&S2和S3)的逻辑“与”的结果是1,则第二算术单元186的多路复用器172可以接收具有值0的输入和具有值1的输入作为输入,并且如果比特的第一子集的逻辑“与”的结果为0,则第二算术单元186的多路复用器172可以接收两个输入,每个输入具有值0。在任一情况下,多路复用器172可以基于比特的第二子集在输入之间进行选择。为此,如果比特的第二子集(例如,S4和S5)的逻辑“与”的结果是1,则多路复用器172可以输出比特的第一子集的逻辑“与”的结果,并且如果比特的第二子集的逻辑“与”的结果是0,则多路复用器172可以输出0。更一般地,在一些实施例中,如果比特的第一子集和比特的第二子集中的每个都具有值1,则第二算术单元186的多路复用器172可以输出1,并且如果比特的第一子集或者比特的第二子集中的任一个具有值0,则第二算术单元186的多路复用器172可以输出0。例如,第二算术单元186的多路复用器172可以输出对应于比特的第一子集和比特的第二子集中的每一个的逻辑“与”的值(例如,S0&S1&S2&S3&S4&S5)。
因而,第二算术单元186的多路复用器172的输出可以路由到第三算术单元186中的多路复用器172的输入。第三算术单元186的多路复用器172可以接收值0(其可以对应于选择信号值0)作为输入,并且可以接收先前多路复用器172(例如,第二算术单元186的多路复用器172)的输出(其可以对应于选择信号值1)作为附加输入。第三算术单元186的多路复用器172可以基于从LUT 184路由的选择信号在两个输入之间进行选择,LUT 184被实现为确定该对操作数(例如,S6、S7、S8和S9)之和的比特的第三子集的逻辑“与”。像这样,如果比特的第一子集、比特的第二子集和比特的第三子集中的每一个具有值1,则多路复用器172可以输出1,而如果比特的第一子集、比特的第二子集或比特的第三子集中的任一个具有值0,则多路复用器172可以输出0。也就是,如上所述,第三算术单元186的多路复用器172可以输出对应于比特的第一子集、比特的第二子集和比特的第三子集中的每一个的逻辑“与”的值(例如,S0&S1&S2&S3&S4&S5&S6&S7&S8&S9)。
另外,第三算术单元186的多路复用器172的输出可以路由到第四算术单元186中的多路复用器172的输入。第四算术单元186的多路复用器172此外可以接收值0作为输入,并且可以基于从LUT 184路由的选择信号在先前多路复用器172(例如,第三算术单元186的多路复用器172)的输出之间进行选择,其可以对应于选择信号值1和0,其可以对应于选择信号值0,LUT 184被实现为确定该对操作数(例如,S10和S11)的和的比特的第四子集的逻辑“与”。像这样,如果比特的第一子集、比特的第二子集、比特的第三子集和比特的第四子集中的每一个具有值1,则多路复用器172可以输出1,而如果比特的第一子集、比特的第二子集、比特的第三子集或比特的第四子集中的任一个具有值0,则可以输出0。也就是,如上所述,第四算术单元186的多路复用器172可以输出对应于比特的第一子集、比特的第二子集、比特的第三子集和比特的第四子集中的每一个的逻辑“与”的值(例如,S0&S1&S2&S3&S4&S5&S6&S7&S8&S9&S10&S11)。
另外,第四算术单元186的多路复用器172的输出可以路由到第五算术单元186中的多路复用器172的输入。第五算术单元186的多路复用器172此外可以接收值0作为输入,并且可以基于从LUT 184路由的选择信号在先前多路复用器172(例如,第四算术单元186的多路复用器172)的输出之间进行选择,其可以对应于选择信号值1和0,其可以对应于选择信号值0,LUT 184被实现为确定该对操作数(例如,S12、S13、S14和S15)的和的比特的第五子集的逻辑“与”。像这样,如果比特的第一子集、比特的第二子集、比特的第三子集、比特的第四子集和比特的第五子集中的每一个具有值1,则多路复用器172可以输出1,而如果比特的第一子集、比特的第二子集、比特的第三子集、比特的第四子集或比特的第五子集中的任一个具有值0,则可以输出0。也就是,如上所述,第四算术单元186的多路复用器172可以输出对应于比特的第一子集、比特的第二子集、比特的第三子集、比特的第四子集和比特的第五子集中的每一个的逻辑“与”的值(例如,S0&S1&S2&S3&S4&S5&S6&S7&S8&S9&S10&S11&S12&S13&S14&S15)。
在一些实施例中,第五算术单元186的多路复用器172的输出可以路由到多输入“与”门182的最终算术单元186中的“异或”(XOR)门188的输入。“异或”门188此外可接收具有值0的信号作为输入。因而,当该对操作数段的和中的每一比特具有值1时,多输入“与”门182可以输出值为1的传播信号,并且当该对操作数段的和中的任一比特具有值0时,可以输出具有值0的传播信号。例如,当该对操作数段的和的每一比特的逻辑“与”产生值1时,“异或”门188可以输出具有值1的传播信号,该值可以从第五算术单元186的多路复用器172的输出接收。另外,在一些实施例中,传播信号可以附加地或备选地直接从第五算术单元186的多路复用器172的输出路由。
在一些实施例中,尽管图4中图示的逻辑“与”门122可以使用N + O(1)个算术单元186,其中N表示输入的数量(例如,操作数段中的比特数),并且O(1)表示常数的Big O记号法,但是多输入“与”门182可以使用
Figure 540443DEST_PATH_IMAGE004
+ O(1)个算术单元186。因而,通过用多输入“与”门182和/或重构解码器180生成传播信号,可以减少用于实现重构加法器160的面积和/或资源(例如,算术单元186的数量)。
虽然上面描述的技术参考实现为接收16比特的多输入“与”门182,但是在一些实施例中,它们可以被扩展用作任何适当大小的多输入“与”门182的一部分。另外,虽然先前多路复用器172的输出在多输入“与”门182的所示实施例中被描绘为路由到在后续多路复用器172处选择的输入,但是在一些实施例中,先前多路复用器172的输出可以备选地路由到后续多路复用器172的选择信号。在这种情况下,对应于后续多路复用器172的算术单元186中的LUT 184的输出可以路由到后续多路复用器172的输入,而不是路由到后续多路复用器172的选择信号。例如,可以互换对应于后续多路复用器172的算术单元186中的先前多路复用器172的输出和LUT 184的输出的路由。此外,虽然所示实施例中的多输入“与”门182被实现为在第一算术单元186处接收四比特的子集并且在后续算术单元186处接收一组两比特,或者在每对邻近算术单元186之间的6个独立输入比特,但在一些实施例中,多输入“与”门182中的每个算术单元186可以实现为接收任何合适数量的输入比特。因而,本文描述的示例意图是说明性而非限制的。
现在转到图14,重构子加法器200可以实现为减少用于产生生成信号和/或传播信号的面积和/或资源(例如,算术单元186)。例如,虽然全加法器可以针对每个输入比特用一个逻辑单元(例如,算术单元186)产生生成信号,但是重构子加法器200可以压缩一对操作数段的相加,以针对每三个输入比特使用两个逻辑单元产生生成信号。
因而,在一些实施例中,重构子加法器200可以在最低有效(例如,第一)算术单元186处接收该对操作数段(例如,A1和A0以及B1和B0)中的每一个的前两比特,并且可以基于该对操作数段中的每一个的前两比特生成和比特与进位。像这样,最低有效算术单元186可以包含第一LUT 184,该LUT被实现为确定该对操作数段中的每一个的第一比特的“异或”(例如,A0⊕B0)与该对操作数段中的每一个的第二比特的“异或”(例如,A1⊕B1)的逻辑“与”的结果,使用组合逻辑,该结果可以表示为(A1 ⊕ B1) & (A0 ⊕ B0)。最低有效算术单元186的结果可以馈送到逻辑“与”门(诸如多输入“与”门182)作为该对操作数段之和的第一比特,并且可以路由到多路复用器172中作为选择信号。在一些实施例中,最低有效算术单元186的多路复用器172可以接收比特值0作为对应于选择信号值1的第一输入,并且接收第二LUT 184的结果作为对应于选择信号值0的第二输入。第二LUT 184可以实现为确定该对操作数段中的每一个的前两比特的和是否大于3,其可以表示为((A1A0 + B1B0)> 3)。因而,由从第一LUT 184路由的选择信号所选择的多路复用器172的输出可以表示由该对操作数段中的每一个的前两比特的和产生的进位输出值,并且可以进位输入到后续的算术单元186。
更确切地说,在一些实施例中,最低有效算术单元186的多路复用器172的输出可以路由到对应于选择信号值1的后续(例如邻近)算术单元186中的多路复用器172的输入。后续算术单元186的多路复用器172此外可以从LUT 184的输出接收对应于选择信号值0的输入,LUT 184被实现为确定该对操作数段(例如,A2和B3)中的每一个的第三比特的逻辑“与”,使用组合逻辑,其可以表示为(A2 & B2)。另外,后续算术单元186的多路复用器172可以基于从LUT 184的输出路由的选择信号的值在输入之间进行选择,LUT 184被实现为确定该对操作数段中的每一个的第三比特的“异或”,其可以表示为(A2⊕B2)。因而,后续算术单元186的多路复用器172可以选择由该对操作数段中的每一个的第三比特的和产生的合适的进位输出比特。另外,该对操作数段中的每一个的第三比特的“异或”的结果可以从后续算术单元186路由到“与”门(诸如多输入“与”门182)作为由该对操作数段中的每一个的第三比特的相加产生的和比特。
如上面参考由最低有效算术单元186的多路复用器172输出的进位输出所描述的,后续算术单元186的多路复用器172的输出可以馈送到附加后续算术单元186作为对应于在附加后续算术单元186的多路复用器172处的选择信号值1的输入。附加后续算术单元186的多路复用器172可以进一步接收LUT 184的输出作为对应于选择信号值0的输入,该LUT 184被实现为确定该对操作数段(例如,A4和A3以及B4和B3)中的每一个的最后(例如,最高有效)两比特的和是否大于3,其可以表示为((A4A3 + B4B3)> 3)。实现为确定该对操作数段中的每一个的最高有效比特的“异或”(例如,A4⊕B4)与该对操作数段中的每一个的最高有效比特之前的比特的“异或”(例如,A3⊕B3)的逻辑“与”的结果(其可以表示为(A4 ⊕ B4)& (A3 ⊕ B3))的LUT 184的输出可以路由输入作为附加后续算术单元186的多路复用器172的选择信号,并且路由输出到逻辑“与”门(诸如多输入“与”门182)作为该对操作数段中的每一个的最高有效两比特的和比特。
因而,后续算术单元186的多路复用器172的输出可以表示该对操作数段中的每一个的最高有效两比特的相加的进位输出。而且,因为附加后续算术单元186的多路复用器172的输出是该对操作数段的相加的最终进位输出,所以该输出表示该对操作数段的总和的进位输出,其在一些实施例中对应于生成信号。附加地或备选地,重构子加法器200可以通过将附加后续算术单元186的多路复用器172的输出馈送到与附加输入0的“异或”门来产生生成信号,使得当附加后续算术单元186的多路复用器172的输出为1时,生成信号的值是1。
在一些实施例中,如上所讨论,通过压缩用于产生生成信号和/或传播信号的操作数段的求和,集成电路器件12可以使用更少的逻辑单元(例如,算术单元186)。因而,可以减少由重构加法器160使用的面积和/或功率。更确切地,在一些实施例中,虽然用于产生没有压缩的生成信号和传播信号的总面积可以被表示为2N,其中N指示输入的数量(例如,操作数段中的比特数),但用于产生具有压缩的生成信号和传播信号的总面积可以被表示为8/9N。另外,虽然重构子加法器200被描绘为压缩一对操作数段的相加以针对每三个输入比特使用两个逻辑单元产生生成信号,但是在一些实施例中,重构子加法器200可以使用本文描述的技术针对每两个输入比特使用一个逻辑单元。
尽管本文描述的实施例可以被描述为具有部分地基于集成电路器件12的精度确定的操作数分段精度,但是在一些实施例中,在重构加法器160处使用的操作数段精度可以部分地基于可以自然地适应于集成电路器件的精度被确定,这可以取决于实现重构加法器160所在的集成电路器件12的面积。例如,操作数段可以包含13比特、19比特和/或类似的,以能够实现更容易地放置在集成电路器件12上和/或更有效地生成和/或构造重构加法器160。另外,在一些实施例中,在重构加法器160的不同解码器处接收的操作数段可以包含不同数量的比特。因而,本文描述的实施例是说明性而非限制的。
集成电路器件12可以是数据处理系统,或者可以是数据处理系统的组件。例如,集成电路器件12可以是图15中所示的数据处理系统220的组件。数据处理系统220可以包含主机处理器222、存储器和/或存储电路224和网络接口226。数据处理系统220可以包含更多或更少的组件(例如,电子显示器、用户界面结构、专用集成电路(ASIC))。主机处理器222可以包含任何合适的处理器,诸如INTEL®Xeon®处理器或精简指令处理器(例如精简指令集计算机(RISC)、高级RISC机器(ARM)处理器),其可管理对于数据处理系统220的数据处理请求(例如,以执行加密、解密、机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式识别、空间导航等)。存储器和/或存储电路224可以包含随机存取存储器(RAM)、只读存储器(ROM)、一个或多个硬盘驱动器、闪存等。存储器和/或存储电路224可以保有要由数据处理系统220处理的数据。在一些情况下,存储器和/或存储电路224还可以存储用于对集成电路器件12编程的配置程序(比特流)。网络接口226可以允许数据处理系统220以与其他电子装置通信。数据处理系统220可以包含若干不同的封装,或者可以被含有在单个封装衬底上的单个封装内。
在一个示例中,数据处理系统220可以是处理各种不同请求的数据中心的一部分。比如,数据处理系统220可以经由网络接口226接收数据处理请求以执行加密、解密、机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式识别、空间导航或一些其他专业任务。主机处理器222可以使集成电路器件12的可编程逻辑组构用适合于实现所请求任务的加法器编程。比如,主机处理器222可以指示存储在存储器和/或存储电路224上的配置数据(比特流)被编程到集成电路器件12的可编程逻辑组构中。配置数据(比特流)可以表示用于加法器(诸如重构加法器160)的电路设计,其可以根据本文描述的技术被映射到可编程逻辑,以有效地执行和/或计算所请求的任务。通过有效地将加法器映射到可编程逻辑和/或有效地在电路中实现加法器,诸如在ASIC器件上实现加法器,其可以减少用于执行可涉及大算术运算的所请求任务的路由和面积资源,集成电路器件12可以快速地帮助数据处理系统220执行所请求的任务。
本公开还提供如下技术方案:
技术方案1. 一种集成电路器件上的加法器电路,所述加法器电路包括:
第一输入电路,所述第一输入电路配置为接收具有第一组比特的第一输入;
第二输入电路,所述第二输入电路配置为接收具有第二组比特的第二输入;
第一解码器,所述第一解码器耦合到所述第一输入电路和所述第二输入电路,其中所述第一解码器被配置为接收所述第一组比特的第一子集和所述第二组比特的第一子集,并至少部分地基于所述第一组比特的所述第一子集和所述第二组比特的所述第一子集确定生成信号和传播信号;
前缀网络,所述前缀网络耦合到所述第一解码器,其中所述前缀网络被配置为至少部分地基于所述生成信号和所述传播信号来确定进位输出信号,其中所述前缀网络包括第一组合电路;以及
第二组合电路,所述第二组合电路耦合到所述前缀网络,其中所述第二组合电路被配置为至少部分地基于所述进位输出信号确定所述第一组比特和所述第二组比特的和的一部分。
技术方案2. 如技术方案1所述的加法器电路,其中所述第二组合电路包括:子加法器电路,所述子加法器电路耦合到所述第一输入电路、所述第二输入电路和所述前缀网络,并被配置为将所述第一组比特的第二子集、所述第二组比特的第二子集和所述进位输出信号相加以确定所述第一组比特和所述第二组比特的所述和的所述一部分。
技术方案3. 如技术方案2所述的加法器电路,包括耦合在所述第一输入电路与所述子加法器电路之间以及在所述第二输入电路与所述子加法器电路之间的延迟链,其中所述延迟链被配置为部分地基于所述前缀网络的时延来延迟在所述子加法器电路处接收所述第一组比特的所述第二子集和所述第二组比特的所述第二子集。
技术方案4. 如技术方案3所述的加法器电路,其中所述延迟链包括被配置为实现先进先出(FIFO)数据结构的寄存器或存储器之一或二者。
技术方案5. 如技术方案1所述的加法器电路,包括:第二解码器,所述第二解码器耦合到所述第一输入电路和所述第二输入电路,并且被配置为至少部分地基于所述第一组比特的第二子集和所述第二组比特的第二子集来生成附加生成信号,其中所述第二组合电路包括:子加法器电路,所述子加法器电路耦合到所述第二解码器和所述前缀网络,并被配置为将所述附加生成信号和所述进位输出信号相加以确定所述第一组比特和所述第二组比特的所述和的所述一部分。
技术方案6. 如技术方案1所述的加法器电路,包括:第二解码器,所述第二解码器耦合到所述第一输入电路和所述第二输入电路,并且被配置为至少部分地基于所述第一组比特的第二子集和所述第二组比特的第二子集来生成附加生成信号,其中所述第二组合电路包括:乘法器,所述乘法器耦合到所述第二解码器和所述前缀网络,并被配置为:
从所述第二解码器接收所述附加生成信号以及所述第一组比特的所述第二子集、所述第二组比特的所述第二子集和进位输入信号的附加和;以及
部分地基于所述进位输出信号来选择所述第一组比特和所述第二组比特的所述和的所述一部分作为所述附加生成信号或所述附加和之一。
技术方案7. 如技术方案1所述的加法器电路,其中所述第一解码器被配置为基于所述第一组比特的所述第一子集和所述第二组比特的所述第一子集的附加和来确定所述生成信号。
技术方案8. 如技术方案1所述的加法器电路,其中所述第一解码器被配置为部分地基于所述第一组比特的所述第一子集和所述第二组比特的所述第一子集和进位输入信号的附加和来确定所述传播信号的先驱,其中所述第一解码器包括:“与”门,所述“与”门被配置为接收所述生成信号的补码和所述传播信号的所述先驱,并且部分地基于所述生成信号的所述补码和所述传播信号的所述先驱的逻辑“与”来确定所述传播信号。
技术方案9. 如技术方案1所述的加法器电路,其中所述第一解码器包括多输入“与”门,其中所述多输入“与”门被配置为部分地基于所述第一子集比特的所述第一子集和所述第二组比特的所述第一子集的第二和的第三组比特中的每个的逻辑“与”来确定所述传播信号。
技术方案10. 如技术方案1所述的加法器电路,其中所述第一解码器被配置为至少部分地基于所述第一组比特的所述第一子集和所述第二组比特的所述第一子集的第二和的压缩来确定所述生成信号或所述传播信号之一或二者。
技术方案11. 如技术方案1所述的加法器电路,其中所述前缀网络的拓扑包括Kogge-Stone拓扑、Brent-Kung拓扑、Sklansky拓扑或其组合。
技术方案12. 如技术方案1所述的加法器电路,其中所述前缀网络被配置为部分地基于第一输入串和第二输入串的附加和来确定所述进位输出信号,其中所述第一输入串包括与所述传播信号交替的算术1,其中所述第二输入串包括与所述生成信号交替的算术0。
技术方案13. 如技术方案1所述的加法器电路,其中所述前缀网络被配置为递归地确定所述进位输出信号,其中所述前缀网络包括:
第二解码器,所述第二解码器被配置为接收所述生成信号的第一子集和所述传播信号的第一子集,并且至少部分地基于所述生成信号的所述第一子集和所述传播信号的所述第一子集来确定附加生成信号和附加传播信号;
耦合到所述第二解码器的附加前缀网络,其中所述附加前缀网络被配置为至少部分地基于所述附加生成信号和所述附加传播信号来确定附加进位输出信号,其中所述附加前缀网络包括第三组合电路;以及
耦合到所述附加前缀网络的第四组合电路,其中所述第四组合电路被配置为至少部分地基于所述附加进位输出信号来确定所述进位输出信号。
技术方案14. 如技术方案1所述的加法器电路,其中所述前缀网络包括行波进位加法器,所述行波进位加法器包括第一行波进位加法器和第二行波进位加法器,其中所述行波进位加法器的精度高于或等于所述第一行波进位加法器和所述第二波纹进位加法器中的每一个的附加相应精度。
技术方案15. 如技术方案1所述的加法器电路,其中所述集成电路器件包括现场可编程门阵列。
技术方案16. 一种用于对具有第一组比特的第一操作数和具有第二组比特的第二操作数求和的硬件实现的方法,包括:
在解码器处接收所述第一组比特的第一子集和所述第二组比特的第一子集;
在所述解码器处部分基于所述第一组比特的所述第一子集和所述第二组比特的所述第一子集来确定生成信号和传播信号;
在耦合到所述解码器的前缀网络处接收所述生成信号和所述传播信号;
在所述前缀网络处部分地基于所述生成信号和所述传播信号来确定进位输出信号,其中所述前缀网络包括组合电路;以及
在耦合到所述前缀网络的附加组合电路处,至少部分地基于所述进位输出信号来确定所述第一组比特和所述第二组比特的和的一部分。
技术方案17. 如技术方案16所述的硬件实现的方法,包括:在所述解码器处部分地基于所述第一组比特的所述第一子集和所述第二组比特的所述第一子集来确定附加和,其中所述第一组比特和所述第二组比特的所述和包括所述第一组比特和所述第二组比特的所述和的所述一部分和所述附加和二者。
技术方案18. 如技术方案16所述的硬件实现的方法,包括:至少部分地基于所述生成信号和进位输入信号来确定所述传播信号,其中确定所述生成信号包括:在所述解码器处确定所述第一组比特的所述第一子集和所述第二组比特的所述第一子集的附加和。
技术方案19. 一种有形的非暂态机器可读介质,包括用于构造加法器电路的机器可读指令,所述指令当由一个或多个处理器执行时使所述一个或多个处理器:
将解码器配置为部分基于第一组比特的第一子集和第二组比特的第一子集来确定生成信号和传播信号;
将耦合到所述解码器的前缀网络配置为至少部分地基于所述生成信号和所述传播信号来确定进位输出信号,其中所述前缀网络包括组合电路;以及
将耦合到所述前缀网络的附加组合电路配置为至少部分地基于所述进位输出信号来确定所述第一组比特和所述第二组比特的第一和的一部分。
技术方案20. 如技术方案19所述的有形的非暂态机器可读介质,其中所述机器可读指令当由一个或多个处理器执行时使所述一个或多个处理器:
将所述加法器电路构造在系统的集成电路器件上,所述系统包括所述集成电路器件和所述一个或多个处理器或者被配置为在运行时间将算术运算卸载到所述加法器电路的第二组一个或多个处理器。
虽然本公开中阐述的实施例可以容许各种修改和备选形式,但是特定实施例已经在附图中通过示例的方式示出,并且已经在本文中详细描述。例如,可以实现本文描述的实施例和/或技术的任何合适的组合。因而,应该理解,本公开不旨在局限于所公开的具体形式。本公开将覆盖落入由以下所附权利要求书限定的本公开的精神和范围内的所有修改、等效和备选方案中。
参考本文提出和要求权利的技术并应用于实用性质的材料对象和具体示例,它们明确改进了本技术领域,并且因此不是抽象的、无形的或纯理论的。另外,如果附到本说明书末尾的任何权利要求都含有指定为“用于[执行][功能] ...的部件”或“用于[执行][功能] ......的步骤”的一个或多个元件,则意图是这些元件将在35 U.S.C. 112(f)下被解释。然而,对于含有以任何其他方式指定的元件的任何权利要求,意图是这种元件不应在35U.S.C. 112(f)下解释。

Claims (20)

1.一种集成电路器件上的加法器电路,所述加法器电路包括:
第一输入电路,所述第一输入电路配置为接收具有第一组比特的第一输入;
第二输入电路,所述第二输入电路配置为接收具有第二组比特的第二输入;
第一解码器,所述第一解码器耦合到所述第一输入电路和所述第二输入电路,其中所述第一解码器被配置为接收所述第一组比特的第一子集和所述第二组比特的第一子集,并至少部分地基于所述第一组比特的所述第一子集和所述第二组比特的所述第一子集确定生成信号和传播信号;
前缀网络,所述前缀网络耦合到所述第一解码器,其中所述前缀网络被配置为至少部分地基于所述生成信号和所述传播信号来确定进位输出信号,其中所述前缀网络包括第一组合电路;以及
第二组合电路,所述第二组合电路耦合到所述前缀网络,其中所述第二组合电路被配置为至少部分地基于所述进位输出信号确定所述第一组比特和所述第二组比特的和的一部分。
2.如权利要求1所述的加法器电路,其中所述第二组合电路包括:子加法器电路,所述子加法器电路耦合到所述第一输入电路、所述第二输入电路和所述前缀网络,并被配置为将所述第一组比特的第二子集、所述第二组比特的第二子集和所述进位输出信号相加以确定所述第一组比特和所述第二组比特的所述和的所述一部分。
3.如权利要求2所述的加法器电路,包括耦合在所述第一输入电路与所述子加法器电路之间以及在所述第二输入电路与所述子加法器电路之间的延迟链,其中所述延迟链被配置为部分地基于所述前缀网络的时延来延迟在所述子加法器电路处接收所述第一组比特的所述第二子集和所述第二组比特的所述第二子集。
4.如权利要求3所述的加法器电路,其中所述延迟链包括被配置为实现先进先出(FIFO)数据结构的寄存器或存储器之一或二者。
5.如权利要求1所述的加法器电路,包括:第二解码器,所述第二解码器耦合到所述第一输入电路和所述第二输入电路,并且被配置为至少部分地基于所述第一组比特的第二子集和所述第二组比特的第二子集来生成附加生成信号,其中所述第二组合电路包括:子加法器电路,所述子加法器电路耦合到所述第二解码器和所述前缀网络,并被配置为将所述附加生成信号和所述进位输出信号相加以确定所述第一组比特和所述第二组比特的所述和的所述一部分。
6.如权利要求1所述的加法器电路,包括:第二解码器,所述第二解码器耦合到所述第一输入电路和所述第二输入电路,并且被配置为至少部分地基于所述第一组比特的第二子集和所述第二组比特的第二子集来生成附加生成信号,其中所述第二组合电路包括:乘法器,所述乘法器耦合到所述第二解码器和所述前缀网络,并被配置为:
从所述第二解码器接收所述附加生成信号以及所述第一组比特的所述第二子集、所述第二组比特的所述第二子集和进位输入信号的附加和;以及
部分地基于所述进位输出信号来选择所述第一组比特和所述第二组比特的所述和的所述一部分作为所述附加生成信号或所述附加和之一。
7.如权利要求1所述的加法器电路,其中所述第一解码器被配置为基于所述第一组比特的所述第一子集和所述第二组比特的所述第一子集的附加和来确定所述生成信号。
8.如权利要求1所述的加法器电路,其中所述第一解码器被配置为部分地基于所述第一组比特的所述第一子集和所述第二组比特的所述第一子集与进位输入信号的附加和来确定所述传播信号的先驱,其中所述第一解码器包括:“与”门,所述“与”门被配置为接收所述生成信号的补码和所述传播信号的所述先驱,并且部分地基于所述生成信号的所述补码和所述传播信号的所述先驱的逻辑“与”来确定所述传播信号。
9.如权利要求1所述的加法器电路,其中所述第一解码器包括多输入“与”门,其中所述多输入“与”门被配置为部分地基于所述第一子集比特的所述第一子集和所述第二组比特的所述第一子集的第二和的第三组比特中的每个的逻辑“与”来确定所述传播信号。
10.如权利要求1所述的加法器电路,其中所述第一解码器被配置为至少部分地基于所述第一组比特的所述第一子集和所述第二组比特的所述第一子集的第二和的压缩来确定所述生成信号或所述传播信号之一或二者。
11.如权利要求1所述的加法器电路,其中所述前缀网络的拓扑包括Kogge-Stone拓扑、Brent-Kung拓扑、Sklansky拓扑或其组合。
12.如权利要求1所述的加法器电路,其中所述前缀网络被配置为部分地基于第一输入串和第二输入串的附加和来确定所述进位输出信号,其中所述第一输入串包括与所述传播信号交替的算术1,其中所述第二输入串包括与所述生成信号交替的算术0。
13.如权利要求1所述的加法器电路,其中所述前缀网络被配置为递归地确定所述进位输出信号,其中所述前缀网络包括:
第二解码器,所述第二解码器被配置为接收所述生成信号的第一子集和所述传播信号的第一子集,并且至少部分地基于所述生成信号的所述第一子集和所述传播信号的所述第一子集来确定附加生成信号和附加传播信号;
耦合到所述第二解码器的附加前缀网络,其中所述附加前缀网络被配置为至少部分地基于所述附加生成信号和所述附加传播信号来确定附加进位输出信号,其中所述附加前缀网络包括第三组合电路;以及
耦合到所述附加前缀网络的第四组合电路,其中所述第四组合电路被配置为至少部分地基于所述附加进位输出信号来确定所述进位输出信号。
14.如权利要求1所述的加法器电路,其中所述前缀网络包括行波进位加法器,所述行波进位加法器包括第一行波进位加法器和第二行波进位加法器,其中所述行波进位加法器的精度高于或等于所述第一行波进位加法器和所述第二波纹进位加法器中的每一个的附加相应精度。
15.如权利要求1所述的加法器电路,其中所述集成电路器件包括现场可编程门阵列。
16.一种用于对具有第一组比特的第一操作数和具有第二组比特的第二操作数求和的硬件实现的方法,包括:
在解码器处接收所述第一组比特的第一子集和所述第二组比特的第一子集;
在所述解码器处部分基于所述第一组比特的所述第一子集和所述第二组比特的所述第一子集来确定生成信号和传播信号;
在耦合到所述解码器的前缀网络处接收所述生成信号和所述传播信号;
在所述前缀网络处部分地基于所述生成信号和所述传播信号来确定进位输出信号,其中所述前缀网络包括组合电路;以及
在耦合到所述前缀网络的附加组合电路处,至少部分地基于所述进位输出信号来确定所述第一组比特和所述第二组比特的和的一部分。
17.如权利要求16所述的硬件实现的方法,包括:在所述解码器处部分地基于所述第一组比特的所述第一子集和所述第二组比特的所述第一子集来确定附加和,其中所述第一组比特和所述第二组比特的所述和包括所述第一组比特和所述第二组比特的所述和的所述一部分和所述附加和二者。
18.如权利要求16所述的硬件实现的方法,包括:至少部分地基于所述生成信号和进位输入信号来确定所述传播信号,其中确定所述生成信号包括:在所述解码器处确定所述第一组比特的所述第一子集和所述第二组比特的所述第一子集的附加和。
19.一种有形的非暂态机器可读介质,包括用于构造加法器电路的机器可读指令,所述指令当由一个或多个处理器执行时使所述一个或多个处理器:
将解码器配置为部分基于第一组比特的第一子集和第二组比特的第一子集来确定生成信号和传播信号;
将耦合到所述解码器的前缀网络配置为至少部分地基于所述生成信号和所述传播信号来确定进位输出信号,其中所述前缀网络包括组合电路;以及
将耦合到所述前缀网络的附加组合电路配置为至少部分地基于所述进位输出信号来确定所述第一组比特和所述第二组比特的第一和的一部分。
20.一种系统,包括:
用于将解码器配置为部分基于第一组比特的第一子集和第二组比特的第一子集来确定生成信号和传播信号的部件;
用于将耦合到所述解码器的前缀网络配置为至少部分地基于所述生成信号和所述传播信号来确定进位输出信号的部件,其中所述前缀网络包括组合电路;以及
用于将耦合到所述前缀网络的附加组合电路配置为至少部分地基于所述进位输出信号来确定所述第一组比特和所述第二组比特的第一和的一部分的部件。
CN201910505521.5A 2018-07-12 2019-06-12 前缀网络定向的加法 Pending CN110716707A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862697265P 2018-07-12 2018-07-12
US62/697265 2018-07-12
US16/052,336 US11334318B2 (en) 2018-07-12 2018-08-01 Prefix network-directed addition
US16/052336 2018-08-01

Publications (1)

Publication Number Publication Date
CN110716707A true CN110716707A (zh) 2020-01-21

Family

ID=65231569

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201910505586.XA Pending CN110780843A (zh) 2018-07-12 2019-06-12 高性能fpga加法
CN201910505521.5A Pending CN110716707A (zh) 2018-07-12 2019-06-12 前缀网络定向的加法
CN201910505505.6A Pending CN110716708A (zh) 2018-07-12 2019-06-12 用于非常大整数的加法器电路

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201910505586.XA Pending CN110780843A (zh) 2018-07-12 2019-06-12 高性能fpga加法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201910505505.6A Pending CN110716708A (zh) 2018-07-12 2019-06-12 用于非常大整数的加法器电路

Country Status (2)

Country Link
US (4) US11334318B2 (zh)
CN (3) CN110780843A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116029238A (zh) * 2023-03-27 2023-04-28 中科亿海微电子科技(苏州)有限公司 一种对加法器进行时序分析的方法及装置

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11334318B2 (en) * 2018-07-12 2022-05-17 Intel Corporation Prefix network-directed addition
US20200159495A1 (en) * 2018-11-15 2020-05-21 Samsung Electronics Co., Ltd. Processing apparatus and method of processing add operation therein
US11301213B2 (en) 2019-06-24 2022-04-12 Intel Corporation Reduced latency multiplier circuitry for very large numbers
TWI764297B (zh) * 2019-11-20 2022-05-11 大陸商珠海南北極科技有限公司 累加電路
CN111522527B (zh) * 2020-05-09 2022-04-29 支付宝(杭州)信息技术有限公司 防止数据寄存器饱和溢出的方法、装置及电子设备
US11620106B1 (en) * 2020-12-16 2023-04-04 The United States Of America As Represented By The Secretary Of The Navy Parallel hybrid adder

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3316393A (en) * 1965-03-25 1967-04-25 Honeywell Inc Conditional sum and/or carry adder
US3553446A (en) * 1966-08-04 1971-01-05 Honeywell Inc Carry determination logic
US4549280A (en) 1982-12-20 1985-10-22 Sperry Corporation Apparatus for creating a multiplication pipeline of arbitrary size
NL8401308A (nl) * 1984-04-24 1985-11-18 Philips Nv Voloptelschakeling.
US4958312A (en) 1987-11-09 1990-09-18 Lsi Logic Corporation Digital multiplier circuit and a digital multiplier-accumulator circuit which preloads and accumulates subresults
US5047974A (en) 1987-11-24 1991-09-10 Harris Corporation Cell based adder with tree structured carry, inverting logic and balanced loading
US4858168A (en) * 1988-02-16 1989-08-15 American Telephone And Telegraph Company Carry look-ahead technique having a reduced number of logic levels
US5122982A (en) * 1988-02-29 1992-06-16 Chopp Computer Corporation Carry generation method and apparatus
JP3018754B2 (ja) * 1992-07-10 2000-03-13 日本電気株式会社 桁上げ先見加算方法とその装置
US5278783A (en) * 1992-10-30 1994-01-11 Digital Equipment Corporation Fast area-efficient multi-bit binary adder with low fan-out signals
US5327369A (en) * 1993-03-31 1994-07-05 Intel Corporation Digital adder and method for adding 64-bit, 16-bit and 8-bit words
US5784305A (en) 1995-05-01 1998-07-21 Nec Corporation Multiply-adder unit
US5726927A (en) 1995-09-11 1998-03-10 Digital Equipment Corporation Multiply pipe round adder
US6233671B1 (en) * 1998-03-31 2001-05-15 Intel Corporation Staggering execution of an instruction by dividing a full-width macro instruction into at least two partial-width micro instructions
AU3884100A (en) * 1999-03-23 2000-10-09 Sony Electronics Inc. Adder circuit
US6529931B1 (en) 1999-04-14 2003-03-04 Agere Systems Inc. Prefix tree adder with efficient carry generation
DE10085322B4 (de) * 1999-12-23 2006-10-26 Intel Corporation, Santa Clara Schaltungsanordnung, Verfahren und Datenverarbeitungs-Einrichtung zum Durchführen einer Ein-Zyklus-Addition oder -Subtraktion und eines Vergleichs bei einer Arithmetik redundanter Form
US6539413B1 (en) * 2000-03-15 2003-03-25 Agere Systems Inc. Prefix tree adder with efficient sum generation
WO2002008885A1 (en) * 2000-07-21 2002-01-31 Xebeo Communications, Inc. HIGH-SPEED PARALLEL-PREFIX MODULO 2n-1 ADDERS
US6839729B2 (en) * 2001-09-28 2005-01-04 Intel Corporation Method and apparatus for a multi-purpose domino adder
US7325025B2 (en) * 2001-12-18 2008-01-29 Intel Corporation Look-ahead carry adder circuit
US7290027B2 (en) * 2002-01-30 2007-10-30 International Business Machines Corporation Circuit suitable for use in a carry lookahead adder
US7206802B2 (en) * 2002-10-10 2007-04-17 International Business Machines Corporation Hybrid carry look ahead/carry select adder including carry logic generating complementary hot carry signals, and method for producing the carry logic
US7152089B2 (en) * 2003-05-05 2006-12-19 Sun Microsystems, Inc. Parallel prefix networks that make tradeoffs between logic levels, fanout and wiring racks
US7523153B2 (en) * 2005-02-11 2009-04-21 International Business Machines Corporation Method of forcing 1's and inverting sum in an adder without incurring timing delay
US7509368B2 (en) * 2005-05-09 2009-03-24 Intel Corporation Sparse tree adder circuit
US8661072B2 (en) * 2008-08-19 2014-02-25 International Business Machines Corporation Shared parallel adder tree for executing multiple different population count operations
US8683398B1 (en) * 2012-11-27 2014-03-25 International Business Machines Corporation Automated synthesis of high-performance two operand binary parallel prefix adder
EP3264260B1 (en) * 2016-06-30 2019-10-16 Nxp B.V. Lossy arithmetic
US10171105B2 (en) * 2016-08-25 2019-01-01 International Business Machines Corporation Carry-less population count
US11334318B2 (en) * 2018-07-12 2022-05-17 Intel Corporation Prefix network-directed addition
US11169779B2 (en) * 2019-10-23 2021-11-09 Nvidia Corp. Full adder cell with improved power efficiency

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116029238A (zh) * 2023-03-27 2023-04-28 中科亿海微电子科技(苏州)有限公司 一种对加法器进行时序分析的方法及装置

Also Published As

Publication number Publication date
US10340920B1 (en) 2019-07-02
CN110716708A (zh) 2020-01-21
US20190042194A1 (en) 2019-02-07
US11334318B2 (en) 2022-05-17
US20190114140A1 (en) 2019-04-18
US11662979B2 (en) 2023-05-30
US10873332B2 (en) 2020-12-22
CN110780843A (zh) 2020-02-11
US20210075425A1 (en) 2021-03-11

Similar Documents

Publication Publication Date Title
CN110716707A (zh) 前缀网络定向的加法
US11656872B2 (en) Systems and methods for loading weights into a tensor processing block
US11899746B2 (en) Circuitry for high-bandwidth, low-latency machine learning
CN110955406A (zh) 浮点动态范围扩展
US11809798B2 (en) Implementing large multipliers in tensor arrays
US20210326111A1 (en) FPGA Processing Block for Machine Learning or Digital Signal Processing Operations
US11163530B2 (en) Programmable-logic-directed multiplier mapping
US11010134B2 (en) High radix subset code multiplier architecture
US20210326116A1 (en) High precision decomposable dsp entity
US10007487B1 (en) Double-precision floating-point operation
US11768661B2 (en) Efficient logic blocks architectures for dense mapping of multipliers
US20230239136A1 (en) Pipelined Galois Counter Mode Hash Circuit
US11960853B2 (en) Folded integer multiplication for field-programmable gate arrays
Hafdi Mixed-precision architecture for flexible neural network accelerators
CN114675803A (zh) 用于浮点尾数的舍入电路

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