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

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

Info

Publication number
CN110297780B
CN110297780B CN201810801383.0A CN201810801383A CN110297780B CN 110297780 B CN110297780 B CN 110297780B CN 201810801383 A CN201810801383 A CN 201810801383A CN 110297780 B CN110297780 B CN 110297780B
Authority
CN
China
Prior art keywords
data
host
block
memory
ssd3
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
CN201810801383.0A
Other languages
English (en)
Other versions
CN110297780A (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 CN110297780A publication Critical patent/CN110297780A/zh
Application granted granted Critical
Publication of CN110297780B publication Critical patent/CN110297780B/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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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/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
    • 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
    • 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
    • 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/0608Saving storage space on storage systems
    • 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/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/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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • 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/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/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)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Read Only Memory (AREA)

Abstract

实施方式提供一种能够提高性能的存储装置及计算机系统。根据实施方式,存储装置具备包含多个块的非易失性存储器及控制器。所述控制器从所述主机接收表示正在所述主机上运行的总进程数的信息。所述控制器判定出所述总进程数高于第1阈值后,执行将所述非易失性存储器的至少一个块中所存储的数据移动至所述非易失性存储器的其他至少一个块的处理。

Description

存储装置及计算机系统
[相关申请]
本申请享有以日本专利申请2018-54918号(申请日:2018年3月22日)为基础申请的优先权。本申请通过参照该基础申请而包含基础申请的全部内容。
技术领域
本发明的实施方式涉及一种控制非易失性存储器的技术。
背景技术
个人计算机所代表的计算机系统包含执行用户所希望的处理的主机(主机计算机)、以及存储计算结果及数据等的存储装置等。
作为存储装置,具备非易失性存储器的存储装置广为普及。作为这种存储装置之一,已知有具备NAND(Not And,与非)闪速存储器的固态驱动器(SSD)。
最近,正在寻求存储装置的性能的提高,以期计算机系统的性能改善。
发明内容
本发明的实施方式提供一种能够提高性能的存储装置及计算机系统。
根据实施方式,能够连接于主机的存储装置具备:非易失性存储器,包含多个块;及控制器,以电连接于所述非易失性存储器,而控制所述非易失性存储器的方式构成。所述控制器从所述主机接收表示正在所述主机上运行的总进程数的信息。所述控制器判定出所述总进程数高于第1阈值后,执行将所述非易失性存储器的至少一个块中所存储的数据移动至所述非易失性存储器的其他至少一个块的处理。
附图说明
图1是表示包含第1实施方式的存储装置的计算机系统的构成例的框图。
图2是表示主机(主机计算机)的内部构成例的框图。
图3是表示第1实施方式的存储装置的构成例的框图。
图4是表示第1实施方式的存储装置内所设置的非易失性存储器的构成例的图。
图5是表示被第1实施方式的存储装置使用的用来管理非易失性存储器的使用状况的表格的例子的图。
图6是表示包含进程监视部的主机的内部构成例的框图。
图7是表示被主机的进程监视部使用的管理表的例子的图。
图8是表示由主机及第1实施方式的存储装置执行的总进程数通知处理及数据移动处理的步序的流程图。
图9是表示由主机及第1实施方式的存储装置执行的进程数增减通知处理及数据移动处理的步序的流程图。
图10是表示与第2实施方式的存储装置对应的主机的内部构成例的框图。
图11是表示由第2实施方式的存储装置创建的管理表的例子的图。
图12是表示由主机及第2实施方式的存储装置执行的数据读出/写入处理的步序的流程图。
图13是表示对应于进程的结束而由主机及第2实施方式的存储装置执行的进程标识符通知处理及数据移动处理的步序的流程图。
图14是表示在总进程数超过阈值的情况下、或接收到进程数增加的通知的情况下由第2实施方式的存储装置执行的数据移动处理的步序的流程图。
图15是表示由主机执行的将所生成的进程的类别(用户进程/系统进程)通知存储装置的处理的步序的流程图。
图16是表示由主机及第3实施方式的存储装置执行的进程数增减通知处理及数据移动处理的步序的流程图。
图17是表示由主机及第3实施方式的存储装置执行的总进程数通知处理及数据移动处理的步序的流程图。
图18是表示由第3实施方式的存储装置执行的在被结束的进程中优先移动用户进程的数据的处理的步序的流程图。
图19是表示由主机及第4实施方式的存储装置执行的使用存储器量通知处理及数据移动处理的步序的流程图。
图20是表示由主机及第5实施方式的存储装置执行的通知通过换出写入至存储装置的数据量的处理及数据移动处理的步序的流程图。
图21是表示由主机及第5实施方式的存储装置执行的通知使用存储器量/通过换出写入至存储装置的数据量的处理及数据移动处理的步序的流程图。
图22是表示由主机及第6实施方式的存储装置执行的通知被频繁启动的程序的处理及数据移动处理的步序的流程图。
具体实施方式
以下,参照附图对实施方式进行说明。
(第1实施方式)
<计算机系统的说明>
首先,参照图1,对包含第1实施方式的存储装置的计算机系统1的构成进行说明。
该存储装置是以向非易失性存储器写入数据,从非易失性存储器读出数据的方式构成的半导体存储装置。该存储装置例如是以具备NAND闪速存储器的固态驱动器(SSD)3的形态实现的。
计算机系统1包含主机(主机装置)2及SSD3。主机2是对SSD3进行存取的计算机(主机计算机)。作为主机2而发挥功能的计算机的例子包括个人计算机、服务器计算机及其他各种各样的电子设备(例如,智能手机等)。
<主机与SSD之间的连接及通信协议的说明>
主机2与SSD3之间存在用来在两者之间收发要求或信息的路径。另外,作为用来收发要求或信息的约定,存在标准规格等。
主机2经由信号线20将各种各样的要求传送至SSD3。这些要求包括包含要求读出数据的读出要求、及要求写入数据的写入要求在内的各种数据处理要求,让SSD3的状态发生变化的状态变化要求,获取SSD3的状态的状态获取要求等等。
另一方面,SSD3经由信号线20将针对从主机2所接收到的要求的回复传送至主机2。回复的例子有数据读出/写入的结果、状态变化的结果、SSD3自身的状态等等。
作为经由信号线20传送要求或回复以使各种各样的主机与各种各样的存储装置能够相互连接的方法,存在标准规格。
作为用来经由信号线20在主机与存储装置之间收发信息的标准规格,例如存在PCl Express(PCle)(注册商标)。
另外,作为被在主机与存储装置之间收发的要求或回复的过程或者数据格式等的标准规格,例如存在Non-Volatile Memory Express(NVMe)(注册商标)。
在本实施方式中,关于用来经由信号线20收发信息的机制、或者用来收发要求或回复的过程及数据格式,并不设定指定规格。本实施方式的技术在使用以PCle或NVMe为代表的各种各样的标准规格及标准规格以外的方法的情况下,都能够应用。
进而,主机2与SSD3无需使用物理信号线加以连接。主机2与SSD3可以采用无线LAN(Local Area Network,局域网)等没有物理信号线的方法加以连接。即便主机2与SSD3是采用没有物理信号线的方法加以连接的,也能够应用本实施方式的技术。
<主机的说明>
主机2具备主机存储器控制器11、处理器12及存储器13作为它的硬件组件。这些主机存储器控制器11、处理器12及存储器13可以经由总线10相互连接。主机2也可以进而具备网络接口14及显示器接口15。
主机存储器控制器11执行与SSD3的通信。详细来说,主机存储器控制器11在处理器12的控制之下,将所述各种各样的要求发送至SSD3,并从SSD3接收针对这些要求的回复。处理器12是控制主机2内各种各样的组件的CPU(Central Processing Unit,中央处理器),执行从SSD3加载至存储器13的各种各样的程序。存储器13是以动态随机存取存储器(Dynamic Random Access Memory,DRAM)这样的随机存取存储器的形态实现的。
<SSD的说明>
SSD3具备控制器4及非易失性存储器(NAND闪速存储器)5。NAND闪速存储器5可以包含多个NAND闪速存储器芯片。控制器4作为以电连接于NAND闪速存储器5,而控制NAND闪速存储器5的方式构成的存储器控制器来运行。该控制器4也可以通过系统芯片(System-on-a-chip,SoC)这样的电路来实现。SSD3也可以还具备DRAM。在SSD3为还具备DRAM的构成的情况下,DRAM也可以设置于控制器4的外部。
NAND闪速存储器5包含存储单元阵列,该存储单元阵列包含呈矩阵状配置的多个存储单元。NAND闪速存储器5可以是二维结构的NAND闪速存储器,也可以是三维结构的NAND闪速存储器。
<主机的内部构成>
图2表示主机(主机计算机)2的内部构成例。
在主机2中,作为在处理器12上运行的主机软件,存在存储器驱动器31、操作系统(OS)32、文件系统33、用户进程34及系统进程35。
<操作系统(OS)与进程的说明>
这里,对如下内容进行说明,即,对进程分配存储器,及操作系统(OS)32、进一步来说是操作系统(OS)32的进程管理部知道在主机2上运行的进程的所有信息。
操作系统(OS)32包含进程管理部321、存储器管理部322及装置管理部323。
在图2的例子中,操作系统(OS)32包含所述3个管理部,另外,操作系统(OS)32也可以进而包含文件系统33及存储器驱动器31中的一部分或全部。
操作系统(OS)32例如为Microsoft Windows(注册商标)、Linux(注册商标)这样的软件,管理包括处理器12、存储器13及SSD3在内的计算机系统1整体的资源。
操作系统32还管理在主机2上运行的应用程序(以下记作程序)。在主机2上,于操作系统32的管理之下,实现1个以上功能的程序处于一种以上运行状态下。
程序进入运行状态时,会执行以下过程。
首先,遵照由用户直接提出的要求,对进程管理部321要求程序的启动;或为了给用户提供指定功能,而由操作系统32自身对进程管理部321要求程序的启动。
其次,进程管理部321同意该程序的启动而生成该程序用进程。然后,进程管理部321对存储器管理部322要求针对该进程的存储器分配。收到存储器分配要求的存储器管理部322对该进程分配存储器13内的存储区域。进程管理部321从SSD3读出该程序,并将该程序加载至分配给该进程的存储区域。最后,进程管理部321将该进程作为处理器12的执行时间的分配对象。即,程序的执行实体是进程,对进程分配存储器。
在本实施方式中,将遵照用户的要求而生成的进程称为用户进程。与此相对地,将操作系统32自身为了实现指定功能而生成的进程这样的用户进程以外的进程称为系统进程。
例如,由用户启动用来浏览网页的网页浏览器的程序所生成的进程是用户进程。另一方面,由受理来自键盘或鼠标的输入的程序、或进行向显示器的影像输出的程序所生成的进程是系统进程。
因此,进程管理部321能够不拘于用户进程及系统进程地,掌握某时刻存在于主机2上的所有进程。
<进程的交换分区的说明>
这里,对将分配给进程的存储区域的内容在换出或换入的时机下写入至SSD3或从SSD3读出进行说明。
进程管理部321欲生成新的进程时,有分配给该进程的存储器不足的情况。这时,从进程管理部321收到存储器分配要求的存储器管理部322为了确保分配给该进程的存储区域,会将其他进程的存储区域中所存储的数据退避至SSD3。将该退避处理称为进程的换出。
换出的对象进程是依照各种各样的基准来选定的。例如,有从最后在处理器12上运行的时刻最早的进程起依次选择的方法。另外,例如,也有从生成时刻最早的进程起依次选择的方法。进而,例如,还有将选择对象的进程限定于用户进程的方法。
总而言之,分配给进程的存储区域内所存储的数据会通过换出被写入至SSD3。
此外,一旦经换出后的进程在处理器12上再次运行,便会进行将通过换出写入至SSD3的数据从SSD3读出,并复位至存储器13内的存储区域的处理。将该复位处理称为进程的换入。
在本实施方式中,换出及换入的处理是由进程管理部321来进行的。
<进程对SSD3进行存取时的处理的说明>
这里,对如下内容进行说明,即,在各进程经由文件系统33对SSD3进行存取的案例中,文件系统33知道哪个进程何时对哪个逻辑地址(逻辑块地址:LBA)进行了存取,及也存在不经由文件系统33便能够对SSD3进行存取的路径。
在进程对SSD3进行数据的读出或写入的情况下,一般来说,会对文件系统33要求数据的读出或写入。这一点无论是在用户进程中还是在系统进程中都是相同的。
在经由文件系统33对SSD3进行数据的读出或写入的情况下,进程会对文件系统33送出存取要求。详细来说,进程会对文件系统33指定希望进行读出或写入的文件名、读出/写入的类别、希望进行读出或写入的数据尺寸、读出目标存储区域(在数据读出的情况下)、存储希望写入的数据的存储区域(在数据写入的情况下)。
文件系统33检查该进程对所指定的文件是否具有存取权限,于该进程具有存取权限的情况下同意存取要求,于不具有存取权限的情况下驳回该存取要求。
即,文件系统33知道哪个进程何时对哪个文件要求了存取。
文件系统33若同意进程所提出的存取要求,则释放与该存取对象文件对应的SSD3的逻辑块地址(LBA)。
在数据读出的情况下,文件系统33根据文件系统自身所具有的表示各文件名与各LBA的对应关系的表格,创建一个以上对SSD3要求读出的开头LBA与尺寸之组。开头LBA与尺寸之组有可能变成多个的原因在于:构成一个文件的数据有可能在SSD3的LBA空间上被分割(分片化)成多个区域。
在数据写入的情况下,文件系统33从文件系统33自身所具有的未使用LBA区域当中选择一个以上分配给该写入要求的LBA区域,创建一个以上开头LBA与尺寸之组。开头LBA与尺寸之组有可能变成多个的原因在于:能够将写入要求尺寸汇总而存储的闲置的连续LBA区域有可能不存在。
若文件系统33创建对SSD3要求的包含读写对象的开头LBA与尺寸之组的要求信息,则文件系统33将该要求信息及数据读出/写入要求送出至存储器驱动器31。
存储器驱动器31根据从文件系统33所接收到的数据读出/写入要求,生成对主机存储器控制器11的操作,得当地操作主机存储器控制器11,而经由信号线20将读出/写入要求(读取/写入指令)发送至SSD3。
存储器驱动器31经由主机存储器控制器11接收由SSD3回复的读出/写入要求的结果,并将读出/写入要求的结果传送至刚才送出数据读出/写入要求的文件系统33。文件系统33向该数据读出/写入要求本源的要求起源即进程,传送该数据读出/写入要求的结果。
这样一来,进程所要求的从SSD3的数据读出及进程所要求的向SSD3的数据写入就会得到处理。因此,文件系统33就会知道哪个进程何时对哪个LBA进行了存取。
此外,从进程向SSD3送出的要求并不仅仅是读出/写入要求。例如,也有将如下要求发送至SSD3的情况,即,从SSD3获取向SSD3的总写入数据量、从SSD3的总读出数据量这样的统计信息的要求,或使SSD3的状态向低耗电状态变化的要求。
这些要求多数不经由文件系统33,而是从进程直接送出至存储器驱动器31。
文件系统33例如为NTFS(NT(New Technology,新技术)File System,新技术文件系统)、或ext4(fourth extended file system,第四扩展文件系统)等。也有主机2内存在多个文件系统的情况。
<SSD3的构成的说明>
这里,对如下内容进行说明,即,SSD3的数据控制部403管理着主机2为了读出/写入数据而指定的LBA、及存储有与该LBA对应的最新数据的NAND闪速存储器5上的存储位置这两者之间的对应关系。
图3表示SSD3的构成例。
就像图1中所说明的那样,SSD3包含控制器4及NAND闪速存储器5。如图3所示,控制器4包含接口控制器401、主机要求处理部402、数据控制部403、缓冲存储器404、直接存储器存取控制器(Direct Memory Access Controller,DMAC)405、错误订正码处理部406及NAND接口控制器407。
接口控制器401接收经由信号线20从主机2发送的对SSD3的处理要求,并将该要求的内容传达给主机要求处理部402。另外,接口控制器401遵照来自主机要求处理部402的要求,将针对来自主机2的要求的处理结果的回复经由信号线20发送至主机2。而且,接口控制器401遵照来自DMAC405的指示,将写入数据从主机2侧的存储器13读出并写入至缓冲存储器404,或将通过来自主机2的读取要求指定的数据从缓冲存储器404读出并写入至主机2侧的存储器13。
主机要求处理部402从接口控制器401接收由主机2发送的处理要求,并分析处理要求的内容,然后遵照处理要求的内容,控制SSD3内部的动作。
主机要求处理部402例如若从主机2接收到读出要求(读取指令),则对数据控制部403指示从NAND闪速存储器5将通过该读出要求指定的数据读出至缓冲存储器404,并操作DMAC405,而将读出至缓冲存储器404的数据传输至主机2侧的存储器13。另外,主机要求处理部402例如若从主机2接收到写入要求(写入指令),则操作DMAC405,从主机2侧的存储器13将写入数据传输至缓冲存储器404,并对数据控制部403指示将缓冲存储器404内的写入数据写入至NAND闪速存储器。然后,主机要求处理部402在从主机2所接收到的要求的处理完成后,向主机2发送处理结果。
SSD3从主机2接收的要求并不仅仅是读出要求、写入要求。如上所述,例如,也会接收获取总写入数据量或总读出数据量这样的统计信息的要求、或者使SSD3的状态向低耗电状态变化的要求。接收到这些要求的主机要求处理部402对数据控制部403要求具体处理,而实现所期望的处理。
数据控制部403进行SSD3内所存储的数据的管理、及对NAND闪速存储器5的存取的控制。具体来说,数据控制部403存储有由主机指定的LBA与位置信息之组,其中所述位置信息表示存储有与该LBA对应的最新数据的NAND闪速存储器5内的存储位置。将该NAND闪速存储器5内的位置信息称为NAND物理地址(NAND Physical Address:NPA)。另外,将由数据控制部403管理的管理各LBA与各NPA之间的对应关系的表格称为逻辑转换表。
NAND闪速存储器5包含具有存储单元阵列的1个以上NAND闪速存储器芯片。存储单元阵列具有呈矩阵状排列的多个存储单元。如图4所示,NAND闪速存储器5的存储单元阵列包含多个块(物埋块)BLK0~BLK(j-1)。块BLK0~BLK(j-1)作为消除动作的单位而发挥功能。
块BLK0~BLK(j-1)包含多个页(物理页)。即,块BLK0~BLK(j-1)各自包含页P0、P1、…P(k-1)。各页包含连接于同一字线的多个存储单元。在NAND闪速存储器5中,数据读出及数据写入是以页为单位而执行的。
<向SSD3写入数据的处理的说明>
这里,对在数据写入时更新逻辑转换表进行说明。
在由主机2对SSD3传送了数据写入要求的情况下,SSD3的控制器4会以如下方式进行处理。
在控制器4中,首先,主机要求处理部402经由接口控制器401接收该写入要求。
该写入要求中包含写入目标LBA区域的开头LBA、写入尺寸及存储有写入数据的主机存储器的开头地址。因此,主机要求处理部402操作DMAC405,将与该写入尺寸相当的数据从该主机存储器的开头地址传输至缓冲存储器404。然后,主机要求处理部402对数据控制部403指示将缓冲存储器404内的数据写入至NAND闪速存储器5。
此外,主机要求处理部402可以在已将被要求写入的数据全部传输至缓冲存储器404的时点,将针对从主机2所接收到的写入要求的回复发送至主机2,也可以在已将被要求写入的数据全部写入至NAND闪速存储器5的时点,将所述回复发送至主机2。
从主机要求处理部402收到数据写入指示的数据控制部403决定将该数据写入至NAND闪速存储器5的与哪个NPA对应的存储位置,然后视需要操作错误订正码处理部406,而基于该数据创建包含该数据与错误订正码的加密数据,再操作NAND接口控制器407,将该数据(或该加密数据)写入至NAND闪速存储器5。
数据控制部403将该数据写入至NAND闪速存储器5后,更新逻辑转换表,以使该数据的LBA与表示写入有该数据的存储位置的NPA建立对应关系。在逻辑转换表中,若该LBA对应关联着与该LBA的旧数据对应的NPA,则与该旧数据对应的NPA将会被更新为表示写入有该数据的存储位置的NPA(新的NPA)。这样一来,逻辑转换表的内容就会被以LBA与NPA的对应关系始终最新的方式来管理。
<多值度的区分使用>
这里,对如下内容进行说明,即,SSD3能够将表示一个存储单元中所存储的比特数的多值度互不相同的多种程序模式(SLC模式/MLC模式/TLC模式)适当区分使用,而将数据写入至NAND闪速存储器5。
例如,在NAND闪速存储器5是以一个存储单元中存储3比特数据的三层单元(TLC)-NAND闪速存储器的形态实现的情况下,NAND闪速存储器5能够选择性地使用多值度互不相同的多个程序模式,即,(1)一个存储单元中存储1比特数据的单层单元(SLC)模式,(2)一个存储单元中存储2比特数据的双层单元(MLC)模式,(3)一个存储单元中存储3比特数据的三层单元(TLC)模式;而将数据写入至NAND闪速存储器5。
一般来说,写入至一个存储单元的数据量(比特数)越多,即多值度越高的话,存储器成本越低,NAND闪速存储器5的利用效率越高。但是,要想以多值度较高的程序模式将数据写入至存储单元,另外要想将以多值度较高的程序模式写入的数据从存储单元读出,多数需要执行复杂的处理,从而数据写入/读出所花费的时间就会变长。
因此,数据控制部403在希望使被主机2指示的写入要求尽量迅速地完成的情况下,会以SLC模式这样的多值度较低的程序模式对NAND闪速存储器5的块进行写入。
相反地,数据控制部403在希望提高NAND闪速存储器5的利用效率时,会实施垃圾回收(GC)等,而将以多值度较低的程序模式写入的数据以TLC模式这样的多值度相对较高的程序模式重新写入。GC是将有效数据与无效数据混合存在的若干块(GC源块)内的有效数据移动至新的块(GC宿块),而使GC源块变成不含有效数据的空闲块的动作。
程序模式的切换是以NAND闪速存储器5的块为单位而进行的。即,NAND闪速存储器5中包含的多个块被选择性地用作表示一个存储单元中所存储的比特数的多值度互不相同的多种块中的任一种。
后面,将以SLC形态使用的NAND闪速存储器5的块(即,以SLC模式写入数据的块)称为SLC块。同样地,将以MLC形态使用的NAND闪速存储器5的块(即,以MLC模式写入数据的块)称为MLC块,将以TLC形态使用的NAND闪速存储器5的块(即,以TLC模式写入数据的块)称为TLC块。
例如,数据控制部403也可以首先将与从主机2所接收到的几乎所有写入要求对应的写入数据写入至多值度较低的块(例如SLC块),以便使主机2所要求的数据写入迅速地完成。而且,之后,数据控制部403也可以视需要,将多值度较低的一个以上块中所存储的数据(有效数据)移动至多值度相对较高的一个以上块(MLC块或TLC块)。
此处,所谓数据的移动,是指将NAND闪速存储器5的至少一个块(移动源头块)中所存储的数据复制到NAND闪速存储器5的其他至少一个块(移动目标块),而将移动源头块内的该数据无效化。
所谓有效数据,是指与LBA这样的逻辑地址相关联的最新数据。所谓无效数据,是指与任何逻辑地址都不关联的老旧数据。
为了控制这种移动处理,数据控制部403创建图5所示的管理表,而管理NAND闪速存储器5的使用状况。
<管理NAND闪速存储器的使用状况的表格的说明>
图5表示数据控制部403创建并管理的管理SSD3内的NAND闪速存储器5的使用状况的表格。以下将该表格称为NAND管理表。
在该图5的NAND管理表中,按照SLC、MLC、TLC这样的NAND闪速存储器5的可利用多值度,记录并管理着各多值度下使用的NAND闪速存储器5的块数(使用块数)、所使用的块内存储的有效数据的总量(有效数据量)、各多值度下可使用的最大块数、各多值度下使用最大块数时所能存储的最大数据量、及各多值度下当前可使用的闲置块数(空闲块数)。
另外,在图5的NAND管理表中,还记录并管理着与多值度无关的SSD3整体上的所述使用块数、有效数据量、最大块数、最大数据量及空闲块数。
在数据控制部403已将数据写入至NAND闪速存储器5的情况下,数据控制部403会按照写入时的多值度,更新NAND管理表。例如,若数据控制部403从SLC的空闲块中抽取一个块,并向该块以SLC模式写入4千字节的数据,则数据控制部403使NAND管理表内的SLC这行的使用块数增加1,使SLC这行的有效数据量增加4千字节,使SLC这行的空闲块数减少1。
这时,在通过该数据写入而例如MLC块中所存储的4千字节的数据变成最旧数据(变成无效数据)的情况下,数据控制部403会使NAND管理表内的MLC这行的有效数据量减少4千字节。
另外,数据控制部403使SSD整体这行的使用块数增加1,使SSD整体这行的空闲块数减少1。此外,SSD整体这行的有效数据量不变。这是因为,新写入至SLC块的4千字节的数据变成了有效数据,而相应地MLC块中所存储的4千字节的数据变成了无效数据。
<由NAND管理表可知的事情的说明>
若查阅图5的NAND管理表,则关于SSD3内部的状态,可知如下事情。
可知:在SLC块的使用块数较多的情况下,NAND闪速存储器5的利用效率降低。就SLC块来说,虽然读写较快,但是因为多值度较低,所以利用效率较差。因此,作为SLC块使用的最大块数在某种程度上要设定得较少。
在SLC的使用块数接近于预先设定的最大块数的情况下,不仅NAND闪速存储器5的利用效率会下滑,而且将无法再进一步针对来自主机2的写入要求分配SLC块。因此,能够判断出需要使SLC块中所存储的数据移动至多值度相对较高的块。
另外,可知:就所有多值度来说,无论使用块数是否增加,在有效数据量与最大数据量相比较少的情况下,无效数据较多,NAND闪速存储器5内的许多块尚未被有效运用。
这时,整体上的空闲块数同时减少。因此,数据控制部403能够判断出需要通过GC来减少使用块数,而增加空闲块数。
通过像这样使用图5的NAND管理表来检查SSD3内的NAND闪速存储器5的使用状况,数据控制部403能够判断出接下来需要执行怎样的处理。
<第1实施方式的数据移动处理的说明>
首先,对第1实施方式的数据移动处理的概要进行说明。
在由主机2的处理器12执行的主机软件中,追加进程监视部41。该进程监视部41能够知道在主机2上运行的进程数,并将总进程数通知SSD3。此外,进程监视部41也可以将总进程数的增减通知SSD3。
SSD3的控制器4判定由主机2通知的总进程数是否高于某阈值,在判定出总进程数高于某阈值的情况下,执行使多值度较低的块中所存储的数据移动至多值度相对较高的块的处理。在这种情况下,例如,将SLC块中所存储的数据(有效数据)移动至MLC块或TLC块的处理得以执行。由此,能够使当前正在使用的SLC块变成空闲块。如上所述,若总进程数增多,则换出、换入变得易于发生。在本实施方式中,会基于总进程数,执行使多值度较低的块中所存储的数据移动至多值度相对较高的块的处理,因此能够在换出、换入变得易于发生前,增加多值度较低的块(例如SLC块)的空闲块数。由此,在以后发生进程的换出或换入时能够使用多值度较低的块进行数据写入及数据读出的可能性提高。结果,能够缩短换出或换入所花费的时间。
此外,数据的移动也可以在多值度相同的块之间进行。该数据的移动是所述GC的一种形态。分配通过该数据的移动所生成的空闲块作为SLC的空闲块的话,能够为后续的来自主机2的写入要求做好准备。
另外,移动数据的处理并非一定要在判定出总进程数高于某阈值的时点立即执行,而只要在判定出总进程数高于某阈值后执行即可。
例如也可以为:在判定出总进程数高于某阈值的时点,控制器4(例如主机要求处理部402)决定应该执行移动数据的处理,而将该用来移动数据的处理排入等待队列中。
或者也可以为:将总进程数高于阈值作为触发,主机要求处理部402提高用来移动数据的处理的优先度。由此,用来移动数据的处理的优先度变得高于其他若干处理的优先度,故而能够优先于所述其他若干处理地执行用来移动数据的处理。
或者也可以为:在判定出总进程数高于某阈值的时点,主机要求处理部402决定应该执行移动数据的处理,然后一直等到SLC的有效数据量降至某阈值,或SSD3整体的空闲块数降至某阈值这样的条件成立,当该条件成立时,执行用来移动数据的处理。
以下,对用来实现基于总进程数的数据移动处理的具体构成进行说明。
图6表示包含进程监视部41的主机2的内部构成例。
该图6的构成例是在图2的构成例中追加进程监视部41而成的。
进程监视部41通过与OS32的进程管理部321、或存储器管理部322、甚至文件系统33之间的信息收发,获取并管理正在主机2上运行的进程、分配给这些进程的存储区域及它的区域的尺寸、甚至各进程所存取的SSD3的LBA等信息。
具体来说,进程监视部41使用图7所示的管理表,管理着所述信息。图7所示的管理表具有与多个进程对应的多个条目(行)。各行包含进程标识符字段、进程类别字段、存储器使用量字段、多个LBA利用列表字段及最终启动时刻字段。
在与某进程对应的行中,进程标识符字段表示该进程的标识符。进程类别字段表示该进程的类别(用户进程/系统进程)。存储器使用量字段表示正被该进程使用的主机存储器上的存储区域的容量。LBA利用列表字段表示该进程所存取(读出/写入)的SSD3的LBA的列表。最终启动时刻字段表示该进程最后被启动的时刻。
如上所述,在进程生成时,除了进程管理部321从SSD3读出程序以外,进程还会发布针对SSD3的读出/写入要求。因此,若生成进程,则进行向SSD3的数据写入、从SSD3的数据读出的可能性较高。
因此,若进程监视部41通过询问进程管理部321检测到进程已生成,则进程监视部41将这个情况通知SSD3。该对SSD3进行的通知可以使用NVMe等标准规格的指令,也可以使用其他方法。
在被主机2通知进程数增加的SSD3的控制器4中,收到该通知的主机要求处理部402使数据控制部403将多值度较低的块中所存储的数据移动至多值度相对较高的块,由此增加多值度较低的块用的空闲块数,以备后续的自主机2的存取所用。
另外,进程数减少意味着进程已结束。若进程结束,则该已结束的进程对SSD3所读写的数据暂时不会被存取的可能性较高。
因此,若进程监视部41通过询问进程管理部321检测到进程已结束,则进程监视部41将这个情况通知SSD3。同样地,该对SSD3进行的通知可以使用NVMe等标准规格的指令,也可以使用其他方法。
在被主机2通知进程数减少的SSD3的控制器4中,收到该通知的主机要求处理部402使数据控制部403将多值度较低的块中所存储的数据移动至多值度相对较高的块,由此增加多值度较低的块用的空闲块数,从而谋求NAND闪速存储器5的利用效率的改善。
进而,进程的总数较少表示从主机2向SSD3发送的读出/写入要求有可能较少。
另外,进程的总数较多表示所述进程的换出及换入发生的可能性较高。
因此,进程监视部41根据询问进程管理部321所得到的结果,管理总进程数,并将该总进程数通知SSD3。同样地,该对SSD3进行的通知可以使用NVMe等标准规格的指令,也可以使用其他方法。关于将总进程数通知SSD3的时机,可以是进程数增减之时,也可以是定期地进行通知。
在从主机2收到总进程数的通知的SSD3的控制器4中,收到该通知的主机要求处理部402检查被通知的总进程数是否高于预先设定的阈值(第1阈值)。
在总进程数高于所述第1阈值的情况下,主机要求处理部402对数据控制部403指示将多值度较低的块中所存储的数据移动至多值度相对较高的块。由此,多值度较低的块中所存储的数据被移动至多值度相对较高的块,故而多值度较低的块用的空闲块数增加,在以后发生进程的换出或换入时能够使用多值度较低的块的可能性提高。结果,能够缩短换出或换入所花费的时间,从而提高站在主机2的角度来看的SSD3的性能、乃至站在用户的角度来看的SSD3的性能。
另外,主机要求处理部402检查总进程数是否低于预先设定的阈值(第2阈值)。例如,第2阈值是小于第1阈值的值。
在总进程数低于第2阈值的情况下,主机要求处理部402对数据控制部403指示将多值度较低的块中所存储的数据移动至多值度相对较高的块。由此,多值度较低的块中所存储的数据被移动至多值度相对较高的块,故而多值度较低的块用的空闲块数增加,NAND闪速存储器5的利用效率改善。
图8的流程图表示由主机2及SSD3执行的总进程数通知处理及数据移动处理的步序。
主机2的进程监视部41与进程管理部321共同管理正在主机2的处理器12上运行的总进程数(步骤S11)。当总进程数增减,或从上次的通知起经过一定期间这样的通知条件成立时(步骤S12为是),进程监视部41将表示总进程数的信息发送至SSD3,而将总进程数通知SSD3(步骤S13)。
SSD3的控制器4从主机2接收表示总进程数的通知(步骤S21)。控制器4的主机要求处理部402将由主机2通知的总进程数与第1阈值加以比较,判定总进程数是否高于第1阈值(步骤S22)。
若总进程数高于第1阈值(步骤S22为是),则主机要求处理部402使用数据控制部403,执行将多值度较低的块中所存储的数据移动至多值度相对较高的块的处理(步骤S23)。在步骤S23中,由主机要求处理部402对数据控制部403指示数据的移动。然后,数据控制部403将数据从多值度较低的块移动至多值度较高的块。例如,数据控制部403读出SLC块中所存储的数据(有效数据),并将该数据以MLC模式写入至MCL块,或以TLC模式写入至TLC块。由此,SLC块中所存储的数据被从SLC块移动至MCL块或TLC块。通过数据的移动而有效数据消失后的SLC块变成空闲块。
因此,能够于因为正在主机2(处理器12)上运行的进程数增加而导致换出发生前,事先确保SLC的空闲块,从而能够减少换出所需的时间。结果,能够改善计算机系统1整体的性能。
若总进程数并不高于第1阈值(步骤S22为否),则主机要求处理部402将总进程数与第2阈值(<第1阈值)加以比较,判定总进程数是否低于第2阈值(步骤S24)。
若总进程数低于第2阈值(步骤S24为是),则主机要求处理部402使用数据控制部403,执行将多值度较低的块中所存储的数据移动至多值度相对较高的块的处理(步骤S25)。在步骤S25中,由主机要求处理部402对数据控制部403指示数据的移动。然后,数据控制部403将数据从多值度较低的块移动至多值度较高的块。例如,数据控制部403读出SLC块中所存储的数据(有效数据),并将该数据以MLC模式写入至MCL块,或以TLC模式写入至TLC块。由此,SLC块中所存储的数据被从SLC块移动至MCL块或TLC块。通过该数据的移动,NAND闪速存储器5的利用效率得到改善。
此外,在步骤S23中,执行了将多值度较低的块中所存储的数据移动至多值度相对较高的块的处理,但是例如也可以为在TLC块之间移动数据(有效数据)。如上所述,该数据的移动是GC的一种形态。在这种情况下,同样地,分配通过数据的移动所生成的空闲块作为SLC用空闲块的话,能够为后续的换出做好准备。
同样地,在步骤S25中,例如也可以为在TLC块之间移动数据(有效数据)。
图9的流程图表示由主机2及SSD3执行的进程数增减通知处理及数据移动处理的步序。
主机2的进程监视部41与进程管理部321共同管理正在主机2的处理器12上运行的总进程数的增减(步骤S31)。
若总进程数增加(步骤S32为是),则进程监视部41将表示总进程数增加的通知发送至SSD3(步骤S33)。
另一方面,若总进程数减少(步骤S34为是),则进程监视部41将表示总进程数减少的通知发送至SSD3(步骤S35)。
若SSD3的控制器4从主机2接收到表示总进程数增加的通知(步骤S41为是),则控制器4的主机要求处理部402使用数据控制部403,执行将多值度较低的块中所存储的数据移动至多值度相对较高的块的处理(步骤S42)。在步骤S42中,由主机要求处理部402对数据控制部403指示数据的移动,从而数据控制部403将数据从多值度较低的块移动至多值度较高的块。例如,数据控制部403读出SLC块中所存储的数据(有效数据),并将该数据以MLC模式写入至MCL块,或以TLC模式写入至TLC块。由此,SLC块中所存储的数据被从SLC块移动至MCL块或TLC块。通过数据的移动而有效数据消失后的SLC块变成空闲块。
因此,能够在换出发生前,事先确保SLC用空闲块,从而能够减少换出所需的时间。结果,能够改善计算机系统1整体的性能。
若SSD3的控制器4从主机2接收到表示总进程数减少的通知(步骤S43为是),则控制器4的主机要求处理部402使用数据控制部403,执行将多值度较低的块中所存储的数据移动至多值度相对较高的块的处理(步骤S44)。在步骤S44中,由主机要求处理部402对数据控制部403指示数据的移动,从而数据控制部403将数据从多值度较低的块移动至多值度较高的块。例如,数据控制部403读出SLC块中所存储的数据(有效数据),并将该数据以MLC模式写入至MCL块,或以TLC模式写入至TLC块。由此,SLC块中所存储的数据被从SLC块移动至MCL块或TLC块。通过该数据的移动,NAND闪速存储器5的利用效率得到改善。
此外,在步骤S42中,执行了将多值度较低的块中所存储的数据移动至多值度相对较高的块的处理,但是例如也可以为在TLC块之间移动数据(有效数据)。如上所述,该数据的移动是GC的一种形态。在这种情况下,同样地,分配通过数据的移动所生成的空闲块作为SLC用空闲块的话,能够为后续的换出做好准备。
同样地,在步骤S44中,例如也可以为在TLC块之间移动数据(有效数据)。由此,能够降低TLC块的分片。
参照图8的流程图及图9的流程图说明的主机2的处理是由构成为执行主机软件(存储器驱动器31、操作系统(OS)32、文件系统33、进程监视部41等)的处理器12来执行的。
(第2实施方式)
在第1实施方式中,基于由主机2通知SSD3的总进程数(或总进程数的增减)执行了数据的移动。在第2实施方式中,由主机2将进程的标识符通知SSD3,使通过指定进程写入的数据在块与块之间移动。此外,第2实施方式中的SSD3的硬件构成及主机2的硬件构成与第1实施方式的SSD3及主机2相同。
<第2实施方式的数据移动处理的说明>
首先,对第2实施方式的数据移动处理的概要进行说明。
主机2能够将表示主机2中所生成的各进程的标识符的信息通知SSD3。另外,主机2能够将各自被赋予有要求写入数据的进程的标识符的各写入要求发送至SSD3。SSD3的控制器4使用管理表,管理所生成的各进程的标识符、及与通过所述生成的各进程写入的数据对应的地址范围这两者之间的对应关系。
SSD3的控制器4从主机2接收到表示某进程的结束的通知后,基于管理表,执行将通过已结束的进程写入至NAND闪速存储器5的数据从多值度较低的块移动至多值度相对较高的块的处理。
与已结束的进程对应的数据短时间内不会被主机2存取。因此,即便使与已结束的进程对应的数据移动至多值度相对较高的块,也不会发生该数据的读出速度下降这样的现象,故而能够不引起性能降低地,为后续的来自主机2的写入要求做好准备。
此外,与已结束的进程对应的数据的移动也可以在多值度相同的块之间进行。在这种情况下,数据的移动也是所述GC的一种形态。分配通过该数据的移动所生成的空闲块作为SLC的空闲块的话,能够为后续的来自主机2的写入要求做好准备。
另外,也可以为:主机2不仅是将各自被赋予有要求写入数据的进程的标识符的写入要求发送至SSD3,而且也将各自被赋予有要求读出数据的进程的标识符的读出要求发送至SSD3。在这种情况下,SSD3的控制器4只要使用管理表,管理所生成的各进程的标识符、及与通过所生成的各进程存取(读出或写入)的数据对应的地址范围这两者之间的对应关系即可。然后,SSD3的控制器4从主机2接收到表示某进程的结束的通知后,基于该管理表,使通过已结束的进程存取(读出或写入)的数据从多值度较低的块移动至多值度相对较高的块。
另外,与第1实施方式同样地,移动数据的处理并非一定要在被主机2通知已结束的进程的时点立即执行,也可以在之后执行。
以下,对用来实现第2实施方式的数据移动处理的具体构成进行说明。
图10表示主机2的内部构成例。
图10的内部构成例比起图6的内部构成例,不同点在于:存储器驱动器31的前段追加有过滤器驱动器42。
就像第1实施方式中所说明的那样,主机2的进程监视部41掌握着正在主机2上运行的各进程。另外,进程监视部41从文件系统33,获取到了各进程所读写的LBA区域(LBA范围)的信息。而且,读出要求及写入要求各自包含指定存取目标LBA区域的信息(开头LBA与数据尺寸)。因此,进程监视部41通过追加过滤器驱动器42,而参照读出/写入要求中包含的存取目标LBA区域,能够锁定该要求读出/写入数据的要求起源进程,进而能够使用过滤器驱动器42,对该读出/写入要求赋予该锁定的进程的标识符。因此,存储器驱动器31能够将被赋予有要求读出/写入数据的进程的标识符的读出/写入要求发送至SSD3。在这种情况下,也可以将包含进程的标识符的读出/写入要求(读取/写入指令)发送至SSD3。
SSD3的控制器4从主机2接收被赋予有进程的标识符的读出/写入要求。因此,控制器4能够基于该读出/写入要求,检测要求读出/写入数据的要求起源进程的标识符。
该进程的标识符可以是进程ID,也可以是作为进程起源的程序的ID,还可以是该程序的名称或该程序的文件名。
SSD3的数据控制部403使用所接收到的读出/写入要求内的进程标识符,创建图11所示的表格(以下,称为进程数据管理表)。
数据控制部403使用进程数据管理表,管理要求读出/写入数据的各进程的标识符、及与通过所述各进程存取(读出/写入)的数据对应的各地址范围这两者之间的对应关系。
该进程数据管理表具有与多个进程对应的多个条目(行)。各行包含进程标识符字段、SLC字段、MLC字段、TLC字段、进程类别字段、LBA区域-多值度字段及最终存取时刻字段。
在与某进程对应的行中,进程标识符字段表示该进程的标识符。SLC字段表示通过该进程存取的总数据量中以SLC模式存储的数据量。MLC字段表示通过该进程存取的总数据量中以MLC模式存储的数据量。TLC字段表示通过该进程存取的总数据量中以TLC模式存储的数据量。进程类别字段表示该进程是系统进程还是用户进程。LBA区域-多值度字段表示通过该进程存取(读出、写入)的LBA区域(开头LBA与尺寸(逻辑块数))、及该LBA区域的数据存储于哪个多值度的块中。该LBA区域表示与通过该进程读出/写入的数据对应的地址范围。最终存取时刻字段表示该进程最后对SSD3进行存取的最终存取时刻,即表示该进程最后实施从SSD3的数据读出或向SSD3的数据写入的最终存取时刻。此外,最终存取时刻也可以如图11所示,按每个LBA区域逐一加以管理。
在本实施方式中,通过在多值度不同的多个块之间移动数据,能够使同一进程的数据分散于多值度不同的多个块。例如,可以将与某进程对应的程序存储于TLC块这样的多值度较高的块中,也可以将通过该进程创建的文件这样的数据存储于SLC块中。在这种情况下,与分配给该程序的LBA区域对应的多值度表示TLC,与分配给文件这样的数据的LBA区域对应的多值度表示SLC。通常,程序很少会被更新,而文件这样的数据则会以相对较高的频度得到更新。因此,通过利用如下数据配置,能够实现高速地读出/写入文件这样的数据、及改善NAND闪速存储器5的利用效率这两者,即,将与某进程对应的程序存储于TLC块这样的多值度较高的块中,将通过该进程创建的文件这样的数据存储于SLC块中。
图11的进程数据管理表与图5的NAND管理表同样地,由数据控制部403来管理及更新。
向进程数据管理表中追加新进程之行的时机例如为主机2的进程监视部41通知SSD3进程已生成之时。例如,也可以为进程监视部41将包含主机2中所生成的进程的标识符的信息作为表示进程的生成的通知发送至SSD3。
另一方面,从进程数据管理表中删除指定进程之行的时机例如为主机2的进程监视部41通知SSD3进程已结束之时。例如,也可以为进程监视部41将包含主机2中所结束的进程的标识符的信息作为表示进程的结束的通知发送至SSD3。
此外,也可以考虑如下形态,即,就算被主机2通知进程已结束,也不从进程数据管理表中删除该进程之行。
尤其是在使用作为进程起源的程序的名称作为识别进程的标识符的构成中,可以考虑如下运用方法,即,预先在进程数据管理表中保留与被结束的进程相关的数据(行),以备之后启动同一程序的情况所用。在这种情况下,关于从进程数据管理表中删除数据(行)的时机,可以考虑进程数据管理表的尺寸变得过大之时等。
具体处理如下。
首先,在进程结束时,主机2的进程监视部41将已结束的进程的标识符通知SSD3。SSD3的控制器4从主机2接收到已结束的进程的标识符后,控制器4从进程数据管理表中锁定该已结束的进程之行,并使该已结束的进程所存取的数据(例如,通过已结束的进程写入至NAND闪速存储器5的数据、或者通过已结束的进程被实施从NAND闪速存储器5的读出或向NAND闪速存储器5的写入二者之一的数据)移动至多值度相对较高的块。由此,能够更有效率地增加多值度较低的块的空闲块,从而谋求NAND闪速存储器5的利用效率的改善。
另外,图11的进程数据管理表也可以用来在第1实施方式中选择移动对象数据。
例如,若由主机2的进程监视部41通知的总进程数超过第1阈值,或被主机2的进程监视部41通知总进程数增加,则SSD3的控制器4参照图11的进程数据管理表,锁定在多值度较低的块中存储有相对较多数据的进程,并执行将该锁定的进程所存取的数据(例如,通过该锁定的进程写入至NAND闪速存储器5的数据、或者通过该锁定的进程被实施从NAND闪速存储器5的读出或向NAND闪速存储器5的写入二者之一的数据)从多值度较低的块移动至多值度相对较高的块的处理。
或者也可以为:若由主机2的进程监视部41通知的总进程数超过第1阈值,或被主机2的进程监视部41通知总进程数增加,则SSD3的控制器4参照图11的进程数据管理表,锁定最终存取时刻最早的进程,并执行将该锁定的进程所存取的数据(例如,通过该锁定的进程写入至NAND闪速存储器5的数据、或者通过该锁定的进程被实施从NAND闪速存储器5的读出或向NAND闪速存储器5的写入二者之一的数据)从多值度较低的块移动至多值度相对较高的块的处理。
图12的流程图表示由主机2及SSD3执行的数据读出/写入处理的步序。
当应该将读出/写入要求发送至SSD3时(步骤S51为是),主机2的进程监视部41将要求读出或写入数据的要求起源进程的标识符赋予给该读出/写入要求(步骤S52),并将该被赋予有要求起源进程的标识符的读出/写入要求发送至SSD3(步骤S53)。
SSD3的控制器4从主机2接收读出/写入要求(步骤S61)。主机要求处理部402基于该接收到的读出/写入要求,对数据控制部403指示从NAND闪速存储器5的数据读出或向NAND闪速存储器5的数据写入,从而数据控制部403进行从NAND闪速存储器5的数据读出或向NAND闪速存储器5的数据写入(步骤S62)。进而,数据控制部403将赋予给读出/写入要求的进程的标识符、及通过该进程读出或写入的数据的地址范围(LBA区域)这两者之间的对应关系存储至图11的进程数据管理表中(步骤S63)。
图13的流程图表示对应于进程的结束而由主机及第2实施方式的存储装置执行的进程标识符通知处理及数据移动处理的步序。
当某进程已结束时(步骤S54为是),主机2的进程监视部41将该已结束的进程的标识符通知SSD3(步骤S55)。
SSD3的控制器4从主机2接收已结束的进程的标识符(步骤S64)。主机要求处理部402对数据控制部403指示已结束的进程的数据的移动,从而数据控制部403基于图11的进程数据管理表,执行将通过已结束的进程存取的数据(例如,通过已结束的进程写入至NAND闪速存储器5的数据、或者通过已结束的进程被实施从NAND闪速存储器5的读出或向NAND闪速存储器5的写入二者之一的数据)移动至多值度相对较高的块的处理(步骤S65)。
图14的流程图表示在总进程数超过阈值的情况下、或接收到进程数增加的通知的情况下由SSD3执行的数据移动处理的步序。
若由主机2通知的总进程数超过第1阈值,或被主机2的进程监视部41通知总进程数增加(步骤S71为是),则主机要求处理部402对数据控制部403指示数据的移动。数据控制部403参照图11的进程数据管理表,锁定在多值度较低的块中存储有相对较多数据的进程,并执行将该锁定的进程所存取的数据(例如,通过该锁定的进程写入至NAND闪速存储器5的数据、或者通过该锁定的进程被实施从NAND闪速存储器5的读出或向NAND闪速存储器5的写入二者之一的数据)从多值度较低的块移动至多值度相对较高的块的处理(步骤S72)。
或者也可以为:在步骤S72中,数据控制部403参照图11的进程数据管理表,锁定最终存取时刻最早的进程,并执行将该锁定的进程所存取的数据(例如,通过该锁定的进程写入至NAND闪速存储器5的数据、或者通过该锁定的进程被实施从NAND闪速存储器5的读出或向NAND闪速存储器5的写入二者之一的数据)从多值度较低的块移动至多值度相对较高的块的处理。
参照图12的流程图、图13的流程图及图14的流程图说明的主机2的处理是由构成为执行主机软件(存储器驱动器31、操作系统(OS)32、文件系统33、进程监视部41等)的处理器12来执行的。
(第3实施方式)
以下,将如下构成作为第3实施方式而进行说明,即,由主机2通知SSD3所生成的进程的标识符、及表示所生成的进程是系统进程还是用户进程的类别(进程类别),从而SSD3执行如下处理,即,优先于通过系统进程存取的数据(例如通过系统进程写入至NAND闪速存储器5的数据、或者通过系统进程被实施从NAND闪速存储器5的读出或向NAND闪速存储器5的写入二者之一的数据)地,选择通过用户进程存取的数据(例如通过用户进程写入至NAND闪速存储器5的数据、或者通过用户进程被实施从NAND闪速存储器5的读出或向NAND闪速存储器5的写入二者之一的数据)作为移动对象数据。
此外,第2实施方式中的SSD3的硬件构成及主机2的硬件构成与第1实施方式的SSD3及主机2相同,主机2的内部构成与图10中所说明的内部构成相同。
在第1实施方式及第2实施方式中,进程监视部41管理着主机2上的进程的状态,如上所述,进程有用户进程与系统进程两类。
如上所述,关于进程,有进行换出或换入的情况,但因为系统进程是使主机2正常运行所必需的进程,所以很少会进行换出。换句话说,进行换出、换入的大部分进程是用户进程,多数情况下系统进程常驻于主机2的存储器13。因此,被启动后的系统进程对SSD3送出读出/写入要求的可能性较高。
因此,主机2的进程监视部41将进程的生成通知SSD3时,不仅是将该生成的进程的标识符通知SSD3,而且也会将表示该生成的进程是系统进程还是用户进程的类别通知SSD3。
SSD3的数据控制部403使用图11的进程数据管理表,管理所生成的各进程的标识符、所生成的各进程的类别、及与通过所生成的各进程存取的数据(例如,通过所生成的进程写入至NAND闪速存储器5的数据、或者通过所生成的进程被实施从NAND闪速存储器5的读出或向NAND闪速存储器5的写入二者之一的数据)对应的地址范围(LBA区域)等这几者之间的对应关系。而且,数据控制部403在判断使哪个进程的数据移动至多值度相对较高的块的情况下,会优先于通过类别为系统进程的进程存取的数据地,选择通过类别为用户进程的进程存取的数据。由此,能够将用户进程的数据优先于被存取的可能性较高的系统进程的数据地移动至多值度较高的块,故而能够进一步提高站在主机2的角度来看的SSD3的性能、乃至站在用户的角度来看的SSD3的性能。
图15的流程图表示由主机2执行的将所生成的进程的类别(用户进程/系统进程)通知SSD3的处理的步序。
在检测到主机2中生成新的进程的情况下(步骤S81为是),主机2的进程监视部41将所生成的进程的标识符、及该生成的进程的类别通知SSD3(步骤S82)。
图16的流程图表示由主机2及SSD3执行的进程数增减通知处理及数据移动处理的步序。
主机2的进程监视部41与进程管理部321共同管理正在主机2的处理器12上运行的总进程数的增减(步骤S91)。
若总进程数增加(步骤S92为是),则进程监视部41将表示总进程数增加的通知发送至SSD3(步骤S93)。
另一方面,若总进程数减少(步骤S94为是),则进程监视部41将表示总进程数减少的通知发送至SSD3(步骤S95)。
若SSD3的控制器4从主机2接收到表示总进程数增加的通知(步骤S101为是),则控制器4的主机要求处理部402使用数据控制部403,执行将多值度较低的块中所存储的数据移动至多值度相对较高的块的处理(步骤S102)。在步骤S102中,由主机要求处理部402对数据控制部403指示数据的移动,从而数据控制部403基于图11的进程数据管理表,优先于通过系统进程存取的数据(例如,通过系统进程写入至NAND闪速存储器5的数据、或者通过系统进程被实施从NAND闪速存储器5的读出或向NAND闪速存储器5的写入二者之一的数据)地,选择通过用户进程存取的数据(例如,通过用户进程写入至NAND闪速存储器5的数据、或者通过用户进程被实施从NAND闪速存储器5的读出或向NAND闪速存储器5的写入二者之一的数据)作为移动对象数据,并将该被选择的移动对象数据从多值度较低的块移动至多值度较高的块。
因此,能够在换出发生前,事先确保SLC用空闲块,从而能够减少换出所需的时间。结果,能够改善计算机系统1整体的性能。
若SSD3的控制器4从主机2接收到表示总进程数减少的通知(步骤S103为是),则控制器4的主机要求处理部402使用数据控制部403,执行将多值度较低的块中所存储的数据移动至多值度相对较高的块的处理(步骤S104)。在步骤S104中,由主机要求处理部402对数据控制部403指示数据的移动,从而数据控制部403基于图11的进程数据管理表,优先于通过系统进程存取的数据(例如,通过系统进程写入至NAND闪速存储器5的数据、或者通过系统进程被实施从NAND闪速存储器5的读出或向NAND闪速存储器5的写入二者之一的数据)地,选择通过用户进程存取的数据(例如,通过用户进程写入至NAND闪速存储器5的数据、或者通过用户进程被实施从NAND闪速存储器5的读出或向NAND闪速存储器5的写入二者之一的数据)作为移动对象数据,并将该被选择的移动对象数据从多值度较低的块移动至多值度较高的块。通过该数据的移动,NAND闪速存储器5的利用效率得到改善。
此外,在步骤S102中,执行了将多值度较低的块中所存储的数据移动至多值度相对较高的块的处理,但是例如也可以为在TLC块之间移动通过用户进程存取的数据(有效数据)。如上所述,该数据的移动是GC的一种形态。在这种情况下,同样地,分配通过数据的移动所生成的空闲块作为SLC用空闲块的话,能够为后续的换出做好准备。
同样地,在步骤S104中,例如也可以为在TLC块之间移动用户进程的数据(有效数据)。
图17的流程图表示由主机2及SSD3执行的总进程数通知处理及数据移动处理的步序。
主机2的进程监视部41与进程管理部321共同管理正在主机2的处理器12上运行的总进程数(步骤S111)。当总进程数增减,或从上次的通知起经过一定期间这样的通知条件成立时(步骤S112为是),进程监视部41将表示总进程数的信息发送至SSD3,而将总进程数通知SSD3(步骤S113)。
SSD3的控制器4从主机2接收表示总进程数的通知(步骤S121)。控制器4的主机要求处理部402将由主机2通知的总进程数与第1阈值加以比较,判定总进程数是否高于第1阈值(步骤S122)。
若总进程数高于第1阈值(步骤S122为是),则主机要求处理部402使用数据控制部403,执行将多值度较低的块中所存储的数据移动至多值度相对较高的块的处理(步骤S123)。在步骤S123中,由主机要求处理部402对数据控制部403指示数据的移动。然后,数据控制部403基于图11的进程数据管理表,优先于通过系统进程存取的数据(例如,通过系统进程写入至NAND闪速存储器5的数据、或者通过系统进程被实施从NAND闪速存储器5的读出或向NAND闪速存储器5的写入二者之一的数据)地,选择通过用户进程存取的数据(例如,通过用户进程写入至NAND闪速存储器5的数据、或者通过用户进程被实施从NAND闪速存储器5的读出或向NAND闪速存储器5的写入二者之一的数据)作为移动对象数据,并将该被选择的移动对象数据从多值度较低的块移动至多值度较高的块。
因此,能够在换出发生前,事先确保SLC用空闲块,从而能够减少换出所需的时间。结果,能够改善计算机系统1整体的性能。
若总进程数并不高于第1阈值(步骤S122为否),则主机要求处理部402将总进程数与第2阈值(<第1阈值)加以比较,判定总进程数是否低于第2阈值(步骤S124)。
若总进程数低于第2阈值(步骤S124为是),则主机要求处理部402使用数据控制部403,执行将多值度较低的块中所存储的数据移动至多值度相对较高的块的处理(步骤S125)。在步骤S125中,由主机要求处理部402对数据控制部403指示数据的移动。然后,数据控制部403基于图11的进程数据管理表,优先于通过系统进程存取的数据(例如,通过系统进程写入至NAND闪速存储器5的数据、或者通过系统进程被实施从NAND闪速存储器5的读出或向NAND闪速存储器5的写入二者之一的数据)地,选择通过用户进程存取的数据(例如,通过用户进程写入至NAND闪速存储器5的数据、或者通过用户进程被实施从NAND闪速存储器5的读出或向NAND闪速存储器5的写入二者之一的数据)作为移动对象数据,并将该被选择的移动对象数据从多值度较低的块移动至多值度较高的块。通过该数据的移动,NAND闪速存储器5的利用效率得到改善。
此外,在步骤S123中,执行了将多值度较低的块中所存储的数据移动至多值度相对较高的块的处理,但是例如也可以为在TLC块之间移动通过用户进程存取的数据(有效数据)。如上所述,该数据的移动是GC的一种形态。在这种情况下,同样地,分配通过数据的移动所生成的空闲块作为SLC用空闲块的话,能够为后续的换出做好准备。
同样地,在步骤S125中,例如也可以为在TLC块之间移动用户进程的数据(有效数据)。
另外,若由主机2将多个进程的结束通知SSD3,则SSD3的控制器4也可以从被通知已结束的进程中,优先于通过类别为系统进程的进程存取的数据地,选择通过类别为用户进程的进程存取的数据作为移动对象数据。
在这种情况下,图18的流程图所示的步序将会由SSD3的控制器4加以执行。
若由主机2将多个进程的结束通知SSD3,则SSD3的控制器4的主机要求处理部402对数据控制部403指示数据的移动。然后,数据控制部403基于图11的进程数据管理表,从被通知已结束的进程中,优先于系统进程的数据地,选择通过类别为用户进程的进程存取的数据(通过用户进程写入至NAND闪速存储器5的数据、或者通过用户进程被实施从NAND闪速存储器5的读出或向NAND闪速存储器5的写入二者之一的数据)作为移动对象数据(步骤S127)。
然后,数据控制部403执行将该移动对象数据移动至多值度相对较高的块的处理(步骤S128)。
参照图15的流程图、图16的流程图、图17的流程图及图18的流程图说明的主机2的处理是由构成为执行主机软件(存储器驱动器31、操作系统(OS)32、文件系统33、进程监视部41等)的处理器12来执行的。
(第4实施方式)
在第4实施方式中,由主机2将主机2的存储器13的使用量通知SSD3。在存储器13的使用量高于第3阈值的情况下,SSD3的控制器4进行数据的移动以备换出所用。该数据的移动是GC的一种形态。
另外,也可以为:在存储器13的使用量低于比第3阈值小的第4阈值的情况下,SSD3的控制器4同样进行数据的移动。该数据的移动也是GC的一种形态。在存储器13的使用量较少时,不易发生换出,因此来自主机2的数据的写入量相对较少。因此,通过在存储器13的使用量较少时进行数据的移动,能够不引起站在主机2的角度来看的SSD3的数据写入性能降低地,例如事先增加SLC的空闲块。
此外,主机2的存储器13的使用量可以由存储器13的总使用量来表示,也可以由存储器13的总使用量相对于存储器13的总存储器尺寸的比率来表示。
另外,第4实施方式中的SSD3的硬件构成及主机2的硬件构成与第1实施方式的SSD3及主机2相同,主机2的内部构成与图10中所说明的内部构成相同。
如上所述,主机2的进程监视部41知道分配给正在主机2上运行的进程的存储区域的尺寸。因此,进程监视部41将主机2的存储器13的使用量(存储器13的总使用量、或存储器13的总使用量相对于存储器13的总存储器尺寸的比率)通知SSD3。SSD3接收与主机2的存储器13的使用量相关的信息,并进行以下处理。
在主机2的存储器13的使用量多于第3阈值的情况下,SSD3的控制器4使多值度较低的块中所存储的数据移动至多值度相对较高的块。主机2的存储器使用量变多表示在不久的将来进行进程的换出的可能性较高。因此,通过预先创造出较低多值度用空闲块,能够以更短的时间进行进程的换出及换入。由此,能够进一步提高站在主机2的角度来看的SSD3的性能、乃至站在用户的角度来看的SSD3的性能。
另外,在主机2的存储器13的使用量少于第4阈值(<第3阈值)的情况下,SSD3的控制器4使多值度较低的块中所记录的数据移动至多值度相对较高的块。主机2的存储器使用量较少表示在不久的将来较少对SSD3进行存取的可能性较高。因此,通过创造出较低多值度用空闲块,能够改善NAND闪速存储器5的利用效率。
关于为了创造出空闲块而进行的将哪个进程的数据作为移动对象的判断,例如可以采用与此前所说明的各实施方式相同的方法来进行。
图19的流程图表示由主机2及SSD3执行的使用存储器量通知处理及数据移动处理的步序。
主机2的进程监视部41与进程管理部321共同管理主机2的存储器13的使用量(存储器13的总使用量、或存储器13的总使用量相对于存储器13的总存储器尺寸的比率)(步骤S131)。当存储器13的使用量增减,或从上次的通知起经过一定期间这样的通知条件成立时(步骤S132为是),进程监视部41将表示主机2的存储器13的使用量的信息(存储器13的总使用量、或存储器13的总使用量相对于存储器13的总存储器尺寸的比率)发送至SSD3,而将主机2的存储器13的使用量通知SSD3(步骤S133)。
SSD3的控制器4从主机2接收主机2的存储器13的使用量(存储器13的总使用量、或存储器13的总使用量相对于存储器13的总存储器尺寸的比率)(步骤S141)。控制器4的主机要求处理部402将由主机2通知的存储器13的使用量(存储器13的总使用量、或存储器13的总使用量相对于存储器13的总存储器尺寸的比率)与第3阈值加以比较,判定存储器13的使用量(存储器13的总使用量、或存储器13的总使用量相对于存储器13的总存储器尺寸的比率)是否高于第3阈值(步骤S142)。
若存储器13的使用量(存储器13的总使用量、或存储器13的总使用量相对于存储器13的总存储器尺寸的比率)高于第3阈值(步骤S142为是),则主机要求处理部402使用数据控制部403,执行将多值度较低的块中所存储的数据移动至多值度相对较高的块的处理(步骤S143)。在步骤S143中,由主机要求处理部402对数据控制部403指示数据的移动。然后,数据控制部403将数据从多值度较低的块移动至多值度较高的块。
若存储器13的使用量(存储器13的总使用量、或存储器13的总使用量相对于存储器13的总存储器尺寸的比率)并不高于第3阈值(步骤S142为否),则主机要求处理部402将存储器13的使用量(存储器13的总使用量、或存储器13的总使用量相对于存储器13的总存储器尺寸的比率)与第4阈值(<第3阈值)加以比较,判定存储器13的使用量(存储器13的总使用量、或存储器13的总使用量相对于存储器13的总存储器尺寸的比率)是否低于第4阈值(步骤S144)。
若存储器13的使用量(存储器13的总使用量、或存储器13的总使用量相对于存储器13的总存储器尺寸的比率)低于第4阈值(步骤S144为是),则主机要求处理部402使用数据控制部403,执行将多值度较低的块中所存储的数据移动至多值度相对较高的块的处理(步骤S145)。在步骤S145中,由主机要求处理部402对数据控制部403指示数据的移动。然后,数据控制部403将数据从多值度较低的块移动至多值度较高的块。
此外,在步骤S143中,执行了将多值度较低的块中所存储的数据移动至多值度相对较高的块的处理(GC的一种形态),但是例如也可以为执行在TLC块之间移动数据(有效数据)的处理(GC的一种形态)。在这种情况下,同样地,分配通过数据的移动所生成的空闲块作为SLC用空闲块的话,能够为后续的换出做好准备。
同样地,在步骤S145中,例如也可以为执行在TLC块之间移动数据(有效数据)的处理(GC的一种形态)。
参照图19的流程图说明的主机2的处理是由构成为执行主机软件(存储器驱动器31、操作系统(OS)32、文件系统33、进程监视部41等)的处理器12来执行的。
(第5实施方式)
在第5实施方式中,将表示通过接下来要发生的换出从主机2写入至SSD3的数据量的信息通知SSD3。例如,在存储器13的使用量高于第3阈值的情况下,SSD3的控制器4执行将多值度较低的块中所存储的数据移动至多值度相对较高的块的处理,以确保多值度较低的块具有与由主机2通知的数据量对应的闲置容量。
主机2的进程监视部41能够知道接下来要在主机2上进行的换出的对象进程。换出的对象进程例如为最终启动时刻最早的进程、或分配存储器尺寸最大的进程。因此,进程监视部41能够预测出通过接下来要发生的换出写入至SSD3的数据量。因此,进程监视部41将被预测为会通过接下来要发生的换出写入至SSD3的数据量通知SSD3。
收到通知的SSD3的控制器进行数据的移动,以使多值度较低的块空出被通知的量的闲置容量。由此,能够缩短换出所花费的时间,从而能够进一步提高站在主机2的角度来看的SSD3的性能、乃至站在用户的角度来看的SSD3的性能。
将哪个进程的数据作为移动对象的判断例如可以采用与此前所说明的各实施方式相同的方法来进行。
图20的流程图表示由主机2及SSD3执行的通知通过换出写入至SSD3的数据量的处理及数据移动处理的步序。
主机2的进程监视部41推定通过接下来要发生的换出写入至SSD3的数据量(步骤S151)。然后,进程监视部41将表示该推定出的数据量的信息发送至SSD3,而将该推定出的数据量通知SSD3(步骤S152)。
SSD3的控制器4从主机2接收该推定出的数据量的通知(步骤S161)。控制器4的主机要求处理部402对数据控制部403指示应该将多值度较低的块中所存储的数据移动至多值度相对较高的块,以确保多值度较低的块具有与该推定出的数据量对应的闲置容量。收到该指示的数据控制部403执行将多值度较低的块中所存储的数据移动至多值度相对较高的块的处理,以确保多值度较低的块具有与该推定出的数据量对应的闲置容量(步骤S162)。
此外,在步骤S162中,执行了将多值度较低的块中所存储的数据移动至多值度相对较高的块的处理,但是例如也可以为在TLC块之间移动数据(有效数据)。如上所述,该数据的移动是GC的一种形态。在这种情况下,同样地,分配通过数据的移动所生成的空闲块作为SLC用空闲块的话,能够为后续的换出做好准备。
图21的流程图表示由主机2及SSD3执行的通知使用存储器量/通过换出写入至SSD3的数据量的处理及数据移动处理的步序。
主机2的进程监视部41与进程管理部321共同管理主机2的存储器13的使用量(存储器13的总使用量、或存储器13的总使用量相对于存储器13的总存储器尺寸的比率)。然后,进程监视部41将表示主机2的存储器13的使用量的信息、及通过接下来要发生的换出写入至SSD3的推定数据量通知SSD3(步骤S153)。
SSD3的控制器4从主机2接收主机2的存储器13的使用量(存储器13的总使用量、或存储器13的总使用量相对于存储器13的总存储器尺寸的比率)、及通过接下来要发生的换出写入至SSD3的推定数据量(步骤S163)。
控制器4的主机要求处理部402将由主机2通知的存储器13的使用量(存储器13的总使用量、或存储器13的总使用量相对于存储器13的总存储器尺寸的比率)与第3阈值加以比较,判定存储器13的使用量(存储器13的总使用量、或存储器13的总使用量相对于存储器13的总存储器尺寸的比率)是否高于第3阈值(步骤S164)。
若存储器13的使用量(存储器13的总使用量、或存储器13的总使用量相对于存储器13的总存储器尺寸的比率)高于第3阈值(步骤S164为是),则主机要求处理部402对数据控制部403指示应该使用数据控制部403将多值度较低的块中所存储的数据移动至多值度相对较高的块,以确保多值度较低的块具有与被通知的推定数据量对应的闲置容量。收到该指示的数据控制部403执行将多值度较低的块中所存储的数据移动至多值度相对较高的块的处理,以确保多值度较低的块具有与该推定出的数据量对应的闲置容量(步骤S165)。
此外,在步骤S165中,执行了将多值度较低的块中所存储的数据移动至多值度相对较高的块的处理,但是例如也可以为在TLC块之间移动数据(有效数据)。如上所述,该数据的移动是GC的一种形态。在这种情况下,同样地,分配通过数据的移动所生成的空闲块作为SLC用空闲块的话,能够为后续的换出做好准备。
另外,由主机2将通过接下来要发生的换出从主机2写入至SSD3的数据量通知SSD3的处理不仅可以应用于第4实施方式,也可以应用于第1实施方式、第2实施方式或第3实施方式。例如,若对第1实施方式应用由主机2将通过换出从主机2写入至SSD3的数据量通知SSD3的处理,则也可以为:SSD3的控制器4判定出总进程数高于第1阈值后,将多值度较低的块中所存储的数据移动至多值度相对较高的块,以确保多值度较低的块具有与被通知的数据量相当的闲置容量。
另外,参照图20的流程图及图21的流程图说明的主机2的处理是由构成为执行主机软件(存储器驱动器31、操作系统(OS)32、文件系统33、进程监视部41等)的处理器12来执行的。
(第6实施方式)
在第6实施方式中,主机2的进程监视部41管理着各程序被启动的频度及这些程序的列表。进程监视部41将表示启动频度较高的程序的信息通知SSD3。某程序的启动频度例如可以由该程序在某基准期间内被启动的次数、或在从主机2的OS32的启动到结束为止的期间内该程序被启动的次数等来表示。也可以检测出在基准期间内被启动的次数(或在从OS32的启动到结束为止的期间被启动的次数)高于某阈值的程序作为启动频度较高的程序。
SSD3的控制器4执行将通过与由主机2通知的启动频度较高的程序对应的进程读出或写入的数据从多值度较高的块移动至多值度相对较低的块的处理。由此,能够缩短启动该程序所需的时间,从而能够高速地启动该程序。
执行将启动频度较高的程序的数据移动至多值度相对较低的块的处理的时机并不限定于此,例如,可以为判定出由主机2通知的总进程数低于第2阈值后,也可以为被主机2通知总进程数减少后,或者还可以为判定出主机存储器的使用量低于第4阈值后。
另外,SSD3的控制器4使多值度较低的块的数据移动至多值度较高的块时,也可以优先选择启动频度较低的程序的数据作为移动对象数据。
此外,第6实施方式中的SSD3的硬件构成及主机2的硬件构成与第1实施方式的SSD3及主机2相同,主机2的内部构成与图10中所说明的内部构成相同。
以下,对第6实施方式的数据移动处理具体地进行说明。
如上所述,主机2的进程监视部41管理着正在主机2上运行的进程与哪个程序对应。程序反复启动及结束,每次都会生成、废除进程。
在进程的标识符中,进程ID是每次生成进程都会被分配不同的数值的,但对应的程序、例如程序名是相同的。因此,进程监视部41通过预先记录所生成的进程与哪个程序对应,能够知道被频繁启动的程序。因此,进程监视部41将被频繁启动的程序、即启动频度较高的程序通知SSD3。
SSD3的控制器4使用图11的进程数据管理表,管理所生成的各进程的标识符、以及与通过所生成的各进程读出或写入的数据对应的地址范围等这几者之间的对应关系。进而,SSD3的控制器4对照各进程标识符与哪个程序对应,而将它们记录至图11的进程数据管理表中。然后,控制器4选择与由进程监视部41通知的被频繁启动的程序对应的进程所存取(读出或写入)的数据作为移动对象数据,并将该移动对象数据从多值度较高的块移动至多值度相对较低的块。由此,能够将被用户或系统频繁启动的程序的数据集中于多值度较低的块,从而能够进一步提高站在主机2的角度来看的SSD3的性能、乃至站在用户的角度来看的SSD3的性能。
另外,在选择其他各实施方式中所说明的数据移动处理对象的进程时,控制器4也可以不选择由进程监视部41通知的被频繁启动的程序作为应该从多值度较低的块移动至多值度较高的块的移动对象数据。例如也可以为:判定出在主机2上运行的总进程数高于第1阈值后,或判定出主机2的存储器13的使用量高于第4阈值后,控制器4基于图11的进程数据管理表,从与除由主机2通知的启动频度较高的程序以外的其他程序对应的进程当中,选择应该移动数据的进程,然后使通过该被选择的进程读出或写入的数据从多值度较低的块移动至多值度较高的块。
由此,用户或系统频繁启动的程序的数据记录于多值度较低的块中的状态得以维持,故而能够进一步提高站在主机2的角度来看的SSD3的性能、乃至站在用户的角度来看的SSD3的性能。
图22的流程图表示由主机2及SSD3执行的通知被频繁启动的程序的处理及数据移动处理的步序。
主机2的进程监视部41检测被频繁启动的程序(步骤S171)。进程监视部41将表示所检测出的程序、即启动频度较高的程序的信息发送至SSD3,而将启动频度较高的程序通知SSD3(步骤S172)。
SSD3的控制器4从主机2接收表示启动频度较高的程序的信息。然后,控制器4的主机要求处理部402对数据控制部403指示应该将通过启动频度较高的程序存取的数据移动至多值度相对较低的块。收到该指示的数据控制部403基于图11的进程数据管理表,执行将通过与由主机2通知的启动频度较高的程序对应的进程读出或写入的数据从多值度较高的块移动至多值度相对较低的块的处理(步骤S173)。
参照图22的流程图说明的主机2的处理是由构成为执行主机软件(存储器驱动器31、操作系统(OS)32、文件系统33、进程监视部41等)的处理器12来执行的。
综合以上说明,根据本第1实施方式~第6实施方式,由主机2将与主机2的内部状态相关的信息(总进程数、总进程数的增加或减少、所生成的各进程的标识符、所生成的各进程的类别、被结束的进程的标识符、被赋予有要求起源进程的标识符的读出/写入要求、主机存储器的使用量、通过接下来要发生的换出写入至SSD3的数据量、被频繁地启动的程序等等)通知SSD3,而基于该信息,控制多值水平互不相同的块之间的数据移动或用于GC的数据移动这样的SSD3的内部动作。
通过像这样将主机2的状态变化用于SSD3的内部控制,能够提高站在主机2的角度来看的SSD3的性能、乃至站在用户的角度来看的SSD3的性能。另外,能够谋求SSD3内部的NAND闪速存储器5的利用效率的改善。
此外,这里,将通知主机2的内部状态的处理、及基于由主机2通知的内部状态的数据移动处理在第1实施方式~第6实施方式中各自分开进行了说明,但是这些实施方式的处理可以适当组合起来使用。另外,也可以利用兼具第1实施方式~第6实施方式中任意2个以上实施方式的构成的构成。
另外,对SSD3实施的主机2的状态的通知可以采用依照各种各样的标准规格的方法,也可以采用标准规格以外的方法。
对本发明的若干实施方式进行了说明,但这些实施方式仅仅是作为例子而提出的,并非意图限定发明的范围。这些新颖的实施方式能够以其他各种各样的方式加以实施,在不脱离发明主旨的范围内,可以进行各种省略、替换、变更。这些实施方式及它们的变形包含在发明的范围及主旨中,并且包含在权利要求书所记载的发明及它等同的范围内。
[符号的说明]
2 主机
3 SSD(存储装置)
4 控制器
5 NAND闪速存储器
31 存储器驱动器
32 操作系统
33 文件系统
321 进程管理部
41 进程监视部
42 过滤器驱动器
402 主机要求处理部
403 数据控制部

Claims (11)

1.一种存储装置,能够连接于主机,且具备:
非易失性存储器,包含多个块;及
控制器,以电连接于所述非易失性存储器,而控制所述非易失性存储器的方式构成;
所述控制器构成为,
从所述主机接收表示正在所述主机上运行的总进程数的信息,
判定出所述总进程数高于第1阈值后,执行将所述非易失性存储器的至少一个块中所存储的数据移动至所述非易失性存储器的其他至少一个块的处理。
2.根据权利要求1所述的存储装置,其中所述多个块各自被选择性地用作表示一个存储单元中所存储的比特数的多值度互不相同的多种块中的任一种,且
所述控制器构成为,判定出所述总进程数高于所述第1阈值后,执行将多值度较低的块中所存储的数据移动至多值度相对较高的块的处理。
3.根据权利要求1所述的存储装置,其中所述控制器构成为,
从所述主机接收表示所述主机中所生成的各进程的标识符及类别的信息、以及各自被赋予有要求写入数据的进程的标识符的各写入要求,所述类别表示所述生成的各进程是系统进程还是用户进程,
使用第1管理表,管理所述生成的各进程的标识符、所述生成的各进程的类别、及与通过所述生成的各进程写入的数据对应的地址范围这几者之间的对应关系,
判定出所述总进程数高于所述第1阈值后,基于所述第1管理表,优先于通过类别为所述系统进程的进程写入至所述非易失性存储器的数据地,选择通过类别为所述用户进程的进程写入至所述非易失性存储器的数据作为移动对象数据,并执行将所述移动对象数据从存储有所述移动对象数据的块移动至其他块的处理。
4.根据权利要求3所述的存储装置,其中所述多个块各自被选择性地用作表示一个存储单元中所存储的比特数的多值度互不相同的多种块中的任一种,且
所述控制器构成为,执行将所述移动对象数据从多值度较低的块移动至多值度相对较高的块的处理。
5.一种计算机系统,具备包含处理器及存储器的计算机、以及存储装置,且
所述处理器构成为,执行将正在所述处理器上运行的总进程数通知所述存储装置的处理,
所述存储装置具备:
非易失性存储器,包含多个块;及
控制器,以电连接于所述非易失性存储器,而控制所述非易失性存储器的方式构成;且
所述控制器构成为,
判定出由所述计算机通知的所述总进程数高于第1阈值后,执行将所述非易失性存储器的至少一个块中所存储的数据移动至所述非易失性存储器的其他至少一个块的处理。
6.根据权利要求5所述的计算机系统,其中所述多个块各自被选择性地用作表示一个存储单元中所存储的比特数的多值度互不相同的多种块中的任一种,且
所述控制器构成为,判定出所述总进程数高于所述第1阈值后,执行将多值度较低的块中所存储的数据移动至多值度相对较高的块的处理。
7.根据权利要求5所述的计算机系统,其中所述处理器构成为,将所述计算机中所生成的各进程的标识符及类别的信息、以及各自被赋予有要求写入数据的进程的标识符的各写入要求发送至所述存储装置,所述类别表示所述生成的各进程是系统进程还是用户进程;且
所述控制器构成为,
使用第1管理表,管理所述生成的各进程的标识符、所述生成的各进程的类别、及与通过所述生成的各进程写入的数据对应的地址范围这几者之间的对应关系,
判定出所述总进程数高于所述第1阈值后,基于所述第1管理表,优先于通过类别为所述系统进程的进程写入至所述非易失性存储器的数据地,选择通过类别为用户进程的进程写入至所述非易失性存储器的数据作为移动对象数据,并执行将所述移动对象数据从存储有所述移动对象数据的块移动至其他块的处理。
8.根据权利要求7所述的计算机系统,其中所述多个块各自被选择性地用作表示一个存储单元中所存储的比特数的多值度互不相同的多种块中的任一种,且
所述控制器构成为,执行将所述移动对象数据从多值度较低的块移动至多值度相对较高的块的处理。
9.根据权利要求5所述的计算机系统,其中所述处理器构成为,将所述计算机的所述存储器的使用量通知所述存储装置,且
所述控制器构成为,判定出所述计算机的所述存储器的使用量高于第3阈值后,执行将所述非易失性存储器的至少一个块中所存储的数据移动至所述非易失性存储器的其他至少一个块的处理。
10.根据权利要求9所述的计算机系统,其中所述处理器构成为,将通过接下来要发生的进程的换出写入至所述存储装置的数据量通知所述存储装置,且
所述计算机系统构成为,判定出所述计算机的所述存储器的使用量高于所述第3阈值后,执行将所述非易失性存储器的至少一个块中所存储的数据移动至所述非易失性存储器的其他至少一个块的处理,以确保与被通知的所述数据量对应的闲置容量。
11.根据权利要求5所述的计算机系统,其中所述处理器构成为执行如下处理:将所述计算机中所生成的各进程的标识符通知所述存储装置;将各自被赋予有要求读出或写入数据的进程的标识符的各读出/写入要求发送至所述存储装置;及将启动频度较高的程序通知所述存储装置;且
所述控制器构成为,
使用第1管理表,管理所述生成的各进程的标识符、及与通过所述生成的各进程读出或写入的数据对应的地址范围这两者之间的对应关系,
基于所述第1管理表,执行将通过与所述启动频度较高的程序对应的进程读出或写入的数据从多值度较高的块移动至多值度相对较低的块的处理。
CN201810801383.0A 2018-03-22 2018-07-20 存储装置及计算机系统 Active CN110297780B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2018-054918 2018-03-22
JP2018054918A JP6968016B2 (ja) 2018-03-22 2018-03-22 ストレージデバイスおよびコンピュータシステム

Publications (2)

Publication Number Publication Date
CN110297780A CN110297780A (zh) 2019-10-01
CN110297780B true CN110297780B (zh) 2023-08-25

Family

ID=67983633

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810801383.0A Active CN110297780B (zh) 2018-03-22 2018-07-20 存储装置及计算机系统

Country Status (5)

Country Link
US (2) US10871920B2 (zh)
JP (1) JP6968016B2 (zh)
KR (1) KR102094236B1 (zh)
CN (1) CN110297780B (zh)
TW (1) TWI682279B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11023150B2 (en) 2019-07-01 2021-06-01 International Business Machines Corporation Block mode toggling using hybrid controllers
US11768701B2 (en) * 2019-09-17 2023-09-26 Western Digital Technologies, Inc. Exception analysis for data storage devices
CN113590509B (zh) * 2020-04-30 2024-03-26 华为技术有限公司 一种页交换的方法、存储系统和电子设备
JP7490469B2 (ja) 2020-06-25 2024-05-27 キオクシア株式会社 ストレージデバイス、ストレージシステム及び制御方法
US11907539B2 (en) * 2020-11-20 2024-02-20 Samsung Electronics Co., Ltd. System and method for stream based data placement on hybrid SSD
CN112559392B (zh) * 2020-12-23 2023-08-15 深圳大普微电子科技有限公司 一种加速读存储介质的方法、读加速硬件模块及存储器
US20220374216A1 (en) * 2021-05-20 2022-11-24 Lenovo (United States) Inc. Method of manufacturing information processing apparatus and mobile computer
CN113504994B (zh) * 2021-07-26 2022-05-10 上海遁一信息科技有限公司 一种内存池性能弹性伸缩的实现方法及系统
CN114201233A (zh) * 2021-11-18 2022-03-18 成都网思科平科技有限公司 一种基于快照参照的减少进程模块加载数据存储的方法
US11977739B2 (en) 2022-09-01 2024-05-07 Western Digital Technologies, Inc. Handling write data burst for improved performance and resource usage
US11960742B1 (en) * 2022-10-14 2024-04-16 Oracle International Corporation High-performance, block-level fail atomicity on byte-level non-volatile media

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102473136A (zh) * 2010-05-31 2012-05-23 松下电器产业株式会社 存储器管理装置、存储器管理方法、存储器管理程序、记录存储器管理程序的可由计算机读取的记录介质以及集成电路
CN106104485A (zh) * 2014-03-10 2016-11-09 微软技术许可有限责任公司 针对多进程应用的动态资源管理

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078794B2 (en) * 2000-01-06 2011-12-13 Super Talent Electronics, Inc. Hybrid SSD using a combination of SLC and MLC flash memory arrays
US7594128B2 (en) * 2004-08-04 2009-09-22 Hewlett-Packard Development Company, L.P. Systems and methods to determine processor utilization
JP4805696B2 (ja) 2006-03-09 2011-11-02 株式会社東芝 半導体集積回路装置およびそのデータ記録方式
JP2008152464A (ja) 2006-12-15 2008-07-03 Toshiba Corp 記憶装置
US8627029B2 (en) * 2007-03-08 2014-01-07 Sandisk Il Ltd. Methods for managing files according to application
TW200841343A (en) * 2007-04-02 2008-10-16 Apacer Technology Inc A data storage device consisting of NAND (Not-AND) flash memory and its data storing method
KR101085393B1 (ko) * 2008-12-24 2011-11-21 주식회사 코아로직 복수의 프로세스를 멀티태스킹하기 위한 명령 실행 방법 및장치
JP2010266962A (ja) * 2009-05-12 2010-11-25 Toshiba Storage Device Corp 記憶装置、その制御方法及びその記憶装置を備える電子装置
US8402214B2 (en) * 2009-09-16 2013-03-19 Hitachi, Ltd. Dynamic page reallocation storage system management
JP5066209B2 (ja) * 2010-03-18 2012-11-07 株式会社東芝 コントローラ、データ記憶装置、及びプログラム
JP2012033002A (ja) 2010-07-30 2012-02-16 Toshiba Corp メモリ管理装置およびメモリ管理方法
JP5066241B2 (ja) * 2010-09-24 2012-11-07 株式会社東芝 メモリシステム
US8537613B2 (en) 2011-03-31 2013-09-17 Sandisk Technologies Inc. Multi-layer memory system
TWI471862B (zh) 2011-08-19 2015-02-01 Silicon Motion Inc 快閃記憶體控制器
US20170017406A1 (en) * 2015-07-14 2017-01-19 HGST Netherlands B.V. Systems and methods for improving flash-oriented file system garbage collection
US9916248B2 (en) * 2013-12-12 2018-03-13 Hitachi, Ltd. Storage device and method for controlling storage device with compressed and uncompressed volumes and storing compressed data in cache
US9928169B2 (en) * 2014-05-07 2018-03-27 Sandisk Technologies Llc Method and system for improving swap performance
US10452280B2 (en) * 2014-10-03 2019-10-22 International Business Machines Corporation Hybrid storage system employing reconfigurable memory
JP2016170583A (ja) * 2015-03-12 2016-09-23 株式会社東芝 メモリシステムおよび情報処理システム
US20160283125A1 (en) * 2015-03-25 2016-09-29 Kabushiki Kaisha Toshiba Multi-streamed solid state drive
TWI672706B (zh) * 2015-12-14 2019-09-21 南韓商愛思開海力士有限公司 記憶體儲存裝置及其操作方法
KR102259868B1 (ko) * 2015-12-17 2021-06-01 에스케이텔레콤 주식회사 메모리제어장치 및 메모리제어장치의 동작 방법
US11169707B2 (en) * 2016-01-22 2021-11-09 Netapp, Inc. Garbage collection pacing in a storage system
US10235079B2 (en) * 2016-02-03 2019-03-19 Toshiba Memory Corporation Cooperative physical defragmentation by a file system and a storage device
US10185658B2 (en) * 2016-02-23 2019-01-22 Sandisk Technologies Llc Efficient implementation of optimized host-based garbage collection strategies using xcopy and multiple logical stripes
US20170249092A1 (en) * 2016-02-25 2017-08-31 Canon Kabushiki Kaisha Apparatus having volatile memory, memory control method, and storage medium
US10739996B1 (en) * 2016-07-18 2020-08-11 Seagate Technology Llc Enhanced garbage collection
KR102550343B1 (ko) 2016-07-27 2023-07-03 삼성전자주식회사 솔리드 스테이트 드라이브 장치 및 그것의 동작 방법
TWI615710B (zh) * 2016-12-14 2018-02-21 群聯電子股份有限公司 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元
TWI602061B (zh) * 2017-03-16 2017-10-11 群聯電子股份有限公司 資料寫入方法、記憶體儲存裝置與記憶體控制電路單元
TWI615711B (zh) * 2017-03-28 2018-02-21 群聯電子股份有限公司 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
US11048624B2 (en) * 2017-04-25 2021-06-29 Samsung Electronics Co., Ltd. Methods for multi-stream garbage collection
US10496297B2 (en) * 2017-11-21 2019-12-03 Micron Technology, Inc. Data categorization based on invalidation velocities
US10713158B2 (en) * 2018-06-28 2020-07-14 Western Digital Technologies, Inc. Non-volatile storage system with dynamic allocation of applications to memory based on usage monitoring

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102473136A (zh) * 2010-05-31 2012-05-23 松下电器产业株式会社 存储器管理装置、存储器管理方法、存储器管理程序、记录存储器管理程序的可由计算机读取的记录介质以及集成电路
CN106104485A (zh) * 2014-03-10 2016-11-09 微软技术许可有限责任公司 针对多进程应用的动态资源管理

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
极小嵌入式系统中闪存转换层的设计与实现;任小平等;《成都大学学报(自然科学版)》;20170630(第02期);全文 *

Also Published As

Publication number Publication date
CN110297780A (zh) 2019-10-01
US20210072923A1 (en) 2021-03-11
KR102094236B1 (ko) 2020-04-23
US10871920B2 (en) 2020-12-22
KR20190111714A (ko) 2019-10-02
TW201941060A (zh) 2019-10-16
US20190294365A1 (en) 2019-09-26
JP2019168822A (ja) 2019-10-03
TWI682279B (zh) 2020-01-11
JP6968016B2 (ja) 2021-11-17

Similar Documents

Publication Publication Date Title
CN110297780B (zh) 存储装置及计算机系统
US11669444B2 (en) Computing system and method for controlling storage device
US11467955B2 (en) Memory system and method for controlling nonvolatile memory
TWI674502B (zh) 記憶體系統及控制方法
CN106874217B (zh) 存储器系统及控制方法
CN106874211B (zh) 存储器系统及非易失性存储器的控制方法
US10761731B2 (en) Array controller, solid state disk, and method for controlling solid state disk to write data
US9990277B2 (en) System and method for efficient address translation of flash memory device
US11237742B2 (en) Apparatus and method for controlling data stored in memory system
US11042305B2 (en) Memory system and method for controlling nonvolatile memory
US11023132B2 (en) Electronic device, computer system, and control method
US20210240667A1 (en) User device including storage device and trim management method thereof
EP4287028A1 (en) Storage device providing high purge performance and memory block management method thereof
CN117149052A (zh) 提供高清除性能的存储设备及其存储块管理方法
CN113900583A (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: Tokyo

Applicant after: TOSHIBA MEMORY Corp.

Address before: Tokyo

Applicant before: Pangea Co.,Ltd.

Address after: Tokyo

Applicant after: Kaixia Co.,Ltd.

Address before: Tokyo

Applicant before: TOSHIBA MEMORY Corp.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20220214

Address after: Tokyo

Applicant after: Pangea Co.,Ltd.

Address before: Tokyo

Applicant before: TOSHIBA MEMORY Corp.

GR01 Patent grant
GR01 Patent grant