CN112101541B - 对高位宽值数据进行拆分的装置、方法、芯片及板卡 - Google Patents

对高位宽值数据进行拆分的装置、方法、芯片及板卡 Download PDF

Info

Publication number
CN112101541B
CN112101541B CN202010556334.2A CN202010556334A CN112101541B CN 112101541 B CN112101541 B CN 112101541B CN 202010556334 A CN202010556334 A CN 202010556334A CN 112101541 B CN112101541 B CN 112101541B
Authority
CN
China
Prior art keywords
data
order
circuit
low
sub
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
CN202010556334.2A
Other languages
English (en)
Other versions
CN112101541A (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.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology 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 Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Publication of CN112101541A publication Critical patent/CN112101541A/zh
Application granted granted Critical
Publication of CN112101541B publication Critical patent/CN112101541B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本披露公开了用于数据处理的数据处理装置、集成电路芯片、板卡、和计算装置,其中该计算装置可以包括在组合处理装置中,该组合处理装置还可以包括通用互联接口和其他处理装置。所述计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与设备和其他处理装置连接,用于存储该设备和其他处理装置的数据。本披露的方案可以对具有高位宽值的数据进行拆分,以使得处理器的处理能力不受位宽的影响并且加速运算和减少计算开销。

Description

对高位宽值数据进行拆分的装置、方法、芯片及板卡
技术领域
本披露一般地涉及数据处理领域。更具体地,本披露涉及一种数据处理装置、用于数据处理的方法、集成电路芯片、板卡和计算装置。
背景技术
现有的中央处理单元(“CPU”)和图形处理单元(“GPU”)一般使用支持浮点数运算的浮点数运算器来进行神经网络的训练。然而,浮点数运算器在运算方面具有功耗高,面积大和效率低等缺陷。因此,在一些计算场景中,期望使用定点数来进行计算以克服前述的多种缺陷。然而,神经网络的训练对于数据的表示精度有比较高的要求。当定点数的位宽受限时,往往会导致数据的精度损失,造成训练不能收敛。另外,对于不同的网络结构,满足精度需求的位宽也不一样。尽管定点数的位宽越高其精度也相应提升,但就相同数量的数据而言,位宽越高的定点数所需的IO处理量也越大并且硬件计算相同数量的数据时所需的时间也越长。进一步,定点数位宽越大,则所需的乘法器和加法器的面积也越大,从而造成计算开销和成本的增加。
发明内容
为了至少解决上文中所存在的问题,本披露提供对具有高位宽值的高精度数据进行处理以适应于低位宽运算的方案。通过本披露的方案,具有高位宽值的高精度数据可以被拆分和保存,以用于后续的低精度数据的计算,从而加速计算时间并减小计算开销,并且扩展了计算的应用场景。
在第一方面中,本披露的方案提供一种数据处理装置,包括:拆分电路,其配置成将具有高位宽值的高精度数据进行拆分,以获得具有各自的低位宽值的多个低精度数据;以及存储电路,其包括与所述低位宽值关联的多个存储区,并且配置成根据所述低位宽值将所述多个低精度数据分别存储到对应的存储区中。
在第二方面中,本披露的方案提供一种用于数据处理的方法,包括:将具有高位宽值的高精度数据进行拆分,以获得具有各自的低位宽值的多个低精度数据;以及根据所述低位宽值将所述多个低精度数据的每个分别存储到多个存储区的对应一个存储区中,其中所述多个存储区与所述低位宽值关联。
在第三方面中,本披露的方案提供一种集成电路芯片,包括上述第一方面中描述以及下文将在多个实施例中讨论到的数据处理装置。
在第四方面中,本披露的方案提供一种板卡,包括上述第三方面中描述以及下文将在多个实施例中讨论到的集成电路芯片。
在第五方面中,本披露的方案提供一种计算装置,包括第四方面中描述以及下文将在多个实施例中讨论到的板卡。
通过利用本披露的数据处理装置、方法、集成电路芯片、板卡和计算装置,可以实现对具有高位宽值的高精度数据的预定或动态拆分以及高效存储。通过拆分操作,使得高精度数据可以应用于各类运算操作(例如包括卷积操作的各种向量乘加操作),扩展了数据运算的场景,减小了计算时间和开销。在一些场景中,拆分后的低精度数据可以复用现有的数据接口,从而无需对现有的数据接口进行改动,实现了良好的兼容性。另外,通过对拆分数据的有效存储,本披露的方案易于实现对数据的读取,减小数据运算过程中的存储开销和I/O操作。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
图1是示出根据本披露实施例的数据处理装置的简化框图;
图2是示出根据本披露实施例的数据处理装置的详细框图;
图3是示出根据本披露实施例的拆分电路的框图;
图4是示出根据本披露实施例的拆分后数据的存储操作框图;
图5a和图5b是示出根据本披露实施例的存储空间布置的示意框图;
图6是示出根据本披露实施例的一种组合处理装置的结构图;以及
图7是示出根据本披露实施例的一种板卡的结构示意图。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
图1是示出根据本披露实施例的数据处理装置100的简化框图。如图1中所示,所述数据处理装置包括拆分电路102,其可以配置成将具有高位宽值的高精度数据进行拆分,以获得具有各自的低位宽值的多个低精度数据。需要理解的是本披露的高位宽值和高精度是相对的概念,当具有一定位宽值的数据可以被本披露的拆分电路拆分成至少两个相对低位宽值的数据时,则在本披露的上下文中,拆分前的数据在本披露上下文中就可以认为是具有高位宽值的高精度数据,而拆分后得到的数据则是具有低位宽值的低精度数据。
进一步,所述数据处理装置还包括存储电路104,其包括与所述低位宽值关联的多个存储区,并且配置成根据所述低位宽值将所述多个低精度数据分别存储到对应的存储区中。尽管图1中示例性示出存储区106、108和110三个存储区,但这仅仅是示例性而非限制性地。本领域技术人员根据本披露的教导可以想到根据拆分后获得的低精度数据的类型数(例如以位宽值来划分)在存储电路104中布置相应数目的存储区,以便进行高效地存储。
在一个实施例中,所述具有高位宽值的高精度数据包括按有效位从高到低排列的多个比特位,所述拆分电路配置成根据所述有效位的高低排列顺序将所述高精度数据拆分成多个低精度数据,并且所述存储电路配置成根据所述高低排列顺序将所述多个低精度数据分别存储到与高低排列顺序关联的对应存储区中。
在一个应用场景中,所述拆分电路配置成将所述高精度数据拆分成有效位为高位区的高位子数据和有效位为低位区的低位子数据,并且所述存储电路配置成将高位子数据存储到高位存储区并且将低位子数据存储到低位存储区。在另一个应用场景中,其中所述拆分电路配置成将所述高精度数据拆分成有效位为高位区的高位子数据、有效位为中位区的中位子数据以及有效位为低位区的低位子数据,并且所述存储电路配置成将高位子数据存储到高位存储区,将中位子数据存储到中位存储区,并且将低位子数据存储到低位存储区。
在上述的拆分操作中,在一个实施例中,拆分电路配置成顺序地对多个所述高精度数据进行拆分,并且所述存储电路配置成在前述的高位存储区、中位存储区和低位存储区中分别顺序地存储拆分后获得的多个高位子数据、多个中位子数据和多个低位子数据。在一个场景中,所述存储电路可以包括动态随机存取存储器(“DRAM”),其分配有用于存储多个低精度数据的多个存储区,并且所述多个存储区的存储大小随所述低位宽值的变化而被相应地调整。
在具体的应用场景中,上述的具有高位宽值的高精度数据可以是高位宽值的定点数,例如8位、16位、24位、32位、64位或更高位宽值的定点数。除了支持对前述这些具有偶数的位宽值的定点数的拆分外,图1的数据处理装置还支持具有奇数的位宽值的定点数的拆分,例如15位、19位、23位、31位和63位或更高位宽值的定点数。因此,可以理解的是根据不同的数据处理要求,数据处理装置的拆分电路可以将任意高位宽值的定点数拆分成两个或更多个低位宽值的定点数。下面给出拆分成两个或三个低位宽值的具体示例。
在一个应用场景中,可以根据处理要求(例如定点运算器所支持的数据比特位宽)将16位的定点数拆分成两个8位的定点数或将32位的定点数拆分成两个16位的定点数。除了前面拆分成两个低位宽值的定点数的例子,本披露的拆分电路也可以将具有高位宽值的定点数拆分成三个定点数。例如,拆分电路可以将12位的定点数拆分成三个4位的定点数。当定点数具有符号位时,也可以将具有符号位的高位宽值的定点数拆分成具有相同符号位的低位宽的定点数。例如,对于包括1位符号位的总计13位的定点数,在除去符号位后,可以将其拆分成三个4位的定点数。又例如,为了满足计算精度的要求,可以将31位的定点数拆分成两个16位的定点数或者将61位的定点数拆分成四个16位的定点数。即,拆分后的若干定点数的总位宽值可以大于拆分前的定点数的高位宽值。
在将具有高位宽值的高精度数据进行如上的拆分后,本披露的方案可以对拆分后得到的多个低位宽值的低精度数据进行如前所述的对应存储。通过这样的拆分和存储操作,本披露的数据处理装置可以扩展高位宽数据的应用范围,使得拆分后获得的低位宽数据适于硬件平台计算的要求,并由此减小计算开销和成本以及I/O量。另外,通过前述的拆分和分开存储,可以使拆分后获得的低位宽数据可以与常见的数据类型保持一致,从而可以复用现有的数据接口。进一步,对于从一组高精度数据拆分后获得的低精度数据,可以将具有相同低位宽值的数据进行连续的存储,从而可以提升数据访存的性能。在神经网络的应用场景中,前述的拆分和顺序存储可以减小算子开发的工作量。例如,对于31位的定点数卷积运算,在经过本披露的数据处理装置处理而被拆分为两个16位定点数和存储后,可以通过分别调用两次16位定点数的卷积算子来完成卷积运算,而无需单独再开发针对于31位定点数的卷积算子。
图2是示出根据本披露实施例的数据处理装置200的详细框图。可以理解的是,数据处理装置200是图1所示数据处理装置100的一个示例性实施方式并且包括更多的细节。因此,前文结合图1对数据处理装置100所做的技术描述也同样适用于图2,并且为了简明的目的,相同的部分(例如拆分电路102、存储电路104和多个存储区106、108和110)将不再赘述。
如图2中所示,除了包括与图1中相同的拆分电路102和存储电路104以外,数据处理装置200还包括量化电路202,以用于对进入到数据处理装置200的高精度浮点数进行量化,从而得到前述的具有高位宽值的高精度数据。在该情形中,具有高位宽值的高精度数据可以是将浮点数量化后获得的定点数,例如前述的8位、16位、24位、32位、64位或更高位宽值的定点数。为了实现自适应或动态地调整量化后获得的定点数的位宽值,数据处理装置200还可以包括参数更新电路204,其配置成确定量化周期内的量化误差,并且根据所述量化误差来更新量化参数。此后,量化电路202可以根据更新后的量化参数来量化接收到的高精度浮点数,从而得到具有调整后的位宽值(或称“比特位宽值”)的高精度数据,也即本披露上下文中的待拆分的高精度数据。下面将以人工智能领域的神经网络内的量化操作为例来描述本披露的量化电路和参数更新电路的示例性操作。
以浮点类型格式作为高精度数据格式为例,根据计算机体系结构可知,基于浮点数的运算表示法则、定点数的运算表示法则,对于同样长度的浮点运算和定点运算来说,浮点运算计算模式更为复杂,需要更多的逻辑器件来构成浮点运算器。这样从体积上来说,浮点运算器的体积比定点运算器的体积要大。进一步,浮点运算器需要消耗更多的资源去处理,使得定点运算和浮点运算二者之间的功耗差距通常是数量级的,由此造成显著的计算成本差异。然而,根据实验发现,定点运算比浮点运算执行速度快,而且精度损失并不大,因此在人工智能芯片中采用定点运算处理大量的神经网络运算(例如卷积和全连接运算)是可行的方案。例如,可以将涉及前向卷积、前向全连接、反向卷积和反向全连接算子的输入、权重和梯度的浮点型数据均进行量化后进行定点数运算。
以量化对象是神经网络的权值、且量化后的权值均为8-bit定点数(相对于浮点数的低精度类型)为例,由于一个神经网络中常常有数百万连接,几乎所有空间都被神经元连接的权值所占据,并且这些权值有可能都是不同的浮点数。每层权值都趋向于某个确定区间的正态分布,例如(-3.0, 3.0)。将神经网络中每层的权值对应的最大值和最小值保存下来,将每个浮点数值采用8-bit定点数表示。其中,在最大值、最小值范围内区间线性划分256个量化间隔,每个量化间隔用一个8-bit定点数表示。例如:在(-3.0, 3.0)区间内,字节0表示-3.0,字节255表示3.0。以此类推,字节128表示0。
在执行量化操作过程中,会涉及到两个量化参数:shift和n,其中shift是定点数点的位置,n是定点数比特位宽(可以视为本披露未执行拆分操作前的高位宽值),n初始可以人为设定,shift则通过待量化数据的分布范围和n,利用下式来计算得到:
Figure 680800DEST_PATH_IMAGE001
(1)
其中Z是待量化数据F的绝对值中的最大值max(|F|)。使用F表示量化前的浮点数据(可以视为本披露的高精度浮点数),I表示量化后的n位定点数,则从FI的定点变换方法可以通过下式来计算:
Figure 638261DEST_PATH_IMAGE002
(2)
其中
Figure 529993DEST_PATH_IMAGE003
为量化步长(最小量化间隔),得到的定点数I(可以视为本披露的具有高位宽值的高精度数据)可以通过下式来表达:
Figure 651533DEST_PATH_IMAGE004
(3)
尽管经上述量化后得到的定点数有利于神经网络的加速训练、减小芯片体积并显著减小计算开销,但当神经网络中存在大量的运算时(例如卷积和全连接运算),相应的量化操作也会增加训练中的额外开销。为此,本披露还提出了对上述的量化参数进行更新,以便对浮点数进行有效的量化,从而加速训练并减小计算的开销。
为了实现上述的目的,本披露在神经网络中引入量化算子quantify,其可以包括量化策略算子和量化参数算子。在一个实施例中,所述量化策略算子可以至少用于确定是否执行量化参数的更新操作,而所述量化参数算子可以至少用于确定量化参数,并使用所述量化参数对所述高精度数据类型的神经网络数据执行所述量化操作。
在一些应用场景中,上述的量化策略算子可以负责计算量化误差diffbit、和量化周期趋势值diff update 。由于量化误差的确定对于量化周期、数据位宽的调整等方面具有重要意义,下面将对其进行具体描述。
假定在一个场景中,待量化的数据为
Figure 427859DEST_PATH_IMAGE005
,使用n位定点进行量化后得到的数据为
Figure 849613DEST_PATH_IMAGE006
,则可以通过下式来计算量化误差:
Figure 565110DEST_PATH_IMAGE007
(4),
即:
Figure 705104DEST_PATH_IMAGE008
(5)
diff bit 大于阈值th(即本披露所述的量化阈值)时,则可以考虑将量化位宽增加t位,从而新的量化位宽为n=n+t(即本披露的调整后的位宽值),这里th和t都是可变的超参数,mean()为均值函数。
通过实验可以知道,分布越集中的数据量化后对训练最终结果带来的误差越大,所以可以使用量化前后的均值的差距来模拟量化给训练带来的实际误差。为了保持该误差不增大,在量化分布更为集中的数据时,应使量化间隔减小,即增加量化位宽。为减小训练过程中计算量化参数所带来的计算消耗,并不是每代都根据当前待量化数据计算量化参数,而是间隔一定代数进行量化参数更新。这里,“代”表示神经网络每经过一次信号的正向处理的前向传播和对应一次误差的反向传播,神经网络中的权值利用梯度进行一次更新的过程,而“代数”表示完整执行前述的前向传播、反向传播和更新过程的次数。在不更新的代里,量化数据时使用存储下来的上一次更新得到的量化参数。只要更新间隔选择合适,这并不会带来训练精度损失,这是因为在训练过程中待量化数据(例如权值和梯度数据)的变化是相对稳定的,具有一定连续性和相似性。一种简单的方式是使用固定的更新周期,但是固定的更新周期适应性较差,因此本披露提出自适应的更新周期调整。
设间隔Interval代(即本披露的量化周期)更新量化参数,其计算方法如下:
首先引入shift随着训练迭代周期的滑动平均值m
Figure 816279DEST_PATH_IMAGE009
(6)
引入衡量shift变化趋势的diff update1 :
Figure 561382DEST_PATH_IMAGE010
(7)
diff update1 越大,则说明数值范围变化越激烈,需要更高的更新频率,即Interval越小。
衡量定点位宽n变化趋势diff update2
Figure 185130DEST_PATH_IMAGE011
(8)
diff update2 越大则越需要更大的量化位宽,需要更新位宽,间隔频率更高。
将上述的两种衡量同时考虑,则得到前述的量化周期趋势值diff update 如下:
Figure 484524DEST_PATH_IMAGE012
(9)
最后计算得到Interval:
Figure 930549DEST_PATH_IMAGE013
(10),
在上面的等式中,α、β、γ、δ、t和th是超参数,并且β、γ既可以为经验值,也可以为超参数。另外,常规的超参数的优化方法均适于β、γ。
上面关于量化策略算子计算量化误差diffbit、和量化周期趋势值diff update 进行了详细的描述。在一个实现场景中,本披露的量化策略算子的输入可以包括量化前的数据和量化后的数据(量化后的数据也可以自己计算)、量化参数(主要用到shift的滑动平均值m)、量化周期I(既可以是输入,也可以是输出)和输出量化位宽,其中量化周期和输出量化位宽可以作为输入传递给量化参数算子。在一些应用中,可以设置当量化周期大于0时,该算子不执行任何的操作。否则,该量化策略算子将执行量化周期和位宽的更新。
进一步,量化参数算子的输入可以包括待量化数据(即本披露的高精度浮点数)、量化参数(包括点数shift、点数的滑动平均值m、缩放系数scale等)、数据位宽(表示输出的量化后数据采用哪种位宽)以及量化周期。在一些应用场景中,量化周期可以是控制量化算子是否要计算量化参数的变量。例如,当量化周期等于0时,可以执行量化参数的统计。当然,这里的设置也仅仅是示例性的,并且本领域技术人员基于本披露的教导也可以赋予量化周期其他的含义,或采用不同的形式来进行控制。例如,如果量化周期等于-1时,则每次都进行量化参数的更新。可以看出,量化周期在这样的示例性场景中仅代表一个控制此量化算子的控制量。在另外一些应用场景中,如果对量化参数进行了统计,则还需把新的量化参数更新到旧的量化参数的地址。否则,此次量化操作将依然采用旧的量化参数。
根据不同的实现方式或应用场景,量化算子可以对当前整个板卡内同一层数据进行量化。由此得到的量化参数既可以接着在多机多卡之间同步,也可以不进行这样的同步。当不进行同步时,每个板卡内可以维护一份量化参数。附加地,每个计算核在计算出量化参数后进行同步,综合得到最终的全局的量化参数。
通过上文的描述,本领域技术人员可以理解本披露的方案可以根据计算场景或计算要求向拆分电路提供具有可变位宽值的高位宽定点数,以便进行拆分。对于拆分后获得的至少两个低精度数据,数据处理装置还包括计算电路206,其可以配置成访问存储电路中的相应存储区来获得拆分后的数据,以便对其执行各类型的运算。附加地,计算电路206也可以配置成直接接收来自于拆分电路的多个低精度数据,以便执行运算。在一个实施例中,所述计算电路可以配置成分别利用多个低精度数据中每个来进行计算以得到多个对应的中间结果,并且将获得的所有中间结果结合,以获得最终的计算结果。在另一个实施例中,计算电路可以配置成根据运算指令选择至少两个低精度数据中的一个或多个来进行计算,以获得计算结果。这里以量化后得到的31位的定点数为例,其经本披露的拆分电路进行拆分后可以得到两个16位的定点数,分别以INT16-1(31位中的高有效位构成)和INT16-2(31位中的低有效位构成)表示。接着,可以令INT16-1和INT16-2分别执行例如神经网络中的乘加运算,从而得到两个中间结果,分别表示为INT16-1-Result和INT16-2-Result。然后,可以将INT16-1-Result乘以一个系数后再与INT16-2-Result相加,从而获得最终的计算结果。
图3是示出根据本披露实施例的拆分电路102的框图。根据前文的描述,本领域技术人员可以理解根据计算场景或运算要求的不同,本披露的拆分电路可以配置成将具有高位宽值的高精度数据拆分成合适数目的多个低位宽值的低精度数据。图3为了简化和示例性描述的目的,设置拆分电路具有如图中所示的硬件架构,以将具有高位宽值的高精度数据(例如经量化后得到的定点数)拆分成至少两个具有低位宽值的低精度数据,包括有效位为高位区的高位子数据和有效位为低位区的低位子数据。
从图3中看出,拆分电路102可以包括高位计算电路304、低位计算电路306和输出电路308。在一个实施例中,高位计算电路304可以配置成根据低位子数据的位宽值来对所述高精度数据进行计算,以获得代表所述高精度数据的高位区的高位子数据。在一个场景中,高位计算电路可以根据所述低位区的位宽值来确定缩放系数以及利用该缩放系数对所述高精度数据进行计算以获得所述高位子数据。例如,当所述高位区的位宽值 为n1,而所述低位区的位宽值为n2时,则当不考虑n2中包括符号位时,缩放系数可以为2n2。相比而言,当考虑n2中包括符号位时,则缩放系数可以为2n2-1
在另一个实施例中,低位计算电路306可以配置成根据所述高精度数据和至少关于高位子数据的数值进行计算,以获得代表所述高精度数据中的所述低位区的低位子数据。在一个场景中,当低位子数据不考虑符号位时,则可以简单地从高精度数据中减去高位子数据的数值来获得低位子数据。这里,高位子数据的数值可以是高位子数据与前述的缩放系数的乘积值。在另一个场景中,当低位子数据考虑符号位时,则低位计算电路可以配置成根据所述低位子数据的位宽值来确定调整值,以及根据所述高精度数据、关于所述高位子数据的数值和所述调整值来进行计算,以获得所述低位子数据。可以理解的是在一些场景中,通过例如初始的默认设置,本披露的拆分电路可以配置成直接执行考虑符号位的拆分操作或执行不考虑符号位的拆分操作。
在获得可以代表所述高精度数据的高位子数据和低位子数据后,本披露的拆分电路102还可以包括输出电路308,其可以配置成输出所述高位子数据和低位子子数据中的至少一个。如前所述,拆分后获得的高位子数据和低位子数据可以应用于神经网络中需要利用低位宽值的数据进行的各类计算中,例如用于神经网络训练中的反向传播的权值更新和梯度计算中。在一些应用场景中,还可以直接存储获得的高位子数据和低位子数据来替代高精度数据,以便稍后使用。在神经网络使用支持低位宽值的定点处理器来执行定点运算的场景中,通过使用本披露的输出电路输出的具有低位宽值的高位子数据和低位子数据来用于定点处理器的定点运算,定点处理器将摆脱不能处理具有高位宽值的数据的限制,扩展了定点处理器的计算场景并简化计算,从而也提升了计算效率并且减小计算的开销。
如图3中所示,高位计算电路304可以包括缩放电路3041和舍入电路3042。在一个实施例中,该缩放电路可以通过移位电路来实现,其中该移位电路可以配置成根据前述的缩放系数对高精度数据执行移位操作,以完成缩放。例如,当缩放系数为2n2时,利用移位电路执行移位操作即是将高精度数据向高位移动n2位。当高位在高精度数据的左侧而低位在其右侧时,向高位移动n2位即是向左移动n2位。在具体实现方面,此处的移位电路可以通过乘法器来构建。在对高精度数据进行相应的移位操作后,在一个实施例中,高位计算电路304还包括舍入电路3042,该舍入电路可以配置成对执行移位操作后的所述高精度数据进行舍入操作,以获得所述高位子数据。根据不同的应用场景,这里的舍入操作可以包括各种形式的取整运算,例如向上取整、向下取整、向零取整等取整运算。通过这样的舍入操作后,就可以获得与所述高精度数据中的高位区相关的高位子数据。
在一个或多个实施例中,低位计算电路306可以包括减法电路3061,其配置成从所述高精度数据中减去关于高位子数据的数值和所述调整值,以获得所述低位子数据。在一个场景中,这里的高位子数据的数值可以是高位子数据与缩放系数的乘积值,而所述调整值即前述的考虑了低位区的符号位后的数值。通过利用减法电路从高精度数据中减去乘积值和调整值,即可获得与所述高精度数据中的低位区相关的低位子数据。
为了实现灵活地输出,拆分电路102附加地还包括选择器312,该选择器可以配置成将所述高位子数据和低位子数据中的至少一个输出给输出电路308以便进行输出。这样的选择性输出在一些应用场景具有技术优势。例如,在仅需要高位子数据或低位子数据参与后续的运算中,此时输出电路并不需要将二者都予以输出,从而在输出方面节省开销。另外,当仅需要输出高位子数据时,本披露的拆分电路还可以仅拆分出高位子数据并予以输出,从而进一步节省拆分的开销。
如前所述,本披露的拆分电路还可以用于将高精度数据分解为由用户指定或算法所需的、多于两个低位宽值的低精度数据来表达。为此,本披露的拆分电路例如可以反复执行高位计算电路和低位计算电路,直到获得所述数目的多个低精度数据。例如,对于24位高位宽值的高精度数据,当需要将其拆分成3个低精度数据,并且3个低精度数据都为8比特位宽时,则可以通过高位计算电路和低位计算电路将24位的高精度数据拆分成8比特位宽的高位子数据(即,第一低精度数据)和16比特位宽的低位子数据。接着,获得的16位宽的低位子数据的数值被重新输入到高位计算电路和低位计算电路,以将其进一步拆分成8比特位宽的高位子数据(即,第二低精度数据)和8比特位宽的低位子数据(即,第三低精度数据)。
下面将从数学计算角度来描述前述本披露的拆分电路所执行的拆分操作,通过下面的一系列示例性公式表达和具体数值的拆分结果,本领域技术人员可以进一步理解本披露的拆分方案及其示例性实施方式。为了描述的简明,下面以I0表示高精度数据,其具有n0的比特位宽,I1为拆分后获得的高位子数据,而I2为拆分后获得的低位子数据,并且I0的高位区是n1比特位宽并且由高位子数据I1来表示,而I0的低位区是n2比特位宽并且由低位子数据I2来表示,其中n0=n1+n2。
首先,可以通过下式来计算高位子数据I1
I1=floor(I0/2n2 ) (11)
其中,floor是向下取整函数,2n2表示前述的缩放系数。如前所述,该缩放系数也与低位区是否包括符号位有关。当低位区不包括符号位时,则这里的缩放系数将有不同的表达(稍后将描述)。
接着,可以通过下式来计算低位子数据I2
Figure 248267DEST_PATH_IMAGE014
(12)
可以看出,上式(12)中的“
Figure 918282DEST_PATH_IMAGE015
”项即前述的高位子数据的数值。当I1乘以缩放系数2n2时,相当于将其向高比特位方向移动n2位,而式中的“2n2-1”项即前述的调整值。如前所述,当低位区包括符号位时,通过减去该调整值,可以扩大I2数值的表示范围。在不同的拆分场景中,式中的n0、n1和n2可以取不同的正整数值,例如n0=24,n1=8,n2=16,或者n0=32,n1=16,n2=16。由于考虑了符号位,因此通过上述公式获得的高位子数据和低位子数据在表达拆分前的高精度数据方面更为准确,损失也较小。
上面给出了低位区包含符号位的情形,下面将给出低位区不包含符号位的计算公式,而其中各个符号的含义与上文相同。
首先,可以通过下式来计算高位子数据I1
I1=floor(I0/2n2-1 ) (13)
正如前所述,由于在本情形中并不考虑低位区的符号位,因此这里采用2n2-1表示前述的缩放系数,而非式(11)中的“2n2”。
接着,可以通过下式来计算低位子数据I2
Figure 236131DEST_PATH_IMAGE016
(14)
可以看出,由于不考虑符号位,式(14)并不具有式(12)中的调整值“2n2-1”。进一步,这里的“
Figure 689109DEST_PATH_IMAGE017
”项即高位子数据的数值。
在不同的拆分场景中,上式中的n0、n1和n2可以取不同的正整数值,例如n0=24,n1=8,n2=16,或者n0=32,n1=16,n2=16,或n0=25,n1=9,n2=16。在一些拆分场景中,n0、n1和n2还可以满足n0<=n1+n2,例如n0=25,n1=16,n2=16,即将25位比特位宽数值拆分成两个16比特位宽分量。对于利用式(11)和式(12)计算获得的高位子数据和低位子数据,如前所述,由于考虑了符号位,因此获得的高位子数据和低位子数据在表达拆分前的高位宽的数据方面损失更小。
需要理解的是图3中所示的本披露的拆分电路的电路结构仅仅是示例性地而非限制性地,本领域技术人员根据本披露的公开和教导,也可以想到其他的电路结构来实现本披露的拆分操作。另外,尽管图3中将量化电路和拆分电路作为两个电路实体分别绘出,但在一些场景中,也可以将量化电路和拆分电路集成在一起,以构成本披露的多功能的拆分电路。在该情形下,所述量化电路可以充当拆分电路中的类型转换电路,用于将例如高精度浮点数的第一类型数据转换成本披露的具有高位宽值的高精度数例如定点数。
下面通过表(1)和表(2)列出对示例性的多个具体数值(即,本披露的具有高位宽值的高精度定点数)的拆分结果,其中表(1)列出考虑符号位的拆分结果,而表(2)列出未考虑符号位的拆分结果。
Figure 408804DEST_PATH_IMAGE018
Figure 374354DEST_PATH_IMAGE019
在从拆分电路获得拆分后的多个低精度数据(例如上述的高位子数据和低位子数据)后,本披露利用前文所述的存储电路对其进行特殊的存储,以便提供高效的访存操作和减小计算成本和开销。下面将结合图4、图5a和图5b来具体阐述本披露的存储操作。
图4是示出根据本披露实施例的拆分后数据的存储操作框图。如图4中所示,通过本披露的数据处理装置,给定的具有高位宽值(即13位比特位宽,包括符号位s)的定点数“111001010101”被拆分和存储。
具体如图中所示,当按有效位从高到低(即图中从左向右)排列来划分“111001010101”并且对其进行拆分,可以得到对应于有效位为高位区(图中“
Figure 976237DEST_PATH_IMAGE020
”表示)的“1110”的高位子数据,对应于有效位为中位区(图中“
Figure 436168DEST_PATH_IMAGE021
”表示)的“0101”的中位子数据,以及对应于有效位为低位区的“0101”的低位子数据(图中“
Figure 807107DEST_PATH_IMAGE022
”表示)。接着,将得到的每个子数据按图中所示方式进行存储。即,对应于高位区的高位子数据存储于高位存储区(其例如可以对应于存储电路的高地址空间),对应于中位区的中位子数据存储于中间位存储区(其例如可以对应于存储电路的中间地址空间),而对应于低位区的低位子数据存储于低位存储区(其例如可以对应于存储电路的低地址空间)。
当对多个具有相同格式的高精度数据进行拆分和存储处理时,本披露的方案可以连续地将该多个高精度数据中的每个数据拆分后获得的各个低精度数据按有效位高低分别存储到对应的高位、中间位或低位存储区中。换句话说,高位存储区专用于存储一定数目的高位子数据、中间位存储区专用于存储一定数目的中间位子数据,而低位存储区专用于存储一定数目的低位子数据。在一些应用场景中,对于具有相同属性的多个高精度定点数,可以对其共享的符号位或指数位进行专门的存储,以供后续运算中使用。
可以看出,图4仅示例性示出高精度的定点数被拆分成三个具有低位宽值的定点数的例子。本领域技术人员根据本披露的描述,也可以想到将高位宽值的定点数拆分成两个或多于三个的、具有低位宽值的定点数。例如,当所述拆分电路配置成将所述高精度数据(例如高位宽值的定点数)拆分成对应于有效位为高位区的高位子数据和对应于有效位为低位区的低位子数据,并且所述存储电路配置成将高位子数据存储到高位存储区并且将低位子数据存储到低位存储区。
图5a和图5b是示出根据本披露实施例的存储空间布置的示意框图,其中阴影部分代表有效数据而空白部分代表无效数据。如图5a中所示,在例如DRAM的存储电路中布置有n位宽存储区以用于存储位宽为n的定点数,2n位宽存储区以用于存储位宽为2n的定点数,以及(4n-1)位宽存储区以用于存储位宽为(4n-1)的定点数。这些存储的定点数可以视为量化后获得的高精度数据。进一步,随着量化参数的更新,量化的位宽长度可以在上述3种类型之间相互转换。假设n=8时,则量化后获得的8位定点数可以用于定点运算器的运算操作。当由于量化误差而更新量化参数后,则可能为了提高计算精度而将待量化后获得的定点数的位宽增加到(4×8-1)=31位,并且将获得的31位定点数存储于31位宽存储区中。从图中可以看出,随着位宽的增大,所占用的存储空间也增大。
本披露拆分后的低精度数据的位宽也根据计算要求而改变。例如,如图5b中所示,拆分后获得的定点数可以由16位高有效位+8位低有效位来表示,其中16位高有效位对应的高位子数据存储于高16位存储区中,而8位低有效位对应的低位子数据存储于低8位存储区中。当由于量化参数发生改变而需要将量化前的高位宽从23位变成了31位时,则拆分后获得的定点数可以由16位高有效位对应的高位子数据+16位低有效位对应的低位子数据来表示,其中16位高有效位对应的高位子数据存储于高16位存储区中,而16位低有效位对应的低位子数据存储于低16位存储区中。
如前所述,由于本披露对于拆分后的低精度数据进行连续的存储,从而提高了数据访存的性能。另外,由于可以将高位宽值的数据进行拆分以使用现有算子来进行运算,可以减小对现有神经网络算子的开发,减少了计算开销。
图6是示出根据本披露实施例的一种组合处理装置600的结构图。如图所示,该组合处理装置600包括本披露结合附图1-图4、图5a和图5b详细描述地计算装置602,该计算装置可以包括前述结合附图1-图4、图5a和图5b所描述的数据处理装置。在一个或多个实施例中,该计算装置或数据处理装置可以实现为一种集成电路芯片、板卡或电子设备。另外,该组合处理装置还包括通用互联接口604和其他处理装置606。根据本披露的计算装置602可以通过通用互联接口604与其他处理装置606进行交互,共同完成用户指定的操作,包括对具有高位宽的高精度数据的拆分和存储操作。
根据本披露的方案,该其他处理装置可以包括中央处理器(“CPU”)、图形处理器(“GPU”)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器,其数目可以不做限制而是根据实际需要来确定。在一个或多个实施例中,该其他处理装置可以作为本披露的计算装置与外部数据和控制的接口,执行包括但不限于数据搬运,完成对本机器学习运算装置的开启、停止等的基本控制;其他处理装置也可以和机器学习相关运算装置协作共同完成运算任务。
根据本披露的方案,该通用互联接口可以用于在计算装置与其他处理装置间传输数据和控制指令,例如与本披露的拆分操作和存储操作关联的指令。例如,该计算装置可以经由所述通用互联接口从其他处理装置中获取所需的输入数据,写入该计算装置的片上存储装置。进一步,该计算装置可以经由所述通用互联接口从其他处理装置中获取控制指令,写入计算装置的片上控制缓存。替代地或可选地,通用互联接口也可以读取计算装置的存储装置中的数据并传输给其他处理装置。
可选地,该组合处理装置还可以包括存储装置608,其可以分别与所述计算装置和所述其他处理装置连接。在一个或多个实施例中,存储装置可以用于保存所述计算装置和所述其他处理装置的数据,尤其那些在计算装置或其他处理装置的内部或片上存储装置中无法全部保存的数据。
根据应用场景的不同,本披露的组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。在此情况下,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件例如摄像头、显示器、鼠标、键盘、网卡或wifi接口。
在一些实施例里,本披露还公开了一种芯片,其包括了上述数据处理装置、计算装置或组合处理装置。在另一些实施例里,本披露还公开了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,本披露还公开了一种板卡,其包括了上述芯片封装结构。参阅图7,其提供了前述的示例性板卡,上述板卡除了包括上述芯片702以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件704、接口装置706和控制器件708。
所述存储器件与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元710。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(“Double Data Rate SDRAM,双倍速率同步动态随机存储器”)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储器件可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备712(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。在另一个实施例中,所述接口装置还可以是其他的接口,本披露并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体地,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。在一个或多个实施例中,所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和/或多个处理电路的工作状态的调控。
在一些实施例里,本披露还公开了一种电子设备或装置,其包括了上述板卡。根据不同的应用场景,电子设备或装置可以包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本披露所提供的几个实施例中,应该理解到,所披露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、光学、声学、磁性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本披露各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,当本披露的技术方案可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本披露各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在本披露的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本披露的方法及其核心思想;同时,对于本领域的一般技术人员,依据本披露的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本披露的限制。
应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当... 时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本披露的方法及其核心思想。同时,本领域技术人员依据本披露的思想,基于本披露的具体实施方式及应用范围上做出的改变或变形之处,都属于本披露保护的范围。综上所述,本说明书内容不应理解为对本披露的限制。

Claims (13)

1.一种对高位宽值的数据进行拆分的装置,包括:
量化电路,其配置成根据量化参数将接收到的高精度浮点数量化成具有高位宽值的定点数;
拆分电路,其配置成将具有高位宽值的高精度数据进行拆分,以获得具有各自的低位宽值的多个低精度数据,包括有效位为高位区的高位子数据和有效位为低位区的低位子数据;以及
存储电路,其包括与所述低位宽值关联的多个存储区,并且配置成根据所述低位宽值将所述多个低精度数据分别存储到对应的存储区中;
其中,所述高精度数据是具有高位宽值的定点数,所述高位宽值的高精度数据包括按有效位从高到低排列的多个比特位,所述拆分电路配置成根据所述有效位的高低排列顺序将所述高精度数据拆分成多个低精度数据,并且所述存储电路配置成根据所述高低排列顺序将所述多个低精度数据分别存储到与高低排列顺序关联的对应存储区中;
所述拆分电路包括高位计算电路、低位计算电路和输出电路,所述高位计算电路包括缩放电路和舍入电路,所述缩放电路通过移位电路来实现,该移位电路配置成根据缩放系数对高精度数据执行移位操作以完成缩放,所述舍入电路配置成对执行移位操作后的所述高精度数据进行舍入操作,以获得所述高位子数据;所述低位计算电路配置成根据所述高精度数据和关于高位子数据的数值进行计算,以获得代表所述高精度数据中的所述低位区的低位子数据;所述输出电路配置成输出所述高位子数据和低位子子数据中的至少一个。
2.根据权利要求1所述的装置,还包括参数更新电路,其配置成确定量化周期内的量化误差,并且根据所述量化误差来更新所述量化参数,所述量化电路配置成根据更新后的量化参数来量化接收到的高精度浮点数,以得到具有调整后的位宽值的高精度数据。
3.根据权利要求2所述的装置,其中所述参数更新电路配置成将所述量化误差与量化阈值进行比较来确定是否更新所述量化参数,其中当确定所述量化误差大于或等于所述量化阈值时,所述参数更新电路增加待量化获得的定点数的位宽值,而当确定所述量化误差小于所述量化阈值时,所述参数更新电路减小待量化获得的定点数的位宽值。
4.根据权利要求3所述的装置,其中所述拆分电路配置成将所述高位宽值的高精度数据拆分成具有至少两个低位宽值的低精度数据,所述数据处理装置还包括计算电路,其配置成:
利用所述低精度数据进行计算以得到对应的中间结果,并且将获得的所有中间结果结合以获得最终计算结果;或者
根据运算指令选择所述低精度数据进行计算以获得计算结果。
5.根据权利要求4所述的装置,其中所述高精度数据按所述有效位的高低排列顺序划分为高位区和低位区,所述拆分电路配置成将所述高精度数据拆分成对应于高位区的高位子数据和对应于低位区的低位子数据,并且所述存储电路配置成将高位子数据存储到高位存储区并且将低位子数据存储到低位存储区。
6.根据权利要求4所述的装置,其中所述所述高精度数据按所述有效位的高低排列顺序划分为高位区、中位区和低位区,拆分电路配置成将所述高精度数据拆分成对应于所述高位区的高位子数据、对应于所述中位区的中位子数据以及对应于所述低位区的低位子数据,并且所述存储电路配置成将高位子数据存储到高位存储区,将中位子数据存储到中位存储区,并且将低位子数据存储到低位存储区。
7.根据权利要求5所述的装置,其中所述拆分电路配置成顺序地对多个所述高精度数据进行拆分,并且所述存储电路配置成在高位存储区和低位存储区中分别顺序地存储获得的多个高位子数据和多个低位子数据。
8.根据权利要求6所述的装置,其中所述拆分电路配置成顺序地对多个所述高精度数据进行拆分,并且所述存储电路配置成在高位存储区、中位存储区和低位存储区中分别顺序地存储获得的多个高位子数据、多个中位子数据和多个低位子数据。
9.根据权利要求1-8的任意一项所述的装置,其中所述存储电路包括动态随机存取存储器,其分配有用于存储多个低精度数据的多个存储区,并且所述多个存储区的存储大小随所述低位宽值的变化而被相应地调整。
10.一种用于对高位宽值数据进行拆分的方法,通过如权利要求1-9任意一项所述的装置实现。
11.一种集成电路芯片,包括根据权利要求1-9的任意一项所述的装置。
12.一种板卡,包括根据权利要求11所述的集成电路芯片。
13.一种计算装置,包括根据权利要求12所述的板卡。
CN202010556334.2A 2019-06-18 2020-06-17 对高位宽值数据进行拆分的装置、方法、芯片及板卡 Active CN112101541B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
CN201910528537 2019-06-18
CN2019105285378 2019-06-18
CN201910570125 2019-06-27
CN2019105701250 2019-06-27

Publications (2)

Publication Number Publication Date
CN112101541A CN112101541A (zh) 2020-12-18
CN112101541B true CN112101541B (zh) 2023-01-17

Family

ID=73750436

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010556334.2A Active CN112101541B (zh) 2019-06-18 2020-06-17 对高位宽值数据进行拆分的装置、方法、芯片及板卡

Country Status (1)

Country Link
CN (1) CN112101541B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113238976B (zh) * 2021-06-08 2022-11-22 中科寒武纪科技股份有限公司 缓存控制器、集成电路装置及板卡
CN114118387A (zh) * 2022-01-25 2022-03-01 深圳鲲云信息科技有限公司 数据处理方法、数据处理装置及计算机可读存储介质
CN115686521A (zh) * 2022-11-15 2023-02-03 芯华章科技(北京)有限公司 处理大数的方法、电子设备和存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05165605A (ja) * 1991-12-16 1993-07-02 Fujitsu Ltd 浮動小数点乗算器及び乗算方法
CN102067090A (zh) * 2008-06-17 2011-05-18 Nxp股份有限公司 具有高速缓存电路的处理电路,检测高速缓存行中更新地址的游程
CN107103009A (zh) * 2016-02-23 2017-08-29 杭州海康威视数字技术股份有限公司 一种数据处理方法及装置
WO2017192157A1 (en) * 2016-05-05 2017-11-09 Cirrus Logic International Semiconductor Ltd. Low-power processor with support for multiple precision modes
CN108337000A (zh) * 2017-01-20 2018-07-27 辉达公司 用于转换到较低精度数据格式的自动方法
CN109347495A (zh) * 2018-09-25 2019-02-15 电子科技大学 低位宽ad条件下提高数字信号传输精度的系统及方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8209597B2 (en) * 2009-03-23 2012-06-26 Cognitive Electronics, Inc. System and method for achieving improved accuracy from efficient computer architectures
US8537171B2 (en) * 2011-05-13 2013-09-17 Samsung Display Co., Ltd. Piecewise non-causal compression and subsequent decompression of quantized data for processing of decompressed data in higher precision processing space

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05165605A (ja) * 1991-12-16 1993-07-02 Fujitsu Ltd 浮動小数点乗算器及び乗算方法
CN102067090A (zh) * 2008-06-17 2011-05-18 Nxp股份有限公司 具有高速缓存电路的处理电路,检测高速缓存行中更新地址的游程
CN107103009A (zh) * 2016-02-23 2017-08-29 杭州海康威视数字技术股份有限公司 一种数据处理方法及装置
WO2017192157A1 (en) * 2016-05-05 2017-11-09 Cirrus Logic International Semiconductor Ltd. Low-power processor with support for multiple precision modes
CN108337000A (zh) * 2017-01-20 2018-07-27 辉达公司 用于转换到较低精度数据格式的自动方法
CN109347495A (zh) * 2018-09-25 2019-02-15 电子科技大学 低位宽ad条件下提高数字信号传输精度的系统及方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
一种低成本128位高精度浮点SIMD乘加单元的设计与实现;黄立波等;《计算机工程与科学》;20120915(第09期);全文 *
利用低位ADC获取高精度量化结果;王飞雪,郁文贤;《数据采集与处理》;19940930(第03期);全文 *

Also Published As

Publication number Publication date
CN112101541A (zh) 2020-12-18

Similar Documents

Publication Publication Date Title
CN112101541B (zh) 对高位宽值数据进行拆分的装置、方法、芯片及板卡
CN110163357B (zh) 一种计算装置及方法
CN111027691B (zh) 用于神经网络运算、训练的装置、设备及板卡
US20220366006A1 (en) Computing apparatus and method for vector inner product, and integrated circuit chip
JP2020126595A (ja) 計算装置と計算方法
EP3676698B1 (en) Providing efficient floating-point operations using matrix processors in processor-based systems
CN112732221A (zh) 用于浮点运算的乘法器、方法、集成电路芯片和计算装置
US20220188071A1 (en) Computing apparatus and method, board card, and computer readable storage medium
WO2021078210A1 (zh) 用于神经网络运算的计算装置、方法、集成电路和设备
CN112651496A (zh) 一种处理激活函数的硬件电路及芯片
TW202109281A (zh) 帶正負號多字乘法器
CN112446460A (zh) 用于处理数据的方法、装置以及相关产品
CN112765540A (zh) 数据处理方法、装置及相关产品
CN115437602A (zh) 任意精度计算加速器、集成电路装置、板卡及方法
CN111258537B (zh) 一种防止数据溢出的方法、装置和芯片
WO2021073512A1 (zh) 用于浮点运算的乘法器、方法、集成电路芯片和计算装置
CN114692865A (zh) 一种神经网络量化训练方法、装置及相关产品
CN113112009B (zh) 用于神经网络数据量化的方法、装置和计算机可读存储介质
CN111258542B (zh) 乘法器、数据处理方法、芯片及电子设备
EP4024288B1 (en) Computing apparatus, method, board card and computer-readable storage medium
CN111381802B (zh) 数据比较器、数据处理方法、芯片及电子设备
CN113934678A (zh) 一种计算装置、集成电路芯片、板卡、设备和计算方法
CN115809043A (zh) 一种乘法器及其相关产品和方法
CN113723600A (zh) 神经网络计算方法、装置、板卡及计算机可读存储介质
CN113723598A (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