CN107967119B - 存储设备、存储系统和计算设备 - Google Patents

存储设备、存储系统和计算设备 Download PDF

Info

Publication number
CN107967119B
CN107967119B CN201710123995.4A CN201710123995A CN107967119B CN 107967119 B CN107967119 B CN 107967119B CN 201710123995 A CN201710123995 A CN 201710123995A CN 107967119 B CN107967119 B CN 107967119B
Authority
CN
China
Prior art keywords
data
notification
storage device
communication interface
host
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.)
Active
Application number
CN201710123995.4A
Other languages
English (en)
Other versions
CN107967119A (zh
Inventor
桥本大辅
浅野滋博
植木克彦
野村胜幸
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Toshiba Memory Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Toshiba Memory Corp filed Critical Toshiba Memory Corp
Priority to CN202110086481.2A priority Critical patent/CN112817529A/zh
Publication of CN107967119A publication Critical patent/CN107967119A/zh
Application granted granted Critical
Publication of CN107967119B publication Critical patent/CN107967119B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1068Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital 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/5621Digital 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/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital 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/5621Digital 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/5628Programming or writing circuits; Data input circuits
    • G11C11/5635Erasing circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital 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/5621Digital 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/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/403Error protection encoding, e.g. using parity or ECC codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/4402Internal storage of test result, quality data, chip identification, repair information
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • G11C29/80Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
    • G11C29/816Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout
    • G11C29/82Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout for EEPROMs

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)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

一种存储设备包括非易失性存储器、可连接到主机的通信接口,以及控制器。控制器被配置为当通过通信接口接收到与数据相关联的写入命令时,执行在非易失性存储器的物理位置处通过通信接口接收的数据的写入,在确定已经完成在非易失性存储器的物理位置处的数据的写入时控制通信接口返回第一通知,并且在已经返回第一通知之后的预定时间段时控制通信接口返回第二通知。

Description

存储设备、存储系统和计算设备
相关申请的交叉引用
本申请基于并要求于2016年10月18日提交的美国非临时专利申请15/296,812的优先权;其全部内容通过引用并入在此。
技术领域
本公开总体上涉及存储设备、存储系统以及计算设备。
背景技术
存储系统通常包括主机和一个或多个存储设备,存储设备中的每个可以包括一个或多个非易失性存储器芯片,诸如NAND闪存芯片。为了使用数据的标识符或数据的逻辑地址来确定存储数据的物理位置,将映射数据存储在存储设备中的每一个存储设备中或主机中,并且数据的物理位置通过参考映射数据来确定。具体地,在一种类型的存储系统中,这种映射数据存储在存储设备中的每个存储设备中,并且通过逻辑地址指定在主机和存储设备之间通信的数据的位置。在另一类型的存储系统中,映射数据存储在主机中,并且在主机和存储设备之间通信的数据的位置是例如由非易失性存储器芯片的物理地址指定的数据的物理位置。
当数据被写入包括非易失性存储器芯片的存储设备中时,通常花费一定量的时间直到存储设备准备好读取数据。这是因为直到电荷稳定地保持在非易失性存储器芯片的存储器单元(memory cell)中需要花费一定量的时间。因此,当主机发出读取命令以在数据写入之后立即读取数据时,可能不能从非易失性存储器芯片正确地读取数据。当在主机和存储设备之间通信的数据的位置是物理位置时,这种问题是特别显著的,因为存储设备将需要从相同的物理位置读取数据。另一方面,当在主机和存储设备之间通信的数据的位置是数据的标识符或逻辑地址时,存储设备可以能够从与对应于标识符或逻辑地址的物理位置不同的位置读取所请求的数据,例如,在输入的写入数据最初存储的易失性存储器中配置的缓冲器。
发明内容
根据实施例,一种存储设备包括非易失性存储器、可连接到主机的通信接口,以及控制器。控制器被配置为当通过通信接口接收到与数据相关联的写入命令时,执行在非易失性存储器的物理位置处通过通信接口接收的数据的写入,在确定已经完成在非易失性存储器的物理位置处的数据的写入时控制通信接口返回第一通知,并且在已经返回第一通知之后的预定时间段时控制通信接口返回第二通知。
根据另一实施例,一种存储系统包括存储设备,该存储设备包括非易失性存储器、通信接口以及控制器;以及主机,其连接到存储设备的通信接口,并且包括写入缓冲存储器和处理器。控制器被配置为当通过通信接口从主机接收到与数据相关联的写入命令时,执行在非易失性存储器的物理位置处通过通信接口从主机接收的数据的写入,在确定已经完成在非易失性存储器的物理位置处的数据的写入时,控制通信接口向主机返回第一通知,并且在已经返回第一通知之后的预定时间段时控制通信接口向主机返回第二通知。
根据另一实施例,一种可连接到非易失性存储设备的计算设备包括存储器部件(memory unit)、可通过非易失性存储设备的通信接口与非易失性存储设备通信的控制器,以及处理器。处理器被配置为将数据临时存储在存储器部件中,控制控制器向非易失性存储设备发送与数据相关联的写入命令,当从非易失性存储设备返回指示写入数据完成的第一通知时,在存储器部件中存储数据的标识符或逻辑地址与写入数据的非易失性存储器的物理位置之间的映射,以及当在第一通知之后从存储设备返回指示存储在非易失性存储器的物理位置处的数据准备好被读取的第二通知时,擦除或修整(trim)存储在存储器单元中的数据。
根据实施例,可以抑制主机和存储设备之间的数据流量的增加。
附图说明
图1示出根据实施例的包括主机和至少一个存储设备的存储系统的配置。
图2示出根据实施例的存储系统的物理配置。
图3示出根据实施例的主机的软件层结构和在主机与存储设备之间的通信架构。
图4示出存储设备中的闪存芯片的配置。
图5示出闪存芯片中的存储器单元阵列的详细电路结构。
图6示出存储在四电平NAND单元类型的存储器单元中的2位四电平数据(数据“11”、“01”、“10”以及“00”)与每个电平的阈值电压分布之间的关系。
图7示出根据实施例的物理地址的地址结构的示例。
图8示出实施例中基于块池的物理块的映射的概况。
图9示出根据实施例的块映射表(BMT)的示例。
图10示出根据实施例的存储系统中的数据流和块映射转换(transition)的架构概述。
图11示出根据实施例执行的写入操作的流程。
具体实施方式
下面参考附图描述本公开的细节。
[存储系统]
图1示出根据实施例的存储系统1的配置。存储系统1包括主机3、一个或多个存储设备2,以及被配置为连接主机3和存储设备2中每个存储设备的接口10。在本实施例中,存储系统1是如图2所示的2U存储装置。也就是说,主机3和一个或多个存储设备2被容纳在具有2U存储装置的大小的壳体中。存储设备2中的每个存储设备是非易失性存储设备,诸如2.5英寸形状因子(facotr)、3.5英寸形状因子,M.2形状因子或附加卡(AIC)形状因子。此外,在本实施例中,接口10采用PCI Express(外围组件互连高速,PCIe)接口。可替代地,接口10可以采用任何其它技术上可行的协议,诸如SAS(串行连接SCSI)协议、USB(通用串行总线)、SATA(串行高级技术附件)、雷电(
Figure BDA0001237869210000041
)、以太网(
Figure BDA0001237869210000042
)、光纤通道等。
存储设备2包括控制器14、随机存取存储器(RAM)15、诸如NAND闪存16(以下称为闪存16)的非易失性半导体存储器以及接口控制器(IFC)18。IFC 18被配置为经由接口10执行向主机3发送信号和从主机3接收信号。控制器14被配置为管理并控制闪存16、RAM 15和IFC18。
RAM 15例如是诸如DRAM(动态随机存取存储器)和SRAM(静态随机存取存储器)的易失性RAM,或诸如FeRAM(铁电随机存取存储器)、MRAM(磁阻随机存取存储器)、PRAM(相变随机存取存储器)和ReRAM(电阻随机存取存储器)的非易失性RAM。RAM 15可以嵌入在控制器14中。闪存16包括一个或多个闪存芯片17,并且将由主机3指定的用户数据存储在一个或多个闪存芯片17中。控制器14和闪存16经由诸如Toggle和ONFI的闪存接口21(参见图4)连接。
主机3包括CPU(中央处理器)4、存储器5、控制器6和网络接口控制器(NIC)7。CPU 4是主机3中的中央处理器,并且执行主机3的各种计算和控制操作。CPU 4和控制器6通过使用诸如PCI Express的协议的接口连接。CPU 4经由控制器6执行对存储设备2的控制。在本实施例中,控制器6是PCIe交换机(switch)和PCIe扩展器,但是SAS扩展器、RAID控制器、JBOD控制器、JBOF控制器等可以被用作控制器6。
CPU 4同样执行对存储器5的控制。存储器5例如是DRAM(动态随机存取存储器)、MRAM(磁阻随机存取存储器)、ReRAM(电阻随机存取存储器)以及FeRAM(铁电随机存取存储器)。
CPU 4是被配置为控制主机3的操作的处理器。CPU 4执行例如从存储设备2中的一个存储设备加载到存储器5的操作系统(OS)11。CPU 4连接到NIC 7,NIC 7经由网络接口连接到外部网络。网络接口利用例如以太网、无限带宽(InfiniBand)、光纤通道、PCI ExpressFabric、WiFi等的协议。
存储器5临时存储程序和数据,并且用作CPU 4的工作存储器。存储器5包括用于存储OS 11、应用软件13、查找表(LUT)8、提交队列50,以及完成队列51的存储器区域,并且同样包括写入缓冲器(WB)54和读取缓冲器(RB)55。众所周知,OS 11表示用于管理主机3的系统软件,并且可以是诸如
Figure BDA0001237869210000051
或可从VMware公司获得的虚拟化软件的商品OS。OS 11被执行以管理对主机3、存储设备2和存储器5的输入和从主机3、存储设备2和存储器5的输出。也就是说,OS 11使软件能够使用在包括存储设备2的存储系统1中的元件(component)。此外,OS 11用于控制向存储设备2写入数据和从存储设备2读取数据的方式。
写入缓冲器54临时存储要写入存储设备2中的数据,即写入数据。读取缓冲器(RB)55临时存储从存储设备2读取的数据,即读取数据。LUT 8用于管理在数据的文件ID(对象ID或逻辑地址)与闪存16和写入缓冲存储器54的物理地址之间的映射,其中数据被存储用于写入或将要被存储用于读取。提交队列50包含例如关于存储设备2的命令和请求。完成队列51包含指示命令和请求的完成的信息以及与完成相关的信息,在完成存储设备2的命令和请求时向主机3发送该信息。
主机3经由相应的接口10向存储设备2发送用于向存储设备2写入数据和从存储设备2读取数据的多个命令。如下面详细描述的,命令包括读取命令90、写入命令91、无效命令(invalidate command)、复制命令等。
此外,应用软件13的一个或多个单元分别被加载到存储器5中。图3示出根据本实施例的主机3的软件层结构和主机3与存储设备2之间的通信架构。通常,加载在存储器5中的应用软件13不直接与存储设备2通信,而是经由文件接口和对象接口通过加载在存储器5中的OS 11与存储设备2通信。
OS 11操作以经由接口10向存储设备2发送包括读取命令90、写入命令91、无效命令和复制命令的命令以及物理地址56。物理地址56用于指定要被访问以用于数据读取或数据写入的闪存16的物理位置。根据这些命令和物理地址(如果有的话),闪存16,更具体地是闪存芯片17执行数据访问处理。
应用软件13包括例如客户端软件、数据库软件(例如,Cassandra DB、Mongo DB、HBASE等)、分布式存储系统(Ceph等)、虚拟机(VM)、客户OS(guest OS)和分析软件(例如,Hadoop、R等)。
[闪存芯片]
图4示出闪存芯片17的配置。闪存芯片17包括存储器单元阵列22和NAND控制器(NANDC)23。如下面详细描述的,存储器单元阵列22包括以矩阵配置来布置的多个存储器单元,存储器单元中的每个存储器单元存储数据。NANDC 23是被配置为控制对存储器单元阵列22的访问的控制器。具体地,NANDC 23包括控制信号输入引脚24、数据输入/输出引脚25、字线控制电路26、控制电路27、数据输入/输出缓冲器28、位线控制电路29和列解码器30。控制电路27连接到控制信号输入引脚24、字线控制电路26、数据输入/输出缓冲器28、位线控制电路29以及列解码器30,并且控制NANDC 23的电路元件的整体操作。此外,存储器单元阵列22连接到字线控制电路26和控制电路27。此外,控制信号输入引脚24和数据输入/输出引脚25通过闪存接口21连接到存储设备2的控制器14。
当从闪存芯片17读取数据时,存储器单元阵列22中的数据被输出到位线控制电路29,并且然后被临时存储在数据输入/输出缓冲器28中。然后,将读取的数据通过闪存接口21从数据输入/输出引脚25发送到存储设备2的控制器14。当将数据写入闪存芯片17时,将要写入的数据(写入数据)通过数据输入/输出引脚25输入到数据输入/输出缓冲器28。然后,将写入数据通过控制电路27发送到列解码器30,并由列解码器30输入到位线控制电路29。将写入数据以由字线控制电路26和位线控制电路29控制的时序写入到存储器单元阵列22的存储器单元。当通过闪存接口21从存储设备2的控制器14向闪存芯片17输入控制信号时,控制信号通过控制信号输入引脚24被输入到控制电路27中。然后,控制电路27根据来自控制器14的控制信号生成控制信号,并控制用于控制存储器单元阵列22、位线控制电路29、列解码器30、数据输入/输出缓冲器28和字线控制电路26的电压。在此,在闪存芯片17中包括除了存储器单元阵列22以外的电路的电路部分被称为NANDC 23。
图5示出存储器单元阵列22的详细电路结构。存储器单元阵列22包括一个或多个面(plane)37(在图5中仅示出其中一个)。每个面37包括多个物理块36,并且每个物理块36包括多个存储器串34。此外,存储器串(MS)34中的每一个存储器串包括多个存储器单元33。
存储器单元阵列22进一步包括多个位线31、多个字线32和公共源极线。可电气地数据重写的存储器单元33以矩阵配置布置在位线31和字线的交叉处。位线控制电路29连接到位线31,并且字线控制电路26连接到字线32,以便控制关于存储器单元33的数据写入和读取。也就是说,位线控制电路29经由位线31读取存储器单元33中存储的数据,并且经由位线31将写入控制电压施加到存储器单元33,以及将数据写入由字线32选择的存储器单元33中。
在每个存储器串(MS)34中,存储器单元33串联连接,并且选择门(gate)S1和S2连接到MS 34的两端。选择门S1连接到位线BL 31,并且选择门S2连接到源极线SRC。布置在同一行中的存储器单元33的控制栅极共同连接到字线32WL0到WLm-1中的一个。第一选择门S1共同连接到选择线SGD,并且第二选择门S2共同连接到选择线SGS。
连接到一个字线32的多个存储器单元33配置一个物理扇区35。针对每个物理扇区35写入和读取数据。在一个物理扇区35中,当采用2位/单元写入系统(MLC,四电平)时存储相当于两个物理页(两页)的数据,并且当采用1位/单元写入系统(SLC,两电平)时存储相当于一个物理页(一页)的数据。此外,当采用3位/单元写入系统(TLC,八电平)时,在一个物理扇区35中存储相当于三个物理页(三页)的数据。此外,以物理块36为单元擦除数据。
在写入操作(同样称为编程操作)、读取操作和编程验证操作期间,根据从控制器14接收的诸如行地址的物理地址来选择一个字线WL,并且因此,选择一个物理扇区35。根据物理地址中的物理页地址来执行所选物理扇区35中的页的切换。物理地址包括物理块地址58和物理页地址59(参见图7)。将物理页地址分配给物理页中的每个物理页,并且将物理块地址分配给物理块36中的每个物理块。
2位/单元的四电平NAND存储器被配置为使得一个存储器单元中的阈值电压可具有四种分布。图6示出存储在四电平NAND单元类型的存储器单元33中的2位四电平数据(数据“11”、“01”、“10”和“00”)与每个电平的阈值电压分布之间的关系。一个存储器单元33的2位数据包括低页(lower page)数据和高页(upper page)数据。根据单独的写入操作,即两个写入操作,将低页数据和高页数据写入存储器单元33。在此,当数据表示为“XY”时,“X”表示高页数据,并且“Y”表示低页数据。
存储器单元33中的每个存储器单元包括存储器单元晶体管,例如,具有形成在半导体衬底上的叠栅结构的MOSFET(金属氧化物半导体场效应晶体管)。叠栅结构包括经由栅极绝缘膜形成在半导体衬底上的电荷存储层(浮置栅电极)和经由栅极间绝缘膜(inter-gate insulating film)形成在浮置栅电极上的控制栅电极。存储器单元晶体管的阈值电压根据在浮置栅电极中积累的电子数而变化。存储器单元晶体管通过改变其阈值电压来存储数据。
在本实施例中,存储器单元33中的每个存储器单元采用使用高页和低页的用于2位/单元(MLC)的四电平存储方法的写入系统。可替代地,存储器单元33可以采用使用单页的1位/单元(SLC)的两电平存储方法的写入系统,使用高页、中间页和低页的用于3位/单元(TLC)的八电平存储方法,或者用于4位/单元(QLC)或更多位/单元的多电平存储方法,或它们的混合。存储器单元晶体管不限于包括浮置栅电极的结构,并且可以是诸如MONOS(金属氧化物-氮化物-氧化物-硅)类型的结构,其可以通过在作为电荷存储层的氮化物界面上捕获电子来调节阈值电压。类似地,MONOS类型的存储器单元晶体管可以被配置为存储一位的数据,或者可以被配置为存储多位的数据。存储器单元晶体管可以是作为非易失性存储介质的半导体存储介质,其中存储器单元被三维排列,如美国专利8,189,391、公开号为No.2010/0207195的美国专利申请以及公开号为No.2010/0254191的美国专利申请中所述,这两个申请的全部内容通过引用并入在此。
[地址结构]
图7示出根据本实施例的物理地址56的地址结构的示例。当OS 11根据物理访问的过程操作时,以图7中所示的地址结构的形式经由接口10发送物理地址56。物理地址56的地址结构包括芯片地址57、块地址58和页地址59。在本实施例中,如图7中所示,芯片地址57位于地址结构的MSB(最高有效位)侧,并且页地址59位于地址结构的LSB(最低有效位)侧。然而,可以任意确定物理地址56中的芯片地址57、块地址58和页地址59的位置。
[块映射]
图8示出本实施例中基于块池的物理块的映射的概况。如上所述,使用存储在RAM15中的BMT 46来管理映射。块池包括输入块池420、活动块池430、空闲块池440和坏块池450。物理块的映射由存储设备2的控制器14来管理,并且当将物理块重新映射到不同的块池中时,控制器14更新BMT 46中的映射。控制器14在BMT 46中将闪存16的物理块中的每个物理块映射到块池中的一个块池。
输入块池420包括至少一个输入块42。输入块42是其中写入数据的块。输入块42可以不存储数据,或者包括已写入区域和可以写入数据的未写入区域两者。
活动块池430可以包括一个或多个活动块43。活动块43是不再具有可写入区域(即,变得写满数据)的物理块。此外,活动块43中的已写入的数据中的至少一些是有效数据。
空闲块440包括一个或多个空闲块44。空闲块44包括先前未存储任何数据的物理块和没有存储有效数据的物理块。也就是说,存储在空闲块44中的所有数据(如果有的话)已经被无效。
坏块池450包括一个或多个坏块45。坏块45是例如由于缺陷而不能用于数据写入的块。
图9示出根据本实施例的存储设备2中使用的块映射表(BMT)46的示例。BMT 46包括空闲块表461、活动块表462、坏块表463以及输入块表464。在BMT 46的表461-464中的每个表中,每个条目(entry)指示块地址与擦除计数之间的对应,该擦除计数指示块地址中的数据已被擦除的次数。同样可以在BMT 46中管理不同类型的块池的其它配置。
输入块表464同样指示将写入下一个写入数据的物理页地址(PPA)。当控制器14重新映射空闲块池440中的空闲块44作为输入块42时,控制器14从空闲块表461中移除该空闲块44的块地址,并且添加包括该块地址和PPA=0的新条目到输入块表464。
因为在本实施例中,由控制器14使用BMT 46的坏块表463来管理闪存16的坏块45,所以主机3的CPU 4不必管理坏块45,并且不必监视闪存16的不可靠的物理块和缺陷。如果存储设备2的控制器14确定物理块不可靠,则控制器14通过从输入块表464、活动块表462和空闲块表461中的包括对应块地址的条目的一个块表删除该条目并且通过添加该条目到坏块表463来防止数据被写入物理块中。例如,当在访问物理块期间发生编程错误、擦除错误或者不可校正ECC错误时,控制器14确定将物理块重新映射为坏块45。在本实施例中,要写入数据的物理地址可以由主机2确定或由控制器14确定。当物理地址由控制器14确定时,主机3不需要执行这种坏块管理。
此外,因为每个物理块的擦除计数由存储设备2的控制器14使用BMT46来管理,所以当将数据写入闪存16时,控制器14可以执行动态平均抹写(dynamic wear leveling)。例如,在本实施例中,当控制器14重新映射空闲块池440中的空闲块44作为输入块42时,控制器14选择具有最小擦除计数的空闲块44。如果空闲块44位于处于忙碌状态的通道或存储体(bank)中,则控制器14可以从空闲块池440中选择具有第二最小擦除计数并且处于空闲状态的另一空闲块44。
当控制器14处理关于输入块42的写入操作时,控制器14通过参考输入块表464指定物理页地址(PPA),将数据写入输入块42的物理页地址,以及递增输入块表464中的PPA((新)PPA=(旧)PPA+写入数据大小)。当(新)PPA超过输入块42的最大页地址时,控制器14将输入块42重新映射为活动块池430中的活动块43。
[写入操作]
图10示意性地示出根据本实施例的存储设备2中执行的写入操作的示例。在写入操作期间,控制器14将存储在写入缓冲器54中的写入数据(用户数据)写入闪存16中。图10中的输入块池420、活动块池430、空闲块池440和坏块池450中的每一个块池包括一个或多个物理块。
控制器14经由接口10从写入缓冲器54接收写入数据,并且使用控制器14的ECC编码器48从写入数据生成ECC码。此外,控制器14在下面描述的读取操作期间使用控制器14中的ECC解码器49解码包括用户数据和ECC码的读取数据。
当控制器14将写入数据从写入缓冲器54写入闪存16时,控制器14通过参考BMT 46来指定写入数据将要被写入的输入块池420的输入块42中的页的物理地址。如果在闪存16中没有可用的输入块42,则控制器14通过重新映射空闲块池440中的空闲块44来分配新的输入块42。
此外,如果输入块42中没有物理页可用于数据写入而不擦除其中的数据,即,变得写满写入的数据,则控制器14将该块重新映射为活动块池430中的活动块43。控制器14同样可以将活动块池430中的活动块43重新映射(解除分配)为空闲块池440中的空闲块44。
在多个输入块池420中准备多个输入块42,该输入块42中的每个输入块专用于关于相应流ID的数据写入,并且与流ID相关联的写入数据被写入与该流ID相关联的输入块42。在该示例中,来自主机3的写入命令包括流ID。当主机3操作以将指定流ID的写入命令发布到提交队列50时,控制器14从写入缓冲器54接收写入数据,并将写入数据写入与该流ID相关联的输入块42。如果主机3操作以将没有指定流ID的写入命令发布到提交队列50,则控制器14从写入缓冲器54接收写入数据,并将写入数据写入没有与流ID相关联的输入块42。通过根据流ID将写入数据存储到不同的输入块42中,可以使存储在每个输入块42中的数据类型(或数据寿命)更加均匀,并且因此,在执行垃圾收集操作时物理块中的整个数据可被删除而不必将数据部分地转移到另一物理块,即,垃圾收集操作变得更有效。
图11示出写入操作的流程图,其中存储设备2确定写入数据将要被写入的存储器单元阵列22的物理地址,并且主机3不指定物理地址。当写入操作开始时,在步骤1101中,主机3将要写入存储设备2的闪存16中的数据(以下称为“写入数据”)写入主机3的写入缓冲器(WB)54。此外,主机3更新存储在主机3的存储器5中的LUT 8,以使得在其中存储写入数据的文件ID(对象ID或逻辑地址)和WB 54的地址之间的映射。然后,在步骤1102中,主机3向主机3的提交队列50发布包括写入数据的大小信息但不包括地址信息的写入命令。写入命令同样包括唯一命令标识符(UCID)和流ID。
在步骤1103中,存储设备2的控制器14从提交队列50获取写入命令并从WB 54写入数据。在接收到写入数据时,在步骤1104中,控制器14参考BMT 46确定写入数据将要被写入的闪存16的物理位置(物理地址56)。具体地,控制器14确定与流ID对应的输入块42的下一可用页作为物理位置。然后,在步骤1105中,控制器14的ECC编码器48(参见图10)从写入数据生成ECC码。在步骤1106中,控制器14向闪存16发出写入命令,以将写入数据和ECC码写入闪存16的确定的物理位置中。
当在闪存16(即,输入块42)的确定的物理位置中发出写入数据的命令时,如果没有从闪存16返回编程错误(写入错误),则在步骤1107中控制器14向主机3发送包括写入数据被写入的物理地址56和UCID的写入完成通知,以使得写入完成通知被发布在主机3的完成队列51上。在步骤1108中,主机3从完成队列51取出写入完成通知。然后,在步骤1109中,主机3更新存储在主机3的存储器5中的LUT 8,以使得将用于连同UCID一起发布写入命令的写入数据的文件ID(对象ID或逻辑地址)与连同同一UCID返回的输入块42的物理地址56之间的映射存储在其中。
在步骤1107中发送写入完成通知之后,控制器14在步骤1110中计数出预定时间段。当经过预定时间段时,处理进行到下一步骤1111。在此,预定时间段是被认为足以使闪存16准备好读取写入数据的时间量。通常,在写入数据被写入闪存16之后,直到闪存16准备好读取写入数据为止需要一定量的时间(例如,100-1000毫秒)。这是因为即使没有返回编程错误,但是存储器单元的浮置栅电极中的电子可能尚未处于稳定状态,且这种存储器单元的阈值电压仍可能处于指示不同数据的值(例如,在图6中是“10”而不是“00”,是“01”而不是“10”)。此外,随着存储在每个存储器单元中的位数变大,该预定时间段可以被设置为更大,因为阈值的精确性变得更加关键。例如,针对在TLC型存储器单元中写入的预定时间段大于针对在MLC型存储器单元中写入的预定时间段。
在经过预定时间段之后,在步骤1111中,控制器14从闪存16读取数据(写入数据和ECC码)。具体地,控制器14的ECC解码器49(参见图10)解码从闪存读取的数据,并且根据需要使用ECC码来执行写入数据的错误校正。然后,在步骤1112中,控制器14确定是否已校正读取数据中的任何错误。如果确定是肯定的(在步骤1112中为是),则处理进行到步骤1113,否则(在步骤1112中为否),处理进行到步骤1116。
在步骤1113中,控制器14向主机3发送连同包括在写入命令中的UCID一起的通知(读取就绪通知)。在步骤1114中,主机3接收到读取就绪通知,并且因此主机3识别出闪存16现在准备好读取写入数据。在此,由于读取就绪通知包括UCID,所以主机3可以识别哪个写入数据或哪个写入命令对应于读取就绪通知。在获取读取就绪通知时,在步骤1115中,主机3重新映射LUT 8,以使得从写入数据的文件ID(对象ID或逻辑地址)解除WB 54的地址的映射,即,写入数据在WB 54中被修整(无效)。可替代地,主机3可以擦除在WB 54中缓冲的写入数据。通过这些处理,写入操作结束。
另一方面,如果在步骤1112中的确定是否定的(在步骤1112中为否),即,不能校正读取数据中的所有错误,则在步骤1116中,控制器14向主机3发送连同UCID一起的通知(读取未就绪通知),其可与读取就绪通知区分开。在步骤1117中,主机3接收到读取未就绪通知,并且因此主机3识别出闪存16没有准备好读取写入数据。为了确保写入数据以可读的方式写入闪存16中,处理返回到步骤1102,并且主机3使用存储在WB 54中的写入数据再次执行步骤1102和后续步骤。
在上述实施例中,在步骤1102和其后的第二次或随后的操作(写入尝试)期间,数据被写入闪存16的另一物理位置,因为不可读的(不可校正的)数据已经写入在第一次操作(第一次尝试)期间访问的闪存16的物理位置中。此外,在上述实施例中,在第二次或随后的操作期间,在步骤1110中计数出的预定时段可以增加预定量(一次或重复),以使得可以经过使闪存16准备好读取写入数据的足够时间。在替代方案中,可以计数出与第一次写入尝试相同的预定时间段。
此外,在上述实施例中,如果应用软件13(参见图1和图3)在主机3接收到读取就绪通知之前发出对写入数据的读取请求,则主机3(CPU 4)从WB 54读取写入数据并将写入数据返回到应用软件13。由于写入数据存储在WB 54中直到闪存16准备好读取写入数据,因此可以防止在写入操作期间数据不可访问。
此外,在上述实施例中,存储设备2的控制器14可以被配置为当控制器14在发送读取就绪通知之前接收到针对写入数据的读取命令90时返回警告。尽管主机3应当被设计为在接收到读取就绪通知之前不发出针对写入数据的读取命令90,但是主机3的不当设计可能导致这种情况。根据该配置,即使从主机3接收到这种读取命令90,也不执行将导致不成功读取的读取操作。
此外,在另一实施例中,可以不执行步骤1111和1112,并且存储设备2的控制器14可以在步骤1111中经过预定时间段时发送读取就绪通知。在该情况下,同样不执行步骤1116和1117,并且不执行步骤1112和后续步骤的重复操作。
在另一实施例中,如果步骤1112中的确定结果是否定的,即包括在写入数据中的错误未被校正,则该过程可以返回到步骤1110。在该情况下,重复读取同一写入数据,直到可以读取写入数据或者可以成功地校正写入数据中的错误。
在另一实施例中,写入操作以主机3而不是存储设备2的控制器14确定写入数据要被写入的存储器单元阵列22的物理地址的方式执行。在该情况下,在步骤1102中,主机3将所确定的物理地址连同写入命令、大小信息、UCID和流ID一起发布到提交队列50。此外,由于控制器14不确定物理地址,所以可以省略步骤1104。此外,由于主机3已经识别写入数据要被写入的物理地址,所以从存储设备2发送的写入完成通知不需要包含物理地址。
如上所述,根据上述实施例,存储设备2的控制器14在向主机3发送写入完成通知之后向主机3发送诸如读取就绪通知和读取未就绪通知的二次通知(secondarynotification)。根据该配置,主机3可以基于写入完成通知来识别写入数据是否被写入闪存16中并且获得了成功读取的状态。此外,主机3可以基于二次通知识别已写入写入数据的闪存16是否准备好读取写入数据。也就是说,主机3可以分别管理写入数据被写入闪存16中的时间和闪存16准备好读取写入数据的时间。此外,由于写入数据被保存在写入缓冲器54中直到接收到读取就绪通知,因此主机3可以更可靠地处理写入数据,并防止写入数据在写入操作之后从闪存16丢失或不可读取。
另外,根据上述实施例,由于不需要与写入操作不同的附加操作(例如,写入后读取操作)以确保写入数据以可读的方式写入闪存,因此,可以抑制主机3和存储设备2之间的数据流量的增加,以及由这种添加操作引起的存储设备2的等待时间(latency)的增加。
虽然已经描述了某些实施例,但是这些实施例仅通过示例的方式给出,并且不旨在限制本发明的范围。实际上,在此描述的新颖实施例可以以各种其它形式实施;此外,在不脱离本发明的精神的情况下,可以对在此描述的实施例的形式进行各种省略、替换和改变。所附权利要求及其等同物旨在覆盖落入本发明的范围和精神内的这些形式或修改。

Claims (18)

1.一种存储设备,包括:
非易失性存储器;
可连接到主机的通信接口;以及
控制器,其被配置为
当通过所述通信接口从所述主机接收到将要写入的数据和与所述数据相关联并且包括标识符的写入命令时,执行在所述非易失性存储器的物理位置处的所述数据的写入,
在确定已经完成在所述非易失性存储器的物理位置处的数据的写入但是在所写入的数据的验证已经被执行之前时,控制所述通信接口向所述主机返回第一通知,该第一通知包括被包括在所接收的写入命令中的所述标识符,以及
在已经返回所述第一通知并且所写入的数据的所述验证已经被执行之后已经经过预定时间段之后,控制所述通信接口向所述主机返回第二通知,该第二通知指示所写入的数据准备好被读取并且包括被包括在所接收的写入命令中的所述标识符。
2.根据权利要求1所述的存储设备,其中
所述控制器被进一步配置为在已经返回所述第一通知之后的所述预定时间段时通过执行在所述非易失性存储器的物理位置处写入的数据的读取和对读取数据的错误校正来执行所述验证,并且如果有错误,则确定在所述读取数据中包括的所有错误是否被校正,以及
所述控制器在确定如果有错误,则所有错误已被校正时控制所述通信接口返回所述第二通知。
3.根据权利要求2所述的存储设备,其中
所述控制器被进一步配置为在确定未校正在所述读取数据中包括的所有错误时控制所述通信接口返回第三通知。
4.根据权利要求1所述的存储设备,其中
所述控制器被进一步配置为当通过所述通信接口接收到所述写入命令时,确定要写入所述数据的所述非易失性存储器的所述物理位置,以及
所述第一通知包括所述物理位置,而所述第二通知不包括所述物理位置。
5.根据权利要求1所述的存储设备,其中,
所述写入命令包括所述物理位置,以及
所述第一通知和所述第二通知都不包括所述物理位置。
6.根据权利要求1所述的存储设备,其中
所述控制器被进一步配置为在返回所述第二通知之前通过所述通信接口接收到所述数据的读取命令时,返回第四通知而不读取所述数据。
7.一种存储系统,包括:
存储设备,其包括非易失性存储器、通信接口和控制器;以及
主机,其连接到所述存储设备的所述通信接口,其中
所述控制器被配置为
当通过所述通信接口从所述主机接收到将要写入的数据和与所述数据相关联并且包括标识符的写入命令时,执行在所述非易失性存储器的物理位置处的所述数据的写入,
在确定已经完成在所述非易失性存储器的所述物理位置处的所述数据的写入但是在所写入的数据的验证已经被执行之前时,控制所述通信接口向所述主机返回第一通知,该第一通知包括被包括在所接收的写入命令中的所述标识符,以及
在已经返回所述第一通知并且所写入的数据的所述验证已经被执行之后已经经过预定时间段之后,控制所述通信接口向所述主机返回第二通知,该第二通知指示所写入的数据准备好被读取并且包括被包括在所接收的写入命令中的所述标识符。
8.根据权利要求7所述的存储系统,其中
所述控制器被进一步配置为在已经返回所述第一通知之后的预定时间段时通过执行在所述非易失性存储器的所述物理位置处写入的所述数据的读取和对读取数据的错误校正来执行所述验证,并且如果有错误,则确定在所述读取数据中包括的所有错误是否被校正,以及
所述控制器在确定如果有错误,则所有错误已被校正时控制所述通信接口向所述主机返回所述第二通知。
9.根据权利要求8所述的存储系统,其中
所述控制器被进一步配置为在确定未校正在所述读取数据中包括的所有错误时控制所述通信接口向所述主机返回第三通知。
10.根据权利要求7所述的存储系统,其中
所述控制器被进一步配置为当通过所述通信接口从所述主机接收到所述写入命令时,确定要写入所述数据的所述非易失性存储器的所述物理位置,以及
所述第一通知包括所述物理位置,而所述第二通知不包括所述物理位置。
11.根据权利要求7所述的存储系统,其中
所述主机被配置为确定要写入所述数据的所述非易失性存储器的所述物理位置,并且与所述写入命令一起发送所述物理位置,以及
所述第一通知和所述第二通知都不包括所述物理位置。
12.根据权利要求7所述的存储系统,其中
所述控制器被进一步配置为当在返回所述第二通知之前通过所述通信接口接收到所述数据的读取命令时,向所述主机返回第四通知,而不从所述非易失性存储器读取所述数据。
13.根据权利要求8所述的存储系统,其中
所述主机包括写入缓冲存储器和处理器,以及
所述处理器被配置为
将数据临时存储在所述写入缓冲存储器中,
当从所述存储设备返回所述第一通知时,在所述主机的存储器中存储所述数据的标识符或逻辑地址与写入所述数据的所述非易失性存储器的所述物理位置之间的映射,以及
当在所述第一通知之后从所述存储设备返回所述第二通知时,擦除或修整在所述写入缓冲存储器中存储的数据。
14.根据权利要求13所述的存储系统,其中
所述控制器被进一步配置为在确定未校正在所述读取数据中包括的所有错误时控制所述通信接口向所述主机返回第三通知,以及
所述处理器被进一步配置为当在所述第一通知之后从所述存储设备返回所述第三通知时,通过所述通信接口向所述存储设备发送与所述数据相关联的二次写入命令。
15.根据权利要求13所述的存储系统,其中
所述处理器被进一步配置为,当在所述第一通知之后并且在所述第二通知之前接收到所述数据的读取请求时,从所述写入缓冲存储器读取所述数据而不向所述存储设备发送所述数据的读取命令,并且返回所述读取数据。
16.一种可连接到非易失性存储设备的计算设备,包括:
存储器部件;
控制器,其可通过所述非易失性存储设备的通信接口与所述非易失性存储设备通信;以及
处理器,其被配置为
将数据临时存储在所述存储器部件中,
控制所述控制器通过所述通信接口向所述非易失性存储设备发送与所述数据相关联并且包括标识符的写入命令,所述写入命令不包括地址信息,
当通过所述通信接口从所述非易失性存储设备接收包括被包括在所发送的写入命令中的所述标识符并且指示所述数据的写入完成的第一通知时,在所述存储器部件中存储所述数据的标识信息或逻辑地址与写入所述数据的非易失性存储器的物理位置之间的映射,以及
当在所述第一通知已经被接收之后通过所述通信接口从所述存储设备接收包括被包括在所发送的写入命令中的所述标识符并且指示在所述非易失性存储器的物理位置处存储的数据已准备好被读取的第二通知时,擦除或修整在所述存储器部件中存储的数据。
17.根据权利要求16所述的计算设备,其中
所述处理器被进一步配置为当在所述第一通知之后从所述非易失性存储设备返回指示所述数据尚未准备好被读取的第三通知时,通过所述非易失性存储设备的所述通信接口向所述非易失性存储设备发送与所述数据相关联的二次写入命令。
18.根据权利要求16所述的计算设备,其中
所述处理器被进一步配置为当在所述第一通知之后并且在所述第二通知之前接收到所述数据的读取请求时,从所述存储器部件读取所述数据,而不向所述存储设备发送所述数据的读取命令,并且返回所述读取数据。
CN201710123995.4A 2016-10-18 2017-03-03 存储设备、存储系统和计算设备 Active CN107967119B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110086481.2A CN112817529A (zh) 2016-10-18 2017-03-03 存储设备、存储系统和计算设备

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/296,812 US10622089B2 (en) 2016-10-18 2016-10-18 Storage system having a host that manages physical data locations of storage device
US15/296812 2016-10-18

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202110086481.2A Division CN112817529A (zh) 2016-10-18 2017-03-03 存储设备、存储系统和计算设备

Publications (2)

Publication Number Publication Date
CN107967119A CN107967119A (zh) 2018-04-27
CN107967119B true CN107967119B (zh) 2021-02-23

Family

ID=61903888

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202110086481.2A Pending CN112817529A (zh) 2016-10-18 2017-03-03 存储设备、存储系统和计算设备
CN201710123995.4A Active CN107967119B (zh) 2016-10-18 2017-03-03 存储设备、存储系统和计算设备

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202110086481.2A Pending CN112817529A (zh) 2016-10-18 2017-03-03 存储设备、存储系统和计算设备

Country Status (2)

Country Link
US (2) US10622089B2 (zh)
CN (2) CN112817529A (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018160189A (ja) * 2017-03-23 2018-10-11 東芝メモリ株式会社 メモリシステム
US10496297B2 (en) 2017-11-21 2019-12-03 Micron Technology, Inc. Data categorization based on invalidation velocities
JP6967959B2 (ja) * 2017-12-08 2021-11-17 キオクシア株式会社 メモリシステムおよび制御方法
JP7048289B2 (ja) * 2017-12-08 2022-04-05 キオクシア株式会社 情報処理装置および方法
CN110321297A (zh) * 2018-03-28 2019-10-11 三星电子株式会社 用于将虚拟流映射到物理流上的存储装置及其操作方法
CN109324809B (zh) * 2018-10-09 2022-04-22 郑州云海信息技术有限公司 一种数据处理方法及装置
CN111078625B (zh) * 2018-10-18 2022-03-29 上海寒武纪信息科技有限公司 片上网络处理系统和片上网络数据处理方法
TWI668699B (zh) * 2018-10-25 2019-08-11 群聯電子股份有限公司 資料儲存方法、記憶體控制電路單元以及記憶體儲存裝置
JP2020140385A (ja) * 2019-02-27 2020-09-03 キオクシア株式会社 記憶装置及びその制御方法
US10977139B1 (en) * 2019-10-14 2021-04-13 Micron Technology, Inc. Detailed failure notifications in memory sub-systems

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101488354A (zh) * 2008-01-16 2009-07-22 三星电子株式会社 稳定的数据存储系统和方法
CN103985411A (zh) * 2013-02-07 2014-08-13 希捷科技有限公司 待调度验证的非易失性写入缓冲器数据保留

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070168754A1 (en) * 2005-12-19 2007-07-19 Xiv Ltd. Method and apparatus for ensuring writing integrity in mass storage systems
JP5142692B2 (ja) 2007-12-11 2013-02-13 株式会社東芝 不揮発性半導体記憶装置
JP2011525643A (ja) * 2008-12-22 2011-09-22 株式会社日立製作所 ストレージ装置、及びストレージ装置におけるデータ検証方法
JP5275052B2 (ja) 2009-01-08 2013-08-28 株式会社東芝 不揮発性半導体記憶装置
US8284601B2 (en) 2009-04-01 2012-10-09 Samsung Electronics Co., Ltd. Semiconductor memory device comprising three-dimensional memory cell array
US8214700B2 (en) * 2009-10-28 2012-07-03 Sandisk Technologies Inc. Non-volatile memory and method with post-write read and adaptive re-write to manage errors
US20130031431A1 (en) * 2011-07-28 2013-01-31 Eran Sharon Post-Write Read in Non-Volatile Memories Using Comparison of Data as Written in Binary and Multi-State Formats
US9329991B2 (en) * 2013-01-22 2016-05-03 Seagate Technology Llc Translation layer partitioned between host and controller
US9218279B2 (en) * 2013-03-15 2015-12-22 Western Digital Technologies, Inc. Atomic write command support in a solid state drive
US9208023B2 (en) * 2013-12-23 2015-12-08 Sandisk Technologies Inc. Systems and methods for scheduling post-write read in nonvolatile memory
US9607703B2 (en) * 2014-09-08 2017-03-28 Kabushiki Kaisha Toshiba Memory system
CN105005536B (zh) * 2015-07-01 2019-08-06 忆正科技(武汉)有限公司 固态存储设备、主机的工作方法及固态存储设备、主机
US20180059976A1 (en) * 2016-08-26 2018-03-01 Sandisk Technologies Llc Storage System with Integrated Components and Method for Use Therewith

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101488354A (zh) * 2008-01-16 2009-07-22 三星电子株式会社 稳定的数据存储系统和方法
CN103985411A (zh) * 2013-02-07 2014-08-13 希捷科技有限公司 待调度验证的非易失性写入缓冲器数据保留

Also Published As

Publication number Publication date
US20200243157A1 (en) 2020-07-30
CN112817529A (zh) 2021-05-18
US11361840B2 (en) 2022-06-14
US20180107391A1 (en) 2018-04-19
CN107967119A (zh) 2018-04-27
US10622089B2 (en) 2020-04-14

Similar Documents

Publication Publication Date Title
CN107967119B (zh) 存储设备、存储系统和计算设备
US11768610B2 (en) Storage system having a host that manages physical data locations of a storage device
US11301373B2 (en) Reconstruction of address mapping in a host of a storage system
US12013779B2 (en) Storage system having a host directly manage physical data locations of storage device
US10712977B2 (en) Storage device writing data on the basis of stream
US9753653B2 (en) High-priority NAND operations management
US10229049B2 (en) Storage system that performs host-initiated garbage collection
US8904090B2 (en) Non-volatile memory device, devices having the same, and method of operating the same
US20200218451A1 (en) Storage device having dual access procedures
KR20210112872A (ko) 데이터 저장 장치 및 그 동작 방법
US9858003B2 (en) Storage system that reliably stores lower page data
CN111755061A (zh) 检查存储器系统中的存储器装置的操作状态的设备及方法
CN112783435A (zh) 存储设备和操作存储设备的方法
US20220214831A1 (en) Memory system and operating method of the memory system
CN113253917A (zh) 用于存储器子系统的媒体管理的多状态炼狱
CN115132251A (zh) 存储器子系统中的存储器装置的所有级别的动态开始电压编程

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
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: Tokyo, Japan

Patentee after: Kaixia Co.,Ltd.

Address before: Tokyo, Japan

Patentee before: TOSHIBA MEMORY Corp.

Address after: Tokyo, Japan

Patentee after: TOSHIBA MEMORY Corp.

Address before: Tokyo, Japan

Patentee before: Japanese businessman Panjaya Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220107

Address after: Tokyo, Japan

Patentee after: Japanese businessman Panjaya Co.,Ltd.

Address before: Tokyo, Japan

Patentee before: TOSHIBA MEMORY Corp.