CN109863476A - 动态变量精度计算 - Google Patents
动态变量精度计算 Download PDFInfo
- Publication number
- CN109863476A CN109863476A CN201780065085.3A CN201780065085A CN109863476A CN 109863476 A CN109863476 A CN 109863476A CN 201780065085 A CN201780065085 A CN 201780065085A CN 109863476 A CN109863476 A CN 109863476A
- Authority
- CN
- China
- Prior art keywords
- operand
- rns
- binary number
- arithmetical operation
- arithmetic logic
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- 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/4824—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 using signed-digit representation
-
- 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
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/729—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic using representation by a residue number system
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Nonlinear Science (AREA)
- Power Sources (AREA)
- Detection And Correction Of Errors (AREA)
- Executing Machine-Instructions (AREA)
- Microcomputers (AREA)
Abstract
转换单元[115]将运算数[110]从将所述运算数中的每个二进制数表示为一位的常规数制转换为将每个二进制数表示为多位的冗余数制(RNS)运算数[210,215]。算术逻辑单元[205]对所述RNS运算数以从最高有效位(MSB)到最低有效位(LSB)的方向执行算术运算。所述算术逻辑单元在对与所述RNS运算数相关联的动态精度所指示的目标二进制数执行所述算术运算之前停止执行所述算术运算。在一些情况下,功率源[330]提供功率到所述算术逻辑单元中的位片[311,312,313,314,315],并且时钟信号发生器[335]提供时钟信号到所述位片。
Description
关于联邦政府赞助的声明研究或开发
本发明是在政府的支持下根据能源部授予的FastForward-2 Node Architecture(NA)Project with Lawrence Livermore National Laboratory(基本合同号DE-AC52-07NA27344、分包合同号B609201进行的。政府对本发明享有某些权利。
背景技术
膝上型计算机、平板计算机、智能电话和其他计算设备依赖于内部蓄电池等有限的功率源。尽管蓄电池通常为可再充电的,充电之间的操作时间间隔可通过使用蓄电池的存储功率来有效地延长。由于功率、冷却和热管理的成本,服务器等壁式供电计算机、云计算资源和嵌入式计算机日益受到功率的限制。在计算设备中实现的算术逻辑单元对由不同数目个位表示的运算数执行算术运算,以达成包括双精度浮点(64位)、单精度浮点(32位)和半精度浮点(16位)的不同精度。当算术逻辑单元以较高精度运算时,算术逻辑单元中的功率耗散较高,而当算术逻辑单元以较低精度运算时所述功率耗散较低。
附图说明
通过参考附图,可更好地理解本公开,并且它的许多特征和优点对本领域技术人员来说变得显而易见。在不同图式中使用的相同附图标号指示类似或完全相同的项目。
图1是根据一些实施方案的计算设备的框图
图2是根据一些实施方案的计算设备的框图,所述计算设备包括被配置以使用最高有效位优先(MSB优先)算术法对冗余数制(RNS)运算数执行算术运算的算术逻辑单元。
图3是根据一些实施方案的计算设备的框图,所述计算设备实现基于动态精度而选择性地启用的算术逻辑单元。
图4是根据一些实施方案的计算设备的框图,所述计算设备传播与RNS运算数相关联的误差。
图5是根据一些实施方案的对RNS运算数执行动态变量精度算术运算的方法的流程图。
具体实施方式
数字计算在很多情况下由于不必要地执行精度计算而消耗功率,尽管很多应用程序包括中性网络并且信号处理应用程序可承受一些精度损耗。因此,计算设备中蓄电池的操作时间间隔可通过以较低精度执行一些算术运算来延长。例如,程序员可指定一些运算以半精度执行而不是双精度。然而,算术运算的精度通常在编译代码以供计算设备执行时确定。已编译代码中算术运算的精度在所述代码执行时无法修改。
计算设备中蓄电池等功率源的操作时间间隔可通过动态地修改计算设备所执行的算术运算的精度来延长。为了支持算术精度的动态修改,将运算数从将每个二进制数表示为一位的常规数制转换为将每个二进制数表示为多位的冗余数制(RNS),从而允许以从最高有效位(MSB)到最低有效位(LSB)的方向执行计算。RNS运算数中的每个与动态精度相关联,所述动态精度由对应于对RNS运算数执行的运算的目标准确度的位的数目表示。在一些实施方案中,动态精度是基于数据类型(例如,表示包括视频、RGB颜色、场景深度、或顶点位置数据的图形对象或原型的数据类型),或表示数据值(例如,指示数据值聚集在诸如1或0的值周围、数据值在特定范围内,或数据值具有高于或低于阈值的平均值或中值的统计测量值)的统计值而确定。动态精度也可在运行时改变,例如,响应于蓄电池电平的变化、目标准确度的变化,等等。在一些实施方案中,每个RNS运算数的动态精度都不同。每个RNS运算数的动态精度以包括动态精度和RNS运算数的值的数据结构指示。
以从最高有效位(MSB)到最低有效位(LSB)的方向对RNS运算数中的二进制数执行算术运算,达RNS运算数的动态精度所指示的二进制数的数目。这称之为“MSB优先”算术法,与以从LSB到MSB的进行方向对位执行运算的常规“LSB优先”算术法相反。执行MSB优先算术法的算术逻辑单元包括独立的硬件部件(本文中称之为位片),以便对RNS运算数中的每个二进制数执行算术运算。提供启用信号以接通对应于动态精度所指示的部分RNS运算数的位片。接着,针对对相比动态精度所指示的部分RNS运算数较低有效性的二进制数执行的位片选通功率或时钟信号。对RNS运算数执行算术运算防止位片之间一位以上的涟波,例如,位片从较低有效位片接收的进位输入位并不确定所述位片提供到更有效位片的进位输出位的值。在一些实施方案中,基于执行转换所需要的开销与动态精度修改所产生的预期功率节省的比较,选择性地执行从常规二进制数到RNS运算数的转换和对RNS运算数执行的算术运算的动态精度修改。
图是1根据一些实施方案的计算设备100的框图。计算设备100包括硬件部件105的集合,所述硬件部件105被配置以将常规二进制数转换为RNS运算数,并且使用MSB优先算术法对RNS运算数执行算术运算。可由硬件部件105执行的算术运算的实例包括加法、减法、乘法和除法。此外,包括超越函数的更复杂函数可基于加法、减法、乘法和除法函数而实现。因此,硬件部件105能够使用MSB优先算术法来执行更复杂函数。使用处理单元来实现硬件部件105的一些实施方案,诸如在衬底或管芯上制造的中央处理单元(CPU)、图形处理单元(GPU),或加速处理单元(APU)。硬件部件105可实现为专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP),或晶体管、电容器、电阻器、迹线、导线等硬件部件的其他组合。
硬件部件105被配置以接收根据常规数制(CNS)格式化的一个或多个运算数110。通过使用二进制数序列,诸如,1,2,4,8……,运算数110的一些实施方案以二进制格式表示。运算数110中的每个二进制数表示为单个位,并且位的值指示运算数的值。例如,值为1的运算数110可表示为CNS中的0001。
转换单元115在硬件部件105中实现,并且被配置以将常规运算数转换为每个二进制数由多个位表示的RNS运算数。例如,运算数110的冗余二进制表示可将每个二进制数表示为两位,并且可使用表1等转换表来确定二进制数的值。通过使用二进制数的不同值,值为1的运算数可表示为RNS运算数,包括01-01-01-11(0+0+0+1=1)、01-01-10-11(0+0+0+1=1)、01-01-11-00(0+0+2-1=1),或11-00-00-00(8-4-2-1=1)。转换单元115的其他实施方案可使用不同的冗余数制将常规运算数转换为RNS运算数。
表1
二进制数 | 值 |
00 | -1 |
01 | 0 |
10 | 0 |
11 | 1 |
从常规运算数到RNS运算数的转换允许以从最高有效位(MSB)到最低有效位(LSB)的方向对RNS运算数执行计算。对RNS运算数执行算术运算还可更快速。然而,转换单元115将运算数110转换为RNS运算数引发开销,诸如,执行转换所需要的附加处理时间和功率。因此,转换单元115的一些实施方案基于对RNS运算数执行算术运算的引发开销与有益效果的结果而选择性地执行运算数110的转换。例如,执行转换所需要的资源可与加速算术运算所节省的资源相比较。再例如,执行转换所需要的资源可与仅对RNS运算数中的一组最高有效二进制数执行算术运算并且绕过对RNS运算数中的一组互补的最低有效二进制数执行算术运算所节省的资源相比较。在一些实施方案中,可配置延迟线路等完成检测电路包括在硬件部件105中,并且用于检测在对RNS运算数中的所有二进制数运算之前停止或终止的算术运算的完成,如本文所论述。
硬件部件105能够对转换单元115所生成的RNS运算数执行算术运算120、125、130的集合。算术运算120、125、130可依序执行,例如,算术运算120的结果成为算术运算125的输入。算术运算120、125、130还可表示对RNS运算数的不同、重叠或部分重叠的集合执行的运算。在一些实施方案中,算术运算120、125、130由算术逻辑单元(图1中未展示)执行,所述算术逻辑单元在硬件部件105中实现。算术运算120、125、130还可由不同的算术逻辑单元或被配置以执行MSB优先算术法的其他硬件执行。
使用MSB优先算术法对RNS运算数执行算术运算120、125、130,如由左侧指向箭头135所指示(为了清楚起见,仅用附图标号指示一个)。因此,算术运算120、125、130中的每个以对RNS运算数中表示最高有效二进制数的位执行算术运算开始。接着,算术运算120、125、130对表示下一最高有效二进制数的位执行算术运算。因此,算术运算的每次迭代单调地提高算术运算的结果的准确度。在RNS算术运算中,算术运算120、125、130可继续对最低有效二进制数执行算术运算,直到已对RNS运算数中的所有二进制数执行算术运算为止。
然而,如本文所论述,并非所有应用程序要求算术运算120、125、130所提供的最高水平的准确度。因此,对RNS运算数中的所有二进制数执行算术运算可能不必要地消耗功率,所述功率对硬件部件105来说可能是有限资源。因此,硬件部件105被配置以在对动态精度所指示的目标二进制数执行算术运算之前停止、终止或中断算术运算120、125、130。目标二进制数表示阈值有效性,由此使得不对有效性低于阈值有效性的二进制数执行算术运算。中断算术运算120、125、130降低算术运算120、125、130的结果的准确度,但也降低硬件部件105的功率消耗。
与RNS运算数或算术运算相关联的动态精度可在运行时修改,并且针对不同的RNS运算数或算术运算120、125、130可不同。例如,线路140、145、150表示对应的算术运算120、125、130的目标二进制数。因此,算术运算125达到最高准确度(并且消耗在对RNS运算数中所有二进制数执行运算125的情况下原本将消耗的总功率的最大分率),算术运算120达到下一最高准确度(并且消耗在对RNS运算数中所有二进制数执行运算120的情况下原本将消耗的总功率的下一最大分率),并且算术运算130达到最低准确度(但消耗在对RNS运算数中所有二进制数执行运算130的情况下原本将消耗的总功率的最小分率)。
硬件部件105还包括转换单元155,以用于将RNS运算数转换为根据常规数制(CNS)表示的运算数160。例如,算术运算120、125、130中的一些或全部可提供呈RNS格式的结果到转换单元155,所述转换单元155将RNS结果转换为运算数160。在一些实施方案中,转换单元115部分地基于将RNS结果转换回CNS运算数160所要求的开销而选择性地将运算数110转换为RNS运算数。
图2是根据一些实施方案的包括算术逻辑单元(ALU)205的计算设备200的框图,所述算术逻辑单元(ALU)205被配置以使用MSB优先算术法对RNS运算数210、215执行算术运算。算术逻辑单元205在图1中所展示的硬件部件105的一些实施方案中实现。因此,算术逻辑单元205可用以对RNS运算数210、215执行一个或多个算术运算,包括加法、减法、乘法或除法。此外,算术逻辑单元205的一些实施方案被配置以使用MSB优先算术法对RNS运算数210、215执行包括超越函数的复杂函数。尽管图2中所展示的算术逻辑单元205接收两个RNS运算数210、215,算术逻辑单元205的一些实施方案可接收两个以上RNS运算数并且加以运算。
RNS运算数210、215与相应的动态精度220、225相关联。在所示出的实施方案中,RNS运算数210、215的值和相应的动态精度220、225以对应的数据结构230、235提供到算术逻辑单元205。例如,数据结构230、235可为明确定义的指令字,诸如很长指令字的变型,所述指令字被配置以保持RNS运算数210、215和相应的动态精度220、225的值。然而,在一些实施方案中,以不同的数据结构提供RNS运算数210、215和相应的动态精度220、225到算术逻辑单元205。此外,在一些实施方案中,并不直接提供动态精度220、225到算术逻辑单元205或控制单元245。而是提供指示动态精度220、225的暗示到算术逻辑单元205。暗示可经定义以包括少于动态精度220、225的信息,并且在计算设备200的低功率模式等操作模式下,可替代全部动态精度220、225而选择性地使用暗示。暗示可由应用程序使用应用程序与用以实现算术逻辑单元205和控制单元245的硬件之间的接口来提供。
控制单元245存取动态精度220、225的值,并且在一些情况下,存取RNS运算数210、215的值。接着,控制单元245提供控制信令到算术逻辑单元205,所述控制信令响应于动态精度220、225的值,并且在一些情况下响应于RNS运算数210、215的值而生成。控制信令指令算术逻辑单元205使用MSB优先算术法对RNS运算数210、215的值所表示的二进制数执行算术运算,例如,通过以从最高有效位(MSB)到最低有效位(LSB)的方向执行算术运算。
控制单元245还提供控制信令,所述控制信令指令算术逻辑单元205在对与RNS运算数210、215相关联的动态精度220、225所指示的目标二进制数执行算术运算之前停止执行算术运算。例如,如果以单精度浮点格式(例如,由常规二进制数制中的32位表示并且由RNS中的多位表示的32个二进制数)提供RNS运算数210、215到算术逻辑单元205,并且动态精度220、225指示30个最高有效二进制数提供足够精度,那么控制单元245指令算术逻辑单元在以从最高有效到最低有效的次序对第31个二进制数执行算术运算之前停止执行算术运算。在一些实施方案中,控制单元245基于计算设备200的功率消耗状态而选择性地指令算术逻辑单元205在目标二进制数处停止执行算术运算。例如,控制单元245可被配置以响应于计算设备200处于不要求节省功率的功率消耗模式而绕过指令算术逻辑单元205停止执行算术运算。再例如,控制单元245可被配置以响应于计算设备处于要求节省功率的功率消耗模式(诸如,由蓄电池电平降到阈值以下而触发的模式)而指令算术逻辑单元205停止执行算术运算。
在一些实施方案中,计算设备200包括可配置延迟线路247,所述可配置延迟线路247被动态地配置以测量算术逻辑单元205基于动态精度220、225执行的算术运算的执行时间。例如,控制单元245可响应于算术逻辑单元205对RNS运算数210、215启动算术运算而发射脉冲(或边缘)到可配置延迟线路247。接着,控制单元245响应于脉冲(或边缘)出现在可配置延迟线路247的输出上而确定算术运算已完成。控制单元245基于动态精度220、225而配置可配置延迟线路247,由此使得脉冲(或边缘)传播通过可配置延迟线路247并且返回到控制单元245所要求的时间间隔等于算术逻辑单元205对RNS运算数210、215执行算术运算以达动态精度220、225所指示的精度所要求的时间间隔。
控制单元245的一些实施方案基于RNS运算数210、215中存储的数据的特性而确定动态精度220、225的值。例如,动态精度220、225可基于数据类型而确定,由此使得针对表示包括视频、RGB颜色、场景深度、或顶点位置数据的图形对象或图元的数据类型,使用不同水平的精度。再例如,动态精度220、225可基于表示RNS运算数210、215以及算术逻辑单元205先前所接收的其他RNS运算数中二进制数的性质的统计值而确定。统计值可包括指示二进制数聚集在诸如1或0的值周围、二进制数具有在特定范围内的平均值或中值,二进制数具有高于或低于阈值的平均值或中值的统计测量值。
控制单元245的一些实施方案在运行时确定或修改动态精度220、225。例如,控制单元245可响应于蓄电池电平的变化、目标准确度的变化,等等而修改动态精度220、225中的一个或多个。提高动态精度220、225通常导致功率消耗增大,因此是响应于蓄电池电平的增大而执行。降低动态精度220、225通常导致功率消耗减小,因此是响应于蓄电池电平的减小而执行,例如,低于指示低蓄电池电平的阈值。在一些实施方案中,RNS运算数210、215的动态精度220、225不同。
算术逻辑单元205还可被配置以响应于对RNS运算数210、215执行算术运算而确定或修改精度。算术逻辑单元205的一些实施方案针对对RNS运算数210、215执行的算术运算的RNS结果255生成动态精度250。例如,算术逻辑单元205可将动态精度250设为动态精度220、225中的较低精度。接着,从算术逻辑单元205输出例如呈数据结构260形式的动态精度250和RNS结果255。
图3是根据一些实施方案的计算设备300的框图,所述计算设备300实现基于动态精度310而选择性地启用的算术逻辑单元305。算术逻辑单元305包括对RNS运算数的不同二进制数执行的多个位片311、312、313、314、315(在本文中整体称之为“位片311-315”)。图3中所展示的位片311-315以位在相关联二进制数中从最高有效位(左侧)到最低有效位(右侧)的有效性次序布置。动态精度310使用温度计码编码精度,所述温度计码将多个最高有效位设置为表示精度的值(诸如“1”),并且将剩余的较低有效位设置为互补值(诸如“0”)。
位片311-315中的每个包括硬件部件(S),所述硬件部件(S)被配置以对算术逻辑单元305所接收的RNS运算数的对应二进制数执行算术运算(诸如,求和)。位片311-315中的每个还包括硬件部件(C),所述硬件部件(C)被配置以生成提供到下一最高有效位片的进位位。进位位在从位片提供时被称为进位输出位,而在由位片接收时被称为进位输入位。硬件部件(S)利用进位输入位的值来执行算术运算。然而,位片311-315被配置以防止位片311-315之间一位以上的涟波,例如,位片从较低有效位片接收的进位输入位并不确定由硬件部件(C)生成并且由所述位片提供到较高有效位片的进位输出位的值。
位片311-315经选择性地启用以基于动态精度310而执行算术运算,所述动态精度310由一系列位的值表示。启用信号321、322、323、324、325(在本文中整体称之为“启用信号321-325”)是基于动态精度310中的位的值而生成,并且提供到对应位片311-315。在所示出的实施方案中,动态精度310的位中的值“1”指示对应位片经启用以执行算术运算,并且位中的值“0”指示对应位片经停用,因此并不用以对对应的二进制数执行算术运算。例如,启用信号321-323被提供到对应位片311-313以启用位片311-313,以便对RNS运算数的二进制数执行算术运算。启用信号324、325并未提供到对应位片314、315,因此位片314、315并不对对应二进制数执行算术运算。在一些实施方案中,停用的最高有效位片(例如,图3中所展示的位片314)的硬件部件(C)生成进位输出位以支持舍入运算,即使停用位片的硬件部件(S)并不对二进制数执行算术运算。选择性地启用或停用位片311-315通过降低停用位片所消耗的功率量来降低计算设备300的功率消耗。
计算设备300包括用以提供功率到算术逻辑单元305的功率源330和用以提供时钟信号到算术逻辑单元305的时钟信号发生器335。通过使用晶体管、开关、路由器等等,选通逻辑340在计算设备300中实现,并且在图2中所展示的控制单元245等控制单元的控制下操作。基于动态精度310,选通逻辑340选择性地选通由功率源330供应到位片311-315的功率,或由时钟信号发生器335供应的时钟信号。例如,选通逻辑340提供功率和时钟信号到启用位片311-313,并且选通停用位片314、315的功率或时钟信号,由此使得停用位片314、315并不接收分别来自功率源330或时钟信号发生器335的功率或时钟信号。基于动态精度310选择性地选通提供到位片311-315的功率或时钟信号通过进一步降低停用位片所消耗的功率量来进一步降低计算设备300的功率消耗。
图4是根据一些实施方案的传播与RNS运算数相关联的误差的计算设备400的框图。计算设备400在图1中所展示的计算设备100或图2中所展示的计算设备200的一些实施方案中实现。计算设备400包括多个算术逻辑单元401、402、403,所述多个算术逻辑单元401、402、403在本文中整体称之为“算术逻辑单元401-403”。图4中所展示的算术逻辑单元401-403可表示计算设备400的三个不同的硬件部件,或者可表示计算设备400的用以执行三个独立的算术运算的单个硬件部件。此外,算术逻辑单元401-403的数目或用以在计算设备400中实现算术逻辑单元401-403(或其他算术逻辑单元)的硬件部件的数目可多于或少于图4中所展示的数目。
算术逻辑单元401-403接收输入的RNS运算数和指示与RNS运算数相关联的累积误差的信息。例如,算术逻辑单元401接收输入的RNS运算数405、406和对应的累积误差410、411,并且算术逻辑单元402接收输入的RNS运算数415、416和对应的累积误差420、421。在一些实施方案中,使用累积误差410、411、420、421来建立算术逻辑单元401、402所执行的算术运算的动态精度。算术逻辑单元401、402(或对应的控制器425)可配置算术逻辑单元401、402对输入的RNS运算数405、406、415、416执行算术运算所使用的动态精度,由此使得算术运算的动态精度不比相关联的累积误差410、411、420、421的必要精度更精确。例如,如果输入的RNS运算数405、406、415、416的累积误差410、411、420、421小于或等于输入的RNS运算数405、406、415、416中的四个最低有效二进制数所指示的值,将输入的RNS运算数405、406、415、416的动态精度设为对应于相比第四最低有效二进制数较高有效的二进制数。
算术逻辑单元401-403生成输出的RNS运算数430、435、440,和对应的累积误差431、436、441。例如,通过对输入的RNS运算数405、406、415、416执行算术运算来生成输出的RNS运算数430、435,并且使用常规的误差估计/累积技术来基于算术运算确定累积误差431、436。输出的RNS运算数430、435和对应的累积误差431、436作为输入值提供到算术逻辑单元403,所述算术逻辑单元403对RNS运算数430、435执行算术运算以生成输出的RNS运算数440。算术逻辑单元403还使用常规的误差估计/累积技术来基于输入的累积误差431、436确定累积误差441。在一些实施方案中,使用累积误差441来确定动态精度,所述动态精度用以确定输出的RNS运算数440的值。
图5是根据一些实施方案的对RNS运算数执行动态变量精度算术运算的方法500的流程图。方法500由在图1中所展示的计算设备100、图2中所展示的计算设备200、图3中所展示的计算设备300,和图4中所展示的计算设备400的一些实施方案中实现。方法500在开始框505开始。
在框510,算术逻辑单元对输入的RNS运算数中的最高有效二进制数执行算术运算。如本文所论述,算术运算的实例包括加法、减法、乘法和除法,以及包括超越函数的更复杂函数,所述超越函数可基于加法、减法、乘法和除法函数而实现。
在决策框515,算术逻辑单元确定RNS运算数中是否存在尚未用以执行算术运算的更多二进制数。如果否,那么方法500继续到框520,并且确定对输入的RNS运算数执行算术运算的结果的动态精度。接着,方法500继续到结束框525,并且因为不存在更多二进制数要运算并且算术运算已完成,方法500结束。如果算术逻辑单元确定RNS运算数中存在更多二进制数,那么方法继续到决策框530。
在决策框530,算术逻辑单元确定下一二进制数,即,相比先前运算的二进制数较低有效的二进制数,是否相比与RNS运算数相关联的动态精度所指示的阈值有效性较高有效。例如,如本文所论述,动态精度可使用温度计编码的位阵列来表示,其中每一位对应于RNS运算数中的二进制数。算术逻辑单元中对相比阈值有效性(或动态精度所指示的目标二进制数)较高有效的二进制数执行的位片经启用,而对相比阈值有效性较低有效的二进制数执行的位片经停用。
如果动态精度指示(在决策框530)下一二进制数相比阈值有效性较高有效,那么方法500继续到框535,并且算术逻辑单元对RNS运算数中的下一最高有效二进制数执行算术运算。接着,方法500继续到决策框515。如果动态精度指示(在决策框530)下一二进制数相比阈值有效性较低有效,那么方法500继续到框520,并且确定对输入的RNS运算数执行算术运算的RNS结果的动态精度。接着,方法500继续到结束框525,由此在对相比阈值有效性较低有效的二进制数执行算术运算之前停止算术运算。
在一些实施方案中,以上所描述的装置和技术在包括一个或多个集成电路(IC)设备(也称为集成电路封装或微芯片)的系统中实现,诸如以上参考图1至图5所描述的计算设备。可在这些IC设备的设计和制造中使用电子设计自动化(EDA)和计算机辅助设计(CAD)软件工具。这些设计工具通常表现为一个或多个软件程序。所述一个或多个软件程序包括可由计算机系统执行的代码,以便操纵计算机系统来操作表示一个或多个IC设备的电路的代码,从而执行过程的至少一部分来设计或调适加工系统,以便制造电路。这个代码可包括指令、数据或指令和数据的组合。表示设计工具或制造工具的软件指令通常存储在可由计算系统存取的计算机可读存储介质中。同样地,表示IC设备设计和制造的一个或多个阶段的代码可存储在同一计算机可读存储介质或不同计算机可读存储介质中,以及从同一计算机可读存储介质或不同计算机可读存储介质进行存取。
计算机可读存储介质可包括在使用期间可由计算机系统存取的任何非暂态存储介质或非暂态存储介质的组合,以便向计算机系统提供指令和/或数据。此类存储介质可包括但不限于光学介质(例如,压缩光盘(CD)、数字通用光盘(DVD)、蓝光光盘)、磁性介质(例如,软盘、磁带或磁性硬盘驱动器)、易失性存储器(例如,随机存取存储器(RAM)或高速缓存)、非易失性存储器(例如,只读存储器(ROM)或闪存)或基于微机电系统(MEMS)的存储介质。计算机可读介质可嵌入在计算系统中(例如,系统RAM或ROM)、固定地附接至计算系统(例如,磁性硬盘驱动器)、可移除地附接至计算系统(例如,光盘或基于通用串行总线(USB)的闪存)或经由有线或无线网络而连接至计算机系统(例如,网络可存取储存器(NAS))。
在一些实施方案中,以上所描述的技术的某些方面可通过执行软件的处理系统的一个或多个处理器来实施。所述软件包括存储或以其他方式有形地体现在非暂时性计算机可读存储介质上的一个或多个可执行指令集。所述软件可包括指令和某些数据,所述指令和数据在由一个或多个处理器执行时操纵所述一个或多个处理器来执行上述技术的一个或多个方面。非暂态计算机可读存储介质可包括:例如,磁盘或光盘存储设备、固态存储设备诸如闪存、高速缓存、随机存取存储器(RAM)或一种或多种其他非易失性存储器设备等。存储在非暂态计算机可读存储介质上的可执行指令可以是源代码、汇编语言代码、目标代码或可由一个或多个处理器解译或以其他方式执行的其他指令格式。
应注意,并非上文在一般说明中描述的所有活动或元件都是要求的,具体活动或设备的一部分可能是不要求的,并且一个或多个其他活动可加以执行,或者,除所描述的那些元件之外,还可包括其他元件。此外,列出活动的次序并不一定是执行它们的次序。另外,已经参考具体实施方案描述了概念。然而,本领域的普通技术人员应理解,在不背离如以下权利要求中阐述的本公开范围的情况下,可做出各种修改和改变。因此,本说明书和附图将视为说明性而非限制性的,并且所述此类修改意图包括在本公开的范围内。
以上已经参考具体实施方案描述了益处、其他优点以及问题的解决方案。然而,所述益处、优点、问题的解决方案,以及可使得任何益处、优点或解决方案出现或变得更为显著的任何特征,都不应解释为是任何或所有权利要求的关键、要求或必要特征。此外,以上所公开的特定实施方案仅为说明性的,因为所公开的主题可以受益于本文教义的本领域的技术人员显而易见的不同但等效的方式来修改和实践。除了如以下权利要求中所描述之外,并不旨在限制本文示出的构造或设计的细节。因此,明显的是,以上所公开的特定实施方案可更改或修改,并且所有此类变型被认为在所公开的主题的范围内。因此,本文所寻求的保护如以下权利要求中所阐述。
Claims (20)
1.一种装置[100],包括:
转换单元[115],所述转换单元[115]用以将运算数[110]从将所述运算数中的每个二进制数表示为一位的常规数制转换为将每个二进制数表示为多位的冗余数制(RNS)运算数[210,215];以及
算术逻辑单元[205],所述算术逻辑单元[205]用以对所述RNS运算数以从最高有效位(MSB)到最低有效位(LSB)的方向执行算术运算,并且在对与所述RNS运算数相关联的动态精度[220]所指示的目标二进制数执行所述算术运算之前停止所述算术运算。
2.如权利要求1所述的装置,其中所述算术逻辑单元还包括:
多个位片[311,312,313,314,315],每个位片被配置以对所述RNS运算数中的所述二进制数中的一个执行所述算术运算。
3.如权利要求2所述的装置,其中对较高有效二进制数运算的位片从对较低有效二进制数运算的位片接收的进位输入位并不确定对所述较高有效二进制数运算的所述位片所生成的进位输出位的值。
4.如权利要求2所述的装置,还包括:
控制单元[245],所述控制单元[245]被配置以提供启用信号以便接通所述多个位片的第一子集,其中所述第一子集对所述RNS运算数中相比所述目标二进制数较高有效的二进制数运算。
5.如权利要求4所述的装置,其中所述控制单元被配置以基于所述RNS运算数的数据类型、所述RNS运算数中的二进制数的统计表示中的至少一者,或响应于蓄电池电平的变化、或所述算术运算的结果的目标准确度的变化中的至少一者,在运行时确定所述动态精度。
6.如权利要求4所述的装置,其中所述算术逻辑单元被配置以接收与所述RNS运算数相关联的累积误差,并且其中所述控制单元被配置以基于所述累积误差而在运行时修改所述动态精度。
7.如权利要求4所述的装置,其中所述控制单元并不提供启用信号到所述多个位片的第二子集,所述第二子集对所述RNS运算数中相比所述目标二进制数同样有效或较低有效的二进制数运算。
8.如权利要求7所述的装置,还包括:
功率源[330],所述功率源[330]用以提供功率到所述多个位片;
时钟信号发生器[305],所述时钟信号发生器[305]用以提供时钟信号到所述多个位片;以及
选通逻辑[340],所述选通逻辑[340]被配置以选通提供到所述第二子集的所述功率或所述时钟信号中的至少一者。
9.如权利要求1所述的装置,其中所述转换单元被配置以基于执行所述转换所要求的开销与通过在对与所述RNS运算数相关联的所述动态精度所指示的所述目标二进制数执行所述算术运算之前停止所述算术运算而产生的预期功率节省的比较,选择性地将所述运算数从所述常规数制转换为所述RNS运算数。
10.一种方法,包括:
将运算数[110]从将所述运算数中的每个二进制数表示为一位的常规数制转换为将每个二进制数表示为多位的冗余数制(RNS)运算数[210,215];
对所述RNS运算数以从最高有效位(MSB)到最低有效位(LSB)的方向执行算术运算;以及
在对与所述RNS运算数相关联的动态精度[220]所指示的目标二进制数执行所述算术运算之前停止所述算术运算。
11.如权利要求10所述的方法,其中对所述RNS运算数执行所述算术运算包括:使用由算术逻辑单元实现的多个位片[311,312,313,314,315]对所述RNS运算数中的多个二进制数独立地执行所述算术运算,每个位片被配置以对所述RNS运算数中的所述二进制数中的一个执行所述算术运算。
12.如权利要求11所述的方法,其中使用所述多个位片执行所述算术运算还包括:
在对较高有效二进制数运算的位片处从对较低有效二进制数运算的位片接收进位输入位;以及
从对所述较高有效二进制数运算的所述位片提供进位输出位,其中所述进位输入位并不确定所述进位输出位的值。
13.如权利要求11所述的方法,还包括:
提供启用信号[321,322,323,324,325]以便接通所述多个位片的第一子集,其中所述第一子集对所述RNS运算数中相比所述目标二进制数较高有效的二进制数运算。
14.如权利要求11所述的方法,还包括:
绕过提供启用信号到所述多个位片[311,312,313,314,315]的第二子集,所述第二子集对所述RNS运算数中相比所述目标二进制数同样有效或较低有效的二进制数运算。
15.如权利要求14所述的方法,还包括:
选通提供到所述第二子集的功率或时钟信号中的至少一者。
16.如权利要求10所述的方法,还包括:
基于所述RNS运算数的数据类型、所述RNS运算数中的二进制数的统计表示中的至少一者,或响应于蓄电池电平的变化、或所述算术运算的结果的目标准确度的变化中的至少一者,在运行时确定所述动态精度。
17.如权利要求10所述的方法,还包括:
接收与所述RNS运算数相关联的累积误差;以及
基于所述累积误差而在运行时修改所述动态精度。
18.如权利要求10所述的方法,其中将所述运算数从所述常规数制转换为所述RNS运算数包括:基于执行所述转换所要求的开销与通过在对与所述RNS运算数相关联的所述动态精度所指示的所述目标二进制数执行所述算术运算之前停止所述算术运算而产生的预期功率节省的比较,将所述运算数从所述常规数制转换为所述RNS运算数。
19.一种装置,其包括:
第一转换单元[115],所述第一转换单元[115]用以将运算数[110]从将所述运算数中的每个二进制数表示为一位的常规数制转换为将每个二进制数表示为多位的冗余数制(RNS)运算数[210,215];
算术逻辑单元[205],所述算术逻辑单元[205]用以执行算术运算的序列,其中对所述RNS运算数以从最高有效位(MSB)到最低有效位(LSB)的方向执行所述算术运算中的每个,并且其中在对与所述算术运算相关联的不同动态精度所指示的不同目标二进制数执行所述算术运算之前停止所述算术运算;以及
第二转换单元[155],所述第二转换单元[155]用以将所述算术运算的序列的RNS结果转换为所述常规数制。
20.如权利要求19所述的装置,其中将所述运算数从所述常规数制转换为所述RNS运算数包括:基于执行所述转换所要求的开销与通过在对与所述RNS运算数相关联的不同动态精度所指示的不同目标二进制数执行所述算术运算之前停止所述算术运算而产生的预期功率节省的比较,将所述运算数从所述常规数制转换为所述RNS运算数。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/298,938 US10296292B2 (en) | 2016-10-20 | 2016-10-20 | Dynamic variable precision computation |
US15/298,938 | 2016-10-20 | ||
PCT/US2017/057000 WO2018075532A1 (en) | 2016-10-20 | 2017-10-17 | Dynamic variable precision computation |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109863476A true CN109863476A (zh) | 2019-06-07 |
Family
ID=61969669
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780065085.3A Pending CN109863476A (zh) | 2016-10-20 | 2017-10-17 | 动态变量精度计算 |
Country Status (6)
Country | Link |
---|---|
US (2) | US10296292B2 (zh) |
EP (1) | EP3529696A4 (zh) |
JP (1) | JP6907310B2 (zh) |
KR (1) | KR102211011B1 (zh) |
CN (1) | CN109863476A (zh) |
WO (1) | WO2018075532A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10795836B2 (en) * | 2017-04-17 | 2020-10-06 | Microsoft Technology Licensing, Llc | Data processing performance enhancement for neural networks using a virtualized data iterator |
US10726514B2 (en) | 2017-04-28 | 2020-07-28 | Intel Corporation | Compute optimizations for low precision machine learning operations |
US10643297B2 (en) * | 2017-05-05 | 2020-05-05 | Intel Corporation | Dynamic precision management for integer deep learning primitives |
DE102018110687A1 (de) | 2017-05-05 | 2018-11-08 | Intel Corporation | Dynamisches Genauigkeitsmanagement für Deep-Learning-Ganzzahlprimitive |
US11768664B2 (en) | 2019-03-15 | 2023-09-26 | Advanced Micro Devices, Inc. | Processing unit with mixed precision operations |
US11120602B2 (en) * | 2019-06-03 | 2021-09-14 | Microsoft Technology Licensing, Llc | Acceleration of shader programs by compiler precision selection |
CN112711441A (zh) * | 2019-10-25 | 2021-04-27 | 安徽寒武纪信息科技有限公司 | 用于转换数据类型的转换器、芯片、电子设备及其方法 |
US11314483B2 (en) * | 2020-01-08 | 2022-04-26 | International Business Machines Corporation | Bit-serial computation with dynamic frequency modulation for error resiliency in neural network |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050080835A1 (en) * | 1997-12-17 | 2005-04-14 | Tadahiro Ohmi, Kabushiki Kaisha Ultraclean Technology Research Institute | Semiconductor circuit for arithmetic processing and arithmetic processing method |
US20150339103A1 (en) * | 2012-05-19 | 2015-11-26 | Eric B. Olsen | Product summation apparatus for a residue number arithmetic logic unit |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3569685A (en) * | 1968-07-11 | 1971-03-09 | Fairchild Camera Instr Co | Precision controlled arithmetic processing system |
JP2930325B2 (ja) * | 1989-07-29 | 1999-08-03 | ソニー株式会社 | ディジタル信号処理回路 |
JP3153370B2 (ja) | 1993-01-14 | 2001-04-09 | 三菱電機株式会社 | 乗算装置 |
CN1252587C (zh) * | 1995-08-31 | 2006-04-19 | 英特尔公司 | 移位分组数据的方法、装置和处理数字音频信号的系统 |
US6947962B2 (en) * | 2002-01-24 | 2005-09-20 | Intel Corporation | Overflow prediction algorithm and logic for high speed arithmetic units |
US7213043B2 (en) * | 2003-01-21 | 2007-05-01 | Lsi Logic Corporation | Sparce-redundant fixed point arithmetic modules |
US7840629B2 (en) * | 2006-02-28 | 2010-11-23 | Sony Computer Entertainment Inc. | Methods and apparatus for providing a booth multiplier |
US9146706B2 (en) * | 2006-05-05 | 2015-09-29 | Qualcomm Incorporated | Controlled-precision iterative arithmetic logic unit |
JP4935619B2 (ja) * | 2007-10-23 | 2012-05-23 | ヤマハ株式会社 | デジタル信号処理装置 |
-
2016
- 2016-10-20 US US15/298,938 patent/US10296292B2/en active Active
-
2017
- 2017-10-17 JP JP2019521000A patent/JP6907310B2/ja active Active
- 2017-10-17 EP EP17862184.3A patent/EP3529696A4/en active Pending
- 2017-10-17 KR KR1020197011228A patent/KR102211011B1/ko active IP Right Grant
- 2017-10-17 CN CN201780065085.3A patent/CN109863476A/zh active Pending
- 2017-10-17 WO PCT/US2017/057000 patent/WO2018075532A1/en unknown
-
2019
- 2019-04-08 US US16/378,055 patent/US10592207B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050080835A1 (en) * | 1997-12-17 | 2005-04-14 | Tadahiro Ohmi, Kabushiki Kaisha Ultraclean Technology Research Institute | Semiconductor circuit for arithmetic processing and arithmetic processing method |
US20150339103A1 (en) * | 2012-05-19 | 2015-11-26 | Eric B. Olsen | Product summation apparatus for a residue number arithmetic logic unit |
Also Published As
Publication number | Publication date |
---|---|
JP6907310B2 (ja) | 2021-07-21 |
JP2019537787A (ja) | 2019-12-26 |
US10296292B2 (en) | 2019-05-21 |
WO2018075532A1 (en) | 2018-04-26 |
US10592207B2 (en) | 2020-03-17 |
EP3529696A4 (en) | 2020-05-27 |
US20190235838A1 (en) | 2019-08-01 |
KR20190058537A (ko) | 2019-05-29 |
US20180113678A1 (en) | 2018-04-26 |
KR102211011B1 (ko) | 2021-02-02 |
EP3529696A1 (en) | 2019-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109863476A (zh) | 动态变量精度计算 | |
US9870341B2 (en) | Memory reduction method for fixed point matrix multiply | |
US11853718B2 (en) | Small multiplier after initial approximation for operations with increasing precision | |
CN1928809A (zh) | 用于执行浮点运算的系统、设备和方法 | |
US9996345B2 (en) | Variable length execution pipeline | |
CN113590195B (zh) | 支持浮点格式乘加的存算一体化dram计算部件 | |
US9519459B2 (en) | High efficiency computer floating point multiplier unit | |
US20160054979A1 (en) | Data storage method, ternary inner product operation circuit, semiconductor device including the same, and ternary inner product arithmetic processing program | |
US7899860B2 (en) | Method and system for high-speed floating-point operations and related computer program product | |
Ghosh et al. | FPGA based implementation of a double precision IEEE floating-point adder | |
CN106547514B (zh) | 一种基于时钟拉伸技术的高能效二进制加法器 | |
US20170308356A1 (en) | Iterative division with reduced latency | |
Abraham et al. | An ASIC design of an optimized multiplication using twin precision | |
US9218157B2 (en) | Performing a division operation using a split division circuit | |
US9519458B1 (en) | Optimized fused-multiply-add method and system | |
Tadas et al. | 64 bit divider using Vedic mathematics | |
Heo et al. | Power optimization of sum-of-products design for signal processing applications | |
US9311272B1 (en) | System and method for faster division | |
Hounsinou | Leading Digit Computation Circuits | |
GB2537524A (en) | Variable length execution pipeline having an odd number of stages | |
Ratre et al. | A Review Paper on Arithmetic and Logical Unit for Graphics Processor |
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 |