CN117255986A - 随机写入固态驱动器工作负荷的动态程序挂起停用 - Google Patents
随机写入固态驱动器工作负荷的动态程序挂起停用 Download PDFInfo
- Publication number
- CN117255986A CN117255986A CN202280031659.6A CN202280031659A CN117255986A CN 117255986 A CN117255986 A CN 117255986A CN 202280031659 A CN202280031659 A CN 202280031659A CN 117255986 A CN117255986 A CN 117255986A
- Authority
- CN
- China
- Prior art keywords
- nand
- nand device
- command
- command queue
- counter value
- 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
Links
- 239000007787 solid Substances 0.000 title claims description 13
- 239000000758 substrate Substances 0.000 claims abstract description 17
- 238000000034 method Methods 0.000 claims description 57
- 238000005516 engineering process Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 230000004044 response Effects 0.000 description 8
- 238000004590 computer program Methods 0.000 description 6
- 239000003990 capacitor Substances 0.000 description 5
- 230000009849 deactivation Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 239000000463 material Substances 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000013403 standard screening design Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- JBRZTFJDHDCESZ-UHFFFAOYSA-N AsGa Chemical compound [As]#[Ga] JBRZTFJDHDCESZ-UHFFFAOYSA-N 0.000 description 2
- 229910001218 Gallium arsenide Inorganic materials 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000004146 energy storage Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 229910052594 sapphire Inorganic materials 0.000 description 2
- 239000010980 sapphire Substances 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 230000003116 impacting effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- LMESMTMYZUOGFN-STZQEDGTSA-N ram-388 Chemical compound C1C2=CC=C(OC)C(O)=C2[C@]23CCN(CCCCC)[C@H]1[C@]2(O)CCC(=O)C3 LMESMTMYZUOGFN-STZQEDGTSA-N 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0605—Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
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)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
电子装置的一个实施例可以包括一个或多个基板,以及耦合到该一个或多个基板的控制器,该控制器包括电路,该电路用于控制对包括多个NAND设备的基于NAND的存储介质的访问,确定多个NAND设备中的特定NAND设备的当前工作负荷是否是随机写入工作负荷,并且如果确定是这样的,则仅针对特定NAND设备停用程序挂起操作。公开并要求保护其它实施例。
Description
相关申请的交叉参考
本申请要求2021年4月27日提交的第17/241,976号美国专利申请的优先权,该专利申请的全部内容通过引用结合在本文中。
背景技术
某些NAND介质设备可以允许单个读取或单个编程操作命令(即,写入命令)一次访问NAND设备或NAND设备中的NAND阵列,其中,NAND阵列可以包括NAND串的阵列,并且其中,NAND串可以包括多个NAND单元。可以挂起编程操作以适应等待的读取操作,并且接下来在完成了所述读取操作后,可以恢复所述编程操作。这被称为编程操作的挂起-恢复。编程操作等待时间的数量级可以是大于读取操作等待时间的数量级,并且,为了改善读取操作等待时间,NAND固态驱动器(SSD)利用NAND设备的编程操作挂起-恢复(PSR)能力来挂起(暂停)对NAND阵列的进行中的编程操作,并且随后允许一个或多个排队的读取操作在恢复挂起的编程操作之前进行并完成。NAND设备或NAND设备中的NAND阵列的编程操作在NAND介质上执行写操作。可执行编程操作以用于编程(即,写入)到例如多电平单元(MLC)NAND的NAND上。还可以针对其它类型的NAND(例如,四电平单元(QLC)、三电平单元(TLC)、单电平单元(SLC)等)和其它类型的非易失性存储器来执行编程操作。
附图说明
在附图中通过示例而非限制的方式示出了本文所描述的材料。为了说明的简单和清楚,图中所示的要素不一定按比例绘制。例如,为了清楚起见,一些要素的尺寸可能相对于其他要素被夸大了。此外,在认为适当的情况下,在附图中重复参考标记以指示对应或类似的要素。在附图中:
图1是根据一个实施例的电子存储系统的一个示例的框图;
图2是根据一个实施例的电子装置的一个示例的框图;
图3A至3B是根据一个实施例的控制存储装置的方法的一个示例的流程图;
图4是根据一个实施例的控制存储装置的方法的另一示例的流程图;
图5是根据一个实施例的控制存储装置的方法的另一示例的流程图;
图6是将根据一个实施例的不同NAND操作时序与基线进行比较的说明性示图;
图7是根据一个实施例的计算系统的另一示例的框图;以及
图8是根据一个实施例的固态驱动器(SSD)设备的一个示例的框图。
具体实施方式
现在参考附图描述一个或多个实施例或实施方式。虽然讨论了具体的配置和布置,但是应当理解,这样做仅仅是为了说明的目的。相关领域的技术人员应当认识到,在不脱离本说明书精神和范围的情况下,也可以采用其它配置和布置。对于相关领域的技术人员来说,显然,本文所述的技术和/或布置也可以用于除本文所述之外的各种其它系统和应用中。
虽然以下描述阐述了可以在诸如片上系统(SoC)架构之类的架构中表明的各种实施方式,但是例如本文描述的技术和/或布置的实施方式可以不局限于特定架构和/或计算系统,并且可以由任何架构和/或计算系统实现以用于类似目的。例如,可以采用例如多个集成电路(IC)芯片和/或封装和/或各种计算设备和/或诸如机顶盒、智能电话等消费电子(CE)设备的各种架构来实现本文描述的技术和/或布置。此外,虽然以下描述可以阐述许多具体细节,诸如系统组件的逻辑实现、类型和相互关系、逻辑划分/集成选择等,但是也可以在没有这些具体细节的情况下实践所要求保护的主题。在其它情况下,为了不使本文公开的材料变得模糊,可能没有详细示出一些材料,例如控制结构和完整的软件指令序列。
本文公开的材料可以以硬件、固件、软件或其任意组合来实现。本文公开的材料也可以实现为存储在机器可读介质上的指令,其可以由一个或多个处理器读取和执行。机器可读介质可以包括用于以机器(例如,计算设备)可读的形式存储或传输信息的任何介质和/或机制。例如,机器可读介质可以包括只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光学存储介质;闪存设备;电、光、声或其它形式的传播信号(例如,载波、红外信号、数字信号等)等。
说明书中对“一个实现”、“实施方式”、“示例性实施方式”、“示例性实现”等的引用表明了所描述的实现或实施方式可以包括特定特征、结构或特性,但每个实施例可以不一定都包括该特定特征、结构或特性。此外,这样的短语不一定指代相同的实现或实施方式。此外,当结合一个实施例描述特定特征、结构或特性时,应当认为,无论是否在此明确描述过,结合其它实施方式实现这样的特征、结构或特性也是在本领域技术人员的知识范围内的。
本文描述的各种实施例可以包括存储器组件和/或到存储器组件的接口。这样的存储器组件可以包括易失性和/或非易失性(NV)存储器。易失性存储器可以是需要电力来维持由介质存储的数据状态的存储介质。易失性存储器的非限制性示例可以包括各种类型的RAM,诸如动态RAM(DRAM)或静态RAM(SRAM)。可用于存储器模块中的一种特定类型的DRAM是同步动态RAM(SDRAM)。NV存储器(NVM)可以是不需要电力来维持由介质存储的数据状态的存储介质。在一个实施例中,存储器设备可以包括块可寻址存储器设备,例如基于NAND技术的块可寻址存储器设备。在一个实施例中,存储器设备可以是或可以包括使用多阈值电平NAND快闪存储器或其它存储器的存储器设备。存储器设备可以指管芯本身和/或指封装的存储器产品。
参考图1,电子存储系统10的实施例可以包括基于NAND的存储介质12,其包括多个NAND设备,以及通信地耦合到基于NAND的存储介质12上的控制器11。例如,NAND设备可以对应于单个NAND管芯。控制器11可以包括电路13,用于确定多个NAND设备中的特定NAND设备的当前工作负荷是否是随机写入工作负荷,并且如果确定是这样的,则仅针对该特定NAND设备停用程序挂起操作。在一些实施例中,电路13还可以被配置成确定主机读取针对特定NAND设备来说是否是未决的,并且如果确定是这样的,则启用仅针对特定NAND设备的程序挂起操作。
例如,电路13可以被配置成维护多个NAND设备中的每一个的命令队列(例如,NAND设备队列(NDQ)),并且维护与命令队列中的每一个相关联的计数器值以对命令队列中的每一个的相应主机读取进行计数。在一些实施例中,电路13还可以被配置成在来自主机读取的命令被置于特定NAND设备的命令队列中时递增与特定NAND设备的命令队列相关联的计数器值,并且在来自主机读取的命令从特定NAND设备的命令队列移除时递减与特定NAND设备的命令队列相关联的计数器值。例如,电路13还可以被配置成如果与多个NAND设备中的特定NAND设备的命令队列相关联的计数器值为零,则确定该特定NAND设备的当前工作负荷是随机写入工作负荷,并且如果与该特定NAND设备的命令队列相关联的计数器值不为零,则确定该特定NAND设备的主机读取是未决的。在本文的任何实施例中,控制器11和基于NAND的存储介质12都可以并入到固态驱动器(SSD)中。
上述控制器11、基于NAND的存储介质12、电路13和其他系统组件中每一个的实施例都可以以硬件、软件或其任何合适的组合来实现。例如,硬件实现可以包括可配置逻辑,例如可编程逻辑阵列(PLA)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)或使用电路技术的固定功能逻辑硬件,例如专用集成电路(ASIC)、互补金属氧化物半导体(CMOS)或晶体管-晶体管逻辑(TTL)技术或其任意组合。控制器11的实施例可以包括通用控制器、专用控制器、存储器控制器、存储控制器、微控制器、通用处理器、专用处理器、中央处理器(CPU)、执行单元等。在一些实施例中,基于NAND的存储介质12、电路13和/或其他系统存储器可以位于包括控制器11的各种组件中或与其协同定位(例如,在同一管芯上)。
作为替选或者补充,这些组件的全部或部分可以在一个或多个模块中实现为存储在诸如RAM、ROM、可编程ROM(PROM)、固件、闪存等机器或计算机可读存储介质中的逻辑指令集,以由处理器或计算设备来执行。例如,执行组件的操作的计算机程序代码可以以一个或多个操作系统(OS)适用/适当的编程语言的任何组合来编写,所述编程语言包括面向对象的编程语言,诸如PYTHON、PERL、JAVA、SMALLTALK、C++、C#等,以及常规的过程编程语言,诸如“C”编程语言或类似的编程语言。例如,基于NAND的存储介质12、其他基于NAND的存储介质或其他系统存储器可以存储一组指令,当由控制器11执行时,该组指令可以使系统10实现系统10的一个或多个组件、特征或方面(例如,电路13,确定特定NAND设备的当前工作负荷是否是随机写入工作负荷,仅针对特定NAND设备停用程序挂起操作等)。
现在转看图2,电子装置14的一个实施例可以包括一个或多个基板15以及耦合到该一个或多个基板15上的控制器16。控制器16可以包括电路17,用于控制对包括多个NAND设备的基于NAND的存储介质的访问,确定多个NAND设备中的特定NAND设备的当前工作负荷是否是随机写入工作负荷,并且如果确定是这样的,则仅针对该特定NAND设备停用程序挂起操作。在一些实施例中,电路17还可以被配置成确定主机读取针对特定NAND设备是否是未决的,并且如果确定是这样的,则启用仅针对特定NAND设备的程序挂起操作。
例如,电路17可以被配置成维护多个NAND设备中的每一个的命令队列,并且维护与命令队列中的每一个相关联的计数器值,以对命令队列中的每一个的相应主机读取进行计数。在一些实施例中,电路17还可以被配置成在来自主机读取的命令被置于特定NAND设备的命令队列中时递增与特定NAND设备的命令队列相关联的计数器值,并且在来自主机读取的命令从特定NAND设备的命令队列移除时递减与特定NAND设备的命令队列相关联的计数器值。例如,电路17还可以被配置成如果与多个NAND设备中的特定NAND设备的命令队列相关联的计数器值为零,则确定该特定NAND设备的当前工作负荷是随机写入工作负荷,并且,如果与该特定NAND设备的命令队列相关联的计数器值不为零,则确定该特定NAND设备的主机读取是未决的。在本文的任何实施例中,控制器和基于NAND的存储介质可以并入到固态驱动器(SSD)中。
电路17的实施例可以在例如诸如本文所述的系统、设备、计算机、装置等中实现。更具体讲,电路17的硬件实施方式可以包括可配置逻辑,例如PLA、FPGA、CPLD,或者使用电路技术的固定功能逻辑硬件,例如ASIC、CMOS或TTL技术,或者其任意组合。作为替选或者作为补充,电路17也可以在一个或多个模块中被实现为存储在诸如RAM、ROM、PROM、固件、闪存等的机器或计算机可读存储介质中的逻辑指令集,以由处理器或计算设备来执行。例如,执行组件的操作的计算机程序代码可以以一种或多种OS可应用/适当的编程语言的任意组合来编写,所述编程语言包括面向对象的编程语言,诸如PYTHON、PERL、JAVA、SMALLTALK、C++、C#等,以及常规的过程编程语言,诸如“C”编程语言或类似的编程语言。
例如,电路17可以在半导体装置上实现,该半导体装置可以包括一个或多个基板15,其中,电路17耦合到该一个或多个基板15上。在一些实施例中,电路17可以至少部分地在半导体基板(例如,硅、蓝宝石、砷化镓等)上的可配置逻辑和固定功能硬件逻辑中的一个或多个中实现。例如,电路17可以包括晶体管阵列和/或其它集成电路组件,它们连接到具有位于基板15内的晶体管沟道区的基板15上。电路17和基板15之间的界面可以不是突变结。电路17也可以被认为包括在基板15的初始晶片上生长的外延层。
现在转看图3A至3B,控制存储装置的方法20的一个实施例可以包括在框21处控制对包括多个NAND设备的基于NAND的存储介质的访问,在框22处确定多个NAND设备中的特定NAND设备的当前工作负荷是否是随机写入工作负荷,并且,如果确定是这样的,则在框23处停用仅针对特定NAND设备的程序挂起操作。方法20的一些实施例还包括在框24处确定主机读取针对特定NAND设备是否是未决的,并且,如果确定是这样的,则在框25启用仅针对特定NAND设备的程序挂起操作。
例如,方法20还可以包括在框26处维持多个NAND设备中的每一个的命令队列,并且在框27处维持与命令队列中的每一个相关联的计数器值以对命令队列中的每一个的相应主机读取进行计数。方法20的一些实施例还可以包括在框28处,当来自主机读取的命令被置于特定NAND设备的命令队列中时递增与特定NAND设备的命令队列相关联的计数器值,并且,在框29处,当来自主机读取的命令被从特定NAND设备的命令队列移除时递减与特定NAND设备的命令队列相关联的计数器值。例如,方法20还可以包括在框30处,如果与特定NAND设备的命令队列相关联的计数器值为零,则确定多个NAND设备中的特定NAND设备的当前工作负荷是随机写入工作负荷,和/或在框31处,如果与特定NAND设备的命令队列相关联的计数器值不为零,则确定主机读取针对特定NAND设备是未决的。在本文的任何实施例中,在框32处,基于NAND的存储介质可以并入到SSD中。
方法20的实施例可以在例如诸如本文所述的系统、装置、计算机、设备等中实现。更具体讲,方法20的硬件实施方式可以包括可配置逻辑,例如PLA、FPGA、CPLD、粗粒度可重新配置结构(CGRA),或者包括使用电路技术的固定功能逻辑硬件,例如ASIC、CMOS或TTL技术,或者它们的任意组合。作为替选或者补充,方法20可以在一个或多个模块中被实现为存储在诸如RAM、ROM、PROM、固件、闪存等的机器或计算机可读存储介质中的将由处理器或计算设备执行的一组逻辑指令。例如,执行组件的操作的计算机程序代码可以以一种或多种OS可应用/适当的编程语言的任意组合来编写,所述编程语言包括面向对象的编程语言,诸如PYTHON、PERL、JAVA、SMALLTALK、C++、C#等,以及常规的过程编程语言,诸如“C”编程语言或类似的编程语言。
例如,方法20可以在如以下结合示例22至28描述的计算机可读介质上实现。方法20的实施例或部分可以以固件、应用(例如,通过应用编程接口(API))或运行在操作系统(OS)上的驱动软件来实现。另外,逻辑指令可以包括汇编指令、指令集架构(ISA)指令、机器指令、机器依存指令、微码、状态设置数据、集成电路的配置数据、使电子电路和/或硬件本地的其它结构组件(例如,主处理器、中央处理单元/CPU、微控制器等)个性化的状态信息。
一些实施例可以有利地提供优化SSD的随机写入性能的技术。一些NAND介质系统允许编程命令(即,写入)或读取命令一次存取NAND阵列。由于程序等待时间可以比读取等待时间大一个数量级,所以为了改善主机读取等待时间(例如,对于SSD客户的重要度量),一些NAND SSD可以利用NAND SSD的程序挂起-恢复(PSR)能力,其允许挂起(暂停)进行中的程序操作,并且随后可以在恢复挂起的程序操作之前完成一个或多个排队的主机读取。
SSD中的随机写入工作负荷的吞吐量的一个瓶颈是NAND编程时间(tProg)。SSD从NAND阵列内部读取无效数据,以将其编程到新位置,以在随机写入工作负荷期间释放出新的未写入的空间。问题在于,由于随机写入工作负荷中的传入内部读取而挂起程序操作增加了完成程序命令的时间,并且因此造成了使随机写入工作负荷的吞吐量瓶颈的开销。有利的是,一些实施例提供了在对主机读取等待时间影响很小或最小的情况下改进随机写入SSD性能的技术。
一些实施例提供了在随机写入工作负荷期间而不是在任何其他工作负荷期间去除或停用PSR命令的技术。有利的是,一些实施例可以减少或最小化有效tProg,从而增加了用于NAND设备操作的可用SSD控制器带宽的利用率。一些实施例可以有效地用于随机写入工作负荷,因为在随机写入工作负荷期间无主机读取,从而使SSD改进或优化了随机写入工作负荷期间主机吞吐量的工作负荷,同时还确保了对其它工作负荷中主机读取等待时间没有影响。有利的是,可以用复杂度相对低的技术来实现一些实施例,该技术为随机写入吞吐量提供显著的益处,而不会负面地影响密钥SSD度量,诸如随机读取和任何混合的读/写入工作负荷中的主机读取等待时间。
NAND SSD中的随机写入工作负荷是通过SSD控制器生成内部读取的,以便将数据从一个NAND位置移动到一个新的NAND位置,以便收集已经由主机写入但不再有效的NAND作为垃圾,使得可以针对新的写入回收无效的NAND。在收集垃圾的过程期间,SSD控制器通常从目标逐出NAND设备中读出剩余的有效主机写入数据并将其读取到SSD控制器中,使得在主机写入数据可以被调度以写入到其新的NAND位置之前,可以利用纠错码(ECC)算法来校正主机写入数据。一些实施例有利地将以NAND设备为目标的内部读取与以NAND设备为目标的主机读取区分开来,并且,仅在目标NDQ中存在主机读取时启用PSR操作。
SSD控制器通道可以指专用的直接存储器存取(DMA)引擎,以在SSD控制器和NAND设备之间移动数据。通道开销可以指消耗通道上的带宽的任何附加的非必要DMA命令业务或状态命令业务。
一些实施例仅在随机写入工作负荷期间停用PSR操作,从而通过减少或最小化通道开销来有利地改进随机写入吞吐量,并且通过减少有效tProg来增加或最大化吞吐量。然而,在其他工作负荷中停用PSR会导致读取等待时间增加,特别是对于混合工作负荷而言更是如此,因为读取将需要在被分派之前等待读取之前的程序完成。一些实施例动态地启用和停用PSR操作,使得主机读取等待时间不受混合的读取/写入工作负荷的影响。有利的是,PSR开销也从随机写入工作负荷中减少或消除,以便提高随机写入工作负荷的吞吐量。
在一些实施例中,在每个NAND设备级而不是在全局SSD级局部执行动态PSR停用。有利的是,这种局部、动态PSR停用可以扩展到可以仅局部化到SSD中的NAND设备子集的任何随机写入工作负荷上。随机写入工作负荷可以仅被局部化到NAND设备子集的非限制性示例包括:如果SSD实现NYM Express(NVMe)集、向主机暴露NAND分区的NVMe持久组等;如果SSD以介质组的形式实现内部NAND分区;如果主机工作负荷在其随机写入中是突发的;或者,如果SSD实现了允许任何种类的精确或不精确的主机写入数据放置的任何种类的NVMe主机规范,这将使一些而不是所有NAND设备暴露于内部读取以用于收集垃圾(例如,或者甚至介质策略)。
一些实施例可以提供仅针对每个NAND设备局部化的随机写入工作负荷动态地停用PSR的技术。类似地(例如,另外或替代地),一些实施例可以提供仅在NAND设备以主机读取为目标和/或具有未决的主机读取时启用PSR的技术。
SSD可以采用提供软件队列的技术,该软件队列跟踪在NAND设备忙于进行中的命令时要分派给NAND设备的NAND命令。在一些实施方式中,软件队列可以被称为NAND设备队列(NDQ)。一些实施例提供了计数器(例如,在SSD控制器中实现),其在下文中被称为主机读取计数器(HRC),其被维护以跟踪NDQ中的主机读取的数量。在一些实施例中,HRC可以是用于确定NDQ管理应当启用还是停用与其NDQ相关联的NAND设备的PSR操作的主要机制。每个NDQ都具有其自己的计数器实例,使得每个NAND设备都具有以该NAND设备为目标的局部化工作负荷。例如,如果SSD具有连接到SSD控制器的10个NAND设备,则将有10个NDQ,因此有10个HRC,每个NDQ一个HRC。另外,取决于SSD架构和主机工作负荷,每一个NDQ都可以经历一个不同的工作负荷。这样,结合实施例描述的其余部分,工作负荷是指每个NAND设备的局部化工作负荷。
参考图4,控制存储装置的方法40的一个实施例可以被称为NANDCmdEnQueuetoNDQ。当SSD控制器确定一个新NAND命令的NAND设备目标时,SSD控制器就可以准备好将命令排队到其目标NAND设备队列中。在框41,将传入的新NAND命令添加到NDQ中。如果在框42要排队到NDQ中的新NAND命令是从主机读取命令生成的NAND命令,则在框43,针对关联的NDQ,递增HRC。如果NAND读取命令是由SSD控制器内部生成的,例如用于收集垃圾,那么,计数器就不递增。稍后,当从NDQ移除从主机读取生成的NAND读取命令时,HRC递减(见图5)。
参考图5,控制存储装置的方法50的一个实施例可以被称为NANDCmdDispatchtoNDQ。当在框51处任何NAND读取请求(例如,内部或主机)到达NDQ的头部时(例如,当读取请求将被分派到SSD控制器通道并因此到达目标NAND设备时),在框52处评估该NDQ的HRC。如果在框52处HRC为零(例如,表示当前工作负荷是随机写入工作负荷),则在框53处PSR停用该命令。在这种情况下NAND读取命令必须是内部SSD控制器读取,而不是主机读取,并且因此将被强制等待,直到正在进行的程序完成,如果存在未完成到目标设备的程序,则在(内部)读取可以被分派到目标NAND设备之前。
如果在框52处HRC不为零(例如,表示当前工作负荷包含从主机读取命令生成的NAND命令),则在框54处PSR根据该命令而被启用。如果程序在与NDQ相关联的目标设备上正在运行,则NDQ可以与主机和内部读取命令混合,因此启用PSR操作,并且可以按照PSR策略发出程序挂起操作,PSR策略可以挂起正在运行的程序并且可以在程序挂起之后分派NAND读取命令。方法50然后可以进行到在框55确定NAND命令是否从主机读取分派,并且如果确定,则在框56递减HRC。
当NDQ中不存在主机读取时停用PSR并且当NDQ中存在主机读取时则启用PSR保持了在纯读取和混合读取/写入工作负荷中主机读取命令的读取等待时间的益处,同时动态地确保了从随机写入工作负荷中消除PSR操作和相关联的通道开销。有利的是,与没有局部动态PSR停用的类似配置的基线相比,一些实施例在每秒输入/输出操作(IOPS)、有效tProg和随机写入工作负荷性能方面显现出显著的改进。
参考图6,一个示例性时序图60将基线与具有单个NAND设备上的局部动态PSR停用技术的一个实施例进行了比较。如图6所示,在具有局部动态PSR停用技术的实施例中基本上消除了PSR开销,而在基线中,与具有局部动态PSR停用技术的实施例相比,主机写入会花费更多的时间。tProg的改进可归因于PSR开销的减少,并且不允许读取去中断正在运行的程序进程。
本文所讨论的技术可以设置在各种计算系统(例如,包括诸如台式机、工作站、服务器、机架系统等的非移动计算设备,诸如智能电话、平板电脑、超移动个人计算机(UMPC)、膝上型计算机、ULTRABOOK计算设备、智能手表、智能眼镜、智能手环等的移动计算设备,和/或诸如物联网(IoT)设备(例如,传感器、摄像机等)的客户端/边缘设备)中。
现在转看图7,计算系统100的一个实施例可以包括一个或多个处理器102-1到102-N(在此统称称为“处理器102”)。处理器102可以经由互连或总线104进行通信。每个处理器102可以包括各种组件,为了清楚起见,仅参考处理器102-1讨论了其中的一些组件。因此,其余处理器102-2到102-N中的每一个可以包括参考处理器102-1所讨论的相同或相似的组件。
在一些实施例中,处理器102-1可以包括一个或多个处理器核106-1到106-M(本文称为“多个核106”,或更笼统地称为“核106”)、高速缓存108(在各种实施例中可以是共享高速缓存或专用高速缓存)、和/或路由器110。处理器核106可以在单个集成电路(IC)芯片上实现。此外,芯片可以包括一个或多个共享和/或专用高速缓存(诸如高速缓存108)、总线或互连(诸如总线或互连112)、存储器控制器或其他组件。
在一些实施例中,路由器110可被用于在处理器102-1和/或系统100的各种组件之间进行通信。此外,处理器102-1也可以包括多于一个路由器110。此外,多个路由器110可以进行通信以使得能够在处理器102-1内部或外部的各种组件之间进行数据路由。
高速缓存108可以存储由处理器102-1中的一个或多个组件(例如,核106)使用的数据(例如,包括指令)。例如,高速缓存108可以本地高速缓存存储在存储器114中的数据,以便由处理器102的组件更快地访问。如图7所示,存储器114可以经由互连104与处理器102进行通信。在一些实施例中,高速缓存108(其可以被共享)可以具有各种级别,例如,高速缓存108可以是中级高速缓存和/或末级高速缓存(LLC)。而且,每个核106可以包括1级(L1)高速缓存(116-1)(在此统称为“L1高速缓存116”)。处理器102-1中的各种组件可以直接、通过总线(例如,总线112)和/或存储器控制器或集线器与高速缓存108进行通信。
如图7所示,存储器114可以通过存储器控制器120耦合到系统100的其它组件上。存储器114可以包括易失性存储器,并且可以被可互换地称为主存储器或系统存储器。即使存储器控制器120被示为耦合在互连104和存储器114之间,但存储器控制器120也可以位于系统100中的其他位置。例如,在一些实施例中,存储器控制器120或其部分可以被设置在处理器102之一内。
系统100可以经由网络接口128(例如,其经由有线或无线接口与计算机网络和/或云129通信)与其他设备/系统/网络通信。例如,网络接口128可以包括天线(未示出),以无线地(例如,经由电气和电子工程师协会(IEEE)802.11接口(包括IEEE 802.11a/b/g/n/ac等)、蜂窝接口、3G、4G、LTE、蓝牙等)与网络/云129进行通信。
系统100还可以包括诸如SSD 130的存储设备,其经由SSD控制器逻辑125耦合到互连104上。因此,逻辑125可以控制系统100的各种组件对SSD 130的存取。此外,即使逻辑125在图7中被示为直接耦合至互连104上,但逻辑125也可以替换地经由存储总线/互连(诸如SATA(串行高级技术附件)总线、外围组件互连(PCI)(或PCI EXPRESS(PCIe)接口)、NVMEXPRESS(NVMe)等)与系统100的一个或多个其他组件通信(例如其中,存储总线经由诸如总线桥、芯片组等的某一其他逻辑耦合至互连104)。此外,逻辑125还可以被纳入到存储器控制器逻辑(诸如参考图8所讨论的那些)中或设置在各种实施例中的同一集成电路(IC)设备上(例如,在与SSD 130相同的电路板设备上或在与SSD 130相同的外壳中)。
此外,逻辑125和/或SSD 130可以耦合到一个或多个传感器(未示出)以接收信息(例如,以一个或多个比特或信号的形式)来指示一个或多个传感器的状态或由一个或多个传感器检测到的值。这些传感器可以设置在系统100(或本文所讨论的其他计算系统)的组件附近,包括核106、互连104或112、处理器102外部的组件、SSD 130、SSD总线、SATA总线、逻辑125、电路160等,以感测影响系统/平台的功率/热行为的各种因素的变化,诸如温度、工作频率、工作电压、功耗和/或核间通信活动等。
图8示出了根据一个实施例的SSD 130的各个组件的框图。如图8所示,电路160可以位于诸如SSD 130或控制器382等的内部的各种位置,并且可以包括结合图7所讨论的类似技术。SSD 130包括控制器382(其进而包括一个或多个处理器核或处理器384以及存储器控制器逻辑386)、高速缓存138、RAM 388、固件存储装置390以及一个或多个NAND设备392-1到392-N(统称为NAND介质392)。NAND介质392经由一个或多个存储器通道或总线耦合到存储器控制器逻辑386。此外,SSD 130经由接口(诸如SATA、SAS、PCIe、NVMe等接口)与逻辑125进行通信。处理器384和/或控制器382可以压缩/解压缩写入到NAND设备392-1到392-N或从其读取的数据。
如图7和8所示,SSD 130可以包括电路160,其可以与SSD 130在同一外壳中和/或完全集成在SSD 130的印刷电路板(PCB)上。参考图1-6讨论的一个或多个特征/方面/操作可以由图7和/或8的一个或多个组件来执行。并且,图1-6的一个或多个特征/方面/操作可以被编程到固件390中。此外,SSD控制器逻辑125还可以包括电路160。有利的是,电路160可以包括用于实现系统10(图1)、装置14(图2)、方法20(图3A至3B)、方法40(图4)、方法50(图5)、时序图60(图6)和/或本文所讨论的任何特征中的一个或多个方面的技术。
例如,电路160可被配置成确定一个或多个NAND设备392-1到392-N中的特定NAND设备的当前工作负荷是否为随机写入工作负荷,并且如果确定为随机写入工作负荷,则仅针对该特定NAND设备停用程序挂起操作(例如,或PSR操作)。有利的是,停用PSR改进了tProg并且改进了每秒I/O或随机写入性能。在一些实施例中,电路160还可以被配置成确定主机读取针对特定NAND设备是否是未决的,并且如果确定是这样的,则启用仅针对特定NAND设备的程序挂起操作。
例如,电路160可被配置成维持一个或多个NAND设备392-1到392-N中的每一个的NDQ(例如,命令队列),并维持与NDQ中的每一个相关联的HRC(例如,计数器值)以对NDQ中的每一个的相应主机读取进行计数。在一些实施例中,电路160还可被配置成当来自主机读取的命令被置于特定NAND设备的NDQ中时递增与特定NAND设备的NDQ相关联的HRC,并且,当来自主机读取的命令从特定NAND设备的NDQ移除时递减与特定NAND设备的NDQ相关联的HRC。例如,电路160还可被配置成如果与特定NAND设备的NDQ相关联的HRC为零,则确定一个或多个NAND设备392-1到392-N中的特定NAND设备的当前工作负荷为随机写入工作负荷,并且,如果与特定NAND设备的NDQ相关联的HRC不为零,则确定针对特定NAND设备的主机读取是未决的。
在其它实施例中,SSD 130可以用任何合适的存储/存储器技术/介质来替换。在一些实施例中,电路160可以耦合到一个或多个基板(例如,硅、蓝宝石、砷化镓、印刷电路板(PCB)等)上,并且可以包括位于一个或多个基板内的晶体管沟道区中。在其它实施例中,SSD 130可以包括两种或更多种类型的存储介质。例如,存储装置的大部分可以是NAND并且还可以包括一些更快、更小粒度的可访问(例如,字节可寻址)NYM。SSD 130可以替代地或附加地包括持久易失性存储器(例如,电池或电容器备份的DRAM或SRAM)。例如,SSD 130可以包括具有能量存储电容器的功率损耗迫近(PLI)技术。能量存储电容器可以提供足够的能量(电力)以完成进行中的任何命令并确保DRAM/SRAM中的任何数据被提交给非易失性NAND介质。电容器可以充当永久易失性存储器的备用电池。如图7和8所示,电路160的特征或方面可以分布在整个系统100中,和/或与系统100的各种组件共同定位/集成。
其他注释和示例
示例1包括一种电子装置,包括一个或多个基板以及耦合到该一个或多个基板的控制器,该控制器包括电路,该电路用于控制对包括多个NAND设备的基于NAND的存储介质的访问,确定该多个NAND设备中的特定NAND设备的当前工作负荷是否是随机写入工作负荷,并且,如果确定是这样的,则仅针对该特定NAND设备停用程序挂起操作。
示例2包括示例1的装置,其中,电路还用于确定主机读取对于该特定NAND设备是否是未决的,并且,如果确定是这样的,则仅针对该特定NAND设备启用程序挂起操作。
示例3包括示例2的装置,其中,电路还维护该多个NAND设备中的每一个的命令队列,并且维护与该命令队列中的每一个相关联的计数器值以对该命令队列中的每一个的相应主机读取进行计数。
示例4包括示例3的装置,其中,电路还用于当来自主机读取的命令被置于特定NAND设备的命令队列中时,递增与特定NAND设备的命令队列相关联的计数器值,并且,当来自主机读取的命令被从特定NAND设备的命令队列移除时,递减与特定NAND设备的命令队列相关联的计数器值。
示例5包括示例4的装置,其中,电路还用于如果与该多个NAND设备中的特定NAND设备的命令队列相关联的计数器值为零,则确定该特定NAND设备的当前工作负荷是随机写入工作负荷。
示例6包括示例4或5的装置,其中,电路还用于如果与该特定NAND设备的命令队列相关联的计数器值不为零,则确定该主机读取针对该特定NAND设备是未决的。
示例7包括示例1至6中任一项的装置,其中,控制器和基于NAND的存储介质被并入到固态驱动器中。
示例8包括一种电子存储系统,其包括基于NAND的存储介质,该基于NAND的存储介质包括多个NAND设备,以及通信地耦合到基于NAND的存储介质的控制器,该控制器包括电路,该电路用于确定多个NAND设备中的特定NAND设备的当前工作负荷是否是随机写入工作负荷,并且,如果确定是这样的,则仅针对该特定NAND设备停用程序挂起操作。
示例9包括示例8的系统,其中,电路还用于确定主机读取对于该特定NAND设备是否是未决的,并且,如果确定是这样的,则仅针对该特定NAND设备启用程序挂起操作。
示例10包括示例9的系统,其中,电路还维护该多个NAND设备中的每个NAND设备的命令队列,并且维护与该命令队列中的每个命令队列相关联的计数器值以对该命令队列中的每个命令队列的相应主机读取进行计数。
示例11包括示例10的系统,其中,电路还用于当来自主机读取的命令被置于特定NAND设备的命令队列中时,递增与特定NAND设备的命令队列相关联的计数器值,并且,当来自主机读取的命令被从特定NAND设备的命令队列移除时,递减与特定NAND设备的命令队列相关联的计数器值。
示例12包括示例11的系统,其中,电路还用于如果与该多个NAND设备中的特定NAND设备的命令队列相关联的计数器值为零,则确定该特定NAND设备的当前工作负荷是随机写入工作负荷。
示例13包括示例11或12的系统,其中,电路还用于如果与该特定NAND设备的命令队列相关联的计数器值不为零,则确定该主机读取针对该特定NAND设备是未决的。
示例14包括示例8至13中任一项的系统,其中,该控制器和基于NAND的存储介质被并入到固态驱动器中。
示例15包括一种控制存储装置的方法,包括控制对包括多个NAND设备的基于NAND的存储介质的访问,确定该多个NAND设备中的特定NAND设备的当前工作负荷是否是随机写入工作负荷,并且,如果确定是这样的,则仅针对该特定NAND设备停用程序挂起操作。
示例16包括示例15的方法,还包括确定主机读取针对特定NAND设备是否是未决的,并且,如果确定是这样的,则仅针对该特定NAND设备启用程序挂起操作。
示例17包括示例16的方法,还包括维护多个NAND设备中的每一个的命令队列,以及维护与命令队列中的每一个相关联的计数器值以对命令队列中的每一个的相应主机读取进行计数。
示例18包括示例17的方法,还包括当来自主机读取的命令被置于特定NAND设备的命令队列中时,递增与特定NAND设备的命令队列相关联的计数器值,以及,当来自主机读取的命令被从特定NAND设备的命令队列移除时,递减与特定NAND设备的命令队列相关联的计数器值。
示例19包括示例18的方法,还包括如果与多个NAND设备中的特定NAND设备的命令队列相关联的计数器值为零,则确定该特定NAND设备的当前工作负荷是随机写入工作负荷。
示例20包括示例18或19的方法,还包括如果与特定NAND设备的命令队列相关联的计数器值不为零,则确定主机读取针对特定NAND设备是未决的。
示例21包括示例15至20中任一项的方法,其中,基于NAND的存储介质被并入到固态驱动器中。
示例22包括至少一种非暂态机器可读介质,其包括多个指令,该多个指令响应于在计算设备上被执行,使该计算设备控制对包括多个NAND设备的基于NAND的存储介质的访问,确定该多个NAND设备中的特定NAND设备的当前工作负荷是否是随机写入工作负荷,并且,如果确定是这样的,则仅针对该特定NAND设备停用程序挂起操作。
示例23包括示例22的至少一个非暂态机器可读介质,包括多个其他指令,该多个其他指令响应于在计算设备上被执行而使计算设备确定主机读取针对特定NAND设备是否是未决的,并且,如果确定是这样的,则启用仅针对特定NAND设备的程序挂起操作。
示例24包括示例23的至少一个非暂态机器可读介质,包括多个其他指令,该多个其他指令响应于在计算设备上被执行而使计算设备维护多个NAND设备中的每一个NAND设备的命令队列,并且,维护与命令队列中的每一个命令队列相关联的计数器值以对命令队列中的每一个命令队列的相应主机读取进行计数。
示例25包括示例24的至少一个非暂态机器可读介质,包括多个其他指令,该多个其他指令响应于在计算设备上被执行使计算设备在来自主机读取的命令被置于特定NAND设备的命令队列中时递增与特定NAND设备的命令队列相关联的计数器值,并且,在来自主机读取的命令被从特定NAND设备的命令队列移除时递减与特定NAND设备的命令队列相关联的计数器值。
示例26包括示例25的至少一个非暂态机器可读介质,包括多个其他指令,该多个其他指令响应于在计算设备上被执行使计算设备在与多个NAND设备中的特定NAND设备的命令队列相关联的计数器值为零的情况下确定该特定NAND设备的当前工作负荷是随机写入工作负荷。
示例27包括示例25或26的至少一个非暂态机器可读介质,包括多个其他指令,该多个其他指令响应于在计算设备上被执行使计算设备在与特定NAND设备的命令队列相关联的计数器值不为零的情况下确定主机读取针对特定NAND设备是未决的。
示例28包括示例22至27中任一项的至少一个非暂态机器可读介质,其中,基于NAND的存储介质被并入到固态驱动器中。
示例29包括一种存储控制器装置,包括用于控制对包括多个NAND设备的基于NAND的存储介质的访问的装置、用于确定多个NAND设备中的特定NAND设备的当前工作负荷是否是随机写入工作负荷的装置、以及如果确定是这样的,则用于仅针对该特定NAND设备停用程序挂起操作的装置。
示例30包括示例29的装置,还包括用于确定主机读取针对特定NAND设备是否是未决的装置、并且如果确定是这样的,则用于仅针对特定NAND设备启用程序挂起操作的装置。
示例31包括示例30的装置,还包括用于维护多个NAND设备中的每一个的命令队列的装置,以及用于维护与命令队列中的每一个相关联的计数器值以对命令队列中的每一个的相应主机读取进行计数的装置。
示例32包括示例31的装置,还包括用于当来自主机读取的命令被置于特定NAND设备的命令队列中时递增与特定NAND设备的命令队列相关联的计数器值的装置,以及,用于当来自主机读取的命令被从特定NAND设备的命令队列移除时递减与特定NAND设备的命令队列相关联的计数器值的装置。
示例33包括示例32的装置,还包括用于如果与多个NAND设备中的特定NAND设备的命令队列相关联的计数器值为零,则确定该特定NAND设备的当前工作负荷是随机写入工作负荷的装置。
示例34包括示例32或33的装置,还包括用于如果与特定NAND设备的命令队列相关联的计数器值不为零则确定主机读取针对特定NAND设备是未决的装置。
示例35包括示例29至34中任一项的装置,其中,基于NAND的存储介质被并入到固态驱动器中。
术语“耦合”在这里可以用于指所讨论的组件之间的任何类型的直接或间接关系,并且可以应用于电、机械、流体、光、电磁、机电或其他连接。此外,术语“第一”、“第二”等在本文中仅用于方便讨论,并且除非另外指出,否则不带有特定的时间或时空意义。
如本申请和权利要求中所使用的,由术语“一个或多个”连接的项目列表可以表示所列出的项目的任意组合。例如,短语“A、B和C中的一个或多个”和短语“A、B或C中的一个或多个”都可以指A;B;C;A和B;A和C;B和C;或者A、B和C。这里描述的系统的各种组件可以以软件、固件和/或硬件和/或其任意组合来实现。例如,这里讨论的系统或设备的各种组件可以至少部分地由诸如可以在诸如智能电话的计算系统中找到的计算SoC的硬件来提供。本领域技术人员可以认识到,本文描述的系统可以包括未在相应附图中描绘的附加组件。例如,本文所讨论的系统可以包括附加组件,诸如比特流复用器或解复用器模块等,为了清楚起见,这些组件未被描绘。
虽然本文讨论的示例性过程的实现可以包括采取以所示顺序示出的所有操作,但是本公开并不局限于这一点,并且在各种示例中,本文的示例性过程的实现可以仅包括所示操作的子集、以与所示顺序不同顺序执行的操作、或者附加操作。
另外,可以响应于由一个或多个计算机程序产品提供的指令来进行本文讨论的操作中的任何一个或多个。这样的程序产品可以包括提供指令的信号承载介质,当指令由例如处理器执行时,可以提供这里描述的功能。计算机程序产品可以以任何形式的一个或多个机器可读介质来提供。因此,例如,包括一个或多个图形处理单元或处理器核的处理器可以响应于由一个或多个机器可读介质传送到处理器的程序代码和/或指令集,进行本文的示例性过程的一个或多个框。通常,机器可读介质可以以程序代码和/或指令集的形式传送软件,其可以使得本文描述的任何设备和/或系统实现本文讨论的操作的至少部分和/或本文讨论的设备、系统或任何模块或组件的任何部分。
如在本文描述的任何实施方式中所使用的,术语“模块”是指被配置成提供本文描述的功能的软件逻辑、固件逻辑、硬件逻辑和/或电路的任何组合。软件可以被实现为软件包、代码和/或指令集或指令,并且如在本文描述的任何实现中使用的“硬件”可以包括例如单独地或以任何组合的硬连线电路、可编程电路、状态机电路、固定功能电路、执行单元电路和/或存储由可编程电路执行的指令的固件。这些模块可以共同地或单独地被实现为形成较大系统的一部分的电路,例如集成电路(IC)、片上系统(SoC)等。
可以使用硬件元件、软件元件或两者的组合来实现各种实施例。硬件元件的示例可以包括处理器、微处理器、电路元件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等。软件的示例可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任意组合。确定一个实施例是否使用硬件元件和/或软件元件来实现会根据任何数量的因素而发生变化,这些因素诸如期望的计算速率、功率电平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和其他设计或性能约束。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性指令来实现,该代表性指令代表了处理器内的各种逻辑,当由机器读取时,该代表性指令可以使机器制造逻辑执行本文描述的技术。被称为IP核的这种表示可以存储在有形的机器可读介质上,并且提供给各种客户或制造设施以加载到实际制造逻辑或处理器的制造机器中。
尽管已经参考了各种实施方式描述了本文中阐述的某些特征,但是该描述不应以限制性的意义来解释。因此,对本公开所属领域的技术人员显而易见的本文描述的实施方式的各种修改以及其它实施方式都被认为是在本公开的精神和范围内的。
应当认识到,实施例并不局限于如此描述的实施例,而是可以在不脱离所附权利要求范围的情况下通过修改和变更来实践。例如,上述实施例可以包括特征的特定组合。然而,上述实施例并不局限于这一点,并且在各种实施方式中,上述实施例可以包括仅采用这些特征的子集、采用这些特征的不同顺序、采用这些特征的不同组合和/或采用与明确列出的那些特征不同的附加特征。因此,实施例的范围应当参考所附权利要求以及由这些权利要求所授予的等同替换物的全部范围来确定。
Claims (20)
1.一种电子装置,包括:
一个或多个基板;以及
控制器,所述控制器耦合到所述一个或多个基板,所述控制器包括电路用于:
控制对包括多个NAND设备的基于NAND的存储介质的访问,
确定所述多个NAND设备中的特定NAND设备的当前工作负荷是否是随机写入工作负荷,并且,如果确定是这样的,
仅针对所述特定NAND设备停用程序挂起操作。
2.根据权利要求1所述的装置,其中,所述电路还用于:
确定主机读取是否针对所述特定NAND设备是未决的;并且,如果确定是这样的,则仅针对特定NAND设备启用程序挂起操作。
3.根据权利要求2所述的装置,其中,所述电路还用于:
维持所述多个NAND设备中的每一个的命令队列;以及
维持与所述命令队列中的每一个相关联的计数器值以对所述命令队列中的每一个的相应主机读取进行计数。
4.根据权利要求3所述的装置,其中,所述电路还用于:
当来自所述主机读取的命令被置于所述特定NAND设备的命令队列中时,递增与所述特定NAND设备的命令队列相关联的计数器值;以及
当来自所述主机读取的命令从所述特定NAND设备的命令队列移除时,递减与所述特定NAND设备的命令队列相关联的计数器值。
5.根据权利要求4所述的装置,其中,所述电路还用于:
如果与所述多个NAND设备中的特定NAND设备的命令队列相关联的计数器值为零,则确定所述特定NAND设备的当前工作负荷是随机写入工作负荷。
6.根据权利要求4所述的装置,其中,所述电路还用于:
如果与所述特定NAND设备的命令队列相关联的计数器值不为零,则确定所述特定NAND设备的主机读取是未决的。
7.根据权利要求1所述的装置,其中,所述控制器和所述基于NAND的存储介质被并入到固态驱动器中。
8.一种电子存储系统,包括:
基于NAND的存储介质,所述基于NAND的存储介质包括多个NAND设备;以及
控制器,所述控制器通信地耦合到所述基于NAND的存储介质,所述控制器包括电路用于:
确定所述多个NAND设备中的特定NAND设备的当前工作负荷是否是随机写入工作负荷,并且,如果确定是这样的,
仅针对所述特定NAND设备停用程序挂起操作。
9.根据权利要求8所述的系统,其中,所述电路还用于:
确定主机读取是否针对所述特定NAND设备是未决的;并且,如果确定是这样的,则仅针对特定NAND设备启用程序挂起操作。
10.根据权利要求9所述的系统,其中,所述电路还用于:
维持所述多个NAND设备中的每一个的命令队列;以及,
维持与所述命令队列中的每一个相关联的计数器值以对所述命令队列中的每一个的相应主机读取进行计数。
11.根据权利要求10所述的系统,其中,所述电路还用于:
当来自所述主机读取的命令被置于所述特定NAND设备的命令队列中时,递增与所述特定NAND设备的命令队列相关联的计数器值;以及
当来自所述主机读取的命令从所述特定NAND设备的命令队列移除时,递减与所述特定NAND设备的命令队列相关联的计数器值。
12.根据权利要求11所述的系统,其中,所述电路还用于:
如果与所述多个NAND设备中的特定NAND设备的命令队列相关联的计数器值为零,则确定所述特定NAND设备的当前工作负荷是随机写入工作负荷。
13.根据权利要求11所述的系统,其中,所述电路还用于:
如果与所述特定NAND设备的命令队列相关联的计数器值不为零,则确定所述特定NAND设备的主机读取是未决的。
14.根据权利要求8所述的系统,其中,所述控制器和所述基于NAND的存储介质被并入到固态驱动器中。
15.一种控制存储装置的方法,包括:
控制对包括多个NAND设备的基于NAND的存储介质的访问;
确定所述多个NAND设备中的特定NAND设备的当前工作负荷是否是随机写入工作负荷;并且,如果确定是这样的,
仅针对所述特定NAND设备停用程序挂起操作。
16.根据权利要求15所述的方法,还包括:
确定主机读取针对所述特定NAND设备是否是未决的;并且,如果确定是这样的,
仅启用针对所述特定NAND设备的程序挂起操作。
17.根据权利要求16所述的方法,还包括:
维持所述多个NAND设备中的每一个的命令队列;以及,
维持与所述命令队列中的每一个相关联的计数器值以对所述命令队列中的每一个的相应主机读取进行计数。
18.根据权利要求17所述的方法,还包括:
当来自所述主机读取的命令被置于所述特定NAND设备的命令队列中时,递增与所述特定NAND设备的命令队列相关联的计数器值;以及
当来自所述主机读取的命令从所述特定NAND设备的命令队列移除时,递减与所述特定NAND设备的命令队列相关联的计数器值。
19.根据权利要求18所述的方法,还包括:
如果与所述多个NAND设备中的特定NAND设备的命令队列相关联的计数器值为零,则确定所述特定NAND设备的当前工作负荷是随机写入工作负荷。
20.根据权利要求18所述的方法,还包括:
如果与所述特定NAND设备的命令队列相关联的计数器值不为零,则确定所述特定NAND设备的主机读取是未决的。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/241976 | 2021-04-27 | ||
US17/241,976 US20210247937A1 (en) | 2021-04-27 | 2021-04-27 | Dynamic program suspend disable for random write ssd workload |
PCT/US2022/026393 WO2022232177A1 (en) | 2021-04-27 | 2022-04-26 | Dynamic program suspend disable for random write ssd workload |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117255986A true CN117255986A (zh) | 2023-12-19 |
Family
ID=77176866
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280031659.6A Pending CN117255986A (zh) | 2021-04-27 | 2022-04-26 | 随机写入固态驱动器工作负荷的动态程序挂起停用 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20210247937A1 (zh) |
EP (1) | EP4330805A1 (zh) |
JP (1) | JP2024516072A (zh) |
KR (1) | KR20230175308A (zh) |
CN (1) | CN117255986A (zh) |
WO (1) | WO2022232177A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210247937A1 (en) * | 2021-04-27 | 2021-08-12 | Intel Corporation | Dynamic program suspend disable for random write ssd workload |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9021158B2 (en) * | 2009-09-09 | 2015-04-28 | SanDisk Technologies, Inc. | Program suspend/resume for memory |
US8874848B2 (en) * | 2011-09-30 | 2014-10-28 | Net App, Inc. | Intelligence for controlling virtual storage appliance storage allocation |
US10540115B2 (en) * | 2015-04-21 | 2020-01-21 | SK Hynix Inc. | Controller adaptation to memory program suspend-resume |
US10176119B2 (en) * | 2016-03-02 | 2019-01-08 | Seagate Technology Llc | Workload detection and media cache management |
US10740042B2 (en) * | 2016-12-30 | 2020-08-11 | Western Digital Technologies, Inc. | Scheduling access commands for data storage devices |
US20210247937A1 (en) * | 2021-04-27 | 2021-08-12 | Intel Corporation | Dynamic program suspend disable for random write ssd workload |
-
2021
- 2021-04-27 US US17/241,976 patent/US20210247937A1/en active Pending
-
2022
- 2022-04-26 JP JP2023557058A patent/JP2024516072A/ja active Pending
- 2022-04-26 CN CN202280031659.6A patent/CN117255986A/zh active Pending
- 2022-04-26 EP EP22796575.3A patent/EP4330805A1/en active Pending
- 2022-04-26 KR KR1020237040796A patent/KR20230175308A/ko unknown
- 2022-04-26 WO PCT/US2022/026393 patent/WO2022232177A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
EP4330805A1 (en) | 2024-03-06 |
US20210247937A1 (en) | 2021-08-12 |
JP2024516072A (ja) | 2024-04-12 |
WO2022232177A1 (en) | 2022-11-03 |
KR20230175308A (ko) | 2023-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11797433B2 (en) | Zoned namespace with zone grouping | |
CN107466418B (zh) | 用于多级别单元模式非易失性存储器的成本优化单级别单元模式非易失性存储器 | |
US9740437B2 (en) | Mechanism to adapt garbage collection resource allocation in a solid state drive | |
US11119672B2 (en) | Dynamic single level cell memory controller | |
US11003582B2 (en) | Cache utilization of backing storage for aggregate bandwidth | |
US20200363998A1 (en) | Controller and persistent memory shared between multiple storage devices | |
WO2016160164A1 (en) | Improving storage cache performance by using compressibility of the data as a criteria for cache insertion | |
US20220188000A1 (en) | Shared data buffer for prefetch and non-prefetch entries | |
KR20240007167A (ko) | 사용자에 의해 구성가능한 slc 메모리 크기 | |
CN117255986A (zh) | 随机写入固态驱动器工作负荷的动态程序挂起停用 | |
CN114064515A (zh) | 具有任意传输长度的ssd管理的主机写入原子性 | |
US20230305954A1 (en) | Direct map memory extension for storage class memory | |
US11462273B2 (en) | SSD with reduced secure erase time and endurance stress | |
CN113568563A (zh) | 用于ssd的自适应存储调度器 | |
US20190042139A1 (en) | Moving average valid content on ssd | |
US20220179797A1 (en) | Memory transaction queue bypass based on configurable address and bandwidth conditions | |
EP3876088A1 (en) | Negotiated power-up for ssd data refresh | |
US20220012094A1 (en) | Resource management controller | |
US20220091782A1 (en) | Endurance hints for tiered memory | |
US20230317144A1 (en) | Synchronous independent plane read operation |
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 |