CN110658990A - 具有改善的准备时间的数据存储*** - Google Patents
具有改善的准备时间的数据存储*** Download PDFInfo
- Publication number
- CN110658990A CN110658990A CN201910575759.5A CN201910575759A CN110658990A CN 110658990 A CN110658990 A CN 110658990A CN 201910575759 A CN201910575759 A CN 201910575759A CN 110658990 A CN110658990 A CN 110658990A
- Authority
- CN
- China
- Prior art keywords
- data access
- order
- preparation time
- data
- die
- 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
- 238000002360 preparation method Methods 0.000 title claims abstract description 52
- 238000013500 data storage Methods 0.000 title abstract description 53
- 239000004065 semiconductor Substances 0.000 claims abstract description 15
- 238000000034 method Methods 0.000 claims description 22
- 238000012360 testing method Methods 0.000 claims description 6
- 230000008859 change Effects 0.000 claims description 3
- 238000013507 mapping Methods 0.000 description 35
- 238000007726 management method Methods 0.000 description 10
- 238000012546 transfer Methods 0.000 description 9
- 239000000872 buffer Substances 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 239000007787 solid Substances 0.000 description 7
- 238000011156 evaluation Methods 0.000 description 5
- 238000013144 data compression Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000013403 standard screening design Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 239000010410 layer Substances 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 239000000470 constituent Substances 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000032683 aging Effects 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
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/0604—Improving or facilitating administration, e.g. storage management
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- 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/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/0658—Controller construction 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/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/7205—Cleaning, compaction, garbage collection, erase control
-
- 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/7207—Details relating to flash memory management management of metadata or control data
-
- 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/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
数据存储***可以在利用由远程主机寻址并具有第一顺序的数据访问命令来填充管芯集合队列之前将半导体存储器划分为多个管芯集合。由准备时间模块生成的命令顺序策略将数据访问命令组织到第二顺序,数据访问命令填充通路队列并且如由准备时间模块引导的那样以第二顺序被执行。
Description
发明内容
本公开的各种实施例总体地涉及对存储器的数据访问操作的管理,诸如但不限于,固态驱动器(SSD)中的闪存存储器。
根据一些实施例,数据存储***在利用由远程主机寻址并具有第一顺序的数据访问命令来填充管芯集合队列之前将半导体存储器划分为多个管芯集合。由准备时间模块生成的命令顺序策略将数据访问命令组织到第二顺序,这些数据访问命令填充通路队列并且如由准备时间模块引导的那样以第二顺序被执行。
在各种实施例中,数据存储***在利用由远程主机寻址并具有第一顺序的数据访问命令来填充管芯集合队列之前将半导体存储器划分为多个管芯集合。经历电力中断,其破坏多个管芯集合中的至少一个管芯集合的操作。由准备时间模块生成的命令顺序策略将数据访问命令组织到第二顺序,这些数据访问命令填充通路队列并且如由准备时间模块引导的那样以第二顺序被执行。
其他实施例将数据存储***配置成划分成多个管芯集合的半导体存储器,其中至少一个管芯集合队列填充有由远程主机寻址并具有第一顺序的数据访问命令。由准备时间模块生成的命令顺序策略将填充通路队列的数据访问命令组织到第二顺序,并随后以第二顺序执行数据访问命令。
鉴于以下详细讨论和附图,可以理解可以表征各个实施例的这些和其他特征。
附图简述
图1提供根据各个实施例的数据存储设备的功能块表示。
图2示出了根据一些实施例的表征为固态驱动器(SSD)的图1的设备的各方面。
图3是一些实施例中的图2的闪存存储器的布置。
图4示出了一些实施例中的用于访问图3中的管芯的通路的使用。
图5表示作为存储到图2的闪存存储器的数据布置的映射单元(MU)。
图6示出了根据一些实施例的SSD的GCU管理电路的功能框图。
图7示出了一些实施例中的针对多个不同管芯集合的各种GCU和对应的经验证的GCU的表(TOVG)的布置。
图8显示了根据一些实施例的SSD的GCU管理电路的功能框图。
图9描绘了一些实施例中的针对多个不同管芯集合的各种GCU和对应的经验证的GCU的表(TOVG)的布置。
图10示出了根据各种实施例的可以被写入图1的数据存储设备的示例数据集。
图11传达了示例数据存储***的框图表示,其中可以实践各种实施例。
图12表示根据各种实施例配置的示例数据存储***的部分。
图13显示了可以在各种实施例中利用的示例准备时间模块。
图14示出了根据一些实施例布置和操作的示例数据存储***的部分的框图表示。
图15是可由图1至图14的各个实施例执行的示例通电例程。
详细描述
在没有限制的情况下,本文公开的各种实施例通常涉及管理对数据存储***的不同管芯集合部分的数据访问,以在通电初始化之后提供优化的***准备时间。
在利用多个不同管芯集合的数据存储***中,操作目标是用于在主机工作负载之间提供介质资源的隔离。然而,此类隔离的一个劣势在于,给定的管芯集合的介质工作可能变得非常集中在有限的资源上,这导致操作必须等待资源变得可用。尽管不受限制,但是介质操作中涉及的资源可以是半导体存储器管芯、将控制器连接到半导体存储器管芯的总线接口、缓冲器存储器、纠错编码器和解码器、由硬件和/或固件用于传送请求/状态的数据结构、电力、和电力损失保护预算。
这些资源和其他资源的有限可用性导致主机和介质(诸如NAND闪存存储器)之间的用户数据流方面以及控制流(命令和状态)方面的“背压”。此类背压导致过度使用一个管芯集合,这可能延迟对到其他管芯集合的命令的处理,这导致作为一个整体数据存储***的资源利用不足。因此,可以根据各种实施例优化数据存储***,以提供增加的数据速率、改善的命令完成时间和吞吐量的一致性、以及管芯集合之间的更一致的性能。
固态驱动器(SSD)是将用户数据存储在由固态半导体存储器单元阵列组成的非易失性存储器(NVM)中的数据存储设备。SSD通常具有NVM模块和控制器。控制器控制NVM与主机设备之间的数据传输。NVM通常将是NAND闪存存储器,但也可以使用其他形式的固态存储器。
闪存存储器模块可以被布置为一系列管芯。管芯表示半导体存储器单元的单独的物理块。控制器使用多个通路或通道与管芯通信,其中每个通路连接到管芯的不同子集。可以使用任何相应数量的通路和管芯。可以将管芯组布置成管芯集合,该管芯集合可以与NVMe(非易失性存储器快速)标准相对应。该标准使多个所有者(用户)能够访问和控制给定SSD(或其他存储器设备)的单独的部分。
元数据通常被生成并被用于描述和控制存储到SSD的数据。元数据可以采取一个或多个映射结构的形式,该映射结构跟踪被写入各种GCU(垃圾收集单元)的数据块的位置,这些GCU是作为一个单元被擦除和分配的擦除块的集合。映射结构可以包括顶级映射和一般映射的多个日志更新,尽管可以使用其他形式。
顶级映射提供整体映射结构,该整体映射结构可由控制器访问以服务所接收的主机访问命令(例如,写入命令、读取命令等)。顶级映射可以采用双层映射的形式,其中映射的第一层维持映射页面的位置并且映射的第二层提供闪存转换层(FTL)以提供数据块的逻辑地址与存储这些块的物理地址的关联。可以使用其他形式的映射,包括单层映射和三层或更多层映射,但是各自通常提供前向映射结构,其中指针可以用于指向每个连续块,直到找到最新版本。
可以将反向目录写入各种GCU,并提供通过逻辑地址标识哪些数据块存储在相关的GCU中的本地数据。反向目录(有时也称为脚部(footer))因此为本地存储的块提供物理到逻辑的关联。与顶级映射一样,反向目录可以采用任意数量的合适形式。反向目录在垃圾收集操作期间特别有用,因为反向目录可用于确定哪些数据块仍然是当前的并且应该在擦除GCU中的相关擦除块之前被重新定位。
SSD在维持准确和最新的映射结构上花费了大量资源。然而,对于给定的GCU,有时可能在前向映射和反向目录之间存在不匹配。这些情况通常在垃圾收集时被注意到。例如,前向映射可以指示给定擦除块(EB)中存在X个有效数据块,但是反向目录标识EB中的不同数量Y个有效块。当发生这种类型的不匹配时,可以重新调度垃圾收集操作,或者可以花费更长的时间段来完成,同时***在进行回收操作之前获得正确的计数。
NVMe规范规定,存储设备应能够在指定的时间段内提供保证级别的确定性性能(确定性窗口,或DW)。在DW期间调度垃圾收集操作的范围内,希望确保垃圾收集操作完成将需要的实际时间是准确的估计,以便***决定是否以及何时执行GC操作。
SSD包括顶级控制器电路和半导体存储器模块。提供多个通路或通道以实现控制器与闪存存储器内的管芯之间的通信。容量可以在多个管芯集合之间划分,其中每个管芯集合由不同的所有者/用户控制。基于诸如应用容器或虚拟机环境之类的配置,许多不同的用户可以同时访问给定的SSD并提供促使进行后台操作的数据访问命令,诸如数据读取和数据写入。
由于数据访问命令是由主机发出的,因此当命令无法被立即服务时会出现问题,因为当前正在使用给定资源(诸如通路、存储器管芯、管芯集合或电力)来服务不同的数据存储***操作。一些实施例通过偏离输入数据访问命令顺序来避免数据访问命令服务困难,以避免***资源之间的资源限制/争用。通过监视数据存储***的各种管芯集合上的各种工作负载并基于实时可用***资源按乱序执行数据访问命令和/或后台操作,可以优化数据存储***性能,尤其是在***资源经常耗尽的通电初始化期间。
然而,重新排序或以其他方式执行来自输入序列的数据访问命令可能产生性能问题(诸如写入/读取冲突)。在一些实施例中,可以维护冲突列表,当数据访问命令在队列中执行到期时无法被服务时,将数据访问命令放置在冲突列表中。在各种实施例中,冲突列表具有第一优先级并且被重复地检查以确保命令不被忘记。
这些和其他特征可以在各种不同的数据存储设备中实践,但是各种实施例优化如图1中的简化框表示示出的示例数据存储设备100。设备100具有控制器102和存储器模块104。控制器块102表示基于硬件和/或基于可编程处理器的电路,该电路被配置成用于提供顶级通信和控制功能。存储器模块104包括固态非易失性存储器(NVM),固态非易失性存储器用于存储来自一个或多个主机设备106的用户数据,主机设备诸如其他数据存储设备、网络服务器、网络节点、或远程控制器。
图2显示了通常对应于图1中的设备100的示例数据存储设备110。设备110被配置成固态驱动器(SSD),固态驱动器经由一个或多个***组件接口快速(PCIe)端口与一个或多个主机设备通信,但是可以使用其他配置。预期NVM包括NAND闪存存储器,但是可以使用其他形式的固态非易失性存储器。
在至少一些实施例中,SSD根据NVMe(非易失性存储器快速)标准进行操作,该标准使得不同用户能够分配管芯集合以用于数据的存储。每个管芯集合可以形成命名空间的一部分,该命名空间可以跨越多个SSD或包含在单个SSD内。
SSD 110包括具有前端控制器114、核控制器116和后端控制器118的控制器电路112。前端控制器114执行主机接口(I/F)功能,后端控制器118引导与存储器模块114的数据传输,以及核控制器116为设备提供顶级控制。
每个控制器114、控制器116和控制器118包括单独的可编程处理器,该可编程处理器具有合适的存储器位置中的相关编程(例如,固件,FW),以及用于执行数据管理和传输功能的各种硬件元件。这仅仅是一个实施例的说明;在其他实施例中,单个可编程处理器(或少于/多于三个可编程处理器)可以被配置成使用合适存储器位置中的相关联的FW来执行前端、核和后端处理中的每一个。基于纯硬件的控制器配置也可以被使用。各种控制器可以集成到单个片上***(SOC)集成电路设备中,或者可以根据需要分布在各种分立设备中。
控制器存储器120表示由控制器112用作本地存储器的各种形式的易失性和/或非易失性存储器(例如,SRAM、DDR DRAM、闪存等)。可以由存储器来存储各种数据结构和数据集,包括一个或多个映射结构122、用于映射数据和其他控制信息的一个或多个高速缓存124、以及用于在数据传输期间临时存储主机(用户)数据的一个或多个数据缓冲器126。
基于非处理器的硬件辅助电路128可以根据需要通过控制器中的一个或多个实现某些存储器管理任务的卸载。硬件电路128不利用可编程处理器,而是使用各种形式的硬连线逻辑电路(诸如专用集成电路(ASIC)、门逻辑电路、现场可编程门阵列(FPGA)等)。
附加功能块可以在控制器112中以硬件和/或固件(诸如数据压缩块130和加密块132)来实现。数据压缩块130在写入操作期间将无损数据压缩应用于输入数据集,并且随后在读取操作期间提供数据解压缩。加密块132向输入数据提供任意数量的密码功能,包括加密、散列、解压缩等。
设备管理模块(DMM)134支持后端处理操作,并且可以包括用于生成外码的外码引擎电路136、设备接口(I/F)逻辑电路137以及低密度奇偶校验(LDPC)电路138,低密度奇偶校验电路138被配置成用于生成LDPC代码,作为用于保护由SSD 110存储的数据的错误检测和校正策略的一部分。
存储器模块140对应于图1中的存储器104,并且包括以分布在复数N个闪存存储器管芯144上的闪存存储器142的形式的非易失性存储器(NVM)。基本的闪存存储器控制电子器件(未在图2中单独示出)可以被供应到每个管芯144上以经由一个或多个通路(通道)146来促进并行数据传输操作。
图3示出了一些实施例中的图2的闪存存储器142中的各种闪存存储器管芯144的布置。可以使用其他配置。一次可以被访问的存储器的最小单元被称为页面150。可以使用共享公共字线的多个闪存存储器单元来形成页面。页面的存储大小可以变化;在某些情况下,当前一代闪存存储器页面可以存储16KB(16,384字节)的用户数据。
与多个页面相关联的存储器单元148被集成到擦除块152中,擦除块152表示在NAND闪存存储器中可以同时被擦除的最小存储器单元组。多个擦除块152被合并到垃圾收集单元(GCU)154中,垃圾收集单元154是利用从不同管芯中选择的擦除块的逻辑结构。GCU作为一个单元被分配和擦除。在一些实施例中,可以通过从一组管芯中的每一个中选择一个或多个擦除块来形成GCU,使得GCU跨越该组管芯。
每个管芯144可以包括多个平面156。示例包括每管芯两个平面、每管芯四个平面等,尽管可以使用其他布置。通常,平面是管芯144的细分,该细分被布置有单独的读取/写入/擦除电路,使得给定类型的访问操作(诸如写入操作等)可以由平面中的每一个平面同时对各个平面内的公共页面地址执行。
图4示出了一些实施例中的闪存存储器142的更多方面。提供总数K个管芯144并将其布置到物理管芯组158中。使用总数量L个通路将每个管芯组158连接到单独的通路146。在一个示例中,K被设置为128个管芯,L被设置为8个通路,以及每个物理管芯组具有16个管芯。如上所述,可以使用相关联的通路一次访问每个物理管芯组内的单个管芯。闪存存储器模块142的闪存存储器电子(FME)电路160控制通路146中的每一个通路以将数据传输到管芯144和从管芯144传输数据。
在一些实施例中,各种管芯被布置到一个或多个管芯集合中。管芯集合表示被分配以供特定主机(用户/所有者)使用的SSD的存储容量的一部分。通常以管芯级别处的粒度建立管芯集合,使得总的可用管芯144中的一些百分比将被分配以结合到给定的管芯集合中。
第一示例管芯集合在图4中162处表示。该第一集合162使用来自不同通路146中的每一个通路的单个管芯144。这种布置在服务于该集合的数据传输命令期间提供快速性能,因为所有八个通路146用于传输相关数据。该方法的限制是如果集合162正在被服务,则在该时间间隔期间其他管芯集合不能被服务。尽管集合162仅使用来自每个通路的单个管芯,但是该集合也可以被配置成用于使用来自每个通路的多个管芯,诸如16个管芯/通路、32个管芯/通路等。
第二示例管芯集合在图4中164处表示。该集合使用来自少于所有可用通路146的管芯144。与集合162相比,这种布置在数据传输期间提供相对较慢的整体性能,因为对于给定大小的数据传输,将使用较少的通路来传输数据。然而,这种布置有利地允许SSD同时服务多个管芯集合,只要这些集合不共享相同(例如,重叠)的通路146。
图5示出了可以将数据存储到闪存存储器模块142的方式。映射单元(MU)170表示固定大小的数据块,这些数据块由主机供应的一个或多个用户逻辑块地址单元(LBA)172组成。在没有限制的情况下,LBA 172可以具有第一标称大小(诸如512字节(B)、1024B(1KB)等),并且MU 170可以具有第二标称大小(诸如4096B(4KB)等)。数据压缩的应用可以使得每个MU在写入闪存存储器142的实际位方面具有更小的尺寸。
MU 170被布置到上述页面150(图3)中,这些页面150被写入存储器142。在本示例中,使用4KB的MU尺寸,然后可以将标称地四(4)个MU写入每个页面。可以使用其他配置。为了增强数据密度,可以使用多位写入技术将价值多个页面的数据写入连接到公共控制线(例如,字线)的相同闪存存储器单元;MLC(多级单元)每单元写入两个位,TLC(三级单元)每单元写入三个位;XLC(四级单元)每单元写入四个位,等等。
由SSD存储的数据通常使用元数据进行管理。元数据提供映射结构以跟踪各种数据块(例如,MUA 170)的位置,以使SSD 110能够定位现有数据的物理位置。例如,在服务于读取命令期间,通常有必要在闪存存储器144内定位存储所请求的块(例如,LBA)的最新版本的物理地址,使得控制器可以调度并执行读取操作以将所请求的数据返回给主机。在服务于写入命令期间,新数据被写入新位置,但是仍然有必要定位与新写入的块共享相同逻辑地址的先前数据块,使得可以更新元数据以将块的先前版本标记为陈旧的,并提供前向指针或其他信息以指示数据块的最新版本的新位置。
图6示出了根据一些实施例的SSD 110的GCU管理电路180的功能框图。电路180可以形成控制器112的一部分,并且可以使用硬件电路和/或具有存储器内的相关联固件的一个或多个可编程处理器电路来实现。电路180包括使用前向映射182和反向目录184。如上所述,前向映射和反向目录是描述闪存存储器142中数据块的位置的元数据数据结构。在主机数据传输操作以及其他操作的服务期间,这些数据结构的各个部分位于闪存存储器或其他非易失性存储器位置中并被复制到本地存储器120(参见例如图2)。
前向映射182提供闪存转换层(FTL)以通常提供各种块(例如,MUA)的逻辑地址与存储各种块的物理地址(例如,管芯集合、管芯、平面、GCU、EB、页面、位偏移等)之间的相关性。前向映射182的内容可以存储在每个管芯集合中的专门配置和指定的GCU中。
反向目录184提供物理地址至逻辑地址相关性。反向目录内容可以作为数据写入过程的一部分被写入每个GCU,诸如以头部或脚部连同正被写入的数据为形式。通常,反向目录提供有多少数据块(例如,MUA)是有效的更新的指示(例如,表示相关数据的最新版本)。
电路180进一步包括映射完整性控制电路186。如下所述,控制电路186通常在所选择的时间进行操作以针对给定的GCU召回和比较前向映射数据和反向目录数据。该评估步骤包括用于确定两个元数据结构是否指示相同的数字并标识GCU中的有效数据块的处理。
如果相应的前向映射和反向目录匹配,则将GCU添加到以被称为经验证GCU的表(即TOVG 188)为数据结构的经验证的GCU的列表中。该表可采用任何合适的形式并且可包括多个条目,其中每个GCU有一个条目。每个条目都可以列出GCU以及其他合适且有用的信息,诸如但不限于评估发生时的时间戳、在验证时被确定存在的有效数据块的总数、实际有效块的列表等。
如果控制电路186发现针对给定GCU的前向映射182和反向目录184之间不匹配,则控制电路186可以进一步操作以执行详细评估以校正不匹配。这可以包括重放其他日志或其他数据结构以追踪被发现为不匹配的那些数据块的历史。所需的评估级别将取决于各个元数据结构之间不匹配的程度。
例如,如果前向映射182指示在所选择的GCU中应该存在一些X个有效块,诸如12个有效块,则反向目录184指示仅存在Y个有效块,诸如11个有效块,而且由反向目录184指示的11个有效块由前向映射指示为有效的,那么焦点可以是根据前向映射有效但根据反向目录无效的剩余的一个块上。设想了其他不匹配的情况。
由于各种因素(诸如不完整的写入、阻止完全写入***状态的意外的电源浪涌或中断等),可能会出现不匹配。无论如何,控制电路可以充分利用可用资源以主动更新元数据。在一些实施例中,例外列表190可以形成为已经被发现需要进一步评估的GCU的存储器中的数据结构。通过这种方式,可以在适当的时间对GCU进行评估以用于分辨,之后可以将校正的GCU放置在TOVG 188中的经验证的列表上。
应注意,一旦已经调度了垃圾收集操作,那么猛在评估GCU时控制电路186的上述操作就不会发生;相反,这是在调度垃圾收集操作之前执行的主动操作。在某些情况下,正在靠近可能适合垃圾收集操作的时间的GCU(诸如在GCU中已被填充数据和/或GPU已达到某个老化限制等之后)可以被选择以用于基于可以预期垃圾收集操作可能在相对较近的将来是必要的来评估。
图6进一步示出了GCU管理电路180包括垃圾收集调度器电路192。电路192通常在适合考虑执行垃圾收集操作时操作,此时电路192从来自表188的可用的经验证的GCU中进行选择。在一些情况下,电路192可以基于GCU的大小、要重新定位的数据量等来生成用于完成垃圾收集操作的完成时间估计。
可以理解,垃圾收集操作可以包括访问前向映射182和/或反向目录184以标识仍然有效的数据块、读出本地缓冲存储器中的此类块和在本地缓冲存储器中临时存储此类块、将块写入到新位置(诸如在不同的GCU中的位置)、应用擦除操作来擦除GCU中的每个擦除块、更新编程/擦除计数元数据以指示最近的擦除周期、以及将重置的GCU放置到等待后续分配和使用的分配池以用于存储新数据集。
图7示出了在一些实施例中可以跨SSD110布置的多个管芯集合200。每个集合200可以具有相同的标称数据存储容量(例如,相同数量的分配的管芯等),或者每个集合可以具有不同的存储容量。如图所示,每个管芯集合200的存储容量被布置到多个GCU 154中。另外,可以由每个管芯集合200维护并且在每个管芯集合200中维护单独的TOVG(经验证GCU的表)188,以显示相应GCU的状态。由此,每次需要调度垃圾收集操作(诸如为给定集合释放新的可用存储器)时,可以查阅表188以选择这样的GCU:该GCU很大概率会经受有效的垃圾收集操作,而不会有由于元数据中的(前向映射和反向目录)不匹配而导致的任何意外延迟。
图8进一步示出了GCU管理电路190包括垃圾收集调度器电路202。电路202通常在适合考虑执行垃圾收集操作时操作,此时电路202从来自表198的可用的经验证的GCU中进行选择。在一些情况下,电路202可以基于GCU的大小、要重新定位的数据量等来生成用于完成垃圾收集操作的完成时间估计。
可以理解,垃圾收集操作可以包括访问前向映射192和/或反向目录194以标识仍然有效的数据块、读出本地缓冲存储器中的此类块和在本地缓冲存储器中临时存储此类块、将块写入到新位置(诸如在不同的GCU中的位置)、应用擦除操作来擦除GCU中的每个擦除块、更新编程/擦除计数元数据以指示最近的擦除周期、以及将重置的GCU放置到等待后续分配和使用的分配池以用于存储新数据集。
图9示出了在一些实施例中可以跨SSD110布置的多个管芯集合210。每个集合210可以具有相同的标称数据存储容量(例如,相同数量的已分配的管芯等),或者每个集合可以具有不同的存储容量。如图所示,每个管芯集合210的存储容量被布置到多个GCU 154中。另外,可以由每个管芯集合维护并且在每个管芯集合210中维护单独的TOVG(经验证GCU的表)198,以显示相应GCU的状态。由此,每次需要调度垃圾收集操作(诸如为给定集合释放新的可用存储器)时,可以查阅表198以选择这样的GCU:该GCU很大概率会经受有效的垃圾收集操作,而不会有由于元数据中的(前向映射和反向目录)不匹配而导致的任何意外延迟。
图10示出了SSD 110的其他方面的功能框图表示。来自图2的核CPU 116结合代码管理引擎(CME)212示出,代码管理引擎(CME)212可用于管理标准和非标准奇偶校验数据集的相应代码字和外代码奇偶校验值的生成。
在写入操作期间,接收并处理来自相关联的主机的输入写入数据以形成MU 160(图3),MU 160被置于非易失性写入高速缓存214中,高速缓存214可以是闪存存储器或其他(多个)形式的非易失性存储器。如上所述,MU被传输到DMM电路134以用于以代码字172的形式写入闪存存储器142。在读取操作期间,将一个或多个数据的页面检取到易失性读取缓冲器216以用于在传输到主机之前进行处理。
CME 212为被生成并被存储到存储器的数据确定适当的内码率和外码率。在一些实施例中,DMM电路134可以生成内码和外码。在其他实施例中,DMM电路134生成内码(参见例如图2中的LDPC电路146),而核CPU 116生成外码字。在又其他实施例中,同一个处理器/控制器电路生成两种形式的码字。也可以使用其他布置。CME 212为两种类型的码字建立适当的码率。
在外码的生成的期间,奇偶校验缓冲器218可用于连续地对每次通过管芯期间写入的每个有效载荷进行异或(XOR)。有效载荷数据220和映射数据222都将被存储到闪存存储器142。
图11描绘了可以实践各种实施例的示例数据存储***230的部分。多个(N个)管芯集合232分别经由分布式网络连接到多个(X个)远程主机234。注意,管芯集合232可以是一个或多个数据存储设备/存储器管芯的逻辑分区,如通常由分段区域236所示。
本地缓冲器238和本地控制器240可用于数据存储***230,以执行由主机234请求的各种数据访问以及由执行那些数据访问请求而触发的相应后台操作。一种此类后台操作可以是维护与单个管芯集合232或多个不同管芯集合相对应的管芯集合映射结构。如图所示,管芯集合232可以具有管芯集合特定映射242,管芯集合特定映射242编译存储在管芯集合232中的各种主机数据的逻辑地址和物理地址,其中映射242连同与对映射242的数据访问更新有关的任何日志更新被存储在管芯集合232中。
可以设想,管芯集合232具有由本地控制器240根据需要生成和存储的许多不同的日志。在某些时刻,控制器240可以引导各种映射242的垃圾收集活动和管芯集合232的日志,其中在日志被擦除之前将日志的数据更新信息合并到管芯集合映射242中。总体***顶级映射244可以被临时或被永久地存储在数据存储***230的任何部分中,诸如如图所示存储在缓冲器238中,以存储与多于一个不同的管芯集合有关的映射信息。
注意,与***230的日志和顶级映射244存储在集中位置相比,为各个管芯集合232使用单独的映射结构可以消耗更多的初始***资源(诸如处理功率、时间和电力)。同时利用大量***资源(诸如并行地加载单独的管芯集合特定映射和日志)可能通过垄断***资源来损害数据存储***的通电准备时间。另一方面,诸如使用单个顶级映射244的集中式映射结构也可通过增加数据访问命令冲突的风险而损害***的准备时间。因此,利用不同的映射方案不能容易地克服与长准备时间***通电初始化相关的困难。
图12示出了示例数据存储***260的部分的框图表示,其中数据存储设备262具有布置在半导体存储器管芯266中的许多逻辑管芯集合264。当来自一个或多个主机268的命令在可被表征为冲突的情况下发生冲突时,管芯集合264可能经历性能降级。也就是说,用户生成的数据以及相关的***数据(如映射、日志和元数据)通过通路队列270和管芯集合特定队列272从主机268流到管芯集合264的的流动可以要求在别处使用的***资源,这会延迟命令的执行、使数据吞吐量降级、并减慢开机启动时的***初始化。
在强调数据访问性能一致性的确定性窗口间隔期间,特别强调占用的***资源以及数据访问命令执行的延迟。例如,在第二管芯集合266处于确定性窗口间隔中的同时,第一管芯集合264可以处于非确定性窗口间隔中并且通过执行数据读取274、数据写入276和/或后台操作278来占用***资源。注意,数据存储***260可以包括无限制的任意数量的队列270/272,但是各种实施例安排通路队列270以按照命令274/276/278从它们被寻址到单个管芯集合264的集合特定队列272填充队列270的顺序来执行这些命令274/276/278。
作为来自不同管芯集合特定队列272的数据访问命令274/276/278在通路队列270中的潜在混洗的结果,确定性窗口命令执行一致性受到损害。尽管设想通路队列270命令可以被重排和/或被乱序执行,但是此类活动可以占用有价值的处理资源、功率资源和时间***资源。因此,评估***资源并定制通路队列270的填充的实施例可以优化***数据访问性能、***准备时间、和确定性窗口间隔一致性。
图13表示根据一些实施例被配置的和***作的示例准备时间模块290,用于平衡跨不同管芯集合和主机的数据访问性能。准备时间模块290可以智能地利用组成电路来跟踪分布式数据存储***中多个不同管芯集合和主机之间的所执行任务的性能度量,以反应性地和主动地优化数据访问请求,以同时平衡跨越***的数据访问性能。
准备时间模块290可以利用控制器292(诸如通常由图11的控制器240表示的微处理器或可编程电路)以指导各种电路的活动。例如,实时数据存储***性能度量(诸如服务主机请求的等待时间、错误率、总体时间、所触发的后台操作的数量、总队列输入-输出频率、和确定性窗口间隔激活)可以用监视器电路294来测量和/或检测。监视器电路294可以将检测到的管芯集合和主机活动的日志296保持在本地存储器中,以便允许模块290的预测电路298以标识模式和相应发生的数据访问任务。
鉴于当前***条件,预测电路298可以利用来自其他数据存储***的模型数据和/或来自当前***的过去记录的活动来预测哪些任务可能到达管芯集合队列以及每个任务将在分布式数据存储***的各种管芯集合中执行多久。预测电路298可以采用机器学习以基于来自监视器电路294的实时跟踪的执行来改善预测的后台操作、读取访问和写入访问的准确性以及那些所预测任务的性能。可以设想,预测电路298可以生成所预测任务的准确性值和/或预测的性能,并且仅提供高于预定准确性阈值的那些预测,诸如90%置信度。
利用预测电路298预测未来任务以及这些未来任务到多个不同管芯集合的各自的执行时间的能力允许准备时间模块290组织现有任务的品质,使得未来任务不会抑制或降级确定性窗口间隔期间的一致读取访问等待时间。通过监控器电路294获得的对管芯集合的过去执行的任务的知识以及对未来未决任务及其执行时间的准确预测允许模块290的调度器电路300将现有的已排队任务定制到至少一个管芯集合,以优化未来数据存储***操作。队列定制不限于特定动作,而是设想调度器电路300将某些任务与可用***处理带宽相关、对要执行的最长任务进行优先级排序、对要执行的最短任务进行优先级排序、和/或不按顺序地生成后台操作。
在任何时候,准备时间模块290可以利用测试电路302对任何管芯集合的至少一部分执行一个或多个数据访问操作,以收集可以提高监视器电路294和预测电路298的准确性和速度的操作型数据。也就是说,可以利用测试电路300对一个或多个不同的管芯集合实施数据读取和/或数据写入的一个或多个测试模式,以验证监控电路294的测量值、测试未监控的性能特征(诸如存储器单元安置、写入放大、或环境条件)、并测量比管芯集合的全部少的部分的数据访问性能。
由于实时测量、预测或测试的结果,已排队任务的执行性能可能高于或低于预期的执行性能。节流电路304可以通过改变已排队任务以操纵该任务的执行性能来解决此类问题。例如,节流电路304可以将任务分成两个单独执行的任务,利用比所有可用***资源少的***资源来执行任务,或者在执行期间故意延迟任务以控制任务何时完成。在DW间隔期间可以特别强调对已排队任务执行性能的此类控制。因此,准备时间模块290可以采用组成电路来选择和/或操纵未决的管芯集合任务,以在整个保证的间隔时间段内确保数据存储***的每个管芯集合和主机的一致的数据访问性能。
一些实施例设想单个准备时间模块290处理各种不同的管芯集合、队列、和主机命令,而其他实施例可以在数据存储***中使用多个不同的准备时间模块290。无论准备时间模块290或组成电路的数量如何,数据存储***控制器292可以对被测量的和/或被预测的***信息一起进行编译,以便生成用于在NDW间隔期间针对每个管芯集合和主机建立和维持平衡的数据访问性能、在DW间隔期间对数据访问进行优先级排序、以及执行专用于减少数据存储***的准备时间的数据访问的策略。
用于优化数据访问性能的手段包括标识可以延迟管芯集合准备就绪和/或使命令执行性能降级的数据访问冲突。冲突可以被表征为所检测的或预测的数据访问错误、故障或者数据存储***资源以使数据访问性能和/或***准备时间降级的方式被使用的其他情况。因此,准备时间模块290可以生成、填充和维护一个或多个冲突列表,其中实际的和/或预测的数据访问冲突被组织。
图14示出了根据各种实施例的数据存储***310的示例部分,其中准备时间模块312引导冲突列表314。任何数量的数据访问冲突可以被检测和/或被预测以填充列表314,但是四个单独的冲突A 316、B 318、C 320、和D 322被示出为非限制性示例。
设想各种冲突316/318/320/322可以是无法完成的数据访问命令或是已经主动与通路队列隔离以避免与已被准备时间模块312分配了较高优先级的(多个)数据访问命令冲突的数据访问命令。注意,列表314可以被安排成使得当***资源允许时接下来要执行最顶层的冲突(诸如图14中的冲突A 316)。
冲突列表314的维护允许准备时间模块312确保在实际的或预测的执行冲突之后、主机寻址的数据访问命令不会丢失。列表314可以被存储在数据存储***310中的任何地方,诸如非易失性或易失性存储器,所述非易失性或易失性存储器允许以最小的功率和时间资源花费快速重新配置列表314。这样,准备时间模块312可以移动与列表314内的冲突316/318/320/322相关联的不同数据访问命令,以适应变化的数据存储***310条件。
例如,当被填充时,冲突A 316可能已经由准备时间模块312响应于用于各种管芯集合的已排队命令进行优先级排序,而后续的***资源和/或已排队的命令改变使得冲突A316在列表314中被降级,如箭头324所示。作为另一个非限制性示例,改变数据访问和/或***资源可以提示准备时间模块以促进列表314内的冲突,诸如由箭头326表达的冲突D 322。改变列表314的执行组织的能力允许准备时间模块312确保在不使数据访问性能降级的情况下执行所有***数据访问命令同时减少***在通电初始化期间的准备时间。
图15是根据图1至图14的各种实施例的可由数据存储***执行的示例通电例程340的流程图。建立分布式数据网络允许步骤342填充至少一个管芯集合特定的数据访问命令队列(诸如图2的队列272),分布式数据网络具有连接到多个远程主机的多个数据存储设备和逻辑管芯集合。步骤342还可以包括填充通路队列(诸如图12的队列270)作为来自各种管芯集合特定队列的数据访问命令的聚合。
在一些实施例中,在步骤342中不填充通路队列,而是,步骤344从不同物理大小的管芯集合特定命令构建数据分组,以匹配由***资源和非易失性存储器(半导体或旋转磁式数据存储器)的配置所确定的物理介质写入粒度。接下来,步骤346基于包括在步骤344中构建的数据分组的数据访问命令的执行来将当前的管芯集合活动和/或预测的管芯集合活动与一个或多个性能阈值进行比较。阈值不限于特定度量,而可以是命令的预测执行时间、管芯集合或数据存储设备的准备时间、确定性窗口命令执行一致性、或***资源花费(诸如电力或处理资源花费)。
判定步骤348评估来自步骤346的性能阈值比较,并且如果超过一个或多个阈值,则在步骤350中生成命令顺序策略。步骤350的命令顺序策略可以由准备时间模块创建并且后续在步骤352中执行。此类命令顺序策略可以包括冲突列表(诸如图14的列表314)的生成和维护,并且可以对从多个不同的管芯集合特定队列到通路队列的填充进行定制,以便以使数据访问性能、一致性和/或***准备时间降级的方式来避免和/或减轻数据存储***资源的花费。例如,准备时间模块可以以与(多个)远程主机生成各个命令的顺序所不同的顺序、利用数据访问命令来填充或重新组织通路队列以作为命令顺序策略的一部分,以便与命令以其被生成的顺序被执行的情况相比,能更快地在电力中断之后使(多个)管芯集合处于就绪状态。
作为在步骤352中执行的命令顺序策略的另一个非限制性示例,准备时间模块可以通过使一个或多个数据访问命令延迟进入到通路队列中来响应于预测的***资源冲突,以便向通路队列填充被定制为特定***优先级的数据访问命令,特定的***优先级诸如减少的准备时间、确定性窗口间隔中的一致的数据访问执行、或非确定性窗口间隔期间的峰值数据访问性能。在命令顺序策略结束时,或者在判定步骤348中没有违反任何阈值的情况下,步骤354继续按照与由远程主机生成命令的顺序相对应的顺序、按照调度计划来执行对一个或多个管芯集合的数据访问命令和介质操作。
通过本公开的各种实施例,可以智能地管理数据访问命令以优化数据存储***操作。在逻辑管芯集合驻留的非易失性存储器的电力中断之后,可以对将管芯集合置于操作状态所必需的数据访问命令(诸如后台操作)进行优先级排序以减少管芯集合准备就绪所花费的时间(“准备时间”)。***资源冲突的检测和/或预测允许准备时间模块定制队列的数据访问命令填充,以进一步优化各种情况下的数据存储***性能(诸如确定性窗口间隔)。
Claims (20)
1.一种方法,包括:
将半导体存储器划分成多个管芯集合;
利用由远程主机寻址的数据访问命令来填充管芯集合队列,所述数据访问命令具有第一顺序;
利用准备时间模块生成命令顺序策略,所述命令顺序策略将所述数据访问命令组织成第二顺序;
如由所述准备时间模块所引导的那样执行所述命令顺序策略以填充通路队列;以及
以所述第二顺序执行所述通路队列的所述数据访问命令。
2.如权利要求1所述的方法,其特征在于,所述多个管芯集合中的每个管芯集合具有单独的管芯集合队列。
3.如权利要求1所述的方法,其特征在于,所述第一顺序对应于何时生成数据访问命令。
4.如权利要求1所述的方法,其特征在于,所述通路队列被馈送来自所述管芯集合队列的数据访问命令。
5.如权利要求1所述的方法,其特征在于,所述准备时间模块包括本地控制器。
6.如权利要求1所述的方法,其特征在于,所述准备时间模块包括监视器电路,所述监视器电路检测与执行对所述多个管芯集合的所述数据访问命令相关联的实时性能度量。
7.如权利要求1所述的方法,其特征在于,所述准备时间模块包括将所述第一顺序改变为所述第二顺序的调度器电路。
8.如权利要求1所述的方法,其特征在于,所述准备时间模块包括在执行之前评估所述命令顺序策略的测试电路。
9.如权利要求1所述的方法,其特征在于,所述准备时间模块包括节流电路,所述节流电路主动降低所述多个管芯集合中的至少一个管芯集合的数据访问性能以作为所述命令顺序策略的一部分。
10.一种方法,包括:
将半导体存储器划分成多个管芯集合;
利用由远程主机寻址的数据访问命令来填充管芯集合队列,所述数据访问命令具有第一顺序;
经历电力中断,所述电力中断破坏所述多个管芯集合中的至少一个管芯集合的操作;
利用准备时间模块生成命令顺序策略,所述命令顺序策略将所述数据访问命令组织成第二顺序;
如由所述准备时间模块所引导的那样执行所述命令顺序策略以填充通路队列;以及
以所述第二顺序执行所述通路队列的所述数据访问命令。
11.如权利要求10所述的方法,其特征在于,所述准备时间模块包括预测第一***资源冲突和第二***资源冲突的预测电路。
12.如权利要求11所述的方法,其特征在于,所述准备时间模块维护包括至少所述第一***资源冲突和所述第二***资源冲突的冲突列表。
13.如权利要求12所述的方法,其特征在于,所述准备时间模块通过改变所述冲突列表的顺序来适应于改变数据访问状况。
14.如权利要求10所述的方法,其特征在于,所述命令顺序策略被创建以减少所述多个管芯集合中的管芯集合的准备时间。
15.如权利要求10所述的方法,其特征在于,所述命令顺序策略是在预测到数据访问性能阈值被违反之后执行的。
16.如权利要求15所述的方法,其特征在于,所述数据访问性能阈值是所述多个管芯集合中的管芯集合的准备时间。
17.如权利要求15所述的方法,其特征在于,所述数据访问性能阈值是电力花费。
18.如权利要求10所述的方法,其特征在于,所述命令顺序策略在所述电力中断之前生成。
19.一种***,包括划分成多个管芯集合的半导体存储器,其中至少一个管芯集合队列填充有由远程主机寻址并具有第一顺序的数据访问命令,由准备时间模块生成的命令顺序策略将填充通路队列的所述数据访问命令组织成第二顺序,并随后以所述第二顺序执行所述数据访问命令。
20.如权利要求19所述的***,其特征在于,控制器连接到所述多个管芯集合和所述准备时间模块,所述控制器引导所述半导体存储器的操作。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/021,751 | 2018-06-28 | ||
US16/021,751 US10817217B2 (en) | 2018-06-28 | 2018-06-28 | Data storage system with improved time-to-ready |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110658990A true CN110658990A (zh) | 2020-01-07 |
Family
ID=69028687
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910575759.5A Pending CN110658990A (zh) | 2018-06-28 | 2019-06-28 | 具有改善的准备时间的数据存储*** |
Country Status (2)
Country | Link |
---|---|
US (1) | US10817217B2 (zh) |
CN (1) | CN110658990A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114594902A (zh) * | 2020-12-03 | 2022-06-07 | 西部数据技术公司 | Nand存储器的数据转移协议的开销减小 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11062232B2 (en) * | 2018-08-01 | 2021-07-13 | International Business Machines Corporation | Determining sectors of a track to stage into cache using a machine learning module |
US11080622B2 (en) * | 2018-08-01 | 2021-08-03 | International Business Machines Corporation | Determining sectors of a track to stage into cache by training a machine learning module |
US11416171B2 (en) * | 2020-01-07 | 2022-08-16 | Western Digital Technologies, Inc. | Dynamic predictive latency attributes |
US11579801B2 (en) | 2020-06-09 | 2023-02-14 | Samsung Electronics Co., Ltd. | Write ordering in SSDs |
US11848055B2 (en) * | 2020-08-21 | 2023-12-19 | Seagate Technology Llc | Asynchronous access multi-plane solid-state memory |
US11762680B2 (en) * | 2020-10-20 | 2023-09-19 | Alilbaba Group Holding Limited | Method and system of host resource utilization reduction |
US11514992B2 (en) | 2021-02-25 | 2022-11-29 | Microchip Technology Inc. | Method and apparatus for reading a flash memory device |
US11755495B2 (en) * | 2021-03-16 | 2023-09-12 | Micron Technology, Inc. | Storing a logical-to-physical mapping in NAND memory |
US11734189B2 (en) * | 2021-03-16 | 2023-08-22 | Micron Technology, Inc. | Caching of logical-to-physical mapping information in a memory sub-system |
US20210255955A1 (en) * | 2021-05-06 | 2021-08-19 | Intel Corporation | Disk caching and/or tiering with device internal busy information |
US11934696B2 (en) | 2021-05-18 | 2024-03-19 | Microchip Technology Inc. | Machine learning assisted quality of service (QoS) for solid state drives |
WO2022245385A1 (en) * | 2021-05-18 | 2022-11-24 | Microchip Technology Inc. | Machine learning assisted quality of service (qos) for solid state drives |
US11699493B2 (en) | 2021-05-24 | 2023-07-11 | Microchip Technology Inc. | Method and apparatus for performing a read of a flash memory using predicted retention-and-read-disturb-compensated threshold voltage shift offset values |
US11514994B1 (en) | 2021-05-28 | 2022-11-29 | Microchip Technology Inc. | Method and apparatus for outlier management |
DE112022002131T5 (de) | 2021-09-28 | 2024-04-11 | Microchip Technology Inc. | Ldpc-dekodierung mit trapped-block-management |
US11922025B2 (en) * | 2021-11-24 | 2024-03-05 | Micron Technology, Inc. | Memory device defect scanning |
US20240143182A1 (en) * | 2022-10-31 | 2024-05-02 | Phison Electronics Corp. | Data reading method, memory storage device, and memory control circuit unit |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1705254A (zh) * | 2004-05-31 | 2005-12-07 | 京瓷株式会社 | 通信装置以及呼叫分配方法 |
CN101414269A (zh) * | 2007-04-09 | 2009-04-22 | 英特尔公司 | 功率/性能服务质量的基于优先级的调节 |
CN101872299A (zh) * | 2010-07-06 | 2010-10-27 | 浙江大学 | 冲突预测实现方法及所用冲突预测处理装置事务存储器 |
US20110170643A1 (en) * | 2008-09-26 | 2011-07-14 | Panasonic Corporation | Complex signal processing circuit, receiver circuit, and signal reproduction device |
US20130297852A1 (en) * | 2012-05-02 | 2013-11-07 | Apple Inc. | Systems and methods for providing early hinting to nonvolatile memory charge pumps |
US20150022918A1 (en) * | 2013-07-16 | 2015-01-22 | Seagate Technology Llc | Request management for rotating data storage media |
CN105389267A (zh) * | 2015-10-21 | 2016-03-09 | 盛科网络(苏州)有限公司 | stats分配的芯片实现方法 |
US20160110292A1 (en) * | 2014-10-21 | 2016-04-21 | Samsung Electronics Co., Ltd. | Efficient key collision handling |
US20160162186A1 (en) * | 2014-12-09 | 2016-06-09 | San Disk Technologies Inc. | Re-Ordering NAND Flash Commands for Optimal Throughput and Providing a Specified Quality-of-Service |
CN106067321A (zh) * | 2015-04-21 | 2016-11-02 | 爱思开海力士有限公司 | 适于存储器编程暂停-恢复的控制器 |
CN106252325A (zh) * | 2015-06-11 | 2016-12-21 | 阿尔特拉公司 | 用于多芯片封装件中管芯间互连的混合冗余方案 |
CN106406822A (zh) * | 2016-09-18 | 2017-02-15 | 上海兆芯集成电路有限公司 | 具有改进的别名队列和存储冲突检测的处理器 |
CN107632907A (zh) * | 2017-08-07 | 2018-01-26 | 郑州云海信息技术有限公司 | 一种bmc芯片托管***及其控制方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6574676B1 (en) | 2000-01-11 | 2003-06-03 | International Business Machines Corporation | System and method for scheduling disk drive commands by expected total access time |
US6757897B1 (en) | 2000-02-29 | 2004-06-29 | Cisco Technology, Inc. | Apparatus and methods for scheduling and performing tasks |
US6820263B1 (en) | 2000-12-29 | 2004-11-16 | Nortel Networks Limited | Methods and system for time management in a shared memory parallel processor computing environment |
US7043567B2 (en) | 2002-07-22 | 2006-05-09 | Seagate Technology Llc | Method and apparatus for determining the order of execution of queued commands in a data storage system |
KR101486987B1 (ko) | 2008-05-21 | 2015-01-30 | 삼성전자주식회사 | 불휘발성 메모리를 포함하는 반도체 메모리 장치 및 불휘발성 메모리를 위한 커맨드 스케줄링 방법 |
JP2011170643A (ja) * | 2010-02-18 | 2011-09-01 | Nakayo Telecommun Inc | 試験方法、試験装置、およびプログラム |
US10379765B2 (en) * | 2017-06-27 | 2019-08-13 | Western Digital Technologies, Inc. | Geometry-aware command scheduling |
-
2018
- 2018-06-28 US US16/021,751 patent/US10817217B2/en active Active
-
2019
- 2019-06-28 CN CN201910575759.5A patent/CN110658990A/zh active Pending
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1705254A (zh) * | 2004-05-31 | 2005-12-07 | 京瓷株式会社 | 通信装置以及呼叫分配方法 |
CN101414269A (zh) * | 2007-04-09 | 2009-04-22 | 英特尔公司 | 功率/性能服务质量的基于优先级的调节 |
US20110170643A1 (en) * | 2008-09-26 | 2011-07-14 | Panasonic Corporation | Complex signal processing circuit, receiver circuit, and signal reproduction device |
CN102165685A (zh) * | 2008-09-26 | 2011-08-24 | 松下电器产业株式会社 | 复数信号处理电路、接收电路、信号再生装置 |
CN101872299A (zh) * | 2010-07-06 | 2010-10-27 | 浙江大学 | 冲突预测实现方法及所用冲突预测处理装置事务存储器 |
US20130297852A1 (en) * | 2012-05-02 | 2013-11-07 | Apple Inc. | Systems and methods for providing early hinting to nonvolatile memory charge pumps |
US20150022918A1 (en) * | 2013-07-16 | 2015-01-22 | Seagate Technology Llc | Request management for rotating data storage media |
US20160110292A1 (en) * | 2014-10-21 | 2016-04-21 | Samsung Electronics Co., Ltd. | Efficient key collision handling |
US20160162186A1 (en) * | 2014-12-09 | 2016-06-09 | San Disk Technologies Inc. | Re-Ordering NAND Flash Commands for Optimal Throughput and Providing a Specified Quality-of-Service |
CN106067321A (zh) * | 2015-04-21 | 2016-11-02 | 爱思开海力士有限公司 | 适于存储器编程暂停-恢复的控制器 |
CN106252325A (zh) * | 2015-06-11 | 2016-12-21 | 阿尔特拉公司 | 用于多芯片封装件中管芯间互连的混合冗余方案 |
CN105389267A (zh) * | 2015-10-21 | 2016-03-09 | 盛科网络(苏州)有限公司 | stats分配的芯片实现方法 |
CN106406822A (zh) * | 2016-09-18 | 2017-02-15 | 上海兆芯集成电路有限公司 | 具有改进的别名队列和存储冲突检测的处理器 |
CN107632907A (zh) * | 2017-08-07 | 2018-01-26 | 郑州云海信息技术有限公司 | 一种bmc芯片托管***及其控制方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114594902A (zh) * | 2020-12-03 | 2022-06-07 | 西部数据技术公司 | Nand存储器的数据转移协议的开销减小 |
CN114594902B (zh) * | 2020-12-03 | 2024-05-31 | 西部数据技术公司 | Nand存储器的数据转移协议的开销减小 |
Also Published As
Publication number | Publication date |
---|---|
US10817217B2 (en) | 2020-10-27 |
US20200004455A1 (en) | 2020-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10817217B2 (en) | Data storage system with improved time-to-ready | |
US10776263B2 (en) | Non-deterministic window scheduling for data storage systems | |
US11150836B2 (en) | Deterministic optimization via performance tracking in a data storage system | |
US11899952B2 (en) | Lossless namespace metadata management system | |
US8275933B2 (en) | Apparatus, system, and method for managing physical regions in a solid-state storage device | |
CN108984429B (zh) | 具有缓冲器占有期管理的数据存储设备 | |
US11016679B2 (en) | Balanced die set execution in a data storage system | |
US11848055B2 (en) | Asynchronous access multi-plane solid-state memory | |
US10929025B2 (en) | Data storage system with I/O determinism latency optimization | |
US20150067415A1 (en) | Memory system and constructing method of logical block | |
US20220147279A1 (en) | Heat management solid-state data storage system | |
US10929286B2 (en) | Arbitrated management of a shared non-volatile memory resource | |
US11481342B2 (en) | Data storage system data access arbitration | |
US20230032639A1 (en) | Hot data management in a data storage system | |
US10783982B2 (en) | Probation bit for data storage memory | |
US11307768B2 (en) | Namespace auto-routing data storage system | |
US20210081235A1 (en) | Memory system | |
US11256621B2 (en) | Dual controller cache optimization in a deterministic data storage system | |
US11698734B2 (en) | Collision reduction through just-in-time resource allocation | |
US11301376B2 (en) | Data storage device with wear range optimization | |
US10872015B2 (en) | Data storage system with strategic contention avoidance | |
US20220113898A1 (en) | Data storage system with workload-based asymmetry compensation | |
US12019898B2 (en) | Data storage system with workload-based dynamic power consumption | |
US10552086B2 (en) | Global pool of garbage collection units (GCUs) in a shared non-volatile memory device | |
US20200004448A1 (en) | Data storage system die set mapping |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20200107 |