买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】页面错误解决方案_国际商业机器公司_201780027901.1 

申请/专利权人:国际商业机器公司

申请日:2017-05-12

公开(公告)日:2023-05-12

公开(公告)号:CN109074316B

主分类号:G06F12/1009

分类号:G06F12/1009

优先权:["20160524 US 15/163,372"]

专利状态码:有效-授权

法律状态:2023.05.12#授权;2019.01.15#实质审查的生效;2018.12.21#公开

摘要:页面大小提示可以编码到有效或虚拟地址中的未使用和保留字段中,以便在处理与有效或虚拟地址相关联的页面错误时使软件页面错误处理程序使用,以使应用程序能够与操作系统或其他基于软件的翻译功能页面大小首选项通信,用于分配内存页面和或加速搜索硬件页面表中的页表条目。

主权项:1.一种在支持多个存储页面大小的类型的数据处理系统中处理页面错误的方法,该方法包括:检测由处理器的硬件转换逻辑产生的页面错误,该页面错误与由处理器执行的程序代码请求的虚拟地址相关联;从所述虚拟地址确定编码到所述虚拟地址的未使用和保留的字段的页面大小提示,其中所述未使用和保留字段是与所述虚拟地址中的索引字段、标记字段和偏移字段分离的预定字段;和使用所确定的页面大小提示对所述虚拟地址执行软件地址转换操作。

全文数据:页面错误解决方案背景技术本发明一般涉及计算机和计算机软件,尤其涉及存储器地址转换。存储器管理,即管理存储在计算机中的数据中发生的操作,通常是计算机整体系统性能的关键因素。除其他任务外,内存管理还监视计算机上数据的检索和存储,并通过对允许用户和计算机程序访问的内容施加限制来管理计算机的某些安全任务。现代计算机通常依赖于称为虚拟内存管理的内存管理技术来提高性能,并在计算机及其所基于的底层架构设计中提供更大的灵活性。利用虚拟存储器系统,实现计算机的存储器系统的底层硬件有效地隐藏在计算机的软件之外。为这样的计算机定义相对大的虚拟存储器空间,例如宽度为64位或更多,其中计算机程序在计算机上执行,使用指向虚拟存储器空间中的位置的虚拟地址访问存储器系统。然而,计算机中的物理存储器设备通过“真实”地址访问,该地址直接映射到物理存储器设备中的特定存储器位置。提供计算机中的硬件和或软件以执行“地址转换”以将物理存储器的实际存储器地址映射到虚拟存储器空间中的虚拟地址。因此,每当计算机上的计算机程序试图使用虚拟地址访问存储器时,计算机就会自动将虚拟地址转换为相应的实际地址,以便可以访问映射到虚拟地址的适当物理设备中的适当位置。虚拟寻址的一个特征是计算机不必包括用于计算机主存储器中的物理存储器设备中的整个虚拟存储器空间的存储。相反,较低级别的存储例如磁盘驱动器和其他大容量存储设备可以用作补充存储,其中存储器地址被分组为“页面”,根据需要在主存储器和补充存储器之间交换。另外,一些计算机设计还包括分段的概念,其将虚拟存储器划分成不同的段每个段映射到页面块以便于存储器保护,简化大型和不断增长的数据结构的处理,以及当在任何给定时间能够在计算机中处理多个进程时,为执行内存管理提供更大的灵活性。当使用分段时,使用附加的间接层,需要执行额外的转换。通常,在包含分段和寻呼的系统中,计算机程序使用映射到虚拟地址的“有效”地址来访问存储器系统,因此需要首先从有效地址转换到虚拟地址,然后从虚拟地址转换到真实地址。由于计算机中访问请求的频率,地址转换可能对整体系统性能具有显着影响。因此,期望最小化与执行地址转换的关键定时路径相关联的处理开销。虚拟存储器系统中的地址转换通常包含访问各种地址转换数据结构。一种这样的结构,称为页表,包括多个条目,这些条目在逐页的基础上将虚拟地址映射到实际地址。同样,为了处理分段,通常提供分段表,包括在逐个分段的基础上将有效地址映射到虚拟地址的条目。通常,由于计算机中不断发生的大量存储器访问,映射计算机使用的所有存储器地址空间所需的条目数量可能很大,并且需要将条目存储在主存储器,而不是专用存储器中,这使得访问这些条目的速度非常慢。为了利用这种方案加速地址转换,称为转换后备缓冲器TLB和段后备缓冲器SLB的高速存储器通常用于缓存最近使用的条目以便计算机快速访问。如果所需的条目未存储在TLB或SLB中,则从主存储器加载条目会产生性能损失;然而,通常TLB和SLB的命中率非常高,并且当从TLB和SLB立即访问条目时,与从主存储加载条目相关的惩罚大大抵消了性能增益。在其他设计中,通过提供有效到实际地址转换ERAT表,可以使用附加级别的高速缓存来进一步加速性能,该表包括提供有效地址和实际地址之间的直接映射的条目。因此,ERAT表有效地包括来自SLB和TLB的信息,以消除执行两级翻译的需要。在一些设计中,分别在处理器中的指令和数据处理逻辑附近提供单独的数据和指令ERAT表,以最小化地址转换对处理器中的关键性能路径的影响。最初,寻呼基于固定页面大小,例如每页4K或4096个可寻址位置。然而,通过使用分段,可以在不同的段中支持不同的页面大小。较小的页面大小通常对于有效使用存储器系统是最佳的,特别是当许多进程在计算机中同时运行时。然而,随着计算机和在其上运行的程序的存储器要求不断增加,任何给定过程或程序所需的存储器页数继续增加,因此,对于许多情况,较大的页面大小可能更有效。在许多设计中,必须在引导时分配大页面,即大于4K页面的页面。为了避免这种预分配的需要,一些操作系统实现了“透明”的大页面,这些页面试图收集顺序页面并将其翻译成大页面。但是,通常,操作系统不知道分配大页面的可能性,并且默认为进行4K页面分配。发明内容根据本发明的实施例,可以通过以下方式在支持多个存储器页面大小的类型的数据处理系统中处理页面错误:检测由处理器的硬件转换逻辑生成并与由所述处理器执行的程序代码请求的虚拟地址相关联的页面错误,从所述虚拟地址确定编码到所述虚拟地址的未使用和保留的字段的页面大小提示,并使用所确定的页面大小提示对所述虚拟地址执行软件地址转换操作。根据本发明的另一个实施例,可以通过以下方式来构建程序:将页面大小提示编码到由存储器访问指令引用的虚拟地址的未使用和保留的字段中,并且利用存储器访问指令来构建程序,使得当检测到由程序执行的数据处理系统的硬件转换逻辑的存储器访问指令引起的页面错误时,在执行软件地址转换操作时使用页面大小提示。表征本发明的这些和其他优点和特征在所附权利要求中阐述并形成本发明的另一部分。然而,为了更好地理解本发明以及通过其使用获得的优点和目的,应参考附图和所附描述性内容,其中描述了本发明的示例性实施例。附图说明现在将参考附图仅通过示例的方式描述本发明的实施例,附图中:图1A和1B是根据本文描述的各种技术的示例硬件图1A和软件图1B环境的框图。图2是说明可用于在图1A-1B的环境中执行地址转换的示例硬件和软件实体的框图。图3是可用于图1A-1B的环境中的示例有效地址格式的框图。图4是说明用于处理图1A-1B的环境中的页面错误的示例操作序列的流程图。图5是示出用于实现图4中引用的PTE块的搜索的示例操作序列的流程图。图6是说明用于在图1A-1B的环境中构建程序的示例操作序列的流程图。具体实施方式现在参考附图,其中在几个视图中相同的数字表示相同的部分。图1A-1B示出了与本发明一致的数据处理环境或装置100中的主要硬件和软件组件,并且适合于在各种云和或非云计算环境中实现存储器地址转换。如图1A所示,装置100可以包括多节点数据处理系统102,其中物理硬件分布在设置在多个主机或计算机系统106中的多个物理处理器节点104中,其中主机106设置在一个或多个池108上。每个处理器节点104包括一个或多个处理器110,一个或多个存储器设备112,并且在一些实施例中,包括附加硬件,例如输入输出IO硬件114例如,一个或多个输入输出IO适配器和或网络硬件116。适当的网络功能未示出也可用于提供各种处理器节点104和主机106以及其他外部系统之间的数据通信。装置100可以使用适合于实现虚拟化环境的多种不同架构中的任何一种来实现,以及适用于非虚拟化环境的各种架构,包括多用户和单用户环境,以及嵌入式环境。因此,装置100还可以代表各种台式计算机,超级计算机,服务器,膝上型计算机,平板电脑,移动设备和其他可编程电子设备等。每个处理器110可以实现为单线程或多线程处理器和或单核或多核处理器,而每个存储器112可以被认为包括一个或多个级别的存储器设备,例如基于DRAM的主存储器,以及一个或多个级别的数据,指令和或组合高速缓存,其中某些高速缓存服务于单个处理器或多个处理器,如本领域所公知的。另外,装置100的存储器可以被认为包括物理上位于装置100中的其他地方的存储器存储器,例如处理器中的任何高速缓冲存储器,以及用作虚拟存储器的任何存储容量,例如存储在大量存储器上或在耦合到设备100的另一计算机上。装置100在一个或多个内核,管理程序,操作系统等的控制下操作,并且执行或以其他方式依赖于各种计算机软件应用程序,组件,程序,对象,模块,数据结构等,下面将更详细地描述。此外,各种应用程序,组件,程序,对象,模块等也可以在经由网络耦合到装置100的另一计算机中的一个或多个处理器上执行,例如,在分布式或客户端-服务器计算环境中,由此执行所需的处理。实现计算机程序的功能可以通过网络分配给多台计算机。例如,图1B示出了可以驻留在装置100中的主机106内的各种软件组件118-132。管理程序或虚拟机监视器VMM118可以托管一个或多个虚拟机VM120和可以为每个虚拟机120分配主机106的一部分物理硬件资源例如,与一个或多个处理器节点104相关联的处理器,存储器和或IO资源,这里由一个或多个虚拟处理器VP122、虚拟存储器VMem124和虚拟输入输出VIO资源126表示。每个虚拟机120可以依次托管操作系统128和可选的中间件130,以及一个或多个作业和或应用132。应当理解,每个虚拟机120也可以称为逻辑分区,虚拟服务器或虚拟计算机可以以模拟单独的物理计算机的方式操作,并且因此可以实际上托管任何能够由计算机托管的任何软件组件。附加硬件和或软件组件也可以驻留在装置100中,例如,大容量存储硬件,诸如打印机或显示器的外部输入输出设备,以及硬件和或软件管理,例如硬件管理控制台HMC,通过其可以由管理员管理设备的硬件和或软件配置。此外,在所示实施例中,还可以支持到一个或多个外部网络134的连接,也可以通过一个或多个存储结构138连接到一个或多个存储系统136。虚拟化环境可以以无数种方式实现,并且可以包括无数个硬件和或软件变体,因此,本发明不限于这里公开的特定实现。应当理解,本发明可以是系统,方法和或计算机程序产品。该计算机程序产品可以包括计算机可读存储介质或媒介,其上具有计算机可读程序指令,用于使一个或多个处理器执行本发明的各方面。计算机可读存储介质可以是有形设备,其可以保留和存储指令以供指令执行设备使用。计算机可读存储介质可以是例如但不限于电子存储设备,磁存储设备,光存储设备,电磁存储设备,半导体存储设备或前述的任何合适组合。计算机可读存储介质的更具体示例的非详尽列表包括以下内容:便携式计算机磁盘,硬盘,随机存取存储器RAM,只读存储器ROM,可擦除可编程读取器-仅存储器EPROM或闪存,静态随机存取存储器SRAM,便携式光盘只读存储器CD-ROM,数字通用光盘DVD,记忆棒,软盘,机械编码装置,例如在其上记录有指令的凹槽中的穿孔卡或凸起结构,以及前述的任何合适的组合。这里使用的计算机可读存储介质不应被解释为暂时性信号本身,例如无线电波或其他自由传播的电磁波,通过波导或其他传输介质传播的电磁波例如,通过的光脉冲光纤电缆或通过电线传输的电信号。本文描述的计算机可读程序指令可以经由网络从计算机可读存储介质或外部计算机或外部存储设备下载到相应的计算处理设备,例如,因特网,局域网,广域区域网络和或无线网络。网络可以包括铜传输电缆,光传输光纤,无线传输,路由器,防火墙,交换机,网关计算机和或边缘服务器。每个计算处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算处理设备内的计算机可读存储介质中。用于执行本发明的操作的计算机可读程序指令可以是汇编指令,指令集架构ISA指令,机器指令,机器相关指令,微代码,固件指令,状态设置数据或任一源。以一种或多种编程语言的任意组合编写的代码或目标代码,包括诸如Java,Smalltalk,C++等的面向对象编程语言,以及诸如“C”编程语言或类似编程语言的传统过程编程语言。计算机可读程序指令可以完全在用户的计算机上,部分在用户的计算机上,作为独立的软件包,部分地在用户的计算机上,部分地在远程计算机上或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网LAN或广域网WAN,或者可以连接到外部计算机用于例如,通过互联网使用互联网服务提供商。在一些实施例中,包括例如可编程逻辑电路,现场可编程门阵列FPGA或可编程逻辑阵列PLA的电子电路可以通过利用计算机可读程序指令的状态信息来个性化电子电路,以执行本发明的各方面。下面将参照根据本发明实施例的方法、装置系统和计算机程序产品的流程图和或框图描述本发明。应当理解,流程图和或框图的每个方框以及流程图和或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机可读程序指令可以被提供给通用计算机,专用计算机或其他可编程数据处理装置的处理器以产生机器,使得指令通过计算机的处理器或其他执行。可编程数据处理装置,创建用于实现流程图和或框图块中指定的功能动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,该计算机可读存储介质可以指示计算机,可编程数据处理装置和或其他设备以特定方式起作用,使得具有存储在其中的指令的计算机可读存储介质包括一种制品,其包括实现流程图和或框图块中指定的功能动作的各方面的指令。计算机可读程序指令还可以被加载到计算机,其他可编程数据处理装置或其他设备上,以使得在计算机,其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现的过程,使得在计算机,其他可编程装置或其他设备上执行的指令实现在流程图和或框图块中指定的功能动作。附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和或流程图中的每个方框、以及框图和或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。另外,本文中可以基于在本发明的特定实施例中实现这些指令的应用来识别计算机可读程序指令,其中一个或多个可以在本文中统称为“程序代码”。然而,应当理解,随后的任何特定程序术语仅仅是为了方便而使用,因此本发明不应限于仅用于由这种术语识别和或暗示的任何特定应用。此外,考虑到通常可以无限数量的方式,其中计算机程序可以被组织成例程,过程,方法,模块,对象等,以及可以在各种软件层之间分配程序功能的各种方式。如果存在于典型计算机例如,操作系统,库,API,应用程序,小应用程序等中,则应该理解,本发明不限于这里描述的程序功能的特定组织和分配。本领域技术人员将认识到图1和图2中所示的示例环境。图1A和1B不旨在限制本发明。实际上,本领域技术人员将认识到,在不脱离本发明的范围的情况下,可以使用其他替代硬件和或软件环境。嵌入页面大小提示的页面错误解决方案大多数现代数据处理系统支持地址转换,并且通常依赖于硬件和软件来解析在虚拟和真实存储器之间进行转换。例如,图2示出了示例数据处理系统200中的地址转换功能。在该数据处理系统中,支持多个页面大小,分段也是如此,使得执行两级翻译,即,首先从有效地址到虚拟地址,然后从虚拟地址到真实地址。然而,应当理解,本发明不限于两级转换,并且可以在地址在虚拟和真实地址空间之间转换的不同环境中实现。为此,下文的讨论将参考由程序指令引用的地址并将其转换为实际地址空间中的地址作为“虚拟地址”。如图2所示,例如,存储器访问请求,例如尝试向虚拟存储器地址读取或写入,或分配存储器的请求,最初可以由处理器202中的硬件转换逻辑处理,例如,有效到实际地址转换ERAT单元208,其在一些实施例中可以使用单独的数据特定和指令特定单元dERAT和iERAT来实现。如果在ERAT208上发生命中,则可以在处理器202内处理地址转换;然而,如果发生未命中,则存储器访问请求通常被转发到存储器控制器或存储器管理单元MMU204,其可以与处理器202在相同或不同的芯片上。MMU204可以使用硬件转换逻辑来处理该请求,该逻辑包括一个或多个转换后备缓冲器TLB和或段旁视缓冲器SLB210。响应于TLB和或SLB210上的命中,可以在MMU210内处理存储器访问请求;然而,如果发生未命中,则通常向软件206,例如,操作系统OS,管理程序,虚拟机监视器,内核或数据处理系统中的其他低级软件,发信号通知页面错误,以访问各种统称为硬件页表HPT212的软件数据结构,从而解决页面错误。应当理解,每个ERAT208,SLBTLB210和HPT212可以至少包括映射在两个不同地址之间的地址转换数据,例如,在虚拟或有效地址与真实地址之间。在一些实施例中,该地址转换数据可以被实现为并且被称为页表条目PTE。然而,应当理解,PTE可以包括附加信息,例如限制对特定进程或进程类型或特定访问类型例如,只读的访问的保护数据,诸如有效无效指示符或脏指示符的状态数据,例如计数器或最近最少使用的指示符的跟踪数据,页面大小数据等。此外,虽然在一些实施例中,每个ERAT208,SLBTLB210和HPT212的PTE可以类似地配置,而在其他实施例中,PTE可以在存储器层级的不同级别彼此不同,并且可以包括与其他级别不同的、附加的或更少的数据,因此对在存储器层级的不同级别之间传递的PTE或虚拟有效地址的引用可以是包括修改数据、补充附加数据和或丢弃与PTE相关联的数据,或与格式化PTE相关联的虚拟有效地址,或适合于在该层次结构那个层级实现的特定数据结构的格式的虚拟有效地址。应当理解,可以在本发明的各种实施例中使用各种各样的地址转换实现,因此本发明不限于图2的实现。例如,在非均匀存储器访问NUMA环境、多核环境和其他环境,地址转换逻辑和或功能可以在整个数据处理系统中不同地分布,并且数据结构,缓冲器,表等的各种组合可以用于维护地址转换数据或PTE供符合本发明的数据处理系统的地址转换功能使用。例如,HPT212可以在一些实施例中使用多个表、多级表、嵌套表、虚拟化表来实现,以试图最小化与错过硬件转换逻辑的地址转换操作相关联的等待时间。还应当理解,在一些实施例中,由于需要潜在地访问多个数据结构,以及可能需要从较慢的存储器或甚至大容量或持久存储中检索那些数据结构,因此与执行地址转换操作相关联的等待时间可能不同。此外,应当理解,在本发明的各种实施例中,可以支持多个页面大小。通常,大于默认大小的页面例如,在一些实施例中为4K或4096字节可以被称为大页面或巨大页面。大页面可能是有用的,例如,具有某些类型的工作负载,例如,当程序包括相对大量的连续数据和或指令和或频繁和或重复访问大块数据时。相反,其他工作负载例如,存储器访问更加分散且随机的工作负载,更小的页面大小可以提供更好的性能。在一些传统方法中,需要在开机时分配大于默认大小的页面,而在其他传统方法中,可以通过使用“透明”巨大页面来避免预分配,其中操作系统或者类似的软件试图收集顺序页面并将翻译执行到大页面或巨大页面中。然而,通常操作系统不知道特别适合使用大页面或巨大页面的条件,因此操作系统和其他基于软件的地址转换逻辑通常具有有限的能力来智能地分配不同大小的页面以考虑不同类型的工作负载或场景。然而,与本发明一致的实施例可以用于通过向操作系统、管理程序虚拟机管理器或者数据处理系统中的其他软件实现的页面错误处理逻辑,提供页面大小提示来优化数据处理系统中的存储器分配和页面错误的处理。页面大小提示可以嵌入进,例如在这样的数据处理系统中执行的程序中的程序代码指令所请求的虚拟地址,特别是在虚拟地址的保留和或未使用的字段内。然后,可以由软件实现的页面错误处理逻辑读取页面大小提示,以控制响应于存储器访问请求而分配的页面大小和或响应于存储器访问请求而优化来自一个或多个硬件页面表的地址转换数据的搜索。在与本发明一致的一些实施例中,例如,由处理器的硬件转换逻辑生成的页面错误可以由软件页面错误处理程序检测,确定被编码到虚拟地址的未使用和保留字段中的页面大小提示,然后可以使用所确定的页面大小提示对虚拟地址执行软件地址转换操作。如下面将变得更加明显的,在一些实施例中,这样做使得能够通过执行程序将页面大小提示无缝地传送到软件页面错误处理程序以通过部分地减少和访问数据结构,例如硬件页面表等,相关联的延迟来加速存储器分配和或地址转换。在这方面,硬件转换逻辑可以被认为包括各种类型的硬件实现的地址转换功能,例如,可以在处理器,处理器核,存储器控制器,存储器管理单元,高速缓存控制器等内实现,并且包括各种数据结构,例如ERAT,SLB,TLB等。同样,软件页面错误处理程序可以被认为包括各种类型的软件实现的地址转换功能,例如,可以在操作系统,内核,管理程序,虚拟机监视器或用于访问各种类型的翻译数据结构的其他低级软件中实现,该各种类型的翻译数据结构包括各种类型的页表。在一些实施例中,可以配置软件页面错误处理程序以实现各种类型的软件地址转换操作。可以执行的一种类型的软件地址转换操作是搜索页表条目或其他地址转换数据,以用于完成从虚拟地址到实际地址的地址转换。可以执行的另一种类型的软件地址转换操作是分配新的存储器页面,例如,响应于确定所请求的虚拟地址尚未被映射到实际地址并且还没有为该虚拟地址分配存储器页面。附加的软件地址转换操作可以包括各种管理操作,例如修改或解除分配存储器页面,将存储器页面交换进出主存储器等。现在转到图3,在220处示出了适合与通信页面大小提示结合使用的示例有效或虚拟地址格式。格式220具体地表示多种典型地址格式中的任何一种,其可结合本发明的一些实施例使用,包括表示对应于有效或虚拟地址的存储页面的偏移的偏移字段222以及一起表示虚拟页面的唯一标识符的索引和标记字段224和226。例如,索引字段224可用于寻址包含PTE的数据结构,标记字段226用于将索引页面与映射到相同索引的其他页面区分开。在一些实施例中,可以省略标签字段226,索引字段224足以在数据结构中寻址页面。格式220还可以可选地包括一个或多个标志228,其可以提供诸如状态信息,访问控制信息或其他信息的信息,如受益于本公开的本领域普通技术人员将理解的。格式220还可以包括保留字段230,其包括未使用和保留的一个或多个比特。在本发明的上下文中,未使用和保留是指虚拟或有效地址中的字段,其由系统明确保留以供将来使用,并且不用于地址转换目的或寻址存储器中的位置。因此,在保留字段230内,可以在与本发明一致的实施例中编码页面大小提示。作为一个示例实现,在64位基数转换的情况下,例如,如在Power8架构中实现的,10比特例如,比特2-11BigEndian或比特61-52LittleEndian由该体系结构保留并不用于地址转换目的或以其他方式引用内存。在一个示例实施例中,该字段的一个或多个比特可用于提供页面大小提示,如下表I所示:I:页面大小提示编码利用上述编码,有效地址可以成为编译器、链接器和应用程序的惯例,以请求操作系统或其他基于软件的地址转换功能以进行转换。另外,在一些实施例中,该编码可以合并到头文件中,并且可以针对操作系统、编译器、链接器和或应用程序的新编译而改变。应当理解,在一些实施例中,保留字段230中的非零值可以导致存储器管理单元或其他硬件转换逻辑对非法地址条件的断言。传统上,这种情况通常导致操作系统终止应用程序或设备驱动程序。然而,在一些实施例中,可以捕获该条件并将其用于提供用于地址转换目的的页面大小提示。而且,在一些实施例中,硬件转换逻辑可以包括可配置模式,其可以被启用或禁用,以便防止被发信号通知即,使得硬件转换逻辑简单地忽略非零比特的情况。这样,每当使用页面大小提示时,可以适当地设置硬件转换逻辑的模式。现在转到图4,该图示出了用于软件页面错误处理器的操作序列250,该软件页面错误处理器实现了以与本发明一致的方式结合对页面大小提示的支持的软件实现的页面错误处理逻辑。例如,响应于硬件转换逻辑对页面错误的断言,可以启动该操作序列,并且可以在OS,管理程序,虚拟机监视器,内核或其他低级软件中实现该操作序列。此外,序列250响应于与尚未分配的有效地址相关联的页面错误而实现新存储器页面的自动分配,但是应当理解,在其他实施例中,处理存储器分配可以与页面错误处理分开。向序列250呈现虚拟地址,例如有效地址,并且在框252中通过在实现环境的硬件页表的一个或多个数据结构中搜索匹配的页表条目开始。现在推迟搜索匹配的页表条目所涉及的操作下面结合图5讨论,控制传递到框254,其中确定匹配的页表条目是否已经找到。如果是,则控制转到框256以使用所定位的页表条目来响应页面错误,其方式对于受益于本公开的本领域普通技术人员来说是显而易见的。然而,如果未找到,则块254将控制传递到块258以访问有效地址的一个或多个保留位,以确定页面大小提示是否已被编码到有效地址中,例如,通过应用掩码并确定是否任何未屏蔽的位都是非零值。如果未屏蔽的比特都为零,则框260将控制传递到框262,以将具有默认存储页面大小的新存储页面分配给有效地址,因为在有效地址中没有编码页面大小提示。新内存页面的分配可以包括通过为内存页面创建新的页面表条目来保留进程的内存页面,以及将该页面交换到主内存中,或者对于受益于本公开的本领域普通技术人员来说是显而易见的其他操作或操作的组合。特别是在包含对应于不同页面大小的多个页面大小特定数据结构的硬件页面表的情况下,新页面表条目的创建可以包括在特定于默认页面大小的数据结构中创建新页面表条目。另一方面,如果块260确定非零值存储在有效地址的未屏蔽位中,则在有效地址中编码页面大小提示,并且控制转到块264以确定是否页面大小提示的请求的内存页面大小被允许。例如,如果请求的内存量不可用,则可以拒绝所请求的内存页面大小。如果不允许,控制转到框262以分配默认页面大小;然而,如果允许,则控制转到框266以分配具有由页面大小提示指示的所请求页面大小的新存储器页面。在不同数据结构维持与不同页面大小相关联的页表条目的情况下,例如,可以在特定于由页面大小提示指示的页面大小的数据结构中为新存储页面创建新页表条目。在完成块256,262或266中的任何一个时,认为页面错误被处理,并且序列250完成。这样,利用序列250,可以使用编码到有效地址中的页面大小提示来创建新的页面表条目,并基于由页面大小提示指示的页面大小来分配新的存储器页面。然而,在一些实施例中,页面大小提示可用于加速和或简化对已经分配的存储器页面的页面错误的处理。例如,图5示出了用于实现对图4的PTE块252的搜索的示例操作序列。可以理解,类似的操作序列也可以用于存储器分配与页面错误分开处理的实现中。首先,在框280中,访问输入到页面错误处理程序的有效地址的一个或多个保留位,以确定页面大小提示是否已被编码到有效地址中,例如,通过应用掩码和确定是否有任何未屏蔽的比特是非零值。如果未屏蔽的比特全为零,则框282将控制传递到框284以遍历各种硬件页表数据结构以尝试在假设默认页面大小的情况下找到有效地址的匹配页表条目。在一些实施例中,缺少页面大小提示还可以导致定位与具有除默认页面大小之外的页面大小的存储器页面相对应的匹配页面表条目。还应当理解,在框284中执行的搜索也可能在计算上是昂贵的,因为可能需要访问若干不同的数据结构以尝试定位匹配的页表条目,甚至可能需要从大容量存储器中检索,受益于本公开的本领域普通技术人员将理解。因此,块286确定是否找到匹配的页表条目,如果是,则在块288返回匹配的页表条目。然而,如果不是,则控制转到块290以返回未找到的指示。另一方面,如果块282确定非零值存储在有效地址的未屏蔽位中,则在有效地址中编码页面大小提示,并且控制转到块292以搜索与页面大小提示指示的页面大小相关联的一个或多个数据结构。考虑到预期的页面大小是已知的,因此在块292中执行的搜索可以比完整搜索在计算上更便宜,因此页面大小提示辅助搜索可以比完全搜索更有效,并且在一些实施例中,减少与页表错误相关的延迟。框294接下来确定是否找到匹配的页面表,如果是,则控制转到框288以返回匹配的页面表条目。否则,框294可以将控制传递到框284以尝试完全搜索。然而,在其他实施例中,可能不需要完全搜索,并且框294可以通过将控制直接传递到框290来返回未找到的指示。这样,利用框252,可以使用编码到有效地址的页面大小提示,基于由页面大小提示指示的页面大小来来加速页面表条目的位置。在一些实施例中,例如,加速可以由于绕过对硬件页表遍历时通常会访问的至少一个数据结构的访问以获取缺少编码页大小提示的内存访问指令而发生。应当理解,可以以与本发明一致的多种方式将页面大小提示编码到有效或虚拟地址中。在一些实施例中,例如,可以将页面大小提示编码到与构建程序有关的虚拟地址,例如,在程序的编译,优化,链接,安装或部署期间。在这样的实施例中,在构建程序期间,页面大小提示可以被编码到由程序中的存储器访问指令引用的一个或多个虚拟地址的未使用和保留字段中,并且程序可以利用存储器访问指令构建,使得当检测到由程序执行的数据处理系统的硬件转换逻辑的存储器访问指令引起的页面错误时,可以在执行软件地址转换操作时使用页面大小提示。例如,图6示出了构建程序序列的操作300,其包括在本发明的一些实施例中可以支持的三种不同场景。在图6的示例中,页面大小提示被示为响应于编译器指令框302-304,响应于优化框306-310,并且响应于生成可执行文件框312-314,被编码到存储器访问指令中。在构建程序期间执行的其他操作,例如,解析源代码,生成中间代码,运行各种代码优化,生成可执行代码的打包代码,将代码与其他可执行代码和或库链接,部署或安装代码等,为了简化下文的讨论,从图6中省略,但是应该理解,这些操作在本领域中通常是理解的,并且将这里描述的功能结合到这些操作中的任何一个都在受益于本公开的本领域普通技术人员的能力之内。然而,图6在框316中示出了作为构建的结果的一个或多个可执行文件的输出,应当理解,其可以包括具有编码到未使用和保留的有效或虚拟地址的字段的页面大小提示的一个或多个存储器访问指令。还应当理解,在一些实施例中,可能不支持图6中所示的所有三种情形。还应当理解,在其他实施例中,可以使用不同的场景将页面大小提示编码到程序的存储器访问指令中,因此本发明不限于图6中所示的特定场景。例如,框302-304示出了应用程序开发者将编译器指令插入正在开发的应用程序的源代码中的情形,其可以由编译器检测框302以使编译器修改程序中的一个或多个存储器访问指令以将页面大小提示编码到那些存储器访问指令中框304。例如,编译器指令可以为所有或部分源代码启用或禁用页面大小提示编码。编译器指令还可以为特定存储器分配指令、特定代码段或某些类型的指令例如,用于获取数据的指令与获取其他程序指令的指令等指定期望的页面大小。指令可以与单个指令、代码段、特定方法、类或模块、或整个程序相关联。通常,指令使应用程序开发人员能够控制程序构建过程,以使正在开发的应用程序使用应用程序开发人员所需的页面大小。然而,还应理解,在其他实施例中,开发者还可以以其他方式控制页面大小提示的使用。另一方面,框306-310示出了编译器例如在优化期间识别某些页面大小对于某些存储器访问指令或请求是最佳的情形。例如,作为优化的一部分,框306可以分析存储器请求模式以尝试识别用于编码页面大小提示的合适候选者。响应于识别这样的候选者,框308可以将控制转移到框310以修改与这些候选者相关联的存储器访问指令以编码用于合适页面大小的页面大小提示。例如,当确定程序中的关键代码段一致访问的存储量大于默认页面大小时,可能存在合适的候选者,使得变得有利以在单个、较大的页面而不是多个页面内维持整个存储器量,否则可能会被换入和换出以响应其他内存流量。框312-314示出了另一种场景,其中编译器或链接器可以确定在构建过程期间生成的任何可执行文件是否适合特定页面大小。响应于检测到这样的场景,例如,块312可以将控制传递到块314,以将程序配置为以预定页面大小加载,例如,通过将页面大小提示编码到为程序或者为特定模块,库,部分,类,文件等分配存储器的指令中。因此,例如,如果可以确定编译的应用程序将适合单个2MB页面,则在一些实施例中可能希望将应用程序配置为在加载时请求2MB页面,使得整个应用程序被加载到单个内存页面中。通过这样做,避免了页面交换以便为应用程序加载各种模块或代码段,从而在适当的场景中提高了整体应用程序性能。因此,符合本发明的实施例可以使得未使用和保留的虚拟或有效地址位能够被重新利用以将页面大小提示传达给操作系统、管理程序、虚拟机监视器、内核或其他数据处理系统中的低级软件,以和页面错误处理结合使用。此外,在一些实施例中,可以在执行程序之前执行实际编码,并且在一些实施例中,可以在程序的编译,链接,部署或安装期间执行实际编码。此外,在一些实施例中,构建过程还可以包括在程序中并入一个或多个指令以配置数据处理系统的程序硬件转换逻辑以在响应于虚拟或有效地址的未使用和保留字段中的非零值而禁用生成非法地址通知的模式下操作。在其他实施例中,硬件转换逻辑可以不生成非法地址通知,并且在一些实施例中,适当模式的选择可以和页面大小提示启用程序例如由操作系统的执行分开。以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

权利要求:1.一种在支持多个存储页面大小的类型的数据处理系统中处理页面错误的方法,该方法包括:检测由处理器的硬件转换逻辑产生的页面错误,该页面错误与由处理器执行的程序代码请求的虚拟地址相关联;从所述虚拟地址确定编码到所述虚拟地址的未使用和保留的字段的页面大小提示;和使用所确定的页面大小提示对所述虚拟地址执行软件地址转换操作。2.如权利要求1所述的方法,其中在执行所述程序代码之前将所述页面大小提示编码到所述未使用和保留的字段中。3.如权利要求2所述的方法,其中,在编译、链接、部署或安装所述程序代码期间,将页面大小提示编码到所述未使用和保留的字段中。4.根据权利要求1所述的方法,其中所述硬件转换逻辑可配置为以第一和第二模式操作,其中在所述第一模式中,响应于所述虚拟地址的所述未使用和保留的字段中的一个或多个值,所述硬件转换逻辑生成非法地址通知,其中在第二模式中,响应于所述虚拟地址的所述未使用和保留的字段中的一个或多个值被禁用,所述硬件转换逻辑生成非法地址通知,并且其中该方法还包括配置第二种模式下的所述硬件转换逻辑。5.如权利要求4所述的方法,其中,所述硬件转换逻辑被配置为,在第一模式中,响应于所述虚拟地址的未使用和保留的字段中的非零值,生成非法地址通知。6.如权利要求1所述的方法,还包括:基于可用存储器,选择性地分配与所确定的页面大小提示相对应的页面大小。7.如权利要求1所述的方法,其中在搜索硬件页表的一个或多个数据结构之前执行确定所述页面大小提示,并且其中使用所确定的页面大小提示对所述虚拟地址执行所述软件地址转换操作包括使用所确定的页面大小提示访问所述一个或多个数据结构。8.如权利要求7所述的方法,其中,所述一个或多个数据结构包括至少被配置为为特定页面大小的页面存储地址转换信息的至少一个页面大小特定的数据结构,并且其中使用所确定的页面大小提示为所述虚拟地址执行软件地址转换操作包括,使用所确定的页面大小提示来访问被配置为为与所述页面大小提示相关联的所述页面大小存储地址转换信息的页面大小特定的数据结构。9.根据权利要求8所述的方法,其中,使用所确定的页面大小提示为所述虚拟地址执行所述软件地址转换操作包括,绕过对硬件页表遍历时会访问的至少一个其他数据结构的访问以获取缺少编码页大小提示的内存访问指令。10.如权利要求9所述的方法,还包括:响应于与由处理器执行的程序代码所请求的第二虚拟地址相关联的第二页错误并且缺少编码的页面大小提示,遍历所述硬件页面表的多个数据结构以识别与所述第二虚拟地址对应的页表条目。11.根据权利要求1所述的方法,其中在为所述虚拟地址分配存储器页面之前执行确定所述页面大小提示,所述方法还包括为具有由所述页面大小提示指示的页面大小的所述虚拟地址分配所述所述存储器页面。12.如权利要求11所述的方法,其中,响应于确定允许由页面大小提示指示的所述页面大小,允许为具有由所述页面大小提示指示的页面大小的所述虚拟地址分配存储器页面。13.如权利要求11所述的方法,还包括:响应于与由所述处理器执行的程序代码所请求的并且缺少编码的页面大小提示的第二虚拟地址相关联的第二页面错误,为具有默认的页面大小的所述虚拟地址分配存储器页。14.如权利要求1所述的方法,还包括:通过检测未使用和保留的字段的多个比特的至少一个子集中的非零值,从所述虚拟地址确定页面大小提示被编码到所述虚拟地址的所述未使用和保留的字段中。15.一种构建程序的方法,该方法包括:将页面大小提示编码到由存储器访问指令引用的虚拟地址的未使用和保留的字段;和利用所述存储器访问指令构建程序,使得在检测到由程序执行的数据处理系统的硬件转换逻辑的存储器访问指令引起的页面错误时,在执行软件地址转换时使用页面大小提示。16.如权利要求15所述的方法,其中,在程序的汇编或链接期间执行将所述页面大小提示编码到由所述存储器访问指令引用的所述虚拟地址的所述未使用和保留的字段中。17.如权利要求15所述的方法,其中,响应于确定所述程序的可执行文件将适合于和所述页面大小提示关联的页面大小,执行将所述页面大小提示编码到由所述存储器访问指令引用的所述虚拟地址的所述未使用和保留的字段中。18.如权利要求15所述的方法,其中,响应于在所述程序的优化期间分析数据存储器请求模式,执行将所述页面大小提示编码到由所述存储器访问指令引用的所述虚拟地址的所述未使用和保留的字段中。19.一种支持多个存储页面大小的装置,该装置包括:至少一个处理器,其包括硬件转换逻辑;和在由至少一个处理器执行时配置的程序代码,用于通过以下方式处理页面错误:检测由处理器的硬件转换逻辑产生的页面错误,该页面错误与由所述处理器执行的程序代码请求的虚拟地址相关联;从所述虚拟地址确定编码到所述虚拟地址的所述未使用和保留的字段的页面大小提示;和使用所确定的页面大小提示对所述虚拟地址执行软件地址转换操作。20.一种程序产品,包括:非瞬时性计算机可读介质;和程序代码,其存储在非瞬时性计算机可读介质上并且在由至少一个处理器执行时配置,以通过以下方式处理支持多个存储器页面大小的类型的数据处理系统中的页面错误:检测由处理器的硬件转换逻辑产生的页面错误,该页面错误与由所述处理器执行的程序代码请求的虚拟地址相关联;从所述虚拟地址确定编码到所述虚拟地址的未使用和保留的字段的页面大小提示;和使用所确定的页面大小提示对所述虚拟地址执行软件地址转换操作。

百度查询: 国际商业机器公司 页面错误解决方案

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。