CN102473091A - 使用聚合的小页面的扩展的页面大小 - Google Patents
使用聚合的小页面的扩展的页面大小 Download PDFInfo
- Publication number
- CN102473091A CN102473091A CN2010800301333A CN201080030133A CN102473091A CN 102473091 A CN102473091 A CN 102473091A CN 2010800301333 A CN2010800301333 A CN 2010800301333A CN 201080030133 A CN201080030133 A CN 201080030133A CN 102473091 A CN102473091 A CN 102473091A
- Authority
- CN
- China
- Prior art keywords
- page
- size
- processor
- super
- operating system
- 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.)
- Granted
Links
- 230000007246 mechanism Effects 0.000 claims abstract description 28
- 238000013519 translation Methods 0.000 claims abstract description 26
- 230000004044 response Effects 0.000 claims abstract description 10
- 238000000034 method Methods 0.000 claims description 33
- 230000014616 translation Effects 0.000 claims description 25
- 230000008034 disappearance Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 description 19
- 238000006243 chemical reaction Methods 0.000 description 7
- 230000002093 peripheral effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000007689 inspection Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 2
- 241001484259 Lacuna Species 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000006116 polymerization reaction Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
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
-
- 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
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
- G06F9/26—Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
-
- 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
- G06F2212/652—Page size control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种包括虚拟存储器分页机制的处理器。所述虚拟存储器分页机制使在处理器上运行的操作***能使用第一大小和第二大小的页面,所述第二大小大于所述第一大小。所述机制进一步使所述操作***能使用包括第一大小的两个或更多个连续页面的超级页面。超级页面的大小小于所述第二大小。所述处理器还包括一个页面表,所述页面表包括用于在每一个超级页面中所包括的所述页面中的每一个的单独项。所述操作***使用单一的虚拟地址来访问每一个超级页面。所述机制将转换后备缓冲器TLB中的单项解释为指包括与响应检测到与TLB中的所述项有关的超级页面使能指示器有效的超级页面对应的一系列页面的存储器区。
Description
发明背景
技术领域
本发明涉及计算机处理器,特别是涉及虚拟存储器环境中的页面转换。
背景技术
现代计算机***利用虚拟存储器来提高性能。例如,为了在利用更大容量的硬盘存储的同时有效地利用存储器,处理器经常集成虚拟寻址机制(mechanism),其中虚拟地址是指比存储器的物理尺寸大许多的地址空间。虚拟寻址机制通常是通过处理器硬件和操作***软件的组合来执行的。在实践中,大的虚拟地址空间通常是分成网页。每当处理器读或写虚拟存储器地址时,专门的处理器硬件就将地址转换成位于物理存储器上的页面(有时也称为帧)上的物理位置或存储在磁盘上的页面(或帧)的索引。如果索引是存储在磁盘上的帧,操作***就将该帧移动到物理存储器中,如果有必要,还交换出最近未访问的帧。
使用分页的地址转换通常涉及称为页转换表的系列的数据结构。要将虚拟地址转换成物理地址,虚拟地址的低阶位可被直接映射到物理地址,而虚拟地址的高阶位可用于索引到页面转换表以找到物理地址的高阶位。在层次页面表执行中,处理器可将虚拟地址的高阶位分成一个或多个位域,每一个对应到不同层次的页面转换表的等级。将虚拟地址映射到物理地址的页转换表中的项一般可简称为页面表项(PTE)。
通过将PTE缓存在称为转换后备缓冲器(TLB)的CPU缓存中,虚拟地址转换的速度可能会增加。TLB可以有固定数量的插槽来存储PTE。由于访问TLB项一般比使用页面转换表进行地址转换的速度快,所以TLB的大小和涵盖可能是***整体性能的重要指标。TLB的涵盖取决于每一个TLB项所代表的页面的大小。常见的电脑架构只提供了虚拟存储器的页面大小的粗略选择。例如,著名的x86-64架构提供大小为4KB、2MB和1GB的页面。较小的页面大小减少了TLB的有效容量,增加了TLB访问的未命中率。不幸的是,非常大的页面大小往往会造成不需要大型数据集的应用程序的存储器配置效率低下。鉴于上述考虑,可能需要通过改善TLB未命中率和/或增加TLB有效容量而同时保持有效的存储器使用以提高***性能的***和方法。
除了上述考虑外,尽管改善TLB未命中率和容量可能提供一些增强的功能,每当引入增强的功能时还使处理器能继续运行现有的软件可能是可取的。因此,继续支持传统的分页模式的处理器增强可能是可取的。
发明概述
公开了包括虚拟存储器分页机制的处理器的各种实施例。虚拟存储器分页机制使在处理器上运行的操作***能使用第一大小和第二大小的页面。第二大小大于第一大小。虚拟存储器分页机制进一步使操作***能形成包括第一大小的两个或更多的连续页面的一系列页面的超级页面。超级页面的大小小于第二大小。该处理器还包括页面表,所述页面表包括用于在每一个超级页中所包括的所述两个或更多的连续页面中的每一个的单独项。虚拟存储器分页机制使操作***使用单一的虚拟地址来访问每一个超级页面。所述处理器还包括转换后备缓冲器(TLB)。虚拟存储器分页机制将TLB中的单项解释为指包括与响应检测到与TLB中的所述项有关的超级页面使能指示器有效的超级页面对应的一系列页面的存储器区。在一个实施例中,超级页面的大小是64KB。
在一个实施例中,虚拟存储器分页机制响应检测到与TLB中的项有关的超级页面使能指示器是有效的,将所述页面表中的项解释为指包括超级页面的一部分的存储器区。在进一步的实施例中,超级页面使能指示器是可软件设置的。虚拟存储器分页机制响应于检测到所述页面表中的至少两个项中的至少一个项缺失或包括与所述页面表中的至少两个项中的其他项的属性不一致的属性而发出页面错误。
在再进一步的实施例中,所述虚拟存储器分页机制同时且独立地使超级页面在处理器上操作的第一操作***和第二操作***中的一个或两个上使用。在再进一步的实施例中,第一操作***是虚拟环境中的客机操作***,配置为使用第一页面表将客机地址空间中的虚拟地址转换为客机地址空间的物理地址,第二操作***是虚拟环境中的主机操作***,配置为使用第二页面表将客机地址空间中的物理地址转换为主机地址空间的物理地址。在再进一步的实施例中,虚拟存储器分页机制使操作***能使用两个或两个以上的不同的超级页面大小的超级页。在此实施例中,每个超级页面的大小等于两个或多个连续的、对齐的第一大小的页面的大小,每个超级页面的大小小于第二大小。
考虑下面的说明和附图,这些和其他的实施例将变得明显。
附图说明
图1是可包含扩展的页面大小的计算机***的一个实施例的概略框图。
图2示出了可以通过处理器在***中使用的地址转换***的一个实施例。
图3示出了将页面表的项或TLB中的项映射到存储器的一个实施例。
图4示出了控制寄存器中包含的、表示支持扩展的页面大小的位域的一个实施例。
图5示出了模型特定寄存器(MSR)中包含的位域的一个实施例。
图6示出了可由操作***用来定义超级页面的数据结构项的一个实施例。
图7示出了可由处理器执行访问超级页面的分页流程的一个实施例。
图8示出了可用于检查从支持超级页面的处理器中的分页表中读取的超级页面项的有效性的流程的一个实施例。
图9示出了可用于配置处理器使用超级页面的流程的一个实施例。
虽然本发明可进行各种修改和以其他形式进行,但在附图中以示例的方式示出了具体的实施例,在本文进行了详细说明。然而,应理解,附图及其详细的说明不是为了将本发明限制于所公开的特定形式,与此相反,本发明包括在所附的权利要求书所定义的本发明的精神和范围内的所有修改、等同物及替代物。
详细说明
图1是可包含扩展的页面大小的计算机***100的一个实施例的概略框图。处理器110被示为与***设备120和物理存储器130联接。***设备120可包括存储设备170、网络接口174和可移动介质177。所示的实施例是典型的通用计算机***。然而,所示的组件,特别是处理器110,可能会在各种各样的设备中发现,诸如控制***、家电、汽车、消费类电子产品之类或事实上采用计算和存储或处理数据的任何设备中发现。
处理器110是可通过提供地址转换功能支持虚拟存储器的各种处理器的任何一个的说明。处理器110可包括与I/O接口160和2级(L2)高速缓存器150联接的一个或多个核140。核140可包括联接到L2高速缓存器150的一级(L1)高速缓存器145。物理存储器130通常包括RAM,但也可以是联接到处理器110和提供对数据的相对快速的访问以处理在处理器110上的执行的任何类型的数据存储。与此相反,存储设备170一般可存储比物理存储器130较大的量的数据,有较慢的访问时间。常见的存储设备包括硬盘、软盘、光盘或任何其他合适的数据存储设备。
根据计算机***100的预定用途,其他各种***设备120可通过I/O接口160联接到处理器110。例如,***设备120可包括键盘、显示器、扬声器、磁盘驱动器、输入/输出端口等。存储器130、***设备120和处理器110之间的互连可包括地址总线和数据总线,并可以包括共享总线、开关结构或在计算机***中将组件联在一起的任何其他合适的连接***。在替代实施例中,计算机***100可包括多于或少于两个级别的高速缓存器。
在操作过程中,当核140需要第一次访问页面数据时,相应的数据可从存储设备170移动到存储器130。核140可随后将页面的一个或多个部分(例如,高速缓存线)从存储器130移动到L1高速缓存器145。由于需要额外的高速缓存线,它们也可以被移动到L1高速缓存器145。如果L1高速缓存器145中没有足够的空间,就可将高速缓存线移动(驱逐)到L2高速缓存器150。类似地,当L2高速缓存器150已满时,可将高速缓存线移至存储器130,当存储器130已满时,可将页面移至存储设备170。确定当特定的高速缓存器已满时移动哪一部分页面的技术在本领域是众所周知的。这些技术的每一个都可被称为高速缓存器替换策略或高速缓存器算法。
图2示出了可通过处理器110在***100中使用的地址转换***200的一个实施例。***200包括转换后备缓冲器(TLB)210、页面表220和磁盘230。在一个实施例中,TLB 210和页面表220可被纳入到处理器110中,盘230可以是与存储设备170类似的各种存储设备。在操作过程中,处理器110可获得虚拟地址240来使来自过程的所需的页面执行读或写虚拟存储器位置的指令。
随后处理器110可以试图通过咨询TLB210的项找出与虚拟地址240对应的物理地址。如果从虚拟到物理的转换存在于TLB210中(称作TLB命中),包括帧编号的物理地址250可返回到处理器110。如果从虚拟到物理的转换不存在于TLB 210中(称作TLB未命中),处理器110就可试图通过咨询页面表220中的项找出与虚拟地址240对应的物理地址。如果从虚拟到物理的转换存在于页面表220中(称作页面表命中),转换项就可被写入TLB210。随后,处理器110可通过咨询TLB210中的项重试访问,现在可能会找到所要的项。如果从虚拟到物理的转换不存在于页面表220中(称作页面表未命中),处理器110就可作页面故障的声明。页面故障可导致所要的页面从磁盘230检索,将相应的项写入页面表220。在页面表220已经更新后,处理器110可以通过咨询TLB 210中的项重新访问。由于TLB210还没有更新,TLB未命中会发生。然而,处理器110可随后咨询在页面表220中的项,页面表击中可能发生,转换项可被写入TLB 210。随后,处理器110可以通过咨询TLB 210中的项,现在可以找到所需的项。如果所需的页面不能从磁盘230检索到,例如,如果所需的访问是无效的,就可由诸如在处理器110上执行的操作***之类的软件宣布和处理分段故障(segmentationfault)或其他类似的故障。
页面表220中的项可使用多种格式中的任何格式将虚拟地址转换为物理地址。一般来说,虚拟地址包括用作页面表220的索引的一些位域和用作页面表220确定的页的偏移的低阶位。在不同的实施例中,页面表220可以包括一个或多个层次,每一个层次由虚拟地址的特定的位域索引。因此,在虚拟地址中的高阶位域的格式取决于页面大小和页面表220中的数量层次。无论页面表层次的数量如何,页面表项和相应的TLB项可用于将虚拟地址转化为包括物理帧号的物理地址。
支持虚拟寻址的处理器可以使用多种操作模式的不同长度的虚拟地址。这样的操作模式可以定义操作***和处理器解释虚拟地址中的位域的方式以及在虚拟地址转换到物理地址时位域的使用方式。在一个实施例中,处理器110保持与x86架构兼容的处理器运行模式的向后的兼容性。
增加TLB的涵盖和减少TLB未命中的可能性的一种方法是增加TLB中的每一个项所代表的页面的大小。处理器110可配置为使用下面说明的通过控制寄存器设置的扩展的页面大小。图3示出了将页面表310中的项或TLB 350中的项映射到存储器330的一个实施例。在所示实施例中,页面表项可对应4KB的页面,TLB项可对应于较大的页面大小,例如64KB的页面。页面表310可包括页面表项301-318等。TLB350可包括项351-357等。存储器330可包括页面331-348等。项301-318中的每一个可对应4KB的页面。如图所示,项301对应页面331,项302对应页面332,依此类推。项351-357中的每一个可对应一个64KB的页面。例如,如图所示,项352对应于包括页面331-346的存储器区,该区也可称为超级页面。此处使用的超级页面可指包括两个或多个连续的、汇总的和对齐的4KB的页面的存储器区。此外,为了方便起见并不失一般性,在下面的讨论中,位于L1高速缓存器、L2高速缓存器或存储器的物理帧的任何部分可以指是在存储器中,与在存储设备中的帧不同。如下所述,处理器110和在其上执行的操作***可使用各种数据结构来确定是否支持超级页,是否启用与否超级页,哪一个TLB项对应于小(例如4KB)页面和哪一个TLB项对应于到超级页面。
图4示出了控制寄存器400中包含的、表示支持扩展的页面大小的位域的一个实施例。控制寄存器400可对应于整合x86架构的处理器中的控制寄存器4(CR4)。CR4寄存器包括定义处理器的能力的一些位。如图所示,寄存器400包括与超级页面相关的两个位401和402。位401称作页面大小扩展位或PSE位,表示页面是4KB还是启用物理地址扩展(PAE)时的标准的、较大的页面大小4MB或2MB。如果位401没有使用,就支持4KB的页面大小。此外,寄存器400包括位402,位402称作扩展页面模式(XPM)支持位,如果设置,就表明支持扩展模式的页面大小。
在一个实施例中,处理器110可支持单一的扩展页面大小。例如,可支持64KB的页面大小。在替代实施例中,可支持超过一个扩展页面的大小。可提供各种机制,以确定支持哪些扩展页面大小。下面的部分说明了这样的一个机制。
图5示出了在模型特定寄存器(MSR)500中包含的位域的一个实施例。MSR500包括定义处理器支持的扩展模式页面大小的一些位。如图所示,在一个实施例中,寄存器500包括位501-508。假设如上所述由位401和402的值指示的那样支持扩展页面大小,支持的页面大小由表1所示的位501-508的值来指示。
表1
在一个实施例中,寄存器500可以是只读寄存器。相应地,如表1所示,寄存器500表示支持单一的选定的扩展页面大小。在一个实施例中,只有一个位501-508可设置为支持哪一个单一的扩展页面大小。在另一个实施例中,可以设置超过一个的位501-508,表明支持一个以上的扩展页面大小。在进一步的实施例中,寄存器500是可写的,能够通过软件动态地启用和禁用各种页面大小。
应说明,可以在诸如安全虚拟机(SVM)之类虚拟机环境的主机模式和客机模式下单独启用扩展分页模式。例如,在主机操作***和客机操作***之间切换时,寄存器400和500的操作***特定版本的值可被保存和恢复到称作虚拟机控制块(VMCB)的数据结构。
通过检查寄存器400和500中设置的值,在处理器110上执行的软件可确定支持哪些(如果有的话)扩展的页面大小。软件然后可以使用一些额外的机制来定义超级页面。
图6示出了可由操作***用来定义超级页面的数据结构项的一个实施例。在图中,示出了页面表项352和页面属性表(PAT)项630。在一个实施例中,在页面表中的每一个项包括涉及PAT中的描述引用页面表的项的格式的项标识符位。例如,页面表项352包括位603、604和607,它们共同构成诸如例如项630之类PAT中的特定项的索引。在一个实施例中,位603可对应于页面写(PWT)位,位604可对应于页面高速缓存禁用(PCD)位,位607可对应于x86架构的页面属性表(PAT)位。
在PAT项630内,位可被指定为指示是否启用超级页面。例如,如图6所示,超级页面位634被示为在PAT项630内。在一个实施例中,如果位634是设置为′1’,那么,引用此页面属性项的页面表项是页面表项的超级页面组的一部分,引用此页面属性项的TLB项说明超级页面。否则,如果位634不设置为′1′,引用此页面属性项的页面表项或TLB项说明4KB页面。
在另一个实施例中,不是使用位603、604和607作为PAT中的项的索引,其中位634作为超级页位起作用,另一页面表项352可用作超级页面位。例如,诸如页面表项352的位11或PAT位、位607之类AVL位中的一个可作为超级页面位。如果使用AVL位,就可能需要配置处理器支持XPM以使硬件解释AVL位。
在页面表项352内,也示出了包括位612-616等的位域640。位域640可用于指示启用哪一个超级页面大小。在一个实施例中,如表2所示的位域640值指示启用哪一个超级页面大小。
表2
位612-619中的、不是位域640的一部分的任何位可能是物理帧号的一部分。例如,如果启用了64KB的超级页,位612-615就作为位域640保留,以表示启用的超级页面的大小,而更高阶的位616、617等是物理帧编号的一部分。在替换的实施例中,来自页面表项352的各个其它位中的任何位可***作***用来定义启用的超级页面大小。
应说明,在一个实施例中,扩展的分页模式可以在诸如安全虚拟机(SVM)之类虚拟机环境的主机模式和客机模式下分开定义。例如,在主机操作***和客机操作***之间切换时,页面表和页属性表的操作***特定版本的值可以保留。进一步说明的是,在包括虚拟机的一些实施例中,第一超级页面设置可用于将客机操作***地址空间中的虚拟地址转换为客机操作***地址空间的物理地址,第二超级页面设置可用于将客机操作***地址空间中的物理地址转换为主机操作***地址空间的物理地址。在这样的***中使用的页面表也可称作嵌套式(nested)页面表。
如上所述,超级页面包括两个或多个连续的、汇总的和对齐的4KB页面。进一步说明的是,在一个实施例中,使用超级页面的操作***可能需要不断填充说明这样的系列4KB页面的页面表项集,以通过将超级页面项复制到该集中的每一个项而形成超级页面区。下面的一致性要求适用于这一实施例。
单个的页面表项可能需要遵循上面所述的格式,以表明它们是超级页面项的一部分。如果处理器110读到与上面所述的格式不符的单个页面表项,就有可宣布超级页面无效,问题中的页面表项可能被解释为是说明4KB页面的项。当读到不一致的项时,TLB可以去除不一致的项。此外,如果处理器110试图在不一致的项中设置访问和/或非正常(dirty)(A/D)位,页面故障就可能产生。
在进一步的实施例中,有效的超级页面可以要求完整的页面表项设置根据形成处理器110和在其上运行的操作***间的法则的一系列规则位于页面表中。例如,如果启用了64KB的超级页面,就必须有16个4KB的页面表项来形成有效的超级页面。如果不是这样,即使访问是指向的确存在有效的页面表项的4KB页面,页面故障也可能在存储器访问期间发生。在更进一步的实施例中,组成超级页面的项的每一个单一4KB项的物理帧编号和/或高速缓存属性可能需要是相同的。否则,处理器110的行为可能是不确定的。在更进一步的实施例中,组成超级页面的项的每一个单一4KB项的保护属性可以要求是相同的。如果不是这样,即使访问是指向的确存在有效的页面表项的4KB页面,页面故障也可能在存储器访问期间发生。如果遵循上述规则,操作***就可通过忽略一些虚假(但除此之外无害)的页面错误按顺序更新包括超级页面的单个的页面表项。在替代的实施例中,操作***可以在更新过程中使页面表下线,以避免虚假的页面故障。
在另一个实施例中,更新页面表项的A/D位可以要求首先更新属于项的超级页面设置的第一个(即最低地址)的项。如果第一个的项不具有超级页面位设置,或者如果存在如上所述的其他不一致,页面就可能会发生故障。在替代的实施例中,更新页面表项的A/D位可以只要求进行更新属于项的超级页面设置的项中的任何项。这样的更新称为“稀疏式(sparse)”更新,可能需要操作***按顺序地扫描项或在一系列超级页面项中的所有项的相关位上进行逻辑“或”操作以找到有效的超级页面。更新任何项中的非正常位可能需要在同一时间更新项中的访问位。
图7示出了可由处理器110执行访问超级页面的分页流程700的一个实施例。当获得超级页面的虚拟地址(块710)时,流程700可以开始。一旦得到虚拟地址,就可以访问TLB检查匹配项(块720)。如果有TLB命中(决定块725),就可通过诸如使用在TLB中发现的物理帧数以及离虚拟地址的偏移量之类将虚拟地址转换到物理地址(块770)。一旦物理地址是已知的,就可以在存储器中访问相应的超级页面(块780)。分页流程在块790完成。
如果有TLB未命中(决定块725),就可以访问页面表检查匹配项(块730)。如果有页面表未命中(决定块735),就可声明页面故障(块760)。如果有页面表命中(决定块735),并且页面表项对应于4KB的页面(决定块740),流程700可在块770继续。如果有页面表命中(决定块735),并且页面表项不对应于4KB的页面(决定块740),就可验证共同对应于目标超级页面的页面表项设置的有效性(块745)。如果页面表项的设置是无效的(决定块750),就可声明页面故障(块760)。在一个实施例中,一个页面故障可终止访问请求。在其他的实施例中,根据页面故障的原因,访问可继续进行。例如,在如上所述的某些情况下,访问请求可以被假定为4KB的页面访问请求。在其他情况下,页面故障可以被忽略,超级页面访问会允许继续进行,就像页面表项是有效的那样。如果页面表项的设置是有效的(决定块750),就可通过诸如使用在TLB中发现的物理帧数以及离虚拟地址的偏移量之类将虚拟地址转换到物理地址(块770)。一旦物理地址是已知的,就可以在存储器访问相应的超级页面(块780)。分页流程在块790完成。
图8示出了可用于检查从支持超级页面的处理器中的分页面表中读取的超级页面项的有效性的流程800的一个实施例。当超级页面表项收到时,就可以开始流程800(块810)。超级页面项设置可以进行一致性检测。如果设置的所有项的格式不一致(决定块820)或在设置中有缺项(决定块830)或项的设置中的项的保护属性不匹配(决定块840),就可宣布页面故障(块825)。
如果设置的所有项的格式是一致的(决定块820),在设置中就没有缺失的项(决定块830),如果项设置中的项的保护属性相匹配(决定块840)但在项设置中也有不匹配的物理帧数(决定块850)或在项设置中有不匹配的高速缓存属性(决定块860),就可能未定义分页行为。如果项设置中没有不匹配的物理帧数(决定块850)或不匹配的高速缓存属性(决定块860),分页流程就可以完成(块870)。
图9示出了可用于配置处理器以使用超级页面的流程的一个实施例。处理流程900可开始于处理器硬件功能的检查,以确定是否支持扩展页面大小的决定(块910)。例如,在一个实施例中,在控制状态寄存器的位可表明是否支持扩展的页面大小。如果不支持扩展页面大小,可退回一个错误(块920)。如果支持扩展页面大小,可执行另一检查,以确定支持什么样的超级页面大小(块930)。例如,在一个实施例中,在模型特定寄存器中的位域可表明支持什么样的扩展的页面大小。接下来,可选择一个或多个所要的页面大小(块940)。可由软件设置超级页面指示器(块950)。例如,在页面属性表项中的用来定义超级页面的页面表项格式的位可以设置为指示超级页面启用的值。超级页面一旦启用,项集中的与超级页面对应的第一项可写入到页面表中(970)。在一个实施例中,可对页面表中的第一项和后续项使用以上所述的页面属性表项指定的格式。接下来,可将与超级页面对应的项集中的其余的项写入到页面表中(块980)。与4KB页面的连续的、对齐的设置一致的项集被写入到页面表中,可访问相应的超级页面(块990),完成流程900。
应说明的是,上述流程图只出于讨论的目的。在可替换的实施例中,在流程图中所描述的内容可以以不同的顺序发生,在某些情况下可同时发生。此外,在各种实施例中,流程图部件中的一些可以不存在,或可与其他部件结合起来。考虑所有这些可替换的实施例。
应说明的是,上述实施例可包括软件。在这样的实施例中,执行实施方法和/或机制的程序指令可在计算机访问介质上传送或存储。有配置为存储程序指令的各种种类的介质,包括硬盘、软盘、CD-ROM、DVD、闪存、可编程ROM(PROM)、随机存取存储器(RAM)以及其他各种形式的挥发性或非挥发性存储。配置为传送程序指令使计算设备存取的其他形式的介质包括诸如网络、无线和卫星连接之类电子、电磁、光或数字信号可在其上传达的地面和非地面通信连接。因此,各种实施例可进一步包括按照上述对计算机可存取介质的说明而实施的接收、发送或储存指令和/或数据。
虽然已经相当详细地描述了上述实施例,但很显然,对本领域技术人员而言,一旦完全理解上述公开,就可进行各种改变和修改。意在将下面的权利要求书解释为包括所有这些改变和修改。
Claims (20)
1.一种处理器,包括:
虚拟存储器分页机制,其中所述虚拟存储器分页机制配置为使所述处理器上运行的操作***能:
使用第一大小的页面和第二大小的页面,所述第二大小大于所述第一大小;
形成超级页面,所述超级页面包括一系列包括所述第一大小的两个或多个连续的页面,其中超级页面的大小小于所述第二大小;和
页面表,所述页面表包括用于在每一个超级页面中所包括的所述两个或多个连续的页面中的每一个的单独项。
2.如权利要求1所述的处理器,其中所述虚拟存储器分页机制进一步配置为使在所述处理器上运行的操作***能使用单一的虚拟地址来访问每一个超级页面。
3.如权利要求1所述的处理器,其中超级页的大小是64KB。
4.如权利要求2所述的处理器,还包括转换后备缓冲器(TLB),其中所述虚拟存储器分页机制配置为将所述TLB中的单项解释为指包括与响应检测到与所述TLB中的所述项有关的超级页面使能指示器有效的超级页面对应的一系列页面的存储器区。
5.如权利要求4所述的处理器,其中所述虚拟存储器分页机制进一步配置为将所述页面表中的项解释为指包括响应检测到与所述页面表中的所述项有关的超级页面使能指示器有效的超级页面的一部分的存储器区。
6.如权利要求4所述的处理器,其中所述超级页面使能指示器是可由软件设置的。
7.如权利要求2所述的处理器,其中所述虚拟存储器分页机制进一步配置为响应于检测到所述页面表中的所述至少两个项中的至少一个项缺失或包括与所述页面表中的所述至少两个项中的其他项的相应属性不一致的属性而发出页面故障。
8.如权利要求1所述的处理器,其中所述虚拟存储器分页机制进一步配置为同时且独立地使超级页面在在所述处理器上运行的第一操作***和第二操作***中的一个或两个上使用。
9.如权利要求8所述的处理器,其中所述第一操作***是虚拟环境中的客机操作***,配置为使用第一页面表将客机地址空间中的虚拟地址转换为客机地址空间的物理地址,所述第二操作***是虚拟环境中的主机操作***,配置为使用第二页面表将客机地址空间中的物理地址转换为主机地址空间中的物理地址。
10.如权利要求1所述的处理器,其中所述虚拟存储器分页机制进一步配置使所述操作***使用两个或两个以上的不同超级页面大小的超级页面,其中每一个超级页面的大小等于两个或多个连续的、对齐的所述第一大小的页面的大小,其中每一个超级页面的大小小于所述第二大小。
11.一种用于处理器中的虚拟存储器分页的方法,所述方法包括:
使在所述处理器上运行的操作***能使用第一大小的页面和第二大小的页面,所述第二大小大于所述第一大小;
使所述操作***形成超级页面,所述超级页面包括一系列包括所述第一大小的两个或更多个连续的页面,其中超级页面的大小小于所述第二大小;和
包括在页面表中的单独项,所述单独项用于在每一个超级页面中所包括的所述两个或更多个连续的页面中的每一个。
12.如权利要求11所述的方法,还包括使在所述处理器上运行的所述操作***使用单一的虚拟地址来访问每一个超级页面。
13.如权利要求11所述的方法,其中超级页的大小是64KB。
14.如权利要求12所述的方法,还包括将TLB中的单项解释为指包括与响应检测到与TLB中的所述项有关的超级页面使能指示器有效的超级页面对应的一系列页面的存储器区。
15.如权利要求14所述的方法,还包括将所述页面表中的项解释为指包括响应检测到与所述页面表中的所述项有关的超级页面使能指示器有效的超级页面的一部分的存储器区。
16.如权利要求14所述的方法,其中所述超级页面使能指示器是可由软件设置的。
17.如权利要求12所述的方法,还包括响应于检测到所述页面表中的所述至少两个项中的至少一个项缺失或包括与所述页面表中的所述至少两个项中的其他项的相应属性不一致的属性而发出页面故障。
18.如权利要求11所述的方法,还包括同时且独立地使超级页面在在所述处理器上运行的第一操作***和第二操作***中的一个或两个上使用。
19.如权利要求18所述的方法,其中所述第一操作***是虚拟环境中的客机操作***,配置为使用第一页面表将客机地址空间中的虚拟地址转换为客机地址空间的物理地址,所述第二操作***是虚拟环境中的主机操作***,配置为使用第二页面表将客机地址空间中的物理地址转换为主机地址空间中的物理地址。
20.如权利要求11所述的方法,还包括使所述操作***使用两个或两个以上的不同超级页面大小的超级页面,其中每一个超级页面的大小等于两个或更多个连续的、对齐的第一大小的页面的大小,其中每一个超级页面的大小小于所述第二大小。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/496,335 | 2009-07-01 | ||
US12/496,335 US8195917B2 (en) | 2009-07-01 | 2009-07-01 | Extended page size using aggregated small pages |
PCT/US2010/040625 WO2011002900A1 (en) | 2009-07-01 | 2010-06-30 | Extended page size using aggregated small pages |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102473091A true CN102473091A (zh) | 2012-05-23 |
CN102473091B CN102473091B (zh) | 2014-09-17 |
Family
ID=43411433
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080030133.3A Active CN102473091B (zh) | 2009-07-01 | 2010-06-30 | 使用聚合的小页面的扩展的页面大小 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8195917B2 (zh) |
JP (1) | JP2012532381A (zh) |
KR (1) | KR101563659B1 (zh) |
CN (1) | CN102473091B (zh) |
GB (1) | GB2485082B (zh) |
IN (1) | IN2012DN00196A (zh) |
WO (1) | WO2011002900A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106940623A (zh) * | 2016-01-04 | 2017-07-11 | 群联电子股份有限公司 | 内存管理方法、内存控制电路单元及内存储存装置 |
CN108415782A (zh) * | 2018-02-23 | 2018-08-17 | 携程旅游网络技术(上海)有限公司 | 应用程序的控件通信方法、装置、电子设备、存储介质 |
CN109791523A (zh) * | 2016-09-22 | 2019-05-21 | 谷歌有限责任公司 | 支持巨页的内存管理 |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8527736B1 (en) * | 2010-09-07 | 2013-09-03 | Adtran, Inc. | Systems and methods for improving address translation speed |
US8943296B2 (en) | 2011-04-28 | 2015-01-27 | Vmware, Inc. | Virtual address mapping using rule based aliasing to achieve fine grained page translation |
US9767039B2 (en) * | 2011-07-18 | 2017-09-19 | Vmware, Inc. | Increasing granularity of dirty bit information in hardware assisted memory management systems |
US9753860B2 (en) | 2012-06-14 | 2017-09-05 | International Business Machines Corporation | Page table entry consolidation |
US9092359B2 (en) * | 2012-06-14 | 2015-07-28 | International Business Machines Corporation | Identification and consolidation of page table entries |
US9811472B2 (en) | 2012-06-14 | 2017-11-07 | International Business Machines Corporation | Radix table translation of memory |
US8954707B2 (en) * | 2012-08-03 | 2015-02-10 | International Business Machines Corporation | Automatic use of large pages |
JP5958195B2 (ja) * | 2012-08-31 | 2016-07-27 | 日本電気株式会社 | 仮想記憶管理システム、仮想記憶管理装置、仮想記憶初期化方法および仮想記憶初期化プログラム |
US9058268B1 (en) | 2012-09-20 | 2015-06-16 | Matrox Graphics Inc. | Apparatus, system and method for memory management |
US9459877B2 (en) | 2012-12-21 | 2016-10-04 | Advanced Micro Devices, Inc. | Nested speculative regions for a synchronization facility |
US8966220B2 (en) | 2013-01-15 | 2015-02-24 | International Business Machines Corporation | Optimizing large page processing |
US9164915B2 (en) | 2013-01-15 | 2015-10-20 | International Business Machines Corporation | Reserving fixed page areas in real storage increments |
KR102069857B1 (ko) * | 2013-02-28 | 2020-01-23 | 삼성전자주식회사 | 자체-학습을 통해 원래 이미지를 회전하는 방법과 상기 방법을 수행할 수 있는 장치들 |
US9563571B2 (en) | 2014-04-25 | 2017-02-07 | Apple Inc. | Intelligent GPU memory pre-fetching and GPU translation lookaside buffer management |
US9507726B2 (en) * | 2014-04-25 | 2016-11-29 | Apple Inc. | GPU shared virtual memory working set management |
WO2016175814A1 (en) | 2015-04-30 | 2016-11-03 | Hewlett Packard Enterprise Development Lp | Mapping apertures of different sizes |
US10310854B2 (en) | 2015-06-30 | 2019-06-04 | International Business Machines Corporation | Non-faulting compute instructions |
US10061539B2 (en) * | 2015-06-30 | 2018-08-28 | International Business Machines Corporation | Inaccessibility status indicator |
US10162525B2 (en) | 2015-09-11 | 2018-12-25 | Red Hat Israel, Ltd. | Translating access requests for a multi-level page data structure |
US10282296B2 (en) | 2016-12-12 | 2019-05-07 | Intel Corporation | Zeroing a cache line |
US10241925B2 (en) | 2017-02-15 | 2019-03-26 | Ati Technologies Ulc | Selecting a default page size in a variable page size TLB |
US10282309B2 (en) | 2017-02-24 | 2019-05-07 | Advanced Micro Devices, Inc. | Per-page control of physical address space distribution among memory modules |
US10339068B2 (en) | 2017-04-24 | 2019-07-02 | Advanced Micro Devices, Inc. | Fully virtualized TLBs |
US10228991B2 (en) | 2017-06-28 | 2019-03-12 | Qualcomm Incorporated | Providing hardware-based translation lookaside buffer (TLB) conflict resolution in processor-based systems |
KR101942663B1 (ko) * | 2017-09-28 | 2019-01-25 | 한국과학기술원 | 가상 메모리 주소 변환 효율화를 위한 연속성 활용 주소 변환 방법 및 시스템 |
US11204879B2 (en) * | 2019-06-06 | 2021-12-21 | Arm Limited | Memory management circuitry managing data transactions and address translations between an upstream device and a downstream device |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6112285A (en) * | 1997-09-23 | 2000-08-29 | Silicon Graphics, Inc. | Method, system and computer program product for virtual memory support for managing translation look aside buffers with multiple page size support |
US20070180215A1 (en) * | 2006-01-31 | 2007-08-02 | International Business Machines Corporation | Method and system for predicting the performance benefits of mapping subsets of application data to multiple page sizes |
US20090013149A1 (en) * | 2007-07-05 | 2009-01-08 | Volkmar Uhlig | Method and apparatus for caching of page translations for virtual machines |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6134602A (en) | 1997-09-24 | 2000-10-17 | Microsoft Corporation | Application programming interface enabling application programs to group code and data to control allocation of physical memory in a virtual memory system |
US20040117594A1 (en) * | 2002-12-13 | 2004-06-17 | Vanderspek Julius | Memory management method |
US8417913B2 (en) * | 2003-11-13 | 2013-04-09 | International Business Machines Corporation | Superpage coalescing which supports read/write access to a new virtual superpage mapping during copying of physical pages |
US7444493B2 (en) * | 2004-09-30 | 2008-10-28 | Intel Corporation | Address translation for input/output devices using hierarchical translation tables |
US8843727B2 (en) * | 2004-09-30 | 2014-09-23 | Intel Corporation | Performance enhancement of address translation using translation tables covering large address spaces |
US7395405B2 (en) * | 2005-01-28 | 2008-07-01 | Intel Corporation | Method and apparatus for supporting address translation in a virtual machine environment |
US7395406B2 (en) * | 2005-05-12 | 2008-07-01 | International Business Machines Corporation | System and method of large page handling in a virtual memory system |
US7437529B2 (en) * | 2005-06-16 | 2008-10-14 | International Business Machines Corporation | Method and mechanism for efficiently creating large virtual memory pages in a multiple page size environment |
US7747838B2 (en) * | 2007-05-19 | 2010-06-29 | International Business Machines Corporation | Method and apparatus for dynamically adjusting page size in a virtual memory range |
US7793070B2 (en) * | 2007-07-12 | 2010-09-07 | Qnx Software Systems Gmbh & Co. Kg | Processing system implementing multiple page size memory organization with multiple translation lookaside buffers having differing characteristics |
US7783859B2 (en) * | 2007-07-12 | 2010-08-24 | Qnx Software Systems Gmbh & Co. Kg | Processing system implementing variable page size memory organization |
US9244855B2 (en) * | 2007-12-31 | 2016-01-26 | Intel Corporation | Method, system, and apparatus for page sizing extension |
US8688894B2 (en) * | 2009-09-03 | 2014-04-01 | Pioneer Chip Technology Ltd. | Page based management of flash storage |
-
2009
- 2009-07-01 US US12/496,335 patent/US8195917B2/en active Active
-
2010
- 2010-06-30 KR KR1020127000750A patent/KR101563659B1/ko active IP Right Grant
- 2010-06-30 JP JP2012518596A patent/JP2012532381A/ja active Pending
- 2010-06-30 CN CN201080030133.3A patent/CN102473091B/zh active Active
- 2010-06-30 IN IN196DEN2012 patent/IN2012DN00196A/en unknown
- 2010-06-30 GB GB1200020.4A patent/GB2485082B/en active Active
- 2010-06-30 WO PCT/US2010/040625 patent/WO2011002900A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6112285A (en) * | 1997-09-23 | 2000-08-29 | Silicon Graphics, Inc. | Method, system and computer program product for virtual memory support for managing translation look aside buffers with multiple page size support |
US20070180215A1 (en) * | 2006-01-31 | 2007-08-02 | International Business Machines Corporation | Method and system for predicting the performance benefits of mapping subsets of application data to multiple page sizes |
US20090013149A1 (en) * | 2007-07-05 | 2009-01-08 | Volkmar Uhlig | Method and apparatus for caching of page translations for virtual machines |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106940623A (zh) * | 2016-01-04 | 2017-07-11 | 群联电子股份有限公司 | 内存管理方法、内存控制电路单元及内存储存装置 |
CN106940623B (zh) * | 2016-01-04 | 2020-06-09 | 群联电子股份有限公司 | 存储器管理方法、存储器控制电路单元及存储器储存装置 |
CN109791523A (zh) * | 2016-09-22 | 2019-05-21 | 谷歌有限责任公司 | 支持巨页的内存管理 |
CN109791523B (zh) * | 2016-09-22 | 2023-07-14 | 谷歌有限责任公司 | 支持巨页的内存管理 |
CN108415782A (zh) * | 2018-02-23 | 2018-08-17 | 携程旅游网络技术(上海)有限公司 | 应用程序的控件通信方法、装置、电子设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20110004739A1 (en) | 2011-01-06 |
WO2011002900A1 (en) | 2011-01-06 |
KR101563659B1 (ko) | 2015-10-27 |
GB2485082A (en) | 2012-05-02 |
JP2012532381A (ja) | 2012-12-13 |
KR20120106696A (ko) | 2012-09-26 |
CN102473091B (zh) | 2014-09-17 |
US8195917B2 (en) | 2012-06-05 |
GB2485082B (en) | 2015-08-26 |
GB201200020D0 (en) | 2012-02-15 |
IN2012DN00196A (zh) | 2015-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102473091B (zh) | 使用聚合的小页面的扩展的页面大小 | |
CN102498477B (zh) | Tlb预取 | |
CN101872316B (zh) | 体系结构事件期间维持处理器资源的方法、设备、处理器 | |
EP1588267B1 (en) | Invalidating storage, clearing buffer entries | |
KR100327935B1 (ko) | 연관성을 이용한 가변 캐시 크기에 대한 고성능 캐시 디렉토리 어드레싱 스킴 | |
EP0090575A2 (en) | Memory system | |
JPS624745B2 (zh) | ||
EP1405191A2 (en) | Multiprocessor system implementing virtual memory using a shared memory, and a page replacement method for maintaining paged memory coherence | |
JPS62260248A (ja) | データ処理システム | |
JPS629942B2 (zh) | ||
CN102473138A (zh) | 具有用于页面错误处理的闪存的扩展主存储器层次结构 | |
KR20080041707A (ko) | Tlb 록 표시자 | |
CN101315614A (zh) | 支持页属性的虚拟地址至物理地址的转换 | |
KR20000052480A (ko) | 캐시 프로세스용 시스템 및 방법 | |
CN100392623C (zh) | 用于从地址高速缓存去除条目的方法和设备 | |
JPH07104816B2 (ja) | コンピュータシステムを動作する方法及びコンピュータシステムにおけるメモリ管理装置 | |
US5276850A (en) | Information processing apparatus with cache memory and a processor which generates a data block address and a plurality of data subblock addresses simultaneously | |
CN103076992A (zh) | 一种内存数据缓冲方法及装置 | |
CN101008922A (zh) | 面向异构多核体系的段页式存储空间管理方法 | |
US6249845B1 (en) | Method for supporting cache control instructions within a coherency granule | |
JPH07111691B2 (ja) | プロセッサ・キャッシュ・マクロのためのオンチップ・メモリ・マップ | |
EP1807767A1 (en) | A virtual address cache and method for sharing data stored in a virtual address cache | |
JPS6194159A (ja) | メモリ装置 | |
JPS644214B2 (zh) | ||
JP3335919B2 (ja) | ディスクキャッシュ制御装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |