CN110321065B - 存储装置及计算机系统 - Google Patents

存储装置及计算机系统 Download PDF

Info

Publication number
CN110321065B
CN110321065B CN201810839569.5A CN201810839569A CN110321065B CN 110321065 B CN110321065 B CN 110321065B CN 201810839569 A CN201810839569 A CN 201810839569A CN 110321065 B CN110321065 B CN 110321065B
Authority
CN
China
Prior art keywords
data
read
buffer
block
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
CN201810839569.5A
Other languages
English (en)
Other versions
CN110321065A (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
Kioxia 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 Kioxia Corp filed Critical Kioxia Corp
Publication of CN110321065A publication Critical patent/CN110321065A/zh
Application granted granted Critical
Publication of CN110321065B publication Critical patent/CN110321065B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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
    • 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/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0656Data buffering 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/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/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)

Abstract

本发明的实施方式提供一种能够使访问性能及可靠性提高的存储装置及计算机系统。根据实施方式,存储装置可经由接口与主机连接。存储装置具备包含多个块的非易失性存储器、及与非易失性存储器电连接的控制器。控制器以如下方式构成:当从主机接收到读取指令时,将读取指令所指定的第1数据从非易失性存储器的第1块读出并发送到主机,并且将第1数据写入到并非第1块的非易失性存储器的第2块。

Description

存储装置及计算机系统
[相关申请]
本申请享有以日本专利申请2018-69140号(申请日:2018年3月30日)为基础申请的优先权。本申请通过参照该基础申请而包含基础申请的全部内容。
技术领域
本发明的实施方式涉及一种存储装置及计算机系统。
背景技术
近年来,具备非易失性存储器(memory)的存储器(storage)正广泛地普及。作为这种存储器之一,已知有具备NAND(Not And,与非)型闪速存储器的固态硬盘(SSD)。SSD被用作各种计算设备的主存储器。
在使用NAND型闪速存储器构筑大容量的存储装置的情况下,使用可在1个存储单元中记录多比特的数据的多值度较高的NAND型闪速存储器。例如,在1个单元中记录3比特的数据的存储单元被称为三层单元(TLC,Triple-Level Cell),在1个单元中记录4比特的数据的存储单元被称为四层单元(QLC,Quad-Level Cell)。
发明内容
本发明的实施方式提供一种能够使访问性能及可靠性提高的存储装置及计算机系统。
根据实施方式,存储装置可经由接口与主机连接。存储装置具备包含多个块的非易失性存储器、及与所述非易失性存储器电连接的控制器。所述控制器以如下方式构成:当从所述主机接收到读取指令时,将所述读取指令所指定的第1数据从所述非易失性存储器的第1块读出并发送到所述主机,并且将所述第1数据写入到并非所述第1块的所述非易失性存储器的第2块。
附图说明
图1是表示第1实施方式的计算机系统的构成例的框图。
图2是表示第1实施方式的计算机系统内的SSD中的数据流的一例的流程图。
图3是表示第1实施方式的计算机系统内的SSD中的数据流的第1例的图。
图4是表示第1实施方式的计算机系统内的SSD中的数据流的第2例的图。
图5是表示第2实施方式的计算机系统内的SSD中的数据流的一例的流程图。
图6是表示第3实施方式的计算机系统内的SSD中的数据流的一例的流程图。
图7是表示第4实施方式的计算机系统内的SSD3的构成的一例的图。
图8是表示第4实施方式的计算机系统内的SSD中的数据流的一例的流程图。
图9是表示第4实施方式的计算机系统内的SSD中的数据流的第1例的图。
图10是表示第4实施方式的计算机系统内的SSD中的数据流的第2例的图。
图11是表示第5实施方式的计算机系统内的SSD中的数据流的一例的流程图。
图12是表示第6实施方式的计算机系统内的SSD中的数据流的一例的流程图。
图13是表示第7实施方式的计算机系统内的SSD中的数据流的一例的流程图。
图14是表示第7实施方式的计算机系统内使用的数据的属性信息的一例的图。
图15是表示第8实施方式的计算机系统内的SSD中的数据流的一例的流程图。
具体实施方式
在本实施方式中,所谓多值度是指与1个存储单元中存储的数据的比特数有关的指标。例如,1个存储单元中存储的数据的比特数越多,多值度越高。
在多值度较高的NAND型闪速存储器中,随着每1个芯片的容量变大,而用来确保所需容量的芯片数变少。因此,难以对多个芯片并行地访问(也就是说,访问的并行数降低),所以,对NAND型闪速存储器的访问性能降低。
一般地,NAND型闪速存储器的多值度越高,读出(读取)、写入(写)、擦除(抹除)所需的时间越长。另外,多值度越高,数据保留期间越短,可靠性降低。
为了提高SSD的读出速度,在SSD内部搭载读取缓冲区。SSD通过将数据高速缓存至该读取缓冲区,与从NAND型闪速存储器直接读出数据相比可高速地读出数据。
通常,读取缓冲区使用SRAM(Static Random-Access Memory,静态随机访问存储器)、DRAM(Dynamic Random Access Memory,动态随机访问存储器)等易失性存储器。SRAM、DRAM价格较高,相对于SSD的容量只准备极小的容量的情况较多,因此,无法在读取缓冲区中存储大量数据。
另外,如上所述,多值度越高的NAND型闪速存储器,数据保留期间越短,所以需要在恰当的时刻进行用来保存数据的刷新动作。以往,未对在有效率的时刻执行该刷新动作进行充分考虑,例如以定期进行巡回的软件(或固件)的通知、或当读出数据时进行了重试处理为触发而执行。
因此,在以下说明的各实施方式中,着眼于SSD中的读出处理,对用于提高对于SSD的数据读出速度等访问性能、及用于在恰当的时刻进行刷新动作的SSD的构成及处理进行说明。
更具体来说,例如SSD针对从主机以多值度较高的块为对象发布的读出处理,从该多值度较高的块读出数据,并且将读出的数据写到SSD内的其他块(或缓冲区)等。该数据的写目的地的块(或缓冲区)由易失性存储器或多值度较低的非易失性存储器构成。然后,之后的对该数据的读出处理针对存储着该数据的块(或缓冲区)进行。
此外,读出源块的多值度与读出数据的写入目的地的块(或缓冲区)的多值度的差越大,该数据的第2次及第2次之后的读出速度越提高。
另外,以读取指令为触发将读出对象的数据写(回写)到其他块,换句话说,也就是对访问频率较高的数据在恰当的时刻进行刷新动作。
以下,一边参照附图一边对各实施方式进行说明。在以下的说明中,对大致或实质上相同的功能及构成要素标注相同符号,并视需要进行说明。
[第1实施方式]
图1是表示本实施方式的计算机系统1的构成例的框图。
计算机系统1包含主机(主机设备)2、及构成为向非易失性存储器写入数据并从非易失性存储器读出数据的半导体存储设备。
主机2是对SSD3进行访问的信息处理装置(计算设备)。主机2可为将大量且多种数据保存在SSD3的服务器(存储服务器),也可为个人计算机。半导体存储设备例如以具备NAND型闪速存储器的固态硬盘(SSD)3的形式实现。
SSD3是存储装置,可用作作为主机2发挥功能的信息处理装置的主存储器。SSD3可内置于该信息处理装置,也可经由缆线或网络而连接于该信息处理装置。SSD3例如以直连式存储(DAS,Direct Attached Storage)的形式连接于主机2。
作为用于将主机2与SSD3相互连接的接口,可使用SCSI(Small Computer SystemInterface,小型计算机系统接口)、Serial Attached SCSI(SAS,串行连接SCSI)、ATA(Advanced Technology Attachment,高级技术附件)、Serial ATA(SATA,串行ATA)、PCIExpress(PCIe(Peripheral Component Interconnect Express,外围组件互连高速))(注册商标)、Ethernet(以太网)(注册商标)、Fibre channel(光纤通道)、NVM Express(NVMe(Non-Volatile Memory Express,非易失性存储器标准))(注册商标)等。
SSD3具备控制器4及非易失性存储器(NAND型闪速存储器)5。控制器4可通过系统芯片(SoC,System-on-a-chip)之类的电路实现。SSD3也可具备作为易失性存储器的随机访问存储器、例如DRAM6。或者,也可将SRAM之类的随机访问存储器内置于控制器4。
在DRAM6等随机访问存储器中,例如设置着用于暂时存储从NAND型闪速存储器5读出的数据的作为缓冲区区域的读取缓冲区31、用于暂时存储写入到NAND型闪速存储器5的数据的作为缓冲区区域的写缓冲区32及GC(Garbage Collection,垃圾回收)缓冲区33、以及作为地址转换表(逻辑物理地址转换表)发挥功能的查找表(LUT)34的高速缓存区域。
进而,也可在DRAM6等随机访问存储器中设置处理中使用的各种信息(例如,块管理信息35等)的存储区域。此外,DRAM6也可设置在控制器4的内部。LUT34管理各逻辑地址与NAND型闪速存储器5的各物理地址之间的映射。
NAND型闪速存储器5也可包含多个NAND型闪速存储器芯片(多个NAND型闪速存储器裸片)。
各芯片包含存储单元阵列。该存储单元阵列包含多个NAND块(块)B0~Bm-1。块B0~Bm-1作为擦除单位发挥功能。块有时也被称为“物理块”或“擦除块”。
块B0~Bm-1包含多个页(物理页)。也就是说,块B0~Bm-1分别包含页P0~Pn-1。在非易失性存储器中,数据读出及数据写入以页为单位执行。数据擦除以块为单位执行。
另外,各芯片是使用在每个存储单元中存储1比特的数据的单个单元(SLC(Single-Level Cell,单层单元))及/或存储多比特的存储单元而构成。作为存储多比特的存储单元,例如使用多单元(MLC(multi-level cell,多层单元))、三层单元(TLC)、四层单元(QLC)等。
另外,NAND型闪速存储器5例如包含输入缓冲区36。输入缓冲区36用作例如SSD3从主机2接收到写指令时的成为写对象的数据(写数据)的存储目的地。此外,输入缓冲区也可设在NAND型闪速存储器5的外部。
输入缓冲区36例如具有NAND型闪速存储器5的总容量的百分之几左右的存储容量。另外,读取缓冲区31及写缓冲区32例如具有输入缓冲区36的100分之1倍左右的存储容量。
优选输入缓冲区36使用多值度较低的NAND型闪速存储器。以下,假设输入缓冲区36使用例如SLC而构成。
另外,输入缓冲区36不仅可使用NAND型闪速存储器5,也可使用SRAM、DRAM等易失性存储器。
控制器4经由Toggle DDR(Double Data Rate,双倍数据速率)、开放式NAND闪存接口(ONFI,Open NAND Flash Interface)之类的NAND接口13而与作为非易失性存储器的NAND型闪速存储器5电连接。NAND接口13作为构成为控制NAND型闪速存储器5的NAND控制电路发挥功能。NAND接口13也可经由多个通道而分别连接于NAND型闪速存储器5内的多个芯片。
控制器4作为构成为控制NAND型闪速存储器5的存储器控制器发挥功能。
控制器4也可作为构成为执行NAND型闪速存储器5的数据管理及块管理的闪存转换层(FTL)发挥功能。由该FTL所执行的数据管理包括:(1)表示各逻辑地址与NAND型闪速存储器5的各物理地址之间的对应关系的映射信息的管理、(2)用于将以页为单位的读出/写入与以块为单位的擦除动作隐蔽的处理等。逻辑地址是为了对SSD3进行地址指定而供主机2使用的地址。作为该逻辑地址,例如使用逻辑块地址(LBA)。
各逻辑块地址(LBA)与各物理地址之间的映射的管理使用作为地址转换表(逻辑物理地址转换表)发挥功能的LUT34而执行。控制器4使用查找表LUT34,以特定的管理大小为单位管理各LBA与各物理地址之间的映射。与某LBA对应的物理地址表示写有该LBA的数据的NAND型闪速存储器5内的物理存储位置。地址转换表LUT34也可在SSD3的电源接通时从NAND型闪速存储器5加载到DRAM6。
对1个页的数据写入每1个擦除周期(编程/抹除周期)只能进行1次。因此,控制器4将与某LBA对应的更新数据写入到其他物理存储位置,而非存储着与该LBA对应的以前的数据的物理存储位置。然后,控制器4更新LUT34,将该LBA与该其他物理存储位置建立关联,并且使以前的数据无效化。以下,将被LUT34参照的数据(也就是与逻辑地址关联起来的数据)称为有效数据。另外,将未与任何逻辑地址关联起来的数据称为无效数据。有效数据是之后有可能被主机2读出的数据。无效数据是已无可能被主机2读出的数据。
块管理包括坏块的管理、耗损均衡、垃圾回收(GC)等。
在NAND型闪速存储器5中,数据的写入/读出以页为单位进行,擦除以块为单位进行。块的擦除需要较长时间,且具有以下特性,即,NAND型闪速存储器5内的各块在进行擦除之前,无法将数据覆写到相同的物理存储位置。
因此,SSD3以将从主机2接收到的写入数据附加记录到NAND型闪速存储器5上的新物理存储位置的写入方式动作。在进行了这种附加记录的情况下,由于数据的写入目的地块用尽,所以进行用于产生空闲块的GC。
GC是从已写入过的块(活动块)中选择GC源块,从GC源块收集有效数据,并将所述有效数据写入到新的块(GC目标块),将本来存储着有效数据的块设为空闲块。空闲块通过经擦除处理,可用作新的写入目的地块。GC源块多数情况下选择有效数据数较少的块。这是因为空闲块的产生效率佳。
控制器4也可包含主机接口11、CPU(Central Processing Unit,中央处理器)12、NAND接口13、DRAM接口14等。这些主机接口11、CPU12、NAND接口13、DRAM接口14也可经由总线10而相互连接。
主机接口11作为从主机2接收各种指令、例如I/O(Input/Output,输入/输出)指令、各种控制指令等的电路发挥功能。I/O指令可包含写(写入)指令、读取(读出)指令、取消映射指令(UNMAP)(禁用删除(Trim)指令)、格式指令、闪存指令等。此外,写指令也被称为编程指令。格式指令是用于将存储器系统(SSD3)整体取消映射的指令。闪存指令是用于将存储器系统内高速缓存(缓冲)的脏数据(用户数据及相关的管理数据)通过写入到NAND型闪速存储器5而全部成为干净状态的指令。
DRAM接口14作为构成为控制DRAM6的访问的DRAM控制器发挥功能。DRAM6的存储区域用来存储读取缓冲区31、写缓冲区32、GC缓冲区33、LUT34、块管理信息35、输入缓冲区36等。
CPU12是构成为控制主机接口11、NAND接口13、及DRAM接口14的处理器。CPU12通过执行未图示的ROM(Read Only Memory,只读存储器)等中存储的控制程序(固件)而进行各种处理。该CPU12除了可执行所述FTL的处理以外,还可执行用于处理来自主机2的各种指令的指令处理等。CPU12的动作由CPU12所执行的所述固件控制。此外,FTL处理及指令处理的一部分或全部也可由控制器4内的专用硬件执行。
在本实施方式中,CPU12例如可作为块管理部121、读取控制部123、写控制部125、GC控制部127发挥功能。
块管理部121针对SSD3内的每个块管理包括擦除次数(编程/抹除周期数)、擦除序号、有效数据数(有效数据量)等的块管理信息35。块管理部121例如每当进行对于各块的写入动作、禁用删除(取消映射)动作、擦除动作等时,便更新块管理信息35。
读取控制部123可基于与逻辑地址(LBA)对应的LUT34的条目,求出与LBA对应的物理地址,并从NAND型闪速存储器5读出与读取指令相应的数据。
写控制部125根据写指令将从主机2接收到的用户数据累积到DRAM6上的写缓冲区32。写控制部125预先确保用于累积用户数据的写缓冲区32的区域,在无法确保的期间,不从主机2受理写指令。
然后,写控制部125当在写缓冲区32内累积有NAND型闪速存储器5的写入单位量的用户数据时,将该写入单位量的用户数据传输到NAND型闪速存储器5的芯片(芯片的数据锁存器)。写控制部125将写缓冲区32内的累积所传输的用户数据的区域释放。
接着,写控制部125对NAND型闪速存储器5的芯片指示编程。也就是说,写控制部125通过向NAND型闪速存储器5的芯片发送编程指令,而使该芯片将传输来的用户数据编程到写入目的地块。芯片内的存储单元阵列50包含多个块。块大致分为存储着有效数据而不能写入新数据的块(活动块)、及未存储有效数据而通过经擦除处理能够用于写入新数据的块(空闲块)。从1个以上的空闲块中选择1个,通过经擦除处理而被分配为写入目的地块。写入目的地块能够存储有效数据。
GC控制部127也可使用GC缓冲区33,以与如上所述的写控制部125的写入动作相同的方式,对NAND型闪速存储器5进行写入。GC控制部127从存储着有效数据的活动块群中选择垃圾回收源块(GC源块),将该GC源块内的有效数据写入到从空闲块群中被确保为写入目的地块的垃圾回收目标块(GC目标块)。
接下来,对主机2的构成进行说明。主机2具有用于对以DAS的形式连接的SSD3进行访问的功能。另外,主机2也可具有用于对网络(云端)上的存储器进行访问的功能。
主机2是执行各种程序的信息处理装置。信息处理装置所执行的程序中包含应用层41、操作系统(OS)42、文件系统43等。
众所周知,操作系统(OS)42管理主机2整体,并控制主机2内的硬件,应用是以执行用来实现能够使用硬件及SSD3的控制的方式构成的软件。
文件系统43用来进行用于文件的操作(制作、保存、更新、删除等)的控制。例如,可将ZFS(Zettabyte File System,泽字节文件系统)、Btrfs(B-tree file system,B树文件系统)、XFS(Extents File System,扩展文件系统)、ext4(Fourth EXtended filesystem,第四代扩展文件系统)、NTFS(New Technology File System,新技术文件系统)等用作文件系统43。或者,也可将文件对象系统(例如,Ceph Object Storage Daemon(Ceph对象存储守护进程))、Key Value Store System(键值存储系统)(例如,Rocks DB(Data Base,数据库))用作文件系统43。
在应用层41上执行各种应用软件线程。作为应用软件线程的例子,有客户端软件、数据库软件、虚拟机等。
当需要应用层41向SSD3传送读取指令或写指令之类的请求时,应用层41将该请求传送到OS42。OS42将该请求传送到文件系统43。文件系统43将该请求转化为指令(读取指令、写指令等)。文件系统43将指令传送到SSD3。当接收到来自SSD3的响应时,文件系统43将该响应传送到OS42。OS42将该响应传送到应用层41。
应用层41包含SSD控制部411。SSD控制部411具有为了SSD3的各种控制而与SSD3进行通信的接口功能。SSD控制部411对SSD3发送各种控制指令及数据等。
在本实施方式中,当从主机2对SSD3发布了读取指令时,将成为读出对象的数据(以下,称为读取数据)写入到NAND型闪速存储器5内的其他块。以下,利用图2及图3,对本实施方式的计算机系统1内的SSD3中的数据流进行说明。
此外,图3概念性地表示主机2及SSD3间的数据的流动,例如控制器4、DRAM6等SSD3中包含的一部分构成要素的记载被省略。另外,图3的箭头A201~A203表示数据的流动。
在步骤S101中,SSD3的控制器4从主机2接收读取指令。通过读取指令,指定成为读出对象的数据的起始(开头)LBA、及数据长度。成为读出对象的数据的LBA范围(逻辑地址范围)由起始(开头)LBA与数据长度决定。
在步骤S102中,控制器4例如将读取指令所指定的LBA为(X)的数据D1从NAND型闪速存储器5读出,并写入到读取缓冲区31(箭头A201)。此外,假设该数据D1存储在块Ba中。
在步骤S103中,控制器4将存储在读取缓冲区31的数据D1发送到主机(箭头A202)。
在步骤S104中,控制器4例如将数据D1写回到NAND型闪速存储器5内的作为“其他块”的块Bc。此外,关于步骤S103及S104的处理,可先执行任一个。
该其他块也被称为读取高速缓存块。在本实施方式中,同一个LBA(X)的数据存在于读出源的块Ba上及写入目的地的块Bc(读取高速缓存块)上这2个部位。
此处,在本实施方式中,在步骤S102中被读出数据D1的块Ba的多值度与在步骤S104中被写入数据D1的块Bc(读取高速缓存块)的多值度不同。更具体来说,块Ba的多值度大于块Bc(读取高速缓存块)的多值度。在图3的例子中,通过读取指令读出的数据D1从QLC的块Ba读出,并被写入到SLC的块Bc。
此外,以下,假设存储着成为读取指令的对象的数据D1的块的多值度为QLC,但也可为例如TLC、MLC等其他多值度。
在步骤S105中,控制器4更新用来管理数据D1的LBA与读取高速缓存块内的物理地址的对应关系的第2LUT。此外,DRAM6的LUT34是用来管理数据D1的LBA与存储着数据D1的块Ba内的物理地址的对应关系的LUT。因此,块Bc(读取高速缓存块)中存储的数据D1必须由与LUT34不同的第2LUT管理。
另外,从主机2读出的数据D1是由于参照的局域性而访问频率较高的数据,多次从主机2读出的可能性较高。
以下,利用图4,对像所述那样将数据D1写入到块Bc后再次从主机2读出数据D1时的数据流进行说明。
控制器4当接收到从主机2读出数据D1的意旨的读取指令时,在搜索LUT34之前搜索所述第2LUT,由此从读取高速缓存块(块Bc)读出该数据D1(箭头A204、A205)。由此,与从块Ba读出时相比,数据D1被高速地读出。另外,多值度较低的块与多值度较高的块相比,数据保留期间较长,因此,所读出的数据D1的可靠性提高。
此外,对于读取高速缓存块(块Bc),不进行基于GC的数据复制便重新利用。也就是说,当将数据写到该读取高速缓存块的最终页为止时,控制器4清除第2LUT,对该读取高速缓存块进行块擦除。
像以上所说明的那样,在本实施方式中,在SSD3的NAND型闪速存储器5中,除了存储数据的多值度较高的块以外,另外确保多值度较低的读取高速缓存块。而且,当基于来自主机2的读取指令从NAND型闪速存储器5读出数据时,将该数据写入到读取高速缓存块。由此,针对下次及之后的读取指令,该数据从读取高速缓存块被读出。因此,主机2可针对SSD3对多值度更低的块进行高速且可靠性较高的访问。
此外,在本实施方式中,也可省略读取缓冲区31。也就是说,控制器4也可不经由读取缓冲区31而读出数据D1并发送到主机2或写入到NAND型闪速存储器5。
[第2实施方式]
本实施方式是第1实施方式的变化例。在第1实施方式中,读取指令所指定的LBA的数据被写入到读取高速缓存块,但如果考虑参照的局域性,则多数情况下也同时访问该数据的周边数据。这是因为,例如在某应用程序中,所需数据存储在特定范围的LBA的可能性较高。
在本实施方式中,也将通过读取指令读出的数据的周边的LBA的数据写入到读取高速缓存块。
此外,本实施方式的计算机系统1的构成由于与第1实施方式相同,所以省略说明。
图5是表示本实施方式的计算机系统1内的SSD3中的数据流的一例的流程图。
在步骤S201中,SSD3的控制器4从主机2接收读取指令。
在步骤S202中,控制器4例如将读取指令所指定的数据D1、及数据D1的LBA范围(逻辑地址范围)的周边的LBA范围的数据从NAND型闪速存储器5的块Ba读出。此处,如果将数据D1的LBA范围设为LBA(x)~LBA(y),且将k设为整数,则周边的LBA范围由LBA(x-k)~LBA(x-1)及/或LBA(y+1)~LBA(y+k)表示。所读出的数据被写入到读取缓冲区31。此外,当数据D1的数据长度为1时,x与y相等。
在步骤S203中,控制器4从读取缓冲区31读出数据D1(也就是读取指令所指定的LBA的数据),并将该数据D1发送到主机。
在步骤S204中,与步骤S104同样地,控制器4将存储在读取缓冲区31的数据写入到块Bc(读取高速缓存块)。此外,关于步骤S203及S204的处理,可先执行任一个。
在步骤S205中,与步骤S105同样地,控制器4更新第2LUT中有关步骤S204中所写入的数据的部分。
像以上所说明的那样,在本实施方式中,当从主机2针对某LBA接收到读取指令时,除了该读取指令表示的该LBA的数据以外,该LBA的前后(或周边)的范围的LBA的数据也一并被读出,并被写入到读取高速缓存块。由此,主机2对SSD3的访问性能进一步提高。
此外,与第1实施方式同样地,在本实施方式中,也可省略读取缓冲区31。
[第3实施方式]
本实施方式是第1及第2实施方式的变化例。在第1及第2实施方式中,通过读取指令读出的数据残留在读出源块。也就是说,所读出的数据存在于读出源块及读取高速缓存块这两者。另一方面,在本实施方式中,将存在于读出源块的数据删除。也就是说,所读出的数据只存在于读取高速缓存块。
此外,本实施方式的计算机系统1的构成由于与第1及第2实施方式相同,所以省略说明。
图6是表示本实施方式的计算机系统1内的SSD3中的数据流的一例的流程图。
步骤S301~S304的处理由于与图2的步骤S101~S104的处理相同,所以省略说明。
在步骤S305中,控制器4将读出的数据删除,以LUT34表示读取高速缓存块上的方式更新LUT34。更具体来说,控制器4将LUT34中存储着数据D1的块Ba内的物理地址重写为块Bc(读取高速缓存块)中的数据D1的写入目的地的物理地址。通过像这样重写LUT34,使读出源的数据无效化。
此外,在将数据写到读取高速缓存块的最终页为止而重新利用读取高速缓存块的情况下,LUT34指示读取高速缓存块中存储的数据时,该数据成为GC对象。在该情况下,该数据被写入到多值度较高的块(例如,块Ba、Bb等)。
像以上所说明的那样,在本实施方式中,所读出的数据在读出源被无效化(也就是说,从读出源删除),作为存在于写入目的地的读取高速缓存块的数据进行处理。也就是说,当读出数据时,也对该数据执行刷新动作。
一般地,刷新动作多数情况下不管数据的类型,一律每隔特定的期间或在特定的时刻执行,在本实施方式中,在读出该数据的时刻,也就是说,当对该数据的访问频率提高时,也对该数据进行刷新动作。由此,SSD3可在更恰当的时刻进行刷新动作,而SSD3中存储的数据的可靠性提高。
此外,与第1实施方式同样地,在本实施方式中,也可省略读取缓冲区31。
另外,本实施方式的构成也可与第2实施方式组合。也就是说,在第2实施方式中,也可针对写入到读取高速缓存块的所有数据(读取数据、及具有读取数据的周边的LBA的数据)重写LUT34,使读出源的数据无效化。
[第4实施方式]
图7是表示本实施方式的计算机系统1内的SSD3中的数据流的第1例的图。
在本实施方式中,SSD3除具备读取缓冲区31、写缓冲区32、NAND型闪速存储器5以外,还具备输入缓冲区36。输入缓冲区36也可包含于NAND型闪速存储器5。如上所述,输入缓冲区36作为从主机2接收到写指令时的写数据的存储目的地发挥功能。
另外,如上所述,NAND型闪速存储器5的多值度优选大于输入缓冲区36的多值度。以下,假设NAND型闪速存储器5使用QLC而构成,输入缓冲区36使用SLC而构成。
在本实施方式中,与图2及图3的构成同样地,当从主机2接收到读取指令时,将读取数据从NAND型闪速存储器5写入到读取缓冲区,并从该读取缓冲区向主机2发送读取数据。
另外,当从主机2接收到写指令时,将写数据写入到写缓冲区,该写数据被写入到输入缓冲区,并最终被写入到NAND型闪速存储器5。
此外,在本实施方式中,设为包含读取缓冲区31及写缓冲区32等的构成,但读取缓冲区31及写缓冲区32可省略。
以下,利用图8及图9,对本实施方式的计算机系统1内的SSD3中的数据流进行说明。
此外,图9与图2同样,概念性地表示主机2及SSD3间的数据的流动。另外,图3的箭头A401~A403表示数据的流动。
SSD3的控制器4使用LUT34等管理已经存储在NAND型闪速存储器5的数据。
在步骤S401中,控制器4接收主机2所发布的读取指令。读取指令中至少包含读取数据的LBA、及作为读取长度的NLB(Number of Logical Block,逻辑块数)。
在步骤S402中,控制器4确认读取指令中包含的LBA对应的数据是否包含于读取缓冲区31、写缓冲区32及输入缓冲区36的任一个。
在该数据包含于读取缓冲区31、写缓冲区32及输入缓冲区36的任一个的情况下,控制器4在步骤S405中,将该数据发送到主机。另一方面,在该数据不包含于读取缓冲区31、写缓冲区32及输入缓冲区36的任一个的情况下,处理进入至步骤S403。
在步骤S403中,控制器4使用主机2所指定的数据的LBA及NLB搜索LUT34,由此获取存储该数据的NAND型闪速存储器5上的物理地址。
在步骤S404中,控制器4对NAND型闪速存储器5发布用来读出该物理地址上存储的数据的读取指令,读出该数据。
接着,控制器4在步骤S406中,将读取数据写入到读取缓冲区31(箭头A401),并且在步骤S405中,将读取数据发送到主机(箭头A402)。该步骤S405及步骤S406的处理也可并行地执行。
在步骤S407中,控制器4将读取数据写入到输入缓冲区36(箭头A403)。此外,如上所述,输入缓冲区36使用SLC而构成,也是来自主机2的写数据的存储目的地。
在步骤S408中,控制器4更新表示该读取数据存储在输入缓冲区36的数据。更具体来说,像第3实施方式中所说明的那样,使用LUT34管理输入缓冲区36中存储的数据的LBA与该数据的物理地址的对应关系的情况下,更新LUT34。另外,与第1及第2实施方式同样地,利用第2LUT等管理输入缓冲区36中存储的数据的LBA与该数据的物理地址的对应关系的情况下,更新该第2LUT。
此外,在步骤S406中,从NAND型闪速存储器5读出数据的处理失败的情况下,结束处理。读出处理失败的情况例如是指基于ECC(Error Check and Correction,错误检查和纠正)的错误订正失败的情况等。
图10表示像所述那样将读取数据写入到输入缓冲区36后再次从主机2读出该读取数据时的数据流。
控制器4当从主机2接收到读出数据的意旨的读取指令时,确认在输入缓冲区36中是否有该数据,在有该数据的情况下,从输入缓冲区36将该数据读出并发送到主机2(箭头A404)。此外,在该数据不存在于输入缓冲区36的情况下,从NAND型闪速存储器5读出该数据。
另外,控制器4当输入缓冲区36中存储的数据量例如超过特定阈值时,将输入缓冲区36中存储的数据写入到NAND型闪速存储器5(箭头A405)。
像以上所说明的那样,在本实施方式中,NAND型闪速存储器5中除了包含存储着数据的多值度较高的块以外,还包含多值度较低的输入缓冲区36。而且,当基于来自主机2的读取指令从NAND型闪速存储器5读出数据时,将该数据写入到输入缓冲区36。由此,针对下次及之后的读取指令,该数据从输入缓冲区36被读出。因此,主机2可针对SSD3对多值度更低的块进行高速且可靠性较高的访问。
另外,在本实施方式中,也可代替读取缓冲区31而仅使用输入缓冲区36。也就是说,也可省略步骤S406的处理。在输入缓冲区36由例如使用SLC的NAND型闪速存储器构成的情况下,通过将读取数据全部存储在输入缓冲区36,可使用作读取缓冲区31的DRAM6的容量为0。一般地,NAND型闪速存储器的价格比DRAM便宜,所以,通过像所述那样削减DRAM6的容量,可降低SSD3的成本。
另外,一般地,DRAM6中存储的数据例如通过SSD3向低电力模式转变、或SSD3的电源接通或断开(也就是说,横跨功率周期)等而被擦除。因此,通过将数据高速缓存至输入缓冲区36,而输入缓冲区36作为高速缓存的利用效果提高。
此外,在步骤S407的处理中,控制器4也可将读取数据存储到写缓冲区32而代替输入缓冲区36。如上所述,写缓冲区32由SRAM、DRAM等易失性存储器构成。存储在写缓冲区32的读取数据基于控制器4的控制,被写入到输入缓冲区36,并最终被写入到包括多值度较高的块的NAND型闪速存储器5,被非易失化。
像这样,通过将读取数据写入到写缓冲区32,例如,从NAND型闪速存储器5读出的读取数据为例如读取-修改-写(Read Modify Write)的对象的情况下,也就是说,是为了重写该读取数据的一部分而读出的数据的情况下,可减少输入缓冲区36的重写次数。
更具体地进行说明。例如,即使将该成为读取-修改-写的对象的数据写入到输入缓冲区36也立即被重写,所以必须再次将重写后的数据写入到输入缓冲区36。因此,消耗由NAND型闪速存储器构成的输入缓冲区36的可重写次数。另一方面,通过将该成为读取-修改-写的对象的数据在易失性存储器上更新,可防止对输入缓冲区36的多余的写入。
此外,控制器4也可根据来自主机2的指令等选择将读取数据写入到写缓冲区32或写入到输入缓冲区36。像这样,通过对每个读取数据选择恰当的写入目的地,可减少输入缓冲区36的重写的负担。
[第5实施方式]
本实施方式是第4实施方式的变化例。在第4实施方式中,在步骤S406中,从NAND型闪速存储器5读出的读取数据被写入到读取缓冲区31之后,也立即被写入到输入缓冲区36。另一方面,在本实施方式中,是否将该读取数据写入到输入缓冲区36基于特定的条件判定。然后,当判定为满足该条件时,将该读取数据写入到输入缓冲区36。
图11是表示本实施方式的计算机系统1内的SSD3中的数据流的一例的流程图。
步骤S501~S506的处理由于与图8的步骤S401~S406的处理相同,所以省略说明。
在步骤S507中,控制器4判定写入到输入缓冲区36的读取数据是否需要刷新。更具体来说,控制器4例如也可管理表示读取数据被写入到NAND型闪速存储器5后的期间的信息,基于该信息,判定该读取数据是否需要刷新。
当判定为该读取数据不需要刷新时,结束处理。另一方面,当判定为该读取数据需要刷新时,在步骤S508中,该读取数据被写入到输入缓冲区36。
此外,已写入到输入缓冲区36的读取数据最终被写入到NAND型闪速存储器5,也就是被刷新。
步骤S508、S509的处理由于与图8的步骤S407、S408的处理相同,所以省略说明。
像以上所说明的那样,在本实施方式中,控制器4判定是否需要刷新读取数据,在需要刷新的情况下,将该读取数据写入到输入缓冲区36。由此,SSD3可高效率地执行读取数据向输入缓冲区36的写入。另外,将读取数据写入到输入缓冲区36的次数减少,所以可延长输入缓冲区36的寿命。
[第6实施方式]
本实施方式是第5实施方式的变化例。在本实施方式中,是否将读取数据写入到输入缓冲区36的判定基于与第5实施方式的步骤S507中所说明的条件不同的条件进行。
图12是表示本实施方式的计算机系统1内的SSD3中的数据流的一例的流程图。此外,步骤S601~S606的处理由于与图11的步骤S501~S506的处理相同,所以省略说明。
在步骤S607中,控制器4判定是否将读取数据写入到输入缓冲区36。
一般地,每当从主机2接收写指令时,SSD3的写入容量便会增加。在所述各实施方式中,在接收到读取指令的情况下,也将读取数据写入到输入缓冲区36,所以对SSD3的写入容量增加。也就是说,每当有对SSD3的访问时,写入容量便会增加。
因此,在步骤S607中,控制器4确认写入容量是否已超过特定的阈值,在写入容量为特定的阈值以下的情况下,将该读取数据写入到输入缓冲区36。
另外,控制器4为了执行步骤S607的处理而在SSD3内存储表示写入容量的数据。该数据例如也可存储在块管理信息35等。该数据优选每当对NAND型闪速存储器5写入时便更新。
此外,特定的阈值例如基于SSD3的耐久性、产品寿命等相关的指标而确定。更具体来说,特定的阈值也可基于SSD3的DWPD(Drive Write Per Day,每日磁盘写入量)而确定。此处,所谓DWPD是表示为了SSD3至少可在保证寿命期间使用,将SSD3的总存储容量设为1个单位而每天能够重写几单位的容量的指标。此外,该特定的阈值例如也可基于SSD3的最大重写容量(TBW:Tera Byte Written,写入太字节)等其他指标而确定。
步骤S608、S609的处理由于与图11的步骤S508、S509的处理相同,所以省略说明。
像以上所说明的那样,在本实施方式中,控制器4设定基于SSD3的DWPD等的特定的阈值,当与该特定的阈值相比,SSD3内的写入容量存在余量时,将读取数据写入到输入缓冲区36。由此,与像所述各实施方式那样无条件地将读取数据写入到输入缓冲区36的情况相比,可使SSD3的耐久性提高。
此外,在本实施方式中,控制器4例如也可针对SSD3的每一位利用者,存储表示SSD的利用特性的数据,并存储在SSD内部。表示利用特性的数据例如是每个时段的对SSD3的写入容量、写入次数等相关的统计数据。控制器4通过在所述步骤S607中,除使用所述写入容量以外也使用该表示利用特性的数据,可更灵活地执行判定处理。
例如,根据某时间点的SSD3的利用状况,更新表示利用特性的数据。然后,也可在下一时间点,基于更新后的表示利用特性的数据,修正SSD3内部的将读取数据写入到输入缓冲区36的处理的频率等。
更具体来说,例如,假设某天因SSD3接收到大量的读取指令而向输入缓冲区36中写入大量的读取数据。控制器4根据这一天的SSD3的利用状况,更新表示利用特性的数据。然后,控制器4也可通过参照该更新后的利用特性数据,以例如在次日读取数据被写入到输入缓冲区36的容量减少的方式(也就是说,以控制写入处理的方式),修正该写入处理的频率。
[第7实施方式]
本实施方式是第5及第6实施方式的变化例。在第5及第6实施方式中,SSD3的控制器4基于特定的条件判定是否将读取数据写入到输入缓冲区36。另一方面,在本实施方式中,主机2对SSD3发送判定是否将读取数据写入到输入缓冲区36所需的信息。
图13是表示本实施方式的计算机系统1内的SSD3中的数据流的一例的流程图。
在步骤S701中,SSD3接收从主机2发布的读取指令。该读取指令中包含与该读取指令(或读出处理)的类别相关的信息(以下,称为读取类别)。读取类别是例如表示读取指令用于何种用途、或者读取数据或读出处理为何种性质等的信息,由作为读取指令的发布源的主机2产生。
该读取类别例如包含表示预定读取指令为了仅一次读出所需数据而发布的意旨的第1类别、表示预定读取指令为了读取-修改-写而发布的意旨的第2类别、表示预定读取指令为了多次读出而发布的意旨的第3类别、表示预定读取指令为了之后读出成为热数据的数据而发布的意旨的第4类别、及表示读取指令为了之后读出成为冷数据的数据而发布的意旨的第5类别等。
此处,所谓热数据是指在短时间内被再次访问的数据。另外,冷数据是被访问一次之后好久(长时间)不被访问的数据。
该读取类别也可如图14所示,使用例如作为SSD的连接标准的NVMe(Non-VolatileMemory Express)标准的数据集管理指令中包含的“情境属性”来表达。图14表示数据集管理指令中的某LBA范围的数据的情境属性。该情境属性是表示与所指定的LBA范围的数据有关的各种属性的例如4字节(32比特)的信息。
主机2例如除了将起始(开头)LBA与逻辑块长度包含于数据集管理指令以外,也将由该起始LBA与逻辑块长度指定的LBA范围的情境属性包含于数据集管理指令。
在图14中,例如[10]比特是表示该数据是否为写入对象的1比特的信息。主机2在例如读取数据为读取-修改-写的对象的情况下,将该[10]比特接通。也就是说,主机2可使用该属性信息的[10]比特,通知SSD2读取数据为所述第2类别。
另外,例如[03:00]比特是表示访问频率(Access Frequency)的4比特的信息。例如,当[03:00]比特为“0001b”时,表示该数据以通常的(典型的)访问频率执行写入及读出。同样地,例如,当[03:00]比特为“0101b”时,表示该数据以高频率写入,且以高频率读出。
主机2在例如读取数据为热数据的情况下,将该[03:00]比特设为“0100b”或“0101b”。由此,通知SSD3读取类别为所述第4类别。另外,主机2在例如读取数据为冷数据的情况下,将该[03:00]比特设为“0010b”或“0011b”。由此,通知SSD3读取类别为所述第5类别。
该读取类别也可利用其他方法表达。例如,读取类别也可包含于读取指令中。更具体来说,也可使用读取指令中包含的数据集管理字段的数比特来表达所述第1~第5类别。另外,该读取类别也可通过与读取指令不同的指令通知给SSD3。
返回到图13,在步骤S702~S706中,控制器4将读取指令所指定的读取数据从NAND型闪速存储器5读出,并写入到读取缓冲区,并且发送到主机2。此外,步骤S702~S706的处理与步骤S602~S606的处理相同。
在步骤S707中,控制器4判定接收到的读取类别是否满足特定的条件,在满足该条件的情况下,将读取数据写入到输入缓冲区36。更具体来说,控制器4基于读取类别,例如像以下(A)~(E)那样,控制读取数据向输入缓冲区36的写入。
(A)在接收到所述第1信息的情况下,也就是说,在对于该读取数据的读出仅为一次的情况下,对象的数据有可能不是热数据。因此,控制器4不将该读取数据写入到输入缓冲区36。
(B)在接收到所述第2信息的情况下,也就是说,在使用该读取数据进行读取-修改-写的情况下,该读取数据变旧的可能性变高。因此,控制器4不将该读取数据写入到输入缓冲区36。
(C)在接收到所述第3信息的情况下,也就是说,在该读取数据被多次读出的情况下,该读取数据为热数据的可能性较高。因此,控制器4将该读取数据写入到输入缓冲区36。由此,该读取数据并非从NAND型闪速存储器5而是积极地从输入缓冲区36读出。
(D)在接收到所述第4信息的情况下,也就是说,在读取数据为热数据的情况下,控制器4将该读取数据写入到输入缓冲区36。
(E)在接收到所述第5信息的情况下,也就是说,在读取数据为冷数据的情况下,控制器4不将该读取数据写入到输入缓冲区36。
此外,冷数据由于被主机2继续参照的可能性较低,所以不写入到输入缓冲区36中,由此可避免对输入缓冲区36的多余的写入。
另外,由来自主机2的写指令指定且被写入到输入缓冲区36的写数据为热数据。此处,一般地,在混合存在冷数据与热数据的块中,GC效率降低。因此,在本实施方式中,不将冷数据写入到输入缓冲区36,由此可防止输入缓冲区36的GC效率降低。
步骤S708、S709的处理由于与图12的步骤S608、S609的处理相同,所以省略说明。
像以上所说明的那样,在本实施方式中,主机2将读取类别通知给SSD3。然后,SSD3基于该信息判定是否将读取数据写入到输入缓冲区36。由此,SSD3可抑制对输入缓冲区36的多余的写入。
另外,在输入缓冲区36由例如使用SLC的NAND型闪速存储器构成的情况下,通过根据读取指令的类别将数据写入到输入缓冲区36,可减少用作读取缓冲区31的DRAM6的容量。由此,可降低SSD3的成本。
[第8实施方式]
本实施方式是第7实施方式的变化例。在本实施方式中,与第7实施方式同样地,主机2也对SSD3发送判定是否将读取数据写入到输入缓冲区36所需的信息。
图15是表示本实施方式的计算机系统1内的SSD3中的数据流的一例的流程图。
在步骤S801中,SSD3接收从主机2发布的读取指令。该读取指令中包含表示有无利用输入缓冲区36的信息。
表示有无利用输入缓冲区36的信息由作为读取指令的发布源的主机2产生。该信息例如包含表示利用输入缓冲区36的意旨的信息、表示不利用输入缓冲区36的意旨的信息、或表示委托SSD3判断有无利用输入缓冲区36的意旨的信息等中的任一个信息。
该表示有无利用输入缓冲区36的信息优选包含于读取指令中。例如主机2也可使用读取指令的预约(Reserved)区域的数比特来表达该信息。另外,例如主机2也可通过指定是否对该读取数据高速地访问来表达该信息。
另外,该读取类别也可通过与读取指令不同的指令而通知给SSD3。
步骤S802~S806的处理由于与步骤S702~S706的处理相同,所以省略说明。
在步骤S807中,控制器4确认表示有无利用输入缓冲区36的信息,判定是否将读取数据写入到输入缓冲区36。此外,通过该信息,委托SSD3判断有无利用输入缓冲区36的情况下,控制器4例如也可通过第4~第6实施方式中所示的处理来判定有无利用输入缓冲区36。
步骤S808、S809的处理由于与图13的步骤S708、S709的处理相同,所以省略说明。
像以上所说明的那样,根据本实施方式,主机2将表示有无利用输入缓冲区36的信息通知给SSD3。SSD3基于该信息判定是否将读取数据写入到输入缓冲区36。也就是说,SSD3可委托主机2判定有无利用输入缓冲区36,所以可减轻SSD3的处理负荷。另外,由于主机2进行该判定,所以可更确实地抑制对输入缓冲区36的多余的写入。
已对本发明的若干实施方式进行了说明,但这些实施方式是作为例子而提出的,并不意图限定发明的范围。这些新颖的实施方式能以其他多种方式实施,能够在不脱离发明主旨的范围内进行各种省略、置换、变更。这些实施方式或其变化包含在发明的范围或主旨中,并且包含在权利要求书所记载的发明及其均等的范围内。
[符号的说明]
1:计算机系统
2:主机
3:SSD
4:控制器
5:NAND型闪速存储器
6:DRAM
10:总线
11:主机I/F
12:CPU
13:NAND I/F
14:DRAM I/F
31:读取缓冲区
32:写缓冲区
33:GC缓冲区
34:LUT
35:块管理信息
36:输入缓冲区
41:应用层
42:操作系统
43:文件系统
121:块管理部
123:读取控制部
125:写控制部
127:GC控制部
411:SSD控制部
B0~Bm-1:块
P0~Pn-1:页

Claims (15)

1.一种存储装置,可经由接口与主机连接,且具备:
非易失性存储器,包含多个块;及
控制器,与所述非易失性存储器电连接;且
所述控制器以如下方式构成:
当从所述主机接收到读取指令时,将所述读取指令所指定的第1数据从所述非易失性存储器的第1块读出并发送到所述主机,并且将所述第1数据写入到并非所述第1块的所述非易失性存储器的第2块,
当从所述第1块读出所述第1数据时,将所述第1数据的逻辑地址范围的周边的逻辑地址范围对应的第2数据与所述第1数据一起读出,并将所述第1数据及所述第2数据写入到所述第2块。
2.根据权利要求1所述的存储装置,其中
所述第1块的多值度与所述第2块的多值度不同。
3.根据权利要求1或2所述的存储装置,其中
所述第1块的多值度高于所述第2块的多值度。
4.根据权利要求1或2所述的存储装置,具备管理多个逻辑地址与所述非易失性存储器的多个物理地址的映射的地址转换表,且
所述控制器以如下方式构成:当将所述第1数据写入到所述第2块时,通过更新所述地址转换表,将所述第1数据的写入目的地的物理地址映射到所述第1数据的逻辑地址。
5.根据权利要求1或2所述的存储装置,其中
所述控制器将所述第1数据写入到所述第2块之后,从所述主机接收到指定所述第1数据的读取指令时,从所述非易失性存储器的所述第2块将所述第1数据读出并发送到所述主机。
6.一种存储装置,可经由接口与主机连接,且具备:
非易失性存储器,包含多个块;
控制器,与所述非易失性存储器电连接;及
缓冲区,具有比所述非易失性存储器的多值度低的多值度,当接收到从所述主机写入到所述非易失性存储器的数据时,存储所述数据;且
所述控制器以如下方式构成:
当从所述主机接收到读取指令时,将所述读取指令所指定的第1数据从所述非易失性存储器的第1块读出并发送到所述主机,并且将所述第1数据写入到所述缓冲区,
存储对于所述非易失性存储器的写入容量,当所述写入容量为特定的阈值以下时,将所述第1数据写入到所述缓冲区,当所述写入容量并非所述特定的阈值以下时,不将所述第1数据写入到所述缓冲区。
7.根据权利要求6所述的存储装置,其中
所述控制器以如下方式构成:当判定为需要刷新所述第1数据时,将所述第1数据写入到所述缓冲区,当判定为不需要刷新所述第1数据时,不将所述第1数据写入到所述缓冲区。
8.根据权利要求6所述的存储装置,其中
所述特定的阈值基于DWPD(Drive Write Per Day)而设定,所述DWPD是表示将所述非易失性存储器的总存储容量设为1个单位而每天能够重写几单位的容量的指标。
9.根据权利要求6所述的存储装置,其中
所述控制器以如下方式构成:当从所述主机接收到表示所述读取指令或所述读取指令对应的读出处理的类别的信息时,基于所述信息判定是否将所述第1数据写入到所述缓冲区。
10.根据权利要求9所述的存储装置,其中
所述控制器以如下方式构成:在所述信息表示对于所述第1数据的所述读出处理进行了多次,且并非读取-修改-写的对象的情况下,将所述第1数据写入到所述缓冲区。
11.根据权利要求6所述的存储装置,其中
所述控制器以如下方式构成:在从所述主机接收到表示有无利用所述缓冲区的信息,且所述信息表示利用所述缓冲区的意旨的情况下,将所述第1数据写入到所述缓冲区,在从所述主机接收到的所述信息表示不利用所述缓冲区的意旨的情况下,不将所述第1数据写入到所述缓冲区。
12.根据权利要求6至11中任一项所述的存储装置,其中
所述控制器将所述第1数据写入到所述缓冲区之后,从所述主机接收到指定所述第1数据的读取指令时,从所述缓冲区将所述第1数据读出并发送到所述主机。
13.一种计算机系统,具备:
计算机;及
存储装置,可经由接口与所述计算机连接;
所述存储装置具备:
非易失性存储器,包含多个块;
控制器,与所述非易失性存储器电连接;及
缓冲区,具有比所述非易失性存储器的多值度低的多值度,存储从所述计算机写入到所述非易失性存储器的数据;
所述计算机对所述存储装置发送包含第1信息与第2信息的读取指令,所述第1信息用来读出第1数据,所述第2信息用来判定是否将所述第1数据写入到所述缓冲区,且
所述控制器以如下方式构成:将所述第1信息所指定的第1数据从所述非易失性存储器的第1块读出并发送到所述计算机,并且基于所述第2信息,判定是否将所述第1数据写入到所述缓冲区。
14.根据权利要求13所述的计算机系统,其中
所述第2信息是表示所述读取指令或所述读取指令对应的读出处理的类别的信息。
15.根据权利要求13所述的计算机系统,其中
所述第2信息是表示有无利用所述缓冲区的信息。
CN201810839569.5A 2018-03-30 2018-07-27 存储装置及计算机系统 Active CN110321065B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2018069140A JP2019179455A (ja) 2018-03-30 2018-03-30 記憶装置及びコンピュータシステム
JP2018-069140 2018-03-30

Publications (2)

Publication Number Publication Date
CN110321065A CN110321065A (zh) 2019-10-11
CN110321065B true CN110321065B (zh) 2023-08-11

Family

ID=68056208

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810839569.5A Active CN110321065B (zh) 2018-03-30 2018-07-27 存储装置及计算机系统

Country Status (4)

Country Link
US (1) US10936203B2 (zh)
JP (1) JP2019179455A (zh)
CN (1) CN110321065B (zh)
TW (1) TWI699650B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10726930B2 (en) * 2017-10-06 2020-07-28 Western Digital Technologies, Inc. Method and system for a storage (SSD) drive-level failure and health prediction leveraging machine learning on internal parametric data
US10852979B1 (en) * 2019-06-19 2020-12-01 Dell Products L.P. System and method of utilizing a non-volatile solid state storage device
US11119914B2 (en) 2019-11-15 2021-09-14 Micron Technology, Inc. Method of operating a memory with dynamically changeable attributes
JP7413108B2 (ja) 2020-03-23 2024-01-15 キオクシア株式会社 半導体装置
JP7044403B2 (ja) * 2020-05-18 2022-03-30 Necプラットフォームズ株式会社 ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
CN113535089B (zh) * 2020-05-22 2024-05-17 长江存储科技有限责任公司 用于ssd的映射表的刷新方法
CN112732182B (zh) * 2020-12-29 2024-07-05 北京浪潮数据技术有限公司 一种nand的数据写入方法及相关装置
US11940935B2 (en) * 2021-04-19 2024-03-26 Mellanox Technologies, Ltd. Apparatus, method and computer program product for efficient software-defined network accelerated processing using storage devices which are local relative to a host
US12124727B2 (en) 2021-12-17 2024-10-22 Samsung Electronics Co., Ltd. Automatic deletion in a persistent storage device

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6941505B2 (en) * 2000-09-12 2005-09-06 Hitachi, Ltd. Data processing system and data processing method
JP2004280752A (ja) 2003-03-19 2004-10-07 Sony Corp データ記憶装置、およびデータ記憶装置における管理情報更新方法、並びにコンピュータ・プログラム
JP4781373B2 (ja) * 2007-05-14 2011-09-28 株式会社バッファロー 記憶装置
US7979627B2 (en) 2007-05-14 2011-07-12 Buffalo Inc. Storage device with binary and multivalued memory
JP4746658B2 (ja) 2008-09-29 2011-08-10 株式会社東芝 半導体記憶システム
JP2012164114A (ja) * 2011-02-07 2012-08-30 Renesas Electronics Corp 不揮発性半導体記憶装置及びデータ処理システム
US9612949B2 (en) * 2013-06-13 2017-04-04 Arm Limited Memory allocation in a multi-core processing system based on a threshold amount of memory
US9218282B2 (en) * 2013-10-31 2015-12-22 Micron Technology, Inc. Memory system data management
KR102190670B1 (ko) 2014-03-03 2020-12-14 삼성전자주식회사 마이그레이션 관리자를 포함하는 메모리 시스템
US20150261444A1 (en) * 2014-03-12 2015-09-17 Kabushiki Kaisha Toshiba Memory system and information processing device
US20170060425A1 (en) * 2015-08-27 2017-03-02 Kabushiki Kaisha Toshiba Memory system and method of controlling nonvolatile memory
JP6414853B2 (ja) * 2015-12-14 2018-10-31 東芝メモリ株式会社 メモリシステムおよび制御方法
US9933963B1 (en) * 2017-03-01 2018-04-03 Seagate Technology Open block handling to reduce write errors
TWI649759B (zh) * 2017-09-28 2019-02-01 慧榮科技股份有限公司 資料儲存裝置與將資料寫入記憶體裝置之方法

Also Published As

Publication number Publication date
TW201942749A (zh) 2019-11-01
US20190303019A1 (en) 2019-10-03
CN110321065A (zh) 2019-10-11
TWI699650B (zh) 2020-07-21
JP2019179455A (ja) 2019-10-17
US10936203B2 (en) 2021-03-02

Similar Documents

Publication Publication Date Title
CN110321065B (zh) 存储装置及计算机系统
US12072796B2 (en) Computing system and method for controlling storage device
US11579773B2 (en) Memory system and method of controlling memory system
US11467955B2 (en) Memory system and method for controlling nonvolatile memory
US10747666B2 (en) Memory system
CN110321247B (zh) 内存系统
KR101038167B1 (ko) 프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법
USRE45222E1 (en) Method of writing of writing to a flash memory including data blocks and log blocks, using a logical address having a block address portion and page identifying portion, a block address table and a page table
US20150347310A1 (en) Storage Controller and Method for Managing Metadata in a Cache Store
US11747989B2 (en) Memory system and method for controlling nonvolatile memory
TWI420305B (zh) 記憶體儲存裝置、其記憶體控制器與自動產生填充檔案的方法
US9201784B2 (en) Semiconductor storage device and method for controlling nonvolatile semiconductor memory
US11520696B2 (en) Segregating map data among different die sets in a non-volatile memory
US20160004644A1 (en) Storage Controller and Method for Managing Modified Data Flush Operations From a Cache
US11422930B2 (en) Controller, memory system and data processing system
CN113849420A (zh) 存储器系统和控制方法
JP4242245B2 (ja) フラッシュrom制御装置
US20220269440A1 (en) Control method for flash memory controller and associated flash memory controller and storage device
CN114327240A (zh) 计算机可读存储介质、闪存存储器的数据存储方法及装置
CN107562639B (zh) 擦除块读请求处理方法与装置
CN115390747A (zh) 存储设备及其操作方法
US20240370366A1 (en) Computing system and method for controlling storage device
KR20230115196A (ko) 메모리 블록을 할당 해제하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법
KR20220159270A (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
CB02 Change of applicant information

Address after: Tokyo

Applicant after: Kaixia Co.,Ltd.

Address before: Tokyo

Applicant before: TOSHIBA MEMORY Corp.

Address after: Tokyo

Applicant after: TOSHIBA MEMORY Corp.

Address before: Tokyo

Applicant before: Pangea Co.,Ltd.

CB02 Change of applicant information
TA01 Transfer of patent application right

Effective date of registration: 20220129

Address after: Tokyo

Applicant after: Pangea Co.,Ltd.

Address before: Tokyo

Applicant before: TOSHIBA MEMORY Corp.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant