首页> 中国专利> 多阶段地址转换中的转换旁路

多阶段地址转换中的转换旁路

摘要

本发明的各实施例涉及多阶段地址转换中的转换旁路。一种支持虚拟化的计算机系统可以保持多个地址空间。每个客户机操作系统使用客户机虚拟地址(GVA),这些客户机虚拟地址被转换成客户机物理地址(GPA)。对一个或多个客户机操作系统进行管理的超管理器将GPA转换成根物理地址(RPA)。合并转换旁视缓冲器(MTLB)高速缓存该多个地址域之间的转换,从而能够实现更快的地址转换和存储器访问。MTLB作为多个不同的高速缓存可以是逻辑上可访问的,并且可以被重新配置成用于将不同的空间分配给每个逻辑高速缓存。可以基于控制配置和所接收到的地址的属性选择性地旁路对MTLB的高速缓存的查找。

著录项

  • 公开/公告号CN104516830A

    专利类型发明专利

  • 公开/公告日2015-04-15

    原文格式PDF

  • 申请/专利权人 凯为公司;

    申请/专利号CN201410498013.6

  • 发明设计人 R·E·凯斯勒;B·W·钦;M·S·伯通;

    申请日2014-09-25

  • 分类号G06F12/08(20060101);

  • 代理机构11256 北京市金杜律师事务所;

  • 代理人王茂华;辛鸣

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-17 03:57:53

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-05-12

    专利权的转移 IPC(主分类):G06F12/0888 登记生效日:20200422 变更前: 变更后: 申请日:20140925

    专利申请权、专利权的转移

  • 2018-12-18

    专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F12/0888 变更前: 变更后: 申请日:20140925

    专利权人的姓名或者名称、地址的变更

  • 2018-06-08

    授权

    授权

  • 2015-05-13

    实质审查的生效 IPC(主分类):G06F12/08 申请日:20140925

    实质审查的生效

  • 2015-04-15

    公开

    公开

说明书

技术领域

本发明的各实施例涉及多阶段地址转换中的转换旁路。 

背景技术

在计算机系统中,虚拟化是被称为主机的计算机系统通过其来模拟计算资源(如硬件平台、操作系统、或存储器)的过程。典型的主机运行超管理器,该超管理器为创建并运行虚拟机(也被称为客户机)的软件或硬件。通过硬件虚拟化,超管理器为每个客户机提供虚拟硬件操作平台。通过与虚拟操作平台进行接口连接,客户机访问主机的计算资源以执行其对应的操作。其结果是,单个主机可以通过虚拟化同时支持多个操作系统或其他软件。在典型的主机中,虚拟硬件平台作为“实际”硬件平台呈现给客户机,意味着硬件平台的虚拟性质对于客户机而言不应是可辨别的。进一步地,主机应避免在访问计算资源时客户机之间的冲突。为了完成这些目标,主机可以实施客户机软件与物理主机资源之间的转换方案。关于存储器资源,例如,主机可以支持呈现给对应客户机的虚拟地址空间。对于客户机而言,虚地址空间看起来像“实际”(物理)地址空间。然而,主机在虚拟地址空间与和主机的存储器相对应的物理地址空间之间进行转换。其结果是,主机可以为多个客户机管理存储器资源。 

发明内容

本发明的示例实施例提供了用于高速缓存虚拟化环境下的地址空间之间的转换的系统和方法。一种电路可以包括一个第一高速缓存,被配置成用于存储地址域之间的转换,其中,该第一高速 缓存作为一个第一逻辑部分和一个第二逻辑部分是可寻址的。该第一逻辑部分被配置成用于存储一个第一地址域和一个第二地址域之间的转换,并且该第二逻辑部分被配置成用于存储该第二地址域与一个第三地址域之间的转换。一个处理器可以被配置成用于1)关于一个地址请求对该第一和第二逻辑部分中的至少一个的一个旁路进行控制以及2)根据该旁路对该地址请求与该高速缓存的一个没有旁路的部分进行匹配并且输出一个相应的地址结果。 

在进一步的实施例中,该处理器可以被进一步配置成用于基于该地址请求所指示的一个地址对该旁路进行控制。该处理器还可以基于该地址请求所指示的该地址是否指定从一个给定地址转换排除的一个存储器的一个子集、或是否是从一个给定地址转换排除的一个地址范围(例如,如表中所指定的)的一个成员来对该旁路进行控制。该处理器还可以基于该地址请求所指定的一个地址是否被映射到该高速缓存的一个指示、或基于一个旁路指示来对该旁路进行控制。该旁路指示可以是该地址请求的一个部分,或可以进一步是该处理器所接收到的一个控制位。该处理器可以基于该地址请求所指定的一个地址是否被映射到该高速缓存的一个指示、以及2)关于该地址请求的一个旁路指示两者来对该旁路进行控制。 

在又进一步的实施例中,该处理器可以变换该地址请求的一个地址部分,该变换可以包括应用一个地址掩码。该处理器可以根据该旁路变换该地址部分代替该第一和第二逻辑部分中的至少一个的查找。在进一步的实施例中,一个寄存器可以被配置成用于限定该第一和第二逻辑部分之间的一个边界,并且该边界的位置根据该寄存器处所存储的一个值而变化。 

在仍又进一步的实施例中,一种电路可以包括一个转换旁视缓冲器(TLB),该转换旁视缓冲器被配置成用于存储多个地址域之间的转换,其中,该TLB作为一个客户机TLB和一个根TLB是可寻址的。该客户机TLB可以被配置成用于存储一个客户机虚拟地址(GVA)域与一个客户机物理地址(GPA)域之间的转换,并且 该根TLB可以被配置成用于存储该GPA域与一个根物理地址(RPA)域之间的转换。该TLB中的每个条目可以包括一个对该条目是否是该客户机TLB或该根TLB的一个成员进行指示的位。一个处理器可以被配置成用于1)关于一个地址请求对客户机TLB或根TLB中的至少一个的一个旁路进行控制以及2)根据该旁路对该地址请求与该高速缓存的一个没有旁路的部分进行匹配并且输出一个相应的地址结果。 

附图说明

从本发明的示例实施例的以下更具体的说明中上述内容将是清楚的,如在这些附图中展示的,其中,贯穿这些不同的视图相似的参照字符是指相同的部分。这些图不一定是按比例绘制,而是着重展示本发明的实施例。 

图1为一个实施例中实现合并转换旁视缓冲器(MTLB)的计算机系统的框图。 

图2是MTLB的分区的框图。 

图3是MTLB的框图。 

图4为流程图,展示了一个实施例中使用MTLB访问系统存储器的过程。 

图5是MTLB中的条目的框图。 

图6为实现MTLB和微转换旁视缓冲器(μTLB)的计算机系统的框图。 

图7是μTLB中的条目的框图。 

图8为流程图,展示了一个实施例中使用μTLB访问系统存储器的过程。 

图9A至图9C为框图,展示了输入到μTLB内的折叠转换(collapsed translation)。 

图10为框图,展示了一个进一步的实施例中的TLB集合和虚拟数据高速缓存。 

图11为示例数据高速缓存标记的框图。 

图12为流程图,展示了跨多个高速缓存保持条目的过程。 

图13为框图,展示了一个进一步的实施例中地址转换的选择性旁路。 

图14为流程图,展示了选择性地旁路地址转换的过程。 

具体实施方式

以下是本发明的多个示例实施例的描述。 

一种支持虚拟化的计算机系统可以保持多个地址空间。每个客户机操作系统使用客户机虚拟地址(GVA),这些客户机虚拟地址被转换成客户机物理地址(GPA)。GPA空间是指物理存储器的被分配给指定客户机的分区。然而,为了允许存储器分配的更大的灵活性,GVA空间(而不是GPA空间)被呈现给每个客户机。例如,给定的客户机的GVA空间可以大于分配给它的物理存储器分区,并且当存储器分区达到最大容量时,数据可以存储到硬盘。 

对一个或多个客户机操作系统进行管理的软件系统(如超管理器)将GPA转换成相应的根物理地址(RPA)。RPA(也被称为物理系统地址或机器地址)指示主计算机的物理存储器的位置。从而,为了通过客户机完成存储器访问,进行两次转换:首先将GVA转换成GPA,并且然后将GPA转换成RPA。 

最初通过读取(“行走(walking)”)存储相关地址关系的页表在多个地址域之间转换地址(例如,虚拟地址到物理地址)。使用转换旁视缓冲器(TLB)来高速缓存此类转换。一旦高速缓存了给定转换,就在未来存储器访问过程中访问TLB,从而要求该给定转换,由此,预防对未来页表行走的需要。在某些虚拟化系统中,TLB可以高速缓存从GVA到RPA的转换。可替代地,可以使用两个物理TLB:存储GVA到GPA转换的第一TLB、和存储GPA到RPA转换的第二TLB。 

图1为一个实施例中实现合并转换旁视缓冲器(MTLB)的 计算机系统100的框图。所示系统100可以是通过虚拟化支持多个客户机的主机的一部分。多个客户(即,客户机)104a-n通过对应的客户机操作平台(未示出)运行,这些操作平台为受超管理器105管理的虚拟硬件平台。客户机104a-n通过客户机操作平台所提供的客户机虚拟地址(GVA)空间来间接地访问物理系统存储器150。然而,通过根物理地址(RPA)空间对系统存储器150进行寻址。GVA可以首先被映射到客户机物理地址(GPA),该GPA进而被映射到为给定客户机104a-n分配的系统存储器150的分区处的RPA。从而,为了能够使客户机104a-n访问存储器,可以将GVA转换成GPA,然后将GPA转换成对系统存储器150的条目进行指示的RPA。 

存储器控制器108(其可以包括硬件和客户机操作平台的软件部分)与客户机104a-n进行接口连接,从而访问系统存储器150。为了访问系统存储器150,存储器控制器首先访问合并转换旁视缓冲器(MTLB)110。MTLB 110可以包括单个物理高速缓存、缓冲器、段寄存器、系统寄存器、或作为两个不同TLB逻辑上可寻址的其他存储单元:客户机TLB(GTLB)120(“虚拟标记部分”)和根TLB(RTLB)130(“物理标记部分”)。GTLB 120存储GVA到GPA转换,并且RTLB 130存储GPA到RPA转换。因此,MTLB 110可以看起来像作为两个不同的逻辑TLB(同时共享单个物理结构)的其他部分。 

在客户机存储器访问过程中,存储器控制器108可以从客户机104a-n接收GVA,然后,该GVA与GTLB 120中的条目进行匹配以确定相应的GPA。如果发现匹配,则存储器控制器将所定位的GPA与RTLB 130中的条目进行匹配以确定相应的RPA。在匹配RPA情况下,存储器控制器访问所指示的系统存储器150的条目以便客户机104a-n进行读取或写入操作。 

客户机104a-n可以初始地添加GTLB 120中的条目,这些客户机访问存储在系统存储器150处的页表140。页表140存储GVA、GPA和RPA空间之间的关系,并且可以对其进行“行走”以 确定那些地址空间之间的地址转换。从而,客户机104a-n可以行走页表140以确定GVA到GPA转换,并且然后通过用于将该转换存储在GTLB 120处的GTLB索引访问GTLB 120。同样,超管理器105可以初始地添加RTLB 130中的条目,该超管理器访问存储在系统存储器150处的页表140。该超管理器可以行走页表140以确定GPA到RPA转换,并且然后通过用于将该转换存储在RTLB 130处的RTLB索引访问RTLB 130。响应于GTLB 120或RTLB 130处转换查找中存储器控制器108报告的“缺失(miss)”,如上所述,可以将条目添加到GTLB 120和RTLB 130内。 

以下参照图2至图5进一步详细描述了MTLB 110的配置、以及系统100在存储器访问和填充MTLB 110过程中的操作。 

图2是MTLB 110的高速缓存206的框图。高速缓存206可以是在逻辑上被分成两个或更多个段的单个物理结构(例如,存储器或其他存储装置)。在本示例实施例中,高速缓存206被分成两个逻辑部分以容纳GTLB 120和RTLB 130。TLB分区212限定GTLB 120和RTLB 130之间的划分。在替代性实施例中,高速缓存206可以被分成多个附加段以容纳附加缓冲器,如存储附加地址空间之间的转换的TLB。在此类实施例中,可以实现附加TLB分区以将高速缓存206分成这些附加段。 

存储在MTLB 110处的或MTLB 110外部的可编程寄存器(未示出)限定对GTLB 120和RTLB 130进行划分的TLB分区212的位置。相应地,物理索引低于分区212的所有条目包括RTLB 130,并且物理索引大于等于该分区的所有条目包括GTLB 120。鉴于所有转换条目的固定数量,GTLB 120与RTLB 130之间的灵活分区允许系统(例如,系统100)优化这些结构的大小。可以在运行时间改变TLB 120、130的大小。此外,如果计算机系统用于非虚拟化环境中,分区212可以被设置成使得根TLB占据整个MTLB高速缓存206。对于此类配置而言,可以保留一个值以表示GTLB 120中的0条目。 

软件(如超管理器105和客户机104a-n(图1))可以查看 作为两个逻辑上不同的TLB的TLB 120、130,其中,分别从0到“G-Config-1”和“R-Config-1”标引每个TLB的条目,这与每个逻辑TLB 120、130的大小相符。例如,RTLB 130看起来像具有从0高达R-Config-1(其为RTLB的大小-1)的条目的软件。例如,GTLB120看起来像具有从0高达G-Config-1(其为GTLB的大小-1)的条目的软件。(GTLB的大小+RTLB的大小=MTLB的大小)。如图2中所示,可以在GTLB 120与RTLB 130之间颠倒高速缓存206中的条目的顺序,意味着自顶向下对GTLB 120进行排序和自底向上对RTLB 130进行排序。由于可以改变每个TLB 120、130的终端条目或使其无效,此类配置允许通过对TLB分区212进行重新定位更容易地改变TLB 120、130的大小。在某些实施例中,RTLB 130可以具有在1个条目与MTLB高速缓存206中的条目总数之间的大小。相比之下,由于可以要求RTLB 130具有至少一个条目,GTLB 120可以具有在1与比MTLB高速缓存206中的条目总数小1之间的大小。 

图3是MTLB 110的进一步详细的框图。可以按照以上参照图1和图2所述的那样配置MTLB 110。MTLB 110与存储器控制器108进行接口连接,从而提供地址请求(例如,GVA到GPA或GPA到RPA转换)的匹配结果,并且进一步与客户机104a-n和超管理器105进行接口连接,从而在GTLB 120和RTLB 130中添加条目并对其进行修订。客户机104a-n或代表这些客户机的硬件可以行走页表(例如,页表140,图1)以确定GVA到GPA转换,并且然后通过用于将该转换存储在GTLB 120处的GTLB索引访问GTLB120。同样,超管理器105或代表该超管理器的硬件可以在RTLB 120中添加条目并对其进行修订,该超管理器还访问页表以确定GPA到RPA转换。响应于GTLB 120或RTLB 130处转换查找中存储器控制器108报告的“缺失(miss)”,可以在GTLB 120和RTLB 130内添加条目或对其进行修订。 

为了方便访问GTLB 120和RTLB 130,MTLB 110还可以 包括一个解码器334,该解码器允许软件(例如,客户机104a-n或超管理器105)用索引访问MTLB 110的条目。可以给MTLB 110中的每个条目分配这样一个索引,并且软件可以使用解码器334来读取或写入具体条目。该解码逻辑可以使用物理索引来标识具体MTLB条目。客户机104a-n可以被限制成生成用于写入到GTLB 120的客户机逻辑索引。超管理器105(或进行根访问的其他软件)可以生成用于写入到GTLB 120或RTLB 130的客户机逻辑或根逻辑索引。可以实现索引转换器332用于将客户机索引变换成与GTLB 120的条目相对应的物理索引。 

在一个示例实施例中,GTLB 120和RTLB 130的逻辑索引可以按如下配置。总的MTLB大小可以是2的幂,并且根逻辑索引可以等于物理索引(即,物理高速缓存的索引)以便所有根逻辑索引小于RTLB 130的大小。可以将客户机逻辑索引变换成物理索引,以便所有客户机逻辑索引小于GTLB 120的大小。基于软件的只读寄存器可以指示GTLB 120和RTLB 130的大小,并且在配置了GTLB120与RTLB 130之间的分区后被自动更新。 

MTLB 110可以是全相联结构。如果MTLB 110被配置成具有相联匹配逻辑的一个物理TLB,则MTLB 110中的搜索会产生对或者GTLB 120条目或者RTLB 130条目的匹配。对于该相联逻辑而言,为了在GTLB 120与RTLB 130条目之间进行区分,每个条目可以标记有一个被称为Gt位的位。如果Gt位为1,则条目属于GTLB120;如果Gt位为零,则条目属于RTLB 130。从而,所有RTLB 130条目可以具有为0的Gt位,而所有GTLB 120条目可以具有为1的Gt位。当需要对RTLB 130进行相联查找时,发送至MTLB 110的搜索值(密钥)将Gt设置成零。类似地,当需要对GTLB 120进行相联查找时,发送至MTLB 110的搜索值将Gt设置成1。 

可以通过使用“随机寄存器”来利用随机替换,作为处理MTLB查找“缺失”的算法的一部分。随机寄存器可以选择所选择的GTLB 120或RTLB 130的一部分内的随机条目。参照图2,例如, 随机替换可以被限制到“线(wired)”条目(即,“G线”、“R线”)与对应TLB的终端条目之间的段。 

再次参照图3(并且参照图1),当超管理器105在客户机104a-n之间进行切换时,必须用输入客户机(例如,客户机104b)的客户机TLB条目替换属于输出客户机(例如,客户机104a)的客户机TLB条目。超管理器105可以管理MTLB 110来使此变化生效。因为MTLB 110可以是全相联结构,该系统应避免递送有待匹配的、会与多个条目匹配的值(密钥)。匹配多个条目通常被认为是软件错误并且可能导致引起故障,如机器检查异常。在写入到TLB过程中,可以对所有条目进行潜在冲突的检查。如果发现冲突,则禁止写入,并且生成机器检查异常。在改变客户机操作系统的具体情况下,当用输入TLB条目替换输出TLB条目时,可以预期GTLB 120中的多个条目可以匹配。即,输入客户机映射可能具有与输出客户机映射相同或相似的客户机虚拟地址。因为一旦已经用输入客户机条目完全替换了输出客户机条目就可以解决这种临时情况,可以提供软件控制(例如,通过超管理器105进行管理)来抑制这种客户机操作系统切换过程的机器检查异常。这种软件控制允许客户机TLB中的多个条目在软件正在为另一个虚拟地址改变一个上下文时在一个虚拟地址上进行匹配。 

返回参照图2,根软件(如超管理器105(图1))可以在运行时间而不是在系统配置过程中对寄存器进行编程,该寄存器限定分区212的位置。此寄存器的重新编程(例如,在运行时间期间)可以自动地更新架构可视客户机和对GTLB 120与RTLB 130的大小进行标识的根寄存器中的值。在其他实现方式中,可以由根软件直接执行此类更新。当RTLB 130的大小增长而GTLB 120的大小收缩时,用于属于GTLB 120的某些条目现在属于RTLB 130。软件可以使用TLB写入索引指令来写入这些具有根映射的新条目,或这些条目可以被写成无效。当执行TLB写入索引指令时,这些条目中的每个条目内的Gt位可以被重设,从而将它们正确地标记为根条目。改 变Gt位的失败会引起不可预测的行为。相反,当RTLB 130的大小收缩而GTLB 120的大小增加时,之前属于RTLB 130的某些条目现在属于GTLB 120。根软件可以使用TLB写入索引指令来写入这些具有非冲突客户机映射的条目,或TLB条目可以被写成无效。当执行TLB客户机写入索引指令时,用于此类条目的Gt位可以被设置成使得条目现在被正确地标记为客户机条目。在一个替代性实施例中,当在GTLB与RTLB之间移动条目时,可以使用硬件而不是软件来正确地配置Gt位。 

超管理器105、或其他软件或硬件被进一步配置成用于提供用于GTLB 120中的条目的批量无效。通过将Gt位用作标识符,超管理器105可以快速地使所有GTLB 120条目无效。可替代地,电路或其他硬件可以被配置成用于使Gt位被设置成1的所有条目无效。其结果是,可以从MTLB 110快速地擦除客户机上下文而不影响根TLB条目,如在客户机之间的切换过程中。在一个实施例中,由包含地址空间标识符(也被称为虚拟机ID或VMID)的寄存器标识当前客户机上下文。当切换当前客户机上下文时,超管理器105可以改变此值,并且当软件改变此值时,硬件(如上所述)可以自动地使使用该Gt位的客户机上下文无效。 

在进一步的实施例中,MTLB可以被划分成三个或更多个逻辑TLB以容纳多个客户机TLB。可以静态地或动态地管理该多个客户机上下文。在静态配置下,可以创建多个TLB分区而不是一个TLB分区(例如,图2的TLB分区212)。在此类实施例中,按照以上所述的客户机TLB和根TLB来管理TLB段,除了当在和客户机之间进行切换时可以不需要替换客户机TLB中的条目情况,其条件是附加客户机TLB可用于下一个客户机。如果客户机数量超过TLB中的客户机上下文,则可以擦除和根据需要用新的客户机上下文替换一个或多个客户机TLB。预定义的系统寄存器集合可以限定TLB分区的大小。可替代地,可以动态地管理该多个客户机上下文。例如,每个TLB条目可以标记有合适的客户机上下文并且穿插着来 自其他软件上下文的TLB条目。 

图4为流程图,展示了一个实施例中使用MTLB访问系统存储器的过程400。过程400包括两个场景:成功的MTLB查找、以当查找“缺失”后对MTLB的更新。参照图1,客户机104a向存储器控制器发送存储器访问请求(例如,对系统存储器的读取或写入)和GVA(405)。存储器控制器108接收该请求和GVA(406),并访问MTLB 110以查找与GVA的转换匹配(410)。如果发现与相应的GPA匹配,则存储器控制器进一步对GPA进行匹配以定位相应的RPA,并返回RPA(415)。然后,存储器控制器108使用RPA来访问系统存储器中的相应条目(416),从而使客户机104a能够对系统存储器150进行读取或写入操作。 

在与GPA和RPA之一或两者匹配失败(即,MTLB“缺失”)的情况下,对MTLB 110进行更新(420)。为了这样做,客户机104a和超管理器105(或代表客户机104a或超管理器105的硬件)之一或两者访问系统存储器150的页表140。客户机104a和/或超管理器105行走页表140以确定所需要的GVA到GPA和/或GPA到RPA转换(425)。然后,客户机104a和/或超管理器105可以将该或这些转换写入到MTLB 110(430)(例如,如以上参照图3所描述的)。一旦更新了MTLB 110,存储器控制器108就可以再次执行GVA与MTLB 110的匹配,并且当返回相应的RPA后(415)提供存储器访问(416)。 

图5为MTLB中的示例条目500的框图,如以上参照图1至图4所描述的MTLB。该条目可以具有一个虚拟部分501和一个物理部分502,其中,虚拟部分501包含有待匹配的地址(506)以及其他信息,并且该物理部分包含结果转换地址(510)以及其他信息。上述Gt位可以是对客户机或根软件不可见的附加条目。该虚拟部分可以包括以下条目: 

ASID[7:0](505):地址空间标识符(ASID)。如果Gt=1,则此字段保持客户机ASID用于此具体转换。如果Gt=0,则此字段 保持根ASID用于此具体转换。如果G=1,则可以忽略此字段。 

VPN(506):虚拟页号,指示GVA或GPA地址。 

G(507):全局位。如果Gt=1,则此位表示与GVA相对应的客户机TLB条目的G位。如果Gt=0,则此位表示与或者GPA或者RVA(根虚拟地址)相对应的根TLB条目的G位。 

该物理部分可以包括以下条目: 

PFN(510):物理帧号,指示GPA或RPA地址的物理页号。如果Gt=1,则此字段表示GPA。如果Gt=0,则此字段表示RPA。 

XI(511):执行禁止(Execute Inhibit)指示映射包含数据而不是指令。如果XI=1,则此页面转换不可以用于指令并且仅可以用于数据转换。如果XI=0,则此转换可以用于或者数据或者指令。 

RI(512):读取禁止(Read inhibit)。读取禁止位可以用于防止读取具体页面。 

C[2:0](513):一致性属性可以存储在C字段。这些属性可以用于确定存储器空间的性质(例如,可高速缓存、没有高速缓存、一致、非一致、I/O空间等)。 

D(514):页面重写标志位。页面重写标志位指示是否之前已经写入到页面。 

V(515):有效位。有效位指示条目有效还是无效。 

图6为实现MTLB 610和微转换旁视缓冲器(μTLB)615的计算机系统600的框图。可以与以上参照图1至图5所述的系统100类似地配置系统600,其中添加了μTLB 615。μTLB 615的添加可以通过高速缓存GVA空间与RPA空间之间的折叠转换而提供更快的地址转换。 

所示系统600可以是通过虚拟化支持多个客户机的主机的一部分。多个客户(即,客户机)604a-n通过对应的客户机操作平台(未示出)运行,这些操作平台为受超管理器605管理的虚拟硬 件平台。客户机604a-n通过客户机操作平台所提供的GVA空间访问物理系统存储器650。为了访问通过RPA空间寻址的系统存储器650,GVA可以首先被映射到GPA,GPA进而被映射到为给定客户机604a-n分配的系统存储器650的分区处的RPA。从而,为了能够使客户机604a-n访问存储器,可以将GVA转换成GPA,然后将GPA转换成对系统存储器650的条目进行指示的RPA。 

可以如以上参照图1至图5的MTLB 110所述的配置MTLB610。如此,MTLB 610可以包括作为两个不同TLB逻辑上可寻址的单个物理高速缓存:客户机TLB(GTLB)620和根TLB(RTLB)630。GTLB 620存储GVA到GPA转换,并且RTLB 630存储GPA到RPA转换。因此,MTLB 610可以看起来像作为两个不同的逻辑TLB(同时共享单个物理结构)的其他部分。客户机604a-n可以初始地添加GTLB 620中的条目,这些客户机访问存储在系统存储器650处的页表640。页表640存储GVA、GPA和RPA空间之间的关系,并且对其进行行走以确定哪些地址空间之间的地址转换。从而,客户机604a-n(或代表客户机的硬件)可以行走页表640以确定GVA到GPA转换,并且然后通过用于将该转换存储在GTLB 620处的GTLB索引访问GTLB 620。同样,超管理器605(或代表该超管理器的硬件)可以初始地添加RTLB 620中的条目,该超管理器访问存储在系统存储器650处的页表640。该超管理器可以行走页表640以确定GPA到RPA转换,并且然后通过用于将该转换存储在RTLB630处的RTLB索引访问RTLB 630。响应于GTLB 620或RTLB 630处转换查找中存储器控制器608报告的“缺失(miss)”,如上所述,可以将条目添加到GTLB 620和RTLB 630内。 

存储器控制器608(其可以包括硬件和客户机操作平台的软件部分)与客户机604a-n进行接口连接,从而访问系统存储器650。为了访问系统存储器650,存储器控制器首先访问μTLB 615。μTLB615可以包括高速缓存、缓冲器、段寄存器、系统寄存器、或存储GVA至RPA转换的其他存储单元。在客户机存储器访问过程中,存 储器控制器608可以从客户机604a-n接收GVA,然后,该GVA与μTLB 615中的条目进行匹配以确定相应的RPA。如果发现匹配,则存储器控制器608访问所指示的系统存储器650的条目以便客户机604a-n进行读取或写入操作。如果没有发现匹配,则存储器控制器608可以访问MTLB以确定相应的GVA到GPA和GPA到RPA转换。该存储器控制器可以进一步将两次转换折叠成单次GVA到RPA转换,并且可以用所折叠的转换填充μTLB 615。 

以下参照图7至图9进一步详细描述了MTLB 615的配置、以及系统600在存储器访问和填充μTLB 615过程中的操作。 

图7为μTLB中的示例条目700的框图,如以上参照图6所描述的μTLB 615。条目700可以包括以下段: 

V(705):有效位。有效位指示条目有效还是无效。 

Gt(706):Gt位指示条目属于客户机(Gt=1)还是根上下文(Gt=0)。如果Gt=0,则VPN为GPA或RVA。如果Gt=1,则VPN为GVA或GPA(对于未映射的客户机地址)。Gt位的使用避免了用相应的虚拟机ID(VMID)标记每个μTLB条目的需要。 

掩码(707):这些位向比较器指示是否应在比较中考虑具体地址位或将其忽略。 

G(708):这是全局位。如果Gt=1,则此位表示与GVA相对应的客户机TLB条目的G位。如果Gt=0,则此位表示与或者GPA或者RVA相对应的根TLB条目的G位。 

ASID(709):这是ASID字段。如果Gt=1,则此字段保持客户机ASID用于此具体转换。如果G=1,则忽略此字段。如果Gt=0,则此字段保持根ASID用于此具体转换。如果G=1,则忽略此字段。 

VP(710):虚拟页号(用于GVA、GPA、或RVA)。 

ENTg[7:0](711):ENTg为客户机条目编号或对此转换的来源进行标识的另一个唯一标识符。当MTLB写入后,此编号用于选择性地使可能表示有效转换的条目无效。如果Gt=0,则不使用此 字段。根TLB内的Entg[7:0]==0指示客户机TLB中没有客户机转换(例如,未映射的客户机地址)。ENTg为MTLB中的绝对条目编号(0-255)而不是客户机熟知的“索引”。 

ENTr[8:0](712):ENTr为根条目编号或对此转换的来源进行标识的另一个唯一标识符。应指出的是,可以为Gt=0和Gt=1两者设置此字段。ENTr[8]被设置成用于指示此μTLB条目不具有MTLB根条目。如果未映射的根地址被插入到μTLB内,则会发生这种情况。ENTr为MTLB中的绝对条目编号(0-255)而不是根熟知的“索引”。 

RP(713):根页号或者从根TLB条目Lo0或条目Lo1拷贝此字段或者其可以是GPN(来自客户机TLB)和RP(来自根TLB)的拼接。 

GRI(714):客户机读取禁止。GRI位反映客户机TLB条目RI位中的值。当Gt=0时,则忽视此字段。 

RI(715):读取禁止。RI反映根TLB RI位中的值。如果Gt=0,则此字段无关紧要。 

GD(716):客户机页面重写标志位。GD位反映客户机TLB中的D位的值。如果Gt=0,则可以忽视此字段。 

D(717):页面重写标志位。D位反映根TLB中的D位的值。 

C(718):一致性位。当Gt=1时,从客户机TLB条目中取CCA。当Gt=0时,从根TLB条目中取CCA。 

以下进一步详细描述了上述值。如果客户机=1(即,执行客户机查找),则在查找时仅考虑Gt=1的条目。如果客户机=0(即,执行根查找),则在查找时仅考虑Gt=0的条目。 

返回参照图6,当需要地址转换时,存储器控制器608访问μTLB 615并在“VP”字段上搜索匹配。如果找到匹配,则相应的RP包含根物理地址的页号部分。掩码位用于确定VP字段中的哪些位匹配以及RP中的哪些位用于形成根物理地址。当发生“缺失”时, 硬件访问MTLB 610,并且取决于有待转换的地址类型,执行或者一次(GPA到RPA)或者两次(GVA到GPA、GPA到RPA)查找。 

再次返回图7,每个μTLB条目700可以表示高达两个转换步骤的结果。μTLB必须保留来自这些步骤中的每个步骤的某些信息。客户机页面大小和根页面大小(即,客户机虚拟对客户机物理页面大小或客户机物理对根物理页面大小)中的较小者确定掩码位707。 

G位708表示“全局”位。全局地址为忽视ASID情况下的地址。如果这是从GVA到RPA的映射,则从客户机TLB(即,客户机转换)拷贝G位。如果这是从GPA或RVA到RPA的映射,则从根TLB(即,根转换)拷贝G位。 

ASID字段709表示虚拟地址的地址空间标识符。ASID 709用于在属于不同上下文的虚拟地址之间进行区分。如果这是从客户机虚拟地址到根物理地址的映射,则从客户机TLB(即,客户机转换)拷贝ASID字段709。如果这是GPA到RPA的映射,则从根TLB(即,根转换)拷贝ASID字段。可以由正在转换的虚拟地址形成虚拟页号(VP)字段710,并且可以取决于(以下参照图9A-C进行详细描述的)客户机和根转换的相对页面大小来形成根页号(RP)字段713。 

读取禁止位(RI)715可以用于防止读取具体页面。因为读取权限取决于针对此位的客户机和根转换两者的值,在μTLB 615中捕捉到客户机和根两者读取禁止属性。可以从客户机TLB拷贝GRI(客户机读取禁止)。如果转换不是客户机虚拟地址转换,则可以忽视GRI位并且从根TLB条目拷贝RI位715。类似地,D位(页面重写标志位)717指示是否之前已经写入到页面。因为位717取决于针对此位的相应客户机和根转换两者的值,在μTLB 615中捕捉到客户机和根两者D位属性。 

C位718可以与针对具体页面的一致性策略相关。如果从GVA映射到RPA,则可以从客户机TLB的相应条目拷贝CCA字段 718。如果映射是GPA到RPA,则可以从客户机TLB的相应条目拷贝C字段718。 

表1:μTLB条目的有效和无效值的比较。 

表1呈现了μTLB条目的可能值,并且指示值的有效组合、以及可以产生μTLB查找过程中的“异常”的值组合。当访问μTLB后,客户机中可能发生异常状况(例如,指令提取、负荷或存储犯规)。当客户机软件解决了异常状况后,可以重新执行指令。当重新执行后,客户机权限检查可以通过,但可能存在根TLB保护犯规。然后,将用信号向根上下文发送异常。μTLB异常可以被认为是“缺失”,并且按照以下参照图8所述来处理。 

图8为流程图,展示了一个实施例中使用μTLB访问系统存储器的过程800。过程800包括两个场景:成功的μTLB查找、以当查找“缺失”后对μTLB的更新。参照图6,客户机604a向存储器控制器608发送存储器访问请求(例如,对系统存储器的读取或写入)和GVA(805)。存储器控制器608接收该请求和GVA(806),并访问μTLB 615以查找与GVA的转换匹配(810)。如果找到与相 应RPA的匹配,则返回RPA(815)。然后,存储器控制器608使用RPA来访问系统存储器中的相应条目(816),从而使客户机604a能够对系统存储器650进行读取或写入操作。 

在与GPA或RVA匹配失败(即,μTLB“缺失”)的情况下,对μTLB 615进行更新(820)。为了这样做,存储器控制器608可以作为μTLB“缺失控制器”运行。(在替代性实施例中,可以与存储器控制器608分离地配置μTLB缺失控制器)。存储器控制器608可以访问MTLB 610以检索相应的GVA到GPA和GPA到RPA转换(825)。(替代性地,如果给定的μTLB条目为GPA到RPA转换,则存储器控制器608可以仅访问GPA到RPA转换)。在从MTLB 610的相应转换下,存储器控制器生成有效的GVA到RPA转换,并且将该转换写入到μTLB 615(830)。一旦更新了μTLB 615,存储器控制器608就可以再次执行GVA与μTLB 615的匹配,并且当返回相应的RPA后(815)提供存储器访问(816)。 

为了创建μTLB条目,包括以上参照图7所述的字段,存储器控制器608可以从MTLB 610的GTLB和RTLB两者中的条目字段导入。参照图5和图7,如下填充μTLB条目的字段: 

V:1(硬件有效位) 

Gt:1(这是客户机映射) 

掩码:设置成根掩码大小和客户机掩码大小中的最小者) 

G:从客户机TLB拷贝 

ASID:从客户机上下文拷贝 

VP:GVA 

RP:RP 

GRI:从客户机TLB拷贝。 

RI:从根TLB拷贝。 

GD:从客户机TLB拷贝。 

D:从根TLB拷贝 

GXI:从客户机TLB拷贝。 

XI:从根TLB拷贝 

C:从客户机TLB拷贝 

ENTg[7:0]:设置成客户机TLB条目的索引 

ENTr[8:0]:设置成根TLB条目的索引 

图9A至图9C为框图,展示了输入到μTLB内的折叠转换。如以上参照图7所述,在μTLB条目700中,可以由正在转换的虚拟地址形成虚拟页号(VP)字段710,并且可以取决于客户机和根转换的相对页面大小来形成根页号(RP)字段713。VP和RP的生成可以是客户机和根TLB的相对页面掩码的功能。要考虑三种情况:1)根和客户机条目具有相同的页面大小,2)根条目具有比客户机条目更小的页面大小,以及3)客户机条目具有比根条目更小的页面大小。 

图9A展示了当转换中所使用的根和客户机条目具有相同页面大小时的折叠转换。在此类情况下,VP和RP的生成可以相对直接。该掩码被设置成适当的页面大小,从GTLB的VPN字段(506)拷贝VP,并且从根TLB的PFN字段(510)拷贝RP。 

图9B展示了当根条目具有比客户机条目更小的页面大小(即,GVA到GPA转换指定比GPA到RPA转换的页面大小更大的页面大小)时的折叠转换。在这种情况下,可以有待从GTLB的GVA和VPN字段(506)的组合生成VP。因此,VP被设置成具有根TLB的页面掩码的GVA。可以从根TLB的PFN字段(510)拷贝RP。 

图9C展示了当客户机条目具有比根条目更小的页面大小(即,GVA到GPA转换指定比GPA到RPA转换的页面大小更小的页面大小)时的折叠转换。在这种情况下,可以从客户机TLB的VPN字段(506)取VP。RP可以是GTLB的PFN字段(510)和RTLB的PFN字段(510)的拼接。具体地,从根TLB的物理标记取下至根页面大小的上部PA位)。可以从客户机TLB的物理标记(GPA)取下至客户机页面大小的下部位。 

在进一步的实施例中,μTLB可以高速缓存多种类型转换。 例如,μTLB可以高速缓存如上所述的从GVA)、以及从GPA或根虚拟地址(RVA)到RPA的转换,该根虚拟地址为超管理器所使用的虚拟存储器的地址。因为GVA与GPA之间会存在别名(表示可能不同根物理地址的相似地址),μTLB可以包括如上所述的Gt位。如果条目的Gt位为1,则该条目的VP表示客户机虚拟地址。类似地,如果条目的Gt位为0,则该条目的VP表示GPA或RVA。当改变客户机而不干扰超管理器所拥有的映射(即,GPA到RPA转换)时,Gt位还可以使硬件能够快速地使客户机转换(即,GVA到GPA转换)无效。 

在又进一步的实施例中,μTLB可以高速缓存任意数量地址域之间的转换。例如,某些虚拟化系统可以实现GVA、GPA和RPA域之间的附加地址域,如“安全RPA”(SPA),其可以在GPA和RPA地址域之间实现。为了容纳此类寻址系统,MTLB可以包括三个或更多个用于存储转换的逻辑部分。在包括SPA域的特定示例中,MTLB可以包括存储GVA到GPA转换的第一逻辑部分、存储GPA到SPA转换的第二逻辑部分、以及存储SPA到RPA转换的第三逻辑部分。相应地,μTLB可以被配置成用于高速缓存GVA域与RPA域之间的转换,由此折叠四个地址域之间的转换。 

在又进一步的实施例中,可以将转换保持在多层级转换存储层次中的任意层级中。每个存储层级可以保持直接转换(即,两个连续地址域之间的转换)或折叠转换(即,由一个或多个中间地址域分开的两个地址域之间的转换)。在特定示例中,系统可以被配置用于四个逻辑域和三个存储层级。第三存储层级三可以保持从第一到最后地址域的折叠转换。第二层级可以保持从第一到第二逻辑域的直接转换和从第二到最后逻辑域的折叠转换。最后,第一层级可以保持从第一到第二、第二到第三、以及第三到第四逻辑域的直接转换。 

图10为框图,展示了一个进一步的实施例中的实现多个TLB和虚拟数据高速缓存的计算机系统1000的一部分。可以分别如 以上参照图1和图6的计算机系统100和600来配置系统1000。具体地,可以与上述那些组件类似地配置存储器控制器1008、MTLB1010和μTLB 1015。系统1000进一步包括一个虚拟数据高速缓存1035,其可以是可与MTLB 1010和μTLB 1015分开寻址的不同硬件高速缓存。数据高速缓存1035可以用于存储系统存储器(如系统存储器150、650)中所展现的值。通过标记将数据定位在数据高速缓存1035内。数据高速缓存1035可以被配置成用于存储与MTLB 1010和μTLB 1015处所存储的转换相关联的标记。数据高速缓存1035处所存储的标记可以包含例如μTLB 1015的相关联条目的字段的一个子集。通过将此数据保持在数据高速缓存1035内,硬件(如存储器控制器)可以在存储器访问操作中在转换查找过程中从对这些条目的更快速访问中受益。例如,数据高速缓存1035可以被配置为用于某些或所有转换查找的第一参考,系统从该数据高速缓存检索数据,从而避免参考其他结构,如μTLB 1015、MTLB 1010和系统存储器150或650。在替代性实施例中,该数据高速缓存处所存储的标记可以包含MTLB 1010和μTLB 1015之一或两者中的相关联条目的字段的一个子集。 

图11为示例数据高速缓存标记1100的框图,其可以存储在以上参照图10所描述的数据高速缓存1035内。在本示例数据高速缓存标记中,可以由μTLB(例如,μTLB 1015)的相关联条目的相应字段填充所有字段。由μTLB填充的字段可以包括Gt位1106、G位1108、ASID字段1109、ENTg字段1111、和ENTr字段1112、D位1117、以及VP位1119,以上参照图5和图7描述了这些中的每一个。以下参照图12描述了填充数据高速缓存和将条目保持在MTLB、μTLB和数据高速缓存之间的示例过程。 

当虚拟地址与根物理地址之间的映射变化时,可以在TLB中替换包含来自虚拟地址与根物理地址之间的之前映射的信息的任何TLB条目或使其无效。可以用或者硬件或者软件手段完成此替换。当通过软件改变客户机虚拟地址到客户机物理地址的映射时,可以 更新客户机TLB。μTLB和数据高速缓存两者可能已经使用了来自之前的客户机TLB映射的信息以分别高速缓存或者地址转换或者数据值。为了保持地址和数据一致性,可以使与之前的映射相关联的任何μTLB条目或数据高速缓存条目无效。在一个实施例中,此无效可以通过硬件完成,如存储器控制器。ENTg和ENTr值唯一地对用于形成μTLB条目或数据高速缓存标记的TLB条目进行标识,并且因此当标识匹配条目时可以对其进行搜索。 

图12为流程图,展示了跨多个高速缓存保持条目的过程120。参照图10,可以按照以上参照图4所述的填充和更新到GTLB1020、RTLB 1030的条目(1205,1210),并且按照以上参照图8所述的填充和更新μTLB 1015(1215)。进一步地,存储器控制器1008或其他硬件可以通过导出给定μTLB条目的字段的所选择的子集来将标记写入到数据高速缓存1035(1220)。在填充了MTLB、μTLB和数据高速缓存的条目的情况下,响应于如以上参照图4和图8所述的存储器访问请求,存储器控制器1008可以执行转换查找(1225)。 

存储器控制器1008或其他硬件可以进一步针对MTLB1010内的条目的变化对其进行监控,如用另一个条目对一个条目进行的替换、条目的删除、或条目的无效(1230)。如果检测到此类变化,则存储器控制器1008可以搜索μTLB 1015和数据高速缓存1035中的每一个以定位与变化后的条目相对应的条目和标记(1235)。当定位此类条目和标记后,可以通过对其对应的“有效”位进行修改来使它们无效(1240)。以下进一步详细描述了跨MTLB1010、μTLB 1015和数据高速缓存1035保持条目的示例实施例。 

当替换GTLB 1020条目时,要求使包含从那个条目推导的信息的任何μTLB 1015或数据高速缓存1035条目无效。如ENTg字段(上述)标记值可以用于此类无效。此外,与GTLB条目相关联的唯一标识符可以用于找到包含来自那个GTLB条目的信息的所有μTLB和数据高速缓存条目。在一个实施例中,该唯一标识符可以是 GTLB条目的物理索引。首先,可以执行对具有等于1的Gt的μTLB和数据高速缓存条目的搜索。存储器控制器或其他硬件可以使所有的在其ENTg字段(其中客户机TLB条目的物理索引被替换)上匹配的条目无效。可以顺序地、关联地、或其某种组合来完成此搜索。使用ENTg字段通过消除与虚拟地址标记进行比较的需要(可能必须调整虚拟地址标记以适应使地址宽度(例如,高速缓存行大小vs页面大小)相异)和找到要比较的虚拟地址值来简化无效任务。使用ENTg字段还可以通过最小化CAM用于无效所需的模具区域和收缩对用于保持地址和数据一致性恰恰所需的标记子集的无效来支持虚拟高速缓存的使用。在一个替代性实施例中,可以执行批量无效,由此使Gt等于1的所有数据高速缓存和μTLB标记无效。在一个进一步的替代方案中,可以执行批量无效,由此所有数据高速缓存和μTLB标记,而无论其Gt位值如何。 

当替换RTLB 1030条目时,要求使包含从那个条目推导的信息的任何μTLB 1015或数据高速缓存1035条目无效。ENTr字段可以用于此类无效。进一步地,与RTLB条目相关联的唯一标识符可以用于找到包含来自那个RTLB条目的信息的所有μTLB和数据高速缓存条目。在一个实施例中,该唯一标识符是根TLB条目的物理索引。然后,可以执行对μTLB和数据高速缓存条目的搜索。硬件可以使所有的在其ENTg字段(其中根TLB条目的物理索引被替换)上匹配的条目无效。可以顺序地、或关联地或两者某种组合来完成此搜索。与GTLB替换情况相反,因为客户机条目和根条目两者可以依赖于根映射,可以认为Gt位的值不相关。 

如果ENTr字段没有被实现用于使条目无效,则清除根TLB条目会需要某种其他形式的数据高速缓存和μTLB无效。作为一个替代方案,可以使整个数据高速缓存和μTLB无效。在一个进一步的替代方案中,针对无效,可以匹配虚拟标记。然而,当清除了根TLB条目后,使具有GVA标记的客户机条目无效会呈现进一步的挑战。确切地,在某些实施例中,根TLB条目的GPA与映射到其上的 可能多个GVA之间不存在反向映射。因此,在此类实施例中,需要一个进一步的组件来推断映射到与被替换的根TLB匹配的GPA上的GVA。 

图13为框图,展示了一个进一步的实施例中地址转换的选择性旁路。在某些计算机架构中,虚拟地址有时可以旁路地址转换并且经历从虚拟地址到物理地址的某种固定地址变换。此外,在某些情况下,可以转换虚拟地址,但经历该转换的区域具有某种不同属性,如将地址分类为I/O地址的属性。例如,在无内锁流水线(MIPS)架构的微处理器中,某些虚拟地址不具有相应的TLB条目。而是,对于某些虚拟地址范围而言,通过应用掩码从而使得虚拟地址的低阶位变成物理地址来将该地址转换成物理地址。通过基址和界限寄存器或类似系统的使用,相似的固定功能变换在其他架构中是可能的。 

当引入通过多阶段地址转换系统进行的虚拟化时,未映射或旁路虚拟地址的可能性可以在任何阶段发生。此外,在客户机转换过程中,可以给映射的虚拟地址分配某些特殊属性。在一个二阶段转换方案实施例中,当向GTLB呈现GVA时或当向RTLB呈现GPA时,会出现未映射地址。 

多阶段转换的结果为正常未映射的GVA会产生RTLB映射的GPA。此外,具有与其相关联的某种具体属性的GVA将被转换成GPA。客户机操作系统可以指定地址应不被客户机TLB映射但可以不控制根TLB。因此,未映射的GVA会变成映射的GPA。通常,这将是合适的,因为由超管理器控制RTLB,该超管理器最终控制与GPA相关联的RPA。然而,对于某些类型的事务而言,如果GVA未被映射或者具有某种具体属性,旁路后续地址转换并且允许RPA等于GPA会是有益的。 

相应地,示例实施例可以用于基于所接收到的地址内的指示选择性的旁路地址转换的至少一部分。图13展示了一个实施例中的旁路控制,其可以通过存储器控制器(例如,图1的存储器控制 器108)或通过其他硬件和/或软件来实现。GTLB转换1320可以提供与GVA输入相对应的经转换的GPA,从而与上述GTLB查找可比较地运行。同样,RTLB转换1330可以提供与GPA输入相对应的经转换的RPA,从而与上述RTLB查找可比较地运行。 

该旁路控制可以提供用于基于地址的属性或其他指示选择性地旁路GTLB 1320和RTLB 1330转换之一或两者处的转换。如果使能旁路,则可以通过固定变换1365代替GTLB 1320和/或固定变换1366代替RTLB 1330来转换(即,通过地址掩码)地址。在一个实施例中,特权软件控制下的旁路位集合1370用于旁路RTLB转换1330。旁路确定1360可以是原始GVA的功能和/或那个GVA的属性和旁路位的状态。例如,在MIPS架构中,位可以被定义成使得KSEG0(未映射的虚拟地址段)中的所有GVA被变换成GPA(通过固定变换1365处的地址掩码),和GPA被变换成RPA(通过固定变换1366处的地址掩码),由此旁路GTLB转换1320、RTLB转换1330两者。在此类配置中,应用了地址掩码之后,GPA可以等于GVA,并且在应用了进一步的地址掩码之后,RPA将等于GPA。在某些实施例中,GPA与RPA之间可以不要求地址掩码,意味着GPA与RPA完全相同。在本示例中,客户机地址空间包含存储空间和输入/输出(I/O)空间。这些地址空间中的每个空间可以被进一步分成多个不同地址空间。 

如果GVA包含在与相应旁路位1370相关联的地址空间内,则旁路确定可以引起旁路RTLB转换1330。旁路位中的每个旁路位可以与相关联的地址空间相关,意味着如果所接收到的地址属于给定地址空间并且针对该给定地址空间使能旁路位,则可以旁路该转换。例如,如果该旁路位被设置成“1”并且原始GVA驻留在相应的地址空间内,则旁路位1370可以引起旁路RTLB转换1330。 

图14为流程图,展示了选择性地旁路地址转换的过程1400。当接收到GVA后,确定GVA是否被映射到GPA,或指定未映射的地址空间(1410)。取决于本确定,存储器控制器(或其他 硬件或软件)将GVA转换或变换成GPA(1430)。如果未映射GVA,则参考旁路位(例如,图13的旁路位1370)以确定是否使能旁路(1415)。GVA所属于的地址空间段可以确定使用哪个旁路位。如果支持相应的旁路位,则可以产生RPA等于GPA(用或没有用地址掩码变换GPA)(1440)。如果未映射GVA,或者不使能旁路,则反而通过访问RTLB将GPA转换成RPA(1435)。 

在仅GTLB的旁路情况下(即,继续访问RTLB),则客户机操作系统可以确定旁路转换从而直接访问物理存储器。然而,超管理器可以禁止此类直接访问,并且因此继续引起将GPA(由GTLB旁路引起)转换成RPA。 

如上所述的μTLB可以高速缓存从GVA到RPA的转换。因此,在旁路的情况下,旁路的结果可以或可以不被高速缓存在μTLB内。如果结果没有被高速缓存在μTLB内,则μTLB缺失会在后续访问上发生,并且可以重复旁路确定和掩码。 

尽管本发明已经参照其示例实施例做了具体的示出和说明,本领域中的技术人员应理解到通过在不偏离由所附的权利要求书涵盖的本发明的范围下可以从中做出在形式和细节上的不同的变化。 

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号