CN113253910A - Nand丢弃的命令检测和恢复 - Google Patents
Nand丢弃的命令检测和恢复 Download PDFInfo
- Publication number
- CN113253910A CN113253910A CN202010516607.0A CN202010516607A CN113253910A CN 113253910 A CN113253910 A CN 113253910A CN 202010516607 A CN202010516607 A CN 202010516607A CN 113253910 A CN113253910 A CN 113253910A
- Authority
- CN
- China
- Prior art keywords
- die
- controller
- command
- status
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000001514 detection method Methods 0.000 title abstract description 15
- 238000011084 recovery Methods 0.000 title abstract description 4
- 238000003860 storage Methods 0.000 claims description 71
- 239000004020 conductor Substances 0.000 claims description 3
- 238000013507 mapping Methods 0.000 description 28
- 238000000034 method Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 13
- 230000004044 response Effects 0.000 description 11
- 238000004891 communication Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 230000000246 remedial effect Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 238000012937 correction Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000003111 delayed effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000005055 memory storage Effects 0.000 description 3
- 230000000737 periodic effect Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000001351 cycling effect Effects 0.000 description 2
- 230000000593 degrading effect Effects 0.000 description 2
- 229910052751 metal Inorganic materials 0.000 description 2
- 239000002184 metal Substances 0.000 description 2
- 150000002739 metals Chemical class 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 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
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000012005 ligant binding assay Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical 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/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/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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1051—Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
- G11C7/1063—Control signal output circuits, e.g. status or busy flags, feedback command signals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- 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/32—Timing circuits
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)
- Microelectronics & Electronic Packaging (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Read Only Memory (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明题为“NAND丢弃的命令检测和恢复”。本发明提供了包括存储器和控制器的存储设备的各方面,该存储设备允许基于从主机设备接收的命令的管芯状态(就绪/忙碌状态)来检测被丢弃命令。存储器可包括由芯片启用(CE)控制的管芯。在使用CE选择管芯之后,控制器在接收到命令之后在最小时间和最大时间之间等待,以查询管芯状态,其中最小时间是预期命令开始执行的时间,并且最大时间是预期命令完成执行的最短时间。在等待时间段之后,控制器查询管芯状态。如果在管芯状态应当已经被读取为忙碌时管芯状态为就绪,则控制器检测到与数据相关联的命令被丢弃,并且请求主机设备重新发出命令。
Description
技术领域
本公开整体涉及电子设备,并且更具体地涉及存储设备。
背景技术
存储设备使得用户能够存储和检索数据。存储设备的示例包括非易失性存储器设备。非易失性存储器通常在电力循环之后保持数据。非易失性存储器的示例是闪存存储器,该闪存存储器可包括一个或多个管芯上的 NAND单元的阵列。闪存存储器可存在于固态设备(SSD)、安全数字(SD)卡等中。
闪存存储设备可存储与数据相关联的控制信息。例如,闪存存储设备可保持控制表,该控制表包括逻辑地址到物理地址的映射。该控制表用于跟踪逻辑扇区或逻辑块在闪存存储器中的物理位置。控制表存储在非易失性存储器中,以使得能够在电力循环之后访问所存储的数据。
闪存存储设备可与共享单条总线的多个管芯封装在一起。每个管芯可包括芯片启用(CE)(或芯片选择(CS))引脚,该引脚允许闪存设备的控制器发送信号以启用(或选择)管芯中的一者,以用于执行来自主机设备的命令。例如,当闪存存储设备接收到从一个管芯中读取数据的读取命令时,控制器可在从管芯中读取数据之前使用CE来选择该管芯(例如,激活或唤醒该管芯)。控制器可通过相应地发送指向这些管芯的CE来在管芯之间进行选择。
然而,当闪存设备发送CE信号以在不同管芯之间进行选择或激活不同管芯时,该管芯可能无法正确地对该CE信号作出响应。例如,如果 NAND电路中存在诸如金属之间短路的缺陷,则该管芯可能在晚于预期的时间被激活。如果控制器随后在管芯被成功激活之前尝试从该管芯读取、写入或擦除数据,则该管芯可能不对命令进行处理。因此,可能静默地丢弃该命令。
发明内容
本文公开了存储设备的一个方面。存储设备包括存储器,该存储器被配置成存储数据和针对与该数据相关联的命令的管芯状态。该管芯状态包括就绪状态或忙碌状态中的一者。存储设备还包括控制器,该控制器被配置成从主机设备接收与数据相关联的命令。该控制器被进一步配置成在接收到命令之后等待时间段tDCDmin<=t<tDCDmax,以查询管芯状态,其中 tDCDmin是预期开始执行命令的最小时间,并且tDCDmax是预期完成执行命令的最小时间。该控制器被进一步配置成在等待该时间段之后查询管芯状态,并且基于该管芯状态来检测与数据相关联的命令是否被丢弃。
本文公开了存储设备的另一方面。存储设备包括存储器,该存储器被配置成存储数据和用于与该数据相关联的命令的管芯状态。存储器包括由一个或多个CE信号控制的多个存储器位置。存储设备还包括控制器,该控制器被配置成从主机设备接收与多个存储器位置中的存储器位置的数据相关联的命令,并且使用一个或多个CE信号来选择该存储器位置。该控制器被进一步配置成在接收到命令之后等待时间段tDCDmin<=t<tDCDmax,以查询管芯状态,其中tDCDmin是预期开始执行命令的最小时间,并且tDCDmax是预期完成执行命令的最小时间。该控制器被进一步配置成在等待该时间段之后查询管芯状态,并且基于该管芯状态来检测与数据相关联的命令是否被丢弃。该管芯状态包括就绪状态或忙碌状态中的一者。
本文公开了存储设备的另外的方面。存储设备包括存储器,该存储器被配置成存储数据和用于与该数据相关联的命令的管芯状态。该管芯状态包括就绪状态或忙碌状态中的一者。存储设备还包括控制器,该控制器被配置成从主机设备接收与数据相关联的命令。该控制器被进一步配置成在接收到命令之后等待时间段tDCDmin<=t<tDCDmax,以查询管芯状态,其中 tDCDmin是预期开始执行命令的最小时间,并且tDCDmax是预期完成执行命令的最小时间。该控制器被进一步配置成在等待该时间段之后查询管芯状态,并且检测与数据相关联的命令被丢弃,并且在管芯状态为就绪状态时请求主机设备重新发出该命令。
应当理解,从下面的详细描述中,存储设备的其他各方面对本领域的技术人员将变得显而易见,其中以图示的方式示出和描述装置和方法的各个方面。如将认识到的,这些方面可以其他的和不同的形式来实现,并且其若干细节能够在各个其他方面进行修改。因此,附图和具体实施方式本质上被认为是例示性的而不是限制性的。
附图说明
现将参考附图以举例的方式而不是限制的方式在具体实施方式中呈现本发明的各个方面,其中:
图1是示出与主机设备通信的存储设备的示例性实施方案的框图。
图2是示出图1的存储设备的非易失性存储器中的逻辑到物理映射表的示例的概念图。
图3是示出与图1的存储设备中的多个管芯通信的控制器的示例的概念图。
图4是示出包括由图1的存储设备进行的被丢弃命令检测的命令定时序列的示例的概念图。
图5是示出图1的存储设备中的控制器与管芯之间的信号通信的示例的概念性时序图。
图6是示出由图1的存储设备执行被丢弃命令检测的方法的流程图。
图7是示出由图1的存储设备检测被丢弃命令的示例性方法的流程图。
具体实施方式
下面结合附图列出的详细描述旨在作为对本发明的各个示例性实施方案的描述,而不旨在表示可实践本发明的唯一实施方案。该详细描述包括具体细节,其目的在于提供对本发明的透彻理解。然而,对本领域的技术人员将显而易见的是,可在没有这些具体细节的情况下实践本发明。在一些情况下,公知结构和部件以框图的形式示出,以便避免使本发明的概念模糊不清。首字母缩略词和其他描述性术语可仅为了方便和清楚起见而使用,并非旨在限制本发明的范围。
字词“示例性”或“示例”在本文中用于表示用作示例、实例或说明。本文中描述为“示例性”的任何示例性实施方案并非一定被解释为比其他示例性实施方案更优选或更有利。同样,术语装置、方法或制品的“示例性实施方案”不要求本发明的所有示例性实施方案都包括所描述的部件、结构、特征、功能、过程、优点、有益效果或操作模式。
在以下详细描述中,将呈现与主机设备通信的存储设备的各个方面。这些方面非常适用于诸如SSD和SD卡的闪存存储设备。然而,本领域的技术人员将认识到,这些方面可扩展到能够存储数据的所有类型的存储设备。因此,对具体装置或方法的任何引用仅旨在示出本发明的各个方面,应当理解,在不脱离本公开的实质和范围的情况下,这些方面可具有广泛的应用范围。
当存储设备的控制器尝试在不同管芯的CE之间进行选择时,所选择的管芯可能不在可接受的定时参数内被激活。因此,如果控制器随后将一个或多个命令字节发送到所选择的管芯,尝试读取、写入或擦除NAND中的数据,则该管芯可能无法正确地处理命令字节,从而导致读取、写入或擦除命令被各自丢弃。由于读取命令通常是上述命令中最频繁发送的,因此这些命令在此类情况下往往被最频繁地丢弃。
由于CE间选择的问题而导致命令的丢弃可能是存储设备的控制器所未知的。例如,如果控制器尝试在意外被去激活的管芯中的NAND中执行读取命令,则数据可能不被从NAND中感测到锁存器中。因此,先前的数据(例如,来自先前的读取命令的数据)可能无意中从锁存器传送到控制器,因为例如纠错码(ECC)解码可能仍然成功,所以这种情况可能无法被存储设备检测到。虽然控制器通常发送周期性状态命令以识别管芯的指示该管芯当前正在执行命令(例如,管芯忙碌)还是已经完成执行命令(例如,管芯就绪)的就绪/忙碌状态,但在执行主机命令的最大预期时间之后才发送此类状态命令。因此,即使控制器从就绪/忙碌状态中确定管芯就绪,但是,因为管芯正确地执行了最后的命令,或者因为管芯自先前的命令以来在整个时间内保持就绪且从未进入忙碌,所以管芯是否就绪也是未知的。
解决来自被延迟的CE间选择的上述问题的一种方法是增加CE信号的认定与将总线上的命令呈现到NAND之间的时间延迟(tCS)。虽然这种方法可通过增加另外的时间来考虑延迟的CE激活而减少被丢弃命令的概率,但是这种方法不保证没有发生被丢弃命令。例如,存储设备的控制器可限于最大tCS,并且如果在该最大tCS之后恰好发生来自CE的对管芯的延迟激活,则仍然可能产生被丢弃命令。此外,因为延迟可能影响与控制器共享相同总线的所有管芯针对所有类型的命令的执行定时(例如,包括可能不具有CE间选择问题的管芯),所以增加tCS是可显著降低存储设备性能的全局变化。
因此,为了在不降低性能的情况下检测由于CE间选择问题所导致的命令的丢弃,本公开提供了一种用于被丢弃命令检测(DCD)的方法,该方法依赖于在由存储设备发出命令之后,在该存储设备可能完成命令处理之前,在时间包络内查询该存储设备的就绪/忙碌状态。时间包络被配置成由此使得存储设备的控制器不尝试过早地(例如,当命令仍然正被初始化,并且因此任何就绪/忙碌状态指示符应当无效时)或过晚地(例如,当命令可能已经完成执行时,如通常在如上所述的正常周期性状态查询期间的情况)查询状态。如果在该时间包络期间状态读取到就绪,则控制器可确定命令已被丢弃,并且可立即采取补救措施,而如果在该时间包络期间状态读取到忙碌,则控制器可确定命令正被正确地执行。因此,本公开允许控制器在不降低性能的情况下执行被丢弃命令检测,这种降低可因施加全局时间延迟(例如,tCS变化)而导致。
图1示出根据示例性实施方案的与主机设备104(也称为“主机”)通信的存储设备102的示例性框图100。主机104和存储设备102可形成系统,诸如计算机系统(例如,服务器、台式计算机、移动/膝上型计算机、平板电脑、智能电话等)。图1的部件可在或可不在物理上协同定位。就这一点而言,主机104可位于远离存储设备102的位置。尽管图1示出主机104被示为与存储设备102分开,但在其他实施方案中,主机104可全部或部分地集成到存储设备102中。另选地,主机104可在其整体上或另选地使一些功能位于存储设备102中而分布在多个远程实体上。
本领域的普通技术人员将会知道,其他示例性实施方案可包括比图1 中所示的那些元件更多或更少的元件,并且可在其他环境中实现所公开的过程。例如,其他示例性实施方案可包括与存储设备102通信的不同数量的主机,或与(多个)主机通信的多个存储设备102。
主机设备104可将数据存储到存储设备102中,并且/或者从该存储设备102检索数据。主机设备104可包括任何计算设备,包括例如计算机服务器、附网存储(NAS)单元、台式计算机、笔记本(例如,膝上型)计算机、平板电脑、诸如智能电话的移动计算设备、电视机、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流式设备等。主机设备104 可包括至少一个处理器101和主存储器103。该至少一个处理器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(PCIe)、小型计算机系统接口(SCSI)或串列 SCSI(SAS)以及其他可能的候选项的总线标准来进行交接。另选地,主机接口106可以是无线的,并且可使用例如蜂窝通信(例如,5G NR、4G LTE、3G、2G、GSM/UMTS、CDMA One/CDMA2000等)、通过接入点的无线分发方法(例如,IEEE802.11、WiFi、HiperLAN等)、红外(IR)、蓝牙、Zigbee、或者其他的无线广域网(WWAN)、无线局域网(WLAN)、无线个人局域网(WPAN)技术或类似的广域、局域和个人局域网技术来使存储设备102与主机104交接。
如图1的示例性实施方案所示,存储设备102包括非易失性存储器 (NVM)110,该非易失性存储器用于非易失性地存储从主机104接收的数据。NVM 110可包括例如闪存集成电路、NAND存储器(例如,单层单元(SLC)存储器、多层单元(MLC)存储器、三层单元(TLC)存储器、四层单元 (QLC)存储器、五层单元(PLC)存储器或它们的任何组合)或NOR存储器。 NVM110可包括多个存储器位置112,这些存储器位置可存储用于操作存储设备102的系统数据或从主机接收的用于存储在存储设备102中的用户数据。例如,NVM可具有交叉点架构,该交叉点架构包括具有n行和m列的2-D NAND阵列的存储器位置112,其中m和n根据NVM的大小来预定义。在图1的所示的示例性实施方案中,每个存储器位置112可以是包括多个单元116的块114。该单元116可以是例如SLC、MLC、TLC、QLC 和/或PLC。存储器位置112的其他示例是可能的;例如,每个存储器位置可以是包含多个块的管芯。此外,每个存储器位置可以包括3-DNAND阵列中的一个或多个块。此外,所示的存储器位置112可以是被映射到一个或多个物理块的逻辑块。
存储设备102还包括易失性存储器118,该易失性存储器可例如包括动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)。易失性存储器118中存储的数据可包括从NVM110中读取的数据或待写入NVM 110 中的数据。就这一点而言,易失性存储器118可包括用于临时存储数据的写入缓冲器或读取缓冲器。虽然图1将易失性存储器118示出为远离存储设备102的控制器123,但该易失性存储器118可集成到控制器123中。
存储器(例如,NVM 110)被配置成存储从主机设备104接收的数据 119。该数据119可被存储在存储器位置112中的任一个存储器位置的单元 116中。例如,图1示出存储在不同存储器位置112中的数据119,尽管该数据可存储在相同存储器位置中。在另一示例中,存储器位置112可以是不同的管芯,并且数据可存储在不同管芯中的一个或多个中。
数据119中的每个可与逻辑地址相关联。例如,NVM 110可存储用于存储设备102的逻辑到物理(L2P)映射表120,该映射表将每个数据119与逻辑地址相关联。L2P映射表120存储针对从主机104写入的数据指定的逻辑地址到NVM 110中指示存储数据中的每个的(多个)位置的物理地址的映射。该映射可由存储设备的控制器123执行。L2P映射表可以是包括标识符的表或其他数据结构,该标识符诸如与NVM中存储数据的每个存储器位置112相关联的逻辑块地址(LBA)。虽然图1示出单个L2P映射表120存储在NVM的存储器位置112中的一者中以避免不当地使图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的一个或多个条目206相关联,该条目识别与写入NVM的数据相关联的逻辑块地址 (LBA)208、物理地址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 110中。高速缓存可以表或其他数据结构的形式加以存储,该表或其他数据结构包括与正读取数据的NVM中的每个存储器位置112相关联的逻辑地址。
NVM 110包括连接到每个存储器位置112的感测放大器124和数据锁存器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可通过将待编程的数据发送数据锁存器126来将数据119写入单元116中。控制器123被进一步配置成在向单元116读取或写入数据时访问NVM 110中的L2P映射表120。例如,控制器123可响应于来自主机设备104的读取或写入命令而从NVM 110接收逻辑到物理地址映射,识别映射到命令中所识别的逻辑地址的物理地址(例如,将逻辑地址转换为物理地址),并且访问位于所映射的物理地址处的单元116或在该单元中存储数据。
控制器123及其部件可利用嵌入式软件来实现,该嵌入式软件执行在整个本公开中描述的控制器的各种功能。另选地,用于实现前述功能和部件中的每一个的软件可存储在NVM 110中,或者存储在存储设备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通过以下方式从由物理地址指定的存储器位置112读取所请求的数据:在所读取的数据经由主机接口106返回到主机104之前,使用感测放大器124感测数据,并且将该数据存储在数据锁存器126中。
图3示出示例性示图300,该示图示出控制器302与共享总线306的多个管芯304通信。控制器302可对应于图1的控制器123,并且管芯304可对应于图1的存储器位置112。每个管芯可包括各种引脚,引脚用作控制器与管芯之间的接口。例如,每个管芯可包括:CE 308,其被配置成从控制器接收芯片启用信号;输入/输出(I/O)310,其被配置成从控制器接收命令 (例如,读取、写入或擦除数据);和就绪/忙碌(R/B)312,其被配置成向控制器输出就绪状态或忙碌状态(管芯的存储器中存储的NAND管芯状态)。为清楚起见,在图3中针对每个管芯仅示出了CE 308、I/O 310和 R/B 312;然而,管芯304可包括其他引脚。例如,每个管芯可包括:地址锁存启用(ALE),用于将地址锁存到NAND中;命令锁存启用(CLE),用于将命令锁存到命令寄存器中;读取启用(RE),用于启用输出数据缓冲器;写入启用(WE),用于将数据、地址或命令以时钟计时到NAND中;和双向数据选通信号(DQS),用于处理数据事务。
在一个示例中,控制器302可从主机设备(例如,主机设备104)接收针对不同管芯上的数据的命令。例如,控制器302可接收针对管芯304 中的一个(例如,第一管芯)上的数据的第一读取命令,并且控制器302 可接收针对管芯304中的另一个(例如,第二管芯)上的数据的第二读取命令。因此,为了执行第一读取命令,控制器302在总线306上向第一管芯的CE 308发送CE信号,并且在预先配置的时间段(例如,上述tCS) 之后,控制器302在总线306上向I/O 310发送命令,以从第一管芯中读取数据。例如,控制器可发送命令激活感测放大器(例如,图1的感测放大器124),以从第一管芯感测数据(例如,数据119),然后将所感测的数据从锁存器(例如,锁存器126)传送到控制器。当控制器等待第一读取命令被执行时,控制器302可通过在总线上向第二管芯的CE 308发送CE信号来执行第二读取命令,并且在预先配置的时间段tCS之后,控制器向I/O 310发送命令,以类似地从第二管芯感测其他数据。控制器可类似地与总线 306上的其他管芯进行交互,同时针对其相应的管芯执行命令。
如果控制器从主机设备接收到针对管芯304中的一者的新命令或确定执行来自主机设备的针对管芯304中的一者的另一所查询到的命令,则控制器进行等待,直到确定在对该管芯执行新命令之前已完成了先前的命令为止。即,控制器等待与完成执行先前的命令的最大预期时间相对应的时间段,然后通过向管芯发送周期性就绪/忙碌状态查询来轮询管芯。例如,如果控制器正计划执行针对第一管芯的另一读取命令,则控制器进行等待,直到经过上述时间为止,然后经由I/O 310向第一管芯发送状态命令,以获得其就绪/忙碌状态,或者检查R/B 312,以获得其就绪/忙碌状态。如上所述,如果控制器识别出管芯304就绪,则控制器假设管芯已完成命令执行,并且将CE信号发送到第一管芯,然后发送新命令。另选地,如果控制器识别出管芯仍然忙碌,则控制器假设管芯仍然在执行先前的命令,并且继续轮询状态,直到管芯变为就绪为止。然后,控制器执行新命令。可针对所有的管芯304类似地重复该过程。因此,控制器302可切换总线上的多个管芯之间的CE选择,以执行针对不同管芯的命令。
然而,如果CE之间存在例如由于任何管芯的CE 308的金属之间短路问题所导致的未说明的切换延迟,则控制器302可能在管芯304被CE激活以处理新命令之前,将该新命令发送到I/O 310,以在该管芯304上读取、写入或擦除数据。因此,命令可能被相应的管芯忽略或丢弃。在这种情况下,如上所述,因为作为轮询的结果初始确定管芯就绪可能存在歧义,所以控制器302可能无法简单地通过在命令执行的最大预期时间之后轮询就绪/忙碌状态来检测被丢弃命令。即,管芯可能因为该管芯完成了执行新命令,或者因为该管芯完成了执行先前的命令并且从未处理新命令而就绪。因此,被丢弃命令可能是静默的(例如,控制器未知的)。此外,如果CE 切换延迟长于极限,则将tCS增加到最大极限可能没有帮助,以及全局地牺牲总线306上的所有管芯304的性能。
为了解决这个静默被丢弃命令的问题,本公开结合了被丢弃命令检测 (DCD)的系统。图4示出包括DCD的命令执行时间线的示例性示图400。虽然图4示出控制器执行读取命令的示例,但是该控制器可执行其他命令 (例如,写入命令或擦除命令),同时执行被丢弃命令检测。在该示例中,控制器使用多字节读取命令402发出NAND读取:初始命令404(例如,00h),然后是待读取的数据的物理地址406(例如,五个或六个字节),以及后期命令408(例如,30h)。包括物理地址406的字段可包括地址位于其中的管芯的标识符。因此,参照图3,控制器302可向管芯中的一者的I/O 310发出多字节命令402,以从该管芯读取数据。
在发出针对特定管芯的读取命令之后,在对该管芯执行被丢弃命令检测(DCD)之前,控制器在初始化或开始执行命令的最小时间410与完成执行命令的最大时间412之间进行等待。例如,控制器可通过继续执行针对其他管芯的其他命令或通过避免执行任何命令来进行等待。一旦控制器已经等待多达该时间包络内的时间(例如,tDCD),控制器就执行NAND的管芯状态(例如,就绪或忙碌)的DCD状态查询414。因此,控制器可执行可接受的DCD状态查询的时间包络可由tDCD_min<tDCD<tDCD_max定义,其中最小时间410(tDCD_min)是管芯的就绪/忙碌状态有效的最短时间(例如,600ns或读取命令的另一数量),并且最大时间412 (tDCD_max)是可认为命令402完成之前的最短时间(例如,30μs或读取命令的另一数量)。因此,tDCD的最大时间412本身可以是命令执行完成的最小时间(例如,对于读取命令,处于30μs与100μs之间)。
如上文参照图3所述,控制器可基于由管芯提供的R/B接口对管芯的就绪/忙碌状态执行DCD状态查询414。例如,控制器可在总线306上经由I/O 310向管芯304发送状态命令,以确定就绪/忙碌状态。虽然控制器还可经由连接到R/B 312的导线从管芯读取就绪/忙碌状态,但是当多个管芯共享与图3中相同的总线时,这种方法对于DCD可能不太有利。例如,如果控制器经由单条总线连接到每个管芯的所有R/B 312(引脚),则与可识别所选择的管芯的状态命令相比,控制器可能无法确定哪个管芯发起了哪个状态。此外,保留控制器上另外的引脚以用于单独连接到每个管芯的R/B 312可能由于控制器的引脚数量有限而不切实际。
因此,图4示出控制器发送多字节状态命令以执行DCD的示例,多字节状态命令包括初始命令416(例如,F1h)和后期命令418(例如, 71h)。初始命令416可指示被DCD状态查询414作为目标的管芯,并且后期命令418可向管芯指示将该管芯的就绪/忙碌状态返回到控制器的指令。这两个命令与识别目标管芯的物理地址406结合,允许正确的管芯成功地进行解码并且接收状态命令。例如,参照图3,管芯304中的一个(第一管芯)可被识别为管芯0,并且管芯304中的另一个(第二管芯)可被识别为管芯1。因此,如果第二管芯接收识别该管芯的物理地址,然后接收初始命令F1h和后期命令71h,则该第二管芯可基于该管芯的标识符成功解码状态命令,而总线上的第一管芯和其他管芯可能无法解码状态命令。因此,第二管芯将使该管芯的就绪/忙碌状态返回到控制器。该寻址方案可防止通过(例如,在读取命令402和DCD状态查询414之间,或在初始命令 416和后期命令418之间)干预命令所引起的错误,这些命令的目标是与控制器共享相同总线的不同管芯。
在管芯从控制器接收到DCD状态查询414之后,如果管芯正在正确地执行读取命令402,则控制器将响应于来自管芯的查询而接收忙碌状态 420。基于该忙碌状态420,控制器可确定命令未被丢弃,并且在命令被完全执行并且管芯变为就绪之前,控制器可继续使用总线与其他管芯进行交互。控制器可通过在命令执行的最大预期时间(例如,标准延迟422)已完成之后轮询管芯的就绪/忙碌状态来确定该管芯何时变为就绪。例如,对于读取命令,标准延迟422可以是100μs,而对于擦除命令,标准延迟422可以是5ms。在经过标准延迟422之后,控制器可周期性地将状态命令查询 424传送到管芯,以确定该管芯仍然忙碌(例如,管芯返回另一个忙碌状态426)还是变为就绪。
然而,如果管芯未响应于DCD状态查询414返回忙碌状态420,并且相反返回到就绪状态,则控制器可确定命令被丢弃(例如,由于CE间选择延迟所导致)并且读取命令402未被正确地执行。因此,控制器可结合补救措施,诸如通知主机设备、重新发送读取命令402或执行其他纠错措施。
因此,图4的示例允许控制器成功地检测被丢弃命令,而无需等待标准延迟422来检查管芯的就绪/忙碌状态,如上所述,因为这种等待将远在 DCD的最大时间412之后,所以这对于进行确定而言可能太迟,因此由管芯报告的状态将是有歧义的。例如,对于读取命令,标准延迟422可能是 100μs,而DCD的最大时间412可能是30μs或是显著小于该标准延迟的另一数量。另外,虽然如果由控制器在最小时间410和最大时间412内的任何时间发送DCD状态查询414,则被丢弃命令可被成功地检测到,但可通过配置控制器以更接近最小时间410发送DCD状态查询414(例如,600ns 或另一数量,而不是30μs)来提高效率。因此,如果发生问题并且管芯在其应当已经返回忙碌状态420时返回到就绪状态,则控制器可以能够尽快 (例如,至少到最小时间410)确定被丢弃命令,以快速采取补救措施,而不是在DCD的最大时间412之前进行不必要的等待。
图5示出在执行读取命令(例如,图4的读取命令402)期间在控制器 (例如,控制器123或302)与管芯(例如,管芯304)之间发送的信号的示例性时序图500。虽然为了完整而在该示例中示出了上文参照图3所述的诸如CLE、ALE、WE、RE和DQS的各种信号,但下文将仅描述与信号 CE(例如,CE 308)、I/O(例如,I/O 310)和R/B(例如,R/B 312)相关的定时。
当控制器从主机设备接收读取命令时,控制器在(或大致在)定时 502处切换管芯的CE信号(例如,从1到0)。然后,控制器在(或大致在)定时504处在I/O上向管芯发出读取命令,该定时开始执行命令并且随后导致在RB上输出忙碌状态(例如,0)。随后,在定时506(例如,该定时可对应于图4的标准延迟422的跨度)期间,控制器通常不向管芯发出任何新命令,因为如图5所示,预期管芯将忙碌地执行先前的命令。相反,控制器可继续向相同总线上的其他管芯发出命令。在定时506之后,控制器可通过经由I/O发送状态命令(例如,80h)或者通过检查RB线以从定时508处开始轮询管芯,以确定管芯是否仍然忙碌。在所示的示例中,管芯仍然忙碌(例如,RB(0)仍然为0),因此控制器继续轮询,直到RB指示管芯再次就绪(例如,RB(0)稍后返回到1,尽管图中未示出)为止。然后,控制器可执行针对该管芯的新命令。
虽然图5示出正确地执行了命令(例如,RB线如预期那样进入忙碌) 的示例,但在其他示例中,命令可能被静默地丢弃。例如,如果CE切换的定时502发生的比如上所述发出读取命令的定时504更迟,则管芯可能不执行读取命令,并且RB(0)可能在整个时间内保持1(例如,就绪状态)。在预期命令完成执行时,在定时508处开始轮询就绪/忙碌状态的时候,控制器将检测就绪状态,但它将是有歧义的;控制器将无法确定RB (0)是否初始为0,然后变为1,或者其是否总是1。
因此,为了检测此类静默被丢弃命令,控制器可在所配置的最小和最大DCD定时内发送状态查询(例如,图4的DCD状态查询414)。例如,控制器可在对应于最小时间410或tDCD_min的最小时间510和对应于最大时间412或tDCD_max的最大时间512内发送状态查询。例如,最小时间510可被配置成其中预期命令在定时504处或之后在管芯中开始执行的最短时间,并且最大时间512可被配置成其中预期命令在定时506内完成执行的最短时间。因此,对于不同的管芯,最小时间和最大时间可以不同(例如,每一对tDCD最小值/最大值可取决于特定的NAND节点);例如,定时504和506对于每个管芯可能并不总是相同的。如果控制器确定状态在预期为忙碌状态时为就绪状态,则控制器可确信地确定命令已被丢弃,然后继续再次重新发出命令而无需延迟或切换CE线路。
图6示出被丢弃命令检测的方法的示例性流程图600。例如,该方法可在诸如图1所示的存储设备的存储设备102中执行。流程图中的步骤中的每个可使用如下所述的控制器(例如,控制器123)或通过一些其他合适的装置加以控制。
如框602所示,控制器构建针对管芯的NAND命令。例如,当控制器从主机设备接收到包括与管芯中的存储器位置相关联的逻辑地址的命令 (例如,读取、写入或擦除命令)时,控制器将逻辑地址转换为NAND中的物理地址。例如,参照图2,控制器在L2P映射表205(例如,图1的 L2P映射表120)中识别逻辑地址208,并且将该逻辑地址转换为待用于执行命令的物理地址210。
如框604所示,控制器向管芯发出NAND命令。例如,参照图4,控制器可发出读取命令402,该读取命令包括初始命令404(例如,00h),然后是待读取的数据的物理地址406(例如,五个或六个字节),然后是后期命令408(例如,30h)。包括物理地址406的字段可包括地址位于其中的管芯的标识符。因此,参照图3,控制器302可向管芯中的一者的I/O 310发出读取命令402,以从该管芯读取数据。另选地,控制器可响应于从主机设备接收的命令来执行其他命令(例如,写入命令或擦除命令)。
如框606所示,在发出针对管芯的NAND命令之后,控制器执行 DCD。DCD过程可由下文更详细描述的框608、610、612和618的任何组合来表示。
如框608所示,在查询管芯的就绪/忙碌状态之前,控制器等待时间 t,其中tDCD_min<=t<tDCD_max。例如,参照图4,在发出针对特定管芯的读取命令之后,在对该管芯执行DCD之前,控制器可等待在初始化或开始执行命令的最小时间410与命令完成执行的最大时间412之间的时间。例如,控制器可通过继续执行针对其他管芯的其他命令或通过避免执行任何命令来进行等待。因此,控制器可执行可接受的DCD状态查询的时间包络可由tDCD_min<tDCD<tDCD_max定义,其中最小时间410 (tDCD_min)是管芯的就绪/忙碌状态有效的最短时间,并且最大时间412 (tDCD_max)是可认为命令402完成之前的最短时间。
如框610所示,控制器可查询管芯的就绪/忙碌状态。例如,参照图 4,一旦控制器已经等待多达该时间包络内的时间(例如,tDCD),控制器就执行对管芯的管芯状态(例如,就绪或忙碌)的DCD状态查询414。例如,控制器可在总线306上经由I/O 310向管芯304发送状态命令。作为状态命令的示例,控制器可发送初始命令416(例如,F1 h),然后立即发送后期命令418(例如,71h),以对所识别的管芯执行DCD。
如框612所示,控制器确定该管芯的就绪/忙碌状态是否读取为忙碌。如果管芯读取为忙碌,则控制器可检测到命令尚未被丢弃,并且如框614 所示,控制器进行等待,以执行对管芯的就绪/忙碌状态的正常(标准)第一轮询。然后,控制器周期性地轮询管芯的状态,直到状态最终读取为就绪为止,在此之后,如框616所示,控制器向主机设备发出管芯状态正常的报告。例如,参照图4,在管芯从控制器接收到DCD状态查询414之后,如果管芯正在正确地执行读取命令402,则控制器将响应于来自管芯的查询而接收忙碌状态420。基于该忙碌状态420,控制器可确定命令未被丢弃,并且在命令被完全执行并且管芯变为就绪之前,控制器可继续使用总线与其他管芯进行交互。控制器可通过在命令执行的最大预期时间(例如,标准延迟422)已完成之后轮询管芯的就绪/忙碌状态来确定该管芯何时变为就绪。例如,在经过标准延迟422之后,控制器可周期性地将状态命令查询424传送到管芯,以确定该管芯仍然忙碌(例如,管芯返回另一个忙碌状态426)还是变为就绪。一旦管芯变为就绪,控制器就可通知主机设备管芯的操作正在正常地工作。
然而,如果管芯基于框612处的确定而读取为就绪,则控制器检测到命令被丢弃,并且如框618所示,控制器向系统发出错误,以用于重试该命令或其他操纵。例如,参照图4,如果管芯未响应于DCD状态查询414 返回忙碌状态420,并且相反返回到就绪状态,则控制器可确定命令被丢弃 (例如,由于CE间选择延迟所导致)并且读取命令402未被正确地执行。因此,控制器可结合补救措施,诸如通知主机设备、重新发送读取命令402 或执行其他纠错措施。
图7示出被丢弃命令检测的另一方法的示例性流程图700。例如,该方法可在诸如图1所示的存储设备的存储设备102中执行。流程图中的步骤中的每个可使用如下所述的控制器(例如,控制器123)或通过一些其他合适的装置加以控制。
如框702所示,控制器可从主机设备接收与多个存储器位置中的存储器位置的数据相关联的命令。多个存储器位置可由一个或多个CE信号控制;例如,多个存储器位置可包括与控制器共享单条总线的管芯。管芯状态可存储在该存储器位置中,并且该管芯状态可包括就绪状态或忙碌状态中的一者。例如,参照图3,控制器302可从主机设备(例如,主机设备 104)接收针对共享总线306的不同管芯304上的数据的命令。例如,控制器302可接收针对管芯304中的一个(例如,第一管芯)上的数据的第一读取命令,并且控制器302可接收针对管芯304中的另一个(例如,第二管芯)上的数据的第二读取命令。控制器302可对应于图1的控制器123,并且管芯304可对应于图1的存储器位置112。每个管芯可包括各种引脚,诸如:CE 308,其被配置成从控制器接收芯片启用信号;输入/输出(I/O) 310,其被配置成从控制器接收命令(例如,读取、写入或擦除数据);和就绪/忙碌(R/B)312,其被配置成向控制器输出就绪状态或忙碌状态(管芯的存储器中存储的管芯状态)。
如框704所示,控制器可使用一个或多个CE信号来选择存储器位置。例如,参照图3,当控制器302正在执行针对管芯304中的一个(例如,第一管芯)的第一读取命令时,控制器可在总线306上将CE信号发送到第一管芯的CE 308,并且当控制器正在执行针对管芯304中的另一个 (例如,第二管芯)的第二读取命令时,控制器可在总线306上将CE信号发送到第二管芯的CE 308。在预先配置的时间段(例如,上述tCS)之后,控制器302可在总线306上向I/O 310发送命令,以从对应管芯中读取数据。
如框706所示,控制器可在接收到命令之后等待时间段tDCDmin<=t< tDCDmax,以查询存储器中存储的管芯状态,其中tDCDmin是预期开始执行命令的最小时间,并且tDCDmax是预期完成执行命令的最小时间。对于不同的管芯,tDCDmin和tDCDmax可不同。例如,参照图6,如框608所示,在查询管芯的就绪/忙碌状态之前,控制器可等待时间t,其中tDCD_min<=t <tDCD_max。例如,参照图4,在发出针对特定管芯的读取命令之后,在查询该管芯的就绪/忙碌状态之前,控制器可等待在初始化或开始执行命令的最小时间410与命令完成执行的最大时间412之间的时间。参照图5,最小时间510(例如,最小时间410)可被配置成其中预期命令在定时504处或之后在管芯中开始执行的最短时间,并且最大时间512(例如,最大时间 412)可被配置成其中预期命令在定时506内完成执行的最短时间。因此,因为定时504和定时506对于每个管芯可能并不总是相同的,所以对于不同的管芯,最小时间和最大时间可以是不同的(例如,每一对tDCD最小值/最大值可取决于特定的NAND节点)。
如框708所示,控制器可在选择存储器位置并等待该时间段之后查询管芯状态。控制器可通过向单条总线上的管芯中的一者发送状态命令或读取管芯中的一者的忙碌导线中的一者来查询管芯状态。例如,参照图6,如框610所示,控制器可查询管芯的就绪/忙碌状态。例如,参照图4,一旦控制器已经等待多达该时间包络内的时间(例如,tDCD),控制器就可执行对管芯的管芯状态(例如,就绪或忙碌)的DCD状态查询414。例如,控制器可在总线306上经由I/O 310向管芯304发送状态命令。作为状态命令的示例,控制器可发送初始命令416(例如,F1 h),然后立即发送后期命令418(例如,71h),以对所识别的管芯执行DCD。另选地,控制器可经由连接到引脚R/B 312的导线从管芯中读取就绪/忙碌状态。
如框710所示,控制器可基于管芯状态来检测与数据相关联的命令是否被丢弃。例如,参照图4,在管芯从控制器接收到DCD状态查询414之后,如果管芯未正在执行命令,则管芯将响应于该查询而向控制器返回就绪状态。例如,管芯304可经由I/O 310在总线306上向控制器报告状态响应,该状态响应包括该管芯的就绪状态,或者管芯可经由R/B 312在总线306上返回“1”(就绪)。基于所识别的状态,因为控制器在预期忙碌状态时接收到就绪状态,所以控制器可确定命令被丢弃并且读取命令402未被正确地执行。
如果命令被丢弃,则如框712所示,当管芯状态为就绪状态时,控制器可请求主机设备重新发出命令。例如,参照图6,如框618所示,控制器可向系统发出错误,以用于重试命令或其他操纵。例如,参照图4,如果管芯未响应于DCD状态查询414返回忙碌状态420,并且相反返回到就绪状态,则控制器可确定命令被丢弃(例如,由于CE间选择延迟所导致)并且读取命令402未被正确地执行。因此,控制器可结合补救措施,诸如通知主机设备、重新发送读取命令402或执行其他纠错措施。
否则,如框714所示,当管芯状态为忙碌状态时,控制器重复轮询管芯状态,直到管芯状态变为就绪状态为止。例如,参照图6,如果管芯读取为忙碌,则如框614所示,控制器进行等待,以执行对管芯的就绪/忙碌状态的正常(标准)第一轮询。然后,在状态最终读取为就绪之前,控制器周期性地轮询管芯的状态。例如,在经过标准延迟422之后,控制器可周期性地将状态命令查询424传送到管芯,以确定该管芯仍然忙碌(例如,管芯返回另一个忙碌状态426)还是变为就绪。一旦管芯变为就绪,控制器就可通知主机设备管芯的操作正在正常地工作。
因此,本公开允许对被丢弃命令进行检测,同时提高系统稳定性、提高性能以及降低被丢弃命令对服务质量(QoS)的影响。通过允许检测被丢弃命令而不全局地增加使用CE来选择管芯之间的时间和最终执行每个命令的时间(例如,不增加tCS),可增加系统稳定性,因为此类方法甚至可能不保证如上所述对被丢弃命令进行检测。因此,可通过避免增加tCS来提高性能而不影响系统稳定性,从而允许命令保持快速执行。此外,因为存储设备可确定未正确执行读取感测,所以可利用提高的QoS来执行读取操作,并且,因此在将数据传送到主机设备之前,检测出非预期数据(例如,针对不同命令的通过解码或ECC检查的先前读取数据)或无效数据 (例如,未解码并因此可能强制错误恢复路径的数据)。
提供本公开的各个方面以使得本领域的普通技术人员能够实践本发明。在整个本公开所呈现的示例性实施方案的各种修改对于本领域的技术人员而言将是显而易见的,并且本文所公开的概念可扩展到其他磁性存储设备。因此,权利要求并非旨在限于本公开的各个方面,而是旨在被赋予与权利要求的语言表达一致的全部范围。本领域的普通技术人员已经知道或之后知道的整个本公开描述的示例性实施方案的各个部件的所有结构等同物和功能等同物通过引用明确地并入本文并旨在被权利要求所涵盖。此外,无论在权利要求中是否明确地叙述此公开内容,本文所公开的内容都并非旨在贡献给社会大众。将不依据美国35U.S.C.§112(f)条款、类似法令或另一司法权中的法规来解释任何权利要求要素,除非使用短语“用于…的装置”来明确地叙述该要素,或在方法权利要求的情况下使用短语“用于…的步骤”来叙述该要素。
Claims (20)
1.一种存储设备,包括:
存储器,所述存储器被配置成存储数据和针对与所述数据相关联的命令的管芯状态,所述管芯状态包括就绪状态或忙碌状态中的一者;和
控制器,所述控制器被配置成从主机设备接收与所述数据相关联的所述命令,所述控制器被进一步配置成在接收到所述命令之后等待时间段tDCDmin<=t<tDCDmax,以查询所述管芯状态,其中tDCDmin是预期开始执行所述命令的最小时间,并且tDCDmax是预期完成执行所述命令的最小时间;并且
其中所述控制器被进一步配置成在等待所述时间段之后查询所述管芯状态,并且基于所述管芯状态来检测与所述数据相关联的所述命令是否被丢弃。
2.根据权利要求1所述的存储设备,其中所述存储器包括由一个或多个芯片启用(CE)信号控制的多个存储器位置,并且与所述数据相关联的所述命令用于所述多个存储器位置中的存储器位置。
3.根据权利要求2所述的存储设备,其中所述控制器被进一步配置成使用所述一个或多个CE信号来选择所述存储器位置,并且在选择所述存储器位置之后针对所述命令查询所述管芯状态。
4.根据权利要求3所述的存储设备,其中所述多个存储器位置包括与所述控制器共享单条总线的管芯。
5.根据权利要求1所述的存储设备,其中所述控制器被配置成检测与所述数据相关联的所述命令被丢弃,并且随后在所述管芯状态为所述就绪状态时请求所述主机设备重新发出所述命令。
6.根据权利要求1所述的存储设备,其中所述控制器被进一步配置成当所述管芯状态为所述忙碌状态时重复轮询所述管芯状态,直到所述管芯状态变为所述就绪状态为止。
7.一种存储设备,包括:
存储器,所述存储器被配置成存储数据和针对与所述数据相关联的命令的管芯状态,其中所述存储器包括由一个或多个芯片启用(CE)信号控制的多个存储器位置;和
控制器,所述控制器被配置成从主机设备接收与所述多个存储器位置中的存储器位置的所述数据相关联的所述命令,并且使用所述一个或多个CE信号来选择所述存储器位置,所述控制器被进一步配置成在接收到所述命令之后等待时间段tDCDmin<=t<tDCDmax,以查询所述管芯状态,其中tDCDmin是预期开始执行所述命令的最小时间,并且tDCDmax是预期完成执行所述命令的最小时间;并且
其中所述控制器被进一步配置成在等待所述时间段之后查询所述管芯状态,并且基于所述管芯状态来检测与所述数据相关联的所述命令是否被丢弃,所述管芯状态包括就绪状态或忙碌状态中的一者。
8.根据权利要求7所述的存储设备,其中所述多个存储器位置包括与所述控制器共享单条总线的管芯。
9.根据权利要求8所述的存储设备,其中所述控制器被配置成通过以下中的一者来查询所述管芯状态:
向所述单条总线上的所述管芯中的一个管芯发送状态命令;或者
读取所述管芯中的所述一个管芯的忙碌导线。
10.根据权利要求8所述的存储设备,其中tDCDmin和tDCDmax对于不同管芯是不同的。
11.根据权利要求7所述的存储设备,其中所述控制器被配置成在所述管芯状态为所述就绪状态时检测与所述数据相关联的所述命令被丢弃。
12.根据权利要求11所述的存储设备,其中所述控制器被进一步配置成在所述管芯状态为所述就绪状态时请求所述主机设备重新发出所述命令。
13.根据权利要求7所述的存储设备,其中所述控制器被进一步配置成在所述管芯状态为所述忙碌状态时重复轮询所述管芯状态,直到所述管芯状态变为所述就绪状态为止。
14.一种存储设备,包括:
存储器,所述存储器被配置成存储数据和针对与所述数据相关联的命令的管芯状态,所述管芯状态包括就绪状态或忙碌状态中的一者;和
控制器,所述控制器被配置成从主机设备接收与所述数据相关联的所述命令,所述控制器被进一步配置成在接收到所述命令之后等待时间段tDCDmin<=t<tDCDmax,以查询所述管芯状态,其中tDCDmin是预期开始执行所述命令的最小时间,并且tDCDmax是预期完成执行所述命令的最小时间;并且
其中所述控制器被进一步配置成在等待所述时间段之后查询所述管芯状态,并且检测与所述数据相关联的命令被丢弃,并且在所述管芯状态为所述就绪状态时请求所述主机设备重新发出所述命令。
15.根据权利要求14所述的存储设备,其中所述存储器包括由一个或多个芯片启用(CE)信号控制的多个存储器位置,并且与所述数据相关联的所述命令用于所述多个存储器位置中的存储器位置。
16.根据权利要求15所述的存储设备,其中所述控制器被进一步配置成使用所述一个或多个CE信号来选择所述存储器位置,并且在选择所述存储器位置之后针对所述命令查询所述管芯状态。
17.根据权利要求15所述的存储设备,其中所述多个存储器位置包括与所述控制器共享单条总线的管芯。
18.根据权利要求17所述的存储设备,其中所述控制器被配置成通过以下中的一者来查询所述管芯状态:
向所述单条总线上的所述管芯中的一个管芯发送状态命令;或者
读取所述管芯中的所述一个管芯的忙碌导线。
19.根据权利要求17所述的存储设备,其中tDCDmin和tDCDmax对于不同管芯是不同的。
20.根据权利要求14所述的存储设备,其中所述控制器被进一步配置成在所述管芯状态为所述忙碌状态时重复轮询所述管芯状态,直到所述管芯状态变为所述就绪状态为止。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/786,889 US11150841B2 (en) | 2020-02-10 | 2020-02-10 | NAND dropped command detection and recovery |
US16/786,889 | 2020-02-10 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113253910A true CN113253910A (zh) | 2021-08-13 |
CN113253910B CN113253910B (zh) | 2024-06-04 |
Family
ID=76968730
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010516607.0A Active CN113253910B (zh) | 2020-02-10 | 2020-06-09 | Nand丢弃的命令检测和恢复 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11150841B2 (zh) |
KR (1) | KR102500896B1 (zh) |
CN (1) | CN113253910B (zh) |
DE (1) | DE102020116192A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11586393B2 (en) * | 2020-12-30 | 2023-02-21 | Macronix International Co., Ltd. | Control method for requesting status of flash memory, flash memory die and flash memory with the same |
US11836384B2 (en) | 2022-03-10 | 2023-12-05 | Western Digital Technologies, Inc. | Automatic prediction timers adaptation |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020021598A1 (en) * | 2000-08-08 | 2002-02-21 | Samsung Electronics Co., Ltd. | Nonvolatile memory, system having nonvolatile memories, and data read method of the system |
US20090089492A1 (en) * | 2007-10-01 | 2009-04-02 | Tony Yoon | Flash memory controller |
CN103282887A (zh) * | 2010-12-30 | 2013-09-04 | 桑迪士克科技股份有限公司 | 用于进行后台操作的控制器和方法 |
CN103650054A (zh) * | 2011-05-31 | 2014-03-19 | 美光科技公司 | 包含存储器系统控制器的设备和相关方法 |
US20150187399A1 (en) * | 2013-12-31 | 2015-07-02 | Sandisk Technologies Inc. | Pulse mechanism for memory circuit interruption |
CN105122220A (zh) * | 2013-03-15 | 2015-12-02 | 西部数据技术公司 | 固态驱动器中的原子写入命令支持 |
CN110308866A (zh) * | 2018-03-20 | 2019-10-08 | 爱思开海力士有限公司 | 存储器系统及其操作方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0778777B2 (ja) | 1991-02-19 | 1995-08-23 | インターナショナル・ビジネス・マシーンズ・コーポレイション | ディジタルコンピュータとメモリの通信方法および通信システム |
US7793167B2 (en) | 2007-08-23 | 2010-09-07 | International Business Machines Corporation | Detection and correction of dropped write errors in a data storage system |
US20090172213A1 (en) | 2007-12-31 | 2009-07-02 | Sowmiya Jayachandran | Command completion detection in a mass storage device |
US8996782B2 (en) | 2012-03-23 | 2015-03-31 | Kabushiki Kaisha Toshiba | Memory system and bank interleaving method |
US9335952B2 (en) | 2013-03-01 | 2016-05-10 | Ocz Storage Solutions, Inc. | System and method for polling the status of memory devices |
-
2020
- 2020-02-10 US US16/786,889 patent/US11150841B2/en active Active
- 2020-06-09 CN CN202010516607.0A patent/CN113253910B/zh active Active
- 2020-06-16 KR KR1020200073134A patent/KR102500896B1/ko active IP Right Grant
- 2020-06-18 DE DE102020116192.1A patent/DE102020116192A1/de active Pending
-
2021
- 2021-09-30 US US17/490,531 patent/US11726717B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020021598A1 (en) * | 2000-08-08 | 2002-02-21 | Samsung Electronics Co., Ltd. | Nonvolatile memory, system having nonvolatile memories, and data read method of the system |
US20090089492A1 (en) * | 2007-10-01 | 2009-04-02 | Tony Yoon | Flash memory controller |
CN103282887A (zh) * | 2010-12-30 | 2013-09-04 | 桑迪士克科技股份有限公司 | 用于进行后台操作的控制器和方法 |
CN103650054A (zh) * | 2011-05-31 | 2014-03-19 | 美光科技公司 | 包含存储器系统控制器的设备和相关方法 |
CN105122220A (zh) * | 2013-03-15 | 2015-12-02 | 西部数据技术公司 | 固态驱动器中的原子写入命令支持 |
US20150187399A1 (en) * | 2013-12-31 | 2015-07-02 | Sandisk Technologies Inc. | Pulse mechanism for memory circuit interruption |
CN110308866A (zh) * | 2018-03-20 | 2019-10-08 | 爱思开海力士有限公司 | 存储器系统及其操作方法 |
Also Published As
Publication number | Publication date |
---|---|
KR102500896B1 (ko) | 2023-02-16 |
CN113253910B (zh) | 2024-06-04 |
US20220019382A1 (en) | 2022-01-20 |
KR20210102019A (ko) | 2021-08-19 |
US11150841B2 (en) | 2021-10-19 |
US11726717B2 (en) | 2023-08-15 |
US20210247931A1 (en) | 2021-08-12 |
DE102020116192A1 (de) | 2021-08-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9342453B2 (en) | Memory channel that supports near memory and far memory access | |
US11036412B2 (en) | Dynamically changing between latency-focused read operation and bandwidth-focused read operation | |
US20190042413A1 (en) | Method and apparatus to provide predictable read latency for a storage device | |
US11354041B2 (en) | Read latency reduction through command and polling overhead avoidance | |
CN113196252B (zh) | 基于温度以不同的传输速率重新定位存储器中的数据 | |
US11726717B2 (en) | NAND dropped command detection and recovery | |
US11513723B2 (en) | Read handling in zoned namespace devices | |
KR102365602B1 (ko) | 지능형 임계치 검출을 통한 커맨드 최적화 | |
KR102502318B1 (ko) | 판독-수정-기록 동작들의 감소된 레이턴시를 위한 시스템 및 방법 | |
US11347420B2 (en) | Attribute mapping in multiprotocol devices | |
KR20190051530A (ko) | 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법 | |
US11892928B2 (en) | Delayed thermal throttling and associated data routing techniques | |
US11775222B2 (en) | Adaptive context metadata message for optimized two-chip performance | |
CN113454720B (zh) | 存储设备及其控制方法 | |
CN115346566A (zh) | 主机、存储器模块以及存储器装置的操作方法 | |
CN113467704B (zh) | 通过智能阈值检测的命令优化 | |
CN113076057B (zh) | 用于减少读取-修改-写入操作的延迟的系统和方法 | |
US20240086071A1 (en) | Ssd use of host memory buffer for improved performance | |
TWI712052B (zh) | 記憶體管理方法、儲存控制器與儲存裝置 | |
US20220121391A1 (en) | Management of operations during exception handling in memory |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |