CN105573712B - 用于计算重复迭代和的结果的装置、方法和存储介质 - Google Patents

用于计算重复迭代和的结果的装置、方法和存储介质 Download PDF

Info

Publication number
CN105573712B
CN105573712B CN201510713139.5A CN201510713139A CN105573712B CN 105573712 B CN105573712 B CN 105573712B CN 201510713139 A CN201510713139 A CN 201510713139A CN 105573712 B CN105573712 B CN 105573712B
Authority
CN
China
Prior art keywords
value
result
input value
sum
input
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
Application number
CN201510713139.5A
Other languages
English (en)
Other versions
CN105573712A (zh
Inventor
安德烈亚斯·都·恩格-哈尔斯特韦德特
爱德华·菲尔丁
罗尼·佩德森
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.)
ARM Ltd
Original Assignee
ARM Ltd
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 ARM Ltd filed Critical ARM Ltd
Publication of CN105573712A publication Critical patent/CN105573712A/zh
Application granted granted Critical
Publication of CN105573712B publication Critical patent/CN105573712B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/52Multiplying; Dividing
    • G06F7/535Dividing only
    • G06F7/537Reduction of the number of iteration steps or stages, e.g. using the Sweeny-Robertson-Tocher [SRT] algorithm
    • 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
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/527Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel
    • G06F7/5272Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel with row wise addition of partial products
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5334Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
    • G06F7/5336Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm
    • 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/52Multiplying; Dividing
    • G06F7/535Dividing only
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/14Conversion to or from non-weighted codes
    • H03M7/24Conversion to or from floating-point codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

提供了用于计算重复迭代和的结果的装置、方法和程序,其中所述重复迭代和包括使用输入值的加法的多次迭代。在加法的单次迭代中,加法作为使用该输入值和该输入值的移位变形的重叠部分的求和运算被执行,其中该输入值的移位变形与该输入值具有部分重叠。通过使用来自该求和运算的输出增大从该输入值得到的输入来产生至少一个结果部分,并且使用该至少一个结果部分来构造结果值,以给出达到所需精度的结果值。由此,该重复迭代和被平坦化为平坦化的计算,该平坦化的计算仅需要使用该输入值的加法的单次迭代,从而促进了重复迭代和的结果值的计算。

Description

用于计算重复迭代和的结果的装置、方法和存储介质
技术领域
本公开涉及数据处理。更具体地,涉及在数据处理时计算重复迭代和的结果。
背景技术
当进行数据处理时,可能需要执行除以小额非二幂次的常量的除法。这样的除法运算在图形处理中经常用到。当处理正规化数时,可以例如为这种情形。无符号的正规化数(有时被称为unorm<n>),具有范围[0,1]内的值,并且位模式x的数值为
Figure GDA0002503641240000011
例如,对unorm6,该公式为
Figure GDA0002503641240000012
当将两个正规化数值相乘时,或者当转化为浮点值或定点值时,除以小额非二幂次常量的除法可能是所需要的。执行这样的除法的一种方式是乘以
Figure GDA0002503641240000013
但是这种乘法的开销较高,例如,就需要被提供以支持这样的乘法的装置的区域而言。
形如
Figure GDA0002503641240000014
的所有数具有形式为
Figure GDA0002503641240000015
的二进制扩展,这里的横线代表无限重复位模式,并且这一示例性扩展被给定为n=6。重复模式的大小总是为n位。那么,有可能将该乘法改变为一系列加法和移位,变为求和
Figure GDA0002503641240000016
该求和是无限的,但是显然可以被截断以仅求得目标数字格式所需次数的迭代数。
然而,仍然存在与计算该求和的结果相关的一些复杂度和开销,期望降低这些复杂度和开销。
发明内容
从第一方面来看,装置被提供用于计算重复迭代和的达到所需精度的结果值,其中该重复迭代和包括使用输入值的加法的多次迭代,其中该装置包括:加法器,能够将加法的单次迭代作为使用输入值和输入值的移位变形的重叠部分的求和运算进行执行,其中该输入值的移位变形与输入值部分重叠;至少一个增量器,能够使用来自由该加法器执行的求和运算的输出,产生从输入值得到的至少一个结果部分;以及结果生成器,能够使用该至少一个结果部分构造结果值,以给出达到所需精度的结果值。
从第二方面来看,一种方法被提供,该方法在数据处理装置中,计算重复迭代和的达到所需精度的结果值,其中该重复迭代和包括使用输入值的加法的多次迭代,其中该方法包括由数据处理装置实现的步骤,这些步骤包括:将加法的单次迭代作为使用输入值和输入值的移位变形的重叠部分的求和运算进行执行,其中该输入值的移位变形与输入值部分重叠;使用来自求和运算的输出,通过增量运算,产生从输入值得到的至少一个结果部分;使用该至少一个结果部分构造结果值,以给出达到所需精度的结果值。
从第三方面来看,设备被提供用于计算重复迭代和的达到所需精度的结果值,其中该重复迭代和包括使用输入值的加法的多次迭代,其中该设备包括:用于将加法的单次迭代作为使用输入值和输入值的移位变形的重叠部分的求和运算进行执行的装置;用于使用来自由该加法器执行的求和运算的输出,产生从输入值得到的至少一个结果部分的装置;以及用于使用该至少一个结果部分构造结果值以给出达到所需精度的结果值的装置。
附图说明
本发明将参照附图中所示的实施例,仅通过示例的方式被进一步描述,其中:
图1概略性地示出了一个实施例中的装置;
图2示出了在输入值的整数部分和小数部分之间具有准确重叠的重复迭代和,以及由一个实施例实现以确定达到所需精度的重复迭代和的结果的步骤;
图3概略性地示出了在一个实施例中实现图2中所示的步骤的装置的组件和互连;
图4示出了在输入值的整数部分和小数部分之间具有非重叠部分的重复迭代和,以及由一个实施例实现以确定达到所述精度的重复迭代和的结果的步骤;
图5概略性地示出了在一个实施例中实现图4中所示的步骤的装置的组件和互连;
图6概略性地示出了在另一实施例中实现图4中所示的步骤的装置的组件和互连;
图7概略性地示出了在另一实施例中实现图4中所示的步骤的装置的浮点转化器的组件和互连;
图8概略性地示出了图7中所示的浮点转化器的一些组件和互连的替代性配置;
图9示出了在输入值的整数部分和小数部分之间具有双重重叠的重复迭代和,以及由一个实施例实现以确定达到所述精度的重复迭代和的结果的步骤;
图10概略性地示出了在一个实施例中实现图9中所示的前部分步骤的装置的组件和互连,该装置将双重重叠降为单一重叠;
图11概略性地示出了在一个实施例中实现图9中所示的后部分步骤的装置的组件和互连,该装置确定达到所需精度的重复迭代和的结果;
图12概略性地示出了在一个实施例中实现图9中所示的步骤的装置中的浮点转化器的组件和互连;
图13A示出了在输入值的整数部分和小数部分之间具有三重重叠的重复迭代和;
图13B示出了使用不止一个预平坦化过程以将重复迭代和中的多层重叠降为单层重叠;
图14示出了在一个实施例的方法中采用的一系列步骤;以及
图15概略性地示出了受程序指令控制以执行一个实施例的方法的通用计算装置。
具体实施方式
本技术通过将重复迭代和“平坦化”为平坦的计算,促进重复迭代和的结果值的计算,该平坦的计算仅需要使用输入值的加法的单次迭代。因此,在实现本技术的装置中,尽管该重复迭代和包括多次加法,但是仅需要提供一个全加器,这有助于该装置的紧凑实现方式。应当注意的是,尽管上面提及了形式为
Figure GDA0002503641240000041
的二进制扩展的示例,但是本技术不仅适用于这一特定模式,也同样可以应用于倒数具有(稀疏的)重复迭代和的任何除法。重复的二进制扩展的稀疏性降低了相应的重复迭代和的复杂度,并且因此降低了本技术中包含的步骤的复杂度。
在一些实施例中,加法的第一次迭代包括将输入值加到该输入值的移位变形,并且该加法的每次进一步迭代包括将之前的加法迭代结果加到输入值的进一步移位变形,其中输入值的进一步移位变形具有与之前的加法迭代结果的部分重叠。换言之,重复迭代和的多次迭代的每一次可以包括输入值与其本身的加法,但是其中,输入值的下一实例关于输入值的先前实例而被移位。输入值的下一实例关于输入值的先前实例的移位带来了输入值的下一实例与输入值的先前实例之间的部分重叠。
在一些实施例中,加法器能够执行求和运算以产生求和值;至少一个增量器包括:能够产生第一结果部分的第一增量器,其中产生该第一结果部分包括增加输入值的最高位部分,该输入值的最高位部分具有与使用求和运算的进位结果的输入值的移位变形的部分重叠;能够产生第二结果部分的第二增量器,其中产生该第二结果部分包括使用将求和值加上该求和运算的进位结果;以及结果生成器,能够将结果值构造为第一结果部分、之后是至少一个第二结果部分,以给出达到所需精度的结果值。
在一些实施例中,输入值的中间部分与输入值的移位变形不具有重叠,其中该第一增量器能够产生作为输入值的最高位部分的第一结果部分,该输入值的最高位部分具有加上增量值的部分重叠,其中该增量值通过求和运算的进位结果与传递值执行AND(与)操作给出,其中该传递值指示该中间部分在加法中是否将进位传递;第二增量器能够产生作为加上增量值的求和值的第二结果部分;并且结果生成器能够构造结果值,在该结果值中,该第一结果部分和该第二结果部分之后有第三结果部分。
在一些实施例中,该装置还包括:能够产生第三结果部分的第三增量器,其中产生该第三结果部分包括将中间部分增大该求和运算的进位结果。
在一些实施例中,该输入值的中间部分与该输入值的移位变形不具有重叠,并且:该加法器能够执行该求和运算以产生求和值;该至少一个增量器包括:能够产生第一结果部分的第一增量器,其中产生该第一结果部分包括向该输入值的最高位部分加后缀以给出第一结果部分输入值,该输入值的最高位部分与该输入值的中间部分具有部分重叠,并且将该第一结果部分输入值加上求和运算的进位结果;能够产生第二结果部分的第二增量器,其中产生该第二结果部分包括使用该求和运算的进位结果来增加该求和值;以及结果生成器,能够将结果值构造为第一结果部分、之后是至少一个第二结果部分,以给出达到给定精度的结果值,其中该至少一个第二结果部分后缀有第一结果值的最低位部分,该第一结果值具有与该输入值的中间部分相同的大小。
在一些实施例中,该装置还包括:浮点转化器,能够将该结果值转换为浮点格式值。
在一些实施例中,该输入值包括整数部分和小数部分。
在一些实施例中,该浮点转化器包括:第一比特位置生成器,能够接收输入值的整数部分,并输出最高位的比特位置作为第一比特位置输入值;第二比特位置生成器,能够输出加一的输入值的整数部分的最高位比特位置作为第二比特位置输出值;以及第三比特位置生成器,能够生成输入值的小数部分中的最高位比特的位置作为第三比特位置输出值,其中当该整数部分不为零并且进位结果为零时,该浮点转化器能够使用第一比特位置输出值,产生浮点格式值的指数部分,当整数部分不为零并且进位结果不为零时,该浮点转化器使用第二比特位置输出值,并且当整数部分为零时,使用第三比特位置输出值。
在一些实施例中,第二比特位置生成器能够确定输入值的整数部分是否包括其后紧跟有零的一,并且如果是,则提供了第一比特位置输出值作为第二比特位置输出值,并且如果否,则将第一比特位置输出值增大一以生成第二比特位置输出值。
在一些实施例中,第一比特位置生成器、第二比特位置生成器和第三比特位置生成器能够并行操作。
在一些实施例中,该部分重叠包括重复迭代和的输入值的双重自重叠,在重复迭代和的第一次迭代中,该双重自重叠包括输入值的最低位部分、输入值的中间位部分和输入值的最高位部分的加法,并且该装置能够执行移除重复迭代和中的输入值的双重自重叠的预平坦化运算,该重复迭代和包括确定该输入值的替代输入值。
在一些实施例中,该输入值包括整数部分和小数部分,其中输入值的中间位部分为小数部分的最高位部分,其中该输入值的最低位部分为该小数部分的最低位部分,其中该小数部分的中间位部分不被包括在该双重自重叠中,并且其中该装置包括:预平坦化加法器,能够执行小数部分的最高位部分和小数部分的最低位部分的预平坦化求和运算,以产生预平坦化的求和值;第一预平坦化增量器,能够通过将小数部分的最高位部分加上预平坦化增量值,产生第一预平坦化部分,其中该预平坦化增量值由同预平坦化传递值的预平坦化求和运算的进位结果给出,其中该预平坦化传递值指示该小数部分的中间位部分是否在该加法中进位传递;第二预平坦化增量器,能够产生作为小数部分的中间位部分的第二预平坦化部分,能够产生作为小数部分的中间位部分的第二预平坦化部分,该小数部分加上预平坦化求和运算的进位结果;第三预平坦化增量器,能够产生作为预平坦化求和值的第三预平坦化结果部分,该预平坦化求和值加上预平坦化增量值;以及预平坦化生成值生成器,能够产生作为预平坦化增量值同指示执行AND运算的预平坦化生成值,该指示表示小数部分的最高位部分是否将在加法中进位传递,并且该装置能够通过以下方式构造替代的输入值:在该重复迭代和的第一次迭代中,将该小数部分替换为后缀以第二预平坦化部分的第一预平坦化部分,在该重复迭代和的第二次迭代中,将该小数部分替换为后缀以第二预平坦化部分的第三预平坦化部分,并且预先考虑预平坦化生成值,以及在该重复迭代和的第三次及以后的迭代中,将该小数部分替代为后缀以第二预平坦化部分的第三预平坦化部分。
在一些实施例中,该装置包括:第一加法器,能够对整数部分和后缀以第二预平坦化部分的第一预平坦化部分执行第一求和运算,以产生第一求和值;第二加法器,能够对整数部分和后缀以第二预平坦化部分的第三预平坦化部分执行第二求和运算,以产生第二求和值;第一增量器,能够通过将第一求和值加上第二求和运算的进位结果,来生成第一结果部分;第二增量器,能够通过将第二求和值加上第二求和运算的进位结果,来生成第二结果部分;以及第三增量器,能够通过将整数部分加上另一预平坦化增量值,来生成第三结果部分。
在一些实施例中,另一预平坦化增量值通过预平坦化生成值与和增量贡献值执行OR(或)运算后的第一求和运算的进位结果执行OR运算而给出,其中该增量贡献值通过第二求和运算的进位结果和传递值执行AND运算而给出,该传递值指示第一求和值是否在加法中进位传递,并且该结果生成器能够将结果值构造为:在第一结果值部分之后跟随有第三结果部分且第三结果部分之后跟随有至少一个第二结果部分,以给出达到所需精度的结果值。
在一些实施例中,另一预平坦化增量值通过预平坦化生成值加上第一求和运算的进位结果并加上增量贡献值而得到,其中该增量贡献值通过第二求和运算的进位结果与传递值执行AND运算而给出,该传递值指示第一求和值是否在加法中进位传递,并且该结果生成器能够将结果值构造为:在第一结果值部分之后跟随有第三结果部分且第三结果部分之后跟随有至少一个第二结果部分,以给出达到所需精度的结果值。
在一些实施例中,当小数部分的最高位部分不为零时,第三比特位置生成器能够通过使用替代的小数部分生成输入值的小数部分中的最高位比特的位置作为第三比特位置输出值,该替代的小数部分包括:后缀以第二预平坦化部分的第一预平坦化部分,该第二预平坦化部分后缀以第三预平坦化部分的至少一个实例,该第三预平坦化部分后缀以第二预平坦化部分。
在一些实施例中,当小数部分的最高位部分为零时,第三比特位置生成器能够通过使用替代的小数部分,生成输入值的小数部分中的最高位比特的位置作为第三比特位置输出值,该替代的小数部分包括:后缀以小数部分的最低位部分的小数部分的中间位部分。
在一些实施例中,该部分重叠包括重复迭代和中的输入值的至少三重自重叠,该三重自重叠包括重复迭代和中的输入值的双重自重叠和至少一次进一步的自重叠,该三重自重叠对应于该输入值的三次递增移位变形与该重复迭代和的第一次迭代的输入值的加法,并且该装置能够执行至少一次进一步的预平坦化运算,即移除该重复迭代和中的输入值的至少一次进一步自重叠,包括确定针对该替代的输入值的优先替代输入值。
在一些实施例中,该装置能够与预平坦化运算并行地执行进一步的预平坦化运算。
在一些实施例中,该输入值表示最小绝对值为零且最大绝对值为一的正规化数。
在一些实施例中,该输入值具有整数部分和小数部分,并且其中为代表正规化数的最大绝对值,该整数部分为第一类型比特值的连续序列,并且该小数部分为第二类型比特值的连续序列,其中该第二类型与第一类型互补。
在一些实施例中,该重复迭代和实现了乘以非二幂次常量的倒数的乘法。
在一些实施例中,该非二幂次常量可以表述为二的整数幂减一。
在一些实施例中,该装置能够对结果值执行凑整运算,该凑整运算包括将最后位置单元的一半加到结果值。
一些实施例提供了其上以非暂态方式存储有计算机程序的计算机可读存储介质,该计算机程序用于控制计算机以执行上述第二方面的方法。
图1概略性地示出了一个实施例中的数据处理装置10。从这一数据处理装置10的组件来看,可以认识到图1中所示的组件通常将仅代表大型数据处理装置的一部分,该大型数据处理装置可以例如为通用数据处理设备(例如,中央处理单元或图形处理单元)。数据处理装置10能够在这一重复迭代和的输入值的基础上,计算(即具有使它能够计算的配置)重复迭代和的结果值,其中该输入值被加到该重复迭代和的每一次迭代的运行总和(但是每次迭代相对于先前迭代向右移位)。参照之后的附图给出这样的重复迭代和的具体示例。注意到,数据处理装置的以下示例性配置根据无符号正规化数而讨论,尽管带符号的正规化数也可以被处理,例如通过首先将输入转化为符号量级表述,然后将该量级通过无符号路径发送,最后将该符号位存储(未示出)。同样,非正规化数也可以被处理——不需要输入值为正规化格式。然而,一个特性(其用途之后展示)是,基于仅一个进位可以被设置用于正规化数的认识,迭代和中的多次进位的ADD(相加)可以被OR运算替代,这一特性已被识别为使用正规化的输入值。
数据处理装置10包括至少一个加法器11、至少一个增量器12和结果生成器13。这些组件在控制单元14的一般控制下运行。结果生成器13还可以(注意虚线边界)包括浮点转化器15,该浮点转化器被配置为将结果值转化为浮点格式的结果。浮点转化器15本身还可以(注意虚线边界)包括凑整单元16,以执行由结果生成器生成的结果值的凑整运算。
图2示出了可以被图1的数据处理装置10接收的输入值的格式的一个示例,以及该重复迭代和的结构,该重复迭代和需要被执行以用常量值除以这一示例输入,该常量值在该示例中为(28-1)255。该重复迭代和的结构在图2中的块20中被示出。注意到,在该示例中,输入值(iiiiiiiiffffffff)为unorm 8.8,即具有8个小数比特的8比特无符号正规化数。在图2的块20中示出的迭代和对应于这一输入值除以255,即使该输入值超过8比特。此外,在这里所使用的表述中,注意到这一无符号的正规化数的最大值(即1.0)由位模式“11111111.00000000”(即,并非“11111111.11111111”)表示。输入值的整数部分由块20中的字母i表示,并且小数部分由字母f表示。此外,还注意到在该示例中,在重复迭代和中,该输入值的整数部分和它的小数部分之间的重叠是准确的,其中,该求和的下一次迭代的整数部分与该求和的先前迭代的小数部分准确地对齐。在这一求和中也仅存在单层重叠,即从不存在超过两个比特必须被彼此相加的任何位置。
块22示出了两次计算,本技术将这两次计算应用于块20中示出的重复迭代和,以便将重复迭代和的计算实现为平坦化计算,在该平坦化计算中,仅需要使用该输入值的加法的单次迭代。具体地,在图2的示例中,使用该输入值的加法的单次迭代是块22中所示的计算d=i+f。这一求和(c)的进位输出值也被确定。将d和c替代到块20的表达式中,得到块24的表达式。块20中所示的表达式需要注意的一个重要特性是,当考虑和i+f的传递和生成时,这些也可以生成或传递进位,但是并非二者同时进行。回想到,generate(x+y)=x ANDy,而propagate(x+y)=x XOR y(其中XOR表示异或)。这一点在此是重要的,因为从求和i+f生成的进位是存在于无限的重复迭代和中的唯一进位。求和(i+f)生成进位或者整个表达式中不存在进位。这意味着来自该求和的一次重复的进位可以传递至下一次迭代,但并非穿过下一次迭代。因此,该求和仅需要被执行一次,并且该结果可以按照结果值的正确格式所需地被使用多次。因此,将来自块20的c和d替代到块22的表达式中,得到块24中示出的表达式。根据块24中的表达式,这因此可以被块26中所示的表达式替代,其中I为i的值加上i+f和的进位值,并且D为d的值同样加上i+f和的进位值。执行这些替代,得到块28中所示的表达式(其中无限重复的是D项)。因此,块28中所示的表达式是平坦化的计算,该平坦化计算实现了块20中所示的重复迭代和,其中(可以从块22和26的替代中看到)仅存在需要被执行的加法的一次迭代(即,d=i+f)。该数据处理装置评估块28的表达式达到了结果的所需精度,即,在达到了结果值中的这一所需精度的点,截断该表达式。该结果值的凑整也可以通过将最后位置单元的一半加到该结果值而被执行(由结果生成器13中的凑整单元16执行)。注意到,就无线重复和的本质而言,这一凑整永远不会达到相等,因为如果紧跟在凑整点之下的比特为“10”以如所需的达到相等情形,那么无线重复模式确保在迭代和以下必然还存在其他“10”,因此相等的情形永远不会发生。
图3概略性地示出了数据处理装置10的配置以实现关于图2所讨论的步骤。注意到,在这里使用了简写形式,其中,图3中的“i”对应于图2中的整数部分iiiiiiii,图3中的“f”对应于图2中的小数部分ffffffff。类似地,图3中的“I”和“D”分别对应于图2中的IIIIIIII和DDDDDDDD。输入值的整数(i)部分和小数(f)部分被(全)加法器30接收,该(全)加法器产生求和值(d)和进位输出结果(c),并且具有等于重叠大小的宽度(该示例中为8比特)。第一增量器32接收整数部分(i)和进位输出结果(c),并且将整数部分(i)加上进位输出结果(c)以生成求和值I——结果值的整数部分。第二增量器32接收求和值(d)和进位输出结果(c),并且将求和值(d)加上进位输出结果(c)以生成求和值D——结果值的至少一个小数部分。第一增量器32和第二增量器34具有与加法器30相同的宽度(即,该示例中的8比特)。I和D被布置在结果生成器36的结果值中。
图4示出了可以被图1的数据处理装置10接收的输入值的格式的另一示例,以及重复迭代和的结构,该重复迭代和需要被执行以使该示例输入除以常量值,该常量值在该示例中为(210-1)1023。该重复迭代和的结构在图4中的块40中示出。注意到,在该示例中,输入值(iiiiiiiiffffffff)为unorm10.8,即具有8个小数比特的10比特无符号正规化数,这里再一次地,i表示输入值的整数部分,并且f表示小数部分。比较这一示例与图2中的示例,注意到,在重复迭代和中,输入值的整数部分与它的小数部分之间的重叠在该示例中是不准确的,其中,该求和的下一次迭代的整数部分中,存在一部分与该求和的之前迭代的小数部分的任何部分都不重叠。然而,在这一求和中也仅存在单层重叠,即从不存在超过两个比特必须被彼此相加的任何位置。
为在整数部分的重叠部分和非重叠部分之间进行区分,词语a(针对重叠部分)和b(针对非重叠部分)被替代,如块42中所示。同样,存在两次计算,本技术将这两次计算应用于块40和42中所示的重复迭代和,以使得将重复迭代和的计算实现为平坦化计算,在该平坦化计算中,仅需要使用该输入值的加法的单次迭代,即块44中所示的那些计算。在图4的示例中,使用该输入值的加法的单次迭代为块44中所示的计算d=a+f。同样,这一求和(c)的进位输出值也被确定。现在,将d和c替代到块42的表达式中,得到块46的表达式。再一次地,当考虑求和a+f的传递和生成时,这些可以或者生成进位或者传递进位(但两者从不同时进行),因此这里,同样该求和仅需要执行一次,并且该结果可以按照结果值的正确格式所需地被使用多次。因此,将来自块44的c和d替代到块42的表达式中,得到块46中所示的表达式。
块48示出了在该示例中被执行的三次增量计算。增量项被生成为(generate(a+f)&&propagate(b)),即(c&&propagate(b)),并且这一点被用于增加a(输入值的整数部分的重叠部分)和d(输入值的整数部分的重叠部分)的每一个,以分别给出A和D。输入值的整数部分的非重叠部分(b)加上generate(a+f),即c。
块46中的表达式因此可以被块48中所示的表达式替代,以给出块50中所示的表达式(这里,无限重复的是DB项)。块50中所示的表达式因此为平坦化计算,该平坦化计算实现了块40中所示的重复迭代和,其中(如之前在图2中的示例),仅需要执行加法的一次迭代(即d=a+f)。由于在图2的示例中,数据处理装置评价块50的表达式达到了结果的所需精度,即在实现了结果值中的这一所需精度的点,截断该表达式。该结果值的凑整运算同样可以由结果生成器13的凑整单元16执行。
图5概略性地示出了数据处理装置10的配置以实现关于图4所讨论的步骤。注意到,在这里使用了同一风格的简写形式,其中图5中的“a”对应于图4中的重叠整数部分,图5中的“b”对应于图4中的非重叠整数部分,并且图5中的“f”对应于图4中的小数部分。类似地,图5中的“A”、“B”和“D”分别对应于图4中的AAAAAAAA、BB和DDDDDDDD。该输入值的重叠的整数(a)部分和小数(f)部分被(全)加法器30接收,该(全)加法器30产生求和值(d)和进位输出结果(c),并且具有等于重叠大小的宽度(该示例中为8比特)。该输入值的非重叠整数部分(b)被传递检测电路62接收,该传递检测电路确定b的比特值是否将传递一组进位值。这一传递检测的结果和进位输出结果(c)向AND门64提供了输入,该AND门的输出被传递至增量器66和68。第一增量器66将重叠整数部分(a)加上AND门的输出以生成求和值A——结果值的整数部分的第一部分。第二增量器32将求和值(d)加上AND门的输出以生成求和值D——结果值的至少一个小数部分的第一部分。第一增量器66和第二增量器68具有与加法器60相同的宽度,该宽度对应于重叠的大小(即,在该示例中为8比特)。在该示例中,第三增量器被提供,并且将非重叠整数部分(b)加上进位输出结果(c)以生成求和值B——结果值的整数部分和小数部分两者的第二部分。A、B和D被布置在结果生成器72的结果值中。
图6概略性地示出了图4中所示的结构的替代性配置,在图6中,增量器66和70被并入在单一第一增量器74中。加法器60、传递检测单元62、AND门64和第二增量器68本身未改变,但是从AND门64到第一增量器66的路径已被移除,并且进位输出值(c)和非重叠整数部分(b)现在被提供作为第一增量器74的输入。AB(并且这里所需的只是B部分)和D被结果生成器76布置在结果值中。这一替代的布置是基于针对图4的示例中的输入值的全部整数部分(aaaaaaaabb-参见块42)的识别,以加上该进位值,如在块48中所示,加上该进位值的运算针对A=a+(c&&propagate(b))和B=b+c被执行,替代地,还可能执行组合的增加AAAAAAAABB=aaaaaaaabb+c。当根据图6中所示的配置来选择是否生成装置时,可以在某种程度上依赖于合成工具可以有效地穿过b向a传递该进位的程度(一般而言,该传递被现在的合成工具良好地执行)。要注意的是,如果仅需要该装置处理单一格式,那么没有理由分离这些字段,并且因此合并它们可能更好。如果在单一单元中要处理多种格式,将它们分离可能更有优势,因为针对不同格式中的每一种,用户需要不同的宽度。
图7概略性地示出了图1中所示的浮点转化器15的示例,该浮点转化器可以用于转化关于图2-6所讨论装置的示例配置所生成的结果值。在图7中,浮点转化器被标记为80。为了将该结果值转化为浮点格式,需要对其进行扫描以发现最高组的比特,然后该结果值需要相应地移位以生成浮点格式值的尾数。相应的指数值也被产生。本技术使用以上描述的计算的一些结论来对比特扫描加以改进。存在三种情形,并且比特扫描器可以被提供用于一下各项中的每一项(如图7中的情形):
1.如果该结果值的整数部分非零,并且没有生成进位。那么第一整数输入可以被比特扫描以生成移位量。这一运算由比特扫描器82实现。仍然需要加法的结果以准确地移位,但是比特扫描可以与(一个或多个)加法并行地实现。
2.如果该结果值得整数部分非零,并且生成进位。那么可以预先计算值(i+1),然后该值被比特扫描。这一运算由比特扫描器84、比特扫描器86实现。替代地(如图8中的比特扫描器88中所示),来自情形1的结果可以被使用,并且可以检验将1加到该整数部分是否将改变该比特扫描结果。如果初级输入的整数部分包括位模式“10”,那么把一加到它将不会改变比特扫描的结果。因此,这一替代的比特扫描器88包括“10”检测单元90、和增量器92以及复用器94。“10”检测的结果控制复用器的哪个输入为输出,即来自比特扫描器82的未修改结果或者来自比特扫描器82的结果加上一。与增加然后扫描相比,这一运算具有更低的逻辑深度。再一次地,仍然需要(一个或多个)加法的结果以准确地移位,但是比特扫描可以与(一个或多个)加法并行地执行。
3.整数部分为零。这移除了实际的加法。然后,初级小数输入可以被扫描(由比特扫描器96执行),并且仅使用未经修改的输入来执行移位。在这一路径上,还存在一些针对零的特殊情形。
当这三种情形被并行实现时(如图7和8中的情形),不存在从(i+f)或(a+f)加法到(一个或多个)比特扫描器逻辑路径,这降低了整个电路的逻辑深度。应当注意的是,对于输入值而言,不必要同时具有整数部分和小数部分,由于浮点转化器80能够产生浮点格式输出值,因此在输入值仅为整数的情形下,经由比特扫描器96的路径可以替代地用于该整数的后面部分。例如,当输入值为(n+m)比特的整数时,m比特部分可以被比特扫描器96处理,但是当然,在这种情形下,不代表该输入的小数部分。
如图7中所示,由相应的比特扫描器生成的最高位比特位被在控制逻辑100的控制之下的复用器98选择。选择逻辑100接收该输入值的整数部分(为了确定它是零还是非零)以及该输入值的小数部分,在特殊情形中,整数部分和小数部分均为零。对于整数部分和小数部分均为零的特殊情形,零特殊情形单元102被提供,该零特殊情形单元可以向移位器104和指数生成单元106特别提供经特殊选择的值(经由复用器98),这些经特殊选择的值用于指示输出中的“全零”特殊情形。选择逻辑100还接收来自求和步骤的进位,以能够在来自比特扫描器82和84的结果之间进行选择。来自结果生成器13(不管它可能采用上述的哪一配置)的结果值被移位器104接收,移位器104根据从复用器98接收的最高位比特(MSB)位置将这一值移位适当的量。对于零特殊情形,由于产生用于指示这一零特殊情形的经特殊选择的值是必要的,所述针对该结果值,零特殊情形单元102可以向移位器104提供替代值。复用器98的输出(以及来自零特殊情形102的适当信号)被指数生成单元106接收。移位器104和指数生成单元106的输出被组合器108接收,该组合器将这些一同放入浮点格式的输出值。这一浮点格式输出值可以被凑整单元109凑整,例如,通过将完整的浮点数凑整以使得它溢出到指数部分(即,不必须单独处理指数部分)。为给出这一示例:从正规化数1.0开始,二进制形式的无限和为0.1111...,正规化形式的该无限和为1.1111…*2-1,其中起始的1未被存储。将1加到这一表述,得到10.0000*2^-1=1.0*2^-0。在连接指数和尾数的表达式中(即,指数:尾数,如通常在浮点中使用地忽略尾数偏差),得到11111111:11111111…+1=00000000:00000000,该结果准确地给出了将指数从-1改为0的效果,而不必单独地处理该指数。
注意到,在另一配置中,可以提供多个移位器,在该多个移位器的情形中,复用器98然后被提供于这多个移位器之后。与由单个移位器的最大16比特移位相比,这允许每个移位器处理较小的移位量(例如,每个处理最大为8比特的移位;这降低了总逻辑深度)。在这一情形中,比特扫描器96之后的移位器可以使用初级输入的小数部分作为将移位的值。对于全零的情形,不需要移位。
最后注意到关于以上参照图1-8所讨论的各种配置,如果在同一转化器中,不同的位宽度被支持,那么在组件之间传送的值的宽度将改变,并且一些另外的复用器可以用于将输入中的数据恰当地对齐到每一组件(其中输入的大小可以改变)。注意到,该加法器保持最大重叠大小。
现在转到图9至12,(针对输入值unorm6.8)提供了示例,其中在重复迭代和中存在双重重叠,即存在需要添加3个比特的位置。该重复迭代和的结构在图9的块120中被示出。由于对于这一示例,本技术的计算的“平坦化”的结果是在两个步骤中执行的,首先使用来自单次重叠情形的技术来平坦化小数部分的比特,然后再次使用同一技术以完全平坦化该和。在该示例中,该输入除以常量值(26-1)63。
为了在2比特加法和3比特加法中所涉及的输入值的小数部分之间进行区分,如块122中所示的,项a(对于3比特加法所涉及的部分的较高位)、b(对于2比特加法所涉及的部分的中间位)以及c(对于3比特加法所涉及的部分的较低位)被替代。注意到,因此在该示例中,项c不像先前那样指代加法的进位输出。在该示例中,图4的块44和48中所示的加法一般地等价于块124中所示的那些,同时具有针对这一示例的一些修改。这些计算被本技术应用于块120和122中所示的重复迭代和,以便执行“预平坦化”运算来“平坦化”小数比特并如块126所示的仅在迭代和中留下单层重叠。针对这一示例的上述修改为,在这些步骤(连同到计算d、A、B和D的输入的后续改变)以及对项G的附加计算的引入中考虑小数部分而非整数部分。如块126所示,G为全部的进位项,代表从小数部分向初始(非重叠)整数部分(iiiiii)传送的全部进位值。
关于在块126中所示的预平坦化迭代和的一些结论(连同被在块124中计算的那些项替代的项,并且其中再次地,简写形式被使用,其中(AB)表示在块126中显示的“AABBBB”项,并且(i+AB)/(i+DB)表示在块126中所示的,AABBBB和iiiiii的和/DDBBBB和iiiiii的和)为:
1.如果(AB)将传递进位(即,G不为零),那么作为这一传递的结果,AB必须为零;那么加上i和G将不会生成进位;
2.如果(AB)为零,如果整数项iiiiii全为一,那么来自(i+DB)的进位将仅通过(i+DB)和传递。对于上述表述被使用的该特定情形(其中unorm的最大值1.0由全为一的整数比特和全为零的小数比特给出),这不会发生,并且因此如果整数比特全为零,则小数比特必须全为零;
3.如果(AB)不为零,那么进位可以从(i+AB)生成,或者进位可以从(i+DB)和通过(i+AB)传递,但二者不会同时发生;
4.任何情形下,到第一个i的全部进位不可以超过一。
进一步结论为,进入到初始(非重叠)整数部分(iiiiii)的进位永不能使它获得另一比特,因为这将仅当这一初始比特部分全为一时发生,但在这一情形下,小数部分将全为零(同样由于最大值1.0的上述表达式),并且因此将不会生成进位。那么相同的技术被再次使用以使该和完全平坦化(即,通过块128中所示的计算/替代,从块126中所示的格式到块130中所示的格式)。块128中所示的计算需要执行两次加法,即e=(i+AB)和j=(i+DB)(NB:也为简写形式)。在该示例中,三次增量计算被执行。增量项被生成为来自(i+DB加法)的进位输出值(generate(i+DB)),并且该增量项被用于增加e和j中的每一个以分别给出E和F。输入值的整数部分(i)加上增量项,该增量项代表进位值被传递到输入值的这一整数部分的能力。注意到,项G与这些项的余下部分的OR运算同样基于与最大值1.0的上述表达式有关的以上结论3。在更一般的情形下(其中未使用这样的表达式),项G将同这些项的余下部分执行ADD运算。注意到,因此,当项G与这些项的余下部分执行OR运算时,不会针对于整数项生成新的MSB,但是当项G与这些项的余下部分执行ADD运算时(并且当整数项全为一时),这是可能的。
因此,块126中的表达式可以被块128中所示的表达式替代,以给出块130中所示的表达式(其中无限重复的是项FFFFFF)。因此,块130中所示的表达式为完全平坦化的计算,该完全平坦化的计算实现了块120中所示的重复迭代和。如在先前的示例中,数据处理装置评价块130的表达式达到了结果的所需精度,即在实现了结果值中的这一所需精度的点,截断该表达式。结果值的凑整也可以由结果生成器13中的凑整单元16来执行。
图10和11概略性地示出了实现关于图9所讨论的步骤的数据处理装置10的配置。同样,这里使用了同一风格的简写形式,其中图10中的“a”对应于图9中的项aa等。参考图10,该图对应于块124的计算,输入值的a部分和c部分被(全)加法器140接收,该(全)加法器产生求和值(d)及进位输出结果。加法器140因此仅需要具有等于这一步骤中的两个之间的重叠的大小的宽度(在该示例中为2比特),但是这一加法器可以被重新用于以后的步骤(参见图11),其中需要更大的宽度(在该示例中为6比特)来执行加法(i+AB)或(i+DB),因此,加法器140可以具有后一步骤所需的宽度以使得它可以被重新用于该步骤。输入值的b部分将由传递检测电路142接收,传递检测电路142确定b的比特值是否将传递一组进位值。这一传递检测的结果和来自加法器140的进位输出结果向AND门64提供输入,该AND门的输出被传送至增量器148和150。项a还被另一传递检测电路146接收,传递检测电路146确定该比特值是否将传递一组进位值。第一增量器148将项a加上AND门144的输出以生成求和值A。第二增量器150将求和值d加上AND门144的输出以生成求和值D。第三增量器152将项b加上来自加法器140的进位输出以产生求和值B。AND门154具有来自AND门144和传递检测单元146的输入以生成G值。如以上,在这一步骤中,增量器148、150和152仅需要与它们各自的输入相同的宽度,但是可以在步骤中被重新使用(参见图11),并且在这一情形下具有它们在两个步骤中的任意步骤中的角色所需的最大宽度。A、B和D可以被布置在结果生成器156的中间结果值AB和DB内,但是也可以直接地在下一步骤中被采用(参见图11),而不需要任何明确地重新布置并作为并行的比特集馈送到所需输入中。
现在转到图11,该图对应于块128的计算,项i和项DB被(全)加法器160接收,该(全)加法器产生求和值(j)和进位输出结果。项i和项AB被(全)加法器162接收,该(全)加法器产生求和值(e)和进位输出结果。如上所述,这些加法器之一实际上可以与在该步骤中被重新使用的加法器140相同,并且这一配置与图1中所示的反馈路径相对应,其中结果生成器13的输出被回传至(一个或多个)全加器11的输入,因此构成替代的输入值。项G被OR门164接收。注意到,在上述关于项G的用途所提到的更一般情形中,OR门164和OR门170中的每个被ADD门替代。这对应于图9的块128中的、被I=i+(G+generate(i+AB)+(generate(i+DB)&&propagate(i+AB)))替代的项“I”的定义。
加法器162的进位输出提供了OR门164的另一输入。加法器162的求和输出(e)向传递检测电路166提供了输入,该传递检测电路确定(e)的比特值是否将传递一组进位值。这一传递检测的结果和来自加法器160的进位输出结果向AND门168提供了输入,AND门168的输出向OR门170提供了一个输入。注意到,AND门168的输出和加法器162的进位输出也被传送至图12的浮点选择逻辑(以下进行讨论)。第一增量器172将项j加上加法器160的进位输出以生成求和值F。第二增量器174将项e加上加法器160的进位输出以生成求和值E。第三增量器176将项i加上OR门170的进位输出以生成求和值I。I、E和F被布置在结果生成器178的最终结果值中。
图12概略性地示出了图1中所示的浮点转化器15的示例,该浮点转化器可以被用于转化由关于图9-11所讨论的装置的示例配置生成的结果值。如之前为了将结果值转化为浮点格式,需要扫描以发现最高位组的比特,然后该结果值需要相应地移位以生成浮点格式值的尾数,并且相应的指数值也被生成。本技术还使用以上关于图9-11所描述的计算的一些更进一步的结论来对比特扫描加以改进。这里存在四种情形,并且可以针对每种情形提供比特扫描器(如图12中的情形):
1.如果结果值的整数部分不为零,并且没有进位传递到整数部分,那么如图7中的示例,初级整数输入可以被比特扫描以生成移位量。这是由比特扫描器190实现的。仍然需要加法的结果以准确移位,但是比特扫描可以与这些加法并行实现。
2.如果结果值的整数部分不为零,并且进位被传递到整数部分,那么如图7和8中的示例,存在相同的两种可能性,即或者比特扫描初级整数输入加1,或者检测情形1的结果是否受到进位影响。这里仅显示了由比特扫描器192和增量器194实现的第一示例。
3.如果整数部分为零,并且a不为零,那么平坦化进位(ABDB)的结果(即,全部的小数部分)可以被比特扫描并且这一项也将其用于移位,这是因为由于整数部分为零,因此与整数部分的最终加法将无影响。这是由比特扫描器196和将项ABDB输送到移位器204的路径实现的。
4.如果整数部分为零,并且a为零,那么初级输入bc可以被比特扫描,并且也被用于移位。由于不存在具有任何影响的加法,这可以与其它任何运算并行执行。这是由比特扫描器198和将项bc输送到移位器204的路径实现的。
同样为其中这四种情形被并行实现的情形(如图12中的情形),不存在从加法(i+AB)或(i+DB)到(一个或多个)比特扫描器的逻辑路径,这降低了整个电路的逻辑深度。如图12中所示,在选择逻辑202的控制下,由相应的比特扫描器产生的最高位比特位置被复用器200选择。选择逻辑202接收项i、项a、以及(参见图11)AND门168的输出和加法器162的进位输出作为输入,以使得它可以在以上所描述的四种情形之间进行选择。来自结果生成器178的结果值,以及情形3和4的项ABDB和bc,被移位器204接收,移位器204根据从复用器200接收的最高位比特(MSB)位置,将适当的值(如选择逻辑202所信令的)移位适当的量。复用器200的输出被指数生成单元206接收。移位器204的输出和指数生成单元206的输出被组合器208接收,组合器208将这些输出一同放入浮点格式的输出值。凑整单元209也可以被提供,如以上关于图7中的单元109所描述的。类似地,如以上关于图7还描述的,在变体中,可以在复用器200之前提供多个移位器而不是单个移位器204,允许每个移位器处理较小的移位量。
图13A示出了一个示例,其中在重复迭代和中存在三重重叠,即,存在需要加上4比特的位置。因此,对于该示例本技术的计算的“平坦化”是在多个步骤中实现的,使用单一重叠技术来单独地平坦化一层小数比特重叠,和一层整数/小数重叠。那么相同的技术可以被再次用于完全地平坦化该迭代和。如图13B中所示的,这多个步骤可以至少部分地被并行实现,其中树结构被用于执行多次平坦化,并且将它们的结果放到一起。如图13B中的另外的(虚线块)预平坦化步骤所述,本技术甚至可以被用于超过三重重叠的情形。然而,认识到在试图执行所需的除法之前,这多次平坦化所增加的实现开销将相对于把输入转化为较大格式的替代而被平衡,在某种意义上而言,这可以被看作是更为有效的方法(取决于相应格式的使用频率和每一方法所需要的电路面积)。
图14示出了在一个实施例的方法中采用的一系列步骤。该流程开始于步骤220,其中输入值被接收,并且确定结果值所需的格式。然后,在步骤222,确定重复迭代和是否存在多于一层重叠。如果存在,那么流程进行至步骤224,其中预平坦化运算被执行以移除一层重叠。然后,由于根据需要多次返回步骤224直到仅余下单层重叠的可能性,流程返回至步骤222以确定这是否使得在迭代和中仅剩余单层重叠。一旦仅剩余单次重叠,那么在步骤226,确定在输入值(或者在步骤224被使用至少一次的情况下为替代值)的整数部分和小数部分之间是否存在准确的重叠。如果这些部分之间的重叠是准确的,那么流程进行至步骤228,其中整数部分和小数部分被相加以产生求和值。然后,在步骤230,整数部分被增加求和运算的进位输出以给出结果值的第一部分。然后,在步骤232,该和被增加求和运算的进位输出以给出该结果值的(一个或多个)第二部分。注意到,增加步骤230和232不需要被顺序执行,并且如图3中所示,实际上可以被并行执行。最后,在步骤234,该结果值根据需要被扩展多个附加第二部分以产生具有所需精度的结果值。
返回考虑步骤226,如果整数部分和小数部分之间的重叠为不准确的,那么该流程进行至步骤236,其中整数部分和小数部分的重叠被相加以给出求和值。然后,在步骤238,确定整数值的非重叠部分是否将传递,这由传递结果来表示。然后,在步骤240,这一传递结果与求和运算的进位输出被执行AND运算,并且在步骤242,整数部分的重叠部分被增加该AND运算(步骤240)的结果以给出该结果值的第一部分。然后,在步骤244,非重叠的整数部分被增加求和运算的进位输出以给出该结果值的第二部分。在步骤246,该求和值被增加该AND运算的结果以给出该结果值的第三部分。如之前的,应当注意的是,步骤242、244和246不需要被顺序执行,并且如图5中所示,实际上可以被并行执行。最后,在步骤248,该结果值根据需要被扩展多个附加第二和第三部分(替代的)以产生所需精度的结果值。
图15概略性地示出了可以用于实现以上所描述技术的类型的通用计算设备300。该通用计算设备300包括中央处理单元302、随机访问存储器304和只读存储器306,它们经由总线322连接在一起。它还包括网络接口卡308、硬盘驱动器310、显示驱动器312、监视器314以及具有键盘318和鼠标320的用户输入/输出电路316,它们全部经由共同总线322相连接。在实践中,中央处理单元302将执行计算机程序指令,该指令可以例如被存储在随机访问存储器304和/或只读存储器306中。另外,计算机程序指令可以另外地从硬盘驱动器310取回,或者经由网络接口卡308动态地下载。因此,RAM 304、ROM 306、硬盘驱动器310和经由网络接口卡308访问的任何存储介质各自代表计算机可读存储介质,计算程序以非暂态方式被存储在该存储介质上。被执行处理的结果可以经由显示驱动器312和监视器314向用户显示。用于控制通用计算设备300的运行的用户输入可以经由用户输入输出电路316、从键盘318或鼠标320接收。应当理解,计算机程序可以以各种不同的计算机语言来编写。计算机程序可以被本地地存储于记录介质,或者被动态下载到通用计算设备300上。当在适当的计算机程序的控制下运行时,通用计算设备300可以执行上述技术,并且可以被认为构成用于执行上述技术的装置。通用计算设备300的架构可以进行相当大的改变,并且图15仅为一个示例。
因此,在装置的整体概况中,方法和程序被提供用于计算达到重复迭代和的所需精度的结果值,其中该重复迭代和包括使用输入值的加法的多次迭代。在加法的单次迭代中,加法被执行为使用输入值和输入值的移位变体的重叠部分的求和运算,其中输入值的移位变体具有与输入值的部分重叠。通过使用来自求和运算的输出来增加从输入值得到的输入,至少一个结果部分被产生,并且通过使用该至少一个结果部分,该结果值被产生以给出达到所需精度的结果值。由此,重复迭代和被平坦化为平坦化的计算,该平坦化的计算仅需要使用该输入值的加法的单次迭代,因此促进了该重复迭代和的结果值的计算。
虽然在此已经参照附图详细描述了说明性实施例,但是将理解权利要求不限于这些精确实施例,并且本领域技术人员能够在不脱离所附权利要求所限定的本发明的范围和精神的情况下实施各种改变和修改。例如,能够在不脱离本发明的范围的情况下以独立权利要求的特征做出下附从属权利要求的特征的各种组合。

Claims (27)

1.一种用于计算重复迭代和的达到所需精度的结果值的装置,其中所述重复迭代和包括使用输入值的加法的多次迭代,其中所述装置包括:
加法器,所述加法器能够将加法的单次迭代作为使用所述输入值和所述输入值的移位变形的重叠部分的求和运算进行执行,其中所述输入值的移位变形与所述输入值具有部分重叠;
至少一个增量器,所述至少一个增量器能够使用来自所述加法器所执行的所述求和运算的输出来产生至少一个结果部分,该至少一个结果部分是从所述输入值得到的;以及
结果生成器,所述结果生成器能够使用所述至少一个结果部分构造所述结果值,以给出达到所述所需精度的结果值,
其中:
所述加法器能够执行所述求和运算以产生求和值;
所述至少一个增量器包括:
第一增量器,所述第一增量器能够产生第一结果部分,其中产生所述第一结果部分包括使用所述求和运算的进位结果增大与所述输入值的移位变形具有部分重叠的所述输入值的最高位部分;以及
第二增量器,所述第二增量器能够产生第二结果部分,其中产生所述第二结果部分包括使用所述求和运算的所述进位结果增大所述求和值;以及
所述结果生成器能够将所述结果值构造为所述第一结果部分、之后是至少一个第二结果部分,以给出达到所述所需精度的结果值。
2.如权利要求1所述的装置,其中,所述加法的第一次迭代包括将所述输入值加到所述输入值的移位变形,并且其中所述加法的每次进一步迭代包括将先前迭代加法结果加到所述输入值的进一步移位变形,其中所述输入值的进一步移位变形与所述先前迭代加法结果具有部分重叠。
3.如权利要求1所述的装置,
其中所述输入值的中间部分与所述输入值的移位变形不具有重叠;
其中所述第一增量器能够产生作为所述输入值的最高位部分的第一结果部分,所述输入值的最高位部分具有增大增量值的所述部分重叠,其中所述增量值由与传递值的求和运算AND的进位结果给出,其中所述传递值指示所述中间部分是否将在所述加法中进位传递;
所述第二增量器能够产生作为增大所述增量值的所述求和值的第二结果部分;以及
所述结果生成器能够构造所述结果值,在所述结果值中,所述第一结果部分和所述第二结果部分都后缀有第三结果部分。
4.如权利要求3所述的装置,其中,所述装置还包括:
第三增量器,所述第三增量器能够产生所述第三结果部分,其中产生所述第三结果部分包括将所述中间部分增大所述求和运算的所述进位结果。
5.如权利要求1所述的装置,其中,所述输入值的中间部分与所述输入值的移位变形不具有重叠,以及其中:
所述加法器能够执行所述求和运算以产生求和值;
所述至少一个增量器包括:
第一增量器,所述第一增量器能够产生第一结果部分,其中产生所述第一结果部分包括为所述输入值的最高位部分加后缀以给出第一结果部分输入值,并且将所述第一结果部分输入值增大所述求和运算的进位结果,所述输入值的最高位部分与所述输入值的中间部分具有部分重叠;以及
第二增量器,所述第二增量器能够产生第二结果部分,其中产生所述第二结果部分包括使用所述求和运算的所述进位结果增大所述求和值;以及
所述结果生成器能够将所述结果值构造为:所述第一结果部分、之后是至少一个第二结果部分,以给出达到所述所需精度的结果值,其中所述至少一个第二结果部分后缀有所述第一结果值的最低位部分,所述第一结果值的最低位部分具有与所述输入值的所述中间部分相同的大小。
6.如权利要求1所述的装置,还包括:
浮点转化器,所述浮点转化器能够将所述结果值转化为浮点格式值。
7.如权利要求1所述的装置,其中,所述输入值包括整数部分和小数部分。
8.如权利要求7所述的装置,还包括:
浮点转化器,所述浮点转化器能够将所述结果值转化为浮点格式值;
其中,所述浮点转化器包括:
第一比特位置生成器,所述第一比特位置生成器能够接收所述输入值的所述整数部分,并且输出最高位比特位置作为第一比特位置输出值;
第二比特位置生成器,所述第二比特位置生成器能够输出增大一的所述输入值的所述整数部分的最高位比特位置作为第二比特位置输出值;以及
第三比特位置生成器,所述第三比特位置生成器能够生成所述输入值的所述小数部分中的最高位比特的位置作为第三比特位置输出值,
其中所述浮点转化器能够通过以下方式生成所述浮点格式值的指数部分:当所述整数部分不为零并且所述进位结果为零时,使用所述第一比特位置输出值;当所述整数部分不为零并且所述进位结果不为零时,使用所述第二比特位置输出值;当所述整数部分为零时,使用所述第三比特位置输出值。
9.如权利要求8所述的装置,其中,所述第二比特位置生成器能够确定所述输入值的所述整数部分是否包括紧跟有零的一,并且如果是,则提供所述第一比特位置输出值作为所述第二比特位置输出值的,并且如果否,则将所述第一比特位置输出值增大一以生成所述第二比特位置输出值。
10.如权利要求8所述的装置,其中,所述第一比特位置生成器、所述第二比特位置生成器、以及所述第三比特位置生成器能够并行操作。
11.如权利要求1所述的装置,其中,所述部分重叠包括所述重复迭代和中的所述输入值的双重自重叠,在所述重复迭代和的第一次迭代中,所述双重自重叠包括所述输入值的最低位部分、所述输入值的中间位部分以及所述输入值的最高位部分的加法,并且所述装置能够执行移除所述重复迭代和中的所述输入值的双重自重叠的预平坦化运算,所述预平坦化运算包括确定所述输入值的替代输入值。
12.如权利要求11所述的装置,其中,所述输入值包括整数部分和小数部分,其中所述输入值的中间位部分为所述小数部分的最高位部分,其中所述输入值的最低位部分为所述小数部分的最低位部分,其中所述小数部分的中间位部分未被括在所述双重自重叠中,并且其中所述装置包括:
预平坦化加法器,所述预平坦化加法器能够对所述小数部分的所述最高位部分和所述小数部分的所述最低位部分的执行预平坦化求和运算,以产生预平坦化求和值;
第一预平坦化增量器,所述第一预平坦化增量器能够通过将所述小数部分的所述最高位部分增大预平坦化增量值来产生第一预平坦化部分,其中所述预平坦化增量值由所述预平坦化求和运算的进位结果与预平坦化传递值执行AND运算来给出,其中所述预平坦化传递值指示所述小数部分的中间位部分是否将在所述加法中进位传递;
第二预平坦化增量器,所述第二预平坦化增量器能够产生作为增大所述预平坦化求和运算的所述进位结果的所述小数部分的中间位部分的第二预平坦化部分;
第三预平坦化增量器,所述第三预平坦化增量器能够产生作为增大所述预平坦化增量值的所述预平坦化求和值的第三预平坦化结果部分;以及
预平坦化生成值生成器,所述预平坦化生成值生成器能够产生作为与在所述加法中所述小数部分的所述最高位部分是否将进位传递的指示执行AND运算的预平坦化增量值的预平坦化生成值;以及
所述装置能够通过以下方式来构造所述替代输入值,在所述重复迭代和的所述第一次迭代中用后缀有所述第二预平坦化部分的所述第一预平坦化部分替代所述小数部分,并且在所述重复迭代和的第二次迭代中用后缀有所述第二预平坦化部分的所述第三预平坦化部分替代所述小数部分并且预置所述预平坦化生成值,以及在所述重复迭代和的第三次和以后的迭代中用后缀有所述第二预平坦化部分的所述第三预平坦化部分替换所述小数部分。
13.如权利要求12所述的装置,其中,所述装置包括:
第一加法器,所述第一加法器能够对所述整数部分和后缀有所述第二预平坦化部分的所述第一预平坦化部分执行第一求和运算,以产生第一求和值;
第二加法器,所述第二加法器能够对所述整数部分和后缀有所述第二预平坦化部分的所述第三预平坦化部分执行第二求和运算,以产生第二求和值;
第一增量器,所述第一增量器能够通过将所述第一求和值增大所述第二求和运算的进位结果来生成第一结果部分;
第二增量器,所述第二增量器能够通过将所述第二求和值增大所述第二求和运算的进位结果来生成第二结果部分;以及
第三增量器,所述第三增量器能够通过将所述整数部分增大另一预平坦化增量值来生成第三结果部分。
14.如权利要求13所述的装置,
其中所述另一预平坦化增量值由所述预平坦化生成值与所述第一求和运算的所述进位结果执行OR运算再与增量贡献值执行OR运算来给出;
其中所述增量贡献值由所述第二求和运算的所述进位结果与传递值执行AND运算来给出,所述传递值指示所述第一求和值是否在所述加法中将进位传递,以及
所述结果生成器能够将所述结果值构造为:所述第三结果部分、之后是所述第一结果值部分、之后是至少一个第二结果部分,以给出达到所述所需精度的结果值。
15.如权利要求13所述的装置,
其中所述另一预平坦化增量值由所述预平坦化生成值加到所述第一求和运算的所述进位结果再加到增量贡献值来给出;
其中所述增量贡献值由所述第二求和运算的所述进位结果与传递值执行AND运算来给出,所述传递值指示所述第一求和值是否将在所述加法中进位传递,以及
所述结果生成器能够将所述结果值构造为:所述第三结果部分、之后是所述第一结果值部分、之后是至少一个第二结果部分,以给出达到所述所需精度的结果值。
16.如权利要求8所述的装置,其中,所述部分重叠包括所述重复迭代和中的所述输入值的双重自重叠,在所述重复迭代和的第一次迭代中,所述双重自重叠包括所述输入值的最低位部分、所述输入值的中间位部分以及所述输入值的最高位部分的加法,并且所述装置能够执行移除所述重复迭代和中的所述输入值的所述双重自重叠的预平坦化运算,所述预平坦化运算包括确定所述输入值的替代输入值;
其中,当所述小数部分的最高位部分不为零时,所述第三比特位置生成器能够使用替代小数部分来生成所述输入值的所述小数部分中的最高位比特的位置以作为所述第三比特位置输出值,所述替代小数部分包括:
后缀有第二预平坦化部分的第一预平坦化部分、之后是后缀有所述第二预平坦化部分的第三预平坦化部分的至少一个实例。
17.如权利要求9所述的装置,其中,所述输入值的中间部分与所述输入值的移位变形不具有重叠,并且其中:
所述加法器能够执行所述求和运算以产生求和值;
所述至少一个增量器包括:
第一增量器,所述第一增量器能够产生第一结果部分,其中产生所述第一结果部分包括为所述输入值的最高位部分加后缀以给出第一结果部分输入值,并且将所述第一结果部分输入值增大所述求和运算的进位结果,所述输入值的最高位部分与所述输入值的中间部分具有部分重叠;以及
第二增量器,所述第二增量器能够产生第二结果部分,其中产生所述第二结果部分包括使用所述求和运算的所述进位结果增大所述求和值;以及
所述结果生成器能够将所述结果值构造为:所述第一结果部分、之后是至少一个第二结果部分,以给出达到所述所需精度的结果值,其中所述至少一个第二结果部分后缀有所述第一结果值的最低位部分,所述第一结果值的最低位部分具有与所述输入值的所述中间部分相同的大小;
其中,当所述小数部分的最高位部分为零时,所述第三比特位置生成器能够使用替代小数部分来生成所述输入值的所述小数部分中的所述最高位比特的位置,以作为所述第三比特位置输出值,所述替代小数部分包括:
后缀有所述小数部分的最低位部分的所述小数部分的中间位部分。
18.如权利要求11所述的装置,其中,所述部分重叠包括所述重复迭代和中的所述输入值的至少三重自重叠,所述三重自重叠包括所述重复迭代和中的输入值的所述双重自重叠以及至少一重进一步的自重叠,所述三重自重叠对应于所述输入值的三次增量移位变形到所述重复迭代和的所述第一次迭代处的所述输入值的加法,以及
所述装置能够执行至少一次进一步的预平坦化运算,所述至少一次进一步的预平坦化运算移除所述重复迭代和中的素数输入值的所述至少一重进一步的自重叠,所述至少一次进一步的预平坦化运算包括确定所述替代输入值的优先替代输入值。
19.如权利要求18所述的装置,其中,所述装置能够与所述预平坦化运算并行地执行所述进一步的预平坦化运算。
20.如权利要求1所述的装置,其中,所述输入值表示最小绝对值为零且最大绝对值为一的正规化数。
21.如权利要求20所述的装置,其中,所述输入值具有整数部分和小数部分,并且其中为表示所述正规化数的所述最大绝对值,所述整数部分为第一类型的比特值的连续序列,并且所述小数部分为第二类型的比特值的连续序列,其中所述第二类型与所述第一类型互补。
22.如权利要求1所述的装置,其中,所述重复迭代和实现了乘以非二幂次常量的倒数的乘法。
23.如权利要求22所述的装置,其中,所述非二幂次常量可表述为二的整数幂次减一。
24.如权利要求1所述的装置,其中,所述装置能够对所述结果值执行凑整运算,所述凑整运算包括将最后位置单元的一半加到所述结果值。
25.一种在数据处理装置中计算重复迭代和的达到所需精度的结果值的方法,其中所述重复迭代和包括使用输入值的加法的多次迭代,其中所述方法由所述数据处理装置实现的步骤,所述步骤包括:
将加法的单次迭代作为使用所述输入值和所述输入值的移位变形的重叠部分的求和运算进行执行以产生求和值,其中所述输入值的所述移位变形与所述输入值具有部分重叠;
使用来自所述求和运算的输出、通过增量,产生从所述输入值得到的第一结果部分和第二结果部分,其中产生所述第一结果部分包括使用所述求和运算的进位结果增大与所述输入值的移位变形具有部分重叠的所述输入值的最高位部分,并且其中产生所述第二结果部分包括使用所述求和运算的所述进位结果增大所述求和值;以及
使用所述第一结果部分以及其后的至少一个第二结果部分构造所述结果值,以给出达到所述所需精度的结果值。
26.一种计算机可读存储介质,其上以非暂态方式存储有计算机程序,所述计算机程序用于控制计算机执行如权利要求25所述的方法。
27.一种用于计算重复迭代和的达到所需精度的结果值的设备,其中所述重复迭代和包括使用输入值的加法的多次迭代,其中所述设备包括:
用于将加法的单次迭代作为使用所述输入值和所述输入值的移位变形的重叠部分的求和运算进行执行以产生求和值的装置,其中所述输入值的所述移位变形与所述输入值具有部分重叠;
用于使用来自所述求和运算的输出、通过增量来产生从所述输入值得到的第一结果部分和第二结果部分的装置,其中产生所述第一结果部分包括使用所述求和运算的进位结果增大与所述输入值的移位变形具有部分重叠的所述输入值的最高位部分,并且其中产生所述第二结果部分包括使用所述求和运算的所述进位结果增大所述求和值;以及
用于使用所述第一结果部分以及其后的至少一个第二结果部分构造所述结果值以给出达到所述所需精度的结果值的装置。
CN201510713139.5A 2014-10-31 2015-10-28 用于计算重复迭代和的结果的装置、方法和存储介质 Active CN105573712B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1419456.7 2014-10-31
GB1419456.7A GB2535426B (en) 2014-10-31 2014-10-31 Apparatus, method and program for calculating the result of a repeating iterative sum

Publications (2)

Publication Number Publication Date
CN105573712A CN105573712A (zh) 2016-05-11
CN105573712B true CN105573712B (zh) 2020-09-04

Family

ID=52118541

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510713139.5A Active CN105573712B (zh) 2014-10-31 2015-10-28 用于计算重复迭代和的结果的装置、方法和存储介质

Country Status (4)

Country Link
US (1) US9933999B2 (zh)
KR (1) KR102486711B1 (zh)
CN (1) CN105573712B (zh)
GB (1) GB2535426B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11281463B2 (en) * 2018-03-25 2022-03-22 Intel Corporation Conversion of unorm integer values to floating-point values in low power
CN108897522A (zh) * 2018-06-14 2018-11-27 北京比特大陆科技有限公司 数据处理方法、数据处理装置以及电子设备
CN113721884B (zh) * 2021-09-01 2022-04-19 北京百度网讯科技有限公司 运算方法、装置、芯片、电子装置及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5243552A (en) * 1990-06-19 1993-09-07 Sony Corporation Coefficient multiplying circuit
CN1339215A (zh) * 1999-01-26 2002-03-06 艾利森公司 利用查表代替乘法运算的最大似然序列估计
CN1375765A (zh) * 2001-03-19 2002-10-23 深圳市中兴集成电路设计有限责任公司 一种快速大数模乘运算电路
CN1666173A (zh) * 2002-05-08 2005-09-07 英特尔公司 快速乘法电路
US7257609B1 (en) * 2000-10-16 2007-08-14 Nokia Corporation Multiplier and shift device using signed digit representation
CN101227613A (zh) * 2008-01-22 2008-07-23 炬力集成电路设计有限公司 一种sad运算处理装置及方法
CN101866278A (zh) * 2010-06-18 2010-10-20 广东工业大学 一种异步迭代的多位整型乘法器及其计算方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7685222B2 (en) * 2004-11-01 2010-03-23 Sony Corporation Power of two multiplication engine
JP4571903B2 (ja) * 2005-12-02 2010-10-27 富士通株式会社 演算処理装置,情報処理装置,及び演算処理方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5243552A (en) * 1990-06-19 1993-09-07 Sony Corporation Coefficient multiplying circuit
CN1339215A (zh) * 1999-01-26 2002-03-06 艾利森公司 利用查表代替乘法运算的最大似然序列估计
US7257609B1 (en) * 2000-10-16 2007-08-14 Nokia Corporation Multiplier and shift device using signed digit representation
CN1375765A (zh) * 2001-03-19 2002-10-23 深圳市中兴集成电路设计有限责任公司 一种快速大数模乘运算电路
CN1666173A (zh) * 2002-05-08 2005-09-07 英特尔公司 快速乘法电路
CN101227613A (zh) * 2008-01-22 2008-07-23 炬力集成电路设计有限公司 一种sad运算处理装置及方法
CN101866278A (zh) * 2010-06-18 2010-10-20 广东工业大学 一种异步迭代的多位整型乘法器及其计算方法

Also Published As

Publication number Publication date
KR102486711B1 (ko) 2023-01-10
GB2535426B (en) 2021-08-11
US20160124708A1 (en) 2016-05-05
KR20160051616A (ko) 2016-05-11
GB2535426A (en) 2016-08-24
US9933999B2 (en) 2018-04-03
CN105573712A (zh) 2016-05-11
GB201419456D0 (en) 2014-12-17

Similar Documents

Publication Publication Date Title
Mohan et al. Residue Number Systems
CN105468331B (zh) 独立的浮点转换单元
US6813626B1 (en) Method and apparatus for performing fused instructions by determining exponent differences
CN107305485B (zh) 一种用于执行多个浮点数相加的装置及方法
Hormigo et al. New formats for computing with real-numbers under round-to-nearest
EP0356153B1 (en) Radix-2**n divider method and apparatus using overlapped quotient bit selection and concurrent quotient rounding and correction
Hormigo et al. Measuring improvement when using HUB formats to implement floating-point systems under round-to-nearest
CN105573712B (zh) 用于计算重复迭代和的结果的装置、方法和存储介质
Bruguera Radix-64 floating-point divider
JP4273071B2 (ja) 除算・開平演算器
CN108334304B (zh) 数字递归除法
EP2254041A1 (en) Cordic operational circuit and method
Lang et al. Very high radix square root with prescaling and rounding and a combined division/square root unit
Teja et al. FPGA implementation of low-area floating point multiplier using Vedic mathematics
JP3598096B2 (ja) ニュートンラフソン法を用いた演算方式
US11119731B2 (en) Apparatus and method for rounding
US20230086090A1 (en) Methods and Apparatus for Quotient Digit Recoding in a High-Performance Arithmetic Unit
US9720648B2 (en) Optimized structure for hexadecimal and binary multiplier array
JP6863907B2 (ja) 演算回路
Iyer et al. Generalised Algorithm for Multiplying Binary Numbers Via Vedic Mathematics
Villalba-Moreno et al. Floating Point Square Root under HUB Format
KR20210001305A (ko) 위노그라드 알고리즘에 기반한 행렬 곱셈 방법 및 장치
US20240248683A1 (en) Mixed-precision multiplication circuit
US20170199723A1 (en) Circuitry and method for performing division
US20210334635A1 (en) Neural network accelerator configured to perform operation on logarithm domain

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Engh-Halstvedt Andreas Due

Inventor after: Edward Fielding

Inventor after: Ronnie Pedersen

Inventor before: Engh-Halstvedt Andreas Due

Inventor before: Edward Fielding

GR01 Patent grant
GR01 Patent grant