CN102473078B - 用于从非易失性存储器读取数据的控制器 - Google Patents

用于从非易失性存储器读取数据的控制器 Download PDF

Info

Publication number
CN102473078B
CN102473078B CN201080035769.7A CN201080035769A CN102473078B CN 102473078 B CN102473078 B CN 102473078B CN 201080035769 A CN201080035769 A CN 201080035769A CN 102473078 B CN102473078 B CN 102473078B
Authority
CN
China
Prior art keywords
data block
sequence
data
block
fetching
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
Application number
CN201080035769.7A
Other languages
English (en)
Other versions
CN102473078A (zh
Inventor
黄政国
S-H·F·奥
L·恩古延
P·尼奥斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kaiwei International Co
Marvell International Ltd
Marvell Asia Pte Ltd
Original Assignee
Mawier International Trade Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Mawier International Trade Co Ltd filed Critical Mawier International Trade Co Ltd
Publication of CN102473078A publication Critical patent/CN102473078A/zh
Application granted granted Critical
Publication of CN102473078B publication Critical patent/CN102473078B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

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)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

本公开包括与固态驱动器控制器相关的***和技术。在一些实施中,设备包括缓冲器,其持有对应于来自主机的命令的数据块。所述命令标识该数据块和将用于传输该标识的数据块的逻辑序列。响应于所述命令,该设备中所包括的数据取回器以不同于所述逻辑序列的取回序列从非易失性存储器单元中取回所述数据块的部分。当所述设备接收到标识多个数据块的多个命令时,所述设备通过取回这两个命令标识的数据块的部分并行服务所述命令。

Description

用于从非易失性存储器读取数据的控制器
相关申请的交叉引用
本申请要求2009年8月11日递交的题为“AnEfficientRandomReadStrategyandImplementationforSolid-StateDevices”的第61/233,118号美国专利申请以及2009年10月30日递交的题为“AMethodforMaximizingtheReadPerformanceofASetofLargeUnbalancedCommands”的第61/256,502号美国专利申请的35U.S.C.§119(e)下的优先权。上述申请的公开内容通过全文引用的方式并入本申请中。
技术领域
本公开描述与固态驱动器(SSD)相关的***和技术。
背景技术
SSD为使用固态存储器存储数据的数据存储设备。通常将非易失性存储器(例如,基于NAND的闪存)用作具有SSD的存储设备。操作耦合到非易失性存储器设备的SSD包括控制器,其被配置成向非易失性存储器设备写入数据和从非易失性存储器设备取回数据。通常将多个非易失性存储器设备耦合到SSD控制器以增加SSD的数据吞吐量。将数据块存储在非易失性存储器单元的扇区中。经由SSD控制器中的通道,通过对操作耦合到每个通道的非易失性存储器单元的扇区进行扫描,SSD控制器能够取回数据块的部分。在一些情况下,数据块的全部或多个部分可集中于操作耦合到一个通道的非易失性存储器单元的扇区中。
发明内容
本说明书描述了与用于从非易失性存储器读取数据的控制器相关的技术。所描述的***和技术的创新方面可实施为包括缓冲器的设备,其中所述缓冲器被配置成持有对应于命令的数据块。所述命令标识所述数据块和将用于传输该标识的数据块的第一序列。所述数据块的部分存储在各自的非易失性存储器单元中。所述设备包括数据取回器,被配置成响应于所述命令从所述各自的非易失性存储器单元中取回所述数据块的所述部分。所述数据取回器被配置成以不同于所述第一序列的第二序列取回所述部分并将所述取回的数据块的部分传输到所述缓冲器。响应于所述数据取回器已取回所述数据块中所包括的所有部分的指示,所述缓冲器传输所述数据块。
本发明的此方面和其它方面可包括下列特征中的一个或多个。所述数据取回器可被配置成将对应于第一命令的数据块的部分与对应于第二命令的数据块的部分进行交错。每个非易失性存储器单元可包括多个扇区。所述数据块的所述部分可存储在非易失性存储器单元的扇区之间。所述数据取回器可被配置成以所述第二序列从所述扇区取回所述数据块的部分。所述设备可进一步包括序列器,其可被配置成接收所述第一序列,对以所述第二序列取回的所述数据块进行跟踪,并且提供所述数据取回器已取回所述数据块中所包括的所有部分的指示。所述设备可进一步包括误码校验和校正单元,其操作耦合到所述数据取回器并且被配置成对所述数据取回器取回的所述数据块的一个或多个部分进行校验,其中所述数据取回器以所述第二序列将所述数据块的所述部分传输到所述误码校验和校正单元。所述误码校验和校正单元可操作耦合到所述序列器,并且可被配置成将指示所述数据块的一部分无误码的信号传输到所述序列器。通过对所述数据块的每个部分确定所述误码校验和校正单元传输所述数据块的所述部分的标识符和指示所述部分无误码的信号,所述序列器可对以所述第二序列取回的所述数据块进行跟踪。
所描述的***和技术的另一个创新方面可实施为包括接收针对数据块的命令的方法。所述命令标识所述数据块和将用于传输该标识的数据块的第一序列。所述数据块的部分存储在各自的非易失性存储器单元中。所述方法包括:通过处理电路以不同于所述第一序列的第二序列从所述各自的非易失性存储器单元中取回所述数据块的部分。将所述取回的数据块存储在缓冲器中。所述方法包括:根据第二序列,确定所述取回的数据包括所述数据块的所有部分;以及响应于所述确定,引导所述缓冲器传输所述数据块。
本发明的此方面和其它方面可包括下列特征中的一个或多个。可对以所述第二序列取回的所述数据块的所述部分进行跟踪。可接收用于传输附加数据块的附加命令。可并行取回对应于所述命令的数据块以及对应于所述附加命令的附加数据块。可将所述数据块的部分与所述附加数据块的部分进行交错。可将所述交错的部分存储在缓冲器中。可将所述取回的数据块的部分传输到所述缓冲器。每个非易失性存储器单元可包括多个扇区。可将所述数据块的所述部分存储在所述非易失性存储器单元的扇区之间。取回所述数据块的所述部分可包括以所述第二序列从所述扇区取回所述数据块的所述部分。可对数据块的一个或多个部分进行校验以确定所述取回的数据块无误码。可传输指示所述数据块的一部分无误码的信号。所述跟踪可包括:通过对所述数据块的每个部分确定可传输所述数据块的部分的标识符和指示所述部分无误码的信号,对以所述第二序列取回的所述数据块进行跟踪。
所描述的***和技术可实施于电子电路、计算机硬件、固件、软件或其组合,例如,本说明书中所公开的结构装置及其结构等同物。这可包括至少一个计算机可读介质,其体现为可操作以使一个或多个数据处理装置(例如,包括可编程处理器的信号处理设备)执行所述操作的程序。因此,从公开的方法、***或装置可实现程序实施,并且从公开的***、计算机可读介质或方法可实现装置实施。类似地,从公开的***、计算机可读介质或装置可实现方法实施,并且从公开的方法、计算机可读介质或装置可实现***实施。
例如,下文公开的实施方式可实施于各种***和装置,包括但不限于,专用数据处理装置(例如,无线接入点、远程环境监控器、路由器、转换器、计算机***部件、介质访问单元)、移动数据处理装置(例如,无线客户端、移动电话、个人数字助理(PDA)、移动计算机、数码相机)、通用数据处理装置(例如,小型计算机、服务器、大型主机、超级计算机)或其组合。
因此,根据所描述的***和技术的另一方面,***可包括:多个非易失性存储器单元,被配置成存储数据块的部分;主机,被配置成传输命令以接收存储在所述非易失性存储器单元的一个或多个中的一个或多个数据块;以及控制器,被配置成在所述非易失性存储器单元和所述主机之间传输数据。所述控制器可被配置成接收来自所述主机的命令,其中每个命令标识数据块和用于将所述数据块传输到所述主机的第一序列,并行取回存储在所述非易失性存储器单元中的数据块,其中以对应的命令所标识的不同于所述第一序列的第二序列取回一个或多个数据块的部分;对于每个命令,确定取回的数据块的部分包括所述块中的所有数据,并且响应于所述确定传输所述取回的数据块。
可实施本说明书中所描述的主题的具体实施方式以实现下列优点中的一个或多个。本文所描述的技术可减少通道中带宽的损耗,其中控制器通过所述通道取回数据块。此外,所述技术可提高从非易失性存储器单元取回数据块的效率。此外,可并行服务请求多个数据块的命令。具体地,例如,当大型数据块均匀地分布在少于全部的通道中或集中在一个通道中时,除用于所述大型数据块的命令之外,可并行执行多个命令。这样,在服务于多通路中的单个大型命令的同时,还可服务附加的命令。此可使得给定组的大型命令的执行时间的最小化。此外,可提高SSD控制器的吞吐量。
附图及其后的描述给出了一个或多个实施的细节。从所述描述、附图以及权利要求中可易于了解其它特征、目的和优点。
附图说明
图1示出包括固态存储器子***的计算***的示例;
图2示出固态控制器的示例;
图3示出在对两个数据块进行取回的过程中的数据流的示例;
图4示出固态控制器所执行的数据传输策略的示例;
图5示出固态控制器中的缓冲器的示例,其中所述固态控制器包括分配给用于标识数据块的命令的区域;
图6示出响应于来自主机的命令从非易失性存储器单元取回数据的过程的示例;以及
图7示出从通道到缓冲器的数据流的示例。
具体实施方式
图1示出计算***100的示例,其包括固态存储器子***150。***100包括:中央处理单元(CPU)105;显示设备110(例如,CRT(阴极射线管)或LCD(液晶显示器)监控器);输入设备,例如键盘115;以及指点设备120(尽管图1中示出为鼠标设备,但是其可为其它指示设备)。***100可包括一个或多个附加的处理器和一个或多个附加的输入/输出设备,例如,麦克风、扬声器、打印机等。
固态存储器子***150包括固态控制器155和闪存160,例如,NAND闪存。闪存160可包括一个或多个单级单元(SLC)设备和/或多级单元(MLC)设备。固态存储器子***150可包括控制逻辑,可设计所述控制逻辑以允许固态存储器子***150向***100加载操作***和应用软件。
固态存储器子***150被配置成与固态控制器155以多通道配置运行。在这种配置中,响应于接收到来自主机(例如CPU105)的命令,控制器155通过多个通道在CPU105和闪存160之间并行传输数据以提供高数据吞吐量。例如,闪存160可包括操作耦合到多个NAND闪存单元(如参照图2和图3所描述)的四个通道,其中每个通道可以约1.6Gbps的速率传送数据。与闪存160从四个NAND闪存单元串行传输数据时控制器155可达到的吞吐量相比,在这种布置中,固态控制器155可达到的吞吐量将比前者大四倍。使用这里所描述的技术,可提高固态控制器155从与其耦合的多个NAND闪存单元取回数据的效率。
容易理解,***100表示台式个人计算机,其可包括未示出的许多其它设备和子***,例如硬盘驱动器、网络接口和母板等。然而,此仅为其中可实施当前公开的主题的较大***的一个示例。这种较大设备和***的其它示例包括膝上型计算机、笔记本计算机、无盘迷你笔记本(sub-notebook)计算机以及可匹配入膝上型计算机上的PCIExpressCard、PCIeMini插槽或台式计算机上的PCIe插槽、但是却呈现为另一个驱动器的超细长驱动器。示例还包括采用非易失性存储器设备的智能电话、上网本、媒体播放器等。
然而,尽管示出这些具体示例,但是应理解,可使本文所描述的主题与许多不同类型的计算***相兼容。此外,闪存160可包括许多不同类型的固态存储设备,其中所述固态存储设备能够保持其数据而无需任何外部电源。此设备可包括闪存设备,例如BIOS芯片、CompactFlash、SmartMedia、记忆棒、PCMCIA类型I和类型II存储器卡、以及用于视频游戏控制台的存储卡。此设备还可包括相变存储器设备。
图2示出固态控制器250的示例。控制器250被配置成操作耦合到主机,例如,计算机***的CPU105。控制器接收来自主机的数据块的命令,并且将由该命令标识的数据块传输到主机。例如,CPU105将标识数据块的命令传输到控制器250,并且作为响应,控制器250使用本文所描述的技术从多个非易失性存储器单元取回该数据块。
控制器250包括数据取回器210,例如,NFLASH,其被配置成取回数据块。数据存储在多个非易失性存储器单元(NVM)214中,例如,NVM1、NVM2、NVM3、NVM4、...NVMn。例如,将每个数据块分成多个部分,并且将每个部分存储在对应NVM的扇区中。单个数据块的所有部分无需存储在相同的NVM中。相反地,所述部分可分布在多个NVM之间。
数据取回器210包括多个通道216,其中通道216操作耦合到NVM214。例如,如图2所示,数据取回器210包括四个通道216。容易理解,数据取回器210可具有更多的通道,例如,五个或六个,或更少的通道,例如,两个或三个。可将通道216操作耦合到一个或多个NVM214。例如,将通道1(216)耦合到NVM1和2(214),将通道2(216)耦合到NVM3和4(214)。将通道3(216)耦合到一个或多个NVM214(未示出),并且将通道4(216)耦合到NVMn(214)。每个NVM214可包括多个扇区,其中可物理存储数据块的一部分。数据取回器210被配置成从存储有数据块的一部分的NVM214中的扇区取回所述数据块的该部分。
控制器250进一步包括缓冲器212,其配置成存储取回的数据块的部分。例如,数据取回器210通过通道216从NVM取回数据块的部分,并且将取回的部分传输到缓冲器212。缓冲器212充当所述部分的临时存储单元。
控制器250附加地包括序列器218,其被配置成对从NVM214取回的所述数据块的部分进行跟踪。具体地,序列器218被配置成对数据取回器210取回的部分进行跟踪并将其传输至缓冲器212。序列器218进行此操作直至从NVM214取回所述数据块的所有部分。随后,序列器218将指示(例如信号)传输到缓冲器212以指示已取回数据块的所有部分。响应于对来自序列器218的指示的接收,缓冲器212将取回的数据块的部分传输到主机。
在一些实施中,控制器250包括误码校验和校正单元220,其操作耦合到数据取回器210。误码校验和校正单元220对数据取回器210取回的数据块的每个部分进行校验以确定取回的部分无误码。误码校验和校正单元220还耦合到序列器218以传输指示取回的部分无误码的信号。
可向数据块的每个部分分配逻辑块地址(LBA),其定义了如何以主机的使用顺序存储数据。在一些实施中,可将连续的部分存储在连续的NVM中。备选地,可将连续的部分存储在相同的NVM中。在另一种备选情况下,可将所述部分分布在NVM之间。此外,每个NVM包括多个扇区,并且每个扇区被配置成物理存储数据块的一部分。因此,可将数据块的部分分布在多个NVM中所包括的多个扇区之间。
将参照下文的表2描述用于并行取回存储在多个NVM之间的两个数据块的方法。并行取回两个数据块意味着在各通路中在NVM的扇区上取回数据块的部分。换句话说,在取回第二块的部分之前,数据取回器210不等待取回第一块的所有部分。而是,数据取回器210从NVM中的扇区取回所有两个数据块的部分。在下文的表2中,根据下列公约表示数据块的部分:“块编号_部分编号”。块编号对应于命令,而部分编号对应于数据块的一部分的标识符。在一些实施中,可以下文描述的描述符表示部分编号。
在参照表2描述的示例中,块1由五个部分(1_0至1_4)组成,而块2由七个部分(2_0至2_6)组成。一种取回块1和块2的方法为:首先取回块1中的所有块_部分,接着取回块2中的所有块_部分。因此,块_部分取回的序列将为:从通道0取回1_0;(跳过通道1、2和3);1_1;(跳过通道1);1_2;1_3;1_4;(跳过通道1、2、3);2_0;2_1;2_2;2_3;2_4;2_5;和2_6。因为在取回块2的任意块_部分之前取回块1的所有块_部分涉及跳过通道,所以通道的带宽保持未被使用,并且在取回过程中将引入延时。
备选地,为了最大化带宽使用并减小延时,数据取回器210经由通道0从第一扇区取回块_部分1_0,接着经由通道1从第一扇区取回块_部分2_1,接着经由通道2从第一扇区取回块_部分1_2,并且随后经由通道3从第一扇区取回块_部分1_3。对于第二扇区、第三扇区等,数据取回器210重复这些步骤,直至经由所有四个通道取回所有数据块。换句话说,数据取回器210不跳过通道,而是取回在通道的扇区中发现的任意块_部分。在其中未存储数据块的部分的扇区中不会取回数据块的部分。
基于对每个数据块的部分进行标识的描述符(下文将参照表3进行描述),可确定此取回模式。控制器250标识需要基于从主机接收的描述符进行取回的数据块的部分。例如,因为主机已在命令中提供对块_部分1_0和2_1进行标识的描述符,数据取回器210确定主机已请求这些块_部分并对其进行取回。为了取回接续块_部分1_0的部分(即,块_部分1_1)数据取回器210无需跳过块_部分2_1或其它块_部分。而是,在数据取回器210标识这些块_部分时,数据取回器210可取回主机指定的所有块_部分。
图3示出在对两个数据块进行取回的过程中的数据流的示例。在图3的示例中,在对两个数据块进行取回的过程中的数据流处于下列序列:1_0、1_2、1_3、2_1、1_1、2_5、2_2、2_3、1_4、2_6、2_0和2_4。图3所示的数据流为可经由通道0-3(216)从NVM214取回数据的部分的许多可能的序列中的一个。例如,备选数据流可为下列序列:2_0、2_1、2_2、2_3、2_4、2_5、2_6、1_3、1_0、1_2、1_1和1_4。值得注意的是,因为数据取回器210无需取回数据块的连续部分以排除数据块的其它部分,因此数据流包括数据的相同块_部分的非连续部分,例如,1_0后面是1_2。此外,因为数据取回器210在取回第二数据块的部分之前无需取回第一数据块的所有部分,所以数据流包括与块2的部分交错的块1的部分,例如,1_3后面是2_1,再后面是1_1。
数据取回器210可以取回其中将所述部分存储在NVM214的扇区的序列的数据块的部分。就此而言,取回数据块的部分的序列不同于数据块的连续部分的序列。此外,数据取回器210可将块1的部分与块2的部分进行交错,由此经由通道216并行取回这两个数据块。下文示出关于图3所示的数据流与其中取回块的连续部分的数据流的对照:
数据流(图3) 数据流(对连续部分的取回)
1_0 1_0
1_2 1_1
1_3 1_2
2_1 1_3
1_1 1_4
2_5 2_0
2_2 2_1
2_3 2_2
1_4 2_3
2_6 2_4
2_0 2_5
2_4 2_6
如前文所述,响应于对来自主机(例如CPU105)的命令的接收,数据取回器210从NVM214取回数据块。除请求数据块之外,CPU105还指定将数据块传输到CPU105的序列。例如,CPU105指定在连续部分的序列中传输块1(参照表2描述),即,1_0、1_1、1_2、1_3和1_4。通过以其中将所述部分存储在NVM的扇区中的序列取回数据块,数据取回器210可以不同于将所述部分传输到CPU105的序列对数据块的部分进行取回。控制器250以参照图4描述的方式传输数据取回器210取回的部分。
图4示出固态控制器250所执行的数据传输策略的示例。序列器218接收来自主机(例如CPU105)的数据块的命令。在一些实施中,所述命令包括对数据块(具体地,对数据块的部分)进行标识的多个描述符。CPU205将对数据块的部分进行标识的描述符以逻辑顺序传输到序列器218,其中所述逻辑顺序表示控制器250将所述部分传输到CPU205的顺序。图4所示的控制器250操作耦合到CPU205。容易理解,CPU205可操作耦合到若干主机,其中每个主机可传输接收数据块的命令。描述符如下文图示:
序列器218存储描述符,直至数据块的对应部分(也称为分配单位(AU))被数据取回器210取回并且被传输到缓冲器212。在一些实施中,数据取回器210将取回的数据块的部分传输到误码校验和校正单元220。在这种实施中,序列器218可存储描述符,直至误码校验和校正单元220对所述部分进行处理并将其发送到缓冲器212。
序列器218可向每个描述符添加描述符ID以生成新的描述符,其如下文图示。数据取回器210存储新的描述符,直至已从NVM214取回对应部分并且将其传输到缓冲器212或误码校验和校正单元220。
数据取回器210将从NVM取回的部分以前述序列(取回序列)传输到缓冲器212或误码校验和校正单元220。取回序列可不同于逻辑序列。对于每个取回的部分,数据取回器210将对应的描述符传输到误码校验和校正单元220。例如,下文图示了从数据取回器210传输到误码校验和校正单元220的描述符的内容。
LBA 缓冲器地址 ID
当单元220从数据取回器210接收所述部分时,误码校验和校正单元220可逐一处理所述部分。误码校验和校正单元220可使用描述符中的“缓冲器地址”字段将每个部分发送到缓冲器212中的正确位置。误码校验和校正单元220可进一步使用描述符中的“ID”字段将指示已完成对对应部分的误码校验的信号传输到序列器218。
序列器218收集误码校验和校正单元220所传输的“ID”字段中的标识符。在一些实施中,序列器218可被配置成存储描述符标识符的较长列表。以此方式,序列器对数据取回器210已通过所述取回序列取回的数据块的部分进行跟踪。当序列器218确定误码校验和校正单元220已将从CPU205接收的逻辑序列中所指定的所述数据块的所有部分传输到缓冲器212时,序列器218将指示传输到缓冲器212以将数据块传输到CPU205。以此方式,控制器250执行数据传输策略。具体地,控制器250可被配置成接收来自主机的指定数据块部分的逻辑序列的命令,以可不同于逻辑序列的取回序列取回数据块,并且将数据块以逻辑序列传输到主机。
表3(下文)示出由主机(例如CPU205)生成并以逻辑顺序传输到序列器218的描述符的示例。
表2示出处于块1或块2任一者中的数据块的每个部分所占据的通道216。如上述,以可不同于其中将块1和块2传输到主机的逻辑顺序的取回顺序并行取回块1和块2的部分。此外,将取回的部分以不同于逻辑序列的序列传输到缓冲器212。例如,可将取回的部分以其中对所述部分进行取回的序列传输到缓冲器212。
在一些情况下,控制器250接收两个主机命令——命令1和命令2——分别请求块1和块2。命令1和命令2中的每一个还分别指定块1和块2的对应逻辑序列。缓冲器212可在接收块1的所有部分之前接收块2的所有部分。在这种情况下,控制器250可被配置成将取回的块以接收主机命令的顺序传输到主机。换句话说,若在主机命令2之前接收到主机命令1,则控制器250可首先传输块1的部分,接着传输块2的部分。为此,控制器250可延迟对数据块的传输,即使已取回数据的所有部分并将其存储在缓冲器212中。
备选地,控制器250可被配置成改变将取回的块传输到主机的顺序。例如,若在主机命令2之前接收到主机命令1,并且若控制器250在取回块1的所有部分之前已取回块2的所有部分,则控制器250可首先将块2的部分传输到主机,随后传输块1的部分,由此改变将取回的块传输到主机的顺序。此外,若控制器250已取回少于块1的所有部分和块2的所有部分,则控制器250可延迟对块2的部分的传输,直至取回块1的所有部分。
图5示出固态控制器250中的缓冲器212的示例,其中固态控制器250包括分配给用于标识数据块的命令的区域。在一些实施中,对于每个数据块,缓冲器212将数据块的部分的缓冲器地址存储在对应的列表中。可对存储数据块的缓冲器地址的列表进行链接。列表中的每个条目为用于存储数据块的一部分的缓冲空间。进一步以对应的缓冲器地址标识每个条目。当缓冲器212接收由数据取回器210取回的且由误码校验和校正单元220校验的块_部分时,通过将每个块_部分存储在基于块_部分的地址标识的对应的缓冲空间,缓冲器212可增加链接的列表。
图6示出响应于来自主机的命令从非易失性存储器单元取回数据的过程600的示例。在605,接收标识数据块的命令。所述命令还标识用于传输标识的块中所包括的数据块的部分的第一序列。在610,以不同于所述第一序列的第二序列从各自的非易失性存储器单元中取回所述数据块的部分。在615,将取回的部分存储在缓冲器中。在620,对以所述第二序列取回的数据块的部分进行跟踪。在625,确定所述取回的数据包括数据块的所有部分。在630,响应于所述确定,引导缓冲器传输数据块。
可使用包括硬件、固件或其组合的处理电路实施过程600。在一些实施中,可从相同的主机或从不同的主机接收标识附加数据块的附加命令。作为响应,可取回对应于所述数据块和附加数据块的部分。此外,可对取回的部分进行交错并将其传输到缓冲器。具体地,可对取回的部分进行交错,从而可将附加数据块的部分与所述数据块的部分一起传输。
上文已详细描述了若干实施方式,并且各种修改都是可能的。在一些实施中,当不是将大型数据块均匀地分布在多个通道之间而是相反地将其集中在单个通道时,控制器250可并行执行多个命令,由此最小化用于给定组的大型数据块的执行时间。表4示出四个通道,其各自操作耦合到非易失性存储器单元的对应扇区以访问三个大型数据块——包括部分102-105的块1,包括部分207-209的块2以及包括部分404-407的块4。
通过以已标识块1的命令服务已并行标识块2和块4的命令,可使用通道216中的可用带宽,并且可最大化该组数据块的读取性能。尽管数据取回器210以四通路/操作读取所述块,但是在此过程中,已服务三个命令。
为此,可将数据块的一部分发送到适当的位置,例如,缓冲器212中的扇区。通常,将在一个操作中读取的部分发送到缓冲器中的相同逻辑段,其为保留以存储数据块的部分的缓冲器212的物理区域。逻辑段可为邻接的地址空间,或者可为物理分散的,并且与控制器250链接且由控制器250管理。
图7示出从通道216到缓冲器212的数据流的示例。数据取回器210执行的数据取回操作在缓冲器212中可具有多个目的段705、710、715。每个目的段可对应于将要服务的命令,这些命令用于标识数据块。CPU205可控制目的位置。例如,CPU205可用缓冲器分散列表控制目的段。在执行各通路时,CPU205可建立缓冲器分散列表以将数据块的部分分布到正确的目的段,并且进一步分布到每个段内的适当偏移。
可以电子电路、计算机硬件、固件、软件或其组合来实施所公开的主题,包括本说明书中所描述的功能性操作,例如,以本说明书中公开的结构装置及其结构等同物,潜在地包括可操作以使一个或多个数据处理装置执行所描述的操作的程序(例如,编码于计算机可读介质内的程序,其可为存储器设备、存储设备、机器可读存储基板或其它物理机器可读介质,或其中一个或多个的组合)。
尽管本说明书含有许多细节,但是其不应被解释为对本发明的权利要求的限制,而是应被解释为对具体实施方式特有的特征的描述。本说明书中在独立实施方式的上下文中所描述的某些特征还可实施于单个实施方式的组合。相反地,在单个实施方式的上下文中所描述的各种特征也可独立地实施于多个实施方式或其任意适当的子组合。此外,尽管上文可将特征描述为作用于特定的组合,甚至最初如此要求,但是在一些情况下,可使来自所要求的组合的一个或多个特征脱离该组合,并且所述要求的组合可指向子组合或子组合的变体。
类似地,尽管在附图中以特定的顺序描述了操作,但是不应被理解为要求以所示的特定顺序或顺序地执行这些操作,或者要求执行所说明的操作以达到所要的结果。此外,上文描述的实施方式中的各种***部件的分割不应被理解为在所有实施方式均要求这样的分割。
其它实施方式也落入本发明的权利要求的范围。

Claims (20)

1.一种用于从存储器读取数据的设备,所述设备包括:
缓冲器,被配置成持有对应于命令的数据块,其中所述命令标识所述数据块和将用于向发出所述命令的主机传输所标识的数据块的部分的第一序列,其中所述数据块的部分存储在各自的非易失性存储器单元中;以及
数据取回器,被配置成响应于所述命令以不同于所述第一序列的第二序列从所述各自的非易失性存储器单元中取回所述数据块的部分,所述第二序列与非连续取回所述数据块的所述部分相关联;
误码校验和校正单元,***作耦合到所述数据取回器,所述误码校验和校正单元被配置成:
根据所述第二序列从所述数据取回器接收所述数据块的部分,
当所述数据块的部分正被根据所述第二序列从所述数据取回器接收时,对所述数据块的部分中的每个部分进行校验以确定所述数据块的部分无误码,以及
根据所述第二序列向所述缓冲器传输所述经校验的所述数据块的部分;以及
序列器,***作为耦合到所述误码校验和校正单元,所述序列器被配置成:
接收所述第一序列;
跟踪以所述第二序列取回的所述数据块的部分;以及
提供一个所述误码校验和校正单元已向所述缓冲器传输所述数据块中所包括的所有部分的指示,
其中所述误码校验和校正单元被配置成向所述序列器传输一个指示所述数据块的部分无误码的信号,
其中所述序列器通过确定针对所述数据块的每个部分所述误码校验和校正单元传输所述数据块的部分的一个标识符以及指示所述部分无误码的一个信号来对以所述第二序列取回的所述数据块进行跟踪,以及
其中所述缓冲器根据所述第二序列接收所述经校验的所述数据块的部分,基于所述第一序列将所述经校验的所述数据块的部分的每个部分存储在所标识的缓冲器空间中,并且响应于所述误码校验和校正单元已向所述缓冲器传输所述数据块中所包括的所有部分的所述指示而根据所述第一序列向所述主机传输所述数据块。
2.根据权利要求1所述的设备,其中所述缓冲器被配置成持有对应于各自的命令的多个数据块,以及其中所述数据取回器被配置成从所述多个数据块的不同数据块中并行取回不同的部分。
3.根据权利要求2所述的设备,其中所述数据取回器被配置成将对应于第一命令的数据块的部分与对应于第二命令的数据块的部分进行交错。
4.根据权利要求1所述的设备,其中每个非易失性存储器单元包括多个扇区,所述数据块的部分存储在所述非易失性存储器单元的扇区之间,以及其中所述数据取回器被配置成以所述第二序列从所述扇区取回所述数据块的部分。
5.根据权利要求4所述的设备,其中以所述第二序列,所述数据取回器被配置成以每个扇区为单位而不跳过与扇区相关联的任意通道从所述各自的非易失性存储器单元取回所述数据块的部分。
6.根据权利要求4所述的设备,其中:
所述多个扇区包括第一扇区和第二扇区;以及
所述数据取回器被配置成在从所述第二扇区取回所述数据块的所述部分的第二部分之前以所述第二序列从所述第一扇区取回所述数据块的所述部分的第一部分,而在取回所述第一部分或所述第二部分中不跳过任何通道。
7.一种用于从存储器读取数据的方法,所述方法包括:
接收针对数据块将以第一序列向主机传输的命令;
针对所述数据块的每个部分,接收所述数据块的所述部分的一个标识符以及一个指示所述数据块的所述部分已经针对误码取回并处理的信号,其中所述标识符和所述信号根据以不同于所述第一序列的第二序列从一个或多个存储器设备取回的所述数据块得以接收;
基于所述接收的标识符和所述信号对以所述第二序列取回的所述数据块进行跟踪;
基于接收针对所述数据块的所述标识符和所述信号确定所述数据块已经针对误码被取回并被处理;以及
响应于确定所述数据块已经针对误码被取回并被处理,根据所述第一序列向所述主机发起所述数据块的传输。
8.根据权利要求7所述的方法,其中接收针对所述数据块将以所述第一序列向所述主机传输的所述命令包括:
针对所述数据块的每个部分,接收标识所述数据块的所述部分的描述符,其中针对所述数据块的所述描述符根据所述第一序列接收。
9.根据权利要求7所述的方法,向所述主机发起所述数据块的所述传输包括:
向存储所述数据块的缓冲器传输一个指示所述数据块已经被取回的信号。
10.根据权利要求7所述的方法,其中所述数据块通过多个数据通道以所述第二序列取回。
11.根据权利要求7所述的方法,其中针对所述数据块的所述命令是针对第一数据块的第一命令,并且所述方法进一步包括:
接收针对第二数据块将以第三序列向所述主机传输的第二命令;
当接收所述第一数据块的所述标识符以及指示所述第一数据块的部分已经针对误码被取回并被处理的信号时,接收对应于所述第二命令的所述第二数据块的标识符以及指示所述第二数据块的部分已经针对误码被取回并被处理的信号,其中对应于所述第二数据块的所述标识符和所述信号根据以不同于所述第三序列的第四序列取回的所述第二数据块被接收;
基于所述接收的对应于所述第二数据块的标识符和所述信号对以所述第四序列取回的所述第二数据块进行跟踪;
基于接收针对所述第二数据块的所述标识符和所述信号确定所述第二数据块已经针对误码被取回并被处理;以及
在确定所述第二数据块已经针对误码被取回并被处理之后,根据所述第三序列引导所述第二数据块向所述主机的传输。
12.根据权利要求11所述的方法,其中引导所述第二数据块向所述主机的传输包括:
延迟所述第二数据块向所述主机的传输,直到对应于所述第一命令的所述第一数据块已经根据所述第一序列向所述主机传输。
13.根据权利要求11所述的方法,其中对应于所述第一命令的所述第一数据块通过多个数据通道的子集以所述第二序列被取回,并且对应于所述第二命令的所述第二数据块通过多个数据通道的另一子集以所述第四序列被取回。
14.一种用于从存储器读取数据的***,所述***包括:
多个存储器设备;
主机;以及
存储器控制器,与所述主机和所述多个存储器设备耦合,所述存储器控制器被配置成:
从所述主机接收针对数据块将以第一序列向所述主机传输的命令,
根据不同于所述第一序列的第二序列从所述多个存储器设备的一个或多个存储器设备取回所述数据块,
当所述数据块的每个部分以所述第二序列从所述一个或多个存储器设备正被接收时,针对误码校验所述数据块的所述部分,
针对所述数据块的每个部分,接收所述数据块的所述部分的一个标识符以及一个指示所述数据块的所述部分已经针对误码被取回并被处理的信号,其中所述标识符和所述信号根据以所述第二序列从所述多个存储器设备的一个或多个存储器设备正被取回的所述数据块被接收,
基于所述接收的标识符和所述信号对以所述第二序列取回的所述数据块进行跟踪;
基于接收针对所述数据块的所述标识符和所述信号确定所述数据块已经针对误码被取回并被处理;以及
响应于确定所述数据块已经针对误码被取回并被处理,根据所述第一序列向所述主机发起所述数据块的传输。
15.根据权利要求14所述的***,其中所述存储器控制器被配置成:
针对所述数据块的每个部分,接收标识所述数据块的所述部分的描述符,其中针对所述数据块的所述描述符根据所述第一序列被接收。
16.根据权利要求14所述的***,其中所述存储器控制器被配置成:
向存储所述数据块的缓冲器传输指示所述数据块已经被取回的信号。
17.根据权利要求14所述的***,其中所述存储器控制器被配置成通过多个数据通道以所述第二序列取回所述数据块。
18.根据权利要求14所述的***,其中针对所述数据块的所述命令是针对第一数据块的第一命令;
所述存储器控制器被配置成:
接收针对第二数据块将以第三序列向所述主机传输的第二命令;
从所述一个或多个存储器设备,与根据所述第二序列取回所述第一数据块并行地,根据不同于所述第三序列的第四序列取回所述第二数据块,
当接收所述第一数据块的所述标识符以及指示所述第一数据块的部分已经针对误码被取回并被处理的信号时,接收对应于所述第二命令的所述第二数据块的标识符以及指示所述第二数据块的部分已经针对误码被取回并被处理的信号,其中对应于所述第二数据块的所述标识符和所述信号根据以所述第四序列正被取回的所述第二数据块接收;
基于所述接收的对应于所述第二数据块的标识符和所述信号对以所述第四序列取回的所述第二数据块进行跟踪;
基于接收针对所述第二数据块的所述标识符和所述信号确定所述第二数据块已经针对误码被取回并被处理;以及
在确定所述第二数据块已经针对误码被取回并被处理之后,根据所述第三序列引导所述第二数据块向所述主机的传输。
19.根据权利要求18所述的***,其中所述存储器控制器被配置成:
延迟所述第二数据块向所述主机的传输,直到对应于所述第一命令的所述第一数据块已经根据所述第一序列向所述主机传输。
20.根据权利要求18所述的***,其中所述存储器控制器被配置成:
通过多个数据通道的子集以所述第二序列取回对应于所述第一命令的所述第一数据块,以及
通过多个数据通道的另一子集以所述第四序列取回对应于所述第二命令的所述第二数据块。
CN201080035769.7A 2009-08-11 2010-07-23 用于从非易失性存储器读取数据的控制器 Active CN102473078B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US23311809P 2009-08-11 2009-08-11
US61/233,118 2009-08-11
US25650209P 2009-10-30 2009-10-30
US61/256,502 2009-10-30
PCT/US2010/043095 WO2011019494A1 (en) 2009-08-11 2010-07-23 Controller for reading data from non-volatile memory

Publications (2)

Publication Number Publication Date
CN102473078A CN102473078A (zh) 2012-05-23
CN102473078B true CN102473078B (zh) 2016-01-20

Family

ID=42710582

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080035769.7A Active CN102473078B (zh) 2009-08-11 2010-07-23 用于从非易失性存储器读取数据的控制器

Country Status (6)

Country Link
US (2) US8650438B2 (zh)
EP (1) EP2465027B1 (zh)
JP (1) JP5732708B2 (zh)
KR (1) KR101608910B1 (zh)
CN (1) CN102473078B (zh)
WO (1) WO2011019494A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101008923B1 (ko) * 2010-01-15 2011-01-17 주식회사 노바칩스 다양한 종류의 반도체 메모리 장치들을 구비하는 반도체 메모리 시스템 및 이의 제어 방법
US9176810B2 (en) * 2011-05-27 2015-11-03 SanDisk Technologies, Inc. Bit error reduction through varied data positioning
DE102012218363A1 (de) * 2012-10-09 2014-04-10 Continental Automotive Gmbh Verfahren zur Steuerung eines getrennten Ablaufs von verknüpften Programmblöcken und Steuergerät
US11551735B2 (en) 2015-03-11 2023-01-10 Rambus, Inc. High performance, non-volatile memory module
US9904609B2 (en) * 2015-11-04 2018-02-27 Toshiba Memory Corporation Memory controller and memory device
KR102468698B1 (ko) * 2015-12-23 2022-11-22 에스케이하이닉스 주식회사 메모리 장치
KR102530889B1 (ko) 2016-04-06 2023-05-11 에스케이하이닉스 주식회사 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법
KR102646252B1 (ko) 2016-11-30 2024-03-11 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN109709902B (zh) * 2017-10-25 2022-01-21 富泰华精密电子(郑州)有限公司 数据交互方法、***和存储器
CN108519859B (zh) * 2018-03-30 2021-04-20 深圳忆联信息***有限公司 数据读取方法、装置、设备及介质
US11599481B2 (en) * 2019-12-12 2023-03-07 Western Digital Technologies, Inc. Error recovery from submission queue fetching errors

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1959622A (zh) * 2006-11-24 2007-05-09 骆建军 基于flash的硬盘
US7281110B1 (en) * 2001-08-09 2007-10-09 Mobilygen Corporation Random access memory controller with out of order execution

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3419547B2 (ja) * 1994-06-08 2003-06-23 富士フイルムマイクロデバイス株式会社 不揮発性メモリ
JP3095638B2 (ja) * 1994-10-03 2000-10-10 株式会社東芝 データ処理装置
US5754565A (en) * 1996-10-15 1998-05-19 Quantum Corporation Reconstruction of syndromes for bi-level on-the-fly error correction in disk drive systems
US7047391B2 (en) * 1998-09-14 2006-05-16 The Massachusetts Institute Of Technology System and method for re-ordering memory references for access to memory
US7149857B2 (en) * 2002-05-14 2006-12-12 Micron Technology, Inc. Out of order DRAM sequencer
JP2005115600A (ja) 2003-10-07 2005-04-28 Hitachi Ltd 情報処理装置及び方法
JP4661566B2 (ja) * 2005-11-30 2011-03-30 Tdk株式会社 アクセスコントローラ、フラッシュメモリシステム及びアクセス制御方法
US20080244244A1 (en) * 2007-03-30 2008-10-02 Advanced Micro Devices, Inc. Parallel instruction processing and operand integrity verification
US7996599B2 (en) * 2007-04-25 2011-08-09 Apple Inc. Command resequencing in memory operations
US9495116B2 (en) * 2007-12-26 2016-11-15 Sandisk Il Ltd. Storage device coordinator and a host device that includes the same
US8055816B2 (en) * 2009-04-09 2011-11-08 Micron Technology, Inc. Memory controllers, memory systems, solid state drives and methods for processing a number of commands

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7281110B1 (en) * 2001-08-09 2007-10-09 Mobilygen Corporation Random access memory controller with out of order execution
CN1959622A (zh) * 2006-11-24 2007-05-09 骆建军 基于flash的硬盘

Also Published As

Publication number Publication date
EP2465027B1 (en) 2019-03-20
CN102473078A (zh) 2012-05-23
US20110041007A1 (en) 2011-02-17
KR101608910B1 (ko) 2016-04-04
US8892940B2 (en) 2014-11-18
KR20120055563A (ko) 2012-05-31
US8650438B2 (en) 2014-02-11
JP5732708B2 (ja) 2015-06-10
EP2465027A1 (en) 2012-06-20
JP2013502001A (ja) 2013-01-17
US20140149807A1 (en) 2014-05-29
WO2011019494A1 (en) 2011-02-17

Similar Documents

Publication Publication Date Title
CN102473078B (zh) 用于从非易失性存储器读取数据的控制器
US10949091B2 (en) Memory controllers, memory systems, solid state drives and methods for processing a number of commands
CN106855832B (zh) 数据存储装置及其操作方法
EP2225650B1 (en) Efficient interrupt message definition
KR101824227B1 (ko) 메모리 시스템 및 그것의 프로그램 방법
CN108153482B (zh) Io命令处理方法与介质接口控制器
CN106920575B (zh) 数据存储装置及其操作方法
US11199992B2 (en) Automatic host buffer pointer pattern detection
US11797221B2 (en) Method of operating storage device for improving QoS latency and storage device performing the same
US20230161589A1 (en) Memory controller and memory system for generating instruction set based on non-interleaving block group information
CN104281413A (zh) 命令队列管理方法、存储器控制器及存储器储存装置
CN111797029A (zh) 控制器、包括其的存储器***及操作存储器***的方法
CN104598161A (zh) 数据读取、写入方法和装置及数据存储结构
CN108153582B (zh) Io命令处理方法与介质接口控制器
CN113986137A (zh) 存储装置和存储***
US7949895B2 (en) Data reading method
US11516292B2 (en) Method of operating network-based storage device, method of operating storage system using the same and storage module performing the same
US8667188B2 (en) Communication between a computer and a data storage device
KR20190118428A (ko) 컨트롤러 및 이를 포함하는 메모리 시스템
CN113126897A (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
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200428

Address after: Singapore City

Patentee after: Marvell Asia Pte. Ltd.

Address before: Ford street, Grand Cayman, Cayman Islands

Patentee before: Kaiwei international Co.

Effective date of registration: 20200428

Address after: Ford street, Grand Cayman, Cayman Islands

Patentee after: Kaiwei international Co.

Address before: Hamilton, Bermuda

Patentee before: Marvell International Ltd.

Effective date of registration: 20200428

Address after: Hamilton, Bermuda

Patentee after: Marvell International Ltd.

Address before: Babado J San Mega Le

Patentee before: MARVELL WORLD TRADE Ltd.