在分段操作系统中提供用于页面转换的预转换段的设备和方法

文档序号:6513916阅读:189来源:国知局
专利名称:在分段操作系统中提供用于页面转换的预转换段的设备和方法
技术领域
本发明总体上涉及用于访问计算机存储器的部分的地址转换。具体地,本发明涉及通过提供用于页面转换的预转换段绕过已知的地址转换系统的转换后备缓冲区(TLB)分级结构的机制。
背景技术
随着现代计算设备中更快的处理器和大量的存储器的出现,应用程序开始使用更大的工作集合,也就是,更大量的数据和指令需要被装入系统存储器。更快的处理器能够支持更高级的多路编程,这接下来又导致累积工作集合大小的增加。无论现代计算设备中的物理存储器有什么巨大的增长,存储器地址映射机制的大小,例如转换后备缓冲器(TLB)的大小,都没有多大增加,这是由于硬件成本和其它的约束。
转换后备缓冲器(TLB)是处理器中的一个表,其包含存储器的最近被访问的页面的虚拟地址和真实地址之间的交叉引用(相互对照)。TLB的功能就象主存储器中最近被访问的页的一个“热表”或者说快速查找索引。
当出现高速缓存遗漏(差错)时,数据必须从虚拟存储器中的地址被取出。该虚拟存储器地址必须被转换为真实存储器地址,或者说物理地址。如果所需页面的真实存储器地址不在TLB中,则当用其它手段确定真实地址时导致进一步的延迟。
因为TLB的大小没有随着物理存储器的大小的增加而增加,现代计算设备中的TLB的范围不足以支持大的工作集合。结果,随着工作集合的变大,TLB遗漏率上升。另外,大的工作集合还导致大的页面表占用区域(footprint)。这使得要满足TLB遗漏所需的页面表条目越来越没有可能在最靠近处理器的高速缓存级别中找到。
从而,满足TLB遗漏所花的时间量也增加。对于大存储器的机器来说,TLB遗漏已经成为关键的性能瓶颈。
对TLB等待时间问题提出的解决方案包括增加存储器的页面的大小,例如超页面(superpage),并提供对多页面大小的支持。超页面是被设计为减少转换后备缓冲区(TLB)的数量和映射存储器所需的页面表条目的机制。超页面是用来增加由每一个页面表条目映射的存储器的大的虚拟页面。超页面增加TLB相对覆盖范围,减少TLB遗漏的数量,需要昂贵的(缓慢)的地址转换。
当需要映射大的对象时,超页面是有用的,但是不适用于所有应用。如果应用不要求映射大的对象,则超页面的使用会导致可观的内部碎片化,而不会显著减少转换条目的数量。对多页面大小(包括超页面)提供额外的支持要求对操作系统进行大量的修改,这会对转换机制引入额外的开销。
因此,最好有一种改进的机制来执行虚拟地址到真实地址的转换,减少大存储器系统的页面表所需的大小,同时使执行这样的转换的开销最小化。

发明内容
本发明提供了一种产生用在虚拟到真实地址转换中的预转换段的机制。使用这种机制,被确定为满足一个密度阈值的段被提升到预转换的段的类别。与这些段相关联的页面被移动到存储器的物理上连续的部分,并更新对应于所述段的段表条目,以将该段指示为预转换段,并包括存储器的所述连续部分的真实基地址。这样,为了执行虚拟到真实地址的转换,所要做的只是将所述真实段基地址、页标识符以及页面中的字节偏移连接起来。
当解析该地址时,页标识符提供到存储器的连续部分的偏移,从而标识页面的基本地址,页面中的字节偏移提供了页面中从页面的基本地址的偏移。结果,可以仅根据真实段基地址、页标识符和页面中的字节偏移来标识存储器位置,没有必要使用转换后备缓冲区和页面表分级结构来解决虚拟到真实地址的转换。
除了上述之外,本发明另外的方面提供一种用于预转换段的“懒惰”提升机制。也就是,对于被示为提升到预转换段的标准的段,这样进行提升,使得段内的页面在提升阶段是可访问的。使用本发明,当一个段满足提升标准时,将一个提升请求置于专用内核进程的队列中。当队列中有一个请求时所述专用内核进程被唤醒,并按如下方式处理所述请求。
首先,所述内核进程判断是否存在大小足以存储所述段的存储器的连续部分。如果没有,则延迟该请求的处理,直到存在足够大小的连续存储器部分可用。如果存在大小足以存储所述段的存储器的连续部分,则将所述段的页面一次一个地拷贝到该存储器的连续部分。当拷贝每一个页面时,其对应的页面表条目被更新到该页的新存储器位置的点。这样,在提升阶段使得页面可访问。
当所有页面都被拷贝到存储器的连续部分时,该段的段表条目被更新为包括所述存储器连续部分的真实基地址,并设置预转换段标记字段。之后,可以使用所述段表条目解决对所述段中的页面的访问,而不用必须在页面表或者转换后备缓冲器中进行查找。
阅读下面对优选实施例的详细说明后,本领域的普通技术人员会明了本发明的上述以及其它特征和优点。


在所附的权利要求中说明了据认为是本发明的特征的新颖特征。但是,本发明本身以及其优选的使用方式,以及其目的和优点,可以结合下面对说明性实施例的详细说明以及附图得到最好的理解。附图中图1是可以实现本发明的计算设备的举例的框图;图2是一个示意图,用于说明一种现有技术的方法,用于将虚拟地址转换为用于访问物理存储器中的指令/数据的物理地址;图3图解了对可变大小数据块的分段虚拟地址映射的传统形式;图4图示了本发明的用于预转换段的虚拟到真实地址转换机制的举例的概要图;图5图示了根据本发明的一个实施例,用于将一个段提升为预转换段的处理的一个例子;图6的流程图概要图示了根据本发明的一个实施例,用于将一个段提升为预转换段的举例的操作;图7的流程图概要图示了当进行虚拟到真实地址转换时,本发明的举例的操作;图8示意示了根据本发明的一个实施例,用于预转换段的“懒惰”段提升机制的一个例子;图9的流程图概要图示了当对预转换段进行“懒惰”段提升时,本发明的举例的操作。
具体实施例方式
本发明提供了用于产生预转换段,以绕过用于页表转换的转换后备缓冲器分级结构的设备和方法。因而,本发明在计算设备,比如独立的计算设备、客户计算设备、服务器计算设备等中实现。图1是可以实现本发明的计算设备的一个例子。当然,对图1的举例的计算设备所示的结构可以进行许多修改而不脱离本发明的实质范围,图1不是要对可以实现本发明的计算设备的类型进行任何限制。
见图1,根据本发明的一个实施例,图示了可以实现本发明的数据处理系统的框图。数据处理系统100可以是包括连接到系统总线106的多个处理器102和104的对称多处理器(SMP)系统。或者,也可以使用单处理器系统。连接到系统总线106的还有存储器控制器/高速缓存108,以提供到本地存储器109的接口。I/O总线桥110连接到系统总线206,提供到I/O总线112的接口。存储器控制器/高速缓存108和I/O总线桥110也可以如图所示集成在一起。
存储器控制器/高速缓存108最好包括虚拟到真实地址转换模块150,其目的是将一个或者多个处理器102、104提供的虚拟地址转换为用于访问本地存储器109中的存储器位置的真实地址,或者说物理地址。虚拟到真实地址转换模块150可以利用本地存储器109中的段表160和页表170进行该虚拟到真实地址转换,如后所述。
连接到I/O总线112的外设部件互连(PCI)总线桥114提供到PCI本地总线116的接口。可以向PCI本地总线116连接许多调制解调器。典型的PCI总线应用支持四个PCI扩展槽或者内装连接器。可以通过经由内装连接器连接到PCI本地总线116的调制解调器118和网络适配器120提供到其它计算设备的通信链接。
另外的PCI总线桥122和124对另外的PCI本地总线126和128提供接口,这些PCI本地总线可以支持另外的调制解调器或者网络适配器。这样,数据处理系统100允许连接到多个网络计算机。如图所示,直接或者间接连接到I/O总线112的还可以有存储器映射图形适配器130和硬盘132。
本领域的普通技术人员知道,图1所示的硬件是可以变化的。例如,除了图示的硬件之外,或者取代图示的硬件,还可以使用其它外围设备,比如光盘驱动器等。图示的例子不是要对本发明加以任何结构上的限制。
图1所示的数据处理系统例如可以是运行高级交互执行(AIX)操作系统或者LINUX操作系统的IBM eServer pSeries system(国际商用机器公司(International Business Machines Corporation inArmonk,New York)的产品)。
在本发明的一个优选实施例中,图1所示的计算设备使用虚拟存储系统,其中,应用程序使用虚拟地址访问存储器中的指令和数据,所述虚拟地址必须被解析为真实的存储器地址,以访问真实的存储器位置。因此,本地存储器109利用分段的虚拟地址空间。如前所述,本发明的目标在于改善使用分段虚拟地址空间的系统的地址转换,手段是通过提供一种产生预转换段的机制。
图2的举例的示意解了一种现有技术的方法,用于将虚拟地址转换为物理地址以访问物理存储器中的指令/数据。如图2所示,虚拟地址200包括页标识符210和页面中的偏移220。虚拟地址页标识符210是用页表230索引的。页表230包括物理页面地址240和表示映射是否有效的有效位250。如果设置了有效位,则页表提供对应的物理页号,也就是,页面在存储器中的起始地址。如果没有设置有效位,则该页面在存储器中不存在。物理地址240包括与页面中的虚拟地址偏移220相拼接(连接,concatenate)的物理页面基地址260。
图3图解了对于可变大小数据块的分段虚拟地址映射的传统形式。在分段虚拟存储器中,除了页标识符210和页面中的偏移220之外,虚拟地址还包括段标识符310,该段标识符由一个段表320索引,段表包括一个有效位330、页表地址340和页表大小350。虚拟地址页标识符210和段表页表大小350被提供给一个大小检查函数360。该大小检查函数360检查页ID 210和页表大小350,以生成由页表地址340所标识的页表中的偏移。大小检查函数360的输出以及作为页表基地址的页表地址340由页表370索引。根据该页表,识别物理页面基地址380或者真实页号。然后将页面中的偏移220与物理页面基地址380拼接起来,产生物理地址390。
如前所述,本发明提供了一种机制来绕过用于预转换段的如图3所示的页表分级结构。通过研究运行各种应用程序的各种计算设备上的页表,已经观察到,对于大量的段(在所进行的试验中几乎占99%),段的整个地址范围被映射到页表中。也就是,段中的每一个页面存在于存储器中。另外,几乎所有这些段有完全连续的页面构成。在所进行的试验中,表现出这些特点的段总共占所访问的页面的大约87%。
鉴于这些发现,本发明的基本前提是完全避免不得不访完全用于具有这些特点的段的转换后备缓冲器/页表分级结构。这可以这样实现将属于这样的一个被整体访问的段的所有页面分配到一个连续的物理存储器中。所述段的连续存储区的基地址可以被存储为用于该段的段表条目中的一个字段。这样,对段内所有页面的访问可以只通过段表条目进行转换,而完全不需要访问TLB/页表分级结构。这样,实质上,对于需要经过传统的转换机制的段,释放了当前在TLB和页表中使用的空间的87%。这导致TLB丢失更少,页表占用区域更小。这样,当出现TLB丢失时,所需的页表条目更有可能在高速缓存中找到。
另外,通过标识可以被整体访问的段,并提供仅根据段表条目进行转换的机制,本发明减少了执行转换本身所花的时间,因为不在需要执行这些段的TLB查找和/或页表查找。这样,从TLB分级结构中有效地取出了可以被整体访问的段,从而,对于需要使用标准TLB分级结构转换机制的其它段来说,释放了TLB分级结构中的空间。这允许更大的存储系统具有转入存储器中的更大的工作集合,从而减少TLB丢失。
图4图解了用于预转换段的本发明的虚拟到真实地址转换机制的举例的概要图。如图4所示,用于访问存储器位置的处理器提供虚拟地址410。该虚拟地址410包括段标识符420、页标识符430和页面中的字节偏移440。
当本发明的虚拟到真实地址转换机制接收到虚拟地址410时,首先在段表450中查找段标识符420,以确定该段是否是一个预转换段。如图所示,段表450包括段表条目(STE),段表条目包括预转换标记字段460、真实段基地址字段470,以及页表地址字段480。如果支持可变大小页面,则可以如图3所示提供额外大小字段。另外,在备选实施例中,可以不是单独的预转换标记字段460和真实段基地址字段470,而将这两个字段合并,使得,当真实段基地址字段470中存在预定值比如-1时,就判定该段不是预转换段,如果真实段基地址字段470的值不是-1,则该值为该段的实际的真实基地址。
所述预转换标记字段460存储的值标识对应的段是否经过了预转换。如果一个段已经按照后面描述的方式被整体装入真实存储器的一个连续部分,则该段就就是经过了预转换的。所述真实段基地址字段470存储存储器的该连续部分的真实基地址。页表地址字段480与图3所描述的现有技术相同,在所述段不是预转换段时被使用。
可以根据段标识符420在段表450中查找段,并确定在预转换标记字段460中所设置的值,从而判断该段是否是预转换段。例如,如果该字段460是单个比特,并且在段被预转换时设置它,则如果在该段表中进行查找时确定设置该比特,则可以确定该段是一个预转换段。
如果该段是一个预转换段,则从字段470取出该段的真实基地址。然后确定对应于虚拟地址410的存储器位置的真实地址490,或者说物理地址,也就是真实段基地址470、页标识符430以及页面440中的字节偏移的拼接。
在解析该地址时,向计算设备的转换硬件提供一个额外的加法器,用于对真实段基地址470和页标识符430作加法,页标识符是真实基地址470所标识的段中的偏移。传统的转换硬件然后将所述字节偏移加到页面440中,以产生整个真实地址,包括真实段基地址470、页标识符430和页面440中的字节偏移的加和。本质上,使用这种地址转换方案,转换硬件是这样标识存储器位置确定标识真实存储器的页面的段中的偏移,然后确定标识实际的真实存储器位置的页面中的偏移。
如上所述,本发明对可以被整体访问的段进行操作。这样,本发明包括一种用于标识可以被整体访问的段(相对于不能被整体访问的其它段)的机制。这些段的标识是基于段的“密度”,所谓“密度”是指该段中存在于存储器中、从而具有有效页表条目的所有页面的百分比,也就是,对这些页面设置了用于页表条目的有效位。从该定义,可以清楚,那些密度为1的段(也就是,该段中的所有页面都在存储器中,并且具有有效的页表条目)可以使用所述段表标识符被整体访问。
尽管密度“1”可以确保在对段进行预转换时没有存储空间的浪费,也就是,段中的所有页面都将被或者已经被访问,预转换的过程不会装入不会或者没有被访问的页面,但是没有必要坚持密度必需为1才能获得本发明的优点。也就是,通过允许分配密度小于1的段作为预转换段,在地址转换成本(例如CPU时间)方面的节约量可以提高。
使用小于1的密度会导致某种程度的“存储空间浪费”,因为段中的某些页面没有实际被访问,也不能被访问。但是,通过规定一个可调的阈值密度,并且只分配超过该可调阈值密度的段作为预转换段,可以限制存储空间浪费的量,同时实现转换成本的节省。另外,预转换段中的“空洞”,也就是预转换段中实际上还没有被访问的页面,不一定表示“浪费的存储空间”,因为它们可能实际上包含可以在将来被访问的页面(从而潜在地减少了页面错误)。这样,与其它的现有技术(比如超页面(superpages))相比,在本发明中,浪费存储空间的问题实际上是一个小得多的问题。在超页面技术中,内部分段造成存储空间浪费,并且没有约束这种存储空间浪费的机制。
为了标识可以作为预转换段被分配的段,本发明使用一种“提升”机制,其中,当段的密度被确定为超过一个可调阈值密度时,将这样的段“提升”到预转换段的级别。所述可调阈值密度的设置可以基于任何数量的标准,取决于具体的实现,这些标准包括但不限于段的类型、基于每一个处理(类似于段保护域)或者基于全系统,等等。所述可调阈值密度最好由虚拟到真实地址转换模块150根据针对具体的实现建立的标准来设置和存储。
为了确定某个段是否超过了所述可调阈值密度值,要监视段的密度。这可以通过计算被访问的段页面数与在段的访问范围(该信息可以从该段的相应段表条目获得)内定义的总页数的比值来实现。每当出现页面错误或者进行页表条目的映射时,重新计算或者调整所述密度,从而保持该比值计算值为最新的。
例如,当发生页面错误或者当映射一个页表条目时,对于对应的段,将有效页表条目数,也就是设置了有效位的页表条目数,增加1(建立的新的有效页表条目的数量)。该数量然后被除以该段的访问范围的页面总数。得到的比值然后与可调密度阈值进行比较,以确定是否满足或者超过所述可调阈值密度。
当一个段达到规定的可调阈值密度时,或者超过规定的可调阈值密度时,该段被提升为预转换段。图5图解了该提升过程的一个例子。
如图5所示,在判断了是否达到或者超过所述可调阈值密度之后,将该段的地址范围内的所有页面510移动到存储器520的一个物理上连续的部分。如果可调阈值密度小于1,则填充该段中的“空洞”。也就是,使达到可调阈值密度时存储器中不存在的段的页面从存储设备530进入存储器。这样,整个段就被分配到存储器520的一个物理上连续的部分中。
然后将对应于该段的段表条目540更新,以设置所述预转换标记字段550,来标识该段要被预转换。另外,更新所述段表条目540,使之包括真实段基地址字段560中的真实段基地址,该段基地址对应于存储该段的物理存储器的所述连续部分的开始。在一个备选实施例中,字段550和560被合并起来,更新所述段表条目540的处理可以只涉及用一个地址值来替换真实段基地址字段560中的表示非预转换段的值。
这样,对预转换段中的页面中的访问不需要通过TLB和页表分级结构来将虚拟地址转换为真实地址。要做的只是由虚拟到真实地址转换模块查找段表中的真实段基地址,将页标识符和页面中的字节偏移拼接到真实段基地址上,并标识存储位置的真实地址。如前所述,使用转换硬件中的另外的加法器,页标识符对所述真实段基地址所标识的段提供一个偏移,页面中的字节偏移标识由所述段中的偏移所标识的页面内的存储器位置。
由于本发明的使用,对应于被指定为预转换段的段内的页面的TLB中的条目不再为了地址转换的目的而被访问。先前由这些条目占据的空间就能够重新用于不属于预转换段的页面,从而极大地减少了TLB丢失的数量。由于属于预转换段的页面不再需要在页表中维持有效条目,页表的占用区域也大大减小,整个页面更容易适应TLB和高速缓存。结果,减少了TLB和高速缓存丢失。
由于所进行的研究表明绝大多数段都可以被归入预转换段,如果使用小于1的可调密度阈值,则可以有更多的段可以被归入此类,结果可以获得更好的TLB覆盖率,使得相关页表条目在高速缓存中的概率更高,并且,由于TLB命中率得到提高并且TLB丢失处理次数减少,地址转换开销显著降低。另外,如果发生TLB丢失,由于页表占用区域减小,则页面转换条目组更有可能在高速缓存分级结构中处于更高层次。
所述可调密度阈值允许在存储空间浪费和使用本发明获得的上述好处之间折衷。在存储空间丰富的计算机系统中,所述阈值密度可以设置为较低的值(小于1.0),以允许更多的段被归类为预转换段。如果存储空间不丰富,则可以将阈值密度设置为1.0,从而消除存储空间的浪费,而仍然获得所述改进的转换机制的好处。另外,所述密度阈值可以在运行时改变,从而允许根据系统当前的存储空间需求来进行控制。
图6、7和9的流程图概括了本发明的举例的操作。可以理解,流程图的每一个方框,以及流程图中的方框的组合,可以用计算机程序指令来实现。这些计算机程序指令可以被提供给处理器或者其它可编程数据处理设备,从而形成一个机器,使得在所述处理器或者其它可编程数据处理设备上执行的指令形成用于实现所述流程图方框中所说明的功能的装置(手段)。这些计算机程序指令也可以被存储在计算机可读的存储器或者存储介质中,能够指令处理器或者其它可编程数据处理设备按照特定的方式工作,从而,存储在计算机可读存储器或者存储介质中的指令构成一种制品,其包括实现所述流程图方框中描述的功能的指令装置(手段)。
因此,流程图中的方框支持用于执行规定功能的装置的组合、用于执行规定功能的步骤的组合以及用于执行规定功能的程序指令装置。还可以理解,流程图的每一个方框,以及流程图中的方框的组合,可以由执行规定的功能或者步骤的专用的基于硬件的计算机系统实现,或者由专用硬件和计算机指令的组合来实现。
图6的流程图概括了根据本发明的一个实施例,将一个段提升为预转换段的举例的操作。如图6所示,操作的开始是判断是否发生了请求检查段以确定是否要将该段提升为预转换段级别的事件(步骤610)。如前所述,该事件可以是一个页面错误或者被映射的页表条目等。如果没有发生这样的事件,则操作结束。如果发生了这样的事件,则确定段地址范围(步骤615)。
标识所述页表中对应于所述段地址范围的页表条目(步骤620),并累计有效的页表条目数量的计数(步骤625)。另外,还累计页表条目总数的计数(步骤630)。然后将有效条目数除以段范围内的页表条目总数(步骤635),所得到的比值与一个可调密度阈值进行比较(步骤640)。
判断该比值是否等于或大于所述可调密度阈值(步骤645)。如果不是,则操作结束。如果该比值大于或等于所述可调密度阈值,则对该段分配存储器的一个连续部分(步骤650)。然后将该段地址范围内的页面移动到存储器的该物理连续的部分(步骤655)。如前所述,这可以包括如果页面不在存储器中(如果可调密度阈值小于1),则从存储设备取出页面,从而填充所述段中的空洞。
然后,更新段表条目中对应于该段的预转换段标记字段,以反映出该段是预转换段(步骤660)。然后更新段表条目中的真实段基地址字段,以使之包括存储器的所述物理连续部分的真实基地址(步骤665)。如前所述,在一个备选实施例中,只有真实段基地址字段需要更新,以指示所述真实段基地址,因为在该字段中非预转换段的值会是-1。然后结束操作。
图7的流程图概述了当执行虚拟到真实地址转换时,本发明的举例的操作。如图7所示,操作的开始是接收用于转换的虚拟地址(步骤710)。然后使用段标识符进行段表查找(步骤720)。然后评估所述预转换段标记字段中的值,或者所述真实段基地址字段中的值,以确定其是否表示该段是预转换段(步骤730)。如果该段是预转换段,则所述真实地址被确定为段表条目中的真实段基地址、页标识符和页面中的字节偏移的拼接(步骤740)。如果该段被确定为不是预转换段,则按照已知的方式进行页表查找(步骤750),将所述真实地址确定为真实页号和页面中的字节偏移的拼接(步骤760)。然后结束操作。
这样,本发明提供了一种机制,避免了与使用转换后备缓冲器(TLB)和页表分级结构的虚拟到真实地址转换相关的瓶颈。本发明减小了TLB和页表的占用区域,并提高了对大多数段进行转换的速度。这极大地提高了计算设备在TLB和页表使用以及访问次数方面的效率,因为转换的速度得到提高,并且减少了TLB和高速缓存丢失的数量。
如前所述,本发明的各个方面提供了一种将存储器的段提升为预转换段状态的机制,在预转换段状态中,执行虚拟到真实地址转换所需的只是段表。上面所描述的机制包括一个可调参数,用于标识哪些段满足提升到预转换段状态的阈值标准。当将一个段提升到预转换段状态时,所有段的存储页面被拷贝到物理存储器的一个连续部分,在该段的段表条目中建立单个转换条目。转换条目包含该段的真实基地址。
尽管这种机制对已知的虚拟地址转换机制进行了改善,但是仍然有这样的可能性类似于与使用超页面的已知机制相关的问题,本发明也可能会受到长的页面错误处理等待时间的影响。对于超页面,当页面首次被访问从而需要被装入存储器时,就会出现所述长的页面错误处理等待时间。在能够访问页面中的数据之前,过程需要等待整个超页面被装入。
对于预转换段,当选择一个段以提升到预转换段时,会发生长的页面错误处理等待时间。此时,所述段需要拷贝到物理存储器的一个连续部分。拷贝开销与段的大小成比例。在此提升阶段,对段内页面的任何访问都必需等待段拷贝完成和新转换的建立。这样,在段提升阶段,一个处理可能受到长的访问等待延迟的影响。
在超页面的情况下,对于所遭受的长的等待时间实在没有解决之道,因为超页面情形中的基本传输大小与超页面的大小是相同的。但是,对于预转换段,可以提供一种机制,该机制事实上可以缩短在段提升阶段期间处理的访问等待时间。
使用本发明,通过提供一个“懒惰”提升策略,可以缓解访问正在经过段提升阶段的段内的页面时处理过程的长时间等待,在所述“懒惰”提升策略中,被提升的段的页面被一个后台处理拷贝到其新位置。对应于所述页面的页表条目被重新映射到存储器中该页面的新位置。
当段内的所有页面都已被拷贝之后,写入段表中的段转换条目,并将该段标记为预转换段。同时,在提升阶段中,处理过程可以继续访问段的页面,因为它们具有有效的页表条目。这样,在能够访问被提升的段中的页面之前,处理过程不需要等待整个段被拷贝,从而避免了太长的页面错误处理等待时间。
图8是一个举例的示意图,根据本发明的一个实施例,图示了预转换段的懒惰段提升机制的一个例子。在此实施例中,提供了一个专用内核处理(kproc)810,其负责维护段提升请求。当选择提升一个段时,如前所述,用kproc 810对请求排队,从而请求提升相应的段。请求队列820可以是,例如,先进先出(FIFO)队列,或者对尺度大的段赋予更高优先级的优先队列,等等。当队列820中没有请求时,kproc 810进入睡眠状态,当有请求被加入队列820时,其被唤醒。
当kproc 810维护队列820中的请求时,kproc 810首先分配物理存储器830的一个连续部分用于存储在该请求中访问的段。如果不能找到连续的物理存储器的大小适当的一部分来存储段,则推迟该提升请求,例如将其推回到请求队列820中,直到在连续的物理存储器中有适当大小的部分可用。
一旦有物理存储器830的连续部分可用,则将其分配给所述段,然后将段的每一个页840-860拷贝到存储器830的该区域。在存储器中不存在的页面(例如,如果可调阈值段密度被设置为小于1.0)被调页到物理存储器830的所分配的部分。当拷贝每一个页面时,页表870中其对应的页表条目(PTE)被重新映射到物理存储器830中它的新位置。当所有页面840-860被拷贝到物理存储器830的所分配的部分中时,然后就更新对应于该段的段表880中的段表条目,使之包括物理存储器830的所分配部分的真实基地址,并将该段设置为预转换段状态。
在专用kproc 810的操作期间,也就是在提升阶段期间,对段内页面840-860的访问可以继续得到满足,因为这些页面在页表870中具有有效的页表条目。如果页面已经被拷贝,则其页表条目指向其在物理存储器830的所述分配部分中的新位置。如果页面没有被拷贝,则其页表条目指向其在存储器中的初始位置。如果访问正在拷贝中的页面,则该访问必需等待,直到在满足该访问之前完成页面拷贝。可以使用诸如优先加速(priority boosting)等方案来确保尽早满足所述访问。这样,任何页面访问的等待时间都不会超过基本页面大小的页面错误等待时间。
图9的流程图概括了对预转换段执行懒惰段提升时本发明的举例的操作。如图9所示,操作的开始是判断在队列中是否有段提升请求(步骤910)。如果队列中没有段提升请求,则操作返回步骤910等待,直到队列中有段提升请求。如果队列中有段提升请求,则获取队列中的下一个请求(步骤915)。
然后判断存储器是否存在大小足以存储所述段的连续部分(步骤920)。如果没有,则对提升所述段的请求重新排队以便以后处理(步骤925)。如果存储器存在足够大小的连续部分,则将其分配用于所述段的存储(步骤930)。
然后将段地址范围内的下一个页面移动到存储器的所分配的连续部分(步骤935)。该页移动之后,更新该页的页表条目以指向该页在存储器的所述分配的连续部分中的新位置(步骤940)。然后判断段地址范围内的所有页面是否都已移动(步骤945)。若否,则操作返回步骤935,将下一个页面移动到存储器的连续部分。如果段的所有页面都已移动,则在段表中设置该段的预转换段标记字段(步骤950),并将存储器的该连续部分的真实基地址设置为该段的段表条目中的真实段基地址字段中的真实段基地址值(步骤955)。然后结束操作。
这样,本发明提供了一种对满足提升到预转换段的标准的段的“懒惰”提升机制。这种预转换段的“懒惰”提升机制相对于现有技术中使用超页面具有若干优点,其中最重要的是减少了页面错误处理等待时间。当一个应用程序首次访问一个超页面并导致页面错误时,在能够满足所述访问之前整个超页面需要被装入存储器。由于超页面倾向于比较大,这就会导致较长的页面错误处理时间。如上所述,当对预转换段使用懒惰页面提升时,即使在提升阶段中,对段内页面的访问也可得到满足,因为页面的拷贝是一次一页,并且每一个被拷贝的页面在页表中也具有其新物理地址的条目。如果要访问正在拷贝中的页面,则在满足该访问之前,进行该访问的处理过程必需等待该页面拷贝完成。但是,该等待时间只是与基本页面大小(例如对于AIX/PowerPC来说为4k)成比例,则比超页面的等待时间要短得多。
重要得是要注意到,上面在全功能数据处理系统的上下文中对本发明进行了说明,本领域的普通技术人员知道,本发明的处理过程能够以指令的计算机可读介质的形式以及多种形式加以分布,无论实际用于进行所述分布的信号承载介质的具体类型如何,本发明都同等适用。计算机可读介质的例子包括可记录介质比如软盘、硬盘驱动器、RAM、CD-ROM、DVD-ROM,以及传输介质比如数字和模拟通信链路、使用诸如射频和光波传输等传输形式的无线或者有线通信链路。计算机可读介质可以采用编码格式的形式,所述编码格式可以被解码以实际用于具体的数据处理系统中。
上面对本发明的描述是为了解释和说明的目的,不是要穷尽本发明或者将本发明限制于所公开的形式。对于本领域普通技术人员来说,许多修改和变型都是显而易见的。上面对实施例的选择和描述是为了更好地解释本发明的原理和实际应用,并使得本领域的其它普通技术人员能够理解本发明的进行了适合所能想到的具体用途的各种修改之后的各种实施例。
权利要求
1.在数据处理设备中进行虚拟到真实地址转换的方法,包括接收用于访问存储器的一个位置的虚拟地址,其中该虚拟地址包括一个段标识符;根据该段标识符进行段表查找,找出一个段表条目;根据所述段表条目判断该段是否是一个预转换段;如果所述段是一个预转换段,则根据在所述段表条目中所标识的真实段基地址产生用于访问对应于所述虚拟地址的存储器位置的真实地址。
2.如权利要求1所述的方法,其中,如果所述段不是一个预转换段,则该方法还包括在转换后备缓冲器和页表中的至少一个中查找所述虚拟地址,从而产生一个用于访问对应于所述虚拟地址的存储器位置的真实地址。
3.如权利要求1所述的方法,其中,根据所述段表条目判断所述段是否是预转换段的步骤包括判断所述段表条目中的一个预转换段标记字段是否具有表示所述段为预转换段的特定值。
4.如权利要求1所述的方法,其中,根据所述段表条目判断所述段是否是预转换段的步骤包括判断真实段基地址字段中是否存储有一个真实基地址。
5.如权利要求1所述的方法,其中,根据所述真实段基地址产生用于访问对应于所述虚拟地址的存储器位置的真实地址的步骤包括将所述段的段表条目中标识的真实段基地址、所述段内的一个页面的页标识符以及所述页面中的字节偏移拼接起来。
6.如权利要求5所述的方法,其中,所述真实段基地址和所述页标识符的拼接由转换硬件中的第一加法器完成,其中,所述真实段基地址和所述页标识符的拼接结果与所述页面中的字节偏移的拼接由转换硬件中的第二加法器完成。
7.如权利要求1所述的方法,其中,如果所述段可以被整体访问,则所述段为预转换段。
8.如权利要求1所述的方法,其中,如果所述段的密度大于一个可调的阈值密度,则该段是预转换段。
9.在数据处理设备中进行虚拟到真实地址转换的计算机可读介质中的计算机程序产品,包括第一指令,用于接收用于访问存储器的一个位置的虚拟地址,其中该虚拟地址包括一个段标识符;第二指令,用于根据该段标识符进行段表查找,找出一个段表条目;第三指令,用于根据所述段表条目判断该段是否是一个预转换段;第四指令,用于如果所述段是一个预转换段,则根据在所述段表条目中所标识的真实段基地址产生用于访问对应于所述虚拟地址的存储器位置的真实地址。
10.如权利要求9所述的计算机程序产品,其中,根据所述段表条目判断所述段是否是预转换段的第三指令包括判断所述段表条目中的一个预转换段标记字段是否具有表示所述段为预转换段的特定值的指令。
11.如权利要求9所述的计算机程序产品,其中,根据所述段表条目判断所述段是否是预转换段的第三指令包括判断真实段基地址字段中是否存储有一个真实基地址的指令。
12.如权利要求9所述的计算机程序产品,其中,根据所述真实段基地址产生用于访问对应于所述虚拟地址的存储器位置的真实地址的第四指令包括将所述段的段表条目中标识的真实段基地址、所述段内的一个页面的页标识符以及所述页面中的字节偏移拼接起来的指令。
13.如权利要求9所述的计算机程序产品,其中,如果所述段可以被整体访问,则所述段为预转换段。
14.如权利要求9所述的计算机程序产品,其中,如果所述段的密度大于一个可调的阈值密度,则该段是预转换段。
15.在数据处理设备中进行虚拟到真实地址转换的设备,包括接收用于访问存储器的一个位置的虚拟地址的装置,其中该虚拟地址包括一个段标识符;根据该段标识符进行段表查找以找出一个段表条目的装置;根据所述段表条目判断该段是否是一个预转换段的装置;如果所述段是一个预转换段,则根据在所述段表条目中所标识的真实段基地址产生用于访问对应于所述虚拟地址的存储器位置的真实地址的装置。
16.如权利要求15所述的设备,其中,根据所述段表条目判断所述段是否是预转换段的装置包括判断所述段表条目中的一个预转换段标记字段是否具有表示所述段为预转换段的特定值的装置。
17.如权利要求15所述的设备,其中,根据所述段表条目判断所述段是否是预转换段的装置包括判断真实段基地址字段中是否存储有一个真实基地址的装置。
18.如权利要求15所述的设备,其中,根据所述真实段基地址产生用于访问对应于所述虚拟地址的存储器位置的真实地址的装置包括将所述段的段表条目中标识的真实段基地址、所述段内的一个页面的页标识符以及所述页面中的字节偏移拼接起来的装置。
19.如权利要求15所述的设备,其中,所述拼接装置包括转换硬件中的第一加法器和第二加法器,其中,所述真实段基地址和所述页标识符的拼接由转换硬件中的第一加法器完成,所述真实段基地址和所述页标识符的拼接结果与所述页面中的字节偏移的拼接由转换硬件中的第二加法器完成。
20.如权利要求15所述的设备,其中,如果所述段的密度大于一个可调的阈值密度,则该段是预转换段。
全文摘要
本申请涉及在分段操作系统中提供用于页面转换的预转换段的设备和方法。具体地,提供了一种产生用在虚拟到真实地址转换中的预转换段的机制,其中,被确定为满足一个密度阈值的段被提升到预转换的段的类别。与这些段相关联的页面被移动到存储器的一个连续部分,并更新对应于所述段的段表条目,以将该段指示为预转换段,并包括存储器的所述连续部分的真实基地址。在一个实施例中,当移动每一个页面时,更新其页表条目以指向该页的新位置,使得在将所述段提升为预转换段的期间该页仍能被访问。这样,可以通过将所述真实段基地址、页标识符以及页面中的字节偏移连接起来进行虚拟到真实地址的转换。
文档编号G06F12/10GK1658172SQ20051000642
公开日2005年8月24日 申请日期2005年1月31日 优先权日2004年2月19日
发明者江绵宙, 苏加查·卡什亚普 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1