CN111796870B - 数据格式转换装置、处理器、电子设备及模型运行方法 - Google Patents

数据格式转换装置、处理器、电子设备及模型运行方法 Download PDF

Info

Publication number
CN111796870B
CN111796870B CN202010931638.2A CN202010931638A CN111796870B CN 111796870 B CN111796870 B CN 111796870B CN 202010931638 A CN202010931638 A CN 202010931638A CN 111796870 B CN111796870 B CN 111796870B
Authority
CN
China
Prior art keywords
data
value
bit
parameter
sign
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
CN202010931638.2A
Other languages
English (en)
Other versions
CN111796870A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202010931638.2A priority Critical patent/CN111796870B/zh
Publication of CN111796870A publication Critical patent/CN111796870A/zh
Application granted granted Critical
Publication of CN111796870B publication Critical patent/CN111796870B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Complex Calculations (AREA)

Abstract

本申请公开了一种数据格式转换装置、处理器、电子设备及模型运行方法,应用于数据计算技术领域。该装置包括:获取浮点格式数据的尾数段的值,得到第一数据;根据尾数段的各个数据位的值为第一数据添加先导位,得到第二数据;从移位寄存器的目标数据位开始存放第二数据,并根据指数段的值,沿移位寄存器中小数点的第一方向移动移位寄存器中的数据,得到浮点格式数据对应的定点格式数据。指数段对应的指数表示范围是[1‑emax,emax],目标数据位依据小数点位置、与第一方向相反的第二方向以及emax确定。如此,可以简化装置结构,减小尺寸,降低功耗。进一步地,有利于在芯片上集成大量的转换装置,以实现并行计算、批量处理等。

Description

数据格式转换装置、处理器、电子设备及模型运行方法
技术领域
本申请涉及数据计算技术领域,更具体地,涉及一种数据格式转换装置、处理器、电子设备及模型运行方法。
背景技术
浮点到定点转换单元作为基本的数据处理单元,被广泛应用于计算机学、通讯、人工智能等多个领域。以人工智能领域为例,伴随着人脸识别、图像分类等新兴技术的快速发展,对计算精度和速度的要求越来越高。基于此,通常在训练阶段采用浮点运算,以提高训练精度和收敛速度,而在推理阶段则采用定点计算,以提高计算速度。因此,底层的计算装置通常设置有用于将浮点格式数据转换为定点格式数据的计算结构,从而在保证计算精度的同时,提高面向不同应用、产品需求的通用性和灵活性。
但是,目前的浮点到定点转换单元的硬件结构复杂且硬件单元多,虽然可以满足功能上的需求,但是器件面积大、功耗高,从而给需要集成浮点到定点转换单元的图形处理器(Graphics Processing Unit,GPU)、人工智能(Artificial Intelligence,AI)芯片等超大规模高性能集成电路的制造带来较大挑战。
发明内容
本申请提出了一种数据格式转换装置、处理器、电子设备以及模型运行方法,可以改善上述问题。
一方面,本申请实施例提供了一种数据格式转换装置,用于将浮点格式数据转换为定点格式数据,浮点格式数据包括指数段和尾数段,指数段对应的指数表示范围为[1-emax,emax],emax为十进制的正整数,该装置包括移位单元,该移位单元用于:获取浮点格式数据的尾数段的值,得到第一数据;根据尾数段的各个数据位的值为第一数据添加先导位,得到第二数据;从移位寄存器的目标数据位开始存放第二数据,并根据指数段的值,沿移位寄存器中小数点的目标方向移动移位寄存器中的数据,得到浮点格式对应的定点格式数据;其中,目标数据位是基于目标方向以及emax确定的数据位。
另一方面,本申请实施例提供了一种处理器,包括:浮点计算单元;定点计算单元;以及,本申请实施例提供的数据格式转换装置,所述浮点计算单元通过所述数据格式转换装置与所述定点计算单元电连接。
另一方面,本申请实施例提供了一种电子设备,包括:浮点处理器;通用处理器;以及,本申请实施例提供的数据格式转换装置,所述浮点处理器通过所述数据格式转换装置与所述通用处理器电连接。
另一方面,本申请实施例提供了一种模型运行方法,包括:获取机器学习模型的模型参数,并将获取的模型参数作为第一参数,第一参数为浮点格式数据,第一参数包括指数段和尾数段,指数段对应的指数表示范围为[1-emax,emax],emax为十进制的正整数;获取第一参数的尾数段的值,得到第一数据,并根据尾数段的各个数据位的值为第一数据添加先导位,得到第二数据;从移位寄存器的目标数据位开始存放第二数据,并根据指数段的值,沿移位寄存器中小数点的目标方向移动移位寄存器中的数据,得到定点格式数据的第二参数;其中,目标数据位是基于目标方向和emax确定的数据位;基于第二参数,运行机器学习模型。
本申请提供的方案,在基于浮点格式数据的尾数段的值获得第一数据,并为第一数据添加先导位以得到第二数据后,无论浮点格式数据的真实指数是正数还是负数,都只需通过一个沿目标方向执行移位操作的移位单元,来对第二数据执行移位操作,以得到浮点格式数据对应的定点格式数据。可见,本申请提供的数据格式转换装置较现有的浮点到定点转换单元,至少减少了所需的移位单元的数量,简化了器件结构,缩小了器件面积,降低了器件功耗。
进一步地,对于需要集成浮点到定点转换器件的集成芯片而言,集成本申请提供的数据格式转换装置具有更低的制作难度。
本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请一实施例提供的一种数据格式转换装置的框图。
图2A示出了本申请另一实施例提供的一种数据格式转换装置的框图。
图2B示出了图2A所示的数据格式转换装置的转换过程示意图。
图3A示出了本申请另一实施例提供的一种数据格式转换装置的框图。
图3B示出了图3A所示的数据格式转换装置的转换过程示意图。
图4示出了本申请又一实施例提供的一种数据格式转换装置的框图。
图5示出了本申请又一实施例提供的一种数据格式转换装置的框图。
图6示出了图5所示格式转换单元的连接关系示意图。
图7A示出了图5所示的数据格式转换装置的转换过程示意图。
图7B示出了图5所示的数据格式转换装置的一个转换结果示意图。
图8示出了本申请实施例提供的一种处理器的框图。
图9示出了本申请实施例提供的一种电子设备的框图。
图10示出了本申请实施例提供的一种模型运行方法的流程示意图。
图11示出了图10所示步骤S1030的子步骤示意图。
图12示出了图10所示步骤S1020的子步骤示意图。
图13示出了图10所示步骤S1040的子步骤示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
浮点格式和定点格式是计算机系统中表达实数的两种方式。在定点格式中,小数点固定地位于所有数字中的某个位置。比如,一个4位的无符号十进制数,假如小数点固定地位于第2位数和第3位数之间,则这个4位的十进制数形如:XX.XX,其中,每个“X”的取值范围为0-9之间的任意整数,其表示的数值范围是[00.00,99.99]。又比如,一个8位的无符号二进制数,其小数点位于第3位数与第4位数之间,则这个二进制数形如:XXX.XXXXX,其中,每个“X”的取值为0或1,则这个二进制数的数值表示范围是[000.00000,111.11111]。再比如,如果上述的8位二进制数是一个有符号数,则其第一位是符号位,一般性地,符号位的值为1,表示符号是负,符号位的值是0,表示符号是正。在此情况下,上述二进制数的表示范围是[-11.11111,+11.11111]。
可以理解,定点格式数据的小数点并非是真实存在的点,而是逻辑层面上规定的小数点。比如上述的8位无符号二进制数,也可以规定其小数点处于第4位数和第5位数之间,则有XXXX.XXXX。
值得说明的是,本申请实施例涉及的是存储或需要存储于计算机设备的寄存器中的数据,因而,如没有特别说明,本申请实施例中的数据通常是指二进制数。
关于浮点格式数据,IEEE(Institute of Electrical and ElectronicsEngineers,电气和电子工程师协会)给出了其相关标准,如IEEE 754。其中,浮点格式数据采用如下形式来表示一个数N:
Figure 96354DEST_PATH_IMAGE002
, (1)
其中,S是浮点格式数据的符号位,如果S为0,表示N是正数;如果S为1,表示N是负 数。E为阶码(exponent),可以用于对尾数加权,这个权重是2的E次幂。阶码通常采用移位存 储的方式存储于寄存器中,详细地,可以将E减去一偏移值(bias)后的结果存储于寄存器中 的指数位,所有的指数位组成的字段可以视为指数段。其中,偏移值的大小与指数段包括的 数据位的数量相关。假定指数段包括j个数据位,则偏移值为
Figure 169353DEST_PATH_IMAGE003
。可以理解,上述的E 和bias均可以为十进制数。
比如,float16(IEEE半精度浮点数)的指数段包括5个数据位,则其偏移值为15。float16的指数段可以表示的数值范围为[0,31],其中,0对应的是5个数据位全为0的情况,31对应的是5个数据位全为1的情况。在IEEE 754中,指数段的数据位的值不全为0且不全为1时,浮点格式数据属于是规格化数(normal number),因此指数段的数值的实际范围是[1,30],对应地,指数段的数值减去一偏移值后才是阶码E,因此,float16的阶码范围是[-14,+15]。
类似地,bfloat16(16位大脑浮点数)的指数段包括8个数据位,则其偏移值是27-1=127,阶码范围是[-126,+127]。float32(IEEE单精度浮点数)的指数段包括也是包括8个数据位,则其偏移值也是127,阶码范围也是[-126,+127]。这里,值得说明的是,bfloat16的尾数段包括7个数据位,而float32的尾数段包括23个数据位。
在IEEE 754中,指数段的数据位全为0或者全为1,浮点格式数据表示的是非规格化数(abnormal number)。其中,指数段的数据位的值全为1,表示的是无穷大。具体地,符号位为0,表示正无穷大;符号位为1,表示负无穷大。当指数段的数据位全是0,则阶码默认为1-bias。可以看出,指数段的数据位全是0时的阶码,与指数段的数据是1时的阶码是相同的,都是1-bias。
F为尾数(signaficand),也可以称为有效数,它是一个二进制小数,其范围是(1, 2)或者(0,1)。一个例子中,N为+101.0111,则其按照表达式(1)可以表示为:
Figure 137309DEST_PATH_IMAGE004
,其中,S=0,E=2,F=1.010111。另一个例子中,N为-0.001001, 则按照表达式(1)其可以表示为:
Figure 233441DEST_PATH_IMAGE005
。可以看出,尾数的首位总是非 0的,即,均为1,因此实际存储中可以将尾数的首位省略,省略的首位也称先导位(leading bit),这种省略先导位的方式又称先导位约定(leading bit convention)。在IEEE 754中, 当指数段的数据位不全为0时,省略的先导位的值为1;当指数段的数据位全是0时,省略的 先导位为0。IEEE 754的这种设计,使得浮点格式数据的表示可以实现均匀递增。比如,假如 8位二进制浮点数的符号位是第1位,指数段是第2位至第5位,尾数段是第6位至第8位,则0 0000 111和0 0001 000所表示的实数只相差一个最小的8位二进制浮点数(这里为1/512)。
一些实施方式中,为了实现浮点格式数据到定点格式数据的转换,可以通过解码 单元将浮点格式数据的指数段的值解码成阶码E,并读取浮点格式数据的尾数段的值,并将 其恢复为上述的尾数F,再根据阶码E的符号(正或者负),选择通过左移单元或者右移单元 来对尾数F进行移位。具体地,当阶码E是正整数时,可以通过左移单元将尾数F左移E个数据 位。当阶码E是负整数时,可以通过右移单元将尾数F右移
Figure 758094DEST_PATH_IMAGE006
个数据位。这样,即可得到无符 号的定点格式数据。
但是,上述的浮点到定点转换器件所需的单元较多,结构比较复杂,导致器件面积较大,对应地,将这样的器件集成于GPU、AI芯片等集成芯片,给集成芯片的制造带来了巨大挑战。
请参照图1,图1是本申请一实施例提供的数据格式转换装置100的结构框图。数据格式转换装置100可以用于将浮点格式数据转换成定点格式数据。本实施例中的浮点格式数据均可以是IEEE 754规定的浮点数。在此情况下,浮点格式数据至少可以包括指数段以及尾数段,其中,指数段包括至少一个数据位,其数值的是经过编码的阶码E,编码方式可以参照上文对移位存储的相关介绍。尾数段包括至少一个数据位,基于先导位约定,尾数段的数值是省略先导位后的尾数F。
如上所述,浮点格式数据的阶码E存在一指数表示范围[emin,emax],这里的emin和emax均为十进制数。指数表示范围[emin,emax]与浮点格式数据的指数段相关,具体地,与指数段包括的数据位的数量相关。其中,emin表示指数段对应的指数表示范围的下限(即,最小值),emax表示指数段对应的指数表示范围的上限(即,最大值)。其中,以上述的指数段包括j个数据位为例,则有:
Figure 623282DEST_PATH_IMAGE007
, (2)
其中,
Figure 824456DEST_PATH_IMAGE008
对应的是指数段的各个数据位均为1的情况。由于
Figure 407884DEST_PATH_IMAGE009
, 因此有:
Figure 657600DEST_PATH_IMAGE010
Figure 455923DEST_PATH_IMAGE011
, (3)
Figure 765681DEST_PATH_IMAGE012
, (4)
数据格式转换装置100可以包括一移位单元110。移位单元110可以用于:获取浮点格式数据的尾数段的值,得到第一数据;根据尾数段的各个数据位的值为第一数据添加先导位,得到第二数据;从移位寄存器111的目标数据位开始存放所述第二数据,并根据所述指数段的值,沿所述移位寄存器111中小数点的第一方向移动所述移位寄存器111中的数据,得到所述浮点格式数据对应的定点格式数据。
其中,移位寄存器111可以是移位单元110的一部分,此外,移位单元110还可以包括脉冲提供子单元112,用于向移位寄存器111提供给定数量的时间脉冲(如,时钟信号),以促使移位寄存器111每接收到一个时间脉冲,则将存储的数据沿目标方向移动一个数据位。
本实施例中,浮点格式数据可以存储于浮点寄存器,如图1所示,其中示出了存储于浮点寄存器中的无符号的8位浮点格式数据901。浮点格式数据901包括指数段901E和尾数段901F,指数段901E包括3个数据位,尾数段901F包括5个数据位。
对应地,浮点寄存器中包括用于存储指数段的第一存储区域以及用于存储尾数段的第二存储区域。第一存储区域包括3个二进制位,每个二进制位用于存储指数段901E的一位数据。第二存储区域包括5个二进制位,每个二进制位用于存储尾数段901F的一位数据。本实施例中,第一存储区域和第二存储区域可以分别与移位单元110中的移位寄存器111连接,这样,移位寄存器111可以获取到第一存储区域中指数段901E的值,以及第二存储区域中尾数段901F的值。
详细地,移位单元110从第二存储区域读取的尾数段901F的值,即为第一数据。按照IEEE 754标准,尾数所省略的先导位是与指数段的数据相关的,因此,可以读取第一存储区域中每一二进制位的值,即可获得指数段901E的每一数据位的值,并依据指数段901E的每一数据位的值来确定被省略的先导位的值,再在第一数据的左侧进行数据位扩展。
具体地,可以将被省略的先导位的值添加到第一数据的左侧(即,添加一个最高位),添加有先导位后的第一数据即为第二数据。可以理解,这里的第二数据即为原始的尾数,即未经编码的尾数F。
可选地,移位单元110从第一存储区域读取指数段901E后,可以识别读取的每位数据是否为0,如果从第一存储区域读取的每位数据均为0,可以确定指数段901E的各个数据位是0,从而可以确定省略的先导位是1,则可以在第一数据的左侧添加一个值为1的数据位,也就是为第一数据添加一个最高位,添加的最高位的值是1。如果从第一存储区域读取的任意一位数据不是0(通常是1),则可以在第一数据的左侧添加一个值为0的数据位,也就是为第一数据添加一个最高位,添加的最高位的值是0。
在获得第二数据之后,可以从移位寄存器111的目标数据位开始存在第二数据。这样,假如第二数据包括m个数据位,则第二数据将会占据移位寄存器111中从目标数据位开始的m个数据位。以无符号的8位浮点数为例,其尾数段包括5个数据位,添加先导位后的第二数据包括6个数据位,则第二数据将会占据移位寄存器111中、从目标数据位开始的6个数据位。换句话说,假如目标数据位是移位寄存器111中的第i个数据位,则第二数据将会占据移位寄存器111中的第i个数据位至第i+m-1个数据位。
基于上文的描述,需要对尾数F执行何种移位操作时由阶码E得到的。而在上文描述的浮点到定点转换器件中,之所以既需要左移单元又需要右移单元,是因为阶码E的范围[emin,emax]既包含了负值,又包含了正值。也就是说,阶码E即有可能是正的,又有可能是负的。
本实施例中,可以通过选择尾数F(第二数据)在移位单元110的移位寄存器111中 的存放位置,使得移位寄存器111中的数据在移位单元110未进行移位前,就已经等同于被 右移了
Figure 898722DEST_PATH_IMAGE013
(也就是1-emax)个数据位,或者被左移了emax个数据位,这样,后续只需要 根据解码得到的阶码E对移位寄存器111中的数据相应地进行左移,或者右移即可。基于此, 目标数据位可以依据移位寄存器111中小数点的位置、第二方向以及emax确定。
其中,移位寄存器111中小数点的位置可以是逻辑层面规定的、小数点在移位寄存器111中的位置,通常是处于某两个二进制位之间。特别地,有时小数点也可以处于第一个二进制位(最高位)之前,这样,移位寄存器111中的数据表示的是一个定点格式的纯小数(整数部分是0);有时小数点也可以处于末尾的二进制位(最低位)之后,这样,移位寄存器111中的数据表示的是一个定点格式的混小数或带小数,即整数部分不为0的小数。
本实施例中,第二方向是与上述的第一方向相反的方向,即,第二方向与移位单元对移位寄存器111中的数据的移动方向相反。详细地,第一方向和第二方向的其中一者可以是移位寄存器111中小数点的左侧,另一者则为该小数点的右侧。目标数据位在小数点的第二方向的具体位置,与第二方向的选择相关。
一种实施方式中,第二方向是小数点的右侧,则目标数据位可以是移位寄存器111 中位于小数点的右侧的第emax-1个数据位(也就是,第
Figure 952129DEST_PATH_IMAGE014
个数据位),这样,在第二数 据从移位寄存器111的目标数据位开始存放的情况下,移位寄存器111中的数据可以视为: 将第二数据向右侧移动emax-1个数据位得到的数据。换句话说,在移位单元110进行移位操 作前,第二数据已经右移了emax-1个数据位,那么,要获得浮点格式数据901对应的定点格 式数据901’,只需将解码后指数(阶码E)减去1-emax,再按照得到的数值进行移位。阶码E的 取值范围是[1-emax,emax],因而可以确定阶码E与1-emax的差不会是负数,换句话说,移位 单元110只需要向一个方向(左侧)执行移位操作。对应地,数据格式转换装置100只需要一 种移位单元即可实现将无符号的浮点格式数据转换为定点格式数据。
在此实施方式中,移位单元110可以是左移单元,并且,数据格式转换装置还可以包括一用于解码指数段的单元。请参照图2A,其中示例性地示出了本申请另一实施例提供的数据格式转换装置200,其包括左移单元210以及解码单元220。其中,左移单元210包括的移位寄存器可以是左移寄存器,解码单元220用于将浮点格式数据的指数段的值减去一偏移值,得到解码后指数。这个偏移值是上文描述的bias与移位寄存器中的数据默认右移的位数(1-emax)之和,即:bias+(1-emax)。换句话说,解码单元220所做的处理是:
Figure 791909DEST_PATH_IMAGE015
Figure 82689DEST_PATH_IMAGE016
, (5)
其中,K表示浮点格式数据的指数段的值所表示的十进制数,例如,上述浮点寄存器中的第一存储区域存储的值所表示的十进制数。
进一步地,左移单元210可以用于将移位寄存器中的数据左移K-1个数据位,左移后的数据即为浮点格式数据对应的定点格式数据。
请参照图2B,其中示例性地示出了通过图2A所示的数据格式转换装置200,对浮点格式数据901进行转换,以得到定点格式数据901’的过程。其中,指数段901E的3个数据位的值为001,尾数段901F的5个数据位的值 01101。
左移单元210可以读取尾数段901F的值作为第一数据(即,01101),并读取指数段901E的值,确定指数段901E中存在值为1的数据位,因此确定尾数段901F省略的先导位的值是1,从而为第一数据添加一个值为1的最高位,得到的第二数据是101101。可以理解,这里的第二数据实际是尾数F,F=Y.M,Y表示先导位,M表示尾数段901F的值。也就是说,101101应该是1.01101的形式。
然后,在处理过程P0中,左移单元210将第二数据101101存放到移位寄存器中,通常情况下第二数据是按照虚线框201中的位置存放的。但是本实施例中,为了实现数据格式转换装置的结构的简化,按照虚线框202中的位置进行存放。如202所示,目标数据位是小数点的位置的右侧第1-emax个数据位,在此示例中,emax=3,因而目标数据位是小数点的位置的右侧第2个数据位。也就是,从目标数据位203开始,在移位寄存器中存放第二数据101101。
需要说明的是,虚线框201仅是为了说明本方案的原理而展示的,左移单元210实际并未按照201存放第二数据。
按照202的位置存放第二数据101101,则移位寄存器中的数据实际是:0000.0101101,则相当于是将第二数据1.01101右移了2位。
再然后,解码单元220读取指数段901E的值,并对读取的值进行解码,即,将001减去bias+(1-emax),得到的解码后指数是0。即,K-1的值为0,不需要对移位寄存器中的数据进行移位。
在处理过程P1中,左移单元210可以直接将移位寄存器中的数据0000.0101101作为浮点格式数据901对应的定点格式数据901’。
另一种实施方式中,第二方向是小数点的左侧,则目标数据位可以是移位寄存器111中位于小数点的左侧的第emax个数据位,如此,在第二数据从移位寄存器111的目标数据位开始存放的情况下,移位寄存器111中的数据可以视为:将第二数据向左侧移动emax个数据位得到的数据。换句话说,在移位单元110进行移位操作之前,第二数据已经左移了emax个数据位,那么,要获得浮点格式数据901对应的定点格式数据901’,只需将解码后指数(阶码E)减去emax,再按照得到的数值进行移位。阶码E的取值范围是[1-emax,emax],因而可以确定阶码E与emax的差不会是正数,换句话说,移位单元110只需要向一个方向(右侧)执行移位操作。对应地,数据格式转换装置100只需要一种移位单元,即可将无符号的浮点格式数据转换成定点格式数据。
请参照图3A,其中示例性地示出了本申请另一实施例提供的数据格式转换装置300的结构框图。装置300可以包括相互电连接的右移单元310和解码单元320,其中,右移单元310中的移位寄存器可以是右移寄存器,解码单元320用于将浮点格式数据的指数段减去一偏移值,得到解码后指数。这里的偏移值是上文描述的bias与移位寄存器中的数据默认左移的位数emax之和,即:bias+emax。换句话说,解码单元320所做的处理是:
Figure 375130DEST_PATH_IMAGE017
, (6)
其中,K表示浮点格式数据的指数段的值所表示的十进制数,例如上述第一存储区 域存储的值。可以看出,K减去的偏移值是emax的2倍,即是bias的2倍。
Figure 294544DEST_PATH_IMAGE018
即为 解码后指数。
进一步地,右移单元310可以用于将移位寄存器中的数据右移目标数量个数据位, 该目标数量为
Figure 988831DEST_PATH_IMAGE019
,右移后的数据就是浮点格式数据对应的定点格式数 据。
请参照图3B,其中示例性地示出了通过图3A所示的数据格式转换装置300,对浮点格式数据901进行转换,以得到定点格式数据901’的过程。
右移单元310可以读取尾数段901F的值,得到第一数据01101,并读取指数段901E的值,确定指数段901E中存在值为1的数据位,因此确定尾数段901F省略的先导位的值是1,从而在第一数据01101的左侧添加一个值为1的先导位,得到第二数据101101。可以确定,第二数据实际形如:1.01101。
在处理过程P2中,右移单元310将第二数据101101存放到移位寄存器中,通常情况下可以按照虚线框301进行存放。但本实施例中,为了实现数据格式转换装置的结构的简化,按照虚线框302中所示位置存放第二数据。详细地,在302中,目标数据位是小数点的位置的左侧第emax个数据位,在此示例中,emax=3,因而目标数据位是小数点的位置的左侧第3个数据位,比如,图3B所示的数据位303。对应地,右移单元310从目标数据位303开始,在移位寄存器中存放第二数据101101。值得说明的是,虚线框301仅是为了便于理解本方案原理而示出的,右移单元301实际并未按照301存放第二数据,而是按照302所示位置存放第二数据。如302所示,移位寄存器中的数据实际是:1011.0100000,其相当于是将第二数据1.01101左移了3位。
然后,解码单元320可以读取指数段901E的值,并对读取的值进行解码,即,将001 减去一偏移值bias+emax,得到的解码后指数为-5。即
Figure 453441DEST_PATH_IMAGE020
为-5。如此,可以确 定目标数量为5,在处理过程P3中,右移单元310可以控制移位寄存器中的数据右移5个数据 位,得到的数据0000.0101101即为定点格式数据901’。
通过本申请上述实施例提供的数据格式转换装置,在转换过程中只需使用一种移位单元,简化了数据格式转换装置的结构,从而减小了装置的面积,将本申请实施例提供的数据格式转换装置集成于GPU、AI芯片等超大规模芯片,可以降低芯片制造的难度。
请参照图4,图4示出了本申请另一实施例提供的一种数据格式转换装置400的结构框图。本实施例中,第一方向是移位寄存器中小数点的左侧,第二方向是该小数点的右侧,目标数据位是移位寄存器中、位于小数点的右侧的第emax-1个数据位。在此情况下,数据格式转换装置400仅包括一左移单元410。
结合图2A和2B所示的实施例,可以看出,左移单元210实际是将移位寄存器中的数据左移K-1个数据位,而K就是浮点格式数据的指数段的值。因此,在从移位寄存器的目标数据位开始,将第二数据存放于移位寄存器之后,可以无需对指数段的值进行解码,而直接基于指数段的值确定右移单元410需要对移位寄存器中的数据移动的位数。如此,可以进一步简化数据格式转换装置的结构。
通过本申请的上述实施例提供的装置,可以实现对无符号的浮点格式数据的转换。对应地,转换得到的定点格式数据也是无符号的定点格式数据。对于有符号的浮点格式数据,在获得移位单元输出的无符号的定点格式数据之后,可以进一步地将其转换为有符号的定点格式数据。
基于此,如图5所示,其中示出了本申请另一实施例提供的数据格式转换装置500的结构框图。
数据格式转换装置500可以包括移位单元510和格式转换单元520。需要说明的是,这里的移位单元510可以是左移单元或者右移单元,如果移位单元510是右移单元,则装置500还可以包括一解码单元,具体可以参照上文对图3A和3B所示实施例的描述。如果移位单元510是左移单元,则装置500可以包括解码单元(参照图2A和2B所示实施例),也可以不包括(参照图4所示实施例)。
本实施例中,如图5所示,有符号的浮点格式数据902可以存储于对应格式的浮点寄存器中,有符号的浮点格式数据可以包括符号位902S、指数段902E以及尾数段902F。其中,符号位902S包括一个数据位,指数段可以包括至少一个数据位,尾数段可以包括至少一个数据位。以902是有符号的float16为例,902E可以包括5个数据位,902F可以包括10个数据位。
格式转换单元520可以用于:读取符号位的值,根据所述符号位的值确定所述浮点格式数据的符号,所述符号为正或者负;根据所述浮点格式数据的符号,将所述无符号的定点格式数据转换成有符号的定点格式数据。
详细地,如上述实施例描述的,浮点寄存器中用于存储指数段的第一存储区域以及用于存储尾数段的第二存储区域,可以与移位单元510中的移位寄存器连接。浮点寄存器中用于存储符号位的值的第三存储区域,可以与格式转换单元520连接,这样,格式转换单元520可以读取到符号位的值。
在IEEE 754标准中,如果符号位的值为1,表示浮点格式数据是负数;如果符号位的值为0,表示浮点格式数据是正数。基于此,格式转换单元520可以在读取的符号位的值是0时,确定浮点格式数据的符号为正,从而为无符号的定点格式数据添加一个值为0的符号位,得到的数据就是有符号的定点格式数据。
对应地,格式转换单元520可以在读取的符号位的值是1时,确定浮点格式数据的符号为负,从而为无符号的定点格式数据添加一个值为1的符号位,并且,由于负数在计算机系统的寄存器中通常是以补码形式存储,而上述的移位单元510输出的无符号的定点格式数据还是原码形式,因此,可以将移位单元510输出的无符号的定点格式数据转换成补码形式,补码形式的无符号的定点格式数据与添加的值为1的符号位组成了有符号的定点格式数据。
详细地,请参照图6,其中示出了格式转换单元520的一种示例性连接关系示意图。其中,格式转换单元520可以包括输入子单元521、第一转换子单元522、第二转换子单元523以及选择子单元524。
第一转换子单元522和第二转换子单元523分别与输入子单元521电连接,输入子单元521还与移位单元510电连接,具体可以是与移位单元510中的移位寄存器电连接。输入子单元521可以用于根据浮点格式数据的符号位的值,将移位单元510输出的无符号的定点格式数据输入到第一转换子单元522和第二转换子单元523中的一者。
第一转换子单元522和第二转换子单元523还分别与选择子单元524电连接,选择子单元523用于根据浮点格式数据的符号位的值,从第一转换子单元522的输出数据和第二转换子单元523的输出数据中选择一者作为有符号的浮点格式数据所对应的,有符号的定点格式数据。
其中,第一转换子单元522可以用于在无符号的定点格式数据的左侧添加值为0的符号位,并将添加符号位后的无符号的定点格式数据输出。
第二转换子单元523可以用于在无符号的定点格式数据的左侧添加值为1的符号位,以及将该无符号定点格式数据从原码形式转换为补码形式,并将添加符号位的、补码形式的无符号定点格式数据输出。这里,第二转换子单元523可以对无符号定点格式数据取反,再将取反后的无符号定点格式数据加1,即可得到补码形式的无符号定点格式数据。
在此情况下,输入子单元521可以用于当符号位的值为0,将移位单元510的输出数据(无符号的定点格式数据)输入到第一转换子单元522;当符号位的值为1,将移位单元510的输出数据输入到第二转换子单元523。对应地,选择子单元524可以用于当符号位的值为0,选取第一转换子单元522的输出数据作为有符号的定点格式数据;当符号位的值为1,选取第二转换子单元523的输出数据作为有符号的定点格式数据。可选地,所述选择子单元524例如可以是多路信号选择器,第一转换子单元522和第二转换子单元523分别作为该多路信号选择器的两路输入信号,多路信号选择器可以基于符号位的值从这两路输入信号中选择一路作为输出。
请参照图7A,其中以浮点格式数据902是有符号的float16数据、移位单元510是左移单元、且数据格式转换装置500不包括解码单元为例,对数据格式转换装置500将浮点格式数据902转换成有符号的定点格式数据的过程进行介绍。
其中,902的符号位902S的值为0,即,浮点格式数据902是一个正数。指数段902E包括5个数据位,依次为00011。尾数段902F包括10个数据位,依次为01 0000 0111。
数据格式转换装置500中的左移单元可以读取尾数段902F的值,得到第一数据010000 0111;并读取指数段902E的值,确定902E中存在值为1的数据位,因此可以确定尾数段902F省略的先导位的值为1,因此,为第一数据添加值为1的先导位,得到第二数据1. 010000 0111。然后,进入处理过程P4,从目标数据位开始,在左移单元的左移寄存器中存放第二数据。这里的目标数据位例如可以是图7A所示的701,即,小数点的右侧的第1-emax个数据位,也就是小数点右侧的第14个数据位。
这样,左移寄存器中的数据可以视为第二数据右移14位后的数据。对应地,在处理过程P5中,只需将左移寄存器中的数据左移K-1(这里是3-1,也就是2)个数据位,即可得到浮点格式数据902对应的无符号的定点格式数据902’。
进入处理过程P6,输入子单元521可以读取符号位902S的值,由于读取的值为0,输入子单元521可以将左移单元输出的定点格式数据902’输入到第一转换子单元522,第一转换子单元522为定点格式数据902’添加值为0的符号位,得到有符号的定点格式数据902’’。
值得说明的是,如果符号位902S的值为1,则输入子单元521可以将左移单元输出的定点格式数据902’输入到第二转换子单元523,第二转换子单元523可以包括一取反单元,对定点格式数据902’取反,并为取反后的902’’添加值为1的符号位,从而得到如图7B所示的有符号的定点格式数据902’’’。
值得说明的是,本申请实施例中,基于IEEE 754标准,当指数段的值为0和1时,指数段对应的阶码是相同的,都是1-bias,因此,当指数段的值(也就是,K)为0和1时,都可以默认不对左移寄存器中的数据进行左移,以避免在K=0时,移位出错。
通过上述设计,数据格式转换装置500可以省去右移单元和解码单元,大大减小了器件结构,进而减小了器件尺寸和面积,降低了功耗。此外,也降低了将数据格式转换装置集成于芯片的难度。
在本申请所提供的各实施例中,所显示或讨论的模块相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
请参照图8,其中示出了本申请实施例提供的一种处理器的结构框图。处理器800可以包括浮点计算单元810、定点计算单元820以及数据格式转换装置830,其中,每个浮点计算单元810通过一数据格式转换装置830与对应的定点计算单元820电连接。这里的数据格式转换后装置830可以是本申请上述任一实施例提供的数据格式转换装置,比如,100、200、300、400或者500。可选地,处理器800例如可以是GPU、AI芯片等,本申请实施例对此没有限制。
请参照图9,其中示出了本申请实施例提供的一种电子设备的结构框图。电子设备900可以包括浮点处理器(Float Processing Unit,FPU)910、通用处理器(CenterProcessing Unit,CPU)920以及数据格式转换装置930。其中,浮点处理器910通过数据格式转换装置930与通用处理器920电连接,这里的数据格式转换装置930例如可以本申请上述实施例提供的100、200、300、400或者500。
本实施例中,电子设备900例如可以是终端设备或者服务器,终端设备例如可以是智能手机、平板电脑、笔记本电脑、个人计算机(Personal Computer,PC)、便携式穿戴设备(如,智能手表)、智能音箱等,但并不局限于此。 例如可以是独立的物理服务器,也可以是多个物理服务器构成的服务器积存或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(ContentDelivery Network,内容分发网络)以及大数据和人工智能平台等基础云计算服务的云服务器。
以电子设备900是用于运行机器学习模型的服务器为例,训练获得的机器学习模型的模型参数通常是浮点格式数据,而在应用该机器学习模型的阶段,通常希望进行定点运算,以提升运算效率。因此,电子设备900可以通过数据格式转换装置930,将模型参数从浮点格式数据转换成定点格式数据。具体可以通过图10所示的模型转换方法实现,该方法可以包括以下流程:
S1010,获取机器学习模型的模型参数,并将获取的模型参数作为第一参数,所述第一参数为浮点格式数据,所述第一参数包括指数段和尾数段,所述指数段对应的指数表示范围为[1-emax,emax],emax为十进制的正整数。
S1020,获取所述第一参数的尾数段的值,得到第一数据,并根据所述尾数段的各个数据位的值为所述第一数据添加先导位,得到第二数据。
S1030,从移位寄存器的目标数据位开始存放所述第二数据,并根据所述指数段的值,沿所述移位寄存器中小数点的第一方向移动所述移位寄存器中的数据,得到定点格式的第二参数;其中,所述目标数据位是基于所述小数点的位置、与所述第一方向相反的第二方向和emax确定的数据位。
本实施例中,S1010-S1030可以由移位单元实现,其详细实现过程可以参照上文对移位单元的处理过程的描述。
S1040,基于所述第二参数,运行所述机器学习模型。
在将浮点格式的第一参数转换成定点格式的第二参数后,电子设备900可以按照第二参数来运行机器学习模型。这样,在运行过程中所执行的运算为定点运算,相较于浮点运算可以具有更高的效率。
一种实施方式中,所述第一方向可以是所述小数点的左侧,则所述第二方向可以是所述小数点的右侧,所述目标数据位可以是所述移位寄存器中、位于所述小数点的右侧的第emax-1个数据位。在此情况下,移位单元可以是左移单元,对应地,步骤S1030中,根据所述指数段的值,沿所述移位寄存器中小数点的第一方向移动所述移位寄存器中的数据,得到定点格式的第二参数的步骤,可以通过如下流程实现:
将所述移位寄存器中的数据左移K-1个数据位,得到所述第二参数,其中,K为所述指数段的值所表示的十进制数。
上述流程可以由左移单元实现,其详细实现流程可以参照上文对左移单元的描述。
另一种实施方式中,所述第一方向可以是所述小数点的右侧,所述第二方向可以是所述小数点的左侧,所述目标数据位可以是所述移位寄存器中、位于所述小数点的左侧的第emax个数据位。在此情况下,数据格式转换装置930还可以包括解码单元,移位单元则可以为右移单元。对应地,步骤S1030中,根据所述指数段的值,沿所述移位寄存器中小数点的第一方向移动所述移位寄存器中的数据,得到定点格式的第二参数的步骤,可以包括图11所示的如下子步骤:
S1031,将指数段的值减去一偏移值,得到解码后指数,所述偏移值为emax的两倍。
S1032,将移位寄存器中的数据右移目标数量个数据位,得到所述第二参数,所述目标数量为所述解码后指数的绝对值。
其中,S1031可以由解码单元执行,S1032则可以由右移单元执行,其具体实现过程可以参照上文对图3A和3B所示实施例的详细描述。
可选地,本实施例中,步骤S1020中,根据所述尾数段的各个数据位的值为所述第一数据添加先导位,得到第二数据的步骤,可以通过图12所示流程实现,具体包括以下步骤:
S1021,获取指数段的各个数据位的值。
S1022,若所述各个数据位的值均为0,则在所述第一数据的左侧添加值为0的先导位,并将添加先导位后的第一数据确定为所述第二数据。
S1023,若所述指数段的任一数据位的值为1,则在所述第一数据的左侧添加值为1的先导位,并将添加先导位后的第一数据确定为所述第二数据。
S1021-S1023可以由移位单元实现,具体实现过程可以参照上文对于先导位的添加过程的描述,在此不再赘述。
可选地,本实施例中,所述第一参数可以为有符号的浮点格式数据。在此情况下,所述第一参数还可以包括符号位,所述第二参数可以为无符号的定点格式数据。对应地,数据格式转换装置930还可以包括一格式转换单元,步骤S1040可以包括图13所示的如下步骤:
S1041,读取所述第一参数的符号位的值,根据所述符号位的值确定所述第一参数的符号,所述符号为正或者负。
S1042,根据所述第一参数的符号,将所述第二参数转换成第三参数,所述第三参数是有符号的定点格式数据。
进一步地,步骤S1041中根据所述符号位的值确定所述第一参数的符号的步骤可以包括如下两个步骤:
若所述符号位的值为0,确定所述第一参数的符号为正;
若所述符号位的值为1,确定所述第一参数的符号为负。
步骤S1042则可以包括如下两个步骤:
若所述第一参数的符号为正,在所述第二参数的左侧添加值为0的符号位,并将添加符号位后的第二参数确定为所述第三参数;
若所述第一参数的符号为负,在所述第二参数的左侧添加值为1的符号位,并将所述第二参数从原码形式转换为补码形式,并将添加符号位后的补码形式的第二参数确定为所述第三参数。
其中,S1041-S1042可以由格式转换单元实现,详细地,S1041可以由输入子单元实现,S1042可以由第一转换子单元和第二转换子单元中的一者实现。详细实现过程可以参照上文对于格式转换单元的描述。
S1043,基于所述第三参数,运行所述机器学习模型。
在获得有符号的定点格式的第三参数之后,可以加载第三参数,从而实现对机器学习模型的运行。
通过上述方法,可以比较高效地运行机器学习模型,并且,电子设备900所使用的AI芯片上的数据格式转换装置结构简单,制造难度小,功耗也比较小。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述方法步骤的具体工作过程,可以参考前述装置实施例中的对应模块的运行过程,在此不再赘述。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (20)

1.一种数据格式转换装置,其特征在于,用于将浮点格式数据转换为定点格式数据,所述浮点格式数据包括指数段和尾数段,所述指数段对应的指数表示范围为[1-emax,emax],emax为十进制的正整数,所述装置包括移位单元,所述移位单元用于:
获取所述浮点格式数据的尾数段的值,得到第一数据;根据所述尾数段的各个数据位的值为所述第一数据添加先导位,得到第二数据;从移位寄存器的目标数据位开始存放所述第二数据,并根据所述指数段的值,沿所述移位寄存器中小数点的第一方向移动所述移位寄存器中的数据,得到所述浮点格式数据对应的定点格式数据;其中,所述目标数据位是基于所述小数点的位置、与所述第一方向相反的第二方向以及emax确定;
其中,所述第一方向是所述小数点的左侧,所述第二方向是所述小数点的右侧,所述目标数据位是所述移位寄存器中、位于所述小数点的右侧的第emax-1个数据位;
所述移位单元为左移单元,用于将所述移位寄存器中的数据左移K-1个数据位,得到所述浮点格式数据对应的定点格式数据,其中,K为所述指数段的值所表示的十进制数。
2.根据权利要求1所述的装置,其特征在于,所述移位单元通过如下方式为所述第一数据添加先导位:
读取所述指数段的各个数据位的值;若所述各个数据位的值均为0,则在所述第一数据的左侧添加值为0的先导位;若所述指数段的任一数据位的值为1,则在所述第一数据的左侧添加值为1的先导位。
3.根据权利要求1-2中任意一项所述的装置,其特征在于,所述浮点格式数据为有符号的浮点格式数据,所述浮点格式数据还包括符号位,所述定点格式数据为无符号的定点格式数据;所述装置还包括格式转换单元,所述格式转换单元用于:
读取所述符号位的值,根据所述符号位的值确定所述浮点格式数据的符号,所述符号为正或者负;根据所述浮点格式数据的符号,将所述无符号的定点格式数据转换成有符号的定点格式数据。
4.根据权利要求3所述的装置,其特征在于,所述格式转换单元包括输入子单元、第一转换子单元、第二转换子单元以及选择子单元,所述第一转换子单元和所述第二转换子单元分别与所述输入子单元电连接,所述第一转换子单元和所述第二转换子单元还分别与所述选择子单元电连接;其中,
所述输入子单元,用于读取所述浮点格式数据的符号位的值,根据所述符号位的值将所述无符号的定点格式数据输入所述第一转换子单元或者所述第二转换子单元;
所述第一转换子单元,用于在所述无符号的定点格式数据的左侧添加值为0的符号位;
所述第二转换子单元,用于在所述无符号的定点格式数据的左侧添加值为1的符号位,并将所述无符号的定点格式数据从原码形式转换为补码形式;
所述选择子单元,用于根据所述符号位的值选择所述第一转换子单元和所述第二转换子单元中的一者的输出数据,作为所述有符号的定点格式数据。
5.根据权利要求4所述的装置,其特征在于,所述输入子单元具体用于当所述符号位的值为0,将所述无符号的定点格式数据输入所述第一转换子单元,当所述符号位的值为1,将所述无符号的定点格式数据输入所述第二转换子单元;
所述选择子单元,用于当所述符号位的值为0,选取所述第一转换子单元的输出数据作为所述有符号的定点格式数据,当所述符号位的值为1,选取所述第二转换子单元的输出数据作为所述有符号的定点格式数据。
6.一种数据格式转换装置,其特征在于,用于将浮点格式数据转换为定点格式数据,所述浮点格式数据包括指数段和尾数段,所述指数段对应的指数表示范围为[1-emax,emax],emax为十进制的正整数,所述装置包括移位单元,所述移位单元用于:
获取所述浮点格式数据的尾数段的值,得到第一数据;根据所述尾数段的各个数据位的值为所述第一数据添加先导位,得到第二数据;从移位寄存器的目标数据位开始存放所述第二数据,并根据所述指数段的值,沿所述移位寄存器中小数点的第一方向移动所述移位寄存器中的数据,得到所述浮点格式数据对应的定点格式数据;其中,所述目标数据位是基于所述小数点的位置、与所述第一方向相反的第二方向以及emax确定;
其中,所述第一方向为所述小数点的右侧,所述第二方向是所述小数点的左侧,所述目标数据位是所述移位寄存器中、位于所述小数点的左侧的第emax个数据位;
所述装置还包括解码单元,所述解码单元用于将所述指数段的值减去一偏移值,得到解码后指数,所述偏移值为emax的两倍;
所述移位单元为右移单元,用于将所述移位寄存器中的数据右移目标数量个数据位,所述目标数量为所述解码后指数的绝对值。
7.根据权利要求6所述的装置,其特征在于,所述移位单元通过如下方式为所述第一数据添加先导位:
读取所述指数段的各个数据位的值;若所述各个数据位的值均为0,则在所述第一数据的左侧添加值为0的先导位;若所述指数段的任一数据位的值为1,则在所述第一数据的左侧添加值为1的先导位。
8.根据权利要求6-7中任意一项所述的装置,其特征在于,所述浮点格式数据为有符号的浮点格式数据,所述浮点格式数据还包括符号位,所述定点格式数据为无符号的定点格式数据;所述装置还包括格式转换单元,所述格式转换单元用于:
读取所述符号位的值,根据所述符号位的值确定所述浮点格式数据的符号,所述符号为正或者负;根据所述浮点格式数据的符号,将所述无符号的定点格式数据转换成有符号的定点格式数据。
9.根据权利要求8所述的装置,其特征在于,所述格式转换单元包括输入子单元、第一转换子单元、第二转换子单元以及选择子单元,所述第一转换子单元和所述第二转换子单元分别与所述输入子单元电连接,所述第一转换子单元和所述第二转换子单元还分别与所述选择子单元电连接;其中,
所述输入子单元,用于读取所述浮点格式数据的符号位的值,根据所述符号位的值将所述无符号的定点格式数据输入所述第一转换子单元或者所述第二转换子单元;
所述第一转换子单元,用于在所述无符号的定点格式数据的左侧添加值为0的符号位;
所述第二转换子单元,用于在所述无符号的定点格式数据的左侧添加值为1的符号位,并将所述无符号的定点格式数据从原码形式转换为补码形式;
所述选择子单元,用于根据所述符号位的值选择所述第一转换子单元和所述第二转换子单元中的一者的输出数据,作为所述有符号的定点格式数据。
10.根据权利要求9所述的装置,其特征在于,所述输入子单元具体用于当所述符号位的值为0,将所述无符号的定点格式数据输入所述第一转换子单元,当所述符号位的值为1,将所述无符号的定点格式数据输入所述第二转换子单元;
所述选择子单元,用于当所述符号位的值为0,选取所述第一转换子单元的输出数据作为所述有符号的定点格式数据,当所述符号位的值为1,选取所述第二转换子单元的输出数据作为所述有符号的定点格式数据。
11.一种处理器,其特征在于,包括:
浮点计算单元;
定点计算单元;以及,
如权利要求1-5中任意一项所述的数据格式转换装置或者如权利要求6-10中任意一项所述的数据格式转换装置,所述浮点计算单元通过所述数据格式转换装置与所述定点计算单元电连接。
12.一种电子设备,其特征在于,包括:
浮点处理器;
通用处理器;以及,
如权利要求1-5中任意一项所述的数据格式转换装置或者如权利要求6-10中任意一项所述的数据格式转换装置,所述浮点处理器通过所述数据格式转换装置与所述通用处理器电连接。
13.一种模型运行方法,其特征在于,包括:
获取机器学习模型的模型参数,并将获取的模型参数作为第一参数,所述第一参数为浮点格式数据,所述第一参数包括指数段和尾数段,所述指数段对应的指数表示范围为[1-emax,emax],emax为十进制的正整数;
获取所述第一参数的尾数段的值,得到第一数据,并根据所述尾数段的各个数据位的值为所述第一数据添加先导位,得到第二数据;
从移位寄存器的目标数据位开始存放所述第二数据,并根据所述指数段的值,沿所述移位寄存器中小数点的第一方向移动所述移位寄存器中的数据,得到定点格式的第二参数;其中,所述目标数据位是基于所述小数点的位置、与所述第一方向相反的第二方向和emax确定;
基于所述第二参数,运行所述机器学习模型;
其中,所述第一方向是所述小数点的左侧,所述第二方向是所述小数点的右侧,所述目标数据位是所述移位寄存器中、位于所述小数点的右侧的第emax-1个数据位;所述根据所述指数段的值,沿所述移位寄存器中小数点的目标方向移动所述移位寄存器中的数据,得到定点格式的第二参数,包括:将所述移位寄存器中的数据左移K-1个数据位,得到所述第二参数,其中,K为所述指数段的值所表示的十进制数。
14.根据权利要求13所述的方法,其特征在于,所述根据所述尾数段的各个数据位的值为所述第一数据添加先导位,得到第二数据,包括:
获取所述指数段的各个数据位的值;
若所述各个数据位的值均为0,则在所述第一数据的左侧添加值为0的先导位,并将添加先导位后的第一数据确定为所述第二数据;
若所述指数段的任一数据位的值为1,则在所述第一数据的左侧添加值为1的先导位,并将添加先导位后的第一数据确定为所述第二数据。
15.根据权利要求13-14中任意一项所述的方法,其特征在于,所述第一参数为有符号的浮点格式数据,所述第一参数还包括符号位,所述第二参数为无符号的定点格式数据;所述基于所述第二参数,运行所述机器学习模型,包括:
读取所述第一参数的符号位的值,根据所述符号位的值确定所述第一参数的符号,所述符号为正或者负;
根据所述第一参数的符号,将所述第二参数转换成第三参数,所述第三参数是有符号的定点格式数据;
基于所述第三参数,运行所述机器学习模型。
16.根据权利要求15所述的方法,其特征在于,所述根据所述符号位的值确定所述第一参数的符号,包括:
若所述符号位的值为0,确定所述第一参数的符号为正;
若所述符号位的值为1,确定所述第一参数的符号为负;
所述根据所述第一参数的符号,将所述第二参数转换成第三参数,包括:
若所述第一参数的符号为正,在所述第二参数的左侧添加值为0的符号位,并将添加符号位后的第二参数确定为所述第三参数;
若所述第一参数的符号为负,在所述第二参数的左侧添加值为1的符号位,并将所述第二参数从原码形式转换为补码形式,并将添加符号位后的补码形式的第二参数确定为所述第三参数。
17.一种模型运行方法,其特征在于,包括:
获取机器学习模型的模型参数,并将获取的模型参数作为第一参数,所述第一参数为浮点格式数据,所述第一参数包括指数段和尾数段,所述指数段对应的指数表示范围为[1-emax,emax],emax为十进制的正整数;
获取所述第一参数的尾数段的值,得到第一数据,并根据所述尾数段的各个数据位的值为所述第一数据添加先导位,得到第二数据;
从移位寄存器的目标数据位开始存放所述第二数据,并根据所述指数段的值,沿所述移位寄存器中小数点的第一方向移动所述移位寄存器中的数据,得到定点格式的第二参数;其中,所述目标数据位是基于所述小数点的位置、与所述第一方向相反的第二方向和emax确定;
基于所述第二参数,运行所述机器学习模型;
其中,所述第一方向为所述小数点的右侧,所述第二方向是所述小数点的左侧,所述目标数据位是所述移位寄存器中、位于所述小数点的左侧的第emax个数据位;所述根据所述指数段的值,沿所述移位寄存器中小数点的目标方向移动所述移位寄存器中的数据,得到定点格式的第二参数,包括:
将所述指数段的值减去一偏移值,得到解码后指数,所述偏移值为emax的两倍;
将所述移位寄存器中的数据右移目标数量个数据位,得到所述第二参数,所述目标数量为所述解码后指数的绝对值。
18.根据权利要求17所述的方法,其特征在于,所述根据所述尾数段的各个数据位的值为所述第一数据添加先导位,得到第二数据,包括:
获取所述指数段的各个数据位的值;
若所述各个数据位的值均为0,则在所述第一数据的左侧添加值为0的先导位,并将添加先导位后的第一数据确定为所述第二数据;
若所述指数段的任一数据位的值为1,则在所述第一数据的左侧添加值为1的先导位,并将添加先导位后的第一数据确定为所述第二数据。
19.根据权利要求17-18中任意一项所述的方法,其特征在于,所述第一参数为有符号的浮点格式数据,所述第一参数还包括符号位,所述第二参数为无符号的定点格式数据;所述基于所述第二参数,运行所述机器学习模型,包括:
读取所述第一参数的符号位的值,根据所述符号位的值确定所述第一参数的符号,所述符号为正或者负;
根据所述第一参数的符号,将所述第二参数转换成第三参数,所述第三参数是有符号的定点格式数据;
基于所述第三参数,运行所述机器学习模型。
20.根据权利要求19所述的方法,其特征在于,所述根据所述符号位的值确定所述第一参数的符号,包括:
若所述符号位的值为0,确定所述第一参数的符号为正;
若所述符号位的值为1,确定所述第一参数的符号为负;
所述根据所述第一参数的符号,将所述第二参数转换成第三参数,包括:
若所述第一参数的符号为正,在所述第二参数的左侧添加值为0的符号位,并将添加符号位后的第二参数确定为所述第三参数;
若所述第一参数的符号为负,在所述第二参数的左侧添加值为1的符号位,并将所述第二参数从原码形式转换为补码形式,并将添加符号位后的补码形式的第二参数确定为所述第三参数。
CN202010931638.2A 2020-09-08 2020-09-08 数据格式转换装置、处理器、电子设备及模型运行方法 Active CN111796870B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010931638.2A CN111796870B (zh) 2020-09-08 2020-09-08 数据格式转换装置、处理器、电子设备及模型运行方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010931638.2A CN111796870B (zh) 2020-09-08 2020-09-08 数据格式转换装置、处理器、电子设备及模型运行方法

Publications (2)

Publication Number Publication Date
CN111796870A CN111796870A (zh) 2020-10-20
CN111796870B true CN111796870B (zh) 2021-01-12

Family

ID=72834275

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010931638.2A Active CN111796870B (zh) 2020-09-08 2020-09-08 数据格式转换装置、处理器、电子设备及模型运行方法

Country Status (1)

Country Link
CN (1) CN111796870B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112506935B (zh) * 2020-12-21 2023-08-29 北京百度网讯科技有限公司 数据处理方法、装置、电子设备、存储介质及程序产品
CN113032326B (zh) * 2021-03-25 2022-05-10 盛立安元科技(杭州)股份有限公司 一种用于fpga的数据类型转换装置、方法、设备及存储介质
CN113625990A (zh) * 2021-07-16 2021-11-09 深圳云天励飞技术股份有限公司 浮点转定点装置、方法、电子设备及存储介质
CN113377334B (zh) * 2021-08-16 2021-11-02 北京微核芯科技有限公司 一种浮点数据处理方法、装置及存储介质
CN113778523B (zh) * 2021-09-14 2024-04-09 北京升哲科技有限公司 一种数据处理方法、装置、电子设备及存储介质
CN117200802A (zh) * 2022-12-28 2023-12-08 山东华科信息技术有限公司 用于电网边缘计算层的数据压缩系统
CN117372296B (zh) * 2023-10-19 2024-04-05 上海成运医疗器械股份有限公司 一种经济型gamma校正方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8626807B2 (en) * 2009-01-08 2014-01-07 International Business Machines Corporation Reuse of rounder for fixed conversion of log instructions
GB2556645B (en) * 2017-03-24 2019-04-03 Imagination Tech Ltd Floating point to fixed point conversion
CN109739555B (zh) * 2019-01-04 2023-06-16 腾讯科技(深圳)有限公司 包括乘累加模块的芯片、终端及控制方法

Also Published As

Publication number Publication date
CN111796870A (zh) 2020-10-20

Similar Documents

Publication Publication Date Title
CN111796870B (zh) 数据格式转换装置、处理器、电子设备及模型运行方法
US20210224069A1 (en) Calculation method and related product
US9804823B2 (en) Shift significand of decimal floating point data
CN115934030B (zh) 算数逻辑单元、浮点数乘法计算的方法及设备
US9461668B2 (en) Decomposition of decimal floating point data
US8195727B2 (en) Convert significand of decimal floating point data from packed decimal format
US11711423B2 (en) Arrangements for communicating and processing data in a computing system
US8468184B2 (en) Extract biased exponent of decimal floating point data
CN112230881A (zh) 浮点数处理器
WO2022052625A1 (zh) 一种定点与浮点转换器、处理器、方法以及存储介质
CN111538472A (zh) 一种Posit浮点数的运算处理器以及运算处理系统
US20230305803A1 (en) Method for Processing Floating Point Number and Related Device
US20230214638A1 (en) Apparatus for enabling the conversion and utilization of various formats of neural network models and method thereof
US11221826B2 (en) Parallel rounding for conversion from binary floating point to binary coded decimal
CN115483934A (zh) 用于多方安全计算的数据转换方法和装置
KR102348795B1 (ko) 부동 소수점 방식에서 고정 소수점 방식으로의 변환 수행시 비트 폭 최적화 방법
CN113377334B (zh) 一种浮点数据处理方法、装置及存储介质
CN116501290A (zh) 五进制乘法器
CN115965048A (zh) 数据处理装置、数据处理方法和电子设备
CN117632854A (zh) 数据处理方法、装置以及设备
CN117632857A (zh) 数据处理方法、装置以及设备
CN117370722A (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40030106

Country of ref document: HK