一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

位串压缩的制作方法

2022-02-21 03:42:22 来源:中国专利 TAG:


1.本公开大体上涉及半导体存储器和方法,且更确切地,涉及用于位串压缩的设备、系统和方法。


背景技术:

2.存储器装置通常提供为计算机或其它电子系统中的内部半导体集成电路。存在许多不同类型的存储器,包含易失性和非易失性存储器。易失性存储器会需要功率以维持其数据(例如主机数据、误差数据等等),并包含随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)、同步动态随机存取存储器(sdram)和闸流体随机存取存储器(tram)等等。非易失性存储器可通过在未供电时保存所存储数据来提供永久数据,且可以包含nand快闪存储器、nor快闪存储器和电阻可变存储器,例如相变随机存取存储器(pcram)、电阻性随机存取存储器(rram)和磁阻随机存取存储器(mram),例如自旋力矩传送随机存取存储器(stt ram)等等。
3.存储器装置可耦合到主机(例如,主机计算装置)以存储数据、命令和/或指令以在计算机或电子系统处于运算中时供主机使用。例如,数据、命令和/或指令可在计算或其它电子系统的运算期间在主机与存储器装置之间传送。


技术实现要素:

4.本公开涉及用于位串压缩的设备、系统和方法。
5.根据本公开的实施例,一种方法包括:压缩根据通用数格式或posit格式而格式化的位串,以将与所述位串相关联的位宽度从第一位宽度更改为第二位宽度;将具有所述第二位宽度的所述位串写入第一寄存器;使用具有所述第二位宽度的所述位串执行算术运算或逻辑运算或两者;确定对应于数据值的一或多个位子集和对应于所述算术运算或所述逻辑运算的结果的精确度或准确度或两者的一或多个位子集已达到阈值位值;以及响应于所述确定而将包括所述结果的所述一或多个位子集的至少一部分的位串写入第二寄存器。
6.根据本公开的实施例,一种设备包括:耦合到第一寄存器和第二寄存器的处理装置,其中所述处理装置被配置成:使得具有对应于数据值的一或多个位子集和对应于通用数(unum)位串或posit位串的精确度或准确度或两者的一或多个位子集的具有第一位串宽度的位串被写入所述第一寄存器;使得具有对应于所述unum或posit位串的所述精确度或所述准确度或两者的所述一或多个位子集的具有第二位串宽度的位串被写入所述第二寄存器;使得使用具有所述第二位串宽度的所述位串作为用于算术运算或逻辑运算或两者的运算数来执行所述算术运算或所述逻辑运算或两者;监测与所述算术运算或所述逻辑运算或两者的结果相关联的位量,以确定与所述算术运算或所述逻辑运算或两者的所述结果相关联的所述位量已超过阈值;以及使得所述结果的至少一个位子集的至少一部分被写入第三寄存器。
7.根据本公开的实施例,一种系统包括:主机;控制电路系统,其包括耦合到所述主
机的处理装置和存储器资源,其中所述控制电路系统被配置成:使得具有对应于数据值的一或多个位子集和对应于通用数(unum)位串或posit位串的精确度或准确度或两者的一或多个位子集的具有第一位串宽度的位串被写入第一寄存器;使得具有对应于所述unum或posit位串的所述精确度或所述准确度或两者的所述一或多个位子集的具有第二位串宽度的位串被写入第二寄存器;使得执行运算以将具有所述第一位串宽度的所述位串的位串宽度更改为具有对应于所述数据值的所述一或多个位子集的第三位串宽度;以及使得使用具有所述第三位串宽度的所述位串作为用于递归算术运算或递归逻辑运算或两者的运算数来执行所述算术运算或所述逻辑运算或两者。
附图说明
8.图1a是根据本公开的多个实施例的呈包含处理装置和存储器资源的设备形式的功能框图。
9.图1b是根据本公开的多个实施例的呈包含处理装置和存储器资源的设备形式的另一功能框图。
10.图2a是根据本公开的多个实施例的呈包含含有主机和存储器装置的设备的计算系统形式的功能框图。
11.图2b是根据本公开的多个实施例的呈包含含有主机和存储器装置的设备的计算系统形式的另一功能框图。
12.图2c是根据本公开的多个实施例的呈包含主机、存储器装置、专用集成电路和现场可编程门阵列的计算系统形式的功能框图。
13.图3是具有es指数位的n位posit的实例。
14.图4a是3位posit的正值的实例。
15.图4b是使用两个指数位的posit构造的实例。
16.图5是根据本公开的多个实施例的呈加速电路系统形式的功能框图。
17.图6a是具有不同位长度的各种posit位串的实例。
18.图6b是具有不同位长度的各种posit位串的另一实例。
19.图7是根据本公开的多个实施例的表示用于位串压缩的实例方法的流程图。
具体实施方式
20.描述与位串压缩相关的系统、设备和方法。一种用于位串压缩的方法可以包含确定使用根据通用数格式或posit格式而格式化的位串来执行特定运算,以将与所述位串相关联的位宽度从第一位宽度更改为第二位宽度;以及对根据通用数格式或posit格式而格式化的位串执行压缩运算,以将与所述位串相关联的位宽度从第一位宽度更改为第二位宽度。所述方法可进一步包含将具有所述第二位宽度的所述位串写入第一寄存器;使用具有所述第二位串宽度的所述位串执行算术运算或逻辑运算或两者;以及监测所述运算的结果的位量。所述方法可进一步包含确定对应于数据值的所述一或多个位子集和对应于所述结果的精确度或准确度或两者的一或多个位子集已达到阈值位值;以及响应于所述确定而将包括所述结果的所述一或多个位子集的至少一部分的位串写入第二寄存器。
21.计算系统可以执行范围广泛的运算,其可以包含各种计算,这可能需要不同的准
确度。然而,计算系统具有有限数量的存储器,在所述存储器中存储在其上执行计算的运算数。为了促进在由有限存储器资源施加的约束内对由计算系统存储的运算数执行运算,可以特定格式存储运算数。为简单起见,一种此类格式被称为“浮点”格式或“浮点数(float)”(例如,ieee 754浮点格式)。
22.根据浮点标准,在三个整数集或位集(一个位集被称为“基数”,一个位集被称为“指数”,且一个位集被称为“尾数”(或有效数字))方面表示位串(例如,可以表示数的位串),例如二进制数串。整数集或位集定义其中存储二进制数串的格式,可在本文中称为“数字格式”或简单称为“格式”。例如,定义浮点位串的上文描述的位的三个整数集(例如,基数、指数和尾数)可以被称为格式(例如,第一格式)。如下文更详细地描述,posit位串可以包含四个整数集或位集(例如,符号、状态、指数和尾数),其也可以被称为“数字格式”或“格式”(例如,第二格式)。另外,根据浮点标准,可在位串中包含两个无限值(例如, ∞和-∞)和/或两种“非数字值(nan)”:静默nan和信令nan。
23.浮点标准已在计算系统中使用数年,且定义了用于由许多计算系统进行的计算的算术格式、互换格式、舍入规则、运算和异常处理。算术格式可以包含二进制和/或十进制浮点数据,其可以包含有限数字、无线值和/或特定nan值。互换格式可以包含可用于交换浮点数据的编码(例如,位串)。舍入规则可以包含当在算术运算和/或转换运算期间舍入数字时可满足的一组特性。浮点运算可以包含算术运算和/或其它计算运算,如三角函数。异常处理可以包含异常条件的指示,如除以零、溢出等。
24.浮点的替代格式被称为“通用数”(unum)格式。存在可被称为“posit”和/或“有效”的若干形式的unum格式:i型unum、ii型unum和iii型unum。i型unum是ieee 754标准浮点格式的超集,其在尾数的结尾处使用“ubit”指示实数是否是准确浮点数或是否介于相邻浮点数之间的区间中。i型unum中的符号、指数和尾数位从ieee 754浮点格式获取其定义,然而,i型unum的指数和尾数字段的长度可从单个位显著地改变到最大用户可定义长度。通过从ieee 754标准浮点格式获取符号、指数和尾数位,i型unum可类似于浮点数表现,然而,在i型unum的指数和分数位中呈现的可变位长度相较于浮点数可能需要额外管理。
25.ii型unum通常与浮点数不相容,然而,ii型unum可允许基于投影实数的简洁数学设计。ii型unum可以包含n位并且可以用“u晶格”加以描述,其中圆形投影的象限填充有2
n-3-1个实数的有序集。ii型unum的值可围绕将圆形投影等分的轴线反射,使得正值位于圆形投影的右上象限中,而其负对应值位于圆形投影的左上象限中。表示ii型unum的圆形投影的下半部可以包含位于圆形投影的上半部中的值的倒数。ii型unum通常对大多数运算都依赖于查询表。因此,在一些情况下,查询表的大小会限制ii型unum的效果。然而,ii型unum与根据一些条件的浮点数相比可提供改进的计算功能。
26.iii型unum格式在本文中被称为“posit格式”或简单称为“posit”。与浮点位串对比,posit可根据某些条件而允许比具有相同位宽的浮点数更高的精确度(例如,更宽动态范围、更高分辨率和/或更高准确度)。这可允许由计算系统执行的运算当使用posit时以比使用浮点数时更高的速率(例如,更快)执行,这转而可通过例如减少在执行运算时使用的时钟周期的数目从而减少执行此类运算时的处理时间和/或消耗的功率来提高计算系统的性能。另外,与浮点数相比,在计算系统中使用posit可以实现更高的准确度和/或精确度,这与某些方法(例如,依赖于浮点格式位串的方法)相比可以进一步改进计算系统的功能。
27.posit可基于包含于posit中的总位量和/或整数集或位集的量而在精确度和准确度上明显变化。另外,posit可以生成较大的动态范围。根据某些条件,posit的准确度、精确度和/或动态范围可大于浮点数或其它数字格式的准确度、精确度和/或动态范围,如本文中更详细描述。可以例如基于将要使用posit的应用来控制posit的可变准确度、精确度和/或动态范围。另外,posit可以减少或排除上溢、下溢、nan和/或与浮点数和其它数字格式相关联的其它极端情况。此外,与浮点数或其它数字格式相比,使用posit可以允许使用更少的位来表示数值(例如,数)。
28.在一些实施例中,这些特征可允许posit是相当可重新配置的,与依赖于浮点数或其它数字格式的方法相比,这可以提供改进的应用性能。另外,与浮点数或其它数字格式相比,posit的这些特征可以在机器学习应用中提供改进的性能。例如,在计算性能至关重要的机器学习应用中,可以使用posit来训练网络(例如,神经网络),其准确度和/或精确度与浮点数或其它数字格式相同或更高但使用比浮点数或其它数字格式更少的位。另外,可以使用具有比浮点数或其它数字格式更少的位(例如,更小位宽)的posit来实现机器学习情形中的推断运算。与浮点数或其它数字格式相比,通过使用更少的位来实现相同或增强的结果,因此使用posit可以减少执行运算时的时间量和/或减小应用中所需的存储器空间的量,这可改进其中采用posit的计算系统的整体功能。
29.如本文中所使用,“精确度”是指用于使用位串执行计算的位串中的位量。例如,如果在使用16位位串执行计算时使用所述位串中的每个位,则所述位串可以被称为具有16位精确度。然而,如果在使用16位位串执行计算时仅使用所述位串的8位(例如,如果位串的前8位为零),则所述位串可以被称为具有8位精确度。随着位串的精确度提高,可以以更高的准确度执行计算。相反,随着位串的精确度降低,可以使用更低的准确度来执行计算。例如,8位位串可以与由二百五十六(256)个精确度步长组成的数据范围相对应,而16位位串可以与由六万五千五百三十六(65,536)个精确度步长组成的数据范围相对应。
30.如本文中所使用,“动态范围”或“数据的动态范围”是指可用于具有与其相关联的特定精确度的位串的最大值与最小值之间的比率。例如,可以由具有与其相关联的特定精确度的位串表示的最大数值可以确定位串的数据格式的动态范围。对于通用数(例如,posit)格式的位串,动态范围可以由位串的指数位子集(例如,下文结合图3和图4a-4b描述的es)的数值来确定。
31.动态范围和/或精确度可以具有与其相关联的可变范围阈值。例如,数据的动态范围可以与使用数据的应用和/或使用数据的各种计算相对应。这可能是由于以下事实:一个应用期望的动态范围可能不同于另一应用期望的动态范围,和/或因为一些计算可能需要不同的数据动态范围。因此,本文中的实施例可以允许更改数据的动态范围以适合不同应用和/或计算的要求。与不允许操纵数据的动态范围以适合不同应用和/或计算的要求的方法对比,本文中的实施例可以通过允许基于要使用数据的应用和/或计算而改变数据的动态范围来提高资源使用和/或数据精确度。
32.可应用于位串的位串压缩的非限制性实例包含通过去除位或将位添加到位串来减少与位串相关联的位量的运算。例如,如果期望位串的较低精确度和/或减小的动态范围,则可以将位串中的总位量减少比例因子(例如,减少一半、减少四倍等),和/或如果期望增加位串的精确度和/或动态范围,则可以将位串中的总位量增加比例因子(例如,加倍、增
加四倍等)。如本文中所使用,“比例因子”是指可用于乘以或除以位串中的位量以生成具有更多或更少位的位串的数。
33.然而,实施例不限于此,并且在一些实施例中,作为执行位串压缩的一部分,可以将一或多个位添加到位串的特定位子集中或从其去除。例如,在执行递归运算期间,从每次连续迭代得到的位串中的位量可能增加,这可能导致存储位串的寄存器经历溢出状况。如本文中所使用,“溢出状况”是指位串中的位量变得大于可用于存储位串的(例如,寄存器内的)存储位置的量的事件。在一些方法中,当位串开始经历溢出状况时,可以通过简单地舍入或截断位串来处理此问题。然而,这可能导致递归运算结果的精确度和/或准确度损失。
34.相比之下,本文中的实施例允许在不同寄存器中累加来自特定位子集(例如尾数、状态、指数等)的位,可以在不舍入或截断所产生的位串的情况下执行递归运算。可以在递归运算期间和/或在完成递归运算时使用来自在单独的寄存器中累加的特定位子集的位以恢复与递归运算相关联的位串的精确度和/或准确度。此外,在一些实施例中,可以利用电路系统来分析位串将用于的应用和/或计算的类型,以基于使用位串的应用类型和/或计算类型来确定最佳位串大小。然后,在应用调用位串或在计算中使用位串之前,可以更改位串的位量,从而为位串提供优化的动态范围和/或精确度。
35.如本文所描述,位串的状态位子集中的小变化可以对位串的动态范围和/或精确度带来相对较大的提高。因此,在一些实施例中,相对较小的变化(有关状态位子集中的位量或是有关与状态位子集相关联的数值)可以极大地影响位串的动态范围和/或精确度。此外,对位串的尾数位子集的更改也会极大地影响位串的动态范围和/或精确度。如本文中更详细地讨论的,尤其可以通过更改这些位子集来实现基于将使用位串的应用对位串进行转换以增加或减小位串的长度。
36.当应用于unum或posit位串时,这些技术可尤其有用,因为如本文中更详细地描述的,与例如浮点数或定点二进制位串等一些其它格式相比,此类位串可在较短的位宽度处保持较高准确度和/或精确度水平。这些特性可在例如传送应用中利用以允许压缩位串比具有其它格式的位串更快地传送,同时仍保持可接受的准确度和/或精确度水平。
37.本文中的实施例涉及硬件电路系统(例如,处理装置),其配置成对位串执行各种运算以改进计算装置的整体功能。例如,本文中的实施例涉及被配置成执行运算以更改位串的数值和/或位量从而改变位串的精确度水平并将位串的特定位子集的至少一部分选择性地写入专用可变深度寄存器(例如,查询寄存器)的硬件电路系统。如本文中所使用,“可变深度寄存器”是指被配置成基于来自用户或计算机程序的输入而存储与位串相关联的多个位的硬件电路系统。在一些实施例中,可以选择或以其它方式改变可用于存储位串的存储位置的量以允许不同量的位存储于其中。例如,本文中的实施例可以允许更改与位串的相应位子集相关联的数值和/或位量,以改变位串的精确度水平和/或位串的动态范围。在一些实施例中,可以将位子集(或其部分)存储于可变深度寄存器内以减少用于特定计算的位量,同时维持与存储于可变深度寄存器中的位子集相对应的附加位以供稍后使用。通过改变位串中各种位子集的数值和/或位量,和/或通过将这些位子集存储于可变深度寄存器中,与不允许将此类位子集选择性地写入可变深度寄存器中的方法相比,可以维持和/或恢复位串的精确度和/或位串的动态范围以及因此使用位串执行的算术和/或逻辑运算的结果的精确度和/或动态范围。
38.在一些实施例中,硬件电路系统可以基于确定与位串相关联的特定准确度和/或精确度是期望的而使与所述位串相关联的数值和/或位量改变。例如,硬件电路系统可以监测位串并确定是否可以更改位串的准确度和/或精确度以压缩位串。必要时通过压缩位串可以减少为存储位串和/或使用位串执行计算而保留的存储器资源量。此外,通过压缩位串,可以使用比未压缩位串时使用的处理资源更少的处理资源来执行使用位串进行的计算。
39.在一些实施例中,可以使用硬件电路系统执行混合处理运算,其中在执行各种算术和/或逻辑运算之前压缩位串。作为执行混合处理运算的一部分,可以将对应于经压缩位串的准确度和/或精确度的位串写入专用寄存器。在混合处理运算涉及执行递归运算的实施例中,经压缩位串可用作执行混合处理运算的运算数。
40.在一些实施例中,在执行混合处理运算的一或多次迭代之后,硬件电路系统可以使用存储在专用寄存器中的位串和递归运算的迭代结果来恢复位串的原始宽度。可以重新压缩恢复后的位串,并且可以使用经重新压缩的位串作为运算数来执行递归运算的进一步迭代。
41.在说明性实例中,混合处理运算可以从64位posit位串开始。可以将64位posit位串压缩成32位posit位串,并且可以将对应于64位posit位串的原始准确度和/或精确度的位串写入专用寄存器。可以使用32位posit位串作为运算数来执行递归运算的一或多次迭代,并且在执行递归运算的一或多次迭代之后,可以使用存储在专用寄存器中的位串将32位posit位串解压回至64位posit位串。
42.这可以允许在使用32位posit位串执行运算时增加带宽并减少处理延迟,同时保持专用寄存器中的准确度和/或精确度,以便后续在将递归运算的迭代结果恢复成64位posit位串时恢复准确度和/或精确度时使用。应了解,实施例不限于其中使用64位和32位位串并且可以根据应用和/或用户定义的参数使用其它位宽度(例如,8位、16位等)的位串的此特定实例。
43.通过允许在期望精确度和/或准确度的应用中提高所执行算术和/或逻辑运算的精确度和/或准确度,改变在执行算术和/或逻辑运算时使用的位串的准确度和/或精确度可以促进计算系统的性能提高。相反,在其中精确度和/或准确度不太重要的应用中,通过提高执行运算的速度(例如,具有较小位宽的位串在执行算术和/或逻辑运算时可能需要较少的时钟周期)和/或在执行算术和/或逻辑运算期间减小位串的所需存储空间,改变执行算术和/或逻辑运算时使用的位串的精确度可以促进提高计算系统的性能。
44.在一些方法中,可能不改变位串的精确度,这可能导致升高功耗和/或相对较长处理时间。例如,如算术逻辑单元的硬件电路系统可与现场可编程门阵列(fpga)结合使用,以使用位串来执行运算。然而,fpga在某些情况下可能会形成处理瓶颈。查询寄存器运算的位长度会进一步加剧这种情况,在一些方法中,所述位长度可在64位与约4096位之间变化。为了补救在某些情况下可能出现的这些和其它问题,本文中的实施例可以允许位串的精确度和/或动态范围基于位串所用于的应用、期望的功耗水平、期望的处理时间、请求位串的计算或其它参数而动态地变化。
45.例如,如果应用正在运行指数位子集值为4的32位posit位串(例如,(32,4)posit位串),则本文中的实施例可允许posit位串的精确度和/或动态范围减半为(16,2)posit位
串。通过将(32,4)posit位串“向下转换”为(16,2)位串,对应查询寄存器的大小也可从例如2048位减少到512位。
46.对位串进行“向下转换”的运算的实例场景可以包含其中使用了位串的大部分动态范围但是特定应用或计算需要较小的精确度的场景。在这种情况下,可以减小位串的总长度,并且可以增加指数位子集。可发生对位串进行“向下转换”的运算的另一场景是当使用位串的状态位子集的小于阈值部分的k值(本文中结合图3和4a-4b描述)并且不需要小数精确度时,可以减小位串的总长度,并且可以将指数位子集保持恒定。可发生对位串进行“向下转换”的运算的又一场景是当与位串相对应的数据倾向于保持在useed与之间时,可以减小位串的总长度。
47.如果应用正在运行较低阶位宽和/或精确度的posit位串(例如,(8,0)或(16,2)posit位串),并且期望较高精确度和/或动态范围,则可以执行对posit位串进行“向上转换”的运算以提高精确度和/或增大指数位子集。例如,可以将(8,0)posit位串“向上转换”为(8,1)或(16,1)posit位串,可以将(16,2)posit位串“向上转换”为(16,4)或(32,2)posit位串等。可发生对位串进行“向上转换”的运算的实例场景是当递增与maxpos或minpos(本文中结合图4a和4b描述)相对应的类别间隔信息时。在这种情况下,可以基于是期望更大还是更小的动态范围或更大还是更小的精确度来更改位串的指数位子集和/或总长度。本文中,如更详细地描述的,对posit位串进行“向上转换”还是“向下转换”可以根据应用而定。
48.在一些实施例中,“向上转换”和/或“向下转换”位串的运算可以作为执行递归运算的一部分。例如,为了减少在执行递归运算的计算阶段期间所需的计算资源,可以对位串进行“向下转换”。随后可以将递归运算的迭代的结果“向上转换”以恢复计算的精确度和/或准确度的量。在一些实施例中,在执行递归运算的后续计算阶段期间,可以再次“向下转换”结果。
49.除此之外或在替代方案中,可以将表示递归运算的迭代的一或多个结果的位串的一部分写入与写入迭代结果的寄存器不同的寄存器。例如,一或多个位子集或位子集的各部分可以在递归运算的不同执行阶段写入专用寄存器,如本文中更详细地描述。在一些实施例中,这可以允许在执行递归运算时使用较小的位串,以例如减少计算时间和/或减少执行此类运算时消耗的处理资源,同时允许使用递归运算的结果和存储于专用寄存器中的位串来构造更准确或更精确的结果。
50.在本公开的以下详细描述中,参考形成本公开的一部分的附图,且图中通过说明的方式示出了可实践本公开的一或多个实施例的方式。足够详细地描述这些实施例以使得所属领域的一般技术人员能够实践本公开的实施例,且应理解,可利用其它实施例,且可在不脱离本公开的范围的情况下进行工艺、电气和结构改变。
51.如本文中所使用,如“n”、“m”等的指定符,尤其是关于图式中的参考标号,指示可以包含多个如此指定的特定特征。还应理解,本文中所使用的术语仅出于描述特定实施例的目的,而不意在作为限制。如本文中所使用,除非上下文另外明确规定,否则单数形式“一(a/an)”和“所述(the)”可以包含单数个指示物和多个指示物两者。另外,“多个”、“至少一个”和“一或多个”(例如,多个存储器存储体)可指一或多个存储器存储体,而“多个”意在指代超过一个此类事物。此外,贯穿本技术在容许意义上(即,可能、能够)而非在强制性意义
上(即,必须)使用词语“可(can/may)”。术语“包含”和其派生词意指“包含但不限于”。视上下文而定,术语“耦合(coupled/coupling)”意味着物理上直接或间接连接或存取和移动(传输)命令和/或数据。视上下文而定,术语“位串”、“数据”和“数据值”在本文中可互换地使用且可具有相同含义。另外,视上下文而定,术语“位集”、“位子集”和“部分”(在位串的位的一部分的情形下)在本文中可互换使用且可具有相同含义。
52.本文中的图遵循编号定则,其中第一一或多个数字对应于图号,其余数字标识附图中的元件或组件。可通过使用类似数字来标识不同附图之间的类似元件或组件。例如,120可以指代图1中的元件“20”,且类似元件在图2中可表示为220。通常在本文中可用单个元件符号指代一组或多个类似元件或组件。例如,多个参考元件431-1、431-2、...、431-n可总体称为431。如应了解,可以添加、交换和/或排除本文中的各种实施例中示出的元件,从而提供本公开的多个额外实施例。另外,图中提供的元件的比例和/或相对尺度意在说明本公开的某些实施例,而不应视作限制性意义。
53.图1是根据本公开的多个实施例的呈包含控制电路系统120的设备100形式的功能框图。如本文中所使用,“设备”可以指但不限于多种结构或结构的组合中的任何一种,例如电路或电路系统、一或多个裸片、一或多个模块、一或多个装置或一或多个系统。如图1所示,设备100可以包含控制电路系统120,其可以包含处理装置122和存储器资源124。
54.存储器资源124可以包含易失性存储器资源、非易失性存储器资源或易失性与非易失性存储器资源的组合。在一些实施例中,存储器资源可以是随机存取存储器(ram),例如静态随机存取存储器(sram)。然而,实施例不限于此,并且存储器资源可以是高速缓存、一或多个寄存器、nvram、reram、feram、mram、pcm、包含阵列自选存储器(ssm)单元的“新兴”存储器装置等,或其组合。电阻可变存储器装置可结合可堆叠交叉网格化数据存取阵列基于体电阻的改变来进行位存储。另外,与许多基于快闪的存储器对比,电阻可变非易失性存储器可执行就地写入运算,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。与基于快闪的存储器和电阻可变存储器对比,自选存储器单元可以包含具有充当存储器单元的开关和存储元件两者的单个硫族化物材料的存储器单元。
55.存储器资源124可以存储一或多个位串。在一些实施例中,可以根据通用数(unum)或posit格式来存储由存储器资源124存储的位串。如本文中所使用,以unum(例如,iii型unum)或posit格式存储的位串可以包含若干位的子集或“位子集”。例如,通用数或posit位串可以包含被称为“符号”或“符号部分”的位子集、被称为“状态”或“状态部分”的位子集、被称为“指数”或“指数部分”的位子集,以及被称为“尾数”或“尾数部分”(或有效数字)的位子集。如本文中所使用,位子集意在指代包含于位串中的位子集。本文中结合图3和4a-4b更详细地描述符号、状态、指数和尾数位集的实例。然而,实施例不限于此,且存储器资源可以如浮点格式或其它合适的格式的其它格式存储位串。
56.耦合到存储器资源124的处理装置122可以在本文中以一或多个处理器(例如,处理装置或处理单元)、例如专用集成电路(asic)的集成电路、现场可编程门阵列(fpga)、精简指令集计算装置(risc)、芯片上系统,或被配置成执行更详细地描述的运算的硬件和/或电路系统的其它组合的形式提供。例如,处理装置122可被配置成更改由存储器资源124存储的位串的数值或位量,以改变与位串相关联的精确度水平。改变位串的精确度水平可以包含添加位和/或从位串去除位以更改与位串相关联的动态范围、位串的分辨率,或位串的
对应于与位串相关联的精确度或准确度水平的其它特性。
57.在一些实施例中,存储器资源124可被配置成接收包括具有与第一精确度水平相对应的第一位量的位串的数据。处理装置122可被配置成将第一位量更改为与第二精确度水平相对应的第二位量。在一些实施例中,第一精确度水平或第二精确度水平可以大于第一精确度水平或第二精确度水平中的另一者。例如,第一精确度水平可以高于第二精确度水平,且反之亦然。
58.在非限制性实例中,第一精确度水平可以对应于具有32位的位宽的位串,且第二精确度水平可以对应于具有16位的位宽的位串。类似地,在另一非限制性实例中,第一精确度水平可以对应于具有8位的位宽的位串,且第二精确度水平可以对应于具有16位的位宽的位串。实例不限于这些具体精确度水平,且第一精确度水平和/或第二精确度水平可以对应于具有8位、16位、32位、64位等的位宽的位串。
59.在一些实施例中,处理装置122可使得添加一或多个位或从位串的至少一个位子集去除一或多个位,以将位串的位量从第一位量更改为第二位量。例如,处理装置122可使得将一或多个位添加到对应于符号的位子集、对应于状态的位子集、对应于指数的位子集和/或对应于位串的尾数的位子集,如本文中结合图2a-2c、3、4a-4b和5更详细描述的。
60.在其它实施例中,处理装置122可使得从对应于符号的位子集、对应于状态的位子集、对应于指数的位子集和/或对应于位串的尾数的位子集去除一或多个位,如本文中结合图2a-2c、3、4a-4b和5更详细描述的。在此类实施例中,处理装置122可以使去除的位存储在专用寄存器中,例如图1b所示的位子集寄存器111。
61.处理装置122还可被配置成确定对于具有第二位量的位串的最大正值(例如,结合图4a和4b描述的maxpos)和/或确定对于具有第二位量的位串的最小正值(例如,结合图4a和4b描述的minpos)。处理装置122可随后将第二位量更改为第三位量,所述第三位量对应于位串的最大正值或位串的最小正值。例如,在处理装置122已更改位串的位量之后,可有必要将所得位串的位宽裁剪为与位串相关联的最小正值以避免将具有小数值或小位量的位串转换为零。类似地,可有必要将所得位串的位宽限制在与位串相关联的最大正值以避免位串的位宽变得过大的情况。
62.图1b是根据本公开的多个实施例的呈包含处理装置122和存储器资源124的设备100形式的另一功能框图。控制电路系统120可进一步包含运算累加寄存器109和/或位子集寄存器111。在一些实施例中,运算累加寄存器109和/或位子集寄存器111可以作为处理装置122的一部分提供,然而,实施例不限于此,并且运算累加寄存器109和/或位子集寄存器111可以在物理上不同于但可以耦合到处理装置122和/或存储器资源124。
63.运算累加寄存器109和/或位子集寄存器111可以包含存储数据值(例如,与逻辑“1”或“0”相对应的电荷)的一定量的存储位置(例如,锁存器、触发器等)。如更详细地描述的,本文中的运算累加寄存器109和/或位子集寄存器111可以包含可配置和/或动态可配置量的可用存储位置。例如,运算累加寄存器109和/或位子集寄存器111可以具有设定量的实际物理存储位置,然而,可用于存储位串的存储位置的量可以被限制或以其它方式控制。
64.这可以限制可存储于运算累加寄存器109和/或位子集寄存器111中的位串的大小,所述大小可能影响使用运算累加寄存器109和/或位子集寄存器111执行的运算的性能。例如,如本文所描述,使用较小的位串(例如,8位位串或16位位串)而不是较大的位串(例
如,32位位串或64位位串)的执行运算可以提高此类运算的处理量。因此,通过动态地或以其它方式控制运算累加寄存器109和/或位子集寄存器111的可用存储位置量,可以控制此类运算的性能特性。
65.在一些实施例中,运算累加寄存器109可以存储使用位串执行的递归运算的迭代的结果。在一些实施例中,可以根据iii型通用数或posit格式来格式化位串,但实施例不限于此。例如,处理装置122可以使用由存储器资源124存储的位串运算数来执行递归运算。在每次迭代之后,可以将递归运算的迭代的结果写入或累加到运算累加寄存器109中。
66.随着迭代量的增加,可能会出现运算累加寄存器经历溢出状况的时候。在一些实施例中,为了维持递归运算的结果的精确度和/或准确度,处理装置122可以使得将递归运算的迭代的结果的一或多个位子集(或位子集的一部分)写入位子集寄存器111。
67.除此之外或在替代方案中,在一些实施例中,处理装置122可以响应于确定将要发生或已发生溢出状况而使得“向下转换”表示递归运算的迭代结果的位串运算数和/或位串。在其它实施例中,处理装置122可以使得“向下转换”表示递归运算的迭代结果的位串运算数和/或位串,以便增加计算处理量(例如,更快地执行递归运算的迭代)和/或减少执行递归运算所消耗的处理能力。在此类实施例中,处理装置122可以使得“向上转换”递归运算的后续迭代的输入以增加递归迭代的结果的精确度和/或准确度。
68.在一些实施例中,一旦递归运算完成,处理装置122就可以使得存储于位子集寄存器111中的值与存储于运算累加寄存器109中的结果相结合,以恢复在计算期间可能损失的递归运算的最终结果的精确度和/或准确度。例如,如果与在执行递归运算中使用的位串相对应的尾数位子集存储于位子集寄存器111中,则可在递归运算完成时将所述尾数位子集与存储于运算累加寄存器109中的运算结果重新结合以提高递归运算的最终结果的精确度和/或准确度。
69.在一个实例中,可以在边缘计算装置中执行应用,其中在执行运算时使用尽可能少的位。在这个实例中,可能需要由于通过功率节省模式施加的约束而最小化在执行运算时使用的功率。因此,在此类应用中,处理装置122可使得在应用中使用的位串精确度转换为具有较短位宽(例如,“向下转换”),这可转而允许在通过边缘计算装置施加的约束内使用位串执行运算。在此实例中,处理装置122可以检测存储于存储器资源124中(例如,在寄存器或其它存储位置中)的位串的数据模式,且基于确定和/或可用于使用边缘计算装置执行运算的功率量而改变位串的精确度以减小位串的位宽。
70.在一些实施例中,处理装置122可以驻存在边缘计算装置(本文中可类似于图2所示的计算系统200)上。如本文中所使用,术语“驻留于

上”是指某物在物理上位于特定组件上。例如,处理装置122“驻存于”边缘计算装置或计算系统上是指其中处理装置122在物理上耦合到边缘计算装置或计算系统或在物理上处于边缘计算装置或计算系统内的状况。术语“驻存于
……
上”可在本文中与例如“部署于
……
上”或“位于
……
上”的其它术语互换使用。
71.如果确定可使用具有较大位宽的位串来执行运算,则运算累加寄存器109可使得通过将位串转换(例如,“向上转换”)为具有较大位宽的位串来改变位串的精确度。例如,如果确定边缘计算装置具有可用的额外计算资源或如果低功率和高带宽消耗不再合乎需要,则处理装置122可以改变位串的精确度以增加位串的位宽。在一些实施例中,可响应于确定
位串所使用的一或多个寄存器(例如,运算累加寄存器109和/或位子集寄存器111)已经历溢出状况而改变位串的精确度。这可允许在使用位串的运算中实现更高的精确度和/或准确度。
72.在其它实施例中,可将大量数据传送到数据中心或从数据中心传送大量数据。为了改进吞吐量并减少在大规模数据传送操作中消耗的时间量,处理装置可以在向数据中心传送或从数据中心传送之前对位串执行运算(例如,“向下转换”运算)以压缩位串。
73.在一些实施例中,存储器资源124可被配置成接收包括具有与第一精确度水平相对应的第一位量的位串的数据。处理装置122和/或运算累加寄存器109可被配置成确定具有第一位量的位串具有与其相关联的特定数据模式和/或至少部分地基于确定位串具有与其相关联的特定数据模式而将第一位量更改为对应于第二精确度水平的第二位量。在一些实施例中,处理装置122和/或运算累加寄存器109可被配置成作为确定位串具有特定数据模式的部分而确定具有第一位量的位串的一或多个位子集具有具备特定值的阈值位量。
74.图2a是根据本公开的多个实施例的呈包含含有主机202和存储器装置204的设备的计算系统200形式的功能框图。存储器装置204可以包含一或多个存储器模块(例如,单列直插式存储器模块、双列直插式存储器模块等)。存储器装置204可以包含易失性存储器和/或非易失性存储器。在多个实施例中,存储器装置204可以包含多芯片装置。多芯片装置可以包含多个不同的存储器类型和/或存储器模块。例如,存储器系统可以包含任何类型的模块上的非易失性或易失性存储器。另外,组件(例如,主机202、控制电路系统220、处理装置222、存储器资源224和/或存储器阵列230)中的每一者可分别在本文中称为“设备”。
75.存储器装置204可以提供用于计算系统200的主存储器或可在整个计算系统200中用作额外存储器或存储装置。存储器装置204可以包含一或多个存储器阵列230(例如,存储器单元阵列),其可以包含易失性和/或非易失性存储器单元。例如,存储器阵列230可以是具有nand架构的快闪阵列。实施例不限于特定类型的存储器装置。例如,存储器装置204可以包含ram、rom、dram、sdram、pcram、rram和快闪存储器等。
76.在存储器装置204包含非易失性存储器的实施例中,存储器装置204可以包含快闪存储器装置,例如nand或nor快闪存储器装置。然而,实施例不限于此,且存储器装置204可以包含例如非易失性随机存取存储器装置(例如,nvram、reram、feram、mram、pcm)的其它非易失性存储器装置、例如3-d交叉点(3d xp)存储器装置等的“新兴”存储器装置,或其组合。
77.如图2a所示,主机202可以耦合到存储器装置204。在多个实施例中,存储器装置204可以经由一或多个通道(例如,通道203)耦合到主机202。在图2a中,存储器装置204经由通道203耦合到主机202,且存储器装置204的控制电路系统220经由通道207耦合到存储器阵列230。主机202可以是主机系统,例如个人笔记本电脑、台式计算机、数码相机、智能电话、存储卡读卡器和/或物联网启用装置,以及其它各种类型的主机,且可以包含存储器存取装置,例如处理器(或处理装置)。所属领域一般技术人员将理解,“处理器”可以是一或多个处理器,例如并行处理系统、多个协处理器等。
78.主机202可以包含系统母板和/或底板,且可以包含多个处理资源(例如,一或多个处理器、微处理器,或一些其它类型的控制电路系统)。系统200可以包含分离集成电路,或主机202、存储器装置204和存储器阵列230可在同一集成电路上。例如,系统200可以是服务器系统和/或高性能计算(hpc)系统和/或其一部分。虽然图2a所示的实例说明具有冯诺依
曼(von neumann)架构的系统,但本公开的实施例可实施于非冯诺依曼架构中,所述非冯诺依曼架构可不包含通常与冯诺依曼架构相关联的一或多个组件(例如cpu、alu等)。
79.在一些实施例中,系统200可以是边缘计算装置。如本文中所使用,“边缘计算装置”可指部署于分布式计算系统中的在物理上位于边缘计算装置所使用的数据源附近的计算装置。通过在边缘计算装置所使用的数据源附近部署边缘计算装置,与其它计算方法相比,可以减少数据传送时间。然而,由于有时与边缘计算装置相关联的物理空间约束,边缘计算装置有时可以包含比传统计算装置更少的物理计算资源。
80.由于需要将增加的计算卸载到边缘计算装置,因此一些边缘计算装置可用的计算资源的缺乏可能成为边缘计算装置的计算处理量的瓶颈。在执行边缘处理、推断运算和/或训练(例如,神经网络训练和/或机器学习应用)的边缘计算装置的上下文中,这可能进一步加剧。由于本文中的实施例可以通过减少某些计算所需的计算资源的量来允许提高计算处理量,因此在边缘计算装置的上下文中应用本文描述的实施例可以使此类装置在执行边缘处理、推断运算和/或训练运算时比某些方法更有效。
81.在一些实施例中,系统200可以是数据中心或数据中心的一部分。由于数据中心的性质,它们可以接收、存储和/或传送大量数据。为了减少可与数据中心相关联的大量数据的写入或读取时间,处理装置222可执行本文描述的压缩(例如,“向下转换”)运算以减小要写入数据中心或从数据中心读取的数据的大小。例如,如本文所描述,通过减少与位串相关联的位量,可以在调用数据中心的读取或写入期间减少总数据量。一旦数据被写入数据中心或从数据中心读取,就可使用已存储在例如位子集寄存器(例如图1所示的位子集寄存器111)中的位串来恢复数据的准确度和/或精确度。
82.处理装置222可以包含一或多个处理器(例如,处理单元)和/或算术逻辑单元(alu)。在其中处理装置222包括和alu的实施例中,alu可以包含电路系统(例如,硬件、逻辑、一或多个处理装置等)以对整数二进制位串(例如posit格式的位串)执行运算(例如,用以改变位串精确度的运算等),例如上文所描述的运算。然而,实施例不限于alu,并且在一些实施例中,处理装置222可除了alu之外或代替alu还包含状态机和/或指令集架构(或其组合),如本文中结合图2c和5更详细描述。
83.控制电路系统220可进一步包含可以通信方式耦合到处理装置222的存储器资源224。在一些实施例中,存储器资源224可以接收具有与第一精确度水平相对应的第一位量的第一位串。在一些实施例中,位串可以具有与其相关联的四个位集(例如,位子集)。例如,位串可以包含符号部分、状态部分、指数部分和尾数部分。也就是说,在一些实施例中,位串可以是unum位串,例如posit位串。
84.处理装置222可执行更改第一位串的第一位量以生成具有与第二精确度水平相对应的第二位量的第二位串的运算,使得使用位串执行递归运算,使得将递归运算的迭代结果写入图2b所示的运算累加寄存器209,和/或使得将递归运算的迭代的位子集写入图2b所示的位子集寄存器211。除此之外或在替代方案中,处理装置222可以使得将更改可由运算累加寄存器和/或位子集寄存器使用的位量。在一些实施例中,可控制处理装置222以通过控制器(如图2b所示的控制器210)执行运算。第一精确度水平和第二精确度水平可对应于位串的动态范围、位串的分辨率、位串的准确度,和/或位串的精确度。
85.用以更改第一位串的第一位量以生成第二位串的运算可以包含响应于确定指数
部分的位量保持不变而增大或减小尾数部分的位量。例如,如果与指数位子集相关联的数值或位量不改变运算的部分,则处理装置222可增大或减小与尾数位子集相关联的数值或位量
86.在一些实施例中,用以更改第一位串的第一位量以生成第二位串的运算可以包含响应于确定指数部分的位量增大或减小而增大或减小状态部分、指数部分和尾数部分的位量。例如,处理装置222可被配置成响应于确定指数部分的数值或位量增大或减小而增大或减小状态部分、指数部分和尾数部分的数值或位量。在此实例中,如果与位串的指数位子集相关联的数值或位量增大或减小,则处理装置222可增大或减小与状态位子集、指数位子集和/或尾数位子集相关联的数值或位量。
87.用以更改第一位串的第一位量以生成第二位串的运算可以包含响应于确定指数部分的位量增大或减小而增大指数部分或状态部分的位量且减小指数部分或状态部分中的另一者的位量。例如,处理装置可被配置成响应于确定指数部分的位量增大或减小而增大指数部分或状态部分的数值或位量且减小指数部分或状态部分中的另一者的数值或位量。在此实例中,如果与指数位子集相关联的数值或位量增大,则与状态位子集相关联的数值或位量可减小。相反,如果与指数位子集相关联的数值或位量减小,则与状态位子集相关联的数值或位量可增大。
88.在一些实施例中,用以更改第一位串的第一位量以生成第二位串的运算可以包含更改对应于指数部分的数值。例如,处理装置222可被配置成更改指数位子集的数值而不更改位串的总位宽。在其中位串具有16位的位宽和零的指数位子集值(例如,表示为(16,0)的位串,其中16对应于位串的位宽且零对应于包含于指数位子集中的数值或指数位量)的非限制性实例中,处理装置222可被配置成将指数位子集的数值更改为例如表示为(16,1)、(16,2)、(16,3)等位串的位串。
89.处理装置222还可被配置成确定对于具有第二位量的位串的最大正值(例如,结合图4a和4b描述的maxpos)和/或确定对于具有第二位量的位串的最小正值(例如,结合图4a和4b描述的minpos)。处理装置222可随后更改第二位量以生成具有第三位量的第三位串,所述第三位量对应于位串的最大正值或位串的最小正值。例如,在处理装置222已更改位串的位量之后,可有必要将所得位串的位宽裁剪为与位串相关联的最小正值以避免将具有小数值或小位量的位串转换为零。类似地,可有必要将所得位串的位宽限制在与位串相关联的最大正值以避免位串的位宽变得过大的情况。
90.一旦设定了位串的位宽,处理装置222就可以使用位串作为运算数来执行递归运算。如上所述,在一些实施例中,递归运算可以作为由边缘计算装置执行的一或多个运算的一部分来执行,以例如使用边缘计算装置执行数据的边缘处理、推理算法和/或训练运算。在执行递归运算的每次迭代之后,处理装置222可以在执行递归运算的后续迭代之前确定是“向上转换”还是“向下转换”迭代的结果。此外,在一些实施例中,处理装置222可以确定是否已经(或将要)发生溢出状况,并且响应于这种确定,使得将与迭代结果的一或多个位子集相关联的位写入专用寄存器,例如图2b所示的位子集寄存器209。
91.如图2a所示,处理装置222和存储器资源224包含于存储器装置204中且存储器装置204耦合到主机202。存储器装置204可以从主机接收呈第一格式(例如,呈浮点格式)的数据和/或将数据转换为第二格式(例如,unum或posit格式)。在将数据从第一格式转换为第
二格式之后,可执行使用具有第二格式的位串的运算。如上文所描述,运算可以是用以改变与位串相关联的数值或位量以更改与位串相关联的精确度水平的运算。在一些实施例中,存储器装置204可以执行运算且将所得位串传送到主机202而不从主机202接收中间命令。也就是说,在一些实施例中,控制电路系统220可以执行运算以改变与位串相关联的数值或位量从而更改与位串相关联的精确度水平,和/或响应于接收到位串但没有来自主机202的额外输入(例如,不妨碍所述主机)而传送所得位串。
92.控制电路系统220可以经由一或多个通道207以通信方式耦合到存储器阵列230。存储器阵列230可以是例如dram阵列、sram阵列、stt ram阵列、pcram阵列、tram阵列、rram阵列、nand快闪阵列和/或nor快闪阵列。阵列230可以包括以通过存取线(其可在本文中称为字线或选择线)耦合的行和通过感测线(其可在本文中称为数据线或数字线)耦合的列布置的存储器单元。虽然在图2a中示出单个阵列230,但实施例不限于此。例如,存储器装置204多个存储器阵列230(例如,dram单元、nand快闪单元等的多个存储体)。
93.图2a的实施例可以包含为免模糊本公开的实施例而未说明的额外电路系统。例如,存储器装置104可以包含地址电路系统以锁存通过i/o电路系统在i/o连接上提供的地址信号。地址信号可以由行解码器和列解码器接收和解码以存取存储器装置204和/或存储器阵列230。所属领域的技术人员应了解,地址输入连接的数目可以取决于存储器装置204和/或存储器阵列230的密度和架构。
94.图2b是根据本公开的多个实施例的呈包含含有主机202和存储器装置204的设备200的计算系统形式的另一功能框图。存储器装置204可以包含控制电路系统220,其可类似于图2a所示的控制电路系统220。类似地,主机202可类似于图2a所示的主机202,且存储器装置204可类似于图2a所示的存储器装置204。此外,运算累加寄存器209和位子集寄存器211可以分别类似于结合图1b描述的运算累加寄存器109和位子集寄存器111。组件(例如,主机202、控制电路系统220、处理装置222、存储器资源224和/或存储器阵列230等)中的每一者可分别在本文中称为“设备”。
95.主机202可经由一或多个通道203、205以通信方式耦合到存储器装置204。通道203、205可以是接口或允许数据和/或命令在主机202与存储器装置205之间传送的其它物理连接。例如,用以使得启动待由控制电路系统220执行的运算(例如,用以通过更改位串的相应位子集的数值和/或位量来改变位串精确度的运算、递归运算和/或将位子集写入专用寄存器的运算)的命令可经由通道203、205从主机传送。应注意,在一些实例中,控制电路系统220可在不存在来自主机202的中间命令的情况下响应于经由通道203、205中的一或多者从主机202传送的启动命令而执行运算。也就是说,在控制电路系统220已从主机202接收到用以启动执行运算的命令后,可在不存在来自主机202的额外命令的情况下由控制电路系统220执行运算。
96.如图2b所示,存储器装置204可以包含寄存器存取组件206、高速接口(hsi)208、控制器210、一或多个扩展行地址(xra)组件212、主存储器输入/输出(i/o)电路系统214、行地址选通(ras)/列地址选通(cas)链控制电路系统216、ras/cas链组件218、控制电路系统220、位子集寄存器211和存储器阵列230。如图2所示,控制电路系统220位于物理上不同于存储器阵列230的存储器装置204的区域中。也就是说,在一些实施例中,控制电路系统220位于存储器阵列230的周边位置中。
97.寄存器存取组件206可促进从主机202到存储器装置204和从存储器装置204到主机202的数据传送和提取。例如,寄存器存取组件206可以存储对应于待从存储器装置204传送到主机202或从主机202传送到存储器装置204的数据的地址(或促进地址的查找),例如存储器地址。在一些实施例中,寄存器存取组件206可促进传送和提取待由控制电路系统220运算的数据和/或寄存器存取组件206可促进传送和提取已由控制电路系统220运算以传送到主机202的数据。
98.hsi 208可以提供主机202与存储器装置204之间的接口以用于命令和/或数据经过通道205。hsi 208可以是双倍数据速率(ddr)接口,例如ddr3、ddr4、ddr5等接口。然而,实施例不限于ddr接口,且hsi 208可以是四倍数据速率(qdr)接口、外围组件互连(pci)接口(例如,外围组件互连高速(pcie))接口,或用于在主机202与存储器装置204之间传送命令和/或数据的其它合适的接口。
99.控制器210可以负责执行来自主机202的指令且存取控制电路系统220和/或存储器阵列230。控制器210可以是状态机、定序器或某一其它类型的控制器。控制器210可以从主机202接收命令(例如,经由hsi 208),且基于接收到的命令而控制控制电路系统220和/或存储器阵列230的运算。在一些实施例中,控制器210可以从主机202接收命令以使得使用控制电路系统220执行运算。响应于接收到此类命令,控制器210可以指示控制电路系统220开始执行运算。
100.在一些实施例中,控制器210可以是全局处理控制器且可以将功率管理功能提供到存储器装置204。功率管理功能可以包含控制由存储器装置204和/或存储器阵列230消耗的功率。例如,控制器210可以控制提供到存储器阵列230的各种存储体的功率,以在存储器装置204的运算期间控制存储器阵列230的哪些存储体在不同时间运算。这可以包含在向存储器阵列230的其它存储体提供功率时关闭存储器阵列230的某些存储体以最佳化存储器装置230的功耗。在一些实施例中,控制存储器装置204的功耗的控制器210可以包含控制到存储器装置204的各个核心和/或到控制电路系统220、存储器阵列230等的功率。
101.xra组件212旨在提供额外功能性(例如,外围感测放大器),所述额外功能性感测(例如,读取、存储、高速缓存)存储器阵列230中的存储器单元的数据值且不同于存储器阵列230。xra组件212可以包含锁存器和/或寄存器。例如,额外锁存器可包含于xra组件212中。xra组件212的锁存器可以位于存储器装置204的存储器阵列230的外围上(例如,在一或多个存储器单元存储体的外围上)。
102.主存储器输入/输出(i/o)电路214可以促进数据和/或命令传送到存储器阵列230和从所述存储器阵列传送数据和/或命令。例如,主存储器i/o电路系统214可以促进将位串、数据和/或命令从主机202和/或控制电路系统220传送到存储器阵列230和传送来自所述存储器阵列的位串、数据和/或命令。在一些实施例中,主存储器i/o电路214可以包含一或多个直接存储器存取(dma)组件,其可将位串(例如,作为数据块存储的posit位串)从控制电路系统220传送到存储器阵列230,且反之亦然。
103.在一些实施例中,主存储器i/o电路系统214可以促进将位串、数据和/或命令从存储器阵列230传送到控制电路系统220,使得控制电路系统220可以对位串执行运算。类似地,主存储器i/o电路214可以促进将已由控制电路系统220对其执行一或多个运算的位串传送到存储器阵列230。如本文中更详细描述,运算可以包含通过例如更改与位串相关联的
各个位子集的数值和/或位量来改变位串的数值和/或位量的运算、递归运算、将位子集写入位子集寄存器209的运算等。如上文所描述,在一些实施例中,位串可格式化为unum或posit。
104.行地址选通(ras)/列地址选通(cas)链控制电路系统216和ras/cas链组件218可与存储器阵列230结合使用以锁存行地址和/或列地址来启动存储器循环。在一些实施例中,ras/cas链控制电路系统216和/或ras/cas链组件218可以解析存储器阵列230的行地址和/或列地址,与存储器阵列230相关联的读取和写入运算将在所述行地址和/或列地址处启动或终止。例如,在使用控制电路系统220完成运算后,ras/cas链控制电路系统216和/或ras/cas链组件218可锁存和/或解析存储器阵列230中的具体位置,已由控制电路系统220运算的位串将存储到所述位置。类似地,ras/cas链控制电路系统216和/或ras/cas链组件218可以锁存和/或解析存储器阵列230中的具体位置,在控制电路系统220对位串执行运算之前,位串将从所述位置传送到控制电路系统220。
105.在一些实施例中,位子集寄存器211可以存储与位串的尾数位子集的位相对应的信息。与尾数位相对应的信息可以用于确定对特定应用或计算有用的精确度水平。如果更改精确度水平可以使应用和/或计算受益,则控制电路系统220可以执行“向上转换”或“向下转换”运算,以基于存储在位子集寄存器211中的尾数位信息来更改位串的精确度。然而,实施例不限于此,并且在一些实施例中,位子集寄存器211可以存储与位串的一或多个位子集(例如,状态位子集、指数位子集等)和/或位串的一或多个位子集的部分相对应的信息。
106.控制电路系统220可以包含处理装置(例如,图1所示的处理装置122)和/或存储器资源(例如,图1所示的存储器资源124)。位串(例如,数据、多个位等)可以由控制电路系统220从例如主机202、存储器阵列230和/或外部存储器装置接收且由控制电路系统220存储在例如控制电路系统220的存储器资源中。控制电路系统(例如,控制电路系统220的处理装置222)可以对位串执行更改含于位串中的数值和/或位量以改变与位串相关联的准确度和/或精确度水平的运算(或使得运算在位串上执行)、以及递归运算、将位子集写入位子集寄存器209的运算等。如上文所描述,在一些实施例中,位串可格式化为呈unum或posit格式。
107.如结合图3和4a-4b更详细描述,通用数和posit可以提供改进的准确度,且可需要比以浮点格式表示的对应位串更少的存储空间(例如,可含有更少数目个位)。例如,由浮点数表示的数值可由具有比对应浮点数的位宽更小的位宽的posit表示。因此,通过改变posit位串的精确度以使posit位串的精确度适应将使用其的应用,与利用仅浮点位串的方法相比,可改进存储器装置204的性能,这是因为后续运算(例如,算术和//或逻辑运算)可更快速地在posit位串上执行(例如,因为呈posit格式的数据较少且因此需要更少时间来执行运算),且因为在存储器装置204中需要更少存储器空间来存储呈posit格式的位串,这可释放存储器装置204中的额外空间以用于其它位串、数据和/或待执行的其它运算。
108.在一些实施例中,控制电路系统220可以在位串的精确度改变之后对posit位串执行(或使得执行)算术和/或逻辑运算。例如,控制电路系统220可被配置成执行(或使得执行)算术运算,例如加法、减法、乘法、除法、融合乘法加法、乘法累加、点积单元、大于或小于、绝对值(例如,fabs())、快速傅立叶变换、逆快速傅立叶变换、s型函数、卷积、平方根、指数和/或对数运算;和/或逻辑运算,例如and、or、xor、not等;以及三角运算,例如正弦、余
弦、正切等。如将了解,前述所列运算并不意图是穷尽性的,前述所列运算也不意图是限制性的,且控制电路系统220可被配置成对posit位串执行(或使得执行)其它算术和/或逻辑运算。
109.在一些实施例中,控制电路系统220可以与一或多个机器学习算法的执行结合来执行以上列举的运算。例如,控制电路系统220可以执行与一或多个神经网络相关的运算。如上文所描述,可使用边缘计算装置和/或数据中心来执行此类算法。神经网络可以允许历经时间来训练算法以基于输入信号而确定输出响应。例如,历经时间,神经网路可以基本上习得更好地最大化完成特定目的的机会。这在机器学习应用中可以是有利的,因为神经网路可以历经时间利用新数据加以训练以实现更好地最大化完成特定目的的机会。神经网路可以历经时间加以训练以改进特定任务和/或特定目标的运算。然而,在一些方法中,机器学习(例如,神经网路训练)可以是处理密集型(例如,可能消耗大量计算机处理资源)和/或可以是时间密集型(例如,可能需要执行消耗多个循环的冗长计算)。
110.相反,通过使用控制电路系统220来执行此类运算,例如,通过对呈posit格式的位串执行此类运算,与使用呈浮点格式的位串来执行此类运算的方法相比,可以减少执行运算时消耗的处理资源量和/或时间量。此外,通过改变posit位串的精确度水平,可以基于控制电路系统220执行的运算的类型将控制电路系统220执行的运算调适到期望精确度水平。
111.在非限制性实例中,处理装置(例如,图2a所示的处理装置222)可以耦合到第一寄存器(例如,xra组件212)和第二寄存器(例如,运算累加寄存器209)。处理装置可以使得具有对应于数据值的一或多个位子集和对应于通用数(unum)位串或posit位串的精确度或准确度或两者的一或多个位子集的具有第一位串宽度的位串被写入第一寄存器。处理装置可以使得具有对应于unum或posit位串的精确度或准确度或两者的一或多个位子集的具有第二位串宽度的位串被写入第二寄存器。也就是说,处理装置可以执行压缩运算(例如,“向下转换”运算)以减小第一位串的位宽度从而产生位宽度小于第一位串的位宽度的第二位串。
112.在一些实施例中,处理装置可以使得使用具有第二位串宽度的位串作为用于算术运算或逻辑运算或两者的运算数来执行算术运算或逻辑运算或两者;监测与算术运算或逻辑运算或两者的结果相关联的位量,以确定与算术运算或逻辑运算或两者的结果相关联的位量已超过阈值;以及使得结果的至少一个位子集的至少一部分被写入第三寄存器(例如,位子集寄存器211)。在一些实施例中,可以作为递归运算的一部分执行算术运算或逻辑运算或两者,并且处理装置可以使得执行使用具有第二位串宽度的位串和第二unum或posit位串的递归运算的迭代;确定递归运算的迭代的结果产生位串宽度大于第二位串宽度的所得位串;使得执行减小所得位串的位串宽度的运算;以及将对应于作为执行减小所得位串的位串宽度的运算的一部分而去除的至少一个位的信息写入第三寄存器。
113.在另一非限制性实例中,主机202可以耦合到控制电路系统220(如图1a和1b所示,其可以包含处理装置和存储器资源)。控制电路系统可以使得具有对应于数据值的一或多个位子集和对应于通用数(unum)位串或posit位串的精确度或准确度或两者的一或多个位子集的具有第一位串宽度的位串被写入第一寄存器,例如xra组件212。控制电路系统220可以进一步使得具有对应于unum或posit位串的精确度或准确度或两者的一或多个位子集的具有第二位串宽度的位串被写入第二寄存器,例如位子集寄存器211。在一些实施例中,控制电路系统220可以使得执行运算以将具有第一位串宽度的位串的位串宽度更改为具有对
应于数据值的一或多个位子集的第三位串宽度。在一些实施例中,具有第三位串宽度的位串可以写入寄存器,例如运算累加寄存器209。然后,控制电路系统220可以使得使用具有第三位串宽度的位串作为用于递归算术运算或递归逻辑运算或两者的运算数来执行所述算术运算或所述逻辑运算或两者。
114.如本文中结合图3、4a和4b更详细描述的,对应于数据值的一或多个位子集和对应于unum位串或posit位串的精确度或准确度或两者的一或多个位子集可以包含unum位串或posit位串的符号位子集、状态位子集、指数位子集和尾数位子集。控制电路系统220可以执行使用具有第二位串宽度的位串和第二unum或posit位串的递归运算的迭代;确定递归运算的迭代的结果产生位串宽度大于第二位串宽度的所得位串;执行减小所得位串的位串宽度的运算;和/或将对应于作为执行减小所得位串的位串宽度的运算的一部分而去除的至少一个位的信息写入耦合到处理装置的第三寄存器。
115.如上文结合图2a所描述,例如,尽管实施例不限于这些特定实例,但存储器阵列230可以是dram阵列、sram阵列、stt ram阵列、pcram阵列、tram阵列、rram阵列、nand快闪阵列和/或nor快闪阵列。存储器阵列230可用作图2b所示的计算系统200的主存储器。在一些实施例中,存储器阵列230可被配置成存储由控制电路系统220运算的位串和/或存储待传送到控制电路系统220的位串。
116.图2c是根据本公开的多个实施例的呈包含主机202、存储器装置204、专用集成电路223和现场可编程门阵列221的计算系统200形式的功能框图。组件(例如,主机202、转换组件211、存储器装置204、fpga 221、asic 223等)中的每一者可分别在本文中称为“设备”。
117.如图2c所示,主机202可经由通道203耦合到存储器装置204,所述通道可类似于图2a所示的通道203。现场可编程门阵列(fpga)221可经由通道217耦合到主机202,且专用集成电路(asic)223可经由通道219耦合到主机202。在一些实施例中,通道217和/或通道219可以包含外围串行互连高速(pcie)接口,然而,实施例不限于此,且通道217和/或通道219可以包含其它类型的接口、总线、通信通道等以促进主机202与fpga 221和/或asic 223之间的数据传送。
118.如上文所描述,位于存储器装置204上的电路系统(例如,图2a和2b所示的控制电路系统220)可对posit位串执行运算以更改与posit位串的各个位子集相关联的数值或位量从而改变posit位串的精确度。然而,实施例不限于此,且在一些实施例中,可以通过fpga 221和/或asic 223执行更改与posit位串的各个位子集相关联的数值或位量以改变posit位串的精确度的运算。在执行改变posit位串的精确度的运算之后,可以将位串传送到fpga 221和/或asic223。在接收到posit位串后,fpga 221和/或asic 223可以对接收到的posit位串执行递归算术和/或逻辑运算。
119.如上文所描述,可以通过fpga 221和/或asic 223执行的算术和/或逻辑运算的非限制性实例包含算术运算,例如加法、减法、乘法、除法、融合乘法加法、乘法累加、点积单元、大于或小于、绝对值(例如,fabs())、快速傅立叶变换、逆快速傅立叶变换、s型函数、卷积、平方根、指数和/或对数运算;和/或逻辑运算,例如and、or、xor、not等;以及使用posit位串的三角运算,例如正弦、余弦、正切等。
120.fpga 221可以包含状态机227和/或寄存器229。状态机227可以包含被配置成对输入执行运算并产生输出的一或多个处理装置。例如,fpga 221可被配置成从主机202或存储
器装置204接收posit位串且执行运算以更改与posit位串的各个位子集相关联的数值或位量从而改变posit位串的精确度,和/或对posit位串执行算术和/或逻辑运算以产生所得posit位串,所述所得posit位串表示对接收到的posit位串执行的运算的结果。
121.fpga 221的寄存器229可被配置成在状态机227对接收到的posit位串执行运算之前缓冲和/或存储从主机202接收到的posit位串。另外,fpga 221的寄存器229可被配置成在将结果传送到asic 233外部的电路系统(例如主机202或存储器装置204等)之前缓冲和/或存储所得posit位串,所述所得posit位串表示对接收到的posit位串执行的运算的结果。
122.asic 223可以包含逻辑241和/或高速缓存243。逻辑241可以包含被配置成对输入执行运算并产生输出的电路系统。在一些实施例中,asic 223被配置成从主机202和/或存储器装置204接收posit位串且执行运算以更改与posit位串的各个位子集相关联的数值或位量从而改变posit位串的精确度,和/或对posit位串执行算术和/或逻辑运算以产生所得posit位串,所述所得posit位串表示对接收到的posit位串执行的运算的结果。
123.asic 223的高速缓存243可被配置成在逻辑241对接收到的posit位串执行运算之前缓冲和/或存储从主机202接收到的posit位串。另外,asic 223的高速缓存243可被配置成在将结果传送到asic 233外部的电路系统(例如主机202或存储器装置204等)之前缓冲和/或存储所得posit位串,所述所得posit位串表示对接收到的posit位串执行的运算的结果。
124.虽然fpga 227示为包含状态机227和寄存器229,但在一些实施例中,除了状态机227和/或寄存器229之外或代替所述状态机和/或所述寄存器,fpga 221还可包含例如逻辑241的逻辑和/或例如高速缓存243的高速缓存。类似地,在一些实施例中,除了逻辑241和/或高速缓存243之外或代替所述逻辑和/或所述高速缓存,asic 223还可以包含例如状态机227的状态机和/或例如寄存器229的寄存器。
125.图3是具有es指数位的n位通用数或“unum”的实例。在图3的实例中,n位unum是posit位串331。如图3所示,n位posit 331可以包含符号位集(例如,第一位子集或符号位子集333)、状态位集(例如,第二位子集或状态位子集335)、指数位集(例如,第三位子集或指数位子集337)和尾数位集(例如,第四位子集或尾数位子集339)。尾数位339可以替代地称为“分数部分”或“分数位”,并且可以表示小数点后的位串的一部分(例如,数)。
126.符号位333可以是用于posit的零(0)和用于负数的一(1)。下文结合表1描述状态位335,表1示出(二进制)位串和其相关数字含义k。在表1中,通过位串的延行长度来确定数字含义k。表1的二进制部分中的字母x指示位值与状态的确定无关,因为(二进制)位串响应于连续位翻转或当达到位串的结尾时而终止。例如,在(二进制)位串0010中,位串响应于零翻转到一且接着回到零而终止。因此,最后一个零与状态无关且对于状态考虑的全部是前导相同位和终止位串的第一相反位(如果位串包含此类位)。
127.二进制00000001001x01xx10xx110x11101111数字(k)-4-3-2-10123
128.表1
129.在图3中,状态位335r对应于位串中的相同位,而状态位335r对应于终止位串的相反位。例如,对于表1所示的数字k值-2,状态位r对应于前两个前导零,而状态r位对应于一。如上所述,对应于由表1中的x表示的数字k的最终位与状态无关。
130.如果m对应于位串中相同位的数目,则如果位为零,k=-m。如果位为一,k=m-1。这在表1中进行了说明,其中例如(二进制)位串10xx具有单个一且k=m-1=1-1=0。类似地,(二进制)位串0001包含三个零,因此k=-m=-3。状态可以指示useedk的比例因子,其中下表2中示出used的若干实例值。
131.es01234used222=442=16162=2562562=65536
132.表2
133.指数位337对应于作为无符号数的指数e。与浮点数对比,本文中所描述的指数位337可不具有与其相关联的偏置。因此,本文中所描述的指数位337可以表示通过因子2e的缩放。如图3所示,取决于n位posit 331的状态位335右方保留多少位,可存在多达es个指数位(e1、e2、e3、

、e
es
)。在一些实施例中,这可允许n位posit 331的逐渐变小的准确度,其中在量值上更接近一的数具有比极大或极小数更高的准确度。然而,由于在某些类型的运算中可以不频繁地使用极大或极小数,因此图3所示的n位posit 331的逐渐变小的准确度表现在广泛范围的情形下可以是合乎需要的。
134.尾数位339(或分数位)表示可以是位于指数位337右方的n位posit 331的部分的任何附加位。类似于浮点位串,尾数位339表示分数f,其可类似于分数1.f,其中f包含一后的小数点右方的一或多个位。然而,与浮点位串对比,在图3所示的n位posit 331中,“隐藏位”(例如,一)可始终为一(例如,均一),而浮点位串可以包含具有“隐藏位”零(例如,0.f)的次正规数。
135.如本文所描述,更改符号333位子集、状态335位子集、指数337位子集或尾数339位子集中的一或多者的数值或位量可以改变n位posit 331的精确度。例如,改变n位posit 331中的总位数可以更改n位posit位串331的分辨率。也就是说,通过例如增加与posit位串的组成位子集中的一或多者相关联的数值和/或位量以提高posit位串分辨率,可以将8位posit转换为16位posit。相反,通过减少与posit位串的组成位子集中的一或多者相关联的数值和/或位量,可以将posit位串的分辨率例如从64位分辨率减小到32位分辨率。
136.在一些实施例中,更改与状态335位子集、指数337位子集和/或尾数339位子集中的一或多者相关联的数值和/或位量以改变n位posit 331的精确度可以使得更改状态335位子集、指数337位子集和/或尾数339位子集中的其它者中的至少一者。例如,当更改n位posit 331的精确度以提高n位posit位串331的分辨率时(例如,当执行“向上转换”运算以增大n位posit位串331的位宽时),可以更改与状态335位子集、指数337位子集和/或尾数339位子集中的一或多者相关联的数值和/或位量。
137.在其中n位posit位串331的分辨率增大(例如,n位posit位串331的精确度改变以增大n位posit位串331的位宽)但与指数337位子集相关联的数值或位量并未改变的非限制性实例中,可以增加与尾数339位子集相关联的数值或位量。在至少一个实施例中,当指数338位子集保留不变时增大尾数339位子集的数值和/或位量可以包含将一或多个零位添加到尾数339位子集。
138.在其中通过更改与指数337位子集相关联的数值和/或位量而增大n位posit位串331的分辨率(例如,n位posit位串331的精确度改变以增大n位posit位串331的位宽)的另一非限制性实例中,可以增大或减小与状态335位子集和/或尾数339位子集相关联的数值
431-1、431-2、431-3的位串的最小值,则maxpos可等于useed且minpos可等于在maxpos与
±
∞之间,新的位值可以是maxpos*useed,并且在零与minpos之间,新的位值可以是这些新的位值可以对应于新的状态位335。在现有值x=2m与y=2n之间(其中m和n相差超过一),可以由几何平均值给出新的位值:其对应于新的指数位337。如果新的位值位于其旁边的现有x与y值之间,则新的位值可以表示算术平均值其对应于新的尾数位339。
146.图4b是使用两个指数位的posit构造的实例。在图4b中,仅有投影实数的右半部分,然而应了解,对应于图4b所示的其正对应值的负投影实数可存在于表示围绕图4b所示曲线的y轴的变换的曲线上。图4b所示的posit 431-1、431-2、431-3各自仅包含两个异常值:当位串的所有位均为零时的零(0),以及当位串为一(1)然后全部是零时的
±
∞。应注意,图4所示的posit 431-1、431-2、431-3的数值确切地是useedk。也就是说,图4所示的posit 431-1、431-2、431-3的数值确切地是useed乘由状态(例如,上文结合图3所描述的状态位335)表示的k值的幂。在图4b中,posit 431-1具有es=2,因此posit 431-2具有es=3,因此并且posit 431-3具有es=4,因此
147.作为将位添加到3位posit 431-1以形成图4b的4位posit 431-2的说明性实例,useed=256,因此对应于256的useed的位串具有附加到其上的附加状态位且之前的useed 16具有终止状态位。如上文所描述,在现有值之间,对应位串具有附加到其上的附加指数位。例如,数值1/16、1/4、1和4将具有附加到其上的指数位。也就是说,对应于数值4的最末一是指数位,对应于数值1的最末零是指数位等。这种模式可进一步见于posit 431-3中,其是根据以上规则从4位posit 431-2生成的5位posit。如果另一位添加到图4b中的posit 431-3以生成6位posit,则尾数位339将附加到1/16与16之间的数值。
148.以下是对posit(例如,posit 431)进行解码以获得其数字等效值的非限制性实例。在一些实施例中,对应于posit p的位串是从-2
n-1
到2
n-1
的无符号整数,k是对应于状态位335的整数,并且e是对应于指数位337的无符号整数。如果尾数位339的集合表示为{f1f2...f
fs
}且f是由1.f
1 f2...f
fs
表示的值(例如,由一后跟小数点后跟尾数位339表示的值),则p可由以下等式1给出。
[0149][0150]
下文结合下表3所示的posit位串0000110111011101提供对posit位串进行解码的另一说明性实例。
[0151]
符号状态指数尾数0000110111011101
[0152]
表3
[0153]
在表3中,将posit位串0000110111011101分解成其构成位集(例如,符号位333、状态位335、指数位337和尾数位339)。由于表3所示的posit位串中的es=3(例如,因为存在三个指数位),因此useed=256。因为符号位333为零,所以对应于表3所示的posit位串的数字表述的值是正值。状态位335具有对应于值-3的一连串三个连续零(如上文结合表1所描述)。因此,由状态位335提供的比例因子为256-3
(例如useedk)。指数位337表示作为无符号整数的五(5)且因此提供2e=25=32的附加比例因子。最后,在表3中作为11011101给出的尾数位339表示作为无符号整数的二百二十一(221),因此以上作为f给出的尾数位339为使用这些值和等式1,表3中给出的对应于posit位串的数值为
[0154]
图5是根据本公开的多个实施例的呈包含控制电路系统520的设备500形式的功能框图。本文中,控制电路系统520可以包含处理装置522和存储器资源524,其可类似于图1所示的处理装置122和存储器资源124。处理装置522和/或存储器资源524可分别视为“设备”。在一些实施例中,控制电路系统520可以部署于边缘计算装置上。
[0155]
控制电路系统520可被配置成从主机(例如,本文中在图1和2所示的主机102/202)和/或控制器(例如,本文中在图2所示的控制器210)接收启动对存储于存储器资源524中的数据执行一或多个运算(例如,压缩运算,其可包含更改与posit位串的各个位子集相关联的数值或位量以改变posit位串的准确度和/或精确度的运算、递归运算、将递归运算的结果的各种位子集写入专用寄存器的运算等)的命令(例如,启动命令)。在启动命令已由控制电路系统520接收后,控制电路系统520可在不存在来自主机和/或控制器的中间命令的情况下执行上文所描述的运算。例如,控制电路系统520可以包含足够的处理资源和/或指令,以对存储于存储器资源524中的位串执行运算,而无需从控制电路系统520外部的电路系统接收额外命令。
[0156]
处理装置522可以是算术逻辑单元(alu)、状态机、定序器、控制器、指令集架构或其它类型的控制电路系统。如上文所描述,alu可以包含电路系统以对整数二进制数(如呈posit格式的位串)执行运算(例如,更改与posit位串的各个位子集相关联的数值或位量以改变posit位串的精确度的运算、递归运算、将递归运算的结果的各种位子集写入专用寄存器的运算等),如上文所描述的运算。指令集架构(isa)可以包含精简指令集计算(risc)装置。在其中处理装置522包含risc装置的实施例中,risc装置可以包含可采用如risc-v isa的指令集架构(isa)的处理资源或处理单元,然而,实施例不限于risc-v isa且可使用其它处理装置和/或isa。
[0157]
在一些实施例中,处理装置522可被配置成执行指令(例如,存储于存储器资源524的instr 525部分中的指令)以执行本文中的运算。例如,处理装置524具备足以使得对由控制电路系统520接收的数据(例如,位串)执行此类运算的处理资源。
[0158]
在由处理装置522执行运算后,所得位串可以存储于存储器资源524和/或存储器阵列(例如,本文中在图2所示的存储器阵列230)中。可对存储的所得位串进行寻址以使得其可用于运算的执行。例如,位串可以存储于存储器资源524和/或特定物理地址(其可具有与其对应的对应逻辑地址)处的存储器阵列中以使得在执行运算时可存取位串。
[0159]
在一些实施例中,存储器资源524可以是例如随机存取存储器(例如,ram、sram等)的存储器资源。然而,实施例不限于此,且存储器资源524可以包含各种寄存器、高速缓存、缓冲器和/或存储器阵列(例如,1t1c、2t2c、3t等dram阵列)。本文中,存储器资源524可被配置成从例如主机(例如图2a-2c所示的主机202)和/或存储器阵列(例如图2a和2b所示的存储器阵列230)接收位串。在一些实施例中,存储器资源538可以具有大致256千字节(kb)的大小,然而,实施例不限于这种特定大小,且存储器资源524可以具有大于或小于256kb的大小。
[0160]
存储器资源524可分割成一或多个可寻址存储器区。如图5所示,存储器资源524可分割成可寻址存储器区以使得各种类型的数据可存储于其中。例如,一或多个存储器区可存储由存储器资源524使用的指令(“instr”)525,一或多个存储器区可存储数据526-1、

、526-n(例如,如从主机和/或存储器阵列检索的位串的数据),和/或一或多个存储器区可充当存储器资源538的本地存储器(“local mem”)528部分。尽管图5中展示20个不同的存储器区,但应了解,存储器资源524可分割成任何数目个不同的存储器区。
[0161]
如上文所论述,可响应于由主机、控制器(例如,本文中在图2所示的控制器210)或处理装置522生成的消息和/或命令而从主机和/或存储器阵列检索位串。在一些实施例中,可由处理装置522处理命令和/或消息。在由控制电路系统520接收位串且存储于存储器资源524中后,可由处理装置522处理位串。通过处理装置522处理位串可以包含更改与posit位串的各个位子集相关联的数值或位量以改变posit位串的精确度。
[0162]
在非限制性神经网路训练应用中,控制电路系统520可以将具有es=0的16位posit转换成具有es=0的8位posit以用于神经网路训练应用。在一些方法中,半精确度16位浮点位串可用于神经网路训练,然而,与利用半精确度16位浮点位串进行神经网路训练的一些方法对比,具有es=0的8位posit位串可比半精确度16位浮点位串快两倍到四倍地提供相当的神经网路训练结果。
[0163]
例如,如果控制电路系统520接收到具有es=0的16位posit位串以用于神经网路训练应用,则控制电路系统520可以从16位posit位串的一或多个位子集中选择性地去除位,以将16位posit位串的精确度改变为具有es=0的8位posit位串。应了解,实施例不限于此,且控制电路系统可以改变位串的精确度以产生具有es=1的8位posit位串(或一些其它值)。另外,控制电路系统520可以改变16位posit位串的精确度以产生32位posit位串(或一些其它值)。
[0164]
训练神经网络中使用的常用函数是s型函数f(x)(例如,当x
→‑
∞时渐进逼近零以及当x

∞时渐进逼近1的函数)。可用于神经网路训练应用的s型函数的实例是其可能需要使用半精确度16位浮点位串进行计算的超过一百个时钟周期。然而,使用具有es=0的8位posit,可通过翻转表示x的posit的第一位且向右移位两个位来评估相同函数,相较于使用半精确度16位浮点位串的相同函数的评估,此运算可需要至少更少数量级的时钟信号。
[0165]
在此实例中,通过运算控制电路系统520来改变posit位串的精确度以产生更合乎需要的精确度水平,相较于并不包含被配置成执行此类转换和/或后续运算的控制电路系统520的方法,可以减少处理时间、资源消耗和/或存储空间。处理时间、资源消耗和/或存储
空间的这一减少可以改进计算装置的功能,其中控制电路系统520通过减少在执行此类运算时使用的时钟信号的数目(这可减小由计算装置消耗的功率量和/或执行此类运算的时间量)以及通过释放用于其它任务和功能的处理和/或存储器资源来进行运算。
[0166]
图6a是具有不同位长度的各种posit位串631-1/631-2/631-3的实例。三个posit位串631可以各自以不同的位串长度来表征。例如,如图6a所示,顶部posit位串631-1可以是64位posit位串(例如,具有从图右侧的“0”到图左侧的“63”的位的位串)。如图6a所示,中间posit位串631-2可以是32位posit位串(例如,具有从图右侧的“0”到图左侧的“31”的位的位串),并且如图6a所示,底部posit位串631-3可以是16位posit位串(例如,具有从图右侧的“0”到图左侧的“15”的位的位串)。
[0167]
如本文所描述,可以通过执行运算以对posit位串进行“向上转换”或“向下转换”来更改posit位串631的总长度,如位于图6a所示的posit位串631中的每一者之间的箭头所指示。例如,可以将64位posit位串631-1“向下转换”为32位posit位串631-2,和/或可以将32位posit位串631-2“向下转换”为16位posit位串631-3。类似地,可以将16位posit位串631-3“向上转换”为32位posit位串631-2,和/或可以将32位posit位串631-2“向上转换”为64位posit位串631-1。
[0168]
图6a中所示的posit位串631中的每一者可以包含符号位子集“s”633、状态位子集“r”635、指数位子集“e”637和尾数位子集“m”639。在一些实施例中,对于给定的posit位串631的总长度,状态位子集635和/或尾数位子集639可以不是固定长度。例如,作为执行对posit位串631进行“向上转换”或“向下转换”运算的一部分,可以独立地更改位量,因此更改状态位子集635和/或尾数位子集639的长度。
[0169]
在一些实施例中,可以通过截断一部分(例如,一或多个位子集的一部分、整个位子集等)来对posit位串631的长度“向下转换”以减小posit位串631的总长度。例如,作为将posit位串631-1从64位posit位串“向下转换”为32位posit位串的运算的一部分,可以截断位串631-1的一部分以产生posit位串631-2。
[0170]
类似地,可以将位附加到posit位串631以对posit位串“向上转换”。例如,为了将16位posit位串631-3“向上转换”为32位posit位串631-2,可以将十六个位附加到16位posit位串631-3。在一些实施例中,这些附加位可以为零,但是实施例不限于此特定实例。
[0171]
图6b是具有不同位长度的各种posit位串的另一实例。图6b示出其中posit位串631仅包含符号位子集“s”633和状态位子集“r”635的实施例。即,在一些实施例中,posit位串631可以不包含指数位子集和/或尾数位子集。
[0172]
取决于posit位串631的长度,可以如上所述对posit位串631进行“向上转换”或“向下转换”。在一些实施例中,作为“向上转换”或“向下转换”运算的一部分,可以将posit位串631去除指数位子集和/或尾数位子集,从而产生图6b所示的仅包含符号位子集633和状态位子集635的posit位串631。
[0173]
如上文所描述,可在递归运算的各个阶段执行“向上转换”或“向下转换”运算。例如,可以响应于完成递归运算的迭代而执行“向上转换”运算,以在执行递归运算的后续迭代之前恢复结果的精确度或准确度的量,但实施例不限于此。
[0174]
例如,可作为结合机器学习应用和/或结合调用待传送到数据中心或从数据中心传送的数据的传送应用来压缩位串的运算的部分来执行“向上转换”或“向下转换”运算。如
上文所描述,可执行“向上转换”或“向下转换”运算以更改位串(例如,posit位串)的位宽度,以在可结合机器学习应用和/或结合调用数据中心的数据传送而执行的递归运算的执行期间改进计算系统的性能。
[0175]
图7是根据本公开的多个实施例的表示用于位串压缩的实例方法750的流程图。可以通过处理逻辑来执行方法750,所述处理逻辑可以包含硬件(例如处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如在处理装置上运行或执行的指令),或其组合。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改过程的次序。因此,应理解,所示实施例仅为实例,且所示过程可以不同次序进行,且一些过程可并行地进行。另外,在各个实施例中可以省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。
[0176]
在一些实施例中,方法750可以包含确定使用根据通用数格式或posit格式而格式化的位串来执行特定运算,以将与位串相关联的位宽度从第一位宽度更改为第二位宽度。
[0177]
在框752,方法750可以包含压缩根据通用数格式或posit格式而格式化的位串,以将与位串相关联的位宽度从第一位宽度更改为第二位宽度。在一些实施例中,方法750可以包含作为执行将数据传送到数据中心的数据传送操作的一部分而压缩位串。
[0178]
在框753,方法750可以包含将具有第二位宽度的位串写入第一寄存器。在一些实施例中,第一位串宽度可以大于第二位串宽度。此外,在一些实施例中,可以基于接收到用户生成的命令进行写入第一寄存器或第二寄存器或两者。
[0179]
在框754,方法750可以包含使用具有第二位串宽度的位串执行算术运算或逻辑运算或两者。在一些实施例中,方法750可以包含响应于算术运算或逻辑运算或两者的完成,使用包括结果的一或多个位子集的部分的位串来恢复具有第一位串宽度或第二位串宽度或两者的位串的精确度或准确度。如上文所描述,执行算术运算或逻辑运算或两者可以是执行机器学习应用的一部分。
[0180]
方法750可进一步包含监测运算的结果的位量。在框756,方法750可以包含确定对应于数据值的一或多个位子集和对应于结果的精确度或准确度或两者的一或多个位子集已达到阈值位值。
[0181]
在框757,方法750可以包含响应于所述确定而将包括结果的一或多个位子集的至少一部分的位串写入第二寄存器。
[0182]
尽管已在本文中说明并描述了具体实施例,但所属领域的一般技术人员应了解,经计算以实现相同结果的布置可取代所示的具体实施例。本公开意在覆盖本公开的一或多个实施例的改编或变化。应理解,以上描述是以说明性方式进行的,而不是限制性的。在查阅以上描述后,以上实施例和本文未具体描述的其它实施例的组合对于所属领域的技术人员来说将显而易见。本公开的一或多个实施例的范围包含在其中使用以上结构和过程的其它应用。因此,本公开的一或多个实施例的范围应参考所附权利要求书以及此类权利要求被赋予的等同物的完整范围而确定。
[0183]
在前述具体实施方式中,出于简化本公开的目的而将一些特征一并归到单个实施例中。本公开的这一方法不应被理解为反映本公开的所公开实施例必须比在每项权利要求中明确叙述那样使用更多特征的意图。相反,如所附权利要求书所反映,本发明主题在于单个所公开实施例的不到全部的特征。因此,所附权利要求书在此并入此具体实施方式中,其
中每项权利要求其自身代表单独的实施例。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献