多阶段地址转换中的转换旁路的制作方法

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

【技术领域】
[0001] 本发明的各实施例涉及多阶段地址转换中的转换旁路。

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


【发明内容】

[0003] 本发明的示例实施例提供了用于高速缓存虚拟化环境下的地址空间之间的转换 的系统和方法。一种电路可以包括一个第一高速缓存,被配置成用于存储地址域之间的转 换,其中,该第一高速缓存作为一个第一逻辑部分和一个第二逻辑部分是可寻址的。该第 一逻辑部分被配置成用于存储一个第一地址域和一个第二地址域之间的转换,并且该第二 逻辑部分被配置成用于存储该第二地址域与一个第三地址域之间的转换。一个处理器可以 被配置成用于1)关于一个地址请求对该第一和第二逻辑部分中的至少一个的一个旁路进 行控制以及2)根据该旁路对该地址请求与该高速缓存的一个没有旁路的部分进行匹配并 且输出一个相应的地址结果。
[0004] 在进一步的实施例中,该处理器可以被进一步配置成用于基于该地址请求所指示 的一个地址对该旁路进行控制。该处理器还可以基于该地址请求所指示的该地址是否指定 从一个给定地址转换排除的一个存储器的一个子集、或是否是从一个给定地址转换排除的 一个地址范围(例如,如表中所指定的)的一个成员来对该旁路进行控制。该处理器还可 以基于该地址请求所指定的一个地址是否被映射到该高速缓存的一个指示、或基于一个旁 路指示来对该旁路进行控制。该旁路指示可以是该地址请求的一个部分,或可以进一步是 该处理器所接收到的一个控制位。该处理器可以基于该地址请求所指定的一个地址是否被 映射到该高速缓存的一个指示、以及2)关于该地址请求的一个旁路指示两者来对该旁路 进行控制。
[0005] 在又进一步的实施例中,该处理器可以变换该地址请求的一个地址部分,该变换 可以包括应用一个地址掩码。该处理器可以根据该旁路变换该地址部分代替该第一和第二 逻辑部分中的至少一个的查找。在进一步的实施例中,一个寄存器可以被配置成用于限定 该第一和第二逻辑部分之间的一个边界,并且该边界的位置根据该寄存器处所存储的一个 值而变化。
[0006] 在仍又进一步的实施例中,一种电路可以包括一个转换旁视缓冲器(TLB),该转换 旁视缓冲器被配置成用于存储多个地址域之间的转换,其中,该TLB作为一个客户机TLB和 一个根TLB是可寻址的。该客户机TLB可以被配置成用于存储一个客户机虚拟地址(GVA) 域与一个客户机物理地址(GPA)域之间的转换,并且该根TLB可以被配置成用于存储该 GPA域与一个根物理地址(RPA)域之间的转换。该TLB中的每个条目可以包括一个对该条 目是否是该客户机TLB或该根TLB的一个成员进行指示的位。一个处理器可以被配置成用 于1)关于一个地址请求对客户机TLB或根TLB中的至少一个的一个旁路进行控制以及2) 根据该旁路对该地址请求与该高速缓存的一个没有旁路的部分进行匹配并且输出一个相 应的地址结果。

【专利附图】

【附图说明】
[0007] 从本发明的示例实施例的以下更具体的说明中上述内容将是清楚的,如在这些附 图中展示的,其中,贯穿这些不同的视图相似的参照字符是指相同的部分。这些图不一定是 按比例绘制,而是着重展示本发明的实施例。
[0008] 图1为一个实施例中实现合并转换旁视缓冲器(MTLB)的计算机系统的框图。
[0009] 图2是MTLB的分区的框图。
[0010] 图3是MTLB的框图。
[0011] 图4为流程图,展示了一个实施例中使用MTLB访问系统存储器的过程。
[0012] 图5是MTLB中的条目的框图。
[0013] 图6为实现MTLB和微转换旁视缓冲器(μ TLB)的计算机系统的框图。
[0014] 图7是μ TLB中的条目的框图。
[0015] 图8为流程图,展示了一个实施例中使用μ TLB访问系统存储器的过程。
[0016] 图9Α至图9C为框图,展不了输入到μ TLB内的折叠转换(collapsed translation)〇
[0017] 图10为框图,展示了一个进一步的实施例中的TLB集合和虚拟数据高速缓存。
[0018] 图11为示例数据高速缓存标记的框图。
[0019] 图12为流程图,展示了跨多个高速缓存保持条目的过程。
[0020] 图13为框图,展示了一个进一步的实施例中地址转换的选择性旁路。
[0021] 图14为流程图,展示了选择性地旁路地址转换的过程。

【具体实施方式】
[0022] 以下是本发明的多个示例实施例的描述。
[0023] -种支持虚拟化的计算机系统可以保持多个地址空间。每个客户机操作系统使用 客户机虚拟地址(GVA),这些客户机虚拟地址被转换成客户机物理地址(GPA)。GPA空间是 指物理存储器的被分配给指定客户机的分区。然而,为了允许存储器分配的更大的灵活性, GVA空间(而不是GPA空间)被呈现给每个客户机。例如,给定的客户机的GVA空间可以大 于分配给它的物理存储器分区,并且当存储器分区达到最大容量时,数据可以存储到硬盘。
[0024] 对一个或多个客户机操作系统进行管理的软件系统(如超管理器)将GPA转换成 相应的根物理地址(RPA)。RPA (也被称为物理系统地址或机器地址)指示主计算机的物理 存储器的位置。从而,为了通过客户机完成存储器访问,进行两次转换:首先将GVA转换成 GPA,并且然后将GPA转换成RPA。
[0025] 最初通过读取("行走(walking) ")存储相关地址关系的页表在多个地址域之间 转换地址(例如,虚拟地址到物理地址)。使用转换旁视缓冲器(TLB)来高速缓存此类转 换。一旦高速缓存了给定转换,就在未来存储器访问过程中访问TLB,从而要求该给定转换, 由此,预防对未来页表行走的需要。在某些虚拟化系统中,TLB可以高速缓存从GVA到RPA 的转换。可替代地,可以使用两个物理TLB :存储GVA到GPA转换的第一 TLB、和存储GPA到 RPA转换的第二TLB。
[0026] 图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。
[0027] 存储器控制器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 (同时共享单个物理结构)的其他部分。
[0028] 在客户机存储器访问过程中,存储器控制器108可以从客户机104a_n接收GVA,然 后,该GVA与GTLB 120中的条目进行匹配以确定相应的GPA。如果发现匹配,则存储器控制 器将所定位的GPA与RTLB 130中的条目进行匹配以确定相应的RPA。在匹配RPA情况下, 存储器控制器访问所指示的系统存储器150的条目以便客户机104a-n进行读取或写入操 作。
[0029] 客户机104a_n可以初始地添加 GTLB 120中的条目,这些客户机访问存储在系统 存储器150处的页表140。页表140存储GVA、GPA和RPA空间之间的关系,并且可以对其进 行"行走"以确定那些地址空间之间的地址转换。从而,客户机l〇4a-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内。
[0030] 以下参照图2至图5进一步详细描述了 MTLB 110的配置、以及系统100在存储器 访问和填充MTLB 110过程中的操作。
[0031] 图2是MTLB 110的高速缓存206的框图。高速缓存206可以是在逻辑上被分成两 个或更多个段的单个物理结构(例如,存储器或其他存储装置)。在本示例实施例中,高速 缓存206被分成两个逻辑部分以容纳GTLB 120和RTLB 130。TLB分区212限定GTLB 120 和RTLB 130之间的划分。在替代性实施例中,高速缓存206可以被分成多个附加段以容纳 附加缓冲器,如存储附加地址空间之间的转换的TLB。在此类实施例中,可以实现附加 TLB 分区以将高速缓存206分成这些附加段。
[0032] 存储在MTLB 110处的或MTLB 110外部的可编程寄存器(未示出)限定对GTLB 120和RTLB 130进行划分的TLB分区212的位置。相应地,物理索引低于分区212的所有 条目包括RTLB 130,并且物理索引大于等于该分区的所有条目包括GTLB 120。鉴于所有转 换条目的固定数量,GTLB 120与RTLB 130之间的灵活分区允许系统(例如,系统100)优 化这些结构的大小。可以在运行时间改变TLB 120U30的大小。此外,如果计算机系统用 于非虚拟化环境中,分区212可以被设置成使得根TLB占据整个MTLB高速缓存206。对于 此类配置而言,可以保留一个值以表示GTLB 120中的0条目。
[0033] 软件(如超管理器105和客户机104a_n(图1))可以查看作为两个逻辑上不同 的 TLB 的 TLB 120、130,其中,分别从 0 到 "G-Config-1" 和 "R-Config-1" 标引每个 TLB 的 条目,这与每个逻辑TLB 120U30的大小相符。例如,RTLB 130看起来像具有从0高达 R-Config-I (其为RTLB的大小-1)的条目的软件。例如,GTLB120看起来像具有从0高达 G-Config-I (其为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之间的 大小。
[0034] 图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内添加条目或对其进行修订。
[0035] 为了方便访问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的条目相对应的物理索引。
[0036] 在一个示例实施例中,GTLB 120和RTLB 130的逻辑索引可以按如下配置。总的 MTLB大小可以是2的幂,并且根逻辑索引可以等于物理索引(即,物理高速缓存的索引) 以便所有根逻辑索引小于RTLB 130的大小。可以将客户机逻辑索引变换成物理索引,以便 所有客户机逻辑索引小于GTLB 120的大小。基于软件的只读寄存器可以指示GTLB 120和 RTLB 130的大小,并且在配置了 GTLB120与RTLB 130之间的分区后被自动更新。
[0037] 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。
[0038] 可以通过使用"随机寄存器"来利用随机替换,作为处理MTLB查找"缺失"的算法 的一部分。随机寄存器可以选择所选择的GTLB 120或RTLB 130的一部分内的随机条目。 参照图2,例如,随机替换可以被限制到"线(wired)"条目(即,"G线"、"R线")与对应 TLB的终端条目之间的段。
[0039] 再次参照图3 (并且参照图1),当超管理器105在客户机104a_n之间进行切换时, 必须用输入客户机(例如,客户机l〇4b)的客户机TLB条目替换属于输出客户机(例如,客 户机104a)的客户机TLB条目。超管理器105可以管理MTLB 110来使此变化生效。因为 MTLB 110可以是全相联结构,该系统应避免递送有待匹配的、会与多个条目匹配的值(密 钥)。匹配多个条目通常被认为是软件错误并且可能导致引起故障,如机器检查异常。在 写入到TLB过程中,可以对所有条目进行潜在冲突的检查。如果发现冲突,则禁止写入,并 且生成机器检查异常。在改变客户机操作系统的具体情况下,当用输入TLB条目替换输出 TLB条目时,可以预期GTLB 120中的多个条目可以匹配。即,输入客户机映射可能具有与输 出客户机映射相同或相似的客户机虚拟地址。因为一旦已经用输入客户机条目完全替换了 输出客户机条目就可以解决这种临时情况,可以提供软件控制(例如,通过超管理器105进 行管理)来抑制这种客户机操作系统切换过程的机器检查异常。这种软件控制允许客户机 TLB中的多个条目在软件正在为另一个虚拟地址改变一个上下文时在一个虚拟地址上进行 匹配。
[0040] 返回参照图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位。
[0041] 超管理器105、或其他软件或硬件被进一步配置成用于提供用于GTLB 120中的条 目的批量无效。通过将Gt位用作标识符,超管理器105可以快速地使所有GTLB 120条目 无效。可替代地,电路或其他硬件可以被配置成用于使Gt位被设置成1的所有条目无效。 其结果是,可以从MTLB 110快速地擦除客户机上下文而不影响根TLB条目,如在客户机之 间的切换过程中。在一个实施例中,由包含地址空间标识符(也被称为虚拟机ID或VMID) 的寄存器标识当前客户机上下文。当切换当前客户机上下文时,超管理器105可以改变此 值,并且当软件改变此值时,硬件(如上所述)可以自动地使使用该Gt位的客户机上下文 无效。
[0042] 在进一步的实施例中,MTLB可以被划分成三个或更多个逻辑TLB以容纳多个客户 机TLB。可以静态地或动态地管理该多个客户机上下文。在静态配置下,可以创建多个TLB 分区而不是一个TLB分区(例如,图2的TLB分区212)。在此类实施例中,按照以上所述的 客户机TLB和根TLB来管理TLB段,除了当在和客户机之间进行切换时可以不需要替换客 户机TLB中的条目情况,其条件是附加客户机TLB可用于下一个客户机。如果客户机数量 超过TLB中的客户机上下文,则可以擦除和根据需要用新的客户机上下文替换一个或多个 客户机TLB。预定义的系统寄存器集合可以限定TLB分区的大小。可替代地,可以动态地管 理该多个客户机上下文。例如,每个TLB条目可以标记有合适的客户机上下文并且穿插着 来自其他软件上下文的TLB条目。
[0043] 图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进行读取或写入操作。
[0044] 在与GPA和RPA之一或两者匹配失败(S卩,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)。
[0045] 图5为MTLB中的示例条目500的框图,如以上参照图1至图4所描述的MTLB。该 条目可以具有一个虚拟部分501和一个物理部分502,其中,虚拟部分501包含有待匹配的 地址(506)以及其他信息,并且该物理部分包含结果转换地址(510)以及其他信息。上述 Gt位可以是对客户机或根软件不可见的附加条目。该虚拟部分可以包括以下条目:
[0046] ASID[7:0] (505):地址空间标识符(ASID)。如果Gt = 1,则此字段保持客户机 ASID用于此具体转换。如果Gt = 0,则此字段保持根ASID用于此具体转换。如果G= 1, 则可以忽略此字段。
[0047] VPN (506):虚拟页号,指示GVA或GPA地址。
[0048] G(507):全局位。如果Gt = 1,则此位表示与GVA相对应的客户机TLB条目的G 位。如果Gt = 0,则此位表示与或者GPA或者RVA (根虚拟地址)相对应的根TLB条目的G 位。
[0049] 该物理部分可以包括以下条目:
[0050] PFN(510):物理帧号,指示GPA或RPA地址的物理页号。如果Gt = 1,则此字段表 示GPA。如果Gt = 0,则此字段表示RPA。
[0051] XI (511):执行禁止(Execute Inhibit)指示映射包含数据而不是指令。如果XI =1,则此页面转换不可以用于指令并且仅可以用于数据转换。如果XI = 0,则此转换可以 用于或者数据或者指令。
[0052] RI (512):读取禁止(Read inhibit)。读取禁止位可以用于防止读取具体页面。
[0053] C[2:0] (513): -致性属性可以存储在C字段。这些属性可以用于确定存储器空间 的性质(例如,可高速缓存、没有高速缓存、一致、非一致、I/O空间等)。
[0054] D(514):页面重写标志位。页面重写标志位指示是否之前已经写入到页面。
[0055] V (515):有效位。有效位指示条目有效还是无效。
[0056] 图6为实现MTLB 610和微转换旁视缓冲器(μ TLB)615的计算机系统600的框图。 可以与以上参照图1至图5所述的系统100类似地配置系统600,其中添加了 μ TLB 615。 μ TLB 615的添加可以通过高速缓存GVA空间与RPA空间之间的折叠转换而提供更快的地 址转换。
[0057] 所示系统600可以是通过虚拟化支持多个客户机的主机的一部分。多个客户(即, 客户机)604a-n通过对应的客户机操作平台(未示出)运行,这些操作平台为受超管理器 605管理的虚拟硬件平台。客户机604a-n通过客户机操作平台所提供的GVA空间访问物 理系统存储器650。为了访问通过RPA空间寻址的系统存储器650,GVA可以首先被映射到 GPA,GPA进而被映射到为给定客户机604a-n分配的系统存储器650的分区处的RPA。从 而,为了能够使客户机604a-n访问存储器,可以将GVA转换成GPA,然后将GPA转换成对系 统存储器650的条目进行指示的RPA。
[0058] 可以如以上参照图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内。
[0059] 存储器控制器608(其可以包括硬件和客户机操作平台的软件部分)与客户机 604a-n进行接口连接,从而访问系统存储器650。为了访问系统存储器650,存储器控制器 首先访问UTLB 615。μ TLB615可以包括高速缓存、缓冲器、段寄存器、系统寄存器、或存储 GVA至RPA转换的其他存储单元。在客户机存储器访问过程中,存储器控制器608可以从客 户机604a-n接收GVA,然后,该GVA与μ--Β 615中的条目进行匹配以确定相应的RPA。如 果发现匹配,则存储器控制器608访问所指示的系统存储器650的条目以便客户机604a-n 进行读取或写入操作。如果没有发现匹配,则存储器控制器608可以访问MTLB以确定相应 的GVA到GPA和GPA到RPA转换。该存储器控制器可以进一步将两次转换折叠成单次GVA 到RPA转换,并且可以用所折叠的转换填充μ TLB 615。
[0060] 以下参照图7至图9进一步详细描述了 MTLB 615的配置、以及系统600在存储器 访问和填充μ TLB 615过程中的操作。
[0061] 图7为μ TLB中的示例条目700的框图,如以上参照图6所描述的μ TLB 615。条 目700可以包括以下段:
[0062] V(705):有效位。有效位指示条目有效还是无效。
[0063] Gt (706) :Gt位指示条目属于客户机(Gt = 1)还是根上下文(Gt = 0)。如果Gt =0,则VPN为GPA或RVA。如果Gt = 1,则VPN为GVA或GPA (对于未映射的客户机地址)。 Gt位的使用避免了用相应的虚拟机ID(VMID)标记每个μ TLB条目的需要。
[0064] 掩码(707):这些位向比较器指示是否应在比较中考虑具体地址位或将其忽略。
[0065] G(708):这是全局位。如果Gt = 1,则此位表示与GVA相对应的客户机TLB条目 的G位。如果Gt = 0,则此位表示与或者GPA或者RVA相对应的根TLB条目的G位。
[0066] ASID (709):这是ASID字段。如果Gt = 1,则此字段保持客户机ASID用于此具体 转换。如果G = 1,则忽略此字段。如果Gt = 0,则此字段保持根ASID用于此具体转换。如 果G = 1,则忽略此字段。
[0067] VP(710):虚拟页号(用于 GVA、GPA、或 RVA)。
[0068] ENTg[7:0] (711) :ENTg为客户机条目编号或对此转换的来源进行标识的另一个 唯一标识符。当MTLB写入后,此编号用于选择性地使可能表示有效转换的条目无效。如果 Gt = 0,则不使用此字段。根TLB内的Entg[7:0] = = 0指示客户机TLB中没有客户机转 换(例如,未映射的客户机地址)。ENTg为MTLB中的绝对条目编号(0-255)而不是客户机 熟知的"索引"。
[0069] ENTr [8:0] (712) :ENTr为根条目编号或对此转换的来源进行标识的另一个唯一 标识符。应指出的是,可以为Gt = 0和Gt = 1两者设置此字段。ENTr[8]被设置成用于指 示此μ TLB条目不具有MTLB根条目。如果未映射的根地址被插入到μ TLB内,则会发生这 种情况。ENTr为MTLB中的绝对条目编号(0-255)而不是根熟知的"索引"。
[0070] RP(713):根页号或者从根TLB条目LoO或条目Lol拷贝此字段或者其可以是 GPN (来自客户机TLB)和RP (来自根TLB)的拼接。
[0071] GRI (714):客户机读取禁止。GRI位反映客户机TLB条目RI位中的值。当Gt = 0 时,则忽视此字段。
[0072] RI (715):读取禁止。RI反映根TLB RI位中的值。如果Gt = 0,则此字段无关紧 要。
[0073] ⑶(716):客户机页面重写标志位。⑶位反映客户机TLB中的D位的值。如果Gt =〇,则可以忽视此字段。
[0074] D(717):页面重写标志位。D位反映根TLB中的D位的值。
[0075] C(718): -致性位。当Gt = 1时,从客户机TLB条目中取CCA。当Gt = 0时,从 根TLB条目中取CCA。
[0076] 以下进一步详细描述了上述值。如果客户机=1(即,执行客户机查找),则在查 找时仅考虑Gt = 1的条目。如果客户机=0 (即,执行根查找),则在查找时仅考虑Gt = 0 的条目。
[0077] 返回参照图6,当需要地址转换时,存储器控制器608访问μ TLB 615并在"VP"字 段上搜索匹配。如果找到匹配,则相应的RP包含根物理地址的页号部分。掩码位用于确定 VP字段中的哪些位匹配以及RP中的哪些位用于形成根物理地址。当发生"缺失"时,硬 件访问MTLB 610,并且取决于有待转换的地址类型,执行或者一次(GPA到RPA)或者两次 (GVA 到 GPA、GPA 到 RPA)查找。
[0078] 再次返回图7,每个μ TLB条目700可以表示高达两个转换步骤的结果。μ TLB必 须保留来自这些步骤中的每个步骤的某些信息。客户机页面大小和根页面大小(即,客户 机虚拟对客户机物理页面大小或客户机物理对根物理页面大小)中的较小者确定掩码位 707。
[0079] G位708表示"全局"位。全局地址为忽视ASID情况下的地址。如果这是从GVA 到RPA的映射,则从客户机TLB( S卩,客户机转换)拷贝G位。如果这是从GPA或RVA到RPA 的映射,则从根TLB ( S卩,根转换)拷贝G位。
[0080] ASID字段709表示虚拟地址的地址空间标识符。ASID 709用于在属于不同上下文 的虚拟地址之间进行区分。如果这是从客户机虚拟地址到根物理地址的映射,则从客户机 TLB( S卩,客户机转换)拷贝ASID字段709。如果这是GPA到RPA的映射,则从根TLB(即, 根转换)拷贝ASID字段。可以由正在转换的虚拟地址形成虚拟页号(VP)字段710,并且可 以取决于(以下参照图9A-C进行详细描述的)客户机和根转换的相对页面大小来形成根 页号(RP)字段713。
[0081] 读取禁止位(RI) 715可以用于防止读取具体页面。因为读取权限取决于针对此位 的客户机和根转换两者的值,在UTLB 615中捕捉到客户机和根两者读取禁止属性。可以 从客户机TLB拷贝GRI (客户机读取禁止)。如果转换不是客户机虚拟地址转换,则可以忽 视GRI位并且从根TLB条目拷贝RI位715。类似地,D位(页面重写标志位)717指示是 否之前已经写入到页面。因为位717取决于针对此位的相应客户机和根转换两者的值,在 μ TLB 615中捕捉到客户机和根两者D位属性。
[0082] C位718可以与针对具体页面的一致性策略相关。如果从GVA映射到RPA,则可以 从客户机TLB的相应条目拷贝CCA字段718。如果映射是GPA到RPA,则可以从客户机TLB 的相应条目拷贝C字段718。

【权利要求】
1. 一种电路,包括: 一个高速缓存,被配置成用于存储多个地址域之间的转换,该高速缓存作为一个第一 逻辑部分和一个第二逻辑部分是可寻址的,并且该第一逻辑部分被配置成用于存储一个第 一地址域与一个第二地址域之间的转换,该第二逻辑部分被配置成用于存储该第二地址域 与一个第三地址域之间的转换;以及 一个处理器,被配置成用于1)关于一个地址请求对该第一和第二逻辑部分中的至少 一个的一个旁路进行控制以及2)根据该旁路对该地址请求与该高速缓存的一个没有旁路 的部分进行匹配并且输出一个相应的地址结果。
2. 如权利要求1所述的电路,其中,该处理器被进一步配置成用于基于该地址请求所 指示的一个地址对该旁路进行控制。
3. 如权利要求2所述的电路,其中,该处理器被进一步配置成用于基于该地址请求所 指示的该地址是否指定从一个给定地址转换排除的一个存储器的一个子集对该旁路进行 控制。
4. 如权利要求2所述的电路,其中,该处理器被进一步配置成用于基于该地址请求所 指示的该地址是否是从一个给定地址转换排除的一个地址范围中的一个成员来对该旁路 进行控制。
5. 如权利要求1所述的电路,其中,该处理器被进一步配置成用于基于该地址请求所 指定的一个地址是否被映射到该高速缓存的一个指示来对该旁路进行控制。
6. 如权利要求1所述的电路,其中,该处理器被进一步配置成用于基于一个旁路指示 对该旁路进行控制。
7. 如权利要求6所述的电路,其中,该旁路指示为该地址请求的一个部分。
8. 如权利要求6所述的电路,其中,该旁路指示为该处理器所接收到的一个控制位。
9. 如权利要求1所述的电路,其中,该处理器被进一步配置成用于基于1)该地址请求 所指定的一个地址是否被映射到该高速缓存的一个指示、以及2)关于该地址请求的一个 旁路指示来对该旁路进行控制。
10. 如权利要求1所述的电路,其中,该处理器被进一步配置成用于变换该地址请求的 一个地址部分。
11. 如权利要求10所述的电路,其中,变换该地址部分包括应用一个地址掩码。
12. 如权利要求10所述的电路,其中,该处理器根据该旁路变换该地址部分代替该第 一和第二逻辑部分中的至少一个的查找。
13. 如权利要求1所述的电路,进一步包括一个对该第一和第二逻辑部分之间的一个 边界进行限定的寄存器。
14. 如权利要求13所述的电路,其中,该边界的位置根据存储在该寄存器处的一个值 变化。
15. -种将地址转换高速缓存在存储器架构内的方法,包括: 将一个第一地址域与一个第二地址域之间的转换存储到一个高速缓存的一个第一逻 辑部分; 将该第二地址域与一个第三地址域之间的转换存储到该高速缓存的一个第二逻辑部 分; 关于一个地址请求对该第一和第二逻辑部分中的至少一个的一个旁路进行控制;以及 根据该旁路将该地址请求与该高速缓存的没有旁路的部分进行匹配并且输出一个相 应的地址结果。
16. 如权利要求15所述的方法,进一步包括基于该地址请求所指示的一个地址对该旁 路进行控制。
17. 如权利要求16所述的方法,其中,基于该地址请求所指示的该地址是否指定从一 个给定地址转换排除的一个存储器的一个子集对该旁路进行控制。
18. 如权利要求16所述的方法,其中,基于该地址请求所指示的该地址是否是从一个 给定地址转换排除的一个地址范围的一个成员来对该旁路进行控制。
19. 如权利要求15所述的方法,其中,基于该地址请求所指定的一个地址是否是被映 射到该高速缓存的一个指示来对该旁路进行控制。
20. 如权利要求15所述的方法,其中,基于一个旁路指示对该旁路进行控制。
21. 如权利要求20所述的方法,其中,该旁路指示为该地址请求的一个部分。
22. 如权利要求20所述的方法,其中,该旁路指示为一个与该地址请求无关的控制位。
23. 如权利要求15所述的方法,其中,基于1)该地址请求所指定的一个地址是否被映 射到该高速缓存的一个指示、以及2)关于该地址请求的一个旁路指示来对该旁路进行控 制。
24. 如权利要求15所述的方法,进一步包括变换该地址请求的一个地址部分。
25. 如权利要求24所述的方法,其中,变换该地址部分包括应用一个地址掩码。
26. 如权利要求24所述的方法,其中,根据该旁路变换该地址部分代替该第一和第二 逻辑部分中的至少一个的查找。
27. 如权利要求15所述的方法,进一步包括对该第一和第二逻辑部分之间的一个边界 进行限定。
28. 如权利要求27所述的方法,其中,该边界的位置根据存储在一个寄存器处的一个 值变化。
29. -种电路,包括: 一个转换旁视缓冲器(TLB),被配置成用于存储多个地址域之间的转换,该TLB作为一 个客户机TLB和一个根TLB是可寻址的,该客户机TLB被配置成用于存储一个客户机虚拟 地址(GVA)域与一个客户机物理地址(GPA)域之间的转换,该根TLB被配置成用于存储该 GPA域与一个根物理地址(RPA)域之间的转换,该TLB中的每个条目包括一个对该条目是否 是该客户机TLB或该根TLB的一个成员进行指示的位;以及 一个处理器,被配置成用于1)关于一个地址请求对客户机TLB和根TLB中的至少一个 的一个旁路进行控制以及2)根据该旁路对该地址请求与该高速缓存的一个没有旁路的部 分进行匹配并且输出一个相应的地址结果。
30. 如权利要求29所述的电路,进一步包括一个对该客户机TLB与该根TLB之间的一 个边界进行限定的寄存器。
【文档编号】G06F12/08GK104516830SQ201410498013
【公开日】2015年4月15日 申请日期:2014年9月25日 优先权日:2013年9月26日
【发明者】R·E·凯斯勒, B·W·钦, M·S·伯通 申请人:凯为公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1