存储器地址转换

文档序号:1409695 发布日期:2020-03-06 浏览:19次 >En<

阅读说明:本技术 存储器地址转换 (Memory address translation ) 是由 乔纳森·柯蒂斯·比尔德 柯蒂斯·格伦·邓纳姆 罗克萨娜·鲁西托鲁 于 2018-07-05 设计创作,主要内容包括:存储器地址转换装置包括:转换数据存储库,用于存储转换数据的一个或多个实例,转换数据提供地址范围边界值,这些地址范围边界值定义虚拟存储器地址空间中的相应虚拟存储器地址边界之间的虚拟存储器地址的范围,并且转换数据指示虚拟存储器地址的范围内的虚拟存储器地址与输出地址空间中的对应输出存储器地址之间的转换;检测器电路,用于检测待转换的给定虚拟存储器地址是否位于由转换数据存储库中的转换数据的实例所定义的虚拟存储器地址的范围内;其中,检测器电路被配置为:当待转换的给定虚拟存储器地址位于由转换数据存储库存储的转换数据的任何实例所定义的虚拟存储器地址的范围之外时,取回转换数据的一个或多个另外实例;以及转换电路,用于将由检测到的转换数据实例所定义的转换应用于给定虚拟存储器地址。(The memory address translation apparatus includes: a translation data store to store one or more instances of translation data, the translation data providing address range boundary values defining a range of virtual memory addresses between respective virtual memory address boundaries in a virtual memory address space, and the translation data indicating translations between virtual memory addresses within the range of virtual memory addresses and corresponding output memory addresses in an output address space; a detector circuit to detect whether a given virtual memory address to be translated is within a range of virtual memory addresses defined by instances of translation data in a translation data store; wherein the detector circuit is configured to: retrieving one or more further instances of translation data when a given virtual memory address to be translated is outside a range of virtual memory addresses defined by any instance of translation data stored by a translation data store; and translation circuitry to apply translations defined by the detected translation data instances to the given virtual memory address.)

存储器地址转换

关于联邦政府赞助的研究或开发的声明

本发明是根据由DOE授予的Fast Forward 2合同利用美国政府支持做出的。美国政府对本发明享有某些权利。

背景技术

本公开涉及存储器地址转换。

数据处理装置可以向每个运行程序或***设备提供对由虚拟存储器地址定义的虚拟地址空间的访问。每个程序或设备看到其自己的虚拟地址空间,该虚拟地址空间包含供该程序或设备使用的指令和数据。在其他确定的优点中,虚拟寻址的使用允许操作系统通过禁止一个程序访问或破坏另一程序所使用的信息来控制存储器访问。

当需要访问虚拟存储器地址时,首先有必要将虚拟存储器地址转换为物理存储器地址,以使得可以从物理存储器或物理存储器缓存中获得所需的信息或者向物理存储器或物理存储器缓存写入所需的信息。

称为转换后备缓冲器(TLB)的缓存可以用作地址转换过程的一部分。TLB以固定大小逐页存储虚拟存储器地址与物理存储器地址之间的最近使用的转换或常用的转换。因此,作为地址转换过程中的第一步,可以查阅TLB以检测该TLB是否已经包含所需的地址转换。如果不是,则可以使用更复杂的转换过程,例如涉及查阅保存地址转换信息的所谓的页表,通常导致用所需的转换来填充TLB。

发明内容

在一个示例布置中,提供了存储器地址转换装置,其包括:

转换数据存储库,用于存储转换数据的一个或多个实例,转换数据提供地址范围边界值,这些地址范围边界值定义虚拟存储器地址空间中的相应虚拟存储器地址边界之间的虚拟存储器地址的范围,并且转换数据指示虚拟存储器地址的范围内的虚拟存储器地址与输出地址空间中的对应输出存储器地址之间的转换;

检测器电路,用于检测待转换的给定虚拟存储器地址是否位于由转换数据存储库中的转换数据的实例所定义的虚拟存储器地址的范围内;

其中,检测器电路被配置为:当待转换的给定虚拟存储器地址位于由转换数据存储库存储的转换数据的任何实例所定义的虚拟存储器地址的范围之外时,取回转换数据的一个或多个另外实例;以及

转换电路,用于将由检测到的转换数据实例所定义的转换应用于给定虚拟存储器地址。

在另一个示例布置中,提供了数据处理装置,其包括:

处理器,用于根据虚拟存储器地址来处理数据;

如在上面定义的地址转换装置,用于将与该处理器的处理操作有关的虚拟存储器地址转换为输出存储器地址,以访问对该输出存储器地址进行响应的存储器系统。

在另一个示例布置中,提供了存储器地址转换装置,其包括:

转换数据存储装置,用于存储转换数据的一个或多个实例,转换数据提供地址范围边界值,这些地址范围边界值定义虚拟存储器地址空间中的相应虚拟存储器地址边界之间的虚拟存储器地址的范围,并且转换数据指示虚拟存储器地址的范围内的虚拟存储器地址与输出地址空间中的对应输出存储器地址之间的转换;

用于检测待转换的给定虚拟存储器地址是否位于由转换数据存储中的转换数据的实例所定义的虚拟存储器地址的范围内的装置;

其中,用于检测的装置可操作为:当待转换的给定虚拟存储器地址位于由转换数据存储所存储的转换数据的任何实例所定义的虚拟存储器地址的范围之外时,取回转换数据的一个或多个另外实例;以及

转换装置,用于将由检测到的转换数据实例所定义的转换应用于给定虚拟存储器地址。

在另一个示例布置中,提供了一种存储器地址转换方法,其包括:

存储转换数据的一个或多个实例,转换数据提供地址范围边界值,这些地址范围边界值定义虚拟存储器地址空间中的相应虚拟存储器地址边界之间的虚拟存储器地址的范围,并且转换数据指示虚拟存储器地址的范围内的虚拟存储器地址与输出地址空间中的对应输出存储器地址之间的转换;

检测待转换的给定虚拟存储器地址是否位于由转换数据存储库中的转换数据的实例所定义的虚拟存储器地址的范围内;

当待转换的给定虚拟存储器地址位于由转换数据存储库存储的转换数据的任何实例所定义的虚拟存储器地址的范围之外时,取回转换数据的一个或多个另外实例;并且

将由检测到的转换数据实例所定义的转换应用于给定虚拟存储器地址。

本技术的另外相应方面和特征由所附权利要求限定。

附图说明

参考如在附图中示出的本技术的实施例,将仅以举例的方式进一步描述本技术,在附图中:

图1示意性地示出了数据处理装置;

图2a和图2b示意性地示出了转换数据的相应实例;

图3示意性地示出了转换数据的多个实例的存储;

图4示意性地示出了存储器地址转换装置;

图5是示出初始化过程的示意性流程图;

图6和图7是示出存储器访问方法的示意性流程图;

图8是示出存储器地址转换方法的示意性流程图;并且

图9是示出存储器地址转换方法的示意性流程图。

具体实施方式

在参考附图讨论实施例之前,提供对实施例的以下描述。

一个示例实施例提供了存储器地址转换装置,其包括:

转换数据存储,用于存储转换数据的一个或多个实例,转换数据提供地址范围边界值,这些地址范围边界值定义虚拟存储器地址空间中的相应虚拟存储器地址边界之间的虚拟存储器地址的范围,并且转换数据指示虚拟存储器地址范围内的虚拟存储器地址与输出地址空间中的对应输出存储器地址之间的转换;

检测器电路,用于检测待转换的给定虚拟存储器地址是否位于由转换数据存储中的转换数据的实例所定义的虚拟存储器地址范围内;

其中,当待转换的给定虚拟存储器地址位于由转换数据存储所存储的转换数据的任何实例所定义的虚拟存储器地址范围之外时,检测器电路被配置为取回转换数据的一个或多个另外实例;和

转换电路,用于将由检测到的转换数据的实例定义的转换应用于给定虚拟存储器地址。

示例实施例提供了一种方便的直截了当的存储器地址转换技术,该技术可以减轻其他技术(诸如使用页表遍历等)的潜在等待时间和处理要求。该技术可以提供虚拟存储器地址空间的可变大小的区域,每个区域具有可能由转换数据的单个实例定义的到输出存储器地址空间的对应区域的映射。例如,可以提供简单的偏移量,或者虚拟存储器地址范围内的特定地址的参考地址。

有利地,该装置可以存储转换数据的实例,使得仅在所需的虚拟存储器地址不位于由当前保存的(一个或多个)实例所定义的虚拟存储器地址范围内的情况下才需要另一个实例。

例如,转换数据可以指示虚拟存储器地址范围内的虚拟存储器地址与输出地址空间中的对应输出存储器地址之间的地址偏移。在其他示例中,转换数据指示输出地址空间中的与位于相对于虚拟存储器地址范围的预定位置处的虚拟存储器地址相对应的参考存储器地址,所以转换电路被配置为:通过向输出地址空间中的参考地址添加如下量或从输出地址空间中的参考地址减去如下量来转换虚拟存储器地址范围内的给定虚拟存储器地址,该量取决于虚拟存储器地址空间中的在给定虚拟存储器地址与位于相对于虚拟存储器地址范围的预定位置处的虚拟存储器地址之间的差异。在一些示例中,预定位置是虚拟存储器地址的范围内的最低存储器地址。

方便地,检测器可被配置为访问一个或多个存储器位置,这些存储器位置存储转换数据的另外实例。例如,检测器可被配置为从由一个或多个位置参数定义的存储器位置中取回转换数据的一个或多个另外实例,位置参数指示输出存储器空间中的地址。

为了旨在取回转换数据的下一个最有用实例,在一些示例中,检测器被配置为按转换数据的实例的使用顺序来取回转换数据的一个或多个另外实例。例如,使用顺序可以是最频繁使用的顺序。

在一些示例中,转换数据的每个实例包括管理数据,管理数据指示与转换数据的该实例的虚拟存储器地址的范围相关联的访问许可。

另一示例实施例提供了数据处理装置,其包括:

处理器,用于根据虚拟存储器地址来处理数据;

如在上面定义的地址转换装置,用于将与处理器的处理操作有关的虚拟存储器地址转换为输出存储器地址,以访问存储器系统,该存储器系统对该输出存储器地址进行响应。

在一些示例中,可以在地址转换装置与存储器系统之间布置缓存存储器,该缓存存储器在输出存储器地址空间中是可寻址的。例如,如果缓存不包含所需的数据项,则可以参考存储器系统,该存储器系统对输出存储器地址空间中的存储器地址进行响应。

一种建立虚拟存储器地址空间与输出存储器地址空间之间的映射的方便方法是如下方法:其中,处理器对上下文数据进行响应,该上下文数据定义适用于处理器正在执行的当前任务的上下文;并且该上下文数据包括位置参数,这些位置参数指示输出存储器空间中的存储转换数据的一个或多个另外实例的地址。以这种方式,处理该功能所需的上下文数据的量可以很小(指向保存转换数据的存储器的一个或多个指针)。

在一些示例中,可以提供两个或更多个处理器以根据相应虚拟存储器地址空间中的虚拟存储器地址来处理数据,每个处理器具有相应的地址转换装置,该地址转换装置用于将与该处理器的处理操作有关的虚拟存储器地址转换为输出存储地址以访问存储器系统。即使处理器具有其自己的虚拟存储器地址空间,输出存储器地址空间可以是处理器所共有的。例如,存储器系统可被配置为根据与每个处理器的地址转换装置的交互所共有的输出存储器地址空间来进行操作。

一些示例提供旁路逻辑,以在转换使得虚拟存储器地址等于对应的输出存储器地址时绕过转换电路。这可以避免在不需要时必须使用转换装置。例如,旁路逻辑的操作状态可以是所设置的任务上下文数据。

另一示例实施例提供了存储器地址转换装置,其包括:

转换数据存储装置,用于存储转换数据的一个或多个实例,转换数据提供地址范围边界值,这些地址范围边界值定义虚拟存储器地址空间中的相应虚拟存储器地址边界之间的虚拟存储器地址的范围,并且转换数据指示虚拟存储器地址范围内的虚拟存储器地址与输出地址空间中的对应输出存储器地址之间的转换;

用于检测待转换的给定虚拟存储器地址是否位于由转换数据存储库中的转换数据的实例所定义的虚拟存储器地址范围内的装置;

其中,当待转换的给定虚拟存储器地址位于由转换数据存储库存储的转换数据的任何实例所定义的虚拟存储器地址范围之外时,用于检测的装置可操作来取回转换数据的一个或多个另外实例;和

转换装置,用于将由检测到的转换数据实例所定义的转换应用于给定虚拟存储器地址。

另一示例实施例提供了一种存储器地址转换方法,其包括:

存储转换数据的一个或多个实例,转换数据提供地址范围边界值,这些地址范围边界值定义虚拟存储器地址空间中的相应虚拟存储器地址边界之间的虚拟存储器地址的范围,并且转换数据指示虚拟存储器地址范围内的虚拟存储器地址与输出地址空间中的对应输出存储器地址之间的转换;

检测待转换的给定虚拟存储器地址是否位于由转换数据存储库中的转换数据的实例所定义的虚拟存储器地址范围内;

当待转换的给定虚拟存储器地址位于由转换数据存储库存储的转换数据的任何实例所定义的虚拟存储器地址范围之外时,取回转换数据的一个或多个另外实例;和

将由检测到的转换数据实例所定义的转换应用于给定虚拟存储器地址。

现在参考附图,图1示意性地示出了数据处理装置。

提供了多个处理器核心100、110。在图1的示例中,示出了两个这样的处理器核心,但是(如虚线框112示意性示出的)可以提供更多的处理器核心。可替代地,系统可以仅包括一个处理器核心。

处理器核心被布置为根据虚拟存储器地址来处理数据。例如,每个处理器核心可以例如在操作系统或所谓的管理程序的控制下根据相应虚拟存储器地址空间中的虚拟存储器地址来处理数据,该操作系统或管理程序部分地作为一种用于避免与一个处理器核心相关联的进程意外地或恶意地访问适合于另一个处理器核心正在执行的进程的数据的技术而将虚拟存储器地址空间分配给不同处理器核心正在执行的进程。

提供了一种存储器地址转换装置,以在虚拟存储器地址空间中的虚拟存储器地址和所谓的真实地址之间进行转换。

在下面要讨论的存储器地址转换技术的上下文中,真实地址是输出地址空间(所谓的真实地址空间)中的“输出”存储器地址。这可以表示物理地址,通过该物理地址可以物理地寻址物理存储器设备或其他可寻址单元。或者,真实(输出)存储器地址可以表示在被用来访问物理存储器设备或其他可寻址单元之前需要另一阶段的地址转换的地址。从要讨论的地址转换技术的角度来看,这些选项中的任何一个都是等效的。也就是说,地址转换技术从虚拟存储器地址开始,并产生输出存储器地址。整个装置是否然后对输出存储器地址执行另一阶段的地址转换对输出存储器地址自身的生成并不重要。

在图1中,由所谓的范围表缓冲器(RTB)105、115来执行地址转换。这在虚拟存储器地址空间中的虚拟存储器地址与输出(真实)地址空间中的输出存储器地址之间执行地址转换。每个处理器核心都具有相应的范围表缓冲器。将在下面详细描述范围表缓冲器的操作。

提供旁路逻辑108、118,以在地址转换使得虚拟存储器地址等于对应的输出存储器地址时选择性地绕过RTB 105、115。可以由将在下面讨论的控制信号109、119来控制旁路电路或逻辑。当旁路逻辑被启用时,要么RTB 105、115不执行任何转换,要么忽略由RTB105、115执行的转换并由旁路路线104、114提供虚拟存储器地址以用作输出存储器地址。

下面要讨论的存储器地址转换操作将假定当前未启用旁路逻辑(除非另有说明)。

处理器核心100、110在该示例中被实现或制造在集成电路基板上,并且两者(或者在多于两个的情况下为全部)都可被提供在同一集成电路基板上。这些设备在图1中被称为“片上”。

还在片上提供了缓存和/或系统缓存存储器130,以便为下面要讨论的存储器系统所保存的数据的子集(诸如最近访问的子集和/或推测获取的子集)提供临时存储。如图1所示,两个处理器核心100、110共享公共的缓存/系统缓存130,但是在其他示例中,可以提供多于一个,并且以虚线示出了另一缓存140以说明这样的布置。

缓存/系统缓存130(140)根据由RTB 105、115生成的输出(真实)存储器地址来进行操作。

虚线150指示片上设备与片外设备之间的逻辑边界,但是将会认识到这仅是示例并且将在图1中示出的任何模块实现在同一集成电路上或将其实现为不同的电路是系统设计者的事情。因此,图1仅表示如何可以实现片上组件和片外组件的分离的示意性示例。

在片外提供了一个或多个存储器节点控制器160、170,其依次访问一个或多个相应的物理设备180、190,诸如随机存取存储器(DRAM)。考虑到物理设备180、190在物理地址空间中进行操作,存储器节点控制器160、170的两个功能可以包括:(a)如果需要另一阶段的转换,则将输出(真实)存储器地址转换为物理存储器地址;和(b)管理需要访问物理设备180、190中的哪一个以便实现所需的存储器访问操作。

可以要么使用下面要讨论的技术要么通过已知的存储器地址转换技术来执行上述转换操作(a)。可以例如使用在存储器节点控制器160、170中的一个或多个处存储的表格或目录来执行用于管理应当访问物理设备180、190中的哪一个的管理操作(b),该表格或目录用于指示物理地址空间在物理设备和依次的存储器节点控制器之间的划分。

不要求提供多于一个存储器节点控制器160、170,但是在图1的示例中,提供了两个存储器节点控制器。如果存储器节点控制器之一(诸如存储器节点控制器160)接收到对与由另一存储器节点控制器(诸如存储器节点控制器170)处理的地址有关的存储器访问事务的请求,则第一存储器节点控制器160可以经由数据连接165与另一存储器节点控制器170进行通信,从而传递与该事务有关的输出(真实)地址并请求由第二存储器节点控制器170执行该事务。

范围表缓冲器(RTB)105、115通过存储转换数据的一个或多个实例来进行操作。图2a示意性地示出了转换数据的这种实例。

参考图2a,转换数据的实例(或者事实上每个实例)被形成为224位的字,其包括22个保留位200、10位的管理数据(下面讨论)205、64位的地址偏移数据210、64位的“基虚拟地址”数据220以及64位的范围数据230。

数据220、230一起定义虚拟存储器地址空间中的相应虚拟存储器地址边界之间的虚拟存储器地址的范围。在图2a的示例中,虚拟存储器地址的范围在由直到由“基VA+范围”表示的地址并包括该地址的“基VA”表示的地址之间。在这里,当然将会认识到,不一定是必须由字段“基VA”定义该范围内的最低地址的情况。更一般而言,可以通过位于相对于虚拟地址的范围的预定位置处的一个参考值来定义虚拟地址的范围,所以在其他示例中,字段220可以被(例如)“最高VA”占据,使得虚拟存储器地址的范围由直到“最高VA”的“最高VA-范围”定义。在其他示例中,字段220可以被(例如)“中央VA”占据,使得虚拟存储器地址的范围在“中央VA-范围”至“中央VA+范围”之间延伸。再一次,“中央VA”将是位于相对于虚拟存储器地址的范围的预定位置处的虚拟存储器地址的示例。然而,本示例将假定字段220被“基VA”占据,并假定虚拟存储器地址的范围的相应虚拟存储器地址边界在该示例中是“基VA”和“基VA+范围”。

偏移字段210包含虚拟存储器地址的范围内的虚拟存储器地址与输出地址空间中的对应输出存储器地址之间的地址偏移,该地址偏移作为线性和而被施加到由上面讨论的边界定义的范围内的虚拟存储器地址以生成相应的输出存储地址。偏移可以为正、负或事实上为零。因此,对于属于由“基VA”和“基VA+范围”定义的范围的任意虚拟存储器地址VA_test,输出存储器地址空间中的转换后的(输出)存储器地址可以被表示为:

VA_test+偏移

换句话说,在该示例中,偏移表示虚拟存储器地址范围内的任何虚拟存储器地址与对应的输出存储器地址之间的简单差异。

在图2b中示意性地示出了另一个示例,其中字段200、205、220、230可以与在图2a中示出的字段相同,但是代替偏移字段210,提供了称为基输出240的字段,该字段指示(在此示例中)与虚拟存储器地址空间中的地址“基VA”相对应的输出存储器地址。更一般而言,字段240可以指示输出地址空间中的与位于相对于虚拟存储器地址的范围的预定位置(诸如上面讨论的示例中的预定位置)处的虚拟存储器地址相对应的参考存储器地址,所以下面要讨论的转换电路被配置为通过向输出地址空间中的参考地址添加或从输出地址空间中的参考地址减去来转换虚拟存储器地址的范围内的给定虚拟存储器地址,并且现在取决于虚拟存储器地址空间中的在给定虚拟存储器地址与位于相对于虚拟存储器地址的范围的预定位置处的虚拟存储器地址之间的差异。这给出了如下转换功能:

(VA_test-预定VA)+参考

由图2b的转换数据所定义的类型的转换提供了由转换数据的单个实例覆盖的潜在可变大小的范围,并且如果需要的话,可以提供将不同的虚拟存储器地址映射到同一输出存储器地址的多重转换。

图3示意性地示出了图2a或图2b的转换数据的多个实例的存储,例如在缓存130(140)中或在片外的存储器系统中,例如在物理设备180、190之一中。

由可变RT地址300提供定义转换数据的实例集合的存储的存储位置。将在下面进一步讨论可变RT地址的推导。由RT地址表示的存储器地址可以例如是真实(输出)地址、物理存储器地址或另一存储器地址。在本示例中,可变RT地址表示转换数据的实例集合在物理存储器中的物理存储器地址。

如由图3的虚线箭头示意性地指示,可变RT地址可以为每个示例(或实例中的多于一个)提供位置信息。或者可以根据每个实例的大小(例如224位)和实例中的基准实例的位置来推断位置。

转换数据的实例可以由例如操作系统和/或管理程序预先存储在存储器中,并且可以例如按照它们对虚拟存储器地址空间的适用性顺序来排序。举例来说,虚拟存储器地址空间被示出为图3的右侧的矩形310,并且由转换数据的上两个(如图所示)实例表示的虚拟存储器地址的范围被示意性地示出为图3中的范围312、314。另外的数据320可以要么由(下面讨论的存储库460中的)RTB存储,要么与转换数据的实例一起存储在存储器中,从而指示属性,诸如转换数据的最频繁使用的实例和/或最近使用的实例,和/或转换数据的每个实例的使用频率,和/或转换数据的每个实例的最近访问时间,等等。

图4示意性地示出了诸如图1的RTB 105、115之类的存储器地址转换装置,作为可以将由检测到的转换数据实例所定义的转换应用于给定虚拟存储器地址的转换电路的示例。

该装置包括:用于接收虚拟存储器地址的输入400,用于输出输出(转换后的)存储器地址的输出410,用于存储如在上面讨论的转换数据的一个或多个实例的转换数据存储库420,访问电路430,转换器/许可检测器440,检测器/获取逻辑450,用于存储获取标准的存储器460,以及用于存储RT地址变量的存储库470。

在操作中,如在上面讨论的,转换数据存储库420存储转换数据(诸如在图2a和图2b中示出的转换数据)的一个或多个实例,转换数据提供地址范围边界值(诸如基VA和范围),这些地址范围边界值定义虚拟存储器地址空间中的相应虚拟存储器地址边界之间的虚拟存储器地址的范围,并且转换数据指示该虚拟存储器地址范围内的虚拟存储器地址与输出存储器地址空间中的对应输出存储器地址之间的转换(诸如偏移或基输出字段)。

响应于在输入400上接收到的虚拟地址,访问电路430访问在转换数据存储库420中保存的转换数据。例如,转换数据的单个实例可以在任何时候被保存在转换数据存储库420中。检测器/获取逻辑450用作检测器电路,检测器电路用于检测待转换的虚拟存储器地址是否位于由转换数据存储库420中的转换数据的实例(或该实例)所定义的虚拟存储器地址的范围内。如果是,则检测器/获取逻辑提供指示转换的数据(诸如将偏移或基输出字段提供给转换器/许可检测器440)以及字段205中的管理数据。转换器/许可检测器电路440将由检测到的转换数据的实例(或该实例)所定义的转换应用于输入(给定)虚拟存储器地址,以确定转换后的(输出)存储器地址。这在输出410上被提供给缓存/系统缓存130,并且如果有必要则被提供给存储器节点控制器160、170中的一个或多个。

如果检测器/获取逻辑450检测到待转换的虚拟存储器地址不位于由转换数据存储库420中的转换数据的实例(或该实例)所定义的虚拟存储器地址的范围内,则检测器/获取逻辑发起对转换数据的另一个实例(或一个或多个另外实例)的获取。为此,检测器/获取逻辑450可以使用在获取标准存储库460中存储的获取标准。

获取标准的示例已经在上面进行了讨论,并且可包括:例如,最近使用的转换数据实例(其不是转换数据存储库当前保存的实例),最频繁使用的并且当前未保存在转换数据存储库中的转换数据实例,等等。检测器/获取逻辑450使用在存储库470中存储的RT地址变量来发起对转换数据的获取。所获取的转换数据实例然后被存储在转换数据存储库中,从而逐出当前存储的实例(如果仅一个被保存)或者在多于一个实例被保存在那里的情况下逐出(转换数据存储库420中存储的实例中的)最近最少使用的实例和/或最不频繁使用的实例。因此,当待转换的给定虚拟存储器地址位于由转换数据存储库存储的转换数据的任何实例所定义的虚拟存储器地址的范围之外时,检测器/获取逻辑450被配置为取回转换数据的一个(或事实上更多个)另外实例。为此,检测器/获取逻辑450可以访问(例如由可变RT地址定义或引用的)一个或多个存储位置,这一个或多个存储位置存储转换数据的另外实例。以这种方式,可变RT地址可以用作位置参数,并且检测器/获取逻辑450被配置为从由一个或多个这样的位置参数所定义的存储器位置中取回转换数据的一个或多个另外实例,这一个或多个位置参数指示输出存储器空间中(或者如果物理存储器空间是不同的则事实上是物理存储器空间中)的地址。

如在上面讨论的,获取标准460可以使得检测器/获取逻辑450被配置为按转换数据实例的使用顺序来取回转换数据的一个或多个另外实例。例如,使用顺序可以是最频繁使用的顺序,尽管它可以是最近使用的顺序。

转换器/许可检测器440的另一功能是检测对于当前转换使用的转换数据的实例的管理数据205,并且管理数据205指示与转换数据的该实例的虚拟存储器地址的范围相关联的访问许可。该许可数据可以要么作为与当前存储器访问相关联的许可数据而被传递到缓存/系统缓存130,要么可以用来控制或门控当前尝试的存储器访问,使得如果它们违反许可数据则它们不被转换器/许可检测器转发给缓存/系统缓存130。

因此,图1的布置可以提供:一个或多个处理器,用于根据虚拟存储器地址来处理数据;以及诸如在图4示出的地址转换装置,用于将与这一个或多个处理器的处理操作有关的虚拟存储器地址转换为输出存储器地址,以访问对该输出存储器地址进行响应的存储器系统。缓存/系统缓存130可以提供布置在地址转换装置与存储器系统之间的缓存存储器的示例,该缓存存储器在输出存储器地址空间中是可寻址的。存储器节点控制器160、170和物理设备180、190可以提供存储器系统,该存储器系统对输出存储器地址空间中的存储器地址进行响应。

如果两个或更多个处理器核心100、110被使用,则每个处理器可以具有相应的地址转换装置105、115,地址转换装置105、115用于将与该处理器100、110的处理操作有关的虚拟存储器地址转换为输出存储器地址以访问存储器系统160、170、180、190。如上所述,每个处理器100、110可以用来根据相应虚拟存储器地址空间中的虚拟存储器地址来处理数据。然而,真实(输出)存储器地址空间如在处理器100、110之间可以是公共的,使得存储器系统160、170、180、190被配置为根据与每个处理器的地址转换装置105、115的交互所共有的输出存储器地址空间进行操作。

图5是初始化过程的示意性示例。

可以在系统的启动或引导时的整个运行时间内简单地建立可变RT地址。类似地,也可以在启动或引导时的整个运行时间内建立用于向装置指示是否应当启用旁路功能的控制109、119。然而,在其他示例中,这些项目是在所谓的上下文切换处建立的。

作为背景,在一个或多个互连处理器的布置中,这一个或多个处理器可以在连续的部分中执行诸如线程之类的程序任务,这些连续部分可能散布着其他程序任务的执行的部分。在多处理器或多核心系统中,执行可以从一个处理器传递到另一个处理器。为此,可以进行称为上下文切换的过程。

在上下文切换中,每个处理器被配置为在由该处理元件执行程序任务之后保存与该程序任务有关或适用于该程序任务的上下文数据,并且被配置为在恢复执行程序任务时加载先前由该处理器元件或另一个处理器保存的上下文数据。

上下文数据可以指示在特定程序任务的执行被暂停或移交时处理器的当前处理状态。然而,它也可以提供例如由操作系统和/或管理程序建立的一些参数,这些参数是执行该程序任务的每种情况所共有的。在本示例中,上下文数据可以指示是否应当启用旁路功能,以及适用于该程序任务的执行的转换数据的实例在存储器中的位置。因此,在加载上下文数据时,旁路功能被启用或禁用,并且假设旁路功能被禁用,则要由RTB105、115使用的适当地址转换数据在存储器中的位置被确定。图5将该初始化过程示意性地示出为示意性流程图,该示意性流程图以步骤500处的与如在上面讨论的任务交换相对应的上下文变化开始。这导致相关的处理器在步骤510处加载新的上下文。

参考由新加载的上下文所定义的参数,处理器核心检测是否应当将旁路操作用于程序任务执行的该部分。如果答案为是,则在步骤530处通过控制信号109、119来启用旁路逻辑108、118。如果答案为否,则控制转到步骤540,在步骤540处,(例如,从适用于当前任务的上下文数据中)检测到可变RT地址并将其存储在图4的存储库470中。使用可变RT地址,在步骤550处取回至少一个表条目(也就是说,转换数据的实例)并将其存储在转换数据存储库420中。

图6和图7是示出了存储器访问方法的示意性流程图。具体而言,图6示意性地表示加载操作,并且图7示意性地表示停止操作。在每种情况下,参考由转换数据存储库420保存的转换数据的实例600、700。

首先参考图6,由处理器核心100、110之一生成加载地址605,加载地址605指示应当从其中加载一个或多个数据项的虚拟地址。在步骤610处,访问电路430查找由转换数据存储库420保存的转换数据的一个或多个实例。然后,在步骤615处,检测器/获取逻辑450关于给定虚拟地址(表示加载地址)是否存在于由转换数据存储库420中保存的转换数据所定义的一个或多个范围内进行检测。如果答案为否,则执行下面要讨论的进一步的动作620。然而,如果答案为是,则控制转到步骤625,在步骤625处,转换器/许可检测器440访问转换数据内的管理数据字段205,以根据与由转换数据的该实例所定义的虚拟地址的范围相关联的许可数据来检测当前操作是否被允许。如果答案为否,则控制转到步骤620,在步骤620处执行进一步的动作(在这种情况下为故障条件的提高)。然而,如果答案为是,则转换器/许可检测器440在步骤630处使用在转换数据存储库420中保存的转换数据的实例的偏移字段210来计算输出地址。

将输出存储器地址传递到缓存/系统缓存130,并且在步骤635处,关于与该输出地址相对应的数据当前是否被保存在缓存/系统缓存130中进行检测。如果答案为是,则在步骤640处将所需的数据项返回到发起事务的处理器核心。如果答案为否,则在步骤645处使存储器访问参考存储器系统160、170、180、190以进行处理。

在示出数据存储操作的图7中示意性地示出了类似的布置。

在这里,如上所述,参考转换数据存储库420当前所保存的转换数据的实例700。

在步骤705处,相关的处理器核心建立表示所需存储地址的虚拟地址。

在步骤710处,访问电路430访问转换数据存储库,以检测在步骤705处建立的存储地址是否位于由一个或多个存储的转换数据实例所定义的范围内。如果在步骤715处存储地址不位于这一个或多个范围内,则控制转到步骤720,在步骤720处采取下面要讨论的进一步动作。然而,如果答案为是,则控制转到步骤725,在步骤725处转换器/许可检测器440根据管理数据字段205来检测当前操作是否被允许。如果答案为否,则控制转到步骤720,在步骤720处执行进一步的动作(在该示例中为故障条件)。

然而,如果在步骤725处答案为是,则控制转到步骤730,步骤730基于表示存储地址(735)的给定虚拟地址和偏移字段210来计算用于存储当前数据的输出地址,以生成用于存储操作的输出地址740。

图8是示出存储器地址转换方法的示意性流程图,并且具体而言处理当检测到当前所需的虚拟地址不位于由转换数据存储库所保存的转换数据的一个或多个实例所定义的一个或多个范围内时图6和图7的步骤615、715的否定结果。

参考图8,在步骤800处,如果存在“命中”,也就是说待转换的当前虚拟存储器地址确实位于由转换数据存储库420所保存的转换数据的一个或多个实例所定义的范围之一内,则控制转到步骤810,步骤810概括了上面讨论的转换过程,并且当前(给定)虚拟地址被转换为对应的输出存储器地址。

然而,如果对应于步骤615、715的否定结果,来自步骤800的结果为否,则控制转到步骤820,在步骤820处访问RT地址(RT基地址),RT地址形成上下文格式的一部分并且可以可选地被RTB 105、115缓冲或存储在存储库470中。

在步骤830处,如果RTB 105、115检测到转换数据的实例确实可用于访问(也就是说,它们当前并非全部由转换数据存储库420保存),则控制转到步骤840。如果没有更多的实例可用于取回,则控制转到步骤850,在步骤850处建立故障条件。

在步骤840处,检测器/获取逻辑450取回下一个实例。这些可以可选地以排序的顺序进行访问——例如,它们可以按照使用的顺序(例如按照使用的频率)进行排序。所以下一个最多使用的实例被访问。可选地,在步骤860处,也可以推测地加载一个或多个另外实例。

在步骤870处有效地重复步骤800的测试。如果供转换的给定虚拟地址位于由新加载的实例所定义的一个或多个范围内,则控制可以转到步骤810以执行转换。如果不是,则控制返回到步骤830,使得利用步骤840再次加载一个或多个其他实例(如果可用),或者如果没有更多的实例可用,则在步骤850处建立故障条件。

图9是示出存储器地址转换方法的示意性流程图,该存储器地址转换方法包括:

(在步骤900处)存储转换数据的一个或多个实例,转换数据提供地址范围边界值,这些地址范围边界值定义虚拟存储器地址空间中的相应虚拟存储器地址边界之间的虚拟存储器地址的范围,并且转换数据指示虚拟存储器地址的范围内的虚拟存储器地址与输出地址空间中的对应输出存储器地址之间的转换;

(在步骤910处)检测待转换的给定虚拟存储器地址是否位于由转换数据存储库中的转换数据的实例所定义的虚拟存储器地址的范围内;

当待转换的给定虚拟存储器地址位于由转换数据存储库存储的转换数据的任何实例所定义的虚拟存储器地址的范围之外时,(在步骤920处)取回转换数据的一个或多个另外的实例;和

(在步骤930处)将由检测到的转换数据实例所定义的转换应用于给定虚拟存储器地址。

在本申请中,词语“配置为...”用于表示装置的元件具有能够执行所定义的操作的配置。在该上下文中,“配置”表示硬件或软件的互连的布置或方式。例如,装置可具有提供所定义的操作的专用硬件,或者处理器或其他处理设备可被编程为执行该功能。“配置为”并非暗示需要以任何方式改变装置元件以便提供所定义的操作。

尽管本文中已经参考附图详细描述了本技术的说明性实施例,但是将会明白,本技术不限于那些精确的实施例,并且本领域技术人员在不脱离如由所附权利要求限定的本技术的范围和精神的情况下可以在其中实现各种改变、添加和修改。例如,在不脱离本技术的范围的情况下,可以进行从属权利要求的特征与独立权利要求的特征的各种组合。

因此,所公开的实施例的一些特征在以下编号项中列出:

1.一种存储器地址转换装置,包括:转换数据存储库,用于存储转换数据的一个或多个实例,转换数据提供地址范围边界值,这些地址范围边界值定义虚拟存储器地址空间中的相应虚拟存储器地址边界之间的虚拟存储器地址的范围,并且转换数据指示虚拟存储器地址的范围内的虚拟存储器地址与输出地址空间中的对应输出存储器地址之间的转换;检测器电路,用于检测待转换的给定虚拟存储器地址是否位于由转换数据存储库中的转换数据的实例所定义的虚拟存储器地址的范围内;其中,检测器电路被配置为:当待转换的给定虚拟存储器地址位于由转换数据存储库存储的转换数据的任何实例所定义的虚拟存储器地址的范围之外时,取回转换数据的一个或多个另外实例;以及转换电路,用于将由检测到的转换数据实例所定义的转换应用于给定虚拟存储器地址。

2.根据项目1所述的装置,其中,转换数据指示虚拟存储器地址的范围内的虚拟存储器地址与输出地址空间中的对应输出存储器地址之间的地址偏移。

3.根据项目1所述的装置,其中,转换数据指示输出地址空间中的与位于相对于虚拟存储器地址的范围的预定位置处的虚拟存储器地址相对应的参考存储器地址,所以转换电路被配置为:通过向输出地址空间中的参考存储器地址添加如下量或从输出地址空间中的参考存储器地址减去如下量来转换虚拟存储器地址的范围内的给定虚拟存储器地址,该量取决于虚拟存储器地址空间中的在给定虚拟存储器地址与位于相对于虚拟存储器地址的范围的预定位置处的虚拟存储器地址之间的差异。

4.根据项目3所述的装置,其中:预定位置是虚拟存储器地址的范围内的最低存储器地址。

5.根据项目1所述的装置,其中,检测器被配置为访问一个或多个存储位置,该一个或多个存储位置存储转换数据的另外实例。

6.根据项目5所述的装置,其中,检测器被配置为从由一个或多个位置参数所定义的存储器位置中取回转换数据的一个或多个另外实例,这一个或多个位置参数指示输出存储器空间中的地址。

7.根据项目5所述的装置,其中,检测器被配置为按照转换数据的实例的使用顺序来取回转换数据的一个或多个另外实例。

8.根据项目7所述的装置,其中,使用顺序是最频繁使用的顺序。

9.根据项目1所述的装置,其中,转换数据的每个实例包括管理数据,管理数据指示与转换数据的该实例的虚拟存储器地址的范围相关联的访问许可。

10.数据处理装置,包括:处理器,用于根据虚拟存储器地址来处理数据;根据项目1所述的地址转换装置,用于将与该处理器的处理操作有关的虚拟存储器地址转换为输出存储器地址,以对该输出存储器地址进行响应的访问存储器系统。

11.根据项目10所述的装置,包括布置在地址转换装置与存储器系统之间的缓存存储器,该缓存存储器在输出存储器地址空间中是可寻址的。

12.根据项目10所述的装置,其中:处理器对上下文数据进行响应,该上下文数据定义可适用于处理器正在执行的当前任务的上下文;并且该上下文数据包括位置参数,这些位置参数指示输出存储器空间中的存储转换数据的一个或多个另外实例的地址。

13.根据项目10所述的装置,包括:存储器系统,该存储器系统对输出存储器地址空间中的存储器地址进行响应。

14.根据项目13所述的装置,包括:两个或更多个处理器,用于根据相应虚拟存储器地址空间中的虚拟存储器地址来处理数据,每个处理器具有相应的地址转换装置,该地址转换装置用于将与该处理器的处理操作有关的虚拟存储器地址转换为输出存储器地址以访问所述存储器系统。

15.根据项目14所述的装置,其中,存储器系统被配置为根据与每个处理器的地址转换装置的交互所共有的输出存储器地址空间来进行操作。

16.根据项目1所述的装置,包括旁路逻辑,该旁路逻辑用于在转换使得虚拟存储器地址等于对应的输出存储器地址时绕过转换电路。

17.存储器地址转换装置,包括:转换数据存储装置,用于存储转换数据的一个或多个实例,转换数据提供地址范围边界值,这些地址范围边界值定义虚拟存储器地址空间中的相应虚拟存储器地址边界之间的虚拟存储器地址的范围,并且转换数据指示虚拟存储器地址的范围内的虚拟存储器地址与输出地址空间中的对应输出存储器地址之间的转换;用于检测待转换的给定虚拟存储器地址是否位于由转换数据存储装置中的转换数据的实例所定义的虚拟存储器地址的范围内的装置;其中,用于检测的装置可操作为:当待转换的给定虚拟存储器地址位于由转换数据存储装置存储的转换数据的任何实例所定义的虚拟存储器地址的范围之外时,取回转换数据的一个或多个另外实例;以及转换装置,用于将由检测到的转换数据实例所定义的转换应用于给定虚拟存储器地址。

18.一种存储器地址转换方法,包括:存储转换数据的一个或多个实例,转换数据提供地址范围边界值,这些地址范围边界值定义虚拟存储器地址空间中的相应虚拟存储器地址边界之间的虚拟存储器地址的范围,并且转换数据指示虚拟存储器地址的范围内的虚拟存储器地址与输出地址空间中的对应输出存储器地址之间的转换;检测待转换的给定虚拟存储器地址是否位于由转换数据存储库中的转换数据的实例所定义的虚拟存储器地址的范围内;当待转换的给定虚拟存储器地址位于由转换数据存储库存储的转换数据的任何实例所定义的虚拟存储器地址范围之外时,取回转换数据的一个或多个另外实例;以及将由检测到的转换数据实例所定义的转换应用于给定虚拟存储器地址。

23页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于两层写时复制的方法和装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类