CN103176746B - 用于数据存储系统中增强的控制器架构的系统和方法 - Google Patents
用于数据存储系统中增强的控制器架构的系统和方法 Download PDFInfo
- Publication number
- CN103176746B CN103176746B CN201210328166.7A CN201210328166A CN103176746B CN 103176746 B CN103176746 B CN 103176746B CN 201210328166 A CN201210328166 A CN 201210328166A CN 103176746 B CN103176746 B CN 103176746B
- Authority
- CN
- China
- Prior art keywords
- controller
- data
- order
- bridge
- queue
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17337—Direct connection machines, e.g. completely connected computers, point to point communication networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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/0658—Controller construction 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/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/0673—Single storage device
- G06F3/068—Hybrid storage device
-
- 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
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)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Bus Control (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明涉及用于数据存储系统中增强的控制器架构的系统和方法。本发明公开一种控制器架构,其通过例如PCIe的高级别、高速接口将控制器与NVM(非易失性存储器)存储系统配对。在一个实施例中,NVM存储系统包括通过高级别接口与控制器通信并且通过接口(例如,ONFI)控制NVM的桥。给控制器提供在NVM的单独元件上的一组丰富的物理控制级别。在一个实施例中,在支持高级功能,例如映射、垃圾回收、损耗均衡等的更高功率处理器中实施控制器。在一个实施例中,在更低功率处理器中实施桥并且桥完成基本的信号处理、通道管理、基本错误纠正功能等。这种分工给控制器提供了通过快速、高级别接口对NVM的物理控制,从而导致控制器在页级别和块级别两者管理NVM。
Description
技术领域
本公开涉及包括但不限于闪存驱动器的非易失性存储系统。尤其是,本公开涉及用于固态驱动器中增强的控制器架构的系统和方法。
背景技术
存在用于控制闪存介质的各种控制器架构。开放式NAND闪存接口(ONFI)是规定快闪存储器制造商应当支持的某些公共命令集的标准接口。ONFI支持某些低级别的、基本的I/O操作,这些操作能够包括,例如页写入/读取和块擦除。不过,有效的闪存介质管理常常涉及例如逻辑-物理映射、垃圾回收和损耗均衡的高级别且可能处理密集的若干功能。这些功能超出ONFI的范围,因此,有效的控制器架构在给主机提供高水平数据吞吐性能的时候,需要处理这些需求。
发明内容
附图说明
现参考下列绘图具体描述体现本发明各种特征的系统和方法,其中:
图1A-1C示出几个固态驱动器(SSD)控制器架构。
图1D是示出根据一个实施例的控制器架构的框图。
图2A和2B是示出根据某些实施例的控制器架构的框图。
图3是示出根据一个实施例的、在控制器与桥装置之间的命令处理组件的框图。
图4是示出根据一个实施例的数据处理序列的流程图。
图5示出示例数据端口以及每个端口如何与不同命令标签相对应。
图6示出示例无序命令以及它们正在访问的闪存管芯。
具体实施方式
虽然描述了本发明某些实施例,但是仅仅呈现这些实施例作为例子,不是为了限制本发明的范围。实际上,本文描述的新颖方法和系统可以以各种其他形式体现出来。而且,可以对本文描述的方法和系统做出各种删减、替换和改变,而不脱离本发明的精神。
I.控制器/桥设计
图1A-1C示出若干SSD控制器架构。图1A示出包括ONFI(开放式NAND闪存接口)接口的SSD控制器。ONFI接口是提供基本命令支持,以使例如主机控制器的外部组件能够控制NAND中的操作的低级别并行I/O接口。图1A示出典型装备,其中例如计算机的主机装置包括SSD控制器,SSD控制器又包括用于控制支持ONFI的非易失性存储器(NVM)单元的ONFI接口。ONFI接口提供对操作的某个基本控制级别,例如页编程、页读取、块擦除等。ONFI的现行版本支持每管芯和平面一个命令,并且通过例如“读取多个”和“写入多个”命令的命令提供某些基本队列能力。不过,这可能没有不同命令类型的混合。此外,命令是被批处理的,这意味着必须在接受更多命令前,完全清除队列。这种方式的SSD控制器会执行高级别NVM管理功能,例如垃圾回收、损耗均衡、映射等。
图1B示出替代途径,其中NVM与执行NAND某级别的基本通道管理和信号处理的桥控制器/装置耦合。桥可以给SSD控制器提供ONFI或ONFI等价的接口。不过,这个接口可以从标准ONFI接口修改而来,并且可以支持例如支持多命令的附加功能。在这样的设计中,SSD控制器仍然可以执行例如垃圾回收的高级别NAND管理功能,并且通过ONFI或ONFI等价的接口与桥通信。
图1C示出NVM与存储系统中的桥耦合的第三种途径。在这个途径中,桥执行例如垃圾回收、损耗均衡和映射的高级别NVM管理功能,以及例如通道管理和信号处理的低级别功能。存储系统通过例如eMMC或UFS的高级别I/O接口与主机装置耦合。这是在很多存储卡产品中可见的常用设计。主机利用逻辑寻址给存储系统发送命令(例如读取和写入命令)。可支持例如高级命令排队、健康报告和详细错误报告的特征。
II系统概述
图1D是示出根据本发明某些实施例的控制器设计架构的框图。图1D示出执行例如垃圾回收、损耗均衡等高级别NVM管理功能的SSD控制器。在一个实施例中,SSD控制器通过例如PCIe和eMMC的高级别、高速接口与NVM存储系统耦合。代替PCIe或eMMC,可以扩展其他标准和/或专有接口用作这个总线接口。一个实施例中的NVM存储系统包括通过高级别、高速接口与SSD控制器通信并且以例如ONFI的低级别接口控制NAND存储器的桥。如图所示,可以通过高级别接口支持例如高级命令排队、健康报告以及详细错误报告的附加特征。
不像上述的设计,这种架构中的控制器通过例如PCIe的复杂快速接口,提供对于NVM的单独元件的一组丰富的物理控制级别(例如,页级别控制)。应当注意到,在许多控制器-桥类型设计中,由于功率问题,桥通常以降低的性能在处理器上实施,而控制器通常在面临更少功率关注的环境中。若处理器密集功能迁移到更高执行能力的控制器,那么就能够减少总体延迟。因此,在某些实施例中,控制器通常在能够支持高级NVM管理功能的更高功率处理器中实施。另一方面,在某些实施例中,桥在较低功率处理器中实施以最小化整体NVM存储模块/单元的能量消耗。结果,桥可以执行NVM的基本信号处理和通道管理,以及某些基本错误纠正功能和XOR(异或)奇偶校验累积。在某些实施例中,控制器执行逻辑到物理的地址映射、垃圾回收、损耗均衡、奇偶校验管理(通过桥中奇偶校验累积器的控制)、RAID条化等。这种分工仍然给控制器提供对NVM的直接、物理控制(例如,页级别),导致控制器通过例如PCIe的快速、高级别接口以页级别和块级别两种级别管理NVM。在一个实施例中的控制器还管理例如桥中XOR奇偶校验累加器的其他综合服务。
在一个实施例中,该架构的管理任务划分的另一个优势涉及NVM行业的趋势。由于NVM的最常见类型,例如MLC(多级存储单元)NAND持续进化而以降低持久性的代价提供更高容量,所以NVM的物理管理变得越来越重要。例如,当今具有5000P/E(编程/擦除)-次数持久性的MLC产品正被具有1500-2000P/E-次数持久性的下一代MLC产品取代。通常,桥设计师最能理解NVM的物理特性以及如何通过实施各种持久性加强/管理功能来最佳延长其寿命。由于这个快速变化的技术前景,并且因为每个单独的NVM制造商会要求不同的这种持久性加强/管理功能,所以这些功能会持续要求微调以适应NVM产品不同且持续不断的变化。因此,某些实施例的架构通过隔离桥中的这些功能和允许控制器设计师专注于高级别数据管理功能而提供了其分工的另一个优势。换句话说,既然控制器和桥具有不同的设计约束和优先级,架构内的每个可以根据不同方案和方式进行升级,而无需整体的完全重新设计。
利用该设计提供的减少的延迟,桥可以与较便宜的介质配对。例如,桥可以与MLCNAND配对而不是与SLC(单级存储单元)NAND配对,同时仍然满足客户要求的性能指标。另外,在某些实施例中,上述控制器-桥设计能够被调整用于包括快闪存储器和硬盘组件的混合驱动器中。在那些实施例中,控制器除了管理通过桥对NVM的数据访问,还会管理对一个或更多硬盘驱动器的数据访问。将利用各种附图和本发明实施例的描述在下面进一步说明这种设计的附加特征。
II.A控制器-桥实施
图2A示出之前在图1D中介绍的控制器-桥架构的实施例。如图所示,固态非易失性存储系统120连接于主机系统110。主机系统110利用存储接口112与非易失性存储系统120通信。主机存储接口112能够利用任何已知的通信协议,例如SATA、SCSI、SAS、USB、光纤通道、PCIe、eMMC等与非易失性存储系统120通信。
在一个实施例中,非易失性存储系统120包括控制器130和NVM存储模块150。在一个实施例中的控制器130经由例如PCIe的高级别接口与NVM存储模块150内的桥装置152通信(通过总线逻辑/接口140)。PCIe在一个实施例中被使用,因为其定义了丰富的以包为基础的路由和服务质量(QOS)基础设施并提供了高速接口。控制器可以包括控制数据功能的处理器136,以及核可以耦合于静态存储器132和动态存储器134。处理器130还可以包括数据通路138,用于处理/转移和来自主机系统110的数据访问命令相关的数据。在一个实施例中,控制器130在SoC(芯片上系统)上实施,尽管本领域的技术人员会认为其他硬件/固件实施也是可能的。
在一个实施例中,PCIe的使用意味着分配给装置功能的地址范围被用于构造上和装置内两者的包路由。在一个实施例中,PCIe事务层将包递送到由固件读取的内部寄存器接口。高级装置常常将到来的包引导到内部RAM或硬件加速模块。
在一个实施例中的桥装置152包括用于通过高级别接口总线与总线逻辑/接口140(在控制器130上)通信的总线逻辑/接口154。在桥的另一端,桥装置152包括低级别接口158,例如用于与NVM存储器160(例如,NAND)通信的ONFI,NVM存储器可以包括若干存储装置,例如闪存管芯162、164、166和168。虽然在这个实施例中示出ONFI,但是可以使用其他合适的快闪存储器接口。在另一个实施例中,桥可以使用不同接口,例如Toggle(双态元件)或专有接口,从而与NVM存储器160通信或给存储器发送引导命令。
II.B分工
划分NVM管理功能的优势在节II中概述。具体地,该架构减少延迟和处理各种设计约束,同时允许控制器和桥设计师优化架构的其相应部分。在一个实施例中,控制器负责块级别管理、奇偶校验条布局、垃圾回收、损耗均衡、处理读取干扰和错误恢复。在一个实施例中,桥装置管理原始NVM闪存接口。其还可以提供以下功能中的一个或更多:命令排队、错误纠正、XOR奇偶校验累加器、数据保护以及提高块持久性。在一个实施例中,桥与控制器之间的接口是轻的、基于PCIe的数据和管理接口。控制器使用接口控制命令配置桥和数据命令,从而访问NVM介质。
还应当注意的是,控制器使用物理页寻址替代在现有控制器-桥设计中常见的逻辑页寻址。桥可以识别页、块、平面与管芯之间的关系。这给控制器提供创建RAID条布局、执行数据移动和处理坏块的最大灵活性。这些细节从桥中提取。当使用直接寻址时,控制器在命令标题中仅仅给桥提供一组直接页地址。在一个实施例中,页不是必然连续的,或者甚至不必在相同块中。在多数情况下,控制器会跨越多个平面和多个管芯访问页,以便最大化并发的硬件访问。
II.C混合应用
控制器-桥架构的某些实施例能适应于其他用途。例如,图2B示出混合驱动器122中控制器架构的使用,除了上述的NVM和桥组件以外,混合驱动器122还包括具有磁介质184,例如旋转硬盘驱动器(HDD)的磁存储模块180。在这个实施例中的控制器130会因此管理到NVM存储模块150和磁存储模块180两者的数据访问。在一个实施例中,不同于接口140(其连接到NVM)的接口可用于将控制器130连接到磁存储模块180。
混合应用示出控制器架构的额外优势。混合驱动器通常包括具有其自身内部控制器的SSD,其自身内部控制器具有映射表,以在SSD内寻址NVM。虽然混合(控制器)的HDD部分通常是直接寻址的,但是混合控制器使用特殊映射表以确定数据是否在SSD或HDD中。由于有两个映射表并且有与维护每个表有关的明显成本,在访问混合驱动器的SSD部分中的数据的情况下,使用这个特殊映射表与内部SSD映射表导致双重开销。
相反,因为现有架构中的控制器130在块级别与页级别两种级别管理NVM和磁介质,其能够提供遍及单个位置中的闪存和磁介质的一致地址管理。因此,不需要具有上述的两个表。这具有减少双重表查找和涉及维护分开的映射表的所有相关成本/复杂性的优势。直接页寻址被用于统一映射方案中。
另外,在混合应用中,即使NVM具有大量坏块(例如,50%),其仍然能够提供有效的性能加强。在一个混合实施例中,控制器还具有高效地址间隙处理能力(对于由坏块导致的间隙)。在替代的混合实施例中,统一的寻址方案不是必然要求桥与控制器一起工作。控制器可能会使用原始NVM接口(例如,ONFI)访问NVM。
III.数据命令处理
图3是示出根据一个实施例的、控制器与桥装置之间的命令处理组件的框图。利用PCIe接口(或其等价接口)的构造,控制器和桥两者在能够被其他装置访问的其相应装置存储器中实施其自己的地址空间(210,250)。在一个实施例中,通过将消息写入位于地址空间内的某些地址内的队列来传递消息,并且地址存储在配置和状态寄存器252中。使用单独的队列处理数据访问命令和控制器与桥之间的通信将在下面进一步描述。
III.A命令和管理队列-桥
在一个实施例中,控制器发送数据访问命令到桥装置中的命令队列262。这通过控制器发送数据命令消息到桥来执行(通过写入到命令队列BAR(基址寄存器))。在一个实施例中,命令队列具有用于16个消息的空间,虽然在其他实施例中消息的数量可以改变。命令队列能够以若干方式实施。一个选项是在控制器仅仅写入到固定偏移的情况下的完全硬件自动化。替代地,其可以利用环形缓冲器或基于阵列的链表在存储器中实施。在一个实施例中,实施必须允许有效的插入和具有最小总线流量的通告。在一个实施例中,控制器基于桥已经发送回的状态响应(例如,到控制器的完成队列的消息指示命令完成)的数量知道当前队列长度。需要注意的是数据命令远远小于实际数据。一旦桥发送回完成状态或错误报告,则认为队列中给定的记录间隙是可用的。
在图3示出的实施例中,桥侧250还实施配置和状态寄存器(CSR)252以及管理队列258,管理队列258用于从控制器接收和命令队列操作相关的命令消息(例如,用于暂停命令队列的消息)或通常关于桥的操作的管理消息。管理队列258可以以类似于命令队列的方式实施,例如通过完全硬件自动化或环形缓冲器的方式。而且,像命令队列一样,管理队列可配置用于有效插入和具有最小总线流量的通告。像命令队列一样,控制器可以基于来自桥的响应导出当前队列长度和可用间隙。
III.B状态队列-控制器
在控制器侧210上的是在数据地址212的一组数据端口214和若干状态队列。在一个实施例中,状态队列包括错误队列218、信息队列222以及命令完成队列226。这些队列负责从桥接收关于命令处理以及桥和NVM的当前状态的消息。关于在这些队列上操作的附加细节会在下面节V和VI中进一步描述。
III.C控制器与桥之间的通信
在一个实施例中,控制器与桥之间的通信通过PCIe协议堆栈230实现,其中PCIe协议堆栈230包括在两侧上的若干层,这些层包括事务层(232,242)、数据链路层(234,240)以及物理层(236,238)。尽管在本公开中,使用PCIe示出控制器和桥的操作,但是也可以使用其他类似的标准。
PCIe事务层基于在其虚拟通道(VC)缓冲空间中剩下多少空间来分配传输信用。根据PCIe规范,装置必须实施VC0,虽然某些装置实施额外的VC以确保高优先级消息具有专用资源。包基于它们的业务类别(TC)被引导到适当的VC。当包在PCIe结构上流动时,TC也用于确定优先级。更高TC包通常由根复合体、开关和终端装置给予优先级。
在一个实施例中,控制器被设计为仅利用VC0操作。在一个实施例中,虽然桥可以实施额外的VC,但是其必须是可配置的,以便其能够在单VC模式中操作。考虑到数据处理流程的以下简短描述,会更好理解在控制器与桥之间传递的消息。为了给来自主机的读命令提供服务,控制器可以首先发送命令消息到桥的命令队列。一旦桥处理命令消息,其将从NVM读取请求的数据,并将读取的数据送回到控制器侧上的相应数据端口。这个行为触发控制器上的数据通路,这导致数据被送回到主机。相反,为了给来自主机的写命令提供服务,控制器可以首先发送命令消息到桥的命令队列。一旦桥处理命令消息,其会从控制器侧上的相应数据端口读取。这个行为触发控制器上的数据通路,这导致写数据从控制器中的缓冲器发送到桥,用于写入到NVM。
在一个实施例中,控制器利用增加优先级的三种消息类型与桥通信:用于写命令的写入到NVM的数据(0),用于桥的命令队列的消息(1),以及用于桥的管理队列的消息(2)。本领域的技术人员将认识到这些消息可被分配不同优先级,并且根据实施情况,可以将这些消息结合为更少类型或划分为更多类型。在一个实施例中,在正常情况下,控制器发送稳定的数据包流到桥。
在一个实施例中,桥利用其自身的优先化消息类型组(这里以增加优先级列出)与控制器互动:用于读命令的从NVM读出的数据(0),用于控制器的完成/信息队列的消息(1),以及用于控制器的错误队列的消息(2)。本领域的技术人员将认识到,根据实施情况,可以给这些消息分配不同优先级,并且这些消息可以结合成更少类型或划分为更多类型。正如将在下面进一步描述的,为了便于数据访问命令的快速处理,桥对控制器中数据端口的读或写自动触发控制器中的数据通路。在一个实施例中,桥并行处理多个命令并不是不常见。在一个实施例中,当命令已经成功完成时,桥利用完成队列226通知控制器。另外,当详细错误报告被发送到错误队列218的时候,非关键消息被发送到信息队列222。在其他实施例中,这些队列可以结合为更少队列(具有由特殊标志或暗示地址值区别的不同消息类型)或分为更多队列(例如,用于不同类型错误的不同错误队列或用于从桥返回的不同类型信息的不同信息队列)。
在使用不同于PCIe的接口的其他实施例中,PCIe协议堆栈可以被替换为该接口的适当堆栈/层。本领域的技术人员将认识到其他等价的标准化接口(例如,eMMC)可以适合于代替PCIe。在其他实施例中,定制/专有接口可以用于处理控制器与桥之间的通信。
IV.暗示的命令标签ID和触发数据通路
图4是示出根据一个实施例的、数据处理序列的流程图。如上所述,在一个实施例中,控制器通过发送访问命令(例如,读取、写入、擦除)到命令队列262而在块302中启动序列。发送到命令队列的命令可以包括例如标签字段、优先级字段、页的列表以及控制XOR奇偶校验累加器的比特的字段。另外,某些命令可以规定从中读取奇偶校验位的地址位置,和奇偶校验位被写入的后操作的地址位置。也可以提供位置信息用于RAID奇偶校验条化。在块304,桥基于这些命令的优先级和桥的当前工作量,在队列中对这些命令进行最佳排序。在块306,当桥准备好在给出的命令上开始工作时,其在适当数据端口214执行读或写操作以触发在控制器侧上的数据通路。特别地,在一个实施例中,数据通路包括用于处理在控制器与桥之间转移的数据的逻辑。例如,对于写入,写数据在其被发送到桥用于写入到NVM之前,被从控制器中的存储缓冲器读取并由数据通路(例如,添加额外的元数据)处理。类似地,对于读取,数据通路也处理来自桥的输入数据(例如,去掉元数据)。使用在控制器上的数据通路简化了整体设计并使桥需要为每个命令完成的工作最少。考虑到上述内容,需要配置/设置数据通路用于当前正被处理的特殊命令,以便待传输的数据如与当前命令关联的那样能够被适当处理。这种设置/配置可以通过数据通路中的某些自动操作或通过控制器处理器136上的固件执行。在任意一个方案中,在一个实施例中,桥读/写数据端口触发控制器侧上的数据通路的这个配置。在其他实施例中,可以使用多个数据通路,每一个数据通路处理数据端口的子集,尽管在这个方案中数据通路仍然会基于上述原理操作。
如块308中所示,对于读命令,桥从NVM获得数据并将其写入到相应的数据端口214,以及对于写命令,桥从相应数据端口214读取数据并将其写入到NVM。在其他实施例中,其他较低效率的变体是可能的。例如,控制器可以读取和写入事务,并且桥可以通过中断等仅仅通知需要注意。
在一个实施例中,在桥命令队列262中的每个命令具有标签。当桥准备好在涉及数据转移的命令上开始工作时,其访问匹配命令标签的数据端口214。在一个实施例中,控制器中的数据通路具有由桥CSR中的两个值,即基址和端口尺寸定义的十六个端口。这两个值足以导出所有十六个端口的位置。在其他实施例中,可以使用不同端口数量和/或不同地址导出方案。
图5是示出根据一个实施例的每个端口如何与不同命令标签相对应的框图。图5扩展来自图3的数据地址212的视图并示出数据端口如何与命令标签相关联。如图所示,每个数据端口0到15(具有其自己的唯一分配的地址)与命令标签关联。在一个实施例中,命令限于八页。在这样的安排下,端口需要相距至少64K,尽管间距可以更大。因此,在匹配命令标签的端口上执行读取或写入允许控制器自动识别匹配命令并在没有额外控制开销的情况下,启动数据通路自动操作。
例如,当桥访问由相关联的PCIe地址范围定义的控制器中的特殊数据端口地址时(例如,编号0到15),控制器会理解这是用于与该标签相关联的命令。因此,桥不需要单独发送命令标签,这减少了开销,因为桥与控制器之间的每个额外通信添加到整体延迟。为了实现这点,在一个实施例中,控制器自动解码地址(分割较高比特位),并且加载寄存器以触发/准备主机数据通路用于处理(启动自动化操作)。不过,本领域的技术人员将认识到还可以使用不同于上述暗示标签实施的实施。例如,桥可以给控制器发送明确的命令标签消息以指示桥当前正在工作的命令以及其打算使用哪个数据端口。接着,数据通路的准备会取决于明确的命令标签消息。在其他实施例中,不需要使用上述的命令标签。一般来说,可以使用使桥和/或控制器能够跟踪数据端口和命令相关性的任何命令配置数据。
返回图4,在块310中,当数据端口由桥访问时,控制器数据通路被自动触发。在一个实施例中,由于没有允许桥在部分命令上工作的机制,所以一旦数据通路已经被触发,其必须完成命令。在一个实施例中,当桥开始写入操作时,控制器以命令消息规定的次序将所有待写入的页发送到桥。相反,控制器还可以要求桥以命令消息规定的次序发送数据用于读操作。虽然本文提供的例子示出处理读和写两者的一个数据通路,但是在其他实施例中,可以使用多个数据通路。例如,在多数据通路实施中,每个数据通路可以专用于数据端口的子集,和/或可以配置某些数据通路来处理读取,以及可以配置其他数据通路来处理写入。最终,在块312中,桥执行命令并返回(若干)状态消息到控制器侧上的一个或更多队列。控制器侧上的队列(例如,完成、信息和错误队列)会在下面节VI中描述。在替代实施例中,代替使用标签,桥可以给控制器发送数据块以对数据通路编程。桥不是必须知道数据干了什么。程序数据块和命令一起会首先由控制器发送到桥。接着,桥会将该块送回。程序数据可以在待传输用于命令的数据之前被发送,或者其可以被发送到另一个队列。
在另一个实施例中,代替上述暗示命令标签/数据通路触发机制,控制器-桥可以以其中控制器将数据与命令一起发送给桥的控制器-推动(controller-push)模式通信。因此,桥会需要大的易失性存储缓冲容量,以便在桥的命令队列中保持用于各种命令的来自控制器的用户数据。这个实施会减少延迟,但由于将需要添加大的存储缓冲器到桥中,所以可能会增加桥实施的成本。这也导致增加桥的功耗。
V.高级排队管理
在一个实施例中,桥支持若干队列。如图3所示,在一个实施例中,桥具有至少一个命令队列262和一个控制/管理队列258。管理队列258支持队列管理命令或来自控制器的其他通用操作命令。例如,控制器可以给管理队列发送命令以请求桥暂停命令队列中的处理命令或完全清空命令队列。
在一个实施例中,命令队列支持复杂排队和无序执行,同时管理队列是有序的。在控制器侧和桥侧两者上的各种队列可以具有未完成命令的混合,并且可以是异步的。与ONFI规范相比,桥命令队列中的命令混合尤其值得注意。ONFI通过其“读取多个”和“写入多个”命令提供某些基本排队能力。不过,可以没有不同类型命令的混合。而且,命令被批处理,这意味着在能够接受更多命令之前,必须完全清空队列中的命令。
相反,桥的高级排队能力能够(1)接受混合的命令类型,(2)支持无序执行,以及(3)在没有首先清空队列的情况下,允许控制器发送附加命令。桥还可以从控制器接受特殊命令以规定某个命令以高优先级执行。桥管理几个通道,所以其具有将其接收的命令重新排序的灵活性。
V.A命令排序
在一个实施例中,命令队列可以被实施为处理具有由排队标志(例如,“优先级”、“有序的”、“无序的”以及“背景”)指示的各种优先级类型的命令的单个队列,或者基于排队标志实施为几个单独队列。数据命令可以是缺省无序的,并服从于由桥排序,以便利用硬件优化和介质使用。在一个实施例中,“优先级”和“有序的”标志由控制器使用以指示相对缺省情况的偏移。
图6示出四个示例无序命令和它们正在访问的闪存管芯。虽然许多排列是可能的,但这个读取和写入命令组的例子被用于说明操作交错。在决定处理这些命令的次序时,桥需要上面在节IV中所述的数据通路约束中的因素。通过开发能够轻易识别非冲突命令的智能排序算法,桥可以实现明显的性能优势。
若命令A-D是写命令,那么桥可以通过并行执行命令A、C和D(A和B不能并行执行)最大化并发性。若桥具有足够的缓冲空间,桥还可以将用于命令B的数据从控制器下拉并工作于进入管芯2的部分。另一方面,若命令A-D是读命令,那么桥可以通过并行执行命令A、C以及D最大化并发性。虽然其可以在管芯2上读取用于命令B的数据,但可以要求桥以命令头规定的次序发送数据到控制器。
V.B背景优先级
在一个实施例中,排队模式中的唯一特征是背景优先级的实施。背景优先级让桥决定何时执行命令。在一个实施例中,具有“背景”标志的命令是无序的并且被给予最低优先级。它们还可以被免除命令晋级定时器要求,命令晋级定时器要求是指定应该执行某命令的期限的时间值。在一个实施例中,虽然命令执行的顺序留给桥来决定,但是命令不能无限期地在队列中逗留。当桥在待处理列表上的无序命令之间选择时,其会偏好具有超时晋级定时器的命令。在一个实施例中,超时值由控制器在桥控制CSR字段中设置。
当桥具有可用资源时,其可在这些“背景”命令上工作。例如,背景优先级可以用于数据保留和健康扫描任务。作为另一个例子,控制器可以向下发送具有背景标志设置的块擦除命令。当队列中的其他命令不再需要目标管芯时,桥将执行擦除操作。在一个实施例中,“有序”、“优先级”和“背景”标志是相互排他的。由于带内I/O接口不支持背景长运行任务,所以这个背景命令特征目前在带内I/O接口(例如,UFS,eMMC,SAS或SATA)中不存在。
VI.完成、信息和错误队列
如之前图3中所示,控制器还可以具有几个队列,使得桥能返回和数据命令(完成、错误等)相关的信息。另外,桥可以报告其他状态、错误和指示涉及桥和NVM的操作的非关键信息(即,信息/健康报告)。在一个实施例中,这些队列可以按顺序被处理,并且可以在像具有固定记录尺寸的环形缓冲器的存储器中实施。在一个实施例中,控制器实施三个状态队列以简化命令事务。当桥已经成功完成一个或更多命令时,其使用完成队列226指示。信息队列222用于例如健康报告的非关键信息。当一个或更多命令失效时,错误队列218允许桥发送详细报告。本领域的技术人员将认识到三个队列可以结合为更少队列或划分为额外的队列。替代地,代替这些队列,控制器和桥可以使用基于中断的系统,由此当桥希望与控制器通信时,桥会发送中断信号。接着,控制器可检查存储在桥侧上的消息。
在一个实施例中,控制器设置基址和CSR中每个队列的尺寸。在一个实施例中,不需要交流队列条目的数量,因为控制器和桥两侧具有足够的信息来导出这个值。在一个实施例中,若控制器尝试配置具有少于一个条目的队列,桥需要生成错误。
在一个实施例中,桥经配置而被要求写入到下一个有效间隙并跟踪其已经写入多少条目。用于每个间隙的地址从开始地址和最大消息尺寸导出。在一个实施例中,要求每个队列条目以在有效边界上开始。由于写入最后双字(DW)的行为常常被用于触发硬件自动化,所以消息被填充至完全记录尺寸。
桥可以在单个操作中写入多个条目到一个队列中。一个实施例实施门铃模式,其中控制器不对新条目采取行动直到桥写入到具有其已经添加记录的计数的关联门铃寄存器。在自动模式,当一个或更多条目被添加到队列中时,控制器生成其自身的信令。队列模式(自动或门铃)可以在CSR中配置。
在一个实施例中,控制器侧队列被设定大小以匹配于潜在条目的最大数量。一般来说,这些值与桥的命令队列长度成正比。假定每个命令具有标签,那么控制器直到其已经接收状态并且清空队列空间才会再使用标签。
VI.A完成队列
假定不是所有命令导致总线转移,那么当数据和管理命令已经成功完成时,控制器希望被通知。将状态嵌入到常规数据通路消息中的尝试产生对齐问题和其他边缘情况。反而,在一个实施例中,桥仅仅将完成通知写入到控制器侧上的完成队列。虽然其他实施是可能的,但是在一个实施例中,发送32比特双字(DW)是足够的,其中每个比特被设置为1以代表已经成功完成的命令。例如,在管理队列和命令队列各有16个间隙的情况下,DW的上16比特可以映射到管理标签,而下16个比特可以映射到命令标签。尽管桥可以立即发送状态,但是当多个完成标签结合在一起时,系统效率提高。在这个示例实施例中,假定这些桥队列中每个的长度是16,那么完成队列必然是32条目长度。不过,在其他实施例中,这两个队列的不同队列长度是可能的,并且完成队列机制被相应调整。
VI.B信息队列
在一个实施例中,桥可以通过写入到信息队列222(即,写入到信息队列地址范围220)以将普通系统/状态信息消息发送到控制器。NVM的健康报告例如被发送到这个队列,并且其他消息是可能的。在一个实施例中,这个队列长度是16条目。在一个实施例中,若有未完成的读命令,则控制器可不发布主动的或并发的健康扫描。NVM的主动并发健康扫描由桥在控制器的指导下完成。NVM的主动扫描在不返回数据的情况下执行,而并发扫描与正常数据访问操作并发执行。
VI.C错误队列
在一个实施例中,桥通过写入到错误队列地址范围216以将错误消息发送到控制器错误队列218。在一个实施例中,这个队列长度是16条目。
VII.XOR奇偶校验累加器管理
在一个实施例中,桥包括由控制器管理的XOR(异或)奇偶校验累加器,其使得控制器中的数据通路更简单。控制器通过XOR奇偶校验累加器命令管理XOR奇偶校验累加器。在一个实施例中,控制器发布公共控制操作指令/命令(例如,嵌在读和写命令内的),例如:(1)在累加前清空(操作:读、写),(2)在缓冲器中累加奇偶校验(操作:读、写),(3)将奇偶校验缓冲器写入到NAND中的页(操作:写)。在一个实施例中,指令/命令以数据访问命令字段中的三个比特传递。为了减小命令尺寸,可以使用专用命令用于不太常见的XOR奇偶累加器操作,例如:从NAND中的页载入奇偶校验缓冲器,通过总线读取奇偶校验缓冲器,通过总线载入奇偶校验缓冲器,以及复位所有奇偶校验缓冲器。
VIII.其他特征
在一个实施例中,桥支持几个功率管理命令。返回图2,在一个实施例中,桥耦合于并且管理功率控制器170,功率控制器170可以包括功率抑制控制器172。桥可以在由控制器130规定的几个功率预算下操作。可以将桥设置为在抑制状态操作,其中桥在更小功率预算上限的情况下最小化功耗。功率管理可以通过被监控的控制引脚或基于PCIe的消息收发实施。在另一个实施例中,桥可以使用替代电源。
根据命令执行目前可用的可用保证数量,桥可以自己实施基于能源保证的抑制策略。在替代方案中,控制器可以实施基于能源保证的策略,以及桥经配置支持由控制器基于该策略发布的功率命令。一个示例策略允许控制器和/或桥设置并发操作的最大数量和/或操作之间的时间延迟,使得平均功耗停留在阈值以下。各种类型基于能源保证的策略在2011年8月23日提交的题为“Non-volatile Storage Subsystem With Energy-BasedPerformance Throttling”、申请号为13/216177的共同待审美国申请中进一步描述,该申请的公开通过引用合并于此。在另一个实施例中,桥经配置以报告各种操作的功耗,并且允许控制器通过暴露的接口设置明确的限制。
在另一个实施例中,和公共桥实施不同,桥暴露通常在ONFI接口上可获得的,但是在其他桥-控制器架构中隐藏的NAND级别信息,因为在那些架构中的许多控制器不在物理页级别管理。下面是控制器能够访问的某些例值:
●装置制造商(ONFI字节32-43)
●装置型号(ONFI字节44-63)
●JEDEC(电子工程设计发展联合会议)制造ID(ONFI字节64)
●日期代码(ONFI字节65-66)
●每页数据字节(ONFI字节80-83)
●每页备用字节(ONFI字节84-85)
●每块的页数(ONFI字节92-95)
●每个管芯的块数(ONFI字节96-99)
●每个桥的管芯数(新)
●每个单元的比特数(ONFI字节102)
●每个管芯的坏块最大数(ONFI字节103-104)
●MLC的块P/E-次数持久性(ONFI字节105-106)
●SLC的块P/E-次数持久性(新)
●平面的数量(ONFI字节113)
●最长页编程时间(微秒)(ONFI字节133-134)
●最长块擦除时间(微秒)(ONFI字节135-136)
●最长页读取时间(微秒)(ONFI字节137-138)
●最长多平面页读取时间(微秒)(ONFI字节152-153)
在某些实施例中,因为控制器是处于在块和页级别两者管理NVM的独一无二的位置,这些值的暴露对辅助控制器对NVM的管理是有用的。
在一个实施例中,桥还支持下面列出的至少某些配置细节。这些中的至少部分涉及上述的特征:
●命令晋级超时——在一个实施例中,当桥在待处理列表上的无序命令之间选择时,其会偏好已经超出晋级定时器的命令。如上所述,在一个实施例中,这个超时不应用于背景命令。
●数据端口基址——在一个实施例中,主机具有16个端口,每个对应于消息标签。下面定义的端口大小与基址一起允许桥导出每个数据端口的地址。当桥执行读和写命令时,访问这些端口。
●数据端口大小——在一个实施例中,端口大小指示每个端口能够被写入多少数据。在一个实施例中,保证端口匹配于最大命令大小。在一个配置中,较低的两个比特是零。
●完成队列基址——在一个实施例中,桥给这个队列发送命令完成通知。
●完成队列大小——在一个实施例中,这是以字节为单位的大小。在一个配置中,较低两个比特是零。
●完成队列门铃——在一个实施例中,桥将其刚添加的记录计数写入到完成队列中。当门铃被设置为零并且假设队列处于自动模式时,门铃是失效的。
●完成队列最大记录大小——在一个实施例中,是发送到这个队列的最大消息大小。在一个配置中,这是由桥设置的只读值。
●信息队列基址——在一个实施例中,桥将非关键报告写入到这个地址。
●信息队列大小——在一个实施例中,这是以字节为单位的大小。在一个配置中,较低两个比特为零。
●信息队列门铃——在一个实施例中,桥将其刚添加的记录计数写入到信息队列。当门铃被设置为零并且假设队列处于自动模式时,门铃是失效的。
●信息队列最大记录大小——在一个实施例中,是发送到这个队列的最大消息大小。这是由桥设置的只读值。
●错误队列基址——在一个实施例中,桥将错误报告写入到这个地址。
●错误队列大小——在一个实施例中,这是以字节为单位的大小。在一个配置中,较低两个比特为零。
●错误队列门铃——在一个实施例中,桥将其刚添加的记录计数写入到错误队列。当门铃被设置为零并且假设队列处于自动模式时,门铃是失效的。
●错误队列最大记录大小——在一个实施例中,这是发送到这个队列的最大消息大小。这是由桥设置的只读值。
在一个实施例中,桥能够支持SLC模式。这就是说,控制器可以规定MLC NAND的某些部分作为SLC操作。虽然这在ONFI中是可用的选项,但是许多公共桥实施不支持这个性能。
IX.替代实施例;结论
正如在这个应用中所使用的,“非易失性存储器”通常是指例如NAND闪存的固态存储器。不过,本公开的系统和方法对包括固态和硬盘驱动组件两者的更多常规硬盘驱动器和混合驱动器中也是有用的。因此,虽然提到某些内部操作是通常与固态驱动器相关,例如“损耗均衡”和“垃圾回收”,但是硬盘驱动器的类似操作也可以利用本公开的某些实施例。固态存储器可以包括各种各样的技术,例如闪存集成电路,硫系RAM(C-RAM),相变存储器(PC-RAM或PRAM),可编程金属化单元RAM(PMC-RAM或PMCm),奥氏统一存储器(OUM),电阻RAM(RRAM),NAND存储器,NOR存储器,EEPROM,铁电体存储器(FeRAM),或其他分立的NVM(非易失性存储器)芯片。正如在本领域是众所周知的,固态存储装置(例如,管芯)可以物理地划分为平面、块、页以及扇区。可以附加或替代地使用其他形式的存储器(电池备份易失性DRAM或SRAM装置,磁盘驱动器等)。
虽然已经描述了本发明的某些实施例,但是这些实施例仅通过示例的方式呈现出来,并且这些实施例不是为了限制本发明的范围。实际上,本文所描述的新颖方法和系统还可以以各种其他形式予以体现。此外,在不偏离本发明精神的情况下,可以对本文所述的方法和系统做出各种形式的删减、替换和改变。随附的权利要求及其等价物意在覆盖上述落在本发明范围和精神内的这些形式或修改。例如,在图1D、2A、2B和3中示出的各种组件可以以处理器上的软件和/或固件、ASIC/FPGA或专用硬件实施。例如,本领域的技术人员应当理解,在某些实施例中,在图4中示出过程中采取的实际步骤可以和图中示出的那些步骤不同。根据实施例,可以移除上述例子中描述的某些步骤,添加其他步骤,并且可以改变步骤的顺序和/或并行完成某些步骤。而且,上述公开具体实施例的特征和属性可以以不同方式结合形成额外的实施例,所有这些落入本公开的范围。虽然本公开提供某些优选的实施例和应用方案,但是,那些对于本领域技术人员来说是显而易见的其他实施例,包括没有提供本文所述所有特征和优势的实施例,也在本公开的范围内。因此,本公开的范围仅由所附权利要求限定。
Claims (29)
1.一种非易失性存储器存储系统,其包括:
一个或更多固态存储装置的阵列;以及
与所述阵列耦合的桥装置,所述桥装置包括:
用于将数据访问指令传递到所述一个或更多固态存储装置的阵列的第一接口;以及
用于从控制器接收物理页级别数据访问命令的第二接口;
其中所述桥装置经配置以实施用于从所述控制器接收所述数据访问命令的第一队列,在所述第一队列中从所述控制器接收具有不同优先级指示的数据访问命令,以及确定处理接收的数据访问命令的次序,从而最大化在所述一个或更多固态存储装置的阵列中所述命令的并发执行,所述次序根据下面两者中的至少一个确定:(1)所述优先级指示和(2)所述阵列中活动的当前状态。
2.根据权利要求1所述的非易失性存储器存储系统,其中所述桥装置经进一步配置以管理所述阵列中一个或更多数据通道,以及其中所述数据访问命令的并发处理基于所述一个或更多数据通道中的活动。
3.根据权利要求1所述的非易失性存储器存储系统,其中所述优先级指示中的一个是背景优先级指示,其允许所述桥装置执行关联的命令,而没有特定时间限制。
4.根据权利要求1所述的非易失性存储器存储系统,其中所述第一接口是ONFI或Toggle。
5.根据权利要求1所述的非易失性存储器存储系统,其中所述第二接口是PCIe。
6.根据权利要求1所述的非易失性存储器存储系统,其中所述桥装置经进一步配置以:
在所述第一队列内从所述控制器选择所述数据访问命令中的一个用于处理;以及
访问所述控制器中与选择的数据访问命令相关联的数据端口,从而促使所述控制器中的数据通路启动用于所述数据访问命令的数据的转移。
7.根据权利要求1所述的非易失性存储器存储系统,其中所述桥装置进一步包括错误纠正模块,以纠正在所述数据访问命令的执行中碰到的数据错误。
8.根据权利要求1所述的非易失性存储器存储系统,其中所述桥装置经配置以给所述控制器提供所述一个或更多固态存储装置的阵列的低级别状态信息。
9.一种用于在非易失性存储模块中控制数据操作的控制器装置,所述控制器装置包括:
至少一个数据通路;
用于与耦合于非易失性存储器存储装置的桥装置通信的接口;以及
经配置以实施存储器中的地址范围的处理器,其中所述存储器包括经配置用于数据操作的多个数据端口的地址,所述数据端口经配置以由所述桥装置访问,所述访问与所述控制器装置发送给所述桥装置的数据访问命令有关;
其中所述控制器装置的至少一个数据通路由所述桥装置对所述数据端口中一个的访问触发。
10.根据权利要求9所述的控制器装置,其中所述数据端口中的至少某些与命令配置信息相关联,所述命令配置信息也与所述控制器装置发布给所述桥装置的命令相关联,使得所述桥装置对特定数据端口的访问能够与具有匹配命令配置信息的、所述控制器之前发布给所述桥装置的命令相关。
11.根据权利要求10所述的控制器装置,其中所述命令配置信息包括一个或更多命令标签。
12.根据权利要求9所述的控制器装置,其中所述数据端口中至少某些的地址起隐式命令标签的作用,由此当这种数据端口中的一个被访问时,所述桥装置可以启动在所述至少一个数据通路上的数据操作,而无需来自所述桥装置的识别与当前数据端口访问相关联的命令的消息。
13.根据权利要求9所述的控制器装置,其中所述处理器经进一步配置以在所述地址范围内实施下列中的至少一个:
用于从所述桥装置接收错误消息的队列;
用于从所述桥装置接收信息消息的队列;以及
用于从所述桥装置接收命令完成消息的队列。
14.根据权利要求9所述的控制器装置,其中所述处理器经进一步配置以在所述地址范围内实施用于从所述桥装置接收错误消息、信息消息以及命令完成消息的队列。
15.根据权利要求9所述的控制器装置,其中所述处理器经进一步配置以从所述桥装置接收通知消息在所述桥装置内待处理的中断。
16.根据权利要求9所述的控制器装置,其中所述接口是PCIe。
17.根据权利要求9所述的控制器装置,其进一步包括多个数据通路,每个数据通路与所述数据端口的子集相关联。
18.一种用于处理控制器架构中数据操作的方法,其中所述控制器架构包括控制器装置和与非易失性存储器存储装置耦合的桥装置,所述方法包括在所述控制器装置中完成下列操作:
通过连接所述控制器装置和所述桥装置的接口给所述桥装置发送数据访问命令,所述数据访问命令包括与所述命令相关联的物理地址指令;
作为对所述桥装置访问所述控制器装置上与所述命令相关联的数据端口的响应,启动所述控制器中数据通路的配置以准备与所述命令有关的数据的转移。
19.根据权利要求18所述的方法,其中所述数据通路的配置由与所述数据通路相关的自动操作完成。
20.根据权利要求18所述的方法,其中所述数据通路的配置由所述控制器装置中的处理器完成。
21.根据权利要求18所述的方法,其中所述数据访问命令通过发送到所述桥装置的所述数据访问命令中的明确命令标签与所述数据端口相关联。
22.根据权利要求18所述的方法,其进一步包括:
在所述控制器装置中从所述桥装置接收完成消息或错误消息,所述完成消息指示所述数据访问命令完成,所述错误消息指示在执行所述命令时碰到的错误。
23.根据权利要求18所述的方法,其中所述接口是PCIe。
24.根据权利要求18所述的方法,其进一步包括在所述控制器装置中完成下列操作:
作为对所述桥装置发送数据通路程序数据的响应,根据所述数据通路程序数据,启动所述控制器中数据通路的配置以准备与所述命令有关的数据的转移,其中所述数据通路程序数据由所述控制器装置之前发送到所述桥装置,并且与所述数据访问命令相关联。
25.一种用于处理控制器架构中数据操作的方法,其中所述控制器架构包括控制器装置和与非易失性存储器存储装置耦合的桥装置,所述方法包括在所述桥装置中完成下列操作:
通过连接所述控制器装置和所述桥装置的接口从所述控制器装置接收多个数据访问命令,所述数据访问命令中的至少某些包括与所述命令相关联的物理地址指令,其中所述数据访问命令中的每个包括优先级指示;
基于所述数据访问命令中的所述优先级指示和所述非易失性存储器存储装置中一个或更多数据通道的当前状态,选择所述命令中的一个用于处理;以及
访问所述控制器上与选择的命令相关联的数据端口以启动用于所述命令的数据的转移。
26.根据权利要求25所述的方法,其进一步包括在所述桥装置中完成下列操作:
向所述控制器报告在所述非易失性存储器存储装置中执行的操作的状态,作为对选择的数据访问命令的响应。
27.根据权利要求25所述的方法,其中所述接口是PCIe。
28.一种非易失性存储器存储系统,其包括:
一个或更多固态存储装置的阵列;以及
与所述阵列耦合的桥装置,所述桥装置包括:
用于将数据访问指令传递到所述一个或更多固态存储装置的阵列的第一接口;以及
用于从控制器接收物理页级别数据访问命令的第二接口;
其中所述桥装置经配置以实施用于从所述控制器接收所述数据访问命令的第一队列以及用于接收管理命令的第二队列,并且其中至少一个所述管理命令与所述第一队列的操作关联。
29.一种非易失性存储器存储系统,其包括:
一个或更多固态存储装置的阵列;以及
与所述阵列耦合的桥装置,所述桥装置包括:
用于将数据访问指令传递到所述一个或更多固态存储装置的阵列的第一接口;
用于从控制器接收物理页级别数据访问命令的第二接口;以及
XOR奇偶校验累加器,其中所述桥装置经配置而实施用于从所述控制器接收所述数据访问命令的第一队列,以及执行嵌在所述数据访问命令的至少一个中的XOR奇偶校验累加器指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/226,393 | 2011-09-06 | ||
US13/226,393 US8700834B2 (en) | 2011-09-06 | 2011-09-06 | Systems and methods for an enhanced controller architecture in data storage systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103176746A CN103176746A (zh) | 2013-06-26 |
CN103176746B true CN103176746B (zh) | 2017-04-12 |
Family
ID=47754032
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210328166.7A Active CN103176746B (zh) | 2011-09-06 | 2012-09-06 | 用于数据存储系统中增强的控制器架构的系统和方法 |
Country Status (2)
Country | Link |
---|---|
US (2) | US8700834B2 (zh) |
CN (1) | CN103176746B (zh) |
Families Citing this family (189)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9176859B2 (en) | 2009-01-07 | 2015-11-03 | Siliconsystems, Inc. | Systems and methods for improving the performance of non-volatile memory operations |
US10079048B2 (en) | 2009-03-24 | 2018-09-18 | Western Digital Technologies, Inc. | Adjusting access of non-volatile semiconductor memory based on access time |
US9753847B2 (en) | 2009-10-27 | 2017-09-05 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping |
US8782327B1 (en) | 2010-05-11 | 2014-07-15 | Western Digital Technologies, Inc. | System and method for managing execution of internal commands and host commands in a solid-state memory |
US9026716B2 (en) | 2010-05-12 | 2015-05-05 | Western Digital Technologies, Inc. | System and method for managing garbage collection in solid-state memory |
US8959284B1 (en) | 2010-06-28 | 2015-02-17 | Western Digital Technologies, Inc. | Disk drive steering write data to write cache based on workload |
US9058280B1 (en) | 2010-08-13 | 2015-06-16 | Western Digital Technologies, Inc. | Hybrid drive migrating data from disk to non-volatile semiconductor memory based on accumulated access time |
US8769190B1 (en) | 2010-09-15 | 2014-07-01 | Western Digital Technologies, Inc. | System and method for reducing contentions in solid-state memory access |
US8788779B1 (en) | 2010-09-17 | 2014-07-22 | Western Digital Technologies, Inc. | Non-volatile storage subsystem with energy-based performance throttling |
US9021192B1 (en) | 2010-09-21 | 2015-04-28 | Western Digital Technologies, Inc. | System and method for enhancing processing of memory access requests |
US9164886B1 (en) | 2010-09-21 | 2015-10-20 | Western Digital Technologies, Inc. | System and method for multistage processing in a memory storage subsystem |
US9069475B1 (en) | 2010-10-26 | 2015-06-30 | Western Digital Technologies, Inc. | Hybrid drive selectively spinning up disk when powered on |
US8700950B1 (en) | 2011-02-11 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for data error recovery in a solid state subsystem |
US8700951B1 (en) | 2011-03-09 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata |
US9361044B2 (en) | 2011-03-28 | 2016-06-07 | Western Digital Technologies, Inc. | Power-safe data management system |
US9170744B1 (en) | 2011-04-06 | 2015-10-27 | P4tents1, LLC | Computer program product for controlling a flash/DRAM/embedded DRAM-equipped system |
US8930647B1 (en) | 2011-04-06 | 2015-01-06 | P4tents1, LLC | Multiple class memory systems |
US9164679B2 (en) | 2011-04-06 | 2015-10-20 | Patents1, Llc | System, method and computer program product for multi-thread operation involving first memory of a first memory class and second memory of a second memory class |
US9176671B1 (en) | 2011-04-06 | 2015-11-03 | P4tents1, LLC | Fetching data between thread execution in a flash/DRAM/embedded DRAM-equipped system |
US9158546B1 (en) | 2011-04-06 | 2015-10-13 | P4tents1, LLC | Computer program product for fetching from a first physical memory between an execution of a plurality of threads associated with a second physical memory |
US8898373B1 (en) | 2011-06-29 | 2014-11-25 | Western Digital Technologies, Inc. | System and method for improving wear-leveling performance in solid-state memory |
US9417754B2 (en) | 2011-08-05 | 2016-08-16 | P4tents1, LLC | User interface system, method, and computer program product |
US8700834B2 (en) | 2011-09-06 | 2014-04-15 | Western Digital Technologies, Inc. | Systems and methods for an enhanced controller architecture in data storage systems |
US8713357B1 (en) | 2011-09-06 | 2014-04-29 | Western Digital Technologies, Inc. | Systems and methods for detailed error reporting in data storage systems |
US8707104B1 (en) | 2011-09-06 | 2014-04-22 | Western Digital Technologies, Inc. | Systems and methods for error injection in data storage systems |
US9195530B1 (en) | 2011-09-06 | 2015-11-24 | Western Digital Technologies, Inc. | Systems and methods for improved data management in data storage systems |
US9268701B1 (en) | 2011-11-21 | 2016-02-23 | Western Digital Technologies, Inc. | Caching of data in data storage systems by managing the size of read and write cache based on a measurement of cache reliability |
US8977804B1 (en) | 2011-11-21 | 2015-03-10 | Western Digital Technologies, Inc. | Varying data redundancy in storage systems |
US8959416B1 (en) | 2011-12-16 | 2015-02-17 | Western Digital Technologies, Inc. | Memory defect management using signature identification |
US9348741B1 (en) | 2011-12-19 | 2016-05-24 | Western Digital Technologies, Inc. | Systems and methods for handling write data access requests in data storage devices |
US20140229659A1 (en) * | 2011-12-30 | 2014-08-14 | Marc T. Jones | Thin translation for system access of non volatile semicondcutor storage as random access memory |
US9053008B1 (en) | 2012-03-26 | 2015-06-09 | Western Digital Technologies, Inc. | Systems and methods for providing inline parameter service in data storage devices |
US8984247B1 (en) | 2012-05-10 | 2015-03-17 | Western Digital Technologies, Inc. | Storing and reconstructing mapping table data in a data storage system |
US8966205B1 (en) | 2012-05-10 | 2015-02-24 | Western Digital Technologies, Inc. | System data management using garbage collection and hybrid self mapping |
US9977612B1 (en) | 2012-05-11 | 2018-05-22 | Western Digital Technologies, Inc. | System data management using garbage collection and logs |
US9170932B1 (en) | 2012-05-22 | 2015-10-27 | Western Digital Technologies, Inc. | System data storage mechanism providing coherency and segmented data loading |
US8924832B1 (en) | 2012-06-26 | 2014-12-30 | Western Digital Technologies, Inc. | Efficient error handling mechanisms in data storage systems |
US8954653B1 (en) | 2012-06-26 | 2015-02-10 | Western Digital Technologies, Inc. | Mechanisms for efficient management of system data in data storage systems |
US8966343B2 (en) | 2012-08-21 | 2015-02-24 | Western Digital Technologies, Inc. | Solid-state drive retention monitor using reference blocks |
US9507523B1 (en) | 2012-10-12 | 2016-11-29 | Western Digital Technologies, Inc. | Methods, devices and systems for variable size logical page management in a solid state drive |
US9489296B1 (en) | 2012-10-17 | 2016-11-08 | Western Digital Technologies, Inc. | Methods, devices and systems for hardware-based garbage collection in solid state drives |
US8972826B2 (en) | 2012-10-24 | 2015-03-03 | Western Digital Technologies, Inc. | Adaptive error correction codes for data storage systems |
US9177638B2 (en) | 2012-11-13 | 2015-11-03 | Western Digital Technologies, Inc. | Methods and devices for avoiding lower page corruption in data storage devices |
US8954694B2 (en) | 2012-11-15 | 2015-02-10 | Western Digital Technologies, Inc. | Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive |
US9021339B2 (en) | 2012-11-29 | 2015-04-28 | Western Digital Technologies, Inc. | Data reliability schemes for data storage systems |
US9059736B2 (en) | 2012-12-03 | 2015-06-16 | Western Digital Technologies, Inc. | Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme |
US9032271B2 (en) | 2012-12-07 | 2015-05-12 | Western Digital Technologies, Inc. | System and method for lower page data recovery in a solid state drive |
US9122625B1 (en) | 2012-12-18 | 2015-09-01 | Western Digital Technologies, Inc. | Error correcting code encoder supporting multiple code rates and throughput speeds for data storage systems |
US8966339B1 (en) | 2012-12-18 | 2015-02-24 | Western Digital Technologies, Inc. | Decoder supporting multiple code rates and code lengths for data storage systems |
US9619317B1 (en) | 2012-12-18 | 2017-04-11 | Western Digital Technologies, Inc. | Decoder having early decoding termination detection |
US20140173239A1 (en) * | 2012-12-19 | 2014-06-19 | Apple Inc. | Refreshing of memory blocks using adaptive read disturb threshold |
US9214963B1 (en) | 2012-12-21 | 2015-12-15 | Western Digital Technologies, Inc. | Method and system for monitoring data channel to enable use of dynamically adjustable LDPC coding parameters in a data storage system |
US8954655B2 (en) | 2013-01-14 | 2015-02-10 | Western Digital Technologies, Inc. | Systems and methods of configuring a mode of operation in a solid-state memory |
US8972655B2 (en) | 2013-01-21 | 2015-03-03 | Western Digital Technolgies, Inc. | Initialization of a storage device |
US9274966B1 (en) | 2013-02-20 | 2016-03-01 | Western Digital Technologies, Inc. | Dynamically throttling host commands to disk drives |
US9454474B2 (en) | 2013-03-05 | 2016-09-27 | Western Digital Technologies, Inc. | Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive |
US9641378B1 (en) | 2013-03-12 | 2017-05-02 | Western Digital Technologies, Inc. | Adjustment of compression ratios for data storage |
US8924824B1 (en) | 2013-03-12 | 2014-12-30 | Western Digital Technologies, Inc. | Soft-decision input generation for data storage systems |
US9280472B1 (en) | 2013-03-13 | 2016-03-08 | Western Digital Technologies, Inc. | Caching data in a high performance zone of a data storage system |
US8990668B2 (en) | 2013-03-14 | 2015-03-24 | Western Digital Technologies, Inc. | Decoding data stored in solid-state memory |
US9059742B1 (en) | 2013-03-15 | 2015-06-16 | Western Digital Technologies, Inc. | System and method for dynamic scaling of LDPC decoder in a solid state drive |
US9448738B2 (en) | 2013-03-15 | 2016-09-20 | Western Digital Technologies, Inc. | Compression and formatting of data for data storage systems |
US9218279B2 (en) | 2013-03-15 | 2015-12-22 | Western Digital Technologies, Inc. | Atomic write command support in a solid state drive |
US9335950B2 (en) | 2013-03-15 | 2016-05-10 | Western Digital Technologies, Inc. | Multiple stream compression and formatting of data for data storage systems |
US9013920B2 (en) | 2013-04-03 | 2015-04-21 | Western Digital Technologies, Inc. | Systems and methods of write precompensation to extend life of a solid-state memory |
US9123686B2 (en) | 2013-04-12 | 2015-09-01 | Western Digital Technologies, Inc. | Thermal management for solid-state drive |
US9338927B2 (en) | 2013-05-02 | 2016-05-10 | Western Digital Technologies, Inc. | Thermal interface material pad and method of forming the same |
US9195293B1 (en) | 2013-05-03 | 2015-11-24 | Western Digital Technologies, Inc. | User controlled data storage device power and performance settings |
US9081700B2 (en) | 2013-05-16 | 2015-07-14 | Western Digital Technologies, Inc. | High performance read-modify-write system providing line-rate merging of dataframe segments in hardware |
US9632926B1 (en) | 2013-05-16 | 2017-04-25 | Western Digital Technologies, Inc. | Memory unit assignment and selection for internal memory operations in data storage systems |
US9170938B1 (en) | 2013-05-17 | 2015-10-27 | Western Digital Technologies, Inc. | Method and system for atomically writing scattered information in a solid state storage device |
US9280200B1 (en) | 2013-05-20 | 2016-03-08 | Western Digital Technologies, Inc. | Automatic peak current throttle of tiered storage elements |
US9740248B2 (en) | 2013-06-07 | 2017-08-22 | Western Digital Technologies, Inc. | Component placement within a solid state drive |
US9274978B2 (en) | 2013-06-10 | 2016-03-01 | Western Digital Technologies, Inc. | Migration of encrypted data for data storage systems |
US9436630B2 (en) | 2013-06-11 | 2016-09-06 | Western Digital Technologies, Inc. | Using dual phys to support multiple PCIe link widths |
US9830257B1 (en) | 2013-06-12 | 2017-11-28 | Western Digital Technologies, Inc. | Fast saving of data during power interruption in data storage systems |
US9665501B1 (en) | 2013-06-18 | 2017-05-30 | Western Digital Technologies, Inc. | Self-encrypting data storage device supporting object-level encryption |
US9304560B2 (en) | 2013-06-19 | 2016-04-05 | Western Digital Technologies, Inc. | Backup power for reducing host current transients |
US9208101B2 (en) | 2013-06-26 | 2015-12-08 | Western Digital Technologies, Inc. | Virtual NAND capacity extension in a hybrid drive |
US9583153B1 (en) | 2013-06-28 | 2017-02-28 | Western Digital Technologies, Inc. | Memory card placement within a solid state drive |
US9042197B2 (en) | 2013-07-23 | 2015-05-26 | Western Digital Technologies, Inc. | Power fail protection and recovery using low power states in a data storage device/system |
US9141176B1 (en) | 2013-07-29 | 2015-09-22 | Western Digital Technologies, Inc. | Power management for data storage device |
US20150058532A1 (en) * | 2013-08-26 | 2015-02-26 | Kabushiki Kaisha Toshiba | Memory device, information-processing device and information-processing method |
US9070379B2 (en) | 2013-08-28 | 2015-06-30 | Western Digital Technologies, Inc. | Data migration for data storage device |
US9442668B1 (en) | 2013-08-29 | 2016-09-13 | Western Digital Technologies, Inc. | Adaptive power management control with performance feedback |
US9263136B1 (en) | 2013-09-04 | 2016-02-16 | Western Digital Technologies, Inc. | Data retention flags in solid-state drives |
US9304709B2 (en) | 2013-09-06 | 2016-04-05 | Western Digital Technologies, Inc. | High performance system providing selective merging of dataframe segments in hardware |
US9348537B2 (en) * | 2013-09-10 | 2016-05-24 | Qualcomm Incorporated | Ascertaining command completion in flash memories |
US9141563B2 (en) * | 2013-09-11 | 2015-09-22 | Kabushiki Kaisha Toshiba | Memory system |
US9824004B2 (en) * | 2013-10-04 | 2017-11-21 | Micron Technology, Inc. | Methods and apparatuses for requesting ready status information from a memory |
US10444998B1 (en) | 2013-10-24 | 2019-10-15 | Western Digital Technologies, Inc. | Data storage device providing data maintenance services |
US9007841B1 (en) | 2013-10-24 | 2015-04-14 | Western Digital Technologies, Inc. | Programming scheme for improved voltage distribution in solid-state memory |
US9330143B2 (en) | 2013-10-24 | 2016-05-03 | Western Digital Technologies, Inc. | Data storage device supporting accelerated database operations |
US9323467B2 (en) | 2013-10-29 | 2016-04-26 | Western Digital Technologies, Inc. | Data storage device startup |
US8917471B1 (en) | 2013-10-29 | 2014-12-23 | Western Digital Technologies, Inc. | Power management for data storage device |
US9286176B1 (en) | 2013-11-08 | 2016-03-15 | Western Digital Technologies, Inc. | Selective skipping of blocks in an SSD |
US9270296B1 (en) | 2013-11-13 | 2016-02-23 | Western Digital Technologies, Inc. | Method and system for soft decoding through single read |
US9529710B1 (en) | 2013-12-06 | 2016-12-27 | Western Digital Technologies, Inc. | Interleaved channels in a solid-state drive |
US9007854B1 (en) | 2013-12-09 | 2015-04-14 | Western Digital Technologies, Inc. | Method and system for optimized soft decoding in a data storage device |
US10067829B2 (en) | 2013-12-13 | 2018-09-04 | Intel Corporation | Managing redundancy information in a non-volatile memory |
US10140067B1 (en) | 2013-12-19 | 2018-11-27 | Western Digital Technologies, Inc. | Data management for data storage device with multiple types of non-volatile memory media |
US9036283B1 (en) | 2014-01-22 | 2015-05-19 | Western Digital Technologies, Inc. | Data storage device with selective write to a first storage media or a second storage media |
US10108372B2 (en) | 2014-01-27 | 2018-10-23 | Micron Technology, Inc. | Methods and apparatuses for executing a plurality of queued tasks in a memory |
US9337864B1 (en) | 2014-01-29 | 2016-05-10 | Western Digital Technologies, Inc. | Non-binary LDPC decoder using binary subgroup processing |
US9250994B1 (en) | 2014-02-05 | 2016-02-02 | Western Digital Technologies, Inc. | Non-binary low-density parity check (LDPC) decoding using trellis maximization |
US9454310B2 (en) * | 2014-02-14 | 2016-09-27 | Micron Technology, Inc. | Command queuing |
US9384088B1 (en) | 2014-02-24 | 2016-07-05 | Western Digital Technologies, Inc. | Double writing map table entries in a data storage system to guard against silent corruption |
US9354955B1 (en) | 2014-03-19 | 2016-05-31 | Western Digital Technologies, Inc. | Partial garbage collection for fast error handling and optimized garbage collection for the invisible band |
US9348520B2 (en) | 2014-03-24 | 2016-05-24 | Western Digital Technologies, Inc. | Lifetime extension of non-volatile semiconductor memory for data storage device |
US9268487B2 (en) | 2014-03-24 | 2016-02-23 | Western Digital Technologies, Inc. | Method and apparatus for restricting writes to solid state memory when an end-of life condition is reached |
US9448742B2 (en) | 2014-03-27 | 2016-09-20 | Western Digital Technologies, Inc. | Communication between a host and a secondary storage device |
US9564212B2 (en) | 2014-05-06 | 2017-02-07 | Western Digital Technologies, Inc. | Solid-state memory corruption mitigation |
US9563366B2 (en) * | 2014-05-13 | 2017-02-07 | International Business Machines Corporation | Using queues corresponding to attribute values associated with units of work and sub-units of the unit of work to select the units of work and their sub-units to process |
US9921879B2 (en) | 2014-05-13 | 2018-03-20 | International Business Machines Corporation | Using queues corresponding to attribute values associated with units of work to select the units of work to process |
US9575800B2 (en) | 2014-05-13 | 2017-02-21 | International Business Machines Corporation | Using queues corresponding to attribute values and priorities associated with units of work and sub-units of the unit of work to select the units of work and their sub-units to process |
US9690696B1 (en) | 2014-05-14 | 2017-06-27 | Western Digital Technologies, Inc. | Lifetime extension of memory for data storage system |
US9472222B2 (en) | 2014-05-16 | 2016-10-18 | Western Digital Technologies, Inc. | Vibration mitigation for a data storage device |
US9690720B2 (en) * | 2014-06-03 | 2017-06-27 | Qualcomm Incorporated | Providing command trapping using a request filter circuit in an input/output virtualization (IOV) host controller (HC) (IOV-HC) of a flash-memory-based storage device |
US9881680B2 (en) | 2014-06-03 | 2018-01-30 | Qualcomm Incorporated | Multi-host power controller (MHPC) of a flash-memory-based storage device |
US9632953B2 (en) | 2014-06-03 | 2017-04-25 | Qualcomm Incorporated | Providing input/output virtualization (IOV) by mapping transfer requests to shared transfer requests lists by IOV host controllers |
US8935465B1 (en) | 2014-06-16 | 2015-01-13 | Sandisk Technologies Inc. | System and method of communicating command data in a master-slave environment |
JP6181304B2 (ja) | 2014-06-19 | 2017-08-16 | 株式会社日立製作所 | ストレージ装置およびインタフェース装置 |
CN108062285B (zh) * | 2014-06-27 | 2022-04-29 | 华为技术有限公司 | 一种访问NVMe存储设备的方法和NVMe存储设备 |
KR102249810B1 (ko) | 2014-07-23 | 2021-05-11 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
US9753661B2 (en) * | 2014-08-06 | 2017-09-05 | Ngd Systems, Inc. | Power efficient method and system for executing host data processing tasks during data retention operations in a storage device |
US9690518B2 (en) | 2014-08-29 | 2017-06-27 | Sandisk Technologies Llc | Dynamic host command rejection |
US9542118B1 (en) * | 2014-09-09 | 2017-01-10 | Radian Memory Systems, Inc. | Expositive flash memory control |
US9275741B1 (en) | 2014-09-10 | 2016-03-01 | Western Digital Technologies, Inc. | Temperature compensation management in solid-state memory |
US9418699B1 (en) | 2014-10-09 | 2016-08-16 | Western Digital Technologies, Inc. | Management of sequentially written data |
US9405356B1 (en) | 2014-10-21 | 2016-08-02 | Western Digital Technologies, Inc. | Temperature compensation in data storage device |
KR101730991B1 (ko) | 2014-10-28 | 2017-04-28 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
KR102358053B1 (ko) | 2014-10-28 | 2022-02-04 | 삼성전자주식회사 | 복수의 불휘발성 메모리 칩들을 포함하는 스토리지 장치 |
US9823859B2 (en) | 2014-11-06 | 2017-11-21 | Western Digital Technologies, Inc. | Mechanical shock mitigation for data storage |
KR102255216B1 (ko) | 2014-11-20 | 2021-05-24 | 삼성전자주식회사 | Pci 장치와 이를 포함하는 pci 시스템 |
US9575669B2 (en) * | 2014-12-09 | 2017-02-21 | Western Digital Technologies, Inc. | Programmable solid state drive controller and method for scheduling commands utilizing a data structure |
US9626106B2 (en) * | 2015-01-13 | 2017-04-18 | Sandisk Technologies Llc | System and method for memory command queue management and configurable memory status checking |
US10067688B2 (en) | 2015-01-23 | 2018-09-04 | Qualcomm Incorporated | Storage resource management in virtualized environments |
CN104601729A (zh) * | 2015-02-06 | 2015-05-06 | 浪潮集团有限公司 | 一种采用NVMe实现高性能云存储的方法 |
US9696934B2 (en) * | 2015-02-12 | 2017-07-04 | Western Digital Technologies, Inc. | Hybrid solid state drive (SSD) using PCM or other high performance solid-state memory |
CN107430548B (zh) * | 2015-03-06 | 2021-02-05 | 东芝存储器株式会社 | 存储装置的控制方法、及存储装置 |
US9857995B1 (en) | 2015-03-09 | 2018-01-02 | Western Digital Technologies, Inc. | Data storage device and method providing non-volatile memory buffer for real-time primary non-volatile memory protection |
US10073714B2 (en) * | 2015-03-11 | 2018-09-11 | Western Digital Technologies, Inc. | Task queues |
US10346048B2 (en) * | 2015-04-10 | 2019-07-09 | Samsung Electronics Co., Ltd. | Electronic system with storage management mechanism and method of operation thereof |
US20160378352A1 (en) * | 2015-06-26 | 2016-12-29 | Intel Corporation | Efficient solid state drive data compression scheme and layout |
TWI567633B (zh) * | 2015-07-07 | 2017-01-21 | 鈺群科技股份有限公司 | 通用序列匯流排相容的隨身碟的啟動方法及其相關隨身碟 |
US10089255B2 (en) * | 2015-07-24 | 2018-10-02 | SK Hynix Inc. | High performance host queue monitor for PCIE SSD controller |
US9785563B1 (en) | 2015-08-13 | 2017-10-10 | Western Digital Technologies, Inc. | Read command processing for data storage system based on previous writes |
US9668337B2 (en) | 2015-09-08 | 2017-05-30 | Western Digital Technologies, Inc. | Temperature management in data storage devices |
US9806904B2 (en) | 2015-09-08 | 2017-10-31 | Oracle International Corporation | Ring controller for PCIe message handling |
US9727261B2 (en) | 2015-09-24 | 2017-08-08 | Western Digital Technologies, Inc. | Weighted programming patterns in solid-state data storage systems |
US10013174B2 (en) | 2015-09-30 | 2018-07-03 | Western Digital Technologies, Inc. | Mapping system selection for data storage device |
US9836232B1 (en) | 2015-09-30 | 2017-12-05 | Western Digital Technologies, Inc. | Data storage device and method for using secondary non-volatile memory for temporary metadata storage |
US9620226B1 (en) | 2015-10-30 | 2017-04-11 | Western Digital Technologies, Inc. | Data retention charge loss and read disturb compensation in solid-state data storage systems |
US10126981B1 (en) | 2015-12-14 | 2018-11-13 | Western Digital Technologies, Inc. | Tiered storage using storage class memory |
US20170212579A1 (en) * | 2016-01-25 | 2017-07-27 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Storage Device With Power Management Throttling |
US10481799B2 (en) | 2016-03-25 | 2019-11-19 | Samsung Electronics Co., Ltd. | Data storage device and method including receiving an external multi-access command and generating first and second access commands for first and second nonvolatile memories |
CN105788636A (zh) * | 2016-04-05 | 2016-07-20 | 山东华芯半导体有限公司 | 一种基于并行多通道结构的eMMC控制器 |
US10152237B2 (en) | 2016-05-05 | 2018-12-11 | Micron Technology, Inc. | Non-deterministic memory protocol |
US10078543B2 (en) | 2016-05-27 | 2018-09-18 | Oracle International Corporation | Correctable error filtering for input/output subsystem |
US10534540B2 (en) | 2016-06-06 | 2020-01-14 | Micron Technology, Inc. | Memory protocol |
US10387303B2 (en) | 2016-08-16 | 2019-08-20 | Western Digital Technologies, Inc. | Non-volatile storage system with compute engine to accelerate big data applications |
US11586565B2 (en) | 2016-10-03 | 2023-02-21 | Samsung Electronics Co., Ltd. | Non-volatile storage system and data storage access protocol for non-volatile storage devices |
US10459644B2 (en) | 2016-10-28 | 2019-10-29 | Western Digital Techologies, Inc. | Non-volatile storage system with integrated compute engine and optimized use of local fast memory |
JP6677627B2 (ja) * | 2016-12-20 | 2020-04-08 | 株式会社ソニー・インタラクティブエンタテインメント | 情報処理装置およびメモリアクセス方法 |
US11003602B2 (en) * | 2017-01-24 | 2021-05-11 | Micron Technology, Inc. | Memory protocol with command priority |
US10565123B2 (en) | 2017-04-10 | 2020-02-18 | Western Digital Technologies, Inc. | Hybrid logical to physical address translation for non-volatile storage devices with integrated compute module |
US10503412B2 (en) | 2017-05-24 | 2019-12-10 | Western Digital Technologies, Inc. | Priority-based internal data movement |
CN108932106B (zh) * | 2017-05-26 | 2021-07-02 | 上海宝存信息科技有限公司 | 固态硬盘访问方法以及使用该方法的装置 |
US10852990B2 (en) * | 2017-08-02 | 2020-12-01 | Samsung Electronics Co., Ltd. | Hybrid framework of NVMe-based storage system in cloud computing environment |
US10579288B2 (en) | 2017-08-31 | 2020-03-03 | Micron Technology, Inc. | Prioritized security |
CN109582599B (zh) * | 2017-09-29 | 2023-12-22 | 上海宝存信息科技有限公司 | 数据储存装置以及非挥发式存储器操作方法 |
US10719474B2 (en) | 2017-10-11 | 2020-07-21 | Samsung Electronics Co., Ltd. | System and method for providing in-storage acceleration (ISA) in data storage devices |
US10585819B2 (en) | 2018-03-05 | 2020-03-10 | Samsung Electronics Co., Ltd. | SSD architecture for FPGA based acceleration |
US10649674B2 (en) | 2018-05-03 | 2020-05-12 | Western Digital Technologies, Inc. | Extended controller pre-initialization using boot partitions in solid state systems |
CN109240603A (zh) * | 2018-08-10 | 2019-01-18 | 微网云(深圳)技术有限公司 | 全闪存服务器 |
US10956071B2 (en) | 2018-10-01 | 2021-03-23 | Western Digital Technologies, Inc. | Container key value store for data storage devices |
US10769062B2 (en) | 2018-10-01 | 2020-09-08 | Western Digital Technologies, Inc. | Fine granularity translation layer for data storage devices |
US10740231B2 (en) | 2018-11-20 | 2020-08-11 | Western Digital Technologies, Inc. | Data access in data storage device including storage class memory |
CN111526172B (zh) * | 2019-02-03 | 2022-11-29 | 杭州登临瀚海科技有限公司 | 一种多设备管理方法和管理系统 |
CN110069443B (zh) * | 2019-05-05 | 2023-02-03 | 山东浪潮人工智能研究院有限公司 | 一种基于fpga控制的ufs存储阵列系统及数据传输方法 |
CN110187835B (zh) * | 2019-05-24 | 2023-02-03 | 北京百度网讯科技有限公司 | 用于管理访问请求的方法、装置、设备和存储介质 |
KR20210003370A (ko) | 2019-07-02 | 2021-01-12 | 삼성전자주식회사 | 하드웨어 로직을 이용하여 통신 오버헤드를 감소시킨 스토리지 장치 |
CN112486638A (zh) * | 2019-09-11 | 2021-03-12 | 百度时代网络技术(北京)有限公司 | 用于执行处理任务的方法、装置、设备和存储介质 |
US11093352B2 (en) | 2019-09-11 | 2021-08-17 | Hewlett Packard Enterprise Development Lp | Fault management in NVMe systems |
US11269524B2 (en) | 2019-10-07 | 2022-03-08 | Samsung Electronics Co., Ltd. | Methods and systems for managing data transfer between a UFS host and a UFS target |
US11016905B1 (en) | 2019-11-13 | 2021-05-25 | Western Digital Technologies, Inc. | Storage class memory access |
US11249921B2 (en) | 2020-05-06 | 2022-02-15 | Western Digital Technologies, Inc. | Page modification encoding and caching |
CN111913666B (zh) * | 2020-07-31 | 2022-06-07 | 深圳忆联信息系统有限公司 | 兼容不同协议Nand颗粒的方法、装置、计算机设备及存储介质 |
CN114442924B (zh) * | 2021-12-06 | 2024-03-15 | 北京航空航天大学 | 一种不规则控制器的控制方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101149664A (zh) * | 2007-10-26 | 2008-03-26 | 华为技术有限公司 | 固态硬盘及处理其管理数据的方法 |
Family Cites Families (155)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6182248B1 (en) | 1998-04-07 | 2001-01-30 | International Business Machines Corporation | Method and tool for computer bus fault isolation and recovery design verification |
US6304984B1 (en) | 1998-09-29 | 2001-10-16 | International Business Machines Corporation | Method and system for injecting errors to a device within a computer system |
US6148354A (en) | 1999-04-05 | 2000-11-14 | M-Systems Flash Disk Pioneers Ltd. | Architecture for a universal serial bus-based PC flash disk |
US7103684B2 (en) | 2003-12-02 | 2006-09-05 | Super Talent Electronics, Inc. | Single-chip USB controller reading power-on boot code from integrated flash memory for user storage |
US8266367B2 (en) | 2003-12-02 | 2012-09-11 | Super Talent Electronics, Inc. | Multi-level striping and truncation channel-equalization for flash-memory system |
US8037234B2 (en) | 2003-12-02 | 2011-10-11 | Super Talent Electronics, Inc. | Command queuing smart storage transfer manager for striping data to raw-NAND flash modules |
US20080192928A1 (en) | 2000-01-06 | 2008-08-14 | Super Talent Electronics, Inc. | Portable Electronic Storage Devices with Hardware Security Based on Advanced Encryption Standard |
US6785785B2 (en) | 2000-01-25 | 2004-08-31 | Hewlett-Packard Development Company, L.P. | Method for supporting multi-level stripping of non-homogeneous memory to maximize concurrency |
US6519718B1 (en) | 2000-02-18 | 2003-02-11 | International Business Machines Corporation | Method and apparatus implementing error injection for PCI bridges |
DE60110227T2 (de) | 2000-06-27 | 2006-02-09 | Koninklijke Philips Electronics N.V. | Integrierte schaltung mit flash |
US6785767B2 (en) | 2000-12-26 | 2004-08-31 | Intel Corporation | Hybrid mass storage system and method with two different types of storage medium |
GB0123415D0 (en) | 2001-09-28 | 2001-11-21 | Memquest Ltd | Method of writing data to non-volatile memory |
US7234052B2 (en) | 2002-03-08 | 2007-06-19 | Samsung Electronics Co., Ltd | System boot using NAND flash memory and method thereof |
JP4073799B2 (ja) | 2003-02-07 | 2008-04-09 | 株式会社ルネサステクノロジ | メモリシステム |
US6856556B1 (en) | 2003-04-03 | 2005-02-15 | Siliconsystems, Inc. | Storage subsystem with embedded circuit for protecting against anomalies in power signal from host |
US6988175B2 (en) | 2003-06-30 | 2006-01-17 | M-Systems Flash Disk Pioneers Ltd. | Flash memory management method that is resistant to data corruption by power loss |
US20050251617A1 (en) | 2004-05-07 | 2005-11-10 | Sinclair Alan W | Hybrid non-volatile memory system |
US7594135B2 (en) | 2003-12-31 | 2009-09-22 | Sandisk Corporation | Flash memory system startup operation |
US7127549B2 (en) | 2004-02-04 | 2006-10-24 | Sandisk Corporation | Disk acceleration using first and second storage devices |
US7136973B2 (en) | 2004-02-04 | 2006-11-14 | Sandisk Corporation | Dual media storage device |
US20110145489A1 (en) | 2004-04-05 | 2011-06-16 | Super Talent Electronics, Inc. | Hybrid storage device |
US20050223373A1 (en) | 2004-04-05 | 2005-10-06 | Dell Products L.P. | Method for updating the firmware of a device |
US7617359B2 (en) | 2004-06-10 | 2009-11-10 | Marvell World Trade Ltd. | Adaptive storage system including hard disk drive with flash interface |
US7536506B2 (en) | 2004-06-21 | 2009-05-19 | Dot Hill Systems Corporation | RAID controller using capacitor energy source to flush volatile cache data to non-volatile memory during main power outage |
US7502256B2 (en) | 2004-11-30 | 2009-03-10 | Siliconsystems, Inc. | Systems and methods for reducing unauthorized data recovery from solid-state storage devices |
US7620773B2 (en) | 2005-04-15 | 2009-11-17 | Microsoft Corporation | In-line non volatile memory disk read cache and write buffer |
US8200887B2 (en) | 2007-03-29 | 2012-06-12 | Violin Memory, Inc. | Memory management system and method |
US7631245B2 (en) | 2005-09-26 | 2009-12-08 | Sandisk Il Ltd. | NAND flash memory controller exporting a NAND interface |
US8291295B2 (en) * | 2005-09-26 | 2012-10-16 | Sandisk Il Ltd. | NAND flash memory controller exporting a NAND interface |
GB2433362B (en) | 2005-12-16 | 2008-04-09 | Ingenia Technology Ltd | Modification of magnetic materials |
US7861122B2 (en) | 2006-01-27 | 2010-12-28 | Apple Inc. | Monitoring health of non-volatile memory |
US7460394B2 (en) | 2006-05-18 | 2008-12-02 | Infineon Technologies Ag | Phase change memory having temperature budget sensor |
US7447846B2 (en) | 2006-04-12 | 2008-11-04 | Mediatek Inc. | Non-volatile memory sharing apparatus for multiple processors and method thereof |
US7653778B2 (en) | 2006-05-08 | 2010-01-26 | Siliconsystems, Inc. | Systems and methods for measuring the useful life of solid-state storage devices |
JP4700562B2 (ja) | 2006-05-18 | 2011-06-15 | 株式会社バッファロー | データ記憶装置およびデータ記憶方法 |
KR100880379B1 (ko) | 2006-05-25 | 2009-01-23 | 삼성전자주식회사 | 외부로부터 제공받는 부트 코드로 부팅되는 정보기기시스템 |
US7716411B2 (en) | 2006-06-07 | 2010-05-11 | Microsoft Corporation | Hybrid memory device with single interface |
US7613876B2 (en) | 2006-06-08 | 2009-11-03 | Bitmicro Networks, Inc. | Hybrid multi-tiered caching storage system |
US7765373B1 (en) | 2006-06-27 | 2010-07-27 | Siliconsystems, Inc. | System for controlling use of a solid-state storage subsystem |
US8108692B1 (en) | 2006-06-27 | 2012-01-31 | Siliconsystems, Inc. | Solid-state storage subsystem security solution |
US7447807B1 (en) | 2006-06-30 | 2008-11-04 | Siliconsystems, Inc. | Systems and methods for storing data in segments of a storage subsystem |
US7509441B1 (en) | 2006-06-30 | 2009-03-24 | Siliconsystems, Inc. | Systems and methods for segmenting and protecting a storage subsystem |
US8296521B2 (en) | 2006-06-30 | 2012-10-23 | Mosaid Technologies Incorporated | Method of configuring non-volatile memory for a hybrid disk drive |
WO2008022094A2 (en) | 2006-08-14 | 2008-02-21 | Plankton Technologies, Llc | Data storage device |
US7623401B2 (en) | 2006-10-06 | 2009-11-24 | Qimonda North America Corp. | Semiconductor device including multi-bit memory cells and a temperature budget sensor |
US8161227B1 (en) | 2006-10-30 | 2012-04-17 | Siliconsystems, Inc. | Storage subsystem capable of programming field-programmable devices of a target computer system |
US8151082B2 (en) | 2007-12-06 | 2012-04-03 | Fusion-Io, Inc. | Apparatus, system, and method for converting a storage request into an append data storage command |
KR20090102789A (ko) | 2006-12-06 | 2009-09-30 | 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) | 프로그레시브 raid를 이용한 데이터 저장 장치, 시스템 및 방법 |
US8549236B2 (en) | 2006-12-15 | 2013-10-01 | Siliconsystems, Inc. | Storage subsystem with multiple non-volatile memory arrays to protect against data losses |
US7710777B1 (en) | 2006-12-20 | 2010-05-04 | Marvell International Ltd. | Semi-volatile NAND flash memory |
US7596643B2 (en) | 2007-02-07 | 2009-09-29 | Siliconsystems, Inc. | Storage subsystem with configurable buffer |
US7685338B2 (en) | 2007-05-24 | 2010-03-23 | Siliconsystems, Inc. | Solid state storage subsystem for embedded applications |
US7685337B2 (en) | 2007-05-24 | 2010-03-23 | Siliconsystems, Inc. | Solid state storage subsystem for embedded applications |
US8051358B2 (en) | 2007-07-06 | 2011-11-01 | Micron Technology, Inc. | Error recovery storage along a nand-flash string |
US7861038B2 (en) | 2007-07-17 | 2010-12-28 | International Business Machines Corporation | Method and apparatus for managing data in a hybrid drive system |
US7685374B2 (en) | 2007-07-26 | 2010-03-23 | Siliconsystems, Inc. | Multi-interface and multi-bus structured solid-state storage subsystem |
US7584308B2 (en) | 2007-08-31 | 2009-09-01 | International Business Machines Corporation | System for supporting partial cache line write operations to a memory module to reduce write data traffic on a memory channel |
US8095851B2 (en) | 2007-09-06 | 2012-01-10 | Siliconsystems, Inc. | Storage subsystem capable of adjusting ECC settings based on monitored conditions |
US8775717B2 (en) | 2007-12-27 | 2014-07-08 | Sandisk Enterprise Ip Llc | Storage controller for flash memory including a crossbar switch connecting a plurality of processors with a plurality of internal memories |
CN101632068B (zh) | 2007-12-28 | 2015-01-14 | 株式会社东芝 | 半导体存储装置 |
US8078918B2 (en) | 2008-02-07 | 2011-12-13 | Siliconsystems, Inc. | Solid state storage subsystem that maintains and provides access to data reflective of a failure risk |
US7962792B2 (en) | 2008-02-11 | 2011-06-14 | Siliconsystems, Inc. | Interface for enabling a host computer to retrieve device monitor data from a solid state storage subsystem |
TW200947450A (en) | 2008-05-09 | 2009-11-16 | A Data Technology Co Ltd | Storage system capable of data recovery and method thereof |
US7733712B1 (en) | 2008-05-20 | 2010-06-08 | Siliconsystems, Inc. | Storage subsystem with embedded circuit for protecting against anomalies in power signal from host |
US8285919B2 (en) | 2008-05-27 | 2012-10-09 | Initio Corporation | SSD with improved bad block management |
US7970978B2 (en) * | 2008-05-27 | 2011-06-28 | Initio Corporation | SSD with SATA and USB interfaces |
US8065304B2 (en) * | 2008-06-11 | 2011-11-22 | International Business Machines Corporation | Using asymmetric memory |
US8190983B2 (en) | 2008-06-12 | 2012-05-29 | Lsi Corporation | Apparatus and methods for CRC error injection in a storage system |
US8375151B1 (en) | 2009-02-12 | 2013-02-12 | Siliconsystems, Inc. | Command portal for securely communicating and executing non-standard storage subsystem commands |
US8583835B1 (en) | 2008-08-06 | 2013-11-12 | Siliconsystems, Inc. | Command portal for executing non-standard storage subsystem commands |
US20100088459A1 (en) | 2008-10-06 | 2010-04-08 | Siamak Arya | Improved Hybrid Drive |
US7957173B2 (en) * | 2008-10-14 | 2011-06-07 | Mosaid Technologies Incorporated | Composite memory having a bridging device for connecting discrete memory devices to a system |
US8499120B2 (en) | 2008-10-17 | 2013-07-30 | Seagate Technology Llc | User selectable caching management |
US9176859B2 (en) | 2009-01-07 | 2015-11-03 | Siliconsystems, Inc. | Systems and methods for improving the performance of non-volatile memory operations |
US8412880B2 (en) | 2009-01-08 | 2013-04-02 | Micron Technology, Inc. | Memory system controller to manage wear leveling across a plurality of storage nodes |
US20100180182A1 (en) | 2009-01-09 | 2010-07-15 | Seagate Technology Llc | Data memory device and controller with interface error detection and handling logic |
KR20100091379A (ko) | 2009-02-10 | 2010-08-19 | 삼성전자주식회사 | 반도체 디스크 장치 및 그것의 프로그램 페일 처리 방법 |
US8090899B1 (en) | 2009-03-04 | 2012-01-03 | Western Digital Technologies, Inc. | Solid state drive power safe wear-leveling |
US10079048B2 (en) | 2009-03-24 | 2018-09-18 | Western Digital Technologies, Inc. | Adjusting access of non-volatile semiconductor memory based on access time |
KR101575248B1 (ko) | 2009-04-30 | 2015-12-07 | 삼성전자주식회사 | 메모리 컨트롤러 및 그것을 포함하는 메모리 시스템 |
WO2010137178A1 (en) | 2009-05-25 | 2010-12-02 | Hitachi,Ltd. | Storage subsystem |
US20100325352A1 (en) | 2009-06-19 | 2010-12-23 | Ocz Technology Group, Inc. | Hierarchically structured mass storage device and method |
US8504789B2 (en) | 2009-06-29 | 2013-08-06 | Mosaid Technologies Incorporated | Bridging device having a frequency configurable clock domain |
KR101662824B1 (ko) * | 2009-07-08 | 2016-10-06 | 삼성전자주식회사 | 고체 상태 드라이브 장치 및 그것의 구동 방법 |
US20110035540A1 (en) * | 2009-08-10 | 2011-02-10 | Adtron, Inc. | Flash blade system architecture and method |
US20110041039A1 (en) * | 2009-08-11 | 2011-02-17 | Eliyahou Harari | Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device |
US20110040924A1 (en) | 2009-08-11 | 2011-02-17 | Selinger Robert D | Controller and Method for Detecting a Transmission Error Over a NAND Interface Using Error Detection Code |
US8243525B1 (en) | 2009-09-30 | 2012-08-14 | Western Digital Technologies, Inc. | Refreshing non-volatile semiconductor memory by reading without rewriting |
US8254172B1 (en) | 2009-09-30 | 2012-08-28 | Western Digital Technologies, Inc. | Wear leveling non-volatile semiconductor memory based on erase times and program times |
US8195909B2 (en) | 2009-10-05 | 2012-06-05 | Seagate Technology Llc | Data management in a data storage system |
US9753847B2 (en) | 2009-10-27 | 2017-09-05 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping |
US8261012B2 (en) | 2009-10-30 | 2012-09-04 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory comprising power fail circuitry for flushing write data in response to a power fail signal |
US8135903B1 (en) | 2009-10-30 | 2012-03-13 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory compressing data to improve performance |
US8560770B2 (en) | 2009-11-13 | 2013-10-15 | Seagate Technology Llc | Non-volatile write cache for a data storage system |
US8769241B2 (en) | 2009-12-04 | 2014-07-01 | Marvell World Trade Ltd. | Virtualization of non-volatile memory and hard disk drive as a single logical drive |
US8397107B1 (en) | 2009-12-11 | 2013-03-12 | Western Digital Technologies, Inc. | Data storage device employing data path protection using both LBA and PBA |
US8443167B1 (en) | 2009-12-16 | 2013-05-14 | Western Digital Technologies, Inc. | Data storage device employing a run-length mapping table and a single address mapping table |
US8443263B2 (en) * | 2009-12-30 | 2013-05-14 | Sandisk Technologies Inc. | Method and controller for performing a copy-back operation |
WO2011094454A2 (en) | 2010-01-27 | 2011-08-04 | Fusion-Io, Inc. | Apparatus, system, and method for determining a read voltage threshold for solid-state storage media |
US8380915B2 (en) | 2010-01-27 | 2013-02-19 | Fusion-Io, Inc. | Apparatus, system, and method for managing solid-state storage media |
US8316176B1 (en) | 2010-02-17 | 2012-11-20 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification |
US8407449B1 (en) | 2010-02-26 | 2013-03-26 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table |
US8725931B1 (en) | 2010-03-26 | 2014-05-13 | Western Digital Technologies, Inc. | System and method for managing the execution of memory commands in a solid-state memory |
US8713066B1 (en) | 2010-03-29 | 2014-04-29 | Western Digital Technologies, Inc. | Managing wear leveling and garbage collection operations in a solid-state memory using linked lists |
US8782327B1 (en) | 2010-05-11 | 2014-07-15 | Western Digital Technologies, Inc. | System and method for managing execution of internal commands and host commands in a solid-state memory |
US9026716B2 (en) * | 2010-05-12 | 2015-05-05 | Western Digital Technologies, Inc. | System and method for managing garbage collection in solid-state memory |
US8201024B2 (en) | 2010-05-17 | 2012-06-12 | Microsoft Corporation | Managing memory faults |
US8341339B1 (en) | 2010-06-14 | 2012-12-25 | Western Digital Technologies, Inc. | Hybrid drive garbage collecting a non-volatile semiconductor memory by migrating valid data to a disk |
US8612669B1 (en) | 2010-06-28 | 2013-12-17 | Western Digital Technologies, Inc. | System and method for performing data retention in solid-state memory using copy commands and validity and usage data |
US8533550B2 (en) | 2010-06-29 | 2013-09-10 | Intel Corporation | Method and system to improve the performance and/or reliability of a solid-state drive |
US8447920B1 (en) * | 2010-06-29 | 2013-05-21 | Western Digital Technologies, Inc. | System and method for managing data access in non-volatile memory |
US8521972B1 (en) | 2010-06-30 | 2013-08-27 | Western Digital Technologies, Inc. | System and method for optimizing garbage collection in data storage |
US8639872B1 (en) | 2010-08-13 | 2014-01-28 | Western Digital Technologies, Inc. | Hybrid drive comprising write cache spanning non-volatile semiconductor memory and disk |
US8775720B1 (en) | 2010-08-31 | 2014-07-08 | Western Digital Technologies, Inc. | Hybrid drive balancing execution times for non-volatile semiconductor memory and disk |
US8638602B1 (en) | 2010-09-10 | 2014-01-28 | Western Digital Technologies, Inc. | Background selection of voltage reference values for performing memory read operations |
US8769190B1 (en) | 2010-09-15 | 2014-07-01 | Western Digital Technologies, Inc. | System and method for reducing contentions in solid-state memory access |
US8788779B1 (en) | 2010-09-17 | 2014-07-22 | Western Digital Technologies, Inc. | Non-volatile storage subsystem with energy-based performance throttling |
US8612804B1 (en) | 2010-09-30 | 2013-12-17 | Western Digital Technologies, Inc. | System and method for improving wear-leveling performance in solid-state memory |
US9009391B2 (en) | 2010-10-25 | 2015-04-14 | Fastor Systems, Inc. | Solid state drive architecture |
US8601313B1 (en) | 2010-12-13 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for a data reliability scheme in a solid state memory |
US8601311B2 (en) | 2010-12-14 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory |
US8615681B2 (en) | 2010-12-14 | 2013-12-24 | Western Digital Technologies, Inc. | System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss |
US8458435B1 (en) | 2010-12-20 | 2013-06-04 | Western Digital Technologies, Inc. | Sequential write thread detection |
US8392635B2 (en) | 2010-12-22 | 2013-03-05 | Western Digital Technologies, Inc. | Selectively enabling a host transfer interrupt |
US8683113B2 (en) | 2011-02-04 | 2014-03-25 | Western Digital Technologies, Inc. | Concurrently searching multiple devices of a non-volatile semiconductor memory |
US8700950B1 (en) | 2011-02-11 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for data error recovery in a solid state subsystem |
US8700951B1 (en) | 2011-03-09 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata |
US9239806B2 (en) | 2011-03-11 | 2016-01-19 | Micron Technology, Inc. | Systems, devices, memory controllers, and methods for controlling memory |
US8769232B2 (en) * | 2011-04-06 | 2014-07-01 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory module enabling out of order host command chunk media access |
US8886904B2 (en) | 2011-04-14 | 2014-11-11 | Kaminario Technologies Ltd. | Managing a solid-state storage device |
US8862804B2 (en) | 2011-04-29 | 2014-10-14 | Western Digital Technologies, Inc. | System and method for improved parity determination within a data redundancy scheme in a solid state memory |
US8751728B1 (en) | 2011-04-29 | 2014-06-10 | Western Digital Technologies, Inc. | Storage system bus transfer optimization |
US9021178B2 (en) | 2011-05-02 | 2015-04-28 | Western Digital Technologies, Inc. | High performance path for command processing |
US8503237B1 (en) | 2011-05-18 | 2013-08-06 | Western Digital Technologies, Inc. | System and method for data recovery in a solid state storage device |
US8793429B1 (en) | 2011-06-03 | 2014-07-29 | Western Digital Technologies, Inc. | Solid-state drive with reduced power up time |
US8719531B2 (en) | 2011-06-14 | 2014-05-06 | Western Digital Technologies, Inc. | System and method for performing data retention that incorporates environmental conditions |
US8423722B1 (en) | 2011-08-26 | 2013-04-16 | Western Digital Technologies, Inc. | System and method for high performance command processing in solid state drives |
US8713357B1 (en) | 2011-09-06 | 2014-04-29 | Western Digital Technologies, Inc. | Systems and methods for detailed error reporting in data storage systems |
US8707104B1 (en) | 2011-09-06 | 2014-04-22 | Western Digital Technologies, Inc. | Systems and methods for error injection in data storage systems |
US8700834B2 (en) | 2011-09-06 | 2014-04-15 | Western Digital Technologies, Inc. | Systems and methods for an enhanced controller architecture in data storage systems |
US9798654B2 (en) | 2011-09-15 | 2017-10-24 | International Business Machines Corporation | Retention management for phase change memory lifetime improvement through application and hardware profile matching |
US8977803B2 (en) * | 2011-11-21 | 2015-03-10 | Western Digital Technologies, Inc. | Disk drive data caching using a multi-tiered memory |
US8724422B1 (en) | 2012-02-29 | 2014-05-13 | Western Digital Technologies, Inc. | System and method for charging back-up charge storage element for data storage device using spindle phase switching elements |
US9003224B2 (en) | 2012-04-25 | 2015-04-07 | Western Digital Technologies, Inc. | Managing unreliable memory in data storage systems |
US8788778B1 (en) | 2012-06-04 | 2014-07-22 | Western Digital Technologies, Inc. | Garbage collection based on the inactivity level of stored data |
US8966343B2 (en) | 2012-08-21 | 2015-02-24 | Western Digital Technologies, Inc. | Solid-state drive retention monitor using reference blocks |
US8788880B1 (en) | 2012-08-22 | 2014-07-22 | Western Digital Technologies, Inc. | Efficient retry mechanism for solid-state memory failures |
US9268682B2 (en) | 2012-10-05 | 2016-02-23 | Skyera, Llc | Methods, devices and systems for physical-to-logical mapping in solid state drives |
US8972826B2 (en) | 2012-10-24 | 2015-03-03 | Western Digital Technologies, Inc. | Adaptive error correction codes for data storage systems |
US9177638B2 (en) | 2012-11-13 | 2015-11-03 | Western Digital Technologies, Inc. | Methods and devices for avoiding lower page corruption in data storage devices |
US8954694B2 (en) | 2012-11-15 | 2015-02-10 | Western Digital Technologies, Inc. | Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive |
US9021339B2 (en) | 2012-11-29 | 2015-04-28 | Western Digital Technologies, Inc. | Data reliability schemes for data storage systems |
US9059736B2 (en) | 2012-12-03 | 2015-06-16 | Western Digital Technologies, Inc. | Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme |
US20140223255A1 (en) | 2012-12-18 | 2014-08-07 | Western Digital Technologies, Inc. | Decoder having early decoding termination detection |
US9430376B2 (en) | 2012-12-26 | 2016-08-30 | Western Digital Technologies, Inc. | Priority-based garbage collection for data storage systems |
-
2011
- 2011-09-06 US US13/226,393 patent/US8700834B2/en active Active
-
2012
- 2012-09-06 CN CN201210328166.7A patent/CN103176746B/zh active Active
-
2014
- 2014-02-20 US US14/185,032 patent/US9021168B1/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101149664A (zh) * | 2007-10-26 | 2008-03-26 | 华为技术有限公司 | 固态硬盘及处理其管理数据的方法 |
Also Published As
Publication number | Publication date |
---|---|
US8700834B2 (en) | 2014-04-15 |
US9021168B1 (en) | 2015-04-28 |
US20130060981A1 (en) | 2013-03-07 |
CN103176746A (zh) | 2013-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103176746B (zh) | 用于数据存储系统中增强的控制器架构的系统和方法 | |
US10725956B2 (en) | Memory device for a hierarchical memory architecture | |
CN104919431B (zh) | 配置固态存储器中操作模式的系统和方法 | |
CN103455283B (zh) | 一种混合存储系统 | |
CN103080917B (zh) | 可扩展存储装置 | |
US8949507B2 (en) | Method for performing block management, and associated memory device and controller thereof | |
CN103034562A (zh) | 闪存介质控制器中的元数据处理 | |
CN108628777A (zh) | 动态和自适应中断合并的系统和方法 | |
US9195530B1 (en) | Systems and methods for improved data management in data storage systems | |
CN103092782A (zh) | 用于闪存器件的闪存控制器硬件架构 | |
CN103282887A (zh) | 用于进行后台操作的控制器和方法 | |
US20130073797A1 (en) | Memory device | |
JP2009282678A (ja) | フラッシュメモリモジュール及びストレージシステム | |
CN102439576A (zh) | 存储器控制器、存储器系统、固态驱动器及用于处理若干个命令的方法 | |
EP1632858A2 (en) | Semiconductor memory device and access method and memory control system for same | |
US9037814B2 (en) | Flash memory management method and flash memory controller and storage system using the same | |
CN102782654A (zh) | 用于执行回拷操作的方法和控制器 | |
CN103946819A (zh) | 用于非易失性系统存储器的统计耗损均衡 | |
EP2225642A1 (en) | Storage controller for flash memory including a crossbar switch connecting processors with internal memories | |
CN103339618A (zh) | 用于存取面向块的非易失性存储器的控制布置和方法 | |
CN103635968A (zh) | 包含存储器系统控制器的设备和相关方法 | |
CN104050097A (zh) | 在具有不同的最小可寻址数据单元大小的非易失性存储器单元之间进行选择 | |
CN108153482A (zh) | Io命令处理方法与介质接口控制器 | |
CN114746834A (zh) | 基于分区状态的分区附加命令调度 | |
KR20230142795A (ko) | Zns 디바이스들에서의 상이한 기입 우선순위화 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1182500 Country of ref document: HK |
|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1182500 Country of ref document: HK |