CN110888597B - 存储设备、存储系统以及操作存储设备的方法 - Google Patents

存储设备、存储系统以及操作存储设备的方法 Download PDF

Info

Publication number
CN110888597B
CN110888597B CN201910762325.6A CN201910762325A CN110888597B CN 110888597 B CN110888597 B CN 110888597B CN 201910762325 A CN201910762325 A CN 201910762325A CN 110888597 B CN110888597 B CN 110888597B
Authority
CN
China
Prior art keywords
memory
bank
data
storage
host device
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
CN201910762325.6A
Other languages
English (en)
Other versions
CN110888597A (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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN110888597A publication Critical patent/CN110888597A/zh
Application granted granted Critical
Publication of CN110888597B publication Critical patent/CN110888597B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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
    • 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/0611Improving I/O performance in relation to response time
    • 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/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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/0658Controller construction arrangements
    • 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
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • 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
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • 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
    • 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/7205Cleaning, compaction, garbage collection, erase control
    • 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/7211Wear leveling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

一种存储设备包括:包括多个非易失性存储器件在内的主存储器,主存储器被配置为存储数据;以及存储控制器,被配置为控制主存储器。存储控制器被配置为将多个非易失性存储器件的多个存储块划分为多个存储体,将多个存储体中的每一个存储体指派给a)多个集合或b)一个空闲存储体,多个集合中的每一个集合包括至少一个存储体,在确保特定输入/输出(I/O)执行时间的同时,响应于来自外部主机设备的I/O请求,通过使用一个空闲存储体来执行用于在集合之间转移数据的数据迁移操作,并且控制数据迁移操作,使得该I/O请求独立于数据迁移操作。

Description

存储设备、存储系统以及操作存储设备的方法
相关申请的交叉引用
本申请要求于2018年9月7日在韩国知识产权局(KIPO)递交的韩国专利申请No.10-2018-0106913的优先权,其公开内容通过引用整体并入本文。
技术领域
示例实施例总体上涉及数据处理,且更具体地涉及存储设备、包括存储设备在内的存储系统和/或操作存储设备的方法。
背景技术
固态驱动器(SSD)是基于闪存设备的数据存储设备的典型示例。在诸如SSD之类的数据存储设备中使用的接口的示例包括串行AT附件(SATA)、外围组件互连快速(PCIe)、串行连接的小型计算机系统接口(SCSI)(SAS)等。随着被处理的数据量逐渐增加,SSD的性能逐渐提高。
然而,由于与其他接口相比,诸如SATA之类的传统接口可能不是专用于诸如SSD之类的数据存储设备的接口,因此SATA的性能可能受到限制。因此,提供商已生成了非易失性存储器快速(NVMe)规范,作为制定适用于SSD的标准化接口的工作的一部分。NVMe是寄存器级别的接口,其执行诸如SSD之类的数据存储设备和主机软件之间的通信。NVMe基于传统的PCIe总线,并且是一种针对SSD来设计或优化的接口。
发明内容
一些示例实施例提供了一种存储设备,其能够在提供(例如,支持和/或保证)相对于主机设备的确定性输入/输出(I/O)执行时间的同时进行内部操作。
一些示例实施例提供了一种存储系统,其能够在提供(例如,支持和/或保证)相对于主机设备的确定性I/O执行时间的同时进行内部操作。
一些示例实施例提供了一种操作存储设备的方法,其能够在保证相对于主机设备的确定性I/O执行时间的同时进行内部操作。
根据一些示例实施例,一种存储设备包括主存储器,该主存储器包括多个非易失性存储器件,该主存储器被配置为存储数据;以及存储控制器,被配置为控制主存储器。存储控制器被配置为:将多个非易失性存储器件的多个存储块划分为多个存储体,将多个存储体中的每一个存储体向a)多个集合和b)一个空闲存储体中的一个指派,多个集合中的每一个集合包括至少一个存储体,在确保特定输入/输出(I/O)执行时间的同时,响应于来自外部主机设备的I/O请求,通过使用一个空闲存储体来执行用于在集合之间转移数据的数据迁移操作,以及控制数据迁移操作,使得所述I/O请求独立于数据迁移操作。
根据一些示例实施例,一种存储系统包括存储设备,该存储设备包括被配置为存储数据的主存储器和被配置为控制主存储器的存储控制器,该主存储器包括多个非易失性存储器件;以及主机设备,被配置为以集合为单位来控制存储设备。存储控制器被配置为:将多个非易失性存储器件的多个存储块划分为多个存储体,将多个存储体中的每一个存储体向a)多个集合和b)一个空闲存储体中的一个指派,多个集合中的每一个集合包括至少一个存储体,在确保输入/输出(I/O)执行时间的同时,响应于来自外部主机设备的I/O请求,通过使用一个空闲存储体来执行用于在集合之间转移数据的数据迁移操作,以及控制数据迁移操作,使得I/O请求独立于数据迁移操作。
根据一些示例实施例,在一种操作存储设备的方法中,存储设备包括存储数据的主存储器和控制主存储器的存储控制器,该主存储器的多个存储块被划分为多个集合和一个空闲存储体,多个集合中的每一个集合包括至少一个存储体;以及响应于来自外部主机设备的输入/输出(I/O)请求,通过使用一个空闲存储体来执行用于在多个集合之间转移数据的数据迁移操作。
因此,存储设备可以在提供(例如,支持和/或保证)相对于主机的特定和/或预定I/O执行时间的同时,响应于来自主机设备的I/O请求,通过使用一个空闲存储体来执行用于在集合之间转移数据的数据迁移操作,并且可以控制数据迁移操作使得I/O请求与数据迁移操作无关。因此,存储设备可以将损耗均衡作为对主机设备来说隐藏的操作来执行,同时减少(例如,最小化)集合之间的性能干扰。
附图说明
根据结合附图的以下详细描述,将更清楚地理解说明性非限制性示例实施例。
图1是示出了根据一些示例实施例的数据存储系统(或存储系统)的框图。
图2是示出了根据一些示例实施例的图1中的主机设备的框图。
图3是示出了根据一些示例实施例的图1中的存储控制器的框图。
图4示出了根据一些示例实施例的图1中的主存储器的多个通道和路(way)的示例。
图5是示出了图1的存储设备中的存储控制器和一个非易失性存储器件之间的关系的框图。
图6是示出了根据一些示例实施例的图5中的非易失性存储器件的框图。
图7是示出了图6的非易失性存储器件中的存储单元阵列的框图。
图8是示出了图7的存储块之一的电路图。
图9示出了图8的存储块中的单元串CS的结构的示例。
图10示出了向多个集合指派图1中的存储设备中包括的非易失性存储器的示例。
图11示出了当向图10中的集合指派非易失性存储器中的存储体(bank)时图3中的映射表的示例。
图12示出了由存储设备内部执行数据迁移操作之前图1的存储系统的状态的示例,且图13示出了在图12的情况下图3中的映射表的示例。
图14示出了执行从图12的存储系统中的第一存储体到空闲存储体的数据迁移操作的示例,且图15示出了在图14的情况下图3中的映射表的示例。
图16示出了执行从图14的存储系统中的第三存储体到空闲存储体的数据迁移操作,且图17示出了在图16的情况下图3中的映射表的示例。
图18示出了执行从图16的存储系统中的第四存储体到空闲存储体的数据迁移操作,且图19示出了在图18的情况下图3中的映射表的示例。
图20是用于说明根据一些示例实施例的存储设备的操作的时序图。
图21是示出了根据一些示例实施例的操作存储设备的方法的流程图。
图22是示出了根据一些示例实施例的图1的存储系统中的主机设备的另一示例的框图。
图23示出了当主机设备被部署在图1的存储系统中时存储系统的示例。
图24和图25示出了根据一些示例实施例的存储系统中的主机设备和存储设备之间的用于确保空闲存储体的接口。
图26是示出了根据一些示例实施例的独立磁盘冗余阵列(RAID)存储系统的框图。
具体实施方式
下面将参考附图更全面地描述各种示例实施例,在附图中示出了一些示例实施例。
如下所示,组件块中的每一个组件块可以用硬件实现,例如,用被配置为执行非瞬态指令的硬件来实现。例如,除非另有说明,否则诸如控制器(例如,存储控制器)、引擎(例如,错误检测和校正引擎)、管理器(例如,迁移管理器)等的组件可以被实现为电路、FPGA和/或被配置为执行机器可读指令的处理器,使得机器可读指令当被处理器执行时,使处理器执行特定功能。
图1是示出了根据一些示例实施例的存储系统(或数据存储系统)的框图。
参考图1,存储系统10包括主机设备100和固态驱动器(SSD或存储设备)200。
主机设备100可以控制存储设备(SD)200的整体操作。主机设备100可以与存储设备200交换信号。主机设备100和存储设备200之间交换的信号可以包括命令、地址、数据等中的至少一项。
存储设备200可以包括存储控制器300和主存储器400,并且主存储器400可以包括多个非易失性存储器410~4k0。非易失性存储器410~4k0中的每一个非易失性存储器可以包括NAND闪存。这里,k是大于2的自然数。
存储控制器300可以与主机设备100交换诸如命令、地址、数据等的信号。存储控制器300可以根据命令向相应非易失性存储器中写入数据,或者可以从相应非易失性存储器读取数据。
存储设备200还可以包括连接到存储控制器300的动态随机存取存储器(DRAM)220。
DRAM 220可被用作临时存储从主机设备100接收到的数据和/或临时存储从非易失性存储器410~4k0读取到的数据的缓冲区域。DRAM220还可被用于驱动用于管理(例如,对非易失性存储器410~4k0的有效管理)的软件。DRAM 220可被用于存储从主机设备100接收的元数据和/或可被用于存储高速缓存数据。在一些实施例中,可以通过利用诸如SRAM等的易失性存储器去增强或替换DRAM来实现存储设备200。
多个非易失性存储器410~4k0可被用作存储设备200的存储介质。非易失性存储器410~4k0可以通过多个通道组CHG1~CHGk连接到存储控制器300。通道组CHG1~CHGk中的每一个通道组可以包括至少一个通道。一个或多个非易失性存储器可以连接到一个通道组。连接到一个通道组的非易失性存储器可以连接到相同的数据总线。
尽管未示出,但是存储设备200还可以包括要连接到主机设备100的连接盘(pad)。通过连接盘,存储设备200可以附接到主机设备100和/或从主机设备100拆卸,例如,容易地进行附接和/或拆卸。连接盘可以形成在存储设备200内部,或者可以用连接器形式形成在存储设备200外部。在一些示例实施例中,存储设备200可以不包括连接盘,并且可以通过布线工艺连接到主机设备100。
图2是示出了根据一些示例实施例的图1中的主机设备的框图。
参考图2,主机设备100可以包括处理器110、只读存储器(ROM)120、主机存储器130、用户接口(I/F)140、存储接口(I/F)150和/或总线165。主机设备100还可以包括压缩/解压缩引擎160。
总线165可以指传输通道,经由该传输通道在主机设备100的处理器110、ROM 120、主机存储器130、用户接口140、存储接口150和/或压缩/解压缩引擎160之间发送数据。
ROM 120可以存储各种应用程序,例如,支持诸如高级技术附件(ATA)、小型计算机系统接口(SCSI)、嵌入式多媒体卡(eMMC)和通用闪存存储(UFS)协议和NVMe之类的存储协议的应用程序。
主机存储器130可以临时存储数据或程序。
存储接口150可以包括支持诸如SATA、SAS、eMMC、UFS和/或NVMe之类的存储协议的接口。
用户接口140可以是用于在用户和主机设备100之间交换信息的物理或虚拟介质、计算机程序等或包括用于在用户和主机设备100之间交换信息的物理或虚拟介质、计算机程序等,并且可以包括物理硬件和逻辑软件。例如,用户接口140可以包括用于允许用户操纵主机设备100的输入设备和/或用于输出对用户输入进行处理的结果的输出设备。
处理器110可以控制主机设备100的整体操作。处理器110可以通过使用ROM 120中存储的应用,生成用于将数据存储在存储设备200中的请求和/或命令或用于从存储设备200读取数据的请求和/或命令,并且经由存储接口150向存储设备200发送该请求。
图3是示出了根据一些示例实施例的图1中的存储控制器300的框图。
参考图3,存储控制器300可以包括诸如CPU之类的处理器310、缓冲存储器320、纠错码(ECC)引擎330、主机接口(I/F)340、迁移管理器360、非易失性存储器接口(NVM I/F)350和/或总线315。
总线315可以指传输通道,经由该传输通道在存储控制器300的处理器310、缓冲存储器320、ECC引擎330、主机接口340、迁移管理器360和非易失性存储器接口350之间发送数据。处理器310可以执行用于主机设备100和非易失性存储器410~4k0之间的数据交换的操作。
主机接口340连接到主机设备100,且非易失性存储器接口350连接到非易失性存储器410~4k0。处理器310可以经由主机接口340与主机设备100通信。主机接口340可以使用(但不限于)SATA接口、并行高级技术附件(PATA)接口、USB或SAS接口、eMMC接口、UFS接口和/或eMMC接口来实现。
处理器310可以通过非易失性存储器接口350与非易失性存储器410~4k0通信。非易失性存储器接口350可以连接到非易失性存储器410~4k0中的每一个非易失性存储器。
ECC引擎330可以在写入操作期间使用各种引擎针对从主机设备100接收的数据来生成纠错码(ECC)。在读取操作期间,ECC引擎330可以对从非易失性存储器410~4k0读取的数据执行错误检测和错误校正,以向主机设备100提供数据。
缓冲存储器320可以临时存储原始数据、压缩数据和读取到的压缩数据中的一项或多项。另外,缓冲存储器320可以包括映射表(MT)325,映射表325存储用于将逻辑存储体地址映射到存储体的物理存储体地址的映射信息,非易失性存储器410~4k0的多个存储块被划分为存储体。此外,映射表325可以存储集合的集合标识以区分物理存储体。
主机设备100可以以集合为单位来访问非易失性存储器410~4k0。
当存储设备200从主机设备100接收输入/输出(I/O)请求时,迁移管理器360和/或存储控制器300提供(例如,确保和/或保证)相对于主机设备100的确定性I/O执行时间,通过使用一个空闲存储体来执行用于在集合之间转移数据的数据迁移操作,并且控制数据迁移操作使得I/O请求独立于(例如,与其无关)数据迁移操作。例如,迁移管理器360控制数据迁移操作,使得I/O请求不受(例如,不被)数据迁移操作影响。迁移管理器360可以包括编程/擦除(P/E)周期计数器363,其对存储体中的每一个存储体和/或集合中的每一个集合的编程/擦除周期进行计数。
提供(例如,确保和/或保证)相对于主机设备100的确定性I/O执行时间意味着:主机设备100和存储设备200之间的I/O操作的执行时间不受数据迁移操作的影响、不会被数据迁移操作改变和/或不会被数据迁移操作延迟。例如,主机设备100和存储设备200之间的I/O操作是根据规范(例如,NVMe规范)中定义的时间间隔来执行的,然而数据迁移操作是在存储设备200内部执行的。
编程/擦除周期计数器363可以对存储体中的每一个存储体的与来自主机设备100的请求相关联的编程/擦除周期进行计数,并且可以对存储体中的每一个存储体的与数据迁移操作相关联的编程/擦除周期进行计数。编程/擦除周期计数器363可以将存储体中的每一个存储体的所计数的编程/擦除周期存储在映射表325中。
图4示出了根据一些示例实施例的图1中的主存储器的多个通道和路(way)的示例。
参考图4,非易失性存储器410~4k0耦接到多个通道组CHG1~CHGk中的相应通道组。耦接到多个通道组CHG1~CHGk中的相应通道组的多个非易失性存储器件411~41m、421~42m、…、4k1~4km可以形成多条路:路1~路m。这里,m是大于2的自然数。也就是说,多个非易失性存储器件411~41m、421~42m、…、4k1~4km中的每一个非易失性存储器件可以被分别包括在m条路中的相应路中。
路表示用于划分共享相同通道的非易失性存储器件的单元。可以根据通道编号和路编号来识别非易失性存储器件中的每一个非易失性存储器件。
图5是示出了图1的存储设备200中的存储控制器300和一个非易失性存储器件411之间的关系的框图。
参考图5,非易失性存储器件411可以在存储控制器300的控制下执行擦除操作、编程操作和/或写入操作。非易失性存储器件411可以通过输入/输出线从存储控制器300接收命令CMD、地址ADDR和数据DATA,以执行这些操作。
另外,非易失性存储器件411可以通过控制线从存储控制器300接收控制信号CTRL,并通过电力线从存储控制器300接收电力PWR。另外,非易失性存储器件411可以通过控制线向存储控制器300提供状态信号RnB。
图6是示出了根据一些示例实施例的图5中的非易失性存储器件411的框图。
参考图6,非易失性存储器件411包括存储单元阵列420、地址解码器450、页缓冲器电路430、数据输入/输出(I/O)电路440、控制电路460和电压生成器470。
存储单元阵列420可以通过串选择线SSL、多个字线WL和地选择线GSL耦接到地址解码器450。另外,存储单元阵列420可以通过多个位线BL耦接到页缓冲器电路430。
存储单元阵列420可以包括耦接到多个字线WL和多个位线BL的多个存储单元。
在一些示例实施例中,存储单元阵列420可以是或可以包括以三维结构(例如,竖直结构)形成在衬底上的三维存储单元阵列。在这种情况下,存储单元阵列420可以包括竖直取向的竖直单元串,使得至少一个存储单元位于另一存储单元上方。
在一些示例实施例中,存储单元阵列420可以是或可以包括以二维结构(或水平结构)形成在衬底上的二维存储单元阵列。
图7是示出了图6的非易失性存储器件中的存储单元阵列420的框图。
参考图7,存储单元阵列420可以包括多个存储块BLK1至BLKz。存储块BLK1至BLKz沿第一至第三方向D1、D2和D3延伸。在一些示例实施例中,存储块BLK1至BLKz由图6中的地址解码器450选择。例如,地址解码器450可以在存储块BLK1至BLKz中选择与块地址相对应的存储块BLK。
图8是示出了图7的存储块之一的电路图。
图8的存储块BLKi可以以三维结构(或竖直结构)形成在衬底SUB上。例如,存储块BLKi中包括的多个存储单元串可以形成在垂直于衬底SUB的方向PD上。
参考图8,存储块BLKi可以包括耦接在位线BL1、BL2和BL3与公共源极线CSL之间的存储单元串NS11至NS33。存储单元串NS11至NS33中的每一个存储单元串可以包括串选择晶体管SST、多个存储单元MC1至MC8和地选择晶体管GST。在图8中,示出了存储单元串NS11至NS33中的每一个存储单元串包括八个存储单元MC1至MC8。然而,本发明构思不限于此。在一些示例实施例中,存储单元串NS11至NS33中的每一个存储单元串可以包括任何数量的存储单元。
串选择晶体管SST可以连接到相应的串选择线SSL1至SSL3。多个存储单元MC1至MC8可以分别连接到相应的字线WL1至WL8。地选择晶体管GST可以连接到相应的地选择线GSL1至GSL3。串选择晶体管SST可以连接到相应的位线BL1、BL2和BL3,并且地选择晶体管GST可以连接到公共源极线CSL。
具有相同高度的字线(例如,WL1)可以共同连接,并且地选择线GSL1至GSL3和串选择线SSL1至SSL3可以分离。在图8中,示出了存储块BLKi耦接到八个字线WL1至WL8和三个位线BL1至BL3。然而,本发明构思不限于此。在一些示例实施例中,存储单元阵列420可以耦接到任何数量的字线和位线。
图9示出了图8的存储块中的单元串CS的结构的示例。
参考图8和图9,在衬底SUB上设置柱状物PL,使得柱状物PL沿垂直于衬底SUB的方向延伸以与衬底SUB接触。图9中所示的地选择线GSL1、字线WL1至WL8和串选择线SSL1中的每一个可以由与衬底SUB平行的导电材料(例如,金属材料)形成。柱状物PL可以穿过形成串选择线SSL1、字线WL1至WL8和地选择线GSL1的导电材料与衬底SUB接触。
图9中还示出了沿线A-A’截取的截面图。在一些示例实施例中,示出了与第一字线WL1相对应的第一存储单元MC1的截面图。柱状物PL可以包括圆柱体BD。气隙AG可被限定在主体BD的内部。
主体BD可以包括P型硅,并且可以是将形成通道的区域。柱状物PL还可以包括围绕主体BD的圆柱形隧道绝缘层TI和围绕隧道绝缘层TI的圆柱形电荷陷阱层CT。阻挡绝缘层BI可以设置在第一字线WL1和柱状物PL之间。主体BD、隧道绝缘层TI、电荷陷阱层CT、阻挡绝缘层BI和第一字线WL1可以构成或被包括在电荷陷阱型晶体管中,该电荷陷阱型晶体管形成在垂直于衬底SUB或衬底SUB的顶面的方向上。串选择晶体管SST、地选择晶体管GST和其他存储单元可以具有与第一存储单元MC1相同的结构。
返回图6,控制电路460可以从存储控制器300接收命令(信号)CMD和地址(信号)ADDR,并且可以基于命令信号CMD和地址信号ADDR来控制非易失性存储器件411的擦除循环、编程循环和/或读取操作。编程循环可以包括编程操作和编程验证操作。擦除循环可以包括擦除操作和擦除验证操作。
例如,控制电路460可以基于命令信号CMD来生成用于控制电压生成器470的控制信号CTL,并且基于地址信号ADDR来生成行地址R_ADDR和列地址C_ADDR。控制电路460可以向地址解码器450提供行地址R_ADDR,并向数据输入/输出电路440提供列地址C_ADDR。
地址解码器450可以通过串选择线SSL、多个字线WL和地选择线GSL耦接到存储单元阵列420。在编程操作或读取操作期间,地址解码器450可以基于行地址R_ADDR,将多个字线WL之一确定为第一字线(例如,所选择的字线)并将多个字线WL中除第一字线之外的其余字线确定为未选择的字线。
电压生成器470可以基于控制信号CTL来生成非易失性存储器件411的操作所需的字线电压VWL。电压生成器470可以从存储控制器300接收电力PWR。可以通过地址解码器450向多个字线WL施加字线电压VWL。
例如,在擦除操作期间,电压生成器470可以向存储块的阱施加擦除电压,并且可以向存储块的全部字线施加地电压。在擦除验证操作期间,电压生成器470可以向存储块的全部字线施加擦除验证电压,或者逐个字线地向字线顺序施加擦除验证电压。
例如,在编程操作期间,电压生成器470可以向第一字线施加编程电压,并且可以向未选择的字线施加编程通过电压。另外,在编程验证操作期间,电压生成器470可以向第一字线施加编程验证电压,并且可以向未选择的字线施加验证通过电压。
此外,在读取操作期间,电压生成器470可以向第一字线施加读取电压,并且可以向未选择的字线施加读取通过电压。
页缓冲器电路430可以通过多个位线BL耦接到存储单元阵列420。页缓冲器电路430可以包括多个页缓冲器。在一些示例实施例中,一个页缓冲器可以连接到一个位线。在一些示例实施例中,一个页缓冲器可以连接到两个或更多个位线。
页缓冲器电路430可以临时存储要在所选择的页中编程的数据或者从所选择的页中读出的数据。
数据输入/输出电路440可以通过数据线DL耦接到页缓冲器电路430。在编程操作期间,数据输入/输出电路440可以从存储控制器300接收数据DATA,并且基于从控制电路460接收的列地址C_ADDR向页缓冲器电路430提供数据DATA。在读取操作期间,数据输入/输出电路440可以基于从控制电路460接收的列地址C_ADDR,向存储控制器300提供页缓冲器电路430中存储的数据DATA。
另外,页缓冲器电路430和数据输入/输出电路440从存储单元阵列420的第一区域读取数据,并向存储单元阵列420的第二区域写入读取到的数据。例如,页缓冲器电路430和数据输入/输出电路440可以执行回拷(copy-back)操作。
控制电路460可以包括状态信号生成器465,并且状态信号生成器465可以生成指示编程操作、擦除操作和读取操作中的每一个操作已完成和/或正在进行中的状态信号RnB。
图10示出了向多个集合指派图1中的存储设备中包括的非易失性存储器的示例。
参考图10,非易失性存储器410~4k0中包括的存储块可以被划分为多个存储体BNK1~BNK9。
多个存储体BNK1~BNK9中的每一个存储体可以包括存储块BLK1~BLK4。
在给定时间,存储控制器300可以对多个存储体BNK1~BNK9中的一个存储体仅执行读取操作、编程操作和擦除操作中的一种操作。多个存储体BNK1~BNK9中的每一个存储体可以包括存储元件,由于相同存储体中的读取操作、编程操作和擦除操作的干扰,该存储元件生成延迟。
主机设备100可以以这种集合为单位来访问存储体BNK1~BNK9中的一些存储体。
主机设备100可以向第一集合SET1指派存储体BNK1和BNK2,可以向第二集合SET2指派存储体BNK3和BNK4,可以向第三集合SET3指派存储体BNK5和BNK6,可以向第四集合SET4指派存储体BNK7和BNK8,并且可以以集合为单位来访问存储体BNK1~BNK8。未被主机设备100指派给集合的存储体BNK9可被用作存储设备200中的空闲存储体FBNK。
集合意味着一组存储体在逻辑上和/或物理上与其他集合分离。一个集合的性能/操作不受另一集合的性能/操作的影响。主机设备100可以将分离(例如,需要分离)的数据存储在集合SET1~SET4中的不同集合中,并且可以根据应用来访问不同集合中存储的数据而不会干扰性能。
图11示出了当向图10中的集合指派非易失性存储器中的存储体时图3中的映射表325的示例。
参考图11,映射表325可以存储用于识别集合中的每一个集合的集合标识符SET_ID、存储体中的每一个存储体的逻辑存储体编号LBKN、存储体中的每一个存储体的物理存储体编号PBNK和存储体中的每一个存储体的编程/擦除周期P/E CYCLE。
可以向集合SET1的第一逻辑存储体编号LBKN1(例如,逻辑存储体地址)指派存储体BNK1的物理存储体编号PBNK(例如,物理存储体地址),并且可以向集合SET1的第二逻辑存储体编号LBKN2指派存储体BNK2的物理存储体编号。可以向集合SET2的第一逻辑存储体编号LBKN1指派存储体BNK3的物理存储体编号PBNK,并且可以向集合SET2的第二逻辑存储体编号LBKN2指派存储体BNK4的物理存储体编号。可以对存储体BNK5~BNK8类似地应用上述映射。
图12示出了由存储设备内部执行数据迁移操作之前图1的存储系统的状态的示例,且图13示出了在图12的情况下图3中的映射表的示例。
参考图12,主机设备100可以根据主机设备100上运行的应用APP1~APP4的特性,向集合SET1~SET4中的相应一个集合指派应用APP1~APP4。如上所述,主机设备100可以向第一集合SET1指派存储体BNK1和BNK2,向第二集合SET2指派存储体BNK3和BNK4,向第三集合SET3指派存储体BNK5和BNK6,并且向第四集合SET4指派存储体BNK7和BNK8。
为了说明的目的,假设第一存储体BNK1包括存储块BLK11、BLK13、BLK15和BLK17,第二存储体BNK2包括存储块BLK12、BLK14、BLK16和BLK18,第三存储体BNK3包括存储块BLK21、BLK23、BLK25和BLK27,并且第四存储体BNK4包括存储块BLK22、BLK24、BLK26和BLK28。
应用APP1可以是写入密集型的,并且第一集合SET1中的存储体BNK1和BNK2的第一编程/擦除周期具有值50,例如,已对BNK1和BNK2执行了50个编程/擦除周期。应用APP2可以是读取密集型的,并且第二集合SET2中的存储体BNK3和BNK4的第二编程/擦除周期具有值2,例如,已对BNK3和BNK4执行了2个编程/擦除周期。由于第一集合SET1的第一编程/擦除周期大于第二集合SET2的第二编程/擦除周期,因此当第一集合SET1的编程/擦除周期继续递增时,主存储器400的寿命和/或性能可能因第一集合SET1而降低。
当集合的编程/擦除周期之间发生失衡时,存储控制器300中的迁移管理器360可以向主机设备100提供(例如,确保/保证)更确定性的I/O执行时间,并且可以通过在存储设备200内部使用空闲存储体FBNK来执行用于在集合之间转移数据的数据迁移操作。
图14示出了执行从图12的存储系统中的第一存储体到空闲存储体的数据迁移操作的示例,且图15示出了在图14的情况下图3中的映射表的示例。
参考图14和图15,迁移管理器360向作为空闲存储体FBNK的第九存储体BNK9迁移MIG第一存储体BNK1中存储的第一数据,当第一数据的迁移完成时,将第九存储体BNK9的物理存储体地址映射到第一集合SET1的逻辑存储体地址LBK1,对第一存储体BNK1的存储块BLK11、BLK13、BLK15和BLK17执行擦除操作,并且如图15所示,通过在映射表325中将第一存储体BNK1记录为空闲存储体FBNK来更新映射表325。
在图14和图15的情况下,被映射到第一集合SET1的第一逻辑存储体地址LBK1的第九存储体BNK9的编程/擦除周期可以具有值1。另外,由于仅在空闲存储体FBNK中执行编程/擦除操作,因此集合之间不存在性能干扰。
图16示出了执行从图M的存储系统中的第三存储体到空闲存储体的数据迁移操作,且图17示出了在图16的情况下图3中的映射表的示例。
参考图16和图17,迁移管理器360向作为空闲存储体FBNK的第一存储体BNK1迁移MIG第三存储体BNK3中存储的第二数据,当第二数据的迁移完成时,将第一存储体BNK1的物理存储体地址映射到第二集合SET2的第一逻辑存储体地址LBK1,对第三存储体BNK3的存储块BLK21、BLK23、BLK25和BLK27执行擦除操作,并且如图17所示,通过在映射表325中将第三存储体BNK3记录为空闲存储体FBNK来更新映射表325。
在图16和图17的情况下,被映射到第二集合SET2的第一逻辑存储体地址LBK1的第一存储体BNK1的编程/擦除周期可以具有值51。另外,由于仅在空闲存储体FBNK中执行编程/擦除操作,因此集合之间不存在性能干扰。
图18示出了执行从图16的存储系统中的第四存储体到空闲存储体的数据迁移操作,且图19示出了在图18的情况下图3中的映射表的示例。
在图18中,假设第二存储体BNK2中存储的第三数据已迁移到第三存储体BNK3。
参考图18和图19,迁移管理器360向作为空闲存储体FBNK的第二存储体BNK2迁移MIG第四存储体BNK4中存储的第四数据,当第四数据的迁移完成时,将第二存储体BNK2的物理存储体地址映射到第二集合SET2的第二逻辑存储体地址LBK2,对第四存储体BNK4的存储块BLK22、BLK24、BLK26和BLK28执行擦除操作,并且如图19所示,通过在映射表325中将第四存储体BNK4记录为空闲存储体FBNK来更新映射表325。
在图18和图19的情况下,被映射到第二集合SET2的第二逻辑存储体地址LBK2的第二存储体BNK2的编程/擦除周期可以具有值51。另外,由于仅在空闲存储体FBNK中执行编程/擦除操作,因此集合之间不存在性能干扰。
如参考图12至图19所描述的,当集合的编程/擦除周期之间发生失衡时,存储控制器300中的迁移管理器360可以通过在存储设备200内部执行用于在集合之间转移数据的数据迁移操作来执行损耗均衡。可以对主机设备100隐藏数据迁移操作。
当第一数据从第一存储体BNK1向第九存储体BNK9迁移期间,存储控制器300从主机设备100接收到对第一数据的读取请求时,存储控制器300可以向第一存储体BNK1和第九存储体BNK9同时提供与读取请求相对应的读取命令。
响应于读取命令,存储控制器300可以向主机设备100提供从第一存储体BNK1和第九存储体BNK9之一较早接收到的第一数据。响应于读取命令,存储控制器300可以忽略从第一存储体BNK1和第九存储体BNK9之一较后接收到的第一数据,而不是向主机设备100提供该第一数据。
存储控制器300可以互斥地对第一存储体BNK1(例如,源存储体)执行读取命令并且对第九存储体BNK9(例如,目的地存储体)执行编程/擦除命令来执行数据迁移操作。为了互斥地执行命令,图3中的CPU 310可以包括调度器,该调度器互斥地调度与源存储体和目的地存储体有关的命令。
为了执行数据迁移操作,存储控制器300可以对第一存储体BNK1(例如,源存储体)应用读取命令,并可以对第九存储体BNK9(例如,目的地存储体)应用编程/擦除命令。
存储控制器300可以通过使用一个空闲存储体,通过向集合的逻辑存储体地址动态指派存储体的物理存储体地址来执行数据迁移操作。
图20是用于说明根据一些示例实施例的存储设备的操作的时序图。
在图20中,假设在第一数据从第一存储体BNK1向第九存储体BNK9(即,空闲存储体FBNK)迁移期间,主机设备100发出读取请求。
参考图20,在第一数据从第一存储体BNK1向第九存储体BNK9(例如,空闲存储体FBNK)迁移期间,存储控制器300可以互斥地对第一存储体BNK1执行读取命令RD并且对第九存储体BNK9执行编程/擦除命令。
也就是说,当存储控制器300在第一时间点t1对第一存储体BNK1应用读取命令RD,在第二时间点t2以与对第一存储体BNK1的读取命令RD互斥的方式对第九存储体BNK9应用擦除命令ERASE并且在时间点t2接收读取请求时,第一存储体BNK1处于空闲状态IDLS且第九存储体BNK9处于操作状态OPS。因此,第九存储体BNK9忽略读取请求,并且第一存储体BNK1接受读取请求以向存储控制器300提供相应的数据。
另外,当存储控制器300在第三时间点t3对第一存储体BNK1应用读取命令RD且互斥地在第四时间点t4对第九存储体BNK9应用编程命令PGM,并且在第三时间点t3接收读取请求时,第一存储体BNK1处于操作状态OPS且第九存储体BNK9处于空闲状态IDLS。因此,第一存储体BNK1忽略读取请求,并且第九存储体BNK9接受读取请求以向存储控制器300提供相应的数据。
图21是示出了根据一些示例实施例的操作存储设备的方法的流程图。
参考图1至图21,在操作包括存储数据的主存储器400和控制主存储器400的存储控制器300在内的存储设备200的方法中,存储控制器300将主存储器400的多个存储块划分为多个集合和一个空闲存储体(S100),并且集合中的每一个集合包括至少一个存储体。
响应于来自主机设备100的输入/输出(I/O)请求,存储控制器300通过使用一个空闲存储体来执行用于在集合之间转移数据的数据迁移操作,同时保证相对于主机设备100的预定(确定性的)I/O执行时间(S200)。
可以对主机设备100隐藏数据迁移操作。
存储控制器300可以通过执行数据迁移操作在存储设备200内部对具有不同编程/擦除周期的集合执行损耗均衡。
图22是示出了根据一些示例实施例的图1的存储系统中的主机设备的另一示例的框图。
图22的主机设备100b可以支持虚拟功能。例如,当主机设备100b被包括在图1的存储系统10中时,存储系统10可以支持单根IO虚拟化(SR-IOV)的虚拟功能,同时支持根据NVMe协议的接口方案。
参考图22,主机设备100b包括处理器(即,主机核)110、虚拟化中介(VI)170、根复合体(RC)180、主机存储器130和存储接口(I/F)150。
处理器110可以包括物理功能(PF)110a和多个虚拟功能(VF)111~115。物理功能110a可以是作为物理硬件的核或处理器。VF 111~115中的每一个VF可以是通过SR-IOV的虚拟化操作来生成的虚拟化核或处理器。VF 111~115中的每一个VF可以独立地驱动操作系统(OS)或应用。例如,由虚拟功能驱动的OS可以被称为客户OS。
虚拟化中介170可以连接到处理器110和根复合体180,并且执行以下功能:执行VF111~115或者管理VF 111~115。例如,虚拟化中介170可以执行发送和管理用于SR-IOV的虚拟化操作的地址信息的功能。
根复合体180可以表示层次结构的根。根复合体180连接到虚拟化中介170、主机存储器130和存储接口150。根复合体180可以执行将处理器110连接到主机存储器130或者将处理器110和主机存储器130连接到存储接口150的功能。
主机存储器130可以通过根复合体180连接到虚拟化中介170、处理器110和存储接口150。主机存储器130可以用作处理器110中的物理功能110a或VF 111~115中的每一个VF的工作存储器。例如,可以将应用程序、文件系统和设备驱动程序加载到主机存储器130中。
存储接口150连接到根复合体180,并提供主机设备100b和存储设备200之间的通信。例如,存储接口150可以根据NVMe协议方案向存储设备200提供基于队列的命令和数据,或者接收由存储设备200处理的命令和数据的信息。
例如,如图22中所示,为了支持NVMe协议接口方案中的SR-IOV虚拟功能,主机存储器130可以提供用于存储物理功能110a的管理员队列(AQ)的PF管理员队列存储区域PF A_Q区域130a、用于存储物理功能110a的输入/输出队列的PF输入/输出队列存储区域PF I/O_Q区域130b、以及用于存储虚拟化功能的输入/输出队列的多个VF输入/输出队列存储区域VF1 I/O_Q区域131~VF5 I/O_Q区域135。例如,可以使用NVMe协议接口方案中主要使用的循环队列方案,将队列命令存储在每个存储区域中。
图23示出了当主机设备部署在图1的存储系统中时的存储系统的示例。
参考图1和图23,主机设备100或100b以集合为单位控制存储设备200,并且主机设备100或100b向多个集合SET1~SET5指派处理器110中的VF 111~115,多个集合SET1~SET5包括区分主存储器400中的多个存储块的至少一个存储体。
在图23中,由8和16表示的未被指派给集合SET1~SET5的存储体是未使用的存储体UN_BNK并且可被用作空闲存储体FBNK。
图24和图25示出了根据一些示例实施例的存储系统中的主机设备和存储设备之间的接口,用于确保空闲存储体。
参考图24,当由8和16表示的存储体是如图23中所示未被指派给集合SET1~SET5的未使用的存储体UN_BNK时,为了确保空闲存储体,主机设备100可以向存储控制器300提供未使用存储体锁定命令LK_UNBK_CMD,以向空闲存储体指派由8和16表示的未被指派给虚拟功能VF 111~115的存储体。也就是说,存储控制器300可以通过应用未使用存储体锁定命令LK_UNBK_CMD来预留由8和16表示的存储体,而不向用户开放由8和16表示的存储体。
存储控制器300可以通过将由8和16表示的未使用的存储体之一用作空闲存储体来执行数据迁移操作。
如果存储设备200不包括未使用的存储体,则存储控制器300可以响应于未使用存储体锁定命令LK_UNBK_CMD向主机设备100返回错误消息。如果存储设备200包括未使用的存储体,则存储控制器300可以中止对未使用的存储体的集合指派和用户I/O请求。
为了释放所指派的空闲存储体,主机设备100可以向存储控制器300提供未使用存储体解锁命令UNLK_UNBK_CMD。在这种情况下,当数据迁移正在进行时,存储控制器300可以中止未使用存储体解锁命令UNLK_UNBK_CMD。
参见图25,当向虚拟功能VF2指派由3、4、11和12表示的存储体时,虚拟功能VF2被激活,然后如图23中那样被停用,为了确保空闲存储体,主机设备100可以向存储控制器300提供未使用集合锁定命令LK_MSET_CMD。
在这种情况下,响应于未使用集合锁定命令LK_MSET_CMD,存储控制器300可以通过使用由3、4、11和12表示的未被指派给集合的存储体之一来执行数据迁移操作。当从用户接收到对由3、4、11和12表示的存储体的I/O请求时,存储控制器300可以中止该I/O请求。
为了释放指派给停用的虚拟功能的所指派的空闲存储体,主机设备100可以向存储控制器300提供未使用集合解锁命令UNLK_MSET_CMD。当从用户接收到对从空闲存储体释放的存储体的I/O请求时,存储控制器300可以接受该I/O请求。
图26是示出了根据一些示例实施例的独立磁盘冗余阵列(RAID)存储系统的框图。
参考图26,RAID存储系统600可以包括RAID控制器610、非易失性随机存取存储器(NVRAM)620、多个存储设备SD1 710至SDn 7n0和总线630。RAID存储系统600的组件可以彼此连接以通过总线630彼此通信。
RAID方法可以包括:为了在一些存储设备损坏时防止数据丢失,通过使用基于镜像的技术来恢复数据的方法以及通过使用基于奇偶校验的技术来恢复数据的方法。例如,可以将基于奇偶校验的RAID方法应用于RAID存储系统600。
存储设备710至7n0可以存储各种类型的数据,并且可以由固态驱动器、嵌入式多媒体卡(eMMC)或通用闪存存储(UFS)来实现。
在一些示例实施例中,存储设备710至7n0可以由固态驱动器来实现。固态驱动器可以通过使用多个非易失性存储器芯片来实现存储设备710至7n0。在一些示例实施例中,固态驱动器可以通过使用多个闪存芯片来实现存储设备。
存储设备710至7n0中的每一个存储设备可以包括迁移管理器711至7n1中的相应一个迁移管理器。迁移管理器711至7n1中的每一个迁移管理器可以在相应的存储设备内部执行数据迁移操作。
存储设备710至7n0中的每一个存储设备可以采用图1中的存储设备200,并且可以通过使用一个空闲存储体来执行用于在集合之间转移数据的数据迁移操作而在内部执行损耗均衡。
NVRAM 620可以是或可以包括RAM,RAM中存储的数据即使在电源关闭之后仍然存在。在一些示例实施例中,NVRAM 620可以由相变RAM(PRAM)、铁电RAM(FRAM)或磁RAM(MRAM)实现。在一些示例实施例中,NVRAM 620还可以通过使用电池或电容器来实现对作为易失性存储器的动态随机存取存储器(DRAM)或静态RAM(SRAM)施加的电力。例如,当系统电源关闭时,DRAM或SRAM由电池或电容器操作,并且向作为非易失性存储空间的存储设备转移DRAM或SRAM中存储的数据,且因此可以保持数据。因此,即使系统电源关闭,也可以保持DRAM或SRAM中存储的数据。
可以在NVRAM 620中分配高速缓存区域,在高速缓存区域中针对每个条带(stripe)单元存储要写入多个存储设备710至7n0的数据。条带单元可以指代一组存储块,且每个存储块可被包括在多个存储体中的每个存储体中。在NVRAM 620中分配的用于针对每个条带单元来存储要写入多个存储设备710至7n0的数据的高速缓存区域可以被称为条带高速缓存区域。
NVRAM 620可以存储RAID存储系统600中使用的映射表信息。映射表信息可以包括将逻辑地址转换为物理地址的地址映射表信息和/或指示条带分组信息的条带映射表信息。条带分组信息可以包括分别形成条带的存储块。条带映射表信息还可以包括与每个条带相对应的有效页比率信息。
RAID控制器610可以基于RAID环境来控制多个存储设备710至7n0。在一些示例实施例中,RAID环境可以是日志结构化RAID环境。在日志结构化RAID环境中,当更新写入存储设备710至7n0中的数据时,RAID控制器610可以控制RAID存储系统600以日志形式在新位置写入数据而不覆盖数据。
RAID控制器610可以执行在条带映射表中登记形成条带的存储设备710至7n0的各条存储块位置信息。
RAID控制器610可以通过使用NVRAM 620中存储的映射表信息来执行地址转换处理和/或条带分组处理。例如,RAID控制器610可以通过使用地址映射表信息将逻辑地址转换为物理地址。RAID控制器610可以通过使用条带映射表信息,针对每个条带单元执行垃圾收集。
RAID控制器610可以通过使用映射表信息,执行选择受损条带用于垃圾收集的操作。例如,RAID控制器610可以通过使用条带映射表信息,从经分组的条带中找到具有最低有效页比率的条带,并且可以将该条带选择为受损条带。
本公开可以应用于包括存储设备在内的各种电子设备。例如,本公开可以应用于诸如移动电话、智能电话、个人数字助理(PDA)、便携式多媒体播放器(PMP)、数码相机、便携式摄像机、个人计算机(PC)、服务器计算机、工作站、膝上型计算机、数字TV、机顶盒、便携式游戏机、导航系统等的系统。
前述内容是对示例实施例的说明,而不应被解释为对其的限制。虽然已经描述了一些示例实施例,但是本领域普通技术人员将容易理解:在不实质上脱离本公开的新颖教义和优点的前提下,可以在示例实施例中进行多种修改。因此,所有这种修改旨在被包括在如权利要求中限定的本公开的范围内。

Claims (18)

1.一种存储设备,包括:
包括多个非易失性存储器件在内的主存储器,所述主存储器被配置为存储数据;以及
存储控制器,被配置为控制所述主存储器,
其中,所述存储控制器被配置为:
将所述多个非易失性存储器件的多个存储块划分为多个存储体,
将所述多个存储体中的每一个存储体指派给a)多个集合或b)一个空闲存储体,所述多个集合中的每一个集合包括至少一个存储体,
响应于来自主机设备的输入/输出I/O请求,在与所述I/O请求相关联的确定性I/O执行时间内,通过使用所述一个空闲存储体在集合之间转移数据来执行数据迁移操作,以及
控制所述数据迁移操作,使得所述I/O请求独立于所述数据迁移操作,
其中,所述存储控制器被配置为通过非易失性存储器快速“NVMe”协议与所述主机设备执行接口连接,并且所述确定性I/O执行时间由所述NVMe协议定义。
2.根据权利要求1所述的存储设备,其中,所述存储控制器被配置为在特定时间对所述多个存储体中的一个存储体仅执行从由读取操作、编程操作和擦除操作构成的组中选择的一个操作。
3.根据权利要求2所述的存储设备,其中,所述存储控制器包括:
映射表,被配置为从所述主机设备接收集合标识符和用于访问所述多个存储体中的一个存储体的逻辑存储体地址,所述映射表被配置为存储所述逻辑存储体地址和与所述逻辑存储体地址相对应的物理存储体地址之间的映射信息;以及
迁移管理器,被配置为管理所述映射表,被配置为基于集合中的每一个集合的编程/擦除周期的数量来执行所述数据迁移操作,并且被配置为响应于所述数据迁移操作完成来更新所述映射表。
4.根据权利要求3所述的存储设备,其中,所述迁移管理器被配置为响应于来自所述主机设备的请求,对存储体中的每一个存储体的编程/擦除周期进行计数,并且被配置为响应于所述数据迁移操作,对存储体中的每一个存储体的编程/擦除周期进行计数。
5.根据权利要求3所述的存储设备,其中,所述多个集合至少包括第一集合和第二集合,所述第一集合包括a)所述多个存储体中的第一存储体和b)所述多个存储体中的第二存储体,并且所述第二集合包括c)所述多个存储体中的第三存储体和d)所述多个存储体中的第四存储体,
其中,所述第一集合的编程/擦除周期与第一周期相对应,且所述第二集合的编程/擦除周期与第二周期相对应,以及
其中,当所述第一周期大于所述第二周期时,所述迁移管理器被配置为:
向所述空闲存储体迁移所述第一存储体中存储的第一数据,响应于所述第一数据的迁移完成,将所述空闲存储体的物理存储体地址映射到所述第一集合的第一逻辑存储体地址,
对所述第一存储体的存储块执行擦除操作,以及
将所述映射表中的第一存储体记录为所述空闲存储体。
6.根据权利要求5所述的存储设备,其中,所述迁移管理器被配置为:
向所述第一存储体迁移所述第三存储体中存储的第二数据;
响应于所述第二数据的迁移完成,将所述第一存储体的物理存储体地址映射到所述第二集合的第一逻辑存储体地址;
对所述第三存储体的存储块执行擦除操作;以及
将所述映射表中的第三存储体记录为所述空闲存储体。
7.根据权利要求6所述的存储设备,其中,所述迁移管理器被配置为通过顺序地对所述第二存储体和所述第四存储体执行迁移和更新逻辑存储体地址,在所述第一集合和所述第二集合之间执行损耗均衡。
8.根据权利要求5所述的存储设备,其中,响应于所述存储控制器在所述第一数据的迁移期间从所述主机设备接收到与所述第一数据有关的读取请求,
所述存储控制器被配置为同时向所述第一存储体和所述空闲存储体提供读取命令,所述读取命令与所述读取请求相对应。
9.根据权利要求8所述的存储设备,其中,响应于所述读取命令,所述存储控制器被配置为向所述主机设备提供从所述第一存储体和所述空闲存储体之一较早接收到的第一数据。
10.根据权利要求8所述的存储设备,其中,响应于所述读取命令,所述存储控制器被配置为忽略从所述第一存储体和所述空闲存储体之一较后接收到的第一数据。
11.根据权利要求5所述的存储设备,其中,所述存储控制器被配置为:以与对所述空闲存储体执行的编程/擦除命令互斥的方式对所述第一存储体执行读取命令。
12.根据权利要求5所述的存储设备,其中,所述存储控制器被配置为通过a)对所述第一存储体应用读取命令和b)对所述空闲存储体应用编程/擦除命令来执行所述第一数据的迁移。
13.根据权利要求1所述的存储设备,其中,所述存储控制器被配置为通过向集合的逻辑存储体地址动态指派存储体的物理存储体地址来执行所述数据迁移操作。
14.根据权利要求1所述的存储设备,其中,所述多个存储块中的至少一个存储块包括衬底上堆叠的NAND串。
15.一种存储系统,包括:
存储设备,包括被配置为存储数据的主存储器和被配置为控制所述主存储器的存储控制器,所述主存储器包括多个非易失性存储器件;以及
主机设备,被配置为以集合为单位来控制所述存储设备,
其中,所述存储控制器被配置为:
将所述多个非易失性存储器件的多个存储块划分为多个存储体,
将所述多个存储体中的每一个存储体指派给a)多个集合或b)一个空闲存储体,所述多个集合中的每一个集合包括至少一个存储体,
响应于来自所述主机设备的输入/输出I/O请求,在与所述I/O请求相关联的确定性I/O执行时间内,通过使用所述一个空闲存储体在集合之间转移数据来执行数据迁移操作,以及
控制所述数据迁移操作,使得所述I/O请求独立于所述数据迁移操作,
其中,所述存储设备被配置为通过非易失性存储器快速“NVMe”协议与所述主机设备执行接口连接,并且所述确定性I/O执行时间由所述NVMe协议定义。
16.根据权利要求15所述的存储系统,其中,所述主机设备包括:
处理器,包括a)至少一个物理功能和b)多个虚拟功能;以及
主机存储器,被配置为作为所述处理器的工作存储器来操作,
其中,所述主机设备被配置为向所述存储控制器提供未使用存储体锁定命令,以向所述空闲存储体指派至少一个未使用的存储体,所述未使用的存储体未被指派给存储体的虚拟功能,以及
所述主机设备被配置为向所述存储控制器提供未使用存储体解锁命令以释放所指派的空闲存储体。
17.根据权利要求15所述的存储系统,其中,所述主机设备包括:
处理器,包括a)至少一个物理功能和b)多个虚拟功能;以及
主机存储器,被配置为作为所述处理器的工作存储器来操作,
其中,所述主机设备被配置为向所述存储控制器提供未使用集合锁定命令,以向所述空闲存储体指派至少一个未使用的存储体,所述未使用的存储体被指派给虚拟功能,所述未使用的存储体与存储体的停用虚拟功能相对应,以及
所述主机设备被配置为向所述存储控制器提供未使用集合解锁命令以释放所指派的空闲存储体。
18.一种操作存储设备的方法,所述存储设备包括被配置为存储数据的主存储器和被配置为控制所述主存储器的存储控制器,所述方法包括:
将所述主存储器的多个存储块划分为多个集合和一个空闲存储体,所述多个集合中的每一个集合包括至少一个存储体;以及
响应于来自主机设备的输入/输出“I/O”请求,在与所述I/O请求相关联的确定性I/O执行时间内,通过使用所述一个空闲存储体在所述多个集合之间转移数据来执行数据迁移操作,
其中,所述存储设备被配置为通过非易失性存储器快速“NVMe”协议与所述主机设备执行接口连接,并且所述确定性I/O执行时间由所述NVMe协议定义。
CN201910762325.6A 2018-09-07 2019-08-16 存储设备、存储系统以及操作存储设备的方法 Active CN110888597B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2018-0106913 2018-09-07
KR1020180106913A KR102545189B1 (ko) 2018-09-07 2018-09-07 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법

Publications (2)

Publication Number Publication Date
CN110888597A CN110888597A (zh) 2020-03-17
CN110888597B true CN110888597B (zh) 2024-09-13

Family

ID=69719614

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910762325.6A Active CN110888597B (zh) 2018-09-07 2019-08-16 存储设备、存储系统以及操作存储设备的方法

Country Status (3)

Country Link
US (2) US11354057B2 (zh)
KR (1) KR102545189B1 (zh)
CN (1) CN110888597B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11397644B2 (en) * 2019-04-23 2022-07-26 Samsung Electronics Co., Ltd. Method for controlling operations of RAID system comprising host device and plurality of SSDs
KR20210155593A (ko) * 2020-06-16 2021-12-23 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
CN112199039B (zh) * 2020-09-04 2022-08-05 星宸科技股份有限公司 虚拟存储管理方法及处理器
KR20220046211A (ko) * 2020-10-07 2022-04-14 에스케이하이닉스 주식회사 저항성 메모리 장치를 제어하기 위한 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
CN112286468B (zh) * 2020-12-28 2021-03-16 湖北芯擎科技有限公司 一种存储器件的访问控制方法、装置及电子设备
TWI847690B (zh) * 2023-05-12 2024-07-01 慧榮科技股份有限公司 記憶體控制器、橋接裝置及指令與資料轉移方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6854084B2 (en) * 2000-07-14 2005-02-08 Sun Microsystems, Inc. Partitioned random access memory

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100483552C (zh) 2002-10-28 2009-04-29 桑迪士克股份有限公司 在非易失性存储系统中执行自动磨损平衡的方法
JP4863749B2 (ja) 2006-03-29 2012-01-25 株式会社日立製作所 フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム
JP5006940B2 (ja) 2006-12-27 2012-08-22 インテル・コーポレーション 不揮発性メモリのイニシアチブウェアレベリング
JP5368993B2 (ja) 2007-11-14 2013-12-18 パナソニック株式会社 メモリコントローラ、不揮発性記憶モジュール、及び不揮発性記憶システム
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US9009438B2 (en) * 2011-06-01 2015-04-14 International Business Machines Corporation Space reclamation in multi-layered and thin provisioned storage systems
KR102023487B1 (ko) * 2012-09-17 2019-09-20 삼성전자주식회사 오토 리프레쉬 커맨드를 사용하지 않고 리프레쉬를 수행할 수 있는 반도체 메모리 장치 및 이를 포함하는 메모리 시스템
US9916311B1 (en) * 2013-12-30 2018-03-13 Emc Corporation Storage of bursty data using multiple storage tiers with heterogeneous device storage
US9959203B2 (en) * 2014-06-23 2018-05-01 Google Llc Managing storage devices
CN104461389B (zh) * 2014-12-03 2017-10-13 上海新储集成电路有限公司 一种混合存储器中数据迁移的自学习的方法
KR102357863B1 (ko) * 2014-12-15 2022-02-04 삼성전자주식회사 메모리 접근 방법 및 장치
JP2018507367A (ja) 2015-02-27 2018-03-15 シェフラー テクノロジーズ アー・ゲー ウント コー. カー・ゲーSchaeffler Technologies AG & Co. KG 湿式摩擦フェーシング用のフェーシングキャリア
US9514043B1 (en) * 2015-05-12 2016-12-06 Sandisk Technologies Llc Systems and methods for utilizing wear leveling windows with non-volatile memory systems
KR102403266B1 (ko) 2015-06-22 2022-05-27 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
KR20170044781A (ko) * 2015-10-15 2017-04-26 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US20170123700A1 (en) 2015-11-03 2017-05-04 Samsung Electronics Co., Ltd. Io redirection methods with cost estimation
US10929286B2 (en) * 2018-06-29 2021-02-23 Seagate Technology Llc Arbitrated management of a shared non-volatile memory resource

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6854084B2 (en) * 2000-07-14 2005-02-08 Sun Microsystems, Inc. Partitioned random access memory

Also Published As

Publication number Publication date
KR102545189B1 (ko) 2023-06-19
US11354057B2 (en) 2022-06-07
KR20200028615A (ko) 2020-03-17
US20200081647A1 (en) 2020-03-12
CN110888597A (zh) 2020-03-17
US20220261171A1 (en) 2022-08-18

Similar Documents

Publication Publication Date Title
CN110888597B (zh) 存储设备、存储系统以及操作存储设备的方法
US11301373B2 (en) Reconstruction of address mapping in a host of a storage system
US11150837B2 (en) Method, device and system for processing sequential groups of buffered write data
US9817717B2 (en) Stripe reconstituting method performed in storage system, method of performing garbage collection by using the stripe reconstituting method, and storage system performing the stripe reconstituting method
CN110046506B (zh) 存储设备和包括存储设备的存储系统及使用其进行操作的方法
US11126602B2 (en) Key-value storage device and operating method thereof
US11361840B2 (en) Storage system having a host that manages physical data locations of storage device
US10924552B2 (en) Hyper-converged flash array system
US10965751B2 (en) Just a bunch of flash (JBOF) appliance with physical access application program interface (API)
US20160196216A1 (en) Mapping table managing method and associated storage system
US20170177469A1 (en) Storage system that performs host-initiated garbage collection
US20160357481A1 (en) Nonvolatile memory module and storage system having the same
US9799402B2 (en) Nonvolatile memory device and program method thereof
US10061695B2 (en) Memory system and operating method thereof
KR20190106228A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
US11513728B2 (en) Storage devices, data storage systems and methods of operating storage devices
KR20180062246A (ko) 재분배기를 포함하는 메모리 시스템
CN112114740A (zh) 存储装置及其操作方法
KR20200079852A (ko) 메모리 시스템 및 그것의 동작방법
KR20210128780A (ko) 메모리 컨트롤러 및 이를 포함하는 저장 장치
CN110399093B (zh) 包括非易失性存储器件和控制器的存储设备
KR20160144577A (ko) 불휘발성 메모리 모듈 및 그것의 포함하는 사용자 장치
US12001709B2 (en) Storage devices and operating methods of storage controllers
US11210223B2 (en) Storage device and operating method thereof
KR102482901B1 (ko) 불휘발성 메모리 모듈 및 그것을 포함하는 스토리지 시스템

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