CN114341802A - 用于执行存储器内处理操作的方法及相关存储器装置和系统 - Google Patents
用于执行存储器内处理操作的方法及相关存储器装置和系统 Download PDFInfo
- Publication number
- CN114341802A CN114341802A CN202080061754.1A CN202080061754A CN114341802A CN 114341802 A CN114341802 A CN 114341802A CN 202080061754 A CN202080061754 A CN 202080061754A CN 114341802 A CN114341802 A CN 114341802A
- Authority
- CN
- China
- Prior art keywords
- row
- bit
- bits
- scaled
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System 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/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Memory System (AREA)
- Dram (AREA)
Abstract
描述了用于存储器内或近存储器处理的方法、设备和系统。可在不涉及单独处理单元的情况下在存储器装置的逻辑中提取并处理位串(例如,向量)。可在单个时钟循环序列期间对以位并行方式存储的数字执行运算(例如,算术运算)。因此,可在单遍次中执行算术,因为数字为所提取的两个或多于两个位串中的位且不具有所述数字的中间存储。可从一或多个位线提取(例如,识别、发射、接收)向量。存储器阵列的寄存器可用于写入(例如,存储或临时存储)结果或促进算术运算的辅助位(例如,进位位或进位标志)。接近、邻近或在所述存储器阵列下方的电路系统可采用XOR或AND(或其它)逻辑来对所述数据进行提取、组织或运算。
Description
优先权要求
本申请案要求2019年9月5日申请的“用于执行存储器内处理操作的方法及相关存储器装置和系统(Methods for Performing Processing-in-Memory Operations,andRelated Memory Devices and Systems)”的美国临时专利申请案第62/896,228号及2020年4月6日申请的“用于执行存储器内处理操作的方法及相关存储器装置和系统”的美国专利申请案第16/841,222号的申请日的权益。
技术领域
本公开的实施例涉及存储器内处理,且更确切地说,涉及存储器内处理融合乘加运算。但更确切地说,一些实施例涉及用于在具存储器内处理能力的存储器装置内执行融合乘加运算的方法,及相关存储器装置、存储器系统及电子系统。
背景技术
存储器装置通常作为计算机或其它电子系统中的内部基于半导体的集成电路来提供。存在许多不同类型的存储器,包含易失性及非易失性存储器。易失性存储器,其可在电力循环之后检索所存储的信息,可尤其包含快闪存储器,所述快闪存储器包含NAND或NOR快闪存储器。易失性存储器可能需要电力以维持其数据(例如,主机数据、误差数据等等)且包含随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)、内容可寻址存储器(content addressable memory,CAM)和闸流晶体管随机存取存储器(thyristor random access memory,TRAM)等等。
电子系统常常包含数个处理资源(例如一或多个处理器),所述处理资源可检索并执行指令且将所执行指令的结果存储到合适的位置。处理器可包含例如可用以通过对数据(例如一或多个操作数)执行操作来执行指令的数个功能单元,例如算术逻辑单元(ALU)电路系统、浮点单元(FPU)电路系统和组合逻辑块。如本文中所使用,操作可包含例如布尔运算,例如AND、OR、NOT、NOT、NAND、NOR和XOR、和/或其它运算(例如求逆、移位、算术、统计以及许多其它可能的运算)。举例来说,功能单元电路系统可用以通过数个逻辑运算对操作数执行算术运算,例如加法、减法、乘法和除法。
电子系统中的数个组件可涉及向功能单元电路提供指令以供执行。所述指令可例如由例如控制器和/或主机处理器等处理资源执行。数据(例如可对其执行指令的数据)可存储于可由功能单元电路系统存取的存储器阵列中。可从存储器阵列检索指令和/或数据,且在功能单元电路开始对所述数据执行指令之前对所述指令和/或数据进行排序和/或缓冲。
发明内容
本公开的一或多个实施例包含一种操作存储器系统的方法。举例来说,方法可包含将第一数目的位加载到存储器装置的电路系统中,所述第一数目的位中的每一位具有第一状态或第二状态。方法还可包含将第二数目的位群组加载到电路系统中,所述第二数目的位群组中的每一位具有第一状态或第二状态。另外,方法可包含将第二数目的位群组中的每一位群组乘以第一数目的位中的每一位以产生多个按比例缩放行。另外,方法可包含沿相关联位位置对多个按比例缩放行进行求和以产生输出行。
根据另一实施例,一种操作包含存储器装置的存储器系统的方法可包含经由存储器装置的存储器阵列的多个位线将存储器阵列的第一数目的位群组加载到电路系统中。所述方法还可包含将多个操作数加载到电路系统中。另外,所述方法可包含将第一数目的位群组中的每一位群组中的每一位乘以操作数的第一位以产生第一按比例缩放行。并且,所述方法可包含至少部分地基于第一按比例缩放行而产生输出矩阵的行的多个位
在又一实施例中,一种方法可包含经由存储器装置的存储器阵列的多个位线将存储器阵列的行群组加载到电路系统中。所述方法可进一步包含将操作数的群组加载到电路系统中。所述方法还可包含使行群组中的每一行由操作数群组中的每一相关联操作数乘法累加以产生输出矩阵的第一行。
本公开的一些实施例包含一种存储器系统。存储器系统可包含至少一个存储器阵列和耦合到所述至少一个存储器阵列的逻辑。所述逻辑可经配置以接收包含多个位的输入。所述逻辑还可经配置以接收至少一个存储器阵列的存储器阵列的行,所述行包括位群组。另外,所述逻辑可经配置以将所述位群组中的每一位群组中的每一位乘以输入的每一位以产生多个按比例缩放行群组,其中所述按比例缩放行群组中的每一按比例缩放行群组中的每一按比例缩放行包含多个列,且所述按比例缩放行群组中的每一按比例缩放行群组中的每一按比例缩放行相对于相关联按比例缩放行群组内的邻近按比例缩放行移位至少一个列位置。另外,所述逻辑可经配置以跨越每一按比例缩放行群组内的列对按比例缩放行进行求和以产生输出行。
本公开的额外实施例包含一种电子系统。电子系统可包含至少一个输入装置、至少一个输出装置和可操作地耦合到输入装置和输出装置的至少一个处理器装置。所述电子系统还可包含可操作地耦合到所述至少一个处理器装置的至少一个存储器装置。所述至少一个存储器装置可包含至少一个存储器单元阵列和耦合到至少一个存储器阵列的逻辑。所述逻辑可经配置以接收第一操作数及所述至少一个存储器阵列的存储器阵列的行。所述逻辑还可经配置以使存储器阵列的行的多个位由操作数的位相乘移位累加以产生第一按比例缩放行。所述逻辑还可经配置以接收至少一个额外操作数。另外,所述逻辑可经配置以使行的多个位由至少一个额外操作数的位相乘移位累加以产生至少一个额外按比例缩放行。并且,所述逻辑可经配置以基于第一按比例缩放行和至少一个额外按比例缩放行而产生输出矩阵的行。
附图说明
图1为本公开的多个实施例的包含存储器装置的系统的框图。
图2A描绘多个实例矩阵。
图2B描绘包含累加运算的实例二进制乘法。
图3说明根据本公开的各种实施例产生的多个实例位向量、由位向量的相乘产生的中间矩阵和输出位向量。
图4说明根据本公开的一或多个实施例的包含定序器和感测放大器阵列的融合乘加单元。
图5A和5B说明经由本公开的一或多个实施例产生的各种按比例缩放行和输出行。
图6为根据本公开的各种实施例的操作存储器系统的实例方法的流程图。
图7为根据本文中所描述的一或多个实施例实施的实例存储器系统的简化框图。
图8为根据本文中所描述的一或多个实施例实施的实例电子系统的简化框图。
具体实施方式
在许多应用中,例如在机器学习、图像处理、人工智能、系统建模(例如,电力系统、机械系统等)和许多其它应用中使用融合乘加(fused-multiply-add;FMA)和矩阵乘法运算。这些运算的逻辑可相对简单(例如,乘法和累加)。然而,基于常规计算机的计算可涉及处理器和存储器密集操作,包含在计算核心与存储器阵列之间传送大量数据。
在许多情况下,处理资源(例如,处理器和相关联功能单元电路系统)可在存储器阵列外部,且经由处理资源与存储器阵列之间的总线存取数据以执行一组指令。可在存储器内处理器(PIM)装置中改进处理性能,其中处理器可实施于存储器内部和/或附近(例如直接在与存储器阵列相同的芯片上)。PIM装置可通过减少和消除外部通信来节省时间和/或节约电力。
本公开的各种实施例涉及存储器内处理(PIM)操作,且更确切地说,涉及执行PIM融合乘加(FMA)运算,其中待在计算中使用的数据可再用于多个计算。换句话说,数据可被读取(加载)且在多个计算中(例如,跨越多个位线)使用,而不是每当数据将在计算中使用时加载数据。更确切地说,例如,根据一些实施例,操作数可加载到包含存储器装置的存储器系统的定序器中。另外,存储器装置的存储器阵列的一或多个行的多个位群组可加载(例如,经由存储器阵列的多个位线)到存储器装置的感测放大器阵列中。并且,可将一或多个行的多个位群组中的每一位乘以操作数以产生按比例缩放行。可针对一或多个额外操作数重复相乘过程以产生一或多个额外按比例缩放行。另外,可基于多个按比例缩放行产生输出矩阵的行。因此,且如本文中更完整地描述,操作数可跨越多个位(例如,矩阵的行的所有位)再使用以产生一或多个按比例缩放行。因此,与常规系统和方法相比,可减少存储器加载和存储器存储的数目,这可减少等待时间且提高PIM操作的效率。
如本文中所使用,具存储器内处理(PIM)能力的装置是指能够使用存储器装置内部的处理资源(例如无需将数据传送到例如主机处理器的外部处理资源)对存储在存储器单元阵列中的数据执行逻辑和算术运算的存储器装置。举例来说,具PIM能力的装置可包含耦合到感测电路系统的存储器阵列,所述感测电路系统包括可操作为1位处理元件(例如以在每列基础上执行并行处理)的感测组件。除了可被称为“位向量运算”的“存储器内”执行的逻辑运算之外,具PIM能力的装置还可执行存储器操作。作为一实例,具PIM能力的装置可包含具有存储器操作的动态随机存取存储器(DRAM)阵列,所述存储器操作包含存储器存取操作(例如,读取(例如,加载)和写入(例如,存储)),以及不涉及对数据的操作的其它操作。举例来说,取决于(例如由主机)正执行的程序的类型,具PIM能力的装置可将DRAM阵列操作为“正常”DRAM阵列和/或操作为PIM DRAM阵列,其可包含存储器操作和位向量运算两者。举例来说,位向量运算可包含逻辑运算,例如布尔运算(例如AND、OR、XOR等),及转移运算,例如移位阵列中的数据值及例如对数据值求逆。通过PIM装置执行的算术运算可由逻辑运算实现。举例来说,可通过一组操作实现单位添加:0+0={0-总和,0-进位},0+1={1-总和,0-进位},1+0={1-总和,0-进位},1+1={0-总和,1-进位}。因此,总和可为XOR运算,且进位可为AND运算。
如本文所使用,PIM操作可指与利用具PIM能力的装置来执行存储器内处理相关联的各种操作。操作层级可用以定义PIM操作。举例来说,操作层级中的第一(例如最低)级可包含位向量运算(例如基本逻辑运算,其可称为“原始”运算)。层级中的下一(例如中间)级可包含复合运算,其包括多个位向量运算。举例来说,复合运算可包含加法、乘法等数学运算,所述数学运算可包括多个逻辑AND、OR、XOR、移位等。层级中的第三(例如最高)级可包含与执行程序相关联的控制流操作(例如循环、分支等),程序的执行涉及使用具PIM能力的装置执行处理。
如本文中更详细地描述,PIM操作可通过包括具PIM能力的装置的系统内的各种组件执行。举例来说,可定位于主机上的第一PIM控制组件(例如控制逻辑,其可称为“标量单元”)可执行控制流操作且将复合运算提供到第二PIM控制组件(例如定序器),所述第二PIM控制组件也可定位于所述主机上或具PIM能力的装置上。在多个实施例中,第二控制组件可将低级位向量运算提供到定位于具PIM能力的装置上的PIM控制组件(例如位向量定时电路系统),其可在存储器内执行位向量运算并将结果传回到主机。如本文中进一步所描述,用于在具PIM能力的装置与主机之间传送PIM操作的接口可包含信道,其可包含与用于传送命令、地址和/或数据的典型存储器接口(例如,DDR接口)分离的总线。另外,在多个实施例中,提供主机上的PIM控制组件可提供例如允许PIM程序使用虚拟寻址(例如由于具PIM能力的装置可仅对物理地址进行操作而通过解析主机上的虚拟地址)的益处。
本文中所描述的技术还可适用于存储装置中的处理(例如,NAND或NOR闪存、3DXPointTM等中的处理)。PIM还可被称作存储器中的计算或存储装置中的计算。换句话说,本公开涵盖通常与存储或组织数据相关联的装置(例如存储器或存储装置)中的处理或计算,所述装置在一些架构中,不同于CPU、GPU、GPGPU、FPGA、ASIC等。
图1为本公开的多个实施例的包含存储器装置120的系统100的框图。存储器装置120,其在本文中也可被称作“具PIM能力的装置”或“具PIM能力的存储器装置”,可包含任何合适的存储器装置。举例来说,存储器装置120可包含易失性存储器(例如,RAM、DRAM等)和/或非易失性存储器(例如,快闪存储器、例如3D交叉点存储器装置等的交叉点存储器装置等)。存储器装置120可包含耦合到感测电路系统的存储器阵列130(即,包含存储器单元),如下文更详细地描述。根据一些实施例,存储器装置120可包含以组、等级、叠组、明码或某一其它形成组织的多个存储器阵列130。
系统100进一步包含耦合到存储器装置120的主机111。主机111可包含主机系统,例如个人膝上型计算机、台式计算机、数码相机、智能手机或存储卡读取器,以及各种其它类型的主机。主机111可包含系统母板和/或底板,且可包含多个处理资源(例如一或多个处理器、微处理器或某一其它类型的控制电路系统)。系统100可包含单独集成电路,或主机111和存储器装置120两者可为同一集成电路的部分(例如,在同一芯片上)。系统100可包含例如服务器系统和/或高性能计算(HPC)系统和/或其一部分。
主机111可包含各种组件,其包含PIM控制组件(例如控制逻辑131、定序器132)、信道控制器143和存储器管理单元(MMU)控制器134。控制逻辑131可经配置以执行与执行PIM程序相关联的控制流命令且将复合命令提供到定序器132。控制逻辑131可为或可包含RISC类型控制器,所述RISC类型控制器经配置以产生及发布可扩展的复合运算PIM命令集到定序器132,所述可扩展的复合运算PIM命令集包含不同于DDR命令的命令。在一些实施例中,控制逻辑131可经配置以发布复合运算命令以使得对存储器装置120执行位向量运算。在一些实施例中,可将复合运算命令从控制逻辑131传送到存储器装置120(例如,经由定序器132和信道157)。
在一些实施例中,控制逻辑131可将微码指令解码成由定序器132实施的与执行位向量运算相关联的函数调用,所述函数调用可为微码函数调用。微码函数调用可以是定序器132接收和/或执行以使得用于存储器装置120使用例如感测电路系统150的感测电路系统执行特定位向量运算的操作。
如图1中所展示,定序器132、控制逻辑131和MMU控制器134位于主机111上,所述主机111可允许控制逻辑131和/或MMU控制器134使用虚拟地址执行存储器存取且在将指令传送到存储器装置120之前执行虚拟到物理地址转换。在一些实施例中,定序器132和/或控制逻辑131实施于存储器装置120中。在此些情况下,主机111与存储器装置120之间的通信量减小,这可提高PIM装置的性能和/或减少PIM装置的功率消耗。在此情况下,虚拟到物理地址转换仍可由MMU控制器134执行。然而,对于此操作的简易性且如果在操作中使用的数据以固定模式预分配,那么此转换可为不重要的。举例来说,物理地址空间中的预分配数据可为“经钉扎”存储器的简单邻接件,其中所述件的开始的虚拟地址可通过对存储数据的存储器的所述件的开始的物理地址位置的简单偏移而计算。替代地,简单的固定公式或模式或查找表可用于转换。举例来说,模式可为由控制逻辑131和/或定序器132执行的微码的一部分。
如本文中所使用,“位向量”可指物理上连续的位数,无论是在行(例如水平地定向)还是列(例如竖直地定向)上物理上连续。“具PIM能力的装置”可经配置以对虚拟地址空间的多个相邻部分(例如“组块”)执行位向量运算,例如逻辑运算和/或转移运算。举例来说,虚拟地址空间的组块可具有256位的位长度。组块可或可不与虚拟地址空间中的其它组块依序相连。
可驻留在主机111上(如图1中所展示)的MMU控制器134可负责执行虚拟存储器地址(例如与主机111相关联的地址)到物理地址(例如与存储器装置120相关联的地址)的转换。MMU控制器134还可执行存储器保护操作、高速缓存控制和/或总线仲裁操作。
定时电路133可提供定时以协调逻辑运算的执行,并且负责提供对阵列(例如图1中的存储器阵列130)的无冲突存取。在各种实施例中,控制器140和/或定时管理电路系统135可生成状态信息,所述状态信息可例如经由信道157传送到主机111或从主机111传送。信道157可独立于可用于在主机111与存储器装置120之间传送(例如,传递)DDR命令的双数据速率(DDR)存储器接口(例如,控制总线154)(例如,与所述双数据速率(DDR)存储器接口分离)。也就是说,在一些实施例中,信道157可用于将引起位向量运算的执行的命令从主机111传送到存储器装置120,而控制总线154可用于将DRAM命令从主机111传送到存储器装置120。在一些实施例中,经由控制总线154传送的DRAM命令可为用于控制DRAM,例如,DDR1SDRAM、DDR2 SDRAM、DDR3 SDRAM和/或DDR4 SDRAM的操作的命令。在其它实施例中,存储器装置120可经由总线157向主机111用信号发送关于操作就绪。在一些实施例中,总线157与控制总线154和/或数据总线156组合。另外,在一些实施例中,主机111可包含具有多个信道和/或控制总线的多个存储器装置120。
在一些实施例中,定序器132可包含超大指令字(very large instruction word,VLIW)类型控制器,其经配置以对逻辑运算命令进行操作,且控制逻辑131可经配置以响应于来自主机111的处理资源(例如,GPU或GPU)(未展示)的信号而将逻辑运算命令发布到定序器132。举例来说,定序器132可经配置以对多个逻辑运算进行排序以使得复合运算命令可由定序器132发布。在一些实施例中,控制逻辑131可经配置以生成VLIW作为位向量运算命令。VLIW可包括微码指令。定序器132可为或可包含经配置以将VLIW解码成多个单独微码指令的VLIW类型控制器。举例来说,定序器132可将VLIW解码成用以引起复合运算(例如相加、乘以等)的执行的指令。在一些实施例中,复合运算命令可提供进入VLIW指令序列的入口点,以致使执行此类复合运算。定序器132可耦合到存储器装置120,且可经由信道157将协调位向量运算的命令传递到存储器装置120。微码指令可由定序器132自身和/或由存储器装置120中的其它组件(例如,位向量操作定时电路系统139、定时电路系统133、定时管理电路系统135和/或感测电路系统150)依序和/或并行地执行。
存储器阵列130可包含例如DRAM阵列、SRAM阵列、STT RAM阵列、PCRAM阵列、TRAM阵列、RRAM阵列、NAND快闪阵列,和/或NOR快闪阵列。存储器阵列130可包含以通过存取线(其在本文中可称为字线或选择线)耦合的行和通过感测线(其在本文中可称为数据线、数字线或位线)耦合的列布置的存储器单元。虽然在图1中展示单个存储器阵列,但实施例不限于此。举例来说,存储器装置120可包含多个存储器阵列130(例如,DRAM单元、NAND闪存单元等的数个组)。
存储器装置120包含地址电路系统142以锁存通过I/O电路系统144经由总线156(例如数据/地址总线)提供的数据的地址信号。可通过包含信道157的接口(例如,高速接口(HSI))将状态和/或异常信息从存储器装置120上的控制器140提供到信道控制器143。地址信号通过地址电路系统142接收,且由行解码器146和列解码器152解码以存取存储器阵列130。可通过使用感测电路系统150感测数字线上的存储器单元的状态而从存储器阵列130读取数据。取决于存储器单元技术,存储器单元的状态可被感测为例如电压和/或电流变化、磁性状态变化、电阻率和量子状态等。感测电路系统150可从存储器阵列130读取和锁存一页(例如行)数据。I/O电路系统144可用于经由总线156与主机111进行双向数据通信。写入电路系统148可用于将数据写入到存储器阵列130。在一些实施例中,写入电路系统148与感测电路系统150组合。在其它实施例中,感测电路系统150可为列解码152和/或行解码器146的一部分。在一些实施例中,总线154可充当控制和地址总线两者以用于DRAM控制及寻址(例如,根据其中总线154充当单向数据总线的DDR协议)。虽然图1中展示为单独总线,但在一些实施例中,总线154和总线156可能并不是单独总线。
控制器140(例如存储器控制器)可对由控制总线154提供的来自主机111的信号进行解码。这些信号可包含芯片启用信号、写入启用信号和地址锁存信号,所述信号用于控制对存储器阵列130执行的DRAM操作,所述操作包含数据读取、数据写入和数据擦除操作。在各种实施例中,控制器140可负责执行来自主机111的指令且排序对存储器阵列130的存取。控制器140可包含状态机、定序器或某一其它类型的控制器,且包含呈专用集成电路(ASIC)的形式的硬件和/或固件(例如微码指令)。在多个实施例中,控制器140可包含位向量运算定时电路系统139。控制器140可控制例如感测电路系统150。举例来说,控制器140可控制时钟信号的生成和时钟信号的应用以与执行位向量运算相关联地计算分量。
如图1中所展示,位向量运算定时电路系统139可包含定时电路系统133和定时管理电路系统135。定时电路系统133可包含FIFO缓冲器,以提供与感测电路系统150的定时协调,所述感测电路系统150与存储器单元的存储器阵列130相关联。在一些实施例中,定时电路系统133可包含例如原子状态机的状态机。
定时管理电路系统135可经配置以协调逻辑运算的定时(例如逻辑运算的序列),所述逻辑运算与位向量运算相关联,使用与存储器阵列130相关联的行地址选通(rowaddress strobe,RAS)/列地址选通(column address strobe,CAS)组件136执行。RAS组件136可经配置以将信号(例如,RAS/CAS信号)发送到存储器阵列130和/或从存储器阵列130接收信号(例如,RAS/CAS信号),以识别和/或选择存储器阵列130的行和/或列地址。在一些实施例中,存储器装置120可经配置以执行DRAM操作,例如存储器阵列存取请求,其可由主机111经由总线154发布。在一些实施例中,定时管理电路系统135可经配置以执行用以控制位向量运算的执行定时的指令。
在一或多个实施例中,控制器140的部分(例如位向量运算定时电路系统139、定时电路系统133和/或定时管理电路系统135)可包含在32和/或64位长度指令上操作的精简指令集计算机(RISC)类型控制器。在各种实施例中,定时管理电路系统135可负责执行从定时电路系统133接收的指令,以使得执行涉及与感测电路系统150相关联的数据值的位向量运算。
如下文中进一步描述,在多个实施例中,感测电路系统150可包含多个感测组件,所述多个感测组件可各自包含感测放大器和计算组件。计算组件可用作累加器,且感测电路系统150可用于执行(例如对与互补数字线相关联的数据)位向量运算。在多个实施例中,感测电路系统150可用于使用存储于存储器阵列130中的数据作为输入来执行位向量运算,和/或将运算的结果存储回到存储器阵列130而不经由数字线地址存取传送数据(例如,在不启动列解码信号的情况下)。举例来说,各种运算(例如位向量运算)可使用感测电路系统150且在感测电路系统150内执行,而不是由感测电路系统150外部的处理资源(例如由与主机111和/或定位于存储器装置120上(例如在控制器140上或其它地方)的其它处理电路系统(例如ALU电路系统)相关联的处理资源)执行(或与其相关联)。在多个实施例中,感测电路系统150(例如多个感测组件)可用于按单指令多数据(single instruction multipledata,SIMD)方式执行位向量运算,其中感测组件充当每列基础上的1位处理元件。在其它实施例中,相邻感测组件可在彼此之间交换数据位,因此基于多个数据源产生计算。在其它实施例中,感测组件可取决于其在感测电路系统150内的位置产生不同计算,因此,以VLIW方式提供计算。在感测电路系统150执行位向量运算的实施例中,感测电路系统150可充当和/或称为“存储器内处理器”。如下文更充分地描述,在一些实施例中,感测电路系统150可包含定序器(例如,类似于定序器132)。
在各种常规方法中,例如,可经由感测电路系统从存储器读取与操作数相关联的数据,且经由I/O线(例如,经由本地I/O线和/或全局I/O线)将所述数据提供给外部ALU电路系统。外部ALU电路系统可包含多个寄存器并将使用操作数执行位向量运算,并且结果可经由I/O线传送回到阵列。在其它实施例中,感测电路系统150经配置以对存储在存储器阵列130中的数据执行位向量运算,并将结果存储回到存储器阵列130,而不启用耦合到感测电路系统150的I/O线(例如,本地I/O线)。
在多个实施例中,可能并不需要存储器阵列130外部的电路系统和感测电路系统150来执行运算,这是因为在不使用外部处理资源的情况下,感测电路系统150可执行适当的位向量运算。因此,感测电路系统150可用于至少在某一程度上补充和/或更换此外部处理资源(或至少此外部处理资源的带宽消耗)。然而,在多个实施例中,除通过外部处理资源(例如主机111)进行逻辑运算之外,还可使用感测电路系统150来进行逻辑运算(例如执行指令)。举例来说,主机111和/或感测电路系统150可限于仅进行某些逻辑运算和/或特定数目的逻辑运算。
启用I/O线可包含启用(例如接通)具有耦合到解码信号(例如列解码信号)的栅极和耦合到I/O线的源极/漏极的晶体管。然而,实施例不限于在不启用阵列的列解码线的情况下使用感测电路系统(例如感测电路系统150)进行逻辑运算。无论是否与经由感测电路系统150进行逻辑运算相关联地使用本地I/O线,所述本地I/O线可经启用以便将结果传送到除了回到阵列130以外的合适的位置(例如到外部寄存器)。
本公开的各种实施例涉及融合乘加(FMA)运算,且更确切地说,涉及执行存储器内处理(PIM)FMA运算。根据各种实施例,待在一或多个计算中使用的数据可加载(例如,到定序器中)且跨越多个位再使用(例如,经由多个位线加载到感测放大器阵列)。换句话说,各种实施例可涉及跨越与多个位线相关联的多个位再使用定序器逻辑。因此,与常规方法和系统相比,可减少存储器加载和存储器存储的数目,且因此可提高存储器装置的效率和/或可减少与存储器装置相关联的等待时间。
至少出于这些原因,如本文中更完整地描述,本公开的各种实施例提供一或多个问题的技术解决方案,所述一或多个问题由可能不会合理地由个人执行的技术产生,且本文中所公开的各种实施例起因于计算机技术以便克服上文所描述的问题和/或挑战。另外,本文中所公开的至少一些实施例可通过允许先前不可由计算机执行的功能的计算机性能来改进计算机相关技术。
对于矩阵乘法,中央处理单元(CPU)及图形处理单元(GPU)两者可将输入矩阵分解为平铺块,且可将平铺块分配到处理器核心。对于输出矩阵的每一平铺块,精确地提取输入矩阵的平铺块一次,这实现O(N)计算强度(即,处理将线性地且成正比例地增加到输入数据集的大小)。可选择输出矩阵的每一平铺块的大小以匹配目标处理器的L1级高速缓冲或寄存器的容量。
对于GPU,选择平铺块以使得平铺块形成线程块平铺块、翘曲平铺块和线程平铺块的分层结构。此平铺块结构产生用于数据从全局存储器移动到共享存储器(即,矩阵到线程块平铺块)、从共享存储器移动到寄存器文件(即,线程块平铺块到翘曲平铺块)及从寄存器文件移动到GPU核心以供计算(即,翘曲平铺块到线程平铺块)的路径。
在PIM中,除存储器阵列(例如,DRAM阵列)和一或多个寄存器(例如,感测放大器(SA)阵列内)之外,不存在存储器分层结构。然而,如本文中更完整地描述,根据各种实施例,数据可在PIM FMA运算中再使用。
图2A说明包含多个行M及多个列K的矩阵A和包含多个行K及多个列N的矩阵B。图2A进一步说明包含M个行和N个列的矩阵C。如下文更完整地描述,可基于运用矩阵A的数据和矩阵B的数据执行的运算而产生矩阵C的数据。
根据各种实施例,为了使矩阵(例如,矩阵A和矩阵B)相乘,可跨越(例如,第二存储器阵列的)矩阵B中的所有列扫描(例如,运用点积运算)(例如,第一存储器阵列的)矩阵A的每一行以计算输出矩阵C中的每一行。在扫描(例如,点积扫描)期间,可跨越矩阵B的所有列再使用矩阵A的输入行中的每一数字。因此,根据各种实施例,矩阵(例如,矩阵A和/或矩阵B)的列中的每一位可仅由例如PIM向量引擎(例如融合乘加(FMA)单元)读取一次。
更确切地说,根据各种实施例,(例如,第一存储器阵列的)矩阵A的每一元素a_(i,k)可与(例如,第二存储器阵列的)矩阵B的行b_(k)相乘,从而产生按单个元素a_(i,k)缩放的新临时行。换句话说,矩阵A的每一元素a_(i,k)可作为共同操作数连同待乘以共同操作数的矩阵B的行b_(k)一起加载到FMA单元中。可(例如,在FMA单元的本地寄存器或存储器阵列130的指定部分中)存储相乘的结果,即按比例缩放行(例如,按比例缩放行b'_(k)=b_(k)*a_(i,k))。另外,矩阵A的不同元素a_(i,k+1)可作为共同操作数连同待乘以共同操作数的矩阵B的行b_(k+1)一起加载到FMA单元中。相乘的结果是,按比例缩放行(例如,按比例缩放行b'_(k+1)=b_(k+1)*a_(i,k+1))可经计算且添加(或累加)到预先计算的行b'_(k)。换句话说,可沿列和跨越行对(例如,中间矩阵的)按比例缩放行b'_(k)进行求和以产生行c_(i),所述行c_(i)可作为输出矩阵C的完整行存储回到存储器阵列(例如,第二存储器阵列)中。换句话说,中间矩阵b'_(k)的行可跨越行且沿列合并和累加以产生累加总和(一行),所述累加总和可存储回到存储器阵列(例如,第二存储器阵列)中(例如,作为行c_(i))。可针对矩阵A和/或矩阵B的每一行重复这些动作以产生矩阵C的其它行。
根据一些实施例,来自行(例如,矩阵B的行b_(k))的位可以位并行方式沿着存储器阵列的字线在线地协同分配。换句话说,行的每一位(例如,矩阵B的行b_(k)的每一位)可经由存储器阵列的一组位线加载(例如,到FMA单元中)。因此,可同时存取来自所述行的所有位。另外,如上所述,可(例如,经由定序器)将数字(例如,矩阵A的位a_(i,k))作为共同操作数应用于整个加载行(例如,矩阵B的行b_(k))。换句话说,数字(例如,矩阵A的位a_(i,k)可由行(例如,矩阵B的行b_(k))(例如,在感测放大器逻辑上的存储器阵列中)乘法累加。根据各种实施例,位并行FMA单元可从行(例如,矩阵B的行b_(k))接收位,其中位并行FMA单元可基于对如由共同操作数的位(例如,矩阵A的位a_(i,k))规定的行(例如,矩阵B的行b_(k))中的数字的位进行定序。在一些实施例中,操作数可包含用于控制定序器的微码。
如上所述,在至少一些实施例中,可对存储器阵列的位线局部执行累加,且因此乘法过程可能不需要大量硬件。在图2A中展示的实例中,FMA过程可需要例如M×K个存储器加载(各自为N+1个元素)和M个存储器存储(各自为N个元素)。
另外,根据一些实施例,矩阵B可分裂成平铺块,且矩阵B可被复制(例如,以提高并行度)。并且,输入(即,输入向量,例如矩阵A的行)可分配给平铺块,且输入可在FMA阵列(例如,感测放大器阵列)当中扩散(例如,以提高计算并发且减小通信距离)。此外,根据一些实施例,可在对数时间中执行部分结果累加(例如,以降低通信成本)。
举例来说,图2B描绘包含在对数时间中执行的累加运算的二进制相乘的实例,如图2B中所展示,在第一计算步骤中(例如,在框204中)使用框202中的中间矩阵200的非零行,其中执行并行计算以产生框206中展示的结果。另外,在第二计算步骤中(例如,在框206中),将第一计算步骤的结果计算为最终结果(即,框208中所展示)。因此,计算的复杂度是对数的(即,log_w(b-s),其中w为FMA单元的宽度(即,FMA单元可接收多少操作数(例如,在此实例中为2个操作数),b为位数目(例如,位宽度),且s为跳过的次数(即,可跳过由具有值0的乘数位产生的零行))。
根据各种实施例,可根据以下选项中的一或多者进一步并行化各种操作(例如,矩阵乘法):1)跨越矩阵A的行a_(i),其可要求矩阵B的复制;2)跨越矩阵A的列a_(k),其可对存储器装置要求大的共享型XOR和进位或中间存储装置以执行累加;及3)跨越矩阵A的列和行两者中的平铺块,其可在选项1与2之间强加一些中间要求。在这些实施例中的一些中,可需要额外的通信和/或结果(即,从跨越存储器阵列的分裂矩阵产生的结果)的集成(例如,取决于存储结果的地方)。此外,在一些实施例中,可需要对结果(其可为部分点积)一起求和以产生矩阵C中的一或多行。因为并行求和可包含数据简化运算,且可在记录时间中完成,所以在一些实施例中,可在本地(例如,在同一芯片上)发生通信,且因此可对较少较高级部分结果(例如,来自不同芯片)一起求和。
如下文更充分地描述,在至少一些实施例中,在FMA运算期间,可在另一向量中的位的条件下经由一个向量中的位的移位复制而产生中间矩阵M。举例来说,参考图3,实例位向量‘a’(即,1 1 0 1)可加载(例如,到FMA单元的定序器中),且实例位向量‘b’(即,1 0 01)可加载(例如,到FMA的感测放大器中)。另外,如下文更充分地描述,可在向量‘a’中的位的条件下经由向量‘b’的位的移位复制而产生中间矩阵M。
更确切地说,向量‘a’的第一位(其为‘1’)可乘以向量‘b’的位以产生矩阵M的第一(即,顶部)行(即,1 0 0 1)。另外,向量‘a’的第二位(其为‘0’)可乘以向量‘b’的位以产生矩阵M的第二行(即,0 0 0 0),所述第二行相对于矩阵M的顶部行向左移位一个列空间。并且,向量‘a’的第三位(其为‘1’)可乘以向量‘b’的位以产生矩阵M的第三行(即,1 0 0 1),所述第三行相对于矩阵M的第二行向左移位一个列空间。另外,向量‘a’的第四位(其为“1”)可乘以向量‘b’的位以产生矩阵M的第四(即,底部)行(即,1 0 0 1),所述第四行相对于矩阵M的第三行向左移位一个列空间。
根据各种实施例,可一次一个地使用向量‘a’的位。对于向量‘a’的每一位(即,对于每一循环),向量‘b’的值经读取、移位,且添加到或不添加到总数(例如,运行总数)。举例来说,在第一循环期间,当a=1(即,a的第一位)时,将“1 0 0 1”添加到总数,在第二循环期间,当a=0(即,a的第二位)时,将“0 0 0 0”添加到总数(即,跳过其),在第三循环期间,当a=1(即,a的第三位)时,将b的经移位版本添加到总数,且在第四循环期间,当a=1(即,a的第四位)时,将b的另一经移位版本添加到总数。
在一些实施例中,举例来说,定序器可执行移位复制且将中间矩阵M存储到介接存储器阵列(例如,包含向量‘b’的存储器阵列)的便笺区域中。在一些实施例中,便笺区域可为存储器阵列的一部分(例如,接近于读出放大器定位的存储器阵列的专门指定部分(例如,以针对进出便笺的更快数据传送降低数字线RC寄生性))。在一些实施例中,便笺区域可包含高速存储器单元。在产生和存储矩阵M之后,可将矩阵M读回到存储器阵列中。在读取期间,感测放大器可运用局部累加执行XOR与进位运算。举例来说,可基于逐位进位加法器执行运用局部累加的XOR与进位运算,所述逐位进位加法器可包含最小逻辑(例如,对于32b加法器的65个门延迟)。此运算可基本上将矩阵M合并到乘法结果R中。换句话说,矩阵M的列可经求和以产生R(即,1 1 1 0 1 0 1),在此实例中,其为行c_(i),如图2A中所展示。图3中所展示的行Cin可指示与对矩阵M的列进行求和相关联的进位运算。
图4描绘根据本公开的各种实施例的FMA单元400。FMA单元400,在本文中还可被称作“位并行FMA单元”,包含定序器402和阵列404,所述阵列可包含感测放大器阵列(例如,在图1的感测电路系统150内)。阵列404可包含多个局部FMA模块(例如,FMA j FMA j+1等)。图4进一步说明中间矩阵M,其中每一中间矩阵M与FMA模块相关联。
根据一些实施例,定序器402可在存储器装置(例如,图1的存储器装置120)本地,且更确切地说,在一些实施例中,定序器402可为感测电路系统(例如,图1的感测电路系统150)的部分或接近感测电路系统。在这些实施例中,定序器402可经配置以从存储器阵列406接收数据(例如,经由位线407的阵列)。在其它实施例中,定序器402可在存储器装置外部。举例来说,图1的定序器132可包含定序器402。在这些实施例中,定序器402可经配置以驱动一或多个存储器阵列(例如,在相同时间或不同时间)。另外,在任一实施例中,定序器402可经配置以从控制逻辑接收数据和/或控制信号,所述控制逻辑可为存储器装置(例如,外部处理器)的部分或在存储器装置外部。尽管FMA单元400描绘为包含定序器402,但本公开不限于此,且在一些实施例中,定序器402可在FMA单元400外部。在其它实施例中,多个定序器402可分布在FMA单元404之间。
FMA单元400可经配置以经由位线408/410(在本文中也被称为数据线(DL))的阵列接收数据。更确切地说,可将来自矩阵A(参见图2A)的数据加载到定序器402中(经由位线407),且可将来自矩阵B(参见图2A)的数据加载到阵列404中(经由位线408/410)。又更确切地说,可将来自矩阵A的行的一或多个位加载到定序器402中,且可将可分裂成多个部分(例如,平铺块)409_0、409_1等的矩阵B的行(例如,多个位群组)加载到阵列404中,其中可将矩阵B的行的每一部分(例如,行的32位)加载到阵列404的局部FMA模块(例如,FMA j FMA j+1等)中。更确切地说,可将矩阵B的行的第一部分(在本文中也被称作“群组”)(例如,32位值)加载到阵列404的FMA j中,且可将矩阵B的行的第二部分(例如,32位值)加载到阵列404的FMA j+1中,等等,使得矩阵B的整个行加载到阵列404中。尽管FMA单元400描绘为包含定序器402,但本公开不限于此,且在一些实施例中,定序器402可在FMA单元400外部。
参考图2A、4、5A和5B,将描述FMA单元400的预期运算。根据一些实施例,在第一循环期间,可将输入矩阵(例如,矩阵A)的第一行的第一位群组(例如,32位值)(在本文中也被称作“输入位向量”或“乘数操作数”)加载到定序器402中,且可将另一矩阵(例如,矩阵B)的第一行的至少一部分(例如,包含多个位群组“被乘数操作数”)加载到阵列404中。更确切地说,在一些实施例中,举例来说,第一行的每一32位值可加载到阵列404的每一相应局部FMA模块中。在其它实施例中,如下文更充分地描述,个别位可以依序方式加载到定序器402中。
继续此实例,定序器402中的输入位向量的第一位可乘以加载于阵列404中的行(例如,包含多个位群组)的每一位以产生按比例缩放行b'(1)(参见图5A)。随后,在第二循环期间,定序器402中的输入位向量的第二位可乘以阵列404中的行的每一位以产生另一按比例缩放行b'(2)。根据各种实施例,按比例缩放行b'(2)可相对于按比例缩放行b'(1)移位一个列位置(例如,在中间矩阵中向左)。另外,在第三循环期间,定序器302中的输入位向量的第三位可乘以阵列404中的行的每一位以产生另一按比例缩放行b'(3)。根据各种实施例,按比例缩放行b'(3)可相对于按比例缩放行b'(2)移位一个列位置(例如,在中间矩阵中向左)。
此过程可继续直到定序器402中的输入位向量的最末位乘以加载到阵列404中的矩阵B的行为止。换句话说,此过程可继续直到定序器402中的输入位向量的最末位可乘以阵列404中加载的行的每一位以产生最末按比例缩放行b'(i)为止。
另外,可累加列中的按比例缩放行b'的所有值(即,沿数字线)(例如,累加器(例如,数字累加器)可维持沿数字线的运行值)以产生矩阵C的行c[i]。更确切地说,对bb0的所有值进行求和以产生行c[i]中的第一位,对bb1的所有值进行求和以产生行c[i]中的第二位,对bb2的所有值(图4中未展示)进行求和以产生行c[i]中的第三位,等等(例如,对bb31的所有值进行求和以产生行c[i]中的第32位)以产生行c[i]。另外,运用每一总和,进位值可产生且从最低有效位传播到最高有效位(例如,如果最低有效位为bb0,那么进位值作为对bb0的值进行求和以产生行c[i]中的第一位的结果而产生,传播到bb1的值且用于对bb1的值进行求和以产生行c[i]中的第二位和其进位值等等,直到行c[i]中的第32位为止)。如将了解,在以本文中所描述的方式乘以和累加输入矩阵(例如,矩阵A)的第一行的所有位群组之后,行c[i]包含矩阵A的一行和矩阵B的所有列的点积。换句话说,行c[i]中的第一位群组(例如,32位值)为矩阵A的第一行和矩阵B的第一列的点积,矩阵C的行c[i]中的第二位群组为矩阵A的第一行和矩阵B的第二列的点积,等等。
继续此实例,可将输入矩阵(即,矩阵A)的第一行的第二位群组(例如,32位值)(在本文中也被称作“输入位向量”或“乘数操作数”)加载到定序器402中,且可将矩阵B的第二行(例如,包含多个位群组“被乘数操作数”)加载到阵列404中。另外,定序器402中的输入位向量的第一位可乘以阵列404中加载的行的每一位以产生按比例缩放行b"(1)(参见图5B)。随后,定序器402中的输入位向量的第二位可乘以阵列404中的行的每一位以产生另一按比例缩放行b"(2)。根据各种实施例,按比例缩放行b"(2)可相对于按比例缩放行b"(1)移位一个列位置(例如,在中间矩阵中向左)。另外,定序器302中的输入位向量的第三位可乘以阵列404中的行的每一位以产生另一按比例缩放行b"(3)。根据各种实施例,按比例缩放行b"(3)可相对于按比例缩放行b"(2)移位一个列位置(例如,在中间矩阵中向左)。
此过程可继续直到定序器402中的输入位向量的最末位乘以加载到阵列404中的矩阵B的行为止。换句话说,此过程可继续直到定序器402中的输入位向量的最末位可乘以阵列404中加载的行的每一位以产生最末按比例缩放行b"(i)为止。
另外,可累加列中的按比例缩放行b"的所有值(即,沿数字线)(例如,累加器可维持沿数字线的运行值)以产生矩阵C的行c[i]。更确切地说,对bb0的所有值进行求和以累加到以上文所描述的方式预先实例化的行c[i]中的第一位,对bb1的所有值进行求和以累加到行c[i]中的第二位,对bb2的所有值(图4中未展示)进行求和以累加到行c[i]中的第三位,等等(例如,对bb31的所有值进行求和以累加到行c[i]中的第32位)以继续产生行c[i]。另外,运用每一总和,进位值可产生且从最低有效位传播到最高有效位(例如,如果最低有效位为bb0,那么进位值作为将bb0的值累加到行c[i]中的第一位的结果而产生,传播到bb1的值且用于将bb1的值累加到行c[i]中的第二位和其进位值等等,直到行c[i]中的第32位为止)。如将了解,在以本文中所描述的方式乘以和累加输入矩阵(例如,矩阵A)的第一行的所有位群组之后,行c[i]包含矩阵A的一行和矩阵B的所有列的点积。换句话说,行c[i]中的第一位群组(例如,32位值)为矩阵A的第一行和矩阵B的第一列的点积,矩阵C的行c[i]中的第二位群组为矩阵A的第一行和矩阵B的第二列的点积,等等。上文参考图2、4、5A和5B所描述的过程可针对矩阵A和矩阵B的所有其它行重复以产生用于矩阵C的所有列的位。
在一些实施例中,可能不需要产生整个按比例缩放矩阵(即,矩阵B的按比例缩放版本)。更确切地说,当读取和合并中间矩阵(例如,由行b'(1)、b'(2)等构成的中间矩阵M)时,结果可累加且与下一中间矩阵(即,序列a_(i,k+1)中的下一者乘以行b_(k+1)产生的中间矩阵)求和。另外,在一些实施例中,可能不必产生并存储中间矩阵。实际上,在这些实施例中,可在FMA模块内部使用计算代替操作,使得立即累加中间矩阵的行。另外,根据一些实施例,可在阵列内执行(例如,实时地)具有XOR与进位的移位复制(例如,经由32个移位和随着每一移位的串行XOR与进位)。
应注意,根据一些实施例,每一乘数操作数的位可依序加载到定序器402中(例如,按需要加载位),而不是将输入矩阵(即,矩阵A)的位的行的整个位群组加载到定序器402中。更确切地说,在一些实施例中,可将单个位(例如,操作数的第一位)加载到定序器402中,且可将单个位乘以加载到阵列404中的行。另外,在乘法期间或之后,可将另一位(例如,操作数的第二位)加载到定序器402中。更确切地说,举例来说,在使用操作数的第一位完成运算(例如,乘法)后,操作数的第二位可经加载(例如,替换第一操作数)且可供由定序器402用于后续运算。类似地,举例来说,在使用操作数的第二位完成运算(例如,乘法)后,操作数中的第三者可经加载(例如,替换操作数的第二位)且可供由定序器402用于另一运算。将位或操作数依序加载到定序器402中可减少所需裸片空间而不牺牲性能。
作为非限制性实例,单个运算(即,使a_(ⅰ,k)由行b_(k)乘法累加,其中产生、存储和读回中间矩阵)可包含在等待时间(以纳秒为单位)之后:10+10(即,同时读取数字a_(i,k)和b_(k)+32×10(即,产生和存储矩阵M)。另外,为了读回和合并-累加(包含逐位进位计算)矩阵M和预先累加的结果可包含以下等待时间:10(即,以读回预先累加的结果)+10(即,以读回矩阵M的第1行)+65(即,以在逐位进位加法器上合并-累加矩阵M的第1行与累加结果)+65×31(即,以在逐位进位加法器上合并-累加矩阵M的其它行与累加结果)+10(即,以存储新累加结果)。在此实例中,等待时间等于2,450纳秒。此实例假设32位数,针对32b逐位进位加法器,存储器定时TRCD(即,行地址到列地址延迟)和TRP(即,行预充电时间)等于10ns、1ns门延迟和65个门延迟。应注意,提供这些等待时间值作为参考,且值可变化(例如,经改变、按比例缩放、优化)。
使用相同假设,在另一非限制性实例中(即,使a_(i,k)由行b_(k)乘法累加,其中未产生中间矩阵),单个运算可包含以下等待时间(以纳秒为单位):10+10(即,以同时读取数字a_(i,k)和b_(k))+10(即,以读回预先累加的结果)+65×32(即,以在逐位进位加法器上通过具有XOR与进位的移位复制就地合并-累加)+10(即,以存储新累加结果)。在此实例中,等待时间等于2,120纳秒。应注意,提供这些等待时间值作为参考,且值可变化(例如,经改变、按比例缩放、优化)。
图6为根据本公开的各种实施例的操作存储器系统的实例方法600的流程图。方法600可根据本公开中所描述的至少一个实施例来布置。在一些实施例中,可通过装置或系统执行方法600,所述装置或系统例如图1的系统100、图4的FMA单元400、图7的系统700,和/或图8的系统800,或另一装置或系统。尽管说明为离散的框,但取决于所要实施方案,各种框可划分为额外框,组合成更少的框,或者经消除。应注意,各种框可与其它框同时执行,和/或一些框可按管线方式操作。
方法600可在框602处开始,其中可将输入向量加载到定序器中,且方法600可继续进行到框604。举例来说,可包含一或多个位的输入向量可加载到在存储器装置内(例如,在感测电路系统内或接近感测电路系统)或在存储器装置外部(例如,在外部控制器内)的定序器中。更确切地说,举例来说,输入向量,其可包含输入矩阵(例如,图2A的矩阵A)的行的一或多个位,可经由一或多个位线407加载到图4的定序器402中。
在框604处,可将存储器装置的存储器阵列的行加载到存储器装置的感测放大器阵列中,且方法600可继续进行到框606。举例来说,所述行,其可包含多个位(例如,多个位群组),可加载到图4的一或多个FMA模块(例如,FMA j、FMA j+1等)中。另外,举例来说,可经由专用位线(例如,图4的位线408/410)来加载行的每一位。
在框606处,可将行的每一位群组乘以输入向量的位以产生包含多个列的按比例缩放行,且方法600可继续进行到框608。举例来说,输入向量的位,其可跨越感测放大器阵列(例如,图4的阵列404)共享,可乘以感测放大器阵列中加载的行的每一位以产生按比例缩放行。举例来说,按比例缩放行可包含图5A中所说明的按比例缩放行b'(1)。
在框608处,可将行的每一位群组乘以输入向量的至少一个额外位以产生包含多个列的至少一个额外按比例缩放行,且方法600可继续进行到框610。举例来说,输入向量的第二位,其可跨越感测放大器阵列(例如,图4的阵列404)共享,可乘以感测放大器阵列中加载的行的每一位以产生第二按比例缩放行。另外,举例来说,输入向量的第三位,其可跨越感测放大器阵列(例如,图4的阵列404)共享,可乘以感测放大器阵列中加载的行的每一位以产生第三按比例缩放行。举例来说,第二按比例缩放行可包含图5A中所说明的按比例缩放行b'(2),且第三按比例缩放行可包含图5A中所说明的按比例缩放行b'(3)。
在框610处,可使至少一个额外按比例缩放行相对于按比例缩放行移位一个列位置,且方法600可继续进行到框612。举例来说,图5A说明相对于邻近行移位一个列位置的每一按比例缩放行。举例来说,在通过FMA单元(例如,图4的FMA阵列404)执行FMA运算以产生按比例缩放行期间或之后,FMA单元可相对于先前产生的按比例缩放行移位所述按比例缩放行(例如,向左一个列位置)。
任何框612,可沿列对按比例缩放行和至少一个额外按比例缩放行进行求和以产生促成输出矩阵的行的部分结果。举例来说,FMA单元(例如,图4的FMA阵列404)可对按比例缩放行和至少一个额外按比例缩放行(例如,行b'(1)、行b'(2)、行b'(3)和行b'(i);参见图5A)的列(例如,中间矩阵的列)进行求和以产生促成输出矩阵的行(例如,图2A的矩阵C的行c[i])的部分结果。产生输出矩阵的整个行可包含针对每一乘数操作数的每一位和存储器阵列的相关行的此过程的多个迭代。
可在不脱离本公开的范围的情况下对方法600作出修改、添加或省略。举例来说,可以不同次序实施方法600的操作。此外,仅提供所概述的操作和动作以作为实例,并且所述操作和动作中的一些可为任选的、组合成更少操作和动作,或扩展成额外操作和动作而不背离所公开实施例的本质。举例来说,在各种实施例中,可将另一输入向量加载到定序器中,和/或可将另一行加载到感测放大器阵列中。另外,在一些实施例中,中间矩阵(例如,图3的中间矩阵M)可经产生和/或存储(例如,在介接感测放大器阵列的便笺区域中)。
还公开一种存储器系统。根据各种实施例,存储器系统可包含存储器装置(例如,图1的存储器装置120),所述存储器装置包含一或多个存储器单元阵列。图7为根据本文中所描述的一或多个实施例实施的存储器系统700的简化框图。存储器系统700(其可包含例如半导体装置)包含存储器阵列702和FMA单元704(其可包含图4的阵列404)。可包含多个存储器组的存储器阵列702可包含若干存储器单元。
FMA单元704可操作地与存储器阵列702耦合,以便读取或写入存储器阵列702内的任何或所有存储器单元。FMA单元704可经配置以用于执行本文中所公开的一或多个实施例。举例来说,在一些实施例中,根据本文中所公开的各种实施例,可包含定序器和感测放大器阵列的FMA单元704可经配置以执行一或多个FMA运算。
还公开一种系统。根据各种实施例,系统可包含存储器装置,所述存储器装置包含多个存储器组,每一存储器组具有存储器单元阵列。每一存储器单元可包含存取晶体管和与所述存取晶体管可操作地耦合的存储元件。
图8为根据本文中所描述的一或多个实施例实施的电子系统800的简化框图。电子系统800包含至少一个输入装置802,所述输入装置802可包含例如键盘、鼠标或触摸屏。电子系统800进一步包含至少一个输出装置804,例如监视器、触摸屏或扬声器。输入装置802和输出装置804不一定可彼此分离。电子系统800进一步包含存储装置806。输入装置802、输出装置804和存储装置806可耦合到处理器808。电子系统800进一步包含耦合到处理器808的存储器装置810。可包含图7的存储器系统700的存储器装置810可包含存储器单元阵列。电子系统800可包含例如计算、处理、工业或消费型产品。举例来说但不受限制,系统800可包含个人计算机或计算机硬件组件、服务器或其它联网硬件组件、数据库引擎、入侵防护系统、手持式装置、平板计算机、电子笔记本型计算机、相机、电话、音乐播放器、无线装置、显示器、芯片组、游戏、车辆或其它已知系统。
根据本文中所公开的各种实施例,且与一些常规装置、系统和方法形成对比,可再使用在一或多个计算中使用的数据(例如,跨越矩阵的行中的位)。结果,可减少从一或多个存储器阵列读取和/或写入到一或多个存储器阵列的数目,其可提高PIM操作的效率和/或速度和/或减少与PIM操作相关联的等待时间。
本公开的一或多个实施例包含一种操作存储器系统的方法。举例来说,方法可包含将第一数目的位加载到存储器装置的电路系统中,所述第一数目的位中的每一位具有第一状态或第二状态。方法还可包含将第二数目的位群组加载到电路系统中,所述第二数目的位群组中的每一位具有第一状态或第二状态。另外,方法可包含将第二数目的位群组中的每一位群组乘以第一数目的位中的每一位以产生多个按比例缩放行。另外,方法可包含沿相关联位位置对多个按比例缩放行进行求和以产生输出行。
根据另一实施例,一种操作包含存储器装置的存储器系统的方法可包含经由存储器装置的存储器阵列的多个位线将存储器阵列的第一数目的位群组加载到电路系统中。所述方法还可包含将多个操作数加载到电路系统中。另外,所述方法可包含将第一数目的位群组中的每一位群组中的每一位乘以操作数的第一位以产生第一按比例缩放行。并且,所述方法可包含至少部分地基于第一按比例缩放行而产生输出矩阵的行的多个位
在又一实施例中,一种方法可包含经由存储器装置的存储器阵列的多个位线将存储器阵列的行群组加载到电路系统中。所述方法可进一步包含将操作数的群组加载到电路系统中。所述方法还可包含使行群组中的每一行由操作数群组中的每一相关联操作数乘法累加以产生输出矩阵的第一行。
本公开的一些实施例包含一种存储器系统。存储器系统可包含至少一个存储器阵列和耦合到所述至少一个存储器阵列的逻辑。所述逻辑可经配置以接收包含多个位的输入。所述逻辑还可经配置以接收至少一个存储器阵列的存储器阵列的行,所述行包括位群组。另外,所述逻辑可经配置以将所述位群组中的每一位群组中的每一位乘以输入的每一位以产生多个按比例缩放行群组,其中所述按比例缩放行群组中的每一按比例缩放行群组中的每一按比例缩放行包含多个列,且所述按比例缩放行群组中的每一按比例缩放行群组中的每一按比例缩放行相对于相关联按比例缩放行群组内的邻近按比例缩放行移位至少一个列位置。另外,所述逻辑可经配置以跨越每一按比例缩放行群组内的列对按比例缩放行进行求和以产生输出行。
本公开的额外实施例包含一种电子系统。电子系统可包含至少一个输入装置、至少一个输出装置和可操作地耦合到输入装置和输出装置的至少一个处理器装置。所述电子系统还可包含可操作地耦合到所述至少一个处理器装置的至少一个存储器装置。所述至少一个存储器装置可包含至少一个存储器单元阵列和耦合到至少一个存储器阵列的逻辑。所述逻辑可经配置以接收第一操作数及所述至少一个存储器阵列的存储器阵列的行。所述逻辑还可经配置以使存储器阵列的行的多个位由操作数的位相乘移位累加以产生第一按比例缩放行。所述逻辑还可经配置以接收至少一个额外操作数。另外,所述逻辑可经配置以使行的多个位由至少一个额外操作数的位相乘移位累加以产生至少一个额外按比例缩放行。并且,所述逻辑可经配置以基于第一按比例缩放行和至少一个额外按比例缩放行而产生输出矩阵的行。
根据惯例,图式中所说明的各种特征可能未按比例绘制。本公开中所呈现的说明不打算是任何特定设备(例如,装置、系统等等)或方法的实际视图,而是仅为用于描述本公开的各种实施例的理想化表示。因此,为了清晰起见,可以任意扩大或减小各种特征的尺寸。此外,为了清楚起见,可简化一些图。因此,图式可不描绘给定设备(例如,装置)的所有组件或特定方法的所有操作。
如本文中所使用,术语“装置”或“存储器装置”可包含具有存储器的装置,但不限于只具有存储器的装置。举例来说,装置或存储器装置可包含存储器、处理器和/或其它组件或功能。举例来说,装置或存储器装置可包含芯片上系统(SOC)。在一些实施例中,本文中所描述的计算方法可适用于储存装置,例如固态驱动器。因此,本文中所使用的术语“存储器装置”可包含存储装置。
本文中且尤其在所附权利要求书(例如,所附权利要求书的主体)中所使用的术语通常意图为“开放性”术语(例如,术语“包含(including)”应被解译为“包含但不限于”,术语“具有”应被解译为“至少具有”,术语“包含(includes)”应被解译为“包含但不限于”等)。
另外,如果意图特定数目的所引入权利要求叙述,则将在所述权利要求中明确叙述这种意图,且在不存在这种叙述的情况下,不存在这种意图。举例来说,为辅助理解,所附权利要求书可含有使用介绍性短语“至少一个”和“一或多个”来引入权利要求叙述。然而,此类短语的使用不应解释为暗示通过不定冠词“一(a/an)”引入权利要求叙述将含有如此引入的权利要求叙述的任何特定权利要求限于仅含有一个此类叙述的实施例,即使在同一个权利要求包含介绍性短语“一或多个”或“至少一个”和例如“一”的不定冠词时也如此(例如,“一”应被解译为意味“至少一个”或“一或多个”);这同样适用于使用定冠词来引入权利要求叙述的情况。如本文中所使用,术语“和/或”包含相关联所列项目中的一或多个的任何和所有组合。
此外,即使明确叙述了特定数目的所引入权利要求叙述,仍应理解,这种叙述通常应解释为至少是指叙述的数目(例如,没有其它修饰语的“两个叙述”的简单叙述、意味着至少两个叙述,或两个或更多个叙述)。此外,在使用类似于“A、B和C等等中的至少一个”或“A、B和C等等中的一或多个”的惯例的那些情况下,一般来说,此类结构意图仅包含A、仅包含B、仅包含C、共同包含A和B、共同包含A和C、共同包含B和C或共同包含A、B和C等等。举例来说,意图以这种方式解释术语“和/或”的使用。
另外,如本文中所使用,包含在权利要求书中,项目的列表(例如,以例如“中的至少一者”或“中的一或多者”的短语开始的项目的列表)中所使用的“或”指示包含性列表,使得例如A、B或C中的至少一者的列表意指A或B或C或AB或AC或BC或ABC(即,A和B和C)。并且,如本文中所使用,短语“基于”不应解释为对封闭条件集的参考。例如,在不脱离本公开的范围的情况下,描述为“基于条件A”的示范性步骤可基于条件A和条件B两者。换句话说,如本文所使用,短语“基于”应以与短语“至少部分地基于”相同的方式解释。
此外,术语“第一”、“第二”、“第三”等的使用在本文中不一定用于意味着元件的具体次序或数目。一般来说,术语“第一”、“第二”、“第三”等等用于作为通用标识符区分不同元件。在不存在术语“第一”、“第二”、“第三”等等意味着特定次序的表现的情况下,这些术语不应理解为意味着特定次序。此外,在不存在术语“第一”、“第二”、“第三”等等意味着元件的特定数目的表现的情况下,这些术语不应理解为意味着元件的特定数目。
上文所描述的和附图中所示出的本公开的实施例并不限制本公开的范围,所述范围涵盖于所附权利要求书和其合法等效物的范围内。任何等效实施例都在本公开的范围内。实际上,除本文中所展示和描述的例如所描述元件的替代适用组合的内容以外,对于所属领域的技术人员来说,本公开的各种修改将根据描述变得显而易见。此类修改和实施例也落入所附权利要求书和等效物的范围内。
Claims (25)
1.一种方法,其包括:
将第一数目的位加载到存储器装置的电路系统中,所述第一数目的位中的每一位具有第一状态或第二状态;
将第二数目的位群组加载到所述电路系统中,所述第二数目的位群组中的每一位具有所述第一状态或所述第二状态;
将所述第二数目的位群组中的每一位群组乘以所述第一数目的位中的每一位以产生多个按比例缩放行;及
沿相关联位位置对所述多个按比例缩放行进行求和以产生输出行。
2.根据权利要求1所述的方法,其进一步包括将所述多个按比例缩放行中的每一按比例缩放行相对于第一按比例缩放行移位等于所述第一数目的位中的所述位的位位置的多个列位置,以使所述多个按比例缩放行沿所述相关联位位置对准。
3.根据权利要求1所述的方法,其进一步包括产生包括所述多个按比例缩放行的中间矩阵,所述中间矩阵的每一按比例缩放行相对于所述中间矩阵的每一其它按比例缩放行移位至少一个列位置。
4.根据权利要求3所述的方法,其中求和包括对所述中间矩阵的每一列的值进行求和以产生所述输出行。
5.根据权利要求1所述的方法,其中加载所述第一数目的位包括将所述第一数目的位加载到定序器中。
6.根据权利要求1所述的方法,其中加载所述第一数目的位包括从所述存储器装置的第一存储器阵列加载所述第一数目的位,其中加载所述第二数目的位群组包括从所述存储器装置的另一存储器阵列加载所述第二数目的位群组。
7.根据权利要求1所述的方法,其进一步包括:
将第三数目的位加载到所述电路系统中,所述第三数目的位中的每一位具有所述第一状态或所述第二状态;
将第四数目的位群组加载到所述电路系统中,所述第四数目的位群组中的每一位具有所述第一状态或所述第二状态;
将所述第四数目的位群组中的每一位群组乘以所述第三数目的位中的每一位以产生额外数目的按比例缩放行;及
沿相关联位位置对所述额外数目的按比例缩放行进行求和以产生额外输出行。
8.根据权利要求7所述的方法,其进一步包括将所述多个按比例缩放行中的每一所产生按比例缩放行相对于第一按比例缩放行移位等于所述第一数目的位中的所述位的位位置的多个列位置,以使所述多个按比例缩放行沿所述相关联位位置对准。
9.根据权利要求7所述的方法,其进一步包括对至少所述输出行和所述额外输出行进行求和以产生输出矩阵的行。
10.根据权利要求1所述的方法,其中加载所述第二数目的位包括将所述第二数目的位加载到感测放大器阵列的多个融合乘加(FMA)单元中。
11.一种存储器系统,其包括:
至少一个存储器阵列;及
逻辑,其耦合到所述至少一个存储器阵列且经配置以:
接收包含多个位的输入;
接收所述至少一个存储器阵列的存储器阵列的行,所述行包括位群组;
将所述位群组中的每一位群组中的每一位乘以所述输入的每一位以产生多个按比例缩放行群组,所述多个按比例缩放行群组中的每一按比例缩放行群组中的每一按比例缩放行包含多个列,且所述按比例缩放行群组中的每一按比例缩放行群组中的每一按比例缩放行相对于相关联按比例缩放行群组内的邻近按比例缩放行移位至少一个列位置;及
跨越每一按比例缩放行群组内的列对按比例缩放行进行求和以产生输出行。
12.根据权利要求11所述的存储器系统,其中所述逻辑包括一或多个FMA单元和定序器,所述定序器经配置以接收所述输入且控制所述一或多个FMA单元以加载所述行的每一位且将所述输入的每一位乘以所述行的所述位群组中的每一位群组内的所述行的每一位。
13.根据权利要求11所述的存储器系统,其中所述逻辑进一步经配置以:
接收至少一个额外输入;
接收所述存储器阵列的至少一个额外行,其中所述行包括多个位群组;
基于所述至少一个额外输入和所述至少一个额外行产生至少一个额外输出;及
在每一群组内沿列对所述输出行和所述额外输出行进行求和以产生输出矩阵的行。
14.根据权利要求11所述的存储器系统,其中所述逻辑包括多个感测放大器群组,所述多个感测放大器群组中的每一感测放大器群组经配置以接收与所述存储器阵列的所述行的一部分相关联的平铺块。
15.一种方法,其包括:
经由存储器装置的存储器阵列的多个位线将第一数目的位群组加载到所述存储器装置的电路系统中;
将多个操作数加载到所述电路系统中;
将所述第一数目的位群组中的每一位群组的每一位乘以所述多个操作数中的第一操作数的第一位以产生第一按比例缩放行;及
至少部分地基于所述第一按比例缩放行而产生输出矩阵的行的多个位。
16.根据权利要求15所述的方法,其进一步包括将所述第一数目的位群组中的每一位群组中的每一位乘以所述多个操作数中的所述第一操作数的至少一个额外位以产生至少一个额外按比例缩放行,其中产生所述输出矩阵的所述行的所述多个位包括基于所述第一按比例缩放行和所述至少一个额外按比例缩放行产生所述输出矩阵的所述行的所述多个位。
17.根据权利要求16所述的方法,其进一步包括:
经由所述存储器装置的所述存储器阵列的所述多个位线将第二行的多个位群组加载到所述存储器装置的所述电路系统中;
将所述第二行的所述多个位群组中的每一位群组中的每一位乘以所述多个操作数中的第二操作数的第一位以产生第二按比例缩放行;及
将所述第二行的所述多个位群组中的每一位群组中的每一位乘以所述多个操作数中的所述第二操作数的至少一个额外位以产生一或多个额外按比例缩放行;
其中产生输出矩阵的所述行的所述多个位包括至少部分地基于所述第一按比例缩放行、所述第二按比例缩放行和所述一或多个额外按比例缩放行而产生所述行的所述多个位。
18.根据权利要求15所述的方法,其中加载所述多个操作数包括:
将包含所述多个位的操作数加载到所述存储器装置的定序器中;或
将包含将所述多个位的所述操作数加载到所述存储器装置外部的定序器中。
19.根据权利要求15所述的方法,其中加载包含多个位的所述多个操作数包括将所述多个操作数的所述多个位依序加载到定序器中。
20.一种方法,其包括:
经由存储器装置的存储器阵列的多个位线将存储器阵列的行群组加载到电路系统中;
将操作数群组加载到所述电路系统中;及
使所述行群组中的每一行由所述操作数群组中的每一相关联操作数乘法累加以产生输出矩阵的第一行。
21.根据权利要求20所述的方法,其进一步包括:
将所述存储器阵列的额外操作数群组和额外行群组加载到所述电路系统中;及
使所述额外行群组中的每一行由所述额外操作数群组中的每一相关联操作数乘法累加以产生所述输出矩阵的第二行。
22.根据权利要求20所述的方法,其中加载所述存储器阵列的行群组包括从第一矩阵加载所述行群组,其中加载操作数群组包括加载第二矩阵的行的至少一部分。
23.一种系统,其包括∶
至少一个输入装置;
至少一个输出装置;
至少一个处理器装置,其耦合到所述输入装置和所述输出装置;及
至少一个存储器装置,其耦合到所述至少一个处理器装置且包括:
至少一个存储器单元阵列;及
逻辑,其耦合到至少一个存储器阵列且经配置以:
接收第一操作数;
接收所述至少一个存储器单元阵列的存储器阵列的行;
使所述存储器阵列的所述行的多个位由所述第一操作数的所述位相乘移位累加以产生第一按比例缩放行;
接收至少一个额外操作数;
使所述行的所述多个位由所述至少一个额外操作数的位相乘移位累加以产生至少一个额外按比例缩放行;及
基于所述第一按比例缩放行和至少一个额外按比例缩放行产生输出矩阵的行。
24.根据权利要求23所述的系统,其中所述逻辑经配置以沿列对所述第一按比例缩放行和所述至少一个额外按比例缩放行进行求和以产生所述输出矩阵的所述行。
25.根据权利要求23所述的系统,其中所述逻辑包括:定序器,其经配置以接收所述第一操作数;和感测放大器阵列,其包含经配置以接收所述存储器阵列的所述行的多个融合乘加(FMA)单元。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962896228P | 2019-09-05 | 2019-09-05 | |
US62/896,228 | 2019-09-05 | ||
US16/841,222 | 2020-04-06 | ||
US16/841,222 US11934824B2 (en) | 2019-09-05 | 2020-04-06 | Methods for performing processing-in-memory operations, and related memory devices and systems |
PCT/US2020/070450 WO2021046568A1 (en) | 2019-09-05 | 2020-08-24 | Methods for performing processing-in-memory operations, and related memory devices and systems |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114341802A true CN114341802A (zh) | 2022-04-12 |
Family
ID=74851173
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080061754.1A Pending CN114341802A (zh) | 2019-09-05 | 2020-08-24 | 用于执行存储器内处理操作的方法及相关存储器装置和系统 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11934824B2 (zh) |
EP (1) | EP3997563A4 (zh) |
KR (1) | KR20220051006A (zh) |
CN (1) | CN114341802A (zh) |
WO (1) | WO2021046568A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11693657B2 (en) | 2019-09-05 | 2023-07-04 | Micron Technology, Inc. | Methods for performing fused-multiply-add operations on serially allocated data within a processing-in-memory capable memory device, and related memory devices and systems |
US11829729B2 (en) | 2019-09-05 | 2023-11-28 | Micron Technology, Inc. | Spatiotemporal fused-multiply-add, and related systems, methods and devices |
US11861369B2 (en) * | 2020-01-07 | 2024-01-02 | SK Hynix Inc. | Processing-in-memory (PIM) device |
US11537861B2 (en) | 2020-06-23 | 2022-12-27 | Micron Technology, Inc. | Methods of performing processing-in-memory operations, and related devices and systems |
TWI760942B (zh) * | 2020-11-26 | 2022-04-11 | 國立中正大學 | 可變延遲計算裝置 |
Family Cites Families (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7301541B2 (en) | 1995-08-16 | 2007-11-27 | Microunity Systems Engineering, Inc. | Programmable processor and method with wide operations |
KR100280518B1 (ko) | 1998-11-10 | 2001-03-02 | 김영환 | 동기 에스램 회로 |
US7852671B2 (en) | 2008-10-30 | 2010-12-14 | Micron Technology, Inc. | Data path for multi-level cell memory, methods for storing and methods for utilizing a memory array |
US8577950B2 (en) | 2009-08-17 | 2013-11-05 | International Business Machines Corporation | Matrix multiplication operations with data pre-conditioning in a high performance computing architecture |
US8984043B2 (en) | 2009-12-23 | 2015-03-17 | Intel Corporation | Multiplying and adding matrices |
WO2013077845A1 (en) | 2011-11-21 | 2013-05-30 | Intel Corporation | Reducing power consumption in a fused multiply-add (fma) unit of a processor |
US9430735B1 (en) | 2012-02-23 | 2016-08-30 | Micron Technology, Inc. | Neural network in a memory device |
KR101975534B1 (ko) | 2012-09-11 | 2019-05-07 | 삼성전자주식회사 | 연산기능을 갖는 반도체 메모리 장치 |
US9779792B2 (en) | 2013-06-27 | 2017-10-03 | Advanced Micro Devices, Inc. | Register file with read ports clustered by entry |
US9786335B2 (en) * | 2014-06-05 | 2017-10-10 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
US10074407B2 (en) | 2014-06-05 | 2018-09-11 | Micron Technology, Inc. | Apparatuses and methods for performing invert operations using sensing circuitry |
US9704540B2 (en) | 2014-06-05 | 2017-07-11 | Micron Technology, Inc. | Apparatuses and methods for parity determination using sensing circuitry |
US9449674B2 (en) | 2014-06-05 | 2016-09-20 | Micron Technology, Inc. | Performing logical operations using sensing circuitry |
US9496023B2 (en) | 2014-06-05 | 2016-11-15 | Micron Technology, Inc. | Comparison operations on logical representations of values in memory |
WO2016003740A1 (en) | 2014-07-02 | 2016-01-07 | Via Alliance Semiconductor Co., Ltd. | Split-path fused multiply-accumulate operation using first and second sub-operations |
US9373408B2 (en) | 2014-10-07 | 2016-06-21 | SanDisk Technologies, Inc. | Highly linear analog-to-digital converter and method for nonvolatile memory |
US10192162B2 (en) | 2015-05-21 | 2019-01-29 | Google Llc | Vector computation unit in a neural network processor |
US9704541B2 (en) | 2015-06-12 | 2017-07-11 | Micron Technology, Inc. | Simulating access lines |
CN116842306A (zh) | 2016-03-23 | 2023-10-03 | Gsi 科技公司 | 存储器内矩阵乘法及其在神经网络中的使用 |
KR102481418B1 (ko) | 2016-06-07 | 2022-12-26 | 목원대학교 산학협력단 | 단일 곱셈-누산 방법 및 장치 |
US10416896B2 (en) | 2016-10-14 | 2019-09-17 | Samsung Electronics Co., Ltd. | Memory module, memory device, and processing device having a processor mode, and memory system |
US10140092B2 (en) | 2016-11-04 | 2018-11-27 | Samsung Electronics Co., Ltd. | Closepath fast incremented sum in a three-path fused multiply-add design |
US10311191B2 (en) | 2017-01-26 | 2019-06-04 | Advanced Micro Devices, Inc. | Memory including side-car arrays with irregular sized entries |
CN110300956A (zh) | 2017-02-23 | 2019-10-01 | Arm有限公司 | 数据处理装置中的乘-累加 |
US10817587B2 (en) * | 2017-02-28 | 2020-10-27 | Texas Instruments Incorporated | Reconfigurable matrix multiplier system and method |
US10482929B2 (en) | 2017-07-13 | 2019-11-19 | Qualcomm Incorporated | Non-volative (NV) memory (NVM) matrix circuits employing NVM matrix circuits for performing matrix computations |
JP2019028569A (ja) | 2017-07-26 | 2019-02-21 | 株式会社東芝 | メモリシステム、半導体記憶装置及び信号処理システム |
US10416927B2 (en) | 2017-08-31 | 2019-09-17 | Micron Technology, Inc. | Processing in memory |
US10878317B2 (en) | 2017-09-11 | 2020-12-29 | Samsung Electronics Co., Ltd. | Method and system for performing analog complex vector-matrix multiplication |
US11127460B2 (en) | 2017-09-29 | 2021-09-21 | Crossbar, Inc. | Resistive random access memory matrix multiplication structures and methods |
KR102592146B1 (ko) | 2017-11-06 | 2023-10-20 | 삼성전자주식회사 | 시냅스 가중치 학습을 위한 뉴런 회로, 시스템 및 방법 |
US10635398B2 (en) | 2018-03-15 | 2020-04-28 | Macronix International Co., Ltd. | Voltage sensing type of matrix multiplication method for neuromorphic computing system |
US10692570B2 (en) | 2018-07-11 | 2020-06-23 | Sandisk Technologies Llc | Neural network matrix multiplication in memory cells |
US10643705B2 (en) | 2018-07-24 | 2020-05-05 | Sandisk Technologies Llc | Configurable precision neural network with differential binary non-volatile memory cell structure |
US11309334B2 (en) | 2018-09-11 | 2022-04-19 | iCometrue Company Ltd. | Logic drive using standard commodity programmable logic IC chips comprising non-volatile random access memory cells |
US10748603B2 (en) | 2018-09-28 | 2020-08-18 | Intel Corporation | In-memory multiply and accumulate with global charge-sharing |
US11061646B2 (en) | 2018-09-28 | 2021-07-13 | Intel Corporation | Compute in memory circuits with multi-Vdd arrays and/or analog multipliers |
US10877752B2 (en) | 2018-09-28 | 2020-12-29 | Intel Corporation | Techniques for current-sensing circuit design for compute-in-memory |
US10642922B2 (en) | 2018-09-28 | 2020-05-05 | Intel Corporation | Binary, ternary and bit serial compute-in-memory circuits |
US10497442B1 (en) | 2018-11-15 | 2019-12-03 | Hewlett Packard Enterprise Development Lp | Memristor arrays in crossbars |
KR20200082617A (ko) | 2018-12-31 | 2020-07-08 | 삼성전자주식회사 | 메모리 장치를 이용한 계산 방법 및 이를 수행하는 메모리 장치 |
US11423979B2 (en) | 2019-04-29 | 2022-08-23 | Silicon Storage Technology, Inc. | Decoding system and physical layout for analog neural memory in deep learning artificial neural network |
US10998037B2 (en) | 2019-05-07 | 2021-05-04 | Memryx Incorporated | Memory processing units and methods of computing dot products |
US11568200B2 (en) | 2019-10-15 | 2023-01-31 | Sandisk Technologies Llc | Accelerating sparse matrix multiplication in storage class memory-based convolutional neural network inference |
-
2020
- 2020-04-06 US US16/841,222 patent/US11934824B2/en active Active
- 2020-08-24 EP EP20861928.8A patent/EP3997563A4/en active Pending
- 2020-08-24 CN CN202080061754.1A patent/CN114341802A/zh active Pending
- 2020-08-24 KR KR1020227010454A patent/KR20220051006A/ko unknown
- 2020-08-24 WO PCT/US2020/070450 patent/WO2021046568A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
KR20220051006A (ko) | 2022-04-25 |
US20210072987A1 (en) | 2021-03-11 |
WO2021046568A1 (en) | 2021-03-11 |
EP3997563A1 (en) | 2022-05-18 |
US11934824B2 (en) | 2024-03-19 |
EP3997563A4 (en) | 2023-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11693657B2 (en) | Methods for performing fused-multiply-add operations on serially allocated data within a processing-in-memory capable memory device, and related memory devices and systems | |
US11614878B2 (en) | Apparatuses and methods for data movement | |
US11016811B2 (en) | Apparatuses and methods to determine timing of operations | |
US20200348934A1 (en) | Computation Engine that Operates in Matrix and Vector Modes | |
US11682449B2 (en) | Apparatuses and methods for compute in data path | |
US20190354303A1 (en) | Apparatuses and methods for operations using compressed and decompressed data | |
US11934824B2 (en) | Methods for performing processing-in-memory operations, and related memory devices and systems | |
US20190171448A1 (en) | Stream processor with low power parallel matrix multiply pipeline | |
EP3539130B1 (en) | Apparatuses and methods for memory alignment | |
US10878856B2 (en) | Data transfer between subarrays in memory | |
US11048652B2 (en) | Apparatus and methods for in data path compute operations | |
CN111316261A (zh) | 矩阵计算引擎 | |
US20190196831A1 (en) | Memory apparatus and method for controlling the same | |
KR20210113099A (ko) | 조정 가능한 기능-인-메모리 컴퓨팅 시스템 | |
US11494121B2 (en) | Memory device for performing in-memory processing | |
US11941371B2 (en) | Bit string accumulation | |
US20220365751A1 (en) | Compressed wallace trees in fma circuits | |
JPH06230964A (ja) | キャッシュメモリを備えた計算機 |
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 |