CN103282887A - 用于进行后台操作的控制器和方法 - Google Patents
用于进行后台操作的控制器和方法 Download PDFInfo
- Publication number
- CN103282887A CN103282887A CN201180063796XA CN201180063796A CN103282887A CN 103282887 A CN103282887 A CN 103282887A CN 201180063796X A CN201180063796X A CN 201180063796XA CN 201180063796 A CN201180063796 A CN 201180063796A CN 103282887 A CN103282887 A CN 103282887A
- Authority
- CN
- China
- Prior art keywords
- order
- controller
- foreground
- background commands
- nand
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0605—Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/0656—Data buffering arrangements
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
在此所述的实施例提供了用于进行后台命令或者操作的控制器和方法。在一个实施例中,为控制器提供接口,通过接口与主机和多个快闪存储器器件通信。该控制器包含处理器,该处理器操作以进行从所述主机接收的前台命令,其中处理器不中断地进行所述前台命令直到完成。该处理器还操作以进行在所述控制器的存储器中存储的后台命令或操作,其中所述处理器进行所述后台命令直到完成或者直到被前台命令占先。如果后台命令被占先,则该处理器可以在稍后的时间恢复进行所述后台命令直到完成。
Description
背景技术
开放式NAND快闪接口(ONFI)协议提供了对于并行访问单个“目标”上的多个NAND裸芯(或“逻辑单元”(LUN))或者单个共享的ONFI通道(channel)上的NAND多芯片堆叠的支持。例如,如图8所示,对于包含4个NAND裸芯(LUN0-3)的目标ONFI器件,擦除、编程或者读取操作可以由主机控制器发出并且在这些LUN中的三个上执行,而命令仍在第四个LUN上进行。这提供了在主机控制命令到达时对所有四个裸芯的重叠阵列访问(最佳利用)。但是,注意,这些命令中的仅一个可以一次在共享通道上发送或接收其数据。
在通常的大容量存储应用中,比如固态盘(SSD)中,中央主机控制器将在其串行高级技术附连(SATA)接口上接收命令,并且翻译它们以分发并发布到多个ONFI目标NAND多芯片堆叠。除了将主机命令分派到意图的存储器裸芯之外,主机控制器还可以进行存储器管理/存储优化功能,这通常包括在NAND裸芯的池之间的不小的量的数据移动/复制。无论主机控制器正在向每个LUN分派主机命令还是存储器管理/存储优化命令,该命令都在该LUN上不被中断地运行直到完成。
发明内容
本发明由权利要求定义,并且此部分不应被当作是对那些权利要求的限制。
通过介绍,以下描述的实施例提供了用于进行后台操作的控制器和方法。在一个实施例中,为控制器提供接口,通过这些接口与主机和多个快闪存储器器件通信。该控制器包含操作以进行从主机接收的前台命令的处理器,其中该处理器不中断地进行该前台命令直到完成。该处理器还操作以进行在控制器的存储器中存储的后台命令或操作,其中该处理器进行该后台命令直到完成或者被前台命令占先(preempt)。如果后台命令被占先,则处理器可以在稍后的时间恢复进行该后台命令直到完成。
公开了其他实施例,每个实施例可以单独使用或者组合在一起使用。现在将参考附图描述这些实施例。
附图说明
图1是一个实施例的示例控制器的框图。
图2是一个实施例的固态盘的框图。
图3是例示在前台和后台命令之间区分的一般概念的一个实施例的框图。
图4是一个实施例的示例状态寄存器的例示。
图5是一个实施例的控制器中的一致性规则的使用的例示。
图6是在LUN到LUN复制的一个实施例中在示例的复制操作期间的一致性规则的另外的例示。
图7是一个实施例的示例控制器的框图。
图8是现有技术的主机控制器和ONFI目标的框图。
具体实施方式
介绍
一些实施例针对用于进行后台操作的控制器和方法。如上所述,尽管ONFI协议提供了对于并行访问多个NAND LUN的支持以允许在等到主机控制器命令到达时利用多个NAND LUN,但是在进行中的命令必须不被中断地运行直到完成,即使进行中的命令比到来的命令有更低的优先级。这可能发生在例如进行中的命令是用于快闪器件管理的操作、而到来的命令是用于读取或写入用户数据。在这样的情况下性能可能极大降低。
为了克服此问题并改善性能,以下实施例提供了可以在用于应该被不被中断进行地直到完成的操作的命令(“前台命令”)和用于可以被前台命令占先/中断并且在稍后的时间继续的操作的命令(“后台命令”)之间区分的控制器。以此方式,不像通常具有预定的完成时间的前台命令那样,后台命令依赖于它们被前台命令中断了多少而可能具有不确定的完成时间。这些实施例还利用了主机控制器通常将不消耗到/来自所有NAND LUN的全部并行带宽的事实。这些实施例还提供了具有利用“空转”时间来进行后台命令的机制和规则的分割前台/后台协议。在一个优选实施例中,这些机制被设计为与支持当前的ONFI标准性能的主机控制器兼容。
在转向与前台和后台命令的使用有关的示例实施例之前,以下部分讨论用于与NAND接口和NAND接口协议一起使用的示例的控制器架构。
示例控制器架构和NAND接口及协议
现在转向附图,图1是一个实施例的示例控制器100的框图。如图1所示,控制器100通过第一NAND接口125处于与主机120(具有主机控制器121)的通信并且通过一个或多个第二NAND接口135处于与一个或多个NAND快闪存储器器件(或“逻辑单元”(LUN))130的通信。(固态盘(SSD)应用中的主机控制器可以具有一个或多个第一NAND接口(例如八个通道),在此情况下控制器100可以仅看到这些通道中的一个。)如在此使用的,短语“与……通信”意味着直接与之通信或者通过一个或多个组件间接与之通信,这可能或者可能没有在此示出或描述。而且,尽管控制器100和快闪存储器器件130被示出为两个单独的框,但是应该理解,控制器100和快闪存储器器件130可以按任何适当的方式布置(例如封装在不同的包装中,封装在共同的多芯片包装内,或者集成在相同的一个裸芯上)。在这些布置中的任意一个中,优选地,控制器物理地定位为与主机分离。这允许控制器和快闪存储器器件被认为是单独的电路单元,这可以用在各种主机中。
“主机”是能够通过控制器100直接地或者经过一个或多个在此列举或没有列举的组件间接访问一个或多个快闪存储器器件130的任意实体。主机可以采取任意适当的形式,比如但不限于个人计算机、移动电话、游戏设备、个人数字助理(PDA)、电子邮件/文本发送设备、数码相机、数字媒体(例如MP3)播放器、GPS导航设备、个人导航系统(PND)、移动因特网设备(MID)和TV系统。依赖于应用,主机120可以采取硬件设备、软件应用或者硬件和软件的组合的形式。
“快闪存储器器件”指的是包含多个快闪存储器单元以及用于在快闪存储器单元内存储数据的任何所需的控制电路的器件。在一个实施例中,快闪存储器单元是NAND存储器单元,尽管可以使用诸如无源元件阵列的包括一次可编程存储器元件和/或可再写存储器元件的其他存储器技术。(应该注意,在这些实施例中,非NAND型快闪存储器器件仍可以使用NAND接口和/或NAND命令和协议。)无源元件阵列的一个例子是三维存储器阵列。如在此使用的,三维存储器阵列指的是包括在单个硅基板上一个在一个上垂直堆叠的多层存储器单元的存储器阵列。以此方式,三维存储器阵列是单片集成电路结构,而不是彼此紧密靠近地封装或裸芯粘合的多个集成电路器件。尽管三维存储器阵列是优选的,但是替代地,存储器阵列可以采取二维(平面)阵列的形式。通过引用合并于此的以下专利文献描述了用于三维存储器阵列的适当的配置,其中三维存储器阵列被配置为多个级,字线和/或位线在各级之间共享:美国专利号6,034,882;6,185,122;6,420,215;6,631,085;以及7,081,377。而且,快闪存储器器件130可以是单个存储器裸芯或者多个存储器裸芯。因而,在权利要求中使用的短语“快闪存储器器件”可以指的是仅一个快闪存储器器件或者多于一个快闪存储器器件。
如图1所示,控制器100还包括处理器105、队列110、一个或多个状态寄存器112、一个或多个页缓冲器114以及错误校正码(ECC)模块116。(控制器100可以包含其他组件,未在图1中示出它们以简化附图。)如在此使用的,“模块”可以包括硬件、软件、固件或其任意组合。“模块”可以采取的形式的例子包括但不限于以下中的一个或多个:微处理器或处理器、和计算机可读介质,其中,该计算机可读介质存储可由例如(微)处理器、逻辑门、开关、专用集成电路(ASIC)、可编程逻辑控制器和嵌入的微控制器执行的计算机可读程序代码(例如软件或固件)。尽管在图1中仅示出了一个模块(ECC模块116),但是应该理解,可以使用用于提供其他功能的一个或多个另外的模块。这些另外的模块的例子包括但不限于数据加扰、列替换、处理写异常和/或编程故障(经由安全区)、读擦洗、磨损均衡、坏块和/或空闲块管理、错误检测码(EDC)功能、状态功能、加密功能、错误恢复和地址映射(例如逻辑到物理块的映射)。关于这些各个功能的进一步的信息在美国专利申请12/539,394;12/539,407;12/539,379;12/650,263;12/650,255以及12/539,417,通过引用将其合并于此。
如上所述,控制器100使用第一NAND接口125与主机120通信,并且使用第二NAND接口135与快闪存储器器件130通信,它们在NAND接口协议之下操作。NAND接口的例子包括但不限于开放NAND快闪接口(ONFI)、切换模式(toggle mode,TM)和高性能快闪存储器接口,比如在美国专利号7,366,029中描述的接口,通过引用将该专利合并于此。控制器100可选地可以包括一个或多个另外的主机侧接口,用于使用诸如SD、USB、SATA或MMC接口的非NAND接口将将控制器100接口到主机。而且,接口125、135可以使用相同或者不同的NAND接口协议。
通常,NAND接口协议用于使用例如数据线和诸如ALE(地址锁存使能)、CLE(命令锁存使能)和WE#(写使能)的控制信号来协调NAND快闪器件和主机之间的命令和数据传输。尽管目前为止术语“NAND接口协议”还没有由标准主体正式地标准化,但是NAND快闪器件的制造商都遵循支持NAND快闪功能的基本子集的非常类似的协议。这样做以便在其电子产品内使用NAND器件的消费者可以使用来自任意制造商的NAND器件,而无需修整其硬件或软件以用于与具体供应商的器件一起操作。注意,即使提供超过此基本功能子集的额外功能的NAND供应商也确保提供该基本功能,以便提供与其他供应商使用的协议的至少达某种程度的兼容性。
如果给定器件(例如控制器、快闪存储器器件、主机等)包括支持NAND接口协议(例如使用NAND接口协议与另一器件交互)所需的元素(例如硬件、软件、固件或其任意组合),则该给定器件被认为包括、包含或者具有“NAND接口”。(如在此使用的,术语“接口”可以指的是单个接口或多个接口。因而,权利要求中的术语“接口”可以指的是仅一个接口或者多于一个接口。)在本申请中,术语“NAND接口协议”(或简称的“NAND接口”)指的是在发起设备和响应设备之间的接口协议,其通常遵循用于基本的读取、写入和擦除操作的在主机和NAND快闪器件之间的协议,即使其不完全与所有定时参数兼容、相对于NAND器件支持的其他命令不完全兼容或者包含NAND器件不支持的另外的命令。NAND接口协议的一个适当的例子是如下接口协议,该接口协议使用在功能上等同于在与东芝TC58NVG1S3B NAND器件(或东芝TC58NVG2D4B NAND器件)接口用于读取(opcode(操作码)00H)、写入(opcode(操作码)80H)和擦除(opcode(操作码)60H)时所使用的字节序列的传输字节的序列、并且还使用在功能上与上述NAND器件的CLE、ALE、CE、WE和RE信号相等的控制信号。
注意,NAND接口协议是非对称的,其中,主机——不是快闪器件——通过NAND接口发起交互。此外,给定器件(例如控制器)的接口(例如NAND接口或者与另一协议相关联的接口)可以是“主机侧接口”(例如给定器件被适配为使用该主机侧接口与主机交互),或者该给定器件的接口可以是“快闪存储器器件侧接口”(例如,该给定器件被适配为使用该快闪存储器器件侧接口与快闪存储器器件交互)。术语“快闪存储器器件侧接口”、“快闪器件侧接口”和“快闪侧接口”在此可互换使用。
这些术语(即“主机侧接口”和“快闪器件侧接口”)不应与术语“主机类型接口”和“快闪类型接口”混淆,在此在术语上使用它们来在NAND接口的两侧之间区分,因为此协议不是对称的。此外,因为发起交互的是主机,我们注意到如果给定器件包括实现主机侧的NAND接口协议(即用于呈现NAND主机和发起NAND协议交互)所需的硬件和/或软件,则该器件被描述为具有“主机类型接口”。类似地,因为快闪器件不发起交互,我们注意到如果给定器件包括用于实现快闪侧NAND协议(即用于呈现NAND快闪器件)所需的硬件和/或软件,则该器件被描述为具有“快闪类型接口”。
通常,“主机类型接口”(即,担当主机的角色的接口)是“快闪器件侧接口”(即它们与快闪器件交互或者与模拟快闪器件的硬件交互),而“快闪器件类型接口”(即担当快闪器件的角色的接口)通常是“主机侧接口”(即,它们与主机或者与模拟主机的硬件交互)。
可以在美国专利号7,631,245和美国专利申请号12/539,394;12/539,407;12/539,379;12/650,263;12/650,255和12/539,417中找到关于示例的控制器(及其相比于现有控制器的优点)的另外的信息,这些专利和专利申请通过引用合并于此。
最后,应该注意,控制器100和(一个或多个)快闪存储器器件130可以用在任何希望的系统环境中。例如,在一个实现方式中,被制造有一个或多个控制器100/快闪存储器器件130单元的产品被用在固态盘(SSD)中。基于SATA的SSD应用的例子在图2中示出,其中中央主机控制器221(在每个ONFI通道上并且跨过几个ONFI通道)访问多个附连的ONFI目标,其中每个ONFI目标包含与图1中的控制器100类似的控制器并且连接到多个NAND快闪器件230。作为另一例子,控制器100可以用在使用南桥控制器来接口到快闪存储器器件的OEM设计中。
涉及前台和后台命令的实施例
如上所述,尽管ONFI协议提供了对于必须访问多个NAND LUN的支持以允许在等到主机控制器命令到达时利用多个NAND LUN,但是进行中的命令必须不被中断地运行直到完成,即使进行中的命令比到来的命令是更低的优先级。这可能发生在例如处理中的命令是用于进行快闪器件管理操作、而到来的命令是用于读取或写入用户数据时。在这样的情况下性能可能极大降低。
为了克服此问题并改进性能,图1中的控制器100可操作以在前台命令和后台命令之间区分并根据优先级系统执行每个命令。如在此使用的,“前台命令”指的是用于优选地不被中断进行直到完成的操作的命令,并且通常具有预定的完成时间。前台命令通常由主机控制器121发出并且被发送到NAND控制器100用于执行。前台命令的例子包括但不限于读命令、写命令、擦除命令和“遗留回拷(legacy copyback)命令”。
相对照,“后台命令”指的是用于可以被前台命令占先/中断并在稍后的时间继续的操作的命令。不像通常具有预定完成时间的前台命令那样,后台命令依赖于被前台命令中断了多少而可能具有不确定的完成时间。后台命令可以在当前没有主机前台命令在执行时的任何可能的时候进行。后台命令可以由主机控制器121发出并被发送到控制器100用于执行,或者可以由NAND控制器100本身产生。后台命令的例子包括但不限于数据加扰、列替换、处理写异常和/或编程故障(经由安全区)、读擦洗、磨损均衡、坏块和/或空闲块管理、错误检测码(EDC)功能、状态功能、加密功能、错误恢复和地址映射(例如逻辑到物理块的映射)。以下段落更详细地描述这些命令中的一些。
“数据加扰”或“加扰”是输入位序列到输出位序列的可逆变换,使得输出位序列的每位是输入位序列的一些位和辅助位序列的函数。存储在快闪存储器器件中的数据可以被加扰以便通过创建更随机化的数据样式来减少依赖于数据样式的敏感性、干扰影响或者错误。可以在以下专利文献:美国专利申请号11/808,906、12/209,697、12/251,820、12/165,141和11/876,789以及PCT申请号PCT/US08/88625中找到关于数据加扰的更多信息。
“列替换”指的是映射或替换整个坏的列、列的部分或甚至各个单元的各种实现方式。可以在美国专利号7,379,330和7,447,066中找到适当类型的列替换技术。
在向闪存器件写数据时存在几个潜在的问题,其中逻辑或物理上相邻的数据可能出错而在数据试图被写到的位置之外。一个例子是当向存储器的一个区域(例如单元、页或块)的写失败时,并且某些周围的存储器的内容可能出错。这被称为“编程故障”或者“编程干扰”。称为“写异常”的类似的效果是当写(或编程)操作被过早地终止时,例如当非预期地断电时。在这两种情况下,存在可以用于积极主动地将数据从“有风险区”复制到“安全区”以处理写异常和编程故障的算法,如美国专利号6,988,175中所述。
“读擦洗”或者更普遍地“擦洗”指刷新和校正存储在闪存器件中的数据以补偿干扰的技术。擦洗操作需要读取在可能已经面临潜在干扰信号的区域中的数据,并且如果此数据被确定为已经被干扰则进行某些校正的动作。在美国专利号7,012,835、7,224,607和7,477,547中进一步描述了读擦洗。
闪存器件可能被不均匀地写入,并且“磨损均衡”指的是试图使存储器在其使用期限间被写入的次数均匀的技术。在美国专利号6,230,233和6,594,183中描述了示例的磨损均衡技术。
通常,以多余数量(比定义的最小容量更大)的块制造闪存器件。在工厂测试期间或者在器件的使用期间,某些块可能被发现是“坏的”或者“有缺陷的”,意味着它们不能正确地存储数据并需要被替换。类似地,可能存在多余(比定义的最小容量更大)的“好的”块,它们可以被用作“空闲的”,直到另一块故障或者变为有缺陷。保持跟踪这些额外的块分别被称为坏块管理和空闲块管理。可以在美国专利号7,171,536中找到关于坏块和空闲块管理的更多信息。
可以有利地用于ONFI协议中的后台处理的另外的后台命令指的是复制命令的形式。在诸如存储卡或者SSD的大容量存储应用中经常需要复制型操作。标准ONFI协议(直到v2.2)支持各种复制操作。两种主要的方法是(1)主机简单地进行源页到主机控制器的缓冲器存储器中的读取,然后发出该缓冲器到目的地页的编程命令,以及(2)主机发出到(NAND裸芯上的)原始的NAND的页寄存器的回拷读取,然后发出回拷编程命令,告知原始NAND将该页从NAND的页寄存器发送到同一原始NAND裸芯上的新的目的地页。
ONFI v2.3(在2010年8月发布)添加了“EZ NAND”特征,这提供了要在主机控制器和(n个)原始NAND裸芯(LUN)集之间添加的中间控制器ASIC。(图1中的控制器100是支持ONFI版本v2.3或更新版本的命令和/或功能或者部分或完全与这些命令和/或功能兼容的“EZ NAND控制器”的例子。)这在以上两个选择之上扩展为支持“校正的回拷”能力,其中回拷页被读取到EZ NAND控制器的页缓冲器中,在那里该页可以被(用校正的ECC)回拷编程到(在附连到该EZ NAND控制器的任何原始NAND裸芯上的)任何目的地LUN/平面/页。这提供了除了以上列出的两种选择之外的第三选择:(3)主机发出到NAND控制器的页缓冲器114(图1)中的回拷读取,然后发出回拷编程命令,告知NAND控制器100将该页从NAND控制器的页缓冲器114发送到任何附连的原始NAND裸芯130上的新的目的地页。(ECC在被发送回原始裸芯130之前被ECC模块116检验并校正。)
尽管以上的复制选择提供了中间数据移动的基础,但是现有的ONFI协议不支持可以提供更复杂和更强大的数据移动能力的扩展的复制操作。具体地,ONFI具有以下限制:(a)每个主机命令仅复制单个页(不算多平面复制),(b)主机控制器必须发出和控制重复的复制操作的每个步骤(例如读取、然后编程),(c)主机在向同一LUN发出另一命令之前必须等待该命令的完成,以及(d)ONFI不支持同时操作(例如可以被前台中的短的读取占先的后台中的更长的可中断的复制,该后台复制稍后恢复)。
可以使用的另一类型的复制操作是复制列表(CopyList)命令,其提供源页和目的地页/块的灵活的、参数化的列表。可以使用两种类型的复制列表命令:复制页和复制块。通过复制页命令,N页从源页被复制到目的地页。为了中间响应,可以在前台发出复制页命令,在此情况下前台LUN保持忙碌直到读取和编程阶段完成,以便新到达的主机命令不中断此命令。通过复制块命令,N页在后台中从源页被复制到目的地块。复制块命令优选作为后台命令发出,在此情况下后台一个或多个LUN忙碌,仅直到接收到复制列表命令,并且新到达的主机前台命令可以指示复制块命令“暂停”。因为复制块命令可能未完成,可以发出读取元数据命令以询问复制块命令的部分的完成。(在此文档的结尾处讨论与这些命令有关的另外的信息。)
通过上述的前台/后台特征,这些实施例可以提供克服了ONFI的显著限制的后台复制能力。具体地,NAND控制器100可以用于实现多页可中断复制命令,该命令可以在后台以降低的优先级运行。NAND控制器100可以管理后台操作以便可以在任何时间发出前台命令并且其他命令可以不知道进行中的后台命令并且不被进行中的后台命令限制。
返回附图,图3是例示在前台和后台命令之前区分的一般概念的一个实施例的框图。如图3所示,主机控制器121能够进行原本的接口处理(比如SATA和PCIe)并且可以发出前台命令(例如服务存储命令,比如读取和写入)和后台命令(例如快闪存储器管理命令,比如复制和移动)。(应该注意,经过主机控制器121在此例子中能够发出前台命令和后台命令两者,但是如上所述,NAND控制器100本身也可以产生后台命令。)
当NAND控制器100接收到来自主机控制器121的命令时,其确定该命令是应该尽快执行的前台命令(即使这意味着中断在进行中的后台命令)还是该命令是可以存储用于稍后执行(或者如果没有更高优先级的命令正等待或正在进行则立即执行)的后台命令。例如,如图3所示,如果该命令是用于具有固定时刻的主机ONFI业务(例如擦除命令、编程命令、读取命令、遗留回拷命令),则NAND控制器100将该命令当作前台命令,为该命令给出高优先级并且尽快对其进行服务。另一方面,如果该命令是用于可以被占先的数据移动/重新定位命令,因为其不具有固定的时刻(例如后台复制命令),则NAND控制器100将该命令当作后台命令,为该命令给出较低优先级并且在前台命令之间的时间期间完全或部分地对其服务。控制器100可以基于命令本身的一些区别特征来确定命令是前台命令还是后台命令,或者可以使用其他机制,如以下将讨论的。
返回图1,控制器100中所示的各个组件可以用于实现上述方法。例如,队列(存储器)100可以用于存储后台命令直到它们准备被执行(如以下将讨论的,队列100中的后台命令可以按任意顺序、不一定按后台命令在队列100中存储的顺序来执行)。而且,状态寄存器112用于指示LUN130中的那些正通过前台或后台命令而被操作,并且页(数据)缓冲器114用于存储作为前台或后台命令的部分而正被读取或写到LUN130的数据。(状态寄存器112和/或页缓冲器114可以对于前台和后台命令两者共享使用,或者对于前台和后台命令可以使用单独的状态和/或页缓冲器。)对于前台和后台命令两者的数据发送,优选使用ECC模块116。
回忆对于进行后台操作的以上一般讨论,以下段落提供另外的实现方式细节。应该注意,这些细节不意图限制权利要求的范围,因此不应解释到权利要求中,除非其中明确列举。通常,以下段落涉及以下主题:
I.区分通过单级ONFI总线协议发送的前台和后台命令;
II.对于前台和后台命令的独立的忙碌指示符
III.对于前台和后台命令的独立的命令/操作状态指示符(例如成功/失败);
IV.仲裁对于同一LUN的前台/后台命令的规则/机制
V.对于同一LUN的同时的前台/后台命令的一致性规则/机制;
VI.对于前台/后台命令的响应时间的规定
VII.对于前台/后台命令的数据缓冲管理/共享
I.区分通过单级ONFI总线协议发送的前台和后台命令
存在几种方式来以透明的方式实现从主机到ONFI目标的前台/后台命令指示以保留ONFI2.2./2.3协议兼容性。以下是利用8个LUN的裸芯包装通过ONFI总线的前台/后台命令协议的一些示例实现方式:
1.主机控制器可以在CE0(芯片使能/选择0)上向LUN0-7仅发出前台命令并且在CE1上向相同的LUN0-7仅发出后台命令。主机控制器将这些看作是完全独立的LUN,因此不对它们进行发出、排序或忙碌限制。控制器100知道其参考相同的0-7LUN,并且管理后台命令的交织/占先。
2.主机控制器和ONFI目标对于用于在发出的命令的寻址阶段中指定一个命令是前台还是后台命令的供应商特定的(VSP)位/标志达成一致。目标将前台/后台=0命令导向(正常ONFI)前台LUN处理,而目标将前台/后台=1命令导向后台LUN处理。(主机控制器可能经历对LUN0-7的依赖性的发出或者排序。)
3.如果在后台模式中仅支持小的命令子集(比如复制),则单独的供应商特定的(“VSP”)命令可以被定义为区分前台命令(例如复制页命令)与后台命令(例如复制块命令)。复制页命令将暗中在前台立即执行,而复制块命令将被接受用于后台处理而没有立即的或者预定的完成时间。
II.对于前台和后台命令的独立的忙碌指示符
以下是用于以透明的方式实现从ONFI目标回到主机控制器的前台/后台命令忙碌指示以保留ONFI2.2./2.3协议兼容性的几种示例方式。
1.与前台和后台LUN的两个集合一起,NAND控制器100可以实现状态寄存器112的两个集合(一个用于前台命令,另一个用于后台命令),每个包含独立的LUN忙碌位。前台和后台状态寄存器112每个具有一个命令的容量,并且控制器100管理用于反映前台或后台命令何时在进行中或者何时已经完成的位,指示是否可以提交另一命令用于执行。主机控制器121可以通过向适当的LUN发出读取状态命令来检验前台或后台忙碌状态。
图4是其中存在8个LUN并且每个LUN一个寄存器位置的实施例的示例状态寄存器的例示。以下是各个状态值的每个的简要描述。
FAIL——如果被设置为1,则最后的命令失败。如果被清零,则最后的命令成功。在一个实施例中,此位对于读取、编程和擦除操作有效。
FAILC——此位与缓存的命令一起使用,在一些实施例中不支持缓存的命令。
CSP(命令特定的)——此位具有命令特定的含义。在一些实施例中,对于读取操作,如果CSP位被设置为1,则最后的读取操作超过ECC阈值,并且主机控制器应该采取适当的动作(例如将该数据重写到新的位置)。当FAIL被设置为1时,“不关心”CSP位。对于其他操作,此位被保留。
ARDY——此位与缓存的命令一起使用,在一些实施例中不支持缓存的命令。
RDY——如果被设置为1,则LUN或平面地址准备好用于另一命令,并且状态值中的所有其他位有效。如果被清零,则发出的最后的命令还未完成,并且状态寄存器位5:0无效,并且应该被主机忽略。当缓存操作在使用中时,此位指示是否可以接受另一命令,并且ARDY指示最后的操作是否完成。
R——被保留。
VSP——供应商特定的。
WP_n——写保护
2.前台忙碌可以在标准ONFI中工作,并且(由前台/后台标志位指示的)意图用于后台的命令实质上可以被“淹没”(即没有指示LUN忙碌)——它们可以在后台不同时地被处理直到完成。主机控制器121可以通过发出追踪读取状态-类型命令(比如VSP“读取元数据”命令)来询问后台命令的完成,其中NAND控制器100可以用在数据有效负荷内的标志或计数器来指示后台命令的进度或者完成。对于前台命令,可以向适当的LUN发出标准读取状态命令。
3.NAND控制器100可以支持前台和/或后台命令的“排队”达某个指示的队列深度。在此情况下,前台或后台LUN忙碌位将决不成为忙碌,或者忙碌位将指示已经达到队列110的容量。在此布置中,优选地,将要求主机控制器121决不超过队列服从限制,和/或可以提供指示队列中的各个命令当前正在执行到的队列充满度(fullness)或指标(队列头部)的扩展方法。
III.对于前台和后台命令的独立的命令/操作状态指示符(例如成功/失 败)
以下是用于以透明的方式实现从ONFI目标回到主机控制器121的前台/后台命令成功/失败指示以保留ONFI2.2./2.3协议兼容性的几种示例方式。
1.通过以上部分中提到的状态寄存器112的两个集合(一个用于前台命令,另一个用于后台命令),每个状态寄存器可以反映其最新近完成的操作的状态。主机控制器121可以通过向适当的LUN发出读取状态命令来检验前台或后台失败状态。
2.NAND控制器100结合主机控制器121可以提供扩展的状态机制,这可以提供对于前台和后台操作两者的更详细的状态报告,并且可以提供对于后台操作的状态的不同时特性的便利的处理。
3.NAND控制器100可以内部维持前台和后台命令两者的完成状态,并且可以在接收到读取状态命令时在相同的状态寄存器位位置处提供请求的命令(前台或后台),并且提供前台或后台命令的说明。
IV.仲裁对于同一LUN的前台/后台命令的规则/机制
给出如上所述的独立的前台和后台LUN以及状态寄存器112的两个集合,NAND控制器100可以内部地管理相同LUN上的前台和后台命令的交织(主机控制器121可能需要遵守前台和后台地址之间的某些同时访问规则)。通常,前台命令将比进行中的后台命令临时占先。如果没有地址重叠,则前台和后台命令将没有冲突。
V.对于同一LUN的同时的前台/后台命令的一致性规则/机制
通过对于两个独立的但是同时的对单个LUN/NAND裸芯的访问流(前台和后台命令)的增加的性能,控制器100优选地遵守一组一致性规则以防止当参与在相同的存储器范围内的交织的操作时由在两个流之间的擦除、编程和读取的错误排序导致的数据故障和数据错误。以下是当存在前台和后台实体的同时访问时管理命令相干性的示例方式。
1.可以使用简单的“强力”方法,其中可以(通过在后台操作的源和目的地LUN的状态寄存器中设置“忙碌”)支持(hold up)前台命令,直到后台命令完成。例如,如果状态寄存器指示两个LUN忙碌(由于LUN到LUN后台复制/移动操作),则该状态寄存器可以继续被标记为忙碌达读取和编程操作的全部持续时间。
2.主机控制器121可以阻止将表示可能的存储器相干性冲突的前台和后台命令的同时发出。
3.NAND控制器100可以使用内部一致性规则。图5将用于以在LUN到LUN后台复制期间同时的主机访问的例子来说明内部一致性规则的使用。在此实施例中,如果主机命令的目标块(例如要被读取或写入的块地址)与活动的后台复制块不相同,则主机命令可以没有限制地继续。
而且,如果新的缓冲器可用,则对活动的后台复制源LUN的随后的主机读取(从NAND页寄存器的读取)可以继续。对活动的后台复制源LUN的随后的主机写入被拖延,直到源缓冲器变为目的地缓冲器(如果新的源缓冲器可用);否则,将被拖延直到复制的NAND编程阶段完成。
对于活动的复制目的地LUN的随后的主机读取(向NAND页寄存器的编程)被拖延直到在NAND编程时间期间(来自源的)新的数据被写到目的地缓冲器。随后的主机写入被拖延直到目的地缓冲器NAND编程完成(直到复制完成)。可以采用几个限制。例如,在一个实施例中,优选地,LUN到LUN复制不被当作目标命令(即所有LUN将变为“忙碌”)。而且,可以优选地,(SA,DA)复制操作不跨过LUN或块边界。还可以优选地,限制对源LUN的覆盖以及从目的地LUN缓冲器的读取,直到目的地LUN编程被认为“成功”。
作为另一例子,图6例示在LUN到LUN后台复制操作期间对于主机访问的一致性规则,后台复制从源LUN1(P9-P14)到目的地LUN4(P12-P17)。如此图中所示,对于主机读取SA+3(LUN1-P12),源LUN未被该复制修改,因此允许在任意时间读取。对于主机写SA+3(LUN1-P12),在源LUN数据已经被发送到目的地地址(LUN4-P15)之后可以覆盖。对于主机读取DA+3(LUN4-P15),命令被保持直到(来自LUN1-P12的)新的数据值已经被发送到目的地地址(LUN4-P15)。主机写DA+3(LUN4-P15)实质上是下一个编程命令,这是不允许的。在NAND技术中,未定义写后再写(write-after-write,WAW)。期望首先发生块擦除——在下次写之前。
VI.对于前台/后台命令的响应时间的规定
关于这可以如何处理存在几个选择。在此详述一个简单的方法。尽管后台命令通常具有开放的时间(直到它们完成),但是当后台命令在进行时有时前台命令的时刻将受影响,并且存在在逻辑或物理边界处中断该后台命令以便切换到前台命令的等待时间。为了克服这点,可以使用两个定时参数集。一个定时参数用于标定/典型最差情况擦除、编程和读取,在大多数时间(~>90%)提供它们。另一个定时参数用于当LUN忙碌时的例外——长最差情况擦除、编程和读取,或者用于导致增加的响应延迟的例外/重试/恢复类型的操作。下图提供了这些各个参数的例示:
参数 | 典型最大 | 例外最大 |
tEXBERS | tBERS | tBERS+x毫秒 |
tEXPROG | tPROG | tPROG+y毫秒 |
tEXR | eR | tR+z微秒 |
如果在ONFI参数页中仅报告了较长的例外最大定时,则期望主机控制器将设置其询问间隔用于此“最差情况”,这将导致在>90%的时间、性能的不必要的降低,在>90%的该时间,主机控制器将胜过此定时达大的量。
VII.对于前台/后台命令的数据缓冲管理/共享
在NAND控制器中,诸如包含用于进行ECC功能的ECC模块716并且将编程和读取操作分派到多个LUN/NAND裸芯的诸如图7所示的NAND控制器中,数据优选地被缓冲在主机接口(总线0:ONFI)和快闪接口(总线1:ONFI、HIS、TM等等)之间的页缓冲器714中。尽管技术上这可以利用相当小的FIFO进行,但是优选地,这由至少是NAND页寄存器的大小(例如8KB/16KB)的至少一个缓冲器来实现。此页缓冲器714可以用于存储被写到NAND快闪LUN或者从NAND快闪LUN读取的数据。在页复制操作的情况下,例如,从读取阶段到编程阶段使用相同的缓冲器是高效的。此外,因为ONFI支持在多个LUN上的同时操作,因此每个LUN提供一个页缓冲器是有益的,这促进交织的LUN操作。而且,仅使用最小尺寸的(在所有LUN之间共享的)单个页缓冲器将最小化控制器的成本(裸芯尺寸),但是以固件的增加的复杂性(例如管理在LUN之间共享单个缓冲器)以及可能降低的性能为代价。
应该注意,每个LUN/裸芯利用多个页缓冲器(通过硬件或固件)将使能重叠的总线0(从主机)传送到对于LUN n的控制器中的第二缓冲器,而对于该相同的LUN n,总线1从控制器中的第一缓冲器(到快闪)的传送仍在继续。
假设提供多于每个活动的LUN/裸芯的至少一个页缓冲器,并且该页缓冲器忙碌达读取或编程操作的持续时间,可以考虑可以如何使用并共享这些缓冲器。通常,数据缓冲器共享可以被认为跨过两个维度:(1)在ONFI目标(控制器+N个LUN)上的多个LUN(NAND裸芯)上的数据缓冲器共享,以及(2)在对于相同LUN的前台和后台操作之间的数据缓冲器共享,这与这些实施例相关。
现在以下段落将讨论复制和回拷操作的使用以及它们对前台和后台操作上的影响(implication)。基线ONFI标定读取和编程操作占据页缓冲器直到那些操作完成,然后不再需要它们的内容。另一方面,复制操作(比如在遗留ONFI中的回拷)需要来自第一操作(读取)的数据保持可用用于之后的第二操作(编程)。由于在控制器中使用ECC,可能需要缓冲器传送或“移交(hand-off)”指示符。
如上所述,前台复制页命令是对于相同或者不同LUN/裸芯的回拷读取命令加上回拷编程命令。通过此命令,控制器读取,然后复制/写单个页。在此处理期间,源LUN在回拷读取命令期间成为“忙碌”,并且目的地LUN在回拷编程命令期间成为“忙碌”。此命令使用单个页缓冲器。该页缓冲器开始首先作为用于读取的源LUN缓冲器,然后变为用于编程的目的地LUN缓冲器。
如果目的地LUN与源LUN不相同,则优选地,将通过以下方法之一对于回拷编程阶段指定新的目的地LUN缓冲器:(1)暗示先前的回拷读取LUN缓冲器变为当前的回拷编程LUN(即命令邻近性),但是这排除了回拷命令的LUN交织,(2)定义回拷编程命令中的位字段以指定哪个页/LUN缓冲器是数据源,或者(c)添加VBX(虚拟缓冲器交换)命令(例如将源LUN3交换到目的地LUN4).-EX:Exchange Src.LUN to Dest.LUN4。
对于前台/后台多页复制,优选地,指定复制长度(例如以页为单位),这将定义新的“回拷长度”命令或参数。多页将被依次或随机读取,然后依次被编程到目的地块。但是,在编程阶段之前读取几(>1)页可能需要控制器中的更多页缓冲器。多页复制也可以使用仅一个页缓冲器作为后台中的(多页的)一次一页复制来进行,在此情况下源和目的地LUN将每页是“忙碌”(或仅是“后台忙碌”)。如像其他后台命令那样,后台复制命令可以被前台命令中断,其中性能受到前台/后台页缓冲器提供/共享影响(如以下将讨论的)。
也可以使用具有组装供应的块或子块复制的命令。在此命令中,分散集中列表(SGL)可以指定多个源页和单个目的地块,其中源LUN和目的地LUN可以相同或不同。页可以被缓冲在二进制快闪页中直到“被折叠”到MLC/每单元3位的页。
如上所述,前台/后台缓冲器管理可能涉及对于相同LUN的数据缓冲操作,这将处理在后台复制(或其他)操作可能在相同LUN上进行时到达的同时的前台操作的情况。如上所述,可以使用专用的前台和后台页缓冲器或者可以在前台和后台命令之间共享单个缓冲器。提供专用的前台页缓冲器和后台页缓冲器更昂贵。如果前台命令使用与后台命令不同的页缓冲器,则在正打断的前台操作期间,后台页缓冲器可以被暂停并且不被“打扰”。当前台命令完成时此选项可以完全恢复,并且不需要页缓冲器重新加载。另一方面,在前台和后台命令之间共享相同的页缓冲器可能降低性能。后台复制命令可能在页边界处被前台命令打断,并且前台命令等待直到后台操作的编程部分利用该单个LUN缓冲器完成,或者主机前台命令占先后台复制操作。这可以使得复制的读取阶段(恢复的复制可以稍后重新读取该源页)占先,并且可以允许复制的编程阶段的异常中断(并且稍后重新开始编程阶段,在此情况下该源页将被重新读取)。
最后,如上所述,复制块命令是可以与这些实施例一起使用的类型的命令的例子,并且读取元数据命令可以用于读取复制命令的后台操作状态。以下段落提供关于这些以及其他与复制有关的操作的更多信息。
在一个实施例中,复制列表命令提供将页从各个块复制到完整的块的机制。这可以由主机使用用于单级单元(SLC)和多级单元(MLC)或更大的块的压紧(compaction),以及有效地将数据从SLC移动到MLC或更大的。复制优选地从块的第一页开始并且继续到该块的最后一页。在一个实施例中,存在两种类型的复制列表命令:复制页和复制块。复制页将数据从SLC复制到SLC中的完整的目的地页。在复制已经完成之后返回Ready(准备好)。复制块将数据从SLC和MLC或更大的复制到MLC或更大的。一旦该命令已经被控制器接受就立即返回对于该命令的准备好,并且复制的执行在后台中发生。
复制列表命令将LUN内的数据复制到完整的块。在下表中给出在一个实施例中支持的复制列表源和目的地:
命令 | 源 | 目的地 | 对准 |
复制页 | SLC页 | SLC块 | N/A |
复制块 | SLC页 | MLC或更大的块 | N/A |
复制块 | MLC或更大的页 | MLC或更大的块 | N/A |
回拷页 | SLC页 | SLC块 | 页/平面 |
回拷块 | SLC页 | MLC或更大的块 | 页平面 |
回拷块 | MLC或更大的页 | MLC或更大的块 | 不支持 |
复制列表命令将LUN内的数据复制到完整的块。完整的SLC块编程可以作为一系列复制页命令而发生,每个复制页命令开始于如下页处:在该页之后,前一个命令结束。完整的MLC或者更大块编程可以作为一系列复制块命令而发生,每个复制块命令开始于如下页处:在该页之后,前一个命令结束。为了改进复制操作的效率,可以支持内部快闪复制。这节省时间和电力,因为复制发生在快闪内而不在快闪总线上传送数据并且不涉及控制器。通过内部快闪复制,不需要数据的重新对准。而且,内部快闪复制可能增加错误传播,因此控制器优选地跟踪对于每页来说多少个内部复制是可能的。
为了支持内部快闪复制,可以支持回拷页和回拷块命令。如果内部复制是可能的,则控制器可以做出最终确定。当编程SLC块时,主机可以将复制页和回拷页命令接连组合。类似地,当编程MLC或更大的块时,主机可以将复制块和回拷块命令组合。
可以通过读取元数据命令给出关于复制页和复制块命令的进度的状态。读取元数据命令可以返回对于被复制的每个传送单元的元数据。对于SLC操作,只要先前的复制页命令完成并且返回准备好,读取元数据命令就可以可用。可以对被复制的先前N页维持读取元数据。一旦元数据被读取,优选地擦除存储的元数据。
对于MLC或者更大的操作,可以使用读取元数据命令来表示操作的进度。最大数量的未完成的页被定义为系统参数(例如默认16)。控制器优选地具有内部地存储每个LUN每个开放的块高达16个页的复制的能力(允许的开放的块的数量可以通过控制器上的缓冲器空间来设置)。在返回关于复制的页的状态时,要被复制的另外的页可以被传送到控制器。只要在此例子中未完成的页的数量保持在16个以下,命令将被接受。如果在此例子中要将多于16个页传送到控制器,则准备好将优选地保持低直到未完成的页编程操作的数量落到此阈值以下。控制器还优选地保持忙碌直到对于块的末尾的未完成的页编程操作已经完成。当块的末尾正被编程时,优选地不接受新的块命令,直到先前的块编程已经完成。优选地,应该在新的块编程开始之前读取由于块的元数据。
对于回拷命令,因为元数据不可用,所以优选地,在读取元数据命令中仅返回已经传送的块的数量。这允许主机确定当前未完成的页的数量以及其可以发送用于编程的另外的页的数量。为了区别于对于复制块命令返回的准备好状态,这些命令可以使用CE1,与用CE0给出的其他命令相反。这允许诸如常规编程和读取的前台操作在后台中执行复制块命令时继续。
尽管复制列表命令在进行中,但是主机优选地不编程目的地块或者任何源页。优选地,允许对源块中的页的读取。只有在对如下块的编程已经完成时执行读取命令,该读取命令指向对于编程是开放的并且对于其的复制块操作未完成的MLC或更大的块中的地址;否则,优选地,对该命令返回错误状态。
对于复制块和复制列表命令,优选地,在接受命令之前进行有效性检验;否则,优选地,对该命令返回命令序列错误。如果复制块的目的地块已经活动,则优选地,检验目的地页是此块上的先前的复制块命令的下一连续页。
结论
意图将以上详细描述理解为对本发明可以采取的所选形式的例示而不是对本发明的限定。仅以下权利要求包括其等效物意图定义本发明的范围。此外,以下权利要求中的一些可以陈述组件可操作以进行某个功能或者被配置用于某个任务。应该注意,这些不是限制性的限定。还应该注意,权利要求中列出的动作可以按任意顺序进行——不是一定要按它们被列出的顺序。
Claims (28)
1.一种控制器,包括:
第一接口,通过该第一接口与主机通信;
第二接口,通过该第二接口与多个快闪存储器器件通信;
存储器,配置为存储多个后台命令,其中后台命令用于要在所述多个快闪存储器器件中的一个或多个中进行的操作;以及
处理器,与所述第一和第二接口以及所述存储器通信,其中该处理器操作以:
进行经由所述第一接口从所述主机接收的前台命令,其中前台命令用于要在所述多个快闪存储器器件中的一个或多个中进行的操作,以及其中所述处理器不中断地进行所述前台命令直到完成;
进行在所述控制器的存储器中存储的后台命令,其中所述处理器进行所述后台命令直到完成或者直到被前台命令占先;以及
如果后台命令被占先,则在稍后的时间恢复进行所述后台命令。
2.如权利要求1的控制器,其中前台命令具有预定的完成时间,而后台命令没有预定的完成时间。
3.如权利要求1的控制器,其中经由第一接口从主机接收在控制器的存储器中存储的后台命令中的至少一个。
4.如权利要求1的控制器,其中在所述控制器的存储器中存储的后台命令中的至少一个由所述处理器产生。
5.如权利要求1的控制器,其中前台命令包括读命令、写命令或擦除命令。
6.如权利要求1的控制器,其中后台命令包括复制命令、移动命令、数据加扰命令、列替换命令、处理写异常和/或编程故障(经由安全区)的命令、读擦洗命令、磨损均衡命令、坏块和/或空闲块管理命令、错误检测码(EDC)命令、状态命令、加密命令、错误恢复命令和地址映射命令。
7.如权利要求1的控制器,其中所述第一和第二接口的至少一个包括配置为使用NAND接口协议传送数据的NAND接口。
8.如权利要求1的控制器,其中该处理器还操作以在通过单级开放NAND快闪接口(ONFI)总线发送的前台和后台命令之间区分。
9.如权利要求1的控制器,其中该处理器还操作以提供对于前台和后台命令的独立的快闪存储器器件忙碌指示符。
10.如权利要求1的控制器,其中该处理器还操作以提供对于前台和后台命令的独立的命令状态指示符。
11.如权利要求1的控制器,其中该处理器还操作以根据一组规则来仲裁冲突的前台和后台命令。
12.如权利要求1的控制器,其中该处理器还操作以对同时的前台和后台命令应用一组一致性规则。
13.如权利要求1的控制器,其中该处理器还操作以根据指定的响应时间执行前台和后台命令。
14.如权利要求1的控制器,还包括一个或多个数据缓冲器,其中该处理器还操作以管理对于前台和后台命令的所述一个或多个数据缓冲器的使用。
15.一种用于进行后台操作的方法,该方法包括:
在与主机和多个快闪存储器器件通信的控制器中进行:
进行从主机接收的前台命令,其中该前台命令用于要在所述多个快闪存储器器件中的一个或多个中进行的操作,以及其中所述控制器不中断地进行该前台命令直到完成;
进行在该存储器的控制器中存储的后台命令,其中该后台命令用于要在所述多个快闪存储器器件中的一个或多个中进行的操作,以及其中所述控制器进行所述后台命令直到完成或者直到被前台命令占先;以及
如果后台命令被占先,则在稍后的时间恢复进行该后台命令。
16.如权利要求15的方法,其中前台命令具有预定的完成时间,而后台命令没有预定的完成时间。
17.如权利要求15的方法,从主机接收在控制器的存储器中存储的后台命令中的至少一个。
18.如权利要求15的方法,其中在所述控制器的存储器中存储的后台命令中的至少一个由所述控制器产生。
19.如权利要求15的方法,其中前台命令包括读命令、写命令或擦除命令。
20.如权利要求15的方法,其中后台命令包括复制命令、移动命令、数据加扰命令、列替换命令、处理写异常和/或编程故障(经由安全区)的命令、读擦洗命令、磨损均衡命令、坏块和/或空闲块管理命令、错误检测码(EDC)命令、状态命令、加密命令、错误恢复命令和地址映射命令。
21.如权利要求15的方法,其中所述控制器经由配置为使用NAND接口协议传送数据的NAND接口与所述多个快闪存储器器件通信。
22.如权利要求15的方法,其中该控制器操作以在通过单级开放NAND快闪接口(ONFI)总线发送的前台和后台命令之间区分。
23.如权利要求15的方法,其中该控制器操作以提供对于前台和后台命令的独立的快闪存储器器件忙碌指示符。
24.如权利要求15的方法,其中该控制器操作以提供对于前台和后台命令的独立的命令状态指示符。
25.如权利要求15的方法,其中该控制器操作以根据一组规则来仲裁冲突的前台和后台命令。
26.如权利要求15的方法,其中该控制器操作以对同时的前台和后台命令应用一组一致性规则。
27.如权利要求15的方法,其中该控制器操作以根据指定的响应时间执行前台和后台命令。
28.如权利要求15的方法,其中该控制器包括一个或多个数据缓冲器,以及其中该控制器操作以管理对于前台和后台命令的所述一个或多个数据缓冲器的使用。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/982,833 | 2010-12-30 | ||
US12/982,833 US8819328B2 (en) | 2010-12-30 | 2010-12-30 | Controller and method for performing background operations |
PCT/US2011/059366 WO2012091798A1 (en) | 2010-12-30 | 2011-11-04 | Controller and method for performing background operations |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103282887A true CN103282887A (zh) | 2013-09-04 |
Family
ID=45003074
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180063796XA Pending CN103282887A (zh) | 2010-12-30 | 2011-11-04 | 用于进行后台操作的控制器和方法 |
Country Status (6)
Country | Link |
---|---|
US (2) | US8819328B2 (zh) |
EP (1) | EP2659364A1 (zh) |
KR (1) | KR101821845B1 (zh) |
CN (1) | CN103282887A (zh) |
TW (1) | TWI531965B (zh) |
WO (1) | WO2012091798A1 (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106610902A (zh) * | 2015-10-26 | 2017-05-03 | 点序科技股份有限公司 | 快闪存储器装置及其交错存取方法 |
CN106796490A (zh) * | 2014-10-03 | 2017-05-31 | 桑迪士克科技有限责任公司 | 用于存储器管理的硬件自动化 |
CN107851053A (zh) * | 2015-07-16 | 2018-03-27 | 高通技术国际有限公司 | 用于管理快闪存储器内容的损坏的方法和设备 |
CN109117391A (zh) * | 2017-06-22 | 2019-01-01 | 旺宏电子股份有限公司 | 用于存储器系统的控制器 |
CN109614049A (zh) * | 2018-12-11 | 2019-04-12 | 湖南国科微电子股份有限公司 | 闪存控制方法、闪存控制器及闪存系统 |
CN110007853A (zh) * | 2019-01-30 | 2019-07-12 | 青岛镕铭半导体有限公司 | 一种Nandflash命令处理方法、装置、终端及存储介质 |
CN110413206A (zh) * | 2018-04-28 | 2019-11-05 | 伊姆西Ip控股有限责任公司 | 存储系统中的操作控制方法、设备和计算机程序产品 |
CN110781023A (zh) * | 2018-07-25 | 2020-02-11 | 爱思开海力士有限公司 | 用于在存储器系统中处理数据的设备和方法 |
CN110858121A (zh) * | 2018-08-23 | 2020-03-03 | 阿里巴巴集团控股有限公司 | 后台操作的调度方法及装置 |
CN113253910A (zh) * | 2020-02-10 | 2021-08-13 | 西部数据技术公司 | Nand丢弃的命令检测和恢复 |
CN113703683A (zh) * | 2021-08-28 | 2021-11-26 | 江苏华存电子科技有限公司 | 一种单一的优化冗余存储系统的装置 |
Families Citing this family (101)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7652922B2 (en) * | 2005-09-30 | 2010-01-26 | Mosaid Technologies Incorporated | Multiple independent serial link memory |
US8775808B2 (en) * | 2009-05-26 | 2014-07-08 | Hewlett-Packard Development Company, L.P. | System and method for performing a management operation |
US8966201B2 (en) * | 2010-12-10 | 2015-02-24 | Sandisk Technologies Inc. | Method and system for hijacking writes to a non-volatile memory |
US8918595B2 (en) * | 2011-04-28 | 2014-12-23 | Seagate Technology Llc | Enforcing system intentions during memory scheduling |
KR20130052971A (ko) * | 2011-11-14 | 2013-05-23 | 삼성전자주식회사 | 비휘발성 메모리 장치의 동작 방법 |
JP6111575B2 (ja) * | 2012-09-19 | 2017-04-12 | 富士通株式会社 | ストレージ装置、内部処理制御方法および内部処理制御プログラム |
US9329990B2 (en) * | 2013-01-11 | 2016-05-03 | Micron Technology, Inc. | Host controlled enablement of automatic background operations in a memory device |
US9348774B2 (en) | 2013-01-25 | 2016-05-24 | Seagate Technology Llc | Controller-opaque communication with non-volatile memory devices |
JP5460928B1 (ja) * | 2013-03-06 | 2014-04-02 | 三菱電機株式会社 | プログラマブルコントローラ、プログラマブルコントローラシステムおよび実行エラー情報作成方法 |
US9430333B2 (en) * | 2013-03-14 | 2016-08-30 | Microsoft Technology Licensing, Llc | Recovery of application from snapshot |
DE202014011385U1 (de) * | 2013-04-30 | 2019-12-12 | Secco Gmbh | Bildschirm zur sicheren Darstellung von Informationen |
US9195406B2 (en) | 2013-06-28 | 2015-11-24 | Micron Technology, Inc. | Operation management in a memory device |
US9824004B2 (en) * | 2013-10-04 | 2017-11-21 | Micron Technology, Inc. | Methods and apparatuses for requesting ready status information from a memory |
US20150143027A1 (en) * | 2013-11-20 | 2015-05-21 | Sage Microelectronics Corp. | Solid state drive with raid functions |
US10108372B2 (en) | 2014-01-27 | 2018-10-23 | Micron Technology, Inc. | Methods and apparatuses for executing a plurality of queued tasks in a memory |
KR20150091918A (ko) * | 2014-02-04 | 2015-08-12 | 삼성전자주식회사 | 저장 장치 및 그것의 동작 방법 |
JP6403976B2 (ja) * | 2014-04-09 | 2018-10-10 | アルパイン株式会社 | コンピュータプログラム、情報処理装置及び処理実行方法 |
KR102147916B1 (ko) | 2014-04-14 | 2020-08-26 | 삼성전자주식회사 | 불휘발성 메모리 시스템 및 그것의 동작 방법 |
US9471428B2 (en) | 2014-05-06 | 2016-10-18 | International Business Machines Corporation | Using spare capacity in solid state drives |
KR102251809B1 (ko) | 2014-05-28 | 2021-05-13 | 삼성전자주식회사 | 메모리 시스템, 메모리 인터페이스 장치 및 메모리 시스템에서의 인터페이싱 방법 |
US10402319B2 (en) | 2014-07-25 | 2019-09-03 | Micron Technology, Inc. | Apparatuses and methods for concurrently accessing different memory planes of a memory |
US9423961B2 (en) | 2014-09-08 | 2016-08-23 | Apple Inc. | Method to enhance programming performance in multilevel NVM devices |
US20160093383A1 (en) * | 2014-09-30 | 2016-03-31 | Sandisk Technologies Inc. | Method and apparatus for relocating data in non-volatile memory |
US9959078B2 (en) | 2015-01-30 | 2018-05-01 | Sandisk Technologies Llc | Multi-die rolling status mode for non-volatile storage |
US10114690B2 (en) | 2015-02-13 | 2018-10-30 | Sandisk Technologies Llc | Multi-die status mode for non-volatile storage |
US9680509B2 (en) * | 2015-03-27 | 2017-06-13 | Intel Corporation | Errors and erasures decoding from multiple memory devices |
US10289327B2 (en) | 2015-06-05 | 2019-05-14 | Western Digital Technologies, Inc. | Scheduling scheme(s) for a multi-die storage device |
US9875053B2 (en) | 2015-06-05 | 2018-01-23 | Western Digital Technologies, Inc. | Scheduling scheme(s) for a multi-die storage device |
KR102367982B1 (ko) | 2015-06-22 | 2022-02-25 | 삼성전자주식회사 | 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 |
KR20170001237A (ko) * | 2015-06-26 | 2017-01-04 | 에스케이하이닉스 주식회사 | 상태 읽기를 수행하는 메모리 시스템 및 그것의 동작 방법 |
US9996280B2 (en) | 2016-03-15 | 2018-06-12 | Sandisk Technologies Llc | Data register copying for non-volatile storage array operations |
CN105843749B (zh) * | 2016-03-24 | 2019-01-25 | 浙江大学 | 一种基于FPGA的NAND Flash容错方法 |
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 |
US10108450B2 (en) * | 2016-04-21 | 2018-10-23 | Samsung Electronics Co., Ltd. | Mechanism for SSDs to efficiently manage background activity with notify |
TWI615853B (zh) * | 2016-05-18 | 2018-02-21 | 瑞昱半導體股份有限公司 | 記憶體裝置、記憶體控制器與其控制方法 |
US10423500B2 (en) | 2016-06-01 | 2019-09-24 | Seagate Technology Llc | Technologies for limiting performance variation in a storage device |
US11449232B1 (en) * | 2016-07-22 | 2022-09-20 | Pure Storage, Inc. | Optimal scheduling of flash operations |
US9940052B2 (en) | 2016-09-14 | 2018-04-10 | Micron Technology, Inc. | Memory device configuration commands |
US20180129559A1 (en) * | 2016-11-08 | 2018-05-10 | SK Hynix Inc. | Semiconductor memory device, controller, and operating methods thereof |
US10572344B2 (en) * | 2017-04-27 | 2020-02-25 | Texas Instruments Incorporated | Accessing error statistics from DRAM memories having integrated error correction |
US10884656B2 (en) * | 2017-06-16 | 2021-01-05 | Microsoft Technology Licensing, Llc | Performing background functions using logic integrated with a memory |
US10956245B1 (en) * | 2017-07-28 | 2021-03-23 | EMC IP Holding Company LLC | Storage system with host-directed error scanning of solid-state storage devices |
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 |
US10877898B2 (en) | 2017-11-16 | 2020-12-29 | Alibaba Group Holding Limited | Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements |
US10496548B2 (en) | 2018-02-07 | 2019-12-03 | Alibaba Group Holding Limited | Method and system for user-space storage I/O stack with user-space flash translation layer |
JP7048411B2 (ja) * | 2018-05-22 | 2022-04-05 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US11379155B2 (en) | 2018-05-24 | 2022-07-05 | Alibaba Group Holding Limited | System and method for flash storage management using multiple open page stripes |
US10636459B2 (en) * | 2018-05-30 | 2020-04-28 | Micron Technology, Inc. | Wear leveling |
US10921992B2 (en) | 2018-06-25 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency |
US11816043B2 (en) | 2018-06-25 | 2023-11-14 | Alibaba Group Holding Limited | System and method for managing resources of a storage device and quantifying the cost of I/O requests |
US10996886B2 (en) | 2018-08-02 | 2021-05-04 | Alibaba Group Holding Limited | Method and system for facilitating atomicity and latency assurance on variable sized I/O |
KR20200025518A (ko) * | 2018-08-30 | 2020-03-10 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템 |
US11327929B2 (en) | 2018-09-17 | 2022-05-10 | Alibaba Group Holding Limited | Method and system for reduced data movement compression using in-storage computing and a customized file system |
CN109324828B (zh) * | 2018-09-21 | 2023-06-02 | 山东华芯半导体有限公司 | 一种在验证平台中实现闪存多命令并行执行的方法 |
CN109165076B (zh) * | 2018-10-17 | 2022-03-29 | Oppo广东移动通信有限公司 | 游戏应用程序的显示方法、装置、终端及存储介质 |
KR20200044460A (ko) * | 2018-10-19 | 2020-04-29 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
US10977122B2 (en) | 2018-12-31 | 2021-04-13 | Alibaba Group Holding Limited | System and method for facilitating differentiated error correction in high-density flash devices |
US11061735B2 (en) | 2019-01-02 | 2021-07-13 | Alibaba Group Holding Limited | System and method for offloading computation to storage nodes in distributed system |
US11132291B2 (en) | 2019-01-04 | 2021-09-28 | Alibaba Group Holding Limited | System and method of FPGA-executed flash translation layer in multiple solid state drives |
US11200337B2 (en) | 2019-02-11 | 2021-12-14 | Alibaba Group Holding Limited | System and method for user data isolation |
KR20200098336A (ko) | 2019-02-12 | 2020-08-20 | 삼성전자주식회사 | 서스펜드 모드를 제어하는 방법 및 이를 포함하는 메모리 컨트롤러 |
US10970212B2 (en) | 2019-02-15 | 2021-04-06 | Alibaba Group Holding Limited | Method and system for facilitating a distributed storage system with a total cost of ownership reduction for multiple available zones |
US11061834B2 (en) | 2019-02-26 | 2021-07-13 | Alibaba Group Holding Limited | Method and system for facilitating an improved storage system by decoupling the controller from the storage medium |
US10891065B2 (en) | 2019-04-01 | 2021-01-12 | Alibaba Group Holding Limited | Method and system for online conversion of bad blocks for improvement of performance and longevity in a solid state drive |
US10922234B2 (en) | 2019-04-11 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive |
US10908960B2 (en) * | 2019-04-16 | 2021-02-02 | Alibaba Group Holding Limited | Resource allocation based on comprehensive I/O monitoring in a distributed storage system |
US11169873B2 (en) | 2019-05-21 | 2021-11-09 | Alibaba Group Holding Limited | Method and system for extending lifespan and enhancing throughput in a high-density solid state drive |
US10860223B1 (en) | 2019-07-18 | 2020-12-08 | Alibaba Group Holding Limited | Method and system for enhancing a distributed storage system by decoupling computation and network tasks |
US11074124B2 (en) | 2019-07-23 | 2021-07-27 | Alibaba Group Holding Limited | Method and system for enhancing throughput of big data analysis in a NAND-based read source storage |
KR20210020694A (ko) * | 2019-08-16 | 2021-02-24 | 에스케이하이닉스 주식회사 | 스토리지 장치, 스토리지 장치의 동작 방법, 스토리지 장치 및 스토리지 장치를 제어하는 호스트 장치를 포함하는 컴퓨팅 장치 및 그것의 동작 방법 |
US11617282B2 (en) | 2019-10-01 | 2023-03-28 | Alibaba Group Holding Limited | System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers |
US11126561B2 (en) | 2019-10-01 | 2021-09-21 | Alibaba Group Holding Limited | Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive |
CN111124305B (zh) * | 2019-12-20 | 2021-08-31 | 浪潮电子信息产业股份有限公司 | 固态硬盘磨损均衡方法、装置及计算机可读存储介质 |
US11892956B2 (en) * | 2019-12-31 | 2024-02-06 | Micron Technology, Inc. | Performance of memory system background operations |
TWI715409B (zh) * | 2020-01-08 | 2021-01-01 | 點序科技股份有限公司 | 記憶體管理方法及儲存控制器 |
US11449455B2 (en) | 2020-01-15 | 2022-09-20 | Alibaba Group Holding Limited | Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility |
US11150986B2 (en) | 2020-02-26 | 2021-10-19 | Alibaba Group Holding Limited | Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction |
US11200114B2 (en) | 2020-03-17 | 2021-12-14 | Alibaba Group Holding Limited | System and method for facilitating elastic error correction code in memory |
US11385833B2 (en) | 2020-04-20 | 2022-07-12 | Alibaba Group Holding Limited | Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources |
US11281575B2 (en) | 2020-05-11 | 2022-03-22 | Alibaba Group Holding Limited | Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks |
US11461262B2 (en) | 2020-05-13 | 2022-10-04 | Alibaba Group Holding Limited | Method and system for facilitating a converged computation and storage node in a distributed storage system |
US11494115B2 (en) | 2020-05-13 | 2022-11-08 | Alibaba Group Holding Limited | System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC) |
US11218165B2 (en) | 2020-05-15 | 2022-01-04 | Alibaba Group Holding Limited | Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM |
US11556277B2 (en) | 2020-05-19 | 2023-01-17 | Alibaba Group Holding Limited | System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification |
US11507499B2 (en) | 2020-05-19 | 2022-11-22 | Alibaba Group Holding Limited | System and method for facilitating mitigation of read/write amplification in data compression |
US11263132B2 (en) | 2020-06-11 | 2022-03-01 | Alibaba Group Holding Limited | Method and system for facilitating log-structure data organization |
US11354200B2 (en) | 2020-06-17 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating data recovery and version rollback in a storage device |
US11422931B2 (en) | 2020-06-17 | 2022-08-23 | Alibaba Group Holding Limited | Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization |
US11354233B2 (en) | 2020-07-27 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating fast crash recovery in a storage device |
US11372774B2 (en) | 2020-08-24 | 2022-06-28 | Alibaba Group Holding Limited | Method and system for a solid state drive with on-chip memory integration |
US11556272B2 (en) * | 2020-09-18 | 2023-01-17 | Kioxia Corporation | System and method for NAND multi-plane and multi-die status signaling |
US11487465B2 (en) | 2020-12-11 | 2022-11-01 | Alibaba Group Holding Limited | Method and system for a local storage engine collaborating with a solid state drive controller |
US11734115B2 (en) | 2020-12-28 | 2023-08-22 | Alibaba Group Holding Limited | Method and system for facilitating write latency reduction in a queue depth of one scenario |
US11416365B2 (en) | 2020-12-30 | 2022-08-16 | Alibaba Group Holding Limited | Method and system for open NAND block detection and correction in an open-channel SSD |
US11726699B2 (en) | 2021-03-30 | 2023-08-15 | Alibaba Singapore Holding Private Limited | Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification |
KR102459879B1 (ko) * | 2021-04-09 | 2022-10-27 | (주)글루시스 | Ssd의 랜섬웨어 감지 방법 및 컨트롤러 |
US11461173B1 (en) | 2021-04-21 | 2022-10-04 | Alibaba Singapore Holding Private Limited | Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement |
US11476874B1 (en) | 2021-05-14 | 2022-10-18 | Alibaba Singapore Holding Private Limited | Method and system for facilitating a storage server with hybrid memory for journaling and data storage |
US11513720B1 (en) | 2021-06-11 | 2022-11-29 | Western Digital Technologies, Inc. | Data storage device having predictive analytics |
US11797228B2 (en) | 2021-06-24 | 2023-10-24 | Western Digital Technologies, Inc. | Efficient handling of background operations for improving sustained performance of host reads and writes |
JP7096938B1 (ja) * | 2021-08-27 | 2022-07-06 | ウィンボンド エレクトロニクス コーポレーション | 半導体記憶装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5479633A (en) * | 1992-10-30 | 1995-12-26 | Intel Corporation | Method of controlling clean-up of a solid state memory disk storing floating sector data |
US6145048A (en) * | 1998-09-17 | 2000-11-07 | Micron Technology, Inc. | Method of processing system management interrupt requests |
US6553476B1 (en) * | 1997-02-10 | 2003-04-22 | Matsushita Electric Industrial Co., Ltd. | Storage management based on predicted I/O execution times |
US20060184723A1 (en) * | 2005-02-16 | 2006-08-17 | Sinclair Alan W | Direct file data programming and deletion in flash memories |
CN101261592A (zh) * | 2007-03-07 | 2008-09-10 | 国际商业机器公司 | 用于对任务请求进行调度的方法和设备 |
US20090132754A1 (en) * | 2007-11-20 | 2009-05-21 | Seagate Technology Llc | Data storage device with histogram of idle time and scheduling of background and foreground jobs |
US7631132B1 (en) * | 2004-12-27 | 2009-12-08 | Unisys Corporation | Method and apparatus for prioritized transaction queuing |
US20100023800A1 (en) * | 2005-09-26 | 2010-01-28 | Eliyahou Harari | NAND Flash Memory Controller Exporting a NAND Interface |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6230233B1 (en) | 1991-09-13 | 2001-05-08 | Sandisk Corporation | Wear leveling techniques for flash EEPROM systems |
US5930167A (en) | 1997-07-30 | 1999-07-27 | Sandisk Corporation | Multi-state non-volatile flash memory capable of being its own two state write cache |
US6034882A (en) | 1998-11-16 | 2000-03-07 | Matrix Semiconductor, Inc. | Vertically stacked field programmable nonvolatile memory and method of fabrication |
US6420215B1 (en) | 2000-04-28 | 2002-07-16 | Matrix Semiconductor, Inc. | Three-dimensional memory array and method of fabrication |
US6631085B2 (en) | 2000-04-28 | 2003-10-07 | Matrix Semiconductor, Inc. | Three-dimensional memory array incorporating serial chain diode stack |
US6553472B2 (en) | 2001-01-12 | 2003-04-22 | Sun Microsystems, Inc. | Method for programming clock delays, command delays, read command parameter delays, and write command parameter delays of a memory controller in a high performance microprocessor |
US6741502B1 (en) | 2001-09-17 | 2004-05-25 | Sandisk Corporation | Background operation for memory cells |
US6839826B2 (en) | 2002-02-06 | 2005-01-04 | Sandisk Corporation | Memory device with pointer structure to map logical to physical addresses |
US7081377B2 (en) | 2002-06-27 | 2006-07-25 | Sandisk 3D Llc | Three-dimensional memory |
US7171536B2 (en) | 2002-10-28 | 2007-01-30 | Sandisk Corporation | Unusable block management within a non-volatile memory system |
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 |
US7012835B2 (en) | 2003-10-03 | 2006-03-14 | Sandisk Corporation | Flash memory data correction and scrub techniques |
US20060053247A1 (en) | 2004-09-08 | 2006-03-09 | Hugo Cheung | Incremental erasing of flash memory to improve system performance |
US7315917B2 (en) | 2005-01-20 | 2008-01-01 | Sandisk Corporation | Scheduling of housekeeping operations in flash memory systems |
ITMI20050063A1 (it) * | 2005-01-20 | 2006-07-21 | Atmel Corp | Metodo e sistema per la gestione di una richiesta di sospensione in una memoria flash |
US7206230B2 (en) | 2005-04-01 | 2007-04-17 | Sandisk Corporation | Use of data latches in cache operations of non-volatile memories |
US7447078B2 (en) | 2005-04-01 | 2008-11-04 | Sandisk Corporation | Method for non-volatile memory with background data latch caching during read operations |
US7281086B1 (en) * | 2005-06-02 | 2007-10-09 | Emc Corporation | Disk queue management for quality of service |
US7631245B2 (en) | 2005-09-26 | 2009-12-08 | Sandisk Il Ltd. | NAND flash memory controller exporting a NAND interface |
US7447066B2 (en) | 2005-11-08 | 2008-11-04 | Sandisk Corporation | Memory with retargetable memory cell redundancy |
US7562180B2 (en) * | 2006-03-28 | 2009-07-14 | Nokia Corporation | Method and device for reduced read latency of non-volatile memory |
US7366029B2 (en) | 2006-04-24 | 2008-04-29 | Sandisk Corporation | High-performance flash memory data transfer |
US8127200B2 (en) | 2006-12-24 | 2012-02-28 | Sandisk Il Ltd. | Flash memory device and system with randomizing for suppressing errors |
US7984360B2 (en) | 2006-12-31 | 2011-07-19 | Ramot At Tel Aviv University Ltd. | Avoiding errors in a flash memory by using substitution transformations |
KR100869675B1 (ko) | 2007-02-05 | 2008-11-21 | 지인정보기술 주식회사 | 디스크립터 배열을 이용한 플래시 메모리 제어 시스템 및방법 |
US7477547B2 (en) | 2007-03-28 | 2009-01-13 | Sandisk Corporation | Flash memory refresh techniques triggered by controlled scrub data reads |
EP2003556A1 (fr) * | 2007-05-25 | 2008-12-17 | Axalto SA | Procédé de traitement par un dispositif électronique portable de commandes applicatives issues de canaux physiques, dispositif et système correspondants |
US8301912B2 (en) | 2007-12-31 | 2012-10-30 | Sandisk Technologies Inc. | System, method and memory device providing data scrambling compatible with on-chip copy operation |
US8059455B2 (en) | 2008-05-09 | 2011-11-15 | Sandisk Il Ltd. | Partial scrambling to reduce correlation |
US8154918B2 (en) | 2008-06-30 | 2012-04-10 | Sandisk Il Ltd. | Method for page- and block based scrambling in non-volatile memory |
US8429330B2 (en) | 2008-09-12 | 2013-04-23 | Sandisk Technologies Inc. | Method for scrambling data in which scrambling data and scrambled data are stored in corresponding non-volatile memory locations |
US8239613B2 (en) | 2008-12-30 | 2012-08-07 | Intel Corporation | Hybrid memory device |
JP5167410B2 (ja) | 2009-01-09 | 2013-03-21 | 株式会社日立製作所 | 複数のマイクロプロセッサを有するストレージシステム、及び、そのストレージシステムにおける処理分担方法 |
TWI386922B (zh) | 2009-05-27 | 2013-02-21 | Can improve the efficiency of the implementation of the hard disk device and its reading and writing methods | |
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 |
US20110041005A1 (en) | 2009-08-11 | 2011-02-17 | Selinger Robert D | Controller and Method for Providing Read Status and Spare Block Management Information in a Flash Memory System |
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 |
US8850103B2 (en) * | 2009-08-28 | 2014-09-30 | Microsoft Corporation | Interruptible NAND flash memory |
US8473669B2 (en) | 2009-12-07 | 2013-06-25 | Sandisk Technologies Inc. | Method and system for concurrent background and foreground operations in a non-volatile memory array |
US8443263B2 (en) | 2009-12-30 | 2013-05-14 | Sandisk Technologies Inc. | Method and controller for performing a copy-back operation |
US8595411B2 (en) | 2009-12-30 | 2013-11-26 | Sandisk Technologies Inc. | Method and controller for performing a sequence of commands |
-
2010
- 2010-12-30 US US12/982,833 patent/US8819328B2/en active Active
-
2011
- 2011-11-04 CN CN201180063796XA patent/CN103282887A/zh active Pending
- 2011-11-04 WO PCT/US2011/059366 patent/WO2012091798A1/en active Application Filing
- 2011-11-04 EP EP11785860.5A patent/EP2659364A1/en not_active Ceased
- 2011-11-04 KR KR1020137013769A patent/KR101821845B1/ko active IP Right Grant
- 2011-11-23 TW TW100142993A patent/TWI531965B/zh not_active IP Right Cessation
-
2014
- 2014-07-14 US US14/330,881 patent/US9229655B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5479633A (en) * | 1992-10-30 | 1995-12-26 | Intel Corporation | Method of controlling clean-up of a solid state memory disk storing floating sector data |
US6553476B1 (en) * | 1997-02-10 | 2003-04-22 | Matsushita Electric Industrial Co., Ltd. | Storage management based on predicted I/O execution times |
US6145048A (en) * | 1998-09-17 | 2000-11-07 | Micron Technology, Inc. | Method of processing system management interrupt requests |
US7631132B1 (en) * | 2004-12-27 | 2009-12-08 | Unisys Corporation | Method and apparatus for prioritized transaction queuing |
US20060184723A1 (en) * | 2005-02-16 | 2006-08-17 | Sinclair Alan W | Direct file data programming and deletion in flash memories |
US20100023800A1 (en) * | 2005-09-26 | 2010-01-28 | Eliyahou Harari | NAND Flash Memory Controller Exporting a NAND Interface |
CN101261592A (zh) * | 2007-03-07 | 2008-09-10 | 国际商业机器公司 | 用于对任务请求进行调度的方法和设备 |
US20090132754A1 (en) * | 2007-11-20 | 2009-05-21 | Seagate Technology Llc | Data storage device with histogram of idle time and scheduling of background and foreground jobs |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106796490A (zh) * | 2014-10-03 | 2017-05-31 | 桑迪士克科技有限责任公司 | 用于存储器管理的硬件自动化 |
CN106796490B (zh) * | 2014-10-03 | 2020-05-26 | 桑迪士克科技有限责任公司 | 用于存储器管理的硬件自动化 |
CN107851053A (zh) * | 2015-07-16 | 2018-03-27 | 高通技术国际有限公司 | 用于管理快闪存储器内容的损坏的方法和设备 |
CN106610902A (zh) * | 2015-10-26 | 2017-05-03 | 点序科技股份有限公司 | 快闪存储器装置及其交错存取方法 |
CN106610902B (zh) * | 2015-10-26 | 2019-09-17 | 点序科技股份有限公司 | 快闪存储器装置及其交错存取方法 |
CN109117391B (zh) * | 2017-06-22 | 2022-02-22 | 旺宏电子股份有限公司 | 用于存储器系统的控制器 |
CN109117391A (zh) * | 2017-06-22 | 2019-01-01 | 旺宏电子股份有限公司 | 用于存储器系统的控制器 |
CN110413206A (zh) * | 2018-04-28 | 2019-11-05 | 伊姆西Ip控股有限责任公司 | 存储系统中的操作控制方法、设备和计算机程序产品 |
CN110413206B (zh) * | 2018-04-28 | 2023-05-30 | 伊姆西Ip控股有限责任公司 | 存储系统中的操作控制方法、设备和计算机程序产品 |
CN110781023A (zh) * | 2018-07-25 | 2020-02-11 | 爱思开海力士有限公司 | 用于在存储器系统中处理数据的设备和方法 |
CN110858121B (zh) * | 2018-08-23 | 2023-07-11 | 阿里巴巴集团控股有限公司 | 后台操作的调度方法及装置 |
CN110858121A (zh) * | 2018-08-23 | 2020-03-03 | 阿里巴巴集团控股有限公司 | 后台操作的调度方法及装置 |
CN109614049A (zh) * | 2018-12-11 | 2019-04-12 | 湖南国科微电子股份有限公司 | 闪存控制方法、闪存控制器及闪存系统 |
CN109614049B (zh) * | 2018-12-11 | 2022-03-25 | 湖南国科微电子股份有限公司 | 闪存控制方法、闪存控制器及闪存系统 |
CN110007853A (zh) * | 2019-01-30 | 2019-07-12 | 青岛镕铭半导体有限公司 | 一种Nandflash命令处理方法、装置、终端及存储介质 |
CN113253910A (zh) * | 2020-02-10 | 2021-08-13 | 西部数据技术公司 | Nand丢弃的命令检测和恢复 |
CN113703683A (zh) * | 2021-08-28 | 2021-11-26 | 江苏华存电子科技有限公司 | 一种单一的优化冗余存储系统的装置 |
Also Published As
Publication number | Publication date |
---|---|
US20120173792A1 (en) | 2012-07-05 |
WO2012091798A1 (en) | 2012-07-05 |
US9229655B2 (en) | 2016-01-05 |
TWI531965B (zh) | 2016-05-01 |
TW201227506A (en) | 2012-07-01 |
KR20140001924A (ko) | 2014-01-07 |
US8819328B2 (en) | 2014-08-26 |
EP2659364A1 (en) | 2013-11-06 |
KR101821845B1 (ko) | 2018-01-24 |
US20140325131A1 (en) | 2014-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103282887A (zh) | 用于进行后台操作的控制器和方法 | |
US10949091B2 (en) | Memory controllers, memory systems, solid state drives and methods for processing a number of commands | |
US9021178B2 (en) | High performance path for command processing | |
US9268687B2 (en) | Data writing method, memory control circuit unit and memory storage apparatus | |
US8386699B2 (en) | Method for giving program commands to flash memory for writing data according to a sequence, and controller and storage system using the same | |
US8924627B2 (en) | Flash memory device comprising host interface for processing a multi-command descriptor block in order to exploit concurrency | |
TWI454906B (zh) | 資料讀取方法、快閃記憶體控制器與儲存系統 | |
US8392649B2 (en) | Memory storage device, controller, and method for responding to host write commands triggering data movement | |
US8898375B2 (en) | Memory controlling method, memory controller and memory storage apparatus | |
US20120084489A1 (en) | Synchronized maintenance operations in a multi-bank storage system | |
US20150261444A1 (en) | Memory system and information processing device | |
US8914587B2 (en) | Multi-threaded memory operation using block write interruption after a number or threshold of pages have been written in order to service another request | |
CN114746834A (zh) | 基于分区状态的分区附加命令调度 | |
CN112597078A (zh) | 数据处理系统、存储器系统和用于操作存储器系统的方法 | |
US8572350B2 (en) | Memory management, memory control system and writing method for managing rewritable semiconductor non-volatile memory of a memory storage system | |
CN113196225A (zh) | 开放信道矢量命令执行 | |
US9152348B2 (en) | Data transmitting method, memory controller and data transmitting system | |
CN102650970B (zh) | 数据存取方法及使用此方法的内存控制器与储存装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130904 |