CN112131138B - 聚合和虚拟化固态驱动器中的存取优化 - Google Patents
聚合和虚拟化固态驱动器中的存取优化 Download PDFInfo
- Publication number
- CN112131138B CN112131138B CN202010580729.6A CN202010580729A CN112131138B CN 112131138 B CN112131138 B CN 112131138B CN 202010580729 A CN202010580729 A CN 202010580729A CN 112131138 B CN112131138 B CN 112131138B
- Authority
- CN
- China
- Prior art keywords
- solid state
- drive
- component solid
- optimization
- state drive
- 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
- 239000007787 solid Substances 0.000 title claims abstract description 409
- 238000005457 optimization Methods 0.000 title claims abstract description 122
- 230000015654 memory Effects 0.000 claims abstract description 241
- 238000013507 mapping Methods 0.000 claims abstract description 21
- 238000000034 method Methods 0.000 claims description 51
- 238000013519 translation Methods 0.000 claims description 49
- 238000012545 processing Methods 0.000 claims description 42
- 230000004044 response Effects 0.000 claims description 27
- 238000012544 monitoring process Methods 0.000 claims 2
- 238000003860 storage Methods 0.000 abstract description 44
- 238000004891 communication Methods 0.000 description 47
- 230000014616 translation Effects 0.000 description 43
- 238000005516 engineering process Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 230000009977 dual effect Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 239000000872 buffer Substances 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 239000000835 fiber Substances 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000002688 persistence Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002070 nanowire Substances 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0605—Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- 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
-
- 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/1056—Simplification
-
- 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/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
-
- 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/7208—Multiple device management, e.g. distributing data over multiple flash devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Systems (AREA)
Abstract
本申请针对聚合和虚拟化固态驱动器中的存取优化。一种固态驱动器具有驱动聚合器和多个组件固态驱动器。固态驱动器中的不同组件固态驱动器配置有存储器/存储装置操作的不同优化。所述固态驱动器中的地址映射由所述驱动聚合器使用以基于不同名称空间的优化要求且基于已经实施于所述组件固态驱动器中的存储器操作的所述优化在所述组件固态驱动器中代管所述名称空间。
Description
技术领域
本文中所公开的至少一些实施例大体来说涉及存储器系统,且更明确地说涉及(但不限于)固态驱动器的聚合和虚拟化中的存储器/存储装置存取的优化。
背景技术
存储器子系统可以是存储系统,例如固态驱动器(SSD)或硬盘驱动器(HDD)。存储器子系统可以是存储器模块,例如双列直插式存储器模块(dual in-line memory module,DIMM)、小型DIMM(small outline DIMM,SO-DIMM)或非易失性双列直插式存储器模块(non-volatile dual in-line memory module,NVDIMM)。存储器子系统可包含存储数据的一或多个存储器组件。存储器组件可以是例如非易失性存储器组件和易失性存储器组件。存储器组件的实例包含存储器集成电路。一些存储器集成电路是易失性的且需要电力来维持所存储数据。一些存储器集成电路是非易失性的,且即使当未被供电时也可保持所存储数据。非易失性存储器的实例包含快闪存储器、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)和电子可擦除可编程只读存储器(EEPROM)存储器等。易失性存储器的实例包含动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)。一般来说,主机系统可利用存储器子系统在存储器组件处存储数据且从存储器组件检索数据。
举例来说,计算机可包含主机系统和附接到主机系统的一或多个存储器子系统。主机系统可具有与所述一或多个存储器子系统通信以存储和/或检索数据和指令的中央处理单元(CPU)。用于计算机的指令可包含操作系统、装置驱动器和应用程序。操作系统管理计算机中的资源且提供例如存储器分配和资源的分时等用于应用程序的共同服务。装置驱动器操作或控制计算机中的特定类型的装置;且操作系统使用装置驱动器来提供由所述类型的装置提供的资源和/或服务。计算机系统的中央处理单元(CPU)可运行操作系统和装置驱动器以向应用程序提供服务和/或资源。中央处理单元(CPU)可运行使用所述服务和/或资源的应用程序。举例来说,实施计算机系统的一种类型的应用的应用程序可指示中央处理单元(CPU)将数据存储在存储器子系统的存储器组件中且从存储器组件检索数据。
发明内容
在一个方面中,本申请针对一种固态驱动器,所述固态驱动器包括:驱动聚合器;以及多个组件固态驱动器,其连接到所述驱动聚合器,所述组件固态驱动器中的每一个具有能够处理来自主机系统的命令的控制器;其中所述多个组件固态驱动器中的第一组件固态驱动器被配置成用于第一优化;其中所述多个组件固态驱动器中的第二组件固态驱动器被配置成用于第二优化;且其中所述驱动聚合器配置地址映射以根据所述第一优化将第一数据集代管于所述第一组件固态驱动器中,且根据不同于所述第一优化的所述第二优化将第二数据集代管于所述第二组件固态驱动器中。
在另一方面中,本申请针对一种方法,所述方法包括:提供具有驱动聚合器和连接到所述驱动聚合器的多个组件固态驱动器的固态驱动器,所述组件固态驱动器中的每一个具有能够处理来自主机系统的命令的控制器;配置所述多个组件固态驱动器中的第一组件固态驱动器以用于存储器操作的第一优化;配置所述多个组件固态驱动器中的第二组件固态驱动器以用于存储器操作的第二优化;根据所述第一优化在所述第一组件固态驱动器中配置第一数据集;以及根据不同于所述第一优化的所述第二优化在所述第二组件固态驱动器中配置第二数据集。
在另一方面中,本申请针对一种驱动器聚合器,所述驱动器聚合器包括:至少一个主机接口,其经配置以与主机系统通信;多个驱动接口,其用以分别与多个组件固态驱动器通信,所述多个组件固态驱动器包含被配置成用于存储器操作的第一优化的第一组件固态驱动器和被配置成用于存储器操作的第二优化的第二组件固态驱动器;以及转译逻辑,其耦合在主机接口和所述多个驱动接口之间;其中所述转译逻辑经配置以操作地址映射,以根据所述第一优化在所述第一组件固态驱动器中代管第一名称空间,且根据不同于所述第一优化的所述第二优化在所述第二组件固态驱动器中代管第二名称空间。
附图说明
实施例是借助于实例而非限制在附图的各图中示出,在附图中相似参考指示类似元件。
图1示出根据本公开的一些实施例具有存储器子系统的实例计算系统。
图2展示连接到具有多个组件固态驱动器的虚拟化单个固态驱动器的主机系统。
图3展示根据一个实施例的驱动聚合器。
图4展示根据一个实施例实施于驱动聚合器中的方法。
图5展示将虚拟化固态驱动器中接收的命令分布到固态驱动器的方法。
图6展示连接到具有多个组件固态驱动器的虚拟化单个固态驱动器的多个主机系统。
图7展示根据一个实施例具有多个主机接口的驱动聚合器。
图8展示经由多个并行和/或冗余连接连接到虚拟化单个固态驱动器的主机系统。
图9展示经由多个主机接口处理虚拟化固态驱动器中接收的命令的方法。
图10展示根据一个实施例具有存取优化的虚拟化单个固态驱动器。
图11展示根据一个实施例经配置以优化对虚拟化单个固态驱动器中的存储器/存储装置的存取的驱动聚合器。
图12-14示出根据一些实施例用于驱动聚合器的优化设置的实例。
图15展示虚拟化固态驱动器中的存取优化的方法。
具体实施方式
本公开的至少一些方面是针对将多个存储器子系统聚合为充当针对主机系统的单个存储器子系统的组合式存储器子系统的技术。在一些实施例中,单个存储器子系统配置有多个主机接口以服务于多个主机系统,或经由多个并行和/或冗余连接服务于一个主机系统。
当前,固态驱动器(SSD)可提供于单个集成电路封装中。举例来说,固态驱动器(SSD)可以球状栅格阵列(BGA)形状因数来封装。BGA SSD具有嵌入于集成电路封装中的控制器以处理来自主机系统的命令,控制存取嵌入于BGA SSD中的介质单元或存储器组件中的数据的操作,且产生针对来自主机系统的命令的响应。然而,单个集成电路封装和/或BGA形状因数可能限制BGA SSD的存储容量。
本公开的至少一些方面经由驱动聚合器解决上述和其它缺陷,所述驱动聚合器经配置以将多个SSD聚合和虚拟化为针对主机系统的单个SSD。因此,多个BGA SSD可用于构造针对主机系统的一个高容量SSD。组合的SSD可具有不受单个集成电路封装和/或BGA形状因数限制的存储容量。
通常,驱动聚合器可用于聚合和虚拟化针对主机系统的多个存储器子系统。存储器子系统的一个实例为经由外围互连件(例如,输入/输出总线、存储区域网络)连接到中央处理单元(CPU)的存储装置。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器和硬盘驱动器(HDD)。存储器子系统的另一实例是经由存储器总线连接到中央处理单元(CPU)的存储器模块。.存储器模块的实例包含双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM)、非易失性双列直插式存储器模块(NVDIMM)等。在一些实施例中,存储器子系统是提供存储器功能和存储功能两者的混合式存储器/存储装置子系统。一般来说,主机系统可利用包含一或多个存储器组件的存储器子系统。主机系统可提供数据以存储于存储器子系统处并且可请求从存储器子系统检索数据。
图1示出根据本公开的一些实施例具有存储器子系统的实例计算系统100。在图1中,固态驱动器101展示为此存储器子系统的实例。聚合固态驱动器101使用多个组件固态驱动器107到109构造。固态驱动器101的驱动器聚合器103将多个组件固态驱动器107到109的整个组合容量虚拟化为聚合固态驱动器101的容量。驱动聚合器103将组件固态驱动器107到109屏蔽于主机系统111使得主机系统111可通过寻址单个固态驱动器101来存取多个组件固态驱动器107到109的存储器容量。大体来说,图1中的组件固态驱动器107到109中的每一个是存储器子系统的另一实例。
大体来说,存储器子系统可包含介质,例如介质单元/存储器组件。介质单元/存储器组件可以是易失性存储器组件、非易失性存储器组件或此些的组合。介质单元/存储器组件中的每一个可独立于其它介质单元/存储器组件的操作执行存储、记录、编程、写入或提交新数据的操作。因此,介质单元/存储器组件可并行地用于执行写入命令。在一些实施例中,存储器子系统是存储系统。存储系统的实例为固态驱动器(SSD)。在其它实施例中,存储器子系统为存储器模块。存储器模块的实例包含DIMM、NVDIMM和NVDIMM-P。在另外的实施例中,存储器子系统是混合式存储器/存储装置子系统。通常,计算系统100可包含主机系统111,其经由计算机总线117使用存储器子系统(例如,固态驱动器101)。举例来说,主机系统111可将数据写入到存储器子系统且从存储器子系统读取数据。
主机系统111可以是计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置或包含存储器和处理装置的这种计算装置。主机系统111可包含或经由计算机总线117耦合到存储器子系统(例如,固态驱动器101),使得主机系统111可从存储器子系统读取数据或将数据写入到存储器子系统。主机系统111可经由物理主机接口耦合到存储器子系统。如本文所使用,“耦合”到通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如,没有中间组件),无论是有线还是无线的,包含例如电连接、光学连接、磁连接等连接。物理主机接口的实例包含(但不限于)串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行附接的SCSI(SAS)、双数据速率(DDR)存储器总线等。物理主机接口可用于在主机系统111和存储器子系统(例如固态驱动器101)之间发射数据。当存储器子系统通过PCIe接口与主机系统111耦合时,主机系统111可进一步利用NVM高速(NVMe)接口来存取存储器子系统的存储容量。物理主机接口可提供用于在主机系统111和存储器子系统(例如固态驱动器101)之间传递控制、地址、数据和其它信号的接口。图1示出固态驱动器101作为实例存储器子系统。一般来说,主机系统111可经由相同通信连接、多个单独通信连接和/或通信连接的组合存取多个存储器子系统。
主机系统111包含处理装置113和控制器115。主机系统111的处理装置113可为例如微处理器、中央处理单元(CPU)、处理器的处理核心、执行单元等。在一些例子中,控制器115可称为存储器控制器、存储器管理单元和/或起始器。在一个实例中,控制器115控制耦合在主机系统111和存储器子系统(例如固态驱动器101)之间的计算机总线117上的通信。
通常,控制器115可向存储器子系统发送针对对于存储器存储容量的所要存取的命令或请求。控制器115可进一步包含接口电路系统以经由计算机总线117与存储器子系统通信。接口电路系统可将从存储器子系统接收的响应转换为用于主机系统111的信息。
主机系统111的控制器115可与存储器子系统的控制器115通信以在存储器子系统的存储器组件处执行例如读取数据、写入数据或擦除数据等操作和其它这类操作。在一些例子中,控制器115集成于处理装置113的相同集成电路封装内。在其它例子中,控制器115与处理装置113的集成电路封装分离。控制器115和/或处理装置113可包含例如一或多个集成电路和/或离散组件、缓冲存储器、高速缓冲存储器或其组合等硬件。控制器115和/或处理装置113可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或另一合适的处理器。
大体来说,存储器子系统(例如,固态驱动器107或109)的介质单元/存储器组件可包含不同类型的非易失性存储器组件和/或易失性存储器组件的任何组合。非易失性存储器组件的实例包含与非(NAND)型快闪存储器。存储器组件中的每一个可包含存储器单元的一或多个阵列,所述存储器单元例如单层级单元(SLC)或多层级单元(MLC)(例如,三层级单元(TLC)或四层级单元(QLC))。在一些实施例中,特定存储器组件可包含存储器单元的SLC部分和MLC部分两者。存储器单元中的每一个可存储由主机系统111使用的一或多个数据位(例如,数据块)。尽管描述例如NAND型快闪存储器等非易失性存储器组件,但存储器组件可基于任何其它类型的存储器,例如易失性存储器。在一些实施例中,存储器组件可为(但不限于)随机存取存储器(RAM)、只读存储器(ROM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、相变存储器(PCM)、磁性随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、铁电随机存取存储器(FeTRAM)、铁电RAM(FeRAM)、导电桥接RAM(CBRAM)、电阻性随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、或非(NOR)快闪存储器、电可擦除可编程只读存储器(EEPROM)、基于纳米线的非易失性存储器、并入有忆阻器技术的存储器,以及非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉栅格数据存取阵列基于体电阻的改变来执行位存储。另外,与许多基于快闪的存储器对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。此外,存储器组件的存储器单元可分组为存储器页或数据块,其可指用以存储数据的存储器组件的单元。
大体来说,存储器子系统(例如,固态驱动器107或109)可具有控制器,其与存储器子系统的存储器组件通信以执行例如读取数据、写入数据或擦除数据等操作和其它这类操作(例如,响应于命令总线上调度的命令)。存储器子系统的控制器可包含例如一或多个集成电路和/或离散组件、缓冲存储器或其组合等硬件。存储器子系统的控制器可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或另一合适的处理器。存储器子系统的控制器可包含经配置以执行存储在控制器的本地存储器中的指令的处理装置(例如,处理器)。举例来说,存储器子系统的控制器的本地存储器可包含嵌入式存储器,其经配置以存储用于执行控制存储器子系统的操作(包含处理存储器子系统和主机系统(例如,111)之间的通信)的各种过程、操作、逻辑流和例程的指令。在一些实施例中,本地存储器可包含存储存储器指针、所提取数据等的存储器寄存器。本地存储器还可包含用于存储微码的只读存储器(ROM)。虽然典型的存储器子系统具有控制器,但在本公开的另一实施例中,存储器子系统可不包含控制器,而是可改为依赖于外部控制(例如,由外部主机或由与存储器子系统分离的处理器或控制器提供)。
通常,存储器子系统(例如,固态驱动器107或109)的控制器可从主机系统111接收命令或操作,且可将命令或操作转换为指令或适当命令来实现对存储器子系统的存储器组件的所要存取。存储器子系统(例如,固态驱动器107或109)的控制器可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ECC)操作、加密操作、高速缓存操作,以及逻辑块地址和物理块地址之间的地址转译。存储器子系统(例如,固态驱动器107或109)的控制器可进一步包含主机接口电路系统以经由物理主机接口与主机系统(例如,111)通信。主机接口电路系统可将从主机系统接收的命令转换为存取存储器组件的命令指令,以及将与存储器组件相关联的响应转换为用于主机系统(例如,111)的信息。
存储器子系统(例如,固态驱动器107或109)还可包含额外电路系统或组件。在一些实施例中,存储器子系统(例如,固态驱动器107或109)可包含高速缓冲存储器或缓冲器(例如,DRAM)和地址电路系统(例如,行解码器和列解码器),所述地址电路系统可从存储器子系统的控制器接收地址且解码所述地址以存取存储器子系统中的存储器组件。
计算系统100包含驱动聚合器103,其聚合组件固态驱动器107到109的容量且将整个组合容量虚拟化为单个固态驱动器101的容量。在一些实施例中,驱动聚合器103包含逻辑电路系统以将来自主机系统111的命令/请求转译为到固态驱动器107到109的命令/请求,和/或将来自固态驱动器107到109的响应转译为到主机系统111的响应。驱动聚合器103根据用于固态驱动器接受来自主机系统的命令的通信协议存取来自主机系统111的命令。驱动聚合器103根据用于主机系统向固态驱动器发布命令的通信协议构建命令并将命令发射到组件固态驱动器(例如,107或109)中的每一个。驱动聚合器103根据主机系统和固态驱动器之间的通信协议接受来自组件固态驱动器(例如,107或109)中的每一个的响应。驱动聚合器103根据主机系统和固态驱动器之间的通信协议构建响应并将响应发射到主机系统111。在一个实施例中,主机系统111和驱动器聚合器103之间使用的通信协议可与驱动器聚合器103和组件固态驱动器107到109之间使用的通信协议相同。在一个实施例中,主机系统111和驱动器聚合器103之间使用的通信协议可与驱动器聚合器103和组件固态驱动器107到109之间使用的通信协议不同。驱动聚合器103根据一个通信协议针对主机系统111表现得类似标准固态驱动器的控制器,且根据相同或不同的通信协议针对组件固态驱动器107到109表现得类似标准主机系统。
在固态驱动器101中,驱动器聚合器103经由总线105连接到组件固态驱动器107到109。举例来说,总线105可包含从驱动器聚合器103到组件固态驱动器107到109的点对点串行连接。驱动器聚合器103和组件固态驱动器107到109之间的点对点串行连接可根据串行高级技术附件(SATA)通信协议、外围组件互连高速(PCIe)通信协议或另一协议。主机系统111和驱动聚合器103之间的计算机总线117可根据串行高级技术附件(SATA)通信协议、外围组件互连高速(PCIe)通信协议、通用串行总线(USB)通信协议、光纤通道通信协议、串行附接SCSI(SAS)通信协议、双数据速率(DDR)存储器总线通信协议等。
驱动聚合器103可使用具有现场可编程门阵列(FPGA)或专用集成电路(ASIC)的集成电路芯片来实施。或者,驱动聚合器103可至少部分经由软件或固件来实施。举例来说,驱动器聚合器103或嵌入于驱动器聚合器103内的处理装置可经配置以执行存储在存储器中的用于执行本文中所描述的驱动聚合器103的操作的指令。在一些实施例中,驱动聚合器103实施于配置于具有多个组件固态驱动器107的总体固态驱动器101上的单个集成电路芯片中。
图2展示连接到具有多个组件固态驱动器107到109的虚拟化单个固态驱动器的主机系统111。举例来说,虚拟化单个固态驱动器可用于实施图1所示的固态驱动器101。
在图2中,印刷电路板131经配置以具有用于作为单个固态驱动器101到主机系统111的连接135的引脚133。举例来说,连接135可以是根据SATA、PCIe、USB或另一标准的点对点串行连接。基于通信标准,主机系统111经配置以将配置于印刷电路板131上的装置辨识为单个固态驱动器101。主机系统111基于将装置辨识为单个固态驱动器101来寻址装置中的存储器。
来自主机系统111的命令经由连接135和引脚133在驱动聚合器103中接收。所接收命令在驱动聚合器103中经处理以供调整、映射和/或分布到组件固态驱动器107到109。举例来说,组件固态驱动器107到109中的每一个可被实施为能够直接处理来自主机系统111的命令的球状栅格阵列(BGA)固态驱动器(SSD)。举例来说,当从组件固态驱动器109到驱动聚合器103的连接137直接再连接到主机系统111时,主机系统111可辨识固态驱动器109,且直接与固态驱动器109通信以将数据存储在固态驱动器109中和/或从固态驱动器109检索数据。
举例来说,BGA SSD 107可具有能够与主机系统(例如,111)直接通信以接收命令和提供响应的控制器141;且BGA SSD 107可具有拥有用以存储数据的存储器单元的多个介质单元(存储器组件)143到147。
驱动聚合器103经配置以将组件固态驱动器107到109的细节屏蔽于主机系统111。因此,主机系统111不必单独地寻址组件固态驱动器107到109。举例来说,根据一组预定规则,驱动聚合器103可将来自主机系统111的一些命令转发到一个组件固态驱动器(例如,107),且将来自主机系统111的其它命令转发到另一组件固态驱动器(例如,109)。
举例来说,驱动聚合器103可将配置于印刷电路板131上的装置的整个容量的逻辑地址空间划分为多个区。所述区中的每一个与组件固态驱动器107到109中的对应一个相关联。当驱动聚合器103接收到从主机系统111接收的命令时,驱动聚合器103确定所述命令的逻辑地址所处的区,识别与所确定的区相关联的目标固态驱动器(例如,107),调整命令以至少将主机中接收的命令中的逻辑地址映射到目标固态驱动器(例如,107)中的逻辑地址,且将经调整命令发射到目标固态驱动器(例如,107)。
在一些实施例中,主机系统111经配置以将印刷电路板上的虚拟化单个固态驱动器101的存储器容量组织为命名部分。存储器容量的名称部分为名称空间。可在针对虚拟化单个固态驱动器101的存储器容量分离的不同名称空间内限定逻辑地址。举例来说,n个块的存储器容量的第一部分上分配的第一名称空间可具有0到n-1的范围内的逻辑块寻址(LBA)地址;且m个块的存储器容量的第二部分上分配的第二名称空间可具有0到m-1的范围内的LBA地址。为了存取存储器块,主机系统111识别名称空间和所述名称空间内限定的LBA地址。
驱动聚合器103可经配置以基于名称空间将由主机系统111请求的操作分布到组件固态驱动器107到109。举例来说,驱动聚合器103可将虚拟化单个固态驱动器101的存储器容量上创建的不同名称空间指派到不同组件固态驱动器107到109。随后,驱动聚合器103可基于命令中所指定的名称空间简单地将来自主机系统111的命令转发到组件固态驱动器。
图3展示根据一个实施例的驱动聚合器103。举例来说,图3的驱动聚合器103可用于图2的印刷电路板131上和/或图1的虚拟化单个固态驱动器101中。
图3的驱动聚合器103可集成于单个集成电路芯片内。图3的驱动聚合器103包含用于到主机系统(例如,111)的连接135的主机接口151、转译逻辑153和多个驱动接口155到157。驱动接口155到157中的每一个可用于到组件固态驱动器(例如,109)的连接(例如,137)。
主机接口151经配置以在主机系统和固态驱动器之间实施通信协议的固态驱动器侧。驱动接口155和157中的每一个经配置以在主机系统和固态驱动器之间实施通信协议的主机系统侧。在一些例子中,驱动器接口155到157可支持不同通信协议(例如,SATA和PCIe),使得可使用不同类型的组件固态驱动器107到109。
转译逻辑153经配置以接收来自主机接口151的命令,且产生针对驱动接口155到157的一或多个命令。当从驱动接口155到157接收一或多个相应的响应时,转译逻辑153产生对于来自主机接口151的命令的响应。
驱动聚合器103具有控制转译逻辑153的操作的地址映射159。举例来说,地址映射159可用于将虚拟化单个固态驱动器101的容量中的逻辑地址转译为连接到驱动接口155到157中的一个的相应组件固态驱动器(例如,107或109)的容量中的相应逻辑地址。基于地址转译,转译逻辑153可产生针对相应驱动接口(例如,155或157)的相应命令。
在一些实施方案中,连接135中和连接137中使用的通信协议是不同的。因此,转译逻辑153根据通信协议的差异执行命令转译。
在一些实施方案中,连接135中和连接137中使用的通信协议是不同的;且转译逻辑153可简单地将连接135中接收的命令转发到驱动接口157。举例来说,当在连接到驱动接口157的组件固态驱动器(例如,109)上创建名称空间时,来自主机接口151的用于名称空间中的读取或写入操作的命令可转发到驱动接口157。
转译逻辑153可被实施为现场可编程门阵列(FPGA)、专用集成电路(ASIC)或执行指令集的一或多个微处理器。指令和/或地址映射159可存储在驱动聚合器103的本地存储器单元中。作为替代,或以组合方式,指令和/或地址映射159可存储在连接到驱动接口155到157的组件固态驱动器(例如,107到109)中的一或多个中。
图4展示根据一个实施例实施于驱动聚合器103中的方法。举例来说,图4的方法可实施于图1、2和/或3中示出的驱动聚合器103中。
在框201处,驱动聚合器103接收来自主机系统111的命令。所述命令指定待由固态驱动器101执行的操作。驱动聚合器103针对主机系统111充当单个固态驱动器101的控制器。因此,从主机系统111到驱动聚合器的命令被配置成寻址到相同固态驱动器101。驱动聚合器103连接到多个固态驱动器107到109。
在框203处,驱动聚合器103将来自主机系统111的命令中的地址映射到连接到驱动聚合器103的多个固态驱动器107到109当中的固态驱动器(例如,107或109)中的地址。所述映射可基于来自主机系统111的命令中所指定的名称空间、预定地址映射方案和/或地址映射159。
在框205处,驱动聚合器103产生命令并将命令发射到固态驱动器(例如,107或109)。到固态驱动器(例如,107或109)的命令经配置成用于从主机系统111接收的命令中所指定的操作,以及用于固态驱动器(例如,107或109)中映射的地址。
举例来说,单个固态驱动器101的存储器容量中创建的名称空间中限定的逻辑地址可映射到经指派以实施名称空间的固态驱动器(例如,107或109)的存储器容量中创建的名称空间中限定的相同逻辑地址。
举例来说,由驱动聚合器103表示的单个固态驱动器101的整个存储器容量中限定的逻辑地址的空间可划分成区(例如,根据预定义方案)。不同区可映射到组件固态驱动器107到109的存储器容量中限定的逻辑地址的空间。
当主机系统111和驱动聚合器103之间的通信协议不同于驱动聚合器103和组件固态驱动器107到109之间的通信协议时,驱动聚合器103可根据通信协议执行命令转译。
当主机系统111和驱动聚合器103之间的通信协议与驱动聚合器103和组件固态驱动器107到109之间的通信协议相同时,在一些实施方案中(例如,当地址映射是基于名称空间时),驱动聚合器103可经配置以将命令无改变地转发到目标固态驱动器101。
举例来说,主机系统111和驱动聚合器103之间的通信协议以及驱动聚合器103和组件固态驱动器107到109之间的通信协议可各自为标准协议中的任一个,例如用于串行高级技术附件(SATA)接口的协议、用于外围组件互连高速(PCIe)接口的协议、用于通用串行总线(USB)接口的协议、用于光纤通道的协议等。
在框207处,驱动聚合器103从固态驱动器(例如,107或109)接收响应于到固态驱动器(例如,107或109)的命令的响应。
在框209处,驱动聚合器103基于来自固态驱动器(例如,107或109)的响应产生响应且将响应发射到主机系统111,其中到主机系统的响应是响应于来自主机系统的用于来自主机系统的命令中所指定的操作和地址的命令。
在一些实施方案中,驱动聚合器103执行协议转译以考虑到主机系统111的连接135和到组件固态驱动器(例如,109)的连接(例如,137)之间的协议差异。在其它实施方案中,驱动聚合器103执行针对到主机系统111的响应的进一步调整以考虑来自主机系统111的命令和到组件固态驱动器(例如,109)的命令之间的逻辑地址差异。
图5展示将虚拟化固态驱动器中接收的命令分布到固态驱动器的方法。举例来说,图5的方法可实施于具有图2中所示出的配置中的组件固态驱动器107到109的图1的虚拟化固态驱动器101中。举例来说,图5的方法可实施于图1、2和/或3中示出的驱动聚合器103中。
在框241处,驱动聚合器103将多个固态驱动器107到109虚拟化为连接到主机系统111的单个固态驱动器101。
在框243处,驱动聚合器103从主机系统111接收在虚拟化固态驱动器101的容量上创建名称空间的第一命令。
在框245处,驱动聚合器103针对名称空间从多个固态驱动器107到109选择固态驱动器(例如,107或109)。
在框247处,驱动聚合器103存储使名称空间与选定固态驱动器(例如,107或109)相关联的数据。
在框249处,驱动聚合器103将第一命令发射到选定固态驱动器(例如,107或109)以在选定固态驱动器(例如,107或109)中创建名称空间。
在框251处,驱动聚合器103从主机系统111接收识别名称空间的第二命令。
在框253处,驱动聚合器103基于名称空间与选定固态驱动器的关联将第二命令发射到选定固态驱动器(例如,107或109)。
如图5中将命令分布到组件固态驱动器107到109的技术可简化驱动聚合器103的转译逻辑153,且因此减小转译逻辑153的复杂性、能量消耗和成本。
在本文中所公开的一些实施例中,单个固态驱动器配置有允许多个主机系统存取固态驱动器的存储器/存储容量的多个物理主机接口。在一些实施方案中,主机系统可使用到固态驱动器的多个物理主机接口的多个并行和/或冗余连接来改进性能和/或可靠性。
图6展示连接到具有多个组件固态驱动器107到109的配置于印刷电路板131上的虚拟化单个固态驱动器101的多个主机系统111到112。
类似于图2中所示出的固态驱动器101,图6中示出的固态驱动器101可使用多个BGA SSD(例如,107)作为组件固态驱动器107到109来构造。每一组件固态驱动器(例如,107)具有控制器(例如,141),当组件固态驱动器(例如,107)直接连接到主机系统(例如,111)时,所述控制器能够在无驱动聚合器103的情况下直接服务于主机系统(例如,111)。
驱动聚合器103经配置以将所述组组件固态驱动器107到109的存储器/存储容量虚拟化为单个虚拟化固态驱动器101的存储器/存储容量,且虚拟化为用于主机系统111到112的均匀存储器/存储资源。
印刷电路板131配置有多组引脚133到134。每一组引脚(例如,133或134)足以建立主机系统(例如,111或112)和固态驱动器101之间的连接以便充分存取固态驱动器101。举例来说,主机系统(例如,111或112)可使用任何引脚组(例如,133或134)将命令或请求发射到固态驱动器101,且接收对于相应命令或请求的响应。
多组引脚133到134允许图6中的主机系统111到112分别使用并行连接135到136与固态驱动器101通信。举例来说,主机系统111可经由连接135和引脚133将命令/请求发送到固态驱动器101,同时主机系统112可经由另一连接136和替代的引脚134将类似命令/请求(或不同类型的命令/请求)发送到固态驱动器101。举例来说,主机系统111可与主机系统112将写入命令或读取命令发送到固态驱动器101同时发送写入命令。因此,主机系统111到112可作为整体共享由固态驱动器101提供的存储器/存储资源。
图6的驱动聚合器103可服务于来自每一主机系统(例如,111或112)的命令/请求,其方式类似于图2-5中示出以及关于图2-5描述的驱动聚合器103。
在一些例子中,当两个同时命令映射到相同组件固态驱动器(例如,107或109)以供执行时,图6的驱动聚合器103可进一步通过调度命令以供非同时执行来解决冲突,如下文进一步论述。
图7展示根据一个实施例具有多个主机接口151到152的驱动聚合器103。举例来说,图7的驱动聚合器103可以在图8的固态驱动器101中使用。
图7的转译逻辑153可基于地址映射159以类似于图3的转译逻辑153的方式将主机接口(例如,151或152)中接收的命令分布到驱动接口155到157。
此外,当在多个主机接口151到152中同时接收多个命令时,命令的操作可在一些情况下映射到不同驱动接口且在其它情况下映射到相同驱动接口。举例来说,当多个命令经配置以在与相同驱动接口155相关联的逻辑地址上操作时,发生冲突。所述冲突防止转译逻辑153使用驱动接口并行地同时执行命令。在此情形下,转译逻辑153可使用命令队列161来调度命令的循序执行以避免冲突。
当不存在冲突时,多个主机接口151到152中同时接收的多个命令可由分别连接到驱动接口155到157的单独的组件固态驱动器(例如,107到109)并行地执行。所述执行可在一些实施方案中经由针对组件固态驱动器(例如,107到109)产生相应命令或经由将所接收命令转发到相应驱动接口155到157来执行。
当存在冲突时,转译逻辑153可使用命令队列161来调度从不同主机接口151到152接收的冲突命令的循序执行。举例来说,当主机接口151和152中接收的两个命令根据地址映射159识别与驱动接口155相关联的相同名称空间(或逻辑地址区)时,转译逻辑153可在命令队列161中将命令中的一个列队,且将另一命令转发到驱动接口155(或在恰当协议和/或地址转译之后产生和发射用于另一命令的操作的相应命令)。随后,转译逻辑153可从命令队列161检索剩余命令且将其转发到驱动接口(或在恰当协议和/或地址转译之后产生和发射用于从命令队列检索的命令的操作的相应命令)。
在一些实施方案中,转译逻辑153不以从主机接口(例如,151或152)接收命令的次序支持从主机接口(例如,151或152)接收的命令的执行。转译逻辑153可经由命令队列布置命令的执行次序以增加命令到驱动接口155到157的并行发射,且因此改进具有驱动聚合器103的固态驱动器101的总体性能。
在一些例子中,主机接口151到152中的两者或两者以上可由相同主机系统使用以增加到驱动聚合器的通信带宽和/或改进到驱动聚合器的连接中的可靠性。
图8展示经由多个并行和/或冗余连接135到136连接到虚拟化单个固态驱动器101的主机系统111。举例来说,图8的虚拟化单个固态驱动器101可使用图7的驱动聚合器103以类似于图6的虚拟化单个固态驱动器101的方式实施。
在图8中,虚拟化单个固态驱动器101具有可以如图7中所示出的方式连接到单独的主机系统的多组引脚133到134。在图8的实例中,固态驱动器101的多组引脚133到134经由并行冗余连接连接到相同主机系统111。因此,主机系统111可使用连接中的任一个将特定命令发送到固态驱动器101(例如,将数据写入/存储在存储器单元中或从存储器单元读取/检索数据)。
举例来说,当连接(例如,135或136)中的一个损坏时,主机系统111可使用剩余连接(例如,136或135)来存取固态驱动器101的存储器/存储容量。因此,系统的可靠性得以改进。
此外,主机系统111可经由连接135到136将多个命令并行地发送到固态驱动器101以供执行。举例来说,主机系统111可在经由连接136发送写入命令时同时经由连接135发送读取命令。举例来说,主机系统111可针对存储到配置于组件固态驱动器107上的名称空间中的读取数据流使用连接135,同时针对从配置于另一组件固态驱动器109上的另一名称空间检索的写入数据流使用连接136。
图9展示经由多个主机接口151到152处理虚拟化固态驱动器101中接收的命令的方法。举例来说,图9的方法可实施于在图6或8中示出的配置中具有组件固态驱动器107到109的图1的虚拟化固态驱动器101中。举例来说,图9的方法可实施于图6、7和/或8中示出的驱动聚合器103中。此外,图9的方法可与图4和/或5的方法组合使用。
在框271处,具有至少两个主机接口(例如,151和152)的驱动聚合器103同时接收第一主机接口(例如,151)中的第一命令和第二主机接口(例如,152)中的第二命令。
在框273处,驱动聚合器103的转译逻辑153确定是否将在经由驱动聚合器103的驱动接口155到157连接到驱动聚合器103的多个固态驱动器107到109当中的相同固态驱动器(例如,107或109)中执行第一和第二命令。
在框275处,将在相同固态驱动器(例如,107或109)中执行第一和第二命令的确定导向框279;且将在不同固态驱动器(例如,107和109)中执行第一和第二命令的确定导向框279。
举例来说,对于主机接口(例如,151和152)中接收的第一和第二命令中的每一相应命令,转译逻辑153可确定待操作的存储器单元。举例来说,存储器单元可被操作以根据相应命令中所指定的逻辑地址用于读取数据或用于写入数据。当存储器单元确定为处于连接到驱动接口(例如,155或157)的组件固态驱动器(例如,107或109)中时,将在组件固态驱动器(例如,107或109)中执行相应命令。举例来说,可使用地址映射159基于相应命令中所指定的存储器单元的逻辑地址和/或逻辑地址的名称空间来进行组件固态驱动器(例如,107或109)的识别(例如,如上文结合图4和5所论述)。当每一命令映射到组件固态驱动器(例如,107或109)时,多个同时命令可在一些例子中映射到相同组件固态驱动器(例如,107或109),且在其它例子中不映射到任何相同组件固态驱动器(例如,107或109)。
在框277处,转译逻辑153并行地将命令发射到多个固态驱动器107到109中的两个以执行第一和第二命令的操作,因为第一和第二命令不在相同组件固态驱动器(例如,107或109)上操作。
在框279处,转译逻辑153调度命令用于循序发射到相同固态驱动器(例如,107或109)以执行第一和第二命令的操作,因为第一和第二命令在相同组件固态驱动器(例如,107或109)上操作。循序发射解决冲突。
类似于图4和5中的操作,并行地或依次发射到固态驱动器以执行第一和第二命令的操作的命令可涉及协议转译和地址转译。
举例来说,当主机连接135到136上的通信协议不同于驱动连接(例如,137)上的通信协议时,转译逻辑153从针对第一和第二命令的协议转译为到驱动接口155到157的命令。
举例来说,当主机连接135到136上的通信协议与驱动连接(例如,137)上的通信协议相同且地址映射159是基于名称空间和上面代管名称空间的组件驱动器之间的关联时,转译逻辑153可简单地将第一和第二命令作为相应命令转发到驱动接口155到157。
举例来说,当地址映射159用于将主机接口151到152中接收的命令中的LBA地址区映射到组件固态驱动器157到159中的不同LBA地址时,转译逻辑153可针对相应组件固态驱动器157到159用根据地址映射159计算的所映射LBA地址替换主机接口151到152中接收的命令中的LBA地址。
在本文中所公开的一些实施例中,具有多个组件固态驱动器的虚拟化单个固态驱动器经配置以针对不同数据集以不同方式优化存储器/存储装置存取。举例来说,一个数据集可以针对读取操作优化的方式存储在虚拟化单个固态驱动器中(例如,用于存储将在主机系统中执行的指令或代码);另一数据集可以针对写入操作优化的方式存储在虚拟化单个固态驱动器中(例如,用于存储日志数据);又一数据集可以针对正使用的存储器单元的持久性优化的方式存储在虚拟化单个固态驱动器中(例如,用于存储频繁改变的数据);且再一数据集可以针对正检索的数据的可靠性优化的方式存储在虚拟化单个固态驱动器中(例如,用于存储任务关键数据/代码)。举例来说,连接到虚拟化单个固态驱动器的主机系统可针对不同数据集创建不同名称空间,且指示针对相应名称空间的所要存取优化。虚拟化单个固态驱动器的驱动聚合器可通过将名称空间映射到以不同方式优化的组件固态驱动器来实施优化。在一些例子中,驱动聚合器可使用多个组件固态驱动器来实施具有特定优化的名称空间。可选地,驱动聚合器自动检测名称空间的数据使用模式,且随后经由在组件固态驱动器中再映射名称空间和/或重新配置组件固态驱动器来自动实施针对数据使用模式的优化。
图10展示根据一个实施例具有存取优化的虚拟化单个固态驱动器101。
在图10的固态驱动器101中,组件固态驱动器107到109针对不同类型的操作单独地优化。
举例来说,组件固态驱动器107到109中的一个可针对读取操作优化,其适于存储将在主机系统中执行的指令或代码;组件固态驱动器107到109中的另一个可针对写入操作优化,其适于存储日志数据;组件固态驱动器107到109中的又一个可针对持久性优化,其适于存储频繁改变的数据;且组件固态驱动器107到109中的再一个可针对正检索的数据的可靠性优化,其适于存储任务关键数据/代码。
在一些实施方案中,组件固态驱动器107到109针对存储器/存储装置操作和/或使用的不同类型的优化预配置和/或硬连线。所述优化可不由驱动聚合器103动态地改变。举例来说,可使用不同的用于存取优化的存储器技术来实施不同组件固态驱动器107到109中的介质单元145。举例来说,不同组件固态驱动器107到109可具有不同内部结构和/或控制器141来实现不同优化方式。
在一些实施方案中,组件固态驱动器107到109至少部分经由不同优化设置171到173来优化。在一些例子中,设置171到173可由驱动聚合器103配置和/或改变。因此,组件固态驱动器107到109可在固态驱动器101连接到一或多个主机系统111到112之后优化。此外,驱动聚合器103可基于经由固态驱动器101的引脚133到134接收的命令中反映的实际存储器/存储装置使用来调整优化设置以实现进一步优化。
在一些实施方案中,当固态驱动器101初始连接到主机系统(例如,111或112)时,组件固态驱动器107到109可以是相同的。主机系统可将命令发送到固态驱动器101;且作为响应,驱动聚合器103配置固态驱动器的优化参数107到109以优化经由逻辑地址区和/或名称空间识别的不同数据集的存储器操作。
举例来说,优化设置107到109可包含存储器编程模式的识别。举例来说,当在SLC(单层级单元)模式中编程存储器单元时,存储器单元存储一个信息位;当在MLC(多层级单元)模式中编程存储器单元时,存储器单元存储两个信息位;当在TLC(三层级单元)模式中编程存储器单元时,存储器单元存储三个信息位;且当在QLC(四层级单元)模式中编程存储器单元时,存储器单元存储四个信息位。不同编程模式提供存取性能、持久性、存储容量、可靠性等的不同折衷。
举例来说,优化设置107到109可包含数据编程技术的识别。举例来说,数据可使用单平面编程技术或多平面编程技术编程到介质单元145中。举例来说,数据可使用单遍次编程技术或多遍次编程技术编程到介质单元145中。在一些例子中,组件固态驱动器(例如,107或109)提供用于多遍次编程的多个选项和/或用于多平面编程的多个选项。不同编程选项和/或技术可提供存取性能、持久性、存储容量和/或可靠性等的不同折衷。
驱动聚合器103可通过将数据集代管于以不同方式优化的组件固态驱动器中来优化不同数据集。举例来说,主机系统111可将创建名称空间用于将数据存储在名称空间中的命令发送到固态驱动器。所述命令可识别或指示针对名称空间的优化偏好。基于优化偏好,驱动聚合器103可选择具有相应优化的组件固态驱动器(例如,107或109),且在选定组件固态驱动器(例如,107或109)中创建名称空间。驱动聚合器103存储使名称空间与选定组件固态驱动器(例如,107或109)相关联的地址映射159,使得导向名称空间的后续命令转发到选定组件固态驱动器(例如,107或109)。
在一些例子中,主机系统111可将创建名称空间的命令发送到固态驱动器,而无针对名称空间的优化偏好的指示。驱动聚合器103可为名称空间指派默认偏好,且根据默认偏好和/或其它考虑因素(例如,可用性和/或负载平衡)在组件固态驱动器(例如,107或109)中创建名称空间。随后,驱动聚合器103可监视名称空间的使用以检测模式。基于使用模式,驱动聚合器103可为名称空间指派更新的偏好,且根据更新的偏好和/或其它考虑因素(例如,可用性和/或负载平衡)将名称空间移动到组件固态驱动器(例如,107或109)。
举例来说,为了将名称空间从源组件固态驱动器107移动到目的地组件固态驱动器109,驱动聚合器103可向源组件固态驱动器107产生检索来自名称空间的数据的命令,且向目的地组件固态驱动器109产生存储检索到的数据的命令。
在将来自源组件固态驱动器107的名称空间复制到目的地组件固态驱动器109的时间周期期间,驱动聚合器103可基于名称空间的复制进程将名称空间中的逻辑地址处的命令(例如,写入或删除命令)从主机系统转发到源组件固态驱动器和目的地组件固态驱动器107和109中的一个。如果名称空间中的逻辑地址处的数据尚未复制到目的地组件固态驱动器109,则命令转发到源组件固态驱动器107。如果名称空间中的逻辑地址处的数据已复制到目的地组件固态驱动器109,则命令转发到目的地组件固态驱动器109。
在将名称空间从源组件固态驱动器107复制到目的地组件固态驱动器109之后,驱动聚合器103可更新地址映射以使名称空间与目的地组件固态驱动器109相关联,而不使名称空间与源组件固态驱动器107相关联。
图10示出实例,其中虚拟化单个固态驱动器101具有用于并行和/或冗余连接135到136的多组引脚133到134,其方式类似于图6或8的驱动器101。大体来说,不必具有多组引脚133到134来实施存取优化。举例来说,优化设置107到109可实施于具有用于到一个主机系统111的连接135的一组引脚133的图2的驱动器101中。
图11展示根据一个实施例经配置以优化对虚拟化单个固态驱动器中的存储器/存储装置的存取的驱动聚合器103。举例来说,图11的驱动聚合器103可以在图10的固态驱动器101中使用。
图11示出实例,其中驱动聚合器103具有用于并行和/或冗余连接135到136的多个主机接口151到152,其方式类似于图7的驱动聚合器103。大体来说,不必具有多个主机接口151到152。举例来说,具有存取优化能力的一个实施例的驱动聚合器103可具有仅一个主机接口,其方式类似于图3的驱动聚合器103。
转译逻辑153经配置以管理地址映射159,用于将主机接口151到152中接收的命令中所指定的逻辑地址映射到连接到驱动接口155到157的固态驱动器的逻辑地址。
图11中的地址映射159进一步包含优化设置154,其识别连接到驱动接口155到157的组件固态驱动器107到109中的一些逻辑地址的优化配置。举例来说,优化设置154可通过使驱动接口与优化选项相关联来实施;且经配置以使用优化选项的不同名称空间在地址映射159中与驱动接口相关联。
在一些例子中,可经由使用一个以上组件固态驱动器来实施优化。
举例来说,多个组件固态驱动器可用于并行地存储名称空间使得名称空间在多个组件固态驱动器中镜射。因此,存储在名称空间中的可靠性数据可得以改进。
举例来说,多个组件固态驱动器可用于并行地存储名称空间,使得寻址名称空间的命令的数据的部分分布于多个组件固态驱动器中。因此,因为存储和/或检索数据的部分可针对所述命令使用多个组件固态驱动器并行地执行,所以可针对名称空间改进存取性能/速度。
举例来说,转译逻辑可使用多个组件固态驱动器来实施针对名称空间的RAID(独立磁盘冗余阵列)操作。RAID操作可包含使用名称空间的条带化、镜射和/或奇偶校验技术。
图12-14示出根据一些实施例用于驱动聚合器103的优化设置154的实例。举例来说,图12-14中示出的优化设置154可以在图11的驱动聚合器103中使用。
在图12中,驱动接口155和157分别与优化172和174相关联。
举例来说,组件固态驱动器107和109可分别连接到驱动接口155和157。组件固态驱动器107和109可分别针对优化172和174硬连线;且驱动接口155和157与优化172和174之间的关联指示驱动聚合器103可用的经优化资源。
作为替代或以组合方式,组件固态驱动器107和109可分别至少部分使用图10中示出的设置171和173针对优化172和174来配置。驱动聚合器103可将设置传送到组件固态驱动器107和109来配置优化172和174。
当主机系统(例如,111)请求具有驱动聚合器103的固态驱动器101创建根据优化A172优化的名称空间A 181时,驱动聚合器103为名称空间A181选择驱动接口155,且将创建名称空间A 181的命令发送到连接到驱动接口155的组件固态驱动器107。驱动聚合器103在优化设置154和/或地址映射159中使名称空间A 181与驱动接口155相关联以允许将寻址到名称空间A181的命令转发到驱动接口155。
类似地,当主机系统(例如,111)请求具有驱动聚合器103的固态驱动器101创建根据优化B174优化的名称空间B183时,驱动聚合器103为名称空间B183选择驱动接口157,且将创建名称空间B183的命令发送到连接到驱动接口157的组件固态驱动器109。驱动聚合器103在优化设置154和/或地址映射159中使名称空间B183与驱动接口157相关联以允许将寻址到名称空间B183的命令转发到驱动接口157。
图13示出实例,其中连接到驱动接口155和157的组件固态驱动器107和109一起用于实施优化A 172。举例来说,名称空间181可在组件固态驱动器107和109中镜射来改进名称空间181中的数据可靠性。并非需要在驱动接口157中镜射组件固态驱动器107中的所有名称空间。举例来说,当根据优化设置154在连接到驱动接口155和157的组件固态驱动器107和109中镜射名称空间A181时,可仅在组件固态驱动器107和109中的一个中创建另一名称空间。
优化A 172识别将由转译逻辑153在针对名称空间A 181的命令转译中执行的操作。举例来说,响应于在名称空间A181中从主机系统111接收到写入命令,转译逻辑153将写入命令转发到驱动接口155和驱动接口157两者。举例来说,响应于在名称空间A181中从主机系统111接收到读取命令,转译逻辑153将读取命令转发到驱动接口155和驱动接口157两者且针对一种类型的优化比较结果,或在另一类型的优化中将读取命令转发到驱动接口155和驱动接口157中的具有最低工作负荷的一个驱动接口。
类似地,驱动接口155和157可一起用于实施一种类型的优化A172,其中使名称空间A 181条带化以将各部分并行地分布到连接到驱动接口155和157的组件固态驱动器107和109。
类似地,多个驱动接口155到157可一起用于实施一种类型的优化A172,其中名称空间A 181的数据与奇偶校验数据一起存储在连接到驱动接口155到157的组件固态驱动器107到109中。
图14示出实例,其中多个名称空间181和183可映射到相同驱动接口155以用于实施于连接到驱动接口155的组件固态驱动器107中的优化A172。
类似地,多个名称空间可映射到一起用于实施优化的一组接口。
图15展示虚拟化固态驱动器中的存取优化的方法。举例来说,图15的方法可实施于具有图2、6、8或10中所示出的配置中的组件固态驱动器107到109的图1的虚拟化固态驱动器101中。举例来说,图15的方法可实施于具有图12、13和/或14中示出的优化设置154的图2-3、6-8、10和/或11中示出的驱动聚合器103中。此外,图15的方法可与图4、5、和/或9的方法组合使用。
在框281处,提供固态驱动器101以具有驱动聚合器103以及连接到驱动聚合器103的多个组件固态驱动器107到109。组件固态驱动器107到109中的每一个具有能够处理来自主机系统(例如,111、112)的命令的控制器141。
在框283处,驱动聚合器103针对存储器操作的第一优化(例如,172)配置所述多个组件固态驱动器107到109中的第一组件固态驱动器(例如,107)。举例来说,第一组件固态驱动器(例如,107)可经配置以在减小时延的情况下优化频繁读取。或者,第一组件固态驱动器(例如,107)可经配置以优化来改进循序读取(或随机读取)中的性能。或者,第一组件固态驱动器(例如,107)可经配置以优化来改进循序写入(或随机写入)中的性能。或者,第一组件固态驱动器(例如,107)可经配置以优化来改进经历重复编程/擦除循环的存储器单元的持久性。或者,第一组件固态驱动器(例如,107)可经配置以优化来增加不频繁改变的数据的存储容量。或者,第一组件固态驱动器(例如,107)可经配置以优化来减小对于固态驱动器101的操作温度的敏感度。或者,第一组件固态驱动器(例如,107)可经配置以优化来减小错误率。
在框285处,驱动聚合器103针对存储器操作的第二优化(例如,174)配置所述多个组件固态驱动器107到109中的第二组件固态驱动器(例如,109)。举例来说,第二优化(例如,174)可以是上文结合第一优化(例如,172)所论述的可能优化中的任一个。通常,第一和第二优化(例如,172和174彼此不同。
在框287处,驱动聚合器103根据第一优化172在第一组件固态驱动器107中配置第一数据集。
在框289处,驱动聚合器103根据不同于第一优化172的第二优化174在第二组件固态驱动器109中配置第二数据集。
举例来说,经由第一名称空间181识别第一数据集;且经由第二名称空间183识别第二数据集。驱动聚合器103经配置以在第一组件固态驱动器107中存储第一设置171来实施第一优化172,且在第二组件固态驱动器109中存储第二设置173来实施第二优化174。
在一些实施方案中,第一组件固态驱动器107和第二组件固态驱动器109分别针对第一优化172和第二优化174硬连线。举例来说,第一组件固态驱动器107中使用的存储器单元可具有不同于第二组件固态驱动器109中使用的存储器单元的类型。举例来说,不同组件固态驱动器107和第二组件固态驱动器109中的控制器141可具有不同处理功率水平。
在其它实施方案中,第一组件固态驱动器107和第二组件固态驱动器109在固态驱动器101连接到主机系统(例如,111)之前是相同的。可响应于到主机系统(例如,111)的命令和/或名称空间181和183中的数据集的存储器/存储装置使用模式经由设置171和173配置第一和第二优化。
上文(例如,结合图4、5、9和/或15)所论述的方法可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,处理装置上运行或执行的指令)或其组合。在一些实施例中,图4、5、9和/或15的方法至少部分由图1、2、3、6、7、8、10或11的驱动聚合器103来执行。尽管以特定序列或次序展示,但除非另外规定,否则操作的次序可经修改。因此,应理解,所示出的实施例仅为实例,且所示出的操作可以不同次序执行,且一些操作可并行地执行。另外,可在各种实施例中省略一或多个操作。因此,并非在每一实施例中需要所有的操作。其它操作流程是可能的。
在一些实施方案中,主机系统111和存储器子系统(例如,固态驱动器101)之间的通信信道包含计算机网络,例如局域网、无线局域网、无线个域网、蜂窝通信网络、宽带高速始终连接无线通信连接(例如,当前或将来代的移动网络链路);且主机系统111和存储器子系统可经配置以使用类似于NVMe协议中的数据存储管理和使用命令彼此通信。
涉及驱动聚合器103的操作的一些实施例可使用由一或多个微处理器执行的计算机指令来实施。计算机指令可被配置成固态驱动器101的固件。在一些例子中,硬件电路可用于实施至少一些功能。固件可初始存储在非易失性存储介质或另一非易失性装置中,且加载到易失性DRAM和/或处理器中高速缓冲存储器中以供由驱动聚合器的微处理器执行。
非暂时性计算机存储介质可用于存储存储器子系统(例如,固态驱动器101,或组件固态驱动器107到109中的任一个)的固件的指令。当指令由微处理器执行时,指令致使存储器子系统执行上文所论述的方法。
大体来说,计算机系统的实例机器可具有指令集,用于致使机器执行本文所论述的方法中的任何一或多种。在一些实施例中,此计算机系统可对应于主机系统(例如,图1的主机系统111),所述主机系统包含、耦合到或利用存储器子系统(例如,图1的固态驱动器101),或可用于执行驱动聚合器103的操作(例如,执行指令以执行对应于参考图1-15描述的驱动聚合器103的操作)。在替代实施例中,机器可连接(例如,联网)到LAN、内联网、外联网和/或因特网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而在客户端-服务器网络环境中作为服务器或客户端机器操作。
机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝式电话、网络器具、服务器、网络路由器、开关或桥接器,或能够(循序或以其它方式)执行指定待由所述机器采取的动作的指令集的任何机器。另外,尽管示出单个机器,但还应认为术语“机器”包含机器的任何集合,所述集合单独地或共同地执行一(或多个)指令集以执行本文中所论述的方法中的任何一或多种。
实例机器可包含处理装置、主存储器(例如,只读存储器(ROM)、快闪存储器、例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)等),和数据存储系统,它们经由总线(其可包含多个总线)彼此通信。
本文所论述的处理装置可包含一或多个通用处理装置,例如微处理器、中央处理单元等。更特定来说,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或实施其它指令集的处理器,或实施指令集的组合的处理器。本文所论述的处理装置还可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置通常经配置以执行用于执行本文所论述的操作和步骤的指令。实例机器可进一步包含用以经由计算机网络通信的网络接口装置。
本文中所公开的数据存储系统可包含机器可读存储介质(也称为计算机可读介质),其上存储有一或多个指令集或体现本文中所描述的任何一或多种方法或功能的软件。所述指令还可在由计算机系统执行期间完全或至少部分地驻留在主存储器内和/或处理装置内,主存储器和处理装置也构成机器可读存储介质。机器可读存储介质、数据存储系统和/或主存储器可对应于存储器子系统。
在一个实施例中,存储在实例机器中的指令包含用以实施对应于驱动聚合器103的功能性的指令(例如,如参考图1-15所描述)。虽然机器可读存储介质可在一实施例中论述为单个介质,但术语“机器可读存储介质”应被认为包含存储所述一或多个指令集的单个介质或多个介质。术语“机器可读存储介质”还应被认为包含能够存储或编码供机器执行的指令集合且致使机器执行本公开的方法中的任何一种或多种的任何介质。因此,应认为术语“机器可读存储介质”包含(但不限于)固态存储器、光学介质以及磁性介质。
已关于计算机存储器内的数据位的操作的算法和符号表示而呈现先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其他技术人员的方式。算法在这里并且通常被认为是导致期望的结果的操作的自洽序列。操作是要求对物理量进行物理操纵的操作。这些量通常但未必呈能够被存储、组合、比较和以其它方式操纵的电或磁信号的形式。有时,主要出于通用的原因,已经证明将这些信号称为位、值、要素、符号、字符、项、数字等是方便的。
然而,应牢记,所有这些和类似术语应与适当物理量相关联,且仅仅是应用于这些量的方便的标签。本公开可以涉及将计算机系统的寄存器和存储器内的表示为物理(电子)量的数据操纵和变换为计算机系统存储器或寄存器或其它这类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
本公开还涉及用于执行本文中的操作的设备。此设备可以出于所需目的而专门构造,或其可以包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储介质中,例如但不限于任何类型的盘(包含软盘、光盘、CD-ROM和磁性光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或适合于存储电子指令的任何类型的介质,它们各自耦合到计算机系统总线。
本文中呈现的算法和显示器在本质上并不与任何特定计算机或其它设备相关。各种通用系统可与根据本文中的教示的程序一起使用,或可证明构建用以执行所述方法更加专用的设备是方便的。将如下文描述中所阐述的那样来呈现各种各样的这些系统的结构。此外,并不参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施如本文中所描述的本公开的教示。
本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以执行根据本公开的过程的指令的机器可读介质。机器可读介质包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如,计算机可读)介质包含机器(例如,计算机)可读存储介质,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光学存储介质、快闪存储器组件等。
在本说明书中,各种功能和操作被描述为由计算机指令执行或由计算机指令引起以简化描述。然而,所属领域的技术人员将认识到,此类表达的意图是所述功能源自由一或多个控制器或处理器(例如,微处理器)执行计算机指令。替代地或组合地,所述功能和操作可使用具有或不具有软件指令的专用电路系统实施,例如使用专用集成电路(ASIC)或现场可编程门阵列(FPGA)来实施。可使用无软件指令的硬连线电路系统或结合软件指令实施实施例。因此,技术既不限于硬件电路系统及软件的任何特定组合,也不限于由数据处理系统执行的指令的任何特定来源。
在前述说明书中,已参考其特定实例实施例描述了本公开的实施例。将显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开作出各种修改。因此,应在说明性意义上而非限制性意义上看待说明书和图式。
Claims (20)
1.一种固态驱动器,其包括:
驱动聚合器;以及
多个组件固态驱动器,其连接到所述驱动聚合器,所述组件固态驱动器中的每一个具有能够处理来自主机系统的命令的控制器;
其中所述多个组件固态驱动器中的第一组件固态驱动器被配置成用于第一优化;
其中所述多个组件固态驱动器中的第二组件固态驱动器被配置成用于第二优化;且
其中所述驱动聚合器经配置以:
使用地址映射将在所述驱动聚合器中接收的地址转换为所述多个组件固态驱动器中的地址,以将在所述驱动聚合器中接收的命令转发到所述多个组件固态驱动器;
监视所述多个组件固态驱动器中的数据访问以识别第一数据集和第二数据集;以及
调整所述地址映射以根据所述第一优化将所述第一数据集代管于所述第一组件固态驱动器中,且根据不同于所述第一优化的所述第二优化将所述第二数据集代管于所述第二组件固态驱动器中。
2.根据权利要求1所述的固态驱动器,其中所述第一数据集经由第一名称空间识别;
且所述第二数据集经由第二名称空间识别。
3.根据权利要求2所述的固态驱动器,其中所述驱动聚合器经配置以在所述第一组件固态驱动器中存储第一设置来实施所述第一优化,且在所述第二组件固态驱动器中存储第二设置来实施所述第二优化。
4.根据权利要求2所述的固态驱动器,其中所述第一组件固态驱动器针对所述第一优化硬连线;且所述第二组件固态驱动器针对所述第二优化硬连线。
5.根据权利要求2所述的固态驱动器,其中所述地址映射包含优化设置,所述优化设置使用选自所述多个组件固态驱动器的多个驱动器实施针对第三名称空间的第三优化。
6.根据权利要求2所述的固态驱动器,其中所述驱动聚合器响应于针对所述第一名称空间的所述第一优化的请求配置所述地址映射以在所述第一组件固态驱动器中代管所述第一名称空间。
7.根据权利要求2所述的固态驱动器,其中所述驱动聚合器确定所述第一名称空间的使用模式,且基于所述使用模式和所述第一优化之间的关联配置所述地址映射以在所述第一组件固态驱动器中代管所述第一名称空间。
8.根据权利要求2所述的固态驱动器,其中所述组件固态驱动器中的每一个集成于具有球状栅格阵列BGA形状因数的集成电路封装内。
9.一种方法,其包括:
提供具有驱动聚合器和连接到所述驱动聚合器的多个组件固态驱动器的固态驱动器,所述组件固态驱动器中的每一个具有能够处理来自主机系统的命令的控制器;
由所述驱动聚合器使用地址映射将在所述驱动聚合器中接收的地址转换为所述多个组件固态驱动器中的地址,以将在所述驱动聚合器中接收的命令转发到所述多个组件固态驱动器;
基于监视所述多个组件固态驱动器中的数据访问而识别第一数据集和第二数据集;
配置所述多个组件固态驱动器中的第一组件固态驱动器以用于存储器操作的第一优化;
配置所述多个组件固态驱动器中的第二组件固态驱动器以用于存储器操作的第二优化;以及
由所述驱动聚合器调整所述地址映射以:
根据所述第一优化将所述第一数据集代管于所述第一组件固态驱动器中;以及
根据不同于所述第一优化的所述第二优化将所述第二数据集代管于所述第二组件固态驱动器中。
10.根据权利要求9所述的方法,其中所述第一数据集和所述第二数据集分别由第一名称空间和第二名称空间识别。
11.根据权利要求10所述的方法,其进一步包括:
分别从主机系统接收创建所述第一名称空间和第二名称空间的第一命令和第二命令,其中所述第一命令识别针对所述第一名称空间的所述第一优化,且所述第二命令识别针对所述第二名称空间的所述第二优化;以及
基于所述第一命令中识别的所述第一优化将所述第一命令转发到所述第一组件固态驱动器;以及
基于所述第二命令中识别的所述第二优化将所述第二命令转发到所述第二组件固态驱动器。
12.根据权利要求11所述的方法,其进一步包括:
存储地址映射以使所述第一名称空间与所述第一组件固态驱动器相关联,且使所述第二名称空间与所述第二组件固态驱动器相关联。
13.根据权利要求12所述的方法,其进一步包括:
将第一设置存储到所述第一组件固态驱动器中来实施所述第一优化;以及
将第二设置存储到所述第二组件固态驱动器中来实施所述第二优化。
14.根据权利要求13所述的方法,其进一步包括
在所述地址映射中配置优化设置,所述优化设置使用选自所述多个组件固态驱动器的多个驱动器针对第三名称空间实施第三优化。
15.根据权利要求10所述的方法,其进一步包括:
确定所述第一名称空间的使用模式;
基于所述第一名称空间的所述使用模式选择针对所述第一名称空间的所述第一优化;以及
将所述第一名称空间从所述多个组件固态驱动器中的第三组件固态驱动器移动到所述第一组件固态驱动器。
16.根据权利要求10所述的方法,其中所述组件固态驱动器中的每一个集成于具有球状栅格阵列BGA形状因数的集成电路封装内;且所述组件固态驱动器在所述固态驱动器连接到主机系统之前是相同的。
17.一种驱动器聚合器,其包括:
至少一个主机接口,其经配置以与主机系统通信;
多个驱动接口,其用以分别与多个组件固态驱动器通信,所述多个组件固态驱动器包含被配置成用于存储器操作的第一优化的第一组件固态驱动器和被配置成用于存储器操作的第二优化的第二组件固态驱动器;以及
转译逻辑,其耦合在所述至少一个主机接口和所述多个驱动接口之间;
其中所述转译逻辑经配置以操作地址映射以将在所述至少一个主机接口中接收的地址转换为所述多个组件固态驱动器中的地址,以将在所述至少一个主机接口中接收的命令转发到所述多个驱动接口;且
其中所述驱动器聚合器进一步经配置以监视所述多个组件固态驱动器中的数据访问以识别第一名称空间和第二名称空间,并调整所述地址映射以根据所述第一优化在所述第一组件固态驱动器中代管所述第一名称空间,且根据不同于所述第一优化的所述第二优化在所述第二组件固态驱动器中代管所述第二名称空间。
18.根据权利要求17所述的驱动器聚合器,其进一步包括:
集成电路封装,其中所述至少一个主机接口、所述转译逻辑和所述多个驱动接口封装于所述集成电路封装中;
其中所述转译逻辑包含现场可编程门阵列FPGA或专用集成电路ASIC。
19.根据权利要求18所述的驱动器聚合器,其中所述转译逻辑被配置成根据所述地址映射,将从所述主机系统接收且寻址到所述第一名称空间的第一命令转发到连接到所述第一组件固态驱动器的第一驱动接口,且将从所述主机系统接收且寻址到所述第二名称空间的第二命令转发到连接到所述第二组件固态驱动器的第二驱动接口。
20.根据权利要求18所述的驱动器聚合器,其中所述转译逻辑经配置以响应于确定将所述第一优化施加到所述第一名称空间而将所述第一名称空间从所述多个组件固态驱动器中的第三组件固态驱动器移动到所述第一组件固态驱动器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/452,366 | 2019-06-25 | ||
US16/452,366 US11055249B2 (en) | 2019-06-25 | 2019-06-25 | Access optimization in aggregated and virtualized solid state drives |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112131138A CN112131138A (zh) | 2020-12-25 |
CN112131138B true CN112131138B (zh) | 2024-06-25 |
Family
ID=73851261
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010580729.6A Active CN112131138B (zh) | 2019-06-25 | 2020-06-23 | 聚合和虚拟化固态驱动器中的存取优化 |
Country Status (2)
Country | Link |
---|---|
US (3) | US11055249B2 (zh) |
CN (1) | CN112131138B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10942881B2 (en) | 2019-06-25 | 2021-03-09 | Micron Technology, Inc. | Parallel operations in aggregated and virtualized solid state drives |
US11762798B2 (en) | 2019-06-25 | 2023-09-19 | Micron Technology, Inc. | Aggregated and virtualized solid state drives with multiple host interfaces |
US10942846B2 (en) | 2019-06-25 | 2021-03-09 | Micron Technology, Inc. | Aggregated and virtualized solid state drives accessed via multiple logical address spaces |
US11513923B2 (en) | 2019-06-25 | 2022-11-29 | Micron Technology, Inc. | Dynamic fail-safe redundancy in aggregated and virtualized solid state drives |
US11573708B2 (en) | 2019-06-25 | 2023-02-07 | Micron Technology, Inc. | Fail-safe redundancy in aggregated and virtualized solid state drives |
US11768613B2 (en) | 2019-06-25 | 2023-09-26 | Micron Technology, Inc. | Aggregation and virtualization of solid state drives |
US11055249B2 (en) | 2019-06-25 | 2021-07-06 | Micron Technology, Inc. | Access optimization in aggregated and virtualized solid state drives |
US11693596B2 (en) * | 2020-08-13 | 2023-07-04 | Seagate Technology Llc | Pre-emptive storage strategies to reduce host command collisions |
US11656795B2 (en) * | 2021-01-21 | 2023-05-23 | EMC IP Holding Company LLC | Indicating optimized and non-optimized paths to hosts using NVMe-oF in a metro cluster storage system |
US11537305B1 (en) | 2021-06-03 | 2022-12-27 | Western Digital Technologies, Inc. | Dissimilar write prioritization in ZNS devices |
US11709836B2 (en) * | 2021-10-21 | 2023-07-25 | S&P Global Inc. | Data fetch engine |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8935493B1 (en) * | 2011-06-30 | 2015-01-13 | Emc Corporation | Performing data storage optimizations across multiple data storage systems |
Family Cites Families (80)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5765204A (en) * | 1996-06-05 | 1998-06-09 | International Business Machines Corporation | Method and apparatus for adaptive localization of frequently accessed, randomly addressed data |
AU2002249939A1 (en) | 2001-01-11 | 2002-07-24 | Z-Force Communications, Inc. | File switch and switched file system |
JP2003148198A (ja) | 2001-11-13 | 2003-05-21 | Toyota Motor Corp | 内燃機関の排気浄化装置 |
US6654941B1 (en) | 2001-11-30 | 2003-11-25 | Cypress Semiconductor Corp. | Bus I/O placement guidance |
JP4438457B2 (ja) | 2003-05-28 | 2010-03-24 | 株式会社日立製作所 | 記憶領域割当方法、システム及び仮想化装置 |
US20050144401A1 (en) * | 2003-12-30 | 2005-06-30 | Pantalone Brett A. | Multiprocessor mobile terminal with shared memory arbitration |
US7119433B2 (en) | 2004-06-16 | 2006-10-10 | International Business Machines Corporation | Packaging for enhanced thermal and structural performance of electronic chip modules |
US9262490B2 (en) * | 2004-08-12 | 2016-02-16 | Oracle International Corporation | Adaptively routing transactions to servers |
JP4555036B2 (ja) | 2004-09-16 | 2010-09-29 | 株式会社日立製作所 | ストレージ装置及びストレージ装置のデバイス切替制御方法 |
US8397013B1 (en) | 2006-10-05 | 2013-03-12 | Google Inc. | Hybrid memory module |
KR20090081472A (ko) | 2008-01-24 | 2009-07-29 | 삼성전자주식회사 | 실장 기판 및 이를 이용한 반도체 패키지의 제조 방법 |
US7971013B2 (en) | 2008-04-30 | 2011-06-28 | Xiotech Corporation | Compensating for write speed differences between mirroring storage devices by striping |
US8327066B2 (en) * | 2008-09-30 | 2012-12-04 | Samsung Electronics Co., Ltd. | Method of managing a solid state drive, associated systems and implementations |
KR100964152B1 (ko) | 2009-01-14 | 2010-06-17 | 주식회사 심텍 | 솔리드스테이트드라이브 |
US20100199036A1 (en) * | 2009-02-02 | 2010-08-05 | Atrato, Inc. | Systems and methods for block-level management of tiered storage |
KR101637481B1 (ko) | 2009-04-10 | 2016-07-07 | 삼성전자주식회사 | 솔리드 스테이트 드라이브, 솔리드 스테이트 드라이브 장착 장치 및 컴퓨팅 시스템 |
CN101859588B (zh) | 2009-04-10 | 2013-08-28 | 鸿富锦精密工业(深圳)有限公司 | 硬盘架 |
KR101623119B1 (ko) * | 2010-02-01 | 2016-05-20 | 삼성전자주식회사 | 솔리드 스테이트 드라이브의 에러 제어 방법 |
CN101833989A (zh) * | 2010-05-27 | 2010-09-15 | 华为技术有限公司 | 多接口固态硬盘及其处理方法和系统 |
CN102411982B (zh) | 2010-09-25 | 2014-12-10 | 杭州华三通信技术有限公司 | 内存控制器及命令控制方法 |
US8688926B2 (en) | 2010-10-10 | 2014-04-01 | Liqid Inc. | Systems and methods for optimizing data storage among a plurality of solid state memory subsystems |
US8706701B1 (en) | 2010-11-18 | 2014-04-22 | Emc Corporation | Scalable cloud file system with efficient integrity checks |
WO2012087971A2 (en) | 2010-12-20 | 2012-06-28 | Marvell World Trade Ltd. | Descriptor scheduler |
US8732518B2 (en) | 2011-04-13 | 2014-05-20 | Netapp, Inc. | Reliability based data allocation and recovery in a storage system |
CN102902611A (zh) | 2011-07-29 | 2013-01-30 | 鸿富锦精密工业(深圳)有限公司 | 检测装置 |
US8856191B2 (en) | 2011-08-01 | 2014-10-07 | Infinidat Ltd. | Method of migrating stored data and system thereof |
US8694724B1 (en) | 2011-09-06 | 2014-04-08 | Emc Corporation | Managing data storage by provisioning cache as a virtual device |
US8880801B1 (en) | 2011-09-28 | 2014-11-04 | Emc Corporation | Techniques for reliability and availability assessment of data storage configurations |
US8719417B1 (en) | 2011-10-14 | 2014-05-06 | Google Inc. | Resource allocation in distributed systems |
US20130238852A1 (en) * | 2012-03-07 | 2013-09-12 | Hitachi, Ltd. | Management interface for multiple storage subsystems virtualization |
US9387813B1 (en) * | 2012-03-21 | 2016-07-12 | Road-Iq, Llc | Device, system and method for aggregating networks and serving data from those networks to computers |
US9043573B2 (en) | 2012-06-07 | 2015-05-26 | Netapp, Inc. | System and method for determining a level of success of operations on an abstraction of multiple logical data storage containers |
WO2014041591A1 (ja) | 2012-09-11 | 2014-03-20 | 株式会社日立製作所 | 管理装置及び管理方法 |
US9098402B2 (en) * | 2012-12-21 | 2015-08-04 | Intel Corporation | Techniques to configure a solid state drive to operate in a storage mode or a memory mode |
US10445229B1 (en) | 2013-01-28 | 2019-10-15 | Radian Memory Systems, Inc. | Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies |
US9031910B2 (en) | 2013-06-24 | 2015-05-12 | Sap Se | System and method for maintaining a cluster setup |
US10090235B2 (en) * | 2013-11-14 | 2018-10-02 | Toshiba Memory Corporation | Semiconductor device and semiconductor package |
US9887008B2 (en) | 2014-03-10 | 2018-02-06 | Futurewei Technologies, Inc. | DDR4-SSD dual-port DIMM device |
US9501222B2 (en) * | 2014-05-09 | 2016-11-22 | Micron Technology, Inc. | Protection zones in virtualized physical addresses for reconfigurable memory systems using a memory abstraction |
US9727456B2 (en) | 2014-11-03 | 2017-08-08 | Pavilion Data Systems, Inc. | Scheduled garbage collection for solid state storage devices |
US9910809B2 (en) * | 2014-12-19 | 2018-03-06 | Intel Corporation | High performance interconnect link state transitions |
US20160259754A1 (en) | 2015-03-02 | 2016-09-08 | Samsung Electronics Co., Ltd. | Hard disk drive form factor solid state drive multi-card adapter |
US10114778B2 (en) | 2015-05-08 | 2018-10-30 | Samsung Electronics Co., Ltd. | Multi-protocol IO infrastructure for a flexible storage platform |
US11288205B2 (en) * | 2015-06-23 | 2022-03-29 | Advanced Micro Devices, Inc. | Access log and address translation log for a processor |
US20160378667A1 (en) * | 2015-06-23 | 2016-12-29 | Advanced Micro Devices, Inc. | Independent between-module prefetching for processor memory modules |
TWI563509B (en) | 2015-07-07 | 2016-12-21 | Phison Electronics Corp | Wear leveling method, memory storage device and memory control circuit unit |
JP6403162B2 (ja) | 2015-07-23 | 2018-10-10 | 東芝メモリ株式会社 | メモリシステム |
US10102169B2 (en) * | 2015-08-10 | 2018-10-16 | Microsemi Solutions (U.S.), Inc. | System and method for port migration in a PCIE switch |
US10423354B2 (en) * | 2015-09-23 | 2019-09-24 | Advanced Micro Devices, Inc. | Selective data copying between memory modules |
US9940154B2 (en) | 2015-10-15 | 2018-04-10 | Netapp, Inc. | Storage virtual machine relocation |
US20170228328A1 (en) | 2016-02-04 | 2017-08-10 | CNEXLABS, Inc. | Method and apparatus for providing small form-factor pluggable (“sfp”) non-volatile memory (“nvm”) storage devices |
US10089243B2 (en) | 2016-02-25 | 2018-10-02 | SK Hynix Inc. | Memory controller and system including variable address mapping tables and a fixed address mapping table |
KR102669694B1 (ko) | 2016-09-28 | 2024-05-28 | 삼성전자주식회사 | 서로 직렬로 연결된 스토리지 장치들 중 애플리케이션 프로세서에 직접 연결되지 않는 스토리지 장치를 리셋시키는 전자 기기 및 그것의 동작 방법 |
KR20180062246A (ko) | 2016-11-30 | 2018-06-08 | 삼성전자주식회사 | 재분배기를 포함하는 메모리 시스템 |
US10241877B2 (en) | 2016-12-12 | 2019-03-26 | International Business Machines Corporation | Data storage system employing a hot spare to proactively store array data in absence of a failure or pre-failure event |
US10074423B1 (en) | 2017-03-08 | 2018-09-11 | Sandisk Technologies Llc | Impedance tuning between packaging and dies |
US10691368B2 (en) | 2017-03-31 | 2020-06-23 | Samsung Electronics Co., Ltd. | System and method for providing data replication in NVMe-oF ethernet SSD |
US12045653B2 (en) * | 2017-06-22 | 2024-07-23 | Dataware Ventures, Llc | Field specialization to reduce memory-access stalls and allocation requests in data-intensive applications |
US10402266B1 (en) | 2017-07-31 | 2019-09-03 | Pure Storage, Inc. | Redundant array of independent disks in a direct-mapped flash storage system |
US10628326B2 (en) * | 2017-08-21 | 2020-04-21 | Micron Technology, Inc. | Logical to physical mapping |
US20190057047A1 (en) * | 2017-08-21 | 2019-02-21 | Mediatek Singapore Pte. Ltd. | Data storage device and a method for controlling access to a memory device of a data storage device |
KR102429904B1 (ko) | 2017-09-08 | 2022-08-05 | 삼성전자주식회사 | PCIe P2P 접속의 밴드위스를 최대화할 수 있는 방법 및 시스템 |
US10437476B2 (en) | 2017-10-23 | 2019-10-08 | Micron Technology, Inc. | Namespaces allocation in non-volatile memory devices |
US10764180B1 (en) | 2018-02-20 | 2020-09-01 | Toshiba Memory Corporation | System and method for storing data using software defined networks |
US11132133B2 (en) | 2018-03-08 | 2021-09-28 | Toshiba Memory Corporation | Workload-adaptive overprovisioning in solid state storage drive arrays |
US11054991B2 (en) | 2018-03-21 | 2021-07-06 | Western Digital Technologies, Inc. | Data storage system scale-out with local address remapping |
US11748418B2 (en) | 2018-07-31 | 2023-09-05 | Marvell Asia Pte, Ltd. | Storage aggregator controller with metadata computation control |
US11074013B2 (en) | 2018-08-07 | 2021-07-27 | Marvell Asia Pte, Ltd. | Apparatus and methods for providing quality of service over a virtual interface for solid-state storage |
US10761986B2 (en) * | 2018-10-23 | 2020-09-01 | Advanced Micro Devices, Inc. | Redirecting data to improve page locality in a scalable data fabric |
US10909012B2 (en) | 2018-11-12 | 2021-02-02 | H3 Platform, Inc. | System having persistent memory |
US11366610B2 (en) | 2018-12-20 | 2022-06-21 | Marvell Asia Pte Ltd | Solid-state drive with initiator mode |
US11768613B2 (en) | 2019-06-25 | 2023-09-26 | Micron Technology, Inc. | Aggregation and virtualization of solid state drives |
US10942881B2 (en) | 2019-06-25 | 2021-03-09 | Micron Technology, Inc. | Parallel operations in aggregated and virtualized solid state drives |
US11762798B2 (en) | 2019-06-25 | 2023-09-19 | Micron Technology, Inc. | Aggregated and virtualized solid state drives with multiple host interfaces |
US11055249B2 (en) * | 2019-06-25 | 2021-07-06 | Micron Technology, Inc. | Access optimization in aggregated and virtualized solid state drives |
US11513923B2 (en) | 2019-06-25 | 2022-11-29 | Micron Technology, Inc. | Dynamic fail-safe redundancy in aggregated and virtualized solid state drives |
US11573708B2 (en) | 2019-06-25 | 2023-02-07 | Micron Technology, Inc. | Fail-safe redundancy in aggregated and virtualized solid state drives |
US10942846B2 (en) | 2019-06-25 | 2021-03-09 | Micron Technology, Inc. | Aggregated and virtualized solid state drives accessed via multiple logical address spaces |
US11650746B2 (en) * | 2019-09-05 | 2023-05-16 | Micron Technology, Inc. | Intelligent write-amplification reduction for data storage devices configured on autonomous vehicles |
US11409654B2 (en) * | 2019-09-05 | 2022-08-09 | Micron Technology, Inc. | Intelligent optimization of caching operations in a data storage device |
-
2019
- 2019-06-25 US US16/452,366 patent/US11055249B2/en active Active
-
2020
- 2020-06-23 CN CN202010580729.6A patent/CN112131138B/zh active Active
-
2021
- 2021-05-20 US US17/326,141 patent/US11663153B2/en active Active
-
2023
- 2023-04-28 US US18/309,102 patent/US20230334002A1/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8935493B1 (en) * | 2011-06-30 | 2015-01-13 | Emc Corporation | Performing data storage optimizations across multiple data storage systems |
Also Published As
Publication number | Publication date |
---|---|
CN112131138A (zh) | 2020-12-25 |
US20230334002A1 (en) | 2023-10-19 |
US20210271622A1 (en) | 2021-09-02 |
US20200409890A1 (en) | 2020-12-31 |
US11663153B2 (en) | 2023-05-30 |
US11055249B2 (en) | 2021-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112131138B (zh) | 聚合和虚拟化固态驱动器中的存取优化 | |
US11500766B2 (en) | Aggregated and virtualized solid state drives accessed via multiple logical address spaces | |
CN112130755B (zh) | 具有多个主机接口的聚合和虚拟化固态驱动器 | |
CN111684434B (zh) | 多层存储器系统中的预测数据协作 | |
CN112384890B (zh) | 预测性分页以加速存储器存取 | |
CN112130754B (zh) | 聚合和虚拟化固态驱动器中的并行操作 | |
US20220398194A1 (en) | Memory virtualization for accessing heterogeneous memory components | |
CN112131139B (zh) | 固态驱动器的聚合和虚拟化 | |
WO2019156849A1 (en) | Optimization of data access and communication in memory systems | |
KR20210019580A (ko) | 메모리 시스템의 분리된 성능 도메인 | |
US11892916B2 (en) | Dynamic fail-safe redundancy in aggregated and virtualized solid state drives | |
CN112131053A (zh) | 聚合和虚拟化固态驱动器中的故障保护冗余 | |
CN112805676B (zh) | 基于数据总线模式对读取操作和写入操作的调度 | |
CN114631076A (zh) | 加载命令的生存时间 | |
US20240069732A1 (en) | Balancing performance between interface ports in a memory sub-system | |
CN114286986A (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 |