CN117730306A - 与递归神经网络一起使用的非易失性存储器(nvm)设备的混合存储器管理 - Google Patents
与递归神经网络一起使用的非易失性存储器(nvm)设备的混合存储器管理 Download PDFInfo
- Publication number
- CN117730306A CN117730306A CN202280049447.0A CN202280049447A CN117730306A CN 117730306 A CN117730306 A CN 117730306A CN 202280049447 A CN202280049447 A CN 202280049447A CN 117730306 A CN117730306 A CN 117730306A
- Authority
- CN
- China
- Prior art keywords
- rnn
- controller
- data
- ntm
- nvm
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 296
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 92
- 230000000306 recurrent effect Effects 0.000 title claims abstract description 14
- 238000000034 method Methods 0.000 claims abstract description 150
- 238000013500 data storage Methods 0.000 claims abstract description 110
- 238000012937 correction Methods 0.000 claims abstract description 33
- 230000001537 neural effect Effects 0.000 claims abstract 3
- 238000007726 management method Methods 0.000 claims description 74
- 230000006870 function Effects 0.000 claims description 69
- 230000004044 response Effects 0.000 claims description 14
- 238000013523 data management Methods 0.000 claims description 6
- 239000011159 matrix material Substances 0.000 abstract description 25
- 238000001514 detection method Methods 0.000 abstract description 4
- 238000013519 translation Methods 0.000 abstract description 3
- 238000012545 processing Methods 0.000 description 31
- 230000008569 process Effects 0.000 description 23
- 238000010586 diagram Methods 0.000 description 19
- 239000013598 vector Substances 0.000 description 19
- 238000004891 communication Methods 0.000 description 12
- 230000007246 mechanism Effects 0.000 description 11
- 230000014759 maintenance of location Effects 0.000 description 9
- 238000012549 training Methods 0.000 description 9
- 238000003491 array Methods 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 8
- 230000015556 catabolic process Effects 0.000 description 8
- 238000006731 degradation reaction Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 8
- 230000009471 action Effects 0.000 description 6
- 230000000670 limiting effect Effects 0.000 description 6
- 238000010801 machine learning Methods 0.000 description 6
- 239000007787 solid Substances 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 239000004065 semiconductor Substances 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 239000000758 substrate Substances 0.000 description 3
- 230000000946 synaptic effect Effects 0.000 description 3
- 208000011580 syndromic disease Diseases 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000000116 mitigating effect Effects 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000013403 standard screening design Methods 0.000 description 2
- 230000014616 translation Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000003936 working memory Effects 0.000 description 2
- 206010070597 Disorder of sex development Diseases 0.000 description 1
- 102000002111 Neuropilin Human genes 0.000 description 1
- 108050009450 Neuropilin Proteins 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 239000011370 conductive nanoparticle Substances 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013402 definitive screening design Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000003989 dielectric material Substances 0.000 description 1
- 238000011162 downstream development Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000007787 long-term memory Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 239000012782 phase change material Substances 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000000246 remedial effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 238000010561 standard procedure Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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/044—Recurrent networks, e.g. Hopfield networks
- G06N3/0442—Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
-
- 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/045—Combinations of networks
-
- 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
- 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/08—Learning methods
-
- 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/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Neurology (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
递归神经网络(RNN),其中非易失性存储器(NVM)阵列为该RNN提供存储体。该RNN可包括神经图灵机(NTM),并且该存储体可以是存储在该NVM阵列中的NTM矩阵。在一些示例中,控制该NVM阵列的数据存储设备DSD包括数据存储控制器和单独的NTM控制器两者。该单独的NTM控制器直接访问该NVM阵列的该NTM矩阵,同时绕过该数据存储控制器的闪存转换层(FTL)部件。附加地,描述了各种多数获胜错误检测和校正程序,以及各种基于不一致性计数的程序。
Description
相关申请的交叉引用
出于所有目的,本申请要求2021年10月12日提交的、名称为“与递归神经网络一起使用的非易失性存储器(NVM)设备的混合存储器管理(HYBRID MEMORY MANAGEMENT OFNON-VOLATILE MEMORY(NVM)DEVICES FOR USE WITH RECURRENT NEURAL NETWORKS)”的美国非临时申请17/499,572号的全部内容的权益并据此将这些内容以引用方式并入。
技术领域
在一些方面,本公开涉及具有非易失性存储器(NVM)阵列的数据存储设备。更具体地但非排他地,各方面涉及用于管理与递归神经网络一起使用的NVM阵列的系统和方法。
背景技术
递归神经网络(RNN)是人工神经网络,其被配置为使得节点之间的连接沿着时间序列形成有向图,以允许网络表现出时间动态行为。神经图灵机(NTM)(或更一般地,记忆增强神经网络(MANN))是循环神经网络的类型。NTM具有耦接到外部存储器资源的神经网络控制器,控制器使用注意力机制(例如,将网络的注意力集中在存储在外部存储器中的数据的特定部分上的机制)与外部存储器资源进行交互。NTM有可能加快RNN处理信息的方式。持续需要在NTM、MANN和其他RNN内以及被配置为实现NTM、MANN和其他RNN的设备中提供改进。
发明内容
下文呈现了对本公开的一些方面的简要概述,以提供对这些方面的基本理解。该概述并不是对本公开的所有设想特征的广泛概述,并且既不旨在标识本公开的所有方面的关键或重要元素,也不旨在描绘本公开的任何或所有方面的范围。其唯一目的是以简化形式呈现本公开的一些方面的各种概念,以作为稍后呈现的更详细描述的序言。
本公开的一个实施方案提供了一种数据存储设备,该数据存储设备包括:非易失性存储器(NVM)阵列;数据存储控制器,该数据存储控制器耦接到该NVM阵列并且被配置为访问该NVM阵列的至少第一部分,该第一部分具有分配给该数据存储控制器的物理存储器地址;和递归神经网络(RNN)控制器,该RNN控制器耦接到该NVM阵列并且被配置为访问该NVM阵列的第二部分,该第二部分具有分配给该RNN控制器的物理存储器地址,其中该NVM阵列的该第二部分被配置为用作RNN存储体。
本公开的另一实施方案提供了一种供数据存储设备使用的方法,该数据存储设备包括数据存储控制器、RNN控制器和NVM阵列。该方法包括:使用该数据存储控制器访问该NVM阵列的至少第一部分,该NVM阵列的该第一部分具有分配给该数据存储控制器的物理存储器地址;以及使用该RNN控制器访问该NVM阵列的第二部分,该NVM阵列的该第二部分具有分配给该RNN控制器的物理存储器地址,其中该NVM阵列的该第二部分被配置为用作RNN存储体。
本公开的另一实施方案提供一种供数据存储设备使用的装置,该数据存储设备包括非易失性存储器(NVM)阵列。该装置包括:用于访问存储在该NVM阵列的第一部分内的数据的构件,该第一部分具有分配给用于访问该第一部分的该构件的物理存储器地址;以及用于访问存储在该NVM阵列的第二部分内的递归神经网络(RNN)数据的构件,该第二部分具有分配给用于访问第二部分的该构件的物理存储器地址,其中该NVM阵列的该第二部分被配置为用作RNN存储体。
附图说明
图1是呈具有非易失性存储器(NVM)阵列的示例性固态设备(SSD)或其他数据存储设备(DSD)形式的数据存储设备的示意性框图,其中NVM阵列存储可由与SSD控制器分开的NTM控制器直接访问的神经图灵机(NTM)存储体。
图2例示了存储NTM矩阵或存储体的示例性NVM阵列管芯以及访问NTM矩阵的NTM控制器。
图3例示了由NTM控制器基于存储在NVM阵列中的NTM存储体中的数据控制的NTM训练的示例性方法。
图4例示了供NTM控制器使用来控制NVM阵列中的NTM存储体内的耐久性平衡/磨损均衡的示例性方法。
图5例示了供NTM控制器使用来控制NVM阵列中的NTM存储体内的耐久性平衡/磨损均衡的另一示例性方法。
图6例示了供NTM控制器使用来控制NVM阵列中的NTM存储体内的读取阈值校准的示例性方法。
图7例示了供具有NTM控制器和数据存储控制器的DSD使用来基于损失函数控制NTM操作的示例性方法。
图8例示了多数获胜错误校正程序,其中神经网络数据的多个副本被存储在NVM阵列中。
图9例示了供DSD使用来控制多数获胜错误校正程序的示例性方法。
图10例示了供DSD使用来控制基于不一致性计数的错误校正程序的示例性方法。
图11例示了供DSD使用来控制基于不一致性计数的错误校正程序的示例性方法的第一方面。
图12是具有NTM控制器和单独的数据存储控制器的示例性DSD的示意性框图配置。
图13例示了供具有NTM控制器和单独的数据存储控制器的DSD使用的示例性方法。
图14是被配置为执行多数获胜错误校正程序的示例性DSD的示意框图配置。
图15例示了示例性多数获胜错误校正程序。
图16是被配置为执行基于不一致性计数的错误校正程序的示例性DSD的示意性框图配置。
图17例示了示例性的基于不一致性计数的错误校正程序。
图18是诸如具有与SSD控制器分开的NTM控制器的DSD的示例性装置的示意性框图配置。
具体实施方式
在以下具体实施方式中,参考了构成该具体实施方式的一部分的附图。除了以上描述的例示性方面、实施方案和特征之外,通过参考附图和以下具体实施方式,另外的方面、实施方案和特征将变得显而易见。每个图中的元件的描述可以参考前面的图的元件。相似的数字可以指代附图中的相似的元件,包括相似的元件的替代实施方案。
本文的示例涉及非易失性存储器(NVM)阵列,并且涉及用于控制NVM阵列的数据存储设备或装置,诸如数据存储设备(DSD)(诸如固态设备(SSD))的控制器,并且具体地讲,涉及固态存储器存储设备,诸如使用NAND闪存存储器(本文称为“NAND”)的那些。(NAND是不需要电力来保持数据的非易失性存储技术的类型。它利用负与(即NAND)逻辑。)为了简洁起见,具有一个或多个NAND管芯的SSD将在下面对各种实施方案的描述中用作DSD的非限制性示例。应当理解,本文描述的至少一些方面也可适用于其它形式的数据存储设备。例如,本文描述的至少一些方面可适用于数据存储或存储器设备,包括相变存储器(PCM)阵列、磁阻随机存取存储器(MRAM)阵列、存储级存储器以及电阻式随机存取存储器(ReRAM)阵列。此外,各种实施方案可用于各种机器学习设备,该机器学习设备可包括处理元件和存储器/数据存储元件的某个组合,包括根据所述实施方案构造/配置的NVM阵列。
概述
如上所述,递归神经网络(RNN)被配置为允许网络表现出时间动态行为。神经图灵机(NTM)是具有耦接到外部存储器资源的神经网络控制器的一种类型的RNN,其中控制器利用将网络的注意力集中在存储在外部存储器中的数据的特定部分上的机制。具有长短期记忆(LSTM)网络控制器的NTM可仅从示例中推断出诸如复制、排序和联想回忆的算法。NTM正在改变和加快RNN处理信息的方式。CTM具有两个主要部件:神经网络控制器和存储体。控制器对存储体执行神经网络操作以形成基本上任何类型的神经网络,包括具有前馈部件的那些神经网络。存储体将经处理的信息存储在例如大小为N×N的矩阵内,该矩阵具有N个向量行,其中每一行具有D个列或维度。在一次更新迭代中,控制器处理输入并与存储体交互以生成输出。该交互由一组并行的读取“头”和写入“头”处理,它们是NTM架构的计算部件。NTM读取头输出存储器位置的加权组合,该加权组合可被称为读取向量,并且该加权组合在下一时间步被反馈到控制器。NTM写入头利用擦除和添加向量“柔和”地修改存储器(例如,取决于其权重),这两个向量均由控制器生成。
典型NTM架构的存储器部分是通常不具有计算能力的简单缓冲器。存储器可为例如随机存取存储器(RAM)。NTM架构的每个部件都是可微分的,使得网络可直接进行梯度下降和反向传播训练。这可通过定义与存储器中的所有元素或多或少交互的“模糊”读取和写入操作(而不是寻址单个元素)来实现。模糊程度由注意力焦点机制确定,该注意力焦点机制约束每个读取和写入操作以与存储器的小部分交互,而忽略其余部分。也就是说,存储器的小部分或稀疏部分是经过注意力选择的。由于与存储器的交互是稀疏的,因此NTM偏向于不受干扰地存储数据。引起注意力焦点的存储器位置由前述头发出的专门输出值确定。这些输出定义了存储器矩阵的行(称为存储器“位置”)上的归一化加权。每个加权(每个读取头或写入头一个)设置头在每个位置读取或写入的程度。因此,头可在单个位置强关注存储器,或者在许多位置弱关注存储器。
就读取而言,令Mt为时间t时N×D存储器矩阵的内容,其中N为存储器位置的数量,并且D为每个位置处的向量大小或维度。令wt为读取头在时间t时发出的N个位置上的加权向量。由于所有加权均归一化,因此wt的N个元素wt遵循以下约束:
读取向量rt被定义为存储器中的行向量Mt(i)的线性组合:
这对于存储器和加权都是可微分的。
就NTM写入而言,写入分为两部分,擦除操作,之后是加法操作。给定写入头在时间t时发出的加权wt,以及M个元素均位于(0,1)范围内的擦除向量et,来自前一时间步的存储器向量Mt-1(i)可修改如下:
其中1为全1的行向量,并且对存储器位置的乘法逐点作用。因此,仅当存储器位置处的加权和擦除元素均为一时,该存储器位置的元素才被重置为零。如果加权或擦除为零,则存储器保持不变(即,擦除在此意味着设置为零)。当存在多个写入头时,可以任何顺序执行擦除,因为乘法是可交换的。每个写入头还产生长度D和向量at,该向量在擦除步骤已执行之后被添加到存储器:
再次注意,由多个头执行添加的顺序是不相关的。所有写入头的组合擦除和添加操作在时间t时产生存储器的最终内容。由于擦除和添加都是可微分的,因此复合写入操作也是可微分的。还需注意,擦除向量和添加向量都具有D个独立分量,从而允许对修改每个存储器位置中的哪些元素进行细粒度控制。
通常,NTM使用RAM作为其外部存储器资源。NTM矩阵保持在RAM内,并且基于从RAM读取和写入到RAM的数据在NTM控制器内执行所有计算。也就是说,前述读取头和写入头是对存储在RAM中的数据进行操作的控制器的部件。NTM控制器可被配置为基于到RAM的输入和来自RAM的输出来控制RNN,以便基于在训练阶段从外部提供的标签来优化RNN算法性能。RAM仅存储数据并且不执行NTM计算。
在本文,描述了NTM配置和架构,该NTM配置和架构替代地使用非易失性存储器(NVM)阵列来存储NTM存储器矩阵或其他RNN存储体或相关数据和信息。
NVM阵列通常结合在闪存驱动器(或NAND驱动器)内,该闪存驱动器包括数据存储控制器,该数据存储控制器向NVM阵列写入数据/从NVM阵列读取数据。尽管可能使用闪存驱动器的数据存储控制器来访问存储在闪存驱动器的NAND NVM阵列上的NTM存储体数据(使得例如主机可能充当NTM控制器),但由于闪存驱动器的闪存管理操作而可能会出现问题。就这一点而言,NAND闪存技术的固有性质通常需要精密且复杂的闪存管理技术来使NANDNVM阵列成为用于计算系统的实际存储介质,并且闪存管理技术可能阻碍NTM处理的速度和效率。
这些闪存管理技术中的许多闪存管理技术由闪存驱动器(即,SSD)的数据存储控制器内的闪存转换层(FTL)来实现。(FTL是一种类型的NVM管理部件或闪存管理部件,其主要在固件中配置并且通过执行逻辑到物理地址转换以及其他功能(诸如垃圾收集、磨损均衡、错误校正码(ECC)和坏块管理)来管理对NAND NVM阵列的访问。然而,对于开放通道SSD,物理固态存储的管理由主机计算机的操作系统控制。(开放通道固态驱动器是在驱动器中未实现FTL的固态驱动器。Linux 4.4内核是支持开放通道SSD的操作系统内核的一个示例。)
可由FTL或由开放通道SSD的主机(至少部分地)解决或管理的NAND NVM的闪存管理问题包括:1)限制使用寿命的磨损机制;2)编程(写入)前擦除的需要;3)写入和读取干扰造成的数据错误;4)数据保留错误;和5)初始和生长坏块的管理。影响NAND NVM的可靠性、性能和写入耐久性的重要因素包括:单层单元(SLC)与多层单元(MLC)NAND闪存技术的使用;磨损均衡算法;通过坏块管理技术确保数据完整性;错误检测和校正技术的使用;和写入放大。
通过适当的FTL和其他闪存管理技术,可管理NAND闪存驱动器的这些特性,以提供可靠的数据存储设备。然而,NAND数据存储控制器的FTL和其他闪存管理部件的操作(或由用于开放通道SSD的主机操作系统进行的操作)不一定非常适合NTM或其他形式的RNN的读取头和写入头操作。例如,NTM的独特方面(如以上简要描述的)可能受到外部闪存管理监督器(例如,FTL)的开销的影响,但仍然可能无法证明闪存的全主机管理(经由开放通道系统)的严格用例限制是合理的。
本文中描述了系统和方法,其中NTM管理其自己的NAND存储器以避免对使用SSD闪存驱动器的全闪存管理开销(例如,FTL等)的需要,同时还避免对基于全主机的存储器管理系统的需要(如在主机执行闪存管理的开放通道SSD中一样)。这种由NTM对其自己的NAND存储器进行的管理可被称为自NTM-NAND管理。例如,本文描述了提供与SSD数据存储控制器分开(并且也与主机分开)的NTM控制器的NTM配置和架构,其中SSD数据存储控制器和单独的NTM控制器被配置为使用单独的物理地址集来访问NVM阵列的单独的部分或分区。以这种方式,NTM控制器绕过数据存储控制器的FTL。尽管主要参考NTM示例进行描述,但本文的各方面也适用于其他形式的RNN。
本文描述的其他方面涉及可应用于NVM的NTM存储体中的NTM数据或存储在NVM阵列中的其他类型的神经网络数据的错误校正技术。在一个方面,提供多数规则错误校正程序,其中耦接到NVM阵列的控制器:1)将神经网络的神经网络数据的至少三个副本存储在NVM阵列中;2)从NVM阵列读取神经网络数据的至少三个副本;3)以及对从NVM阵列读取的神经网络数据的至少三个副本执行多数规则错误校正程序。其他方面涉及对数据进行加扰和解扰。例如,描述了与经加扰数据一起使用的基于不一致性计数的程序,其中耦接到NVM的控制器:1)将神经网络数据的经加扰版本存储在NVM阵列中;2)从NVM阵列读取神经网络数据的经加扰版本;3)维护数据的经加扰版本中的二进制一的计数(或数量)和二进制零的计数(或数量)中的不一致性的累加总和;4)响应于确定累加总和不超过不一致性阈值,对从NVM阵列读取的神经网络数据进行解扰;以及5)响应于确定累加总和超过不一致性阈值,重新写入或重新存储存储在NVM阵列中的神经网络数据。
以下将描述这些和其他特征。
具有基于NVM的NTM存储器矩阵/存储体的示例性数据存储设备
图1是包括具有NVM的示例性SSD(或DSD)的系统100的框图,该NVM具有NTM存储器矩阵或其他RNN存储体。系统100包括主机102以及耦接到主机102的SSD 104或其他DSD。主机102向SSD 104提供命令,以用于在主机102与SSD 104之间传输数据。例如,主机102可以向SSD 104提供写入命令,以将数据写入到SSD 104,或者从SSD 104读取命令以从SSD 104读取数据。主机102还可提供用于训练NTM的标签。主机102可以是需要数据存储或检索的任何系统或设备以及用于与SSD 104通信的兼容接口。例如,主机102可以是计算设备、个人计算机、便携式计算机、工作站、服务器、个人数字助理、数字相机或数字电话,仅列出几个示例。附加地或另选地,主机102可以是需要神经网络处理的系统或设备,该神经网络处理为诸如语音识别、计算机视觉和自动驾驶车辆。例如,主机102可以是车辆的自动驾驶系统的部件。
SSD 104包括主机接口106、SSD/DSD控制器108、单独的NTM控制器109、易失性存储器110(诸如DRAM)或其他工作存储器、NVM接口112(其可被称为闪存接口)以及NVM阵列114。NVM阵列114包括一个或多个NAND管芯,每个NAND管芯配置有(a)用作主存储器115的存储器的第一部分和(b)用作NTM存储体117的存储器的第二部分。主存储器115对应于NVM阵列114内的第一组物理存储器地址,该第一组物理存储器地址被分配给SSD控制器108并由NVM控制器116经由NVM接口112访问。NVM控制器116被配置为使用NVM管理部件(例如,FTL)访问分配给SSD的NVM物理地址。NTM存储体117对应于NVM阵列114内的第二组物理存储器地址,该第二组物理存储器地址被分配给NTM控制器109并由NTM控制器109直接访问(即,不经由NVM接口112),以便绕过SSD控制器108的NVM管理部件(例如,绕过原本可结合从NVM阵列114的读取来执行的FTL操作)。需注意,NTM控制器109和NTM存储体117可被统称为NTM模块。在一些示例中,NTM存储体117可以是NVM阵列的单独分区。在其他示例中,NTM存储体只是NVM阵列的单独部分。还需注意,尽管主要参考其中NTM控制器109是SSD 104的部件的示例进行了描述,但NTM控制器109替代地可与SSD 104分开。
NVM阵列114的分配给SSD控制器108的部分也可被称为用户数据存储器,因为其大部分将存储由主机102提供的用户数据。然而,其他类型的数据可存储在主存储器115中,诸如由主机102或SSD控制器108提供的其他类型的非NTM数据。此外,在一些示例中,一些NTM数据也可存储在主存储器115中。NVM阵列114的分配给NTM控制器109的部分被称为NTM存储体117,因为其大部分将存储由NTM控制器109提供的NTM存储体数据。然而,其他类型的数据可存储在NTM存储体117中。
主机接口106耦接到SSD控制器108并促进主机102与SSD控制器108之间的通信。SSD控制器108耦接到易失性存储器110,并经由NVM接口112耦接到NVM阵列114的主存储器115部分。主机接口106可以是任何合适的通信接口,诸如非易失性存储器express(NVMe)接口、通用串行总线(USB)接口、串行外设(SP)接口、高级技术附件(ATA)或串行高级技术附件(SATA)接口、小型计算机系统接口(SCSI)、IEEE 1394(火线)接口等。在一些实施方案中,主机102包括SSD 104。在其他实施方案中,SSD 104相对于主机102是远程的,或者被包含在与主机102通信地耦接的远程计算系统中。例如,主机102可以通过无线通信链路与SSD 104进行通信。
尽管在图1所例示的示例中,SSD 104包括SSD控制器108与NVM管芯114之间经由接口112的单个信道,但本文描述的主题不限于具有单个存储器信道。例如,在一些NAND存储器系统架构中,两个、四个、八个或更多个NAND信道耦接控制器和NAND存储器设备,具体取决于控制器的能力。在本文描述的任何实施方案中,即使在附图中示出单个信道,控制器和存储器管芯之间也可使用超过一个单个信道。SSD控制器108可在单个集成电路芯片中实现,并且可通过一个或多个命令信道与NVM管芯114中的存储器的不同层进行通信。
SSD控制器108控制SSD 104的操作(例如,排除NTM控制器109的操作)。在各种方面,SSD控制器108通过主机接口106从主机102接收命令,并执行该命令,以在主机102与NVM阵列114的主存储器115之间传送数据。如图1所示,SSD控制器108的NVM控制器116被配置为使用闪存管理部件(例如,FTL)来访问与主存储器115相对应的NVM物理地址,该闪存管理部件可包括基于固件(FW)的部件。(这些部件中的一些部件可位于NVM/闪存接口112内。)也就是说,SSD控制器108可包括用于管理NVM阵列114的主存储器115的基于FW的闪存管理部件或存储器管理部件。此外,SSD控制器108可管理对易失性存储器110的写入/读取,以执行由SSD控制器108实现的各种功能,并且维护和管理存储在易失性存储器110中的高速缓存的信息。
NTM控制器109还连接到主机接口106以从主机102接收NTM特定命令和数据(诸如NTM输入训练数据),并且向主机102发送命令回复和输出数据(诸如经训练的NTM神经网络参数)。NTM控制器109还可连接到易失性存储器110(或者连接到单独的易失性存储器,未示出),用于对易失性存储器进行写入和读取。NVM阵列114还可包括至少一些片上NTM计算部件以及至少一些片上用户数据计算部件。
SSD控制器108和NTM控制器109可包括任何类型的处理设备,诸如微处理器、微控制器、嵌入式控制器、逻辑电路、软件、FW等。在一些方面,本文描述为由SSD控制器108或NTM控制器109执行的功能中的一些或所有功能可替代地由SSD 104的另一元件执行。例如,SSD104可包括微处理器、微控制器、嵌入式控制器、逻辑电路、软件、FW或任何类型的处理设备,以用于执行本文描述为由SSD控制器108或NTM控制器109执行的功能中的一个或多个功能。根据其他方面,本文描述为由SSD控制器108或NTM控制器109执行的功能中的一个或多个功能替代地由主机102执行。在另外的方面,本文描述为由SSD控制器108或NTM控制器109执行的功能中的一些或所有功能可替代地由另一元件诸如混合驱动器中的控制器执行,该混合驱动器包括非易失性存储器元件和磁存储元件两者。
易失性存储器110可以是能够存储数据的任何合适的存储器、计算设备或系统。例如,易失性存储器110可以是普通的RAM、DRAM、双倍数据速率(DDR)RAM(DRAM)、静态RAM(SRAM)、同步动态RAM(SDRAM)、闪存存储装置、可擦除可编程只读存储器(EPROM)、电可擦可编程ROM(EEPROM)或其他快速非易失性存储器诸如存储级存储器(例如,MRAM、ReRAM、PCM)等。在各种实施方案中,SSD控制器108和NTM控制器109使用易失性存储器110或其一部分在主机102与NVM阵列114之间的数据传送期间存储数据。例如,易失性存储器110或易失性存储器110的一部分可以是高速缓存存储器。NVM阵列114经由NVM接口112从SSD控制器108接收数据并将该数据存储在主存储器115中。NVM阵列114可以是任何合适类型的非易失性存储器,诸如NAND型闪存存储器等。在一些实施方案中,易失性存储器110可由非易失性存储器诸如MRAM、PCM、ReRAM等替换以用作整个设备的工作存储器。
在图1的示例中,NTM控制器109可包括提供NTM、MANN和/或RNN控制器以与NTM存储体117一起使用的硬件、FW、软件或它们的任何组合。NTM控制器109还可被配置为对NTM存储体117中的数据执行各种NTM操作,诸如NTM读取头和NTM写入头操作。
尽管图1示出了示例性SSD并且SSD在整个说明书中通常用作例示性示例,但所公开的各种实施方案不一定限于SSD应用/具体实施。作为示例,所公开的NVM管芯和相关联处理部件可被实现为包括其它处理电路和/或部件的封装的一部分。例如,处理器可包括本文描述的嵌入式NVM以及用于NTM处理的相关联电路和/或部件,或以其他方式与本文描述的嵌入式NVM以及相关联电路和/或部件耦接。作为一个示例,处理器可将某些NTM处理任务从NTM控制器109卸载到NVM以及相关联的电路和/或部件。
因此,图1例示了混合存储器管理系统,除其他特征外,该混合存储器管理系统还提供由SSD控制器108的NVM控制器116对主存储器115的闪存管理FW级控制,同时还允许由NTM控制器对NTM存储体117进行基于NTM的直接动态存储器管理操作。以这种方式,系统允许NTM控制器109对NTM存储体117进行自引导存储器访问。因此,提供了基于NAND的NTM系统,其可包括自NTM-NAND管理系统。这种“双风格”存储器管理系统允许对预分配的NAND闪存区域(例如,NTM存储体117)进行自主直接管理,而NVM阵列的其余部分(例如,主存储器115)的存储器控制器功能仍然可由SSD控制器108中的FW执行。此外,主机102不需要管理NVM阵列114的任一部分的低级存储器管理。
在一些示例中,如下面将解释的,NTM存储体117可在NTM程序的后期级期间(或者每当NTM控制器109请求SSD控制器进行这样的控制时)由SSD控制器108控制。该机制可允许NTM以更少的运行时间和更少的计算(特别是当这些计算在其他方面是冗余的时)更快且更准确地收敛到最优解,同时允许NTM控制器109将更多时间花在“对学习有价值”的行动上。这可用于增强NTM控制器109的功能,因为可在用于成本函数优化的NTM的算法处理程序期间改变NTM存储体117的存储器管理。它还可减少与SSD控制器108的FW闪存管理过程相关联的延迟和功率开销,这些过程对于NTM的操作来说不是必需的。
除其他特征外,SSD控制器108分配特定物理地址范围供NTM控制器109使用以存储到NTM存储体117。然后,NTM控制器109以独立(自主)方式管理该物理地址范围,使得其可利用NVM阵列114直接优化其自己的NTM操作,以及减少NVM控制器116的闪存管理开销。NVM阵列114的剩余部分的存储器管理可使用其他标准的基于FW的管理方法(诸如FTL方法)来操作(因而受益于现有技术的闪存驱动器中可用的经优化的基于FW的管理程序)。
应当指出的是,由数据存储控制器108执行的NVM阵列114的存储控制器管理可以是确定性的,即,其执行的存储器管理操作可根据嵌入的FW代码以预定义的方式来执行,而NTM控制器109的操作可以是非确定性的,因为NTM根据当前设备状况在设备寿命期间以动态方式学习经优化的操作规则。
因此,除其他方面外,描述了一种系统,该系统提供:1)对专用于NTM操作的NAND区域的分配;2)具有双控制器干预级别的混合存储器管理系统(即,示为控制器116的主存储器管理模块),具有基于FW的存储器控制器系统(例如,控制器108)和具有直接(自主)存储器管理的NTM控制器(例如,控制器109);其中3)主存储器管理模块(例如,控制器116)以基于FW的确定性性质操作,而NTM控制器(例如,控制器109)以非确定性方式操作(根据NTM操作)。
另外,在一些方面,NTM控制器109被配置为执行附加的或另选的功能,诸如:1)磨损均衡,其不同于由SSD控制器108执行的磨损均衡(WL),2)读取阈值校准(RTC),其不同于由SSD控制器108执行的磨损均衡,3)ECC,其不同于由SSD控制器108执行的ECC并且可包括例如多数规则ECC,4)ECC,其不同于由SSD控制器108执行的ECC并且可包括例如多数规则ECC,以及5)NTM存储体数据的选择性数据加扰。此外,NTM控制器109可被配置为基于NTM损失函数来实现不同的数据管理功能。下面将详细描述这些特征。
图2例示了被配置为存储NTM存储器矩阵204(或其他RNN存储体矩阵或MANN存储体矩阵)和NTM存储器管理数据206(例如,应存储在NVM中的任何NTM存储器管理数据,或者其他RNN存储器管理数据或MANN存储器管理数据)的NVM管芯的示例性NTM存储体202部分的框图。在一些示例中,NTM存储体部分202对应于图1的NTM存储体117。图2还例示了NTM控制器208(其在一些示例中对应于图1的NTM控制器109)。图中未例示可能在实际NVM管芯中使用的所有电路或存储体件,诸如输入/输出部件、电压调节部件、时钟和时序部件等。相反,仅示出了一些部件和电路,汇总为框图或示意图。
图2的NTM控制器208包括被配置为执行或控制NTM计算操作的部件。在图2的示例中,示例性NTM部件210包括:一个或多个NTM向量读取计算部件212,该一个或多个NTM向量读取计算部件被配置为对存储在NTM存储器矩阵204中的数据执行至少一些向量读取操作(其可包括前述读取头计算中的至少一些读取头计算);一个或多个NTM向量写入计算部件214,该一个或多个NTM向量写入计算部件被配置为对存储在NTM存储器矩阵204中的数据执行至少一些向量写入操作(其可包括前述写入头计算中的至少一些写入头计算);一个或多个权重求和和/或计数部件218,该一个或多个权重求和和/或计数部件被配置为对某些权重求和和/或计数,如下文所描述;和一个或多个NTM级控制部件220,该一个或多个NTM级控制部件被配置为取决于NTM处理的阶段来控制各种功能,也如下文所描述。示出每个NTM部件的多个实例(例如,212、214、218及220),因为在一些示例中,多个此类设备可并行操作,例如以与跨管芯阵列维护的NTM数据一起用作元数据块。此外,这些部件中的至少一些部件(诸如212、214、218和220)可被配置在片上,即在使用例如阵列下或阵列旁电路来保持NTM存储器矩阵的NVM管芯上。这些部件中的一些部件可被配置为加快收敛。
图2的NTM控制器208还包括:NTM存储器管理控制器222,该NTM存储器管理控制器被配置为更新存储器管理数据206;NTM“读取头”和“写入头”数据输入/输出控制器224,该数据输入/输出控制器被配置为向/从图1的主机102输入/输出与NTM读取头和写入操作相关联的NTM数据;磨损均衡控制器226(其可对NTM存储体202上执行与由SSD控制器108对NVM的其他部分执行的磨损均衡不同的磨损均衡程序);读取阈值校准控制器228(其可对NTM存储体202执行与由SSD控制器108对NVM的其他部分执行的读取阈值校准不同的读取阈值校准程序);数据存储器管理策略控制器230(其可为NTM存储体202实现与由SSD控制器108应用于NVM的其他部分的策略不同的数据存储器管理策略);ECC控制器232,该ECC控制器被配置为在从NTM存储器矩阵204读取数据或向该NTM存储器矩阵写入数据时控制应用于该数据的任何ECC,在一些示例中,该NTM存储器矩阵可执行基于多数规则的错误校正程序;和数据加扰器控制器234,该数据加扰器控制器可在将数据写入到NTM存储体202并且然后从该NTM存储体读取数据时对该数据进行加扰和解扰。数据加扰器控制器234可被配置为执行基于不一致性计数的处理。下面将更详细地描述这些部件的操作。
需注意,并非图2所示的所有特征都是必需的。例如,在一些实施方案中,NTM控制器将省略磨损均衡控制器226、读取阈值校准控制器228、数据管理策略控制器230、ECC控制器232和数据加扰器控制器234。这些功能中的一些功能可替代地由SSD控制器(例如,控制器108)执行或完全省略。关于ECC,数据存储控制器可被配置为每当从NVM读取或向NVM写入时默认地执行ECC解码和编码。通过将ECC限制为仅存储在NVM的与NTM存储体分开的部分中的数据,并且不对NTM存储体中的数据执行ECC,可实现功率节省和速度增强。在一些方面,将ECC应用于NTM存储体中的一些块但不应用于其他块(例如,如例如通过编程/擦除循环确定的强块对较弱块)。类似的考虑因素也适用于磨损均衡和读取阈值校准。
在其中数据存储控制器108和NTM控制器109两者都被配置为执行诸如磨损均衡、读取阈值校准和ECC的操作的实施方案中,数据存储控制器108可被配置为对NVM管芯的不包括NTM存储体的部分执行其操作,而NTM控制器109可被配置为对NTM存储体(117/202)的存储块执行其操作。可基于不同的参数、阈值等来执行这些操作的不同版本。例如,数据存储控制器可被配置为对NVM阵列的一个部分执行第一磨损均衡程序、第一ECC程序或第一读取阈值校准程序,而NTM控制器被配置为对NTM存储体执行不同于第一磨损均衡程序的第二磨损均衡程序、不同于第一ECC程序的第二ECC程序或不同于第一读取阈值校准程序的第二读取阈值校准程序。下面讨论了一些示例。
图3例示了根据本公开的各方面的与NTM处理一起使用的示例性方法300,其中NTM处理由NTM控制器(诸如图1的NTM控制器109或图2的NTM控制器208)基于存储在NVM的NTM存储体中的数据来执行或控制。从框302开始,NTM控制器确定或设置NTM的N×D矩阵的大小,该大小可基于特定RNN的需要根据标准技术来确定。在框304处,NTM控制器输入经标记数据(诸如经标记的RNN训练图像)以用于训练与NTM相关联的RNN。在框306处,NTM控制器从输入的经标记数据生成NTM矩阵元素(M)的初始集并将N×D矩阵的矩阵元素存储在NVM阵列中。在框308处,NTM控制器通过对NTM矩阵的注意力选择部分执行NTM读取头和写入头操作来执行RNN训练操作以使用NTM训练RNN,其中读取头和写入头操作使用分配给NTM控制器的不同于分配给单独SSD控制器的其他物理地址的物理地址来向/从NTM矩阵传送数据。在以上等式(1)至(4)中阐述了应用于NTM矩阵的注意力选择部分的示例性读取头和写入头操作。
图4例示了可由NTM控制器(诸如图1的NTM控制器109或其他适当配备的设备)执行或控制的磨损均衡/耐久性平衡的方法400。NTM控制器保持“位图”缓冲器向量(其可包含每地址若干位)并且跟踪或确定表示NTM存储体(诸如图1的存储体117)内的不同NTM内部块的访问编程速率的值。在一些方面,位图对应于整个NTM存储体。访问编程速率可为每NTM块编程计数值,其表示特定块已被编程(即,写入)多少次并且因此提供关于专用于存储体的块集内的最多使用块和最少使用块的信息。具有最高访问编程速率的块是最多使用块,因为它们被访问最多。具有最低访问编程速率的块是最少使用块,因为它们被访问最少。利用该信息,NTM控制器在预定义时间段内在当前最多使用块和当前最少使用块之间切换一次,以便平衡物理块耐久性。可执行该磨损均衡程序,而不是如可由SSD控制器(例如,图1的控制器108)对NVM内的未分配给NTM存储体的其他块执行的复杂磨损均衡操作。以这种方式,NTM控制器执行一种形式的自耐久性平衡,以在NTM存储体内的块与块之间维护大致相同的位错误率(BER)。这可减少对NVM中的NTM存储体的访问延迟,并且因此允许NTM控制器更快地收敛到其NTM算法的解。
从图4的框402处开始,NTM控制器跟踪或确定NTM存储体的NTM内部块的访问编程速率(其也可简称为编程速率)。如上所述,访问编程速率指示特定块被编程(写入)的频率。该信息可由一系列位来表示,该系列位被维护在由NTM控制器所保持的位图缓冲器内(例如,在由NTM控制器所使用的易失性存储器(诸如图1的易失性存储器110)所保持的缓冲器内)。在框404处,NTM控制器基于访问编程速率信息来确定当前最多使用(或最多访问)块和当前最少使用(或最少访问)块。在框406处,NTM控制器在将其最新计算的NTM存储体数据存储在最多使用块中与存储在最少使用块中之间周期性地切换或交换,以平衡物理块耐久性。例如,可跟踪定时器,并且可每X毫秒发生一次切换,其中X为可编程值。
图5例示了可由NTM控制器(诸如图1的NTM控制器109或其他适当配备的设备)执行或控制的磨损均衡/耐久性平衡的另一方法500。在该实施方案中,NTM控制器从ECC引擎(例如,图2的ECC控制器232或图1的SSD控制器108内的ECC控制器)获得关于每个NTM存储体块的性能的信息,包括以下中的一者或多者:1)平均/边缘解码延迟;2)每个块的典型失败位计数(FBC);3)校正子权重;和4)全功率解码模式访问时间值。NTM控制器将此信息连同其自身对每NTM块编程计数或编程/擦除循环(PEC)的自跟踪用于NTM分配的物理块(例如,图1的存储体117内的块)的耐久性平衡。在一些示例中,NTM控制器可基于这些参数来选择、构建或以其他方式建立用于持久力平衡的策略(或程序)。
简而言之,解码延迟是指ECC控制器对从NVM读取的可能具有各种错误的数据进行解码所花费的时间。ECC控制器可跟踪平均延迟值以及边缘值两者,该边缘值表示其中更多位出错的更具挑战性的解码情况。FBC表示由ECC控制器检测到的坏位(即,翻转位)的数量。校正子权重提供对ECC解码期间给定数据块中的剩余位错误的一般数量的指示。全功率解码模式访问时间是指当以全功率操作时,ECC从NVM中的块读取或编程(写入)到NVM中的块所花费的时间量。这些值中的每个值表示对存储器的特定块在NVM内的磨损程度的指示。因此,这些参数中的任一参数或全部参数均可由NTM控制器结合每NTM块编程计数或PEC使用来控制磨损均衡。NTM控制器可选择这些参数的一些组合(根据NTM控制器的预编程)以用于控制磨损均衡。
从图5的框502处开始,NTM控制器从ECC(诸如ECC或SSD控制器)获得关于NVM中的每个NTM存储体块的性能的信息,包括:1)平均/边缘解码延迟;2)典型FBC;3)校正子权重;4)全功率解码模式访问时间值。在框504处,NTM控制器确定或跟踪每NTM块编程计数(或每块PEC)。在框506处,NTM控制器使用在框502和504中获得的信息,诸如通过选择表现出相对小的损耗(如参数所指示)的用于新计算的NTM数据的编程(写入)的块,同时避免表现出相对更多或更高损耗(如参数所指示)的块来控制NTM存储体的块的耐久性平衡(磨损均衡)。在一些示例中,NTM控制器可基于已收集的信息来选择或建立用于耐久性平衡的策略或程序。例如,NTM控制器可选择耐久性策略,该耐久性策略操作以实现基于所选参数的执行目标的某种组合,诸如以最小化所有块上的FBC和每NTM块编程计数。
图6例示了可由NTM控制器(诸如图1的NTM控制器109或其他适当配备的设备)执行或控制的读取阈值校准的方法600。由于外部条件(诸如设备温度的变化或影响数据保留的其他因素)和/或由于大量编程/擦除(P/E)循环,NVM管芯中的读取阈值可能会偏离默认值。读取阈值校准通常由数据存储控制器执行并且可能是相对较长的过程。通过将NTM控制器(例如,控制器109)配置为独立于数据存储控制器(例如,控制器108)来控制NTM存储体(例如,存储体117)的存储块的读取阈值校准,可以避免数据存储控制器进行读取阈值校准的需要,或者至少减少数据存储控制器进行读取阈值校准的频率,使得整个DSD可以更快地操作,消耗更少的功率。例如,对于NTM的ECC(并应用于从NTM存储体读取的数据)可使用与对于数据存储控制器的ECC(并应用于从NVM管芯的其他部分读取的数据)不同的(和更高的、不太严格的或更宽松的)ECC失败率阈值。同样,对于NTM可使用与对于数据存储控制器不同的(以及更高的或更宽松的)P/E阈值。至少与对整个NVM管芯应用更低(且更严格)阈值的DSD相比,两者都可有效降低读取阈值校准的频率。
从图6的框602处开始,NTM控制器基于例如(a)经过的预定时间间隔、(b)ECC解码失败和/或(c)P/E循环超过P/E阈值来确定是否应重新校准NVM管芯的NTM存储体存储块的读取阈值水平。因此,例如,NTM控制器可被配置为每周或每月执行一次读取阈值校准。ECC解码失败信息可由NTM控制器的ECC控制器(例如,图2的ECC控制器322)提供。如果ECC失败率(或某一其他合适的失败度量)超过阈值,则可触发读取阈值校准。类似地,一旦NTM存储体存储块的P/E循环的总数超过P/E阈值,则可触发读取阈值校准。在框604处,响应于重新校准的确定,NTM控制器对NVM管芯中的NTM存储体的存储块执行读取阈值校准。
图7例示了可由具有NTM控制器(诸如图1的NTM控制器109)和单独的数据存储控制器(诸如图1的数据存储控制器108)的DSD或其他适当配备的设备执行或控制的方法700。在该示例中,在操作的第一阶段期间,当NTM控制器要优化的NTM损失函数高于某一阈值时,根据自定义策略操作DSD的固件部件(例如,不存在ECC编码或解码),并且禁用读取阈值校准以允许最快来的操作同时维护升高的BER数字。在第二阶段中,当损失函数下降到阈值以下时,实现更精细的操作,其中应用磨损均衡,更频繁地进行读取阈值校准,并且全面操作ECC。这样做可降低位错误率(BER)并允许更准确的NTM计算。
从图7的框701开始,NTM控制器(或其中实现NTM控制器的DSD)停用或禁用对NVM的NTM存储体部分的任何基于FW的ECC、读取阈值校准和磨损均衡操作,诸如原本可能由图1的数据存储控制器108的FW部件执行的操作。在框702处,NTM控制器从NTM存储体读取一批数据,并且执行NTM学习程序的迭代并估计损失函数(其也可称为成本函数或错误函数,并且通常表示与NTM相关联的RNN的预测错误)。在该第一阶段期间,在没有基于FW的ECC、读取阈值校准和磨损均衡功能的情况下执行框702的操作,并且因此从NTM存储体读取的数据可能具有未校正的错误。然而,在该初始阶段期间,此类错误不是问题,并且实际上,引入数据中的任何此类错误或“噪声”都可能有助于NTM程序向解收敛。就这一点而言,在NTM上运行的许多机器语言算法或程序可从由于避免作为正则化形式的ECC解码而产生的错误中获益。机器学习算法采用不同的技术,诸如丢失或数据增强,这些技术可向数据添加噪声以避免过度拟合。图7的方法允许在处理的第一阶段期间实现一种形式的正则化,使得可在无任何显式正则化程序的情况下实现正则化效果。
在框704处,NTM控制器评估保留验证数据(其也可从NTM存储体获得)的性能并更新对损失函数的估计。保留验证数据是NTM训练期间未使用的数据。在框704处,NTM控制器将损失函数(LF)的估计值与损失函数阈值(LFT)进行比较。只要丢失函数保持高于(或等于)损失函数阈值(如决策框708所指示),NTM控制器就继续迭代地执行框702、704和706的操作以读取更多数据并更新损失函数,而无需任何基于FW的ECC、读取阈值校准和磨损均衡操作。然而,一旦NTM收敛到损失函数下降到损失函数阈值以下的点,则NTM控制器(或其中安装有NTM控制器的DSD)在框710处激活对NVM的NTM存储体部分的基于FW的ECC、读取阈值校准和磨损均衡操作。这将用于减少原本可能阻止NTM程序完全收敛于解的错误。框710处的操作的开始标志着NTM程序的第一或初始级的完成以及NTM程序的第二或后续级的开始。需注意,尽管图7涉及基于FW的功能,但图7的程序也可用于选择性地激活/停用ECC、读取阈值校准和磨损均衡的任何基于软件的版本,诸如在NTM控制器内或其他地方实现的基于软件的版本。
到目前为止描述了例如使用闪存实现NTM的方法和装置。这些方法和装置可增强人工智能(AI)领域中的新兴技术,诸如NTM。上述双重独立级存储器管理系统允许DSD维护基于FW的存储器管理的常规特征(无需主机干预),同时还允许通过对NTM模块的自主直接NVM NAND处理实现有效的NTM-NAND协作。
在下文中,描述了与存储在NVM上的NTM存储体中的数据一起使用或与其他NVM数据一起使用的各种错误校正系统和技术。
与存储在NVM中的神经网络数据一起使用的基于多数规则的错误校正
一般来讲,对于NTM系统或媒体位错误率相当低的其他系统,多个位置的同一位同时出现位错误的几率非常低,并且因此可以通过使用多数获胜程序来加快处理。由于神经网络对失败的容忍度很高,因此出现两个位错误同时发生(即,排队)的情况非常罕见,一般不会影响神经网络的处理。也就是说,即使未经校正,任何此类错误也不太可能影响神经网络处理,神经网络处理可容忍此类错误并且如上文所讨论可提供一些有益的正则化。
因此,从NVM阵列读取的神经网络数据中的位不一致可针对每次访问进行制表,并且一旦超过指示太多位错误的阈值,则可由DSD或主机执行数据的重新写入/重新定位。对于如图1中配置的混合系统,NTM控制器可控制或执行该程序。在一些示例中,对数据进行加扰/解扰,以进一步减少在相同方向上发生任何位错误的可能性(即,倾向于比将二进制一翻转为二进制零更多地将二进制零翻转为二进制一),这可能是由于NVM阵列可靠性问题(诸如电荷丢失或读取/编程干扰)引起的,这些问题可能导致位错误一致并且因此被遗漏。因此,在ECC的情况下,利用相同数据的三个版本或三个副本的方案可允许强位错误校正,因为ECC可单独完成或同时考虑多个副本。需注意,存储相同数据的三个版本或三个副本的存储设备也可被视为存储该数据加上相同数据的两个副本。为了本文的一致性,术语“三个副本”将用于指代相同数据的总共三个版本,其中每个版本都是要存储的数据的副本,其由存储设备控制器发送到存储设备或主机。
图8例示了系统800,该系统将神经网络数据的三个副本存储在NVM 801的三个单独位置中:NVM位置0(802);NVM位置1(804);和NVM位置2(806)。所有三个副本均由DSD 808从NVM 801读取并应用于DSD的多数获胜控制器(例如,其可为图1的NTM控制器109的部件)或DSD的ECC控制器内的多数获胜电路(例如,其可为图1的数据存储控制器108的部件)。在数据之间存在不一致性的情况下,DSD 808的多数获胜部件确定“获胜者”。这可极大地加快校正能力,因为ECC引擎可对不一致的翻转位进行优先级排序以快速校正错误,否则使用标准ECC解码进行校正可能是耗时的。系统800还可提供RAID 1型性能提升(其中RAID 1由两个或更多个磁盘或存储设备上的一组数据的精确副本或镜像组成),因为数据可来源于任何可用的管芯,从而提高带宽。也就是说,存储器位置802、804和806可位于单独的管芯上。这同样适用于写入,因为数据可被写入到任何可用的位置并且随后作为复制副本被写入到另一位置。
这些程序可防止由外在缺陷引起的写入错误,因为对于任何合理成熟度的介质,两个或更多个位置在同一循环和同一页上发生失败的可能性非常小。该方案有效地适用于就地复制,因为可擦除一个位置,然后用源自其他副本的数据就地重新写入。其他副本也可供主机使用。这些程序也与上述磨损均衡块交换方法非常一致,因为块可一次交换一个副本。还需注意,NTM存储体或其他神经网络数据存储器的介质占用空间相对于DSD的总容量可能较低。(例如,NTM存储体可能消耗1TB NVM阵列中的1GB。)因此,与实现神经网络数据的这些特征相关联的任何开销不需要影响存储在DSD中的其他用户数据的其他常规处理。现在将参考下一组附图进一步描述这些和其他错误校正程序。
图9例示了可由具有NTM控制器的DSD(诸如由图2的NTM控制器208的ECC控制器232或图8的多数获胜控制器808)或用于控制/执行基于多数规则的程序的其他适当装备的设备来执行或控制的方法900,该基于多数规则的程序用于检测和校正存储在诸如具有图1的NTM存储体117的NVM中的神经网络数据中的错误。另选地,该程序可由ECC(诸如图1的数据存储控制器108的ECC)内的多数规则电路来执行,或者由DSD内的单独的多数规则部件或电路来执行。
如上所述,对于遇到多个位置的同一位同时出现位错误的几率非常低的系统,可以通过使用多数获胜程序来加快处理。以举例的方式,权重(诸如NTM权重)表示一种类型的数据,其在所存储的神经网络权重数据的两个单独存储位置处的同一位上同时出现位错误的可能性低于表示神经网络内的可接受容错的阈值。因此,可提前确定并量化用于特定应用的神经网络的可接受的容错水平。然后,可基于可接受的容错水平设置阈值的合适值。如果要存储的权重表现出位错误(在两个单独的存储位置处的同一位处同时出现)低于阈值的可能性,则可使用多数规则错误校正程序;否则可使用传统ECC。因此,可提供一种设备,该设备确定输入数据的类型并对规则数据(例如,用户数据、控制数据或不是神经网络数据(即,非神经网络数据)的其他数据)执行正常ECC,但对神经网络数据(诸如神经网络权重)执行单独的多数规则错误校正程序。还可在将权重数据存储在三个位置之前对权重数据进行加扰,然后在读回权重数据并应用多数规则程序之后对权重数据进行解扰。
从框902开始,NTM控制器将神经网络的神经网络数据的三个副本存储在NVM阵列中,诸如将RNN的一批NTM数据存储在NVM阵列的NTM存储体中(其中在两个单独的存储位置处的同一位上同时出现位错误的可能性低于表示神经网络内的可接受容错的阈值,和/或神经网络被配置为使得权重中的未校正错误增加网络的正则化,并且其中可在存储数据之前对数据进行加扰)。再次参见图8的示例,其中相同数据的三个副本存储在三个NVM位置中。这三个位置可位于不同的NVM管芯上。随后,在框904处,作为机器学习程序或其他数据处理程序的一部分,NTM控制器从NVM阵列读取神经网络数据的三个副本。这可以是迭代程序的一次迭代的一部分,如图7的迭代程序。
在框906处,NTM控制器通过以下步骤对从NVM阵列读取的神经网络数据的三个副本执行或控制多数规则错误校正程序:1)检测从NVM阵列读取的神经网络数据的三个副本之间的差异;2)基于多数规则策略来识别神经网络数据的正确版本;以及3)通过例如在NVM阵列内的新存储器位置中重新存储或重新写入神经网络数据的正确版本,或者擦除不正确副本的存储器位置并将数据的校正版本写入到已被擦除的存储器位置,或者以其他方式刷新数据(并且如果先前被加扰,则最终对数据进行解扰),将神经网络数据的正确版本重新存储或重新写入NVM阵列中。
可例如通过将每个副本读取到锁存器中并且然后检测所锁存数据之间的任何位差(例如,在副本中的一者中为1但在其他两个副本中为0的位位置)来执行对三个副本之间的差异的检测。可例如通过选择两个副本中相同的位值(例如,0)并拒绝不同的位(例如,1)来逐位执行基于多数规则策略对神经网络数据的正确版本的识别。也就是说,对于存储三个副本的系统,多数规则策略可以是两个匹配位值优先于单个不同位。更一般而言,对于存储奇数个副本(例如,五个副本)的系统,多数位值胜出。对于存储四个副本的系统,多数规则策略可以是三个匹配位优先于单个不同位,并且进一步地,平局(两个1位对两个0位)被认为是未决定的,并且因此可应用更复杂的ECC解码。更一般而言,对于存储大于二的偶数个副本(例如,四个或六个副本)的系统,多数规则策略可为大多数匹配位优先于少数匹配位,并且进一步地,任何约束(例如,三个1位对三个0位)被视为未决的,并且因此可应用更复杂的ECC解码。实际上,存储三个副本通常就足够了,但如果BER较高,则可能需要存储更多副本。根据DSD的需要,一旦应用多数规则策略来解决不一致性,则可将正确的数据重新写入NVM(并再次存储为三个副本),或者可由NTM处理正确的数据或将正确的数据发送到主机,或者可采取适当的行动。如果数据被重写,则可将其写入一组新的存储位置(其中原始存储位置被标记用于垃圾收集),或者可擦除具有不正确数据的原始存储器位置并将经校正的数据写入到该存储器位置而不干扰其他正确副本。如上所述,各种副本的存储器位置可能位于单独的管芯上。
与存储在NVM中的神经网络数据一起使用的基于不一致性计数的错误检测
在数据保留问题的情况下,混合DSD的NTM控制器(例如,图1的DSD 104的控制器109)可基于零和一的计数向主机发出存在问题的信号。当数据通过NTM控制器时,NTM控制器可跟踪零与一之间的累加增量(D)。(这假设数据基本上等于零和一,如在通过加密或通过诸如信道加扰器的其他手段对数据进行加扰的情况下所预期的那样)。在数据的任何解扰之前进行零/一的计数。在一个示例中,为了计算或计数不一致性,可对1应用增量并且可对0应用减量。这可在由NTM控制器处理的数据流上进行。如果不一致性超过预定或自适应可调整阈值,则可由NTM控制器向主机标记该不一致性,或者NTM控制器可刷新数据或采取其他行动。该阈值可取决于正在执行的特定NTM程序的容错以及正在使用的任何ECC系统(诸如图2的ECC 232)的校正能力。通过存储不一致性计数以便随时间进行比较,可更鲁棒地检测不一致性的改变或变化。例如,可将最近的不一致性计数与来自较早(例如,前一天或前一周)的不一致性计数进行比较,使得可检测不一致性计数的趋势,该趋势可指示存储NTM数据的特定管芯或管芯的特定部分中的数据保留的降级,因而触发磨损均衡、读取阈值校准或其他维护程序。
需注意,经加扰数据在零与一之间可能仍然存在一些差异(D),可通过消除数据中的原始不一致性来补偿该差异以提高读取时计数的准确性。例如,可由NTM控制器记录零对一计数中的任何初始或原始差分(D)或固有偏差,然后将其应用于新确定的计数以补偿初始偏差。当使用SLC时,不一致性可能也很有用,其比MLC具有性能和可靠性优势。在SLC的情况下,对于特定的存储降级问题,所有位都倾向于在同一方向上移动(诸如随着时间的推移,读取电压阈值的漂移导致零被错误地读取为一,反之亦然),并且因此可使用计数中不断增长的不一致性来检测特定降级机制,使得可采取适当的行动(例如,读取阈值校准)来解决特定降级机制。在较高的每单元位使用(例如,MLC)中,NVM NAND页由具有用于组合感测以读取数据的逻辑操作的多个感测形成,并且因此任何位漂移可能不像SLC那样相干。然而,一些MLC感测比其他感测更容易出错,并且因此可作为可检测的不一致性脱颖而突出。一般来讲,可能存在更多与此类不一致性相关联的噪声,并且因此与SLC相比可使用不同的阈值。
图10例示了可由具有NTM控制器的DSD(诸如由图2的NTM控制器208的数据加扰器控制器234)或用于控制/执行基于不一致性计数的程序的其他适当装备的设备执行或控制的方法1000,该基于不一致性计数的程序用于检测诸如利用图1的NTM存储体117存储在NVM中的神经网络数据中的错误。另选地,该程序可由DSD内的其他部件或电路来执行。
从框1002开始,NTM控制器将经加扰的神经网络数据存储在NVM阵列中,诸如将经加扰的NTM数据存储在NVM阵列中的NTM存储体中。如上所述,在一些示例中,数据优选地存储在SLC元件中。数据可由数据加扰器或ECC部件加扰(由于其错误编码,ECC部件倾向于对数据进行加扰或随机化)。随后,在框1004处,作为机器学习程序或其他数据处理程序的一部分,NTM控制器从NVM阵列读取经加扰的神经网络数据。这可以是迭代程序的一次迭代的一部分,如图7的迭代程序。
在框1006处,NTM控制器维护经加扰数据中的二进制一的计数(或数量)和二进制零的计数(或数量)中的不一致性的累加总和。在一个示例中,经加扰数据的每个块或字线被读取到锁存器中,并且锁存器电路输出表示不一致性计数的值。在一个特定示例中,如果在数据的给定部分中存在512位,并且250位为二进制零且262位为二进制一,则一与零的不一致性为12,这指示数据的该特定部分内有利于一的偏差。随着数据的每个新部分被读入,累加总和被更新以反映最新的不一致性位计数。需注意,在框1006内,NTM控制器可补偿经加扰数据中的任何初始或固有偏差。如上文所解释,经加扰数据的零与一之间仍可能存在某一差异。例如,如果ECC用于“加扰”数据,则特定的ECC程序可能导致一与零之间的偏差。因此,初始偏差可由NTM控制器检测或确定并应用于每个新的不一致性计数以补偿数据中的原始不一致性。
在框1008处,NTM控制器将累加总和与预定(或可调整)阈值进行比较。如上所述,该阈值可取决于特定NTM程序的容错以及所使用的任何ECC系统的校正能力。否则,可由工程师对具有NTM控制器和ECC系统的测试CSD执行常规实验,以识别可编程到要部署给消费者的DSD中的合适阈值。在一些实施方案中,可由DSD基于各种因素来改变阈值,诸如ECC当前被设置为执行强ECC还是相对较弱的ECC。在框1010处,响应于确定累加总和不超过不一致性阈值(即,数据表现为有效),NTM控制器对从NVM阵列读取的神经网络数据进行解扰并根据NTM机器学习程序处理该数据。
在框1010处,响应于确定累加总和超过不一致性阈值(即,由于存储读取或写入错误,数据表现为无效),NTM控制器生成神经网络数据中的错误的指示。响应于错误指示,DSD可通知主机并向NVM阵列应用错误缓解,诸如读取阈值重新校准、磨损均衡等。另外,从NVM中丢弃并擦除数据,然后在可能的情况下从主机获得正确的数据,由NTM控制器重新生成正确的数据,或者从DSD中的易失性存储器恢复正确的数据(如果在易失性存储器中可用的话)。在一些情况下,NTM控制器可能需要重置为先前状态以重新生成数据。
图11例示了可由具有NTM控制器的DSD(诸如由图2的NTM控制器208的数据加扰器控制器234)或用于控制/执行基于不一致性计数的程序的其他适当装备的设备执行或控制的方法1100,该基于不一致性计数的程序用于检测诸如利用图1的NTM存储体117存储在NVM中的神经网络数据内的不一致性计数随时间的趋势。另选地,该程序可由DSD内的其他部件或电路来执行。在框1102处开始,NTM控制器周期性地存储存储在NVM阵列内的SLC元件(诸如NTM存储体的SLC元件)中的NTM神经网络数据的不一致性计数。例如,在NTM程序的每次迭代之后,可存储针对该程序从NVM读取的数据的不一致性计数。可针对整个NTM存储体或其部分来收集和存储该信息。
在框1104处,NTM控制器将最近的不一致性计数与先前计数进行比较以检测不一致性计数的趋势(如果有的话),该趋势指示NTM存储体或其部分内(诸如NTM存储体的SLC存储元件内)的数据保留的降级。例如,如果一周内的SLC不一致性计数与前一周相比显著更大,则这可能指示NTM存储体SLC元件的降级。此外,NTM控制器检查趋势的方向,例如朝向更多二进制零的趋势或朝向更多二进制一的趋势。在框1106处,NTM控制器尝试基于NTM存储体整体或其部分随时间的趋势方向来确定数据保留降级的特定机制或方向。例如,在特定DSD设计中,遍及NTM存储体的所有SLC元件朝向更多二进制一超过二进制零的漂移可指示朝向增加读取阈值的漂移,而朝向更多二进制零超过二进制一的漂移可指示减小读取阈值。该信息可用于使读取阈值校准程序更有效。作为另一示例,与第二部分相比,在NTM存储体的第一部分内朝向更多二进制一超过二进制零的漂移可指示第一部分中的磨损。该信息可用于使磨损均衡程序更有效。否则,可由工程师对设计有NTM控制器的CSD执行常规实验,以识别不一致性计数的哪些趋势对应于哪些数据保留降级机制,诸如读取电压漂移或一般磨损。在框1108处,NTM控制器向NVM阵列应用特定错误缓解程序以诸如通过应用读取阈值重新校准或磨损均衡来解决特定机制。需注意,不一致性计数、趋势和缓解程序对于主机可能是透明的,即,不需要通知主机并且主机不需要响应此类信息。
实际上,上述程序中的任一程序对于主机可能是完全透明的,使得主机不知道ECC、不一致性、冗余、重新写入等。因此,对于主机,DSD仍然可以有效地看起来像开放通道(例如,无中间FTL),使得主机认为它正在实现主机程序员希望实现的任何算法,并且本文描述的程序可以改善后台的可靠性。可采用NVM express(NVMe)。
还需注意,本文描述的方法可用于智能或受管理的NAND,诸如具有微控制器单元(MCU)、高级逻辑、CMOS键合阵列(CBA)等。这些方法为SSD FW/专用集成电路(ASIC)提供了透明度,这对于FW管理原本可能出现问题的存储器位置很有帮助,诸如在引导中使用的位置(例如,文件系统、FW副本等),其中FW媒体管理算法可能仅具有最少的功能。
附加的示例性方法和装置
图12示出了根据本公开的一个或多个方面配置的装置1200的实施方案。装置1200或其部件可在能够执行操作的任何合适的装置或设备(诸如具有数据存储控制器和单独的RNN控制器DSD)内体现或实现。装置1200包括具有第一部分1204和第二部分1206的NVM阵列1202,该第二部分被配置为用作RNN存储体,诸如NTM存储体。装置1200还包括数据存储控制器1208,该数据存储控制器耦接到NVM阵列1202并且被配置为至少访问NVM阵列的第一部分1204,该第一部分具有分配给数据存储控制器1208的物理存储器地址。装置1200还包括RNN控制器1210(诸如NTM控制器),该RNN控制器耦接到NVM阵列1202并且被配置为访问NVM阵列的第二部分1206,该第二部分具有分配给RNN控制器1210的物理存储器地址。需注意,在一些实施方案中,数据存储控制器1208被进一步配置为访问NVM阵列的第二部分1206。也就是说,NVM阵列的第二部分1206的物理存储器地址被非排他地分配给RNN控制器1210,因而允许数据存储控制器1208例如对整个NVM阵列1202执行磨损均衡或其他维护操作。该访问还允许数据存储控制器1208例如在两阶段NTM程序的第二阶段期间向RNN存储体1206中的数据应用基于FW的FTL程序,如上所述。
图13概括地例示了根据本公开的一些方面的另一过程1300。过程1300可在能够执行耦接到NVM阵列的操作的任何合适的装置或设备(诸如图12的装置)内发生。在框1302处,该设备使用数据存储控制器访问NVM阵列的至少第一部分,该NVM阵列的该第一部分具有分配给数据存储控制器的物理存储器地址。在框1304处,该设备使用RNN控制器访问NVM阵列的第二部分,该NVM阵列的该第二部分具有分配给RNN控制器的物理存储器地址,其中该NVM阵列的该第二部分被配置为用作RNN存储体。如上文所讨论的,在一些实施方案中,数据存储控制器还被配置为访问NVM阵列的第二部分,即,NVM阵列的第二部分的物理存储器地址被非排他地分配给RNN控制器,因而允许数据存储控制器例如对整个NVM阵列执行磨损均衡或其他维护操作,或者在两阶段NTM程序的第二阶段期间向RNN存储体中的数据应用基于FW的FTL程序。
图14示出了根据本公开的一个或多个方面配置的装置1400的实施方案。装置1400或其部件可在能够执行操作的任何合适的装置或设备(诸如DSD)内体现或实现。装置1400包括NVM阵列1402和控制器1404(诸如数据存储控制器或单独的RNN控制器),该控制器耦接到NVM阵列1402并且具有处理器,该处理器被配置为:1)将神经网络的神经网络数据的至少三个副本存储在NVM阵列中,其中该神经网络数据包括权重;2)诸如在NTM程序的迭代期间,从NVM阵列读取神经网络数据的至少三个副本;以及3)对从NVM阵列读取的神经网络数据的至少三个副本执行多数规则错误校正程序。以上描述了详细示例。
图15概括地示出了根据本公开的一些方面的流程1500。过程1500可在能够执行耦接到NVM阵列的操作的任何合适的装置或设备(诸如图14的装置)内发生。在框1502处,该设备将神经网络的神经网络数据的至少三个副本(诸如NTM权重数据)存储在NVM阵列中。在框1504处,该设备从NVM阵列读取神经网络数据的至少三个副本。这可在NTM程序的后续迭代期间发生。在框1506处,该设备对从NVM阵列读取的神经网络数据的至少三个副本执行多数规则错误校正程序。以上描述了详细示例。
图16示出了根据本公开的一个或多个方面配置的装置1600的实施方案。装置1600或其部件可在能够执行操作的任何合适的装置或设备(诸如DSD)内体现或实现。装置1600包括NVM阵列1602和控制器1604(诸如存储控制器或单独的RNN控制器),该控制器耦接到NVM阵列1602并且具有处理器,该处理器被配置为:1)将经加扰的神经网络存储在NVM阵列1602中;2)从NVM阵列1602读取经加扰的神经网络;3)维护经加扰的神经网络数据中的二进制一的计数(或数量)和二进制零的计数(或数量)中的不一致性的累加总和;4)响应于确定累加总和不超过不一致性阈值,对从NVM阵列1602读取的神经网络数据进行解扰;以及5)响应于确定累加总和超过不一致性阈值,生成神经网络数据中的错误的指示。以上描述了详细示例。
图17概括地例示了根据本公开的一些方面的过程1700。过程1700可在能够执行耦接到NVM阵列的操作的任何合适的装置或设备(诸如图14的装置)内发生。在框1702处,该设备将经加扰的神经网络数据(诸如经加扰的NTM数据)存储在NVM阵列中。在框1704处,该设备从NVM阵列读取经加扰的神经网络数据,如可在NTM程序的下一次迭代期间执行的。在框1706处,该设备维护经加扰的神经网络数据中的二进制一的计数(或数量)和二进制零的计数(或数量)中的不一致性的累加总和。在框1708处,响应于确定累加总和不超过不一致性阈值,该设备对从NVM阵列读取的神经网络数据进行解扰。在框1710处,响应于确定累加总和超过不一致性阈值,该设备替代地生成神经网络数据中的错误的指示。例如,该错误可被发送到连接到该设备的主机,或者可被发送到该设备的其他部件以进行补救行动。如已解释的,该设备可通过重新存储或刷新数据和/或通过采取行动以解决读取阈值电压漂移、NVM磨损等来响应错误指示。以上描述了详细示例。
具有NVM阵列的示例性装置
图18示出了根据本公开的一个或多个方面配置的装置1800的实施方案。装置1800或其部件可在DSD、支持数据存储的其他类型的设备内体现或实现。在各种具体实施中,装置1800或其部件可以是处理器、控制器、计算设备、个人计算机、便携式设备、或工作站、服务器、个人数字助理、数字相机、数字电话、娱乐设备、医疗设备、自动驾驶车辆控制设备或任何其他存储、处理或使用数据的电子设备的部件。
装置1800通信地耦接到NVM阵列1801,该NVM阵列包括一个或多个存储器管芯1804,每个存储器管芯可包括物理存储器阵列1806(例如,NAND块),其中存储器管芯中的至少一个存储器管芯包括NTM存储体1808(或其他RNN或MANN存储体)。物理存储器阵列1806可通信地耦接到装置1800,使得装置1800可从物理存储器阵列1806读取或感测信息,并将信息写入或编程到该物理存储器阵列。也就是说,物理存储器阵列1806可耦接到装置1800的电路,使得物理存储器阵列1806可由装置1800的电路访问。需注意,并未示出存储器管芯的所有部件。管芯可包括例如阵列外处理电路(例如,阵列下或阵列旁电路)以及输入/输出部件等。装置1800与NVM阵列1801的存储器管芯1804之间的连接可包括例如一个或多个总线。
装置1800包括通信接口1802、NTM控制器1810和数据存储控制器1811。NTM控制器1810和数据存储控制器1811可位于装置1800内的单独芯片(例如,单独ASIC)上。在其他实施方案中,NTM控制器1810和数据存储控制器1811可位于同一芯片上。这些部件可经由合适的部件(由图18中的连接线大体表示)彼此耦接和/或放置成彼此电连通以及与NVM阵列1801电连通。尽管未示出,但可以提供其他电路,诸如定时源、外围设备、电压调节器和电源管理电路,这些在本领域中是众所周知的并且因此将不再进一步描述。
通信接口1802提供用于通过传输介质与其他装置进行通信的构件。在一些具体实施中,通信接口1802包括适于促进信息相对于系统中的一个或多个设备双向传送的电路和/或编程(例如,程序)。在一些具体实施中,通信接口1802可被配置用于基于有线的通信。例如,通信接口1802可以是总线接口、发送/接收接口、或某种其他类型的信号接口,包括用于输出和/或获得信号(例如,从SSD输出信号和/或将信号接收到SSD中)的电路。通信接口1802用作用于接收的构件和/或用于传输的构件的一个示例。
NTM控制器1810和数据存储控制器1811包括被布置或配置为获得、处理和/或发送数据,控制数据访问和存储,发布或响应命令,以及控制其他期望操作的模块和/或电路。例如,各种模块和/或电路可被实现为一个或多个处理器、一个或多个控制器和/或被配置为执行功能的其他结构。根据本公开的一个或多个方面,模块/电路可适于执行本文描述的各种特征、过程、功能、操作和/或例程。例如,各种模块和/或电路可被配置为执行相对于图1至图17描述的步骤、功能和/或过程。
需注意,在一些实施方案中,NTM控制器1810的特征被实现为非确定性软件模块,而数据存储控制器1811的特征被实现为确定性FW或HW电路。各种特征在图18中被称为电路/模块,因为在至少一些实施方案中,NTM控制器1810的特征中的至少一些特征可被实现为电路,并且数据存储控制器1811的特征中的至少一些特征可以软件实现。此外,在一些实施方案中,NTM控制器1810的一些特征可在存储器管芯1804上实现为阵列下或阵列旁电路。
如本文所用,关于处理模块/电路的术语“适于”可指模块/电路进行配置、采用、实现和/或编程中的一个或多个操作以执行根据本文描述的各种特征的特定过程、功能、操作和/或例程。模块/电路可包括专用处理器(诸如专用集成电路(ASIC)),该专用处理器用作用于执行结合图1至图17描述的操作中的任一操作的构件(例如,用于执行该操作的构件)。模块/电路用作用于处理的构件的示例。在各种具体实施中,模块/电路可至少部分地提供和/或并入以上针对所示的各种实施方案中的部件描述的功能。
根据装置1800的至少一个示例,NTM控制器1810可包括被配置用于访问分配给NTM控制器的NVM物理存储器地址(例如,与NTM存储体1808相关联的地址)的电路/模块1820。物理存储器地址到NTM控制器1810的分配可在引导时由引导电路(未示出)执行,或者例如由耦接到装置1800的主机执行或控制。NTM控制器1810还可包括以下中的一者或多者:电路/模块1822,该电路/模块被配置用于使用从NTM存储体1808读取的NTM数据来确定NTM输出值(例如,用于执行NTM机器学习程序的各种迭代以生成经训练的神经网络参数(诸如经训练的突触权重等)以供输出到主机);FTL电路/模块1824,该FTL电路/模块被配置用于与NTM存储体1808一起使用,诸如ECC电路/模块、读取阈值校准电路/模块和磨损均衡电路/模块等(其可不同于数据存储控制器1811的可向整个NVM阵列1801应用FW FTL的对应FTL部件,并且在一些实施方案中可从NTM控制器1810中完全省略);电路/模块1826,该电路/模块被配置用于控制NTM程序的第一级(例如,如图7所示);电路/模块1828,该电路/模块被配置用于确定NTM损失函数(例如,如图7所示);电路/模块1830,该电路/模块被配置用于控制NTM存储器管理策略(其可不同于由数据存储控制器1811应用的存储器管理策略);电路/模块1831,该电路/模块被配置用于控制多数规则错误校正程序或策略;电路/模块1832,该电路/模块被配置用于控制数据加扰;电路/模块1833,该电路/模块被配置用于控制不一致性计数程序;和电路/模块1835,该电路/模块被配置用于控制最多使用块/最少使用块磨损均衡程序。
根据装置1800的至少一个示例,数据存储控制器1811可包括电路/模块1834,该电路/模块被配置用于访问NVM阵列1801内的所有物理存储器地址或那些地址的某一部分(或者,在一些实施方案中,未分配给NTM存储体1808的所有地址)。物理存储器地址到数据存储控制器1811的分配可在引导时由引导电路(未示出)执行,或者例如由耦接到装置1800的主机执行或控制。数据存储控制器1811还可包括以下中的一者或多者:FTL电路/模块1836,该FTL电路/模块被配置用于与NVM阵列1801一起使用,诸如ECC电路/模块、读取阈值校准电路/模块和磨损均衡电路/模块等(其可不同于NTM控制器1810的对应FTL部件,该对应FTL部件仅向NTM存储体1808应用FW FTL(如果有的话));电路/模块1838,该电路/模块被配置用于控制NTM程序的第二级(例如,如图7所示);电路/模块1840,该电路/模块被配置用于控制非NTM存储器管理策略(其可不同于由NTM控制器1810应用于NTM存储体1808的存储器管理策略)。
在至少一些示例中,可提供用于执行图18所例示的功能和/或本文例示或描述的其他功能的构件。例如,该构件可包括以下中的一者或多者:用于访问分配给NTM控制器的NVM物理存储器地址(例如,与NTM存储体1808相关联的地址)的构件,诸如电路/模块1820;用于使用从NTM存储体1808读取的NTM数据来确定NTM输出值(例如,用于执行NTM机器学习程序的各种迭代以生成经训练的神经网络参数(诸如经训练的突触权重等)以供输出到主机)的构件,诸如电路/模块1822;被配置用于向NTM存储体1808应用FTL操作,诸如ECC、读取阈值校准和磨损均衡等(其可不同于数据存储控制器1811的对应FTL操作)的构件,诸如电路/模块1824;用于控制NTM程序的第一级(例如,如图7所示)的构件,诸如电路/模块1826;用于确定NTM损失函数(例如,如图7所示)的构件,诸如电路/模块1828;用于控制NTM存储器管理策略(其可不同于由数据存储控制器1811应用的存储器管理策略)的构件,诸如电路/模块1830;用于控制多数规则错误校正程序或策略的构件,诸如电路/模块1831;用于控制数据加扰的构件,诸如电路/模块1832;用于控制不一致性计数程序的构件,诸如电路/模块1833;用于控制最多使用块/最少使用块磨损均衡程序的构件,诸如电路/模块1835;用于访问NVM阵列1801内的所有物理存储器地址或那些地址的某一部分(或者,在一些实施方案中,未分配给NTM存储体1808的所有地址)的构件,诸如电路/模块1834;用于向NVM阵列1801应用FTL操作,诸如ECC、读取阈值校准和磨损均衡等(其可不同于NTM控制器1810的对应FTL操作)的构件,诸如电路/模块1836;用于控制NTM程序的第二级(例如,如图7所示)的构件,诸如电路/模块1838;和被配置用于控制非NTM存储器管理策略(其可不同于由NTM控制器1810应用于NTM存储体1808的存储器管理策略)的构件,诸如电路/模块1840。
在本公开的又一方面,提供了一种非暂态计算机可读介质,该非暂态计算机可读介质具有一个或多个指令,该一个或多个指令在由DSD控制器中的处理电路或软件模块执行时致使该控制器执行以上列出的功能或操作中的一个或多个功能或操作。
在至少一些示例中,可提供用于执行图18所例示的功能和/或本文例示或描述的其他功能的软件代码。例如,代码可包括以下中的一者或多者:用于访问分配给NTM控制器的NVM物理存储器地址(例如,与NTM存储体1808相关联的地址)的代码;用于使用从NTM存储体1808读取的NTM数据来确定NTM输出值(例如,用于执行NTM机器学习程序的各种迭代以生成经训练的神经网络参数(诸如经训练的突触权重等)以供输出到主机)的代码;用于向NTM存储体1808应用FTL操作,诸如ECC、读取阈值校准和磨损均衡等(其可不同于数据存储控制器1811的对应FTL操作)的代码;用于控制NTM程序的第一级(例如,如图7所示)的代码;用于确定NTM损失函数(例如,如图7所示)的代码;用于控制NTM存储器管理策略(其可不同于由数据存储控制器1811应用的存储器管理策略)的代码;用于控制多数规则错误校正程序或策略的代码;用于控制数据加扰的代码;用于控制不一致性计数程序的代码;用于控制最多使用块/最少使用块磨损均衡程序的代码;用于访问NVM阵列1801内的所有物理存储器地址或那些地址的某一部分(或者,在一些实施方案中,未分配给NTM存储体1808的所有地址)的代码;用于向NVM阵列1801应用FTL操作,诸如ECC、读取阈值校准和磨损均衡等(其可不同于NTM控制器1810的对应FTL操作)的代码;用于控制NTM程序的第二级(例如,如图7所示)的代码;以及用于控制非NTM存储器管理策略(其可不同于由NTM控制器1810应用于NTM存储体1808的存储器管理策略)的代码。
附加方面
本文所述的处理电路中的至少一些通常可适于处理,包括存储在存储介质上的编程代码的执行。如本文所用,术语“代码”或“编程”应被广义地解释为包括但不限于指令、指令集、数据、代码、代码段、程序代码、程序、编程、子程序、软件模块、应用程序、软件应用程序、软件包、例程、子例程、对象、可执行文件、执行线程、规程、功能等,无论称为软件、固件、中间件、微代码、硬件描述语言还是其他。
本文描述的处理电路中的至少一些可被布置为获得、处理和/或发送数据,控制数据访问和存储,发布命令,以及控制其他期望的操作。在至少一个示例中,处理电路可包括被配置为实现由适当介质提供的期望编程的电路。例如,处理电路可被实现为一个或多个处理器、一个或多个控制器、和/或被配置为执行可执行编程的其他结构。处理电路的示例可包括被设计用于执行本文所描述的功能的通用处理器、数字信号处理器(DSP)、ASIC、现场可编程门阵列(FPGA)、或其他可编程逻辑部件、离散门或晶体管逻辑、分立硬件部件、或其任何组合。通用处理器可以包括微处理器,以及任何常规处理器、控制器、微控制器、或状态机。处理电路中的至少一些还可被实现为计算部件的组合,诸如控制器和微处理器、多个微处理器、与ASIC和微处理器结合的一个或多个微处理器、或任何其他数量的变化配置的组合。本文指出的处理电路的这些示例用于说明,并且还可预期在本公开范围内的其他合适配置。
本文所描述主题的各方面可在任何合适的NAND闪存存储器(诸如3D NAND闪存存储器)中实现。半导体存储器设备包括易失性存储器设备,诸如DRAM或SRAM设备,NVM设备,诸如ReRAM、EEPROM、闪存存储器(其也可视为EEPROM的子集)、铁电随机存取存储器(FRAM)和MRAM,以及能够存储信息的其他半导体元件。每种类型的存储器设备可具有不同的配置。例如,闪存存储器设备可以NAND配置或NOR配置进行配置。
该存储器设备可由无源元件和/或有源元件以任何组合形成。举非限制性示例而言,无源半导体存储器元件包括ReRAM设备元件,该无源半导体存储器元件在一些实施方案中包括电阻率切换存储元件诸如反熔丝、相变材料等,以及任选地包括导引元件诸如二极管等。进一步举非限制性示例而言,有源半导体存储器元件包括EEPROM和闪速存储器设备元件,该有源半导体存储器元件在一些实施方案中包括具有电荷存储区域的元件,诸如浮栅、导电纳米粒子或电荷存储介电材料。
通常需要相关联的电路来操作存储器元件并与存储器元件通信。作为非限制性示例,存储器设备可具有用于控制并驱动存储器元件以实现诸如编程和读取的功能的电路。该相关联的电路可与存储器元件位于同一基板上和/或位于单独的基板上。例如,用于存储器读取-写入操作的控制器可定位在单独的控制器芯片上和/或定位在与存储器元件相同的基板上。本领域的技术人员将认识到,本文描述的主题不限于所述的二维和三维示例性结构,但涵盖如本文所述的并且如本领域的技术人员所理解的本主题的实质和范围内的所有相关存储器结构。
提供本文阐述的示例以示出本公开的某些概念。上面示出的装置、设备或部件可以被配置为执行本文描述的方法、特征或步骤中的一个或多个。本领域普通技术人员将理解,这些本质上仅是示例性的,并且其他示例可以落入本公开和所附权利要求的范围内。基于本文的教导内容,本领域技术人员应理解,本文公开的方面可以独立于任何其他方面来实现,并且这些方面中的两个或更多个可能以各种方式组合。例如,可以使用本文阐述的任何数量的方面来实现一种装置或可以实践一种方法。此外,除了或替代本文阐述的一个或多个方面,可以使用其他结构、功能、或结构和功能来实现这种装置或可以实践这种方法。
下文已经参考根据本公开实施方案的方法、装置、系统和计算机程序产品的示意性流程图和/或示意性框图描述了本公开的各方面。应当理解,示意性流程图和/或示意性框图的每个框,以及示意性流程图和/或示意性框图中的框的组合可由计算机程序指令实现。这些计算机程序指令可被提供给计算机的处理器或其他可编程数据处理设备以生产机器,使得经由该处理器或其他可编程数据处理设备执行的指令创建用于实现在示意性流程图和/或示意性框图的一个或多个框中指定的功能和/或动作的装置。
本文描述的主题可能以硬件、软件、固件、或它们的任何组合来实现。这样,本文所使用的术语“功能”、“模块”等可以指代硬件,其也可以包括软件和/或固件部件,以用于实现所描述的特征。在一个示例性具体实施中,本文描述的主题可以使用其上存储有计算机可执行指令的计算机可读介质来实现,这些计算机可执行指令在由计算机(例如,处理器)执行时控制计算机以执行本文描述的功能。适用于实现本文描述的主题的计算机可读介质的示例包括非暂态计算机可读介质,诸如磁盘存储器设备、芯片存储器设备、可编程逻辑设备和专用集成电路。此外,实现本文描述的主题的计算机可读介质可以位于单个设备或计算平台上,或者可以分布在多个设备或计算平台上。
还应当指出,在一些另选的具体实施中,框中示出的功能可以不按图中所示的顺序发生。例如,事实上,连续示出的两个框可基本上同时执行,或者这些框有时可以采用相反的顺序执行,这取决于所涉及的功能。可以设想在功能、逻辑或效果上等同于所示附图的一个或多个框或其部分的其他步骤和方法。尽管在流程图和/或框图中可以采用各种箭头类型和线条类型,但是应当理解这些箭头类型和线条类型不限制相应实施方案的范围。例如,箭头可以指示所描绘的实施方案的枚举的步骤之间的未指定持续时间的等待或监视时段。
上述各种特征和过程可以彼此独立地使用,或者可以以各种方式组合。所有可能的组合和子组合均旨在落入本公开的范围内。此外,在一些具体实施中可以省略某些方法、事件、状态或过程块。本文描述的方法和过程也不限于任何特定序列,并且与其相关的块或状态可以以适当的其他序列执行。例如,所描述的任务或事件可以以不同于具体公开的顺序执行,或者多个可以在单个块或状态中组合。示例性任务或事件可以串行、并行或以某种其他合适的方式执行。可以向所公开的示例性实施方案添加任务或事件或从其中删除任务或事件。本文描述的示例性系统和部件可以与所描述的不同地配置。例如,与所公开的示例性实施方案相比,可以添加、移除或重新布置元件。
本领域技术人员将理解,可以使用多种不同技艺和技术中的任何一种来表示信息和信号。例如,在以上整个说明书中可能引用的数据、指令、命令、信息、信号、位、符号和芯片可以由电压、电流、电磁波、磁场或粒子、光场或粒子、或它们的任何组合来表示。
词语“示例性”在本文中用于表示“用作示例、实例或说明”。本文中描述为“示例性”的任何方面并非一定被解释为比其他方面更优选或更具优势。同样,术语“方面”不要求所有方面均包括所讨论的特征、优点或操作模式。
虽然以上描述包含本发明的许多具体实施方案,但这些不应解释为对本发明范围的限制,而是作为其具体实施方案的示例。因此,本发明的范围不应由例示的实施方案确定,而应由所附权利要求及其等同物确定。此外,本说明书通篇所提到的“一个实施方案”、“实施方案”或相似语言是指结合所述实施方案所描述的特定特征、结构或特性被包含在本公开的至少一个实施方案中。因此,本说明书通篇出现的短语“在一个实施方案中”、“在实施方案中”和相似语言可以但不一定全部是指同一个实施方案,而是指“一个或多个但不是所有实施方案”,除非另有明确说明。
本文所使用的术语仅出于描述特定方面的目的并且不旨在限制这些方面。如本文所用,单数形式“一”、“一个”和“该”也旨在包括复数形式(即,一个或多个),除非上下文另外明确指出。枚举的项目列表并不意味着项目中的任何或所有项目是互相排斥的和/或相互包容的,除非另有明确说明。应当进一步理解的是,除非另外明确指明,否则本文中使用的术语“包含”、“含有”、“包括”、“具有”及其变型意指“包括但不限于”。也就是说,这些术语可以指定所陈述的特征、整数、步骤、操作、元素或部件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元素、部件、或其组的存在或添加。此外,应当理解,单词“或”具有与布尔运算符“OR”相同的含义,也就是说,它包含“或者”和“两者”的可能性,并且不限于“异或”(“XOR”),除非另有明确说明。还应理解,两个相邻单词之间的符号“/”具有与“或”相同的含义,除非另有明确说明。此外,诸如“连接到”、“耦接到”或“与之通信”的短语不限于直接连接,除非另有明确说明。
本文中使用诸如“第一”、“第二”等的名称对元件的任何引用通常不限制那些元件的数量或顺序。相反,这些指定在本文中可以用作区分两个或更多个元件或元件实例的便利方法。因此,对第一和第二元件的引用并不意味着在那里仅可以使用两个元件,或者第一元件必须以某种方式在第二元件之前。另外,除非另有说明,否则一组元件可以包括一个或多个元件。此外,说明书或权利要求书中使用的“A、B或C中的至少一个”或“A、B、C或其任何组合”形式的术语是指“A或B或C或这些元件的任何组合”。例如,此术语可以包括A、或B、或C、或A和B、或A和C、或A和B和C、或2A、或2B、或2C、或2A和B等。作为另外的示例,“A、B或C中的至少一个”旨在涵盖A、B、C、AB、AC、BC和ABC、以及相同成员的倍数(例如,包括AA、BB或CC的任何列表)。同样,“A、B和C中的至少一个”旨在涵盖A、B、C、AB、AC、BC和ABC、以及相同成员的倍数。类似地,如本文所用,指代与“和/或”链接的项目列表的短语是指项目的任何组合。作为示例,“A和/或B”旨在涵盖A单独、B单独、或A和B一起。作为另一个示例,“A、B和/或C”旨在涵盖A单独、B单独、C单独、A和B一起、A和C一起、B和C一起、或A、B和C一起。
如本文所用,术语“确定”涵盖各种动作。例如,“确定”可以包括算数、计算、处理、推导、调查、查找(例如,在表、数据库或另一个数据结构中查找)、确定等。而且,“确定”可以包括接收(例如,接收信息)、访问(例如,访问存储器中的数据)等。而且,“确定”可以包括解析、选择、选出、建立等。
Claims (20)
1.一种数据存储设备,包括:
非易失性存储器(NVM)阵列;
数据存储控制器,所述数据存储控制器耦接到所述NVM阵列并且被配置为访问所述NVM阵列的至少第一部分,所述第一部分具有分配给所述数据存储控制器的物理存储器地址;和
递归神经网络(RNN)控制器,所述RNN控制器耦接到所述NVM阵列并且被配置为访问所述NVM阵列的不同于所述第一部分的第二部分,所述第二部分具有分配给所述RNN控制器的物理存储器地址,其中所述NVM阵列的所述第二部分被配置为用作RNN存储体。
2.根据权利要求1所述的数据存储设备,
其中所述数据存储控制器被进一步配置为将数据存储在所述NVM阵列的所述第一部分中并从所述NVM阵列的所述第一部分读取所述数据;并且
其中所述RNN控制器被进一步配置为:
将RNN数据存储在所述NVM阵列的所述第二部分中,所述第二部分被配置为用作所述RNN存储体;
从所述NVM阵列的所述RNN存储体读取所述RNN数据;以及
使用从所述NVM阵列的所述RNN存储体读取的所述RNN数据确定至少一个RNN输出值。
3.根据权利要求2所述的数据存储设备,其中所述RNN是记忆增强神经网络(MANN)或神经图灵机(NTM)网络中的至少一者,并且其中所述RNN输出值是MANN读取值或NTM读取值。
4.根据权利要求2所述的数据存储设备,
其中所述数据存储控制器被进一步配置为结合使用所述数据存储设备的NVM管理部件将所述数据存储在所述NVM阵列的所述第一部分中或从所述NVM阵列的所述第一部分读取所述数据来执行NVM管理功能,并且
其中所述RNN控制器被进一步配置为结合将所述RNN数据存储在所述RNN存储体中或从所述RNN存储体中读取所述RNN数据来绕过所述NVM管理部件。
5.根据权利要求1所述的数据存储设备,
其中所述数据存储控制器被进一步配置为对所述NVM阵列的所述第一部分执行第一磨损均衡程序,并且
其中所述RNN控制器被进一步配置为对所述NVM阵列的所述第二部分执行第二磨损均衡程序,其中所述第二磨损均衡程序不同于所述第一磨损均衡程序。
6.根据权利要求5所述的数据存储设备,其中所述RNN控制器被进一步配置为通过以下操作执行所述第二磨损均衡程序:
确定所述RNN存储体中存储所述RNN数据的块的访问编程速率,以识别最多使用块和最少使用块;以及
周期性地交换存储在所述最多使用块中的RNN数据与存储在所述最少使用块中的RNN数据。
7.根据权利要求1所述的数据存储设备,
其中所述数据存储控制器被进一步配置为对所述NVM阵列的所述第一部分执行第一读取阈值校准程序,并且
其中所述RNN控制器被进一步配置为对所述NVM阵列的所述第二部分执行不同于所述第一读取阈值校准程序的第二读取阈值校准程序,或者选择性地禁用对所述NVM阵列的所述第二部分的读取阈值校准。
8.根据权利要求1所述的数据存储设备,
其中所述数据存储控制器被进一步配置为对从所述NVM阵列的所述第一部分读取的所述数据执行第一错误校正码(ECC)程序,并且
其中所述RNN控制器被进一步配置为:
对从所述NVM阵列的所述第二部分读取的所述数据执行不同于所述第一ECC程序的第二ECC程序,或者
选择性地禁用对从所述NVM阵列的所述第二部分读取的所述数据的ECC程序。
9.根据权利要求1所述的数据存储设备,其中所述数据存储控制器被进一步配置为除了访问所述NVM阵列的所述第一部分之外还访问所述NVM阵列的所述第二部分。
10.根据权利要求9所述的数据存储设备,其中所述数据存储控制器被进一步配置为访问所述NVM阵列的所述第二部分,以在由所述RNN控制器执行的RNN程序的第一级完成之后使用存储在所述RNN存储体中的数据来执行所述RNN程序的至少第二级。
11.根据权利要求1所述的数据存储设备,其中所述RNN控制器被进一步配置为:
基于所述RNN存储体中的数据来确定RNN损失函数;
将所述RNN损失函数与损失函数阈值进行比较;
响应于确定所述RNN损失函数高于所述损失函数阈值,应用第一组数据管理策略;以及
响应于确定所述RNN损失函数低于所述损失函数阈值,应用第二组数据管理策略,其中所述第二组数据管理策略不同于所述第一组数据管理策略。
12.根据权利要求1所述的数据存储设备,其中所述RNN控制器被进一步配置为对从所述RNN存储体读取的RNN数据执行多数规则错误校正。
13.根据权利要求12所述的数据存储设备,其中所述RNN控制器被进一步配置为在将所述RNN数据存储在所述RNN存储体中之前对所述RNN数据进行加扰,并且在从所述RNN存储体中读取所述RNN数据之后对所述RNN数据进行解扰。
14.根据权利要求1所述的数据存储设备,其中所述RNN控制器被进一步配置为:
将所述RNN数据的经加扰版本存储在所述RNN存储体中;
从所述RNN存储体读取所述RNN数据的所述经加扰版本;
维护所述RNN数据的所述加扰版本中的二进制一的计数和二进制零的计数中的不一致性的累加总和;
响应于确定所述累加总和不超过不一致性阈值,对从所述RNN存储体读取的所述RNN数据进行解扰;以及
响应于确定所述累加总和超过所述不一致性阈值,刷新存储在所述RNN存储体中的所述RNN数据。
15.根据权利要求1所述的数据存储设备,其中所述数据存储控制器和所述RNN控制器是集成控制器的部件。
16.根据权利要求1所述的数据存储设备,其中所述数据存储控制器和所述RNN控制器中的一者或两者是所述NVM阵列的片上部件。
17.一种供数据存储设备使用的方法,所述数据存储设备包括数据存储控制器、递归神经网络(RNN)控制器和非易失性存储器(NVM)阵列,所述方法包括:
使用所述数据存储控制器访问所述NVM阵列的至少第一部分,所述NVM阵列的所述第一部分具有分配给所述数据存储控制器的物理存储器地址;以及
使用所述RNN控制器访问所述NVM阵列的第二部分,所述NVM阵列的所述第二部分具有分配给所述RNN控制器的物理存储器地址,其中所述NVM阵列的所述第二部分被配置为用作RNN存储体。
18.根据权利要求17所述的方法,
其中使用所述数据存储控制器访问所述NVM阵列的所述第一部分包括将数据存储在所述NVM阵列的所述第一部分中以及从所述NVM阵列的所述第一部分读取所述数据;并且
其中使用所述RNN控制器访问所述NVM阵列的所述第二部分包括:
将RNN数据存储在所述NVM阵列的所述第二部分中,所述第二部分被配置为用作所述RNN存储体;
从所述NVM阵列的所述RNN存储体读取所述RNN数据;以及
使用从所述NVM阵列的所述RNN存储体读取的所述RNN数据确定至少一个RNN输出值。
19.根据权利要求18所述的方法,其中所述RNN是记忆增强神经网络(MANN)或神经图灵机(NTM)网络中的至少一者,并且其中所述RNN输出值是MANN读取值或NTM读取值。
20.一种供数据存储设备使用的装置,所述数据存储设备包括非易失性存储器(NVM)阵列,所述装置包括:
用于访问存储在所述NVM阵列的第一部分内的数据的构件,所述第一部分具有分配给用于访问所述第一部分的所述构件的物理存储器地址;以及
用于访问存储在所述NVM阵列的第二部分内的递归神经网络(RNN)数据的构件,所述第二部分具有分配给用于访问第二部分的所述构件的物理存储器地址,其中所述NVM阵列的所述第二部分被配置为用作RNN存储体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/499,572 | 2021-10-12 | ||
US17/499,572 US11755208B2 (en) | 2021-10-12 | 2021-10-12 | Hybrid memory management of non-volatile memory (NVM) devices for use with recurrent neural networks |
PCT/US2022/030620 WO2023064005A1 (en) | 2021-10-12 | 2022-05-24 | Hybrid memory management of non-volatile memory (nvm) devices for use with recurrent neural networks |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117730306A true CN117730306A (zh) | 2024-03-19 |
Family
ID=85798122
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280049447.0A Pending CN117730306A (zh) | 2021-10-12 | 2022-05-24 | 与递归神经网络一起使用的非易失性存储器(nvm)设备的混合存储器管理 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11755208B2 (zh) |
EP (1) | EP4416583A1 (zh) |
CN (1) | CN117730306A (zh) |
WO (1) | WO2023064005A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20240338275A1 (en) * | 2023-04-07 | 2024-10-10 | Western Digital Technologies, Inc. | Data storage device configured for use with a generative-adversarial-network (gan) |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100872186B1 (ko) * | 2007-01-04 | 2008-12-09 | 삼성전자주식회사 | 상이한 에러 제어 스킴을 갖는 하이브리드 플래시 메모리장치 및 그것을 포함한 메모리 시스템 |
US20130297851A1 (en) * | 2012-05-02 | 2013-11-07 | Chung-Wen Huang | Peripheral device and data access control method thereof |
US9223693B2 (en) * | 2012-12-31 | 2015-12-29 | Sandisk Technologies Inc. | Memory system having an unequal number of memory die on different control channels |
US9081666B2 (en) | 2013-02-15 | 2015-07-14 | Seagate Technology Llc | Non-volatile memory channel control using a general purpose programmable processor in combination with a low level programmable sequencer |
US9542344B2 (en) * | 2014-02-19 | 2017-01-10 | Sandisk Technologies Llc | Datapath management in a memory controller |
JP6378102B2 (ja) * | 2015-01-28 | 2018-08-22 | 東芝メモリ株式会社 | 半導体装置および読み出し方法 |
US10222990B2 (en) | 2015-07-24 | 2019-03-05 | Sandisk Technologies Llc | Optimistic read operation |
US11175831B2 (en) * | 2016-10-14 | 2021-11-16 | Netapp, Inc. | Read and write load sharing in a storage array via partitioned ownership of data blocks |
US11056206B2 (en) * | 2017-10-11 | 2021-07-06 | Western Digital Technologies, Inc. | Non-volatile memory with dynamic wear leveling group configuration |
KR102559581B1 (ko) | 2018-05-23 | 2023-07-25 | 삼성전자주식회사 | 재구성 가능 로직을 포함하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
US10983715B2 (en) * | 2018-09-19 | 2021-04-20 | Western Digital Technologies, Inc. | Expandable memory for use with solid state systems and devices |
US11010314B2 (en) | 2018-10-30 | 2021-05-18 | Marvell Asia Pte. Ltd. | Artificial intelligence-enabled management of storage media access |
US11449268B2 (en) | 2018-11-20 | 2022-09-20 | Samsung Electronics Co., Ltd. | Deep solid state device (deep-SSD): a neural network based persistent data storage |
US11158369B2 (en) * | 2018-12-26 | 2021-10-26 | Western Digital Technologies, Inc. | On-chip non-volatile memory (NVM) search |
US10956049B2 (en) * | 2019-06-12 | 2021-03-23 | International Business Machines Corporation | Wear-aware block mode conversion in non-volatile memory |
US11520521B2 (en) | 2019-06-20 | 2022-12-06 | Western Digital Technologies, Inc. | Storage controller having data augmentation components for use with non-volatile memory die |
US11216184B2 (en) | 2019-12-06 | 2022-01-04 | Western Digital Technologies, Inc. | Non-volatile memory with on-chip principal component analysis for generating low dimensional outputs for machine learning |
US11176043B2 (en) * | 2020-04-02 | 2021-11-16 | International Business Machines Corporation | Distributed memory-augmented neural network architecture |
JP2022050016A (ja) * | 2020-09-17 | 2022-03-30 | キオクシア株式会社 | メモリシステム |
EP3982299A1 (en) * | 2020-10-09 | 2022-04-13 | Naver Corporation | Superloss: a generic loss for robust curriculum learning |
-
2021
- 2021-10-12 US US17/499,572 patent/US11755208B2/en active Active
-
2022
- 2022-05-24 EP EP22881509.8A patent/EP4416583A1/en active Pending
- 2022-05-24 CN CN202280049447.0A patent/CN117730306A/zh active Pending
- 2022-05-24 WO PCT/US2022/030620 patent/WO2023064005A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US11755208B2 (en) | 2023-09-12 |
EP4416583A1 (en) | 2024-08-21 |
WO2023064005A1 (en) | 2023-04-20 |
US20230114005A1 (en) | 2023-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11586679B2 (en) | Proactive corrective actions in memory based on a probabilistic data structure | |
US20200210831A1 (en) | Storage device performance optimization using deep learning | |
US9043517B1 (en) | Multipass programming in buffers implemented in non-volatile data storage systems | |
US10475518B2 (en) | Memory system, memory system control method, and program | |
US11776638B2 (en) | Memory system, control method thereof, and program | |
CN117693758A (zh) | 与递归神经网络一起使用的非易失性存储器(nvm)设备的混合存储器管理 | |
US11615003B2 (en) | Optimized neural network data organization | |
US10789003B1 (en) | Selective deduplication based on data storage device controller status and media characteristics | |
US11775214B2 (en) | Memory system for suspending and resuming execution of command according to lock or unlock request, and operating method thereof | |
CN114520014A (zh) | 用于确定读取阈值电压的变化的系统和方法 | |
US20240345919A1 (en) | Managing data integrity using a change in a number of data errors and an amount of time in which the change occurred | |
CN117730306A (zh) | 与递归神经网络一起使用的非易失性存储器(nvm)设备的混合存储器管理 | |
US11662911B2 (en) | Memory system and operating method thereof | |
CN116010157A (zh) | 用于编程数据的存储器装置和存储器系统 | |
US12118217B2 (en) | Memory system, memory controller and method for operating memory system, capable of determining target meta memory block on the basis of detected target state | |
US20240071462A1 (en) | Efficient periodic backend refresh reads for reducing bit error rate in memory devices | |
US20240069748A1 (en) | Reducing bit error rate in memory devices | |
US20230410878A1 (en) | Automated voltage demarcation (vdm) adjustment for memory device |
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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20240827 Address after: California, USA Applicant after: SanDisk Technology Co. Country or region after: U.S.A. Address before: California, USA Applicant before: Western Digital Technologies, Inc. Country or region before: U.S.A. |
|
TA01 | Transfer of patent application right |