CN110377224A - 具有主机启动缓存区刷新的大容量存储设备 - Google Patents

具有主机启动缓存区刷新的大容量存储设备 Download PDF

Info

Publication number
CN110377224A
CN110377224A CN201910191216.3A CN201910191216A CN110377224A CN 110377224 A CN110377224 A CN 110377224A CN 201910191216 A CN201910191216 A CN 201910191216A CN 110377224 A CN110377224 A CN 110377224A
Authority
CN
China
Prior art keywords
buffer area
memory
host
solid state
volatile
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.)
Pending
Application number
CN201910191216.3A
Other languages
English (en)
Inventor
尚卡尔·纳塔拉詹
R·特里维迪
S·纳加拉坚
S·纳塔拉詹
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of CN110377224A publication Critical patent/CN110377224A/zh
Pending legal-status Critical Current

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/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/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
    • 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/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/0673Single storage device
    • G06F3/068Hybrid storage device
    • 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

Landscapes

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

Abstract

描述了一种装置,其包括具有非易失性缓冲存储器和非易失性主存储存储器的固态驱动器。非易失性缓冲存储器用于每个单元存储比非易失性主存储存储器更少的位。固态驱动器包括控制器,用于响应于从主机接收的缓冲区刷新命令来刷新缓冲区。控制器将使固态驱动器在缓冲区的内容的较小部分的刷新之间服务于从主机新接收的读/写请求,所述缓冲区的内容的较小部分的刷新被执行以服务缓冲区刷新命令。

Description

具有主机启动缓存区刷新的大容量存储设备
技术领域
本发明的领域一般涉及电气工程领域,更具体地,涉及具有主机启动缓冲区刷新的大容量存储设备。
背景技术
随着计算系统变得越来越强大,它们的存储需要继续增长。因此,非常需要能够以最小延迟响应读/写请求同时将功耗水平保持在合理限度内的大容量存储设备。遗憾的是,高性能和低功耗难以实现,因为导致更快操作的设计改进(例如类似高速缓存的缓冲区)也导致很少或没有时间将设备置于低功耗睡眠模式(因为在设备空闲时间期间将缓冲区刷新到更大的存储空间。
附图说明
通过以下结合附图的详细描述,可以更好地理解本发明,其中:
图1示出了固态驱动器;
图2a和图2b比较了现有技术和改进的刷新特性;
图3示出了可由SSD维护的日志,所述SSD支持主机侧发起的刷新命令;
图4示出了用于响应主机侧发起的刷新命令的过程;
图5示出了用于响应主机侧发起的取消刷新命令的过程。
图6示出了示例性SSD标识数据结构;
图7示出了示例性计算系统。
具体实施方式
如本领域中已知的,不同的闪存技术每个单元存储不同数量的位。具体地,单级单元(SLC)每单元存储一位,多级单元(MLC)每单元存储两位,三级单元(TLC)每单元存储三位,而四级单元(QLC)每单元存储四位。而SLC单元仅能够每单元存储两个逻辑状态(“1”或“0”),MLC、TLC和QLC单元类型中的每一个(其可以被表征为不同类型的“多位”存储单元)极大地扩展了闪存设备的存储容量,因为可以在单个单元中存储两个以上的数字状态(例如,四个数字状态可以存储在MLC单元中,八个数字状态可以存储在TLC单元中并且十六个逻辑状态可以存储在QLC单元中。
这里,能够每个单元存储多于一个位的特定单元(例如,MLC单元、TLC单元或QLC单元中的任何一个)也可以以SLC模式操作。也就是说,因为这些单元能够每单元存储多于一个位,所以它们可以容易地用于每单元仅存储一个位。通常,单元可以存储的每个不同的逻辑状态是利用存储在单元内的不同电荷量来实现的。例如,QLC闪存单元能够存储十六个可单独辨别的电荷量,以便物理地实现一次存储四个位的能力。因为QLC单元被设计为存储十六种不同的电荷水平,所以它可以容易地在SLC模式下操作,其中它仅存储两种不同的电荷量。类似地,MLC和TLC单元也可以在SLC模式下操作,其中它们仅存储两种不同的电荷量。
多位单元的SLC模式通常具有比其多位操作更低的写访问时间。这里,如下面更详细描述的,SLC模式中的写入活动不需要针对多位模式精确。对于SLC模式而言,与多位写入操作相比,该较低精度足以转换为将数字信息写入单元所需的时间较少。因此,已经实现了混合架构闪存SSD,其中SSD的多位存储单元的一些部分被故意置于SLC模式以利用该速度优势。
图1示出了示例性混合SSD 101。如图1所示,SSD 101由许多多位存储单元102(可以用多个多位闪存半导体存储器芯片实现)组成。然而,多位存储单元102被划分为:1)单元103的第一分区,即使它们的基础技术能够进行多位操作(例如,MLC、TLC、QLC等),也是永久的或准永久性地置于操作的SLC模式;2)单元104的第二分区,其在SSD启动时最初以SLC模式操作,但是可以取决于用户存储需要切换到多位操作;3)单元的第三分区105,其在多位模式下永久或准永久操作。
当在SLC模式下操作时,单元的第一分区103和单元的第二分区104用于实现“快速高速缓存”或“缓冲区”,SSD 101的用户将观察到其具有与主多位存储单元105的写访问时间相比的更快写入访问时间。这里,例如,如果SDD 101接收到具有跨该突发的有效随机地址的写访问的突发,则写信息被写入到以SLC模式操作的第一和/或第二分区103、104的单元。通过这样做,更快地执行写入操作,并且主机系统(例如,与SSD耦合的计算机)从整个SSD 101获得更快的性能。
两个不同分区103、104对应于两种不同类型的SLC缓冲区:静态SLC缓冲区和动态SLC缓冲区。更具体地,第一分区103的单元对应于静态SLC缓冲区,而第二分区104的单元对应于动态SLC缓冲区。静态SLC缓冲区的单元103基本上是SSD中的“额外”存储单元(例如,将SSD 101的存储容量扩展超过其规定容量的单元)。这里,取决于实现,例如,在SSD控制器106执行的后台处理期间,可以随后将写入静态SLC缓冲区的单元103中的信息移动到主多位存储区域105。
在动态SLC缓冲区的情况下,不是像静态SLC缓冲区那样保留SSD的永久分区的额外容量区域,而是利用单元104实现SLC缓冲区以实现快速高速缓存缓冲区,单元104可以在SLC模式下操作,或者以多位模式操作作为主存储装置。这些单元104在哪种模式下操作(SLC模式或多位模式)取决于呈现给SSD 101的存储负载。
更具体地,动态SLC缓冲区的单元104最初(例如,在SSD设备启动时)被置于SLC模式,而主多位存储区域105的单元被置于其标称多位模式。然而,因为所述最大存储容量包括动态缓冲单元104处于多位模式时的容量(并因此保持其最大数据容量),所以一旦呈现给SSD的存储负载大致与主存储区域105的容量相当,与动态缓冲区相关联的单元104将开始切换到多位操作。
当达到该阈值时,将要写入SSD的任何附加新数据(不覆盖现有数据)以多位模式写入动态缓冲区中的单元104,这导致动态SLC缓冲区的大小缩小。当SSD 101存储的数据量高于和低于该阈值时,分配给动态SLC缓冲区的单元104将在SLC模式和多位模式之间来回转换。也就是说,如果在超过阈值之后,存储的数据量低于阈值,则任何“释放的”动态SLC单元(即,转换为多位模式的动态单元)可以转换回SLC模式以“重新捕获”以前丢失的动态SLC缓冲区大小。因此,动态SLC缓冲区的大小可以取决于SSD设备101正在存储的数据量而缩小和扩展。
写回操作或“刷新”对应于将静态或动态缓冲区103、104中的信息写回主多位存储区域105。可以将刷新视为数据到SSD(即使缓冲区103、104也是非易失性的)的正式承诺(“持久性”)。然而,在存储在静态和/或动态缓冲区103、104中的数据已被刷新到主多位存储器105之后,新接收的写请求可以直接写在已经刷新的缓冲区103、104中的数据块/页面上,新接收的写请求目标为与已被刷新的存储在缓冲区103、104中的数据的块/页不同的数据的块/页。也就是说,当缓冲区103、104中的数据已经保存在主多位存储区域105中时,数据由SSD 106正式保存,并且可以在缓冲区103、104中自由地写入而不会丢失用于客户的信息。
然而,问题是静态和动态缓冲区103、104的标称刷新操作。具体地,响应于仅当SSD106空闲时才启动SSD控制器106,静态和动态缓冲区103、104的内容当前被写回到主多位存储区域。因此,如果SSD 106被高度利用(在一时间段内接收到许多读/写请求),则SSD 106几乎从不空闲并且很少/没有机会将来自缓冲区103、104的信息刷新到主多位存储区域105。
这样,不在缓冲区103、104内的数据的块/页面必须被强制地写入较慢的主多位存储区域105/从较慢的主多位存储区域105读取。即使SSD 106观察到一些空闲时间和刷新操作可以受理,但是刷新操作本身可以消耗整个空闲时间。这样,SSD 106可能永远不会表现出真正的低功率睡眠状态。也就是说,当可能已经可以实现这种低功率状态时的机会花费在更高功率模式中,将缓冲区的数据写回主多位存储区域105。
一种解决方案是在主机的命令(例如,来自在主机上执行的应用、操作系统(OS)和/或虚拟机(VMM)软件和/或例如来自外围控制集线器硬件)下在SSD 106的正常活动状态期间交错刷新活动。也就是说,主机命令SSD在执行SSD定期接收的来自主机的读取和/或写入请求之间引入刷新操作。
图2a和图2b将传统方法与改进方法进行比较。这里,图2a示出了有效读/写活动的两个时间窗之间的潜在空闲时间201。值得注意的是,在活动读/写活动的窗口期间不执行刷新操作。因此,必须在非活动时间201期间(响应于内部SSD控制器命令)执行刷新操作,这阻止SSD进入低功率状态。相比之下,参考图2b,如果在标称业务活动的窗口内插入刷新操作,则设备可能能够观察延长的时间段,例如窗口202,这时设备没有标称业务或没有用于服务的刷新活动,因此,设备可以置于低功率无效状态。
根据各种实施例,可以通过来自主机的表达命令来启动缓冲区103、104的刷新。这里,例如,SSD耦合到的应用软件程序、操作系统(OS)软件程序和/或虚拟机监视器(VMM)软件程序和/或外围控制集线器硬件可以是主负载之一,主负载目前向SSD设备发送大量的读/写活动和/或直接观察正在发送到SSD的读/写活动流。利用例如其自身内部处理的内部知识,这样的软件/硬件可以识别当它不是绝对需要立即的SSD性能并且可以将缓冲区刷新命令“滑入(slip in)”到SSD时的时刻。
也就是说,更一般地,在主机侧更好地理解其对SSD性能的需求/需求的情况下,主机侧可以机会性地命令SSD刷新其缓冲区103、104。在有利的情况下,主机应用/OS/VMM软件和/或硬件能够在标称的读/写命令流中滑入足够的刷新命令,使得将实现SSD的延长的空闲时间,例如图2b中的时段202,其使得SSD被置于低功率无效状态。此外,在定期刷新缓冲区或至少部分刷新缓冲区的情况下,新写入请求可以覆盖的空闲缓冲区空间不存在的概率降低。
这样,主机能够发出具有连续改变的块和/或页面地址的写请求,其中这些写请求中较少的一些被强制进入主、较慢的多位存储装置105,因为不存在空闲缓冲区空间。从主机的角度来看,这增加了缓冲区大小和/或提供了更大百分比的以更快的SLC速度服务的写请求。此外,应用/OS/VMM可以例如智能地将刚写入的页面/块的读取放在指向发送到SSD的请求流中的不同页面/块(数据依赖性许可)的新写入之前,使得读取也有更大的机会从缓冲区提供服务。
图3涉及用于使主机与SSD的缓冲区刷新状态保持同步的机制。图3的机制可能特别适用于快速非易失性存储器(NVMe)兼容SSD。如本领域所公知的,NVMe是开放逻辑设备接口规范,用于访问附接到快速外围组件互连(PCIe)接口的非易失性存储介质。
当前的NVMe规范概述了保存在SDD中并由SSD写为“日志”的多个页面,所述日志记录SSD在其运行时间内的各种相关事件、观察、状态等。主机可以访问这些页面,可以查看日志以了解SSD的过去或当前状态或状况。
目前的NVMe规范概述了五个这样的日志:1)错误信息01h(用于记录SSD错误);2)SMART/健康信息02h(用于记录SSD正在接近SSD的其他相关状态/观察中的多个关键参数阈值中的任何一个的问题/事件);3)固件槽信息03h;4)供应商独特的SMART CAh—用于记录特定于SSD的关键参数阈值);以及,5)命令效果日志(05h)。这里,每个日志类型后面的值对应于NVMe中提供的日志的标识符。
图3呈现了针对NVMe规范的新建议日志,其中SSD记录了SSD的刷新活动/能力的事件、状态或其他相关特征。根据一个实施例,第一日志301用于在完成任何主机启动的缓冲区刷新时(“SLC缓冲区刷新完成日志”,下文中称为“完成缓冲区日志”)向主机报告,并且第二日志302(“供应商特定SLC缓冲区刷新”(下文称为“VS缓冲区日志”)用于定义SSD的缓冲区刷新能力和当前缓冲区刷新状态的参数。VS缓冲区日志302为不同的SSD制造商提供不同的缓冲区刷新特性。这里,针对完成缓冲区日志301的建议日志标识符是F2h,并且针对VS缓冲区日志302的建议日志标识符是F3h。
通过将“获取日志页面”命令指向SSD,主机可以访问日志301、302中的任一个,该命令还包括针对特定日志的日志标识符。响应于其接收到获取日志页面命令,SSD将返回所请求的日志(或其部分,例如,如果主机仅请求日志的特定字节)。日志301、302可以保存在SSD的非易失性存储器资源的保留区域中(例如,SSD的闪存芯片的存储容量的分区的部分或SSD的其他存储资源)或耦合到SSD控制器的易失性存储器,两者的某种组合等。
缓冲区刷新完成日志301记录针对响应于主机启动的缓冲区刷新命令而执行的每个完成的缓冲区刷新操作的时间戳。也就是说,当SSD响应于主机启动的缓冲区刷新命令而刷新其静态和动态缓冲区时,SSD将在缓冲区刷新完成日志301中记录完成的时间戳。
在各种实施例中,VS缓冲区日志302包括以下参数:1)SLC缓冲区311的最大(完整)大小,包括完全致力于缓冲时的静态和动态分量;2)可用的SLC缓冲区大小312,其指定SLC缓冲区的当前大小(由于动态缓冲区专用于主QLC操作,其大小可能随时减小);3)当前缓冲区刷新的完成%313,其指定在当前刷新操作启动时由缓冲区的大小规范化的当前刷新操作中已刷新的数据量(其他实施例可以规范化当前刷新操作启动时缓冲区的数据量);4)刷新的SLC缓冲数据314指定在当前刷新操作中已刷新的数据的总量;5)跨发送到SSD的所有刷新命令刷新315的数据的总量;6)经过的时间316,其记录完全刷新最后完全完成的刷新操作所需的时间量;7)一组状态位,包括:i)位317,用于指定SSD是否已取消最近接收的刷新命令;ii)位318,用于指定主机是否已取消最近接收的刷新命令;iii)位319,用于指定响应于已取消最近的刷新命令,SSD正在关闭刷新操作的过程中;iv)位320,用于指定当前刷新命令何时完成(这导致时间戳更新到缓冲区刷新完成日志);v)位321,用于指定当前正在执行最近接收的刷新命令(缓冲区当前正被刷新但尚未完成刷新);8)由主机发送给SSD的缓冲区刷新命令322的总数;9)由主机取消的缓冲区刷新命令323的总数;10)由SSD取消的主机发送的缓冲区刷新命令324的总数。
从VS刷新日志302的内容可以看出,通过日志302在SSD和主机之间传送各种统计和动态事件或状态变化。
图4示出了用于响应由主机发送的用于刷新缓冲区的内容的命令(缓冲区刷新启动命令)的基本SSD方法。如图4中所观察到的,SSD最初接收缓冲区刷新启动命令401。响应于该命令,SSD将数量(X)的数据页从缓冲区写入主多位存储区域402。在各种实施例中,复制页面的数量小于存储在缓冲区中的页面的数量,并且是主多位存储区域105中每个单元存储的位数的倍数。例如,如果主多位存储区域105由每单元存储4位的QLC技术组成,则第一刷新序列402将复制四页或四页的倍数到主多位存储区域105。
这里,如本领域所公知的,相同多位单元中的每个不同位通常被保留用于不同页面(例如,对于QLC单元的下(L)、上(U)、Xtra(X)和顶(T))。通过写入等于主存储区域105中的每个存储单元的位数的页数,激活任何特定单元所需的复杂内部闪存芯片信令被简化,以便理想地仅在刷新操作期间激活特定单元一次。在单个刷新序列中刷新一些页面,这些页面等于由某个整数计算的每个单元的位数,将该原理扩展到刷新数据的更多页面。
与针对整个刷新操作的第一次迭代的刷新特定数量X的页面相对应,SSD通过例如更新适当的日志来与主机同步403。例如,关于VS缓冲区日志302,SSD将更新%完成313和总刷新数据量314条目,启动用于当前刷新操作的计时器316,设置位321以指示当前刷新操作开启,并且递增已经由主机发送到SSD的刷新命令322的总数。
SSD还将关于可能需要更新的其他日志与主机同步。例如,如果SSD观察到内部错误,则可以更新上面提到的错误日志和/或如果正在接近SSD的临界阈值(例如,写入数据的总量、最大温度、最大电压),SSD可以更新上面提到的SMART/健康日志。在页面刷新的每次迭代中SSD可以进行的其他同步“检查”是:1)如果SSD已经从主机接收到施加适度SSD改变的一些命令(例如,以设置特定特征/特征),则确认命令但延迟执行/实现直到刷新完成;2)如果SSD已从主机接收到强制极端的SSD更改的某些命令(例如,针对SSD控制器的新固件下载、SSD的重新格式化、用于启动全面自检的命令),则SSD向主机发送中止命令的响应。
在SSD与主机403同步的情况下,SSD将在特定页数的刷新402或同步403期间接下来服务404由SSD接收的任何读/写请求。即,SSD暂时暂停刷新活动,以便它实际上并且当前处理已发布到SSD的任何读取请求或写入请求,例如,自刷新操作开始以来。注意,在任何迭代402期间仅刷新特定数量X的页面并且在每次迭代404中服务最近接收的读/写请求有效地实现了刷新活动402与标称读/写操作404的交错,如上面关于图2b所描述的。
在任何新接收的读/写请求被服务404之后,刷新序列重复用于刷新设定数量的页面402,与主机同步403和处理404自上次迭代接收的任何读/写请求的另一次迭代。这些循环继续,直到认为刷新缓冲区为止。在各种实施例中,缓冲区不需要关于静态和动态缓冲区103、104中的任一个或两者完全刷新。也就是说,只要刷新的缓冲区的内容对应于缓冲区的内容的某些高百分比(例如,90%、95%等),缓冲区就被认为是刷新的。在实施例中,直到静态SLC缓冲区中的所有页面都已被刷新,才刷新来自动态SLC缓冲区的页面。在其他实施例中,缓冲区被完全刷新(静态和动态缓冲区103、104中的100%页面被写回到主多位存储装置)。无论如何,注意到刷新的交错和服务新的读/写请求的迭代性质,至少在一些实施例中,可以表征为刷新在新接收的读/写请求的服务之间中的缓冲区的内容的小部分(例如,页数等于每个主存储单元可以存储的位数量的倍数)。。
当认为刷新了缓冲区时,执行最终同步过程以更新VS缓冲区日志302和缓冲区清除完成日志301。在各种实施例中,这包括设置位320以指示VS缓冲区记录中的刷新完成302并在缓冲区刷新日志301中写入相对应的时间戳。
图5示出了响应于SSD接收501来自主机的用于取消当前刷新操作(取消刷新命令)的命令而由SSD执行的另一过程。响应于接收到这样的请求,SSD将继续将数据从缓冲区写入多位存储区域105,直到在多位存储区域中到达闪存块的末尾(另外,设置VS缓冲区日志302的主机取消接收位319并且递增VS缓冲区日志302的总主机取消计数器323)。这里,假设每个闪存块有多个闪存页面,则应在页面边界的末尾到达闪存块的末尾。可能地,与在刷新迭代期间写入402的标准X页相比,在关闭刷新过程期间将写入少于X个页面。在多位存储区域105中到达闪存块的末尾之后,SSD通过更新日志302与主机同步。这里,具体地,VS缓冲区日志302的位318被设置为指示已成功完成刷新取消。还可以更新缓冲区完成日志301以反映在关闭刷新操作之前执行的任何量的刷新活动的完成。
这里,再次应用,OS和/或VMM软件(和/或底层硬件)知道准备发送到SSD或已经发送到SSD进行处理的读/写请求流,这样的软件/硬件可以例如识别出许多这样的较新/即将进行的读/写指向已经在SSD的缓冲区空间中的页/块,因此取消任何当前的刷新活动,因为这些新的、即将到来的请求不需要空闲缓冲区空间。。
NVMe规范还支持固件数据结构,其准许SSD识别其自身以及它可以执行的各种任务/功能(诸如主机发起的刷新命令)。图6示出了对NVMe规范的建议修改,其定义SSD标识数据结构信息以包括第一位601,其指定SSD是否支持主机发起的缓冲区刷新实施例,其已在上面详细描述,第二位602指定(SSD是否支持主机发起的刷新命令)SSD是否支持当前主机发起的刷新的主机发起的取消,而第三位603指示SSD是否支持VS缓冲区日志302中的%完成信息313的报告。
返回参考图1,在各种实施例中,如上所述,响应和实现主机启动的缓冲区刷新的改进功能主要由SSD的控制器106监督。控制器106可以用逻辑电路实现,该逻辑电路被设计为执行某种形式的(例如,固件(FW))程序代码(例如,微控制器、嵌入式处理器等)、定制硬连线逻辑电路或可编程逻辑电路(例如,FPGA或PLD)或其任何组合。而且,除了闪存之外的其他非易失性存储器技术可以存储每个单元多于一个位但是表现出比表现出每单元存储单个位时更慢的响应时间,本文的教导可以扩展到包括这种非易失性存储器技术的SSD。这种替代技术可能包括具有由硫属化物、电阻存储器(RRAM)、铁电存储器(FeRAM)、磁存储器(MRAM)等组成的存储单元的存储器技术。
最后,注意,上述教导可以应用于如下SSD:其仅包括静态SLC缓冲区或仅包括动态SLC缓冲区,或者包括每单元存储多位,其每个单元存储的位数比主存储区域105的单元少。这里,每个单元存储的位越少,单元越快,因此尽管上面的实施例强调针对缓冲区的每单元的单个位,但是本文的教导并不排除在缓冲区空间中每单元存储多于一个位的实施例(例如,缓冲区空间存储MLC,但主存储区是QLC)。
图7提供了计算系统700(例如,智能手机、平板计算机、膝上型计算机、台式计算机、服务器计算机等)的示例性描绘。如图7中所观察到的,基本计算系统700可以包括中央处理单元701(其可以包括例如多个通用处理核715_1至715_X)和设置在多核处理器或应用处理器上的主存储器控制器717、系统存储器702、显示器703(例如,触摸屏、平板)、本地有线点对点链路(例如,USB)接口704、各种网络I/O功能705(例如以太网接口和/或蜂窝调制解调器子系统)、无线局域网(例如,WiFi)接口706、无线点对点链路(例如,蓝牙)接口707和全球定位系统接口708、各种传感器709_1至709_Y、一个或多个摄像机710、电池711、电源管理控制单元712、扬声器和麦克风713以及音频编码器/解码器714。
应用处理器或多核处理器750可以包括其CPU 701内的一个或多个通用处理核715、一个或多个图形处理单元716、存储器管理功能717(例如,存储器控制器)和I/O控制功能718。通用处理核715通常执行计算系统的操作系统和应用软件。图形处理单元716通常执行图形密集型功能,以例如生成在显示器703上呈现的图形信息。存储器控制功能717与系统存储器702接合,以向/从系统存储器702写入/读取数据。功率管理控制单元712通常控制系统700的功耗。
触摸屏显示器703、通信接口704-707、GPS接口708、传感器709、摄像机710和扬声器/麦克风编解码器713、714中的每一个都可以被视为各种形式的相对于整个计算系统的I/O(输入和/或输出),在适当的情况下,还包括集成外围设备(例如,一个或多个摄像机710)。取决于实现,这些I/O组件中的各种可以集成在应用处理器/多核处理器750上,或者可以位于管芯外或应用处理器/多核处理器750的封装外。
计算系统还包括非易失性存储装置720,其可以是系统的大容量存储组件。这里,例如,具有主机侧发起的刷新命令能力的一个或多个SSD可以直接或者例如通过网络(例如,存储网络、局域网等)耦合到外围控制集线器718。
本发明的实施例可包括如上所述的各种过程。这些过程可以体现在机器可执行指令中。该指令可用于使通用或专用处理器执行某些过程。可替代地,这些过程可以由包含用于执行过程的硬连线逻辑电路或可编程逻辑电路(例如,FPGA、PLD)的特定/定制硬件组件来执行,或者由编程计算机组件和定制硬件组件的任何组合来执行。
还可以提供本发明的元件作为用于存储机器可执行指令的机器可读介质。机器可读介质可以包括但不限于软盘、光盘、CD-ROM和磁光盘、闪速存储器、ROM、RAM、EPROM、EEPROM、磁卡或光卡、传播介质或适用于存储电子指令的其他类型的介质/机器可读介质。例如,本发明可以作为计算机程序下载,该计算机程序可以通过载波或其他传播介质中体现的数据信号经由通信链路(例如,调制解调器或网络连接)从远程计算机(例如,服务器)传送到请求计算机(例如,客户端)。
在前述说明书中,已经参考本发明的特定示例性实施例描述了本发明。然而,显而易见的是,在不脱离所附权利要求中阐述的本发明的更广泛的精神和范围的情况下,可以对其进行各种修改和改变。因此,说明书和附图应被视为说明性的而非限制性的。

Claims (20)

1.一种装置,包括:
固态驱动器,其包括非易失性缓冲存储器和非易失性主存储存储器,所述非易失性缓冲存储器比所述非易失性主存储存储器每单元存储更少的位,所述固态驱动器包括控制器,所述控制器用于响应于从主机接收的缓冲区刷新命令而刷新缓冲区,所述控制器用于使所述固态驱动器在所述缓冲区的内容的较小部分的刷新之间服务于从所述主机新接收的读/写请求,所述缓冲区的内容的较小部分的刷新被执行以服务所述缓冲区刷新命令。
2.如权利要求1所述的装置,其中,所述非易失性缓冲存储器和所述非易失性主存储存储器由闪存单元组成。
3.如权利要求2所述的装置,其中,所述非易失性缓冲存储器由SLC闪存单元组成。
4.如权利要求3所述的装置,其中,所述主存储存储器由QLC存储单元组成。
5.如权利要求1所述的装置,其中,所述非易失性缓冲存储器由静态缓冲存储器和动态缓冲存储器组成。
6.如权利要求5所述的装置,其中,所述静态缓冲存储器和所述动态缓冲存储器二者都由SLC闪存单元组成。
7.如权利要求1所述的装置,其中,所述固态驱动器包括NVMe接口,所述缓冲区刷新命令是通过所述NVMe接口从所述主机接收的。
8.如权利要求1所述的装置,其中,所述控制器用于响应于从所述主机接收的取消刷新命令,使所述固态驱动器停止进一步刷新所述缓冲区。
9.如权利要求1所述的装置,其中,所述控制器用于更新日志以指示所述缓冲区刷新命令的完成。
10.如权利要求1所述的装置,其中,所述较小部分被确定为数量等于所述非易失性主存储存储器的每存储单元存储的位数的倍数的多个页。
11.一种装置,包括:
半导体芯片,其包括主机侧逻辑电路,所述主机侧逻辑电路用于向固态驱动器发送读/写请求流,并且在所述读/写请求流内向所述固态驱动器插入缓冲区刷新命令。
12.如权利要求11所述的装置,其中,所述主机侧逻辑电路是外围控制集线器的一部分。
13.如权利要求12所述的装置,其中,所述外围控制是通过NVMe接口与所述固态驱动器通信的。
14.一种计算系统,包括:
多个处理核;
主存储器;
主存储器控制器,其耦合在所述主存储器和所述多个处理核之间;
外围控制集线器,其耦合到固态驱动器,所述固态驱动器包括非易失性缓冲存储器和非易失性主存储存储器,所述非易失性缓冲存储器用于比所述非易失性主存储存储器每单元存储更少的位,所述固态驱动器包括控制器,所述控制器用于响应于从主机接收的缓冲区刷新命令而刷新缓冲区,所述控制器用于使所述固态驱动器在所述缓冲区的内容的较小部分的刷新之间服务于从所述主机新接收的读/写请求,所述缓冲区的内容的较小部分的刷新被执行以服务所述缓冲区刷新命令。
15.如权利要求14所述的计算系统,其中,所述固态驱动器包括NVMe接口,所述缓冲区刷新命令是通过所述NVMe接口从所述主机接收的。
16.如权利要求14所述的计算系统,其中,所述控制器用于响应于从所述主机接收的取消刷新命令,使所述固态驱动器停止进一步刷新所述缓冲区。
17.如权利要求14所述的计算系统,其中,所述控制器用于更新日志以指示所述缓冲区刷新命令的完成。
18.如权利要求14所述的计算系统,其中,所述较小部分被确定为数量等于所述非易失性主存储存储器的每个存储单元存储的位数的倍数的多个页面。
19.如权利要求14所述的计算系统,其中,所述非易失性缓冲存储器由SLC闪存单元组成,并且所述非易失性主存储存储器由每单元存储多于一位的闪存单元组成。
20.一种由固态驱动器执行的方法,包括:
从主机接收缓冲区刷新命令;
从所述主机接收读/写请求;
在所述读/写请求的相应服务之间刷新来自所述固态驱动器的缓冲区的内容的较小部分。
CN201910191216.3A 2018-04-13 2019-03-13 具有主机启动缓存区刷新的大容量存储设备 Pending CN110377224A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/953,367 2018-04-13
US15/953,367 US10877686B2 (en) 2018-04-13 2018-04-13 Mass storage device with host initiated buffer flushing

Publications (1)

Publication Number Publication Date
CN110377224A true CN110377224A (zh) 2019-10-25

Family

ID=65230987

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910191216.3A Pending CN110377224A (zh) 2018-04-13 2019-03-13 具有主机启动缓存区刷新的大容量存储设备

Country Status (3)

Country Link
US (1) US10877686B2 (zh)
CN (1) CN110377224A (zh)
DE (1) DE102019106126A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111597127A (zh) * 2020-05-19 2020-08-28 深圳忆联信息系统有限公司 混合slc缓存的方法、装置、计算机设备及存储介质

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US12008266B2 (en) 2010-09-15 2024-06-11 Pure Storage, Inc. Efficient read by reconstruction
KR102649169B1 (ko) * 2018-12-12 2024-03-20 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
KR20200142219A (ko) * 2019-06-12 2020-12-22 삼성전자주식회사 전자 장치 및 그의 저장 공간 이용 방법
WO2021155491A1 (en) * 2020-02-04 2021-08-12 Qualcomm Incorporated Data transfer with media transfer protocol (mtp) over universal serial bus (usb)
CN111696598B (zh) * 2020-06-12 2022-04-26 合肥沛睿微电子股份有限公司 存储装置及其低级格式化方法
US11693586B2 (en) * 2021-06-24 2023-07-04 Micron Technology, Inc. Over provisioning component for memory management

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7865658B2 (en) * 2007-12-31 2011-01-04 Sandisk Il Ltd. Method and system for balancing host write operations and cache flushing
US20120284544A1 (en) * 2011-05-06 2012-11-08 Microsoft Corporation Storage Device Power Management
US9697134B2 (en) * 2015-06-10 2017-07-04 Micron Technology, Inc. Memory having a static cache and a dynamic cache
US10725835B2 (en) * 2017-05-03 2020-07-28 Western Digital Technologies, Inc. System and method for speculative execution of commands using a controller memory buffer
US10872000B2 (en) * 2017-05-05 2020-12-22 Workato, Inc. Late connection binding for bots

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111597127A (zh) * 2020-05-19 2020-08-28 深圳忆联信息系统有限公司 混合slc缓存的方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
US10877686B2 (en) 2020-12-29
US20190042140A1 (en) 2019-02-07
DE102019106126A1 (de) 2019-10-17

Similar Documents

Publication Publication Date Title
CN110377224A (zh) 具有主机启动缓存区刷新的大容量存储设备
US11880602B2 (en) Data writing method and storage device
US8131915B1 (en) Modifying or overwriting data stored in flash memory
CN112035381B (zh) 一种存储系统及存储数据处理方法
CN111554340B (zh) 存取管理的方法、记忆装置、控制器、主装置和电子装置
CN109558457A (zh) 一种数据写入方法、装置、设备及存储介质
CN110058800A (zh) 具有根据存储设备容量利用编程的单元存储密度模式的存储设备
CN103810112A (zh) 一种非易失性内存系统及其管理方法
CN103106150B (zh) 一种实现存储系统自动精简配置和精简分配的方法
CN106227621A (zh) 基于逻辑卷管理精简卷的数据备份方法及系统
CN102279712A (zh) 一种适用于互联网存储系统的存储控制方法、系统和装置
TW201706848A (zh) 有效資料合併方法、記憶體控制器與記憶體儲存裝置
CN109473138A (zh) 存储装置及其刷新方法
CN109992203A (zh) 能够进行细粒度读取和/或写入操作的海量存储装置
CN109614055A (zh) 快照创建方法、装置、电子设备及机器可读存储介质
CN109471819A (zh) 为来自主机的读取请求提供短的读取响应时间的存储设备
CN108733580A (zh) 读取命令排程方法
CN109196473B (zh) 缓存管理方法、缓存管理器、共享缓存和终端
CN116400869A (zh) 闪存设备的坏块替换方法、闪存设备控制器及闪存设备
CN103885724A (zh) 基于相变存储器的存储系统结构及其损耗均衡算法
CN102890653B (zh) 指令执行方法、存储器控制器与存储器储存装置
CN113574497A (zh) 数据存储方法及存储芯片
CN101329702A (zh) 一种满足SystemC语法的多核处理器的先进先出队列单元组
CN105404468A (zh) 绿能与非固态硬盘应用及其驱动器
CN107391316A (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