位串转换

文档序号:909871 发布日期:2021-02-26 浏览:1次 >En<

阅读说明:本技术 位串转换 (Bit string conversion ) 是由 V·S·拉梅什 K·B·帕克 于 2020-08-19 设计创作,主要内容包括:描述与位串转换相关的系统、设备和方法。电路系统可以对例如通用数和/或posit位串的位串执行运算以更改位串的精确度水平(例如,动态范围、分辨率等)。例如,位串转换可以包含通过耦合到逻辑电路系统的存储器资源接收具有第一位串长度的第一位串。所述第一位量可以包括第一位子集、第二位子集、第三位子集和第四位子集。所述逻辑电路系统监测与所述位串的至少一个位子集相对应的数值以确定与所述数据相对应的动态范围和/或与所述数据相对应的精确度,并且至少部分地基于所确定的所述数据的动态范围、所述数据的所述精确度而生成具有第二位串长度的第二位串。(Systems, devices, and methods related to bit string conversion are described. Circuitry may perform operations on a bit string, such as a universal number and/or posit bit string, to alter the level of accuracy (e.g., dynamic range, resolution, etc.) of the bit string. For example, the bit string conversion may include receiving a first bit string having a first bit string length through a memory resource coupled to the logic circuitry. The first bit quantity may include a first subset of bits, a second subset of bits, a third subset of bits, and a fourth subset of bits. The logic circuitry monitors values corresponding to at least a subset of bits of the bit string to determine a dynamic range corresponding to the data and/or an accuracy corresponding to the data, and generates a second bit string having a second bit string length based at least in part on the determined dynamic range of the data, the accuracy of the data.)

位串转换

技术领域

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

背景技术

存储器装置通常提供为计算机或其它电子系统中的内部半导体集成电路。存在许多不同类型的存储器,包含易失性和非易失性存储器。易失性存储器会需要功率以维持其数据(例如主机数据、误差数据等等),并包含随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)和闸流体随机存取存储器(TRAM)等等。非易失性存储器可通过在未供电时保存所存储数据来提供永久数据,且可以包含NAND快闪存储器、NOR快闪存储器和电阻可变存储器,例如相变随机存取存储器(PCRAM)、电阻性随机存取存储器(RRAM)和磁阻随机存取存储器(MRAM),例如自旋力矩传送随机存取存储器(STT RAM)等等。

存储器装置可耦合到主机(例如,主机计算装置)以存储数据、命令和/或指令以在计算机或电子系统处于运算中时供主机使用。例如,数据、命令和/或指令可在计算或其它电子系统的运算期间在主机与存储器装置之间传送。

发明内容

在一个方面,本申请提供一种用于位串转换的方法,其包括:通过耦合到逻辑电路系统122、222、522的存储器资源124、224、524接收包括具有第一位串长度的第一位串331、631-1的数据,其中第一位量包括第一位子集333、633、第二位子集335、635、第三位子集337、637和第四位子集339、639;通过所述逻辑电路系统122、222、522监测与所述位串331、631-1的至少一个位子集333、335、337、339相对应的数值,以确定与所述数据相对应的动态范围、与所述数据相对应的精确度或两者;以及至少部分地基于所确定的所述数据的动态范围、所述数据的所述精确度或两者,通过增大或减小所述第一位串331、631-1的位量、与所述第一位串331、631-1的至少一个位子集333、335、337、339相对应的数值或两者而进行更改以生成具有第二位串长度的第二位串331、631-2。

在另一方面,本申请提供一种用于位串转换的设备,其包括:存储器资源124、224、524,其经配置以接收包括具有与第一位串长度相对应的第一位量的位串331、631-1的数据;以及逻辑电路系统122、222、522,其耦合到所述存储器资源,其中所述逻辑电路系统122、222、522经配置以:监测与所述位串331、631-1的至少一个位子集333、335、337、339、6533、635、637、639相对应的数值,以确定与所述数据相对应的动态范围、与所述数据相对应的精确度或两者;以及至少部分地基于所确定的所述数据的动态范围、所述数据的所述精确度或两者,将所述第一位量更改为与第二位串长度相对应的第二位量;以及寄存器213,其耦合到所述逻辑电路系统122、222、522,其中所述寄存器213经配置以:存储与所述第一位串331、631-1的相应位子集333、335、337、339、6533、635、637、639相对应的类别间隔信息,所述类别间隔信息包含与对应于所述第一位串331、631-1的所述相应位子集333、335、337、339、6533、635、637、639的位量相关联的所述数值;以及响应于由所述逻辑电路系统122、222、522生成的指令而提供对所述类别间隔信息的存取,以确定与所述数据相对应的所述动态范围、所述数据的所述精确度或两者。

在另一方面,本申请提供一种用于位串转换的系统,其包括:主机202;控制电路系统120、220,其包括逻辑电路系统122、222、522和存储器资源124、224、524且耦合到所述主机202,其中所述控制电路系统120、220经配置以:使得将包括具有与第一位串长度相对应的第一位量的第一位串331、631-1的数据存储在所述存储器资源124、224、524中;监测与所述第一位串331、631-1的至少一个位子集333、335、337、339、6533、635、637、639相对应的数值,以确定与所述数据相对应的动态范围、所述数据的精确度,或两者;从所述主机202接收用信号表示请求所述数据以供主机应用使用的命令;基于所述数据的所述动态范围、所述数据的所述精确度、所述主机应用的范围或其组合更改与所述第一位串331、631-1相关联的位量,以产生具有与第二位串长度相对应的第二位量的第二位串331、631-2;以及使得将所述第二位串331、631-2传送到所述主机202以履行所述主机命令。

附图说明

图1A是根据本公开的多个实施例的呈包含逻辑电路系统和存储器资源的设备形式的功能框图。

图1B是根据本公开的多个实施例的呈包含逻辑电路系统和存储器资源的设备形式的另一功能框图。

图2A是根据本公开的多个实施例的呈包含含有主机和存储器装置的设备的计算系统形式的功能框图。

图2B是根据本公开的多个实施例的呈包含含有主机和存储器装置的设备的计算系统形式的另一功能框图。

图2C是根据本公开的多个实施例的呈包含主机、存储器装置、专用集成电路和现场可编程门阵列的计算系统形式的功能框图。

图3是具有es指数位的n位posit的实例。

图4A是3位posit的正值的实例。

图4B是使用两个指数位的posit构造的实例。

图5是根据本公开的多个实施例的呈加速电路系统形式的功能框图。

图6A是具有不同位长度的各种posit位串的实例。

图6B是具有不同位长度的各种posit位串的另一实例。

图7是根据本公开的多个实施例的表示用于位串转换的实例方法的流程图。

具体实施方式

描述与位串转换相关的系统、设备和方法。电路系统可以对例如通用数和/或posit位串的位串执行运算以更改位串的精确度水平(例如,动态范围、分辨率等)。例如,位串转换可以包含:通过耦合到逻辑电路系统的存储器资源接收具有与第一精确度水平相对应的第一位量的第一位串,通过逻辑电路系统监测与位串的至少一个位子集相对应的数值以确定与数据相对应的动态范围,以及至少部分地基于所确定的数据的动态范围,通过增加或减少第一位流中的总位量或与至少一个位子集相对应的位量将第一位量更改为与第二精确度水平相对应的第二位量。

如本文中所使用,“精确度”是指用于使用位串执行计算的位串中的位量。例如,如果在使用16位位串执行计算时使用所述位串中的每个位,则所述位串可以被称为具有16位精确度。然而,如果在使用16位位串执行计算时仅使用所述位串的8位(例如,如果位串的前8位为零),则所述位串可以被称为具有8位精确度。随着位串的精确度提高,可以以更高的准确度执行计算。相反,随着位串的精确度降低,可以使用较低的准确度来执行计算。例如,8位位串可以与由二百五十六(256)个精确度步长组成的数据范围相对应,而16位位串可以与由六万五千五百三十六(65,536)个精确度步长组成的数据范围相对应。

如本文中所使用,“动态范围”或“数据的动态范围”是指可用于具有与其相关联的特定精确度的位串的最大值与最小值之间的比率。例如,可以由具有与其相关联的特定精确度的位串表示的最大数值可以确定位串的数据格式的动态范围。对于通用数(例如,posit)格式的位串,动态范围可以由位串的指数位子集(例如,下文结合图3和图4A-4B描述的es)的数值来确定。

动态范围和/或精确度可以具有与其相关联的可变范围阈值。例如,数据的动态范围可以与使用数据的应用和/或使用数据的各种计算相对应。这可能是由于以下事实:一个应用期望的动态范围可能不同于另一应用期望的动态范围,和/或因为一些计算可能需要不同的数据动态范围。因此,本文中的实施例可以允许更改数据的动态范围以适合不同应用和/或计算的要求。与不允许操纵数据的动态范围以适合不同应用和/或计算的要求的方法对比,本文中的实施例可以通过允许基于要使用数据的应用和/或计算而改变数据的动态范围来提高资源使用和/或数据精确度。

在一些实施例中,可以基于与位串相关联的数据模式执行位串转换。如本文中所使用,“数据模式”是指可用于推断位串特征的与位串相对应的特定位序列或位布置。例如,如果位串具有重复位的阈值量(例如,位串的最后位全是零,位串的最后位是非零等),则可称位串具有与其相对应的特定数据模式。在非限制性实例中,第一位串11010000和第二位串10110000可具有相同数据模式,因为位串中的每一个的最后四个位全是零。在另一非限制性实例中,第一位串10111010111和第二位串01011010111可具有相同位模式,因为最末三个位全是一。

在又其它实施例中,可以基于与数据相关联(例如,与一或多个位串相关联)的类别间隔信息来执行位串转换。如本文中所使用,“类别间隔信息”通常是指在与数据的不同动态范围和/或精确度水平相对应的值的范围内的细分。类别间隔信息可以存储在计算系统内的寄存器中,并且可以用于确定是否将位串转换应用于表示数据的位串以更改位串的动态范围或精确度。

可应用于位串的位串转换的非限制性实例包含通过去除位或将位添加到位串来减少或延长位串的运算。例如,如果期望位串的较低精确度和/或减小的动态范围,则可以将位串中的总位量减少比例因子(例如,减少一半、减少四倍等),和/或如果期望增加位串的精确度和/或动态范围,则可以将位串中的总位量增加比例因子(例如,加倍、增加四倍等)。如本文中所使用,“比例因子”是指可用于乘以或除以位串中的位量以生成具有更多或更少位的位串的数。

然而,实施例不限于此,并且在一些实施例中,作为执行位串转换的一部分,可以将一或多个位添加到位串的特定位子集中或从其去除。例如,如果使用了位串的动态范围的很大一部分,但期望精确度较低,则可以增加位串的指数位子集,并可以减少位串的总位量。如果位串的尾数位子集中超过阈值位量为零并且使用了位串的动态范围的很大一部分,则可以增加位串的指数位子集以提高位串的整体精确度。此外,在一些实施例中,可以利用电路系统来分析位串将用于的应用和/或计算的类型,以基于使用位串的应用类型和/或计算类型来确定最佳位串大小。然后,在应用调用位串或在计算中使用位串之前,可以更改位串的位量,从而为位串提供优化的动态范围和/或精确度。

例如,位串的状态位子集中的小变化可以对位串的动态范围和/或精确度带来相对较大的提高。因此,在一些实施例中,相对较小的变化(有关状态位子集中的位量或是有关与状态位子集相关联的数值)可以极大地影响位串的动态范围和/或精确度。此外,对位串的尾数位子集的更改也会极大地影响位串的动态范围和/或精确度。如本文中更详细地讨论的,尤其可以通过更改这些位子集来实现基于将使用位串的应用对位串进行转换以增加或减小位串的长度。

计算系统可以执行范围广泛的运算,其可以包含各种计算,这可能需要不同的准确度。然而,计算系统具有有限数量的存储器,在所述存储器中存储在其上执行计算的运算数。为了促进在由有限存储器资源施加的约束内对由计算系统存储的运算数执行运算,可以特定格式存储运算数。为简单起见,一种此类格式被称为“浮点”格式或“浮点数(float)”(例如,IEEE 754浮点格式)。

根据浮点标准,在三个整数集或位集(一个位集被称为“基数”,一个位集被称为“指数”,且一个位集被称为“尾数”(或有效数字))方面表示位串(例如,可以表示数的位串),例如二进制数串。整数集或位集定义其中存储二进制数串的格式,可在本文中称为“数字格式”或简单称为“格式”。例如,定义浮点位串的上文描述的位的三个整数集(例如,基数、指数和尾数)可以被称为格式(例如,第一格式)。如下文更详细地描述,posit位串可以包含四个整数集或位集(例如,符号、状态、指数和尾数),其也可以被称为“数字格式”或“格式”(例如,第二格式)。另外,根据浮点标准,可在位串中包含两个无限值(例如,+∞和-∞)和/或两种“非数字值(NaN)”:静默NaN和信令NaN。

浮点标准已在计算系统中使用数年,且定义了用于由许多计算系统进行的计算的算术格式、互换格式、舍入规则、运算和异常处理。算术格式可以包含二进制和/或十进制浮点数据,其可以包含有限数字、无线值和/或特定NaN值。互换格式可以包含可用于交换浮点数据的编码(例如,位串)。舍入规则可以包含当在算术运算和/或转换运算期间舍入数字时可满足的一组特性。浮点运算可以包含算术运算和/或其它计算运算,如三角函数。异常处理可以包含异常条件的指示,如除以零、溢出等。

浮点的替代格式被称为“通用数”(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的指数和分数位中呈现的可变位长度相较于浮点数可能需要额外管理。

II型unum通常与浮点数不相容,然而,II型unum可允许基于投影实数的简洁数学设计。II型unum可以包含n位并且可以用“u晶格”加以描述,其中圆形投影的象限填充有2n -3-1个实数的有序集。II型unum的值可围绕将圆形投影等分的轴线反射,使得正值位于圆形投影的右上象限中,而其负对应值位于圆形投影的左上象限中。表示II型unum的圆形投影的下半部可以包含位于圆形投影的上半部中的值的倒数。II型unum通常对大多数运算都依赖于查询表。因此,在一些情况下,查询表的大小会限制II型unum的效果。然而,II型unum与根据一些条件的浮点数相比可提供改进的计算功能。

III型unum格式在本文中被称为“posit格式”或简单称为“posit”。与浮点位串对比,posit可根据某些条件而允许比具有相同位宽的浮点数更高的精确度(例如,更宽动态范围、更高分辨率和/或更高准确度)。这可允许由计算系统执行的运算当使用posit时以比使用浮点数时更高的速率(例如,更快)执行,这转而可通过例如减少在执行运算时使用的时钟周期的数目从而减少执行此类运算时的处理时间和/或消耗的功率来提高计算系统的性能。另外,与浮点数相比,在计算系统中使用posit可以实现更高的准确度和/或精确度,这与某些方法(例如,依赖于浮点格式位串的方法)相比可以进一步改进计算系统的功能。

posit可基于包含于posit中的总位量和/或整数集或位集的量而在精确度和准确度上明显变化。另外,posit可以生成较大的动态范围。根据某些条件,posit的准确度、精确度和/或动态范围可大于浮点数或其它数字格式的准确度、精确度和/或动态范围,如本文中更详细描述。可以例如基于将要使用posit的应用来控制posit的可变准确度、精确度和/或动态范围。另外,posit可以减少或排除上溢、下溢、NaN和/或与浮点数和其它数字格式相关联的其它极端情况。此外,与浮点数或其它数字格式相比,使用posit可以允许使用更少的位来表示数值(例如,数)。

在一些实施例中,这些特征可允许posit是相当可重新配置的,与依赖于浮点数或其它数字格式的方法相比,这可以提供改进的应用性能。另外,与浮点数或其它数字格式相比,posit的这些特征可以在机器学习应用中提供改进的性能。例如,在计算性能至关重要的机器学习应用中,可以使用posit来训练网络(例如,神经网络),其准确度和/或精确度与浮点数或其它数字格式相同或更高但使用比浮点数或其它数字格式更少的位。另外,可以使用具有比浮点数或其它数字格式更少的位(例如,更小位宽)的posit来实现机器学习情形中的推断运算。与浮点数或其它数字格式相比,通过使用更少的位来实现相同或增强的结果,因此使用posit可以减少执行运算时的时间量和/或减小应用中所需的存储器空间的量,这可改进其中采用posit的计算系统的整体功能。

本文中的实施例针对经配置以对位串执行各种运算以提高计算装置的整体功能的硬件电路系统(例如,逻辑电路系统和/或机器学习组件)。例如,本文中的实施例针对经配置以执行运算来更改数值和/或位串的位量以改变位串的精确度水平的硬件电路系统。例如,本文中的实施例可以允许更改与位串的相应位子集相关联的数值和/或位量,以改变位串的精确度水平和/或位串的动态范围。通过改变位串中的各个位子集的数值和/或位量,可以控制位串的精确度和/或位串的动态范围,并因此控制使用位串执行的算术和/或逻辑运算的结果的精确度和/或动态范围。

在一些实施例中,硬件电路系统可以基于确定位串具有与其相关联的特定动态范围而使与所述位串相关联的数值和/或位量改变。例如,硬件电路系统可以监测位串并确定位串的动态范围是大于还是小于位串的当前动态范围。响应于确定位串的动态范围大于或小于位串的当前动态范围,硬件电路系统可以更改与位串的一或多个位子集相关联的数值和/或位量以更改位串的动态范围。

通过允许在期望精确度和/或准确度的应用中提高所执行算术和/或逻辑运算的精确度和/或准确度,改变在执行算术和/或逻辑运算时使用的位串的动态范围和/或精确度可以促进计算系统的性能提高。相反,在其中精确度和/或准确度不太重要的应用中,通过提高执行运算的速度(例如,具有较小位宽的位串在执行算术和/或逻辑运算时可能需要较少的时钟周期)和/或在执行算术和/或逻辑运算期间减小位串的所需存储空间,改变执行算术和/或逻辑运算时使用的位串的精确度可以促进提高计算系统的性能。

在一些方法中,可能不改变位串的精确度,这可能导致升高功耗和/或相对较长处理时间。例如,如算术逻辑单元的硬件电路系统可与现场可编程门阵列(FPGA)结合使用,以使用位串来执行运算。然而,FPGA在某些情况下可能会形成处理瓶颈。查询寄存器运算的位长度会进一步加剧这种情况,在一些方法中,所述位长度可在64位与约4096位之间变化。为了补救在某些情况下可能出现的这些和其它问题,本文中的实施例可以允许位串的精确度和/或动态范围基于位串所用于的应用、期望的功耗水平、期望的处理时间、请求位串的计算或其它参数而动态地变化。

例如,如果应用正在运行指数位子集值为4的32位posit位串(例如,(32,4)posit位串),则本文中的实施例可允许posit位串的精确度和/或动态范围减半为(16,2)posit位串。通过将(32,4)posit位串“向下转换”为(16,2)位串,对应查询寄存器的大小也可从例如2048位减少到512位。

对位串进行“向下转换”的运算的实例场景可以包含其中使用了位串的大部分动态范围但是特定应用或计算需要较小的精确度的场景。在这种情况下,可以减小位串的总长度,并且可以增加指数位子集。可发生对位串进行“向下转换”的运算的另一场景是当使用位串的状态位子集的小于阈值部分的k值(本文中结合图3和4A-4B描述)并且不需要小数精确度时,可以减小位串的总长度,并且可以将指数位子集保持恒定。可发生对位串进行“向下转换”的运算的又一场景是当与位串相对应的数据倾向于保持在useed与之间时,可以减小位串的总长度。

如果应用正在运行较低阶位宽和/或精确度的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位串进行“向上转换”还是“向下转换”可以根据应用而定。

在一些实施例中,机器学习组件可以是可以存取一或多个计数器的一件硬件(例如,状态机、ALU、FPGA、精简指令集计算架构等)。可以向机器学习组件提供对正被处理的位串(例如,通过其执行运算的位串)的计算寄存器的存取。

在实例中,机器学习组件可以确定尾数位子集和/或指数位子集的值大部分是零以用于使用位串执行的运算,且可响应于检测到在指数位子集和/或尾数位子集中具有大于阈值量的零的每一位串而使得计数器递增。在已达到阈值计数器值(例如,10、20、100等)后,机器学习组件可使得位串的精确度向下转换到较小位宽。例如,如果运算使用(32,4)posit位串且计数器已递增到阈值,则机器学习组件可使得posit位串转换为(16,2)posit位串。这可节省处理资源和/或时间而不牺牲太多(若存在)准确度,这是由于正在处理的大多数位串在尾数位子集和/或指数位子集中大部分为零。

在一些实施例中,如果指数位子集包含奇数(例如,(32,3)posit位串),则可以给出关于当执行“向下转换”时将使用什么指数位子集值的选择。例如,机器学习组件可使得呈现选择,其中要求用户使用例如指数位子集值或零或一。然而,实施例不限于此,且在一些实施例中,机器学习组件可以基于机器学习组件在监测位串时获得的信息而自动地确定将使用什么指数位子集值。在一些实施例中,机器学习组件可以确保指数位子集的值永远不会低于零。

在其它实施例中,机器学习组件可以监测与位串的状态位子集、尾数位子集和/或指数位子集相对应的数据,以确定是否可以更改位串的动态范围和/或精确度。例如,通过监测k个值(本文中结合图3和4A-4B描述),有可能收集对特定数据集的所需动态范围的理解。另外,通过监测尾数位子集的行为,有可能收集对特定数据集的所需精确度的理解。

在一些实施例中,可以在不使用外部输入的情况下,随时间推移训练机器学习组件以执行运算从而改变posit位串的动态范围和/或精确度。例如,在一些实施例中,可以排除计数器,并且机器学习组件可以基于位串的过去行为和/或与位串相关联的数据模式而执行运算(例如,“向上转换”和/或“向下转换”运算)以改变精确度。

在本公开的以下详细描述中,参考形成本公开的一部分的附图,且图中通过说明的方式示出了可实践本公开的一或多个实施例的方式。足够详细地描述这些实施例以使得所属领域的一般技术人员能够实践本公开的实施例,且应理解,可利用其它实施例,且可在不脱离本公开的范围的情况下进行工艺、电气和结构改变。

如本文中所使用,如“N”、“M”等的指定符,尤其是关于图式中的参考标号,指示可以包含多个如此指定的特定特征。还应理解,本文中所使用的术语仅出于描述特定实施例的目的,而不意在作为限制。如本文中所使用,除非上下文另外明确规定,否则单数形式“一(a/an)”和“所述(the)”可以包含单数个指示物和多个指示物两者。另外,“多个”、“至少一个”和“一或多个”(例如,多个存储器存储体)可指一或多个存储器存储体,而“多个”意在指代超过一个此类事物。此外,贯穿本申请在容许意义上(即,可能、能够)而非在强制性意义上(即,必须)使用词语“可(can/may)”。术语“包含”和其派生词意指“包含但不限于”。视上下文而定,术语“耦合(coupled/coupling)”意味着物理上直接或间接连接或存取和移动(传输)命令和/或数据。视上下文而定,术语“位串”、“数据”和“数据值”在本文中可互换地使用且可具有相同含义。另外,视上下文而定,术语“位集”、“位子集”和“部分”(在位串的位的一部分的情形下)在本文中可互换使用且可具有相同含义。

本文中的图遵循编号定则,其中第一一或多个数字对应于图号,其余数字标识附图中的元件或组件。可通过使用类似数字来标识不同附图之间的类似元件或组件。例如,120可以指代图1中的元件“20”,且类似元件在图2中可表示为220。通常在本文中可用单个元件符号指代一组或多个类似元件或组件。例如,多个参考元件433-1、433-2、…、433-N可总体称为433。如应了解,可以添加、交换和/或排除本文中的各种实施例中示出的元件,从而提供本公开的多个额外实施例。另外,图中提供的元件的比例和/或相对尺度意在说明本公开的某些实施例,而不应视作限制性意义。

图1是根据本公开的多个实施例的呈包含位串转换电路系统120的设备100形式的功能框图。如本文中所使用,“设备”可以指但不限于多种结构或结构的组合中的任何一种,例如电路或电路系统、一或多个裸片、一或多个模块、一或多个装置或一或多个系统。如图1中所示,设备100可以包含位串转换电路系统120,其可以包含逻辑电路系统122和存储器资源124。

存储器资源124可以包含易失性存储器资源、非易失性存储器资源或易失性与非易失性存储器资源的组合。在一些实施例中,存储器资源可以是随机存取存储器(RAM),例如静态随机存取存储器(SRAM)。然而,实施例不限于此,并且存储器资源可以是高速缓存、一或多个寄存器、NVRAM、ReRAM、FeRAM、MRAM、PCM、包含阵列自选存储器(SSM)单元的“新兴”存储器装置等,或其组合。电阻可变存储器装置可结合可堆叠交叉网格化数据存取阵列基于体电阻的改变来进行位存储。另外,与许多基于快闪的存储器对比,电阻可变非易失性存储器可执行就地写入运算,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。与基于快闪的存储器和电阻可变存储器对比,自选存储器单元可以包含具有充当存储器单元的开关和存储元件两者的单个硫族化物材料的存储器单元。

存储器资源124可以存储一或多个位串。在一些实施例中,可以根据通用数(unum)或posit格式来存储由存储器资源124存储的位串。如本文中所使用,以unum(例如,III型unum)或posit格式存储的位串可以包含若干位的子集或“位子集”。例如,通用数或posit位串可以包含被称为“符号”或“符号部分”的位子集、被称为“状态”或“状态部分”的位子集、被称为“指数”或“指数部分”的位子集,以及被称为“尾数”或“尾数部分”(或有效数字)的位子集。如本文中所使用,位子集意在指代包含于位串中的位子集。本文中结合图3和4A-4B更详细地描述符号、状态、指数和尾数位集的实例。然而,实施例不限于此,且存储器资源可以如浮点格式或其它合适的格式的其它格式存储位串。

耦合到存储器资源124的逻辑电路系统122可以在本文中以一或多个处理器(例如,处理装置或处理单元)、例如专用集成电路(ASIC)的集成电路、现场可编程门阵列(FPGA)、精简指令集计算装置(RISC)、芯片上系统,或经配置以执行更详细地描述的运算的硬件和/或电路系统的其它组合的形式提供。例如,逻辑电路系统122可经配置以更改由存储器资源124存储的位串的数值或位量,以改变与位串相关联的精确度水平。改变位串的精确度水平可以包含添加位和/或从位串去除位以更改与位串相关联的动态范围、位串的分辨率,或位串的对应于与位串相关联的精确度或准确度水平的其它特性。

在一些实施例中,存储器资源124可经配置以接收包括具有与第一精确度水平相对应的第一位量的位串的数据。逻辑电路系统122可经配置以将第一位量更改为与第二精确度水平相对应的第二位量。在一些实施例中,第一精确度水平或第二精确度水平可以大于第一精确度水平或第二精确度水平中的另一者。例如,第一精确度水平可以高于第二精确度水平,且反之亦然。

在非限制性实例中,第一精确度水平可以对应于具有32位的位宽的位串,且第二精确度水平可以对应于具有16位的位宽的位串。类似地,在另一非限制性实例中,第一精确度水平可以对应于具有8位的位宽的位串,且第二精确度水平可以对应于具有16位的位宽的位串。实例不限于这些具体精确度水平,且第一精确度水平和/或第二精确度水平可以对应于具有8位、16位、32位、64位等的位宽的位串。

在一些实施例中,逻辑电路系统122可使得添加一或多个位或从位串的至少一个位子集去除一或多个位,以将位串的位量从第一位量更改为第二位量。例如,逻辑电路系统122可使得将一或多个位添加到对应于符号的位子集、对应于状态的位子集、对应于指数的位子集和/或对应于位串的尾数的位子集,如本文中结合图2A-2C、3、4A-4B和5更详细描述的。

逻辑电路系统122还可经配置以确定对于具有第二位量的位串的最大正值(例如,结合图4A和4B描述的maxpos)和/或确定对于具有第二位量的位串的最小正值(例如,结合图4A和4B描述的minpos)。逻辑电路系统122可随后将第二位量更改为第三位量,所述第三位量对应于位串的最大正值或位串的最小正值。例如,在逻辑电路系统122已更改位串的位量之后,可有必要将所得位串的位宽裁剪为与位串相关联的最小正值以避免将具有小数值或小位量的位串转换为零。类似地,可有必要将所得位串的位宽限制在与位串相关联的最大正值以避免位串的位宽变得过大的情况。

图1B是根据本公开的多个实施例的呈包含逻辑电路系统122和存储器资源124的设备100形式的另一功能框图。位串转换电路系统120可进一步包含机器学习组件109和/或计数器111。在一些实施例中,机器学习组件109和/或计数器可提供作为逻辑电路系统122的部分,然而,实施例不限于此,且机器学习组件109和/或计数器111可物理上不同于但耦合到逻辑电路系统122和/或存储器资源124。

在一些实施例中,机器学习组件109可以监测使用位串(如posit位串)执行的运算的特征。例如,机器学习组件109可以“窥探(snoop)”其中存储在执行各种算术和/或逻辑运算时用作运算数的posit位串的寄存器(例如,存储器资源124中的位置)。机器学习组件109可以学习与位串相关联的数据模式,并且可以确定是否启动运算以通过更改与位串的一或多个位子集相关联的位的数值或量来改变位串的精确度。

例如,如果机器学习组件109确定正由位串转换电路系统120存储或运算的位串具有不与使用位串的算术运算和/或逻辑运算相关的阈值位量,则机器学习组件109可使得运算改变待执行的位串的精确度。在此实例中,机器学习组件109可以确定位串的阈值位量为零,且可使得将位串转换为具有较小位宽的位串。这可在使用位串执行运算时减小存储空间、功耗和/或时间量,因为机器学习组件109可使得位串的位宽减小,由此减小位串中的无关位的量。

在另一实例中,机器学习组件109可以确定位串的位宽太窄而无法有效地执行算术和/或逻辑运算,并且可以改变位串的精确度以增大位串的一或多个位子集的位的数值和/或量。例如,机器学习组件109可以响应于确定位串的较高精确度可以是适当的而将位串从8位位串转换为16位位串、从16位位串转换为32位位串等。这可在使用位串的运算中提供改进的准确度。

在一些实施例中,计数器111可以响应于检测到正由位串转换电路系统120存储或运算的位串的各种特征而递增和/或递减。例如,响应于具有与其相关联的特定数据模式的位串,计数器111可以递增或递减。响应于计数器递增到特定值(例如,特定阈值),逻辑电路系统122和/或机器学习组件109可以采取动作以改变呈现相同或类似数据模式的一或多个后续位串的精确度。例如,如果在位串的结尾处的阈值位量全是零,则逻辑电路系统122和/或机器学习组件109可使得位串转换(例如,“向下转换”)为具有较短位宽的位串。相反,如果在位串的结尾处的阈值位量全是非零,则逻辑电路系统122和/或机器学习组件109可使得位串转换(例如,“向上转换”)为具有较长位宽的位串。如本文中所使用,“数据模式”是指可用于推断位串特征的与位串相对应的特定位序列或位布置。例如,如果位串具有重复位的阈值量(例如,位串的最后位全是零,位串的最后位是非零等),则可称位串具有与其相对应的特定数据模式。

在一些实施例中,机器学习组件109可基于一或多个准则而确定是否改变位串的精确度。此类准则的实例是当低功率和高带宽消耗合乎需要时使用位串执行运算的情况。在此实例中,可能需要用精确度和准确度换取低功耗。例如,在一些机器学习应用中,相较于提供低功耗和高带宽,可能不那么需要精确度和准确度。因此,在此类应用中,机器学习组件109可使得在应用中使用的位串精确度转换为具有较短位宽(例如,“向下转换”),这可转而允许使用位串执行低功率、高带宽运算。

在另一实例中,应用可以功率节省模式运行,其中在执行运算时使用尽可能少的位。在此实例中,可能需要由于通过功率节省模式施加的约束而使执行运算时使用的功率最小化。因此,在此类应用中,机器学习组件109可使得在应用中使用的位串精确度转换为具有较短位宽(例如,“向下转换”),这可转而允许在通过功率节省模式施加的约束内使用位串执行运算。在此实例中,机器学习组件109可以检测存储于存储器资源124中(例如,在寄存器或其它存储位置中)的位串的数据模式,且基于确定和/或可用以在功率节省模式下执行运算的功率量而改变位串的精确度以减小位串的位宽。

在确定可使用具有较大位宽的位串来执行运算后,机器学习组件109可使得通过将位串转换(例如,“向上转换”)为具有较大位宽的位串来改变位串的精确度。例如,如果确定功率节省模式已结束或如果低功率和高带宽消耗不再合乎需要,则机器学习组件109和/或逻辑电路系统122可改变位串的精确度以增大位串的位宽。在一些实施例中,位串的精确度可响应于确定由位串使用的一或多个寄存器上溢而改变。这可允许在使用位串的运算中达到较高精确度和/或准确度。

在一些实施例中,存储器资源124可经配置以接收包括具有与第一精确度水平相对应的第一位量的位串的数据。逻辑电路系统122和/或机器学习组件109可经配置以确定具有第一位量的位串具有与其相关联的特定数据模式,和/或至少部分地基于确定位串具有与其相关联的特定数据模式而将第一位量更改为与第二精确度水平相对应的第二位量。在一些实施例中,逻辑电路122和/或机器学习组件109可经配置以作为确定位串具有特定数据模式的部分而确定具有第一位量的位串的一或多个位子集具有具备特定值的阈值位量。

计数器111可经配置以响应于确定位串具有与其相关联的特定数据模式而递增。逻辑电路系统122可经配置以确定计数器已递增到阈值,和/或基于确定计数器已递增到阈值而将第一位量更改为第二位量。

图2A是根据本公开的多个实施例的呈包含含有主机202和存储器装置204的设备的计算系统200形式的功能框图。存储器装置204可以包含一或多个存储器模块(例如,单列直插式存储器模块、双列直插式存储器模块等)。存储器装置204可以包含易失性存储器和/或非易失性存储器。在多个实施例中,存储器装置204可以包含多芯片装置。多芯片装置可以包含多个不同的存储器类型和/或存储器模块。例如,存储器系统可以包含任何类型的模块上的非易失性或易失性存储器。另外,组件(例如,主机202、位串转换电路系统220、逻辑电路系统222、存储器资源224和/或存储器阵列230)中的每一者可分别在本文中称为“设备”。

存储器装置204可以提供用于计算系统200的主存储器或可在整个计算系统200中用作额外存储器或存储装置。存储器装置204可以包含一或多个存储器阵列230(例如,存储器单元阵列),其可以包含易失性和/或非易失性存储器单元。例如,存储器阵列230可以是具有NAND架构的快闪阵列。实施例不限于特定类型的存储器装置。例如,存储器装置204可以包含RAM、ROM、DRAM、SDRAM、PCRAM、RRAM和快闪存储器等。

在存储器装置204包含非易失性存储器的实施例中,存储器装置204可以包含快闪存储器装置,例如NAND或NOR快闪存储器装置。然而,实施例不限于此,且存储器装置204可以包含例如非易失性随机存取存储器装置(例如,NVRAM、ReRAM、FeRAM、MRAM、PCM)的其它非易失性存储器装置、例如3-D交叉点(3D XP)存储器装置等的“新兴”存储器装置,或其组合。

如图2A所示,主机202可以耦合到存储器装置204。在多个实施例中,存储器装置204可以经由一或多个通道(例如,通道203)耦合到主机202。在图2A中,存储器装置204经由通道203耦合到主机202,且存储器装置204的位串转换电路系统220经由通道207耦合到存储器阵列230。主机202可以是主机系统,例如个人笔记本电脑、台式计算机、数码相机、智能电话、存储卡读卡器和/或物联网启用装置,以及其它各种类型的主机,且可以包含存储器存取装置,例如处理器(或处理装置)。所属领域一般技术人员将理解,“处理器”可以是一或多个处理器,例如并行处理系统、多个协处理器等。

主机202可以包含系统母板和/或底板,且可以包含多个处理资源(例如,一或多个处理器、微处理器,或一些其它类型的控制电路系统)。系统200可以包含分离集成电路,或主机202、存储器装置204和存储器阵列230可在同一集成电路上。例如,系统200可以是服务器系统和/或高性能计算(HPC)系统和/或其一部分。虽然图2A中所示的实例说明具有冯诺依曼(Von Neumann)架构的系统,但本公开的实施例可实施于非冯诺依曼架构中,所述非冯诺依曼架构可不包含通常与冯诺依曼架构相关联的一或多个组件(例如CPU、ALU等)。

逻辑电路系统222可以包含一或多个处理器(例如,处理单元)和/或算术逻辑单元(ALU)。在其中逻辑电路系统222包括和ALU的实施例中,ALU可以包含电路系统(例如,硬件、逻辑、一或多个处理装置等)以对整数二进制位串(例如posit格式的位串)执行运算(例如,用以改变位串精确度的运算等),例如上文所描述的运算。然而,实施例不限于ALU,并且在一些实施例中,逻辑电路系统222可除了ALU之外或代替ALU还包含状态机和/或指令集架构(或其组合),如本文中结合图2C和5更详细描述。

位串转换电路系统220可进一步包含可以通信方式耦合到逻辑电路系统222的存储器资源224。在一些实施例中,存储器资源224可以接收具有与第一精确度水平相对应的第一位量的第一位串。在一些实施例中,位串可以具有与其相关联的四个位集(例如,位子集)。例如,位串可以包含符号部分、状态部分、指数部分和尾数部分。也就是说,在一些实施例中,位串可以是unum位串,例如posit位串。

逻辑电路系统222可执行运算以更改第一位串的第一位量从而生成具有与第二精确度水平相对应的第二位量的第二位串。在一些实施例中,可控制逻辑电路系统222以通过控制器(如图2B中所说明的控制器210)执行运算。第一精确度水平和第二精确度水平可以对应于位串的动态范围、位串的分辨率或两者。

用以更改第一位串的第一位量以生成第二位串的运算可以包含响应于确定指数部分的位量保持不变而增大或减小尾数部分的位量。例如,如果与指数位子集相关联的数值或位量不改变运算的部分,则逻辑电路系统222可增大或减小与尾数位子集相关联的数值或位量

在一些实施例中,用以更改第一位串的第一位量以生成第二位串的运算可以包含响应于确定指数部分的位量增大或减小而增大或减小状态部分、指数部分和尾数部分的位量。例如,逻辑电路系统222可经配置以响应于确定指数部分的数值或位量增大或减小而增大或减小状态部分、指数部分和尾数部分的数值或位量。在此实例中,如果与位串的指数位子集相关联的数值或位量增大或减小,则逻辑电路系统222可增大或减小与状态位子集、指数位子集和/或尾数位子集相关联的数值或位量。

用以更改第一位串的第一位量以生成第二位串的运算可以包含响应于确定指数部分的位量增大或减小而增大指数部分或状态部分的位量且减小指数部分或状态部分中的另一者的位量。例如,逻辑电路系统可经配置以响应于确定指数部分的位量增大或减小而增大指数部分或状态部分的数值或位量且减小指数部分或状态部分中的另一者的数值或位量。在此实例中,如果与指数位子集相关联的数值或位量增大,则与状态位子集相关联的数值或位量可减小。相反,如果与指数位子集相关联的数值或位量减小,则与状态位子集相关联的数值或位量可增大。

在一些实施例中,用以更改第一位串的第一位量以生成第二位串的运算可以包含更改对应于指数部分的数值。例如,逻辑电路系统222可经配置以更改指数位子集的数值而不更改位串的总位宽。在其中位串具有16位的位宽和零的指数位子集值(例如,表示为(16,0)的位串,其中16对应于位串的位宽且零对应于包含于指数位子集中的数值或指数位量)的非限制性实例中,逻辑电路系统222可经配置以将指数位子集的数值更改为例如表示为(16,1)、(16,2)、(16,3)等位串的位串。

逻辑电路系统222还可经配置以确定对于具有第二位量的位串的最大正值(例如,结合图4A和4B描述的maxpos)和/或确定对于具有第二位量的位串的最小正值(例如,结合图4A和4B描述的minpos)。逻辑电路系统222可随后更改第二位量以生成具有第三位量的第三位串,所述第三位量对应于位串的最大正值或位串的最小正值。例如,在逻辑电路系统222已更改位串的位量之后,可有必要将所得位串的位宽裁剪为与位串相关联的最小正值以避免将具有小数值或小位量的位串转换为零。类似地,可有必要将所得位串的位宽限制在与位串相关联的最大正值以避免位串的位宽变得过大的情况。

如图2A所示,逻辑电路系统222和存储器资源224包含于存储器装置204中且存储器装置204耦合到主机202。存储器装置204可以从主机接收呈第一格式(例如,呈浮点格式)的数据和/或将数据转换为第二格式(例如,unum或posit格式)。在将数据从第一格式转换为第二格式之后,可执行使用具有第二格式的位串的运算。如上文所描述,运算可以是用以改变与位串相关联的数值或位量以更改与位串相关联的精确度水平的运算。在一些实施例中,存储器装置204可以执行运算且将所得位串传送到主机202而不从主机202接收中间命令。也就是说,在一些实施例中,位串转换电路系统220可以执行运算以改变与位串相关联的数值或位量从而更改与位串相关联的精确度水平,和/或响应于接收到位串但没有来自主机202的额外输入(例如,不妨碍主机202)而传送所得位串。

位串转换电路系统220可以经由一或多个通道207以通信方式耦合到存储器阵列230。存储器阵列230可以是例如DRAM阵列、SRAM阵列、STT RAM阵列、PCRAM阵列、TRAM阵列、RRAM阵列、NAND快闪阵列和/或NOR快闪阵列。阵列230可以包含以通过存取线(其可在本文中称为字线或选择线)耦合的行和通过感测线(其可在本文中称为数据线或数字线)耦合的列布置的存储器单元。虽然在图2A中示出单个阵列230,但实施例不限于此。例如,存储器装置204多个存储器阵列230(例如,DRAM单元、NAND快闪单元等的多个存储体)。

图2A的实施例可以包含为不使本公开的实施例模糊不清而未说明的额外电路系统。例如,存储器装置104可以包含地址电路系统以锁存通过I/O电路系统在I/O连接上提供的地址信号。地址信号可以由行解码器和列解码器接收和解码以存取存储器装置204和/或存储器阵列230。所属领域的技术人员应了解,地址输入连接的数目可以取决于存储器装置204和/或存储器阵列230的密度和架构。

图2B是根据本公开的多个实施例的呈包含含有主机202和存储器装置204的设备200的计算系统形式的另一功能框图。存储器装置204可以包含位串转换电路系统220,其可类似于图2A中所说明的位串转换电路系统220。类似地,主机202可类似于图2A中所说明的主机202,且存储器装置204可类似于图2A中所说明的存储器装置204。组件(例如,主机202、位串转换电路系统220、逻辑电路系统222、存储器资源224和/或存储器阵列230等)中的每一者可分别在本文中称为“设备”。

主机202可经由一或多个通道203、205以通信方式耦合到存储器装置204。通道203、205可以是接口或允许数据和/或命令在主机202与存储器装置205之间传送的其它物理连接。例如,用以使得启动待由位串转换电路系统220执行的运算(例如,用以通过更改位串的相应位子集的数值和/或位量来改变位串精确度的运算)的命令可经由通道203、205从主机传送。应注意,在一些实例中,位串转换电路系统220可在不存在来自主机202的中间命令的情况下响应于经由通道203、205中的一或多者从主机202传送的启动命令而执行运算。也就是说,在位串转换电路系统220已从主机202接收到用以启动执行运算的命令后,可在不存在来自主机202的额外命令的情况下由位串转换电路系统220执行运算。

如图2B所示,存储器装置204可以包含寄存器存取组件206、高速接口(HSI)208、控制器210、一或多个扩展行地址(XRA)组件212、主存储器输入/输出(I/O)电路系统214、行地址选通(RAS)/列地址选通(CAS)链控制电路系统216、RAS/CAS链组件218、位串转换电路系统220、类别间隔信息寄存器213和存储器阵列230。如图2所示,位串转换电路系统220位于物理上不同于存储器阵列230的存储器装置204的区域中。也就是说,在一些实施例中,位串转换电路系统220位于存储器阵列230的周边位置中。

寄存器存取组件206可促进从主机202到存储器装置204和从存储器装置204到主机202的数据传送和提取。例如,寄存器存取组件206可以存储对应于待从存储器装置204传送到主机202或从主机202传送到存储器装置204的数据的地址(或促进地址的查找),例如存储器地址。在一些实施例中,寄存器存取组件206可促进传送和提取待由位串转换电路系统220运算的数据和/或寄存器存取组件206可促进传送和提取已由位串转换电路系统220运算以传送到主机202的数据。

HSI 208可以提供主机202与存储器装置204之间的接口以用于命令和/或数据经过通道205。HSI 208可以是双倍数据速率(DDR)接口,例如DDR3、DDR4、DDR5等接口。然而,实施例不限于DDR接口,且HSI 208可以是四倍数据速率(QDR)接口、外围组件互连(PCI)接口(例如,外围组件互连高速(PCIe))接口,或用于在主机202与存储器装置204之间传送命令和/或数据的其它合适的接口。

控制器210可以负责执行来自主机202的指令且存取位串转换电路系统220和/或存储器阵列230。控制器210可以是状态机、定序器或某一其它类型的控制器。控制器210可以从主机202接收命令(例如,经由HSI 208),且基于接收到的命令而控制位串转换电路系统220和/或存储器阵列230的运算。在一些实施例中,控制器210可以从主机202接收命令以使得使用位串转换电路系统220执行运算。响应于接收到此类命令,控制器210可以指示位串转换电路系统220开始执行运算。

在一些实施例中,控制器210可以是全局处理控制器且可以将功率管理功能提供到存储器装置204。功率管理功能可以包含控制由存储器装置204和/或存储器阵列230消耗的功率。例如,控制器210可以控制提供到存储器阵列230的各种存储体的功率,以在存储器装置204的运算期间控制存储器阵列230的哪些存储体在不同时间运算。这可以包含在向存储器阵列230的其它存储体提供功率时关闭存储器阵列230的某些存储体以最佳化存储器装置230的功耗。在一些实施例中,控制存储器装置204的功耗的控制器210可以包含控制到存储器装置204的各个核心和/或到位串转换电路系统220、存储器阵列230等的功率。

XRA组件212旨在提供额外功能性(例如,外围放大器),所述额外功能性感测(例如,读取、存储、高速缓存)存储器阵列230中的存储器单元的数据值且不同于存储器阵列230。XRA组件212可以包含锁存器和/或寄存器。例如,额外锁存器可包含于XRA组件212中。XRA组件212的锁存器可以位于存储器装置204的存储器阵列230的外围上(例如,在一或多个存储器单元存储体的外围上)。

主存储器输入/输出(I/O)电路214可以促进数据和/或命令传送到存储器阵列230和从存储器阵列230传送数据和/或命令。例如,主存储器I/O电路系统214可以促进将位串、数据和/或命令从主机202和/或位串转换电路系统220传送到存储器阵列230和传送来自存储器阵列230的位串、数据和/或命令。在一些实施例中,主存储器I/O电路214可以包含一或多个直接存储器存取(DMA)组件,其可将位串(例如,作为数据块存储的posit位串)从位串转换电路系统220传送到存储器阵列230,且反之亦然。

在一些实施例中,主存储器I/O电路系统214可以促进将位串、数据和/或命令从存储器阵列230传送到位串转换电路系统220,使得位串转换电路系统220可以对位串执行运算。类似地,主存储器I/O电路214可以促进将已由位串转换电路系统220对其执行一或多个运算的位串传送到存储器阵列230。如本文中更详细描述,运算可以包含通过例如更改与位串相关联的各个位子集的数值和/或位量来改变位串的数值和/或位量的运算。如上文所描述,在一些实施例中,位串可格式化为unum或posit。

行地址选通(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。

类别间隔信息寄存器213可以包含存储位置,所述存储位置经配置以存储与由位串转换电路系统220运算的位串相对应的类别间隔信息。在一些实施例中,类别间隔信息寄存器213可以包含多个统计箱,这些统计箱包含可用于位串的总动态范围。类别间隔信息寄存器213可以以这样的方式被划分,使得寄存器(或离散寄存器)的某些部分经分配以处理位串的动态范围的特定范围。例如,如果存在单个类别间隔信息寄存器213,则可以将类别间隔信息寄存器213的第一部分分配给位串的落入位串动态范围的第一部分内的部分,并且可以将类别间隔信息寄存器213的第N部分分配给位串的落入位串动态范围的第N部分内的部分。在其中提供多个类别间隔信息寄存器213的实施例中,每个类别间隔信息寄存器可以对应于位串的动态范围的特定部分。

在一些实施例中,类别间隔信息寄存器213可经配置以监测与位串的状态位子集相对应的k个值(下文结合图3和4A-4B进行描述)。然后可以将这些值用于确定位串的动态范围。如果位串的动态范围当前大于或小于对特定应用或计算有用的动态范围,则位串转换电路系统220可以执行“向上转换”或“向下转换”运算以更改位串的动态范围。在一些实施例中,类别间隔信息寄存器213可经配置以在寄存器的相同部分内或在相同类别间隔信息寄存器213内存储与位串的状态位子集相对应的匹配的正k值和负k值。

在一些实施例中,类别间隔信息寄存器213可以存储与位串的尾数位子集的位相对应的信息。与尾数位相对应的信息可以用于确定对特定应用或计算有用的精确度水平。如果更改精确度水平可以使应用和/或计算受益,则位串转换电路系统220可以执行“向上转换”或“向下转换”运算,以基于存储在类别间隔信息寄存器213中的尾数位信息来更改位串的精确度。

在一些实施例中,类别间隔信息寄存器213可以存储与位串的最大正值(例如,结合图3和4A-4B描述的maxpos)和/或最小正值(例如,结合图3和4A-4B描述的minpos)相对应的信息。在此类实施例中,如果将存储用于位串的maxpos和/或minpos值的类别间隔信息寄存器213递增到阈值,则可以确定应更改位串的动态范围和/或精确度,并且位串转换电路系统220可以对位串执行运算以更改位串的动态范围和/或精确度。

位串转换电路系统220可以包含逻辑电路系统(例如,图1中所说明的逻辑电路系统122)和/或存储器资源(例如,图1中所说明的存储器资源124)。位串(例如,数据、多个位等)可以由位串转换电路系统220从例如主机202、存储器阵列230和/或外部存储器装置接收且由位串转换电路系统220存储在例如位串转换电路系统220的存储器资源中。位串转换电路系统(例如,位串转换电路系统220的逻辑电路系统222)可以对位串执行运算(或使得运算在位串上执行),以更改含于位串中的数值和/或位量以改变与位串相关联的精确度水平。如上文所描述,在一些实施例中,位串可格式化为呈unum或posit格式。

如结合图3和4A-4B更详细描述,通用数和posit可以提供改进的准确度,且可需要比以浮点格式表示的对应位串更少的存储空间(例如,可含有更少数目个位)。例如,由浮点数表示的数值可由具有比对应浮点数的位宽更小的位宽的posit表示。因此,通过改变posit位串的精确度以使posit位串的精确度适应将使用其的应用,与利用仅浮点位串的方法相比,可改进存储器装置204的性能,这是因为后续运算(例如,算术和//或逻辑运算)可更快速地在posit位串上执行(例如,因为呈posit格式的数据较少且因此需要更少时间来执行运算),且因为在存储器装置202中需要更少存储器空间来存储呈posit格式的位串,这可释放存储器装置202中的额外空间以用于其它位串、数据和/或待执行的其它运算。

在一些实施例中,位串转换电路系统220可以在位串的精确度改变之后对posit位串执行(或使得执行)算术和/或逻辑运算。例如,位串转换电路系统220可经配置以执行(或使得执行)算术运算,例如加法、减法、乘法、除法、融合乘法加法、乘法累加、点积单元、大于或小于、绝对值(例如,FABS())、快速傅立叶变换、逆快速傅立叶变换、S型函数、卷积、平方根、指数和/或对数运算;和/或逻辑运算,例如AND、OR、XOR、NOT等;以及三角运算,例如正弦、余弦、正切等。如将了解,前述所列运算并不意图是穷尽性的,前述所列运算也不意图是限制性的,且位串转换电路系统220可经配置以对posit位串执行(或使得执行)其它算术和/或逻辑运算。

在一些实施例中,位串转换电路系统220可以与一或多个机器学习算法的执行结合来执行以上列举的运算。例如,位串转换电路系统220可以执行与一或多个神经网络相关的运算。神经网络可以允许历经时间来训练算法以基于输入信号而确定输出响应。例如,历经时间,神经网路可以基本上习得更好地最大化完成特定目的的机会。这在机器学习应用中可以是有利的,因为神经网路可以历经时间利用新数据加以训练以实现更好地最大化完成特定目的的机会。神经网路可以历经时间加以训练以改进特定任务和/或特定目标的运算。然而,在一些方法中,机器学习(例如,神经网路训练)可以是处理密集型(例如,可能消耗大量计算机处理资源)和/或可以是时间密集型(例如,可能需要执行消耗多个循环的冗长计算)。

相反,通过使用位转换串电路系统220来执行此类运算,例如,通过对呈posit格式的位串执行此类运算,与使用呈浮点格式的位串来执行此类运算的方法相比,可以减少执行运算时消耗的处理资源量和/或时间量。此外,通过改变posit位串的精确度水平,可以基于位串转换电路系统220执行的运算的类型将位串转换电路系统220执行的运算调适到期望精确度水平。

在非限制性实例中,存储器装置204可以接收包括具有与第一精确度水平相对应的第一位量的位串的数据。在一些实施例中,存储器装置204可以接收来自主机202的数据。例如,可以包含逻辑电路系统(例如,图1中所说明的逻辑电路系统122)和存储器资源(例如,图1中所说明的存储器资源124)的位串转换电路系统220可以从主机202、存储器阵列230和/或存储器装置204外部的其它电路系统接收包括具有与第一精确度水平相对应的第一位量的位串的数据。在一些实施例中,控制器210可以使得位串转换电路系统220执行运算以将位串的精确度转换到第二精确度水平。

在一些实施例中,逻辑电路系统可以监测与位串的至少一个位子集相对应的数值以确定与数据相对应的动态范围,和/或至少部分地基于所确定的数据的动态范围将第一位量更改为与第二精确度水平相对应的第二位量。继续此实例,逻辑电路系统可以耦合到一或多个寄存器(例如,类别间隔信息寄存器213),所述寄存器可经配置以存储与第一位串的相应位子集相对应的类别间隔信息,所述类别间隔信息包含与对应于第一位串的相应位子集的位量相关联的数值,和/或响应于逻辑电路系统生成的指令,提供对类别间隔信息的存取以确定与数据相对应的动态范围。如本文所描述,在一些实施例中,位串的至少一个位子集是位串的状态位子集或位串的尾数位子集。

如上文所描述,寄存器中的至少一者经配置以存储与位串的最大正值、位串的最小正值或两者相对应的类别间隔信息。在此类实施例中,逻辑电路系统可经配置以确定是否更改了位串的最大正值、位串的最小正值或两者,并且响应于确定更改了位串的最大正值、位串的最小正值或两者,确定要更改与数据相对应的动态范围。响应于确定更改了与数据相对应的动态范围,作为将第一位量更改为第二位量的一部分,逻辑电路系统可以更改与位串相关联的总位量而不更改与位串的指数位子集相关联的位量。然而,实施例不限于此,并且在一些实施例中,逻辑电路系统可经配置以响应于确定更改了位串的最大正值、位串的最小正值或两者,确定要更改与数据相对应的数字精确度,并且作为将第一位量更改为第二位量的一部分,更改与位串的尾数位子集相关联的位量。

在一些实施例中,逻辑电路系统可经配置以监测与位串的尾数位子集相对应的数值以确定尾数位子集的阈值位量是否等于零,监测与位串的状态位子集相对应的数值以确定状态位子集的位量是否小于阈值位量,确定使用超过与数据相对应的动态范围的阈值,以及作为将第一位量更改为第二位量的一部分,更改与位串的指数位子集相对应的位量以更改位串的数字精确度。此外,逻辑电路系统可经配置以接收来自应用的提供第二位串以供应用使用的请求,所述请求包括与应用的范围相对应的信息;以及至少部分地基于与应用的范围相对应的信息,通过增大或减小与位串的至少一个位子集相对应的位量而将第一位量更改为第二位量。

如上文结合图2A所描述,例如,尽管实施例不限于这些特定实例,但存储器阵列230可以是DRAM阵列、SRAM阵列、STT RAM阵列、PCRAM阵列、TRAM阵列、RRAM阵列、NAND快闪阵列和/或NOR快闪阵列。存储器阵列230可用作图2B所示的计算系统200的主存储器。在一些实施例中,存储器阵列230可经配置以存储由加速电路系统220运算的位串和/或存储待传送到位串转换电路系统220的位串。

图2C是根据本公开的多个实施例的呈包含主机202、存储器装置204、专用集成电路223和现场可编程门阵列221的计算系统200形式的功能框图。组件(例如,主机202、转换组件211、存储器装置204、FPGA 221、ASIC 223等)中的每一者可分别在本文中称为“设备”。

如图2C所示,主机202可经由通道203耦合到存储器装置204,所述通道可类似于图2A中所说明的通道203。现场可编程门阵列(FPGA)221可经由通道217耦合到主机202,且专用集成电路(ASIC)223可经由通道219耦合到主机202。在一些实施例中,通道217和/或通道219可以包含外围串行互连高速(PCIe)接口,然而,实施例不限于此,且通道217和/或通道219可以包含其它类型的接口、总线、通信通道等以促进主机202与FPGA 221和/或ASIC 223之间的数据传送。

如上文所描述,位于存储器装置204上的电路系统(例如,图2A和2B中所说明的位转换电路系统220)可对posit位串执行运算以更改与posit位串的各个位子集相关联的数值或位量从而改变posit位串的精确度。然而,实施例不限于此,且在一些实施例中,可以通过FLGA 221和/或ASIC 223执行更改与posit位串的各个位子集相关联的数值或位量以改变posit位串的精确度的运算。在执行改变posit位串的精确度的运算之后,可以将位串传送到FPGA 221和/或ASIC 223。在接收到posit位串后,FPGA 221和/或ASIC 223可以对接收到的posit位串执行算术和/或逻辑运算。

如上文所描述,可以通过FPGA 221和/或ASIC 223执行的算术和/或逻辑运算的非限制性实例包含算术运算,例如加法、减法、乘法、除法、融合乘法加法、乘法累加、点积单元、大于或小于、绝对值(例如,FABS())、快速傅立叶变换、逆快速傅立叶变换、S型函数、卷积、平方根、指数和/或对数运算;和/或逻辑运算,例如AND、OR、XOR、NOT等;以及使用posit位串的三角运算,例如正弦、余弦、正切等。

FPGA 221可以包含状态机227和/或寄存器229。状态机227可以包含经配置以对输入执行运算并产生输出的一或多个处理装置。例如,FPGA 221可经配置以从主机202或存储器装置204接收posit位串且执行运算以更改与posit位串的各个位子集相关联的数值或位量从而改变posit位串的精确度,和/或对posit位串执行算术和/或逻辑运算以产生所得posit位串,所述所得posit位串表示对接收到的posit位串执行的运算的结果。

FPGA 221的寄存器229可经配置以在状态机227对接收到的posit位串执行运算之前缓冲和/或存储从主机202接收到的posit位串。另外,FPGA 221的寄存器229可经配置以在将结果传送到ASIC 233外部的电路系统(例如主机202或存储器装置204等)之前缓冲和/或存储所得posit位串,所述所得posit位串表示对接收到的posit位串执行的运算的结果。

ASIC 223可以包含逻辑241和/或高速缓存243。逻辑241可以包含经配置以对输入执行运算并产生输出的电路系统。在一些实施例中,ASIC 223经配置以从主机202和/或存储器装置204接收posit位串且执行运算以更改与posit位串的各个位子集相关联的数值或位量从而改变posit位串的精确度,和/或对posit位串执行算术和/或逻辑运算以产生所得posit位串,所述所得posit位串表示对接收到的posit位串执行的运算的结果。

ASIC 223的高速缓存243可经配置以在逻辑241对接收到的posit位串执行运算之前缓冲和/或存储从主机202接收到的posit位串。另外,ASIC 223的高速缓存243可经配置以在将结果传送到ASIC 233外部的电路系统(例如主机202或存储器装置204等)之前缓冲和/或存储所得posit位串,所述所得posit位串表示对接收到的posit位串执行的运算的结果。

虽然FPGA 227示为包含状态机227和寄存器229,但在一些实施例中,除了状态机227和/或寄存器229之外或代替状态机227和/或寄存器229,FPGA 221还可包含例如逻辑241的逻辑和/或例如高速缓存243的高速缓存。类似地,在一些实施例中,除了逻辑241和/或高速缓存243之外或代替逻辑241和/或高速缓存243,ASIC 223还可以包含例如状态机227的状态机和/或例如寄存器229的寄存器。

图3是具有es指数位的n位通用数或“unum”的实例。在图3的实例中,n位unum是posit位串331。如图3所示,n位posit 331可以包含符号位集(例如,第一位子集或符号位子集333)、状态位集(例如,第二位子集或状态位子集335)、指数位集(例如,第三位子集或指数位子集337)和尾数位集(例如,第四位子集或尾数位子集339)。尾数位339可以替代地称为“分数部分”或“分数位”,并且可以表示小数点后的位串的一部分(例如,数)。

符号位333可以是用于posit的零(0)和用于负数的一(1)。下文结合表1描述状态位335,表1示出(二进制)位串和其相关数字含义k。在表1中,通过位串的延行长度来确定数字含义k。表1的二进制部分中的字母x指示位值与状态的确定无关,因为(二进制)位串响应于连续位翻转或当达到位串的结尾时而终止。例如,在(二进制)位串0010中,位串响应于零翻转到一且接着回到零而终止。因此,最后一个零与状态无关且对于状态考虑的全部是前导相同位和终止位串的第一相反位(如果位串包含此类位)。

二进制 0000 0001 001X 01XX 10XX 110X 1110 1111
数字(k) -4 -3 -2 -1 0 1 2 3

表1

在图3中,状态位335r对应于位串中的相同位,而状态位335对应于终止位串的相反位。例如,对于表1所示的数字k值-2,状态位r对应于前两个前导零,而状态位对应于一。如上所述,对应于由表1中的X表示的数字k的最终位与状态无关。

如果m对应于位串中相同位的数目,则如果位为零,k=-m。如果位为一,k=m-1。这在表1中进行了说明,其中例如(二进制)位串10XX具有单个一且k=m-1=1-1=0。类似地,(二进制)位串0001包含三个零,因此k=-m=-3。状态可以指示useedk的比例因子,其中下表2中示出used的若干实例值。

es 0 1 2 3 4
used 2 2<sup>2</sup>=4 4<sup>2</sup>=16 16<sup>2</sup>=256 256<sup>2</sup>=65536

表2

指数位337对应于作为无符号数的指数e。与浮点数对比,本文中所描述的指数位337可不具有与其相关联的偏置。因此,本文中所描述的指数位337可以表示通过因子2e的缩放。如图3所示,取决于n位posit 331的状态位335右方保留多少位,可存在多达es个指数位(e1、e2、e3、…、ees)。在一些实施例中,这可允许n位posit 331的逐渐变小的准确度,其中在量值上更接近一的数具有比极大或极小数更高的准确度。然而,由于在某些类型的运算中可以不频繁地使用极大或极小数,因此图3所示的n位posit 331的逐渐变小的准确度表现在广泛范围的情形下可以是合乎需要的。

尾数位339(或分数位)表示可以是位于指数位337右方的n位posit 331的部分的任何附加位。类似于浮点位串,尾数位339表示分数f,其可类似于分数1.f,其中f包含一后的小数点右方的一或多个位。然而,与浮点位串对比,在图3所示的n位posit 331中,“隐藏位”(例如,一)可始终为一(例如,均一),而浮点位串可以包含具有“隐藏位”零(例如,0.f)的次正规数。

如本文所描述,更改符号333位子集、状态335位子集、指数337位子集或尾数339位子集中的一或多者的数值或位量可以改变n位posit 331的精确度。例如,改变n位posit331中的总位数可以更改n位posit位串331的分辨率。也就是说,通过例如增加与posit位串的组成位子集中的一或多者相关联的数值和/或位量以提高posit位串分辨率,可以将8位posit转换为16位posit。相反,通过减少与posit位串的组成位子集中的一或多者相关联的数值和/或位量,可以将posit位串的分辨率例如从64位分辨率减小到32位分辨率。

在一些实施例中,更改与状态335位子集、指数337位子集和/或尾数339位子集中的一或多者相关联的数值和/或位量以改变n位posit 331的精确度可以使得更改状态335位子集、指数337位子集和/或尾数339位子集中的其它者中的至少一者。例如,当更改n位posit 331的精确度以提高n位posit位串331的分辨率时(例如,当执行“向上转换”运算以增大n位posit位串331的位宽时),可以更改与状态335位子集、指数337位子集和/或尾数339位子集中的一或多者相关联的数值和/或位量。

在其中n位posit位串331的分辨率增大(例如,n位posit位串331的精确度改变以增大n位posit位串331的位宽)但与指数337位子集相关联的数值或位量并未改变的非限制性实例中,可以增加与尾数339位子集相关联的数值或位量。在至少一个实施例中,当指数338位子集保留不变时增大尾数339位子集的数值和/或位量可以包含将一或多个零位添加到尾数339位子集。

在其中通过更改与指数337位子集相关联的数值和/或位量而增大n位posit位串331的分辨率(例如,n位posit位串331的精确度改变以增大n位posit位串331的位宽)的另一非限制性实例中,可以增大或减小与状态335位子集和/或尾数339位子集相关联的数值和/或位量。例如,如果增大或减小与指数337位子集相关联的数值和/或位量,则可以对与状态335位子集和/或尾数339位子集相关联的数值和/或位量进行对应更改。在至少一个实施例中,增大或减小与状态335位子集和/或尾数339位子集相关联的数值和/或位量可以包含将一或多个零位添加到状态335位子集和/或尾数339位子集,和/或截断与状态335位子集和/或尾数339位子集相关联的数值或位量。

在其中提高n位posit位串331的分辨率(例如,n位posit位串331的精确度改变以增大n位posit位串331的位宽)的另一实例中,可以增大与指数335位子集相关联的数值和/或位量,并且可以减小与状态333位子集相关联的数值和/或位量。相反,在一些实施例中,可以减小与指数335位子集相关联的数值和/或位量,并且可以增大与状态333位子集相关联的数值和/或位量。

在其中n位posit位串331的分辨率减小(例如,n位posit位串331的精确度改变以减小n位posit位串331的位宽)但与指数337位子集相关联的数值或位量并未改变的非限制性实例中,可以减小与尾数339位子集相关联的数值或位量。在至少一个实施例中,当指数338位子集保留不变时减小尾数339位子集的数值和/或位量可以包含截断与尾数339位子集相关联的数值和/或位量。

在其中通过更改与指数337位子集相关联的数值和/或位量而减小n位posit位串331的分辨率(例如,n位posit位串331的精确度改变以减小n位posit位串331的位宽)的另一非限制性实例中,可以增大或减小与状态335位子集和/或尾数339位子集相关联的数值和/或位量。例如,如果增大或减小与指数337位子集相关联的数值和/或位量,则可以对与状态335位子集和/或尾数339位子集相关联的数值和/或位量进行对应更改。在至少一个实施例中,增大或减小与状态335位子集和/或尾数339位子集相关联的数值和/或位量可以包含将一或多个零位添加到状态335位子集和/或尾数339位子集,和/或截断与状态335位子集和/或尾数339位子集相关联的数值或位量。

在一些实施例中,改变指数位子集中的数值和/或位量可以更改n位posit 331的动态范围。例如,具有含有数值零的指数位子集的32位posit位串(例如,具有es=0的32位posit位串,或(32,0)posit位串)可以具有大致18个十进位的动态范围。然而,具有含有数值3的指数位子集的32位posit位串(例如,具有es=3的32位posit位串,或(32,3)posit位串)可以具有大致145个十进位的动态范围。

图4A是3位posit的正值的实例。在图4A中,仅有投影实数的右半部分,然而应了解,对应于图4A所示的其正对应值的负投影实数可存在于表示围绕图4A所示曲线的y轴的变换的曲线上。

在图4A的实例中,es=2,因此如图4B所示,可以通过将位附加到位串而增大posit 431-1的精确度。例如,将具有值一(1)的位附加到posit 431-1的位串来增大posit 431-1的准确度,如图4B中的posit 431-2所示。类似地,将具有值一的位附加到图4B中的posit 431-2的位串来增大posit 431-2的准确度,如图4B所示的posit 431-3所示。以下是可用于将位附加到图4A所示的posit 431-1的位串以获得图4B中所说明的posit 431-2、431-3的内插法规则的实例。

如果maxpos是posit 431-1、431-2、431-3的位串的最大正值且minpos是posit431-1、431-2、431-3的位串的最小值,则maxpos可等于useed且minpos可等于在maxpos与±∞之间,新的位值可以是maxpos*useed,并且在零与minpos之间,新的位值可以是这些新的位值可以对应于新的状态位335。在现有值x=2m与y=2n之间(其中m和n相差超过一),可以由几何平均值给出新的位值:其对应于新的指数位337。如果新的位值位于其旁边的现有x与y值之间,则新的位值可以表示算术平均值其对应于新的尾数位339。

图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,因此

作为将位添加到3位posit 431-1以形成图4B的4位posit 431-2的说明性实例,useed=256,因此对应于256的useed的位串具有附加到其上的附加状态位且之前的useed16具有附加到其上的终止状态位如上文所描述,在现有值之间,对应位串具有附加到其上的附加指数位。例如,数值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之间的数值。

以下是对posit(例如,posit 431)进行解码以获得其数字等效值的非限制性实例。在一些实施例中,对应于positp的位串是从-2n-1到2n-1的无符号整数,k是对应于状态位335的整数,并且e是对应于指数位337的无符号整数。如果尾数位339的集合表示为{f1f2...ffs}且f是由1.f1 f2...ffs表示的值(例如,由一后跟小数点后跟尾数位339表示的值),则p可由以下等式1给出。

下文结合下表3所示的posit位串0000110111011101提供对posit位串进行解码的另一说明性实例。

符号 状态 指数 尾数
0 0001 101 11011101

表3

在表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位串的数值为

图5是根据本公开的多个实施例的呈包含位串转换电路系统520的设备500形式的功能框图。本文中,位串转换电路系统520可以包含逻辑电路系统522和存储器资源524,其可类似于图1中所说明的逻辑电路系统122和存储器资源124。逻辑电路系统522和/或存储器资源524可分别视为“设备”。

位串转换电路系统520可经配置以从主机(例如,本文中在图1和2中所说明的主机102/202)和/或控制器(例如,本文中在图2中所说明的控制器210)接收启动对存储于存储器资源524中的数据执行一或多个运算(例如,更改与posit位串的各个位子集相关联的数值或位量以改变posit位串的精确度的运算等)的命令(例如,启动命令)。在启动命令已由位串转换电路系统520接收后,位串转换电路系统520可在不存在来自主机和/或控制器的中间命令的情况下执行上文所描述的运算。例如,位串转换电路系统520可以包含足够的处理资源和/或指令,以对存储于存储器资源524中的位串执行运算,而无需从位串转换电路系统520外部的电路系统接收额外命令。

逻辑电路系统522可以是算术逻辑单元(ALU)、状态机、定序器、控制器、指令集架构或其它类型的控制电路系统。如上文所描述,ALU可以包含电路系统以对整数二进制数(如呈posit格式的位串)执行运算(例如,更改与posit位串的各个位子集相关联的数值或位量以改变posit位串的精确度的运算等),如上文所描述的运算。指令集架构(ISA)可以包含精简指令集计算(RISC)装置。在其中逻辑电路系统522包含RISC装置的实施例中,RISC装置可以包含可采用如RISC-V ISA的指令集架构(ISA)的处理资源或处理单元,然而,实施例不限于RISC-V ISA且可使用其它处理装置和/或ISA。

在一些实施例中,逻辑电路系统522可经配置以执行指令(例如,存储于存储器资源524的INSTR 525部分中的指令)以执行本文中的运算。例如,逻辑电路系统524具备足以使得对由位串转换电路系统520接收的数据(例如,位串)执行此类运算的处理资源。

在由逻辑电路系统522执行运算后,所得位串可以存储于存储器资源524和/或存储器阵列(例如,本文中在图2中所说明的存储器阵列230)中。可对存储的所得位串进行寻址以使得其可用于运算的执行。例如,位串可以存储于存储器资源524和/或特定物理地址(其可具有与其对应的对应逻辑地址)处的存储器阵列中以使得在执行运算时可存取位串。

在一些实施例中,存储器资源524可以是例如随机存取存储器(例如,RAM、SRAM等)的存储器资源。然而,实施例不限于此,且存储器资源524可以包含各种寄存器、高速缓存、缓冲器和/或存储器阵列(例如,1T1C、2T2C、3T等DRAM阵列)。本文中,存储器资源524可经配置以从例如主机(例如图2A-2C中所说明的主机202)和/或存储器阵列(例如图2A和2B中所说明的存储器阵列230)接收位串。在一些实施例中,存储器资源538可以具有大致256千字节(KB)的大小,然而,实施例不限于这种特定大小,且存储器资源524可以具有大于或小于256KB的大小。

存储器资源524可分割成一或多个可寻址存储器区。如图5所示,存储器资源524可分割成可寻址存储器区以使得各种类型的数据可存储于其中。例如,一或多个存储器区可存储由存储器资源524使用的指令(“INSTR”)525,一或多个存储器区可存储数据526-1、…、526-N(例如,如从主机和/或存储器阵列检索的位串的数据),和/或一或多个存储器区可充当存储器资源538的本地存储器(“LOCAL MEM”)528部分。尽管图5中展示20个不同的存储器区,但应了解,存储器资源524可分割成任何数目个不同的存储器区。

如上文所论述,可响应于由主机、控制器(例如,本文中在图2中所说明的控制器210)或逻辑电路系统522生成的消息和/或命令而从主机和/或存储器阵列检索位串。在一些实施例中,可由逻辑电路系统522处理命令和/或消息。在由位串转换电路系统520接收位串且存储于存储器资源524中后,可由逻辑电路系统522处理位串。通过逻辑电路系统522处理位串可以包含更改与posit位串的各个位子集相关联的数值或位量以改变posit位串的精确度。

在非限制性神经网路训练应用中,位串转换电路系统520可以将具有es=0的16位posit转换成具有es=0的8位posit以用于神经网路训练应用。在一些方法中,半精确度16位浮点位串可用于神经网路训练,然而,与利用半精确度16位浮点位串进行神经网路训练的一些方法对比,具有es=0的8位posit位串可比半精确度16位浮点位串快两倍到四倍地提供相当的神经网路训练结果。

例如,如果位串转换电路系统520接收到具有es=0的16位posit位串以用于神经网路训练应用,则位串转换电路系统520可以从16位posit位串的一或多个位子集中选择性地去除位,以将16位posit位串的精确度改变为具有es=0的8位posit位串。应了解,实施例不限于此,且位串转换电路系统可以改变位串的精确度以产生具有es=1的8位posit位串(或一些其它值)。另外,位串转换电路系统520可以改变16位posit位串的精确度以产生32位posit位串(或一些其它值)。

训练神经网络中使用的常用函数是S型函数f(x)(例如,当x→-∞时渐进逼近零以及当x→∞时渐进逼近1的函数)。可用于神经网路训练应用的S型函数的实例是其可能需要使用半精确度16位浮点位串进行计算的超过一百个时钟周期。然而,使用具有es=0的8位posit,可通过翻转表示x的posit的第一位且向右移位两个位来评估相同函数,相较于使用半精确度16位浮点位串的相同函数的评估,此运算可需要至少更少数量级的时钟信号。

在此实例中,通过运算位串转换电路系统520来改变posit位串的精确度以产生更合乎需要的精确度水平,相较于并不包含经配置以执行此类转换和/或后续运算的位串转换电路系统520的方法,可以减少处理时间、资源消耗和/或存储空间。处理时间、资源消耗和/或存储空间的这一减少可以改进计算装置的功能,其中位串转换电路系统520通过减少在执行此类运算时使用的时钟信号的数目(这可减小由计算装置消耗的功率量和/或执行此类运算的时间量)以及通过释放用于其它任务和功能的处理和/或存储器资源来进行运算。

图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”的位的位串)。

如本文所描述,可以通过执行运算以对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。

图6A中所示的posit位串631中的每一者可以包含符号位子集“S”633、状态位子集“R”635、指数位子集“E”637和尾数位子集“M”639。在一些实施例中,对于给定的posit位串631的总长度,状态位子集635和/或尾数位子集639可以不是固定长度。例如,作为执行对posit位串631进行“向上转换”或“向下转换”运算的一部分,可以独立地更改位量,因此更改状态位子集635和/或尾数位子集639的长度。

在一些实施例中,可以通过截断一部分(例如,一或多个位子集的一部分、整个位子集等)来对posit位串631的长度“向下转换”以减小posit位串631的总长度。例如,作为将posit位串631-1从64位posit位串“向下转换”为32位posit位串的运算的一部分,可以截断位串631-1的一部分以产生posit位串631-2。

类似地,可以将位附加到posit位串631以对posit位串“向上转换”。例如,为了将16位posit位串631-3“向上转换”为32位posit位串631-2,可以将16个位附加到16位posit位串631-3。在一些实施例中,这些附加位可以为零,但是实施例不限于此特定实例。

图6B是具有不同位长度的各种posit位串的另一实例。图6B示出其中posit位串631仅包含符号位子集“S”633和状态位子集“R”635的实施例。即,在一些实施例中,posit位串631可以不包含指数位子集和/或尾数位子集。

取决于posit位串631的长度,可以如上所述对posit位串631进行“向上转换”或“向下转换”。在一些实施例中,作为“向上转换”或“向下转换”运算的一部分,可以将posit位串631去除指数位子集和/或尾数位子集,从而产生图6B所示的仅包含符号位子集633和状态位子集635的posit位串631。

图7是根据本公开的多个实施例的用于位串转换的实例方法750。在框752,方法750可以包含:通过耦合到逻辑电路系统的存储器资源接收具有第一位串长度的第一位串,其中第一位量包括第一位子集、第二位子集、第三位子集和第四位子集。在一些实施例中,第一位子集、第二位子集、第三位子集或第四位子集中的一者可以是位串的状态位子集,并且方法750可进一步包含通过逻辑电路系统确定与状态位子集相对应的动态范围低于阈值动态范围,和/或基于所述确定而通过逻辑电路系统减小与第一位串相对应的位量以生成第二位串。

然而,实施例不限于此,并且在一些实施例中,第一位子集、第二位子集、第三位子集或第四位子集中的一者可以是位串的状态位子集,并且第一位子集、第二位子集、第三位子集或第四位子集中的不同一者可以是位串的尾数位子集。在此类实施例中,方法750可进一步包含:通过逻辑电路系统确定与状态位子集相对应的动态范围高于阈值动态范围,通过逻辑电路系统监测尾数位子集以确定第一位串或第二位串或两者的所需精确度,通过逻辑电路系统减小第一位串的总位量,和/或通过逻辑电路系统基于所确定的所需精确度而增大与位串的指数位子集相对应的位量。

在框754,方法750可以包含:通过逻辑电路系统监测与位串的至少一个位子集相对应的数值,以确定与数据相对应的动态范围、与数据相对应的精确度,或两者。

在框756,方法750可以包含:至少部分地基于所确定的数据的动态范围、数据的精确度或两者,通过增大或减小第一位串的位量、与第一位串的至少一个位子集相对应的数值或两者而进行更改以生成具有第二位串长度的第二位串。

在一些实施例中,方法750可进一步包含在耦合到逻辑电路系统的相应寄存器中存储与第一位子集、第二位子集、第三位子集和第四位子集中的每一者相对应的类别间隔信息,其中所述类别间隔信息包括与第一位子集、第二位子集、第三位子集和第四位子集中的每一者相对应的相应数值;通过逻辑电路系统至少部分地基于与第一位子集、第二位子集、第三位子集和第四位子集中的至少一者相对应的类别间隔信息而确定与数据相对应的动态范围;和/或通过逻辑电路系统至少部分地基于与第一位子集、第二位子集、第三位子集和第四位子集中的至少一者相对应的类别间隔信息而将第一位量更改为与第二精确度水平相对应的第二位量。

方法750可进一步包含通过逻辑电路系统确定与第一位子集、第二位子集、第三位子集和第四位子集中的至少一者相对应的类别间隔信息相同于与第一位子集、第二位子集、第三位子集和第四位子集中的至少一者中的不同一者相对应的类别间隔信息,和/或通过逻辑电路系统使得将对于第一位子集、第二位子集、第三位子集和第四位子集中的至少一者与对于第一位子集、第二位子集、第三位子集和第四位子集中的至少一者中的不同一者相同的类别间隔信息存储在相应寄存器中的单个寄存器中。

方法750可进一步包含通过逻辑电路系统确定与第一位子集、第二位子集、第三位子集和第四位子集中的至少一者相对应并且与第一位串的指数位子集的数值、第一位串的状态位子集的数值或两者相关联的比例因子降至特定阈值范围之间,和/或至少部分地基于确定第一位串的指数位子集的数值、第一位串的状态位子集的数值或两者降至特定阈值范围之间而将与第一精确度水平相对应的第一位量减小到与第二精确度水平相对应的第二位量。

在一些实施例中,方法750可进一步包含通过逻辑电路系统接收来自应用的提供第二位串以供应用使用的请求,所述请求包括与应用的范围相对应的信息;和/或至少部分地基于与应用的范围相对应的信息,通过增大或减小与至少一个位子集相对应的位量而将第一位量更改为与第二精确度水平相对应的第二位量。

尽管已在本文中说明并描述了具体实施例,但所属领域的一般技术人员应了解,经计算以实现相同结果的布置可取代所示的具体实施例。本公开意在覆盖本公开的一或多个实施例的改编或变化。应理解,以上描述是以说明性方式进行的,而不是限制性的。在查阅以上描述后,以上实施例和本文未具体描述的其它实施例的组合对于所属领域的技术人员来说将显而易见。本公开的一或多个实施例的范围包含在其中使用以上结构和过程的其它应用。因此,本公开的一或多个实施例的范围应参考所附权利要求书以及此类权利要求被赋予的等同物的完整范围而确定。

在前述具体实施方式中,出于简化本公开的目的而将一些特征一并归到单个实施例中。本公开的这一方法不应被理解为反映本公开的所公开实施例必须比在每项权利要求中明确叙述那样使用更多特征的意图。相反,如所附权利要求书所反映,本发明主题在于单个所公开实施例的不到全部的特征。因此,所附权利要求书在此并入此具体实施方式中,其中每项权利要求其自身代表单独的实施例。

40页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:字线驱动器电路以及相关联的方法、装置和系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!