储存装置、控制器及其数据存取方法转让专利

申请号 : CN200810091191.1

文献号 : CN101556560B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 郑国义叶志刚

申请人 : 群联电子股份有限公司

摘要 :

本发明提出一种储存装置,其控制器包括错误校正模块与数据扰乱模块。错误校正模块用以对欲储存至储存装置的闪存模块的数据包进行错误校正编码以产生包含数据包与对应数据包的错误校正码的序列数据码,其中数据包包括记录写入数据的数据区与记录关于数据包的数据的备用区。数据扰乱模块用以将序列码进行转换以产生非序列数据码,其中数据区与备用区的数据和错误校正码是分散于该非序列数据码中。基此,能够有效地将数据包的数据分散,以提升数据的安全性。

权利要求 :

1.一种储存装置,包括:

闪存模块,用以储存数据;

控制器,耦接至该闪存模块并且用以对该闪存模块进行存取,该控制器包括:微处理单元;

错误校正模块,耦接至该微处理单元,用以在数据写入作业时对欲储存至该闪存模块的数据包进行错误校正编码以产生包含该数据包与对应该数据包的错误校正码的序列数据码,其中该数据包包括记录写入数据的数据区与记录关于该数据包的数据的备用区;以及数据扰乱模块,耦接至该微处理单元,用以在该数据写入作业时将该序列数据码进行转换以产生非序列数据码,其中该数据区与该备用区的数据和该错误校正码是分散于该非序列数据码中;以及连接接口,耦接该控制器并且用以连接一主机,

其中在数据写入作业时该控制器将该数据扰乱模块所产生的非序列数据码写入至该闪存模块,其中在数据读取作业时该控制器从该闪存模块中读取该非序列数据码,该数据扰乱模块将所读取的该非序列数据码反转换为该序列数据码,并且该错误校正模块依据所反转换的该序列数据码中的该错误校正码对所反转换的该序列数据码中的该数据包进行错误校正,其中该数据扰乱模块包括数据扰乱单元,用以将该序列数据码分为多个子序列数据码并且将每一子序列数据码中至少两个字节中的数据进行对调或重新排列以产生包括多个子非序列数据码的该非序列数据码,并且用以将所述子非序列数据码进行反对调以还原所述子序列数据码。

2.如权利要求1所述的储存装置,其中该数据扰乱模块还包括:对映缓冲器单元,用以将该非序列数据码以每一子非序列数据码为单位传送至该闪存中,并且用以将从闪存模块中接收的该非序列数据码以每一子非序列数据码为单位传送至该数据扰乱单元。

3.如权利要求2所述的储存装置,其中该数据扰乱模块还包括加解密单元,用以对该序列数据码进行加密与解密。

4.如权利要求1所述的储存装置,其中该微处理单元会以一非顺序方式传送该数据包的每一字节至该错误校正模块来进行错误校正编码。

5.如权利要求1所述的储存装置,其中该闪存模块为SLC NAND闪存模块或MLC NAND闪存模块。

6.如权利要求1所述的储存装置,其中该连接接口为PCI Express接口、USB接口、IEEE

1394接口、SATA接口、MS接口、MMC接口、SD接口、CF接口或IDE接口。

7.一种控制器,其适用于具有闪存模块的储存装置,该控制器包括:微处理单元;

错误校正模块,耦接至该微处理单元,用以在数据写入作业时对欲储存至该闪存模块的数据包进行错误校正编码以产生包含该数据包与对应该数据包的错误校正码的序列数据码,其中该数据包包括记录写入数据的数据区与记录关于该数据包的数据的备用区;以及数据扰乱模块,耦接至该微处理单元,用以在该数据写入作业时将该序列码进行转换以产生非序列数据码,其中该数据区与该备用区的数据和该错误校正码是分散于该非序列数据码中,其中在数据写入作业时该微处理单元将该数据扰乱模块所产生的非序列数据码写入至该闪存模块,其中在数据读取作业时该微处理单元从该闪存模块中读取该非序列数据码,该数据扰乱模块将所读取的该非序列数据码反转换为该序列数据码,并且该错误校正模块依据所反转换的该序列数据码中的该错误校正码对所反转换的该序列数据码中的该数据包进行错误校正,其中该数据扰乱模块包括数据扰乱单元,用以将该序列数据码分为多个子序列数据码并且将每一子序列数据码中至少两个字节中的数据进行对调或重新排列以产生包括多个子非序列数据码的该非序列数据码,并且用以将所述子非序列数据码进行反对调以还原所述子序列数据码。

8.如权利要求7所述的控制器,其中该数据扰乱模块还包括:

对映缓冲器单元,用以将该非序列数据码以每一子非序列数据码为单位传送至该闪存中,并且用以将从闪存模块中接收的该非序列数据码以每一子非序列数据码为单位传送至该数据扰乱单元。

9.如权利要求8所述的控制器,其中该数据扰乱模块还包括加解密单元,用以对该序列数据码进行加密与解密。

10.如权利要求7所述的控制器,其中该微处理单元以一非顺序方式将该数据包的每一字节传送至该错误校正模块以进行错误校正编码。

11.如权利要求7所述的控制器,其中该闪存模块为SLC NAND闪存模块或MLC NAND闪存模块。

12.如权利要求7所述的控制器,其中该储存装置为一USB随身盘、一快闪存储卡或一固态硬盘。

13.一种数据处理方法,其适用于闪存模块,该数据存取方法包括:对欲储存至该闪存模块的数据包进行错误校正编码以产生包含该数据包与对应该数据包的错误校正码的序列数据码,其中该数据包包括记录写入数据的数据区与记录关于该数据包的数据的备用区;

将该序列数据码分为多个子序列数据码并且将每一子序列数据码中至少两个字节中的数据进行对调或重新排列以产生包括多个子非序列数据码的非序列数据码,其中该数据区与该备用区的数据和该错误校正码是分散于该非序列数据码中;以及将该非序列数据码传送至该闪存模块。

14.如权利要求13所述的数据处理方法,还包括:

从该闪存模块中读取该非序列数据码;

将所读取的该非序列数据码进行转换以还原该序列数据码;以及

依据该序列数据码中的该错误校正码对该序列数据码中的该数据包进行错误校正。

15.如权利要求13所述的数据处理方法,还包括对该序列数据码进行加密解密。

16.如权利要求13所述的数据处理方法,其中将该非序列数据码传送至该闪存模块包括以每一子非序列数据码为单位将该非序列数据码传送至该闪存中。

17.如权利要求13所述的数据处理方法,其中对该数据包进行错误校正编码包括以一非顺序方式对该数据包的每一字节进行错误校正编码。

说明书 :

储存装置、控制器及其数据存取方法

技术领域

[0001] 本发明涉及一种储存装置,特别是涉及一种于闪存中能够安全地储存数据的储存装置、其控制器及其数据存取方法。
[0002] 背景技术
[0003] 数字相机、手机相机与MP3在这几年来的成长十分迅速,使得消费者对储存媒体的需求也急速增加。由于闪存(Flash Memory)具有数据非易失性、省电、体积小与无机械结构等的特性,适合可携式应用,最适合使用于这类可携式由电池供电的产品上。存储卡就是一种以NAND闪存作为储存媒体的储存装置。由于存储卡体积小容量大且携带方便,所以已广泛用于个人重要数据的储存。因此,近年闪存产业成为电子产业中相当热门的一环。 [0004] 传统上,闪存控制器的固件码会以闪存控制器内的可程序只读存储器来储存,并且于闪存控制器运作时加载闪存控制器内的静态随机存取存储器来执行。为了能够缩小储存装置的尺寸且能够更方便更新/修改固件码,目前已发展出将固件码直接储存在储存装置的闪存中且于控制器欲运作时再加载至控制器的技术。然而,倘若闪存与闪存控制器之间的数据传输无进行编码时,则固件码可能会轻易地受到破解。因此,有其需要一种在闪存中具安全性的数据存取方法。
[0005] 发明内容
[0006] 本发明提供一种储存装置,其能够所储存的数据码具备安全性。 [0007] 本发明提供一种控制器,其能够使所储存的数据码具备安全性。 [0008] 本发明提供一种数据存取方法,其能够使所储存的数据码具备安全性。 [0009] 本发明提出一种储存装置,其包括闪存模块、控制器与连接接口。闪存模块用以储存数据。控制器耦接至闪存模块并且用以对闪存模块进行存取。控制器包括错误校正模块与数据扰乱模块。错误校正模块用以在数据 写入作业时对欲储存至该闪存模块的数据包(data packet)进行错误校正编码以产生包含数据包与对应数据包的错误校正码的序列数据码,其中数据包包括记录写入数据的数据区与记录关于数据包的数据的备用区。数据扰乱模块用以在该数据写入作业时将序列码进行转换以产生非序列数据码,其中数据区与备用区的数据和错误校正码是分散于该非序列数据码中。连接接口耦接控制器并且用以连接主机。其中,在数据写入作业时该控制器将该数据扰乱模块所产生的非序列数据码写入至该闪存模块,其中在数据读取作业时该控制器从该闪存模块中读取该非序列数据码,该数据扰乱模块将所读取的该非序列数据码反转换为该序列数据码,并且该错误校正模块依据所反转换的该序列数据码中的该错误校正码对所反转换的该序列数据码中的该数据包进行错误校正。
[0010] 在本发明的一实施例中,上述的数据扰乱模块包括数据扰乱单元与对映缓冲器单元。数据扰乱单元用以将序列数据码分为多个子序列数据码并且将每一子序列数据码中至少两个字节中的数据进行对调以产生包括多个子非序列数据码的非序列数据码,并且用以将子非序列数据码进行反对调以还原子序列数据码。对映缓冲器单元用以将非序列数据码以每一子非序列数据码为单位传送至闪存中,并且用以将从闪存模块中接收的非序列数据码以对映每一子非序列数据码为单位传送至数据扰乱单元。
[0011] 在本发明的一实施例中,上述的数据扰乱模块还包括加解密单元,用以对序列数据码进行加密与解密。
[0012] 在本发明的一实施例中,上述的错误校正模块以一非顺序方式对数据包的每一字节进行错误校正编码。
[0013] 在本发明的一实施例中,上述的闪存模块为SLC(Single Level Cell)NAND闪存模块或MLC(Multi Level Cell)NAND闪存模块。
[0014] 在本发明的一实施例中,上述的连接接口为PCI Express接口、USB接口、IEEE1394接口、SATA接口、MS接口、MMC接口、SD接口、CF接口或IDE接口。 [0015] 本发明提出一种控制器,其适用于具有闪存模块的储存装置,此控制器包括错误校正模块与数据扰乱模块。错误校正模块用以在数据写入作业时对欲储存至该闪存模块的数据包进行错误校正编码以产生包含数据包与对应数据包的错误校正码的序列数据码,其中数据包包括记录写入数据的 数据区与记录关于数据包的数据的备用区。数据扰乱模块用以在该数据写入作业时将序列码进行转换以产生非序列数据码,其中数据区与备用区的数据和错误校正码是分散于该非序列数据码中。其中在数据写入作业时该微处理单元将该数据扰乱模块所产生的非序列数据码写入至该闪存模块,其中在数据读取作业时该微处理单元从该闪存模块中读取该非序列数据码,该数据扰乱模块将所读取的该非序列数据码反转换为该序列数据码,并且该错误校正模块依据所反转换的该序列数据码中的该错误校正码对所反转换的该序列数据码中的该数据包进行错误校正。
[0016] 在本发明的一实施例中,上述的数据扰乱模块包括数据扰乱单元与对映缓冲器单元。数据扰乱单元用以将序列数据码分为多个子序列数据码并且将每一子序列数据码中至少两个字节中的数据进行对调以产生包括多个子非序列数据码的非序列数据码,并且用以将子非序列数据码进行反对调以还原子序列数据码。对映缓冲器单元用以将非序列数据码以每一子非序列数据码为单位传送至闪存中,并且用以将从闪存模块中接收的非序列数据码以对映每一子非序列数据码为单位传送至数据扰乱单元。
[0017] 在本发明的一实施例中,上述的数据扰乱模块还包括加解密单元,用以对序列数据码进行加密与解密。
[0018] 在本发明的一实施例中,上述的错误校正模块以一非顺序方式对数据包的每一字节进行错误校正编码。
[0019] 在本发明的一实施例中,上述的闪存模块为SLC(Single Level Cell)NAND闪存模块或MLC(Multi Level Cell)NAND闪存模块。
[0020] 在本发明的一实施例中,上述的储存装置为USB随身盘、快闪存储卡或固态硬盘。 [0021] 本发明提出一种数据处理方法,其适用于闪存模块。此数据处理方法包括对欲储存至闪存模块的数据包进行错误校正编码以产生包含数据包与对应数据包的错误校正码的序列数据码,其中数据包包括记录写入数据的数据区与记录关于该数据包的数据的备用区。此方法还包括将序列数据码进行转换以产生非序列数据码,其中数据区与备用区的数据和错误校正码是分散于非序列数据码中。此外,此方法还包括将非序列数据码传送至闪存模块。
[0022] 在本发明的一实施例中,上述的数据处理方法还包括从闪存模块中读 取非序列数据码,将非序列数据码进行转换以还原序列数据码,以及依据序列数据码中的错误校正码对序列数据码中的数据包进行错误校正。
[0023] 在本发明的一实施例中,上述的数据处理方法还包括对序列数据码进行加密解密。
[0024] 在本发明的一实施例中,上述的数据处理方法将序列码进行转换为非序列数据码包括将序列数据码分为多个子序列数据码,以及将每一子序列数据码中至少两个字节中的数据进行对调以产生包括多个子非序列数据码的非序列数据码。
[0025] 在本发明的一实施例中,上述的将非序列数据码传送至闪存模块包括以每一子非序列数据码为单位将非序列数据码传送至闪存中。
[0026] 在本发明的一实施例中,上述的对数据包进行错误校正编码包括以一非顺序方式对数据包的每一字节进行错误校正编码。
[0027] 本发明因采用将所欲传送至闪存模块的数据码进行分散的作运,由此可使得所传送的数据码无法区分出数据区的数据、备用区的数据或错误校正码。基此,可有效地提升数据码传输的安全性。
[0028] 为让本发明的上述特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
[0029] 附图说明
[0030] 图1是根据本发明实施例绘示闪存储存装置的方块图。
[0031] 图2是绘示图1所示数据扰乱模块的方块图。
[0032] 图3是绘示数据扰乱模块转换数据码的范例示意图。
[0033] 图4是根据本发明另一实施例绘示控制器的方块图。
[0034] 图5是根据本发明另一实施例绘示数据扰乱模块的方块图。
[0035] 图6(a)、((b)是根据本发明实施例绘示数据存取方法的流程图。 [0036] 附图符号说明
[0037] 100:闪存储存装置
[0038] 110:闪存模块
[0039] 120:控制器
[0040] 122:错误校正模块
[0041] 124:数据扰乱模块
[0042] 130:连接接口
[0043] 200:主机
[0044] 300:总线
[0045] 202:数据扰乱单元
[0046] 204:对映缓冲器单元
[0047] 120’:控制器
[0048] 402:微处理单元
[0049] 404:存储器管理模块
[0050] 406:闪存接口
[0051] 408:缓冲存储器
[0052] 124’:数据扰乱模块
[0053] 502:加解密单元
[0054] S601、S603、S603-1、S603-2、S605、S607、S609、S611、S613:数据存取步骤 具体实施方式
[0055] 目前在闪存中储存数据时,一般闪存控制器会对所欲写入的数据以字节为单位进行错误校正编码(error correcting coding),然其所产生的错误校正码(error correcting code)仅能对数据的错误进行校正的功能。本发明所提出的闪存控制器架构除了具有提供上述错误校正能力的错误校正模块外,还包括数据扰乱模块,其会将原本序列的写入数据与错误校正码转换为非序列的写入数据与错误校正码来传送至闪存,由此可以将所储存的数据的顺序分散。基此,可有效保护在控制器与闪存之间传送的安全。以下将以范例实施例并配合图式详细说明本发明。
[0056] 图1是根据本发明实施例绘示闪存储存装置的概要方块图。请参照图1,闪存储存装置100包括闪存模块110、控制器120以及连接接口130。通常闪存储存装置100会与主机200一起使用,以使主机200可将数据储存至闪存储存装置100或从闪存储存装置100中读取数据。在本实施例中,闪存储存装置100为随身盘。但必须了解的是,在本发明另一实施例中闪存储存装置100亦可以是存储卡或固态硬盘(Solid State Drive,SSD)。 [0057] 闪存模块110是耦接至控制器120并且用以储存数据。在本实施中闪存模块110为MLC NAND闪存。然而,本发明不限于此,在本发明另一实施例中,闪存模块110亦可为SLC NAND闪存。
[0058] 闪存模块110通常实质上分割为多个实体区块(physical block),为方便说明以下将实体区块简称为区块。区块通常会被分组为多个区域(zone),以区域来管理存储器某种程度上是彼此独立地操作以增加操作执行的平行程度且简化管理的复杂度。一般而言,在闪存中区块为抹除的最小单位。亦即,每一区块含有最小数目的一并被抹除的存储单元。每一 区块通常会分割为多页(page)。
[0059] 页通常为程序(program)的最小单元,但要特别说明的是在有些不同的闪存设计中最小的程序单位也可为一个扇区(sector)大小,即一页中有多个扇区并以一扇区为程序的最小单元。换言之,页为写入数据或读取数据的最小单元。为对应于磁盘驱动器的扇区(sector)大小,一般而言,一页为一个扇区。然而,亦可以多个扇区形成一页,例如一页包括4个扇区。一般而言,区块可由任意数目的页所组成,例如64页、128页、256页等。每一页通常包括数据区(data area)与备用区(spare area)。数据区用以储存欲写入的数据,而备用区用以储存欲写入页的相关数据(例如此页所属的区块、此页所属的区域等)。因此,在本发明实施例中主机200欲写入数据至闪存模块130的数据包(data packet)是以依序地包含数据区与备用区的序列数据包。然而,必须了解的是,在本发明另一实施例中,数据包亦可以是依序地包含备用区与数据区的序列数据包。
[0060] 控制器120会控制闪存储存装置100的整体运作,例如数据的储存、读取与抹除等。控制器120包括错误校正模块(error correcting module)122、数据扰乱模块124以及协调错误校正模块122与数据扰乱模块124的运作的微处理单元126。
[0061] 错误校正模块122是耦接至微处理单元126。错误校正模块122用以对欲储存至闪存模块110的数据包执行错误校正编码程序,并且产生错误校正码。错误校正模块122还用以在数据读取作业时依据所产生的错误校正码来检查及修正在数据传输时可能产生的错误或噪声(noise)。
[0062] 具体来说,当主机200对闪存装置100执行数据写入运作时,控制器120的错误校正模块122会将包含欲写入数据(记录于数据区)与相关数据(记录于备用区)的序列数据包进行错误校正编码。之后,序列数据包和所产生的对应错误校正码会组合成为欲传送至闪存模块110中的序列数据码。本发明是以序列数据包在前且对应错误校正码接续在后的序列数据码为例进行说明。然而,在本发明另一实施例中亦可以是对应错误校正码在前序列数据包接续在后的序列数据码。此外,在数据读取作业时错误校正模块122会以序列数据码中的错误校正码来检查所读取的序列数据包,并且在检查出序列数据包中发生错误时进行修正。
[0063] 数据扰乱模块124耦接至微处理单元126。根据本发明实施例数据扰乱 模块124会将所输入的序列数据码转换为非序列数据码,或者将非序列数据码转换为序列数据码。具体来说,数据扰乱模块124会将所接收的数据码的至少两个字节(byte)中的数据进行交换的动作。在本发明实施例中的数据扰乱模块124是以改变数据的序列来混乱数据,然而在本发明另一实施例中亦可将数据位作一反相(例如“0”变“1”或“1”变“0”)或者一算法来混乱数据。
[0064] 例如,如图2所示,数据扰乱模块124包括数据扰乱单元202与对映缓冲器单元204。
[0065] 请参照图2,在本实施例中,数据扰乱单元202是用以将所输入的数据码分为多个子数据码(8个字节),并且以子数据码为单位将前4个字节与后4个字节进行对调。如图3所示,当所输入的序列数据码为16个字节的数据“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 1213 14”。反之,当所输入的非序列数据码为16个字节的数据“05 06 0708 01
02 03 04 15 16 17 18 11 12 13 14”,则数据扰乱单元202会将其反编码为“01 02 03
04 05 06 07 08 11 12 13 14 15 16 17 18”。然而,必须了解的是上述对调范例并非限制本发明,本领域的技术人员可轻易地依照上述精神实现其它形式的对调交换或重新排列方式。
[0066] 对映缓冲器单元204是耦接至数据扰乱单元202。对映缓冲器单元204会将数据扰乱单元202所产生的非序列数据码以子非序列数据码为单位传送至闪存模块110中。此外,当从闪存模块110中接收非序列数据码时,配合数据扰乱单元202以对映出完整子非序列数据码以传送至数据扰乱单元202。具体来说,在本实施例中,对映缓冲器单元204具有8个byte的FIFO缓存器(first in,first out)。当数据扰乱单元202将输入的序列数据码”01 02 03 04 05 06 07 08 11 12 13 14 15 16 17 18”编码为”05 06 07 08 01 02
03 04 15 16 17 18 11 12 13 14”。数据扰乱单元202先传送“05 06 07 08”至对映缓冲器单元204,此笔数据输出后,数据扰乱单元202再传送“01 02 03 04”,如此类推。反之亦然。
[0067] 必须了解的是,除了错误校正模块122、数据扰乱模块124与微处理单元126的外,控制器还可包括存储器管理模块404、闪存接口406与缓冲存储器408(如图4所示的控制器120’)。
[0068] 例如,存储器管理模块404耦接至微处理单元126。存储器管理模块404会管理闪存130,例如执行平均磨损(wear leveling)方法、坏区块管理、维护对映表(mapping table)等。闪存接口406耦接至微处理单元126并且用以存取闪存模块110。也就是,主机200欲写入至闪存模块110的数据会经由闪存接口406转换为闪存模块110所能接受的格式。缓冲存储器408用以暂时地储存系统数据(例如逻辑实体对映表)或者主机200所读取或写入的数据。例如,缓冲存储器408为静态随机存取存储器(staticrandom access memory,SRAM)。然而,必须了解的是,本发明不限于此,动态随机存取存储器(Dynamic Random Access memory,DRAM)、磁阻式存储器(Magnetoresistive Random Access Memory,MRAM)、相变化存储器(Phase Change Random Access Memory,PRAM)或其它适合的存储器亦可应用于本发明。
[0069] 请再参照图1,连接接口130用以通过总线300连接于主机200。在本实施例中,连接接口130为USB接口。然而,必须了解的是本发明不限于此,连接接口130可以是PCI Express接口、IEEE 1394接口、SATA接口、MS接口、MMC接口、SD接口、CF接口、IDE接口或其它适合的数据传输接口。
[0070] 综上所述,根据本发明实施例的闪存储存装置100在储存数据时会通过错误校正模块122进行错误校正编码,并且通过数据扰乱模块124将欲储存数据的序列分散再传送至闪存模块110。换言之,根据本发明实施例,上述产生的序列数据码在程序至闪存模块110之前,控制器120的数据扰乱模块124会将序列数据码分割为多个子序列数据码,并且将每一子序列数据码之前数个字节的数据与之后数个字节的数据进行对调以产生多个子非序列数据码,其中,该字节数可依对映缓冲单元的容量来决定。如此一来,数据扰乱模块
124将原本具一定顺序(即使用者数据、系统数据与错误校正码的顺序)的序列数据码转换为无法区分使用者数据、系统数据与错误校正码的非序列数据码(如图3所示)。之后,再将此非序列数据码传送至闪存模块110。因此,在控制器120与闪存模块110之间所传输的数据无法识别出其本质,由此强化储存数据的安全性。
[0071] 在本发明另一实施例中,数据扰乱模块还包括加解密单元502(如图5所示)。加解密单元502会在储存程序中对包含数据包与错误校正码的序 列数据码以一金钥进行加密,并且当进行读取程序时,加解密单元502会对所读取的序列数据码以此金钥进行解密,由此更进一步保护所传送的数据码。
[0072] 此外,为了进一步加强数据包的安全,在本发明另一实施例中,错误校正模块122还会以一非顺序方式对数据包的每一字节进行错误校正编码。具体来说,当欲将数据包传送至错误校正模块122进行错误校正编码时,数据包的每一字节会以非顺序的方式传送至错误校正模块122来进行错误校正编码。由此,在数据扰乱模块124分散数据包与错误校正码之前进行初步的分散动作,以使得欲传送至闪存模块110的数据码的数据排列顺序更为散乱。具体来说,在本实施例中错误校正模块122一次是对一个字节做编码,因此,当数据包传送至错误校正模块122时,微处理单元126会将排列数据包内部的数据为包含6位的使用者数据,及2位的系统数据。然而,必须了解的是上述数据重整范例并非限制本发明,本领域的技术人员可轻易地依照上述精神实现其它形式的重新排列方式。 [0073] 图6是根据本发明实施例绘示数据存取方法的流程图,其中图6中的(a)示出了储存的步骤,而图6中的(b)示出了读取的步骤。
[0074] 请参照图6的(a),当欲写入数据至闪存储存装置时时,在步骤S601中首先会对欲储存至闪存模块110的数据包进行错误校正编码以产生包含数据包与对应数据包的错误校正码的序列数据码。如上所述数据包是包括记录写入数据(使用者数据)的数据区与记录关于数据包的数据(系统数据)的备用区的序列数据包。
[0075] 接着,在步骤S603中会将序列数据码进行转换以产生非序列数据码。例如,在步骤S603中包括将序列数据码分为多个子序列数据码(步骤S603-1),以及将每一子序列数据码中至少两个字节中的数据进行对调以产生包括多个子非序列数据码的非序列数据码(步骤S603-2)。因此,数据包中的数据区数据与备用区数据和错误校正码会分散于非序列数据码中。最后,在步骤S605中会将非序列数据码程序至闪存模块110中。 [0076] 此外,当欲读取以上述程序储存至闪存模块110的数据时,必须通过相同模块以反向步骤来还原所写入的数据。
[0077] 请参照图6的(b),例如,当从闪存模块110传送欲读取的数据至控制器120时,在步骤S607中会先将分散的数据码暂存于数据扰乱模块124中, 例如对映缓冲器单元204中。当接受到完整的子非序列数据码后,数据扰乱模块124会执行反转换运作(步骤S609)。例如,在步骤609中包括数据扰乱单元202会将前4个字节与后4个字节的数据对调,由此将子非序列数据码还原为子序列数据码。之后再将包含所有子序列数据码的序列数据码传送至错误校正模块进行检查及修正(步骤S611)。最后,控制器120再将经过错误校正模块检查或修正的数据码传送至主机200(步骤S613)。
[0078] 在本发明另一实施例中,数据存取方法可还包括以一金钥对序列数据码进行加密/解密的步骤,或者在对数据包进行错误校正编码包括以一非顺序方式对数据包的每一字节进行错误校正编码,由此进一步强化所欲程序的数据码的安全性。此外,值得说明的是上述的数据扰乱模块124与错误校正模块122可以一硬件或固件方式实施。 [0079] 综上所述,本发明的闪存控制器在储存数据时除了对数据包进行以字节为单位的错误校正编码外,还包括将包含数据包与错误校正码的序列数据码以多个字节为单位进行数据字节的对调,由此将序列数据码分散为非序列数据码以区分不出数据包的数据区与备用区以及错误校正码。因此,可有效地确保所储存数据的安全性。此外,本发明亦包含对序列数据码进行加密,或者在对数据包进行错误校正编码时以一非顺序方式对数据包的每一字节进行错误校正编码,由此进一步强化了所欲储存的数据码的安全性。 [0080] 虽然本发明已以较佳实施例披露如上,然其并非用以限定本发明,本领域技术人员在不脱离本发明的精神和范围的前提下可作若干的更动与润饰,因此本发明的保护范围以本发明的权利要求为准。