CN113467704A - 通过智能阈值检测的命令优化 - Google Patents
通过智能阈值检测的命令优化 Download PDFInfo
- Publication number
- CN113467704A CN113467704A CN202010528373.1A CN202010528373A CN113467704A CN 113467704 A CN113467704 A CN 113467704A CN 202010528373 A CN202010528373 A CN 202010528373A CN 113467704 A CN113467704 A CN 113467704A
- Authority
- CN
- China
- Prior art keywords
- parameter
- read
- memory
- command
- controller
- 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
- 238000001514 detection method Methods 0.000 title abstract description 3
- 238000005457 optimization Methods 0.000 title abstract description 3
- 238000003860 storage Methods 0.000 claims description 58
- 238000000034 method Methods 0.000 claims description 20
- 239000000872 buffer Substances 0.000 description 63
- 239000013598 vector Substances 0.000 description 40
- 238000013507 mapping Methods 0.000 description 26
- 238000010586 diagram Methods 0.000 description 13
- 230000004044 response Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000005055 memory storage Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 102100036725 Epithelial discoidin domain-containing receptor 1 Human genes 0.000 description 1
- 101710131668 Epithelial discoidin domain-containing receptor 1 Proteins 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- 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/061—Improving I/O performance
-
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0656—Data buffering arrangements
-
- 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/0658—Controller construction arrangements
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- 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/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5642—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/30—Power supply circuits
-
- 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/02—Detection or location of defective auxiliary circuits, e.g. defective refresh counters
- G11C29/021—Detection or location of defective auxiliary circuits, e.g. defective refresh counters in voltage or current generators
-
- 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/02—Detection or location of defective auxiliary circuits, e.g. defective refresh counters
- G11C29/028—Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/7201—Logical to physical mapping or translation of blocks or pages
-
- 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/7206—Reconfiguration of flash memory system
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)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Read Only Memory (AREA)
Abstract
本发明题为“通过智能阈值检测的命令优化”。提供了包括存储器和控制器的存储设备的各方面,存储设备防止对于同一管芯具有相同读取电压阈值偏移的设定特征命令的重新传输。当控制器接收针对存储在存储器中的数据的第一读取命令时,控制器识别第一参数以修改第一读取阈值,并且执行用于基于第一参数修改读取阈值的第一设定特征命令。随后,当控制器从主机设备接收针对存储在存储器中的数据的第二读取命令时,控制器识别第二参数以修改第二读取阈值,并且确定第一参数和第二参数是否相同。如果参数相同,则控制器避免执行用于修改第二读取阈值的第二设定特征命令。因此,可以减少存储设备的读取延迟。
Description
背景技术
技术领域
本公开整体涉及电子设备,并且更具体地涉及存储设备。
背景技术
存储设备使得用户能够存储和检索数据。存储设备的示例包括非易失性存储器设备。非易失性存储器通常在通电循环之后保留数据。非易失性存储器的示例是闪存存储器,其可以包括一个或多个管芯上的NAND单元阵列。闪存存储器可存在于固态设备(SSD)、安全数字(SD)卡等中。
闪存存储设备可以存储与数据相关联的控制信息。例如,闪存存储设备可维护控制表,该控制表包括逻辑地址到物理地址的映射。该控制表用于跟踪逻辑扇区或块在闪存存储器中的物理位置。控制表存储在非易失性存储器中,以使得能够在通电循环之后访问存储的数据。
当闪存存储设备从闪存存储器的单元(例如,从诸如块的存储器位置)读取数据时,将单元的读取电压与一个或多个读取电压阈值进行比较,并且基于比较结果来识别存储在单元中的数据(例如,逻辑0或1)。在一些情况下,闪存存储设备可以执行动态读取,在此期间,可以在每次读取之前使用设定特征命令来偏移读取电压阈值,以便清楚地识别单元中的存储的数据。然而,在每次读取之前发送设定特征命令可能相对于读取感测命令花费大量时间(例如,与对于读取小于1μs相比,大约2μs),因此增加读取延迟并影响闪存存储设备的性能。
发明内容
本文公开了存储设备的一个方面。存储设备包括存储器和控制器。存储器包括第一存储器位置和第二存储器位置。控制器被配置为从主机设备接收针对存储在第一存储器位置中的数据的第一读取命令,识别第一参数以修改与第一存储器位置相关联的第一读取阈值,并且执行用于基于第一参数修改第一读取阈值的第一设定特征命令。控制器被进一步配置为从主机设备接收针对存储在第二存储器位置中的数据的第二读取命令,识别第二参数以修改与第二存储器位置相关联的第二读取阈值,并且当第二参数与第一参数相同时,避免执行用于修改第二读取阈值的第二设定特征命令。
本文公开了方法的一个方面。方法包括:从主机设备接收针对存储在存储设备的存储器的第一存储器位置中的数据的第一读取命令;识别第一参数以修改与第一存储器位置相关联的第一读取阈值;以及执行用于基于第一参数修改第一读取阈值的第一设定特征命令。方法还包括:从主机设备接收针对存储在存储设备的存储器的第二存储器位置中的数据的第二读取命令;识别第二参数以修改与第二存储器位置相关联的第二读取阈值;以及当第二参数与第一参数相同时,避免执行用于修改第二读取阈值的第二设定特征命令。
本文公开了存储设备的另一方面。存储设备包括存储器和控制器。存储器包括第一存储器位置和第二存储器位置。控制器被配置为从主机设备接收针对存储在第一存储器位置中的数据的第一读取命令,识别第一参数以修改与第一存储器位置相关联的第一读取阈值,执行用于基于第一参数修改第一读取阈值的第一设定特征命令,从主机设备接收针对存储在第二存储器位置中的数据的第二读取命令,并且识别第二参数以修改与第二存储器位置相关联的第二读取阈值。存储设备还包括用于将第一参数与第二参数进行比较的装置。控制器被进一步配置为基于用于比较的装置确定第二参数何时与第一参数相同,并且当第二参数与第一参数相同时,避免执行用于修改第二读取阈值的第二设定特征命令。
应当理解,从以下具体实施方式中,本领域的技术人员将显而易见存储设备和方法的其他方面,其中以图示的方式示出和描述装置和方法的各个方面。如将认识到的,这些方面可以其他和不同的形式实现,并且在各种其他方面其若干细节能够进行修改。因此,附图和具体实施方式本质上被认为是例示性的而不是限制性的。
附图说明
现在将参考附图以举例的方式而非限制的方式在具体实施方式中呈现本发明的各个方面,其中:
图1是示出与主机设备通信的存储设备的示例性实施方案的框图。
图2是示出图1的存储设备的非易失性存储器中的逻辑到物理映射表的示例的概念图。
图3是示出图1的存储设备中的多级单元的电压分布图的示例的概念图。
图4是示出由图1的存储设备在每个动态读取命令之前执行的设定特征命令的示例的概念图。
图5是示出图4中的每个设定特征命令和动态读取命令的时序图的示例的概念图。
图6是示出图1的存储设备用来避免执行具有相同读取电压阈值偏移的多个设定特征命令的阈值历史缓冲区和比较器的示例的概念图。
图7是示出针对初始动态读取命令执行但避免由图1的存储设备针对后续动态读取命令执行的设定特征命令的示例的概念图。
图8是示出用于防止具有相同读取电压阈值偏移的多个设定特征命令被图1的存储设备重新传输的方法的流程图。
具体实施方式
下面结合附图阐述的具体实施方式旨在作为本发明的各种示例性实施方案的描述,而不旨在表示可实践本发明的唯一实施方案。具体实施方式包括具体细节,其目的是提供对本发明的透彻理解。然而,对本领域的技术人员将显而易见的是,可在没有这些具体细节的情况下实践本发明。在一些情况下,熟知的结构和部件以框图的形式示出,以便避免模糊本发明的概念。首字母缩略词和其他描述性术语可仅为了方便和清楚起见而使用,并非旨在限制本发明的范围。
词语“示例性”或“示例”在本文中用于表示用作示例、实例或说明。本文中描述为“示例性”的任何示例性实施方案并非一定被解释为比其他示例性实施方案更优选或更具优势。同样,术语装置、方法或制品的“示例性实施方案”不要求本发明的所有示例性实施方案包括所述的部件、结构、特征、功能、工艺、优点、有益效果或操作模式。
在以下具体实施方式中,将呈现与主机设备通信的存储设备的各个方面。这些方面非常适用于闪存存储设备,诸如SSD和SD卡。然而,本领域的技术人员将认识到,这些方面可以扩展到能够存储数据的所有类型的存储设备。因此,对具体装置或方法的任何引用仅旨在示出本发明的各个方面,应当理解,在不脱离本公开的实质和范围的情况下,这些方面可具有宽泛的应用范围。
当存储设备执行单个管芯的多个动态读取时,存储设备通常在每次读取之前发送设定特征命令。每个设定特征命令可以包括一个或多个读取电压阈值偏移,该一个或多个读取电压阈值偏移修改单元的默认编程读取电压阈值,以帮助存储设备清楚地识别存储在单元中的数据(例如,作为逻辑0或1)。然而,在某些情况下,诸如同一管芯的动态读取,可以提供指示相同读取电压阈值偏移的多个设定特征命令。此类重复设定特征命令可能效率低下,从而增加读取延迟并影响存储设备的性能。
为了改善存储设备性能,本公开允许存储设备的控制器基于每个管芯或页面的阈值历史缓冲区以及比较器(诸如XOR引擎)来避免发送具有相同读取电压阈值偏移的多个设定特征命令。当控制器执行初始动态读取时,控制器识别指示存储器位置的单元(诸如管芯的块)的读取电压阈值偏移的参数,例如阈值向量。然后,控制器将参数存储在该管芯(或页面)的阈值历史缓冲区中,例如作为最后一个阈值向量。控制器执行包括该参数的初始设定特征命令以修改读取电压阈值,然后控制器相应地执行动态读取。此后,当控制器对该管芯执行另一次动态读取时,控制器识别指示另一个读取电压阈值偏移的新参数,例如目标阈值向量。
然而,在执行包括该新参数的另一设定特征命令之前,控制器使用比较器来确定新参数(目标阈值向量)是否与存储的参数(最后一个阈值向量)相同。如果参数相同(例如,XOR结果为0或XNOR结果为非零),则控制器确定读取电压阈值偏移未改变,并且控制器在执行后续动态读取之前避免发送另一设定特征命令。否则,如果参数不同(例如,XOR结果为非零或XNOR结果为0),则控制器在执行后续动态读取之前执行具有新偏移的另一设定特征命令,并且用指示偏移的新参数覆盖该管芯或页面的阈值历史缓冲区。以这种方式,当动态地读取同一管芯时,存储设备可以避免重新传输具有相同读取电压阈值偏移的设定特征命令,从而减少总读取延迟并改善存储设备性能。
图1示出了根据示例性实施方案的与主机设备104(也称为“主机”)通信的存储设备102的示例性框图100。主机104和存储设备102可形成系统,诸如计算机系统(例如,服务器、台式计算机、移动/膝上型计算机、平板计算机、智能电话等)。图1的部件可以在物理上协同定位或可以不在物理上协同定位。就这一点而言,主机104可远离存储设备102定位。尽管图1示出了主机104被示出为与存储设备102分开,但在其他实施方案中,主机104可全部或部分地集成到存储设备102中。另选地,主机104可整体上分布在多个远程实体上,或另选地在存储设备102中具有一些功能。
本领域的普通技术人员将会知道,其他示例性实施方案可以包括比图1中所示的那些元件更多或更少的元件,并且可以在其他环境中实现所公开的过程。例如,其他示例性实施方案可包括与存储设备102通信的不同数量的主机,或与主机通信的多个存储设备102。
主机设备104可将数据存储到存储设备102和/或从该存储设备检索数据。主机设备104可包括任何计算设备,包括例如计算机服务器、附网存储(NAS)单元、台式计算机、笔记本(例如膝上型)计算机、平板计算机、移动计算设备诸如智能电话、电视、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流式设备等。主机设备104可包括主机存储器103和至少一个处理器101。至少一个处理器101可包括能够处理数据的任何形式的硬件,并且可包括通用处理单元(诸如中央处理单元(CPU))、专用硬件(诸如专用集成电路(ASIC))、数字信号处理器(DSP)、可配置硬件(诸如现场可编程门阵列(FPGA))或通过软件指令、固件等配置的任何其他形式的处理单元。主机存储器103可由主机设备104用于存储由主机处理的数据或指令或从存储设备102接收的数据。在一些示例中,主机存储器103可包括非易失性存储器,诸如磁存储器设备、光学存储器设备、全息存储器设备、闪存存储器设备(例如,NAND或NOR)、相变存储器(PCM)设备、电阻式随机存取存储器(ReRAM)设备、磁阻式随机存取存储器(MRAM)设备、铁电随机存取存储器(F-RAM)和任何其他类型的非易失性存储器设备。在其他示例中,主机存储器103可包括易失性存储器,诸如随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态RAM(SRAM)和同步动态RAM(SDRAM(例如,DDR1、DDR2、DDR3、DDR3L、LPDDR3、DDR4等)。主机存储器103还可包括非易失性存储器和易失性存储器两者,无论是集成在一起还是作为分立单元。
主机接口106被配置为经由总线/网络108将存储设备102与主机104交接,并且可使用例如以太网或WiFi或总线标准诸如串行高级技术附件(SATA)、PCI Express(PCIe)、小型计算机系统接口(SCSI)或串行附接SCSI(SAS)等其他可能的候选来交接。另选地,主机接口106可以是无线的,并且可使用例如蜂窝通信(例如,5G NR、4G LTE、3G、2G、GSM/UMTS、CDMA One/CDMA2000等)、通过接入点的无线分布方法(例如,IEEE 802.11、WiFi、HiperLAN等)、红外(IR)、蓝牙、Zigbee或其他无线广域网(WWAN)、无线局域网(WLAN)、无线个人局域网(WPAN)技术或相当的广域、局域和个人局域技术来使存储设备102与主机104交接。
如图1的示例性实施方案所示,存储设备102包括用于非易失性地存储从主机104接收的数据的非易失性存储器(NVM)110。NVM 110可包括例如闪存集成电路、NAND存储器(例如,单级单元(SLC)存储器、多级单元(MLC)存储器、三级单元(TLC)存储器、四级单元(QLC)存储器、五级单元(PLC)存储器或它们的任何组合)或NOR存储器。NVM 110可包括多个存储器位置112,这些存储器位置可存储用于操作存储设备102的系统数据或从主机接收的用于存储在存储设备102中的用户数据。例如,NVM可具有交叉点架构,该交叉点架构包括具有n行和m列的存储器位置112的2D NAND阵列,其中m和n根据NVM的尺寸来预定义。在图1的所示的示例性实施方案中,每个存储器位置112可以是包括多个单元116的块114。单元116可以是例如单级单元、多级单元、三级单元、四级单元和/或五级单元。存储器位置112的其他示例是可能的;例如,每个存储器位置可以是包含多个块的管芯。此外,每个存储器位置可以包括3D NAND阵列中的一个或多个块。此外,所示的存储器位置112可以是映射到一个或多个物理块的逻辑块。
存储设备102还包括易失性存储器118,该易失性存储器可例如包括动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)。存储在易失性存储器118中的数据可包括从NVM 110读取的数据或要写入NVM 110的数据。就这一点而言,易失性存储器118可包括用于临时存储数据的写入缓冲区或读取缓冲区。虽然图1将易失性存储器118示出为远离存储设备102的控制器123,但是易失性存储器118可集成到控制器123中。
存储器(例如,NVM 110)被配置为存储从主机设备104接收的数据119。数据119可存储在任何存储器位置112的单元116中。例如,图1示出了数据119被存储在不同存储器位置112中,但是数据可存储在相同存储器位置中。在另一个示例中,存储器位置112可以是不同管芯,并且数据可以存储在不同管芯中的一个或多个管芯中。
每个数据119可与逻辑地址相关联。例如,NVM 110可存储用于存储设备102的逻辑到物理(L2P)映射表120,该映射表将每个数据119与逻辑地址相关联。L2P映射表120存储为从主机104写入的数据指定的逻辑地址到NVM 110中指示存储每个数据的位置的物理地址的映射。该映射可由存储设备的控制器123执行。L2P映射表可以是包括标识符的表或其他数据结构,该标识符诸如与NVM中的对数据进行存储的每个存储器位置112相关联的逻辑块地址(LBA)。虽然图1示出了存储在NVM的一个存储器位置112中的单个L2P映射表120以避免不当地模糊图1的概念,但是L2P映射表120实际上可包括存储在NVM的一个或多个存储器位置中的多个表。
图2是L2P映射表205的示例的概念图200,其示出了从主机设备接收的数据202到图1的NVM 110中的逻辑地址和物理地址的映射。数据202可对应于图1中的数据119,而L2P映射表205可对应于图1中的L2P映射表120。在一个示例性实施方案中,数据202可存储在一个或多个页面204(例如,页面1至x)中,其中x是正被写入NVM 110的数据的页面总数。每个页面204可与L2P映射表205的识别逻辑块地址(LBA)208的一个或多个条目206、与写入NVM的数据相关联的物理地址210以及数据的长度212相关联。LBA 208可以是在用于从主机设备接收的数据的写入命令中指定的逻辑地址。物理地址210可指示块和与LBA 208相关联的数据被物理写入的偏移。长度212可指示写入数据的大小(例如,4KB或一些其他大小)。
重新参见图1,易失性存储器118还存储用于存储设备102的高速缓存122。高速缓存122包括示出针对由主机104请求的数据指定的逻辑地址到NVM 110中指示存储数据的位置的物理地址的映射的条目。该映射可由控制器123执行。当控制器123接收针对数据119的读取命令或写入命令时,控制器检查高速缓存122每个数据的逻辑到物理映射。如果映射不存在(例如,它是对数据的第一请求),则控制器访问L2P映射表120并将映射存储在高速缓存122中。当控制器123执行读取命令或写入命令时,控制器访问来自高速缓存的映射,并在指定的物理地址处从NVM 110读取数据或将数据写入该NVM。高速缓存可以表或其他数据结构的形式存储,该表或其他数据结构包括与NVM中的正在读取数据的每个存储器位置112相关联的逻辑地址。
NVM 110包括感测放大器124和连接到每个存储器位置112的数据锁存器126。例如,存储器位置112可以是在多个位线上包括单元116的块,并且NVM 110可以在每个位线上包括感测放大器124。此外,一个或多个数据锁存器126可以连接到位线和/或感测放大器。数据锁存器可以是例如移位寄存器。当从存储器位置112的单元116读取数据时,感测放大器124通过将位线上的电压放大到逻辑电平(例如,可读作‘0’或‘1’)来感测数据,并且感测的数据存储在数据锁存器126中。然后将数据从数据锁存器126传输到控制器123,之后将数据存储在易失性存储器118中,直到将其传输到主机设备104。当将数据写入存储器位置112的单元116时,控制器123将编程数据存储在数据锁存器126中,并且随后将数据从数据锁存器126传输到单元116。
存储设备102包括控制器123,该控制器包括诸如用于执行指令的一个或多个处理器的电路,并且可以包括微控制器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、硬连线逻辑、模拟电路和/或它们的组合。
控制器123被配置为响应于读取命令而接收从各种存储器位置112的单元116中的一个或多个单元传输的数据。例如,控制器123可以通过激活感测放大器124以将数据从单元116感测到数据锁存器126中来读取数据119,并且控制器123可以从数据锁存器126接收数据。控制器123还被配置为响应于写入命令而将数据编程到单元116中的一个或多个单元中。例如,控制器123可通过将要编程到单元116中的数据发送到数据锁存器126来写入数据119。控制器123被进一步配置为当向单元116读取或写入数据时,访问NVM 110中的L2P映射表120。例如,控制器123可响应于来自主机设备104的读取或写入命令而从NVM 110接收逻辑到物理地址映射,识别映射到在命令中识别的逻辑地址的物理地址(例如,将逻辑地址转换为物理地址),并且访问位于映射的物理地址处的单元116或将数据存储在其中。
控制器123及其部件可以用嵌入式软件来实现,该嵌入式软件执行贯穿本公开描述的控制器的各种功能。另选地,用于实现前述功能和部件中的每一者的软件可存储在NVM110中或存储设备102或主机设备104外部的存储器中,并且可由控制器123访问以供控制器123的一个或多个处理器执行。另选地,控制器的功能和部件可用控制器123中的硬件来实现,或者可使用前述硬件和软件的组合来实现。
在操作中,主机设备104通过向存储设备102发送写入命令来将数据存储在存储设备102中,该写入命令指定一个或多个逻辑地址(例如,LBA)以及要写入的数据的长度。接口元件106接收写入命令,并且控制器在存储设备102的NVM 110中分配存储器位置112以用于存储数据。控制器123将L2P映射存储在NVM(和高速缓存122)中,以将与数据相关联的逻辑地址映射到为数据分配的存储器位置112的物理地址。控制器还存储L2P映测数据的长度。然后,控制器123通过将数据发送到连接到分配的存储器位置的一个或多个数据锁存器126来将数据存储在存储器位置112中,将数据从该一个或多个数据锁存器编程到单元116。
主机104可以通过发送读取命令来从存储设备102检索数据,该读取命令指定与要从存储设备102检索的数据相关联的一个或多个逻辑地址以及要读取的数据的长度。接口106接收读取命令,并且控制器123访问高速缓存122或以其他方式访问NVM中的L2P映射,以将读取命令中指定的逻辑地址转换为指示数据位置的物理地址。然后,控制器123通过使用感测放大器124感测数据并将其存储在数据锁存器126中,直到读取的数据经由主机接口106返回到主机104,从由物理地址指定的存储器位置112读取请求数据。
当控制器123如上所述从NVM 110读取数据119时,控制器将单元116中的电压与一个或多个读取电压阈值进行比较,以确定数据的逻辑值。
图3示出了存储两位数据(例如逻辑00、01、10或11)的多级单元的电压分布图300的示例。每个多级单元的逻辑值可基于单元中的电压与读取阈值电压302、304、306的比较结果来确定。例如,当单元的电压低于读取阈值电压302时,控制器可以确定特定单元存储对应于逻辑‘11’的数据,当电压介于读取阈值电压302和读取阈值电压304之间时,控制器可以确定特定单元存储对应于逻辑‘10’的数据,当电压介于读取阈值电压304和读取阈值电压306之间时,控制器可以确定特定单元存储对应于逻辑‘01’的数据,或当电压高于读取阈值电压306时,控制器可以确定特定单元存储对应于逻辑‘00’的数据。虽然图3示出了多级单元的三个读取阈值电压,但是读取阈值电压的数量可以根据存储在每个单元中的数据的量而改变(例如,单级单元的一个阈值电压,三级单元的七个阈值电压等)。
尽管控制器123可使用默认读取电压(例如,读取阈值电压302、304、306)从单元116读取数据119,但在一些情况下,读取阈值电压可能无法清楚地区分单元中的存储的数据(例如,作为逻辑00、01等)。例如,在一些情况下,读取阈值电压302、304、306可以与图3的一个或多个相应曲线重叠,从而导致可能的数据读取错误。在此类情况下,控制器可以通过执行动态读取操作来减少读取错误,例如,在读取数据时动态地施加读取阈值电压偏移以修改默认读取阈值。为了修改读取阈值,控制器123可以发送设定特征命令。
图4示出了在各个设定特征命令之前的多个动态读取命令的示例400。当控制器123从主机设备104接收第一读取命令时,控制器可以执行第一设定特征命令402以在由主机设备请求的数据执行第一动态读取命令404之前修改读取电压阈值302、304、306。类似地,当控制器从主机设备接收第二读取命令时,控制器可以执行第二设定特征命令406以在由主机设备请求的数据执行第二动态读取命令408之前修改读取电压阈值。每个动态读取命令可以请求特定管芯的单个平面中的数据(例如,单个平面动态读取)。
在一个示例中,当控制器123执行设定特征命令402、406时,控制器可以向NVM 110中的定序器发送指示命令的值(例如,用于设定特征的D5h)、指示用于命令的目标管芯的管芯地址、指示用于存储电压阈值偏移的特征寄存器的特征地址,以及指示要存储在特征寄存器中的电压阈值偏移的一个或多个参数403、407(例如,四字节的序列)。在一些情况下,控制器可以随后跟踪管芯的内部忙状态(例如,通过状态查询),然后继续发送动态读取命令404、408。另选地,控制器可以在发送动态读取命令之前避免跟踪内部忙状态并等待一段时间(例如tFeat_NO_BUSY或约700ns或另一数量),这可以最佳地节省比跟踪内部忙状态更多的时间(例如,至少300ns-400ns)。
在执行设定特征命令402、406之后,当控制器123执行动态读取命令404、408时,控制器可以向定序器发送指示命令的值(例如,用于动态读取的5Dh,然后是用于读取操作的00h和30h)、用于读取数据的物理地址(例如,物理地址210)以及状态命令(例如,F1h),这些状态命令可重复直到控制器接收到管芯已准备好的指示。存储在特征寄存器中的参数403、407可用于在从单元读取数据时使读取电压阈值偏移。一旦数据被动态地读取,数据就随后被传输到控制器,例如,到易失性存储器118以用于传输到主机设备。
然而,当存储设备102严重依赖于动态读取命令404、408以基于电压阈值偏移来读取数据时,在每个动态读取命令之前发送设定特征命令402、406可以增加存储设备的读取延迟。图5示出了时序图500,其示出了设定特征命令和动态读取命令之间的时序差的示例。如图所示,用于执行设定特征命令的时序502可以显著长于用于执行动态读取命令的时序504。例如,虽然完成读取感测命令的时序504可以小于1μs,但是构建和发送设定特征命令的时序502(即使在如上所述优化为不使用忙状态跟踪时)可以是约2μs。因此,当在每个读取感测命令之前重新传输设定特征命令时,对存储设备的读取延迟的总体影响可能是显著的,特别是对于随机读取,其中可以执行比顺序读取更多的动态读取命令。
为了解决这个问题,图6示出了阈值历史缓冲区602和比较器604的示例600,其可以用于最小化设定特征命令(例如,第二设定特征命令406)的重新传输以减少上述读取延迟。阈值历史缓冲区602可以是存储管芯的最近或最后一个阈值向量的易失性存储器118(例如,高速缓存122)中的缓冲区。最后一个阈值向量可以是在设定特征命令402、406中识别的参数403、407,该参数指示特定管芯的读取阈值电压偏移。例如,参见图4,当动态读取命令404是最近执行的读取命令时,最后一个阈值向量可以对应于设定特征命令402中的参数403(例如,四字节的序列)。阈值历史缓冲区602可以在固件/软件中或在硬件(例如ASIC)中实现,如图6所示。例如,阈值历史缓冲区可包括有线连接到特征寄存器的一个或多个数据锁存器,该特征寄存器存储如上所述的电压阈值偏移。
在一个示例中,阈值历史缓冲区602可与单个管芯601相关联。例如,多个阈值历史缓冲区602可存在于硬件中,其中每个缓冲区与相应管芯相关联。因此,每个阈值历史缓冲区可以存储不同管芯的最后一个阈值向量。例如,如果设定特征命令402和406包括不同管芯地址,则参数403可存储在与第一管芯地址相关联的一个阈值历史缓冲区中,并且参数407可存储在与第二管芯地址相关联的另一个阈值历史缓冲区中。
在另一个示例中,阈值历史缓冲区602可以与存储器位置605的单个页面603相关联。存储器位置605可对应于存储器位置112,例如块114。例如,多个阈值历史缓冲区602可存在于硬件中,其中每个缓冲区与管芯的块的相应页面相关联。因此,每个阈值历史缓冲区可以存储不同页面的最后一个阈值向量。例如,如果动态读取命令404、408包括不同物理地址(与不同页面相关联),则参数403可以存储在与第一页面相关联的一个阈值历史缓冲区中,并且参数407可以存储在与第二页面相关联的另一个阈值历史缓冲区中。
每个阈值历史缓冲区602可以包括表示最后一个阈值向量的各个分量或电压设置的一个或多个指示符606或变量(例如,A、C、E、G)。例如,第一指示符A可表示参数403的第一字节,第二指示符C可表示参数403的第二字节,第三指示符E可表示参数403的第三字节,并且第四指示符G可表示参数403的第四字节。虽然图6所示的阈值历史缓冲区602跨越具有四个指示符(A、C、E、G)的四个字节(32位),但是阈值历史缓冲区602可以另选地跨越其他长度或者基于参数403的长度或组成包括其他数量的指示符606。例如,如果参数403是单个字节,则阈值历史缓冲区602可以包括四个指示符,每个指示符表示参数403的2位,一个指示符表示参数403的整个8位,或者其他示例。
比较器604可以从阈值历史缓冲区602接收数据作为输入。比较器604可在固件/软件中(例如,作为XOR或XNOR操作数)实现,或者在硬件中实现,如图6所示。例如,比较器604可包括有线连接到阈值历史缓冲区602的XOR门或XNOR门。比较器604的长度可对应于阈值历史缓冲区602的长度。例如,如果如上所述阈值历史缓冲区602的长度跨越32位,则比较器604可以包括分别从阈值历史缓冲区接收各个位的32个XOR或XNOR门。另外,虽然图6示出了一个比较器604和阈值历史缓冲区602,但是可以存在多个比较器和阈值历史缓冲区。例如,在如上所述多个阈值历史缓冲区分别与不同管芯(或页面)相关联的情况下,多个比较器604可以包括在硬件中,这些比较器单独地有线连接到相应的阈值历史缓冲区。
当控制器123从主机设备104接收读取命令时,控制器可以识别指示用于从NVM110读取数据的读取电压阈值偏移的目标阈值向量608。例如,当读取命令是与特定管芯相关联的第一读取命令时,目标阈值向量可以对应于图4的参数403,该参数可以是指示与第一读取命令(例如,动态读取命令404)相关联的管芯的读取阈值电压偏移的字节序列。另选地,当读取命令是与同一管芯相关联的第二或稍后读取命令时,目标阈值向量可以对应于图4的参数407,该参数可以是指示与第二或稍后读取命令(例如,动态读取命令408)相关联的管芯的读取阈值电压偏移的字节序列。目标阈值向量608还可以具有与阈值历史缓冲区602中的最后一个阈值向量相同的长度。例如,目标阈值向量608可类似地由四个指示符(A、C、E和G)表示,其中每个指示符表示图4所示的参数403或407的四个字节中的对应一个。
在操作的一个示例中,控制器可以接收用于从管芯601的存储器位置605、607读取数据的第一读取命令。在此类情况下,控制器可以识别初始目标阈值向量(例如,参数403)以修改该存储器位置中的单元或页面603的读取电压阈值,并且控制器可以在执行读取操作(例如,动态读取命令404)之前发送设定特征命令(例如,设定特征命令402)。然后可用初始目标阈值向量更新管芯601或页面603的阈值历史缓冲区602,从而变成管芯或页面的最后一个阈值向量。例如,当阈值历史缓冲区在固件/软件中实现时,控制器123可以用最近识别的阈值向量更新缓冲区。在另一个示例中,当阈值历史缓冲区在硬件中实现时,可以用来自特征寄存器的读取电压阈值偏移自动更新阈值历史缓冲区(例如,响应于设定特征命令402)。
随后,控制器可以接收用于从管芯601的存储器位置605、607读取数据的第二读取命令。在此类情况下,控制器可以识别目标阈值向量608(例如,参数407)以修改该存储器位置中的单元或页面603的读取电压阈值。然而,如果自前一设定特征命令以来阈值向量或偏移未改变,则控制器可以在执行读取操作(例如,动态读取命令408)之前避免发送另一设定特征命令(例如,设定特征命令406)。
为了确定偏移是否已改变,控制器使用比较器604将目标阈值向量608与对应于管芯601或页面603的阈值历史缓冲区602中的最后一个阈值向量进行比较。如果比较的结果610指示参数相同,则控制器避免重新传输设定特征命令,并且可基于先前存储的电压阈值偏移来执行动态读取命令(例如,动态读取命令408)。另选地,如果比较的结果610指示参数不同,则控制器重新传输设定特征命令(例如,设定特征命令406)并基于更新后的电压阈值偏移来执行动态读取命令。例如,如果比较器604包括XOR门,则当结果610为零时,控制器可避免重新传输设定特征命令,并且当结果610为非零时,控制器可重新传输设定特征命令。类似地,如果比较器604包括XNOR门,则当结果610为非零时,控制器可避免重新传输设定特征命令,并且当结果610为零时,控制器可重新传输设定特征命令。然后可以用目标阈值向量更新阈值历史缓冲区602,从而成为管芯601或页面603的最后一个阈值向量。例如,当阈值历史缓冲区在硬件中实现时,可用来自更新后的特征寄存器的经修改的读取电压阈值偏移自动更新阈值历史缓冲区(例如,响应于设定特征命令406)。
因此,由于当读取电压阈值偏移未改变时,存储设备可以避免发送重复设定特征命令,因此可以减少存储设备的读取延迟。例如,图7示出了相对于图4的经修改的命令序列的示例700,其中控制器可基于图6中阈值向量的比较的结果610来避免重新传输用于同一管芯的设定特征命令。例如,虽然控制器可以在发送用于特定管芯的初始动态读取命令704之前响应于来自主机设备的读取命令而发送初始设定特征命令702,但是控制器可以基于上述阈值向量比较结果,在发送另一动态读取命令706之前,避免响应于后续读取命令而发送另一设定特征命令。
图8示出了用于防止具有相同读取电压阈值偏移的多个设定特征命令的重新传输的方法的示例流程图800。例如,方法可在存储设备102(诸如图1所示的存储设备)中进行。流程图中的每个步骤可使用如下所述的控制器(例如,控制器123)或通过一些其他合适的装置来控制。任选的方面以虚线示出。
如框802所表示,控制器从主机设备接收针对存储在存储器的第一存储器位置中的数据的第一读取命令。例如,参见图1和图6,控制器123可以从主机设备104接收针对存储在NVM 110的存储器位置112(例如,存储器位置605)中的数据119的第一读取命令。
如框804所表示,控制器识别第一参数以修改与第一存储器位置相关联的第一读取阈值。第一参数可包括第一电压设置。第一参数还可指示具有第一存储器位置的管芯。此外,第一参数可指示第一存储器位置的第一页面。例如,参见图1、图3、图4和图6,控制器123可以识别参数403,例如包括一个或多个指示符606(例如,电压设置或读取电压阈值偏移)的阈值向量,以修改管芯601的存储器位置605中的单元116的读取电压阈值302、304、306。阈值向量可以存储在阈值历史缓冲区602中,该阈值向量与管芯601或与管芯601中的存储器位置605的页面603相关联,对应于读取命令。因此,参数403可指示管芯601或页面603(例如,基于阈值历史缓冲区关联)。
如框806所表示,控制器执行用于基于第一参数修改第一读取阈值的第一设定特征命令。例如,参见图1和图4,控制器123可以执行用于基于参数403修改读取阈值电压302、304、306的设定特征命令402。
如框808所表示,控制器可将第一参数存储在存储器的高速缓存中。例如,参见图1、图4和图6,控制器123可将参数403存储在阈值历史缓冲区602中作为页面603或管芯601的最后一个阈值向量。阈值历史缓冲区602可以存储在易失性存储器118中(例如,高速缓存122中)。
如框810所表示,控制器从主机设备接收针对存储在存储器的第二存储器位置中的数据的第二读取命令。例如,参见图1和图6,控制器123可以从主机设备104接收针对存储在NVM 110的存储器位置112(例如,存储器位置607)中的数据119的第二读取命令。
如框812所表示,控制器识别第二参数以修改与第二存储器位置相关联的第二读取阈值。第二参数可包括第二电压设置。第二参数还可指示具有第二存储器位置的管芯。此外,第二参数可指示第二存储器位置的第二页面。例如,参见图1、图3、图4和图6,控制器123可以识别参数407,例如包括一个或多个指示符606(例如,电压设置或读取电压阈值偏移)的目标阈值向量608,以修改管芯601的存储器位置607中的单元116的读取电压阈值302、304、306。随后,目标阈值向量608可以覆盖阈值历史缓冲区602中的数据,该数据与管芯601或与管芯601中的存储器位置607的页面603相关联,对应于读取命令。因此,参数407可指示管芯601或页面603(例如,基于阈值历史缓冲区关联)。
如框814所表示,控制器使用比较器确定第二参数何时与第一参数相同。例如,比较器可包括一个或多个异或(XOR)门或者异或非(XNOR)门。例如,参见图1、图4和图6,控制器123可以使用比较器604确定参数403(阈值历史缓冲区602中的最后一个阈值向量)是否与参数407(目标阈值向量608)相同。例如,比较器604可包括XOR门或XNOR门。
比较器604可提供用于将阈值历史缓冲区602中的最后一个阈值向量(第一参数)与目标阈值向量608(第二参数)进行比较的装置。在一个示例中,比较器604可使用控制器123的一个或多个处理器来实现。例如,比较器604可在固件/软件中实现(例如,作为XOR或XNOR操作数)。在另一个示例中,比较器604可在硬件中实现,如图6所示。例如,比较器604可包括有线连接到阈值历史缓冲区602的XOR门或XNOR门。比较器604的长度可对应于阈值历史缓冲区602的长度。例如,如果阈值历史缓冲区602的长度跨越32位,则比较器604可以包括分别从阈值历史缓冲区接收各个位的32个XOR门或XNOR门。另外,虽然图6示出了一个比较器604和阈值历史缓冲区602,但是可以存在多个比较器和阈值历史缓冲区。例如,在如上所述多个阈值历史缓冲区分别与不同管芯(或页面)相关联的情况下,多个比较器604可以包括在硬件中,这些比较器单独地有线连接到相应的阈值历史缓冲区。
最后,如框816所表示,当第二参数与第一参数相同时,控制器可以避免执行用于修改第二读取阈值的第二设定特征命令。例如,参见图1、图4、图6和图7,当如由比较器604确定的,参数403、407相同时,控制器123可以避免执行用于修改读取电压阈值302、304、306的设定特征命令406。因此,如图7所示,控制器123可以发送动态读取命令706而不发送紧接在前的设定特征命令。另选地,如果第二参数与第一参数不同,则控制器123可执行设定特征命令406。阈值历史缓冲区602可以对应地用最后一个阈值向量(参数407)更新。
因此,本公开减少了由对于同一管芯具有相同电压阈值偏移的多个设定特征命令引起的读取延迟。在同一管芯上执行的动态读取可以被最小化为单个设定特征命令,从而减少由具有相同读取电压阈值偏移的多个设定特征命令引起的低效总线利用率。此外,可以通过节省用于准备后续动态读取操作的大量时间(例如,700ns)来改善随机读取性能,从而允许在所节省的时间内执行更多的读取操作。
提供本公开的各个方面以使本领域的普通技术人员能够实践本发明。对贯穿本公开呈现的示例性实施方案的各种修改对于本领域的技术人员而言将是显而易见的,并且本文所公开的概念可扩展到其他磁存储设备。因此,权利要求书并非旨在限于本公开的各个方面,而是旨在被赋予与权利要求书的语言一致的全部范围。本领域的普通技术人员已经知道或之后知道的贯穿本公开描述的示例性实施方案的各个部件的所有结构等同物和功能等同物以引用的方式明确地并入本文并旨在被权利要求所涵盖。此外,无论在权利要求中是否明确地叙述此公开内容,本文公开的内容都并非旨在贡献给社会大众。依据美国35U.S.C.§112或另一司法管辖中的类似法规或法律规则,将不解释任何权利要求要素,除非使用短语“用于……的装置”来明确地叙述该要素,或在方法权利要求的情况下使用短语“用于……的步骤”来叙述该要素。
Claims (20)
1.一种存储设备,包括:
存储器,所述存储器包括第一存储器位置和第二存储器位置;和
控制器,所述控制器被配置为从主机设备接收针对存储在所述第一存储器位置中的数据的第一读取命令,识别第一参数以修改与所述第一存储器位置相关联的第一读取阈值,并且执行用于基于所述第一参数修改所述第一读取阈值的第一设定特征命令;
其中所述控制器被进一步配置为从所述主机设备接收针对存储在所述第二存储器位置中的数据的第二读取命令,识别第二参数以修改与所述第二存储器位置相关联的第二读取阈值,并且当所述第二参数与所述第一参数相同时,避免执行用于修改所述第二读取阈值的第二设定特征命令。
2.根据权利要求1所述的存储设备,其中所述第一参数包括第一电压设置,并且所述第二参数包括第二电压设置。
3.根据权利要求1所述的存储设备,其中所述存储器还包括高速缓存,并且其中所述控制器被进一步配置为将所述第一参数存储在所述高速缓存中。
4.根据权利要求1所述的存储设备,其中所述控制器被进一步配置为使用比较器确定所述第二参数何时与所述第一参数相同。
5.根据权利要求4所述的存储设备,其中所述比较器包括一个或多个异或(XOR)门或者异或非(XNOR)门。
6.根据权利要求1所述的存储设备,其中所述存储器包括具有所述第一存储器位置和所述第二存储器位置的管芯,并且其中所述第一参数和所述第二参数各自指示所述管芯。
7.根据权利要求1所述的存储设备,其中所述第一存储器位置包括第一页面,其中所述第二存储器位置包括第二页面,并且其中所述第一参数指示所述第一页面,并且所述第二参数指示所述第二页面。
8.一种方法,包括:
从主机设备接收针对存储在存储设备的存储器的第一存储器位置中的数据的第一读取命令;
识别第一参数以修改与所述第一存储器位置相关联的第一读取阈值;
执行用于基于所述第一参数修改所述第一读取阈值的第一设定特征命令;
从所述主机设备接收针对存储在所述存储设备的所述存储器的第二存储器位置中的数据的第二读取命令;
识别第二参数以修改与所述第二存储器位置相关联的第二读取阈值;以及
当所述第二参数与所述第一参数相同时,避免执行用于修改所述第二读取阈值的第二设定特征命令。
9.根据权利要求8所述的方法,其中所述第一参数包括第一电压设置,并且其中所述第二参数包括第二电压设置。
10.根据权利要求8所述的方法,还包括:
使用比较器确定所述第二参数何时与所述第一参数相同。
11.根据权利要求10所述的方法,其中所述比较器包括一个或多个异或(XOR)门或者异或非(XNOR)门。
12.根据权利要求8所述的方法,其中所述存储器包括具有所述第一存储器位置和所述第二存储器位置的管芯,并且其中所述第一参数和所述第二参数各自指示所述管芯。
13.根据权利要求8所述的方法,其中所述第一存储器位置包括第一页面,并且所述第二存储器位置包括第二页面,并且其中所述第一参数指示所述第一页面,并且所述第二参数指示所述第二页面。
14.一种存储设备,包括:
存储器,所述存储器包括第一存储器位置和第二存储器位置;
控制器,所述控制器被配置为从主机设备接收针对存储在所述第一存储器位置中的数据的第一读取命令,识别第一参数以修改与所述第一存储器位置相关联的第一读取阈值,执行用于基于所述第一参数修改所述第一读取阈值的第一设定特征命令,从所述主机设备接收针对存储在所述第二存储器位置中的数据的第二读取命令,并且识别第二参数以修改与所述第二存储器位置相关联的第二读取阈值;和
用于将所述第一参数与所述第二参数进行比较的装置;
其中所述控制器被进一步配置为基于所述用于比较的装置确定所述第二参数何时与所述第一参数相同,并且当所述第二参数与所述第一参数相同时,避免执行用于修改所述第二读取阈值的第二设定特征命令。
15.根据权利要求14所述的存储设备,其中所述第一参数包括第一电压设置,并且所述第二参数包括第二电压设置。
16.根据权利要求14所述的存储设备,其中所述存储器还包括高速缓存,并且其中所述控制器被进一步配置为将所述第一参数存储在所述高速缓存中。
17.根据权利要求14所述的存储设备,其中所述用于比较的装置包括一个或多个异或(XOR)门。
18.根据权利要求14所述的存储设备,其中所述用于比较的装置包括一个或多个异或非(XNOR)门。
19.根据权利要求14所述的存储设备,其中所述存储器包括具有所述第一存储器位置和所述第二存储器位置的管芯,并且其中所述第一参数和所述第二参数各自指示所述管芯。
20.根据权利要求14所述的存储设备,其中所述第一存储器位置包括第一页面,其中所述第二存储器位置包括第二页面,并且其中所述第一参数指示所述第一页面,并且所述第二参数指示所述第二页面。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/835,836 US11294819B2 (en) | 2020-03-31 | 2020-03-31 | Command optimization through intelligent threshold detection |
US16/835,836 | 2020-03-31 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113467704A true CN113467704A (zh) | 2021-10-01 |
Family
ID=76968879
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010528373.1A Pending CN113467704A (zh) | 2020-03-31 | 2020-06-11 | 通过智能阈值检测的命令优化 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11294819B2 (zh) |
KR (1) | KR102365602B1 (zh) |
CN (1) | CN113467704A (zh) |
DE (1) | DE102020115970B3 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11610116B2 (en) | 2018-12-31 | 2023-03-21 | SK Hynix Inc. | Storage device performance optimization using deep learning |
US11960989B2 (en) | 2020-07-24 | 2024-04-16 | SK Hynix Inc. | Read threshold estimation systems and methods using deep learning |
US11393539B2 (en) * | 2020-11-20 | 2022-07-19 | SK Hynix Inc. | Systems and methods for determining change of read threshold voltage |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6360302B1 (en) * | 1999-11-05 | 2002-03-19 | International Business Machines Corporation | Method and system for dynamically changing page types in unified scalable shared-memory architectures |
US20130194864A1 (en) * | 2012-01-30 | 2013-08-01 | Hitachi Global Storage Technologies Netherlands B.V. | Implementing enhanced data write for multi-level cell (mlc) memory using threshold voltage-drift or resistance drift tolerant moving baseline memory data encoding |
US20170162268A1 (en) * | 2013-11-01 | 2017-06-08 | Seagate Technology Llc | Reduction or Elimination of a Latency Penalty Associated With Adjusting Read Thresholds for Non-Volatile Memory |
CN107094370A (zh) * | 2012-05-04 | 2017-08-25 | 希捷科技有限公司 | 固态硬盘控制器的0‑1平衡管理 |
CN107767914A (zh) * | 2016-08-19 | 2018-03-06 | 东芝存储器株式会社 | 半导体存储装置及存储器系统 |
US20180136875A1 (en) * | 2016-11-15 | 2018-05-17 | Samsung Electronics Co., Ltd. | Method and system for managing host memory buffer of host using non-volatile memory express (nvme) controller in solid state storage device |
US20180293029A1 (en) * | 2016-03-04 | 2018-10-11 | Western Digital Technologies, Inc. | Temperature variation compensation |
US20190066809A1 (en) * | 2017-08-31 | 2019-02-28 | SK Hynix Inc. | Read disturb detection and recovery with adaptive thresholding for 3-d nand storage |
CN109671462A (zh) * | 2017-10-17 | 2019-04-23 | 三星电子株式会社 | 具有参数校准功能的存储设备及其操作方法 |
US10290331B1 (en) * | 2017-04-28 | 2019-05-14 | EMC IP Holding Company LLC | Method and system for modulating read operations to support error correction in solid state memory |
CN110197690A (zh) * | 2018-02-26 | 2019-09-03 | 三星电子株式会社 | 非易失性存储器器件及其操作方法 |
CN110297596A (zh) * | 2018-03-21 | 2019-10-01 | 北京忆恒创源科技有限公司 | 具有宽工作温度范围的存储设备 |
CN110491437A (zh) * | 2018-05-14 | 2019-11-22 | 慧荣科技股份有限公司 | 通过机器学习进行存储器存取管理的方法与相关存储装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009072102A2 (en) | 2007-12-05 | 2009-06-11 | Densbits Technologies Ltd. | System and methods employing mock thresholds to generate actual reading thresholds in flash memory devices |
US8400858B2 (en) | 2008-03-18 | 2013-03-19 | Apple Inc. | Memory device with reduced sense time readout |
US8259506B1 (en) | 2009-03-25 | 2012-09-04 | Apple Inc. | Database of memory read thresholds |
US8467249B2 (en) | 2010-07-06 | 2013-06-18 | Densbits Technologies Ltd. | Systems and methods for storing, retrieving, and adjusting read thresholds in flash memory storage system |
US8869008B2 (en) | 2013-01-17 | 2014-10-21 | Apple Inc. | Adaptation of analog memory cell read thresholds using partial ECC syndromes |
US9251053B2 (en) * | 2013-03-14 | 2016-02-02 | SanDisk Technologies, Inc. | Managing configuration parameters for a non-volatile medium |
US9146850B2 (en) | 2013-08-01 | 2015-09-29 | SMART Storage Systems, Inc. | Data storage system with dynamic read threshold mechanism and method of operation thereof |
US9298549B2 (en) | 2013-12-11 | 2016-03-29 | International Business Machines Corporation | Read buffer architecture supporting integrated XOR-reconstructed and read-retry for non-volatile random access memory (NVRAM) systems |
US9640270B2 (en) * | 2014-08-12 | 2017-05-02 | Sandisk Technologies Llc | System and method of using multiple read operations |
US9659637B2 (en) * | 2015-08-11 | 2017-05-23 | Western Digital Technologies, Inc. | Correlating physical page addresses for soft decision decoding |
US9946469B2 (en) | 2016-03-21 | 2018-04-17 | Smart Modular Technologies, Inc. | Solid state storage system with latency management mechanism and method of operation thereof |
US10347331B2 (en) | 2016-06-13 | 2019-07-09 | SK Hynix Inc. | Read threshold optimization in flash memories |
US10043575B2 (en) * | 2016-08-10 | 2018-08-07 | SK Hynix Inc. | Memory system with read threshold estimation and operating method thereof |
-
2020
- 2020-03-31 US US16/835,836 patent/US11294819B2/en active Active
- 2020-06-11 KR KR1020200070782A patent/KR102365602B1/ko active IP Right Grant
- 2020-06-11 CN CN202010528373.1A patent/CN113467704A/zh active Pending
- 2020-06-17 DE DE102020115970.6A patent/DE102020115970B3/de active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6360302B1 (en) * | 1999-11-05 | 2002-03-19 | International Business Machines Corporation | Method and system for dynamically changing page types in unified scalable shared-memory architectures |
US20130194864A1 (en) * | 2012-01-30 | 2013-08-01 | Hitachi Global Storage Technologies Netherlands B.V. | Implementing enhanced data write for multi-level cell (mlc) memory using threshold voltage-drift or resistance drift tolerant moving baseline memory data encoding |
CN107094370A (zh) * | 2012-05-04 | 2017-08-25 | 希捷科技有限公司 | 固态硬盘控制器的0‑1平衡管理 |
US20170162268A1 (en) * | 2013-11-01 | 2017-06-08 | Seagate Technology Llc | Reduction or Elimination of a Latency Penalty Associated With Adjusting Read Thresholds for Non-Volatile Memory |
US20180293029A1 (en) * | 2016-03-04 | 2018-10-11 | Western Digital Technologies, Inc. | Temperature variation compensation |
CN107767914A (zh) * | 2016-08-19 | 2018-03-06 | 东芝存储器株式会社 | 半导体存储装置及存储器系统 |
KR20180054394A (ko) * | 2016-11-15 | 2018-05-24 | 삼성전자주식회사 | 호스트 메모리 버퍼(Host Memory Buffer)를 관리하기 위한 NVMe(Non-Volatile Memory Express) 컨트롤러를 포함하는 솔리드 스테이트 저장 장치(solid state storage device), 이를 포함하는 시스템 및 호스트의 호스트 메모리 버퍼를 관리하는 방법 |
US20180136875A1 (en) * | 2016-11-15 | 2018-05-17 | Samsung Electronics Co., Ltd. | Method and system for managing host memory buffer of host using non-volatile memory express (nvme) controller in solid state storage device |
US10290331B1 (en) * | 2017-04-28 | 2019-05-14 | EMC IP Holding Company LLC | Method and system for modulating read operations to support error correction in solid state memory |
US20190066809A1 (en) * | 2017-08-31 | 2019-02-28 | SK Hynix Inc. | Read disturb detection and recovery with adaptive thresholding for 3-d nand storage |
CN109427406A (zh) * | 2017-08-31 | 2019-03-05 | 爱思开海力士有限公司 | 用于3-d nand存储器的具有自适应阈值的读取干扰检测和恢复 |
CN109671462A (zh) * | 2017-10-17 | 2019-04-23 | 三星电子株式会社 | 具有参数校准功能的存储设备及其操作方法 |
CN110197690A (zh) * | 2018-02-26 | 2019-09-03 | 三星电子株式会社 | 非易失性存储器器件及其操作方法 |
CN110297596A (zh) * | 2018-03-21 | 2019-10-01 | 北京忆恒创源科技有限公司 | 具有宽工作温度范围的存储设备 |
CN110491437A (zh) * | 2018-05-14 | 2019-11-22 | 慧荣科技股份有限公司 | 通过机器学习进行存储器存取管理的方法与相关存储装置 |
Also Published As
Publication number | Publication date |
---|---|
DE102020115970B3 (de) | 2021-08-12 |
US11294819B2 (en) | 2022-04-05 |
US20210303474A1 (en) | 2021-09-30 |
KR102365602B1 (ko) | 2022-02-18 |
KR20210121994A (ko) | 2021-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102365602B1 (ko) | 지능형 임계치 검출을 통한 커맨드 최적화 | |
US11513723B2 (en) | Read handling in zoned namespace devices | |
CN113196252B (zh) | 基于温度以不同的传输速率重新定位存储器中的数据 | |
CN114138682A (zh) | 使用子块模式的分区命名空间限制缓解 | |
KR102502318B1 (ko) | 판독-수정-기록 동작들의 감소된 레이턴시를 위한 시스템 및 방법 | |
US11314445B2 (en) | Pattern tracking for efficiently predicting control pages | |
US11726717B2 (en) | NAND dropped command detection and recovery | |
US11892928B2 (en) | Delayed thermal throttling and associated data routing techniques | |
US11481150B2 (en) | Read modify write optimization for video performance | |
US11281405B2 (en) | Controlled die asymmetry during MLC operations for optimal system pipeline | |
US11604735B1 (en) | Host memory buffer (HMB) random cache access | |
US20220374351A1 (en) | Adaptive context metadata message for optimized two-chip performance | |
US20220291836A1 (en) | Simplified high capacity die and block management | |
US11934700B2 (en) | Fused command handling | |
CN113253910B (zh) | Nand丢弃的命令检测和恢复 | |
US11817154B2 (en) | Optimized threshold translation from serialized pipeline | |
US11782635B2 (en) | Method to ensure message arrival before a message pointer | |
US11853572B2 (en) | Encoding-aware data routing | |
US20240094903A1 (en) | Hybrid logical to physical mapping for zns based ssds | |
US20230154504A1 (en) | Mlm mapped nand latch |
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 |