使用闪存的存储系统及其平均读写方法和平均读写程序的制作方法

文档序号:6564449阅读:178来源:国知局
专利名称:使用闪存的存储系统及其平均读写方法和平均读写程序的制作方法
技术领域
本发明涉及一种能够在多个闪存存储器模块之间进行平均读写的使用闪存存储器的存储系统,用于该存储系统的平均读写方法,以及用于该存储系统的平均读写程序。
背景技术
本申请请求2006年3月29日提交的、申请号为2006-092217的日本专利申请的利益,在此处通过参考而引入其公开。
用于存储数据的系统(以下简称“存储系统”)通常包括随机存取非易失性存储介质。随机存取非易失性存储介质包括,例如磁盘或光盘。近来,常见的存储系统具有许多光盘驱动器。
当各种半导体技术进一步提高时,开发了诸如闪存存储器之类的非易失性半导体存储器,在这种非易失性半导体存储器上能够对数据进行擦除。闪存存储器是一种半导体存储器,其是用作只读存储器(ROM)以及既可读又可写的随机存取存储器(RAM)的非易失性存储器。与具有许多小光盘驱动器的存储系统相比,把闪存存储器作为存储介质的存储系统在使用寿命、功耗节约以及存取时间上比较出色。
此处将给出对闪存存储器的说明。
通常,由于其属性的原因,不能把数据直接重写到闪存存储器上。也就是说,为了把数据重写到闪存存储器上,不得不把存储在闪存存储器上的有效数据转移到其他位置。因此,在逐个存储块的基础上(on block by blockbasis)对存储数据进行擦除。此后,把其他数据写入到已经擦除了数据的每个存储块中。存储块表示每次擦除数据的的单位存储区域。
在闪存存储器中,例如,其中擦除了数据的存储区域总是设置为“1”。因此,当重写数据时有可能通过二进制比特转换把“1”重写为“0”。然而,除非擦除了存储数据,否则不可能直接把“0”重写为“1”。为了把数据重写到闪存存储器上,擦除了闪存存储器的整个存储块。因此,当把数据重写到闪存存储器上时,闪存存储器总是需要进行存储块擦除。
闪存存储器有存储块擦除次数的限制。例如,保证了存储块擦除次数高达每个存储块100,000次。如果特定存储块由于密集地进行数据重写的原因而经历了过多的擦除次数,那么就会变得再也不可能对该存储块中的数据进行擦除,这会引起问题。因此,在使用闪存存储器作为存储介质的存储系统中,必须准备平均读写处理以防止在特定存储块上出现密集的擦除次数。
JP-A-8-16482中公开了一种平均读写方法,其中存储系统采用映射管理方法以便提供主机与闪存存储器之间的存储块联系关系(block associationrelationship)的灵活性,以解决当计算机访问逻辑存储块时由逻辑存储块单方面地(one-sidedly)选择闪存存储器的物理存储块的问题。在这个方案中,这种常规存储系统对主机访问的每个逻辑存储块的写入次数,以及由存储系统擦除的每个物理存储块的擦除次数进行管理。如果存在写入次数过大的逻辑存储块和擦除次数过大的物理存储块;以及写入次数较小的逻辑存储块和擦除次数较小的物理存储块,则以下述方式来提供映射,即,允许写入次数过大的逻辑存储块对应于擦除次数较小的物理存储块,并且允许写入次数较小的逻辑存储块对应于擦除次数过大的物理存储块。
通常,闪存存储器模块(以下简称“PDEV”)是由存储器控制器和多个闪存存储器芯片构成的,并且该存储器控制器提供与上述常规方案相同的平均读写处理。在大规模存储系统中,可以想到作为存储介质的许多闪存存储器彼此相连接以建立大容量存储器。在这种情况下,通过利用控制器来为每个闪存存储器提供平均读写。然而,在其中特定闪存存储器模块经历了密集的重写次数的情况中,当闪存存储器模块的擦除次数愈加增大时,模块损耗越快。为了防止特定模块上的擦除次数增大,需要在多个闪存存储器模块之间提供平均读写。
如果把上述平均读写方案施加于具有与之相连接的许多闪存存储器的存储系统,则会存在闪存存储器模块中的存储器控制器会遮蔽闪存存储器芯片中的物理存储块的问题,这将防碍存储系统中的存储控制器管理每个物理存储块的擦除次数。
此外,如果把常规平均读写方案应用于在闪存存储器模块中不使用存储器控制器(那就是说,不为每个闪存存储器模块提供平均读写)的整个存储系统上,则存储系统必须整体地管理非常多的物理存储块的擦除次数,导致管理负担的增加和存储系统性能的恶化。
鉴于上述问题,需要提供一种使用闪存存储器的存储系统,其能够在多个闪存存储器模块之间进行平均读写而不必使用闪存存储器物理存储块上的映射信息,以及需要提供一种用于该存储系统的平均读写方法和用于该存储系统的平均读写程序。

发明内容
在本发明的一个方面,提供了一种使用闪存存储器的存储系统,包括存储控制器和作为存储介质的多个闪存存储器模块。每个闪存存储器模块包括至少一个闪存存储器芯片,以及用于对属于该闪存存储器芯片的存储块的擦除次数进行平均的存储器控制器。存储控制器把多个闪存存储器模块组合成第一逻辑组,把用于访问属于第一逻辑组的闪存存储器模块的第一地址转变成用于在存储控制器中指示第一地址的第二地址,并且把多个第一逻辑组组合成第二逻辑组。
在本发明的另一个方面,提供了一种用于使用闪存存储器的存储系统的平均读写方法,该存储系统包括闪存存储器模块,包括至少一个闪存存储器芯片和用于对属于该闪存存储器芯片的存储块的擦除次数进行平均的存储器控制器;以及存储控制器,用于把闪存存储器模块组合成第一逻辑组,把用于访问属于第一逻辑组的闪存存储器模块的第一地址转变成用于在存储控制器中指示第一地址的第二地址,以及把多个第一逻辑组组合成第二逻辑组。
该方法包括允许存储控制器对于闪存存储器模块中的每个预定存储区域的写入量提供次数管理的步骤;允许存储控制器计算平均擦除次数的步骤,该平均擦除次数是通过把经过预定时段每个闪存存储器模块的总写入量除以闪存存储器模块的容量而得到的;以及允许存储控制器判断平均擦除次数的最大值和最小值之间的差是否不小于预定值的第一判断步骤。在第一判断步骤,如果平均擦除次数的差不小于预定值,则该方法进一步包括允许存储控制器在具有平均擦除次数的最大差值的闪存存储器模块之中,在具有最大写入量的存储区域和具有最小写入量的存储区域之间交换数据,并且改变第一地址与第二地址之间的映射信息的步骤。
在本发明的又一个方面中,提供了一种用于使用闪存存储器的存储系统的平均读写程序,该存储系统包括闪存存储器模块,包括至少一个闪存存储器芯片和用于对属于该闪存存储器芯片的存储块的擦除次数进行平均的存储器控制器;以及存储控制器,用于把多个闪存存储器模块组合成第一逻辑组,把用于访问属于第一逻辑组的闪存存储器模块的第一地址转变成用于在存储控制器中指示第一地址的第二地址,以及把多个第一逻辑组组合成第二逻辑组。
该程序执行允许计算机对于闪存存储器模块中的每个预定存储区域的写入量提供次数管理的流程;允许计算机计算平均擦除次数的流程,该平均擦除次数是通过把经过预定时段每个闪存存储器模块的总写入量除以闪存存储器模块的容量而得到的;计算机判断平均擦除次数的最大值和最小值之间的差是否不小于预定值的第一判断的流程。如果差值不小于预定值,则该程序进一步包括用于允许计算机改变第一地址和第二地址之间的映射信息的流程。
当结合附图一起阅读以下的发明的详细说明,本发明的其他特征和优点会变得更加明显。


图1是显示根据本发明实施例的存储系统的结构的框图。
图2是显示通道适配器的结构的框图。
图3是显示存储适配器的结构的框图。
图4是显示闪存存储器模块的结构的框图。
图5是显示闪存存储器模块的存储块的结构的框图。
图6是显示根据本发明的该实施例的存储系统的逻辑组结构和地址转换层次(hierarchy)的框图。
图7是显示根据本发明该实施例的存储系统的RAID组的结构的框图。
图8是显示其中闪存存储器模块和硬盘驱动器与存储控制器相连接的例子的框图。
图9是显示用于在多个闪存存储器模块之间进行平均读写的方法的流程图。
图10显示了在根据本发明实施例的平均读写流程所伴随的数据交换流程之前,虚拟页面地址和逻辑页面地址之间的地址转换表。
图11显示了在根据本发明实施例的平均读写流程所伴随的数据交换流程之后,虚拟页面地址和逻辑页面地址之间的地址转换表。
图12显示了存储控制器中管理的用于每个闪存存储器模块的擦除次数管理表。
图13是用于说明平均读写流程所伴随的数据交换流程之前的虚拟页面地址和逻辑页面地址之间的映射的框图。
图14是用于说明平均读写流程所伴随的数据交换流程之后的虚拟页面地址和逻辑页面地址之间的映射的框图。
图15显示了数据交换流程之前的初始状态。
图16显示了数据交换流程期间的状态。
图17显示了另一个数据交换流程期间的状态。
图18显示了另一个数据交换流程期间的状态。
图19显示了另一个数据交换流程期间的状态。
图20显示了另一个数据交换流程期间的状态。
图21显示了另一个数据交换流程期间的状态。
图22显示了另一个数据交换流程期间的状态。
图23显示了另一个数据交换流程期间的状态。
图24显示了数据交换流程之后的最终状态。
图25是显示在数据交换流程之前/之后偏移量值如何转变的表。
图26是显示如图15到图24所述的、偏移量值为“0”的逻辑页面地址区域与偏移量值为“1”的逻辑页面地址区域之间的数据交换流程的流程图。
图27是显示偏移量值为“0”的逻辑页面地址区域与偏移量值为“0”的逻辑页面地址区域之间的数据交换流程的流程图。
图28是显示偏移量值为“1”的逻辑页面地址区域与偏移量值为“1”的逻辑页面地址区域之间的数据交换流程的流程图。
图29是用于说明数据交换流程之前虚拟页面地址和逻辑页面地址之间的映射的框图。
图30是用于说明数据交换流程之后虚拟页面地址和逻辑页面地址之间的映射的框图。
图31是用于说明数据交换流程之前虚拟页面地址与逻辑页面地址之间的地址转换表的一个表格。
图32是用于说明数据交换流程之后虚拟页面地址与逻辑页面地址之间的地址转换表的一个表格。
图33是用于说明数据交换流程之前的自由区域管理表的一个表格。
图34是用于说明数据交换流程之后的自由区域管理表的一个表格。
图35是显示如何替换闪存存储器模块的步骤的流程图。
图36显示了当闪存存储器模块上出现故障时的情况。
图37是用于说明闪存存储器模块替换之后的状态的框图。
图38是显示在闪存存储器模块替换之后如何重建数据的框图。
图39是显示其中将备份组中的闪存存储器模块替换为新模块的情况的框图。
具体实施例方式
在下文中参考附图,提供关于本发明的实施例的说明。
<概述>
根据本发明实施例的一种使用闪存存储器的存储系统,包括存储控制器和作为存储介质的多个闪存存储器模块。每个闪存存储器模块(例如,闪存存储器模块P0)包括至少一个闪存存储器芯片(例如,闪存存储器芯片405),以及用于对属于该闪存存储器芯片的存储块(例如,存储块406)的擦除次数进行平均的存储器控制器(例如,控制器MC)。存储控制器(例如,存储控制器SC)把多个闪存存储器模块组合成第一逻辑组(例如,平均读写组W00),并且把用于访问属于第一逻辑组的闪存存储器模块的第一地址(例如,逻辑页面地址600)转换成用于在存储控制器中表示第一地址的第二地址(例如,虚拟页面地址604),并且将多个第一逻辑组进行组合以构成第二逻辑组(例如,RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列)组)。
图1是显示根据本实施例的存储系统的结构的框图。
存储系统100包括存储控制器SC和闪存存储器模块P00到P35。
存储控制器SC包括通道适配器CA0、CA1,缓冲存储器CM0、CM1,存储适配器SA0、SA1,以及互连网络NW0、NW1。虽然通道适配器CA0、CA1,缓冲存储器CM0、CM1,存储适配器SA0、SA1在附图中是分别成对显示的,但是那些组件不限制于成对提供,而是可以以任意数量提供。
互连网络NW0、NW1可以是构成存储控制器SC的部分的交换器(Switch)以及互连设备。具体地说,互连网络NW0、NW1将通道适配器CA0、缓冲存储器CM0以及存储适配器SA0相互连接。互连网络NW0、NW1还将通道适配器CA1、缓冲存储器CM1以及存储适配器SA1相互连接。
如随后在图2中所示的通道适配器CA0,经由通道C00、C01、C02、C03而与外部主机系统(未显示)相连接。通道适配器CA1经由通道C10、C11、C12、C13而与外部主机系统(未显示)相连接。主机系统表示用于对根据本实施例的存储系统100进行数据读取和写入的计算机。存储系统100经由光纤通道交换器、FC-AL(光纤频通道仲裁环)、SAS(串行附属SCSI)扩展器等等而与主机系统或其他存储系统相连接。
缓冲存储器CM0暂时地存储从通道适配器CA0和存储适配器SA0所接收到的数据。缓冲存储器CM1暂时地存储从通道适配器CA1和存储适配器SA1中所接收的数据。
存储适配器SA0与闪存存储器模块P00等等(随后在图3中描述)相连接。具体地说,存储适配器SA0经由通道D00而与闪存存储器模块P00到P05相连接。存储适配器SA0还经由通道D01与闪存存储器模块P10到P15相连接。存储适配器SA0更进一步经由通道D02与闪存存储器模块P20到P25相连接。此外,存储适配器SA0经由通道D03而与闪存存储器模块P30到P35相连接。
存储适配器SA1与闪存存储器模块P00等等相连接。具体地说,存储适配器SA1经由通道D10而与闪存存储器模块P00到P05相连接。存储适配器SA1还经由通道D11与闪存存储器模块P10到P15相连接。存储适配器SA1更进一步经由通道D12与闪存存储器模块P20到P25相连接。此外,存储适配器SA1经由通道D13而与闪存存储器模块P30到P35相连接。具体地说,存储适配器和闪存存储器模块经由光纤通道交换器、FC-AL、SAS扩展器等等而相互连接。
通道适配器CA0、CA1和存储适配器SA0、SA1与维护终端SVP相连接。维护终端SVP向通道适配器CA0、CA1和/或存储适配器SA0、SA1发送由存储系统100的管理员所输入的设置信息。代替采用存储适配器SA0和通道适配器CA0,存储系统100可装有单个适配器。在这种情况下,这个适配器执行由存储适配器SA0和通道适配器CA0所执行的流程。
图2是显示通道适配器的结构的框图。通道适配器CA0包括主机通道接口21、缓冲存储器接口22、网络接口23、处理器24、本地存储器25以及处理器外围设备控制单元26。
主机通道接口21经由通道C00、C01、C02、C03而与外部主机系统(未显示)相连接。主机通道接口21在通道C00、C01、C02、C03上的数据传送协议和存储控制器SC内部的数据传送协议之间进行相互转换。
缓冲存储器接口22与互连网络NW0、NW1相连接。网络接口23与维护终端SVP相连接。主机通道接口21和缓冲存储器接口22经由信号线27相互连接。
处理器24通过运行存储在本地存储器25上的每一个程序而执行各种流程。具体地说,处理器24控制主机系统和互连网络NW0、NW1之间的数据传送。
本地存储器25存储由处理器24所运行的程序。本地存储器25存储处理器24所要查阅的表。该表可以由管理员来设置或改变。
在这种情况下,管理员输入关于设置或改变该表的信息。维护终端SVP经由网络接口23把管理员输入的信息发送给处理器24。处理器24根据所接收的信息而生成或改变该表。然后,处理器24将该表存储在本地存储器25上。
处理器外围设备控制单元26控制主机接口通道21、缓冲存储器接口22、网络接口23、处理器24以及本地存储器25之间的数据传送。处理器外围设备控制单元26例如是芯片组等等。通道适配器CA1具有与通道适配器CA0相同的结构。因此,此处省去了对通道适配器CA1的说明。
图3是显示根据本实施例的存储适配器的框图。存储适配器SA0包括缓冲存储器接口31、存储器通道接口32、网络接口33、处理器34、本地存储器35以及处理器外围设备控制单元36。
缓冲存储器接口31与互连网络NW0、NW1相连接。存储器通道接口32与通道D00、D01、D02、D03相连接。存储器通道接口32在通道D00、D01、D02、D03上的数据传送协议和存储控制器SC内部的数据传送协议之间进行相互转换。缓冲存储器接口31和存储器通道接口32经由信号线37相互连接。网络接口33与维护终端SVP相连接。
处理器34通过运行存储在本地存储器35上的每一个程序而执行各种流程。
本地存储器35存储由处理器34所运行的程序。本地存储器35同样存储由处理器34所查阅的表。该表可以由管理员来设置或改变。
在这种情况下,管理员把关于设置或改变该表的信息输入到维护终端SVP中。维护终端SVP经由网络接口33把管理员输入的信息发送给处理器34。处理器34根据所接收的信息而生成或改变该表。然后,处理器34将该表存储在本地存储器35上。
处理器外围设备控制单元36控制缓冲存储器接口31、存储器通道接口32、网络接口33、处理器34和本地存储器35之间的数据传送。处理器外围设备控制单元36可以是芯片组等等。存储适配器SA1具有与存储适配器SA0相同的结构。因此,此处省去了对存储适配器SA1的说明。
图4是显示根据本发明的闪存存储器模块的结构的框图。闪存存储器模块P00包括存储器控制器MC和闪存存储器MEM。闪存存储器MEM存储数据。存储器控制器MC读取/写入或擦除存储在闪存存储器MEM上的数据。
存储器控制器MC包括处理器(μP)401、接口单元(I/F)402、数据传送单元(HUB)403、存储器(RAM)404和存储器(ROM)407。
闪存存储器MEM包括多个闪存存储器芯片405。每个闪存存储器芯片405包括多个存储块406以便在其上存储数据。每个存储块406是存储器控制器MC擦除数据的一个单位,如随后在图5中所描述的那样。
存储块406包括多个页面。页面是存储器控制器MC读/写数据的单位,如随后在图5中所描述的那样。把每个页面分类为有效页面、无效页面、未使用页面或者坏页面。有效页面是存储有效数据的页面。无效页面是存储无效数据的页面。未使用页面是没有存储数据的页面。坏页面是物理上不可用的页面,例如,因为页面包含有损坏的存储元件。
接口单元402经由通道D00而与存储控制器SC中的存储适配器SA0相连接。接口单元402也经由通道D10而与存储控制器SC中的存储适配器SA1相连接。
接口单元402从存储适配器SA0和存储适配器SA1接收指令。来自存储适配器SA0和存储适配器SA1的指令诸如是SCSI命令。具体地说,接口单元402从存储适配器SA0和存储适配器SA1接收数据。然后接口单元402把所接收的数据存储在存储器404上。接口单元402也把存储在存储器404上的数据发送给存储适配器SA0和存储适配器SA1。
存储器404例如是能够以高速来读/写数据的动态随机存取存储器。存储器404暂时地存储由接口单元402发送或接收的数据。存储器407是用于存储要由处理器401来运行的程序的非易失性存储器。当激活闪存存储器模块P00时,把程序从存储器407拷贝到存储器404上从而处理器401能够运行该程序。存储器404存储处理器401所要查阅的表。该表可包括例如闪存存储器MEM的逻辑页面地址和物理页地址之间的地址转换表。逻辑页面地址是当从闪存存储器模块外部(例如,从存储适配器SA0)访问作为在闪存存储器上读/写数据的单位的页面时使用的地址。物理页面地址是当存储器控制器MC访问作为在闪存存储器上读/写数据的单位的页面时所使用的地址。
数据传送单元403可以是例如用于将处理器401、接口单元402、存储器404、存储器407以及闪存存储器MEM相互连接的交换器,并控制这些组件之间的数据传送。
处理器401通过运行存储在存储器404上的每一个程序而执行各种流程。例如,处理器401查阅闪存存储器的逻辑页面地址和物理页面地址之间的地址转换表(存储在存储器404上),然后根据该表在闪存存储器MEM上读/写数据。处理器401为闪存存储器模块中的存储块406提供回收流程(存储块回收流程)和平均读写流程。
回收流程(存储块回收流程)是把存储块406中的无效页面重建成未使用页面的流程,以便能够把含有较少未使用页面的存储块重建为再次有效。此处假定作为回收流程的目标的存储块406包括有效页面、无效页面和未使用页面,其中很多是无效页面。在这种情况下,需要擦除无效页面以便增加未使用页面。然而,擦除流程不是在逐页面基础上进行的,而是在逐存储块基础上进行的。因此,需要以这样一种方式来把存储块重建为有效,即,把目标存储块的有效页面拷贝到空存储块上,然后擦除目标存储块。具体地说,处理器401把作为回收流程的目标的存储块406(即目标存储块)中有效页面上所存储的数据拷贝到未使用的存储块上。处理器401将拷贝了数据的该未使用的存储块的逻辑存储块号码修改为目标存储块的逻辑存储块号码。然后,擦除目标存储块上的所有数据,从而完成回收流程。
例如,随着处理器401把更多数据写入到存储块406上,存储块406中更多的未使用页面被减少。然后,如果存储块406变得缺少未使用页面,则处理器401不能再把数据写到存储块406上。因此,处理器401通过在存储块406上执行回收流程而把无效页面回收成未使用页面。
平均读写流程是用于对存储块406的擦除次数进行平均的流程,从而能够提高闪存存储器MEM耐用性。闪存存储器MEM经历的数据擦除次数越多,闪存存储器MEM最终达到其耐用性的速度就越快。通常,保证闪存存储器MEM的耐用性高达10,000到100,000次。
现在,其他闪存存储器模块P01到P35具有与闪存存储器模块P00相同的结构。因此,省去了对这些模块P01到P35的说明。
图5是显示闪存存储器模块的存储块的结构的图示。闪存存储器模块P00的存储块406包括多个页面501。存储块406通常包括几十个页面501(例如,32个页面、64个页面)。
每个页面501是存储器控制器MC之类读/写数据的一个单位。例如,在NAND型闪存存储器中,存储器控制器MC之类以20到30μs或更低/页面的速度来读数据,并且以0.2到0.3ms/页面的速度写数据。存储器控制器MC之类以2到4ms/存储块的速度来擦除数据。
页面501包括数据段502和冗余段503。例如,数据段502包含512字节,冗余段503包含16字节。数据段502存储顺序的数据(ordinal data)。
冗余段503存储关于页面501的管理信息和错误校正码。管理信息包括偏移量地址和页面状态。偏移量地址是页面501所属的存储块406中的相对地址。页面状态显示了页面501是否是有效页面、无效页面、未使用页面、或正在进行处理的页面。错误校正码是用于检测和校正页面501上的错误的码,诸如Humming码。
图6是显示逻辑组的结构和地址转换的层次的框图。图6中的存储系统具有与图1中的存储系统相同的硬件配置。为了方便起见,仅显示了作为与闪存存储器模块P00到P35连接的存储控制器SC的通道的通道D00、D01、D02、D03,并且在图中省略了通道D10、D11、D12、D13。
在根据本实施例的存储系统100中,在同一个通道上相互连接的闪存存储器模块构成了一个平均读写组(WDEV)。例如,通道D00上的闪存存储器模块P00到P03构成了平均读写组W00。类似地,通道D01上的闪存存储器模块P10到P13构成了平均读写组W10;通道D02上的闪存存储器模块P20到P23构成了平均读写组W20;以及通道D03上的闪存存储器模块P30到P33构成了平均读写组W30。
从存储控制器SC可经由每个闪存存储器模块相应的逻辑页面地址访问每个闪存存储器模块。例如,可经由模块的每个相应的逻辑页面地址600而访问通道D00上的闪存存储器模块P00到P03。类似地,可经由模块的每个相应的逻辑页面地址601而访问通道D01上的闪存存储器模块P10到P13;可经由模块的每个相应的逻辑页面地址602而访问通道D02上的闪存存储器模块P20到P23;以及可经由模块的每个相应的逻辑页面地址603而访问通道D03上的闪存存储器模块P30到P33。
存储控制器SC把属于相同的平均读写组的闪存存储器模块的多个逻辑页面地址放到一起成为一组并且把该组转换成单个虚拟页面地址。例如,存储控制器SC把属于平均读写组W00的闪存存储器模块P00到P03的逻辑页面地址600放在一起,并且把该组转换成虚拟页面地址604。类似地,把属于平均读写组W10的闪存存储器模块P10到P13的逻辑页面地址601放在一起并转换成虚拟页面地址605;把属于平均读写组W20的闪存存储器模块P20到P23的逻辑页面地址602放在一起并转换成虚拟页面地址606;以及把属于平均读写组W30的闪存存储器模块P30到P33的逻辑页面地址603放在一起并转换成虚拟页面地址607。
如上所述,存储控制器SC把逻辑页面地址转换成虚拟页面地址。以这种方式,即使为了平均读写的目的而在闪存存储器模块之间传递数据并且改变了相关的逻辑页面地址,作为较高层次设备的存储控制器SC也能够改变逻辑页面地址与对应于该逻辑地址的虚拟页面地址之间的映射,从而能够不相冲突地访问数据。
在根据本实施例的存储系统100中,将多个平均读写组进行组合从而构成单个RAID组(VDEV)。在图6中,将四个平均读写组W00到W30组合成一个RAID组V00。构成单个RAID组的每一个平均读写组中的每个虚拟页面地址页面区域具有相同的存储容量。将一个或多个RAID组中的区域组合成单个逻辑卷608,其是存储控制器SC向主机系统显示的存储区域。
通道D00上的闪存存储器模块P04、P05构成备份组(YDEV)Y00。类似地,通道D01上的闪存存储器模块P14、P15构成备份组Y10;通道D02上的闪存存储器模块P24、P25构成备份组Y20;以及通道D03上的闪存存储器模块P34、P35构成备份组Y30。随后将描述如何替换模块。
图7是显示根据本实施例的存储系统100的RAID组的结构的框图。RAID组720是处于RAID级5的RAID组,由平均读写组700到703构成。例如,平均读写700由闪存存储器模块730、731构成。需要指出的是,根据功能把RAID分类到一个级别中,诸如RAID级0或RAID级1等等。
RAID组721是由平均读写组704、705构成的处于RAID级1的RAID组。类似地,RAID组722是由平均读写组706、707构成的处于RAID级1的RAID组。
在存储系统100中,如果把RAID分类到级别0、1、3、5、6或1+0中,则为构成相同RAID组的每一个平均读写组的逻辑页面地址区域提供相等的容量。平均读写组容量的上限是由公式1定义的,其下限是由公式2定义的。具体地说,“闪存存储器模块的持续的写入速度”和“系统耐用性”的乘积除以“闪存存储器耐用性”得到第二值(上限)。“对系统进行操作时的闪存存储器模块的有效写入速度”与“系统耐用性”的乘积除以“闪存存储器耐用性”得到第一值(下限)。接着,将每个平均读写组的逻辑页面地址区域的容量设置成不小于第一值且不大于第二值。例如,系统耐用性通常为5到10年,闪存存储器耐用性通常为10,000到100,000次。公式2中的有效写入速度表示考虑从主机系统到存储系统100的写访问率(write access ratio)的有效写入速度。 [公式2] 将平均读写组的容量设置为落入由公式1和公式2所定义的范围。通过为平均读写组中的闪存存储器模块提供平均读写,能够保证闪存存储器模块耐用性在存储系统100的系统耐用期之内。
RAID组723是由平均读写组708到711构成的处于RAID级4的RAID组;平均读写组708到710是用于存储数据的平均读写组;而平均读写组711是用于存储奇偶校验(parity)的平均读写组。用于存储奇偶校验的平均读写组的更新次数比用于存储数据的其他平均读写组的更新次数更多。因此,为了提供处于RAID级4的RAID组中的平均读写流程,将用于存储奇偶校验的平均读写组中的逻辑页面地址区域的容量设置为大于用于存储数据的平均读写组中的逻辑页面地址区域的容量。例如,如果构成RAID组的平均读写组的数量是“n”,则将用于存储奇偶校验的平均读写组的逻辑页面地址区域的容量设置为不小于用于存储数据的平均读写组的逻辑页面地址区域的容量的一倍且不大于用于存储数据的平均读写组的逻辑页面地址区域的容量的(n-1)倍。
图中未示出,在RAID级2上,用于存储冗余信息的平均读写组比用于存储数据的平均读写组具有更多的更新次数。例如,在RAID级2上,如果存在10个用于存储数据的平均读写组以及4个用于存储奇偶校验的平均读写组(10D4P),则将用于存储冗余信息的平均读写组中的逻辑页面地址区域的容量设置为不小于用于存储数据的平均读写组中的逻辑页面地址区域的容量的一倍且不大于用于存储数据的平均读写组中的逻辑页面地址区域的容量的10/4=2.5倍。对于25D5P,将用于存储冗余信息的平均读写组中的逻辑页面地址区域的容量设置为不小于用于存储数据的平均读写组中的逻辑页面地址区域的容量的一倍且不大于该容量的25/5=5倍。
换句话说,在RAID级2或RAID级4上,如果用于存储数据的平均读写组的数量是“n”,而用于存储冗余信息的平均读写组的数量是“m”,则将用于存储冗余信息的平均读写组中的逻辑页面地址区域的容量设置为不小于用于存储数据的平均读写组中的逻辑页面地址区域的容量的一倍且不大于该容量的“n/m”倍。
以这种方式,通过组合平均读写组而构成了存储控制器SC中的每个RAID组。具体地说,存储控制器SC考虑每个RAID组的平均读写组而对其进行管理。因此,每个平均读写组的虚拟页面地址被视为是独立的,而与每个平均读写组中的逻辑页面地址及虚拟页面地址之间的映射无关。因此,存储控制器SC能够把处于不同级别的多个RAID组相互连接。
图8是显示其中闪存存储器模块和硬盘驱动器与存储控制器SC相连接的例子的框图。闪存存储器模块810到812构成了平均读写组830。闪存存储器模块813到815构成了平均读写组831,并且平均读写组830、831构成了RAID组840。
类似于图6,存储控制器SC把逻辑页面地址800转换成虚拟页面地址802以便访问闪存存储器模块810到812中的任何一个。存储控制器SC还把逻辑页面地址801转换成虚拟页面地址803以便访问闪存存储器模块813到815中的任何一个。
将硬盘驱动器820和823组合成RAID组841。类似地,将硬盘驱动器821和824组合成RAID组842;并且将硬盘驱动器822和825组合成RAID组843。存储控制器SC经由逻辑存储块地址804或805而访问每个硬盘驱动器。在由硬盘驱动器构成的RAID组中,因为不需要平均读写所以没有定义平均读写组。存储控制器SC仅在由闪存存储器模块构成的RAID组中定义平均读写组,并且把逻辑页面地址转换成虚拟页面地址。
当激活系统或把存储介质与系统相连接时,存储控制器SC根据是否需要任何地址转换的判断或者如何配置RAID组的判断等等而改变控制,所述判断取决于存储介质是否是闪存存储器或硬盘驱动器。
存储控制器SC通过利用由闪存存储器模块构成的RAID组840或者由硬盘驱动器构成的RAID组841到843中任何一个的区域,或者通过将RAID组840和RAID组841到843的区域组合而构成逻辑卷808。闪存存储器模块的存储区域或硬盘驱动器的存储区域的选择可以是这样的,即在闪存存储器模块上存储读取访问较多并且更新次数较少的数据,并且在硬盘驱动器上存储更新次数较多的数据。闪存存储器模块能够利用潜规则(law latency)访问硬盘驱动器。因此,如果根据存储介质的访问属性而选择存储区域,如上所述,则可实现存储系统的高性能。
将参考附图,给出关于根据本实施例的存储系统100的操作的说明。
将参考图9到图14,给出关于用于根据本实施例的存储系统100的平均读写方法的说明。这个方法在多个闪存存储器模块之间提供平均读写。
图9是显示多个闪存存储器模块之间的平均读写流程的流程图。为了简便,假定目标平均读写组W00具有两个闪存存储器模块P00、P04。
图10显示了根据本实施例的平均读写流程伴随的数据交换流程之前的虚拟页面地址和逻辑页面地址之间的地址转换表。
图11显示了根据本实施例的平均读写流程伴随的数据交换之后的虚拟页面地址和逻辑页面地址之间的地址转换表。
参考图10和图11,表示了虚拟页面地址和逻辑页面地址之间的映射,以及这些映射的偏移量值。在根据本实施例的存储系统中,把逻辑页面地址区域(数据长度)设置为大于相应的虚拟页面地址区域(数据长度)。在逻辑页面地址区域中,如果在起始地址端写有有效数据并且在结束地址端存在自由区域,则指示偏移量值“0”。如果在结束地址端写有有效数据并且在起始地址端存在自由区域,则指示偏移量值“1”。在这种情况下,自由区域的大小是闪存存储器页面的数据段的整数倍(至少一倍),并且等于闪存存储器模块中的存储器控制器一次在闪存存储器上读/写的数据量。
图12显示了由存储控制器SC管理的每个闪存存储器模块的擦除次数管理表。存储控制器SC记录作为闪存存储器模块内的数据交换单位的每个区域的总写入量。如公式3所示,通过把前一平均擦除次数值与平均处理次数相加可以获得闪存存储器模块中的闪存存储器的平均擦除次数,所述平均处理次数是通过把独立的预定时间段中模块的每个逻辑页面地址区域的单独的总写入量的和,除以模块的整个逻辑页面地址区域容量(模块容量)而得到的。
在图12的管理表中,记录了两个平均擦除次数值。一个是最后一次运行平均读写流程时所记录的前一平均擦除次数(f00、f04),另一个是到目前为止的当前平均擦除次数(e00、e04)。从执行前一平均读写流程的上一次的时间直到现在,记录用于管理每个逻辑页面地址区域的写入次数的总写入量。通过公式3可容易地计算出当前平均擦除次数。通过管理每个独立的预定时间段中逻辑页面地址区域的总写入量,可以获得对于逻辑页面地址区域最近的访问频率。在该管理表中,用这样的方式来设置移动标志,即,在数据交换流程之前把该标志设置为“0”,在数据交换流程之后把该标志设置为“1”。在公式3中,在每个独立的时间段中对总写入量进行管理。假定没有独立的预定时间段,则可以由公式4来表示经过整个时间段的总写入量。公式3的结果或公式4的结果得到相同的平均擦除次数值。
即使当诸如电源故障之类的故障出现时或当不在系统服务时间内时,也需要保持图10或图11所示的地址转换表以及图12中的平均擦除次数管理表。因此,存储控制器SC在每个闪存存储器模块的每个预定区域上存储与每个模块的地址转换表以及平均擦除次数管理表有关的数据。
在图9中,当事件出现时(例如每当任何平均读写组(WDEV)的总写入量达到预定值时),或者以每个预定的时间段,存储控制器SC执行平均读写流程。此时,存储控制器SC把平均读写组中的闪存存储器模块的移动标志设置为“0”(S901)。
接下来,存储控制器SC通过查寻图12的平均擦除次数管理表而检验移动标志设置为“0”,并检验平均擦除次数的最大值和最小值(S902)。
存储控制器SC判断平均擦除次数的最大值和最小值之间的差是否不小于预定值(S903)。如果擦除次数的差不小于预定值,则存储控制器SC进行到S904。如果擦除次数的差小于预定值,则存储控制器SC完成该流程。
然后,存储控制器SC从图12的管理表中,在具有最大平均擦除次数的闪存存储器模块(PDEV)中选择具有最大总写入量的逻辑页面地址区域;并且在具有最小平均擦除次数的闪存存储器模块(PDEV)中选择具有最小总写入量的逻辑页面地址(S904)。
接下来,存储控制器SC把图10的虚拟页面与逻辑页面之间的地址转换表的状态字段设置为“交换”。具体地说,存储控制器SC把表示“交换”的值输入到图10的转换表的状态字段中,以便在两个所选择的逻辑页面地址区域之间执行数据交换并且改变与相应的虚拟页面地址的映射(S905)。在访问其上指示了“交换”的存储区域中,存储控制器SC暂时地停留在等待状态,并且在数据交换操作和映射改变操作完成之后,再次尝试访问该存储区域。在这个流程期间,将从主机系统写入的数据存储在存储控制器SC中的缓冲存储器上。
接下来,存储控制器SC在上述两个逻辑页面地址区域之间交换数据(S906)。随后将给出关于数据交换流程的详细说明。
数据交换流程之后,存储控制器SC对数据交换目标区域所属于的闪存存储器模块(PDEV)的字段(其中记录了前一平均擦除次数值)中的当前平均擦除次数值进行更新,并且将总写入量清零(S907)。因此,紧接在数据交换操作之后的平均擦除次数值与前一平均擦除次数值相同。
如图11所示,存储控制器SC改变虚拟页面地址与逻辑页面地址之间的映射和偏移量值,并且清除状态字段,然后把移动标志设置为“1”(S908)。在图12中,要成为平均读写的目标的平均读写组W00包括两个闪存存储器模块P00、P04。因此,如果在闪存存储器模块P00、P04之间执行了任何数据交换,则将闪存存储器模块P00、P04的移动标志都设置为“1”。
存储控制器SC判断是否存在移动标志为“0”的多个闪存存储器模块(PDEV)(S909)。如果判断没有移动标志为“0”的多个闪存存储器模块,则存储控制器SC完成平均读写流程。如果判断存在移动标志为“0”任意多个闪存存储器模块,则存储控制器SC返回到S902。在图12中,如果闪存存储器模块P00、P04的移动标志都设置为“1”,则存储控制器SC完成平均读写流程。例如,如果平均读写组包括四个或更多闪存存储器模块,则存储控制器SC在S902更进一步检验是否能够在其余的闪存存储器模块之间执行数据交换。
每次执行平均读写流程,都改变虚拟页面地址与逻辑页面地址之间的映射,并且同样更新平均擦除次数。因此,每次流程平均读写流程都需要对存储在闪存存储器模块的预定区域上的地址管理表(图10或图11)与图12的平均擦除次数管理表进行更新。
现在,如下描述S906的数据交换流程。
图13是为了说明平均读写流程伴随的数据交换流程之前的虚拟页面地址与逻辑页面地址之间的映射的框图。为了提供例子,此处要说明如何交换数据以及如何改变虚拟页面地址区域的数据区域1301与虚拟页面地址区域的数据区域1302之间的映射。虚拟页面地址区域的数据区域1301与逻辑页面地址区域的数据区域1303相对应。虚拟页面地址区域的数据区域1302与逻辑页面地址区域的数据区域1304相对应。例如,假定在逻辑页面地址区域上,在数据区域之间存在任何自由区域。如果自由区域位于相关的数据区域之后,则把偏移量值设置为“0”;以及如果自由区域位于相关的数据区域之前,则把偏移量值设置为“1”。例如,在图13中,因为数据区域1303具有在其之前的自由区域(虚线所示),从而其偏移量设置为“1”;并且数据区域1304具有在其之后的自由区域(虚线所示),从而其偏移量设置为“0”。因此,设置了逻辑页面地址区域的总存储量大于虚拟页面地址区域的总存储量。
图14是用于说明执行了平均读写流程的伴随的数据交换之后,虚拟页面地址和逻辑页面地址之间的映射的框图。虚拟页面地址区域的数据区域1401与逻辑页面地址区域的数据区域1404相对应;并且虚拟页面地址区域的数据区域1402与逻辑页面地址区域的数据区域1403相对应。数据区域1403的偏移量值是“0”,且数据区域1404的偏移量值是“0”。
为了提供数据交换流程的例子,图15到图24以一步接一步的基础,显示了如何在偏移量值为“0”的数据区域与偏移量值为“1”的数据区域之间交换数据。在图15到图24中,在左边是偏移量值为“0”的逻辑页面地址区域。如图所示,逻辑页面地址区域被分成五段,如分别以“E”、“F”、“G”、“H”和“-”所示。“E”到“H”表示其上写入了有效数据的区域,而“-”表示自由区域。
在图15到图24中,在右边是偏移量值为“1”的逻辑页面地址区域。逻辑页面地址区域被分成五段,如分别以“A”、“B”、“C”、“D”和“-”所示。“A”到“D”表示其上写入了有效数据的区域,而“-”表示自由区域。
图15显示了数据交换流程之前的初始状态。在左边偏移量值是“0”,而在右边偏移量值是“1”。
图16显示了数据交换流程期间的状态,把左边(偏移量值为“0”)的逻辑页面地址区域E上的数据重写到右边(偏移量值为“1”)的自由区域上。
图17显示了数据交换流程期间的状态,把右边的逻辑页面地址区域A上的数据重写到左边的原逻辑页面地址区域E上。
图18显示了数据交换流程期间的状态,把左边的逻辑页面地址区域F上的数据重写到右边的原逻辑页面地址区域A上。
图19显示了数据交换流程期间的状态,把右边的逻辑页面地址区域B上的数据重写到左边的原逻辑页面地址区域F上。
图20显示了数据交换流程期间的状态,把左边的逻辑页面地址区域G上的数据重写到右边的原逻辑页面地址区域B上。
图21显示了数据交换流程期间的状态,把右边的逻辑页面地址区域C上的数据重写到左边的原逻辑页面地址区域G上。
图22显示了数据交换流程期间的状态,把左边的逻辑页面地址区域H上的数据重写到右边的原逻辑页面地址区域C上。
图23显示了数据交换流程期间的状态,把右边的逻辑页面地址区域D上的数据重写到左边的原逻辑页面地址区域H上。
图24显示了数据交换流程之后的最终状态。偏移量值在左边是“0”,且偏移量值在右边也是“0”。
基本上,闪存存储器是这样的一种半导体器件,其中不能在物理地址区域上执行重写流程。具体地说,为了交换物理地址区域上的数据,实际上将数据拷贝到未使用页面上,然后把存储了数据的原始页面设置成无效页面。因此,在这个原始页面上没有执行实际的重写过程。
根据本实施例,上述流程全部在逻辑页面地址区域基础上执行,因此,能够在逻辑页面上重写数据。用这种方式,通过执行这种重写流程可以基于数据交换来执行平均读写流程。
图25是显示数据交换流程之前/之后偏移量值如何转变的表。
如果在偏移量值都为“0”的两个逻辑页面地址区域之间执行数据交换,则数据交换流程之后偏移量值分别变为“0”和“1”。如果在偏移量值为“0”的逻辑页面地址区域与偏移量值为“1”的逻辑页面地址区域之间执行数据交换,则数据交换流程之后偏移量值分别变为“0”和“0”。如果在偏移量值都为“1”的两个逻辑页面地址区域之间执行数据交换,则数据交换流程之后偏移量值分别变为“1”和“0”。
将参考流程图,给出关于数据交换流程的详细说明。
图26是显示偏移量值为“0”的逻辑页面地址区域与偏移量值为“1”的逻辑页面地址区域之间的数据交换流程(如图1 5到图24所述)的流程图。此处,存储控制器SC在偏移量值为“0”的逻辑页面地址区域与偏移量值为“1”的逻辑页面地址区域之间设置数据交换目标(S2601)。
存储控制器SC把目标逻辑页面地址区域分成“n”段;并设置为“i=1”(S2602)。就图15而言,例如,设置为“n=5”,并且把有效数据写入到所分割的(n-1)个段上,剩余的一个段用作自由区域。存储控制器SC把数据从偏移量值为“0”的第i个逻辑页面地址区域中移动到偏移量值为“1”的第i个逻辑页面地址区域中(S2603),然后同样地把数据从偏移量值为“1”的第i+1个逻辑页面地址区域中移动到偏移量值为“0”的第i个逻辑页面地址区域中(S2604);并且使“i”递增“1”(S2605)。然后,存储控制器SC判断是否“i=n”(S2606)。如果判断不是“i=n”,那么存储控制器SC返回到S2603。如果判断为“i=n”,那么存储控制器SC完成数据交换流程。
图27是显示偏移量值为“0”的逻辑页面地址区域与偏移量值为“0”的逻辑页面地址区域之间的数据交换流程的流程图。此处,存储控制器SC在偏移量值为“0”的逻辑页面地址区域与偏移量值为“0”的逻辑页面地址区域之间设置数据交换目标(S2701)。
存储控制器SC把目标逻辑页面地址区域分成“n”段,并设置为“i=n”(S2702)。有效数据写入到所分割的(n-1)个段上,剩余的一个段是自由区域。直到到达“i=1”之前,以逐段的基础重复数据交换流程(S2703到S2706)。在S2706,如果判断为“i=1”,则完成数据交换流程。
图28是显示偏移量值为“1”的逻辑页面地址区域与偏移量值为“1”的逻辑页面地址区域之间的数据交换流程的流程图。此处,存储控制器SC在偏移量值为“1”的逻辑页面地址区域与偏移量值为“1”的逻辑页面地址区域之间设置数据交换目标(S2801)。
存储控制器SC把目标逻辑页面地址区域分成“n”段;并设置为“i=2”(S2802)。有效数据写入到所分割的(n-1)个段上,剩余的一个段是自由区域。直到变成“i>n”之前,以逐段的基础重复数据交换流程(S2803到S2806)。在S2806,如果判断为“i>n”,则完成数据交换流程。
图29到图34是说明根据本发明另一个实施例的平均读写流程的附图。根据上述实施例,在闪存存储器模块中分布有用于数据交换的自由区域。在这个实施例中,将说明把自由区域处理为每个模块中的一个组的方法。
图29是用于说明执行数据交换流程之前的虚拟页面地址和逻辑页面地址之间的映射的框图。
图30是用于说明执行数据交换流程之后的虚拟页面地址与逻辑页面地址之间的映射的框图。为了简便,假定目标平均读写组W00具有两个闪存存储器模块P00、P04。在数据交换之前的状态(图29)中,闪存存储器模块P00、P04的逻辑页面地址区域具有从地址AC0到地址AC4之前的数据区域。地址AC4的区域或更多区域用作用于数据交换的自由区域(2903、2904)。这个自由区域的大小(数据长度)与用于数据交换的数据区域的大小相同以执行平均读写流程。
图31是用于说明执行数据交换流程之前的用于虚拟页面地址与逻辑页面地址之间的数据交换的地址转换表的一个表格。图32是用于说明执行数据交换流程之后的用于虚拟页面地址与逻辑页面地址之间的数据交换的地址转换表的一个表格。在这个实施例中,由于把用于数据交换的自由区域处理为一个组,从而图10和图11的地址转换表所需要的偏移量值管理就不必要了。代之以需要管理自由区域位置。
图33是用于说明执行数据交换流程之前的自由区域管理表的一个表格,而图34是用于说明执行数据交换流程之后的自由区域管理表的一个表格。自由区域管理表管理每个闪存存储器模块中的自由区域的起始逻辑页面地址和大小(数据长度)。
将参考图29,给出如何在虚拟页面地址区域的数据区域2901和数据区域2902之间交换数据以及如何改变虚拟页面地址与逻辑页面地址之间的映射的说明。如图31中的逻辑页面地址与虚拟页面地址之间的地址转换表所示,可以理解虚拟页面地址区域中的数据区域2901与逻辑页面地址区域中的数据区域2905相对应;而虚拟页面地址区域中的数据区域2902与逻辑页面地址区域中的数据区域2906相对应。参考图33中的自由区域管理表,可以理解闪存存储器模块P00中用于数据交换的自由区域是区域2903;而闪存存储器模块P04中用于数据交换的自由区域是区域2904。
接下来,将数据区域2905上的数据写入到自由区域2904上,将数据区域2906上的数据写入到自由区域2903上。如图30所示,将虚拟页面地址区域中的数据区域3001设置为与逻辑页面地址区域中的数据区域3004相对应;并将虚拟页面地址区域中的数据区域3002设置为与逻辑页面地址区域中的数据区域3003相对应。完成上述数据交换流程之后,更新虚拟页面地址与逻辑页面地址之间的转换表,如图32所示。如图34所示,可以理解闪存存储器模块P00中用于数据交换的自由区域是区域3005;而闪存存储器模块P04中用于数据交换的自由区域是区域3006。
根据本实施例,将用于数据交换的自由区域处理为每个模块一个组,而不是象其他实施例所述的那样在闪存存储器模块中分配用于数据交换的自由区域,借此消除了对偏移量值的管理,结果产生了较容易的数据交换控制。
接下来,此处将对在闪存存储器模块(PDEV)上出现故障的情况给出说明。
参考图35到图39,给出了对当闪存存储器模块上出现故障时如何替换闪存存储器模块的方法的说明。
图35是显示如何替换模块的步骤的流程图。
图36到图39是说明图35的流程图的每个步骤的框图。
图36显示了当闪存存储器模块上出现故障时的情况。图36显示了RAID组(VDEV)V00,以及构成RAID组V00的平均读写组(WDEV)W00、W10、W20、W30。备份组(YDEV)Y00连接于连接了平均读写组W00的同一通道D01上。
现在,假定在平均读写组W00中的闪存存储器模块(PDEV)P01上出现故障(S3501)。
然后,选择其中平均读写(WDEV)W00可用的备份组(YDEV)。选择了连接在平均读写组W00的相同通道D01上的备份组Y00(S3502)。然后,从属于该备份组Y00的闪存存储器模块中,选择了闪存存储器模块P04用于替换闪存存储器模块P01(S3503)。
图37是用于说明闪存存储器模块替换之后的状态的框图。如图37所示,把闪存存储器模块P01替换为平均读写组W00与备份组Y00之间的闪存存储器模块P04。在替换中,故障的模块P01停留在待机状态。
接下来,图38是显示在闪存存储器替换之后如何重建数据的框图。如图38所示,将写在闪存存储器模块P01上的数据重建并写入到新合并到平均读写组W00中的闪存存储器模块P04上(S3504)。要指出的是,此时,由于平均读写,用于数据重建的数据存储并分配在不同平均读写组中的闪存存储器模块之间。换句话说,在同一虚拟页面地址中不同的平均读写组中所存储的数据上进行数据重建。
图39是显示其中将备份组中的闪存存储器替换为新的闪存存储器模块的情况的框图。如图39所示,把替换中处于待机状态的闪存存储器模块P01替换为新的闪存存储器模块P06,并且将模块P06合并到备份组Y00中(S3505)。然后,完成闪存存储器模块替换。
根据模块替换之前旧模块的总写入量,判断在模块替换之后是否能够立即执行平均读写流程。要指出的是,除了伴随着数据重建的一些写入之外,新替换的模块在相关的逻辑页面地址区域的整个区域上没有总写入量,因此,不可能知道逻辑页面地址区域的每个预定区域的写入频率。可以使用模块替换之前旧模块的总写入量来获知逻辑页面地址区域的写入频率,以便执行平均读写流程。
本发明提供了一种在多个闪存存储器模块之间提供平均读写的方法,其适用于提高闪存存储器模块耐用性的目的,具体地说适用于利用具有多个闪存存储器模块的大容量闪存存储器的存储系统;一种为此的平均读写方法;以及用于运行上述方法的平均读写程序。
已经如上所述说明了根据本发明的实施例。然而,本发明的实施例不局限于那些说明,本领域技术人员可确定本发明的基本特征并且在不脱离权利要求的精神和范围的情况下可以对本发明进行各种改进和变化以使它适应于各种应用和条件。
权利要求
1.一种使用闪存存储器的存储系统,包括存储控制器和作为存储介质的多个闪存存储器模块,每个闪存存储器模块包括至少一个闪存存储器芯片,以及用于对属于该闪存存储器芯片的存储块的擦除次数进行平均的存储器控制器,存储控制器把多个闪存存储器模块组合成第一逻辑组,把用于访问属于第一逻辑组的闪存存储器模块的第一地址转变成用于在存储控制器中指示第一地址的第二地址,并且把多个第一逻辑组组合成第二逻辑组。
2.根据权利要求1所述的使用闪存存储器的存储系统,其中第二逻辑组包括用于在闪存存储器模块中的任一个上出现故障时重建所记录的数据的冗余信息。
3.根据权利要求1所述的使用闪存存储器的存储系统,其中第二逻辑组是RAID级0、RAID级1、RAID级1+0、RAID级3、RAID级5或者RAID级6中任何一个上的逻辑组,并且为构成第二逻辑组的每一个第一逻辑组提供相等的容量。
4.根据权利要求1或2所述的使用闪存存储器的存储系统,其中第一值是存储系统操作期间每个闪存存储器模块的有效写入速度与存储系统耐用性的乘积除以闪存存储器耐用性而得到的商;第二值是每个闪存存储器模块的持续的写入速度与存储系统耐用性的乘积除以闪存存储器耐用性而得到的商;并且将第一逻辑组的容量设置为不小于第一值且不大于第二值。
5.根据权利要求1或2所述的使用闪存存储器的存储系统,其中第二逻辑组是RAID级2或者RAID级4上的逻辑组;并且在构成第二逻辑组的第一逻辑组中,如果用于存储冗余信息的第一逻辑组的数目是m,而用于存储数据的第一逻辑组的数目是“n”,则将用于存储冗余信息的第一逻辑组的容量设置为用于存储数据的第一逻辑组的容量的至少一倍且不大于“n/m”倍。
6.根据权利要求1或2所述的使用闪存存储器的存储系统,其中将经由第一地址访问的存储区域设置为大于经由第二地址访问的存储区域。
7.根据权利要求1或2所述的使用闪存存储器的存储系统,其中存储控制器存储每个闪存存储器模块的第一地址与第二地址之间的映射信息,以及每个闪存存储器模块中存储块的平均擦除次数。
8.根据权利要求1或2所述的使用闪存存储器的存储系统,其中存储控制器构建多个第二逻辑组。
9.根据权利要求1或2所述的使用闪存存储器的存储系统,其中存储控制器构建不同的RAID级上的多个第二逻辑组。
10.根据权利要求1或2所述的使用闪存存储器的存储系统,其中当激活存储系统或者当存储介质连接于存储系统时,存储控制器判断该存储介质是否是闪存存储器。
11.一种用于使用闪存存储器的存储系统的平均读写方法,该存储系统包括闪存存储器模块,包括至少一个闪存存储器芯片和用于对属于该闪存存储器芯片的存储块的擦除次数进行平均的存储器控制器;以及存储控制器,用于把闪存存储器模块组合成第一逻辑组,把用于访问属于第一逻辑组的闪存存储器模块的第一地址转变成用于在存储控制器中指示第一地址的第二地址,以及把多个第一逻辑组组合成第二逻辑组,该方法包括允许存储控制器对于闪存存储器模块中的每个预定存储区域的写入量提供次数管理的步骤;允许存储控制器计算平均擦除次数的步骤,该平均擦除次数是通过把经过预定时段每个闪存存储器模块的总写入量除以闪存存储器模块的容量而得到的;以及允许存储控制器判断平均擦除次数的最大值和最小值之间的差是否不小于预定值的第一判断步骤,其中在第一判断步骤,如果平均擦除次数的差不小于预定值,则该方法进一步包括允许存储控制器在具有平均擦除次数的最大差值的闪存存储器模块之中,在具有最大写入量的存储区域和具有最小写入量的存储区域之间交换数据,并且改变第一地址与第二地址之间的映射信息的步骤。
12.根据权利要求11所述的用于使用闪存存储器的存储系统的平均读写方法,进一步包括允许存储控制器在执行数据交换步骤之后判断是否存在没有交换数据的多个闪存存储器模块的第二判断步骤,其中在第二判断步骤,如果判断存在没有交换数据的多个闪存存储器模块,则该方法进一步包括允许存储控制器回到第一判断步骤的步骤。
13.根据权利要求11或12所述的用于使用闪存存储器的存储系统的平均读写方法,其中如果每个第一逻辑组的总写入量达到预定值,存储控制器执行第一判断步骤。
14.根据权利要求11或12所述的用于使用闪存存储器的存储系统的平均读写方法,其中将第一地址的存储区域设置为大于第二地址的存储区域,并且数据交换步骤包括通过在第一地址的存储区域中重写数据来交换数据的步骤。
15.根据权利要求11或12所述的用于使用闪存存储器的存储系统的平均读写方法,其中如果每个第一逻辑组的总写入量达到预定值,则存储控制器执行第一判断步骤,将第一地址的存储区域设置为大于第二地址的存储区域,并且数据交换步骤包括通过在第一地址的存储区域中重写数据来交换数据的步骤。
16.根据权利要求11所述的用于使用闪存存储器的存储系统的平均读写方法,其中为闪存存储器模块提供自由区域,该自由区域的大小等于存储器控制器对于闪存存储器模块中的每个预定存储区域可以传输的传输数据,为该自由区域提供关于写入量的次数管理。
17.根据权利要求11所述的用于使用闪存存储器的存储系统的平均读写方法,其中为闪存存储器模块提供与闪存存储器模块中的预定存储区域大小相同的自由区域,为该自由区域提供关于写入量的次数管理。
18.根据权利要求11所述的用于使用闪存存储器的存储系统的平均读写方法,其中如果用新的闪存存储器模块替换闪存存储器模块,则将对其提供次数管理的前一闪存存储器模块中的每个预定存储区域的写入量设置为新的替换的闪存存储器模块中的每个预定存储区域的写入量。
19.一种用于使用闪存存储器的存储系统的平均读写方法,该存储系统包括闪存存储器模块,包括至少一个闪存存储器芯片和用于对属于该闪存存储器芯片的存储块的擦除次数进行平均的存储器控制器;以及存储控制器,用于把闪存存储器模块组合成第一逻辑组,把用于访问属于第一逻辑组的闪存存储器模块的第一地址转变成用于在存储控制器中指示第一地址的第二地址,以及把多个第一逻辑组组合成第二逻辑组,该方法包括允许存储控制器对于闪存存储器模块中的每个预定存储区域的写入量提供次数管理的步骤;允许存储控制器计算每个闪存存储器模块的平均擦除次数的步骤,其中通过将预定时间处的第一平均擦除次数加到第二平均擦除次数上来计算平均擦除次数,该第二平均擦除次数是将该预定时间以后的总写入量除以闪存存储器模块的容量而得到的,允许存储控制器判断平均擦除次数的最大值和最小值之间的差是否不小于预定值的第一判断步骤,其中在第一判断步骤,如果判定差不小于预定值,则该方法进一步包括允许存储控制器在具有擦除次数的最大差值的闪存存储器模块之中,在具有最大写入量的存储区域和具有最小写入量的存储区域之间交换数据,并且改变第一地址与第二地址之间的映射信息的步骤。
20.根据权利要求19所述的用于使用闪存存储器的存储系统的平均读写方法,进一步包括允许存储控制器用第二平均擦除次数替代第一平均擦除次数的步骤。
21.一种用于使用闪存存储器的存储系统的平均读写程序,该存储系统包括闪存存储器模块,包括至少一个闪存存储器芯片和用于对属于该闪存存储器芯片的存储块的擦除次数进行平均的存储器控制器;以及存储控制器,用于把多个闪存存储器模块组合成第一逻辑组,把用于访问属于第一逻辑组的闪存存储器模块的第一地址转变成用于在存储控制器中指示第一地址的第二地址,以及把多个第一逻辑组组合成第二逻辑组,该程序执行允许计算机对于闪存存储器模块中的每个预定存储区域的写入量提供次数管理的流程;允许计算机计算平均擦除次数的流程,该平均擦除次数是通过把经过预定时段每个闪存存储器模块的总写入量除以闪存存储器模块的容量而得到的;计算机判断平均擦除次数的最大值和最小值之间的差是否不小于预定值的第一判断的流程,其中在第一判断,如果差值不小于预定值,则该程序进一步包括用于允许计算机改变第一地址和第二地址之间的映射信息的流程。
22.根据权利要求21所述的用于使用闪存存储器的存储系统的平均读写程序,进一步包括允许计算机在数据交换步骤之后判断是否存在没有交换数据的多个闪存存储器模块的第二判断的流程,其中在第二判断流程,如果判断存在没有交换数据的多个闪存存储器模块,则该程序进一步包括允许计算机返回到第一判断流程的流程。
全文摘要
一种使用闪存存储器的存储系统,包括存储控制器和作为存储介质的多个闪存存储器模块。每个闪存存储器模块包括至少一个闪存存储器芯片,以及用于对属于该闪存存储器芯片的存储块的擦除次数进行平均的存储器控制器。存储控制器把多个闪存存储器模块组合成第一逻辑组,把用于访问属于第一逻辑组的闪存存储器模块的第一地址转变成用于在存储控制器中指示第一地址的第二地址,并且把多个第一逻辑组组合成第二逻辑组。
文档编号G06F3/06GK101046771SQ20061016870
公开日2007年10月3日 申请日期2006年12月19日 优先权日2006年3月29日
发明者田中胜也, 岛田健太郎 申请人:株式会社日立制作所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1