运行中的独立磁盘冗余阵列奇偶校验计算的制作方法

文档序号:17048858发布日期:2019-03-05 19:49阅读:218来源:国知局
运行中的独立磁盘冗余阵列奇偶校验计算的制作方法

本公开涉及执行运行中奇偶校验计算以提高驱动效率的固态驱动器和方法。



背景技术:

与常规磁盘驱动器相比,固态驱动器(ssd)通常具有更快性能、更加紧凑且对振动或物理冲击的敏感性更低。鉴于这些优势,代替磁盘驱动器或除了磁盘驱动器之外,ssd被用于越来越多的计算装置和其它消费产品,即使ssd的每千兆字节存储容量明显高于磁盘驱动器的存储容量。

数据以多种方式存储在ssd中,以在读取和写入周期期间优化数据质量。独立磁盘冗余阵列(raid)是数据存储虚拟化技术的一个实例,所述技术将多个ssd组件组合到单个逻辑单元中,以实现数据冗余、性能改进或两者。数据根据多个分布布局(称为raid级别)分布在ssd上,其取决于所需的数据冗余级别和所需性能。raid级别已经编号,且当前介于raid0到raid6的范围内,每一级别在ssd中的数据存储的关键目标可靠性、可用性、性能和容量之间提供不同的平衡。raid级别大于raid0可防止不可恢复的区段读取错误,以及整个物理驱动器的故障。

raid技术也可以部署在ssd中,其中ssd控制器可以承担raid控制器的额外作用且跨ssd内的多个非易失性存储器装置上分配数据,其方式与可跨多个ssd部署raid的方式相同。在此状况下,当存储器装置差错率超过ssd控制器纠错码(ecc)的纠错能力时,raid防止各个存储器装置出现故障或防止不可恢复的存储器装置错误。

在可用的若干raid级别中,raid5分布布局非常适合ssd,以便在读取和写入操作期间实现最优数据保持。这是因为raid5分布布局并入有分布在所有驱动器中的奇偶校验信息。以相同方式,在ssd中部署raid时,具有奇偶校验信息的raid5数据以条带形式写入并跨一组存储器装置分布。在nand闪存非易失性存储器装置的情况下,数据还写入有ecc奇偶校验信息,所述ecc奇偶校验信息用于检测和纠正nand闪存读取和写入错误,且通常利用由嵌入于从ssd控制器发射到nand快闪存储器装置的数据中的纠错码(ecc)生成的奇偶校验位。在单个设备发生故障时,可使用raid条带的分布式数据和奇偶校验,经由使用存储于其余存储器装置中的数据进行的布尔(boolean)运算异或来恢复丢失的数据,由此便于后续的读取循环而不会丢失任何数据。ssd内也可以采用其它raid分布来满足特定要求。

当前ssd内使用的raid数据分布布局采用同步数据活动,其中连续处理从主机获得的读取和写入请求。此同步活动涉及读取存储在缓冲器中的所有数据,以便在不可恢复的错误之后生成奇偶校验信息或重构数据,这可能是耗时的并且会不必要地给ssd的存储器控制器增加压力。鉴于此,长期以来仍然需要由支持raid的ssd控制器执行的优化数据读取和写入操作,这对ssd控制器的负担较小。



技术实现要素:

本公开涉及一种数据存储装置,其包括含有数据的非易失性半导体存储阵列、与非易失性半导体存储阵列通信的控制器以及含有raid单元的缓冲器,raid单元经由控制器与非易失性半导体存储阵列通信。控制器经配置以从主机装置接收写入请求,且将与所述写入请求相关的第一数据累积在所述raid单元中。控制器还经配置以同时(i)将含于raid单元中的第一数据传输到非易失性半导体存储阵列,(ii)计算含于raid单元中的第一数据的奇偶校验值,每一奇偶校验值与每一写入请求相关,(iii)将奇偶校验值累积在上下文识别符缓冲器中,(iv)使上下文标识符与奇偶校验值相关联,且(v)将奇偶校验值和上下文标识符存储在非易失性半导体存储阵列中。

在某些实施方案中,第一数据包括经划分成第一数据部分的第一数据页面。在其它实施方案中,使用第一数据部分计算奇偶校验值。在一些实施方案中,上下文识别符缓冲器使用所有第一数据页面的相同第一数据部分计算奇偶校验值。在某些实施方案中,通过执行逻辑异或操作,使用含于上下文识别符缓冲器中的所有第一数据页面的相同第一数据部分来计算奇偶校验值。在其它实施方案中,控制器经进一步配置以将识别符分配到含于每一raid单元中的第一数据。在一些实施方案中,标识符包括最终旗标、页面位图和偏移位图中的至少一个。在某些实施方案中,每一raid单元中的第一数据与识别符一起存储在非易失性半导体存储阵列中。在其它实施方案中,缓冲器是dram缓冲器。在一些实施方案中,raid单元经实施为raid5。

本公开还涉及一种数据存储装置,其包括含有第一数据的非易失性半导体存储阵列、与非易失性半导体存储阵列通信的控制器以及含有raid单元的缓冲器,raid单元经由控制器与非易失性半导体存储阵列通信。控制器经配置以(i)从主机装置接收存储于非易失性半导体存储阵列中的第二数据的读取请求,(ii)确定与所请求的第二数据相关联的识别符,(iii)确定所请求的第二数据是否含有不可恢复的错误,(iv)如果所请求的第二数据含有不可恢复的错误,那么累积包含奇偶校验值的第一数据,所述第一数据含于与重构缓冲器中所请求的第二数据相同的识别符相关联的非易失性半导体存储阵列中,(v)从所累积的第一数据和奇偶校验值重构所请求的第二数据,且(vi)经由raid单元将经重构的第二数据传输到主机装置。

在某些实施方案中,通过对所累积的第一数据和奇偶校验值执行逻辑异或操作来重构所请求的第二数据。在其它实施方案中,控制器使用查找表确定所请求的第二数据在非易失性半导体存储阵列中的位置。在一些实施方案中,缓冲器是dram缓冲器。在某些实施方案中,raid单元经实施为raid5。

本公开还涉及一种方法,其包括通过与非易失性半导体存储阵列通信的控制器从主机装置接收写入请求。方法还包含将与写入请求相关的第一数据累积在含于缓冲器中的raid单元中,缓冲器经由控制器与非易失性半导体存储阵列通信。另外,方法同时(i)将含于raid单元中的第一数据传输到非易失性半导体存储阵列,(ii)从含于raid单元中的第一数据计算奇偶校验值,每一奇偶校验值与每一写入请求相关,(iii)将奇偶校验值累积在上下文识别符缓冲器中,(iv)使上下文标识符与奇偶校验值相关联,且(v)将奇偶校验值和上下文标识符存储在非易失性半导体存储阵列中。

在某些实施方案中,第一数据包括经划分成第一数据部分的第一数据页面。在其它实施方案中,方法进一步包括使用第一数据部分计算奇偶校验值。在一些实施方案中,上下文识别符缓冲器使用所有第一数据页面的相同第一数据部分计算奇偶校验值。在某些实施方案中,通过执行逻辑异或操作,使用含于上下文识别符缓冲器中的所有第一数据页面的相同第一数据部分来计算奇偶校验值。在其它实施方案中,方法进一步包括将识别符分配到含于每一raid单元中的第一数据。

本公开还涉及一种方法,其包括通过与非易失性半导体存储阵列通信的控制器从主机装置接收存储于非易失性半导体存储阵列中的第二数据的读取请求。方法还包括确定与所请求的第二数据相关联的识别符,且确定所请求的第二数据是否含有不可恢复的错误。方法进一步包括如果所请求的第二数据含有不可恢复的错误,那么累积包含奇偶校验值的第一数据,所述第一数据含于与重构缓冲器中所请求的第二数据相同的识别符相关联的非易失性半导体存储阵列中。方法还包括从所累积的第一数据和奇偶校验值重构所请求的第二数据,且经由raid单元将经重构的第二数据传输到主机装置。

在某些实施方案中,方法进一步包括对第一数据和奇偶校验值执行逻辑异或操作。在其它实施方案中,控制器使用查找表确定所请求的第二数据在非易失性半导体存储阵列中的位置。

本公开还涉及存储指令的非暂时性计算机可读媒体,所述指令在由处理器执行时致使处理器执行方法,所述方法包括通过与非易失性半导体存储阵列通信的控制器从主机装置接收写入请求。方法还包括将与写入请求相关的第一数据累积在含于缓冲器中的raid单元中,缓冲器经由控制器与非易失性半导体存储阵列通信。方法还同时(i)将含于raid单元中的第一数据传输到非易失性半导体存储阵列,(ii)从含于raid单元中的第一数据计算奇偶校验值,每一奇偶校验值与每一写入请求相关,(iii)将奇偶校验值累积在上下文识别符缓冲器中,(iv)使上下文标识符与奇偶校验值相关联,且(v)将奇偶校验值和上下文标识符存储在非易失性半导体存储阵列中。

本公开还涉及存储指令的非暂时性计算机可读媒体,所述指令在由处理器执行时致使处理器执行方法,所述方法包括通过与非易失性半导体存储阵列通信的控制器从主机装置接收存储于非易失性半导体存储阵列中的第二数据的读取请求。方法还包括确定与所请求的第二数据相关联的识别符,且确定所请求的第二数据是否含有不可恢复的错误的步骤。方法还包括如果所请求的第二数据含有不可恢复的错误,那么累积包含奇偶校验值的第一数据,所述第一数据含于与重构缓冲器中所请求的第二数据相同的识别符相关联的非易失性半导体存储阵列中。另外,方法包括从所累积的第一数据和奇偶校验值重构所请求的第二数据,且经由raid单元将经重构的第二数据传输到主机装置的步骤。

附图说明

在结合附图考虑以下详细描述后,前述和其它目标和优势将是显而易见的,在所有附图中相同参考标号是指相同部件,且在附图中:

图1展示根据本公开的一或多个实施例的固态驱动器(ssd)的示意性图示;

图2a说明根据本公开的实施例的将数据从主机装置写入到图1的ssd的技术;

图2b说明根据本公开的实施例的当写入数据时对奇偶校验缓冲器的示范性计算;

图3a说明根据本公开的实施例的在未检测到错误的情况下将数据从图1中的ssd读取回到主机装置的技术;

图3b说明根据本公开的实施例的在检测到不可恢复的错误的情况下将数据从图1中的ssd读取回到主机装置的技术;

图3c说明根据本公开的实施例的在检测到不可恢复的错误且控制器已开始raid恢复过程的情况下将数据从图1中的ssd读取回到主机装置的技术;

图4a到4e说明根据本公开的实施例的在图3c的读取过程期间数据恢复的各个阶段;

图5a是根据本公开的实施例的将数据写入到图1的ssd的方法步骤的流程图;

图5b是根据本公开的实施例的从图1的ssd异步读取数据的方法步骤的流程图;以及

图6说明根据本公开的实施例的使用多个raid条带上下文对多个同时读取/写入命令的处理。

具体实施方式

图1是包括与存储装置120通信的至少一个主机110的计算系统100的框图。主机110是计算系统,其包括处理器、存储器和通常所已知的其它组件,且出于简洁起见未在图1中展示。举例来说,主机110可以是sata、pciexpress(pcie)或nvmexpress(nvmetm)主机。存储装置120提供非易失性存储功能性,供主机110使用。存储装置120是固态驱动器(“ssd”),其是包含基于非易失性半导体的存储元件(例如基于nand的快闪存储器装置)作为存储媒体的非易失性存储装置。存储装置120包含非易失性存储器(nvm)控制器130、dram缓冲器140和非易失性(nv)半导体存储器150。存储装置120还可包含未展示的其它元件,例如用于高速缓冲存储和缓冲的易失性存储器、电力供应器电路(包含用于将电力传递到ssd控制器130的电路、dram缓冲器140和nv半导体存储器150以及用于缓冲电力供应器的电容器)、指示灯电路、温度传感器、自举电路、时钟电路以及用于辅助各种功能的其它电路。

ssd控制器130包括用于从主机110接收请求(例如,读取和写入)的接收模块132。举例来说,接收模块132可以是数据应答器。控制器130还包括数据重构器134,其耦合到异或模块135,用于恢复由于nv存储器150的磁盘中的任一个的故障而丢失的数据。举例来说,数据重构器134可包括能够影响逻辑计算的处理器。控制器130还可包括上下文id缓冲器136和重构id缓冲器138,以促进如将在以下段落中详述的数据重构。虽然数据重构器134、异或模块135、上下文id缓冲器和重构id缓冲器138展示为单个单元,但是应了解本公开的任何实施方案可包含多个这些模块。

ssd控制器130接收和处理来自主机110的命令,以便对dram缓冲器140和nv半导体存储器150执行操作。来自主机110的命令包含读取或写入到nv半导体存储器内的位置的请求,和各种管理命令,例如用于查询存储装置120的特征集的命令、用于格式化nv半导体存储器的命令、用于创建和修改各种类型的队列的命令、用于请求各种事件的通知的命令,以及各种其它命令。nv半导体存储器包含一或多个基于非易失性半导体的存储元件(例如存储元件150、160、170、180、190)的阵列,其一些实例包含非易失性nand快闪存储器、非易失性nor快闪存储器、基于非易失性dram的存储器(nvdimm)、磁阻式和电阻式随机存取存储器(mram和reram)、相变存储器(pcm)以及其它类型的存储器。dram缓冲器140的部分用作raid条带146,其中易失性存储器块141到145经分配到raid条带146。存储器块141到144用以缓冲从主机110接收的数据,而一个存储器块145用以存储根据从nv存储器检索的数据计算出的奇偶校验值y。dram缓冲器140还包括raid缓冲器148,其可容纳各自具有存储器块141到145的若干raid条带(为清楚起见而未展示)。

图2a说明根据本公开的实施例的将数据写入到nv存储器150且具有raid保护的方法。此处从主机110接收到nv存储器150的写入命令。一或多个此类写入命令包括从主机110接收的呈数据页面d1到d4形式的数据。写入命令可含有仅用于数据页面的一个部分的数据,或可含有跨越若干数据页面的数据。写入命令还可包括与目标nv存储器装置150、160、170、180、190相关的逻辑地址信息。ssd120的控制器130经由接收模块231接收写入命令。接着在dram缓冲器140内的raid缓冲器141到144中缓冲来自一或多个写入命令的数据页面d1到d4,使得数据页面d1到d4累积于raid条带146中。数据d1到d4的每一页面由针对于dram缓冲器140的每一磁盘的页缓冲器缓冲。接着将数据页面d1到d4存储于形成raid条带146的dram单元141到144中。在将数据页面d1到d4缓冲到dram140中后,由控制器130读取数据页面d1到d4,以写入到nv存储器装置150、160、170、180。应注意,在图2a中,存在多个异或模块232到235,和多个上下文id缓冲器236到239。控制器130读取dram缓冲器140的raid条带146中的数据页面d1到d4且将此信息馈送到异或模块232到235中,如下文将解释。

每一数据页面d1到d4包括若干部分。在图2a中所展示的实例中,数据页面d1包括部分p1到p4。类似地,数据页面d2包括部分q1到q4,数据页面d3包括部分r1到r4,且数据页面d4包括部分s1到s4。虽然图2a中的每一页面d1到d4包括四个部分,但是应理解,每一数据页面可包括多个2n部分,其中n是整数。

当控制器130从raid条带146读取数据页面d1到d4时,将新上下文识别符c_id分配到读取到异或模块232到235中的每一个中的信息。此c_id对于控制器130从raid条带146读取的每一数据页面d1到d4中的每一部分是唯一的。c_id链接到用于参考nv存储器装置150、160、170、180、190中的数据页面d1到d4的地址。上下文识别符奇偶校验缓冲器236到239与每一异或模块232到235相关联。因此,举例来说,当d1由控制器130读取时,将数据部分p1到p4写入到nvm装置150。同时,构成数据页面d1的数据部分p1到p4被连续读取到异或模块232到235中,所述异或模块232到235执行异或操作且将值输出到对应上下文id缓冲器236到239中。举例来说,当d1由控制器130读取时,p1由异或模块232读取,p2由异或模块233读取,p3由异或模块234读取,且p4由异或模块235读取。缓冲器236到239最初不含有任何数据,且因此当数据部分p1到p4由缓冲器236到239中的每一个接收时,认为这些数据部分是缓冲器236到239中的第一数据,且因此用数据部分p1到p4来初始化奇偶校验缓冲器236到239。在此实例中,数据部分p1初始化奇偶校验缓冲器236,数据部分p2初始化奇偶校验缓冲器237,数据部分p3初始化奇偶校验缓冲器238,且数据部分p4初始化奇偶校验缓冲器239。应注意数据页面p、q、r和s的类似数据部分由相同奇偶校验缓冲器接收,即p1、q1、r1和s1由奇偶校验缓冲器236接收,p2、q2、r2和s2由奇偶校验缓冲器237接收,p3、q3、r3和s3由奇偶校验缓冲器238接收,且p4、q4、r4和s4由奇偶校验缓冲器239接收。还应注意,虽然p1到p4被描述为首先由缓冲器236到239接收,但是p1到p4、q1到q4、r1到r4和s1到s4中的任一个可首先由缓冲器236到239接收。因此,作为另一实例,数据部分q1初始化奇偶校验缓冲器236,数据部分p1初始化奇偶校验缓冲器237,数据部分s1初始化奇偶校验缓冲器238,且数据部分p2初始化奇偶校验缓冲器239。因此,虽然必须依序读取相同页面内的数据部分,但是次序或读取数据页面不固定。

可由控制器130以任何次序和/或同时读取数据页面d1到d4。因此,虽然页面d1经读取为第一数据页面,但是如上文所描述,其余页面d2到d4中的任一个可由控制器130读取为第一数据页面。举例来说,可由控制器130以次序d2、d4、d1和d3读取数据页面。在另一实例中,可以次序d4//d2、d3和d1读取数据页面。虽然读取数据页面d1到d4的次序不重要,但是当读取任何一个数据页面d1到d4时,必须各自依次读取对应数据部分p1到p4、q1到q4、r1到r4和s1到s4。举例来说,当在控制器130中读取数据页面d1时,必须将p1读取到异或模块232中(且随后到奇偶校验缓冲器236中),p2必须准备好到异或模块233中(且随后到奇偶校验缓冲器237中),必须将p3读取到异或模块234中(且随后到奇偶校验缓冲器238中),且必须将p4读取到异或模块235中(且随后到奇偶校验缓冲器239中)。作为另一个实例,当控制器130准备好数据页面d3时,必须将r1读取到异或模块232中(且随后到奇偶校验缓冲器236中),r2必须准备好到异或模块233中(且随后到奇偶校验缓冲器237中),必须将r3读取到异或模块234中(且随后到奇偶校验缓冲器238中),且必须将r4读取到异或模块235中(且随后到奇偶校验缓冲器239中)。

在利用来自数据页面d1的数据部分p1到p4初始化奇偶校验缓冲器236到239后,当由控制器130读取后续数据页面d2到d4时,利用相应奇偶校验缓冲器236到239的内容对其复合数据部分q1到q4、r1到r4和s1到s4进行异或操作。举例来说,如果在控制器130中读取数据页面d3,那么奇偶校验缓冲器236将含有奇偶校验缓冲器237将含有奇偶校验缓冲器238将含有且奇偶校验缓冲器239将含有作为另一个实例,如果在数据页面d1和d3之后在控制器130中读取数据页面d2,那么奇偶校验缓冲器236将含有奇偶校验缓冲器237将含有奇偶校验缓冲器238将含有且奇偶校验缓冲器239将含有应理解,如果数据页面d2仅含有部分q1到q2且数据页面d3仅含有数据部分r1到r3,那么奇偶校验缓冲器236将含有奇偶校验缓冲器237将含有奇偶校验缓冲器238将含有且奇偶校验缓冲器239将含有p4。

毕竟由控制器130读取数据页面d1到d4,对应数据部分p1到p4、q1到q4、r1到r4和s1到s4存储于nv存储器150、160、170和180中,如图2a中所描绘。奇偶校验缓冲器236到239的内容也存储于nv存储器190中。在数据页面d1到d4各自含有数据的四个部分的状况下,nv存储器190的奇偶校验内容为:

图2b说明当由控制器130读取数据时奇偶校验缓冲器236到239的状态。在从主机110接收写入命令之前,控制器130通过将页面位图设置为‘1’,将偏移位图设置为‘0’来初始化奇偶校验缓冲器236到239。对于待写入的数据的2n页面,页面和偏移位图将各自为2n字节长。因此,对于上文所论述工作实例,利用数据的四个页面d1、d2、d3、d4,将在‘1111’处初始化页面位图,且将在‘0000’处初始化偏移位图。这展示于图2b中的表的行250中。每当控制器130读入待写入到nv存储器装置150、160、170、180的数据时,检查是否在‘0000’处初始化偏移位图。如果是,那么控制器接着继续以同样将奇偶校验缓冲器236到239初始化为零。这将是图2的行250中的情况,其中x1=0、x2=0、x3=0且x4=0。

如果偏移位图不是零,那么控制器130开始将数据传输到nv存储器装置150、160、170、180,且同时利用相应奇偶校验缓冲器236到239对数据进行异或操作。因此当由ssd120接收数据部分p1时,控制器将接收到的数据传输到nv存储器装置150和异或模块232。接着利用奇偶校验缓冲器236的内容对异或模块232进行异或操作p1。如图2b的行251中所描绘,刚初始化奇偶校验缓冲器,且因此奇偶校验缓冲器的内容将是当由奇偶校验缓冲器236首次接收数据页面的第一部分(p1)的奇偶校验缓冲器236时,将偏移位图递增到‘0001’,如图2b中的行251中所指示。因此当由奇偶校验缓冲器237首次接收数据页面的第二部分(p2)时,如在图2b中的行253中一样,将偏移位图进一步递增到‘0011’。类似地,当由奇偶校验缓冲器238首次接收数据页面的第三部分(p3)时,如在图2b中的行257中一样,将偏移位图进一步递增到‘0111’。最后,当由奇偶校验缓冲器239首次接收数据页面的第四部分(p4)时,如在图2b中的行258中一样,将偏移位图进一步递增到‘1111’。

应注意由相同异或模块和奇偶校验缓冲器接收每一数据页面d1、d2、d3、d4的类似部分。因此,在图2b中,由异或模块232和奇偶校验缓冲器236接收p1、q1、r1和s1,由异或模块233和奇偶校验缓冲器237接收p2、q2、r2和s2,由异或模块234和奇偶校验缓冲器238接收p3、q3、r3和s3,且由异或模块235和奇偶校验缓冲器239接收p4、q4、r4和s4。

在已由控制器130接收数据页面中的所有数据后,例如已接收所有d1(p1、p2、p3和p4),在控制器内将最终旗标设置成‘1’以指示所有数据已写入到nv存储器装置150且奇偶校验缓冲器236到239已经更新。当此情况发生时,页面位图从‘1111’递减到‘1110’,如图2b的行258中所展示。类似地,当接收所有d2(q1、q2、q3和q4)时,将最终旗标设置成‘1’且将页面位图更新为‘1010’以指示所有数据已写入到nv存储器装置160且奇偶校验缓冲器236到239已经更新。当接收所有d3(r1、r2、r3和r4)时,将最终旗标设置成‘1’且页面位图更新为‘1000’以指示所有数据已写入nv存储器装置160且奇偶校验缓冲器236到239已经更新。同样,当接收所有d4(s1、s2、s3和s4)时,将最终旗标设置成‘1’且将页面位图清除为‘0000’以指示所有数据已写入到nv存储器装置160且奇偶校验缓冲器236到239已经更新。当所有数据页面d1、d2、d3、d4已写入到nv存储器装置150、160、170和180时,奇偶校验缓冲器236到239是完整的且含有如图2b中的行266。接着将奇偶校验缓冲器236到239的内容x1、x2、x3和x4写入到nv存储器装置190。

图3a说明根据本公开的实施例的将数据从nv存储器150读取到主机110的过程。由主机110发布的读取命令由控制器130的接收模块132接收。控制器130解译读取命令且定位nv存储器150中的所请求的数据。作为实例,如果所请求的数据位于数据页面d3内(即含于数据部分r1到r4中的任一个中),那么控制器130将定位nv存储器装置150中的数据页面d3(经由存储于例如控制器130中的查找表)且将数据页面d3传输到dram缓冲器140,以待返回到主机110。

然而,在某些情形下,从nv存储器装置150、160、170、180读取数据可导致不可恢复的错误,如图3b中所描绘。此处,控制器130从存储器装置150、160、170、180读取数据,但由于nv存储器装置150、160、170、180的故障不能够对数据解密,或不能够纠正读取数据时出现的错误的数目。如在图5b中例示,在从nv存储器装置170检索数据单元d3之后,控制器130确定数据d3中的错误的数目超出其纠错能力且确定已发生不可恢复的错误。控制器130接着开始raid恢复过程,如图3c中所展示。

当已发生不可恢复的错误(例如检索数据页面d3时的错误)时,控制器130从nv存储器装置150、160、180和190读取其余数据页面d1、d2、d4和y,且将数据传输到dram缓冲器140中的raid条带146。如先前所提及,可根据存储器装置150、160、170、180和190附接的通道的存取时序和总线活动以任何次序传回数据页面d1、d2、d4和y。在从nv存储器检索第一数据页面(例如数据页面d1)后,控制器130识别这是由raid条带146存取的第一地址且使用相关联的上下文识别符c_id来定位用于所述c_id的重构缓冲器。根据图2a和2b,将数据d1在经传输到dram缓冲器140中的raid条带146之前经加载到上下文识别符重构缓冲器138中。在对数据d2和d4进行各自后续检索时,在将相应数据传输到dram缓冲器140中的raid条带146之前利用上下文识别符重构缓冲器138的内容对相应数据进行异或操作。在从nv存储器检索最后一个数据页面之后,将缓冲器138的内容写入到dram缓冲器140中的raid条带146作为数据单元d3。包括数据页面d3的dram缓冲器140中的raid条带146内的数据接着返回到主机110以满足读取请求。

图4a到e分解如先前所描述的恢复数据单元d3的重构过程。当控制器130在从nv存储器150检索数据期间检测到错误时,其尝试纠正错误(例如,使用纠错码等等)。当纠错是不可能的时,控制器130确定错误是不可恢复的且开始raid数据恢复过程。raid数据恢复涉及检索raid条带的其余数据页面,即数据页面d1、d2、d4和p。此处,在运行中执行检索,其中数据d1、d2、d4和p到达的序列不重要。控制器读取nv存储器且从nv存储器装置180检索数据页面d4作为第一数据页面,例如如图4a中所描绘。将数据页面d4读取到且随后存储于dram缓冲器140中的raid条带146中的单元144中。数据页面d4还同时读取到上下文识别符重构缓冲器138中。数据页面d4初始化上下文识别符重构缓冲器138,因为其在检测到不可恢复的错误之后首先被读取到缓冲器138中。

在检索数据d4之后,由控制器130从nv存储器检索数据d1。以类似方式,将数据d1读取到dram缓冲器140中的raid条带146中的单元141中,且由于数据d1不是将检索raid条带的其余数据单元的第一数据单元,因此同时利用缓冲器138的先前内容进行异或操作,即利用d4对d1进行异或操作,且布尔组合替换缓冲器138的内容,如图4b中所说明。

假设将从nv存储器检索的下一个数据页面是奇偶校验信息y,将此数据读取到dram缓冲器140中的raid条带146中的单元145中,且同时利用上下文识别符重构缓冲器138的先前内容对此数据进行异或操作,即利用对y进行异或操作,且布尔组合替换缓冲器138的内容,如图4c中所说明。将从nv存储器检索的最终数据页面是d2,其接着被读取到dram缓冲器140中的raid条带146中的单元142中,且同时利用缓冲器的内容进行异或操作,即利用对d2进行异或操作,且布尔组合替换缓冲器138的内容,如图4d中所说明。

在已检索来自nv存储器装置150、160、170、180、190的数据之后,将上下文识别符重构缓冲器138的内容传输到raid条带146且存储为raid单元143中的经重构数据页面d3,如图4e中所展示。此经重构数据d3读出到主机110以满足读取请求。

应理解,raid奇偶校验计算和数据重构的常规方法涉及控制器首先从nv存储器读取且在dram中缓冲其余数据页面d1、d2、d4和y中的所有,接着读回这些数据页面以执行异或函数以利用错误(d3)重构数据,在将d3数据单元raid条带的内容传回到主机装置之前节约raid条带中的此经重构数据页面。从首次从nv存储器读取数据页面并保存到dram缓冲器,这涉及四个额外数据单元读取(从dram到控制器)和一个额外数据单元写入(从控制器到dram缓冲器)。这无疑会减慢向主机读取数据的速度,并且会增加控制器上的计算压力。本公开通过在运行中从nv存储器150、160、170、180、190接收数据且对所述数据进行“异或操作”,即同时将其存储在dram缓冲器中来缓解此问题,而不需要在控制器可采取重构动作之前累积d1、d2、d4和y。此外,使用上下文id将nv存储器内的地址唯一地与控制器中的独立异或缓冲器相关联能够使得多个读取和写入nv存储器操作并行进行,且来自不同读取或写入命令的数据单元是以任何次序交错。

现将关于图5a中所展示的流程图详述将数据写入到nv存储器150且具有raid保护的方法700。此方法映射关于图2a和2b所描述的写入过程。方法700开始于步骤s710,其中控制器120检查用于来自主机110的写入请求的接收模块132。在接收到写入请求之后,控制器130累积从主机110接收的数据,其可来自含于dram缓冲器140中的raid条带146中的若干单独和不相关写入请求,如步骤s720中所展示。所接收的数据作为raid单元141到144的形式存储于raid条带146中,如图2a中所展示。控制器130接着检查raid条带146是否是完整的,且如果不是,那么回到步骤s710以接收另一写入命令(步骤s730)。可跨若干、可能不相关的写入命令进行raid条带146中的数据的累积。根据步骤s740,当raid条带是完整的时,控制器130将上下文id分配到数据且初始化奇偶校验缓冲器。

奇偶校验缓冲器(例如图2a中的奇偶校验缓冲器236到239)的初始化可涉及将最终旗标设置为‘0’,将页位图设置为‘1111’,以及将偏移位图设置为‘0000’,如先前所描述。

在初始化之后,控制器130读取raid单元141到144中的数据(步骤s750)且在步骤s760中将数据传输到nv装置150、160、170、180。同时,将每一raid单元141到144中的数据传递到异或模块(例如,模块232到235)和上下文id奇偶校验缓冲器(例如,奇偶校验缓冲器236到239),如步骤s770中所展示。更新对所传输的每一数据部分的奇偶校验,如上文关于图2b所解释。举例来说,如果传递到异或模块的数据是传递的第一数据,那么异或函数有效地将数据和逻辑0作为输入,其解析为数据(例如,或利用数据p1另外以等效方式初始化上下文id奇偶校验缓冲器)。然而,当来自raid条带146中的后续raid单元141到144的数据传递到异或模块时,接着将此奇偶校验值存储于上下文id奇偶校验缓冲器中,如步骤s770中所展示。通过对正传递到异或模块的数据和上下文缓冲器136的先前内容执行异或操作来确定此奇偶校验值。在步骤s770中,根据图2b更新最终旗标、页面位图和偏移位图,如先前所描述。在步骤s780中,控制器130确定是否存在更多raid单元将从dram缓冲器140传输。如果存在更多raid单元,那么方法700循环回到步骤s750。如果已传输所有raid单元,那么上下文id缓冲器136的内容作为奇偶校验信息y传输到nv存储器装置190(步骤s790),且方法结束。

现将关于图5b中所展示的流程图详述从nv存储器150读取数据且具有raid保护的方法800。方法800开始于步骤s805,其中控制器120检查用于来自主机110的读取请求的接收模块132。在接收读取请求之后,控制器130查询查找表以确定所请求的数据在nv存储器150、160、170、180中的位置,在此之后,控制器130检索所需数据(步骤s810)。在步骤s815中,控制器130接着确定检索到的数据是否含有错误。如果不含错误,那么将数据复制到raid条带146(步骤820),如图3a中所描绘。在步骤s830中,如果检索到的数据含有错误,那么控制器确定错误是否是可恢复的。如果错误是可恢复的,那么在步骤s835中控制器将纠错码ecc(例如汉明(hamming)或里德-所罗门(reed-solomon)码)应用到检索到的数据以恢复数据。接着将恢复的数据传输到raid条带146(步骤s820)。然而,如果所检索的数据含有不可恢复的错误,那么控制器130继续以读入与检索到的数据相关联的上下文识别符c_id(步骤840)。控制器读取与错误数据单元相同的数据条带中的其余数据。此数据被传输到dram缓冲器140中的raid条带146(从nv存储器读取数据单元并传输到dram可以作为单个dma传输完成),且同时用于初始化上下文id重构缓冲器138。这可以通过将用零对数据单元进行异或操作且将结果存储在上下文id重构缓冲器138中来方便地执行。控制器接着从nv存储器读取raid条带中的下一数据单元(步骤s845)。将数据传输到dram缓冲器140中的raid条带146,且同时用上下文id重构缓冲器138的先前内容对数据异或操作,且将数据存储于上下文id重构缓冲器138中(步骤s850)。其余的数据单元且另外奇偶校验信息(含于nv存储器装置190中)也传输到dram缓冲器140中的raid条带146,且以类似方式执行异或操作。在传输每一数据单元之后,控制器确定nv存储器150中是否存在更多数据单元(步骤s855),且如果存在,那么方法800循环回到步骤s845。在对应于c_id的所有数据单元和奇偶校验单元已经异或操作到上下文识别符重构缓冲器138中后,上下文id重构缓冲器将含有经重构数据(如图4e中所描绘的数据单元d3),其在步骤s820中接着经复制到raid条带以传输到主机110,在此之后,方法结束。

图6描绘根据本公开的实施例的对来自至少一个主机110到113的多个同时读取/写入命令的处理。当读取或写入命令到达控制器130时,它们包含指示数据将在ssd120内的逻辑地址空间内被读取或写入的位置的地址信息。此地址信息连同dram缓冲器165中缓冲的raid条带160到163一起被缓冲。然后,通过将上下文标识符c_id与地址相关联并将这些关联存储在上下文查找表170中以用于来自主机110到113的活动命令,使得对于将从nv存储器180写入或读取的任何数据单元,用于此读取或写入指令的地址可用以定位所讨论的数据单元的适当上下文,以此来支持多个raid条带上下文150到153。这允许从任何特定命令内以及跨并行进行的多个读取或写入命令(即以任何次序)对在运行中的数据单元进行处理。

所属领域的技术人员将清楚本发明的各个方面的其它目标、优势和实施例,且它们在本描述内容和附图的范围内。例如但不限于,结构或功能元件可根据本发明重新布置。类似地,根据本发明的原理可应用到即使本文中没有具体地详细描述但仍在本发明的范围内的其它实例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1