CN105354152B - 非易失性存储器及磨损均衡方法 - Google Patents
非易失性存储器及磨损均衡方法 Download PDFInfo
- Publication number
- CN105354152B CN105354152B CN201410411569.7A CN201410411569A CN105354152B CN 105354152 B CN105354152 B CN 105354152B CN 201410411569 A CN201410411569 A CN 201410411569A CN 105354152 B CN105354152 B CN 105354152B
- Authority
- CN
- China
- Prior art keywords
- physical page
- page
- data
- abrasion
- wear
- 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
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明实施例提供了一种非易失性存储器及磨损均衡方法。该非易失性存储器包括存储介质和NVM控制器。该NVM控制器接收到待写入的第一物理页的第一数据后,可以先确定在本次写操作过程中,与所述第一物理页对应的第一写回页中每一行的改写状态。在根据获得的所述第一写回页中的每一行的改写状态以及记录的所述第一物理页的磨损状态确定本次写操作只需要对所述第一物理页中标识为未磨损的行进行改写的情况下,NVM控制器将述第一数据写入所述第一物理页,并将所述第一物理页的磨损次数保持不变。本发明实施例提供的非易失性存储器能够在维持较低的空间开销的基础上,能够提高磨损次数的计算精确度,延长非易失性存储器的使用寿命。
Description
技术领域
本发明涉及存储技术领域,尤其涉及一种非易失性存储器及磨损均衡方法。
背景技术
由于闪存(Flash)、相变存储器(Phase Change Memory,PCM)、阻变存储器(Resistive Random Access Memory,RRAM)、磁性随机存储器(Magnetic Random AccessMemory,MRAM)和铁电式随机存储器(Ferroelectric Random Access Memory,FRAM)为代表的新型非易失性存储器(Non-Volatile Memory,NVM)具有访问速度快、低能耗和非易失性的存储优点,因此,采用NVM代替磁盘作为外存将降低外存访问的等待时间(latency)和能量,提高访问效率并增加外存的带宽(bandwidth)。然而,与磁盘(DISK)相比,大部分NVM(例如Flash、PCM、RRAM以及FRAM)具有写入次数有限的缺点。NVM的使用寿命通常由NVM最大的写入次数来确定,因此,大部分NVM都具有有限的使用寿命。例如,Flash通常能够写104次,PCM通常能够写108次,RRAM能够写105次等。为了延长NVM预期的使用寿命,现有技术中通常采用磨损均衡(wear leveling)技术对各存储单元进行管理。磨损均衡的基本思想是在每次对存储设备执行写操作时将新数据写入到最少被使用的物理存储单元中,以使存储设备中的各存储介质得到均衡使用。
现有技术中,实现磨损均衡时通常需要记录存储设备中各存储页的磨损情况。现有技术中的一种方式是采用为每个存储页(page)设置计数器,若对该页有写操作,则将该页的计数器加1。根据这种记录页的磨损次数的方式来确定该页的使用情况。然而这种方式不能真实反映该页中各字节(Byte)的写操作情况,不能区分是对该页中一个字节(Byte)的多次写操作还是对该页中各个字节(Byte)的均衡写操作,从而不能真实的反映该页的写操作情况。现有技术中的另一种方式是对存储页中的每个字节(Byte)均设置计数器,来记录字节的写操作情况。然而这种方式虽然精确度高,但是空间开销过大。
发明内容
本发明实施例中提供的一种非易失性存储器及磨损均衡方法,能够更客观真实的反应非易失性存储器的磨损情况,延长非易失性存储器的使用寿命。
第一方面,本发明实施例提供一种非易失性存储器NVM,所述NVM包括:
存储介质,用于存储数据,其中,所述存储介质包括多个物理页,每一个物理页page包括多行line,每一行包括多个字节Byte;
NVM控制器,用于接收第一写请求,所述第一写请求中携带有待写入所述NVM中的第一物理页的第一数据;
确定所述第一物理页的磨损次数未超过预设阈值;
根据与所述第一物理页对应的第一写回页中的数据以及所述第一数据获得所述第一写回页中每一行的改写状态,其中,所述第一写回页中的数据为缓存的所述第一物理页中的数据;
根据记录的所述第一物理页的磨损状态以及所述第一写回页中每一行的改写状态判断本次写操作是否只需要对所述第一物理页中标识为未磨损的行进行改写;
在判断本次写操作只需要对所述第一物理页中标识为未磨损的行进行改写的情况下,保持所述第一物理页的磨损次数不变,并将所述第一数据写入所述第一物理页。
在第一方面的第一种可能的实现方式中,该NVM控制器还用于:在将所述第一数据写入所述第一物理页中后,将所述第一物理页中未被改写的行的磨损状态保持不变,并且,将在本次写操作中进行了改写的行的磨损状态设置为磨损。
结合第一方面或第一方面的第一种可能的实施方式,在第一方面的第二种可能的实施方式中,该NVM控制器还用于:
在判断本次写操作需要对所述第一物理页中标识为磨损的行进行改写的情况下,将所述第一物理页的磨损次数增加一个预设值;
将所述第一数据写入所述第一物理页中;
将所述第一物理页中标识为磨损且在本次写操作中进行了改写的行的磨损状态保持为磨损,并将其他行的磨损状态更新为未磨损。
结合第一方面、第一方面的第一种或第二种可能的实施方式,在第一方面的第三种可能的实施方式中,该NVM控制器还用于:
接收第二写请求,所述第二写请求中携带有待写入所述第一物理页的第二数据;
确定所述第一物理页的磨损次数大于预设阈值;
将所述第二数据写入第二物理页中,其中,所述第二物理页的磨损次数不大于所述预设阈值。
第二方面,本发明实施例提供一种磨损均衡方法,该方法应用于非易失性存储器NVM中,该方法包括:
接收第一写请求,所述第一写请求中携带有待写入所述NVM中的第一物理页的第一数据,其中,所述NVM包括多个物理页,每一个物理页page包括多行line,每一行包括多个字节Byte;
确定所述第一物理页的磨损次数未超过预设阈值;
根据所述第一物理页对应的第一写回页中的数据以及所述第一数据获得所述第一写回页中每一行的改写状态,其中,所述第一写回页中的数据为缓存的所述第一物理页中的数据;
根据记录的所述第一物理页的磨损状态以及所述第一写回页中每一行的改写状态判断本次写操作是否只需要对所述第一物理页中标识为未磨损的行进行改写;
在判断本次写操作只需要对所述第一物理页中标识为未磨损的行进行改写的情况下,保持所述第一物理页的磨损次数不变,并将所述数据写入所述第一物理页。
在第二方面的第一种实施方式中,在根据所述物理地址将所述数据写入所述第一物理页中后,该方法还包括:将所述第一物理页中未被改写的行的磨损状态保持不变,并且,将在本次操作中进行了改写的行的磨损状态设置为磨损。
结合第二方面或第二方面的第一种可能的实施方式,在第二方面的第二种可能的实施方式中,该方法还包括:
在判断本次写操作需要对所述第一物理页中标识为磨损的行进行改写的情况下,将所述第一物理页的磨损次数增加一个预设值;
将所述第一数据写入所述第一物理页中;
将所述第一物理页中标识为磨损且在本次写操作中进行了改写的行的磨损状态保持为磨损,并将其他行的磨损状态更新为未磨损。
结合第二方面、第二方面的第一种或第二种可能的实施方式,在第二方面的第三种可能的实施方式中,该方法还包括:
接收第二写请求,所述第二写请求中携带待写入所述第一物理页的第二数据;
确定所述第一物理页的磨损次数大于预设阈值;
将所述第二数据写入第二物理页中,其中,所述第二物理页的磨损次数不大于所述预设阈值。
第三方面,本本发明实施例提供了一种磨损均衡装置,包括:
接收模块,用于接收第一写请求,所述第一写请求中携带有待写入非易失性存储器NVM中的第一物理页的第一数据,其中,所述NVM包括多个物理页,每一个物理页page包括多行line,每一行包括多个字节Byte;
确定模块,用于确定所述第一物理页的磨损次数未超过预设阈值;
获取模块,用于根据所述第一物理页对应的第一写回页中的数据以及所述第一数据获得所述第一写回页中每一行的改写状态,其中,所述第一写回页中的数据为缓存的所述第一物理页中的数据,每一个物理页page包括多行line,每一行包括多个字节Byte;
判断模块,用于根据记录的所述第一物理页的磨损状态以及所述第一写回页中每一行的改写状态判断本次写操作是否只需要对所述第一物理页中标识为未磨损的行进行改写;
处理模块,用于在判断本次写操作只需要对所述第一物理页中标识为未磨损的行进行改写的情况下,保持所述第一物理页的磨损次数不变,并将所述数据写入所述第一物理页。
在第三方面的第一种实施方式中,该磨损均衡装置还包括:
记录模块,用于在所述处理模块根据所述物理地址将所述数据写入所述第一物理页中后,将所述第一物理页中未被改写的行的磨损状态保持不变,并且,将在本次操作中进行了改写的行的磨损状态设置为磨损。
结合第三方面或第三方面的第一种可能的实施方式,在第三方面的第二种可能的实施方式中,所述处理模块,还用于在所述判断模块判断本次写操作需要对所述第一物理页中标识为磨损的行进行改写的情况下,将所述第一物理页的磨损次数增加一个预设值,并将所述第一数据写入所述第一物理页中;
所述记录模块,还用于将所述第一物理页中标识为磨损且在本次写操作中进行了改写的行的磨损状态保持为磨损,并将其他行的磨损状态更新为未磨损。
结合第三方面、第三方面的第一种或第二种可能的实施方式,在第三方面的第三种可能的实施方式中,所述接收模块,还用于接收第二写请求,所述第二写请求中携带待写入所述第一物理页的第二数据;
所述确定模块,还用于确定所述第一物理页的磨损次数大于预设阈值;
所述处理模块,还用于在所述确定模块确定所述第一物理页的磨损次数大于预设阈值的情况下,将所述第二数据写入第二物理页中,其中,所述第二物理页的磨损次数不大于所述预设阈值。
第四方面,本发明实施例提供了一种计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行前述第二方面中所述的方法。
在本发明实施例中提供的非易失性存储器NVM包括存储介质和NVM控制器。所述NVM控制器在执行写操作过程中,接收到待写入的第一物理页的第一数据后,可以先确定在本次写操作过程中,与所述第一物理页对应的第一写回页中每一行的改写状态。进一步的,NVM控制器可以根据获得的所述第一写回页中的每一行的改写状态以及记录的所述第一物理页的磨损状态判断本次写操作是否只需要对所述第一物理页中标识为未磨损的行进行改写。在NVM控制器确定本次写操作只需要对所述第一物理页中标识为未磨损的行进行改写的情况下,NVM控制器将述第一数据写入所述第一物理页,并将所述第一物理页的磨损次数保持不变。本发明实施例提供的NVM控制器能够以物理页(page)中的行(line)为粒度来判断是否增加物理页的磨损次数,与现有技术中只要对物理页执行了写操作即增加该物理页的磨损次数的方式相比,在维持较低的空间开销的基础上,能够更真实的反映第一物理页中每一行(line)的磨损情况,提高磨损次数的计算精确度,并能够进一步的延长非易失性存储器的使用寿命。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例。
图1为本发明实施例提供的一种非易失性存储器的应用场景示意图;
图2为本发明实施例提供的又一种非易失性存储器的应用场景示意图;
图3为本发明实施例提供的一种非易失性存储器的结构示意图;
图4为本发明实施例提供的一种磨损均衡方法的流程图;
图5a为本发明实施例提供的改写状态示意图;
图5b-图5e为本发明实施例提供的磨损状态示意图;
图6为本发明实施例提供的又一种磨损均衡方法的流程图;
图7为本发明实施例提供的一种磨损均衡装置的结构示意图。
具体实施方式
为了使本领域的技术人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。
图1为本发明实施例提供的一种新型非易失存储器(NVM)的应用场景图。在图1所述的一种应用场景中,NVM 200作为内存使用。如图1所示,随机存储器(Random AccessMemory,RAM)300通过内存总线与中央处理器(CPU)100连接。RAM 300具有访问速度快的优点,CPU100能够高速访问RAM300,对RAM 300中的任一存储单元进行读或写操作,且读写时间相等,因此通常RAM作为内存使用。然而,RAM 300是易失性的,当计算机关闭电源后,RAM300中的信息将不再保存。通常RAM用来存放操作***,各种正在运行的软件、输入和输出数据以及与外存交换的信息等。
磁盘400可以作为外存,用于存储数据。当然,可以理解的是,作为外存的存储器除了可以是磁盘400外,还可以是固态硬盘(SSD)等非易失性存储器。通常,作为外存的存储介质需要具有非易失性的特点,当计算机关闭电源后,存储于外存的数据仍然会被保存。并且,外存的存储容量较大。
非易失性存储器(NVM)200可以同RAM 300一样,直接挂在内存总线上。CPU 100可以通过内存管理单元(MMU)访问NVM 200,向NVM200中快速的存储数据或从NVM 200中读取数据。可以理解的是,当NVM 200直接挂在内存总线上使用时,能够与RAM一样,降低数据访问的等待时间(latency)。并且,与RAM 300相比,由于NVM 200具有非易失性,从而能够更好的保存数据。
需要说明的是,本发明实施例中所描述的能够挂在内存总线上的非易失性存储器可以包括:相变存储器(Phase Change Memory,PCM)、阻变存储器(Resistive RandomAccess Memory,RRAM)、磁性存储器(Magnetic Random Access Memory,MRAM)或铁电式存储器(Ferroelectric Random Access Memory,FRAM)等新型非易失性存储器。这些新型NVM都具有访问速度快且具有非易失性的特点,并且,这些新型NVM能够按字节(Byte)寻址,将数据以位(bit)为单位写入非易失性存储介质中。
处理器100,可以包括中央处理器(CPU),还可以是特定集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。在处理器202中安装有操作***和其他软件程序,从而能够实现对RAM300、磁盘400以及NVM 200的访问。
可以理解的是,图1仅仅是对新型NVM的功能的一种示意,从图1可以看出,新型NVM不仅可以作为内存使用,其功能也可以延伸到现有的外存上。根据这种方式,在一种情况下,新型RAM也可以只作为内存,不作为外存使用。在另一种情况下,可以既作为内存使用也作为外存使用。
图2为本发明实施例提供的另一种新型非易失存储器(NVM)的应用场景图。在图2所述的一种应用场景中,NVM 200作为存储阵列中的存储器来使用。换一种表达方式,在图2所示的应用场景中,NVM200作为外存来使用。如图2所示,在该应用场景中,可以包括应用服务器110、连接设备105以及存储***120。
应用服务器110可以包括当前技术已知的任何计算设备,如服务器、台式计算机、主机等等,在应用服务器110中安装有操作***以及其他应用程序,应用服务器110可以有多个。
连接设备105可以包括当前技术已知的存储***120和应用服务器110之间的任何接口,如光纤交换机,或者其他现有的交换机。
存储***120可以包括***控制器108以及非易失存储器200。其中,***控制器108是存储***120的“大脑”,用于对非易失存储器200进行存储管理,实现对非易失性存储器200的访问。例如,***控制器108用于将数据存储于非易失存储器200中或从非易失存储器200中读取数据。需要说明的是,在本发明实施例中,存储***120中的***控制器108可以是一个,也可以是多个。可以理解的是,当存储***120中包括至少两个***控制器108时,可以提高存储***120的稳定性。需要说明的是,本发明实施例中为了将存储***120的控制器与非易失性存储器200的控制器相区别,将存储***120的控制器称为***控制器108。
非易失性存储器(NVM)200用于提供存储空间。NVM 200与***控制器108之间可以通过小型计算机***接口(Small Computer System Interface,SCSI)协议等通信协议进行通信连接,在此不进行限定。实际应用中,NVM 200也可以只有一个,也可以有多个(如图2所示)。并且,多个NVM 200可以组成存储阵列,例如,可以在多个NVM 200中建立独立磁盘冗余阵列(Redundant Arrays of Independent Disks,RAID),以提高数据存储的安全性。
本发明实施例中,NVM 200可以包括当前技术中已知的能够按字节(Byte)寻址的新型NVM。例如,NVM 200可以包括相变存储器(Phase Change Memory,PCM)、阻变存储器(Resistive RAM,RRAM)、磁性存储器(Magnetoresistive RAM,MRAM)或铁电式存储器(Ferroelectric RAM,FRAM)等能够按字节(Byte)寻址的新型NVM。
在图2所示的应用场景中,应用服务器110可以通过连接设备105访问存储***120。例如,应用服务器110可以通过连接设备105向存储***120下发输入输出I/O请求,以将数据写入存储***120,或者从存储***120中读取数据。
图1和图2对新型NVM 200的应用场景做了一个简单的介绍。可以理解的是,由于新型NVM200存在有限的写入次数,因此,为了延长NVM200的使用寿命,无论是将NVM200作为内存使用(如图1所示)还是将NVM200作为外存使用(如图2所示),均可以采用磨损均衡技术对NVM200进行管理。本发明实施例基于新型NVM200的按字节(Byte)寻址的特点提出一种新的实现磨损均衡的方法,可以进一步提高新型NVM200的使用寿命。可以理解的是,当NVM200作为内存使用时,对NVM200写入次数的要求更高,因此更需要采用磨损均衡技术对NVM200进行管理。需要说明的是,由于SSD是按照页(page)为单位将数据写入存储介质。SSD不能按字节(Byte)寻址,不能将数据按位(bit)写入存储介质中。因此,在本发明实施例中描述的新型NVM不包括SSD。
图3为本发明实施例提供的一种非易失性存储器200的结构示意图。如图3所示,非易失性存储器200可以包括NVM控制器202、内存204、主机接口206以及存储介质208。
主机接口206用于连接主机,与主机进行通信。例如,用于接收主机下发的I/O请求,或将从存储介质208中读出的数据返回给主机。其中,主机接口206可以包括串行高级技术附件(Serial Advanced Technology Attachment,SATA)接口、通用串行总线(UniversalSerial Bus,USB)接口、光纤通道技术(Fibre Channel,FC)接口或快捷外设互联标准(Peripheral Component Interconnect Express,PCI-E)接口等。可以理解的是,主机接口206仅仅是通信接口的一种示例,在NVM200中,除了与主机进行通信的主机接口206外,还可以包括与后端存储介质208进行通信的后端通信接口。
内存204,用于存放处理器2022当前正在使用的(即执行中)的数据和程序209。例如,当主机向NVM写入数据时,内存204可以用于缓存主机要写入的数据。当主机从NVM中读取数据时,内存204可以用于缓存从存储介质208中读取的待向主机返回的数据。内存204可以是高速RAM存储器或者非易失性存储器等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。
程序209可以包括程序代码,所述程序代码包括计算机操作指令。
存储介质208,用于存储数据。存储介质208可以由多个存储单元组成。在本发明实施例中,存储介质208中的存储单元是指用于存储数据的最小存储介质单元。例如,存储单元可以包括相变存储单元、磁性存储单元、阻变存储单元等非易失性存储单元。
NVM控制器202主要包括处理器(processor)2022、缓存(cache)2024以及后端通信接口(Communication Interface)2026。处理器2022、缓存2024、以及后端通信接口2026通过通信总线完成相互间的通信。
其中,缓存2024是位于处理器2022与内存204之间的临时存储器,它的容量比内存204小但是交换速度却比内存204要快。缓存2024用于缓存处理器2022待写入存储介质208的数据或者用于缓存内存204传输的从存储介质208读取的数据。缓存2024可以是RAM、ROM、闪存(Flash memory)等各种可以存储数据的机器可读介质。缓存2024可以包括多级,例如可以包括一级缓存、二级缓存及三级缓存。
后端通信接口2026,用于与存储介质208进行通信。例如,可以用于管理对处理器2022下发的对存储介质208的访问命令以及进行数据传输。可以理解的是,后端通信接口2026中可以包括多个通信通道,用于连接存储介质208中不同的存储单元。
处理器2022可以是一个中央处理器CPU,或者是特定集成电路(ApplicationSpecific Integrated Circuit,ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。在处理器2022中安装有操作***和其他软件程序,不同的软件程序可以视作一个处理模块,具有不同的功能。例如,处理器2022可以实现对存储介质208的访问请求,或者对存储介质208中的数据进行管理等等。例如,处理器2022可以通过通信总线接收主机接口206转发的输入输出I/O请求,并根据主机下发的I/O请求通过后端通信接口2026访问存储介质208,向存储介质208中写入数据或者从存储介质208中读取数据。
在本发明实施例中,处理器2022在向存储介质208写入数据时,可以执行程序209,具体可以执行下述方法实施例中的相关步骤,以实现磨损均衡。下面将对本发明实施例中NVM200具体如何实现磨损均衡的方法进行详细介绍。
图4是本发明实施例提供的一种磨损均衡方法的流程图。该方法可以应用于图3所示的NVM200中。该方法具体可以由图3中所示的NVM控制器202中的处理器2022来执行。下面将结合图3对图4中的方法进行描述。
在步骤405中,NVM控制器202接收第一写请求,所述第一写请求中携带有待写入所述NVM的第一物理页中的第一数据。所述第一写请求用于将第一数据存储于NVM200中。在一种情形下,若将NVM作为内存使用(如图1所示),则NVM控制器202可以接收中央处理器CPU100下发的写请求。在另一种情形下,若将NVM作为外存使用(如图2所示),则NVM控制器202可以接收存储***120中的***控制器108发送的写请求。可以理解的是,NVM控制器202接收的写请求可以包括应用服务器110向存储***120发送的写I/O。所述第一写请求中可以携带第一数据以及第一逻辑地址。需要说明的是,本发明实施例中的第一数据并不只代表一位(bit)数据,而是用于表示第一写请求中携带的要写入的所有数据,例如,可以包括多位(bit)数据。在NVM控制器202接收到第一写请求后,可以根据第一逻辑地址以及预设的逻辑地址与物理地址的对应关系确定与第一逻辑地址对应的第一物理地址。从而可以根据第一物理地址确定待写入的所述第一数据的第一物理页,其中第一物理页对应的地址范围包括第一物理地址。
需要说明的是,在本发明实施例中,可以以“页”(page)为单位管理NVM的物理空间。一个物理页的大小可以设置为4k、8k或16k等等,在此不做限定。一个物理页(page)中包含多个行(line),每一行包括多个字节(Byte)。NVM控制器202向存储介质208中写入数据时,可以按位(bit)写入。换一种表达方式,NVM控制器202可以以一个位(bit)为单位向存储介质208中写入数据。可以理解的是,本发明实施例中描述的第一物理页和第二物理页可以是NVM200中的任意一个物理页。
在步骤410中,NVM控制器202确定所述第一物理页的磨损次数未超过预设阈值。在本发明实施例中,在需要向NVM中写入数据时,为了延长NVM的使用寿命,可以采用磨损均衡技术对NVM中的各个存储单元进行管理,以使NVM中的各个存储单元中的存储介质能够得到均衡使用。具体的,可以以一个页(page)为单位对NVM200做磨损均衡的管理。实际应用中,可以通过设置计数器来记录NVM200中的每一个物理页的磨损次数。NVM控制器202在接收到第一写请求后,可以根据为所属的所述第一物理页设置的计数器显示的磨损次数来判断是否可以将所述第一数据写入所述第一物理页。具体的,若第一物理页的磨损次数超过预设阈值,则将所述第一数据写到其他物理页中,以减少第一物理页的磨损。若第一物理页的磨损次数未超过预设阈值,则进入步骤415。
在步骤415中,NVM控制器202根据所述第一物理页对应的第一写回页中的数据以及所述第一数据获得所述第一写回页中每一行的改写状态。其中,所述第一写回页中的数据为缓存的所述第一物理页中的数据。实际应用中,为了提高处理器2022的访问速度,可以预先将存储介质208中的物理页中的数据预先缓存在缓存2024中。例如,可以将存储介质208中的第一物理页预先读取到缓存2024中。本发明实施例中,为了描述清楚、方便,将缓存2024中缓存的第一物理页称为第一写回页。换一种表达方式,第一写回页中的数据为缓存的第一物理页中的数据。当需要向第一物理页中写入数据时,可以先将数据写入第一写回页,在NVM控制器202空闲时,再将第一写回页中的数据写入存储介质208的第一物理页中。当需要从第一物理页读取数据时,可以从缓存2024中缓存的与第一物理页对应的第一写回页中读取。通过这种方式,能够提高NVM控制器202的访问速度。
本领域人员可以知道,在实际应用中,可以根据对第一物理页的访问情况提前将第一物理页中的数据从存储介质208中读取出来并缓存在缓存2024中。当然,也可以在接收到访问第一物理页的第一写请求后,再将第一物理页缓存在缓存2024中,在此不做限定。在缓存2024中可以包括与第一物理页对应的第一写回页,也可以包括与第二物理页对应的第二写回页。在步骤415中,NVM控制器202可以根据接收的第一数据以及缓存2024中缓存的与第一物理页对应的第一写回页来确定第一写回页中每一行的改写状态。具体的,可以将接收的第一数据写入第一写回页的相应位置,从而可以获知在本次写操作中所述第一写回页中每一行的改写状态。若本次写操作中需要对某一行(line)中的至少一位(Bit)进行改写,则确认该行的改写状态为“改写”。若本次写操作中不会对某一行(line)中的任意一位(Bit)进行改写,则确定该行的改写状态为“未改写”。需要说明的是,本发明实施例中,改写操作可以包括在一次操作过程中,将某一位数据由“0”修改为“1”或由“1”修改为“0”的过程。实际应用中,一种情形下,可以采用“0”来标识改写状态为“未改写”,用“1”来标识改写状态为“改写”。在另一种情形下,还可以采用“1”来标识改写状态为“未改写”,用“0”来标识改写状态为“改写”。在又一种情形下,可以只在位图中用“1”来标识改写状态为“改写”,对未改写的行不进行标识。此外,还可以用其他标识位表示是否需要对该行进行改写,在此不对标识位的具体形式做限定。本发明实施例中以“0”来标识改写状态为“未改写”,用“1”来标识改写状态为“改写”为例进行描述。
实际应用中,可以采用位图或向量等方式来记录第一写回页中各行的改写状态,在此不做限定。在本发明实施例中以采用位图的形式来记录第一写回页在本次写操作中的改写状态为例进行描述。如图5a为本发明实施例提供的一种改写状态的示意图。如图5a所示,用位图来记录写回页在本次写操作中的改写状态。其中,位图中的一列可以对应一个写回页中的数据所占的物理空间。本发明实施例以第一写回页为例进行描述,其中,第一写回页是存储介质208中的任意一个写回页。位图中的一个格子可以对应一个写回页中的一行(line)数据所占的物理空间。通常,位图中的一个格子可以占用1位(bit)的地址空间。例如,一行可以包括8个字节(Byte)。需要说明的是,本发明实施例中不对一行的地址空间大小进行限定,一行的大小可以根据页的大小进行设置,只要一页包括多个行,并且一行(line)包括多个字节(Byte)即可。实际应用中,也可以用位图中的一行对应一个写回页中的数据所占的物理空间,在此不做限定。在本发明实施例中,以位图中的一列对应一个写回页(page)中的数据所占的物理空间,且一个写回页(page)中包括四行(line)为例进行描述。根据图5a可知,在本次写操作中,NVM控制器202会根据第一数据对第一写回页的第二行和第三行进行改写。本领域人员可以知道,在一次写操作中,若需要对写回页进行改写,则将数据写入NVM介质208时,会对与该写回页对应的物理页中的相应位置存储的数据进行改写。
在步骤420中,NVM控制器202根据记录的所述第一物理页的磨损状态以及所述第一写回页中每一行的改写状态判断本次写操作是否只需要对所述第一物理页中标识为未磨损的行进行改写。如果本次写操作只需要对所述第一物理页中标识为未磨损的行(line)进行改写,进入步骤425,否则,进入步骤435。在本发明实施例中,可以记录前一次写操作后第一物理页(page)中每一行(line)的磨损状态。根据记录的第一物理页的磨损状态可以获知第一物理页中每一行的当前磨损状态。可以理解的是,在初始状态下,由于第一物理页为未被改写过的页,可以将第一物理页中每一行的磨损状态记录为“未磨损”。若对第一物理页进行过改写操作,则在操作完成后可以根据该改写操作过程中对第一物理页中各行的改写情况对第一物理页的磨损状态进行更新。
实际应用中,可以采用位图或向量等方式来记录第一物理页的磨损状态,在此不做限定。在本发明实施例中,以用位图的形式来标识第一物理页当前的磨损状态为例进行描述。其中,位图中的一列可以对应一个物理页中的数据所占的物理空间,位图中的一个格子可以对应一个物理页中的一行(line)数据所占的物理空间。例如,一行(line)可以包括8个字节(Byte)。需要说明的是,本发明实施例中不对一行(line)的地址空间大小进行限定,一行(line)的大小可以根据一页(page)的大小进行设置,只要一页(page)里面包括多个行(line),并且一行(line)包括多个字节(Byte)即可。实际应用中,也可以以位图中的一行(line)对应一个物理页(page)中的数据所占的物理空间。在本发明实施例中,以位图中的一列对应一个物理页中的数据所占的物理空间为例进行描述。
实际应用中,一种情形下,可以用“0”来表示磨损状态为“未磨损”,用“1”来表示磨损状态为“磨损”。在另一种情形下,可以用“1”来表示磨损状态为“未磨损”,用“0”来表示磨损状态为“磨损”。此外,还可以用其他标识位表示行(line)的磨损状态,在此不对标识位的具体形式做限定。本发明实施例中“0”来表示磨损状态为“未磨损”,用“1”来表示磨损状态为“磨损”为例进行描述。图5b为本发明实施例提供的一种磨损状态示意图。图5c为本发明实施例提供的又一种磨损状态示意图。例如,在一种情形下,如图5b所示,第一物理页的磨损状态为:第一行和第四行的磨损状态为“已磨损”,第二行和第三行的磨损状态为“未磨损”。在又一种情形下,如图5c所示,第一物理页的磨损状态为:第一行、第二行和第四行的磨损状态为“已磨损”,第三行的磨损状态为“未磨损”。
在步骤420中,NVM控制器202可以根据记录的所述第一物理页的磨损状态以及所述第一写回页中每一行的改写状态来判断本次写操作是否只需要对所述第一物理页中标识为未磨损的行进行改写。如果本次写操作只需要对所述第一物理页中标识为未磨损的行进行改写,进入步骤425,否则,进入步骤435。例如,在一种情形下,根据图5a和图5b记录的信息可以知道,本次写操作需要对第一物理页中的第二行和第三行进行改写。其中,第二行和第三行的磨损状态均为“未磨损”,则可以确定在本次写操作中,NVM控制器202只需要对第一物理页中标识为“未磨损”的行进行改写,该方法进入步骤425。在另一种情形下,根据图5a和图5c记录的信息可以知道,NVM控制器202需要对第一物理页中的第二行和第三行进行改写。其中,第二行的磨损状态为“磨损”,第三行的磨损状态位“未磨损”,则可以确定本次写操作需要对第一物理页中标识为“磨损”的行(如图5c中的第一列第二行的位置)进行改写,该方法进入步骤435。
在步骤425中,NVM控制器202将所述第一物理页的磨损次数保持不变,并将所述第一数据写入所述第一物理页。具体的,若NVM控制器202根据记录的所述第一物理页的磨损状态以及所述第一写回页中每一行的改写状态判断本次写操作只需要对所述第一物理页中标识为未磨损的行进行改写,则NVM控制器202可以将所述第一数据写入所述第一物理页,且不会增加第一物理页的磨损次数。具体的,NVM控制器202可以根据第一物理地址将第一数据写入第一物理页中的相应位置。例如,第一写回页在本次写操作中的改写状态的位图如图5a所示,若第一物理页的当前磨损状态如图5b所示,NVM控制器202可以根据第一物理地址将第一数据写入第一物理页中的第二行和第三行中。在这种情形下,考虑到在本次写操作中将第一数据写入第一物理页中的第二行和第三行前,第一物理页中的第二行和第三行当前的磨损状态为“未磨损”(如图5b所示),NVM控制器202在将第一数据写入第一物理页中的第二行和第三行后,可以确定第一物理页内部各行之间的磨损是均衡的,因此,NVM控制器202并不会增加第一物理页的磨损次数。
在步骤430中,NVM控制器202将所述第一物理页中未被改写的行的磨损状态保持不变,并且,将在本次写操作中所述第一物理页中进行改写的行的磨损状态设置为磨损。本发明实施例中,NVM控制器202将第一数据写入第一物理页后,在步骤430中,NVM控制器202可以根据本次写操作的写入情况对第一物理页的磨损状态进行更新。具体的,NVM控制器202将所述第一物理页中在本次写操作中未被改写的行的磨损状态保持不变,并且将在本次写操作中被改写的行的磨损状态设置为磨损。例如,第一写回页在本次写操作中的改写状态的位图如图5a所示,若第一物理页的当前磨损状态如图5b所示,则NVM控制器202对第一物理页执行写操作后,更新后的第一物理页的磨损状态的位图可以如图5d所示。图5d为本发明实施例提供的一种更新后的第一物理页的磨损状态示意图。根据图5d可以知道,在执行本次写操作后,NVM控制器202可以将第一行和第四行的磨损状态保持不变,并将第二行和第三行的磨损状态更新为“磨损”。第一物理页的磨损状态经过更新后,第一物理页中的第一行、第二行、第三行和第四行的磨损状态均为“磨损”。
可以理解的是,第一物理页更新后的磨损状态可以作为下一次对第一物理页执行磨损均衡操作的依据。具体的,在对第一物理页执行下一次写操作时,可以根据更新后的磨损状态判断是否需要增加第一物理页的磨损次数。
在步骤435中,NVM控制器202将所述第一物理页的磨损次数加1。本发明实施例中,在根据步骤420判断需要对第一物理页中标识为“磨损”的行进行改写的情况下,在步骤435中,NVM控制器202可以对第一物理页的磨损次数进行更新,将所述第一物理页的磨损次数加1,并进入步骤440。可以理解的是,实际应用中,可以将第一物理页的磨损次数增加一个预设值。其中,预设值可以自行设定。例如,可以将一个预设值设置为1、2或3等等数值,只要能够用于记录第一物理页的磨损次数即可,在此不做限定。可以理解的是,预设值是用于记录磨损次数递增的单位值,如果预设值设置的比1大,则磨损次数的预设阈值也应该相应增大,从而可以正确的反应NVM200的磨损次数和使用寿命。
在步骤440中,NVM控制器202根据所述第一物理地址将所述第一数据写入所述第一物理页中。实际应用中,在一种情形下,可以先将第一数据写入第一写回页,在NVM控制器空闲后,再将第一写回页中的数据写入第一物理页中。另一种情形下,也可以直接根据第一物理地址将所述第一数据写入所述第一物理页中。在此不做限定。本领域人员可以知道,采用第一种写数据的方式,NVM控制器202将第一数据写入第一写回页中后,即可向主机返回成功响应,从而可以提高NVM控制器202的响应速度。
在步骤445中,NVM控制器202将所述第一物理页中标识为磨损且在本次写操作中进行了改写的行的磨损状态保持为磨损,并将其他行的磨损状态更新为未磨损。在将第一数据写入第一物理页后,NVM控制器202可以对第一物理页的磨损状态进行更新。具体的,NVM控制器202可以将第一物理页中标识为磨损且在本次写操作中进行了改写的行的磨损状态保持为磨损,并将其他行的磨损状态更新为未磨损。例如,第一写回页在本次写操作中的改写状态的位图如图5a所示,若第一物理页的当前磨损状态如图5c所示,则在对第一物理页执行写操作后,更新后的第一物理页的磨损状态的位图可以如图5e所示。图5e为本发明实施例提供的又一种更新后的磨损状态示意图。根据图5e可以知道,在执行本次写操作后,NVM控制器202将第一物理页中的第三行的磨损状态保持为“磨损”,并将第一行、第二行和第四行的磨损状态更新为“未磨损”。
根据步骤445可知,在本发明实施例中,若本次写操作需要对第一物理页中标识为“磨损”的行进行改写,则在将第一数据写入第一物理页后,在更新第一物理页的磨损状态时,只需要将第一物理页中磨损次数最多的行(line)的磨损状态保持为“磨损”,其他行的磨损状态可以更新为“未磨损”。
可以理解的是,本发明实施例中,记录第一写回页中每一行改写状态的位图,以及记录第一物理页的磨损状态的位图均可以保存在NVM200的内存204中,也可以缓存在NVM控制器202的缓存2024中,还可以存储在存储介质208中,在此不做限定。可以理解的,若将记录第一写回页中每一行改写状态的位图以及记录第一物理页的磨损状态的位图缓存在缓存2024中,则在断电后再次启动时,可以将记录第一物理页的磨损状态的位图设置为初始状态。其中,磨损状态的初始状态可以为“未磨损”。并且,在实际应用中,还可以根据实际情况,可以不保存存储介质208中所有物理页更新的磨损状态,而只保存访问较多的物理页的更新后的磨损状态。当需要对访问频率较低的物理页进行写操作时,可以为该频率较低的物理页临时建立一个初始的磨损状态位图或磨损状态向量,将该物理页的当前磨损状态初始化为“未磨损”。
需要说明的是,在本发明实施例中,不对步骤425和步骤430的执行顺序进行限定。也不对步骤435、步骤440和步骤445的执行顺序进行限定。
在本发明实施例中,在执行一次写操作的过程中,NVM控制器202不会对一个物理页执行了写操作就增加该物理页的磨损次数。在确定是否增加物理页的磨损次数时,NVM控制器202会综合考虑该物理页中各行的磨损状态以及本次写操作对各行的改写情况进行判断。在一种情形下,若本次写操作只需要对第一物理页中标识为“未磨损”的行(line)进行改写,则NVM控制器202在将第一数据写入第一物理页后,并不需要增加第一物理页的磨损次数。只是在更新第一物理页的磨损状态时,NVM控制器202需要将本次写入的行的磨损状态更新为“磨损”。本发明实施例提供的磨损均衡方法,能够以行(line)为粒度来判断是否增加物理页的磨损次数,与现有技术中只要对物理页执行了写操作即增加该物理页的磨损次数的方式相比,在维持较低的空间开销的基础上,能够更真实的反映第一物理页中每一行(line)的磨损情况,提高磨损次数的计算精确度,并能够进一步的延长非易失性存储器的使用寿命。
进一步的,在本发明实施例中,在另一种情形下,若本次写操作会对第一物理页中标识为“磨损”的行进行改写,NVM控制器202才会增加第一物理页的磨损次数。并且,在更新第一物理页的磨损状态时,NVM控制器202只会将第一物理页中磨损最严重的行的磨损状态保持为“磨损”,其他行的磨损状态被更新为“未磨损”。根据这种方式,能够更准确的反映第一物理页中各行(line)的磨损情况对第一物理页的磨损造成的影响,从而为下一次写操作提供更加真实的判断依据。
在另一种情形下,图6为本发明实施例提供的又一种磨损均衡方法流程图。如图6所示。该方法可以应用于图3所示的NVM中。该方法具体可以由图3中所示的NVM控制器202中的处理器2022来执行。图6所示的方法与图4所示的方法类似,下面将结合图3、图4和图5对图6进行简要介绍。
在步骤600中,NVM控制器202接收第二写请求,所述第二写请求中携带有待写入所述NVM的第二数据及第二逻辑地址。在图6所示的实施例将以写入第二数据为例进行说明。NVM控制器202接收的第二写请求可以包括中央处理器CPU100下发的写请求,也可以包括应用服务器110向存储***120发送的写请求。所述第二写请求中可以携带有待写入的第二数据以及第二逻辑地址。
在步骤605中,NVM控制器202根据第二逻辑地址确定所述第二数据待写入的第二物理地址。本领域人员可以知道,在NVM200中,可以预先设置逻辑地址与NVM介质208中的物理地址的对应关系。具体的,NVM控制器202可以根据第二逻辑地址以及预设的逻辑地址与物理地址的对应关系确定与第二逻辑地址对应的第二物理地址。
在步骤610中,NVM控制器202判断所述第二物理地址所属的第一物理页的磨损次数是否超过预设阈值,如果第一物理页的磨损次数超过预设阈值,则所述方法进入步骤618,否则,进入步骤615。在本发明实施例中仍然以第一物理页对应的地址范围包括第二物理地址为例进行描述。换一种表达方式,NVM控制器202根据第二物理地址可以将第二数据写入第一物理页中。为了使NVM介质208中的各个存储单元实现磨损均衡,以延长NVM200的使用寿命,在写操作过程中,可以预先判断待写入第二数据的第一物理页的磨损次数是否超过预设阈值。实际应用中,可以通过为第一物理页设置的计数器的值来判断第一物理页的磨损次数是否超过预设阈值。若第一物理页的磨损次数未超过预设阈值,该方法进入步骤615。若第一物理页的磨损次数超过预设阈值,该方法进入步骤618。
在步骤615中,NVM控制器202根据所述第一物理页对应的第一写回页中的数据以及所述第二数据获得所述第一写回页中每一行的改写状态。若在步骤610中,NVM控制器202判断第一物理页的磨损次数没有超过预设阈值,则NVM控制器202可以进入步骤615以获得所述第一写回页中每一行的改写状态。该方法进入步骤620。步骤615与步骤415类似,具体可以参见步骤415的描述,在此不再赘述。
在步骤618中,NVM控制器202将所述第二数据写入第二物理页中。其中,所述第二物理页的磨损次数不大于所述预设阈值。在本次写操作过程中,若在步骤610中,NVM控制器202判断第一物理页的磨损次数超过预设阈值,则NVM控制器202可以重新为分配一个物理页,例如第二物理页,并将第二数据写入第二物理页中。其中,第二物理页的磨损次数不大于所述预设阈值。通常情况下,第二物理页可以是最少被使用的物理页。或者,换一种表达方式,第二物理页可以是磨损次数最少的物理页。实际应用中,NVM控制器202可以通过交换第一物理页和第二物理页的内容,然后将第二逻辑地址对应的地址空间修改为指向第二物理页对应的地址空间来实现。具体在将第二数据写入第二物理页时,可以参照图4所示的方法将数据写入第二物理页,并对第二物理页的磨损次数和磨损状态进行更新。可以理解的是,实际应用中,选择第二物理页的方式可以根据具体的磨损均衡的算法来确定,在此不做限定。
具体的,NVM控制器202可以根据第二数据以及与第二物理页对应的第二写回页中的数据获得第二写回页中每一行的改写状态。例如,第二写回页中每一行(line)的改写状态如图5a所示中所示,第二写请求需要对第二写回页中的第一行、第二行以及第三行进行改写。若第二物理页当前的磨损状态如图5b所示,其中,第一行和第三行的磨损状态为“未磨损”,第二行和第四行的磨损状态为“磨损”。根据图5a所示的第二写回页的改写状态以及图5b所示的第二物理页当前的磨损状态可知,本次写操作需要对标识为“磨损”的行(第二写回页中的第二行)进行改写。因此,NVM控制器202根据第二物理地址将第二数据写入第二物理页后,需要增加第二物理页的磨损次数,并且需要对第二物理页的磨损状态进行更新。更新后的第二物理页的磨损状态可以如图5d所示,更新后的第二物理页的磨损状态为:第一行、第三行和第四行的磨损状态为“未磨损”,第二行的磨损状态为“磨损”。
在步骤620中,NVM控制器202判断本次写操作是否只需要对所述第一物理页中标识为未磨损的行进行改写,如果本次写操作只需要对所述第一物理页中标识为未磨损的行进行改写,则进入步骤625,否则进入步骤635。
在步骤625中,NVM控制器202将所述第一物理页的磨损次数保持不变,并根据所述第二物理地址将所述第二数据写入所述第一物理页中。
在步骤630中,NVM控制器202将所述第一物理页中在本次写操作中未被改写的行的磨损状态保持不变,并且,将本次写操作中进行改写的行的磨损状态设置为磨损。
在步骤635中,NVM控制器202将所述第一物理页的磨损次数加1。
在步骤640中,NVM控制器202根据所述第二物理地址将所述第二数据写入所述第一物理页中。
在步骤645中,NVM控制器202将所述第一物理页中标识为磨损且在本次写操作中进行了改写的行的磨损状态保持为磨损,并将其他行的磨损状态更新为未磨损。
由于图6所示的实施例中NVM控制器202将第二数据写入第一物理页的处理过程与图4所示的实施例中NVM控制器202将第一数据写入第一物理页的处理过程类似,因此,步骤615-步骤645可以分别参见步骤415-步骤445的相应描述,在此不再赘述。
图6所述的实施例在图4所示的实施例的基础上,为了实现存储介质208内部各存储单元的磨损均衡,当写入第二数据时,若确定待写入第二数据的第一物理页的磨损次数超过预设阈值,则可以将所述第二数据写入磨损次数未超过预设阈值的第二物理页中。从而在各物理页之间实现了磨损均衡。
本发明实施例提供的磨损均衡方法,能够以行(line)为粒度来判断是否增加物理页的磨损次数,与现有技术中只要对物理页执行了写操作即增加该物理页的磨损次数的方式相比,在维持较低的空间开销的基础上,能够提高磨损次数的计算精确度,更真实的反映第一物理页中每一行(line)的磨损情况,从而能够进一步的延长非易失性存储器的使用寿命。
图7为本发明实施例提供的一种磨损均衡装置的结构示意图。磨损均衡装置70可以用于执行上述如图4和图6所示的方法。如图7所示,该磨损均衡装置70可以包括:
接收模块700,用于接收第一写请求,所述第一写请求中携带有待写入非易失性存储器NVM中的第一物理页的第一数据,其中,所述NVM包括多个物理页,每一个物理页page包括多行line,每一行包括多个字节Byte。需要说明的是,本发明实施例中的第一数据并不只代表一位(bit)数据,而是用于表示第一写请求中携带的要写入的所有数据,例如,可以包括多位(bit)数据。
在本发明实施例中,可以以“页”(page)为单位管理NVM的物理空间。一个物理页的大小可以设置为4k、8k或16k等等,在此不做限定。一个物理页(page)中包含多个行(line),每一行包括多个字节(Byte)。NVM控制器202向存储介质208中写入数据时,可以按位(bit)写入。换一种表达方式,NVM控制器202可以以一个位(bit)为单位向存储介质208中写入数据。可以理解的是,本发明实施例中描述的第一物理页和第二物理页可以是NVM200中的任意一个物理页。
确定模块705,用于确定所述第一物理页的磨损次数未超过预设阈值。在本发明实施例中,可以以一个页(page)为单位对NVM200做磨损均衡的管理。实际应用中,可以通过设置计数器来记录NVM200中的每一个物理页的磨损次数。NVM控制器202在接收到第一写请求后,可以根据为所属的所述第一物理页设置的计数器显示的磨损次数来判断是否可以将所述第一数据写入所述第一物理页。具体的,若第一物理页的磨损次数超过预设阈值,则将所述第一数据写到其他物理页中,以减少第一物理页的磨损。若第一物理页的磨损次数未超过预设阈值,则触发获取模块710。
获取模块710,用于根据所述第一物理页对应的第一写回页中的数据以及所述第一数据获得所述第一写回页中每一行的改写状态,其中,所述第一写回页中的数据为缓存的所述第一物理页中的数据。
判断模块715,用于根据记录的所述第一物理页的磨损状态以及所述第一写回页中每一行的改写状态判断本次写操作是否只需要对所述第一物理页中标识为未磨损的行进行改写。本发明实施例中,第一写回页中的数据为缓存的第一物理页中的数据。实际应用中,判断模块715可以根据接收的第一数据以及缓存的与第一物理页对应的第一写回页来确定第一写回页中每一行的改写状态。具体的,可以将接收的第一数据写入第一写回页的相应位置,从而可以获知在本次写操作中所述第一写回页中每一行的改写状态。若本次写操作中需要对某一行(line)中的至少一位(Bit)进行改写,则确认该行的改写状态为“改写”。若本次写操作中不会对某一行(line)中的任意一位(Bit)进行改写,则确定该行的改写状态为“未改写”。需要说明的是,本发明实施例中,改写操作可以包括在一次操作过程中,将某一位数据由“0”修改为“1”或由“1”修改为“0”的过程。在本发明实施例中,可以采用“0”来标识改写状态为“未改写”,用“1”来标识改写状态为“改写”,在此不对标识位的具体形式做限定。实际应用中,判断模块715可以根据记录的所述第一物理页的磨损状态以及所述第一写回页中每一行的改写状态来判断本次写操作是否只需要对所述第一物理页中标识为未磨损的行进行改写。
处理模块720,用于在判断本次写操作只需要对所述第一物理页中标识为未磨损的行进行改写的情况下,保持所述第一物理页的磨损次数不变,并将所述数据写入所述第一物理页。具体的,若判断模块715据记录的所述第一物理页的磨损状态以及所述第一写回页中每一行的改写状态判断本次写操作只需要对所述第一物理页中标识为未磨损的行进行改写,则处理模块720可以将所述第一数据写入所述第一物理页,且不会增加第一物理页的磨损次数。具体的,NVM控制器202可以根据第一物理地址将第一数据写入第一物理页中的相应位置。
实际应用中,磨损均衡装置70还可以包括:记录模块725,用于在所述处理模块720根据所述物理地址将所述数据写入所述第一物理页中后,将所述第一物理页中未被改写的行的磨损状态保持不变,并且,将在本次操作中进行了改写的行的磨损状态设置为磨损。
在又一种情形下,若判断模块715判断本次写操作需要对所述第一物理页中标识为磨损的行进行改写,则处理模块720,还用于将所述第一物理页的磨损次数增加一个预设值,并将所述第一数据写入所述第一物理页中。记录模块725,还用于将所述第一物理页中标识为磨损且在本次写操作中进行了改写的行的磨损状态保持为磨损,并将其他行的磨损状态更新为未磨损。
在又一种情形下,接收模块700还用于接收第二写请求,所述第二写请求中携带待写入所述第一物理页的第二数据。确定模块705还用于确定所述第一物理页的磨损次数大于预设阈值。处理模块720还用于在确定模块705确定所述第一物理页的磨损次数大于预设阈值的情况下,将所述第二数据写入第二物理页中,其中,所述第二物理页的磨损次数不大于所述预设阈值。实际应用中,第二物理页可以为所述存储介质中磨损次数最少的物理页。
本发明实施例所提供的磨损均衡装置70可以执行图4和图6所述实施例所描述的磨损均衡方法,各个单元功能的详细描述可参见方法实施例中的描述,在此不再赘述。
可以理解的是,图7所示的实施例仅仅是示意性的。例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个模块或组件可以结合或者可以集成到另一个设备中,或一些特征可以忽略,或不执行。另一点,图7所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的。作为模块显示的部件可以是或者也可以不是物理单元。各模块或部件可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
本发明实施例还提供一种数据处理的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行前述任意一个方法实施例所述的方法流程。本领域普通技术人员可以理解,前述的存储介质包括:U盘、移动硬盘、磁碟、光盘、随机存储器(Random-Access Memory,RAM)、固态硬盘(Solid State Disk,SSD)或者非易失性存储器(non-volatile memory)等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。
需要说明的是,本申请所提供的实施例仅仅是示意性的。例如,上述实施例中各部件的划分,实际实现时还可以有另外的划分方式。例如多个模块或组件可以结合或者可以集成到另一个设备中,或一些特征可以忽略,或不执行。另外,所显示或讨论的部件相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口、模块的间接耦合或通信连接,可以包括电性连接、机械连接或其它的连接形式。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本发明实施例、权利要求以及附图中揭示的特征可以独立存在也可以组合存在。在本发明实施例中以硬件形式描述的特征可以通过软件来执行,反之亦然。在此不做限定。
Claims (20)
1.一种非易失性存储器NVM,其特征在于,所述NVM包括:
存储介质,用于存储数据,其中,所述存储介质包括多个物理页,每一个物理页page包括多行line,每一行包括多个字节Byte;
NVM控制器,用于接收第一写请求,所述第一写请求中携带有待写入所述NVM中的第一物理页的第一数据;
确定所述第一物理页的磨损次数未超过预设阈值;
根据与所述第一物理页对应的第一写回页中的数据以及所述第一数据获得所述第一写回页中每一行的改写状态,其中,所述第一写回页中的数据为缓存的所述第一物理页中的数据;
根据记录的所述第一物理页的磨损状态以及所述第一写回页中每一行的改写状态判断本次写操作是否只需要对所述第一物理页中标识为未磨损的行进行改写;
在判断本次写操作只需要对所述第一物理页中标识为未磨损的行进行改写的情况下,保持所述第一物理页的磨损次数不变,并将所述第一数据写入所述第一物理页。
2.根据权利要求1所述的NVM,其特征在于,所述NVM控制器还用于:
在将所述第一数据写入所述第一物理页中后,将所述第一物理页中未被改写的行的磨损状态保持不变,并且,将在本次写操作中进行了改写的行的磨损状态设置为磨损。
3.根据权利要求1或2所述的NVM,其特征在于,所述NVM控制器还用于:
在判断本次写操作需要对所述第一物理页中标识为磨损的行进行改写的情况下,将所述第一物理页的磨损次数增加一个预设值;
将所述第一数据写入所述第一物理页中;
将所述第一物理页中标识为磨损且在本次写操作中进行了改写的行的磨损状态保持为磨损,并将其他行的磨损状态更新为未磨损。
4.根据权利要求1或2所述的NVM,其特征在于,所述NVM控制器还用于:
接收第二写请求,所述第二写请求中携带有待写入所述第一物理页的第二数据;
确定所述第一物理页的磨损次数大于预设阈值;
将所述第二数据写入第二物理页中,其中,所述第二物理页的磨损次数不大于所述预设阈值。
5.根据权利要求4所述的NVM,其特征在于:所述第二物理页为所述存储介质中磨损次数最少的物理页。
6.根据权利要求1或2所述的NVM,其特征在于,还包括:
内存,用于存储记录的所述第一物理页的磨损状态。
7.根据权利要求1或2所述的NVM,其特征在于,所述NVM包括:相变存储器PCM、阻变存储器RRAM、磁性存储器MRAM或铁电式存储器FRAM。
8.一种磨损均衡方法,所述方法应用于非易失性存储器NVM中,其特征在于,所述方法包括:
接收第一写请求,所述第一写请求中携带有待写入所述NVM中的第一物理页的第一数据,其中,所述NVM包括多个物理页,每一个物理页page包括多行line,每一行包括多个字节Byte;
确定所述第一物理页的磨损次数未超过预设阈值;
根据所述第一物理页对应的第一写回页中的数据以及所述第一数据获得所述第一写回页中每一行的改写状态,其中,所述第一写回页中的数据为缓存的所述第一物理页中的数据;
根据记录的所述第一物理页的磨损状态以及所述第一写回页中每一行的改写状态判断本次写操作是否只需要对所述第一物理页中标识为未磨损的行进行改写;
在判断本次写操作只需要对所述第一物理页中标识为未磨损的行进行改写的情况下,保持所述第一物理页的磨损次数不变,并将所述数据写入所述第一物理页。
9.根据权利要求8所述的方法,其特征在于,在将所述数据写入所述第一物理页中后,还包括:
将所述第一物理页中未被改写的行的磨损状态保持不变,并且,将在本次操作中进行了改写的行的磨损状态设置为磨损。
10.根据权利要求8或9所述的方法,其特征在于,还包括:
在判断本次写操作需要对所述第一物理页中标识为磨损的行进行改写的情况下,将所述第一物理页的磨损次数增加一个预设值;
将所述第一数据写入所述第一物理页中;
将所述第一物理页中标识为磨损且在本次写操作中进行了改写的行的磨损状态保持为磨损,并将其他行的磨损状态更新为未磨损。
11.根据权利要求8或9所述的方法,其特征在于,还包括:
接收第二写请求,所述第二写请求中携带待写入所述第一物理页的第二数据;
确定所述第一物理页的磨损次数大于预设阈值;
将所述第二数据写入第二物理页中,其中,所述第二物理页的磨损次数不大于所述预设阈值。
12.根据权利要求11所述的方法,其特征在于:所述第二物理页为所述NVM中磨损次数最少的物理页。
13.根据权利要求8或9所述的方法,其特征在于:所述记录的所述第一物理页的磨损状态存储于所述NVM的内存中。
14.根据权利要求8或9所述的方法,其特征在于:所述NVM包括相变存储器PCM、阻变存储器RRAM、磁性存储器MRAM或铁电式存储器FRAM。
15.一种磨损均衡装置,其特征在于,包括:
接收模块,用于接收第一写请求,所述第一写请求中携带有待写入非易失性存储器NVM中的第一物理页的第一数据,其中,所述NVM包括多个物理页,每一个物理页page包括多行line,每一行包括多个字节Byte;
确定模块,用于确定所述第一物理页的磨损次数未超过预设阈值;
获取模块,用于根据所述第一物理页对应的第一写回页中的数据以及所述第一数据获得所述第一写回页中每一行的改写状态,其中,所述第一写回页中的数据为缓存的所述第一物理页中的数据;
判断模块,用于根据记录的所述第一物理页的磨损状态以及所述第一写回页中每一行的改写状态判断本次写操作是否只需要对所述第一物理页中标识为未磨损的行进行改写;
处理模块,用于在判断本次写操作只需要对所述第一物理页中标识为未磨损的行进行改写的情况下,保持所述第一物理页的磨损次数不变,并将所述数据写入所述第一物理页。
16.根据权利要求15所述的装置,其特征在于,还包括:
记录模块,用于在所述处理模块将所述数据写入所述第一物理页中后,将所述第一物理页中未被改写的行的磨损状态保持不变,并且,将在本次操作中进行了改写的行的磨损状态设置为磨损。
17.根据权利要求15或16所述的装置,其特征在于:
所述处理模块,还用于在所述判断模块判断本次写操作需要对所述第一物理页中标识为磨损的行进行改写的情况下,将所述第一物理页的磨损次数增加一个预设值,并将所述第一数据写入所述第一物理页中;
所述记录模块,还用于将所述第一物理页中标识为磨损且在本次写操作中进行了改写的行的磨损状态保持为磨损,并将其他行的磨损状态更新为未磨损。
18.根据权利要求15或16所述的装置,其特征在于:
所述接收模块,还用于接收第二写请求,所述第二写请求中携带待写入所述第一物理页的第二数据;
所述确定模块,还用于确定所述第一物理页的磨损次数大于预设阈值;
所述处理模块,还用于在所述确定模块确定所述第一物理页的磨损次数大于预设阈值的情况下,将所述第二数据写入第二物理页中,其中,所述第二物理页的磨损次数不大于所述预设阈值。
19.根据权利要求18所述的装置,其特征在于:所述第二物理页为所述NVM中磨损次数最少的物理页。
20.根据权利要求15或16所述的装置,其特征在于:所述NVM包括相变存储器PCM、阻变存储器RRAM、磁性存储器MRAM或铁电式存储器FRAM。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410411569.7A CN105354152B (zh) | 2014-08-19 | 2014-08-19 | 非易失性存储器及磨损均衡方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410411569.7A CN105354152B (zh) | 2014-08-19 | 2014-08-19 | 非易失性存储器及磨损均衡方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105354152A CN105354152A (zh) | 2016-02-24 |
CN105354152B true CN105354152B (zh) | 2018-06-26 |
Family
ID=55330126
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410411569.7A Active CN105354152B (zh) | 2014-08-19 | 2014-08-19 | 非易失性存储器及磨损均衡方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105354152B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107665090B (zh) * | 2016-07-27 | 2021-09-03 | 北京忆恒创源科技有限公司 | 实现全局磨损均衡的方法 |
EP3553665B1 (en) * | 2016-12-28 | 2024-05-15 | Huawei Technologies Co., Ltd. | Non-volatile memory access method, device, and system |
GB2559119B (en) * | 2017-01-20 | 2020-12-30 | Advanced Risc Mach Ltd | Apparatus and methods to prolong lifetime of memories |
CN106951193B (zh) * | 2017-03-27 | 2019-11-12 | 深圳佰维存储科技股份有限公司 | 改善Nand Flash存储性能的方法及其*** |
CN107016100A (zh) * | 2017-04-10 | 2017-08-04 | 重庆大学 | 一种基于非易失性内存文件***的元数据管理方法 |
CN107577492A (zh) * | 2017-08-10 | 2018-01-12 | 上海交通大学 | 加速文件***读写的nvm块设备驱动方法及*** |
CN111913647B (zh) * | 2019-05-08 | 2022-10-11 | 华为技术有限公司 | 一种存储设备的磨损均衡方法、装置及相关设备 |
CN111258925B (zh) * | 2020-01-20 | 2022-05-27 | 中国科学院微电子研究所 | 非易失内存的访问方法、装置、内存控制器、设备及介质 |
CN111597125B (zh) * | 2020-05-09 | 2023-04-25 | 重庆大学 | 一种非易失内存文件***索引节点的磨损均衡方法及*** |
CN112486857B (zh) * | 2020-10-29 | 2023-08-29 | 中山大学 | 一种磨损感知和负载均衡的多层非易失缓存方法 |
CN112599172B (zh) * | 2020-12-24 | 2024-05-17 | 潍柴动力股份有限公司 | 电子控制单元的数据写入方法、装置及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6065099A (en) * | 1997-08-20 | 2000-05-16 | Cypress Semiconductor Corp. | System and method for updating the data stored in a cache memory attached to an input/output system |
CN102508785A (zh) * | 2011-11-02 | 2012-06-20 | 清华大学 | 一种磨损均衡方法及装置 |
CN102722455A (zh) * | 2012-05-22 | 2012-10-10 | 深圳市江波龙电子有限公司 | 一种闪存设备中数据存储的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101666987B1 (ko) * | 2010-04-20 | 2016-10-17 | 삼성전자주식회사 | 메모리 시스템 및 그것의 동작 방법 |
-
2014
- 2014-08-19 CN CN201410411569.7A patent/CN105354152B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6065099A (en) * | 1997-08-20 | 2000-05-16 | Cypress Semiconductor Corp. | System and method for updating the data stored in a cache memory attached to an input/output system |
CN102508785A (zh) * | 2011-11-02 | 2012-06-20 | 清华大学 | 一种磨损均衡方法及装置 |
CN102722455A (zh) * | 2012-05-22 | 2012-10-10 | 深圳市江波龙电子有限公司 | 一种闪存设备中数据存储的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105354152A (zh) | 2016-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105354152B (zh) | 非易失性存储器及磨损均衡方法 | |
CN103946816B (zh) | 作为传统大容量存储设备的替代的非易失性随机存取存储器(nvram) | |
KR102462407B1 (ko) | 저장 디바이스의 현재 소모 프로파일에 기초한 사용자에 대해 이용불가능한 저장 디바이스에서의 스페어 공간에 대한 조정들의 결정 | |
CN103946811B (zh) | 用于实现具有不同操作模式的多级存储器分级结构的设备和方法 | |
CN107301134A (zh) | 存储装置中的磨损均衡 | |
TWI710912B (zh) | 記憶體系統及實施於記憶體系統中之方法,以及非暫時性電腦儲存媒體 | |
CN109901790A (zh) | 存储器***及控制方法 | |
CN110389718A (zh) | 存储***及非易失性存储器的控制方法 | |
US10915443B2 (en) | Allocation of overprovisioned blocks for minimizing write amplification in solid state drives | |
US10997080B1 (en) | Method and system for address table cache management based on correlation metric of first logical address and second logical address, wherein the correlation metric is incremented and decremented based on receive order of the first logical address and the second logical address | |
WO2021055281A1 (en) | Accessing stored metadata to identify memory devices in which data is stored | |
CN109753234A (zh) | 存储器***及非易失性存储器的控制方法 | |
WO2021030367A1 (en) | Memory tiering using pcie connected far memory | |
WO2019005235A1 (en) | DEPTH DEPTH MANAGEMENT FOR HOST SYSTEMS ACCESSING EXPRESS PERIPHERAL COMPONENT INTERCONNECTION DEVICE (PCIE) THROUGH A PCIE SWITCH | |
KR20170110810A (ko) | 데이터 처리 시스템 및 그것의 동작 방법 | |
CN109690504A (zh) | 混合式存储器驱动器、计算机***及用于操作多重模式混合式驱动器的相关方法 | |
JP2023518242A (ja) | メモリサブシステムにおける作業負荷レベルに基づく電力モードの設定 | |
CN110046058A (zh) | 存储器*** | |
CN106919342A (zh) | 基于自动精简配置的存储资源分配方法和装置 | |
CN102929813A (zh) | 一种pci-e接口固态硬盘控制器的设计方法 | |
CN109101186A (zh) | 数据储存装置与数据储存方法 | |
CN109815157A (zh) | 编程命令处理方法与装置 | |
CN104699414B (zh) | 一种数据读写方法及存储设备 | |
WO2023057990A1 (en) | Machine learning-enabled management of storage media access | |
CN109656471A (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 |