CN109643274B - 多个数据温度区的交叉点存储器的磨损均衡方法 - Google Patents

多个数据温度区的交叉点存储器的磨损均衡方法 Download PDF

Info

Publication number
CN109643274B
CN109643274B CN201780051147.5A CN201780051147A CN109643274B CN 109643274 B CN109643274 B CN 109643274B CN 201780051147 A CN201780051147 A CN 201780051147A CN 109643274 B CN109643274 B CN 109643274B
Authority
CN
China
Prior art keywords
memory
storage unit
data
mus
smu
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
CN201780051147.5A
Other languages
English (en)
Other versions
CN109643274A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN109643274A publication Critical patent/CN109643274A/zh
Application granted granted Critical
Publication of CN109643274B publication Critical patent/CN109643274B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • 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/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Abstract

一种由处理器执行的改进交叉点(cross‑point,X3D)存储器中的磨损均衡的方法,包括:耦合到所述X3D存储器的处理器检测触发事件,其中,所述X3D存储器包括第一部分存储单元和第二部分存储单元;响应于检测所述触发事件,所述处理器将存储在所述第一部分存储单元的第一存储单元中的数据迁移到与所述第一部分存储单元的最后一个存储单元相邻的存储单元,以及所述处理器将存储在所述第二部分存储单元的第一存储单元中的数据迁移到与所述第二部分存储单元的最后一个存储单元相邻的存储单元。

Description

多个数据温度区的交叉点存储器的磨损均衡方法
相关申请案交叉申请
本申请要求2016年8月24日由Xiangyu Tang、Ken Hu、Xiaobing Lee和YunxiangWu递交的发明名称为“多个数据温度区的交叉点存储器的磨损均衡方法(Wear-LevelingMethod for Cross-Point Memory for Multiple Data Temperature Zones)”的第62/379,228号美国临时专利申请案以及2016年9月1日由Xiangyu Tang、Ken Hu、Xiaobing Lee和Yunxiang Wu递交的发明名称为“多个数据温度区的交叉点存储器的磨损均衡方法(Wear-Leveling Method for Cross-Point Memory for Multiple Data TemperatureZones)”的第62/382,581号美国临时专利申请案以及2017年1月31日递交的发明名称为“多个数据温度区的交叉点存储器的磨损均衡方法(Wear-Leveling Method for Cross-PointMemory for Multiple Data Temperature Zones)”的第15/420,696号美国实用新型申请案的在先申请优先权,这些在先申请案中的每个和所有的全部内容均以引入的方式并入本文本中。
技术领域
本发明涉及存储系统,更具体地,涉及访问存储器的系统和方法。
背景技术
存储系统内的存储单元或物理位置的磨损根据对每个单元进行编程的频率而有所不同。如果对某个单元或更一般地,存储单元进行一次编程,然后从不进行有效的重编程,则与该单元相关联的磨损通常相对较小。然而,如果重复写入和擦除某个单元,则与该单元相关联的磨损通常相对较大。当主机使用逻辑块地址(logical block address,LBA)时,如果主机重复使用相同的LBA来写入和重写数据,则重复写入和擦除闪存系统内的相同物理位置或单元。
当一些单元有效地被磨损而其它单元相对未被磨损时,磨损单元的存在通常会降低闪存系统的整体性能。除了降低与磨损单元本身相关联的性能之外,当没有足够数量的未磨损单元存储所需数据时,存储系统的整体性能可能受到不利影响。通常,当存储系统中存在临界数量的磨损单元时,即使闪存系统中的许多其它单元相对未磨损,存储系统也可能认为是不可用的。
为了提高闪存系统内的单元相当均匀地被磨损的可能性,通常执行磨损均衡操作。磨损均衡操作通常用于使得与特定LBA相关联的单元进行改变,这样相同LBA不总是与相同单元相关联。通过改变LBA的单元关联性,特定单元在其它单元磨损之前很难磨损。
发明内容
交叉点(cross-point,X3D)存储器包括可以在不必读取、擦除和编程其它存储器的情况下更新的存储单元。因此,将X3D存储器包含在移动设备中提供了使用所述移动设备更快地访问和更新数据的方法。然而,目前的X3D技术没有实施磨损均衡机制来延长所述X3D存储器的寿命。本发明实施例涉及将多个第一连续存储单元配置为存储热数据的小存储单元(small memory unit,SMU)以及将多个第二连续存储单元配置为存储温或冷数据的大存储单元(1arge memory unit,LMU)。在磨损均衡的每次迭代期间,存储在所述SMU的第一SMU处的热数据与存储在所述LMU的第一LMU处的温/冷数据交换位置。交换热数据与温/冷数据的存储位置有助于确保这些位置的存储单元以基本相同的速率磨损。另外,存储在所述SMU和LMU处的数据结构将由于所述SMU和LMU的连续性而保持它们的相对顺序。
在一个示例实施例中,本发明包括一种由处理器执行的改进X3D存储器中的磨损均衡的方法,包括:耦合到所述X3D存储器的处理器检测触发事件,其中,所述X3D存储器包括第一部分存储单元和第二部分存储单元,所述第一部分存储单元包括用于存储第一类型数据的多个连续存储单元,第二部分存储单元包括用于存储第二类型数据的多个存储单元;以及响应于检测所述触发事件,所述处理器将存储在所述第一部分存储单元的第一存储单元中的数据迁移到与所述第一部分存储单元的最后一个存储单元相邻的存储单元,以及所述处理器将存储在所述第二部分存储单元的第一存储单元中的数据迁移到与所述第二部分存储单元的最后一个存储单元相邻的存储单元。在一些实施例中,本发明还包括:所述触发事件发生于所述第一部分存储单元的所述多个连续存储单元中的一个或多个的访问频率中的至少一个达到预定阈值时,和/或所述触发事件根据预定时间表发生,所述时间表指示何时需要对所述X3D存储器执行磨损均衡的下一次迭代,和/或与所述第一部分存储单元的所述最后一个存储单元相邻的所述存储单元为所述第二部分存储单元的所述第一存储单元或空存储单元中的至少一个,和/或将存储在所述第一部分存储单元的所述第一存储单元中的所述数据迁移到与所述第一部分存储单元的所述最后一个存储单元相邻的所述存储单元包括将存储在所述第一部分存储单元的所述第一存储单元中的所述数据迁移到所述第二部分存储单元的所述第一存储单元的位置,和/或将存储在所述第二部分存储单元的所述第一存储单元中的所述数据迁移到与所述第二部分存储单元的所述最后一个存储单元相邻的所述存储单元包括将存储在所述第二部分存储单元的所述第一存储单元中的所述数据迁移到所述第一部分存储单元的所述第一存储单元的位置,和/或空存储单元位于所述第二部分存储单元的所述最后一个存储单元与所述第一部分存储单元的所述第一存储单元之间,其中,将存储在所述第一部分存储单元的所述第一存储单元中的所述数据迁移到与所述第一部分存储单元的所述最后一个存储单元相邻的所述存储单元包括将存储在所述第一部分存储单元的所述第一存储单元中的所述数据迁移到所述第二部分存储单元的所述第一存储单元的所述位置,以及将存储在所述第二部分存储单元的所述第一存储单元中的所述数据迁移到与所述第二部分存储单元的所述最后一个存储单元相邻的所述存储单元包括:所述处理器将存储在所述第二部分存储单元的所述第一存储单元中的所述数据迁移到所述空存储单元,以及所述处理器擦除存储在所述第一部分存储单元的所述第一存储单元中的所述数据,使得所述第一部分存储单元的所述第一存储单元变为所述空存储单元,和/或所述第一部分存储单元包括用于存储第一类型数据的多个SMU,所述第二部分存储单元包括用于存储第二类型数据的多个LMU,所述X3D存储器还包括第三部分存储单元,所述第三部分存储单元包括用于存储第三类型数据的多个介质存储单元(medium memory unit,MMU)。
在另一个示例实施例中,本发明包括X3D存储系统,包括:多个SMU,存储在所述X3D存储器中的连续位置上并且用于存储第一类型数据;多个LMU,存储在X3D存储器中的连续位置上并且用于存储第二类型数据;以及至少一个处理器,用于:检测触发事件,其中,响应于所述触发事件,所述至少一个处理器将存储在所述多个SMU的第一SMU中的数据迁移到与所述多个SMU的最后一个SMU相邻的存储单元,其中,所述多个SMU存储在所述X3D存储系统中的连续位置上,以及将存储在所述多个LMU的第一LMU中的数据迁移到与所述多个LMU的最后一个LMU相邻的存储单元,其中,所述多个LMU存储在所述X3D存储系统中的连续位置上。在一些实施例中,本发明还包括:还包括连续地设置在所述多个LMU与所述多个SMU之间的一个或多个空存储单元,和/或所述至少一个处理器还执行以下步骤:更新所述X3D存储器的位置数据以指示存储在所述第一SMU中的所述数据已经迁移到与所述最后一个SMU相邻的所述存储单元的位置,以及更新所述X3D存储器的所述位置数据以指示存储在所述第一LMU中的所述数据已经迁移到与所述最后一个LMU相邻的所述存储单元的位置,和/或所述第一类型数据为已经在预定时间段内访问的数据,和/或所述多个SMU中的每个SMU均存储一部分闪存转换层(flash translation layer,FTL)表,和/或还包括至少一个空存储单元,用于在将所述第一SMU中的所述数据迁移到与所述最后一个LMU相邻的所述存储单元时将存储在所述第一LMU中的所述数据临时存储起来,和/或还包括至少一个空存储单元,用于在将所述第一LMU中的所述数据迁移到与所述最后一个SMU相邻的所述存储单元时将存储所述第一SMU中的所述数据临时存储起来。
在另一个示例实施例中,本发明包括混合存储设备(hybrid memory device,HMD),包括:X3D存储器,包括第一多个存储单元(memory unit,MU)和第二多个MU;处理器,耦合到所述X3D存储器并且用于检测触发对所述X3D存储器执行磨损均衡迭代的触发事件,其中,存储在所述第一多个MU的第一MU中的数据迁移到与所述第一多个MU的最后一个MU相邻的MU中,所述第一多个MU存储在所述X3D存储器中的连续位置上,存储在所述第二多个MU的第一MU中的数据迁移到与所述第二多个MU的最后一个MU相邻的MU中,以及所述第二多个MU存储在所述X3D存储器中的连续位置上。在一些实施例中,本发明还包括:还包括耦合到所述处理器和所述X3D存储器的辅助存储器,其中,所述X3D存储器包括第一类型数据,所述辅助存储器包括第二类型数据,和/或还包括耦合到所述处理器和所述X3D存储器的临时存储器,其中,所述临时存储器包括所述第一多个MU的所述第一MU中的位置、所述第一多个MU的所述最后一个MU中的位置、所述第二多个MU的所述第一MU中的位置和所述第二多个MU的所述最后一个MU中的位置中的至少一个,和/或在将存储在所述第一多个MU的所述第一MU中的所述数据迁移到与所述第一多个MU的所述最后一个MU相邻的存储单元之后更新所述第一多个MU的所述第一MU中的所述位置,以及在将存储在所述第二多个MU的所述第一MU中的所述数据迁移到与所述第二多个MU的所述最后一个MU的存储单元之后更新所述第二多个MU的所述第一MU中的所述位置,和/或所述X3D存储器包括至少一个空存储单元,将存储在所述第一多个MU的所述第一MU中的所述数据写入到所述空存储单元,将存储在所述第二多个MU的所述第一MU中的所述数据写入到所述第一多个MU的所述第一MU所在的所述存储单元,和/或所述X3D存储器包括至少一个空存储单元,将存储在所述第二多个MU的所述第一MU中的所述数据写入到所述空存储单元,将存储在所述第一多个MU的所述第一MU中的所述数据写入到所述第二多个MU的所述第一MU所在的所述存储单元。
为了清晰起见,在本发明的范围内,上述实施例中的任何一个可以与上述其它实施例中的任何一个或多个组合来创建新的实施例。
在下文结合附图和权利要求的详细描述中,可以更清楚地理解这些和其它特征。
附图说明
为了更透彻地理解本发明,现参阅结合附图和具体实施方式而描述的以下简要说明,其中的相同参考标号表示相同部分。
图1示出了实施本文所述磨损均衡实施例的HMD的实施例。
图2示出了X3D存储器的实施例。
图3所示为一种用于X3D存储器中的磨损均衡的方法300。
图4A和图4B示出了对X3D存储器执行磨损均衡之前的该X3D存储器的初始状态的表示。
图5A和图5B示出了对X3D存储器执行磨损均衡的第一次迭代之后的X3D存储器的表示。
图6A和图6B示出了对X3D存储器执行磨损均衡的第二次迭代之后的X3D存储器的表示。
图7A和图7B示出了对X3D存储器执行磨损均衡的第三次迭代之后的X3D存储器的表示。
图8A和图8B示出了对X3D存储器执行磨损均衡的第四次迭代之后的X3D存储器的表示。
图9A和图9B示出了对X3D存储器执行磨损均衡的第五次迭代之后的X3D存储器的表示。
图10A和图10B示出了对具有空存储单元的X3D存储器执行磨损均衡之前的该X3D存储器的初始状态的表示。
图11A和图11B示出了对X3D存储器执行第一磨损均衡之后的具有空存储单元的X3D存储器的初始状态的表示。
图12A和图12B示出了对X3D存储器执行第二磨损均衡之后的具有空存储单元的X3D存储器的初始状态的表示。
图13A和图13B示出了具有存储各种类型数据的多个部分的X3D存储器的表示。
具体实施方式
首先应理解,尽管下文提供了一项或多项实施例的说明性实施方案,但所公开的系统和/或方法可使用任何数目的技术来实施,无论该技术是当前已知还是现有的。本发明决不应限于下文所说明的说明性实施方案、附图和技术,包括本文所说明并描述的示例性设计和实施方案,而是可在所附权利要求书的范围以及其等效物的完整范围内修改。
移动设备上的常规存储系统包括各种不同类型的存储器,每个存储器根据对数据执行的读取和/或写入等访问操作的频率来存储不同类型的数据。移动设备通常包括:随机存取存储器(random access memory,RAM),例如动态RAM(dynamic RAM,DRAM)或静态RAM(static RAM,SRAM),用以存储热数据;硬盘,例如固态驱动器或硬盘驱动器,用以存储冷数据。一些移动设备还可以包括闪存,例如NAND闪存,用以存储温数据。热数据一般是指访问操作相对频繁执行的数据。例如,FTL表通常认为是热数据,因为FTL表需要频繁写入和更新。因此,由于需要对FTL表执行的写入周期的数量多,FTL表通常存储在移动设备的RAM中。温数据一般是指访问操作的执行频率比热数据低但比冷数据高的数据。例如,频繁读取但不频繁写入的用户数据,例如图片或文档,可以认为是温数据。因此,当移动设备包括闪存时,这类图片或文档通常存储在移动设备的闪存中。冷数据一般是指访问操作很少执行的数据。例如,很少读取且从不更新的用户数据,例如用户读取一次的文档,可以认为是冷数据。因此,很少访问的文档通常存储在移动设备的硬盘中。在一个实施例中,移动设备可以不包括闪存。在此种实施例中,硬盘将同时存储温数据和冷数据。
DRAM和SRAM等RAM通常用于存储热数据,因为RAM存储速度快。然而,RAM相对昂贵,尤其是容量大时。RAM还是易失性的,因为存储在RAM中的数据在RAM未通电时最终会丢失。硬盘的存储速度比RAM慢几个数量级,但是硬盘非常便宜且容量大。因此,大多数用户数据存储在硬盘中。存储温数据的闪存比RAM便宜,而且存储速度比硬盘快得多。不同类型的存储器设备之间的性能、容量和成本的这些差异迫使移动设备具有受限的热数据存储容量,从而在移动设备所需数据不可用时产生大的性能损失。
X3D技术和存储器通过提高可以访问存储在X3D存储器中的数据的数据访问速度来增加数据存储量。X3D存储器包括可以直接访问而不必读取、擦除和编程其它存储单元的存储单元。因此,X3D技术支持存储器的原地更新,即新数据直接在旧数据的位置覆盖该旧数据。相反,DRAM等RAM仅支持存储器的异地更新,即新数据必须在新位置上写入,而且旧数据必须标记为过期。因此,RAM中的数据访问速度比X3D存储器的慢,并且RAM比X3D存储器需要更多的维护。X3D技术目前没有实施根据热、温和冷数据的物理存储位置来区分存储热、温和冷数据的机制。因此,X3D技术没有对X3D存储器实施磨损均衡。应该对X3D存储器执行磨损均衡操作,以防止X3D存储器磨损并变为不可用。
本文公开了涉及HMD的实施例,该HMD包括划分为连续SMU和连续LMU的X3D存储器。SMU存储热数据,而LMU存储温和/或冷数据。在一实施例中,HMD用于通过将第一SMU中的数据迁移到与连续SMU的最后一个SMU相邻的存储单元以及将第一LMU中的数据迁移到与连续LMU中的最后一个LMU相邻的存储单元来对SMU和LMU执行磨损均衡。将磨损均衡应用到SMU和LMU以保持所有存储单元具有基本相等的写入频率。这样,每个SMU和LMU以基本相同的速率磨损。本文公开的磨损均衡的实施例保持了存储在SMU和LMU中的数据结构的顺序。磨损均衡的实施使得所有SMU保持彼此连续以及所有LMU在磨损均衡的每次迭代之后保持彼此连续。
图1示出了实施本文所述磨损均衡实施例的HMD 100的实施例。HMD 100包括输入/输出(input/output,I/O)端口110、收发器单元(Tx/Rx)120、处理器130、X3D存储器133、辅助存储器140和临时存储器150。端口110耦合到Tx/Rx 120,其可以是发射器、接收器或其组合。Tx/Rx 120可以经由端口110传输和接收数据。处理器130用于处理数据。X3D存储器133、辅助存储器140和/或临时存储器150可以用于存储用于实施本文所述实施例的数据和指令。HMD 100还可以包括耦合到端口110和Tx/Rx 120的用于接收和传输电信号和光信号的电光(electrical-to-optical,EO)组件和光电(optical-to-electrical,OE)组件。
处理器130可以通过硬件、软件和/或固件来实施。处理器130可以实施为一个或多个中央处理器(central processing unit,CPU)芯片、逻辑单元、内核(例如,为多核处理器)、现场可编程门阵列(field-programmable gate array,FPGA)、专用集成电路(application specific integrated circuit,ASIC)和数字信号处理器(digital signalprocessor,DSP)。处理器130与端口110、Tx/Rx 120、X3D存储器133、辅助存储器140和临时存储器150通信。
处理器130包括磨损均衡模块153。处理器130可以用于实施磨损均衡模块153以执行用于实施本文公开的各种实施例的指令。在一实施例中,磨损均衡模块153可以实施为存储在X3D存储器133、辅助存储器140和/或临时存储器156中的一个或多个中的指令。处理器130还可以实施本文论述的方法300。磨损均衡模块153和存储位置模块156包含其中提供了对HMD 100的功能的改进。磨损均衡模块153和存储位置模块156还实现HMD 100到不同状态的转换。
X3D存储器133根据2013年4月9日授权的第8,416,609号美国专利申请案(’609专利)构造和运行,该申请的内容以引入的方式并入本文本中。在一实施例中,X3D存储器可以通过将材料的亚微观层切成列来形成。每列包含一个存储单元和一个选择器。这些列以垂直导线组成的结构连接,该结构能够使存储单元通过选择存储单元顶部的一根导线和底部的另一根导线来单独寻址。该结构可以三维堆叠以使密度最大化。每个存储单元可以通过改变发送到存储单元中的相应选择器的电压来写入或读取。X3D技术是一种能够实现存储容量比DRAM高出十倍的简单可堆叠无晶体管设计。此外,存储在X3D存储器中的数据更加具有非易失性,因为数据在断电时不会丢失。
根据一些实施例,X3D存储器133划分为两部分。第一部分包括SMU 161,第二部分为LMU 164。SMU 161存储在X3D存储器133中的连续位置上,LMU 164存储在X3D存储器133中的连续位置上。这里所说的连续是指按顺序相邻、共享共同边界、接触、靠近或排列在一起。在一实施例中,每个SMU 161用于存储热数据185,每个LMU 164用于存储温/冷用户数据188。热数据185包括FTL表等热数据。温/冷用户数据188包括访问频率比存储在辅助存储器140中的用户数据167高的温数据。
在一实施例中,处理器130用于动态地将某部分X3D存储器分配为SMU 161以及将另一部分X3D存储器分配为LMU 164。在一实施例中,处理器用于动态地按需更新SMU 161和/或LMU 164的大小。例如,假设FTL表存储在SMU 161处,并且FTL表的大小变得太大使得SMU 161的当前大小无法支持。当LMU 164中存在可以转换为SMU 161的空存储空间时,处理器130可以用于动态地将空LMU 164中的一个或多个配置为SMU 161。这样,SMU 161可以通过将空LMU 164分配为SMU 161来扩展以存储FTL表的其余部分进行扩展。
辅助存储器140包括闪存盘,例如NAND闪存。在一实施例中,辅助存储器140用于存储用户数据167,其为比存储在SMU 161和LMU 164处的数据相对更冷的冷数据。在一实施例中,处理器130可以用于基于估计的数据访问频率来确定是否将数据写入X3D存储器133或辅助存储器140。例如,如果用户试图将文档保存到HMD,并且该文档估计为用户可能永远不会再访问的文档,则存储位置模块156将文档存储在用户数据167中,而不是存储在温/冷用户数据188或热数据185中。
临时存储器150可以是一个或多个磁盘、磁带驱动器或固态驱动器,并且可以用于存储SMU描述数据170、LMU描述数据173和位置数据174。临时存储器150可以是易失性的和非易失性的,并且可以是只读存储器(read-only memory,ROM)、RAM、三重内容寻址内存(ternary content-addressable memory,TCAM)、DRAM和SRAM。SMU描述数据170包括描述以下内容的数据:SMU 161的大小、SMU 161的可访问大小、SMU 161的磨损均衡大小、SMU 161的位置和/或存储在SMU 161处的数据的标识。SMU 161的大小可以以字节(B)为单位指示SMU 161在X3D存储器133中的大小。SMU 161的可访问大小指示SMU 161中的最小读/写可访问区域。例如,SMU 161的读/写可访问大小可以是64B,因为可能需要一次性访问64字节的SMU 161以执行读和/或写操作。SMU 161的磨损均衡大小指示SMU 161中用于磨损均衡目的的最小可访问区域。例如,如本文所公开,SMU 161的磨损均衡大小可以是4kB,因为可能需要一次性访问4kB的SMU 161来执行磨损均衡操作。SMU 161的位置可以指示SMU 161中的存储单元的位置标识符。存储在SMU 161处的数据的标识可以标识存储在SMU 161中的数据。
LMU描述数据173包括描述以下内容的数据:LMU 164的大小、LMU 164的可访问大小、LMU 164的磨损均衡大小、LMU 164的位置和/或存储在LMU 164处的数据的标识。LMU164的大小可以以B为单位指示LMU 164的大小。LMU 164的可访问大小指示LMU 164中的最小读/写可访问区域。例如,LMU 164的读/写可访问大小可以是4kB,因为可能需要一次性访问4kB的LMU 164来执行读和/或写操作。LMU 164的磨损均衡大小指示LMU 164中用于磨损均衡目的的最小可访问区域。例如,如本文所公开,LMU 164的磨损均衡大小可以是4kB,因为可能需要一次性访问4kB的LMU 164来执行磨损均衡操作。LMU 164的位置可以指示LMU164中的存储单元的位置标识符。存储在LMU 164处的数据的标识可以标识存储在LMU 164中的数据。
位置数据174包括存储在SMU 161和/或LMU 164中的一个或多个处的数据段的位置。例如,位置数据174包括存储文件中的一个或多个数据段的存储单元或存储单元组中的一个或多个位置。在一实施例中,位置数据174仅为存储有序文件中的第一数据段的存储单元、SMU 161或LMU 164存储位置信息。例如,假设电影文件包含按序且连续地存储在LMU164中的11个数据段。此时,位置数据174可能仅存储那些存储电影文件的11个数据段中的第一段的LMU 164的位置。在一实施例中,位置数据174为电影文件的11个数据段中的每个数据段存储位置信息。作为另一说明性示例,假设FTL表是一个有序表,包括存储在连续SMU161中的200个段。此时,位置数据174可能仅存储那些存储FTL表的200个段中的第一段的SMU 171的位置。在一实施例中,位置数据174为FTL表的200个段中的每个段存储位置信息。
在一实施例中,SMU描述数据170、LMU描述数据173和位置数据174可以存储在X3D存储器133、辅助存储器140和/或临时存储器150中的一个或多个中。HMD 100可以包括用于实施选择用于执行的磨损均衡模块153和/或方法300以及存储在程序执行期间读取的指令和数据的其它构件。
在一实施例中,跨SMU 161和LMU 164对X3D存储器133执行磨损均衡。在磨损均衡的迭代中,存储在第一SMU 161处的数据迁移到最后一个SMU 161后面的存储单元,以及存储在第一LMU 164处的数据迁移到最后一个LMU 164后面的存储单元。冷热数据交换导致X3D存储器133中的第一SMU 161与第一LMU 164交换物理位置。由于SMU 161存储热数据,而LMU 164存储冷数据,所以磨损均衡过程导致冷热数据交换。这有助于确保在X3D存储器133的整个生存期内以基本相等的频率访问X3D存储器133中存储热数据的位置和X3D存储器133中存储冷数据的位置。这种磨损均衡方法保持了存储在SMU 161和LMU 164中的数据结构的顺序。虽然磨损均衡的每次迭代改变了数据的绝对位置,但是SMU 161和LMU 164中的有序数据的相对位置不变。此外,本文公开的磨损均衡方法保持了SMU 161和LMU 164的连续性。
在一实施例中,X3D存储器133包括一个或多个空存储单元。空存储单元不存储任何数据,而且可以不配置为SMU或LMU。在一实施例中,空存储单元可以配置为SMU或LMU,但是仍然不存储数据。在对具有一个或多个空存储单元的X3D存储器133执行磨损均衡的迭代中,第一SMU 161或第一LMU 164迁移到空存储单元。然后,空存储器迁移到第一SMU 161或第一LMU 164中的位置。磨损均衡过程中涉及空存储单元,因为在磨损均衡的每次迭代期间数据写入空存储器以及从空存储器写入另一SMU或LMU。
为了促进磨损均衡的迁移过程,X3D存储器133可以在每个存储单元部分后面包括空缓冲器,其预留用于交换存储单元时的写入操作。可以理解的是,通过编程和/或加载可执行指令至HMD 100,处理器130、X3D存储器133、辅助存储器140和/或临时存储器150中的至少一个会发生改变,从而将HMD 100部分转变为拥有本发明所教示的新颖功能的特定机器或装置,如多核转发架构。对于电力工程及软件工程技术来说基本的是,可通过将可执行软件加载到计算机中而实施的功能性可通过熟知设计规则而转换为硬件实施方案。在软件还是硬件中实施概念之间的决策通常取决于与设计的稳定性及待产生的单元的数目的考虑,而与从软件域转译到硬件域所涉及的任何问题无关。通常,仍在经受频繁改变的设计优选可在软件中实施,因为重改硬件实施方案比重改软件设计更为昂贵。通常,稳定的且会大量生产的设计可以优选在ASIC中等硬件中实现,因为通过硬件实现大量生产要比软件实现便宜。通常,一个设计可以软件形式进行开发及测试,且随后通过熟知设计规则变换为对软件的指令进行硬连线的ASIC中的等效硬件实现方式。由新的ASIC控制的机器是特定机器或装置,同样地,编程过的计算机和/或加载了可执行指令(例如,存储在非瞬时性介质/存储器中的计算机程序产品)的计算机也可视为特定机器或装置。
图2示出了X3D存储器200的实施例。在一实施例中,X3D存储器200类似于X3D存储器133。如图2所示,X3D存储器200包括SMU的部分203和LMU的部分206。SMU的部分203包括多个SMU 210,例如SMU 161。LMU的部分206包括多个LMU 215,例如LMU 164。如图2所示,SMU210存储在X3D存储器200中的SMU 210的部分203的连续位置上。类似地,LMU 164存储在X3D存储器200中的LMU 215的部分206的连续位置上。SMU 210彼此连续,使得每个SMU 210与至少一个其它SMU 210相邻。LMU 215彼此连续,使得每个LMU 215与至少一个其它LMU 215相邻。在一实施例中,SMU 210的部分203还与LMU 215的部分206连续,使得最后一个SMU 210与第一LMU 215之间不存在空存储单元。在一实施例中,最后一个SMU 210与第一SMU 215之间可以存在一个或多个空存储单元。
在一实施例中,X3D存储器中的最小可访问单元为16B。可以配置SMU 210,使得用于读和/或写目的的最小可访问单元为64B或者16B的任意其它倍数。可以配置LMU 215,使得用于读和/或写目的的最小可访问单元为4kB或者4kB的任意其它倍数。可以配置SMU210,使得用于磨损均衡目的的最小可访问单元为4kB或者4kB的任意其它倍数。类似地,可以配置LMU 215,使得用于磨损均衡目的的最小可访问单元为4kB或者4kB的任意其它倍数。在一实施例中,用于磨损均衡目的的最小可访问单元对于SMU 210和LMU 215应该是相同的,所以磨损均衡得到均匀执行。例如,SMU 210存储FTL表和其它频繁访问的数据,而LMU存储用户数据和其它不频繁访问的数据。为了改进磨损均衡过程,SMU 210中的FTL表项可以组合到较大组中以与LMU大小相同(4kB)。图2所示的X3D 200仅包括SMU 210和LMU 215。然而,应理解到,X3D存储器200还可以包括其它类型的存储单元或可以具有留空且未分配给具体类型的存储单元的存储单元或单元。
虽然X3D存储器200仅示出了SMU的部分203和LMU的部分206,但是X3D存储器200还可包括一个或多个MMU或空存储单元的一部分。MMU为用于存储温数据的存储单元。MMU可以彼此连续并且可以位于SMU前面、SMU和LMU之间或者LMU后面。空存储单元为没有具体配置用于存储热、冷或温数据的存储单元,并且不存储数据。空存储单元也可以彼此连续并且位于SMU前面、SMU和LMU之间或者LMU后面。X3D存储器还可包括SMU、LMU、MMU或空存储单元的任意数量的部分。例如,X3D存储器200可以包括SMU的两个部分、MMU的一个部分、LMU的三个部分以及空存储单元的两个部分。因此,X3D存储器200可以配置用于存储各种类型的数据(例如数据温度),只要存储特定类型数据的存储单元位于存储器的逻辑连续区域中。本发明实施例涉及存储单元的各种部分之间的磨损均衡,同时在执行磨损均衡时保持数据结构和数据顺序完整。
虽然X3D存储器200示出了SMU的部分203小于LMU的部分206,但是应理解到,SMU的部分203可以大于或等于LMU的部分206。X3D存储器200可以包括存储热、温和冷数据的任意数量的存储单元。存储SMU、MMU和LMU的各部分的部分大小可以改变。
图3所示为一种用于X3D存储器中的磨损均衡的方法300。用于X3D存储器中的磨损均衡的方法300可以在检测到触发事件时或根据预定时间表来实施。在一实施例中,X3D存储器类似于X3D存储器200。在步骤305处,检测对X3D存储器发起磨损均衡过程的迭代的触发事件。例如,处理器130检测该触发事件。该X3D存储器包括第一部分存储单元和第二部分存储单元。第一部分存储单元和第二部分存储单元可以是SMU、LMU或MMU。第一部分存储单元包括用于存储第一类型数据的多个连续存储单元,第二部分存储单元包括用于存储第二类型数据的多个存储单元。在一实施例中,各种类型的数据可以是热数据、温数据和冷数据。用于对X3D发起磨损均衡过程的迭代的触发事件可以发生于多个SMU中的一个或多个的固定访问频率达到预定阈值时。例如,磨损均衡过程可以在SMU/LMU中的一个或整个SMU/LMU连续存储区域上的写操作的数量超过预定阈值之后触发。在一实施例中,该触发事件可以基于计入多个操作、环境因子、预设时长等因素的动态方程式。在一实施例中,该触发事件可以基于已经预配置并且存储在HMD的磨损均衡时间表,使得磨损均衡过程的迭代根据该磨损均衡时间表来开始。
在步骤310处,将存储在第一部分存储单元的第一存储单元中的数据迁移到与第一部分存储单元的最后一个存储单元相邻的存储单元。例如,将存储在多个SMU的第一SMU中的数据迁移到与多个SMU的最后一个SMU相邻的存储单元。例如,处理器130可以配置X3D存储器133将存储在SMU 161的第一SMU中的数据迁移到与SMU 161的最后一个SMU相邻的存储单元。SMU存储在X3D存储器中的连续位置上。在步骤315处,将存储在第二部分存储单元的第一存储单元中的数据迁移到与第二部分存储单元的最后一个存储单元相邻的存储单元。例如,将存储在多个LMU的第一LMU中的数据迁移到与LMU的最后一个LMU相邻的存储单元。例如,处理器130可以配置X3D存储器133将存储在LMU 164的第一LMU中的数据迁移到与LMU 164的最后一个LMU相邻的存储单元。LMU也存储在X3D存储器中的连续位置上。
在一实施例中,通过以顺时针方向将SMU上的数据迁移到紧跟最后一个SMU后面的存储单元对X3D存储器执行磨损均衡。假设X3D存储器中的SMU大小或实际SMU的数量由S(SMU)表示,X3D存储器中的LMU大小或实际LMU的数量由S(LMU)表示。例如,如果存在5个SMU,则S(SMU)等于5。此时,当S(SMU)=5时,对SMU执行的磨损均衡的第一次迭代将存储在第一SMU中的数据迁移到第五SMU后面的存储单元。当紧跟第五SMU后面的存储单元为第一LMU时,那么可以将存储在第一LMU处的数据临时写入缓冲存储器,同时将存储在第一SMU处的数据写入第一LMU的位置上。当紧跟第五SMU后面的存储单元为空存储单元时,那么可以将先前存储在第一SMU处的数据写入空存储单元的位置上。因此,通过预先将数据从SMU移到S(SMU)存储单元来执行磨损均衡。换言之,将连续位置开始处的存储单元移动到连续位置末尾处。这种方法保持了连续位置上的相同类型的单元,但是在变换单元顺序的同时在一个单元空间上变换整个位置。
LMU必须变换到紧跟最后一个LMU后面的存储单元。在时序方面,可以将SMU移动到对应LMU前面,反之亦然。这样,本文公开的磨损均衡过程在X3D的不同位置上交换热数据和冷数据(冷数据同样可以包括温数据)的存储。交换热和冷数据的存储位置有助于确保X3D存储器中的所有存储单元的访问次数基本相等,从而防止一些存储单元在其它存储单元之前退化。在各种实施例中,存储关键数据的存储单元可以在该过程中接收迁移优先级。此外,磨损均衡过程可以发生在空闲时间内的移动设备操作的后台中或在一些实例中在操作的前台中执行。
图4A和图4B示出了对X3D存储器400执行磨损均衡之前的X3D存储器400的初始状态的表示。图4A所示为X3D存储器400的初始状态的网格表示。X3D存储器400类似于X3D存储器200,只是X3D存储器400的网格表示仅包括配置为SMU的存储单元的一行(或部分)450以及配置为LMU的存储单元的一行455,如图所示。应理解,任意数量的存储单元可以配置为X3D存储器400中的SMU和/或LMU,只要SMU彼此连续,LMU彼此连续。
行450包括一个存储单元阵列,每个存储单元依次配置为SMU 401至405。在一实施例中,SMU 401至405均类似于SMU 210。如图4A所示,SMU 401至405分别存储文件中的数据段1至5。SMU 401存储数据段1,SMU 402存储数据段2,SMU 403存储数据段3,SMU 404存储数据段4,SMU 405存储数据段5。例如,数据段1至5表示有序FTL表(热数据)中的顺序数据段。行450还包括一个空存储单元阵列,每个空存储单元配置为SMU 430至437。在一实施例中,SMU 430至437类似于SMU 210,并且不存储任何数据。应理解,X3D存储器400可以包括任意数量的SMU,只要它们以连续的方式排列。
行455包括一个存储单元阵列,每个存储单元依次配置为LMU 406至416。在一实施例中,LMU 406至416类似于LMU 215。如图4A所示,LMU 406至416分别存储文件中的数据段11至21。LMU 406存储数据段11,LMU 407存储数据段12,LMU 408存储数据段13,LMU 409存储数据段14,LMU 410存储数据段15,LMU 411存储数据段16,LMU 412存储数据段17,LMU413存储数据段18,LMU 414存储数据段19,LMU 415存储数据段20,LMU416存储数据段21。例如,数据段11至21表示电影文件中的顺序数据段。行455还包括一个空存储单元阵列,每个空存储单元配置为LMU 438和439。在一实施例中,LMU 438和439类似于LMU 215,并且不存储任何数据。应理解,X3D存储器400可以包括任意数量的SMU,只要它们以连续的方式排列。
如图4A所示,行450包括配置为分别存储数据段1至5的SMU 401至405以及空SMU430至437的存储单元阵列。行455包括配置为分别存储数据段11至21的LMU 406至416以及空LMU 438和439的存储单元阵列。SMU 401至405和SMU 430至437彼此连续,使得它们在行450中彼此相邻,而且没有LMU交织在任意SMU之间。类似地,LMU 406至416和LMU 438和439彼此连续,使得它们在行455中彼此相邻,而且没有SMU交织在任意LMU之间。在一实施例中,磨损均衡的第一次迭代包括将第一SMU(例如SMU 401)迁移到最后一个空SMU(例如SMU437)后面的存储单元以及将第一LMU 406迁移到最后一个空LMU(例如LMU 439)后面的存储单元。
图4B示出了X3D存储器400的初始状态的圆形表示,其中,箭头480图示如何对X3D存储器400执行磨损均衡的第一次迭代。图4B所示的X3D存储器400的圆形表示与图4A所示的X3D存储器400的网格表示结构相似并且存储相似数据段。
如箭头480所示,磨损均衡的第一次迭代包括将第一SMU(例如SMU 401)迁移到最后一个SMU(例如SMU 405)后面的存储单元以及将第一LMU(例如LMU 406)迁移到最后一个LMU(例如LMU 416)后面的存储单元。图4B所示的X3D存储器400不包括任何空SMU或空LMU(尽管图4A所示的X3D存储器400包括)。然而,最后一个连续SMU认为是最后一个SMU,不管该SMU是否存储数据。类似地,最后一个连续LMU认为是最后一个LMU,不管该LMU是否存储数据。因此,尽管图4B示出了数据将要从SMU 401移动到SMU 405后面的存储单元,但是该数据实际上可以移动到多个连续SMU的最后一个SMU后面的存储单元,不管该SMU是否存储数据。类似地,虽然图4B示出了数据将要从LMU 406移动到LMU后面的存储单元,但是该数据实际上可以移动到多个连续LMU的最后一个LMU后面的存储单元,不管该LMU是否存储数据。
例如,将SMU 401迁移到SMU 405后面的存储单元包括将数据段1写入临时缓冲器,然后将数据段1从SMU 401的位置上擦除。一旦将数据段1从SMU 401的位置上擦除,SMU 401的先前位置变为空存储单元。然后,可以将数据段11从LMU 406写入空存储单元。一旦将数据段11写入空存储单元,可以将数据段11从LMU 406中擦除,使得LMU 406的位置也变为另一空存储单元。然后,可以将数据段1从临时缓冲器写入LMU 406先前所在的空存储单元。
在LMU 416与SMU 401之间已经有一个或多个空存储单元存在于X3D存储器中的另一说明性示例中,可以在不使用临时缓冲器的情况下执行磨损均衡。首先,可以将数据段11从LMU 406写入空存储单元,使得LMU 406的先前位置变为空存储单元。然后,可以将SMU401中的数据段1从SMU 401写入LMU 406先前所在的空存储单元。可以将数据段1从SMU 401擦除,使得在磨损均衡的第一次迭代之后X3D存储器400中的SMU与LMU之间仍然存在空存储单元。
磨损均衡的这种实施例包括将第一SMU 401的位置与第一LMU 406的位置交换。箭头480指向SMU 401和LMU 406,两者都在磨损均衡的第一次迭代期间迁移。在磨损均衡的第一次迭代之后,将在X3D存储器400中交换存储热数据段1的SMU 401与存储温/冷数据段11的LMU 406的位置。因此,本文公开的交换SMU 401和LMU 406的位置的磨损均衡实施例有助于确保在X3D存储器400的生命期内以相似频率访问SMU 401和LMU 406的位置。在一实施例中,可以更新与SMU和LMU相关联的位置数据(例如位置数据174)以反映磨损均衡的第一次迭代。例如,可以在完成磨损均衡的第一次迭代之后更新SMU 401和/或LMU406的新位置。
图5A和图5B示出了对X3D存储器400执行磨损均衡的第一次迭代之后的X3D存储器500的表示。图5A所示为X3D存储器500的网格表示。X3D存储器500的网格表示与X3D存储器400的网格表示结构相似,只是在X3D存储器500中,存储数据段1的存储单元(例如SMU 501)和存储数据段11的存储单元(例如SMU 506)已经交换位置。
行550包括一个存储单元阵列,每个存储单元依次配置为SMU 502、503、504、505和501。SMU 501至505分别类似于SMU 401至405并且存储相似数据段,只是SMU 501的绝对位置已发生改变。行(或部分)555也包括一个存储单元阵列,每个存储单元依次配置为LMU507、508、509、510、511、512、513、514、515、516和506。LMU 506至516分别类似于LMU 406至416并且存储相似数据段,只是SMU 506的绝对位置已发生改变。如图5所示,行550可以包括任意其它数量的空SMU,行555可以包括任意其它数量的空LMU。
在对X3D存储器400执行磨损均衡的第一次迭代以产生X3D存储器500之后,行550中的第一存储单元现在配置为存储数据段11(温/冷数据)的LMU 406。类似地,行555中的第一存储单元现在配置为存储数据段1(热数据)的SMU 501。实际上,磨损均衡的第一次迭代已经交换SMU 401与LMU 406的位置,产生了SMU 501与SMU 506的后磨损均衡位置。SMU 401与LMU 406的位置交换导致热数据和温/冷数据的存储位置交换。这种热数据和冷数据的存储位置交换用于防止与存储热数据相关联的存储单元比与存储冷数据相关联的存储单元更快地退化(或磨损)。这样,本文公开的磨损均衡方案提供一种配置X3D存储器500以保持所有存储单元,包括SMU和LMU的读和写频率基本相等的方法。
图5B示出了对X3D存储器400执行磨损均衡的第一次迭代之后的X3D存储器500的圆形表示,其中,箭头580图示如何对X3D存储器500执行磨损均衡的第二次迭代。图5B所示的X3D存储器500的圆形表示与图5A所示的X3D存储器500的网格表示结构相似并且存储相似数据段,只是在X3D存储器500中,存储数据段1的存储单元(例如SMU 501)和存储数据段11的存储单元(例如SMU 506)已经交换位置。如图5B所示,SMU 502至505保持在它们的原始存储单元位置上,而SMU 501已经从SMU阵列的开始处移动到SMU阵列的末尾处。类似地,LMU507至516保持在它们的原始存储单元位置上,而LMU 506已经从LMU阵列的开始处移动到LMU阵列的末尾处。
在执行磨损均衡的第一次迭代产生X3D存储器500之后,配置为SMU的存储单元的阵列保持彼此连续,因为SMU仍然彼此相邻,没有任何交织的LMU。类似地,配置为LMU的存储单元的阵列也保持彼此连续,因为LMU仍然彼此相邻,没有任何交织的SMU。
绝对位置的变化(如图5A所示)没有改变圆形方式中SMU和LMU的相对位置,因为SMU和LMU彼此之间没有交织。在圆形方式中,存储在SMU阵列中的数据段的顺序相对于其它SMU的位置保持不变。例如,存储在SMU处的数据段的顺序现在是2、3、4、5和1。当HMD知道数据段1的位置时,HMD就知道剩余SMU以圆形方式依次存储数据段1至5中的其余部分,因为所有SMU是连续的,而且没有打乱存储顺序数据段的SMU的顺序。在一实施例中,耦合到X3D存储器500的处理器(例如处理器130)可以用于每次对X3D存储器500执行磨损均衡的迭代时更新位置数据(例如位置数据174)。例如,在对X3D存储器500执行磨损均衡的第一次迭代之前,位置数据指示SMU 401的位置为最后一个LMU 416后面的存储单元的位置。在对X3D存储器500执行磨损均衡的第一次迭代之后,处理器更新该位置数据以指示SMU 501的位置为SMU 505后面的存储单元。这样,可以存储并且稍后搜索第一SMU、最后一个SMU、第一LMU和/或最后一个LMU的位置。例如,处理器可以搜索位置数据以确定SMU 501的位置为数据段1的位置,并且循环到下一SMU以找到数据2至5的剩余顺序。相应地,本文公开的磨损均衡方法和系统保持了存储在数据段1至5中的数据结构的顺序。可以使用一种类似机制来更新存储在LMU 506至516处的数据段11至21的位置数据。
如箭头580所示,磨损均衡的第二次迭代包括将第一SMU(例如SMU 502)迁移到最后一个SMU(例如SMU 501)后面的存储单元以及将第一LMU(例如LMU 507)迁移到最后一个LMU(例如LMU 506)后面的存储单元。磨损均衡的这种实施例包括将第一SMU 502的位置与第一LMU 507的位置交换。箭头580指向X3D存储器500中的SMU 502和LMU 507,两者都将在磨损均衡的第二次迭代期间迁移。在磨损均衡的第二次迭代之后,将在X3D存储器500中交换存储热数据段2的SMU 502与存储温/冷数据段12的LMU 507的位置。因此,本文公开的交换SMU 502和LMU 507的位置的磨损均衡实施例有助于确保在X3D存储器500的生命期内以相似频率访问SMU 502和LMU 507的位置。在一实施例中,可以更新与SMU和LMU相关联的位置数据(例如位置数据174)以反映磨损均衡的第二次迭代。例如,可以在完成磨损均衡的第二次迭代之后更新SMU 502和/或LMU 507的新位置。
图6A和图6B示出了对X3D存储器400执行磨损均衡的第二次迭代之后的X3D存储器600的表示。图6A所示为X3D存储器600的网格表示。X3D存储器600的网格表示与X3D存储器500的网格表示结构相似,只是在X3D存储器500中,存储数据段2的存储单元(例如SMU 602)和存储数据段12的存储单元(例如SMU 607)已经交换位置。
X3D存储器600包括一个存储单元阵列,每个存储单元依次配置为SMU 603、604、605、601和602。SMU 601至605分别类似于SMU 501至505并且存储相似数据段,只是SMU 602的绝对位置已发生改变。X3D存储器600还包括一个存储单元阵列,每个存储单元依次配置为LMU 608、609、610、611、612、613、614、615、616、606和607。LMU 606至616分别类似于LMU506至516并且存储相似数据段,只是LMU 607的绝对位置已发生改变。如图6所示,行(或部分)650可以包括任意其它数量的空SMU,行655可以包括任意其它数量的空LMU。
在对X3D存储器500执行磨损均衡的下一次迭代以产生X3D存储器600之后,行650中的第二存储单元现在配置为存储数据段12(温/冷数据)的LMU 607。类似地,行655中的第二存储单元现在配置为存储数据段2(热数据)的SMU 602。实际上,磨损均衡的第二次迭代交换SMU 402和LMU 407的位置(参见图4),产生了SMU 602和SMU 607的后磨损均衡位置。
图6B示出了对X3D存储器500执行磨损均衡的另一次迭代之后的X3D存储器600的圆形表示,其中,箭头680图示如何对X3D存储器600执行磨损均衡的第三次迭代。图6B所示的X3D存储器600的圆形表示与图6A所示的X3D存储器600的圆形表示结构相似并且存储相似数据段,只是在X3D存储器600中,存储数据段2的存储单元(例如SMU 602)和存储数据段12的存储单元(例如SMU 607)已经交换位置。
如图6B所示,SMU 603至605保持在它们的原始存储单元位置上,而SMU 601仍然从SMU阵列的开始处向SMU阵列的末尾处移动。然而,SMU 602已经从SMU阵列的开始处移动到SMU阵列的末尾处。配置为SMU的存储单元的阵列的顺序变为SMU 603、SMU 604、SMU 605、SMU 601和SMU 602。类似地,LMU 608至616保持在它们的原始存储单元位置上,LMU 606仍然从LMU阵列的开始处向LMU阵列的末尾处移动。然而,SMU 607已经从LMU阵列的开始处移动到LMU阵列的末尾处。
在执行磨损均衡的第二次迭代产生X3D存储器600之后,配置为SMU的存储单元的阵列保持彼此连续,因为SMU仍然彼此相邻,没有任意交织的LMU。类似地,配置为LMU的存储单元的阵列也保持彼此连续,因为LMU仍然彼此相邻,没有任何交织的SMU。在圆形方式中,存储在SMU和LMU阵列中的数据段的顺序也相对于其它SMU的位置保持不变。
如箭头680所示,磨损均衡的第三次迭代包括将第一SMU(例如SMU 603)迁移到最后一个SMU(例如SMU 602)后面的存储单元以及将第一LMU(例如LMU 608)迁移到最后一个LMU(例如LMU 607)后面的存储单元。磨损均衡的这种实施例包括将第一SMU 603的位置与第一LMU 608的位置交换。箭头680指向X3D存储器600中的SMU 603和LMU 608,两者都将在磨损均衡的第三次迭代期间迁移。在磨损均衡的第三次迭代之后,将在X3D存储器600中交换存储热数据段3的SMU 603与存储温/冷数据段13的LMU 608的位置。因此,本文公开的交换SMU 603和LMU 608的位置的磨损均衡实施例有助于确保在X3D存储器600的生命期内以相似频率访问SMU 603和LMU 608的位置。在一实施例中,可以更新与SMU和LMU相关联的位置数据(例如位置数据174)以反映磨损均衡的第三次迭代。例如,可以在完成磨损均衡的第三次迭代之后更新SMU 603和/或LMU 608的新位置。
图7A和图7B示出了对X3D存储器400执行磨损均衡的第三次迭代之后的X3D存储器700的表示。图7A示出了对X3D存储器600执行磨损均衡的另一次迭代之后的X3D存储器700的网格表示。X3D存储器700的网格表示类似于X3D存储器600的网格表示,只是在X3D存储器700中,存储数据段3的存储单元(例如SMU 703)与存储数据段13的存储单元(例如SMU 708)已经交换位置。
X3D存储器700包括一个存储单元阵列,每个存储单元依次配置为SMU 704、705、701、702和703。SMU 701至705分别类似于SMU 601至605并且存储相似数据段,只是LMU 703的绝对位置已发生改变。X3D存储器700还包括一个存储单元阵列,每个存储单元依次配置为LMU 709、710、711、712、713、714、715、716、706、707和708。LMU 706至716分别类似于LMU406至416并且存储相似数据段,只是LMU 708的绝对位置已发生改变。如图7所示,行(或部分)750可以包括任意其它数量的空SMU,行755可以包括任意其它数量的空LMU。
在对X3D存储器600执行磨损均衡的下一次迭代以产生X3D存储器700之后,行750中的第三存储单元现在配置为存储数据段13(温/冷数据)的LMU 708。类似地,行755中的第三存储单元现在配置为存储数据段3(热数据)的SMU 703。实际上,磨损均衡的第二次迭代交换了SMU 403和LMU 408的位置(参见图4)以产生SMU 703和SMU 708的后磨损均衡位置。
图7B示出了对X3D存储器400执行磨损均衡的第三迭代之后的X3D存储器700的圆形表示,其中,箭头780图示如何对X3D存储器700执行磨损均衡的第四迭代。图7B所示的X3D存储器700的圆形表示与图7A所示的X3D存储器700的圆形表示结构相似并且存储相似数据段,只是在X3D存储器700中,存储数据段3的存储单元(例如SMU 703)和存储数据段13的存储单元(例如SMU 708)已经交换位置。
如图7B所示,SMU 704和705保持在它们的原始存储单元位置上,而SMU 701和702仍然从SMU阵列的开始处向SMU阵列的末尾处移动。然而,SMU 703已经从SMU阵列的开始处移动到SMU阵列的末尾处。配置为SMU的存储单元的阵列的顺序变为SMU 704、SMU 705、SMU701、SMU 702和SMU 703。类似地,LMU 709至716保持在它们的原始存储单元位置(例如SMU409至416)上,LMU 706和707仍然从LMU阵列的开始处向LMU阵列的末尾处移动。然而,LMU708已经从LMU阵列的开始处移动到LMU阵列的末尾处。
在执行磨损均衡的第三次迭代以产生X3D存储器700之后,配置为SMU的存储单元的阵列保持彼此连续,因为SMU仍然彼此相邻,没有任意交织的LMU。类似地,配置为LMU的存储单元的阵列也保持彼此连续,因为LMU仍然彼此相邻,没有任何交织的SMU。在圆形方式中,存储在SMU和LMU阵列中的数据段的顺序也相对于其它SMU的位置保持不变。
如箭头780所示,磨损均衡的第四次迭代包括将第一SMU(例如SMU 704)迁移到最后一个SMU(例如SMU 703)后面的存储单元以及将第一LMU(例如LMU 709)迁移到最后一个LMU(例如LMU 708)后面的存储单元。磨损均衡的这种实施例包括将第一SMU 704的位置与第一LMU 709的位置交换。箭头780指向X3D存储器700中的SMU 704和LMU 709,两者都将在磨损均衡的第四迭代期间迁移。在磨损均衡的第四次迭代之后,将在X3D存储器700中交换存储热数据段4的SMU 704与存储温/冷数据段14的LMU 709的位置。因此,本文公开的交换SMU 704和LMU 709的位置的磨损均衡实施例有助于确保在X3D存储器700的生命期内以相似频率访问SMU 704和LMU 709的位置。在一实施例中,可以更新与SMU和LMU相关联的位置数据(例如位置数据174)以反映磨损均衡的第四次迭代。例如,可以在完成磨损均衡的第四次迭代之后更新SMU 704和/或LMU 709的新位置。
图8A和图8B示出了对X3D存储器400执行磨损均衡的第四次迭代之后的X3D存储器800的表示。图8A示出了对X3D存储器700执行磨损均衡的另一次迭代之后的X3D存储器800的网格表示。X3D存储器800的网格表示类似于X3D存储器700的网格表示,只是在X3D存储器800中,存储数据段4的存储单元(例如SMU 804)与存储数据段14的存储单元(例如SMU 809)已经交换位置。
X3D存储器800包括一个存储单元阵列,每个存储单元依次配置为SMU 805、801、802、803和804。SMU 801至805分别类似于SMU 701至705并且存储相似数据段,只是SMU 804的绝对位置已发生改变。X3D存储器800还包括一个存储单元阵列,每个存储单元依次配置为LMU 810、811、812、813、814、815、816、806、807、808和809。LMU 806至816分别类似于LMU406至416并且存储相似数据段,只是LMU 809的绝对位置已发生改变。如图8所示,行(或部分)850可以包括任意其它数量的空SMU,行855可以包括任意其它数量的空LMU。
在对X3D存储器700执行磨损均衡的下一次迭代以产生X3D存储器800之后,行850中的第四存储单元现在配置为存储数据段14(温/冷数据)的LMU 809。类似地,行855中的第四存储单元现在配置为存储数据段4(热数据)的SMU 804。实际上,第二磨损均衡迭代交换SMU 404和LMU 409的位置(参见图4),产生了SMU 804和SMU 806的后磨损均衡位置。
图8B示出了对X3D存储器400执行磨损均衡的第四次迭代之后的X3D存储器800的圆形表示。图8B所示的X3D存储器800的网格表示与图8A所示的X3D存储器800的圆形表示结构相似并且存储相似数据段,只是在X3D存储器800中,存储数据段4的存储单元(例如SMU804)和存储数据段14的存储单元(例如SMU 809)已经交换位置。
如图8B所示,SMU 805保持在原始存储单元位置上,而SMU 801至803仍然从SMU阵列的开始处向SMU阵列的末尾处移动。然而,SMU 804从SMU阵列的开始处移动到SMU阵列的末尾处。配置为SMU的存储单元的阵列的顺序变为SMU 805、SMU 801、SMU 802、SMU 803和SMU 804。类似地,LMU 810至816保持在它们的原始存储单元位置上,LMU 806至808仍然从LMU阵列的开始处向LMU阵列的末尾处移动。然而,SMU 809从LMU阵列的开始处移动到LMU阵列的末尾处。
在执行磨损均衡的第四次迭代以产生X3D存储器800之后,配置为SMU的存储单元的阵列保持彼此连续,因为SMU仍然彼此相邻,没有任意交织的LMU。类似地,配置为LMU的存储单元的阵列也保持彼此连续,因为LMU仍然彼此相邻,没有任何交织的SMU。在圆形方式中,存储在SMU和LMU阵列中的数据段的顺序也相对于其它SMU的位置保持不变。
如箭头880所示,磨损均衡的第五次迭代包括将第一SMU(例如SMU 805)迁移到最后一个SMU(例如SMU 804)后面的存储单元以及将第一LMU(例如LMU 810)迁移到最后一个LMU(例如LMU 809)后面的存储单元。磨损均衡的这种实施例相当于将第一SMU 805的位置与第一LMU 810的位置交换。箭头880指向X3D存储器800中的SMU 805和LMU 810,两者都将在磨损均衡的第五次迭代期间迁移。在磨损均衡的第五次迭代之后,将在X3D存储器800中交换存储热数据段5的SMU 805与存储温/冷数据段15的LMU 810的位置。因此,本文公开的交换SMU 805和LMU 810的位置的磨损均衡实施例有助于确保在X3D存储器800的整个生命期内以相似频率访问SMU 805和LMU 810的位置。在一实施例中,可以更新与SMU和LMU相关联的位置数据(例如位置数据174)以反映磨损均衡的第五迭代。例如,可以在完成磨损均衡的第五次迭代之后更新SMU 805和/或LMU 806的新位置。
图9A和图9B示出了对X3D存储器400执行磨损均衡的第五次迭代之后的X3D存储器900的表示。图9A示出了对X3D存储器800执行磨损均衡的另一次迭代后的X3D存储器900的网格表示。X3D存储器900的网格表示类似于X3D存储器800的网格表示,只是在X3D存储器900中,存储数据段5的存储单元(例如SMU 905)和存储数据段15的存储单元(例如SMU 910)已经交换位置。如图所示,SMU 901至905已经循环一周(五次迭代,等于存储数据段1至5的SMU的数量),配置为SMU的存储单元的阵列再次为901、902、903、904和905。SMU 901至905处于以1、2、3、4和5的顺序存储数据段的绝对位置上。
X3D存储器900包括一个存储单元阵列,每个存储单元依次配置为SMU 901、902、903、904和905。SMU 901至905分别类似于SMU 401至405并且存储相似数据段,只是SMU 905的绝对位置已发生改变。X3D存储器900还包括一个存储单元阵列,每个存储单元依次配置为LMU 911、912、913、914、915、916、906、907、908、909和910。LMU 910至916分别类似于LMU406至416并存储相似数据段,只是LMU 910的绝对位置已发生改变。如图9所示,行(或部分)950可以包括任意其它数量的空SMU,行955可以包括任意其它数量的空LMU。
在对X3D存储器800执行磨损均衡的下一次迭代以产生X3D存储器900之后,行950中的第五存储单元现在配置为存储数据段15(温/冷数据)的LMU 910。相似的,行955中的第五存储单元现在配置为存储数据段5(热数据)的SMU 905。实际上,磨损均衡的第二次迭代交换SMU 405和LMU 405的位置(参见图4),产生了SMU 905和SMU 910的后磨损均衡位置。
图9B示出了对X3D存储器400执行磨损均衡的第五次迭代之后的X3D存储器900的圆形表示,其中,箭头980图示如何对X3D存储器900执行磨损均衡的第六次迭代。图9B所示的X3D存储器900的圆形表示与图9A所示的X3D存储器900的圆形表示结构相似并且存储相似数据段,只是在X3D存储器900中,存储数据段5的存储单元(例如SMU 905)和存储数据段15的存储单元(例如SMU 910)已经交换位置。
如图9B所示,SMU 901至905已经在一个周期(五次迭代)中完成磨损均衡,使得配置为SMU 901至905的存储单元的阵列再次以SMU 901、902、903、904和905为顺序。由于LMU的数量比SMU多,配置为LMU的存储单元的阵列不再按照原始顺序。如图9所示,LMU 911至916保持在它们原始的存储单元位置上,而LMU 906至909仍然从LMU阵列的开始处向LMU阵列的末尾处移动。然而,SMU 910从LMU阵列的开始处移动到LMU阵列的末尾处。
在执行磨损均衡的第五次迭代以产生X3D存储器900之后,配置为SMU的存储单元的阵列保持彼此连续,因为SMU仍然彼此相邻,没有任意交织的LMU。类似地,配置为LMU的存储单元的阵列也保持彼此连续,因为LMU仍然彼此相邻,没有任何交织的SMU。在圆形方式中,存储在SMU和LMU阵列中的数据段的顺序也相对于其它SMU的位置保持不变。
X3D存储器900可以在对X3D存储器900执行的磨损均衡的第六次迭代中重新开始SMU901至905的循环。如箭头980所示,磨损均衡的第六次迭代包括将第一SMU(例如SMU901)迁移到最后一个SMU(例如SMU 905)后面的存储单元以及将第一LMU(例如LMU 911)迁移到最后一个LMU(例如LMU 910)后面的存储单元。磨损均衡的这种实施例包括将第一SMU901的位置与第一LMU 911的位置交换。箭头980指向X3D存储器900中的SMU 901和LMU 911,两者都将在磨损均衡的第六次迭代期间迁移。在磨损均衡的第六次迭代之后,将在X3D存储器900中交换存储热数据段1的SMU 901和存储温/冷数据段16的LMU 911的位置。因此,本文公开的交换SMU 901和LMU 911的位置的磨损均实施例有助于确保在X3D存储器900的整个生命期内以相似频率访问SMU 901和LMU 911的位置。
图10A和图10B示出了对X3D存储器1000执行磨损均衡之前的具有空存储单元1016的X3D存储器1000的初始状态的表示。图10A所示为X3D存储器1000的网格表示。该X3D存储器1000的网格表示类似于图4A中的X3D存储器400的网格表示。然而,行(或部分)1050中的第一存储单元为空存储单元1016。空存储单元1016可以不配置为SMU或LMU。在一实施例中,空存储单元1016配置为SMU或LMU,但是仍然不存储数据。虽然图10A和图10B仅示出了一个空存储单元1016,但是X3D存储器1000中可以有多个空存储单元1016。
类似于X3D存储器400,X3D存储器1000包括一个存储单元阵列,每个存储单元依次配置为SMU 1001至1005。在一实施例中,SMU 1001至1005均类似于SMU 210。在行1050中,第二存储单元至第六存储单元分别为SMU 1001至1005。如图10A所示,SMU 1001至1005分别存储文件中的数据段1至5,类似于SMU401至405。例如,数据段1至5表示有序FTL表(热数据)中的顺序数据段。行1050还包括不存储数据的空SMU,例如SMU 1037。
类似于X3D存储器400,X3D存储器1000还包括一个存储单元阵列,每个存储单元依次配置为LMU 1006至1015。在一实施例中,LMU 1006至1015均类似于LMU 215。在行1055中,第一存储单元至第十存储单元分别为LMU 1006至1015。LMU 1006至1015分别存储文件中的数据段11至20,类似于LMU 406至415。例如,数据段11至20表示电影文件(温/冷数据)中的顺序数据段。行1055还包括不存储数据的空LMU,例如LMU 1039。在一实施例中,对X3D存储器1000执行的磨损均衡类似于对X3D存储器400执行的磨损均衡。然而,不将第一SMU(例如SMU 1001)与第一LMU(例如LMU 1006)交换,执行磨损均衡产生X3D存储器1100包括将第一LMU(例如LMU 1006)迁移到空存储单元1016的位置,将第一SMU(例如SMU 1001)迁移到最后一个SMU(例如SMU 1037)后面的存储单元,以及擦除第一SMU(例如SMU 1001)的原始位置,使得第一SMU的原始位置变为空存储单元1016。
图10B示出了X3D存储器1000的圆形表示,其中,箭头1080和1090图示如何对X3D存储器1000执行磨损均衡的第一次迭代。图10B所示的X3D存储器1000的圆形表示与图10A中所示的X3D存储器1000的网格表示结构相似并且存储相似数据段。如图10B所示,X3D存储器1000包括设置在配置为LMU 1006至1015的存储单元阵列的末尾(例如LMU 1015后面)与配置为SMU 1001至1005的存储单元阵列的开始(例如SMU 1005前面)之间的空存储单元1016。
在一实施例中,对X3D存储器1000执行的磨损均衡类似于对X3D存储器400执行的磨损均衡。然而,不将第一SMU(例如SMU 1001)与第一LMU(例如LMU 1006)交换,执行磨损均衡以产生X3D存储器1100包括将第一LMU(例如LMU 1006)迁移到空存储单元1016的位置,将第一SMU(例如SMU 1001)迁移到最后一个SMU(例如SMU 1005)后面的空存储单元,以及擦除第一SMU(例如SMU 1001)的原始位置,使得第一SMU的原始位置变为空存储单元1016。图10B所示的X3D存储器1000不包括任何空SMU或空LMU(尽管图10A所示的X3D存储器1000包括)。然而,最后一个连续SMU认为是最后一个SMU,不管该SMU是否存储数据。类似地,最后一个连续LMU认为是最后一个LMU,不管该LMU是否存储数据。
例如,将第一LMU 1006迁移到空存储单元1016的位置包括将数据段11写入空存储单元。将第一SMU 1001迁移到最后一个SMU后面的存储单元包括将数据段1写入LMU 1006。可以将数据段1从第一SMU 1001的先前位置擦除,使得第一SMU 1001的先前位置变为空存储单元1016。
磨损均衡的第一次迭代由箭头1080和1090所示。箭头1080显示存储数据段11的LMU 1006在磨损均衡的第一次迭代中迁移到空存储单元1016。箭头1090显示将存储数据段1的SMU 1001迁移到最后一个SMU(例如SMU 1005)后面的LMU 1006目前所在的存储单元。该磨损均衡过程具有与图4至图9中公开的损耗均衡过程相同的效果,即交换热数据和冷数据的位置的效果,但是还交换空存储器单元1016的位置。磨损均衡过程中涉及空存储单元1016,因为在磨损均衡的每次迭代期间数据写入空存储器单元1016以及从空存储单元1016写入另一SMU或LMU的位置。这样有助于确保在X3D存储器1000的整个生命期内以基本相等的频率访问空存储单元1016、SMU 1001和LMU 1006的位置。在一实施例中,可以更新与SMU和LMU相关联的位置数据(例如位置数据174)以反映磨损均衡的第一次迭代。
图11A和11B示出了对X3D存储器1000执行磨损均衡的第一次迭代之后的X3D存储器1100的表示。图11A所示为X3D存储器1100的网格表示。该X3D存储器1100的网格表示类似于X3D存储器1000的网格表示,只是将第一LMU(例如LMU 1106)迁移到最后一个LMU(例如LMU 1115)后面的存储单元。最后一个LMU 1115后面的存储单元是空存储单元(例如空存储单元1116)。将第一SMU(例如SMU 1101)迁移到最后一个SMU(例如SMU 1105)后面的存储单元,即LMU 1116的原始位置。空存储单元1116已经迁移到第一SMU的原始位置。
X3D存储器1100包括一个存储单元阵列,每个存储单元依次配置为SMU 1102、1103、1104、1105和1101。SMU 1101至1105分别类似于SMU 1000至1005并且存储相似数据段,只是SMU 1101的绝对位置已发生改变。X3D存储器1100还包括一个存储单元阵列,每个存储单元依次配置为LMU 1107、1108、1109、1110、1111、1112、1113、1114、1115和1106。LMU1106至1115分别类似于LMU 1000至1015并且存储相似数据段,只是LMU 1106的绝对位置已发生改变。
如图11A所示,在磨损均衡的第一次迭代之后,行(或部分)1150中的第一存储单元为存储数据段11(温/冷数据)的LMU 1106,行1155中的第一存储单元为存储数据段1(热数据)的SMU 1001。然后,将空存储单元1116迁移到第一SMU的原始位置。
图11B示出了X3D存储器1100的圆形表示,其中,箭头1180和1190图示如何对X3D存储器1100执行磨损均衡的第二次迭代。图11B所示的X3D存储器1100的圆形表示与图11A中所示的X3D存储器1100的网格表示结构相似并且存储相似数据段。如图11B所示,X3D存储器1100包括设置在配置为LMU 1106至1115的存储单元阵列的末尾(例如LMU 1106后面)和配置为SMU 1101至1105的存储单元阵列的开始(例如SMU 1102前面)之间的空存储单元1116。
磨损均衡的第二次迭代由箭头1180和1190所示。在一实施例中,对X3D存储器1100执行的磨损均衡的第二次迭代类似于对X3D存储器1000执行的磨损均衡的第一次迭代。箭头1180显示将存储数据段12的LMU 1107迁移到空存储单元1116。箭头1190显示将存储数据段2的SMU 1102迁移到最后一个SMU(例如SMU 1101)后面的存储单元。最后一个SMU后面的存储单元为LMU 1107目前所在的位置。在一实施例中,可以更新与SMU和LMU相关联的位置数据(例如位置数据174)以反映磨损均衡的第二次迭代。
图12A和图12B示出了对X3D存储器1000执行磨损均衡的第二次迭代之后的X3D存储器1200的表示。图12A所示为X3D存储器1200的网格表示。该X3D存储器1200的网格表示类似于X3D存储器1100的网格表示,只是将第一LMU(例如LMU 1207)迁移到最后一个LMU(例如LMU 1206)后面的存储单元。最后一个LMU后面的存储单元是空存储单元(例如空存储单元1216)。将第一SMU(例如SMU 1202)迁移到最后一个SMU(例如SMU 1201)后面的存储单元,即LMU 1116的原始位置。然后将空存储单元1216迁移到第一SMU的原始位置。
X3D存储器1200包括一个存储单元阵列,每个存储单元依次配置为SMU 1203、1204、1205、1201和1202。SMU 1201至1205分别类似于SMU 1000至1005并且存储相似数据段,只是SMU 1202的绝对位置已发生改变。X3D存储器1200还包括一个存储单元阵列,每个存储单元依次配置为LMU 1208、1209、1210、1211、1212、1213、1214、1215、1206和1207。LMU1206至1215类似于LMU 1000至1015并且存储相似数据段,只是LMU 1207的绝对位置已发生改变。
如图12A所示,在磨损均衡的第二次迭代之后,行(或部分)1250中的第二存储单元为存储数据段12(温/冷数据)的LMU 1207,行1255中的第二存储单元为存储数据段2(热数据)的SMU 1202。然后将空存储单元1216迁移到第一SMU的原始位置。
图12B示出了X3D存储器1200的圆形表示,其中,箭头1280和1290图示如何对X3D存储器1200执行磨损均衡的第三次迭代。图12B所示的X3D存储器1200的圆形表示与图12A所示的X3D存储器1200的网格表示结构相似并且存储相似数据段,只是X3D存储器1200以圆形方式示出。如图12B所示,X3D存储器1200包括设置在配置为LMU 1206至1215的存储单元阵列的末尾(例如LMU 1207后面)与配置为SMU 1201至1205的存储单元阵列的开始(例如SMU1203前面)之间的空存储单元1216。
磨损均衡的第三次迭代由箭头1280和1290所示。在一实施例中,对X3D存储器1200执行的磨损均衡类似于对X3D存储器1100执行的磨损均衡。箭头1280示出了将存储数据段13的LMU 1208迁移到磨损均衡的第二次迭代中的空存储单元1216。箭头1290示出了将存储数据段3的SMU 1203迁移到最后一个SMU(例如SMU 1202)后面的LMU 1208目前所在的存储单元。在一实施例中,可以更新与SMU和LMU相关联的位置数据(例如位置数据174)以反映磨损均衡的第三次迭代。
虽然图10至图12仅示出三次磨损均衡迭代,应理解,可以对X3D存储器1000执行任意次数的磨损均衡迭代。存储在X3D存储器1000中的SMU和LMU处的数据段可继续循环通过并且与存储在其它SMU和LMU处的数据交换,只要SMU和LMU在所有磨损均衡迭代中保持它们的连续性。
图4至图12所示的X3D存储器仅包括SMU、LMU和空存储单元。然而,X3D存储器还可以包括用于存储温数据的MMU和用于存储任何其它类型数据的任何其它类型的存储单元。在一实施例中,X3D存储器可以包括不同类型的存储单元的多个部分(或区域)。每个部分可以用于存储一定温度的数据。例如,第一部分包括用于存储热数据的SMU,第二部分包括用于存储温数据的MMU,第三部分包括用于存储冷数据的LMU,和/或第四部分包括不具体用于存储任何类型数据的空存储单元。每个部分中的存储单元彼此连续。在一实施例中,多个部分可以用于存储相同类型的数据。
图13A和图13B示出了具有用于存储各种类型数据的多个部分的X3D存储器1300的表示。图13A所示为X3D存储器1300的网格表示。X3D存储器1300包括行(或部分)1350、行1352和行1355。行1350包括一个存储单元阵列,每个存储单元依次配置为SMU 1301至1305,分别存储数据段1至5。行1352包括空存储单元1306和任意存储单元阵列,每个存储单元依次配置为MMU 1307至1309,分别存储数据段7至9。行1355包括空存储单元1310至1312的阵列和一个存储单元阵列,每个存储单元依次配置为LMU 1313至1316,分别存储数据段13至16。空存储单元1306和1310至1312没有配置为SMU、MMU或LMU,并且不存储任何数据。如图13所示,SMU彼此连续,MMU彼此连续,LMU彼此连续。
图13B所示为X3D存储器1300的圆形表示,其中,箭头1380、1385和1390图示如何对X3D存储器1300执行磨损均衡迭代。X3D存储器1300的圆形表示图示了存储在X3D存储器1300中的数据结构如何由部分(或行)逻辑地构造成圆形,使得可以在每个部分内和每个部分之间执行磨损均衡。在一实施例中,对X3D存储器1300执行的磨损均衡类似于对X3D存储器400和1000执行的磨损均衡。
箭头1380示出了在磨损均衡迭代期间将存储数据段1的SMU 1301迁移到空存储单元1306。箭头1385示出了在磨损均衡迭代期间将存储数据段7的MMU 1307迁移到空存储单元1310。箭头1390示出了将存储数据段13的LMU 1313在迁移到空存储单元1306之前迁移到SMU 1301曾经所在的位置。在一实施例中,首先迁移SMU 1301、其次迁移MMU 1307,最后迁移LMU 1313,从而有效地使用可用的空存储单元,而不必使用缓冲器来临时存储数据。因此,X3D存储器1300的圆形表示示出了本文公开的磨损均衡的实施例,有助于保持存储在每个部分中的数据的数据结构,并且保持每个部分中的数据的相对顺序。
在一实施例中,当HMD(例如HMD 100)的使用者搜索数据以对数据执行读取和/或写入请求时,处理器(例如处理器130)确定数据是存储在X3D存储器(例如X3D存储器133)上还是在辅助存储器(例如辅助存储器140)上。在一实施例中,X3D存储器存储的数据比辅助存储器的热。例如,处理器搜索位置数据(例如位置数据174)以确定数据是否存储在X3D存储器中。如果处理器确定数据存储在X3D存储器中,则处理器可以识别数据在SMU或LMU中的位置。否则,处理器在辅助存储器中搜索请求的数据。当搜索的数据存储在X3D存储器中时,数据可以直接写入数据的位置,因为X3D存储器支持数据的原地更新。本文公开的磨损均衡的实施例通过确保X3D存储器的所有存储单元以大致相同的速率读取、写入、写出和编程来帮助延长X3D存储器的寿命。因此,X3D存储器的所有存储单元将以相同速率磨损,而不是存储热数据的存储单元比存储冷数据的存储单元磨损地快得多。当X3D存储器的所有存储单元以相同速率磨损时,X3D存储器的寿命显著延长。
本发明实施例还确保存储在X3D存储器处的数据结构的顺序在每次磨损均衡迭代之后相对彼此保持。因为X3D存储器是非易失性的,所以存储在SMU处的热数据将根据需要进行存储,并且不依赖于正在供电的SMU。
在一实施例中,本发明包括一种用于X3D存储器中的磨损均衡的方法,包括:检测触发事件的构件,其中,X3D存储器包括第一部分存储单元和第二部分存储单元,第一部分存储单元包括用于存储第一类型数据的多个连续存储单元,第二部分存储单元包括用于存储第二类型数据的多个存储单元;以及响应于检测该触发事件,将存储在第一部分存储单元的第一存储单元中的数据迁移到与第一部分存储单元的最后一个存储单元相邻的存储单元的构件,以及将存储在第二部分存储单元的第一存储单元中的数据迁移到与第二部分存储单元的最后一个存储单元相邻的存储单元的构件。
在一实施例中,本发明包括X3D存储器,包括:多个SMU,存储在X3D存储器中的连续位置上并且用于存储第一类型数据;以及多个LMU,存储在X3D存储器中的连续位置上并且用于存储第二类型数据,其中,X3D存储器的磨损均衡包括:检测触发事件的构件;响应于该触发事件,将存储在多个SMU的第一SMU中的数据迁移到与多个SMU的最后一个SMU相邻的存储单元的构件,其中,多个SMU存储在X3D存储器中的连续位置上;以及将存储在多个LMU的第一LMU中的数据迁移到与多个LMU的最后一个LMU相邻的存储单元的构件,其中,多个LMU存储在X3D存储器中的连续位置上。
在一实施例中,本发明包括一种HMD,包括:X3D存储器,包括第一多个MU和第二多个MU,以及用于检测触发对X3D存储器执行的磨损均衡迭代的触发事件的构件,其中,将存储在第一多个MU的第一MU中的数据迁移到与第一多个MU的最后一个MU相邻的MU,第一多个MU存储在X3D存储器中的连续位置上,将存储在第二多个MU的第一MU中的数据迁移到与第二多个MU的最后一个MU相邻的MU,第二多个MU存储在X3D存储器中的相邻位置上。
在一实施例中,一种系统包括用于改进交叉点(cross-point,X3D)存储器中的磨损均衡的处理器构件。该系统还包括检测构件,用于通过处理器构件检测触发事件。该系统还包括存储器构件,更具体地说,X3D存储器构件,其还包括第一部分存储单元构件和第二部分存储单元构件。第一部分存储单元构件包括用于存储第一类型数据的多个连续存储单元,第二部分存储单元构件包括用于存储第二类型数据的多个存储单元。该系统还包括迁移构件,响应于检测触发事件,用于:
将存储在第一部分存储单元构件的第一存储单元中的数据迁移到与第一部分存储单元构件的最后一个存储单元相邻的存储单元;以及
将存储在第二部分存储单元构件的第一存储单元中的数据迁移到与第二部分存储单元构件的最后一个存储单元相邻的存储单元。
虽然本发明中已提供若干实施例,但应理解,在不脱离本发明的精神或范围的情况下,本发明所公开的系统和方法可以以许多其它特定形式来体现。本发明的示例应被视为说明性而非限制性的,且本发明并不限于本文中所给出的细节。例如,各种元件或组件可以在另一系统中组合或整合,或者某些特征可以省略或者不实施。
此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其它系统、模块、技术或方法进行组合或集成。展示或论述为彼此耦合或直接耦合或通信的其它项也可以采用电方式、机械方式或其它方式经由某一接口、设备或中间组件间接地耦合或通信。其它变化、替代和改变的示例可以由本领域的技术人员在不脱离本文精神和所公开的范围的情况下确定。

Claims (20)

1.一种由处理器执行的改进交叉点(cross-point,X3D)存储器中的磨损均衡的方法,其特征在于,包括:
耦合到所述X3D存储器的处理器检测触发事件,其中:
所述X3D存储器包括第一部分存储单元和第二部分存储单元,
所述第一部分存储单元包括用于存储第一类型数据的多个连续存储单元,以及
所述第二部分存储单元包括用于存储第二类型数据的多个连续存储单元;以及响应于检测所述触发事件:
所述处理器将存储在所述第一部分存储单元的第一存储单元中的数据迁移到与所述第一部分存储单元的最后一个存储单元相邻的存储单元;以及
所述处理器将存储在所述第二部分存储单元的第一存储单元中的数据迁移到与所述第二部分存储单元的最后一个存储单元相邻的存储单元。
2.根据权利要求1所述的方法,其特征在于,所述触发事件发生于所述第一部分存储单元的所述多个连续存储单元中的一个或多个的访问频率中的至少一个达到预定阈值时。
3.根据权利要求1或2所述的方法,其特征在于,所述触发事件根据预定时间表发生,所述时间表指示何时需要对所述X3D存储器执行磨损均衡的下一迭代。
4.根据权利要求1所述的方法,其特征在于,将存储在所述第一部分存储单元的所述第一存储单元中的所述数据迁移到与所述第一部分存储单元的所述最后一个存储单元相邻的所述存储单元包括将存储在所述第一部分存储单元的所述第一存储单元中的所述数据迁移到所述第二部分存储单元的所述第一存储单元的位置。
5.根据权利要求1所述的方法,其特征在于,将存储在所述第二部分存储单元的所述第一存储单元中的所述数据迁移到与所述第二部分存储单元的所述最后一个存储单元相邻的所述存储单元包括将存储在所述第二部分存储单元的所述第一存储单元中的所述数据迁移到所述第一部分存储单元的所述第一存储单元的位置。
6.根据权利要求1所述的方法,其特征在于,空存储单元位于所述第二部分存储单元的所述最后一个存储单元与所述第一部分存储单元的所述第一存储单元之间,将存储在所述第一部分存储单元的所述第一存储单元中的所述数据迁移到与所述第一部分存储单元的所述最后一个存储单元相邻的所述存储单元包括将存储在所述第一部分存储单元的所述第一存储单元中的所述数据迁移到所述第二部分存储单元的所述第一存储单元的位置,以及将存储在所述第二部分存储单元的所述第一存储单元中的所述数据迁移到与所述第二部分存储单元的所述最后一个存储单元相邻的所述存储单元包括:
所述处理器将存储在所述第二部分存储单元的所述第一存储单元中的所述数据迁移到所述空存储单元;以及
所述处理器擦除存储在所述第一部分存储单元的所述第一存储单元中的所述数据,使得所述第一部分存储单元的所述第一存储单元变为所述空存储单元。
7.根据权利要求1所述的方法,其特征在于,所述第一部分存储单元包括用于存储第一类型数据的多个小存储单元(small memory unit,SMU),所述第二部分存储单元包括用于存储第二类型数据的多个大存储单元(large memory unit,LMU),所述X3D存储器还包括第三部分存储单元,所述第三部分存储单元包括用于存储第三类型数据的多个介质存储单元(medium memory unit,MMU)。
8.一种交叉点(cross-point,X3D)存储系统,其特征在于,包括:
多个小存储单元(small memory unit,SMU),存储在所述X3D存储器中的连续位置上并且用于存储第一类型数据;
多个大存储单元(large memory unit,LMU),存储在所述X3D存储器中的连续位置上并且用于存储第二类型数据;以及
至少一个处理器,用于:
检测触发事件,其中
响应于所述触发事件,所述至少一个处理器:
将存储在所述多个SMU的第一SMU中的数据迁移到与所述多个SMU的最后一个SMU相邻的存储单元,其中,所述多个SMU存储在所述X3D存储系统中的连续位置上;以及
将存储在所述多个LMU的第一LMU中的数据迁移到与所述多个LMU的最后一个LMU相邻的存储单元,其中,所述多个LMU存储在所述X3D存储系统中的连续位置上。
9.根据权利要求8所述的X3D存储系统,其特征在于,还包括连续地设置在所述多个LMU与所述多个SMU之间的一个或多个空存储单元。
10.根据权利要求8或9所述的X3D存储系统,其特征在于,所述至少一个处理器还执行以下步骤:
更新所述X3D存储器的位置数据以指示存储在所述第一SMU中的所述数据已经迁移到与所述最后一个SMU相邻的所述存储单元的位置;以及
更新所述X3D存储器的所述位置数据以指示存储在所述第一LMU中的所述数据已经迁移到与所述最后一个LMU相邻的所述存储单元的位置。
11.根据权利要求8所述的X3D存储系统,其特征在于,所述第一类型数据为已经在预定时间段内访问的数据。
12.根据权利要求8所述的X3D存储系统,其特征在于,所述多个SMU中的每个SMU均存储一部分闪存转换层(flash translation layer,FTL)表。
13.根据权利要求8所述的X3D存储系统,其特征在于,还包括至少一个空存储单元,用于在将所述第一SMU中的所述数据迁移到与所述最后一个LMU相邻的所述存储单元时将存储在所述第一LMU中的所述数据临时存储起来。
14.根据权利要求8所述的X3D存储系统,其特征在于,还包括至少一个空存储单元,用于在将所述第一LMU中的所述数据迁移到与所述最后一个SMU相邻的所述存储单元时将存储所述第一SMU中的所述数据临时存储起来。
15.一种混合存储设备(hybrid memory device,HMD),其特征在于,包括:
交叉点(cross-point,X3D)存储器,包括第一多个存储单元(memory unit,MU)和第二多个MU;以及
处理器,耦合到所述X3D存储器并且用于检测触发对所述X3D存储器执行磨损均衡迭代的触发事件,其中
存储在所述第一多个MU的第一MU中的数据迁移到与所述第一多个MU的最后一个MU相邻的MU中,
所述第一多个MU存储在所述X3D存储器中的连续位置上,
存储在所述第二多个MU的第一MU中的数据迁移到与所述第二多个MU的最后一个MU相邻的MU中,以及
所述第二多个MU存储在所述X3D存储器中的连续位置上。
16.根据权利要求15所述的HMD,其特征在于,还包括耦合到所述处理器和所述X3D存储器的辅助存储器,其中,所述X3D存储器包括第一类型数据,所述辅助存储器包括第二类型数据。
17.根据权利要求15所述的HMD,其特征在于,还包括耦合到所述处理器和所述X3D存储器的临时存储器,其中,所述临时存储器包括所述第一多个MU的所述第一MU中的位置、所述第一多个MU的所述最后一个MU中的位置、所述第二多个MU的所述第一MU中的位置和所述第二多个MU的所述最后一个MU中的位置中的至少一个。
18.根据权利要求15所述的HMD,其特征在于,在将存储在所述第一多个MU的所述第一MU中的所述数据迁移到与所述第一多个MU的所述最后一个MU相邻的存储单元之后更新所述第一多个MU的所述第一MU中的所述位置,以及在将存储在所述第二多个MU的所述第一MU中的所述数据迁移到与所述第二多个MU的所述最后一个MU的存储单元之后更新所述第二多个MU的所述第一MU中的所述位置。
19.根据权利要求15所述的HMD,其特征在于,所述X3D存储器包括至少一个空存储单元,将存储在所述第一多个MU的所述第一MU中的所述数据写入到所述空存储单元,将存储在所述第二多个MU的所述第一MU中的所述数据写入到所述第一多个MU的所述第一MU所在的所述存储单元。
20.根据权利要求15所述的HMD,其特征在于,所述X3D存储器包括至少一个空存储单元,将存储在所述第二多个MU的所述第一MU中的所述数据写入到所述空存储单元,将存储在所述第一多个MU的所述第一MU中的所述数据写入到所述第二多个MU的所述第一MU所在的所述存储单元。
CN201780051147.5A 2016-08-24 2017-08-11 多个数据温度区的交叉点存储器的磨损均衡方法 Active CN109643274B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201662379228P 2016-08-24 2016-08-24
US62/379,228 2016-08-24
US201662382581P 2016-09-01 2016-09-01
US62/382,581 2016-09-01
US15/420,696 US11556462B2 (en) 2016-08-24 2017-01-31 Wear-leveling method for cross-point memory for multiple data temperature zones
US15/420,696 2017-01-31
PCT/CN2017/097127 WO2018036394A1 (en) 2016-08-24 2017-08-11 Wear-leveling method for cross-point memory for multiple data temperature zones

Publications (2)

Publication Number Publication Date
CN109643274A CN109643274A (zh) 2019-04-16
CN109643274B true CN109643274B (zh) 2020-08-07

Family

ID=61242543

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780051147.5A Active CN109643274B (zh) 2016-08-24 2017-08-11 多个数据温度区的交叉点存储器的磨损均衡方法

Country Status (4)

Country Link
US (1) US11556462B2 (zh)
EP (1) EP3497575B1 (zh)
CN (1) CN109643274B (zh)
WO (1) WO2018036394A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10656844B2 (en) 2017-10-11 2020-05-19 Western Digital Technologies, Inc. Non-volatile memory with regional and inter-region wear leveling
US11056206B2 (en) * 2017-10-11 2021-07-06 Western Digital Technologies, Inc. Non-volatile memory with dynamic wear leveling group configuration
US10409716B2 (en) 2017-10-11 2019-09-10 Western Digital Technologies, Inc. Non-volatile memory with adaptive wear leveling
CN109725835B (zh) * 2017-10-27 2022-04-29 伊姆西Ip控股有限责任公司 用于管理盘阵列的方法、设备和计算机程序产品
US11537307B2 (en) * 2018-08-23 2022-12-27 Micron Technology, Inc. Hybrid wear leveling for in-place data replacement media
US10761739B2 (en) 2018-08-23 2020-09-01 Micron Technology, Inc. Multi-level wear leveling for non-volatile memory
US11119946B2 (en) 2019-05-16 2021-09-14 Micron Technology, Inc. Codeword rotation for zone grouping of media codewords

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015047348A1 (en) * 2013-09-27 2015-04-02 Intel Corporation Cache operations for memory management

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1556868B1 (en) * 2002-10-28 2007-09-05 SanDisk Corporation Automated wear leveling in non-volatile storage systems
US6980465B2 (en) 2003-12-19 2005-12-27 Hewlett-Packard Development Company, L.P. Addressing circuit for a cross-point memory array including cross-point resistive elements
US8105948B2 (en) * 2008-02-14 2012-01-31 Magic Technologies, Inc. Use of CMP to contact a MTJ structure without forming a via
US8416609B2 (en) 2010-02-15 2013-04-09 Micron Technology, Inc. Cross-point memory cells, non-volatile memory arrays, methods of reading a memory cell, methods of programming a memory cell, methods of writing to and reading from a memory cell, and computer systems
CN102289412B (zh) 2011-09-07 2013-08-14 上海交通大学 固态硬盘的静态磨损均衡方法及系统
CN103222004B (zh) 2011-09-09 2015-06-17 松下电器产业株式会社 交叉点型电阻变化非易失性存储装置及其写入方法
CN202472635U (zh) 2012-03-23 2012-10-03 山东华芯半导体有限公司 闪存磨损均衡装置
US9032137B2 (en) 2012-11-21 2015-05-12 Intel Corporation Flexible wear management for non-volatile memory
TWI627551B (zh) * 2013-08-29 2018-06-21 Xu yi hong System and method for verifying non-contact sensing tags
US20160232103A1 (en) 2013-09-26 2016-08-11 Mark A. Schmisseur Block storage apertures to persistent memory
US9285994B2 (en) 2014-06-05 2016-03-15 International Business Machines Corporation Block-level predictive data migration
CN105446894B (zh) 2014-08-20 2019-02-05 华为技术有限公司 一种写均衡的处理方法和装置
KR102254102B1 (ko) 2015-01-23 2021-05-20 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 동작 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015047348A1 (en) * 2013-09-27 2015-04-02 Intel Corporation Cache operations for memory management

Also Published As

Publication number Publication date
US20180060227A1 (en) 2018-03-01
CN109643274A (zh) 2019-04-16
EP3497575A4 (en) 2019-08-21
US11556462B2 (en) 2023-01-17
EP3497575A1 (en) 2019-06-19
EP3497575B1 (en) 2021-10-06
WO2018036394A1 (en) 2018-03-01

Similar Documents

Publication Publication Date Title
CN109643274B (zh) 多个数据温度区的交叉点存储器的磨损均衡方法
US9600408B2 (en) Data storage device and method for flash block management
CN102779096B (zh) 一种基于页块面三维的闪存地址映射方法
JP5736439B2 (ja) ソリッドステート記憶装置におけるトランスレーションレイヤ
US8650379B2 (en) Data processing method for nonvolatile memory system
US20130151759A1 (en) Storage device and operating method eliminating duplicate data storage
US20130205102A1 (en) Storage control system with erase block mechanism and method of operation thereof
US20100161885A1 (en) Semiconductor storage device and storage controlling method
US11386005B2 (en) Memory system, memory controller, and method of operating memory system for caching journal information for zone in the journal cache
JP2012506093A (ja) ソリッドステート記憶装置内のホットメモリブロックテーブル
JP6060277B2 (ja) ディスクアレイ・フラッシュ方法及びディスクアレイ・フラッシュ装置
JP2006236304A (ja) 記憶装置および情報処理システム
KR102240261B1 (ko) 메모리 관리
JP2014021622A (ja) メモリシステムおよびその制御方法
KR102099496B1 (ko) 멀티-다이 기록 관리에서의 패턴 브레이킹
US10216571B2 (en) System and methodology for error management within a shared non-volatile memory architecture using bloom filters
JPWO2014013595A1 (ja) 半導体装置
CN101819821B (zh) 一种固态硬盘动态损耗均衡方法
KR101070511B1 (ko) Ssd 컨트롤러 및 ssd 컨트롤러의 동작 방법
CN103092771A (zh) 固态储存装置及其高速缓存的控制方法
US9092344B2 (en) Solid state drive
CN112181274A (zh) 提升存储设备性能稳定性的大块的组织方法及其存储设备
KR20120111811A (ko) 데이터 기록 방법. 메모리, 및 메모리 기록 시스템
KR101027687B1 (ko) 라이트 동작을 제어하는 반도체 스토리지 시스템 및 그 제어 방법
US20160140034A1 (en) Devices and methods for linked list array hardware implementation

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant