CN1936869B - 用于翻译地址的方法和系统 - Google Patents
用于翻译地址的方法和系统 Download PDFInfo
- Publication number
- CN1936869B CN1936869B CN2006100957456A CN200610095745A CN1936869B CN 1936869 B CN1936869 B CN 1936869B CN 2006100957456 A CN2006100957456 A CN 2006100957456A CN 200610095745 A CN200610095745 A CN 200610095745A CN 1936869 B CN1936869 B CN 1936869B
- Authority
- CN
- China
- Prior art keywords
- address
- virtual address
- page table
- page
- leaf
- 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.)
- Active
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
- G06F12/1018—Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
-
- 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/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
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
技术领域
本发明涉及数字数据处理硬件,并具体而言涉及用于访问数字数据处理系统内的实存储器的地址翻译机制的设计和运行。
背景技术
在二十世纪后半叶,被称为信息革命的现象开始出现。尽管信息革命就历史发展的范围而言比任何一个事件或机器都要宽广,但是没有哪一单个设备能够比数字电子计算机更好地代表信息革命。计算机系统的发展确实是一场革命。每年,计算机系统都会更快地增长,存储更多数据,并向它们的用户提供更多的应用。
现代计算机系统典型地包括一个或多个中央处理单元(CPU),以及存储、检索和传输信息所必须的支持硬件,例如通信总线和存储器。该系统还包括:与外界通信所必须的硬件(例如输入/输出控制器或存储控制器),以及与其连接的设备(例如键盘、显示器、磁带驱动器、盘驱动器、耦合到网络的通信链路等)。CPU是系统的核心。它执行包括计算机程序的指令,并引导其它系统部件的运行。
从计算机的硬件的角度看,大部分系统以基本相同的方式运行。处理器能够执行有限的一组非常简单的操作,例如算术、逻辑比较以及数据从一个位置移动到另一个位置。但每个操作可非常快地执行。引导计算机执行巨大量的这些简单操作的程序造成计算机进行复杂操作的假象。通过执行基本相同的一组非常简单的操作,但快得多地执行所述操作,能够实现被用户认为是计算机系统的新的或改进的能力。因此,对计算机系统的持续改进需要这些系统运行得越来越快。
计算机系统的整体速度(也被称为“吞吐量”)可作为每单位时间执行的操作的数量而被粗略地测量。在概念上,对系统速度的所有可能的改进中的最简单的改进是同时增加所有的各种部件的时钟速度。例如,如果所有部件以两倍的速度、而在别的方面以完全相同的方式运行,则系统将在一半时间内执行给定任务。早期的计算机系统包含由许多分离部件构成的处理器。这些系统易于通过减少和组合部件,最后将整个处理器封装成单个芯片上的集成电路,而显著提高时钟速度。
仅提高单个部件的速度不一定会导致系统吞吐量的相应增加。较快的部件会发现自身的空闲,而大部分时间在等待某些较慢的部件。
计算机的CPU对在计算机的可寻址主存储器内存储的数据进行操作。存储器存储在处理器内执行的指令和由那些指令操作的数据。在操作中,处理器经常地访问存储器内的指令和其它数据,没有所述指令和数据则处理器就不能执行有用的工作。近年来,处理器速度的提高通常超过访问存储器内的数据的速度的提高。因此,访问此数据所需的时间是影响系统吞吐量的重要因素。
几乎所有现代计算机系统都使用某种形式的虚拟寻址,其中将与一个或多个软件进程相关联的相对较大地址空间内的地址翻译成与存储器相关联的相对较小地址空间内的地址。前者在此被称为“虚拟地址”,尽管它们在某些体系结构内被称为“有效地址”或其它名称。后者在此被称为“实地址”,尽管它们还被称为“物理地址”、“存储器地址”或某种其它名称。在某些体系结构内,可存在多级的前者类型的地址和/或多级的后者类型的地址。但是,前者和后者之间的基本差别在于,虚拟地址(不管如何命名)并不永久或持续地对应于计算机系统的存储器内的实际位置,而实地址永久或持续地对应于所述实际位置。即每个实地址对应于计算机系统的物理硬件地址中的相应位置,并且当不同软件进程启动和终止时以持续方式保持此对应性(尽管在某些体系结构内,能够通过重新配置系统、添加或除去存储器或类似事件来改变对应性)。虚拟地址和物理存储器之间的对应性是短暂的,并且当从存储装置将新页带入物理存储器以及从存储器除去其它页时所述对应性可改变。在任何瞬时时间,大部分虚拟地址典型地在物理存储器中没有相应的分配,即该地址的数据或者未被分配、或者被保留在存储装置而不是主存储器内。
现代系统因以下简单的原因而使用虚拟寻址,即现代软件进程典型地需要比实际在物理存储器内实现所需的地址空间更大的地址空间。当执行进程需要访问一定范围的虚拟地址时,该范围临时被分配给相应范围的实地址(即物理存储器内的位置)。该分配必然是临时性的,因为不能供应足够的实地址。实地址最终将被分配给某些其它范围的虚拟地址。
计算机系统典型地使用被称为页表的机制来记录虚拟地址到实地址的临时分配,“页”是地址分配的最小单位。尽管被称为“页表”,但是此机制可具有更复杂的结构。当处理器生成执行进程需要访问的虚拟地址时,地址翻译机制参考该页表,以确定与给定虚拟地址对应的正确的实地址,即将虚拟地址翻译成实地址。
将虚拟地址翻译成实地址是存储器访问的关键因素。在许多系统内,使用翻译后备缓冲器(其有效地高速缓存得自页表的地址翻译数据)或类似机制来协助翻译,但是对于至少某些翻译,必须访问页表本身。页表的操作特性以及其相关联的地址翻译机制是对于整个系统的性能的显著贡献因素。
传统上,页表机制典型地遵循两种设计方案之一。在第一方案(在此被称为直接映射表)内,页表对于虚拟地址空间内的每个地址页均包含一个项(entry),此项包含相应实地址的高序(high-order)部分(低序(low-order)部分从虚拟地址的相应低序位复制)。在第二方案(在此被称为散列表)内,页表包含的内容比对于虚拟地址空间内的每个地址页的一个项包含的内容少得多,可通过某些较不直接的机制(例如对虚拟地址的某些部分进行散列运算)来访问所述项。在第二方案内,页表内的每个项不仅包含实地址的高序部分,而且还包括虚拟地址的某部分。虚拟地址的此部分必须与原始虚拟地址比较,以验证散列表的项实际上对应于所想要的虚拟地址(而不是某些其它的虚拟地址)。
直接映射页表在概念上较简单,但是需要大量存储器来保留整个页表。其中虚拟地址空间比实地址空间大得多并且被非常稀疏地分配,通常如现代系统内的情况,大量空间会被空的页表项消耗。当软件进程使用越来越大的虚拟地址空间时,此问题趋向于变得更加尖锐。存储器空间的低效使用会影响性能,因为在高速缓存内乃至在主存储器内难以存储页表的足够多的部分,这会增加访问页表本身的时间。
散列表更高效地使用存储器,但是翻译机制的复杂度常常意味着翻译缓慢,以及存储虚拟地址的需要增加了每个项的大小。例如,散列表内的连续项典型地并不对应于虚拟地址空间内的连续页。在许多进程内,需要访问连续页或另外访问存储器引用的地点(locality)。传统的散列页表典型地需要对这样的连续页进行独立翻译。同时,希望将页表存储在高速缓存内,并且虚拟页内的项的大小限制了每个高速缓存行内的项的数量。
存在对于一种用于在计算机系统中将虚拟地址翻译成实地址的改进技术的需要。具体地,存在对于一种改进的页表访问和翻译机制的需要,其可避免直接映射方案的过多的存储器消耗,同时获得它的至少某些优点。
发明内容
由此,为了避免直接映射方案的过多的存储器消耗,同时获得它的至少某些优点,本发明提供了一种装置、计算机系统和方法,其用于将虚拟地址空间内的虚拟地址翻译成用于访问数字数据处理系统的存储器的实地址,从而改进了页表访问和翻译机制。
根据本发明的一方面,公开了一种用于将虚拟地址空间内的虚拟地址翻译成用于访问数字数据处理系统的存储器的实地址的地址翻译装置,包括:
块访问装置,该装置使用将被翻译的虚拟地址的第一部分从多个等大小的块中选择至少一个块,每个所述块均包含相应的多个页表项;
其中每个所述块内的每个所述页表项对应于所述虚拟地址空间的相应的页,其中对应于同一所述块内的页表项的所有所述虚拟地址空间的页是邻接的,对应于同一所述块内的页表项的所有所述虚拟地址空间的页共享对应于相应的块的虚拟地址的公用高序部分;
选择器,用于从所述块访问装置所选择的所述块内的所述多个页表项中选择页表项,所述选择器使用所述将被翻译的虚拟地址的第二部分,所述第二部分和所述第一部分分离;以及
比较器,用于将所述将被翻译的虚拟地址的第三部分与对应于所述块访问装置所选择的所述块的虚拟地址的所述公用高序部分的至少一部分相比较,并生成指示所述将被翻译的虚拟地址的所述第三部分和对应于所述块访问装置所选择的块的虚拟地址的所述部分是否相同的信号。
根据本发明的另一方面,公开了一种用于将虚拟地址空间内的虚拟地址翻译成用于访问数字数据处理系统的存储器的实地址的地址翻译装置,包括:
访问装置,该装置使用将被翻译的虚拟地址的第一部分从多个二叉树定义结构中选择二叉树定义结构,每个所述二叉树定义结构定义了相应的包含多个节点的二叉树;
解码逻辑,该解码逻辑将所述访问装置所选择的二叉树定义结构解码,所述解码逻辑通过测试所述将被翻译的虚拟地址的选择位来遍历该二叉树定义结构所定义的二叉树直到叶节点,以确定出将从所述二叉树的每个节点所遵循的路径;
其中,所述叶节点定义了一组至少一个页表项,所述至少一个页表项定义了实地址的一部分和虚拟地址的对应部分;以及
比较器,用于将所述将被翻译的虚拟地址的第二部分与所述页表项定义的虚拟地址的所述部分相比较,并生成指示所述将被翻译的虚拟地址的所述第二部分和所述页表项定义的虚拟地址的所述部分是否相同的信号。
根据本发明的又一方面,公开了一种计算机系统,包括:
可使用实地址空间内的实地址进行寻址的存储器;
执行所述存储器内驻留的指令的至少一个处理器,所速处理器生成存储器引用,所述存储器引用使用虚拟地址空间内的虚拟地址;
用于在所述存储器内维持页表数据结构的分页装置,所述页表数据结构包括多个等大小的块,每个所述块包含相应的多个页表项,每个所述页表项对应于所述虚拟地址空间的相应页,其中对应于同一所述块内的页表项的所有所述虚拟地址空间的页是邻接的,对应于同一所述块内的页表项的所有所述虚拟地址空间的页共享对应于相应的块的虚拟地址的公用高序部分;
用于将所述至少一个处理器生成的所述虚拟地址翻译成实地址的地址翻译装置,所述地址翻译装置包括:
(a)块访问装置,该装置使用将被翻译的虚拟地址的第一部分选择所述页表的至少一个所述块;
(b)选择器,用于从所述块访问装置所选择的所述块内的所述多个页表项中选择页表项,所述选择器使用所述将被翻译的虚拟地址的第二部分,所述第二部分和所述第一部分分离;以及
(c)比较器,用于将所述将被翻译的虚拟地址的第三部分与对应于所述块访问装置所选择的所述块的虚拟地址的所述公用高序部分的至少一部分相比较,并生成指示所述将被翻译的虚拟地址的所述第三部分和对应于所述块访问装置所选择的块的虚拟地址的所述部分是否相同的信号。
根据本发明的再一方面,公开了一种用于将虚拟地址空间内的虚拟地址翻译成用于访问数字数据处理系统的存储器的实地址的方法,包括以下步骤:
使用将被翻译的虚拟地址的第一部分生成所述数字数据处理系统的存储器内的页表数据结构的至少一个块的实际存储器地址,所述页表数据结构包括多个等大小的所述块,每个所述块包含相应的多个页表项;
其中每个所述块内每个所述页表项对应于所述虚拟地址空间的相应的页,其中对应于同一所述块内的页表项的所有所述虚拟地址空间的页是邻接的,对应于同一所述块内的页表项的所有所述虚拟地址空间的页共享对应于相应的块的虚拟地址的公用高序部分;
使用由所述生成步骤生成的实际存储器地址来访问所述块;
使用所述将被翻译的虚拟地址的第二部分从由所述访问步骤访问的所述块内的相应的多个页表项中选择页表项,所述第二部分和所述第一部分分离;以及
将所述将被翻译的虚拟地址的第三部分与对应于所述块的虚拟地址的所述公用高序部分的至少一部分相比较,并生成指示所述将被翻译的虚拟地址的所述第三部分和对应于所述块的虚拟地址的所述部分是否相同的信号。
在本发明的优选实施例的第一方面内,一种用于将虚拟地址翻译成实地址的散列页表机制包含页表项的多个等大小的块,每个块包含对应于虚拟地址空间的邻接页的一组项。由于块内的所有项共享虚拟地址的公用高序部分,所以对于整个块而言此虚拟地址部分仅需要一次。优选地,此公用高序虚拟地址部分的多个片被分布在单独的页表项中。因此,每个页表项仅包含该虚拟地址的一小部分,从而有效地减小所需的页表项的大小。
在本发明的优选实施例的第二方面内,使用虚拟地址的函数来确定用于访问散列页表的索引地址。页表包括使用该索引地址访问的多个二叉树定义结构。虚拟地址确定将被访问的二叉树定义结构,并且解码逻辑通过测试虚拟地址的选择位而遍历由该定义结构所定义的二叉树,直到二叉树的叶。该叶定义了定义虚拟地址所映射的实地址的数据(即页表项)的位置。
在合并上文两个方面的优选实施例内,使用虚拟地址的散列函数来确定用于访问基页表的页行(page line)的索引地址,其中多个虚拟地址可映射到相同的页行。页行包含单个页表项的块(被称为“扩展的页表项组”或“EPTEG”),或用于引用页表项的一组多个块的二进制帕特利夏树(patricia tree)控制块。如果页行包含帕特利夏树控制块,则通过测试虚拟地址的选择位而遍历该二叉树,直到叶。叶定义了单个页表项块的位置。因此,当多个不同的有效虚拟地址散列到相同的索引地址时,可为每个虚拟地址提供不同的页表项块。一旦确定一个块,则可通过对就在对应于页大小的未被翻译的低序位之上的虚拟地址位进行直接解码,来确定该块内的页表项的位置。但是,本发明的多种可选择实施例也是可能的,并且具体地,能够实现上述第一方面而不实现第二方面,反之亦然。
通过将页表组织成对应于邻接的虚拟地址的页表项的块,多个页表项可共享相同的虚拟地址,增加了给定存储空间内的页表项的数量,并具体而言增加给定高速缓存行内的页表项的数量。此外,由于许多进程展示了存储器引用的地点,所以将来的存储器引用将需要在对之前的页表项的访问期间被加载的现有高速缓存行内的页表项的可能性大大增加。此外,使用二叉树定义机制来定义页表项的位置对于每个索引值可支持潜在大量的页表项(扩展项),仍允许根据需要将项分配在存储器内,而不必为所有潜在可用的页表项耗尽存储器。最后,可通过最多两次存储器引用来搜索用于扩展项的包含二叉树结构的基页表。这些因素共同提供了一种页表机制,其对实存储器的使用是经济的并且在操作中是高效的。
附图说明
参照附图可最好地理解本发明的关于其结构和操作的细节,在附图中相同标号指示相同部件,在附图中:
图1是根据本发明优选实施例的用于利用具有邻接的页表项的块的存储器页表的计算机系统的主要硬件部件的高级框图。
图2更详细地示出根据优选实施例的各种高速缓存和地址翻译机制的层次。
图3更详细地示出页表和地址翻译硬件的结构,该地址翻译硬件使用页表内的信息将虚拟地址翻译成实地址。
图4示出根据优选实施例以两种格式中的第一格式来格式化基页表的行,即扩展的页表项组。
图5示出根据优选实施例以两种格式中的第二格式来格式化基页表的行,即帕特利夏树控制块。
图6是根据优选实施例的由帕特利夏树控制块定义的帕特利夏树的概念示图。
具体实施方式
参照附图,其中在若干视图中相同标号指示相同部件,图1是根据本发明优选实施例的用于利用具有对应于邻接的虚拟地址的页表项的块的存储器页表的计算机系统100的主要硬件部件的高层级示图。计算机系统100的主要部件包括一个或多个中央处理单元(CPU)101A-101D、主存储器102、高速缓冲存储器106、终端接口111、存储接口112、I/O设备接口113和通信/网络接口114,所有这些部件均经由总线103、104和总线接口105被耦合用于部件之间的通信。
系统100包含一个或多个通用可编程中央处理单元(CPU)101A-101D,其在此被总称为特征101。在优选实施例中,系统100包含典型的相对较大系统的多个处理器;但是,系统100可选择地可以是单CPU系统。每个处理器101执行存储器102内存储的指令。从主存储器102将指令和其它数据装入高速缓冲存储器106内以便处理。主存储器102是用于存储数据(包括程序)的随机存取半导体存储器。尽管主存储器102和高速缓存106在图1内在概念上表示为单个实体,但是应理解,实际上它们较复杂,并且具体而言,高速缓存存在于多个不同的层级,下文将对此进行更详细说明。类似地,尽管某些层级的高速缓存可如图1所示在多个CPU之间共享,但是其它层级的高速缓存可包括多个高速缓存阵列,每个阵列紧密耦合到单个CPU。
总线103-105在多种系统部件之间提供通信路径。存储器总线103提供用于在CPU 101和高速缓存106、主存储器102和I/O总线接口单元105之间传输数据的数据通信路径。I/O总线接口105还耦合到系统I/O总线104以便将数据传输给多种I/O单元并从多种I/O单元传输数据。I/O总线接口105通过系统I/O总线104与多个I/O接口单元111-114(也被称为I/O处理器(IOP)或I/O适配器(IOA))通信。系统I/O总线可以是例如工业标准PCI总线或任何其它适当的总线技术。
I/O接口单元111-114支持与多种存储和I/O设备的通信。例如,终端接口单元111支持与一个或多个用户终端121-124的连接。存储接口单元112支持与一个或多个直接存取存储设备(DASD)125-127(其典型地是旋转磁盘驱动器存储设备,尽管它们可选择地可以为其它设备,包括被配置成对于主机表现为单个大存储设备的盘驱动器阵列)的连接。I/O和其它设备接口113提供对于多种其它输入/输出设备或其它类型的设备中的任何一种的接口。图1的示例性实施例内示出两个这样的设备,打印机128和传真机129,应理解可存在可以是不同类型的许多其它这样的设备。网络接口114提供从系统100到其它数字设备和计算机系统的一个或多个通信路径;这些路径可包括例如一个或多个网络130(例如因特网、局域网或其它网络),或者可包括远程设备通信线路、无线连接等。
应理解,图1是为了描述高层级的系统100的代表性主要部件,各个部件可具有比图1内所示出的更高的复杂性,可存在不同于图1内所示的那些部件或除了所述那些部件之外的部件,并且这些部件的数量、类型和配置可改变。还应理解,并不是图1内所示的所有部件都可存在于特定计算机系统内。在此公开了具有这种额外复杂性或额外变化的若干特定示例,应理解,它们仅作为示例而不必成为仅有的变化。
尽管主存储器102在图1内被示出为单个单片实体,但是如多种所谓的不均匀存储器存取(NUMA)计算机体系结构中的任何一个内已知的那样,存储器也可被分布在不同CPU或CPU组内并与之相关联。尽管存储总线103在图1内示出为相对简单的单总线结构,其在高速缓存106、主存储器102和I/O总线接口105之间提供直接通信路径,但是实际上,存储总线103可包括多种不同的总线或通信路径,其可被设置成多种形式中的任何一种,例如层次内的点对点通信、星形或网状配置、多个分层总线、并行和冗余路径等。此外,尽管I/O总线接口105和I/O总线104被示出为单个相应的单元,但是系统100实际上可包含多个I/O总线接口单元105和/或多个I/O总线104。尽管多个I/O接口单元被示出为将系统I/O总线104与通到多种I/O设备的多种通信路径分隔开,但是可选择地,将一些或全部I/O设备直接连接到一个或多个系统I/O总线也是可能的。
图1内所示的计算机系统100具有多个连接的终端121-124,例如可代表多用户“主机”计算机系统。典型地,在这种情况下,所连接设备的实际数量大于图1内所示的设备数量,尽管本发明并不局限于任何特定大小的系统。计算机系统100可选择地可以为单用户系统,其典型地仅包括单个用户显示器和键盘输入,或者计算机系统100可以是服务器或类似设备,其几乎没有或完全没有直接用户接口,而是从其它计算机系统(客户)接收请求。
尽管已说明和示出高层级的各种系统部件,但是应理解,典型的计算机系统包含未示出的许多其它部件,所述部件对于理解本发明并不是必要的。
图2更详细地示出根据优选实施例的用于将处理器生成的虚拟地址翻译成用于访问存储器的实地址的各种高速缓存和地址翻译机制的层次。在此实施例中,除了主存储器之外,还存在位于被指定为层级1(最高层级)、层级2、层级3的层级上的高速缓存的层次。通常,在较高层级(更靠近处理器),高速缓存变得更快并且存储越来越少的数据。每个处理器101与相应的一对层级1高速缓存相关联,所述高速缓存没有与任何其它处理器共享。这一对高速缓存之一是用于存储在处理器101上执行的指令的层级1指令高速缓存(L1I-高速缓存)201。这一对高速缓存中的另一个是用于存储将被在处理器101上执行的进程所处理的数据(不同于指令)的层级1数据高速缓存(L1D-高速缓存)202。每个处理器还与相应的层级2高速缓存203和层级3高速缓存204相关联,所述高速缓存通常可存储来自存储器102的任何形式的数据。每对层级1高速缓存201、202优选地专用于单个对应的处理器;每个L2高速缓存203和每个L3高速缓存204典型地在多个处理器中共享,尽管一个或多个这样的高速缓存可选择地可专用于单个相应的处理器。为了清楚起见,图2仅示出一个处理器101、一对L1高速缓存201、202、一个L2高速缓存203和一个L3高速缓存204,但是系统100的处理器以及位于多种层级的高速缓存的数量可改变,并且共享位于多种层级中的每一层级的高速缓存的处理器的数量也可改变。还应理解,高速缓存的层级的数量可改变,并且可多于或少于三级高速缓存。
可被放入高速缓存的最小数据单位被称为高速缓存行。在优选实施例中,所有高速缓存具有大小为128字节的高速缓存行,但是在可选择的实施例中,此数目可改变。
页表210和分页函数215驻留在主存储器102内。页表210是一组数据结构,其包含记录虚拟地址与实地址的临时关联(即物理存储器的页到相应虚拟地址范围的分配)的数据。分页函数是低层操作系统函数,其将实存储器地址分配给从存储装置引入的页,选择将被分页出去(page out)的页,以及维护页表210。
每个处理器还与地址翻译机制205相关联,该地址翻译机制205用于使用来自页表210的数据将由处理器生成的虚拟地址翻译成用于访问存储器的实地址。地址翻译机制205包括用于使用页表项内的数据将虚拟地址翻译成实地址的翻译逻辑,以及至少一个翻译后备缓冲器206,该翻译后备缓冲器206本质上为页表数据的高层级高速缓存。尽管页表210被称为“表”并且在图2内被表示为简化形式,但是实际上其是一组更复杂的数据结构,并且不必位于邻接的地址。这里更详细地说明了页表210的结构和其上的地址翻译机制的操作。
页表210内的项(仅为数据)可被引入L3或L2高速缓存(但是不会被引入L1I-高速缓存201或L1D-高速缓存202,因为它们用于特定的相应类型的数据)。由于频繁地引用页表,所以L2或L3高速缓存内典型地存在该表的至少一部分。TLB 206有效地为用于页表数据的高层级高速缓存。
CPU 101生成虚拟地址以便在到地址翻译机制205的虚拟地址路径211上翻译。在接收到将被翻译的虚拟地址时,地址翻译机制205首先在TLB 206内查找所需的地址。如果TLB内不存在该地址,则地址翻译机制将从页表210中的页数据生成该地址,如果可能的话从L2或L3高速缓存装入数据,并不再从主存储器内的页表210生成该地址。生成的地址存储在TLB内的项内。地址翻译机制205将得到的实地址输出到与实地址路径212上的高速缓存和/或存储器相关联的解码逻辑。
如这里所述的,地址翻译机制205利用单个TLB 206,并从L2或L3高速缓存访问页表数据。但是,许多可选择的体系结构也能够用于高速缓存得自页表210的数据。可存在用于高速缓存得自页表210的数据的多个TLB或其它结构,它们占用不同的层次。对于各种形式的地址翻译,尤其当存在多层级的虚拟和/或实地址时,可存在额外的结构。可选择地,可根本不存在TLB。页表数据可放置在专用高速缓存内而不是通用的L2或L3内。
在优选实施例中,使用实地址来寻址L2高速缓存203和L3高速缓存204,而使用虚拟地址来寻址L1高速缓存201、202。使用实地址访问高速缓存必然意味着在访问高速缓存之前,必须通过地址翻译机制205翻译用于数据访问的地址,但是它在其它方面尤其是在当系统具有多个处理器和高速缓存时维持高速缓存相关性方面具有显著优点。使用实地址还是虚拟地址来访问高速缓存是包含许多因素的体系结构设计选择,一些系统体系结构专门使用实地址来访问所有高速缓存,一些系统体系结构专门使用虚拟地址,而一些系统体系结构对于某些高速缓存(高层级高速缓存)使用虚拟地址而对于其它高速缓存使用实地址。尽管在此说明了特定实施例,但是本发明并不局限于任何具体的体系结构,并可被用于使用这些变体中的任何一个的系统内。
如图2所示,在主存储器和L3高速缓存204之间、L3高速缓存204和L2高速缓存203之间、以及L2高速缓存203和L1高速缓存201、202和TLB 207之间存在数据路径。尽管这些数据路径被示为运行通过连续高速缓存层级,但是如计算机系统体系结构内所公知的,在某些设计中数据路径能够绕过一些高速缓存层级或者同时将数据从存储器装入多个高速缓存层级和/或TLB。尽管图2在概念上将数据路径表示为直接路径,但是它们实际上可被实现为多个连续总线或类似的数据路径。
图2是为了描述多种高速缓存之间的某些功能关系,且某些部件被单独地示出这一事实并不是代表这些部件是被如何封装的。现代的集成电路技术已发展到这样的程度,即至少某个高速缓存典型地与处理器(有时也被称为处理器核,以将其与高速缓存核和其它机制区分开)封装在同一集成电路芯片上。典型地,L1高速缓存201、202和地址翻译机制205与处理器封装在同一集成电路芯片上,并且可被认为是处理器的一部分。甚至能够在单个芯片上放置多个处理器核以及一定数量的共享高速缓存。例如,可将一对CPU 101(未示出)、一对相应的L1I-高速缓存201、一对相应的L1D-高速缓存202和一对相应的数据翻译机制205连同单个L2高速缓存封装在单个集成电路芯片上,该L2高速缓存可被两个处理器共享。L3高速缓存205或其它高速缓存可被封装成单独的集成电路芯片,所述芯片与相应处理器芯片一起安装在公用印刷电路板上。但是,此设置仅是一种可能的封装设置,并且随着集成电路和其它电子封装技术的发展,可以想象将会使用另外的集成。
图3更详细地示出页表210和使用页表内的信息将虚拟地址翻译成实地址的地址翻译硬件205的结构。参考图3,虚拟地址翻译硬件的各种部件使用页表内的数据将80位的虚拟地址301翻译成64位的实地址302。传统上,虚拟地址位被编号为0到79,79是最高位,而实地址位被编号为0到63。出于页翻译的目的,将虚拟地址301分成六个区段,由下述组成:13位的高区段303(位79:67);27位的中间区段304(位66:40);12位的低区段305(位39:28);12位的高页306(位27:16);4位的低页307(位15:12);以及12位的字节308(位11:0)。实地址302由两个区段组成:52位的实际页309(位63:12)和12位的字节310(位11-0)。64位的实地址代表在优选实施例内翻译机制支持的最大实地址,并且许多系统使用的位数比64位的潜在可用实地址位要少。在优选实施例内,实存储器内的最小页大小为4096字节。实地址的12位字节部分310代表实际存储器页内的地址部分,并且此部分直接得自虚拟地址的对应的12位的字节部分308而不用翻译。对于较大的页面大小,字节部分308包括附加位以便完全寻址页内的所有字节,并且高页部分306相应地包括较少的位。52位的实际页309如这里所述地得到。
在操作中,当地址翻译机制205从处理器接收到用于翻译的虚拟地址时,它将试图通过首先访问TLB 206而将虚拟地址的高序的68位直接翻译成对应的52位实际页。TLB 206优选地为N路关联高速缓存,其使用虚拟地址的某个函数来进行索引。每个TLB项包含虚拟地址的一部分以及它所翻译成的实际页。因此,TLB硬件获得被虚拟地址的函数所索引的N个TLB项,并将每个项内的每个虚拟地址部分与将被翻译的虚拟地址的对应部分相比较。如果任何项均匹配将被翻译的虚拟地址,则其实际页是对应于虚拟地址的正确实际页。如果不存在匹配,则存在TLB丢失,并且地址翻译机制必须根据页表数据构建实地址。在此情况下,所翻译的实地址典型地被存储为用于将来进行引用的TLB内的项,并且通过使用多种传统算法中的任何一种来选择要除去的项而将TLB中的现有项除去。只有当存在TLB丢失时才使用图3内所示的用于将虚拟地址翻译成实地址的机制。
页表210包括一个且仅包括一个基页表311和可变数量的页表扩展块312A、312B(在此被总称为特征312),图3中示出两个页表扩展块,所有扩展块都驻留在存储器102内。基页表311在邻接的存储器位置包含多个固定大小的页行313。每个页行包含扩展的页表项组(EPTEG)或者帕特利夏树控制块。页表扩展块312在邻接的存储器位置包含多个固定大小的扩展块行(extension block line)314,每个行包含EPTEG。在优选实施例中,页行313和扩展块行314二者均为128个字节,对应于高速缓存行的大小。尽管基页表内的页行和扩展块内的扩展块行是邻接的,但是基页表并不一定与扩展块邻接,扩展块也不一定相互邻接。
地址翻译硬件包括基页表地址寄存器321、中间区段屏蔽器322、散列XOR 323和逐位OR 324,它们一起被用于产生用于从基页表311选择页行313的索引地址325。索引地址325是将被访问的页行313的存储器的实地址。索引地址325的低7位总是为0(对应于128字节的页行大小)。散列XOR 306产生虚拟地址的12位低区段305与12位的高页306的12位异或,该12位的结果就在7个低序的0位之上。中间区段屏蔽器322屏蔽虚拟地址的中间区段部分304的选择位以便在对基页表311进行索引时用作附加位。屏蔽器322屏蔽的位的数量可被编程配置。中间区段屏蔽器322因此允许相同的地址翻译硬件支持不同大小的基页表311。所支持的最小的大小对应于屏蔽中间区段304的全部27位,从而只有得自XOR323的12位索引部分可用于对基页表进行索引。在此情况下,基页表保持4096个每个128字节的页行,总大小为512KB。如果没有中间区段的位被屏蔽,则基表理论上可包含239个页行,尽管当前系统不可能需要如此之大,并且在页表大小上可存在其它限制。基页表地址寄存器321包含基页表的开头的实地址的高序位。这些位与没有被屏蔽器322屏蔽的中间区段304的位相并置(concatenate),以产生索引的33位实地址部分。在优选实施例中,基页表地址寄存器321包含33位,索引地址的高序的6位直接得自寄存器321,而剩余的27位得自OR逻辑324,即基页表地址寄存器321的低序的27位与屏蔽器322的27位输出的逐位OR。未被屏蔽器322屏蔽的中间区段304的任何位的位置在基页表地址寄存器321内被设为0。
尽管上文说明了一种用于得到用于选择页行的索引的特定方法,但是应理解,许多替代方法也是可能的。在简单的替代方法中,一定数量的虚拟地址位可被直接用作索引(而不使用XOR 306),这些位与存储器内的页表的基地址相并置。上述方法的优点是可针对不同的页表大小进行配置,但是此特征并不是必需的。
还应观察到,如果虚拟地址的低区段部分305被设定为0,则XOR 323使高页部分通过而不加改变。如果高区段部分303也被设为0,并且没有被屏蔽器322屏蔽的中间部分304的所有位也被设定为0,则页表作为直接映射表有效地运行,即在64KB的虚拟地址块和基页表311的页行313之间存在一对一的对应关系。此直接映射使得帕特利夏树控制块(下文说明)变得不必要,并确保所有地址翻译将需要不超过一个存储器引用。因此,对于某些不需要大的虚拟地址空间的小型系统,可希望以此方式操作。根据优选实施例,通过简单地限制所使用的虚拟地址的范围,相同的硬件可以此直接映射模式有效地运行。
通过如上所述得到的索引地址325,地址翻译硬件读取对应的实地址的页行313。如果可能的话,地址翻译硬件从L2或L3高速缓存获得此页行(应想到,128字节的页行大小与128字节的高速缓存行大小一致)。在必要时,地址翻译硬件将一直进到主存储器102以获得页行。
这样获得的页行被页行解码逻辑326解码。页行的内容可采取以下两种格式中的任何一种:扩展的页表项组(EPTEG)格式,或帕特利夏树控制块格式,可应用的格式由页行的末位(位1023)的设定来确定。EPTEG是一组16个页表项,它们具有独立的实地址但是会占据虚拟存储器内的邻接的地址块。由于多个虚拟地址可索引到相同的页行(通过XOR 323执行的散列的功效,以及虚拟地址的某些高序位未被使用或被屏蔽这一事实),所以虚拟地址可能冲突,并且需要使多个虚拟地址容纳单个页行。这可使用帕特利夏树控制块来实现,这里将对此进行更详细解释。
当索引到特定的页行313的所有有效虚拟地址(即,所有这样的虚拟地址,针对该虚拟地址的实际页目前存在于存储器内)都位于单个EPTEG的寻址范围内(在单个64KB的已对准地址范围内),或者当不存在索引到页行的有效虚拟地址时,则页行将被格式化为EPTEG。图4示出根据优选实施例将页行格式化为EPTEG。
参照图4,EPTEG格式将128字节的行划分成十六个相等大小的区段或“项”401,每个区段或“项”包含8个字节(64位)。每个8字节的区段或“项”401(被编号为0到15)对应于由其在EPTEG内的位置确定的虚拟地址。即,项N对应于虚拟地址V+N*4096,其中V是虚拟地址的公用的高序位部分(高于位15)。因此,EPTEG内的项对应于虚拟存储器的连续的、邻接的页(4096字节的块),整个EPTEG翻译在64KB的界限上对准的虚拟存储器的64KB的块的地址。每个项401包含:相应虚拟地址映射到其上的52位实际页码402,适用于实存储器的相应页的8位页属性标记403(例如被写保护、修改、防护、使无效等),以及作为整体应用于EPTEG而不应用于任何单个项401的4位公用数据404。虚拟地址406的公用的高序部分分布在公用数据404内的多个项中。即项0到12中的每个均包含虚拟地址406的此公用高序部分的相应4位部分,前13个项总共包含虚拟地址的52位。最后三项(项13-15)的4位公用数据404包含EPTEG块公用的数据。具体地,项15的末位是格式标记405,其指示出该行是被格式化为EPTEG还是帕特利夏树。
尽管优选地,虚拟地址的公用高序部分可分布在EPTEG的多个项401内,以便将实地址页码置于8字节的界限上并简化选择逻辑,但是EPTEG可选择地可被不同地格式化。例如,虚拟地址的公用高序部分可被置于位于EPTEG的开头或结尾处的某些邻接字段内。
单个EPTEG包含用于对应于16个邻接的虚拟地址页的16个实际页码的空间。但是,典型地,实际上将从具有16个邻接的虚拟地址页的块中分配实存储器内的少于16个页。未分配的页大体上将在相应项401中包含某种指示。例如,实际页码可被设定为某个值,例如0,其用于某种特殊用途并且不需要翻译,或者8位标记403的某个标记或另外的标记位的值的未使用的组合可指示未分配的实际页。
如果页行313为EPTEG,则页行解码逻辑326大体上提供控制信号,以便页行直接到达比较器327和选择器328。选择器328选择对应于虚拟地址的4位低页码307的值的EPTEG内的一个8字节项401,并将所选择的项的对应的实际页码402作为被翻译的实际页码309而输出。选择器328还将所选择的项的足够多的位输出给有效性逻辑329,以便有效性逻辑足以确定其是否为有效的经分配的实地址(如上所述,根据用于定义有效性的任何适用约定)。如果所选择的项具有有效的、经分配的实际页码,则有效性逻辑329产生一行有效信号。
比较器327比较将被翻译的虚拟地址301的高序52位与52位的虚拟地址部分406,该虚拟地址部分406是通过并置EPTEG内的前13个项的公用数据位404内的4位虚拟地址部分而产生的。如果这两个地址部分相同,则比较器327输出有效信号。此有效信号与来自有效性逻辑329的有效信号进行逻辑与运算,以提供单个有效信号输出,该信号输出指示出选择器328产生的实际页码是输入虚拟地址的正确翻译。如果与运算得到的此信号指示出输出是无效的,则虚拟页不在实存储器中,并且指示出页错误。
当具有各自分配的实际页的不同的64KB区段内的多个有效虚拟地址映射到相同的页行313时,则必须使用不同的页行格式来解决地址冲突。在优选实施例中,页行被格式化为帕特利夏树控制块,其定义了将被遍历以定位可应用的EPTEG的二叉树。图5示出根据优选实施例将页行格式化为帕特利夏树控制块。图6是根据优选实施例的由帕特利夏树控制块定义的帕特利夏树的概念示图。
参照图5,帕特利夏树控制块格式将128字节的页行313的内容分成九个区段501或“3层树”,每个区段包含112位,总共1008位。剩余的16位在最后区段505内。这16位除了末位之外都没有被使用,该末位是用于指定格式(如上所述,或者是EPTEG或者是帕特利夏树控制块)的格式标记504。每个112位的区段或“3层树”501定义了图6内所示的帕特利夏树的对应的三层部分。此帕特利夏树是具有被指示为A到F的六层的二叉树。前112位的区段对应于层A-C,而剩余的112位的区段中的每一个对应于相应的在层D-F的3层子树,它们分别具有根节点D0到D7。图6中仅以完整形式示出子树D0和D1,而为了清楚起见简化了其它子树。
每个区段501包含七个1字节的将测试的下一位字段(NBT)502、一个54位的基实地址503以及一个2位的填充符,该填充符保持区段在字节界限上对准。每个54位的基实地址可指定相应的页表扩展块312的开头地址。由于页表扩展块总是在1024字节的界限(对应于正好为8个扩展块行314,每个行的长度为128个字节)上对准,所以不必指定多于54个高序实地址位,10个低序位为0。单个帕特利夏树可访问最多8个页表扩展块,每个页表扩展块包含8个EPTEG,总共64个EPTEG。一个页表扩展块内的8个EPTEG占据8个邻接的扩展块行,每个相应EPTEG的位置被确定为偏离54位的基实地址的固定偏移。但是,由于帕特利夏树控制块可独立地指定最多8个页表扩展块的地址,所以不同的页表扩展块并不需要相互邻接。
每个NBT 502对应于帕特利夏树的相应的节点,并定义了在对虚拟地址解码时在帕特利夏树中采取的路径。具体地,每个1字节的NBT包含1位的有效标记和7位的值,该7位的值指定了在遍历树时将测试的虚拟地址的位的位置。为了遍历树,检查有效标记。如果有效,则测试NBT内的该7位的值指定的虚拟地址位的位置,并且根据此位的值选择两条路径之一。如果无效,则不存在沿当前树路径分配的EPTEG,这指示出不能产生有效的的实地址(即页错误)。如果帕特利夏树由此被一直遍历到F层,则在F层的节点将指定在对应的区段501的基实地址部分503内指定的地址处的页表扩展块内的扩展块行314(包含EPTEG)的位置。即,包含所需的EPTEG的扩展块的地址是通过将对应区段的基实地址部分503与三个下述地址位以及七个二进制“零”(对应于128字节大小的扩展块行)相并置而获得的,该三个地址位对应于二叉树内的自F节点的路径的相对位置(存在4个F节点,所述F节点由除了第一个之外的每个3层区段所定义,自每个F节点存在两条路径,总共八条路径)。在优选实施例中,没有使用对应于在树层A-C的节点的前3层的项的实地址部分503,尽管可选择地,在仅需要访问不超过八个EPTEG的情形下,能够通过将帕特利夏树截断至三层而使用此地址部分。
下面是此遍历的简单示例。对于将被解码成EPTEG项的给定虚拟地址(假设所有有效性位都被设定为有效),在对应于NBT A0内的7位值的位置的虚拟地址位的值为0,这指示到节点B0的路径;对应于NBT B0内的虚拟地址位的值为0,这指示到节点C0的路径;对应于NBT C0内的虚拟地址位的值为1,这指示到节点D1的路径;对应于NBT D1内的虚拟地址位的值为0,这指示到节点E2的路径;对应于NBT E2内的虚拟地址位的值为1,这指示到节点F5的路径;以及对应于NBT F5内的虚拟地址位的值为1,这指示包含EPTEG11的扩展块行。所想要的EPTEG(EPTEG11)的实地址是与二进制‘011’(对应于EPTEG11在其扩展块内的位置)相并置并与二进制‘0000000’相并置的节点D1-E3-F5(即第三个3层区段)的3层区段501的基地址部分503内指定的54位的高序部分。
为了清楚地理解,上文说明了作为一系列操作的由帕特利夏树控制块定义的二叉树的遍历。本领域技术人员应理解,页行解码逻辑326可在快速逻辑内实现树遍历,该快速逻辑同时而不是依次测试各种条件。此逻辑最后生成对应于页表扩展块312内的扩展行314(即EPTEG)的地址。如果该地址是有效的(在遍历树时该逻辑遇到的所有有效性位被设定为有效),则从高速缓存或主存储器读取在此地址的EPTEG。使用比较器327、选择器328和有效性逻辑309以上文所述的方式对这样读取的EPTEG进行解码。因此,如果页行被格式化为EPTEG,则需要单次存储器访问来将虚拟地址翻译成它对应的实地址。如果页行被格式化为帕特利夏树控制块,则需要两次存储器访问(第一次访问是获得帕特利夏树控制块,第二次访问是从被解码的帕特利夏树控制块的地址获得EPETG)。当使用优选实施例的页表机制时决不需要多于两次存储器访问。此外,由于每个EPTEG包含来自邻接的存储单元的16个页表项,并且每个帕特利夏树控制块引用多个EPTEG,所以非常可能的是,任何所需的EPTEG或帕特利夏树控制块将已位于高速缓存内。
由于页表扩展块312具有独立的实地址,所以当需要时页表扩展块可被独立地分配。必须分配一个完整的具有8个扩展块行314的页表扩展块312,但是并不必分配帕特利夏树控制块潜在地进行索引的所有8个页表扩展块。此外,尽管必须分配8个扩展块行,每个扩展块行包括一个EPTEG,但是并不必分配给定扩展块内的任何特定数量的实际页。所分配的页表扩展块内的某些EPTEG可能不包含有效项,并且某些EPTEG可能包含某些有效项和某些无效项。
典型地,任何一次对于任何给定的帕特利夏树控制块都将需要远少于64个EPTEG。尽管这被认为是稀有事件,但是理论上,页表机制可能需要超过64个对应于单个索引地址的EPTEG。在优选实施例中,为了简单起见,帕特利夏树被限制为6层和64个EPTEG。在分页机制引入需要第65个EPTEG的新页以支持虚拟地址翻译的不太可能的事件中,解除分配(de-allocate)现有的EPTEG(且其引用的任何实际页将变为不可用)。可选择地,将能够级联多个帕特利夏树控制块以支持所需要的任意数量的EPTEG,即,帕特利夏树控制块的叶节点应引用一个EPTEG或另一个帕特利夏树控制块。
分页函数215的运行并未被详细说明,但是通常应理解,分页函数215根据在此所述的结构和限制来维持页表210。具体地,分页函数通过添加节点和从这样定义的树除去节点,并根据需要分配和解除分配帕特利夏树控制块,来维持帕特利夏树控制块。通常,当需要通过帕特利夏树访问新EPTEG时,在可能时向该树的现有叶添加一个叶。当不能添加时(由于将被添加的节点已经在F层),则分页函数可使用一个或多个NBT字段内的不同的位选择来重新构建树,以更好地分布帕特利夏树的节点,并因此使得能够支持附加的EPTEG。在由于树被完全填满而不能添加叶的稀有情况下,可选择现有的EPTEG用以解除分配。分页函数是与地址翻译硬件205相比较慢的软件。由于地址翻译发生的频率比页错误发生的频率高得多,所以地址翻译硬件应该是快速的。
如上所述,地址翻译机制将处理器生成的虚拟地址翻译成用于访问存储器的实地址。计算机系统100内可存在额外层级的寻址,该寻址在此未被说明并且不是理解本发明所必需的。这种额外的层级可包括多种类型的虚拟地址(即与实际存储器位置没有固定对应关系的地址)和/或具有与实际存储器位置的固定对应关系的多级实地址。例如,如在某些系统中已知的,处理器的指令和执行单元的地址空间内的第一类虚拟地址可被翻译成多个进程的较大通用空间内的第二类虚拟地址,上述过程是通过将第一地址的高序地址区段翻译成第二类地址的较大的高序地址区段而实现的。作为另一示例,多节点或NUMA系统的实地址空间内的第一类实地址可被翻译成单个节点的本地实地址空间内的第二类实地址。本发明可与仅具有单一类虚拟地址和单一类实地址的寻址体系结构,以及具有多种类型的虚拟和/或实地址的那些寻址体系结构一起使用。
在这里所述的优选实施例中,页行可被格式化为EPTEG或用于访问多个EPTEG的帕特利夏树控制块。但是,可选择地,将能够在每种情况下将页行格式化为帕特利夏树控制块,所述帕特利夏树控制块被遍历以选择EPTEG。这种格式化以需要额外存储器访问以翻译可能已从页行内的EPTEG直接翻译了的某些虚拟地址为代价,来简化页行解码逻辑。无论如何,如果与虚拟地址空间相关的页行的数量小得足以使大部分或全部页行将包含帕特利夏树控制块,则此可选择方案可以是有用的。
在这里所述的优选实施例中,由于多个不同的64KB的虚拟地址块可映射到相同的页行,可能出现冲突,所以使用帕特利夏树。但是,使用帕特利夏树控制块或定义二叉树的类似结构仅是优选实施例的一个可能的方面,其代表一种用于处理虚拟地址过载的可能技术。存在可选择的用于处理此可能性的技术。例如,得自虚拟地址的索引可访问固定大小的具有关联性的一组多个EPTEG,然后将每个EPTEG与将被翻译的虚拟地址相比较以确定它们中的任何一个是否对应于该地址。在虚拟地址冲突的情况下可使用其它可选择的机制。
还将进一步理解,被称为EPTEG的页表项的块(其中每个项对应于虚拟地址空间的邻接页)的使用也仅代表优选实施例的一个方面,并且可使用不具备EPTEG结构的用于选择页表项的二叉树结构。例如,帕特利夏树的每个叶可访问单个、独立的页表项,其将单个虚拟地址页翻译成对应的实地址页。可选择地,帕特利夏树的每个叶可访问并不限于邻接的虚拟存储器页的一组页行项。
在这里所述的优选实施例中,给出了多种数字参数。例如,虚拟地址的长度为80位、实地址的长度为64位、页的最小大小为4096字节、高速缓存行的长度为128字节等等。尽管这些数字被认为是大型计算机系统使用当前技术的典型设计参数,但是应理解,规定这些数字参数是为了说明特定实施例,并且本发明并不局限于虚拟地址、实地址、页、高速缓存行或其它数字参数的任何特定大小。
尽管已公开了本发明的特定实施例以及某些可选择方案,但是本领域技术人员将认识到,可在下面的权利要求的范围内实现形式和细节上的另外的变体。
Claims (21)
1.一种用于将虚拟地址空间内的虚拟地址翻译成用于访问数字数据处理系统的存储器的实地址的地址翻译装置,包括:
块访问装置,该装置使用将被翻译的虚拟地址的第一部分从多个等大小的块中选择至少一个块,每个所述块均包含相应的多个页表项;
其中每个所述块内的每个所述页表项对应于所述虚拟地址空间的相应的页,其中对应于同一所述块内的页表项的所有所述虚拟地址空间的页是邻接的,对应于同一所述块内的页表项的所有所述虚拟地址空间的页共享对应于相应的块的虚拟地址的公用高序部分;
选择器,用于从所述块访问装置所选择的所述块内的所述多个页表项中选择页表项,所述选择器使用所述将被翻译的虚拟地址的第二部分,所述第二部分和所述第一部分分离;以及
比较器,用于将所述将被翻译的虚拟地址的第三部分与对应于所述块访问装置所选择的所述块的虚拟地址的所述公用高序部分的至少一部分相比较,并生成指示所述将被翻译的虚拟地址的所述第三部分和对应于所述块访问装置所选择的块的虚拟地址的所述部分是否相同的信号。
2.根据权利要求1的地址翻译装置,其中每个相应的所述块内的多个不同的所述页表项中的每一个包含对应于该相应块的所述虚拟地址的所述公用高序部分的相应部分。
3.根据权利要求1的地址翻译装置,其中所述块访问装置包括:
索引装置,该装置从所述将被翻译的虚拟地址的所述第一部分得到索引地址,所述索引地址是基页表的页行的实地址,所述基页表具有预定数量的等大小的所述页行。
4.根据权利要求3的地址翻译装置,其中所述等大小的页行的所述预定的数量可被配置。
5.根据权利要求3的地址翻译装置,
其中至少某些所述页行包括相应的二叉树定义结构;以及
其中所述地址翻译装置还包括解码逻辑装置,该解码逻辑装置通过测试所述将被翻译的虚拟地址的选择位来遍历所述二叉树定义结构所定义的二叉树直到所述二叉树的叶,所述叶定义了所述块的位置。
6.根据权利要求5的地址翻译装置,其中至少某些所述页行包括相应的所述块。
7.根据权利要求1的地址翻译装置,其中所述块访问装置包括用于将所述虚拟地址的N位部分变换成用于选择所述至少一个块的索引的M位部分的散列函数。
8.根据权利要求7的地址翻译装置,其中所述散列函数包括在所述虚拟地址的第四部分和所述虚拟部分的第五部分之间的逐位异或操作,所述第四和第五部分被包含在所述虚拟地址的所述第一部分内。
9.一种用于将虚拟地址空间内的虚拟地址翻译成用于访问数字数据处理系统的存储器的实地址的地址翻译装置,包括:
访问装置,该装置使用将被翻译的虚拟地址的第一部分从多个二叉树定义结构中选择二叉树定义结构,每个所述二叉树定义结构定义了相应的包含多个节点的二叉树;
解码逻辑装置,该解码逻辑装置将所述访问装置所选择的二叉树定义结构解码,所述解码逻辑装置通过测试所述将被翻译的虚拟地址的选择位来遍历该二叉树定义结构所定义的二叉树直到叶节点,以确定出将从所述二叉树的每个节点所遵循的路径;
其中,所述叶节点定义了一组至少一个页表项,所述至少一个页表项定义了实地址的一部分和虚拟地址的对应部分;以及
比较器,用于将所述将被翻译的虚拟地址的第二部分与所述页表项定义的虚拟地址的所述部分相比较,并生成指示所述将被翻译的虚拟地址的所述第二部分和所述页表项定义的虚拟地址的所述部分是否相同的信号。
10.根据权利要求9的地址翻译装置,其中所述二叉树定义结构包括多个将测试的下一位字段,每个所述将测试的下一位字段对应于所述二叉树定义结构所定义的二叉树的相应节点,每个将测试的下一位字段包括指定所述将被翻译的虚拟地址的位的位置的值,所述解码逻辑装置将测试该值以确定出将从对应节点所遵循的路径。
11.根据权利要求9的地址翻译装置,其中所述二叉树定义结构包括多个实地址字段,每个所述实地址字段包含对应于相应的一组至少一个所述叶节点的实地址的一部分,每个所述实地址字段指定所述至少一个叶节点定义的所述一组至少一个页表项所占据的实地址的一部分。
12.根据权利要求11的地址翻译装置,其中每个所述实地址字段包含对应于相应的一组多个所述叶节点的实地址的一部分,每个所述实地址字段指定一组多个所述页表项所占据的实地址的公用部分,每个相应的叶节点对应于所述一组多个所述页表项的相应的离散子集,所述离散子集占据这样的实地址范围,该实地址范围是通过并置实地址的所述公用部分和对应于从所述二叉树内的相应叶节点的路径的相对位置的至少一个地址位来确定的。
13.根据权利要求9的地址翻译装置,
其中所述叶节点定义了一组多个所述页表项;以及
其中所述地址翻译装置还包括选择器,用于使用所述将被翻译的虚拟地址的第三部分来选择所述叶节点定义的所述多个页表项之一,所述第三部分和所述第一部分分离。
14.根据权利要求9的地址翻译装置,其中所述块访问装置包括用于将所述虚拟地址的N位部分变换成用于选择所述二叉树定义结构的索引的M位部分的散列函数。
15.一种计算机系统,包括:
可使用实地址空间内的实地址进行寻址的存储器;
执行所述存储器内驻留的指令的至少一个处理器,所速处理器生成存储器引用,所述存储器引用使用虚拟地址空间内的虚拟地址;
用于在所述存储器内维持页表数据结构的分页装置,所述页表数据结构包括多个等大小的块,每个所述块包含相应的多个页表项,每个所述页表项对应于所述虚拟地址空间的相应页,其中对应于同一所述块内的页表项的所有所述虚拟地址空间的页是邻接的,对应于同一所述块内的页表项的所有所述虚拟地址空间的页共享对应于相应的块的虚拟地址的公用高序部分;
用于将所述至少一个处理器生成的所述虚拟地址翻译成实地址的地址翻译装置,所述地址翻译装置包括:
(a)块访问装置,该装置使用将被翻译的虚拟地址的第一部分选择所述页表的至少一个所述块;
(b)选择器,用于从所述块访问装置所选择的所述块内的所述多个页表项中选择页表项,所述选择器使用所述将被翻译的虚拟地址的第二部分,所述第二部分和所述第一部分分离;以及
(c)比较器,用于将所述将被翻译的虚拟地址的第三部分与对应于所述块访问装置所选择的所述块的虚拟地址的所述公用高序部分的至少一部分相比较,并生成指示所述将被翻译的虚拟地址的所述第三部分和对应于所述块访问装置所选择的块的虚拟地址的所述部分是否相同的信号。
16.根据权利要求15的计算机系统,其中所述地址翻译装置还包括至少一个翻译后备缓冲器,所述地址翻译装置通过在所述翻译后备缓冲器中查找对应的项而将所述虚拟地址翻译成所述实地址,并且如果不能找到这样的对应的项,则通过使用所述块访问装置、所述比较器和所述选择器将所述虚拟地址翻译成所述实地址。
17.根据权利要求15的计算机系统,还包括用于临时存储所述存储器的若干部分的至少一个高速缓存,所述等大小的块可被存储在所述至少一个高速缓存内。
18.根据权利要求15的计算机系统,其中所述计算机系统包括多个所述处理器和多个所述地址翻译装置,每个处理器与相应的地址翻译装置相关联。
19.根据权利要求15的计算机系统,其中每个相应的所述块内的多个不同的所述页表项中的每一个包含对应于该相应块的所述虚拟地址的所述公用高序部分的相应部分。
20.根据权利要求15的计算机系统,
其中所述页表数据结构包括具有预定数量的等大小的页行和多个扩展块的基页表,至少某些所述页行包括相应的二叉树定义结构;
其中所述块访问装置包括索引装置,该索引装置从所述将被翻译的虚拟地址的所述第一部分得到索引地址,所述索引地址是所述基页表的页行的实地址;以及
其中所述地址翻译装置还包括解码逻辑装置,该解码逻辑装置通过测试所述将被翻译的虚拟地址的选择位来遍历所述二叉树定义结构定义的二叉树直到所述二叉树的叶,所述叶定义了所述扩展块的位置。
21.一种用于将虚拟地址空间内的虚拟地址翻译成用于访问数字数据处理系统的存储器的实地址的方法,包括以下步骤:
使用将被翻译的虚拟地址的第一部分生成所述数字数据处理系统的存储器内的页表数据结构的至少一个块的实际存储器地址,所述页表数据结构包括多个等大小的所述块,每个所述块包含相应的多个页表项;
其中每个所述块内每个所述页表项对应于所述虚拟地址空间的相应的页,其中对应于同一所述块内的页表项的所有所述虚拟地址空间的页是邻接的,对应于同一所述块内的页表项的所有所述虚拟地址空间的页共享对应于相应的块的虚拟地址的公用高序部分;
使用由所述生成步骤生成的实际存储器地址来访问所述块;
使用所述将被翻译的虚拟地址的第二部分从由所述访问步骤访问的所述块内的相应的多个页表项中选择页表项,所述第二部分和所述第一部分分离;以及
将所述将被翻译的虚拟地址的第三部分与对应于所述块的虚拟地址的所述公用高序部分的至少一部分相比较,并生成指示所述将被翻译的虚拟地址的所述第三部分和对应于所述块的虚拟地址的所述部分是否相同的信号。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/232,773 US7330958B2 (en) | 2005-09-22 | 2005-09-22 | Method and apparatus for translating a virtual address to a real address using blocks of contiguous page table entries |
US11/232,773 | 2005-09-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1936869A CN1936869A (zh) | 2007-03-28 |
CN1936869B true CN1936869B (zh) | 2010-06-16 |
Family
ID=37903226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006100957456A Active CN1936869B (zh) | 2005-09-22 | 2006-07-04 | 用于翻译地址的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (2) | US7330958B2 (zh) |
CN (1) | CN1936869B (zh) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7447869B2 (en) * | 2005-04-07 | 2008-11-04 | Ati Technologies, Inc. | Method and apparatus for fragment processing in a virtual memory system |
US20070078879A1 (en) * | 2005-09-30 | 2007-04-05 | Safranek Robert J | Active address table |
US8155674B2 (en) | 2006-08-22 | 2012-04-10 | Research In Motion Limited | Apparatus, and associated method, for dynamically configuring a page message used to page an access terminal in a radio communication system |
CN101295265A (zh) * | 2007-04-25 | 2008-10-29 | 国际商业机器公司 | 全系统isa仿真系统及其识别进程的方法 |
US7885967B2 (en) * | 2008-05-30 | 2011-02-08 | Red Hat, Inc. | Management of large dynamic tables |
CN101616090B (zh) * | 2009-07-28 | 2012-08-29 | 华为技术有限公司 | 一种划分树节点资源方法及装置 |
US9396104B1 (en) * | 2010-03-22 | 2016-07-19 | Seagate Technology, Llc | Accessing compressed data of varying-sized quanta in non-volatile memory |
CN102439577B (zh) * | 2011-10-31 | 2014-01-22 | 华为技术有限公司 | 一种构建内存访问模型的方法及装置 |
CN103907099B (zh) * | 2011-11-02 | 2016-10-05 | 华为技术有限公司 | 高速缓存一致性计算机系统中未缓存的短地址转换表 |
US9256550B2 (en) * | 2012-03-28 | 2016-02-09 | International Business Machines Corporation | Hybrid address translation |
US9092359B2 (en) | 2012-06-14 | 2015-07-28 | International Business Machines Corporation | Identification and consolidation of page table entries |
US9753860B2 (en) | 2012-06-14 | 2017-09-05 | International Business Machines Corporation | Page table entry consolidation |
US9811472B2 (en) * | 2012-06-14 | 2017-11-07 | International Business Machines Corporation | Radix table translation of memory |
RU2504000C1 (ru) * | 2012-07-20 | 2014-01-10 | Открытое акционерное общество "КОНСТРУКТОРСКОЕ БЮРО "КОРУНД-М" (ОАО КБ "КОРУНД-М") | Способ копирования данных в кэш-памяти и устройство для его осуществления |
US9058268B1 (en) | 2012-09-20 | 2015-06-16 | Matrox Graphics Inc. | Apparatus, system and method for memory management |
US9753883B2 (en) * | 2014-02-04 | 2017-09-05 | Netronome Systems, Inc. | Network interface device that maps host bus writes of configuration information for virtual NIDs into a small transactional memory |
US9798674B2 (en) | 2014-12-12 | 2017-10-24 | Cisco Technology, Inc. | N-ary tree for mapping a virtual memory space |
US9537801B1 (en) * | 2015-01-31 | 2017-01-03 | Netronome Systems, Inc. | Distributed packet ordering system having separate worker and output processors |
US11768769B2 (en) * | 2016-04-25 | 2023-09-26 | Netlist, Inc. | Uniform memory access in a system having a plurality of nodes |
EP3469480B1 (en) * | 2016-04-25 | 2023-12-27 | Netlist, Inc. | Method and apparatus for uniform memory access in a storage cluster |
US10346314B2 (en) | 2016-08-03 | 2019-07-09 | International Business Machines Corporation | Efficiently generating effective address translations for memory management test cases |
US10810136B2 (en) * | 2018-06-12 | 2020-10-20 | Fortanix, Inc. | Indexing of memory pages to provide secure memory access |
US11341058B2 (en) * | 2018-07-26 | 2022-05-24 | Vmware Inc. | Handling software page faults using data from hierarchical data structures |
US10725930B2 (en) * | 2018-08-27 | 2020-07-28 | Micron Technology, Inc. | Logical to physical memory address mapping tree |
US10997085B2 (en) * | 2019-06-03 | 2021-05-04 | International Business Machines Corporation | Compression for flash translation layer |
US11281483B2 (en) | 2019-10-16 | 2022-03-22 | International Business Machines Corporation | Preserving transient address translation information across a firmware assisted dump procedure |
CN112596717B (zh) * | 2020-12-21 | 2023-11-21 | 平安银行股份有限公司 | 多数据打包方法、装置、电子设备及计算机可读存储介质 |
CN113392065A (zh) * | 2021-07-14 | 2021-09-14 | 中科晶锐(苏州)科技有限公司 | 异构计算系统及计算方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5526503A (en) * | 1993-10-06 | 1996-06-11 | Ast Research, Inc. | Virtual addressing buffer circuit |
WO1998014877A1 (en) * | 1996-09-30 | 1998-04-09 | Cirrus Logic, Inc. | Virtual addressing for subsystem dma |
CN1536493A (zh) * | 2003-04-11 | 2004-10-13 | 索尼株式会社 | 信息处理装置和方法、存储介质、程序及摄像装置 |
Family Cites Families (1)
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 |
-
2005
- 2005-09-22 US US11/232,773 patent/US7330958B2/en active Active
-
2006
- 2006-07-04 CN CN2006100957456A patent/CN1936869B/zh active Active
-
2007
- 2007-10-31 US US11/930,513 patent/US7809921B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5526503A (en) * | 1993-10-06 | 1996-06-11 | Ast Research, Inc. | Virtual addressing buffer circuit |
WO1998014877A1 (en) * | 1996-09-30 | 1998-04-09 | Cirrus Logic, Inc. | Virtual addressing for subsystem dma |
CN1536493A (zh) * | 2003-04-11 | 2004-10-13 | 索尼株式会社 | 信息处理装置和方法、存储介质、程序及摄像装置 |
Also Published As
Publication number | Publication date |
---|---|
US7330958B2 (en) | 2008-02-12 |
US7809921B2 (en) | 2010-10-05 |
US20070079106A1 (en) | 2007-04-05 |
US20080052486A1 (en) | 2008-02-28 |
CN1936869A (zh) | 2007-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1936869B (zh) | 用于翻译地址的方法和系统 | |
CN100421088C (zh) | 用于管理高速缓存数据的数字数据处理设备和方法 | |
CN1307561C (zh) | 不同高速缓存级上具有关联集重叠同余组的多级高速缓存 | |
US11132300B2 (en) | Memory hierarchy using page-based compression | |
CN102754086B (zh) | 页面大小可变的虚拟内存系统 | |
CN101510176B (zh) | 通用操作系统对cpu二级缓存访问的控制方法 | |
US20160253123A1 (en) | NVMM: An Extremely Large, Logically Unified, Sequentially Consistent Main-Memory System | |
JP5575997B1 (ja) | 半導体装置及び半導体装置に対するエントリアドレス書き込み/読み出し方法 | |
CN102662869B (zh) | 虚拟机中的内存访问方法和装置及查找器 | |
US8688948B2 (en) | Flexible memory controller for autonomous mapping of memory | |
US6745291B1 (en) | High speed LRU line replacement system for cache memories | |
JP2006134324A (ja) | ロッキング・キャッシュを用いる直接的保存 | |
CN107180001A (zh) | 访问动态随机存储器dram的方法和总线 | |
JP3786993B2 (ja) | データ記憶ユニット及び該ユニットを用いたデータ記憶装置 | |
US11573735B2 (en) | Technologies for media management in column-addressable memory media systems | |
JPH07120312B2 (ja) | バッファメモリ制御装置 | |
JPH08129569A (ja) | コンピュータ援用設計方法 | |
US6686920B1 (en) | Optimizing the translation of virtual addresses into physical addresses using a pipeline implementation for least recently used pointer | |
US8874837B2 (en) | Embedded memory and dedicated processor structure within an integrated circuit | |
CN116662019B (zh) | 请求的分配方法、装置、存储介质及电子装置 | |
CN106066833A (zh) | 存取多端口存储器模块的方法及相关的存储器控制器 | |
US10366008B2 (en) | Tag and data organization in large memory caches | |
WO2006027643A1 (en) | A virtual address cache and method for sharing data stored in a virtual address cache | |
JP3938124B2 (ja) | データ検索装置 | |
JP4327669B2 (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 |