CN103914398B - 用以管理具有实体地址空间的存储器使用率的方法及装置 - Google Patents

用以管理具有实体地址空间的存储器使用率的方法及装置 Download PDF

Info

Publication number
CN103914398B
CN103914398B CN201310471821.9A CN201310471821A CN103914398B CN 103914398 B CN103914398 B CN 103914398B CN 201310471821 A CN201310471821 A CN 201310471821A CN 103914398 B CN103914398 B CN 103914398B
Authority
CN
China
Prior art keywords
address
active window
window
container
data object
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
CN201310471821.9A
Other languages
English (en)
Other versions
CN103914398A (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.)
Macronix International Co Ltd
Original Assignee
Macronix International 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 Macronix International Co Ltd filed Critical Macronix International Co Ltd
Publication of CN103914398A publication Critical patent/CN103914398A/zh
Application granted granted Critical
Publication of CN103914398B publication Critical patent/CN103914398B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • 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
    • 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
    • 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/7204Capacity control, e.g. partitioning, end-of-life degradation
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种用以管理具有实体地址空间的存储器使用率的方法及装置,该方法包括将数据对象的逻辑地址与实体地址空间内的位置进行对应,以及定义一个活动窗口为实体地址空间内的一个多个地址区段;该方法包含允许数据对象的写入,该数据对象的逻辑地址对应到活动窗口内多个地址区段内的位置;该方法也包含在侦测到要写入数据对象的逻辑地址对应到活动窗口以外的位置时,会更新其对应关系使逻辑地址能对应到活动窗口中所选定的位置,然后允许对所选定的位置做写入的动作;该方法也包含维护在活动窗口中多个地址区段的存取数据标示的使用率以及配合存取数据增加或移除活动窗口中的地址区段。

Description

用以管理具有实体地址空间的存储器使用率的方法及装置
技术领域
本发明与存储器装置和系统及其相关的存储器管理有关。
背景技术
非易失性存储器具有写入/擦除的次数限制,若存储器管理单元不对这样的限制加以管理,则存储器将发生永久损坏或导致系统失效。存储器管理中的平均磨损方法,是一种能够改善非易失性存储器耐久度的技巧。在实作一个有效的平均磨损算法时,可能会消耗存储器空间、增加操作的复杂度,以及产生系统负荷和延迟现象。因此,在有效的平均磨损和低延迟度之间取得平衡的取舍,是件重要的工作。通常基于相位变化材质的非易失性存储器,其写入/擦除的次数限制约在106-109,要比动态随选存储器(DRAM)的1015以上要来的低。所以,设计出一个有效率的平均磨损方法,使非易失性存储器能够应用于像DRAM一般的高耐久度环境下,是非常重要的议题。特别是将非易失性存储器应用在储存文件系统中需要经常更新的用来维护档案和目录属性的节点(又称为后设数据,metadata)时,非易失性存储器的耐久度问题就显得更为重要。
因此,我们需要提供一个有效的平均磨损设计,此设计应具有低计算复杂度和低延迟度,同时也能兼容于存储器管理目前所使用的虚拟地址配置(virtual addressingschemes)。
发明内容
本技术说明了支持储存经常更新的数据对象的非易失性存储器,其使用寿命是有限地,例如相变存储器,或是储存的数据对象被存储器管理程序经常移动的其他型式的存储器,同时存储器管理程序可能与数据对象的特性无关。
使用这项技术的系统,包含了具有行进策略的平均磨损方法的运作逻辑。行进策略系采用一个活动的窗口于该窗口所定义的区域内执行平均磨损方法,通过活动窗口的扩大或缩小,可对活动窗口进行改变。而某区域内平均磨损方法的完成,是通过将经常更新的数据对象调换至活动窗口内、不经常更新的数据对象调换至活动窗口之外、以及相互调换在活动窗口所对应的多个地址区段内的数据对象。此外,活动窗口可根据多种窗口移动程序在一个实体地址空间当中被移动或前进,以分散存储器中各存储单元的使用率。
例如,用来管理存储器使用率的方法中,包括一个实体地址空间,该空间内包含数据对象的逻辑地址与实体地址空间中位置的对应关系,并定义活动窗口为实体地址空间中的多个地址区段。这个方法也允许数据对象的写入,该数据对象的逻辑地址会对应至活动窗口中多个地址区段的位置。这个方法也包括在侦测到要写入数据对象的逻辑地址对应到活动窗口以外的位置时,会更新其对应关系使逻辑地址能对应到活动窗口中所选定的位置,然后允许对所选定的位置做写入的动作。一上述的方法包括一窗口移动程序,其中该窗口移动程序包括维护表示该活动窗口内的该多个地址区段的使用率的存取数据,以及增加或移除活动窗口中的地址区段以配合该存取数据。
在允许对选定的位置进行写入时,这个方法会将选定位置中的数据对象移至活动窗口之外的位置,并且更新对应关系使得选定位置中数据对象的逻辑地址可对应到窗口之外的位置。这个方法使用一个指标来识别被选定的位置,并且能递增指针值来识别下一个要被使用的选定位置,以便能处理另一个写入到活动窗口外位置的请求。
在这里描述的例子中,存取的数据包括在活动窗口中存取其多个地址区段的一第一窗口计数值(cntp)。当第一个窗口计数值(cntp)到达第一临界值时,这个方法会增加一个地址区段至活动窗口内,而且数据对象的逻辑地址也会被对应到活动窗口外的一个被选定位置。
存取数据可包括在活动窗口中存取其多个地址区段的一第二窗口计数值(cntt),以及一组区段的存取数据计数值分别对应到活动窗口中的多个地址区段(状态)。这个方法包括在侦测到要写入数据对象的逻辑地址对应到活动窗口之内的位置时,会由活动窗口中移除一个地址区段,而该区段包括活动窗口内的位置,这会发生在第二窗口计数值(cntt)到达窗口的第二临界值以及地址区段的各区段计数(状态)到达一个地址区段(也就是最终状态)的各区段临界值之时。
多个地址区段分别包括一组两个以上的数据对象容器。The plurality ofaddress segments includes respective sets of more than two containers for thedata objects.这个方法包括在侦测到要写入的一数据对象的逻辑地址对应到活动窗口之内的一位置时,如果包含该数据对象的一已知区段的区段存取(状态)计数值低于其相对应的区段临界值以及第二窗口计数值(cntt)到达第二临界值,则相互调换该已知地址区段所属的一组数据对象容器中的两个容器中的数据对象。
维护存取数据的步骤,包括在侦测到数据对象的写入请求时,递增第一窗口计数值(cntp),如果第一窗口计数值到达窗口的第一临界值,便复位第一窗口计数值(cntp)。同样的,维护存取数据的步骤还包括在侦测到数据对象的写入请求时,递增第二窗口计数值(cntt),如果第二窗口计数值到达窗口的第二临界值,便复位第二窗口计数值(cntt)。
地址区段包括N个容器,其中N大于一,且地址区段的各区段临界值为N×(N-1)。互换数据对象的步骤包括当存取数据于一地址区段时,递增其相对应的区段存取(状态)计数值。
使用本技术的系统可包括找寻特定对象的逻辑,它可根据对象和相关容器和间接指标的对应关系来作搜寻,并使用间接指标(例如:目标指针)来存取特定对象。根据存储器的使用样式(例如:平均磨损),对象可在多个容器之间移动而不需要改变地址对应关系。
在一个实施例中,存储器管理的方法包括将数据对象储存在多个容器中,这些容器都有地址并且包含一个物理存储器的寻址单元;使用间接指针来存取数据对象,一个特定容器内的间接指标会指向到多个容器中用来储存相关数据对象的一个容器的地址;以及移动数据对象和根据用于物理存储器的平均磨损协议来更新间接指针。间接指标可被储存在与容器相同的物理存储器中。间接指标也可被储存在容器中。
在前述的实施例中,用于包含多个数据对象的一个文件系统的存储器管理方法,包括将数据对象(例如索引节点(inodes),以下简称为节点)储存在多个容器中,这些容器都有地址并且包含一个物理存储器的寻址单元;将对象(例如节点)对应至多个容器中的相关容器中;以及储存间接指针(例如目标指针)至容器中。一个特定容器内的间接指标会指向到多个容器中用来储存相关对象的一个容器的地址。这个方法包括储存来源指标至容器内。一个特定容器内的来源指标会指向一个储存于该特定容器的对象所映像的容器地址。
这个方法包括将储存在许多容器中的一第一容器内的对象移到一第二容器内,并使用第一容器内的来源指针来找出该对象所映像的第三容器。这个方法包括更新第三容器的间接指标来指向至第二容器,并且更新第二容器的来源指标来指向至第三容器。数据对象的移动可能会是存储器中平均磨损管理机制的产物,或是其他与数据对象本质无关的存储器管理技术的产物。
这个方法包括将储存于多容器中一第一个容器内的一第一数据对象和储存于多容器中的一第二容器内的一第二数据对象进行互换,其中第一数据对象被映像到多容器中的一第三容器,而第二数据对象则被映像到多容器中的第四容器。互换的操作就是将一个对象自存储器中具有较高存取计数值的一个实体位置移动到具有较低存取计数值的一个实体位置,也可以是将对象自较低存取计数值的位置移动到较高存取计数值的位置,以改善平均磨损。本实施例中的互换方法包括使用第一个容器内的来源指标来找到第三个容器,以及使用第二个容器内的来源指标来找到第四个容器。这个方法包括更新第三个容器的间接指标使其指到第四个的间接指标所指到的容器,以及在第三个的间接指标更新前,更新第四个的间接指标使其指到第三个的间接指标所指到的容器。这个方法包括更新第二个容器的来源指标来指向到第三个容器,以及更新第一个容器的来源指标来指向到第四个容器。假如间接指标和/或来源指标都指向到储存间接指标和/或来源指标的容器,多容器中的第三个和/或多容器中的第四个会与多容器中的第一个和/或多容器中的第二个相同。
使用相变存储器来储存如同多个节点的数据对象是有好处的,因为高访问速度可促使实时的读写,同时,相变存储器是非易失性的,在失去电源或其他复位事件后可快速地复原。存储器管理的系统的一件重要工作之一,就是要能完成不可切割执行的操作(atomicoperations),像是更新文件系统中包括前述的间接指针的后设数据(Metadata)。使用后备电源(例如:超级电容)的系统可帮助确保不可切割执行的操作的完整执行,如此一来系统便可自断电后复原而不会失去包括间接指针的数据。
本发明的其他面向和优点可由以下的图说明、详细说明和权利要求范围中看到。
附图说明
图1为一个范例存储器管理系统的方块图。
图2A及图2B在说明互换数据对象至活动窗口内以更新一个数据对象。
图3A及图3B在说明增加一个地址区段至活动窗口。
图4A及图4B在说明在一个地址区段中两个容器之间数据对象的互换以及自活动窗口中移除另一个地址区段。
图5在说明在一个地址区段中两个容器之间数据对象的互换。
图6为使用行进策略的存储器管理流程图。
图7A在说明一个节点容器。
图7B在说明储存在节点容器中节点之间的关系以及由节点所表示的个别档案和目录。
图8在说明节点在节点容器之间移动之前的范例状态。
图9在说明更新间接目标指针。
图10在说明互换节点以及更新间接来源指标。
图11为使用具有间接指标的节点容器的存储器管理流程。
图12为使用具有间接指标的节点容器的另一个存储器管理流程。
图13为一个范例计算机系统的方块图。
【符号说明】
110 文件系统界面
120 文件系统
121 用户数据管理器
125 后设数据管理器
126 耐久度感知管理单元
130 读高速缓存(可选项)
140 相变存储器
141 后设数据
142 用户数据
610 要求更新一个数据对象
620 递增第一和第二窗口计数值
625 第一窗口计数值=第一临界值?
630 复位第一窗口计数值
635 数据对象在活动窗口内?
640 将一个地址区段加至活动窗口内
645 第二窗口计数值=第二临界值?
650 复位第二窗口计数值
655 数据对象在活动窗口内?
665 各区段计数值=各区段临界值?
670 自活动窗口中移除地址区段
680 互换地址区段中的数据对象
690 如果数据对象不在活动窗口内,将数据对象互换至活动窗口内
1110 移动第一容器内的对象至一个第二容器
1120 使用第一容器内的来源指标来找出一个第三容器
1130 更新第三容器内的间接目标指针来指向第二容器
1140 更新第二容器内的来源指标来指向第三容器
1210 将第一容器内的一个第一对象与第二容器内的一个第二对象互换
1220 使用第一容器内的间接来源指标来找出一个第三容器,以及使用第二容器内的间接来源指标来找出一个第四容器
1230 互换第三容器和第四容器内的间接目标指针
1240 互换第一容器和第二容器内的间接来源指标
1300 计算机系统
1314 使用行进策略的存储器控制器
1315 定义实体地址空间内地址区段的一个活动窗口
1316 数据处理器
1318 网络接口
1320 用户接口输出装置
1322 用户接口输入设备
1324 储存次系统
1325 逻辑地址对应至实体地址空间内位置的数据对象
1326 存储器次系统
1327 具有间接指标的节点容器
1328 使用行进策略管理下的相变存储器
1330 RAM
1332 ROM
具体实施方式
基于行进策略的平均磨损方法具体实现的详细说明,可参考本发明的附图。
图1为一个范例存储器管理系统100的方块图,该系统使用一个方法来管理包括一个实体地址空间的存储器使用率。存储器管理系统包括一个文件系统接口110,它位于用户程序如应用程序1、应用程序2、应用程序N和文件系统120之间。文件系统120包括一个用户数据管理器121和一个后设数据管理器125。文件系统120会储存后设数据141和用户数据142至相变存储器(PCM)140之内。实体地址空间可位于相变存储器(PCM)140之内,后设数据(Metadata)141可在实体地址空间之内。在文件系统120和相变存储器140之间可以有一个读高速缓存130。
当文件系统接口110从一个用户程序收到一个输入/输出请求时,如果这个请求是要存取用户数据,则它会分派这个请求给文件系统120中的用户数据管理器121。同样地,如果这个请求是要存取后设数据,则文件系统接口110会分派这个请求给文件系统120中的后设数据管理器125。后设数据管理器125会处理后设数据,它包括一个耐久度感知管理单元126用来避免因为PCM存储器单元被消耗而经常更新后设数据。
一个文件系统中的后设数据可包括数据对象,像是节点(多个节点),它可提供关于数据对象的属性信息,像是档案和目录。一个档案或目录可被一个节点所表示。例如,一个节点可包含一些信息,像是一个档案被建立或修改时的时间和日期信息,被建立档案的作者信息,被建立档案的位置信息,档案的大小信息等,但是不包括档案中的用户数据。因此,节点的大小会相当的小,约在128字节或256字节。多个节点(Inodes)会链接到真正含有用户数据的存储器位置。
图2A及图2BB在说明互换数据对象至活动窗口内以更新一个数据对象。数据对象的逻辑地址会对应至实体地址空间内的位置。一个多个地址区段在实体地址空间内被定义为一个活动窗口。该活动窗口可根据多种窗口移动程序在一个实体地址空间当中被移动或前进,以分散存储器中各记忆单元的使用率。具有逻辑地址的数据对象对应到活动窗口内多个地址区段的位置时,可以被写入至位置中。多个地址区段中的地址区段包括容器,而多个地址区段内的位置可以是容器的位置。
当侦测到一个请求要写入数据对象时,且该数据对象的逻辑地址被对应到活动窗口之外的位置,则逻辑地址和活动窗口之外的位置的对应关系必须被更新,使得逻辑地址能对应至活动窗口内所选定的位置,然后数据对象便可被写入至活动窗口内所选定的位置。在活动窗口内所选定位置的数据对象,可被移动到活动窗口之外的位置,则对应关系必须被更新,使得在活动窗口内已选定位置的数据对象的逻辑地址可以被对应到活动窗口之外的位置。活动窗口内已选定的位置可使用位置指针来确认。位置指针会指向到一个位置,这个位置的数据对象不会因为经常被更新而互换掉,或是被写至活动窗口之外的位置。在数据对象互换之后,位置指针会递增以确认下一个要被使用的被选定位置,以免有另一个写至活动窗口之外位置的请求出现。
一如图2A所说明的范例,活动窗口210包括一个第一地址区段220,和一个第二地址区段230。第一地址区段220包括一个容器储存数据对象E,而第二地址区段230包括一个容器231储存数据对象B。一个地址区段内的容器数量,取决于文件系统(如图1的120)所配合特定的数据样式。虽然每个第一地址区段220和第二地址区段230只看到5个容器,一个地址区段可包括其他数量的容器,像是10或15个容器。数据对象A被储存于活动窗口210之外的一个容器205,它会被互换至活动窗口210之内。一个位置指针250可辨识出容器231储存数据对象B,该对象会被互换至活动窗口210之外。实线箭号260指出活动窗口210指示加入和移除地址区段的行进方向。在一个实施例中,活动窗口210沿着实体地址增加的方向前进。例如,活动窗口210可自最低的实体地址或任何实体地址开始前进。
如图2B的说明,二个数据对象(例如:A和B)会被互换,也就是地址区段230中的容器231现在储存数据对象A,而活动窗口210之外的容器241现在储存数据对象B。因为,数据对象A被收集至活动窗口用来进行如图4A和图5所描述的区域性分配。位置指针250会递增以指示地址区段230中的容器23为活动窗口下一个被选定的容器位置。
图3A及图3B在说明增加一个地址区段至活动窗口。存取数据是用来显示活动窗口中多个地址区段的使用率。地址区段可以被加至活动窗口或自活动窗口中移除。存取数据包括一个第一窗口存取计数值,也就是活动窗口中多个地址区段的存取次数。第一窗口存取计数值被用来设定一个用以将一个地址区段加至活动窗口之中的取样周期。在一个实施例中,第一窗口存取计数值包括写入活动窗口中多个地址区段的计数。
当侦测到一个写入数据对象的请求时,且该数据对象的逻辑地址被对应到活动窗口之外的位置,则可确认一个容器储存了数据对象。如果第一窗口计数值已到达一个第一临界值,首先会在活动窗口之外的实体地址空间中发现一个地址区段,然后将该地址区段加至活动窗口中。除此之外,储存活动窗口之外位置的数据对象的容器,会和由位置指针所指出的活动窗口之一被选定位置的容器进行互换,位置指针接着会递增以指示下一个将被选定的位置,以利于有其他写入请求要写至活动窗口外的位置,就如图2A和图2B所描述的一样。
如图3A所说明的范例,活动窗口310包括一个第一地址区段320和一个第二地址区段330。第一地址区段320包括一个容器储存数据对象E,而第二地址区段330包括一个容器331储存数据对象A和一个容器332储存数据对象D。数据对象C储存在活动窗口310之外的一个容器305,它会被互换到活动窗口310之内。一个位置指针350辨识出容器332储存数据对象B,它将会被互换至的活动窗口310之外。实线箭号360指出活动窗口310加入和移除地址区段的行进方向。虚线箭号370指出那些数据对象将会被互换(例如D和C)。
如图3B所说明的范例,一个地址区段340会先由活动窗口310之外的实体地址空间中找到,然后再加至活动窗口310之内。除此之外,二个数据对象(例如:D和C)会被互换,也就是在第二个地址区段330内的容器332现在会储存数据对象C,而活动窗口310之外的容器305现在会储存数据对象D。位置指针350会递增以指示地址区段330内的容器333为下一个活动窗口内将被选定的容器的位置。
图4A及图4B在说明在一个地址区段中两个容器之间数据对象的互换以及自活动窗口中移除另一个地址区段。存取数据包括一个第二窗口计数值,用来记录活动窗口内多个地址区段的存取次数。第二窗口计数值被用来设定一个用来从活动窗口中移除一个地址区段的取样周期。在一个实施例中,第二窗口存取计数值包括活动窗口中写入多个地址区段的次数。
当侦测到一个写入数据对象的请求时,且该数据对象的逻辑地址被对应到活动窗口之内的位置,则可确认一个容器储存了数据对象。如果第二窗口计数值已到达一个第二临界值,则储存数据对象的容器的地址区段可以被确认出来。一个地址区段可包括两个以上具有数据对象的容器。一个地址区段内两个容器之间的数据对象可以被互换。一个已知地址区段的一区段存取计数值,在每次两个容器内的数据对象互换时会递增。一区段存取计数值会到达一区段临界值N×(N-1),其中N为一地址区段内容器的数量。如果一个已知地址区段的一区段存取计数值并未到达区段临界值,该已知地址区段内两个容器的数据对象会被互换,而且该已知地址区段的区段存取计数值会被递增。否则,如果已知地址区段的区段存取计数值已到达区段临界值,则已知地址区段会自活动窗口中移除。
如图4所说明的实施例,活动窗口410包括一个第一地址区段420,一个第二地址区段430和一个第三地址区段440。第一地址区段420包括一个容器421储存数据对象E,而第二地址区段430包括一个容器431储存数据对象A以及一个容器432储存数据对象C。一个位置指针450辨识出容器433储存了数据对象,在一个互换数据对象至活动窗口之内的操作时,它将会被互换至的活动窗口410之外,就如同图2A和图2B所描述的一样。实线箭号460指出活动窗口410通过加入和移除地址区段的行进方向。
如果侦测到一个请求要写入数据对象E时,第二窗口计数尚未达到第二临界值,而且储存数据对象E的容器421位于活动窗口410之内,则数据对象E可直接被更新,就如图4A所说明的,不需要自活动窗口410内互换出一个数据对象,而且也不需要在储存数据对象E的第一地址区段420之内互换二个数据对象。
如图4B所说明的实施例,二个数据对象(例如A和C)会被互换,其中第二地址区段430内的容器431现在会储存数据对象C,而第二地址区段430内的容器431现在会储存数据对象A。位置指针450还在地址区段430内的容器433,因为容器433仍旧是活动窗口内下一个被选定的容器的位置。在一个地址区段内二个数据对象的互换,会被用来在平均磨损时进行区域性地分散写入,图5会有进一步的说明。
如同图4B所说明的实施例,如果第二窗口计数值已到达第二临界值,储存数据对象E的容器420位于活动窗口410之内,以及第一地址区段420的区段存取计数值已到达区段临界值,则第一地址区段420将自活动窗口410中移除。经过一段时间之后,活动窗口可能会包含非连续的地址区段,因为有些地址区段已自活动窗口中移除。
图5在说明在一个地址区段中两个容器之间数据对象的互换。当侦测到一个写入数据对象的请求时,且该数据对象的逻辑地址被对应到活动窗口之内的位置,则可确认一个容器储存了数据对象。如果第二窗口计数值已到达第二临界值,储存数据对象的容器位于活动窗口之内,则可确认地址区段中的容器储存了数据对象。如果地址区段的区段存取计数值(也就是状态)低于区段临界值(也就是最终状态),则地址区段内两个容器内的数据对象会互换,且区段存取计数值(也就是状态)会递增加一。
一个具有N个容器的地址区段,其区段临界值(也就是最终状态)为N×(N-1)。如图5的实施例所说明的,一个地址区段包括三个容器(例如501,502,503),所以区段的临界值(也就是最终状态)为3×(3-1)=6。在每个状态,两个不同的容器会被选定以循环方式来互换。例如,在State=1时,数据对象A和B被储存在两个容器中(例如501和502)并且进行互换。在State=2时,A和C被储存在两个容器中(例如502和503)并且进行互换。在State=3时,B和A被储存在两个容器中(例如501和503)并且进行互换。在State=4-6时,成对的容器会以同样的样式被选定。
因此,当地址区段的区段存取计数值(也就是状态)到达各区段临界值(也就是最终状态)时,每个数据对象(例如A,B,或C)都有类似的机率会留在地址区段内的任意容器中。由于每次在第二窗口计数值到达第二临界值时,一个地址区段中最多只有两个数据对象能被互换,本发明所提出的平均磨损设计具有低计算复杂度和低延迟度的效果。
在一个实施例中,一个行进算法描述了一个方法用来管理一个包括实体地址空间的存储器使用率。行进算法会使用此处所说明的行进策略来更新数据对象。行进算法的虚拟程序代码如以下所示。虚拟程序代码中使用节点i做为数据对象的一个范例,一个全局计数值cntp用来表示第一窗口计数值,另一个全局计数值cntt则用来表示第二窗口计数值。第一窗口计数值与第一临界值Tp有关,而第二窗口计数值则与第二临界值Tt有关。虚拟程序代码还使用一个活动窗口W,来定义实体地址空间中的一个多个地址区段。地址区段则包括两个以上含有数据对象的容器集合。一个位置指针p会指向活动窗口W内的一个地址区段w中的一个容器内所被选定的位置。
行进算法Marching Algorithm
在侦测到一个要更新数据对象的请求时,像是节点i,行进算法的逻辑会被启动在行进算法的第一行,第一窗口计数值cntp会被递增。在第二行,第一窗口计数值cntt会被递增。在第三行,储存节点i的一个容器x的被选定位置会被确认。取决于被选定的位置是否在活动窗口W之内,行进算法的其他部分会对如何更新节点i进行不同的决定。
第四行,在决定第一窗口计数值cntp是否到达第一临界值Tp。On line4,it isdetermined whether the first window count cntp has reached the firstthreshold Tp.如果到达的话,第一窗口计数值cntp会被复位为0(第五行),如果被选定的位置不在活动窗口W内(第六行),先由活动窗口之外的实体地址空间(第七行)找到一个地址区段,然后再加至活动窗口之内(第八行)。地址区段的搜寻可使用存储器管理中的算法,像是下次合适算法(next-fit algorithm)、最先合适算法(best-fit algorithm)、最佳合适算法(best-fit algorithm)和最差合适算法(worst-fit algorithm)。
在必要时,如果将一个地址区段加至活动窗口的操作已执行后,便可决定第二窗口计数值cntt是否已达到第二临界值Tt(第九行)。如果是的话,第二窗口计数值会复位为0(第十行),然后再进一步决定被选定的位置是否在(∈)活动窗口W之内(第十一行)。如果是的话,储存像是节点i数据对象的一个容器,其在一个地址区段w的被选定位置便可被确认(第十二行)。
如前面所述,一个地址区段内两个容器之间的数据对象,为了达到平均磨损会进行互换。每次两个容器之间的数据对象互换时,已知地址区段的区段存取计数值会被递增。区段存取计数值会到达一个区段临界值即N×(N-1),其中N为地址区段中的容器数目。
如果已知地址区段w的区段存取计数值并未到达区段临界值(第十三行),则已知地址区段w内两个容器之间的数据对象要被互换,而且已知地址区段w的区段计数值要递增(第十四行)。Is-Final-State(w)函数会使用区段计数值,来决定已知地址区段w内那两个容器之间的数据对象要被互换,来互换两个容器内储存的数据对象,以及递增已知地址区段的区段计数值(第十三行)。
如果已知地址区段w的各区段存取计数值已到达区段临界值(第十五行),则已知地址区段w将自活动窗口W中移除,也就是SHRINK-WINDOW(W,w)函数(第十六行)。
在第17行,如果有以下任何操作被执行的话,像是将地址区段加至活动窗口之内、自活动窗口移除一个地址区段、或是在一个已知地址区段中互换两个数据对象,就要决定储存节点i的容器x是否不在活动窗口W之内(第17行)。如果不是的话,由位置指针p所识别的活动窗口内被选定位置的容器,与储存节点i的容器x要互换,也就是函数SWAP-节点(x,p)的功能(第18行),位置指针p接着会被递增以识别活动窗口W中下一个被选定容器的位置(第19行)。然后,储存在容器x内的节点会被更新(第20-21行)。
图6为使用行进策略的存储器管理流程图。在步骤610,侦测到一个更新数据对象的请求,该数据对象具有逻辑地址对应到活动窗口之外。在步骤620,第一窗口计数值和第二窗口计数值都被递增。步骤625,在判断第一窗口计数值是否已到达第一临界值。如果是的话,在步骤630,第一窗口计数值会被复位到初始值像是0。步骤635,在判断数据对象的逻辑地址是否对应到活动窗口中一个被选定的位置。如果不是的话,在步骤640,先自实体地址空间找到一个地址区段,然后再加至活动窗口之中。
步骤645,在决定第二窗口计数值是否已到达第二临界值。如果是的话,在步骤650,第二窗口计数值会被复位到初始值像是0。步骤655,在判断数据对象的逻辑地址是否对应到活动窗口中一个被选定的位置。如果是的话,在步骤665,会先找到一个地址区段其数据对象的逻辑地址已被对应过,然后再进一步决定地址区段的区段计数值已到达区段临界值。如果地址区段的区段计数值已到达区段临界值,则在步骤670,该地址区段会自活动窗口中移除。如果地址区段的区段计数值尚未到达区段临界值,则在步骤680,地址区段的容器集合中两个容器之间的数据对象会互换,而且地址区段的区段存取计数值会被递增。s在一个实施例中,如果一个地址区段包括N个容器,则该地址区段的各区段临界值为N×(N-1)。
在步骤690,如果有以下任何操作被执行的话,像是将地址区段加至活动窗口之内、自活动窗口移除一个地址区段、或是在一个已知地址区段中互换两个数据对象,就要决定数据对象的逻辑地址是否被对应到活动窗口内一个被选定的位置。如果没有的话,活动窗口内一个被选定的位置会先使用一个指标来辨识。要被更新的数据对象会被写入至被选定的位置,先前在被选定位置的数据对象会移到活动窗口之外,对应关系也会跟着更新,使得在被选定位置数据对象的逻辑地址会对应到活动窗口之外的位置。位置指针接着会递增以确认下一个要用到的被选定位置,以便处理其他要写至活动窗口之外位置的请求。
图7A-图12在说明一个互换过程的实施例,其中牵涉到在第18行的行进算法的SWAP-节点函数以及步骤690图6的流程图。
图7A在说明一个节点容器,该容器可储存一个节点、一个间接目标指针t和一个间接来源指标t。一个节点容器可被视为一个容器。一个间接目标指针可被视为一个间接指标。一个间接来源指标可被视为一个来源指标。
图7B在说明储存在节点(多个节点)容器中节点之间的关系以及由节点所表示的个别档案和目录。例如,节点0、1、和2分别提供Directory A、Directory B、和File A的属性信息。要存取一个档案中(例File A)的用户数据,文件系统(例如图1的120)必须存取与该档案相关的节点(也就是节点2)。
数据对象(例如节点0、1、2、5)会被储存在一个节点区域710中的多个容器中(也就是节点容器0、1、2、5)。容器都有地址并且包含一个存储器的寻址单元节点区域710可以在一个相变存储器之中。在容器内(也就是节点容器0、1、2、5)的数据对象(例如节点0、1、2、5)会被对应到多个容器中相关容器的地址。例如,节点0、1、2、5会分别被对应到节点容器0、1、2、5,这会发生在任何节点在多个容器中的节点容器之间移动之前,例如为了存储器管理目的之平均磨损方法的使用样式。
间接目标指针(例如t=0、t=2、t=5、t=1)被储存于节点容器之内(例如节点容器0、1、2、5)。在一个特定容器内的间接目标指针t会指向多个容器内一个储存相对应对象的容器的地址,而相关的对象则储存在其中。例如,在一个特定节点容器2之内的间接目标指针t,指向到节点容器5的地址,所以与节点容器2的节点被储存起来。例如,在一个特定节点容器1之内的间接目标指针t,指向到节点容器2的地址,所以与节点容器1的节点被储存起来。间接来源指标(例如s=0、s=2、s=5、s=1)被储存于节点容器之内(例如节点容器0、1、2、5)。在一个特定容器内的间接来源指标s会指向多个容器内一个容器的地址,而储存在特定容器内的对象会被对应。例如,在一个特定节点容器2之内的间接来源指标s,指向到节点容器1的地址,所以储存在特定节点容器2之内的节点1会被对应。又例如,在一个特定节点容器1之内的间接来源指标s,指向到节点容器5的地址,所以储存在特定节点容器1之内的节点5会被对应。
特定数据对象可使用以下方式找到,根据对象与相关容器地址的对应关系可以存取到相关的容器,然后读出间接目标指针来存取特定对象。例如,一个特定的数据对象节点2,可根据对应关系存取相关的容器(例如节点容器2)后,再读取间接目标指针(例如t=5)来存取储存在节点容器5之内的特定对象节点2。又例如,一个特定的数据对象节点5,可根据对应关系存取相关的容器(例如节点容器5)后,再读取间接目标指针(例如t=1)来存取储存在节点容器1之内的特定对象节点5。
因此,文件系统(图1的120)可以存取任何特定的节点,它只要去查找与特定节点相关的一个节点容器内的一个间接目标指针,而且可不管文件系统中储存了多少个数据对象,或是该特定节点在多个容器的节点容器之间移动了多少次。
数据对象(例如节点)可根据存储器中的使用样式(例如:平均磨损)在多个容器中的容器之间移动,而不用改变数据对象(例如节点)和相关容器地址之间的对应关系。如图7B所说明,虽然节点已在容器之间移动,像是节点5没有被储存在节点容器5而是在节点容器1,而节点1没有被储存在节点容器1而是在节点容器2,文件系统仍然可以透过查找一个间接目标指针来存取任何特定的节点。
图8与图7B中的节点区域710有关,它在说明节点在节点容器之间被移动或被互换之前的状态,图9和图10在说明这样的操作。特别的是,节点容器0储存一个数据对象(例如节点0),而且一个来源指针s和一个目标指针t都指向节点容器0的地址。节点容器1储存一个数据对象(例如节点5),一个来源指标s指向一个节点容器5的地址并与储存于节点容器1的对象(例如节点5)建立起对应关系,和一个目标指针t指向一个节点容器2的地址并储存了相关的对象(例如节点1)。节点容器5储存一个数据对象(例如节点2),一个来源指标s指向至节点容器2的地址并与储存于节点容器5的对象(例如节点2)建立起对应关系,和一个目标指针t指向一个节点容器1的地址并储存了相对应的对象(例如节点5)。
对象(例如节点)可根据存储器中的使用样式(例如:平均磨损)在容器之间移动或互换。为确保对象在移动或互换之后,文件系统(图1的120)可以透过存取相关容器接着读出间接目标指针来找到特定对象,在节点容器内的来源指针和目标指针在节点被移动或互换时会被更新。
图9在说明更新间接目标指针。一个第一数据对象(例如节点5)被储存在一个第一容器(例如节点容器1)之内,会与一个第二数据对象(例如节点0)被储存在一个第二容器(例如节点容器0)之内做互换。第一数据对象(例如节点5)会被对应到一个第三容器(例如节点容器5),第一数据对象(例如节点0)则会被对应到一个第三容器(例如节点容器0)。在本例中,第二容器和第四容器都会参照到节点容器0,因为在节点容器0内的间接来源指标s会指回到节点容器0。一般来说,第二容器和第四容器都会参照到不同的容器。在第一容器(例如节点容器1)内的间接来源指标s会被用来找到第三容器(例如节点容器5)。在第二容器内的间接来源指标s会被用来找到第四容器(例如节点容器0)。
第三容器(例如节点容器5)内的间接目标指针t会被更新指向一个容器,该容器原先是由第四容器(例如节点容器0)内的间接目标指针t所指示。第四容器(例如节点容器0)内的间接目标指针t会被更新指向一个容器,该容器原先是由第三容器内的间接目标指针t所指示,而且是在第三容器(例如节点容器1)内的间接目标指针t尚未被更新之前。
图10说明互换节点和更新间接来源指标。储存在第一容器(例如节点容器1)内的第一数据对象(例如节点5),会与储存在第二容器(例如节点容器0)内的第二数据对象(例如节点0)互换。在第二容器(例如节点容器0)内的间接来源指标s会被更新为指向地三容器(例如节点容器5),而第一容器(如节点容器1)内的间接来源指标s会被更新为指向第四容器(例如节点容器0),在本例中第四容器即是第二容器。
将储存在第一容器(例如节点容器1)内的一个第一数据对象(例如节点5)和储存在第二容器(例如节点容器0)内的一个第二数据对象(例如节点0)互换,会造成第一数据对象被储存在第二容器和第二数据对象被储存在第一容器。例如,互换的作法可以将储存于第二容器的第二数据对象移到一个暂时的储存空间,再将储存于第一容器内的第一数据对象移至第二容器内,最后将暂时储存空间内的第二数据对象移至第一容器内。
如图8、图9和图10所说明的,起初储存于节点容器0和1之内的节点0和5,在目标指针更新后会被互换。另外,起初储存于节点容器0和1之内的节点0和5,也可在目标指针更新之前被互换。
在一个实施例中,算法1描述了一个包括多个数据对象的一个文件系统的存储器管理方法。算法1的虚拟程序代码复制如下:
1:xstmp=x.s;
2:ystmp=y.s;
3:swap(xstmp.t,ystmp.t);
4:swap(x.s,y.s);
5:swap(x.节点,y.节点);
在算法1中,x和y表示多个节点容器中的第一和第二节点容器,x.s和y.s则表示在第一和第二节点容器中的间接来源指标,而x.节点和y.节点则表示储存在第一和第二节点容器x和y之内的节点。间接来源指标x.s和y.s会指向到第三和第四节点容器xstemp和ystemp。第三和第四节点容器xstemp和ystemp储存间接目标指针xstemp.t和ystemp.t。函数swap()表示会互换函数内的两个自变量。例如,这两个自变量可以是两个间接目标指针、两个间接来源指标、或两个节点。
在算法1的第1行,使用第一节点容器x内的间接来源指标x.s可找到第三节点容器xstemp。在第2行,使用第二节点容器y内的间接来源指标y.s可找到第四节点容器ystmp。
在第3行,储存在第三和第四节点容器中的间接目标指针xstmp.t和ystmp.t会被互换。在第4行,储存在第一和第二节点容器中的间接来源指标x.s和y.s会被互换。在第5行,储存在第一和第二节点容器中的节点会被互换。
在另一个实施例中,第5行节点的互换可在第4行间接来源指标的互换之前执行,或是在第3行间接目标指针的互换之前执行。
图11为使用具有间接指标的节点容器的存储器管理流程。在步骤1110,储存在一个第一容器(例如图9的节点容器1)内的一个对象(例如图9的节点5)被移至一个第二容器(例如图10的节点容器0)中。在步骤1120,使用第一容器(例如图9的节点容器1)内的间接来源指标可以找到一个第三容器(例如图9的节点容器5)。在步骤1130,第三容器(例如图10的节点容器5)内的间接目标指针会被更新指向至第二容器(例如图10的节点容器0)。在步骤1140,第二容器(例如图10的节点容器0)内的间接目标指针会被更新指向至第三容器(例如图10的节点容器5)。在另一个实施例中,步骤1110可在步骤1130和1140之间执行,或是在步骤1140之后执行。
图12为使用具有间接指标的节点容器的另一个存储器管理流程。在步骤1210,储存于一个第一容器(例如节点容器1)的一个第一数据对象(例如节点5)会与储存于一个第二容器(例如节点容器0)的一个第二数据对象(例如节点0)互换,如图9和图10所显示的一样。在步骤1220,使用第一容器(例如节点容器1)内的间接来源指标可以找到一个第三容器(例如节点容器5),而使用第二容器(例如节点容器0)内的间接来源指标可以找到一个第四容器(例如节点容器0),如图8所说明的一样。在本实施例中,第二和第四容器都参照到节点容器0,因为在节点容器0内的间接来源指标s会指回到节点容器0。一般而言,第二容器和第四容器可用来参照到不同的容器。
在步骤1230,在第三和第四容器(例如节点容器5和0)中的间接目标指针(例t=1和t=0)会被互换,如图8和九所说明的。间接目标指针的互换,可将第三容器(例如节点容器5)内的间接目标指针t更新为指向到第四容器(例如节点容器0)的间接目标指针t所指到的容器,以及将第四容器(例如节点容器0)内的间接目标指针t更新为指向到第三容器的间接目标指针t所指到的容器,这样的更新必须在第三容器(例如节点容器1)的间接目标指针t尚未更新前执行。
在步骤1240,在第一和第二容器(例如节点容器0和1)内的间接来源指标(例s=0和s=5)会被互换,如图9、图10所说明的一样。间接来源指标的互换,可将第二容器(例如节点容器0)内的间接来源指标s更新为指向到第三容器(例如节点容器5)的间接来源指标s所指到的容器,以及将第一容器(例如节点容器0)内的间接来源指标s更新为指向到第四容器(例如节点容器0)的间接来源指标s所指到的容器,第四容器在本例中即是第二容器。
在另一个实施例中,步骤1210可在步骤1230和1240之间执行,或是在步骤1240之后执行。
图13为根据一个实作的范例计算机系统1300的方块图。计算机系统1300包括一个储存次系统1324,该次系统包括一个存储器1328包括一个实体地址空间1325和一个存储器控制器1314至少和存储器1328相连接。存储器1328包括逻辑地址被对应到实体地址空间1325内的位置的数据对象,它也储存具有间接指标1327的节点容器。行进策略会使用到具有间接指标的节点容器。
存储器1328可包括相变存储器材料,像是硫族化物,以及其他可编程的电阻材料。相变存储器材料可包括不同的合金材料,像是锗(Ge)、锑(Sb)、碲(Te)、镓(Ga)、铟(In)、银(Ag)、硒(Se)、铊(Ti)、铋(Bi)、锡(Sn)、铜(Cu)、钯(Pd)、铅(Pb)、硫(S)、和金(Au)。一般来说,相变材料包括GexSbxTex。其他可编程的电阻材料也可以使用,包括金属氧化物存储器、闪存、电解传导桥式存储器和其他。
存储器控制器1314包括程序或其他逻辑,会使用行进策略来管理一个包括实体地址空间(例1325)的存储器(例1328)的使用率。存储器控制器1314包括内部存储器(715)用来储存一个活动窗口,它定义了实体地址空间(例1325)中的地址区段,也包括管理活动窗口的信息像是活动窗口中地址区段的各区段存取计数值。活动窗口也可被储存在一个主要的随机存取存储器(RAM)1330内,作为程序执行时指令和数据存放的地方。实体与逻辑间的对应关系可被储存于主要的随机存取存储器(RAM)1330内或存储器控制器1314的内部存储器内。
特别的是,存储器控制器1314包括以下的逻辑:对应数据对象的逻辑地址与实体地址空间内位置的逻辑;定义实体地址空间内多个地址区段为活动窗口的逻辑;允许写入数据对象的逻辑,且该数据对象的逻辑地址对应到活动窗口内多个地址区段内的位置;在侦测到一个要求写入数据对象时,且该数据对象的逻辑地址对应到活动窗口外的位置,更新对应关系使得逻辑地址对应到活动窗口内所选定的位置,然后允许写入至选定位置的逻辑;在该实体地址空间移动的活动窗口并包括维护用来显示活动窗口中多个地址区段使用率的存取数据的逻辑;为反应存取数据而自活动窗口中增加或移除地址区段;为反应存取数据而对一个已知地址区段内一个容器集合中的两个容器之间的数据对象进行互换的逻辑。
存储器控制器1314包括程序或其他逻辑,来执行一个具有多个数据对象的一个文件系统的存储器管理。特别的是,存储器控制器1314包括以下的逻辑,将数据对象(例如节点)储存至具有地址和包含可寻址的存储器单元的多个容器之内的逻辑,将数据对象(例如节点)与多个容器之内相关容器的地址做对应的逻辑,储存间接指针(例如目标指针)至容器内的逻辑,其中一个特定容器内的间接指标会指向多个容器内的一个储存相对应的数据对象的容器的地址。存储器控制器1314还包括储存容器内来源指针的逻辑,其中一个特定容器内的来源指标会指向多个容器内的一个该特定容器内的对象所映像之容器地址。存储器控制器1314还包括将储存于一个第一容器内的一个对象移至第二容器内的逻辑,以及使用第一容器内的来源指标来指到第三容器内已被对应的对象的逻辑。存储器控制器1314还包括将第三容器内间接指标更新指向第二容器的逻辑,以及将第二容器内来源指标更新指向第三容器的逻辑
存储器控制器1314还包括一个后设数据处理器125,该处理器包括一个耐久度感知管理单元126(图1)。范例计算机系统1300和/或存储器控制器1314还包括执行其他工作的逻辑,这些工作在一个文件系统的存储器管理方法中已阐述过,而该文件系统包括多个数据对象像是档案、目录、节点等。
存储器1328可能会在集成电路上,其存储器控制器1314包括集成电路的逻辑。计算机系统1300会包括一个数据处理器1316,且存储器控制器1314包括数据处理器1316的逻辑。例如,该逻辑可包括算法像是本发明所描述的行进算法。
数据处理器1316会与多个外围装置透过总线次系统1324来沟通。这些外围装置包括储存次系统1324,例如存储器装置像是ROM和RAM,以及具有平均磨损的存储器1328,用户接口输入设备1322,用户接口输出装置1320,和一个网络接口次系统1318。输入和输出装置允许用户与计算机系统1300互动。网络接口次系统1318则提供与外部网络的一个接口。
用户接口输入设备1322可包括一个键盘;指向装置像是鼠标、轨迹球、触摸板或绘图板;一个扫瞄器;一个内有触控屏幕的显示器;语音输入设备像是声音辨识系统和麦克风;以及其他形式的输入设备。通常,使用「输入设备」这个名词会包括所有可能形式的装置和方法将信息输入至计算机系统1300。
用户接口输出装置1320可包括一个显示次系统、一个打印机、一个传真机或是非视觉装置像是语音输出装置。显示次系统包括一个阴极射线管(CRT),一个平板装置像是液晶显示器(LCD),一个投影装置,或一些其他建立可视化影像的机制。显示次系统也可包括一个非视觉显示器像是透过语音输出装置。通常,使用「输出装置」这个名词会包括所有可能形式的装置和方法将信息自计算机系统1300输出至用户或其他机器或计算机系统。
储存次系统1324储存程序和数据结构体,以提供功能给本发明所描述的一些或所有的模块和方法。这些软件模块通常会被数据处理器1316所单独执行或与其他处理器一起执行。
使用于储存次系统1324内的存储器次系统1326可包括一些存储器像是一个主要随机存取存储器(RAM)1330用来储存程序执行时的指令和数据,一个只读存储器(ROM)1332可储存固定的指令。储存次系统1324可为程序和数据文件提供提供持久的储存空间,它可包括一个硬式磁盘驱动器,一个软式磁盘驱动器和相关的可移动媒体,一个CD-ROM光驱,一个光驱,或可移动媒体匣。实现特定功能实作的模块可被储存于储存次系统1324之内,或其他可被处理器存取的机器。
总线(总线)次系统1312提供一个机制,让计算机系统1300的不同元件和次系统能相互沟通。虽然总线(总线)次系统1312是以单个总线来图示,也可以使用多个总线来实作总线(总线)次系统。
计算机系统1300可以有不同的型式包括工作站,服务器,运算丛集,刀片服务器,服务器农场,或任何其他数据处理系统或计算装置。由于计算机与网络的不断变化的现象,图13的计算机系统1300仅是一个范例而已。计算机系统1300有许多其他可能的组合,可能会比图13的计算机系统有更多或更少的组件。
本发明技术可用于具有寿期限制的存储器,包括相变存储器(PCM),NAND闪存,NOR闪存,磁性随机存取存储器(RAM)。本发明技术可用于文件系统包括EXT2/EXT3文件系统。虽然本规格说明使用节点做为数据对象的一个范例,本发明技术也可用于包含其他形式后设数据的数据对象。例如,本发明技术可用于FAT文件系统的文件分配表(File AllocationTable),以及NTFS文件系统的主要档案表(Master File Table,MFT)。
本发明技术可被实作在具有可存取数据对象能力像是一个文件系统的后设数据的计算机硬件,软件,或固件之内。这些计算机硬件,软件,或固件可包括MMU,CPU和可重复使用的硬件设计包括智能财产(IP)的核心。
虽然本发明以前述的较佳实施例和范例揭露如上,然其并非用以限定本发明,任何熟习相像技艺者,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,因此本发明的专利保护范围须视本说明书所附的权利要求范围所界定的为准。

Claims (16)

1.一种用以管理具有一实体地址空间的存储器使用率的方法,包括:
将数据对象的逻辑地址映像至该实体地址空间内的位置,其中该实体地址空间内的多个地址区段形成一活动窗口;
允许数据对象的写入,其中,该数据对象的逻辑地址映像到该活动窗口内的该多个地址区段内的位置;
在侦测到要写入的一数据对象的逻辑地址对应到该活动窗口以外的位置时,更新该映像以使该逻辑地址映像到该活动窗口中一被选定的位置;
维护表示该活动窗口内的该多个地址区段的使用率的存取数据;以及
增加或移除该活动窗口中的地址区段以配合该存取数据;
其中,所述的存取数据更包括对应于该活动窗口存储器取该多个地址区段的一个第二窗口计数值,以及一组区段计数值分别对应于一地址区段,其中,在侦测到要写入数据对象的逻辑地址对应到该活动窗口之内的一地址区段且当第二个窗口计数值到达一第二临界值以及对应到该地址区段的区段计数值到达一地址区段临界值时,移除该活动窗口内一个地址区段以及该地址区段在该活动窗口内的位置。
2.根据权利要求1所述的方法,更包括在该实体地址空间内移动该活动窗口。
3.根据权利要求1所述的方法,所述存取数据包括对应于该活动窗口存储器取该多个地址区段的一第一窗口计数值,其中,当第一窗口计数值到达一第一临界值时,增加一个地址区段至该活动窗口内,以及将所述的数据对象的逻辑地址映像至该活动窗口外的一被选定位置。
4.根据权利要求3所述的方法,其中,维护表示该活动窗口内的该多个地址区段的使用率的存取数据的步骤包括在侦测到写入数据对象的请求时,递增该第一窗口计数值,以及当该第一窗口计数值到达该第一临界值时,复位该第一窗口计数值。
5.根据权利要求1所述的方法,所述的该多个地址区段分别具有一组两个以上存储数据对象的容器,其中,在侦测到要写入一数据对象的逻辑地址对应到该活动窗口之内的位置时,如果包含该数据对象的一已知区段的区段计数值低于该区段临界值以及该第二窗口计数值到达该第二临界值,互换该已知地址区段中一个容器集合内两个容器之间的数据对象,如果该已知区段的区段计数值低于该区段临界值以及该第二窗口计数值到达该第二临界值。
6.根据权利要求1所述的方法,该方法包括在允许写入至选定位置时,将一个在被选定位置的数据对象移至该活动窗口之外的位置,并更新对应关系使得在被选定位置内数据对象的逻辑地址对应到该活动窗口之外的位置。
7.根据权利要求1所述的方法,该方法包括使用一个指针指出被选定的位置,并递增指针以指出下一个被选定的位置,以便用于有请求写入该活动窗口之外的位置。
8.根据权利要求1所述的方法,其中映像包括储存于包含该多个地址区段的存储器中的多个间接指标。
9.一种装置,包含:
一个包括一个实体地址空间的存储器;
一耦接于该存储器的存储器控制器,包括:映像数据对象的逻辑地址与实体地址空间内位置的逻辑;定义实体地址空间内多个地址区段为一活动窗口的逻辑;允许写入数据对象的逻辑,且该数据对象的逻辑地址映像到该活动窗口内该多个地址区段内的位置;维护表示该活动窗口内的该多个地址区段的使用率的存取数据的逻辑;以及增加或移除该活动窗口中的地址区段以配合该数据存取的逻辑;其中,在侦测到要写入的一数据对象的逻辑地址对应到该活动窗口以外的位置时,更新该映像以使逻辑地址映像到该活动窗口中一被选定的位置;所述的存取数据更包括对应于该活动窗口存储器取该多个地址区段的一个第二窗口计数值,以及一组区段计数值分别对应于一地址区段,其中,在侦测到要写入一数据对象的逻辑地址对应到该活动窗口之内的一地址区段且当第二个窗口计数值到达一第二临界值以及对应到该地址区段的区段计数值到达一地址区段临界值时,移除该活动窗口内一个地址区段以及该地址区段在该活动窗口内的位置。
10.根据权利要求9所述的装置,其中该存储器控制器更包括用以在实体地址空间内移动该活动窗口的逻辑。
11.根据权利要求9所述的装置,其中该存取数据包括该活动窗口内的该多个地址区段的一第一存取计数值,且存储器控制器包括用以在第一窗口计数值到达窗口的一个第一临界值以及数据对象的逻辑地址被对应到该活动窗口之外的一个被选定位置时,将一个地址区段加至该活动窗口之内的逻辑。
12.根据权利要求11所述的装置,其中该维护表示该活动窗口内的该多个地址区段的使用率的存取数据的逻辑包括,当侦测到一写入一数据对象的请求时,递增该第一窗口计数值的逻辑,以及如果该第一窗口计数值到达该第一临界值时,复位该第一窗口计数值的逻辑。
13.根据权利要求9所述的装置,所述的该多个地址区段分别具有一组两个以上存储数据对象的容器,其中,在侦测到要写入一数据对象的逻辑地址对应到该活动窗口之内的位置时,如果包含该数据对象的一已知区段的区段计数值低于该区段临界值以及该第二窗口计数值到达该第二临界值,互换该已知地址区段中一个容器集合内两个容器之间的数据对象,如果该已知区段的区段计数值低于该区段临界值以及该第二窗口计数值到达该第二临界值。
14.根据权利要求9所述的装置,其中存储器控制器包括用以在允许写入至选定位置时,移动所选定位置内的一个数据对象至该活动窗口外的位置,并更新对应关系使得在选定位置内数据对象的逻辑地址对应到该活动窗口外所选定的位置的逻辑。
15.根据权利要求9所述的装置,其中存储器控制器包括使用一个指标以指出被选定的位置的逻辑,以及递增指针的逻辑以指出下一个被选定的位置,以便用于写入该活动窗口之外的位置的请求。
16.根据权利要求9所述的装置,其中映像包括储存于包含该多个地址区段的存储器中的多个间接指标。
CN201310471821.9A 2013-01-03 2013-10-11 用以管理具有实体地址空间的存储器使用率的方法及装置 Active CN103914398B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201361748616P 2013-01-03 2013-01-03
US61/748,616 2013-01-03
US13/969,462 2013-08-16
US13/969,462 US9501396B2 (en) 2013-01-03 2013-08-16 Wear leveling with marching strategy

Publications (2)

Publication Number Publication Date
CN103914398A CN103914398A (zh) 2014-07-09
CN103914398B true CN103914398B (zh) 2017-04-12

Family

ID=51018665

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310471821.9A Active CN103914398B (zh) 2013-01-03 2013-10-11 用以管理具有实体地址空间的存储器使用率的方法及装置

Country Status (3)

Country Link
US (2) US9547586B2 (zh)
CN (1) CN103914398B (zh)
TW (1) TWI501081B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014110775A1 (en) * 2013-01-18 2014-07-24 Hewlett-Packard Development Company, L.P. Preventing a memory attack to a wireless access point
US9753649B2 (en) * 2014-10-27 2017-09-05 Sandisk Technologies Llc Tracking intermix of writes and un-map commands across power cycles
US9830087B2 (en) * 2014-11-13 2017-11-28 Micron Technology, Inc. Memory wear leveling
TWI553477B (zh) * 2015-06-12 2016-10-11 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置
KR102522154B1 (ko) * 2016-03-15 2023-04-17 에스케이하이닉스 주식회사 반도체 메모리 장치의 컨트롤러 및 이의 동작 방법
US10521126B2 (en) 2016-08-11 2019-12-31 Tuxera, Inc. Systems and methods for writing back data to a storage device
US10528479B2 (en) * 2017-06-02 2020-01-07 Huawei Technologies Co., Ltd. Global variable migration via virtual memory overlay technique for multi-version asynchronous dynamic software update
TWI656531B (zh) * 2018-04-11 2019-04-11 群聯電子股份有限公司 平均磨損方法、記憶體控制電路單元與記憶體儲存裝置
US10817430B2 (en) 2018-10-02 2020-10-27 Micron Technology, Inc. Access unit and management segment memory operations

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100507875C (zh) * 2006-03-03 2009-07-01 凌阳科技股份有限公司 非易失性存储器的平均抹除方法与装置

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6000006A (en) * 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
KR100297986B1 (ko) * 1998-03-13 2001-10-25 김영환 플래쉬 메모리 셀 어레이의 웨어 레벨링 시스템 및 웨어 레벨링 방법
US7620769B2 (en) * 2000-01-06 2009-11-17 Super Talent Electronics, Inc. Recycling partially-stale flash blocks using a sliding window for multi-level-cell (MLC) flash memory
US6775672B2 (en) * 2001-12-19 2004-08-10 Hewlett-Packard Development Company, L.P. Updating references to a migrated object in a partition-based distributed file system
US7441067B2 (en) * 2004-11-15 2008-10-21 Sandisk Corporation Cyclic flash memory wear leveling
US20070067575A1 (en) * 2005-09-20 2007-03-22 Morris John M Method of managing cache memory based on data temperature
US7831783B2 (en) * 2005-12-22 2010-11-09 Honeywell International Inc. Effective wear-leveling and concurrent reclamation method for embedded linear flash file systems
US8060718B2 (en) * 2006-06-20 2011-11-15 International Business Machines Updating a memory to maintain even wear
JP2008090876A (ja) * 2006-09-29 2008-04-17 Toshiba Corp 不揮発性半導体記憶装置
KR100881669B1 (ko) * 2006-12-18 2009-02-06 삼성전자주식회사 비휘발성 데이터 저장장치의 정적 데이터 영역 검출 방법,마모도 평준화 방법 및 데이터 유닛 병합 방법과 그 장치
US8683228B2 (en) * 2007-01-16 2014-03-25 Terry Lee Stokes System and method for WORM data storage
US7996599B2 (en) * 2007-04-25 2011-08-09 Apple Inc. Command resequencing in memory operations
US7599139B1 (en) * 2007-06-22 2009-10-06 Western Digital Technologies, Inc. Disk drive having a high performance access mode and a lower performance archive mode
TWI366828B (en) * 2007-09-27 2012-06-21 Phison Electronics Corp Wear leveling method and controller using the same
US8656083B2 (en) * 2007-12-21 2014-02-18 Spansion Llc Frequency distributed flash memory allocation based on free page tables
US20090254729A1 (en) * 2008-04-07 2009-10-08 Skymedi Corporation Method of wear leveling for a non-volatile memory
US20090276470A1 (en) * 2008-05-05 2009-11-05 Vijayarajan Rajesh Data Processing System And Method
US8275928B2 (en) * 2008-05-15 2012-09-25 Silicon Motion, Inc. Memory module and method for performing wear-leveling of memory module using remapping, link, and spare area tables
US8688894B2 (en) * 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage
CN102201259A (zh) * 2010-03-24 2011-09-28 建兴电子科技股份有限公司 非易失性存储器的平均抹写方法
GB2490991B (en) * 2011-05-19 2017-08-30 Ibm Wear leveling
US8819380B2 (en) * 2012-03-21 2014-08-26 International Business Machines Corporation Consideration of adjacent track interference and wide area adjacent track erasure during block allocation
US9251056B2 (en) * 2012-06-01 2016-02-02 Macronix International Co., Ltd. Bucket-based wear leveling method and apparatus
US20140122774A1 (en) * 2012-10-31 2014-05-01 Hong Kong Applied Science and Technology Research Institute Company Limited Method for Managing Data of Solid State Storage with Data Attributes
US9417999B2 (en) * 2012-12-17 2016-08-16 International Business Machines Corporation Write peformance in solid state storage by recognizing copy source to target operations and only storing updates instead of entire block
US20150143021A1 (en) * 2012-12-26 2015-05-21 Unisys Corporation Equalizing wear on storage devices through file system controls

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100507875C (zh) * 2006-03-03 2009-07-01 凌阳科技股份有限公司 非易失性存储器的平均抹除方法与装置

Also Published As

Publication number Publication date
TW201432446A (zh) 2014-08-16
US9501396B2 (en) 2016-11-22
US9547586B2 (en) 2017-01-17
CN103914398A (zh) 2014-07-09
TWI501081B (zh) 2015-09-21
US20140189276A1 (en) 2014-07-03
US20140189286A1 (en) 2014-07-03

Similar Documents

Publication Publication Date Title
CN103914398B (zh) 用以管理具有实体地址空间的存储器使用率的方法及装置
US11556465B2 (en) Memory management
US20170024326A1 (en) Method and Apparatus for Caching Flash Translation Layer (FTL) Table
CN104731717B (zh) 存储器装置及存储器管理方法
CN104487953B (zh) 用于层次型存储器系统的存储器管理
JP4738038B2 (ja) メモリカード
CN108139902A (zh) 用于提供混合模式来访问ssd驱动器的方法和装置
CN103455429B (zh) 对存储器进行群组式耗损平均的方法及设备
CN105095116A (zh) 缓存替换的方法、缓存控制器和处理器
CN100573477C (zh) 管理锁定的高速缓冲存储器中的组替换的系统和方法
CN107967124A (zh) 一种分布式持久性内存存储系统及方法
US20130091331A1 (en) Methods, apparatus, and articles of manufacture to manage memory
US9606746B2 (en) Shiftable memory supporting in-memory data structures
CN105550155B (zh) 用于多处理器系统的探听过滤器以及相关探听过滤方法
CN106708423A (zh) 多模存储管理系统
CN102985910A (zh) 对无用存储单元收集的gpu支持
CN108228471A (zh) 管理存储器装置中存储器单元的实体信息的方法及系统
CN110389709A (zh) 顺序流检测与数据预读
CN105988720B (zh) 数据存储装置和方法
CN107229580A (zh) 顺序流检测方法与装置
CN102880553A (zh) 一种基于mcu的片外flash文件系统的读写方法
CN109840048A (zh) 存储命令处理方法及其存储设备
CN108877862A (zh) 页条带的数据组织以及向页条带写入数据的方法与装置
CN104572499B (zh) 一种数据高速缓存的访问装置
CN105359116A (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