CN102150142B - 存储器***和控制存储器***的方法 - Google Patents
存储器***和控制存储器***的方法 Download PDFInfo
- Publication number
- CN102150142B CN102150142B CN2009801354138A CN200980135413A CN102150142B CN 102150142 B CN102150142 B CN 102150142B CN 2009801354138 A CN2009801354138 A CN 2009801354138A CN 200980135413 A CN200980135413 A CN 200980135413A CN 102150142 B CN102150142 B CN 102150142B
- Authority
- CN
- China
- Prior art keywords
- daily record
- storage unit
- data
- write
- carry out
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/16—Protection against loss of memory contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Memory System (AREA)
Abstract
在***启动之后,在将第一差异日志记录于第二存储单元中之前,将指示***正在运行的第一日志记录于所述第二存储单元中,并且在正常***暂停时,在所述差异日志之后,将指示所述***暂停的第二日志记录于所述第二存储单元中,并且在***启动时,基于所述第二存储单元中的所述第一日志和所述第二日志的经记录状态来判断上次执行了正常***暂停还是执行了不正确断电序列,由此容易并且可靠地检测不正确的断电。
Description
技术领域
本发明涉及包括非易失性半导体存储器的存储器***以及控制存储器***的方法。
背景技术
一些个人计算机(PC)采用硬盘设备作为二级存储设备。在这种PC中,已知用于备份在硬盘设备中存储的数据以防止数据由于一些故障而无效的技术。例如,当检测到改***盘设备中的数据的行为时,提取作为数据在改变之前的备份副本的快照,并产生对于数据作出改变的日志。然后,在每个特定时间重复提取新快照、使得在提取新快照之前在过去提取的日志无效、以及生成新日志的处理(例如,见专利文档1:美国专利申请特开No.2006/0224636的说明书)。在数据由于某些原因变为无效的情况下,可通过参照快照和日志来恢复数据。
近年来,作为易失性半导体存储设备的NAND型闪存的容量急剧增加。结果,作为安装有NAND型闪存的存储器***的固态驱动器(SSD)引起注意。闪存具有相比于磁盘驱动器例如高速和重量轻的优点。然而,在专利文档1中公开的技术不能够像在具有硬盘设备作为二级存储设备的PC中存储的数据的备份的情况那样,应用于在具有NAND型闪存作为二级存储设备的这种PC中存储的数据的备份。这是因为应用多值存储器技术(其中等于或大于2的多条数据(多值数据)可在一个存储器单元中存储)来增加NAND型闪存的容量(例如,见专利文档2:日本专利申请特开No.2004-192789)。
发明内容
本发明的一个方面提供一种存储器***,包括:第一存储单元,其为易失性的;第二存储单元,其为非易失性的,并且连接至所述第一存储单元;读取/写入控制单元,其基于管理表执行从所述第二存储单元的数据读取以及向所述第二存储单元的数据写入,在所述管理表中,逻辑地址与所述第二存储单元中的数据存储位置关联;日志控制单元,其将所述管理表传送至所述第一存储单元,并且在更新所述第一存储单元上的所述管理表的事件发生时,将所述管理表的更新前后的差异信息作为差异日志存储至所述第一存储单元中;日志反映单元,其执行提交处理,所述提交处理用于将所述差异日志存储于所述第二存储单元中,并且在建立第一条件时,在存储于所述第一存储单元中的所述管理表中反映所述差异日志;操作状态管理单元,其在***启动之后在所述日志反映单元将所述差异日志存储至所述第二存储单元之前,将第一日志存储至所述第二存储单元中;并且在执行正常***暂停时,将第二日志存储至所述第二存储单元中;以及管理信息恢复单元,其检测存储于所述第二存储单元中的所述第一日志、所述差异日志、和所述第二日志中的至少一个;并且判断是否执行正常***暂停。
附图说明
图1是SSD 100的配置实例的框图。
图2A和2B是示出在NAND存储器芯片中包括的一个物理块的配置实例和四元数据存储***中的阈值分布的示意图。
图3是驱动控制电路的硬件内部配置实例的框图。
图4是处理器的功能配置实例的框图。
图5是在NAND存储器和动态随机存取存储器(DRAM)中形成的功能配置的框图。
图6是示出LBA逻辑地址的视图。
图7是示出数据管理单元中的管理表的配置实例的视图。
图8是概念性示出快照和日志的产生状态的视图。
图9是示出写入高速缓存(WC)中的写入处理的流程图。
图10是示出从WC至主要存储区(MS)的写入处理的操作过程的流程图。
图11是示出从WC至MS的写入处理的操作概念的示意图。
图12是示出低密度磁轨从WC至前段存储区(FS)的写入处理的操作过程的流程图。
图13是示出低密度磁轨从WC至FS的写入处理的操作概念的示意图。
图14是示出从FS至中间段存储区(IS)的数据重新定位的操作过程的流程图。
图15是示出从FS至IS的数据重新定位的操作概念的示意图。
图16是示出IS中的重组处理和紧缩处理的操作过程的流程图。
图17是示出其他管理表的视图。
图18是示出本发明中存在的基本部分的配置的功能框图。
图19是示出存储活动日志、待用日志、和差异日志的过程的流程图。
图20A和20B是示出当执行正常断电序列时和当发生异常断电时活动日志和待用日志的视图。
图21是示出片段空闲块(FFB)的概念图。
图22是示出在***启动时由数据管理单元执行的处理的流程图。
图23是安装有SSD的PC的全景图。
图24是安装有SSD的PC的***配置实例的视图。
具体实施方式
配置多值存储器的存储器单元具有包括叠栅结构的场效应晶体管结构,其中栅极绝缘膜、浮置栅极电极、栅极间绝缘膜、和控制栅极电极依次堆叠在通道区上,并且可根据在浮置栅极电极中聚集的电子的数目设置多个阈值电压。为了能够基于多个阈值电压执行多值存储,需要使与一条数据相应的阈值电压的分布极其狭窄。
由例如PC的主机装置记录的数据具有时间局部性和空间局部性。因此,当记录数据时,如果将数据直接记录在从外部指定的地址中,重写(即擦除处理)在时间上集中在特定区域中,并且擦除次数的偏差增加。因此,在使用NAND型闪存的存储器***中,执行用于相等地分散数据更新扇区的称为耗损平衡的处理。在耗损平衡处理中,例如,将主机装置指定的逻辑地址解译成非易失性半导体存储器的物理地址,从而相等地分散数据更新扇区。
在这样的地址解译中,数据的存储位置通常通过使用管理表来管理,例如,表示从外部提供的逻辑地址(LBA)和指示在NAND型闪存上存储的数据的位置的物理地址之间的地址解译表。在启动时,管理表从非易失性NAND型闪存加载到存储器(例如动态随机存取存储器(DRAM))上,其每当写入数据时被更新。在地址解译表中的相应关系需要例如通过备份技术(例如使用断电时的相应关系的快照和日志)来备份。
在SSD中,当在数据的写入期间(即使在未授权的断电时)不期望地发生断电时,有必要保持管理信息的一致性并可靠地保护其中已经记录的数据。因此,在SSD中也需要容易并且可靠地检测是执行了正常断电序列还是执行了不正确的断电序列的方法。
以下参照附图详细说明根据本发明的存储器***的示例性实施例。本发明不限于这些实施例。
以下参照附图说明本发明的实施例。在以下说明中,具有相同功能和配置的组件通过相同数字和标号来指示。仅当必要时执行组件的附加说明。
首先,定义在说明书中使用的术语。
物理页:NAND型闪存中可共同写入和读出的单位。
逻辑页:在SSD中设置的写入和读出单位。逻辑页与一个或多个物理页关联。
物理块:NAND型闪存中可独立擦除的最小单位。物理块包括多个物理页。
逻辑块:在SSD中设置的擦除单位。逻辑块与一个或多个物理块关联。逻辑块包括多个逻辑页。
扇区:来自主机的最小访问单位。例如,扇区大小为512字节(B)。
簇:SSD中用于管理“小数据(细粒度数据)”的管理单位。簇的大小等于或大于扇区的大小,并且被设置为等于主机的操作***(OS)采用的文件***的数据管理单位或逻辑页大小。例如,可设置簇的大小,从而作为簇大小两倍或更大自然数倍数的大小为逻辑页的大小。
磁轨:SSD中用于管理“大数据(粗粒度数据)”的管理单位。磁轨的大小被设置,使得作为簇大小两倍或更大自然数倍数的大小为磁轨的大小。例如,可将磁轨的大小设置为等于逻辑块的大小。
空闲块(FB):其中不包括有效数据并且不被分配用途的逻辑块。空闲块包括以下两个类型,即完全空闲块(CFB)和片段空闲块(FFB)。
完全空闲块(CFB):需要执行擦除操作以用于重用的空闲块。在执行擦除操作之后,可从位于逻辑块顶部的逻辑页执行写入。
片段空闲块(FFB):剩余没有数据写入其中的逻辑页并且可以在不执行擦除操作的情况下重用的空闲块。可以在没有数据写入其中的剩余逻辑页中执行写入。
坏块(BB):NAND型闪存上的由于大量错误而不可用作存储区域的物理块。例如,将没有正常完成擦除操作的物理块登记为坏块BB。
写入效率:在特定期间,逻辑块相对于从主机写入的数据量的擦除量的统计值。写入效率越小时,NAND型闪存的损耗度越小。
有效簇:存储与逻辑地址相应的最新数据(簇大小的数据)的簇。
无效簇:作为具有相同逻辑地址的数据写入在不同位置中的结果,存储没有被引用的非最新数据(簇大小的数据)的簇。
有效磁轨:存储与逻辑地址相应的最新数据(磁轨大小的数据)的磁轨。
无效磁轨:作为具有相同逻辑地址的数据写入在不同位置中的结果,存储没有被引用的非最新数据(磁轨大小的数据)的磁轨。
多级单元(MLC)模式:正常使用能够多值化存储的NAND型闪存中的上部页和下部页来执行写入的模式。通过将MLC模式下使用的一个或多个物理块关联来配置MLC模式的逻辑块。
伪单级单元(SLC)模式:仅使用能够多值化存储的NAND型闪存中的下部页来执行写入的模式。通过将伪SLC模式中使用的一个或多个物理块关联来配置伪SLC模式的逻辑块。在擦除操作之后,甚至可在MLC模式下使用在伪SLC模式下使用一次的物理块。
(第一实施例)
图1是SSD 100的配置实例的框图。SSD 100经由存储器连接接口(例如高级技术配件接口(ATA I/F)2)连接至主机设备1(以下主机1),例如PC或中央处理单元(CPU)核,并用作主机1的外部存储器。SSD 100可经由通信接口3(例如RS232C I/F)向用于调试和制造检查的装置200发送数据和从其接收数据。SSD 100包括作为非易失性半导体存储器的NAND型闪存(以下NAND存储器)10、作为控制器的驱动控制电路4、作为易失性半导体存储器的DRAM 20、电源电路5、用于状态显示的发光二极管(LED)6、检测驱动器中的温度的温度传感器7、和保险丝8。
电源电路5根据从主机1端上的电源电路提供的外部直流电源生成多个不同内部直流电源电压,并且将这些内部直流电源电压提供至SSD 100中的各个电路。电源电路5检测外部电源的上沿,生成通电重设信号,以及将通电重设信号提供至驱动控制电路4。保险丝8提供在主机1端上的电源电路和SSD 100中的电源电路5之间。当从外部电源电路提供过量电流时,保险丝被断开,以防止内部电路的故障。
在这种情况下,NAND存储器10包括4个并行操作元件10a至10d,其执行4个并行操作。并行操作元件10a至10d通过4个通道(ch0至ch3)连接至驱动控制电路4。并行操作元件10a至10d中的每个包括多个存储体(在这种情况下,4个存储体(存储体0至存储体3)),其能够执行存储体交错。每个存储体包括多个NAND存储器芯片(在这种情况下,2个存储器芯片(芯片0和芯片1))。每个存储器芯片分成例如面0和面1的两个区,其每个包括多个物理块。面0和面1包括彼此独立的***电路(例如行解码器、列解码器、页缓冲器、和数据高速缓存),并且可通过使用双倍速模式同时执行擦除、写入、和读取。这样,NAND存储器10的每个NAND存储器芯片可使用多个面执行多个通道的并行操作、多个存储体的存储体交错操作、以及双倍速模式的并行操作。每个存储器芯片可分成4个面,或者可在没有划分的情况下被配置。
DRAM 20用作在主机1和NAND存储器10之间的数据传送的高速缓存以及用于工作区的存储器。在用于DRAM 20的工作区的存储器中,存储通过在启动等时间加载NAND存储器10中存储的各个管理表获得的主表(快照)、作为管理表的改变差异的日志信息及其类似者。可使用铁电随机存取存储器(FeRAM)、磁阻随机存取存储器(MRAM)、相变随机存取存储器(PRAM)代替DRAM 20。驱动控制电路4经由DRAM 20执行在主机1和NAND存储器10之间的数据传送控制,并且控制SSD 100中的各个组件。驱动控制电路4向用于状态显示6的LED提供用于状态显示的信号。驱动控制电路4还具有从电源电路5接收通电重设信号以及向自身电路和SSD 100中的各个单元提供时钟信号的功能。
通过将多个物理块安排为数据擦除的单位来配置每个NAND存储器芯片。图2A是示出在NAND存储器芯片中包括的一个物理块的配置实例的等效电路图。每个物理块包括沿着X方向依次排列的(p+1)个NAND串(p是等于或大于0的整数)。在各个(p+1)个NAND串中包括的选择晶体管ST1的漏极分别连接至位线BL0至BLp,并且栅极共同连接至栅极线SGD。此外,选择晶体管ST2的源极共同连接至源线SL,并且栅极共同连接至栅极线SGS。
每个存储器单元晶体管MT包括金属氧化物半导体场效应晶体管(MOSFET),其包括在半导体衬底上形成的堆叠栅极结构。堆叠栅极结构包括经由栅极绝缘膜在半导体衬底上形成的电荷存储层(浮置栅极电极)和经由栅极间绝缘膜在电荷存储层上形成的控制栅极电极。在存储器单元晶体管MT中,阈值电压根据在浮置栅极电极中聚集的电子的数目改变。存储器单元晶体管MT根据阈值电压的差存储数据。存储器单元晶体管MT可倍配置为存储一个比特,或者可倍配置为存储多值(等于或大于两个比特的数据)。
存储器单元晶体管MT不限于具有浮置栅极电极的结构,并且可以是例如金属氧氮氧化矽(MONOS)型的结构,其可通过使得作为电荷存储层的氮化物膜接口捕获电子来调节阈值。类似地,MONOS结构的存储器单元晶体管MT可被配置为存储一个比特,或者可倍配置为存储多值(等于或大于两个比特的数据)。
在每个NAND串中,将(q+1)个存储器单元晶体管MT设置在选择晶体管ST1的源极和选择晶体管ST2的漏极之间,从而使其电流路径串联连接。换句话说,存储器单元晶体管MT在Y方向串联连接,从而存储器单元晶体管MT的相邻晶体管共享扩散区域(源极区域或漏极区域)。
存储器单元晶体管MT的控制栅极电极以从位于大部分漏极端上的存储器单元晶体管MT的顺序分别连接至字线WL0至WLq。因此,与字线WL0连接的存储器单元晶体管MT的漏极连接至选择晶体管ST1的源极。与字线WLq连接的存储器单元晶体管MT的源极连接至选择晶体管ST2的漏极。
在物理块的NAND串之间,字线WL0至WLq共同连接存储器单元晶体管MT的控制栅极电极。换句话说,在块中的相同行中出现的存储器单元晶体管MT的控制栅极电极连接至相同字线WL。与相同字线WL连接的(p+1)个存储器单元晶体管MT看作一个页(物理页)。通过每个物理页执行数据写入和数据读出。
在所述块之间,位线BL0至BLp共同连接选择晶体管ST1的漏极。换句话说,在多个块中的相同列中出现的NAND串连接至相同位线BL。
图2B是例如在一个存储器单元晶体管MT中存储两个比特的四元数据存储模式下的阈值分布的示意图。在四元数据存储模式下,可在存储器单元晶体管MT中存储由上部页数据“x”和下部页数据“y”定义的四元数据“xy”中的任一个。
作为四元数据“xy”,例如,以存储器单元晶体管MT的阈值电压的顺序分配数据“11”、“01”、“00”、和“10”。数据“11”是存储器单元晶体管MT的电压阈值为负的擦除状态。数据分配的规则不限于此。配置可以是在一个存储器单元晶体管MT中存储3个或更多个比特。
在下部页写入操作中,根据下部比特数据“y”的写入在具有数据“11”的存储器单元晶体管MT中选择性写入数据“10”(处于经擦除状态)。在上部页写入之前数据“10”的阈值位于在上部页写入之后数据“01”和数据“00”的阈值分布的中间附近,并且可宽于在上部页写入之后的阈值分布。在上部页写入操作中,对于数据“11”的存储器单元和数据“10”的存储器单元选择性应用上部比特数据“x”的写入。在存储器单元中写入数据“01”和数据“00”。在伪SLC模式下,仅使用下部页来执行写入。下部页写入快于上部页写入。
图3是驱动控制电路4的硬件内部配置实例的框图。驱动控制电路4包括数据访问总线101、第一电路控制总线102、和第二电路控制总线103。控制整个驱动控制电路4的处理器104连接至第一电路控制总线102。其中存储用于引导NAND存储器10中存储的各个管理程序(FW:固件)的引导程序的引导ROM 105经由ROM控制器106连接至第一电路控制总线102。从如图1所示的电源电路5接收通电重设信号并向各个单元提供重设信号和控制信号的时钟控制器107连接至第一电路控制总线102。
第二电路控制总线103连接至第一电路控制总线102。从如图1所示的温度传感器7接收数据的I2C电路108、向用于状态显示6的LED提供用于状态显示的信号的并行IO(PIO)电路109、和控制RS232C I/F 3的串行IO(SIO)电路110连接至第二电路控制总线103。
ATA接口控制器(ATA控制器)111、第一检错和纠错(ECC)电路112、NAND控制器113、和DRAM控制器114连接至数据访问总线101和第一电路控制总线102两者。ATA控制器111经由ATA接口2向主机1发送数据,以及从其接收数据。用作数据工作区和固件扩展区的静态随机存取存储器(SRAM)115经由SRAM控制器116连接至数据访问总线101。当启动在NAND存储器10中存储的固件时,通过在引导ROM 105中存储的引导程序将固件传送至SRAM 115。
NAND控制器113包括:NAND I/F 117,其执行与NAND存储器10对接的对接处理;第二ECC电路118;和直接存储器访问(DMA)传送控制的DMA控制器119,其执行NAND存储器10和DRAM 20之间的访问控制。第二ECC电路118执行第二校正码的编码,以及执行第一纠错码的编码和解码。第一ECC电路112执行第二纠错码的解码。第一纠错码和第二纠错码是例如汉明(Hamming)码、博斯-查德胡里-霍昆格姆(BoseChauduri Hocquenghem)(BCH)码、里德-所罗门(Reed Solomon)(RS)码、或低密度奇偶校验(LDPC)码。第二纠错码的纠错能力高于第一纠错码的纠错能力。例如,在国际专利申请PCT/JP2008/063344或国际专利申请PCT/JP2008/063345中公开了涉及这种纠错的技术,并且其内容合并在本申请中。
如图1所示,在NAND存储器10中,4个并行操作元件10a至10d经由均用于多个比特的4个通道(4ch)并行连接至驱动控制电路4中的NAND控制器113,从而可并行激励4个并行操作元件10a至10d。每个通道的NAND存储器10分成能够存储体交错的4个存储体,并且可同时访问每个存储器芯片的面0和面1。因此,可在用于每个通道的多达8个物理块(4个存储体×2个面)上几乎同时执行例如写入的处理。例如,在美国专利申请公开No.12/558965中公开涉及这样的存储体交错的技术,并且其全部内容合并在本申请中。
图4是通过处理器104实现的固件的功能配置实例的框图。由处理器104实现的固件的功能大致分成数据管理单元120、ATA命令处理单元121、安全管理单元122、引导加载器123、初始化管理单元124、和调试支持单元125。
数据管理单元120经由NAND控制器113和第一ECC电路112控制在NAND存储器10和DRAM 20之间的数据传送和关于NAND存储器10的各个功能。ATA命令处理单元121经由ATA控制器111和DRAM控制器114与数据管理单元120协作执行在DRAM 20和主机1之间的数据传送处理。安全管理单元122与数据管理单元120和ATA命令处理单元121协作管理各种安全信息。
当电源开启时,引导加载器123从NAND存储器10将管理程序(固件)加载到SRAM 115上。初始化管理单元123执行在驱动控制电路4中的各个控制器和电路的初始化。调试支持单元125处理经由RS232C接口从外部提供的用于调试的数据。数据管理单元120、ATA命令处理单元121、和安全管理单元122是通过处理器104执行在SRAM 115中存储的各个管理程序实现的主要功能单元。
在本实施例中,主要说明通过数据管理单元120实现的功能。数据管理单元120执行例如以下功能,ATA命令处理单元121请求作为存储设备的NAND存储器10和DRAM 20(响应于来自主机的各种命令,例如写入请求、高速缓存清空请求、和读取请求),在从主机给出的逻辑地址和NAND存储器10的物理地址之间的相应关系的管理,通过快照和日志对于管理信息的保护,使用DRAM 20和NAND存储器10进行快速和高度有效的数据读出和写入功能,和确保NAND存储器10的可靠性。
图5是在NAND存储器10和DRAM 20中形成的功能框的视图。在DRAM 20上配置的写入高速缓存(WC)21和读取高速缓存(RC)22***在主机1和NAND存储器10之间。WC 21在其中临时存储来自主机1的写入数据。RC 22在其中临时存储来自NAND存储器10的读取数据。通过数据管理单元120将NAND存储器10中的块分配给前段存储区(FS:前存储)12、中间段存储区(IS:中间存储)13、和主存储区(MS:主存储)11的各个管理区,以减少在写入期间对于NAND存储器10的擦除的量。FS 12以簇为单位(即“小单位”)来管理来自WC 21的数据,以及在短时间段存储小数据。IS 13以簇为单位(即“小单位”)来管理来自FS 12的溢出,以及在长时间段存储小数据。MS 11以磁轨为单位(即“大单位”)管理来自WC 21、FS 12、和IS 13的数据。例如,在国际专利申请PCT/JP08/073950中或国际专利申请PCT/JP08/067600中公开了以这个方式通过在每个管理区中分配NAND存储器10中的块来管理他们的技术,并且其全部内容合并在本申请中。
详细说明图5中所示的各个组件的特定功能配置。当主机1执行对于SSD 100的读取或写入时,主机1经由ATA I/F 2输入逻辑块寻址(LBA)作为逻辑地址。如图6所示,LBA是将从0的序号附加在扇区(大小:512B)的逻辑地址。在本实施例中,作为用于图5中所示的组件的WC 21、RC 22、FS 12、IS 13、和MS 11的管理单元,定义了用等于或大于LBA的第(s+1)低阶比特的位串按序形成的簇地址以及用等于或大于LBA的第(s+t+1)低阶比特的位串按序形成的磁轨地址。在本实施例中,磁轨和逻辑块的大小相同。逻辑块是与NAND存储器10的芯片上的多个物理块关联的虚拟块。在本实施例中,逻辑块与用于若干并行通道(在这种情况下,如图1中所示4个通道)的物理块关联。以类似方式,逻辑页与用于4个通道的物理页关联。从属于相同存储体的物理块选择逻辑块,以有效地使用存储体交错。
<读取高速缓存(RC)22>
RC 22是响应于来自主机1的读取请求临时存储来自NAND存储器10(FS 12、IS 13和MS 11)的读取数据的区域。基本上从RC 22执行向主机1的传送。当执行从WC 21向NAND存储器10的数据写入时,使具有相同逻辑地址的RC 22上的数据无效。
<写入高速缓存(WC)21>
WC 21是响应于来自主机1的写入请求临时存储来自主机1的写入数据的区域。以簇为单位来管理WC 21上的数据,并且以扇区为单位来执行有效数据的写入和管理。当WC 21的资源变得不足时,将WC 21上存储的数据清空至NAND存储器。当在与来自主机1的RC 22上的数据相同的逻辑地址中执行写入时,在WC 21上存储最新数据。因此,当在WC 21、RRC 22和NAND存储器10上存在与相同逻辑地址相应的数据时,该数据按WC 21、RC 22、和NAND存储器10的顺序为新的,从而WC 21上的数据倍优先化以返回至主机1。
<主存储区(MS)11>
MS 11以磁轨为单位执行数据管理,并且大部分用户数据存储在MS11中。将WC上具有许多有效簇的磁轨(高密度磁轨)从WC 21直接写入MS 11。此外,将无法由FS 12和IS 13管理的数据输入至MS 11。使LBA与输入至MS 11的磁轨的LBA相同的磁轨在逻辑块中无效,并且释放这个逻辑块。使属于LBA与输入至MS 11的磁轨的LBA相同的磁轨的簇在FS 12、IS 13中无效,并且释放其中所有簇无效的逻辑块。MS 11由MLS模式的多个逻辑块组成。在本实施例中,磁轨与逻辑块的大小相同,从而在FS 12或IS 13中执行的额外记录处理以及在IS 13中执行的紧缩(用于仅收集有效簇以生成新逻辑块和释放无效簇部分的处理)在MS 11中是不必要的。如果磁轨大小小于逻辑块大小,则可将在FS 12和IS 13中执行的额外记录处理以及在FS 13中执行的紧缩应用于MS 11。
<前段存储区(FS)12>
FS 12是适配先进先出(FIFO)结构的缓冲器,其中数据以簇为单位来管理,并且输入是收集多个簇的逻辑页为单位来执行。首先,将WC 21上具有较小数目的有效簇的磁轨(低密度磁轨)写入至FS 12中。FS 12具有FIFO结构,其中按数据写入的次序来配置逻辑块。当将LBA与FS 12中存在的簇的LBA相同的簇输入至FS 12时,足以使FS 12中的簇无效,并且不执行重写。使LBA与输入至FS 12的簇的LBA相同的簇在逻辑块中无效,并且释放逻辑块中的所有簇无效的逻辑块。将存储于达到FS 12的FIFO结构的末端的逻辑块中的簇看作来自主机1的具有低重写可能性的簇,并且在IS 13的管理下将该逻辑块整个重写定位至IS 13。在本实施例中,FS 12是由伪SLC模式的多个逻辑块组成,以加速写入。FS 12可由MLC模式的多个逻辑块组成。具有高更新频率的数据在通过FS 12时为无效的并且仅具有低更新频率的数据从FS 12溢出,使得FS 12可使具有低更新频率的数据与具有高更新频率的数据分离。因此,有可能降低紧缩在后续段的IS 13中频繁发生的可能性。
<中间段存储区(IS)13>
IS 13是用于存储具有低重写可能性的簇的缓冲器,并且以与FS 12相同的方式以簇为单位来执行数据的管理。当将LBA与IS 13中存在的簇的LBA相同的簇输入至FS 12和IS 13时,足以使IS 13中的簇无效,并且不执行重写。以与FS 12类似的方式,IS 13具有列表结构,其中从首先倍写入数据的逻辑块(从首先根据FS 12重写定位的逻辑块)依次配置逻辑块;然而,不同于FS 12的是,IS 13执行紧缩。当IS 13的容量饱和或用于FS 12和IS 13的管理表饱和时,执行紧缩(从IS 13收集有效簇并且将其重写至IS 13)或重组(将FS 12和IS 13的簇整合至磁轨中并且将其清空至MS 11)。在本实施例中,IS 13是由MLC模式和伪SLC模式的逻辑块的混合物组成。换句话说,从FS 12重新定位至IS 13的块是伪SLC模式的逻辑块;然而,当在IS 13中执行紧缩时,将该块重写至MLC模式的逻辑块。当FS 12是由MLC模式的逻辑块组成时,IS 13也仅由MLC模式的逻辑块组成。
图7是示出用于数据管理单元120控制和管理图5中所示的各个组件的管理表的视图。用于管理DRAM 20的表包括RC管理表23、WC磁轨表24、WC磁轨信息表25、WC高密度磁轨信息表26、和WC低密度磁轨信息表27。用于管理NAND存储器10的表包括磁轨表30、簇目录表31、簇表32、簇块信息表33、和逻辑至物理解译表40。用于管理NAND存储器10的表分成前向查询地址解译中所涉及的表和反向查询地址解译中所涉及的表。前向查询地址解译是用于从数据的LBA获得实际存储该数据的(逻辑块地址+簇位置)。反向查询地址解译是用于从(逻辑块地址+簇位置)获得数据的LBA。
<RC管理表23>
RC管理表23是用于管理从NAND存储器10传送至RC 22的数据。
<WC磁轨表24>
WC磁轨表24是用于从LBA查询关于在WC 21上存储的数据的WC磁轨信息的散列表,并且包括针对每个索引的多个项目(标签),所述每个索引是LBA的磁轨地址的最低有效位(LSB)的少量比特。每个标签存储LBA磁轨地址和指向与磁轨地址对应的WC磁轨信息的指针。
<WC磁轨信息表25>
WC磁轨信息表25包括:WC磁轨最近最少使用(LRU)信息表25a,用于通过使用LRU的双向连接列表来管理已存取WC磁轨信息的时间的排序;和WC磁轨空闲信息表25b,其管理空闲WC磁轨信息数目。当将数据从WC 21清空至NAND存储器10时,通过使用WC磁轨LRU信息表25a获取最早的已存取磁轨。
WC磁轨信息对应于在WC 21中存在的多个磁轨之一。
该WC磁轨信息包括以下内容:
(1)在WC 21中存在的磁轨地址、磁轨中的WC 21上的有效簇的数目、指示每个簇是否有效的信息、和WC中指示WC 21中的每个簇的位置的簇位置信息;
(2)指示在一个簇中包括的多个扇区之间存储有效数据的扇区的信息(扇区位图);以及
(3)磁轨状态信息(例如,有效、无效、在从ATA的数据传送期间、和在NAND存储器中写入期间)。在WC磁轨信息中,在存在有效簇的存储位置处管理在自身磁轨中存在的簇地址的LSB(t)比特;然而,管理簇地址的方法是任意的。例如,可管理在自身磁轨中存在的簇地址的LSB(t)比特自身(参见图6)。
<WC高密度磁轨信息表26>
WC高密度磁轨信息表26用于管理待写入至MS 11中的高密度(磁轨中有效簇的数目等于或大于特定百分比)磁轨信息,并且管理关于高密度磁轨及其数目的WC磁轨信息。
<WC低密度磁轨信息表27>
WC低密度磁轨信息表27用于管理待写入至FS 12中的低密度(磁轨中有效簇的数目小于特定百分比)磁轨信息,并且管理低密度磁轨的簇的总数。
<磁轨表30(前向查询)>
磁轨表30是用于从LBA的磁轨地址获得磁轨信息的表。磁轨信息包括以下内容:
(1)逻辑块地址(指示在其中存储磁轨的数据的逻辑块的信息);
(2)簇目录数目(当磁轨中的数据的至少一部分存储于FS 12或IS 13中时变得有效并且当磁轨中的数据存储于FS 12或IS 13中时指示针对每个磁轨而存在的簇目录表的表数目的信息);以及
(3)FS/IS簇的数目(指示磁轨中存储于FS 12或IS 13中的簇的数目并且用于确定是否指向重组的信息)。
<簇目录表31(前向查询)>
簇目录表31是用于在磁轨中的数据存储于FS 12或IS 13中时追踪逻辑块的中间表。针对每个磁轨提供簇目录表31。登记于每个簇目录表31中的簇目录信息是由指示簇表32的表数目的信息(簇表数目信息)的阵列组成。一条信息选自通过LBA的簇地址的LSB(t)比特中的少量上部比特排列于一个簇目录表31中的多条簇表数目信息中。
簇目录表31包括:簇目录LRU表31a,其用于通过使用LRU的双向连接列表以写入时间作为参考来管理该簇目录信息(簇表数目信息的阵列)以及相应磁轨地址的时间排序;以及簇目录空闲信息表31b,其通过双向连接列表来管理空闲簇目录以及相应磁轨地址。
<簇表32(前向查询)>
簇表32是与簇目录表31有关并且管理逻辑块中的簇位置的表,当将磁轨中的数据存储于FS 12或IS 13中时数据存储于该簇位置处。经由簇目录表31间接地从磁轨表30参考簇表32。簇表32实际上是针对多个簇的(逻辑块地址+簇位置)的阵列。一条信息选自通过LBA的簇位置的LSB(t)比特中的少许下部比特排列于一个簇表32中的(逻辑块地址+簇位置)的多条簇表数目信息。簇表32也在其中包括簇块信息的数目和关于簇位置的信息作为一个阵列。
<簇块信息表33(反向查询)>
簇块是逻辑块之间以簇为单位存储数据的块。簇块信息是用于管理FS12和IS 13的逻辑块的信息,并且指示存在于逻辑块中的簇的类型。按FS12和IS 13中的FIFO的次序来耦合多个簇块信息作为双向连接列表。
簇块信息包括以下内容:
(1)逻辑块地址;
(2)有效簇的数目;以及
(3)逻辑中包括的簇的LBA。
簇块信息表33包括用于管理空闲信息的簇块信息表33a、针对FS 12的簇块信息表33b、以及针对IS 13的簇块信息表33c。簇块信息表33a管理未使用的簇块信息,簇块信息表33b管理FS 12中包括的簇块信息,以及簇块信息表33c管理IS 13中包括的簇块信息。作为双向连接列表来管理簇块信息表33a至33c中的每个。反向查询地址解译的主要用途为IS 13的紧缩。使用反向查询地址解译来检查在作为紧缩目标的逻辑块中存储的簇的类型,以及将数据重写至不同位置。因此,在本实施例中,反向查询地址解译仅将以簇为单位存储数据的FS 12和IS 13用作目标。
<逻辑至物理解译表40(前向查询)>
逻辑至物理解译表40是用于管理关于逻辑块地址和物理块地址之间的解译及其类似物的信息的表。对于每个逻辑块地址,逻辑至物理解译表40包括指示属于逻辑块的多个物理块地址的信息、指示逻辑块地址的擦除次数的信息、以及关于簇块信息数目的信息。为了将某个LBA的数据重写至不同位置,需要使原始簇块中的LBA无效,从而需要从LBA追踪簇块。因此,将簇块信息的标识符存储在逻辑至物理解译表40的逻辑块的管理信息中。
(快照和日志)
通过每个管理表所管理的管理信息,可使主机中使用的LBA、SSD 100中使用的逻辑NAND地址(逻辑块地址+偏移)以及NAND存储器10中使用的物理NAND地址(物理块地址+偏移)彼此关联,从而可执行主机1与NAND存储器10之间的数据交换。
以上管理表中用于NAND存储器管理的表(例如图7中所示的磁轨表30、簇目录表31、簇表32、簇块信息表33、和逻辑至物理解译表40)存储于非易失性NAND存储器10的特定区中。在启动时,将存储于NAND存储器10中的每个管理表加载至易失性RAM 20的工作区(其由数据管理单元120使用)上,从而更新每个管理表。加载至DRAM 20的每个管理表称为主表。即使当电源关闭时,需要将主表恢复至电源关闭之前的状态,从而需要将主表存储在非易失性NAND存储器10的***。快照指示NAND存储器10上的整个非易失性管理表。直接将加载至NAND存储器10上的主表存储于NAND存储器中的操作也表示为“提取快照”。日志指示管理表的改变差异。如果针对主表的每个更新获取快照,则处理速度变慢,并且NAND存储器10中的写入的次数增加,从而通常仅将作为改变差异的日志记录在NAND存储器10中。在主表中反映日志并将其存储在NAND存储器10中的操作也称为“提交”。
图8是示出在数据更新时的快照和日志的更新状态的视图。当数据管理单元120更新数据时,将对主表进行的改变累积于DRAM 20上的日志(以下为“DRAM日志”)中。依据管理表的类型,直接更新主表,并将更新内容累积于DRAM日志中,或在不直接改变主表的情况下将更新内容记录于固定在DRAM日志上的改变区中。当执行数据读出或数据写入时,除了主表外,还参考累积的DRAM日志。
在数据更新变稳定之后,提交日志。在提交处理中,必要时在主表中反映DRAM日志的内容,并且进一步将其存储于NAND存储器10中以使其为非易失性。在例如处于正常断电序列中以及用于日志的存储区变得不足时的情况下,将快照存储于NAND存储器10中。在完成将日志或快照写入NAND存储器10中时,完成使管理表为非易失性的处理。例如,在国际专利申请PCT/JP2009/052597中公开了用于以此方式使管理信息为非易失性的技术,并且其全部内容合并在本申请中。
<读取处理>
简要地解释读取处理。当从ATA命令处理单元121输入读取命令和作为读出地址的LBA时,数据管理单元120搜遍RC管理表23和WC磁轨表24以检查与该LBA对应的数据是否存在于WC 21或RC 22中。在高速缓存命中的情况下,数据管理单元120读出WC 21或RC 22的对应于该LBA的数据,并且将该数据发送至ATA命令处理单元121。
如果在RC 22或WC 21中不存在命中,则数据管理单元120搜索作为搜索目标的数据存储于NAND存储器10的哪个部分中。如果数据存储于MS 11上,则数据管理单元120追踪LBA→磁轨表30→逻辑至物理解译表40,以获得MS上的数据。另一方面,如果数据存储于FS 12或IS 13上,则数据管理单元120追踪LBA→磁轨表30→簇目录表31→簇表32→逻辑至物理解译表40,以获得FS 12或IS 13上的数据。
<写入数据>
(WC21中的处理)
接下来,根据图9中所示的流程图简要地说明写入处理。在写入处理中,当从ATA命令处理单元121输入写入命令和作为写入地址的LBA时(步骤S100),数据管理单元120将由该LBA指定的数据写入WC 21中。具体地,数据管理单元120判断在WC 21中是否存在对应于写入请求的空闲区(步骤S110),并且在WC 21中存在空闲区时将由该LBA指定的数据写入WC中(步骤S150)。
另一方面,当WC 21不具有对应于写入请求的空闲区时,数据管理单元120通过参考用于DRAM管理的各种管理表来清空来自WC 21的数据,以将其写入NAND存储器10中,由此产生空闲区。具体地,数据管理单元120检查磁轨中的有效簇的数目(步骤S120),确定磁轨(其中磁轨中的有效簇的数目少于特定百分比)作为低密度磁轨,并且将其作为簇大小的数据清空至作为清空目的地的FS 12(步骤S140)。当清空目的地为FS12时,以逻辑页为单位写入次贵重的数据簇。
在步骤S120的判断中,当判断磁轨中的有效簇的数目等于或大于特定百分比时,这个磁轨倍确定为高密度磁轨,并且作为磁轨大小的数据倍清空至作为清空目的地的MS 11(步骤S130)。当清空目的地为MS 11时,将磁轨大小的数据直接写入整个逻辑块中。当存在多个作为写入目标的逻辑块时,通过使用双倍速模式或存储体交错来改善传送效率。
这样,在WC 21中产生空闲区之后,将由LBA指定的数据写入WC 21中(步骤S150)。根据写入WC 21中的数据或清空至NAND存储器10的数据来更新用于DRAM管理的各种管理表。
(从WC 21至MS 11的写入)
接下来,根据图10和图11说明高密度磁轨的从WC 21至MS 11的写入处理。图10为示出其操作过程的流程图,以及图11为示出其操作概念的示意图。
以如下的过程来执行对MS 11的写入。除了为清空目标的高密度磁轨之外,数据管理单元120可选择可通过利用存储体交错来对其并行执行写入的多个高密度磁轨。
1.数据管理单元120在DRAM 20上产生磁轨的数据影像(填补处理)(步骤S200)。具体地,从NAND存储器10读出不存在于WC 21中的簇和不保持WC 21中的所有扇区的簇,以将其与WC 21中的数据整合。
2.数据管理单元120固定来自MS 11的CFB的逻辑块(磁轨块)(步骤S210)。磁轨块为逻辑块中以磁轨为单位在其中存储数据的块。
3.数据管理单元120将步骤S200中产生的磁轨的数据影像写入步骤S210中固定的逻辑块中(步骤S220)。
4.数据管理单元120检查来自该磁轨的LBA的磁轨信息,将该磁轨信息与对应于写入的逻辑块的逻辑块地址关联,以及将其登记于用于NAND存储器管理的所需表中(步骤S230)。
5.数据管理单元120使WC 21和NAND存储器10中的旧数据无效(步骤S240)。具体地,数据管理单元120使WC 21中被清空至MS 11的高速缓存数据以及NAND存储器10中用于步骤S200的填补处理中的数据在管理表上从有效状态变为无效状态,从而使其无效。
(从WC 21至FS 12的写入)
接下来,根据图12和图13说明低密度磁轨的从WC 21至MS 11的写入处理。图12为示出其操作过程的流程图,以及图13为示出其操作概念的示意图。
向FS 12的写入通过以下操作来执行:在DRAM 20上产生簇的数据影像(填补处理)以及通过使用伪SLC模式在新固定的逻辑块(簇块)中以逻辑页为单位执行写入。作为待固定的逻辑块,将具有能够进行写入的等于或大于待写入的数据影像的逻辑页的FFB优先化。如果FFB不存在,则使用CFB。以如下过程来执行FS 12中的写入。
用于将低密度磁轨的数据从WC 21写入至FS 12的逻辑块(簇块)称为FS输入缓冲器(FSIB)。除了为清空目标的低密度磁轨之外,数据管理单元120可涉及其他低密度磁轨,使得待写入的簇数据量与伪SLC模式的逻辑块边界一致。
1.数据管理单元120判断低密度磁轨中的从WC 21输入的总数据量(步骤S300)。当所判断的总数据量较小时(即,当有效簇的数目小于特定阈值时),数据管理单元120将其中可写入数据的FFB固定为FSIB(步骤S310)。
2.当数据管理单元120判断低密度磁轨中的从WC 21输入的总数据量较大时(即,当有效簇的数目等于或大于特定阈值时),数据管理单元120将CFB固定为FSIB(步骤S320)。此时,将能够并行写入数据的多个逻辑块固定为FSIB。
3.数据管理单元120产生待写入DRAM 20上的簇的数据影像(步骤S330)。具体地,对于不保持WC 21中的所有扇区的簇,数据管理单元120从NAND存储器10读出不存在于WC 21上的扇区的数据,以将其与WC 21上的扇区的数据整合。
4.数据管理单元120将WC 21上的簇以及工作区上所产生的簇影像写入FSIB中(步骤S340)。
5.数据管理单元120将这个FSIB上的簇块信息添加至针对FS的簇块信息表33b(步骤S350)。
6.数据管理单元120将低密度磁轨上的写入至FSIB中的簇目录信息与对应磁轨地址重新***至簇目录LRU表31a的末端(步骤S360)。
(从FS 12至IS 13的重新定位)
接下来,根据图14和图15说明从FS 12至IS 13的数据重新定位。图14为示出其操作过程的流程图,以及图15为示出其操作概念的示意图。
数据管理单元120判断在FS 12的管理下逻辑块的数目是否超过逻辑块的特定最大数目(步骤S400)。如图15所示,当在FS 12的管理下逻辑块的数目超过逻辑块的特定最大数目时,数据管理单元120将从FS 12溢出的逻辑块直接重新定位至IS 13。在本实施例中,FS 12是由伪SLC模式的多个逻辑块组成,并且伪SLC模式的逻辑块是从FS 12直接重新定位至IS 13。根据溢出逻辑块中有效簇的数目及其类似物通过如下规则来确定一处理单位中待重新定位的逻辑块的数目(步骤S410)。
从FS 12的最早逻辑块添加经重新定位的逻辑块,从而溢出逻辑块中的簇的总数目变得接近于MLC模式的逻辑块的边界(即,接近于一个逻辑块的簇的数目(2t)或其倍数(m ×2t:m为自然数))。例如,当溢出逻辑块中的簇的数目为2t与2t+1之间的值时,作为重新定位目标的逻辑块的数目增加,从而簇的数目接近于2t+1(包括2t+1)。使得簇的数目接近于MLC模式的一个逻辑块的边界,以在紧缩之后在逻辑块中容纳尽可能多的有效簇。
当簇的数目超过可同时在IS 13中经过紧缩的簇的数目z时,设定逻辑块的数目,使得簇的数目等于或小于这个簇的数目z。
将上限设置为在一个处理中待重新定位的逻辑块的数目。设定这个极限,用于防止在IS 13的管理下逻辑块的数目的临时增加。
将由此确定为重新定位目标的逻辑块从FS 12重新定位至IS 13(步骤S420)。
(IS 13中的紧缩和重组)
接下来,根据图16中所示的流程图说明IS 13中的紧缩处理和重组处理。
数据管理单元120判断在IS 13的管理下逻辑块的数目是否超过逻辑块的特定最大数目(步骤S500)。当在IS 13的管理下逻辑块的数目超过逻辑块的特定最大数目时,数据管理单元120执行对MS 11的数据重新定位(重组处理)以及紧缩处理,以抑制在IS 13的管理下逻辑块的数目使其等于或小于逻辑块的最大数目(步骤S510)。当数据擦除单位(逻辑块)与数据管理单位(簇)不同时,根据NAND存储器10的重写的进程,无效数据使逻辑块为多孔的(porous)。当处于该多孔状态的逻辑块增加时,实质上可用的逻辑块减少,并且无法有效地使用NAND存储器10的存储区。因此,执行用于收集有效簇并将其重写在不同逻辑块中的称为紧缩的处理。重组处理是将FS 12和IS 13的簇的整合至磁轨中并将其清空至MS11的处理。
随后,更详细地说明这个实施例的基本部分。如图17所示,用于NAND存储器管理的表包括完整空闲块管理表(CFB管理表)300、片段空闲块管理表(FFB管理表)310、活动块管理表(AB管理表)320、和坏块管理表(BB管理表)330,其不同于图7中所示的管理表。
CFB管理表300用于管理CFB。CFB是FB,其在使用之前立即擦除逻辑块,并且在擦除状态下被写入,并且可将数据从位于逻辑块顶部的逻辑页写入其中。在本实施例中,在MS 11、FS 12和IS 13中使用CFB。CFB管理表300包括两种结构,即,返回列表和获取列表。返回FIFO列表用于保持在特定时间段期间没有使用的逻辑块以及释放逻辑块,并且按照擦除次数来排序。在接收到CFB的获取请求后提供分配列表,并且按照擦除的次数来排序(具有较少次数的逻辑块位于列表的顶部)。根据擦除的次数将返回列表220a推出的块***至分配列表的中间。当请求CFB的分配时,数据管理单元120从分配列表的顶部取出CFB,并且分配该CFB。
FFB管理表310用于管理FFB。该FFB是逻辑块,其中尽管将无效数据一直写入至逻辑页的中间,但剩余逻辑页处于擦除状态,并且可另外将数据写入至剩余逻辑页。在FS 12和IS 13中使用FFB。在FFB管理表310中,作为针对每一数目个空闲逻辑页的双向列表来管理用作FFB的逻辑块地址。FFB管理表310管理用于辨别写入数据的逻辑页(无效页)和没有写入数据的逻辑页(未使用的页)的信息。
AB管理表320是逻辑块(活动块AB)的列表,其中将用途从FB分配至MS 11、FS 12和IS 13,并且各个项目保持逻辑块地址。将最先登记的逻辑块定位于顶部。例如,AB管理表用于刷新处理。
BB管理表330用于以构成逻辑块的个体物理块为单位来管理坏块BB。例如,在BB管理表330中,将无法正常完成数据擦除的物理块登记为坏块BB。
图18是本实施例中的基本部分的功能配置的框图。NAND存储器10在其中存储:用户数据(存储单元)201,例如存储用户数据的MS 11、FS 12和IS 13;除了图7和图17中所示的管理表中用于DRAM管理的表之外,用于NAND存储器管理的各种表(图7中的磁轨表30、簇目录表31、簇表32、簇块信息表33、逻辑值物理解译表40、CFB管理表300、FFB管理表310、AB管理表320、和BB管理表330)202,其存储于NAND存储器10上的特定存储区中作为快照;以及NAND日志203,其包括差异日志(作为NAND管理表202的更新前后的差异的信息)、活动日志、和待用日志,如在NAND管理表202中所述NAND日志203存储于NAND存储器10上的特定存储区(非易失性日志区)中。
DRAM 20包括用作WC 21和RC 22的区域。此外,DRAM 20包括存储主表204的区域,主表204是在DRAM 20上加载的NAND管理表202。此外,DRAM 20包括存储DRAM日志205的区域,所述DRAM 205包括在更新主表204时更新前后的差异信息的差异日志,以及活动日志和待用日志。
作为数据管理单元的控制器120包括读取和写入控制单元210、日志控制单元211、日志反映单元212、操作状态管理单元213、和管理信息恢复单元214。本发明的每个实施例中的每个功能框可通过硬件和软件中的任一个或组合来实现。因此,以下大体上从每个功能框的功能的观点来解释每个功能框,从而清楚看出每个功能框是硬件和软件中的任一个。所述功能是实现为硬件还是软件依据特定实施例或施加于整个***上的设计约束。对于每个特定实施例,本领域普通技术人员可通过各种方法实现这些功能,并且确定这个实现包括在本发明的范围内。
读取和写入控制单元210基于主表204和DRAM日志205控制读出和写入。例如,读取和写入控制单元210根据从主机1经由主机I/F 2输入的命令和逻辑地址来执行对于DRAM 20(WC 21)的数据写入和从DRAM 20(RC 22)的数据读出。此外,例如,读取和写入控制单元210基于逻辑至物理解译表40及其类似物执行从DRAM 20(WC 21)至NAND存储器10的数据写入以及从NAND存储器10至DRAM 20(RC 22)的数据读出。
例如,日志控制单元211执行:
用于在***启动时将作为主表204的存储于NAND存储器10中的各种NAND管理表(快照)202传送至DRAM 20的处理;
用于累积和存储差异日志的处理,所述差异日志是当更新主表204的事件发生时(例如当读取和写入控制单元210执行对于NAND存储器10的数据写入时)DRAM日志205中的在主表204的更新前后的差异信息;以及
用于在建立特定条件时(例如,当正常断电序列发生或DRAM 20上的日志存储区(用于存储DRAM日志205的区域)变得不足时)将DRAM20上的主表存储于NAND存储器10中作为快照的快照处理。
当建立特定条件时(例如,当DRAM 20中的日志的量(DRAM日志205的量)达到某一量或达到在经更新的管理表(主表204)之间实现匹配的点时),日志反映单元212另外将DRAM日志205存储于包括NAND存储器10中的逻辑块的NAND日志(非易失性日志)203中,并且执行用于在主表204中反映DRAM日志205的提交处理。当执行快照处理或提交处理时,使已累积于DRAM 20上的DRAM日志205无效。用于存储该日志的逻辑块可以是伪SLC模式下的逻辑块,以实现高速度。
操作状态管理单元213执行用于检测不正确断电的日志记录处理,其中在***启动之后在日志反映单元212将第一差异日志记录于NAND日志203之前将指示***正在运行的活动日志记录于NAND日志203中,并且当执行正常***暂停时,指示***暂停的待用日志在差异日志或活动日志之后记录于NAND日志203中。
管理信息恢复单元214执行:
用于在***启动时基于活动日志和待用日志的经记录状态来检测NAND日志203中的活动日志、差异日志和待用日志中的至少一个,并且判断上次执行了正常***暂停还是执行了不正确断电序列的处理;以及
用于在判断执行了不正确断电序列时改变管理表从而释放所有FFB并且在随后将经释放的所有FFB用作CFB的处理。
图19是示出存储活动日志、待用日志和差异日志的过程的流程图。操作状态管理单元213管理作为***的SSD 100是处于SSD正在运行的活动状态还是SSD暂停的待用状态以作为电力模式信息。
假设在电力开启(将电力供应至电源电路5,产生内部电源和通电重设信号,并且初始化驱动控制电路4,从而***启动)之后,操作状态管理单元213立即将SSD 100的操作状态识别为待用状态(S1100)。
在电力开启(待用状态)之后,在接收到具有数据管理单元120从主机1访问NAND存储器10的可能性的命令后(例如,在初始化完成时,在请求激活时,以及在请求数据访问时),操作状态管理单元213将活动日志存储于NAND日志203中,并且随后,将SSD 100的操作状态转变为活动状态(步骤S1101)。
当一时间发生使得需要更新主表204时(例如,当执行对于NAND存储器10的数据写入时),日志控制单元211将差异日志(其为主表204的更新前后的差异信息)累积于DRAM日志205中(步骤S1102)。
当建立特定条件时,日志反映单元212另外将DRAM日志205(差异日志)存储于包括NAND存储器10的逻辑块的NAND日志203中,并且执行用于在主表204中反映DRAM日志205的提交处理(步骤S1103)。
在来自主机1的暂停请求(待用请求)时,操作状态管理单元213执行用于将WC 21上的数据写入NAND存储器10中以使数据非易失性的清空处理。与清空处理一起,日志控制单元211将差异日志(其为主表204的更新前后的差异信息)累积于DRAM日志205中(步骤S1104)。
日志反映单元212另外将DRAM日志205(差异日志)存储于包括NAND存储器10的逻辑块的NAND日志203中,并且执行用于在主表204中反映DRAM日志205的提交处理。此外,当建立特定条件时,日志控制单元211执行快照处理(步骤S1105)。
操作状态管理单元213将SSD 100的操作状态转变为待用状态,并且在差异日志之后将待用日志存储于NAND日志203中。在正常地写入待用日志之后,SSD 100可执行正常断电序列(步骤S1106)。
图20A示出当执行正常断电序列时在下一次***启动时的NAND日志203的状态,以及图20B示出当发生不正确断电时在下一次***启动时的NAND日志203的状态。
如图20A所示,在正常断电的情况下,首先记录活动日志,接下来记录差异日志(差异日志可能不存在),并且最后记录待用日志。由此,在正常序列的情况下,在待用状态下不更新数据。因为在接收到来自主机1的暂停请求之后执行该正常断电序列,所以不执行活动状态下的断电。
在电力开启之后,管理信息恢复单元214在初始化处理中从NAND存储器10读取NAND日志203,并且从前部开始扫描其内容。通常,内容从活动日志开始,接着差异日志,接着为待用日志,并且随后重复这个序列,并且最终该内容以待用日志结束。当首先记录活动日志并且最后记录待用日志时,管理信息恢复单元214判断执行了正常断电序列。
另一方面,如图20B所示,在不正确断电的情况下,仅存在活动日志,并且不在最后记录待用日志。即,通过存储活动日志可检测不正确断电,其中“执行向NAND存储器10中的写入,然而,日志的提交还未完成”。当识别到最后日志并非待用日志(为活动日志或差异日志)时,管理信息恢复单元214判断存在不正确的断电。
在不存在活动日志并且仅存在待用日志的情况下,在电力开启之后,当在将第一差异日志记录于NAND日志203之前发生不正确的断电时,由于先前的正常断电而最后记录待用日志,因此不能将不正确断电与正常断电辨别开。因此,如在本实施例中,有可能通过使用活动日志和待用日志以简单配置来检测不正确断电。
接下来说明在管理信息恢复单元214判断不正确的断电已发生时所执行的处理。在MLC NAND存储器中,当将上部页添加至已记录数据的物理块时,过去记录的下部页的内容可能丢失,并且在不限于SLC/MLCNAND存储器的NAND存储器中,在相对于一个物理页执行写入之后,可能无法读取该物理块中的数据。为了解决这些可能性,在本实施例中,采用FFB,其为逻辑块,其中尽管将无效数据一直写入至逻辑页的中间,但剩余逻辑页处于擦除状态(如图21所示)。在该FFB中,相对于剩余逻辑页执行额外写入。在本实施例中,在FS 12和IS 13中采用FFB。当作FS 12和IS 13来管理的FFB中的无效数据是FS 12和IS 13中的最初有效的数据,然而,其从WC 21重写至例如MS 11的另一处,并且在该逻辑块中变得无效。
为了实现对FFB的额外写入,在图7所示的针对各个逻辑块的簇块信息表33中管理用于辨别在擦除后已写入数据的逻辑页(有效页)与没有写入数据的未使用页的信息(FFB管理表310中管理的FFB管理信息)。需要将FFB管理信息写入至NAND存储器10中以使FFB管理信息为非易失性,从而可在SSD 100的断电期间使用信息。
然而,当不正确的断电发生同时将数据写入至FFB中并且将FFB管理信息写入至NAND存储器10中以使信息为非易失性(提交)时,出现问题。具体地,在下次启动SSD时,在将数据写入至具有未使用页的FFB中的某一逻辑页中之后,当在将数据提交至NAND存储器10之前发生不正确断电时(已将数据写入至FFB管理信息的逻辑页中),FFB管理信息处于未写入状态,尽管数据实际上已写入至FFB中。在这个状态下,为了管理的目的,将逻辑页看作未写入(未使用)的,因此,尝试重新将数据写入至逻辑页中,并且可能发生写入错误(数据错乱)。
因此,在日志或快照已写入至NAND存储器10中的时间点,管理表变为非易失性。当在将日志或快照写入至NAND存储器10中之前执行不正确断电序列时,在下一次启动时,管理表的状态返回至上次提交的时间点。应注意,虽然管理表的状态返回,但NAND存储器10中的FFB的额外记录状态不返回。
图22是示出在***启动时由数据管理单元120执行的处理的流程图。
管理信息恢复单元214在***启动时检测NAND日志203中的活动日志、差异日志和待用日志中的至少一个,并且基于活动日志和待用日志的经记录状态来判断上次执行正常***暂停还是执行不正确的断电(步骤S1200)。
当判断执行了正常***暂停(步骤S1200为“是”)时,管理信息恢复单元214基于最新快照和差异日志来恢复管理表(主表204和DRAM日志205)(步骤S1201)。
当判断执行了不正确断电(步骤S1200为“否”)时,管理信息恢复单元214编辑和改变这些条FFB管理信息,从而在下次写入数据时,在擦除逻辑块之后执行写入。具体地,在不正确断电之后,管理信息恢复单元214启动时执行用于将所有FFB重新定位至CFB的处理,即,用于重新定位FFB管理表310中管理的所有逻辑块(逻辑块地址)使其在CFB管理表300的控制下的处理。因此,解决了FFB中的写入状态与FFB管理信息之间的不一致性(步骤S1202)。
在执行用于将所有FFB重新定位至CFB的处理之后,管理信息恢复单元214基于最新的快照和差异日志来恢复管理表(主表204和DRAM日志205)(步骤S1203)。
日志反映单元212基于恢复的主表204和DRAM日志205再次获取快照(步骤S1204)。
因为在额外记录之前仅将无效数据存储于FFB中,所以即使在将逻辑块重新定位至CFB并且随后将其擦除时,也不存在问题。此外,在CFB的情况下,当不正确断电发生时,NAND存储器10中的CFB的管理表与状态之间发生不一致,并且尽管数据已写入至CFB中,但CFB管理信息仍处于未写入状态的情形发生。然而,因为紧接在写入之前在CFB中执行擦除,所以上述写入错误不发生。此外,当检测到不正确的断电时,再次获取快照,以使非易失性信息返回至稳定状态。
在本实施例中,通过添加操作状态管理单元213和管理信息恢复单元214来实现对不正确断电的检测以及FFB中的写入状态与FFB管理信息之间的不一致的解决方法。
在根据本实施例的SSD 100中,在***启动之后,在将第一差异日志记录于NAND日志203中之前,将指示***正在运行的活动日志记录于NAND日志203中,并且在正常***暂停时,在差异日志之后将指示***暂停的待用日志另外记录于NAND日志203中。在***启动时,基于NAND日志203中的活动日志和待用日志的经记录状态来判断上次已执行正常***暂停还是已发生不正确断电,由此能够容易和可靠的检测不正确的断电。
此外,在根据本实施例的SSD 100中,当检测到不正确的断电时,因为FFB经重新定位而处于CFB的控制下,所以FFB中的写入状态与FFB管理信息之间的不一致得以解决,并且可预先防止写入错误的发生。因此,有可能使用NAND型闪存来构建具有高可靠性的存储器***。
(第二实施例)
图23是安装有SSD 100的PC 1200的实例的透视图。PC 1200包括主体1201和显示单元1202。显示单元1202包括显示外壳1203和容纳于显示外壳1203中的显示设备1204。
主体1201包括底盘1205、键盘1206、和作为定点设备的触控板1207。底盘1205在其中包括主电路板、光盘设备(ODD)单元、卡槽和SSD 100。
卡槽经提供而邻近于底盘1205的***壁。***壁具有面向卡槽的开口1208。用户可经由开口1208将额外设备从底盘1205外部***至卡槽中或从卡槽移除额外设备。
SSD 100在安装于PC 1200上的状态下可用来替代传统硬盘驱动器(HDD)或在***至PC 1200中包括的卡槽中的状态下可用作额外设备。
图24是安装有SSD 100的PC 1200的***配置实例的视图。PC 1200包括CPU 1301、北桥1302、主存储区1303、视频控制器1304、音频控制器1305、南桥1309、基础输入/输出***只读存储区(BIOS-ROM)1310、SSD 100、ODD单元1311、嵌入式控制器/键盘控制器IC(EC/KBC)1312、和网络控制器1313。
CPU 1301是用于控制PC 1200的操作的处理器,并且执行从SSD 100载入至1303上的操作***。另外,当ODD单元1311能够对经安装的光盘执行读取处理和写入处理中的至少一个时,CPU 1301执行该处理。
此外,CPU 1301执行在BIOS-ROM 1310中存储的***BIOS。该***BIOS是用于控制PC 1200的硬件的计算机程序。
北桥1302是将CPU 1301的本地总线连接至南桥1309的桥接设备。北桥1302具有用于控制对主存储器1303的访问的存储区控制器。
此外,北桥1302具有执行经由加速通信端口(AGP)总线及其类似者与视频控制器1304通信和音频控制器1305通信的功能。
主存储器1303在其中临时存储计算机程序和数据,并且用作CPU1301的工作区。例如,主存储器1303例如由DRAM组成。
视频控制器1304是用于控制用作PC 1200的显示监视器的显示单元1202的视频在线控制器。
音频控制器1305是用于控制PC 1200的扬声器1306的音频重现控制器。
南桥1309控制低管脚数(LPC)总线1314上的每个设备以及***组件互连(PCI)总线1315上的每个设备。此外,南桥1309经由ATA接口控制SSD 100,所述SSD 100为存储各种类型的软件和数据
PC 1200以扇区为单位对SSD 100进行访问。经由ATA接口将写入命令、读取名、清空命令及其类似者输入至SSD 100。
南桥1309具有控制对BIOS-ROM 1310和ODD单元1311的访问的功能。
EC/KBC 1312是单芯片微计算机,用于电力管理的嵌入式控制器和用于控制键盘(KB)1206和触控板1207的键盘控制器集成在所述单芯片微计算机中。
EC/KBC 1312具有基于用户对电力按钮的操作来开启/关闭PC 1200的功能。例如,网络控制器1313是通信设备,其执行与例如因特网的外部网络的通信。
根据第二实施例的PC 1200将电力供应至SSD 100,并且还发出暂停请求(待用请求)至SSD 100。即使当不正确地阻碍从PC 1200至SSD 100的电力供应时,也可预先防止写入错误的发生。
对于本领域普通技术人员,将容易出现额外优点和修改。因此,本发明在其较宽方面中不限于这里所示和所述的特定细节和代表性实施例。因此,在不脱离如所附权利要求及其等同物限定的一般性发明概念的精神或范围的情况下可进行各种修改。
Claims (30)
1.一种存储器***,包括:
第一存储单元,其为易失性的;
第二存储单元,其为非易失性的,并且连接至所述第一存储单元;
读取/写入控制单元,其基于管理表执行从所述第二存储单元的数据读取以及向所述第二存储单元的数据写入,在所述管理表中,逻辑地址与所述第二存储单元中的数据存储位置关联;
日志控制单元,其将所述管理表传送至所述第一存储单元,并且在更新所述第一存储单元上的所述管理表的事件发生时,将所述管理表的更新前后的差异信息作为差异日志存储至所述第一存储单元中;
日志反映单元,其执行提交处理,所述提交处理用于将所述差异日志存储于所述第二存储单元中,并且在建立第一条件时,在存储于所述第一存储单元中的所述管理表中反映所述差异日志;
操作状态管理单元,其在***启动之后在所述日志反映单元将所述差异日志存储至所述第二存储单元之前,将指示***正在运行的第一日志存储至所述第二存储单元中;并且在执行正常***暂停时,将指示在正常***暂停时***暂停的第二日志存储至所述第二存储单元中;以及
管理信息恢复单元,其检测存储于所述第二存储单元中的所述第一日志、所述差异日志、和所述第二日志中的至少一个;并且判断是否执行正常***暂停。
2.如权利要求1所述的存储器***,其中所述日志反映单元和所述操作状态管理单元另外将所述第一日志、所述差异日志和所述第二日志存储至所述第二存储单元中的非易失性日志区域中,所述非易失性日志区域包括作为数据擦除单位的块。
3.如权利要求2所述的存储器***,其中所述操作状态管理单元在所述***启动之后在初始化已完成、请求激活或请求数据访问的任一时间点将所述第一日志存储至所述非易失性日志区域中。
4.如权利要求2所述的存储器***,其中所述操作状态管理单元在从主机装置接收到***暂停请求时将所述第二日志存储至所述非易失性日志区域中。
5.如权利要求4所述的存储器***,其中所述操作状态管理单元在从主机装置接收到所述***暂停请求时将所述第一存储单元中的数据清空至所述第二存储单元中。
6.如权利要求1所述的存储器***,其中所述管理信息恢复单元在所述第二日志未存储于所述第二存储单元中时判断未执行所述正常***暂停。
7.如权利要求2所述的存储器***,其中所述管理信息恢复单元在所述第二日志未存储于所述非易失性日志区域的末端时判断未执行所述正常***暂停。
8.如权利要求1所述的存储器***,其中所述第一条件包括以下条件中的至少一个:存储于所述第一存储单元的所述差异日志的量达到特定值的情况;以及所述管理表的更新达到一点,在该点处实现一致的情况。
9.如权利要求1所述的存储器***,其中所述日志控制单元执行快照处理,所述快照处理用于在建立第二条件时将存储于所述第一存储单元中的所述管理表存储至所述第二存储单元中。
10.如权利要求9所述的存储器***,其中所述第二条件包括以下情况中的至少一个:执行所述正常***暂停的情况;以及所述第一存储单元中所述差异日志的存储区域变得不足的情况。
11.如权利要求1所述的存储器***,其中所述日志反映单元在执行所述提交处理之后使存储于所述第一存储单元中的所述差异日志无效。
12.如权利要求9所述的存储器***,其中所述日志控制单元在执行所述快照处理之后使存储于所述第一存储单元中的所述差异日志无效。
13.如权利要求1所述的存储器***,其中
所述第二存储单元包括:第一块,在执行擦除操作之后从顶部页在所述第一块中执行写入;以及第二块,在所述第二块中写入无效数据直到页的中间,并且在不执行所述擦除操作的情况下另外对于没有数据写入于其中的页执行写入;以及
所述管理信息恢复单元在判断未执行所述正常***暂停时改变所述管理表,以释放所述第二块并将其用作所述第一块。
14.如权利要求2所述的存储器***,其中
所述第二存储单元包括:第一块,在执行擦除操作之后从顶部页在所述第一块中执行写入;以及第二块,在所述第二块中写入无效数据直到页的中间,并且在不执行所述擦除操作的情况下另外对于没有数据写入于其中的页执行写入;以及
所述管理信息恢复单元在判断未执行所述正常***暂停时改变所述管理表,以释放所述第二块并将其用作所述第一块。
15.如权利要求6所述的存储器***,其中
所述第二存储单元包括:第一块,在执行擦除操作之后从顶部页在所述第一块中执行写入;以及第二块,在所述第二块中写入无效数据直到页的中间,并且在不执行所述擦除操作的情况下另外对于没有数据写入于其中的页执行写入;以及
所述管理信息恢复单元在判断未执行所述正常***暂停时改变所述管理表,以释放所述第二块并将其用作所述第一块。
16.一种控制存储器***的方法,所述存储器***包括:第一存储单元,其为易失性的;以及第二存储单元,其为非易失性的,并且连接至所述第一存储单元,所述方法包括:
读取/写入控制处理,用于基于管理表执行从所述第二存储单元的数据读取以及向所述第二存储单元的数据写入,在所述管理表中,逻辑地址与所述第二存储单元中的数据存储位置关联;
日志控制处理,用于将所述管理表传送至所述第一存储单元,并且在更新所述第一存储单元上的所述管理表的事件发生时,将所述管理表的更新前后的差异信息作为差异日志存储至所述第一存储单元中;
日志反映处理,用于执行提交处理,所述提交处理用于将所述差异日志存储于所述第二存储单元中,并且在建立第一条件时,在存储于所述第一存储单元中的所述管理表中反映所述差异日志;
操作状态管理处理,用于在***启动之后在将所述差异日志存储至所述第二存储单元之前,将指示***正在运行的第一日志存储至所述第二存储单元中;并且在执行正常***暂停时,将指示在正常***暂停时***暂停的第二日志存储至所述第二存储单元中;以及
管理信息恢复处理,用于检测存储于所述第二存储单元中的所述第一日志、所述差异日志、和所述第二日志中的至少一个;并且判断是否执行正常***暂停。
17.如权利要求16所述的方法,其中所述日志反映处理和所述操作状态管理处理包括:另外将所述第一日志、所述差异日志和所述第二日志存储至所述第二存储单元中的非易失性日志区域中,所述非易失性日志区域包括作为数据擦除单位的块。
18.如权利要求17所述的方法,其中所述操作状态管理处理包括:在所述***启动之后在初始化已完成、请求激活或请求数据访问的任一时间点将所述第一日志存储至所述非易失性日志区域中。
19.如权利要求17所述的方法,其中所述操作状态管理处理包括:在从主机装置接收到***暂停请求时将所述第二日志存储至所述非易失性日志区域中。
20.如权利要求19所述的方法,其中所述操作状态管理处理包括:在从主机装置接收到所述***暂停请求时将所述第一存储单元中的数据清空至所述第二存储单元中。
21.如权利要求16所述的方法,其中所述管理信息恢复处理包括:在所述第二日志未存储于所述第二存储单元中时判断未执行所述正常***暂停。
22.如权利要求17所述的方法,其中所述管理信息恢复处理包括:在所述第二日志未存储于所述非易失性日志区域的末端时判断未执行所述正常***暂停。
23.如权利要求16所述的方法,其中所述第一条件包括以下条件中的至少一个:存储于所述第一存储单元的所述差异日志的量达到特定值的情况;以及所述管理表的更新达到一点,在该点处实现一致的情况。
24.如权利要求16所述的方法,其中所述日志控制处理包括:执行快照处理,所述快照处理用于在建立第二条件时将存储于所述第一存储单元中的所述管理表存储至所述第二存储单元中。
25.如权利要求24所述的方法,其中所述第二条件包括以下情况中的至少一个:执行所述正常***暂停的情况;以及所述第一存储单元中所述差异日志的存储区域变得不足的情况。
26.如权利要求16所述的方法,其中所述日志反映处理包括:在执行所述提交处理之后使存储于所述第一存储单元中的所述差异日志无效。
27.如权利要求24所述的方法,其中所述日志控制处理包括:在执行所述快照处理之后使存储于所述第一存储单元中的所述差异日志无效。
28.如权利要求16所述的方法,其中
所述读取/写入控制处理包括管理所述第二存储单元,所述第二存储单元包括:第一块,在执行擦除操作之后从顶部页在所述第一块中执行写入;以及第二块,在所述第二块中写入无效数据直到页的中间,并且在不执行所述擦除操作的情况下另外对于没有数据写入于其中的页执行写入;以及
所述管理信息恢复处理包括在判断未执行所述正常***暂停时改变所述管理表,以释放所述第二块并将其用作所述第一块。
29.如权利要求17所述的方法,其中
所述读取/写入控制处理包括管理所述第二存储单元,所述第二存储单元包括:第一块,在执行擦除操作之后从顶部页在所述第一块中执行写入;以及第二块,在所述第二块中写入无效数据直到页的中间,并且在不执行所述擦除操作的情况下另外对于没有数据写入于其中的页执行写入;以及
所述管理信息恢复处理包括在判断未执行所述正常***暂停时改变所述管理表,以释放所述第二块并将其用作所述第一块。
30.如权利要求21所述的方法,其中
所述读取/写入控制处理包括管理所述第二存储单元,所述第二存储单元包括:第一块,在执行擦除操作之后从顶部页在所述第一块中执行写入;以及第二块,在所述第二块中写入无效数据直到页的中间,并且在不执行所述擦除操作的情况下另外对于没有数据写入于其中的页执行写入;以及
所述管理信息恢复处理包括在判断未执行所述正常***暂停时改变所述管理表,以释放所述第二块并将其用作所述第一块。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008335559A JP5317690B2 (ja) | 2008-12-27 | 2008-12-27 | メモリシステム |
JP335559/2008 | 2008-12-27 | ||
PCT/JP2009/071920 WO2010074353A1 (en) | 2008-12-27 | 2009-12-28 | Memory system and method of controlling memory system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102150142A CN102150142A (zh) | 2011-08-10 |
CN102150142B true CN102150142B (zh) | 2013-12-04 |
Family
ID=42287930
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009801354138A Expired - Fee Related CN102150142B (zh) | 2008-12-27 | 2009-12-28 | 存储器***和控制存储器***的方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8725932B2 (zh) |
EP (1) | EP2324428B1 (zh) |
JP (1) | JP5317690B2 (zh) |
KR (1) | KR101186788B1 (zh) |
CN (1) | CN102150142B (zh) |
TW (1) | TWI437431B (zh) |
WO (1) | WO2010074353A1 (zh) |
Families Citing this family (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010186341A (ja) * | 2009-02-12 | 2010-08-26 | Toshiba Corp | メモリシステム |
JP4910035B2 (ja) * | 2009-11-13 | 2012-04-04 | 株式会社東芝 | 電子機器および通信制御方法 |
JP2011128998A (ja) | 2009-12-18 | 2011-06-30 | Toshiba Corp | 半導体記憶装置 |
US8576641B1 (en) * | 2010-02-26 | 2013-11-05 | Xilinx, Inc. | Method of and circuit for providing non-volatile memory in an integrated circuit |
IL208641A0 (en) * | 2010-10-12 | 2010-12-30 | Eci Telecom Ltd | Method for accelerating start up of a computerized system |
JP2012108627A (ja) * | 2010-11-15 | 2012-06-07 | Toshiba Corp | メモリシステム |
US8495338B2 (en) * | 2010-12-03 | 2013-07-23 | Micron Technology, Inc. | Transaction log recovery |
JP5570406B2 (ja) * | 2010-12-14 | 2014-08-13 | 株式会社日立製作所 | メモリコントローラ、及びデータ記録装置 |
JP2012128645A (ja) | 2010-12-15 | 2012-07-05 | Toshiba Corp | メモリシステム |
JP2012128643A (ja) | 2010-12-15 | 2012-07-05 | Toshiba Corp | メモリシステム |
JP5535128B2 (ja) | 2010-12-16 | 2014-07-02 | 株式会社東芝 | メモリシステム |
JP2012128816A (ja) | 2010-12-17 | 2012-07-05 | Toshiba Corp | メモリシステム |
JP5808854B2 (ja) * | 2011-10-05 | 2015-11-10 | 株式会社日立製作所 | ストレージシステム及びストレージ方法 |
US8924636B2 (en) | 2012-02-23 | 2014-12-30 | Kabushiki Kaisha Toshiba | Management information generating method, logical block constructing method, and semiconductor memory device |
US9251055B2 (en) | 2012-02-23 | 2016-02-02 | Kabushiki Kaisha Toshiba | Memory system and control method of memory system |
US9471484B2 (en) | 2012-09-19 | 2016-10-18 | Novachips Canada Inc. | Flash memory controller having dual mode pin-out |
US9015404B2 (en) * | 2012-09-28 | 2015-04-21 | Intel Corporation | Persistent log operations for non-volatile memory |
TWI510903B (zh) * | 2012-11-19 | 2015-12-01 | Wistron Corp | 電腦系統及資料回復方法 |
JP6056453B2 (ja) * | 2012-12-20 | 2017-01-11 | 富士通株式会社 | プログラム、データ管理方法および情報処理装置 |
US9652376B2 (en) * | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
KR102127284B1 (ko) | 2013-07-01 | 2020-06-26 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 관리 방법 |
US20150095551A1 (en) * | 2013-09-30 | 2015-04-02 | Micron Technology, Inc. | Volatile memory architecutre in non-volatile memory devices and related controllers |
KR102065665B1 (ko) | 2013-10-17 | 2020-01-13 | 삼성전자 주식회사 | 더미 워드라인을 포함하는 불휘발성 메모리 장치, 메모리 시스템 및 메모리 시스템의 동작방법 |
US9007841B1 (en) * | 2013-10-24 | 2015-04-14 | Western Digital Technologies, Inc. | Programming scheme for improved voltage distribution in solid-state memory |
JP6264012B2 (ja) * | 2013-12-16 | 2018-01-24 | 富士通株式会社 | 制御装置、及び制御プログラム |
US20150339069A1 (en) * | 2014-05-22 | 2015-11-26 | Kabushiki Kaisha Toshiba | Memory system and method |
US10223001B2 (en) | 2015-03-12 | 2019-03-05 | Toshiba Memory Corporation | Memory system |
CN106935273B (zh) * | 2015-12-30 | 2020-03-24 | 北京京存技术有限公司 | eMMC测试***及方法 |
US10353813B2 (en) | 2016-06-29 | 2019-07-16 | Western Digital Technologies, Inc. | Checkpoint based technique for bootstrapping forward map under constrained memory for flash devices |
US11216361B2 (en) | 2016-06-29 | 2022-01-04 | Western Digital Technologies, Inc. | Translation lookup and garbage collection optimizations on storage system with paged translation table |
US10229048B2 (en) | 2016-06-29 | 2019-03-12 | Western Digital Technologies, Inc. | Unified paging scheme for dense and sparse translation tables on flash storage systems |
US10175896B2 (en) | 2016-06-29 | 2019-01-08 | Western Digital Technologies, Inc. | Incremental snapshot based technique on paged translation systems |
US10235287B2 (en) | 2016-06-29 | 2019-03-19 | Western Digital Technologies, Inc. | Efficient management of paged translation maps in memory and flash |
CN106598768B (zh) * | 2016-11-28 | 2020-02-14 | 华为技术有限公司 | 一种处理写请求的方法、装置和数据中心 |
US10095626B2 (en) * | 2017-03-10 | 2018-10-09 | Toshiba Memory Corporation | Multibit NAND media using pseudo-SLC caching technique |
JP7109949B2 (ja) | 2018-03-23 | 2022-08-01 | キオクシア株式会社 | メモリシステム及びメモリシステムの制御方法 |
JP2019185350A (ja) | 2018-04-09 | 2019-10-24 | 東芝メモリ株式会社 | メモリシステム及びメモリシステムの制御方法 |
US10691358B2 (en) * | 2018-06-14 | 2020-06-23 | Silicon Motion, Inc. | Memory controller and method capable of using different storing modes to store data units having different data sizes |
DE112019007572T5 (de) * | 2019-07-26 | 2022-04-28 | Mitsubishi Electric Corporation | Speicherprogrammierbare Steuerung, Einstellwerkzeug und Programm |
US11561717B2 (en) * | 2020-05-26 | 2023-01-24 | Western Digital Technologies, Inc. | Data integrity protection of SSDs utilizing streams |
US11520523B2 (en) | 2020-05-26 | 2022-12-06 | Western Digital Technologies, Inc. | Data integrity protection of ZNS needs |
KR20210155055A (ko) * | 2020-06-15 | 2021-12-22 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법 |
JP2022052089A (ja) | 2020-09-23 | 2022-04-04 | キオクシア株式会社 | メモリシステム及びメモリシステムの制御方法 |
US12045468B2 (en) | 2021-11-12 | 2024-07-23 | Samsung Electronics Co., Ltd. | Storage devices configured to obtain data of external devices for debugging |
US12014073B2 (en) * | 2022-05-17 | 2024-06-18 | Micron Technology, Inc. | Techniques for sequential access operations |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1248335A (zh) * | 1997-12-22 | 2000-03-22 | Tdk株式会社 | 闪速存储器*** |
Family Cites Families (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1075387C (zh) | 1994-12-29 | 2001-11-28 | 中外制药株式会社 | 含有il-6拮抗剂的抗肿瘤剂的作用增强剂 |
EP1206480A2 (en) | 1999-08-23 | 2002-05-22 | EntreMed, Inc. | Methods of obtaining 2-methoxyestradiol of high purity |
JP3692313B2 (ja) * | 2001-06-28 | 2005-09-07 | 松下電器産業株式会社 | 不揮発性メモリの制御方法 |
US7533214B2 (en) * | 2002-02-27 | 2009-05-12 | Microsoft Corporation | Open architecture flash driver |
US7181611B2 (en) * | 2002-10-28 | 2007-02-20 | Sandisk Corporation | Power management block for use in a non-volatile memory system |
JP3935139B2 (ja) * | 2002-11-29 | 2007-06-20 | 株式会社東芝 | 半導体記憶装置 |
JP2005024300A (ja) | 2003-06-30 | 2005-01-27 | Tanaka Scientific Ltd | 蛍光x線分析装置のフローセル |
JP2005115857A (ja) * | 2003-10-10 | 2005-04-28 | Sony Corp | ファイル記憶装置 |
US20050204115A1 (en) * | 2004-01-30 | 2005-09-15 | Kiminori Matsuno | Semiconductor memory device, memory controller and data recording method |
JP2005242897A (ja) * | 2004-02-27 | 2005-09-08 | Oki Electric Ind Co Ltd | フラッシュディスク装置 |
US7814057B2 (en) * | 2005-04-05 | 2010-10-12 | Microsoft Corporation | Page recovery using volume snapshots and logs |
JP2006350572A (ja) * | 2005-06-14 | 2006-12-28 | Ricoh Co Ltd | 記憶装置、画像形成装置及びシステムデータ管理方法 |
US7668846B1 (en) * | 2005-08-05 | 2010-02-23 | Google Inc. | Data reconstruction from shared update log |
US7624129B2 (en) * | 2006-06-30 | 2009-11-24 | Microsoft Corporation | Dual logging of changes to a user preference in a computer device |
JP2009020986A (ja) * | 2007-07-15 | 2009-01-29 | Hitachi Global Storage Technologies Netherlands Bv | ディスク・ドライブ装置及びディスク・ドライブ装置において不揮発性半導体メモリ領域上のデータを管理するテーブルを保存する方法 |
JP4564520B2 (ja) | 2007-08-31 | 2010-10-20 | 株式会社東芝 | 半導体記憶装置およびその制御方法 |
JP4538034B2 (ja) | 2007-09-26 | 2010-09-08 | 株式会社東芝 | 半導体記憶装置、及びその制御方法 |
JP4461170B2 (ja) * | 2007-12-28 | 2010-05-12 | 株式会社東芝 | メモリシステム |
CN101632068B (zh) * | 2007-12-28 | 2015-01-14 | 株式会社东芝 | 半导体存储装置 |
JP4675984B2 (ja) * | 2008-02-29 | 2011-04-27 | 株式会社東芝 | メモリシステム |
JP4489127B2 (ja) * | 2008-02-29 | 2010-06-23 | 株式会社東芝 | 半導体記憶装置 |
JP2009211234A (ja) * | 2008-03-01 | 2009-09-17 | Toshiba Corp | メモリシステム |
JP4498426B2 (ja) * | 2008-03-01 | 2010-07-07 | 株式会社東芝 | メモリシステム |
US8276043B2 (en) * | 2008-03-01 | 2012-09-25 | Kabushiki Kaisha Toshiba | Memory system |
JP4653817B2 (ja) * | 2008-03-01 | 2011-03-16 | 株式会社東芝 | メモリシステム |
JP4745356B2 (ja) * | 2008-03-01 | 2011-08-10 | 株式会社東芝 | メモリシステム |
WO2009110303A1 (en) | 2008-03-01 | 2009-09-11 | Kabushiki Kaisha Toshiba | Memory system |
JP4643667B2 (ja) * | 2008-03-01 | 2011-03-02 | 株式会社東芝 | メモリシステム |
JP2009211215A (ja) * | 2008-03-01 | 2009-09-17 | Toshiba Corp | メモリシステム |
JP4675985B2 (ja) * | 2008-03-01 | 2011-04-27 | 株式会社東芝 | メモリシステム |
KR101067457B1 (ko) * | 2008-03-01 | 2011-09-27 | 가부시끼가이샤 도시바 | 메모리 시스템 |
JP5010505B2 (ja) * | 2008-03-01 | 2012-08-29 | 株式会社東芝 | メモリシステム |
JP4691123B2 (ja) * | 2008-03-01 | 2011-06-01 | 株式会社東芝 | メモリシステム |
JP4551940B2 (ja) * | 2008-03-01 | 2010-09-29 | 株式会社東芝 | メモリシステム |
US8706950B2 (en) * | 2008-03-01 | 2014-04-22 | Kabushiki Kaisha Toshiba | Memory system |
US8484432B2 (en) * | 2008-03-11 | 2013-07-09 | Kabushiki Kaisha Toshiba | Memory system |
JP4762261B2 (ja) * | 2008-03-12 | 2011-08-31 | 株式会社東芝 | メモリシステム |
JP4439569B2 (ja) * | 2008-04-24 | 2010-03-24 | 株式会社東芝 | メモリシステム |
TWI385516B (zh) * | 2008-08-12 | 2013-02-11 | Phison Electronics Corp | 快閃記憶體儲存系統及其資料寫入方法 |
US8732388B2 (en) * | 2008-09-16 | 2014-05-20 | Micron Technology, Inc. | Embedded mapping information for memory devices |
JP2010176646A (ja) * | 2009-02-02 | 2010-08-12 | Toshiba Information Systems (Japan) Corp | メモリシステムおよびメモリシステムのインターリーブ制御方法 |
JP2010186341A (ja) * | 2009-02-12 | 2010-08-26 | Toshiba Corp | メモリシステム |
JP5376983B2 (ja) * | 2009-02-12 | 2013-12-25 | 株式会社東芝 | メモリシステム |
-
2008
- 2008-12-27 JP JP2008335559A patent/JP5317690B2/ja not_active Expired - Fee Related
-
2009
- 2009-12-28 US US13/063,255 patent/US8725932B2/en active Active
- 2009-12-28 WO PCT/JP2009/071920 patent/WO2010074353A1/en active Application Filing
- 2009-12-28 KR KR1020117005594A patent/KR101186788B1/ko not_active IP Right Cessation
- 2009-12-28 CN CN2009801354138A patent/CN102150142B/zh not_active Expired - Fee Related
- 2009-12-28 EP EP09835128.1A patent/EP2324428B1/en not_active Not-in-force
- 2009-12-28 TW TW098145326A patent/TWI437431B/zh not_active IP Right Cessation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1248335A (zh) * | 1997-12-22 | 2000-03-22 | Tdk株式会社 | 闪速存储器*** |
Also Published As
Publication number | Publication date |
---|---|
EP2324428A4 (en) | 2013-01-02 |
TWI437431B (zh) | 2014-05-11 |
JP5317690B2 (ja) | 2013-10-16 |
TW201102818A (en) | 2011-01-16 |
KR20110050504A (ko) | 2011-05-13 |
US20110173380A1 (en) | 2011-07-14 |
KR101186788B1 (ko) | 2012-09-27 |
WO2010074353A1 (en) | 2010-07-01 |
CN102150142A (zh) | 2011-08-10 |
US8725932B2 (en) | 2014-05-13 |
JP2010157139A (ja) | 2010-07-15 |
EP2324428B1 (en) | 2015-01-21 |
EP2324428A1 (en) | 2011-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102150142B (zh) | 存储器***和控制存储器***的方法 | |
CN102150140B (zh) | 存储器***、控制存储器***的方法和信息处理装置 | |
US11573712B2 (en) | Memory system storing management information and method of controlling same | |
KR101095765B1 (ko) | 메모리 시스템 및 그 제어 방법 | |
JP4675984B2 (ja) | メモリシステム | |
CN101689140B (zh) | 存储器*** | |
JP5317689B2 (ja) | メモリシステム | |
CN100435115C (zh) | 具有非循序更新区块管理的非易失性存储器及方法 | |
KR101066937B1 (ko) | 메모리 시스템 및 그 데이터 소거 방법 | |
TWI418983B (zh) | 記憶體系統及控制記憶體系統之方法 | |
US9015421B2 (en) | Memory system | |
US8108594B2 (en) | Memory system | |
JP2009211213A (ja) | メモリシステム | |
JP2009211188A (ja) | メモリシステム |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20131204 Termination date: 20161228 |
|
CF01 | Termination of patent right due to non-payment of annual fee |