CN112131139B - 固态驱动器的聚合和虚拟化 - Google Patents
固态驱动器的聚合和虚拟化 Download PDFInfo
- Publication number
- CN112131139B CN112131139B CN202010586170.8A CN202010586170A CN112131139B CN 112131139 B CN112131139 B CN 112131139B CN 202010586170 A CN202010586170 A CN 202010586170A CN 112131139 B CN112131139 B CN 112131139B
- Authority
- CN
- China
- Prior art keywords
- solid state
- drive
- host system
- aggregator
- 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 229
- 230000002776 aggregation Effects 0.000 title abstract description 4
- 238000004220 aggregation Methods 0.000 title abstract description 4
- 238000004891 communication Methods 0.000 claims description 56
- 238000000034 method Methods 0.000 claims description 41
- 230000004044 response Effects 0.000 claims description 26
- 238000013519 translation Methods 0.000 claims description 23
- 230000008569 process Effects 0.000 claims description 13
- 238000013507 mapping Methods 0.000 claims description 9
- 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
- 238000012545 processing Methods 0.000 abstract description 36
- 230000015654 memory Effects 0.000 description 193
- 230000006870 function Effects 0.000 description 5
- 230000003287 optical effect 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
- 239000000872 buffer Substances 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 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
- 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
- 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
- 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/0626—Reducing size or complexity of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- 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
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/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
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- 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/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- 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展示将虚拟化固态驱动器中接收的命令分布到固态驱动器的方法。
具体实施方式
本公开的至少一些方面是针对将多个存储器子系统聚合为充当针对主机系统的单个存储器子系统的组合式存储器子系统的技术。
当前,固态驱动器(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的复杂性、能量消耗和成本。
上文(例如,结合图4和/或5)所论述的方法可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,处理装置上运行或执行的指令)或其组合。在一些实施例中,图4和/或5的方法至少部分由图1、2或3的驱动聚合器103来执行。尽管以特定序列或次序展示,但除非另外规定,否则操作的次序可经修改。因此,应理解,所示出的实施例仅为实例,且所示出的操作可以不同次序执行,且一些操作可并行地执行。另外,可在各种实施例中省略一或多个操作。因此,并非在每一实施例中需要所有的操作。其它操作流程是可能的。
在一些实施方案中,主机系统111和存储器子系统(例如,固态驱动器101)之间的通信信道包含计算机网络,例如局域网、无线局域网、无线个域网、蜂窝通信网络、宽带高速始终连接无线通信连接(例如,当前或将来代的移动网络链路);且主机系统111和存储器子系统可经配置以使用类似于NVMe协议中的数据存储管理和使用命令彼此通信。
涉及驱动聚合器103的操作的一些实施例可使用由一或多个微处理器执行的计算机指令来实施。计算机指令可被配置成固态驱动器101的固件。在一些例子中,硬件电路可用于实施至少一些功能。固件可初始存储在非易失性存储介质或另一非易失性装置中,且加载到易失性DRAM和/或处理器中高速缓冲存储器中以供由驱动聚合器的微处理器执行。
非暂时性计算机存储介质可用于存储存储器子系统(例如,固态驱动器101,或组件固态驱动器107到109中的任一个)的固件的指令。当指令由微处理器执行时,指令致使存储器子系统执行上文所论述的方法。
大体来说,计算机系统的实例机器可具有指令集,用于致使机器执行本文所论述的方法中的任何一或多种。在一些实施例中,此计算机系统可对应于主机系统(例如,图1的主机系统111),所述主机系统包含、耦合到或利用存储器子系统(例如,图1的固态驱动器101),或可用于执行驱动聚合器103的操作(例如,执行指令以执行对应于参考图1-5描述的驱动聚合器103的操作)。在替代实施例中,机器可连接(例如,联网)到LAN、内联网、外联网和/或因特网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而在客户端-服务器网络环境中作为服务器或客户端机器操作。
机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝式电话、网络器具、服务器、网络路由器、开关或桥接器,或能够(循序或以其它方式)执行指定待由所述机器采取的动作的指令集的任何机器。另外,尽管示出单个机器,但还应认为术语“机器”包含机器的任何集合,所述集合单独地或共同地执行一(或多个)指令集以执行本文中所论述的方法中的任何一或多种。
实例机器可包含处理装置、主存储器(例如,只读存储器(ROM)、快闪存储器、例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)等),和数据存储系统,它们经由总线(其可包含多个总线)彼此通信。
本文所论述的处理装置可包含一或多个通用处理装置,例如微处理器、中央处理单元等。更特定来说,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或实施其它指令集的处理器,或实施指令集的组合的处理器。本文所论述的处理装置还可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置通常经配置以执行用于执行本文所论述的操作和步骤的指令。实例机器可进一步包含用以经由计算机网络通信的网络接口装置。
本文中所公开的数据存储系统可包含机器可读存储介质(也称为计算机可读介质),其上存储有一或多个指令集或体现本文中所描述的任何一或多种方法或功能的软件。所述指令还可在由计算机系统执行期间完全或至少部分地驻留在主存储器内和/或处理装置内,主存储器和处理装置也构成机器可读存储介质。机器可读存储介质、数据存储系统和/或主存储器可对应于存储器子系统。
在一个实施例中,存储在实例机器中的指令包含用以实施对应于驱动聚合器103的功能性的指令(例如,如参考图1-5所描述)。虽然机器可读存储介质可在一实施例中论述为单个介质,但术语“机器可读存储介质”应被认为包含存储所述一或多个指令集的单个介质或多个介质。术语“机器可读存储介质”还应被认为包含能够存储或编码供机器执行的指令集合且致使机器执行本公开的方法中的任何一种或多种的任何介质。因此,应认为术语“机器可读存储介质”包含(但不限于)固态存储器、光学介质以及磁性介质。
已关于计算机存储器内的数据位的操作的算法和符号表示而呈现先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其他技术人员的方式。算法在这里并且通常被认为是导致期望的结果的操作的自洽序列。操作是要求对物理量进行物理操纵的操作。这些量通常但未必呈能够被存储、组合、比较和以其它方式操纵的电或磁信号的形式。有时,主要出于通用的原因,已经证明将这些信号称为位、值、要素、符号、字符、项、数字等是方便的。
然而,应牢记,所有这些和类似术语应与适当物理量相关联,且仅仅是应用于这些量的方便的标签。本公开可以涉及将计算机系统的寄存器和存储器内的表示为物理(电子)量的数据操纵和变换为计算机系统存储器或寄存器或其它这类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
本公开还涉及用于执行本文中的操作的设备。此设备可以出于所需目的而专门构造,或其可以包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储介质中,例如但不限于任何类型的盘(包含软盘、光盘、CD-ROM和磁性光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或适合于存储电子指令的任何类型的介质,它们各自耦合到计算机系统总线。
本文中呈现的算法和显示器在本质上并不与任何特定计算机或其它设备相关。各种通用系统可与根据本文中的教示的程序一起使用,或可证明构建用以执行所述方法更加专用的设备是方便的。将如下文描述中所阐述的那样来呈现各种各样的这些系统的结构。此外,并不参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施如本文中所描述的本公开的教示。
本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以执行根据本公开的过程的指令的机器可读介质。机器可读介质包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如,计算机可读)介质包含机器(例如,计算机)可读存储介质,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光学存储介质、快闪存储器组件等。
在本说明书中,各种功能和操作被描述为由计算机指令执行或由计算机指令引起以简化描述。然而,所属领域的技术人员将认识到,此类表达的意图是所述功能源自由一或多个控制器或处理器(例如,微处理器)执行计算机指令。替代地或组合地,所述功能和操作可使用具有或不具有软件指令的专用电路系统实施,例如使用专用集成电路(ASIC)或现场可编程门阵列(FPGA)来实施。可使用无软件指令的硬连线电路系统或结合软件指令实施实施例。因此,技术既不限于硬件电路系统及软件的任何特定组合,也不限于由数据处理系统执行的指令的任何特定来源。
在前述说明书中,已参考其特定实例实施例描述了本公开的实施例。将显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开作出各种修改。因此,应在说明性意义上而非限制性意义上看待说明书和图式。
Claims (19)
1.一种固态驱动器,其包括:
驱动聚合器,其经配置以与主机系统介接;以及
多个组件固态驱动器,其连接到所述驱动聚合器以聚合所述多个组件固态驱动器以作为单个聚合固态驱动器操作,其中所述多个组件固态驱动器包括至少第一固态驱动器和第二固态驱动器,其中所述第一固态驱动器包括第一控制器,所述第一控制器经配置以处理来自主机系统的命令,且所述第二固态驱动器包括第二控制器,所述第二控制器经配置以处理来自所述主机系统的命令;
其中所述驱动聚合器经配置以从所述主机系统接收命令,且将命令发射到所述聚合固态驱动器以实施从所述主机系统接收的所述命令;
其中所述驱动聚合器包括主机接口,所述主机接口经配置以根据第一通信协议在主机系统与包括多个组件固态驱动器的所述聚合固态驱动器之间通信,多个驱动接口经配置以根据第二通信协议在所述主机系统与所述多个组件固态驱动器之间通信,其中所述组件固态驱动器和耦合在所述主机接口与所述多个驱动接口之间的转译逻辑支持包括所述多个组件固态驱动器的所述聚合固态驱动器与所述主机系统之间的所述第一通信协议;
其中所述转译逻辑经配置以基于所述主机接口中接收的命令中所指定的名称空间将所述主机接口中接收的所述命令分布到所述驱动接口;且
其中所述主机系统经配置以辨识所述第一固态驱动器,且在不使用所述驱动聚合器的情况下,在所述第一固态驱动器直接连接到所述主机系统时直接与所述第一固态驱动器通信以存取数据。
2.根据权利要求1所述的固态驱动器,其进一步包括:
印刷电路板,其具有用于经由计算机总线到所述主机系统的连接的引脚;
其中所述驱动聚合器和所述多个组件固态驱动器安装在所述印刷电路板上。
3.根据权利要求2所述的固态驱动器,其中所述组件固态驱动器中的每一个集成于集成电路封装内。
4.根据权利要求3所述的固态驱动器,其中所述集成电路封装具有球状栅格阵列BGA形状因数。
5.根据权利要求1所述的固态驱动器,其中所述第一通信协议和所述第二通信协议中的每一个是以下中的一个:
用于串行高级技术附件SATA接口的协议;
用于外围组件互连高速PCIe接口的协议;
用于通用串行总线USB接口的协议;以及
用于光纤通道的协议。
6.根据权利要求5所述的固态驱动器,其中所述转译逻辑经配置以基于所述主机接口中接收的所述命令中所指定的逻辑地址将所述主机接口中接收的命令分布到所述驱动接口。
7.根据权利要求1所述的固态驱动器,其中所述第一控制器和所述第二控制器中的每一者经配置以处理直接从所述主机系统接收的命令。
8.一种驱动聚合器,其包括:
主机接口,其经配置以与主机系统通信;
多个驱动接口,其分别与多个组件固态驱动器通信以聚合所述多个组件固态驱动器以作为单个聚合固态驱动器操作,其中所述多个组件固态驱动器包括至少第一固态驱动器和第二固态驱动器,其中所述第一固态驱动器包括第一控制器,所述第一控制器经配置以处理来自主机系统的命令,且所述第二固态驱动器包括第二控制器,所述第二控制器经配置以处理来自所述主机系统的命令;以及
转译逻辑,其耦合在所述主机接口和所述多个驱动接口之间;
其中所述主机接口经配置以根据第一通信协议在主机系统与包括多个组件固态驱动器的所述聚合固态驱动器之间通信,且多个驱动接口经配置以根据第二通信协议在所述主机系统与所述多个组件固态驱动器之间通信,其中所述组件固态驱动器支持包括所述多个组件固态驱动器的所述聚合固态驱动器与所述主机系统之间的所述第一通信协议;
其中所述转译逻辑经配置以基于所述主机接口中接收的命令中所指定的名称空间将所述主机接口中接收的所述命令分布到所述驱动接口;且
其中所述主机系统经配置以辨识所述第一固态驱动器,且在不使用所述驱动聚合器的情况下,在所述第一固态驱动器直接连接到所述主机系统时直接与所述第一固态驱动器通信以存取数据。
9.根据权利要求8所述的驱动聚合器,其进一步包括:
集成电路封装,其中所述主机接口、所述转译逻辑和所述多个驱动接口封装于所述集成电路封装中。
10.根据权利要求9所述的驱动聚合器,其中所述转译逻辑包含现场可编程门阵列FPGA或专用集成电路ASIC。
11.根据权利要求8所述的驱动聚合器,其中所述主机接口经配置以在所述主机系统和固态驱动器之间实施点对点串行连接;且所述多个驱动接口中的每一个经配置以在主机系统和所述组件固态驱动器中的一个之间实施点对点串行连接。
12.根据权利要求8所述的驱动聚合器,其中所述第一控制器和所述第二控制器中的每一者经配置以处理直接从所述主机系统接收的命令。
13.一种用于固态驱动器的方法,所述方法包括:
根据第一通信协议,在驱动聚合器中接收来自主机系统的第一命令,所述第一命令指定操作;
由所述驱动聚合器将所述第一命令中的地址映射到连接到所述驱动聚合器的多个组件固态驱动器当中的固态驱动器中的地址,其中所述多个组件固态驱动器聚合为单个聚合固态驱动器操作,且其中所述多个组件固态驱动器包括至少第一固态驱动器和第二固态驱动器,其中所述第一固态驱动器包括第一控制器,所述第一控制器经配置以处理来自主机系统的命令,且所述第二固态驱动器包括第二控制器,所述第二控制器经配置以处理来自所述主机系统的命令;
根据第二通信协议,由所述驱动聚合器向所述聚合固态驱动器内的所述组件固态驱动器中的一者发射用于所述命令中所指定的所述操作以及用于所述固态驱动器中的所述地址的第二命令;
根据所述第二通信协议,在所述驱动聚合器中从所述聚合固态驱动器内的所述组件固态驱动器中的所述一者接收对所述第二命令的响应;
根据所述第一通信协议,由所述驱动聚合器基于从所述固态驱动器接收的所述响应向所述主机系统发射对所述第一命令的响应;
在所述驱动聚合器中且从所述主机系统接收命令以单个固态驱动器的容量创建名称空间;
针对所述名称空间在所述多个固态驱动器中选择选定驱动器;
存储将所述名称空间与所述选定驱动器相关联的数据;以及
从所述驱动聚合器向所述选定驱动器发射命令以所述多个固态驱动器中所述选定驱动器的容量创建所述名称空间;
其中所述主机系统经配置以辨识所述第一固态驱动器,且在不使用所述驱动聚合器的情况下,在所述第一固态驱动器直接连接到所述主机系统时直接与所述第一固态驱动器通信以存取数据。
14.根据权利要求13所述的方法,其进一步包括:
在所述驱动聚合器中作为针对所述主机系统的单个固态驱动器接收来自所述主机系统的命令;以及
由所述驱动聚合器使用连接到所述驱动聚合器的所述多个固态驱动器实施所述命令。
15.根据权利要求14所述的方法,其中所述实施来自所述主机系统的所述命令包含:基于将所述单个固态驱动器的容量中的地址映射到所述多个固态驱动器中的地址产生到所述多个固态驱动器的命令。
16.根据权利要求15所述的方法,其进一步包括:
在所述驱动聚合器中接收识别所述名称空间的所述主机系统的命令;以及
由所述驱动聚合器基于使所述名称空间与所述选定驱动器相关联的所述数据,将识别所述名称空间的所述主机系统的所述命令转发到所述多个固态驱动器中的所述选定驱动器。
17.根据权利要求13所述的方法,其中连接到所述驱动聚合器的所述多个固态驱动器是球状栅格阵列BGA固态驱动器。
18.根据权利要求13所述的方法,其中所述映射是基于来自所述主机系统的所述第一命令中所指定的名称空间。
19.根据权利要求13所述的方法,其中所述第一控制器和所述第二控制器中的每一者经配置以处理直接从所述主机系统接收的命令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/452,333 US11768613B2 (en) | 2019-06-25 | 2019-06-25 | Aggregation and virtualization of solid state drives |
US16/452,333 | 2019-06-25 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112131139A CN112131139A (zh) | 2020-12-25 |
CN112131139B true CN112131139B (zh) | 2024-07-16 |
Family
ID=73851116
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010586170.8A Active CN112131139B (zh) | 2019-06-25 | 2020-06-24 | 固态驱动器的聚合和虚拟化 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11768613B2 (zh) |
CN (1) | CN112131139B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11513923B2 (en) | 2019-06-25 | 2022-11-29 | Micron Technology, Inc. | Dynamic 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 |
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 |
US10942881B2 (en) | 2019-06-25 | 2021-03-09 | Micron Technology, Inc. | Parallel operations 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 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833989A (zh) * | 2010-05-27 | 2010-09-15 | 华为技术有限公司 | 多接口固态硬盘及其处理方法和系统 |
Family Cites Families (75)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW561358B (en) | 2001-01-11 | 2003-11-11 | Force Corp Z | 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 |
US20060005063A1 (en) | 2004-05-21 | 2006-01-05 | Bea Systems, Inc. | Error handling for a service oriented architecture |
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 |
US8127059B1 (en) * | 2005-09-02 | 2012-02-28 | Pmc-Sierra Us, Inc. | Apparatus for interconnecting hosts with storage devices |
CN101118460A (zh) * | 2006-05-10 | 2008-02-06 | 马维尔国际贸易有限公司 | 具有高功率和低功率处理器以及线程转移的系统 |
US7813271B2 (en) | 2006-09-25 | 2010-10-12 | Futurewei Technologies, Inc. | Aggregated link traffic protection |
US7548998B2 (en) * | 2006-10-27 | 2009-06-16 | International Business Machines Corporation | Modifying host input/output (I/O) activity to allow a storage drive to which I/O activity is directed to access requested information |
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 |
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 |
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 |
US20130238852A1 (en) * | 2012-03-07 | 2013-09-12 | Hitachi, Ltd. | Management interface for multiple storage subsystems virtualization |
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 |
JP5971660B2 (ja) | 2012-09-11 | 2016-08-17 | 株式会社日立製作所 | 管理装置及び管理方法 |
CA2891355C (en) * | 2012-11-20 | 2022-04-05 | Charles I. Peddle | Solid state drive architectures |
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 |
US9176820B2 (en) * | 2013-03-19 | 2015-11-03 | Industrial Technology Research Institute | Disk logging method applicable to storage medium and electronic device, storage medium using the same and electronic device using the same |
US9170941B2 (en) * | 2013-04-05 | 2015-10-27 | Sandisk Enterprises IP LLC | Data hardening in a storage system |
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 |
US20170060436A1 (en) * | 2015-09-02 | 2017-03-02 | Intel Corporation | Technologies for managing a reserved high-performance memory region of a solid state drive |
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 |
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 |
JP7326667B2 (ja) | 2018-07-31 | 2023-08-16 | マーベル アジア ピーティーイー、リミテッド | ストレージエッジにおけるメタデータ生成 |
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 |
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 |
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 |
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 |
US11762798B2 (en) | 2019-06-25 | 2023-09-19 | Micron Technology, Inc. | Aggregated and virtualized solid state drives with multiple host interfaces |
-
2019
- 2019-06-25 US US16/452,333 patent/US11768613B2/en active Active
-
2020
- 2020-06-24 CN CN202010586170.8A patent/CN112131139B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833989A (zh) * | 2010-05-27 | 2010-09-15 | 华为技术有限公司 | 多接口固态硬盘及其处理方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
US11768613B2 (en) | 2023-09-26 |
US20200409574A1 (en) | 2020-12-31 |
CN112131139A (zh) | 2020-12-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11500766B2 (en) | Aggregated and virtualized solid state drives accessed via multiple logical address spaces | |
CN112131138B (zh) | 聚合和虚拟化固态驱动器中的存取优化 | |
CN112130755B (zh) | 具有多个主机接口的聚合和虚拟化固态驱动器 | |
CN112384890B (zh) | 预测性分页以加速存储器存取 | |
CN112131139B (zh) | 固态驱动器的聚合和虚拟化 | |
CN112130754B (zh) | 聚合和虚拟化固态驱动器中的并行操作 | |
KR20210019580A (ko) | 메모리 시스템의 분리된 성능 도메인 | |
US11687282B2 (en) | Time to live for load commands | |
US11579799B2 (en) | Dynamic selection of cores for processing responses | |
US20230359390A1 (en) | Configurable buffered i/o for memory systems | |
CN116643690A (zh) | 存储器子系统处的主机限定区群组配置 | |
US11726716B2 (en) | Internal commands for access operations | |
US12019888B2 (en) | Deferred zone adjustment in zone memory system | |
US11847349B2 (en) | Dynamic partition command queues for a memory device |
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 |