CN104503707B - 读取数据的方法以及装置 - Google Patents
读取数据的方法以及装置 Download PDFInfo
- Publication number
- CN104503707B CN104503707B CN201410817949.0A CN201410817949A CN104503707B CN 104503707 B CN104503707 B CN 104503707B CN 201410817949 A CN201410817949 A CN 201410817949A CN 104503707 B CN104503707 B CN 104503707B
- Authority
- CN
- China
- Prior art keywords
- data
- address
- page
- write
- destination address
- 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
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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/251—Local memory within processor subsystem
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/602—Details relating to cache prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
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)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请公开了一种读取数据的方法以及装置,其中,所述方法包括:在接收到包括读取目标地址的读指令时,判断预设缓存区中是否缓存有所述读取目标地址指向的数据;如果有,则根据第一映射关系查找到所述读取目标地址对应的缓存地址,并在所述预设缓存区中读取所述缓存地址指向的数据,其中,所述第一映射关系用于记录所述目标地址与所述缓存地址之间的对应关系;如果没有,则从非易失性存储空间中读取所述读取目标地址指向的数据。通过上述方式,能够降低由于写干扰而导致的读数据出错。
Description
技术领域
本申请涉及存储领域,特别是涉及一种读取数据的方法以及装置。
背景技术
目前,固态硬盘(英文:Solid State Drive,简称:SSD)上用于存储的每个浮栅晶体管均可以存储2个或3个比特(英文:bit),而每个浮栅晶体管上存储的bit是分别分布在不同的页(英文:page)中的,使得每个block中的page按照在浮栅晶体管的存储位置分为不同的2或3类。
以多阶单元储存(英文:Multi Level Cell,简称:MLC)为例,其浮栅晶体管的2个bit分别称为最低有效位(英文:Least Significant Bit,简称:LSB)和最高有效位(英文:Most Significant Bit,简称:MSB),故将每个block中分别分布在浮栅晶体管不同bit的page分为两类:LSB page(存在浮栅晶体管的LSB上,LSB page也可称为lower page,本申请均统一为LSB page)和MSB page(存在浮栅晶体管的MSB上,MSB page也可称为upper page,本申请均统一为MSB page)。基于LSB page和MSB page对应bit的数据存储在同一个浮栅晶体管,故LSB page和MSB page属于一组共享页(英文:shared pages),具体某厂家MLC的一个block的共享页如下表1:
LSB page | MSB page | LSB page | MSB page |
0 | 2 | …… | …… |
1 | 4 | 241 | 244 |
3 | 6 | 243 | 246 |
5 | 8 | 245 | 248 |
7 | 10 | 247 | 250 |
9 | 12 | 249 | 252 |
11 | 14 | 251 | 254 |
…… | …… | 253 | 255 |
由于在写入数据的时候是要求必须先写LSB再写MSB的,故需写完整个LSB page才能写入对应的MSB page。而在写入MSB page的过程中,会对先写入的LSB page的数据造成干扰。以上面提供的某厂家MLC为例,根据实验得到在写入数据时的干扰数据如下表2:
Page | Page0 | Page1 | Page2 | Page3 | Page4 | Page5 | Page6 | Page7 | Page8 |
Page0 | 0 | 0 | 125 | 105 | 5 | 3 | 4 | 6 | 3 |
Page1 | 2 | 1 | 1 | 50 | 35 | 8 | 9 | 6 | |
Page2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
Page3 | 0 | 0 | 0 | 296 | 193 | 25 | |||
Page4 | 17 | 15 | 14 | 15 | 16 | ||||
Page5 | 0 | 0 | 0 | 270 | |||||
Page6 | 0 | 0 | 0 | ||||||
Page7 | 1 | 0 | |||||||
Page8 | 0 |
表2
上表2表示写入横向的page时,对竖向的page的干扰情况。由上表2可知,在写入MSB page时,其共享页LSB page以及邻近的MSB page的共享页LSB page会出现较严重的错误检查和纠正(英文:“Error Correcting Code,简称:ECC)或不可纠正的ECC错误(英文:Uncorrectable ECC Error,简称:UNC),如表2中下划线部分为较严重的出错数。
同理,对于浮栅晶体管存储更多bit的存储设备,如3bit的存储设备,即一组共享页包括LAB page、中间有效位页(英文:middle significant bit,简称:CSB)page和MSBpage,在写高位的page时,对低位的page也会存在写干扰。
故,如果在低位的page存在写干扰时读取该低位page的数据,则会出现读数据出错。针对该问题,现有常用方式即为提高SSD的ECC纠错能力,以使存储设备的控制器在读取到存在写干扰的page的数据时,通过ECC纠正读数据的错误。然而提高ECC的纠错能力需要控制器的支持,且在存储设备提供用于做ECC的spare area空间一定的情况下,很难再进一步提升ECC纠错能力,故在读数据时仍出现由于写干扰而导致的读出错。
发明内容
本申请提供一种读取数据的方法以及装置,能够降低由于写干扰而导致的读数据出错。
本申请第一方面提供一种读取数据的方法,包括:在接收到包括读取目标地址的读指令时,判断预设缓存区中是否缓存有所述读取目标地址指向的数据;如果有,则根据第一映射关系查找到所述读取目标地址对应的缓存地址,并在所述预设缓存区中读取所述缓存地址指向的数据,其中,所述第一映射关系用于记录所述目标地址与所述缓存地址之间的对应关系;如果没有,则从非易失性存储空间中读取所述读取目标地址指向的数据。
结合第一方面,在第一方面的第一种可能实施方式中,还包括:在接收到写指令时,判断所述写指令中的写入目标地址是否属于非易失性存储空间中的最高有效位页MSBpage,其中,所述写指令包括需写入数据和所述写入目标地址;如果不属于,则将所述需写入数据存储到所述预设缓存区和所述写入目标地址对应的非易失性存储空间中,并建立所述缓存地址与所述目标地址之间的所述第一映射关系;如果属于,则将所述需写入数据存储到所述写入目标地址对应的非易失性存储空间中。
结合第一方面的第一种可能实施方式,在第一方面的第二种可能实施方式中,还包括:获取所述非易失性存储空间的所有共享页组中MSB page与LSB page之间的最大相差页数为m,所述m为自然数;为所述预设缓存区分配至少n*p+m个page大小的缓存空间,其中,所述p表示所述非易失性存储空间的MSB page的共享页数,所述n为自然数,至少为1。
结合第一方面的第二种可能实施方式,在第一方面的第三种可能实施方式中,还包括:如果所述写入目标地址属于所述非易失性存储空间中的MSB page,则判断所述写入目标地址所在的MSB page是否为块block中的最后一个MSB page;如果不是,则获取以所述写入目标地址所在的MSB page为始点向前第n个MSB page的共享页的地址,并作为释放数据地址;如果是,则获取所述block中最后n+1个MSB page的共享页的地址,作为所述释放数据地址;将所述预设缓存区中与所述释放数据地址具有第一映射关系的缓存地址指向的数据释放,并删除所述第一映射关系中的所述释放数据地址。
结合第一方面或者第一方面的第一种至第三种可能实施方式,在第一方面的第四种可能实施方式中,还包括:在掉电时,将所述预设缓存区中的数据另保存在所述非易失性存储空间中,并建立所述缓存地址与所述非易失性存储空间的另保存地址之间的第二映射关系;在上电时,根据所述第二映射关系,将所述非易失性存储空间的另保存地址指向的数据缓存至所述预设缓存区的所述缓存地址上。
结合第一方面或者第一方面的第一种至第三种可能实施方式,在第一方面的第五种可能实施方式中,所述预设缓存区位于双倍速率同步动态随机存储器DDR或者静态随机存取存储器SRAM中。
结合第一方面或者第一方面的第一种至第三种可能实施方式,在第一方面的第六种可能实施方式中,所述非易失性存储空间为固态硬盘SSD的存储空间。
本申请第二方面提供一种读取数据的装置,包括第一判断模块、第一读取模块和第二读取模块;所述第一判断模块用于在接收到包括读取目标地址的读指令时,判断预设缓存区中是否缓存有所述读取目标地址指向的数据,并将第一判断结果发送到第一、第二读取模块;所述第一读取模块用于在预设缓存区中缓存有所述读取目标地址指向的数据时,根据第一映射关系查找到与所述读取目标地址对应的缓存地址,并在所述预设缓存区中读取所述缓存地址指向的数据,其中,所述第一映射关系用于记录所述目标地址与所述缓存地址之间的对应关系;所述第二读取模块用于在预设缓存区中没有缓存所述读取目标地址指向的数据时,从所述非易失性存储空间中读取所述读取目标地址指向的数据。
结合第二方面,在第二方面的第一种可能实施方式中,还包括第二判断模块、第一写入模块、第二写入模块,所述第二判断模块用于在接收到写指令时,判断所述写指令中的写入目标地址是否属于非易失性存储空间中的最高有效位页MSB page,并将第二判断结果发送给第一、第二写入模块,其中,所述写指令包括需写入数据和所述写入目标地址;所述第一写入模块用于在判断所述写入目标地址不属于非易失性存储空间的MSB page时,将所述需写入数据存储到所述预设缓存区和所述写入目标地址对应的非易失性存储空间中,并建立所述缓存地址与所述目标地址之间的所述第一映射关系;所述第二写入模块用于在判断所述写入目标地址属于非易失性存储空间的MSB page时,将所述需写入数据存储到所述写入目标地址对应的非易失性存储空间中。
结合第二方面的第一种可能实施方式,在第二方面的第二种可能实施方式中,还包括第三获取模块和分配模块;所述第三获取模块用于获取所述非易失性存储空间的所有共享页组中MSB page与LSB page之间的最大相差页数为m,并将所述m发送给所述分配模块,所述m为自然数;所述分配模块用于为所述预设缓存区分配至少n*p+m个page大小的缓存空间,其中,所述p表示所述非易失性存储空间的MSB page的共享页数,所述n为自然数,至少为1。
结合第二方面的第二种可能实施方式,在第二方面的第三种可能实施方式中,还包括第三判断模块、第一获取模块、第二获取模块和释放模块;所述第三判断模块用于在所述写入目标地址属于所述非易失性存储空间中的MSB page时,判断所述写入目标地址所在的MSB page是否为块block中的最后一个MSB page,并将第三判断结果发送给第一、第二获取模块;所述第一获取模块用于在所述写入目标地址所在的MSB page不为block中的最后一个MSB page时,获取以所述写入目标地址所在的MSB page为始点向前第n个MSB page的共享页的地址,并作为释放数据地址,将所述释放数据地址发送给所述释放模块;所述第二获取模块用于在所述写入目标地址所在的MSB page为block中的最后一个MSB page时,获取所述block中最后n+1个MSB page的共享页的地址,作为所述释放数据地址,将所述释放数据地址发送给所述释放模块;所述释放模块用于将所述预设缓存区中与所述释放数据地址具有第一映射关系的缓存地址指向的数据释放,并删除所述第一映射关系中的所述释放数据地址。
结合第二方面或者第二方面的第一至第三种可能实施方式,在第二方面的第四种可能实施方式中,还包括保存模块和缓存模块;所述保存模块用于在掉电时,将所述预设缓存区中的数据另保存在所述非易失性存储空间中,并建立所述缓存地址与所述非易失性存储空间的另保存地址之间的第二映射关系,将所述第二映射关系发送给所述缓存模块;所述缓存模块用于在上电时,根据所述第二映射关系,将所述非易失性存储空间的另保存地址指向的数据缓存至所述预设缓存区的所述缓存地址上。
结合第二方面或者第二方面的第一至第三种可能实施方式,在第二方面的第五种可能实施方式中,所述预设缓存区位于双倍速率同步动态随机存储器DDR或者静态随机存取存储器SRAM中。
结合第二方面或者第二方面的第一至第三种可能实施方式,在第二方面的第六种可能实施方式中,所述非易失性存储空间为固态硬盘SSD的存储空间。
上述方案中,采用缓存数据优先读取的方式,在预设缓存区缓存有读取目标地址指向的数据时,优先从预设缓存区中读取数据,由于缓存区中的数据不存在非易失性存储空间的写干扰,故降低了由于写干扰导致的读出错,提高了存储设备的可靠性。
附图说明
图1是本申请读取数据的方法一实施方式的流程图;
图2是本申请读取数据的方法另一实施方式的部分流程图;
图3是本申请读取数据的方法再一实施方式的流程图;
图4是本申请读取数据的方法又再一实施方式的部分流程图;
图5是本申请读取数据的装置一实施方式的结构示意图;
图6是本申请读取数据的装置另一实施方式的结构示意图
图7是本申请控制器一实施方式的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、接口、技术之类的具体细节,以便透彻理解本申请。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施方式中也可以实现本申请。在其它情况中,省略对众所周知的装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
请参阅图1,图1是本申请读取数据的方法一实施方式的流程图。本实施方式的方法由存储设备的控制器执行,本申请的存储设备可以为浮栅晶体管可存储2bit以上的任意非易失性存储设备,如MLC类型(每个浮栅晶体管存储2bit)、TLC(全称:Trinary-LevelCell)类型(每个浮栅晶体管存储3bit)的SSD。存储设备包括非易失性存储空间,所述非易失性存储空间即为浮栅晶体管存储的空间,具体如SSD的存储矩阵。存储设备的非易失性存储空间包括多组共享页组,例如,MLC类型的存储设备的非易失性存储空间包括多组共享页组,每组共享页组包括MSB page和LSB page;TLC类型的存储设备的非易失性存储空间包括多组共享页组,每组共享页组包括MSB page、CSB page和LSB page。
具体地,本实施方式的所述方法包括:
101:存储设备的控制器在接收到包括读取目标地址的读指令时,判断预设缓存区中是否缓存有所述读取目标地址指向的数据。
如背景技术中所述,当将数据写入存储设备的非易失性存储空间的MSB page中时,会对其共享页即如对应的LSB page、CSB page产生写干扰,从而可能导致读数据出错。为避免由于写入MSB page时所带来写干扰,本申请采用对会受到上述写干扰影响的数据进行缓存备份,并在读取该类数据时,优先考虑预设缓存区中读取的方式。
具体如,将写入数据时,存储设备的控制器将存储设备的会受到上述写干扰的数据同时存储在预设缓存区和非易失性存储空间,且建立缓存地址与非易失性存储空间的地址之间的第一映射关系。当存储设备的控制器从SATA/SAS/PCIe接口接收到主机发送的读指令时,该读指令包括读取目标地址,以指示控制器从非易失性存储空间中读取所述读取目标地址指向的数据。控制器查找是否存在读取目标地址的第一映射关系,如果存在,则判断为预设缓存区中缓存有读取目标地址指向的数据,并执行102;如果不存在,则判断为预设缓存区中没有缓存读取目标地址指向的数据,并执行103。
可以理解的是,存储设备的控制器未必通过第一映射关系判断读取的数据是否有缓存。在其他实施方式中,控制器还可以另外建立记录该地址上的数据是否缓存的标识,在读数据时,通过读取该地址的标识判断该目标读地址上的数据是否缓存。故在此对如何判断读取的数据是否缓存的方式不作具体限定。
另外,存储设备的控制器在接收到读指令时,还可先判断所述读取目标地址指向的数据是否属于会受到写干扰的数据,例如判断所述读取目标地址是否属于MSB page,如果不属于,则所述读取目标地址指向的数据属于会受到写干扰的数据,即判断所述预设缓存区中是否缓存有所述读取目标地址指向的数据。
102:存储设备的控制器根据第一映射关系查找到所述读取目标地址对应的缓存地址,并在所述预设缓存区中读取所述缓存地址指向的数据,其中,所述第一映射关系用于记录所述目标地址与所述缓存地址之间的对应关系。
根据优选读取缓存的原则,如果判断预设缓存区缓存有读取目标地址指向的数据,则存储设备的控制器根据保存的第一映射关系,查找到与读取目标地址对应的缓存地址,并在预设缓存区中读取该缓存地址上的数据,以实现读数据,由于缓存区中的数据不存在存储矩阵的写干扰情况,故从缓存区中读取数据保证读数据的正确性。
103:存储设备的控制器从所述非易失性存储空间中读取所述读取目标地址指向的数据。
如果判断预设缓存区没有缓存读取目标地址指向的数据,则存储设备的控制器按照正常读取方式,从非易失性存储空间中读取所述读取目标地址上的数据,以实现读数据。
本实施方式采用缓存数据优先读取的方式,在预设缓存区缓存有读取目标地址指向的数据时,优先从预设缓存区中读取数据,由于缓存区中的数据不存在非易失性存储空间的写干扰,故降低了由于写干扰导致的读出错,提高了存储设备的可靠性。
请参阅图2,图2是本申请读取数据的方法另一实施方式的部分流程图。本实施方式中,存储设备的控制器在执行上一实施方式的方法步骤之前,还执行:
201:存储设备的控制器在接收到写指令时,判断所述写指令中的写入目标地址是否属于非易失性存储空间中的MSB page,其中,所述写指令包括需写入数据和所述写入目标地址。
本申请的存储设备的每个浮栅晶体管可存储2bit以上,故将存储设备的非易失性存储空间的page至少分为LSB page和MSB page两大类,当浮栅晶体管可存储3bit时,存储设备的非易失性存储空间的page还包括CSB page。
存储设备的控制器从接口如SATA/SAS/PCIe接口接收到主机发送的写指令,该写指令包括需写入数据和写入目标地址,以指示控制器将需写入数据存储到写入目标地址指向的非易失性存储空间中。控制器接收到写指令后,先判断写入目标地址是否属于该非易失性存储空间的MSB page,如果不属于,则执行202,如果属于,则执行203。
202:存储设备的控制器将所述需写入数据存储到预设缓存区和所述写入目标地址对应的非易失性存储空间中,并建立所述缓存地址与所述写入目标地址之间的第一映射关系。
如背景技术中所述,当将数据写入存储设备的非易失性存储空间的MSB page中时,会对其共享页即如对应的LSB page、CSB page产生写干扰,从而可能导致读数据出错。故,控制器在判断写入目标地址不属于MSB page时,即表示该需写入数据在后续的MSBpage写入数据时可能会受到写干扰,故将该需写入数据存储到写入目标地址指向的非易失性存储空间中,并且缓存到预设缓存区作为备份。其中,该预设缓存区可以为存储设备中的双倍速率同步动态随机存储器(英文:Double Data Rate,简称:DDR)。例如,对于常规的SSD,其内部本身设置有DDR,无论写数据还是读数据,数据均会经过DDR。基于此种存储方式,可优选将预设缓存区设置在DDR上,即在DDR中开放一定缓存空间作为预设缓存区。当然,该预设缓存区还可以为除该非易失性存储空间之外的其他存储器,如静态随机存取存储器(英文:Static Random-Access Memory,简称:SRAM)。
在上述写入完成后,控制器获取该需写入数据缓存在预设缓存区中的缓存地址,并建立缓存地址和写入目标地址之间的第一映射关系,以便于将预设缓存区中的数据与非易失性存储空间中的数据对应起来。该第一映射关系可以以表格方式保存在存储设备的非易失性存储空间中或者预设缓存区中。
203:存储设备的控制器将所述需写入数据存储到所述写入目标地址对应的非易失性存储空间中。
由于非易失性存储空间的MSB page不存在写干扰,故当控制器判断需写入数据属于非易失性存储空间的MSB page时,则无需将所述需写入数据缓存备份,直接根据写入目标地址将数据存储到非易失性存储空间中。
存储设备的控制器在执行上述201-203后,再执行图1所示的101-103。
本实施方式将可能受到MSB page写干扰而导致读出错的数据均作缓存备份,并在读取此部分数据时优先从缓存中读取,故避免了读取数据时由于该数据当前受到写干扰而导致读出错的情况,降低了由于写干扰导致的读出错,提高了存储设备的可靠性。
请参阅图3,图3是本申请读取数据的方法再一实施方式的流程图。具体,该方法包括:
301:存储设备的控制器获取所述非易失性存储空间的所有共享页组中MSB page与LSB page之间的最大相差页数为m,所述m为自然数。
不同厂商的存储设备的共享页是不同的,如背景技术的表1所示的存储设备,其每个block中的第一组共享页为page0—page2,即该MSB page与LSB page之间相差2page,第二组共享页为page1—page4,即该MSB page与LSB page之间相差3page,遍历存储设备一个block的所有共享页组发现MSB page与对应LSB page之间相差的页数均为2或者3,故存储设备所有共享页组中的MSB page与LSB page之间的最大相差页数为3。
302:存储设备的控制器为所述预设缓存区分配至少n*p+m个page大小的缓存空间,其中,所述p表示所述非易失性存储空间的MSB page的共享页数,所述n为自然数,至少为1。
为了尽量降低对缓存空间的占用量,本实施方式动态释放不再受到写干扰的数据的缓存。预设缓存区所需的缓存空间大小即与存储设备的所有共享页组中的MSB page与LSB page之间的最大相差页数m、以及动态释放规则相关。存储设备的非易失性存储空间的共享页组中的MSB page与LSB page之间的最大相差m页,即表示要想保证在写完MSB page前,该MSB page的共享页(如其对应的LSB page、CSB page)能缓存在预设缓存区中以避免受到MSB page写干扰导致读出错,预设缓存区起码需要m个page的缓存空间。同时,本申请的动态释放规则为写入某一MSB page时,至少保证所述MSB page之前的n个MAB page的共享页(如其对应的LSB page、CSB page)能缓存预设缓存区中。根据实验数据,n至少为1即可基本保证当前写干扰较严重的数据均保存在缓存中。
根据上述缓存空间大小规定原则和存储设备的非易失性存储空间的共享页组的设置规则,为保证当前写干扰较严重的数据均保存在缓存中,存储设备的控制器为预设缓存区分配至少m+n*p个page的缓存空间,例如分配m+n*p个page的缓存空间。所述p表示所述存储设备的非易失性存储空间的MSB page的共享页数,例如对于MLC类型的存储设备,其一组共享页包括MSB page、LSB page,故该存储设备的非易失性存储空间的MSB page的共享页数为1,即为LSB page。对于TLC类型的存储设备,其一组共享页包括MSB page、CSB page以及LSB page,故该存储设备的非易失性存储空间的MSB page的共享页数为2,包括CSBpage以及LSB page。
303:存储设备的控制器在接收到写指令时,判断所述写指令中的写入目标地址是否属于非易失性存储空间中的MSB page,其中,所述写指令包括需写入数据和所述写入目标地址。
控制器接收到写指令后,先判断写入目标地址是否属于该存储设备的非易失性存储空间的MSB page,如果不属于,则执行304,如果属于,则执行305。
304:存储设备的控制器将所述需写入数据存储到所述预设缓存区和所述写入目标地址对应的非易失性存储空间中,并建立所述缓存地址与所述目标地址之间的所述第一映射关系。
305:存储设备的控制器将所述需写入数据存储到所述写入目标地址对应的非易失性存储空间中,并判断所述写入目标地址所在的MSB page是否为block中的最后一个MSBpage。
如果所述写入目标地址属于所述非易失性存储空间中的MSB page,则存储设备的控制器只将所述需写入数据存储到所述写入目标地址指向的非易失性存储空间中,并且判断写入目标地址所在的MSB page是否为block中的最后一个MSB page,如表1所示的block的最后一个MSB page即为page255,如果判断写入目标地址不属于page255,则执行306,如果判断写入目标地址属于page255,则执行307。
306:存储设备的控制器获取以所述写入目标地址所在的MSB page为始点向前第n个MSB page的共享页的地址,并作为释放数据地址。
本实施方式采用动态释放缓存的方式,具体规则为写入MSB page时,至少保证n个MSB page的共享页(如其对应的LSB page、CSB page)能缓存预设缓存区中。在根据背景技术中表2所示的MLC类型存储设备为例,由表2可知,LSB page从其对应的MSB page写入到下一个MSB page开始写入之间的过程中所受到的写干扰比较严重,n的最小值为1,才能保证当前写干扰较严重的数据均保存在缓存中。但为进一步降低读干扰,优选n至少为2,即当某一MSB page后面的至少2个MSB page写完数据后,才删除该MSB page对应的LSB page。
具体,继续以背景技术中的表1所述的存储设备为例,假如当前写入目标地址属于page6,为MSB page,且不属于最后一个MSB page,故控制器以page6为始点,向前第1个MSBpage为page4,向前第2个MSB page为page2。如果n为1,即将page4的共享页即page1视为在page6写入数据后则不再产生写干扰,故获取page1的地址作为释放数据地址,以将page1对应在预设缓存区的缓存释放。根据上述动态释放缓存的方式,当写入page2时,不释放缓存区中的数据;当写入page4,释放缓存区中的page0;当写入page6,释放缓存区中的page1;当写入page8,释放缓存区中的page3……依次类推,即实现在上表2的黑体部分数据显示的写干扰消除前,均能够从缓存中读取到正确数据。
浮栅晶体管存储多于2bit的存储设备同理,即获取以写入目标地址所在的MSBpage为始点向前第n个MSB page的共享页(如浮栅晶体管存储3bit,则包括对应的LSB page和CBS page)的地址,作为释放数据地址。
307:存储设备的控制器获取所述block中最后n+1个MSB page的共享页的地址,作为所述释放数据地址。
如果写入目标地址所在的MSB page为block的最后一个MSB page,即表示该block的所有page的写干扰消除,故可将该block的所有数据缓存释放,根据上述306的释放缓存规则,当写到最后一个MSB page的时候,block中还剩余最后n+1个MSB page的共享页的数据缓存在预设缓存区中,其中,所述n为自然数,至少为1。故控制器获取block中最后n+1个MSB page的共享页(如果浮栅晶体管存储2bit,即为LSB page;如果浮栅晶体管存储3bit,即包括LSB page和CSB page)的地址,作为所述释放数据地址。
308:存储设备的控制器将预设缓存区中与所述释放数据地址具有第一映射关系的缓存地址指向的数据释放,并删除所述第一映射关系中的所述释放数据地址。
存储设备的控制器根据第一映射关系,获取与所述释放数据地址具有第一映射关系的缓存地址,并释放该缓存地址上的数据释放,实现在保证当前严重受到写干扰的数据保持缓存的前提下进行动态释放缓存。由于该缓存已经释放,故删除第一映射关系中的该释放数据地址与该缓存地址。
309:存储设备的控制器在接收到包括读取目标地址的读指令时,判断预设缓存区中是否缓存有所述读取目标地址指向的数据。如果有缓存,则执行310,如果没有缓存,则执行311。
310:存储设备的控制器根据第一映射关系查找到所述读取目标地址对应的缓存地址,并在所述预设缓存区中读取所述缓存地址指向的数据。
311:存储设备的控制器从所述非易失性存储空间中读取所述读取目标地址指向的数据。
由于本实施方式将可能受到MSB page写干扰而导致读出错的数据均作缓存备份,并在读取此部分数据时优先从缓存中读取,故避免了读取数据时由于该数据当前受到写干扰而导致读出错的情况,大大降低了由于写干扰导致读出错的概率。而且,本实施方式针对存储设备在写入MSB page时只会对其共享页以及其前面相邻的MSB page的共享页产生写干扰,故采用动态释放缓存的方式,以减小所需缓存空间。同时,本申请根据存储设备的共享页组的最大相差页数m分配缓存空间,以兼容不同厂商的存储设备。
请参阅图4,图4是本申请读取数据的方法又再一实施方式的部分流程图。本实施方式的方法除包括上面实施方式的步骤外,还包括:
401:在掉电时,存储设备的控制器将预设缓存区中的数据另保存在所述非易失性存储空间中,并建立所述缓存地址与所述非易失性存储空间的另保存地址之间的第二映射关系。
由于在存储设备掉电后,预设缓存区中的数据会丢失。为保证下次上电后仍能对非易失性存储空间中的数据的正确读取,在掉电时,控制器将预设缓存区中的数据另保存在非易失性存储空间,并且建立预设缓存区中的缓存地址和在非易失性存储空间中的另保存地址之间的第二映射关系,使得能够将预设缓存区的之前缓存的数据与非易失性存储设备另保存的数据对应起来。
402:在上电时,存储设备的控制器根据所述第二映射关系,将所述非易失性存储空间的另保存地址指向的数据缓存至所述预设缓存区的所述缓存地址上。
在重新上电后,存储设备的控制器获取第二映射关系中的非易失性存储空间的另保存地址,并将该另保存地址上的数据对应缓存在与该另保存地址具有第二映射关系的缓存地址上,以将预设缓存区掉电前缓存的数据按照原来缓存地址重新缓存,使得在需要读取有缓存的非易失性存储空间的数据时,能够按照之前建立的第一映射关系读取对应的缓存数据,实现正确的读数据。
请参阅图5,图5是本申请读取数据的装置一实施方式的结构示意图。本实施方式中,读取数据的装置500具体可以为存储设备的控制器,所述存储设备可以为浮栅晶体管可存储2bit以上的任意非易失性存储设备,如MLC类型、TLC类型的SSD。所述读取数据的装置500包括第一判断模块510、第一读取模块520、第二读取模块530,该读取数据的装置500与预设缓存区570和非易失性存储空间580连接。
第一判断模块510用于在接收到包括读取目标地址的读指令时,判断预设缓存区570中是否缓存有所述读取目标地址指向的数据,并将第一判断结果发送到第一读取模块520、第二读取模块530。
为避免由于写入MSB page时所带来写干扰,本申请采用对可能受到上述写干扰影响的数据进行缓存备份,并在读取该类数据时,优先考虑预设缓存区570中读取的方式。
具体如,第一判断模块510从SATA/SAS接口接收到主机发送的读指令,该读指令包括读取目标地址,以指示从非易失性存储空间580中读取所述读取目标地址指向的数据。第一判断模块510查找是否存在读取目标地址的第一映射关系,如果存在,则判断为预设缓存区570中缓存有读取目标地址指向的数据;如果不存在,则判断为预设缓存区570中没有缓存读取目标地址指向的数据。
可以理解的是,第一判断模块510未必通过第一映射关系判断读取的数据是否有缓存。在其他实施方式中,第一判断模块510还可以另外建立记录该地址上的数据是否缓存的标识,在读数据时,通过读取该地址的标识判断该读取目标地址上的数据是否缓存。故在此对如何判断读取的数据是否与缓存的方式不作具体限定。
另外,第一判断模块510在接收到读指令时,还可先判断所述读取目标地址指向的数据是否属于会受到写干扰的数据,例如判断所述读取目标地址是否属于MSB page,如果不属于,再判断所述预设缓存区570中是否缓存有所述读取目标地址指向的数据。
第一读取模块520用于在预设缓存区中缓存有所述读取目标地址指向的数据时,根据第一映射关系查找到与所述读取目标地址对应的缓存地址,并在所述预设缓存区570中读取所述缓存地址指向的数据,其中,所述第一映射关系用于记录所述目标地址与所述缓存地址之间的对应关系。
根据优选读取缓存的原则,在第一判断模块510判断预设缓存区570缓存有读取目标地址指向的数据时,第一读取模块520根据保存的第一映射关系,获取与读取目标地址对应的缓存地址,并在预设缓存区570中读取该缓存地址上的数据,以实现读数据,由于缓存区中的数据不会如存储矩阵中的数据那样受到写干扰,故从缓存区中读取数据保证读数据的正确性。
第二读取模块530用于在预设缓存区570中没有缓存所述读取目标地址指向的数据时,从所述非易失性存储空间580中读取所述读取目标地址指向的数据。
在第一判断模块510判断预设缓存区570没有缓存读取目标地址指向的数据时,第二读取模块530按照正常读取方式,从非易失性存储空间580中读取所述读取目标地址上的数据,以实现读数据。
可选地,本实施方式的读取数据的装置500还可包括第二判断模块540、第一写入模块550和第二写入模块560。
第二判断模块540用于在接收到写指令时,判断所述写指令中的写入目标地址是否属于非易失性存储空间中的MSB page,并将第二判断结果发送给第一写入模块550、第二写入模块560,其中,所述写指令包括需写入数据和所述写入目标地址。
第二判断模块540从接口如SATA/SAS/PCIe接口接收到主机发送的写指令,该写指令包括需写入数据和写入目标地址,以指示将需写入数据存储到写入目标地址指向的非易失性存储空间580(如存储设备的存储矩阵)中。第二判断模块540接收到写指令后,先判断写入目标地址是否属于该存储设备的非易失性存储空间的MSB page。
第一写入模块550用于在判断所述写入目标地址不属于非易失性存储空间中的MSB page时,将所述需写入数据存储到预设缓存区570和存储到所述写入目标地址对应的非易失性存储空间580中,并建立所述缓存地址与所述写入目标地址之间的第一映射关系。
第一写入模块550在第二判断模块540判断写入目标地址不属于MSB page时,即表示该需写入数据在在后续的MSB page写入数据时可能会受到写干扰,故将该需写入数据存储到写入目标地址指向的非易失性存储空间580中,并且缓存到预设缓存区作为备份。其中,该预设缓存区570可以为存储设备中的DDR或者SRAM。
在上述写入完成后,第一写入模块550获取该需写入数据缓存在预设缓存区570中的缓存地址,并建立缓存地址和写入目标地址之间的第一映射关系,以便于将预设缓存区570中的数据与非易失性存储空间580中的数据对应起来。该第一映射关系可以以表格方式保存在存储设备的非易失性存储空间580中或者预设缓存区570中。
第二写入模块560用于在判断所述写入目标地址属于非易失性存储空间中的MSBpage时,将所述需写入数据存储到所述写入目标地址对应的非易失性存储空间580中。
由于非易失性存储空间的MSB page不存在写干扰,故当第二判断模块540判断需写入数据属于非易失性存储空间的MSB page时,无需将所述需写入数据缓存备份,直接根据写入目标地址将数据存储到非易失性存储空间580中。
由于本实施方式将可能受到MSB page写干扰而导致读出错的数据均作缓存备份,并在读取此部分数据时优先从缓存中读取,故避免了读取数据时由于该数据当前受到写干扰而导致读出错的情况,大大降低了由于写干扰导致读出错的概率,提高了存储设备的可靠性。
请参阅图6,图6是本申请读取数据的装置一实施方式的结构示意图。具体,除了上一实施方式所包括的模块之外(其中,图5中的模块若在本实施方式下面描述中没有提及则不在图6中示出,但这并不表示本实施方式的读取数据的装置不包括该模块),该读取数据的装置600还包括第三获取模块610、分配模块620、第三判断模块630、第一获取模块640、第二获取模块650、释放模块660、保存模块670和缓存模块680。
第三获取模块610用于获取所述非易失性存储空间的所有共享页组中MSB page与LSB page之间的最大相差页数为m,并将所述m发送给所述分配模块620,所述m为自然数。
不同厂商的存储设备的共享页是不同的,如背景技术的表1所示的存储设备,其每个block中的第一组共享页为page0—page2,即该MSB page与LSB page之间相差2page,第二组共享页为page1—page4,即该MSB page与LSB page之间相差3page,遍历存储设备一个block的所有共享页组发现MSB page与对应LSB page之间相差的页数均为2或者3,故存储设备所有共享页组中的MSB page与LSB page之间的最大相差页数为3。
分配模块620用于为所述预设缓存区570分配至少n*p+m个page大小的缓存空间,其中,所述p表示所述非易失性存储空间的MSB page的共享页数,所述n为自然数,至少为1。
为了尽量降低对缓存空间的占用量,本实施方式动态释放不再受到写干扰的数据的缓存。预设缓存区570所需的缓存空间大小即与存储设备的所有共享页组中的MSB page与LSB page之间的最大相差页数m、以及动态释放规则相关。
根据上述缓存空间大小规定原则和存储设备的非易失性存储空间的共享页组的设置规则,为保证当前写干扰较严重的数据均保存在缓存中,分配模块620为预设缓存区分配至少m+n*p个page的缓存空间,例如分配m+n*p个page的缓存空间。所述p表示所述存储设备的非易失性存储空间的MSB page的共享页数,例如对于MLC类型的存储设备,其一组共享页包括MSB page、LSB page,故该存储设备的非易失性存储空间的MSB page的共享页数为1,即为LSB page。对于TLC类型的存储设备,其一组共享页包括MSB page、CSB page以及LSBpage,故该存储设备的非易失性存储空间的MSB page的共享页数为2,包括CSB page以及LSB page。
第三判断模块630用于在所述写入目标地址属于所述非易失性存储空间中的MSBpage时,判断所述写入目标地址所在的MSB page是否为块block中的最后一个MSB page,并将第三判断结果发送给第一获取模块640、第二获取模块650。
例如,在第二判断模块540判断所述写入目标地址属于所述非易失性存储空间中的MSB page时,第三判断模块630判断写入目标地址所在的MSB page是否为block中的最后一个MSB page。
第一获取模块640用于在所述写入目标地址所在的MSB page不为block中的最后一个MSB page时,获取以所述写入目标地址所在的MSB page为始点向前第n个MSB page的共享页的地址,作为所述释放数据地址,将所述释放数据地址发送给所述释放模块660。
本实施方式采用动态释放缓存的方式,具体规则为写入MSB page时,至少保证n个MSB page的共享页(如其对应的LSB page、CSB page)能缓存预设缓存区中。在根据背景技术中表2所示的MLC类型存储设备为例,由表2可知,LSB page从其对应的MSB page写入到下一个MSB page开始写入之间的过程中所受到的写干扰比较严重,n的最小值为1,才能保证当前写干扰较严重的数据均保存在缓存中。但为进一步降低读干扰,优选n至少为2,即当某一MSB page后面的至少2个MSB page写完数据后,才删除该MSB page对应的LSB page。
具体,继续以背景技术中的表1所述的存储设备为例,假如当前写入目标地址属于page6,为MSB page,且不属于最后一个MSB page,故第一获取模块640以page6为始点,向前第1个MSB page即为page4,向前第2个MSB page为page2。如果n为1,即将page4的共享页即page1在page6写入数据后则不再产生写干扰,故将page1的地址作为释放数据地址,以将page1对应在预设缓存区570的缓存释放。
浮栅晶体管存储多于2bit的存储设备同理,即获取以写入目标地址所在的MSBpage为始点向前第n个MSB page的共享页(如浮栅晶体管存储3bit,则包括对应的LSB page和CBS page)的地址,作为释放数据地址。
第二获取模块650用于在所述写入目标地址所在的MSB page为block中的最后一个MSB page时,获取所述block中最后n+1个MSB page的共享页的地址,作为所述释放数据地址,将所述释放数据地址发送给所述释放模块660。
如果写入目标地址所在的MSB page为block的最后一个MSB page,即表示该block的所有page的写干扰消除,故可将该block的所有数据缓存释放,根据上述第一获取模块640中的释放缓存规则,当写到最后一个MSB page的时候,block中还剩余最后n+1个MSBpage的共享页的数据缓存在预设缓存区中,其中,所述n为自然数,至少为1。故第二获取模块650获取block中最后n+1个MSB page的共享页(如果浮栅晶体管存储2bit,即为LSBpage;如果浮栅晶体管存储3bit,即包括LSB page和CSB page)的地址,作为所述释放数据地址。
释放模块660用于将所述预设缓存区中与所述释放数据地址具有第一映射关系的缓存地址指向的数据释放,并删除所述第一映射关系中的所述释放数据地址。
释放模块660根据第一映射关系,获取与所述释放数据地址具有第一映射关系的缓存地址,并释放该缓存地址上的数据释放,实现在保证当前严重受到写干扰的数据保持缓存的前提下进行动态释放缓存。由于该缓存已经释放,故删除第一映射关系中的该释放数据地址与该缓存地址。
保存模块670用于在掉电时,将所述预设缓存区570中的数据另保存在所述非易失性存储空间中,并建立所述缓存地址与所述非易失性存储空间的另保存地址之间的第二映射关系,将所述第二映射关系发送给所述缓存模块680。
由于在存储设备掉电后,预设缓存区570中的数据会丢失。为保证下次上电后仍能对非易失性存储空间中的数据的正确读取,在掉电时,保存模块670将预设缓存区中的数据另保存在非易失性存储空间,并且建立预设缓存区中的缓存地址和在非易失性存储空间中的另保存地址之间的第二映射关系,使得能够将预设缓存区的之前缓存的数据与非易失性存储设备另保存的数据对应起来。
缓存模块680用于在上电时,根据所述第二映射关系,将所述非易失性存储空间的另保存地址指向的数据缓存至所述预设缓存区570的所述缓存地址上。
在重新上电后,缓存模块680获取第二映射关系中的非易失性存储空间的另保存地址,并将该另保存地址上的数据对应缓存在与该另保存地址具有第二映射关系的缓存地址上,以将预设缓存区掉电前缓存的数据按照原来缓存地址重新缓存,使得在需要读取有缓存的非易失性存储空间的数据时,能够按照之前建立的第一映射关系读取对应的缓存数据,实现正确的读数据。
可以理解的是,本申请读取数据的装置限于包括本实施方式的所有模块,在不同实施方式中,读取数据的装置除包括图5所示的模块外,还可只包括第三获取模块、分配模块,或者还只包括第三判断模块、第一获取模块、第二获取模块、释放模块,或者还只包括保存模块和缓存模块,或者还包括上述三部分的模块的其中两部分的模块。
参阅图7,图7是本申请控制器一实施方式的结构示意图。本实施方式的控制器700包括接收器701、处理器702、存储器703以及总线704,控制器700与预设缓存区710和非易失性存储空间720连接。
接收器701用于接收写指令和读指令。
处理器702用于
在接收到包括读取目标地址的读指令时,判断预设缓存区710中是否缓存有所述读取目标地址指向的数据;
在预设缓存区中缓存有所述读取目标地址指向的数据时,根据第一映射关系查找到与所述读取目标地址对应的缓存地址,并在所述预设缓存区710中读取所述缓存地址指向的数据,其中,所述第一映射关系用于记录所述目标地址与所述缓存地址之间的对应关系;
在预设缓存区中没有缓存所述读取目标地址指向的数据时,从所述非易失性存储空间720中读取所述读取目标地址指向的数据。
可选地,处理器702还可用于:
在接收到写指令时,判断所述写指令中的写入目标地址是否属于非易失性存储空间720中的最高有效位页MSB page,其中,所述写指令包括需写入数据和所述写入目标地址;
在判断所述写入目标地址不属于非易失性存储空间的MSB page时,将所述需写入数据存储到所述预设缓存区710和所述写入目标地址对应的非易失性存储空间720中,并建立所述缓存地址与所述目标地址之间的所述第一映射关系;
在判断所述写入目标地址属于非易失性存储空间的MSB page时,将所述需写入数据存储到所述写入目标地址对应的非易失性存储空间720中。
可选地,处理器702还用于:
在所述写入目标地址属于所述非易失性存储空间720中的MSB page时,判断所述写入目标地址所在的MSB page是否为块block中的最后一个MSB page;
在所述写入目标地址所在的MSB page不为block中的最后一个MSB page时,获取以所述写入目标地址所在的MSB page为始点向前第n个MSB page的共享页的地址,并作为释放数据地址,所述n为自然数,至少为1;
所述第二获取模块用于在所述写入目标地址所在的MSB page为block中的最后一个MSB page时,获取所述block中最后n+1个MSB page的共享页的地址,作为所述释放数据地址,所述n为自然数,至少为1;
将所述预设缓存区710中与所述释放数据地址具有第一映射关系的缓存地址指向的数据释放,并删除所述第一映射关系中的所述释放数据地址。
可选地,处理器702还用于:
获取所述非易失性存储空间720的所有共享页组中MSB page与LSB page之间的最大相差页数为m,所述m为自然数;
为所述预设缓存区710分配至少n*p+m个page大小的缓存空间,其中,所述p表示所述非易失性存储空间720的MSB page的共享页数,所述n为自然数,至少为1。
可选地,处理器702还用于:
在掉电时,将所述预设缓存区710中的数据另保存在所述非易失性存储空间720中,并建立所述缓存地址与所述非易失性存储空间720的另保存地址之间的第二映射关系;
在上电时,根据所述第二映射关系,将所述非易失性存储空间720的另保存地址指向的数据缓存至所述预设缓存区710的所述缓存地址上。
存储器703可以包括只读存储器和随机存取存储器,并向处理器702提供指令和数据。存储器703的一部分还可以包括非易失性随机存取存储器(NVRAM)。在不同其他实施方式中,存储器703还可以与非易失性存储空间610位于同一存储介质中。
存储器703存储了如下的元素,可执行模块或者数据结构,或者它们的子集,或者它们的扩展集:
操作指令:包括各种操作指令,用于实现各种操作。
操作系统:包括各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。
在本发明实施例中,处理器702通过调用存储器703存储的操作指令(该操作指令可存储在操作系统中),来执行上述操作。
处理器702还可以称为CPU(Central Processing Unit,中央处理单元)。具体的应用中,控制器的各个组件通过总线704耦合在一起,其中总线704除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线704。
上述本发明实施例揭示的方法可以应用于处理器702中,或者由处理器702实现。处理器702可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器702中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器702可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器703,处理器702读取存储器703中的信息,结合其硬件完成上述方法的步骤。
上述方案中,通过将存储空间中由于写干扰而容易出现读数据出错的page的数据缓存到预设缓存区中,并在读取该page的数据中,选择从缓存区中读取数据,以避免读取到存储中间可能会出错的数据,降低了由于写干扰导致的读数据出错,进而提高可存储设备的可靠性。
在本申请所提供的几个实施方式中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本申请各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (10)
1.一种读取数据的方法,其特征在于,包括:
在接收到包括读取目标地址的读指令时,判断所述读取目标地址指向的数据是否属于会受到写干扰的数据,若属于,则判断预设缓存区中是否缓存有所述读取目标地址指向的数据;
如果有,则根据第一映射关系查找到所述读取目标地址对应的缓存地址,并在所述预设缓存区中读取所述缓存地址指向的数据,其中,所述第一映射关系用于记录所述目标地址与所述缓存地址之间的对应关系;
如果没有,则从非易失性存储空间中读取所述读取目标地址指向的数据;
所述方法还包括:
在接收到写指令时,判断所述写指令中的写入目标地址是否属于非易失性存储空间中的最高有效位页MSB page,其中,所述写指令包括需写入数据和所述写入目标地址;
如果不属于,则将所述需写入数据存储到所述预设缓存区和所述写入目标地址对应的非易失性存储空间中,并建立所述缓存地址与所述目标地址之间的所述第一映射关系;
如果属于,则将所述需写入数据存储到所述写入目标地址对应的非易失性存储空间中;
所述方法还包括:
获取所述非易失性存储空间的所有共享页组中MSB page与LSBpage之间的最大相差页数为m,所述m为自然数;
为所述预设缓存区分配至少n*p+m个page大小的缓存空间,其中,所述p表示所述非易失性存储空间的MSB page的共享页数,所述n为自然数,至少为1。
2.根据权利要求1所述的方法,其特征在于,还包括:
如果所述写入目标地址属于所述非易失性存储空间中的MSB page,则判断所述写入目标地址所在的MSB page是否为块block中的最后一个MSB page;
如果不是,则获取以所述写入目标地址所在的MSB page为始点向前第n个MSB page的共享页的地址,并作为释放数据地址;
如果是,则获取所述block中最后n+1个MSB page的共享页的地址,作为所述释放数据地址;
将所述预设缓存区中与所述释放数据地址具有第一映射关系的缓存地址指向的数据释放,并删除所述第一映射关系中的所述释放数据地址。
3.根据权利要求1至2任一项所述的方法,其特征在于,还包括:
在掉电时,将所述预设缓存区中的数据另保存在所述非易失性存储空间中,并建立所述缓存地址与所述非易失性存储空间的另保存地址之间的第二映射关系;
在上电时,根据所述第二映射关系,将所述非易失性存储空间的另保存地址指向的数据缓存至所述预设缓存区的所述缓存地址上。
4.根据权利要求1至2任一项所述的方法,其特征在于,所述预设缓存区位于双倍速率同步动态随机存储器DDR或者静态随机存取存储器SRAM中。
5.根据权利要求1至2任一项所述的方法,其特征在于,所述非易失性存储空间为固态硬盘SSD的存储空间。
6.一种读取数据的装置,其特征在于,包括第一判断模块、第一读取模块和第二读取模块;
所述第一判断模块用于在接收到包括读取目标地址的读指令时,判断所述读取目标地址指向的数据是否属于会受到写干扰的数据,在所述读取目标地址指向的数据属于会受到写干扰的数据时,判断预设缓存区中是否缓存有所述读取目标地址指向的数据,并将第一判断结果发送到第一、第二读取模块;
所述第一读取模块用于在预设缓存区中缓存有所述读取目标地址指向的数据时,根据第一映射关系查找到与所述读取目标地址对应的缓存地址,并在所述预设缓存区中读取所述缓存地址指向的数据,其中,所述第一映射关系用于记录所述目标地址与所述缓存地址之间的对应关系;
所述第二读取模块用于在预设缓存区中没有缓存所述读取目标地址指向的数据时,从非易失性存储空间中读取所述读取目标地址指向的数据;
所述装置还包括第二判断模块、第一写入模块、第二写入模块,
所述第二判断模块用于在接收到写指令时,判断所述写指令中的写入目标地址是否属于非易失性存储空间中的最高有效位页MSB page,并将第二判断结果发送给第一、第二写入模块,其中,所述写指令包括需写入数据和所述写入目标地址;
所述第一写入模块用于在判断所述写入目标地址不属于非易失性存储空间的MSBpage时,将所述需写入数据存储到所述预设缓存区和所述写入目标地址对应的非易失性存储空间中,并建立所述缓存地址与所述目标地址之间的所述第一映射关系;
所述第二写入模块用于在判断所述写入目标地址属于非易失性存储空间的MSB page时,将所述需写入数据存储到所述写入目标地址对应的非易失性存储空间中;
所述装置还包括第三获取模块和分配模块;
所述第三获取模块用于获取所述非易失性存储空间的所有共享页组中MSB page与LSBpage之间的最大相差页数为m,并将所述m发送给所述分配模块,所述m为自然数;
所述分配模块用于为所述预设缓存区分配至少n*p+m个page大小的缓存空间,其中,所述p表示所述非易失性存储空间的MSB page的共享页数,所述n为自然数,至少为1。
7.根据权利要求6所述的装置,其特征在于,还包括第三判断模块、第一获取模块、第二获取模块和释放模块;
所述第三判断模块用于在所述写入目标地址属于所述非易失性存储空间中的MSBpage时,判断所述写入目标地址所在的MSB page是否为块block中的最后一个MSB page,并将第三判断结果发送给第一、第二获取模块;
所述第一获取模块用于在所述写入目标地址所在的MSB page不为block中的最后一个MSB page时,获取以所述写入目标地址所在的MSB page为始点向前第n个MSB page的共享页的地址,并作为释放数据地址,将所述释放数据地址发送给所述释放模块;
所述第二获取模块用于在所述写入目标地址所在的MSB page为block中的最后一个MSB page时,获取所述block中最后n+1个MSB page的共享页的地址,作为所述释放数据地址,将所述释放数据地址发送给所述释放模块;
所述释放模块用于将所述预设缓存区中与所述释放数据地址具有第一映射关系的缓存地址指向的数据释放,并删除所述第一映射关系中的所述释放数据地址。
8.根据权利要求6至7任一项所述的装置,其特征在于,还包括保存模块和缓存模块;
所述保存模块用于在掉电时,将所述预设缓存区中的数据另保存在所述非易失性存储空间中,并建立所述缓存地址与所述非易失性存储空间的另保存地址之间的第二映射关系,将所述第二映射关系发送给所述缓存模块;
所述缓存模块用于在上电时,根据所述第二映射关系,将所述非易失性存储空间的另保存地址指向的数据缓存至所述预设缓存区的所述缓存地址上。
9.根据权利要求6所述的装置,其特征在于,所述预设缓存区位于双倍速率同步动态随机存储器DDR或者静态随机存取存储器SRAM中。
10.根据权利要求6所述的装置,其特征在于,所述非易失性存储空间为固态硬盘SSD的存储空间。
Priority Applications (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410817949.0A CN104503707B (zh) | 2014-12-24 | 2014-12-24 | 读取数据的方法以及装置 |
AU2015371849A AU2015371849B2 (en) | 2014-12-24 | 2015-12-16 | Data reading method and apparatus |
JP2017534266A JP6399720B2 (ja) | 2014-12-24 | 2015-12-16 | データ読出方法及び装置 |
EP18213247.2A EP3584706B1 (en) | 2014-12-24 | 2015-12-16 | Data reading method and apparatus |
SG11201705180VA SG11201705180VA (en) | 2014-12-24 | 2015-12-16 | Data reading method and apparatus |
EP15871896.5A EP3229126B1 (en) | 2014-12-24 | 2015-12-16 | Data reading method and device |
PCT/CN2015/097586 WO2016101828A1 (zh) | 2014-12-24 | 2015-12-16 | 读取数据的方法以及装置 |
CA2971913A CA2971913C (en) | 2014-12-24 | 2015-12-16 | Data reading method and apparatus |
US15/630,105 US10261906B2 (en) | 2014-12-24 | 2017-06-22 | Data accessing method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410817949.0A CN104503707B (zh) | 2014-12-24 | 2014-12-24 | 读取数据的方法以及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104503707A CN104503707A (zh) | 2015-04-08 |
CN104503707B true CN104503707B (zh) | 2018-03-06 |
Family
ID=52945108
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410817949.0A Active CN104503707B (zh) | 2014-12-24 | 2014-12-24 | 读取数据的方法以及装置 |
Country Status (8)
Country | Link |
---|---|
US (1) | US10261906B2 (zh) |
EP (2) | EP3229126B1 (zh) |
JP (1) | JP6399720B2 (zh) |
CN (1) | CN104503707B (zh) |
AU (1) | AU2015371849B2 (zh) |
CA (1) | CA2971913C (zh) |
SG (1) | SG11201705180VA (zh) |
WO (1) | WO2016101828A1 (zh) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104503707B (zh) * | 2014-12-24 | 2018-03-06 | 华为技术有限公司 | 读取数据的方法以及装置 |
CN107408071A (zh) * | 2015-08-21 | 2017-11-28 | 华为技术有限公司 | 一种内存访问方法、装置和系统 |
CN106557433A (zh) * | 2015-09-28 | 2017-04-05 | 深圳市博巨兴实业发展有限公司 | 一种微控制器高速缓存的方法和装置 |
CN105446701A (zh) * | 2015-11-09 | 2016-03-30 | 联想(北京)有限公司 | 一种数据处理方法、电子设备及控制器 |
CN106022161B (zh) * | 2016-05-13 | 2018-09-25 | 天脉聚源(北京)传媒科技有限公司 | 一种数据处理方法及装置 |
US10019456B2 (en) * | 2016-06-29 | 2018-07-10 | Microsoft Technology Licensing, Llc | Recovering free space in nonvolatile storage with a computer storage system supporting shared objects |
CN106201916B (zh) * | 2016-07-25 | 2019-03-29 | 中国人民解放军国防科学技术大学 | 一种面向ssd的非易失缓存方法 |
CN107807786B (zh) * | 2016-09-08 | 2021-09-07 | 宏碁股份有限公司 | 存储装置及其资料映射方法 |
US10452598B2 (en) * | 2016-10-18 | 2019-10-22 | Micron Technology, Inc. | Apparatuses and methods for an operating system cache in a solid state device |
CN108021513B (zh) * | 2016-11-02 | 2021-09-10 | 杭州海康威视数字技术股份有限公司 | 一种数据存储方法及装置 |
CN107274923A (zh) * | 2017-05-24 | 2017-10-20 | 记忆科技(深圳)有限公司 | 一种提高固态硬盘中顺序读取流性能的方法及固态硬盘 |
CN107247636B (zh) * | 2017-06-06 | 2020-05-26 | 苏州浪潮智能科技有限公司 | 一种固态硬盘中数据重建优化的方法及装置 |
CN111654519B (zh) * | 2017-09-06 | 2024-04-30 | 华为技术有限公司 | 用于传输数据处理请求的方法和装置 |
CN109558386A (zh) * | 2018-11-26 | 2019-04-02 | 北京微播视界科技有限公司 | 一种客户端数据的缓存方法、装置、设备和介质 |
CN109739570B (zh) * | 2018-12-24 | 2022-04-08 | 新华三技术有限公司 | 一种数据读取方法、服务器控制设备、服务器及计算机可读存储介质 |
CN109947469B (zh) * | 2019-03-08 | 2021-09-17 | 广州安加互联科技有限公司 | 地址划分方法、装置及计算机可读存储介质 |
CN112289352B (zh) * | 2019-07-25 | 2023-10-03 | 上海磁宇信息科技有限公司 | 具有ecc功能的mram系统及其操作方法 |
CN110569329B (zh) * | 2019-10-28 | 2022-08-02 | 深圳市商汤科技有限公司 | 数据处理方法及装置、电子设备和存储介质 |
CN111506261B (zh) * | 2020-03-24 | 2024-05-03 | 平安国际智慧城市科技股份有限公司 | 基于双缓存区的缓存方法、装置、设备及存储介质 |
CN111459893B (zh) * | 2020-04-03 | 2023-08-22 | 北京字节跳动网络技术有限公司 | 文件处理方法、装置和电子设备 |
CN113496745B (zh) * | 2020-04-03 | 2024-03-08 | 澜起科技股份有限公司 | 用于修复存储模块缺陷的装置和方法以及存储器系统 |
CN111522506B (zh) * | 2020-04-03 | 2022-08-02 | 杭州迪普信息技术有限公司 | 一种数据读取的方法及装置 |
CN112559387B (zh) * | 2020-12-23 | 2023-05-02 | 湖南国科微电子股份有限公司 | 一种读请求处理方法、装置、设备及介质 |
CN112783802B (zh) * | 2021-01-29 | 2022-11-01 | 山东华芯半导体有限公司 | 一种ssd中优化读干扰处理的方法 |
CN115509828A (zh) * | 2021-06-22 | 2022-12-23 | 华为技术有限公司 | 一种数据处理方法及相关装置 |
CN113342697B (zh) * | 2021-07-19 | 2022-08-26 | 英韧科技(上海)有限公司 | 闪存转换层仿真测试系统及方法 |
CN114063917B (zh) * | 2021-11-11 | 2024-01-30 | 天津兆讯电子技术有限公司 | 快速读取程序数据的方法和微控制器 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102591807A (zh) * | 2011-12-30 | 2012-07-18 | 记忆科技(深圳)有限公司 | 一种固态硬盘掉电和写异常处理方法及系统 |
CN103777905A (zh) * | 2014-02-14 | 2014-05-07 | 华中科技大学 | 一种软件定义的固态盘融合存储方法 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5359569A (en) | 1991-10-29 | 1994-10-25 | Hitachi Ltd. | Semiconductor memory |
JPH05216775A (ja) * | 1991-10-29 | 1993-08-27 | Hitachi Ltd | 半導体記憶装置 |
US6660585B1 (en) | 2000-03-21 | 2003-12-09 | Aplus Flash Technology, Inc. | Stacked gate flash memory cell with reduced disturb conditions |
US7275140B2 (en) * | 2005-05-12 | 2007-09-25 | Sandisk Il Ltd. | Flash memory management method that is resistant to data corruption by power loss |
KR100721012B1 (ko) * | 2005-07-12 | 2007-05-22 | 삼성전자주식회사 | 낸드 플래시 메모리 장치 및 그것의 프로그램 방법 |
KR100877610B1 (ko) * | 2007-01-23 | 2009-01-09 | 삼성전자주식회사 | 페이지 데이터 저장 방법과 저장 장치 |
KR100850515B1 (ko) * | 2007-01-24 | 2008-08-05 | 삼성전자주식회사 | 멀티레벨 셀 플래시 메모리를 갖는 메모리 시스템 및그것의 프로그램 방법 |
JP4498426B2 (ja) | 2008-03-01 | 2010-07-07 | 株式会社東芝 | メモリシステム |
JP2009266946A (ja) | 2008-04-23 | 2009-11-12 | Toshiba Corp | 三次元積層不揮発性半導体メモリ |
US9223642B2 (en) * | 2013-03-15 | 2015-12-29 | Super Talent Technology, Corp. | Green NAND device (GND) driver with DRAM data persistence for enhanced flash endurance and performance |
US8203876B2 (en) | 2009-12-01 | 2012-06-19 | Micron Technology, Inc. | Reducing effects of erase disturb in a memory device |
US8254167B2 (en) | 2010-05-17 | 2012-08-28 | Seagate Technologies Llc | Joint encoding of logical pages in multi-page memory architecture |
US8782370B2 (en) * | 2011-05-15 | 2014-07-15 | Apple Inc. | Selective data storage in LSB and MSB pages |
EP3364304B1 (en) * | 2011-09-30 | 2022-06-15 | INTEL Corporation | Memory channel that supports near memory and far memory access |
US9047195B2 (en) | 2012-07-05 | 2015-06-02 | Hitachi, Ltd. | Computer system with virtualization mechanism and management table, cache control method and computer program |
KR102025340B1 (ko) * | 2012-11-27 | 2019-09-25 | 삼성전자 주식회사 | 불휘발성 메모리를 포함하는 반도체 메모리 장치, 이를 포함하는 캐쉬 메모리 및 컴퓨터 시스템 |
KR102002826B1 (ko) | 2012-12-04 | 2019-07-23 | 삼성전자 주식회사 | 저장 장치, 플래시 메모리 및 저장 장치의 동작 방법 |
CN104503707B (zh) * | 2014-12-24 | 2018-03-06 | 华为技术有限公司 | 读取数据的方法以及装置 |
-
2014
- 2014-12-24 CN CN201410817949.0A patent/CN104503707B/zh active Active
-
2015
- 2015-12-16 EP EP15871896.5A patent/EP3229126B1/en active Active
- 2015-12-16 AU AU2015371849A patent/AU2015371849B2/en active Active
- 2015-12-16 CA CA2971913A patent/CA2971913C/en active Active
- 2015-12-16 JP JP2017534266A patent/JP6399720B2/ja active Active
- 2015-12-16 WO PCT/CN2015/097586 patent/WO2016101828A1/zh active Application Filing
- 2015-12-16 EP EP18213247.2A patent/EP3584706B1/en active Active
- 2015-12-16 SG SG11201705180VA patent/SG11201705180VA/en unknown
-
2017
- 2017-06-22 US US15/630,105 patent/US10261906B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102591807A (zh) * | 2011-12-30 | 2012-07-18 | 记忆科技(深圳)有限公司 | 一种固态硬盘掉电和写异常处理方法及系统 |
CN103777905A (zh) * | 2014-02-14 | 2014-05-07 | 华中科技大学 | 一种软件定义的固态盘融合存储方法 |
Also Published As
Publication number | Publication date |
---|---|
US20170286306A1 (en) | 2017-10-05 |
JP2018506109A (ja) | 2018-03-01 |
JP6399720B2 (ja) | 2018-10-03 |
AU2015371849A1 (en) | 2017-07-27 |
EP3229126A4 (en) | 2017-11-29 |
AU2015371849B2 (en) | 2018-11-29 |
WO2016101828A1 (zh) | 2016-06-30 |
SG11201705180VA (en) | 2017-07-28 |
EP3584706A1 (en) | 2019-12-25 |
CA2971913A1 (en) | 2016-06-30 |
CA2971913C (en) | 2019-04-23 |
US10261906B2 (en) | 2019-04-16 |
EP3229126B1 (en) | 2019-02-20 |
EP3584706B1 (en) | 2021-11-10 |
EP3229126A1 (en) | 2017-10-11 |
CN104503707A (zh) | 2015-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104503707B (zh) | 读取数据的方法以及装置 | |
US10628319B2 (en) | Methods for caching and reading data to be programmed into a storage unit and apparatuses using the same | |
CN109416666B (zh) | 用于存储和读取多个缓存行的装置和方法 | |
CN103635968B (zh) | 包含存储器系统控制器的设备和相关方法 | |
US20170168931A1 (en) | Nonvolatile memory module, computing system having the same, and operating method therof | |
US10275310B2 (en) | Updating exclusive-or parity data | |
US9880742B2 (en) | Valid data merging method, memory controller and memory storage apparatus | |
US8341336B2 (en) | Region-based management method of non-volatile memory | |
US8316175B2 (en) | High throughput flash memory system | |
US8516184B2 (en) | Data updating using mark count threshold in non-volatile memory | |
US11003587B2 (en) | Memory system with configurable NAND to DRAM ratio and method of configuring and using such memory system | |
CN104636267B (zh) | 存储器控制方法、存储器存储装置与存储器控制电路单元 | |
US11733895B2 (en) | Control method of flash memory controller and associated flash memory controller and storage device | |
US10283196B2 (en) | Data writing method, memory control circuit unit and memory storage apparatus | |
US10866764B2 (en) | Memory system with parity cache scheme and method of operating such memory system | |
US11809328B2 (en) | Control method of flash memory controller and associated flash memory controller and storage device | |
EP3850488A1 (en) | Apparatuses and methods for error correction coding and data bus inversion for semiconductor memories | |
WO2022027610A1 (en) | Balanced three-level read distrub management in a memory device | |
US10289334B2 (en) | Valid data merging method, memory controller and memory storage apparatus | |
US8738847B2 (en) | Data writing method, and memory controller and memory storage apparatus using the same | |
US8276033B2 (en) | Data writing method for a flash memory, and flash memory controller and flash memory storage apparatus using the same | |
US9009389B2 (en) | Memory management table processing method, memory controller, and memory storage apparatus | |
US20130246687A1 (en) | Data writing method, memory controller and memory storage apparatus | |
US20220317878A1 (en) | Control method of flash memory controller and associated flash memory controller and storage device | |
CN117389463A (zh) | 数据存取管理的方法、存储器装置、电子装置以及存储器装置的存储器控制器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |