CN114600074A - 块装置的构造 - Google Patents
块装置的构造 Download PDFInfo
- Publication number
- CN114600074A CN114600074A CN202080073480.8A CN202080073480A CN114600074A CN 114600074 A CN114600074 A CN 114600074A CN 202080073480 A CN202080073480 A CN 202080073480A CN 114600074 A CN114600074 A CN 114600074A
- Authority
- CN
- China
- Prior art keywords
- memory
- components
- host system
- devices
- allocation
- 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
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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0632—Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
-
- 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/0608—Saving storage space on 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/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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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/0625—Power saving in 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- 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/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- 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/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- 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
-
- 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)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
公开的实施例涉及使用异构存储器组件构造存储器子系统中的存储器分配。在一个实例中,一种方法包含从主机系统接收对构造存储器分配的请求;从存储器装置池选择多个存储器装置;选择所述多个存储器装置当中的多个存储器组件;聚合所述多个存储器组件以实施所述存储器分配;和将用以存取实施所述存储器分配的所述多个存储器组件的阶层式地址提供给所述主机系统,所述阶层式地址各自包含相关联存储器装置的装置ID。
Description
技术领域
本公开大体上涉及存储器子系统中的块装置的构造,且更具体地,涉及以异构媒体实施块装置。
背景技术
存储器子系统可包含存储数据的存储器装置内的一或多个存储器组件。存储器组件可以例如是非易失性存储器组件和易失性存储器组件。一般来说,主机系统可以利用存储器子系统在存储器组件处存储数据以及从存储器组件检索数据。
附图说明
根据下文给出的详细描述和本公开的各种实施例的附图,将更充分地理解本公开。然而,图式不应视为将本公开限制于具体实施例,而是仅用于解释和理解。
图1说明根据本公开的一些实施例的包含存储器子系统的实例计算环境。
图2说明根据本公开的一些实施例的为托管块装置对多个异构存储器组件的初始分配。
图3说明根据本公开的一些实施例的经修改块装置配置。
图4是根据本公开的一些实施例的构造异构块装置的实例方法的流程图。
图5说明根据本公开的一些实施例的为形成块装置跨多个主机系统对异构存储器组件的初始分配。
图6说明根据本公开的一些实施例的经修改块装置配置。
图7是根据本公开的一些实施例的构造异构块装置的实例方法的流程图。
图8是其中可操作本公开的实施例的实例计算机系统的框图。
具体实施方式
本公开的方面针对于存储器子系统中的异构块装置的构造。存储器子系统在下文也称为“存储器装置”或“多个存储器装置”。存储器子系统的实例是经由存储器总线连接到中央处理单元(CPU)的一或多个存储器模块。存储器子系统可为存储装置、存储器模块,或存储装置与存储器模块的混合。下文结合图1描述存储装置和存储器模块的实例。一般来说,主机系统可利用包含一或多个存储器装置的存储器子系统。存储器装置可包含例如非易失性存储器装置(例如“与非”(NAND)存储器装置)和就地写入(write-in place)存储器装置(例如三维交叉点(“3D交叉点”)存储器装置,其为非易失性存储器胞元的交叉点阵列)。下文结合图1更详细地描述其它类型的存储器装置(包含易失性存储器装置)。主机系统可提供将存储在存储器子系统处的数据,且可请求将从存储器子系统检索的数据。
如本文中所提及,块装置是可格式化成群组、物理单元、组块和逻辑块的一定数量的非易失性存储器(NVM)。举例来说,块装置可为NVM的分配给应用程序或在格式化群组中使用和写入的部分(例如存储器的块或其它单元)的抽象(例如,类似于物理存储资源的分区或其它逻辑抽象)。在一些上下文中,块装置可被称为名称空间。下文描述的实施例是指块装置但不限于“块”的特定定义。因而,术语“块装置”可与术语“存储器分配”互换使用。
使用存储器子系统内的同构媒体构造常规块装置。举例来说,当多种类型的非易失性存储器(NVM)(例如单层级胞元(SLC)NAND快闪、多层级胞元(MLC)NAND快闪、三层级胞元(TLC)NAND快闪、四层级胞元(QLC)NAND快闪、3D XPoint、电阻性随机存取存储器(ReRAM)或纳米RAM(NRAM)、磁阻RAM(MRAM)、自旋力矩转移MRAM(STT)、MRAM、铁电RAM(FRAM)可用时,每个传统的块装置仅使用一种媒体类型。在这类限制下,常规系统通常无法恰当地匹配在主机系统上运行的应用程序的不同需求。
本公开的方面通过使用不同媒体类型的集合,例如选择最佳匹配应用程序的需求的媒体类型来构造异构块装置以此解决以上和其它缺陷。举例来说,应用程序可使用存储装置的高密度、高时延部分以及存储装置的低密度、低时延部分两者来实施块装置内的存储分级(tiering)或高速缓存。
所公开的实施例另外支持块装置的动态修改,允许所述块装置在通过媒体类型初始选择进行构造之后,随后进行扩展、收缩、精简布建、复制和迁移。换句话说,有时在初始构建块装置之后,可将存储器组件和存储器装置添加到块装置或从块装置移除存储器组件和存储器装置。所公开的实施例可对指示对动态地扩展、收缩或重建块装置的需求的各种触发作出响应。
有利地,所公开的实施例尝试动态地匹配主机系统上的应用程序的需求,进而使块装置适应主机系统的改变的需求或NVM的组件中的失败。
图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算环境100。存储器子系统110可包含媒体,例如存储器组件112A到112N(也被称作“存储器装置”)。存储器组件112A到112N可以是易失性存储器组件、非易失性存储器组件或这类组件的组合。存储器子系统110可以是存储装置、存储器模块,或存储装置与存储器模块的混合。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储(UFS)驱动器以及硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM)和非易失性双列直插式存储器模块(NVDIMM)。
计算环境100可包含耦合到一或多个存储器子系统110的主机系统120(例如,包含存储器子系统管理堆栈125)。在一些实施例中,主机系统120耦合到不同类型的存储器子系统110。图1说明耦合到一个存储器子系统110的主机系统120的一个实例。主机系统120使用存储器子系统110例如将数据写入到存储器子系统110以及从存储器子系统110读取数据。如本文中所使用,“耦合到”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如不具有介入组件),无论有线或无线,包含例如电连接、光学连接、磁连接等连接。
主机系统120可为计算装置,例如台式计算机、手提式计算机、网络服务器、移动装置、嵌入式计算机(例如,包含在车辆、工业设备或联网的商业装置中的计算机)、存储系统处理器,或包含存储器和处理装置的这类计算装置。主机系统120可包含或耦合到存储器子系统110,使得主机系统120可从存储器子系统110读取数据或将数据写入到存储器子系统110。主机系统120可经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行连接的SCSI(SAS)等。物理主机接口可用于在主机系统120与存储器子系统110之间发射数据。当存储器子系统110通过PCIe接口与主机系统120耦合时,主机系统120可进一步利用NVM高速(NVMe)协议接口存取存储器组件112A到112N。物理主机接口可提供接口以用于在存储器子系统110与主机系统120之间传送控制、地址、数据以及其它信号。
存储器组件112A到112N可以包含不同类型的非易失性存储器组件和/或易失性存储器组件的任何组合。非易失性存储器组件的实例包含“与非”(NAND)类型快闪存储器。存储器组件112A到112N中的每一个可包含例如裸片,所述裸片包含存储器胞元的一或多个阵列,所述存储器胞元如单层级胞元(SLC)、多层级胞元(MLC)、三层级胞元(TLC)或四层级胞元(QLC)。存储器胞元中的每一个可存储供主机系统120使用的一或多个数据位。虽然描述如NAND类型快闪存储器的非易失性存储器组件,但存储器组件112A到112N可基于任何其它类型的存储器,如易失性存储器。在一些实施例中,存储器组件112A到112N可以是(但不限于)随机存取存储器(RAM)、只读存储器(ROM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、相变存储器(PCM)、磁随机存取存储器(MRAM)、“或非”(NOR)快闪存储器、电可擦除可编程只读存储器(EEPROM)、ReRAM、纳米RAM(NRAM)、电阻性非易失性随机存取存储器以及非易失性存储器胞元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列而基于体电阻的改变来进行位存储。另外,与许多基于闪存的存储器对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器胞元的情况下对非易失性存储器胞元进行编程。此外,存储器组件112A到112N的存储器胞元可分组以形成页或可指代用于存储数据的存储器组件的单元。对于一些类型的存储器(例如,NAND),页可进行分组以形成块。
存储器系统控制器115(下文称为“控制器”或“多个控制器”)可与存储器组件112A到112N通信以执行操作,例如在存储器组件112A到112N处读取数据、写入数据或擦除数据,以及其它此类操作。在一个实施例中,参考图3-4和5-6所描述,存储器子系统110包含用于特定媒体类型的一或多个存储器组件112A到112N的集合的控制器115。举例来说,存储器子系统可包含用以管理一或多个SLC存储器组件112A到112N的集合的第一控制器115、用以管理一或多个TLC存储器组件112A到112N的集合的第二控制器115等。
每一控制器115可包含硬件,例如一或多个集成电路和/或离散组件、缓冲存储器或其组合。控制器115可以是微控制器、专用逻辑电路(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或另一合适的处理器。控制器115可包含被配置成执行存储在本地存储器119中的指令的处理器(处理装置)117。在所说明实例中,控制器115的本地存储器119包含配置成存储指令以用于执行控制存储器子系统110的操作(包含处置存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流程以及例程的嵌入式存储器。在一些实施例中,本地存储器119可以包含存储器寄存器,其存储存储器指针、提取的数据等。本地存储器119还可以包含用于存储微码的只读存储器(ROM)。虽然图1中的存储器子系统110已说明为包含控制器115,但在本公开的另一实施例中,存储器子系统110可能不包含控制器115,且可改为依靠用于存储器组件112A到112N的管理中的至少一些的外部控制(例如由与存储器子系统110分开的主机、处理器或控制器提供)。
一般来说,控制器115可从主机系统120接收命令或操作且可将所述命令或操作转换成指令或适合的命令以实现对存储器组件112A到112N的所需存取。控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ECC)操作、加密操作、去除重复操作、压缩操作、高速缓存操作,以及与存储器组件112A到112N相关联的逻辑地址(例如,逻辑块地址(LBA))与物理地址(例如,物理块地址)之间的地址转译。控制器115可另外包含主机接口电路系统以经由物理主机接口与主机系统120通信。主机接口电路可将从主机系统接收到的命令转换成命令指令以存取存储器组件112A到112N,以及将与存储器组件112A到112N相关联的响应转换成用于主机系统120的信息。
存储器组件112A到112N中的任一个可包含媒体控制器(例如,媒体控制器130A和媒体控制器130N),其管理存储器组件112A-112N的存储器胞元,与存储器子系统控制器115通信,以及执行从存储器子系统控制器115接收的存储器请求(例如,读取或写入)。
存储器子系统110还可包含未说明的额外电路系统或组件。在一些实施例中,存储器子系统110可包含高速缓存器或缓冲器(例如DRAM)和地址电路系统(例如行解码器和列解码器),其可从控制器115接收地址且对地址进行解码以存取存储器组件112A到112N。
主机系统120包含块装置管理器113,其可使用异构媒体类型的存储器组件分配和管理块装置。块装置管理器在下文还称为“异构块装置管理器”或“多个异构块装置管理器”。在一个实施例中,块装置管理器113是存储器子系统管理堆栈125的部分,例如提供在主机应用程序所使用的逻辑块地址与和存储器子系统110和其组件112A到112N相关联的物理块地址之间的地址转译的软件堆栈或解决方案堆栈。举例来说,这可为允许主机系统120以抽象化方式读取/写入到存储器子系统的小型计算机系统接口(SCSI)或NVMe块装置管理堆栈。举例来说,存储器子系统管理堆栈125可为开放通道存储器系统,其还允许主机系统120控制常规地在内部由控制器115管理的方面,例如输入/输出调度、数据放置、垃圾收集和耗损均衡。存储器子系统管理堆栈125可为或包含微控制器专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或另一适合的处理器。另外,被配置成执行存储于本地存储器135中的指令的一或多个处理器130(处理装置)可实施存储器子系统管理堆栈125的至少一部分。举例来说,处理器130可执行存储于本地存储器135中的指令以用于执行本文所描述的操作。虽然本文中的描述聚焦于块装置管理器113是主机系统120的部分,但在一些实施例中,块装置管理器113的功能性中的一些或全部实施于控制器115内。下文描述关于块装置管理器113的操作的另外细节。
图2说明根据一些实施例的为托管块装置对多个异构存储器组件的初始分配。如所示出,存储器子系统110耦合到主机系统120。存储器子系统110是上文所描述的存储器子系统110的详细实例并且包含将存储器装置208、220和232耦合到主机系统120的存储器总线207。存储器装置208、220和232中的每一个包含控制器,示出为控制器210、222和234,其为上文所描述的控制器115的实例。存储器装置208、220和232中的每一个包含一或多个存储器组件的集合,其为上文所描述的存储器组件112A-112N的实例。在一个实施例中,存储器装置208、220和232中的每一个是单个类型的媒体的存储器模块。
存储器装置208包含控制器210和四个QLC存储器组件212、214、216和218。在一些实施例中,如在此处,存储器组件212、214、216和218可通过通道抽象化为并行单元(如本文中所使用,并行单元是指通道内的存储器组件)。举例来说,不同存储器组件可经由不同通道或群组耦合到控制器,进而增强并行性和输贯量。这类群组提供另一定址层。QLC存储器组件216和218是并行单元219的部分。根据所公开的实施例,存储器装置208不限于具有四个存储器组件。在未示出的其它实施例中,存储器装置208包含更多QLC存储器组件。
存储器装置220包含控制器222和四个QLC存储器组件224、226、228和230。QLC存储器组件228和230是并行单元231的部分。根据所公开的实施例,存储器装置220不限于具有四个存储器组件。在未示出的其它实施例中,存储器装置220包含更多QLC存储器组件。
存储器装置232包含控制器234和四个SLC存储器组件236、238、240和242。SLC存储器组件240和242是并行单元243的部分。根据所公开的实施例,存储器装置232不限于具有四个存储器组件。在其它实施例中,存储器装置232包含更多SLC存储器组件。
此处,示出了存储器子系统110包含QLC存储器装置和SLC存储器装置。其它实施例包含具有各种媒体类型中的任一种的存储器组件,所述媒体类型包含SLC、MLC、TLC或QLC快闪存储器,以及/或非易失性存储器胞元的交叉点阵列,或其它NVM,例如ReRAM或NRAM或MRAM或STT MRAM、FRAM。通常,SLC存储器组件与MLC、TLC和QLC相比在读取和写入时延方面具有较高性能。QLC存储器组件可每胞元存储4个位,与SLC存储器组件相比每位得到较高容量和较低成本。因此,所说明的存储器组件类型的成本和执行速度随着每胞元存储的位从SLC到MLC到TLC到QLC存储器装置依次增加而减小。
在操作中,块装置管理器113从主机系统120接收对构造块装置244的请求。举例来说,块装置管理器113通过分派物理单元、裸片和/或逻辑单元号(LUN)来构造块装置244。在一些实施例中,存储器装置208、220和232使其内部存储资源对主机系统120可见。在一些实施例中,主机系统120可例如通过将几何形状命令发到存储器装置208、220和232以发现所述存储器装置内的存储器组件的几何形状。如本文中所使用,“几何形状”是指存储器装置中的群组、并行单元和组块的边界。主机系统120随后可与所述请求一起(或除了所述请求之外)还指定请求的几何形状以构造块装置。
在一个实施例中,块装置管理器113从包含存储器装置208、220和232的存储器装置池当中选择多个存储器装置以实施块装置。从所选存储器装置当中,块装置管理器113进一步选择多个存储器组件来实施块装置244。如所示出,块装置管理器113分配存储器装置的部分,例如指配六个存储器组件的物理单元(PU)、裸片和/或逻辑单元号(LUN)实施块装置244。所选部分在本文中有时被称作分配、分派或分派的部分。如所示出,用以构造块装置244的分配选自异构存储器组件(SLC和QLC存储器组件)当中。在一些实施例中,块装置管理器113可使所选分配的媒体类型与块装置244的需求匹配,如由主机系统120所指示。表1示出也在图2中说明的通过块装置管理器113对块装置244的实施方案。
表1.块装置244(图2)
分配 | 存储器装置 | 存储器组件 |
1 | 208 | 214 |
2 | 220 | 224 |
3 | 232 | 236 |
4 | 220 | 226 |
5 | 232 | 238 |
6 | 208 | 216 |
块装置管理器113随后产生将用以存取实施块装置244的多个存储器组件的阶层式地址并提供给存储器子系统管理堆栈125。举例来说,块装置管理器113为存储器子系统管理堆栈125指配给块装置244的媒体的阶层式地址。所述阶层包含存储器装置、存储器组件(具有相关联的几何形状信息)以及存储器组件112内的逻辑块、组块或页。
在一些实施例中,与对构造块装置的请求一起,块装置管理器113还从主机系统120接收对块装置的需求的指示。这类需求可包含容量、性能、耐久性或电力消耗。替代地,主机系统120可在媒体类型方面指示这类需求。在一些实施例中,块装置管理器113接收两种或更多种这类需求的指示和归于每种需求的存储量。作为响应,当选择多个存储器装置和多个存储器组件时,块装置管理器113通过对应媒体类型的存储器装置和组件来匹配对块装置的需求。举例来说,所述请求可指示一半的块装置将为高性能/低时延存储,而另一半的块装置将是大容量存储。作为响应,块装置管理器113可选择SLC媒体来实现高性能/低时延存储需求并且选择QLC媒体实现大容量存储需求。主机系统120还可请求精简布建的块装置(例如,首先仅分配50%的容量,随后按需求进行扩展)。主机系统120还可请求块装置管理器113缩小分配的容量(例如,当不使用时取消分配50%的容量)。
图3说明根据一些实施例的块装置配置的按需修改。所述图说明如图2中所说明并在表1中描述的从存储器子系统110到块装置244的分配的重新配置。块装置管理器113一开始通过响应于主机请求的几何形状而选择并聚合存储器装置208、220和232的六个存储器组件214、224、236、226、238和216(分别为分配1、2、3、4、5和6)来构造块装置244。如图3所示,块装置管理器113修改块装置分配以迁移分配2-5,移除分配6,并且添加分配7和8。此重新配置的分配说明为块装置394,含有七个分配的集合(即,容量的替换和扩展)。表2示出也在图3中说明的通过块装置管理器113对块装置394的实施方案。如所说明和描述,块装置管理器113以存储器组件214、212、240、242、218、226和238实施块装置394以分别托管由分配1、2、3、4、5、7和8组成的几何形状。
表2.块装置394(图3)
重新配置的分配 | 存储器装置 | 存储器组件 |
1 | 208 | 214 |
2 | 208 | 212 |
3 | 232 | 240 |
4 | 232 | 242 |
5 | 208 | 218 |
7 | 220 | 226 |
8 | 232 | 238 |
在一些实施例中,块装置管理器113可接收要求动态地修改块装置的一或多个触发。在这类实施例中,块装置管理器113可通过重新配置块装置来作出响应。举例来说,主机系统120可发出对触发块装置管理器113扩展块装置的请求。在一些实施例中,块装置管理器113通过以下操作作出响应:从已经实施块装置的存储器装置中的一个、池化存储器装置的存储器装置中的一个或正被添加到存储器装置池的存储器装置当中选择额外存储器组件(或其部分)并且聚合额外存储器组件与先前选择的存储器组件以实施经扩展块装置。块装置的这类扩展的实例包含存储器装置220的存储器组件226中的新近添加的分派7和存储器装置232的存储器组件238中的新近添加的分派8。下文参考图4进一步描述用于构造块装置244的方法。
通过支持块装置的按需扩展,所公开的实施例允许主机系统120增加块装置的容量或按需要替换被解除分配的分派。
在一些实施例中,主机系统120发出对触发块装置管理器113收回、停用或解除分配块装置的部分或经指配的分派,或以其它方式收缩块装置的请求。经重新配置的块装置394中的分派6的移除是这类解除分配的实例。此处,如图3中所示并在表2中描述,块装置管理器113已解除分配指配给分配6的存储。
通过允许块装置的按需收缩,所公开的实施例实现对无法执行或不良地执行的存储器装置的移除/替换。不需要解除分派的存储器组件还可使解除分配的存储容量可用于主机系统120的另一目的。
在一些实施例中,主机系统120发出对触发块装置管理器113将块装置的部分从第一存储器组件迁移到同一存储器装置上的同一媒体类型的第二存储器组件的请求。出现这类需求可有多种原因,例如对以不同方式放置数据以允许存取数据时的更大并行性、从失败的存储器组件移动数据、改变主机系统的性能、容量和电力消耗需求中的一或多个中等的需求。块装置管理器113通过选择将分派迁移到的另一存储器组件并且将数据从先前选择的存储器组件复制到新近选择的存储器组件来作出响应。新近选择的存储器组件可被指示为来自主机系统120的请求的部分。同一存储器装置内的迁移的实例说明为分配3从存储器装置232的存储器组件236到同一存储器装置232中的同一类型的存储器组件240的迁移。
在一些实施例中,需要将分派迁移到同一媒体类型但处于不同存储器装置中的另一存储器组件。举例来说,存储器装置或组件的失败可触发一或多个分派的迁移。块装置管理器113可自动选择将分派迁移到的存储器组件,或可将目标存储器组件指示为来自主机系统120的请求的部分。这类迁移的实例说明为分派2从存储器装置220的存储器组件224到存储器装置208的同一类型的存储器组件212的迁移。
在一些实施例中,块装置管理器113从第一存储器装置接收对第一存储器装置或第一存储器装置内的存储器组件已达到耐久性水平阈值的指示。在一些实施例中,耐久性水平阈值是预定阈值或可编程阈值。在其它实施例中,块装置管理器113可从主机系统120接收所述指示。在一些实施例中,所述指示自动触发第二存储器装置的选择和块装置的一部分到第二存储器装置的迁移。
在一些实施例中,主机系统120响应于性能、容量或电力消耗需求的改变而请求块装置的重新配置。举例来说,不再需要(或较不需要)高性能存储器的应用程序可发指令给块装置管理器113将块装置的部分迁移到低性能媒体类型。同样地,应用程序可能需要更多容量,或可能需要减少电力消耗。在这类实施例中,块装置管理器113可将块装置的一部分(从多个存储器组件中)一个存储器组件迁移到(存储器装置池的)另一存储器装置的另一存储器组件。在一个实施例中,第二存储器组件与第一存储器组件具有不同媒体类型。举例来说,第二存储器组件的媒体类型可比第一存储器组件更好地适合于满足主机系统的性能、容量和电力消耗需求中的一或多个。遵循上述实例,所述不同媒体类型可为较低成本、较低电力媒体类型。块装置管理器113可类似地将数据从低性能媒体类型迁移到高性能媒体类型。所公开的实施例允许这类电力和成本优化。将分配从高性能存储器组件迁移到较低性能、较低成本存储器组件的实例说明为分派5从SLC存储器装置232的存储器组件238到QLC存储器装置208的存储器组件218的迁移。
将分派从低性能、低成本媒体类型迁移到较高性能、较高成本媒体类型的实例说明为分派4从存储器装置220的QLC存储器组件226到存储器装置232的SLC存储器组件242的迁移。
对于另一实例,在一些实施例中,一或多个存储器装置和存储器组件最初分配为块装置的部分。一些实施例对归因于主机系统的需求改变(例如,新近请求的几何形状、实施分级或实施高速缓存)而重建块装置的触发作出响应。在一些此类实施例中,通过以下操作来构造新块装置:从存储器装置池选择新的存储器装置群组,从新的存储器装置群组当中选择包含多达两种或更多种不同媒体类型的新存储器组件群组,以及聚合新的存储器组件群组以构建新块装置。应注意,在构造块装置之前或之后,存储器装置可添加到存储器装置池或从存储器装置池移除,进而创建新的存储器装置池。举例来说,一些实施例通过首先添加零或多个存储器装置给池化存储器装置或移除零或多个存储器装置来对重建块装置的触发作出响应。
所公开的实施例还可通过构造用作非相依存储器组件冗余阵列(RAIMC)的块装置而获得冗余、容错性和性能方面的优点。如本文中所使用,RAIMC将存储器子系统中的存储器装置上的多个物理存储器组件组合成一个逻辑单元(相比于独立磁盘冗余阵列(RAID),其使用多个磁盘创建逻辑单元)。更具体地,在一些实施例中,处理装置(即,块装置管理器)从子系统/装置选择多个存储器组件用作RAIMC。处理装置将用于存取第一存储器组件的阶层式地址提供给主机系统。阶层式地址包含相关联主机系统的主机ID和相关联存储器装置的装置ID。处理装置条带化和/或复制寻址到多个存储器组件上的第一存储器组件的数据存取。在一些实施例中,处理装置还存储针对每个数据元素的错误校正值(例如,指示当经复制第一和第二存储器组件的两个对应元素的“异或”(XOR)不是零时的数据错误的奇偶校验值可存储于第三存储器组件中)。在一些实施例中,RAIMC与擦除编码算法一起使用,这涉及总计n个存储器组件,其中m个组件存储数据且k个组件存储奇偶校验信息,使得n=m+k。所公开的实施例允许使用异构存储器组件构造RAIMC,所述异构存储器组件处于同一存储器装置、存储器子系统或主机系统内和/或处于不同存储器装置、存储器子系统或主机系统中。
图4是根据本公开的一些实施例的构造异构块装置的实例方法的流程图。方法400可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法400是由图1的块装置管理器113执行。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改过程的次序。因此,所说明的实施例应仅作为实例理解,且所说明的过程可以不同次序执行。一些过程可并行执行。另外,在各个实施例中可以省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。
在操作405处,处理装置接收对构造块装置的请求。举例来说,块装置管理器113从操作系统、应用程序或在主机系统120内运行的另一过程接收块装置请求。在一个实施例中,所述请求指示块装置的需求。在一个实施例中,所述需求包含容量、性能、耐久性或电力消耗中的两个或更多个。在一个实施例中,所述请求指定针对块装置的所请求的几何形状(例如,存储器装置的数目、装置内的存储器组件的并行单元/群组等)。
在操作410处,处理装置从存储器装置池当中选择多个存储器装置。举例来说,块装置管理器113可维持列举在存储器装置池中具有相关联几何形状的可用存储器组件资源的数据结构。
在一个实施例中,这类可用性数据结构列出可用存储器装置、其中的可用存储器组件、可用媒体类型、有待分配的存储范围等。在一些实施例中,可用性数据结构还包含可用存储空间的特性,例如最大可用连续块、最小可用块、几何形状(并行单元/群组)等。在一个实施例中,可用性数据结构用以准备分配的存储空间和存储器装置统计数据的按需报告。在一些实施例中,由执行方法400的块装置管理器113来维持可用性数据结构。参考可用性数据结构,举例来说,块装置管理器113从存储器装置208、220和232的列表(例如,池)当中选择多个存储器装置。在一些实施例中,块装置管理器113应用选择策略,其通过尝试在多个存储器装置和组件上均匀地分散分配的存储空间来平衡系统范围的存储利用。在一个实例中,当请求包含请求的几何形状时,块装置管理器113选择多个存储器装置以匹配所述请求。
在操作415处,处理装置从多个存储器装置当中选择具有多达两种或更多种(即,一种、两种、三种或更多种)不同媒体类型的多个存储器组件。举例来说,如上文所提及,块装置管理器113可维持可用性数据结构并且根据所述请求选择存储器组件。在实例中,块装置管理器113存取可用性数据结构并且从多个存储器装置当中选择具有多达两种或更多种(即,一种、两种、三种或更多种)不同媒体类型的多个存储器组件214、224、236、226、238和216。在此实例中,所选择的存储器组件具有两种不同媒体类型:SLC和QLC。在一些实施例中,块装置管理器113选择具有同构媒体类型(例如,所有SLC)的存储器组件。
在操作420处,处理装置聚合多个存储器组件以实施块装置。举例来说,块装置管理器113识别将用以存取多个分配的存储器组件的阶层式地址。这类阶层式地址各自包含相关联存储器装置的装置ID。
在实施例中,块装置管理器113聚合多个分配的存储器组件并且构造详述块装置244的几何形状的几何形状数据结构。举例来说,这类几何形状数据结构可包含构成块装置的存储器组件分配的逻辑块地址、并行单元/群组和地址格式。另外,这类几何形状数据结构可指定写入数据需求,例如最小写入数据大小。几何形状数据结构还可指示性能相关度量,例如用于读取、写入和重置的典型时间和最大时间。
在一个实施例中,块装置管理器113维持指示过去的分配(包含针对过去的请求做出的分配)的日志或历史数据结构。
当将响应于所述请求而提供新分配时,块装置管理器113更新这类数据结构。在实施例中,历史数据结构可用以在发生错误或失败(例如,存储器组件失败或存储器装置失败)的情况下重建块装置。
在操作425处,处理装置将用以存取多个存储器组件的阶层式地址提供给存储器子系统管理堆栈。举例来说,块装置管理器113将在操作420处创建的几何形状数据结构提供给存储器子系统管理堆栈125。提供给存储器子系统管理堆栈125的阶层式地址各自包含相关联存储器装置的装置ID。阶层式地址还可包含几何形状和存储器装置内的个别存储器组件可能需要的其它定址。
在一些实施例中,阶层式地址包含识别与每一存储器组件相关联的数个层的地址阶层的字段,包含:
·装置ID:识别相关联存储器装置。
·群组:并行单元(PU)的集合,每个PU处于装置上的不同传送总线或通道上。
·并行单元(PU):共享装置上的同一传送总线或通道的个别存储器组件的集合。
·逻辑块:用于读取和写入的最小可寻址单元。
·组块:逻辑块的集合。也可为用于重置(擦除)的最小可寻址单元。
在一个实施例中,存储器子系统管理堆栈125维持含有分配给一或多个块装置的逻辑地址的分配数据结构以供将来使用。在另一实施例中,计算环境100中的存储器装置中的每一个维持列举关于过去的分派的细节的分配数据结构。这类分配数据结构可用以在发生错误(例如,存储器组件或装置失败)的情况下重建块装置分配。这类分配数据结构还可用以产生系统范围的存储分配的按需报告。
在操作430处,处理装置对扩展、收缩或重建块装置或迁移块装置内的存储器组件的一或多个触发作出响应。在一些实施例中,处理装置可将新存储器装置或新存储器组件添加到块装置。举例来说,块装置管理器113可知道动态地修改块装置的以下触发中的任一个的发生率:1)组件失败(例如,存储器组件或存储器装置失败),2)耐久性改变(即,存储器装置接近耐久性水平阈值),3)性能需求改变(例如,主机系统的性能需求提高或性能需求降低),4)容量需求改变(例如,主机系统的容量需求提高或容量需求降低),5)电力消耗需求改变(例如,电力预算增加可能需要添加更多或更快速的媒体;电力预算减小可能需要解除分派一些存储媒体或将块装置的一部分迁移到较低性能、较低电力媒体类型),以及6)其它需求改变(例如,新近请求的几何形状、对实施分级的需求或对实施高速缓存的需求)。所公开的实施例通过动态地重建或修改块装置来对这类触发作出响应。
举例来说,在一些实施例中,当主机系统120需要较高性能存储时,将块装置的部分迁移到较高性能媒体类型。在此类实施例中,块装置管理器113将块装置的一部分从多个存储器装置中的第一存储器装置的存储器组件迁移到具有不同的较高性能媒体类型的第二存储器装置上的存储器组件。第一和第二存储器装置可与同一主机系统或不同主机系统相关联。将分配从低性能、低成本媒体类型迁移到高性能媒体类型的实例说明为如图2-3中所说明的分配4从存储器装置220的QLC存储器组件226到存储器装置232的SLC存储器组件242的迁移。
通过允许异构存储器组件(包含异构非易失性存储器组件)当中的分配的按需迁移,所公开的一些实施例通过实现动态高速缓存分配来提高性能。
对于另一实例,在一些实施例中,一或多个存储器装置和存储器组件最初分配为块装置的部分。一些实施例对指示归因于主机系统需求改变(例如,新近请求的几何形状、实施分级或实施高速缓存)而重建块装置的触发作出响应。在一些此类实施例中,通过以下操作来构造新块装置:从存储器装置池选择新的存储器装置群组,从新的存储器装置群组当中选择包含多达两种或更多种不同媒体类型的新存储器组件群组,以及聚合新的存储器组件群组以构建新块装置。
一旦经构造,便将用以存取块装置的存储器组件的阶层式地址提供给主机系统。此处,阶层式地址可含有与每一存储器组件相关联的主机ID,以及装置ID、群组、并行单元、逻辑块和组块的识别符,如上文所描述。
图5说明根据一些实施例的为托管块装置对多个异构存储器组件的另一初始分配。如所示出,计算系统500包含主机系统501、502和503的池,其中的每一个包含块装置管理器113。主机系统501、502和503是上文所描述的主机系统120的实例。应注意,在操作中,主机系统可添加到主机系统池或从主机系统池移除。举例来说,可通过添加选自正在添加到主机系统池的另一主机系统中的所添加存储器装置的存储器组件来扩展块装置。
主机系统总线509允许主机系统501、502和503的池当中的通信。举例来说,主机系统501可维持指示存储器装置508和520内的可用媒体类型的量的列表或其它数据结构并且与主机系统502和503共享那个数据。类似地,主机系统502和503可维持和共享用于其相应的基本存储器子系统532和560的类似数据结构。在一个实施例中,主机系统使用主机系统总线509向受池内另一主机系统管理的存储器子系统请求媒体分配。在一些实施例中,主机系统总线509是以太网、PCIe、无限带宽(Infiiband)或另一主机网络互连总线。在其它实施例中,主机501-503经由通过总线的网状架构上NVMe(NVMe Over Fabrics,NVMeOF)协议连接进行通信。
存储器子系统506与主机系统501相关联并且包含存储器装置508和520的池。应注意,在操作中,存储器装置可添加到存储器装置池或从存储器装置池移除,且主机系统可添加到主机系统池或从主机系统池移除。存储器装置508包含控制器115和四个SLC存储器组件512、514、516和518。上文所论述,存储器装置520包含控制器115和四个MLC存储器组件524、526、528和530。存储器装置508和520的控制器115是控制器115的实例。在一些实施例中,如在此处,存储器组件512、514、516、518、524、526、528和530可通过通道抽象化为并行单元的群组。举例来说,不同存储器组件可经由不同通道耦合到控制器,进而增强并行性和输贯量。这类群组提供另一定址层。SLC存储器组件516和518是并行单元519的部分。MLC存储器组件528和530是并行单元531的部分。同样地,MLC存储器组件524和526是并行单元527的部分。并行单元531和527是群组且每个群组属于单独通道或传送总线。
存储器子系统532与主机系统502相关联并且包含存储器装置534和546的池。存储器装置534含有控制器115和四个QLC存储器组件538、540、542和544。存储器组件542和544是并行单元545的部分。存储器装置546含有控制器115和四个QLC存储器组件550、552、554和556。QLC存储器组件554和556是并行单元557的部分。
存储器子系统560与主机系统503相关联并且包含存储器装置562和574的池。存储器装置562含有控制器115和四个TLC存储器组件566、568、570和572。TLC存储器组件570和572是并行单元573的部分。存储器装置574含有控制器115和四个MLC存储器组件578、580、582和584。MLC存储器组件582和584是并行单元585的部分。
主机系统501、502和503中的每一个可使用存储器子系统总线507分别与其相关联的存储器子系统506、532和560通信。在一些实施例中,存储器子系统总线507允许主机系统中的每一个与其相关联的存储器子系统中的存储器装置和存储器组件通信。在一些实施例中,存储器子系统总线507是外围组件接口高速(PCIe)总线,且在总线上传送的数据包遵循非易失性存储器高速(NVMe)协议。此总线可为其它类型,例如Gen-Z、计算机高速链路(CXL)、针对加速器的高速缓存一致性互连(CCIX)、双倍数据速率(DDR)等。
此处,计算系统500示出为包含SLC、MLC、TLC和QLC存储器装置。其它实施例包含具有各种媒体类型中的任一种媒体类型(包含所说明的媒体类型和/或非易失性存储器胞元的交叉点阵列)的存储器组件。
在操作中,聚焦于作为实例的主机系统501,块装置管理器113从处理器130(此处未示出,但上文关于图1进行描述)接收对构造块装置544的请求。举例来说,块装置管理器113通过分派物理单元、裸片和/或LUN来构造块装置544。在一些实施例中,存储器装置508、520、534、546、562和574使其内部存储资源对主机系统可见。在如此操作时,存储器装置508、520、534、546、562和574可据称形成耦合到主机系统501、502和503的池的存储器装置的池。在一些实施例中,主机系统501可例如通过发出几何形状命令给存储器装置,发现存储器装置508、520、534、546、562和574内的存储器组件的几何形状。如上文所描述,主机系统501随后可与所述请求一起(或除了所述请求之外)还指定请求的几何形状以构造块装置。
在一个实施例中,块装置管理器113从主机系统池当中选择多个主机系统(包含主机系统501、502和503),并且从所选择的主机系统选择多个存储器装置(包含存储器装置508、534和562),以实施块装置。从所选择的存储器装置当中,块装置管理器113进一步选择多个存储器组件以实施块装置544。如所示出,块装置管理器113分配存储器装置的部分,例如指配五个存储器组件的物理单元(PU)、裸片和/或逻辑单元号(LUN)以实施块装置544。如所示出,用以构造块装置544的分配选自异构存储器组件(各种媒体类型的存储器组件:SLC、MLC、TLC和QLC)当中。在一些实施例中,块装置管理器113可使所选择的分配的媒体类型与如由主机系统501所指示的块装置544的需求匹配。表3描述如图5中所说明通过块装置管理器113对块装置544的原始实施方案。
表3.块装置544(图5)
分派 | 存储器子系统 | 存储器装置 | 存储器组件 |
1 | 506 | 508 | 514 |
2 | 532 | 534 | 540 |
3 | 506 | 508 | 512 |
4 | 532 | 534 | 538 |
5 | 560 | 562 | 566 |
块装置管理器113随后产生将用以存取实施块装置544的多个存储器组件的阶层式地址并且提供给主机系统501。举例来说,块装置管理器113为存储器子系统管理堆栈125提供指配给块装置544的媒体的阶层式地址。
在一些实施例中,与对构造块装置的请求一起(或除了所述请求之外),块装置管理器113还从主机系统501接收对块装置的需求的指示。这类需求可包含容量、性能、耐久性或电力消耗。替代地,主机系统501可在媒体类型方面指示这类需求。在一些实施例中,块装置管理器113接收多达两种或更多种(即,一种、两种、三种或更多种)这类需求的指示和归于每种需求的存储量。作为响应,当选择多个主机系统、多个存储器装置和多个存储器组件时,块装置管理器113通过媒体类型来匹配对块装置的需求。举例来说,所述请求可指示一半的块装置将为高性能/低时延存储,而另一半的块装置将是大容量存储。作为响应,块装置管理器113可选择SLC媒体来实现高性能/低时延存储需求并且选择QLC媒体实现大容量存储需求。下文参考图7进一步描述用于构造块装置544的方法。
图6说明根据本公开的一些实施例的经修改块装置配置。所述图说明如图5中所说明并且在表3中描述的存储器子系统506、532和560的分配的重新配置。
块装置管理器113一开始通过响应于主机请求的几何形状而选择并聚合存储器装置508、534和562的五个存储器组件514、540、512、538和566(分别为分配1、2、3、4和5)来构造块装置544。如图6所示,块装置管理器113修改块装置分配以迁移分配1-4,移除分配5,并且添加分配6和7。此重新配置的分配说明为块装置694,含有六个分配的集合。表4示出如图6中所说明通过块装置管理器113对块装置694的实施方案。如所说明和描述,块装置管理器113以存储器组件512、552、542、516、518和580实施块装置694以分别托管由分配1、2、3、4、6和7组成的几何形状。
表4.块装置694(图6)
分配 | 存储器子系统 | 存储器装置 | 媒体组件 |
1 | 506 | 508 | 512 |
2 | 532 | 546 | 552 |
3 | 532 | 534 | 542 |
4 | 506 | 508 | 516 |
6 | 506 | 508 | 518 |
7 | 560 | 574 | 580 |
在一些实施例中,块装置管理器113响应于来自主机系统的请求而重新配置块装置。举例来说,主机系统501可发出触发块装置管理器113扩展块装置的请求。在一些实施例中,块装置管理器113通过以下操作作出响应:从池化存储器装置当中或从存储器装置池的另一存储器装置或从正在添加到存储器装置池的额外存储器装置或从正在添加到主机系统池的额外主机系统选择额外存储器组件(或其部分),并且将所述额外存储器组件与先前选择的存储器组件聚合以实施扩展的块装置。块装置的这类扩展的实例包含存储器装置508的存储器组件518中新近添加的分派6和存储器装置574的存储器组件580中新近添加的分派7。
举例来说,在一些实施例中,块装置管理器113可通过以下操作来扩展块装置:从多个存储器装置当中动态地选择含有额外存储器组件的额外存储器装置,并且将所述额外存储器组件与已经实施块装置的多个存储器组件聚合。
通过支持块装置的按需扩展,所公开的实施例允许主机系统501增加块装置的容量或按需要替换被解除分配的分派。
在一些实施例中,主机系统501发出对触发块装置管理器113收回、停用或解除分配分派的一部分,或以其它方式收缩块装置的请求。经重新配置的块装置694中的分派5的移除是这类解除分配的实例。此处,如图6中所示并在表4中描述,块装置管理器113已解除分配指配给分配5的存储。
通过允许块装置的按需收缩,所公开的实施例实现对无法执行或不良地执行的存储器装置的移除/替换。不需要解除分派的存储器组件还可使解除分配的存储容量可用于主机系统501(并且可用于主机系统502和503)的另一目的。
在一些实施例中,主机系统501发出对触发块装置管理器113将块装置的部分从第一存储器组件迁移到同一存储器装置上的同一媒体类型的第二存储器组件的请求。出现这类需求可有多种原因,例如对以不同方式放置数据以允许存取数据时的更大并行性、从失败的存储器组件移动数据等的需求。块装置管理器113通过选择将分派迁移到的另一存储器组件并且将数据从先前选择的存储器组件复制到新近选择的存储器组件来作出响应。新近选择的存储器组件可被指示为来自主机系统501的请求的部分。同一存储器装置内的迁移的实例说明为分配1从存储器装置508的存储器组件514到同一存储器装置508中的同一类型的存储器组件512的迁移。
在一些实施例中,需要将分派迁移到同一媒体类型但处于不同存储器装置中的另一存储器组件。举例来说,存储器装置的失败可触发一或多个分派的迁移。块装置管理器113可选择将分派迁移到的存储器组件,或可将目标存储器组件指示为来自主机系统501的请求的部分。这类迁移的实例说明为分派2从存储器装置534的QLC存储器组件540到存储器装置546的同一类型的QLC存储器组件552的迁移。
在一些实施例中,块装置管理器113从第一存储器装置接收对第一存储器装置或第一存储器装置内的存储器组件已达到耐久性水平阈值的指示。在其它实施例中,块装置管理器113从主机系统120接收所述指示。所述指示触发第二存储器装置的选择和块装置的一部分到第二存储器装置的迁移。
如上文所描述,在一些实施例中,主机系统501响应于数个触发中的任一个而动态地重新配置块装置。借助于重新配置,可扩展、收缩、重建、精简布建、复制和迁移块装置。将分派从低性能、低成本媒体类型迁移到较高性能、较高成本媒体类型的实例说明为分派4从存储器装置534的QLC存储器组件538到存储器装置508的SLC存储器组件516的迁移。
在一些实施例中,主机系统501不再需要(或较不需要)高性能存储并且将块装置的部分迁移到较低成本的媒体类型。在这类实施例中,块装置管理器113将块装置的一部分从多个存储器装置中的第一存储器装置的第一存储器组件迁移到第二存储器装置上的第二存储器组件,所述第二存储器组件具有不同于第一存储器组件的媒体类型的媒体类型。分配从高性能存储器组件迁移到较低成本存储器组件的实例说明为分配3从存储器子系统506的存储器装置508的SLC存储器组件512到存储器子系统532的存储器装置534的QLC存储器组件542的迁移。
在一些实施例中,主机系统501需要较高性能存储并且将块装置的部分迁移到较高性能媒体类型。在此类实施例中,块装置管理器113将块装置的一部分从多个存储器装置中的第一存储器装置的第一存储器组件迁移到第二存储器装置上的第二存储器组件,所述第二存储器组件具有不同的较高性能媒体类型。第一和第二存储器装置可与同一主机系统或不同主机系统相关联。将分配从低性能、低成本媒体类型迁移到高性能媒体类型的实例说明为分配4从存储器子系统532的存储器装置534的QLC存储器组件538到存储器子系统506的存储器装置508的SLC存储器组件516的迁移。
通过允许异构存储器组件当中的分配的按需迁移,所公开的一些实施例通过实现动态高速缓存分配来提高性能。
图7是说明根据本公开的一些实施例的构造异构块装置的实例方法的流程图。方法700可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法700由图1的块装置管理器113执行。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改过程的次序。因此,所说明的实施例应仅理解为实例,且所说明的过程可以不同次序执行。一些过程可并行地执行。另外,在各个实施例中可以省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。
在操作705处,处理装置从主机系统接收对构造块装置的请求。举例来说,块装置管理器113从操作系统、应用程序或在主机系统501内运行的另一过程接收块装置请求。在一个实施例中,所述请求指示块装置的需求。在一个实施例中,所述需求包含容量、性能、耐久性或电力消耗中的两个或更多个。在一个实施例中,所述请求指定针对块装置的所请求的几何形状。
在操作710处,处理装置从主机系统池当中选择多个主机系统。举例来说,块装置管理器113可维持列举主机系统池中的可用资源的数据结构。这类可用性数据结构的创建、维护和使用类似于上文关于操作410所描述的可用性数据结构的创建、维护和使用。然而,方法700中使用的可用性结构还包含关于多个主机系统的可用性信息。
在一个实施例中,通过执行方法700的主机系统中的异构块装置管理器113来维持和更新可用性数据结构。在一些实施例中,通过系统500中的其它冗余异构块装置管理器113一或多个来维持和更新可用性数据结构。举例来说,响应于分配、修改或解除分派块装置544,主机系统501的块装置管理器113可将对反映系统500中的可用存储器资源的可用性数据结构的更新发射到主机系统502和503中的异构块装置管理器113,进而使得每个块装置管理器113能够更新可用性数据结构的本地副本。这类冗余可用性数据结构可用以例如在发生错误(例如,主机系统或装置或组件失败)的情况下重构过去的分派。
在一些实施例中,系统中的主机或存储器装置中的每一个维持与其域中的存储器组件有关的本地可用性数据结构。执行方法700的异构块装置管理器113在执行操作710之前查询这类本地可用性数据结构。以此方式,块装置管理器113将对系统范围的分派具有最新的准确了解。这类最新的了解还将反映其它异构块装置管理器113创建或删除的分配。
如上文所描述,这类可用性数据结构列出可用的主机系统、存储器装置和存储器组件,以及可用的媒体类型、有待分配的存储范围等。参考这类可用性数据结构,举例来说,块装置管理器113从主机系统501、502和503的列表(例如,池)选择多个主机系统。在一个实例中,当所述请求包含请求的几何形状时,块装置管理器113选择匹配所述请求的多个主机系统、存储器装置和存储器组件。在一个实施例中,块装置管理器113为直接耦合到起始所述请求的主机系统/在起始所述请求的主机系统本地的存储器装置/组件提供优先级并且当无法在本地满足所述请求(例如,归因于对应媒体类型不可用)时利用耦合到池中的其它主机系统的存储器装置/组件。在一些实施例中,块装置管理器113当执行操作710时应用类似于上文关于操作410所描述的选择策略的选择策略。
在操作715处,处理装置从多个主机系统当中选择多个存储器装置。举例来说,如同操作710一样,块装置管理器113参考可用性数据结构从存储器装置508、520、534、546、562和574的池当中选择多个存储器装置。在一个实例中,当所述请求包含请求的几何形状时,块装置管理器113选择多个主机和多个存储器装置来匹配所述请求。
在一个实施例中,所述请求指示块装置的需求(例如,容量、性能、耐久性或电力消耗中的两个或更多个)。当所述请求指示块装置的需求时,块装置管理器113选择可用的主机系统、存储器装置和存储器组件实施块装置。在一个实例中,当所述请求指示对块装置的高性能部分的需求时,块装置管理器113通过选择SLC存储器组件来匹配那个需求。在另一实例中,当所述请求指示对块装置的低成本部分的需求时,块装置管理器113通过选择QLC存储器组件来匹配那个需求。
在操作720处,处理装置从多个存储器装置当中选择具有多达两种或更多种(即,一种、两种、三种或更多种)媒体类型的多个存储器组件。举例来说,如上文所提及,块装置管理器113可维持可用性数据结构。在一个实例中,参考可用性数据结构,块装置管理器113从在操作715处所选择的多个存储器装置当中选择具有多达两种或更多种(即,一种、两种、三种或更多种)不同媒体类型的多个存储器组件514、540、512、538和566。在此实例中,所选择的存储器组件具有三种不同/异构媒体类型:SLC、QLC和TLC。在一些实施例中,块装置管理器113可选择具有同构媒体类型的存储器组件。
在操作725处,处理装置聚合多个存储器组件以实施块装置。举例来说,块装置管理器113识别将用以存取多个分配的存储器组件的阶层式地址。这类阶层式地址各自包含相关联主机系统的主机ID和相关联存储器装置的装置ID。
在实施例中,块装置管理器113聚合多个分配的存储器组件并且构造详述块装置544的几何形状的几何形状数据结构(类似于上文关于操作420所描述的几何形状数据结构)。举例来说,这类几何形状数据结构可包含构成块装置的分配的逻辑块地址和地址格式。另外,这类几何形状数据结构可指定写入数据需求,例如最小写入数据大小。几何形状数据结构还可指示性能相关度量,例如用于读取、写入和重置的典型时间和最大时间。
在一个实施例中,块装置管理器113维持指示过去的分配(包含针对过去的请求做出的分配)的日志或历史数据结构。当将响应于所述请求而提供新分配时,块装置管理器113更新这类数据结构。在实施例中,历史数据结构可用以在发生错误或失败(例如,主机、装置或组件失败)的情况下重建块装置。
在操作730处,处理装置将用以存取多个存储器组件的阶层式地址提供给主机系统。举例来说,块装置管理器113将在操作725处创建的几何形状数据结构提供给主机系统120。提供给主机系统120的阶层式地址各自包含相关联主机系统的主机ID和相关联存储器装置的装置ID。如上文所描述,阶层式地址还可描述装置ID、群组、并行单元、逻辑块和组块。
在操作735处,类似于操作430,处理装置对扩展、收缩或重建块装置或迁移块装置内的存储器组件的一或多个触发作出响应。
在一个实施例中,主机系统501维持含有分配给主机系统501的逻辑地址的分配数据结构以供将来使用。在另一实施例中,系统500中的存储器装置中的每一个维持列举关于过去的分派的细节的分配数据结构。这类分配数据结构可用以在发生错误(例如,存储器组件错误、装置错误或主机错误)的情况下重建块装置分配。这类分配数据结构还可用以产生系统范围的存储分配的按需报告。在另一实施例中,主机系统502和503中的一或多个维持分配数据结构的冗余副本。
图8说明计算机系统800的实例机器,可执行所述计算机系统800内的指令集以用于致使所述机器执行本文中所论述的方法中的任一种或多种方法。在一些实施例中,计算机系统800可对应于主机系统(例如,图1的主机系统120),其包含、耦合到或使用存储器子系统(例如,图1的存储器子系统110)或可用以执行控制器的操作(例如,以执行操作系统从而执行对应于图1的块装置管理器113的操作)。在替代性实施例中,机器可连接(例如联网)到LAN、内联网、外联网和/或因特网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而以客户端-服务器网络环境中的服务器或客户端机器的容量进行操作。
所述机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝式电话、网络器具、服务器、网络路由器、交换机或桥接器,或能够执行(依序或以其它方式)指定将由所述机器采取的动作的指令集的任何机器。另外,虽然说明单个机器,但还应认为术语“机器”包含机器的任何集合,所述集合单独地或共同地执行一(或多)个指令集以进行本文中所论述的方法中的任何一或多种。
实例计算机系统800包含处理装置802、主存储器804(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM)例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器806(例如,闪存存储器、静态随机存取存储器(SRAM)等),以及数据存储系统818,其经由总线830彼此通信。
处理装置802表示一或多个通用处理装置,例如微处理器、中央处理单元等。更特定来说,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置802也可以是一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器或类似物。处理装置802配置成执行指令826,以用于进行本文中所论述的操作和步骤。计算机系统800可进一步包括网络接口装置808以经由网络820通信。
数据存储系统818可包含机器可读存储媒体824(也称为计算机可读媒体),其上存储有一或多个指令集826或体现本文中所描述的方法或功能中的任一或多种的软件。指令826还可在由计算机系统800执行期间完全或至少部分地驻存在主存储器804内和/或处理装置802内,主存储器804和处理装置802也构成机器可读存储媒体。机器可读存储媒体824、数据存储系统818和/或主存储器804可对应于图1的存储器子系统110。
在一个实施例中,指令826包含用以实施对应于异构块装置管理器组件(例如图1的块装置管理器113)的功能性的指令。虽然在实例实施例中机器可读存储媒体824展示为单个媒体,但是应认为术语“机器可读存储媒体”包含存储一或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含可存储或编码供机器执行的指令集合且致使机器执行本公开的方法中的任何一种或多种的任何媒体。术语“机器可读存储媒体”因此应被视为包含但不限于固态存储器、光学媒体和磁性媒体。
已在针对计算机存储器内的数据位的操作的算法和符号表示方面呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其他技术人员的方式。在本文中,且一般将算法构想为产生所要结果的操作的自洽序列。操作是要求对物理量进行物理操纵的操作。通常(但未必),这些量采用能够存储、组合、比较以及以其它方式操纵的电或磁信号的形式。已经证实,主要出于常用的原因,将这些信号称为位、值、元素、符号、字符、项、编号等等有时是便利的。
然而,应牢记,所有这些和类似术语将与适当物理量相关联,且仅仅为应用于这些量的便利标记。本公开可以指操控和变换计算机系统的寄存器和存储器内的表示为物理(电子)数量的数据为计算机系统存储器或寄存器或其它这类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
本公开还涉及用于执行本文中的操作的设备。此设备可以出于所需目的而专门构造,或其可以包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。举例来说,计算机系统或其它数据处理系统(例如控制器115)可响应于其处理器执行存储器或其它非暂时性机器可读存储媒体中所含的计算机程序(例如,指令序列)而执行计算机实施的方法400和700。此类计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的盘,包含软盘、光盘、CD-ROM和磁性光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡,或适合于存储电子指令的任何类型的媒体,其各自耦合到计算机系统总线。
本文中呈现的算法和显示器在本质上并不与任何特定计算机或其它设备相关。各种通用系统可以与根据本文中的教示的程序一起使用,或所述通用系统可以证明为便于构造以用以执行所述方法更加专用的设备。将如下文描述中所阐述的那样来呈现各种这些系统的结构。另外,未参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施如本文中所描述的本公开的教示内容。
本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以进行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如计算机可读)媒体包含机器(例如计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、闪存存储器组件等。
在前述说明书中,本公开的实施例已经参照其特定实例实施例进行描述。将显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书和图式。
Claims (20)
1.一种方法,其包括:
从主机系统接收对构造存储器分配的请求;
从存储器装置池选择多个存储器装置;
选择所述多个存储器装置当中的多个存储器组件;
聚合所述多个存储器组件以实施所述存储器分配;和
将用以存取实施所述存储器分配的所述多个存储器组件的阶层式地址提供给所述主机系统,所述阶层式地址各自包括相关联存储器装置的装置ID。
2.根据权利要求1所述的方法,其另外包括:
从所述主机系统接收指定所述存储器分配的需求的指示;且
其中选择所述多个存储器装置和所述多个存储器组件包含通过所述存储器组件的媒体类型来匹配所述存储器分配的所述需求,且其中所述存储器分配的所述需求包含容量、性能、耐久性或电力消耗中的两个或更多个。
3.根据权利要求1所述的方法,其另外包括:
接收要求动态地修改所述存储器分配的一或多个触发;
当所述一或多个触发指示容量需求提高、性能需求提高或电力预算增加中的一或多个时,通过从所述多个存储器装置当中或从所述存储器装置池的另一存储器装置或从正在添加到所述存储器装置池的额外存储器装置选择额外存储器组件,并且将所述额外存储器组件与已经实施所述存储器分配的所述多个存储器组件聚合,以此扩展所述存储器分配;和
当所述一或多个触发指示容量需求降低、性能需求降低和电力预算减小中的一或多个时,通过选择和解除分配所述多个存储器组件中的一个或所述多个存储器装置中的一个以及含于其中的所述多个存储器组件中的任一个,以此收缩所述存储器分配。
4.根据权利要求1所述的方法,其另外包括:
将所述存储器分配的第一部分从所述多个存储器组件中的第一存储器组件迁移到所述存储器装置池中的第二存储器装置上的第二存储器组件,其中通过以下各项来触发所述迁移:
所述主机系统的性能、容量和电力消耗需求中的一或多个的改变,
对所述多个存储器装置中的第一存储器装置已达到耐久性水平阈值的指示,或对所述第一存储器组件的失败的指示。
5.根据权利要求1所述的方法,其另外包括:
响应于指示所述主机系统的需求改变的触发而通过以下操作来重建所述存储器分配:
从所述存储器装置池选择新的多个存储器装置;
从所述新的多个存储器装置当中选择包括多达两种或更多种不同媒体类型的新的多个存储器组件;
聚合所述新的多个存储器组件以构建新的存储器分配;和
将用以存取实施所述新的存储器分配的所述新的多个存储器组件的阶层式地址提供给所述主机系统,所述阶层式地址各自包括相关联存储器装置的装置ID,其中所述主机系统的所述需求改变包括新近请求的几何形状、对实施分级的需求和对实施高速缓存的需求中的一个。
6.根据权利要求1所述的方法,其另外包括:
从所述多个存储器组件当中选择第一、第二和第三存储器组件;
使用所述第一、第二和第三存储器组件作为跨存储器装置的非相依存储器组件冗余阵列(RAIMC);
将用以存取所述第一存储器组件的阶层式地址提供给所述主机系统,所述阶层式地址包括相关联主机系统的主机ID和相关联存储器装置的装置ID;
将寻址到所述第一存储器组件的数据存取复制到所述第二和第三存储器组件;和
针对所述第三存储器组件的每个数据元素,存储反映所述第一和第二存储器组件的对应元素的“异或”(XOR)的奇偶校验,且其中所述奇偶校验的值‘1’指示数据错误。
7.根据权利要求1所述的方法,其中所述多个存储器组件是异构非易失性存储器组件,包含以下各项中的两个或更多个:单层级胞元(SLC)NAND快闪、多层级胞元(MLC)NAND快闪、三层级胞元(TLC)NAND快闪和四层级胞元(QLC)NAND快闪、三维交叉点、ReRAM和NRAM。
8.一种系统,其包括:
存储器装置池;和
处理装置,其以操作方式耦合到所述存储器装置池以进行以下操作:
从主机系统接收对构造存储器分配的请求,
从所述存储器装置池选择多个存储器装置,
选择所述多个存储器装置当中的多个存储器组件,
聚合所述多个存储器组件以实施所述存储器分配,和
将用以存取实施所述存储器分配的所述多个存储器组件的阶层式地址提供给所述主机系统,所述阶层式地址各自包括相关联存储器装置的装置ID。
9.根据权利要求8所述的系统,其中所述处理装置另外进行以下操作:
从所述主机系统接收指定所述存储器分配的需求的指示;且
其中选择所述多个存储器装置和所述多个存储器组件包含通过所述存储器组件的媒体类型来匹配所述存储器分配的所述需求,且其中所述存储器分配的所述需求包含容量、性能、耐久性或电力消耗中的两个或更多个。
10.根据权利要求8所述的系统,其中所述处理装置另外进行以下操作:
接收要求动态地修改所述存储器分配的一或多个触发;
当所述一或多个触发指示容量需求提高、性能需求提高或电力预算增加中的一或多个时,通过从所述多个存储器装置当中或从所述存储器装置池的另一存储器装置或从正在添加到所述存储器装置池的额外存储器装置选择额外存储器组件,并且将所述额外存储器组件与已经实施所述存储器分配的所述多个存储器组件聚合,以此扩展所述存储器分配;和
当所述一或多个触发指示容量需求降低、性能需求降低和电力预算减小中的一或多个时,通过选择和解除分配所述多个存储器组件中的一个或所述多个存储器装置中的一个以及含于其中的所述多个存储器组件中的任一个,以此收缩所述存储器分配。
11.根据权利要求8所述的系统,其中所述处理装置另外进行以下操作:
将所述存储器分配的第一部分从所述多个存储器组件中的第一存储器组件迁移到所述存储器装置池中的第二存储器装置上的第二存储器组件,其中通过以下各项来触发所述迁移:
所述主机系统的性能、容量和电力消耗需求中的一或多个的改变,
对所述多个存储器装置中的第一存储器装置已达到耐久性水平阈值的指示,或对所述第一存储器组件的失败的指示。
12.根据权利要求8所述的系统,其中所述处理装置另外进行以下操作:
响应于指示所述主机系统的需求改变的触发而通过以下操作来重建所述存储器分配:
从所述存储器装置池选择新的多个存储器装置,
从所述新的多个存储器装置当中选择包括多达两种或更多种不同媒体类型的新的多个存储器组件,
聚合所述新的多个存储器组件以构建新的存储器分配,和
将用以存取实施所述新的存储器分配的所述新的多个存储器组件的阶层式地址提供给所述主机系统,所述阶层式地址各自包括相关联存储器装置的装置ID,其中所述主机系统的所述需求改变包括新近请求的几何形状、对实施分级的需求和对实施高速缓存的需求中的一个。
13.根据权利要求8所述的系统,其中所述处理装置另外进行以下操作:
从所述多个存储器组件当中选择第一、第二和第三存储器组件,所述第一、第二和第三存储器组件与所述多个存储器装置中的多个相关联;
使用所述第一、第二和第三存储器组件作为非相依存储器组件冗余阵列(RAIMC);
将用以存取所述第一存储器组件的阶层式地址提供给所述主机系统,所述阶层式地址包括相关联主机系统的主机ID和相关联存储器装置的装置ID;
将寻址到所述第一存储器组件的数据存取复制到所述第二和第三存储器组件;和
针对所述第三存储器组件的每个数据元素,存储反映所述第一和第二存储器组件的对应元素的“异或”(XOR)的奇偶校验,且其中所述奇偶校验的值‘1’指示数据错误。
14.根据权利要求8所述的系统,其中所述多个存储器组件是异构的,包括不同类型的非易失性存储器组件,包含以下各项中的两个或更多个:单层级胞元(SLC)NAND快闪、多层级胞元(MLC)NAND快闪、三层级胞元(TLC)NAND快闪和四层级胞元(QLC)NAND快闪、3DXPoint、ReRAM和纳米RAM(NRAM,电阻性非易失性随机存取存储器(RAM))。
15.一种包括指令的非暂时性机器可读存储媒体,所述指令在由处理装置执行时致使所述处理装置进行以下操作:
从主机系统接收对构造存储器分配的请求;
从存储器装置池选择多个存储器装置;
选择所述多个存储器装置当中的多个存储器组件;
聚合所述多个存储器组件以实施所述存储器分配;和
将用以存取实施所述存储器分配的所述多个存储器组件的阶层式地址提供给所述主机系统,所述阶层式地址各自包括相关联存储器装置的装置ID。
16.根据权利要求15所述的非暂时性机器可读存储媒体,其中所述指令进一步致使所述处理装置进行以下操作:
接收要求动态地修改所述存储器分配的一或多个触发;
当所述一或多个触发指示容量需求提高、性能需求提高或电力预算增加中的一或多个时,通过从所述多个存储器装置当中或从所述存储器装置池的另一存储器装置或从正在添加到所述存储器装置池的额外存储器装置选择额外存储器组件,并且将所述额外存储器组件与已经实施所述存储器分配的所述多个存储器组件聚合,以此扩展所述存储器分配;和
当所述一或多个触发指示容量需求降低、性能需求降低和电力预算减小中的一或多个时,通过选择和解除分配所述多个存储器组件中的一个或所述多个存储器装置中的一个以及含于其中的所述多个存储器组件中的任一个,以此收缩所述存储器分配。
17.根据权利要求15所述的非暂时性机器可读存储媒体,其中所述指令进一步致使所述处理装置进行以下操作:
将所述存储器分配的第一部分从所述多个存储器组件中的第一存储器组件迁移到所述存储器装置池中的第二存储器装置上的第二存储器组件,其中通过以下各项来触发所述迁移:
所述主机系统的性能、容量和电力消耗需求中的一或多个的改变,
对所述多个存储器装置中的第一存储器装置已达到耐久性水平阈值的指示,或对所述第一存储器组件的失败的指示。
18.根据权利要求15所述的非暂时性机器可读存储媒体,其中所述指令进一步致使所述处理装置进行以下操作:
响应于指示所述主机系统的需求改变的触发而通过以下操作来重建所述存储器分配:
通过分别地,将零或多个存储器装置添加到所述存储器装置池或从所述存储器装置池移除零或多个存储器装置来定义新的存储器装置池,
从所述新的存储器装置池选择新的多个存储器装置,
从所述新的多个存储器装置当中选择包括多达两种或更多种不同媒体类型的新的多个存储器组件,
聚合所述新的多个存储器组件以构建新的存储器分配,和
将用以存取实施所述新的存储器分配的所述新的多个存储器组件的阶层式地址提供给所述主机系统,所述阶层式地址各自包括相关联存储器装置的装置ID,其中所述主机系统的所述需求改变包括新近请求的几何形状、对实施分级的需求和对实施高速缓存的需求中的一个。
19.根据权利要求15所述的非暂时性机器可读存储媒体,其中所述指令进一步致使所述处理装置进行以下操作:
从所述多个存储器组件当中选择第一、第二和第三存储器组件,所述第一、第二和第三存储器组件包含在同一存储器装置中;
使用所述第一、第二和第三存储器组件作为非相依存储器组件冗余阵列(RAIMC);
将用以存取所述第一存储器组件的阶层式地址提供给所述主机系统,所述阶层式地址包括相关联主机系统的主机ID和相关联存储器装置的装置ID;
将寻址到所述第一存储器组件的数据存取复制到所述第二和第三存储器组件;和
针对所述第三存储器组件的每个数据元素,存储反映所述第一和第二存储器组件的对应元素的“异或”(XOR)的奇偶校验,且其中所述奇偶校验的值‘1’指示数据错误。
20.根据权利要求15所述的非暂时性机器可读存储媒体,其中所述多个存储器组件是异构的,包括不同类型的非易失性存储器组件,包含以下各项中的两个或更多个:单层级胞元(SLC)NAND快闪、多层级胞元(MLC)NAND快闪、三层级胞元(TLC)NAND快闪和四层级胞元(QLC)NAND快闪、3D XPoint、ReRAM和纳米RAM(NRAM,电阻性非易失性随机存取存储器(RAM))。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/660,140 US20210117117A1 (en) | 2019-10-22 | 2019-10-22 | Construction of a block device |
US16/660,140 | 2019-10-22 | ||
PCT/US2020/054595 WO2021080774A1 (en) | 2019-10-22 | 2020-10-07 | Construction of a block device |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114600074A true CN114600074A (zh) | 2022-06-07 |
Family
ID=75490745
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080073480.8A Pending CN114600074A (zh) | 2019-10-22 | 2020-10-07 | 块装置的构造 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20210117117A1 (zh) |
JP (1) | JP2022553951A (zh) |
KR (1) | KR20220083716A (zh) |
CN (1) | CN114600074A (zh) |
DE (1) | DE112020005092T5 (zh) |
WO (1) | WO2021080774A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11194489B2 (en) * | 2020-04-27 | 2021-12-07 | Western Digital Technologies, Inc. | Zone-based device with control level selected by the host |
US11392526B2 (en) * | 2020-06-04 | 2022-07-19 | Micron Technology, Inc. | Memory system with selectively interfaceable memory subsystem |
US11500555B2 (en) * | 2020-09-04 | 2022-11-15 | Micron Technology, Inc. | Volatile memory to non-volatile memory interface for power management |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5793196B2 (ja) * | 2011-09-13 | 2015-10-14 | 株式会社日立製作所 | 仮想ボリュームに割り当てられた要求性能に基づく制御を行うストレージシステムの管理システム及び管理方法 |
US9472248B2 (en) * | 2014-03-28 | 2016-10-18 | Intel Corporation | Method and apparatus for implementing a heterogeneous memory subsystem |
US9542118B1 (en) * | 2014-09-09 | 2017-01-10 | Radian Memory Systems, Inc. | Expositive flash memory control |
US10073627B2 (en) * | 2015-01-13 | 2018-09-11 | Sandisk Technologies Llc | Addressing, interleave, wear leveling, and initialization schemes for different chip enables and memory arrays of different types |
JP6716757B2 (ja) * | 2019-06-19 | 2020-07-01 | キオクシア株式会社 | メモリシステムおよび制御方法 |
-
2019
- 2019-10-22 US US16/660,140 patent/US20210117117A1/en not_active Abandoned
-
2020
- 2020-10-07 WO PCT/US2020/054595 patent/WO2021080774A1/en active Application Filing
- 2020-10-07 CN CN202080073480.8A patent/CN114600074A/zh active Pending
- 2020-10-07 JP JP2022523555A patent/JP2022553951A/ja active Pending
- 2020-10-07 DE DE112020005092.0T patent/DE112020005092T5/de not_active Withdrawn
- 2020-10-07 KR KR1020227013639A patent/KR20220083716A/ko unknown
Also Published As
Publication number | Publication date |
---|---|
DE112020005092T5 (de) | 2022-07-28 |
JP2022553951A (ja) | 2022-12-27 |
KR20220083716A (ko) | 2022-06-20 |
US20210117117A1 (en) | 2021-04-22 |
WO2021080774A1 (en) | 2021-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111831469A (zh) | 错误恢复方法、非暂时性计算机存储媒体及存储器子系统 | |
US11429521B2 (en) | Allocation of overprovisioned blocks for minimizing write amplification in solid state drives | |
US11762567B2 (en) | Runtime memory allocation to avoid and delay defect effects in memory sub-systems | |
US11164652B2 (en) | Two-layer code with low parity cost for memory sub-systems | |
CN114600074A (zh) | 块装置的构造 | |
US11543980B2 (en) | Allocating variable media types of memory devices in a memory system | |
US11561855B2 (en) | Error handling optimization in memory sub-system mapping | |
US20210073139A1 (en) | Logical-to-physical (l2p) table sharding strategy | |
WO2023201462A1 (en) | Namespace level valid translation unit count | |
CN114600075A (zh) | 块装置的构建 | |
CN114981785A (zh) | 基于改变高速缓存中数据块的写入模式执行媒体管理操作 | |
CN113811847A (zh) | 来自主机系统的写入命令的部分执行 | |
US11609855B2 (en) | Bit masking valid sectors for write-back coalescing | |
US20200174935A1 (en) | Managing redundancy contexts in storage devices using eviction and restoration | |
US12105970B2 (en) | Host defined zone group configuration at a memory sub-system | |
US20230266897A1 (en) | Dynamic zone group configuration at a memory sub-system | |
US20240118971A1 (en) | Temporary parity buffer allocation for zones in a parity group | |
US20230266898A1 (en) | Host Defined Zone Group Configuration At A Memory Sub-System | |
US12019539B2 (en) | Adaptive configuration of memory devices using host profiling | |
US20220197535A1 (en) | Data operation based on valid memory unit count | |
CN117999547A (zh) | 用于存储器子系统中的两遍次编程的虚拟管理单元方案 | |
CN115437558A (zh) | 存储器系统中的对角页映射 | |
CN112988861A (zh) | 控制与键-值数据库相关联的输入/输出流的服务质量 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20220607 |
|
WD01 | Invention patent application deemed withdrawn after publication |