CN107665095B - 存储器空间管理的设备、方法及可读存储介质 - Google Patents
存储器空间管理的设备、方法及可读存储介质 Download PDFInfo
- Publication number
- CN107665095B CN107665095B CN201710595049.XA CN201710595049A CN107665095B CN 107665095 B CN107665095 B CN 107665095B CN 201710595049 A CN201710595049 A CN 201710595049A CN 107665095 B CN107665095 B CN 107665095B
- Authority
- CN
- China
- Prior art keywords
- compressed
- virtual
- virtual page
- table entry
- page
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及存储器空间管理,提供了包括用于存储器空间管理的设备。一些示例包括从主机接收标识虚拟页面地址的空间管理请求。该虚拟页面地址可以与压缩页面相关联,该压缩页面包括具有指示该压缩页面中的数据的虚拟页面数量的引用计数的压缩元数据。可以查找在虚拟页表中与该虚拟页面地址相关联的虚拟页表条目。该虚拟页表条目可以标识该压缩页面。在这样的示例中,该虚拟页表条目可以在并不更新该压缩页面中的引用计数的情况下被标记为无效。可以确定标识压缩页面的每个虚拟页表条目是否被标记为无效。基于确定标识压缩页面的每个虚拟页表条目无效,可以更新压缩页面的空闲空间位图条目以指示该压缩页面为空闲的。
Description
技术领域
本公开涉及存储器空间管理。
背景技术
可以给存储解决方案分配这样的任务:利用有限数量的处理功率、带宽和存储器快速且高效地存储并检索大量数据。其中虚拟存储器地址被映射至物理存储器地址的存储器虚拟化可以被用来提高存储器效率。通过管理存储器分配并释放未使用的存储器空间,可以改善存储器利用。
发明内容
根据本公开的一个实施例,提供一种包括指令的非瞬态机器可读存储介质,所述指令能够由用于存储器空间管理的设备的处理资源执行以用于以下操作:从主机接收标识虚拟页面地址的空间管理请求,其中该虚拟页面地址与压缩页面相关联,该压缩页面包括具有指示该压缩页面中的数据的虚拟页面数量的引用计数的压缩元数据;查找在虚拟页表中与该虚拟页面地址相关联的虚拟页表条目,其中该虚拟页表条目标识该压缩页面;在并不更新该引用计数的情况下将该虚拟页表条目标记为无效;确定标识压缩页面的每个虚拟页表条目是否被标记为无效;基于确定标识压缩页面的每个虚拟页表条目都是无效的,更新压缩页面的空闲空间位图条目以指示该压缩页面为空闲的。
根据本公开的另一个实施例,提供一种用于存储器空间管理的设备,包括:处理资源;空闲空间位图;虚拟页表;以及编码有能够由该处理资源执行的指令的机器可读存储介质,该机器可读存储介质包括用于以下操作的指令:从主机接收标识虚拟页面地址的空间管理请求,其中该虚拟页面地址与压缩页面相关联,该压缩页面包括具有指示压缩页面中的数据的虚拟页面数量的引用计数的压缩元数据;查找在虚拟页表中与虚拟页面地址相关联的虚拟页表条目,其中该虚拟页表条目标识该压缩页面;在并不更新该引用计数的情况下将该虚拟页表条目标记为无效;确定标识压缩页面的每个虚拟页表条目是否被标记为无效;基于确定标识压缩页面的每个虚拟页表条目都是无效的,更新空闲空间位图中压缩页面的空闲空间位图条目以指示该压缩页面为空闲的;以及基于确定与压缩页面相关联的每个虚拟页表条目不是无效的,使得空闲空间位图中的空闲空间位图条目保持不变。
根据本公开的另一个实施例,提供一种存储器空间管理的方法,包括:经由处理资源来确定是否已经接收到访问压缩页面的请求,其中与压缩页面相关联的空闲空间位图条目指示该压缩页面处于使用中,并且其中压缩页面包括具有指示压缩页面中的数据的虚拟页面数量的引用计数的压缩元数据;基于确定已经接收到访问请求以及基于该访问请求,有选择地减小引用计数;经由处理资源确定是否已经接收到空间管理请求,其中该空间管理请求标识与压缩页面相关联的虚拟页面地址;基于确定已经接收到空间管理请求,查找虚拟页表中与虚拟地址相关联的虚拟页表条目,其中该虚拟页表条目标识该压缩页面;在并不更新引用计数的情况下将该虚拟页表条目标记为无效;经由处理资源确定标识压缩页面的每个虚拟页表条目是否被标记为无效;基于确定标识压缩页面的每个虚拟页表条目都是无效的,更新空闲空间位图中压缩页面的空闲空间位图条目以指示该压缩页面为空闲的;以及基于确定与压缩页面相关联的每个虚拟页表条目都不是无效的,使得空闲空间位图中的空闲空间位图条目保持不变。
附图说明
以下详细描述参考附图,其中:
图1是包括指令的示例机器可读存储介质的框图,该指令用于接收标识与包括引用计数的压缩页面相关联的虚拟页面地址的空间管理请求,并且在并不更新该引用计数的情况下标记与虚拟页面地址相关联的虚拟页表条目;
图2是包括指令的示例机器可读存储介质的框图,该指令用于作为后台任务而确定标识压缩页面的每个虚拟页表条目是否被标记为无效,并且如果是,则更新空闲空间位图条目以指示该压缩页面是空闲的;
图3是用于确定每个虚拟页表条目是否无效的指令的框图;
图4是具有空闲空间位图、虚拟页表以及包括指令的机器可读存储介质的示例设备的框图,该指令用于确定标识压缩页面的每个虚拟页表条目是否无效,并且如果是,则更新空闲空间位图条目以指示该压缩页面为空闲的,而如果否,则保持空闲空间位图条目不变;
图5是具有空闲空间位图、虚拟页表以及包括指令的机器可读存储介质的示例设备的框图,该指令用于在并不更新引用计数的情况下将虚拟页面条目标记为无效之后向主机发送确认;
图6是一种用于释放存储器空间的示例方法的流程图,该方法包括确定是否已经接收到访问压缩页面的请求,并且如果是,则基于该访问请求,减小引用计数,并且确定是否已经接收到标识虚拟页面地址的空间管理请求,并且如果是,则在不更新引用计数的情况下将与虚拟页面地址相关联的虚拟页表条目标记为无效;
图7是用于确定每个虚拟页表条目是否无效的示例方法的流程图;以及
图8是具有虚拟页表条目的示例虚拟页表的框图,该虚拟页表条目具有压缩索引、页面地址和有效性字段。
具体实施方式
随着存储需求增加,可以依赖于存储器系统以利用有限数量的处理功率、带宽和存储器快速且高效地存储并检索大量数据。虚拟存储器系统可以采用存储器管理技术,该技术允许存储器针对过程或任务而表现为大的、连续的地址空间。那些地址(即,虚拟存储器地址)可以对应或不对应于连续的物理存储器地址。这样的技术可以涉及到表现为在请求时被分配的存储器。然而,实际上,物理存储器在有必要时(例如在数据被实际写入存储介质时)就被分配。
在一些示例中,虚拟存储器系统可以在数据被写入到存储器之前将其进行压缩从而使得存储器利用最大化。数据压缩可以涉及到经由压缩算法以较少数量的比特发送或存储某个数量的比特的数据。在一些示例中,数据压缩可以涉及使用数据的原始表示的较少比特来对数据进行编码。在其它示例中,数据压缩可以涉及通过消除冗余或不必要的比特来减小数据的大小。这样的系统可以涉及将压缩数据的若干虚拟页面存储在单个存储器页面中。
这样的存储器管理技术的使用可能涉及到在并未采用这种技术的存储器系统中所不存在的开销和/或数据结构。例如,虚拟存储器系统可将虚拟存储器地址转换为相对应的物理存储器地址。在一些示例中,由一个或多个页表条目所填充的页表可以使得虚拟存储器系统能够将虚拟存储器地址与物理存储器地址相关联。每个页表条目可以包括适当元数据,即提供有关其它数据的信息的数据。例如,元数据可以包括能够被用来生成物理存储器地址的物理页号和虚拟页号。此外,可以生成压缩元数据以提供有关存储在压缩页面中的虚拟页面的更多信息。例如,压缩元数据可以与压缩数据一起被存储在压缩页面中,它指示存储在该压缩页面中的数据的虚拟页面的数量、所使用的压缩算法,以及压缩页面内的虚拟页面的顺序或位置。在这样的示例中,压缩元数据可以与数据定位在一起,从而便于利用相对较少的存储器访问和页表或其它元数据查找来发现和检索数据。
为了高效的存储器管理和利用,这样的虚拟存储器系统也可以尝试回收或释放未使用的存储器空间。在一些涉及与压缩数据存储在一起的压缩元数据的虚拟存储器系统中,释放未使用数据的请求可能涉及到访问、高速缓存和解压缩每个压缩页面以更新压缩元数据和/或重写压缩数据本身。然而,这样做可能涉及到许多大规模的写入操作,而这些操作可能是计算密集、低效率且耗时的。在其它示例中,可以单独地存储压缩元数据,从而使得释放未使用存储器空间无需涉及到访问压缩页面。但是,如上所述,单独定位压缩元数据可能导致涉及更大数量的存储器访问和表查找的低效存储器操作。
本文所描述的示例可以通过在并不更新利用压缩页面存储的压缩元数据而且不访问或高速缓存压缩页面的情况下释放存储器空间而对计算机和存储器系统中的存储器管理和空间分配的领域加以改进。例如,这里所描述的一些示例可以响应于空间管理请求把标识压缩页面的虚拟页表条目标记为无效。压缩页面可以包括压缩元数据,该压缩元数据具有指示压缩页面内的数据的虚拟页面数量的引用计数。虚拟页表条目可以在不更新引用计数的情况下被标记为无效。(至少部分)基于确定标识压缩页面的每个虚拟页表条目是无效的,可以更新压缩页面的空闲空间位图条目以指示该压缩页面为空闲的。在本文所描述的一些示例中,可以响应于存储器访问有选择地更新压缩元数据,从而使得某些存储器操作涉及到更少的存储器访问和表查找。在本文所描述的示例中,被称为“基于”给定条件的确定、动作等可以单独基于该条件或者基于该条件以及其它(多个)条件。
在本文所描述的一些示例中,非瞬时机器可读存储介质可以包括指令,该指令能够由用于存储器空间管理的设备的处理资源所执行,以从主机接收标识虚拟页面地址的空间管理请求,其中该虚拟页面地址与压缩页面相关联,该压缩页面包括具有指示压缩页面中的数据的虚拟页面数量的引用计数的压缩元数据。该存储介质可以进一步包括指令,用于查找虚拟页表中与虚拟页面地址相关联的虚拟页表条目,并且在不更新引用计数的情况下将虚拟页表条目标记为无效。虚拟页表条目可以标识压缩页面。该存储介质还可以包括指令,用于确定标识压缩页面的每个虚拟页表条目是否被标记为无效。(至少部分)基于确定标识压缩页面的每个虚拟页表条目是无效的,可以更新压缩页面的空闲空间位图条目以指示该压缩页面为空闲的。
在本文所描述的一些这样的示例中,(至少部分)基于确定与压缩页面相关联的每个虚拟页表条目都不是无效的,压缩页面的空闲空间位图条目可以保持不变。在本文所描述的其它这样的示例中,在将虚拟页表条目标记为无效之后,可以向主机发送确认消息。在一些这样的示例中,用于确定标识压缩页面的每个虚拟页表条目是否被标记为无效的指令以及用于更新空闲空间位图条目的指令可以进一步包括作为后台任务执行的指令。
在本文所描述的一些示例中,一种用于存储器空间管理的设备可以包括处理资源、空闲空间位图、虚拟页表条目,以及编码有能够由该处理资源执行的指令的机器可读存储介质。该指令可以从主机接收标识虚拟页面地址的空间管理请求。该虚拟页面地址可以与压缩页面相关联,该压缩页面包括具有指示压缩页面中的数据的虚拟页面数量的引用计数的压缩元数据。该指令可以进一步查找虚拟页表中与虚拟页面地址相关联的虚拟页表条目,并且在不更新引用计数的情况下将该虚拟页表条目标记为无效。虚拟页表条目可以标识压缩页面。该指令还可以确定标识压缩页面的每个虚拟页表条目是否被标记为无效。(至少部分)基于确定标识压缩页面的每个虚拟页表条目是无效的,可以更新空闲空间位图中的压缩页面的空闲空间位图条目以指示该压缩页面为空闲。(至少部分) 基于确定标识压缩页面的每个虚拟页表条目都不是无效的,空闲空间位图中的空闲空间位图条目可以保持不变。
在本文所描述的其它示例中,一种存储器空间管理的方法可以涉及到经由处理资源来确定是否已经接收到访问压缩页面的请求,其中与压缩页面相关联的空闲空间位图条目指示该压缩页面处于使用中。压缩页面可以包括具有指示压缩页面中的数据的虚拟页面数量的引用计数的压缩元数据。 (至少部分)基于确定已经接收到访问请求以及(至少部分)基于该访问请求,可以有选择地减小引用计数。该方进一步还包括经由处理资源确定是否已经接收到空间管理请求,其中该空间管理请求标识与压缩页面相关联的虚拟页面地址。(至少部分)基于确定已经接收到空间管理请求,可以查找虚拟页表中与标识压缩页面的虚拟页面地址相关联的虚拟页表条目,并且在并不更新引用计数的情况下将该虚拟页表条目标记为无效。该方法还可以涉及到经由处理资源确定标识压缩页面的每个虚拟页表条目是否被标记为无效。(至少部分)基于确定与压缩页面相关联的每个虚拟页表条目都是无效的,可以更新空闲空间位图中的压缩页面的空闲空间位图条目以指示该压缩页面为空闲的。(至少部分)基于确定与压缩页面相关联的每个虚拟页表条目都不是无效的,空闲空间位图条目可以保持不变。
现在参考附图,图1是示例机器可读存储介质120的框图,该示例机器可读存储介质120包括用于从主机接收标识与压缩页面相关联的虚拟页面地址的空间管理请求102的指令,该压缩页面具有指示压缩页面中的数据的虚拟页面数量的引用计数。该指令能够由用于存储器空间管理的设备100 的处理资源110来执行。
设备100包括处理资源110,并且可以是适于执行以下所描述功能的任意联网或计算设备。如本文所使用的,设备可以是台式计算机、膝上(或笔记本)计算机、工作站、平板计算机、移动电话、智能设备、交换机、路由器、服务器、刀片机箱,或者包括处理资源的任意其它处理设备或装置。
如图1所绘,设备100还可以包括机器可读存储介质120,机器可读存储介质120包括(例如,编码有)指令122、124、126、128和130,上述指令能够由处理资源110执行从而实施本文关于图1所描述的功能。在一些示例中,存储介质120可以包括附加指令。在其它示例中,本文关于指令122、124、126、128、130所描述的功能以及本文关于存储介质120所描述的任何附加指令都可以至少部分以电子电路(例如,经由包括用于实施本文所描述功能的硬件和编程程序的任意组合的组件)来实施。在一些示例中,设备100可以是用于存储平台的控制器节点,或者可以位于用于存储平台的控制器节点之内。在一些示例(图1未示出)中,存储介质120可以位于设备100的外部。在这样的示例中,设备100可以经由计算机网络(例如,互联网、局域网(LAN)、广域网 (WAN)等)与存储介质120通信。
如本文所使用的,机器可读存储介质可以是用于包含或存储诸如可执行指令、数据等的信息的任意电子、磁性、光学或其它物理存储装置。例如,本文所描述的任意机器可读存储介质可以是随机访问存储器(RAM)、易失性存储器、非易失性存储器、闪存、存储驱动器(例如,硬盘驱动器)、固态驱动器、任意类型的存储盘(例如,紧致盘、DVD等)等或者是它们的组合中的任意项。另外,本文所描述的任何机器可读存储介质都可以是非瞬态的。
在本文所描述的示例中,处理资源可以包括例如包括在单个设备中或者跨多个设备分布的一个处理器或多个处理器。如本文所使用的,处理器可以是中央处理单元(CPU)、基于半导体的微处理器、图形处理单元(GPU),被配置为检索和执行指令的现场可编程门阵列(FPGA),适于检索和执行存储在机器可读存储介质上的指令的其它电子电路或者它们的组合中的至少一者。处理资源110可以获取、解码和执行存储在存储介质120上的指令,从而执行以上关于指令122、124、 126、128和130所描述的功能。在其它示例中,存储介质120的任何指令的功能都可以以电子电路的形式,以在机器可读存储介质上编码的可执行指令的形式,或者它们的组合来实施。在图1的示例中,存储介质120可以由一个机器可读存储介质或多个机器可读存储介质来实施。
在图1的示例中,指令122可以从主机接收标识虚拟页面地址的空间管理请求102。如本文所描述的空间管理请求可以是指用来通过释放未使用存储器来管理存储器空间的消息或命令。在一些示例中,空间管理请求102可以包括将具体存储器块解除映射(例如,移除从虚拟页面地址到物理页面地址的指针从而将物理页面取消分配)的解除映射请求。在其它示例中,空间管理请求102可以包括用于向具体存储器块全部写入零的零写入请求或相同零写入请求。空间管理请求102可以从主机接收。如本文所描述的主机可以是指运行允许用户访问计算机或设备的操作系统的计算机或其它设备。在一些示例中,主机可以经由网络连接到存储平台或其它存储器系统以存储和检索数据。在一些这样的示例中,主机还可以经由计算机网络(例如,互联网、LAN、WAN等)连接到其它计算机。在其它示例中,主机可以是大型计算机或服务器。
在本文所描述的示例中,虚拟页面地址可以是指存储器页面的虚拟存储器地址。在一些示例中,虚拟地址可以是能够从其生成虚拟页面地址的虚拟页号。在这里所描述的示例中,页面可以是指具体数量的数据。例如,页面可以是N个字节的序列,其中N是2的幂。在涉及虚拟存储器的示例中,页面可以是4千字节(KB)到64KB或更大。
虚拟页面地址可以与压缩页面相关联。在本文的示例中,压缩页面是指包括压缩数据和压缩元数据的页面。在一些示例中,压缩数据可以包括数据的若干虚拟页面。在一个示例中,压缩页面可以包括多达八个虚拟页面。在其它示例中,压缩页面可以包括甚至更多的虚拟页面,这取决于页面的大小、所实现的压缩量、可用存储器空间以及其它这样的相关变量。如本文所使用的压缩元数据可以是指压缩页面内提供有关压缩页面中的压缩数据的信息的数据。在一些示例中,压缩元数据可以特别包括引用计数、压缩页面偏移量和虚拟页面地址。在一些这样的示例中,引用计数、压缩页面偏移量和虚拟页面地址中的每一个可以表示由提供有关压缩页面以及压缩页面内的压缩数据的信息的一个或多个比特所组成的单独字段。
在本文所描述的示例中,引用计数可以是指压缩页面内的虚拟页面的数量。例如,对于包括两个虚拟页面的压缩页面,引用计数可以包括数值“2”,或者可以以其它方式指示该压缩页面包括两个虚拟页面。类似地,对于包括8个虚拟页面的压缩页面,引用计数可以包括数值“8,”或者可以以其它方式指示该压缩页面包括八个虚拟页面。在一些示例中,压缩页面偏移量可以是指指定与压缩页面中的每个虚拟页面相关联的数据位于该压缩页面内的何处的偏移量。
(至少部分)基于空间管理请求102中所标识的虚拟页面地址,指令124可以查找虚拟页面表中与虚拟页面地址相关联的虚拟页面表条目。如本文的示例中所使用的,虚拟页表可以是指包括一个或多个虚拟页表条目的表或其它适当数据结构。在一些示例中,虚拟页表可以包括若干级别。例如,多级虚拟页表可以包括第一级虚拟页表和第二级虚拟页表,其中的每一个都被使用搜索项的不同比特或部分(诸如虚拟页地址或上一级虚拟页表)搜索或者编制索引。在其它示例中,多级虚拟页表可以视情况包括更多级别。
如本文的示例中所使用的,虚拟页表条目可以是指有助于将虚拟存储器地址与物理存储器地址相关联的虚拟页表的行、线、或者其它适当部分。虚拟页表条目内的数据或信息可以被称为元数据,并且可以被存储在虚拟页表条目内的字段中。如本文所使用的,元数据可以是指提供有关其它数据的信息的数据。经由虚拟页面地址,可以搜索虚拟页表并且查找虚拟页表条目。虚拟页面地址可以允许高效地查找或搜索虚拟页面的相对应虚拟页表条目。在一些示例中,每个虚拟页表条目可以表示数据的虚拟页面。
图8描绘了包括若干虚拟页表条目810的示例虚拟页表800。如所描绘的,每个虚拟页表条目包括压缩索引字段、页面地址字段和有效性字段。压缩索引字段可以是指包含压缩页面内的数据的特定虚拟页面。例如,压缩索引“0”可以指示与该虚拟页面相关联的数据被定位为压缩页面内的第一虚拟页面。类似地,压缩索引“1”可以指示该数据被定位为压缩页面内的第二虚拟页面。在这样的示例中,第一虚拟页面可能被其它数据所占用。页面地址字段可以是指数据的虚拟页面所在的物理页面,即压缩页面的地址。在一些示例中,虚拟页表800可以包括图8中并未示出的附加元数据。例如,虚拟页表800可以包括第二有效位以指示该页面是否处于主存储器中。页面不在主存储器中的指示可以对应于页面错误,并且可能涉及到额外的存储器访问以确定物理页面的页面地址。
返回图1所示,指令126可以将虚拟页表条目标记为无效。在一些示例中,将虚拟页表条目标记为无效可能涉及到设置或重置虚拟页表条目中的有效性字段。在其它示例中,将虚拟页表条目标记为无效可能涉及到将虚拟页表条目的内容删除或归零。指令126可以在不更新或改变压缩页面的压缩元数据内的引用计数的情况下将虚拟页表条目标记为无效。在这样的示例中,压缩页面的引用计数可能不准确。然而,在不更新引用计数的情况下将虚拟页表条目标记为无效就能够在无需涉及到压缩数据的解压缩的资源密集型存储器访问的情况下释放未使用的存储器空间。
在图1的示例中,指令128可以确定标识压缩页面的每个虚拟页表条目是否被标记为无效在一些示例中,可以通过查找与虚拟页面地址相关联的虚拟页表条目来识别压缩页面的页面地址。 (至少部分)基于压缩页面的页面地址,指令128可以针对标识压缩页面的任意其它虚拟页表条目而搜索虚拟页表并且确定虚拟页面表条目的状态。在一些示例中,每个虚拟页表条目可以包括指示该虚拟页表条目是有效还是无效的有效性字段。
(至少部分)基于确定标识压缩页面的每个虚拟页表条目被标记为无效,指令130可以更新空闲空间位图中的压缩页面的空闲空间位图条目以指示压缩页面为空闲的。如本文的示例中所使用的,空闲空间位图可以指代包括一个或多个空闲空间位图条目的表或其它适当数据结构。如本文所使用的,空闲空间位图条目可以指代空闲空间位图表的行、线或其它适当部分,它指示压缩页面是空闲的还是不是空闲的。每个空闲空间位图条目可以与压缩页面相关联。可以经由压缩页面搜索空闲空间位图并且查找空闲空间位图条目。在一些这样的示例中,页面地址可以允许高效地查找或搜索压缩页面的相对应空闲空间位图条目。
在一些示例中,空闲空间位图条目可以包括指示压缩页面是否空闲的单个比特。例如,“1”可以指示压缩页面正在使用,而“0”则可以指示压缩页面为空闲的。在这样的示例中,(至少部分)基于确定标识压缩页面的每个虚拟页表条目都是无效的而将空闲空间位图条目更新为“0”。在其它示例中,空闲空间位图可以包括由提供有关压缩页面的信息(包括压缩页面正在被使用还是为空闲的) 的一个或多个比特所组成的单独字段。(至少部分)基于确定标识压缩页面的每个虚拟页表条目被标记为无效,该字段可以被更新以指示压缩页面为空闲的。
在一些示例中,指令122、124、126、128和130可以是安装包的一部分,上述安装包在被安装时可以由处理资源110所执行从而实施上述功能。在这样的示例中,存储介质120可以是诸如 CD、DVD或闪速驱动器之类的便携式介质或者是能够从其下载和安装该安装包的服务器所维护的存储器。在其它示例中,指令122、124、126、128和130可以是已经安装在包括处理资源110的设备100上的应用的一部分、多个应用或(多个)组件。在这样的示例中,存储介质120可以包括存储器,诸如硬盘驱动器、固态驱动器等。在一些示例中,本文中关于图1所描述的功能可以结合本文关于图2-8中任一个所描述的功能来提供。
本文关于图2描述了另外的示例,图2是包括指令的示例机器可读存储介质220的框图,该指令用于接收标识虚拟页面地址的空间管理请求,并且(至少部分)基于确定与压缩页面相关联的每个虚拟页表条目都不是无效的而特别保持压缩页面的空闲空间位图条目不变。图2的示例包括用于存储器空间管理的设备200,处理资源210,以及包括指令222、224、226、228和230(如上文关于图1的指令122、124、126、128和130所描述的那样)的机器可读存储介质220。图2的示例进一步包括机器可读存储介质220,机器可读存储介质220包括能够由处理资源210执行以实施本文关于图2所描述的功能的指令227、229、232、234和236。
在一些示例中,存储介质220可以包括附加指令。在其它示例中,本文关于指令222、224、 226、227、228、229、230、232、234和236描述的功能以及本文关于存储介质220所描述的任何附加指令都可以至少部分以电子电路(例如,经由包括用于实施本文所描述功能的硬件和编程的任意组合的组件)来实施。在一些示例中,设备200可以是用于存储平台的控制器节点,或者可以位于用于存储平台的控制器节点之内。在一些示例(图2未示出)中,存储介质220可以位于设备 200的外部。在这样的示例中,设备200可以经由计算机网络(例如,互联网、局域网(LAN)、广域网(WAN)等)与存储介质120通信。
处理资源210可以获取、解码和执行存储在存储介质220上的指令,从而执行以上关于指令 222、224、226、228、230、232、234、236和238所描述的功能。在其它示例中,存储介质220的任何指令的功能都可以以电子电路的形式,以在机器可读存储介质上编码的可执行指令的形式,或者它们的组合来实施。在图2的示例中,存储介质220可以由一个机器可读存储介质或多个机器可读存储介质来实施。
如以上关于图1的指令122所描述的,指令222可以接收标识与压缩页面相关联的虚拟页面地址的空间管理请求202。该压缩页面可以包括具有指示该压缩页面中的数据的虚拟页面数量的引用计数的压缩元数据。如以上关于图1的指令124所描述的,指令224可以查找虚拟页面表中与虚拟页面地址相关联的虚拟页面表条目。如以上关于图1的指令126所描述的,指令226可以在不更新引用计数的情况下将虚拟页表条目标记为无效。
如图2所绘,指令227可以在将虚拟页表条目标记为无效之后向主机发送确认消息。在一些示例中,该确认消息可以指示空间管理请求的完成。在其它示例中,向主机发送确认消息可以触发某些指令要作为后台任务在后台执行。
如上文关于图1的指令128所描述的,指令228可以确定标识压缩页面的每个虚拟页表条目是否被标记为无效。在一些示例中,图2的指令228可以进一步包括诸如图3的示例中所描绘的那些指令。如图3所示,指令328可以经由指令340、342、344、346和348来确定标识压缩页面的每个虚拟页表条目是否被标记为无效。指令340可以确定另一个虚拟页表条目是否标识该压缩页面。在一些示例中,指令340可以针对标识压缩页面的另一个虚拟页表条目而查找或搜索虚拟页表。在这样的示例中,指令340可以使用压缩页面的页面地址来搜索虚拟页表。在其它示例中,指令340可以使用压缩页面的另一个标识符来搜索虚拟页表。
至少部分)基于确定另一个虚拟页表条目并不标识压缩页面,指令342确定标识压缩页面的每个虚拟页表条目被标记为无效。指令342可以触发压缩页面的空闲空间位图条目的更新,从而使得空闲空间位图条目指示压缩页面为空闲的。(至少部分)基于确定另一个虚拟页表条目确实标识压缩页面,指令344可以确定其它虚拟页表条目的状态。如本文所使用的,“其它”可以被用来指代“另一个”。如上文关于图8所讨论的,每个虚拟页表条目可以包括指示该虚拟页表条目是有效(并且在使用中)还是无效(并且是空闲的)的有效性字段。在一些示例中,指令344可以评估其他虚拟页表条目的有效性字段来确定其状态。
(至少部分)基于确定其他虚拟页表条目是有效的,指令346确定标识压缩页面的每个虚拟页表条目并未被标记为无效。响应于指令346,压缩页面的空闲空间条目可以保持不变,从而使得它指示压缩页面在使用中。(至少部分)基于确定其他虚拟页表条目是无效的,指令348可以返回至用于确定另一个虚拟页表条目是否标识压缩页面的指令340。在一些示例中,图3的指令可以进行迭代,直至确定没有另外的虚拟页表条目标识压缩页面为止,或者直至确定标识压缩页面的虚拟页表条目被标记为有效为止。
返回图2,(至少部分)基于确定每个虚拟页表条目无效,如图1的指令130,指令230更新压缩页面的空闲空间位图条目以指示该压缩页面为空闲的。在一些示例中,(至少部分)基于确定与压缩页面相关联的每个虚拟页表条目都不是无效的,图2的指令232可以使得压缩页面的空闲空间位图条目保持不变。因此,空闲空间位图条目将指示该压缩页面在使用中。
在一些示例中,指令228、230和232可以进一步包括作为后台任务执行的指令229。如本文的示例中所使用的,后台任务可以是指在没有用户干预的情况下在后台运行或执行的任务。在一些示例中,后台任务定期执行。在其它示例中,后台任务在CPU或控制器使用(至少部分)基于任意数量的变量—包括CPU或控制器利用、排队任务、排队任务的优先级等—而允许时得以被执行。在又其它示例中,后台任务可以在后台持续运行。
如图2所示,指令234可以接收访问压缩页面的请求,其中压缩页面的空闲空间位图条目指示其在使用中。在一些示例中,访问压缩页面的请求可以包括写入操作、读取操作、读取-修改-写入操作等。指令234可以从用户、作为较大事务或操作的一部分的进程或任务、另一个控制器节点等接收访问压缩页面的请求。
(至少部分)基于访问压缩页面的请求,指令236可以有选择地减小存储在压缩页面的压缩元数据中的引用计数。在一个示例中,指令232可以接收读取-修改-写入请求,以修改存储在压缩页面的虚拟页面中的数据并且重新写入经修改的数据。如果页面匹配过程确定经修改的数据将适配原始压缩页面,则经修改的数据可以被写入而引用计数可以保持不变。然而,如果页面适配过程确定经修改的数据并不适配原始压缩页面,则经修改的数据可以在别处被写入,并且压缩页面的引用计数可以减小以指示该压缩页面存储少一个数据虚拟页面。在另一示例中,指令232可以接收用于读取存储在压缩页面中的数据的读取请求。在这样的示例中,压缩页面的引用计数可以保持不变。利用压缩页面存储压缩元数据并且在访问压缩页面时有选择地更新压缩元数据,可以允许更少的存储器访问和表查找,这使得资源利用最小化并且提高了存储器效率。
在一些示例中,指令222、224、226、227、228、229、230、232、234和236可以是安装包的一部分,上述安装包在被安装时可以由处理资源210所执行从而实施上述功能。在其它示例中,该安装包可以进一步包括指令340、342、344、346和348,它们在被安装时可以由处理资源210所执行从而实施上述功能。在这样的示例中,存储介质220可以是诸如CD、DVD或闪速驱动器之类的便携式介质,或者是能够从其下载和安装该安装包的服务器所维护的存储器。在其它示例中,指令 222、224、226、227、228、229、230、232、234、236和/或指令340、342、344、346和348可以是已经安装在包括处理资源210的设备200上的应用的一部分、多个应用或(多个)组件。在这样的示例中,存储介质220可以包括存储器,诸如硬盘驱动器、固态驱动器等。在一些示例中,本文中关于图2和3所描述的功能可以结合本文关于图1和4-8中任一个所描述的功能来提供。
图4是具有空闲空间位图460和虚拟页表470的用于存储器空间管理的示例设备400的框图。如以上关于图1和2所描述的,空闲空间位图460可以是指包括一个或多个空闲空间位图条目的表或其它适当数据结构。每个空闲空间位图条目指示压缩页面是空闲的还是不是空闲的。如上文关于图 1、2和8所描述的,虚拟页表470可以是指包括一个或多个虚拟页表条目的表或其它适当数据结构。虚拟页表条目可以有助于将虚拟存储器地址与物理存储器地址相关联。在一些示例中,虚拟页表470可以类似于图8的虚拟页表800进行组织。
设备400还包括处理资源410,并且可以是适于执行下文所描述功能的任何联网或计算设备。如图4所绘,设备400还可以包括机器可读存储介质420,机器可读存储介质420包括(例如,编码有)能够由处理资源410执行以实施本文关于图4所描述功能的指令422、424、426、428、430和 432。在一些示例中,存储介质420可以包括附加指令。在其它示例中,本文关于指令422、424、 426、428、430、432所描述的功能以及本文关于存储介质420所描述的任何附加指令都可以至少部分以电子电路(例如,经由包括用于实施本文所描述功能的硬件和编程的任意组合的组件)来实施。在一些示例中,设备400可以是用于存储平台的控制器节点,或者可以位于用于存储平台的控制器节点之内。
处理资源410可以获取、解码和执行存储在存储介质420上的指令,从而执行以上关于指令 422、424、426、428、430和432所描述的功能。在其它示例中,存储介质420的任何指令的功能都可以以电子电路的形式、以在机器可读存储介质上编码的可执行指令的形式、或者它们的组合来实施。在图4的示例中,存储介质420可以由一个机器可读存储介质或多个机器可读存储介质来实施。
如以上关于图1中的指令122所描述的,指令422可以从主机480接收标识与压缩页面相关联的虚拟页面地址的空间管理请求402。压缩页面可以包括具有指示该压缩页面中的数据的虚拟页面数量的引用计数的压缩元数据。主机480可以是指运行允许用户访问计算机或设备的操作系统的计算机或其它设备。
如以上关于图1中的指令124所描述的,指令424可以查找在虚拟页表470中与该虚拟页面地址相关联的虚拟页表条目。虚拟页表470的虚拟页表条目可以标识该压缩页面。如以上关于图1中的指令126所描述的,指令426可以在并不更新引用计数的情况下将该虚拟页表条目标记为无效。如以上关于图1中的指令128所描述的,指令428可以确定标识压缩页面的每个虚拟页表条目是否被标记为无效。在一些示例中,指令428可以进一步包括图3的指令340、342、344、346和348。
如以上关于图1中的指令130所描述的,(至少部分)基于确定标识压缩页面的每个虚拟页表条目被标记为无效,指令430可以更新空闲空间位图460中的压缩页面的空闲空间位图条目以指示压缩页面为空闲的。在一些示例中,更新空闲空间位图条目可能涉及到设置或重置该比特。例如,将空闲空间位图条目设置为“1”可以指示压缩页面在使用中,而将空闲空间位图条目重置为“0”则可以指示压缩页面为空闲的。如以上关于图2的指令232所描述的,(至少部分)基于确定与压缩页面相关联的每个虚拟页表条目都不是无效的,指令432可以保留压缩页面的空闲空间位图条目不变。因此,空闲空间位图条目将指示该压缩页面在使用中。
在一些示例中,指令422、424、426、428、430和432可以是安装包的一部分,上述安装包在被安装时可以由设备400的处理资源410所执行从而实施上述功能。在这样的示例中,存储介质420 可以是诸如CD、DVD或闪速驱动器之类的便携式介质或者是能够从其下载和安装该安装包的服务器所维护的存储器。在其它示例中,指令422、424、426、428、430和432可以是已经安装在包括处理资源410的设备400上的应用的一部分、多个应用或(多个)组件。在这样的示例中,存储介质420可以包括存储器,诸如硬盘驱动器、固态驱动器等。在一些示例中,本文中关于图4所描述的功能可以结合本文关于图1-3和4-8中任一个所描述的功能来提供。
本文关于图5对另外的示例进行描述。图5是具有空闲空间位图560和虚拟页表570的用于存储器空间管理的示例设备500的框图。如以上关于图1和2所描述的,空闲空间位图560可以是指包括一个或多个空闲空间位图条目的表或其它适当数据结构。每个空闲空间位图条目指示压缩页面是空闲的还是不是空闲的。如上文关于图1、2和8所描述的,虚拟页表570可以是指包括一个或多个虚拟页表条目的表或其它适当数据结构。虚拟页表条目可以有助于将虚拟存储器地址与物理存储器地址相关联。在一些示例中,虚拟页表570可以类似于图8的虚拟页表800进行组织。
设备500还包括处理资源510,并且可以是适于执行下文所描述功能的任何联网或计算设备。如图5所绘,设备500还可以包括机器可读存储介质520,机器可读存储介质520包括(例如,编码有)能够由处理资源510执行以实施本文关于图5所描述功能的指令522、524、526、527、528、 529、530、532、534和536。在一些示例中,存储介质520可以包括附加指令。在其它示例中,本文关于指令522、524、526、527、528、529、530、532、534、536所描述的功能以及本文关于存储介质520所描述的任何附加指令都可以至少部分以电子电路(例如,经由包括用于实施本文所描述功能的硬件和编程的任意组合的组件)来实施。在一些示例中,设备500可以是用于存储平台的控制器节点,或者可以位于用于存储平台的控制器节点之内。
处理资源510可以获取、解码和执行存储在存储介质520上的指令,从而执行以上关于指令 522、524、526、527、528、529、530、532、534和536所描述的功能。在其它示例中,存储介质 520的任何指令的功能都可以以电子电路的形式,以在机器可读存储介质上编码的可执行指令的形式,或者它们的组合来实施。在图5的示例中,存储介质520可以由一个机器可读存储介质或多个机器可读存储介质来实施。
如以上关于图1中的指令122所描述的,指令522可以从主机580接收标识与压缩页面相关联的虚拟页面地址的空间管理请求502。压缩页面包括具有指示该压缩页面中的数据的虚拟页面数量的引用计数的压缩元数据。主机580可以是指运行允许用户访问计算机或设备的操作系统的计算机或其它设备。
如以上关于图1中的指令124所描述的,指令524可以查找在虚拟页表570中与该虚拟页面地址相关联的虚拟页表条目。虚拟页表570的虚拟页表条目可以标识该压缩页面。如以上关于图1中的指令126所描述的,指令526可以在并不更新引用计数的情况下将该虚拟页表条目标记为无效。如以上关于图2中的指令227所描述的,指令527可以在将虚拟页表条目标记为无效之后向主机580发送确认消息。在一些示例中,向主机580发送确认消息可以触发某些指令要作为后台任务在后台执行。
如以上关于图1中的指令128所描述的,指令528可以确定标识压缩页面的每个虚拟页表条目是否被标记为无效。在一些示例中,指令528可以进一步包括图3的指令340、342、344、346和 348。如以上关于图1中的指令130所描述的,(至少部分)基于确定标识压缩页面的每个虚拟页表条目被标记为无效,指令530可以更新空闲空间位图560中的压缩页面的空闲空间位图条目以指示压缩页面为空闲的。在一些示例中,更新空闲空间位图条目可能涉及到设置或重置该比特。例如,将空闲空间位图条目设置为“1”可以指示压缩页面在使用中,而将空闲空间位图条目重置为“0”则可以指示压缩页面为空闲的。如以上关于图2的指令232所描述的,(至少部分)基于确定与压缩页面相关联的每个虚拟页表条目都不是无效的,指令532可以保留压缩页面的空闲空间位图条目不变。因此,空闲空间位图条目将指示该压缩页面在使用中。在一些示例中,如以上关于图2中的指令 229所描述的,指令528、530和532可以进一步包括要作为后台任务执行的指令529。
如以上关于图2中的指令234所描述的,指令534可以接收访问压缩页面的请求,其中压缩页面的空闲空间位图条目指示其在使用中。在一些示例中,访问压缩页面的请求可以包括写入操作、读取操作、读取-修改-写入操作等。如以上关于图2中的指令236所描述的,(至少部分)基于访问压缩页面的请求,指令536可以有选择地减小存储在压缩页面的压缩元数据中的引用计数。
在一些示例中,指令522、524、526、527、528、529、530、532、534和536可以是安装包的一部分,上述安装包在被安装时可以由设备500的处理资源510所执行从而实施上述功能。在这样的示例中,存储介质520可以是诸如CD、DVD或闪速驱动器之类的便携式介质,或者是能够从其下载和安装该安装包的服务器所维护的存储器。在其它示例中,指令522、524、526、527、528、 529、530、532、534和536可以是已经安装在包括处理资源510的设备500上的应用的一部分、多个应用或(多个)组件。在这样的示例中,存储介质420可以包括存储器,诸如硬盘驱动器、固态驱动器等。在一些示例中,本文中关于图5所描述的功能可以结合本文关于图1-4和6-8中任一个所描述的功能来提供。
图6是用于存储器空间管理的示例方法600的流程图,包括确定是否已经接收到访问压缩页面的请求,并且如果是,则(至少部分)基于该访问的请求,减小引用计数,并且确定是否已经接收到标识虚拟页面地址的空间管理请求,并且如果是,则在不更新引用计数的情况下将与虚拟页面地址相关联的虚拟页表条目标记为无效。虽然下文参考图2的设备200对方法600的执行进行描述,但是用于执行方法600的其它适当系统也能够被采用(例如,图5的设备500)。此外,方法600 的实施方式并不局限于这样的示例。
在图6的示例中,方法600可以是设备200的方法。在方法600的605,可以经由诸如设备200的处理资源210的处理资源来确定是否已经接收到访问压缩页面的请求。如关于图2所讨论的,与压缩页面相关联的空闲空间位图条目可以指示该压缩页面处于使用中,并且压缩页面可以包括具有指示压缩页面中的数据的虚拟页面数量的引用计数的压缩元数据。在一些示例中,确定是否已经接收到请求可以涉及到由处理资源210监视到来的请求、消息和命令。在一些这样的示例中,在605,如以上关于图2的指令232所描述的,指令232可以在设备200接收访问压缩页面的请求。在一些示例中,(至少部分)基于确定尚未接收到访问压缩页面的请求,方法600可以进行至615。
(至少部分)基于确定已经接收到访问压缩页面的请求,方法600可以进行至610。在610, (至少部分)基于该访问压缩页面的请求,如以上关于图2的指令236所描述的,指令236可以有选择地减小存储在压缩页面的压缩元数据中的引用计数。例如,读取-修改-写入操作可以涉及到减小引用计数。另一方面,读取操作则将不会涉及到减小引用计数。
在方法600的615,经由设备200的处理资源210确定是否已经接收到空间管理请求。该空间管理请求标识与压缩页面相关联的虚拟地址。在一些示例中,确定是否已经接收到请求涉及到由处理资源210监视到来的请求、消息和命令。在一些这样的示例中,在615,如以上关于图2的指令222所描述的,指令222可以接收空间管理请求202。在一些示例中,(至少部分)基于确定尚未接收到空间管理请求,方法600可以再次进行至605。在一些这样的示例中,610可以进行迭代直至已经接收到空间管理请求为止。
(至少部分)基于确定已经接收到空间管理请求,在620,如以上关于图2的指令224所描述的,指令224可以查找虚拟页表中与该虚拟页表中的虚拟地址相关联的虚拟页表条目。该虚拟页表条目可以标识压缩页面。在一些示例中,该虚拟页表条目可以按照压缩页面的页面地址来标识压缩页面。在625,如以上关于图2的指令226所描述的,指令226可以在不更新引用计数的情况下将该虚拟页表条目标记为无效。
在630,如以上关于图2的指令228所描述的,指令228可以经由处理资源210确定标识压缩页面的每个虚拟页表条目是否被标记为无效。在一些示例中,步骤630可以关于图7的方法730进行描述。方法730包括步骤731、732、733和734。在步骤731,如以上关于图3的指令340所描述的,指令340可以确定另一个虚拟页表条目是否标识压缩页面。(至少部分)基于确定没有另外的标识压缩页面的虚拟页表条目,方法730可以进行至732。在732,如以上关于图3的指令342所描述的,指令342确定标识压缩页面的每个虚拟页表条目是否被标记为无效。(至少部分)基于确定另一个虚拟页表条目标识压缩页面,方法730可以进行至733。在733,如以上关于图3的指令344所描述的,指令344确定其它虚拟页表条目的状态。
(至少部分)基于确定其它虚拟页表条目为有效,方法730可以进行至734。在734,如以上关于图3的指令346所描述的,指令346确定标识压缩页面的每个虚拟页表条目并未被标记为无效。 (至少部分)基于确定其它虚拟页表条目是无效的,方法730可以进行至731以确定另一个虚拟页表条目是否标识压缩页面,如以上关于图3的指令340所描述的。
返回图6,(至少部分)基于确定每个虚拟页表条目是无效的,方法600可以进行至635。在 635,如以上关于图2的指令230所描述的,指令230可以更新压缩页面的空闲空间位图条目以指示该压缩页面为空闲的。(至少部分)基于确定每个虚拟页表条目都不是无效的,方法600可以进行至640。在640,如以上关于图2的指令232所描述的,指令232可以保持压缩页面的空闲空间位图条目不变。
虽然图6的流程图示出了执行某些功能的具体顺序,但是图6并不局限于该顺序。同样,虽然图7的流程图示出了执行某些功能的具体顺序,但是图7并不局限于该顺序。例如,在流程图中被连续示出的功能可以以不同顺序来执行,可以同时或部分同时地执行,或者按它们的组合执行。在一些示例中,本文关于图6和7所描述的功能可以结合本文关于图1-5和8中任一个所描述的功能来提供。
Claims (15)
1.一种包括指令的非瞬态机器可读存储介质,所述指令能够由用于存储器空间管理的设备的处理资源执行以用于以下操作:
从主机接收标识虚拟页面地址的空间管理请求,其中该虚拟页面地址与压缩页面相关联,该压缩页面包括具有指示该压缩页面中的数据的虚拟页面数量的引用计数的压缩元数据;
查找在虚拟页表中与该虚拟页面地址相关联的虚拟页表条目,其中该虚拟页表条目标识该压缩页面;
在并不更新该引用计数的情况下,将该虚拟页表条目标记为无效;
确定标识压缩页面的每个虚拟页表条目是否被标记为无效;
基于确定标识压缩页面的每个虚拟页表条目都是无效的,更新压缩页面的空闲空间位图条目以指示该压缩页面为空闲的。
2.根据权利要求1所述的非瞬态机器可读存储介质,进一步包括能够由该设备的处理资源执行以用于以下操作的指令:
基于确定与压缩页面相关联的每个虚拟页表条目都不是无效的,保持压缩页面的空闲空间位图条目不变。
3.根据权利要求2所述的非瞬态机器可读存储介质,其中用于确定标识压缩页面的每个虚拟页表条目是否被标记为无效的指令进一步包括用于以下操作的各指令:
确定另一个虚拟页表条目是否标识该压缩页面;
基于确定该另一个虚拟页表条目并不标识压缩页面,确定标识压缩页面的每个虚拟页表条目被标记为无效;
基于确定该另一个虚拟页表条目标识该压缩页面,确定该另一个虚拟页表条目的状态;
基于确定该另一个虚拟页表条目是有效的,确定标识压缩页面的每个虚拟页表条目并未被标记为无效;以及
基于确定该另一个虚拟页表条目是无效的,返回至用于确定另一个虚拟页表条目是否标识压缩页面的指令。
4.根据权利要求1所述的非瞬态机器可读存储介质,其中该虚拟页表是多级虚拟页表。
5.根据权利要求1所述的非瞬态机器可读存储介质,其中该空间管理请求是解除映射请求或零写入请求。
6.根据权利要求1所述的非瞬态机器可读存储介质,进一步包括能够由该设备的处理资源执行以用于以下操作的指令:
在将虚拟页表条目标记为无效之后向主机发送确认消息。
7.根据权利要求1所述的非瞬态机器可读存储介质,其中用于确定标识压缩页面的每个虚拟页表条目是否被标记为无效的指令以及用于更新空闲空间位图条目的指令进一步包括作为后台任务执行的指令。
8.根据权利要求1所述的非瞬态机器可读存储介质,进一步包括能够由该设备的处理资源执行以用于以下操作的指令:
接收访问压缩页面的请求,其中该空闲空间位图条目指示该压缩页面处于使用中;
以及
基于所述访问压缩页面的请求,有选择地减小引用计数。
9.一种用于存储器空间管理的设备,所述设备包括:
处理资源;
空闲空间位图;
虚拟页表;以及
编码有能够由该处理资源执行的指令的机器可读存储介质,该机器可读存储介质包括用于以下操作的指令:
从主机接收标识虚拟页面地址的空间管理请求,其中该虚拟页面地址与压缩页面相关联,该压缩页面包括具有指示压缩页面中的数据的虚拟页面数量的引用计数的压缩元数据;
查找在虚拟页表中与虚拟页面地址相关联的虚拟页表条目,其中该虚拟页表条目标识该压缩页面;
在并不更新该引用计数的情况下,将该虚拟页表条目标记为无效;
确定标识压缩页面的每个虚拟页表条目是否被标记为无效;
基于确定标识压缩页面的每个虚拟页表条目都是无效的,更新空闲空间位图中压缩页面的空闲空间位图条目以指示该压缩页面为空闲的;以及
基于确定与压缩页面相关联的每个虚拟页表条目不是无效的,使得空闲空间位图中的空闲空间位图条目保持不变。
10.根据权利要求9所述的设备,其中该机器可读存储介质进一步包括能够由该处理资源执行以用于以下操作的指令:
在将虚拟页表条目标记为无效之后,向主机发送确认消息。
11.根据权利要求10所述的设备,其中用于确定标识压缩页面的每个虚拟页表条目是否被标记为无效的指令以及用于更新空闲空间位图条目的指令进一步包括作为后台任务执行的指令。
12.根据权利要求9所述的设备,其中该机器可读存储介质进一步包括能够由该处理资源执行以用于以下操作的指令:
接收访问压缩页面的请求,其中该空闲空间位图条目指示该压缩页面处于使用中;以及
基于所述访问压缩页面的请求,有选择地减小引用计数。
13.一种存储器空间管理的方法,所述方法包括:
经由处理资源来确定是否已经接收到访问压缩页面的请求,其中与压缩页面相关联的空闲空间位图条目指示该压缩页面处于使用中,并且其中压缩页面包括具有指示压缩页面中的数据的虚拟页面数量的引用计数的压缩元数据;
基于确定已经接收到访问请求以及基于该访问请求,有选择地减小引用计数;
经由处理资源确定是否已经接收到空间管理请求,其中该空间管理请求标识与压缩页面相关联的虚拟页面地址;
基于确定已经接收到空间管理请求,查找虚拟页表中与虚拟地址相关联的虚拟页表条目,其中该虚拟页表条目标识该压缩页面;
在并不更新引用计数的情况下,将该虚拟页表条目标记为无效;
经由处理资源确定标识压缩页面的每个虚拟页表条目是否被标记为无效;
基于确定标识压缩页面的每个虚拟页表条目都是无效的,更新空闲空间位图中压缩页面的空闲空间位图条目以指示该压缩页面为空闲的;以及
基于确定与压缩页面相关联的每个虚拟页表条目都不是无效的,使得空闲空间位图中的空闲空间位图条目保持不变。
14.根据权利要求13所述的方法,其中确定标识压缩页面的每个虚拟页表条目是否被标记为无效进一步包括:
确定另一个虚拟页表条目是否标识该压缩页面;
基于确定该另一个虚拟页表条目并不标识压缩页面,确定标识压缩页面的每个虚拟页表条目被标记为无效;
基于确定该另一个虚拟页表条目标识该压缩页面,确定该另一个虚拟页表条目的状态;
基于确定该另一个虚拟页表条目是有效的,确定标识压缩页面的每个虚拟页表条目并未被标记为无效;以及
基于确定该另一个虚拟页表条目是无效的,返回至确定另一个虚拟页表条目是否标识压缩页面。
15.根据权利要求13所述的方法,其中该空间管理请求是解除映射请求或零写入请求。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/223,754 US9946660B2 (en) | 2016-07-29 | 2016-07-29 | Memory space management |
US15/223754 | 2016-07-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107665095A CN107665095A (zh) | 2018-02-06 |
CN107665095B true CN107665095B (zh) | 2020-07-14 |
Family
ID=59034544
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710595049.XA Active CN107665095B (zh) | 2016-07-29 | 2017-07-20 | 存储器空间管理的设备、方法及可读存储介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9946660B2 (zh) |
EP (1) | EP3276494B1 (zh) |
CN (1) | CN107665095B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10061708B2 (en) * | 2016-05-12 | 2018-08-28 | SK Hynix Inc. | Mapped region table |
US10599582B2 (en) * | 2016-09-26 | 2020-03-24 | Intel Corporation | Using a virtual to virtual address table for memory compression |
US10969999B2 (en) | 2016-09-26 | 2021-04-06 | Intel Corporation | Surface property tracking mechanism |
CN110659225A (zh) * | 2018-06-28 | 2020-01-07 | 华为技术有限公司 | 内存管理方法以及相关装置 |
KR20200086143A (ko) * | 2019-01-08 | 2020-07-16 | 삼성전자주식회사 | 저장 장치 및 그것의 데이터 처리 방법 |
CN115718641A (zh) * | 2023-01-09 | 2023-02-28 | 苏州浪潮智能科技有限公司 | 存储器模拟方法及装置、存储介质及电子装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9135171B2 (en) * | 2010-07-13 | 2015-09-15 | Vmware, Inc. | Method for improving save and restore performance in virtual machine systems |
CN105550123A (zh) * | 2014-10-27 | 2016-05-04 | 联发科技股份有限公司 | 电子装置及其存储空间管理方法 |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1995018997A2 (en) | 1993-12-30 | 1995-07-13 | Connectix Corporation | Virtual memory management system and method using data compression |
US5696927A (en) | 1995-12-21 | 1997-12-09 | Advanced Micro Devices, Inc. | Memory paging system and method including compressed page mapping hierarchy |
US6658549B2 (en) | 2001-05-22 | 2003-12-02 | Hewlett-Packard Development Company, Lp. | Method and system allowing a single entity to manage memory comprising compressed and uncompressed data |
US7058783B2 (en) | 2002-09-18 | 2006-06-06 | Oracle International Corporation | Method and mechanism for on-line data compression and in-place updates |
US8140744B2 (en) | 2004-07-01 | 2012-03-20 | Seagate Technology Llc | Method and system for increasing data storage reliability and efficiency via compression |
US7840877B2 (en) | 2006-10-31 | 2010-11-23 | Hewlett-Packard Development Company, L.P. | Mass storage system and method |
US20080307174A1 (en) | 2007-06-08 | 2008-12-11 | Apple Inc. | Dual Use Memory Management Library |
US7987161B2 (en) | 2007-08-23 | 2011-07-26 | Thomson Reuters (Markets) Llc | System and method for data compression using compression hardware |
US8583893B2 (en) | 2009-05-28 | 2013-11-12 | Marvell World Trade Ltd. | Metadata management for virtual volumes |
US8190850B1 (en) | 2009-10-01 | 2012-05-29 | Emc Corporation | Virtual block mapping for relocating compressed and/or encrypted file data block blocks |
US8627041B2 (en) | 2009-10-09 | 2014-01-07 | Nvidia Corporation | Efficient line and page organization for compression status bit caching |
US8364929B2 (en) | 2009-10-23 | 2013-01-29 | Seagate Technology Llc | Enabling spanning for a storage device |
US8832142B2 (en) | 2010-08-30 | 2014-09-09 | Oracle International Corporation | Query and exadata support for hybrid columnar compressed data |
US8694703B2 (en) | 2010-06-09 | 2014-04-08 | Brocade Communications Systems, Inc. | Hardware-accelerated lossless data compression |
US9401967B2 (en) | 2010-06-09 | 2016-07-26 | Brocade Communications Systems, Inc. | Inline wire speed deduplication system |
US8904145B2 (en) * | 2010-09-30 | 2014-12-02 | International Business Machines Corporation | Adjusting memory allocation of a partition using compressed memory paging statistics |
US8352676B2 (en) * | 2010-10-26 | 2013-01-08 | Hitachi, Ltd. | Apparatus and method to store a plurality of data having a common pattern and guarantee codes associated therewith in a single page |
KR101759658B1 (ko) * | 2011-02-23 | 2017-07-19 | 삼성전자 주식회사 | 메모리 장치 및 메모리 시스템 |
US8838890B2 (en) | 2011-04-14 | 2014-09-16 | International Business Machines Corporation | Stride based free space management on compressed volumes |
US8788788B2 (en) | 2011-08-11 | 2014-07-22 | Pure Storage, Inc. | Logical sector mapping in a flash storage array |
KR101301828B1 (ko) * | 2011-09-29 | 2013-08-29 | 한양대학교 산학협력단 | 플래시 메모리에 기반한 ssd에서의 전원-손실 복구 방법 및 장치 |
US10102117B2 (en) | 2012-01-12 | 2018-10-16 | Sandisk Technologies Llc | Systems and methods for cache and storage device coordination |
US20130282676A1 (en) | 2012-03-28 | 2013-10-24 | Quantum Corporation | Garbage collection-driven block thinning |
US8615500B1 (en) | 2012-03-29 | 2013-12-24 | Emc Corporation | Partial block allocation for file system block compression using virtual block metadata |
US9026740B1 (en) | 2012-06-13 | 2015-05-05 | Emc Corporation | Prefetch data needed in the near future for delta compression |
US9053018B2 (en) * | 2012-06-29 | 2015-06-09 | International Business Machines Corporation | Compressed memory page selection based on a population count of a dataset |
US10102148B2 (en) * | 2013-06-13 | 2018-10-16 | Microsoft Technology Licensing, Llc | Page-based compressed storage management |
US9785571B2 (en) * | 2014-10-07 | 2017-10-10 | Google Inc. | Methods and systems for memory de-duplication |
WO2016057668A1 (en) * | 2014-10-07 | 2016-04-14 | Google Inc. | Method and apparatus for monitoring system performance and dynamically updating memory sub-system settings using software to optimize performance and power consumption |
-
2016
- 2016-07-29 US US15/223,754 patent/US9946660B2/en active Active
-
2017
- 2017-06-08 EP EP17175105.0A patent/EP3276494B1/en active Active
- 2017-07-20 CN CN201710595049.XA patent/CN107665095B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9135171B2 (en) * | 2010-07-13 | 2015-09-15 | Vmware, Inc. | Method for improving save and restore performance in virtual machine systems |
CN105550123A (zh) * | 2014-10-27 | 2016-05-04 | 联发科技股份有限公司 | 电子装置及其存储空间管理方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3276494A1 (en) | 2018-01-31 |
US9946660B2 (en) | 2018-04-17 |
US20180032440A1 (en) | 2018-02-01 |
CN107665095A (zh) | 2018-02-06 |
EP3276494B1 (en) | 2020-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107665095B (zh) | 存储器空间管理的设备、方法及可读存储介质 | |
US9798655B2 (en) | Managing a cache on storage devices supporting compression | |
US9880779B1 (en) | Processing copy offload requests in a storage system | |
US8972690B2 (en) | Methods and apparatuses for usage based allocation block size tuning | |
US10963377B2 (en) | Compressed pages having data and compression metadata | |
US10572378B2 (en) | Dynamic memory expansion by data compression | |
US9501419B2 (en) | Apparatus, systems, and methods for providing a memory efficient cache | |
KR102440128B1 (ko) | 통합된 객체 인터페이스를 위한 메모리 관리 장치, 시스템 및 그 방법 | |
US9940023B2 (en) | System and method for an accelerator cache and physical storage tier | |
US11675709B2 (en) | Reading sequential data from memory using a pivot table | |
US11314689B2 (en) | Method, apparatus, and computer program product for indexing a file | |
US8799611B2 (en) | Managing allocation of memory pages | |
KR20160060550A (ko) | 효율적인 맵핑을 위한 페이지 캐시 장치 및 방법 | |
WO2024099448A1 (zh) | 内存释放、内存恢复方法、装置、计算机设备及存储介质 | |
US11093389B2 (en) | Method, apparatus, and computer program product for managing storage system | |
CN110737397B (zh) | 用于管理存储系统的方法、设备和计算机程序产品 | |
CN114281719A (zh) | 用于通过地址映射来扩展命令编排的系统及方法 | |
US10416901B1 (en) | Storage element cloning in presence of data storage pre-mapper with multiple simultaneous instances of volume address using virtual copies | |
US10191855B2 (en) | Caching systems and methods for page reclamation with simulated NVDRAM in host bus adapters | |
US20220382473A1 (en) | Managing deduplication operations based on a likelihood of duplicability | |
US20180095690A1 (en) | Creating virtual storage volumes in storage systems | |
CN111881064A (zh) | 一种全闪存储系统中访问请求的处理方法、装置及设备 | |
US11481143B2 (en) | Metadata management for extent-based storage system | |
US20220283709A1 (en) | Metadata size reduction for data objects in cloud storage systems | |
GB2516091A (en) | Method and system for implementing a dynamic array data structure in a cache line |
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 |