[go: up one dir, main page]

CN112230855B - 固态硬盘及其读写方法 - Google Patents

固态硬盘及其读写方法 Download PDF

Info

Publication number
CN112230855B
CN112230855B CN202011123714.3A CN202011123714A CN112230855B CN 112230855 B CN112230855 B CN 112230855B CN 202011123714 A CN202011123714 A CN 202011123714A CN 112230855 B CN112230855 B CN 112230855B
Authority
CN
China
Prior art keywords
sector
data unit
solid state
read
host
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
Application number
CN202011123714.3A
Other languages
English (en)
Other versions
CN112230855A (zh
Inventor
请求不公布姓名
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yingren Technology Co ltd
Original Assignee
Yingren Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Yingren Technology Co ltd filed Critical Yingren Technology Co ltd
Priority to CN202011123714.3A priority Critical patent/CN112230855B/zh
Priority to US17/103,984 priority patent/US11500721B2/en
Publication of CN112230855A publication Critical patent/CN112230855A/zh
Application granted granted Critical
Publication of CN112230855B publication Critical patent/CN112230855B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Library & Information Science (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本公开涉及固态硬盘技术,公开了一种固态硬盘及其读写方法。固态硬盘存储的每一个数据单元包括元数据和至少两个扇区的用户数据,元数据包括用于指示数据单元中每一个扇区的状态信息的扇区状态集合,状态信息包括有效状态和无效状态;固态硬盘的读取方法包括:当从主机收到读取一个数据单元中部分扇区的读取命令时,固态硬盘根据存储在该数据单元的元数据中的扇区状态集合,对于有效状态的扇区向主机返回实际数据,对于无效状态的扇区向主机返回表示读取错误的信息。

Description

固态硬盘及其读写方法
技术领域
本公开涉及固态硬盘,特别涉及固态硬盘的读写技术。
背景技术
固态硬盘又称固态驱动器(Solid-State Disk或Solid-State Drive,简称SSD)是一种主要以闪存(NAND)作为非易失性存储器的计算机存储设备。固态硬盘与主机(HOST)连接,执行来自主机的读写指令。固态硬盘的闪存转换层(FTL)中保存着一个映射表,表中存储着逻辑地址(LDA)与NAND上物理地址(PDA)的对应关系,通过这个映射表完成数据的读写。主机端读写数据的单位是扇区(sector),每个sector的大小为512byte或4KB,而NAND上读写数据的单位是数据单元(DU),DU同时也是FTL映射表的基本单位,一个DU的大小为4KB(也可以配置成其他大小,例如8KB等),当sector采用512byte时,由于主机与NAND读写数据的单位不同,使得多个sector对应一个DU。当主机要写一个sector时,会以某一个DU的值为基础数据,修改其中一个sector的值,新旧数据组合再写进这个DU。当DU出现error map(映射关系失效)时,如果直接写一个sector,当成正常的DU来用,会导致主机读这个DU的其他sector的值是错的,此时需要一种方法来告知主机读到的数据是否正确。
现有技术有两种解决方案:
方案1:将FTL映射表的基本映射单位改成sector,即一个基本映射单位对应一个sector。这个方案的问题在于会大大增大FTL映射表,占用更多资源。例如,当每个sector的大小为512byte,如果把FTL映射表的基本映射单位改成sector,相对于原先FTL映射表的基本映射单位DU为4KB的情况,FTL映射表会增加至原先的8倍。
2.拒绝HOST的命令,HOST知道后重新发送命令。这个方案的问题在于会增加读写时间,重复不必要的操作。
发明内容
本公开的目的在于提供一种固态硬盘及其读写方法,在不增加FTL映射表大小,不拒绝主机命令,不影响读数据正确性判断的情况下,完成将一个扇区大小的数据写入一个标有错误映射的数据单元的操作。
本申请公开了一种固态硬盘的读取方法,所述固态硬盘存储的每一个数据单元包括元数据和至少两个扇区的用户数据,所述元数据包括用于指示数据单元中每一个扇区的状态信息的扇区状态集合,所述状态信息包括有效状态和无效状态;所述方法包括:
当从主机收到读取一个数据单元中部分扇区的读取命令时,所述固态硬盘根据存储在该数据单元的元数据中的扇区状态集合,对于有效状态的扇区向所述主机返回实际数据,对于无效状态的扇区向所述主机返回表示读取错误的信息。
在一个优选例中,所述“固态硬盘根据存储在该数据单元的元数据中的扇区状态集合,对于有效状态的扇区向所述主机返回实际数据,对于无效状态的扇区向所述主机返回表示读取错误的信息”的步骤进一步包括:
所述固态硬盘的闪存转换层将所述读取命令中待读取扇区的逻辑地址转换为所述固态硬盘中的物理地址,并根据该物理地址读取对应的数据单元;
所述闪存转换层判断所述对应的数据单元是否为有效状态;
如果所述对应的数据单元是有效状态,则进一步根据该数据单元中的扇区状态集合判断所述待读取扇区是否为有效状态,如果所述待读取扇区是有效状态则向所述主机返回所述待读取扇区的数据,如果所述待读取扇区是无效状态则向所述主机返回表示读取错误的信息;
如果所述对应的数据单元是无效状态,则向所述主机返回表示读取错误的信息。
在一个优选例中,所述扇区状态集合是位图,该位图中每一个比特分别用于指示一个扇区的状态信息。
在一个优选例中,所述“根据该数据单元中的扇区状态集合判断所述待读取扇区是否为有效状态,如果所述待读取扇区是有效状态则向所述主机返回所述待读取扇区的数据,如果所述待读取扇区是无效状态则向所述主机返回表示读取错误的信息”的步骤由所述固态硬盘中的固件实现。
本申请还公开了一种固态硬盘的写入方法所述固态硬盘存储的每一个数据单元包括元数据和至少两个扇区的用户数据,所述元数据包括用于指示数据单元中每一个扇区的状态信息的扇区状态集合,所述状态信息包括有效状态和无效状态;所述方法包括:
当从主机收到向一个数据单元中部分扇区写入数据的命令时,所述固态硬盘读取该数据单元;
用待写入扇区的数据替换所读取的数据单元中对应扇区的用户数据,得到待写入数据单元,并在所述待写入数据单元的扇区状态集合中,将待写入扇区设置为有效状态,其他扇区保持原来的状态;
将所述待写入数据单元写入所述固态硬盘的存储介质。
在一个优选例中,所述固态硬盘读取该数据单元,进一步包括:
所述固态硬盘的闪存转换层将所述写入命令中待写入扇区的逻辑地址转换为所述固态硬盘中的物理地址,并根据该物理地址读取对应的数据单元。
在一个优选例中,所述扇区状态集合是位图,该位图中每一个比特分别用于指示一个扇区的状态信息。
本申请还公开了一种固态硬盘所述固态硬盘包括存储介质和控制器;
所述存储介质中存储的每一个数据单元包括元数据和至少两个扇区的用户数据,所述元数据包括用于指示数据单元中每一个扇区的状态信息的扇区状态集合,所述状态信息包括有效状态和无效状态;
所述控制器用于执行如前文描述的读取方法和\或如前文描述的写入方法。
在一个优选例中,所述存储介质是闪存。
在一个优选例中,所述控制器包括硬件芯片和固件。
在本公开的实施方式中,采用元数据存储扇区好坏的信息,提高了读写性能,既不需要增大FTL映射表,节省了资源,又减少了主机处理读写命令失败的情况,提高了读写性能。此外还采用软硬件配合的方式进行错误处理,减少错误处理所需的时间,提高了读写性能。
本公开的说明书中记载了大量的技术特征,分布在各个技术方案中,如果要罗列出本公开所有可能的技术特征的组合(即技术方案)的话,会使得说明书过于冗长。为了避免这个问题,上述发明内容中公开的各个技术特征、在下文各个实施方式和例子中公开的各技术特征、以及附图中公开的各个技术特征,都可以自由地互相组合,从而构成各种新的技术方案(这些技术方案均应该视为在本说明书中已经记载),除非这种技术特征的组合在技术上是不可行的。例如,在一个例子中公开了特征A+B+C,在另一个例子中公开了特征A+B+D+E,而特征C和D是起到相同作用的等同技术手段,技术上只要择一使用即可,不可能同时采用,特征E技术上可以与特征C相组合,则,A+B+C+D的方案因技术不可行而应当不被视为已经记载,而A+B+C+E的方案应当视为已经被记载。
附图说明
图1是根据本公开第一实施方式的固态硬盘的读取方法流程示意图;
图2是根据本公开第二实施方式的固态硬盘的读取方法流程示意图。
具体实施方式
在以下的叙述中,为了使读者更好地理解本公开而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本公开所要求保护的技术方案。
部分概念的说明:
DU:数据单元(Data unit),指FTL映射关系的最小单元。
HOST:主机,例如计算机主机。
NAND:闪存,又可称为NAND Flash memory,是一种非易失性存储介质,可作为固态硬盘的存储介质。
FTL:闪存转换层(Flash Translation Layer),指完成HOST逻辑地址到NAND物理地址的转换。
META:元数据,指描述数据属性的信息。
SECTOR:扇区,主机读写数据的最小单位。
LDA:逻辑地址(Logic DU Address)。
PDA:物理地址(Physical DU Address)。
为使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开的实施方式作进一步地详细描述。
本公开的第一实施方式涉及一种固态硬盘的读取方法,该固态硬盘存储的每一个数据单元包括元数据和至少两个扇区的用户数据,元数据包括用于指示数据单元中每一个扇区的状态信息的扇区状态集合,状态信息包括有效状态和无效状态。当从主机收到读取一个数据单元中部分扇区的读取命令时,固态硬盘根据存储在该数据单元的元数据中的扇区状态集合,对于有效状态的扇区向主机返回实际数据,对于无效状态的扇区向主机返回表示读取错误的信息。
在一个实施例中,扇区状态集合是位图(BitMap),位图中每一个比特分别用于指示一个扇区的状态信息。一个数据单元的位图中的各个比特和该数据单元中各个扇区是一一对应的。每一个扇区分别用一个比特指示状态(例如0代表有效状态,1代表无效状态,当然也可以用1代表有效状态,0代表无效状态,只要预先约定好即可),节约存储空间。在其他实施例中,扇区状态集合也可以是其他类型的数据结构,例如可以用更冗余的方式(如纠错码)来实现每一个扇区的状态信息的存储。本公开对于扇区状态集合的具体形式不作限定,只要能够存储每一个扇区的状态信息即可。
在一个实施例中,如图1所示,该固态硬盘的读取方法包括:
在步骤101中,固态硬盘获取来自主机的读取命令。
在步骤102中,固态硬盘的闪存转换层将读取命令中待读取扇区的逻辑地址(LDA)转换为固态硬盘中的物理地址(PDA)。
固态硬盘中的映射表Mapping table记录LDA到PDA的对应关系,主要分两种情况
1.LDA->正常的PDA,也就是具体NAND存储介质中的某一个物理地址。
2.LDA->PDA_err,其中PDA_err是代表错误映射的特定值,例如PDA_err可以用32位最大值0xFFFFFFFF表示。
在步骤103中,闪存转换层判断对应的数据单元是否为有效状态(在一个实施例中,可以根据FTL映射表的信息判断一个数据单元是否为无效)。如果对应的数据单元是有效状态,则进入步骤104;如果对应的数据单元是无效状态(例如物理地址是PDA_err),则进入步骤106,固态硬盘向主机返回表示读取错误的信息。
在步骤104中,根据物理地址读取对应的数据单元。
在步骤105中,进一步根据该数据单元中的扇区状态集合判断待读取扇区是否为有效状态(例如位图中对应待读取扇区的比特的值为0还是1),如果待读取扇区是有效状态则进入步骤107,固态硬盘向主机返回待读取扇区的数据,如果待读取扇区是无效状态则进入步骤106,固态硬盘向主机返回表示读取错误的信息。
优选地,上述各个步骤可以由固态硬盘的硬件和固件相配合来实现。硬件(Hardware)中指固态硬盘控制器的芯片,而固件(Firmware)指工作在固态硬盘上起控制作用的程序。在一个实施例中,步骤105可以由硬件和固件共同实现,其中硬件先初步检查,如果硬件发现有无效状态的扇区,再由固件仔细检查,这样可以避免因固件检查每一个数据单元而导致性能下降。可选地,上述各个步骤也可以完全由硬件或完全由固件来实现。在一个实施例中,固态硬盘的硬件可以是逻辑电路。
本公开的第二实施方式涉及一种固态硬盘的写入方法(可以与第一实施方式的固态硬盘的读取方法相配合使用),该固态硬盘存储的每一个数据单元包括元数据和至少两个扇区的用户数据,元数据包括用于指示数据单元中每一个扇区的状态信息的扇区状态集合,状态信息包括有效状态和无效状态。
在一个实施例中,扇区状态集合是位图(BitMap),位图中每一个比特分别用于指示一个扇区的状态信息。每一个扇区分别用一个比特指示状态(例如0代表有效状态,1代表无效状态),可节约存储空间。在其他实施例中,扇区状态集合也可以是其他类型的数据结构,例如可以用更冗余的方式(如纠错码)来实现每一个扇区的状态信息的存储。本公开对于扇区状态集合的具体形式不作限定,只要能够存储每一个扇区的状态信息即可。
在一个实施例中,如图2所示,该固态硬盘的写入方法具体包括如下步骤:
在步骤201中,接收来自主机的写入命令。
在步骤202中,固态硬盘判断是否为整个数据单元的写入,如果是则进入步骤203,否则进入步骤204。
在步骤203中,固态硬盘根据要写入的数据单元的逻辑地址(LDA)分配对应的物理地址(PDA),并向该物理地址写入整个数据单元,其中该写入的数据单元的元数据中的位图是全0(有效状态)。
在步骤204中,对于写入命令是向一个数据单元中部分扇区写入数据的情况,固态硬盘的闪存转换层(FTL)将该写入命令中待写入扇区的逻辑地址转换为固态硬盘中的物理地址,并根据该物理地址读取对应的数据单元。该数据单元既包括了待写入扇区,也包括了其他扇区,还包括了该数据单元的元数据(含位图)。
在步骤205中,用待写入扇区的数据替换所读取的数据单元中对应扇区的用户数据,得到待写入数据单元,并在待写入数据单元的位图中将待写入扇区设置为有效状态,其他扇区保持原来的状态。
在步骤206中,将待写入数据单元写入固态硬盘的存储介质,其中被写入数据单元包括了位图。
具体地说,这里可以细分为三种情况:
1、如果原来的LDA对应某个PDA,一般情况下,它的位图是全0,表示全部有效。数据部分进行读-修改-写,位图部分仍然是全0。
2、如果原来的LDA对应某个PDA,它的位图不是全0,表示部分有效。数据部分进行读-修改-写,位图部分也进行读-修改-写,整体写到NAND上。
3、如果原来的LDA不对应某个PDA,而是对应PDA_err,那么位图初始化为全1。把新写的扇区对应位图的位置清除成0,表示扇区有效,没有写的扇区仍然是1,表示扇区无效。将新数据和位图一起写到NAND上。
优选地,上述各步骤可以由固态硬盘的硬件和固件相配合来实现。可选地,上述各步骤也可以完全由固态硬盘的硬件或完全由固态硬盘的固件来实现。
本申请的第三实施方式涉及一种固态硬盘,该固态硬盘包括存储介质和控制器。存储介质是闪存。控制器包括硬件芯片和固件。
存储介质中存储的每一个数据单元包括元数据和至少两个扇区的用户数据,元数据包括用于指示数据单元中每一个扇区的状态信息的扇区状态集合,状态信息包括有效状态和无效状态。
控制器用于执行第一实施方式所述的读取方法和\或第二实施方式所述的写入方法。
需要说明的是,在公开中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本公开中,如果提到根据某要素执行某行为,则是指至少根据该要素执行该行为的意思,其中包括了两种情况:仅根据该要素执行该行为、和根据该要素和其它要素执行该行为。多个、多次、多种等表达包括2个、2次、2种以及2个以上、2次以上、2种以上。
本说明书包括本文所描述的各种实施例的组合。对实施例的单独提及(例如“一个实施例”或“一些实施例”或“优选实施例”)不一定是指相同的实施例;然而,除非指示为是互斥的或者本领域技术人员很清楚是互斥的,否则这些实施例并不互斥。应当注意的是,除非上下文另外明确指示或者要求,否则在本说明书中以非排他性的意义使用“或者”一词。
在本公开提及的所有文献都被认为是整体性地包括在本公开的公开内容中,以便在必要时可以作为修改的依据。此外应理解,在阅读了本公开的内容之后,本领域技术人员可以对本公开作各种改动或修改,这些等价形式同样落于本公开所要求保护的范围。

Claims (10)

1.一种固态硬盘的读取方法,其特征在于,所述固态硬盘存储的每一个数据单元包括元数据和至少两个扇区的用户数据,所述元数据包括用于指示数据单元中每一个扇区的状态信息的扇区状态集合,所述状态信息包括有效状态和无效状态;所述方法包括:
当从主机收到读取一个数据单元中部分扇区的读取命令时,如果该数据单元是有效状态,则进一步根据该数据单元的元数据中的扇区状态集合判断待读取扇区是否为有效状态,如果所述待读取扇区是有效状态则向所述主机返回所述待读取扇区的实际数据,如果所述待读取扇区是无效状态则向所述主机返回表示读取错误的信息;如果所述数据单元是无效状态,则向所述主机返回表示读取错误的信息。
2.如权利要求1所述的固态硬盘的读取方法,其特征在于,当从主机收到读取一个数据单元中部分扇区的读取命令时,所述方法还包括:
所述固态硬盘的闪存转换层将所述读取命令中待读取扇区的逻辑地址转换为所述固态硬盘中的物理地址,并根据该物理地址读取对应的数据单元;
所述闪存转换层判断所述对应的数据单元是否为有效状态。
3.如权利要求1所述的固态硬盘的读取方法,其特征在于,所述扇区状态集合是位图,该位图中每一个比特分别用于指示一个扇区的状态信息。
4.如权利要求1所述的固态硬盘的读取方法,其特征在于,所述“根据该数据单元的元数据中的扇区状态集合判断待读取扇区是否为有效状态,如果所述待读取扇区是有效状态则向所述主机返回所述待读取扇区的实际数据,如果所述待读取扇区是无效状态则向所述主机返回表示读取错误的信息”的步骤由所述固态硬盘中的固件实现。
5.一种固态硬盘的写入方法,其特征在于,所述固态硬盘存储的每一个数据单元包括元数据和至少两个扇区的用户数据,所述元数据包括用于指示数据单元中每一个扇区的状态信息的扇区状态集合,所述状态信息包括有效状态和无效状态;所述方法包括:
当从主机收到向一个数据单元中部分扇区写入数据的命令时,所述固态硬盘读取该数据单元;
用待写入扇区的数据替换所读取的数据单元中对应扇区的用户数据,得到待写入数据单元,并在所述待写入数据单元的扇区状态集合中,将待写入扇区设置为有效状态,其他扇区保持原来的状态;
将所述待写入数据单元写入所述固态硬盘的存储介质。
6.如权利要求5所述的固态硬盘的写入方法,其特征在于,所述固态硬盘读取该数据单元,进一步包括:
所述固态硬盘的闪存转换层将所述写入数据的命令中待写入扇区的逻辑地址转换为所述固态硬盘中的物理地址,并根据该物理地址读取对应的数据单元。
7.如权利要求5所述的固态硬盘的写入方法,其特征在于,所述扇区状态集合是位图,该位图中每一个比特分别用于指示一个扇区的状态信息。
8.一种固态硬盘,其特征在于,所述固态硬盘包括存储介质和控制器;
所述存储介质中存储的每一个数据单元包括元数据和至少两个扇区的用户数据,所述元数据包括用于指示数据单元中每一个扇区的状态信息的扇区状态集合,所述状态信息包括有效状态和无效状态;
所述控制器用于执行如权利要求1-4中任意一项所述的读取方法和\或如权利要求5-7中任意一项所述的写入方法。
9.如权利要求8所述的固态硬盘,其特征在于,所述存储介质是闪存。
10.如权利要求8所述的固态硬盘,其特征在于,所述控制器包括硬件芯片和固件。
CN202011123714.3A 2020-10-20 2020-10-20 固态硬盘及其读写方法 Active CN112230855B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202011123714.3A CN112230855B (zh) 2020-10-20 2020-10-20 固态硬盘及其读写方法
US17/103,984 US11500721B2 (en) 2020-10-20 2020-11-25 Solid-state disk and reading and writing method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011123714.3A CN112230855B (zh) 2020-10-20 2020-10-20 固态硬盘及其读写方法

Publications (2)

Publication Number Publication Date
CN112230855A CN112230855A (zh) 2021-01-15
CN112230855B true CN112230855B (zh) 2024-11-12

Family

ID=74118128

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011123714.3A Active CN112230855B (zh) 2020-10-20 2020-10-20 固态硬盘及其读写方法

Country Status (2)

Country Link
US (1) US11500721B2 (zh)
CN (1) CN112230855B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12105959B2 (en) * 2022-08-09 2024-10-01 Micron Technology, Inc. Suspending operations of a memory system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103677670A (zh) * 2013-12-11 2014-03-26 华为技术有限公司 读数据的方法及装置
CN107632942A (zh) * 2017-08-29 2018-01-26 记忆科技(深圳)有限公司 一种固态硬盘实现lba级别trim命令的方法
CN110737395A (zh) * 2018-07-20 2020-01-31 伊姆西Ip控股有限责任公司 I/o管理方法、电子设备和计算机可读存储介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4074029B2 (ja) * 1999-06-28 2008-04-09 株式会社東芝 フラッシュメモリ
US7523343B2 (en) * 2004-04-30 2009-04-21 Microsoft Corporation Real-time file system repairs
US7809994B2 (en) * 2006-05-17 2010-10-05 Sandisk Corporation Error correction coding for multiple-sector pages in flash memory devices
US9495241B2 (en) * 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
JP2009129070A (ja) * 2007-11-21 2009-06-11 Hitachi Ltd フラッシュメモリ記憶装置の制御方法、その方法を用いたフラッシュメモリ記憶装置及びストレージシステム
US20090327837A1 (en) * 2008-06-30 2009-12-31 Robert Royer NAND error management
JP2011065599A (ja) * 2009-09-18 2011-03-31 Toshiba Corp メモリシステムおよびメモリシステムの制御方法
KR101638061B1 (ko) * 2009-10-27 2016-07-08 삼성전자주식회사 플래시 메모리 시스템 및 그것의 플래시 조각 모음 방법
EP2745203B1 (en) * 2011-08-19 2016-09-21 Kabushiki Kaisha Toshiba Information processing apparatus
JP2013157068A (ja) * 2012-01-31 2013-08-15 Toshiba Corp データ記憶制御装置、データ記憶装置、及びデータ記憶方法
US8949689B2 (en) * 2012-06-11 2015-02-03 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US8898548B1 (en) * 2012-08-24 2014-11-25 Western Digital Technologies, Inc. Methods, data storage devices and systems having variable size ECC page size
KR102261817B1 (ko) * 2014-12-15 2021-06-07 삼성전자주식회사 다수의 레이어들을 포함하는 저항성 메모리 장치, 저항성 메모리 시스템 및 저항성 메모리 시스템의 동작방법
US20180089088A1 (en) * 2016-09-27 2018-03-29 Intel Corporation Apparatus and method for persisting blocks of data and metadata in a non-volatile memory (nvm) cache
US10445001B2 (en) * 2017-01-10 2019-10-15 Winbond Electronics Corporation Memory control scheme for flash memory devices
CN108549610B (zh) * 2018-03-27 2021-02-23 深圳忆联信息系统有限公司 一种NVMe扩展的实现方法及固态硬盘
CN110209355A (zh) * 2019-05-28 2019-09-06 深圳忆联信息系统有限公司 基于固态硬盘的全固件读写操作优化方法和装置
US10884847B1 (en) * 2019-08-20 2021-01-05 Advantest Corporation Fast parallel CRC determination to support SSD testing
US12019910B2 (en) * 2020-08-06 2024-06-25 Sk Hynix Nand Product Solutions Corp. SSD managed host write atomicity with arbitrary transfer length

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103677670A (zh) * 2013-12-11 2014-03-26 华为技术有限公司 读数据的方法及装置
CN107632942A (zh) * 2017-08-29 2018-01-26 记忆科技(深圳)有限公司 一种固态硬盘实现lba级别trim命令的方法
CN110737395A (zh) * 2018-07-20 2020-01-31 伊姆西Ip控股有限责任公司 I/o管理方法、电子设备和计算机可读存储介质

Also Published As

Publication number Publication date
CN112230855A (zh) 2021-01-15
US20220156142A1 (en) 2022-05-19
US11500721B2 (en) 2022-11-15

Similar Documents

Publication Publication Date Title
TWI483111B (zh) 資料儲存方法、記憶體控制器與記憶體儲存裝置
TWI467581B (zh) 複合式儲存裝置及其複合式儲存媒體控制器與定址方法
TWI423024B (zh) 用於快閃記憶體的資料儲存方法及其控制器與儲存系統
TWI480733B (zh) 資料寫入方法、記憶體控制器與記憶體儲存裝置
TWI443512B (zh) 區塊管理方法、記憶體控制器與記憶體儲存裝置
TWI551991B (zh) 記憶體管理方法與系統及其記憶體儲存裝置
US8589619B2 (en) Data writing method, memory controller, and memory storage apparatus
TWI490871B (zh) 防止讀取干擾的方法、記憶體控制電路單元與記憶體儲存裝置
TWI479314B (zh) 系統資料儲存方法、記憶體控制器與記憶體儲存裝置
TWI470431B (zh) 資料寫入方法、記憶體控制器與記憶體儲存裝置
CN109582216B (zh) 数据储存装置与存储器装置的数据处理方法
TWI479505B (zh) 資料管理方法、記憶體控制器與記憶體儲存裝置
TWI420308B (zh) 區塊管理方法、記憶體控制器與記憶體儲存裝置
TWI554886B (zh) 資料保護方法、記憶體控制電路單元及記憶體儲存裝置
TWI459198B (zh) 記憶體儲存裝置、其記憶體控制器與有效資料識別方法
TWI421870B (zh) 用於快閃記憶體的資料寫入方法及其控制器與儲存系統
CN102890655B (zh) 存储器储存装置、其存储器控制器与有效数据识别方法
CN101944386A (zh) 识别闪速存储器中错误数据的控制电路及存储系统与方法
TWI404071B (zh) 能識別快閃記憶體中錯誤資料的控制電路及儲存系統與方法
TWI509615B (zh) 資料儲存方法、記憶體控制器與記憶體儲存裝置
CN113220221B (zh) 存储器控制器与数据处理方法
US8966161B2 (en) Memory storage device and restoring method thereof
US9213597B2 (en) Memory storage device, memory controller thereof, and method for programming data thereof
TWI451247B (zh) 資料寫入方法、記憶體控制器與記憶體儲存裝置
CN112230855B (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: Room 601-606, No. 40, Lane 565, Shengxia Road, China (Shanghai) Pilot Free Trade Zone, Pudong New Area, Shanghai, 201210 (nominal floor 6, actual floor 5)

Applicant after: Yingren Technology Co.,Ltd.

Address before: 2 / F, No.1, Lane 500, shengxia Road, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai 201210

Applicant before: Yingren Technology (Shanghai) Co.,Ltd.

GR01 Patent grant
GR01 Patent grant