CN115552523A - 使用存储器内处理的基于计数器的乘法 - Google Patents

使用存储器内处理的基于计数器的乘法 Download PDF

Info

Publication number
CN115552523A
CN115552523A CN202180025927.9A CN202180025927A CN115552523A CN 115552523 A CN115552523 A CN 115552523A CN 202180025927 A CN202180025927 A CN 202180025927A CN 115552523 A CN115552523 A CN 115552523A
Authority
CN
China
Prior art keywords
multiplier
memory
bit
multiplicand
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.)
Pending
Application number
CN202180025927.9A
Other languages
English (en)
Inventor
D·尤达诺夫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Publication of CN115552523A publication Critical patent/CN115552523A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5318Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel with column wise addition of partial products, e.g. using Wallace tree, Dadda counters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods 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/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/525Multiplying only in serial-serial fashion, i.e. both operands being entered serially
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/607Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers number-of-ones counters, i.e. devices for counting the number of input lines set to ONE among a plurality of input lines, also called bit counters or parallel counters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Neurology (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Memory System (AREA)
  • Complex Calculations (AREA)
  • Dram (AREA)

Abstract

本公开涉及用于(举例来说)例如存储器内处理装置的存储器装置的系统及方法,所述存储器内处理装置被配置为使用总体计数运算在存储器中执行乘法运算。乘法运算可包含乘数与对应被乘数相乘的总和。输入可在存储器阵列内以特定配置布置。感测放大器可用于通过沿位线计数有效位来执行所述总体计数。一或多个寄存器可累加结果以用于执行所述乘法运算。

Description

使用存储器内处理的基于计数器的乘法
相关申请案
本申请案主张2020年3月31日申请且标题为“使用存储器内处理的基于计数器的乘法(COUNTER-BASED MULTIPLICATION USING PROCESSING IN MEMORY)”的第16/836,773号美国专利申请案的优先权,所述申请案的全部公开内容特此以引用方式并入本文中。
背景技术
通用处理器可与存储器组件及高速缓存对接,以对存储的数据执行重复计算。数据可加载到高速缓存中,处理器然后可存取数据,处理器可计算结果,且然后所述结果可存储在存储器中。处理器可通过处置矩阵元素来执行重复的或密集的线性代数运算。例如,处理器可执行读取/写入操作来提取数据、处理数据且将其存储在存储器中。这些通用处理器可用于执行乘法运算作为更复杂算法的部分,举例来说,例如卷积运算。除了通用处理器之外,例如存储器内处理装置的专用装置可包含存储器阵列及逻辑以对存储器阵列的内容执行运算。
附图说明
可参考附图更好地理解本公开的许多方面。附图中的组件不一定按比例绘制,而是强调清楚地说明本公开的原理。再者,在附图中,相似参考数字指贯穿若干视图的对应部分。
图1是根据各种实施例的存储器装置的图。
图2A到2B是根据各种实施例的使用总体计数(popcount)运算用公共乘数执行存储器内乘法的存储器装置的图。
图3是说明根据各种实施例的使用总体计数运算执行公共乘数的存储器内乘法的存储器装置的功能性的流程图。
图4A到4E是根据各种实施例的使用总体计数运算执行不同乘数的存储器内乘法的存储器装置的图。
图5是说明根据各种实施例的使用总体计数运算执行不同乘数的存储器内乘法的存储器装置的功能性的流程图。
图6是展示根据各种实施例的包含存储器装置的系统的示意图。
具体实施方式
本公开涉及使用总体计数运算在存储器装置中执行乘法的系统及方法。通过在存储器装置中执行乘法(例如,执行“存储器内”运算),乘法运算的至少一些运算数可存储在存储器中,将其分开加载在系统存储器、高速缓存、一些其它快速存储器或类似者中。通过执行乘法运算,本公开的存储器装置可包含例如寄存器、控制器及感测放大器的组件,以直接在存储器装置中执行乘法运算。
本公开描述使用总体计数运算的实施例。总体计数运算是在存储器装置中执行的运算,其中提供一系列存储器胞元作为输入,且计数高(“hi”)位(例如,有效位或“1”)的数量。例如,如果所述一系列存储器胞元包含二进制值[1,0,1,1,0,1],那么总体计数运算将产生数字4,因为有四个位具有值“1”(例如,有效位或hi位)。
本公开描述结构化存储器装置以执行总体计数运算作为乘法运算的一部分的各种方式。基本的乘法运算涉及乘数(A)及被乘数(B),其产生表达为“A x B”的乘积。更复杂的乘法运算可包含一个乘数(A)及多个被乘数(B及C),其中乘积表达为“A x B+A x C”或替代地表达为“A x(B+C)”。在这种情况下,被乘数被加在一起,且然后与乘数相乘。被乘数可被称为“被加数”,其是要被加在一起的运算数。因此,在此实例中,乘数(A)是公共乘数。更复杂的乘法运算可涉及对应于不同被乘数的不同乘数。例如,乘数(A及B)可对应于被乘数(C及D),使得所得乘积表达为“A x C+B x D”。在这种情况下,运算可被称为两个向量或序列[A,B]点乘[C,D]的“点积”,或者更广泛地,多于一个向量或序列的逐元素乘积的和。
在一些实施例中,存储器装置是用于实施通常作为卷积运算的一部分(例如在卷积神经网络中)的乘法运算的专用装置。存储器装置可用于实施卷积神经网络中的一或多个层。卷积神经网络可设计用于检测:图像数据中的图像特征、视频流中的运动特征、文本数据中的文本图案、多维复杂数据中的统计特征、科学过程及模拟中的科学特征、来自太空的天文数据中的天文特征、世界天气数据中的天气状况及基于其的预测、语音音频数据中的文字。卷积神经网络可用于检测计算机生成的图形、虚拟现实数据及增强现实数据中的特征或特性。可检测卫星图像、长曝光生成的图形、延时视频、慢动作视频的特征。卷积神经网络可被配置成对从例如数据存储库或数据库的各种源收集的数据的图形或可视表示执行特征检测。经受特征检测的数据可为结构化的数据、半结构化的数据、非结构化的数据、从机器生成的数据对象、数据日志、从远程源生成的实时数据、从多个源聚合的数据、通过网络接收的数据、已经由外部系统预处理的数据、已经受视觉过滤的数据、或至少部分由外部计算系统生成的数据。在数据内搜索的特征包含视觉图案、水平线、边缘、垂直线、各种形状、曲线、角度、特定颜色、定向。另外,简单的特征可组合以形成更复杂的特征,例如复杂的对象。
除了实施卷积神经网络之外,存储器装置可配置为存储器内线性代数加速器装置、存储器内神经形态处理器装置、具有计算能力的存储器双列直插存储器模块(DIMM)、存储器内图形处理器及具有计算能力的智能固态驱动器(SSD)。另外,存储器装置可包含NAND快闪存储器阵列、X点阵列或具有计算能力的其它存储器阵列。存储器装置可被配置为执行矩阵-矩阵乘法以及神经网络推断及训练。
下面的讨论参考图,以说明使用总体计数运算来执行乘法运算的存储器装置的各种实施例。
图1是根据各种实施例的存储器装置100的图。如图1中展示的存储器装置100可体现为存储器内处理(PIM)装置。然而,本公开不只限于PIM装置。PIM装置是包括一或多个存储器阵列及耦合到这些存储器内阵列的PIM处理器的半导体装置。PIM处理器被配置为使用存储在存储器阵列的胞元中的数据执行运算,而不需要通过存储器总线执行时间密集的输入/输出操作、提取操作或加载/存储操作。在这方面,PIM处理器可在没有缓冲存储器或高速缓存或总线的情况下存取至少一些数据以执行数据及计算运算。相反,主机处理器通过存储器总线或其它链路与一或多个存储器装置耦合。主机处理器可为安装在存储器装置外部的装置或系统中的中央处理单元(CPU)、数字信号处理器、图形处理单元(GPU)、专用处理器或通用处理器。主机处理器可安装在计算装置、膝上型计算机、移动装置、服务器、专用计算机、通用计算机中。
存储器装置100是集成电路。存储器装置100可为半导体芯片或裸片或裸片堆叠。存储器装置100可包含一或多个存储器阵列103。存储器阵列103包括多个行及列,且可根据行-列大小来定义。图1的实例展示具有标记为r1到rn的行及c1到cn的列的存储器阵列103。在每个行及列相交点处是被配置为存储乘法运算中的运算数的至少部分的存储器胞元。运算数可为乘数或被乘数。在这方面,例如十进制数“9”的运算数可跨多个存储器胞元存储为一系列二进制位“1001”。
存储器胞元可为存储一个二进制位的单电平胞元(例如,可具有两个值或状态的位,例如,编码为存储器胞元的低值或高值的“0”或“1”),或作为包含多个位或电平的多电平胞元(例如,可存储多个位的胞元)。多电平胞元的实例包含QCL NAND快闪存储器,其可具有编码为浮栅晶体管的Vt(阈值电压)的16个值或状态,从而每存储器胞元存储4位或4电平数据。为了说明由多电平胞元(例如编码2位二进制数的双电平胞元)构成的存储器阵列,十进制数“9”(表达为二进制数“1001”)可将四位二进制数的左部分(两个最高有效位)作为二进制数“10”存储在一个多电平胞元中,而将右部分(两个最低有效位)作为二进制数“01”存储在另一个双电平胞元中。在具有单电平存储器胞元的存储器装置中,十进制数“9”可占据至少四个单独的胞元以表示二进制数“1001”。
因此,存储器阵列103是用于将数据存储为可按行及列寻址的多个阵列元素的硬件组件。存储器装置100可包含在整个存储器装置100中组织的若干存储器阵列103。存储器阵列103可使用各种类型的技术、组织或方面来实施。存储器阵列可被定义为包含易失性存储器及非易失性存储器。易失性组件可为在掉电时不保留数据值的组件。非易失性组件可为在掉电时保留数据的组件。存储器阵列103可包括随机存取存储器(RAM)、只读存储器(ROM)、固态存储器阵列。RAM可包括静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)。存储器阵列103可包括固态存储器,例如快闪存储器、NOR快闪存储器(例如,NOR配置中的快闪存储器)或NAND快闪存储器(例如,NAND配置中的快闪存储器)。存储器阵列可为电阻RAM(ReRAM)、交叉点存储器或交叉开关3D存储器。可使用行、列或其它存储器地址来存取用于实施存储器阵列的每种类型的存储器技术。行可称为字线。字线可包括对应存储器胞元的晶体管栅极的端子。替代地,字线可直接连接到存储器胞元物质,例如用于电阻类或二极管类存储器胞元。列可称为位线。位线可包括构成存储器胞元的晶体管的源极及/或漏极、构成存储器胞元的电容器的电容器端子、构成存储器胞元的电阻器的电阻器端子、构成存储器胞元的二极管的二极管端子或其组合。
存储器阵列103包括外围电路系统,其可在存储器阵列103的外侧或为其一部分。外围电路系统可包含累加器106、控制器109、缓冲存储器112、系统链路115以及潜在的其它集成组件,举例来说,例如用于感测来自存储器阵列103的数据的感测放大器及用于将数据存储回存储器阵列103的驱动器。
累加器106可为例如融合乘法累加(FMA)单元106。累加器106可被配置成对包括(举例来说)例如乘数或被乘数的运算数的数据阵列(或矩阵)执行点积乘法运算。用于乘法运算的运算数可直接从存储器阵列103以及从控制器109供应。在一些实施例中,累加器106可专用于仅执行点积矩阵计算。累加器106可被配置为执行乘法累加运算,所述乘法累加运算计算输入运算数的乘积并将所述乘积与累加值相加。累加器106可包含一或多个寄存器,用于存储中间值作为乘法运算的一部分。
控制器109是存储器装置100的处理器的一部分。控制器109可包括在硬件中体现的集成电路系统或逻辑,其用于将数据存储到存储器阵列103中。另外,控制器109可从存储器阵列103外侧的位置接收。控制器109可实施以根据逻辑、微码或其它算法以特定模式选择位线及字线。
存储器装置100还可包含缓冲存储器112。缓冲存储器可被包含作为控制器109的部分及/或累加器106的一部分,或它可在控制器109及/或累加器106的外部,或它可经由内部总线(例如,系统链路115)连接到这些组件109及106。替代地,缓冲存储器112可为专门为本文描述的缓冲目的而分配的存储器阵列103的一部分。具体地说,分配给缓冲存储器的存储器阵列103的一部分可为阵列的具有更快存取(例如,具有到累加器106的更短路径)的一部分。缓冲存储器112可包括缓冲器,以在控制器109及累加器106执行乘法运算时暂时存储数据。控制器109及/或累加器106可向缓冲存储器112写入或从缓冲存储器112读取。例如,缓冲存储器112可用于存储中间结果作为乘法运算的部分。缓冲存储器112还可存储乘法运算的运算数的部分,举例来说,例如一或多个乘数,同时被乘数存储在存储器阵列103中。
存储器装置100的系统链路115可在存储器装置100与外部系统之间提供数据及/或控制信号。系统链路115可耦合到存储器装置100的各种组件,举例来说,例如存储器阵列103、累加器106、控制器109、缓冲存储器112及其它组件。因此,系统链路115可包含存储器装置100的各种组件间的内部链路,所述内部链路允许这些组件在彼此间交换数据及/或控制信号。系统链路115可包括输入/输出端口,以耦合到存储器装置100外侧的外部系统。系统链路115可为输入/输出(IO)总线,举例来说,例如DDR4总线或PCIe总线。在这方面,外部系统可将数据读取或写入到存储器阵列103、累加器106及缓冲存储器112。另外,外部系统可向控制器109传输控制信号以编程或以其它方式控制控制器109。
外部系统可包含具有PCB主板的主机处理器,其中存储器装置100通过例如DDR4、DDR5或PCIe或类似者的总线连接到主机处理器。外部系统可执行操作系统、应用程序、库、脚本或编程语言。外部系统可包含一或多个服务器机架或计算机或其它布置。服务器可为单个安装,或可分布在许多不同的地理位置。外部系统可包含多个计算装置,所述多个计算装置一起可包括代管计算资源、网格计算资源及/或任何其它分布式计算布置。在一些情况下,外部系统可对应于弹性计算资源,其中所分配的处理、网络、存储或其它计算相关资源的容量可随时间变化。外部系统可实施使用计算系统的资源的一或多个虚拟机。可在一或多个虚拟机上执行各种软件组件。外部系统还可包含额外存储器装置100。在这方面,存储器装置100的例子可查询、控制或存取安装在系统中的任何额外存储器装置100中的数据。
系统链路115可允许存储器装置100耦合到一起组合或分开实施卷积神经网络的外部系统。例如,存储器装置100可实施神经网络内的一个层或神经网络内的多个层。例如,存储器装置100可用于实施卷积层。系统链路115可提取存储器装置100的输出,并将其输入到定位于其它存储器装置或外部系统的其它部分中的神经网络的不同层中。神经网络中的池化层可从存储器装置100的系统链路115获得输出,可执行池化运算,且可将结果作为输入传递到存储器装置100中。例如,累加器106生成的输出数据可由系统链路115存取且由池化层在外部处理,其中所述结果经由系统链路115供应给存储器装置100的存储器阵列103以进行额外处理。下面的图提供可在(举例来说)例如图1的存储器装置100的存储器装置内发生的配置及运算的实例。
图2A到2B是根据各种实施例的使用总体计数运算用公共乘数执行存储器内乘法的存储器装置100的图。在图2A中,存储器装置100被配置为执行乘法运算,其中乘数203被应用到第一被乘数206a及第二被乘数206b的和。在图2A中展示的实例中,乘数203具有十进制数“6”的值,第一被乘数206a具有十进制数“7”的值,且第二被乘数206b具有十进制数“10”的值。替代地,根据乘法分配率,这可解释为6x7+6x10,而不是6x(7+10)。在这方面,A x(B+C)可表达为以下两个向量的点积:[A,A]x[B,C]。因此,图2A描绘其中公共乘数203应用到被乘数206a、206b的实施例。然而,任何数量的被乘数可被包含作为图2A中展示的乘法运算的部分。
存储器装置100可将第一被乘数206a存储在存储器阵列的第一位线(例如,BL 1)中,且可将第二被乘数206b存储在存储器阵列的第二位线(例如,BL 2)中。在一些实施例中,第一及第二位线在同一存储器阵列中。在其它实施例中,第一位线及第二位线在不同的阵列中。当在位线中存储被乘数206a、206b时,被乘数的值可占用多个存储器胞元,使得其跨越多个字线。例如,具有实例十进制数“7”的第一被乘数206a以二进制表示为“0111”。最低有效位“1”可存储在第一字线(例如,WL 1)处。第二位“1”可存储在第二字线(例如,WL 2)处。之后,第三位“1”可存储在第三字线(例如,WL 3)处。且最高有效位“0”可存储在第四字线(例如,WL 4)处。具有实例十进制数“10”的第二被乘数206b以二进制表示为“1010”。最低有效位“0”可存储在第一字线(例如,WL 1)处。第二位“1”可存储在第二字线(例如,WL 2)处。之后,第三位“0”可存储在第三字线(例如,WL 3)处。且最高有效位“1”可存储在第四字线(例如,WL 4)处。因此,被乘数206a、206b以位串行配置而存储。
乘数206可存储在存储器装置100的存储器阵列103、存储器装置的缓冲存储器112或某个其它源中。图2A展示将具有实例十进制数“6”(表示为二进制数“0110”)的乘法203应用到被乘数206a、206b的和的控制器109。
存储器装置100可包含感测放大器(SA)阵列212。感测放大器阵列212可包含多个感测放大器(例如,SA 1、SA 2)。在一些实施例中,每个感测放大器专用于对应的位线。例如,每个感测放大器可仅存取一个位线。在图2A的实例中,第一感测放大器(SA1)存取第一位线(BL 1),且第二感测放大器(SA 2)存取第二位线(BL 2)。当控制器109激活耦合到感测放大器的位线时,每个感测放大器接收输入。
感测放大器阵列212中的感测放大器被配置为当激活用于感测放大器的位线以及当激活一或多个字线时执行总体计数运算。感测放大器被配置为对由控制器109选择的所有存储器胞元的有效位(例如,表示为“1”或具有“hi”值的位)的数量进行计数。例如,计数可实施为长移位寄存器或链,其与感测放大器阵列的大小匹配,且集成在其内。在这种情况下,控制器将移出所有位。另一替代实施方案包含滚动纹波进位加法器。在此实施例中,最右感测放大器将其值发送到定位到左侧的感测放大器。当前感测放大器将来自右侧的结果与在位线上感测到的值累加,且将其发送到下一左侧感测放大器。这将继续进行,直到最终值被传输到控制器。在此实施例中,朝着控制器逐渐增加总线宽度将为滚动值提供更多带宽。另一实施例包含使用对数缩减树计数器/加法器。此实施例执行相对较快的计算,然而,它可需要相对较多的布线来连接各种组件。在又一实施例中,感测放大器阵列可包含具有旁路能力的温度计到二进制转换器。在此实施例中,绕过电流值为零(从位线感测)的感测放大器。这还可包含使用查找表。在另一实施例中,感测放大器阵列212包括快闪模数转换器(ADC)。
图2A描绘其中被乘数206a、206b的位位置沿着相同字线存储的实例。即,每个被乘数206a、206b的最低有效位存储在同一字线上,每个被乘数206a、206b的最高有效位存储在同一字线上,且这同样适用于其间的位。在其它实施例中,被乘数206a、206b可沿着不同的字线范围或部分重叠的字线范围存储。
图2B表示使用加在一起并与乘数203相乘的被乘数206a、206b执行图2A的乘法运算的实例。具体地说,图2B展示通过对乘数203的位进行排序来使用总体计数运算执行乘法的四个序列。存储器装置100可包含一或多个寄存器,举例来说,例如结果寄存器215及运算数寄存器224。结果寄存器215可存储和值221,其在每个序列处更新,直到乘法运算完成。在乘数的所有位排序后的和值221表示完成时的乘法结果223。和值的位位置218在每个序列递增,其中控制器根据乘数203的位位置选择性地执行累加运算。在下文更详细解释此。
在第一序列250中,乘数的位位置从位置1开始,其是乘数206的最低有效位。如图2B中展示,箭头用于说明乘数203的位位置的跟踪。控制器109被配置为激活字线且向累加器106及感测放大器阵列212发送控制信号。控制器109读取位置1处乘数203的值,所述值是二进制位“0”(例如,二进制数“0110”或十进制数“6”的最低有效位)。当所述值是例如二进制“0”或“低”的预定值时,控制器109在结果寄存器215中的当前位位置(第一序列250的位置1)处记录“0”。此后,位位置递增到位置2。
在第二序列251中,乘数203的位位置在位置2,其为二进制位“1”(例如,从二进制数“0110”或十进制数“6”的最低有效位起的第二位)。如果所述值是例如二进制“0”或“低”的预定值,那么控制器109在结果寄存器215中的当前位位置处记录“0”,例如在第一序列250的情况下。然而,由于乘数203在位置2的位值是二进制“1”,因此控制器执行运算数寄存器224的初始化运算以存储总体计数结果227、230。例如,第一次出现二进制“1”时,就会发生初始化运算。初始化运算包括对被乘数206a、206b执行总体计数运算以生成总体计数结果227,其中总体计数结果中的每个数字表示每个存储器行或其存储被乘数的一部分中的“hi”或“1”位的数量(替代地,其可为任何预定的选择值)。总体计数结果可作为展平二进制数230存储在运算数寄存器224中。总体计数结果227、230可保留在运算数寄存器224中,直到乘法运算完成。响应于存在于乘数203的位位置处的二进制“1”的存在,可仅执行一次总体计数运算。
为了执行总体计数运算,控制器109循序激活存储器阵列103的存储被乘数206a、206b的字线,以计数存在于被乘数206a、206b的每个位置处的二进制“1”的数量。例如,参考图2A,控制器109激活BL 1及BL 2,以对沿着这些位线存储的被乘数206a、206b执行总体计数运算。控制器109激活WL 1以执行第一总体计数运算。在BL 1、BL 2及WL 1激活的情况下,感测放大器阵列212计数一个二进制“1”的总数。具体地说,(BL 1,WL 1)具有二进制“1”,而(BL 2,WL 1)不具有二进制“1”。因此,对被乘数中最低有效位的总体计数运算将产生一个二进制“1”。
接下来,针对被乘数206a、206b的下一位位置激活WL 2。总体计数运算产生两个二进制“1”。接下来,针对被乘数206a、206b的下一位位置激活WL 3。总体计数运算产生一个二进制“1”。最后,针对被乘数206a、206b的下一位位置激活WL 4。总体计数运算产生一个二进制“1”。在对被乘数206a、206b的所有字线排序之后,总体计数结果227是范围从最高有效位到最低有效位的[1,1,2,1]。因此,总体计数结果跨一或多个被乘数206a、206b在每个位位置处计数二进制“1”的数量(例如,预定值)。总体计数结果227可展平为二进制数230,其中MSB=>[1,1,2,1]<=LSB等于二进制数“10001”。为了展平结果,展平运算包含从右到左的二进制求和及进位传播。例如,从LSB到MSB(从右到左)开始,如下执行展平阵列[1,1,2,1]:值“1”在第一位位置生成结果“1”,且值“0”将被进位到下一位位置。接下来,具有传入“0”进位值的值“2”在第二位位置生成“0”结果,而值“1”将被进位到下一位位置。接下来,具有传入“1”进位值的值“1”在第三位位置生成“0”结果,且值“1”将被进位到下一位位置。具有传入“1”进位值的值“1”在第四位位置生成“0”的结果,且值“1”将进位到下一位位置。具有传入“1”进位值的值“0”在第五位位置生成结果“1”且值“0”将被进位。此计算序列中的每个步骤可在从每个行生成总体计数结果时立即执行。在一些实施例中,展平运算可在执行每个存储器行的总体计数运算期间执行的存储器存取的背景中完全执行。因此,此展平运算可没有延时开销。
在生成总体计数结果227、230之后,初始化运算数寄存器224。可设置旗标以指示对于即时乘法运算不需要再次执行总体计数运算。除了检测乘数203的位置2处的二进制“1”之外,控制器109还在位置2处执行累加运算,其中在当前位位置处将当前和值221加到总体计数结果227、230。这产生当前和值“100010”。例如,在位置1中记录二进制“0”的情况下,累加运算将从位置2(即当前位置)开始加上总体计数结果“10001”。
在第三序列252中,乘数203的位位置在位置3,其为二进制位“1”(例如,从二进制数“0110”或十进制数“6”的最低有效位起的第三位)。响应于检测到二进制“1”,控制器使用当前和值221(即“100010”)执行从位置3开始的累加运算。具体地说,将结果寄存器215更新,使得新的和值是“100010”及总体计数结果230的和,即“10001”,但所述和发生在结果寄存器215的位置3处。换句话说,累加运算可表达为“100010”及“1000100”的二进制和。这产生当前和值221的结果为“1100110”。在运算数寄存器被初始化之后,不需要重新计算总体计数结果230。
在第四序列253中,乘数203的位位置在位置4,其为二进制位“0”(例如,二进制数“0110”或十进制数“6”的最高有效位)。响应于检测到二进制“0”(例如,预定的二进制值),控制器109绕过累加运算。因为所有位位置已排序,所以当前和值233是“1100110”的乘法结果,其表达为十进制数“102”,且也为6x(7+10)的乘法结果。
关于图2A及2B描述的乘法过程的实例展示如何使用多个总体计数运算将公共乘数203应用到被乘数206a、206b的和。例如,对被乘数206a、206b执行总体计数运算以生成表示被乘数206a、206b的和的总体计数结果230。被乘数206a、206b的此和存储在运算数寄存器224中。当控制器109对公共乘数203的位位置进行排序(从最低有效位到最高有效位)时,基于当前位位置及基于当前位位置的位值是否是预定值(例如,二进制“1”),选择性地累加总体计数结果230。换句话说,当对乘数位位置进行排序且在当前和值221的当前位位置处执行累加时,在检测到二进制“1”时,控制器109可选择性地累加结果寄存器215的当前和值221。
为了进一步说明图2A及2B的实例,实例展示在存储器装置100的存储器阵列103中存储至少一个被加数。被加数可为加在一起且然后与乘数203相乘的被乘数206a、206b。累加器106可执行融合乘法累加运算,以将乘数203与使用(若干)被加数作为输入而确定的总体计数结果230相乘。融合乘法累加运算可涉及通过对乘数203的至少一个位进行排序来选择性地累加当前和值221与总体计数结果230。在乘数203的位完成排序时生成融合乘法累加结果。
选择性累加可涉及在乘数203的当前位位置检测到第一预定值(例如,二进制“1”)时累加,及在乘数203的当前位位置检测到第二预定值(例如,二进制“0”)时不累加(例如,绕过累加运算)。与通过感测放大器执行总体计数计算所花费的时间相比,选择性累加延时可较小,因为后者可在本地快速寄存器中执行,而前者可作为存储器阵列存取的部分执行,其通常具有较长的延时。因此,为了加快存储器中的多个运算,实施例可涉及对其它存储器阵列的行执行总体计数运算,并存储其它乘数,同时对当前总体计数结果执行选择性累加。在这方面,可包含用于在下一总体计数结果从SA阵列到达时存储及/或展平所述下一总体计数结果的额外运算数寄存器。在另一实施例中,具有多个运算数寄存器的选择性累加器可充当多个阵列,使得它们的运算被执行总体计数运算的存储器阵列的存储器存取完全隐藏。
图3是说明根据各种实施例的使用总体计数运算执行公共乘数的存储器内乘法的存储器装置的功能性的流程图。流程图中的框可表示可由存储器装置100的控制器执行的微码、机器码、固件或其它软件。流程图的框可替代地表示方法300中的步骤。可由存储器装置100执行所述方法。
在项目303,存储器装置100可将一或多个被乘数206a、206b存储在一或多个存储器阵列中。被乘数206a、206b可沿着分开的位线以位串行配置而存储。每个被乘数206a、206b的位位置可定位于相同字线上或不同字线上。
在项目306,存储器装置100识别乘数203的当前位位置。存储器装置可从乘数203的最低有效位(例如,位置1)开始。可跟踪当前位位置且将其存储在(举例来说)例如缓冲存储器112的存储器中。当开始乘法运算时,位位置从位置1开始,且然后递增通过乘数203的每个位位置,直到处置乘数的最高有效位。
在项目309,存储器装置100检查乘数203在当前位位置的值,以确定它是第一预定值(例如,二进制“1”或“hi”)或第二预定值(例如,二进制“0”或“低”)。如果所述值是第二预定值(例如,二进制“0”或“低”),那么在项目312,存储器装置100在当前位位置处在结果寄存器215中记录二进制“0”。结果寄存器215存储当前和值221,其被更新,直到乘法运算完成。此后,在项目315,存储器装置100排序到乘数203的下一位位置。这完成处置一个位位置的序列。
如果乘数203的当前位是第一预定值(例如,二进制“1”或“hi”),那么存储器装置100在318检查是否计算总体计数结果330。如果没有,那么在321,存储器装置100对被乘数206a、206b执行总体计数运算。例如,存储器装置100可激活存储被乘数206a、206b的存储器胞元的位线及字线,且然后使用感测放大器阵列212来计数二进制“1”的数量。
可将总体计数结果227展平为表示总体计数结果230的二进制数。在数学上,总体计数结果230表示被乘数的和(例如,作为被加数处理)。
在项目324,将总体计数结果230存储在运算数寄存器224中。可设置指示运算数寄存器224包含总体计数结果230的旗标。
在项目327,存储器装置基于总体计数230结果及乘数203的当前位位置而累加当前和值。由于累加运算是基于所述值是否对应于乘数203的当前位来执行的,因此累加运算是选择性的。例如,当对乘数203的位位置进行排序时,响应于检测到二进制“1”而选择性地执行累加运算。另外,总体计数结果230被加到当前位位置的当前和值。存储器装置100然后进行到项目315。如果已处置乘数的所有位位置,那么乘法过程结束,且当前和值为乘法结果。
图4A到2E是根据各种实施例的使用总体计数运算执行不同乘数的存储器内乘法的存储器装置的图。图4A说明使用多个乘数402a、402b及对应被乘数405a、405b执行乘法运算的实例。例如,图4A说明存储器装置100,其将第一乘数402a与第一被乘数405a相乘,且将所述结果与第二乘数402b及第二被乘数405b的乘法相加。在图4A中描绘的实例中,第一乘数402a具有十进制数“6”的值,第一被乘数405a具有十进制数“9”的值,第二乘数402b具有十进制数“10”的值,且第二被乘数405b具有十进制数“13”的值。因此,图4A描绘其中将不同乘数402a、402b应用到相应被乘数405a、405b的实施例。然而,任何数量的乘数及被乘数可被包含作为图4A中展示的乘法运算的部分。根据上下文,术语“乘数”及“被乘数”可互换。例如,被乘数405可用作乘数,且乘数402可用作被乘数。
图4A展示乘法运算的不同运算数(例如,乘数402a、402b及被乘数405a、405b),其中运算数以位串行配置而存储,且其中每个运算数的位位置共享相同的字线。例如,从运算数的最低有效位开始,运算数的位沿着第一字线(WL 1)存储,且范围到第四字线(WL 4)。第一乘数402a沿第一位线(BL 1)存储,第一被乘数405a沿第二位线(BL 2)存储,第二乘数402b沿第三位线(BL 3)存储,且第二被乘数405b沿第四位线(BL 4)存储。
图4A描绘其中乘数402a、402b沿着奇数位线存储,且被乘数405a、405b沿着偶数位线存储的实例。在这方面,位线可在存储乘数402a、402b与存储被乘数405a、405b之间交替。
另外,存储器装置100可被配置使得连续的位线对耦合到相同的感测放大器。例如,BL 1及BL 2耦合到第一感测放大器SA 1,且BL 3及BL 4耦合到第二感测放大器SA 2。在这方面,存储乘数及对应被乘数的位线耦合到相同的感测放大器。
图4A的实例中说明的乘法运算可表示生成点积结果的点积计算。例如,乘数可来自第一矩阵,且被乘数可来自第二矩阵。点积计算用于将第一矩阵与第二矩阵相乘以生成点积结果。点积计算可用作卷积神经网络中使用的特征映射中值。例如,一个矩阵可包括卷积滤波器,而另一矩阵可包括经受使用卷积滤波器进行特征检测的数据的一部分。
尽管图4A描绘配置存储器装置以使用多个乘数402a、402b及被乘数405a、405b执行乘法运算的一些实施例,但其它布置在本公开的范围内。例如,在图4A的乘法运算中使用的运算数可存储在相同存储器阵列103的不同位线上或存储在不同存储器阵列103的位线中。例如,第一乘数402a及第二乘数402b可存储在第一存储器阵列103中,而第二被乘数405a及第二被乘数405b可存储在第二存储器阵列103中。来自第一及第二存储器阵列的位线可与相同的感测放大器耦合。作为另一实例,乘数402a、402b可沿着第一位线存储,而被乘数405a、405b可沿着第二位线存储。作为另一实例,乘数402a及被乘数405a可沿着第一位线存储,而乘数402a及被乘数405b可沿着第二位线存储。另外,在一些实施例中,乘数402a、402b可由控制器109从存储器阵列103以外的存储器接收。例如,乘数402a、402b可存储在缓冲存储器112中或经由系统链路115从外部源接收。在另一实施例中,每个感测放大器可具有其本地的相应寄存器来存储其乘数(或被乘数),且对应的被乘数(或乘数)从存储器阵列存取。
图4B到4E通过展示在对乘数402a、402b的每个位位置进行排序时的乘法运算而建立在图4A的实例上。图4B展示乘数402a、402b的位位置1处的乘法运算。控制器109激活存储乘数402a、402b的位线。在这种情况下,第一乘数402a沿着BL 1存储,且第二乘数402b沿着BL 3存储。图4B通过呈现沿BL 1及BL 3的箭头来说明这些位线的激活。控制器109还选择对应于乘数402a、402b的位置1的字线,在实例中,所述字线是WL 1。WL 1的激活通过在此字线处呈现箭头来展示。第一感测放大器SA 1检测二进制“0”,且第二感测放大器SA 2也检测二进制“0”。当对于所有乘数在其当前位位置仅检测到二进制“0”时,控制器109记录二进制“0”作为结果寄存器423的当前和值426,作为当前位位置429。基于特定位位置仅存在二进制“0”,控制器绕过总体计数运算及累加运算。此后,当前位位置递增1到乘数402a、402b的下一位位置。
图4C展示乘数402a、402b的位位置2处的乘法运算。控制器109激活存储乘数402a、402b的位线,所述位线是BL 1及BL 3。图4C通过呈现沿BL 1及BL 3的箭头(具有数字1)来说明这些位线的激活。控制器109接着选择对应于乘数402a、402b的位置2的字线,在实例中,所述字线是WL 2。WL 2的激活通过在此字线处呈现箭头来展示。第一感测放大器SA 1检测二进制“1”,且第二感测放大器SA 2也检测二进制“1”。对于在当前位置具有二进制“1”的每个乘数402a、402b,识别对应的被乘数405a、405b,且对所识别的被乘数405a、405b执行总体计数运算。例如,由于第一乘数402a在位置2产生二进制“1”,因此选择其对应的被乘数(例如,第一被乘数405a)的位线。类似地,由于第二乘数402b也在位置2产生二进制“1”,因此选择其对应被乘数(例如,第二被乘数405b)的位线。图4C通过呈现沿BL 2及BL 4的箭头(具有数字2)来说明这些位线的激活。
然后,通过激活与所选被乘数相关联的字线,对所选被乘数405a、405b执行总体计数运算。在这种情况下,总体计数运算包含激活WL 1(其产生两个“1”的计数)、激活WL 2(其产生零个“1”的计数)、激活WL 3(其产生一个“1”的计数)及激活WL 4(其产生两个“1”的计数)。因此,总体计数结果436是MSB=>[2,1,0,2]<=LSB。将总体计数结果436展平为二进制产生数“10110”,其是存储在运算数寄存器433中的总体计数结果的二进制版本。总体计数结果439表示所选被乘数405a、405b的和。
在生成总体计数结果之后,控制器109将总体计数结果439与存储在结果寄存器423中的当前和值426相加,以更新结果寄存器423中的当前值426。再者,累加运算发生在位位置2。这产生当前和值426“101100”。此后,当前位位置递增1到乘数402a、402b的下一位位置。
图4D展示乘数402a、402b的位位置3处的乘法运算。控制器109再次激活存储乘数402a、402b的位线,所述位线是BL 1及BL 3。图4D通过呈现沿BL 1及BL 3的箭头(具有数字1)来说明这些位线的激活。控制器109接着选择对应于乘数402a、402b的位置3的字线,在实例中,所述字线是WL 3。WL 3的激活通过在此字线处呈现箭头来展示。第一感测放大器SA 1检测二进制“1”,且第二感测放大器SA 2也检测二进制“0”。对于在当前位置具有二进制“1”的每个乘数402a,识别对应的被乘数405a,且对所识别的被乘数405a执行总体计数运算。例如,由于第一乘数402a在位置3产生二进制“1”,因此选择其对应的被乘数(例如,第一被乘数405a)的位线。然而,由于第二乘数402b在位置3产生二进制“0”,因此取消激活其对应被乘数(例如,第二被乘数405b)的位线。图4D通过呈现沿BL 2的箭头(具有数字2)来说明此位线的激活。
然后,通过激活与所选被乘数相关联的字线,对所选被乘数405a执行总体计数运算。在这种情况下,总体计数运算包含激活WL 1(其产生一个“1”的计数)、激活WL 2(其产生零个“1”的计数)、激活WL 3(其产生零个“1”的计数)及激活WL 4(其产生一个“1”的计数)。因此,总体计数结果436是[1,0,0,1]。将总体计数结果436展平为二进制产生数“1001”,其是存储在运算数寄存器433中的总体计数结果的二进制版本。总体计数结果439表示所选被乘数405a的和。当仅选择一个被乘数405a时,和等于被乘数405a的值。
在生成总体计数结果之后,控制器109将总体计数结果439与存储在结果寄存器423中的当前和值426相加,以更新结果寄存器423中的当前值426。再者,累加运算发生在位位置3。这产生当前和值426“1010000”。此后,当前位位置递增1到乘数402a、402b的下一位位置。
图4E展示乘数402a、402b的位位置4处的乘法运算。控制器109再次激活存储乘数402a、402b的位线,所述位线是BL 1及BL 3。图4E通过呈现沿BL 1及BL 3的箭头(具有数字1)来说明这些位线的激活。控制器109接着选择对应于乘数402a、402b的位置4的字线,在实例中,所述字线是WL 4。WL 4的激活通过在此字线处呈现箭头来展示。第一感测放大器SA 1检测二进制“0”,且第二感测放大器SA 2也检测二进制“1”。对于在当前位置具有二进制“1”的每个乘数402b,识别对应的被乘数405b,且对所识别的被乘数405b执行总体计数运算。例如,由于第一乘数402a在位置4产生二进制“0”,因此取消激活其对应的被乘数(例如,第一被乘数405a)的位线。而且,由于第二乘数402b在位置4产生二进制“1”,因此选择其对应被乘数(例如,第二被乘数405b)的位线。图4D通过呈现沿BL 4的箭头(具有数字2)来说明此位线的激活。
然后,通过激活与所选被乘数相关联的字线,对所选被乘数405b执行总体计数运算。在这种情况下,总体计数运算包含激活WL 1(其产生一个“1”的计数)、激活WL 2(其产生零个“1”的计数)、激活WL 3(其产生一个“1”的计数)及激活WL 4(其产生一个“1”的计数)。因此,总体计数结果436是[1,0,1,1]MSB=>[1,1,0,1]<=LSB。将总体计数结果436展平为二进制产生数“1101”,其是存储在运算数寄存器433中的总体计数结果的二进制版本。总体计数结果439表示所选被乘数405b的和。
在生成总体计数结果之后,控制器109将总体计数结果439与存储在结果寄存器423中的当前和值426相加,以更新结果寄存器423中的当前值426。再者,累加运算发生在位位置4。这产生当前和值426“10111000”(十进制为184)。由于控制器从最低有效位到最高有效位对乘数的所有位位置进行排序,乘法运算完成:184=6x 9+10x 13。结果寄存器423中的值表示乘法结果445,当运算数表示矩阵元素时,乘法结果445也可为点积结果。
图5是说明根据各种实施例的使用总体计数运算执行不同乘数的存储器内乘法的存储器装置的功能性的流程图。流程图中的框可表示可由存储器装置100的控制器执行的微码、机器码、固件或其它软件。流程图的框可替代地表示方法500中的步骤。可由存储器装置100执行所述方法。
在项目501,存储器装置100可将一或多个被乘数405a、405b存储在一或多个存储器阵列中。在一些实施例中,存储器装置100可存储乘数。被乘数405a、406b可沿着分开的位线以位串行配置而存储。每个被乘数405a、406b的位位置可定位于相同字线上或不同字线上。
在项目504,存储器装置100识别乘数402a、402b的当前位位置。存储器装置100可从乘数402a、402b的最低有效位(例如,位置1)开始。可跟踪当前位位置且将其存储在(举例来说)例如缓冲存储器112的存储器中。当开始乘法运算时,位位置从位置1开始,且然后递增通过乘数402a、402b的每个位位置,直到处置乘数的最高有效位。
在项目507,存储器装置100检查乘数402a、402b在当前位位置的值,以确定它是第一预定值(例如,二进制“1”或“hi”)或第二预定值(例如,二进制“0”或“低”)。如果所述值是所有乘数402a、402b的第二预定值(例如,二进制“0”或“低”),那么在项目510,存储器装置100在当前位位置处在结果寄存器423中记录二进制“0”。结果寄存器423存储当前和值426,其被更新,直到乘法运算完成。此后,在项目513,存储器装置100排序到乘数402a、402b的下一位位置。这完成处置一个位位置的序列。
如果乘数402a、402b的任何当前位等于第一预定值(例如,二进制“1”或“hi”),那么在516,存储器装置100选择对应于在当前位位置具有二进制“1”或“hi”值的乘数的被乘数405a、405b。控制器109可选择与存储所选被乘数405a、405b的胞元相关联的位线。
在项目519,存储器装置100对所选被乘数405a、405b执行总体计数运算。例如,存储器装置100可激活存储被乘数405a、406b的存储器胞元的位线及字线,且然后使用感测放大器阵列212来计数二进制“1”的数量。
可将总体计数结果227展平为表示总体计数结果439的二进制数。在数学上,总体计数结果439表示所选被乘数的和(例如,作为被加数处理)。
在项目522,将总体计数结果439存储在运算数寄存器433中。
在项目525,存储器装置100基于总体计数结果439及乘数405a、405b的当前位位置而累加当前和值。由于累加运算是基于任何值是否对应于乘数402a、402b的当前位来执行的,因此累加运算是选择性的。例如,当对乘数402a、402b的任一者的位位置进行排序时,响应于检测到二进制“1”而选择性地执行累加运算。另外,总体计数结果439被加到当前位位置的当前和值。存储器装置100然后进行到项目513。如果已处置乘数的所有位位置,那么乘法过程结束,且当前和值为乘法结果。在存取下一乘数及/或执行总体计数运算时,可同时对当前位位置执行累加运算。
图6说明根据本公开的一些实施例的包含存储器装置100的实例联网系统600。图6说明作为联网系统600的部分的计算装置602的实例的实例部分。图6展示如何将此类计算装置集成到各种机器、设备及系统中,例如IoT(物联网)装置、移动装置、通信网络装置及设备(例如,参见基站630)、器具(例如,参见器具640)及车辆(例如,参见车辆650)。
联网系统600的计算装置602及其它计算装置(例如,参见计算装置622a、622b、622c及622d)可通信地耦合到一或多个通信网络620。计算装置602包含(例如)总线606、控制器608(例如,CPU)、其它存储器610、网络接口612、存储系统614、其它组件616(例如,在移动或计算装置中找到的任何类型的组件、GPS组件、输入/输出(I/O)组件、各种类型的用户接口组件、传感器、相机等)及存储器装置100。其它组件616还可包含一或多个用户接口(例如,GUI、听觉用户接口、触觉用户接口等)、显示器、不同类型的传感器、触觉、音频及/或视觉输入/输出装置、额外专用存储器、一或多个额外控制器(例如GPU)、或其任何组合。总线606通信地耦合控制器608、其它存储器610、网络接口612、数据存储系统614及其它组件616,且在一些实施例中可将此类组件耦合到存储器装置100。例如,存储器装置100的系统链路115可耦合到总线606。
计算装置602包含计算机系统,所述计算机系统至少包含控制器608、其它存储器610(例如,随机存取存储器(RAM)、只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM)(例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM))、静态随机存取存储器(SRAM)、交叉点或交叉开关存储器、交叉开关存储器等)、存储器装置100及数据存储系统614,其可经由总线606(其可包含多个总线)彼此通信。在一些实施例中,存储器装置100可不通过总线606通信。
换句话说,图6包含计算装置602的框图,计算装置602具有本公开的实施例可在其中操作的计算机系统。在一些实施例中,计算机系统可包含一组指令,用于在执行时使机器执行本文讨论的方法。在此类实施例中,所述机器可连接(例如,经由网络接口612联网)到局域网(LAN)、内联网、外联网及/或因特网(例如,参见网络620)中的其它机器。机器可在客户端-服务器网络环境中以服务器或客户端机器的身份操作,在对等(或分布式)网络环境中作为对等机器操作,或在云端计算基础设施或环境中作为服务器或客户端机器操作。
控制器608表示一或多个通用处理装置,例如微处理器、中央处理单元或类似物。更特定来说,处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、单指令多数据(SIMD)、多指令多数据(MIMD)或实施其它指令集的一个处理器或实施指令集组合的多个处理器。控制器608还可为一或多个专用处理装置,例如ASIC、可编程逻辑(例如FPGA)、数字信号处理器(DSP)、网络处理器或类似物。控制器608经配置以执行用于执行本文所论述的操作及步骤的指令。控制器608可进一步包含例如网络接口612的网络接口装置,以通过一或多个通信网络(例如网络620)进行通信。
数据存储系统614可包含其上存储一或多组指令或体现本文中描述的方法或功能中的任一者或多者的软件的机器可读存储媒体(也称为计算机可读媒体)。数据存储系统614可具有执行能力,例如它能至少部分地执行驻留在数据存储系统中的指令。指令在其由计算机系统执行期间还可完全或至少部分地驻留在另一存储器610及存储器装置100中的至少一者内及/或驻留在控制器608内,另一存储器610及存储器装置100中的至少一者以及控制器608也构成机器可读存储媒体。另一存储器610可为或包含计算装置602的主存储器或系统存储器。另一存储器610及存储器装置100可具有执行能力,例如它能至少部分地执行驻留在计算装置602的任何存储器中的指令。
如提及,联网系统600包含计算装置,且计算装置中的每一者可包含一或多个总线、控制器、存储器、网络接口、存储系统及其它组件。此外,图6中展示及本文描述的计算装置中的每一者可包含移动装置或类似者或为其的一部分,例如,智能手机、平板计算机、IoT装置、智能电视、智能手表、眼镜或其它智能家用电器、车载信息系统、可穿戴智能装置、游戏机、PC、数码相机或其任何组合。如展示,计算装置可连接到网络620,网络620可包含例如蓝牙或类似者的本地装置网络、广域网(WAN)、局域网(LAN)、内联网、例如4G或5G的移动无线网络、外联网、因特网及/或其任何组合。在一些实施例中,如用连接619展示,存储器装置100可包含至少一个网络接口,以便其可经由通信网络620与其它装置分开通信。例如,系统链路115可耦合到通信网络620。在这方面,存储器装置100的存储器模块或存储器模块系统可具有其自己的网络接口,使得此组件可经由通信网络620与其它装置分开通信。
本文中描述的计算装置中的每一者可为以下者或可由以下者替换:个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络器具、服务器、网络路由器、交换机或网桥或能够(循序或以其它方式)执行指定由机器所采取的动作的一组指令的任何机器。
而且,虽然针对图6中展示的计算装置602说明单个机器,但是术语“机器”也应被认为包含个别地或联合地执行一组(或多组)指令以执行本文论述的方法或操作中的一或多者的机器的任何集合。而且,所说明的计算装置以及计算系统中的每一者可各包含至少总线及/或主板、一或多个控制器(例如一或多个CPU)、可包含暂时数据存储装置的主存储器、至少一种类型的网络接口、可包含永久数据存储装置的存储系统及/或其任何组合。在一些多装置实施例中,一个装置可完成本文描述的方法的一些部分,然后通过网络将完成的结果发送到另一装置,使得另一装置可继续进行本文描述的方法的其它步骤。
虽然存储器、控制器和数据存储部分展示为单个部分,但每个部分应包含可存储指令并执行其相应操作的一或多个部分。术语“机器可读存储媒体”也应被认为包含能够存储或编码一组指令以供机器执行并且致使机器执行本公开的方法中的任一者或多者的任何媒体。因此,术语“机器可读存储媒体”应被认为包含(但不限于)固态存储器、光学媒体及磁性媒体。
除非另有具体说明,否则例如短语“X、Y或Z中的至少一者”的析取性语言在上下文中被理解为通常用于呈现项目、术语等可为X、Y或Z或其任何组合(例如,X、Y及/或Z)。因此,此析取语言通常不希望且不应该暗示某些实施例要求各存在至少一个X、至少一个Y或至少一个Z。
已经根据对计算机存储器内的数据位的运算的算法及符号表示来呈现前述详细描述的某些部分。这些算法描述及表示是数据处理领域的技术人员用来最有效地向所属领域的其他技术人员传达其工作实质的方式。此处,算法通常被视为导致所需结果的自洽操作序列。所述操作是需要对物理量进行物理操纵的操作。通常但不是必须的,这些量采用能够被存储、组合、比较及以其它方式操纵的电或磁信号的形式。已证明方便的是,主要出于通用的原因,有时将这些信号称为位、值、元素、符号、字符、项目、数字或类似者。
然而,应牢记,所有这些及类似术语均应与适当物理量相关联且仅为应用于这些量的方便标签。本公开可涉及计算机系统或类似电子计算装置的动作及过程,其将表示为计算机系统的寄存器及存储器内的物理(电子)量的数据操纵及变换为类似地表示为计算机系统存储器或寄存器或其它此类信息存储系统内的物理量。
本公开还涉及用于执行本文中的操作的设备。此设备可经特定构造用于预期目的,或者其可包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此计算机程序可存储在计算机可读存储媒体中,例如任何类型的磁盘,包含软盘、光盘、CD-ROM及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡或适用于存储电子指令的任何类型的媒体,其各耦合到计算机系统总线。
本文中呈现的算法及显示器并不固有地与任何特定计算机或其它设备相关。各种通用系统可与根据本文的教示的程序一起使用,或者可证明构造更专用设备来执行所述方法是方便的。用于各种这些系统的结构将如下文描述中陈述那样出现。另外,本公开并非是参考任何特定编程语言描述。将了解,可使用各种编程语言来实施如本文所描述的本公开的教示。
本公开可被提供为计算机程序产品或软件,其可包含其上存储有指令的机器可读媒体,所述指令可用于对计算机系统(或其它电子装置)进行编程以执行根据本公开的过程。机器可读媒体包含用于以机器可读的形式存储信息的任何机构(例如计算机)。在一些实施例中,机器可读(例如计算机可读)媒体包含机器(例如计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
应强调,本公开的上述实施例仅仅是为了清楚地理解本公开的原理而阐述的实施方案的可能实例。可对上述实施例进行许多变化和修改,而大体上不脱离本公开的精神及原理。所有此类修改及变化都希望包含在本公开的范围内,并受随附权利要求保护。

Claims (21)

1.一种系统,其包括:
至少一个存储器装置;
存储器装置的至少一个存储器阵列;
所述至少一个存储器阵列的多个存储器胞元,所述多个存储器胞元能经由多个位线及多个字线存取,其中至少一个被乘数存储在所述存储器阵列中,且至少一个乘数存储在所述存储器装置中;
所述至少一个存储器装置经配置以:
基于对所述至少一个被乘数执行的多个总体计数运算,生成所述至少一个乘数的和;及
基于所述和且通过对所述乘数的位进行排序来生成乘法结果。
2.根据权利要求1所述的系统,其中,响应于乘数的第一位在对应位置具有第一预定义值,基于当前和值与总体计数结果的累加来生成所述和。
3.根据权利要求2所述的系统,其中,响应于所述乘数的所述位在对应位置具有第二预定义值,基于对位置进行排序而不累加来生成所述和。
4.根据权利要求1所述的系统,其中至少一个被乘数沿着对应的位线存储。
5.根据权利要求4所述的系统,其中所述多个总体计数运算包括针对所述至少一个被乘数的每个位位置,对具有所述第一预定义值的位的数量进行计数。
6.根据权利要求5所述的系统,其中所述至少一个被乘数的所述位位置沿着相同字线存储。
7.根据权利要求4所述的系统,其进一步包括多个感测放大器,其中每个感测放大器耦合到对应的位线,其中所述多个感测放大器用于执行所述多个总体计数运算。
8.一种系统,其包括:
至少一个存储器装置;
存储器装置的至少一个存储器阵列;
所述至少一个存储器阵列的多个存储器胞元,所述多个存储器胞元能经由多个位线及多个字线存取,其中至少一个被乘数存储在所述存储器阵列中,且对应于所述至少一个被乘数的至少一个乘数存储在所述存储器阵列中;及
所述存储器装置进一步被配置为基于对所述至少一个被乘数执行的多个总体计数运算来生成所述至少一个被乘数与所述至少一个乘数的点积结果,其中所述多个总体计数运算是通过对所述至少一个乘数的位进行排序来选择性地执行。
9.根据权利要求8所述的系统,其中,一组总体计数运算针对所述至少一个乘数的位的每个位位置生成总体计数结果。
10.根据权利要求9所述的系统,其中每个总体计数结果是通过选择性地对所述至少一个被乘数应用多个总体计数运算来生成,且每个总体计数运算包括针对所述至少一个被乘数的每个位位置,对具有第一值的位的数量进行计数。
11.根据权利要求10所述的系统,其中每个总体计数结果是响应于所述至少一个乘数的位在对应的位位置具有第一预定义值而生成,且响应于所述至少一个乘数的位在对应的位位置具有第二预定义值而绕过。
12.根据权利要求10所述的系统,其中所述至少一个乘数沿奇数位线存储,其中所述至少一个被乘数沿偶数位线存储。
13.根据权利要求10所述的系统,其中每对连续位线耦合到相应的感测放大器。
14.根据权利要求10所述的系统,其中多个点积计算中的每个点积计算是从具有对应被乘数的乘数群组产生的。
15.一种方法,其包括:
将多个被乘数及对应的乘数存储在存储器装置中,所述存储器装置包括能经由多个位线及多个字线存取的多个存储器胞元;
通过对每个被乘数及对应的乘数的乘法求和来生成点积结果,其中所述点积结果是通过以下生成的:
对所述乘数的位的位置排序;
基于对应乘数的当前位位置的位值,对所述被乘数选择性地应用多个总体计数运算以产生总体计数结果;及
选择性地累加所述至少一个总体计数结果;
其中在完成所述排序时生成所述点积结果。
16.根据权利要求15所述的方法,其中所述点积结果被生成作为卷积神经网络中使用的特征映射中的值。
17.根据权利要求15所述的方法,其中所述乘数存储在第一存储器阵列中,且其中所述被乘数存储在不同于所述第一存储器阵列的第二存储器阵列中。
18.根据权利要求15所述的方法,其中所述乘数沿着奇数位线存储,其中所述被乘数沿着偶数位线存储。
19.根据权利要求15所述的方法,其中每对连续位线耦合到相应的感测放大器。
20.根据权利要求19所述的系统,其中所述感测放大器用于执行所述多个总体计数运算。
21.一种方法,其包括:
将至少一个被加数存储在存储器装置的存储器阵列中,所述存储器阵列包括能经由多个位线及多个字线存取的多个存储器胞元;
通过将乘数乘以所述至少一个被加数的总体计数结果并将其累加到和来生成融合乘法累加结果;
通过对所述至少一个被加数应用多个总体计数运算来生成总体计数结果;及
通过对所述乘数的至少一个位进行排序来选择性地累加当前和值与所述总体计数结果;
其中在所述乘数的所述至少一个位完成所述排序时生成所述融合乘法累加结果。
CN202180025927.9A 2020-03-31 2021-03-26 使用存储器内处理的基于计数器的乘法 Pending CN115552523A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/836,773 US11934798B2 (en) 2020-03-31 2020-03-31 Counter-based multiplication using processing in memory
US16/836,773 2020-03-31
PCT/US2021/024481 WO2021202308A1 (en) 2020-03-31 2021-03-26 Counter-based multiplication using processing in memory

Publications (1)

Publication Number Publication Date
CN115552523A true CN115552523A (zh) 2022-12-30

Family

ID=77856148

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180025927.9A Pending CN115552523A (zh) 2020-03-31 2021-03-26 使用存储器内处理的基于计数器的乘法

Country Status (5)

Country Link
US (1) US11934798B2 (zh)
EP (1) EP4128236A4 (zh)
KR (1) KR20220149729A (zh)
CN (1) CN115552523A (zh)
WO (1) WO2021202308A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11467834B2 (en) * 2020-04-01 2022-10-11 Samsung Electronics Co., Ltd. In-memory computing with cache coherent protocol
US11276463B2 (en) * 2020-06-16 2022-03-15 Micron Technology, Inc. Matching patterns in memory arrays
TWI777231B (zh) * 2020-08-28 2022-09-11 國立中正大學 向量內積計算裝置
US11605418B2 (en) * 2020-10-26 2023-03-14 Micron Technology, Inc. Memory device architecture using multiple physical cells per bit to improve read margin and to alleviate the need for managing demarcation read voltages
TWI760942B (zh) * 2020-11-26 2022-04-11 國立中正大學 可變延遲計算裝置
US20230115373A1 (en) * 2021-10-13 2023-04-13 Qualcomm Incorporated Accumulator for digital computation-in-memory architectures
KR20230070753A (ko) * 2021-11-15 2023-05-23 삼성전자주식회사 디지털 펄스 기반 크로스바 연산을 수행하는 연산 장치 및 그 동작 방법

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6754685B2 (en) * 2000-12-21 2004-06-22 Sun Microsystems, Inc. Dynamic popcount/shift circuit
US10146537B2 (en) * 2015-03-13 2018-12-04 Micron Technology, Inc. Vector population count determination in memory
CN109074845B (zh) 2016-03-23 2023-07-14 Gsi 科技公司 存储器内矩阵乘法及其在神经网络中的使用
US10943652B2 (en) 2018-05-22 2021-03-09 The Regents Of The University Of Michigan Memory processing unit
US10692570B2 (en) 2018-07-11 2020-06-23 Sandisk Technologies Llc Neural network matrix multiplication in memory cells
US11328204B2 (en) * 2018-07-24 2022-05-10 Sandisk Technologies Llc Realization of binary neural networks in NAND memory arrays
US10528643B1 (en) 2018-08-01 2020-01-07 Sandisk Technologies Llc Vector-matrix multiplication using non-volatile memory cells
US10877752B2 (en) 2018-09-28 2020-12-29 Intel Corporation Techniques for current-sensing circuit design for compute-in-memory

Also Published As

Publication number Publication date
EP4128236A4 (en) 2024-04-03
US20210303265A1 (en) 2021-09-30
US11934798B2 (en) 2024-03-19
KR20220149729A (ko) 2022-11-08
WO2021202308A1 (en) 2021-10-07
EP4128236A1 (en) 2023-02-08

Similar Documents

Publication Publication Date Title
US11934798B2 (en) Counter-based multiplication using processing in memory
CN110678840B (zh) 张量寄存器文件
CN107315574B (zh) 一种用于执行矩阵乘运算的装置和方法
US11126549B2 (en) Processing in-memory architectures for performing logical operations
CN111915001B (zh) 卷积计算引擎、人工智能芯片以及数据处理方法
US20210182025A1 (en) Accelerating 2d convolutional layer mapping on a dot product architecture
CN110597484B (zh) 基于存内计算的多比特全加器、多比特全加运算控制方法
US20210319821A1 (en) Integrated Circuit Device with Deep Learning Accelerator and Random Access Memory
US20230297819A1 (en) Processor array for processing sparse binary neural networks
US11887647B2 (en) Deep learning accelerator and random access memory with separate memory access connections
US11748100B2 (en) Processing in memory methods for convolutional operations
US20240220205A1 (en) Counter-based multiplication using processing in memory
US11132195B2 (en) Computing device and neural network processor incorporating the same
KR102510924B1 (ko) 대규모 병렬 연관된 승산기-누산기
CN113642722A (zh) 用于卷积计算的芯片及其控制方法、电子装置
CN114072778A (zh) 存储器处理单元架构
EP4383084A1 (en) Memory device and operating method thereof
US12032959B2 (en) Non-volatile memory die with latch-based multiply-accumulate components
CN110765413A (zh) 矩阵求和结构及神经网络计算平台
US20230418600A1 (en) Non-volatile memory die with latch-based multiply-accumulate components
CN118036682A (zh) 加法神经网络的存内计算实现方法、装置、设备及介质
CN115860074A (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