CN112130754A - 聚合和虚拟化固态驱动器中的并行操作 - Google Patents
聚合和虚拟化固态驱动器中的并行操作 Download PDFInfo
- Publication number
- CN112130754A CN112130754A CN202010580900.3A CN202010580900A CN112130754A CN 112130754 A CN112130754 A CN 112130754A CN 202010580900 A CN202010580900 A CN 202010580900A CN 112130754 A CN112130754 A CN 112130754A
- Authority
- CN
- China
- Prior art keywords
- solid state
- drive
- commands
- aggregator
- logical addresses
- 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.)
- Granted
Links
- 239000007787 solid Substances 0.000 title claims abstract description 293
- 238000013507 mapping Methods 0.000 claims abstract description 32
- 230000015654 memory Effects 0.000 claims description 215
- 238000004891 communication Methods 0.000 claims description 54
- 238000013519 translation Methods 0.000 claims description 49
- 238000000034 method Methods 0.000 claims description 45
- 238000012545 processing Methods 0.000 claims description 36
- 238000005516 engineering process Methods 0.000 claims description 8
- 230000002093 peripheral effect Effects 0.000 claims description 7
- 239000000835 fiber Substances 0.000 claims description 5
- 230000004044 response Effects 0.000 description 24
- 230000006870 function Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 230000009977 dual effect Effects 0.000 description 4
- 230000008569 process 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
- 238000003491 array Methods 0.000 description 2
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 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
- 238000012546 transfer Methods 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000003139 buffering effect Effects 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
- 230000006872 improvement 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/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
- 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/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- 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/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (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展示将虚拟化固态驱动器中接收的命令分布到固态驱动器的方法。
图6展示连接到具有多个组件固态驱动器的虚拟化单个固态驱动器的多个主机系统。
图7展示根据一个实施例具有多个主机接口的驱动聚合器。
图8展示经由多个并行和/或冗余连接连接到虚拟化单个固态驱动器的主机系统。
图9展示经由多个主机接口处理虚拟化固态驱动器中接收的命令的方法。
图10示出根据一个实施例经配置以使用到组件固态驱动器的并行命令来执行来自主机系统的命令的虚拟化单个固态驱动器。
图11示出经配置以响应于来自主机系统的命令产生并行命令的驱动聚合器。
图12示出将来自主机系统中所指定的名称空间的块映射到组件固态驱动器中的名称空间中的块。
图13-14示出地址映射的实例。
图15展示使用多个组件固态驱动器执行来自主机系统的命令的方法。
具体实施方式
本公开的至少一些方面是针对将多个存储器子系统聚合为充当针对主机系统的单个存储器子系统的组合式存储器子系统的技术。在一些实施例中,单个存储器子系统配置有多个主机接口以服务于多个主机系统,或经由多个并行和/或冗余连接服务于一个主机系统。
当前,固态驱动器(SSD)可提供于单个集成电路封装中。举例来说,固态驱动器(SSD)可以球状栅格阵列(BGA)形状因数来封装。BGA SSD具有嵌入于集成电路封装中的控制器以处理来自主机系统的命令,控制存取嵌入于BGA SSD中的介质单元或存储器组件中的数据的操作,且产生针对来自主机系统的命令的响应。然而,单个集成电路封装和/或BGA形状因数可能限制BGA SSD的存储容量。
本公开的至少一些方面经由驱动聚合器解决上述和其它缺陷,所述驱动聚合器经配置以将多个SSD聚合和虚拟化为针对主机系统的单个SSD。因此,多个BGA SSD可用于构造针对主机系统的一个高容量SSD。组合的SSD可具有不受单个集成电路封装和/或BGA形状因数限制的存储容量。
通常,驱动聚合器可用于聚合和虚拟化针对主机系统的多个存储器子系统。存储器子系统的一个实例为经由外围互连件(例如,输入/输出总线、存储区域网络)连接到中央处理单元(CPU)的存储装置。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器和硬盘驱动器(HDD)。存储器子系统的另一实例是经由存储器总线连接到中央处理单元(CPU)的存储器模块。.存储器模块的实例包含双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM)、非易失性双列直插式存储器模块(NVDIMM)等。在一些实施例中,存储器子系统是提供存储器功能和存储功能两者的混合式存储器/存储装置子系统。一般来说,主机系统可利用包含一或多个存储器组件的存储器子系统。主机系统可提供数据以存储于存储器子系统处并且可请求从存储器子系统检索数据。
图1示出根据本公开的一些实施例具有存储器子系统的实例计算系统100。在图1中,固态驱动器101展示为此存储器子系统的实例。聚合固态驱动器101使用多个组件固态驱动器107到109构造。固态驱动器101的驱动器聚合器103将多个组件固态驱动器107到109的整个组合容量虚拟化为聚合固态驱动器101的容量。驱动聚合器103将组件固态驱动器107到109屏蔽于主机系统111使得主机系统111可通过寻址单个固态驱动器101来存取多个组件固态驱动器107到109的存储器容量。大体来说,图1中的组件固态驱动器107到109中的每一个是存储器子系统的另一实例。
大体来说,存储器子系统可包含介质,例如介质单元/存储器组件。介质单元/存储器组件可以是易失性存储器组件、非易失性存储器组件或此些的组合。介质单元/存储器组件中的每一个可独立于其它介质单元/存储器组件的操作执行存储、记录、编程、写入或提交新数据的操作。因此,介质单元/存储器组件可并行地用于执行写入命令。在一些实施例中,存储器子系统是存储系统。存储系统的实例为固态驱动器(SSD)。在其它实施例中,存储器子系统为存储器模块。存储器模块的实例包含DIMM、NVDIMM和NVDIMM-P。在另外的实施例中,存储器子系统是混合式存储器/存储装置子系统。通常,计算系统100可包含主机系统111,其经由计算机总线117使用存储器子系统(例如,固态驱动器101)。举例来说,主机系统111可将数据写入到存储器子系统且从存储器子系统读取数据。
主机系统111可以是计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置或包含存储器和处理装置的这种计算装置。主机系统111可包含或经由计算机总线117耦合到存储器子系统(例如,固态驱动器101),使得主机系统111可从存储器子系统读取数据或将数据写入到存储器子系统。主机系统111可经由物理主机接口耦合到存储器子系统。如本文所使用,“耦合”到通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如,没有中间组件),无论是有线还是无线的,包含例如电连接、光学连接、磁连接等连接。物理主机接口的实例包含(但不限于)串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行附接的SCSI(SAS)、双数据速率(DDR)存储器总线等。物理主机接口可用于在主机系统111和存储器子系统(例如固态驱动器101)之间发射数据。当存储器子系统通过PCIe接口与主机系统111耦合时,主机系统111可进一步利用NVM高速(NVMe)接口来存取存储器子系统的存储容量。物理主机接口可提供用于在主机系统111和存储器子系统(例如固态驱动器101)之间传递控制、地址、数据和其它信号的接口。图1示出固态驱动器101作为实例存储器子系统。一般来说,主机系统111可经由相同通信连接、多个单独通信连接和/或通信连接的组合存取多个存储器子系统。
主机系统111包含处理装置113和控制器115。主机系统111的处理装置113可为例如微处理器、中央处理单元(CPU)、处理器的处理核心、执行单元等。在一些例子中,控制器115可称为存储器控制器、存储器管理单元和/或起始器。在一个实例中,控制器115控制耦合在主机系统111和存储器子系统(例如固态驱动器101)之间的计算机总线117上的通信。
通常,控制器115可向存储器子系统发送针对对于存储器存储容量的所要存取的命令或请求。控制器115可进一步包含接口电路系统以经由计算机总线117与存储器子系统通信。接口电路系统可将从存储器子系统接收的响应转换为用于主机系统111的信息。
主机系统111的控制器115可与存储器子系统的控制器115通信以在存储器子系统的存储器组件处执行例如读取数据、写入数据或擦除数据等操作和其它这类操作。在一些例子中,控制器115集成于处理装置113的相同集成电路封装内。在其它例子中,控制器115与处理装置113的集成电路封装分离。控制器115和/或处理装置113可包含例如一或多个集成电路和/或离散组件、缓冲存储器、高速缓冲存储器或其组合等硬件。控制器115和/或处理装置113可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或另一合适的处理器。
大体来说,存储器子系统(例如,固态驱动器107或109)的介质单元/存储器组件可包含不同类型的非易失性存储器组件和/或易失性存储器组件的任何组合。非易失性存储器组件的实例包含与非(NAND)型快闪存储器。存储器组件中的每一个可包含存储器单元的一或多个阵列,所述存储器单元例如单层级单元(SLC)或多层级单元(MLC)(例如,三层级单元(TLC)或四层级单元(QLC))。在一些实施例中,特定存储器组件可包含存储器单元的SLC部分和MLC部分两者。存储器单元中的每一个可存储由主机系统111使用的一或多个数据位(例如,数据块)。尽管描述例如NAND型快闪存储器等非易失性存储器组件,但存储器组件可基于任何其它类型的存储器,例如易失性存储器。在一些实施例中,存储器组件可为(但不限于)随机存取存储器(RAM)、只读存储器(ROM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、相变存储器(PCM)、磁性随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、铁电随机存取存储器(FeTRAM)、铁电RAM(FeRAM)、导电桥接RAM(CBRAM)、电阻性随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、或非(NOR)快闪存储器、电可擦除可编程只读存储器(EEPROM)、基于纳米线的非易失性存储器、并入有忆阻器技术的存储器,以及非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉栅格数据存取阵列基于体电阻的改变来执行位存储。另外,与许多基于快闪的存储器对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。此外,存储器组件的存储器单元可分组为存储器页或数据块,其可指用以存储数据的存储器组件的单元。
大体来说,存储器子系统(例如,固态驱动器107或109)可具有控制器,其与存储器子系统的存储器组件通信以执行例如读取数据、写入数据或擦除数据等操作和其它这类操作(例如,响应于命令总线上调度的命令)。存储器子系统的控制器可包含例如一或多个集成电路和/或离散组件、缓冲存储器或其组合等硬件。存储器子系统的控制器可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或另一合适的处理器。存储器子系统的控制器可包含经配置以执行存储在控制器的本地存储器中的指令的处理装置(例如,处理器)。举例来说,存储器子系统的控制器的本地存储器可包含嵌入式存储器,其经配置以存储用于执行控制存储器子系统的操作(包含处理存储器子系统和主机系统(例如,111)之间的通信)的各种过程、操作、逻辑流和例程的指令。在一些实施例中,本地存储器可包含存储存储器指针、所提取数据等的存储器寄存器。本地存储器还可包含用于存储微码的只读存储器(ROM)。虽然典型的存储器子系统具有控制器,但在本公开的另一实施例中,存储器子系统可不包含控制器,而是可改为依赖于外部控制(例如,由外部主机或由与存储器子系统分离的处理器或控制器提供)。
通常,存储器子系统(例如,固态驱动器107或109)的控制器可从主机系统111接收命令或操作,且可将命令或操作转换为指令或适当命令来实现对存储器子系统的存储器组件的所要存取。存储器子系统(例如,固态驱动器107或109)的控制器可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ECC)操作、加密操作、高速缓存操作,以及逻辑块地址和物理块地址之间的地址转译。存储器子系统(例如,固态驱动器107或109)的控制器可进一步包含主机接口电路系统以经由物理主机接口与主机系统(例如,111)通信。主机接口电路系统可将从主机系统接收的命令转换为存取存储器组件的命令指令,以及将与存储器组件相关联的响应转换为用于主机系统(例如,111)的信息。
存储器子系统(例如,固态驱动器107或109)还可包含额外电路系统或组件。在一些实施例中,存储器子系统(例如,固态驱动器107或109)可包含高速缓冲存储器或缓冲器(例如,DRAM)和地址电路系统(例如,行解码器和列解码器),所述地址电路系统可从存储器子系统的控制器接收地址且解码所述地址以存取存储器子系统中的存储器组件。
计算系统100包含驱动聚合器103,其聚合组件固态驱动器107到109的容量且将整个组合容量虚拟化为单个固态驱动器101的容量。在一些实施例中,驱动聚合器103包含逻辑电路系统以将来自主机系统111的命令/请求转译为到固态驱动器107到109的命令/请求,和/或将来自固态驱动器107到109的响应转译为到主机系统111的响应。驱动聚合器103根据用于固态驱动器接受来自主机系统的命令的通信协议存取来自主机系统111的命令。驱动聚合器103根据用于主机系统向固态驱动器发布命令的通信协议构建命令并将命令发射到组件固态驱动器(例如,107或109)中的每一个。驱动聚合器103根据主机系统和固态驱动器之间的通信协议接受来自组件固态驱动器(例如,107或109)中的每一个的响应。驱动聚合器103根据主机系统和固态驱动器之间的通信协议构建响应并将响应发射到主机系统111。在一个实施例中,主机系统111和驱动器聚合器103之间使用的通信协议可与驱动器聚合器103和组件固态驱动器107到109之间使用的通信协议相同。在一个实施例中,主机系统111和驱动器聚合器103之间使用的通信协议可与驱动器聚合器103和组件固态驱动器107到109之间使用的通信协议不同。驱动聚合器103根据一个通信协议针对主机系统111表现得类似标准固态驱动器的控制器,且根据相同或不同的通信协议针对组件固态驱动器107到109表现得类似标准主机系统。
在固态驱动器101中,驱动器聚合器103经由总线105连接到组件固态驱动器107到109。举例来说,总线105可包含从驱动器聚合器103到组件固态驱动器107到109的点对点串行连接。驱动器聚合器103和组件固态驱动器107到109之间的点对点串行连接可根据串行高级技术附件(SATA)通信协议、外围组件互连高速(PCIe)通信协议或另一协议。主机系统111和驱动聚合器103之间的计算机总线117可根据串行高级技术附件(SATA)通信协议、外围组件互连高速(PCIe)通信协议、通用串行总线(USB)通信协议、光纤通道通信协议、串行附接SCSI(SAS)通信协议、双数据速率(DDR)存储器总线通信协议等。
驱动聚合器103可使用具有现场可编程门阵列(FPGA)或专用集成电路(ASIC)的集成电路芯片来实施。或者,驱动聚合器103可至少部分经由软件或固件来实施。举例来说,驱动器聚合器103或嵌入于驱动器聚合器103内的处理装置可经配置以执行存储在存储器中的用于执行本文中所描述的驱动聚合器103的操作的指令。在一些实施例中,驱动聚合器103实施于配置于具有多个组件固态驱动器107的总体固态驱动器101上的单个集成电路芯片中。
图2展示连接到具有多个组件固态驱动器107到109的虚拟化单个固态驱动器的主机系统111。举例来说,虚拟化单个固态驱动器可用于实施图1所示的固态驱动器101。
在图2中,印刷电路板131经配置以具有用于作为单个固态驱动器101到主机系统111的连接135的引脚133。举例来说,连接135可以是根据SATA、PCIe、USB或另一标准的点对点串行连接。基于通信标准,主机系统111经配置以将配置于印刷电路板131上的装置辨识为单个固态驱动器101。主机系统111基于将装置辨识为单个固态驱动器101来寻址装置中的存储器。
来自主机系统111的命令经由连接135和引脚133在驱动聚合器103中接收。所接收命令在驱动聚合器103中经处理以供调整、映射和/或分布到组件固态驱动器107到109。举例来说,组件固态驱动器107到109中的每一个可被实施为能够直接处理来自主机系统111的命令的球状栅格阵列(BGA)固态驱动器(SSD)。举例来说,当从组件固态驱动器109到驱动聚合器103的连接137直接再连接到主机系统111时,主机系统111可辨识固态驱动器109,且直接与固态驱动器109通信以将数据存储在固态驱动器109中和/或从固态驱动器109检索数据。
举例来说,BGA SSD 107可具有能够与主机系统(例如,111)直接通信以接收命令和提供响应的控制器141;且BGA SSD 107可具有拥有用以存储数据的存储器单元的多个介质单元(存储器组件)143到147。
驱动聚合器103经配置以将组件固态驱动器107到109的细节屏蔽于主机系统111。因此,主机系统111不必单独地寻址组件固态驱动器107到109。举例来说,根据一组预定规则,驱动聚合器103可将来自主机系统111的一些命令转发到一个组件固态驱动器(例如,107),且将来自主机系统111的其它命令转发到另一组件固态驱动器(例如,109)。
举例来说,驱动聚合器103可将配置于印刷电路板131上的装置的整个容量的逻辑地址空间划分为多个区。所述区中的每一个与组件固态驱动器107到109中的对应一个相关联。当驱动聚合器103接收从主机系统111接收的命令时,驱动聚合器103确定所述命令的逻辑地址所处的区,识别与所确定的区相关联的目标固态驱动器(例如,107),调整命令以至少将主机中接收的命令中的逻辑地址映射到目标固态驱动器(例如,107)中的逻辑地址,且将经调整命令发射到目标固态驱动器(例如,107)。
在一些实施例中,主机系统111经配置以将印刷电路板上的虚拟化单个固态驱动器101的存储器容量组织为命名部分。存储器容量的名称部分为名称空间。可在针对虚拟化单个固态驱动器101的存储器容量分离的不同名称空间内限定逻辑地址。举例来说,n个块的存储器容量的第一部分上分配的第一名称空间可具有0到n-1的范围内的逻辑块寻址(LBA)地址;且m个块的存储器容量的第二部分上分配的第二名称空间可具有0到m-1的范围内的LBA地址。为了存取存储器块,主机系统111识别名称空间和所述名称空间内限定的LBA地址。
驱动聚合器103可经配置以基于名称空间将由主机系统111请求的操作分布到组件固态驱动器107到109。举例来说,驱动聚合器103可将虚拟化单个固态驱动器101的存储器容量上创建的不同名称空间指派到不同组件固态驱动器107到109。随后,驱动聚合器103可基于命令中所指定的名称空间简单地将来自主机系统111的命令转发到组件固态驱动器。
图3展示根据一个实施例的驱动聚合器103。举例来说,图3的驱动聚合器103可用于图2的印刷电路板131上和/或图1的虚拟化单个固态驱动器101中。
图3的驱动聚合器103可集成于单个集成电路芯片内。图3的驱动聚合器103包含用于到主机系统(例如,111)的连接135的主机接口151、转译逻辑153和多个驱动接口155到157。驱动接口155到157中的每一个可用于到组件固态驱动器(例如,109)的连接(例如,137)。
主机接口151经配置以在主机系统和固态驱动器之间实施通信协议的固态驱动器侧。驱动接口155和157中的每一个经配置以在主机系统和固态驱动器之间实施通信协议的主机系统侧。在一些例子中,驱动器接口155到157可支持不同通信协议(例如,SATA和PCIe),使得可使用不同类型的组件固态驱动器107到109。
转译逻辑153经配置以接收来自主机接口151的命令,且产生针对驱动接口155到157的一或多个命令。当从驱动接口155到157接收一或多个相应的响应时,转译逻辑153产生对于来自主机接口151的命令的响应。
驱动聚合器103具有控制转译逻辑153的操作的地址映射159。举例来说,地址映射159可用于将虚拟化单个固态驱动器101的容量中的逻辑地址转译为连接到驱动接口155到157中的一个的相应组件固态驱动器(例如,107或109)的容量中的相应逻辑地址。基于地址转译,转译逻辑153可产生针对相应驱动接口(例如,155或157)的相应命令。
在一些实施方案中,连接135中和连接137中使用的通信协议是不同的。因此,转译逻辑153根据通信协议的差异执行命令转译。
在一些实施方案中,连接135中和连接137中使用的通信协议是不同的;且转译逻辑153可简单地将连接135中接收的命令转发到驱动接口157。举例来说,当在连接到驱动接口157的组件固态驱动器(例如,109)上创建名称空间时,来自主机接口151的用于名称空间中的读取或写入操作的命令可转发到驱动接口157。
转译逻辑153可被实施为现场可编程门阵列(FPGA)、专用集成电路(ASIC)或执行指令集的一或多个微处理器。指令和/或地址映射159可存储在驱动聚合器103的本地存储器单元中。作为替代,或以组合方式,指令和/或地址映射159可存储在连接到驱动接口155到157的组件固态驱动器(例如,107到109)中的一或多个中。
图4展示根据一个实施例实施于驱动聚合器103中的方法。举例来说,图4的方法可实施于图1、2和/或3中示出的驱动聚合器103中。
在框201处,驱动聚合器103接收来自主机系统111的命令。所述命令指定待由固态驱动器101执行的操作。驱动聚合器103针对主机系统111充当单个固态驱动器101的控制器。因此,从主机系统111到驱动聚合器的命令被配置成寻址到相同固态驱动器101。驱动聚合器103连接到多个固态驱动器107到109。
在框203处,驱动聚合器103将来自主机系统111的命令中的地址映射到连接到驱动聚合器103的多个固态驱动器107到109当中的固态驱动器(例如,107或109)中的地址。所述映射可基于来自主机系统111的命令中所指定的名称空间、预定地址映射方案和/或地址映射159。
在框205处,驱动聚合器103产生命令并将命令发射到固态驱动器(例如,107或109)。到固态驱动器(例如,107或109)的命令经配置成用于从主机系统111接收的命令中所指定的操作,以及用于固态驱动器(例如,107或109)中映射的地址。
举例来说,单个固态驱动器101的存储器容量中创建的名称空间中限定的逻辑地址可映射到经指派以实施名称空间的固态驱动器(例如,107或109)的存储器容量中创建的名称空间中限定的相同逻辑地址。
举例来说,由驱动聚合器103表示的单个固态驱动器101的整个存储器容量中限定的逻辑地址的空间可划分成区(例如,根据预定义方案)。不同区可映射到组件固态驱动器107到109的存储器容量中限定的逻辑地址的空间。
当主机系统111和驱动聚合器103之间的通信协议不同于驱动聚合器103和组件固态驱动器107到109之间的通信协议时,驱动聚合器103可根据通信协议执行命令转译。
当主机系统111和驱动聚合器103之间的通信协议与驱动聚合器103和组件固态驱动器107到109之间的通信协议相同时,在一些实施方案中(例如,当地址映射是基于名称空间时),驱动聚合器103可经配置以将命令无改变地转发到目标固态驱动器101。
举例来说,主机系统111和驱动聚合器103之间的通信协议以及驱动聚合器103和组件固态驱动器107到109之间的通信协议可各自为标准协议中的任一个,例如用于串行高级技术附件(SATA)接口的协议、用于外围组件互连高速(PCIe)接口的协议、用于通用串行总线(USB)接口的协议、用于光纤通道的协议等。
在框207处,驱动聚合器103从固态驱动器(例如,107或109)接收响应于到固态驱动器(例如,107或109)的命令的响应。
在框209处,驱动聚合器103基于来自固态驱动器(例如,107或109)的响应产生响应且将响应发射到主机系统111,其中到主机系统的响应是响应于来自主机系统的用于来自主机系统的命令中所指定的操作和地址的命令。
在一些实施方案中,驱动聚合器103执行协议转译以考虑到主机系统111的连接135和到组件固态驱动器(例如,109)的连接(例如,137)之间的协议差异。在其它实施方案中,驱动聚合器103执行针对到主机系统111的响应的进一步调整以考虑来自主机系统111的命令和到组件固态驱动器(例如,109)的命令之间的逻辑地址差异。
图5展示将虚拟化固态驱动器中接收的命令分布到固态驱动器的方法。举例来说,图5的方法可实施于具有图2中所示出的配置中的组件固态驱动器107到109的图1的虚拟化固态驱动器101中。举例来说,图5的方法可实施于图1、2和/或3中示出的驱动聚合器103中。
在框241处,驱动聚合器103将多个固态驱动器107到109虚拟化为连接到主机系统111的单个固态驱动器101。
在框243处,驱动聚合器103从主机系统111接收在虚拟化固态驱动器101的容量上创建名称空间的第一命令。
在框245处,驱动聚合器103针对名称空间从多个固态驱动器107到109选择固态驱动器(例如,107或109)。
在框247处,驱动聚合器103存储使名称空间与选定固态驱动器(例如,107或109)相关联的数据。
在框249处,驱动聚合器103将第一命令发射到选定固态驱动器(例如,107或109)以在选定固态驱动器(例如,107或109)中创建名称空间。
在框251处,驱动聚合器103从主机系统111接收识别名称空间的第二命令。
在框253处,驱动聚合器103基于名称空间与选定固态驱动器的关联将第二命令发射到选定固态驱动器(例如,107或109)。
如图5中将命令分布到组件固态驱动器107到109的技术可简化驱动聚合器103的转译逻辑153,且因此减小转译逻辑153的复杂性、能量消耗和成本。
在本文中所公开的一些实施例中,单个固态驱动器配置有允许多个主机系统存取固态驱动器的存储器/存储容量的多个物理主机接口。在一些实施方案中,主机系统可使用到固态驱动器的多个物理主机接口的多个并行和/或冗余连接来改进性能和/或可靠性。
图6展示连接到具有多个组件固态驱动器107到109的配置于印刷电路板131上的虚拟化单个固态驱动器101的多个主机系统111到112。
类似于图2中所示出的固态驱动器101,图6中示出的固态驱动器101可使用多个BGA SSD(例如,107)作为组件固态驱动器107到109来构造。每一组件固态驱动器(例如,107)具有控制器(例如,141),当组件固态驱动器(例如,107)直接连接到主机系统(例如,111)时,所述控制器能够在无驱动聚合器103的情况下直接服务于主机系统(例如,111)。
驱动聚合器103经配置以将所述组组件固态驱动器107到109的存储器/存储容量虚拟化为单个虚拟化固态驱动器101的存储器/存储容量,且虚拟化为用于主机系统111到112的均匀存储器/存储资源。
印刷电路板131配置有多组引脚133到134。每一组引脚(例如,133或134)足以建立主机系统(例如,111或112)和固态驱动器101之间的连接以便充分存取固态驱动器101。举例来说,主机系统(例如,111或112)可使用任何引脚组(例如,133或134)将命令或请求发射到固态驱动器101,且接收对于相应命令或请求的响应。
多组引脚133到134允许图6中的主机系统111到112分别使用并行连接135到136与固态驱动器101通信。举例来说,主机系统111可经由连接135和引脚133将命令/请求发送到固态驱动器101,同时主机系统112可经由另一连接136和替代的引脚134将类似命令/请求(或不同类型的命令/请求)发送到固态驱动器101。举例来说,主机系统111可与主机系统112将写入命令或读取命令发送到固态驱动器101同时发送写入命令。因此,主机系统111到112可作为整体共享由固态驱动器101提供的存储器/存储资源。
图6的驱动聚合器103可服务于来自每一主机系统(例如,111或112)的命令/请求,其方式类似于图2-5中示出以及关于图2-5描述的驱动聚合器103。
在一些例子中,当两个同时命令映射到相同组件固态驱动器(例如,107或109)以供执行时,图6的驱动聚合器103可进一步通过调度命令以供非同时执行来解决冲突,如下文进一步论述。
图7展示根据一个实施例具有多个主机接口151到152的驱动聚合器103。举例来说,图7的驱动聚合器103可以在图8的固态驱动器101中使用。
图7的转译逻辑153可基于地址映射159以类似于图3的转译逻辑153的方式将主机接口(例如,151或152)中接收的命令分布到驱动接口155到157。
此外,当在多个主机接口151到152中同时接收多个命令时,命令的操作可在一些情况下映射到不同驱动接口且在其它情况下映射到相同驱动接口。举例来说,当多个命令经配置以在与相同驱动接口155相关联的逻辑地址上操作时,发生冲突。所述冲突防止转译逻辑153使用驱动接口并行地同时执行命令。在此情形下,转译逻辑153可使用命令队列161来调度命令的循序执行以避免冲突。
当不存在冲突时,多个主机接口151到152中同时接收的多个命令可由分别连接到驱动接口155到157的单独的组件固态驱动器(例如,107到109)并行地执行。所述执行可在一些实施方案中经由针对组件固态驱动器(例如,107到109)产生相应命令或经由将所接收命令转发到相应驱动接口155到157来执行。
当存在冲突时,转译逻辑153可使用命令队列161来调度从不同主机接口151到152接收的冲突命令的循序执行。举例来说,当主机接口151和152中接收的两个命令根据地址映射159识别与驱动接口155相关联的相同名称空间(或逻辑地址区)时,转译逻辑153可在命令队列161中将命令中的一个列队,且将另一命令转发到驱动接口155(或在恰当协议和/或地址转译之后产生和发射用于另一命令的操作的相应命令)。随后,转译逻辑153可从命令队列161检索剩余命令且将其转发到驱动接口(或在恰当协议和/或地址转译之后产生和发射用于从命令队列检索的命令的操作的相应命令)。
在一些实施方案中,转译逻辑153不以从主机接口(例如,151或152)接收命令的次序支持从主机接口(例如,151或152)接收的命令的执行。转译逻辑153可经由命令队列布置命令的执行次序以增加命令到驱动接口155到157的并行发射,且因此改进具有驱动聚合器103的固态驱动器101的总体性能。
在一些例子中,主机接口151到152中的两者或两者以上可由相同主机系统使用以增加到驱动聚合器的通信带宽和/或改进到驱动聚合器的连接中的可靠性。
图8展示经由多个并行和/或冗余连接135到136连接到虚拟化单个固态驱动器101的主机系统111。举例来说,图8的虚拟化单个固态驱动器101可使用图7的驱动聚合器103以类似于图6的虚拟化单个固态驱动器101的方式实施。
在图8中,虚拟化单个固态驱动器101具有可以如图7中所示出的方式连接到单独的主机系统的多组引脚133到134。在图8的实例中,固态驱动器101的多组引脚133到134经由并行冗余连接连接到相同主机系统111。因此,主机系统111可使用连接中的任一个将特定命令发送到固态驱动器101(例如,将数据写入/存储在存储器单元中或从存储器单元读取/检索数据)。
举例来说,当连接(例如,135或136)中的一个损坏时,主机系统111可使用剩余连接(例如,136或135)来存取固态驱动器101的存储器/存储容量。因此,系统的可靠性得以改进。
此外,主机系统111可经由连接135到136将多个命令并行地发送到固态驱动器101以供执行。举例来说,主机系统111可在经由连接136发送写入命令时同时经由连接135发送读取命令。举例来说,主机系统111可针对存储到配置于组件固态驱动器107上的名称空间中的读取数据流使用连接135,同时针对从配置于另一组件固态驱动器109上的另一名称空间检索的写入数据流使用连接136。
图9展示经由多个主机接口151到152处理虚拟化固态驱动器101中接收的命令的方法。举例来说,图9的方法可实施于在图6或8中示出的配置中具有组件固态驱动器107到109的图1的虚拟化固态驱动器101中。举例来说,图9的方法可实施于图6、7和/或8中示出的驱动聚合器103中。此外,图9的方法可与图4和/或5的方法组合使用。
在框271处,具有至少两个主机接口(例如,151和152)的驱动聚合器103同时接收第一主机接口(例如,151)中的第一命令和第二主机接口(例如,152)中的第二命令。
在框273处,驱动聚合器103的转译逻辑153确定是否将在经由驱动聚合器103的驱动接口155到157连接到驱动聚合器103的多个固态驱动器107到109当中的相同固态驱动器(例如,107或109)中执行第一和第二命令。
在框275处,将在相同固态驱动器(例如,107或109)中执行第一和第二命令的确定导向框279;且将在不同固态驱动器(例如,107和109)中执行第一和第二命令的确定导向框279。
举例来说,对于主机接口(例如,151和152)中接收的第一和第二命令中的每一相应命令,转译逻辑153可确定待操作的存储器单元。举例来说,存储器单元可被操作以根据相应命令中所指定的逻辑地址用于读取数据或用于写入数据。当存储器单元确定为处于连接到驱动接口(例如,155或157)的组件固态驱动器(例如,107或109)中时,将在组件固态驱动器(例如,107或109)中执行相应命令。举例来说,可使用地址映射159基于相应命令中所指定的存储器单元的逻辑地址和/或逻辑地址的名称空间来进行组件固态驱动器(例如,107或109)的识别(例如,如上文结合图4和5所论述)。当每一命令映射到组件固态驱动器(例如,107或109)时,多个同时命令可在一些例子中映射到相同组件固态驱动器(例如,107或109),且在其它例子中不映射到任何相同组件固态驱动器(例如,107或109)。
在框277处,转译逻辑153与执行第一和第二命令的操作并行地将命令发射到多个固态驱动器107到109中的两个,因为第一和第二命令不在相同组件固态驱动器(例如,107或109)上操作。
在框279处,转译逻辑153调度命令用于循序发射到相同固态驱动器(例如,107或109)以执行第一和第二命令的操作,因为第一和第二命令在相同组件固态驱动器(例如,107或109)上操作。循序发射解决冲突。
类似于图4和5中的操作,并行地或依次发射到固态驱动器以执行第一和第二命令的操作的命令可涉及协议转译和地址转译。
举例来说,当主机连接135到136上的通信协议不同于驱动连接(例如,137)上的通信协议时,转译逻辑153从针对第一和第二命令的协议转译为到驱动接口155到157的命令。
举例来说,当主机连接135到136上的通信协议与驱动连接(例如,137)上的通信协议相同且地址映射159是基于名称空间和上面代管名称空间的组件驱动器之间的关联时,转译逻辑153可简单地将第一和第二命令作为相应命令转发到驱动接口155到157。
举例来说,当地址映射159用于将主机接口151到152中接收的命令中的LBA地址区映射到组件固态驱动器157到159中的不同LBA地址时,转译逻辑153可针对相应组件固态驱动器157到159用根据地址映射159计算的所映射LBA地址替换主机接口151到152中接收的命令中的LBA地址。
在本文中所公开的一些实施例中,具有多个组件固态驱动器的虚拟化单个固态驱动器经配置以使用到组件固态驱动器的多个并行命令来执行来自主机系统的命令。到组件固态驱动器的并行命令可用于增加存储器/存储装置存取速度,使得虚拟化单个固态驱动器可在数据缓冲要求降低的情况下以所要速度水平检索和/或存储数据。举例来说,所要速度水平可改进到接近或等于虚拟化单个固态驱动器和主机系统之间的通信带宽的水平。举例来说,当主机系统针对数据块存取虚拟化单个固态驱动器时,驱动聚合器可将块划分为子块或条带且将子块或条带重新组织为单独的组件固态驱动器中的块,以供经由驱动聚合器和组件固态驱动器之间的并行点到点连接并行执行。
图10示出根据一个实施例经配置以使用到组件固态驱动器的并行命令来执行来自主机系统的命令的虚拟化单个固态驱动器。
图10示出具有用于到主机系统(例如,111)的连接135的一组引脚133的实施例。通常,使用到多个组件固态驱动器的并行命令的技术还可在具有用于到一或多个主机系统(例如,111和/或112)的并行连接135到136的多组引脚133到134的图6或8的虚拟化单个固态驱动器101中使用。
在图10中,当驱动聚合器103从具有到主机系统(例如,111)的连接135的引脚133接收命令163时,驱动聚合器103可分别针对组件固态驱动器107到109产生一组命令167到169来使用组件固态驱动器107到109并行地执行命令。
举例来说,引脚133和主机系统(例如,111)之间的主机连接135上的数据传递可比组件固态驱动器(例如,107或109)的输入/输出操作快。举例来说,主机连接135连接允许在一定时间量内传递数据块;且组件固态驱动器(例如,107或109)可花费所述时间量的倍数来检索或写入数据块。因此,如果将在组件固态驱动器(例如,107或109)中执行检索或存储数据块的命令,则用于执行命令的时延是所述时间量的倍数。然而,当数据块分布于组件固态驱动器(例如,107到109)之间时,组件固态驱动器(例如,107或109)中的每一个可经配置以检索或存储数据块的分数。因此,用于执行命令的时延可减小到组件固态驱动器(例如,107或109)检索或存储数据块的时延的分数。
可选地,驱动聚合器103经配置以使用所有组件固态驱动器来最大化执行来自主机连接135的命令163的速度。
或者,驱动聚合器103可经配置以使用组件固态驱动器的子组来针对特定范围的逻辑地址定制执行来自主机连接135的命令163的速度。
组件固态驱动器107到109可具有用于读取数据的优选大小和/或用于写入数据的优选大小。举例来说,当使用集成电路裸片上的NAND存储器单元实施组件固态驱动器107到109中的存储器单元时,存储器单元可布置于存储器单元页和存储器单元块的结构中。存储器单元块可具有多个页。页是可编程(例如,被写入到)的存储器单元的最小单位。页大小可取决于个别存储器单元的数据编程模式和/或将数据编程到页中的技术。驱动聚合器103可以优选大小(例如,组件固态驱动器107到109的页大小)的倍数的粒度组织主机连接135上传递的数据,使得可根据组件固态驱动器107到109的优选输入/输出大小针对组件固态驱动器107到109分割命令的数据。
图11示出经配置以响应于来自主机系统的命令产生并行命令的驱动聚合器。
图11示出具有用于到主机系统(例如,111)的连接135的一个主机接口151的实施例。通常,使用到多个组件固态驱动器的并行命令的技术还可在具有用于到一或多个主机系统(例如,111和/或112)的并行连接135到136的多组引脚133到134的图7的驱动聚合器103中使用。
在图11中,转译逻辑153经配置以在命令队列161中对来自主机连接135的命令(例如,163)列队,以重新组织列队的命令以产生发射到驱动接口155到157的并行命令167到169。
举例来说,命令队列161中的命令中所指定的逻辑地址的块可划分成子块用于地址映射159。因此,由主机系统(例如,111)指定的逻辑地址的块的数据可重新映射到连接到驱动接口155到157的组件固态驱动器107到109中的单独的块中。并行命令167到169根据由主机系统(例如,111)指定的命令163配置,但针对命令163的数据的子块配置。
在一个实施方案中,转译逻辑153经配置以根据组件固态驱动器107到109中的编程数据的优选大小在尽可能多的组件固态驱动器107到109当中分布数据。举例来说,命令队列161中的一或多个命令可经识别以在其中主机系统指定数据的位置的逻辑地址空间的邻接区中写入数据。当邻接区的数据大小大于组件固态驱动器107到109的优选数据编程大小时,转译逻辑153根据优选数据编程大小将邻接区划分为多个块,且不同块可经由地址映射159映射到不同驱动接口155到157。随后,可使用根据地址映射159针对相应组件固态驱动器107到109产生的多个命令执行从邻接区检索数据。
在一个实施方案中,当在主机接口中接收创建名称空间的命令时,转译逻辑153经配置以根据分别连接到驱动接口155到157的组件固态驱动器107到109的优选数据编程大小将名称空间划分为块。转译逻辑在组件固态驱动器107到109中产生名称空间,且配置地址映射159以将如由主机系统(例如,111)识别的名称空间中的邻近块映射到组件固态驱动器107到109中的单独的组件固态驱动器中的块,如图12中所示出。
图12示出来自主机系统(例如,111)中所指定的名称空间191的块到组件固态驱动器中的名称空间193到195中的块的映射。
在图12中,主机名称空间191中的块171到172在名称空间191中为邻接的。主机系统(例如,111)识别主机名称空间191作为指定用以存储或检索数据的位置的方式。名称空间191中的逻辑地址可划分成块,例如171…172和173、…、174。
创建组件名称空间193到195以使用分别连接到驱动接口155到157的组件固态驱动器107到109实施主机名称空间191。邻接块171到172分别分离成不同组件名称空间193到195。类似地,下一组邻接块173到174也分别分离成不同组件名称空间193到195。在主机名称空间191中,块171和173不彼此邻近。然而,它们在组件名称空间193中映射到邻接块171和173。类似地,块172和174不彼此邻近,而是映射为在组件名称空间195中为邻接的。
当主机名称空间191中的逻辑地址的块以如图12中所示出的方式映射到组件名称空间193到195时,来自主机系统(例如,111)的在主机名称空间191中的一组邻接块上操作的一或多个命令可经由在组件固态驱动器107到109中的块上操作的一组并行命令来执行。
图12示出实例,其中对于其中主机名称空间191中的数据的邻接块被频繁地一起存取的数据存取模式来说,性能改进是最佳的。
或者,主机系统(例如,111)可指示被频繁地一起存取的块使得转译逻辑153将所述块分布到不同组件固态驱动器107到109中。举例来说,主机系统(例如,111)可指示非邻接块171和173被频繁地一起使用。举例来说,用于在名称空间191中写入块171和173的命令可发射到主机接口151,且在命令队列161中彼此靠近地列队。作为响应,转译逻辑经配置以将块171和173映射到单独的组件名称空间中。
在一些实施方案中,转译逻辑经配置以基于存取模式和/或历史识别被频繁地一起使用的块,且因此将所述块重新映射到单独的组件空间。
图13-14示出地址映射的实例。举例来说,图13-14中示出的地址映射154可以在图11的驱动聚合器103中使用。
在图13中,主机名称空间181映射到多个驱动接口155到157。主机名称空间181中的逻辑地址的邻接块可根据预定规则(例如,如图12中所示出)映射到单独的组件名称空间以允许存取待经由连接到驱动接口155到157的多个组件固态驱动器的并行操作实施的主机名称空间181中的邻接块。
在图13中,主机名称空间183映射到一个驱动接口157。因此,不会经由多个组件固态驱动器中的并行执行加速对主机名称空间183的存取。
在图14中,由主机系统(例如,111)使用的逻辑地址空间中的地址区189映射到分别连接到驱动接口155到157的组件固态驱动器107到109的单独的地址区185到187。因此,可在地址区185到187中经由组件固态驱动器107到109中的并行执行加速对地址区189的存取。
举例来说,地址区189可以是主机名称空间191;且地址区185到187可以是组件名称空间193到195,其中主机名称空间191的块以图12中示出的方式映射到组件名称空间193到195中。
举例来说,地址区189可以是主机名称空间191中的一组块;且地址区185到187可以是组件名称空间193到195中的相应块。
图15展示使用多个组件固态驱动器执行来自主机系统的命令的方法。举例来说,图15的方法可实施于具有图2、6、8或10中所示出的配置中的组件固态驱动器107到109的图1的虚拟化固态驱动器101中。举例来说,图15的方法可实施于具有图12、13和/或14中示出的地址映射的图2-3、6-8、10和/或11中示出的驱动聚合器103中。此外,图15的方法可与图4、5、和/或9的方法组合使用。
在框281处,驱动聚合器103经由至少一个主机接口151接收经配置以指示驱动聚合器103执行操作(例如,在逻辑地址处检索数据或存储数据)的一或多个第一命令(例如,164)。
在框283处,驱动聚合器103将所述一或多个第一命令(例如,164)中识别的逻辑地址映射到分别在多个组件固态驱动器(例如,107到109)中限定的多个逻辑地址群组中。
在框285处,驱动聚合器103根据所述一或多个第一命令(例如,164)以及逻辑地址和多个逻辑地址群组之间的映射创建多个第二命令167到169。第二命令中的每一个经配置以针对相应逻辑地址群组执行相应组件固态驱动器中的操作。
在框287处,驱动聚合器103经由到多个组件固态驱动器(例如,107到109)的并行连接发射执行所述一或多个第一命令的第二命令。
在框289处,多个组件固态驱动器(例如,107到109)根据第二命令分别执行多个逻辑地址群组处的操作。
举例来说,多个组件固态驱动器(例如,107到109)在经由驱动聚合器103和组件固态驱动器107到109之间的并行连接(例如,137)同时接收第二命令之后同时执行第二命令。并行连接(例如,137)中的每一个是根据主机系统和固态驱动器之间的通信协议的点对点串行连接。主机接口151还根据主机系统和固态驱动器之间的通信协议来配置。用于主机接口151和驱动接口155到157的通信协议可以相同或不同。可用于主机接口和/或驱动接口155到157的协议的实例包含用于串行高级技术附件(SATA)接口的协议、用于外围组件互连高速(PCIe)接口的协议、用于通用串行总线(USB)接口的协议,以及用于光纤通道的协议。
在一些实施方案中,逻辑地址在主机接口151中接收的单个命令中识别且随后映射到多个逻辑地址群组。第二命令实施主机接口151中接收的单个命令。在其它实施方案中,预先确定逻辑地址到多个逻辑地址群组中的映射(例如,在接收存储数据的所述一或多个第一命令之前)。在进一步实施方案中,逻辑地址到多个逻辑地址群组中的映射是基于所接收的存储数据的所述一或多个第一命令,或基于确定逻辑地址被频繁地一起使用。举例来说,转译逻辑153可确定在其中限定逻辑地址的逻辑地址空间中连接到所述一或多个主机接口(例如,151和/或152)的一或多个主机系统(例如,111和/或112)的存取模式。所述存取模式可用于确定逻辑地址被频繁地一起使用,但逻辑地址在逻辑地址空间中可以是不邻接的。逻辑地址映射可根据组件固态驱动器的优选输入输出大小来组织,例如经配置以一起编程的存储器单元页的大小。
上文(例如,结合图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.根据权利要求3所述的方法,其中映射到所述多个逻辑地址群组的所述逻辑地址是在所述主机接口中接收的单个命令中识别。
5.根据权利要求4所述的方法,其中所述第二命令实施所述主机接口中接收的所述单个命令。
6.根据权利要求1所述的方法,其中所述逻辑地址到分别在所述多个组件固态驱动器中的所述多个逻辑地址群组中的所述映射在所述接收存储数据的所述一或多个第一命令之前预先确定。
7.根据权利要求1所述的方法,其中所述逻辑地址到分别在所述多个组件固态驱动器中的所述多个逻辑地址群组中的所述映射是基于存储数据的所述一或多个第一命令。
8.根据权利要求1所述的方法,其进一步包括:
作出所述逻辑地址被频繁地一起使用的确定,其中所述逻辑地址到分别在所述多个组件固态驱动器中的所述多个逻辑地址群组中的所述映射是基于所述确定。
9.根据权利要求8所述的方法,其中所述确定是基于在其中限定所述逻辑地址的逻辑地址空间中连接到所述一或多个主机接口的一或多个主机系统的存取模式。
10.一种固态驱动器,其包括:
驱动聚合器,其具有至少一个主机接口;以及
多个组件固态驱动器,其连接到所述驱动聚合器,所述组件固态驱动器中的每一个具有能够处理来自主机系统的命令的控制器;
其中所述驱动聚合器经配置以:
接收经配置以指示所述驱动聚合器执行操作的一或多个第一命令;
将所述一或多个第一命令中识别的逻辑地址映射到分别在连接到所述驱动聚合器的多个组件固态驱动器中限定的多个逻辑地址群组中;
由所述驱动聚合器根据所述一或多个第一命令以及所述一或多个第一命令中识别的所述逻辑地址和分别在所述多个组件固态驱动器中限定的所述多个逻辑地址群组之间的所述映射产生多个第二命令,其中所述第二命令中的每一个经配置以针对相应逻辑地址群组在相应组件固态驱动器中执行所述操作;以及
经由到所述多个组件固态驱动器的并行连接从所述驱动聚合器发射所述第二命令以执行所述一或多个第一命令。
11.根据权利要求10所述的固态驱动器,其进一步包括:
印刷电路板,其具有被配置成用于经由计算机总线到主机系统的连接的一组引脚;
其中所述驱动聚合器和所述组件固态驱动器安装在所述印刷电路板上。
12.根据权利要求11所述的固态驱动器,其中所述组件固态驱动器中的每一个集成于具有球状栅格阵列BGA形状因数的集成电路封装内。
13.根据权利要求12所述的固态驱动器,其中所述逻辑地址根据所述组件固态驱动器的优选输入输出大小在块中映射到所述逻辑地址群组中。
14.根据权利要求13所述的固态驱动器,其中所述优选输入输出大小为经配置为一起编程的存储器单元页的大小。
15.根据权利要求14所述的固态驱动器,其中所述主机接口根据主机系统和固态驱动器之间的第一通信协议来配置;所述驱动聚合器经配置以根据主机系统和固态驱动器之间的第二通信协议与所述组件固态驱动器通信;且所述第一协议和所述第二协议中的每一个是以下中的一个:
用于串行高级技术附件SATA接口的协议;
用于外围组件互连高速PCIe接口的协议;
用于通用串行总线USB接口的协议;以及
用于光纤通道的协议。
16.一种驱动器聚合器,其包括:
主机接口,其经配置以与主机系统通信;
多个驱动接口,其分别与多个组件固态驱动器通信;以及
转译逻辑,其耦合在所述主机接口和所述多个驱动接口之间;
其中所述转译逻辑经配置以将所述主机接口中接收的第一命令中识别的逻辑地址映射到分别与所述多个驱动接口中的多个接口相关联的多个逻辑地址群组中,所述第一命令识别操作;且
其中所述转译逻辑经配置以根据所述第一命令以及所述逻辑地址和所述多个逻辑地址群组之间的所述映射产生多个第二命令,且将所述第二命令同时发射到所述多个接口来执行所述第一命令。
17.根据权利要求16所述的驱动器聚合器,其进一步包括:
集成电路封装,其中所述主机接口、所述转译逻辑和所述多个驱动接口封装于所述集成电路封装中;
其中所述转译逻辑包含现场可编程门阵列FPGA或专用集成电路ASIC。
18.根据权利要求17所述的驱动器聚合器,其中所述主机接口经配置以实施主机系统和固态驱动器之间的点对点串行连接;且所述多个驱动接口中的每一个经配置以实施主机系统和固态驱动器之间的点对点串行连接。
19.根据权利要求18所述的驱动器聚合器,其中所述逻辑地址在由所述主机系统使用的地址空间中为邻接的。
20.根据权利要求19所述的驱动器聚合器,其中所述地址空间中的至少一些非邻接地址映射为所述多个组件固态驱动器当中的组件固态驱动器中的邻接逻辑地址。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/452,372 US10942881B2 (en) | 2019-06-25 | 2019-06-25 | Parallel operations in aggregated and virtualized solid state drives |
US16/452,372 | 2019-06-25 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112130754A true CN112130754A (zh) | 2020-12-25 |
CN112130754B CN112130754B (zh) | 2024-02-02 |
Family
ID=73851792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010580900.3A Active CN112130754B (zh) | 2019-06-25 | 2020-06-23 | 聚合和虚拟化固态驱动器中的并行操作 |
Country Status (2)
Country | Link |
---|---|
US (2) | US10942881B2 (zh) |
CN (1) | CN112130754B (zh) |
Families Citing this family (7)
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 |
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 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6654941B1 (en) * | 2001-11-30 | 2003-11-25 | Cypress Semiconductor Corp. | Bus I/O placement guidance |
US20160124847A1 (en) * | 2014-11-03 | 2016-05-05 | Pavilion Data Systems, Inc. | Scheduled garbage collection for solid state storage devices |
CN106708424A (zh) * | 2015-11-13 | 2017-05-24 | 三星电子株式会社 | 对用户数据执行选择性底层暴露映射的设备和方法 |
CN107710140A (zh) * | 2015-11-27 | 2018-02-16 | 株式会社日立制作所 | 存储系统 |
Family Cites Families (53)
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 |
JP4438457B2 (ja) | 2003-05-28 | 2010-03-24 | 株式会社日立製作所 | 記憶領域割当方法、システム及び仮想化装置 |
US7119433B2 (en) * | 2004-06-16 | 2006-10-10 | International Business Machines Corporation | Packaging for enhanced thermal and structural performance of electronic chip modules |
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 | 주식회사 심텍 | 솔리드스테이트드라이브 |
KR101637481B1 (ko) | 2009-04-10 | 2016-07-07 | 삼성전자주식회사 | 솔리드 스테이트 드라이브, 솔리드 스테이트 드라이브 장착 장치 및 컴퓨팅 시스템 |
CN101859588B (zh) | 2009-04-10 | 2013-08-28 | 鸿富锦精密工业(深圳)有限公司 | 硬盘架 |
KR101623119B1 (ko) | 2010-02-01 | 2016-05-20 | 삼성전자주식회사 | 솔리드 스테이트 드라이브의 에러 제어 방법 |
CN101833989A (zh) | 2010-05-27 | 2010-09-15 | 华为技术有限公司 | 多接口固态硬盘及其处理方法和系统 |
CN102411982B (zh) | 2010-09-25 | 2014-12-10 | 杭州华三通信技术有限公司 | 内存控制器及命令控制方法 |
US8688926B2 (en) | 2010-10-10 | 2014-04-01 | Liqid Inc. | Systems and methods for optimizing data storage among a plurality of solid state memory subsystems |
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 |
US8694724B1 (en) | 2011-09-06 | 2014-04-08 | Emc Corporation | Managing data storage by provisioning cache as a virtual device |
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 | 株式会社日立製作所 | 管理装置及び管理方法 |
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 |
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 |
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 |
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 |
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 |
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 |
US10942846B2 (en) | 2019-06-25 | 2021-03-09 | Micron Technology, Inc. | Aggregated and virtualized solid state drives accessed via multiple logical address spaces |
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 |
-
2019
- 2019-06-25 US US16/452,372 patent/US10942881B2/en active Active
-
2020
- 2020-06-23 CN CN202010580900.3A patent/CN112130754B/zh active Active
-
2021
- 2021-02-19 US US17/180,623 patent/US11354262B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6654941B1 (en) * | 2001-11-30 | 2003-11-25 | Cypress Semiconductor Corp. | Bus I/O placement guidance |
US20160124847A1 (en) * | 2014-11-03 | 2016-05-05 | Pavilion Data Systems, Inc. | Scheduled garbage collection for solid state storage devices |
CN106708424A (zh) * | 2015-11-13 | 2017-05-24 | 三星电子株式会社 | 对用户数据执行选择性底层暴露映射的设备和方法 |
CN107710140A (zh) * | 2015-11-27 | 2018-02-16 | 株式会社日立制作所 | 存储系统 |
Also Published As
Publication number | Publication date |
---|---|
US11354262B2 (en) | 2022-06-07 |
US10942881B2 (en) | 2021-03-09 |
CN112130754B (zh) | 2024-02-02 |
US20210173803A1 (en) | 2021-06-10 |
US20200409891A1 (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) | 聚合和虚拟化固态驱动器中的存取优化 | |
US11706317B2 (en) | Optimization of data access and communication in memory systems | |
CN112130755B (zh) | 具有多个主机接口的聚合和虚拟化固态驱动器 | |
CN112130754B (zh) | 聚合和虚拟化固态驱动器中的并行操作 | |
CN112131139B (zh) | 固态驱动器的聚合和虚拟化 | |
CN112470113A (zh) | 存储器系统中的隔离性能域 | |
CN112805676B (zh) | 基于数据总线模式对读取操作和写入操作的调度 | |
US11782643B2 (en) | Partial execution of a write command from a host system | |
CN114631076A (zh) | 加载命令的生存时间 | |
CN116643690A (zh) | 存储器子系统处的主机限定区群组配置 | |
US11726716B2 (en) | Internal commands for access operations | |
US20220404979A1 (en) | Managing queues of a memory sub-system | |
US20240069738A1 (en) | Accessing memory devices via switchable channels |
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 |