CN112148638A - 用于存储器页的粒度分配的页表 - Google Patents
用于存储器页的粒度分配的页表 Download PDFInfo
- Publication number
- CN112148638A CN112148638A CN202010207207.1A CN202010207207A CN112148638A CN 112148638 A CN112148638 A CN 112148638A CN 202010207207 A CN202010207207 A CN 202010207207A CN 112148638 A CN112148638 A CN 112148638A
- Authority
- CN
- China
- Prior art keywords
- page
- memory
- page table
- walk
- size
- 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.)
- Pending
Links
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
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请公开了用于存储器页的粒度分配的页表。公开了涉及存储器分页和存储器转换的系统和方法。系统可允许通过使用以通过页系统的数据结构优化存储器使用的方式得到其大小的页表以存储器页尺寸的增加的多样性来分配存储器页。
Description
背景技术
本公开涉及存储器页系统,并且更具体地,涉及以改善的页尺寸粒度管理存储器页的页表系统。
本节旨在向读者介绍可能涉及在下文描述和/或要求保护的本公开的各个方面的本领域的各个方面。本讨论被认为有助于向读者提供背景信息,以促进更好地理解本公开的各个方面。因此,可理解,这些陈述应从这个角度来阅读,而不是作为对现有技术的承认。
许多数字计算系统可使用存储器(例如,存储器设备、存储器电路)来促进数据处理操作。存储器可存储可以在计算系统的操作期间使用的指令和/或数据。由此,存储器访问速度的增加可引起数字计算系统的性能的显著改善。
存储器可由在计算系统中运行的一个或多个进程访问。为了向进程提供存储器资源,某些计算系统可采用虚拟化的存储器来组织可用的存储器。虚拟存储器系统可将可用的存储器分成可指派给进程的块或页。进程可使用虚拟地址来访问存储器页中的存储器,虚拟地址可由虚拟存储器系统转换成对应的物理地址。虚拟地址转换过程可采用页表——存储虚拟地址与物理地址之间的映射的数据结构。为了促进利用存储器页进行的操作,存储器页可具有限定的大小。在一些情形下,限定的大小可能具有有限的粒度,从而降低存储器分配的效率。
附图说明
在阅读下列具体实施方式时并在参考附图时,可更好地理解本公开的各方面,在附图中:
图1是根据本公开的实施例的电气设备的框图,该电气设备具有可采用本文中所描述的经优化的页表的处理电路;
图2是根据本公开的一个实施例的可采用本文中所描述的经优化的页表的计算机系统的框图;
图3是根据本公开的实施例的图2的计算机系统的特定示例的框图;
图4是根据本公开的实施例的图2的计算机系统的另一特定示例的框图;
图5是根据本公开的实施例的采用可变尺寸的页表的页走查系统的示意图;
图6是根据本公开的实施例的用于实现采用可变尺寸的表的页走查策略的方法的流程图;
图7A图示出根据本公开的实施例的可与图5的页走查系统一起使用的页表条目的示例;
图7B图示出根据本公开的实施例的可与图5的页走查系统一起使用的页表条目的示例;
图7C图示出根据本公开的实施例的可与图5的页走查系统一起使用的页表条目的示例;
图7D图示出根据本公开的实施例的可与图5的页走查系统一起使用的页表条目的示例;
图7E图示出根据本公开的实施例的可与图5的页走查系统一起使用的页表条目的示例;
图7F图示出根据本公开的实施例的可与图5的页走查系统一起使用的页表条目的示例;以及
图7G图示出根据本公开的实施例的可与图5的页走查系统一起使用的页表条目的示例。
具体实施方式
下文将描述一个或多个特定实施例。为了提供对这些实施例的简要描述,说明书中并未描述实际实现方式的所有特征。可领会,在任何此类实际实现方式的开发中,如同在任何工程或设计项目中一样,为了实现开发人员的特定目标,必须作出众多特定于实现方式的决策,诸如遵守与系统相关的约束和与业务相关的约束,这些约束可能从一个实现方式到另一个实现方式而有所不同。而且,可领会,此类开发工作可能是复杂且耗时的,但是对于受益于本公开的普通技术人员而言,这仍将是设计、制作和制造的例程任务。
分页是用于存储器管理的策略,其中,可用的存储器(例如,虚拟存储器、随机存取存储器(RAM)、存储存储器)可被组织为连续的数据块或页。可由存储器管理器将页分配给在计算系统中运行的进程。实现分页系统或虚拟存储器系统的存储器管理器可将每个所分配的页与虚拟地址相关联,虚拟地址由使用该页中的存储器的进程使用。存储器管理器可通过将虚拟地址转换为物理地址而向进程提供访问。例如,虚拟地址可具有虚拟地址部分和物理地址偏移。虚拟地址部分指向存储器页的基址,并且通过将基址与物理地址偏移组合来确定物理地址。
在一些实施例中,存储器页的可用尺寸可能是有限的。结果是,可能要求可用存储器尺寸之间的存储器量的进程可能接收到过多的存储器资源。例如,如果分页系统允许4KB或2MB的页尺寸,则要求50KB的进程可能接收到2MB的分配。由此,可通过页的尺寸的粒度来促进对存储器资源的高效使用,以避免对进程的过多的存储器分配。
虚拟存储器系统可采用页表来存储存储器的物理位置与虚拟地址之间的关联。由此,当虚拟存储器系统接收使用虚拟地址的对存储器中的数据的请求时,虚拟存储器系统可采用页表来标识物理位置。页系统中的虚拟地址的转换可采用页走查方法,页走查方法采用页表。页走查方法可以是迭代过程,其中,在不同的迭代中评估虚拟地址的不同部分。在每个页走查迭代中,通过页表地址和基于虚拟地址的偏移的组合来选择页表条目。结果是,页走查方法可被视为基于虚拟地址检取一系列页表的迭代方法。页表条目可指向页或页表。如果页表条目指向页,则页走查过程结束。如果页走查方法指向页表,则使用目标页表的地址开始新的迭代。所执行的迭代的数量可与可用的页尺寸相关联。
例如,具有48位地址、4KB页表和4个层级的虚拟存储器系统可自然地支持尺寸为4KB的页(利用第4级页走查检取的页)、尺寸为2MB的页(利用第3级页走查检取的页)、和尺寸为1GB的页(利用第2级页走查检取的页)。在许多应用中,在4KB页与2MB页之间的选择可能是限制性的,并且对中间页尺寸的支持可通过多个页的聚合来提供。作为示例,64KB页可通过分配16个连续的4KB页来支持,这些4KB页可在第4级页走查中被检取。在呈现出频繁的对64KB页的分配的计算系统中,诸如在某些图形应用中,频繁的对连续页的分配可能不是最佳的。
本文中所描述的实施例涉及可使用改善存储器页尺寸的粒度的可变页表结构和合适的页表条目的存储器管理系统和方法。具体而言,至少一个页走查层级的页表(与页走查过程的迭代相关联的页表)可具有不同的尺寸,并且页表条目可包括指示存储器页的尺寸的数据。而且,如下文所详述,可基于与页表相关联的存储器页的尺寸得到页表的尺寸。实施例因此可呈现出减少的通过页表对存储器的利用。在一些实施例中,减少的页表的检取可伴随有对相邻页表的预取,从而降低了页检取事件的频率。虽然本文中有关的具体描述集中于具有特定的页尺寸、页表尺寸和寻址方案,但采用其他的页尺寸、页表尺寸和寻址方案的实施例也是本公开的主题。
考虑到前述内容,图1图示出可受益于本文中所描述的改善的页表数据结构的数据处理系统100。系统100可具有存储器转换系统102。存储器转换系统102可耦合至一个或多个中央处理单元(CPU)或处理器104A、104B,耦合至协处理器106(例如,图形处理单元(GPU)、数学处理器、实现数据处理的可编程逻辑)。存储器转换系统102可管理存储器设备中的存储器,诸如,系统存储器108(例如,随机存取存储器设备、硬盘设备、固态存储器设备等)、图形存储器110、或其他类型的存储器。一般而言,实现存储器转换系统102的存储器转换电路可与处理器处于同一管芯中,可与处理器处于同一封装中的不同管芯中(例如,芯片上系统),或者可处于不同的封装中。
处理器104A、104B和协处理器106可具有一个或多个进程112。存储器转换系统102可将一个或多个页分配至进程112,并且这些页可用于存储由相应的进程112使用的指令数据(例如,指令栈)和/或数据结构。为了使用所分配的存储器,进程112可使用虚拟地址来请求数据,并且存储器转换系统102可标识对应的物理地址。为此,存储器转换系统102可包括本地地存储的页表114和页走查逻辑116,存储器转换系统102可被实现为在处理器上运行的指令和/或被实现为硬件电路,其可将虚拟地址转换为物理地址。在一些实施例中,页表114的部分可被存储在系统存储器108中,并且可在操作期间被检取。
图2-图4是可实现数据处理系统100的示例性计算机架构的框图。本领域中已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
现在参考图2,所示出的是根据本公开一个实施例的系统200的框图。系统200可以包括一个或多个处理器210、215,这些处理器耦合到控制器中枢220。在一个实施例中,控制器中枢220包括图形存储器控制器中枢(GMCH)290和输入/输出中枢(IOH)250(其可以在分开的芯片上);GMCH290包括存储器和图形控制器,存储器240和协处理器245耦合到该存储器和图形控制器;IOH 250将输入/输出(I/O)设备260耦合到GMCH 290。或者,存储器和图形控制器中的一个或这两者被集成在(如本文中所描述的)处理器内,存储器240和协处理器245直接耦合到处理器210,并且控制器中枢220与IOH 250处于单个芯片中。
附加的处理器215的任选性在图2中通过虚线来表示。每一处理器210、215可包括一个或多个处理核。存储器240可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢220经由诸如前端总线(FSB)之类的多分支总线、诸如快速路径互连(QPI)之类的点对点接口、或者类似的连接295来与(多个)处理器210、215进行通信。
在一个实施例中,协处理器245是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。在一个实施例中,控制器中枢220可以包括集成图形加速器。在物理资源210、215之间可以存在包括架构、微架构、热、功耗特性等一系列品质度量方面的各种差异。
在一个实施例中,处理器210执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器210将这些协处理器指令识别为具有应当由附连的协处理器245执行的类型。因此,处理器210在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器245。(多个)协处理器245接受并执行所接收的协处理器指令。
现在参见图3,所示出的是根据本公开的实施例的第一更具体的示例性系统300的框图。如图3中所示,多处理器系统300是点对点互连系统,并且包括经由点对点接口350耦合的第一处理器370和第二处理器380。在本公开的一个实施例中,处理器370和380分别是处理器210和215,而协处理器338是协处理器245。在另一实施例中,处理器370和380分别是处理器210和协处理器245。
处理器370和380示出为分别包括集成存储器控制器(IMC)单元372和382。处理器370还包括作为其总线控制器单元的一部分的点对点(P-P)接口376和378;类似地,第二处理器380包括P-P接口386和388。处理器370、380可以经由使用点对点(P-P)接口电路378、388的P-P接口350来交换信息。如图3中所示,IMC 372和382将处理器耦合到相应的存储器,即存储器332和存储器334,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器370、380可各自经由使用点对点接口电路376、394、386、398的各个P-P接口352、354来与芯片组390交换信息。芯片组390可以任选地经由高性能接口392来与协处理器338交换信息。在一个实施例中,协处理器338是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。共享高速缓存(未示出)可被包括在任一处理器中,或在这两个处理器的外部但经由P-P互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在共享高速缓存中。芯片组390可以经由接口396耦合到第一总线316。在一个实施例中,第一总线316可以是外围部件互连(PCI)总线或诸如PCI快速总线或另一第三代I/O互连总线之类的总线,但是本公开的范围不限于此。
如图3中所示,各种I/O设备314可连同总线桥318一起耦合到第一总线316,该总线桥318将第一总线316耦合到第二总线320。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器315耦合到第一总线316。在一个实施例中,第二总线320可以是低引脚数(LPC)总线。在一个实施例中,各种设备可耦合到第二总线320,这些设备包括例如键盘和/或鼠标322、通信设备327以及存储单元328,该存储单元328诸如可包括指令/代码和数据330的盘驱动器或者其他大容量存储设备。此外,音频I/O 324可以被耦合到第二总线320。注意,其他架构是可能的。例如,代替图3的点对点架构,系统可以实现多分支总线或其他此类架构。
现在参考图4,示出的是根据本公开的实施例的第二更具体的示例性系统400的框图。图3和4中的类似元件使用类似的附图标记,并且从图4中省略了图3的某些方面以避免混淆图4的其他方面。图4图示处理器370、380可分别包括集成存储器和I/O控制逻辑(“CL”)372和382。因此,CL 372、382包括集成存储器控制器单元,并包括I/O控制逻辑。图4图示不仅存储器332、334耦合到CL 372、382,而且I/O设备414也耦合到控制逻辑372、382。传统I/O设备415被耦合到芯片组390。
本文公开的页表结构的实施例和页走查结构的实施例可以被实现在硬件、软件、固件或此类实现方式的组合中。本公开的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。出于本申请的目的,处理系统包括具有处理器的任何系统,该处理器诸如例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制造用于执行本文中所述的技术的逻辑。被称为“IP核”的此类表示可以被存储在有形的机器可读介质上,并可被供应给各个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非暂态、有形布置,其包括存储介质,诸如硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)介质以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
因此,本公开的实施例还包括非暂态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
图5图示出使用减少的页表存储器并且能以上文所描述的系统中的任一者实现的页走查图500。页走查图可操作以标识与虚拟地址502相关联的物理页。如上文所详述,虚拟地址502可具有可与页走查方法的第4级、第3级和第2级相关联的页走查层级部分504A、504B和504C。当以尺寸为64KB的页进行操作时,第1级页走查部分和存储器偏移部分可分别为506A和506B。当以尺寸为4KB的页进行操作时,第1级页走查部分和存储器偏移部分可分别为508A和508B。当以尺寸为2MB的页进行操作时,510部分可以是存储器偏移部分。页层级1中和存储器偏移中的重叠寻址机制连同本文中所描述的其他特征促进本文中所描述的由页表使用的存储器资源的减少。
页走查方法可沿页走查层级4(层级512)、页走查层级3(层级513)、页走查层级2(层级514)以及页走查层级1(层级515)迭代地执行。在页走查层级512中,可将初始基址520与504A部分组合(例如,将初始基址520加到504A部分),以在第4级页表522中标识页表条目521。来自页表522的表条目可指向第3级页表525的基址523。在页走查层级513中,可将基址523与504B部分组合,以在第3级页表525中标识下一页表条目524。来自页表525的条目可指向第2级页表528的基址526。在页走查层级514中,可将基址526与504C部分组合,以在第2级页表528中标识下一表条目。在所图示的系统中,第2级页表528可具有三种类型的条目——页表条目527A、527B和527C,并且每个条目可分别与页尺寸4KB(页534)、64KB(页540)、和2MB(未示出)相关联。下文在对图7A-图7G的讨论中详述条目与页的尺寸之间的关系的细节。
当504C部分指向条目527A时,页走查层级515将标识4KB页表531的基址529。页表531可包括512个诸如条目530之类的条目,并且每个条目可指向诸如页534之类的4KB页。当504C部分指向页表条目527B时,页走查层级515将标识256B页表537的基址535。页表537可包括32个诸如页表条目536之类的条目,并且每个条目可指向诸如页540之类的64KB页。由此,页表531和537两者对2MB的物理位置进行寻址。然而,相较于占用256B的页表537,对64KB页进行寻址的常规页表将占用4KB,因为常规页表将以与页表531的布置类似的布置来存储针对多个4KB的条目。
更一般地,可基于与条目相关联的页的尺寸来调整表的尺寸。基于页尺寸和在页层级下由页表中的条目覆盖的存储器量,可调整页表的尺寸。在以上示例中,每个层级515页表覆盖2MB的存储器。由此,4KB页可采用要存储512个条目的4KB页表,64KB页可采用要存储32个条目的256B页表,256KB页可采用要存储8个条目的64B页表,并且1MB页可采用要存储2个条目的16B页表。这允许以页尺寸2MB与4KB之间的多样化的尺寸粒度并且以由页表占用的存储器空间的经济性来对页进行分配。而且,某些存储器系统能以固定的长度将页表检取至本地存储器,并且使用减小的尺寸的表可促进预取。例如,如果系统通过逐分页事件检取4KB的存储器来进行操作,则由于特定的页走查事件导致的对256B的页表的检取可能伴随有对15个其他256B的页表的预取以供未来使用。此种预取可加速计算系统的操作。
如上文所讨论,在页走查层级512中,可将基址529与508A部分组合,以在第1级页表531中标识页表条目530。条目530可指向针对4KB页534的基址532。可使用508B部分来确定通过虚拟地址502请求的特定存储器。508A部分可具有用于对页表531中的512个条目中的一个条目进行寻址的9个位,并且508B部分可具有用于对页534中的64个数据块中的一个数据块533进行寻址的6个位。
为了检取64KB页,在页走查层级512中,可将基址535与506A部分组合,以在减小尺寸的页表537中标识页表条目536。页表条目536可指向针对64KB页540的基址538。可使用506B部分来确定通过虚拟地址502请求的特定存储器。相比于508A部分和508B部分,506A部分可具有用于对页表537中的32个条目中的一个条目进行寻址的5个位,并且506B部分可具有用于对页540中的1024个数据块中的一个数据块539进行寻址的10个位。为了检取2MB页,在页走查层级514中,条目527C可指向2MB页(未图示出)的基址,并且可使用15位的510部分来标识2MB页中的32000个块中的一个块。
上文所讨论的存储器转换方法549可由存储器转换系统(例如,存储器转换系统102)实现为图6中所图示的流程图。存储器转换方法549可开始于存储器转换系统接收对数据的请求(框550),该请求可包括虚拟地址。在决策框552中,存储器地址系统可验证虚拟地址是否位于转换后备缓冲器(TLB)中。如果虚拟地址转换被高速缓存在TLB中,则在框554中,可立即提供对存储器的访问。如果在决策框552中发生分页错误,则存储器地址系统可开始页走查过程555。如上文所讨论,页走查过程555可以是迭代的。在每个迭代中,在框556中可检取来自页表的页条目。在决策框558中,转换系统可判定页条目是否存储对页表的引用或者该条目是否为指向页的叶级条目。转换系统可通过检查页表条目中的标志(例如,页表尺寸标志、页尺寸标志)来执行该决策。
如果条目指向页表,则在框560中存储器转换系统可检取下一页表。在其中多个表尺寸是可能的页走查迭代期间,对页表条目中的标志的检查可确定页表(例如,4KB页表、256B页表)的尺寸。在一些实施例中,如上文所讨论,对较小尺寸的页表的检取可伴随有对其他页表的预取。在框562中,如上文所讨论,可从虚拟地址的部分确定页表内的偏移。如框560中所标识,该部分中的位的数量可基于页表的尺寸来确定。基于页表和偏移,在框556中可开始页走查过程555的新的迭代。在决策框558中,一旦页表条目指向页(例如,条目为叶条目),则在框564中存储器转换系统可检取叶页。在框554中可提供对所请求的存储器的访问。
应当理解,实现存储器转换方法549的存储器转换系统可以是处理器的存储器管理单元(MMU)的部分,或者可以是处理器的存储器接口的部分。存储器转换系统可被实现在软件、可编程结构(例如,现场可编程门阵列)中,和/或被实现在硬化(hardened)的逻辑中。而且,虽然存储器转换方法549以迭代的方式被描述,但实现方式可采用顺序的过程(即,展开循环实现方式)。
图7A-图7G图示出可与图5中所图示的页走查策略一起使用的页表条目的示例。图7A的页表条目521是可在第4级页表522中使用的表条目,图7B的页表条目524是可在第3级页表525中使用的表条目,图7C、图7D和图7E的页表条目527A、527B和527C分别可在第2级页表528中使用,图7F的条目530可在系统的4KB的第1级页表531实现方式中使用,并且图7G的页表条目536可在256B的第1级页表537中使用。如上文所讨论,条目可存储页表的物理地址,或者当条目是页走查的叶时,存储页的物理地址。在图示中,页表条目521、524、527A和527B分别存储到页表的基址523、526、529和535,而页表条目527C、530和536分别存储到存储器中的页的基址600、532和538。页表条目还可包括标志。存在标志602可指示通过页表条目寻址的页或页表是否存在或者是否可能发生页错误,并且读取/写入标志604可用于指示页错误的类型(即,写入异常、读取异常)。页控制标志605可用于在页走查期间控制分页和/或对页表或存储器页的高速缓存。本地存储器标志608可指示通过页表条目寻址的页或页表是否处于本地存储器中或者是否被存储在存储存储器中。
本文中所描述的页走查方法可采用可变尺寸的表和页,并且由此,可包括其中页表条目是叶条目的过程,诸如,图6中的决策框558和框562。信息能以页尺寸标志的形式被编码在页表条目中。在所图示的示例中,页表条目527A、527B和527C中的页标志606A和606B编码该信息。在示例中,条目527A中的‘00’指示该条目指向4KB页,条目527B中的‘01’指示该条目指向64KB页,并且条目527C中的‘10’指示该条目指向2MB页。逻辑电路可使用该信息来确定条目527C是叶节点。此外,逻辑电路可使用该信息来确定页表条目527A指向4KB页表,并且页表条目527B指向256B页表。应当注意,为了对可变尺寸的表进行寻址,可调整页表的地址的尺寸。在示例中,基址523、526和529在它们对4KB页表进行寻址时是具有34个位的4KB对齐的指针,并且基址535是对256B表进行寻址的具有38个位的256B对齐的指针。而且,基址532、538和600分别是具有34个位的4KB对齐的指针、具有30个位的64KB对齐的指针、以及具有25个位的2MB对齐的指针。
虽然图5和图7A-图7G中的以上图示是指与特定架构一起使用的实施例,但是,应当理解,此处所描述的特征可适于或被重新布置成用于实现以不同的架构来实现上文所描述的页走查方法。由此,应当理解,上文所讨论的诸如可变尺寸的页表、页尺寸标志和控制逻辑之类的特征可与实现不同数量的页走查层级、不同数量的存储器尺寸和页表尺寸、不同的寻址方案、以及用于将信息编码在页表条目中的不同的编码的虚拟存储器管理控制器一起使用。
尽管本公开中阐述的实施例易于具有各种修改和替代形式,但是,特定实施例已作为示例在附图中示出并已在本文中详细描述。然而,可理解,本公开并不旨在被限制于所公开的特定形式。本公开将涵盖落入如由所附权利要求所限定的本公开的精神和范围内的所有修改、等效方案和替代方案。
Claims (20)
1.一种处理器,包括:
处理电路,所述处理电路耦合至一个或多个存储器设备;以及
存储器转换电路,所述存储器转换电路接收虚拟地址并确定所述一个或多个存储器设备中与所述虚拟地址相关联的物理地址,其中,所述存储器转换电路包括使用一系列页走查迭代来标识与所述虚拟地址相关联的存储器页的页走查逻辑电路,其中,所述一系列页走查迭代中的至少一个页走查迭代包括:
使用所述虚拟地址的部分和来自先前的迭代的先前的基址来标识页表中与所述至少一个页走查迭代对应的页表条目;
基于所述页表条目中的基址来确定下一页表;
基于所述页表条目中的页表尺寸标志来确定所述下一页表的尺寸;以及
基于所述下一页表的尺寸和所述基址来访问所述下一页表。
2.如权利要求1所述的处理器,其中,所述至少一个页走查迭代包括确定所述页表条目中的所述基址是与所述下一页表相关联还是与所述存储器页相关联。
3.如权利要求2所述的处理器,其中,在所述至少一个页走查迭代中,与所述页表条目相关联的所述下一页表包括与64KB存储器页相关联的256B页表或者与4KB存储器页相关联的4KB页表,或者其中,与所述页表条目相关联的所述存储器页包括2MB存储器页。
4.如权利要求1所述的处理器,其中,所述至少一个页走查迭代包括基于所述页表条目中的页尺寸标志来确定所述存储器页的第二尺寸。
5.如权利要求1所述的处理器,其中,所述至少一个页走查迭代包括基于所述页表条目中的所述页表尺寸标志来确定所述存储器页的第二尺寸。
6.如权利要求1-5中任一项所述的处理器,其中,所述处理电路包括中央处理单元CPU或图形处理单元GPU中的一个或多个或这两者。
7.如权利要求1-5中任一项所述的处理器,其中,所述处理电路包括多个进程,并且其中,所述存储器转换电路包括虚拟存储器系统。
8.如权利要求1-5中任一项所述的处理器,其中,所述一个或多个存储器设备包括随机存取存储器RAM设备、硬盘存储器设备、或固态存储器设备、或者以上各项的任何组合。
9.如权利要求1-5中任一项所述的处理器,其中,所述下一页表的尺寸有256B或4KB。
10.如权利要求9所述的处理器,其中,所述虚拟地址包括48位,并且其中,所述存储器页的第二尺寸是4KB、64KB、2MB或1GB中的一者。
11.如权利要求1-5中任一项所述的处理器,其中,所述存储器转换电路包括转换后备缓冲器TLB。
12.一种用于从虚拟地址确定存储器页的页走查方法,所述方法包括一系列页走查层级,其中,相应的页走查层级包括:
使用所述虚拟地址的相应部分和来自先前的页走查层级的基址或初始基址来确定相应页表中与所述相应的页走查层级对应的相应的页表条目;以及
基于所述相应的页表条目中的相应基址来访问下一页表;
其中,至少一个相应的页走查层级包括基于所述相应的页表条目中的标志来确定所述下一页表的尺寸。
13.如权利要求12所述的页走查方法,其中,所述相应的页走查层级包括确定所述相应的页表条目指向所述下一页表还是指向所述存储器页。
14.如权利要求12或13所述的页走查方法,其中,所述一系列页走查层级包括高达4个页走查层级,并且其中,所述至少一个相应的页走查层级是第二页走查层级。
15.如权利要求12或13所述的页走查方法,其中,所述下一页表的尺寸是256B或4KB中的一者。
16.如权利要求15所述的页走查方法,其中,访问所述下一页表包括:当所述下一页表的尺寸为256B时,预取与所述下一页表相邻的15个页表。
17.一种数据处理系统,包括:
存储器,所述存储器包括布置在页表层级中的多个页表并且包括多个存储器页;
处理电路,所述处理电路包括多个进程;以及
存储器转换逻辑,所述存储器转换逻辑用于基于由所述多个进程中的第一进程接收的第一虚拟地址来访问第一存储器页,其中,所述存储器转换逻辑包括用于使用所述第一虚拟地址来标识所述多个页表中的一系列页表的页走查逻辑电路;并且
其中,所述一系列页表中的页表处于不同的页表层级中,并且至少一个页表层级包括第一尺寸的第一页表和第二尺寸的第二页表,所述第二尺寸不同于所述第一尺寸。
18.如权利要求17所述的数据处理系统,其中,所述第一尺寸为256B,并且所述第二尺寸为4KB。
19.如权利要求17或18所述的数据处理系统,其中,所述至少一个页表层级是第一页表层级,其中,第二页表层级的第三页表包括页表条目,所述页表条目包括针对所述第一页表层级的第四页表的基址以及指示所述第四页表的第三尺寸的标志。
20.如权利要求19所述的数据处理系统,其中,所述标志指示与所述页表条目相关联的第二存储器页的尺寸。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/457,019 US10817433B2 (en) | 2019-06-28 | 2019-06-28 | Page tables for granular allocation of memory pages |
US16/457,019 | 2019-06-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112148638A true CN112148638A (zh) | 2020-12-29 |
Family
ID=68237782
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010207207.1A Pending CN112148638A (zh) | 2019-06-28 | 2020-03-23 | 用于存储器页的粒度分配的页表 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10817433B2 (zh) |
EP (1) | EP3757804A1 (zh) |
CN (1) | CN112148638A (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11231930B2 (en) * | 2019-11-25 | 2022-01-25 | Alibaba Group Holding Limited | Methods and systems for fetching data for an accelerator |
US11816037B2 (en) * | 2019-12-12 | 2023-11-14 | Advanced Micro Devices, Inc. | Enhanced page information co-processor |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8843727B2 (en) * | 2004-09-30 | 2014-09-23 | Intel Corporation | Performance enhancement of address translation using translation tables covering large address spaces |
US7370174B2 (en) * | 2005-01-05 | 2008-05-06 | Intel Corporation | Method, system, and program for addressing pages of memory by an I/O device |
US8032897B2 (en) * | 2007-07-31 | 2011-10-04 | Globalfoundries Inc. | Placing virtual machine monitor (VMM) code in guest context to speed memory mapped input/output virtualization |
US8271700B1 (en) * | 2007-11-23 | 2012-09-18 | Pmc-Sierra Us, Inc. | Logical address direct memory access with multiple concurrent physical ports and internal switching |
US8285915B2 (en) | 2010-01-13 | 2012-10-09 | International Business Machines Corporation | Relocating page tables and data amongst memory modules in a virtualized environment |
US9588902B2 (en) * | 2012-12-04 | 2017-03-07 | Advanced Micro Devices, Inc. | Flexible page sizes for virtual memory |
US9858198B2 (en) | 2015-06-26 | 2018-01-02 | Intel Corporation | 64KB page system that supports 4KB page operations |
CN109690505B (zh) | 2016-09-26 | 2023-08-08 | 英特尔公司 | 用于针对虚拟化输入/输出实施方式的混合层地址映射的设备和方法 |
US10380039B2 (en) | 2017-04-07 | 2019-08-13 | Intel Corporation | Apparatus and method for memory management in a graphics processing environment |
GB2565069B (en) * | 2017-07-31 | 2021-01-06 | Advanced Risc Mach Ltd | Address translation cache |
CN109002706B (zh) * | 2018-06-08 | 2021-04-06 | 中国科学院计算技术研究所 | 一种基于用户级页表的进程内数据隔离保护方法和系统 |
-
2019
- 2019-06-28 US US16/457,019 patent/US10817433B2/en active Active
-
2020
- 2020-03-23 CN CN202010207207.1A patent/CN112148638A/zh active Pending
- 2020-03-27 EP EP20166394.5A patent/EP3757804A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US10817433B2 (en) | 2020-10-27 |
EP3757804A1 (en) | 2020-12-30 |
US20190324919A1 (en) | 2019-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9921972B2 (en) | Method and apparatus for implementing a heterogeneous memory subsystem | |
US11074190B2 (en) | Slot/sub-slot prefetch architecture for multiple memory requestors | |
US20210374069A1 (en) | Method, system, and apparatus for page sizing extension | |
JP6009589B2 (ja) | マルチレベルのキャッシュ階層におけるキャストアウトを低減するための装置および方法 | |
JP5090047B2 (ja) | ロックされたキャッシュ内のセットの置換を管理するための方法、コンピュータ・プログラム、キャッシング・システムおよびプロセッサ | |
US20210406170A1 (en) | Flash-Based Coprocessor | |
Qin et al. | A two-level caching mechanism for demand-based page-level address mapping in NAND flash memory storage systems | |
US9418011B2 (en) | Region based technique for accurately predicting memory accesses | |
US11409663B2 (en) | Methods and systems for optimized translation of a virtual address having multiple virtual address portions using multiple translation lookaside buffer (TLB) arrays for variable page sizes | |
CN109219804B (zh) | 非易失内存访问方法、装置和系统 | |
WO2021061466A1 (en) | Memory management unit, address translation method, and processor | |
CN113039531B (zh) | 用于分配缓存资源的方法、系统和存储介质 | |
WO2013101158A1 (en) | Metadata management and support for phase change memory with switch (pcms) | |
EP3757804A1 (en) | Page tables for granular allocation of memory pages | |
US8661169B2 (en) | Copying data to a cache using direct memory access | |
Kanakagiri et al. | MBZip: Multiblock data compression | |
US20160092369A1 (en) | Partner-Aware Virtual Microsectoring for Sectored Cache Architectures | |
CN116340203A (zh) | 数据预读取方法、装置、处理器及预取器 | |
Subisha et al. | Prefetching in hybrid main memory systems | |
US20240070073A1 (en) | Page cache and prefetch engine for external memory | |
WO2022198552A1 (en) | Hardware assisted memory access tracking | |
Tsao et al. | Distillation: A light-weight data separation design to boost performance of NVDIMM main memory | |
WO2021066687A1 (en) | Entities, system and methods performed therein for handling memory operations of an application in a computer environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |