CN114341983A - 用于人工智能操作的激活函数 - Google Patents
用于人工智能操作的激活函数 Download PDFInfo
- Publication number
- CN114341983A CN114341983A CN202080061301.9A CN202080061301A CN114341983A CN 114341983 A CN114341983 A CN 114341983A CN 202080061301 A CN202080061301 A CN 202080061301A CN 114341983 A CN114341983 A CN 114341983A
- Authority
- CN
- China
- Prior art keywords
- function
- activation function
- memory
- registers
- data
- 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
- 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/1078—Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
- G11C7/1096—Write circuits, e.g. I/O line write drivers
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C5/00—Details of stores covered by group G11C11/00
- G11C5/02—Disposition of storage elements, e.g. in the form of a matrix array
- G11C5/025—Geometric lay-out considerations of storage- and peripheral-blocks in a semiconductor storage device
-
- 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/1051—Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
- G11C7/106—Data output latches
-
- 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/1072—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
-
- 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/1078—Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
- G11C7/1087—Data input latches
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Molecular Biology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Quality & Reliability (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Memory System (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开包括与定义用于人工智能(AI)操作的激活函数有关的设备和方法。实例设备可包括数个存储器阵列和控制器,其中所述控制器包括数个激活函数寄存器,其中所述数个激活函数寄存器定义由所述设备执行的人工智能(AI)操作的激活函数。
Description
技术领域
本公开大体上涉及存储器装置,且更确切地说,涉及用于定义用于人工智能(AI)操作的激活函数的设备和方法。
背景技术
存储器装置通常提供为计算机或其它电子装置中的内部半导体集成电路。存在许多不同类型的存储器,包括易失性和非易失性存储器。易失性存储器可能需要电力来维持其数据,且包括随机存取存储器(RAM)、动态随机存取存储器(DRAM)和同步动态随机存取存储器(SDRAM)等。非易失性存储器可通过在未被供电时保持所存储数据来提供永久性数据,且可包括NAND快闪存储器、NOR快闪存储器、只读存储器(ROM)、电可擦除可编程ROM(EEPROM)、可擦除可编程ROM(EPROM)和电阻可变存储器,例如相变随机存取存储器(PCRAM)、电阻性随机存取存储器(RRAM)和磁阻随机存取存储器(MRAM)等。
存储器还用作易失性和非易失性数据存储装置以用于广泛范围的电子应用。非易失性存储器可用于例如个人计算机、便携式记忆棒、数码相机、蜂窝电话、例如MP3播放器、影片播放器的便携式音乐播放器和其它电子装置。存储器单元可布置成阵列,其中所述阵列在存储器装置中使用。
存储器可为计算装置中使用的存储器模块(例如,双列直插式存储器模块(DIMM))的部分。存储器模块可包括例如DRAM的易失性存储器和/或例如快闪存储器或RRAM的非易失性存储器。DIMM可用作计算***中的主存储器。
附图说明
图1为根据本公开的数个实施例的呈包括具有人工智能(AI)加速器的存储器装置的计算***形式的设备的框图。
图2为根据本公开的数个实施例的具有人工智能(AI)加速器的存储器装置上的数个寄存器的框图。
图3A和3B为根据本公开的数个实施例的具有人工智能(AI)加速器的存储器装置上的数个寄存器中的数个位的框图。
图4为根据本公开的数个实施例的具有人工智能(AI)加速器的存储器装置的数个块的框图。
图5为说明根据本公开的数个实施例的具有人工智能(AI)加速器的存储器装置中的实例人工智能过程的流程图。
图6为说明根据本公开的数个实施例的用于人工智能(AI)操作的数个激活函数的表。
图7A为根据本公开的数个实施例的呈包括具有人工智能(AI)加速器的存储器装置的计算***形式的设备的框图。
图7B为根据本公开的数个实施例的呈包括在阵列的组区段本地的数据路径中具有共享输入/输出(I/O)线的具有人工智能(AI)加速器的存储器装置的计算***形式的设备的框图。
图8为说明根据本公开的数个实施例的存储器装置的感测电路***的示意图,所述感测电路***包括计算组件。
图9为说明根据本公开的数个实施例的用于阵列的数据路径中的多个共享I/O线的电路***的示意图。
图10A为说明通过阵列本地的数据路径中的多个共享I/O线耦合到具有多个逻辑条的计算单元的阵列的多个区段的框图实例。
图10B为说明通过阵列本地的数据路径中的多个共享I/O线耦合到计算单元中的多个计算组件的多个阵列的框图实例,其中计算组件具有等于共享I/O线的数据路径的间距且为数字线到阵列的间距的倍数的间距。
具体实施方式
本公开包括与定义和选择用于人工智能(AI)操作的激活函数有关的设备和方法。实例设备可包括数个存储器阵列和包括数个激活函数寄存器的控制器,其中所述数个激活函数寄存器定义用于由所述设备执行的AI操作的激活函数。
在数个实施例中,激活函数可为预定义激活函数和/或自定义激活函数。预定义激活函数可包括但不限于恒等函数(例如,恒等关系、恒等映射和/或恒等转换)、二元阶跃函数、逻辑函数、双曲正切函数(例如,tanH)、反正切函数(例如,ArcTan)、软符号函数、反平方根单元(ISRU)函数、修正线性单元(ReLU)函数、泄漏修正线性单元(泄漏ReLU)函数、参数化修正线性单元(PReLU)函数、随机化泄漏修正线性单元(RReLU)函数、指数线性单元(ELU)函数和/或缩放指数线性单元(SELU)函数以及其它函数。
AI操作可包括更新、改变和/或产生激活函数(例如,自定义激活函数)。可基于前一AI操作的结果产生自定义激活函数。举例来说,自定义激活函数可基于调试操作的结果。选择自定义激活函数可改进AI操作的功能性和效率。
在一些实例中,设备可为计算***的存储器装置。与定义用于存储器装置的激活函数的主机相比,存储器装置上的激活函数寄存器在定义用于AI操作的激活函数时可减少延时和电力消耗。主机定义的激活函数在存储器装置与主机之间交换,这增加了在AI操作中选择和使用激活函数的过程的延时和电力消耗。虽然可对存储器装置执行根据本公开的定义激活函数,但数据不从存储器装置传送。举例来说,存储器装置可处理数据且基于经处理数据选择要执行的激活函数,而不将数据发送到主机且不从主机接收激活函数。
在本公开的以下详细描述中,参考形成本公开的一部分的附图,且在附图中通过说明的方式展示可如何实践本公开的数个实施例。足够详细地描述这些实施例以使得本领域的一般技术人员能够实践本公开的实施例,且应理解,可利用其它实施例且可在不脱离本公开的范围的情况下进行过程、电气和/或结构变化。如本文中所使用,标志符“N”指示如此标志的数个特定特征可与本公开的数个实施例包括在一起。
如本文中所使用,“数个”某物可指这种事物中的一或多个。举例来说,数个存储器装置可指存储器装置中的一或多个。另外,如本文中所使用的例如“N”的标志符,尤其相对于图式中的附图标记,指示如此标志的数个特定特征可与本公开的数个实施例包括在一起。
本文中的图式遵循编号惯例,其中第一一或多个数字对应于图式编号,且剩余数字标识图式中的元件或组件。可通过使用类似数字来标识不同图式之间的类似元件或组件。如应了解,可添加、交换和/或排除本文中的各种实施例中所展示的元件,以便提供本公开的数个额外实施例。另外,图式中所提供的元件的比例和相对尺度意图说明本公开的各种实施例,且不会以限制性意义来使用。
图1为根据本公开的数个实施例的呈包括存储器装置120的计算***100形式的设备的框图。如本文中所使用,存储器装置120、存储器阵列125-1……125-N、存储器控制器122和/或AI加速器124还可单独地视为“设备”。
如图1中所说明,主机102可耦合到存储器装置120。主机102可为膝上型计算机、个人计算机、数码相机、数字记录及回放装置、移动电话、PDA、存储卡读取器、接口集线器以及其它主机***,且可包括存储器存取装置,例如处理器。本领域的一般技术人员将了解,“处理器”可为一或多个处理器,例如并行处理***、数个协处理器等。
主机102包括主机控制器108以与存储器装置120通信。主机控制器108可将命令发送到存储器装置120。主机控制器108可与存储器装置120、存储器装置120上的存储器控制器122和/或存储器装置120上的AI加速器124通信以执行AI操作、读取数据、写入数据和/或擦除数据以及其它操作。AI加速器124还可包括与图7A到10B相关联描述的配置成执行AI操作的组件。AI操作可包括机器学习或神经网络操作,其可包括训练操作或推理操作或这两者。在某一实例中,每一存储器装置120可表示神经网络或深度神经网络(例如,具有三个或更多个隐蔽层的网络)内的层。或者,每一存储器装置120可为或包括神经网络的节点,且神经网络的层可由多个存储器装置或若干存储器装置120的部分组成。存储器装置120可将用于AI操作的权重(或模型)存储于存储器阵列125中。
物理主机接口可提供用于在存储器装置120与具有用于物理主机接口的兼容接收器的主机102之间传递控制、地址、数据和其它信号的接口。举例来说,信号可在数个总线(例如,数据总线和/或地址总线)上在主机102与存储器装置120之间传达。
存储器装置120可包括控制器120、AI加速器124和存储器阵列125-1……125-N。存储器装置120可为低电力双倍数据速率动态随机存取存储器,例如LPDDR5装置,和/或图形双倍数据速率动态随机存取存储器,例如GDDR6、GDDR7、LPDDR6、DDR4,以及其它类型的装置。存储器阵列125-1……125-N可包括数个存储器单元,例如易失性存储器单元(例如,DRAM存储器单元,以及其它类型的易失性存储器单元)和/或非易失性存储器单元(例如,RRAM存储器单元,以及其它类型的非易失性存储器单元)。存储器装置120可读取数据和/或将数据写入到存储器阵列125-1……125-N。存储器阵列125-1……125-N可存储在对存储器装置120执行的AI操作期间使用的数据。存储器阵列125-1……125-N可存储神经网络的输入、输出、权重矩阵和偏置信息,和/或由AI加速器使用以对存储器装置120执行AI操作的激活函数信息。
主机控制器108、存储器装置120上的存储器控制器122和/或AI加速器124可包括控制电路***,例如硬件、固件和/或软件。在一或多个实施例中,主机控制器108、存储器控制器122和/或AI加速器124可为耦合到包括物理接口寄存器130的印刷电路板的专用集成电路(ASIC),物理接口寄存器130可位于存储器控制器122、AI加速器124上和/或存储器阵列125-1……125-N中且可由控制器122存取。此外,存储器装置120上的存储器控制器122可包括寄存器130。可编程寄存器130以提供用于AI加速器的信息以执行AI操作。寄存器130可包括任何数目个寄存器。寄存器130可由主机102、存储器控制器122和/或AI加速器124写入和/或读取。寄存器130可提供AI加速器124的输入、输出偏置、神经网络和/或激活函数信息。寄存器130可包括模式寄存器131以选择存储器装置120的操作模式。举例来说,可通过将字写入到寄存器131(例如,0xAA和/或0x2AA)来选择AI操作模式,其禁止对与存储器装置120的正常操作相关联的寄存器的存取且允许对与AI操作相关联的寄存器的存取。此外,可使用签名来选择AI操作模式,所述签名使用由存储于存储器装置120中的密钥验证的密码算法。
AI加速器124可包括硬件126和/或软件/固件128以执行AI操作。此外,AI加速器124还可包括与图7A到10B相关联描述的配置成执行AI操作的组件。硬件126可包括加法器/乘法器126以执行与AI操作相关联的逻辑操作。存储器控制器122和/或AI加速器124可从主机102接收执行AI操作的命令。存储器装置120可使用AI加速器124、存储器阵列125-1……125-N中的数据和寄存器130中的信息来执行在来自主机102的命令中所请求的AI操作。存储器装置可将AI操作的例如结果和/或错误信息的信息报告回主机120。由AI加速器124执行的AI操作可在不使用外部处理资源的情况下执行。
存储器阵列125-1……125-N可提供用于存储器***的主存储器,或可在整个存储器***中用作额外存储器或存储装置。每一存储器阵列125-1……125-N可包括数个存储器单元块。存储器单元块可用于存储在由存储器装置120执行的AI操作期间使用的数据。存储器阵列125-1……125-N可包括例如DRAM存储器单元。实施例不限于特定类型的存储器装置。举例来说,存储器装置可包括RAM、ROM、DRAM、SDRAM、PCRAM、RRAM、3D XPoint和快闪存储器等。
借助于实例,存储器装置120可执行作为或包括一或多个推断步骤的AI操作。存储器阵列125可为神经网络的层或可各自为个别节点,且存储器装置120可为层;或存储器装置120可为较大网络内的节点。另外或替代地,存储器阵列125可存储待在节点内使用(例如求和)的数据或权重或这两者。每一节点(例如,存储器阵列125)可将来自从相同或不同存储器阵列125的单元读取的数据的输入与从存储器阵列125的单元读取的权重组合。举例来说,可使用加法器/乘法器127在存储器阵列125的***内或在硬件126内求和权重和数据的组合。在这些情况下,可将求和的结果传递到在存储器阵列125的***中或在硬件126内表示或实例化的激活函数。结果可传递到另一存储器装置120,或可在AI加速器124内(例如,由软件/固件128)使用以作出决定或训练包括存储器装置120的网络。
采用存储器装置120的网络可能能够或用于监督或不受监督的学习。这可与其它学习或训练方案组合。在一些情况下,经训练的网络或模型被导入或与存储器装置120一起使用,且存储器装置120的操作主要或专门与推断有关。
图1的实施例可包括为避免模糊本公开的实施例而未说明的额外电路***。举例来说,存储器装置120可包括地址电路***以锁存通过I/O电路***在I/O连接上提供的地址信号。可通过行解码器和列解码器接收和解码地址信号以存取存储器阵列125-1……125-N。本领域的技术人员应了解,地址输入连接的数目可取决于存储器阵列125-1……125-N的密度和架构。
图2为根据本公开的数个实施例的具有人工智能(AI)加速器的存储器装置上的数个寄存器的框图。寄存器230可为AI寄存器且包括输入信息、输出信息、神经网络信息和/或激活函数信息以及其它类型的信息,以供AI加速器、控制器和/或存储器装置的存储器阵列(例如,图1中的AI加速器124、存储器控制器122和/或存储器阵列125-1……125-N)使用。寄存器可基于来自主机、AI加速器和/或控制器(例如,图1中的主机102、AI加速器124、存储器控制器122)的命令而读取和/或写入。
寄存器232-0可限定与存储器装置的AI模式相关联的参数。寄存器232-0中的位可启动AI操作、重新启动AI操作、指示寄存器中的内容为有效的、从寄存器清除内容和/或从AI模式退出。
寄存器232-1、232-2、232-3、232-4和232-5可限定用于AI操作的输入的大小、用于AI操作的输入的数目以及用于AI操作的输入的开始地址和结束地址。寄存器232-7、232-8、232-9、232-10和232-11可限定AI操作的输出的大小、AI操作中的输出的数目以及AI操作的输出的开始地址和结束地址。
寄存器232-12可用于启用在AI操作期间使用的输入块、神经元块、输出块、偏置块、激活函数和临时块的使用。
寄存器232-13、232-14、232-15、232-16、232-17、232-18、232-19、232-20、232-21、232-22、232-23、232-24和232-25可用于限定在AI操作期间使用的神经网络。寄存器232-13、232-14、232-15、232-16、232-17、232-18、232-19、232-20、232-21、232-22、232-23、232-24和232-25可限定在AI操作期间使用的神经网络的神经元和/或层的大小、数目和位置。
寄存器232-26可启用AI加速器的调试/保持模式和待在AI操作的层处观察到的输出。寄存器232-26可指示应在AI操作期间应用激活,且所述AI操作可在AI操作中逐步向前(例如,在AI操作中执行下一步骤)。寄存器232-26可指示层的输出所在的临时块为有效的。临时块中的数据可由主机和/或存储器装置上的控制器改变,使得当AI操作逐步向前时,可在AI操作中使用改变的数据。寄存器232-27、232-28和232-29可限定所述层,其中调试/保持模式将停止AI操作、改变神经网络的内容和/或观察所述层的输出。
寄存器232-30、232-31、232-32和232-33可限定用于AI操作的临时块的大小以及用于AI操作的临时块的开始地址和结束地址。寄存器232-30可限定用于AI操作的第一临时块的开始地址和结束地址,且寄存器232-33可限定用于AI操作的第一临时块的开始地址和结束地址。寄存器232-31和232-32可限定用于AI操作的临时块的大小。
寄存器232-34、232-35、232-36、232-37、232-38和232-39可与用于AI操作的激活函数相关联。寄存器232-34可启用激活函数块的使用,启用每一神经元的激活函数、每一层的激活函数的使用,且启用外部激活函数的使用。寄存器232-35可限定激活函数的位置的开始地址和结束地址。寄存器232-36、232-37、232-38和232-39可限定激活函数和/或自定义激活函数的输入(例如x轴)和输出(例如y轴)的分辨率。
寄存器232-40、232-41、232-42、232-43和232-44可限定用于AI操作的偏置值的大小、用于AI操作的偏置值的数目以及用于AI操作的偏置值的开始地址和结束地址。
寄存器232-45可提供用于AI计算的状态信息,且提供用于调试/保持模式的信息。寄存器232-45可启用调试/保持模式,指示AI加速器正执行AI操作,指示应使用AI加速器的全部能力,指示应仅进行AI操作的矩阵计算,和/或指示AI操作可继续进行到下一神经元和/或层。
寄存器232-46可提供关于AI操作的错误信息。寄存器232-46可指示AI操作的序列中存在错误,AI操作的算法中存在错误,ECC不能够校正的数据页中存在错误,和/或ECC能够校正的数据页中存在错误。
寄存器232-47可指示在AI操作中使用的激活函数。寄存器232-47可指示数个预定义激活函数中的一个可用于AI操作,和/或位于块中的自定义激活函数可用于AI操作。
寄存器232-48、232-49和232-50可指示正执行AI操作的神经元和/或层。在AI操作期间发生错误的情况下,寄存器232-48、232-49和232-50可存储发生错误的神经元和/或层的位置。
图3A和3B为根据本公开的数个实施例的具有人工智能(AI)加速器的存储器装置上的数个寄存器中的数个位的框图。每一寄存器332-0……332-50可包括数个位,位334-0、334-1、334-2、334-3、334-4、334-5、334-6和334-7,以指示与执行AI操作相关联的信息。数个寄存器可包括存储与执行AI操作相关联的信息的8个位;然而,数个寄存器可包括基于包括AI加速器的存储器的大小的任何数目个位。
寄存器332-0可限定与存储器装置的AI模式相关联的参数。寄存器332-0的位334-5可为读取/写入位,且可指示AI操作的细化可在例如编程到1b时重新启动360,但可使用其它编程惯例。一旦AI操作已重新启动,寄存器332-0的位334-5就可复位到0b。寄存器332-0的位334-4可为读取/写入位,且可指示AI操作的细化可在编程到1b时启动361。一旦AI操作已启动,寄存器332-0的位334-4就可复位到0b。
寄存器332-0的位334-3可为读取/写入位,且可指示AI寄存器的内容在编程到1b时为有效的362,且在编程到0b时为无效的。寄存器332-0的位334-2可为读取/写入位,且可指示AI寄存器的内容在编程到1b时将被清除363。寄存器332-0的位334-1可为只读位,且可指示AI加速器在编程到1b时处于使用中363且执行AI操作。寄存器332-0的位334-0可为只写位,且可指示存储器装置在编程到1b时将退出365AI模式。
寄存器332-1、332-2、332-3、332-4和332-5可限定用于AI操作的输入的大小、用于AI操作的输入的数目以及用于AI操作的输入的开始地址和结束地址。寄存器332-1和332-2的位334-0、334-1、334-2、334-3、334-4、334-5、334-6和334-7可限定用于AI操作的输入的大小366。输入的大小可根据位数目和/或输入的类型(例如浮点、整数和/或双倍以及其它类型)指示输入的宽度。寄存器332-3和332-4的位334-0、334-1、334-2、334-3、334-4、334-5、334-6和334-7可指示用于AI操作的输入的数目367。寄存器332-5的位334-4、334-5、334-6和334-7可指示用于AI操作的输入的存储器阵列中的块的开始地址368。寄存器332-5的位334-0、334-1、334-2和334-3可指示用于AI操作的输入的存储器阵列中的块的结束地址369。如果开始地址368和结束地址369为相同地址,那么仅针对AI操作指示输入的一个块。
寄存器332-7、332-8、332-9、332-10和332-11可限定AI操作的输出的大小、AI操作中的输出的数目以及AI操作的输出的开始地址和结束地址。寄存器332-7和332-8的位334-0、334-1、334-2、334-3、334-4、334-5、334-6和334-7可限定用于AI操作的输出的大小370。输出的大小可根据位数目和/或输出的类型(例如浮点、整数和/或双倍以及其它类型)指示输出的宽度。寄存器332-9和332-10的位334-0、334-1、334-2、334-3、334-4、334-5、334-6和334-7可指示用于AI操作的输出的数目371。寄存器332-11的位334-4、334-5、334-6和334-7可指示用于AI操作的输出的存储器阵列中的块的开始地址372。寄存器332-11的位334-0、334-1、334-2和334-3可指示用于AI操作的输出的存储器阵列中的块的结束地址373。如果开始地址372和结束地址373为相同地址,那么仅针对AI操作指示输出的一个块。
寄存器332-12可用于启用在AI操作期间使用的输入块、神经元块、输出块、偏置块、激活函数和临时块的使用。寄存器332-12的位334-0可启用输入块380,寄存器332-12的位334-1可启用神经网络块379,寄存器332-12的位334-2可启用输出块378,寄存器332-12的位334-3可启用偏置块377,寄存器332-12的位334-4可启用激活函数块376,以及寄存器332-12的位334-5和334-6可启用第一临时375块和第二临时块374。
寄存器332-13、332-14、332-15、332-16、332-17、332-18、332-19、332-20、332-21、332-22、332-23、332-24和332-25可用于限定在AI操作期间使用的神经网络。寄存器332-13和332-14的位334-0、334-1、334-2、334-3、334-4、334-5、334-6和334-7可限定用于AI操作的矩阵中的行的数目381。寄存器332-15和332-16的位334-0、334-1、334-2、334-3、334-4、334-5、334-6和334-7可限定用于AI操作的矩阵中的列的数目382。
寄存器332-17和332-18的位334-0、334-1、334-2、334-3、334-4、334-5、334-6和334-7可限定用于AI操作的神经元的大小383。神经元的大小可根据位数目和/或输入的类型(例如浮点、整数和/或双倍以及其它类型)指示神经元的宽度。寄存器332-19、332-20和322-21的位334-0、334-1、334-2、334-3、334-4、334-5、334-6和334-7可指示用于AI操作的神经网络的神经元的数目384。寄存器332-22的位334-4、334-5、334-6和334-7可指示用于AI操作的神经元的存储器阵列中的块的开始地址385。寄存器332-5的位334-0、334-1、334-2和334-3可指示用于AI操作的神经元的存储器阵列中的块的结束地址386。如果开始地址385和结束地址386为相同地址,那么仅针对AI操作指示神经元的一个块。寄存器332-23、332-24和322-25的位334-0、334-1、334-2、334-3、334-4、334-5、334-6和334-7可指示用于AI操作的神经网络的层的数目387。
寄存器332-26可启用AI加速器的调试/保持模式和待在AI操作的层处观察到的输出。寄存器332-26的位334-0可指示AI加速器处于调试/保持模式,且激活函数应在AI操作期间应用391。寄存器332-26的位334-1可指示所述AI操作可在AI操作中逐步向前390(例如,在AI操作中执行下一步骤)。位334-1的编程可嵌入在AI操作的执行中。可停止AI操作,可观察AI操作的结果,可校正错误,和/或可重新编程寄存器332-26以包括另一步骤和/或移除AI操作中的步骤。在一些实例中,AI操作的特定步骤处的先前内容可恢复临时内容以看到修改对AI操作的影响。寄存器232-26的位334-2和位334-3可指示层的输出所在的临时块为有效的388和389。临时块中的数据可由主机和/或存储器装置上的控制器改变,使得当AI操作逐步向前时,可在AI操作中使用改变的数据。
寄存器332-27、332-28和332-29的位334-0、334-1、334-2、334-3、334-4、334-5、334-6和334-7可限定调试/保持模式将停止392AI操作且观察层的输出的层。
寄存器332-30、332-31、332-32和332-33可限定用于AI操作的临时块的大小以及用于AI操作的临时块的开始地址和结束地址。寄存器332-30的位334-4、334-5、334-6和334-7可限定用于AI操作的第一临时块的开始地址393。寄存器332-30的位334-0、334-1、334-2和334-3可限定用于AI操作的第一临时块的结束地址394。寄存器332-31和332-32的位334-0、334-1、334-2、334-3、334-4、334-5、334-6和334-7可限定用于AI操作的临时块的大小395。临时块的大小可根据位数目和/或输入的类型(例如浮点、整数和/或双倍以及其它类型)指示临时块的宽度。寄存器332-33的位334-4、334-5、334-6和334-7可限定用于AI操作的第二临时块的开始地址396。寄存器332-34的位334-0、334-1、334-2和334-3可限定用于AI操作的第二临时块的结束地址397。
寄存器332-34、332-35、332-36、332-37、332-38和332-39可与用于AI操作的激活函数相关联。寄存器332-34的位334-0可启用激活函数块3101的使用。寄存器332-34的位334-1可启用将所述AI保持在神经元3100处和每一神经元的激活函数的使用。寄存器332-34的位334-2可启用将AI保持在层399处和每一层的激活函数的使用。寄存器332-34的位334-3可启用外部激活函数398的使用。
寄存器332-35的位334-4、334-5、334-6和334-7可限定用于AI操作的激活函数块的开始地址3102。寄存器332-35的位334-0、334-1、334-2和334-3可限定用于AI操作的激活函数块的结束地址3103。寄存器332-36和332-37的位334-0、334-1、334-2、334-3、334-4、334-5、334-6和334-7可限定激活函数的输入(例如x轴)的分辨率3104。寄存器332-38和332-39的位334-0、334-1、334-2、334-3、334-4、334-5、334-6和334-7可限定针对自定义激活函数的给定x轴值的激活函数的分辨率和/或输出(例如y轴)3105。
寄存器332-40、332-41、332-42、332-43和332-44可限定用于AI操作的偏置值的大小、用于AI操作的偏置值的数目以及用于AI操作的偏置值的开始地址和结束地址。寄存器332-40和332-41的位334-0、334-1、334-2、334-3、334-4、334-5、334-6和334-7可限定用于AI操作的偏置值的大小3106。偏置值的大小可根据位数目和/或偏置值的类型(例如浮点、整数和/或双倍以及其它类型)指示偏置值的宽度。寄存器332-42和332-43的位334-0、334-1、334-2、334-3、334-4、334-5、334-6和334-7可指示用于AI操作的偏置值的数目3107。寄存器332-44的位334-4、334-5、334-6和334-7可指示用于AI操作的偏置值的存储器阵列中的块的开始地址3108。寄存器332-44的位334-0、334-1、334-2和334-3可指示用于AI操作的偏置值的存储器阵列中的块的结束地址3109。如果开始地址3108和结束地址3109为相同地址,那么仅针对AI操作指示偏置值的一个块。
寄存器332-45可提供用于AI计算的状态信息,且提供用于调试/保持模式的信息。寄存器332-45的位334-0可激活调试/保持模式3114。寄存器的位334-1可指示AI加速器忙碌3113且执行AI操作。寄存器332-45的位334-2可指示AI加速器开启3112和/或应使用AI加速器的全部能力。寄存器332-45的位334-3可指示应仅进行AI操作的矩阵计算3111。寄存器332-45的位334-4可指示AI操作可逐步向前3110且继续进行到下一神经元和/或层。
寄存器332-46可提供关于AI操作的错误信息。在执行AI操作时,主机可检索AI操作信息。寄存器332-46的位334-3可指示AI操作的序列中存在错误3115。寄存器332-46的位334-2可指示AI操作的算法中存在错误3116。寄存器332-46的位334-1可指示ECC不能够校正的数据页中存在错误3117。寄存器332-46的位334-0可指示ECC能够校正的数据页中存在错误3118。
寄存器332-47可指示在AI操作中使用的激活函数。在一些实例中,控制器可包括数个激活函数寄存器,其包括寄存器332-47,以限定和使用(例如启动)AI操作中的激活函数。
寄存器332-47的位334-0、334-1、334-2、334-3、334-4、334-5和334-6可指示数个预定义激活函数中的一个3120可用于AI操作。数个预定义激活函数可包括恒等函数(例如,恒等关系、恒等映射和/或恒等转换)、二元阶跃函数、逻辑函数(例如,S型函数和/或软阶跃函数)、双曲正切函数(例如,tanH)、反正切函数(例如,ArcTan)、软符号函数、反平方根单元(ISRU)函数、修正线性单元(ReLU)函数、泄漏修正线性单元(泄漏ReLU)函数、参数化修正线性单元(PReLU)函数、随机化泄漏修正线性单元(RReLU)函数、指数线性单元(ELU)函数和/或缩放指数线性单元(SELU)函数以及其它函数。在一些实例中,可响应于AI操作的结果而执行预定义激活函数。
控制器可通过将寄存器332-47的一个位和/或多个位编程到特定状态而指示和执行数个预定义激活函数中的一个3120。举例来说,寄存器332-47的位334-0可编程到执行AI操作的恒等函数的第一状态和/或防止和/或停止执行恒等函数的第二状态,且寄存器332-47的位334-1可编程到执行AI操作的二元阶跃函数的第一状态和/或防止和/或停止执行二元阶跃函数的第二状态。
寄存器332-47的位334-7可指示位于块中的自定义激活函数3119可用于AI操作。AI操作可包括更新、改变和/或产生自定义激活函数。可基于前一AI操作的结果产生自定义激活函数3119。举例来说,自定义激活函数3119可基于调试操作的结果。
控制器可通过将寄存器332-47的一个位和/或多个位编程到特定状态而指示自定义激活函数3119。举例来说,寄存器332-47的位334-7可编程到在AI操作中使用自定义激活函数3119的第一状态和/或防止和/或停止使用自定义激活函数的第二状态。
寄存器332-48、332-49和332-50可指示正执行AI操作的神经元和/或层。寄存器332-48、332-49和332-50的位334-0、334-1、334-2、334-3、334-4、334-5、334-6和334-7可指示正执行AI操作的神经元和/或层的地址。在AI操作期间发生错误的情况下,寄存器332-48、332-49和332-50可指示发生错误的神经元和/或层。
图4为根据本公开的数个实施例的具有人工智能(AI)加速器的存储器装置的数个块的框图。输入块440为存储器阵列中存储输入数据的块。输入块440中的数据可用作AI操作的输入。输入块440的地址可在寄存器5(例如,图2中的寄存器232-5和图3A中的寄存器332-5)中指示。由于可存在多个输入块,因此实施例不限于一个输入块。数据输入块440可从主机发送到存储器装置。数据可伴随指示应使用所述数据对存储器装置执行AI操作的命令。
输出块420为存储器阵列中存储来自AI操作的输出数据的块。输出块442中的数据可用于存储来自AI操作的输出且发送到主机。输出块442的地址可在寄存器11(例如,图2中的寄存器232-11和图3A中的寄存器332-11)中指示。由于可存在多个输出块,因此实施例不限于一个输出块。
在完成和/或保持AI操作之后,可将输出块442中的数据发送到主机。临时块444-1和444-2可为存储器阵列中在正执行AI操作的同时临时存储数据的块。尽管图4包括两个临时块444-1和444-2,但存储器装置可包括一或多个临时块。数据可存储于临时块444-1和444-2中,同时AI操作通过用于AI操作的神经网络的神经元和层迭代。临时块448的地址可在寄存器30和33(例如,图2中的寄存器232-30和232-33以及图3B中的332-30和332-33)中指示。由于可存在多个临时块,因此实施例不限于两个临时块。
激活函数块446可为存储器阵列中存储AI操作的激活函数和/或存储器控制器固件中的块。激活函数块446可存储由主机和/或AI加速器产生的预定义激活函数和/或自定义激活函数。激活函数块448的地址可在寄存器35(例如,图2中的寄存器232-35和图3B中的332-35)中指示。由于可存在多个激活函数块,因此实施例不限于一个激活函数块。
偏置值块448为存储器阵列中存储AI操作的偏置值的块。偏置值块448的地址可在寄存器44(例如,图2中的寄存器232-44和图3B中的332-44)中指示。由于可存在多个偏置值块,因此实施例不限于一个偏置值块。
神经网络块450-1、450-2、450-3、450-4、450-5、450-6、450-7、450-8、450-9和450-10为存储器阵列中存储AI操作的神经网络的块。神经网络块450-1、450-2、450-3、450-4、450-5、450-6、450-7、450-8、450-9和450-10可存储用于AI操作的神经元和层的信息。神经网络块450-1、450-2、450-3、450-4、450-5、450-6、450-7、450-8、450-9和450-10的地址可在寄存器22(例如,图2中的寄存器232-22和图3A中的332-22)中指示。
图5为说明根据本公开的数个实施例的具有人工智能(AI)加速器的存储器装置中的实例人工智能过程的流程图。响应于启动AI操作,AI加速器可分别将输入数据540和神经网络数据550写入到输入和神经网络块。AI加速器可使用输入数据540和神经网络数据550执行AI操作。结果可存储于临时块544-1和544-2中。临时块554-1和544-2可用于存储数据,同时执行矩阵计算、添加偏置数据和/或在AI操作期间应用激活函数。
AI加速器可接收AI操作的存储于临时块544-1和544-2中的部分结果和偏置值数据548,且使用AI操作偏置值数据548的部分结果执行AI操作。结果可存储于临时块544-1和544-2中。
AI加速器可接收AI操作的存储于临时块544-1和544-2中的部分结果和激活函数数据546,且使用AI操作的部分结果和激活函数数据546执行AI操作。结果可存储于输出块542中。
在数个实施例中,激活函数数据546可为AI操作的数个激活函数中的一或多个的结果。激活函数可为由于前一AI操作而产生的预定义激活函数或自定义激活函数,如先前结合图3B所描述。数个激活函数可包括恒等函数(例如,恒等关系、恒等映射和/或恒等转换)、二元阶跃函数、逻辑函数、双曲正切函数(例如,tanH)、反正切函数(例如,ArcTan)、软符号函数、反平方根单元(ISRU)函数、修正线性单元(ReLU)函数、泄漏修正线性单元(泄漏ReLU)函数、参数化修正线性单元(PReLU)函数、随机化泄漏修正线性单元(RReLU)函数、指数线性单元(ELU)函数和/或缩放指数线性单元(SELU)函数。
图6为说明根据本公开的数个实施例的用于人工智能(AI)操作的数个激活函数6122-1……6122-13的表6123。表6123包括数个激活函数6122-1……6122-13中的每一个的名称6124、曲线6125、等式6126、衍生等式6127和区间6128。数个激活函数6122-1……6122-13可包括恒等函数(例如,恒等关系、恒等映射和/或恒等转换)、二元阶跃函数、逻辑函数、双曲正切函数(例如,tanH)、反正切函数(例如,ArcTan)、软符号函数、反平方根单元(ISRU)函数、修正线性单元(ReLU)函数、泄漏修正线性单元(泄漏ReLU)函数、参数化修正线性单元(PReLU)函数、随机化泄漏修正线性单元(RReLU)函数、指数线性单元(ELU)函数和/或缩放指数线性单元(SELU)函数。在一些实例中,逻辑函数可包括S型函数和/或软阶跃函数。AI操作的激活函数可包括但不限于表6123中所说明的数个激活函数6122-1……6122-13。
数个激活函数6122-1……6122-13可为预定义激活函数,且寄存器中的一或多个位可指示待在AI操作中使用的预定义激活函数,如先前结合图3B所论述。在一些实例中,可将数个激活函数6122-1……6122-13修改(例如改变)为自定义激活函数。如结合图3B所论述,可基于前一AI操作的结果产生自定义激活函数。在一些实例中,自定义激活函数可基于前一AI操作的结果和数个激活函数6122-1……6122-13中的一或多个。可基于前一AI操作的结果在预定义激活函数与自定义激活函数之间选择激活函数,且可针对每一层选择不同激活函数。
图7A为根据本公开的数个实施例的呈包括具有人工智能(AI)加速器的包括存储器阵列725的存储器装置720的计算***700形式的设备的框图。如本文中所使用,存储器装置720、控制器740、存储器阵列725、感测电路***7138和/或数个额外锁存器7140还可单独地视为“设备”。
在图7A中,AI加速器(例如,图1中的AI加速器124)可包括感测电路***7138和额外锁存器7140,以及与图7A到10B相关联描述的其它组件,其配置成执行与AI操作相关联的操作,例如逻辑操作。如下文与图7A到10B相关联地描述,存储器装置(例如,存储器装置720)可配置成执行与AI操作相关联的操作作为AI加速器的部分。
如本文中所使用,额外锁存器意图意味着感测、耦合和/或移动(例如,读取、存储、高速缓存)阵列中的存储器单元的数据值且不同于图7B、8、9、10A和10B中所展示的多个共享I/O线7144的数据路径中的计算单元中的多个计算组件7148-1……7148-M和/或逻辑条7152-1……7152-N的额外功能性(例如,放大器、选择逻辑)。如图7A和7B中所展示,在阵列本地的多个共享输入/输出(I/O)线7144的数据路径中的逻辑条7152-1……7152-N可与组7146-1中的存储器单元的各个组区段7150-1……7150-N相关联。组7146-1可为存储器装置720上的多个组中的一个。
图7A中的***700包括耦合(例如,连接)到存储器装置720的主机702。主机702可为例如个人膝上型计算机、台式计算机、数码相机、智能手机或存储卡读取器的主机***,以及各种其它类型的主机。主机702可包括***母板和/或底板,且可包括数个处理资源(例如,一或多个处理器、微处理器或一些其它类型的控制电路***)。***700可包括单独的集成电路,或主机702和存储器装置720两者可在同一集成电路上。***700可为例如服务器***和/或高性能计算(HPC)***和/或其一部分。虽然图7A中所展示的实例说明具有冯诺伊曼(Von Neumann)体系结构的***,但本公开的实施例可实施于非冯诺伊曼体系结构中,所述非冯诺伊曼体系结构可不包括通常与冯诺伊曼体系结构相关联的一或多个组件(例如,CPU、ALU等)。
为了清楚起见,已简化***700以聚焦于与本公开特别相关的特征。存储器阵列725可为DRAM阵列、SRAM阵列、STT RAM阵列、PCRAM阵列、TRAM阵列、RRAM阵列、NAND快闪阵列和/或NOR快闪阵列,以及其它类型的阵列。阵列725可包括以通过存取线(其在本文中可称为字线或选择线)耦合的行和通过感测线(其在本文中可称为数据线或数字线)耦合的列布置的存储器单元。尽管图7A中展示单个阵列725,但实施例不限于此。举例来说,存储器装置720可包括数个阵列725(例如,DRAM单元、NAND快闪单元等的数个组)。
存储器装置720可包括地址电路***7525以通过I/O电路***7134(例如,经由本地I/O线和全局I/O线提供到外部ALU电路***和/或DRAM DQ)锁存在数据总线756(例如,连接到主机702的I/O总线)上所提供的地址信号。如本文中所使用,DRAM DQ可实现经由总线(例如,数据总线756)将数据输入到组和/或从组输出数据(例如,从和/或到控制器740和/或主机702)。在写入操作期间,可将电压(高=1,低=0)施加到DQ(例如,引脚)。此电压可转换成适当信号且存储于所选存储器单元中。在读取操作期间,一旦存取完成且启用输出(例如,通过输出启用信号为低),那么从所选存储器单元读取的数据值可在DQ处出现。在其它时间,DQ可处于高阻抗状态,使得DQ并不供应或吸收电流,且并不将信号呈现给***。当两个或更多个装置(例如,组)共享组合的数据总线时,这还可减少DQ竞争,如本文中所描述。这种DQ与在阵列725本地的数据路径中的多个共享I/O线7144(在图7B中)分离且截然不同。
举例来说,可通过带外(OOB)总线757,例如高速接口(HSI)将状态和异常信息从存储器装置720的控制器740提供到信道控制器704,所述状态和异常信息又可从信道控制器704提供到主机702。信道控制器704可包括逻辑组件以分配每一相应组的阵列中的多个位置(例如,用于子阵列的控制器)以存储组命令、应用程序指令(例如,用于操作序列)和用于与多个存储器装置720中的每一个的操作相关联的各个组的自变数(PIM命令)。信道控制器704可将命令(例如PIM命令)调度到多个存储器装置720,以在存储器装置720的给定组7146(图7B)内存储那些程序指令。
地址信号通过地址电路***7525接收,且通过行解码器7132和列解码器7142解码以存取存储器阵列725。可通过使用感测电路***7138的如本文中所描述的数个感测放大器来感测感测线(数字线)上的电压和/或电流变化而从存储器阵列725感测(读取)数据。感测放大器可从存储器阵列725读取和锁存数据页(例如,行)。如本文中所描述,额外计算电路***可耦合到感测电路***7138,且可与感测放大器组合使用以感测、存储(例如,缓存和/或缓冲)、执行计算功能(例如,操作)和/或移动数据。I/O电路***7134可用于经由数据总线756(例如,64位宽数据总线)与主机702进行双向数据通信。写入电路***7136可用于将数据写入到存储器阵列725。
控制器740(例如,图7A中所展示的组控制逻辑、定序器及定时电路***)可对由控制总线754从主机702提供的信号(例如,命令)进行解码。这些信号可包括芯片启用信号、写入启用信号和/或地址锁存信号,其可用于控制对存储器阵列725执行的操作,包括数据感测、数据存储、数据移动(例如,复制、传送和/或输送数据值)、数据写入和/或数据擦除操作,以及其它操作。在各种实施例中,控制器740可负责执行来自主机702的指令且存取存储器阵列725。控制器740可为状态机、定序器或某一其它类型的控制器。控制器740可控制在阵列(例如,存储器阵列725)的行中移位数据(例如,向右或向左)且执行微码指令以执行例如计算操作的操作,例如AND、OR、NOR、XOR、加法、减法、乘法、除法等。
在下文(例如在图7到8B中)进一步描述感测电路***7138的实例。举例来说,在一些实施例中,感测电路***7138可包括数个感测放大器和数个计算组件,其可充当累加器且可用于执行每一子阵列中的操作(例如,对与互补感测线相关联的数据)。
在一些实施例中,感测电路***7138可用于使用存储于存储器阵列725中的数据作为输入来执行操作,且参与用于复制、传送、输送、写入、逻辑和/或存储操作的数据到存储器阵列725中不同位置的移动,而不经由感测线地址存取传送数据(例如,不启动列解码信号)。因而,各种计算功能可使用感测电路***7138且在感测电路***7138内执行,而非由感测电路***7138外部的处理资源(例如,由与主机702相关联的处理器和/或其它处理电路***,例如位于装置720上(例如控制器740上或其它处)的ALU电路***)执行(或与之结合)。然而,另外,根据本公开的实施例对从阵列的行移动到计算单元中的多个计算组件7148-1……7148-M和/或逻辑条7152-1……7152-N的数据值执行计算功能。并且作为实例,根据实施例,与例如60纳秒(ns)的启动阵列中的行所需的实例时间相比,可在计算单元中以2纳秒(ns)的速度控制计算操作,而无需将数据值移动回行中。
在各种先前方法中,例如,将经由感测电路***从存储器读取与操作数相关联的数据,且经由I/O线(例如,经由本地I/O线和/或全局I/O线)将所述数据提供给外部ALU电路***。外部ALU电路***可包括数个寄存器且将使用操作数执行计算功能,并且结果将经由I/O电路***7134传送回阵列。
相比而言,根据本公开的实施例对从阵列的行经由多个共享I/O线7144移动到在阵列本地的数据路径中的计算单元中的多个计算组件7148-1……7148-M和/或逻辑条7152-1……7152-N的数据值执行计算功能。另外,感测电路***7138可配置成对存储于存储器阵列725中的数据执行操作,且将结果存储回到存储器阵列725,而不启用耦合到感测电路***7138的I/O线(例如,本地I/O线)。然而,相比于例如60纳秒(ns)的启动阵列中的行所需的实例时间,一旦加载,就可例如以2纳秒(ns)的速度在计算单元中快得多地控制计算操作而不必将数据值移动回到所述行中。感测电路***7138可与阵列的存储器单元按间距形成。与多个共享I/O线7144的数据路径相关联的多个计算组件7148-1……7148-M和/或逻辑条7152-1……7152-N具有等于数据路径的间距且为数字线到存储器单元阵列的间距的函数的间距。举例来说,计算组件具有为数字线到存储器单元阵列的间距的整数倍的间距。
举例来说,本文中所描述的感测电路***7138可与一对互补感测线(例如,数字线)按相同间距形成。作为实例,一对互补存储器单元可具有间距为6F2(例如,3F x 2F)的单元大小,其中F为特征大小。如果用于互补存储器单元的一对互补感测线的间距为3F,那么成间距的感测电路***指示感测电路***(例如,每个相应对的互补感测线的感测放大器和对应计算组件)形成为适配于互补感测线的3F间距内。同样,与多个共享I/O线7144的数据路径相关联的计算组件7148-1……7148-M和/或逻辑条7152-1……7152-N具有为互补感测线的3F间距的函数的间距。举例来说,计算组件7148-1……7148-M和/或逻辑条7152-1……7152-N将具有为数字线到存储器单元阵列的3F间距的整数倍的间距。
相反,各种先前***的处理资源(例如,计算引擎,例如ALU)的电路***可不符合与存储器阵列相关联的间距规则。举例来说,存储器阵列的存储器单元可具有4F2或6F2单元大小。因而,与先前***的ALU电路***相关联的装置(例如,逻辑门)可能不能够与存储器单元按间距形成(例如,按与感测线相同的间距),这会例如影响芯片大小和/或存储器密度。在一些计算***和子***(例如中央处理单元(CPU))的背景下,可在不与存储器(例如,阵列中的存储器单元)成间距和/或不在芯片上的位置中处理数据,如本文中所描述。举例来说,可通过与主机相关联而非与存储器成间距的处理资源处理数据。
因而,在数个实施例中,不需要阵列725外部的电路***和感测电路***7138执行计算功能,因为感测电路***7138可执行适当操作来执行这些计算功能,或可在阵列本地的多个共享I/O线的数据路径中执行这些操作,而不使用外部处理资源。因此,感测电路***7138和/或多个共享I/O线7144的数据路径中的计算单元中的多个计算组件7148-1……7148-M和/或逻辑条7152-1……7152-N可用于至少在某一程度上补充或替代此种外部处理资源(或至少此种外部处理资源的带宽消耗)。在一些实施例中,感测电路***7138和/或多个共享I/O线7144的数据路径中的计算单元中的多个计算组件7148-1……7148-M和/或逻辑条7152-1……7152-N可用于执行除由外部处理资源(例如,主机702)执行的操作以外的操作(例如,执行指令)。举例来说,主机702和/或感测电路***7138可限于仅执行某些操作和/或某一数目的操作。
本文中所描述的操作可包括与具存储器中处理(PIM)能力的装置相关联的操作。具PIM能力的装置操作可使用基于位向量的操作。如本文中所使用,术语“位向量”意指物理上连续地存储于存储器单元阵列的行中的位向量存储器装置(例如,PIM装置)上的物理上连续的数个位。因此,如本文中所使用,“位向量操作”意指对作为虚拟地址空间的连续部分(例如,由PIM装置使用)的位向量执行的操作。举例来说,PIM装置中的一行虚拟地址空间可具有16K位的位长度(例如,对应于DRAM配置中的16K互补对的存储器单元)。如本文中所描述,用于这种16K位行的感测电路***7138可包括对应16K处理元件(例如,如本文中所描述的计算组件),所述16K处理元件与可选择地耦合到16位行中的对应存储器单元的感测线按间距形成。PIM装置中的计算组件可在由感测电路***7138感测(例如,由与计算组件配对的感测放大器感测和/或储存于所述感测放大器中,如本文中所描述)的存储器单元行的位向量的单个位上作为一位处理元件(PE)操作。类似地,多个计算组件7148-1……7148-M和/或多个共享I/O线7144的数据路径中的计算单元中的逻辑条7152-1……7152-N可在阵列中感测的存储器单元行的位向量的单个位上作为一位处理元件(PE)操作。
启用I/O线可包括启用(例如,接通、激活)具有耦合到解码信号(例如,列解码信号)的栅极和耦合到I/O线的源极/漏极的晶体管。然而,实施例不限于不启用I/O线。举例来说,在数个实施例中,感测电路***(例如,7138)可用于执行操作而不启用阵列的列解码线。
然而,可启用多个共享I/O线7144,以便将数据值加载到多个共享I/O线7144的数据路径中的计算单元中的多个计算组件7148-1……7148-M和/或逻辑条7152-1……7152-N,其中可快得多地控制计算操作。举例来说,在计算单元中的多个计算组件7148-1……7148-M和/或逻辑条7152-1……7152-N中,可以2纳秒(ns)的速度执行计算操作。这种速度的增强可归因于不必以例如60纳秒(ns)的用于启动阵列中的行的相关联时间将数据值移动回行中。
图7B为根据本公开的数个实施例的呈包括在阵列的组区段本地的数据路径中具有共享输入/输出(I/O)线的具有人工智能(AI)加速器的存储器装置的计算***形式的设备的框图。举例来说,组7146-1可表示存储器装置720的实例组。如图7B中所展示,组7146-1可包括多个主存储器列(水平地展示为X)(例如,实例DRAM组中的16,384个列)。另外,组7146-1可划分成组区段(例如,32个子阵列的象限)7150-1、7150-2……7150-N。每一组区段可与多个共享I/O线7144的数据路径中的计算单元中的逻辑条7152-1……7152-N中的多个计算组件7148-1……7148-M相关联。组区段7150-1……7150-N中的每一个可包括多个行(竖直地展示为Y)(例如,每一区段可为包括32个子阵列的象限,所述子阵列各自可包括实例DRAM组中的512个行)。实例实施例不限于本文中所描述的列和行的实例水平和/或竖直定向或其实例编号。
如图7B中所展示,组7146-1可划分成多个组区段7150-1……7150-N。每一组区段可具有与其相关联的多个共享I/O线7144的数据路径中的计算单元中的多个计算组件7148-1……7148-M和逻辑条7152-1……7152-N。组7146-1可包括控制器740以引导对加载到多个共享I/O线7144的数据路径中的计算单元中的逻辑条7152-1……7152-N中的多个计算组件7148-1……7148-M的数据值的操作。
图8为说明根据本公开的数个实施例的感测电路***8138的示意图。感测电路***8138可对应于图7A中所展示的感测电路***7138。
如图8的实例实施例中所展示,存储器单元可包括存储元件(例如,电容器)和存取装置(例如,晶体管)。举例来说,第一存储器单元可包括晶体管8160-1和电容器8162-1,且第二存储器单元可包括晶体管8160-2和电容器8162-2等。在这一实施例中,存储器阵列825为一晶体管一电容器(1T1B)存储器单元的DRAM阵列,但可使用其它配置实施例(例如,每存储器单元具有两个晶体管和两个电容器的2T2C)。在数个实施例中,存储器单元可为破坏性读取存储器单元(例如,读取存储于单元中的数据会破坏数据,使得最初存储于单元中的数据在被读取之后刷新)。
存储器阵列825的单元可按通过存取(字)线8164-X(行X)、8164-Y(行Y)等耦合的行和通过互补感测线对(例如,图8中所展示的数字线DIGIT(D)和DIGIT(D)_)耦合的列布置。对应于每一对互补感测线的个别感测线还可分别称为用于DIGIT(D)的数字线8168-1和用于DIGIT(D)_的数字线7168-2,或图9和10A到10B中的对应附图标记。虽然在图8中仅展示一对互补数字线,但本公开的实施例不限于此,且存储器单元阵列可包括存储器单元和数字线的额外列(例如,4,096个、8,192个、16,384个等)。
虽然行和列说明为在平面上垂直定向,但实施例不限于此。举例来说,行和列可在任何可行的三维配置中相对于彼此定向。举例来说,行与列可相对于彼此按任何角度定向,可定向于基本上水平的平面或基本上竖直的平面上,和/或可定向于折叠式拓扑以及其它可能的三维配置中。
存储器单元可耦合到不同数字线和字线。举例来说,晶体管8160-1的第一源极/漏极区可耦合到数字线8168-1(D),晶体管8160-1的第二源极/漏极区可耦合到电容器8162-1,且晶体管8160-1的栅极可耦合到字线8164-Y。晶体管8160-2的第一源极/漏极区可耦合到数字线8168-2(D)_,晶体管8160-2的第二源极/漏极区可耦合到电容器8162-2,且晶体管8160-2的栅极可耦合到字线8164-X。如图8中所展示的单元板可耦合到电容器8162-1和8162-2中的每一个。单元板可为可在各种存储器阵列配置中对其施加参考电压(例如,接地)的共同节点。
根据本公开的数个实施例,存储器阵列825配置成耦合到感测电路***8138。在此实施例中,感测电路***8138包含对应于存储器单元的相应列(例如,耦合到相应对的互补数字线)的感测放大器8170和计算组件8148。感测放大器8170可耦合到所述一对互补数字线8168-1和8168-2。计算组件8148可经由导通门8172-1和8172-2耦合到感测放大器8170。导通门8172-1和8172-2的栅极可耦合到操作选择逻辑8178。
操作选择逻辑8178可配置成包括用于控制导通门的导通门逻辑和用于控制交换门的交换门逻辑,所述导通门耦合在感测放大器8170与计算组件8148之间未换位的所述一对互补数字线,所述交换门耦合在感测放大器8170与计算组件8148之间换位的所述一对互补数字线。操作选择逻辑8178还可耦合到所述一对互补数字线8168-1和8168-2。操作选择逻辑8178可配置成基于所选操作而控制导通门8172-1和8172-2的连续性。
可操作感测放大器8170以确定存储于所选存储器单元中的数据值(例如,逻辑状态)。读出放大器8170可包含交叉耦合的锁存器,所述锁存器可在本文中称为主锁存器。在图8中所说明的实例中,对应于感测放大器8170的电路***包含包括耦合到一对互补数字线D 6168-1和(D)8168-2的四个晶体管的锁存器8175。然而,实施例不限于这一实例。锁存器8175可为交叉耦合的锁存器(例如,一对晶体管的栅极),例如n沟道晶体管(例如,NMOS晶体管)8182-1和8182-2与例如p沟道晶体管(例如,PMOS晶体管)8184-1和8184-2)的另一对晶体管的栅极交叉耦合。包含晶体管8182-1、8182-2、8184-1和8184-2的交叉耦合的锁存器8175可称为主锁存器。
在操作中,当正感测(例如读取)存储器单元时,数字线8168-1(D)或8168-2(D)_中的一个上的电压将略微大于数字线8168-1(D)或8168-2(D)_中的另一个上的电压。ACT信号和RNL*信号可驱动为低以启用(例如,启动)感测放大器8170。具有更低电压的数字线8168-1(D)或8168-2(D)_将把PMOS晶体管8184-1或8184-2中的一个接通到比PMOS晶体管8184-1或8184-2中的另一个更大的程度,由此将具有更高电压的数字线8168-1(D)或8168-2(D)_驱动高到比将另一数字线8168-1(D)或8168-2(D)_驱动高更大的程度。
类似地,具有更高电压的数字线8168-1(D)或8168-2(D)_将把NMOS晶体管8182-1或8182-2中的一个接通到比NMOS晶体管8182-1或8182-2中的另一个更大的程度,由此将具有更低电压的数字线8168-1(D)或8168-2(D)_驱动低到比将另一数字线8168-1(D)或8168-2(D)_驱动低更大的程度。因此,在短延迟之后,具有略微更大电压的数字线8168-1(D)或8168-2(D)_驱动成穿过源极晶体管的电源电压VCC的电压,且另一数字线8168-1(D)或8168-2(D)_驱动成穿过吸收晶体管的参考电压(例如接地)的电压。因此,交叉耦合的NMOS晶体管8182-1和8182-2及PMOS晶体管8184-1和8184-2充当感测放大器对,所述感测放大器对放大数字线8168-1(D)和8168-2(D)_上的差分电压且操作以锁存从节点8177-1和/或8177-2上的所选存储器单元感测到的数据值。
实施例不限于图8中所说明的感测放大器8170配置。作为实例,感测放大器8170可为电流模式感测放大器和单端感测放大器(例如,耦合到一个数字线的感测放大器)。此外,本公开的实施例不限于折叠式数字线架构,例如图8中所展示的折叠式数字线架构。
可结合计算组件8148操作感测放大器8170以使用来自阵列的数据作为输入进行各种操作。在数个实施例中,可将操作的结果存储回阵列而不经由数字线地址存取传送数据(例如,不启动列解码信号,使得经由本地I/O线将数据传送到阵列和感测电路***外部的电路***)。因而,本公开的数个实施例可比各种先前方法使用更少功率来实现执行操作和与其相关联的计算功能。另外,因为数个实施例不需要跨越本地和全局I/O线传送数据以便执行计算功能(例如,在存储器与离散处理器之间),所以数个实施例可相比于先前方法实现增加(例如更快)的处理能力。
读出放大器8170可进一步包括可配置成平衡数字线8168-1(D)和8168-2(D)_的平衡电路***8174。在这一实例中,平衡电路***7174包含耦合于数字线8168-1(D)与8168-2(D)_之间的晶体管8188。平衡电路***8174还包含各自具有耦合到平衡电压(例如VDD/2)的第一源极/漏极区的晶体管8180-1和8180-2,其中VDD为与阵列相关联的电源电压。晶体管8180-1的第二源极/漏极区可耦合到数字线8168-1(D),且晶体管8180-2的第二源极/漏极区可耦合到数字线8168-2(D)_。晶体管8188、8180-1和8180-2的栅极可耦合在一起,且耦合到平衡(EQ)控制信号线8186。因而,激活EQ会启用晶体管8188、8180-1和8180-2,这会有效地将数字线8168-1(D)与8168-2(D)_短路到一起且短路到平衡电压(例如VCC/2)。
虽然图8展示包含平衡电路***8174的读出放大器8170,但实施例不限于此,且平衡电路***8174可与感测放大器8170分开实施、实施于与图8中所展示的配置不同的配置中或完全不实施。
如下文进一步描述,在数个实施例中,可操作感测电路***8138(例如,感测放大器8170和计算组件8148)以执行所选操作,且首先在感测放大器8170或计算组件8148中的一个中存储结果,而不通过本地或全局I/O线传送来自感测电路***的数据(例如,不通过激活例如列解码信号执行感测线地址存取)。
然而,进一步到本文中所描述的实施例,具有感测放大器且在一些实施例中还可包括图8中所展示的计算组件的感测电路***8138还可将来自阵列中的存储器单元的多路复用列的存储器单元耦合到在阵列本地的多个共享I/O线9144的数据路径中的计算单元9198中的计算组件9148-1……9148-M和/或逻辑条9152-1……9152-N,如结合图10A和10B所论述。以此方式,计算组件10148-1……10148-M和/或逻辑条10152-1……10152-N可经由选择逻辑通过多个共享I/O线10144间接耦合到列的存储器单元(结合图10A和10B所论述)。
对操作(例如,涉及数据值的布尔型(Boolean)逻辑操作)的执行为基本且常用的。在许多较高层级操作中使用布尔型逻辑操作。因此,可通过改进的操作实现的速度和/或功率效率可转换成更高阶功能性的速度和/或功率效率。
如图8中所展示,计算组件8148还可包含可在本文中称为次锁存器8190的锁存器。次锁存器8190可以类似于上文关于主锁存器8175所描述的方式配置和操作,不同之处在于包括于次锁存器中的所述一对交叉耦合的p沟道晶体管(例如PMOS晶体管)可使其各别源极耦合到电源电压8176-2(例如VDD),且次锁存器的所述一对交叉耦合的n沟道晶体管(例如NMOS晶体管)可使其各别源极选择性地耦合到参考电压8176-1(例如接地),使得持续启用次锁存器。计算组件848的配置不限于图8中所展示的配置,且各种其它实施例是可行的。
如本文中所描述,存储器装置(例如,图7A中的720)可配置成通过数据总线(例如756)和控制总线(例如754)耦合到主机(例如702)。存储器装置720中的组7146可包括存储器单元的多个组区段(图7中的7150-1……7150-N)。组7146可包括经由存储器单元的多个列(图7)耦合到多个阵列的感测电路***(例如,图7A中的7138及图8和9中的对应附图标记)。感测电路***可包括耦合到所述列中的每一个的感测放大器和计算组件(例如,分别为图8中的8170和8148)。
每一组区段7150可与阵列825本地的多个共享I/O线(图7B中的744)的数据路径中的计算单元中的多个逻辑条(例如,图7B中的7152-0、7152-1……7152-N-1)相关联。如本文中所描述,耦合到组的控制器(例如,图7A到7B中的740)可配置成将数据值的移动引导到在阵列本地的共享I/O线9144/10144(图9和10A)的数据路径中的计算单元998/10198(图9和10A到10B)中的逻辑条10152(图10A)中的计算组件10148(图10A)。
存储器装置可包括逻辑条(例如,图7B中的7152和图10A中的10152),所述逻辑条具有可对应于存储器单元的数个多个列(图7B)的多个计算组件(例如,分别为图10A中的10148-1……10148-Z)。如结合图8进一步论述,感测电路***8138中的数个感测放大器8170和/或计算组件8148可以可选择地耦合(例如,经由图9中的列选择电路***9194-1和9194-2)到多个共享I/O线9144(图9)。列选择电路***可配置成通过可选择地耦合到多个(例如,四个、八个和十六个,以及其它可能性)感测放大器和/或计算组件而可选择地感测阵列的存储器单元的特定列中的数据。
在一些实施例中,组中的数个多个逻辑条(例如,图7B中的7152-1……752-N)可对应于组中的图7B中的数个组区段7150-1……7150-N(例如,具有多个子阵列的象限)。逻辑条可包括类似于图8中所展示的计算组件78148的在阵列85的共享I/O本地109144(图109A)的数据路径中的多个计算组件10148-1……109148-Z(图109A)。如将在图9中所展示,从阵列的行感测到的数据值可由列选择逻辑经由多个共享I/O线9144(图9)并行地移动到多个共享I/O线944(图89)的数据路径计算单元9198(图9)中的多个计算组件10148(图109A)。在一些实施例中,数据量可对应于多个共享I/O线的至少一千位宽度。
如本文中所描述,存储器单元阵列可包括DRAM存储器单元的实施方案,其中控制器配置成响应于命令而经由共享I/O线将数据从源位置移动(例如,复制、传送和/或输送)到目的地位置。在各种实施例中,源位置可在第一组中,且目的地位置可在阵列825本地的共享I/O线9144(图9)的数据路径中的计算单元9198(图9)中。
如图8中所描述,设备可配置成将数据从源位置,包括与第一数个感测放大器和计算组件相关联的特定行(例如,图9中的919)和列地址,移动(例如,复制、传送和/或输送)到共享I/O线(例如,图9中的9144)。另外,设备可配置成将数据移动到目的地位置,包括与共享I/0线10194(图10A)的数据路径中的计算单元10198(图10)相关联的特定逻辑条10152(图10A)。如读者将了解,每一共享I/O线10144(图10A)可实际上包括互补对共享I/O线(例如,图9中的共享I/O线和共享I/O线*)。在本文中所描述的一些实施例中,2048个共享I/O线(例如,互补对共享I/O线)可配置为2048位宽共享I/O线。在本文中所描述的一些实施例中,1024个共享I/O线(例如,互补对共享I/O线)可配置为1024位宽共享I/O线。
图9为说明根据本公开的数个实施例的用于存储器装置中的数据移动的电路***的示意图。图9展示各自耦合到相应对互补共享I/O线9144(例如,共享I/O线和共享I/O线*)的八个感测放大器(例如,分别在9170-0、9170-1……9170-7处所展示的感测放大器0、1……7)。图9还展示各自经由相应导通门9172-1和9172-2及数字线9168-1和9168-2耦合到相应感测放大器(例如,如针对9170-0处的感测放大器0所展示)的八个计算组件(例如,在9148-0、9148-1……9148-7处所展示的计算组件0、1……7)。举例来说,导通门可如图2中所展示连接,且可受操作选择信号Pass控制。举例来说,选择逻辑的输出可耦合到导通门9172-1和9172-2的栅极及数字线9168-1和9168-2。对应对感测放大器和计算组件可促成形成在9138-0、9138-1……9138-7处所指示的感测电路***。
所述对互补数字线9168-1和9168-2上存在的数据值可加载到计算组件9148-0,如结合图7所描述。举例来说,当启用直通门9172-1和9172-2时,所述对互补数字线9168-1和9168-2上的数据值可从感测放大器传递到计算组件(例如,9170-0到9148-0)。当启动感测放大器时,所述对互补数字线9168-1和9168-2上的数据值可为存储于感测放大器9170-0中的数据值。
图9中的感测放大器9170-0、9170-1……9170-7可各自对应于图8中所展示的感测放大器8170。图9中所展示的计算组件9148-0、8148-1……9148-7可各自对应于图8中所展示的计算组件8148。一个感测放大器与一个计算组件的组合可促成耦合到共享I/O线9144的DRAM存储器子阵列9145的一部分的感测电路***(例如,9138-0、9138-1……9138-7),所述共享I/O线由共享I/O线9144的数据路径中的多个逻辑条共享。
出于清楚起见而展示图9中所说明的实施例的配置,但所述配置不限于这些配置。举例来说,图9中所说明的用于感测放大器9170-0、9170-1……9170-7以及计算组件9148-0、9148-1……9148-7和共享I/O线9144的配置不限于感测放大器9170-0、9170-1……9170-7与感测电路***的计算组件9148-0、9148-1……9148-7的组合的一半形成于存储器单元(未展示)的列9192上方且一半形成于存储器单元的列9192下方。形成配置成耦合到共享I/O线的感测电路***的感测放大器与计算组件的此类组合的数目也不限于八个。另外,共享I/O线9144的配置不限于***成用于单独地耦合两组互补数字线9168-1和9168-2中的每一个的配置,共享I/O线9144的定位也不限于处于形成感测电路***的感测放大器与计算组件的组合当中(例如,而非在感测放大器与计算组件的组合的任一端处)。
图9中所说明的电路***还展示列选择电路***9194-1和9194-2,所述列选择电路***配置成相对于子阵列9145的特定列9192、与其相关联的互补数字线9168-1和9168-2以及共享I/O线9144(例如,如由图6A到6B中所展示的控制器640引导)实施数据移动操作。举例来说,列选择电路***9194-1具有配置成与例如列0(332-0)、列2、列4和列6的对应列耦合的选择线0、2、4和6。列选择电路***9194-2具有配置成与例如列1、列3、列5和列7的对应列耦合的选择线1、3、5和7。在各种实施例中,结合图3所描述的列选择电路***9194可表示由多路复用器体现且含于所述多路复用器中的功能性的至少一部分,例如,八(8)路多路复用器、十六(16)路多路复用器等。
控制器940可耦合到列选择电路***9194以控制选择线(例如,选择线0)来存取存储于感测放大器、计算组件中和/或存在于所述一对互补数字线(例如,9168-1和9168-2,此时经由来自选择线0的信号激活选择晶体管9196-1和9196-2)上的数据值。激活选择晶体管9196-1和9196-2(例如,如由控制器540引导)使得能够耦合感测放大器9170-0、计算组件9148-0和/或列0(9192-0)的互补数字线9168-1和9168-2,以将数字线0及数字线0*上的数据值移动到共享I/O线9144。举例来说,经移动数据值可为来自存储(高速缓存)于感测放大器9170-0和/或计算组件9148-0中的特定行919的数据值。来自列0到7中的每一个的数据值可类似地由激活适当选择晶体管的控制器选择。
此外,启用(例如,激活)选择晶体管(例如,选择晶体管9196-1和9196-2)可使得特定感测放大器和/或计算组件(例如,分别为9170-0和/或9148-0)能够与共享I/O线9144耦合,使得可将由放大器和/或计算组件存储的数据值移动到共享I/O线9144(例如,放置于所述共享I/O线上和/或传送到所述共享I/O线)。在一些实施例中,一次选择一个列(例如,列9192-0)以耦合到特定共享I/O线9144来移动(例如,复制、传送和/或输送)所存储的数据值。在图9的实例配置中,共享I/O线9144被说明为共享、差分I/O线对(例如,共享I/O线和共享I/O线*)。因此,选择列0(9192-0)可得到来自行(例如,行919)的和/或如存储于与互补数字线9168-1和9168-2相关联的感测放大器和/或计算组件中的两个数据值(例如,具有0和/或1的值的两个位)。可与共享差分I/O线9144的每一共享、差分I/O对(例如,共享I/O和共享I/O*)并行地输入这些数据值。
图10A为说明通过在阵列1025本地的数据路径中的多个共享I/O线10144耦合到具有多个逻辑条10152-1……10152-N的计算单元10198的阵列1025的多个区段10150中的一个的框图。在图10A的实例实施例中,展示具有多个子阵列10145-1……10145-32的组区段10150(例如,组象限)。在图10A中,在组象限10150中说明三十二(32)个子阵列。然而,实施例不限于这一实例。这一实例展示具有16K列的组区段,所述列通过十六(16)多路复用到共享I/O线10144。因此,16K列多路复用到1K共享I/O线10144,使得每16个列可提供可作为1024(1K)个位的群组并行地移动到计算单元10198的数据值。此处,共享I/O线10144将1K位宽数据路径提供到计算单元10198。
在图10A的实例中,每一逻辑条10152-1……10152-N具有多个计算组件10148-1……10148-Z,如与本文中已结合图7的感测电路***7138所描述相同。在一些实施例中,多个逻辑条10152-1……10152-N中的每一个配置成使用多个计算组件10148-1……10148-Z执行计算功能。在一些实施例中,多个逻辑条10152-1……10152-Z中的每一个可使用多个计算组件10148-1……10148-Z执行不同逻辑操作。举例来说,在一些实施例中,多个逻辑条10152-1……10152-Z中的至少一个可配置成执行长移位加速器操作,例如,八(8)六十四(64)位桶形移位器操作。这一实例还可在八(8)位块中提供部分重新排序,且可在具有8位交叉条的256位块中支持聚集/分散操作。在另一实例中,在一些实施例中,多个逻辑条10152-1……10152-Z中的至少一个可配置成执行Kogge-Stone加速以生成部分超前进位以加速水平加法。在另一实例中,在一些实施例中,多个逻辑条10152-1……10152-Z中的至少一个可配置成执行“信息块”数学加速。这一实例可在小的位群组(例如,4或8位信息块)中提供竖直模式加速。在另一实例中,在一些实施例中,多个逻辑条10152-1……10152-Z可配置成充当显式掩码寄存器,以实施如将由编译器使用的布尔型操作。如本文中所使用,“信息块”意图参考比寻址的数据行更小的位长度,例如256位信息块(在128字节可寻址行内)可寻址以使位宽度与特定接口匹配。这可能需要匹配16K+列存储器阵列的256位接口。
根据实施例,与组区段相关联的控制器540(图5A)可执行微码指令以结合多个子阵列10145-1……10145-32当中的特定存取行从每一多路复用列并行地引导1K位数据值移动到计算单元10198中的特定逻辑条10152-1……10152-N的特定计算组件10148-1……10148-Z。
根据一些实施例,蝶形网络10202可用于将1K位数据值连接到多个逻辑条10152-1……10152-N中的相应一个中的多个计算组件10148-1……10148-Z中的相应一个。作为实例但不作为限制,数据值的1K位可并行于与4个象限中的每一个中的32个子阵列10145-1……10145-32中的每一个相关联的逻辑条而移动到组区段10150。在这一实例中,具有1K计算组件10148-1……10148-Z的128个逻辑条10152-1……10152-N各自可包括在计算单元10198中。加载到计算单元10198的逻辑条10152-1……10152-N中的多个计算组件10148-1……10148-Z的数据值可根据来自控制器840(图8A)的微码指令操作以对数据值执行操作,例如,AND、OR、NOR、XOR、加法、减法、乘法、除法等,如与本文中已结合图7的感测电路***7138所描述相同。如上所述,一旦将数据值加载到计算单元10198,就可根据由控制器640(图6A)执行的微码指令快得多地(例如,以大约2纳秒(ns)的速度)在计算单元中控制计算操作,而不必将数据值移动回阵列525(图5A)的行中。举例来说,可使用计算单元10198以与实例时间(例如,大约60纳秒(ns))相比快得多的速度执行计算操作,启动和存取阵列625(图6A)中的行可能需要所述实例时间。
在图10A的实例实施例中,多个共享I/O线10144的数据路径中的计算单元10198中的多个计算组件10148-1……10148-Z和/或逻辑条10152-1……10152-N具有等于共享I/O线的数据路径的间距的间距。根据实施例,数据路径的间距为函数,例如数字线到存储器单元的阵列525(图5A)的间距的倍数(2×、4×等)。举例来说,多个计算组件10148-1……10148-Z和/或逻辑条10152-1……10152-N具有为数字线到存储器单元阵列的间距的整数倍的间距。
图10B为说明通过阵列本地的数据路径中的多个共享I/O线耦合到计算单元中的多个计算组件的多个阵列的框图实例,其中计算组件具有等于共享I/O线的数据路径的间距且为数字线到阵列的间距的倍数的间距。图10B的实例说明多个阵列,例如阵列的组象限10150-1、10150-2区段等,其可具有由数字线10168存取的存储器单元。
在图10B的实例中,展示根据数字线制造过程的给定特征尺寸(设计规则)具有为大约十六千(16K)数字线10168宽的间距的组象限10150-1和10150-2。还展示多个共享I/O线10144-1、10144-2……10144-Z,其可具有为数字线制造过程的给定特征尺寸(设计规则)的函数,例如倍数的不同间距。在图10B的实例中,多个共享I/O线10144-1、10144-Z的数据路径具有比数字线10168的间距大大约十六(16)倍的间距。因此,在这一实例中,展示分别通过16:1多路复用器(例如,10204-1……10204-Z和10206-1……10206-Z)多路复用到16K数字线10168的大约一千(1K)共享I/O线10144-1……10144-Z。然而,实施例不限于此处所提供的数字实例,且可将更多或更少数字线10168多路复用到多个共享I/O线10144-1……10144-Z。举例来说,共享I/O线10144-1……10144-Z可具有为除如由数字线制造过程的给定特征尺寸(设计规则)所设定的数字线10168的间距的16倍(例如,16×)以外的倍数的间距。
如图10B的实例中所展示,例如多个计算组件10148-1……10148-Z和10149-1……10149-Z当中的计算组件可分别与每一共享I/O线10144-1……10144-Z相关联。多个计算组件10148-1……10148-Z和10149-1……10149-Z可在分别展示为10198-1和10198-2的计算单元的多个逻辑条(例如,图10A中所展示的10152-1、10152-2……10152-N)内。如图10B的实例中所展示,与每一共享I/O线10144-1……10144-Z相关联的例如多个计算组件10148-1……10148-Z和10149-1……10149-Z当中的计算组件可具有等于共享I/O线10144-1……10144-Z的数据路径且因此为数字线10168到阵列(例如,10150-1和10150-2)的间距的十六倍(16×)的间距。根据各种实施例,由于共享I/O线10144-1……10144-Z的数据路径中的计算组件10148-1……10148-Z和10149-1……10149-Z不限于与数字线8168的间距的一对一(例如,1×倍)关系,因此计算组件10148-1……10148-Z和10149-1……10149-Z不限于阵列10150-1和10150-2的“竖直”对准,且在这一实例中,可为大十六倍(16×)。因而,共享I/O线10144-1……10144-Z的数据路径中的计算组件10148-1……10148-Z和10149-1……10149-Z可用于对存储于其中(例如,通过具有较大占据面积和空间)的数据值执行更稳健的逻辑操作集,例如上文所提及的长移位加速,同时仍接近阵列10150-1和10150-1且不在阵列或存储器管芯的***区域中关闭。
尽管已在本文中说明且描述了具体实施例,但本领域的一般技术人员应了解,经计算以实现相同结果的布置可取代所展示的具体实施例。本公开意图涵盖本公开的各种实施例的修改或变化。应理解,以上描述是以说明性方式而非限制性方式进行。对于本领域的技术人员而言在审阅以上描述之后上述实施例的组合及本文中未具体描述的其它实施例将是显而易见的。本公开的各种实施例的范围包括使用以上结构和方法的其它应用。因此,本公开的各种实施例的范围应参考所附权利要求书以及这些权利要求书所授予的等效物的完整范围来确定。
在前述详细描述中,出于精简本公开的目的而将各种特征一起分组在单个实施例中。本公开的这一方法不应被理解为反映本公开的所公开实施例必须使用比每一权利要求中明确陈述的特征更多的特征的意图。实际上,如所附权利要求书所反映,本发明主题在于单个所公开实施例的不到全部的特征。因此,所附权利要求书特此并入到详细描述中,其中每一权利要求就其自身而言作为单独实施例。
Claims (20)
1.一种存储器装置,其包含:
数个存储器阵列;以及
数个激活函数寄存器,其中所述数个激活函数寄存器定义用于由所述存储器装置执行的人工智能(AI)操作的激活函数。
2.根据权利要求1所述的设备,其中所述数个激活函数寄存器中的一或多个定义预定义激活函数。
3.根据权利要求1所述的设备,其中所述数个激活函数寄存器中的一或多个定义自定义激活函数。
4.根据权利要求2所述的设备,其中所述预定义激活函数为恒等函数、二元阶跃函数、逻辑函数、双曲正切函数、反正切函数、软符号函数、反平方根单元函数、修正线性单元函数、泄漏修正线性单元函数、参数化修正线性单元函数、随机化泄漏修正线性单元函数、指数线性单元函数或缩放指数线性单元函数中的至少一个。
5.根据权利要求3所述的设备,其中所述自定义激活函数基于AI操作的结果。
6.根据权利要求5所述的设备,其中所述AI操作为调试操作。
7.根据权利要求3所述的设备,其中根据预定义激活函数修改所述自定义激活函数。
8.一种设备,其包含:
数个存储器阵列;以及
控制器,其中所述控制器配置成使得所述设备:
响应于接收人工智能(AI)操作的结果而通过将激活函数寄存器中的指示符写入到特定状态来实现用于AI操作的激活函数的执行。
9.根据权利要求8所述的设备,其中所述激活函数为预定义激活函数。
10.根据权利要求9所述的设备,其中所述激活函数寄存器的所述指示符编程到第一状态以开始所述预定义激活函数。
11.根据权利要求10所述的设备,其中所述激活函数寄存器的所述指示符编程到第二状态以停止所述预定义激活函数。
12.根据权利要求10所述的设备,其中所述激活函数寄存器的所述指示符编程到第二状态以防止执行所述预定义激活函数。
13.根据权利要求8所述的设备,其中所述激活函数为自定义激活函数。
14.根据权利要求13所述的设备,其中所述激活寄存器的所述指示符编程到第一状态以开始所述自定义激活函数。
15.根据权利要求14所述的设备,其中所述激活寄存器的所述指示符编程到第二状态以停止所述自定义激活函数。
16.根据权利要求14所述的设备,其中所述激活寄存器的所述指示符编程到第二状态以防止执行所述自定义激活函数。
17.一种方法,其包含:
执行人工智能(AI)操作;以及
响应于所述AI操作的结果而执行特定激活函数。
18.根据权利要求17所述的方法,其进一步包含在执行不同AI操作时执行所述特定激活函数。
19.根据权利要求17到18中任一权利要求所述的方法,其进一步包含响应于所述AI操作的所述结果而更新所述特定激活函数。
20.根据权利要求17到18中任一权利要求所述的方法,其中所述激活函数为预定义激活函数。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/553,957 | 2019-08-28 | ||
US16/553,957 US11626148B2 (en) | 2019-08-28 | 2019-08-28 | Activation functions for artificial intelligence operations |
PCT/US2020/048137 WO2021041630A1 (en) | 2019-08-28 | 2020-08-27 | Activation functions for artificial intelligence operations |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114341983A true CN114341983A (zh) | 2022-04-12 |
Family
ID=74680452
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080061301.9A Pending CN114341983A (zh) | 2019-08-28 | 2020-08-27 | 用于人工智能操作的激活函数 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11626148B2 (zh) |
EP (1) | EP4022523A4 (zh) |
CN (1) | CN114341983A (zh) |
WO (1) | WO2021041630A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11436071B2 (en) * | 2019-08-28 | 2022-09-06 | Micron Technology, Inc. | Error control for content-addressable memory |
US11455232B2 (en) * | 2019-08-28 | 2022-09-27 | Micron Technology, Inc. | Debug operations on artificial intelligence operations |
US11004500B2 (en) * | 2019-08-28 | 2021-05-11 | Micron Technology, Inc. | Memory with artificial intelligence mode |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020065646A1 (en) * | 2000-09-11 | 2002-05-30 | Waldie Arthur H. | Embedded debug system using an auxiliary instruction queue |
US7502763B2 (en) | 2005-07-29 | 2009-03-10 | The Florida International University Board Of Trustees | Artificial neural network design and evaluation tool |
JP4738112B2 (ja) * | 2005-09-12 | 2011-08-03 | ルネサスエレクトロニクス株式会社 | 半導体記憶装置 |
US8966319B2 (en) * | 2011-02-22 | 2015-02-24 | Apple Inc. | Obtaining debug information from a flash memory device |
US11157800B2 (en) | 2015-07-24 | 2021-10-26 | Brainchip, Inc. | Neural processor based accelerator system and method |
US11029949B2 (en) * | 2015-10-08 | 2021-06-08 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Neural network unit |
US10585848B2 (en) | 2015-10-08 | 2020-03-10 | Via Alliance Semiconductor Co., Ltd. | Processor with hybrid coprocessor/execution unit neural network unit |
US10949736B2 (en) | 2016-11-03 | 2021-03-16 | Intel Corporation | Flexible neural network accelerator and methods therefor |
US11216722B2 (en) | 2016-12-31 | 2022-01-04 | Intel Corporation | Hardware accelerator template and design framework for implementing recurrent neural networks |
KR102606825B1 (ko) | 2017-09-13 | 2023-11-27 | 삼성전자주식회사 | 뉴럴 네트워크 모델을 변형하는 뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법 |
US11157064B2 (en) | 2017-09-28 | 2021-10-26 | Intel Corporation | Techniques to dynamically enable and disable accelerator devices in compute environments |
US10509846B2 (en) | 2017-12-13 | 2019-12-17 | Intel Corporation | Accelerator for processing data |
US11373088B2 (en) | 2017-12-30 | 2022-06-28 | Intel Corporation | Machine learning accelerator mechanism |
US10713045B2 (en) | 2018-01-08 | 2020-07-14 | Atlazo, Inc. | Compact arithmetic accelerator for data processing devices, systems and methods |
-
2019
- 2019-08-28 US US16/553,957 patent/US11626148B2/en active Active
-
2020
- 2020-08-27 EP EP20858254.4A patent/EP4022523A4/en active Pending
- 2020-08-27 CN CN202080061301.9A patent/CN114341983A/zh active Pending
- 2020-08-27 WO PCT/US2020/048137 patent/WO2021041630A1/en unknown
-
2023
- 2023-04-06 US US18/131,600 patent/US20230253020A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20210065754A1 (en) | 2021-03-04 |
EP4022523A4 (en) | 2023-08-09 |
US11626148B2 (en) | 2023-04-11 |
US20230253020A1 (en) | 2023-08-10 |
WO2021041630A1 (en) | 2021-03-04 |
EP4022523A1 (en) | 2022-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10482948B2 (en) | Apparatuses and methods for data movement | |
US11614878B2 (en) | Apparatuses and methods for data movement | |
US11513945B2 (en) | Apparatuses and methods for transferring data using a cache | |
US10733089B2 (en) | Apparatuses and methods for write address tracking | |
CN114341981B (zh) | 具有人工智能模式的存储器 | |
US10878856B2 (en) | Data transfer between subarrays in memory | |
US20230253020A1 (en) | Activation functions for artificial intelligence operations | |
US20230176739A1 (en) | Artificial intelligence accelerator | |
US20230015438A1 (en) | Debug operations on artificial intelligence operations | |
US12019895B2 (en) | Apparatuses and methods for data movement |
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 |