CN101645041A - 使用闪存的存储系统 - Google Patents

使用闪存的存储系统 Download PDF

Info

Publication number
CN101645041A
CN101645041A CN200910173130A CN200910173130A CN101645041A CN 101645041 A CN101645041 A CN 101645041A CN 200910173130 A CN200910173130 A CN 200910173130A CN 200910173130 A CN200910173130 A CN 200910173130A CN 101645041 A CN101645041 A CN 101645041A
Authority
CN
China
Prior art keywords
flash memories
data
logical groups
storage
address
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.)
Granted
Application number
CN200910173130A
Other languages
English (en)
Other versions
CN101645041B (zh
Inventor
田中胜也
岛田健太郎
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of CN101645041A publication Critical patent/CN101645041A/zh
Application granted granted Critical
Publication of CN101645041B publication Critical patent/CN101645041B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling
    • 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
    • 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/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system

Abstract

一种使用闪存存储器的存储系统,包括存储控制器和通过多条通道与存储控制器连接的、作为存储介质的多个闪存存储器模块,每个闪存存储器模块包括至少一个闪存存储器芯片。存储控制器将多个闪存存储器模块中连接在同一通道上的多个闪存存储器模块组合成第一逻辑组;把各第一逻辑组的多个闪存存储器模块相对应的第一地址转换成第二地址;把多个第一逻辑组组合成第二逻辑组;针对各闪存存储器模块,对属于闪存存储器芯片的块进行擦除次数的平均;根据各闪存存储器模块的数据写入量或属于各闪存存储器模块的闪存存储器的平均擦除次数,在属于第一逻辑组的多个闪存存储器模块之间交换数据,然后对应于该数据交换,改变第一地址与第二地址之间的映射。

Description

使用闪存的存储系统
本申请是2006年12月19日递交的、申请号为200610168702.6、发明名称为“使用闪存的存储系统及其平均读写方法和平均读写程序”的中国专利申请的分案申请。
技术领域
本发明涉及一种能够在多个闪存存储器模块之间进行平均读写的使用闪存存储器的存储系统。
背景技术
本申请请求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)的有效写入速度。
[公式1]
Figure G2009101731304D00141
[公式2]
Figure G2009101731304D00143
Figure G2009101731304D00144
Figure G2009101731304D00151
将平均读写组的容量设置为落入由公式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所示,通过把前一平均擦除次数值与平均处理次数相加可以获得闪存存储器模块中的闪存存储器的平均擦除次数,所述平均处理次数是通过把独立的预定时间段中模块的每个逻辑页面地址区域的单独的总写入量的和,除以模块的整个逻辑页面地址区域容量(模块容量)而得到的。
[公式3]
Figure G2009101731304D00181
在图12的管理表中,记录了两个平均擦除次数值。一个是最后一次运行平均读写流程时所记录的前一平均擦除次数(f00、f04),另一个是到目前为止的当前平均擦除次数(e00、e04)。从执行前一平均读写流程的上一次的时间直到现在,记录用于管理每个逻辑页面地址区域的写入次数的总写入量。通过公式3可容易地计算出当前平均擦除次数。通过管理每个独立的预定时间段中逻辑页面地址区域的总写入量,可以获得对于逻辑页面地址区域最近的访问频率。在该管理表中,用这样的方式来设置移动标志,即,在数据交换流程之前把该标志设置为“0”,在数据交换流程之后把该标志设置为“1”。在公式3中,在每个独立的时间段中对总写入量进行管理。假定没有独立的预定时间段,则可以由公式4来表示经过整个时间段的总写入量。公式3的结果或公式4的结果得到相同的平均擦除次数值。
[公式4]
Figure G2009101731304D00182
即使当诸如电源故障之类的故障出现时或当不在系统服务时间内时,也需要保持图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”的逻辑页面地址区域之间的数据交换流程(如图15到图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)。然后,完成闪存存储器模块替换。
根据模块替换之前旧模块的总写入量,判断在模块替换之后是否能够立即执行平均读写流程。要指出的是,除了伴随着数据重建的一些写入之外,新替换的模块在相关的逻辑页面地址区域的整个区域上没有总写入量,因此,不可能知道逻辑页面地址区域的每个预定区域的写入频率。可以使用模块替换之前旧模块的总写入量来获知逻辑页面地址区域的写入频率,以便执行平均读写流程。
本发明提供了一种在多个闪存存储器模块之间提供平均读写的方法,其适用于提高闪存存储器模块耐用性的目的,具体地说适用于利用具有多个闪存存储器模块的大容量闪存存储器的存储系统;一种为此的平均读写方法;以及用于运行上述方法的平均读写程序。
已经如上所述说明了根据本发明的实施例。然而,本发明的实施例不局限于那些说明,本领域技术人员可确定本发明的基本特征并且在不脱离权利要求的精神和范围的情况下可以对本发明进行各种改进和变化以使它适应于各种应用和条件。

Claims (11)

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.根据权利要求1所述的使用闪存存储器的存储系统,其中,
在针对所述多个闪存存储器模块的至少一个进行擦除次数的平均时,
所述存储控制器,
将作为进行擦除次数平均的对象的闪存存储器模块的数据在与作为进行擦除次数平均的对象的所述闪存存储器模块所属于的第一逻辑组不同的其他的多个第一逻辑组中的多个闪存存储器模块之间分配并存储,其中,所述其他的多个第一逻辑组与作为进行擦除次数平均的对象的所述闪存存储器模块所属的第一逻辑组属于同一个第二逻辑组;
对应于上述数据的分配存储,改变所述第一地址与所述第二地址之间的映射,
在重建上述分配并存储的数据时,
所述存储控制器,
使用已改变了映射的所述第一地址以及第二地址,从分配并存储有所述数据的、属于同一所述第二逻辑组的所述其他的多个第一逻辑组的所述多个闪存存储器模块中获取所述分配并存储的数据,使用该获取的数据进行所述数据的重建。
CN2009101731304A 2006-03-29 2006-12-19 使用闪存的存储系统 Active CN101645041B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2006092217 2006-03-29
JP2006092217A JP4863749B2 (ja) 2006-03-29 2006-03-29 フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム
JP2006-092217 2006-03-29

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CNB2006101687026A Division CN100555244C (zh) 2006-03-29 2006-12-19 使用闪存的存储系统及其平均读写方法

Publications (2)

Publication Number Publication Date
CN101645041A true CN101645041A (zh) 2010-02-10
CN101645041B CN101645041B (zh) 2013-03-13

Family

ID=38180259

Family Applications (2)

Application Number Title Priority Date Filing Date
CN2009101731304A Active CN101645041B (zh) 2006-03-29 2006-12-19 使用闪存的存储系统
CNB2006101687026A Active CN100555244C (zh) 2006-03-29 2006-12-19 使用闪存的存储系统及其平均读写方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CNB2006101687026A Active CN100555244C (zh) 2006-03-29 2006-12-19 使用闪存的存储系统及其平均读写方法

Country Status (4)

Country Link
US (6) US7409492B2 (zh)
EP (2) EP1840722B1 (zh)
JP (1) JP4863749B2 (zh)
CN (2) CN101645041B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103049216A (zh) * 2012-12-07 2013-04-17 记忆科技(深圳)有限公司 固态硬盘及其数据处理方法、系统
CN111684417A (zh) * 2018-02-05 2020-09-18 美光科技公司 用以存取异质存储器组件的存储器虚拟化

Families Citing this family (277)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4818812B2 (ja) * 2006-05-31 2011-11-16 株式会社日立製作所 フラッシュメモリストレージシステム
KR20050022798A (ko) * 2003-08-30 2005-03-08 주식회사 이즈텍 유전자 어휘 분류체계를 이용하여 바이오 칩을 분석하기위한 시스템 및 그 방법
US8081474B1 (en) 2007-12-18 2011-12-20 Google Inc. Embossed heat spreader
US8359187B2 (en) 2005-06-24 2013-01-22 Google Inc. Simulating a different number of memory circuit devices
US8438328B2 (en) 2008-02-21 2013-05-07 Google Inc. Emulation of abstracted DIMMs using abstracted DRAMs
US8335894B1 (en) 2008-07-25 2012-12-18 Google Inc. Configurable memory system with interface circuit
US8041881B2 (en) 2006-07-31 2011-10-18 Google Inc. Memory device with emulated characteristics
US8060774B2 (en) 2005-06-24 2011-11-15 Google Inc. Memory systems and memory modules
US8090897B2 (en) 2006-07-31 2012-01-03 Google Inc. System and method for simulating an aspect of a memory circuit
US8055833B2 (en) 2006-10-05 2011-11-08 Google Inc. System and method for increasing capacity, performance, and flexibility of flash storage
US20080028136A1 (en) 2006-07-31 2008-01-31 Schakel Keith R Method and apparatus for refresh management of memory modules
US8796830B1 (en) 2006-09-01 2014-08-05 Google Inc. Stackable low-profile lead frame package
US8244971B2 (en) 2006-07-31 2012-08-14 Google Inc. Memory circuit system and method
US9542352B2 (en) 2006-02-09 2017-01-10 Google Inc. System and method for reducing command scheduling constraints of memory circuits
US7590796B2 (en) * 2006-07-31 2009-09-15 Metaram, Inc. System and method for power management in memory systems
US7392338B2 (en) 2006-07-31 2008-06-24 Metaram, Inc. Interface circuit system and method for autonomously performing power management operations in conjunction with a plurality of memory circuits
US9171585B2 (en) 2005-06-24 2015-10-27 Google Inc. Configurable memory circuit system and method
US8327104B2 (en) 2006-07-31 2012-12-04 Google Inc. Adjusting the timing of signals associated with a memory system
US8111566B1 (en) 2007-11-16 2012-02-07 Google, Inc. Optimal channel design for memory devices for providing a high-speed memory interface
US8077535B2 (en) 2006-07-31 2011-12-13 Google Inc. Memory refresh apparatus and method
US8386722B1 (en) 2008-06-23 2013-02-26 Google Inc. Stacked DIMM memory interface
US10013371B2 (en) 2005-06-24 2018-07-03 Google Llc Configurable memory circuit system and method
US7386656B2 (en) 2006-07-31 2008-06-10 Metaram, Inc. Interface circuit system and method for performing power management operations in conjunction with only a portion of a memory circuit
US20080082763A1 (en) 2006-10-02 2008-04-03 Metaram, Inc. Apparatus and method for power management of memory circuits by a system or component thereof
US8397013B1 (en) 2006-10-05 2013-03-12 Google Inc. Hybrid memory module
US8089795B2 (en) 2006-02-09 2012-01-03 Google Inc. Memory module with memory stack and interface with enhanced capabilities
US8130560B1 (en) 2006-11-13 2012-03-06 Google Inc. Multi-rank partial width memory modules
US9507739B2 (en) 2005-06-24 2016-11-29 Google Inc. Configurable memory circuit system and method
WO2007028109A2 (en) 2005-09-02 2007-03-08 Metaram, Inc. Methods and apparatus of stacking drams
US9632929B2 (en) 2006-02-09 2017-04-25 Google Inc. Translating an address associated with a command communicated between a system and memory circuits
JP4842719B2 (ja) * 2006-06-28 2011-12-21 株式会社日立製作所 ストレージシステム及びそのデータ保護方法
US7724589B2 (en) 2006-07-31 2010-05-25 Google Inc. System and method for delaying a signal communicated from a system to at least one of a plurality of memory circuits
JP2008059387A (ja) * 2006-08-31 2008-03-13 Toshiba Corp 情報処理装置、外部記憶装置および制御方法
JP4372134B2 (ja) * 2006-09-29 2009-11-25 株式会社日立製作所 データ比較機能を有するストレージシステム
US7836380B2 (en) * 2006-10-31 2010-11-16 Intel Corporation Destination indication to aid in posted write buffer loading
US9153337B2 (en) * 2006-12-11 2015-10-06 Marvell World Trade Ltd. Fatigue management system and method for hybrid nonvolatile solid state memory system
KR100881669B1 (ko) * 2006-12-18 2009-02-06 삼성전자주식회사 비휘발성 데이터 저장장치의 정적 데이터 영역 검출 방법,마모도 평준화 방법 및 데이터 유닛 병합 방법과 그 장치
TW200828320A (en) * 2006-12-28 2008-07-01 Genesys Logic Inc Method for performing static wear leveling on flash memory
US8140737B2 (en) * 2007-01-30 2012-03-20 Skymedi Corporation Method for enhancing life cycle of memory
WO2008121559A1 (en) * 2007-03-30 2008-10-09 Rambus Incorporated System including hierarchical memory modules having different types of integrated circuit memory devices
US7913032B1 (en) * 2007-04-25 2011-03-22 Apple Inc. Initiating memory wear leveling
TWI385666B (zh) 2007-05-25 2013-02-11 Realtek Semiconductor Corp 適用於快閃記憶體之資料結構、及其資料寫入方法及資料讀取方法
JP2009003880A (ja) * 2007-06-25 2009-01-08 Toshiba Corp 不揮発性メモリの制御装置及びその制御方法及び記憶装置
US8209479B2 (en) 2007-07-18 2012-06-26 Google Inc. Memory circuit system and method
TWI372397B (en) * 2007-08-06 2012-09-11 Ind Tech Res Inst Method and system of defect management for storage medium
US8080874B1 (en) 2007-09-14 2011-12-20 Google Inc. Providing additional space between an integrated circuit and a circuit board for positioning a component therebetween
US8131912B2 (en) * 2007-09-27 2012-03-06 Kabushiki Kaisha Toshiba Memory system
US8245101B2 (en) 2007-12-27 2012-08-14 Sandisk Enterprise Ip Llc Patrol function used in flash storage controller to detect data errors
JP4461170B2 (ja) * 2007-12-28 2010-05-12 株式会社東芝 メモリシステム
US7925822B2 (en) * 2008-01-31 2011-04-12 Sandisk Il Ltd Erase count recovery
JP5010505B2 (ja) * 2008-03-01 2012-08-29 株式会社東芝 メモリシステム
US8074021B1 (en) 2008-03-27 2011-12-06 Netapp, Inc. Network storage system including non-volatile solid-state memory controlled by external data layout engine
US7945752B1 (en) * 2008-03-27 2011-05-17 Netapp, Inc. Method and apparatus for achieving consistent read latency from an array of solid-state storage devices
US8151048B1 (en) * 2008-03-31 2012-04-03 Emc Corporation Managing storage pool provisioning
KR101517185B1 (ko) 2008-04-15 2015-05-04 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법
US9501305B2 (en) * 2008-04-23 2016-11-22 Inernational Business Machines Corporation System for virtualisation monitoring
US20090271564A1 (en) * 2008-04-25 2009-10-29 Hitachi, Ltd. Storage system
EP2297742B1 (en) 2008-05-16 2013-07-24 Fusion-io, Inc. Apparatus, system, and method for detecting and replacing failed data storage
US8554983B2 (en) 2008-05-27 2013-10-08 Micron Technology, Inc. Devices and methods for operating a solid state drive
KR100974954B1 (ko) * 2008-06-26 2010-08-10 에스디씨마이크로 주식회사 플래시 메모리를 이용한 저장장치에서의 읽기 웨어 레벨링방법
JP2010015195A (ja) * 2008-06-30 2010-01-21 Toshiba Corp 記憶制御装置及び記憶制御方法
JP5242264B2 (ja) * 2008-07-07 2013-07-24 株式会社東芝 データ制御装置、ストレージシステムおよびプログラム
US20100017649A1 (en) * 2008-07-19 2010-01-21 Nanostar Corporation Data storage system with wear-leveling algorithm
KR101517761B1 (ko) * 2008-07-30 2015-05-06 시게이트 테크놀로지 엘엘씨 데이터 저장 위치 관리 방법 및 이를 데이터 저장 시스템
CN101655776B (zh) * 2008-08-18 2012-11-28 深圳市朗科科技股份有限公司 闪存卡管理系统及方法
US8091362B2 (en) 2008-08-20 2012-01-10 Woodward, Inc. Fuel injector sans support/stem
JP5489434B2 (ja) 2008-08-25 2014-05-14 株式会社日立製作所 フラッシュメモリ搭載ストレージ装置
JP2010055247A (ja) * 2008-08-27 2010-03-11 Hitachi Ltd ストレージシステム及び構成管理方法
US8386697B2 (en) * 2008-09-09 2013-02-26 Phison Electronics Corp. Memory managing method for non-volatile memory and controller using the same
CN101354681B (zh) * 2008-09-23 2010-12-01 美商威睿电通公司 存储器系统、非易失性存储器的磨损均衡方法及装置
CN101727403A (zh) * 2008-10-15 2010-06-09 深圳市朗科科技股份有限公司 数据存储系统、设备及方法
US8001318B1 (en) * 2008-10-28 2011-08-16 Netapp, Inc. Wear leveling for low-wear areas of low-latency random read memory
US8244995B2 (en) 2008-10-30 2012-08-14 Dell Products L.P. System and method for hierarchical wear leveling in storage devices
US9208108B2 (en) 2008-12-19 2015-12-08 Nvidia Corporation Method and system for improved flash controller commands selection
US8694750B2 (en) 2008-12-19 2014-04-08 Nvidia Corporation Method and system for data structure management
US8412880B2 (en) * 2009-01-08 2013-04-02 Micron Technology, Inc. Memory system controller to manage wear leveling across a plurality of storage nodes
JP4776703B2 (ja) 2009-01-23 2011-09-21 株式会社東芝 半導体記憶装置を用いたraidシステム及びその制御方法
JP2010198441A (ja) * 2009-02-26 2010-09-09 Toshiba Corp ミラーリングシステム
US20100250826A1 (en) * 2009-03-24 2010-09-30 Micron Technology, Inc. Memory systems with a plurality of structures and methods for operating the same
US20110246701A1 (en) * 2009-03-24 2011-10-06 Hitachi, Ltd. Storage apparatus and its data control method
KR101586047B1 (ko) 2009-03-25 2016-01-18 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
US8316173B2 (en) 2009-04-08 2012-11-20 International Business Machines Corporation System, method, and computer program product for analyzing monitor data information from a plurality of memory devices having finite endurance and/or retention
US8661187B2 (en) 2009-04-08 2014-02-25 International Business Machines Corporation System, method, and computer program product for skewing expected wearout times of memory devices
US8051241B2 (en) 2009-05-07 2011-11-01 Seagate Technology Llc Wear leveling technique for storage devices
US8281227B2 (en) 2009-05-18 2012-10-02 Fusion-10, Inc. Apparatus, system, and method to increase data integrity in a redundant storage system
US8307258B2 (en) 2009-05-18 2012-11-06 Fusion-10, Inc Apparatus, system, and method for reconfiguring an array to operate with less storage elements
WO2010134300A1 (ja) * 2009-05-21 2010-11-25 パナソニック株式会社 メモリコントローラ、不揮発性記憶装置、アクセス装置、不揮発性記憶システム、データ書き込み方法、および、プログラム
US8375162B2 (en) * 2009-06-03 2013-02-12 Ocz Technology Group Inc. Method and apparatus for reducing write cycles in NAND-based flash memory devices
DE202010017690U1 (de) 2009-06-09 2012-05-29 Google, Inc. Programmierung von Dimm-Abschlusswiderstandswerten
US8639877B2 (en) * 2009-06-30 2014-01-28 International Business Machines Corporation Wear leveling of solid state disks distributed in a plurality of redundant array of independent disk ranks
EP2270672A1 (en) * 2009-07-02 2011-01-05 Giga-Byte Technology Co., Ltd. Flash memory control device
EP2413245B1 (en) * 2009-07-22 2017-08-23 Hitachi, Ltd. Storage system provided with a plurality of flash packages
WO2011010348A1 (ja) * 2009-07-23 2011-01-27 株式会社日立製作所 フラッシュメモリ装置
US7856528B1 (en) 2009-08-11 2010-12-21 Texas Memory Systems, Inc. Method and apparatus for protecting data using variable size page stripes in a FLASH-based storage system
US8495423B2 (en) * 2009-08-11 2013-07-23 International Business Machines Corporation Flash-based memory system with robust backup and restart features and removable modules
US8930622B2 (en) 2009-08-11 2015-01-06 International Business Machines Corporation Multi-level data protection for flash memory system
US7941696B2 (en) * 2009-08-11 2011-05-10 Texas Memory Systems, Inc. Flash-based memory system with static or variable length page stripes including data protection information and auxiliary protection stripes
US7818525B1 (en) 2009-08-12 2010-10-19 Texas Memory Systems, Inc. Efficient reduction of read disturb errors in NAND FLASH memory
US8189379B2 (en) 2009-08-12 2012-05-29 Texas Memory Systems, Inc. Reduction of read disturb errors in NAND FLASH memory
US20110047316A1 (en) * 2009-08-19 2011-02-24 Dell Products L.P. Solid state memory device power optimization
US8359431B2 (en) * 2009-08-20 2013-01-22 Hitachi, Ltd. Storage subsystem and its data processing method for reducing the amount of data to be stored in a semiconductor nonvolatile memory
US8977894B2 (en) 2009-08-21 2015-03-10 International Business Machines Corporation Operating a data storage system
US8464106B2 (en) * 2009-08-24 2013-06-11 Ocz Technology Group, Inc. Computer system with backup function and method therefor
US8234520B2 (en) 2009-09-16 2012-07-31 International Business Machines Corporation Wear leveling of solid state disks based on usage information of data and parity received from a raid controller
US8266501B2 (en) * 2009-09-29 2012-09-11 Micron Technology, Inc. Stripe based memory operation
JP5336993B2 (ja) * 2009-10-14 2013-11-06 株式会社日立国際電気 映像記録装置及び映像記録方法
US20110231713A1 (en) * 2009-11-04 2011-09-22 Hitachi, Ltd. Flash memory module
TWI436369B (zh) 2009-11-13 2014-05-01 Silicon Motion Inc 記憶裝置之使用壽命量測方法及系統內編程碼置換方法、及其資料儲存系統
JP4912456B2 (ja) * 2009-12-17 2012-04-11 株式会社日立製作所 ストレージ装置及びその制御方法
US20110161553A1 (en) * 2009-12-30 2011-06-30 Nvidia Corporation Memory device wear-leveling techniques
US9594675B2 (en) 2009-12-31 2017-03-14 Nvidia Corporation Virtualization of chip enables
JP5331018B2 (ja) * 2010-01-22 2013-10-30 株式会社日立製作所 ソリッド・ステート・ドライブ装置およびミラー構成再構成方法
US20110215007A1 (en) * 2010-02-19 2011-09-08 Kenneth Charles Wurtzel Container or molded package with buffering capacity
US8365041B2 (en) 2010-03-17 2013-01-29 Sandisk Enterprise Ip Llc MLC self-raid flash data protection scheme
JP5385835B2 (ja) * 2010-03-29 2014-01-08 パナソニック株式会社 データ記録装置
US8621141B2 (en) 2010-04-01 2013-12-31 Intel Corporations Method and system for wear leveling in a solid state drive
WO2011128928A1 (en) * 2010-04-12 2011-10-20 Hitachi, Ltd. Storage device
US8700841B2 (en) * 2010-04-19 2014-04-15 International Business Machines Corporation Sub-LUN input/output profiling for SSD devices
JP5100789B2 (ja) * 2010-05-28 2012-12-19 株式会社東芝 半導体記憶装置および半導体記憶装置の制御方法
JP5521794B2 (ja) * 2010-06-03 2014-06-18 株式会社バッファロー 記憶装置及びその制御プログラム
CN102280126B (zh) * 2010-06-13 2015-11-25 宇瞻科技股份有限公司 可扩充存储器单元的存储装置
KR20110138707A (ko) * 2010-06-21 2011-12-28 삼성전자주식회사 데이터 저장 장치 및 그것의 쓰기 방법
US8868852B2 (en) * 2010-07-07 2014-10-21 Marvell World Trade Ltd. Interface management control systems and methods for non-volatile semiconductor memory
US9141538B2 (en) 2010-07-07 2015-09-22 Marvell World Trade Ltd. Apparatus and method for generating descriptors to transfer data to and from non-volatile semiconductor memory of a storage drive
US9135168B2 (en) 2010-07-07 2015-09-15 Marvell World Trade Ltd. Apparatus and method for generating descriptors to reaccess a non-volatile semiconductor memory of a storage drive due to an error
US9465728B2 (en) 2010-11-03 2016-10-11 Nvidia Corporation Memory controller adaptable to multiple memory devices
JP5641900B2 (ja) * 2010-11-29 2014-12-17 キヤノン株式会社 管理装置及びその制御方法、並びにプログラム
US8601313B1 (en) * 2010-12-13 2013-12-03 Western Digital Technologies, Inc. System and method for a data reliability scheme in a solid state memory
US8615681B2 (en) * 2010-12-14 2013-12-24 Western Digital Technologies, Inc. System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss
US8601311B2 (en) 2010-12-14 2013-12-03 Western Digital Technologies, Inc. System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory
KR101180406B1 (ko) * 2011-01-28 2012-09-10 에스케이하이닉스 주식회사 비휘발성 메모리 시스템 및 블럭 관리 방법
WO2012106362A2 (en) 2011-01-31 2012-08-09 Fusion-Io, Inc. Apparatus, system, and method for managing eviction of data
US8700950B1 (en) 2011-02-11 2014-04-15 Western Digital Technologies, Inc. System and method for data error recovery in a solid state subsystem
JP5664347B2 (ja) * 2011-03-04 2015-02-04 ソニー株式会社 仮想メモリシステム、仮想メモリの制御方法、およびプログラム
US8621328B2 (en) * 2011-03-04 2013-12-31 International Business Machines Corporation Wear-focusing of non-volatile memories for improved endurance
US8700951B1 (en) 2011-03-09 2014-04-15 Western Digital Technologies, Inc. System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata
US8862804B2 (en) 2011-04-29 2014-10-14 Western Digital Technologies, Inc. System and method for improved parity determination within a data redundancy scheme in a solid state memory
KR20120128978A (ko) * 2011-05-18 2012-11-28 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 관리 방법
US8909982B2 (en) 2011-06-19 2014-12-09 Sandisk Enterprise Ip Llc System and method for detecting copyback programming problems
US8910020B2 (en) 2011-06-19 2014-12-09 Sandisk Enterprise Ip Llc Intelligent bit recovery for flash memory
US9177609B2 (en) 2011-06-30 2015-11-03 Sandisk Technologies Inc. Smart bridge for memory core
US8626991B1 (en) * 2011-06-30 2014-01-07 Emc Corporation Multi-LUN SSD optimization system and method
US9298606B2 (en) 2011-09-30 2016-03-29 Intel Corporation Statistical wear leveling for non-volatile system memory
EP2662774A4 (en) * 2011-10-27 2014-01-08 Huawei Tech Co Ltd METHOD FOR CONTROLLING BUFFER MAPPING AND BUFFER SYSTEM
US9058289B2 (en) 2011-11-07 2015-06-16 Sandisk Enterprise Ip Llc Soft information generation for memory systems
US8924815B2 (en) 2011-11-18 2014-12-30 Sandisk Enterprise Ip Llc Systems, methods and devices for decoding codewords having multiple parity segments
US8954822B2 (en) 2011-11-18 2015-02-10 Sandisk Enterprise Ip Llc Data encoder and decoder using memory-specific parity-check matrix
US9048876B2 (en) 2011-11-18 2015-06-02 Sandisk Enterprise Ip Llc Systems, methods and devices for multi-tiered error correction
US9208070B2 (en) * 2011-12-20 2015-12-08 Sandisk Technologies Inc. Wear leveling of multiple memory devices
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
US9405478B2 (en) 2012-02-08 2016-08-02 Hitachi, Ltd. Storage apparatus provided with a plurality of nonvolatile semiconductor storage media and storage control method
CN102662695B (zh) * 2012-03-26 2016-03-30 华为终端有限公司 一种系统启动的方法及装置
TWI495998B (zh) * 2012-08-01 2015-08-11 Phison Electronics Corp 資料管理方法、記憶體控制器與記憶體儲存裝置
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US20140052897A1 (en) * 2012-08-17 2014-02-20 Seagate Technology Llc Dynamic formation of garbage collection units in a memory
US20150186056A1 (en) * 2012-09-07 2015-07-02 Hitachi, Ltd. Storage device system
US9013922B2 (en) * 2012-09-20 2015-04-21 Silicon Motion, Inc. Data storage device and flash memory control method thereof
JP5949408B2 (ja) * 2012-10-02 2016-07-06 富士通株式会社 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
US8972826B2 (en) 2012-10-24 2015-03-03 Western Digital Technologies, Inc. Adaptive error correction codes for data storage systems
JP2014098978A (ja) 2012-11-13 2014-05-29 Sony Corp メモリ制御装置、メモリシステム、情報処理システムおよびメモリ制御方法
US9021339B2 (en) 2012-11-29 2015-04-28 Western Digital Technologies, Inc. Data reliability schemes for data storage systems
US9059736B2 (en) 2012-12-03 2015-06-16 Western Digital Technologies, Inc. Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme
US9214963B1 (en) 2012-12-21 2015-12-15 Western Digital Technologies, Inc. Method and system for monitoring data channel to enable use of dynamically adjustable LDPC coding parameters in a data storage system
US9501398B2 (en) 2012-12-26 2016-11-22 Sandisk Technologies Llc Persistent storage device with NVRAM for staging writes
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9239751B1 (en) 2012-12-27 2016-01-19 Sandisk Enterprise Ip Llc Compressing data from multiple reads for error control management in memory systems
US9003264B1 (en) 2012-12-31 2015-04-07 Sandisk Enterprise Ip Llc Systems, methods, and devices for multi-dimensional flash RAID data protection
US9454420B1 (en) 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9383924B1 (en) * 2013-02-27 2016-07-05 Netapp, Inc. Storage space reclamation on volumes with thin provisioning capability
WO2014141411A1 (ja) 2013-03-13 2014-09-18 株式会社日立製作所 ストレージシステムおよびストレージシステム制御方法
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9009576B1 (en) 2013-03-15 2015-04-14 Sandisk Enterprise Ip Llc Adaptive LLR based on syndrome weight
US9136877B1 (en) 2013-03-15 2015-09-15 Sandisk Enterprise Ip Llc Syndrome layered decoding for LDPC codes
US9236886B1 (en) 2013-03-15 2016-01-12 Sandisk Enterprise Ip Llc Universal and reconfigurable QC-LDPC encoder
US9244763B1 (en) 2013-03-15 2016-01-26 Sandisk Enterprise Ip Llc System and method for updating a reading threshold voltage based on symbol transition information
US9092350B1 (en) 2013-03-15 2015-07-28 Sandisk Enterprise Ip Llc Detection and handling of unbalanced errors in interleaved codewords
US9367246B2 (en) 2013-03-15 2016-06-14 Sandisk Technologies Inc. Performance optimization of data transfer for soft information generation
TWI570738B (zh) * 2013-03-29 2017-02-11 萬國商業機器公司 具有使用歷程記錄的主記憶體模組以及此主記憶體模組於電腦系統之應用
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9170941B2 (en) 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US9946495B2 (en) 2013-04-25 2018-04-17 Microsoft Technology Licensing, Llc Dirty data management for hybrid drives
US9159437B2 (en) 2013-06-11 2015-10-13 Sandisk Enterprise IP LLC. Device and method for resolving an LM flag issue
CN103688248B (zh) * 2013-06-29 2015-09-30 华为技术有限公司 一种存储阵列的管理方法、装置和控制器
WO2015008375A1 (ja) 2013-07-19 2015-01-22 株式会社日立製作所 ストレージ装置および記憶制御方法
US9384126B1 (en) 2013-07-25 2016-07-05 Sandisk Technologies Inc. Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9043517B1 (en) 2013-07-25 2015-05-26 Sandisk Enterprise Ip Llc Multipass programming in buffers implemented in non-volatile data storage systems
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US9235509B1 (en) 2013-08-26 2016-01-12 Sandisk Enterprise Ip Llc Write amplification reduction by delaying read access to data written during garbage collection
US9519577B2 (en) 2013-09-03 2016-12-13 Sandisk Technologies Llc Method and system for migrating data between flash memory devices
US9442670B2 (en) 2013-09-03 2016-09-13 Sandisk Technologies Llc Method and system for rebalancing data stored in flash memory devices
US9158349B2 (en) 2013-10-04 2015-10-13 Sandisk Enterprise Ip Llc System and method for heat dissipation
US9323637B2 (en) 2013-10-07 2016-04-26 Sandisk Enterprise Ip Llc Power sequencing and data hardening architecture
US9298608B2 (en) 2013-10-18 2016-03-29 Sandisk Enterprise Ip Llc Biasing for wear leveling in storage systems
US10019352B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for adaptive reserve storage
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US9436831B2 (en) 2013-10-30 2016-09-06 Sandisk Technologies Llc Secure erase in a memory device
US9263156B2 (en) 2013-11-07 2016-02-16 Sandisk Enterprise Ip Llc System and method for adjusting trip points within a storage device
US9244785B2 (en) 2013-11-13 2016-01-26 Sandisk Enterprise Ip Llc Simulated power failure and data hardening
JP5673980B2 (ja) * 2013-11-13 2015-02-18 国立大学法人 千葉大学 記録装置
US9229640B2 (en) 2013-11-15 2016-01-05 Microsoft Technology Licensing, Llc Inexpensive solid-state storage by throttling write speed in accordance with empirically derived write policy table
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9612773B2 (en) * 2013-11-21 2017-04-04 Samsung Electronics Co., Ltd. User device having a host flash translation layer (FTL), a method for transferring an erase count thereof, a method for transferring reprogram information thereof, and a method for transferring a page offset of an open block thereof
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9280429B2 (en) 2013-11-27 2016-03-08 Sandisk Enterprise Ip Llc Power fail latching based on monitoring multiple power supply voltages in a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9122636B2 (en) 2013-11-27 2015-09-01 Sandisk Enterprise Ip Llc Hard power fail architecture
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9250676B2 (en) 2013-11-29 2016-02-02 Sandisk Enterprise Ip Llc Power failure architecture and verification
US9092370B2 (en) 2013-12-03 2015-07-28 Sandisk Enterprise Ip Llc Power failure tolerant cryptographic erase
US9235245B2 (en) 2013-12-04 2016-01-12 Sandisk Enterprise Ip Llc Startup performance and power isolation
JP5768118B2 (ja) * 2013-12-11 2015-08-26 株式会社日立製作所 複数のフラッシュパッケージを有するストレージシステム
JPWO2015087651A1 (ja) * 2013-12-12 2017-03-16 株式会社フィックスターズ メモリの使用可能期間を延ばすための装置、プログラム、記録媒体および方法
US9129665B2 (en) 2013-12-17 2015-09-08 Sandisk Enterprise Ip Llc Dynamic brownout adjustment in a storage device
US9549457B2 (en) 2014-02-12 2017-01-17 Sandisk Technologies Llc System and method for redirecting airflow across an electronic assembly
US9497889B2 (en) 2014-02-27 2016-11-15 Sandisk Technologies Llc Heat dissipation for substrate assemblies
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9348377B2 (en) 2014-03-14 2016-05-24 Sandisk Enterprise Ip Llc Thermal isolation techniques
US9485851B2 (en) 2014-03-14 2016-11-01 Sandisk Technologies Llc Thermal tube assembly structures
US9519319B2 (en) 2014-03-14 2016-12-13 Sandisk Technologies Llc Self-supporting thermal tube structure for electronic assemblies
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US9390814B2 (en) 2014-03-19 2016-07-12 Sandisk Technologies Llc Fault detection and prediction for data storage elements
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9390021B2 (en) 2014-03-31 2016-07-12 Sandisk Technologies Llc Efficient cache utilization in a tiered data structure
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
US9471428B2 (en) 2014-05-06 2016-10-18 International Business Machines Corporation Using spare capacity in solid state drives
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US9645749B2 (en) 2014-05-30 2017-05-09 Sandisk Technologies Llc Method and system for recharacterizing the storage density of a memory device or a portion thereof
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US9070481B1 (en) 2014-05-30 2015-06-30 Sandisk Technologies Inc. Internal current measurement for age measurements
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US9093160B1 (en) 2014-05-30 2015-07-28 Sandisk Technologies Inc. Methods and systems for staggered memory operations
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US8891303B1 (en) 2014-05-30 2014-11-18 Sandisk Technologies Inc. Method and system for dynamic word line based configuration of a three-dimensional memory device
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US9471451B2 (en) 2014-06-18 2016-10-18 International Business Machines Corporation Implementing enhanced wear leveling in 3D flash memories
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
JP6331773B2 (ja) 2014-06-30 2018-05-30 富士通株式会社 ストレージ制御装置、およびストレージ制御プログラム
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
US10552085B1 (en) 2014-09-09 2020-02-04 Radian Memory Systems, Inc. Techniques for directed data migration
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US10127157B2 (en) * 2014-10-06 2018-11-13 SK Hynix Inc. Sizing a cache while taking into account a total bytes written requirement
TWI539282B (zh) * 2014-10-13 2016-06-21 慧榮科技股份有限公司 非揮發性儲存裝置與控制器
KR102211868B1 (ko) * 2014-12-15 2021-02-04 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US11042300B2 (en) 2015-03-31 2021-06-22 Toshiba Memory Corporation Command load balancing for NVME dual port operations
US9946471B1 (en) * 2015-03-31 2018-04-17 EMC IP Holding Company LLC RAID groups based on endurance sets
JP5945040B2 (ja) * 2015-06-19 2016-07-05 株式会社日立製作所 複数のフラッシュパッケージを有するストレージシステム
CN105260320B (zh) * 2015-10-12 2020-06-16 珠海格力电器股份有限公司 用于flash存储器的数据处理方法和装置
TWI547801B (zh) * 2015-10-22 2016-09-01 Accelstor Inc 資料儲存系統及方法
CN105353977B (zh) * 2015-10-22 2018-11-23 捷鼎创新股份有限公司 数据储存系统及方法
US10146465B1 (en) * 2015-12-18 2018-12-04 EMC IP Holding Company LLC Automated provisioning and de-provisioning software defined storage systems
US10222984B1 (en) * 2015-12-31 2019-03-05 EMC IP Holding Company LLC Managing multi-granularity flash translation layers in solid state drives
TWI591635B (zh) * 2016-02-05 2017-07-11 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置
US9959058B1 (en) 2016-03-31 2018-05-01 EMC IP Holding Company LLC Utilizing flash optimized layouts which minimize wear of internal flash memory of solid state drives
JP6138318B2 (ja) * 2016-05-26 2017-05-31 株式会社日立製作所 複数のフラッシュパッケージを有するストレージシステム
CN107025066A (zh) * 2016-09-14 2017-08-08 阿里巴巴集团控股有限公司 在基于闪存的存储介质中写入存储数据的方法和装置
CN108205423B (zh) * 2016-12-20 2020-06-02 华为技术有限公司 一种物理硬盘磨损均衡方法、装置及系统
US10552056B2 (en) 2016-12-28 2020-02-04 EMC IP Holding Company LLC Data storage system tiering accounting for limited write endurance
US10860733B1 (en) * 2017-04-20 2020-12-08 EMC IP Holding Company, LLC Shredding system and method
CN108089994B (zh) * 2018-01-04 2021-06-01 威盛电子股份有限公司 存储装置以及数据保存方法
CN108563397B (zh) * 2018-01-04 2021-08-24 威盛电子股份有限公司 存储装置以及数据保存方法
US10782908B2 (en) 2018-02-05 2020-09-22 Micron Technology, Inc. Predictive data orchestration in multi-tier memory systems
US10884889B2 (en) 2018-06-22 2021-01-05 Seagate Technology Llc Allocating part of a raid stripe to repair a second raid stripe
KR102545189B1 (ko) 2018-09-07 2023-06-19 삼성전자주식회사 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법
KR20200068941A (ko) * 2018-12-06 2020-06-16 에스케이하이닉스 주식회사 메모리 시스템 내 저장된 데이터를 제어하는 방법 및 장치
KR20200085515A (ko) * 2019-01-07 2020-07-15 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법, 이를 위한 컨트롤러
US10852949B2 (en) 2019-04-15 2020-12-01 Micron Technology, Inc. Predictive data pre-fetching in a data storage device
CN112764665A (zh) * 2019-10-21 2021-05-07 伊姆西Ip控股有限责任公司 存储管理的方法、设备和计算机程序产品
US11442631B2 (en) * 2019-12-26 2022-09-13 Micron Technology, Inc. Memory operations with consideration for wear leveling

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3581132A (en) * 1969-04-03 1971-05-25 Nikolaus Laing Rotating electrical machine
US6230233B1 (en) * 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
JP3507132B2 (ja) * 1994-06-29 2004-03-15 株式会社日立製作所 フラッシュメモリを用いた記憶装置およびその記憶制御方法
DE19540915A1 (de) * 1994-11-10 1996-05-15 Raymond Engineering Redundante Anordnung von Festkörper-Speicherbausteinen
JPH09218754A (ja) * 1996-02-13 1997-08-19 Ekushingu:Kk データ記憶システム
CN1249585C (zh) * 1997-12-16 2006-04-05 Tdk株式会社 闪速存储器系统
JP2000207137A (ja) * 1999-01-12 2000-07-28 Kowa Co 情報記憶装置
US7966462B2 (en) * 1999-08-04 2011-06-21 Super Talent Electronics, Inc. Multi-channel flash module with plane-interleaved sequential ECC writes and background recycling to restricted-write flash chips
US7934074B2 (en) * 1999-08-04 2011-04-26 Super Talent Electronics Flash module with plane-interleaved sequential writes to restricted-write flash chips
US7457897B1 (en) * 2004-03-17 2008-11-25 Suoer Talent Electronics, Inc. PCI express-compatible controller and interface for flash memory
US8341332B2 (en) * 2003-12-02 2012-12-25 Super Talent Electronics, Inc. Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices
US8037234B2 (en) * 2003-12-02 2011-10-11 Super Talent Electronics, Inc. Command queuing smart storage transfer manager for striping data to raw-NAND flash modules
US8266367B2 (en) * 2003-12-02 2012-09-11 Super Talent Electronics, Inc. Multi-level striping and truncation channel-equalization for flash-memory system
JP2004021811A (ja) * 2002-06-19 2004-01-22 Hitachi Ltd 不揮発メモリを使用したディスク制御装置
US6941412B2 (en) 2002-08-29 2005-09-06 Sandisk Corporation Symbol frequency leveling in a storage system
EP1556868B1 (en) * 2002-10-28 2007-09-05 SanDisk Corporation Automated wear leveling in non-volatile storage systems
US20090204872A1 (en) * 2003-12-02 2009-08-13 Super Talent Electronics Inc. Command Queuing Smart Storage Transfer Manager for Striping Data to Raw-NAND Flash Modules
US8176238B2 (en) * 2003-12-02 2012-05-08 Super Talent Electronics, Inc. Command queuing smart storage transfer manager for striping data to raw-NAND flash modules
US7395404B2 (en) * 2004-12-16 2008-07-01 Sandisk Corporation Cluster auto-alignment for storing addressable data packets in a non-volatile memory array
US7315917B2 (en) * 2005-01-20 2008-01-01 Sandisk Corporation Scheduling of housekeeping operations in flash memory systems
US20060161724A1 (en) * 2005-01-20 2006-07-20 Bennett Alan D Scheduling of housekeeping operations in flash memory systems

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103049216A (zh) * 2012-12-07 2013-04-17 记忆科技(深圳)有限公司 固态硬盘及其数据处理方法、系统
CN103049216B (zh) * 2012-12-07 2015-11-25 记忆科技(深圳)有限公司 固态硬盘及其数据处理方法、系统
CN111684417A (zh) * 2018-02-05 2020-09-18 美光科技公司 用以存取异质存储器组件的存储器虚拟化
CN111684417B (zh) * 2018-02-05 2023-11-24 美光科技公司 用以存取异质存储器组件的存储器虚拟化

Also Published As

Publication number Publication date
US8429340B2 (en) 2013-04-23
US20140325127A1 (en) 2014-10-30
CN101046771A (zh) 2007-10-03
US20110231600A1 (en) 2011-09-22
US7734865B2 (en) 2010-06-08
EP1840722B1 (en) 2011-07-27
US20080276038A1 (en) 2008-11-06
CN100555244C (zh) 2009-10-28
JP4863749B2 (ja) 2012-01-25
US20100205359A1 (en) 2010-08-12
EP2365428A1 (en) 2011-09-14
US20130232297A1 (en) 2013-09-05
EP1840722A2 (en) 2007-10-03
US9286210B2 (en) 2016-03-15
JP2007265265A (ja) 2007-10-11
CN101645041B (zh) 2013-03-13
EP2365428B1 (en) 2013-05-08
US8788745B2 (en) 2014-07-22
US7409492B2 (en) 2008-08-05
US20070233931A1 (en) 2007-10-04
US7970986B2 (en) 2011-06-28
EP1840722A3 (en) 2009-03-04

Similar Documents

Publication Publication Date Title
CN100555244C (zh) 使用闪存的存储系统及其平均读写方法
US7743212B2 (en) Storage system and capacity allocation method therefor
CN102317925B (zh) 存储器系统和控制存储器系统的方法
US8156279B2 (en) Storage device and deduplication method
CN101673245B (zh) 包括存储器管理装置的信息处理装置和存储器管理方法
US9251063B2 (en) Storage system including a plurality of flash memory devices
CN102779096B (zh) 一种基于页块面三维的闪存地址映射方法
CN104115109A (zh) 具有多个非易失性半导体存储单元的存储装置及其用于在具有较高残留寿命长度的存储单元中放置热数据而在具有较低残留寿命长度的存储单元中放置冷数据的控制方法
JPH07295763A (ja) ディスク・アレイ装置およびデータの格納方法
JPH11288387A (ja) ディスクキャッシュ装置
CN110347338A (zh) 混合内存数据交换处理方法、系统及可读存储介质
WO2017107162A1 (zh) 一种异构混合内存组件、系统及存储方法
JP2003131818A (ja) クラスタ構成ストレージにおけるクラスタ間raid構成
CN102314396B (zh) 区块为基础闪存的字节存取的方法与装置
JP3785127B2 (ja) ディスクアレイ制御装置及びディスクアレイ制御装置におけるデータ書き込み方法
CN116880757A (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