具备独立磁盘冗余阵列的固态驱动器及其处理请求的方法与流程

文档序号:17047979发布日期:2019-03-05 19:45阅读:168来源:国知局
具备独立磁盘冗余阵列的固态驱动器及其处理请求的方法与流程

本申请主张在2017年8月29日提出申请且名称为“在与非闪存固态驱动器中通过进行自适应调度及数据放置来减少读取-写入干扰(reducingread-writeinterferencebyadaptiveschedulinganddataplacementinnandflashssds)”的美国临时申请第62/551,505号的优先权及权利,所述美国临时申请的全部内容并入本文中供参考。

根据本发明的实施例的一个或多个方面涉及与非(nand)闪存固态驱动器(solidstatedrive,ssd),且更具体来说涉及减少与非闪存固态驱动器中的读取-写入干扰。



背景技术:

固态驱动器(ssd)通常采用被群集成若干群组的许多闪存芯片,每一群组经由独立运作的数据总线(被称为通道)连接到固态驱动器控制器。每一闪存芯片含有多个平面,以提供较高水平的平行度(parallelism)。平面包含数百个/数千个块,每一块含有数百个页。页是对固态驱动器进行任何读取/写入操作的最小粒度(granularity)。

对固态驱动器的操作存在三种不同的类型:读取、编程及擦除。为在固态驱动器上存储或写入数据,进行编程操作,而这需要预先进行以块级粒度发生的长等待时间擦除操作。为避免使每一编程操作被擦除操作推迟,固态驱动器利用非就地写入性质(no-write-in-placeproperty),这需要:(i)将逻辑地址及物理地址的映射信息存储在闪存转换层(flashtranslationlayer,ftl)表中,以及(ii)无用信息收集器,其被周期性地调用以腾出空间。无用信息收集(garbagecollection,gc)过程经历两个阶段:(i)从牺牲块(victimblock)(即,被定为无用信息收集的目标的块)中读出有效数据,以及(ii)将所述有效数据回写到另一块。

在开发高水平的固态驱动器内部平行度方面的努力以及读取-写入-擦除差异性在对一些读取请求的服务中引起长的延迟。因此,一些读取请求的等待时间显著增加,进而使得从固态驱动器的读取具有长的读取尾等待时间,这又会违反等待时间服务等级目标(servicelevelobjective,slo)。另一方面,例如等数据库与存储服务提供商需要使固态驱动器满足甚至第99.99百分位的等待时间服务等级目标。大读取尾等待时间的来源为三方面:(i)读取-读取干扰,(ii)读取-写入干扰,以及(iii)读取-擦除干扰。然而,因写入/编程操作与读取操作相比具有相对长的等待时间且写入/编程操作与擦除操作相比具有高的频率,因此(ii)是读取尾等待时间的主要来源。



技术实现要素:

根据本发明的实施例的方面涉及使配备有独立磁盘冗余阵列(redundantarrayofindependentdisk,raid)的固态驱动器(或具备独立磁盘冗余阵列的固态驱动器)中的读取-写入干扰及读取-擦除干扰减少或最小化,以期待缩短读取尾等待时间。为此,本发明的实施例可包括新颖的调度与数据放置机制,通过所述调度与数据放置机制,闪存芯片被群集成若干群组。在每一群组中,写入在任何给定时间被局限于仅一个闪存芯片且以轮流的方式在群组中的其他闪存芯片内循环。将通过每一群组的奇偶校验来重构将忙于编程的闪存芯片定为目标的读取,所述奇偶校验存储在每一群组中保存奇偶校验的闪存芯片中。

为进一步减少由无用信息收集在读取操作与编程/擦除操作之间诱发的干扰,本发明的实施例可将用户写入与无用信息收集写入分解开,以防止有效数据移动与接下来的无用信息收集循环级联,从而使无用信息收集频率及移动成本降低或最小化且缩短由无用信息收集写入及擦除操作诱发的长读取尾等待时间。

根据本发明的实施例,提供一种具备独立磁盘冗余阵列的固态驱动器(ssd),包括:控制器,连接到多个通道;多个闪存芯片群组,所述多个闪存芯片群组各自包括耦合到所述多个通道的多个闪存芯片,所述多个闪存芯片包括:多个非奇偶校验闪存芯片;以及i个奇偶校验闪存芯片,其中所述控制器被配置成向所述多个闪存芯片群组写入数据,使得在所述多个闪存芯片群组中的每一者内,仅容许所述多个闪存芯片中的i个或更少闪存芯片同时被写入,其中i是等于1或更大的整数。

所述控制器可进一步被配置成使得当针对所述非奇偶校验闪存芯片中当前正被写入的一者接收到读取请求时,从同一闪存芯片群组内的其他非奇偶校验闪存芯片及所述奇偶校验闪存芯片中所存储的数据来重构所读取数据。所述控制器可进一步被配置成使得对所述多个闪存芯片群组中的同一闪存芯片群组内的所述多个闪存芯片的写入是连续发生且所述奇偶校验闪存芯片是最后一个被写入。

所述控制器可进一步被配置成使得无用信息收集写入点与用户写入点分开。所述控制器可进一步被配置成使得当在无用信息收集循环期间移动数据时,所述数据是基于所述无用信息收集写入点而被放置,且所述无用信息收集写入点被递增。所述控制器可进一步被配置成使得当因用户写入而存储数据时,所述数据是基于所述用户写入点而被放置,且所述用户写入点被递增。

一个闪存芯片群组的所述多个闪存芯片中的每一闪存芯片可耦合到所述通道中的不同者。一个闪存芯片群组的所述多个闪存芯片中的每一闪存芯片可耦合到所述通道中的同一者。

所述i个奇偶校验闪存芯片可包括仅一个奇偶校验闪存芯片。不同闪存芯片群组中耦合到同一通道的闪存芯片可同时被写入。不同闪存芯片群组中耦合到不同通道的闪存芯片可同时被写入。

根据本发明的实施例,提供一种具备独立磁盘冗余阵列的固态驱动器(ssd),包括:控制器,连接到多个通道;多个闪存芯片群组,所述多个闪存芯片群组各自包括耦合到所述多个通道的多个闪存芯片,所述多个闪存芯片包括:多个非奇偶校验闪存芯片;以及i个奇偶校验闪存芯片,其中i是等于1或更大的整数,其中所述控制器被配置成向所述多个闪存芯片群组写入数据,使得无用信息收集写入点与用户写入点分开。

当在无用信息收集循环期间移动数据时,所述数据可基于所述无用信息收集写入点而被放置,且所述无用信息收集写入点被递增。当因用户写入而存储数据时,所述数据可基于所述用户写入点而被放置,且所述用户写入点被递增。

所述控制器可进一步被配置成向所述多个闪存芯片群组写入数据,使得在所述多个闪存芯片群组中的每一者内,仅容许所述多个闪存芯片中的一者同时被写入。所述控制器可进一步被配置成使得当针对所述非奇偶校验闪存芯片中当前正被写入的一者接收到读取请求时,从同一闪存芯片群组内的其他非奇偶校验闪存芯片及所述奇偶校验闪存芯片中所存储的数据重构所读取数据。

根据本发明的实施例,提供一种通过具备独立磁盘冗余阵列的固态驱动器(ssd)的控制器来处理请求的方法,所述方法包括:从请求队列选择所述请求,所述请求被引向请求闪存芯片(requestflashchip);判断所述请求是否为读取请求;以及当所述请求为读取请求时:重置α;判断方程式(1)是否成立:

(1)tremainingwrite>α(tread+tchannelxfer);以及

当所述方程式(1)不成立时,向保存数据的芯片发布所述请求,其中α(其为决策制定因子)是迭代参数,tremainingwrite是在当前写入完成之前剩余的时间量,tread是从芯片执行读取所需的时间量,且tchannelxfer是在通道上将数据从芯片传输到存储器所需的时间量。

当所述请求为读取请求且所述方程式(1)确实成立时,所述方法可进一步包括通过从与所述请求闪存芯片位于同一闪存芯片群组内的其他闪存芯片进行读取来重构所述请求。当所述请求为写入请求时,所述方法可进一步包括:使用以下方程式(2)来使α递增:

α=α*β,

其中β是递增参数;判断方程式(1)是否成立;以及当所述方程式不成立(这意味着当前写入操作将即刻完成)时,对所述同一闪存芯片群组中的下一闪存芯片发布写入。

当所述请求为写入请求且方程式(1)成立时,可不对所述请求进行调度,这意味着所述请求应等到当前写入完成时,以避免出现同时不发生写入操作的情形。

附图说明

参照说明书、权利要求书及附图,将会了解及理解本发明的这些以及其他特征及方面,附图中:

图1示出根据本发明实施例的固态驱动器通道及闪存芯片的代表性组织。

图2示出根据图1中所给出的实例在固态驱动器中发生的写入操作的时间线。

图3示出根据本发明另一实施例的固态驱动器通道及闪存芯片的代表性组织。

图4示出根据图3中所给出的实例在固态驱动器中发生的写入操作的时间线。

图5示出根据本发明实施例的调度过程。

图6a示出根据本发明实施例决定读取与写入调度的方法。

图6b示出根据本发明实施例在决定读取与写入调度时所使用的方程式。

图7示出无用信息收集循环的实例。

图8示出在平面中扩展写入点。

图9示出根据本发明实施例的调度过程。

具体实施方式

以下结合附图所述的详细说明旨在作为对根据本发明所提供的示例性实施例的说明,而并非旨在表示其中可建构或利用本发明的仅有形式。本说明结合所示实施例来陈述本发明的特征。然而,应理解,可通过不同的实施例来实现相同或等效的功能及结构,所述不同的实施例也旨在涵盖在本发明的精神及范围内。此外,所属领域中的普通技术人员应了解,根据本发明的一个或多个实施例的特征可以适合的方式加以组合,以实践本发明的其他实施例。如本文中别处所示,相同的元件编号旨在指示相同的元件或特征。

在包括若干闪存芯片的与非闪存固态驱动器(ssd)中,针对特定闪存芯片的读取请求可在对其的服务中经历大的延迟,这归因于目标闪存芯片中正在进行长等待时间编程/擦除操作。编程操作通常花费比读取等待时间长得多的时间(10x至20x)才能完成。尽管作出使读取优先于写入的努力,然而当读取请求被引向正忙于编程操作的闪存芯片时,该读取本身及随后对同一闪存芯片的读取将被延迟,从而因读取、编程及擦除操作的等待时间差异性而引起相当多的读取尾等待时间。

为实现对由正在进行的编程/擦除操作诱发的大读取尾等待时间的缩短或最小化,本发明的实施例可包括一种新颖的针对固态驱动器读取请求及写入请求的调度机制,通过所述调度机制,针对繁忙闪存芯片的读取请求可被重构且快速地得到服务而非等待编程/擦除操作完成。

根据本发明的实施例的方面涉及使配备有独立磁盘冗余阵列的固态驱动器中的读取-写入干扰减少或最小化,以期待缩短读取尾等待时间。为此,本发明的实施例可包括新颖的调度与数据放置机制,通过所述调度与数据放置机制,闪存芯片被群集成若干群组。在每一群组中,写入在任何给定时间被局限于仅一个闪存芯片且以轮流的方式在群组中的其他闪存芯片内循环。将通过每一群组的奇偶校验来重构将忙于编程的闪存芯片定为目标的读取,所述奇偶校验存储在每一群组中保存奇偶校验的闪存芯片中。

为进一步减少由无用信息收集在读取操作与编程/擦除操作之间诱发的干扰,本发明的实施例可将用户写入与无用信息收集写入分解开,以防止有效数据移动与接下来的无用信息收集(gc)循环级联,从而使无用信息收集频率及移动成本降低或最小化且缩短由无用信息收集写入及擦除操作诱发的长读取尾等待时间。

图1示出根据本发明实施例的固态驱动器通道及闪存芯片的代表性组织。

在该实例中,固态驱动器100具有四个通道140,所述四个通道140各自含有四个闪存芯片120。通道140中的每一者连接或耦合到控制器110。此外,在该实例中,配备有独立磁盘冗余阵列的固态驱动器100采用3+1奇偶校验(或6+2奇偶校验),即,对于每一奇偶校验闪存芯片120p,存在三个非奇偶校验闪存芯片。若干闪存芯片120被一起分组成闪存芯片群组160(例如,闪存群组160-1及160-2)。

如图1中所示,存在两个群组160,所述两个群组160各自独立运行。在每一群组160中,涉及若干闪存芯片120;然而,在每一群组160中存在至多一个现用写入闪存芯片120a,即,在任何时间在每一群组160中只发生一个写入/编程操作。一旦写入完成,便发生被引向同一群组中下一闪存芯片120的下一写入。应注意,尽管在闪存芯片群组中存在仅一个写入点,然而其他群组可服务于被引向与那些群组相关联的闪存芯片的写入请求。因此,根据本发明实施例的控制器110可通过针对每一群组而引导等待的写入来强制实施每群组一个写入点规则(onewritepointpergrouprule)以使其逐个地得到服务,且在任何时间都不容许每一群组中具有多于一个写入点。

如果读取将群组中除现用写入闪存芯片120a之外的任何闪存芯片120定为目标,则可通过正规程序来服务于所述读取。然而,如果读取将正忙于服务于写入请求的现用写入闪存芯片120a定为目标,则可通过从同一群组160中的其他闪存芯片120读取对应的页并对所读取的数据进行异或运算(xoring)(或重构)来重构所述读取。作为另一实例,在某一编码方案实例中,如果读取请求将闪存芯片2(其为当前的现用写入闪存芯片120a)定为目标,则可通过以下来建构向闪存芯片2请求的数据:(i)从闪存芯片1、闪存芯片3及闪存芯片4(奇偶校验闪存芯片120p)读取相应的页,以及(ii)对从前述闪存芯片120读取的数据进行异或运算。

图2示出根据图1中所给出的实例在固态驱动器100中发生的写入操作的时间线。

从时间t0到t1,可服务于两个页写入,所述两个页写入分别被引向群组160-1中的闪存芯片1及群组160-2中的闪存芯片9。在该时间间隔中,如果对忙于写入的闪存芯片发生任何读取,则可如上所阐释来重构所请求的数据。一旦在群组的闪存芯片上完成写入,如果需要,则更新奇偶校验芯片,且接着,所述群组再次开始服务于将其定为目标的写入,调度表重复。因此,在时间t4,奇偶校验闪存芯片4及12可被更新,且任何所需的编程操作均可在该时间发生。

尽管在每一群组中闪存芯片写入与奇偶校验更新是分离的且奇偶校验更新被延迟,然而这种约束条件无需关于所有群组中的所有闪存芯片而全局地成立。而是,这种约束条件是关于形成群组的闪存芯片而局部地成立。在所示实例中,所有群组的奇偶校验更新是当在闪存芯片中的任一者中均未发生写入时并行发生;然而,在群组中的奇偶校验闪存芯片正忙于更新所需的奇偶校验页时,可服务于对任何其他群组的写入。

写入点在每一群组中循环,且一旦写入完成,奇偶校验便被更新。一旦闪存芯片4忙于更新所需的奇偶校验块,便可服务于对闪存芯片1至3的任何读取,而在这些闪存芯片中不会遇到任何正在进行的编程操作。另外,对闪存芯片5至7的读取经历相同的过程,从而不会使读取因正在进行的编程操作而受到阻止。

图3示出根据本发明另一实施例的固态驱动器通道及闪存芯片的代表性组织。

在该实例中,固态驱动器200具有四个通道240,所述四个通道240各自含有四个闪存芯片220。通道240中的每一者连接或耦合到控制器210。此外,在该实例中,配备有独立磁盘冗余阵列的固态驱动器200采用3+1奇偶校验,即,对于每一奇偶校验闪存芯片220p,存在三个非奇偶校验闪存芯片。若干闪存芯片220被一起分组成闪存芯片群组260(例如,闪存群组260-1、闪存群组260-2、闪存群组260-3、及闪存群组260-4)。

如图3中所示,存在四个群组260,所述四个群组260各自独立运行。在每一群组260中,涉及若干闪存芯片220;然而,在每一群组260中存在至多一个现用写入闪存芯片220a,即,在任何时间在每一群组260中只发生一个写入/编程操作。一旦写入完成,便发生被引向同一群组中下一闪存芯片220的下一写入。应注意,尽管在闪存芯片群组中存在仅一个写入点,然而其他群组可服务于被引向与那些群组相关联的闪存芯片的写入请求。因此,根据本发明实施例的控制器210可通过针对每一群组而引导等待的写入来强制实施每群组一个写入点规则以使其逐个地得到服务,且在任何时间都不容许每一群组中具有多于一个写入点。

如果读取将群组中除现用写入闪存芯片220a之外的任何闪存芯片220定为目标,则可通过正规程序来服务于所述读取。然而,如果读取将正忙于服务于写入请求的现用写入闪存芯片220a定为目标,则可通过从同一群组260中的其他闪存芯片220读取对应的页并对所读取的数据进行重构来重构所述读取。作为实例,在一些形式的编码中,如果读取请求将闪存芯片2(其为当前的现用写入闪存芯片220a)定为目标,则可通过以下来建构向闪存芯片2请求的数据:(i)从闪存芯片1、闪存芯片3及闪存芯片4(奇偶校验闪存芯片220p)读取相应的页,以及(ii)对从前述闪存芯片220读取的数据进行异或运算。

图4示出根据图3中所给出的实例在固态驱动器200中发生的写入操作的时间线。

从时间t0到t1,四个页写入被引向各自位于相应的闪存群组260中的闪存芯片1、5、9及13。在该时间间隔中,如果对忙于写入的闪存芯片发生任何读取,则可如上所阐释来重构所请求的数据。一旦在群组的闪存芯片上完成写入,如果需要,则更新奇偶校验芯片,且接着,调度表重复。因此,从时间t3到时间t4,奇偶校验闪存芯片4、8、12及16可被更新,且任何所需的编程操作均可在该时间发生。

尽管在每一群组中闪存芯片写入与奇偶校验更新是分离的且奇偶校验更新被延迟,然而这种约束条件无需关于所有群组中的所有闪存芯片而全局地成立。而是,这种约束条件是关于形成群组的闪存芯片而局部地成立。在所示实例中,所有群组的奇偶校验更新是当在正常闪存芯片中的任一者中均未发生写入时并行发生;然而,在群组中的奇偶校验闪存芯片正忙于更新所需的奇偶校验页时,可服务于对任何其他群组的写入。

写入点在每一群组中循环,且一旦写入完成,奇偶校验便被更新。一旦闪存芯片4忙于更新所需的奇偶校验块,便可服务于对闪存芯片1至3的任何读取,而在这些闪存芯片中不会遇到任何正在进行的编程操作。另外,对其他闪存芯片的读取经历相同的过程,从而不会使读取因正在进行的编程操作而受到阻止。

参照图1至图4,尽管图1至图4所示实施例示出所有写入(每群组一个)是在同时在相同通道上发生,然而本发明并非仅限于此。另外,在每一群组中发生的写入可与任何其他群组中的写入何时发生无关。举例来说,写入可在闪存芯片1及14中交叠,或写入可在闪存芯片1及16中交叠、或在任何其他适合的组合中交叠,其中每群组发生仅一个写入。

此外,参照图1至图4,尽管图1至图4所示实施例示出每群组仅一个写入,然而本发明并非仅限于此。举例来说,在其中每一闪存芯片群组包括两个奇偶校验芯片的情况中,在同一群组内可同时发生两个写入。一般来说,当每一闪存芯片群组包括i个奇偶校验闪存芯片时,在每一闪存芯片群组内可同时发生i个写入,其中i是等于1或更大的整数。当对闪存芯片群组的写入的数目等于或小于闪存芯片群组内的奇偶校验闪存芯片的数目时,可在读取被引向闪存芯片中正被写入的一者时重构读取请求。

此外,早于在每一非奇偶校验闪存芯片中处理每一写入或与此同时,非奇偶校验闪存芯片中的数据可被存储在临时存储器(例如,高速缓冲存储器)中,以在作出读取请求时使正确的数据可用于异或运算。这可能在每次发生写入时发生,或者这可能仅在写入从芯片改变或删除数据时发生。此外,这在非奇偶校验芯片中的最后一者正被写入时及/或在奇偶校验芯片正被写入时可不发生。

举例来说,当闪存芯片1将要被写入且数据将要改变时,早于在闪存芯片1处发生写入或与此同时,闪存芯片1中所存储的数据被保存在临时存储器中。如果在闪存芯片2正被写入时接着接收到对闪存芯片2的读取,则使用以上参照图1至图4所述的实施例可能会不正确地读取数据。举例来说,如果闪存芯片1中的数据已被改变且奇偶校验芯片尚未被更新(如果闪存芯片2仍正被写入,则可为这种情况),则通过对闪存芯片1、3及4中的数据进行异或运算可能不会接收到正确的数据。

在这种情况中,可通过对闪存芯片1所存储的旧数据以及闪存芯片3及4中的当前数据进行异或运算来正确地读取数据。当闪存芯片3正被写入时,对于在对闪存芯片1及2的先前写入中改变的数据,将同样如此。

尽管参照图1至图4所述的实施例具有3+1p结构,然而本发明并非仅限于此,且可使用其他奇偶校验结构。举例来说,作为对以上所述的3+1p的替代或补充,可使用2+1p、4+1p、3+2p、4+2p等。同样地,4×4芯片集合仅为实例,且芯片可具有任何适合数目的通道或每通道任何适合数目的芯片。

此外,参照图2及图4,虽然示出不同闪存芯片群组中耦合到同一通道的闪存芯片是同时被写入,然而本发明并非仅限于此,且不同闪存芯片群组中耦合到同一通道的闪存芯片可在不同时间被写入,及/或不同闪存芯片群组中耦合到不同通道的闪存芯片可同时被写入。

图5示出根据本发明实施例的调度过程。根据本发明的实施例,图5中示出在每一闪存群组中发生的事件序列。

如图5中所示,对于闪存群组x(在该实例中),在群组x的闪存芯片中(例如,在群组x的非奇偶校验闪存芯片中)发生写入。一旦完成以连续方式向群组x中的闪存芯片发布的写入,视独立磁盘冗余阵列实施方案而定,群组x中的奇偶校验闪存芯片便更新所需的奇偶校验页。在完成更新群组x中的奇偶校验闪存芯片后,过程可重复。

图6a示出根据本发明实施例决定读取与写入调度的方法,且图6b示出根据本发明实施例在决定读取与写入调度时所使用的方程式。此外,图6a及图6b示出通过具备独立磁盘冗余阵列的固态驱动器(ssd)的控制器来处理要从闪存芯片(例如,请求闪存芯片)读取数据或要向闪存芯片(例如,请求闪存芯片)写入数据的请求的方法。

在执行互补调度、使奇偶校验更新延迟及执行读取重构机制(这些操作可减少闪存芯片上的读取-写入干扰且又显著缩短读取尾等待时间)时,以上所述的实施例具有至少三个额外结果:(i)将写入仅局限于闪存芯片的子集会妨碍对在固态驱动器中所提供的高水平的平行度的利用,从而使写入性能劣化;(ii)机制是静态地运作且不能够俘获工作负载动态性;以及(iii)对每一读取的重构需要额外读取操作。我们通过提出一种可大幅减轻这些缺点的自适应决策制定过程来解决这些问题。

如上所述,在整个执行过程中存在两个主要决策:(i)写入调度决策,以及(ii)读取重构决策。如果决策是在未将任何输入/输出(i/o)工作负载及装置行为考虑在内的情况下静态地制定,则对固态驱动器的写入将经历非常大的等待时间。

参照图6a及图6b,决策制定过程可基于图6b中所示的方程式(1)来适应于固态驱动器的工作负载动态性及装置固有特性。例如,如果工作负载在长时间间隔内仅产生写入请求,则方程式适应于使较多的闪存芯片可用于传入的写入请求。另一方面,在读取到达后,方程式(1)将写入局限于较少的闪存芯片,以减少读取-写入干扰。

图6a中示出与决策制定过程及更新所需参数相关联的程序。如图6a中所示,调度器(例如,控制器)随时选取请求,基于请求的类型及群组中闪存芯片的状态,调度器决定是否服务于所述请求(对于写入)及是否重构数据(对于读取)。更确切地说,如果请求是写入,则控制器检查是否存在任何未正在进行编程操作或编程操作接近结束的群组。

可通过检查方程式(1)来确定所述接近结束,方程式(1)采用在每次迭代中通过被与常数参数(β)相乘而更新的参数α。如果tremainingwrite≤α(tread+tchannelxfer),这意味着当前正在进行的写入操作将即刻完成,则如图6a中所示将在群组中的下一芯片中起始写入操作。tremainingwrite是在当前写入完成之前剩余的时间量,tread是执行读取所需的时间量,且tchannelxfer是在通道上将数据从芯片传输到存储器所需的时间量。所需参数可轻易存储在装置控制器中的几个寄存器中。另一方面,对于读取请求,在迭代参数α被重置之后,如果方程式(1)不成立,则读取被调度到目标闪存芯片,否则将通过以上所阐释的过程来重构所述读取。

更详细来说,调度器在300处从请求队列选择请求。举例来说,可维持一个读取请求队列及一个写入请求队列。当读取请求队列为空或写入请求队列为大于x%(例如,80%)满时,调度器接着处理写入请求队列中的一个写入请求。否则,调度器处理读取请求。

调度器在310处判断请求是否为读取请求。

如果请求为读取请求,则调度器在320处重置α(例如,α可被重置为2)。接着,调度器在330处判断方程式(1)是否成立。如果方程式(1)不成立,则在340处发布读取请求。如果方程式(1)成立,则在350处通过从群组中的其他闪存芯片进行读取并进行异或运算来重构读取请求。

如果请求并非是读取请求,则调度器在360处将α设定成等于α乘以β,其中β是递增参数(例如,β可等于1.001)。接着,调度器在370处判断方程式(1)是否成立。如果方程式(1)成立,则在380处不对请求进行调度。如果方程式(1)不成立,则在390处对群组中的下一闪存芯片发布写入。

当在380处不对请求进行调度时,接着在385处从读取请求队列得到一个请求,且方法可通过在310处起始而再次开始。

图7示出无用信息收集循环的实例。

为进一步减少由无用信息收集在读取操作与编程/擦除操作之间诱发的干扰,可将用户写入与无用信息收集写入分解开,以防止有效数据移动与接下来的无用信息收集循环级联,从而使无用信息收集频率及移动成本降低或最小化且缩短由无用信息收集写入及擦除操作诱发的长读取尾等待时间。

图7示出无用信息收集循环的实例。在整个该过程中,选择一块(在该实例中为块i)作为牺牲块。在将有效页移动到另一块之后,该块被擦除。一旦有效数据被移动到新块,便将以新的写入来填充该块的其余部分。将新的写入与旧的有效数据(其往往在长时间内保持有效)共置可在下一无用信息收集循环中的页移动中引起级联效应(cascadingeffect)。换句话说,在过去的无用信息收集循环中移动的有效数据也将非常有可能在接下来的(或后续的)无用信息收集循环中被移动。因此,本发明的实施例可将无用信息收集写入与用户(新的)写入分解开,以减弱或消除这种效应,由此减少每一无用信息收集循环中由无用信息收集诱发的写入并且降低无用信息收集的频率。

图8示出在平面中扩展写入点。

为处理无用信息收集操作,本发明的实施例执行闪存芯片内无用信息收集(intra-flashchipgc)。闪存芯片内无用信息收集是进行无用信息收集的性能高效型方式,因为其既不需要在通道上进行任何数据传输也不需要因有效页移动而进行任何奇偶校验更新。

为整合闪存芯片内无用信息收集,将方程式(1)更新成tremainingwriteorerease>α(tread+tchannelxfer)。另外,将每一平面中写入点的数目扩展成一个正常写入点(或用户写入点)及一个无用信息收集写入点(或gc收集写入点)。前者用于用户(新的)写入,且后者用于服务于由无用信息收集诱发的写入。相关技术固态驱动器在每一平面中采用仅一个写入点。该写入点在页写入后被递增,且指向平面中的下一可用页以服务于被引向该平面的下一写入。然而,为将无用信息收集写入与用户(新的)写入隔离,如图7中所示,本发明的实施例可添加另一写入点,其被称为无用信息收集写入点。使用无用信息收集写入点,在无用信息收集循环期间为数据移动所调用的任何写入将基于无用信息收集写入点而被引导及放置。这两个写入点独立工作且不会在块上发生冲突(即,两个写入点无法同时指向同一块)。无用信息收集写入被引向与无用信息收集写入点相关联的块,且用户(新的)写入被引向正常写入点所指向的块。因此,用户(新的)写入在平面的一些块中积累,且无用信息收集写入被写入到同一平面中的一些其他块。

图9示出根据本发明实施例的调度过程。

当添加无用信息收集功能时,图5如图9所示被更新。如图9中所示,每次,在每一群组中进行写入、后台操作或奇偶校验更新。此外,一旦群组进行任何后台操作(例如无用信息收集),便不对所述群组上的任何闪存芯片发布写入。

然而,类似于以上所述的实施例,尽管群组忙于写入或后台操作,然而其他群组中的其他闪存芯片可服务于等待在与那些群组相关联的闪存芯片上得到服务的写入或后台操作。在图3所示实例下,如果群组1处于后台操作模式,则群组2至4中的闪存芯片可在以任何时间约束条件/规则遵循每一群组中一个写入或后台操作的同时服务于等待群组2至4以得到服务的任何写入或后台操作。

根据本发明的实施例的方面涉及使配备有独立磁盘冗余阵列的固态驱动器中的读取-写入干扰减少或最小化,以期待缩短读取尾等待时间。为此,本发明的实施例可包括新颖的调度与数据放置机制,通过所述调度与数据放置机制,闪存芯片被群集成若干群组。在每一群组中,写入在任何给定时间被局限于仅一个闪存芯片且以轮流的方式在群组中的其他闪存芯片内循环。将通过每一群组的奇偶校验来重构将忙于编程的闪存芯片定为目标的读取,所述奇偶校验存储在每一群组中保存奇偶校验的闪存芯片中。

为进一步减少由无用信息收集在读取操作与编程/擦除操作之间诱发的干扰,本发明的实施例可将用户写入与无用信息收集写入分解开,以防止有效数据移动与接下来的无用信息收集循环级联,从而使无用信息收集频率及移动成本降低或最小化且缩短由无用信息收集写入及擦除操作诱发的长读取尾等待时间。

根据本文所述的本发明实施例的相关装置或组件(或者多个相关装置或组件)可利用任何适合的硬件(例如,专用集成电路)、固件(例如,数字信号处理器(digitalsignalprocessor,dsp)或现场可编程门阵列(fieldprogrammablegatearray,fpga))、软件、或者软件、固件及硬件的适合组合来实现。举例来说,相关装置的各种组件可形成在一个集成电路(integratedcircuit,ic)芯片上或单独的集成电路芯片上。此外,相关装置的各种组件可在柔性印刷电路膜、胶带载体封装(tapecarrierpackage,tcp)、印刷电路板(printedcircuitboard,pcb)上实现,或者在与一个或多个电路及/或其他装置相同的衬底上形成。此外,相关装置的各种组件可为一种过程或线程,所述过程或线程在一个或多个计算装置中的一个或多个处理器上运行、执行计算机程序指令并与其他系统组件交互作用以执行本文所述的各种功能。计算机程序指令存储在可使用标准存储器装置(例如,随机存取存储器(randomaccessmemory,ram))而在计算装置中实现的存储器中。所述计算机程序指令还可存储在其他非暂时性计算机可读媒体(例如,压缩盘-只读存储器(compactdisc-readonlymemory,cd-rom)、闪存驱动器等)中。此外,所属领域中的技术人员应认识到,在不背离本发明示例性实施例的精神及范围的条件下,各种计算装置的功能可被组合或集成到单个计算装置中,或者特定计算装置的功能可跨一个或多个其他计算装置分布。

本文所使用的术语仅用于阐述特定实施例而并非旨在限制本发明。除非上下文另有清晰指示,否则本文所使用的单数形式“一(a及an)”旨在也包括复数形式。应进一步理解,当在本说明书中使用用语“包括(comprise、comprises、comprising、includes、including、及include)”时,是指明所陈述特征、整数、步骤、操作、元件、及/或组件的存在,但并不排除一个或多个其他特征、整数、步骤、操作、元件、组件、及/或其群组的存在或添加。

本文所使用的用语“及/或(and/or)”包括相关联所列各项中的一者或多者的任意及所有组合。例如“中的至少一者(atleastoneof)”、“中的一者(oneof)”及“选自(selectedfrom)”等表达语在位于一系列元件之前时是修饰整个系列的元件而非修饰所述系列中的个别元件。此外,在阐述本发明的实施例时所使用的“可(may)”指代“本发明的一个或多个实施例”。此外,用语“示例性”旨在指代实例或例证。

应理解,当将元件或层称为“位于”另一元件或层“上”、“连接到”另一元件或层、“耦合到”另一元件或层、“与”另一元件或层“连接”、“与”另一元件或层“耦合”、或者“相邻于”另一元件或层时,所述元件或层可“直接位于”另一元件或层“上”、“直接连接到”另一元件或层、“直接耦合到”另一元件或层、“与”另一元件或层“直接连接”、“与”另一元件或层“直接耦合”、或者“直接相邻于”另一元件或层,或者可存在一个或多个中间元件或层。此外,如所属领域中的技术人员应理解,“连接(connection、connected)”等也可指代“电连接(electricalconnection、electricallyconnected)”等,这视其中使用此类用语的上下文而定。当将元件或层称为“直接位于”另一元件或层“上”、“直接连接到”另一元件或层、“直接耦合到”另一元件或层、“与”另一元件或层“直接连接”、“与”另一元件或层“直接耦合”、或者“紧邻于”另一元件或层时,不存在中间元件或层。

本文所使用的用语“实质上(substantially)”、“约(about)”及类似用语用作近似用语而非用作程度用语,且旨在考虑到所属领域中的普通技术人员将认识到的所测量值或所计算值的固有偏差。

本文所使用的用语“使用(use、using及used)”可被视为分别与用语“利用(utilize、utilizing及utilized)”同义。

关于本发明的一个或多个实施例所述的特征可供与本发明的其他实施例的特征一起使用。举例来说,在第一实施例中所述的特征可与在第二实施例中所述的特征组合,以形成第三实施例,即使第三实施例可能未在本文中具体阐述。

虽然已关于某些具体实施例阐述了本发明,然而所属领域中的技术人员将不难设想出所述实施例的变化形式,这些变化形式绝不会背离本发明的范围及精神。此外,本文所述的本发明本身将使各种领域中的技术人员联想到其他任务的解决方案及针对其他应用所作的调适。申请人的意图是,使权利要求书涵盖本发明的所有此类用途以及在不背离本发明的精神及范围的条件下可对本文中为便于说明本发明而选择的本发明实施例作出的那些改变及修改。因此,本发明的实施例在所有方面均应被视为说明性而非限制性,本发明的范围将由所附权利要求书及其等效内容指示。

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