CN118153646A - 计算设备及其操作方法 - Google Patents
计算设备及其操作方法 Download PDFInfo
- Publication number
- CN118153646A CN118153646A CN202311477991.8A CN202311477991A CN118153646A CN 118153646 A CN118153646 A CN 118153646A CN 202311477991 A CN202311477991 A CN 202311477991A CN 118153646 A CN118153646 A CN 118153646A
- Authority
- CN
- China
- Prior art keywords
- value
- bit
- weight
- activation
- bits
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 24
- 230000004913 activation Effects 0.000 claims abstract description 201
- 238000012545 processing Methods 0.000 claims abstract description 57
- 238000006243 chemical reaction Methods 0.000 claims description 36
- 230000000873 masking effect Effects 0.000 claims description 36
- 239000000872 buffer Substances 0.000 claims description 26
- 230000015654 memory Effects 0.000 description 32
- 230000008859 change Effects 0.000 description 7
- 238000013135 deep learning Methods 0.000 description 6
- 238000007689 inspection Methods 0.000 description 6
- 238000013507 mapping Methods 0.000 description 6
- 238000013136 deep learning model Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 230000001537 neural effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/74—Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3812—Devices capable of handling different types of numbers
- G06F2207/3824—Accepting both fixed-point and floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3832—Less usual number representations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Software Systems (AREA)
- Nonlinear Science (AREA)
- Executing Machine-Instructions (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Neurology (AREA)
- Image Generation (AREA)
Abstract
公开了计算设备及其操作方法。所述计算设备包括:处理电路,被配置为:检测多个权重值中的权重值内的与权重值的范围相关的权重深度字段,并且检测多个激活值中的激活值内的与激活值的范围相关的激活深度字段;识别权重值中的第一操作数,并且识别激活值中的第二操作数;以及通过基于检测到的第一操作数和第二操作数执行运算,生成具有基于权重深度字段和激活深度字段确定的结果深度字段的输出值。
Description
本申请要求于2022年12月6日在韩国知识产权局提交的第10-2022-0168833号韩国专利申请的权益,所述韩国专利申请的全部公开出于所有目的通过引用包含于此。
技术领域
公开涉及计算设备及其操作方法。
背景技术
深度学习模型或加速器计算复杂。深度学习模型和加速器利用定点和/或浮点数格式用于训练和推断操作的激活、权重和梯度,并且可实现用于图像分类和数据处理的深度学习模型的更快的训练和降低的功耗。
发明内容
提供本发明内容以简要的形式介绍在以下具体实施方式中进一步描述的构思的选择。本发明内容不旨在确定要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定要求保护的主题的范围。
在一个总体方面,一种计算设备可包括:处理电路,被配置为检测多个权重值中的权重值内的与权重值的范围相关的权重深度字段,并且检测多个激活值中的激活值内的与激活值的范围相关的激活深度字段;识别权重值中的第一操作数,并且识别激活值中的第二操作数;以及通过基于识别的第一操作数和第二操作数执行运算,生成具有基于权重深度字段和激活深度字段确定的结果深度字段的输出值。
所述计算设备还可包括:第一缓冲器,被配置为存储权重值;以及第二缓冲器,被配置为存储激活值,其中,处理电路可包括:第一深度字段检测器,被配置为:在朝向权重值的最低有效位(LSB)的方向上,检测权重值的在权重值的最高有效位(MSB)之后的位之中的第一个具有第一值的第一目标位;并且将从权重值的第二MSB到第一目标位的位确定为权重深度字段;以及第二深度字段检测器,被配置为:在朝向激活值的最低有效位(LSB)的方向上,检测激活值的在激活值的最高有效位(MSB)之后的位之中的第一个具有第一值的第二目标位;并且将从激活值的第二MSB到第二目标位的位确定为激活深度字段。
处理电路可包括:第一深度字段检测器,被配置为:检测权重值的在权重值的最高有效位(MSB)和第二MSB之后的位之中的第一个具有第一值的第一目标位;并且将从权重值的第二MSB到第一目标位的位确定为权重深度字段;以及第二深度字段检测器,被配置为:在朝向激活值的最低有效位(LSB)的方向上,检测激活值的在激活值的最高有效位(MSB)和第二MSB之后的位之中的第一个具有第一值的第二目标位;并且将从激活值的第二MSB到第二目标位的位确定为激活深度字段。
处理电路可包括:第一位检查电路,被配置为确定在朝向权重值的LSB的方向上权重值的第一目标位的下一位是否具有第一值;以及第一掩蔽电路,被配置为:当所述下一位具有第一值时,将第一目标位的值从第一值改变为第二值,并且将第一操作数识别为包括具有第二值的第一目标位、所述下一位和所述下一位之后的位;以及当所述下一位具有第二值时,将所述下一位的值从第二值改变为第一值,将第一目标位的值从第一值改变为第二值,并且将第一操作数识别为包括具有第二值的第一目标位、具有第一值的所述下一位和所述下一位之后的位。
处理电路可包括:第二位检查电路,被配置为确定在朝向激活值的LSB的方向上激活值的第二目标位的下一位是否具有第一值;以及第二掩蔽电路,被配置为:当所述下一位具有第一值时,将第二目标位的值从第一值改变为第二值,并且识别包括具有第二值的第二目标位、所述下一位和所述下一位之后的位的第二操作数;以及当所述下一位具有第二值时,将所述下一位的值从第二值改变为第一值,将第二目标位的值从第一值改变为第二值,并且识别包括具有第二值的第二目标位、具有第一值的所述下一位和所述下一位之后的位的第二操作数。
处理电路还被配置为生成与检测到的权重深度字段和激活深度字段对应的相应转换值,对生成的相应转换值求和,并且使用求和的结果来确定输出数据的结果深度字段。
处理电路可包括:移位电路,被配置为:当权重值的尾数字段中的前导位和激活值的尾数字段中的前导位中的每个具有第二值时,对运算结果执行2位移位;当权重值的尾数字段中的前导位和激活值的尾数字段中的前导位中的一个具有第二值且另一个具有第一值时,对运算结果执行1位移位;以及当权重值的尾数字段中的前导位和激活值的尾数字段中的前导位中的每个具有第一值时,跳过对运算结果的移位。
处理电路可包括:编码器,被配置为从运算结果提取一部分位,并且使用提取的所述一部分位、结果深度字段、权重值的符号位和激活值的符号位来生成输出数据。
权重值和激活值可各自具有第一数字格式,并且其中,所述计算设备还可包括数字格式转换器,数字格式转换器被配置为将不同于第一数字格式的数字格式的原始权重值和不同于第一数字格式的数字格式的原始激活值分别转换为第一数字格式的权重值和第一数字格式的激活值,或者将另外的数字格式的原始权重值和原始激活值分别转换为第一数字格式的权重值和第一数字格式的激活值。
数字格式转换器还可被配置为:基于原始权重值的指数值和预设因子来检测权重值的权重深度字段,确定与通过原始权重值的指数值和预设因子之间的除法运算得到的第一余数对应的位,并且通过与第一余数对应的位和原始权重值的尾数位的一部分位来确定权重值的尾数字段;以及基于原始激活值的指数值和预设因子来检测激活值的激活深度字段,确定与通过原始激活值的指数值和预设因子之间的除法运算得到的第二余数对应的位,并且通过与第二余数对应的位和原始激活值的尾数位的一部分位来确定激活值的尾数字段。
在另一总体方面,一种计算设备可包括:处理电路,被配置为:检测多个权重值中的权重值内的与权重值的范围相关的权重深度字段;识别权重值中的操作数;基于识别的操作数和多个激活值中的激活值的尾数来执行运算,基于检测到的权重深度字段、权重值的底数值、激活值的指数和用于对运算结果进行移位的移位值来生成输出数据的指数;以及基于生成的指数和运算结果来生成输出数据。
处理电路可包括深度字段检测器,被配置为在朝向权重值的最低有效位(LSB)的方向上,检测权重值的在权重值的最高有效位(MSB)和第二MSB之后的位之中的第一个具有第一值的目标位,并且将从第二MSB到目标位的位确定为权重深度字段。
深度字段检测器还可被配置为在第二MSB第一个具有第一值时将第二MSB确定为权重深度字段。
处理电路可包括:位检查电路,被配置为确定在朝向权重值的LSB的方向上权重值的目标位的下一位是否具有第一值;以及掩蔽电路,被配置为:当所述下一位具有第一值时,将目标位的值从第一值改变为第二值,并且将操作数识别为包括具有第二值的目标位、所述下一位和所述下一位之后的位;以及当所述下一位具有第二值时,将所述下一位的值从第二值改变为第一值,将目标位的值从第一值改变为第二值,并且将操作数识别为包括具有第二值的目标位、具有第一值的所述下一位和所述下一位之后的位。
处理电路还可被配置为:生成与检测到的权重深度字段对应的转换值,并且使用生成的转换值、k、根据权重值的尾数字段的前导位生成的值、所述移位值和激活值的指数来生成输出数据的指数,所述k是当底数值被表示为2的幂时的指数。
处理电路还可被配置为:将激活值的指数的符号应用于生成的转换值与所述k之间的相乘的结果,并且通过对符号被应用的相乘结果、激活值的指数、根据前导位生成的值和所述移位值求和来生成输出数据的指数。
当前导位具有第二值时,根据前导位生成的值对应于“-1”,并且当前导位具有第一值时,根据前导位生成的值对应于“0”。
处理电路还可被配置为:从运算结果提取一部分位,并且使用提取的所述一部分位和生成的指数来生成输出数据。
在另一总体方面,一种处理器实现的方法可包括:检测多个权重值中的权重值内的与权重值的范围相关的权重深度字段,检测多个激活值中的激活值内的与激活值的范围相关的激活深度字段;识别权重值中的第一操作数,并且识别激活值中的第二操作数;以及通过基于确定的第一操作数和第二操作数执行运算,生成具有在权重深度字段和激活深度字段上确定的结果深度字段的输出值。
检测权重深度字段的步骤可包括:检测从权重值的第二最高有效位(MSB)到第一个具有第一值的位的位,作为权重值的权重深度字段,并且其中,检测激活深度字段的步骤可包括:检测从激活值的第二MSB到第一个具有第一值的位的位,作为激活值的激活深度字段。
根据以下具体实施方式、附图和权利要求,其他特征和方面将是清楚的。
附图说明
图1示出根据一个或多个实施例的示例计算设备。
图2示出根据一个或多个实施例的示例数字格式。
图3和图4示出根据一个或多个实施例的映射第一数字格式和第二数字格式的示例方法。
图5A和图5B示出根据一个或多个实施例的计算设备中的示例运算器。
图6示出根据一个或多个实施例的计算设备中的示例运算器。
图7示出根据一个或多个实施例的由计算设备基于第一数字格式的权重值和第一数字格式的激活值来执行运算的示例方法。
图8示出根据一个或多个实施例的由计算设备基于第一数字格式的权重值和第二数字格式的激活值来执行运算的示例方法。
图9示出根据一个或多个实施例的被配置为对数字格式进行转换的示例计算设备。
图10示出根据一个或多个实施例的示例处理系统。
贯穿附图和具体实施方式,除非另外描述或提供,否则相同的附图参考标号可被理解为指代相同或相似的元件、特征和结构。附图可不按比例,并且为了清楚、说明和方便,附图中的元件的相对尺寸、比例和描绘可被夸大。
具体实施方式
提供以下详细描述以帮助读者获得对在此描述的方法、设备和/或系统的全面理解。然而,在理解本申请的公开之后,在此描述的方法、设备和/或系统的各种改变、修改和等同物将是清楚的。例如,在此描述的操作顺序仅是示例,并且不限于在此阐述的那些顺序,而是除了必须以特定次序发生的操作之外可如在理解本申请的公开之后将是清楚的那样被改变。此外,为了更加清楚和简明,可省略对在理解本申请的公开之后已知的特征的描述。
在此描述的特征可以以不同的形式体现,并且不应被解释为限于在此描述的示例。相反,在此描述的示例已被提供,以仅示出在理解本申请的公开之后将是清楚的实现在此描述的方法、设备和/或系统的许多可行方式中的一些可行方式。在此关于示例或实施例的术语“可”的使用(例如,关于示例或实施例可包括或实现什么)表示存在包括或实现这样的特征的至少一个示例或实施例,而所有示例不限于此。
在此使用的术语仅用于描述各种示例,并且不用于限制公开。除非上下文另外明确指示,否则单数也旨在包括复数形式。作为非限制性示例,术语“包含”、“包括”和“具有”表明存在陈述的特征、数量、操作、构件、元件和/或它们的组合,但不排除存在或添加一个或多个其他特征、数量、操作、构件、元件和/或它们的组合,或者可选的陈述的特征、数量、操作、构件、元件和/或它们的组合的可选存在。另外,虽然一个实施例可阐述这样的术语“包含”、“包括”和“具有”表明存在陈述的特征、数量、操作、构件、元件和/或它们的组合,但是可存在不具有陈述的特征、数量、操作、构件、元件和/或它们的组合中的一个或多个的其他实施例。
如在此使用的,术语“和/或”包括相关所列项中的任何一个以及任何两个或更多个的任何组合。除非相应的描述和实施例需要这样的列表(例如,“A、B和C中的至少一个”)被解释为具有连接含义,否则短语“A、B和C中的至少一个”、“A、B或C中的至少一个”等旨在具有分离含义,并且这些短语“A、B和C中的至少一个”、“A、B或C中的至少一个”等还包括可存在A、B和/或C中的每个中的一个或多个(例如,A、B和C中的每个中的一个或多个的任何组合)的示例。
贯穿说明书,当组件或元件被描述为“连接到”、“结合到”或“接合到”另一组件或元件时,它可直接“连接到”、“结合到”或“接合到”另一组件或元件,或者可合理地存在介于其间的一个或多个其他组件或元件。当组件或元件被描述为“直接连接到”、“直接结合到”或“直接接合到”另一组件或元件时,可不存在介于其间的其他元件。同样地,例如“在……之间”和“紧接在……之间”以及“邻近于”和“紧邻于”的表述也可如前所述的那样被解释。应当理解,如果组件(例如,第一组件)在有或没有术语“可操作地”或“可通信地”的情况下被称为“与”另一组件(例如,第二组件)“结合”、“结合到”另一组件(例如,第二组件)、“与”另一组件(例如,第二组件)“连接”或“连接到”另一组件(例如,第二组件),则表示该组件可直接(例如,通过有线)、无线地或经由第三组件与另一组件结合。
尽管在此可使用诸如“第一”、“第二”和“第三”或A、B、(a)、(b)等的术语来描述各种构件、组件、区域、层或部分,但是这些构件、组件、区域、层或部分不受这些术语限制。这些术语中的每个不用于限定例如对应的构件、组件、区域、层或部分的本质、次序或顺序,而是仅用于将对应的构件、组件、区域、层或部分与其他构件、组件、区域、层或部分区分开。因此,在不脱离示例的教导的情况下,在此描述的示例中所称的第一构件、第一组件、第一区域、第一层或第一部分也可被称为第二构件、第二组件、第二区域、第二层或第二部分。
除非另外定义,否则在此使用的所有术语(包括技术术语和科学术语)具有与本公开所属领域的普通技术人员通常理解和基于对本申请的公开的理解通常理解的含义相同的含义。除非在此明确地如此定义,否则术语(诸如,在通用词典中定义的那些术语)应被解释为具有与其在相关领域和本申请的公开的上下文中的含义一致的含义,并且不应以理想化或过于形式化的含义进行解释。
现有的定点数格式具有窄范围的表示值。例如,如果小数部分是7位长,则定点数格式可表示至少2-7(=1/128)的值。
在浮点数格式中,指数的长度是固定的。因此,对于相同的总位宽(或相同数量的位),浮点数格式表示比定点数格式更少的尾数位。
例如,一些典型的深度学习加速器可使用32位浮点数格式,但是在此发现,如果使用较小的位宽来加速嵌入式/移动环境中的大量计算,则机器学习模型的准确率可能降低。例如,用于高性能工作站的图形处理器(GPU)可支持8位定点数格式(例如,通过将32位浮点数量化为8位),但是这种实质量化可能导致这种降低的准确率。
图1示出根据一个或多个实施例的示例计算设备。
参照图1,示例计算设备100可包括第一缓冲器110、第二缓冲器120和运算器(或处理电路)130。
计算设备100可对应于深度学习加速器(例如,神经处理器)。但示例不限于此。
运算器130也可被称为运算电路。
第一缓冲器110可被配置为存储权重值。权重值的数字格式可以是将参照图2描述的第一数字格式或者第二数字格式。第一数字格式可以是根据一个或多个实施例的数字格式,并且第二数字格式可以是浮点格式。
第二缓冲器120可被配置为存储激活值。这些激活值可对应于输入特征图。激活值可以是第一数字格式或第二数字格式。
运算器130可通过基于输入特征图和权重值执行运算来生成(或确定)输出特征图。
运算器130可从第一缓冲器110接收权重值并且从第二缓冲器120接收激活值。
接收到的权重值和接收到的激活值中的每个可具有例如第一数字格式。在一个示例中,运算器130可从接收到的权重值检测与接收到的权重值的范围相关的深度字段(或深度位),并且从接收到的激活值检测与接收到的激活值的范围相关的深度字段(或深度位)。运算器130可基于检测到的深度字段来确定输出数据的指数。运算器130可通过处理接收到的权重值来确定第一操作数,并且通过处理接收到的激活值来确定第二操作数。运算器130可基于确定的第一操作数和第二操作数来执行运算(例如,二进制乘法运算),并且基于运算结果和确定的指数来确定输出数据。当接收到的权重值和接收到的激活值中的每个是第一数字格式时,稍后将参照图5A和图5B描述运算器130的操作。
在一个示例中,接收到的权重值可具有第一数字格式,并且接收到的激活值可具有第二数字格式。因此,运算器130可从接收到的权重值检测与接收到的权重值的范围相关的深度字段,并且通过处理接收到的权重值来确定操作数。运算器130可基于确定的操作数和接收到的激活值的尾数来执行运算(例如,二进制乘法运算)。运算器130可基于检测到的深度字段、接收到的权重值的底数值、接收到的激活值的指数和用于对运算结果进行移位的移位值来确定输出数据的指数。运算器130可基于确定的指数和运算结果来确定输出数据。当接收到的权重值是第一数字格式并且接收到的激活值是第二数字格式时,稍后将参照图6描述运算器130的操作。
第一数字格式可具有比现有深度学习加速器中使用的数字格式(例如,浮点格式等)的位宽小的位宽。因此,第一缓冲器110的大小可小于存储浮点格式的权重值的现有缓冲器的大小。第二缓冲器120的大小可小于存储浮点格式的激活值的现有缓冲器的大小。由于计算设备100从外部存储器(例如,稍后将通过图10描述的存储器1030)获取的数据量可小于现有深度学习加速器从外部存储器获取的数据量,因此计算设备100可以以比现有深度学习加速器更高的速率执行运算。
图2示出根据一个或多个实施例的示例第一数字格式。
参照图2,示例第一数字格式200可包括符号位(S)210、深度字段(或深度位)220和尾数字段(或尾数位)230。
符号位210可以是第一值(例如,“1”)或第二值(例如,“0”)。当符号位210是“1”时,第一数字格式200的值可以是负数,并且当符号位210是“0”时,第一数字格式200的值可以是正数。
符号位210可以是第一数字格式200的最高有效位(MSB)。最右边的位可被称为最低有效位(LSB)。
深度字段220可以是与第一数字格式200的值的范围相关的字段。在第一数字格式200中,从除了符号位210之外的第二MSB到第一个为“1”(即,具有值“1”)的位的位可对应于深度字段220。深度值d可指示深度字段220的位数或深度字段220的位宽。
尾数字段230可以是表示第一数字格式200的值的字段。在第一数字格式200中,除了符号位210和深度字段220之外的剩余部分可以是尾数字段230。
例如,如果存储器(例如,第一缓冲器110)存储具有第一数字格式200的值“1001xxxx”,并且除了MSB之外第四位第一个为“1”,则位“001”包括具有值“0”的第二MSB(即,“001”的第一位)、第四位(即,“001”的唯一具有值“1”的位)以及其间的值“0”的剩余位。因此,在该示例中,位“001”对应于“1001xxxx”内的深度字段,这表示在该示例中,深度值d(深度字段的总位数)为“3”。此外,在第一数字格式200的“1001xxxx”内,“xxxx”可以是表示该示例“1001xxxx”的值的尾数字段。对于另一示例,如果存储器(例如,第一缓冲器110)存储具有第一数字格式200的值“01001xxx”,则第二位(即,第二MSB)第一个为“1”,这表示“01001xxx”的深度字段仅为单个位,因此深度值d为“1”。在示例值“01001xxx”中,深度字段之后的剩余位“001xxx”可以是表示该示例“01001xxx”的值的尾数字段。
第一数字格式200的位宽可以是符号位210的数量、深度字段220的位的数量(或深度值)和尾数字段230的位的数量之和。对于给定位宽,作为非限制性示例,深度字段220和尾数字段230可如上所述那样变化。
在一个示例中,可以以第一数字格式200定义底数值和/或缩放值。
底数值可以是与第一数字格式200的值的可表示范围相关的值。随着底数值增大,第一数字格式200可表示更宽范围的值。例如,第一数字格式200可基本上表示小于“1”的小数部分,并且随着底数值增大,第一数字格式200可表示更宽范围的小数部分(r)。此外,根据底数值base和深度值d,小数部分的范围可被确定为base1-d>r≥base-d。当底数值被表示为2k时,小数部分的范围可表示为2k(1-d)>r≥2-kd。例如,当底数值为“4”(即,k=2)并且深度值为“2”时,第一数字格式200可表示2-2至2-4的范围。小数部分r的范围可以是2-2>r≥2-4。当底数值为“8”(即,k=3)并且深度值为“2”时,第一数字格式200可表示2-3至2-6的范围。小数部分r的范围可以是2-3>r≥2-6。对于相同的深度值,随着底数值增大,第一数字格式200可更精确和广泛地表示值。
缩放值可被设置为使得第一数字格式200可表示大于或等于“1”的值。例如,当第一数字格式200表示小于“1”的小数部分时,缩放值可应用于小于“1”的小数部分,从而第一数字格式200可表示大于或等于“1”的值。
根据示例,当第一数字格式200、定点和浮点具有相同的位宽时,第一数字格式200可表示比定点更宽的范围以及比浮点更多的尾数位。另外,当试图以相同的位宽表示大的值(例如,接近“1”的值)时,第一数字格式200可表示比定点更多的尾数位,并且尾数(或尾数字段)的位数可不固定而是可变的。因此,在预定范围(例如,接近“1”的任意值的范围)中,第一数字格式200可表示比浮点可表示的更大的尾数。
在下文中,将通过省略符号位210来提供描述,并且没有符号位210的数字格式可被称为“无符号第一数字格式”。
图3和图4示出根据一个或多个实施例的映射第一数字格式和第二数字格式的示例方法。
在图3和图4中示出的示例中,底数值可以是2k,并且无符号第一数字格式的位宽可以是n位,这表示无符号第一数字格式是n位长。
在操作311中,计算设备100可基于k和n来确定常规字段宽度rf。计算设备100可根据rf=floor(n-1-log2 k)来确定rf,其中,floor()表示下取整函数。例如,当k=2且n=7时,计算设备100可确定rf=5。
在操作313中,计算设备100可将深度值d设置在1至rf的范围内。例如,计算设备100可设置d=1,并且如果在操作329中存在迭代d的指令,则可设置d=2。计算设备100可从d=1至d=rf迭代地执行操作315、操作317、操作319、操作321(或操作323)、操作325和操作327。
在操作315中,计算设备100可确定若干变量(例如,子指数位se、公共尾数位cm、尾数模mm和子指数码sec)。计算设备100可根据se=ceil(log2k)确定se,根据cm=n-d-se确定cm,根据mm=2se-k确定mm,并且根据sec=2se-1确定sec,其中,ceil()表示上取整函数。例如,假设n=7、k=2且d=1,则计算设备100可确定se=1、mm=0和sec=1。由于cm=5,因此计算设备100可确定cm=xxxxx。
在操作317中,计算设备100可将子指数水平sel设置在1至k的范围内。例如,假设k=2,则计算设备100可将sel设置在1至2的范围内。例如,当执行操作319、操作321(或操作323)、操作325和操作327时,计算设备可设置sel=1,并且可设置sel=2。计算设备100可从sel=1至sel=k迭代地执行操作319、操作321(或操作323)、操作325和操作327。
在操作319中,计算设备100可确定mm是否大于或等于sel。如果mm大于或等于sel,则在操作321中,计算设备100可根据em=cm+1计算em,根据esec=bin(sec)[:-1]确定esec,并且根据sec=sec-2更新sec,其中,bin()表示用于将整数转换为其二进制表示的函数。em可表示有效尾数,并且esec可表示有效子指数码。如果mm小于sel,则在操作323中,计算设备100可根据em=cm确定em,根据esec=bin(sec)确定esec,并且根据sec=sec-1更新sec。
例如,如果mm=0,则mm小于sel,并且因此,在操作323中,计算设备100可确定em=xxxxx,确定esec=bin(1)=1,并且将sec设置为“0”。
在操作325中,计算设备100可通过根据第一规则{leading(d-1)0s,first 1,esec,em-bits}执行编码来生成无符号第一数字格式的二进制码。例如,假设d=1且sel=1,esec=1且em=xxxxx。在这种情况下,计算设备100可根据第一规则生成第一数字格式200的“11xxxxx”。
在操作327中,计算设备100可根据第二规则{1.xx...em-bits*2-((d―1)*k+sel)}将生成的二进制码解码(或转换)为浮点数。例如,由于“11xxxxx”中的“xxxxx”是em位长,并且k=2、d=1且sel=1,因此计算设备100可将“11xxxxx”转换为1.xxxxx*2-1。作为参考,“*”表示乘法符号。
计算设备100可返回到操作317并设置sel=2,并且可迭代操作319、操作323、操作325和操作327。通过该迭代,计算设备100可生成无符号第一数字格式的“10xxxxx”,并将生成的“10xxxxx”转换为浮点格式的1.xxxxx*2-2。
在sel=k中,当计算设备100迭代地执行操作319、操作321(或操作323)、操作325和操作327时,可确定在操作329中迭代d。
计算设备100可返回到操作313并设置d=2。
当d=2时,计算设备100可迭代操作315、操作317、操作319、操作321(或操作323)、操作325和操作327。通过这些操作的迭代,计算设备100可生成第一数字格式200的“011xxxx”并将第一数字格式200的“011xxxx”转换为浮点格式的1.xxxx*2-3,并且生成第一数字格式200的“010xxxx”并将第一数字格式200的“010xxxx”转换为浮点格式的1.xxxx*2-4。
在d=rf中,当计算设备100迭代地执行操作315、操作317、操作319、操作321(或操作323)、操作325和操作327时,图4的操作411可被执行。
参照图4,在操作411中,计算设备100可初始化sec。计算设备100可根据sec=2n ―rf―1-1来初始化sec。例如,假设n=7且rf=5,则计算设备100可初始化为sec=1。
在操作413中,计算设备100可将sel设置在1至(2n―rf―1-1)的范围内。计算设备100可设置sel=1。由于当n=7且rf=5时,2n―rf―1-1被计算为“1”,因此当n=7且rf=5时,sel可仅被设置为“1”。
在操作415中,计算设备100可确定esec并更新sec。计算设备100可根据esec=bin(sec)来确定esec并且根据sec=sec-1来更新sec。例如,计算设备100可确定esec=bin(1)=1,并将sec更新为“0”。
在操作417中,计算设备100可通过根据第三规则{leading(rf)0s,esec,1-mantissa bits}执行编码来生成无符号第一数字格式的二进制码。例如,假设rf=5且esec=1,则计算设备100可生成第一数字格式200的“000001x”。
在操作419中,计算设备100可根据第四规则{1.x...1-mantissa bits*2-(rf*k+sel)}将生成的二进制码解码(或转换)为浮点数。例如,计算设备100可根据第四规则将第一数字格式200的“000001x”转换为1.x*2-11。
计算设备100可在操作413中设置sel=2,并且可迭代操作415至操作419。由于当n=7且rf=5时,2n―rf―1-1被计算为“1”,因此当n=7且rf=5时,sel可仅被设置为“1”。在这种情况下,计算设备100可不迭代操作415至操作419。
当sel的迭代完成时,计算设备100可在操作421中计算最低有效位置lsp。计算设备100可根据lsp=k*rf+2n-rf-1来计算lsp。例如,当k=2、n=7且rf=5时,计算设备100可计算lsp=12。
在操作421中,计算设备100可将无符号第一数字格式的“0000001”转换为1.0*2-lsp,并且将无符号第一数字格式的“0000000”转换为0.0。
下面的表1示出当k=2且n=7时的无符号第一数字格式、第一数字格式被转换到的第二数字格式、以及第三数字格式(例如,定点)的示例。
表1
无符号第一数字格式 | 第二数字格式 | 第三数字格式 |
11xxxxx | 1.xxxxx…*2-1 | 0.1xxxxx… |
10xxxxx | 1.xxxxx…*2-2 | 0.01xxxxx… |
011xxxx | 1.xxxx…*2-3 | 0.001xxxx… |
010xxxx | 1.xxxx…*2-4 | 0.0001xxxx… |
0011xxx | 1.xxx…*2-5 | 0.00001xxx… |
0010xxx | 1.xxx…*2-6 | 0.000001xxx… |
00011xx | 1.xx…*2-7 | 0.0000001xx… |
00010xx | 1.xx…*2-8 | 0.00000001xx… |
000011x | 1.x…*2-9 | 0.000000001x... |
000010x | 1.x…*2-10 | 0.0000000001x... |
000001x | 1.x…*2-11 | 0.00000000001x... |
0000001 | 1.0…*2-12 | 0.000000000001… |
0000000 | 0.0…*2-12 | 0.000000000000… |
在上面的表1中,11xxxxx和10xxxxx是当d=1时生成的二进制码,011xxxx和010xxxx是当d=2时生成的二进制码,并且0011xxx和0010xxx是当d=3时生成的二进制码。00011xx和00010xx是当d=4时生成的二进制码,并且000011x和000010x是当d=5时生成的二进制码。000001x是通过图4的操作417生成的二进制码,并且0000001和0000000是通过图4的操作421生成的二进制码。
在上面的表1的第二数字格式和第三数字格式中,“...”可表示零。
下面的表2示出当k=3且n=7时的无符号第一数字格式、第一数字格式被转换到的第二数字格式、以及第三数字格式的示例。
表2
在上面表2的第二数字格式和第三数字格式中,“...”可表示零。
在一个示例中,计算设备100可基于数字格式之间的映射关系(例如,上面的表1或表2),将第二数字格式的数据(例如,权重值和/或激活值)或第三数字格式的数据转换为第一数字格式200的数据。
图5A和图5B示出根据一个或多个实施例的计算设备中的示例运算器。
参照图5A,示例运算器(或示例处理电路)500可包括第一掩蔽电路501和第二掩蔽电路507、第一深度字段检测器503和第二深度字段检测器509、第一位检查电路505和第二位检查电路511、加法器513、乘法电路515、移位电路517和编码器519。第一数字格式200的相应激活值和权重值可被提供。
运算器500可以是图1中的运算器130的非限制性示例。
如下面将描述的,第一深度字段检测器503和第二深度字段检测器509中的每个可分别从提供的激活值和权重值的位检测除了每个MSB之外第一个(即,在MSB到LSB的方向上)为“1”的(相应剩余位中的)对应位。第一深度字段检测器503和第二深度字段检测器509中的每个可被称为对应的第一个1(first 1)检测器。
运算器500可从存储器(例如,图1中的第一缓冲器110)接收第一数字格式200的权重值。运算器500可将权重值发送到第一掩蔽电路501和第一深度字段检测器503。
第一深度字段检测器503可从权重值的位检测除了MSB之外的剩余位中第一个(即,在MSB到LSB的方向上)为“1”的位(在下文中,被称为“第一目标位”)。第一深度字段检测器503可检测从权重值的第二MSB到第一目标位的位作为权重值的深度字段。
例如,参照图5B,当接收到第一数字格式200的示例权重值“10011xxx”时,第一深度字段检测器503可从“10011xxx”检测(或确定)除了MSB之外的剩余位中的第一目标位。由于第二MSB(例如,第二位)为“0”,因此第一深度字段检测器503可检查第二MSB的下一位(即,第三位)是否为“1”。由于第三位为“0”,因此第一深度字段检测器503可检查第三位的下一位(即,第四位)是否为“1”。由于第四位为“1”,因此第一深度字段检测器503可将第四位550检测(或确定)为第一目标位。第一深度字段检测器503可将“10011xxx”的从第二MSB到第四位550的位“001”检测(或确定)为示例权重值“10011xxx”的深度字段。
作为另一示例,当接收到第一数字格式200的示例权重值“111xxxxx”时,第一深度字段检测器503可检测到“111xxxxx”中除了MSB之外第二MSB第一个为“1”。第一深度字段检测器503可将“111xxxxx”的第二MSB“1”检测(或确定)为示例权重值“111xxxxx”的深度字段。
第一深度字段检测器503可确定并生成与权重值的深度字段对应的转换值。转换值可以是例如整数。作为非限制性示例,如下面的表3的示例所示,深度字段和转换值可被预先映射,并且第一深度字段检测器503可根据该映射关系确定并生成与权重值的深度字段对应的转换值。
表3
深度字段 | 转换值 |
01 | 1 |
001 | 2 |
0001 | 3 |
… | … |
深度字段与转换值之间的映射关系不限于上面的表3。
在下文中,与权重值的深度字段对应的转换值将被称为“第一转换值”。第一深度字段检测器503可将第一转换值发送到加法器513。
第一位检查电路505可检查权重值的第一目标位的下一位的值。第一位检查电路505可将检查结果(例如,“0”或“1”)发送到移位电路517。例如,由于权重值“10011xxx”的第四位550是第一目标位,因此第一位检查电路505可检查第四位550的下一位(即,图5B中的第五位560)的值。第一位检查电路505可检查到“10011xxx”的第五位560为“1”。第一位检查电路505可将检查结果(即,第五位560的值)发送到移位电路517。从权重值“10011xxx”的第二MSB到第一目标位的位可对应于深度字段,并且从第一目标位的下一位560到权重值的最低有效位(LSB)的位可对应于尾数字段。第一位检查电路505可检查权重值的尾数字段的前导位(或尾数字段的第一位)的值。第五位560可以是“10011xxx”的尾数字段的前导位(或第一位),因此,第一位检查电路505可检查权重值的尾数字段的前导位的值并将检查结果发送到移位电路517。
虽然图5A示出第一深度字段检测器503和第一位检查电路505是分离的,但是这仅是示例,并且第一深度字段检测器503和第一位检查电路505可被实现为一个电路。
第一掩蔽电路501可通过处理权重值来确定第一操作数。第一掩蔽电路501可从第一位检查电路505接收第一目标位的下一位的值。当从第一位检查电路505接收到“1”时,第一掩蔽电路501可对第一目标位执行掩蔽。当从第一位检查电路505接收到“0”时,第一掩蔽电路501可将第一目标位的下一位转换为“1”并对第一目标位执行掩蔽。掩蔽可包括例如将位的值转换为“0”的操作。第一掩蔽电路501可从掩蔽结果提取预定数量的位(或预定位置处的位),将提取的位确定为第一操作数,并将第一操作数发送到乘法电路515。提取的位的数量可根据乘法电路515的大小来确定。
例如,由于图5B中的权重值“10011xxx”的第一目标位550的下一位560(或尾数字段的前导位)为“1”,因此第一掩蔽电路501可从第一位检查电路505接收到“1”。第一掩蔽电路501可将第一目标位550的值从“1”转换(或改变)为“0”。当乘法电路515是例如6位×6位二进制乘法电路时,第一掩蔽电路501可从第一目标位550的值被转换的权重值“10001xxx”提取包括尾数字段的6个低位“001xxx”。第一掩蔽电路501可将提取的位“001xxx”确定为乘法电路515的第一操作数,并将第一操作数“001xxx”发送到乘法电路515。
作为另一示例权重值“000010xx”,由于权重值“000010xx”的第一目标位的下一位为“0”,因此第一掩蔽电路501可从第一位检查电路505接收到“0”。第一掩蔽电路501可将第一目标位的下一位的值转换为“1”,并将第一目标位的值从“1”转换为“0”。当乘法电路515是例如6位×6位二进制乘法电路时,第一掩蔽电路501可从第一目标位的下一位的值被转换的权重值“000001xx”提取包括尾数字段的6个低位“0001xx”。第一掩蔽电路501可将提取的位“0001xx”确定为第一操作数,并将第一操作数“0001xx”发送到乘法电路515。
运算器500可从存储器(例如,图1中的第二缓冲器120)接收第一数字格式200的示例激活值。运算器500可将激活值发送到第二掩蔽电路507和第二深度字段检测器509。
第一掩蔽电路501的描述可应用于第二掩蔽电路507,并且第一深度字段检测器503的描述可应用于第二深度字段检测器509。
第二掩蔽电路507可通过处理激活值来确定第二操作数,并将第二操作数发送到乘法电路515。
第二深度字段检测器509可从激活值的位检测除了MSB之外的剩余位中第一个为“1”的位(在下文中,被称为“第二目标位”),并且检测从激活值的第二MSB到第二目标位的位作为激活值的深度字段。例如,当接收到第一数字格式200的示例激活值“1010xxxx”时,第二深度字段检测器509可将“1010xxxx”的第三位检测(或确定)为第二目标位。第二深度字段检测器509可将从“1010xxxx”的第二MSB到第二目标位的位“01”检测(或确定)为“1010xxxx”的深度字段。
第二深度字段检测器509可确定与激活值的深度字段对应的转换值。例如,第二深度字段检测器509可通过参照上面作为非限制性示例的表3来确定与激活值的深度字段对应的转换值。在下文中,与激活值的深度字段对应的转换值将被称为“第二转换值”。第二深度字段检测器509可将第二转换值发送到加法器513。
加法器513可对从第一深度字段检测器503接收的第一转换值和从第二深度字段检测器509接收的第二转换值求和。加法器513可将求和结果发送到编码器519。例如,加法器513可从第一深度字段检测器503接收第一转换值(例如,“2”),并且从第二深度字段检测器509接收第二转换值(例如,“1”)。在这种情况下,加法器513可将求和结果(例如,“3”)发送到编码器519。
乘法电路515可基于第一操作数和第二操作数执行二进制乘法运算。
当乘法电路515例如是6位×6位二进制乘法电路时,乘法电路515的运算结果的位宽(或大小)可以是12位。
移位电路517可从乘法电路515接收乘法电路515的运算结果。移位电路517可基于第一位检查电路505的检查结果(例如,“0”或“1”)和第二位检查电路511的检查结果(例如,“0”或“1”),对乘法电路515的运算结果进行移位。例如,移位电路517可从第一位检查电路505接收到“0”并从第二位检查电路511接收到“0”。在一个示例中,移位电路517可将乘法电路515的运算结果向右移位2位。移位电路517可从第一位检查电路505和第二位检查电路511中的一个接收到“0”,并且从另一个接收到“1”。在一个示例中,移位电路517可将乘法电路515的运算结果向右移位1位。移位电路517可从第一位检查电路505接收到“1”并从第二位检查电路511接收到“1”。在一个示例中,移位电路517可不对乘法电路515的运算结果进行移位。
当移位电路517对乘法电路515的运算结果进行移位时,移位电路517可将移位结果发送到编码器519。当移位电路517不对乘法电路515的运算结果进行移位时,移位电路517可将乘法电路515的运算结果发送到编码器519。
编码器519可基于从移位电路517接收的数据(例如,乘法电路515的移位结果或运算结果)和从加法器513接收的求和结果来确定输出数据。输出数据可具有第一数字格式200。输出数据的位宽可与权重值的位宽和激活值的位宽相同。当权重值的位宽和激活值的位宽为8位时,输出数据的位宽可为8位。
编码器519可使用权重值的符号位和激活值的符号位来确定输出数据的符号位。当权重值的符号位和激活值的符号位相同时,编码器519可将输出数据的符号位确定为“0”。当权重值的符号位和激活值的符号位彼此不同时,编码器519可将输出数据的符号位确定为“1”。
编码器519可使用从加法器513接收的求和结果来确定输出数据的深度字段。编码器519可通过参照上面的表3找到映射到求和结果的深度字段,并且将找到的深度字段确定为输出数据的深度字段。例如,当从加法器513接收到求和结果“3”时,编码器519可通过参照上面作为非限制性示例的表3将映射到“3”的“0001”确定为输出数据的深度字段。
编码器519可提取从移位电路517接收的数据(例如,乘法电路515的移位结果或运算结果)的高位,并且将提取的高位确定为输出数据的尾数字段。例如,输出数据的位宽可为8位。输出数据的符号位的数量可为“1”。当输出数据的深度字段为“0001”时,深度字段的位数可为“4”。编码器519可确定或识别出输出数据的8位中的3位为尾数字段的大小。编码器519可提取从移位电路517接收的数据的更有效的3位,并且将提取的位确定为输出数据的尾数字段。当提取的位为例如“abc”时,编码器519可将“00001abc”确定为输出数据。
编码器519可将输出数据存储在存储器(例如,输出缓冲器)中。
下面的表4示出当计算设备100使用若干数字格式时的准确率和一致性的示例。
表4
在上面作为非限制性示例的表4中,“准确率”表示图像分类的准确程度,并且“一致性”表示与使用浮点32(基准)时的图像分类结果一致的程度。当使用第一数字格式时,即使对于相对小的位宽,计算设备100也可表现出相对高的准确率。由于第一数字格式具有比其他数字格式小的位宽,因此可减少由计算设备100从外部存储器接收的数据量及通信量。结果,可提高计算设备100的能量效率。
图6示出根据一个或多个实施例的计算设备中的示例运算器。
参照图6,示例运算器(或示例处理电路)600可包括掩蔽电路601、深度字段检测器603、位检查电路605、乘法电路607、移位值检测器609、移位电路611、加法器613和组合电路615。
运算器600可以是图1中的运算器130的非限制性示例。
深度字段检测器603可被配置为检测具有第一数字格式200的权重值的深度字段。
运算器600可通过基于第一数字格式200的权重值和第二数字格式(例如,浮点格式)的激活值执行运算来确定输出数据(例如,输出特征值)。换句话说,当权重值和激活值具有不同的数字格式时,运算器600可基于权重值和激活值来确定输出数据。当权重值具有第二数字格式并且激活值具有第一数字格式200时,下面将参照图6提供的描述也可适用。
运算器600可从存储器(例如,图1中的第一缓冲器110)接收第一数字格式200的权重值。运算器600可将权重值发送到掩蔽电路601和深度字段检测器603。
掩蔽电路601可通过处理权重值来确定乘法电路607的第一操作数。图5A的第一掩蔽电路501的描述可应用于掩蔽电路601。
运算器600可从存储器(例如,图1中的第二缓冲器120)接收第二数字格式的激活值。运算器600可将激活值的指数发送到加法器613,并将激活值的尾数和“1”发送到乘法电路607。在一个示例中,“1”可以是添加到激活值的尾数的前端的位。因此,被添加“1”的尾数可以是乘法电路607的第二操作数。因此,当激活值的尾数是10位长的“0100110101”时,通过将“1”添加到“0100110101”的前端而获得的“10100110101”可以是乘法电路607的第二操作数。
在一个示例中,权重值可以是8位长,并且激活值可以是16位长。激活值的尾数可以是10位长。乘法电路607可以是例如6位×11位二进制乘法电路。在此描述的权重值的大小、激活值的大小和乘法电路607的大小是非限制性示例。
深度字段检测器603可从权重值检测与权重值的范围相关的深度字段。例如,深度字段检测器603可从权重值的位检测除了MSB之外的剩余位中第一个为“1”的位(在下文中,被称为“目标位”)。深度字段检测器603可检测(或确定)从权重值的第二MSB到目标位的位作为权重值的深度字段。图5A的第一深度字段检测器503的深度字段检测操作可应用于深度字段检测器603的深度字段检测操作。
深度字段检测器603可确定与检测到的权重值的深度字段对应的转换值。深度字段检测器603可通过深度字段与转换值之间的预定映射关系(例如,上面的表3)来确定与检测到的权重值的深度字段对应的转换值。例如,当深度字段“001”被检测到时,深度字段检测器603可通过上面的表3将与“001”对应的转换值确定为“2”。
深度字段检测器603可检查激活值的指数的符号是正还是负。
深度字段检测器603可检查权重值的底数值。
深度字段检测器603可将激活值的指数的符号应用于“将确定的转换值与k相乘的结果”,并且将应用的结果发送到加法器613,k是当权重值的底数值被表示为2的幂时的指数。例如,当权重值的底数值是“4”时,底数值可被表示为22。当确定的转换值是“2”时,深度字段检测器603可通过将底数值的指数k“2”与确定的转换值“2”相乘来计算“4”。当激活值的指数为负时,深度字段检测器603可将“负”应用于相乘结果“4”,并将“-4”发送到加法器613。
位检查电路605可检查权重值的目标位的下一位的值,并且将根据检查结果(例如,“0”或“1”)的值发送到加法器613。例如,位检查电路605可在权重值的目标位的下一位为“0”时将“-1”发送到加法器613,并且在权重值的目标位的下一位为“1”时将“0”发送到加法器613。
图6示出深度字段检测器603和位检查电路605是分离的,但是这仅是示例,并且深度字段检测器603和位检查电路605可被实现为一个电路。
乘法电路607可被配置为基于第二操作数和从掩蔽电路601接收的第一操作数来执行运算(例如,二进制乘法运算)。乘法电路607可以是如上述非限制性示例中的6位×11位二进制乘法电路,并且乘法电路607可接收6位的第一操作数和11位的第二操作数。乘法电路607的运算结果可以是17位长。
乘法电路607可将运算结果发送到移位值检测器609。
移位值检测器609可确定用于对乘法电路607的运算结果进行标准化的移位值。例如,乘法电路607的运算结果可以是17位长的“01xxxxxxxxxxxxxxx”。“01xxxxxxxxxxxxxxx”可对应于“0.01xxxxxxxxxxxxxxx”。移位值检测器609可确定用于将“0.01xxxxxxxxxxxxxxx”标准化为“1.xxxxxxxxxxxxxxx*2-2”的移位值为“-2”。
移位值检测器609可将确定的移位值发送到加法器613和移位电路611。
加法器613可使用从深度字段检测器603接收的值、激活值的指数、从位检查电路605接收的值和从移位值检测器609接收的移位值来确定输出数据的指数。例如,激活值的指数可以是“-1”。当加法器613从深度字段检测器603接收到“-4”、从位检查电路605接收到“-1”并且从移位值检测器609接收到“-2”时,加法器613可通过对“-4”、“-1”、“-1”和“-2”求和来将输出数据的指数确定为“-8”。
移位电路611可基于移位值对乘法电路607的运算结果进行移位,并且从移位的运算结果提取尾数的一部分位。例如,当移位值为“-2”并且乘法电路607的运算结果为“01xxxxxxxxxxxxxxx”时,移位电路611可将“0.01xxxxxxxxxxxxxxx”移位(或标准化)为“1.xxxxxxxxxxxxxxx*2-2”。当输出数据为16位浮点格式时,16位中的10位可对应于浮点格式的尾数位。移位电路611可从“1.xxxxxxxxxxxxxxx*2-2”的尾数位“xxxxxxxxxxxxxxx”提取更有效的10位。
移位电路611可将提取的位发送到组合电路615。
组合电路615可被配置为基于从移位电路611接收的位、从加法器613接收的指数、权重值的符号位和激活值的符号位来确定输出数据。例如,当权重值的符号位和激活值的符号位相同时,组合电路615可将输出数据的符号位确定为“0”。当从加法器613接收到指数并且从移位电路611接收到10位长的“xxxxxxxxxx”时,组合电路615可确定16位浮点格式的输出数据“0eeeeexxxxxxxxxx”。这里,“eeeee”可对应于指数的二进制码。
在一个示例中,组合电路615可包括用于存储输出数据的符号位的第一寄存器、用于存储从加法器613接收的指数的第二寄存器、以及用于存储从移位电路611接收的位的第三寄存器。当权重值的符号位和激活值的符号位相同时,组合电路615可将“0”写入第一寄存器。
图7示出根据一个或多个实施例的由计算设备基于第一数字格式的权重值和第一数字格式的激活值来执行操作的示例方法。
参照图7,在操作710中,计算设备(例如,图1中的计算设备100)可从权重值检测与权重值的范围相关的深度字段。例如,运算器(例如,图1中的运算器130或图5A中的运算器500)可从权重值的位检测除了MSB之外的剩余位中第一个具有第一值(例如,“1”)的第一目标位。运算器130可检测从权重值的第二MSB到第一目标位的位作为权重值的深度字段。当权重值的第二MSB第一个具有第一值时,运算器130可将权重值的第二MSB检测为权重值的深度字段。
在操作720中,计算设备100可从激活值检测与激活值的范围相关的深度字段。例如,运算器130可从激活值的位检测除了MSB之外的剩余位中第一个具有第一值的第二目标位。运算器130可检测从激活值的第二MSB到第二目标位的位作为激活值的深度字段。当激活值的第二MSB第一个具有第一值时,运算器130可将激活值的第二MSB检测为激活值的深度字段。
在操作730中,计算设备100可基于检测到的深度字段来确定输出数据的深度字段。例如,计算设备100可确定与确定的各个深度字段对应的转换值,对确定的转换值求和,并且使用求和的结果来确定输出数据的深度字段。
在操作740中,计算设备100可通过处理权重值来确定第一操作数。例如,运算器130可确定第一目标位的下一位是否具有第一值。当第一目标位的下一位具有第一值时,运算器130可将第一目标位的值从第一值改变为第二值(例如,“0”)。运算器130可确定包括“具有第二值的第一目标位、第一目标位的下一位以及第一目标位的下一位之后的位”的第一操作数。当第一目标位的下一位具有第二值时,运算器130可将第一目标位的下一位从第二值改变为第一值。运算器130可将第一目标位的值从第一值改变为第二值。运算器130可确定包括“具有第二值的第一目标位、具有第一值的下一位以及下一位之后的位”的第一操作数。
在操作750中,计算设备100可通过处理激活值来确定第二操作数。例如,运算器130可确定第二目标位的下一位是否具有第一值。当第二目标位的下一位具有第一值时,运算器130可将第二目标位的值从第一值改变为第二值。运算器130可确定包括“具有第二值的第二目标位、第二目标位的下一位以及紧接在下一位之后的位”的第二操作数。当第二目标位的下一位具有第二值时,运算器130可将第二目标位的下一位的值从第二值改变为第一值。运算器130可将第二目标位的值从第一值改变为第二值。运算器130可确定包括“具有第二值的第二目标位、具有第一值的下一位以及紧接在下一位之后的位”的第二操作数。
在操作760中,计算设备100可基于确定的第一操作数和第二操作数来执行运算。例如,运算器130可基于确定的第一操作数和第二操作数来执行二进制乘法运算。
在操作770中,计算设备100可基于运算结果和确定的深度字段来确定输出数据。运算器130可从运算结果提取一部分位。提取的一部分位可对应于输出数据的尾数字段。运算器130可使用提取的一部分位、确定的深度字段、权重值的符号位和激活值的符号位来确定输出数据。
在一个示例中,当权重值的尾数字段的前导位和激活值的尾数字段的前导位中的每个具有第二值(例如,“0”)时,运算器130可对运算结果执行2位移位(例如,2位右移位)。运算器130可从2位移位的运算结果提取一部分位。提取的一部分位可对应于输出数据的尾数字段。当权重值的尾数字段的前导位和激活值的尾数字段的前导位中的一个具有第二值并且另一个具有第一值时,运算器130可对运算结果执行1位移位(例如,1位右移位)。运算器130可从1位移位的运算结果提取一部分位。提取的一部分位可对应于输出数据的尾数字段。当权重值的尾数字段的前导位和激活值的尾数字段的前导位中的每个具有第一值时,运算器130可不对运算结果执行移位。
在一个示例中,计算设备100可将不同于第一数字格式200的数字格式(例如,第二数字格式、第三数字格式等)的原始权重值和不同于第一数字格式200的数字格式(例如,第二数字格式、第三数字格式等)的原始激活值分别转换为第一数字格式200的权重值和第一数字格式200的激活值。如将参照图9描述的,计算设备100可基于原始权重值的指数值和预设因子(例如,上述k(或底数值))来确定权重值的深度字段。计算设备100可确定与通过原始权重值的指数值和预设因子之间的除法运算得到的第一余数对应的位。计算设备100可通过与第一余数对应的位和原始权重值的尾数位的一部分位来确定权重值的尾数字段。计算设备100可基于原始激活值的指数值和预设因子来确定激活值的深度字段。计算设备100可确定与通过原始激活值的指数值和预设因子之间的除法运算得到的第二余数对应的位。计算设备100可通过与第二余数对应的位和原始激活值的尾数位的一部分位来确定激活值的尾数字段。
参照图1至图6提供的描述可应用于图7的计算设备的操作。
图8示出由计算设备基于第一数字格式的权重值和第二数字格式的激活值来执行操作的示例。
参照图8,在操作810中,计算设备(例如,图1中的计算设备100)可从权重值检测与权重值的范围相关的深度字段。例如,计算设备100的运算器(例如,图1中的运算器130或图6中的运算器600)可从权重值的位检测除了MSB之外的剩余位中第一个具有第一值的目标位。运算器130可检测从权重值的第二MSB到目标位的位作为权重值的深度字段。
在操作820中,计算设备100可通过处理权重值来确定操作数。操作740的描述可应用于操作820。
在操作830中,计算设备100可基于确定的操作数和激活值的尾数来执行运算。例如,运算器130可基于确定的操作数和激活值的尾数来执行二进制乘法运算。
在一个示例中,运算器130可将“1”添加到激活值的尾数的前端,并且基于确定的操作数和被添加“1”的尾数来执行二进制乘法运算。
在操作840中,计算设备100可基于检测到的深度字段、权重值的底数值、激活值的指数和用于对运算结果进行移位的移位值来确定输出数据的指数。在一个示例中,运算器130可确定与检测到的深度字段对应的转换值。运算器130可使用确定的转换值、k(其是当权重值的底数值被表示为2的幂时的指数)、根据权重值的尾数字段的前导位确定的值(例如,“-1”或“0”)、用于对运算结果进行移位的移位值、以及激活值的指数来确定输出数据的指数。例如,运算器130可将激活值的指数的符号(例如,正或负)应用于确定的转换值与k之间的相乘结果,并且通过对被应用符号的相乘结果、激活值的指数、根据权重值的尾数字段的前导位确定的值和移位值求和来确定输出数据的指数。在这种情况下,当权重值的尾数字段的前导位具有第二值时,根据前导位确定的值可对应于“-1”,并且当前导位具有第一值时,根据前导位确定的值可对应于“0”。
在操作850中,计算设备100可基于确定的指数和运算结果来确定输出数据。运算器130可从运算结果提取一部分位。提取的一部分位可对应于浮点格式的输出数据的尾数位。运算器130可使用提取的一部分位和确定的指数来确定输出数据。
在一个示例中,计算设备100可将不同于第一数字格式200的数字格式的原始权重值转换为第一数字格式200的权重值。如将参照图9描述的,计算设备100可基于原始权重值的指数值和预设因子来确定权重值的深度字段,并且通过“与通过原始权重值的指数值和预设因子之间的除法运算得到的余数对应的位”和“原始权重值的尾数位的一部分位”来确定权重值的尾数字段。
参照图1至图6提供的描述可应用于图8的计算设备的操作。
图9示出根据一个或多个实施例的被配置为执行数字格式转换的示例计算设备。
参照图9,计算设备900可包括第一缓冲器110、第二缓冲器120、运算器130和转换器910。作为非限制性示例,计算设备100的描述可应用于计算设备900。
转换器910可被配置为将不同于第一数字格式200的数字格式(例如,第二数字格式、第三数字格式等)的原始权重值转换为第一数字格式200的权重值。转换器910可将第一数字格式200的权重值存储在第一缓冲器110中。
转换器910可被配置为将不同于第一数字格式200的数字格式(例如,第二数字格式、第三数字格式等)的原始激活值转换为第一数字格式200的激活值。转换器910可将第一数字格式200的激活值存储在第二缓冲器120中。
转换器910可被配置为基于第二数字格式的原始权重值的指数值和预设因子(例如,上述k(或底数值))来确定第一数字格式200的权重值的深度字段。转换器910可被配置为确定与通过原始权重值的指数值和预设因子之间的除法运算得到的余数(或原始权重值的指数值与预设因子之间的取模运算结果)(例如,上面描述的第一余数)对应的位。转换器910可被配置为通过与余数对应的位和原始权重值的尾数位的一部分位来确定第一数字格式200的权重值的尾数字段。作为非限制性示例,在下面的表5中示出与通过原始权重值的指数值和预设因子之间的除法运算得到的余数对应的位的示例。
表5
在上面的表5中,当k=2时,转换器910可在余数被计算为“1”时将与余数对应的位确定为“1”,并且在余数被计算为“0”时将与余数对应的位确定为“0”。如稍后将描述的,确定的位可对应于尾数字段的第一位。当k=3时,转换器910可在余数被计算为“2”时将与余数对应的位确定为“01”,并且在余数被计算为“0”时将与余数对应的位确定为“00”。确定的位可对应于尾数字段的第一位和第二位。当余数被计算为“1”时,转换器910可将与余数对应的位确定为“1”。确定的位可对应于尾数字段的第一位。
作为示例,除了符号位之外的权重值可以是7位长,并且k=2(或底数=4)。
在一个示例中,第二数字格式的原始权重值可对应于上表1中的1.xxxx…*2-3。1.xxxx…*2-3中,指数值可以是“-3”。转换器910可将指数值的绝对值“3”除以k的结果“1.5”的向上取整值“2”确定为深度值,并且根据深度值“2”将“01”确定为权重值的深度字段。因此,权重值的深度字段可以是2位长。由于当指数值的绝对值“3”除以k时余数为“1”,因此转换器910可通过参照上面的表5来确定与余数“1”对应的位“1”。转换器910可根据确定的位“1”将权重值的尾数字段的第一位确定为“1”。由于除了符号位之外的权重值是7位长,并且深度字段是2位长,因此尾数字段可以是5位长。由于尾数字段的第一位是“1”,因此转换器910可从1.xxxx…*2-3的尾数位“xxxx…”提取更有效的4位(例如,xxxx)以填充尾数字段的剩余4位。转换器910可将第二数字格式的原始权重值1.xxxx…*2-3转换为第一数字格式200的权重值s011xxxx。这里,s表示符号位。
在一个示例中,第二数字格式的原始权重值可对应于上表1中的1.xxxx…*2-4。在1.xxxx…*2-4中,指数值可以是“-4”。转换器910可将指数值的绝对值“4”除以k的结果“2”的向上取整值“2”确定为深度值,并且根据深度值“2”将“01”确定为权重值的深度字段。由于当指数值的绝对值“4”除以k时余数为“0”,因此转换器910可通过参照上面的表5来确定与余数“0”对应的位“0”。转换器910可根据确定的位“0”将权重值的尾数字段的第一位确定为“0”。转换器910可从1.xxxx…*2-4的尾数位“xxxx…”提取更有效的4位(例如,xxxx),以填充尾数字段的剩余位。转换器910可将第二数字格式的原始权重值1.xxxx…*2-4转换为第一数字格式200的权重值s010xxxx。这里,s表示符号位。
作为另一示例,除了符号位之外的权重值可以是7位长,并且k=3(或底数=8)。
在一个示例中,第二数字格式的原始权重值可对应于上表2中的1.xxxxx…*2-1。在1.xxxxx…*2-1中,指数值可以是“-1”。转换器910可将指数值的绝对值“1”除以k的结果“1/3”的向上取整值“1”确定为深度值,并且根据深度值“1”将“1”确定为深度字段。由于当指数值的绝对值“1”除以k时余数为“1”,因此转换器910可通过参照上面的表5来确定与余数“1”对应的位“1”。转换器910可根据确定的位“1”将尾数字段的第一位确定为“1”。由于除了符号位之外的权重值是7位长,并且深度字段是1位长,因此尾数字段可以是6位长。由于尾数字段的第一位可以是“1”,因此转换器910可从1.xxxxx…*2-1的尾数位“xxxxx…”提取更有效的5位(例如,xxxxx),以填充尾数字段的剩余5位。转换器910可将第二数字格式的原始权重值1.xxxxx…*2-1转换为第一数字格式200的权重值s11xxxxx。这里,s表示符号位。
在一个示例中,第二数字格式的原始权重值可对应于上表2中的1.xxxxx…*2-2。在1.xxxxx…*2-2中,指数值可以是“-2”。转换器910可将指数值的绝对值“2”除以k的结果“2/3”的向上取整值“1”确定为深度值,并且根据深度值“1”将“1”确定为深度字段。由于当指数值的绝对值“2”除以k时余数为“2”,因此转换器910可通过参照上面的表5来确定与余数“2”对应的位“01”。转换器910可根据确定的位“01”将尾数字段的第一位和第二位确定为“01”。由于除了符号位之外的权重值是7位长,并且深度字段是1位长,因此尾数字段可以是6位长。由于尾数字段的第一位和第二位可以是“01”,因此转换器910可从1.xxxxx…*2-2的尾数位“xxxxx…”提取更有效的4位(例如,xxxx)以填充尾数字段的剩余4位。转换器910可将第二数字格式的原始权重值1.xxxxx…*2-2转换为第一数字格式200的权重值s101xxxx。这里,s表示符号位。
在一个示例中,第二数字格式的原始权重值可对应于上表2中的1.xxxx…*2-3。在1.xxxx…*2-3中,指数值可以是“-3”。转换器910可将指数值的绝对值“3”除以k的结果“1”的向上取整值“1”确定为深度值,并且根据深度值“1”将“1”确定为深度字段。由于当指数值的绝对值“3”除以k时余数为“0”,因此转换器910可通过参照上面的表5来确定与余数“0”对应的位“00”。转换器910可根据确定的位“00”将尾数字段的第一位和第二位确定为“00”。转换器910可从1.xxxx…*2-3的尾数位“xxxx…”提取更有效的4位(例如,xxxx)以填充尾数字段的剩余位。转换器910可将第二数字格式的原始权重值1.xxxx…*2-3转换为第一数字格式200的权重值s100xxxx。这里,s表示符号位。
以与上述将原始权重值转换为第一数字格式200的权重值的方法相同的方式,转换器910可被配置为将原始激活值转换为第一数字格式200的激活值。
当原始权重值和/或原始激活值为第三数字格式(例如,定点)时,转换器910可被配置为将原始权重值和/或原始激活值转换为第二数字格式(例如,浮点)。转换器910可被配置为将转换为第二数字格式的原始权重值和/或原始激活值转换为第一数字格式200的权重值和/或激活值。
图10示出根据一个或多个实施例的示例处理系统。
参照图10,处理系统1000可包括处理器1010、主机1020和存储器1030。
处理系统1000还可被称为电子装置。作为示例,处理系统1000可被应用于数据中心和服务器。示例不限于此,处理系统1000可被应用于用户终端(例如,个人计算机(PC)、智能电话、膝上型计算机、平板PC等)。
处理器1010可对应于上述图1中的计算设备100或图9中的计算设备900。
处理器1010还可被称为神经处理单元(NPU)或深度学习加速器。
尽管图10中示出单个处理器1010,但是示例不限于此,处理系统1000可包括一个或多个处理器。
处理器1010、主机1020和存储器1030可彼此通信。例如,处理器1010、主机1020和存储器1030可通过总线、片上网络(NoC)或外围组件互连高速(PCIe)彼此通信。
主机1020可以是控制包括在处理系统1000中的组件的操作的电子装置。主机1020可包括例如中央处理器(CPU)。主机1020可包括编译器,编译器可通过对应用进行编译,将应用(或程序、源代码)转换为可由处理器1010处理的格式或可由处理器1010执行的可执行文件。
存储器1030可位于处理器1010外部,并且还可被称为片外存储器。存储器1030可包括动态随机存取存储器(DRAM)。然而,示例不限于此。
存储器1030可存储将由处理器1010执行的指令并存储数据(例如,权重值和/或激活值)。权重值和/或激活值可具有第一数字格式200。存储在存储器1030中的指令和数据可被发送给处理器1010。处理器1010可根据指令对数据执行操作。
在此针对图1至图10描述的处理器、存储器、电子装置、设备、处理系统1000、计算设备100和900、缓冲器110、120、运算器130、500和600、掩蔽电路501、507和601、深度字段检测器503、509和603、位检查电路505、511和605、加法器513和613、乘法电路515和607、移位值检测器609、移位电路517和611、组合电路615、编码器519、转换器910、存储器1030、主机1020、处理器1010以及其他设备、装置、单元、模块和组件由硬件组件实现或表示硬件组件。可用于执行在本申请中描述的操作的硬件组件的示例在适当的情况下包括控制器、传感器、发生器、驱动器、存储器、比较器、算术逻辑单元、加法器、减法器、乘法器、除法器、积分器以及被配置为执行在本申请中描述的操作的任何其他电子组件。在其他示例中,执行在本申请中描述的操作的一个或多个硬件组件由计算硬件(例如,由一个或多个处理器或计算机实现)实现。处理器或计算机可由一个或多个处理元件(诸如,逻辑门阵列、控制器和算术逻辑单元、数字信号处理器、微计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器或被配置为以限定的方式响应并执行指令以实现期望结果的任何其他装置或装置的组合)实现。在一个示例中,处理器或计算机包括或连接到存储由处理器或计算机执行的指令或软件的一个或多个存储器。由处理器或计算机实现的硬件组件可执行用于执行在本申请中描述的操作的指令或软件(诸如,操作系统(OS)和在OS上运行的一个或多个软件应用)。硬件组件还可响应于指令或软件的执行来访问、操控、处理、创建和存储数据。为了简单,单数术语“处理器”或“计算机”可用于在本申请中描述的示例的描述中,但是在其他示例中,多个处理器或计算机可被使用,或者处理器或计算机可包括多个处理元件、或多种类型的处理元件、或两者。例如,单个硬件组件、或者两个或更多个硬件组件可由单个处理器、或者两个或更多个处理器、或者处理器和控制器来实现。一个或多个硬件组件可由一个或多个处理器、或者处理器和控制器来实现,并且一个或多个其他硬件组件可由一个或多个其他处理器、或者另一处理器和另一控制器来实现。一个或多个处理器、或者处理器和控制器可实现单个硬件组件、或者两个或更多个硬件组件。硬件组件可具有不同的处理配置中的任何一个或多个,不同的处理配置的示例包括:单个处理器、独立处理器、并行处理器、单指令单数据(SISD)多处理、单指令多数据(SIMD)多处理、多指令单数据(MISD)多处理和多指令多数据(MIMD)多处理。
执行在本申请中描述的操作的图1至图10中示出的方法由计算硬件(例如,由一个或多个处理器或计算机)来执行,计算硬件被实现为如上所述执行指令或软件以执行在本申请中描述的由所述方法执行的操作。例如,单个操作、或者两个或更多个操作可由单个处理器、或者两个或更多个处理器、或者处理器和控制器来执行。一个或多个操作可由一个或多个处理器、或者处理器和控制器来执行,并且一个或多个其他操作可由一个或多个其他处理器、或者另一处理器和另一控制器来执行。一个或多个处理器、或者处理器和控制器可执行单个操作、或者两个或更多个操作。
用于控制计算硬件(例如,一个或多个处理器或计算机)以实现硬件组件并执行如上所述的方法的指令或软件可被编写为计算机程序、代码段、指令或它们的任何组合,以单独地或共同地指示或配置一个或多个处理器或计算机作为机器或专用计算机进行操作,以执行由如上所述的硬件组件和方法执行的操作。在一个示例中,指令或软件包括由一个或多个处理器或计算机直接执行的机器代码(诸如,由编译器产生的机器代码)。在另一示例中,指令或软件包括由一个或多个处理器或计算机使用解释器执行的高级代码。可基于附图中示出的框图和流程图以及在此的相应描述使用任何编程语言来编写指令或软件,附图中示出的框图和流程图以及在此的相应描述公开了用于执行由如上所述的硬件组件和方法执行的操作的算法。
用于控制计算硬件(例如,一个或多个处理器或计算机)以实现硬件组件并执行如上所述的方法的指令或软件以及任何相关联的数据、数据文件和数据结构可被记录、存储或固定在一个或多个非暂时性计算机可读存储介质中,或者被记录、存储或固定在一个或多个非暂时性计算机可读存储介质上。非暂时性计算机可读存储介质的示例包括:只读存储器(ROM)、随机存取可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、非易失性存储器、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、蓝光或光盘存储装置、硬盘驱动器(HDD)、固态驱动器(SSD)、卡式存储器(诸如,多媒体卡或微型卡(例如,安全数字(SD)或极限数字(XD)))、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及任何其他装置,任何其他装置被配置为以非暂时性方式存储指令或软件以及任何相关联的数据、数据文件和数据结构并将指令或软件以及任何相关联的数据、数据文件和数据结构提供给一个或多个处理器或计算机,使得一个或多个处理器或计算机能够执行指令。在一个示例中,指令或软件以及任何相关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得指令和软件以及任何相关联的数据、数据文件和数据结构由一个或多个处理器或计算机以分布式方式存储、访问和执行。
虽然本公开包括具体示例,但是在理解本申请的公开之后将清楚的是,在不脱离权利要求及其等同物的精神和范围的情况下,可在这些示例中进行形式和细节上的各种改变。在此描述的示例仅被认为是描述性的,而不是出于限制的目的。每个示例中的特征或方面的描述被认为适用于其他示例中的类似特征或方面。如果描述的技术以不同的次序执行,和/或如果描述的系统、架构、装置或电路中的组件以不同的方式组合、和/或由其他组件或其等同物替代或补充,则可实现合适的结果。
因此,除了以上公开之外,公开的范围还可由权利要求及其等同物限定,并且在权利要求及其等同物的范围内的所有变化应当被解释为包括在公开中。
Claims (20)
1.一种计算设备,包括:
处理电路,被配置为:
检测多个权重值中的权重值内的与权重值的范围相关的权重深度字段,并且检测多个激活值中的激活值内的与激活值的范围相关的激活深度字段;
识别权重值中的第一操作数,并且识别激活值中的第二操作数;以及
通过基于识别的第一操作数和第二操作数执行运算,生成具有基于权重深度字段和激活深度字段确定的结果深度字段的输出值。
2.根据权利要求1所述的计算设备,还包括:
第一缓冲器,被配置为存储权重值;以及
第二缓冲器,被配置为存储激活值,
其中,处理电路包括:
第一深度字段检测器,被配置为:在朝向权重值的最低有效位LSB的方向上,检测权重值的在权重值的最高有效位MSB之后的位之中的第一个具有第一值的第一目标位;并且将从权重值的第二MSB到第一目标位的位确定为权重深度字段;以及
第二深度字段检测器,被配置为:在朝向激活值的最低有效位LSB的方向上,检测激活值的在激活值的最高有效位MSB之后的位之中的第一个具有第一值的第二目标位;并且将从激活值的第二MSB到第二目标位的位确定为激活深度字段。
3.根据权利要求1所述的计算设备,其中,
处理电路包括:
第一深度字段检测器,被配置为:在朝向权重值的最低有效位LSB的方向上,检测权重值的在权重值的最高有效位MSB和第二MSB之后的位之中的第一个具有第一值的第一目标位;并且将从权重值的第二MSB到第一目标位的位确定为权重深度字段;以及
第二深度字段检测器,被配置为:在朝向激活值的最低有效位LSB的方向上,检测激活值的在激活值的最高有效位MSB和第二MSB之后的位之中的第一个具有第一值的第二目标位;并且将从激活值的第二MSB到第二目标位的位确定为激活深度字段。
4.根据权利要求3所述的计算设备,其中,处理电路包括:
第一位检查电路,被配置为确定在朝向权重值的LSB的方向上权重值的第一目标位的下一位是否具有第一值;以及
第一掩蔽电路,被配置为:
当所述下一位具有第一值时,将第一目标位的值从第一值改变为第二值,并且将第一操作数识别为包括具有第二值的第一目标位、所述下一位和所述下一位之后的位;以及
当所述下一位具有第二值时,将所述下一位的值从第二值改变为第一值,将第一目标位的值从第一值改变为第二值,并且将第一操作数识别为包括具有第二值的第一目标位、具有第一值的所述下一位和所述下一位之后的位。
5.根据权利要求3所述的计算设备,其中,处理电路包括:
第二位检查电路,被配置为确定在朝向激活值的LSB的方向上激活值的第二目标位的下一位是否具有第一值;以及
第二掩蔽电路,被配置为:
当所述下一位具有第一值时,将第二目标位的值从第一值改变为第二值,并且识别包括具有第二值的第二目标位、所述下一位和所述下一位之后的位的第二操作数;以及
当所述下一位具有第二值时,将所述下一位的值从第二值改变为第一值,将第二目标位的值从第一值改变为第二值,并且识别包括具有第二值的第二目标位、具有第一值的所述下一位和所述下一位之后的位的第二操作数。
6.根据权利要求1所述的计算设备,其中,处理电路还被配置为:生成与检测到的权重深度字段和激活深度字段对应的相应转换值,对生成的相应转换值求和,并且使用求和的结果来确定输出数据的结果深度字段。
7.根据权利要求1所述的计算设备,其中,处理电路包括:
移位电路,被配置为:
当权重值的尾数字段中的前导位和激活值的尾数字段中的前导位中的每个具有第二值时,对运算结果执行2位移位;
当权重值的尾数字段中的前导位和激活值的尾数字段中的前导位中的一个具有第二值且另一个具有第一值时,对运算结果执行1位移位;以及
当权重值的尾数字段中的前导位和激活值的尾数字段中的前导位中的每个具有第一值时,跳过对运算结果的移位。
8.根据权利要求1所述的计算设备,其中,处理电路包括:
编码器,被配置为从运算结果提取一部分位,并且使用提取的所述一部分位、结果深度字段、权重值的符号位和激活值的符号位来生成输出数据。
9.根据权利要求1至8中的任一项所述的计算设备,其中,权重值和激活值各自具有第一数字格式,并且
其中,所述计算设备还包括数字格式转换器,数字格式转换器被配置为:将不同于第一数字格式的数字格式的原始权重值和不同于第一数字格式的数字格式的原始激活值分别转换为第一数字格式的权重值和第一数字格式的激活值,或者将另外的数字格式的原始权重值和原始激活值分别转换为第一数字格式的权重值和第一数字格式的激活值。
10.根据权利要求9所述的计算设备,其中,数字格式转换器还被配置为:
基于原始权重值的指数值和预设因子来检测权重值的权重深度字段,确定与通过原始权重值的指数值和预设因子之间的除法运算得到的第一余数对应的位,并且通过与第一余数对应的位和原始权重值的尾数位的一部分位来确定权重值的尾数字段;以及
基于原始激活值的指数值和预设因子来检测激活值的激活深度字段,确定与通过原始激活值的指数值和预设因子之间的除法运算得到的第二余数对应的位,并且通过与第二余数对应的位和原始激活值的尾数位的一部分位来确定激活值的尾数字段。
11.一种计算设备,包括:
处理电路,被配置为:
检测多个权重值中的权重值内的与权重值的范围相关的权重深度字段;
识别权重值中的操作数;
基于识别的操作数和多个激活值中的激活值的尾数来执行运算;
基于检测到的权重深度字段、权重值的底数值、激活值的指数和用于对运算结果进行移位的移位值来生成输出数据的指数;以及
基于生成的指数和运算结果来生成输出数据。
12.根据权利要求11所述的计算设备,其中,
处理电路包括深度字段检测器,被配置为:在朝向权重值的最低有效位LSB的方向上,检测权重值的在权重值的最高有效位MSB和第二MSB之后的位之中的第一个具有第一值的目标位,并且将从第二MSB到目标位的位确定为权重深度字段。
13.根据权利要求12所述的计算设备,其中,深度字段检测器还被配置为在第二MSB第一个具有第一值时将第二MSB确定为权重深度字段。
14.根据权利要求12所述的计算设备,其中,处理电路包括:
位检查电路,被配置为确定在朝向权重值的LSB的方向上权重值的目标位的下一位是否具有第一值;以及
掩蔽电路,被配置为:
当所述下一位具有第一值时,将目标位的值从第一值改变为第二值,并且将操作数识别为包括具有第二值的目标位、所述下一位和所述下一位之后的位;以及
当所述下一位具有第二值时,将所述下一位的值从第二值改变为第一值,将目标位的值从第一值改变为第二值,并且将操作数识别为包括具有第二值的目标位、具有第一值的所述下一位和所述下一位之后的位。
15.根据权利要求11所述的计算设备,其中,处理电路还被配置为:生成与检测到的权重深度字段对应的转换值,并且使用生成的转换值、k、根据权重值的尾数字段的前导位生成的值、所述移位值和激活值的指数来生成输出数据的指数,所述k是当底数值被表示为2的幂时的指数。
16.根据权利要求15所述的计算设备,其中,处理电路还被配置为:将激活值的指数的符号应用于生成的转换值与所述k之间的相乘结果,并且通过对符号被应用的相乘结果、激活值的指数、根据前导位生成的值和所述移位值求和来生成输出数据的指数。
17.根据权利要求16所述的计算设备,其中,当前导位具有第二值时,根据前导位生成的值对应于“-1”,并且当前导位具有第一值时,根据前导位生成的值对应于“0”。
18.根据权利要求11至17中的任一项所述的计算设备,其中,处理电路还被配置为:从运算结果提取一部分位,并且使用提取的所述一部分位和生成的指数来生成输出数据。
19.一种计算设备的操作方法,包括:
检测多个权重值中的权重值内的与权重值的范围相关的权重深度字段,检测多个激活值中的激活值内的与激活值的范围相关的激活深度字段;
识别权重值中的第一操作数,并且识别激活值中的第二操作数;以及
通过基于识别的第一操作数和第二操作数执行运算,生成具有基于权重深度字段和激活深度字段确定的结果深度字段的输出值。
20.根据权利要求19所述的操作方法,
其中,检测权重深度字段的步骤包括:检测从权重值的第二最高有效位MSB到第一个具有第一值的位的位,作为权重值的权重深度字段,并且
其中,检测激活深度字段的步骤包括:检测从激活值的第二MSB到第一个具有第一值的位的位,作为激活值的激活深度字段。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020220168833A KR20240084631A (ko) | 2022-12-06 | 2022-12-06 | 컴퓨팅 장치 및 이의 동작 방법 |
KR10-2022-0168833 | 2022-12-06 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118153646A true CN118153646A (zh) | 2024-06-07 |
Family
ID=89076282
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311477991.8A Pending CN118153646A (zh) | 2022-12-06 | 2023-11-08 | 计算设备及其操作方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20240184533A1 (zh) |
EP (1) | EP4383062A1 (zh) |
KR (1) | KR20240084631A (zh) |
CN (1) | CN118153646A (zh) |
-
2022
- 2022-12-06 KR KR1020220168833A patent/KR20240084631A/ko unknown
-
2023
- 2023-05-31 US US18/326,563 patent/US20240184533A1/en active Pending
- 2023-11-08 CN CN202311477991.8A patent/CN118153646A/zh active Pending
- 2023-12-04 EP EP23213890.9A patent/EP4383062A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20240184533A1 (en) | 2024-06-06 |
EP4383062A1 (en) | 2024-06-12 |
KR20240084631A (ko) | 2024-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
GB2568083A (en) | Histogram-based per-layer data format selection for hardware implementation of deep neutral network | |
JP2021525403A (ja) | 改良された低精度の2進浮動小数点形式設定 | |
EP3528181B1 (en) | Processing method of neural network and apparatus using the processing method | |
US9870200B2 (en) | Decimal and binary floating point rounding | |
CN113126953A (zh) | 针对浮点处理的方法和装置 | |
US20210295134A1 (en) | Artificial neural network activation function | |
EP3809285B1 (en) | Method and apparatus with data processing | |
CN112241291A (zh) | 用于指数函数实施的浮点单元 | |
TW201702863A (zh) | 用於在執行浮點運算時控制捨入的裝置及方法 | |
CN107402905B (zh) | 基于神经网络的计算方法及装置 | |
US9317250B2 (en) | Floating point multiply-add unit with denormal number support | |
US9430190B2 (en) | Fused multiply add pipeline | |
CN113407747A (zh) | 硬件加速器执行的方法、硬件加速器和神经网络装置 | |
CN106997284B (zh) | 实现浮点运算操作的方法和装置 | |
Christ et al. | Low-precision logarithmic arithmetic for neural network accelerators | |
CN118153646A (zh) | 计算设备及其操作方法 | |
Tsen et al. | A combined decimal and binary floating-point multiplier | |
US11568220B2 (en) | Deep neural network implementation | |
US10564930B2 (en) | Computing device performance of low precision arithmetic functions with arrays of pre-calculated values | |
US11144280B2 (en) | Method and apparatus for processing data | |
US20240201948A1 (en) | Combined sparse and block floating arithmetic | |
EP3985571A1 (en) | Methods and systems for selecting number formats for deep neural networks based on network sensitivity and quantisation error | |
US20220283778A1 (en) | Method and device for encoding | |
US20230100785A1 (en) | Priority encoder-based techniques for computing the minimum or the maximum of multiple values | |
US20240143985A1 (en) | Identifying one or more quantisation parameters for quantising values to be processed by a neural network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |