CN101449234B - 数据存储装置以及数据存储方法 - Google Patents
数据存储装置以及数据存储方法 Download PDFInfo
- Publication number
- CN101449234B CN101449234B CN2007800181467A CN200780018146A CN101449234B CN 101449234 B CN101449234 B CN 101449234B CN 2007800181467 A CN2007800181467 A CN 2007800181467A CN 200780018146 A CN200780018146 A CN 200780018146A CN 101449234 B CN101449234 B CN 101449234B
- Authority
- CN
- China
- Prior art keywords
- data
- storage part
- address
- storage
- flash 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- 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/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
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)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Communication Control (AREA)
- Read Only Memory (AREA)
Abstract
数据存储装置在进行通常动作时向第一闪存中写入数据,并向第二闪存中写入用于校正写入第一闪存中的数据的ECC数据。另外,当第一闪存的剩余容量变为零时,数据存储装置擦除第二闪存中已写入的ECC数据,并向该第二闪存中写入通常的数据。由此,在使用多个存储区域存储数据时,能够提高数据的可靠性,同时还能够有效地利用原有的存储容量。
Description
技术领域
本发明涉及对从计算机等主机装置传送的数据进行存储的技术。
背景技术
近年来,提出了将多个硬盘驱动器或闪存等存储设备组合起来记录数据,由此提高所记录的数据的可靠性的各种技术(参考日本专利文献特开2000-207137号公报)。例如,在被称为镜像的技术中,向物理或逻辑分离的两个存储区域中写入相同内容的数据。由此,即使一个存储区域发生了故障,也能够通过另一个存储区域使系统继续工作。
但是,在镜像技术中,由于向两个存储区域写入相同内容的数据,因此存在实际上存储容量减少一半的问题。
发明内容
考虑到上述的问题,本发明要解决的问题是在使用多个存储区域存储数据时使得在提高数据的可靠性的同时能够有效地利用原来的存储容量。
根据上述问题,本发明一个方面的数据存储装置是一种存储从主机装置传送的数据的数据存储装置,其包括:
第一存储部,具有预定的存储区域;
第二存储部,具有预定的存储区域;
监视单元,至少监视所述第一存储部的使用区域;以及
写入控制单元,当从所述主机装置传送了所述数据时,如果使用所述监视单元判断出所述第一存储部的存储区域有剩余,则将该数据写入所述第一存储部,并将用于校正该数据的校正用数据写入所述第二存储部,如果判断出所述第一存储部的存储区域没有剩余,则擦除所述第二存储部中已存储的所述校正用数据,并将该数据写入所述第二存储部。
根据具有上述结构的数据存储装置,如果第一存储部的存储区域有剩余,则将从主机装置传送的数据写入第一存储部,并将用于校正该数据的数据写入第二存储部。因此,假使存储在第一存储部中的数据以某些原因发生损坏,也能够通过使用写入第二存储部中的校正用数据来校正该损坏的数据。
并且,在具有上述结构的数据存储装置中,如果第一存储部的存储区域没有剩余,则擦除第二存储部中已写入的校正用数据,并向该第二存储部也写入从主机装置传送的数据。因此,能够有效地利用第一存储部和第二存储部的存储容量。即,根据上述结构,可通过平衡数据的可靠性与存储容量的有效利用来提供功能性的数据存储装置。另外,第一存储部与第二存储部既可以是物理上分离的存储设备,也可以是将一个存储设备中的存储区域在逻辑上进行分离而形成的存储部。
在具有上述结构的数据存储装置中,所述写入控制可以包括单元编码单元,该编码单元基于从所述主机装置传送的数据来生成纠错码,作为所述校正用数据。
根据上述结构,可使用存储在第二存储部中的纠错码来容易地对存储在第一存储部中的数据进行纠正。纠错码例如可使用汉明编码、循环编码、里德-索洛蒙(Reed-Solomon)编码等各种编码技术来生成。纠错码一般被称为ECC数据。
在具有上述结构的数据存储装置中,所述编码单元可以其比特数等于或少于从所述主机装置传送的数据的比特数的纠错码。
在这种结构中,如果生成与从主机装置传送的数据相同比特数的纠错码,则从主机传送的数据与由该数据生成的校正用数据具有相同的数据长度,因此可将它们存储在第一存储部和第二存储部的相同地址中,从而能够容易地进行地址管理。另外,如果生成其比特数少于从主机传送的数据的比特数的纠错码,则能够削减向第二存储部存储的校正用数据的容量。
在具有上述结构的数据存储装置中,所述写入控制单元可以具有生成与从所述主机装置传送的数据相同的数据或者将构成从所述主机装置传送的数据的每个比特反转后的数据来作为所述校正用数据的单元。
根据这样的结构,由于生成与从主机装置传送的数据相同的数据或者将构成从主机装置传送的数据的每个比特反转后的数据来作为校正用数据,因此校正用数据的生成变得容易,可减轻处理负担。另外,当在读出数据时进行检错的时候也由于单纯地对两数据进行比较即可,因此可减轻处理的负担,从而能够防止处理速度下降。
在具有上述结构的数据存储装置中,所述写入控制单元可以在将从所述主机装置传送的数据写入所述第二存储部时,根据将所述第一存储部的物理最终地址和所述第二存储部的物理最终地址连接起来的虚拟地址空间来向所述第二存储部写入数据。
根据这样的结构,在向第二存储部写入通常的数据的动作状态下,可以不区分第一存储部和第二存储部的存储区域而无缝地指定地址。
在具有上述结构的数据存储装置中,还可以包括读取控制单元,该读取控制单元在从所述主机装置接收到数据的读出请求时,如果作为该读出请求的对象的数据的存储目的地是所述第一存储部,并且基于该数据生成的校正用数据存在于所述第二存储部中,则从所述第一存储部读取该数据,从所述第二存储部读取该校正用数据,基于该校正用数据来校正该数据,并向所述主机装置传送该数据。
根据这样的结构,能够基于存储在第一存储部的数据和存储在第二存储部的校正用数据对作为从主机装置给出读取请求的对象的数据进行检错和纠错。因此,能够提高数据的可靠性。
在具有上述结构的数据存储装置中,所述读入控制单元可以具有如下单元:所述单元在作为所述读出请求的对象的数据的存储目的地是所述第一存储部、并且基于该数据生成的校正用数据不存在于所述第二存储部的情况下,从所述第一存储部读取该数据,并将该数据直接传送给所述主机装置。
根据这样的结构,即使在第二存储部中存储的校正用数据已被完全擦除的情况下,也能够从第一存储部适当地读出数据并将该数据传送给主机装置。
在具有上述结构的数据存储装置中,所述读入控制单元可以具有如下单元,该单元在作为所述读出请求的对象的数据的存储目的地是所述第二存储部并且是该第二存储部的记录有通常的数据的区域的情况下,从该第二存储部读取该数据,并将该数据直接传送给所述主机装置。
根据这样的结构,在向第二存储部存储通常的数据的动作状态下,能够从第二存储部适当地读出数据并将该数据传送给主机装置。
在具有上述结构的数据存储装置中,所述读入控制单元可以具有如下单元,该单元在作为所述读出请求的对象的数据的存储目的地是所述第二存储部的存储有所述校正用数据的区域的情况下,不从所述第二存储部进行数据的读取,而是将预定的数据作为伪数据传送给所述主机装置。
在向第二存储部写入通常的数据的动作状态下,第二存储部中存储有校正用数据的区域本来是被主机装置识别为空区域的区域。因此,通过上述结构,当从这样的区域读取数据时,即使将预定的数据作为伪数据传送给主机装置,主机装置也应当识别出该区域是无效数据。伪数据例如可以是以16进制表示的“00”、“FF”、“55”、“AA”等数据。
在具有上述结构的数据存储装置中,所述写入控制单元可以在将从所述主机传送的数据写入到所述第二存储部的情况下,存储表示写入该数据的最大地址的地址指针,所述读入控制单元可以基于所述地址指针来判断与作为所述读出请求的对象的数据相对应的校正用数据是否被存储在所述第二存储部、或者作为所述读出请求的对象的数据的存储目的地是否为所述第二存储部的存储有所述校正用数据的区域。
根据这样的结构,能够通过上述的地址指针明确地辨别第二存储部中的存储有通常数据的区域以及存储有校正用数据的区域。因此,如果使用该地址指针,则能够容易地判断与作为所述读出请求的对象的数据相对应的校正用数据是否被存储在第二存储部、或者作为所述读出请求的对象的数据的存储目的地是否为第二存储部中存储有校正用数据的区域。
另外,在具有上述结构的数据存储装置中,所述写入控制单元可以在将从所述主机传送的数据写入到所述第二存储部的情况下,存储表示对该第二存储部的各个地址是否写入了数据的预定的表,所述读入控制单元可以基于所述表来判断与作为所述读出请求的对象的数据相对应的校正用数据是否被存储在所述第二存储部、或者作为所述读出请求的对象的数据的存储目的地是否为所述第二存储部的存储有所述校正用数据的区域。
根据上述结构,通过使用表示对第二存储部的各个地址是否写入了数据的预定的表,也能够容易地进行上述的各种判断。
在具有上述结构的数据存储装置中,可以包括如下单元,该单元不管所述第一存储部的存储区域是否有剩余,都响应于预定的设定操作而禁止所述写入控制单元向所述第二存储部写入通常的数据。
根据这样的结构,由于能够任意地限制对第二存储部写入通常的数据,因此能够提高用户的便利性。这样的设定操作可通过设置在数据存储装置中的物理开关、或者在与数据存储装置连接的主机上运行的应用程序来进行。
在具有上述结构的数据存储装置中,所述第一存储部和所述第二存储部可以具有相同的存储容量。
根据这样的结构,能够将第一存储部与第二存储部的地址一对一地对应起来存储数据和校正用数据。由此,能够容易地进行地址管理。另外,在这样的结构中,第一以及第二存储部可采用相同类型的设备,因此可减少制造成本。另外,第一存储部与第二存储部不一定必须具有相同的容量,也可以使第二存储部具有比第一存储部大的存储容量。另外,如果校正用数据的数据长度短于从主机传送的数据的数据长度,则可使第二存储部的容量少于第一存储部的容量。
在具有上述结构的数据存储装置中,所述数据可以是从所述主机装置经由USB接口传送的。
如果是这样的结构,则只将本发明的数据存储装置连接到计算机等主机装置所具有的USB端口上,就能容易地利用本发明的数据存储装置。因此,能够提高用户的便利性。
在具有上述结构的数据存储装置中,所述第一存储部以及所述第二存储部是非易失性半导体存储器。非易失性半导体存储器例如可使用NAND型或NOR型的各种闪存、EEPROM、自备电池的DRAM等。
根据这样的结构,能够提供携带性优异的小型数据存储装置。另外,第一以及第二存储部除半导体存储器之外,例如还可以采用硬盘驱动器或可改写的光盘等。另外,第一存储部与第二存储部也可以采用完全不同类型的设备。
另外,本发明除了可作为上述的数据存储装置来实现之外,也能够作为如下的数据存储方法来实现。即该数据存储方法是一种由数据存储装置存储从主机装置传送的数据的方法,其中,所述数据存储装置包括第一存储部和第二存储部,所述第一存储部和所述第二存储部具有预定的存储区域,所述数据存储方法的特征在于,
监视所述第一存储部的使用区域,
当从所述主机装置传送了所述数据时,如果所述监视的结果是判断出所述第一存储部的存储区域有剩余,则将该数据写入所述第一存储部,并将用于校正该数据的校正用数据写入所述第二存储部,
如果所述监视的结果是判断出所述第一存储部的存储区域没有剩余,则擦除所述第二存储部中已存储的所述校正用数据,并将该数据写入该第二存储部。
根据这样的数据存储方法,也能够获得与上述各种效果相同的效果。
附图说明
图1是示出数据存储装置的概要结构的说明图;
图2是示出数据保障模式时的数据存储装置的内部存储器映射的说明图;
图3是示出容量优先模式时的数据存储装置的内部存储器映射的说明图;
图4是示出闪存控制器使用的虚拟地址与可由主机识别的地址空间的说明图;
图5是主处理的流程图;
图6是指针设定处理的流程图;
图7是写处理的流程图;
图8是示出总线开关的内部结构的说明图;
图9是示出总线开关的内部结构的说明图;
图10是示出总线开关的内部结构的说明图;
图11是读处理的流程图;
图12是示出总线开关的内部结构的说明图;
图13是示出总线开关的内部结构的说明图;
图14是示出总线开关的内部结构的说明图;
图15是示出总线开关的内部结构的说明图;
图16是示出表示第二闪存内的数据存储状态的表的一个例子的说明图。
具体实施方式
下面,为了清楚上述的本发明的作用以及效果,根据实施例以下面的顺序说明本发明的实施方式。
A.数据存储装置的概要结构:
B.数据存储装置的动作概要:
C.各种处理:
(C1)主处理:
(C2)指针设定处理:
(C3)写处理:
(C4)读处理:
D.效果:
E.变形例:
A.数据存储装置的概要结构:
图1是示出作为实施例的数据存储装置10的概要结构的说明图。如图1所示,本实施例的数据存储装置10在内部具有两个闪存(第一闪存FL1和第二闪存FL2)。作为闪存的类型例如可利用NAND(与非)型闪存或者NOR(或非)型闪存。
数据存储装置10具有以下功能:在通常动作时,向第一闪存FL1写入数据,向第二闪存FL2写入用于对写入第一闪存FL1中的数据进行校正的ECC数据。下面,将这样的动作状态称为“数据保障模式”。另外,数据存储装置10具有以下功能:当第一闪存FL1的剩余容量变为零时,一边擦除已写入第二闪存FL2的ECC数据,一边向该第二闪存中也写入通常的数据。下面,将这样的动作状态称为“容量优先模式”。
如图1所示,本实施例的数据存储装置10包括:USB连接器110、USB控制电路120、闪存控制器130、第一闪存FL1、以及第二闪存FL2。
USB连接器110暴露在数据存储装置10的壳体(图中的虚线部分)上,并可与个人计算机或打印机等主机设备(下面,简称为“主机”)所具有的USB接口连接。
USB控制电路120与USB连接器110以及闪存控制器130连接。USB控制电路120是使该数据存储装置10作为USB大容量存储类设备进行动作的电路,并且是基于USB协议控制与主机之间的通信的电路。该USB控制电路120还具有将从主机接收的USB指令转换为ATA指令或SCSI指令、或者将从闪存控制器130所接收的状态信号或数据转换成USB指令的功能。ATA指令是指由ANSI(American National Standard Institute,美国国家标准协会)标准化的指令,是除了本实施例的数据存储装置10以外还用于对硬盘或PC卡型存储器等各种数据存储装置进行数据读写控制的具有通用性的指令。SCSI指令比ATA指令通用性高,是除硬盘等存储装置之外还能控制扫描器等的指令。
闪存控制器130是用于解释从USB控制电路120传送的ATA指令(或者SCSI指令)、并且控制针对经总线开关150连接的第一闪存FL1和第二闪存FL2的数据读写的集成电路。闪存控制器130为了进行所述控制而在内部具有CPU、ROM、或RAM等。在该ROM中记录有用于控制数据存储装置10的动作的程序。CPU通过将RAM用作工作区域并通过执行该程序来控制数据存储装置10的总体动作。
闪存控制器130包括地址转换电路140和总线开关150。地址转换电路140是将可对两个闪存的数据存储区域进行连续存取的虚拟地址转换成第一闪存FL1或第二闪存FL2的实际地址的电路。在该地址转换中使用存储在寄存器145中的地址指针的值。如上所述,本实施例的数据存储装置10具有数据保障模式和容量优先模式这两种动作状态,其中,在容量优先模式下,对第二闪存FL2也写入通常的数据。因此,闪存控制器130使用可连续存取两个闪存的数据存储区域的虚拟地址,地址转换电路140将该虚拟地址转换为各个闪存的实际地址。由此,闪存控制器130能够不考虑闪存的种类而进行数据的读写。
总线开关150与闪存控制器130、第一闪存FL1、以及第二闪存FL2连接。总线开关150根据从闪存控制器130输出的指令(写指令或读指令)以及存取目的地的闪存的地址,进行成为数据输入输出目的地的闪存的切换。在该总线开关150的内部具有ECC编码器160、ECC解码器170、以及伪数据输出电路180。
ECC编码器160是在数据保障模式时将由主机给出写入指示的数据进行汉明(hamming)编码来生成ECC数据的电路。所生成的ECC数据被写入第二闪存FL2中。在本实施例中,针对1个字节的数据,生成1个字节的ECC数据。另外,ECC数据除汉明编码之外也可以通过循环编码或里德-索洛蒙编码等其他的编码技术来生成。
另一方面,ECC解码器170是如下一种电路:在数据保障模式或者容量优先模式时,基于从第一闪存FL1读出的通常的数据对从第二闪存FL2读出的ECC数据进行解码,并对所读出的数据进行检错和校正。
伪数据输出电路180是如下一种电路:在容量优先模式时,当主机想要从第二闪存FL2中的记录有ECC数据(确切地说是用于校正第一闪存FL1中的数据的ECC数据)的区域读出数据时,输出伪数据(例如“00”)。关于该伪数据输出电路180的动作,将在后面进行详细说明。
总线开关150根据数据存储装置10的动作状态来改变上述的ECC编码器160、ECC解码器170、伪数据输出电路180、第一闪存FL1、以及第二闪存FL2的连接状态。关于所述的改变方式,将在后面的各种处理的说明中一并进行说明。
B.数据存储装置的动作概要:
图2是示出数据保障模式时的数据存储装置10的内部存储器映射的说明图。在图2的左侧示出了第一闪存FL1通过FAT形式被格式化而形成了一个分区(partition)的例子。
在FAT形式的格式化中,第一闪存FL1的存储区域被分离为管理区域MA和用户数据区域DA。管理区域MA由被称为主引导区(Master BootRecord)(以下称为“MBR区域”)、BIOS参数块(BIOS ParameterBlock)(以下称为“BPB区域”)、FAT1、FAT2、根目录(rootdirectory)等的区域构成。FAT的数据结构由于是周知的,因此下面对这些各个区域简单地进行说明。
MBR区域是在数据存储装置10与主机连接时最初被读入的区域。在该主引导区中记录有引导代码(bootstrap code)和分区表等。在分区表中记录有所生成的分区的数目、各分区的起始扇区及结束扇区、偏移量(offset)、总扇区数目等的信息。
BPB区域被提供于各个分区的首扇区,并记录有该扇区的格式化形式和扇区数目、FAT的数目等。
在FAT1以及FAT2中,记录有构成记录在用户数据区域DA的各个文件的簇链(Cluster chain)的信息。在FAT1和FAT2中记录相同的信息。
在根目录中记录有处于根目录上的文件的文件名、扩展名、属性、以及构成该文件的首簇号等。
如图2的右侧所示,在数据保障模式时,在第二闪存FL2中记录有由ECC编码器160基于写入到第一闪存FL1中的数据而生成的ECC数据。如上所述,在本实施例中,由于针对1个字节的数据,生成1个字节的ECC数据,因此,第一闪存FL1和第二闪存FL2的地址以一对一的方式相对应。即,与第一闪存FL1的某个地址中记录的数据相对应的ECC数据被记录在第二闪存FL2的相同地址中。
在数据保障模式时,如果由主机给出了写入数据的指示,则数据记录装置10只要第一闪存FL1的用户数据区域DA还有剩余,就将该数据以从高位地址向低位地址的顺序写入第一闪存FL1的用户数据区域DA中的特定地址中。并且,由该数据生成的ECC数据被写入第二闪存FL2的相同地址中。另一方面,如果由主机给出了读取数据的指示,则从第一闪存FL1的指定地址读出数据并且从第二闪存FL2的相同地址读出ECC数据。并且,ECC解码器170根据这些数据进行检错和数据的校正。
图3是示出容量优先模式时的数据存储装置10的内部存储器映射的说明图。如图3所示,当第一闪存FL1的用户数据区域DA的剩余区域变为零、并且数据存储装置10的动作状态从数据保障模式切换到容量优先模式时,数据存储装置10将由主机给出写入指示的数据从最终地址Bn逆行写入到第二闪存FL2的用户数据区域DA中。此时,当写入目的地中存在ECC数据时,在擦除该ECC数据的基础上进行数据的写入。在该容量优先模式时,数据存储装置10不进行ECC数据的生成。
当数据存储装置10在容量优先模式下进行动作的期间,在第二闪存FL2的用户数据区域DA中存在两种区域,即:存储有在数据保障模式时写入的ECC数据的区域、以及存储有在动作状态切换为容量优先模式之后写入的通常数据的区域。因此,数据存储装置10为了识别这两种区域的边界而准备了表示该边界的地址的地址指针AP3,并将该地址指针AP3存储在寄存器145中。当向第二闪存FL2中依次写入数据时,该地址指针AP3从第二闪存FL2的最终地址Bn朝着该用户数据区域DA的首地址B5移动。
数据存储装置10即使在容量优先模式下,当从第一闪存FL1读取与第二闪存FL2的剩有ECC数据的区域相对应的数据时,也能够与数据保障模式时一样地进行使用ECC数据的数据校正和检错。因此,数据存储装置10为了辨别第一闪存FL1中的所述区域,将与第二闪存FL2的地址指针AP3相对应的第一闪存FL1的地址作为地址指针AP2存储在寄存器145中。当向第二闪存FL2中依次写入数据时,该地址指针AP2从第一闪存FL1的最终地址An朝着用户数据区域DA的首地址A5移动。
该地址指针AP2还被用于由闪存控制器130就第一闪存FL1中是否剩有存储区域进行的判断中。即,闪存控制器130监视该地址指针AP,如果地址指针AP2表示第一闪存FL1的最终地址An,则能够判断为第一闪存FL1中剩有存储容量。因此,此时,闪存控制器130向第一闪存FL1写入数据。另一方面,如果地址指针AP2表示比最终地址An低的地址,则闪存控制器130能够判断为第一闪存FL1的存储容量没有剩余。此时,闪存控制器130进行向第二闪存FL2写入数据。
并且,数据存储装置10为了识别第一闪存FL1的管理区域MA与用户数据区域DA的边界,准备了表示该边界的地址的地址指针AP1,并将该地址指针AP1存储在寄存器145中。在后述的写处理和读处理中,通过使用上述的地址指针AP1~AP3,来进行成为数据的读写目的地的闪存的识别和有无生成ECC数据的判断等。
图4是示出由闪存控制器130使用的虚拟地址与可由主机识别的地址空间的说明图。如图4所示,数据存储装置10当动作状态切换到容量优先模式时,将第一闪存FL1的最终实际地址An和第二闪存FL2的最终实际地址Bn连接起来作为一个存储区域而进行动作。此时,由于第一闪存FL1的最终实际地址是“An”,因此第二闪存FL的最终实际地址Bn成为虚拟地址“An+1”。另外,由于第一闪存FL1和第二闪存FL2具有相同的容量,因此第二闪存FL2的用户数据区域DA的首实际地址B5成为虚拟地址“2An—AP1”。即,在容量优先模式下,通过地址转换电路140的工作,主机将虚拟地址A0至虚拟地址(2An—AP1)作为数据存储装置10的实际地址来识别,,并可对所述连续的区域无缝(seamless)地进行存取。另外,虚拟地址A0~An的地址值取与第一闪存FL1的实际地址相同的地址值(A0~An)。
C.各种处理:
(C1)主处理:
图5是由数据存储装置10执行的主处理的流程图。该处理是在数据存储装置10连接到主机上并被提供电源的同时,由闪存控制器130开始执行的处理。
当开始该处理时,首先,闪存控制器130基于已存储在两个闪存中的数据的位置,进行用于设定地址指针AP1~AP3的值的指针设定处理(步骤S10)。关于该指针设定处理,将在后面进行详细说明。
接着,闪存控制器130判断是否经由USB连接器110以及USB控制电路120从主机接收了任何指令(步骤S20)。当没有接收指令时(步骤S20:否),通过循环该处理来进行等待,直到接收到指令为止。另一方面,当接收到指令时(步骤S20:是),辨别该指令的类型(步骤S30)。
当在上述步骤S30中判断为所接收的指令是进行数据写入的写指令时(步骤S30:“写”),闪存控制器130进行后述的写处理(步骤S40)。另一方面,当判断为所接收的指令是进行数据读取的读指令时(步骤S30:“读”),进行后述的读处理(步骤S50)。并且,在完成这些处理后,将处理返回到上述步骤S20。根据以上说明的主处理,直到停止供电,重复执行响应于从主机装置接收的指令的处理。
(C2)指针设定处理:
图6是在上述主处理的步骤S10中执行的指针设定处理的流程图。该指针设定处理是用来基于已存储在两个闪存中的数据的位置而求出地址指针的初始值的处理。在下面的说明中,在没有特别指明的情况下,“地址”指图4所示的虚拟地址。
当执行该处理时,首先,闪存控制器130读取第一闪存FL1的MBR区域与BPB区域(步骤S100)。并且,判断这些区域中是否已写入MBR信息和BPB信息(步骤S110)。
当在上述步骤S110中判断为没有写入MBR信息和BPB信息时(步骤S110:否),数据存储装置10处于尚未被格式化的状态,因此闪存控制器130如下设定地址指针AP1~AP3的值。即,将地址指针AP1以及AP2的值设定为与第一闪存FL1的物理最终地址对应的地址An,并将地址指针AP3的值设定为与第二闪存FL2的物理最终地址对应的地址(An+1)。在数据存储装置10尚未格式化的情况下,通过该处理来结束该指针设定处理。
当在上述步骤S110中判断出在MBR区域与BPB区域中分别记录有MBR信息与BPB信息时(步骤S110:是),闪存控制器130基于记录在MBR区域和BPB区域中的分区表和扇区数目等信息来计算用户数据区域DA的首地址A5(步骤S130)。这样,当算出地址A5时,闪存控制器130将地址指针AP1的值设定为该地址“A5”(步骤S140)。
接着,闪存控制器130解析记录在FAT区域中的信息来求出已写入用户数据区域DA中的数据的最大地址(下面称为“最大写入地址EA”)(步骤S150)。由于在FAT区域中记录有与记录在用户数据区域DA中的文件的簇链有关的信息,因此通过追踪所有文件的簇链,能够求出最大写入地址EA。另外,由于在FAT1和FAT2中记录有相同的信息,因此可以解析任一个的信息。
在求出最大写入地址EA后,闪存控制器130对该最大写入地址EA与作为第一闪存FL1的最终地址的地址An进行比较,判断最大写入地址EA是否超过了地址An(步骤S160)。作为该判断结果,如果最大写入地址EA超过了地址An(步骤S160:是),则能够判断为用户数据已经被写入到第二闪存FL2中,并且动作模式是容量优先模式(参见图4)。因此,闪存控制器130如下设定地址指针AP2、AP3的值。即,将地址指针AP3的值设定为最大写入地址EA,将地址指针AP2的值设定为从地址An的2倍的地址值中减去最大写入地址EA的地址(2An—EA)(步骤S170)。这样求出的地址指针AP2和地址指针AP3表示第一闪存FL1和第二闪存FL2的实际地址中相同的地址(参见图3、图4)。
当在上述步骤S160中判断为最大写入地址EA是地址An以下时(步骤S160:否),能够判断出在第一闪存FL1中还剩有用户数据区域DA,并且动作模式是数据保障模式。因此,闪存控制器130将地址指针AP2的值设定为地址An,将地址指针AP3的值设定为地址(An+1)(步骤S180)(参见图2)。
在通过以上的处理来设定地址指针AP1~AP3的值之后,闪存控制器130将这些值记录在寄存器145中(步骤S190),结束一系列的指针设定处理,并将处理返回到主处理。
(C3)写处理:
图7是在上述写处理的步骤S40中执行的写处理的流程图。该写处理是用于将从主机接收的写数据写入闪存中的处理。
当执行该处理时,首先,闪存控制器130解析经由USB控制电路120从主机接收的写指令,求出写入目的地的地址(下面称为“写地址WA”)(步骤S200)。
接着,闪存控制器130参考寄存器145来判断写地址WA是否是比地址指针AP1所示的地址低的地址(步骤S210)。进行所述判断的结果,如果写地址WA是比地址指针AP1所示的地址低的地址(步骤S210:是),则能够判断出是对于第一闪存FL1的管理区域MA的写入(参见图3、4)。因此,闪存控制器130向第一闪存FL1的写地址WA写入写数据,并且,向第二闪存FL2的实际地址WA(图3的实际地址B0~B5中的任一个)写入由写数据生成的ECC数据(步骤S220)。
图8是示出在上述步骤S220中进行数据写入时的总线开关150的内部结构的说明图。如图8所示,此时,总线开关150将闪存控制器130分别连接在内部缓存BF1和ECC编码器160上,同时连接缓存BF1和第一闪存FL1,并连接ECC编码器160和第二闪存FL2。根据总线开关150的这种结构,能够向第一闪存FL1输出写数据,并能够向第二闪存FL2输出由该数据生成的ECC数据。
在通过上述步骤S220完成向对管理区域MA的写数据的写入以及ECC数据的写入后,闪存控制器130执行利用图6进行说明的指针设定处理(步骤S230)。由此,即使不是数据存储装置10的电源刚接通之后,在数据存储装置10完成格式化时,也能够适当地设定地址指针AP1~AP3的值。
当在上述步骤S210中判断为写地址WA是比地址指针AP1所示的地址高的地址时(步骤S210:否),闪存控制器130接着参考寄存器145来判断写地址WA是否是比地址指针AP2所示的地址低的地址(步骤S240)。进行所述判断的结果,如果判断出写地址WA是比地址指针AP2所示的地址低的地址(步骤S240:是),则写地址WA存在于地址指针AP所示的地址与地址指针AP2所示的地址之间的区域。此时,无论数据存储装置10的动作状态是数据保障模式还是容量优先模式,都向与第二闪存FL2的写地址WA相对应的地址写入ECC数据(参见图2、3)。从而,闪存控制器130向第一闪存控制器FL1的写地址WA写入写数据,向第二闪存FL2的同一地址WA(实际地址)写入由写数据生成的ECC数据(步骤S250)。此时的总线开关的内部结构与图8所示的结构相同。
当上述步骤S240中判断为写地址WA是比地址指针AP2高的地址时(步骤S240:否),闪存控制器130接着判断写地址WA是否是比第一闪存FL1的最终地址An低的地址(步骤S260)。进行所述判断的结果,如果判断出写地址WA是比地址An低的地址(步骤S260:是),则写地址WA存在于地址指针AP2所示的地址与地址An之间。即,此时由于地址指针AP2是比地址An低的地址,因此能够判断出当前的动作状态是容量优先模式,并且能够判断出在与写地址WA相对应的第二闪存FL2的地址中不存在ECC数据(参见图3)。因此,闪存控制器130不对第二闪存FL2进行ECC数据的写入,而是向第一闪存FL1的写地址WA写入写数据(步骤S270)。
图9是示出在上述步骤S270中写入写数据时的总线开关150的内部结构的说明图。如图9所示,此时,总线开关150连接闪存控制器130与内部的缓冲器BF1,并将该缓冲器BF1与第一闪存FL1连接。另一方面,总线开关150不连接闪存控制器130与第二闪存FL2。根据总线开关150的这种结构,能够只向第一闪存FL1写入写数据。
当在上述步骤S260中判断为写地址WA是比第一闪存FL1的最终地址An高的地址、即是第二闪存FL2中的地址时(步骤S260:否),闪存控制器130接着判断写地址WA是否是比地址指针AP3所示的地址高的地址(步骤S280)。进行所述判断的结果,如果判断出写地址WA是比地址指针AP3高的地址(步骤S280:是),则能够判断出是对第二闪存FL2中记录有ECC数据的区域的写入(参见图4)。由此,闪存控制器130首先擦除从地址指针AP3所示的地址到写地址WA的数据(步骤S290)。然后,将地址指针AP3重新设定为写地址WA所示的地址,将地址指针AP2的值重新设定为“2An—WA”(步骤S300),之后向第二闪存FL2中的写地址WA写入写数据(步骤S310)。在上述步骤S300中,当地址指针AP3的值首次超过地址(An+1)时,数据存储装置10的动作状态从数据保障模式转移到容量优先模式。
图10是示出在上述步骤S310中写入写数据时的总线开关150的内部结构的说明图。如图10所示,此时,总线开关150将闪存控制器130与内部缓冲器BF2连接,并将该缓冲器BF2与第二闪存FL2连接。另一方面,总线开关150不连接闪存控制器130与第一闪存FL1。根据总线开关150的这种结构,能够只对第二闪存FL2写入写数据。
当在上述步骤S280中判断为写地址WA是比地址指针AP3低的地址时(步骤S280:否),能够判断出写地址WA是第二闪存FL2中写入通常数据的区域中的地址。由此,闪存控制器130不进行ECC数据的擦除,而是向第二闪存FL2的写地址WA(图3的地址B5~Bn的范围内的实际地址(2Bn—WA))写入写数据(步骤S310)。此时的总线开关150的内部结构与图10所示的结构相同。
根据以上说明的写处理,通过适当地对写地址WA与地址指针AP1~AP3等进行比较,能够恰当地执行与数据存储装置10的当前动作模式相对应的数据写入。
(C4)读处理:
图11是在上述主处理的步骤S50中执行的读处理的流程图。该读处理是用于根据来自主机的请求而从闪存读出数据的处理。
当执行该处理时,首先,闪存控制器130解析经由USB控制电路120从主机接收的读指令,求出读入目的地的地址(下面称为“读地址RA”)(步骤S400)。
接着,闪存控制器130参考寄存器145来判断读地址RA是否是比地址指针AP2所示的地址低的地址(步骤S410)。进行所述判断的结果,如果读地址RA是比地址指针AP2所示的地址低的地址(步骤S410:是),则说明在与读地址RA相对应的第二闪存FL2的地址中存在ECC数据(参见图3)。因此,闪存控制器130从第一闪存FL1的读地址RA读取数据,并从第二闪存FL2的读地址RA(实际地址)读取ECC数据(步骤S420)。当闪存控制器130读取这些数据时,在总线开关150中通过ECC解码器170进行检错以及纠错(步骤S430)。在执行检错和纠错之后,闪存控制器130通过USB控制电路120向主机传送所读取的数据(步骤S440)。
图12是示出在上述步骤S420中读取数据时的总线开关150的内部结构的说明图。如图12所示,此时,总线开关150连接闪存控制器130与内部的ECC解码器170,并将第一闪存FL1和第二闪存FL2连接在ECC解码器170上。根据总线开关150的这种结构,能够通过ECC解码器170基于从第一闪存FL1读取的数据和从第二闪存FL2读取的ECC数据来进行检错和数据校正。在没有发生错误的情况下或者在数据已校正的情况下,通过闪存控制器130向主机输出该数据。与此相对,在由于发生了错误而不能校正数据的情况下,通过闪存控制器130将其意思通知给主机。
当在上述步骤S410中判断为读地址RA是比地址指针AP2所示的地址高的地址时(步骤S410:否),闪存控制器130接着判断读地址RA是否是比第一闪存FL1的最终地址An低的地址(步骤S450)。进行所述判断的结果,如果判断出读地址RA是比地址An低的地址(步骤S450:是),则读地址RA存在于地址指针AP2所示的地址与地址An之间。即,此时由于地址指针AP2是比地址An低的地址,因此能够判断出当前的动作状态是容量优先模式,并且能够判断出在与读地址RA相对应的第二闪存FL2的地址中不存在ECC数据(参见图3)。因此,闪存控制器130只从第一闪存FL1的读地址RA读取数据(步骤S460),并将该数据传送给主机(步骤S440)。
图13是示出在上述步骤S460中读取数据时的总线开关150的内部结构的说明图。如图13所示,此时,总线开关150连接闪存控制器130与内部的缓冲器BF3,并连接该缓冲器BF3与第一闪存FL1。另一方面,总线开关150不连接闪存控制器130与第二闪存FL2。根据总线开关150的这种结构,能够只从第一闪存FL1读取数据。
当在上述步骤S450中判断为读地址RA是比第一闪存FL1的最终地址An高的地址、即是第二闪存FL2中的地址时(步骤S450:否),闪存控制器130接着判断读地址RA是否是比地址指针AP3所示的地址低的地址(步骤S470)。进行所述判断的结果,如果判断出读地址RA是比地址指针AP3低的地址(步骤S470:是),能够判断为从第二闪存FL2中的记录有通常数据的区域进行读取(参见图3、4)。由此,闪存控制器130从第二闪存FL2中的读地址RA读取数据(步骤S480),并将该数据传送给主机(步骤S440)。
图14是示出在上述步骤S480中读取数据时的总线开关150的内部结构的说明图。如图14所示,此时,总线开关150将闪存控制器130连接在内部的缓冲器BF4上,并将该缓冲器BF4连接在第二闪存FL2上。另一方面,总线开关150不连接闪存控制器130与第一闪存FL1。根据总线开关150的这种结构,能够只从第二闪存FL2读取数据。
当在上述步骤S470中判断为读地址RA是比地址指针AP3高的地址时(步骤S470:否),对第二闪存FL2的写有ECC数据的区域进行读取(参见图4)。在容量优先模式下,由于该区域需要被主机识别为未使用区域,因此闪存控制器130使用总线开关150中的伪数据输出电路180生成伪数据“00”(步骤S490),并将该伪数据传送给主机(步骤S440)。由此,主机识别出该区域中没有记录任何数据。另外,作为伪数据,除“00”之外,例如也可以生成“FF”、“AA”或“55”等数据。
图15是示出在上述步骤S490中写入伪数据时的总线开关150的内部结构的说明图。如图15所示,此时,总线开关150将内部的伪数据输出电路180连接在闪存控制器130上,并且不将第一闪存FL1或第二闪存FL2连接在闪存控制器130上。根据总线开关150的这种结构,能够只从伪数据输出电路180读取伪数据。
根据以上说明的读处理,通过适当地对读地址RA与地址指针AP2、AP3等进行比较,能够根据数据存储装置10的当前动作模式,从适当的区域读出通常的数据或ECC数据。
D.效果:
以上对本实施例的数据存储装置10的详细结构及其处理进行了说明。根据本实施例的数据存储装置10,如果第一闪存FL1的存储区域有剩余,则将从主机给出了写入指示的数据写入到第一闪存FL1中,并且将用于校正该数据的ECC数据写入到第二闪存FL2中。因此,假使记录在第一闪存FL1中的数据以某些原因而损坏,也能够通过使用写入到第二闪存FL2中的ECC数据来校正该损坏的数据。
并且,本实施例的数据存储装置10如果第一闪存FL1的剩余容量变为零,则擦除已写入第二闪存FL2中的ECC数据,并向该第二闪存FL2中也写入从主机传送的数据。由此,能够有效地利用具有两个闪存的数据存储装置10的存储容量。综上,根据本实施例,通过平衡数据的可靠性与存储容量的有效利用,能够提供功能性的数据存储装置。
E.变形例:
以上对本发明的实施例进行了说明,但不用说本发明不限定于这样的实施例,可在不脱离其主旨的范围内采用各种结构。例如,通过硬件实现的功能也可以通过软件来实现。以外还可以进行如下变形。
(E1)变形例1:
上述实施例在数据保障模式下向第二闪存FL2中记录ECC数据。与此相对,也可以向第二闪存FL2中写入与写入到第一闪存FL1中的内容相同的数据。根据这样的结构,能够提高数据的冗余度,因此能够提高容错能力。另外,根据这样的结构,由于只对双方的数据进行对比就能进行检错,因此能够减轻数据存储装置10的处理负担。
在采用上述结构的情况下,可通过使用闪存中标准记录的ECC数据来辨别记录在第一闪存FL1中的数据与记录在第二闪存FL2中的数据中哪个是正常的数据。在具有通用的闪存控制器和NAND型闪存的数据存储装置的情况下,在一个闪存中针对2048字节的数据标准地记录了64字节的ECC数据。因此,使用该ECC数据对记录在闪存中的数据进行检错,并且将从没有发生错误的那一个闪存中输出的数据传送给主机,由此能够输出正常的数据。
在本变形例中,向第二闪存FL2中写入与第一闪存FL1相同内容的数据,但除此以外,例如也可以向第二闪存FL2中写入将写入第二闪存FL1中的数据的各位进行反转后的数据。
(E2)变形例2:
上述实施例是通过使用地址指针来进行闪存中的管理区域MA和用户数据区域DA的辨别、或者写有通常数据的区域与写有ECC数据的区域的辨别的。与此相对,例如通过使用下述的表也能够进行与上述实施例相同的处理,其中所述表用于管理闪存中的各个地址中是否存储有数据。
图16是示出表示第二闪存FL2内的数据存储状态的表的一个示例的说明图。在该表TBL中,对于图4所示第二闪存FL2中的虚拟地址(An+1)至虚拟地址(2An—AP1)中的每个地址,分别分配了1比特的区域。所述每个比特的比特状态表示在与该比特相对应的地址中是否存储有数据。即,在“1”的情况下,表示存储有数据,在“0”的情况下,表示没有存储数据。
闪存控制器130在向第二闪存FL2中写入ECC数据的数据保障模式时,对该表TBL不进行任何写入。即,在数据保障模式时,表TBL的每个比特维持“0”。
与此相对,在向第二闪存FL2中写入通常数据的容量优先模式下,如果向第二闪存FL2中写入了数据,则将与该写地址相对应的表TBL中的比特设置为“1”。通过以上操作,能够容易地辨别向第二闪存FL2中的哪个地址写入了数据。
之后,闪存控制器130通过参考该表的比特状态,能够容易地辨别是否应向第二闪存FL2中写入ECC数据、或者是否应从第二闪存FL2读取ECC数据。例如,当向第一闪存FL1中写入数据时,如果与第一闪存FL1中的写地址相对应的第二闪存FL2的地址的表TBL上的比特为“1”,则能够判断出在第二闪存FL2的该地址中已记录有通常的数据。因此,在此情况下,仅向第一闪存FL1写入数据。另外,当向第一闪存FL1中写入数据时,如果与第一闪存FL1中的写地址相对应的第二闪存FL2的地址的表上的比特为“0”,则能够判断出第二闪存FL2中没有写入通常的数据。因此,在此情况下,能够在向第一闪存FL1中写入数据的同时向第二闪存FL2中写入数据。
根据以上说明的变形例,通过使用表TBL,能够对第二闪存FL2中的写入状态进行详细的管理。因此,即使诸如在将小容量数据写入随机的地址中的使用状态下,也能够恰当地进行通常的数据和ECC数据的读写。
(E3)变形例3:
在上述实施例中,对于在第一闪存FL1的数据容量变为零时数据存储装置10的动作状态自动地从数据保障模式转移为容量优先模式的场合进行说明。与此相对,也可以在数据存储装置10中设置模式切换开关,并通过该开关的设定来改变动作状态。由此,用户可根据数据存储装置10的使用方式灵活地设定动作模式。例如,当以保存重要数据为目的时,通过禁止向第二闪存FL2中写入通常数据,能够强制性地将数据存储装置10设定为数据保障模式。另外,当以保存容量大的数据为目的时,能够强制性地将数据存储装置10设定为容量优先模式。在默认状态下,为了提高数据的可靠性,可将数据存储装置10强制性地设定为数据保障模式。
这种动作模式的设定也可以不通过物理开关的操作而是以软件方式进行。作为以软件方式实现的方法,例如有如下方法:将用于切换模式的专用的应用程序安装在主机上,并通过由该应用程序向数据存储装置10输出模式切换指令而由闪存控制器130或USB控制电路120解析该指令并切换动作模式。
(E4)变形例4:
在上述实施例中,写入第一闪存FL1中的数据与写入第二闪存FL2中的ECC数据具有相同的数据容量。因此,对第一闪存FL1和第二闪存FL2具有相同容量的场合进行了说明。但是,第二闪存FL2所需要的存储容量根据ECC数据的大小而发生变化,因此第一闪存FL1与第二闪存FL2也可以具有不同的数据容量。例如,如果写入第二闪存FL2的ECC数据的数据长度短于写入第一闪存FL1的数据的的数据长度,则可使第二闪存FL2的数据容量少于第一闪存FL1的数据容量。
另外,即使写入第一闪存FL1的数据与写入第二闪存FL2的ECC数据的数据长度相同,也可以使第二闪存FL2具有更大的数据容量。在此情况下,虽然在数据存储装置10以数据保障模式进行动作时不能有效地利用第二闪存FL2的数据容量,但是在转移到容量优先模式时,如果第二闪存FL2的数据容量较多,那么总的数据容量就增加相应的量。
(E5)变形例5:
在上述实施例中,如图4所示,在容量优先模式时,进行地址管理,以将第一闪存FL1的最终实际地址与第二闪存FL2的最终实际地址连接起来。与此相对,也可以进行地址管理,以将第一闪存FL1的最终实际地址与第二闪存FL2中的用户数据区域的首实际地址连接起来。在这样的结构下,当动作状态转移到容量优先模式时,从第二闪存FL2中老的ECC数据开始依次进行擦除。
(E6)变形例6:
在上述实施例中没有提及数据存储装置10的动作状态在从数据保障模式转移到容量优先模式之后又再次转移到数据保障模式的情况。但是,通过采取以下的方法,能够再次转移到数据保障模式。即,在转移到容量优先模式之后,当从第一闪存FL1或者第二闪存FL2擦除数据从而所存储的数据的全部容量变为第一闪存FL1的用户数据区域DA以下时,执行碎片整理(defragmentation),从而将所有的数据移动到第一闪存FL1的用户数据区域中。在此基础上,基于移动到第一闪存FL1中的每个数据生成ECC数据,并将该ECC数据记录在第二闪存FL2中。通过执行以上的处理,可将动作状态从容量优先模式再次转移到数据保障模式。既可以将该处理设定为在所存储的数据的全部容量变为第一闪存FL1的用户数据区域以下时自动地执行,也可以设定为通过设置在数据存储装置10中的物理开关的操作或者利用安装在主机中的专用的应用程序进行的操作来执行。
(E7)变形例:
在上述实施例中,即使数据存储装置10的动作状态处于容量优先模式,只要第二闪存FL2中剩有ECC数据,就使用该ECC数据来进行纠错等。与此相对,也可以在动作状态切换为容量优先模式时,擦除所有的ECC数据,或者当作不存在来处理。在这种结构下,在容量优先模式中不需要判断第二闪存FL2中是否存在ECC数据,因此能够减轻处理负担,提高读写速度。
(E8)变形例8:
在上述实施例中,数据存储装置10具有闪存以作为存储设备。与此相对,作为存储设备,也可以具有硬盘驱动器或可改写的光盘等。另外,在上述实施例中具有两个闪存,但其数目不限于此,可具有偶数个闪存。在此情况下,可将两个闪存作为一组,并对各组的闪存执行与实施例相同的处理。另外,在上述实施例中,具有在物理上不同的两个闪存,但是也可以将一个闪存中的存储区域在逻辑上分割为两个区域,并将所分割的一个区域作为与上述实施例的第一闪存FL1,将另一个区域作为与上述实施例的第二闪存FL2。
(E9)变形例9:
在上述实施例中,对数据存储装置10通过FAT形式被格式化的场合进行了说明,但是格式化的形式不限于此。例如,也可以应用NTFS、HPFS、Linux(注册商标)EXT等各种形式。
另外,在上述实施例中,使用“地址”这一术语描述了第一闪存FL1和第二闪存FL2中存储数据的位置场所,但是所述术语可根据格式化的类型、操作系统或存储设备的类型而替换为“扇区(sector)”、“簇(cluster)”、“块(block)”、或“块地址(block address)”等。
当然,本发明不应根据上述的实施例、变形例和其他方式而被作出任何限制性的解释,本发明的保护范围应当根据权利要求书和本发明的基本思想进行解释。
Claims (17)
1.一种数据存储装置,其存储从主机装置传送的数据,所述数据存储装置的特征在于,包括:
第一存储部,具有预定的存储区域;
第二存储部,具有预定的存储区域;
监视单元,至少监视所述第一存储部的使用区域;以及
写入控制单元,当从所述主机装置传送了所述数据时,如果使用所述监视单元判断出所述第一存储部的存储区域有剩余,则将该数据写入所述第一存储部,并将用于校正该数据的校正用数据写入所述第二存储部,如果判断出所述第一存储部的存储区域没有剩余,则从所述第二存储部的最终地址朝着首地址擦除所述第二存储部中已存储的所述校正用数据,并将该数据写入该被擦除的区域。
2.如权利要求1所述的数据存储装置,其中,
所述写入控制单元具有编码单元,该编码单元基于从所述主机装置传送的数据来生成纠错码,作为所述校正用数据。
3.如权利要求2所述的数据存储装置,其中,
所述编码单元生成其比特数等于或少于从所述主机装置传送的数据的比特数的纠错码。
4.如权利要求1所述的数据存储装置,其中,
所述写入控制单元具有生成与从所述主机装置传送的数据相同的数据或者将构成从所述主机装置传送的数据的每个比特反转后的数据来作为所述校正用数据的单元。
5.如权利要求1所述的数据存储装置,其中,
所述写入控制单元在将从所述主机装置传送的数据写入所述第二存储部时,根据将所述第一存储部的物理最终地址和所述第二存储部的物理最终地址连接起来的虚拟地址空间来向所述第二存储部写入数据。
6.如权利要求1所述的数据存储装置,其中,
还包括读入控制单元,该读入控制单元在从所述主机装置接收到数据的读出请求时,如果作为该读出请求的对象的数据的存储目的地是所述第一存储部,并且基于该数据生成的校正用数据存在于所述第二存储部中,则从所述第一存储部读取该数据,从所述第二存储部读取该校正用数据,基于该校正用数据来校正该数据,并向所述主机装置传送该数据。
7.如权利要求6所述的数据存储装置,其中,
所述读入控制单元具有如下单元:所述单元在作为所述读出请求的对象的数据的存储目的地是所述第一存储部、并且基于该数据生成的校正用数据不存在于所述第二存储部的情况下,从所述第一存储部读取该数据,并将该数据直接传送给所述主机装置。
8.如权利要求6或7所述的数据存储装置,其中,
所述读入控制单元具有如下单元,该单元在作为所述读出请求的对象的数据的存储目的地是所述第二存储部并且是该第二存储部的记录有通常的数据的区域的情况下,从该第二存储部读取该数据,并将该数据直接传送给所述主机装置。
9.如权利要求6或7所述的数据存储装置,其中,
所述读入控制单元具有如下单元,该单元在作为所述读出请求的对象的数据的存储目的地是所述第二存储部的存储有所述校正用数据的区域的情况下,不从所述第二存储部进行数据的读取,而是将预定的数据作为伪数据传送给所述主机装置。
10.如权利要求6或7所述的数据存储装置,其中,
所述写入控制单元在将从所述主机装置传送的数据写入到所述第二存储部的情况下,存储表示写入该数据的最大地址的地址指针,
所述读入控制单元基于所述地址指针来判断与作为所述读出请求的对象的数据相对应的校正用数据是否被存储在所述第二存储部、或者作为所述读出请求的对象的数据的存储目的地是否为所述第二存储部的存储有所述校正用数据的区域。
11.如权利要求6或7所述的数据存储装置,其中,
所述写入控制单元在将从所述主机装置传送的数据写入到所述第二存储部的情况下,存储表示对该第二存储部的各个地址是否写入了数据的预定的表,
所述读入控制单元基于所述表来判断与作为所述读出请求的对象的数据相对应的校正用数据是否被存储在所述第二存储部、或者作为所述读出请求的对象的数据的存储目的地是否为所述第二存储部的存储有所述校正用数据的区域。
12.如权利要1至7中任一项所述的数据存储装置,其中,
包括以下单元,该单元不管所述第一存储部的存储区域是否有剩余,都响应于预定的设定操作而禁止所述写入控制单元向所述第二存储部写入通常的数据。
13.如权利要求1至7中任一项所述的数据存储装置,其中,
所述第一存储部和所述第二存储部具有相同的存储容量。
14.如权利要求1至7中任一项所述的数据存储装置,其中,
所述数据从所述主机装置经由USB接口被传送。
15.如权利要求1至7中任一项所述的数据存储装置,其中,
所述第一存储部以及所述第二存储部是非易失性半导体存储器。
16.如权利要求15所述的数据存储装置,其中
所述非易失性半导体存储器是闪存。
17.一种由数据存储装置存储从主机装置传送的数据的数据存储方法,其中,所述数据存储装置包括第一存储部和第二存储部,所述第一存储部和所述第二存储部具有预定的存储区域,所述数据存储方法的特征在于,
监视所述第一存储部的使用区域,
当从所述主机装置传送了所述数据时,如果所述监视的结果是判断出所述第一存储部的存储区域有剩余,则将该数据写入所述第一存储部,并将用于校正该数据的校正用数据写入所述第二存储部,
如果所述监视的结果是判断出所述第一存储部的存储区域没有剩余,则从所述第二存储部的最终地址朝着首地址擦除所述第二存储部中已存储的所述校正用数据,并将该数据写入该被擦除的区域。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006138780A JP4700562B2 (ja) | 2006-05-18 | 2006-05-18 | データ記憶装置およびデータ記憶方法 |
JP138780/2006 | 2006-05-18 | ||
PCT/JP2007/060289 WO2007136018A1 (ja) | 2006-05-18 | 2007-05-14 | データ記憶装置およびデータ記憶方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101449234A CN101449234A (zh) | 2009-06-03 |
CN101449234B true CN101449234B (zh) | 2012-05-30 |
Family
ID=38723330
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800181467A Expired - Fee Related CN101449234B (zh) | 2006-05-18 | 2007-05-14 | 数据存储装置以及数据存储方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8136015B2 (zh) |
EP (1) | EP2031492B1 (zh) |
JP (1) | JP4700562B2 (zh) |
CN (1) | CN101449234B (zh) |
AT (1) | ATE521030T1 (zh) |
TW (1) | TW200821909A (zh) |
WO (1) | WO2007136018A1 (zh) |
Families Citing this family (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8103936B2 (en) * | 2007-10-17 | 2012-01-24 | Micron Technology, Inc. | System and method for data read of a synchronous serial interface NAND |
JP2009211234A (ja) * | 2008-03-01 | 2009-09-17 | Toshiba Corp | メモリシステム |
TWI389127B (zh) * | 2008-08-01 | 2013-03-11 | Jmicron Technology Corp | 快閃記憶體的配置方法 |
TWI406175B (zh) * | 2008-08-20 | 2013-08-21 | Nuvoton Technology Corp | 記憶卡以及用於記憶卡之方法 |
US8555143B2 (en) * | 2008-12-22 | 2013-10-08 | Industrial Technology Research Institute | Flash memory controller and the method thereof |
US8595593B2 (en) * | 2008-12-24 | 2013-11-26 | Hynix Semiconductor Inc. | Nonvolatile memory device having a copy back operation and method of operating the same |
TWI383399B (zh) * | 2009-03-03 | 2013-01-21 | Wistron Corp | 嵌入式電子裝置及資料儲存方法 |
WO2010116538A1 (en) * | 2009-04-06 | 2010-10-14 | Hitachi, Ltd. | Storage apparatus and data transfer method |
TWI472945B (zh) * | 2009-04-14 | 2015-02-11 | Fineart Technology Co Ltd | 外接式儲存裝置及其製造方法與資訊安全管理方法 |
US8688894B2 (en) * | 2009-09-03 | 2014-04-01 | Pioneer Chip Technology Ltd. | Page based management of flash storage |
US8381077B2 (en) * | 2009-09-08 | 2013-02-19 | Lsi Corporation | Systems and methods for implementing error correction in relation to a flash memory |
US8352839B2 (en) | 2010-06-11 | 2013-01-08 | International Business Machines Corporation | Encoding data into constrained memory |
US8972821B2 (en) * | 2010-12-23 | 2015-03-03 | Texas Instruments Incorporated | Encode and multiplex, register, and decode and error correction circuitry |
US8886990B2 (en) * | 2011-01-27 | 2014-11-11 | Apple Inc. | Block management schemes in hybrid SLC/MLC memory |
US20120226949A1 (en) * | 2011-03-02 | 2012-09-06 | Texas Instruments Incorporated | Multi-Channel Bus Protection |
JP5458064B2 (ja) * | 2011-07-14 | 2014-04-02 | 株式会社東芝 | 不揮発性半導体メモリ |
CN102915207A (zh) * | 2011-08-01 | 2013-02-06 | 建兴电子科技股份有限公司 | 固态储存装置及其数据储存方法 |
US8700834B2 (en) | 2011-09-06 | 2014-04-15 | Western Digital Technologies, Inc. | Systems and methods for an enhanced controller architecture in data storage systems |
US8713357B1 (en) * | 2011-09-06 | 2014-04-29 | Western Digital Technologies, Inc. | Systems and methods for detailed error reporting in data storage systems |
US9195530B1 (en) | 2011-09-06 | 2015-11-24 | Western Digital Technologies, Inc. | Systems and methods for improved data management in data storage systems |
US8707104B1 (en) | 2011-09-06 | 2014-04-22 | Western Digital Technologies, Inc. | Systems and methods for error injection in data storage systems |
EP2761465B1 (en) | 2011-09-30 | 2022-02-09 | Intel Corporation | Autonomous initialization of non-volatile random access memory in a computer system |
US20130275661A1 (en) * | 2011-09-30 | 2013-10-17 | Vincent J. Zimmer | Platform storage hierarchy with non-volatile random access memory with configurable partitions |
CN103946811B (zh) | 2011-09-30 | 2017-08-11 | 英特尔公司 | 用于实现具有不同操作模式的多级存储器分级结构的设备和方法 |
EP2761476B1 (en) | 2011-09-30 | 2017-10-25 | Intel Corporation | Apparatus, method and system that stores bios in non-volatile random access memory |
EP2761469B1 (en) | 2011-09-30 | 2019-11-13 | Intel Corporation | Non-volatile random access memory (nvram) as a replacement for traditional mass storage |
US10359949B2 (en) * | 2011-10-31 | 2019-07-23 | Apple Inc. | Systems and methods for obtaining and using nonvolatile memory health information |
CN103164351B (zh) * | 2011-12-16 | 2016-04-27 | 宏碁股份有限公司 | 数据存取方法 |
US9015519B2 (en) * | 2012-01-31 | 2015-04-21 | Symantec Corporation | Method and system for cluster wide adaptive I/O scheduling by a multipathing driver |
US9053008B1 (en) | 2012-03-26 | 2015-06-09 | Western Digital Technologies, Inc. | Systems and methods for providing inline parameter service in data storage devices |
US9135097B2 (en) * | 2012-03-27 | 2015-09-15 | Oracle International Corporation | Node death detection by querying |
US9146856B2 (en) | 2012-04-10 | 2015-09-29 | Micron Technology, Inc. | Remapping and compacting in a memory device |
US9116792B2 (en) * | 2012-05-18 | 2015-08-25 | Silicon Motion, Inc. | Data storage device and method for flash block management |
TWI475387B (zh) * | 2012-07-19 | 2015-03-01 | Jmicron Technology Corp | 記憶體控制方法及記憶體控制電路 |
US9098445B2 (en) * | 2013-03-14 | 2015-08-04 | Apple Inc. | Selection of redundant storage configuration based on available memory space |
US9337873B2 (en) | 2013-05-24 | 2016-05-10 | SK Hynix Inc. | Miscorrection detection for error correcting codes using bit reliabilities |
TWI497280B (zh) * | 2013-07-08 | 2015-08-21 | Phison Electronics Corp | 資料保護方法、記憶體儲存裝置與記憶體控制器 |
CN104346561B (zh) * | 2013-07-29 | 2017-12-29 | 联想(北京)有限公司 | 一种保护存储单元的方法及装置 |
JP2015176309A (ja) * | 2014-03-14 | 2015-10-05 | 株式会社東芝 | 半導体記憶装置 |
US10296429B2 (en) * | 2014-07-25 | 2019-05-21 | Hitachi, Ltd. | Storage device |
KR20160073834A (ko) * | 2014-12-17 | 2016-06-27 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템 동작 방법 |
CN104503705B (zh) * | 2014-12-22 | 2017-08-08 | 吴剀劼 | 利用闪存设备构建可信存储系统的方法及构建的可信存储系统 |
JP6901831B2 (ja) * | 2015-05-26 | 2021-07-14 | 株式会社半導体エネルギー研究所 | メモリシステム、及び情報処理システム |
US10108559B2 (en) * | 2015-06-17 | 2018-10-23 | Xitron LLC | Apparatus for transmitting data through the universal serial bus, converting to SCSI protocols for computer peripherals |
TWI575530B (zh) * | 2015-08-06 | 2017-03-21 | 慧榮科技股份有限公司 | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 |
JP6527054B2 (ja) * | 2015-08-28 | 2019-06-05 | 東芝メモリ株式会社 | メモリシステム |
EP3362903A4 (en) * | 2016-01-29 | 2019-06-05 | Hewlett-Packard Enterprise Development LP | MONITORING SYSTEM STATUS INFORMATION |
US10515006B2 (en) | 2016-07-29 | 2019-12-24 | Samsung Electronics Co., Ltd. | Pseudo main memory system |
TWI710903B (zh) * | 2016-09-30 | 2020-11-21 | 南韓商三星電子股份有限公司 | 偽主記憶體系統及操作該系統的方法 |
US10360104B2 (en) | 2017-05-08 | 2019-07-23 | Silicon Laboratories Inc. | ECC memory controller to detect dangling pointers |
US10218387B2 (en) * | 2017-05-08 | 2019-02-26 | Silicon Laboratories Inc. | ECC memory controller supporting secure and non-secure regions |
US10261777B2 (en) | 2017-07-25 | 2019-04-16 | Aurora Labs Ltd. | Detecting anomalies online using histograms of ECU processing activity |
TWI658361B (zh) * | 2017-09-05 | 2019-05-01 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 |
TWI644215B (zh) | 2017-11-02 | 2018-12-11 | 慧榮科技股份有限公司 | 用來控制一資料儲存裝置的運作之方法以及資料儲存裝置及其控制器 |
TWI643066B (zh) | 2018-01-15 | 2018-12-01 | 慧榮科技股份有限公司 | 用來於一記憶裝置中重新使用關於垃圾收集的一目的地區塊之方法、記憶裝置及其控制器以及電子裝置 |
CN111324554B (zh) * | 2020-02-18 | 2022-03-18 | 日立楼宇技术(广州)有限公司 | 闪存数据的管理方法及装置、电梯控制器 |
US11314427B2 (en) * | 2020-08-21 | 2022-04-26 | Micron Technology, Inc. | Memory device with enhanced data reliability capabilities |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1722096A (zh) * | 2004-07-13 | 2006-01-18 | 鸿富锦精密工业(深圳)有限公司 | 多磁盘容错系统及方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2785068B2 (ja) * | 1990-06-25 | 1998-08-13 | 株式会社ゼクセル | 車輌用データの記憶方法 |
JPH04349593A (ja) * | 1991-05-27 | 1992-12-04 | Tokyo Electric Co Ltd | 商品登録処理装置 |
JPH0816327A (ja) * | 1994-06-27 | 1996-01-19 | Shikoku Nippon Denki Software Kk | ディスクアレイ装置 |
JP2000207137A (ja) | 1999-01-12 | 2000-07-28 | Kowa Co | 情報記憶装置 |
GB0123416D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Non-volatile memory control |
US6925541B2 (en) * | 2002-06-12 | 2005-08-02 | Hitachi, Ltd. | Method and apparatus for managing replication volumes |
JP2004139503A (ja) * | 2002-10-21 | 2004-05-13 | Matsushita Electric Ind Co Ltd | 記憶装置及びその制御方法 |
US7130229B2 (en) * | 2002-11-08 | 2006-10-31 | Intel Corporation | Interleaved mirrored memory systems |
TW591393B (en) * | 2003-01-22 | 2004-06-11 | Fujitsu Ltd | Memory controller |
EP2286343A4 (en) * | 2008-05-19 | 2012-02-15 | Axxana Israel Ltd | ROBUST DATA STORAGE IN THE EVENT OF REPLICATION ERRORS AND ROLLING DISASTERS |
-
2006
- 2006-05-18 JP JP2006138780A patent/JP4700562B2/ja not_active Expired - Fee Related
-
2007
- 2007-05-14 US US12/300,906 patent/US8136015B2/en not_active Expired - Fee Related
- 2007-05-14 WO PCT/JP2007/060289 patent/WO2007136018A1/ja active Application Filing
- 2007-05-14 EP EP07743724A patent/EP2031492B1/en not_active Not-in-force
- 2007-05-14 CN CN2007800181467A patent/CN101449234B/zh not_active Expired - Fee Related
- 2007-05-14 AT AT07743724T patent/ATE521030T1/de not_active IP Right Cessation
- 2007-05-16 TW TW096117402A patent/TW200821909A/zh not_active IP Right Cessation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1722096A (zh) * | 2004-07-13 | 2006-01-18 | 鸿富锦精密工业(深圳)有限公司 | 多磁盘容错系统及方法 |
Non-Patent Citations (2)
Title |
---|
JP特开2004-139503A 2004.05.13 |
JP特开平8-16327A 1996.01.19 |
Also Published As
Publication number | Publication date |
---|---|
TW200821909A (en) | 2008-05-16 |
EP2031492A1 (en) | 2009-03-04 |
US8136015B2 (en) | 2012-03-13 |
EP2031492A4 (en) | 2010-07-21 |
US20090158124A1 (en) | 2009-06-18 |
WO2007136018A1 (ja) | 2007-11-29 |
CN101449234A (zh) | 2009-06-03 |
EP2031492B1 (en) | 2011-08-17 |
JP2007310636A (ja) | 2007-11-29 |
JP4700562B2 (ja) | 2011-06-15 |
ATE521030T1 (de) | 2011-09-15 |
TWI355605B (zh) | 2012-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101449234B (zh) | 数据存储装置以及数据存储方法 | |
US9128618B2 (en) | Non-volatile memory controller processing new request before completing current operation, system including same, and method | |
US8549236B2 (en) | Storage subsystem with multiple non-volatile memory arrays to protect against data losses | |
JP4676378B2 (ja) | データ記憶装置およびデータ記憶方法 | |
JP4842719B2 (ja) | ストレージシステム及びそのデータ保護方法 | |
US10776153B2 (en) | Information processing device and system capable of preventing loss of user data | |
TWI423024B (zh) | 用於快閃記憶體的資料儲存方法及其控制器與儲存系統 | |
US9170941B2 (en) | Data hardening in a storage system | |
WO1997032253A1 (en) | Semiconductor memory device having faulty cells | |
US20100169556A1 (en) | Nonvolatile storage device, information recording system, and information recording method | |
WO1995006284A1 (en) | Ata interface architecture employing state machines | |
TW200928736A (en) | A controller for one type of NAND flash memory for emulating another type of NAND flash memory | |
US20100199019A1 (en) | Logical memory blocks | |
CN102193869B (zh) | 存储器管理与写入方法及其存储器控制器与储存系统 | |
KR19980024095A (ko) | 기억 장치 서브시스템의 자동 구성 방법 및 장치 | |
US20140040533A1 (en) | Data management method, memory controller and memory storage device | |
KR20110139956A (ko) | 맵핑 테이블을 복구하는 데이터 기억 장치 및 데이터 관리 방법 | |
JP2002109895A (ja) | 半導体記憶装置 | |
US20090138656A1 (en) | Method of skipping synchronization process for initialization of RAID1 device | |
CN112988069B (zh) | 存储器管理方法、存储器存储装置及存储器控制器 | |
CN101443739A (zh) | 数据存储装置及其初始化方法 | |
JP3181452B2 (ja) | 半導体ディスク装置 | |
CN110162493A (zh) | 存储器管理方法及使用所述方法的储存控制器 | |
WO2024108349A1 (zh) | 存储系统和存储系统的操作方法 | |
EP2924576A1 (en) | Storage control apparatus, control program, and control method |
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: 20120530 Termination date: 20190514 |
|
CF01 | Termination of patent right due to non-payment of annual fee |