本申请要求2009年8月11日递交的题为“An Efficient RandomRead Strategy and Implementation for Solid-State Devices”的第61/233,118号美国专利申请以及2009年10月30日递交的题为“AMethod for Maximizing the Read Performance of A Set of LargeUnbalanced Commands”的第61/256,502号美国专利申请的35U.S.C.§119(e)下的优先权。上述申请的公开内容通过全文引用的方式并入本申请中。
发明内容
本说明书描述了与用于从非易失性存储器读取数据的控制器相关的技术。所描述的系统和技术的创新方面可实施为包括缓冲器的设备,其中所述缓冲器被配置成持有对应于命令的数据块。所述命令标识所述数据块和将用于传输该标识的数据块的第一序列。所述数据块的部分存储在各自的非易失性存储器单元中。所述设备包括数据取回器,被配置成响应于所述命令从所述各自的非易失性存储器单元中取回所述数据块的所述部分。所述数据取回器被配置成以不同于所述第一序列的第二序列取回所述部分并将所述取回的数据块的部分传输到所述缓冲器。响应于所述数据取回器已取回所述数据块中所包括的所有部分的指示,所述缓冲器传输所述数据块。
本发明的此方面和其它方面可包括下列特征中的一个或多个。所述数据取回器可被配置成将对应于第一命令的数据块的部分与对应于第二命令的数据块的部分进行交错。每个非易失性存储器单元可包括多个扇区。所述数据块的所述部分可存储在非易失性存储器单元的扇区之间。所述数据取回器可被配置成以所述第二序列从所述扇区取回所述数据块的部分。所述设备可进一步包括序列器,其可被配置成接收所述第一序列,对以所述第二序列取回的所述数据块进行跟踪,并且提供所述数据取回器已取回所述数据块中所包括的所有部分的指示。所述设备可进一步包括误码校验和校正单元,其操作耦合到所述数据取回器并且被配置成对所述数据取回器取回的所述数据块的一个或多个部分进行校验,其中所述数据取回器以所述第二序列将所述数据块的所述部分传输到所述误码校验和校正单元。所述误码校验和校正单元可操作耦合到所述序列器,并且可被配置成将指示所述数据块的一部分无误码的信号传输到所述序列器。通过对所述数据块的每个部分确定所述误码校验和校正单元传输所述数据块的所述部分的标识符和指示所述部分无误码的信号,所述序列器可对以所述第二序列取回的所述数据块进行跟踪。
所描述的系统和技术的另一个创新方面可实施为包括接收针对数据块的命令的方法。所述命令标识所述数据块和将用于传输该标识的数据块的第一序列。所述数据块的部分存储在各自的非易失性存储器单元中。所述方法包括:通过处理电路以不同于所述第一序列的第二序列从所述各自的非易失性存储器单元中取回所述数据块的部分。将所述取回的数据块存储在缓冲器中。所述方法包括:根据第二序列,确定所述取回的数据包括所述数据块的所有部分;以及响应于所述确定,引导所述缓冲器传输所述数据块。
本发明的此方面和其它方面可包括下列特征中的一个或多个。可对以所述第二序列取回的所述数据块的所述部分进行跟踪。可接收用于传输附加数据块的附加命令。可并行取回对应于所述命令的数据块以及对应于所述附加命令的附加数据块。可将所述数据块的部分与所述附加数据块的部分进行交错。可将所述交错的部分存储在缓冲器中。可将所述取回的数据块的部分传输到所述缓冲器。每个非易失性存储器单元可包括多个扇区。可将所述数据块的所述部分存储在所述非易失性存储器单元的扇区之间。取回所述数据块的所述部分可包括以所述第二序列从所述扇区取回所述数据块的所述部分。可对数据块的一个或多个部分进行校验以确定所述取回的数据块无误码。可传输指示所述数据块的一部分无误码的信号。所述跟踪可包括:通过对所述数据块的每个部分确定可传输所述数据块的部分的标识符和指示所述部分无误码的信号,对以所述第二序列取回的所述数据块进行跟踪。
所描述的系统和技术可实施于电子电路、计算机硬件、固件、软件或其组合,例如,本说明书中所公开的结构装置及其结构等同物。这可包括至少一个计算机可读介质,其体现为可操作以使一个或多个数据处理装置(例如,包括可编程处理器的信号处理设备)执行所述操作的程序。因此,从公开的方法、系统或装置可实现程序实施,并且从公开的系统、计算机可读介质或方法可实现装置实施。类似地,从公开的系统、计算机可读介质或装置可实现方法实施,并且从公开的方法、计算机可读介质或装置可实现系统实施。
例如,下文公开的实施方式可实施于各种系统和装置,包括但不限于,专用数据处理装置(例如,无线接入点、远程环境监控器、路由器、转换器、计算机系统部件、介质访问单元)、移动数据处理装置(例如,无线客户端、移动电话、个人数字助理(PDA)、移动计算机、数码相机)、通用数据处理装置(例如,小型计算机、服务器、大型主机、超级计算机)或其组合。
因此,根据所描述的系统和技术的另一方面,系统可包括:多个非易失性存储器单元,被配置成存储数据块的部分;主机,被配置成传输命令以接收存储在所述非易失性存储器单元的一个或多个中的一个或多个数据块;以及控制器,被配置成在所述非易失性存储器单元和所述主机之间传输数据。所述控制器可被配置成接收来自所述主机的命令,其中每个命令标识数据块和用于将所述数据块传输到所述主机的第一序列,并行取回存储在所述非易失性存储器单元中的数据块,其中以对应的命令所标识的不同于所述第一序列的第二序列取回一个或多个数据块的部分;对于每个命令,确定取回的数据块的部分包括所述块中的所有数据,并且响应于所述确定传输所述取回的数据块。
可实施本说明书中所描述的主题的具体实施方式以实现下列优点中的一个或多个。本文所描述的技术可减少通道中带宽的损耗,其中控制器通过所述通道取回数据块。此外,所述技术可提高从非易失性存储器单元取回数据块的效率。此外,可并行服务请求多个数据块的命令。具体地,例如,当大型数据块均匀地分布在少于全部的通道中或集中在一个通道中时,除用于所述大型数据块的命令之外,可并行执行多个命令。这样,在服务于多通路中的单个大型命令的同时,还可服务附加的命令。此可使得给定组的大型命令的执行时间的最小化。此外,可提高SSD控制器的吞吐量。
附图及其后的描述给出了一个或多个实施的细节。从所述描述、附图以及权利要求中可易于了解其它特征、目的和优点。
具体实施方式
图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以多通道配置运行。在这种配置中,响应于接收到来自主机(例如CPU 105)的命令,控制器155通过多个通道在CPU 105和闪存160之间并行传输数据以提供高数据吞吐量。例如,闪存160可包括操作耦合到多个NAND闪存单元(如参照图2和图3所描述)的四个通道,其中每个通道可以约1.6Gbps的速率传送数据。与闪存160从四个NAND闪存单元串行传输数据时控制器155可达到的吞吐量相比,在这种布置中,固态控制器155可达到的吞吐量将比前者大四倍。使用这里所描述的技术,可提高固态控制器155从与其耦合的多个NAND闪存单元取回数据的效率。
容易理解,系统100表示台式个人计算机,其可包括未示出的许多其它设备和子系统,例如硬盘驱动器、网络接口和母板等。然而,此仅为其中可实施当前公开的主题的较大系统的一个示例。这种较大设备和系统的其它示例包括膝上型计算机、笔记本计算机、无盘迷你笔记本(sub-notebook)计算机以及可匹配入膝上型计算机上的PCI ExpressCard、PCIeMini插槽或台式计算机上的PCIe插槽、但是却呈现为另一个驱动器的超细长驱动器。示例还包括采用非易失性存储器设备的智能电话、上网本、媒体播放器等。
然而,尽管示出这些具体示例,但是应理解,可使本文所描述的主题与许多不同类型的计算系统相兼容。此外,闪存160可包括许多不同类型的固态存储设备,其中所述固态存储设备能够保持其数据而无需任何外部电源。此设备可包括闪存设备,例如BIOS芯片、CompactFlash、SmartMedia、记忆棒、PCMCIA类型I和类型II存储器卡、以及用于视频游戏控制台的存储卡。此设备还可包括相变存储器设备。
图2示出固态控制器250的示例。控制器250被配置成操作耦合到主机,例如,计算机系统的CPU 105。控制器接收来自主机的数据块的命令,并且将由该命令标识的数据块传输到主机。例如,CPU 105将标识数据块的命令传输到控制器250,并且作为响应,控制器250使用本文所描述的技术从多个非易失性存储器单元取回该数据块。
控制器250包括数据取回器210,例如,NFLASH,其被配置成取回数据块。数据存储在多个非易失性存储器单元(NVM)214中,例如,NVM 1、NVM 2、NVM 3、NVM 4、...NVM n。例如,将每个数据块分成多个部分,并且将每个部分存储在对应NVM的扇区中。单个数据块的所有部分无需存储在相同的NVM中。相反地,所述部分可分布在多个NVM之间。
数据取回器210包括多个通道216,其中通道216操作耦合到NVM 214。例如,如图2所示,数据取回器210包括四个通道216。容易理解,数据取回器210可具有更多的通道,例如,五个或六个,或更少的通道,例如,两个或三个。可将通道216操作耦合到一个或多个NVM 214。例如,将通道1(216)耦合到NVM 1和2(214),将通道2(216)耦合到NVM 3和4(214)。将通道3(216)耦合到一个或多个NVM 214(未示出),并且将通道4(216)耦合到NVM n(214)。每个NVM 214可包括多个扇区,其中可物理存储数据块的一部分。数据取回器210被配置成从存储有数据块的一部分的NVM 214中的扇区取回所述数据块的该部分。
控制器250进一步包括缓冲器212,其配置成存储取回的数据块的部分。例如,数据取回器210通过通道216从NVM取回数据块的部分,并且将取回的部分传输到缓冲器212。缓冲器212充当所述部分的临时存储单元。
控制器250附加地包括序列器218,其被配置成对从NVM 214取回的所述数据块的部分进行跟踪。具体地,序列器218被配置成对数据取回器210取回的部分进行跟踪并将其传输至缓冲器212。序列器218进行此操作直至从NVM 214取回所述数据块的所有部分。随后,序列器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)从NVM 214取回数据的部分的许多可能的序列中的一个。例如,备选数据流可为下列序列: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可以取回其中将所述部分存储在NVM 214的扇区的序列的数据块的部分。就此而言,取回数据块的部分的序列不同于数据块的连续部分的序列。此外,数据取回器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 |
如前文所述,响应于对来自主机(例如CPU 105)的命令的接收,数据取回器210从NVM 214取回数据块。除请求数据块之外,CPU 105还指定将数据块传输到CPU 105的序列。例如,CPU 105指定在连续部分的序列中传输块1(参照表2描述),即,1_0、1_1、1_2、1_3和1_4。通过以其中将所述部分存储在NVM的扇区中的序列取回数据块,数据取回器210可以不同于将所述部分传输到CPU105的序列对数据块的部分进行取回。控制器250以参照图4描述的方式传输数据取回器210取回的部分。
图4示出固态控制器250所执行的数据传输策略的示例。序列器218接收来自主机(例如CPU 105)的数据块的命令。在一些实施中,所述命令包括对数据块(具体地,对数据块的部分)进行标识的多个描述符。CPU 205将对数据块的部分进行标识的描述符以逻辑顺序传输到序列器218,其中所述逻辑顺序表示控制器250将所述部分传输到CPU 205的顺序。图4所示的控制器250操作耦合到CPU 205。容易理解,CPU 205可操作耦合到若干主机,其中每个主机可传输接收数据块的命令。描述符如下文图示:
序列器218存储描述符,直至数据块的对应部分(也称为分配单位(AU))被数据取回器210取回并且被传输到缓冲器212。在一些实施中,数据取回器210将取回的数据块的部分传输到误码校验和校正单元220。在这种实施中,序列器218可存储描述符,直至误码校验和校正单元220对所述部分进行处理并将其发送到缓冲器212。
序列器218可向每个描述符添加描述符ID以生成新的描述符,其如下文图示。数据取回器210存储新的描述符,直至已从NVM 214取回对应部分并且将其传输到缓冲器212或误码校验和校正单元220。
数据取回器210将从NVM取回的部分以前述序列(取回序列)传输到缓冲器212或误码校验和校正单元220。取回序列可不同于逻辑序列。对于每个取回的部分,数据取回器210将对应的描述符传输到误码校验和校正单元220。例如,下文图示了从数据取回器210传输到误码校验和校正单元220的描述符的内容。
当单元220从数据取回器210接收所述部分时,误码校验和校正单元220可逐一处理所述部分。误码校验和校正单元220可使用描述符中的“缓冲器地址”字段将每个部分发送到缓冲器212中的正确位置。误码校验和校正单元220可进一步使用描述符中的“ID”字段将指示已完成对对应部分的误码校验的信号传输到序列器218。
序列器218收集误码校验和校正单元220所传输的“ID”字段中的标识符。在一些实施中,序列器218可被配置成存储描述符标识符的较长列表。以此方式,序列器对数据取回器210已通过所述取回序列取回的数据块的部分进行跟踪。当序列器218确定误码校验和校正单元220已将从CPU 205接收的逻辑序列中所指定的所述数据块的所有部分传输到缓冲器212时,序列器218将指示传输到缓冲器212以将数据块传输到CPU 205。以此方式,控制器250执行数据传输策略。具体地,控制器250可被配置成接收来自主机的指定数据块部分的逻辑序列的命令,以可不同于逻辑序列的取回序列取回数据块,并且将数据块以逻辑序列传输到主机。
表3(下文)示出由主机(例如CPU 205)生成并以逻辑顺序传输到序列器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。每个目的段可对应于将要服务的命令,这些命令用于标识数据块。CPU 205可控制目的位置。例如,CPU 205可用缓冲器分散列表控制目的段。在执行各通路时,CPU 205可建立缓冲器分散列表以将数据块的部分分布到正确的目的段,并且进一步分布到每个段内的适当偏移。
可以电子电路、计算机硬件、固件、软件或其组合来实施所公开的主题,包括本说明书中所描述的功能性操作,例如,以本说明书中公开的结构装置及其结构等同物,潜在地包括可操作以使一个或多个数据处理装置执行所描述的操作的程序(例如,编码于计算机可读介质内的程序,其可为存储器设备、存储设备、机器可读存储基板或其它物理机器可读介质,或其中一个或多个的组合)。
尽管本说明书含有许多细节,但是其不应被解释为对本发明的权利要求的限制,而是应被解释为对具体实施方式特有的特征的描述。本说明书中在独立实施方式的上下文中所描述的某些特征还可实施于单个实施方式的组合。相反地,在单个实施方式的上下文中所描述的各种特征也可独立地实施于多个实施方式或其任意适当的子组合。此外,尽管上文可将特征描述为作用于特定的组合,甚至最初如此要求,但是在一些情况下,可使来自所要求的组合的一个或多个特征脱离该组合,并且所述要求的组合可指向子组合或子组合的变体。
类似地,尽管在附图中以特定的顺序描述了操作,但是不应被理解为要求以所示的特定顺序或顺序地执行这些操作,或者要求执行所说明的操作以达到所要的结果。此外,上文描述的实施方式中的各种系统部件的分割不应被理解为在所有实施方式均要求这样的分割。
其它实施方式也落入本发明的权利要求的范围。