CN113924622A - 存储器阵列外围中的位串累加 - Google Patents
存储器阵列外围中的位串累加 Download PDFInfo
- Publication number
- CN113924622A CN113924622A CN202080041743.7A CN202080041743A CN113924622A CN 113924622 A CN113924622 A CN 113924622A CN 202080041743 A CN202080041743 A CN 202080041743A CN 113924622 A CN113924622 A CN 113924622A
- Authority
- CN
- China
- Prior art keywords
- bit
- memory array
- bit string
- sense amplifiers
- result
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- 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/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/544—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 for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/54—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/24—Bit-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/06—Sense amplifiers; Associated circuits, e.g. timing or triggering circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/12—Bit line control circuits, e.g. drivers, boosters, pull-up circuits, pull-down circuits, precharging circuits, equalising circuits, for bit lines
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Neurology (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
描述存储器阵列外围中的位串累加。可利用控制电路系统(例如,处理装置)来控制存储器装置内使用位串的运算的进行。所述运算的结果可累加在所述存储器装置的存储器阵列外围的电路系统中。举例来说,多个读出放大器可耦合到存储器阵列和处理装置。所述多个读出放大器当中的读出放大器的数量可与所述阵列的行或列的数量相同。所述处理装置可配置成致使使用根据III型通用数格式或假定数格式格式化的一或多个位串的递归运算的进行。所述处理装置可进一步配置成致使表示所述递归运算的迭代的结果的所得位串累加在所述多个读出放大器中。
Description
技术领域
本公开大体上涉及一种半导体存储器和方法,且更确切地说涉及用于存储器阵列外围中的位串累加的设备、系统和方法。
背景技术
存储器装置通常作为计算机或其它电子系统中的内部、半导体、集成电路提供。存在许多不同类型的存储器,包括易失性和非易失性存储器。易失性存储器可需要电力以维持其数据(例如,主机数据、错误数据等)且包括随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)和晶闸管随机存取存储器(TRAM)等等。非易失性存储器可通过在未供电时保持所存储数据来提供永久数据,且可包括NAND快闪存储器、NOR快闪存储器和电阻可变存储器,如相变随机存取存储器(PCRAM)、电阻性随机存取存储器(RRAM)和磁阻随机存取存储器(MRAM),如自旋力矩转移随机存取存储器(STT RAM)等等。
存储器装置可耦合到主机(例如主机计算装置)以存储数据、命令和/或指令以在操作计算机或电子系统时供主机使用。举例来说,可在计算或其它电子系统的操作期间在主机与存储器装置之间传送数据、命令和/或指令。
附图说明
图1为根据本公开的数个实施例的呈包括主机和存储器装置的设备形式的功能框图。
图2A为根据本公开的数个实施例的呈包括含有主机和存储器装置的设备的计算系统形式的功能框图。
图2B为根据本公开的数个实施例的呈包括主机、存储器装置、专用集成电路和现场可编程门阵列的计算系统形式的另一功能框图。
图3为具有es指数位的n位假定数(posit)的实例。
图4A为用于3位假定数的正值的实例。
图4B为使用两个指数位的假定数构造的实例。
图5为根据本公开的数个实施例呈控制电路系统形式的功能框图。
图6为表示根据本公开的数个实施例的存储器阵列外围中的位串累加的实例的框图。
图7为表示根据本公开的数个实施例的用于存储器阵列外围中的位串累加的实例方法的流程图。
具体实施方式
描述涉及存储器阵列外围中的位串累加的系统、设备和方法。可利用控制电路系统(例如,处理装置)来控制使用存储器装置内的位串的运算的进行。运算的结果可累加在存储器装置的存储器阵列外围的电路系统中。举例来说,多个读出放大器可耦合到存储器阵列和处理装置。多个读出放大器当中的读出放大器的数量可与阵列的行或列的数量相同。处理装置可配置成致使使用根据III型通用数格式或假定数格式格式化的一或多个位串的递归运算的进行。处理装置可进一步配置成致使表示递归运算的迭代的结果的所得位串累加在多个读出放大器中。
计算系统可进行可包括各种计算的广泛范围的运算,这可需要不同的准确度。然而,计算系统具有有限量的存储器,在所述存储器中存储在其上进行计算的操作数。为了促进在由有限存储器资源强加的约束内对由计算系统存储的操作数进行运算,可以特定格式存储操作数。为简单起见,一个这种格式称为“浮点”格式或“浮点数(float)”(例如,IEEE754浮点格式)。
根据浮点标准,就三个整数集或位集-一位集称作“基数”,一位集称作“指数”,且一位集称作“尾数”(或有效数)表示例如二进制数串的位串(例如,可表示数目的位串)。整数集或位集定义其中存储二进制数串的格式,为简单起见,所述格式可在本文中称为“数值格式”或“格式”。举例来说,定义浮点位串的上文所描述的位的三个整数集(例如,基数、指数和尾数)可称为格式(例如,第一格式)。如下文更详细地描述,假定数位串可包括四个整数集或位集(例如,符号、底数、指数和尾数),其也可称为“数值格式”或“格式”(例如,第二格式)。另外,根据浮点标准,两个无限值(例如,+∞和-∞)和/或两个种类的“非数值”(NaN)(安静NaN和信令NaN)可包括在位串中。
浮点标准已在计算系统中使用数年且定义用于由许多计算系统实行的计算的算术格式、交换格式、舍入规则、运算和异常处理。算术格式可包括二进制和/或十进制浮点数据,其可包括有限数、无线值和/或特定NaN值。互换格式可包括可用于交换浮点数据的编码(例如,位串)。舍入规则可包括当在算术运算和/或转换运算期间舍入数时可满足的属性集。浮点运算可包括算术运算和/或其它计算运算,例如三角函数。异常处理可包括异常条件的指示,如除以零、溢出等。
浮点的替代格式称为“通用数”(unum)格式。存在可称为“假定数”和/或“有效数”的若干形式的unum格式--I型unum、II型unum和III型unum。I型unum是在尾数的结尾处使用“ubit”指示实数是否是准确浮点数或其是否介于相邻浮点数之间的区间中的IEEE 754标准浮点格式的超集。I型unum中的符号位、指数位和尾数位根据IEEE754浮点格式获取其定义,然而,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格式在本文中称为“假定数格式”或为简单起见称为“假定数”。与浮点位串对比,在某些条件下,假定数可允许比具有相同位宽的浮点数更高的精确度(例如,更宽动态范围、更高分辨率和/或高更准确度)。这可允许由计算系统进行的运算在使用假定数时以比使用浮点数时更高的速率(例如,更快)进行,这转而可通过例如减少在进行运算时使用的时钟循环的数目从而减少进行这种运算时消耗的处理时间和/或功率来提高计算系统的性能。另外,与浮点数相比,在计算系统中使用假定数可以实现计算的更高的准确度和/或精确度,这与某些方法(例如,依赖于浮点格式位串的方法)相比可以进一步改进计算系统的功能。
假定数可基于包括在假定数中的总位量和/或整数集或位集的数量而在精确度和准确度中高度变化。另外,假定数可产生广泛的动态范围。根据某些条件,假定数的准确度、精确度和/或动态范围可大于浮点数或其它数字格式的准确度、精确度和/或动态范围,如本文中更详细地描述。假定数的可变准确度、精确度和/或动态范围可例如基于其中将使用假定数的应用而加以操纵。另外,假定数可减小或消除溢出、下溢、NaN和/或与浮点数和其它数字格式相关联的其它极端情况。此外,与浮点数或其它数字格式相比,使用假定数可允许使用更少的位来表示数值(例如,数)。
在一些实施例中,这些特征可允许假定数高度可配置,这可相较于依赖于浮点数或其它数字格式的方法提供改进的应用性能。另外,相较于浮点数或其它数字格式,假定数的这些特征可在机器学习应用中提供改进的性能。举例来说,在计算性能至关重要的机器学习应用中,可使用假定数来训练网络(例如,神经网络),其准确度和/或精确度与浮点数或其它数字格式相同或比其更高,但使用比浮点数或其它数字格式更少的位。另外,可使用具有比浮点数或其它数字格式更少的位(例如,更小位宽)的假定数来实现机器学习情形中的推断运算。通过使用与浮动或其它数字格式相比更少的位实现相同或增强的结果,假定数的使用可因此减少进行运算的时间量和/或减小应用中所需的存储器空间的量,这可改进其中采用假定数的计算系统的整体功能。
本文中的实施例是针对硬件电路系统(例如,控制电路系统),其配置成对位串进行各种操作以改进计算装置的整体功能。举例来说,本文中的实施例是针对硬件电路系统,所述硬件电路系统配置成使用位串进行运算(例如,递归运算)和/或致使运算的结果累加(例如,存储)在存储器装置的外围电路系统中,例如外围读出放大器、扩展行地址组件等。如本文中所使用,“外围读出放大器”可包括配置成锁存位于存储器装置的外围(例如,外部)中的数据值的读出放大器,而“扩展行地址组件”可包括位于存储器装置的外围中的多个锁存器和/或触发器。可使用硬件电路系统进行的递归运算的实例包括算术运算、逻辑运算、逐位运算、向量操作、点积运算、乘累加运算等。在一些实施例中,可以III型通用数格式或假定数格式格式化位串。
通过利用存储器装置的外围电路系统在每一迭代处存储递归运算的结果(例如,准确结果),相较于不以此方式利用存储器装置的外围电路系统的方法,可改进递归运算的结果的准确度。举例来说,一些方法提供用于例如递归运算的中间结果的临时计算的小型高速缓存器或寄存器集(例如,隐藏草稿区域)。然而,在一些方法中,这些寄存器或高速缓冲存储器可不够大而无法在由于寄存器或一或多个高速缓存器的大小约束而带来舍入误差的情况下支持存储中间递归大位串运算(例如,使用32位或64位位串操作数的运算)的准确结果。即使在将较小向量用于递归运算(例如,8位或16位位串操作数)时,寄存器或一或多个高速缓存器也可取决于递归运算中所使用的迭代次数而变得超限。
举例来说,使用(8,0)假定数操作数(例如,具有无指数位的8位位宽的假定数位串)的运算可需要64位寄存器,而使用(64,4)假定数操作数(例如,具有具备四个指数位的64位位宽的假定数位串)的运算可需要4096位寄存器,这可导致一些方法的寄存器和/或高速缓存器快速变得过限,尤其是随着位串操作数的位宽增大。这可在递归运算的进行期间进一步加剧,在所述递归运算中使用来自递归运算的每一迭代的结果进行多个连续运算。
在一些方法中,小型高速缓存器或寄存器集合(例如,隐藏草稿区域)可被“隐藏”(例如,用户无法存取)。相比之下,在一些实施例中,可将对存储器装置的外围电路系统的存取提供到存储器装置在其中操作的计算系统的用户。举例来说,用户可具备控制对外围电路系统的存取的能力,这可允许更好地控制利用外围电路系统的运算,例如递归运算。这可允许更好地控制允许利用外围电路系统的运算的类型,可允许更好地控制何时终止递归运算,和/或更好地控制何时截断存储在外围电路系统中的所得位串。
存储存储器装置的外围电路系统中的递归运算的迭代的结果,如本文中所描述,可通过允许在需要精确度和/或准确度的应用中的所进行算术和/或逻辑运算的改进的精确度和/或准确度而促进计算系统的改进的性能。举例来说,在一些实施例中,与在一些方法中流行的截断递归运算的迭代的中间结果相反,通过提供足够空间来存储递归运算的每一迭代的准确结果,只有递归的最终结果可经截断(例如,舍入)到所要位宽。这可减轻通常存在于一些方法中的舍入误差,由此改进其中通过提高这种递归运算的结果的准确度而进行递归运算的计算系统的性能。
本文中的其它实施例是针对在存储器阵列中的数据结构中产生和/或存储位串(例如,假定数位串)。位串可包括假定数位串操作数和/或表示假定数位串操作数之间进行的运算(例如,算术和/或逻辑运算)的结果的所得假定数位串。在一些实施例中,状态机可包括在存储器装置中以促进将位串存储在存储器阵列中和/或从存储器阵列检索位串。状态机可配置成产生可包括从存储器阵列检索位串和/或致使位串从阵列传送到存储器阵列外部的电路系统的命令的特定命令。所存储的所得位串可用于递归运算的进行中,如在本文中更详细地描述。
相较于一些方法,通过使用状态机从存储器阵列检索位串,可改进例如存储器装置和/或耦合到存储器装置的主机的计算装置的性能。举例来说,状态机可需要最少电路系统以进行将位串存储到存储器阵列和/或从存储器阵列检索位串的任务和运算,这可减小一些方法中利用的电路系统的量。此外,在本文所描述的实施例中,与每次调用使用位串的运算的进行时使用位串操作数进行计算的方法相反,因为使用位串的运算的结果可存储和检索到,所以相较于一些方法,可减小在使用所存储的位串进行运算中消耗的处理资源的量和/或时间量。
在本公开的以下详细描述中,参考形成本公开的部分的附图,且图中通过说明的方式展示了可实践本公开的一或多个实施例的方式。足够详细地描述这些实施例以使得本领域的普通技术人员能够实践本公开的实施例,且应理解,可利用其它实施例,且可在不脱离本公开的范围的情况下进行工艺、电气和结构改变。
如本文中所使用,如“N”和“M”等特定地相对于图中的附图标号的指定符指示可包括数个如此指定的特定特征。还应理解,本文中所使用的术语仅仅是出于描述特定实施例的目的且并不意欲为限制性的。如本文中所使用,除非上下文另外明确规定,否则单数形式“一(a/an)”和“所述(the)”可包括单数指示物和复数指示物两者。另外,“数个”、“至少一个”和“一或多个”(例如,数个存储器组)可指一或多个存储器组,而“多个”意在指代这种事物中的多于一个。
此外,贯穿本申请在容许意义上(即,可能、能够)而非在强制性意义上(即,必须)使用词语“可(can/may)”。术语“包括”和其派生词意味着“包括但不限于”。视上下文而定,术语“耦合(coupled/coupling)”意味着物理上直接或间接连接或存取和移动(发射)命令和/或数据。视上下文而定,术语“位串”、“数据”和“数据值”在本文中可互换地使用且可具有相同含义。另外,视上下文而定,术语“位集”、“位子集”和“部分”(在位串的位的一部分的情形下)在本文中可互换使用且可具有相同含义。
本文中的图遵循编号定则,其中第一一或多个数字对应于图号,且剩余的数字标识图中的元件或组件。可通过使用类似数字来标识不同图之间的类似元件或组件。举例来说,120可指代图1中的元件“20”,且类似元件可在图2中表示为220。通常在本文中可用单个元件编号指代一组或多个类似元件或组件。举例来说,多个参考元件433-1、433-2……433-N可总称为433。如应了解,可添加、交换和/或去除本文中的各种实施例中展示的元件,以便提供本公开的数个额外实施例。另外,图中提供的元件的比例和/或相对尺度意欲说明本公开的某些实施例,且不应视作限制性意义的。
图1为根据本公开的数个实施例的呈包括含有主机102和存储器装置104的设备的计算系统100的形式的功能框图。如本文所使用,“设备”可指但不限于多种结构或结构的组合中的任何一种,例如电路或电路系统、一或多个裸片、一或多个模块、一或多个装置或一或多个系统。存储器装置104可包括一或多个存储器模块(例如,单列直插式存储器模块、双列直插式存储器模块等)。存储器装置104可包括易失性存储器和/或非易失性存储器。在数个实施例中,存储器装置104可包括多芯片装置。多芯片装置可包括数个不同的存储器类型和/或存储器模块。举例来说,存储器系统可包括任何类型的模块上的非易失性或易失性存储器。如图1所展示,设备100可包括控制电路系统120,所述控制电路系统120可包括逻辑电路系统122和存储器资源124、存储器阵列130和读出放大器111(例如,SENSE AMPS 111)。另外,组件(例如,主机102、控制电路系统120、逻辑电路系统122、存储器资源124和/或存储器阵列130)中的每一个可在本文中单独地称作“设备”。控制电路系统120可在本文中称为“处理装置”。
存储器装置104可提供用于计算系统100的主存储器或可在整个计算系统100中用作额外存储器或存储装置。存储器装置104可包括一或多个存储器阵列130(例如,存储器单元阵列),所述存储器阵列可包括易失性和/或非易失性存储器单元。举例来说,存储器阵列130可为具有NAND架构的快闪阵列。实施例不限于特定类型的存储器装置。举例来说,存储器装置104可包括RAM、ROM、DRAM、SDRAM、PCRAM、RRAM和快闪存储器等等。
在存储器装置104包括非易失性存储器的实施例中,存储器装置104可包括快闪存储器装置,例如NAND或NOR快闪存储器装置。然而,实施例不限于此,且存储器装置104可包括例如非易失性随机存取存储器装置(例如,NVRAM、ReRAM、FeRAM、MRAM、PCM)等其它非易失性存储器装置、例如3-D交叉点(3D XP)存储器装置等“新兴”存储器装置,或其组合。非易失性存储器的3D XP阵列可结合可堆叠交叉网格化数据存取阵列基于体电阻的改变来进行位存储。另外,与许多基于快闪的存储器相比,3DXP非易失性存储器可进行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。
如图1所说明,主机102可耦合到存储器装置104。在数个实施例中,存储器装置104可经由一或多个信道(例如,信道103)耦合到主机102。在图1中,存储器装置104经由信道103耦合到主机102且存储器装置104的加速电路系统120经由信道107耦合到存储器阵列130。主机102可为主机系统,例如个人膝上型计算机、桌上型计算机、数码相机、智能电话、存储卡读卡器和/或具物联网(IoT)功能的装置,以及各种其它类型的主机。
主机102可包括系统主板和/或底板且可包括存储器存取装置,例如处理器(或处理装置)。本领域的普通技术人员应了解,“处理器”可意指一或多个处理器,例如平行处理系统、数个协处理器等。系统100可包括单独的集成电路或主机102、存储器装置104两者,且存储器阵列130可在同一集成电路上。举例来说,系统100可为服务器系统和/或高性能计算(HPC)系统和/或其一部分。虽然图1中展示的实例说明具有冯·诺依曼(Von Neumann)架构的系统,但本公开的实施例可实施于非冯·诺依曼架构中,所述非冯·诺依曼架构可不包括通常与冯·诺依曼架构相关联的一或多个组件(例如,CPU、ALU等)。
本文中在图2中更详细地展示的存储器装置104可包括加速电路系统120,其可包括逻辑电路系统122和存储器资源124。逻辑电路系统122可在本文中以集成电路的形式提供,所述集成电路例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、精简指令集计算装置(RISC)、高级RISC机器、芯片上系统,或其它配置成进行更详细地描述的运算的硬件和/或电路系统的组合。举例来说,逻辑电路系统122可对由存储器资源124存储的位串进行递归运算和/或致使递归运算的一或多个迭代的结果存储在读出放大器111中。
在一些实施例中,运算可进一步包括转换运算以将浮点位串(例如,浮点数)转换为假定数格式的位串,且反之亦然。一旦将浮点位串转换为假定数格式的位串,逻辑电路系统122就可配置成使用假定数位串进行(或致使进行):递归算术运算,如加法、减法、乘法、除法、融合乘法加法、乘积累加、点积单元、大于或小于、绝对值(例如,FABS())、快速傅立叶(Fourier)变换、快速傅立叶反变换、S型函数、卷积平方根、指数和/或对数运算;和/或递归逻辑运算,如AND、OR、XOR、NOT等;以及三角函数运算,如正弦、余弦、正切等。如应了解,运算的前述列表并不意欲是穷尽性的,运算的前述列表也不意欲是限制性的,且逻辑电路系统122可配置成进行(或致使进行)其它算术和/或逻辑运算。
控制电路系统120可进一步包括存储器资源124,其可以通信方式耦合到逻辑电路系统122。存储器资源124可包括易失性存储器资源、非易失性存储器资源或易失性与非易失性存储器资源的组合。在一些实施例中,存储器资源可为随机存取存储器(RAM),如静态随机存取存储器(SRAM)。然而,实施例不限于此,且存储器资源可为高速缓存器、一或多个寄存器、NVRAM、ReRAM、FeRAM、MRAM、PCM)、如3-D交叉点(3DXP)存储器装置等的“新兴”存储器装置或其组合。
存储器资源124可存储一或多个位串。在一些实施例中,可根据通用数(unum)或假定数格式来存储由存储器资源124存储的位串。如本文中所使用,存储于unum(例如,III型unum)或假定数格式中的位串可包括若干位的子集或“位子集”。举例来说,通用数或假定数位串可包括称作“符号”或“符号部分”的位子集、称作“底数”或“底数部分”的位子集、称作“指数”或“指数部分”的位子集和称作“尾数”或“尾数部分”(或有效数)的位子集。如本文中所使用,位子集意欲指代包括于位串中的位的子集。本文中结合图3和4A到4B更详细地描述位的符号、底数、指数和尾数集的实例。然而,实施例不限于此,且存储器资源可以如浮点格式或其它合适的格式的其它格式存储位串。
举例来说,在一些实施例中,存储器资源124可接收包含具有提供第一精确度水平的第一格式的位串的数据。逻辑电路系统122可从存储器资源接收数据且将位串转换为提供不同于第一精确度水平的第二精确度水平的第二格式。在一些实施例中,第一精确度水平可低于第二精确度水平。举例来说,如果第一格式为浮点格式且第二格式为通用数或假定数格式,那么浮点位串可在某些条件下提供比通用数或假定数位串低的精确度水平,如本文中结合图3和4A至4B更详细地描述。
第一格式可为浮点格式(例如,IEEE 754格式),且第二格式可为通用数(unum)格式(例如,I型unum格式、II型unum格式、III型unum格式、假定数格式、有效格式等)。因此,第一格式可包括尾数、基数和指数部分,且第二格式可包括尾数、符号、底数和指数部分。
逻辑电路系统122可配置成使用具有第二格式(例如,unum或假定数格式)的位串来致使算术运算或逻辑运算或两者的进行。在一些实施例中,算术运算和/或逻辑运算可为递归运算。如本文中所使用,“递归运算”通常是指进行指定时间量的运算,其中递归运算的先前迭代的结果用作所述运算的后续迭代的操作数。举例来说,递归乘法运算可为两个位串操作数β与相乘且递归运算的每一迭代的结果用作后续迭代的位串操作数的运算。换句话说,递归运算可指递归运算的第一次迭代包括令β与相乘以获得结果λ(例如,)的运算。此实例递归运算的下一迭代可包括令结果λ乘以以获得另一结果ω(例如)。
可就计算自然数的阶乘而言解释递归运算的另一说明性实例。通过以下等式1给出的此实例可包括在给定数n的阶乘大于零时进行递归运算,且在数n等于零的情况下返回一:
如等式1中所展示,可实行确定数n的阶乘的递归运算,直到n等于零,此时获得解且终止递归运算。举例来说,在使用等式1的情况下,可通过执行以下运算以递归方式计算数n的阶乘:n×(n-1)×(n-2)×…×1。
递归运算的又一实例为乘累加运算,其中在迭代时根据等式a←a+(bxc)修改a。在乘累加运算中,令累加器a的每一先前迭代与两个操作数b和c的乘积相加。在一些方法中,可用一或多个舍入进行乘累加运算(例如,可在运算的一或多个迭代处截断a)。然而,相比之下,本文中的实施例可允许在不舍入运算的中间迭代的结果的情况下进行乘累加运算,由此保持每一迭代的准确度直到完成乘累加运算的最终结果为止。
本文所涵盖的递归运算的实例不限于这些实例。相反,递归运算的以上实例仅为说明性且经提供以阐明本公开的上下文中的术语“递归运算”的范围。
如图1所展示,多个读出放大器(例如,读出放大器111)耦合到存储器阵列130和控制电路系统120。控制电路系统120可配置成使用一或多个位串致使递归运算的进行和/或致使表示递归运算的迭代的结果的所得位串存储(例如,累加)在多个读出放大器中。在一些实施例中,响应于接收到用户所产生命令而进行致使所得位串累加在多个读出放大器中的操作。然而,实施例不限于此,且在一些实施例中,控制电路系统120可配置成响应于接收到主机命令或响应于确定待用于递归运算的位串存储在控制电路系统120的存储器资源124中而进行致使所得位串累加在多个读出放大器中的操作。如本文中更详细地描述,可根据III型通用数格式或假定数格式格式化一或多个位串、所得位串或两者。
读出放大器111可提供用于存储器阵列130的额外存储空间,且可读出(例如,读取、存储、高速缓存)存在于存储器装置104中的数据值。在一些实施例中,读出放大器111可位于存储器装置104的外围区域中。举例来说,读出放大器111可位于物理上不同于存储器阵列130的存储器装置104的区域中。读出放大器111可包括可配置成存储数据值的读出放大器、锁存器、触发器等,如本文中所描述。在一些实施例中,读出放大器111可以寄存器或一连串寄存器的形式提供,且可包括与存储器阵列130的行或列相同数量的存储位置(例如,读出放大器、锁存器等)。举例来说,如果存储器阵列130含有约16K行或列,那么外围读出放大器111可包括约16K存储位置。因此,在一些实施例中,外围读出放大器111可为配置成保持多达16K数据值的寄存器,但实施例不限于此,且结合图2A更详细地描述。
控制电路系统120可进一步配置成通过覆写多个读出放大器中的先前存储的所得位串而致使表示递归运算的迭代的结果的所得位串累加在多个读出放大器(例如,读出放大器111)中。举例来说,控制电路系统120可配置成存储待存储在与存储先前中间位串相同的位置中的递归运算的每一连续中间所得位串。然而,如下文结合图2A和2B更详细地描述,递归运算的连续迭代可具有比递归运算的先前迭代更大的位宽。在这种情况下,控制电路系统120可配置成覆盖先前所得位串且存储表示额外读出放大器111中的后续迭代的后续位串的额外位。
在一些实施例中,控制电路系统120可配置成确定递归运算完成,且致使在所述确定之后对多个读出放大器中存储的所得位串进行舍入的运算的进行,通过从所得位串的尾数位子集或指数位子集或两者中移除至少一个位使得最终所得位串具有特定位宽。举例来说,一旦递归运算完成,控制电路系统120就可致使运算的最终结果舍入到可传送到读出放大器111外部的电路系统的位宽。
递归运算的最终结果可舍入到特定位宽,例如8位、16位、32位、64位等。递归运算的最终结果的特定位宽可预先确定,或由例如用户输入选择。举例来说,在一些实施例中,用户可将命令提供到控制电路系统120,所述命令指示控制电路系统120将递归运算的最终结果舍入到所要位宽。
在一些实施例中,可在不将所得位串传送到存储器装置104外部的电路系统的情况下,在存储器阵列130内进行递归运算。举例来说,递归运算可由所述控制电路系统的逻辑电路系统122进行,或由以特定组合触发存储器阵列的行和列来进行递归运算。
在一些实施例中,控制电路系统120可配置成存取其中存储表示递归运算的第一迭代的结果的第一所得位串的存储器阵列的地址空间,和/或存取其中存储表示递归运算的第二迭代的结果的第二所得位串的存储器阵列130的地址空间。控制电路系统120可进一步配置成将表示使用第一所得位串和第二所得位串进行的运算的结果的位串存储在多个读出放大器(例如,读出放大器111)中。
在一些实施例中,控制电路系统120可配置成执行指定指令集以例如写入、读取、复制和/或擦除存储在存储器阵列130中的位串(例如,数据)。举例来说,如本文中更详细地描述,控制电路系统120可执行指令以从存储器阵列130的一个或多个行和/或列读取数据以检索存储在存储器阵列130中的数据。如结合图2A、2B和5更详细地描述,尤其数据可包括一或多个假定数位串操作数和/或在假定数位串操作数之间进行且存储在存储器阵列130中的运算(例如,算术和/或逻辑运算)的一或多个结果。
相较于一些方法,通过利用配置成执行指定指令集以从存储器阵列130写入和/或检索假定数位串的控制电路系统120可实现改进的存储器装置104性能,这是因为可通过将此类运算的结果存储在存储器阵列130中且从存储器阵列130直接检索运算的结果减小用于进行存储在存储器阵列130中的假定数位串之间的运算的时间耗费和/或计算资源密集处理的量。
在一些实施例中,控制电路系统120可确定存储器阵列130中存储相关假定数位串的地址。举例来说,控制电路系统120可确定存储器阵列130中存储一或多个假定数位串操作数的行和/或列地址和/或存储表示一或多个假定数位串操作数算术和/或逻辑运算的进行的所得假定数位串的行和/或列地址。控制电路系统120可接着发送命令或请求以检索存储在存储器阵列130中的地址处的假定数位串,和/或致使检索到的假定数位串传送到读出放大器111、主机102、耦合到存储器装置102的媒体装置(例如,固态驱动器、快闪存储器装置等)或传送到存储器阵列130外部的电路系统,作为例如使用所存储位串的递归运算的进行的一部分。
图1的实施例可包括为避免模糊本公开的实施例而未说明的额外电路系统。举例来说,存储器装置104可包括地址电路系统以锁存通过I/O电路系统在I/O连接上提供的地址信号。地址信号可由行解码器和列解码器接收和解码以存取存储器装置104和/或存储器阵列130。本领域的技术人员应了解,地址输入连接的数目可取决于存储器装置104和/或存储器阵列130的密度和架构。
图2A为根据本公开的数个实施例的呈包括含有主机202和存储器装置204的设备200的计算系统形式的功能框图。存储器装置204可包括控制电路系统220,其可类似于图1中所说明的控制电路系统120。类似地,主机202可类似于图1中所说明的主机102,且存储器装置204可类似于图1中所说明的存储器装置104。组件(例如,主机202、位串转换电路系统220、逻辑电路系统222、存储器资源224和/或存储器阵列230等)中的每一个在本文中可单独地称为“设备”。
主机202可经由一或多个信道203、205以通信方式耦合到存储器装置204。信道203、205可为接口或允许数据和/或命令在主机202与存储器装置205之间传送的其它物理连接。举例来说,可经由信道203、205传送用于致使待使用控制电路系统220进行的操作的起始的命令(例如,起始使用一或多个位串的递归运算的操作、将递归运算的迭代的结果存储在外围读出放大器211中的操作)。应注意,在一些实施例中,控制电路系统220可在不存在来自主机202的介入命令的情况下,响应于经由信道203、205中的一或多个从主机202传送的起始命令而进行操作。也就是说,在不存在来自主机202的额外命令的情况下,一旦控制电路系统220已从主机202接收到起始操作的进行的命令,控制电路系统220便可进行操作。
如图2A中所展示,存储器装置204可包括寄存器存取组件206、高速接口(HSI)208、控制器210、可包括一或多个扩展行地址(XRA)组件的外围读出放大器211、主存储器输入/输出(I/O)电路系统214、行地址选通(RAS)/列地址选通(CAS)链控制电路系统216、RAS/CAS链组件218、控制电路系统220和存储器阵列230。如图2中所展示,外围读出放大器211和/或控制电路系统220位于物理上不同于存储器阵列230的存储器装置204的区域中。也就是说,在一些实施例中,外围读出放大器211和/或控制电路系统220位于存储器阵列230的外围位置中。
寄存器存取组件206可促进从主机202到存储器装置204和从存储器装置204到主机202的数据传送和提取。举例来说,寄存器存取组件206可存储对应于待从存储器装置204传送到主机202或从主机202传送到存储器装置204的数据的地址(或促进地址的查找),例如存储器地址。在一些实施例中,寄存器存取组件206可促进传送和提取待由位串转换电路系统220操作的数据,和/或寄存器存取组件206可促进传送和提取已由控制电路系统220操作或响应于控制电路系统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可指示控制电路系统220进行操作以检索存储在存储器阵列230中的一或多个位串和/或存储在存储器阵列230中的表示在一或多个位串之间进行的运算的结果的所得位串。举例来说,控制器210可从主机204接收请求一或多个位串之间的运算的进行的命令,且将命令发送到控制电路系统220以进行运算。控制电路系统220可确定所请求运算的结果是否存储在存储器阵列230中,确定存储所请求运算的结果的存储器阵列230中的地址,和/或从存储器阵列230检索所请求运算的结果。控制电路系统220和/或控制器210可接着致使所请求运算的结果传送到外围读出放大器211、数据结构209、主机202或传送到存储器阵列230外部的其它电路系统
在一些实施例中,控制器210可为全局处理控制器且可将功率管理功能提供到存储器装置204。功率管理功能可包括对由存储器装置204和/或存储器阵列230消耗的功率的控制。举例来说,控制器210可控制提供到存储器阵列230的各种组的功率以在存储器装置204的操作期间控制存储器阵列230的哪些组在不同时间操作。这可包括在向存储器阵列230的其它组提供功率时关闭存储器阵列230的某些组以优化存储器装置230的功耗。在一些实施例中,控制存储器装置204的功耗的控制器210可包括控制到存储器装置204的各个核心和/或到控制电路系统220、存储器阵列230等的功率。
如上文所提及,外围读出放大器211可提供用于存储器阵列230的额外存储空间,且可读出(例如,读取、存储、高速缓存)存在于存储器装置204中的数据值。外围读出放大器211可包括可配置成存储数据值(例如,位串)的读出放大器、锁存器、触发器、扩展行地址(XRA)组件等,如本文中所描述。如图2A中所展示,外围读出放大器211位于物理上不同于存储器阵列230的存储器装置204的位置中。在一些实施例中,外围读出放大器211可以寄存器或一连串寄存器的形式提供,且可包括与存储器阵列230的行或列相同数量的存储位置(例如,读出放大器、锁存器等)。举例来说,如果存储器阵列230含有约16K行或列,那么外围读出放大器211可包括约16K存储位置。因此,在一些实施例中,外围读出放大器211可为配置成保持多达约16K数据值的寄存器。
然而,实施例不限于其中外围读出放大器211包括约16K存储数据值的位置的情形。举例来说,外围读出放大器211可配置成存储约2K数据值、约4K数据值、约8K数据值等。此外,尽管在图2A中单个框展示为说明外围读出放大器211,但在一些实施例中,可存在更多单个“行”的外围读出放大器211。举例来说,可存在两个、四个或八个以及其它数量的“行”的外围读出放大器211,所述外围读出放大器211可各自配置成存储月2K数据值、约4K数据值、约8K数据值、约16K数据值等。
如上文所描述,在一些实施例中,外围读出放大器211可配置成存储使用位串进行的递归运算的中间结果。在一些实施例中,递归运算的中间结果可表示在递归运算的每一迭代处所产生的结果。与一些方法相对比,因为外围读出放大器211可配置成存储多达16K数据值,所以在递归运算的进行期间,递归运算的中间结果可不经舍入(例如截断)。
替代地,在一些实施例中,在递归运算的完成之后,存储在外围读出放大器中的递归运算的最终结果可舍入到所要位宽(例如,8位、16位、32位、64位等)。这可改进递归运算的结果的准确度,因为与不利用外围读出放大器211来存储递归运算的中间结果的方法相对比,在计算递归运算的最终结果之前可不需要对递归的中间结果进行舍入。
外围读出放大器211可配置成在递归运算的新迭代完成时覆写递归运算的先前存储的中间结果。举例来说,表示递归运算的第一迭代的结果可在递归运算的第一迭代完成后存储在外围读出放大器211中。一旦表示递归运算的第二迭代的结果完成,递归运算的第二迭代的结果就可存储在外围读出放大器211中。类似地,一旦表示递归运算的第三迭代的结果完成,递归运算的第三迭代的结果就可存储在外围读出放大器211中。在一些实施例中,每一后续迭代的结果可通过覆写所存储的先前迭代的结果而存储在外围读出放大器211中。
取决于每一迭代的结果的位宽,表示每一迭代的结果且存储在外围读出放大器211中的后续位串可使用比先前存储的位串更多的外围读出放大器211中的读出放大器存储。举例来说,第一迭代的结果可含有第一数量的位,且第二迭代的结果可含有大于第一数量的位的第二数量的位。当第二迭代的结果写入到外围读出放大器211或由外围读出放大器211存储时,其可经存储以使得第一迭代的结果经覆写,然而,因为第二迭代的结果可含有第一迭代的结果更多的位,所以在一些实施例中,除用于存储第一迭代的结果的读出放大器以外,外围读出放大器211的额外读出放大器可用于存储第二迭代的结果。
在其中递归运算包含递归乘法运算的简化非限制性实例中,数2.51以递归方式乘以数3.73,第一迭代的结果可为9.3623。在此实例中,第一迭代的结果包括五个位,且可例如存储在外围读出放大器211中的五个读出放大器中。第二迭代的结果(例如,第一结果9.3623与3.73之间的相乘结果)可为包括八个位的34.921379。在一些实施例中,第二迭代的结果可通过例如覆写存储在五个读出放大器中的第一迭代的结果且将额外三个位写入到外围读出放大器211中的三个其它读出放大器而存储在外围读出放大器211的八个读出放大器中。递归运算的后续迭代的结果可类似地存储在外围读出放大器211中,使得覆写先前迭代的结果。然而,实施例不限于此,且在一些实施例中,每一迭代的结果可存储在外围读出放大器211中的相邻读出放大器中,或明确地说,外围读出放大器211的读出放大器中。
在一些实施例中,可使用寄存器映射来控制对外围读出放大器211的存取。举例来说,可将位串存储在外围读出放大器211中,从外围读出放大器211删除和/或可响应于与可存储在控制电路系统220中的注册表映射相关联的命令而更改存储在外围读出放大器211中的位串的位宽。另外,响应于与控制电路系统220相关联的命令,存储在存储器阵列230中的(例如,存储器阵列230的数据结构209中的)位串可与存储在外围读出放大器211中的位串相加或从存储在外围读出放大器211中的位串减去(例如,与存储在所述外围读出放大器211中的位串累加)。
控制电路220还可包括与转换运算的结果相关联的命令,所述运算的结果使用位于假定数格式与可存储在外围读出放大器211和/或存储器阵列230中的格式之间的假定数位串作为递归运算的一部分而执行,如本文中结合图6更详细地描述。举例来说,控制电路系统220可包括一或多个寄存器,所述一或多个寄存器可包括与致使假定数位串以符号位、尾数位、指数位和k值表示相关联的命令,所述k值可用以扩展位串以使得其以假定数格式表示。
主存储器输入/输出(I/O)电路系统214可促进数据和/或命令传送到存储器阵列230和从存储器阵列230传送数据和/或命令。举例来说,主存储器I/O电路系统214可促进将位串、数据和/或命令从主机202和/或位串转换电路系统220传送到存储器阵列230和从存储器阵列230传送位串、数据和/或命令。在一些实施例中,主存储器I/O电路系统214可包括一或多个直接存储器存取(DMA)组件,其可将位串(例如,存储为数据块的假定数位串)从控制电路系统220传送到存储器阵列230,且反之亦然。
在一些实施例中,主存储器I/O电路系统214可促进位串、数据和/或命令从存储器阵列230到控制电路系统220的传送,使得控制电路系统220可对位串执行运算。类似地,主存储器I/O电路系统214可促进具有已由控制电路系统220对其进行的一或多个运算的位串到存储器阵列230的传送。如本文中更详细地描述,运算可包括使用位串(例如,unum或假定数位串)进行的递归运算,其中中间迭代的结果存储在外围读出放大器211中。
如上文所描述,可从存储器阵列230存储和/或检索到假定数位串(例如,数据)。在一些实施例中,主存储器I/O电路系统214可促进将假定数位串存储到存储器阵列230和/或从存储器阵列230检索所述假定数位串。举例来说,可启用主存储器I/O电路系统214以将假定数位串传送到待存储的存储器阵列230,和/或主存储器I/O电路系统214可促进响应于例如来自控制器210和/或控制电路系统220的命令而从存储器阵列230检索假定数位串(例如,表示一或多个假定数位串操作数之间的所进行运算的假定数位串)。
行地址选通(RAS)/列地址选通(CAS)链控制电路系统216和RAS/CAS链组件218可与存储器阵列230结合使用以锁存行地址和/或列地址以起始存储器循环。在一些实施例中,RAS/CAS链控制电路系统216和/或RAS/CAS链组件218可解析存储器阵列230的行地址和/或列地址,与存储器阵列230相关联的读取和写入操作将在所述行地址和/或列地址处起始或终止。举例来说,在使用控制电路系统220完成操作后,RAS/CAS链控制电路216和/或RAS/CAS链组件218可锁存和/或解析外围读出放大器211和/或存储器阵列230中的特定位置,已由控制电路系统220运算的位串将存储到所述特定位置。类似地,RAS/CAS链控制电路系统216和/或RAS/CAS链组件218可锁存和/或解析外围读出放大器211和/或存储器阵列230中的特定位置,在控制电路系统220对位串进行运算(例如,递归运算)之前或之后,位串将从所述特定位置传送到控制电路220。
控制电路系统220可包括逻辑电路系统(例如,图1中所说明的逻辑电路系统122)和/或存储器资源(例如,图1中所说明的存储器资源124)。位串(例如,数据、多个位等)可通过控制电路系统220从例如主机202、存储器阵列230和/或外部存储器装置接收且通过控制电路系统220存储在例如控制电路系统220的存储器资源中。控制电路系统(例如,控制电路系统220的逻辑电路系统222)可对位串进行运算(或致使待进行的运算),且致使运算的中间结果存储在外围读出放大器211中。如上文所描述,在一些实施例中,位串可以unum或假定数格式格式化。
如结合图3和4A至4B更详细地描述,通用数和假定数可提供改进的准确度,且可需要比以浮点格式表示的对应位串更少的存储空间(例如,可含有更少数目个位)。举例来说,由浮点数表示的数值可由具有比对应浮点数的位宽更小的位宽的假定数表示。因此,相较于仅利用浮点位串的方法,通过使用假定数位串进行运算(例如,算术运算、逻辑运算、逐位运算、向量运算等)可改进存储器装置204的性能,这是因为可更快速地对假定数位串进行后续运算(例如,算术和/或逻辑运算)(例如,因为假定数格式中的数据较小且因此需要较少时间对假定数位串进行运算)。此外,相较于仅利用浮点位串的方法,可改进存储器装置204的性能,这是因为存储器装置202中需要较少存储器空间来存储假定数格式的位串,这可释放存储器装置202的额外空间以用于其它位串、数据和/或待进行的其它运算。
在一些实施例中,控制电路系统220可对假定数位串进行(或致使进行)递归算术和/或逻辑运算。举例来说,控制电路系统220可配置成进行(或致使进行):递归算术运算,例如递归加法、递归减法、递归乘法、递归除法、融合乘法加法运算、乘累加运算、递归点积运算、大于或小于、绝对值(例如,FABS())、快速傅立叶变换、快速傅立叶反变换、S型函数运算、卷积运算、递归平方根运算、递归指数运算和/或递归对数运算;和/或递归逻辑运算,例如AND、OR、XOR、NOT等;以及递归三角函数运算,例如正弦、余弦、正切等。如应了解运算的前述列表不意欲为穷尽性的,运算的前述列表也并不意欲为限制性的,且控制电路系统220可配置成使用假定数位串进行(或致使进行)其它算术和/或逻辑运算。
在一些实施例中,控制电路系统220可结合一或多个机器学习算法的执行来进行上文列出的运算。举例来说,控制电路系统220可进行与一或多个神经网络相关的运算。神经网络可允许随时间推移来训练算法以基于输入信号确定输出响应。举例来说,随时间推移,神经网络可基本上习得更好地最大化完成特定目的的可能性。这在机器学习应用中可为有利的,因为神经网络可随时间推移用新数据加以训练以实现更好地最大化完成特定目标的可能性。神经网络可随时间推移加以训练以改进特定任务和/或特定目标的运算。然而,在一些方法中,机器学习(例如,神经网络训练)可为处理密集型的(例如,可消耗大量计算机处理资源)和/或可为时间密集型的(例如,可需要进行消耗多个循环的冗长计算)。
相比之下,通过使用控制电路系统220来执行此类运算,例如,通过对假定数格式的位串进行此类运算,在进行运算时消耗的处理资源量和/或时间量相比于使用浮点格式的位串来进行此类运算的方法可有所减少。此外,通过将递归运算的中间结果存储在外围读出放大器211中,表示递归运算的最终结果的位串的准确度与截断递归运算的中间结果的方法或递归运算的中间结果存储在隐藏的草稿区域中的方法相比可更高。
在一些实施例中,控制器210可配置成致使控制电路系统220在不妨碍主机202的情况下使用位串进行操作(例如,不从主机202接收与起始运算的进行的命令分离的介入命令或命令,和/或不将运算的结果传送到主机202)。然而,实施例不限于此,且在一些实施例中,控制器210可配置成致使控制电路系统220(例如,逻辑电路系统)使用位串进行递归算术和/或递归逻辑运算,将此类运算的中间结果存储在外围读出放大器211中和/或对递归运算的最终结果(其可存储在外围读出放大器211和/或XRA组件中)进行舍入以使得递归运算的最终结果具有与其相关联的特定位宽。
举例来说,控制电路系统220可配置成致使使用一或多个位串的递归运算的进行和/或致使各自表示递归运算的对应迭代的结果的连续所得位串累加(例如,存储)在外围读出放大器211(例如,多个读出放大器)中。在一些实施例中,控制电路系统220可进一步配置成通过覆写存储在多个读出放大器211中的先前所得位串而致使每一连续所得位串累加在多个读出放大器211中,如下文所描述。
一或多个位串、所得位串或两者可根据III型通用数格式或假定数格式格式化。此外,如上文所描述,外围读出放大器211可位于存储器阵列230的外围中。也就是说,在一些实施例中,外围读出放大器211可位于物理上不同于存储器阵列230所位于的区域的存储器装置204的区域中。
在一些实施例中,递归运算的进行可包括进行算术运算、逻辑运算、逐位运算、向量运算或其组合。响应于确定递归运算完成,控制电路系统220可配置成致使存储在多个读出放大器211中的最后所得位串经舍入(例如,截断)以使得最后所得位串具有特定位宽。举例来说,控制电路系统220可致使存储在多个读出放大器211中的最后所得位串四舍五入为具有8位、16位、32位、64位等的位宽。在一些实施例中,控制电路系统220可配置成致使从最后所得位串的尾数位子集或指数位子集删除至少一个位(其在本文中结合图3、4A和4B更详细地描述)以将最后所得位串截断为特定位宽。
如上文结合图1所描述,举例来说,尽管实施例不限于这些特定实例,但存储器阵列230可为DRAM阵列、SRAM阵列、STT RAM阵列、PCRAM阵列、TRAM阵列、RRAM阵列、NAND快闪阵列和/或NOR快闪阵列。存储器阵列230可用作图2A和2B中展示的计算系统200的主存储器。在一些实施例中,存储器阵列230可配置成存储由控制电路系统220运算的位串(例如,表示所进行递归运算的最终结果的位串)和/或在使用位串进行运算之前存储将传送到控制电路系统220的位串。
在一些实施例中,可在不妨碍主机202的情况下产生位串(例如,假定数位串)和/或将其存储在存储器阵列230中。举例来说,可在不从主机202接收多个命令的情况下产生位串和/或将其存储在存储器阵列230中。换句话说,在一些实施例中,主机202可将单个命令发送到存储器装置以请求使用一或多个位串进行运算。响应于接收到请求进行运算的命令,存储器装置204(例如,控制器210、控制电路系统220或存储器装置204的其它组件)可在不存在来自主机202的额外命令的情况下进行运算和/或检索所存储的运算结果。这可减少跨信道203/205的业务,以此可提高与主机202和/或存储器装置204相关联的计算装置的性能。
如图2A中所展示,存储器阵列可包括多个存储器单元、其中的一些可分组成数据结构209中。举例来说,在一些实施例中,数据结构209可由多个存储器单元组成,然而,在图2A中,在存储器阵列230的存储器单元于数据结构209之间做出以辅助读者辨别存储器单元中保留用作数据结构209的部分与存储器阵列230的其余存储器单元之间的区别,这些存储器单元自由地进行通常由存储器单元在存储器阵列230的操作中进行的功能。
数据结构209可允许组织且存储位串(例如,假定数位串)。在一些实施例中,数据结构209可为表(例如,查找表)、树、记录或允许将假定数位串组织且存储在存储器阵列230内的其它合适的数据结构。
数据结构209可具有预定大小(例如,在接收电力信号(例如,初始化存储器阵列的加电或起始信号)时,存储器阵列230可分配固定数目个存储器单元以用作数据结构),或数据结构209可由例如控制器210动态地分配。在一些实施例中,数据结构209可具有约八(8)兆字节(MB)的大小,但实施例不限于此特定大小。举例来说,在上文所描述的实例中,如果假定数位串各自具有8位的位宽(例如,假定数位串操作数A、假定数位串操作数B和表示在假定数位串操作数A与假定数位串操作数B之间进行的运算的结果的所得假定数位串),那么数据结构209的大小可为约8MB。然而,在其中多于三个8位假定数位串存储在存储器阵列230的数据结构209中的实施例中,和/或在其中假定数位串小于8位(例如,6位假定数串、4位假定数串等)或大于8位(例如,16位、32位、64位等)的情况下,数据结构可具有小于8MB的大小或大于8MB的大小。
在非限制性实例中,数据结构209可配置成存储三个假定数位串。三个假定数位串可对应于第一假定数位串操作数(“β”)、第二假定数位串操作数和使用假定数位串操作数β和假定数位串操作数进行的算术运算或逻辑运算的结果。在此实例中,控制电路系统220可在假定数位串操作数β与假定数位串操作数之间进行所请求的运算(例如,算术运算和/或逻辑运算),且致使运算的结果(以及假定数位串操作数β和假定数位串操作数)存储在存储器阵列230的数据结构209中。在此实例中,如果在后续时间点处需要进行所述运算,那么控制器210可请求例如作为递归运算的进行的一部分,从存储器阵列230的数据结构209检索假定数位串β与假定数位串之间的运算的结果。
继续此非限制性实例,如果使用假定数位串β和假定数位串进行的运算为递归运算,那么存储在存储器阵列230中的使用假定数位串β和假定数位串进行的运算(例如,算术或逻辑运算)的结果可传送到外围读出放大器211且存储。随后,作为递归运算的一部分进行的后续运算的结果可传送到外围读出放大器211且存储,使得递归运算的迭代累加在外围读出放大器211中。如本文中所描述,一旦递归运算的最终结果累加在外围读出放大器211中,就可进行对递归运算的最终结果进行舍入的运算以将递归运算的结果截断到特定位宽。
在存储器阵列230耦合到多个读出放大器(例如,外围读出放大器211)和控制电路系统220的另一非限制性实例中,控制电路系统220可配置成确定其中存储有第一位串和第二位串的存储器阵列230内的数据结构209中的相应地址位置。第一假定数位串和第二假定数位串可各自表示算术运算、逻辑运算或两者的结果。控制电路系统220可配置成执行从存储器阵列230检索第一假定数位串和第二假定数位串中的至少一个的命令和/或致使第一假定数位串和第二假定数位串中的至少一个存储在多个读出放大器211中。实施例不限于将第一假定数位串和/或第二假定数位串存储在多个读出放大器中,然而,且在一些实施例中,控制电路系统220可配置成致使第一假定数位串和第二假定数位串中的至少一个存储在包括一或多个XRA组件的外围读出放大器中。
如上文所描述,控制电路系统220配置成在第一位串和第二位串存储在数据结构中之前致使算术运算、逻辑运算或两者的进行。举例来说,控制电路系统220可配置成致使使用一或多个假定数位串操作数进行算术运算和/或逻辑运算,且致使运算的结果存储在存储器阵列230的数据结构209中以供稍后使用。
相较于其中“实时”进行算术和/或逻辑运算的方法(例如,每次需要进行算术和/或逻辑运算时进行算术和/或逻辑运算),通过使用控制电路系统220进行算术和/或逻辑运算,且接着将运算的结果存储在存储器阵列230的数据结构209中,可更快提供结果(和/或假定数位串操作数A和B)以供存储器装置204和/或主机202使用。
如本文中所描述,算术和/或逻辑运算可进行为递归运算的一部分。举例来说,第一假定数位串和第二假定数位串中的至少一个可存储在多个读出放大器211中作为递归运算的进行的一部分,在所述递归运算中,第一假定数位串和第二假定数位串中的至少一个用作操作数。通过在递归运算的进行期间将第一假定数位串和第二假定数位串中的至少一个存储在多个读出放大器211中,可保持递归的中间迭代的准确度直到递归运算完成为止。
一旦确定递归运算完成,控制电路系统220就可配置成致使递归运算的结果四舍五入。举例来说,控制电路系统220可配置成致使从存储在多个读出放大器211中的第一假定数位串和第二假定数位串中的至少一个的尾数位子集或指数位子集移除至少一个位,以对存储在多个读出放大器211中的第一假定数位串和第二假定数位串中的至少一个进行舍入或截断。
控制电路220可配置成响应于从耦合到存储器装置204的主机202接收到的起始命令的接收而确定存储器阵列230内存储第一位串和第二位串的相应地址位置。在一些实施例中,控制电路系统220可进一步配置成执行在不接收除起始命令以外的命令的情况下从存储器阵列220检索第一假定数位串和第二假定数位串中的至少一个的命令。举例来说,控制电路系统220可配置成在不接收除起始命令以外的命令的情况下致使第一假定数位串和第二假定数位串中的至少一个存储在多个读出放大器211中。
在一些实施例中,控制电路系统220可配置成通过经由主存储器I/O电路系统214将启用主存储器输入/输出(I/O)电路系统214的信号发送到阵列220外部的电路系统而致使第一假定数位串和第二假定数位串中的至少一个存储在多个读出放大器211中,例如致使第一假定数位串和第二假定数位串中的至少一个经由主存储器I/O电路系统214传送到阵列220外部的电路系统。
图2B为根据本公开的数个实施例的呈包括主机202、存储器装置204、专用集成电路223和现场可编程门阵列221的计算系统200的形式的功能框图。组件(例如,主机202、存储器装置204、FPGA221、ASIC 223等)中的每一个可在本文中单独地称为“设备”。
如图2B中所展示,主机202可经由信道203耦合到存储器装置204,所述信道203可类似于图2A中所说明的信道203。现场可编程门阵列(FPGA)221可经由信道217耦合到主机202,且专用集成电路(ASIC)223可经由信道219耦合到主机202。在一些实施例中,信道217和/或信道219可包括外围串行互连高速(PCIe)接口,然而,实施例不限于此,且信道217和/或信道219可包括其它类型的接口、总线、通信信道等以促进主机202与FPGA 221和/或ASIC223之间的数据传送。
如上文所描述,位于存储器装置204上的电路系统(例如,图2A中所说明的控制电路系统220)可使用假定数位串进行递归运算且可致使递归运算的中间结果存储在存储器装置204的外围位置(例如,图2A中所说明的外围读出放大器211)中。然而,实施例不限于此,且在一些实施例中,递归运算可由FPGA 221和/或ASIC 223进行。在FPGA221和/或ASIC223配置成进行递归运算的实施例中,FPGA和/或ASIC 223可配置成致使递归运算的中间结果存储在存储器装置204中,例如图2A中所说明的外围读出放大器211中。
如上文所描述,可由FPGA 221和/或ASIC 223进行的递归算术和/或递归逻辑运算的非限制性实例包括使用假定数位串进行:算术运算,例如加法、减法、乘法、除法、融合乘法加法、乘累加、点积单元、大于或小于、绝对值(例如,FABS())、快速傅立叶变换、快速傅立叶反变换、S型函数、卷积、平方根、指数和/或对数运算;和/或逻辑运算,例如AND、OR、XORNOT等;以及三角函数运算,例如正弦、余弦、正切等。
FPGA 221可包括状态机227和/或寄存器229。状态机227可包括配置成对输入进行运算且产生输出的一或多个处理装置。举例来说,FPGA 221可配置成从主机202或存储器装置204接收假定数位串,且使用假定数位串作为操作数进行一或多个递归运算。在递归运算的每一迭代完成之后,FPGA 221可致使表示迭代的结果的位串存储在存储器装置204中,例如图2A中所说明的外围读出放大器211中。
FPGA 221的寄存器229可配置成在状态机227使用所接收到的假定数位串进行递归运算之前缓冲和/或存储从主机202接收到的假定数位串。另外,FPGA 221的寄存器229可配置成在将结果传送到ASIC 233外部的例如主机202或存储器装置204等电路系统之前缓冲和/或存储递归运算的迭代的中间结果。
ASIC 223可包括逻辑215和/或高速缓存器217。逻辑215可包括配置成对输入进行操作且产生输出的电路系统。在一些实施例中,ASIC 223配置成从主机202和/或存储器装置204接收假定数位串,且使用假定数位串操作数进行一或多个递归运算。
ASIC 223的高速缓存器217可配置成在逻辑215对接收到的假定数位串进行运算之前缓冲和/或存储从主机202接收到的假定数位串。另外,ASIC 223的高速缓存器217可配置成在将结果传送到ASIC 233外部的例如主机202或存储器装置204等电路系统之前缓冲和/或存储递归运算的迭代的中间结果。
虽然FPGA 227展示为包括状态机227和一或多个寄存器229,但在一些实施例中,除了状态机227和/或寄存器229以外或代替状态机227和/或寄存器229,FPGA 221还可包括例如逻辑215的逻辑和/或例如高速缓存器217的高速缓存器。类似地,在一些实施例中,ASIC 223可除了逻辑215和/或高速缓存器217以外或代替逻辑215和/或高速缓存器217还包括如状态机227的状态机和/或如一或多个寄存器229的一或多个寄存器。
图3为具有es指数位的n位通用数或“unum”的实例。在图3的实例中,n位unum为假定数位串331。如图3中所展示,n位假定数331可包括符号位集(例如,第一位子集或符号位子集333)、底数位集(例如,第二位子集或底数位子集335)、指数位集(例如,第三位子集或指数位子集337)和尾数位集(例如,第四位子集或尾数位子集339)。尾数位339可在替代方案中称为“分数部分”或“分数位”,且可表示小数点后的位串的一部分(例如,数字)。
符号位333可为用于正数的零(0)和用于负数的一(1)。下文结合表1描述底数位335,所述表展示(二进制)位串和其相关数字含义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位假定数331的底数位335右方保留多少位,可存在多达es个指数位(e1、e2、e3……ees)。在一些实施例中,这可允许n位假定数331的逐渐变小的准确度,其中在量值上更接近一的数字具有比极大或极小数字更高的准确度。然而,由于极大或极小数字可较不频繁地用于某些种类的运算,因此图3中所展示的n位假定数331的逐渐变小的准确度表现在广泛范围的情形中可为合乎需要的。
尾数位339(或分数位)表示可为位于指数位337右方的n位假定数331的部分的任何额外位。类似于浮点位串,尾数位339表示分数f,其可类似于分数1.f,其中f包括一后的小数点右方的一或多个位。然而,与浮点位串相比,在图3中展示的n位假定数331中,“隐藏位”(例如,一)可始终为一(例如,均一),而浮点位串可包括具有“隐藏位”零(例如,0.f)的次正规数。
如本文中所描述,更改符号333位子集、底数335位子集、指数337位子集或尾数339位子集中的一或多个的数值或位数量可改变n位假定数331的精确度。举例来说,改变n位假定数331中的总位数可更改n位假定数位串331的分辨率。也就是说,通过例如增大与假定数位串的组成位子集中的一或多个相关联的数值和/或位数量以提高假定数位串的分辨率,可将8位假定数转换为16位假定数。相反,通过减少与假定数位串的组成位子集中的一或多个相关联的数值和/或位数量,可将假定数位串的分辨率例如从64位分辨率减小到32位分辨率。
在一些实施例中,更改与底数335位子集、指数337位子集和/或尾数339位子集中的一或多个相关联的数值和/或位数量以改变n位假定数331的精确度可导致底数335位子集、指数337位子集和/或尾数339位子集中的另一个中的至少一个的更改。举例来说,当更改n位假定数331的精确度以提高n位假定数位串331的分辨率时(例如,当进行“上变频转换”运算以增大n位假定数位串331的位宽时),可更改与底数335位子集、指数337位子集和/或尾数339位子集中的一或多个相关联的数值和/或位数量。
在非限制性实例中,其中n位假定数位串331的分辨率提高(例如,n位假定数位串331的精确度改变以增大n位假定数位串331的位宽),但与指数337位子集相关联的数值或位数量不改变,与尾数339位子集相关联的数值或位数量可增大。在至少一个实施例中,当指数338位子集仍不变时增大尾数339位子集的数值和/或位数量可包括将一或多个零位添加到尾数339位子集。
在另一非限制性实例中,其中n位假定数位串331的分辨率通过更改与指数337位子集相关联的数值和/或位数量而增大(例如,n位假定数位串331的精确度改变以增大n位假定数位串331的位宽),与底数335位子集和/或尾数339位子集相关联的数值和/或位数量可增大或减小。举例来说,如果与指数337位子集相关联的数值和/或位数量增大或减小,那么与底数335位子集和/或尾数339位子集相关联的数值和/或位数量可进行对应更改。在至少一个实施例中,增大或减小与底数335位子集和/或尾数339位子集相关联的数值和/或位数量可包括将一或多个零位添加到底数335位子集和/或尾数339位子集和/或截断与底数335位子集和/或尾数339位子集相关联的数值或位数量。
在另一实例中,其中n位假定数位串331的分辨率提高(例如,n位假定数位串331的精确度改变以增大n位假定数位串331的位宽),与指数335位子集相关联的数值和/或位数量可增大,且与底数333位子集相关联的数值和/或位数量可减小。相反,在一些实施例中,与指数335位子集相关联的数值和/或位数量可减小且与底数333位子集相关联的数值和/或位数量可增大。
在非限制性实例中,其中n位假定数位串331的分辨率减小(例如,n位假定数位串331的精确度改变以减小n位假定数位串331的位宽),但与指数337位子集相关联的数值或位数量不改变,与尾数339位子集相关联的数值或位数量可减小。在至少一个实施例中,当指数338位子集仍不变时减小尾数339位子集的数值和/或位数量可包括截断与尾数339位子集相关联的数值和/或位数量。
在另一非限制性实例中,其中n位假定数位串331的分辨率通过更改与指数337位子集相关联的数值和/或位数量而减小(例如,n位假定数位串331的精确度改变以减小n位假定数位串331的位宽),与底数335位子集和/或尾数339位子集相关联的数值和/或位数量可增大或减小。举例来说,如果与指数337位子集相关联的数值和/或位数量增大或减小,那么与底数335位子集和/或尾数339位子集相关联的数值和/或位数量可进行对应更改。在至少一个实施例中,增大或减小与底数335位子集和/或尾数339位子集相关联的数值和/或位数量可包括将一或多个零位添加到底数335位子集和/或尾数339位子集和/或截断与底数335位子集和/或尾数339位子集相关联的数值或位数量。
在一些实施例中,改变指数位子集中的数值和/或位数量可更改n位假定数331的动态范围。举例来说,具有含有数值零的指数位子集的32位假定数位串(例如,具有es=0的32位假定数位串,或(32,0)假定数位串)可具有大致18个十进位的动态范围。然而,具有含有数值3的指数位子集的32位假定数位串(例如,具有es=3的32位假定数位串,或(32,3)假定数位串)可具有大致145个十进位的动态范围。
图4A为用于3位假定数的正值的实例。在图4A中,仅投影实数的右半部分,然而,应了解,对应于图4A中展示的其正对应值的负投影实数可存在于表示围绕图4A中展示的曲线的y轴的变换的曲线上。
在图4A的实例中,因为es=2,所以假定数431-1的精确度可通过将位附加到位串而增大,如图4B中所展示。举例来说,将具有值一(1)的位附加到假定数431-1的位串会增大假定数431-1的准确度,如由图4B中的假定数431-2所展示。类似地,将具有值一的位附加到图4B中的假定数431-2的位串会增大假定数431-2的准确度,如由图4B中所展示的假定数431-3所展示。以下为可用于将位附加到图4A中所展示的假定数431-1的位串以获得图4B中所说明的假定数431-2、431-3的内插规则的实例。
如果maxpos为假定数431-1、431-2、431-3的位串的最大正值,且minpos为假定数431-1、431-2、431-3的位串的最小值,那么maxpos可等于useed,且minpos可等于在maxpos与±∞之间,新位值可为maxpos*useed,且在零与minpos之间,新位值可为这些新位值可对应于新底数位335。在现有值x=2m与y=2n之间,其中m和n相差超过一,新位值可通过几何平均值给出:其对应于新指数位337。如果新位值在现有x值与紧邻其的y值之间的中间位置,那么新位值可表示算术平均值其对应于新尾数位339。
图4B为使用两个指数位的假定数构造的实例。在图4B中,仅投影实数的右半部分,然而,应了解,对应于图4B中所展示的其正对应值的负投影实数可存在于表示围绕图4B中所展示的曲线的y轴的变换的曲线上。图4B所示的假定数431-1、431-2、431-3各自仅包括两个异常值:当位串的所有位均为零时的零(0),以及当位串为一(1)且接着全为零时的±∞。应注意,图4中所展示的假定数431-1、431-2、431-3的数值恰好为useedk。也就是说,对于由底数(例如,上文结合图3所描述的底数位335)表示的k值的幂,图4中所展示的假定数431-1、431-2、431-3的数值恰好是useed。在图4B中,假定数431-1具有es=2,因此假定数431-2具有es=3,因此且假定数431-3具有es=4,因此
作为将位添加到3位假定数431-1以创建图4B的4位假定数431-2的说明性实例,useed=256,因此对应于256的useed的位串具有附加到其上的额外底数位且之前为16的useed具有附加到其上的终止底数位如上文所描述,在现有值之间,对应位串具有附加到其上的额外指数位。举例来说,数值1/16、1/4、1和4将具有附加到其上的指数位。也就是说,对应于数值4的最终一为指数位,对应于数值1的最终零是指数位等。这一模式可进一步见于假定数431-3中,其为根据以上规则从4位假定数431-2产生的5位假定数。如果将另一位添加到图4B中的假定数431-3以产生6位假定数,那么尾数位339将附加到1/16与16之间的数值。
以下是对假定数(例如,假定数431)进行解码以获得其数字等效值的非限制性实例。在一些实施例中,对应于假定数p的位串为在-2n-1到2n-1范围内的无符号整数,k为对应于底数位335的整数,且e为对应于指数位337的无符号整数。如果尾数位339的集合表示为{f1 f2...ffs},且f为由1.f1 f2...ffs表示的值(例如,由一后跟小数点后跟尾数位339表示的值),则p可由以下等式2给出。
下文结合下表3中展示的假定数位串0000110111011101提供对假定数位串进行解码的另一说明性实例。
符号 | 底数 | 指数 | 尾数 |
0 | 0001 | 101 | 11011101 |
表3
在表3中,假定数位串0000110111011101分解到其组成位集(例如,符号位333、底数位335、指数位337和尾数位339)中。由于表3中展示的假定数位串中的es=3(例如,因为存在三个指数位),因此useed=256。因为符号位333为零,所以对应于表3中展示的假定数位串的数字表述的值为正。底数位335具有对应于值-3的三个连续零的延行(如上文结合表1所描述)。因此,由底数位335贡献的缩放因子为256-3(例如,useedk)。指数位337表示作为无符号整数的五(5)且因此贡献2e=25=32的额外缩放因子。最后,在表3中作为11011101给出的尾数位339表示作为无符号整数的两百二十一(221),因此以上作为f给出的尾数位339为使用这些值和等式2,对应于表3中给出的假定数位串的数值为
图5为根据本公开的数个实施例的呈包括控制电路系统520的设备500的形式的功能框图。控制电路系统520可包括逻辑电路系统522和存储器资源524,其可类似于本文在图1中所说明的逻辑电路系统122和存储器资源124。逻辑电路系统522和/或存储器资源524可单独视为“设备”。
控制电路系统520可配置成从主机(例如,本文中在图1和2中所说明的主机102/202)和/或控制器(例如,本文中在图2中所说明的控制器210)接收命令(例如,起始命令)以起始对存储在存储器资源524中的数据进行一或多个运算(例如,递归运算等)。一旦起始命令已由控制电路系统520接收到,控制电路系统520就可在不存在来自主机和/或控制器的介入命令的情况下进行上文所描述的运算。举例来说,控制电路系统520可包括足够的处理资源和/或指令以在未从控制电路系统520外部的电路系统接收到额外命令的情况下对存储在存储器资源524中的位串进行运算。
逻辑电路系统522可为算术逻辑单元(ALU)、状态机、排序器、控制器、指令集架构或其它类型的控制电路系统。如上文所描述ALU可包括用于使用例如假定数格式位串的整数二进制数字进行例如上文所描述的运算的运算(例如,使用位串的递归运算等)的电路系统。指令集架构(ISA)可包括精简指令集计算(RISC)装置。在逻辑电路系统522包括RISC装置的实施例中,RISC装置可包括可采用如RISC-V ISA的指令集架构(ISA)的处理资源或处理单元,然而,实施例不限于RISC-V ISA且可使用其它处理装置和/或ISA。
在一些实施例中,逻辑电路系统522可配置成执行指令(例如,存储在存储器资源524的INSTR 525部分中的指令)以进行本文中的运算。举例来说,逻辑电路系统524具备足以使得对由控制电路系统520接收到的数据(例如,对位串)进行此类运算的处理资源。
一旦由逻辑电路系统522进行运算,所得位串就可存储在存储器资源524和/或存储器阵列(例如,本文中在图2中所说明的存储器阵列230)中。所存储所得位串可进行寻址以使得其可用于进行运算。举例来说,位串可存储在存储器资源524和/或特定物理地址(其可具有与其对应的对应逻辑地址)处的存储器阵列中以使得在进行运算时可访问位串。在一些实施例中,位串可传送到外围读出放大器(例如,分别在图1和2中所说明的读出放大器111和/或外围读出放大器211)。
在一些实施例中,存储器资源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处理位串可包括使用位串作为操作数进行例如乘累加运算的递归运算。
在非限制性神经网络训练应用中,控制电路系统520可将其中es=0的16位假定数转换成其中es=0的8位假定数以用于神经网络训练应用中。在一些方法中,半精确度16位浮点位串可用于神经网络训练,然而,与利用用于神经网络训练的半精确度16位浮点位串的一些方法对比,其中es=0的8位假定数位串可比半精确度16位浮点位串快两倍到四倍地提供相当的神经网络训练结果。
举例来说,如果控制电路系统520接收其中es=0的16位假定数位串以用于神经网络训练应用,那么控制电路系统520可从16位假定数位串的一或多个位子集选择性地移除位以将16位假定数位串的精确度改变为其中es=0的8位假定数位串。应了解,实施例不限于此,且控制电路系统520可改变位串的精确度以产生其中es=1的8位假定数位串(或某一其它值)。另外,控制电路系统520可改变16位假定数位串的精确度以产生32位假定数位串(或某一其它值)。
在与上述实例连接的运算的进行期间,控制电路系统520可配置成致使每一迭代处的运算的结果存储在存储器装置或存储器阵列的外围中的电路系统中。举例来说,控制电路系统520可配置成致使每一迭代处的运算的结果存储在多个外围读出放大器中,例如图2A中所说明的外围读出放大器211中。这些中间结果可在神经网络训练应用的情形下在递归运算的后续迭代中使用以改进运算的最终结果的准确度,如本文中所描述。
训练神经网络时使用的常用函数是S型函数f(x)(例如,当x→-∞时逐渐接近零且当x→∞时逐渐接近1的函数)。可用于神经网络训练应用的S型函数的实例为其可需要多达一百个时钟循环来使用半精确度16位浮点位串进行计算。然而,使用其中es=0的8位假定数,可通过翻转表示x的假定数的第一位且向右移位两个位来评估相同函数,相较于使用半精确度16位浮点位串的相同函数的评估,运算可采取至少少一数量级的时钟信号。
此外,相较于其中舍入或截断运算的中间结果的方法,通过允许在不舍入或截断迭代的结果的情况下保留S型函数的评估的迭代的结果,可改进最终结果的准确性。举例来说,相较于其中舍入或截断运算的中间结果的方法,通过在例如如图2A中所说明的外围读出放大器211的外围读出放大器中存储用于评估S型函数的递归运算的中间结果,可改进最终结果的准确度。
在此实例中,相较于不包括配置成进行此类转换和/或后续运算的控制电路系统520的方法,通过操作控制电路系统520改变假定数位串的精确度以产生更合乎需要的精确度水平,可减少处理时间、资源消耗和/或存储空间。处理时间、资源消耗和/或存储空间的此减少可改进计算装置的功能,其中通过减少在进行此类运算时使用的时钟信号的数目(这可减少由计算装置消耗的功率量和/或进行此类运算的时间量)以及通过释放用于其它任务和功能的处理和/或存储器资源来操作控制电路系统520。
图6为表示根据本公开的数个实施例的存储器阵列外围中的位串累加的实例的框图640。结合图6描述可供外围读出放大器(例如,图2A中所说明的外围读出放大器211)使用或进行的若干功能以进一步说明本公开的各方面。举例来说,结合图6描述使用控制电路系统620的乘累加运算。如图6中所展示,可使用控制电路系统620进行用以提供存储器阵列外围中的位串累加的运算,所述控制电路系统620可类似于本文中在图1和2A中所说明的控制电路系统120/220。
如图6中所展示,在框641处,可由控制电路系统620接收第一位串β。此外,如在框642处所展示,可由控制电路系统620接收第二位串举例来说,第一位串β和第二位串可加载到控制电路系统620的存储器资源(例如,图1中所说明的存储器资源124)中。在一些实施例中,第一位串β和/或第二位串可根据unum或假定数格式格式化。
在框644处,可使用第一位串β和第二位串作为操作数来进行乘法运算。在框644处的乘法运算的进行之后,控制电路系统620可配置成将乘法运算的结果转换为可存储在外围读出放大器611和/或存储器阵列630中的格式。在一些实施例中,由于乘法运算的进行,因此所得位串的各种位子集中的位可移位。举例来说,所得位串的尾数位子集和/或底数位子集中的位可移位。为了解决此潜在问题,控制电路系统620可在不引入可由可已移位的位产生的误差的情况下,将乘法运算的结果转换为可存储在外围读出放大器611和/或存储器阵列630中的格式。
在框649处,可将乘法运算的结果累加在例如查问(quire)累加器中。在一些实施例中,可与存储在存储器阵列630中的位串多路复用查问累加器中所存储的结果,如框646处所展示。然而,实施例不限于此,且在一些实施例中,在649框处存储在查问累加器中的乘法的结果可与可存储在外围读出放大器611中的递归运算的中间结果多路复用。
在一些实施例中,控制电路系统620可配置成在框646处进行运算以选择乘法运算的结果或存储在存储器阵列630中的先前所得位串。在框646处选择乘法运算的结果或存储在存储器阵列630中的先前所得位串可取决于应用程序。举例来说,因为取决于正进行的递归运算的类型,存储在存储器阵列630中的位串可为先前运算的结果,所以在由控制电路系统620进行的后续操作的进行中使用存储在存储器阵列630中的位串可为有利的。
一旦已选择位串(例如,由乘法运算的进行产生的位串或存储在存储器阵列630中的位串),所选择的结果就可在框648处累加。举例来说,乘法运算的结果或存储在存储器阵列630中的位串可与存储在外围读出放大器611中的位串相加或从存储在外围读出放大器611中的位串减去,作为累加由递归运算产生的位串的运算的一部分。
如图6中所展示,此结果(例如,由累加所选一或多个位串的运算的进行产生的位串)可传送到外围读出放大器611。如上文所描述,相较于其中在递归运算的一或多个迭代之后截断位串的方法,通过将此类结果(例如,在每一迭代处的递归运算的结果)存储在外围读出放大器611中,可保持所得位串的准确度。
一旦将递归运算的累加结果传送到外围读出放大器611,就可将其复制到存储器阵列630。在一些实施例中,从外围读出放大器611传送到存储器阵列630的复制的累加位串可存储在存储器阵列630中以供后续使用。在一些实施例中,存储在存储器阵列630中的累加位串可存储在存储器阵列630的数据结构中,例如图2A中所说明的数据结构209中,或存储在存储器阵列630中的累加位串可存储在存储器阵列630内的不同位置中。
在一些实施例中,存储在数据结构609中的累加位串可表示使用控制电路系统620进行的递归运算的最终结果。举例来说,一旦递归运算的最终结果存储在外围读出放大器611中,就可将递归运算的最终结果复制到存储器阵列630的数据结构609且存储以供后续使用。在一些实施例中,存储在数据结构609中的运算的最终结果可例如在框646处与来自在框644处进行的后续乘法运算的结果进行多路复用。
在框648处,在644处进行的乘法运算的结果可与存储在外围读出放大器611中的当前位串相加或从所述当前位串减去。举例来说,在使用控制电路系统620的递归运算(例如乘累加运算)进行期间,递归运算的每一迭代的结果可在框648处累加在外围读出放大器611中。在一些实施例中,累加递归运算的每一迭代的结果可包括覆写外围读出放大器611中的递归运算的先前迭代的先前存储的结果,将递归运算的当前迭代的结果于存储在外围读出放大器中的递归运算的先前迭代的结果相加,或将递归运算的当前迭代的结果减去存储在外围读出放大器中的递归运算的先前迭代的结果。
一旦递归运算完成,如在框647处所展示,存储在外围读出放大器611中的递归运算的最终结果可传送到存储器阵列630,或存储在外围读出放大器611中的递归运算的最终结果可转换为不同于其中递归运算的最终结果存储在外围读出放大器611中的格式的格式。举例来说,如果递归运算的最终结果以假定数格式存储,那么最终结果可转换为浮点格式,反之亦然。类似地,递归运算的最终结果可在其它格式之间转换,如果例如存储在外围读出放大器611中的位串不以假定数格式存储,那么在框647处,递归运算的最终结果在已从外围读出放大器611传送出之后可转换为假定数格式。
在一些实施例中,可对存储在外围读出放大器611中的递归运算的最终结果进行四舍五入,使得最终所得位串具有特定位宽。可通过从所得位串的尾数位子集或指数位子集或两者中移除至少一个位来对递归运算的最终结果进行四舍五入。举例来说,一旦递归运算完成,控制电路系统620就可致使运算的最终结果舍入到可传送到外围读出放大器611外部的电路系统的位宽。如上文所描述,可预先确定经舍入最终结果的位宽,或响应于如用户命令的命令设定所述位宽。
在一些实施例中,外围读出放大器611可“经清除”,如由从清除外围读出放大器(CLEAR PSA)指向外围读出放大器611的箭头所指示。举例来说,响应于删除存储在外围读出放大器611中的信息的命令,可清除存储在外围读出放大器611中的数据。这在递归运算结束后可为合乎需要,其中递归运算的迭代的结果累加在外围读出放大器611中以准备后续递归运算的进行,所述后续递归运算可包括累加外围读出放大器611中的递归运算的迭代的结果。
在框643处,待用于例如递归算术和/或递归逻辑运算的运算的进行的位串可传送到存储器阵列630,所述存储器阵列630可类似于本文中在图1和2A中说明的存储器阵列130/230。在一些实施例中,位串可从安放有存储器阵列630的存储器装置外部的控制电路系统传送。举例来说,位串可从主机(例如,本文中在图1、2A和2B中说明的主机102/202)传送到存储器阵列630。一旦位串由存储器阵列630存储,其就可传送到控制电路系统620,且控制电路系统620可进行或致使进行使用位串作为操作数的递归运算。
然而,实施例不限于此,且如上文结合图2A所描述,存储器阵列630可配置成存储表示在所得位串存储在存储器阵列630中之前进行的算术和/或逻辑运算的结果的位串。举例来说,存储器阵列630可将所得位串存储在数据结构中,所述数据结构例如图2A中所说明的数据结构209,以便提高进行使用所得位串的运算的速度。
在一些实施例中,可在存储器阵列630与外围读出放大器611之间传送位串,如由连接外围读出放大器611框与存储器阵列630框的箭头所指示。此外,在一些实施例中,由存储器阵列630存储的位串可传送到外部存储器,如框645所展示。外部存储器可为其中安放存储器阵列630的存储器装置外部的存储器。举例来说,存储器可为外部存储器体积,例如HDD、快闪存储器装置、SSD或其它外部存储器。
在非限制性实例中,在框644处使用控制电路系统620将假定数位串β(在框641处)和假定数位串(在框642处)相乘。此乘法运算的结果,例如,假定数位串λ可存储在外围读出放大器611中,和/或所得假定数位串λ的副本可存储在存储器阵列630中。在此实例中,在框646处可选择假定数位串λ用于累加。在一些实施例中,在存储乘法运算的结果之前,结果可转换为可存储在外围读出放大器611和/或存储器阵列630中的格式,如上文所描述。举例来说,结果可转换为二进制格式、浮点格式,或位串的形状可经更改(例如,从(16,2)假定数到(16,3)假定数等)。
在框648处,假定数位串λ可接着与存储在外围读出放大器611中的先前位串相加或从所述先前位串减去,作为递归运算的进行的一部分。在框648处进行的加法或减法运算(例如,累加运算)的结果可传送到外围读出放大器611且存储。在一些实施例中,在框648处进行的加法或减法运算的结果可存储在外围读出放大器611中,使得覆写先前位串(例如,假定数位串λ)。
可重复这些运算直到递归运算完成为止,此时可对存储在外围读出放大器611中的最终结果进行舍入,如上文所描述。在一些实施例中,在对存储在外围读出放大器611中的最终结果进行舍入之后,最终结果可转换为unum或假定数格式(或其它格式,例如浮点格式)且传送到存储器阵列630或传送到例如主机的外部电路系统。
在另一非限制性实例中,可在框646处选择存储在存储器阵列630中的位串以累加。如上文所描述,存储在存储器阵列630中的位串可为存储在外围读出放大器611中的位串的副本,但实施例不限于此。在此实例中,在例如框648处,存储在存储器阵列630中的位串可与存储在外围读出放大器611中的位串累加。在框648处累加的所得位串可存储回到外围读出放大器611和/或存储器阵列630中。在一些实施例中,在框648处进行的累加运算的结果可存储在外围读出放大器611中,使得覆写先前位串(例如,假定数位串λ)。
可重复此运算直到递归运算完成为止,此时可对存储在外围读出放大器611中的最终结果进行舍入,如上文所描述。在一些实施例中,在对存储在外围读出放大器611中的最终结果进行舍入之后,最终结果可转换为unum或假定数格式(或其它格式,例如浮点格式)且传送到存储器阵列630或传送到例如主机的外部电路系统。
图7为表示根据本公开的数个实施例的用于存储器阵列外围中的位串累加的实例方法750的流程图。在框752处,方法750可包括使用第一位串和第二位串进行第一运算。第一运算可为算术运算、逻辑运算、逐位运算或向量运算等等。在一些实施例中,第一位串和第二位串可根据unum(例如,III型unum或假定数格式)格式化。
在框754处,方法750可包括将第一运算的结果存储在存储器阵列的外围电路系统中。外围电路系统可包括外围读出放大器,例如图2A中所说明的外围读出放大器211,且存储器阵列可类似于本文中在图1、2A和2B中所说明的存储器阵列130/230。然而,实施例不限于将第一运算的结果存储在外围读出放大器中,且在一些实施例中,方法750可包括将第一运算的结果存储在耦合到存储器阵列但不同于的扩展行地址组件中。
在框756处,方法750可包括使用第一运算的结果和第二位串进行第二运算。第二运算可为算术运算、逻辑运算、逐位运算或向量运算等等。在一些实施例中,第一运算和第二运算可进行为递归运算的一部分。因此,在一些实施例中,第一运算的结果或第二运算的结果可具有比第一运算和第二运算中的另一个的结果更大的位宽。
在其中第一运算和第二运算进行为递归运算的一部分的实施例中,方法750可进一步包括:确定第二运算的结果为递归运算的最终所得位串;和/或在所述确定之后进行对存储在扩展行地址组件中的最终所得位串进行舍入的运算以使得最终所得位串具有特定位宽。举例来说,方法750可包括从最终所得位串的尾数位子集或指数位子集移除至少一个位以对存储在扩展行地址组件中的最终所得位串进行舍入。
在一些实施例中,方法750可包括接收通过舍入移除至少一个位的用户命令,响应于用户命令,最终所得位串具有由用户命令定义的位宽。举例来说,方法750可包括接收定义为递归运算的最终所得位串所请求的位宽的用户命令,以及对最终所得位串进行舍入以具有所请求的位宽。如上文所描述,此类位宽的非限制性实例可包括8位、16位、32位、64位等,且可基于将使用最终所得位串的应用程序。
在一些实施例中,如上文所提及,第一位串和第二位串可根据III型通用数(unum)格式或假定数格式格式化。在此类实施例中,方法750可包括在将第一运算的结果存储在扩展行地址组件中之前将第一运算的结果从III型unum格式或假定数格式转换为不同格式,和/或在将第二运算的结果存储在扩展行地址组件中之前将第二运算的结果从III型unum格式或假定数格式转换为不同格式。
在其中第一运算和第二运算进行为递归运算的一部分的一些实施例中,方法750可进一步包括确定第二运算的结果为递归运算的最终所得位串,且进行将最终所得位串转换为III型通用数格式或假定数格式的运算。举例来说,在第一运算、第二运算的进行和/或将第一运算的结果和/或第二的结果存储在外围电路系统中期间,第一位串、第二位串和/或表示第一运算的结果的位串可转换为不同于unum(例如,III型unum或假定数格式)的格式。因此,在一些实施例中,最终所得位串可(例如,通过例如图1和2A中说明的控制电路系统120/220的控制电路系统)从其存储在外围电路系统中的格式转换为unum格式。
在框758处,方法750可包括将使用通用数格式的第二运算的结果存储在外围电路系统中。举例来说,方法750可包括将第二运算的结果存储在耦合到存储器阵列但不同于所述存储器阵列的多个读出放大器(例如,分别在图1和2A中说明的读出放大器111和/或外围读出放大器211)和/或存储器阵列外围中的XRA组件中。在一些实施例中,第二运算的结果可存储在外围电路系统中,使得在框752处所进行的第一运算的结果经覆写。
尽管已在本文中说明且描述了具体实施例,但本领域的一般技术人员应了解,经计算以实现相同结果的布置可取代所展示的具体实施例。本公开意欲覆盖本公开的一或多个实施例的修改或变化。应理解,以上描述已以说明性方式而非限制性方式进行。对于本领域的技术人员而言在审阅上述描述之后上述实施例的组合及本文中未具体描述的其它实施例将是显而易见的。本公开的一或多个实施例的范围包括在其中使用以上结构和过程的其它应用。因此,本公开的一或多个实施例的范围应参考所附权利要求书以及此类权利要求被赋予的等效物的完整范围而确定。
在前述具体实施方式中,出于精简本公开的目的而将一些特征一并归到单个实施例中。本公开的这一方法不应理解为反映本公开的所公开实施例必须使用比每一权利要求中明确陈述的特征更多的特征的意欲。实情为,如所附权利要求书所反映,本发明主题在于比单个所公开实施例的所有特征要少。因此,所附权利要求书特此并入到具体实施方式中,其中每一权利要求就其自身而言作为单独实施例。
Claims (30)
1.一种设备,其包含:
多个读出放大器,其耦合到存储器阵列,所述存储器阵列包含与所述多个读出放大器的读出放大器的数量相同数量的行或列;以及
存储器阵列处理装置,其耦合到所述多个读出放大器和所述存储器阵列,其中所述处理装置配置成:
致使使用根据III型通用数格式或假定数格式格式化的一或多个位串的递归运算的进行;以及
致使表示所述递归运算的迭代结果的所得位串累加在所述多个读出放大器中。
2.根据权利要求1所述的设备,其中所述处理装置进一步配置成:
确定所述递归运算完成;以及
致使在所述确定之后对存储在所述多个读出放大器中的所述所得位串进行舍入的运算的进行,通过从所述所得位串的尾数位子集或指数位子集或两者中移除至少一个位使得最终所得位串具有特定位宽。
3.根据权利要求1所述的设备,其中所述多个读出放大器和所述存储器阵列包含存储器装置,且其中所述处理装置配置成在不将所述所得位串传送到所述存储器装置外部的电路系统的情况下,在所述存储器阵列内进行所述递归运算。
4.根据权利要求1至3中任一项所述的设备,其中所述处理装置配置成:
存取其中存储有表示所述递归运算的第一迭代的结果的第一所得位串的所述存储器阵列的地址空间;
存取其中存储有表示所述递归运算的第二迭代的结果的第二所得位串的所述存储器阵列的地址空间;以及
将表示使用所述第一所得位串和所述第二所得位串进行的运算的结果的位串存储在所述多个读出放大器中。
5.根据权利要求1至3中任一项所述的设备,其中所述处理装置配置成响应于用户所产生命令的接收而致使所述所得位串累加在所述多个读出放大器中。
6.根据权利要求1至3中任一项所述的设备,其中所述处理装置进一步配置成通过覆写所述多个读出放大器中的先前存储的所得位串而致使表示所述递归运算的迭代结果的所得位串累加在所述多个读出放大器中。
7.一种方法,其包含:
检索存储在存储器阵列的数据结构中的位串,其中所述位串表示算术运算或逻辑运算的进行的结果;
将所述位串存储在位于所述存储器阵列的外围的多个读出放大器中;
确定是否使用表示所述算术运算、所述逻辑运算或两者的进行的所述结果的所述位串或存储在所述存储器阵列中的位串;以及
将表示所述算术运算、所述逻辑运算或两者的进行的所述结果的所述位串或存储在所述存储器阵列中的所述位串用作递归运算的至少一部分的进行的操作数。
8.根据权利要求7所述的方法,其进一步包含用所述递归运算的所述部分的结果覆写存储在所述多个读出放大器中的所述位串。
9.根据权利要求7所述的方法,其进一步包含:
确定所述递归运算完成;
将所述递归运算的最终结果存储在所述多个读出放大器中;以及
从所述递归运算的所述最终结果的尾数位子集或指数位子集中移除至少一个位以将所述递归运算的所述最终结果舍入到预定位宽。
10.根据权利要求7至9中任一项所述的方法,其进一步包含:
使用处理装置使用所述处理装置所存储的至少一个位串来进行算术运算、逻辑运算或两者,以产生表示所述算术运算的所述进行的所述结果的所述位串;
将根据III型通用数格式或假定数格式格式化的表示所述算术运算、所述逻辑运算或两者的所述进行的所述结果的所述位串存储在所述存储器阵列的所述数据结构中。
11.根据权利要求7至9中任一项所述的方法,其进一步包含在将表示所述算术运算、所述逻辑运算或两者的所述进行的所述结果的所述位串存储在所述多个读出放大器中之前,使用所述处理装置将表示所述算术运算、所述逻辑运算或两者的所述进行的所述结果的所述位串从第一格式转换为第二格式。
12.根据权利要求7至9中任一项所述的方法,其进一步包含将存储在所述多个读出放大器中的所述位串的副本存储在所述存储器阵列中。
13.一种设备,其包含:
存储器阵列,其耦合到多个读出放大器;
处理装置,其耦合到所述存储器阵列和所述多个读出放大器,其中所述处理装置配置成:
确定所述存储器阵列内的数据结构中存储有第一位串和第二位串的相应地址位置,其中所述第一位串和所述第二位串各自表示算术运算、逻辑运算或两者的结果;
执行从所述存储器阵列检索所述第一位串和所述第二位串中的至少一个的命令;
致使所述第一位串和所述第二位串中的所述至少一个存储在所述多个读出放大器中;以及
使用存储在所述多个读出放大器中的所述第一位串和所述第二位串中的所述至少一个和存储在所述存储器阵列中的第三位串选择性地进行递归运算的一部分。
14.根据权利要求13所述的设备,其中所述存储器阵列、所述多个读出放大器和所述处理装置包括在存储器装置中,且其中所述处理装置配置成:
响应于从耦合到所述存储器装置的主机接收到的起始命令的接收而确定所述存储器阵列内存储有第一位串和第二位串的所述相应地址位置;
在不接收除所述起始命令以外的命令的情况下,执行从所述存储器阵列检索所述第一位串和所述第二位串中的所述至少一个的所述命令;以及
在不接收除所述起始命令以外的命令的情况下,致使所述第一位串和所述第二位串中的所述至少一个存储在所述多个读出放大器中。
15.根据权利要求13所述的设备,其中所述处理装置进一步配置成通过发送启用主存储器输入/输出(I/O)电路系统的信号而致使所述第一位串和所述第二位串中的所述至少一个存储在所述多个读出放大器中,且其中所述第一位串和所述第二位串中的所述至少一个经由所述主存储器I/O电路系统传送到所述阵列外部的电路系统。
16.根据权利要求13至15中任一项所述的设备,其中所述处理装置进一步配置成致使从存储在所述多个读出放大器中的所述第一位串和所述第二位串中的所述至少一个的尾数位子集或指数位子集中移除至少一个位,以对存储在所述多个读出放大器中的所述第一位串和所述第二位串中的所述至少一个进行舍入。
17.根据权利要求13至15中任一项所述的设备,其中所述处理装置配置成在所述第一位串和所述第二位串存储在所述数据结构中之前致使算术运算、逻辑运算或两者的进行。
18.根据权利要求13至15中任一项所述的设备,其中所述处理装置配置成致使所述第一位串和所述第二位串中的所述至少一个存储在所述多个读出放大器中作为递归运算的进行的一部分,其中所述第一位串和所述第二位串中的所述至少一个用作操作数。
19.一种方法,其包含:
在存储器阵列的控制电路系统内使用第一位串和第二位串进行第一运算,其中所述第一位串和所述第二位串以通用数格式或假定数格式格式化;
从所述存储器阵列或所述存储器阵列的所述外围中的存储位置检索第三位串;
在所述存储器阵列的所述控制电路系统内使用所述第一运算的所述结果和所述第三位串进行第二运算;以及
将所述第二运算的所述结果存储在位于所述存储器阵列的外围中的所述存储位置中。
20.根据权利要求19所述的方法,其中所述第一运算包含乘法运算,且其中所述第二运算包含将所述第一运算的所述结果与所述第三位串相加的运算。
21.根据权利要求19所述的方法,其中所述第二运算包含从所述第三位串减去所述第一运算的所述结果的运算或从所述第一运算的所述结果减去所述第三位串的运算。
22.根据权利要求19所述的方法,其中所述第一运算和所述第二运算进行为递归运算的一部分,且其中所述方法进一步包含:
确定所述第二运算的所述结果为所述递归运算的最终结果;以及
进行将所述第二运算的所述结果舍入到特定位宽的运算。
23.根据权利要求19至22中任一项所述的方法,其进一步包含将所述第二运算的所述结果从位于所述存储器阵列的所述外围中的所述存储位置复制到所述存储器阵列。
24.根据权利要求19至22中任一项所述的方法,其进一步包含:
从所述存储器阵列检索所述第二运算的所述结果;以及
使用所述第一运算的所述结果和所述第二运算的所述检索到的结果进行第三运算。
25.一种设备,其包含:
存储器阵列,其耦合到多个读出放大器;
处理装置,其耦合到所述存储器阵列和所述多个读出放大器,其中所述处理装置配置成:
致使使用第一位串和第二位串在所述存储器阵列的控制电路系统内进行第一算术运算、第一逻辑运算或两者;
致使所述第一算术运算、所述第一逻辑运算或两者的结果存储在所述多个读出放大器中;
致使所述第一算术运算、所述第一逻辑运算或两者的所述结果从所述多个读出放大器复制到所述存储器阵列;以及
致使使用所述第一位串或所述第二位串和所述第一算术运算、所述第一逻辑运算或两者的所述结果进行第二算术运算、第二逻辑运算或两者。
26.根据权利要求25所述的设备,其中所述处理装置进一步配置成选择性地使用存储在所述多个读出放大器中的所述第一算术运算、所述第一逻辑运算或两者的所述结果或存储在所述存储器阵列中的所述第一算术运算、所述第一逻辑运算或两者的所述结果。
27.根据权利要求25所述的设备,其中所述处理装置配置成:
确定所述第二算术运算、所述第二逻辑运算或两者的结果与递归运算的最终结果相对应;以及
致使所述递归运算的所述最终结果经舍入以使得所述递归运算的所述最终结果具有与其相关联的预定位宽。
28.根据权利要求25至27中任一项所述的设备,其中所述处理装置进一步配置成在致使所述第一算术运算、所述第一逻辑运算或两者的所述结果存储在所述多个读出放大器中之前,将所述第一算术运算、所述第一逻辑运算或两者的所述结果转换成不同于所述通用数格式或所述假定数格式的格式。
29.根据权利要求25至27中任一项所述的设备,其中所述处理装置进一步配置成:致使所述第一算术运算、所述第一逻辑运算或两者的进行,致使所述第一算术运算、所述第一逻辑运算或两者的所述结果存储在所述多个读出放大器中,以及在不存取所述处理装置外部的电路系统、所述存储器阵列和所述多个读出放大器的情况下,致使所述第一算术运算、所述第一逻辑运算或两者的所述结果从所述多个读出放大器复制到所述存储器阵列。
30.根据权利要求25至27中任一项所述的设备,其中所述处理装置配置成致使所述第一算术运算、所述第一逻辑运算或两者的所述结果存储在所述多个读出放大器中,且响应于用户命令的接收而致使所述第一算术运算、所述第一逻辑运算或两者的所述结果从所述多个读出放大器复制到所述存储器阵列。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/430,737 | 2019-06-04 | ||
US16/430,789 US11487699B2 (en) | 2019-06-04 | 2019-06-04 | Processing of universal number bit strings accumulated in memory array periphery |
US16/430,737 US10942890B2 (en) | 2019-06-04 | 2019-06-04 | Bit string accumulation in memory array periphery |
US16/430,689 | 2019-06-04 | ||
US16/430,789 | 2019-06-04 | ||
US16/430,689 US10942889B2 (en) | 2019-06-04 | 2019-06-04 | Bit string accumulation in memory array periphery |
PCT/US2020/028658 WO2020247077A1 (en) | 2019-06-04 | 2020-04-17 | Bit string accumulation in memory array periphery |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113924622A true CN113924622A (zh) | 2022-01-11 |
CN113924622B CN113924622B (zh) | 2022-09-09 |
Family
ID=73653021
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080041743.7A Active CN113924622B (zh) | 2019-06-04 | 2020-04-17 | 存储器阵列外围中的位串累加 |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP3980996A4 (zh) |
KR (1) | KR102440692B1 (zh) |
CN (1) | CN113924622B (zh) |
WO (1) | WO2020247077A1 (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100274990A1 (en) * | 2008-10-08 | 2010-10-28 | Mladen Wilder | Apparatus and Method for Performing SIMD Multiply-Accumulate Operations |
US20160225422A1 (en) * | 2015-02-03 | 2016-08-04 | Micron Technology, Inc. | Loop structure for operations in memory |
US20170103302A1 (en) * | 2015-10-08 | 2017-04-13 | Via Alliance Semiconductor Co., Ltd. | Neural network unit with neural processing units dynamically configurable to process multiple data sizes |
CN108649946A (zh) * | 2013-08-08 | 2018-10-12 | 美光科技公司 | 使用感测电路执行逻辑运算的设备及方法 |
US20190043560A1 (en) * | 2018-09-28 | 2019-02-07 | Intel Corporation | In-memory multiply and accumulate with global charge-sharing |
CN110036368A (zh) * | 2016-12-06 | 2019-07-19 | Arm有限公司 | 用于执行算术运算以累加浮点数的装置及方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3845009B2 (ja) * | 2001-12-28 | 2006-11-15 | 富士通株式会社 | 積和演算装置、及び積和演算方法 |
JP3845636B2 (ja) * | 2004-01-21 | 2006-11-15 | 株式会社東芝 | 関数近似値の演算器 |
US8386895B2 (en) * | 2010-05-19 | 2013-02-26 | Micron Technology, Inc. | Enhanced multilevel memory |
US9430735B1 (en) * | 2012-02-23 | 2016-08-30 | Micron Technology, Inc. | Neural network in a memory device |
US8869436B2 (en) | 2013-02-27 | 2014-10-28 | Taiwan Semiconductor Manufacturing Company, Ltd. | Resistive switching random access memory structure and method to recreate filament and recover resistance window |
US9158667B2 (en) * | 2013-03-04 | 2015-10-13 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
US10884957B2 (en) | 2018-10-15 | 2021-01-05 | Intel Corporation | Pipeline circuit architecture to provide in-memory computation functionality |
-
2020
- 2020-04-17 WO PCT/US2020/028658 patent/WO2020247077A1/en unknown
- 2020-04-17 CN CN202080041743.7A patent/CN113924622B/zh active Active
- 2020-04-17 EP EP20818144.6A patent/EP3980996A4/en active Pending
- 2020-04-17 KR KR1020227000052A patent/KR102440692B1/ko active IP Right Grant
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100274990A1 (en) * | 2008-10-08 | 2010-10-28 | Mladen Wilder | Apparatus and Method for Performing SIMD Multiply-Accumulate Operations |
CN108649946A (zh) * | 2013-08-08 | 2018-10-12 | 美光科技公司 | 使用感测电路执行逻辑运算的设备及方法 |
US20160225422A1 (en) * | 2015-02-03 | 2016-08-04 | Micron Technology, Inc. | Loop structure for operations in memory |
US20170103302A1 (en) * | 2015-10-08 | 2017-04-13 | Via Alliance Semiconductor Co., Ltd. | Neural network unit with neural processing units dynamically configurable to process multiple data sizes |
CN110036368A (zh) * | 2016-12-06 | 2019-07-19 | Arm有限公司 | 用于执行算术运算以累加浮点数的装置及方法 |
US20190043560A1 (en) * | 2018-09-28 | 2019-02-07 | Intel Corporation | In-memory multiply and accumulate with global charge-sharing |
Also Published As
Publication number | Publication date |
---|---|
KR102440692B1 (ko) | 2022-09-07 |
EP3980996A4 (en) | 2023-06-28 |
KR20220003674A (ko) | 2022-01-10 |
EP3980996A1 (en) | 2022-04-13 |
WO2020247077A1 (en) | 2020-12-10 |
CN113924622B (zh) | 2022-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111724832B (zh) | 用于存储器阵列数据结构正数运算的设备、系统及方法 | |
CN114008583B (zh) | 存储器中的位串运算 | |
CN112420092B (zh) | 位串转换 | |
CN111625183A (zh) | 涉及加速电路系统的系统、设备和方法 | |
CN111696610A (zh) | 用于位串转换的设备和方法 | |
CN113965205A (zh) | 位串压缩 | |
CN113805974A (zh) | 基于应用程序的数据类型选择 | |
US10942889B2 (en) | Bit string accumulation in memory array periphery | |
CN115668224A (zh) | 使用posit的神经形态运算 | |
CN113918117B (zh) | 动态精确度位串累加 | |
CN113961170B (zh) | 存储器中的算术操作 | |
US10942890B2 (en) | Bit string accumulation in memory array periphery | |
US11487699B2 (en) | Processing of universal number bit strings accumulated in memory array periphery | |
CN113924622B (zh) | 存储器阵列外围中的位串累加 | |
CN113906386B (zh) | 使用计算片块的位串运算 | |
CN115398392A (zh) | 算术逻辑单元 | |
CN113454916B (zh) | 基于主机的位串转换 | |
CN113641602B (zh) | 用于posit运算的加速电路系统 | |
CN114096948B (zh) | 位串查找数据结构 | |
CN111694762A (zh) | 用于位串转换的设备和方法 | |
CN113553278A (zh) | 用于posit运算的加速电路系统 | |
US20220156046A1 (en) | Bit string accumulation | |
CN113641602A (zh) | 用于posit运算的加速电路系统 | |
CN113495716A (zh) | 假定张量处理 | |
CN113805841A (zh) | 多个寄存器中的位串累加 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |