使用分层中断管理压缩存储器的制作方法

文档序号:6362328阅读:260来源:国知局
专利名称:使用分层中断管理压缩存储器的制作方法
技术领域
本公开一般地涉及计算机存储器架构,并且特别涉及管理压缩存储器的系统和方法。
背景技术
存储器压缩可以通过使用经编码的数据来优化可用存储器。经编码的数据可以被表示为符号(symbol),从而占用较少空间。对于某些应用,存储器压缩有效地扩大存储器容量而不增加实际物理存储器(例如,动态随机存取存储器)和相关开销。这样做,使得压缩存储器系统可以向操作系统和/或管理程序(hypervisor)呈现比实际可用更大的实地址空间。结果,实地址空间(例如,报告到OS和/或管理程序的可用物理存储器的量)可以被过量使用。此外,压缩比可能减小,并需要更多物理存储器。操作系统或管理程序可以通过将实页面失效(invalidate)而释放物理存储器空间来作出响应。被失效的实页面可以被复制到光盘并腾空,从而为压缩数据制造空间。有时,不能及时获得物理存储器空间来防止存储器耗尽和相关数据丢失。例如,可能在系统继续消耗附加存储器的同时延迟腾空存储器的处理。此外,不受操作系统或管理程序影响的处理可以继续使用可用的存储器。因此,存储器消耗可能超过使空间成为可用的速率。试图保留大量空闲物理存储器的预防措施可能导致不充分利用的存储器。

发明内容

在具体实施例中,一种管理存储器的方法包括启动(initiate)存储器压缩操作。所述方法还包括响应于第一检测的存储器水平启动第一中断,所述第一中断被配置为影响在处理器上执行的第一处理。第二启动的中断可以被配置为响应于第二检测的存储器水平影响在所述处理器上执行的所述第一处理,并且可以响应于第三检测的存储器水平启动第三中断,以影响在所述处理器上执行的所述第一处理。所述第一、第二和第三检测的存储器水平中的至少一个被所述存储器压缩操作所影响。在另一个实施例中,公开了一种设备,其包括存储器和处理器,所述处理器被配置为执行访问所述存储器的第一处理。所述处理器还被配置为启动存储器压缩操作,响应于第一检测的存储器水平启动生成被配置为影响第一处理的执行的第一中断,响应于第二检测的存储器水平启动生成被配置为影响所述第一处理的执行的第二中断,以及响应于第三检测的存储器水平启动生成被配置为影响所述第一处理的执行的第三中断。所述第一、第二、和第三检测的存储器水平中的至少一个被所述存储器压缩操作所影响。在另一个实施例中,一种程序产品包括程序代码,所述程序代码用以启动存储器压缩操作,其可以响应于第一检测的存储器水平导致被配置为影响第一处理的执行的第一中断,也可以响应于第二检测的存储器水平导致被配置为影响所述第一处理的执行的第二中断,还可以响应于第三检测的存储器水平导致被配置为影响所述第一处理的执行的第三中断。有形计算机可读介质可以承载该程序代码。所述第一、第二、和第三检测的存储器水平中的至少一个被所述存储器压缩操作所影响。实施例可以有效地向管理程序或操作系统传递物理存储器正被耗尽的信息,同时最小化由于不必要的中断对性能的影响。中断的分层(tiered)层级体系(hierarchy)可以有效地利用可用存储器容量的全范围。机器检验中断可以响应于中断请求而最小化空闲物理存储器空间的量,其否则可能为了对抗可能的延迟而被保留。层级体系结构和机器检验特征可以导致更少的中断和更多可用的物理存储器空间。与最高优先级的存储器容量相关联的机器检验中断的使用可以用于保证空闲存储器并且最小化数据丢失。额外的可用物理存储器空间可以导致改善的系统性能。在所附权利要求中阐述了表征实施例的特性,并且所述特性形成这里的另一部分。然而,为了更好地理解实施例、以及通过其使用而实现的优点和目标,应该参考附图和伴随的描述内容。


图1是被配置为使用与可用存储器的不同水平相关联的中断的分层层级体系来管理压缩存储器的计算系统的实施例的框图;图2是更详细地示出用于实施与图1的计算系统一致的逻辑分区环境的主要软件组件和资源的框图;图3是存储器压缩计算系统的实施例的框图,所述存储器压缩计算系统使用基于扇区使用阈值寄存器(sectors used threshold register)的阈值而启动的中断来管理在连接到压缩存储器的处理器上执行的处理;以及图4是管理压缩存储器的方法的实施例的流程图,所述方法包括使用与可用存储器的不同水平相关联的中断的分层层级体系来逐渐地影响存储器相关的处理。
具体实施例方式压缩存储器计算系统的具体实施例可以使用基于检测的可用存储器水平逐渐更严重地影响系统操作的中断分层层级体系。机器检验中断可以被配置为暂时中止(halt)计算系统的所有处理器的所有核上的所有线程。线程可以被立即中止并且可以在机器检验处理程序(handler)的控制之下。如果校正动作成功,则机器检验中断可以允许线程恢复和工作负载恢复。机器检验处理程序可以发信号使管理程序或操作系统使用现有分页机制来创建额外的空闲物理存储器空间,以保持扩大的压缩数据。可以仅当在存储器耗尽之前未提供一个或多个其它中断时使用机器检验中断。由于机器检验中断可以停止来自执行工作负载的所有线程,所以机器检验中断比其它中断对性能有相对更大的影响,所述其它中断可以被配置为仅影响单个线程、插槽(socket)、或在处理器上执行的其它处理。机器检验中断的使用可以用于保证在数据被丢弃之前将有空闲空间可用。因此可以在生成中断之前保留较小量的空闲存储器或不保留空闲存储器。因而机器检验中断可以有助于产生更少的中断和更大的可用存储器空间,从而允许更高的系统性能。存储器控制器的实施例可以包括扇区使用寄存器,其包括当前使用的物理存储器的运行计数。可以在扇区使用阈值寄存器内保持两个或更多个可配置的存储器使用阈值。每个扇区使用阈值寄存器可以是可配置为启动几个中断类型之一的软件。示例性中断类型可以包括可屏蔽中断、不可屏蔽中断、以及机器检验中断。取决于中断类型和寄存器配置,每个中断可以被传送到计算机系统中的一个或多个处理器。可屏蔽中断可以被配置为导致线程、插槽、或处理器核保存其执行状态并且导致中断处理程序使存储器成为可用存储器。然而,中断处理程序编码可以取决于系统配置和并行处理需求而屏蔽或延迟可屏蔽中断的处理。不可屏蔽中断可以是不可屏蔽的,并且可以保证软件接收到不可屏蔽中断。与上述较不严重的中断结合地,可以使用机器检验中断来停止所有处理器插槽、核、和/或线程。因而,可屏蔽、不可屏蔽、以及机器检验中断可以包含中断的分层层级体系,其基于可用存储器的检测水平或存储器容量逐渐更严重地影响系统操作。可以响应于存储器压缩操作而增大或减小存储器容量。为了本说明书的目的,存储器压缩操作可以包括数据压缩或数据解压缩过程。当可用存储器容量正接近第一非关键水平时,存储器控制器可以引起可屏蔽中断。如果管理程序或操作系统中的中断处理程序接收到可屏蔽中断,则中断处理程序可以试图创建可用的物理存储器。然而,不保证可屏蔽中断将不被屏蔽或者将被及时处理以维持可用存储器。在可屏蔽中断被屏蔽、未被处理、或未被中断处理程序接收时,存储器不足可能变得更关键。

响应于检测到可用存储器的第二较关键水平,存储器控制器可以引起不可屏蔽中断。不可屏蔽中断可以保证被中断处理程序接收。然而,中断处理程序可能不正确地处理不可屏蔽中断。例如,中断处理程序、管理程序、或操作系统的软件中的缺陷或错误可以导致创建可用存储器的失败。当输入/输出(I/o)设备正流入存储器时也可能允许存储器变成耗尽的。此外,数据模式可以继续改变并消耗更多的物理存储器,导致系统继续耗尽存储器。在系统包括多个处理器插槽、每个处理器上的多个核、以及每个处理器核上的多个线程时,在接收中断的一个线程之外,所有插槽、核、和/或线程都可以继续使用更多的存储器。例如,在被中断的线程释放更多空间之前,其它线程可能消耗剩余存储器,从而导致数据丢失。当可屏蔽中断未成功使得更多存储器可用、并且存储器接近第三关键水平时,机器检验中断可以作为最高优先级中断而发生。机器检验中断可以中止所有活动(例如,包括I/o操作)。机器检验处理程序可以通过将很少使用的存储器页面失效并将很少使用的存储器页面移除到磁盘而试图创建空闲物理存储器。替代地或附加地,机器检验处理程序可以将存储器内容写入到第二层(tier)存储器,诸如闪存或固态硬盘(SSD)存储器,从而创建额外空闲存储器。当机器检验处理程序试图在存储器中创建空闲空间时,可能不接受直接存储器访问写入。第二层存储器可以包括来自过量使用的存储器的溢出(overflow)。从物理存储器空间移除的数据(例如,页面)可以被移动到第二层存储器中,而不是盘储存器(diskstorage)中。当数据压缩比提高并且空闲物理存储器空间变为可用时,来自第二层的数据可以被移回物理存储器。与将数据向盘储存器来回移动相比,以这种方式使用第二层存储器可以实现更高的性能。用于释放物理存储器空间的软件代码(例如,机器检验处理程序)可以被映射到未压缩且非过量使用的存储器。因而软件代码的检索本身可能不增加物理存储器使用,并且导致用以保持用于执行的未压缩代码的物理存储器的耗尽。扇区使用阈值寄存器可以被用于响应于可用存储器增加到期望的阈值而向管理程序或操作系统启动可屏蔽中断。这种期望的阈值可以对应于其中数据可以被交换回物理存储器中的存储器容量。多个扇区使用阈值寄存器阈值可以用于分层级地发信号到管理程序或操作系统,以传递存在充足的可用存储器空间的信息。或者,管理程序或操作系统可以轮询(poll)扇区使用阈值寄存器来评估(evaluate)空闲空间量,以得知何时可以将更多数据从盘移动到物理存储器。除扇区使用寄存器之外,存储器控制器还可以包括软件可配置扇区使用阈值寄存器。扇区使用阈值寄存器的阈值可以由管理员设置。在具体实施例中,存储器控制器可以包括可以用作阈值水平的四个扇区使用阈值寄存器。在另一个实施例中,可以包括更多或更少扇区使用阈值寄存器。扇区使用阈值寄存器可以用于确定当越过(C1OSS)阈值时,何时会造成以及造成哪种类型的异常。每个扇区使用阈值寄存器可以由写入到其的软件配置。阈值和异常类型可以由软件写入到每个扇区使用阈值寄存器。当扇区使用寄存器值越过一扇区使用阈值寄存器值(阈值)时,存储器控制器可以引起异常。例如,当扇区使用寄存器值小于或等于第一扇区使用阈值寄存器,且接着该扇区使用寄存器值大于第一扇区使用阈值寄存器时,存储器控制器引起异常。在相反方向上越过第二扇区使用阈值寄存器值可以类似地引起与中断相关联的异常。可以基于异常的优先级而设置中断类型和阈值。每个扇区使用阈值寄存器可以引起系统上可用的不同类型的异常。例如,软件可以将第一扇区使用阈值寄存器配置为引起常规设备中断或可屏蔽中断。扇区使用阈值寄存器可以包括低阈值。管理员可以将第二扇区使用阈值寄存器配置为引起不可屏蔽中断并包括更高的阈值。第三扇区使用阈值寄存器可以引起机器检验中断并且可以与最高阈值相关联。当阈值水平增加(接近存储器溢出)时,中断的优先级可以按比例更高。当扇区使用寄存器在减小的同时越过扇区使用阈值寄存器值时,可以适用相反情况。管理过量使用的存储器的机器检验处理程序和操作系统分页(paging)软件可以在存储器的非过量使用的区域中运行。非过量使用的存储器可以包括不经受物理存储器耗尽的存储器空间。系统可以通过在上电(pow`er up)期间静态地初始化存储器配置寄存器来创建和维持非过量使用的存储器,以分别限定非过量使用和过量使用的地址空间范围。替代地或附加地,所选择的实存储器范围可以在运行时间期间从过量使用的区域切换到非过量使用的区域,以及相反。附接到处理器插槽的本地存储器可以被指定为不经受(subjectto)过量使用。存储器可以通过将存储器配置为包括永久不压缩的地址范围来创建非过量使用的存储器。从非过量使用的存储器中执行管理程序和操作系统代码可以最小化检索代码对关键存储器的影响。更具体地转向附图,图1示出数据处理装置100,其被配置为执行基于检测的可用存储器水平使用中断的分层层级体系管理压缩存储器的实施例的方法,所述中断的分层层级体系逐渐更严重地影响系统操作。机器检验中断可以被配置为暂时中止装置100的所有处理器102-104的所有核上的所有线程。装置100可以一般地表示多个多用户计算机系统中的任意一个,诸如网络服务器、中型计算机(midrange computer)、以及大型计算机(mainframe computer)等。然而,实施例可以在另一数据处理装置中实施,例如,在诸如工作站、台式计算机、便携式计算机等的单机(stand-alone)或单用户计算机系统中,或者在诸如嵌入式控制器的其它计算设备中实施。装置100的一种实施方式可以是多用户计算机,诸如来自国际商业机器公司(IBM)的Power Systems计算机。装置100可以包括具有压缩数据的存储器(例如,存储器114、117_119、121)。存储压缩数据的存储器可以对处理器102-104和I/O设备呈现比物理存储器(例如,动态随机存取存储器)更大的实地址空间。实地址空间可以被过量使用(例如,四倍)。偶尔,数据可能由于未压缩好的模式而改变。如果数据模式改变使得物理存储器变得接近于被完全消耗,则管理程序或操作系统可以试图停止系统耗尽物理存储器。例如,可以最近使用的页面识别为要移除到盘的候选者。一个实施例可以使存储器压缩逻辑能够将物理存储器正耗尽的信息用信号发送到管理程序或操作系统,同时最小化由于不必要的中断对性能的影响。不必要的中断可能没有考虑额外存储器成为可用,并且可能浪费CPU周期。一个实施例可以在必须用信号通知操作系统关于低空闲存储器情况之前,通过限制空闲物理存储器空间的量而使能更多的可用物理存储器。即,当由于中断(包括机器检验中断)的分层层级体系可以使装置更好响应于精确追踪的存储器阈值而剩余大量可用物理存储器时,处理可以不被中止。该特征可以最大化存储器使用。额外的可用物理存储器空间导致额外的系统性能。物理处理器102-104可以被连接到输入/输出(I/O)集线器116。一个或多个处理器102-104的插槽可以直接且分别附接到存储器117-119,例如双列直插式存储器模块(DIMM)的阵列。物理存储器·102-104可以是多线程的。多线程使物理存储器102-104能够同时执行程序代码的不同部分。处理器102、103可以与连接到附加存储器114的存储器控制器113进行通信。缓冲器115和附加存储器121可以连接到处理器104。I/O集线器116还可以经由系统总线118和多个接口设备连接到多种类型的外部I/o设备。示例性的I/O设备包括总线附接接口 120、工作站控制器112、以及储存器控制器124。这种I/O设备可以分别提供外部访问到一个或多个外部网络126、一个或多个工作站128、和/或诸如直接存取存储设备(DASD) 129的一个或多个存储设备。图2更详细地示出用于实施与图1的装置100 —致的逻辑分区环境的主要软件组件和资源。图2—般地示出计算架构,其表征为由IBM开发的虚拟机设计。系统200包括在多个处理中共享公共处理资源的多个分区201-203。这种架构可以依赖具有一个或多个中央处理单元(CPU)205、206的单一计算机器。CPU205、206可以执行被配置为模拟多个虚拟处理器(VP) 207-212的软件。分区201-203可以在逻辑上包括系统的物理CPU205、206、DASD268、以及由管理员所分配的其它资源的部分。每个分区201-203典型地主持(host)包括虚拟处理器207-212的操作系统215-217。每个分区201-203可以如同其为独立计算机一样操作。如图2中所示,包括每个分区201-203的产品环境也可以包括诸如图2中所示的应用程序220-222的程序代码。被称为管理程序246的底层程序或分区管理器可以将物理资源分配给每个分区201-203。在虚拟化技术中,管理程序246可以管理单一计算机系统上的操作系统215-217(或同一操作系统的多个实例)。管理程序246可以管理系统的处理器、存储器、以及其它资源,以将资源分配给每个操作系统215-217。例如,管理程序246可以拦截来自操作系统215-217的对资源的请求,以全局地共享和分配资源。如果分区201-203正在共享处理器,则管理程序246可以在共享CPU205、206中的一个或多个的分区201-203的虚拟处理器207-212之间分配物理处理器周期。管理程序246可以包括非过量使用的存储器232。非过量使用的存储器232可以包括永久不压缩的地址范围。从非过量使用的存储器232中执行管理程序代码可以最小化检索代码对关键存储器的影响。中断处理程序233可以包括在非过量使用的存储器232中。中断处理程序233可以包括回调子程序(subixmtine),该子程序的执行由中断的接收而触发。例如,示例性的子程序可以中止线程、插槽、或核的处理,并且可以创建额外的可用存储器。机器检验(MCK)处理程序代码234可以被附加地包括在非过量使用的存储器232中。响应于接收机器检验中断238,机器检验处理程序234可以采取校正动作,并且如果校正动作成功,则恢复工作负载的执行。例如,机器检验处理程序234可以发送信号到管理程序246或操作系统215-217,以使用现有分页机制创建额外的空闲物理存储器空间来保持扩大的压缩数据。可以仅当在存储器耗尽之前未提供一个或多个其它中断时才使用机器检验中断238。由于机器检验中断238可以停止来自执行工作负载的所有线程,所以机器检验中断238对性能的影响比可屏蔽中断(INTR)236和不可屏蔽中断(匪1)237大,可屏蔽中断(INTR) 236和不可屏蔽中断(匪I) 237可以被配置为仅影响单个线程、插槽、或处理器。机器检验处理程序234可以试图通过将很少使用的存储器页面失效并将其移除到盘来创建空闲物理存储器。替代地或附加地,机器检验处理程序234可以将存储器内容写入到第二层存储器。在另一个实施例中,非过量使用的存储器232、中断处理程序233、以及机器检验处理程序234中的任一或全部可以被包括在操作系统中。管理程序246可以包括存储器镜像算法238,其被配置为从未压缩的主要存储器(诸如可以存储在DIMM248处)转变到压缩的镜像存储器(例如,在DIMM249处)。存储器镜像算法238可以在主要存储器中检测到失败时将CPU访问转变到镜像存储器。在另一个实施例中,存储器镜像程序可以被包括在操作系统中。
每个操作系统215-217可以以与未分区计算机的操作系统相同的方式来控制其各个逻辑分区201-203的主要操作。每个逻辑分区201-203可以在由虚拟存储器250-252表示的独立存储器空间中执行。此外,每个逻辑分区201-203可以静态地和/或动态地在系统200中分配可用资源的部分。例如,每个逻辑分区201-203可以共享CPU205、206中的一个或多个、以及为了在虚拟存储器250-252中使用的可用存储器空间的部分。以这种方式,给定的CPU205、206可以被超过一个逻辑分区201-203所利用。管理程序246可以包括调度程序251,其在调度列表或就绪队列247上管理虚拟处理器207-212到CPU205、206的调度。就绪队列247包含存储器,该存储器包括具有等待被调度在CPU205、206上的工作的虚拟处理器207-212的列表。图2中所示的管理程序246也控制CPU205、206,并且可以附加地控制存储器控制器254和DIMM248、249。管理程序246的处理器控制块249包括存储器,该存储器包括等待在CPU205、206上访问的虚拟处理器207-212的列表。附加的资源(例如,大容量储存器、后备储存器、用户输入、网络连接等)典型地被以本领域公知的方式分配到一个或多个逻辑分区。可以以多种方式分配资源,例如,在逐总线(bus-by-bus)的基础上,或者在逐资源(resource by resource)的基础上,通过多个逻辑分区在同一总线上共享资源。某些资源可以一次被分配到多个逻辑分区201-203。例如图2示出三条逻辑总线262、264和266,总线262上具有多个资源,所述资源包括分配到分区的直接存取存储设备(DASD) 268、控制面板270、磁带驱动器272和光盘驱动器274。总线264可以具有在逐资源的基础上分配的资源,例如局域网(LAN)适配器276、光盘驱动器278和DASD280分配到逻辑分区202,以及LAN适配器282、284分配到逻辑分区203。总线266例如可以表示特别分配到逻辑分区203的总线,使得总线266上的所有资源(例如,DASD286、288)都被分配到同一逻辑分区203。图2中所示硬件可选地包括一个或多个高速缓存(cache) 265。图3示出存储器压缩计算系统300的实施例,其包括两个处理器302、312,每个处理器具有直接附接的存储器304、308、314和318。处理器可以经由处理器总线305连接到另一个处理器。系统300可以被配置为使用中断的分层层级体系在包括压缩存储器的环境内管理存储器。更具体地,系统300包括未压缩的主要存储器306、316、322中的数据,该主要存储器306、316、322可以在压缩的镜像存储器310、320中镜像。处理器302、312可以类似于图1的处理器101-103以及图2的CPU205、206。存储器304,308,314和318可以类似于图1的存储器117-119以及图2的DIMM248、249。系统300还包括存储器控制器303和缓冲器313、317。存储器控制器303可以类似于图1的存储器控制器113,并且缓冲器313、317的每个可以类似于图1的缓冲器115。图3的存储器控制器303的硬件可以包括扇区使用寄存器(SUR)330。扇区使用寄存器330可以保持物理存储器使用的运行计数。存储器控制器303还可以包括可以用作阈值水平的多个软件可配置扇区使用阈值寄存器(SUTR) 331-334。扇区使用阈值寄存器331-334的阈值可以由管理员设置。在另一个实施例中,可以包括更多或更少的扇区使用阈值寄存器。扇区使用阈值寄存器331-334可以被用于确定当越过阈值时,何时会造成以及造成哪种类型的异常。每个 扇区使用阈值寄存器331-334可以是软件可配置的。例如,阈值和中断类型可以被写入到每个扇区使用阈值寄存器331-334。当扇区使用寄存器值越过扇区使用阈值寄存器值时,存储器控制器303可以引起异常。例如,当扇区使用寄存器值小于或等于第一扇区使用阈值寄存器值,且接着扇区使用寄存器值大于第一扇区使用阈值寄存器值时,存储器控制器303可以引起异常。在相反方向上越过第二扇区使用阈值寄存器331-334可以类似地引起与另一中断相关联的异常。可以基于异常的优先级而设置中断类型和阈值。每个扇区使用阈值寄存器331-334可以引起在系统300上可用的不同类型的异常。例如,软件可以将第一扇区使用阈值寄存器331配置为引起常规设备中断或可屏蔽中断。扇区使用阈值寄存器331可以包括相对较低的阈值。管理员可以将第二扇区使用阈值寄存器332配置为引起不可屏蔽中断并包括更高的阈值。第三扇区使用阈值寄存器333可以引起机器检验中断并且可以与最高阈值相关联。当阈值水平增加(接近存储器溢出)时,中断的优先级可以是按比例地更高。当扇区使用寄存器330在减小的同时越过扇区使用阈值寄存器值时,可以使用相反情况。根据具体实施例,扇区使用阈值寄存器331可以被用于响应于可用存储器增加到预设阈值而启动将可屏蔽中断发送到管理程序或操作系统。这种阈值可以对应于其中数据可以被交换回物理存储器中的存储器容量。扇区使用阈值寄存器阈值可以用于分层级地发信号到管理程序或操作系统,以传递存在充足的可用存储器空间的信息。或者,管理程序或操作系统可以轮询扇区使用阈值寄存器331-334来评估空闲空间量,以得知何时可以将更多数据从盘移动到物理存储器。存储器控制器303可以额外地包括第一处理器302外部的数字电路,其被配置为管理处理器302、312、缓冲器313、317、以及存储器304、308、314、318中的至少两个之间的数据流。缓冲器313、317可以被配置为与处理器302、312的一个或多个结合地工作,以在数据在处理器302、312、缓冲器313、317、以及存储器304、308、314、318中的至少两个之间移动时暂时保持数据。处理器控制器303可以连接在第一处理器302和包括第一 DIMM镜像存储器310的第二存储器308之间。虽然存储器控制器303的扇区使用阈值寄存器330和扇区使用阈值寄存器331-334可以为整个系统300管理存储器,但图3的实施例将第二处理器312显示为包括其自己的扇区使用阈值寄存器335和扇区使用阈值寄存器336-339来管理存储器。缓冲器 313可以连接在第二处理器312和第三存储器314之间,第三存储器314包括DIMM主要存储器316的第二阵列。第三缓冲器317可以连接在第二处理器312和第四存储器318之间,第四存储器318包括DIMM镜像存储器320的阵列和DIMM主要存储器322的第三阵列。在图3的实施例中,第一 DIMM镜像存储器310可以镜像DIMM主要存储器316的第二阵列,如箭头324所示。第一 DIMM镜像存储器310可以包括压缩数据。例如,第一 DIMM镜像存储器310可以包括DIMM主要存储器316的第二阵列中的数据的压缩版本。DIMM镜像存储器320的阵列可以镜像DIMM主要存储器306的第一阵列,如箭头326所示。DIMM镜像存储器320的阵列可以包括压缩数据。例如,DIMM镜像存储器320的阵列可以包括DIMM主要存储器306的第一阵列中的数据的压缩版本。DIMM镜像存储器320的阵列中的压缩数据与DIMM主要存储器306的第一阵列中的未压缩数据相比较的压缩比可以约为四比一,正如第一 DIMM镜像存储器310。如箭头328所示,DIMM镜像存储器320的阵列可以镜像DIMM主要存储器316的第二阵列。例如,处理器302、312、存储器控制器303、以及缓冲器313、317中的一个或多个可以复制和压缩DIMM主要存储器316的第二阵列的数据,以存储在DIMM镜像存储器320的阵列中。当数据存储在第一 DIMM镜像存储器310和DIMM镜像存储器320的阵列中时,第一处理器302、第二处理器312、存储器控制器303、缓冲器313、以及缓冲器317中的一个或多个可以包括用于压缩数据的压缩逻辑。管理程序和操作系统(诸如图2的管理程序246和操作系统215)中的至少一个可以被配置为控制从访问DIMM主要存储器316的第二阵列转变为访问第一 DIMM镜像存储器310。图4示出基于检测的可用存储器水平而使用影响系统操作的中断的分层层级体系来管理压缩存储器的方法400的实施例。例如,随着存储器容量变得更有限,可以逐渐更严重地影响处理。反之,随着存储器容量恢复,中断可以逐渐地启动处理。方法400可以使用配置为暂时中止计算机系统的所有处理器的所有核上的所有线程的机器检验中断。方法400可以由图1-3的系统100、200、和300中的一个所执行。更具体地转向流程图,在402,系统可以进行正常的存储器压缩管理处理。例如,系统可以在正常的存储器压缩操作过程中访问和使用物理存储器。在404,系统可以确定扇区使用寄存器的值大于第一扇区使用阈值寄存器的阈值。例如,图3的存储器控制器303可以检测到扇区使用寄存器330的值大于扇区使用阈值寄存器331的阈值。在另一个实施例中,管理程序或操作系统可以轮询扇区使用阈值寄存器来评估空闲空间量。替代地,当确定扇区使用寄存器的值大于第一扇区使用阈值寄存器的阈值时,可以在406启动第一中断。例如,可以由存储器控制器254启动图2的可屏蔽中断236。可屏蔽中断236可以被发送到管理程序246的中断处理程序233。中断处理程序233可以试图通过创建额外的存储器来响应可屏蔽中断236。在408,系统可以确定扇区使用寄存器的值小于第一扇区使用阈值寄存器的阈值。例如,图3的存储器控制器303可以检测到扇区使用阈值寄存器330的值小于扇区使用阈值寄存器331的阈值。当扇区使用寄存器的值被确定为小于扇区使用阈值寄存器的阈值时,可以在410将存储器页面从盘移动到物理存储器(例如,动态随机存取存储器)。替代地,当确定扇区使用寄存器的值大于第一扇区使用阈值寄存器的阈值时,系统可以在412确定扇区使用寄存器的值大于第二扇区使用阈值寄存器的阈值。例如,图3的存储器控制器303可以检测到扇区使用寄存器330的值大于扇区使用阈值寄存器332的阈值。当扇区使用寄存器的值大于第二扇区使用阈值寄存器的阈值时,可以在414启动第二中断。例如,可以由图2的存储器控制器254启动不可屏蔽中断237。不可屏蔽中断237可以被发送到管理程序246的中断处理程序233。中断处理程序233可以试图通过创建额外的存储器来响应不可屏蔽中断237。替代地,当扇区使用寄存器的值小于第二扇区使用阈值寄存器的阈值时,系统可以在408确定扇区使用寄存器的值是否小于第一扇区使用阈值寄存器阈值。系统可以在416确定扇区使用寄存器的值小于第一扇区使用阈值寄存器的阈值。例如,图3的存储器控制器303可以检测到扇区使用寄存器330的值小于扇区使用阈值寄存器331的阈值。当确定扇区使用寄存器的值小于扇区使用阈值寄存器的阈值时,可以在410将存储器页面从盘移动到物理存储器。替代地,当确定扇区使用寄存器的值大于第一扇区使用阈值寄存器的阈值时,系统可以在418确定扇区使用寄存器的值大于第三扇区使用阈值寄存器的阈值。例如,图3的存储器控制器303可以检测到扇区使用寄存器330的值大于扇区使用阈值寄存器333的阈值。当扇区使用寄存器的值大于第三扇区使用阈值寄存器的阈值时,可以在420启动机器检验中断。例如,可以由存储器控制器254启动图2的机器检验中断238。机器检验中断238可以被发送到管理程序246的机器检验处理程序234。机器检验处理程序234可以试图通过立即中止所有线程并所有线程置于机器检验处理程序234的控制下来响应机器检验中断238。如果校正动作成功,则机器检验中断238可以允许线程处理的恢复。换言之,机器检验处理程序234可以进行校正动作,并在校正动作成功的情况下恢复工作负载执行。替代地,当扇区使用寄存器的值小于第三扇区使用阈值寄存器的阈值时,系统可以在418确定扇区使 用寄存器的值是否大于第一扇区使用阈值寄存器的阈值。因而,图4示出包括基于检测的可用存储器水平使用逐渐更严重地影响系统操作的中断的分层层级体系来管理压缩存储器的方法400的实施例的流程图。方法400可以使用机器检验中断,其被配置为暂时中止计算机系统的所有处理器的所有核上的所有线程。扇区使用阈值寄存器可以向管理程序或操作系统传递物理存储器正耗尽的信息,同时最小化由于不必要的中断对性能的影响。这里描述的具体实施例可以采取完全硬件实施例、完全软件实施例、或包含硬件和软件元素二者的实施例的形式。在具体实施例中,公开的方法在被嵌入到处理器可读存储介质、并且由处理器执行的软件中实施,该软件包括但不限于固件、常驻软件、微代码等。此外,本公开的实施例(诸如一个或多个实施例)可以采取可以从提供由计算机或任何指令执行系统使用的、或者结合计算机或任何指令执行系统使用的程序代码的计算机可用或计算机可读的存储介质访问的计算机程序产品。为了本说明书的目的,计算机可用或计算机可读存储介质可以是能够有形地实现计算机程序并且能够包含、存储、通信、传播、或传输该程序用于由指令执行系统、装置、或设备使用,或者结合指令执行系统、装置、或设备使用的任意装置。在各种实施例中,介质可以包括电、磁、光、电磁、红外、或半导体系统(或装置或设备)或者传播介质。计算机可读存储介质的示例包括半导体或固态存储器、磁带、可移除计算机磁盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。光盘的当前示例包括紧凑盘-只读存储器(⑶-ROM)、紧凑盘-读/写(⑶-R/W)和数字通用盘(DVD)。适合于存储和/或执行程序代码的数据处理系统可以包括通过系统总线直接或间接地连接到存储器元件的至少一个处理器。存储器元件可以包括在程序代码的实际执行期间所采用的本地存储器、大容量储存器、以及提供至少某些程序代码的临时存储以便减小在执行期间必需从大容量存储器检索代码的次数的高速缓冲存储器。输入/输出或I/O设备(包括但不限于键盘、显示器、指点(pointing)设备等)可以直接地或者通过居间(intervening) I/O控制器连接到数据处理系统。网络适配器也可以连接到数据处理系统, 从而使数据处理系统能够通过居间专用或公共网络而连接到其它数据处理系统或远程打印机或存储设备。调制解调器、线缆调制解调器、和以太网卡仅是当前可用的网络适配器类型的一小部分。提供了公开的实施例的先前描述,以使本领域的任何技术人员可以做出或使用所公开的实施例。这些实施例的各种修改对于本领域技术人员是显而易见的,并且这里定义的通用原则可以被应用到其它实施例而不偏离本公开的范围。例如,虽然某些上述实施例可能关于硬件中断,但中断的其它实施例可以包括基于可用的物理存储器的量的“如果则(if then)”或“分支条件(branch conditional)”软件指令。这种条件软件中断可以类似于硬件中断运作,其中,可以停止对当前处理的执行,并且存储器处理代码可以开始执行。硬件中断可以与代码操作异步并且可以在代码中的任一点到来,而程序实施方式可能必须专门使用软件代码指令来检验可用存储器。因此,本公开不意图限于此处示出的实施例,而是符合与由所附权利要求所限定的原则和特性一致的最宽可能范围。
权利要求
1.一种管理存储器的方法,所述方法包括: 启动存储器压缩操作; 响应于第一检测的存储器水平启动第一中断,所述第一中断被配置为影响在处理器上执行的第一处理; 响应于第二检测的存储器水平启动第二中断,所述第二中断被配置为影响在所述处理器上执行的所述第一处理;以及 响应于第三检测的存储器水平启动第三中断,所述第三中断被配置为影响在所述处理器上执行的所述第一处理,其中所述第一、第二和第三检测的存储器水平中的至少一个被所述存储器压缩操作所影响。
2.如权利要求1所述的方法,还包括响应于接收到所述第三中断而中止在多个处理器上执行的多个处理。
3.如权利要求2所述的方法,还包括自动恢复在所述多个处理器上执行的所述多个处理。
4.如权利要求1所述的方法,还包括将所述第二中断配置为比所述第一中断具有对所述第一处理的更严重的影响。
5.如权利要求1所述的方法,还包括将所述第二中断配置为比所述第一中断具有影响所述第一处理的更大可能性。
6.如权利要求5所述的方法,还包括将所述第三中断配置为比所述第二中断具有影响所述第一处理的更大可能性。
7.如权利要求1所述的方法,还包括将所述第二中断配置为比所述第一中断具有对所述第一处理的更不严重的影响。
8.如权利要求1所述的方法,还包括检测所述第一中断、第二中断、和第三中断中的至少一个。
9.如权利要求1所述的方法,还包括使用阈值检测所述第一中断、第二中断、和第三中断中的至少一个。
10.如权利要求1所述的方法,其中所述第一检测的存储器水平大于所述第二检测的存储器水平,并且所述第二检测的存储器水平大于所述第三检测的存储器水平。
11.如权利要求1所述的方法,还包括将所述第一中断发送到被配置为启动增加所述第一检测的存储器水平的中断处理程序。
12.如权利要求1所述的方法,还包括将所述第一中断配置为可屏蔽中断,并将所述第二中断配置为不可屏蔽中断。
13.如权利要求1所述的方法,还包括配置扇区使用阈值寄存器的阈值,其中所述阈值与所述第一检测的存储器水平相关联。
14.如权利要求1所述的方法,还包括在闪存设备中存储溢出数据,以创建空闲存储器。
15.如权利要求1所述的方法,还包括访问扇区使用寄存器,以确定所述第一检测的存储器水平。
16.—种设备包括: 存储器;以及处理器,其被配置为执行访问所述存储器的第一处理,其中所述处理器还被配置为启动存储器压缩操作,响应于第一检测的存储器水平启动生成被配置为影响第一处理的执行的第一中断,响应于第二检测的存储器水平启动生成被配置为影响所述第一处理的执行的第二中断,以及响应于第三检测的存储器水平启动生成被配置为影响所述第一处理的执行的第三中断,其中所述第一、第二、和第三检测的存储器水平中的至少一个被所述存储器压缩操作所影响。
17.如权利要求16所述的装置,还包括执行多个处理的多个处理器,其中所述第一中断、第二中断、和第三中断中的至少一个是机器检验中断,其被配置为中止在所述多个处理器上执行的多个处理。
18.如权利要求16所述的装置,还包括可由所述处理器执行来生成所述第一中断的程序代码,其中所述程序代码存储在独立存储器中。
19.如权利要求16所述的装置,其中所述第二中断被配置为比所述第一中断更影响所述第一处理,并且所述第三中断被配置为比所述第二中断更影响所述第一处理。
20.一种程序产品,包括: 程序代码,用以启动存储器压缩操作,响应于第一检测的存储器水平启动生成被配置为影响第一处理的执行的第一中 断,响应于第二检测的存储器水平启动生成被配置为影响所述第一处理的执行的第二中断,以及响应于第三检测的存储器水平启动生成被配置为影响所述第一处理的执行的第三中断,其中所述第一、第二、和第三检测的存储器水平中的至少一个被所述存储器压缩操作所影响;以及 承载所述程序代码的有形计算机可读介质。
全文摘要
本发明提供了管理存储器的系统和方法。具体方法可以包括启动存储器压缩操作。所述方法还可以包括响应于第一检测的存储器水平启动被配置为影响在处理器上执行的第一处理的第一中断。可以响应于第二检测存储器水平配置第二启动的中断,以影响在所述处理器上执行的所述第一处理,并且可以响应于第三检测的存储器水平启动第三中断,以影响在所述处理器上执行的所述第一处理。所述第一、第二和第三检测的存储器水平中的至少一个被所述存储器压缩操作所影响。
文档编号G06F12/08GK103229149SQ201180056232
公开日2013年7月31日 申请日期2011年9月23日 优先权日2010年11月24日
发明者J.M.博肯哈根, B.阿巴利, D.波夫 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1