CN109643227B - 可变精度浮点乘法器 - Google Patents
可变精度浮点乘法器 Download PDFInfo
- Publication number
- CN109643227B CN109643227B CN201780051875.6A CN201780051875A CN109643227B CN 109643227 B CN109643227 B CN 109643227B CN 201780051875 A CN201780051875 A CN 201780051875A CN 109643227 B CN109643227 B CN 109643227B
- Authority
- CN
- China
- Prior art keywords
- multiplier
- exponent
- circuit module
- circuit
- output
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 239000013598 vector Substances 0.000 claims description 10
- 238000010606 normalization Methods 0.000 claims description 7
- 238000012545 processing Methods 0.000 abstract description 27
- 238000010586 diagram Methods 0.000 description 20
- 239000004020 conductor Substances 0.000 description 7
- 238000001342 constant potential amperometry Methods 0.000 description 5
- 238000000034 method Methods 0.000 description 5
- 238000007792 addition Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 101100484379 Fowlpox virus (strain NVSL) FPV060 gene Proteins 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 241001673391 Entandrophragma candollei Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- ORQBXQOJMQIAOY-UHFFFAOYSA-N nobelium Chemical compound [No] ORQBXQOJMQIAOY-UHFFFAOYSA-N 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/487—Multiplying; Dividing
- G06F7/4876—Multiplying
-
- 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/485—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3812—Devices capable of handling different types of numbers
- G06F2207/3816—Accepting numbers of variable word length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3812—Devices capable of handling different types of numbers
- G06F2207/382—Reconfigurable for different fixed word lengths
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/483—Indexing scheme relating to group G06F7/483
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Nonlinear Science (AREA)
- General Engineering & Computer Science (AREA)
- Analogue/Digital Conversion (AREA)
- Complex Calculations (AREA)
- Logic Circuits (AREA)
Abstract
提供具有专用处理块的集成电路。专用处理块可包括浮点乘法器电路,其能够配置成支持可变精度。乘法器电路可包括第一进位传播加法器(CPA)、第二进位传播加法器(CPA)和关联的舍入电路。第一CPA可以足够宽以操控尾数的所要求精度。在桥接模式,第一CPA可从第二CPA借用附加位,而舍入电路将监测适当位以选择适当乘法器输出。在非桥接模式或桥接模式可操作的并行前缀树可用来计算多个乘法器输出。乘法器电路还可包括使用与预期精度宽度对应的各种掩码的指数和异常操控电路。
Description
本申请要求2016年8月22日提交的申请号为15/242923的美国专利申请的优先权,由此通过引用将其整体结合到本文中。
背景
本发明一般涉及集成电路,以及特别涉及具有乘法器电路的集成电路。
可编程逻辑装置(PLD)包括逻辑电路,例如查找表(LUT)和基于积和(sum-of-product)的逻辑,其设计成允许用户对用户的特定需要来定制电路。这个可配置逻辑通常分为单独逻辑电路,其称作逻辑元件(LE)。LE可一起编组以形成更大逻辑块(称作逻辑阵列块(LAB)),其可配置成共享相同资源(例如寄存器和存储器)。除了这个可配置逻辑之外,PLD还包括可编程互连或路由选择电路,其用来连接LE和LAB的输入和输出。这个可编程逻辑和路由选择电路的组合称作软逻辑。
除了软逻辑之外,PLD还可包括专用处理块,其实现特定预定义逻辑功能,并且因而不能由用户来配置。这类专用处理块可包括电路在PLD上的集中,其已经被部分或完全硬连线以执行一个或多个特定任务(例如逻辑或数学操作)。在这类专用处理块中通常实现的结构的示例包括:乘法器、算术逻辑单元(ALU)、桶式移位器、各种存储器元件(例如FIFO/LIFO/SIPO/RAM/ROM/CAM块和寄存器堆)、逻辑AND/NAND/OR/NOR阵列等、或者其组合。
PLD上已经提供的一种特别有用类型的专用处理块是数字信号处理(DSP)块。常规DSP块包括两个18×19乘法器,其能够与其他内部电路相结合,以充当27×27乘法器。27×27乘法器用作IEEE 754单精度浮点乘法器的部分,其要求23位的精度。DSP块还能够使用两个18×19乘法器来支持两个单独乘法操作。可期望将DSP配置成支持大范围的中间精度,以帮助改进DSP块的功能密度。
本文所述的实施例在这个上下文内发生。
发明内容
提供包括专用处理块(有时称作数字信号处理块)的可编程集成电路。专用处理块可包括乘法器电路。乘法器电路可包括第一进位传播加法器(CPA)、第二CPA以及关联的舍入电路,其接收来自第一和第二CPA两者的信号。具体来说,第一和第二加法器可用来在第一模式期间生成具有第一精度的第一浮点乘法器输出,并且在第二模式期间生成具有与第一精度不同的第二精度的第二浮点乘法器输出。
乘法器可用来将第一CPA的所选最高有效位路由选择到舍入电路。舍入电路还可接收第一CPA的最高有效位(MSB)的进位信号。在第一模式,舍入电路可接收直接来自第一CPA的两个最低有效位(LSB)。但是在第二模式,舍入电路可接收来自加法器电路(其接收第一CPA的LSB以及来自第二CPA的MSB的进位信号)的第一位以及直接来自第二CPA的MSB的第二位。
按照另一个实施例,乘法器电路还可包括指数操控电路。指数操控电路可包括输入加法器电路、减法电路和输出加法器电路。输入加法器电路可接收第一指数信号和第二指数信号,并且可输出第一输出。减法电路可接收来自输入加法器电路的第一输出,接收可调整偏置值,并且生成第二输出。可调整偏置值根据所接收第一和第二指数信号的精度而改变。输出加法器电路可接收第二输出以及还接收可调整规格化值。规格化值可取决于第一与第二CPA之间的舍入位置来改变。
按照又一个适当实施例,乘法器电路还可包括异常操控电路,以用于监测指数和尾数位两者。异常操控电路可包括:逻辑AND掩码,其处理指数/尾数位的MSB;以及逻辑OR门,其接收来自逻辑AND掩码(其直接接收指数/尾数位的LSB,以确定是否已经检测到零值)的信号。指数操控电路还可包括:逻辑OR掩码,其处理指数/尾数位的MSB;以及逻辑AND门,其接收来自逻辑OR掩码(其直接接收指数/尾数位的LSB,以确定是否已经检测到最大值)的信号。
由附图和下列详细描述,本发明的其他特征、其性质和各种优点将是更加显而易见的。
附图说明
图1是按照实施例、具有专用处理块的说明性集成电路的简图。
图2是示出按照实施例、专用处理块可如何包括两个或更多乘法器电路的简图。
图3是示出按照实施例、能够使用图2的乘法器电路来支持的不同精度的简图。
图4是示出按照实施例、乘法器电路可如何包括进位传播加法器电路的简图。
图5是按照实施例、能够配置成支持多个尾数大小的说明性进位传播加法器和关联的舍入电路的简图。
图6是按照实施例、能够配置成支持扩大尾数宽度的说明性进位传播加法器和关联的舍入电路的简图。
图7A-7C是按照实施例、能够用来生成总和输出的说明性加法器电路的简图。
图8是按照实施例、能够用来生成第一递增总和输出的说明性加法器电路的简图。
图9是按照实施例、能够用来生成第二递增总和输出的说明性加法器电路的简图。
图10是按照实施例、能够用来生成第一递增总和输出的说明性桥接加法器电路的简图。
图11是按照实施例、能够用来生成第二递增总和输出的说明性桥接加法器电路的简图。
图12是按照实施例、能够用来生成第一递增总和输出的说明性可配置加法器电路的简图。
图13是按照实施例、能够用来生成第二递增总和输出的说明性可配置加法器电路的简图。
图14是按照实施例的说明性指数操控电路的简图。
图15是按照实施例的说明性异常操控电路的简图。
具体实施方式
本文所提供的实施例涉及集成电路,以及更特别涉及集成电路上的乘法器。
本领域的技术人员将会承认,在没有这些具体细节的一些或全部的情况下也可实践本示范实施例。在其他实例中,还没有详细描述众所周知的操作,以免不必要地模糊对本实施例的理解。
图1中示出具有示范互连电路的集成电路(例如可编程逻辑装置(PLD)100)的说明性实施例。如图1所示,可编程逻辑装置(PLD)可包括功能块的二维阵列,包括逻辑阵列块(LAB)110和其他功能块,例如随机存取存储器(RAM)块130和专用处理块(例如专用处理块(SPB)120)。功能块(例如LAB 110)可包括较小可编程区域(例如逻辑元件、可配置逻辑块或自适应逻辑模块),其接收输入信号,并且对输入信号执行定制功能,以产生输出信号。
可编程逻辑装置100可包含可编程存储器元件。存储器元件可使用输入/输出元件(IOE)102来加载有配置数据(又称作编程数据)。一旦被加载,存储器元件各自提供对应静态控制信号,其控制关联的功能块(例如LAB 110、SPB 120、RAM 130或输入/输出元件102)的操作。
在典型情形中,所加载存储器元件的输出施加到功能块中的金属氧化物半导体晶体管的栅极,以接通或关断某些晶体管,并且由此配置包括路由选择路径的功能块中的逻辑。可按照这种方式来控制的可编程逻辑电路元件包括乘法器(例如用于形成互连电路中的路由选择路径的乘法器)、查找表、逻辑阵列、AND、OR、NAND和NOR逻辑门、通过门(passgate)等的部分。
存储器元件可使用任何适当易失性和/或非易失性存储器结构,例如随机存取存储器(RAM)单元、熔丝、反熔丝、可编程只读存储器存储器单元、掩码编程和激光编程结构、机械存储器装置(例如包括定域机械谐振器)、机械操作RAM(MORAM)、这些结构的组合等。因为存储器元件在编程期间加载有配置数据,所以存储器元件有时称作配置存储器、配置RAM(CRAM)、配置存储器元件或可编程存储器元件。
另外,可编程逻辑装置可具有输入/输出元件(IOE)102,以用于驱动信号离开装置100并且用于接收来自其他装置的信号。输入/输出元件102可包括并行输入/输出电路、串行数据收发器电路、差分接收器和发射器电路或者用来将一个集成电路连接到另一个集成电路的其他电路。如所示,输入/输出元件102可位于芯片周边周围。如果期望,可编程逻辑装置可具有按照不同方式所布置的输入/输出元件102。例如,输入/输出元件102可形成一列或多列输入/输出元件,其可位于可编程逻辑装置上的任何地方(例如均匀地跨PLD的宽度分布)。如果期望,输入/输出元件102可形成一行或多行输入/输出元件(例如跨PLD的高度分布)。备选地,输入/输出元件102可形成可分布于PLD的表面或者在所选区域中群集的输入/输出元件的孤岛。
PLD还可包括可编程互连电路,其采取垂直路由选择通道140(即,沿PLD 100的垂直轴所形成的互连)和水平路由选择通道150(即,沿PLD 100的水平轴所形成的互连)的形式,每个路由选择通道包括路由选择至少一个导线的至少一个轨道。如果期望,互连电路可包括双倍数据速率互连和/或单数据速率互连。
如果期望,路由选择导线可比路由选择通道的整个长度要短。长度L导线可跨越L个功能块。例如,长度四导线可跨越四个块。水平路由选择通道中的长度四导线可称作“H4”导线,而垂直路由选择通道中的长度四导线可称作“V4”导线。
不同PLD可具有不同功能块,其连接到不同数量的路由选择通道。三边路由选择架构在图1中描绘,其中输入和输出连接存在于到路由选择通道的每个功能块的三边。其他路由选择架构也预计包含在本发明的范围之内。其他路由选择架构的示例包括1边、边、2边和4边路由选择架构。
在直接驱动路由选择架构中,每个导线由驱动器在单个逻辑点来驱动。驱动器可与复用器关联,复用器选择要在导线上驱动的信号。在沿其长度具有固定数量的导线的通道的情况下,驱动器可放置在导线的每个起始点。
要注意,除了图1所示互连电路的拓扑之外,其他路由选择拓扑也预计包含在本发明的范围之内。例如,路由选择拓扑可包括沿其广度(extent)的不同部分的对角导线、水平导线和垂直导线以及在三维集成电路的情况下与装置平面垂直的导线,以及导线的驱动器可位于与导线的一端不同的点。路由选择拓扑可包括全局导线(其跨越PLD 100的基本上全部)、部分全局导线(例如跨越PLD 100的部分的导线)、特定长度的交错导线、较小局部导线、或者任何其他适当互连资源布置。
此外应当理解,实施例可在任何集成电路中实现。如果期望,这种集成电路的功能块可在更多级或层中布置,其中多个功能块被互连以形成仍更大的块。其他装置布置可使用不是布置成行或列的功能块。
图2是示出按照实施例、专用处理块可如何包括两个或更多乘法器电路的简图。如图2所示,专用处理块(有时称作数字信号处理块或“DSP”块)可包括至少第一乘法器电路200-1和第二乘法器电路200-2。作为示例,乘法器电路200-1和200-2各自可以是18×19乘法器电路,其能够共同用来支持IEEE 754单精度浮点乘法操作。
浮点数常用于在计算系统的科学计数法中表示实数,并且设计成覆盖大的数值范围和多样精度要求。IEEE 754标准常用于浮点数。浮点数包括三个不同部分:(1)浮点数的符号,(2)尾数,以及(3)指数。这些部分的每个可通过二进制数来表示,以及按照IEEE 754格式具有取决于精度的不同位大小。例如,单精度浮点数要求32位,其分布如下:1个符号位(位32),8个指数位(位[31:24]),以及23个尾数位(位[23:1])。双精度浮点数要求64位,包括1个符号位(位64),11个指数位(位[63:53])以及52个尾数位(位[52:1])。
按照标准IEEE 754的浮点数的符号使用单个位来表示,其中“0”表示正数,以及“1”表示负数。
浮点数的指数优选地是无符号二进制数,其对于单精度格式的范围是从0至255。为了表示极小数,需要使用负指数。因此,指数优选地具有负偏置。对于单精度浮点数,偏置优选地为-127。例如,指数的140的值实际表示(140-127) = 13,以及100的值表示(100-127) = -27。对于双精度数,指数偏置优选地为-1023。
如上所述,按照IEEE 754标准,尾数是规格化的数(即,它没有前导零,并且表示浮点数的精度分量)。因为尾数按照二进制格式存储,所以前导位能够为0或者1,但是对于规格化的数,它将始终为1。因此,在始终规格化的数值的系统中,前导位无需被存储而是能够隐含,有效地给予尾数一个额外位的精度。因此,单精度格式有效地具有24位的精度(即,23个尾数位加一个隐含位)。
仍然参照图2,专用处理块120内的乘法器电路200-1和200-2可与其他内部电路相结合,以形成27×27乘法器,其能够用来有效地支持单精度浮点算术。如IEEE 754标准所定义的单精度浮点算术可称作“FP32”,因为单精度浮点数要求32位(参见例如图3的表300中的第一行)。
对于包括机器学习应用的某些应用(例如卷积神经网络(CNN)),如果DSP块120内的两个乘法器200单独用来支持“FP16”算术(其涉及具有1个符号位、5个指数位和10个尾数位的浮点数),则可以是更为有效的。
包含隐含前导位,FP16有效地具有11位尾数。
按照实施例,乘法器200可以不仅配置成支持FP32和FP16,而且还可配置成支持大范围的中间大小(例如FP17、FP18、FP20等)。按照这种方式所配置,DSP 120能够支持相对于FP32操作的两倍功能密度。如图3所示,FP17可涉及具有1个符号位、5个指数位和11个尾数位的浮点数;FP18可涉及具有1个符号位、5个指数位和12个尾数位的浮点数;以及FP20可涉及具有1个符号位、5个指数位和14个尾数位的浮点数(作为示例)。
如表300所示分配给指数和尾数部分的位数只是说明性的,而不是用来限制本实施例。如果期望,各种浮点格式的每个的指数可多于或少于5位,以及尾数位数可基于指数来调整。
图4是示出乘法器电路200(例如图2的乘法器电路200-1和/或200-2)的一个适当实现的简图。如图4所示,乘法器电路200可包括部分乘积生成器(例如部分乘积生成器400)、压缩器树(例如压缩器树电路402)和进位传播加法器(CPA)(例如CPA电路404)。乘法器200可接收两个输入数X和Y以便一起相乘。部分乘积生成器400可接收输入数X和Y,并且输出n个对应部分乘积。
压缩器树402可接收来自部分乘积生成器400的n个部分乘积,并且输出第一总和/进位向量A和第二总和/进位向量B。进位传播加法器404可接收向量A和B,并且可配置成计算第一结果(其等于A和B之和)、第二结果(其等于A、B和一之和)以及第三结果(其等于A、B和二之和)。这三个结果的所选结果可基于向量A和B的加法中的最低有效位(LSB)的舍入来输出。
如上所述,每个乘法器200可以是18×19乘法器,其能够支持总共37个分数位。图5示出CPA电路404可如何分解为两个部分:(1)下23位进位传播加法器500以及(2)上14位进位传播加法器502。下CPA 500与上CPA 502之间的边界划分FP32的标称舍入位置,如虚线590所示。为了效率目的,可期望也将可变乘法器(variable multiplier)200的舍入位置映射到这个预定位置,使得FP32舍入逻辑(其在将定点乘法转换为浮点乘法时占据逻辑中的增加的大多数)全部能够再使用。
因此,为了支持FP16,10位尾数可映射到位[33:24],其中第34位是隐含一位,并且其中第35位指示规格化的数是否实际大于或等于二。类似地,可通过将11位尾数映射到位[34:24]来支持FP17,其中第35位是隐含一位,并且其中第36位指示规格化的数是否实际大于或等于二。作为又一个示例,可通过将12位尾数映射到位[35:24]来支持FP18,其中第36位是隐含的一位,并且其中第37位指示规格化的数是否实际大于或等于二。
要注意,在这个具体示例中,CPA 502只能够支持总共最大12位尾数,因为CPA 502在乘法器200单独使用时不能扩展到超过第37位位置(例如,CPA 502只能够在用来支持FP32时扩展到超过第37位,因为两种乘法器200-1和200-2相结合)。如果期望,如果FP20修改成包含1个符号位、七个指数位以及仅12个尾数位,则FP20也能够使用这个方案来支持。
如图5所示,可使用复用电路(例如复用器504)在第35位(当支持具有10位尾数的任何浮点格式时)、第36位(当支持具有11位尾数的任何浮点格式时)、第37位(当支持具有12位尾数的任何浮点格式时)或者来自又一个CPA的第48位(当支持FP32时)之间进行选择,来支持可变精度。按照这种方式所配置,复用器504向浮点舍入电路508输出所选最高有效位(MSB),其反映大于或等于二条件。
舍入电路508还可接收如路径510所示的CPA 502的两个最低有效位(LSB)(例如位[25:24])、如路径512所示的下CPA 500的进位信号、如路径514所示的下CPA 502的MSB以及如路径516所示的“粘滞”位,其是CPA 500的其余LSB的逻辑OR结果(参见例如连同CPA 500的底部22位进行“或”操作的逻辑OR门506)。按照这种方式所布置,舍入电路508能够确定所产生尾数是只是CPA 502的最下位(例如10位尾数的情况下的下10位)、下位加1还是下位加2(即,下位右移一个位位置)。换言之,“Sel+0”信号将被断言以指示结果应当只是A+B;“Sel+1”信号将被断言以指示结果应当是A+B+l;以及“Sel+2”信号将被断言以指示结果应当是A+B+2。下面将结合图7-13来描述这三个不同总和输出的生成器。在图5的示例中,在CPA 500包含用来确定舍入位置的尾数乘法的下位的同时,尾数完全包含在CPA 502内。如果期望,零可附加到乘法器输入,使得尾数完全包含在CPA 502内,并且CPA 500的MSB包含用来确定舍入位置的尾数乘法的下位。在这种状况中,CPA 500的LSB可包含零。
如上所述,14位尾数不能通过图5所示的自然CPA舍入位置590直接支持。如图3所示,FP20可要求14位尾数。图6示出另一个适当实施例,其中CPA电路404能够用来支持14位尾数。为了支持额外精度,舍入位置有效地向右移位一个位位置,如虚线690所示。换言之,14个尾数位跨越位[36:23]。第37位充当隐含前导一。由于第38位不可用,所以能够通过再使用来自CPA 502的进位信号来合成。在这个示例中,尾数的LSB可包含在CPA 500中。
按照这种方式所配置,舍入电路508可接收来自CPA 502的MSB的进位信号,其反映大于或等于二条件。由于舍入位置现在移位到CPA 500的MSB,所以尾数的两个LSB现在是CPA 502的LSB和CPA 500的MSB的组合。如图6所示,一位加法器602可接收来自CPA 502的第24位以及来自CPA 500的第23位的进位(如路径604所示)。加法器602的输出则可与通过路径606所路由选择的来自CPA 500的第23位相结合,并且被馈送给舍入电路508。舍入电路508现在可接收第22位的进位信号(如路径608所示)、第22位(如路径610所示)以及如路径614所示的粘滞位,其是CPA 500的其余LSB的逻辑OR结果(参见例如连同CPA 500的底部21位进行“或”操作的逻辑OR门612)。与图5的舍入块相似,图6的舍入电路508可用来选择使用三个CPA输出的哪一个(例如仍然必须计算总和A+B、A+B+l和A+B+2)。
图6的布置(其中CPA电路404能够用来支持至少14位尾数)只是说明性的,而不是用来限制本实施例的范围。图5和图6的实施例也不是互斥的。换言之,图5和图6的两个不同配置能够结合为将简单2:1复用器(例如使用五个2:1复用器)和附加逻辑AND门用于对粘滞OR门的MSB输入,这是逻辑中的细微增加。如果期望,能够通过将舍入位置进一步向右进一步移位(例如通过将虚拟分解边界690更加朝CPA 500的LSB移位),来支持甚至更大数量的尾数位。
图7A-7C示出输出总和A+B的进位传播加法器电路的一个适当实现。如图7A所示,总和与进位向量可使用逻辑“异或”(XOR)门700逐位一起进行“异或”操作,以产生中间值x(例如位x1-x5)。图7A-7C中仅示出五位,但是应当理解,CPA可适合支持任何期望尾数宽度的加法。图7B示出前缀树(例如前缀树702)如何还可接收总和与进位向量,并且输出对应生成(gi)信号(相当于“进位”信号)和传播(pi)信号。如图7C所示,生成信号则可使用逻辑XOR门704与中间值x进行“异或”操作,以产生最终输出值r,其表示A+B之和。具体来说,LSB r1位可以是值x1的简单通道,如线706所示。图7A-7C所示的示范布置有时称作并行前缀进位传播加法器。
图8是能够用来廉价计算第一递增总和A+B+1的进位传播电路内的电路的电路图。如图8所示,加法器电路的一部分可再使用来自图7A的逻辑XOR门700。但是,每个位位置还可包括:逻辑AND门800,其接收LSB总和位s1和对应传播信号;逻辑OR门802,其接收来自门800的输出和对应生成信号;以及附加逻辑XOR门804,其接收来自关联的门700和802的输出信号。例如,第5位位置中的门800可接收位s1和第四传播信号p4,而第4位置中的门800可接收位s1和第三传播信号p3。类似地,第5位位置中的门802可接收第四生成信号g4,而第4位位置中的门802可接收第三生成信号g3。
两个LSB的计算可以是不同的。LSB位置中的逻辑XOR门804’具有:第一输入,其接收来自对应门700的输出;以及第二输入,其接收逻辑“1”,这有效地将计算简化为简单求逆。在第二LSB位置中,逻辑OR门802’可直接接收来自第一位位置的总和位s1和进位位c1。
图9是能够用来廉价计算第二递增总和A+B+2的进位传播电路内的电路的电路图。如图9所示,每个位位置可包括:第一逻辑XOR门820,其接收那个位位置的进位信号和生成信号;逻辑OR门824,其接收来自前一位位置的生成信号和传播信号;以及第二逻辑XOR门822,其接收来自门820和824两者的输出信号。例如,第5位位置中的门820可接收第五进位位c5和第五生成位g5,而第5位置中的门824可接收第四生成位g4和第四传播位p4。类似地,第4位位置中的门820可接收第四进位位c4和第四生成位g4,而第4位置中的门824可接收第三生成位g3和第三传播位p3,依此类推。
两个LSB的计算可以是不同的。LSB是LSB总和位s1的简单通道,如线828所示。第二LSB使用具有第二输入(其接收逻辑“1”)的逻辑XOR门826简单地求逆。图10和图11所示的示范布置有时称作标记前缀进位传播加法器。
图8和图9所示的CPA电路可对齐到图5的CPA 502(例如,LSB输出位r1对应于第24位位置、第二LSB输出位r2对应于第25位位置等)。换言之,图5中的舍入位置590对齐到图8中的虚线890和图9中的虚线892。
为了支持图6的CPA电路(其中尾数的LSB向右移位一位),CPA 500和502将需要桥接,使得第23位位置成为尾数的LSB。图10和图11示出说明性桥接加法器电路,其能够用来分别生成第一和第二递增总和。图10中,虚线1000标记旧舍入位置。如图10所示,第23位成为尾数的新LSB,而与标签c1和s1对应的第24位成为尾数的第二LSB。类似地,图11中,虚线1100标记旧舍入位置。如图11所示,第23位成为新通道LSB,而与c1和s1的求逆XOR结果对应的第24位成为尾数的第二LSB。
如上所述,图8和图9的非桥接模式与图10和图11的桥接模式之间的主要差别是尾数LSB的位置。在非桥接布置中,CPA 502的实际LSB(例如图5的示例中的第24位)充当尾数的LSB。在桥接布置中,CPA 500的MSB(例如图6的示例中的第23位)充当尾数的LSB。
图12示出其中图8和图10的电路结合为单个实施例以输出第一递增总和A+B+1的配置。图12的加法器电路建立于图10的加法器电路上。图12中的虚线1200对应于CPA 500与502之间的自然边界(参见图5中的边界590)。如图12所示,复用器1202可插入逻辑OR门802的输出在第25位位置。具体来说,复用器1202可具有:第一(0)输入,其接收来自门802的输出信号;第二(1)输入,其接收来自逻辑OR门802’的输出信号;控制输入,其接收控制信号Sc;以及输出,其耦合到对应逻辑XOR门804。此外,逻辑OR门1204可插入第23位与第24位之间的边界1200。具体来说,逻辑OR门1204可具有:第一输入,其接收来自逻辑OR门802”、来自前一位的输出信号;第二输入,其接收控制信号Sc;以及输出,其连接到对应逻辑XOR门804,在第24位位置中。
按照这种方式所配置,控制信号Sc可在非桥接模式被断言(例如驱动成高电平)以迫使门1204的输出为高电平,并且将复用器1202配置成选择性地将信号从其第二(1)输入路由选择到其输出,因而对图8中的配置进行镜像。当控制信号Sc在桥接模式被解除断言(例如驱动成低电平)时,逻辑门1204只充当通道,使得第23位成为新尾数LSB,以及复用器1202配置成选择性地将信号从其第一(0)输入路由到其输出,因而对图10中的配置进行镜像。
图13示出其中图9和图11的电路结合为单个实施例以输出第二递增总和A+B+2的配置。图13的加法器电路建立于图11的加法器电路上。图13中的虚线1300对应于CPA 500与502之间的自然边界(参见图5中的边界590)。如图13所示,复用器1302可插入逻辑XOR门826的输出。具体来说,复用器1302可具有:第一(0)输入,其接收来自门826的输出信号;第二(1)输入,其直接接收对应输入总和位,如线1304所示;控制输入,其接收控制信号Sc;以及输出,在其处生成输出总和位。此外,逻辑OR门1306可插入逻辑门824与822之间在下一个LSB中。具体来说,逻辑OR门1306可具有:第一输入,其接收来自逻辑OR门824的输出信号;第二输入,其接收控制信号Sc;以及输出,其连接到对应逻辑XOR门822。
按照这种方式所配置,控制信号Sc可在非桥接模式被断言(例如驱动成高电平)以迫使门1306的输出为高电平,并且将复用器1302配置成选择性地将信号从其第二(1)输入路由选择到其输出,因而对图9中的配置进行镜像。当控制信号Sc在桥接模式被解除断言(例如驱动成低电平)时,逻辑门1306只充当通道,而复用器1302配置成选择性地将信号从其第一(0)输入路由选择到其输出,因而对图11中的配置进行镜像。
图5-13的实施例涉及用于在乘法操作期间操控尾数的电路。按照其他实施例,图14示出用于操控具有可变精度的浮点数的指数的电路1400。如图14所示,电路1400可包括输入加法器级1402、偏置减法级1404和规格化级1406。加法器电路1402可包括:第一输入,其接收第一指数A_exp;第二输入,其接收第二指数B_exp;以及输出,在其处提供两个输入指数之和。
输出1403处的值可使用减法电路1404减去偏置值。考虑电路1400所支持的最大指数为8位的情形。用于小于8位的指数宽度的电路1400内的全部加法和减法能够通过简单地使未使用MSB归零来计算。例如,如果指数精度设置成仅5位,则偏置值可设置成“00001111”,其相当于十进制的15。作为其他示例,偏置值可对6位的指数精度设置成“00011111”,对7位的指数精度设置成“00111111”,以及对8位的指数精度设置成“01111111”。要注意,只有上四位在这个具体示例中改变,因此偏置值的底部四个LSB可硬连线到逻辑一。
输出1405处的差值则可使用加法器电路1406来递增规格化值。继续上述8位的示例,规格化值可对非桥接模式设置成“00000000”,并且可对桥接模式设置成“00000001”(即,在将尾数的舍入位置右移一位时)。换言之,只有规格化值的LSB在两种模式之间切换,而全部前导位为零。由于只有LSB发生变化,所以规格化调整实现对全部指数大小是相同的。这样操作,输出加法器电路生成对应预指数输出。
除了指数操控电路之外,还必须对尾数和指数两者来操控异常。这包括检查输入和输出以查找下溢、上溢(无穷大)以及例如“NaN”(即,某个数除以零)的特殊数值。图15是能够用来检测具有可变精度的浮点数的异常的说明性异常操控电路1500的简图。
考虑其中电路1500用来操控指数异常并且其中所支持的最大指数为9位的示例。如果当前指数为6位,则指数的上MSB将使用AND掩码1502与“0001”进行“与”操作并且还使用OR掩码1504与“1100”进行“或”操作。因此,传递给最终逻辑OR门1506的所产生值将为“000XXXXXX”,其中6个LSB位简单地通过。如果门1506的输出为零,则已经检测到零值。另一方面,传递给最终逻辑AND门1508的所产生值将为“111XXXXXX”,其中6个LSB位也简单地通过。如果门1508的输出为高电平,则已经检测到上溢(无穷大)。
下表示出范围从5-8位(作为示例)的指数精度的上位的AND掩码1502和OR掩码1504。
如果期望,电路1500还可用于尾数异常操控。下表示出范围从10-14位(作为示例)的尾数精度的上位的AND掩码1502和OR掩码1504。
与指数操控相似,如果门1506的输出为零,则对尾数已经检测到零值。另一方面,如果门1508的输出为高电平,则对尾数已经检测到上溢(无穷大)。
图14和图15的电路与图5-13的实施例不是互斥的。实际上,图14的指数操控电路和图15的异常操控电路在实现具有可变精度的浮点乘法器时能够与结合图5-13所述的尾数CPA电路相结合。
至此已经针对集成电路描述了实施例。本文所述的方法和设备可结合到任何适当电路中。例如,它们可结合到多种类型的装置中,例如可编程逻辑装置、专用标准产品(ASSP)和专用集成电路(ASIC)。可编程逻辑装置的示例包括可编程阵列逻辑(PAL)、可编程逻辑阵列(PLA)、现场可编程逻辑阵列(FPLA)、电可编程逻辑装置(EPLD)、电可擦可编程逻辑装置(EEPLD)、逻辑单元阵列(LCA)、复杂可编程逻辑装置(CPLD)和现场可编程门阵列(FPGA),这里只列举几个。
本文的一个或多个实施例中所述的可编程逻辑装置可以是包括下列组件的一个或多个的数据处理系统的部分:处理器;存储器;IO电路;以及外围装置。数据处理能够用于各种应用中,例如计算机连网、数据连网、仪表、视频处理、数字信号处理、或者其中使用可编程或可重新编程逻辑的优点是期望的任何其他适当应用。可编程逻辑装置能够用来执行多种不同逻辑功能。例如,可编程逻辑装置能够配置为处理器或与系统处理器协同工作的控制器。可编程逻辑装置还可用作仲裁器,以用于仲裁对数据处理系统中的共享资源的访问。在又一个示例中,可编程逻辑装置能够配置为处理器与系统中的其他组件之一之间的接口。在一个实施例中,可编程逻辑装置可以是ALTERA/INTEL Corporation所拥有的装置系列其中之一。
示例:
以下示例涉及另外的实施例。
示例1是集成电路管芯上的乘法器电路,包括:第一加法器电路;第二加法器电路;以及舍入电路,其耦合到第一和第二加法器电路,其中第一和第二加法器电路在第一模式生成具有第一精度的第一浮点乘法器输出,并且还在第二模式生成具有与第一精度不同的第二精度的第二浮点乘法器输出。
示例2是示例1的乘法器电路,其中第一和第二加法器电路可选地包括进位传播加法器。
示例3是示例1的乘法器电路,其中第一精度的尾数可选地完全包含在第一加法器电路内,并且其中第二加法器电路包含用来确定舍入决定的尾数的下位。
示例4是示例1的乘法器电路,其中零可选地附加到第二模式的乘法器输入,使得第二精度的尾数完全包含在第一加法器电路内,其中第二加法器电路的最高有效位包含用来确定舍入决定的尾数的下位,并且其中第二加法器电路的最低有效位包含零。
示例5是示例1的乘法器电路,其中第一和第二加法器电路可选地在第三模式生成具有第三精度的第三浮点乘法器输出,并且其中第三精度的尾数的最低有效位包含在第二加法器电路中。
示例6是示例1的乘法器电路,可选地还包括:复用电路,其接收来自第一加法器电路的多个最高有效位,并且向舍入电路输出多个最高有效位的所选一个最高有效位。
示例7是示例1的乘法器电路,其中舍入电路可选地接收来自第一加法器电路的最高有效位的进位信号。
示例8是示例1的乘法器电路,可选地还包括:附加加法器电路,其接收第一加法器电路的最低有效位以及来自第二加法器电路的最高有效位的进位信号。
示例9是示例1-8中的任一个的乘法器电路,其中第一加法器电路可选地包括:第一逻辑XOR门,其输出第一总和位;复用器,具有输出,其连接到第一逻辑XOR门,其中复用器接收确定乘法器电路是工作在第一模式还是第二模式的控制信号;第二逻辑XOR门,其输出第二总和位;以及逻辑OR门,具有输出,其连接到第二逻辑XOR门并且还接收控制信号。
示例10是示例1-8中的任一个的乘法器电路,其中第一加法器电路可选地包括:第一逻辑XOR门,其输出第一总和位;逻辑OR门,具有输出,其连接到第一逻辑XOR门并且接收确定乘法器电路是工作在第一模式还是第二模式的控制信号;第二逻辑XOR门,其接收逻辑一;以及复用器,具有输入,其连接到第二逻辑XOR门并且还接收控制信号。
示例11是一种集成电路,包括:专用处理块,其中专用处理块包括浮点乘法器电路,所述浮点乘法器电路包括:输入加法器电路,具有第一输出;以及减法电路,其接收来自输入加法器电路的第一输出,接收可调整偏置值,并且生成第二输出。
示例12是示例11的集成电路,其中浮点乘法器电路可选地还包括:输出加法器电路,其接收来自减法电路的第二输出,并且还接收可调整规格化值。
示例13是示例12的集成电路,其中乘法器电路可选地分解为通过舍入位置所分隔的第一进位传播加法器和第二进位传播加法器,并且其中可调整规格化值在舍入位置被移位时改变。
示例14是示例11-13中的任一个的集成电路,其中输入加法器电路可选地接收第一指数信号和第二指数信号。
示例15是示例14的集成电路,其中可调整偏置值可选地取决于所接收第一和第二指数信号的精度而改变。
示例16是一种集成电路,包括:专用处理块,其中专用处理块包括浮点乘法器电路,所述浮点乘法器电路包括:输入,其接收浮点数的一部分;以及逻辑门掩码,其取决于浮点数的精度而改变。
示例17是示例16的集成电路,其中在输入所接收的浮点数的部分可选地包括浮点数的指数位。
示例18是示例16的集成电路,其中在输入所接收的浮点数的部分包括浮点数的尾数位。
示例19是示例16-18中的任一个的集成电路,其中逻辑门掩码可选地包括逻辑AND掩码,并且其中浮点乘法器电路还包括:逻辑OR门,其接收来自逻辑AND掩码的信号并且直接接收浮点数的该部分中的多个最低有效位。
示例20是示例16-18中的任一个的集成电路,其中逻辑门掩码可选地包括逻辑OR掩码,并且其中浮点乘法器电路还包括:逻辑AND门,其接收来自逻辑OR掩码的信号并且直接接收浮点数的该部分中的多个最低有效位。
示例21是集成电路管芯上的乘法器电路,包括:第一和第二相加部件,用于在第一模式生成具有第一精度的第一浮点乘法器输出,并且用于在第二模式生成具有与第一精度不同的第二精度的第二浮点乘法器输出;以及舍入部件,其耦合到第一和第二相加部件。
示例22是示例21的乘法器电路,还包括:用于接收来自第一相加部件的多个最高有效位并且用于向舍入部件输出多个最高有效位的所选一个最高有效位的部件。
示例23是示例21的乘法器电路,还包括:用于接收第一相加部件的最低有效位以及来自第二相加部件的最高有效位的进位信号的部件。
示例24是示例21-23中的任一个的乘法器电路,其中第一相加部件包括:第一逻辑XOR门,其输出第一总和位;复用器,具有输出,其连接到第一逻辑XOR门,其中复用器接收确定乘法器电路是工作在第一模式还是第二模式的控制信号;第二逻辑XOR门,其输出第二总和位;以及逻辑OR门,具有输出,其连接到第二逻辑XOR门并且还接收控制信号。
示例25是示例21-23中的任一个的乘法器电路,其中第一相加部件包括:第一逻辑XOR门,其输出第一总和位;逻辑OR门,具有输出,其连接到第一逻辑XOR门并且接收确定乘法器电路是工作在第一模式还是第二模式的控制信号;第二逻辑XOR门,其接收逻辑一;以及复用器,具有输入,其连接到第二逻辑XOR门并且还接收控制信号。
例如,上述设备的全部可选特征也可针对本文所述的方法或过程来实现。前面所述只是说明本发明的原理,并且能够由本领域的技术人员进行各种修改。前述实施例可单独地或者按照任何组合来实现。
Claims (20)
1.集成电路管芯上的乘法器电路模块,包括:
部分乘积生成器,所述部分乘积生成器配置成接收第一输入信号和第二输入信号;
压缩器树电路,所述压缩器树电路配置成接收来自所述部分乘积生成器的信号,并且生成总和与进位向量的第一集合以及总和与进位向量的第二集合;以及
进位传播加法器电路模块,所述进位传播加法器电路模块配置成接收来自所述压缩器树电路的所述总和与进位向量的第一集合以及所述总和与进位向量的第二集合,
其中所述进位传播加法器电路模块包括配置成生成第一输出信号的第一加法器电路和被配置成生成第二输出信号的第二加法器电路,
舍入电路,所述舍入电路耦合到所述第一加法器电路和所述第二加法器电路,其中所述舍入电路被配置为基于所述第一输出信号和第二输出信号执行舍入,
其中所述进位传播加法器电路模块配置成基于所述舍入电路的输出来输出乘法器输出值,每个乘法器输出值具有指数宽度在从第一整数值到第二整数值的范围内连续地改变的指数。
2.如权利要求1所述的乘法器电路模块,其中所述第一整数值为5。
3.如权利要求2所述的乘法器电路模块,其中所述第二整数值为9。
4.如权利要求3所述的乘法器电路模块,其中所述乘法器输出值的所述指数在第一模式等于5。
5.如权利要求4所述的乘法器电路模块,其中所述乘法器输出值的所述指数在第二模式等于6。
6.如权利要求5所述的乘法器电路模块,其中所述乘法器输出值的所述指数在第三模式等于7。
7.如权利要求6所述的乘法器电路模块,其中所述乘法器输出值的所述指数在第四模式等于8。
8.如权利要求7所述的乘法器电路模块,其中所述乘法器输出值的所述指数在第五模式等于9。
9.如权利要求2所述的乘法器电路模块,其中所述第二整数值为8。
10.如权利要求1所述的乘法器电路模块,其中所述第一输入信号具有第一指数,并且其中所述第二输入信号具有与所述第一指数不同的第二指数。
11.如权利要求10所述的乘法器电路模块,还包括:
指数操控电路模块,所述指数操控电路模块配置成基于根据所述第一和第二指数的精度而改变的可调整偏置值来将所述第一指数与所述第二指数进行组合。
12.如权利要求11所述的乘法器电路模块,其中所述指数操控电路模块还配置成基于可调整规格化值来将所述第一指数与所述第二指数进行组合。
13.如权利要求12所述的乘法器电路模块,其中第一指数具有8位。
14.如权利要求12所述的乘法器电路模块,其中第一指数具有5位。
15.如权利要求11所述的乘法器电路模块,其中所述第一输入信号数具有基于所述第一指数来调整的尾数位数。
16.如权利要求1所述的乘法器电路模块,其中所述乘法器输出值具有基于所述指数来调整的尾数大小。
17.如权利要求16所述的乘法器电路模块,其中所述乘法器电路具有在所述尾数大小被调整时移位的舍入位置。
18.如权利要求1所述的乘法器电路模块,还包括:
指数异常操控电路模块,所述指数异常操控电路模块包括取决于所述指数的所述值来改变的逻辑门掩码。
19.如权利要求18所述的乘法器电路模块,其中所述逻辑门掩码包括用于检测所述乘法器输出值是否为零的逻辑AND掩码。
20.如权利要求18所述的乘法器电路模块,其中所述逻辑门掩码包括用于检测所述乘法器输出值是无穷大还是某个数除以零的逻辑OR掩码。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/242,923 US10042607B2 (en) | 2016-08-22 | 2016-08-22 | Variable precision floating-point multiplier |
US15/242923 | 2016-08-22 | ||
PCT/US2017/043154 WO2018038830A1 (en) | 2016-08-22 | 2017-07-20 | Variable precision floating-point multiplier |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109643227A CN109643227A (zh) | 2019-04-16 |
CN109643227B true CN109643227B (zh) | 2024-04-02 |
Family
ID=61191650
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780051875.6A Active CN109643227B (zh) | 2016-08-22 | 2017-07-20 | 可变精度浮点乘法器 |
Country Status (4)
Country | Link |
---|---|
US (4) | US10042607B2 (zh) |
EP (1) | EP3500922A4 (zh) |
CN (1) | CN109643227B (zh) |
WO (1) | WO2018038830A1 (zh) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108205700B (zh) * | 2016-12-20 | 2021-07-30 | 上海寒武纪信息科技有限公司 | 神经网络运算装置和方法 |
US11175892B2 (en) | 2017-11-20 | 2021-11-16 | Intel Corporation | Integrated circuits with machine learning extensions |
US10970042B2 (en) | 2017-11-20 | 2021-04-06 | Intel Corporation | Integrated circuits with machine learning extensions |
WO2020046642A1 (en) | 2018-08-31 | 2020-03-05 | Flex Logix Technologies, Inc. | Multiplier-accumulator circuit, logic tile architecture for multiply-accumulate and ic including logic tile array |
US10871946B2 (en) | 2018-09-27 | 2020-12-22 | Intel Corporation | Methods for using a multiplier to support multiple sub-multiplication operations |
US10963220B2 (en) | 2018-11-12 | 2021-03-30 | Samsung Electronics Co., Ltd. | Signed multiplication using unsigned multiplier with dynamic fine-grained operand isolation |
US10732932B2 (en) | 2018-12-21 | 2020-08-04 | Intel Corporation | Methods for using a multiplier circuit to support multiple sub-multiplications using bit correction and extension |
US11194585B2 (en) | 2019-03-25 | 2021-12-07 | Flex Logix Technologies, Inc. | Multiplier-accumulator circuitry having processing pipelines and methods of operating same |
US11210063B2 (en) | 2019-03-27 | 2021-12-28 | Intel Corporation | Machine learning training architecture for programmable devices |
US11314504B2 (en) | 2019-04-09 | 2022-04-26 | Flex Logix Technologies, Inc. | Multiplier-accumulator processing pipelines and processing component, and methods of operating same |
CN110389746B (zh) * | 2019-07-29 | 2021-04-23 | 中国电子科技集团公司第二十四研究所 | 硬件加速电路、微控制芯片及系统 |
US11288076B2 (en) | 2019-09-13 | 2022-03-29 | Flex Logix Technologies, Inc. | IC including logic tile, having reconfigurable MAC pipeline, and reconfigurable memory |
US11561767B2 (en) * | 2019-09-25 | 2023-01-24 | Arm Limited | Mixed-precision computation unit |
US11455368B2 (en) | 2019-10-02 | 2022-09-27 | Flex Logix Technologies, Inc. | MAC processing pipeline having conversion circuitry, and methods of operating same |
US20230076931A1 (en) * | 2019-10-14 | 2023-03-09 | Anhui Cambricon Information Technology Co., Ltd. | Multiplier for floating-point operation, method, integrated circuit chip, and calculation device |
US12015428B2 (en) | 2019-11-05 | 2024-06-18 | Flex Logix Technologies, Inc. | MAC processing pipeline using filter weights having enhanced dynamic range, and methods of operating same |
US11693625B2 (en) | 2019-12-04 | 2023-07-04 | Flex Logix Technologies, Inc. | Logarithmic addition-accumulator circuitry, processing pipeline including same, and methods of operation |
US11663000B2 (en) * | 2020-01-07 | 2023-05-30 | SK Hynix Inc. | Multiplication and accumulation(MAC) operator and processing-in-memory (PIM) device including the MAC operator |
US11960856B1 (en) | 2020-01-15 | 2024-04-16 | Flex Logix Technologies, Inc. | Multiplier-accumulator processing pipeline using filter weights having gaussian floating point data format |
CN111416889B (zh) * | 2020-01-16 | 2022-03-04 | 重庆大学 | 通过gatt和异常处理来适配的通信方法及系统 |
CN115244504A (zh) * | 2020-03-25 | 2022-10-25 | 华为技术有限公司 | 卷积运算系统和卷积运算方法 |
US11442881B2 (en) | 2020-04-18 | 2022-09-13 | Flex Logix Technologies, Inc. | MAC processing pipelines, circuitry to control and configure same, and methods of operating same |
US11604645B2 (en) | 2020-07-22 | 2023-03-14 | Flex Logix Technologies, Inc. | MAC processing pipelines having programmable granularity, and methods of operating same |
CN111930342B (zh) * | 2020-09-15 | 2021-01-19 | 浙江大学 | 一种针对规格化浮点数的误差无偏近似乘法器及其实现方法 |
CN112230883B (zh) * | 2020-10-14 | 2021-06-01 | 上海芯旺微电子技术有限公司 | 一种用于乘法器零标志位的产生电路、乘法器和检测方法 |
CN117891430B (zh) * | 2024-03-18 | 2024-05-14 | 中科亿海微电子科技(苏州)有限公司 | 一种应用于fpga嵌入式dsp的浮点乘加结构 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9098332B1 (en) * | 2012-06-01 | 2015-08-04 | Altera Corporation | Specialized processing block with fixed- and floating-point structures |
CN104991757A (zh) * | 2015-06-26 | 2015-10-21 | 浪潮(北京)电子信息产业有限公司 | 一种浮点处理方法及浮点处理器 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3434114A (en) | 1966-09-23 | 1969-03-18 | Ibm | Variable floating point precision |
US4893268A (en) * | 1988-04-15 | 1990-01-09 | Motorola, Inc. | Circuit and method for accumulating partial products of a single, double or mixed precision multiplication |
JP2651267B2 (ja) * | 1990-07-26 | 1997-09-10 | 富士通株式会社 | 演算処理装置及び演算処理方法 |
US5696711A (en) * | 1995-12-22 | 1997-12-09 | Intel Corporation | Apparatus and method for performing variable precision floating point rounding operations |
JPH09269891A (ja) * | 1996-04-01 | 1997-10-14 | Hitachi Ltd | 部分積加算方法および装置、浮動小数点乗算方法および装置、浮動小数点積和演算方法および装置 |
US5917741A (en) * | 1996-08-29 | 1999-06-29 | Intel Corporation | Method and apparatus for performing floating-point rounding operations for multiple precisions using incrementers |
US6480872B1 (en) | 1999-01-21 | 2002-11-12 | Sandcraft, Inc. | Floating-point and integer multiply-add and multiply-accumulate |
US7346643B1 (en) | 1999-07-30 | 2008-03-18 | Mips Technologies, Inc. | Processor with improved accuracy for multiply-add operations |
US7080111B2 (en) | 2001-06-04 | 2006-07-18 | Intel Corporation | Floating point multiply accumulator |
US8543632B2 (en) | 2003-06-11 | 2013-09-24 | Stmicroelectronics, Inc. | Method and system for computing alignment sticky bit in floating-point operations |
US8015231B2 (en) | 2004-11-30 | 2011-09-06 | Arm Limited | Data processing apparatus and method for performing floating point multiplication |
US8595279B2 (en) * | 2006-02-27 | 2013-11-26 | Qualcomm Incorporated | Floating-point processor with reduced power requirements for selectable subprecision |
US8412760B2 (en) | 2008-07-22 | 2013-04-02 | International Business Machines Corporation | Dynamic range adjusting floating point execution unit |
US8706790B1 (en) | 2009-03-03 | 2014-04-22 | Altera Corporation | Implementing mixed-precision floating-point operations in a programmable integrated circuit device |
US7948267B1 (en) | 2010-02-09 | 2011-05-24 | Altera Corporation | Efficient rounding circuits and methods in configurable integrated circuit devices |
GB201111035D0 (en) | 2011-06-29 | 2011-08-10 | Advanced Risc Mach Ltd | Floating point adder |
US8949298B1 (en) | 2011-09-16 | 2015-02-03 | Altera Corporation | Computing floating-point polynomials in an integrated circuit device |
US9015217B2 (en) | 2012-03-30 | 2015-04-21 | Apple Inc. | Transcendental and non-linear components using series expansion |
US20160062954A1 (en) | 2012-09-15 | 2016-03-03 | Numbergun Llc | Flexible high-speed generation and formatting of application-specified strings |
US9104474B2 (en) | 2012-12-28 | 2015-08-11 | Intel Corporation | Variable precision floating point multiply-add circuit |
US9189200B1 (en) | 2013-03-14 | 2015-11-17 | Altera Corporation | Multiple-precision processing block in a programmable integrated circuit device |
US9465578B2 (en) * | 2013-12-13 | 2016-10-11 | Nvidia Corporation | Logic circuitry configurable to perform 32-bit or dual 16-bit floating-point operations |
KR102165268B1 (ko) * | 2014-09-18 | 2020-10-13 | 삼성전자 주식회사 | 표현 가능한 수의 범위를 조절하는 방법 및 장치 |
US10282169B2 (en) * | 2016-04-06 | 2019-05-07 | Apple Inc. | Floating-point multiply-add with down-conversion |
-
2016
- 2016-08-22 US US15/242,923 patent/US10042607B2/en active Active
-
2017
- 2017-07-20 EP EP17844079.8A patent/EP3500922A4/en active Pending
- 2017-07-20 CN CN201780051875.6A patent/CN109643227B/zh active Active
- 2017-07-20 WO PCT/US2017/043154 patent/WO2018038830A1/en active Application Filing
-
2018
- 2018-07-18 US US16/039,029 patent/US10379815B2/en active Active
-
2019
- 2019-06-25 US US16/451,759 patent/US10572222B2/en active Active
-
2020
- 2020-02-10 US US16/785,933 patent/US10996926B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9098332B1 (en) * | 2012-06-01 | 2015-08-04 | Altera Corporation | Specialized processing block with fixed- and floating-point structures |
CN104991757A (zh) * | 2015-06-26 | 2015-10-21 | 浪潮(北京)电子信息产业有限公司 | 一种浮点处理方法及浮点处理器 |
Non-Patent Citations (1)
Title |
---|
A New Architecture For Multiple-Precision Floating-Point Multiply-Add Fused Unit Design;LIBO HUANG ET AL;《18th IEEE Symposium on Computer Arithmetic (ARITH "07)》;20070627;第69 - 76页 * |
Also Published As
Publication number | Publication date |
---|---|
US10572222B2 (en) | 2020-02-25 |
US20190324722A1 (en) | 2019-10-24 |
EP3500922A4 (en) | 2020-03-18 |
WO2018038830A1 (en) | 2018-03-01 |
US10379815B2 (en) | 2019-08-13 |
US20180052661A1 (en) | 2018-02-22 |
US10042607B2 (en) | 2018-08-07 |
EP3500922A1 (en) | 2019-06-26 |
CN109643227A (zh) | 2019-04-16 |
US20200174750A1 (en) | 2020-06-04 |
US10996926B2 (en) | 2021-05-04 |
US20180321909A1 (en) | 2018-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109643227B (zh) | 可变精度浮点乘法器 | |
CN109643226B (zh) | 可变精密浮点加法器和减法器 | |
US10838695B2 (en) | Fixed-point and floating-point arithmetic operator circuits in specialized processing blocks | |
US11010131B2 (en) | Floating-point adder circuitry with subnormal support | |
US11726744B2 (en) | Integrated circuits with machine learning extensions | |
US10761805B2 (en) | Reduced floating-point precision arithmetic circuitry | |
US12056461B2 (en) | Integrated circuits with machine learning extensions | |
US10649731B2 (en) | Integrated circuits with specialized processing blocks for performing floating-point fast fourier transforms and complex multiplication | |
US10037189B2 (en) | Distributed double-precision floating-point multiplication | |
US9606608B1 (en) | Low power optimizations for a floating point multiplier | |
US10521227B2 (en) | Distributed double-precision floating-point addition | |
US10061579B1 (en) | Distributed double-precision floating-point addition |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |