CN115357523A - 一种随机化方法及数据读写方法 - Google Patents
一种随机化方法及数据读写方法 Download PDFInfo
- Publication number
- CN115357523A CN115357523A CN202210800195.2A CN202210800195A CN115357523A CN 115357523 A CN115357523 A CN 115357523A CN 202210800195 A CN202210800195 A CN 202210800195A CN 115357523 A CN115357523 A CN 115357523A
- Authority
- CN
- China
- Prior art keywords
- data
- write
- random
- erase count
- digit
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000004590 computer program Methods 0.000 claims description 4
- 238000013403 standard screening design Methods 0.000 description 9
- 238000013507 mapping Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种随机化方法及数据读写方法,包括:基于目标写入扇区的物理地址以及写入数据的当前块的写入/擦除计数,生成基值数据;提供随机数据表,基于所述基值数据从所述随机数据表中查找随机数;基于查找到的随机数执行逻辑运算,以根据逻辑运算的结果生成随机种子。本发明实施例基于物理地址以及写入/擦除计数来生成基值数据,由此产生的随机数的随机性更好,从而提高了flash数据的可靠性,随机数的生成不仅仅依靠物理地址,扰码器可以实现更好的闪存数据随机性。
Description
技术领域
本发明涉及存储技术领域,尤其涉及一种随机化方法及数据读写方法。
背景技术
SSD存储的Flash数据需要随机化,如果Flash数据不够随机,就会相互干扰。
通常,数据在写入闪存之前由加扰器随机化,加扰器生成随机数据的能力由它的决定和种子控制。种子是扰码器生成随机数序列的起点。
现在的存储方案中,经常使用Nand Flash作为存储器件。多比特存储单元(Mult1-Level CelI,MLC)中一个单元(Cell)中存放2比特(bit),相比于单比特存储单元(SingleLevel,SLC)中一个Cell中只存I比特(bit),增多了电平阈值,增大了出现比特(bit)翻转的几率。由于Nand Flash可靠性较低,所以在使用时需要保证其可靠性,保证不会写入全零或全一的数据,保证相邻数据尽量不相同。
利用传统的方法生成的随机种子如果将相同的数据写入附近扇区,则种子几乎相同,加扰后的数据没有足够的随机性。
发明内容
本发明实施例提供一种随机化方法及数据读写方法,用以使得flash数据的随机性更好,提高flash数据的可靠性,随机数的生成不仅仅依靠物理地址,从而扰码器可以实现更好的闪存数据随机性。
本发明实施例提供一种随机化方法,包括:
基于目标写入扇区的物理地址以及写入数据的当前块的写入/擦除计数,生成基值数据;
提供随机数据表,基于所述基值数据从所述随机数据表中查找随机数;
基于查找到的随机数执行逻辑运算,以根据逻辑运算的结果生成随机种子。
可选的,所述目标写入扇区的物理地址包括:lun、块、页、平面和扇区号;
基于目标写入扇区的物理地址以及写入数据的当前块的写入/擦除计数,生成基值数据包括:
基于目标写入扇区的物理地址,以及,当前块的写入/擦除计数的指定位数的值,生成目标位数的基值数据。
可选的,所述随机数据表包含指定数量的随机数;
基于所述基值数据从所述随机数据表中查找随机数包括:
将生成的目标位数的基值数据拆分为多个位数相同的子值数据;
将子值数据作为索引,基于所述随机数据表,查询随机数;
将查询获得的随机数,按照拆分顺序的逆序组成所需的目标位数的随机数。
可选的,基于查找到的随机数执行逻辑运算,以根据逻辑运算的结果生成随机种子包括:
将查找到的目标位数的随机数与其第一位数的移位副本进行异或运算;
将与其第一位数的移位副本异或运算的结果,再,与其第二位数的移位副本进行异或运算;
将与其第二位数的移位副本异或运算的结果,再,与其第三位数的移位副本进行异或运算,其中,第一位数、第二位数以及第三位数均不相同。
可选的,执行逻辑运算之后还包括:
将逻辑运算的结果作为基值数据,重复查找随机数,以生成随机种子。
可选的,
所述当前块的写入/擦除计数作为元数据存储在存储器中,且,元数据以SLC模式编写;
对于存储有写入/擦除计数的区域,直接基于对应写入扇区的物理地址确定基值数据,以生成该区域的随机种子;
在存储器重启的情况下,执行检索,以获得相应区域的写入/擦除计数。
可选的,在当前块丢失写入/擦除计数的元数据的情况下,通过如下方式恢复写入/擦除计数:
基于当前块的错误擦写次数X,为当前块的写入/擦除计数赋值Y;
基于Y+1生成随机种子,利用生成的随机种子读取数据;
若数据读取错误,则重复Y+1生成随机种子,直至数据读取正确,以确定当前块丢失写入/擦除计数值。
本申请还提出一种数据读写方法,包括:
在数据写入的情况下,利用前述的随机化方法生成的随机种子写入扰码器的硬件寄存器,扰码器的硬件寄存器利用生成的随机种子加扰数据并传递给闪存控制器,并将其发送到闪存;
在数据读取的情况下,利用前述的随机化方法生成的随机种子写入扰码器的硬件寄存器,从闪存读取数据,扰码器的硬件寄存器利用生成的随机种子对读取的数据进行解扰。
本申请还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现前述的方法的步骤。
本发明实施例基于物理地址以及写入/擦除计数来生成基值数据,由此产生的随机数的随机性更好,从而提高了flash数据的可靠性,随机数的生成不仅仅依靠物理地址,扰码器可以实现更好的闪存数据随机性。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本申请实施例随机化方法的基本流程图;
图2为利用本申请实施例生成的随机种子进行数据写的流程示例;
图3为利用本申请实施例生成的随机种子进行数据读的流程示例。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明实施例提供一种随机化方法,如图1所示,包括:
在步骤S101中,基于目标写入扇区的物理地址以及写入数据的当前块的写入/擦除计数,生成基值数据。具体的,SSD的寿命局限于它的读写次数。对相同的存储单元不断地进行编写和擦除将更容易导致该存储单元受到永久性的损害。为了避免该情况的发生,有一种叫“Wear-Leveling”的特殊的算法被配置到SSD中,为了将擦除/写入循环平均地分配到SSD的所有存储单元中。这样就避免了对同一个存储单元持续不断地进行擦除/写入操作,从而有效地延长了SSD的寿命。保证SSD的磨损平衡,通常使用闪存转换层(FTL)提供对逻辑地址到物理地址映射的管理,同时对闪存和无效块映射进行擦除计数管理。每个块的擦除次数都会被记录在一个叫做擦除计数表(ECT)的表格中。当块进行一次擦除时,ECT都会将该块的擦除次数自动加一。本示例中,基于目标写入扇区的物理地址以及写入数据的当前块的写入/擦除计数,生成基值数据,具体的可以生成一个固定位(bit)的值来作为基值数据,例如32bits的基值数据。
在步骤S102中,提供随机数据表,基于所述基值数据从所述随机数据表中查找随机数。具体的随机数据表可以包括多个随机数,例如256个。由此可以基于前述的32bits的基值数据在随机数据表中查找随机数。
在步骤S103中,基于查找到的随机数执行逻辑运算,以根据逻辑运算的结果生成随机种子。本示例中进一步对查找到的随机数,进行逻辑运算,由此根据逻辑运算的结果生成随机种子。
本发明实施例基于物理地址以及写入/擦除计数来生成基值数据,由此产生随机性更好的随机数,从而提高了flash数据的可靠性,随机数的生成不仅仅依靠物理地址,扰码器可以实现更好的闪存数据随机性。
在一些实施例中,所述目标写入扇区的物理地址包括:lun、块、页、平面和扇区号。
基于目标写入扇区的物理地址以及写入数据的当前块的写入/擦除计数,生成基值数据包括:
基于目标写入扇区的物理地址,以及,当前块的写入/擦除计数的指定位数的值,生成目标位数的基值数据。本示例中还是以生成32bits的基值数据为例,可以基于写入数据的当前块的写入/擦除计数,例如只使用写入/擦除计数的低6位,也可以是其他位。即mod(写/擦除计数,64)。
在一些实施例中,所述随机数据表包含指定数量的随机数;
基于所述基值数据从所述随机数据表中查找随机数包括:
将生成的目标位数的基值数据拆分为多个位数相同的子值数据。
将子值数据作为索引,基于所述随机数据表,查询随机数。例如可以将32bits的基值数据分成4个8位的数字作为随机数表的索引,查找随机数,具体的拆分方式也可以根据实际需要确定。
将查询获得的随机数,按照拆分顺序的逆序组成所需的目标位数的随机数。以4个8位的数字为例,可以将查询的4个8位数字按相反的顺序放回一个32bits数据。
在一些实施例中,基于查找到的随机数执行逻辑运算,以根据逻辑运算的结果生成随机种子包括:
将查找到的目标位数的随机数与其第一位数的移位副本进行异或运算。
将与其第一位数的移位副本异或运算的结果,再,与其第二位数的移位副本进行异或运算。
将与其第二位数的移位副本异或运算的结果,再,与其第三位数的移位副本进行异或运算,其中,第一位数、第二位数以及第三位数均不相同。
本示例中进一步介绍亦或移位运算,例如可以基于前述查询获得的32bits数据,与其13位移位副本进行异或。然后与其17位移位副本进行异或。接着再次对其5位移位副本进行异或,返回结果,结果也为32bits的数据。
在一些实施例中,执行逻辑运算之后还包括:
将逻辑运算的结果作为基值数据,重复查找随机数,以生成随机种子。
具体的可以基于亦或移位的结果值,多次重复前述查询随机数据表以及亦或移位运算,并将多次运算的结果作为随机种子,由此可以进一步增加获得的随机种子的随机性。
在一些实施例中,所述当前块的写入/擦除计数作为元数据存储在存储器中,且,元数据以SLC模式编写。本示例中元数据以SLC模式编写。与其他以TLC模式写入的SSD相比,SLC模式不容易受到数据随机性的影响。与其他数据相比,元数据是相当随机的。
在一些具体示例中,将写入/擦除计数作为元数据存储在SSD上,上电时,不知道元数据的写入/擦除计数。本示例中对于存储有写入/擦除计数的区域,直接基于对应写入扇区的物理地址确定基值数据,以生成该区域的随机种子。从而为存储有元数据的区域生成的随机种子不包含写入/擦除计数,由此可以在存储器重启的情况下,执行检索,来获得相应区域的写入/擦除计数,从而实现在不知道写入/擦除计数的情况下,读出写入/擦除计数。
在一些场景中,如果丢失了存储写入/擦除计数的元数据,那么加扰器种子将是错误的,并且在数据读取期间解扰将不会返回正确的数据。由于数据受到数据校正码的保护,所以可以确定回读的数据正确与否。也即在一些实施例中,在当前块丢失写入/擦除计数的元数据的情况下,通过如下方式恢复写入/擦除计数:
基于当前块的错误擦写次数X,为当前块的写入/擦除计数赋值Y。本示例中,可以将当前块的错误擦写次数X确定为当前块的写入/擦除计数值Y。
基于Y+1生成随机种子,利用生成的随机种子读取数据。由于存储的写入/擦除计数只能从0到63,本示例中使用从写入/擦除计数0到63生成的不同加扰器种子读取重试,若Y+1=64则将Y置为0。
若数据读取错误,则重复Y+1生成随机种子,直至数据读取正确,以确定当前块丢失写入/擦除计数值。
针对SSD的特性,本公开的种子生成方法保证了即使物理地址或写入/擦除计数的微小变化也会导致非常不同的种子,由此极大提高了随机性。解决了加扰器在时间维度上重复的问题。
通过对元数据的存储方式采取优化(SLC模式)提高元数据的可靠性。同时对元数据的加扰方式中不使用擦写计数信息,保证元数据可以在上电是正常读出。针对元数据丢失的特殊情况,本公开还提出了恢复数据的方法,提高了存储***的可靠性和容错性。
本申请还提出一种数据读写方法,包括:
在数据写入的情况下,如图2所述,利用前述的随机化方法生成的随机种子写入扰码器的硬件寄存器,扰码器的硬件寄存器利用生成的随机种子加扰数据并传递给闪存控制器,并将其发送到闪存;
在数据读取的情况下,如图3所述,利用前述的随机化方法生成的随机种子写入扰码器的硬件寄存器,从闪存读取数据,扰码器的硬件寄存器利用生成的随机种子对读取的数据进行解扰。
本申请还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现前述的方法的步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
Claims (9)
1.一种随机化方法,其特征在于,包括:
基于目标写入扇区的物理地址以及写入数据的当前块的写入/擦除计数,生成基值数据;
提供随机数据表,基于所述基值数据从所述随机数据表中查找随机数;
基于查找到的随机数执行逻辑运算,以根据逻辑运算的结果生成随机种子。
2.如权利要求1所述的随机化方法,其特征在于,所述目标写入扇区的物理地址包括:lun、块、页、平面和扇区号;
基于目标写入扇区的物理地址以及写入数据的当前块的写入/擦除计数,生成基值数据包括:
基于目标写入扇区的物理地址,以及,当前块的写入/擦除计数的指定位数的值,生成目标位数的基值数据。
3.如权利要求2所述的随机化方法,其特征在于,所述随机数据表包含指定数量的随机数;
基于所述基值数据从所述随机数据表中查找随机数包括:
将生成的目标位数的基值数据拆分为多个位数相同的子值数据;
将子值数据作为索引,基于所述随机数据表,查询随机数;
将查询获得的随机数,按照拆分顺序的逆序组成所需的目标位数的随机数。
4.如权利要求3所述的随机化方法,其特征在于,基于查找到的随机数执行逻辑运算,以根据逻辑运算的结果生成随机种子包括:
将查找到的目标位数的随机数与其第一位数的移位副本进行异或运算;
将与其第一位数的移位副本异或运算的结果,再,与其第二位数的移位副本进行异或运算;
将与其第二位数的移位副本异或运算的结果,再,与其第三位数的移位副本进行异或运算,其中,第一位数、第二位数以及第三位数均不相同。
5.如权利要求4所述的随机化方法,其特征在于,执行逻辑运算之后还包括:
将逻辑运算的结果作为基值数据,重复查找随机数,以生成随机种子。
6.如权利要求1所述的随机化方法,其特征在于,所述当前块的写入/擦除计数作为元数据存储在存储器中,且,元数据以SLC模式编写;
对于存储有写入/擦除计数的区域,直接基于对应写入扇区的物理地址确定基值数据,以生成该区域的随机种子;
在存储器重启的情况下,执行检索,以获得相应区域的写入/擦除计数。
7.如权利要求6所述的随机化方法,其特征在于,在当前块丢失写入/擦除计数的元数据的情况下,通过如下方式恢复写入/擦除计数:
基于当前块的错误擦写次数X,为当前块的写入/擦除计数赋值Y;
基于Y+1生成随机种子,利用生成的随机种子读取数据;
若数据读取错误,则重复Y+1生成随机种子,直至数据读取正确,以确定当前块丢失写入/擦除计数值。
8.一种数据读写方法,其特征在于,包括:
在数据写入的情况下,利用如权利要求1-7任一项所述的随机化方法生成的随机种子写入扰码器的硬件寄存器,扰码器的硬件寄存器利用生成的随机种子加扰数据并传递给闪存控制器,并将其发送到闪存;
在数据读取的情况下,利用如权利要求1-7任一项所述的随机化方法生成的随机种子写入扰码器的硬件寄存器,从闪存读取数据,扰码器的硬件寄存器利用生成的随机种子对读取的数据进行解扰。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210800195.2A CN115357523A (zh) | 2022-07-08 | 2022-07-08 | 一种随机化方法及数据读写方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210800195.2A CN115357523A (zh) | 2022-07-08 | 2022-07-08 | 一种随机化方法及数据读写方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115357523A true CN115357523A (zh) | 2022-11-18 |
Family
ID=84032613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210800195.2A Pending CN115357523A (zh) | 2022-07-08 | 2022-07-08 | 一种随机化方法及数据读写方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115357523A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102208210A (zh) * | 2010-03-31 | 2011-10-05 | 深圳市朗科科技股份有限公司 | 闪存设备及其数据存储方法 |
CN102543182A (zh) * | 2010-12-14 | 2012-07-04 | 炬力集成电路设计有限公司 | 随机化电路、存储器控制单元、存储器、通信***及方法 |
CN103403670A (zh) * | 2011-06-03 | 2013-11-20 | 株式会社东芝 | 用于伪随机数生成的半导体存储器件 |
CN109542394A (zh) * | 2017-09-22 | 2019-03-29 | 爱思开海力士有限公司 | 控制器、半导体存储器装置及具有它们的存储器*** |
-
2022
- 2022-07-08 CN CN202210800195.2A patent/CN115357523A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102208210A (zh) * | 2010-03-31 | 2011-10-05 | 深圳市朗科科技股份有限公司 | 闪存设备及其数据存储方法 |
CN102543182A (zh) * | 2010-12-14 | 2012-07-04 | 炬力集成电路设计有限公司 | 随机化电路、存储器控制单元、存储器、通信***及方法 |
CN103403670A (zh) * | 2011-06-03 | 2013-11-20 | 株式会社东芝 | 用于伪随机数生成的半导体存储器件 |
CN109542394A (zh) * | 2017-09-22 | 2019-03-29 | 爱思开海力士有限公司 | 控制器、半导体存储器装置及具有它们的存储器*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100526190B1 (ko) | 플래시 메모리의 재사상 방법 | |
KR101482242B1 (ko) | 플래쉬 메모리에 액세스하는 방법 및 연관된 플래쉬 메모리 제어기 | |
US8397101B2 (en) | Ensuring a most recent version of data is recovered from a memory | |
US10218503B2 (en) | Encryption key storage and modification in a data storage device | |
US20180321874A1 (en) | Flash management optimization for data update with small block sizes for write amplification mitigation and fault tolerance enhancement | |
JP6112595B2 (ja) | メモリシステムにおける消去管理 | |
US7702844B2 (en) | Address mapping method and mapping information managing method for flash memory, and flash memory using the same | |
KR101587464B1 (ko) | 온-칩 카피 동작과 호환되는 데이터 스크램블링을 제공하는 시스템, 방법 및 메모리 장치 | |
US8370561B2 (en) | Randomizing for suppressing errors in a flash memory | |
CN104572489B (zh) | 磨损均衡方法及装置 | |
KR101517185B1 (ko) | 메모리 시스템 및 그것의 동작 방법 | |
CN112596667B (zh) | 在固态驱动器中组织nand块并放置数据以便于随机写入的高吞吐量的方法和*** | |
US20120278529A1 (en) | Selective Purge of Confidential Data From a Non-Volatile Memory | |
US10489246B2 (en) | Data storage device and data maintenance method thereof | |
US20170090764A1 (en) | Data randomization using memory block access counts | |
KR20080085574A (ko) | 비휘발성 메모리의 가비지 컬렉션을 위한 장치 및 방법 | |
US20110016263A1 (en) | Method for performing data pattern management regarding data accessed by a controller of a flash memory, and associated memory device and controller thereof | |
US20100064094A1 (en) | Memory managing method for non-volatile memory and controller using the same | |
JP6994136B1 (ja) | メモリにおける単調カウンタ | |
TW201131572A (en) | Solid state storage system for controlling reserved area and method of controlling the same | |
JP2010079486A (ja) | 半導体記録装置 | |
CN111913890A (zh) | 一种基于安全模组的非易失存储器随机化读写方法 | |
US8996786B2 (en) | Nonvolatile memory system and block management method | |
CN115357523A (zh) | 一种随机化方法及数据读写方法 | |
TWI661300B (zh) | 記憶體的資料管理方法及記憶體裝置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |