CN111149096B - 借助于主机内存缓冲区范围的自适应装置服务质量 - Google Patents
借助于主机内存缓冲区范围的自适应装置服务质量 Download PDFInfo
- Publication number
- CN111149096B CN111149096B CN201880062933.XA CN201880062933A CN111149096B CN 111149096 B CN111149096 B CN 111149096B CN 201880062933 A CN201880062933 A CN 201880062933A CN 111149096 B CN111149096 B CN 111149096B
- Authority
- CN
- China
- Prior art keywords
- host
- memory
- controller
- volatile memory
- access
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 317
- 239000000872 buffer Substances 0.000 title claims abstract description 56
- 230000003044 adaptive effect Effects 0.000 title description 4
- 238000000034 method Methods 0.000 claims abstract description 39
- 238000013507 mapping Methods 0.000 claims description 20
- 230000004044 response Effects 0.000 claims description 19
- 239000000758 substrate Substances 0.000 claims description 19
- 238000004422 calculation algorithm Methods 0.000 claims description 16
- 230000008569 process Effects 0.000 claims description 13
- 230000008859 change Effects 0.000 claims description 11
- 238000004891 communication Methods 0.000 claims description 10
- 238000005259 measurement Methods 0.000 claims description 5
- 238000003860 storage Methods 0.000 abstract description 33
- 238000004458 analytical method Methods 0.000 abstract description 7
- 238000012986 modification Methods 0.000 description 26
- 230000004048 modification Effects 0.000 description 26
- 239000004065 semiconductor Substances 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 230000004043 responsiveness Effects 0.000 description 6
- 238000003491 array Methods 0.000 description 5
- 230000001934 delay Effects 0.000 description 5
- 238000010801 machine learning Methods 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 238000012937 correction Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000009826 distribution Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000007477 logistic regression Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 238000012706 support-vector machine Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000007635 classification algorithm Methods 0.000 description 1
- 239000011370 conductive nanoparticle Substances 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 239000003989 dielectric material Substances 0.000 description 1
- JLYFCTQDENRSOL-VIFPVBQESA-N dimethenamid-P Chemical compound COC[C@H](C)N(C(=O)CCl)C=1C(C)=CSC=1C JLYFCTQDENRSOL-VIFPVBQESA-N 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000003064 k means clustering Methods 0.000 description 1
- 238000012005 ligant binding assay Methods 0.000 description 1
- 230000007334 memory performance Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 239000012782 phase change material Substances 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000013519 translation Methods 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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
-
- 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/0656—Data buffering arrangements
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7206—Reconfiguration of flash memory system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种用于减少正供应主机内存缓冲区(HMB)供存储装置使用的主机的性能损失的系统和方法。所述方法可包含:针对多个种类的工作负荷在初始离线分析中对所述存储装置的所要HMB存取定时建模,基于实际使用周期性地更新存储在所述存储装置中的存取定时数据,以及使用当前HMB存取定时信息来修改对所述主机上的所述HMB的存储装置存取。所述系统可包含存储装置控制器,其基于各个HMB区域来量化不同主机工作负荷的不同HMB存取定时。
Description
技术领域
本公开一般涉及非易失性存储器系统领域。
背景技术
例如固态驱动器(SSD)等包含NAND快闪存储器的存储系统常用于从消费型产品到企业级计算机系统范围内的电子系统中。SSD的市场不断增大,且其被私人企业或政府机构用来存储数据的接受度正变得越来越广。一些SSD可利用连接的主机装置上的随机存取存储器(RAM)的专用于由SSD控制的部分,在本文中被称作主机内存缓冲区(host memorybuffer,HMB)。SSD使用连接的主机装置上的HMB可常常改进其性能和响应性。然而,SSD存储的性能和响应性改进可能以拖垮总体系统性能为代价。举例来说,归因于对于例如PCIe总线等数据总线或其它主机/装置共享资源的争用,SSD大量使用主机上的HMB可能导致主机上的主机性能或电力问题。
发明内容
本公开一般涉及一种非易失性存储器系统。一种非易失性存储器系统,其包括:接口,接口配置成使非易失性存储器系统与主机通信,主机包括主机内存缓冲区和命令队列;非易失性存储器;以及控制器,其与非易失性存储器和接口通信,其中控制器配置成:确定与主机上的命令队列中的命令集的工作负荷种类相关联的第一延迟周期和第二延迟周期;向由控制器对主机内存缓冲区的第一存储器区域作出的所有存取添加第一延迟周期以执行命令集;向由控制器对主机内存缓冲区的第二存储器区域作出的所有存取添加第二延迟周期以执行命令集,以及在执行命令集之后,动态地修改第一延迟周期和第二延迟周期中的一或两者,以说明执行命令集花费的时间和执行命令集的预期时间之间的变化;其中:第一延迟周期不同于第二延迟周期;且第一存储器区域不同于第二存储器区域。
附图说明
图1A是示例非易失性存储器系统的框图。
图1B是示出示例性存储模块的框图。
图1C是示出阶层式存储系统的框图。
图2A是示出非易失性存储器系统的控制器的示例性组件的框图。
图2B是示出非易失性存储器存储系统的非易失性存储器的示例性组件的框图。
图3是示出块和字线布置的非易失性存储器电路阵列的实例。
图4是图2A中展示的主机RAM的主机内存缓冲区和不同区域的更详细视图的框图。
图5示出可由存储装置执行的不同工作负荷交易的实例,以及所述交易中的命令中的操作的实例。
图6是示出图5的读取命令的更详细版本和可包含在所述工作流程中的PCIe存取的流程图。
图7是示出调整对主机内存缓冲区的区域的存储装置存取的方法的流程图。
图8是示出用于基于工作负荷种类确定对不同主机内存缓冲区区域的存储装置存取速率的调整的离线建模方法的流程图。
图9是示出用于基于关于时延和响应性的实际主机数据确定对不同主机内存缓冲区区域的存储装置存取速率的调整的在线建模方法的流程图。
具体实施方式
为了解决经由主机内存缓冲区(HMB)使用改进存储装置性能但维持所要总体系统性能的挑战,提供一种自适应地调整服务质量的系统和方法。所述系统和方法识别HMB的不同区域的存取需求和资源使用,且调整强加于对HMB的不同区域的存取的相应延迟。在不同实施方案中,所述系统和方法配置成限制交易的特定步骤中的处理量以便通过减少例如PCIe接口等数据接口上的争用来改进总体主机响应性。存储装置控制器内的HMB存取修改模块可检测何时HMB正选通存取性能或带宽。主机可使用例如时延容差报告(LTR)功能等现有PCIe机制指定总带宽或时延最高限值。
根据第一方面,一种非易失性存储器系统包含非易失性存储器和与非易失性存储器通信的控制器。所述控制器配置成存储和检索来自与非易失性存储器系统通信的主机上的主机内存缓冲区的数据。所述控制器进一步配置成向由控制器对主机内存缓冲区的第一存储器区域作出的所有存取添加第一延迟周期,且向由控制器对主机内存缓冲区的第二存储器区域作出的所有存取添加第二延迟周期,其中所述第一和第二延迟周期不同,且第一存储器区域不同于第二存储器区域。
在另一方面中,一种处理由非易失性存储器系统对主机上的主机内存缓冲区进行的存储器存取的方法可包含在非易失性存储器系统中在离线建模过程中确定初始主机内存缓冲区存取定时,并存储所述初始主机内存缓冲区存取定时。所述方法可进一步包含识别要由非易失性存储器系统的控制器执行的命令的工作负荷种类(类型),以及根据初始主机内存缓冲区存取定时并基于所识别工作负荷种类存取主机内存缓冲区。所述方法还可包含响应于从主机接收主机响应时延数据而修改初始主机内存缓冲区存取定时。
根据另一方面,公开一种非易失性存储器系统,其可具有非易失性存储器和与非易失性存储器通信的控制器。控制器可包含用于以下操作的构件:在离线建模过程中确定初始主机内存缓冲区存取定时,以及将初始主机内存缓冲区存取定时存储在非易失性存储器系统中。控制器还可包含用于以下操作的构件:识别要由非易失性存储器系统的控制器执行的命令的工作负荷种类,以及根据初始主机内存缓冲区存取定时并基于所识别的工作负荷种类存取主机内存缓冲区。此外,控制器可包含用于以下操作的构件:响应于从主机接收到主机响应时延数据而修改初始主机内存缓冲区存取定时。
现参看图1A,展示示出非易失性存储器(NVM)系统100的框图。NVM系统100包含控制器102和可由一个或多个非易失性存储器裸片104组成的非易失性存储器104。如本文中所使用,术语裸片指代形成于单个半导体衬底上的一组非易失性存储器单元和用于管理那些非易失性存储器单元的物理操作的相关联电路。控制器102与主机系统介接,且将用于读取、编程和擦除操作的命令序列传输到非易失性存储器裸片104。
控制器102(其可以是快闪存储器控制器)可采取处理电路、一个或多个微处理器或处理器(在本文中也被称为中央处理单元(CPU))和计算机可读介质的形式,所述计算机可读介质存储可由例如(微)处理器、逻辑门、开关、专用集成电路(ASIC)、可编程逻辑控制器和嵌入式微控制器执行的计算机可读程序代码(例如,软件或固件)。控制器102可配置有硬件和/或固件以执行下文描述和流程图中展示的各种功能。并且,展示为在控制器内部的一些组件也可存储在控制器外部,且可使用其它组件。此外,词组“操作性地通信”可表示直接通信或经由本文可或可未展示或描述的一个或多个组件间接(有线或无线)通信。
如本文中所使用,快闪存储器控制器是管理存储在快闪存储器上的数据且与例如计算机或电子装置等主机通信的装置。快闪存储器控制器除本文中所描述的特定功能性外还可具有各种功能性。举例来说,快闪存储器控制器可使快闪存储器格式化以确保存储器恰当地操作,列出不良快闪存储器单元,且分配备用单元来替换将来故障单元。备用单元的某一部分可用于保持固件来操作快闪存储器控制器和实施其它特征。在操作中,当主机需要从快闪存储器读取数据或将数据写入到快闪存储器时,其将与快闪存储器控制器通信。如果主机提供数据将被读取/写入到的逻辑地址,则快闪存储器控制器可将从主机接收的逻辑地址转换为快闪存储器中的物理地址。快闪存储器控制器还可执行各种存储器管理功能,例如(但不限于)耗损均衡(分布写入以避免耗损原本将会被重复地写入到的特定存储器块)和垃圾收集(在块已满之后,仅将有效数据页移动到新块,如此已满的块可被擦除且再使用)。
非易失性存储器裸片104可包含任何合适的非易失性存储器介质,包含NAND快闪存储器单元和/或NOR快闪存储器单元。存储器单元可采取固态(例如,快闪)存储器单元的形式,并且可以是可一次编程、可少次编程或可多次编程的。存储器单元还可为单级单元(SLC)、多级单元(MLC)、三级单元(TLC),或使用其它现今已知或将来开发的存储器单元层级技术。并且,存储器单元可以二维或三维方式制造。
控制器102和非易失性存储器裸片104之间的接口可以是任何合适的快闪接口,例如双态切换模式(Toggle Mode)200、400或800。在一个实施例中,NVM系统100可以是基于卡片的系统,例如安全数字(SD)或微安全数字(微SD)卡。在替代实施例中,NVM系统100可以是嵌入式存储器系统的一部分。
尽管在图1A中示出的实例中,NVM系统100包含控制器102和非易失性存储器裸片104之间的单个通道,但本文中所描述的主题不限于具有单个存储器通道。举例来说,在一些NAND存储器系统架构中,例如在图1B和1C中,取决于控制器能力,控制器和NAND存储器装置之间可存在2、4、8或更多个NAND通道。在本文中所描述的任何实施例中,控制器和存储器裸片之间可存在超过单个通道,即使图中展示单个通道。
图1B示出包含多个NVM系统100的存储模块200。如此,存储模块200可包含存储控制器202,其与主机以及包含多个NVM系统100的存储系统204介接。存储控制器202和NVM系统100之间的接口可以是总线接口,例如串行高级技术附件(SATA)或外围组件快速接口(PCIe)接口。在一个实施例中,存储模块200可以是比如在笔记本电脑和平板电脑等便携式计算装置中所见的固态驱动器(SSD)。
图1C是示出阶层式存储系统的框图。阶层式存储系统210包含多个存储控制器202,所述多个存储控制器中的每一个控制相应存储系统204。主机系统212可经由总线接口存取阶层式存储系统内的存储器。在一个实施例中,总线接口可以是非易失性存储器快速接口(NVMe)接口或以太网光纤通道(FCoE)接口。在一个实施例中,在图1C中示出的系统可以是可由多个主机计算机存取的可安装在机架上的大容量存储系统,例如在数据中心或需要大容量存储的其它位置中所见的大容量存储系统。
图2A是示出NVM系统100中的控制器102的示例性组件的框图。控制器102包含与主机介接的前端模块108、与所述一个或多个非易失性存储器裸片104介接的后端模块110,以及执行现将详细描述的功能的各种其它模块。模块可例如采取以下形式:设计成与其它组件一起使用的经封装功能硬件单元、可由通常执行相关功能中的特定功能的(微)处理器或处理电路执行的程序代码(例如,软件或固件)的一部分,或与较大系统介接的自含式硬件或软件组件。
控制器102的模块可包含在控制器102的裸片上存在的主机内存缓冲区(HMB)存取修改模块112。如下文所描述,HMB存取修改模块112与控制器协作可提供用于相对于对主机212上的主机内存缓冲区(HMB)218进行的NVM系统存取分析存取模式和时延的功能性。HMB存取修改模块112还可含有用于实施对HMB 218进行的NVM系统存取中的延迟来维持存储操作中的总体低时延的功能性,所述总体低时延根据同步命令或由主机以总计低队列深度发送的命令之间的时间来测量。HMB存取修改模块112可基于时延和存取模式的进行中的测量来动态地调整HMB 218存取延迟时间。并且,HMB存取修改模块112可实施对HMB 218内的存储器的不同区域的不同存取延迟。
缓冲区管理器/总线控制器114管理随机存取存储器(RAM)116中的缓冲区且控制控制器102的内部总线仲裁。只读存储器(ROM)118存储系统启动代码。尽管图2A中示出为与控制器102分开定位,但在其它实施例中,RAM 116和ROM 118中的一或两者可定位于控制器102内。在另外其它实施例中,RAM 116和ROM 118的部分可位于控制器102内以及控制器外。此外,在一些实施方案中,控制器102、RAM 116和ROM 118可位于单独的半导体裸片上。RAM116可以是一种或多种类型的RAM中的任一种,例如SRAM或DRAM。
在控制器102外部、在控制器内部或存在于控制器102外部及内部的NVM系统100中的RAM 116可含有若干项目,包含NVM系统100的一条或多条逻辑到物理映射表的副本。RAM116可含有由控制器102搜集的所记录的非易失性存储器性能数据。图2A还示出可与NVM系统100一起使用的主机系统212的实例。主机系统212可包含主机处理器214和例如易失性和/或非易失性存储器等存储器。易失性存储器RAM 216的实例在此实例中展示。此外,主机212可将其存储器的一部分专用于实际上为主机212上的存储器的主机内存缓冲区218,但由主机处理器214专用以供NVM系统100的控制器102使用和存取。如下文更详细地描述,主机内存缓冲区218可供NVM系统100用作NVM系统100上的RAM 116的替代或补充,用于存储由NVM系统100使用的一些或所有固件或其它数据。
再次参看控制器102,前端模块108包含主机接口120和物理层接口(PHY)122,其提供与主机或下一层级存储控制器的电接口。主机接口120的类型的选择可取决于正使用的存储器的类型。主机接口120的实例包含(但不限于)SATA、SATA Express、SAS、光纤通道、USB、UFS、PCIe/AHCI和PCIe/NVMe。主机接口120通常促进数据、控制信号和定时信号的传送。尽管预期上述接口中的任一个,但在本文中所描述的实施方案中,论述PCIe/NVMe接口,其中PCIe为物理接口,且NVMe为可使用PCIe用于其物理传递的逻辑接口。在利用PCIe的主机212和NVM系统100的型式中,HMB存取修改模块112可通过修改由HMB 218的NVM系统100经由主机212上的PCIe总线220进行的存取(用于除主机起始的数据传送以外的目的)来解决时延和主机电力问题。如本文中更详细描述,HMB存取修改模块112可基于来自主机212的隐式或显式反馈选择性地限制NVM系统100进行的特定PCIe存取的速率。
后端模块110包含误差校正控制器(ECC)引擎124,其编码从主机接收的数据字节且对从非易失性存储器104读取的数据字节进行解码和误差校正。应用于主机数据以创建码字的ECC可以是若干类型的ECC中的任一个,例如BCH代码(或其它循环误差校正代码)或可用于恢复高数目的误差位的低密度奇偶校验(LDPC)代码,其中误差可来自各个存储器单元。预期此类型的ECC由ECC引擎124应用且在编程之前最后使用并在读取时首次使用。后端模块110还可包含异或(XOR)引擎125,其用于管理针对NVM系统100的XOR处理。
命令定序器126产生例如编程和擦除命令序列等命令序列以传输到非易失性存储器裸片104。存储器接口130将命令序列提供到非易失性存储器裸片104,且从非易失性存储器裸片104接收状态信息。在一个实施例中,存储器接口130可以是双数据速率(DDR)接口,例如双态切换模式200、400或800接口。快闪控制层132控制后端模块110的总体操作。
图2A中示出的NVM系统100的额外组件包含介质管理层138,其执行非易失性存储器裸片104的存储器单元的耗损均衡并管理映射表和逻辑到物理映射或读取任务。NVM系统100还包含例如外部电接口、外部RAM、电阻器、电容器或可与控制器102介接的其它组件等其它离散组件140。在替代实施例中,物理层接口(PHY)122、介质管理层138和缓冲区管理/总线控制器114中的一个或多个是控制器102中非必需的任选组件。
图2B是更详细地示出非易失性存储器裸片104的示例性组件的框图。非易失性存储器裸片104包含外围电路141和非易失性存储器阵列142。非易失性存储器阵列142包含用于存储数据的非易失性存储器单元。非易失性存储器单元可以是任何合适的非易失性存储器单元,包含二维和/或三维配置中的NAND快闪存储器单元和/或NOR快闪存储器单元。地址解码器148、150可用于存取非易失性存储器阵列142中的信息。外围电路141包含将状态信息提供到控制器102的状态机152。非易失性存储器裸片104进一步包含数据高速缓存156,其高速缓存正从非易失性存储器阵列142的非易失性存储器单元读取或正编程到非易失性存储器单元的数据。数据高速缓存156包括用于非易失性存储器阵列142的存储器页中的每一数据位的数组数据锁存器158。因此,每一组数据锁存器158在宽度上可以是一页,且多组数据锁存器158可包含在数据高速缓存156中。举例来说,对于布置成存储每页n个位的非易失性存储器阵列142,每一组数据锁存器158可包含N个数据锁存器,其中每一数据锁存器可存储1个数据位。
在一个实施方案中,单独的数据锁存器可以是具有两个稳定状态且可存储1个数据位的电路,例如由NAND门构成的设定/复位或SR锁存器。数据锁存器158可充当仅在通电时保持数据的一种类型的易失性存储器。若干已知类型的数据锁存器电路中的任一个可用于每一组数据锁存器158中的数据锁存器。每一非易失性存储器裸片104可具有其自身的数组数据锁存器158和非易失性存储器阵列142。外围电路141包含将状态信息提供到控制器102的状态机152。外围电路141还可包含可由控制器102使用以将数据传入传出数据锁存器158的额外输入/输出电路,以及并行操作以感测非易失性存储器阵列142中的存储器单元页的每一非易失性存储器单元中的电流的感测模块阵列。每一感测模块可包含感测放大器以检测与相应感测模块通信的存储器单元的传导电流是否高于或低于参考电平。
图3中示出示例NAND阵列。虽然在NAND阵列中提供大量全局位线,但为了阐释的简单在图5中仅展示四个此类线路302-308。若干串联连接的存储器单元串310-324连接于这些位线中的一个和参考电位之间。使用存储器单元串314作为代表,多个电荷存储存储器单元326-332在串的任一端与选择晶体管334和336串联连接。当致使串的选择晶体管导电时,所述串连接于其位线和参考电位之间。接着一次对所述串内的一个存储器单元进行编程或读取。
图3的字线338-344分别延伸跨越若干存储器单元串中的每一个中的一个存储器单元的电荷存储元件,且门346和350控制串的每一端处的选择晶体管的状态。使共享共同字线和控制栅极线338-350的存储器单元串形成一起被擦除的存储器单元块352。此单元块含有可同时以物理方式擦除的最小数目的单元。一次对沿着字线338-344中的一个的一个存储器单元行进行编程。常规地,NAND阵列的行以规定的循序次序编程,在此情况下以沿着字线344的最接近于连接到接地或另一共同电位的串的末端的行开始。接下来对沿着字线342的存储器单元行进行编程,等等,遍及块352。
第二块354是类似的,其存储器单元串连接到与第一块352中的串相同的全局位线但具有一组不同的字线和控制栅极线。字线和控制栅极线由行控制电路驱动到其恰当操作电压。如果系统中存在一个以上平面,则一个存储器架构使用在它们之间延伸的共同字线。或者可存在共享共同字线的两个以上平面。在其它存储器架构中,分别地驱动各个平面的字线。虽然已使用图3中示出的示例NAND阵列来描述用于在前向方向中将数据写入到存储器块的过程,但为了在前向方向或相反方向的任一方向中将数据写入到存储器块,控制器可改变存储器单元串的哪一端连接到接地或其它共同电位。
非易失性存储器104中的非易失性快闪存储器阵列142可如上文所说明布置在存储器单元块中,其中存储器单元块是擦除单位,即,可一起以物理方式擦除的最小数目的存储器单元。然而,为了增加并行性,块可以较大元块为单位操作。来自存储器单元的至少两个平面中的每一个的一个块可逻辑上链接在一起以形成元块。每一块进一步划分成多个页和/或字线,其中每一页或字线通常是块中的最小可单独存取(可读)部分的例项。在一些实施方案中,例如对于一些类型的快闪存储器,数据集的最小可单独存取单位为扇区,其是页的子单位。因此,块可包含多个页,其中每一页含有多个扇区,且每一扇区是用于将数据写入到NVM系统100或从NVM系统100读取数据的最小数据单位。
图3中所公开的块在本文中被称作物理块,因为其涉及如上文所论述的物理存储器单元的群组。如本文中所使用,逻辑块是限定为具有与物理块相同的大小的地址空间的虚拟单位。每一逻辑块可包含与从主机接收的数据相关联的逻辑块地址(LBA)范围。LBA接着映射到其中以物理方式存储数据的NVM系统100中的一个或多个物理块。
参看图4,展示例如主机212(图2A)上的RAM 216等主机212上的物理存储器的实施方案的更详细视图。RAM 216的在NVM系统100的控制下被分配用于主机内存缓冲区(HMB)218的部分可具有多个不同区域,每一区域含有与其它区域不同类型的数据。这些区域可包含含有用于NVM系统100的逻辑到物理映射数据的快闪转译层(FTL)映射区域222、含有固件叠加数据的固件叠加区域224,以及用于NVM系统100上的错误校正的异或(XOR)表226的区域。预期HMB 218内的额外或其它区域。主机RAM 216的主机控制区域可包含若干项目中的任一个,例如用于临时存储正写入到NVM系统100的主机数据(例如,与主机写入命令相关联的数据)或从NVM系统上的存储位置检索的数据(例如,基于主机读取命令存取的数据)的一般数据缓冲区228。主机RAM 216还可包含含有一个或多个命令队列和物理区域指针(PRP)的单独区域230。PRP可以是识别与命令队列中的各种命令相关联的数据驻留在数据缓冲区228中何处的指针。
利用上文描述的NVM系统100和主机212布置,可实施一种用于自适应地调整总体系统服务质量的方法。作为第一步骤,HMB存取修改模块112可构建针对特定交易对HMB 218的不同区域采取多少次和/或多长时间的存取的模型,其中交易可限定为命令集。举例来说,一个交易可以是打开因特网浏览器所需的命令集,而另一交易可以是打开例如Microsoft OUTLOOK等电子邮件应用所需的一组操作。
图5中的交易502的假想序列中的每一个可包含若干命令504。举例来说,图5的假想交易1展示包含三个读取命令、一个写入命令和微调命令的命令序列。在每一读取或写入命令旁列出开始地址(在物理主机内存中)和数据长度,指示随命令一起提供的开始和停止地址。从NVM系统的视角来看,对与交易相关的特定应用(例如,浏览器或电子邮件)的了解不是必要的,且实际上,HMB存取修改模块112注意到组成所述交易的命令的模式,且可向特定模式的命令指派工作负荷分类。在一个实施方案中,可通过不进行主机操作的每一交易之间的某一预定最小闲置时间510的存在来识别单独交易的开始。
在每一交易的每一命令504(例如,读取、写入或微调)内,执行一个或多个操作。举例来说,图1中展示的交易1的读取命令506可具有以预定次序执行的多个操作508。读取命令506的操作508可包含从命令队列的获取、PRP查找、HMB存取、NAND存储器存取和完成步骤。操作508中的每一个具有测得的响应时间,其可由主机接口模块120确定。因为HMB 218存取时间受主机RAM 216(其可为动态RAM)的总体时延影响,所以可由HMB存取修改模块112相对于如本文所论述的其它主机RAM时延来调整HMB存取时延。本文中所描述的自适应算法技术配置成测试不同主机RAM区域之间的带宽的不同比率,且为每种类型的工作负荷找到改进的解决方案。此分析可周期性地执行以找到主机内存存取比率。
图6中示出图5中展示的读取命令506中的操作的更详细实例。图6示出读取命令的一个操作流程且提供将发生PCIe接口存取(在图6中由邻近流程图中的相关步骤的星号(*)指示)的实例。再次,此实例假定PCIe接口和经由PCIe接口对主机RAM 216的主机212和NVM系统100存取所存在的可能的争用和性能问题。还预期其它接口和相关联存取争用。应注意,当同时提交或仲裁多个读取时,一些存取可进行汇总。
当读取命令可供NVM系统100执行时,控制器102将首先从主机RAM 216中的队列/PRP区域230获取所述命令(602处)。在一些实施方案中,队列可被指定为提交队列(SQ)。控制器102将接着解码和解析所述命令(604处)。如果命令包含物理区域页(PRP)列表,则控制器102将从主机RAM 216中的队列/PRP区域230获取PRP列表(606、610处)。如果不包含PRP列表,则控制器102确定提供于读取命令中的逻辑地址的当前逻辑到物理映射信息的位置(608处)。如果映射信息已经在NVM系统RAM 116中,则其从NVM系统RAM 116检索(612处),如果其需要从非易失性存储器104检索则其从非易失性存储器104检索(614处),且如果NVM系统100使用了主机212上的HMB 218来存储映射则使用PCIe存取从HMB 218检索映射信息(616处)。
取决于HMB 218中的FTL映射区域222中维持的映射表信息的量和将映射表信息的不同部分调换到HMB 218中的需求,举例来说,如果NVM系统100使用HMB 218用于映射信息存储且正被搜索的映射当前不在HMB 218中,则映射信息可能需要调换到HMB 218中(618处)。当需要映射信息的这种调换时,控制器102将需要进行PCIe存取来更新映射信息(例如HMB 218的FTL映射区域222)(622处)。一旦已获得读取命令的映射信息,则控制器102将从非易失性存储器104在从与读取命令相关联的所检索物理地址处检索(获取)数据(620处)。
如果发生异常(624处),即检测到指示从非易失性存储器104的读取存在问题的某事件,则可能需要从HMB 218的固件叠加区域224获取异常固件叠加以在完成读取操作和传信完成之前处置检测到的问题(630、632、634处)。如果在从非易失性存储器104的读取中未检测到异常(624处),则从非易失性存储器104读取的数据传送到主机RAM 216的数据缓冲区228中的适当的数据缓冲区,且控制器102传信对主机212的读取完成(626、628处)。叠加获取(630)和到主机的数据传送(626)两者包含从NVM系统的PCIe存取。
为了经由正用于存取主机212的例如NVM系统100等装置的特定数据总线协议管理对主机RAM 216的存取中的可能争用,执行一种方法和系统,用于观察对HMB 218的不同区域的存取以及通常针对不同工作负荷对主机RAM 216的存取,且接着校准不同存取类型的存取速率的定时。如图7的流程图中所指示,最基本的实施方案是由NVM系统100依据工作负荷种类对HMB存取建模且接着相对于非HMB主机RAM 216区域改变对HMB 218的存取速率。回归建模中的有效性量度可以是如正由NVM系统100接收的工作负荷所确定的主机212周转时间的总体减少。主机周转时间是从命令提交到NVM系统100的装置队列(例如主机RAM 216的区域230)直至最终中断传信完成的总持续时间。因为测量由NVM系统100的控制器102进行,所以将针对交易中的每一命令504测量周转时间(时延)。参看图5中的示例读取命令506,控制器102将测量从元件508中第一操作的开始到最后一个操作的时间。
参看图7,用于对HMB存取建模的第一步骤是HMB存取修改模块112识别工作负荷的种类,例如交易(例如图5的交易1)中的命令的集合,且接着由控制器102检索已经确定为对于保持所述工作负荷种类的主机响应性为最佳的一组先前建模的HMB存取延迟(702、704处)。所述工作负荷的存取时间(延迟)和优先级可从NVM系统100(或HMB 218)上的RAM 116检索且也可存储在非易失性存储器104中。当HMB存取修改模块112正确定工作负荷种类且检索/应用相关联HMB存取延迟和优先级信息以供由NVM系统100用于在所识别工作负荷种类期间对主机RAM 216的存取时,其还周期性地检查最新性能,例如给定工作负荷种类的实际时延和响应时间以查看它们是否符合从先前建模预期的预期HMB存取时间和时延(706处)。当实际时延和/或其它性能标准与预期和建模性能相差预定量或百分比时,重新讨论对特定工作负荷种类建模的过程以使用所述工作负荷种类的最新观察结果作为对于修正后的建模的输入来修改HMB 218存取延迟、HMB区域存取优先级和其它性能参数(708处)。相比而言,当实际测得的性能在先前估计的性能的预定范围或百分比内时(706处),不需要执行重新计算,且辨识下一工作负荷的种类的过程再次开始。在需要时,基于检测到的相对于预期时延的变化,HMB 218存取延迟时间的调整或变化可包含控制器使对HMB 218中的区域中的一个或多个的存取延迟时间增加或减少相同或不同的相应量。
举例来说,如图8和9中所示出,HMB存取修改模块112可使用模型构建方法的一部分来识别HMB存取问题,且周期性地更改NVM系统100对HMB 218的存取时间以维持所要主机-NVM系统性能水平。图6示出可由HMB存取修改模块112执行或可改为在制造时执行的离线分析过程。HMB存取修改模块112可针对例如电子邮件、网络浏览、文字处理等常见应用应用示例工作负荷,例如若干预定交易,且可测量主机内存存取时间(802处)。控制器102的HMB存取修改模块112接着可将建模过程应用于测得的数据以针对每一HMB区域(例如图4的实施例中的HMB 218的FTL映射222、固件叠加224和XOR表226区域)进行估计,以确定不同示例工作负荷的最佳HMD 218存取分布和存取时间(804处)。
建模过程可涉及预先确定不同工作负荷种类,且模型可以是若干已知回归模型中的任一种。例如图5的交易1和交易2的两个示例工作负荷种类等工作负荷种类可由控制器设计者或由主机212预定义且在离线模式中在无实况数据的情况下计算。这些工作负荷种类可稍后由HMB存取修改模块112在NVM系统100使用期间使用突发检测机制来调整。可利用若干突发检测机制中的任一个,且其可包含控制器102在预定时间周期内测量呈所接收数据量或所接收的不同写入命令的数目的形式的例如主机写入活动等参数。一些合适的突发检测机制的实例可见于U.S.9,569,352,其全文以引用的方式并入本文中。
建模过程可包含使用机器学习分类算法,例如支持向量机(SVM)、高斯混合(Mixture-Of-Gaussians)、K最接近相邻者(K-Nearest-Neighbors)、k均值集群和其它已知建模算法。选定的建模算法可应用于特定工作负荷种类且可归于那些种类中的一个。每一种类涉及某一组/系列的存取时间。提供到建模算法的相关特征可包含读取分块大小、存取频率、存取类型(随机/循序)等。给定分类为工作负荷类型中的一个,控制器102可采取不同策略来对不同HMB区域存取以及对于所述区域中的每一个的预期存取时间区分优先级。
K均值算法的实例在下文可见:
给定一组观察结果(x1,x2,…,xn),其中每一观察结果为d维实向量(此处,d为我们希望保持的相关特征的数目,且n为我们希望分类的存取的数目),k均值集群旨在将n个观察结果分区为k(≤n)个集合S={S1,S2,…,Sk}(此处k将为我们可识别的不同工作负荷的数目)以便使群集内平方和(WCSS)(群集中的每一点到K中心的距离函数的总和)最小化。换句话说,其目标是找到;
其中μi为Si中的点的均值。
可由控制器102使用来对存取分布和时间建模的替代性机器学习算法可包含回归型机器学习算法,例如一般线性模型(GLM)或对数回归以便预测与当前存取情境相关的时延/处理量/功率。所采取的决策相应地可基于给定阈值或比较(例如,当当前HMB存取情境偏离于给定时延时,起始HMB处的物理位置的调换动作)。
使用来自不同存取区域的反馈,且给定工作负荷类型的分类(如先前实施例中所展示),HMB存取修改模块可通过遵循回归型机器学习算法来预测每一HMB区域222、224、226或所有主机RAM 216区域的行为。可经由HMB存取修改模块112执行若干回归型算法中的任一个。合适的机器学习回归型算法可包含一般线性模型(GLM)或对数回归以便预测与当前HMB 218存取情境相关的时延/处理量/功率。
GLM模型可经训练使得其针对例如从突发开始经过的时间、从先前命令过去的时间等一系列存取时间和特征适合每一工作负荷情境的所有存取区域上的最佳存取时间。训练可离线进行,例如在无主机命令待决时在制造或装置起始环境中进行。与每一存取区域(根据其最大数目)相关联的模型产生的权重、存取区域优先级或HMB存取延迟信息可存储在控制器102中,使得不会由于此计算而发生时延影响(806处)。
如上文相对于图7所提到,对于不同预定种类的工作负荷的存取优先级和HMB区域存取延迟的预定建模有助于开始HMB存取的存储装置管理,但可能需要每一HMB区域的存取延迟和优先级值的周期性调整。如图9所示,相比于图8的离线建模,基于实际测量值估计每一HMB区域所需的将来存取时间的在线过程允许HMB存取修改模块112提供对存取延迟值的动态调整。依据主机工作负荷中的各种命令和操作的实际处理,HMB存取修改模块112观察特征数据(例如操作中的数据分块大小、HMB 218的存取频率和其它参数),且将工作负荷分类为“k”个预定工作负荷种类中的一个(902、904处),其中k指代已经为NVM系统100限定的工作负荷种类的整数数目。
控制器102的HMB存取修改模块112接收关于时延的测量的最新特征数据,包含最后HMB区域存取时间、从突发开始经过的响应时间,以及实现所要性能所需的所估计将来存取时间/延迟。在高层级处,此所要性能可限定为主要同步的命令序列集的最小周转时间(即,对于低命令队列深度)或主要异步的命令序列的最高处理量(即,对于高总计队列深度)(906处)。因此,特定工作负荷的给定HMB区域的HMB存取时间是实现或最接近于实现如上文限定的所要性能的HMB存取时间。使用图8的离线分析的相同建模技术和此最新接收的输入,HMB存取修改模块112估计将来存取/延迟时间(908处)。如果存在差异,或在一些实施方案中差异超过最后确定的存取/延迟时间和新估计的数字之间的预定阈值,则将一组修正后的HMB存取时间和优先级数据存储在NVM系统100中以供在相关联工作负荷种类中的下一组操作中使用(910处)。
HMB存取修改模块112接着可使用该组修正后的HMB存取和优先级数据将不同存取延迟应用于HMB 218的不同区域,因此减少争用问题以缩短周转时间并增加主机命令的命令处理量。举例来说,HMB存取修改模块112可在由控制器102对HMB 218的第一存储器区域作出的所有存取中添加第一延迟周期,且在由控制器102对HMB 218的第二存储器区域作出的所有存取中添加第二不同的延迟周期。
在本申请中,例如本申请中描述的半导体存储器装置等半导体存储器装置可包含例如动态随机存取存储器(“DRAM”)或静态随机存取存储器(“SRAM”)装置等易失性存储器装置、例如电阻性随机存取存储器(“ReRAM”)、电可擦除可编程只读存储器(“EEPROM”)、快闪存储器(其也可视为EEPROM的子集)、铁电随机存取存储器(“FRAM”)和磁阻随机存取存储器(“MRAM”)等非易失性存储器装置,和能够存储信息的其它半导体元件。每种类型的存储器装置可具有不同的配置。举例来说,快闪存储器装置可在NAND或NOR配置中配置。
存储器装置可由无源和/或有源元件以任何组合形成。借助于非限制性实例,无源半导体存储器元件包含ReRAM装置元件,其在一些实施例中包含电阻率开关存储元件,例如反熔丝、相变材料等,和任选地转向元件,例如二极管等。进一步借助于非限制性实例,有源半导体存储器元件包含EEPROM和快闪存储器装置元件,其在一些实施例中包含含有电荷存储区域的元件,例如浮动栅极、导电纳米粒子或电荷存储电介质材料。
多个存储器元件可配置成使得它们串联连接或使得每一元件可单独存取。借助于非限制性实例,NAND配置中的快闪存储器装置(NAND存储器)通常含有串联连接的存储器元件。NAND存储器阵列可配置成使得阵列由多个存储器串组成,其中串由共享单个位线且作为群组被存取的多个存储器元件组成。或者,存储器元件可配置成使得每一元件可单独存取,例如NOR存储器阵列。NAND和NOR存储器配置是示例性的,且存储器元件可以其它方式来配置。
定位于衬底内和/或衬底上的半导体存储器元件可在两个或三个维度中布置,例如二维存储器结构或三维存储器结构。
在二维存储器结构中,半导体存储器元件布置于单个平面或单个存储器装置层级中。通常,在二维存储器结构中,存储器元件布置于大体上平行于支撑存储器元件的衬底的主表面延伸的平面中(例如,x-z方向平面中)。衬底可以是上面形成存储器元件的层的晶片,或其可以是在其形成之后附接到存储器元件的载体衬底。作为非限制性实例,衬底可包含例如硅等半导体。
存储器元件可以例如多个行和/或列等有序阵列的形式布置在单个存储器装置层级中。然而,存储器元件可排列于不规则的或非正交的配置中。存储器元件可各自具有两个或两个以上电极或接触线,例如位线和字线。
三维存储器阵列布置成使得存储器元件占据多个平面或多个存储器装置层级,借此形成三维中(即,x、y和z方向中,其中y方向大体上垂直于衬底的主表面,且x和z方向大体上平行于衬底的主表面)的结构。
作为非限制性实例,三维存储器结构可竖直地布置为多个二维存储器装置层级的堆叠。作为另一非限制性实例,三维存储器阵列可布置为多个竖直列(例如,大体上垂直于衬底的主表面,即沿y方向延伸的列),其中每一列在每一列中具有多个存储器元件。所述列可在二维配置中(例如,在x-z平面中)布置,从而产生具有在多个竖直堆叠的存储器平面上的元件的存储器元件的三维布置。三维中的存储器元件的其它配置也可构成三维存储器阵列。
借助于非限制性实例,在三维NAND存储器阵列中,存储器元件可耦合在一起以形成单个水平(例如,x-z)存储器装置层级内的NAND串。或者,存储器元件可耦合在一起以形成横穿多个水平存储器装置层级的竖直NAND串。可设想其它三维配置,其中一些NAND串含有单个存储器层级中的存储器元件,而其它串含有横跨多个存储器层级的存储器元件。三维存储器阵列还可在NOR配置中和ReRAM配置中设计。
通常,在整体式三维存储器阵列中,在单个衬底上方形成一个或多个存储器装置层级。任选地,整体式三维存储器阵列还可具有至少部分在单个衬底内的一个或多个存储器层。作为非限制性实例,衬底可包含例如硅等半导体。在整体式三维阵列中,构成阵列的每一存储器装置层级的层通常形成于阵列的下伏存储器装置层级的层上。然而,整体式三维存储器阵列的邻近存储器装置层级的层可被共享,或在存储器装置层级之间具有介入层。
因而,再次,二维阵列可分别形成且接着封装在一起以形成具有多个存储器层的非整体式存储器装置。举例来说,可通过在单独的衬底上形成存储器层级且接着使存储器层级彼此堆叠来构造非整体式堆叠存储器。衬底可在堆叠之前薄化或从存储器装置层级移除,但因为存储器装置层级初始地形成于单独的衬底上方,所以所得存储器阵列不是整体式三维存储器阵列。此外,多个二维存储器阵列或三维存储器阵列(整体式或非整体式)可形成于单独的芯片上且接着封装在一起以形成堆叠芯片存储器装置。
通常需要相关联电路用于存储器元件的操作以及用于与存储器元件的通信。作为非限制性实例,存储器装置可具有用于控制和驱动存储器元件以实现例如编程和读取等功能的电路。此相关联电路可在与存储器元件相同的衬底上和/或单独的衬底上。举例来说,用于存储器读写操作的控制器可位于单独的控制器芯片上和/或与存储器元件相同的衬底上。
所属领域的技术人员将认识到,本发明不限于所描述的二维和三维示例性结构,而是涵盖如本文所描述的且如所属领域的技术人员所理解的在本发明的精神和范围内的所有相关存储器结构。
已经公开用于NVM系统的方法和系统,其利用主机上的HMB存储器来调整NVM系统对HMB的存取定时以避免归因于由主机和NVM系统对主机RAM的存取所存在的争用而过度影响主机的响应性。描述用于减少正供应主机内存缓冲区(HMB)供NVM系统使用的主机的性能损失的系统和方法。所述系统和方法可使用自适应算法基于来自主机的隐式或显式反馈选择性地限制NVM系统进行的速率特定PCIe存取。所述方法可包含针对多个种类的工作负荷在初始离线分析中对NVM系统的所要HMB存取定时建模,基于实际使用周期性地更新存储在存储装置中的存取定时数据,以及使用当前HMB存取定时信息来修改对主机上的HMB的存储装置控制器存取。例如上文提供的PCIe数据总线实例等主机数据总线上的争用可能降低系统性能,因此限制交易的特定步骤中的处理量以减少此类争用可改进性能。
可通过在回归算法中分别使用模拟(例如,针对不同HMB区域的模拟HMB存取时间)和实际主机时延数据(例如,针对不同HMB区域的所述主机所经历的测得的HMB存取时间),且接着存储分析中确定的存取定时信息以供在不同工作负荷上使用来实现初始离线分析和周期性更新。系统可包含非易失性存储器控制器,其基于各个HMB区域来量化不同主机工作负荷的不同HMB存取定时。
希望将以上详细描述理解为本发明可采取的选定形式的说明,而非对本发明的限定。只有所附权利要求书(包含所有等效物)既定限定所要求的本发明的范围。最后,应注意,本文中所描述的优选实施例中的任一个的任何方面可独自使用或彼此组合使用。
Claims (18)
1.一种非易失性存储器系统,其包括:
接口,所述接口配置成使所述非易失性存储器系统与主机通信,所述主机包括主机内存缓冲区和命令队列;
非易失性存储器;以及
控制器,其与所述非易失性存储器和所述接口通信,其中所述控制器配置成:
确定与所述主机上的所述命令队列中的命令集的工作负荷种类相关联的第一延迟周期和第二延迟周期;
向由所述控制器对所述主机内存缓冲区的第一存储器区域作出的所有存取添加所述第一延迟周期以执行所述命令集;
向由所述控制器对所述主机内存缓冲区的第二存储器区域作出的所有存取添加所述第二延迟周期以执行所述命令集,以及
在执行所述命令集之后,动态地修改所述第一延迟周期和第二延迟周期中的一或两者,以说明执行所述命令集花费的时间和执行所述命令集的预期时间之间的变化;
其中:
所述第一延迟周期不同于所述第二延迟周期;且
所述第一存储器区域不同于所述第二存储器区域。
2.根据权利要求1所述的非易失性存储器系统,其中:
所述主机内存缓冲区包括易失性存储器;且
所述第一存储器区域含有第一类型的数据。
3.根据权利要求2所述的非易失性存储器系统,其中:
所述第一类型的数据包括逻辑到物理映射表数据;且
所述第二存储器区域包括用于所述非易失性存储器系统的固件叠加数据。
4.根据权利要求1所述的非易失性存储器系统,其中所述控制器进一步配置成响应于从所述主机接收到从所述控制器发送到所述主机内存缓冲区的命令的时延测量值来动态地改变所述第一延迟周期。
5.根据权利要求1所述的非易失性存储器系统,其中所述控制器进一步配置成响应于从所述主机接收的时延测量值来周期性地调整对所述主机内存缓冲区的多个存储器区域中的每一个的控制器存取的延迟周期。
6.根据权利要求1所述的非易失性存储器系统,其中所述命令集包括读取、写入或微调所述非易失性存储器中的数据的命令。
7.根据权利要求6所述的非易失性存储器系统,其中所述命令集中的命令包括至少一个操作,包含由所述控制器对所述主机内存缓冲区的所述第一或所述第二存储器区域进行的存取。
8.根据权利要求1所述的非易失性存储器系统,其中所述控制器进一步配置成在执行所述命令集之后:
将执行所述命令集花费的所述时间与执行所述命令集的所述预期时间进行比较。
9.根据权利要求1所述的非易失性存储器系统,其中所述非易失性存储器包括由三维存储器结构形成的衬底。
10.一种处理存储器存取的方法,所述方法包括:
在非易失性存储器系统中执行以下操作,所述非易失性存储器系统包括接口,所述接口配置成使所述非易失性存储器系统与主机通信,所述主机包括主机内存缓冲区和命令队列:
在离线建模过程中确定第一延迟周期和第二延迟周期;
识别所述主机上的所述命令队列中的要由所述非易失性存储器系统的控制器执行的命令集的工作负荷种类,其中所述工作负荷种类与所述第一延迟周期和所述第二延迟周期相关联;
向由所述控制器对所述主机内存缓冲区的第一存储器区域作出的存取添加所述第一延迟周期以执行所述命令集;
向由所述控制器对所述主机内存缓冲区的第二存储器区域作出的存取添加所述第二延迟周期以执行所述命令集;
响应于执行所述命令集花费的时间和执行所述命令集的预期时间之间的变化,从所述主机接收主机响应时延数据;和
响应于接收所述主机响应时延数据,修改所述第一延迟周期和第二延迟周期中的一或两者以说明所述变化。
11.根据权利要求10所述的方法,其中所述离线建模过程包括所述控制器针对不同工作负荷种类将回归算法应用于模拟主机内存缓冲区存取时间来估计所要主机内存缓冲区存取定时。
12.根据权利要求11所述的方法,进一步包括将所述回归算法应用于所接收的主机响应时延数据。
13.根据权利要求10所述的方法,其中,所述非易失性存储器系统包括三维存储器阵列。
14.一种非易失性存储器系统,其包括:
接口,所述接口配置成使所述非易失性存储器系统与主机通信,所述主机包括主机内存缓冲区和命令队列:
非易失性存储器;以及
与所述非易失性存储器和所述接口通信的用于以下操作的构件:
在离线建模过程中确定第一延迟周期和第二延迟周期;
识别所述主机上的所述命令队列中的要由所述非易失性存储器系统的控制器执行的命令集的工作负荷种类,第二延迟周期;
向由所述控制器对所述主机内存缓冲区的第一存储器区域作出的存取添加所述第一延迟周期以执行所述命令集;
向由所述控制器对所述主机内存缓冲区的第二存储器区域作出的存取添加所述第二延迟周期以执行所述命令集;
响应于执行所述命令集花费的时间和执行所述命令集的预期时间之间的变化,从所述主机接收主机响应时延数据;和
响应于接收所述主机响应时延数据,修改所述第一延迟周期和第二延迟周期中的一或两者以说明所述变化。
15.根据权利要求14所述的非易失性存储器系统,其中用于确定的构件包括控制器,所述控制器配置成针对不同工作负荷种类将回归算法应用于模拟主机内存缓冲区存取时间。
16.根据权利要求14所述的非易失性存储器系统,其中所述用于修改的构件包括控制器,所述控制器配置成将回归算法应用于所接收的主机响应时延数据。
17.根据权利要求16所述的非易失性存储器系统,其中所述主机内存缓冲区包括在所述非易失性存储器系统的所述控制器的控制下的所述主机上的易失性存储器的部分。
18.根据权利要求14所述的非易失性存储器系统,其中,所述非易失性存储器包括三维存储器阵列。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/808,209 US10712949B2 (en) | 2017-11-09 | 2017-11-09 | Adaptive device quality of service by host memory buffer range |
US15/808,209 | 2017-11-09 | ||
PCT/US2018/052439 WO2019094117A1 (en) | 2017-11-09 | 2018-09-24 | Adaptive device quality of service by host memory buffer range |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111149096A CN111149096A (zh) | 2020-05-12 |
CN111149096B true CN111149096B (zh) | 2023-08-01 |
Family
ID=66328524
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880062933.XA Active CN111149096B (zh) | 2017-11-09 | 2018-09-24 | 借助于主机内存缓冲区范围的自适应装置服务质量 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10712949B2 (zh) |
CN (1) | CN111149096B (zh) |
DE (1) | DE112018004251T5 (zh) |
WO (1) | WO2019094117A1 (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI668569B (zh) * | 2018-03-14 | 2019-08-11 | 群聯電子股份有限公司 | 主機記憶體緩衝區配置方法、記憶體儲存裝置與記憶體控制電路單元 |
US11966329B2 (en) * | 2018-04-12 | 2024-04-23 | Micron Technology, Inc. | Address map caching for a memory system |
JP7407203B2 (ja) * | 2019-05-17 | 2023-12-28 | 長江存儲科技有限責任公司 | スタティックランダムアクセスメモリを有する3次元メモリデバイスのキャッシュプログラム動作 |
JP7323635B2 (ja) | 2019-05-17 | 2023-08-08 | 長江存儲科技有限責任公司 | 3次元メモリデバイス、3次元メモリデバイスを形成するための方法および3次元メモリデバイスを動作させるための方法 |
KR20200143871A (ko) | 2019-06-17 | 2020-12-28 | 삼성전자주식회사 | 스토리지를 포함하는 전자 장치 및 그의 스토리지 이용 방법 |
US11372754B2 (en) | 2020-06-12 | 2022-06-28 | Western Digital Technologies, Inc. | Storage system and method for enabling a software-defined dynamic storage response |
US11734018B2 (en) | 2020-07-17 | 2023-08-22 | Western Digital Technologies, Inc. | Parallel boot execution of memory devices |
US20220027294A1 (en) * | 2020-07-23 | 2022-01-27 | MemRay Corporation | Storage card and storage device |
US11579804B2 (en) * | 2020-08-06 | 2023-02-14 | Western Digital Technologies, Inc. | Device interrupt coalescing with various host behaviors |
JP2022146543A (ja) * | 2021-03-22 | 2022-10-05 | キオクシア株式会社 | 半導体記憶装置、メモリシステム、および方法 |
US11561909B2 (en) | 2021-04-28 | 2023-01-24 | Western Digital Technologies, Inc. | Bandwidth allocation for storage system commands in peer-to-peer environment |
US11625189B2 (en) | 2021-06-28 | 2023-04-11 | Western Digital Technologies, Inc. | Systems and methods for fragmentation management in host buffers |
CN113590506B (zh) * | 2021-08-02 | 2024-10-18 | 联芸科技(杭州)股份有限公司 | Hmb的表项管理方法及固态硬盘的控制系统 |
US11809742B2 (en) | 2021-09-20 | 2023-11-07 | Western Digital Technologies, Inc. | Recovery from HMB loss |
US11893275B2 (en) | 2021-09-20 | 2024-02-06 | Western Digital Technologies, Inc. | DRAM-less SSD with recovery from HMB loss |
CN113867641B (zh) * | 2021-09-29 | 2023-06-02 | 杭州海康存储科技有限公司 | 主机内存缓冲管理方法、装置、以及固态硬盘 |
US11816337B2 (en) * | 2021-12-06 | 2023-11-14 | Western Digital Technologies, Inc. | Enterprise host memory buffer |
US11768606B2 (en) | 2021-12-27 | 2023-09-26 | Western Digital Technologies, Inc. | Maximizing performance through traffic balancing |
CN114741336B (zh) * | 2022-06-09 | 2022-11-25 | 荣耀终端有限公司 | 内存中Host侧缓存区调整方法、电子设备及芯片系统 |
US20240111646A1 (en) * | 2022-09-30 | 2024-04-04 | Western Digital Technologies, Inc. | Hmb multi-segment optimal selection |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106055267A (zh) * | 2015-04-03 | 2016-10-26 | 爱思开海力士有限公司 | 包括主机命令队列的存储器控制器及操作其的方法 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3700335B2 (ja) * | 1997-07-31 | 2005-09-28 | ソニー株式会社 | 映像表示装置および映像表示方法 |
JP2000148656A (ja) * | 1998-11-09 | 2000-05-30 | Mitsubishi Electric Corp | メモリシステム |
CN100524266C (zh) | 2005-07-11 | 2009-08-05 | 辉达公司 | 在总线上以包的形式传输数据传输请求的方法及设备 |
US7647467B1 (en) | 2006-05-25 | 2010-01-12 | Nvidia Corporation | Tuning DRAM I/O parameters on the fly |
US8386650B2 (en) | 2009-12-16 | 2013-02-26 | Intel Corporation | Method to improve a solid state disk performance by using a programmable bus arbiter |
US20110295587A1 (en) * | 2010-06-01 | 2011-12-01 | Eeckhout Lieven | Methods and systems for simulating a processor |
US9741436B2 (en) | 2010-07-09 | 2017-08-22 | Seagate Technology Llc | Dynamically controlling an operation execution time for a storage device |
US9196347B2 (en) * | 2013-03-14 | 2015-11-24 | International Business Machines Corporation | DRAM controller for variable refresh operation timing |
US9569352B2 (en) | 2013-03-14 | 2017-02-14 | Sandisk Technologies Llc | Storage module and method for regulating garbage collection operations based on write activity of a host |
US9244631B2 (en) * | 2013-12-06 | 2016-01-26 | Sandisk Technologies Inc. | Lower page only host burst writes |
KR102211126B1 (ko) | 2014-04-17 | 2021-02-02 | 삼성전자주식회사 | 동작 성능을 조절하는 메모리 시스템 및 메모리 시스템의 동작방법 |
TWI502345B (zh) * | 2014-05-12 | 2015-10-01 | Via Tech Inc | 快閃記憶體控制晶片以及資料儲存裝置以及快閃記憶體控制方法 |
US9563382B2 (en) | 2014-06-05 | 2017-02-07 | Sandisk Technologies Llc | Methods, systems, and computer readable media for providing flexible host memory buffer |
US10268584B2 (en) * | 2014-08-20 | 2019-04-23 | Sandisk Technologies Llc | Adaptive host memory buffer (HMB) caching using unassisted hinting |
US9959146B2 (en) * | 2015-10-20 | 2018-05-01 | Intel Corporation | Computing resources workload scheduling |
US10140036B2 (en) * | 2015-10-29 | 2018-11-27 | Sandisk Technologies Llc | Multi-processor non-volatile memory system having a lockless flow data path |
US10102135B2 (en) | 2016-04-06 | 2018-10-16 | Dell Products, Lp | Dynamically-adjusted host memory buffer |
-
2017
- 2017-11-09 US US15/808,209 patent/US10712949B2/en active Active
-
2018
- 2018-09-24 DE DE112018004251.0T patent/DE112018004251T5/de active Pending
- 2018-09-24 WO PCT/US2018/052439 patent/WO2019094117A1/en active Application Filing
- 2018-09-24 CN CN201880062933.XA patent/CN111149096B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106055267A (zh) * | 2015-04-03 | 2016-10-26 | 爱思开海力士有限公司 | 包括主机命令队列的存储器控制器及操作其的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111149096A (zh) | 2020-05-12 |
WO2019094117A1 (en) | 2019-05-16 |
DE112018004251T5 (de) | 2020-05-07 |
US10712949B2 (en) | 2020-07-14 |
US20190138220A1 (en) | 2019-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111149096B (zh) | 借助于主机内存缓冲区范围的自适应装置服务质量 | |
CN110088724B (zh) | 使用控制器存储器缓冲区进行自适应提前完成发布的系统和方法 | |
CN108628777B (zh) | 动态和自适应中断合并的系统和方法 | |
US10996867B2 (en) | Managing partial superblocks in a NAND device | |
CN110447009B (zh) | 用于自适应命令获取聚合的系统和方法 | |
US9921956B2 (en) | System and method for tracking block level mapping overhead in a non-volatile memory | |
US10032488B1 (en) | System and method of managing data in a non-volatile memory having a staging sub-drive | |
CN112148525B (zh) | 实现更快且经过调节的装置初始化时间 | |
US10452536B2 (en) | Dynamic management of garbage collection and overprovisioning for host stream storage | |
US10250281B2 (en) | ECC decoder having adjustable parameters | |
US9870153B2 (en) | Non-volatile memory systems utilizing storage address tables | |
US10114743B2 (en) | Memory erase management | |
US10776268B2 (en) | Priority addresses for storage cache management | |
US10713157B2 (en) | Storage system and method for improving read performance using multiple copies of a logical-to-physical address table | |
US11281981B2 (en) | Storage system and sorting-based method for random read command prediction in a multi-queue system | |
JP7293458B1 (ja) | ストレージフラグメンテーションを定量化し性能低下を予測するための記憶システム及び方法 | |
US11941295B2 (en) | Data storage device and method for providing an adaptive data path | |
EP3724768A1 (en) | Variable width superblock addressing | |
US11720280B2 (en) | Storage system and method for improving utilization of a communication channel between a host and the storage system | |
US11334256B2 (en) | Storage system and method for boundary wordline data retention handling | |
WO2021118623A1 (en) | Storage system and method for reducing read-retry duration | |
US11487449B2 (en) | Data storage device and method for enabling higher lane utilization in run time via device hints on workload patterns | |
US20230420059A1 (en) | Data Storage Device and Method for Predicting Future Read Thresholds | |
CN118897647A (zh) | 用于逻辑范围锁定的数据存储设备和方法 | |
CN116483254A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20241008 Address after: Delaware, USA Patentee after: SANDISK TECHNOLOGIES Inc. Country or region after: U.S.A. Address before: California, USA Patentee before: Western Digital Technologies, Inc. Country or region before: U.S.A. |