CN102419735B - 存储器*** - Google Patents

存储器*** Download PDF

Info

Publication number
CN102419735B
CN102419735B CN201110256131.2A CN201110256131A CN102419735B CN 102419735 B CN102419735 B CN 102419735B CN 201110256131 A CN201110256131 A CN 201110256131A CN 102419735 B CN102419735 B CN 102419735B
Authority
CN
China
Prior art keywords
block
memory block
data
valid data
memory
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.)
Active
Application number
CN201110256131.2A
Other languages
English (en)
Other versions
CN102419735A (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.)
Japanese Businessman Panjaya Co ltd
Kioxia Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Publication of CN102419735A publication Critical patent/CN102419735A/zh
Application granted granted Critical
Publication of CN102419735B publication Critical patent/CN102419735B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/1016Performance improvement
    • 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/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • 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/7201Logical to physical mapping or translation of blocks or pages
    • 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/7205Cleaning, compaction, garbage collection, erase control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

本发明涉及存储器***。根据一个实施例,一种存储器***包括:非易失性半导体存储器、块管理单元和转录单元。所述半导体存储器包括在第一模式和第二模式下都可写入数据的多个块。所述块管理单元将在其中未存储有效数据的块管理作为空闲块。当通过所述块管理单元管理的空闲块的数目小于或等于预定阈值时,所述转录单元选择在其中存储有效数据的一个或多个使用块作为转录源块,并且在第二模式下将在所述转录源块中存储的有效数据转录到空闲块。

Description

存储器***
相关申请的交叉引用
本申请基于2010年9月24日递交的日本专利申请2010-214221并要求其优先权的利益,其全部内容以引用方式并入本文中。
技术领域
概括地说,本文中描述的实施例涉及存储器***。
背景技术
作为扩展NAND闪速存储器的容量的技术,存在多级记录(MLC:多级基元(Multi-Level Cell))方法。在该公开中,MLC方法的闪速存储器称为MLC闪速存储器,并且二值记录(SLC:单级基元(Single-LevelCell))方法的闪速存储器称为SLC闪速存储器。在SLC方法(以下称为SLC模式)中,在作为记录单位的一个基元中记录一个比特(bit)。另一方面,在MLC方法(以下称为MLC模式)中,可在一个基元中记录N个比特(N>1)。因此,例如,在2比特记录的MLC闪速存储器中,一个基元可代表4个值,而在3比特记录的MLC闪速存储器中,一个基元可代表8个值。
与在某一存储区中可存储相对少量信息的闪速存储器相比,可在相同存储区中存储相对大量信息的这样的闪速存储器可具有更大的每体积记录容量,并且具有可降低每存储容量的成本的优点。另一方面,在某一存储区中可存储相对少量信息的闪速存储器具有用于读和写的存取时间短的优点,并且该存储器与在相同存储区中可存储相对大量信息的闪速存储器相比具有高可靠性。
发明内容
实施例的目的是根据情况获得SLC闪速存储器的优点和MLC闪速存储器的优点。
概括而言,根据一个实施例,一种存储器***包括:非易失性半导体存储器、第一存储单元、第二存储单元、第三存储单元、第一接收单元、获取(acquisition)单元、第一写入单元、选择单元、第二写入单元、管理信息更新单元、第二接收单元、以及读取单元。所述非易失性半导体存储器包括多个第一存储区,并且能够具有:一个或多个第二存储区,其被包括在所述多个第一存储区中,并且在其中没有存储有效数据;多个第三存储区,其被包括在所述多个第一存储区中,并是通过在其中复制和存储从主机接收的数据而获得的;以及多个第四存储区,其是通过在其中复制和存储在所述第三存储区中存储的或在所述第四存储区中存储的数据而获得的。有效数据是存储在与逻辑地址相关联的物理地址的数据。所述逻辑地址是从主机指定的地址。所述物理地址指示在半导体存储器的存储区中的数据存储位置。所述第一存储单元在其中存储第一管理信息,所述第一管理信息指示所述多个第一存储区中的哪个区域是所述第二存储区。所述第二存储单元在其中存储第二管理信息,所述第二管理信息指示所述多个第一存储区中的哪些区域是所述第三存储区。所述第三存储单元在其中存储第三管理信息,所述第三管理信息指示所述多个第一存储区中的哪些区域是所述第四存储区。所述第一接收单元接收写入请求数据,所述写入请求数据是通过所述主机请求写入的数据。所述获取单元基于所述第一管理信息从一个或多个第二存储区获取一个第二存储区。所述第一写入单元在第一模式下将所述写入请求数据写入到通过所述获取单元获取的所述第二存储区。当所述第二存储区的数目小于或等于第一阈值时,所述选择单元基于所述第二管理信息从所述多个第三存储区选择一个或多个存储区,或者基于所述第三管理信息从所述多个第四存储区选择一个或多个存储区。所述第二写入单元在第二模式下将所述选择单元所选择的存储区中存储的有效数据写入通过所述获取单元获取的所述第二存储区。当所述第二写入单元写入所述有效数据时,所述管理信息更新单元从所述第二管理信息或所述第三管理信息删除所选择的存储区,并将所选择的存储区添加到所述第一管理信息。所述第二接收单元从所述主机接收数据的读请求。当所述读请求所请读取的数据被写入所述第三存储区时,所述读取单元在所述第一模式下读取数据,而当所述读请求所请求读取的数据被写入所述第四存储区时,在所述第二模式下读取数据。与所述第二模式相比,在所述第一模式下的写入速度或读取速度较快。与所述第二模式相比,在所述第一模式下在同一存储区中可写入的信息的最大量较小。
根据该存储器***,可以根据情况获得SLC闪速存储器的优点和MLC闪速存储器的优点。
附图说明
图1是示出第一实施例的块的使用实例的图(1);
图2是示出该实施例的块的使用实例的图(2);
图3是示出该实施例的块的使用实例的图(3);
图4是该实施例的个人计算机的外部视图;
图5是该实施例的存储器***的框图;
图6是该实施例的地址转换表的数据结构实例;
图7是该实施例的反向表的实例;
图8是在该实施例中写入数据时的映射更新的示例(更新之前);
图9是在该实施例中写入数据时的映射更新的示例(更新之后);
图10是在该实施例中删除数据时的映射更新的示例(删除之前);
图11是在该实施例中删除数据时的映射更新的示例(删除之后);
图12是在该实施例中转录(transcribe)数据时的映射更新的示例(转录之前);
图13是在该实施例中转录数据时的映射更新的示例(转录之后);
图14是在该实施例中接收数据写入请求时的示意性流程图;
图15是在该实施例中的使用块(used block)减少处理的示意性流程图(1);
图16A是在该实施例中的使用块减少处理的示意性流程图(2);
图16B是在该实施例中的使用块减少处理的示意性流程图(3);
图17是在该实施例中的转录源块组选择处理的示意性流程图(1);
图18是在该实施例中的转录源块组选择处理的示意性流程图(2);
图19是在该实施例中的转录源块组选择处理的示意性流程图(3);
图20是在该实施例中的随机写入的模拟结果;
图21是第二实施例的存储器***的框图;以及
图22是在该实施例中的使用块减少处理的执行的示意性流程图。
具体实施方式
在下文中,将参照附图描述各个实施例。
首先,将参照附图详细描述根据第一实施例的存储器***1。图1到3是示出根据第一实施例的块的使用实例的图。
在第一实施例中使用的NAND闪速存储器是可改变写数据的操作模式的闪速存储器112。例如,该闪速存储器是可改变写数据的操作模式的MLC闪速存储器。作为操作模式,使用第一操作模式和第二操作模式。在第一操作模式下,向某一存储区写入的信息量小于在第二操作模式下的情况(换句话说,在第二操作模式下,向某一存储区写入的信息量大于在第一操作模式下的情况)。例如,第二操作模式是可向一个基元写入的比特数目大于在第一操作模式下的模式。在更具体实例中,第一操作模式是SLC模式或MLC模式。第二操作模式是这样的MLC模式,在该模式下可向一个基元写入的比特的数目大于在第一操作模式下的情况。在以下的描述中,假设第一操作模式是SLC模式,第二操作模式是MLC模式。然而,MLC模式不限于单模式,而是可存在多个MLC模式。例如,MLC模式可在4值模式和8值模式之间改变。
MLC闪速存储器112和NAND闪速存储器的存储区都包括多个块(第一存储区)。块是存储区的预定单位以及数据的擦除单位。因此,当向块新写入数据时,块中的数据需要预先被共同擦除。
每个块包括多个页。向和从每个页写入和读出数据。存在向页写入数据的顺序的规则。因此,以块为单位擦除数据之后,必须按特定的页顺序向块写入数据。换句话说,在向块写入数据之后,不可能在不擦除块中的数据的情况下向特定的页覆写(overwrite)数据,即使在从块擦除数据之后,也不能向块中的随机页写入数据。
每个NAND闪速存储器的操作模式可针对每个块而独立设定。然而,块中的每个页的操作模式需要相同。因此,操作模式不能在页之间切换。换句话说,在向块中的页写入数据之后,不能切换块的操作模式,直到块中的数据被共同擦除。
可向块写入的数据量在每个操作模式之间不同。换句话说,块的容量(以下称为块容量)依赖于操作模式而变化。具体地,每个页的页尺寸(pagesize)不变,而页的数目变化。例如,在2-比特(two-bit)记录方法的MLC闪速存储器中,2值模式的SLC块具有的页数目和块容量是4值模式的MLC块的1/2。
在第一实施例中,如图1到3所示,作为块的类型,存在空闲块(freeblock)(第二存储区)B_free,其中未存储有效数据;以及使用块(usedblock),其中存储有效数据。在使用块当中,存在块B_slc,其是通过在其中复制和存储在第一操作模式下写入的有效数据而获得的;以及块B_mlc,其是通过在其中复制和存储在第二操作模式下写入的数据而获得的。这里,块B_slc称为SLC块B_slc(第三存储区),并且块B_mlc称为MLC块B_mlc(第四存储区)。
块被分类成组并管理。例如,空闲块B_free被分类成空闲块组G_free并管理,SLC块B_slc被分类成SLC块组G_slc(第五存储区)并管理,MLC块B_mlc被分类成MLC块组G_mlc(第六存储区)并管理。
在第一实施例中,如图1所示,当从主机设备发出写入数据D1的请求时,在SLC模式下将数据D1写入空闲块B_free,该空闲块B_free预先被分配(assign)为对其写入新数据的块。将数据D1被写入的新数据写入块B_D1登记为SLC块组G_slc。结果,在空闲块组G_free中管理的空闲块B_free的数目减少1,相反地,在SLC块组G_slc中管理的SLC块B_slc的数目增加1。在SLC模式下的数据的写入被执行,而不受到在SLC块组G_slc中管理的SLC块B_slc的总数据容量的限制。换句话说,在第一实施例中,SLC块B_slc的数目不具有上限,并且可变。基于此,在第一实施例中,实现了可变长度的SLC缓冲器。此外,在第一实施例中,可以将其总容量大于或等于过剩容量(surplus capacity)(通常称为超量供应)的数目的块作为SLC块B_slc管理,该过剩容量是通过从MLC闪速存储器的总存储容量减去向主机设备提供的最大容量的逻辑容量而获得的。然而,如下所述,可对由空闲块组G_free管理的空闲块B_free的数目设定下限。
之后,例如,当通过从主机设备写入数据而使得属于空闲块组G_free的空闲块B_free的数目小于或等于预定预置Tbf时,在第一实施例中,如图2所示,选择属于SLC块组G_slc的SLC块B_slc中的一些,并且在MLC模式下将在这些SLC块B_slc中存储的作为有效数据的数据(以下称为有效数据)写入预先被分配作为转录目的块的空闲块B_free(转录)。将有效数据被写入的转录目的块B_Dts登记为MLC块组G_mlc。结果,使用块的数目减少,空闲块B_free的数目增加。这里,作为要被转录的SLC块B_slc,希望选择其中相对于块容量的有效数据量(有效数据比率)小的SLC块B_slc以及未存储被频繁更新的数据的SLC块B_slc。
之后,在通过数据转录而增加了属于MLC块组G_mlc的MLC块B_mlc的数目的状态下,当空闲块B_free的数目小于或等于预定的阈值Tbf时,在第一实施例中,如图3所示,选择SLC块组G_slc或MLC块组G_mlc,选择属于所选块组的一些块,并且在MLC模式下向预先被分配作为转录目的块的空闲块B_free写入所选块中的有效数据(转录)。将有效数据被写入的转录目的块B_Dts或B_Dtm登记为MLC块组G_mlc。结果,使用块的数目减少,空闲块B_free的数目增加。这里,作为要被转录的使用块,希望选择其中相对于块容量的有效数据量(有效数据比率)小的块和未存储被频繁更新的数据的块。作为要被转录的块,例如,选择相同操作模式的块。具体地,选择SLC块B_slc的集合(set)或MLC块B_mlc的集合。
可以基于各种参数(例如属于每个块组的块的有效数据的总量和有效数据的总比率)确定选择哪个块组。例如,如图1和2所示,当有效数据的总量小时,可以提高SLC块B_slc的比率,这是因为,即使块容量的和小,也可记录所有数据。另一方面,如图3所示,当有效数据的总量大时,有必要提高MLC块B_mlc的比率以增加块容量的和。
此外,当从主机写入的数据的LBA(逻辑块地址)存在局域性(locality)时,换句话说,当数据被集中写入特定LBA的范围时,很有可能在数据从SLC块B_slc转录到MLC块B_mlc之前从主机覆写数据并且SLC块B_slc中的旧数据变为无效数据。通过上述方式,当SLC块组G_slc中的有效数据的总比率降低时,希望选择SLC块组G_slc作为要被转录的块组。相反地,例如,当局域性移动时,换句话说,紧接在写入数据被集中的LBA的范围移动到另一范围之后,很有可能在数据被转录到MLC块B_mlc之后从主机覆写数据并且MLC块B_mlc中的旧数据变为无效数据。通过上述方式,当MLC块组G_mlc中的有效数据的总比率降低时,希望选择MLC块组G_mlc作为要被转录的块组。
这里,阈值Tbf是通过实验、经验、或模拟获得的值,以实现从主机设备的有效数据存取。例如,如果阈值Tbf太大,在某个时间点,实际存储数据的块的数目减少,并且有效数据的总比率增加,从而转录的效率降低。阈值Tbf需要至少为在转录处理中同时分派(allocate)的空闲块的数目。
此外,执行数据转录的触发(trigger)不限于使用阈值Tbf的方法。例如,可以周期性地执行数据转录,或基于当不存在从主机设备的存取时的时间段而执行数据转录。
接下来,将描述存储器***1的配置和操作。图4是示出其中可以安装根据第一实施例的存储器***的信息处理设备的实例的示意图。图4中示出的个人计算机10主要包括主体11和显示器单元12。主体11包括例如外壳15、键盘16、触摸板17(这是指点装置)、外部接口18(例如存储器卡19等可被附接和拆卸的卡槽和USB(通用串行总线))、主电路板、以及存储器***1(这是SSD(固态驱动器))。
在主电路板上,安装主要组件,例如CPU(中央处理单元)、ROM(只读存储器)、RAM(随机存取存储器)、北桥和南桥。此外,主体11可包括ODD(光盘驱动器)单元、各种外部接口等。
显示器单元12包括显示器外壳13和容纳在显示器外壳13内的显示器装置14。尽管在图4中将笔记本型个人计算机用作实例,但是其中可安装根据第一实施例的存储器***的信息处理设备不限于此。换句话说,根据第一实施例的存储器***和以下所述的另一实施例可被应用于在其中可安装闪速存储器或者闪速存储器可被附接作为存储装置的任何计算机。
在图4中,存储器***1是使用可重写的(rewritable)非易失性存储器作为记录介质的存储装置。存储器***1可被构建到个人计算机10中,或通过外部接口18而被外部连接到个人计算机10。下文中,将参照附图详细描述根据第一实施例的存储器***1。
如图5所示,存储器***1大致包括控制器单元100、非易失性存储器单元110、缓冲存储器单元120、和接口单元130。每个单元100到130可通过信号线140(例如总线或点到点线)而彼此连接。请求向和从非易失性存储器单元110写入和读取数据的主机设备150(例如个人计算机或工作站)也可被连接到信号线140。
接口单元130为例如SATA(串行ATA)接口,并且通过信号线140而与主机设备150通信。然而,接口单元130不限于SATA接口,而诸如并行ATA接口的各种接口可被应用于接口单元130。接口单元130从主机设备150(第一接收单元和第二接收单元)接收诸如数据的读取、写入、刷新、和删除(例如SATA TRIM命令)的命令,并且向控制器单元100发送接收命令的通知。接口单元130根据来自控制器单元100的指令而向和从主机设备150发送和接收数据。
对于缓冲存储器单元120,使用诸如SRAM和DRAM的具有高的可随机存取性的高速存储器。缓冲存储器单元120不需要是非易失性存储器。缓冲存储器单元120在其中暂时存储通过接口单元130向或从主机设备150发送或接收的数据以及通过接口单元130从或向非易失性存储器单元110读取或写入的数据。除了数据之外,缓冲存储器单元120可在其中存储用于各种管理操作的信息。
非易失性存储器单元110包括一个或多个MLC闪速存储器112和NAND控制器111。MLC闪速存储器112是例如NAND闪速存储器。一个MLC闪速存储器112可形成于一个芯片中。通常,非易失性存储器单元110的总存储容量需要大于逻辑容量(向主机设备提供的最大容量)。因此,根据总存储容量,非易失性存储器单元110可包括多个MLC闪速存储器112。希望NAND控制器111可以向多个MLC闪速存储器112并行发送数据。当通过使用一个MLC闪速存储器112无法满足作为SSD所需的数据传输性能时,这是有效的。
说明返回图5。控制器单元100具有管理用户数据和控制每个单元的功能。控制器单元100可以是SoC(片上***),其中这些功能被实现为电路。控制器单元100可通过执行用于实现这些功能的软件的通用硬件处理器而实现。
关于这些功能块,控制器单元100包括地址转换表存储单元101、块管理单元102、有效数据量管理单元103、读命令处理单元104、写命令处理单元105、删除命令处理单元106、块减少处理单元107、转录源块组选择单元108、和转录源块选择单元109(转录单元)。
地址转换表存储单元101在其中存储地址转换表101A,该地址转换表101A保持从主机设备150指定的逻辑地址与存储器***1中的数据记录位置之间的映射。当主机设备150写入或删除某个逻辑地址的数据或者在存储器***1中转录数据时,更新在地址转换表101A中的逻辑地址的映射。结果,在新记录位置中的数据变为有效数据,在旧记录位置中的数据变为无效数据。当更新映射时,向有效数据量管理单元103通知在每个块中的有效数据的量的更新。
块管理单元102管理用于对块进行分类和管理的块组。根据在块中是否存储有效数据,可将块分类成空闲块和使用块。根据有效数据对块的写入操作模式,使用块可被分类成SLC或MLC块。块管理单元102将其中未存储有效数据的块分配给空闲块组,将其中存储在SLC模式下写入的有效数据的块分配给SLC块组,并将其中存储在MLC模式下写入的有效数据的块分配给MLC块组。块管理单元102保持在每个块组中包含的块的信息和块的数目作为每个块组的管理信息。没有确定空闲块的操作模式,并且在获得要使用的空闲块之后,根据使用的目的来确定操作模式。每个块组的管理信息具有这样的数据结构,该数据结构能够使得所有的块共同登记为特定的块组。例如,即使当在SLC模式下使用所有的块时,所有的块可被登记为SLC块组。块管理单元102更新指示哪个块属于哪个块组(空闲、SLC或MLC)的信息(管理信息更新单元)。
当有效数据量管理单元103从地址转换表101A接收到在每个块中有效数据的量的更新的通知时,有效数据量管理单元103计算在SLC块组和MLC块组中包含的块的有效数据的总量。
当读命令处理单元104从接口单元130接收到接收读命令的通知时,读命令处理单元104在地址转换表101A内搜索与该读命令所指定的逻辑地址对应的非易失性存储器单元110中的记录位置,并将在该记录位置中记录的数据读出到缓冲存储器单元120(读取单元)。这样,将读命令指定的范围内的数据暂时存储在缓冲存储器单元120中。之后,读命令处理单元104控制接口单元130以向主机设备150发送在缓冲存储器单元120中暂时存储的数据。
当写命令处理单元105从接口单元130接收到接收写命令的通知时,写命令处理单元105在缓冲存储器单元120中分派空闲空间,并控制接口单元130以从主机设备150接收数据。之后,当在缓冲存储器单元120中积累了足量的数据时,写命令处理单元105将缓冲存储器单元120中的数据写入新数据将被写入的块。之后,写命令处理单元105通过将与写入数据的逻辑地址对应的记录位置登记到地址转换表101A中而更新映射。写命令处理单元105从块管理单元102获取空闲块作为新数据将被写入的块(获取单元),并使用新数据将被写入的该块作为SLC块(第一写入单元)。当写命令处理单元105从块管理单元102获取空闲块作为新数据将被写入的块时,如果剩余的空闲块的数目小于预定阈值,则写命令处理单元105向块减少处理单元107发送使用块数目减少请求。
当删除命令处理单元106从接口单元130接收到接收删除命令的通知时,删除命令处理单元106将地址转换表101A的映射更新为使得与指定的逻辑地址对应的记录位置中的数据无效。
块减少处理单元107在其中存储有效数据的使用块当中选择至少一个使用块(以下称为“转录源块”)(选择单元),并且将所选择的转录源块中的有效数据转录到空闲块(第二写入单元)。通过转录源块组选择单元108选择从其中减少块数目的块组。通过转录源块选择单元109选择转录源块。
块减少处理单元107收集作为新空闲块的这样的转录源块,这些转录源块由于有效数据的转录而变为空闲块,即,其有效数据的量变为“0”的转录源块。通过将与转录的数据的逻辑地址对应的转录目的地的记录位置登记到地址转换表101A中而更新转录的数据的映射。这里,作为新空闲块收集的转录源块的数目与被分配为转录目的地的块(以下称为“转录目的块”)的空闲块的数目之间的差是减少的使用块的数目。作为转录源块,希望选择相同操作模式的块。希望在MLC模式下使用被分配为转录目的块的空闲块。
转录源块组选择单元108选择从其中减少块数目的SLC块组或MLC块组。转录源块组选择单元108基于例如在每个块组中或块组之一中的有效数据比率而选择从其中减少块数目的块组。转录源块组选择单元108可以根据从块管理单元102参照的每个块组中的块的数目和从有效数据量管理单元103参照的每个块或每个块组中的有效数据的量而计算块组中的有效数据比率。具体地,转录源块组选择单元108可以通过从操作模式和每个块组中的块的数目计算每个块组的总容量并将每个块组中的有效数据的量除以计算出的总容量而获得块组中的有效数据比率。
转录源块选择单元109从由转录源块组选择单元108选择的转录源块组选择一个或多个使用块作为转录源块。转录源块选择单元109在属于转录源块组的使用块当中优先地选择具有低的有效数据比率的块。或者,转录源块选择单元109可优先地选择具有小于阈值的有效数据比率的使用块,所述阈值与当转录源块组选择单元108选择转录源块组时使用的MLC块组中的有效数据比率的阈值相同。此外,当转录源块组是SLC块组时,可简单地按FIFO的顺序选择块,换句话说,可按写入的时间序列顺序选择SLC块。
接下来,将参照附图详细描述数据管理的单位和地址转换表。一般而言,当从主机设备150对存储装置进行存取时数据管理的单位称为“扇区”,并且扇区的尺寸为512字节。在从存储装置(例如HDD和SSD)向主机设备150提供的存储区中,从区域顶部依次向每个扇区提供连续的逻辑地址。一般地,逻辑地址称为“LBA”(逻辑块地址)。
另一方面,根据第一实施例的存储器***1中的数据管理的单位称为“簇(cluster)”。簇的尺寸可大于扇区的尺寸。当簇的尺寸大于扇区的尺寸时,可以减少表目(entry)的数目以及在地址转换表101A中处理的量。例如,当一个簇包括8个扇区时,每个簇包括从具有8的倍数的逻辑地址的扇区开始的连续8个扇区。结果,簇的尺寸为4KB(千字节)。在以下的描述中,将描述这样的实例,其中,存储器***1中的数据管理的单位为簇,每个簇的逻辑地址为该簇的第一扇区的LBA,簇的尺寸为4KB。然而,可根据目的等而改变簇的尺寸。当然,如果可充分分派用于存储数据的管理信息的区域,簇的尺寸可与扇区的尺寸相同。在该情况下,可针对每个扇区管理数据。
在块中的每个页中记录多个簇数据段(piece)。如上所述,簇中的数据是具有连续逻辑地址的扇区数据。然而,块中的多个簇数据段不必是具有连续逻辑地址的簇数据。如下所述,依据从主机设备150写入的顺序和在存储器***1中转录的顺序而动态地确定逻辑地址与在存储器***1中的记录位置之间的映射。
因此,提供地址转换表101A,其用于管理在逻辑地址与记录位置之间的映射。地址转换表101A具有登记与逻辑地址对应的记录位置、使得该记录位置无效、以及搜索映射的功能。此外,地址转换表101A具有当映射被更新时向有效数据量管理单元103通知与更新后的记录位置对应的块的块标识符(例如块的序号)、以及在更新之前和之后块中的有效数据量之间的差的功能。
可将各种数据结构应用于保持映射信息的地址转换表101A。图6是地址转换表的简单数据结构的实例。图6所示的数据结构是这样的结构,在该结构中,可在其中记录逻辑容量中的所有簇的记录位置的地址转换表101A按逻辑地址的顺序保持每个簇的记录位置。例如,在存储器上预先准备表结构。在图6所示的实例中,簇的尺寸为4KB,每个簇数据的第一逻辑地址是8的倍数,并且将块标识符、页号、和页中的偏移位置保持作为记录位置。
在图6所示的数据结构的实例中,当从记录位置搜索逻辑地址时,有必要从地址转换表101A中的所有表目搜索与记录位置对应的表目。因此,成本太高。因此,地址转换表101A可额外地保持这样的反向表,通过该反向表,可从记录位置快速搜索逻辑地址。图7示出了反向表的实例。在图7所示的实例中,反向表包括:子表101b-1、101b-2等,在其中记录与每个块中的所有记录位置对应的逻辑地址;以及主表101a,其具有与每个块对应的指向子表101b-1、101b-2等的指针。
接下来,将参照附图详细描述当根据来自主机设备150的请求而写入或删除数据以及在存储器***1中转录数据时如何更新地址转换表101A中的映射。在该说明中,假设从主机设备150指定的写入数据的逻辑地址为16。
图8和9是用于解释当写入数据时映射的更新的图。在图8所示的实例中,在数据尚未被写入的地址转换表101A中,将块“C”、页号“2”和页中的偏移位置“1”登记为与逻辑地址“16”对应的记录位置。当从主机设备150发送包括要被写入其他逻辑地址的数据的页尺寸的数据并且该数据积累在缓冲存储器单元120中时,在作为新数据要被写入的块而被选择的块“A”中,写命令处理单元105将在缓冲存储器单元120中积累的页尺寸的数据写入未写入的页“1”。
在写入数据之后,如图9所示,作为与逻辑地址“16”对应的记录位置,通过写命令处理单元105在地址转换表101A中登记块“A”、页“1”、和页中的偏移位置“0”。基于此,更新由地址转换表101A管理的映射。结果,旧记录位置中的数据变为无效数据,新记录位置中的数据变为有效数据。
图10和11是用于解释当删除数据时映射的更新的图。在当删除数据时的映射的更新中,与当写入数据时的映射的更新不同,不向块写入数据,并且在地址转换表101A中仅执行与逻辑地址对应的记录位置的无效化。在图10和11所示的实例中,删除命令处理单元106通过将无效值(例如,指示无块的块标识符)登记在与在数据尚未被从其中删除的地址转换表101A(参见图10)中的逻辑地址“16”对应的表目的记录位置中而使得映射无效化(参见图11)。基于此,在块“C”中的旧记录位置中的数据变为无效数据。
图12和13是用于解释当在SSD中转录数据时映射的更新的图。写入数据时的映射的更新与转录数据时的映射的更新之间的差异在于是否在存储器***1中记录要被写入/转录的数据。
在图12所示的实例中,在转录数据之前,在转录源块“E”和“F”中记录与逻辑地址“0”、“8”和“16”对应的有效数据。块减少处理单元107通过使用地址转换表101A而按照从被选择为转录源块的使用块中的第一页开始的升序依次检查在每个记录位置中的数据是否为有效数据。块减少处理单元107依次读出在转录源块“E”和“F”中检查过的有效数据,并向缓冲存储器单元120输出所读出的数据,之后,当在缓冲存储器单元120中积累了页尺寸的数据时,块减少处理单元107通过以页为单位将页尺寸的数据记录到转录目的块“D”中而转录要转录的有效数据。
在数据被转录之后,如图13所示,块减少处理单元107将与所转录的数据的逻辑地址对应的记录位置登记到地址转换表101A中。在图12和13所示的实例中,将与逻辑地址“0”、“8”和“16”对应的有效数据转录到转录目的块“D”,从而将块“D”中的位置登记到地址转换表101A中作为这些逻辑地址的记录位置。结果,转录源块“E”和“F”中的旧记录位置中的数据被无效化。
如果如图7所示在地址转换表101A中保持反向表,则当如上所述更新映射时也更新反向表。
接下来,将参照图5详细描述根据第一实施例的块管理。将块分类成空闲块和使用块。由于在空闲块中没有记录有效数据,可以将空闲块分配作为当下一次写入数据时数据被写入的块。另一方面,使用块具有有效数据。根据其操作模式,使用块被分类成SLC块和MLC块。
除了管理每个块的块管理信息102d之外,块管理单元102保持:空闲块组管理信息102a,其是指示哪些块是空闲块的信息(第一管理信息);SLC块组管理信息102b,其是指示哪些块是SLC块的信息(第二管理信息);以及MLC块组管理信息102c,其是指示哪些块是MLC块的信息(第三管理信息)。每个块组的管理信息段(102a到102c)包括:在每个块组中包括的块的信息以及块的数目。
块管理单元102可包括:用于在其中存储空闲块组管理信息102a的存储装置(第一存储单元);用于在其中存储SLC块组管理信息102b的存储装置(第二存储单元);以及用于存储MLC块组管理信息102c的存储装置(第三存储单元)。每个管理信息段可被存储于在块管理单元102中包括的单个存储装置中,或者块管理单元102可具有多个存储装置,并在彼此不同的存储装置(存储单元)中存储各管理信息段。
块管理单元102具有分配空闲块、登记空闲块、登记使用块、参照块组中的块数目、以及参照块信息的功能。
根据被指定要登记的块的操作模式,登记使用块的功能将该块的信息添加到SLC块组管理信息102b或MLC块组管理信息102c,并且向该块组的块数目加1。
分配空闲块的功能参照空闲块组管理信息102a,选择在空闲块组中包括的块,并且将所选择的空闲块的信息返回到写命令处理单元105或块减少处理单元107。此外,分配空闲块的功能从空闲块组管理信息102a删除所选择的空闲块的信息,并从该空闲块组的块数目减1。
根据被指定要登记的块的操作模式,登记空闲块的功能从SLC块组管理信息102b或MLC块组管理信息102c删除该块的信息,并从该块组的块数目减1。之后,登记空闲块的功能将该块的信息添加到空闲块组管理信息102a,并向该块组的块数目加1。当收集这样的使用块作为空闲块时,通过块减少处理单元107使用该功能,该使用块通过数据的转录而使其有效数据变为“0”。
这里,作为每个块组的管理信息的数据结构,可以考虑各种形式。然而,在第一实施例中,如上所述,管理信息需要具有这样的数据结构,其中,即使当安装在存储器***1中的所有块都集中在一个块组中时,也可管理这些块。具有这样的数据结构的原因是可同时将所有块用作SLC块。因此,例如,具有最简单结构的这样的数据结构之一是在其中存储块标识符的列表结构连接节点。
在第一实施例中,可以使用由NAND闪速存储器提供的一个物理块作为一个块而不改变,或通过组合多个物理块而形成一个逻辑块。例如,如果一个物理块(MLC模式)的块容量为1MB,页尺寸为8KB,页的数目为128,当通过收集32个物理块而形成逻辑块时,可将逻辑块处理为其块容量为32MB的块,页尺寸为256KB,页的数目为128的块。在该情况下,在每个功能块中使用块标识符是逻辑块的块标识符。
组合多个物理块并将组合的物理块作为一个逻辑块处理的优点之一是通过减少块的总数而减少了应被管理的块的信息。例如,在具有128GB的总存储容量的SSD中,物理块的数目为131072(=128×1024)。另一方面,其中每一个都组合了32个物理块的逻辑块的数目为4096。当通过组合其全部都可被并行存取的物理块而形成逻辑块时,可提升一个逻辑块的存取速度。
接下来,将参照附图详细描述根据第一实施例的有效数据量管理单元103。有效数据量管理单元103计算在SLC块组和MLC块组中包括的块的总有效数据量。通过使用来自地址转换表101A的更新信息作为触发,有效数据量管理单元103从块管理单元102搜索其映射被更新的块所属于的块组,并通过使用在更新通知中包括的差异信息来增加或减少块组的有效数据量。这里,有效数据量管理单元103可保持每个块的有效数据量的信息。以与每个块组的有效数据量相同的方式,通过利用块的有效数据的差异信息来增加或减少每个块的有效数据量。
有效数据量管理单元103可以不是独立功能单元。例如,有效数据量管理单元103的功能可被包括在地址转换表101A中。具体地,当地址转换表101A包括如图7所示的反向表时,可在每个子表101b-1、101b-2等中登记每个块的有效数据量。或者,有效数据量管理单元103的功能可被包括在块管理单元102中。在该情况下,在块管理单元102中登记与每个块和每个块组的有效数据量相关的信息。
接下来,将参照附图详细描述根据第一实施例的存储器***1的操作。图14是示出当从主机设备150发出数据写入请求时的示意性操作的流程图。在图14所示的操作中,假设新数据将被写入的块已被分配为初始状态。
如图14所示,首先,写命令处理单元105等待从主机设备150向接口单元130输入新数据写入命令(步骤S101的否)。当接收到写入命令时(步骤S101的是),写命令处理单元105在缓冲存储器单元120中分派数据存储区(步骤S102),然后在缓冲存储器单元120中分派的数据存储区中存储从主机设备150发送的新数据(步骤S103)。
接下来,写命令处理单元105检查在缓冲存储器单元120中存储的未写入的新数据的量(步骤S104),并且当数据量小于页尺寸时(步骤S104的否),写命令处理单元105返回到步骤S101,并等待下一写命令。另一方面,当数据量大于或等于页尺寸时(步骤S104的是),写命令处理单元105从缓冲存储器单元120中的未写入的数据选择与页尺寸对应的数据,并且在SLC模式下将所选择的数据写入到新数据将被写入的、并且在非易失性存储器单元110中已被分配的块中的页(步骤S105)。
接下来,写命令处理单元105通过将被写入的数据的逻辑地址和记录位置(块标识符、页号、和页中的偏移)登记到地址转换表101A中而更新映射(步骤S106)。此时,从地址转换表101A向有效数据量管理单元103通知有效数据量的改变。之后,写命令处理单元105释放在缓冲存储器单元120中已存储该被写入的数据的区域(步骤S107)。
接下来,写命令处理单元105确定在新数据将被写入的块中是否存在其中没有写入数据的页,即,未写入的页(步骤S108)。新数据将被写入的块的操作模式是SLC模式。当存在未写入的页时(步骤S108的否),写命令处理单元105返回到步骤S104,并检查在缓冲存储器单元120中剩余的未写入的数据的量。另一方面,当不存在未写入的页时(步骤S108的是),换句话说,当数据已被完全写入到新数据将被写入的块中的最大数目的页时,写命令处理单元105将新数据已被写入的块登记到块管理单元102的SLC块组管理信息102b中(步骤S109)。接下来,写命令处理单元105获得在块管理单元102的空闲块组管理信息102a中管理的一个空闲块,并分配该空闲块作为新数据将被写入的下一块(步骤S110)。
接下来,写命令处理单元105参照在块管理单元102的空闲块组管理信息102a中的空闲块组中的块数目,并确定空闲块的数目是否小于或等于预定阈值Tbf(步骤S111)。当空闲块的数目大于预定阈值Tbf时(步骤S111的否),写命令处理单元105返回到步骤S104。另一方面,当空闲块的数目小于或等于预定阈值Tbf时(步骤S111的是),写命令处理单元105向块减少处理单元107发出减少使用块的数目的请求,并执行使用块减少处理(步骤S112)。之后,写命令处理单元105返回到步骤S104。
这里,预定阈值Tbf需要大于或等于通过块减少处理单元107一次分派作为转录目的块的块的数目。需要至少一个块作为转录目的块,从而预定阈值Tbf需要大于或等于1。
在图14中,从步骤S101到步骤S103的处理可以与步骤S104和其后步骤的处理并行执行。然而,如果花费相对长的时间来执行向页写入数据的步骤S105和其后的步骤的处理,则在其中缓冲存储器单元120中分派数据存储区的步骤S102处,可能尚未释放足够尺寸的区域。因此,当并行执行从步骤S101到步骤S103的处理以及步骤S104和其后的步骤的处理时,希望提供等待的步骤,直到在缓冲存储器单元120中释放了足够尺寸的区域。
在步骤S104和其后的步骤的处理中,可以并行执行从步骤S104到步骤S110的处理(其执行新数据写入处理)以及从步骤S111到步骤S112的处理(其执行使用块减少处理)。然而,如果存在不能并行执行对非易失性存储器单元的数据存取的页读取操作或页写入操作,则这些操作需要以适当方式依次执行。
这里,将描述在图14中的步骤S112中所示的使用块减少处理。在使用块减少处理中,通过收集在一些使用块中分散的有效数据并将该有效数据转录到其他块,来减少使用块的数目并增加空闲块的数目。例如,当存在M个转录源块并且在该M个转录源块中存储的有效数据量可被存储在N个转录目的块中时,则可将使用块的数目减少(M-N)个。在该情况下,在第一实施例中,选择处于相同操作模式(SLC模式或MLC模式)的使用块作为转录源块。在MLC模式下,将数据转录到转录目的块。
以下将描述使用块减少处理的两个实例。图15是共同设定多个转录源块和多个转录目的块的实例。图16A是设定一个转录源块和一个转录目的块的实例。图16B是图16A的修改实例。
如图15所示,当块减少处理单元107从写命令处理单元105接收到减少使用块的数目的请求时,首先,块减少处理单元107使得转录源块组选择单元108执行转录源块组选择处理,以在由块管理单元102管理的SLC块组和MLC块组当中选择将成为转录源的块组,即,从其中减少块的块组(步骤S121)。随后,块减少处理单元107使得转录源块选择单元109执行这样的处理,该处理用于选择将成为所选择的块组中的转录源的M(>=1)个使用块作为转录源块(步骤S122)。这里,例如,如果选择MLC块组作为转录源块组,并且该MLC块组的总有效数据比率为V,则可以选择这样的M个转录源块,该M个转录源块的有效数据可被存储在M×V个转录目的块中。在该情况下,通过选择满足M>=1/(1-V)的整数M,可将有效数据转录到N个MLC块,其中N是小于或等于M-1的整数。
随后,块减少处理单元107计算将所选择的M个转录源块的有效数据存储MLC块所必需的块的数目N,并且从在块管理单元102的空闲块组管理信息102a中管理的空闲块组获得N个空闲块,并指定这些空闲块作为转录目的块(步骤S123)。块数目N可通过例如以下步骤来计算:从有效数据量管理单元103获得所选择的M个转录源块中的每一个转录源块的有效数据量;通过对所获得的有效数据量求和而计算出所有转录源块的总有效数据量D;将所获得的总有效数据量D除以MLC块的块容量Sm;以及将所获得的值舍入成整数。
接下来,块减少处理单元107分派与缓冲存储器单元120中的至少一页对应的数据存储区,然后读出在所选择的M个转录源块中存储的、与一页对应的有效数据,并将所读出的有效数据输出到在缓冲存储器单元120中分派的数据存储区(步骤S124)。随后,块减少处理单元107在MLC模式下将读出到缓冲存储器单元120的有效数据写入被选择为转录目的块的空闲块的页(步骤S125)。
接下来,块减少处理单元107确定是否已转录了所有M个转录源块的有效数据(步骤S126),并且当尚未转录所有有效数据时(步骤S126的否),块减少处理单元107返回到步骤S124,并逐页转录剩余的有效数据。另一方面,当已转录了所有有效数据时(步骤S126的是),块减少处理单元107通过将与逻辑地址对应的转录目的地的记录位置登记到地址转换表101A中而更新转录的有效数据的映射(步骤S127)。基于此,在所选择的M个转录源块中的所有有效数据变为无效数据。随后,块减少处理单元107将已从其中转录数据的转录源块登记到块管理单元102的空闲块组管理信息102a中(步骤S128),将有效数据被新存储到其中的转录目的块登记到块管理单元102的MLC块组管理信息102c中(步骤S129),并返回到图14所示的操作。以该方式,收集已从其中转录数据的转录源块作为空闲块。结果,使用块的数目减少了(M-N)个。
另一方面,当设定一个转录源块和一个转录目的块时,处理流程如图16A所示。当块减少处理单元107从写命令处理单元105接收到减少使用块的数目的请求时,首先,块减少处理单元107使得转录源块组选择单元108执行与图15中的步骤S121相同的转录源块组选择处理(步骤S141),然后将“0”设定给转录目的块的总数Bdst(步骤S142)。接下来,块减少处理单元107使得转录源块选择单元109从被选择为转录源的块组选择一个使用块作为转录源块(步骤S143),并将“0”设定给已从其中转录有效数据的转录源块的总数Bsrc(步骤S144)。
接下来,块减少处理单元107从在块管理单元102的空闲块组管理信息102a中管理的空闲块组获得一个空闲块,将该空闲块分配作为转录目的块(步骤S145),并使转录目的块的总数Bdst增加1(步骤S146)。假设,在缓冲存储器单元120中分派由块减少处理单元107使用的数据存储区的至少一页。
接下来,块减少处理单元107读出在被选择的转录源块中存储的有效数据,并将读出的有效数据输出到在缓冲存储器单元120中分派的数据存储区(步骤S147)。接下来,块减少处理单元107确定在被选择的转录源块中的所有有效数据是否已被读出到缓冲存储器单元120(步骤S148),并且如果尚未读出所有有效数据(步骤S148的否),则块减少处理单元107进行到步骤S150。
作为步骤S148的确定结果,如果已读出了转录源块中的所有有效数据(步骤S148的是),则以与步骤S143相同的方式,块减少处理单元107使得转录源块选择单元109从被选择为转录源的块组选择一个使用块作为转录源块(步骤S149),并进行到步骤S150。希望当在步骤S149中选择新转录源块时不再次选择在该选择之前刚刚选择的转录源块。
接下来,块减少处理单元107确定读出到缓冲存储器单元120的数据是否变为大于或等于页尺寸(步骤S150),并且如果数据并非大于或等于页尺寸(步骤S150的否),则块减少处理单元107返回到步骤S147。另一方面,如果数据大于或等于页尺寸(步骤S150的是),则块减少处理单元107在MLC模式下将读出到缓冲存储器单元120的有效数据写入到被选择为转录目的块的空闲块的页(步骤S151)。
接下来,块减少处理单元107通过将与转录的有效数据的逻辑地址对应的转录目的地的记录位置登记到地址转换表101A中而更新转录的有效数据的映射(步骤S152)。
接下来,块减少处理单元107将在步骤S151中从其中转录有效数据的转录源块当中的其有效数据量变为0的所有转录源块登记为空闲块组(步骤S153)。随后,块减少处理单元107将在步骤S153中变为空闲块的转录源块的数目(增加的空闲块的数目)增加到已从其中转录有效数据的转录源块的总数Bsrc(步骤S154)。
接下来,块减少处理单元107确定数据是否已被完全写入到转录目的块中的MLC模式的最大数目的页(步骤S155),并且当数据尚未被完全写入到最大数目的页时(步骤S155的否),则块减少处理单元107返回到步骤S147。
作为步骤S155的确定的结果,当数据已被完全写入到转录目的块中的MLC模式的最大数目的页时(步骤S155的是),块减少处理单元107将该转录目的块登记到块管理单元102的MLC块组管理信息102c中(步骤S156)。随后,块减少处理单元107确定减少的块的数目是否大于或等于减少的块的预定数目,换句话说,通过从已从其中转录数据的转录源块的总数Bsrc减去转录目的块的总数Bdst而获得的值是否大于或等于减少的块的预定数目(步骤S157),并且当减少的块的数目并非大于或等于减少的块的预定数目时(步骤S157的否),块减少处理单元107返回到步骤S145。另一方面,当减少的块的数目大于或等于减少的块的预定数目时(步骤S157的是),块减少处理单元107返回到图14所示的操作。以上述方式,同样可以减少使用块的期望(intended)数目。
在由于转录期间的某种问题而不能读出转录目的块中的数据的情况下,可以保存转录之前的状态,从而可回滚(roll back)有效数据和地址转换表。图16B是图16A的修改实例。在图16B中,已从其中复制有效数据的转录源块没有被立即收集为空闲块,并且作为空闲块准备组而暂时保护该转录源块,直到与块容量对应的数据已被转录到转录目的块。当数据已被转录到转录目的块时,没有必要保存转录之前的状态。因此,在对已被转录的数据更新地址转换表之后,从空闲块准备组共同收集已从其中转录数据的转录源块,作为空闲块。
图16B中的从S141到S151的步骤与图16A中的从S141到S151的步骤相同。以下将描述步骤S160和其后的步骤。
块减少处理单元107将在步骤S151已从其中转录有效数据的转录源块当中的其有效数据已被完全复制的所有转录源块登记为空闲块准备组(步骤S160)。
接下来,块减少处理单元107确定数据是否已被完全写入到转录目的块中的MLC模式的最大数目的页(步骤S161),并且当数据尚未被完全写入到最大数目的页时(步骤S161的否),则块减少处理单元107返回到步骤S147。
作为步骤S161的确定的结果,当数据已被完全写入到转录目的块中的MLC模式的最大数目的页时(步骤S161的是),块减少处理单元107将该转录目的块登记到块管理单元102的MLC块组管理信息102c中(步骤S162)。
接下来,块减少处理单元107通过将与被转录到转录目的块的有效数据的逻辑地址对应的转录目的地的记录位置登记到地址转换表101A中而更新被转录到转录目的块的有效数据的映射(步骤S163)。然后,块减少处理单元107将在空闲块准备组中包括的块登记为空闲块组(步骤S164)。随后,块减少处理单元107将在步骤S164中变为空闲块的转录源块的数目增加到已从其中转录有效数据的转录源块的总数Bsrc(步骤S165)。
接下来,块减少处理单元107进行到步骤S166,并以与图16A中的步骤S157相同的方式,当减少的块的数目并非大于或等于减少的块的预定数目时(步骤S166的否),块减少处理单元107返回到步骤S145。另一方面,当减少的块的数目大于或等于减少的块的预定数目时(步骤S166的是),块减少处理单元107返回到图14所示的操作。
如果如图16A所示,将转录源块登记为空闲块并且在用数据填充转录目的块之前该空闲块被重新使用和擦除,如果之后在转录目的块中发生问题并且不能从转录目的块读出数据,则数据丢失。另一方面,根据图16B中的处理的流程,直到用数据填充转录目的块为止,同一数据既存在于转录源块中,也存在于转录目的块中。基于此,即使在转录期间发生问题并且不能从转录目的块读出数据,原始数据也保留在转录源块中,从而数据未丢失。这样,在图16B所示的处理流程中,可提升容错度。
接下来,将描述在图15中的步骤S121以及图16A和16B的步骤S141所示的转录源块组选择处理。一些方法可被考虑用于转录源块组选择处理。以下将这些方法中的三种方法作为实例描述。
图17是其中当MLC块组的有效数据比率低于预定阈值时将该MLC块组优先选择为转录源块组的实例。图18是其中从SLC块组和MLC块组中选择具有较低的有效数据比率的块组作为转录源块组的实例。图19是其中向图18所示的实例增加图17所示的MLC块组的块数目Bm和有效数据比率Vm的限制的实例。
如图17所示,转录源块组选择单元108通过参照块管理单元102的MLC块组管理信息102c而获得MLC块组中的总块数Bm(步骤S201),从有效数据量管理单元103获得属于该MLC块组的每个MLC块中的有效数据量,并且通过对所获得的有效数据量求和而计算出所有MLC块中的总有效数据量Dm(步骤S202),随后如以下的式1所示,转录源块组选择单元108通过将在步骤S202中获得的总有效数据量Dm除以通过将在步骤S201中获得的总块数Bm与一个MLC块的容量Sm相乘所获得的值来计算MLC块组的总有效数据比率Vm(步骤S203)。
Vm=Dm/(Bm*Sm)    (1)
接下来,转录源块组选择单元108确定MLC块组中的总块数Bm是否小于或等于预定阈值Tbm(步骤S204),并且如果总块数Bm大于预定阈值Tbm(步骤S204的否),转录源块组选择单元108随后确定MLC块组的总有效数据比率Vm是否大于预定阈值Tvm(步骤S205)。
当总块数Bm小于或等于阈值Tbm时(步骤S204的是),或当总有效数据比率Vm大于阈值Tvm时(步骤S205的是),转录源块组选择单元108选择SLC块组作为转录源块组(步骤S206)。另一方面,当总块数Bm大于阈值Tbm时以及当总有效数据比率Vm小于或等于阈值Tvm时(步骤S204的否和步骤S205的否),转录源块组选择单元108选择MLC块组作为转录源块组(步骤S207)。当以该方式选择了转录源块组时,转录源块组选择单元108返回到图15、16A、或16B所示的操作,并且处理返回到块减少处理单元107的处理。
例如,希望阈值Tvm是这样的值,该值使得转录效率不差于其中所有块都是MLC块的情况下的转录效率。当向主机提供的有效数据的逻辑容量被完全记录时转录效率最差,并且有效数据均匀地分布和存储在所有的块中。在该情况下,当通过Sall表示总存储容量并且通过Smax表示逻辑容量时,通过V=Smax/Sall来表示每个块的有效数据比率V。这里,当通过将M个转录源块(M=1/(1-V))转录到N个转录目的块(N=M-1)而执行转录时,使用块的数目可以减少1个。因此,当阈值Tvm=V时,如果MLC块组的总有效数据比率Vm小于或等于阈值Tvm,则当转录至少M个转录源块时可以使使用块的数目减少1个,从而转录效率不差于上述最差情况。
如上所述,根据图17所示的转录源块组选择单元108,可以在转录效率不差于由阈值Tvm确定的值的范围内减少MLC块组中的块数目,从而可以将减少数目的块分配作为SLC块。
当从SLC块组和MLC块组中选择具有较低的有效数据比率的块组作为转录源块组时,如图18所示,以与图17中的步骤S201到S203相同的方式,转录源块组选择单元108计算总有效数据比率Vm。
同样地,转录源块组选择单元108通过参照块管理单元102的SLC块组管理信息102b而获得SLC块组中的总块数Bs(步骤S221),从有效数据量管理单元103获得属于SLC块组的每个SLC块中的有效数据量,并通过对所获得的有效数据量求和而计算出在所有SLC块中的总有效数据量Ds(步骤S222),并随后如以下的式2所示,转录源块组选择单元108通过将在步骤S222中获得的总有效数据量Ds除以通过将在步骤S221中获得的总块数Bs与一个SLC块的容量Ss相乘所获得的值而计算出SLC块组的总有效数据比率Vs(步骤S223)。这里,当SLC模式是2值模式并且MLC模式是4值模式时,SLC块的容量Ss是MLC块的容量Sm的1/2。
Vs=Ds/(Bs*Ss)       (2)
接下来,转录源块组选择单元108将在步骤S203中计算出的MLC块组的总有效数据比率Vm与在步骤S223中计算出的SLC块组的总有效数据比率Vs相比较(步骤S224),并且当SLC块组的总有效数据比率Vs小于或等于MLC块组的总有效数据比率Vm时(步骤S224的是),转录源块组选择单元108选择SLC块组作为转录源块组(步骤S206)。另一方面,当总有效数据比率Vs大于总有效数据比率Vm时(步骤S224的否),转录源块组选择单元108选择MLC块组作为转录源块组(步骤S207)。当以该方式选择了转录源块组时,转录源块组选择单元108返回到图15、图16A或16B所示的操作,并且处理返回到块减少处理单元107的处理。
如上所述,根据转录源块组选择单元108的处理流程,从SLC块组和MLC块组中选择具有较低的有效数据比率的块组作为转录源块组。因此,与图17所示的处理流程相比,尽管对总有效数据比率的计算的量增加,但可提升转录效率。
当通过简单地假设SLC块的容量与MLC块的容量相同而计算SLC块组和MLC块组的总有效数据比率时,倾向于选择SLC块组,SLC块组可以初始地在其中仅存储可在MLC块组中存储的有效数据的一半。另一方面,当通过假设SLC块的容量Ss是MLC块的容量Sm的一半来计算SLC块组的总有效数据比率时,可以防止选择SLC块组的倾向。
此外,当对图18所示的实例增加图17所示的MLC块组的块数目Bm以及有效数据比率Vm的限制时,如图19所示,以与图17所示的步骤S201到S203相同的方式,转录源块组选择单元108计算MLC块组的总有效数据比率Vm,然后,以与图17所示的步骤S204和S205相同的方式,确定在MLC块组中的总块数Bm是否小于或等于预定阈值Tbm(步骤S204),并且如果总块数Bm大于预定阈值Tbm(步骤S204的否),则转录源块组选择单元108随后确定MLC块组的总有效数据比率Vm是否大于预定阈值Tvm(步骤S205)。
当总块数Bm小于或等于阈值Tbm时(步骤S204的是),或当总有效数据比率Vm大于阈值Tvm时(步骤S205的是),则转录源块组选择单元108选择SLC块组作为转录源块组(步骤S206)。另一方面,当总块数Bm大于阈值Tbm时以及当总有效数据比率Vm小于或等于阈值Tvm时(步骤S204的否和步骤S205的否),以与图18中所示的步骤S221到S223的相同的方式,转录源块组选择单元108计算SLC块组的总有效数据比率Vs。然后,转录源块组选择单元108将在步骤S203中计算出的MLC块组的总有效数据比率Vm与在步骤S223中计算出的SLC块组的总有效数据比率Vs相比较(步骤S224),并且当SLC块组的总有效数据比率Vs小于或等于MLC块组的总有效数据比率Vm时(步骤S224的是),转录源块组选择单元108选择SLC块组作为转录源块组(步骤S206)。另一方面,当总有效数据比率Vs大于总有效数据比率Vm时(步骤S224的否),转录源块组选择单元108选择MLC块组作为转录源块组(步骤S207)。当以该方式选择了转录源块组时,转录源块组选择单元108返回到图15、16A、或16B所示的操作,并且处理返回到块减少处理单元107的处理。
在图18所示的转录源块组选择处理中,例如,当MLC块组中的总块数Bm为1并且总有效数据量Dm为1个簇时,MLC块组的总有效数据比率Vm非常低,从而可将MLC块组选择为转录源。在这样的情况下,即使当将MLC块组选择作为转录源时,也不能减少使用块的数目。此外,总有效数据比率Vs和Vm都会接近100%。作为极端的实例,存在这样的情况,其中,例如,块的数目Bs和Bm都为100,总有效数据比率Vs为100%,并且总有效数据比率Vm为99%。在该情况下,在图18所示的转录源块组选择处理中,选择MLC块组为转录源。结果,为了减少1块,有必要选择100个MLC块作为转录源并选择99个空闲块作为转录目的地。因此,如图19所示,通过对MLC块组的块数目Bm和有效数据比率Vm增加限制,即使当Vs>Vm时,也选择SLC块组作为转录源。
图20示出随机写入的模拟结果。图20的X轴指示存取范围的大小,即,指示局域性,并且范围为0至逻辑容量。Y轴指示对4KB的数据的随机写入性能,性能的单位是IOPS。在图20中,实线L1是示出存储器***1的随机写入性能的曲线,虚线L2是示出在MLC模式下使用所有块的传统存储器***的随机写入性能的曲线。从图20显然地,在存储器***1中,特别地,在具有高局域性的范围内,可获得比传统存储器***更好的随机写入性能。
如上所述,根据第一实施例,在具有强局域性的存取模式下,将没有被频繁更新的数据分成MLC块,将被频繁更新的数据分成SLC块,从而可以改善长期转录效率。当总有效数据量小时,可以减少SLC块的无用转录,并增加具有高存取速度的SLC块的超高速缓存效果。此外,通过动态地选择空闲块的操作模式,可以依据情况获得SLC闪速存储器的优点和MLC闪速存储器的优点。
接下来,参照附图详细描述根据第二实施例的存储器***2。在第二实施例中,除了当空闲块的数目小于或等于预定阈值Tbf时(图14中的步骤S111的是),当持续某一个时间段没有从主机设备150接收诸如数据的读取、写入、清理(flush)和删除的命令时,以及当从主机设备150请求数据的转录时,也触发图14中的步骤S112所示的使用块减少处理的执行。
从图21和图5之间的比较明显地,除了与图5中所示的存储器1相同的配置之外,根据第二实施例的存储器***2还包括计时器201(timer)。计时器201通过上升计数器来配置,并且当计数值大于或等于预定阈值时,计时器201向块减少处理单元107发送使用块减少请求。块减少处理单元107根据该请求而执行图15、16A或16B所示的使用块减少处理。
图22是示出当基于计时器的计数值而执行使用块减少处理时的示意性操作的流程图。如图22所示,块减少处理单元107启动计时器201(步骤S301),之后,例如,每隔一定时间,确定是否从主机设备150接收到命令(步骤S302)。当没有接收到命令时(步骤S302的否),块减少处理单元107确定计时器201的计数值H是否大于或等于预定阈值Tt(步骤S303)。当计数值H小于阈值Tt时(步骤S303的否),块减少处理单元107直接返回到步骤S302。另一方面,当计数值H大于或等于阈值Tt时(步骤S303的是),块减少处理单元107重设计时器201(步骤S304)。之后,以与图14中的步骤S112相同的方式,块减少处理单元107执行使用块减少处理(步骤S307),然后返回到步骤S302。
当从主机设备150接收到命令时(步骤S302的是),块减少处理单元107重设计时器201(步骤S305),并随后确定接收到的命令是否为使用块减少请求(步骤S306)。当接收到的命令并非使用块减少请求时(步骤S306的否),则块减少处理单元107直接返回到步骤S302。另一方面,当接收到的命令是使用块减少请求时(步骤S306的是),以与图14中的步骤S112相同的方式,块减少处理单元107执行使用块减少处理(步骤S307),然后返回到步骤S302。
如上所述,根据第二实施例,当持续某一个时间段没有从主机发送命令时,估计没有发送命令的时间段将继续,从而可在该时间段期间执行使用块减少处理。关于用于指示使用块的数目的减少的命令,可以预期,基于主机认识到主机将持续一段时间不存取数据,主机发送命令。因此,尽管通过在主机不存取数据的时间段期间预先执行使用块减少处理不能总体地减少使用块减少处理,但是可以减少应该与从主机写入并行执行的使用块减少处理,并在主机写入数据时抑制传输性能的劣化。其他配置、操作和效果与第一实施例的情况相同,从而将省略对其的详细描述。
根据上述至少一个实施例的存储器***,存储器***包括非易失性半导体存储器、第一存储单元、第二存储单元、第三存储单元、第一接收单元、获取单元、第一写入单元、选择单元、第二写入单元、管理信息更新单元、第二接收单元、和读取单元。该非易失性半导体存储器包括多个第一存储区,并且能够具有:一个或多个第二存储区,其被包括在所述多个第一存储区中并在其中没有存储有效数据;多个第三存储区,其被包括在所述多个第一存储区中,并且是通过在其中复制和存储从主机接收的数据而获得的;以及多个第四存储区,其被包括在多个第一存储区中,并且是通过在其中复制和存储在第三存储区中存储的或在第四存储区中存储的数据而获得的。有效数据是存储在与逻辑地址相关联的物理地址的数据。逻辑地址是从主机指定的地址。物理地址指示在半导体存储器的存储区中的数据存储位置。第一存储单元在其中存储第一管理信息,该第一管理信息指示所述多个第一存储区的哪个区域是第二存储区。第二存储单元在其中存储第二管理信息,该第二管理信息指示所述多个第一存储区的哪些区域是第三存储区。第三存储单元在其中存储第三管理信息,该第三管理信息指示所述多个第一存储区的哪些区域是第四存储区。第一接收单元接收写入请求数据,该写入请求数据是通过主机请求写入的数据。获取单元基于第一管理信息而从一个或多个第二存储区获取一个第二存储区。第一写入单元在第一模式下将写入请求数据写入到通过获取单元获取的第二存储区。当第二存储区的数目小于或等于第一阈值时,选择单元基于第二管理信息而从所述多个第三存储区选择一个或多个存储区,或者基于第三管理信息而从所述多个第四存储区选择一个或多个存储区。第二写入单元在第二模式下将通过选择单元选择的存储区中存储的有效数据写入通过获取单元获取的第二存储区。当第二写入单元写入有效数据时,管理信息更新单元从第二管理信息或第三管理信息删除所选择的存储区,并将所选择的存储区添加到第一管理信息。第二接收单元从主机接收数据的读请求。当读请求所请求读取的数据被写入第三存储区时,读取单元在第一模式下读取数据,而当读请求所请求读取的数据被写入第四存储区时,在第二模式下读取数据。与第二模式相比,在第一模式下的写入速度或读取速度较快。与第二模式相比,在第一模式下在同一存储区中可写入的信息的最大量较小。因此,可以根据情况获得SLC闪速存储器的优点和MLC闪速存储器的优点。
尽管描述了某些实施例,但是这些实施例仅通过实例给出,并不旨在限制本发明的范围。实际上,这里所述的新颖实施例可通过各种其他形式实现;此外,在不脱离本发明的精神的情况下,可在这里所述的实施例的形式上进行各种省略、替换和修改。所附权利要求及其等同物旨在涵盖落入本发明的范围和精神内的这样的形式或修改。

Claims (6)

1.一种存储器***,包括:
非易失性半导体存储器,其包括多个第一存储区,并且能够具有:
一个或多个第二存储区,其被包括在所述多个第一存储区中,并且在其中没有存储有效数据,所述有效数据是存储在与逻辑地址相关联的物理地址处的数据,所述逻辑地址是从主机指定的地址,所述物理地址指示在半导体存储器的存储区中的数据存储位置;
多个第三存储区,其被包括在所述多个第一存储区中,并且是通过在其中复制和存储从主机接收的数据而获得的;以及
多个第四存储区,其被包括在所述多个第一存储区中,并且是通过在其中复制和存储在所述第三存储区中存储的或在所述第四存储区中存储的数据而获得的;
第一存储单元,被配置为在其中存储第一管理信息,所述第一管理信息指示所述多个第一存储区的哪个区域是所述第二存储区;
第二存储单元,被配置为在其中存储第二管理信息,所述第二管理信息指示所述多个第一存储区的哪些区域是所述第三存储区;
第三存储单元,被配置为在其中存储第三管理信息,所述第三管理信息指示所述多个第一存储区的哪些区域是所述第四存储区;
第一接收单元,被配置为接收写入请求数据,所述写入请求数据是通过所述主机请求被写入的数据;
获取单元,被配置为基于所述第一管理信息而从所述一个或多个第二存储区获取一个第二存储区;
第一写入单元,被配置为在第一模式下将所述写入请求数据写入到通过所述获取单元获取的所述第二存储区;
选择单元,被配置为,响应于所述第二存储区的数目小于或等于第一阈值,基于所述第二管理信息而从所述多个第三存储区选择多个存储区,或者基于所述第三管理信息而从所述多个第四存储区选择多个存储区,以使所述选择限于所述第三存储区或所述第四存储区,而不是限于所述第三存储区和所述第四存储区二者;
第二写入单元,被配置为在第二模式下将在通过所述选择单元选择的存储区中存储的有效数据写入到通过所述获取单元获取的所述第二存储区;
管理信息更新单元,被配置为,当所述第二写入单元写入所述有效数据时,从所述第二管理信息或所述第三管理信息删除所选择的存储区,并将所选择的存储区添加到所述第一管理信息;
第二接收单元,被配置为从所述主机接收数据的读请求;以及
读取单元,被配置为,当所述读请求所请求读取的数据已被写入所述第三存储区时,所述读取单元在所述第一模式下读取数据,而当所述读请求所请求读取的数据已被写入所述第四存储区时,所述读取单元在所述第二模式下读取数据;
其中
与所述第二模式相比,在所述第一模式下的写入速度较快;且
与所述第二模式相比,在所述第一模式下在同一存储区中可写入的信息的最大量较小。
2.如权利要求1所述的存储器***,其中
所述非易失性半导体存储器还包括:
第五存储区,其包括多个第三存储区;以及
第六存储区,其包括多个第四存储区,并且
所述选择单元从所述第五存储区选择所述多个第三存储区,或者从所述第六存储区选择所述多个第四存储区,
所述第二写入单元将在所选择的存储区中存储的有效数据写入到一个第二存储区,且
所述第二写入单元所写入的所述有效数据通过在所述第三存储区中存储的数据来配置,或者通过在所述第四存储区中存储的数据来配置。
3.如权利要求2所述的存储器***,其中
当所述第六存储区中的总有效数据比率小于预定阈值时,所述选择单元在所述第六存储区中选择所述第四存储区,且
所述第六存储区中的所述总有效数据比率是在所述第六存储区中存储的有效数据的总量相对于所述第六存储区的总容量的比率。
4.如权利要求2所述的存储器***,其中
当所述第五存储区中的总有效数据比率小于所述第六存储区中的总有效数据比率时,所述选择单元选择在所述第五存储区中包括的所述第三存储区,而当所述第六存储区中的总有效数据比率小于所述第五存储区中的总有效数据比率时,所述选择单元选择在所述第六存储区中包括的所述第四存储区,
所述第五存储区中的所述总有效数据比率是在所述第五存储区中存储的有效数据的总量相对于所述第五存储区的总容量的比率,且
所述第六存储区中的所述总有效数据比率是在所述第六存储区中存储的有效数据的总量相对于所述第六存储区的总容量的比率。
5.如权利要求4所述的存储器***,还包括:数据量管理单元,其被配置为根据每个块的操作模式基于块容量而计算所述第五存储区的总有效数据比率或所述第六存储区的总有效数据比率。
6.如权利要求1所述的存储器***,其中
所述半导体存储器是包括多个存储基元的MLC(多级基元)闪速存储器,
所述MLC闪速存储器在其中存储每基元1比特数据或每基元多比特数据,
在所述第一模式下,通过2值模式将每基元1比特数据写入所述MLC闪速存储器,以及
在所述第二模式下,通过多值模式将每基元多比特数据写入所述MLC闪速存储器。
CN201110256131.2A 2010-09-24 2011-08-31 存储器*** Active CN102419735B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2010214221A JP5066241B2 (ja) 2010-09-24 2010-09-24 メモリシステム
JP214221/2010 2010-09-24

Publications (2)

Publication Number Publication Date
CN102419735A CN102419735A (zh) 2012-04-18
CN102419735B true CN102419735B (zh) 2015-02-25

Family

ID=44651135

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110256131.2A Active CN102419735B (zh) 2010-09-24 2011-08-31 存储器***

Country Status (6)

Country Link
US (9) US8832357B2 (zh)
EP (1) EP2439645B1 (zh)
JP (1) JP5066241B2 (zh)
KR (1) KR101329937B1 (zh)
CN (1) CN102419735B (zh)
TW (1) TWI446168B (zh)

Families Citing this family (95)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8886990B2 (en) * 2011-01-27 2014-11-11 Apple Inc. Block management schemes in hybrid SLC/MLC memory
TWI494948B (zh) * 2011-01-31 2015-08-01 Phison Electronics Corp 用於非揮發性記憶體的資料寫入方法、控制器與儲存裝置
JP5674634B2 (ja) 2011-12-28 2015-02-25 株式会社東芝 コントローラ、記憶装置およびプログラム
JP5687639B2 (ja) 2012-02-08 2015-03-18 株式会社東芝 コントローラ、データ記憶装置及びプログラム
JP5687648B2 (ja) 2012-03-15 2015-03-18 株式会社東芝 半導体記憶装置およびプログラム
US9323667B2 (en) * 2012-04-12 2016-04-26 Violin Memory Inc. System and method for managing trim operations in a flash memory system using mapping tables and block status tables
JP5586718B2 (ja) * 2012-06-19 2014-09-10 株式会社東芝 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置
KR102147359B1 (ko) * 2012-06-29 2020-08-24 삼성전자 주식회사 비휘발성 메모리 장치의 관리 방법 및 비휘발성 메모리 장치
JP6102108B2 (ja) * 2012-07-24 2017-03-29 富士通株式会社 情報処理装置、データ提供方法、及びデータ提供プログラム
KR20140035769A (ko) * 2012-09-14 2014-03-24 삼성전자주식회사 연속 촬영 이미지 데이터를 처리할 수 있는 방법들과 장치들
US9690695B2 (en) * 2012-09-20 2017-06-27 Silicon Motion, Inc. Data storage device and flash memory control method thereof
TWI479492B (zh) * 2012-11-20 2015-04-01 Phison Electronics Corp 記憶體儲存裝置、其記憶體控制器與資料寫入方法
CN103914360B (zh) * 2013-01-05 2017-03-22 北京联想核芯科技有限公司 电子设备和数据备份恢复方法
US8954655B2 (en) * 2013-01-14 2015-02-10 Western Digital Technologies, Inc. Systems and methods of configuring a mode of operation in a solid-state memory
WO2014120193A1 (en) * 2013-01-31 2014-08-07 Hewlett-Packard Development Company, L. P. Non-volatile multi-level-cell memory with decoupled bits for higher performance and energy efficiency
US8990458B2 (en) 2013-02-28 2015-03-24 Kabushiki Kaisha Toshiba Controller, semiconductor storage device and method of controlling data writing
US9158678B2 (en) * 2013-03-13 2015-10-13 Kabushiki Kaisha Toshiba Memory address management system and method
TWI506430B (zh) * 2013-03-20 2015-11-01 Phison Electronics Corp 映射資訊記錄方法、記憶體控制器與記憶體儲存裝置
US9442670B2 (en) 2013-09-03 2016-09-13 Sandisk Technologies Llc Method and system for rebalancing data stored in flash memory devices
US9519577B2 (en) 2013-09-03 2016-12-13 Sandisk Technologies Llc Method and system for migrating data between flash memory devices
KR102140512B1 (ko) * 2013-10-16 2020-08-03 삼성전자주식회사 불휘발성 메모리 장치, 불휘발성 메모리 장치를 포함하는 불휘발성 메모리 시스템 및 불휘발성 메모리 시스템의 동작 방법
JP6139381B2 (ja) * 2013-11-01 2017-05-31 株式会社東芝 メモリシステムおよび方法
IN2013CH05362A (zh) 2013-11-21 2015-05-29 Sandisk Technologies Inc
KR102166924B1 (ko) * 2013-12-26 2020-10-16 삼성전자주식회사 저장 장치의 구동 방법
CN107037984B (zh) * 2013-12-27 2019-10-18 威盛电子股份有限公司 数据储存装置及其数据写入方法
US9305665B2 (en) 2014-03-31 2016-04-05 Kabushiki Kaisha Toshiba Memory system and method of controlling memory system
US9928169B2 (en) * 2014-05-07 2018-03-27 Sandisk Technologies Llc Method and system for improving swap performance
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
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
US9691452B2 (en) 2014-08-15 2017-06-27 Micron Technology, Inc. Apparatuses and methods for concurrently accessing different memory planes of a memory
US9582203B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by reducing a range of logical addresses
US9563362B2 (en) * 2014-09-02 2017-02-07 Sandisk Technologies Llc Host system and process to reduce declared capacity of a storage device by trimming
US9552166B2 (en) * 2014-09-02 2017-01-24 Sandisk Technologies Llc. Process and apparatus to reduce declared capacity of a storage device by deleting data
US9524105B2 (en) * 2014-09-02 2016-12-20 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by altering an encoding format
US9524112B2 (en) * 2014-09-02 2016-12-20 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by trimming
US9582212B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Notification of trigger condition to reduce declared capacity of a storage device
US9652153B2 (en) 2014-09-02 2017-05-16 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by reducing a count of logical addresses
US9582220B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Notification of trigger condition to reduce declared capacity of a storage device in a multi-storage-device storage system
US9563370B2 (en) * 2014-09-02 2017-02-07 Sandisk Technologies Llc Triggering a process to reduce declared capacity of a storage device
US9665311B2 (en) 2014-09-02 2017-05-30 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by making specific logical addresses unavailable
US9582193B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Triggering a process to reduce declared capacity of a storage device in a multi-storage-device storage system
US9519427B2 (en) * 2014-09-02 2016-12-13 Sandisk Technologies Llc Triggering, at a host system, a process to reduce declared capacity of a storage device
US9582202B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by moving data
US9582201B2 (en) * 2014-09-26 2017-02-28 Western Digital Technologies, Inc. Multi-tier scheme for logical storage management
US9632705B2 (en) 2014-12-17 2017-04-25 Sandisk Technologies Llc System and method for adaptive memory layers in a memory device
US9690491B2 (en) * 2014-12-17 2017-06-27 Sandisk Technologies Llc System and method for managing data in a memory device
JP6320322B2 (ja) * 2014-12-29 2018-05-09 東芝メモリ株式会社 キャッシュメモリ装置及びプログラム
CN105843748B (zh) * 2015-01-15 2019-06-11 华为技术有限公司 一种对内存中内存页的处理方法及装置
US9798470B2 (en) 2015-01-23 2017-10-24 Toshiba Memory Corporation Memory system for storing and processing translation information
US10346039B2 (en) * 2015-04-21 2019-07-09 Toshiba Memory Corporation Memory system
US9639282B2 (en) 2015-05-20 2017-05-02 Sandisk Technologies Llc Variable bit encoding per NAND flash cell to improve device endurance and extend life of flash-based storage devices
US9606737B2 (en) 2015-05-20 2017-03-28 Sandisk Technologies Llc Variable bit encoding per NAND flash cell to extend life of flash-based storage devices and preserve over-provisioning
JP2017011580A (ja) * 2015-06-24 2017-01-12 キヤノン株式会社 通信装置およびその制御方法、プログラム
KR102501751B1 (ko) 2015-09-22 2023-02-20 삼성전자주식회사 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법
KR102333220B1 (ko) 2015-09-24 2021-12-01 삼성전자주식회사 불휘발성 메모리 시스템의 동작 방법
US9910594B2 (en) 2015-11-05 2018-03-06 Micron Technology, Inc. Apparatuses and methods for concurrently accessing multiple memory planes of a memory during a memory access operation
US9946483B2 (en) 2015-12-03 2018-04-17 Sandisk Technologies Llc Efficiently managing unmapped blocks to extend life of solid state drive with low over-provisioning
US9946473B2 (en) 2015-12-03 2018-04-17 Sandisk Technologies Llc Efficiently managing unmapped blocks to extend life of solid state drive
CN105553727A (zh) * 2015-12-18 2016-05-04 北京奇虎科技有限公司 一种更新配置信息的方法、装置及***
TWI614605B (zh) * 2016-03-31 2018-02-11 慧榮科技股份有限公司 資料儲存裝置及其資料維護方法
TWI603193B (zh) * 2016-03-31 2017-10-21 慧榮科技股份有限公司 資料儲存裝置及其資料維護方法
TWI622923B (zh) * 2016-05-04 2018-05-01 群聯電子股份有限公司 整理指令處理方法、記憶體控制電路單元與記憶體儲存裝置
WO2018002999A1 (ja) * 2016-06-28 2018-01-04 株式会社日立製作所 記憶デバイス及びストレージ装置
CN107766262B (zh) * 2016-08-18 2021-09-14 北京忆恒创源科技股份有限公司 调节并发写命令数量的方法与装置
WO2018051387A1 (ja) * 2016-09-13 2018-03-22 株式会社日立製作所 情報処理システムおよびデータ格納方法
US10509722B2 (en) * 2017-08-31 2019-12-17 Micron Technology, Inc. Memory device with dynamic cache management
JP6805110B2 (ja) 2017-11-06 2020-12-23 株式会社日立製作所 ストレージシステム及びその制御方法
KR20190063054A (ko) 2017-11-29 2019-06-07 삼성전자주식회사 메모리 시스템 및 이의 동작 방법
TWI687809B (zh) * 2018-02-13 2020-03-11 點序科技股份有限公司 快閃記憶體儲存裝置與寫入管理方法
KR20190099570A (ko) * 2018-02-19 2019-08-28 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
JP6968016B2 (ja) * 2018-03-22 2021-11-17 キオクシア株式会社 ストレージデバイスおよびコンピュータシステム
TWI679538B (zh) * 2018-03-31 2019-12-11 慧榮科技股份有限公司 資料儲存系統之控制單元以及邏輯至物理映射表更新方法
US10761773B2 (en) * 2018-04-02 2020-09-01 Micron Technology, Inc. Resource allocation in memory systems based on operation modes
US10762967B2 (en) 2018-06-28 2020-09-01 Apple Inc. Recovering from failure in programming a nonvolatile memory
US10755787B2 (en) 2018-06-28 2020-08-25 Apple Inc. Efficient post programming verification in a nonvolatile memory
KR20200006829A (ko) * 2018-07-11 2020-01-21 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
KR102634631B1 (ko) * 2018-07-11 2024-02-08 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
JP2020035128A (ja) * 2018-08-29 2020-03-05 キオクシア株式会社 メモリシステム
KR102593541B1 (ko) * 2018-11-29 2023-10-25 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US10915444B2 (en) * 2018-12-27 2021-02-09 Micron Technology, Inc. Garbage collection candidate selection using block overwrite rate
CN109815166B (zh) * 2018-12-28 2020-10-09 深圳市德明利技术股份有限公司 一种存储数据的动态回收处理方法及存储装置
US10936455B2 (en) 2019-02-11 2021-03-02 Apple Inc. Recovery of data failing due to impairment whose severity depends on bit-significance value
CN111562880A (zh) * 2019-02-14 2020-08-21 英韧科技(上海)有限公司 一种数据存储装置、***及数据写入方法
TWI698749B (zh) * 2019-03-13 2020-07-11 慧榮科技股份有限公司 資料儲存裝置與資料處理方法
CN109979508A (zh) * 2019-03-15 2019-07-05 合肥沛睿微电子股份有限公司 固态硬盘装置与相关的固态硬盘控制电路
CN109992525A (zh) * 2019-04-01 2019-07-09 合肥沛睿微电子股份有限公司 快闪存储器控制器
US11023150B2 (en) 2019-07-01 2021-06-01 International Business Machines Corporation Block mode toggling using hybrid controllers
US10949126B2 (en) * 2019-07-25 2021-03-16 ScaleFlux, Inc. Solid-state storage device speed performance and endurance through host-side data classification and embedded write caching
US10915394B1 (en) 2019-09-22 2021-02-09 Apple Inc. Schemes for protecting data in NVM device using small storage footprint
CN111159058B (zh) * 2019-12-27 2022-03-04 深圳大普微电子科技有限公司 一种磨损均衡方法、装置及非易失性的存储设备
US10971215B1 (en) 2020-02-24 2021-04-06 Western Digital Technologies, Inc. Dynamically adjust data transfer speed for non-volatile memory die interfaces
KR20210128780A (ko) * 2020-04-17 2021-10-27 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이를 포함하는 저장 장치
CN111722804B (zh) * 2020-06-12 2022-07-08 浪潮电子信息产业股份有限公司 一种非易失内存调度的方法、***、设备及可读存储介质
US11550657B1 (en) 2021-09-01 2023-01-10 Apple Inc. Efficient programming schemes in a nonvolatile memory
JP2023039459A (ja) * 2021-09-09 2023-03-22 キオクシア株式会社 メモリシステムおよび方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5671388A (en) * 1995-05-03 1997-09-23 Intel Corporation Method and apparatus for performing write operations in multi-level cell storage device
CN101154189A (zh) * 2006-09-27 2008-04-02 三星电子株式会社 支持不同存储单元类型的非易失性存储器的设备和方法

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040133606A1 (en) * 2003-01-02 2004-07-08 Z-Force Communications, Inc. Directory aggregation for files distributed over a plurality of servers in a switched file system
US20040268098A1 (en) 2003-06-30 2004-12-30 Yoav Almog Exploiting parallelism across VLIW traces
US20060179236A1 (en) * 2005-01-13 2006-08-10 Hazim Shafi System and method to improve hardware pre-fetching using translation hints
US7363421B2 (en) * 2005-01-13 2008-04-22 Stmicroelectronics S.R.L. Optimizing write/erase operations in memory devices
JP4866117B2 (ja) * 2006-03-22 2012-02-01 パナソニック株式会社 不揮発性記憶装置、そのデータ書き込み方法、不揮発性記憶システム及びメモリコントローラ
KR100771521B1 (ko) 2006-10-30 2007-10-30 삼성전자주식회사 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법
JP2010509704A (ja) * 2006-11-14 2010-03-25 ラムバス・インコーポレーテッド 低エネルギーメモリコンポーネント
KR100875539B1 (ko) * 2007-01-17 2008-12-26 삼성전자주식회사 프로그램 방식을 선택할 수 있는 메모리 시스템
US8370562B2 (en) 2007-02-25 2013-02-05 Sandisk Il Ltd. Interruptible cache flushing in flash memory systems
TW200841343A (en) 2007-04-02 2008-10-16 Apacer Technology Inc A data storage device consisting of NAND (Not-AND) flash memory and its data storing method
JP2008257773A (ja) * 2007-04-02 2008-10-23 Toshiba Corp 不揮発性半導体記憶装置、不揮発性半導体記憶装置の制御方法、不揮発性半導体記憶システム、及びメモリカード
JP2008276733A (ja) * 2007-04-06 2008-11-13 Toshiba Corp メモリシステム
US20080282024A1 (en) * 2007-05-09 2008-11-13 Sudeep Biswas Management of erase operations in storage devices based on flash memories
US7743203B2 (en) * 2007-05-11 2010-06-22 Spansion Llc Managing flash memory based upon usage history
JP5087347B2 (ja) * 2007-09-06 2012-12-05 株式会社日立製作所 半導体記憶装置及び半導体記憶装置の制御方法
US8200904B2 (en) 2007-12-12 2012-06-12 Sandisk Il Ltd. System and method for clearing data from a cache
TWI397912B (zh) 2008-02-13 2013-06-01 Genesys Logic Inc 調整存取效能的快閃記憶體儲存裝置
JP4510107B2 (ja) * 2008-03-12 2010-07-21 株式会社東芝 メモリシステム
TWI425523B (zh) * 2008-03-25 2014-02-01 Asmedia Technology Inc 混合型快閃儲存裝置及其操作方法
TWI437429B (zh) 2008-06-04 2014-05-11 A Data Technology Co Ltd 多通道混合密度記憶體儲存裝置及其控制方法
US8407400B2 (en) 2008-11-12 2013-03-26 Micron Technology, Inc. Dynamic SLC/MLC blocks allocations for non-volatile memory
JP4461187B1 (ja) * 2008-12-24 2010-05-12 株式会社東芝 不揮発性半導体メモリドライブ装置、情報処理装置および不揮発性半導体メモリドライブ装置における記憶領域の管理方法
JP2010152778A (ja) * 2008-12-26 2010-07-08 Hitachi Ulsi Systems Co Ltd 半導体記憶装置
JP5221332B2 (ja) * 2008-12-27 2013-06-26 株式会社東芝 メモリシステム
US20100169540A1 (en) 2008-12-30 2010-07-01 Sinclair Alan W Method and apparatus for relocating selected data between flash partitions in a memory device
TWI385527B (zh) 2009-02-10 2013-02-11 Phison Electronics Corp Mlc nand型快閃記憶體儲存系統及其控制器與存取方法
US8438361B2 (en) * 2010-03-10 2013-05-07 Seagate Technology Llc Logical block storage in a storage device
KR101635446B1 (ko) * 2010-05-25 2016-07-04 삼성전자주식회사 반도체 메모리 장치의 블록 병합 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5671388A (en) * 1995-05-03 1997-09-23 Intel Corporation Method and apparatus for performing write operations in multi-level cell storage device
CN101154189A (zh) * 2006-09-27 2008-04-02 三星电子株式会社 支持不同存储单元类型的非易失性存储器的设备和方法

Also Published As

Publication number Publication date
US10877664B2 (en) 2020-12-29
US11893238B2 (en) 2024-02-06
US9910597B2 (en) 2018-03-06
US20200409555A1 (en) 2020-12-31
US20240126433A1 (en) 2024-04-18
US20180188963A1 (en) 2018-07-05
KR20120031434A (ko) 2012-04-03
US8832357B2 (en) 2014-09-09
US20170109050A1 (en) 2017-04-20
KR101329937B1 (ko) 2013-11-14
US11579773B2 (en) 2023-02-14
JP5066241B2 (ja) 2012-11-07
EP2439645B1 (en) 2020-01-22
US11216185B2 (en) 2022-01-04
JP2012068986A (ja) 2012-04-05
US20120079167A1 (en) 2012-03-29
US20140379968A1 (en) 2014-12-25
US10055132B2 (en) 2018-08-21
US20180356984A1 (en) 2018-12-13
TW201214116A (en) 2012-04-01
US20220100377A1 (en) 2022-03-31
EP2439645A1 (en) 2012-04-11
US10871900B2 (en) 2020-12-22
CN102419735A (zh) 2012-04-18
TWI446168B (zh) 2014-07-21
US20230152969A1 (en) 2023-05-18

Similar Documents

Publication Publication Date Title
CN102419735B (zh) 存储器***
US10747666B2 (en) Memory system
TWI644211B (zh) Memory system and control method for controlling non-volatile memory
US10915475B2 (en) Methods and apparatus for variable size logical page management based on hot and cold data
CN109240938B (zh) 存储***以及控制非易失性存储器的控制方法
US8612721B2 (en) Semiconductor memory controlling device
JP2019057172A (ja) メモリシステムおよび制御方法
US8954656B2 (en) Method and system for reducing mapping table size in a storage device
US11042305B2 (en) Memory system and method for controlling nonvolatile memory
JP6139381B2 (ja) メモリシステムおよび方法
US20140372675A1 (en) Information processing apparatus, control circuit, and control method
US20200341654A1 (en) Allocation of memory regions of a nonvolatile semiconductor memory for stream-based data writing
CN113419675B (zh) 用于存储器的写操作方法及读操作方法
KR100988388B1 (ko) 플래시 메모리 장치의 성능 향상 방법 및 이를 수행하는 플래시 메모리 장치
KR100994052B1 (ko) 플래시 변환 계층에서 수행되는 데이터 관리 방법 및 이를 수행하는 플래시 메모리 장치
US20240103759A1 (en) Data processing method for improving continuity of data corresponding to continuous logical addresses as well as avoiding excessively consuming service life of memory blocks and the associated data storage device

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
TR01 Transfer of patent right

Effective date of registration: 20170804

Address after: Tokyo, Japan

Patentee after: TOSHIBA MEMORY Corp.

Address before: Tokyo, Japan

Patentee before: Toshiba Corp.

TR01 Transfer of patent right
CP01 Change in the name or title of a patent holder

Address after: Tokyo, Japan

Patentee after: TOSHIBA MEMORY Corp.

Address before: Tokyo, Japan

Patentee before: Japanese businessman Panjaya Co.,Ltd.

Address after: Tokyo, Japan

Patentee after: Kaixia Co.,Ltd.

Address before: Tokyo, Japan

Patentee before: TOSHIBA MEMORY Corp.

CP01 Change in the name or title of a patent holder
TR01 Transfer of patent right

Effective date of registration: 20220208

Address after: Tokyo, Japan

Patentee after: Japanese businessman Panjaya Co.,Ltd.

Address before: Tokyo, Japan

Patentee before: TOSHIBA MEMORY Corp.

TR01 Transfer of patent right