CN101634937B - 数据存取方法、使用此方法的存储系统及其控制器 - Google Patents
数据存取方法、使用此方法的存储系统及其控制器 Download PDFInfo
- Publication number
- CN101634937B CN101634937B CN200810128183XA CN200810128183A CN101634937B CN 101634937 B CN101634937 B CN 101634937B CN 200810128183X A CN200810128183X A CN 200810128183XA CN 200810128183 A CN200810128183 A CN 200810128183A CN 101634937 B CN101634937 B CN 101634937B
- Authority
- CN
- China
- Prior art keywords
- data
- physical blocks
- flash memory
- read
- blocks
- 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
Links
Images
Landscapes
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种数据存取方法、使用此方法的存储系统及其控制器,此数据存取方法适用于具有数据扰乱模块的快闪存储装置。此存取方法包括从主机中接收读取指令,并且从此读取指令中获取欲读取逻辑区块与欲读取页地址。此数据存取方法也包括判断在数据区中对应欲读取逻辑区块的实体区块是否为新区块,并且当对应欲读取逻辑区块的实体区块为新区块时则将预设数据传送给主机。基此,能够避免主机从具有数据扰乱模块的快闪存储系统中读取到乱码。
Description
技术领域
本发明涉及一种数据存取方法,且特别涉及一种能够避免主机读取到乱码的数据存取方法以及使用此方法的快闪存储系统与其控制器。
背景技术
数字相机、手机相机与MP3在这几年来的成长十分迅速,使得消费者对存储介质的需求也急速增加。由于快闪存储器(Flash Memory)具有数据非挥发性、省电、体积小与无机械结构等的特性,适合可携式应用,最适合使用于这类可携式由电池供电的产品上。存储卡就是一种以反及(NAND)快闪存储器作为存储介质的存储装置。由于存储卡体积小容量大且携带方便,所以已广泛用于个人重要数据的存储。因此,近年快闪存储器产业成为电子产业中相当热门的一环。
传统上,在快闪存储系统中控制器所执行的固件代码以控制器内的可程序只读存储器来存储,并且于快闪存储系统运作时载入至控制器内的静态随机存取存储器来执行。为了能够缩小存储装置的尺寸且能够更方便更新/修改固件代码,已发展出将固件代码直接存储在快闪存储系统的快闪存储器内且于控制器欲运作时再载入至控制器的技术。在此架构中,一般会实作一数据扰乱模块(或编码模块)并且在数据传送给快闪存储器之前将数据编码成乱码再传送至快闪存储器,且在从快闪存储器中读取数据后进行解码来恢复原始数据,由此保护固件代码或者其他重要数据在控制器与快闪存储器之间传送的安全性。
然而,在一般快闪存储装置出厂前必须对快闪存储装置内的新快闪存储器进行开卡程序,其类似对快闪存储器的每一新区块进行初始化的操作(即,将每一区块的每一页地址的数据擦除为0×FF数据)。特别是,此对每一区块进行初始化的操作并非写入指令,因此并不会经过上述数据扰乱模块来进行编码,但当使用者端系统对此新快闪存储装置的新区块下达读取指令时其所存储的0×FF数据会经过上述数据扰乱模块来进行解码,基此使用者端系统会接收到乱码,而造成无法辨识的问题。基此,有其需要发展一种在具有上述数据扰乱模块的快闪存储装置中避免读取到乱码的数据存取数据方法。
发明内容
有鉴于此,本发明提供一种数据存取方法,其能够避免主机从具有数据扰乱模块的快闪存储系统中读取到乱码。
本发明提供一种控制器,其中存储器管理模块是使用上述数据存取方法来管理与读取快闪存储器的新区块,由此避免主机从具有数据扰乱模块的快闪存储系统中读取到乱码。
本发明提供一种存储系统,其中控制器是使用上述数据存取方法来管理与读取快闪存储器的新区块,由此避免主机从具有数据扰乱模块的快闪存储系统中读取到乱码。
本发明提出一种数据存取方法,其适用于存取具有控制器、快闪存储器与数据扰乱模块的快闪存储装置,其中快闪存储器具有多个实体区块且这些实体区块会至少分组为数据区与备用区,并且该数据扰乱模块用以对在该控制器与该快闪存储器之间所传送的数据进行编码或解码。此存取方法包括从主机中接收读取指令,并且从此读取指令中获取欲读取逻辑区块与欲读取页地址。此数据存取方法也包括判断在数据区中对应欲读取逻辑区块的实体区块是否为新区块,并且当对应欲读取逻辑区块的实体区块为新区块时则将一预设数据传送给主机,其中该预设数据是经由该数据扰乱模块将存储于该快闪存储器的数据解码所获得。
在本发明的一实施例中,上述的预设数据为0x00数据或0xFF数据。
在本发明的一实施例中,上述的数据存取方法还包括在对此快闪存储装置执行开卡程序期间为每一实体区块记录一标记以注记每一实体区块为新区块,其中上述判断在该数据区中对应该欲读取逻辑区块的实体区块是否为该新区块的步骤包括根据此标记来判断在数据区中对应欲读取逻辑区块的实体区块是否为新区块,其中倘若对应欲读取逻辑区块的实体区块具有此标记时则判断在对应欲读取逻辑区块的实体区块为新区块。
在本发明的一实施例中,上述的数据存取方法还包括在对快闪存储装置执行开卡程序期间将预设数据写入至每一实体区块的预设页面中,其中上述当对应欲读取逻辑区块的实体区块为新区块时则将预设数据传送给主机的步骤包括从对应欲读取逻辑区块的实体区块的预设页地址中读取数据。
在本发明的一实施例中,上述的预设页地址为实体区块的第一页地址。
在本发明的一实施例中,上述的数据存取方法还包括在对快闪存储装置执行开卡程序期间在备用区中的其中一个实体区块的所有页地址中写入预设数据,其中当对应欲读取逻辑区块的实体区块为新区块时则将预设数据传送给主机的步骤包括从写入预设数据的实体区块中对应该欲读取页地址的页地址中读取数据。
在本发明的一实施例中,上述的数据存取方法,其中当对应欲读取逻辑区块的实体区块为新区块时则将预设数据传送给主机的步骤包括由硬件或固件将从对应欲读取逻辑区块的实体区块中所读取的数据更改为预设数据。
在本发明的一实施例中,上述的数据存取方法还包括在对快闪存储装置执行开卡程序期间将每一实体区块中的所有页地址中的数据擦除为0×FF数据,将每一实体区块中的0×FF数据通过上述数据扰乱模块进行解码且将所解码的0×FF数据记录在解码表中,其中判断在数据区中对应欲读取逻辑区块的实体区块是否为新区块的步骤包括将从对应欲读取逻辑区块的实体区块中读取的数据与记录在解码表中的数据进行比对,其中倘若从对应欲读取逻辑区块的实体区块中读取的数据与记录在解码表中的数据相同时则判断对应欲读取逻辑区块的实体区块为新区块。
在本发明的一实施例中,上述的数据存取方法还包括在逻辑区块与实体区块映射表中记录此标记。
在本发明的一实施例中,上述的数据存取方法还包括在每一实体区块的冗余区中记录此标记。
本发明提出一种控制器,其适用于具有快闪存储器的快闪存储装置,其中快闪存储器包括多个实体区块且这些实体区块会至少分组为数据区与备用区。此控制器包括微处理器单元、数据扰乱模块、快闪存储器接口、缓冲存储器以及存储器管理模块。微处理器单元用以从来自于主机的读取指令中获取欲读取逻辑区块与欲读取页地址。数据扰乱模块电性连接至微处理器单元且用以对从快闪存储器中读取的数据进行解码并且用以对欲写入至该快闪存储器中的数据进行编码。快闪存储器接口电性连接至微处理器单元且用以存取快闪存储器。缓冲存储器电性连接至微处理器单元且用以暂时地存储数据。存储器管理模块电性连接至微处理器单元且用以判断在数据区中对应欲读取逻辑区块的实体区块是否为新区块,并且用以当对应欲读取逻辑区块的实体区块为新区块时,将预设数据传送给主机,其中该预设数据是经由该数据扰乱模块将存储于该快闪存储器的数据解码所获得。
在本发明的一实施例中,上述的预设数据为0x00数据或0xFF数据。
在本发明的一实施例中,上述的存储器管理模块会在快闪存储装置的开卡程序期间为每一实体区块记录标记以注记每一实体区块为新区块,并且存储器管理模块会根据此标记来判断在数据区中对应欲读取逻辑区块的实体区块为新区块。
在本发明的一实施例中,上述的存储器管理模块会在开卡程序期间将预设数据写入至每一实体区块的预设页地址中,并且当对应欲读取逻辑区块的实体区块为新区块时存储器管理模块会从对应欲读取逻辑区块的实体区块的预设页地址中读取数据。
在本发明的一实施例中,上述的预设页地址为实体区块的第一页地址。
在本发明的一实施例中,上述的存储器管理模块会在开卡程序期间在备用区中的其中一个实体区块的所有页地址中写入预设数据,并且当对应欲读取逻辑区块的实体区块为新区块时存储器管理模块会从写入预设数据的实体区块中对应欲读取页地址的页地址中读取数据。
在本发明的一实施例中,当对应欲读取逻辑区块的实体区块为新区块时上述的存储器管理模块会将从对应欲读取逻辑区块的实体区块中所读取的数据更改为预设数据。
在本发明的一实施例中,上述的存储器管理模块会在开卡程序期间将每一实体区块中的所有页地址中的数据擦除为0×FF数据,将每一实体区块中的0×FF数据通过数据扰乱模块进行解码且将所解码的0×FF数据记录在解码表中,并且上述的存储器管理模块会在当从对应欲读取逻辑区块的实体区块中读取的数据与记录在解码表中的数据为相同时判断对应欲读取逻辑区块的实体区块为新区块。
在本发明的一实施例中,上述的存储器管理模块会在逻辑区块与实体区块映射表中记录上述的标记。
在本发明的一实施例中,上述的存储器管理模块会在每一实体区块的冗余区中记录上述的标记。
在本发明的一实施例中,上述的快闪存储装置为USB随身盘、存储卡或固态硬盘。
本发明提出一种快闪存储系统,其包括快闪存储器、传输连接接口与控制器。快闪存储器用以存储数据,其中快闪存储器包括多个实体区块且这些实体区块会至少分组为数据区与备用区。传输连接接口用以连接主机。控制器电性连接至快闪存储器与传输连接接口,且控制器用以从来自于主机的读取指令中获取欲读取逻辑区块与欲读取页地址、判断在数据区中对应欲读取逻辑区块的实体区块是否为新区块,并且当对应欲读取逻辑区块的实体区块为新区块时,将预设数据传送给主机,其中控制器具有数据扰乱模块用以对从快闪存储器中读取的数据进行解码并且用以对欲写入至该快闪存储器中的数据进行编码,其中该预设数据是经由该数据扰乱模块将存储于该快闪存储器的数据解码所获得。
在本发明的一实施例中,上述的预设数据为0x00数据或0xFF数据。
在本发明的一实施例中,上述的控制器会在快闪存储装置的开卡程序期间为每一实体区块记录标记以注记每一实体区块为新区块,并且控制器会根据此标记来判断在数据区中对应欲读取逻辑区块的实体区块为新区块。
在本发明的一实施例中,上述的控制器会在开卡程序期间将预设数据写入至每一实体区块的预设页地址中,并且当对应欲读取逻辑区块的实体区块为新区块时上述的控制器会从对应欲读取逻辑区块的实体区块的预设页地址中读取数据。
本发明因采用在传送数据给主机之前判断所读取的实体区块是否为新区块,并且当所读取的实体区块为新区块时以预设数据传送给主机,因此可避免主机读取到乱码。
为让本发明的上述特征和优点能更明显易懂,下文特举优选实施例,并配合附图,作详细说明如下。
附图说明
图1是根据本发明一实施例绘示快闪存储系统的概要方块图。
图2是根据本发明一实施例绘示快闪存储器及其运作的详细方块图。
图3A是根据本发明第一实施例绘示数据存取的流程图。
图3B是根据本发明第一实施例绘示改变读取页面位的示意图。
图4A是根据本发明第二实施例绘示数据存取的流程图。
图4B是根据本发明第二实施例绘示逻辑区块与实体区块映射表的范例。
图4C是根据本发明第二实施例绘示改变读取另一实体区块的示意图。
图5是根据本发明第三实施例绘示数据存取的流程图。
【主要元件符号说明】
100:快闪存储系统
110:控制器
110a:微处理器单元
110b:存储器管理模块
110c:快闪存储器接口
110d:缓冲存储器
110e:数据扰乱模块
120:传输连接接口
130:快闪存储器
130-0、130-1、130-2、130-N:实体区块
300:总线
200:主机
202:系统区
204:数据区
206:备用区
S、M:实体区块
L0:逻辑区块
D:数据区
R:冗余区
P0、P1、PN:页地址
S301、S303、S305、S307、S309:数据存取步骤。
S401、S403、S405、S407、S409:数据存取步骤。
S501、S503、S505、S507、S509:数据存取步骤。
具体实施方式
图1是根据本发明一实施例绘示快闪存储系统的概要方块图。请参照图1,快闪存储系统100包括控制器110、传输连接接口120以及快闪存储器130。
通常快闪存储系统100会与主机200一起使用,以使主机200可将数据写入至快闪存储系统100或从快闪存储系统100中读取数据。在本实施例中,快闪存储系统120为固态硬盘(Solid State Drive,SSD)。但必须了解的是,在本发明另一实施例中快闪存储系统120亦可以是存储卡或随身盘。
控制器110会执行以硬件型式或固件型式实作的多个指令以配合传输连接接口120与快闪存储器130以进行数据的存储、读取与擦除等操作。控制器110包括微处理器单元110a、存储器管理模块110b、快闪存储器接口110c、缓冲存储器110d以及数据扰乱模块110e。
微处理器单元110a用以与存储器管理模块110b、快闪存储器接口110c与缓冲存储器110d等协同合作以进行快闪存储系统100的各种操作。例如,微处理器单元110a会依据所接收到的读取指令或写入指令来与存储器管理模块110b、快闪存储器接口110c和缓冲存储器110d完成数据的读取与写入。
存储器管理模块110b是电性连接至微处理器单元110a。存储器管理模块110b用以管理快闪存储器130,例如具有用以执行平均磨损(wearleveling)、坏区块管理、维护映射表(mapping table)等功能的机器指令。特别是,存储器管理模块110b会执行根据下述数个实施例的数据存取步骤。
值得一提的是,在本实施例中,存储器管理模块110b是以一硬件型式来实际操作。然而必须了解的是,在本发明另一实施例中存储器管理模块110b亦可以一固件型式来实际操作,其中当以一固件型式来实际操作存储器管理模块110b时存储器管理模块110b是具有可由微处理器单元110a执行的多个机器指令,并且当快闪存储系统100运作时存储器管理模块110b会被载入至缓冲存储器110d中以由微处理器单元110a来执行。
快闪存储器接口110c是电性连接至微处理器单元110a并且用以存取快闪存储器130。也就是,主机200欲写入至快闪存储器130的数据会经由快闪存储器接口110c转换为快闪存储器130所能接受的格式。
缓冲存储器110d是电性连接至微处理器单元110a并且用以暂时地存储系统数据(例如逻辑实体映射表)或者主机200所读取或写入的数据。在本实施例中,缓冲存储器110d为静态随机存取存储器(static randomaccess memory,SRAM)。然而,必须了解的是,本发明不限于此,动态随机存取存储器(Dynamic Random Access memory,DRAM)、磁阻式存储器(Magnetoresistive Random Access Memory,MRAM)、相变化存储器(Phase Change Random Access Memory,PRAM)或其他适合的存储器亦可应用于本发明。
数据扰乱模块110e是电性连接至微处理器单元110a并且用以将所输入的序列数据转换为非序列数据,或者将非序列数据转换为序列数据。具体来说,为了达到数据安全性的目的,在本实施例中控制器110在对快闪存储器130进行写入或读取时,其间所传送的数据都会经过数据扰乱模块110e进行编码或解码。
在本发明一实施例中,数据扰乱模块110e会将所接收的数据码的至少两个字节(byte)中的数据进行对调的动作。例如,当所输入的序列数据为“01 02 03 04 05 06 07 08 11 12 13 14 15 16 17 18”时,数据扰乱单元202会将其编码为“05 06 07 08 01 02 03 04 15 16 17 18 11 12 13 14”。反之,当所输入的非序列数据为“05 06 07 08 01 02 03 04 15 16 17 18 11 12 13 14”,则数据扰乱单元110e会将其解码为“01 02 03 04 05 06 07 08 11 12 13 14 15 1617 18”。然而,必须了解的是上述对调范例并非限制本发明,此领域熟知技艺者可轻易地依照上述精神实现其他形式的对调交换或重新排列方式。
在本发明实施例中的数据扰乱模块110e是以改变数据的序列来混乱数据,然而在本发明另一实施例中亦可将数据比特作一反相(例如“0”变“1”或“1”变“0”)或者一演算法来混乱数据。
此外,虽未绘示于本实施例,但控制器110可还包括错误校正模块与电源管理模块等用于控制快闪存储器的一般功能模块。
传输连接接口120用以通过总线300连接主机200。在本实施例中,传输连接接口120为PCI Express接口。然而,必须了解的是本发明不限于此,传输连接接口120亦可以是USB接口、IEEE 1394接口、SATA接口、MS接口、MMC接口、SD接口、CF接口、IDE接口或其他适合的数据传输接口。
快闪存储器130是电性连接至控制器110并且用以存储数据。快闪存储器130通常实质上分割为多个实体区块(physical block)130-0至130-N。一般而言,在快闪存储器中实体区块为擦除的最小单位。亦即,每一实体区块含有最小数目之一并被擦除的存储胞。每一实体区块通常会分割为数个页地址(page)。页地址通常为编程(program)的最小单元。但要特别说明的是于有些不同的快闪存储器设计,最小的编程单位也可为一个扇区(sector)。也就是说,一页地址中有多个扇区并以一扇区为编程的最小单元。换句话说,页地址为写入数据或读取数据的最小单元。每一页地址通常包括使用者数据区D与冗余区R。使用者数据区用以存储使用者的数据,而冗余区用以存储系统的数据(例如,错误校正码(error correcting code,ECC))。
为对应于磁碟驱动器的扇区(sector)大小,一般而言,使用者数据区D通常为512字节,而冗余区R通常为16字节。也就是,一页为一个扇区。然而,亦可以多个扇区形成一页,例如一页包括4个扇区。
一般而言,实体区块可由任意数目的页地址所组成,例如64个页地址、128个页地址、256个页地址等。实体区块130-0至130-N通常也可被分组为数个区域(zone),以区域来管理存储器某种程度上是彼此独立地操作以增加操作执行的平行程度且简化管理的复杂度。
以下将根据本发明并配合附图详细说明快闪存储器130的操作。必须了解的是,在以下描述中使用“提取”、“搬移”、“交换”等词来操作快闪存储器130的实体区块是逻辑上的概念。也就是说,快闪存储器区块的实际位置并未更动,而是逻辑上对快闪存储器130的实体区块进行操作。
图2是根据本发明实施例绘示快闪存储器130及其运作的详细方块图。
请参照图2,在本发明实施例中,为了有效率地编程(即写入与擦除)快闪存储器130,快闪存储器130的实体区块130-1至130-N会在逻辑上分组为一系统区202、一数据区204与一备用区206。一般来说,快闪存储器130中属于数据区204的实体区块会占90%以上。
系统区202中的实体区块用以记录系统数据,系统数据例如是关于快闪存储器130的区域数、每一区域的实体区块数、每一实体区块的页地址数、记录逻辑区块与实体区块对应关系的映射表(mapping table)等。
数据区204中的实体区块用以存储使用者的数据,一般来说就是主机200所操作的逻辑区块地址所对应的区块。
备用区206中的实体区块是用以替换数据区204中的实体区块,因此在备用区206中的实体区块为空或可使用的区块,即无记录数据或标记为已没用的无效数据。具体来说,由于如果要对已写过资料位置再次写入资料时,必须先执行擦除的动作。然而,如前所述快闪存储器写入单位为页,而擦除单位为区块,因此一个擦除的单位是大于写入的单位。此表示若要执行实体区块的擦除动作时,必须先将欲擦除实体区块中的有效页地址复制至其它实体区块后才可进行。因此,当欲在数据区204中已写过资料位置的实体区块M中写入新数据时,一般会在备用区206中提取一实体区块S,然后将实体区块M中的有效数据复制至实体区块S且将新数据写入实体区块S后,将实体区块M擦除后搬移至备用区206同时将实体区块S搬移至数据区204。必须了解的是,将实体区块M擦除后搬移至备用区206同时将实体区块S搬移至数据区204是逻辑上将实体区块M关联于备用区206而将实体区块S关联于数据区204。其中此本领域技术人员皆能了解数据区204中区块的逻辑关系可由逻辑区块与实体区块映射表来维护。
一般来说,快闪存储系统100在准备出厂前会进行开卡程序,在执行此开卡程序时快闪存储器130的所有实体区块130-0~130-N会进行初始化以将其所含有的数据实际地擦除为0×FF数据。如上所述,快闪存储器130的实体区块130-0~130-N会分组为系统区、数据区与备用区,其中属于数据区的实体区块为具有效数据的区块且为主机200会读取的区块(即,逻辑区块对应的区块),而备用区的实体区块是用以在执行写入指令时用以替换的区块,因此当数据区的实体区块与备用区的实体区块经过轮替后就不会发生因对刚初始化(即,擦除为0×FF数据)后的实体区块(即,刚出厂的新区块)进行读取而接收到乱码的问题。因此,本发明所提出的数据存取方法就是在传送数据给主机200之前判断所读取的实体区块是否为新区块,倘若所读取的实体区块为新区块则以一预设数据(例如,0×00数据或0×FF数据)传送给主机200,由此避免主机200接收到乱码。以下将以上述的硬件概要方块图并分别地配合数个数据存取步骤范例实施例来说明本发明的精神。
[第一实施例]
如上所述,快闪存储系统100在准备出厂前会进行开卡程序,此时根据本实施例的存储器管理模块110b会在每一实体区块的第一页地址的冗余区R中以一个比特来标记此实体区块为新区块(即,未曾写入过数据),例如在此比特中记录“1”来表示此实体区块为新区块,且以记录“0”来表示此实体区块为非新区块。同时,在开卡程序期间存储器管理模块110b会在每一实体区块的第一页地址的数据区D中写入0×00数据,特别是所写入的0×00数据会经过数据扰乱模块110e编码并且以一乱码型式写入至每一实体区块的第一页地址的数据区D中。必须了解的是,在此是在实体区块的第一页地址中写入0×00数据(即,预设数据),然而本发明不限于此,在本发明另一实施例中亦以实体区块的其他页面作为存储预设数据的页地址。
值得一提的是,之后在快闪存储系统100运作时当对标记为新区块的实体区块写入数据后则存储器管理模块110b会更改此实体区块的标记以表示此实体区块为非新区块。特别是,倘若当仅对标记为新区块的实体区块的部分页地址进行写入数据时,其他未写入数据的页地址亦会写入0×00数据,以使得此实体区块的所有页地址都已写入过数据。
在本发明一实施例中,当主机200欲读取快闪存储系统100中的数据时,存储器管理模块110b会判断主机200欲读取的页地址所属的实体区块是否为新区块,倘若欲读取的页地址为一个新区块的页地址时,则存储器管理模块110b会读取此实体区块的第一页地址,并传送其中的数据给主机200。更详细来说,倘若欲读取的页地址为新区块的页地址时,由在此页地址所存储的数据为0×FF数据,当0×FF数据经过数据扰乱模块110e进行解码时会产生乱码,因此主机200会从此属于新区块的页地址中接收到无法辨识的乱码数据。因此,在本实施例中倘若欲读取的页地址所属的实体区块为新区块时,存储器管理模块110b会读取此实体区块的第一页地址中的数据来传送给主机,其中由在此实体区块的第一页地址中的数据是以经过数据扰乱模块110e所编码的0×00数据来存储,因此当从此实体区块的第一页地址中读取的数据经过数据扰乱模块110e进行解码后会是0×00数据。因此,主机200不会发生读取到乱码的情况。
在本实施例中,是在每一实体区块的第一页地址的冗余区R中记录此实体区块是否为新区块的标记。然而,本发明不限于此,在本发明另一实施例中亦可在逻辑区块与实体区块映射表中来标记逻辑区块所对应的实体区块是否为新区块。
图3A是根据本发明第一实施例绘示数据存取的流程图。
请参照图3A,在步骤S301中快闪存储系统100会从主机200中接收一读取指令,并且微处理器单元110a会从此读取指令中获取欲读取的逻辑区块及其页地址。接着,在步骤S303中存储器管理模块110b会读取对应此欲读取逻辑区块的实体区块的第一页地址中的标记,并且在步骤S305中忆体管理模块110b会依据此标记判断对应此欲读取逻辑区块的实体区块是否为新区块。
倘若在步骤S305中判断对应此欲读取逻辑区块的实体区块不是新区块时,则在步骤S307中存储器管理模块110b会读取对应此欲读取逻辑区块的实体区块的第一页地址中的数据,并将所读取的数据传送给主机200。例如,如图3B所示,当主机200欲读取逻辑区块L0的页地址P1时,存储器管理模块110b依据欲读取逻辑区块L0所对应的实体区块130-0的页地址P0中的标记“1”而判断实体区块130-0为新区块,因此原本应读取实体区块130-0的页地址P1的存储器管理模块110b会改读取实体区块130-0的页地址P0中的数据。
倘若在步骤S305中判断对应此欲读取逻辑区块的实体区块为新区块时,则在步骤S309中存储器管理模块110b会依据读取指令中欲读取的逻辑区块及其页地址所对应的实体区块及其页地址来读取数据,并将所读取的数据传送给主机200。
[第二实施例]
如上所述第一实施例是在当判断所欲读取的实体区块为新区块时,通过更改在此实体区块中所读取的页地址来读取事先写入的0×00数据以避免主机读取到乱码。然而,亦可利用更改所读取的实体区块的方式来达到此目的。
如上所述,在执行开卡程序时快闪存储器130的所有实体区块会进行初始化以将其所含有的数据实际地擦除为0×FF数据,并且根据本实施例的存储器管理模块110b会在逻辑区块与实体区块映射表中标记对应每一逻辑区块的实体区块为新区块。例如,在逻辑区块与实体区块映射表的每一组对应中以1个比特来记录“1”来表示此实体区块为新区块(如图4B所示),且之后在快闪存储系统100运作时当对标记为新区块的实体区块写入数据后此标记会更改为“0”来表示此实体区块为非新区块。同时,根据本实施例的存储器管理模块110b会从快闪存储器的备用区206中提取一实体区块,并且在所提取的实体区块的所有页地址中写入0×00数据(例如,图4C所示的实体区块130-N),特别是所写入的0×00数据会经过数据扰乱模块110e编码后才写入至所提取的实体区块的所有页地址中。
在本实施例中,当主机200欲读取快闪存储系统100中的数据时,根据本实施例的存储器管理模块110b会判断主机200欲读取的页地址所属的实体区块是否为新区块,倘若欲读取的页地址为新区块的页地址时,则根据本实施例的存储器管理模块110b会从所提取的实体区块的对应页地址中读取数据,并传送所读取的数据给主机200。因此,在本实施例中倘若欲读取的页地址所属的实体区块为新区块时,则根据本实施例的存储器管理模块110b会从事先已写入0×00数据的实体区块中读取数据来传送给主机,由此避免主机读取到乱码的情况。
图4A是根据本发明第二实施例绘示数据存取的流程图。
请参照图4A,在步骤S401中快闪存储系统100会从主机200中接收一读取指令,并且微处理器单元110a会从此读取指令中获取欲读取的逻辑区块及其页地址。接着,在步骤S403中存储器管理模块110b从逻辑区块与实体区块映射表中读取对应欲读取逻辑区块的实体区块的标记,并且在步骤S405中存储器管理模块110b会依据此标记判断对应此欲读取逻辑区块的实体区块是否为新区块。
倘若在步骤S405中存储器管理模块110b判断对应此欲读取逻辑区块的实体区块为新区块时,则在步骤S407中存储器管理模块110b会从所提取的实体区块的对应页地址中读取数据,并将所读取的数据传送给主机。例如,如图4C所示,当主机200欲读取逻辑区块L0的页地址P1时,存储器管理模块110b依据逻辑区块与实体区块映射表中的标记“1”而判断实体区块130-0为新区块,因此原本应读取实体区块130-0的页地址P1的存储器管理模块110b会改从事先已写入0×00数据的实体区块130-N的页地址P1中读取数据。
倘若在步骤S405中存储器管理模块110b判断对应此欲读取逻辑区块的实体区块不是新区块时,则在步骤S409中存储器管理模块110b会依据读取指令中欲读取的逻辑区块及其页地址所对应的实体区块及其页地址来读取数据,并将所读取的数据传送给主机200。
[第三实施例]
上述第一实施例与第二实施例是通过在实体区块的第一页地址的冗余区中或在逻辑区块与实体区块映射表中记录实体区块为新区块的标记来判断所欲读取的实体区块是否为新区块。此外,亦可通过判断从实体区块中所读取的数据来判断此实体区块是否为新区块。
在本实施例中,存储器管理模块110b会快闪存储系统100执行开卡程序期间将每一已初始化的实体区块中的0×FF数据通过数据扰乱模块110e来进行解码,并且将所解码后得到的数据记录在一解码表中。之后,当控制器110依照主机200的读取指令从实体区块中读取数据时存储器管理模块110b就可根据所读取的数据与记录在此解码表中的数据为相同而判断此实体区块为新区块。
此外,在上述第一实施例与第二实施例是分别通过更改读取的页地址与实体区块来读取事先写入的0×00数据以避免主机读取到乱码。然而,在本实施例中,亦可在判断对应此欲读取逻辑区块的实体区块为新区块时由存储器管理模块110b直接以0×00数据回应此读取指令以传送给主机,其中在存储器管理模块110b中更改所读取的数据的指令可以一硬件型式或一固件型式来实际操作。
图5是根据本发明第三实施例绘示数据存取的流程图。
请参照图5,在步骤S501中快闪存储系统100会从主机200中接收一读取指令,并且微处理器单元110a会从此读取指令中获取欲读取的逻辑区块及其页地址。接着,在步骤S503中存储器管理模块110b会依据欲读取的逻辑区块及其页地址所对应的实体区块及其页地址来读取数据。然后,在步骤S505中存储器管理模块110b会判断所读取的数据是否与解码表中的内容相同,其中倘若比对结果为相同时表示对应此欲读取逻辑区块的实体区块为新区块。
倘若在步骤S505中比对结果为相同时,则在步骤S507中会将所读取的数据更改为0×00数据,并将所更改后的数据传送给主机。
倘若在步骤S505中比对结果为不相同时,则在步骤S509中会将所读取的数据传送给主机200。
综上所述,本发明所提出的数据存取方法会在传送数据给使用者端系统之前判断所读取的实体区块是否为新区块,倘若所读取的实体区块为新区块则以更改读取页地址或实体区块或者直接产生0×00数据传送给使用者端系统,由此避免使用者端系统在具有数据扰乱模块的快闪存储系统中于新区块中读取数据时接收到乱码的情形。
虽然本发明已以优选实施例公开如上,然其并非用以限定本发明,本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,因此本发明的保护范围当视所附权利要求书所界定者为准。
Claims (21)
1.一种数据存取方法,其适用于具有一控制器、一快闪存储器与一数据扰乱模块的一快闪存储装置,其中该快闪存储器具有多个实体区块且这些实体区块会至少分组为一数据区与一备用区,并且该数据扰乱模块用以对在该控制器与该快闪存储器之间所传送的数据进行编码或解码,该存取方法包括:
从一主机中接收一读取指令,并且从该读取指令中获取一欲读取逻辑区块与一欲读取页地址;
判断在该数据区中对应该欲读取逻辑区块的实体区块是否为一新区块;以及
当对应该欲读取逻辑区块的实体区块为该新区块时,则将一预设数据传送给该主机,其中该预设数据是经由该数据扰乱模块将存储于该快闪存储器的数据解码所获得。
2.如权利要求1所述的数据存取方法,其中该预设数据为0x00数据或0xFF数据。
3.如权利要求1所述的数据存取方法,还包括在对该快闪存储装置执行一开卡程序期间为每一实体区块记录一标记,以注记每一实体区块为该新区块,其中判断在该数据区中对应该欲读取逻辑区块的实体区块是否为该新区块的步骤包括:
根据该标记来判断在该数据区中对应该欲读取逻辑区块的实体区块是否为该新区块,其中倘若对应该欲读取逻辑区块的实体区块具有该标记时,则判断在该数据区中对应该欲读取逻辑区块的实体区块为该新区块。
4.如权利要求3所述的数据存取方法,还包括在对该快闪存储装置执行该开卡程序期间将该预设数据写入至每一实体区块的一预设页地址中,其中当对应该欲读取逻辑区块的实体区块为该新区块时则将该预设数据传送给该主机的步骤包括从对应该欲读取逻辑区块的实体区块的该预设页地址中读取数据。
5.如权利要求4所述的数据存取方法,其中该预设页地址为该实体区块的第一页地址。
6.如权利要求3所述的数据存取方法,还包括在对该快闪存储装置执行该开卡程序期间,在该备用区中的其中一个实体区块的所有页地址中写入该预设数据,其中当对应该欲读取逻辑区块的实体区块为该新区块时,则将该预设数据传送给该主机的步骤包括:从写入该预设数据的该实体区块中对应该欲读取页地址的页地址中读取数据。
7.如权利要求3所述的数据存取方法,还包括在一逻辑区块与实体区块映射表中记录该标记。
8.如权利要求3所述的数据存取方法,还包括在每一实体区块的冗余区中记录该标记。
9.一种控制器,其适用于具有一快闪存储器的一快闪存储装置,其中该快闪存储器包括多个实体区块且这些实体区块会至少分组为一数据区与一备用区,该控制器包括:
一微处理器单元,用以从来自于一主机的一读取指令中获取一欲读取逻辑区块与一欲读取页地址;
一数据扰乱模块,电性连接至该微处理器单元且用以对从该快闪存储器中读取的数据进行解码并且用以对欲写入至该快闪存储器中的数据进行编码;
一快闪存储器接口,电性连接至该微处理器单元且用以存取该快闪存储器;
一缓冲存储器,电性连接至该微处理器单元且用以暂时地存储数据;以及
一存储器管理模块,电性连接至该微处理器单元且用以判断在该数据区中对应该欲读取逻辑区块的实体区块是否为一新区块,并且用以当对应该欲读取逻辑区块的实体区块为该新区块时,将一预设数据传送给该主机,其中该预设数据是经由该数据扰乱模块将存储于该快闪存储器的数据解码所获得。
10.如权利要求9所述的控制器,其中该预设数据为0x00数据或0xFF数据。
11.如权利要求9所述的控制器,其中该存储器管理模块会在该快闪存储装置的一开卡程序期间为每一实体区块记录一标记,以注记每一实体区块为该新区块,并且该存储器管理模块会根据该标记来判断在该数据区中对应该欲读取逻辑区块的实体区块为该新区块。
12.如权利要求11所述的控制器,其中该存储器管理模块会在该开卡程序期间,将该预设数据写入至每一实体区块的一预设页地址中,并且当对应该欲读取逻辑区块的实体区块为该新区块时,该存储器管理模块会从对应该欲读取逻辑区块的实体区块的该预设页地址中读取数据。
13.如权利要求12所述的控制器,其中该预设页地址为该实体区块的第一页地址。
14.如权利要求11所述的控制器,其中该存储器管理模块会在该开卡程序期间,在该备用区中的其中一个实体区块的所有页地址中写入该预设数据,并且当对应该欲读取逻辑区块的实体区块为该新区块时,该存储器管理模块会从写入该预设数据的该实体区块中对应该欲读取页地址的页地址中读取数据。
15.如权利要求11所述的控制器,其中该存储器管理模块会在一逻辑区块与实体区块映射表中记录该标记。
16.如权利要求11所述的控制器,其中该存储器管理模块会在每一实体区块的冗余区中记录该标记。
17.如权利要求9所述的控制器,其中该快闪存储装置为一USB随身盘、一存储卡或一固态硬盘。
18.一种快闪存储系统,包括:
一快闪存储器,用以存储数据,其中该快闪存储器包括多个实体区块且这些实体区块会至少分组为一数据区与一备用区;
一传输连接接口,用以连接一主机;以及
一控制器,电性连接至该快闪存储器与该传输连接接口,该控制器用以从来自于一主机的一读取指令中获取一欲读取逻辑区块与一欲读取页地址、判断在该数据区中对应该欲读取逻辑区块的实体区块是否为一新区块,并且当对应该欲读取逻辑区块的实体区块为该新区块时,将一预设数据传送给该主机,
其中该控制器具有一数据扰乱模块,用以对从该快闪存储器中读取的数据进行解码并且用以对欲写入至该快闪存储器中的数据进行编码,其中该预设数据是经由该数据扰乱模块将存储于该快闪存储器的数据解码所获得。
19.如权利要求18所述的快闪存储系统,其中该预设数据为0x00数据或0xFF数据。
20.如权利要求18所述的快闪存储系统,其中该控制器会在一开卡程序期间,为每一实体区块记录一标记,以注记每一实体区块为该新区块,并且该控制器会根据该标记来判断在该数据区中对应该欲读取逻辑区块的实体区块为该新区块。
21.如权利要求20所述的快闪存储系统,其中该控制器会在该开卡程序期间将该预设数据写入至每一实体区块的一预设页地址中,并且当对应该欲读取逻辑区块的实体区块为该新区块时,该控制器会从对应该欲读取逻辑区块的实体区块的该预设页地址中读取数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810128183XA CN101634937B (zh) | 2008-07-21 | 2008-07-21 | 数据存取方法、使用此方法的存储系统及其控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810128183XA CN101634937B (zh) | 2008-07-21 | 2008-07-21 | 数据存取方法、使用此方法的存储系统及其控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101634937A CN101634937A (zh) | 2010-01-27 |
CN101634937B true CN101634937B (zh) | 2011-10-19 |
Family
ID=41594134
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810128183XA Active CN101634937B (zh) | 2008-07-21 | 2008-07-21 | 数据存取方法、使用此方法的存储系统及其控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101634937B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20160032910A (ko) * | 2014-09-17 | 2016-03-25 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
CN109032804B (zh) * | 2018-08-01 | 2020-12-11 | 创新先进技术有限公司 | 数据处理方法和装置、服务器 |
CN109119124B (zh) * | 2018-08-27 | 2020-05-26 | 湖南国科微电子股份有限公司 | 固态硬盘的生产方法及固态硬盘 |
CN113495848B (zh) * | 2020-04-08 | 2024-07-30 | 慧荣科技股份有限公司 | 闪存装置、闪存装置的开卡方法及计算机可读取存储介质 |
CN117420964B (zh) * | 2023-12-18 | 2024-03-22 | 合肥康芯威存储技术有限公司 | 一种存储装置及其数据处理方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1523501A (zh) * | 2003-02-18 | 2004-08-25 | 联发科技股份有限公司 | 检查程序内容确保固件更新相容性的固件更新方法及装置 |
CN1866207A (zh) * | 2005-05-18 | 2006-11-22 | 鸿富锦精密工业(深圳)有限公司 | 嵌入式系统出厂预设值初始设定程序的更新方法 |
-
2008
- 2008-07-21 CN CN200810128183XA patent/CN101634937B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1523501A (zh) * | 2003-02-18 | 2004-08-25 | 联发科技股份有限公司 | 检查程序内容确保固件更新相容性的固件更新方法及装置 |
CN1866207A (zh) * | 2005-05-18 | 2006-11-22 | 鸿富锦精密工业(深圳)有限公司 | 嵌入式系统出厂预设值初始设定程序的更新方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101634937A (zh) | 2010-01-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI692690B (zh) | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 | |
CN101625897B (zh) | 用于快闪存储器的数据写入方法、储存系统与控制器 | |
CN101571832B (zh) | 数据写入方法及使用该方法的快闪存储系统与其控制器 | |
CN101576853B (zh) | 数据存取方法、使用此方法的控制器与存储系统 | |
CN101661431B (zh) | 用于快闪存储器的区块管理方法、快闪储存系统及控制器 | |
US20100057979A1 (en) | Data transmission method for flash memory and flash memory storage system and controller using the same | |
US8683147B2 (en) | Data accessing method for flash memory storage device having data perturbation module, and storage system and controller using the same | |
CN101297276A (zh) | 具有本地执行功能和存储功能的大容量存储设备 | |
CN101630233B (zh) | 用于闪存的数据存取方法、储存系统与控制器 | |
CN101667157A (zh) | 闪存数据传输方法、闪存储存系统及控制器 | |
CN101556555B (zh) | 用于闪存的区块管理方法、其控制器与储存系统 | |
CN101634937B (zh) | 数据存取方法、使用此方法的存储系统及其控制器 | |
US8074128B2 (en) | Block management and replacement method, flash memory storage system and controller using the same | |
CN101527169A (zh) | 闪存数据写入方法及其控制器 | |
CN101408864A (zh) | 用于断电时的数据保护方法及使用此方法的控制器 | |
CN101727397B (zh) | 区块管理与更换方法、闪存储存系统及其控制器 | |
US20090210612A1 (en) | Memory controller, nonvolatile memory device, and nonvolatile memory system | |
CN101625661B (zh) | 用于闪存的数据管理方法、储存系统与控制器 | |
CN103218300B (zh) | 数据处理方法、存储器控制器与存储器储存装置 | |
CN101576859A (zh) | 非易失性存储器数据写入方法、存储系统及其控制器 | |
CN101609392B (zh) | 数据串传送分派方法、系统及其控制器 | |
CN103377132B (zh) | 管理存储器空间的方法、存储器控制器与存储器储存装置 | |
CN101661432B (zh) | 闪存区块管理方法、闪存储存系统及控制器 | |
CN101957799B (zh) | 用于闪速存储器的数据写入方法及其控制电路与存储系统 | |
CN101788954B (zh) | 用于快闪存储器的区块管理方法及其存储系统与控制器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |