一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据的写入方法及其数据存储装置与流程

2022-02-19 04:50:47 来源:中国专利 TAG:


1.本发明涉及一种数据的写入方法及其数据存储装置,尤其涉及一种具有周期性损坏数据列的数据存储媒体的数据的写入方法及其数据存储装置。


背景技术:

2.一般而言,存储装置,例如是固态硬盘(solid state drive,ssd)、sd存储卡(secure digital memory card)或闪存盘(usb)等,主要是由控制单元与数据存储媒体所构成。数据存储媒体是由多个数据列(column)所构成,而这些数据列则是用来存储数据。存储装置在制造的过程中,难免会生产出一些未达原厂合格标准的数据存储媒体,而被归类为次级(downgrade)品。这些次级品在贩卖给消费者之前,都会先将数据存储媒体中损坏数据列(bad column)侦测出来,并将它标注或记录至损坏数据列表。控制单元便可根据损坏数据列表,跳过这些已标注或已记录的损坏数据列,不对这些损坏数据列进行数据的写入,借此避免发生存取数据错误的情况。
3.然而,在这些次级品中通常会出现周期性损坏数据列的现象,亦即每隔一段区间会出现一个损坏数据列。值得注意的是,当周期很短时,将产生大量的损坏数据列,而这些大量的损坏数据列远远超过硬件可以标注的数量。倘若使用旧有的方式将侦测出来的损坏数据列一个一个地标注或记录下来,将需要花费大量的内存空间来记录损坏数据列的位置。举例来说,倘若一个数据页(page)有18000个数据列,而每间隔8个数据列会有一个数据列是损坏的,总共会有2250个损坏数据列。因此一个存储矩阵(plane)需要2250个字节(4500bytes)来记录损坏数据列的位置。更进一步来说,倘若数据存储媒体配置16颗规格颗粒及4个存储矩阵,则数据存储媒体需要288kbytes来记录损坏数据列的位置,而此容量却远大于一般控制器所内建的静态随机存取内存(sram)的容量大小。此外,损坏数据列的标注或记录的数量受限于硬件,倘若可标注的数量用完时,数据存储媒体中这些剩余未标注的损坏数据列,将可能消耗糾錯碼(error correcting code,ecc)的糾錯能力,造成原本可以糾錯的数据无法被适当的糾錯。
4.因此,对于具有周期性损坏数据列的数据存储媒体,如何在有限的硬件可标注的损坏数据列的数量限制下,提供一种可以大幅降低记录损坏数据列位置所需花费的内存容量的方法,将是本案所要着重的问题与解决的重点。


技术实现要素:

5.有鉴于此,本发明实施例提供一种数据的写入方法,适用于数据存储媒体,数据存储媒体耦接于控制单元,且数据存储媒体包括多个数据列及至少一损坏数据列,数据的写入方法包括:控制单元依据周期参数及损坏参数,以将数据写入至数据存储媒体的多个数据列,其中周期参数存储具有第一错误率的预定周期,损坏参数存储在预定周期中错误率大于等于预定错误率的至少一损坏数据列的位置。
6.在本发明的一实施例中,其中周期参数及损坏参数存储于数据存储媒体中。
7.在本发明的一实施例中,在控制单元依据周期参数及损坏参数,以将数据写入至数据存储媒体的多个数据列的步骤前,还包括:控制单元设定侦测至少一损坏数据列的预定周期范围;控制单元依据预定周期,将多个数据列划分为x个周期,其中预定周期是选自于预定周期范围,x为多个数据列除以预定周期且x为正整数,以及x个周期中的每一个周期具有t个数据列,其中t为预定周期且t为正整数;控制单元分别统计多个数据列在x个周期中损坏的数量,以取得多个数据列所对应的损坏数据列总数;控制单元分别将多个数据列所对应的损坏数据列总数作归一化,以分别计算出多个数据列在预定周期条件下的错误率,并分别将多个错误率记录至错误率记录表中;控制单元判断预定周期的数值是否大于等于预定周期范围的上限值;以及当判断为是时,控制单元从错误率记录表中选取具有第一错误率,即最高错误率的预定周期并存储至周期参数,以及在预定周期中选取错误率大于等于预定错误率的至少一损坏数据列并将至少一损坏数据列的位置存储至损坏参数。
8.在本发明的一实施例中,在控制单元判断预定周期的数值是否大于等于预定周期范围的上限值的步骤后,还包括:当判断为否时,控制单元调整预定周期的数值,并执行控制单元依据预定周期将多个数据列划分为x个周期的步骤。
9.本发明实施例另提供一种数据存储装置,包括:数据存储媒体以及耦接于数据存储媒体的控制单元。数据存储媒体包括多个数据列及至少一损坏数据列。控制单元依据周期参数及损坏参数,以将数据写入至数据存储媒体的多个数据列,其中周期参数存储具有第一错误率(通常是最高错误率)的预定周期,损坏参数存储在预定周期中错误率大于等于预定错误率的至少一损坏数据列的位置。
10.在本发明的另一实施例中,其中周期参数及损坏参数存储于数据存储媒体中。
11.在本发明的另一实施例中,控制单元还包括:设定侦测至少一损坏数据列的预定周期范围;依据预定周期,将多个数据列划分为x个周期,其中预定周期是选自于预定周期范围,x为多个数据列除以预定周期且x为正整数,以及x个周期中的每一个周期具有t个数据列,其中t为预定周期且t为正整数;分别统计多个数据列在x个周期中损坏的数量,以取得多个数据列所对应的损坏数据列总数;分别将多个数据列所对应的损坏数据列总数作归一化,以分别计算出多个数据列在预定周期条件下的错误率,并分别将多个错误率记录至错误率记录表中;判断预定周期的数值是否大于等于预定周期范围的上限值;以及当判断为是时,从错误率记录表中选取具有第一错误率(通常是最高错误率)的预定周期并存储至周期参数,以及在预定周期中选取错误率大于等于预定错误率的至少一损坏数据列并将至少一损坏数据列的位置存储至损坏参数。
12.在本发明的另一实施例中,控制单元还包括:当判断为否时,调整预定周期的数值,并执行依据预定周期将多个数据列划分为x个周期。
13.本发明实施例所提供数据的写入方法及其数据存储装置,借由读取周期参数及损坏参数,以取得损坏数据列的位置,同时将数据准确地写入至数据存储媒体的数据列中,其中周期参数存储具有第一错误率(通常是最高错误率)的预定周期,损坏参数存储在预定周期中错误率大于等于预定错误率的至少一损坏数据列的位置。借此,在写入数据的过程中,可以主动跳过损坏数据列,以避免将数据写入至数据存储媒体的损坏数据列中,同时达到大幅降低存储或记录损坏数据列位置所需花费的内存容量的目的。
14.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,
而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
15.图1为数据存储装置的示意图。
16.图2为数据存储媒体的示意图。
17.图3为依照本发明实施例数据存储媒体的周期性损坏数据列的侦测方法的流程示意图。
18.图4a为依照本发明实施例的依据预定周期将m个数据列划分为x个周期的示意图。
19.图4b为依照本发明实施例的依据预定周期将m个数据列划分为2048个周期的示意图。
20.图4c为依照本发明实施例的依据预定周期将m个数据列划分为1820个周期的示意图。
21.图4d为依照本发明实施例的依据预定周期将m个数据列划分为1638个周期的示意图。
22.图5为依照本发明实施例的数据的写入方法的流程示意图。
23.图6为依照本发明实施例的产生错误率记录表的示意图。
具体实施方式
24.请参阅图1,图1为数据存储装置的示意图。数据存储装置包括有数据存储媒体10与控制单元20,其中控制单元20耦接至数据存储媒体10,以对数据存储媒体10存取数据。
25.请参阅图2,图2为数据存储媒体的示意图。数据存储媒体10包括有多个数据列11,而置于同一列的数据列称之为数据页(page,如标示p0至pn-1所示),每n个数据页被划分成一个数据区块(block,如标示b0至bz-1所示)。其中n、z皆为正整数。在本实施例中,数据存储媒体10包括以非挥发性内存来实现,例如是以闪存(flash memory)、磁阻式随机存取内存(magnetoresistive ram)、铁电随机存取内存(ferroelectric ram)等具有长时间数据保存的内存装置来实现。
26.本发明实施例的数据的写入方法及其数据存储装置,可用于侦测具有周期性损坏数据列(未绘示)的数据存储媒体10,以取得损坏数据列的位置。借此确保数据可以准确地写入至数据存储媒体10的数据列11,而不会写入至数据存储媒体10的损坏数据列。假设每一个数据页p0至pn-1有m个数据列11,而每间隔t个数据列11会有一个数据列11是损坏的,也就是每间隔t个数据列11会有一个损坏数据列,其中m、t皆为正整数。此外,为了简化说明,本发明实施例随机挑选数据存储媒体10的其中一个区块b0至bz-1,当作样本区块来执行损坏数据列的侦测,而不必使用到所有的区块b0至bz-1。
27.图3为依照本发明实施例数据存储媒体的周期性损坏数据列的侦测方法的流程示意图。在开始执行侦测方法后(如步骤s100所示)。首先,控制单元20设定侦测损坏数据列的预定周期范围(如步骤s101所示),也就是对预定周期范围内所有的数据列11进行侦测或扫描,以取得数据列11损坏的位置,亦即取得损坏数据列的位置。换言之,侦测到损坏的数据列11可以被视为损坏数据列。举例来说,倘若设定的预定周期范围为2至256个数据列11时。
控制单元20会从周期为2开始进行损坏数据列的侦测,接着对周期为3进行损坏数据列的侦测,以此类推,最后对周期为256进行损坏数据列的侦测。值得注意的是,预定周期范围乃是根据实际的需要而任意设定。在本发明实施例中,为了简化说明,所以只使用8至10的数值作为预定侦测的周期范围。
28.接着,请参阅图4a,图4a为依照本发明实施例的依据预定周期将m个数据列划分为x个周期的示意图。控制单元20依据预定周期t的数值,将m个数据列11划分为x(m/t)个周期(即周期t0至周期tx-1),其中预定周期t的数值是选自于预定周期范围中所设定的数值,并且每一个周期有t个数据列11(如步骤s102所示)。附加说明的是,倘若m个数据列11无法被预定周期t整除而产生余数,亦即存在少部分的数据列11未被划分至x个周期中,对于这少部分的数据列11可以跳过不看,或者将其视为非损坏的数据列。
29.请参阅图4b,图4b为依照本发明实施例的依据预定周期将m个数据列划分为2048个周期的示意图。假设每一个数据页p0至pn-1有16384个数据列11(即m=16384),而预定周期t的数值为8,则16384个数据列11可以划分为2048(即x=16384/8)个周期(即周期t0至周期t2047),其中每一个周期有8个数据列11(即第一数据列c0至第八数据列c7)。
30.接着,控制单元20分别统计m个数据列11在x个周期中损坏的数量(如步骤s103所示),也就是统计第一数据列c0在周期t0至周期t2047中损坏的数量,接着统计第二数据列c1在周期t0至周期t2047中损坏的数量,以此类推,然后统计第八数据列c7在周期t0至周期t2047中损坏的数量。附加说明的是,这些数据列11中的任何一个数据列11可以是在x个周期中全数是损坏;全数是没有损坏的;部分是损坏的;部分是没有损坏的。举例来说,倘若这些数据列11中只有第三数据列c2及第六数据列c5在周期t0至周期t2047中有部分是损坏的,而其余的数据列(即第一数据列c0、第二数据列c1、第四数据列c3、第五数据列c4、第七数据列c6及第八数据列c7)在周期t0至周期t2047中全数是没有损坏的。更进一步来说,第三数据列c2在周期t0至周期tx-1中,有超过一半的周期是损坏的,例如是1024个周期,亦即总计有1024个第三数据列c2为损坏数据列,而第六数据列c5在周期t0至周期tx-1中,有超过四分之三的周期是损坏的,例如是1536个周期,亦即总计有1536个第六数据列c5为损坏数据列。最后控制单元20分别统计出第一数据列c0至第八数据列c在周期t0至周期t2047中损坏数据列的总数,并依数据列11的顺序依序列出如下:0、0、1024、0、0、1536、0、0。
31.紧接着,控制单元20分别将这些数据列11的损坏数据列总数作归一化(normalize),以分别计算出这些数据列11在预定周期t条件下的错误率,并分别将这些错误率记录至错误率记录表中(如步骤s104所示)。在本发明实施例中,当预定周期t为8时,控制单元20将第一数据列c0至第八数据列c7所分别对应的损坏数据列总数除以x(即2048)个周期,以执行归一化。更进一步来说,控制单元20将在步骤s103有关第一数据列c0至第八数据列c在周期t0至周期t2047中损坏数据列总数的统计结果“0、0、1024、0、0、1536、0、0”分别除以2048,以执行归一化,并将归一化的结果依序列出如下:0、0、0.5、0、0、0.75、0、0。这表示第三数据列c2及第六数据列c5的错误率分别为50%及75%,而其余数据列的错误率为0%。然后,控制单元20将预定周期t为8时的归一化的结果存储至错误率记录表中(如图6所示)。
32.之后,控制单元20判断预定周期t是否大于等于预定周期范围的上限值(如步骤s104所示)。若否,调整预定周期t的数值,并回到步骤s102(如步骤s106所示)。在本发明实
施例中,由于预定周期t为8时是小于预定周期范围的上限值(即10),因此,调整预定周期t的数值至9,并回到步骤s102。
33.请参阅图4c,图4c为依照本发明实施例的依据预定周期将m个数据列划分为1820个周期的示意图。在步骤s102中,依据预定周期t为9时,将16384个数据列划分为1820(即x=16384/9)个周期(即周期t0至周期t1819),其中每一个周期有9个数据列11(即第一数据列c0至第九数据列c8)。
34.接着,在步骤s103中,控制单元20分别统计第一数据列c0至第九数据列c8在周期t0至周期t1819中损坏的数量。举例来说,假设第一数据列c0、第二数据列c1、第三数据列c2、第四数据列c3、第五数据列c4、第六数据列c5、第七数据列c6、第八数据列c7和第九数据列c8,分别有十分之一的周期、十分之二的周期、十分之三的周期、十分之一的周期、十分之一的周期、十分之三的周期、十分之四的周期、十分之二的周期和十分之一的周期是损坏的。换言之,总计有182个第一数据列c0为损坏数据列;总计有364个第二数据列c1为损坏数据列;总计有546个第三数据列c2为损坏数据列;总计有182个第四数据列c3为损坏数据列;总计有182个第五数据列c4为损坏数据列;总计有546个第六数据列c5为损坏数据列;总计有728个第七数据列c6为损坏数据列;总计有364个第八数据列c7为损坏数据列;总计有182个第九数据列c8为损坏数据列。最后控制单元20分别统计出第一数据列c0至第九数据列c在周期t0至周期t1819中损坏数据列的总数,并依序列出如下:182、364、546、182、182、546、728、364、182。
35.紧接着,在步骤s104中,当预定周期t为9时,控制单元20将第一数据列c0至第九数据列c8所分别对应的损坏数据列总数除以x(即1820)个周期,以执行归一化。更进一步来说,控制单元20将在步骤s103有关第一数据列c0至九数据列c8在周期t0至周期t1819中损坏数据列总数的统计结果“182、364、546、182、182、546、728、364、182”分别除以1820,以执行归一化,并将归一化的结果依序列出如下:0.1、0.2、0.3、0.1、0.1、0.3、0.4、0.2、0.1。这表示第一数据列c0、第二数据列c1、第三数据列c2、第四数据列c3、第五数据列c4、第六数据列c5、第七数据列c6、第八数据列c7和第九数据列c8的错误率分别为10%、20%、30%、10%、10%、30%、40%、20%、和10%。然后,控制单元20将预定周期t为9的归一化的结果存储至错误率记录表中(如图6所示)。
36.之后,在步骤s105中,判断预定周期t是否大于等于预定周期范围的上限值。在本发明实施例中,由于预定周期t为9小于预定周期范围的上限值(即10),因此,调整预定周期t的数值至10,并回到步骤s102。
37.请参阅图4d,图4d为依照本发明实施例的依据预定周期将m个数据列划分为1638个周期的示意图。在步骤s102中,依据预定周期t为10时,将16384个数据列划分为1638(即x=16384/10)个周期(即周期t0至周期t1637),其中每一个周期有10个数据列11(即第一数据列c0至第十数据列c9)。
38.接着,在步骤s103中,控制单元20分别统计第一数据列c0至第十数据列c9在周期t0至周期t1637中损坏的数量。举例来说,假设第一数据列c0、第二数据列c1、第三数据列c2、第四数据列c3、第五数据列c4、第六数据列c5、第七数据列c6、第八数据列c7、第九数据列c8和第十数据列c9,分别有十分之一的周期、十分之一的周期、十分之二的周期、十分之三的周期、十分之一的周期、十分之二的周期、十分之二的周期、十分之一的周期、十分之一
的周期和十分之二的周期是损坏的。换言之,总计有163个第一数据列c0为损坏数据列;总计有163个第二数据列c1为损坏数据列;总计有327个第三数据列c2为损坏数据列;总计有491个第四数据列c3为损坏数据列;总计有163个第五数据列c4为损坏数据列;总计有327个第六数据列c5为损坏数据列;总计有327个第七数据列c6为损坏数据列;总计有163个第八数据列c7为损坏数据列;总计有163个第九数据列c8为损坏数据列;总计有327个第十数据列c9为损坏数据列。最后控制单元20分别统计出第一数据列c0至第十数据列c9在周期t0至周期t1637中损坏数据列的总数,并依序列出如下:163、163、327、491、163、327、327、163、163、327。
39.紧接着,在步骤s104中,针对在预定周期t为10时,控制单元20将第一数据列c0至第十数据列c9所分别对应的损坏数据列总数除以x(即1638)个周期,以执行归一化。更进一步来说,控制单元20将在步骤s103有关第一数据列c0至第十数据列c9在周期t0至周期t1637中损坏数据列总数的统计结果“163、163、327、491、163、327、327、163、163、327”分别除以1638,以执行归一化,并将归一化的结果依序列出如下:0.1、0.1、0.2、0.3、0.1、0.2、0.2、0.1、0.1、0.2。这表示第一数据列c0、第二数据列c1、第三数据列c2、第四数据列c3、第五数据列c4、第六数据列c5、第七数据列c6、第八数据列c7、第九数据列c8和第十数据列c9的错误率分别为10%、10%、20%、30%、10%、20%、20%、10%、10%和20%。然后,控制单元20将预定周期t为10的归一化的结果存储至错误率记录表中(如图6所示)。
40.之后,在步骤s105中,判断预定周期t是否大于等于预定周期范围的上限值。由于预定周期t为10等于预定周期范围的上限值(即10),因此,执行步骤s107。
41.在步骤s107中,控制单元20从错误率记录表中选取具有第一错误率(通常是最高错误率)的预定周期t的值。由错误率记录表可知,当预定周期t为8时,其最高错误率为0.75;当预定周期t为9时,其最高错误率为0.4;当预定周期t为10时,其最高错误率为0.3。由于预定周期t等于8时,具有最高错误率。因此,控制单元20选取预定周期t为8,将此预定周期t视为具有最高错误率的预定周期t。然后,控制单元20在此预定周期t中,进一步选取错误率大于等于预定错误率的数据列11,并将此数据列11视为损坏数据列。更进一步来说,控制单元20在第一数据列c0至第八数据列c7中选取错误率大于等于预定错误率的数据列11,并将选取到的数据列11视为损坏数据列,同时将此损坏数据列记录至数据存储媒体10中。举例来说,假设预定错误率设定为20%,在预定周期t为8时,除了第三数据列c2(错误率为30%)和第六数据列c5(错误率为75%)的错误率大于20%之外,其余的数据列11皆小于20%,因此,第三数据列c2和第六数据列c5被标注或记录为损坏数据列。
42.之后,控制单元20使用周期参数来存储具有最高错误率的预定周期t的值,以及使用损坏参数来存储在具有最高错误率的预定周期t时,损坏数据列的错误率大于等于预定错误率的位置(如步骤s108所示)。在本发明实施例中,周期参数所存储预定周期t为8,而损坏参数所存储损坏数据列的位置为第三数据列c2和第六数据列c5,其中周期参数及损坏参数可以存储在数据存储媒体10中或数据存储装置中。此外,还可以根据周期参数及损坏参数建立损坏数据列记录表(未绘示),其用以记录在预定周期t中损坏数据列的位置。
43.值得注意的是,由于设定的预定周期范围为2至256,这代表最大的预定周期t为256个数据列,因此,只需要花费1byte的内存容量来记录此预定周期t的值。此外,倘若每一个数据列用1个比特(bit)来记录,则256个数据列就需要256个比特来记录,因此,当预定周
期范围的上限值为256时,只需要花费32(256/8)bytes的内存容量来记录损坏数据列的位置。换言之,数据存储装置总共只需要花费33bytes的内存容量,便可记录数据存储媒体10中周期性损坏数据列的位置。相较于旧有方式需要花费数千个bytes的内存容量来记录所有损坏数据列的位置,本发明实施例数据存储媒体的周期性损坏数据列的侦测方法,只需要花费数十个bytes的内存容量来记录所有损坏数据列的位置,借此大幅度降低存储或记录损坏数据列的位置所需花费的内存空间。
44.请参阅图5,图5为依照本发明实施例的数据的写入方法的流程示意图。更进一步来说,控制单元20只要借由读取周期参数及损坏参数(如步骤s201所示),便可依据周期参数所存储预定周期t的数值以及损坏参数所存储损坏数据列的位置,而取得数据存储媒体10中损坏数据列的位置。然后,控制单元20在将数据写入至数据存储媒体10的数据列11的过程中(如步骤s202所示),一旦遇到损坏数据列的位置便跳过或越过(bypass)此损坏数据列,而不会将数据写入至此损坏数据列中。借此,避免将数据写入至数据存储媒体的损坏数据列中。同样的,在读取数据时,控制单元20也可借由读取周期参数及损坏参数,来取得数据存储媒体10中损坏数据列的位置,以便在读取数据存储媒体10的数据列11的过程中,一旦遇到损坏数据列的位置便跳过或越过,而不会读取此损坏数据列。借此,准确地读取存储在数据存储媒体中的数据。
45.综上所述,本发明实施例所提供数据的写入方法及其数据存储装置,借由读取周期参数及损坏参数,以取得损坏数据列的位置,同时将数据准确地写入至数据存储媒体的数据列中,其中周期参数存储具有最高错误率的预定周期,损坏参数存储在预定周期中错误率大于等于预定错误率的至少一损坏数据列的位置。借此,在写入数据的过程中,可以主动跳过损坏数据列,以避免将数据写入至数据存储媒体的损坏数据列中,同时达到大幅降低存储或记录损坏数据列位置所需花费的内存容量的目的。
46.以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的方法及技术内容作出些许的更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献