用于压缩和紧凑虚拟存储器的方法和装置的制造方法_3

文档序号:9308576阅读:来源:国知局
储压缩存储单元(或压缩页面)的排序列表。每个压缩单元可以是从存储器设备的未压缩部分中的存储页面例如经由压缩器/解压缩器模块111被压缩到日志结构的头部。在一些实施例中,可以经由独立的线程,同时和/或独立于经由压缩存储器管理模块107来更新或操作每个日志结构。
[0043]压缩存储单元可以存储于日志结构的一个段中的存储器插槽(或位置)中。压缩器模块111可以向日志结构的头插槽记录或存储新压缩的存储页面,并将下一插槽更新(到当前头插槽)作为日志结构的头插槽供将来压缩。在当前段(或日志结构中的头段)变完整(或基本完整)时,压缩存储器管理模块107可以创建(或从存储器设备的未压缩部分分配)一个或多个新段。例如,可以基于标识日志结构的标识符、所标识日志结构内的段和所标识段内存储压缩存储单元的存储器插槽,为压缩存储器117维护存储页面及其在日志结构中的对应压缩存储单元之间的映射。
[0044]在一个实施例中,压缩器/解压缩器模块111可以管理压缩存储器117中的日志结构。每个日志结构可以与记录头相关联,记录头可以指向当前段中的头插槽,例如,日志结构中一系列段中的头段。多个线程可以与压缩器/解压缩器模块111相关联以同时利用独立的日志结构执行存储器压缩/解压缩操作。压缩器/解压缩器模块111可以根据请求队列执行压缩操作,请求队列存储例如经由分页器层模块105调度的要压缩的存储页面。存储页面在被压缩时可能要求在日志结构段内的存储器插槽中存储少于一个页面的物理存储大小。
[0045]在一个实施例中,随着更多存储页面被压缩到压缩存储器117中,在对应日志结构的头部之后,可能填满存储器插槽。或者,在释放所存储的压缩存储单元时,对应日志结构中段中一些段或插槽可能变为空的或可用于分配。例如,在应用或过程终止时,可以移除为该应用维持的对象或结构,并可以释放该应用所拥有的物理存储页面或压缩存储单元以供将来所用(即,可用于分配)。或者,由于被换出、解压缩或紧凑化,段变成空的。
[0046]压缩器/解压缩器模块111可以例如响应于在虚拟存储器管理模块103中遇到的页面错误,从压缩存储器117向存储器设备的未压缩部分拉出或解压缩压缩存储单元。压缩器/解压缩器模块111可以例如经由独立线程同时在压缩存储器117的不同段上执行压缩和解压缩操作。
[0047]压缩存储器管理模块107可以包括交换模块113,以经由接口模块119在压缩存储器117和海量存储设备121之间移动压缩存储单元的段。例如,可将压缩存储单元的段从压缩存储器117换出,以腾出空间容纳新压缩的存储页面和/或存储存储器设备的状态,供将来在系统休眠过程等期间恢复。或者,可以因为在虚拟存储器管理模块103中遇到页面错误而将压缩存储单元的段换入至压缩存储器117中,以访问压缩存储单元的段中的一个或多个段中的数据。
[0048]在一个实施例中,一个或多个线程可以为交换模块113运行。交换线程可以根据指定的调度表或响应于请求而醒来。例如,分页器层模块105可以发出请求以解决页面错误。存储器使用管理模块115可以发送请求以维持存储器设备中足够的可用存储空间。根据一个实施例,交换线程可以醒来以检查存储器设备的当前状态,以确定要将多少压缩存储单元的段从压缩存储器117中换出。交换线程可以选择最少使用(例如老化或陈旧)的段,如果需要使其紧凑(例如,通过紧凑化模块109),并向海量存储设备121转发选择的段。可以独立于通过压缩器/解压缩器模块111执行的压缩/解压缩操作和/或与其并行执行经由交换模块113进行的交换操作。
[0049]紧凑化模块109可以对压缩存储器117执行紧凑化操作以减少存储器的碎片化和/或提高存储器交换效率。例如,紧凑化模块109可以执行辅助紧凑化操作以滑动(或移动)一段日志结构内的压缩存储单元,而不改变压缩存储单元之间的排序关系,以合并其间留下的空的存储器插槽。替代地或任选地,紧凑化模块109可以执行主要紧凑化操作以在不同段之间移动压缩存储单元以填满和/或清空某些段。
[0050]在一个实施例中,交换模块113可以请求紧凑化模块109以对段进行紧凑化(例如最小化或减少空的插槽),实现更好的交换性能。例如,存储器设备和交换设备之间的接口可以基于固定大小的用于数据传输的数据缓冲区。匹配数据缓冲区大小的密集分布的段可以使传输效率最大化(例如,每单位时间或时钟周期传输的数据量)。
[0051]存储器使用管理模块115可以确定何时将压缩存储单元或页面从压缩存储器117推出或换出至海量存储设备121。存储器使用管理模块可以监测存储器设备的使用状态以为交换模块113提供触发(或向其发送请求)以发起交换操作。使用状态可以包括电力使用、存储器性能(例如读/写速度)、存储器使用率、存储器设备中压缩/未压缩分区的比率、压缩存储器117的大小、存储页面的工作集大小或其他适用的运行时度量等。
[0052]图2是示出了为虚拟存储器压缩和解压缩存储器的一个实施例的流程图。例如,过程200可通过图1的系统100的一些部件来执行。在方框201,过程200的处理逻辑可以为支持一个或多个处理器的虚拟存储器动态更新存储器设备中的压缩存储部分。存储器设备可以包括与压缩存储部分分开的未压缩存储部分。可以将虚拟存储器中的存储器地址映射到压缩存储部分或未压缩存储部分。
[0053]在一个实施例中,可以利用从未压缩存储部分分配的额外的存储更新压缩存储部分。可以将未压缩存储部分中分配的存储区域压缩到压缩存储部分中,以允许该存储区域可用于将来在存储器设备的未压缩存储部分中的分配。存储器的所更新的压缩部分能够存储所压缩的存储区域。用于在未压缩存储部分中分配的可用存储的大小可能因为对存储区域的压缩而增加。
[0054]根据一个实施例,例如,可以响应于接收到对访问所压缩的存储区域中的数据的请求而将所压缩的存储区域解压缩回存储器设备的未压缩部分。过程200的处理逻辑可以确定所请求的数据在未压缩存储部分中是否为当前可用的。如果请求的数据当前在未压缩存储部分中不可用,则该请求可导致页面错误事件触发压缩存储部分上的更新,例如,对所压缩的存储区域进行解压缩。
[0055]压缩存储部分可以存储于多个(或至少一个)压缩存储单元中。每个压缩存储单元可以对应于从未压缩存储部分压缩的独立存储区域。独立的压缩存储单元可并非连续存储(例如,基于存储器设备内的物理分配)于压缩存储部分中。在一个实施例中,可以对压缩存储部分进行紧凑化以使得这些独立压缩的存储单元被连续存储于压缩存储部分中。
[0056]存储区域可以对应于存储器设备的未压缩部分中固定大小的存储单元,诸如一页存储器。压缩存储单元的大小可以根据例如压缩到压缩存储单元中的原始数据内容的量或压缩性能而变化。在一个实施例中,所压缩的存储区域可以对应于压缩存储部分中的特定的压缩存储单元。
[0057]在一个实施例中,特定的压缩存储单元可以存储于压缩存储部分中相邻压缩存储单元之间。在从压缩存储部分去除特定的压缩存储单元时,可以通过例如紧凑化操作将相邻存储单元移动成彼此相邻地被连续存储。可以通过例如解压缩操作、交换操作或其他适用的存储器管理操作从压缩存储部分去除特定的压缩存储单元。
[0058]在一些实施例中,压缩存储部分可以包括多个存储器插槽池。每个压缩存储单元可以存储于一个或多个连续的(根据物理存储器分配)存储器插槽中。每个池可以对应于压缩存储单元的独立分区。在一个实施例中,每个池可以与独立的线程相关联,例如,属于运行于使用该存储器的系统中的过程。可以针对每个池经由其关联线程独立且异步地执行对压缩存储部分的紧凑化操作。
[0059]存储器设备可以与独立存储设备耦接,诸如硬盘、闪存存储器或其他适用的非易失性存储设备。可将压缩存储单元中的一个或多个压缩存储单元从压缩存储部分换出(例如,以更新压缩存储部分)至独立存储设备。因此,可以减小压缩存储部分的大小以增大未压缩存储部分的大小。或者,如果在请求时压缩存储单元中的数据当前在压缩存储部分中不可用,则可以从独立存储设备向压缩存储部分交换用于压缩的存储区域的压缩存储单
J L ο
[0060]过程200的处理逻辑可以经由具有数据传输缓冲区(诸如具有一定比特大小的总线缓冲区)的接口在存储设备(例如交换设备)和存储器设备之间交换压缩的存储单元。在一个实施例中,过程200的处理逻辑可以对压缩存储部分进行紧凑化以允许数据传输缓冲区有效地同时承载多个压缩存储单元,例如,每个硬件数据事务中基本都是满载容量。[0061 ] 在一个实施例中,存储区域可以对应于存储器设备中的存储页面。未压缩存储部分可以包括存储页面的工作集,以支持当前活动的数据处理过程。例如,响应于对暂时停止系统运行的休眠请求,可以将存储页面的工作集压缩到压缩存储部分中的一系列压缩存储单元中。然后可以将该系列压缩存储单元换出至与存储器设备耦接的存储设备,以供将来所用。
[0062]过程200的处理逻辑可以选择至少一个压缩存储单元以换出压缩存储部分。该选择可以基于压缩存储单元的使用性能。使用性能可以指示何时针对压缩存储单元访问数据。例如,使用性能可以
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1