CN117806569B - 一种存储设备以及数据处理方法 - Google Patents
一种存储设备以及数据处理方法 Download PDFInfo
- Publication number
- CN117806569B CN117806569B CN202410224726.7A CN202410224726A CN117806569B CN 117806569 B CN117806569 B CN 117806569B CN 202410224726 A CN202410224726 A CN 202410224726A CN 117806569 B CN117806569 B CN 117806569B
- Authority
- CN
- China
- Prior art keywords
- data
- stored
- host
- generate
- 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.)
- Active
Links
- 238000003860 storage Methods 0.000 title claims abstract description 150
- 238000003672 processing method Methods 0.000 title claims abstract description 16
- 230000015654 memory Effects 0.000 claims abstract description 92
- 238000012795 verification Methods 0.000 claims abstract description 90
- 238000012545 processing Methods 0.000 claims abstract description 46
- 238000004458 analytical method Methods 0.000 claims abstract description 6
- 238000012937 correction Methods 0.000 claims description 30
- 230000009471 action Effects 0.000 claims description 17
- 238000004891 communication Methods 0.000 claims description 17
- 230000007306 turnover Effects 0.000 claims description 14
- 238000000034 method Methods 0.000 claims description 12
- 238000013507 mapping Methods 0.000 claims description 6
- 239000010410 layer Substances 0.000 description 9
- 230000008569 process Effects 0.000 description 7
- 238000011161 development Methods 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明提供了一种存储设备,包括:主控器,用以接收主机端的数据写入命令和待存储数据,根据数据写入命令确定待存储数据的第一主机逻辑地址以及第一存储物理地址;其中,主控器还用以对第一主机逻辑地址、第一存储物理地址以及待存储数据进行异或处理,生成写入验证数据,对写入验证数据、闪存块中的元数据进行整合处理,生成已存储数据;对数据读取命令进行地址解析处理,生成第二主机逻辑地址和第二存储物理地址,并对已存储数据依次进行数据读取处理以及异或处理,生成读取验证数据;对写入验证数据与读取验证数据进行比较。通过本发明提供的一种存储设备以及数据处理方法,能够提升主机端读写数据不一致时的错误定位效率。
Description
技术领域
本发明涉及电子存储技术领域,特别是涉及一种存储设备以及数据处理方法。
背景技术
主机端与存储设备进行数据通信时,可能会因通信信道干扰或存储设备内部数据出错导致主机端收到的数据是错误数据,即主机端出现读写数据不一致现象。当主机端出现数据读写不一致情况时,通常的定位方法是获取出错逻辑地址,比较数据差异,然后根据厂商的调试工具进行下一步定位。
然而,由于现有的存储设备引起主机端数据读写不一致情况的原因有很多,需要花费大量的时间才能确定具体出错原因,影响了存储设备的开发进度,延长了存储设备的落地周期。因此,存在待改进之处。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种存储设备以及数据处理方法,改善了主机端数据读写不一致时的对于具体出错原因定位效率较低的问题。
为解决上述技术问题,本发明是通过以下技术方案实现的:
本发明提供一种存储设备,包括:
主控器,通信连接于主机端,用以接收所述主机端的数据写入命令和待存储数据,根据所述数据写入命令确定所述待存储数据的第一主机逻辑地址,并根据所述第一主机逻辑地址确定第一存储物理地址;
内存缓冲区,通信连接于所述主控器,用以临时存储数据;
闪存块,分别通信连接于所述主控器和所述内存缓冲区;
其中,所述主控器还用以对所述第一主机逻辑地址、所述第一存储物理地址以及所述待存储数据进行异或处理,生成写入验证数据;
所述主控器用以对所述写入验证数据、所述闪存块中的元数据进行整合处理,生成扩展数据,并将所述扩展数据与所述待存储数据合并写入所述闪存块中,生成已存储数据;
所述主控器用以接收所述主机端的数据读取命令,并对所述数据读取命令进行地址解析处理,生成第二主机逻辑地址和第二存储物理地址;
所述主控器用以根据所述第二存储物理地址对所述已存储数据进行数据读取处理,生成临时缓冲数据;
所述主控器用以对所述第二主机逻辑地址、所述第二存储物理地址以及所述临时缓冲数据进行异或处理,生成读取验证数据;以及
所述主控器用以对所述写入验证数据与所述读取验证数据进行比较,以生成比较结果。
在本发明一实施例中,所述主控器确定获取到所述第一主机逻辑地址、所述第一存储物理地址以及所述待存储数据,执行的动作为:获取所述写入验证数据C,C=lba^pba^(head 4bytes | tail 4bytes ),其中,lba表示为所述第一主机逻辑地址,pba表示为所述第一存储物理地址,所述head 4bytes表示为所述待存储数据首部字节数据,所述tail4bytes表示为所述待存储数据尾部字节数据,^表示为异或运算符号,|表示为或运算符号。
在本发明一实施例中,所述主控器确定所述写入验证数据与所述读取验证数据不相等时,执行的动作为:判断所述闪存块是否出现纠错信息;
若所述闪存块出现所述纠错信息,则所述闪存块出现错误;
若所述闪存块不出现所述纠错信息,则所述内存缓冲区出现错误。
在本发明一实施例中,所述主控器确定所述写入验证数据与所述读取验证数据相等时,执行的动作为:将所述已存储数据上传至所述主机端。
在本发明一实施例中,所述主机端确定接收到所述已存储数据时,执行的动作为:判断所述已存储数据与所述待存储数据是否相同;
若所述已存储数据与所述待存储数据相同,则所述存储设备处于正常工作状态;
若所述已存储数据与所述待存储数据不相同,则所述主机端执行的动作为判断所述已存储数据与所述待存储数据之间的数据翻转量是否大于或等于预设阈值,以确定所述存储设备的软件错误类型。
本发明还提供一种存储设备的数据处理方法,包括:
主控器获取主机端的数据写入命令和待存储数据;
根据所述数据写入命令确定所述待存储数据的第一主机逻辑地址,并根据所述第一主机逻辑地址确定第一存储物理地址;
对所述第一主机逻辑地址、所述第一存储物理地址以及所述待存储数据进行异或处理,生成写入验证数据;
对所述写入验证数据、闪存块中的元数据进行整合处理,生成扩展数据,并将所述扩展数据与所述待存储数据合并写入所述闪存块中,生成已存储数据;
所述主控器获取所述主机端的数据读取命令,并对所述数据读取命令进行地址解析处理,生成第二主机逻辑地址和第二存储物理地址;
根据所述第二存储物理地址对所述已存储数据进行数据读取处理,生成临时缓冲数据;
对所述第二主机逻辑地址、所述第二存储物理地址以及所述临时缓冲数据进行异或处理,生成读取验证数据;以及
对所述写入验证数据与所述读取验证数据进行比较,以生成比较结果。
在本发明一实施例中,所述对所述第一主机逻辑地址、所述第一存储物理地址以及所述待存储数据进行异或处理,生成写入验证数据的步骤包括:
对所述第一主机逻辑地址和所述第一存储物理地址进行异或处理,生成第一运算结果;
对所述待存储数据的首部字节数据和尾部字节数据进行或处理,生成第二运算结果;以及
对所述第一运算结果和所述第二运算结果进行异或处理,生成所述写入验证数据;
其中,当所述待存储数据的数据长度小于或等于预设长度时,所述尾部字节数据为所述待存储数据的末尾预设数量的字节数据;当所述待存储数据的数据长度大于预设长度时,所述尾部字节数据为所述待存储数据从末尾除去所述尾部字节数据数量的区间数据。
在本发明一实施例中,所述对所述写入验证数据与所述读取验证数据进行比较,以生成比较结果的步骤包括:
比较所述写入验证数据和所述读取验证数据是否相等;
若所述写入验证数据与所述读取验证数据不相等,则所述主控器判断所述闪存块是否出现纠错信息,以确定所述存储设备的硬件错误类型;
若所述写入验证数据与所述读取验证数据相等,则所述主控器将所述已存储数据上传至主机端,所述主机端判断所述已存储数据与所述待存储数据是否相同;
若所述已存储数据与所述待存储数据相同,则所述存储设备处于正常工作状态;
若所述已存储数据与所述待存储数据不相同,则所述主机端判断所述已存储数据与所述待存储数据之间的数据翻转量是否大于或等于预设阈值,以确定所述存储设备的软件错误类型。
在本发明一实施例中,所述判断所述闪存块是否出现纠错信息,以判断所述存储设备的硬件错误类型的步骤包括:
判断所述闪存块是否出现纠错信息;
若所述闪存块出现所述纠错信息,则所述闪存块出现错误;
若所述闪存块不出现所述纠错信息,则内存缓冲区出现错误。
在本发明一实施例中,所述判断所述已存储数据与所述待存储数据之间的数据翻转量是否大于或等于预设阈值,以确定所述存储设备的软件错误类型的步骤包括:
判断所述已存储数据与所述待存储数据之间的数据翻转量是否大于或等于所述预设阈值;
若所述数据翻转量大于或等于所述预设阈值,则确定所述存储设备内的映射关系出现错误;
若所述数据翻转量小于所述预设阈值,则确定所述存储设备与所述主机端的通信通道出现错误。
如上所述,本发明提供一种存储设备以及数据处理方法,能够对主机端数据读写不一致的出错原因进行快速定位,提升其错误定位效率,提高存储设备的开发进度,进而缩短存储设备的落地周期。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1显示为本发明的一种存储设备的示意图;
图2显示为图1中的扩展数据的局部时序示意图;
图3显示为本发明的一种存储设备的数据处理方法的流程示意图;
图4显示为图3中步骤S30的流程示意图;
图5显示为图3中步骤S80的流程示意图;
图6显示为图5中步骤S82的流程示意图;
图7显示为图5中步骤S85的流程示意图。
元件标号说明:
100、存储设备;110、主控器;120、内存缓冲区;130、闪存块;140、扩展数据表;
200、主机端。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参阅图1,本发明提供了一种存储设备,其可用于当主机端出现数据读取不一致时,对自身进行数据处理,以实现对错误类型的快速判断,从而提升存储设备的开发进度,缩短其落地周期。存储设备100可以包括但不限于主控器110、内存缓冲区120以及闪存块130。其中,存储设备100可以为固态驱动器(Solid State Drive,SSD),也可以为内嵌式存储器(embedded MultiMediaCard,eMMC),还可以为闪存存储器(Universal FlashStorage,UFS)。然不限于此,存储设备100还可以为其他存储器。主控器110可以通信连接于主机端200,用以接收主机端200的数据写入命令和待存储数据,根据数据写入命令确定待存储数据的第一主机逻辑地址,并根据第一主机逻辑地址确定第一存储物理地址。具体的,主控器110可以通过接口协议(SATA、PCIe、NVMe等)与主机端200建立通信连接,以便于接收来自主机端200的命令和数据。主控器110可以根据数据写入命令解析出待存储数据的第一主机逻辑地址,第一主机逻辑地址是由主机端200管理的,表示数据应当被写入的逻辑位置。随后主控器110还可以通过闪存转换层(FTL,Flash Translation Layer)根据第一主机逻辑地址申请一个全新的第一存储物理地址,以确定第一存储物理地址,并将即将写入的待存储数据与此第一存储物理地址关联。物理地址指的是待存储数据在存储设备100中的实际物理位置,例如待存储数据在闪存块130中具体位置上。
请参阅图1,内存缓冲区120可以通信连接于主控器110,用于临时存储数据。其中,内存缓冲区120可以为临时存储区(Buffer),然不限于此,也可以为其他缓冲区域。其中,内存缓冲区120是存储设备100中临时存储数据的区域,它的作用是平衡存储设备100和主机端200数据处理过程中的速度差,以避免因为生产数据的速度和消费数据的速度不匹配而导致的数据丢失或处理延迟。例如,在数据传输中,内存缓冲区120可以用于暂存从存储设备100传输到主机端200的数据。如果数据写入的速度快于数据读取的速度,内存缓冲区120就能起到暂存数据的作用,等待后续处理。反之,如果数据写入速度慢于读取速度,内存缓冲区120允许主机端200在有限的时间窗口内仍然可以读取数据。具体的,内存缓冲区120可用于临时存储从闪存块130中读取或准备写入闪存块130中的数据。内存缓冲区120可以快速响应主机的请求,并且可以减少对闪存块130的直接写操作,从而增加闪存块130的使用寿命。
请参阅图1,闪存块130可以为闪存存储器(NAND Flash),且闪存块130可以分别通信连接于主控器110和内存缓冲区120,用以对待存储数据进行永久存储。其中,当闪存块130为NAND Flash时,NAND Flash是一种非易失性存储技术,它不需要电力来维持存储的数据。NAND Flash通过这种结构安排存储单元,使得数据可以以页为单位快速写入,并且可以在较大的块(通常为几十或几百页)中被擦除。每个单元可以存储1个单层单元(SLC)、2个多层单元(MLC)或更多三层单元(TLC)以及四层单元(QLC)位的信息。
请参阅图1,主控器110还可以用以对第一主机逻辑地址、第一存储物理地址以及待存储数据进行异或处理,生成写入验证数据。当主控器110确定获取到第一主机逻辑地址、第一存储物理地址以及待存储数据,主控器110执行的动作为获取写入验证数据C(Write checksum),C=lba^pba^(head 4bytes | tail 4bytes )。其中,lba可以表示为第一主机逻辑地址,pba可以表示为第一存储物理地址,head 4bytes可以表示为待存储数据首部字节数据,tail 4bytes可以表示为待存储数据尾部字节数据,^表示为异或运算符号,|表示为或运算符号。此外,对于tail 4bytes,当待存储数据的数据长度小于或等于预设长度时,tail 4bytes可以为待存储数据的末尾预设数量的字节数据。当待存储数据的数据长度大于预设长度时,tail 4bytes可以为待存储数据从末尾除去尾部字节数据数量的区间数据。例如,head 4bytes可以表示为待存储数据首部4字节数据,tail 4bytes可以表示为待存储数据尾部4字节数据,且待存储数据的预设长度可以设置32千字节(Kilobyte,Kb)。即,当待存储数据的数据长度小于或等于32Kb时,tail 4bytes为待存储数据的末尾的4字节数据,当待存储数据的数据长度大于32Kb时,tail 4bytes为待存储数据从末尾除去尾部4字节数据数量后的区间数据。
请参阅图1和图2,主控器110还可以用以对写入验证数据、闪存块130中的元数据进行整合处理,生成扩展数据,并将扩展数据与待存储数据合并写入闪存块130中,生成已存储数据。其中,元数据(Meta data)可以位于闪存块130中的(Out-of-Band,OOB)区域,且元数据可以包括但不限于逻辑地址数据、执行序号数据、最后更新时间戳、穿戴均衡数据、错误校正码(ECC)相关信息以及有效性或状态标志。具体的,根据逻辑地址数据可以明确存储哪些片区的数据已经写入到了哪些物理页。穿戴均衡数据可以用于跟踪各个块的擦写次数,以确保存储均匀地分布其穿戴,这有助于延长存储设备100的寿命。错误校正码(ECC)相关信息可以用于检测和校正数据页中可能出现的位错误。最后更新时间戳可以用于标志该页数据的最后写入时间。有效性或状态标志可以表明数据页是否有效或已被废弃。对写入验证数据、闪存块130中的元数据进行整合处理,生成扩展数据是指将写入验证数据整合至元数据中的末位数据中,以获得扩展数据。其中,扩展数据可以为数据表形式,且扩展数据表可以标号为140。例如,请参阅图2,扩展数据表140内可以包括但不限于元数据中逻辑地址数据(Lba)、执行序号数据(Serial no)、最后更新时间戳(Real time)以及写入验证数据(Write checksum)等。此外,扩展数据表140内的数据与待存储数据可以合并写入闪存块130的第一存储物理地址中,以获得已存储数据。
请参阅图1,主控器110还可用以接收数据读取命令,并对数据读取命令进行地址解析处理,生成第二主机逻辑地址和第二存储物理地址。其中,数据读取命令可以由主机端200发送至主控器110中,并由主控器110接收后对其进行处理。主控器110确定接收到数据读取命令后,其执行的动作为对数据读取命令进行解析处理,以确定需要读取的数据块的逻辑地址,即生成第二主机逻辑地址。随后主控器110还可以利用闪存转换层对第二主机逻辑地址进行转换处理,生成第二存储物理地址,即已存储数据的物理地址。
请参阅图1,主控器110还可用以根据第二存储物理地址对已存储数据进行数据读取处理,生成临时缓冲数据。其中,当主控器110确定了第二存储物理地址时,主控器110可以根据第二存储物理地址对闪存块130发送数据读取请求,以对闪存块130中存储的已存储数据进行数据读取处理。闪存块130确定接收到主控器110发送的数据读取请求后,其执行的动作为将存储在闪存块130中的已存储数据发送至内存缓冲区120中,以生成临时缓冲数据,随后再通过内存缓冲区120将临时缓冲数据上传至主控器110中。
请参阅图1,主控器110还用以对第二主机逻辑地址、第二存储物理地址以及临时缓冲数据进行异或处理,以生成读取验证数据。具体的,对第二主机逻辑地址、第二存储物理地址以及临时缓冲数据进行异或处理可以满足如下公式,D=lba2^pba2^(head 4bytes |tail 4bytes ),其中,lba2可以表示为第二主机逻辑地址,pba2可以表示为第二存储物理地址,head 4bytes可以表示为临时缓冲数据的首部字节数据,tail 4bytes可以表示为临时缓冲数据的尾部字节数据,^表示为异或运算符号,|表示为或运算符号。此外,对于tail4bytes,当临时缓冲数据的数据长度小于或等于预设长度时,tail 4bytes可以为临时缓冲数据的末尾预设数量的字节数据。当临时缓冲数据的数据长度大于预设长度时,tail4bytes可以为临时缓冲数据从末尾除去尾部字节数据数量的区间数据。例如,head 4bytes可以表示为临时缓冲数据首部4字节数据,tail 4bytes可以表示为临时缓冲数据尾部4字节数据,且临时缓冲数据的预设长度可以设置32千字节(Kilobyte,Kb)。即,当临时缓冲数据的数据长度小于或等于32Kb时,tail 4bytes为临时缓冲数据的末尾的4字节数据,当临时缓冲数据的数据长度大于32Kb时,tail 4bytes为临时缓冲数据从末尾除去尾部4字节数据数量后的区间数据。
请参阅图1,主控器110还用以对获取到的写入验证数据与读取验证数据进行比较,以生成比较结果,从而判断数据读取是否正确。其中,比较结果可以包括但不限于写入验证数据与读取验证数据相等或写入验证数据与读取验证数据不相等。当主控器110确定写入验证数据与读取验证数据不相等时,其执行的动作为判断闪存块130是否出现纠错信息。若闪存块130出现纠错信息,则判断闪存块130出现错误。若闪存块130不出现纠错信息,则判断内存缓冲区120出现错误。具体的,纠错信息可以为User-Level ECC(UECC)信息,根据UECC信息,可以自定义存储设备100的错误检测和纠正,以提高存储设备100的纠错能力。此外,当主控器110确定写入验证数据与读取验证数据相等时,其执行的动作可以为将已存储数据上传至主机端200中。即当主控器110确定写入验证数据与读取验证数据相等时,可以判断内存缓冲区120以及闪存块130的硬件状态正常,允许将读取的已存储数据上传至主机端200中,从而提升数据读取的准确性,避免因存储设备100内的硬件异常导致读取的数据发生错误。
请参阅图1,进一步地,当主机端200确定接收到已存储数据时,其执行的动作为判断已存储数据与待存储数据是否相同。若已存储数据与待存储数据相同,则判断存储设备100处于正常工作状态。若已存储数据与待存储数据不相同,则主机端200执行的动作为判断已存储数据与待存储数据之间的数据翻转量是否大于或等于预设阈值,以判断存储设备100的软件错误类型。其中,当已存储数据与待存储数据相同时,则说明存储设备100与主机端200的通信正常,即存储设备100也处于正常工作状态。当已存储数据与待存储数据不相同时,则主机端200需要继续判断已存储数据与待存储数据之间的数据翻转量是否大于或等于预设阈值。当已存储数据与待存储数据之间的数据翻转量大于或等于预设阈值时,则判断存储设备100内部的映射关系出现错误。当已存储数据与待存储数据之间的数据翻转量小于预设阈值时,则判断存储设备100与主机端200之间的通信通道出现错误,从而能够快速准确判断出数据读写不一致时的具体原因,进而提升存储设备100的开发进度,缩短落地周期。
请参阅图1,更进一步地,数据翻转量是指存储设备100中的数据位由于错误而从其原始状态(0或1)翻转到另一种状态的数量。预设阈值可以为256字节,也可以为1024字节,还可以为512字节。然不限于此,预设阈值还可以为其他字节数。例如,预设阈值可以为512字节,即当已存储数据与待存储数据之间的数据翻转量大于或等于512字节时,则判断存储设备100内部的映射关系出现错误。当已存储数据与待存储数据之间的数据翻转量小于512字节时,则判断存储设备100与主机端200之间的通信通道出现错误。
请参阅图3,本发明还提供了一种存储设备的数据处理方法,该数据处理方法可以应用于上述存储设备中,以提升存储设备的开发进度。该数据处理方法与上述实施例中存储设备一一对应,数据处理方法可以包括如下步骤:
步骤S10、主控器获取主机端的数据写入命令和待存储数据。
步骤S20、根据数据写入命令确定待存储数据的第一主机逻辑地址,并根据第一主机逻辑地址确定第一存储物理地址。
步骤S30、对第一主机逻辑地址、第一存储物理地址以及待存储数据进行异或处理,生成写入验证数据。
步骤S40、对写入验证数据、闪存块中的元数据进行整合处理,生成扩展数据,并将扩展数据与待存储数据合并写入闪存块中,生成已存储数据。
步骤S50、主控器获取主机端的数据读取命令,并对数据读取命令进行地址解析处理,生成第二主机逻辑地址和第二存储物理地址。
步骤S60、根据第二存储物理地址对已存储数据进行数据读取处理,生成临时缓冲数据。
步骤S70、对第二主机逻辑地址、对第二存储物理地址以及临时缓冲数据进行异或处理,生成读取验证数据。
步骤S80、对写入验证数据与读取验证数据进行比较,以生成比较结果。
请参阅图3,在本发明的一个实施例中,当执行步骤S10时,具体的,主控器110可以通过接口协议(SATA、PCIe、NVMe等)与主机端200建立通信连接,以便于接收来自主机端200的数据写入命令和待存储数据。
请参阅图3,在本发明的一个实施例中,当执行步骤S20时,具体的,主控器110可以根据数据写入命令确定待存储数据的第一主机逻辑地址,并根据第一主机逻辑地址确定第一存储物理地址。其中,主控器110可以根据数据写入命令解析出待存储数据的第一主机逻辑地址,第一主机逻辑地址是由主机端管理的,表示数据应当被写入的逻辑位置。随后主控器110还可以通过闪存转换层(FTL,Flash Translation Layer)根据第一主机逻辑地址申请一个全新的第一存储物理地址,以确定第一存储物理地址,并将即将写入的待存储数据与此第一存储物理地址关联。物理地址指的是待存储数据在存储设备100中的实际物理位置,例如待存储数据在闪存块130中的具体位置上。
请参阅图4,在本发明的一个实施例中,当执行步骤S30时,具体的,步骤S30可包括如下步骤:
步骤S31、对第一主机逻辑地址和第一存储物理地址进行异或处理,生成第一运算结果。
步骤S32、对待存储数据的首部字节数据和尾部字节数据进行或处理,生成第二运算结果。
步骤S33、对第一运算结果和第二运算结果进行异或处理,生成写入验证数据。
在本发明的一个实施例中,当执行步骤S31至步骤S33时,具体的,可以通过主控器110实现对第一主机逻辑地址、第一存储物理地址以及待存储数据进行异或处理,生成写入验证数据。当主控器110确定获取到第一主机逻辑地址、第一存储物理地址以及待存储数据,主控器110执行的动作为获取写入验证数据C,C=lba^pba^(head 4bytes | tail4bytes ),其中,lba可以表示为第一主机逻辑地址,pba可以表示为第一存储物理地址,head 4bytes可以表示为待存储数据首部字节数据,tail 4bytes可以表示为待存储数据尾部字节数据,^表示为异或运算符号,|表示为或运算符号。此外,对于tail 4bytes,当待存储数据的数据长度小于或等于预设长度时,tail 4bytes可以为待存储数据的末尾预设数量的字节数据。当待存储数据的数据长度大于预设长度时,tail 4bytes可以为待存储数据从末尾除去尾部字节数据数量的区间数据。例如,head 4bytes可以表示为待存储数据首部4字节数据,tail 4bytes可以表示为待存储数据尾部4字节数据,且待存储数据的预设长度可以设置32千字节(Kilobyte,Kb)。即,当待存储数据的数据长度小于或等于32Kb时,tail4bytes为待存储数据的末尾的4字节数据,当待存储数据的数据长度大于32Kb时,tail4bytes为待存储数据从末尾除去尾部4字节数据数量后的区间数据。
请参阅图1和图3,在本发明的一个实施例中,当执行步骤S40时,具体的,主控器110可以对写入验证数据、闪存块130中的元数据进行整合处理,生成扩展数据,并将扩展数据与待存储数据合并写入闪存块130中,生成已存储数据。其中,元数据可以位于闪存块130中的(Out-of-Band,OOB)区域,且元数据可以包括但不限于逻辑地址数据、执行序号数据、最后更新时间戳、穿戴均衡数据、错误校正码(ECC)相关信息以及有效性或状态标志。具体的,根据逻辑地址数据可以明确存储哪些片区的数据已经写入到了哪些物理页。穿戴均衡数据可以用于跟踪各个块的擦写次数,以确保存储均匀地分布其穿戴,这有助于延长存储设备100的寿命。错误校正码(ECC)相关信息可以用于检测和校正数据页中可能出现的位错误。最后更新时间戳可以用于标志该页数据的最后写入时间。有效性或状态标志可以表明数据页是否有效或已被废弃。此外,扩展数据与待存储数据可以合并写入闪存块130的第一存储物理地址中,以获得已存储数据。
请参阅图1和图3,在本发明的一个实施例中,当执行步骤S50时,具体的,主控器110还可用以接收数据读取命令,并对数据读取命令进行地址解析处理,生成第二主机逻辑地址和第二存储物理地址。其中,数据读取命令可以由主机端200发送至主控器110中,并由主控器110接收后对其进行处理。主控器110确定接收到数据读取命令后,其执行的动作为对数据读取命令进行解析处理,以确定需要读取的数据块的逻辑地址,即生成第二主机逻辑地址。随后主控器110还可以利用闪存转换层对第二主机逻辑地址进行转换处理,生成第二存储物理地址,即已存储数据的物理地址。
请参阅图1和图3,在本发明的一个实施例中,当执行步骤S60时,具体的,当主控器110确定了第二存储物理地址时,主控器110可以根据第二存储物理地址对闪存块130发送数据读取请求,以对闪存块130中存储的已存储数据进行数据读取处理。闪存块130确定接收到主控器110发送的数据读取请求后,其执行的动作为将存储在闪存块130中的已存储数据发送至内存缓冲区120中,以生成临时缓冲数据,随后再通过内存缓冲区120将临时缓冲数据上传至主控器110中。
请参阅图1和图3,在本发明的一个实施例中,当执行步骤S70时,具体的,对第二主机逻辑地址、第二存储物理地址以及临时缓冲数据进行异或处理可以满足如下公式,D=lba2^pba2^(head 4bytes | tail 4bytes ),其中,lba2可以表示为第二主机逻辑地址,pba2可以表示为第二存储物理地址,head 4bytes可以表示为临时缓冲数据的首部字节数据,tail 4bytes可以表示为临时缓冲数据的尾部字节数据,^表示为异或运算符号,|表示为或运算符号。此外,对于tail 4bytes,当临时缓冲数据的数据长度小于或等于预设长度时,tail 4bytes可以为临时缓冲数据的末尾预设数量的字节数据。当临时缓冲数据的数据长度大于预设长度时,tail 4bytes可以为临时缓冲数据从末尾除去尾部字节数据数量的区间数据。例如,head 4bytes可以表示为临时缓冲数据首部4字节数据,tail 4bytes可以表示为临时缓冲数据尾部4字节数据,且临时缓冲数据的预设长度可以设置32千字节(Kilobyte,Kb)。即,当临时缓冲数据的数据长度小于或等于32Kb时,tail 4bytes为临时缓冲数据的末尾的4字节数据,当临时缓冲数据的数据长度大于32Kb时,tail 4bytes为临时缓冲数据从末尾除去尾部4字节数据数量后的区间数据。
请参阅图3和图5,在本发明的一个实施例中,当执行步骤S80时,具体的,步骤S80可包括如下步骤:
步骤S81、比较写入验证数据和读取验证数据是否相等。
步骤S82、若写入验证数据与读取验证数据不相等,则主控器判断闪存块是否出现纠错信息,以确定存储设备的硬件错误类型。
步骤S83、若写入验证数据与读取验证数据相等,则主控器将已存储数据上传至主机端,主机端判断已存储数据与待存储数据是否相同。
步骤S84、若已存储数据与待存储数据相同,则存储设备处于正常工作状态。
步骤S85、若已存储数据与待存储数据不相同,则主机端判断已存储数据与待存储数据之间的数据翻转量是否大于或等于预设阈值,以确定存储设备的软件错误类型。
请参阅图5和图6,在本发明的一个实施例中,当执行步骤S82时,具体的,步骤S82可以包括如下步骤:
步骤S821、判断闪存块是否出现纠错信息。
步骤S822、若闪存块出现纠错信息,则闪存块出现错误。
步骤S823、若闪存块不出现纠错信息,则内存缓冲区出现错误。
请参阅图5和图7,在本发明的一个实施例中,当执行步骤S85时,具体的,步骤S85可以包括如下步骤:
步骤S851、判断已存储数据与待存储数据之间的数据翻转量是否大于或等于预设阈值。
步骤S852、若数据翻转量大于或等于预设阈值,则确定存储设备内的映射关系出现错误。
步骤S853、若数据翻转量小于预设阈值,则确定存储设备与主机端的通信通道出现错误。
在本发明的一个实施例中,具体的,数据翻转量是指存储设备100中的数据位由于错误而从其原始状态(0或1)翻转到另一种状态的数量。预设阈值可以为256字节,也可以为1024字节,还可以为512字节。然不限于此,预设阈值还可以为其他字节数。例如,预设阈值可以为512字节,即当已存储数据与待存储数据之间的数据翻转量大于或等于512字节时,则判断存储设备100内部的映射关系出现错误。当已存储数据与待存储数据之间的数据翻转量小于512字节时,则判断存储设备100与主机端200之间的通信通道出现错误。
综上所述,通过本发明提供的一种存储设备以及数据处理方法,能够对主机端数据读写不一致的出错原因进行快速定位,提升其错误定位效率,提高存储设备的开发进度,进而缩短存储设备的落地周期,降低研发成本。
在本说明书的描述中,参考术语“本实施例”、“示例”、“具体示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上公开的本发明实施例只是用于帮助阐述本发明。实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。
Claims (10)
1.一种存储设备,其特征在于,包括:
主控器,通信连接于主机端,用以接收所述主机端的数据写入命令和待存储数据,根据所述数据写入命令确定所述待存储数据的第一主机逻辑地址,并根据所述第一主机逻辑地址确定第一存储物理地址;
内存缓冲区,通信连接于所述主控器,用以临时存储数据;
闪存块,分别通信连接于所述主控器和所述内存缓冲区;
其中,所述主控器还用以对所述第一主机逻辑地址、所述第一存储物理地址以及所述待存储数据进行异或处理,生成写入验证数据;
所述主控器用以对所述写入验证数据、所述闪存块中的元数据进行整合处理,生成扩展数据,并将所述扩展数据与所述待存储数据合并写入所述闪存块中,生成已存储数据;
所述主控器用以接收所述主机端的数据读取命令,并对所述数据读取命令进行地址解析处理,生成第二主机逻辑地址和第二存储物理地址;
所述主控器用以根据所述第二存储物理地址对所述已存储数据进行数据读取处理,生成临时缓冲数据;
所述主控器用以对所述第二主机逻辑地址、所述第二存储物理地址以及所述临时缓冲数据进行异或处理,生成读取验证数据;以及
所述主控器用以对所述写入验证数据与所述读取验证数据进行比较,以生成比较结果。
2.根据权利要求1所述的存储设备,其特征在于,所述主控器确定获取到所述第一主机逻辑地址、所述第一存储物理地址以及所述待存储数据,执行的动作为:获取所述写入验证数据C,C=lba^pba^(head 4bytes | tail 4bytes ),其中,lba表示为所述第一主机逻辑地址,pba表示为所述第一存储物理地址,所述head 4bytes表示为所述待存储数据首部字节数据,所述tail 4bytes表示为所述待存储数据尾部字节数据,^表示为异或运算符号,|表示为或运算符号。
3.根据权利要求1所述的存储设备,其特征在于,所述主控器确定所述写入验证数据与所述读取验证数据不相等时,执行的动作为:判断所述闪存块是否出现纠错信息;
若所述闪存块出现所述纠错信息,则所述闪存块出现错误;
若所述闪存块不出现所述纠错信息,则所述内存缓冲区出现错误。
4.根据权利要求1所述的存储设备,其特征在于,所述主控器确定所述写入验证数据与所述读取验证数据相等时,执行的动作为:将所述已存储数据上传至所述主机端。
5.根据权利要求1所述的存储设备,其特征在于,所述主机端确定接收到所述已存储数据时,执行的动作为:判断所述已存储数据与所述待存储数据是否相同;
若所述已存储数据与所述待存储数据相同,则所述存储设备处于正常工作状态;
若所述已存储数据与所述待存储数据不相同,则所述主机端执行的动作为判断所述已存储数据与所述待存储数据之间的数据翻转量是否大于或等于预设阈值,以确定所述存储设备的软件错误类型。
6.一种存储设备的数据处理方法,其特征在于,包括:
主控器获取主机端的数据写入命令和待存储数据;
根据所述数据写入命令确定所述待存储数据的第一主机逻辑地址,并根据所述第一主机逻辑地址确定第一存储物理地址;
对所述第一主机逻辑地址、所述第一存储物理地址以及所述待存储数据进行异或处理,生成写入验证数据;
对所述写入验证数据、闪存块中的元数据进行整合处理,生成扩展数据,并将所述扩展数据与所述待存储数据合并写入所述闪存块中,生成已存储数据;
所述主控器获取所述主机端的数据读取命令,并对所述数据读取命令进行地址解析处理,生成第二主机逻辑地址和第二存储物理地址;
根据所述第二存储物理地址对所述已存储数据进行数据读取处理,生成临时缓冲数据;
对所述第二主机逻辑地址、所述第二存储物理地址以及所述临时缓冲数据进行异或处理,生成读取验证数据;以及
对所述写入验证数据与所述读取验证数据进行比较,以生成比较结果。
7.根据权利要求6所述的存储设备的数据处理方法,其特征在于,所述对所述第一主机逻辑地址、所述第一存储物理地址以及所述待存储数据进行异或处理,生成写入验证数据的步骤包括:
对所述第一主机逻辑地址和所述第一存储物理地址进行异或处理,生成第一运算结果;
对所述待存储数据的首部字节数据和尾部字节数据进行或处理,生成第二运算结果;以及
对所述第一运算结果和所述第二运算结果进行异或处理,生成所述写入验证数据;
其中,当所述待存储数据的数据长度小于或等于预设长度时,所述尾部字节数据为所述待存储数据的末尾预设数量的字节数据;当所述待存储数据的数据长度大于预设长度时,所述尾部字节数据为所述待存储数据从末尾除去所述尾部字节数据数量的区间数据。
8.根据权利要求6所述的存储设备的数据处理方法,其特征在于,所述对所述写入验证数据与所述读取验证数据进行比较,以生成比较结果的步骤包括:
比较所述写入验证数据和所述读取验证数据是否相等;
若所述写入验证数据与所述读取验证数据不相等,则所述主控器判断所述闪存块是否出现纠错信息,以确定所述存储设备的硬件错误类型;
若所述写入验证数据与所述读取验证数据相等,则所述主控器将所述已存储数据上传至主机端,所述主机端判断所述已存储数据与所述待存储数据是否相同;
若所述已存储数据与所述待存储数据相同,则所述存储设备处于正常工作状态;
若所述已存储数据与所述待存储数据不相同,则所述主机端判断所述已存储数据与所述待存储数据之间的数据翻转量是否大于或等于预设阈值,以确定所述存储设备的软件错误类型。
9.根据权利要求8所述的存储设备的数据处理方法,其特征在于,所述判断所述闪存块是否出现纠错信息,以确定所述存储设备的硬件错误类型的步骤包括:
判断所述闪存块是否出现纠错信息;
若所述闪存块出现所述纠错信息,则所述闪存块出现错误;
若所述闪存块不出现所述纠错信息,则内存缓冲区出现错误。
10.根据权利要求8所述的存储设备的数据处理方法,其特征在于,所述判断所述已存储数据与所述待存储数据之间的数据翻转量是否大于或等于预设阈值,以确定所述存储设备的软件错误类型的步骤包括:
判断所述已存储数据与所述待存储数据之间的数据翻转量是否大于或等于所述预设阈值;
若所述数据翻转量大于或等于所述预设阈值,则确定所述存储设备内的映射关系出现错误;
若所述数据翻转量小于所述预设阈值,则确定所述存储设备与所述主机端的通信通道出现错误。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410224726.7A CN117806569B (zh) | 2024-02-29 | 2024-02-29 | 一种存储设备以及数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410224726.7A CN117806569B (zh) | 2024-02-29 | 2024-02-29 | 一种存储设备以及数据处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117806569A CN117806569A (zh) | 2024-04-02 |
CN117806569B true CN117806569B (zh) | 2024-05-07 |
Family
ID=90428107
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410224726.7A Active CN117806569B (zh) | 2024-02-29 | 2024-02-29 | 一种存储设备以及数据处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117806569B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108897637A (zh) * | 2018-06-06 | 2018-11-27 | 深圳先进技术研究院 | 存储器中数据读取的错误纠正方法、装置、设备及介质 |
CN112905122A (zh) * | 2021-02-20 | 2021-06-04 | 炬芯科技股份有限公司 | 一种存储数据的方法及装置 |
CN113495673A (zh) * | 2020-04-01 | 2021-10-12 | 长鑫存储技术有限公司 | 读写方法及存储器装置 |
CN115408191A (zh) * | 2022-09-01 | 2022-11-29 | 长鑫存储技术有限公司 | 故障定位方法、装置、设备及存储介质 |
CN116486890A (zh) * | 2023-04-28 | 2023-07-25 | 上海交通大学 | 基于校验复用的固态硬盘ftl方法、系统、设备及介质 |
CN117153232A (zh) * | 2022-06-01 | 2023-12-01 | 美光科技公司 | 用于不规则低密度奇偶校验解码的跨列缩放的位翻转阈值 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6275427B2 (ja) * | 2013-09-06 | 2018-02-07 | 株式会社東芝 | メモリ制御回路およびキャッシュメモリ |
US10256842B2 (en) * | 2016-03-03 | 2019-04-09 | Intel Corporation | Technologies for correcting flipped bits for an error correction decode process |
KR20180025357A (ko) * | 2016-08-29 | 2018-03-09 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
KR20200020464A (ko) * | 2018-08-17 | 2020-02-26 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그 동작 방법 |
KR102691952B1 (ko) * | 2019-10-14 | 2024-08-06 | 에스케이하이닉스 주식회사 | 컨트롤러 및 이를 포함하는 데이터 저장 시스템 |
US11182240B2 (en) * | 2020-09-25 | 2021-11-23 | Intel Corporation | Techniques to improve error correction using an XOR rebuild scheme of multiple codewords and prevent miscorrection from read reference voltage shifts |
-
2024
- 2024-02-29 CN CN202410224726.7A patent/CN117806569B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108897637A (zh) * | 2018-06-06 | 2018-11-27 | 深圳先进技术研究院 | 存储器中数据读取的错误纠正方法、装置、设备及介质 |
CN113495673A (zh) * | 2020-04-01 | 2021-10-12 | 长鑫存储技术有限公司 | 读写方法及存储器装置 |
CN112905122A (zh) * | 2021-02-20 | 2021-06-04 | 炬芯科技股份有限公司 | 一种存储数据的方法及装置 |
CN117153232A (zh) * | 2022-06-01 | 2023-12-01 | 美光科技公司 | 用于不规则低密度奇偶校验解码的跨列缩放的位翻转阈值 |
CN115408191A (zh) * | 2022-09-01 | 2022-11-29 | 长鑫存储技术有限公司 | 故障定位方法、装置、设备及存储介质 |
CN116486890A (zh) * | 2023-04-28 | 2023-07-25 | 上海交通大学 | 基于校验复用的固态硬盘ftl方法、系统、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117806569A (zh) | 2024-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI637315B (zh) | 使用在一固態媒體中之多層次映射之修整機制 | |
TWI447733B (zh) | 計算補償電壓與調整門檻值電壓之方法及記憶體裝置與控制器 | |
US10372619B2 (en) | Data backup method, data recovery method and storage controller | |
US10628257B2 (en) | Memory management method and storage controller | |
TW201703052A (zh) | 平均磨損方法、記憶體儲存裝置及記憶體控制電路單元 | |
US11853599B2 (en) | Memory system and information processing system | |
US10642731B2 (en) | Memory management method and storage controller | |
TW201447576A (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
US10748599B1 (en) | Data reading method, storage controller and storage device background of the disclosure | |
TW201407349A (zh) | 資料管理方法、記憶體控制器與記憶體儲存裝置 | |
CN105320464A (zh) | 防止读取干扰的方法、存储器控制电路单元与存储装置 | |
CN105843700A (zh) | 一种控制器 | |
CN110471612B (zh) | 存储器管理方法以及存储控制器 | |
TWI651650B (zh) | 記憶體管理方法及使用所述方法的儲存控制器 | |
CN117806569B (zh) | 一种存储设备以及数据处理方法 | |
US10635583B2 (en) | Memory management method and storage controller | |
CN110377538B (zh) | 存储器管理方法以及存储控制器 | |
CN114327265B (zh) | 读取干扰检查方法、存储器存储装置及控制电路单元 | |
CN110764693B (zh) | 一种提高Nand flash数据稳定性的方法以及装置 | |
TWI760697B (zh) | 記憶體之資料整理方法、記憶體儲存裝置及記憶體控制電路單元 | |
US20210278994A1 (en) | Data storage device and data processing method | |
US10579306B1 (en) | Memory management method and storage controller | |
CN110764947B (zh) | 数据写入方法以及存储控制器 | |
CN110364197B (zh) | 解码方法以及存储控制器 | |
CN111949426A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |