CN113168310B - 用于转换数字的硬件模块 - Google Patents

用于转换数字的硬件模块 Download PDF

Info

Publication number
CN113168310B
CN113168310B CN201980077105.8A CN201980077105A CN113168310B CN 113168310 B CN113168310 B CN 113168310B CN 201980077105 A CN201980077105 A CN 201980077105A CN 113168310 B CN113168310 B CN 113168310B
Authority
CN
China
Prior art keywords
bits
bit
sequence
significant
equal
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
CN201980077105.8A
Other languages
English (en)
Other versions
CN113168310A (zh
Inventor
S.费利克斯
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.)
Graphcore Ltd
Original Assignee
Graphcore 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 Graphcore Ltd filed Critical Graphcore Ltd
Publication of CN113168310A publication Critical patent/CN113168310A/zh
Application granted granted Critical
Publication of CN113168310B publication Critical patent/CN113168310B/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/58Random or pseudo-random number generators
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • 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/02Conversion to or from weighted codes, i.e. the weight given to a digit depending on the position of the digit within the block or code word
    • H03M7/04Conversion to or from weighted codes, i.e. the weight given to a digit depending on the position of the digit within the block or code word the radix thereof being two
    • 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
    • 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/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3832Less usual number representations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Nonlinear Science (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Analogue/Digital Conversion (AREA)

Abstract

一种包括电路的硬件模块,该硬件模块被配置为:将n位序列存储在硬件模块的寄存器中;通过以下操作生成包括量值分量和符号位的有符号整数:如果n位序列的最高有效位等于一:将量值分量的n‑1个最高有效位中的每一个最高有效位设置为等于n位序列的n‑1个最低有效位中的对应位;并将符号位设置为等于零;如果n位序列的最高有效位等于零:将量值分量的n‑1个最高有效位中的每一个最高有效位设置为等于n位序列的n‑1个最低有效位中的对应位的逆;并将符号位设置为等于一。

Description

用于转换数字的硬件模块
技术领域
本公开涉及一种用于转换数字的硬件模块,并且更具体地,涉及一种用于产生数字的中心分布的硬件模块。
背景技术
在计算中,预定义尺寸的位序列(bit sequence)被用于表示数字。位序列的特定表示确定如何解释位序列。
表示的一种形式是整数表示,它可以是有符号的或者无符号的。无符号整数由一系列表示正整数的量值(magnitude)的位组成。有符号整数也包括一系列表示量值的位,并且附加地包括符号位。符号位的值指示整数是正的还是负的。
可替代地,浮点表示常常被用于近似地表示实数。浮点表示包括3个单独的分量,即,符号分量、尾数分量和指数分量。在单精度(即,32位)浮点表示中,符号分量由单个位组成,指数由8个位组成,并且尾数由23个位组成。在半精度(即,16位)浮点表示中,符号分量由单个位组成,尾数由10个位组成,并且指数由5个位组成。在大多数情况下,根据这三个分量由以下公式给出数字:
(-1)signbitX I.mantissa X 2exponentbits-offset
所显示的指数的“offset(偏移量)”取决于用于表示指数的位数,该用于表示指数的位数取决于精度级别。在单精度表示中,偏移量等于127。在半精度格式中,偏移量等于15。
在这里,“I”是隐式位,它是从指数中得出的。在指数位序列由全零或全一以外的任何其它数字组成的情况下,隐式位等于1,并且该数字被称为“Norm”。在这种情况下,浮点数由下式给出:
(-1)signbitX 1.mantissa X 2exponentbits-offset
在指数位序列由全零组成的情况下,隐式位等于零,并且该数字称为“DNorm”。在这种情况下,浮点数由下式给出:
(-1)signbit X 0.mantissa X 2exponentbits-offset
DNorm是有用的,因为它们允许表示的数字要比通过有限数量的指数位可表示的数字更小。
另一种情况—其中指数位序列由全一组成—可以被用来表示无穷大。
浮点表示可以被用于表示神经网络处理的实施方式中的数字。神经网络的实施方式涉及这种浮点数的存储和操纵。神经网络用于机器学习和人工智能领域。神经网络包括节点集合的布置,这些节点通过链接互连并且彼此交互。计算中的神经网络的原理是基于与电刺激如何在人脑中传达信息有关的信息。为此,这些节点常常被称为神经元。它们也可以被称为顶点。链接有时被称为边。网络可以获取输入数据,并且某些节点对数据执行操作。这些操作的结果被传递到其它节点。每个节点的输出被称为其激活或节点值。每个链接与权重相关联。权重定义了神经网络的节点之间的连接性。已知神经网络能够通过其进行学习的许多不同技术,这些技术是通过更改权重的值来实现的。
图1示出了神经网络中节点的一种布置的极为简化的版本。这种类型的布置常常用于学习或训练中,并且包括节点的输入层、节点的隐藏层和节点的输出层。实际上,每层中将有许多节点,并且如今每个区段可以有多于一层。输入层的每个节点Ni能够在其输出处产生激活或节点值,该激活或节点值是通过对提供给该节点的数据执行函数而生成的。在隐藏层中的每个节点的输入处对来自输入层的节点值的向量按相应权重的向量进行缩放,每个权重定义该特定节点与其在隐藏层中相连接的节点的连接性。实际上,网络可以具有数百万个节点并且多维地连接,因此向量更通常是张量。在节点Nh的输入处应用的权重被标记为w0......w2。输入层中的每个节点至少初始地连接到隐藏层中的每个节点。隐藏层中的每个节点可以对提供给它们的数据执行激活函数,并且可以类似地生成输出向量,该输出向量被供给输出层N0中的每个节点N0。每个节点例如通过执行对节点的输入激活与其相应的传入链接的唯一权重的点乘来对其传入数据进行加权。然后,它对加权的数据执行激活函数。激活函数可以是例如S形。参见图1A。网络通过以下来进行学习:对在输入层处输入的数据进行操作、为来自每个节点的激活分配权重、以及对输入到隐藏层中的每个节点的数据起作用(通过对其加权并执行激活函数)。因此,隐藏层中的节点对加权的数据进行操作并将输出供应给输出层中的节点。输出层的节点也可以指派权重。每个权重的特征在于相应的误差值。而且,每个节点可以与误差条件相关联。每个节点处的误差条件给出了对该节点的权重的误差是否落入低于一定级别或落入可接受程度的测量。存在不同的学习方法,但是在每种情况下,存在图1中从左到右通过网络的正向传播、总误差的计算、以及误差在图1中从右到左通过网络的反向传播。在下一个周期中,每个节点考虑反向传播的误差并产生修改的权重集合。以这种方式,可以训练网络以执行其期望的操作。
神经网络中存在许多要求在0到1的范围内的随机浮点数的计算。使用以零为中心的数字分布执行此类计算可以是有利的。
发明内容
因此,当用n位序列呈现时,以某种方式操纵这些位以使它们表示以零为中心的数字的分布可以有所帮助。这种分布在神经网络中具有应用。
可以通过例如从数字中减去最大值的一半以在软件中实现这种使数字的分布中心化的过程。但是,期望替代地提供能够执行该过程的硬件模块。虽然软件实施方式可能看起来更简单,但是每次转换数字时,都需要将指令加载到处理器中并执行。因此,在软件而不是硬件中实现该过程可能导致较低效率的过程。但是,为了在硬件中实现该过程,期望避免在硬件中使用减法,该减法在所需的硬件资源方面是有要求的。因此,在硬件中实现中心化过程不是在硬件中直接实现软件功能,而是要求仔细考虑要由硬件执行的操作,以便最小化对必要电路的需求。
本申请的实施例可以解决这些问题中的一个或多个。
根据本发明的第一方面,提供了一种包括电路的硬件模块,该硬件模块被配置为:将n位序列存储在硬件模块的寄存器中;通过以下操作生成包括量值分量和符号位的有符号整数:如果n位序列的最高有效位等于一:将量值分量的n-1个最高有效位中的每一个最高有效位设置为等于n位序列的n-1个最低有效位中的对应位;以及将符号位设置为等于零;如果n位序列的最高有效位等于零:将量值分量的n-1个最高有效位中的每一个最高有效位设置为等于n位序列的n-1个最低有效位中的对应位的逆;以及将符号位设置为等于一。
量值分量可以由硬件模块计算。这可以通过以下操作来实现:将位序列乘以二以生成第一中间值;向第一中间值加上一以生成第二中间值;以及从第二中间值减去二的n次幂。量值分量的最低有效位可以被设置为一。
硬件模块可以包括NOT门,该NOT门接收序列的最高有效位并输出符号位。硬件模块可以包括多个XNOR门。每个XNOR门接收序列的最高有效位和序列的n-1个最低有效位之一以作为输入。然后,它提供量值分量的n-1个最高有效位中的对应位以作为输出。
可以存在随机数生成器,它提供作为随机生成的位序列的n位序列。
可以从有符号整数生成浮点数。尾数可以从浮点数生成。这可以通过将有符号整数的符号位设置为零以产生无符号位序列来实现。然后可以以等于无符号位序列的前导零的数量的量来对无符号位序列执行左移位,然后将移位后的无符号位序列截断为针对尾数指定的位数。可以取决于前导零的数量来设置浮点数的指数。这个指数可以设置为等于-1。
可以从相应的位序列生成在以零为中心的分布中的多个有符号整数。可以从所述相应的位序列生成在以零为中心的分布中的多个浮点数。
硬件模块的电路可以包括至少一个专用集成电路和/或至少一个现场可编程门阵列。
根据本发明的第二方面,提供了一种用于生成包括量值分量和符号位的有符号整数的方法,该方法包括:将n位序列存储在硬件模块的寄存器中;如果n位序列的最高有效位等于一:将量值分量的n-1个最高有效位中的每一个最高有效位设置为等于n位序列的n-1个最低有效位中的对应位;并将符号位设置为等于零;如果n位序列的最高有效位等于零:将量值分量的n-1个最高有效位中的每一个最高有效位设置为等于n位序列的n-1个最低有效位中的对应位的逆;并将符号位设置为等于一。
在一些实施例中,用于生成包括量值分量和符号位的有符号整数的方法,该方法包括:将n位序列存储在硬件模块的寄存器中;如果n位序列的最高有效位等于一:将量值分量的n-1个最高有效位中的每一个最高有效位设置为等于n位序列的n-1个最低有效位中的对应位;并将符号位设置为等于零;如果n位序列的最高有效位等于零:将量值分量的n-1个最高有效位中的每一个最高有效位设置为等于n位序列的n-1个最低有效位中的对应位的逆;并将符号位设置为等于一。
在一些实施例中,该方法包括响应于该指令而将量值分量的最低有效位设置为等于一。
在一些实施例中,该方法包括提供作为随机生成的位序列的n位序列。
在一些实施例中,该方法包括从有符号整数生成浮点数。
在一些实施例中,该方法包括通过以下步骤生成浮点数的尾数:将有符号整数的符号位设置为等于零以产生无符号位序列;以等于无符号位序列的前导零的数量的量来对无符号位序列执行左移位;并将移位后的无符号位序列截断为针对尾数指定的位数。
在一些实施例中,该方法包括取决于前导零的数量来设置浮点数的指数。
在一些实施例中,该方法包括从所述相应的位序列生成在以零为中心的分布中的多个浮点数。
在一些实施例中,该方法包括通过以下步骤来计算量值分量:将位序列乘以二以生成第一中间值;向第一中间值加上一以生成第二中间值;并从第二中间值减去二的n次幂。
根据本发明的第三方面,提供了一种包括计算机程序的计算机程序产品,该计算机程序包括计算机程序指令,该计算机程序指令在由硬件模块执行时执行上述步骤。
附图说明
图1是神经网络的高度简化的示意图;
图1A是神经元的高度简化的示意图;
图2示出了值的示例非对称分布;
图3示出了值的示例对称分布;
图4示出了将值转换成浮点格式的电路的示例;
图5示出了将值转换成浮点格式的电路的示例;
图6示出了缩放的分布的示例;
图7是根据本发明实施例的处理单元的示意图;以及
图8是图示从随机位序列到浮点数的转换过程的示意图。
具体实施方式
伪随机数生成器(PRNG)生成均匀分布的随机位。计算常常需要在0到1的范围内的随机浮点数来表示概率。本文描述的su-from-ui电路提供从随机无符号整数到有符号整数的转换。然后,有符号整数适合于由电路转换成在-0.5到0.5的范围内的浮点数。
总的来说,可以使用以下公式从无符号整数转换n位浮点数:
float=((2*uint)+1-2n)/2(n+1)
其中n=表示浮点数的尾数的位数。利用此方案可表示的最大量值为0.5-(2-(n+1))。本申请的实施例提供了对称且均匀的随机浮点数的硬件实施方式。
一个挑战是将位序列(其可以用来表示无符号整数)转换成以零为中心的有符号整数的分布。然后,这样的有符号整数适于转换成浮点格式,以产生以零为中心的浮点数的分布。一种用以产生有符号整数的提议是利用减法(或加法)函数。但是,这些函数是昂贵的。因此,一些实施例还提出了通过新颖的位操纵来实现减法。
本申请的实施例涉及一种用于将位的序列转换成有符号整数的硬件模块。硬件模块还被配置为将有符号整数转换成浮点数。每个位序列可以表示随机生成的值。转换过程使得每个经过转换过程的数字的分布将形成以零为中心的数字的新分布。
为了产生浮点数,硬件模块被配置为首先将随机生成的位序列(其表示无符号整数)转换成有符号整数。对有符号整数进行计算,使得以这种方式计算出的有符号整数的分布以零为中心。然后将有符号整数转换成浮点数。
硬件模块包括以下中的一个或多个:至少一个专用集成电路(ASIC)和至少一个现场可编程门阵列(FPGA)或电路/门。硬件模块包括被称为“来自无符号整数的对称均匀电路”的电路,该电路被配置为根据本申请的实施例从无符号整数计算浮点数。“来自无符号整数的对称均匀电路”包括用于将表示无符号整数的位序列转换成有符号整数的电路。“来自无符号整数的对称均匀电路”还包括用于将表示有符号整数的位序列转换成浮点数的电路。
这些硬件元件(即,FPGA和/或ASIC或电路/门)被配置为接收n位序列,并且以将它们移位到新分布中的适当位置的方式来操纵这些位。位序列可以表示被转换成浮点格式的无符号整数。浮点格式的数字包括符号位、尾数和指数。使用术语“浮点格式”旨在对用于表示数字的位数没有限制。在一些实施例中,数字可以以单精度浮点格式表示,并因此由32位组成。在其它实施例中,数字可以以半精度浮点格式表示,并因此由16位组成。
硬件元件(即,FPGA和/或ASIC或电路/门)被配置为取决于提供给硬件模块的n位序列的n-1个最低有效位(LSB)来确定有符号整数的量值分量的n-1个最高有效位(MSB)。
在n位序列的MSB等于一的情况下,硬件元件被配置为将有符号整数的量值分量的n-1个MSB中的每一个MSB设置为等于其n位序列的n-1个LSB的对应位。在这种情况下,将有符号整数的符号位设置为等于一。
在n位序列的MSB等于零的情况下,硬件元件被配置为将有符号整数的量值分量的n-1个MSB中的每一个设置为等于其n位序列的n-1个LSB的对应位的逆(inverse)。在这种情况下,将有符号整数的符号位设置为等于零。
在任一种情况下,有符号整数的LSB都被设置为等于一。
在硬件模块处接收的n位序列可以由随机数生成器随机地生成。在硬件模块处接收的随机生成的数字可以形成随机数的均匀分布,或者可以形成近似的高斯分布。通过以上述方式修改随机生成的数字,可以形成以零为中心的均匀分布、高斯分布或某种其它形式的分布。要求以零为中心的数字的分布的技术已在神经网络中得到应用。最近已经设计出通过向权重或激活添加随机噪声来改善神经网络的性能的技术。在这方面,作为一种可能性,高斯噪声已被探索。如我们在先的美国申请No.15/886505中所述,本文描述的用于生成随机数的技术可以被用于生成高斯噪声,该申请的内容通过引用并入本文。为了提供所需的噪声,这个示例中的高斯分布被归一化并以零为中心。
参照图7,其图示了使用这种硬件模块24来生成所描述的浮点数的示例。图7示出了执行单元2的示意性框图,该执行单元2被布置为执行用于从无符号整数生成浮点数的单条指令。
执行单元2形成处理单元中的管线4的一部分。处理单元包括指令提取单元6,该指令提取单元6从指令存储器10中提取指令。处理单元还包括存储器访问级8,其负责访问数据存储器12,以从存储器加载数据或将数据存储到存储器中。提供了寄存器14的集合,以用于保存由管道4在任何实例下执行的指令的源操作数和目的操作数。将容易理解的是,管线4可以包含许多不同类型的执行单元,以用于执行各种不同的指令,例如用于执行数学运算。对本发明可能有用的一种类型的处理单元是使用桶形线程时隙的处理单元,其中主管线程可以将不同的工作线程分配给不同的时隙以便执行它们。
执行单元2包括指令执行模块23和用于保存指令的执行结果的输出缓冲器27。指令执行模块23被配置为执行指令,以使硬件模块24生成浮点数。硬件模块24被配置为响应于这种指令而转换从伪随机数生成器22接收的n位序列并将浮点数提供给输出缓冲器27。
通过执行多条指令,可以在以零为中心的分布中生成多个浮点数。
可以将在硬件模块处接收的n位序列理解为表示无符号整数。这些无符号整数形成初始分布。参见图2,其图示了可以在硬件模块处接收的无符号整数的初始分布210。初始分布210是均匀分布,从而反映了由随机数生成器输出的数字的均匀分布。
在这个示例中,n=4(即,每个无符号整数由4位表示)。因此,可以被表示的最大值是15,其由位序列1111给出。可以被表示的最小值是0,其由位序列0000给出。这被反映到在0和15之间延伸的分布210中。
参照图3,其图示了以零为中心的浮点数的分布310。分布310表示在所述的硬件模块处接收的n位序列的结果。对于初始分布,分布的范围是15。但是,现在分布在-7.5和7.5之间扩展。
参见图4,其图示了用于从无符号整数生成有符号整数的硬件模块的电路。通过这个电路以使得所得的分布以零为中心的方式来生成有符号整数。
在所示的示例中,n位序列405包括位序列0101。图4在410处示出该位序列表示值为5的无符号整数。有符号整数的量值415也包括4位。有符号整数附加地包括符号位420。
为了确定符号位420的值,使用n位序列405的MSB作为到NOT门425的输入。输出是符号位420。如果无符号整数小于通过n位序列可表示的最大值的一半,那么其效果是使有符号整数为负。在这个示例中,将符号位420设置为等于一(表示负数),因为无符号整数具有小于通过4位可表示的最大值(15)的一半(7.5)的值(5)。
图4还示出了被用于构造有符号整数的量值的n-1个MSB 430的电路。这些MSB是取决于n位序列的n-1个LSB 435计算的。
硬件元件包括多个XNOR(排他NOR)门440。可以存在所提供的n-1个XNOR门440。每个XNOR门440还被配置为接收n位序列的n-1个LSB之一以作为输入并将其输出提供给有符号整数的量值的n-1个MSB 430的对应位。因此,第一XNOR门440a被配置为接收n位序列的n-1个LSB 435的MSB并输出有符号整数的量值的MSB。第二XNOR门440b被配置为接收n位序列的n-1个LSB 435的第二MSB并且输出有符号整数的量值的第二MSB。第三XNOR门440c被配置为接收n位序列的n-1个LSB 435中的第三MSB并输出有符号整数的量值的第三MSB。
每个XNOR门440还被配置为接收n位序列的MSB 450以作为输入。通过这样做,XNOR门440确定是否要对n-1个LSB 435的输入进行取逆。在图4的示例中,由于MSB 450等于零,因此n-1个LSB 435中的每一个LSB被取逆以形成有符号整数的量值的n-1个MSB。换句话说,由于由n位序列表示的无符号整数的值小于最大可能值的一半,因此发生取逆。
图4还示出有符号整数的量值的LSB 445被设置为1。不管n位序列的值如何,这都是真的。
参照图5,其图示了如何将用于生成有符号整数的电路应用于不同的n位序列。
在所示的示例中,n位序列505包括位序列1100。该图在510处示出该位序列表示值为12的无符号整数。浮点数的有符号整数515的量值也包括4位。有符号整数附加地包括符号位520。
为了确定符号位520的值,使用n位序列的MSB作为到NOT门525的输入。在这个示例中,将符号位520设置为等于0(表示正数),因为无符号整数具有大于通过4位可表示的最大值(15)的一半(7.5)的值(12)。
图5还示出了该电路如何被用于构造有符号整数的量值的n-1个MSB 530。如前所述,每个XNOR门540接收n位序列的MSB 550以作为输入。在图4的示例中,由于MSB 550等于一,因此将有符号整数的量值的n-1个MSB 530中的每一个MSB设置为等于n位序列的n-1个LSB 535中的对应位。换句话说,因为由n位序列表示的无符号整数的值大于最大可能值的一半,因此不发生取逆。
再次,图5还示出有符号整数的量值的LSB 545被设置为1。不管n位序列的值如何,这都是真的。
因此,通过如上所述地操纵位以生成合适的有符号整数,硬件模块能够生成以零为中心的分布。
然后,有符号整数适于转换成浮点数以形成以零为中心的浮点数的分布。硬件模块包括浮点处理单元,以用于将有符号整数转换成浮点数。
参照图8,其图示了由硬件模块执行的用于将无符号整数转换成浮点数的总过程。
最初,由PRNG将随机生成的位序列810提供给硬件模块。根据以上关于图5和6描述的技术,位序列810被转换成表示有符号整数的位序列820。
将有符号整数820的符号位设置为等于零以产生位序列830。然后,硬件模块被配置为对前导(leading)零的数量进行计数并且对位序列830执行左移位,直到所有前导零都被丢弃并且MSB等于1。这产生了位序列840。
由于与输入整数相比,浮点数的尾数通常具有更少的位。例如,当将32位整数转换成单精度浮点数时,尾数具有24位。因此,将从32位整数中截去8位以形成24位尾数。
从位序列830中移除的位被用于对尾数840的LSB进行舍入(round)。可以应用任何合适的舍入方案来实现这一点。例如,可以应用舍入到最接近的偶数(RTNE)的方案的舍入方案。利用这个方案,如果被移除的位大于LSB的最大值的一半,那么尾数的LSB被向上舍入,并且如果被移除的位小于LSB最大值的一半,那么尾数的LSB被向下舍入。在被移除的位等于LSB的最大值的一半的情况下,LSB被舍入到最接近的偶数,即,如果等于1则LSB被向上舍入,而如果等于0则向下舍入。
浮点数860的指数和符号位也由硬件模块计算。取决于位序列830的前导零的数量(以及相应地,执行的左移位的量)来确定指数。指数还可以取决于尾数850的舍入过程可能导致的任何舍入进位(rounding carry)来确定。这种舍入进位将导致预先舍入的尾数由全一组成,并因此舍入沿着尾数被传播到尾数的MSB。
使用以下公式来计算指数:
指数=expBias+expMax leadingZeroCount+roundingCarry
expBias等于指数偏差(即,单精度格式为127,而半精度格式为15)。expMax是偏移量,用于基于位序列810的长度来提供最大可能的指数。如果位序列810由32位组成,那么expMax等于31。leadingZerocount是位序列830的前导零的数量。roundingCarry是在尾数850由全一组成的情况下可能得到的舍入进位。
在其它示例中,将指数设置为等于-1,以便获得范围等于1的均匀分布。如果指数被设置为等于-1,那么将导致分布的范围为-0.5到0.5。图6图示了这种分布。
浮点数860的符号位被设置为等于有符号整数的符号位。
因此,本申请的实施例提供了用于在以零为中心的分布中产生有符号整数的装置和方法。有符号整数适用于转换成浮点数,以获得以零为中心的浮点数的分布。

Claims (12)

1.一种包括电路的硬件装置,该硬件装置包括:
寄存器,被配置为存储n位序列;
硬件模块,被配置为生成包括量值分量和符号位的有符号整数,所述硬件模块包括:
NOT门,该NOT门被配置为接收所述n位序列的最高有效位并输出所述符号位;
多个XNOR门,其中每个XNOR门被配置为:接收所述n位序列的最高有效位以作为输入;接收所述n位序列中的n-1个最低有效位之一以作为输入;以及提供所述量值分量的n-1个最高有效位中的对应位以作为输出;
其中,所述硬件模块被配置为通过以下操作生成包括量值分量和符号位的有符号整数:
如果来自所述寄存器的所述n位序列的最高有效位等于一:
将所述量值分量的n-1个最高有效位中的每一个最高有效位设置为等于所述n位序列的n-1个最低有效位中的对应位;以及
将所述符号位设置为等于零;
如果来自所述寄存器的所述n位序列的最高有效位等于零:
将所述量值分量的n-1个最高有效位中的每一个最高有效位设置为等于所述n位序列的n-1个最低有效位中的对应位的逆;以及
将所述符号位设置为等于一。
2.如权利要求1所述的硬件装置,其中所述硬件模块被配置为将所述量值分量的最低有效位设置为等于一。
3.如权利要求1或权利要求2所述的硬件装置,其中,所述硬件装置包括随机数生成器,该随机数生成器被配置为提供作为随机生成的位序列的所述n位序列。
4.如权利要求1或权利要求2所述的硬件装置,其中,所述硬件模块被配置为从所述有符号整数生成浮点数。
5.如权利要求4所述的硬件装置,其中,所述硬件模块被配置为通过以下操作生成浮点数的尾数:
将所述有符号整数的符号位设置为等于零以产生无符号位序列;
以等于所述无符号位序列的前导零的数量的量来对所述无符号位序列执行左移位;以及
将移位后的无符号位序列截断为针对所述尾数指定的位数。
6.如权利要求5所述的硬件装置,其中,所述硬件模块被配置为取决于所述前导零的数量来设置所述浮点数的指数。
7.如权利要求4所述的硬件装置,其中,所述硬件模块被配置为将所述浮点数的指数设置为等于-1。
8.如权利要求1或权利要求2所述的硬件装置,其中,所述硬件模块被配置为从相应的位序列生成在以零为中心的分布中的多个有符号整数。
9.如权利要求8所述的硬件装置,其中,所述硬件模块被配置为从所述相应的位序列生成在以零为中心的分布中的多个浮点数。
10.如权利要求1或权利要求2所述的硬件装置,其中,所述硬件模块被配置为通过以下操作计算所述量值分量:
将所述n位序列乘以二以生成第一中间值;
向所述第一中间值加上一以生成第二中间值;以及
从所述第二中间值减去二的n次幂作为所述量值分量。
11.一种用于生成包括量值分量和符号位的有符号整数的方法,该方法包括:
将n位序列存储在寄存器中;
由硬件模块中包括的NOT门接收所述n位序列的最高有效位并输出所述符号位;
由所述硬件模块中包括的多个XNOR门:接收所述n位序列的最高有效位以作为输入;接收所述n位序列中的n-1个最低有效位之一以作为输入;以及提供所述量值分量的n-1个最高有效位中的对应位以作为输出,
其中,如果所述n位序列的最高有效位等于一:
所述量值分量的n-1个最高有效位中的每一个最高有效位被设置为等于所述n位序列的n-1个最低有效位中的对应位;以及
所述符号位被设置为等于零;
如果所述n位序列的最高有效位等于零:
所述量值分量的n-1个最高有效位中的每一个最高有效位被设置为等于所述n位序列的n-1个最低有效位中的对应位的逆;以及
所述符号位设置被为等于一。
12.一种非暂时性介质,记录了计算机程序指令,所述计算机程序指令在被执行时使硬件装置执行如权利要求11所述的方法。
CN201980077105.8A 2018-12-21 2019-06-21 用于转换数字的硬件模块 Active CN113168310B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1821120.1 2018-12-21
GB1821120.1A GB2580160B (en) 2018-12-21 2018-12-21 Hardware module for converting numbers
PCT/EP2019/066477 WO2020126124A1 (en) 2018-12-21 2019-06-21 Hardware module for converting numbers

Publications (2)

Publication Number Publication Date
CN113168310A CN113168310A (zh) 2021-07-23
CN113168310B true CN113168310B (zh) 2022-08-16

Family

ID=65364567

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980077105.8A Active CN113168310B (zh) 2018-12-21 2019-06-21 用于转换数字的硬件模块

Country Status (7)

Country Link
US (1) US11449309B2 (zh)
EP (1) EP3847544B1 (zh)
JP (1) JP7405851B2 (zh)
KR (1) KR20210103552A (zh)
CN (1) CN113168310B (zh)
GB (1) GB2580160B (zh)
WO (1) WO2020126124A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113791756B (zh) * 2021-09-18 2022-12-23 中科寒武纪科技股份有限公司 转数方法、存储介质、装置及板卡
CN114462350B (zh) * 2021-12-21 2022-11-15 北京百度网讯科技有限公司 集成电路芯片验证方法、装置、电子设备及存储介质
EP4310666A1 (en) * 2022-07-18 2024-01-24 Quside Technologies S.L. Computer-implemented method for transforming a bit stream into a floating point number

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4218749A (en) * 1978-09-25 1980-08-19 Sangamo Weston, Inc. Apparatus and method for digital noise synthesis
CN101394266A (zh) * 2008-10-24 2009-03-25 华中科技大学 一种生成变参数混沌信号的方法及混沌保密通信系统
CN101674180A (zh) * 2008-09-10 2010-03-17 中国人民解放军信息工程大学 一种伪随机序列产生方法及加密方法
CN104009848A (zh) * 2014-05-26 2014-08-27 华南理工大学 一种混合型的多变量数字签名系统及方法
CN108287681A (zh) * 2018-02-14 2018-07-17 中国科学院电子学研究所 一种单精度浮点融合点乘运算单元

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3786490A (en) * 1972-04-20 1974-01-15 Bell Telephone Labor Inc Reversible 2{40 s complement to sign-magnitude converter
US4520347A (en) * 1982-11-22 1985-05-28 Motorola, Inc. Code conversion circuit
JPH06100961B2 (ja) * 1988-04-18 1994-12-12 富士通テン株式会社 デジタル信号処理プロセッサ
US6269384B1 (en) * 1998-03-27 2001-07-31 Advanced Micro Devices, Inc. Method and apparatus for rounding and normalizing results within a multiplier
US6542539B1 (en) * 1997-12-23 2003-04-01 Agere Systems Guardian Corp. Multiported register file for coefficient use in filters
US20030023653A1 (en) * 2001-01-29 2003-01-30 Andrew Dunlop System, method and article of manufacture for a single-cycle floating point library
US7236995B2 (en) * 2002-12-27 2007-06-26 Arm Limited Data processing apparatus and method for converting a number between fixed-point and floating-point representations
JP4418713B2 (ja) 2004-06-11 2010-02-24 キヤノン株式会社 乱数発生方法及び乱数発生装置
US8880571B2 (en) * 2006-05-05 2014-11-04 Microsoft Corporation High dynamic range data format conversions for digital media
EP2223431A1 (en) * 2008-08-15 2010-09-01 Lsi Corporation Ram list-decoding of near codewords
KR101443575B1 (ko) * 2013-04-29 2014-09-23 한국전자통신연구원 이진 난수열을 정수 난수로 변환하는 장치 및 방법
US9722629B2 (en) 2015-01-15 2017-08-01 Huawei Technologies Co., Ltd. Method and apparatus for converting from floating point to integer representation
US10089073B2 (en) * 2015-01-30 2018-10-02 Huawei Technologies Co., Ltd. Method and apparatus for converting from integer to floating point representation

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4218749A (en) * 1978-09-25 1980-08-19 Sangamo Weston, Inc. Apparatus and method for digital noise synthesis
CN101674180A (zh) * 2008-09-10 2010-03-17 中国人民解放军信息工程大学 一种伪随机序列产生方法及加密方法
CN101394266A (zh) * 2008-10-24 2009-03-25 华中科技大学 一种生成变参数混沌信号的方法及混沌保密通信系统
CN104009848A (zh) * 2014-05-26 2014-08-27 华南理工大学 一种混合型的多变量数字签名系统及方法
CN108287681A (zh) * 2018-02-14 2018-07-17 中国科学院电子学研究所 一种单精度浮点融合点乘运算单元

Also Published As

Publication number Publication date
WO2020126124A1 (en) 2020-06-25
US20210091786A1 (en) 2021-03-25
JP7405851B2 (ja) 2023-12-26
CN113168310A (zh) 2021-07-23
KR20210103552A (ko) 2021-08-23
EP3847544B1 (en) 2022-08-17
GB2580160A (en) 2020-07-15
US11449309B2 (en) 2022-09-20
GB201821120D0 (en) 2019-02-06
JP2022513300A (ja) 2022-02-07
GB2580160B (en) 2021-01-06
EP3847544A1 (en) 2021-07-14

Similar Documents

Publication Publication Date Title
CN109697048B (zh) 在神经网络中生成随机性
CN107340993B (zh) 运算装置和方法
CN113168310B (zh) 用于转换数字的硬件模块
CN110008952B (zh) 一种目标识别方法及设备
US11169778B2 (en) Converting floating point numbers to reduce the precision
KR20200004700A (ko) 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치
CN108139885B (zh) 浮点数舍入
JPH07248841A (ja) 非線形関数発生装置およびフォーマット変換装置
CN110020616B (zh) 一种目标识别方法及设备
JP7292297B2 (ja) 確率的丸めロジック
US11294635B2 (en) Pseudo-random number generator
US11023240B1 (en) Systems and methods for efficient scaling of quantized integers
US11175957B1 (en) Hardware accelerator for executing a computation task
JP6709266B2 (ja) ニューラルネットワークにおける処理
KR102339896B1 (ko) 프로세싱 엘리먼트, 이의 동작 방법, 및 이를 포함하는 가속기
CN115952847A (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
GR01 Patent grant
GR01 Patent grant