CN110716708A - 用于非常大整数的加法器电路 - Google Patents

用于非常大整数的加法器电路 Download PDF

Info

Publication number
CN110716708A
CN110716708A CN201910505505.6A CN201910505505A CN110716708A CN 110716708 A CN110716708 A CN 110716708A CN 201910505505 A CN201910505505 A CN 201910505505A CN 110716708 A CN110716708 A CN 110716708A
Authority
CN
China
Prior art keywords
adder
carry
sum
output
circuit
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
CN201910505505.6A
Other languages
English (en)
Inventor
M.朗哈默
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 CN110716708A publication Critical patent/CN110716708A/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

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Complex Calculations (AREA)
  • Logic Circuits (AREA)

Abstract

提供了一种包含非常大加法器电路的集成电路。非常大加法器电路接收多于两个的输入,每个输入具有数百或数千位。非常大加法器电路包含布置在树状网络中的多个加法器节点。加法器节点将输入操作数化分成段,计算每段的和,并且独立于段和计算每段的进位。使用总体计数器累加在树中的每层的进位。在树中的最后一个节点之后,段和然后能与进位组合以确定最终和输出。以这种方式实现的加法器树网络渐近地接近该区域和性能时延,作为使用无限速度行波进位加法器的加法器网络。

Description

用于非常大整数的加法器电路
本申请要求2018年7月12日提交的临时专利申请No. 62/697,265的权益,该临时申请以其整体通过结合于本文中。
技术领域
这一般涉及集成电路,诸如现场可编程门阵列(FPGA)。更具体地说,本公开涉及配置成在FPGA上执行大算术运算的加法器电路。
背景技术
集成电路越来越多地执行定制功能,诸如已经变得对每天生活至关重要的加密。实际上,加密在许多技术领域(诸如金融交易安全性)中变得越来越有价值。加密(以及能在集成电路上发生的许多其他操作,诸如某些乘法运算)可以使用越来越大精度的算术,在一些情况下,涉及执行最终加法运算以将具有大精度的操作数在一起求和。
在一些情况下,例如,操作数的精度可以大约数千位。最终加法运算由最终加法器电路执行。由于最终加法器电路通常包含链接在一起的更小加法器以适应涉及对操作数求和的大精度算术,因此最终加法器电路可以表示在集成电路上实现的加密和/或乘法运算的关键路径。实际上,最终加法器电路占用集成电路上的大量区域,消耗相对大量的功率,并在集成电路中引入附加时延。
本文描述的实施例在此上下文内。
附图说明
图1是按照实施例的包含加法器电路的说明性集成电路的图解。
图2是按照实施例的说明性可编程集成电路的图解。
图3是流水线加法器的图解。
图4是能被用作更大加法器电路的一部分的解码器电路的图解。
图5是包含图4中所示类型的解码器电路的重构加法器的图解。
图6是包含配置成同时输出生成和传播信号的子加法器的重构加法器的图解。
图7是包含配置成同时输出生成、传播信号和对信号求和的子加法器的重构加法器的图解。
图8A和8B是按照实施例的说明性加法器节点的图解。
图9是按照实施例的包含多级加法器节点的说明性加法器树的图解。
图10是根据实施例的配置成组合和和进位位的最终加法器级的图解。
图11A和11B示出了按照实施例的能用于在图10的最终加法器级中输出生成、传播信号和对信号求和的说明性子加法器的不同实现。
图12是按照实施例的图9中所示类型的加法器树的逻辑表示的图解。
图13是按照实施例的数据处理系统的图解。
具体实施方式
本实施例涉及包含加法器节点的树的大加法器网络。每个加法器节点可以接收至少两个非常大的输入(例如,大约数百或数千位的输入)。通过均匀地划分输入位索引,可以将输入组织成多个段。对于具体输入段的相加可以独立于其他段索引的相加来执行。
每个加法器节点可以单独考虑每段的进位。从树的同一层中的每个加法器节点输出的段进位然后能被相加在一起,同时仍为每段保持单独的进位和。段加法流水线可以独立于段进位流水线(在计算逻辑和时延方面)。换言之,进位位不影响和位直到加法器树底部的最终节点之后。加法器树中的最终节点可以输出和向量。然后,最终加法器级能将和向量与从段进位流水线输出的进位向量相加在一起,以计算最终结果。
以这种方式配置和操作,大加法器网络渐近地接近相同区域和时延(对于大量非常大整数)作为无限速度行波进位加法器的网络(即,加法器网络的性能独立于行波进位加法器的速度,但取决于器件上的组合逻辑和路由的速度)。作为结果,整个加法器网络将比常规加法器架构显著更小且更快。
本领域技术人员将认识到,目前的示例性实施例可在没有一些或所有这些特定细节的情况下实践。在其它实例中,众所周知的操作未详细描述,以免不必要地使本实施例模糊不清。
记住前述内容,图1是可以实现算术运算的集成电路10的图解。设计者可能想要在集成电路器件10(例如,现场可编程门阵列(FPGA)或专用集成电路(ASIC))上实现诸如大精度算术运算的功能性。如图1中所示,集成电路10可以包含“非常大”加法器网络,诸如加法器50。在图1的示例中,加法器50可以被称为非常大加法器,因为它配置成将两个输入AA和BB在一起求和,每个输入具有1000位。
一般而言,非常大加法器50可用于组合具有多于50位、至少100位、数百位、100-1000位、至少1000位、数千位、数万位、数十万位、甚至数百万位的输入。加法器网络50可能也将多于两个非常大的数字在一起求和(例如,加法器50能用于组合多于两个的大整数、四个或更多个大整数、八个或更多个大整数、十六个或更多个大整数等)。
集成电路10可能被实现为可编程集成电路器件,诸如图2的可编程逻辑器件10,其中大精度算术传统上已经具有挑战性。如图2中所示,可编程逻辑器件10可以包含功能块的二维阵列,包含逻辑阵列块(LAB)11和其他功能块,诸如随机存取存储器(RAM)块13和专用处理块,诸如数字信号处理(DSP)块12,它们部分或完全硬连线以执行一个或多个特定任务,诸如数学/算术运算。诸如LAB 110的功能块可包含更小的可编程区域(例如,逻辑元件、可配置逻辑块或自适应逻辑模块),这些区域接收输入信号并对输入信号执行定制功能以产生输出信号。器件10可以进一步包含可编程路由组构,该组构用于将LAB 11与RAM块13和DSP块12互连。可编程逻辑和路由组构的组合有时被称为“软”逻辑,而DSP块有时被称为“硬”逻辑。器件10上的硬逻辑的类型不限于DSP块,并且可以包含其他类型的硬逻辑。
可编程逻辑器件100可以含有用于配置软逻辑的可编程存储器元件。存储器元件可以使用输入/输出元件(IOE)102加载有配置数据(也称为编程数据)。一旦加载,存储器元件就提供对应的静态控制信号,这些信号控制一个或多个LAB 11、可编程路由组构以及可选的DSP 12或RAM 13的操作。在典型的情形下,加载的存储器元件的输出被施加到金属氧化物半导体晶体管(例如导通晶体管)的栅极,以使某些晶体管导通或截止,并且由此配置功能块中的逻辑,包含路由路径。可以以这种方式控制的可编程逻辑电路元件包含多路复用器(例如用于形成互连电路中的路由路径的多路复用器)、查找表、逻辑阵列、AND、OR、NAND和NOR逻辑门、通过门等的部分。
存储器元件可以使用任何合适的易失性和/或非易失性存储器结构,诸如随机存取存储器(RAM)单元、熔丝、反熔丝、可编程只读存储器存储器单元、掩模编程和激光编程的结构、机械存储器器件(例如,包含本地化机械谐振器)、机械操作的RAM(MORAM)、可编程金属化单元(PMC)、导电桥接RAM(CBRAM)、电阻性存储元件、这些结构的组合等。因为存储器元件在编程期间被加载有配置数据,因此存储器元件有时被称为配置存储器、配置RAM(CRAM)、配置存储器元件或可编程存储器元件。
此外,可编程逻辑器件10可以具有用于驱动信号离开器件10以及用于从其它器件接收信号的输入/输出元件(IOE)16。输入/输出元件16可以包含并行输入/输出电路、串行数据收发器电路、差分接收器和传送器电路或者用于将一个集成电路连接到另一集成电路的其它电路。如所示,输入/输出元件16可以位于芯片的外围周围。如果需要,可编程逻辑器件可以具有以不同方式布置的输入/输出元件16。
PLD 10上的路由组构(有时被称为可编程互连电路)还可以以垂直路由通道14(即,沿PLD 100的垂直轴形成的互连)和水平路由通道15(即,沿PLD 10的水平轴形成的互连)的形式提供,每个路由通道包含至少一个轨道以路由至少一条线。如果需要,路由的线可以短于路由通道的整个长度。长度L的线可以跨越L个功能块。例如,长度4的线可以跨越4个功能块。水平路由通道中的长度4的线可被称为“H4”线,而垂直路由通道中的长度4的线可被称为“V4”线。
更进一步,应当理解,实施例可以在任何集成电路中实现。如果需要,这种集成电路的功能块可以被布置在其中多个功能块被互连以形成更大块的更多层或更多阶层中。其它器件布置可以使用不按行和列布置的功能块。其中在诸如现场可编程门阵列(FPGA)管芯的可编程器件10内形成非常大的加法器网络50的配置在本文中将作为示例进行描述,并且不旨在限制本实施例的范围。
图3图示了诸如流水线加法器100的进位传播加法器,其可以通过将操作数分解成更小的段来处置大输入操作数的求和。在图3的示例中,流水线加法器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位操作数的和。子加法器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的输出同时可用。
在大加法器中,流水线加法器100的延迟链106可以使用在集成电路上的相当大的资源,因为延迟链106可以占用集成电路器件12中的相当大的面积和/或消耗集成电路器件中的相当大的功率。此外,因为流水线加法器100的每个子加法器102在算术上取决于前一个子加法器102的计算,所以流水线加法器100不得不被放置在集成电路器件上的毗连区域中,这可能限制和/或约束可用管芯区域的使用。此外,因为子加法器102不是独立的,所以由流水线加法器100执行的加法可能引起相当大的时延,以适当地延迟子加法器102的输出和输入操作数段。
因而,如图4中所图示的,解码器120可以被实现为使用一组独立的子加法器102来解码生成信号(G)和/或传播信号(P)。在一些实施例中,如下面更详细描述的,重构加法器可以使用生成信号和/或传播信号来确定在子加法器102处的两个操作数段(例如,AA[31:0]和BB[31:0])的和,独立于由另一个子加法器102生成的输出和/或进位输出值。
为了解码生成信号,解码器120可以使用第一子加法器102计算由第一操作数段(A)和第二操作数段(B)之和得到的进位输出信号。第一子加法器102的进位输出信号可以直接用作生成信号G。附加地或备选地,解码器120可以例如通过在第一子加法器102的和输出处对最高有效位进行零扩展来从逻辑输出生成信号。
为了解码传播信号,解码器120可以使用第二子加法器102计算由第一操作数段A、第二操作数段B和进位输入值“1”之和得到的进位输出信号。第二子加法器102的进位输出信号(在图4中标记为P’)可以使用逻辑AND门122与来自第一子加法器102的进位输出信号的反相版本组合以输出期望传播信号P。以这种方式配置,门122计算逻辑函数:NOT(G)ANDP'。
如上所述,重构加法器可以使用生成信号和传播信号来独立于其他子加法器102的输出确定在一个或多个子加法器102处的一个或多个和。因而,图5图示了重构加法器160,其使用解码器120和前缀网络162来确定两个操作数的和。更确切地说,使用解码器120和前缀网络162,重构加法器160可以部分地基于各具有第二精度的两个操作数段的对应对(例如,操作数段对)的和来确定各具有第一精度的两个操作数的和,第二精度可以是比第一精度更小的精度。
如图5中所示,重构加法器160可以包含用于每对操作数段的单独解码器120。例如,重构加法器160可以包含:第一解码器120,其配置成解码由第一对操作数段AA[31:0]和BB[31:0]得到的生成信号和/或传播信号(例如,分别为G1和P1);第二解码器120,配置成解码由第二对操作数段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装配到集成电路器件10上可能不如装配图5的流水线加法器100那么麻烦。
仍然参考图5,来自每个解码器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。
在一些实施例中,为了确保一对操作数段在重构加法器160的最终子加法器102处与由前缀网络162生成的对应的进位输出位同时可用,重构加法器160可以包含延迟链106,延迟链106实现成延迟该对操作数段合适数量的时钟循环,以补偿在前缀网络162的拓扑中实现的任何流水线化。在这样的实施例中,重构加法器160中包含的每个延迟链106可以实现相同的延迟(例如,相同数量的时钟循环)。另外,因为操作数段的最低有效对(例如,AA[31:0]和BB[31:0])的相加不包含进位输入,所以操作数段的最低有效对的和可以通过延迟最低有效生成信号的产生来实现。而且,在一些实施例中,重构加法器160可以实现成使得向输入到重构加法器160的每对操作数段应用等效数量的时延循环。
尽管重构加法器160看起来可能比流水线加法器100更复杂,但重构加法器160的深度(例如,级数和/或时延数)可保持相对恒定,而不管重构加法器160的精度如何。例如,具有1024位精度的重构加法器160可以包含比重构加法器160的所图示的实施例(其具有128位的精度)更宽(例如,更高精度)的前缀网络162,但是因为前缀网络162可以用组合逻辑构造,增加前缀网络162的宽度(例如,精度)可以不增加重构加法器160的深度和/或时延。因而,在前缀网络162的输出使用的延迟链106的深度可以在具有1024位精度的重构加法器160与所图示的重构加法器160之间保持相同。另一方面,流水线加法器100的深度可以随用于对操作数段的每个附加对求和的每个附加子加法器102而增加一,因为流水线加法器100可以包含流水线附加级(例如,进位链)。因而,由流水线加法器100的延迟链106产生的时延可以随着流水线加法器100的精度的增加而增加。
另外,在一些实施例中,单独计算生成信号(G)和传播信号(P)(例如,用解码器120中的一对子加法器102)可在集成电路器件上消耗相当大的资源(例如,面积、路由、功率和/或类似的)。例如,值3N可以表示诸如图5的重构加法器160的大的N位加法器的算术成本。然而,通过同时计算生成信号和传播信号,N位加法器的算术成本可以被降低到2N,这可以导致集成电路器件的相当大的资源(例如,布局和路由、面积等)和/或性能(例如,时延)益处。因而,在一些实施例中,解码器120可以被重构成同时输出生成信号和传播信号,如图6中所图示的。如图6中所示,接收一对操作数段的每个子加法器102能并行计算并且输出传播和生成信号。
而且,如图7中所图示,在一些实施例中,可以在子加法器102内同时计算传播信号、生成信号以及和中的每一个。因而,在这样的实施例中,一对操作数段的和可以被直接流水线化到对应的最终子加法器102。例如,重构加法器160可以将由第一(右上)子加法器102生成的和路由成经由路由路径210旁路前缀网络162,并且用作第一输出段OUT[31:0]。
重构加法器160可以将由第二(中上)子加法器102生成的和路由成旁路前缀网络162并且用作输入,连同由前缀网络162确定的进位输入值C[31],经由旁路路径220到最终子加法器102。进位信号C[31]可以取决于从第一子加法器102输出的信号G1和P1。像这样,下面的对应的最终子加法器102可以将由第二子加法器102生成的和与进位输入值C[31]相加以生成第二输出段OUT[63:32]。
类似地,重构加法器160可以将由第三(左上)子加法器102生成的和路由成旁路前缀网络162并且用作输入,连同由前缀网络162确定的进位输入值C[63],经由旁路路径222到最终子加法器102。进位信号C[63]可以取决于从第二子加法器102输出的信号G2和P2。像这样,下面的对应的最终子加法器102可以将由第三子加法器102生成的和与进位输入值C[65]相加以生成第三输出段OUT[95:64]。可以以类似的方式生成最后输出段OUT [127:96]。
图7的重构加法器160还可以在每个和旁路路径(例如,路径210、212和214)中包含延迟链106,以将段和延迟适当数量的时钟循环,以补偿前缀网络162的拓扑中的任何流水线延迟。在这样的实施例中,重构加法器160中包含的每个延迟链106可以实现相同的延迟,其等于图7的示例中的两个时钟循环。以这种方式配置和操作,与图5-6的实施例相比,图7的重构加法器160可以用减少的路由来实现,这可以得到更有效的集成电路器件10。
如上所述,图5-7中所示类型的加法器160可用于将两个大输入信号AA和BB在一起求和。按照实施例,这些加法器结构可以被布置为能够将多于两个的非常大输入在一起求和的更大加法器树网络(例如,能用于组合四个非常大整数、六个非常大整数、八个非常大整数、16个非常大整数、32个非常大整数、64个非常大整数或任何合适数量的具有数百或数千位的非常大整数的加法器树结构)的一部分。加法器网络可以使用在本文有时称为“加法器节点”的各个加法器电路单元或块的树形成。
图8A是诸如加法器节点200的加法器节点电路的图解。加法器节点200并不包含图7的所有加法器160。如图8A中所示,加法器节点200仅包含用于生成进位信号的电路(例如,配置成生成进位位C[31]、C[63]和C[95]的前缀网络162)和用于每对操作数段的和的电路(例如,配置成生成AA+BB[31:0]的第一子加法器102-1、配置成生成AA+BB[63:32]的第二子加法器102-2、配置成生成AA+BB[95:64]的第三子加法器102-3以及配置成生成AA+BB[127:96]的第四子加法器102-4)。加法器节点200本身不需要包含用于将段和与关联的进位位组合以产生输出段位OUT的最终子加法器102(参见图7的下半部分)。
图8A的加法器节点200可以如图8B中所示的被抽象。加法器节点200的块301可以包含配置成接收输入位AA[127:0]和BB[127:0]并且输出第一段和AA+BB[31:0]、第二段和AA+BB[63:32]、第三段和AA+BB[95:64]以及第四段和AA+BB[127:96]的所有电路。这些段和的生成可以由子加法器102在一个时钟循环内完成,而关联的进位位的生成可能是由前缀网络的附加延迟引起的三个或更多个时钟循环(如在图8B中由附加延迟元件302表示)。
其中加法器节点200将输入化分成四段并且生成四个对应段和和三个进位位的图8A和8B的示例仅是说明性的,并不意图限制本实施例的范围。一般而言,加法器节点200可以将大输入数字组织成任意数量的段(例如,两个或更多段、四个或更多段、2-8段、8-16段、16-32段、32-64段,或者多于64段),并且加法器节点200内的前缀网络可以生成比段的总数少一个的进位位,因为最高段的进位输出能被忽略。例如,生成八个和段的加法器节点200也将生成七个关联的进位位。作为另一示例,生成16个和段的加法器节点200也将生成15个关联的进位位。
图9是包含多级加法器节点的说明性加法器树电路400的图解。如图9中所示,加法器树网络400可以包含第一层/级加法器节点401-404、第二层/级加法器节点413-414以及仅具有加法器节点420的第三层/级。这些加法器节点401-404、413-414和420可以具有与结合图8A和8B描述的加法器节点200相同的结构和功能。加法器节点401可以配置成接收非常大输入信号AA和BB;加法器节点402可以配置成接收非常大输入信号CC和DD;加法器节点403可以配置成接收非常大输入信号EE和FF;并且加法器节点404可以配置成接收非常大输入信号GG和HH。假定(例如)输入AA、BB、CC、DD、EE、FF、GG和HH中的每个都是128位,并且每个节点将输入位分成四个单独的段,第一个树层中的每个加法器节点也可以输出进位位C[31]、C[63]和C[95]。
第一树层中的加法器节点401-404并行地计算段和和进位位。段和直接馈送到加法器树400中的下一层,同时保持相同的段索引。例如,来自节点401的AA+BB的段和与来自节点402的CC+BB的段和将作为输入直接提供给第二树层中的加法器节点413。类似地,来自节点403的EE+FF的段和与来自节点404的GG+HH的段和将作为输入直接提供给第二树层中的加法器节点414。
另一方面,进位位被单独处置和求和。从第一树层(或一般任何树层)输出的进位位可以按段索引分组并被计数。在图9的示例中,来自加法器节点401-404的进位位C[95]可以被馈送到第一总体计数器410,第一总体计数器410配置成对由与输入索引[95:64]相关联的第三段输出的高进位位的数量进行计数;来自加法器节点401-404的进位位C[63]可以被馈送到第二总体计数器411,第二总体计数器411配置成对由与输入索引[63:32]相关联的第二段输出的高进位位的数量进行计数;并且来自加法器节点401-404的进位位C[31]可以被馈送到第三总体计数器412,第三总体计数器412配置成对由与输入索引[31:0]相关联的第一段输出的高进位位的数量进行计数。由于在第一树层中存在四个加法器节点,因此计数器410-412的输出可以至少是三位宽,以对图9的示例性加法器树400中的最大值4进行编码。
第二树层中的加法器节点413-414也并行地计算段和与进位位。段和直接馈送到加法器树400中的下一层,同时保持相同的段索引。例如,来自节点413的AA+BB+CC+DD的段和与来自节点414的EE+FF+GG+HH的段和将作为输入直接提供给第三树层中的加法器节点420。
另一方面,进位位被单独处置和求和。从第二树层输出的进位位可以按段索引分组并被结算。在图9的示例中,来自加法器节点413和414的进位位C[95]可以被馈送到第四总体计数器421,第四总体计数器421配置成对由与输入索引[95:64]相关联的第三段输出的高进位位的数量进行计数;来自加法器节点413和414的进位位C[63]可以被馈送到第五总体计数器422,第五总体计数器422配置成对由与输入索引[63:32]相关联的第二段输出的高进位位的数量进行计数;并且来自加法器节点413和414的进位位C[31]可以被馈送到第六总体计数器423,第六总体计数器423配置成对由与输入索引[31:0]相关联的第一段输出的高进位位的数量进行计数。由于在第二树层中存在两个附加加法器节点,因此计数器421-423的输出可以至少是三位宽,以对图9的示例性加法器树400中的最大值6进行编码。
来自第二树层的进位计数可以使用加法器424、425和426与来自第一树层的进位计数累加。例如,加法器424可以配置成将来自计数器410和421的值在一起求和,加法器425可以配置成将来自计数器411和422的值在一起求和,并且加法器426可以配置成将来自计数器412和423的值在一起求和。以这种方式配置,加法器424-426可以保持对于每段的高进位位的总结算。
第三树层中的加法器节点420可以组合从加法器节点413提供的和(AA+BB+CC+DD)与从加法器节点414提供的和(EE+FF+GG+HH)以输出四个元素S[4:1]的和向量。和向量S中的每个元素表示对于每段的累积和。比如,向量元素S[4]表示对于索引[127:96]的总和;向量元素S[3]表示对于索引[95:64]的总和;向量元素S[2]表示对于索引[63:32]的总和;以及向量元素S[1]表示对于索引[31:0]的总和。
进位位(像树中的先前层)被单独处置和求和。从第三树层输出的进位位可以按段索引分组,并使用加法器430、431和432与来自先前层的总进位累加。例如,加法器430可以配置成将从节点420输出的C[95]与来自加法器424的值求和以计算总进位C3,加法器431可以配置成将从节点420输出的C[63]与来自加法器425的值求和以计算总进位C2,并且加法器432可以配置成将从节点420输出的C[31]与来自加法器426的值求和以计算总进位C1。以这种方式配置,加法器430-432可以保持对于每段的高进位位的总结算。由于在第三树层中仅存在一个附加加法器节点,因此加法器430-432的输出可以至少是三位宽,以对图9的示例性加法器树400中的最大值7进行编码(例如,总进位C1、C2和C3各可以至少是三位宽)。总进位可以被统称为进位向量[C3:C1]。
要指出,尽管由于通过前缀网络的附加时延导致进位计算的延迟大于段和计算,但是通过树的进位路径的总深度仅每层增加一个循环(假定每个加法器节点的段和延迟是一个时钟循环)。从而,对于大加法器树,由于进位向量独立于和向量生成,所以进位的总延迟将仅略大于加法器缩减树。
其中加法器树400包含用于将八个输入在一起求和的三个树层的图9的示例仅仅是说明性的,并不意图限制本实施例的范围。一般而言,加法器树400可以包含配置成将任何数量的非常大整数在一起求和的任何数量的树层。从树400输出的最终总进位将是某一数量的位(例如,log2(输入数)+log2(层数))。在其中存在64个输入的示例中,需要6个树层,因此进位向量中的每个元素可多达9位宽(即log2(64)+log2(6)=9)
从加法器树网络400输出的和向量S[4:1]与进位向量[C3:C1]可以使用最终加法器层,诸如图10的加法器层440。如图10中所示,最终加法器层440可以类似于图5的加法器160。如图10中所示,和向量元素S1可以被直接传到输出作为最终和输出元素SO1。能使用第一解码器120将和向量元素S2与进位向量元素C1(在最高有效位用零填充)组合以生成和S2’、生成信号G1和传播信号P1。信号G1和P1能使用前缀网络162组合以输出进位C’[1],其然后能使用加法器442与S2’求和以生成最终和输出元素SO2。
能使用第二解码器120将和向量元素S3与进位向量元素C2(在MSB用零填充)组合以生成和S3’、生成信号G2和传播信号P2。信号G2和P2能使用前缀网络162组合以输出进位C’[2],其然后能使用加法器444与S3’求和以生成最终和输出元素SO3。类似地,能使用第三解码器120将和向量元素S4与进位向量元素C3(在MSB用零填充)组合以生成和S4’、生成信号G3和传播信号P3。信号G3和P3能使用前缀网络162组合以输出进位C’[3],其然后能使用加法器446与S4’求和以生成最终和输出元素SO4。以这种方式生成的元素[SO4:SO1]表示最终和输出。
由于树中的所有加法器节点都包括一级的段加法器(例如参见图7,其中能使用单个子加法器102输出生成和传播信号)或两级的段加法器(例如参见图5,其中使用两个子加法器102输出生成和传播信号),因此大加法器电路的整体大小与在如果它由行波进位加法器加上单个大加法器核(例如图10的加法器核440)构成的情况下大致相同,其比用于将大量非常大整数相加在一起的常规加法器架构显著更小且更快。
如果需要,可以进一步优化最终加法器级440。图11A和11B示出了能用于在最终加法器级440中输出生成、传播和和信号的解码器120的不同实现。在图11A的示例中,解码器120’包含单个子加法器102,其能够同时输出传播信号、生成信号与和。这类似于在图7中示出的子加法器。
进位信号通常比段大小短得多,因此全加法器长度对计算生成和传播位不一定需要。图11B示出了改进的解码器120’’,该解码器实现了将进位信号与和段的子集相加的短加法。能用逻辑AND门计算剩余的高位。如图11B所示,第一子加法器102配置成接收S2的较低位和C1。
为了解码生成信号,解码器120’’可以使用第一子加法器102计算由C1与S2的较低位之和得到的进位输出信号。可以使用逻辑AND门460将第一子加法器102的进位输出信号与S2的剩余MSB进行“与”以计算对应的生成信号G1。为了解码传播信号,解码器120可以使用第二子加法器102计算由C1、S2的较低位与进位输入值“1”之和得到的进位输出信号。可以使用逻辑AND门462将第二子加法器102的进位输出信号与S2的剩余MSB进行“与”以计算信号P1’。可以使用逻辑AND门464将信号P1'与G1的反相版本组合以计算传播信号P1。以这种方式配置,门464计算逻辑函数:NOT(G)AND P'。在最终加法器级440中使用解码器120”能在最小化功耗的同时节省电路面积。
图12图示了具有最终加法器层440的加法器树400的逻辑表示。如图12中所示,将与相同索引相关联的所有段相加在一起,而不考虑进位溢出。例如,向量或流水线500表示对与索引[31:0]相关联的所有段求和;向量或流水线501表示对与索引[63:32]相关联的所有段求和;向量或流水线502表示对与索引[95:64]相关联的所有段求和;并且向量/流水线503表示对与索引[127:96]相关联的所有段求和。不同行对应于不同输入操作数对。
如图12中所示,能独立于和段计算进位溢出。例如,块或流水线510表示对所有进位位C[31]求和;块或流水线511表示对所有进位位C[63]求和;以及块/流水线512表示对所有进位位C[95]求和。加法器电路520、521、522和530表示图10的最终加法器级440内的电路。具体地说,加法器520可以表示组合S2和C1的第一解码器,加法器521可以表示组合S3和C2的第二解码器,并且加法器522可以表示组合S4和C3的第三解码器。求和块530可以表示用于计算最终和输出SO的前缀网络162和加法器电路442、444和446。
虽然上述技术参考配置成接收128位输入的加法器节点,所述节点包含流水线化在一起的四个32位子加法器102,但是较大树网络中的每个加法器节点可以可选地以更大精度(诸如1024位加法器节点和/或其他合适的大小)实现。在这种情况下,加法器节点可以被分解为更多数量的子加法器102,诸如32个32位子加法器102。附加地或备选地,可以增加或减少操作数段和/或子加法器102的精度,并且在一些实施例中,可以部分地基于集成电路器件10的精度来确定操作数段和/或子加法器102的精度。在任何情况下,本文描述的示例意图是说明性而非限制的。
图13是按照实施例的数据处理系统的图解。包含结合图1-12描述的类型的非常大加法器电路的集成电路器件10可以是数据处理系统或可以是数据处理系统的组件。例如,集成电路器件10可以是图13中所示的数据处理系统92的组件。数据处理系统92可以包含主机处理器80、存储器和/或存储电路82、输入-输出(I/O)电路84和外围装置86。这些组件通过系统总线88耦合在一起。
数据处理系统92可以包含更多或更少的组件(例如,电子显示器、用户界面结构、专用集成电路(ASIC))。主机处理器80可以包含任何合适的处理器,诸如INTEL®Xeon®处理器或精简指令处理器(例如精简指令集计算机(RISC)、高级RISC机器(ARM)处理器等),其可管理对于数据处理系统92的数据处理请求(例如,以执行加密、解密、机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式识别、空间导航等)。
存储器和/或存储电路82可以包含随机存取存储器(RAM)、只读存储器(ROM)、一个或多个硬盘驱动器、闪存或用于存储数据、程序代码或者要由数据处理系统92处理的其他数据的任何合适类型的计算机可读介质。在一些情况下,存储器和/或存储电路82还可以存储用于对集成电路器件10编程的配置程序(位流)。输入输出装置84、外围装置86和其他网络接口组件可以允许数据处理系统92与其他电子装置通信。数据处理系统320 92包含若干不同的封装,或者可以被含有在单个封装衬底上的单个封装内。
在一个示例中,数据处理系统92可以是处理各种不同请求的数据中心的一部分。比如,数据处理系统92可以接收数据处理请求以执行加密、解密、机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式识别、空间导航或一些其他专业任务。主机处理器80可以使装置10的可编程逻辑组构用适合于实现所请求任务的加法器编程。比如,主机处理器80可以指示存储在存储器和/或存储电路82上的配置数据(位流)被编程到装置10的可编程逻辑组构中。配置数据(位流)可以表示用于大加法器的电路设计,诸如加法器树400,其可以根据本文描述的技术被映射到可编程逻辑,以有效地执行和/或计算所请求的任务。
作为其他示例,系统92还可以是计算机连网系统、数据连网系统、数字信号处理系统、图形处理系统、视频处理系统、计算机视觉处理系统、蜂窝基站、虚拟现实或扩增现实系统、网络功能虚拟化平台、人工神经网络、自主驾驶系统、这些系统中的至少一些的组合和/或其他合适类型的计算系统。
示例:
以下示例涉及另外的实施例。
示例1是一种加法器电路,包括以树状布置耦合在一起的多个加法器节点电路,其中加法器节点电路配置成:接收输入信号;将输入信号分离成不同段;计算不同段的和;以及计算至少一些段的进位,其中所述进位独立于所述和计算。
示例2是示例1的加法器电路,其中每个所述输入信号包含至少100位。
示例3是示例1的加法器电路,其中每个所述输入信号包含至少1000位。
示例4是示例1-3中任一示例的加法器电路,其中每个所述加法器节点电路配置成将所述输入信号分离成N个不同的段,并且进一步配置成输出(N-1)个进位。
示例5是示例1-4中任一示例的加法器电路,其中每个所述加法器节点电路包括:解码器电路,配置成输出生成和传播信号;以及前缀网络,配置成从解码器电路接收生成和传播信号,并计算对应的进位。
示例6是示例1-5中任一示例的加法器电路,其中在已经计算了所述和之后计算所述进位。
示例7是示例1-6中任一示例的加法器电路,进一步包括:计数器电路,配置成结算从所述多个加法器节点电路中的不同加法器节点电路接收的进位的数量。
示例8是示例1-7中任一示例的加法器电路,其中所述多个加法器节点电路配置成输出和向量和进位向量。
示例9是示例8的加法器电路,进一步包括:最终加法器级,配置成组合所述和向量与所述进位向量。
示例10是示例9的加法器电路,其中最终加法器级包括:解码器电路,配置成输出生成和传播信号以及和信号;以及前缀网络,配置成从解码器电路接收生成和传播信号,并计算附加的进位信号。
示例11是示例10的加法器电路,其中最终加法器级进一步包括:加法器,配置成从所述前缀网络接收所述附加进位信号并从所述解码器电路接收所述和信号以生成最终和输出。
示例12是示例10的加法器电路,其中每个所述解码器电路包含两个子加法器和逻辑门,所述逻辑门配置成输出所述生成和传播信号。
示例13是示例10的加法器电路,其中每个所述解码器电路包含单个子加法器,所述单个子加法器配置成同时输出所述生成和传播信号。
示例14是示例10的加法器电路,其中至少一个所述解码器电路配置成从所述进位向量接收进位元素并从所述和向量接收和元素,其中所述至少一个所述解码器电路包括子加法器,所述子加法器接收所述进位元素以及所述和元素的第一子集,并且其中所述至少一个所述解码器电路进一步包括逻辑门,所述逻辑门配置成从所述子加法器接收进位以及与所述第一子集不重叠的所述和元素的第二子集。
示例15是一种加法器电路,包括:加法器节点的树,其中树中的第一层包括:第一加法器节点,配置成接收输入操作数,将输入操作数分离成段,并且并行计算每个所述段的和,其中第一加法器节点进一步配置成输出用于所述段的子集的进位位。
示例16是示例15的加法器电路,进一步包括:计数器,配置成结算从所述第一加法器节点输出的高进位位的总数。
示例17是示例16的加法器电路,其中树中的第二层包括:第二加法器节点,配置成从所述第一层接收和,其中所述第二加法器节点进一步配置成输出附加进位位。
示例18是示例17的加法器电路,进一步包括:附加计数器,配置成结算从第二加法器节点输出的高进位位的总数;以及加法器,配置成将从计数器和附加计数器输出的值在一起求和。
示例19是一种加法器电路,包括:第一段流水线,配置成输出第一段和;第二段流水线,配置成输出第二段和;第一进位流水线,配置成独立于第一段和的计算输出第一进位信号;第二进位流水线,配置成独立于第二段和的计算输出第二进位信号;以及求和电路,配置成组合第一段和、第二段和、第一进位信号和第二进位信号以生成最终和输出。
示例20是示例19的加法器电路,其中求和电路包括:解码器电路,配置成接收第一段和、第二段和、第一进位信号和第二进位信号,并输出对应的生成和传播信号;以及前缀网络,配置成从解码器电路接收生成和传播信号,其中前缀网络包括Kogge-Stone拓扑、Brent-Kung拓扑、Sklansky拓扑或其组合。
本发明还提供如下技术方案:
技术方案1. 一种加法器电路,包括:
以树状布置耦合在一起的多个加法器节点电路,其中所述加法器节点电路配置成:
接收输入信号;
将所述输入信号分离成不同段;
计算所述不同段的和;以及
计算至少一些所述段的进位,其中所述进位独立于所述和被计算。
技术方案2. 如技术方案1所述的加法器电路,其中每个所述输入信号包含至少100位。
技术方案3. 如技术方案1所述的加法器电路,其中每个所述输入信号包含至少1000位。
技术方案4. 如技术方案1所述的加法器电路,其中每个所述加法器节点电路配置成将所述输入信号分离成N个不同的段,并且进一步配置成输出(N-1)个进位。
技术方案5. 如技术方案1所述的加法器电路,其中每个所述加法器节点电路包括:
解码器电路,所述解码器电路配置成输出生成和传播信号;以及
前缀网络,所述前缀网络配置成从所述解码器电路接收所述生成和传播信号,并计算对应的进位。
技术方案6. 如技术方案1所述的加法器电路,其中在已经计算了所述和之后计算所述进位。
技术方案7. 如技术方案1所述的加法器电路,进一步包括:计数器电路,所述计数器电路配置成结算从所述多个加法器节点电路中的不同加法器节点电路接收的进位的数量。
技术方案8. 如技术方案1所述的加法器电路,其中所述多个加法器节点电路配置成输出和向量和进位向量。
技术方案9. 如技术方案8所述的加法器电路,进一步包括:
最终加法器级,所述最终加法器级配置成组合所述和向量与所述进位向量。
技术方案10. 如技术方案9所述的加法器电路,其中所述最终加法器级包括:
解码器电路,所述解码器电路配置成输出生成和传播信号与和信号;以及
前缀网络,所述前缀网络配置成从所述解码器电路接收所述生成和传播信号,并计算附加的进位信号。
技术方案11. 如技术方案10所述的加法器电路,其中所述最终加法器级进一步包括:
加法器,所述加法器配置成从所述前缀网络接收所述附加进位信号并从所述解码器电路接收所述和信号以生成最终和输出。
技术方案12. 如技术方案10所述的加法器电路,其中每个所述解码器电路包含两个子加法器和逻辑门,所述逻辑门配置成输出所述生成和传播信号。
技术方案13. 如技术方案10所述的加法器电路,其中每个所述解码器电路包含单个子加法器,所述单个子加法器配置成同时输出所述生成和传播信号。
技术方案14. 如技术方案10所述的加法器电路,其中至少一个所述解码器电路配置成从所述进位向量接收进位元素并从所述和向量接收和元素,其中所述至少一个所述解码器电路包括子加法器,所述子加法器接收所述进位元素以及所述和元素的第一子集,并且其中所述至少一个所述解码器电路进一步包括逻辑门,所述逻辑门配置成从所述子加法器接收进位以及与所述第一子集不重叠的所述和元素的第二子集。
技术方案15. 一种加法器电路,包括:
加法器节点树,其中所述树中的第一层包括:
第一加法器节点,所述第一加法器节点配置成接收输入操作数,将所述输入操作数分离成段,并且并行计算每个所述段的和,其中所述第一加法器节点进一步配置成输出所述段的子集的进位位。
技术方案16. 如技术方案15所述的加法器电路,进一步包括:
计数器,所述计数器配置成结算从所述第一加法器节点输出的高进位位的总数。
技术方案17. 如技术方案16所述的加法器电路,其中所述树中的第二层包括:
第二加法器节点,所述第二加法器节点配置成从所述第一层接收所述和,其中所述第二加法器节点进一步配置成输出附加进位位。
技术方案18. 如技术方案17所述的加法器电路,进一步包括:
附加计数器,所述附加计数器配置成结算从所述第二加法器节点输出的高进位位的总数;以及
加法器,所述加法器配置成将从所述计数器和所述附加计数器输出的值在一起求和。
技术方案19. 一种加法器电路,包括:
第一段流水线,所述第一段流水线配置成输出第一段和;
第二段流水线,所述第二段流水线配置成输出第二段和;
第一进位流水线,所述第一进位流水线配置成独立于所述第一段和的计算来输出第一进位信号;
第二进位流水线,所述第二进位流水线配置成独立于所述第二段和的计算来输出第二进位信号;以及
求和电路,所述求和电路配置成组合所述第一段和、所述第二段和、所述第一进位信号和所述第二进位信号以生成最终和输出。
技术方案20. 如技术方案19所述的加法器电路,其中所述求和电路包括:
解码器电路,所述解码器电路配置成接收所述第一段和、所述第二段和、所述第一进位信号和所述第二进位信号,并输出对应的生成和传播信号;以及
前缀网络,所述前缀网络配置成从所述解码器电路接收所述生成和传播信号,其中所述前缀网络包括Kogge-Stone拓扑、Brent-Kung拓扑、Sklansky拓扑或其组合。
比如,上面描述的设备的所有可选特征也可以相对于本文描述的方法或过程来实现。前述内容仅仅是此公开原理的说明,本领域技术人员能进行各种修改。前述实施例可单独实现或以任何组合实现。

Claims (23)

1.一种加法器电路,包括:
以树状布置耦合在一起的多个加法器节点电路,其中所述加法器节点电路配置成:
接收输入信号;
将所述输入信号分离成不同段;
计算所述不同段的和;以及
计算至少一些所述段的进位,其中所述进位独立于所述和被计算。
2.如权利要求1所述的加法器电路,其中每个所述输入信号包含至少100位。
3.如权利要求1所述的加法器电路,其中每个所述输入信号包含至少1000位。
4.如权利要求1所述的加法器电路,其中每个所述加法器节点电路配置成将所述输入信号分离成N个不同的段,并且进一步配置成输出(N-1)个进位。
5.如权利要求1所述的加法器电路,其中每个所述加法器节点电路包括:
解码器电路,所述解码器电路配置成输出生成和传播信号;以及
前缀网络,所述前缀网络配置成从所述解码器电路接收所述生成和传播信号,并计算对应的进位。
6.如权利要求1所述的加法器电路,其中在已经计算了所述和之后计算所述进位。
7.如权利要求1所述的加法器电路,进一步包括:计数器电路,所述计数器电路配置成结算从所述多个加法器节点电路中的不同加法器节点电路接收的进位的数量。
8.如权利要求1-7中任一项所述的加法器电路,其中所述多个加法器节点电路配置成输出和向量和进位向量。
9.如权利要求8所述的加法器电路,进一步包括:
最终加法器级,所述最终加法器级配置成组合所述和向量和所述进位向量。
10.如权利要求9所述的加法器电路,其中所述最终加法器级包括:
解码器电路,所述解码器电路配置成输出生成和传播信号和和信号;以及
前缀网络,所述前缀网络配置成从所述解码器电路接收所述生成和传播信号,并计算附加进位信号。
11.如权利要求10所述的加法器电路,其中所述最终加法器级进一步包括:
加法器,所述加法器配置成从所述前缀网络接收所述附加进位信号并从所述解码器电路接收所述和信号以生成最终和输出。
12.如权利要求10所述的加法器电路,其中每个所述解码器电路包含两个子加法器和逻辑门,所述逻辑门配置成输出所述生成和传播信号。
13.如权利要求10所述的加法器电路,其中每个所述解码器电路包含单个子加法器,所述单个子加法器配置成同时输出所述生成和传播信号。
14.如权利要求10所述的加法器电路,其中至少一个所述解码器电路配置成从所述进位向量接收进位元素并从所述和向量接收和元素,其中所述至少一个所述解码器电路包括子加法器,所述子加法器接收所述进位元素以及所述和元素的第一子集,并且其中所述至少一个所述解码器电路进一步包括逻辑门,所述逻辑门配置成从所述子加法器接收进位以及与所述第一子集不重叠的所述和元素的第二子集。
15.一种加法器电路,包括:
加法器节点树,其中所述树中的第一层包括:
第一加法器节点,所述第一加法器节点配置成接收输入操作数,将所述输入操作数分离成段,并且并行计算所述段的每个段的和,其中所述第一加法器节点进一步配置成输出所述段的子集的进位位。
16.如权利要求15所述的加法器电路,进一步包括:
计数器,所述计数器配置成结算从所述第一加法器节点输出的高进位位的总数。
17.如权利要求16所述的加法器电路,其中所述树中的第二层包括:
第二加法器节点,所述第二加法器节点配置成从所述第一层接收所述和,其中所述第二加法器节点进一步配置成输出附加进位位。
18.如权利要求17所述的加法器电路,进一步包括:
附加计数器,所述附加计数器配置成结算从所述第二加法器节点输出的高进位位的总数。
19.如权利要求18所述的加法器电路,进一步包括:
加法器,所述加法器配置成将从所述计数器和所述附加计数器输出的值在一起求和。
20.一种加法器电路,包括:
第一段流水线,所述第一段流水线配置成输出第一段和;
第二段流水线,所述第二段流水线配置成输出第二段和;
第一进位流水线,所述第一进位流水线配置成独立于所述第一段和的计算来输出第一进位信号;以及
第二进位流水线,所述第二进位流水线配置成独立于所述第二段和的计算来输出第二进位信号。
21.如权利要求20所述的加法器电路,进一步包括:
求和电路,所述求和电路配置成组合所述第一段和、所述第二段和、所述第一进位信号和所述第二进位信号以生成最终和输出。
22.如权利要求21所述的加法器电路,其中所述求和电路包括:
解码器电路,所述解码器电路配置成接收所述第一段和、所述第二段和、所述第一进位信号和所述第二进位信号,并输出对应的生成和传播信号。
23.如权利要求22所述的加法器电路,其中所述求和电路进一步包括:
前缀网络,所述前缀网络配置成从所述解码器电路接收所述生成和传播信号,其中所述前缀网络包括Kogge-Stone拓扑、Brent-Kung拓扑、Sklansky拓扑或其组合。
CN201910505505.6A 2018-07-12 2019-06-12 用于非常大整数的加法器电路 Pending CN110716708A (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/206,748 US10873332B2 (en) 2018-07-12 2018-11-30 Adder circuitry for very large integers
US16/206748 2018-11-30

Publications (1)

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

Family

ID=65231569

Family Applications (3)

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

Family Applications After (2)

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 前缀网络定向的加法

Country Status (2)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111522527A (zh) * 2020-05-09 2020-08-11 支付宝(杭州)信息技术有限公司 防止数据寄存器饱和溢出的方法、装置及电子设备

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 大陸商珠海南北極科技有限公司 累加電路
US11620106B1 (en) * 2020-12-16 2023-04-04 The United States Of America As Represented By The Secretary Of The Navy Parallel hybrid adder
CN116029238B (zh) * 2023-03-27 2023-06-16 中科亿海微电子科技(苏州)有限公司 一种对加法器进行时序分析的方法及装置

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
WO2001046795A2 (en) * 1999-12-23 2001-06-28 Intel Corporation Method and apparatus for performing single-cycle addition or subtraction and comparison in redundant form arithmetic
US6539413B1 (en) * 2000-03-15 2003-03-25 Agere Systems Inc. Prefix tree adder with efficient sum generation
US7155473B2 (en) * 2000-07-21 2006-12-26 Utstarcom, 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 (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111522527A (zh) * 2020-05-09 2020-08-11 支付宝(杭州)信息技术有限公司 防止数据寄存器饱和溢出的方法、装置及电子设备
CN111522527B (zh) * 2020-05-09 2022-04-29 支付宝(杭州)信息技术有限公司 防止数据寄存器饱和溢出的方法、装置及电子设备

Also Published As

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

Similar Documents

Publication Publication Date Title
US11662979B2 (en) Adder circuitry for very large integers
US11899746B2 (en) Circuitry for high-bandwidth, low-latency machine learning
US11301213B2 (en) Reduced latency multiplier circuitry for very large numbers
US11907719B2 (en) FPGA specialist processing block for machine learning
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
EP4155901A1 (en) Systems and methods for sparsity operations in a specialized processing block
US20210326116A1 (en) High precision decomposable dsp entity
EP4350990A1 (en) Flexible circuit for real and complex filter operations
US11768661B2 (en) Efficient logic blocks architectures for dense mapping of multipliers
US20240118870A1 (en) Digital Signal Processing Circuitry with Multiple Precisions and Dataflows
US20230239136A1 (en) Pipelined Galois Counter Mode Hash Circuit
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