CN112130756A - 经由多个逻辑地址空间存取的聚合和虚拟化固态驱动器 - Google Patents
经由多个逻辑地址空间存取的聚合和虚拟化固态驱动器 Download PDFInfo
- Publication number
- CN112130756A CN112130756A CN202010587747.7A CN202010587747A CN112130756A CN 112130756 A CN112130756 A CN 112130756A CN 202010587747 A CN202010587747 A CN 202010587747A CN 112130756 A CN112130756 A CN 112130756A
- Authority
- CN
- China
- Prior art keywords
- solid state
- drive
- host
- interfaces
- interface
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 239000007787 solid Substances 0.000 title claims abstract description 281
- 230000004931 aggregating effect Effects 0.000 title abstract description 3
- 230000015654 memory Effects 0.000 claims abstract description 238
- 238000004891 communication Methods 0.000 claims description 51
- 238000000034 method Methods 0.000 claims description 43
- 238000013519 translation Methods 0.000 claims description 42
- 238000013507 mapping Methods 0.000 claims description 37
- 238000012545 processing Methods 0.000 claims description 37
- 238000005516 engineering process Methods 0.000 claims description 6
- 230000002093 peripheral effect Effects 0.000 claims description 6
- 239000000835 fiber Substances 0.000 claims description 4
- 238000006116 polymerization reaction Methods 0.000 claims description 4
- 230000004044 response Effects 0.000 description 22
- 230000006870 function Effects 0.000 description 6
- 230000003287 optical 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
- 230000005540 biological transmission Effects 0.000 description 3
- 239000000872 buffer Substances 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 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
- 230000008859 change Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000001514 detection method 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
- 239000000126 substance Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/404—Coupling between buses using bus bridges with address mapping
-
- 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
-
- 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
- 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
-
- 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
- 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/0284—Multiple user address space allocation, e.g. using different base addresses
-
- 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/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- 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/382—Information transfer, e.g. on bus using universal interface adapter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0617—Improving the reliability of storage systems in relation to availability
-
- 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
-
- 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/0661—Format or protocol conversion arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- 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
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
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、驱动聚合器103之间的通信协议可各自为标准协议中的任一个,例如用于串行高级技术附件(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地址。
在本文中所公开的一些实施例中,具有多个组件固态驱动器的虚拟化单个固态驱动器经配置为可经由多个逻辑地址空间寻址。举例来说,多个逻辑地址空间可以类似于多个固态驱动器的方式使用,每一固态驱动器具有与相应固态驱动器的主机接口相关联的单独的逻辑地址空间。然而,当单独地使用多个固态驱动器来提供单独的逻辑地址空间时,使用逻辑地址空间识别的存储器/存储装置资源限于物理地代管于特定固态驱动器内。相比而言,当多个固态驱动器被配置成具有多个逻辑地址空间的虚拟化单个固态驱动器的组件固态驱动器时,每一逻辑地址空间的存储器/存储装置资源可代管于组件固态驱动器当中以改进性能和/或能力管理。举例来说,虚拟化单个固态驱动器可具有如图6-8中所示出的多个主机接口。主机接口中的每一个可经配置以接受单独的逻辑地址空间中的存储器/存储装置存取请求,如同所述主机接口连接到单独的固态驱动器那样。虚拟化单个固态驱动器的驱动聚合器可针对与主机接口相关联的逻辑地址空间的不同部分使用不同组件固态驱动器中的存储器/存储装置资源。
图10示出根据一个实施例经配置以经由单独的逻辑地址空间163到164存取的虚拟化单个固态驱动器101。
类似于图6或8的虚拟化单个固态驱动器101,图10的虚拟化单个固态驱动器101具有多组引脚133到134。每一组(例如,133或134)引脚可用于建立到主机系统(例如,111或112)的连接(例如,135或136)。
在图10中,单独的逻辑地址空间163到164分别与多组引脚133到134相关联。举例来说,可分别使用单独的引脚组(例如,133和134)在虚拟化单个固态驱动器101中接收具有相同逻辑地址的相同命令。逻辑地址的识别可任选地包含使用名称空间。因为单独的引脚组(例如,133和134)与不同逻辑地址空间(例如,163和164)相关联,所以相同命令中的相同逻辑地址可被视为寻址图10的虚拟化单个固态驱动器101中的不同存储器单元。驱动聚合器103可任选地将这些不同存储器单元映射到相同组件固态驱动器(例如,107或109),或单独的组件固态驱动器(例如,107和109)。逻辑地址空间163到164中的每一个不限于物理地代管于组件固态驱动器107到109中的一个特定组件固态驱动器中。逻辑地址空间163到164中的每一个可物理地代管于组件固态驱动器107到109中的一个以上组件固态驱动器中。因为逻辑地址空间163到164彼此分离,所以经由一组引脚(例如,133)存取的存储器/资源不可经由另一组引脚(例如,134)存取。驱动聚合器103可基于逻辑地址空间163到164的工作负荷和/或使用模式动态地分布逻辑地址空间163到164的存储器/存储装置资源。
在一些实施方案中,不同组的引脚133到134中的一些或全部可经配置以与相同逻辑地址空间相关联。举例来说,当数组引脚133到134经由并行连接135到136以图8中示出的方式连接到相同主机系统111时,所述数组引脚133到134可经配置以共享相同逻辑地址空间。因此,主机系统111可使用到引脚133到134的连接135到136中的任一个存取存储于组件固态驱动器107到109中的一个中的存储器单元中的数据。可选地,主机系统111可配置数组引脚133到134中的一些以共享相同逻辑地址空间,而其它组引脚不共享相同逻辑地址空间。
类似地,当数组引脚133到134以图6中示出的方式连接到单独的主机111到112时,不同组的引脚133到134中的一些或全部可经配置以与相同逻辑地址空间相关联。因此,主机系统111到112中的一些或全部可共享相同逻辑地址空间和与逻辑地址空间相关联的一组存储器单元。
举例来说,在初始化过程期间,主机系统(例如,111到112)可将命令发送到数组引脚133到134以指示与数组引脚133到134相关联的逻辑地址空间的共享状态。驱动聚合器103经配置以经由将共享逻辑地址空间的地址映射到组件固态驱动器107到109中的相同组的存储器资源且将非共享逻辑地址空间的地址映射到组件固态驱动器107到109中的单独组的存储器资源来实施共享。
此外,在一些实施方案中,主机系统(例如,111到112)可发送请求逻辑地址空间163到164的部分共享的命令。举例来说,逻辑地址空间163中的逻辑地址区(例如,由名称空间表示)可被配置成与逻辑地址空间164中的相应逻辑地址区(例如,由相应名称空间表示)共享。因此,单独的连接135和136中的任一个可用于存取存储在分配到逻辑地址空间163和164之间的共享逻辑地址区的相同组的存储器单元中的相同数据。举例来说,经由连接135存储在共享逻辑地址区中的数据可经由替代的连接136存取。
然而,一些逻辑地址区可不在逻辑地址空间163和164之间共享。因此,存储在非共享逻辑地址区中的数据可限于经由针对相应逻辑地址空间163和164的相应连接135和136来存取。举例来说,经由连接135存储在非共享逻辑地址区中的数据被禁止经由连接136存取。
图11示出经配置以使用单独的逻辑地址空间促进对虚拟化单个固态驱动器中的存储器/存储装置资源的存取的驱动聚合器103。举例来说,图11的驱动聚合器103可以在图10的固态驱动器101中使用。
类似于图7的驱动聚合器103,图11的图103的驱动聚合器103具有针对到一或多个主机系统(例如,111到112)的单独的连接135到136的多个主机接口151到152。
通常,图11的图103的驱动聚合器103的主机接口151到152分别与单独的逻辑地址空间163到164相关联。分别针对逻辑地址空间163到164配置地址映射158到159。
当逻辑地址空间163到164不具有共享区时,地址映射158到159不具有重叠部分。举例来说,地址映射158将空间163中的逻辑地址映射到连接到驱动接口155到157的一组存储器单元;地址映射158将空间164中的逻辑地址映射到连接到驱动接口155到157的另一组存储器单元;且地址映射158和159中识别的不同组的存储器单元不具有共同存储器单元。
当一些逻辑地址空间163到164部分共享(例如,响应于从主机系统接收的配置命令)时,地址映射158到159具有重叠部分。举例来说,地址映射158将空间163中的逻辑地址的一部分映射到连接到驱动接口155到157的一组存储器单元;地址映射158将空间164中的逻辑地址的一部分映射到连接到驱动接口155到157的另一组存储器单元。当空间163中的逻辑地址的所述部分和空间164中的逻辑地址的所述部分经配置以跨逻辑地址空间163和164共享时,地址映射158将空间163中的逻辑地址的部分映射到由地址映射159针对空间164中的逻辑地址的部分映射到的相同组的存储器单元。然而,当空间163中的逻辑地址的所述部分和空间164中的逻辑地址的所述部分经配置为不跨逻辑地址空间163和164共享时,空间163中的逻辑地址的所述部分由地址映射158映射到的所述组存储器单元不共享空间164中的逻辑地址的所述部分由地址映射159映射到的所述组存储器单元中的任何存储器单元。
类似地,驱动聚合器103可配置地址映射158到159以允许主机接口151到152中的一些或全部共享相同逻辑地址空间。可由相应主机接口的地址映射158到159通过映射到连接到驱动接口155到157的相同组的存储器单元来实施所述共享。在一些例子中,可经由共享主机接口151到152中的一些或全部的地址映射来实施共享。
图12-14示出地址映射的实例。举例来说,图12-14中示出的地址映射154可以在图11的驱动聚合器103中使用。
在图12中,通过经由单独的主机接口151和152接收的命令创建的名称空间181和182被视为不同名称空间。当名称空间181和182在经由单独的主机接口151和152接收的命令中具有相同识别时,主机接口151和152的名称空间181和182映射到不同驱动接口155和157。因此,使用相同名称空间识别但不同主机接口的命令寻址代管于不同组件固态驱动器(例如,107和109)中;且使用名称空间识别存储在经由一个主机接口(例如,151)发射的命令中的数据无法通过经由另一主机接口(例如,152)发射的命令来存取。
可选地,主机接口151和152的名称空间181和183的相同识别可使用地址映射154映射到不同名称空间识别。不同名称空间识别可用于在连接到相同驱动接口(例如,155)的相同组件固态驱动器(例如,107)中或连接到不同驱动接口(例如,155和157)的不同组件固态驱动器(例如,107和109)中创建相应名称空间。
图13示出其中名称空间181在两个主机接口151和152之间共享的配置。名称空间181映射到驱动接口155。基于图13的地址映射154,识别名称空间且在主机接口151中或主机接口152中接收的命令可转发到驱动接口155以存取相同组的存储器单元。举例来说,主机连接135可用于将数据存储到代管于连接到驱动接口155的组件固态驱动器(例如,107)中的名称空间181中;且另一主机连接136可用于从代管于连接到相同驱动接口155的相同组件固态驱动器(例如,107)中的名称空间181检索数据。
大体来说,多个名称空间可映射到驱动接口155。映射到驱动接口155的一些名称空间可跨多个主机接口(例如,151和152)共享,而映射到驱动接口155的其它名称空间不可在主机接口之间共享。
图14示出配置,其中经由主机接口151创建的名称空间181和183代管于连接到不同驱动接口155和157的不同组件固态驱动器(例如,107和109)上。
大体来说,经由主机接口151创建的一些名称空间181和183可跨多个主机接口共享;且经由主机接口151创建的一些名称空间181和183不可与任何其它主机接口共享。因此,可实施图12-14的各种组合和替代方案。
图15展示使用单独的逻辑地址空间存取虚拟化单个固态驱动器中的存储器/存储装置资源的方法。举例来说,图15的方法可实施于具有图2、6、8或10中所示出的配置中的组件固态驱动器107到109的图1的虚拟化固态驱动器101中。举例来说,图15的方法可实施于具有图11、12、13和/或14中示出的地址映射的图6-8、10和/或11中示出的驱动聚合器103中。此外,图15的方法可与图4、5、和/或9的方法组合使用。
在框281处,驱动聚合器103经配置以使其多个主机接口151到152与不同逻辑地址空间163到164相关联。
在框283处,驱动聚合器103将不同逻辑地址空间163到164映射到连接到虚拟化信号固态驱动器101中的驱动聚合器103的多个组件固态驱动器107到109的聚合容量。
在框285处,驱动聚合器103经由多个主机接口151到152同时接收来自到一或多个主机系统(例如,111和/或112)的并行连接135到136的第一命令。
在框287处,驱动聚合器103在不同逻辑地址空间163到164中解译从主机接口151到152接收的第一命令。
举例来说,驱动聚合器103可配置有单独的地址映射158到159,其分别与多个主机接口151到152相关联以从自主机接口151到152接收的命令中识别的逻辑地址转译为从驱动聚合器103发射到所述多个组件固态驱动器107到109的命令中的逻辑地址。
在框289处,驱动聚合器103基于在不同逻辑地址空间163到164中解译第一命令将第二命令发射到所述多个组件固态驱动器107到109。
举例来说,多个主机接口151到152可包含第一主机接口151和第二主机接口152,其中第一主机接口151和第二主机接口152与相同逻辑地址空间相关联,所述相同逻辑地址空间同与多个主机接口151到152中的第三接口相关联的至少一个其它逻辑地址空间分离且不同。因此,通过经由第一发射的命令存储的数据不可通过经由第三接口发射的命令寻址,但可通过经由第二接口发射的命令寻址。
举例来说,多个主机接口151到152可包含与第一逻辑地址空间相关联的第一主机接口151和与第二逻辑地址空间相关联的第二主机接口152;地址映射158将第一逻辑地址空间映射到所述多个组件固态驱动器107到109的聚合容量的第一部分;且地址映射159将第二逻辑地址空间映射到所述多个组件固态驱动器107到109的聚合容量的第二部分。聚合容量的第一部分和聚合容量的第二部分部分地可彼此完全分离,或经配置为彼此部分重叠。
当聚合容量的第一部分和聚合容量的第二部分部分地经配置为彼此部分重叠时,通过经由第一主机接口151发射的命令存储的数据的第一部分不可通过经由第二主机接口152发射的命令寻址;且通过经由第一主机接口151发射的命令存储的数据的第二部分可通过经由第二主机接口152发射的命令寻址。
举例来说,与第一主机接口151相关联的名称空间181和与第二主机接口152相关联的名称空间183可映射到组件固态驱动器107到109的聚合容量的单独的非重叠部分,或映射到聚合容量的第一部分与聚合容量的第二部分的重叠部分。
上文(例如,结合图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.根据权利要求6所述的固态驱动器,其中所述组件固态驱动器中的每一个集成于具有球状栅格阵列BGA形状因数的集成电路封装内。
8.根据权利要求7所述的固态驱动器,其中所述驱动聚合器进一步包括:
多个驱动接口,其经配置以分别与所述多个组件固态驱动器通信;以及
转译逻辑,其耦合在所述主机接口和所述多个驱动接口之间以基于所述地址映射产生到所述组件固态驱动器的命令。
9.根据权利要求8所述的固态驱动器,其中所述主机接口根据主机系统和固态驱动器之间的第一通信协议来配置;所述多个驱动接口根据主机系统和固态驱动器之间的第二通信协议来配置;且所述第一协议和所述第二协议中的每一个是以下中的一个:
用于串行高级技术附件SATA接口的协议;
用于外围组件互连高速PCIe接口的协议;
用于通用串行总线USB接口的协议;以及
用于光纤通道的协议。
10.一种方法,其包括:
由具有多个主机接口的驱动聚合器使所述主机接口与不同逻辑地址空间相关联;
由所述驱动聚合器将所述不同逻辑地址空间映射到连接到所述驱动聚合器的多个组件固态驱动器的聚合容量;
在所述驱动聚合器中经由所述多个主机接口同时接收来自到一或多个主机系统的并行连接的第一命令;
由所述驱动聚合器在所述不同逻辑地址空间中解译从所述主机接口接收的所述第一命令;以及
基于在所述不同逻辑地址空间中解译所述第一命令,从所述驱动聚合器将第二命令发射到所述多个组件固态驱动器。
11.根据权利要求10所述的方法,其中所述多个主机接口包含第一主机接口和第二主机接口;且所述第一主机接口和所述第二主机接口与相同逻辑地址空间相关联。
12.根据权利要求11所述的方法,其中所述多个主机接口进一步包含第三主机接口;且所述第一主机接口和所述第二主机接口与相同逻辑地址空间相关联,所述相同逻辑地址空间不同于与所述第三主机接口相关联的逻辑地址空间。
13.根据权利要求10所述的方法,其中所述多个主机接口包含与第一逻辑地址空间相关联的第一主机接口和与第二逻辑地址空间相关联的第二主机接口;所述第一逻辑地址空间映射到所述多个组件固态驱动器的所述聚合容量的第一部分;且所述第二逻辑地址空间映射到所述多个组件固态驱动器的所述聚合容量的第二部分。
14.根据权利要求13所述的方法,其中所述聚合容量的所述第一部分与所述聚合容量的所述第二部分部分地彼此重叠。
15.根据权利要求14所述的方法,其中与所述第一主机接口相关联的名称空间和与所述第二主机接口相关联的名称空间映射到所述聚合容量的所述第一部分与所述聚合容量的所述第二部分的重叠部分。
16.一种驱动器聚合器,其包括:
多个主机接口,其各自经配置以与主机系统通信;
多个驱动接口,其分别与多个组件固态驱动器通信;以及
转译逻辑,其耦合在主机接口和所述多个驱动接口之间,其中所述转译逻辑经配置以在不同逻辑地址空间中解译所述多个主机接口中接收的命令中的地址。
17.根据权利要求16所述的驱动器聚合器,其进一步包括:
集成电路封装,其中所述多个主机接口、所述转译逻辑和所述多个驱动接口封装于所述集成电路封装中;
其中所述转译逻辑包含现场可编程门阵列FPGA或专用集成电路ASIC。
18.根据权利要求17所述的驱动器聚合器,其中所述主机接口中的每一个经配置以实施主机系统和固态驱动器之间的点对点串行连接;且所述多个驱动接口中的每一个经配置以实施主机系统和固态驱动器之间的点对点串行连接。
19.根据权利要求18所述的驱动器聚合器,其中所述多个主机接口的子组经配置以在解译多个主机接口的所述子组中接收的地址时共享共同逻辑地址空间。
20.根据权利要求18所述的驱动器聚合器,其中所述不同逻辑地址空间的子组具有映射到所述多个组件固态驱动器中的相同组的存储器单元的重叠区;且所述存储器单元可使用发射到与所述不同逻辑地址空间的所述子组相关联的主机接口的命令来寻址。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/452,369 | 2019-06-25 | ||
US16/452,369 US10942846B2 (en) | 2019-06-25 | 2019-06-25 | Aggregated and virtualized solid state drives accessed via multiple logical address spaces |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112130756A true CN112130756A (zh) | 2020-12-25 |
Family
ID=73851106
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010587747.7A Pending CN112130756A (zh) | 2019-06-25 | 2020-06-24 | 经由多个逻辑地址空间存取的聚合和虚拟化固态驱动器 |
Country Status (2)
Country | Link |
---|---|
US (2) | US10942846B2 (zh) |
CN (1) | CN112130756A (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11249652B1 (en) | 2013-01-28 | 2022-02-15 | Radian Memory Systems, Inc. | Maintenance of nonvolatile memory on host selected namespaces by a common memory controller |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US10552085B1 (en) | 2014-09-09 | 2020-02-04 | Radian Memory Systems, Inc. | Techniques for directed data migration |
US9542118B1 (en) | 2014-09-09 | 2017-01-10 | Radian Memory Systems, Inc. | Expositive flash memory control |
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 |
US10942881B2 (en) | 2019-06-25 | 2021-03-09 | Micron Technology, Inc. | Parallel operations in aggregated and virtualized solid state drives |
US11055249B2 (en) | 2019-06-25 | 2021-07-06 | Micron Technology, Inc. | Access optimization 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 |
US11586385B1 (en) | 2020-05-06 | 2023-02-21 | Radian Memory Systems, Inc. | Techniques for managing writes in nonvolatile memory |
US20240095199A1 (en) * | 2022-09-15 | 2024-03-21 | Micron Technology, Inc. | Multi-interface memory |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101615106A (zh) * | 2008-06-23 | 2009-12-30 | 国际商业机器公司 | 用于虚拟化sas存储适配器的方法和系统 |
CN101833989A (zh) * | 2010-05-27 | 2010-09-15 | 华为技术有限公司 | 多接口固态硬盘及其处理方法和系统 |
CN106575271A (zh) * | 2014-06-23 | 2017-04-19 | 谷歌公司 | 管理存储设备 |
Family Cites Families (64)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7562110B2 (en) * | 2001-01-11 | 2009-07-14 | F5 Networks, Inc. | File switch and switched file system |
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 | 주식회사 심텍 | 솔리드스테이트드라이브 |
CN101859588B (zh) | 2009-04-10 | 2013-08-28 | 鸿富锦精密工业(深圳)有限公司 | 硬盘架 |
KR101637481B1 (ko) | 2009-04-10 | 2016-07-07 | 삼성전자주식회사 | 솔리드 스테이트 드라이브, 솔리드 스테이트 드라이브 장착 장치 및 컴퓨팅 시스템 |
KR101623119B1 (ko) | 2010-02-01 | 2016-05-20 | 삼성전자주식회사 | 솔리드 스테이트 드라이브의 에러 제어 방법 |
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 |
EP2656216B1 (en) | 2010-12-20 | 2018-12-19 | Marvell World Trade Ltd. | Device with descriptor scheduler and corresponding method and system |
US8732518B2 (en) | 2011-04-13 | 2014-05-20 | Netapp, Inc. | Reliability based data allocation and recovery in a storage system |
US8935493B1 (en) | 2011-06-30 | 2015-01-13 | Emc Corporation | Performing data storage optimizations across multiple data storage systems |
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 |
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 | 株式会社日立製作所 | 管理装置及び管理方法 |
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 |
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 |
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 |
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 |
US10402266B1 (en) | 2017-07-31 | 2019-09-03 | Pure Storage, Inc. | Redundant array of independent disks in a direct-mapped flash storage system |
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 |
EP3830713A1 (en) * | 2018-07-31 | 2021-06-09 | Marvell Asia Pte, Ltd. | Metadata generation at the storage edge |
US11372580B2 (en) * | 2018-08-07 | 2022-06-28 | Marvell Asia Pte, Ltd. | Enabling virtual functions on storage media |
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 |
US10942846B2 (en) | 2019-06-25 | 2021-03-09 | Micron Technology, Inc. | Aggregated and virtualized solid state drives accessed via multiple logical address spaces |
US11762798B2 (en) | 2019-06-25 | 2023-09-19 | Micron Technology, Inc. | Aggregated and virtualized solid state drives with multiple host interfaces |
US11768613B2 (en) | 2019-06-25 | 2023-09-26 | Micron Technology, Inc. | Aggregation and virtualization of solid state drives |
US11573708B2 (en) | 2019-06-25 | 2023-02-07 | Micron Technology, Inc. | Fail-safe redundancy 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 |
US10942881B2 (en) | 2019-06-25 | 2021-03-09 | Micron Technology, Inc. | Parallel operations in aggregated and virtualized solid state drives |
US11055249B2 (en) | 2019-06-25 | 2021-07-06 | Micron Technology, Inc. | Access optimization in aggregated and virtualized solid state drives |
-
2019
- 2019-06-25 US US16/452,369 patent/US10942846B2/en active Active
-
2020
- 2020-06-24 CN CN202010587747.7A patent/CN112130756A/zh active Pending
-
2021
- 2021-02-08 US US17/170,766 patent/US11500766B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101615106A (zh) * | 2008-06-23 | 2009-12-30 | 国际商业机器公司 | 用于虚拟化sas存储适配器的方法和系统 |
CN101833989A (zh) * | 2010-05-27 | 2010-09-15 | 华为技术有限公司 | 多接口固态硬盘及其处理方法和系统 |
CN106575271A (zh) * | 2014-06-23 | 2017-04-19 | 谷歌公司 | 管理存储设备 |
Also Published As
Publication number | Publication date |
---|---|
US11500766B2 (en) | 2022-11-15 |
US20210157719A1 (en) | 2021-05-27 |
US10942846B2 (en) | 2021-03-09 |
US20200409832A1 (en) | 2020-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11500766B2 (en) | Aggregated and virtualized solid state drives accessed via multiple logical address spaces | |
CN112131138B (zh) | 聚合和虚拟化固态驱动器中的存取优化 | |
CN112130755B (zh) | 具有多个主机接口的聚合和虚拟化固态驱动器 | |
US11706317B2 (en) | Optimization of data access and communication in memory systems | |
CN112130754B (zh) | 聚合和虚拟化固态驱动器中的并行操作 | |
CN111684434B (zh) | 多层存储器系统中的预测数据协作 | |
CN112470113B (zh) | 存储器系统中的隔离性能域 | |
CN111684417B (zh) | 用以存取异质存储器组件的存储器虚拟化 | |
CN112131139B (zh) | 固态驱动器的聚合和虚拟化 | |
CN112384890A (zh) | 预测性分页以加速存储器存取 | |
CN112805676B (zh) | 基于数据总线模式对读取操作和写入操作的调度 | |
CN112131053A (zh) | 聚合和虚拟化固态驱动器中的故障保护冗余 | |
CN114631076A (zh) | 加载命令的生存时间 | |
CN113811847A (zh) | 来自主机系统的写入命令的部分执行 | |
CN116643690A (zh) | 存储器子系统处的主机限定区群组配置 | |
US20240069738A1 (en) | Accessing memory devices via switchable channels | |
CN113094293A (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 |