用于多个顺序地址转换的合并的TLB结构.pdf

上传人:1520****312 文档编号:4041788 上传时间:2018-08-12 格式:PDF 页数:35 大小:2.67MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410498401.4

申请日:

2014.09.25

公开号:

CN104516833A

公开日:

2015.04.15

当前法律状态:

实审

有效性:

审中

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 12/10申请日:20140925|||公开

IPC分类号:

G06F12/10

主分类号:

G06F12/10

申请人:

凯为公司

发明人:

B·W·钦; S·S·穆克吉; W·P·斯尼德二世; M·S·伯通; R·E·凯斯勒

地址:

美国加利福尼亚州

优先权:

14/038,156 2013.09.26 US

专利代理机构:

北京市金杜律师事务所11256

代理人:

王茂华

PDF下载: PDF下载
内容摘要

本发明的各实施方式总体上涉及用于多个顺序地址转换的合并的TLB结构。具体地,一种支持虚拟化的计算机系统可以维护多个地址空间。每个客户机操作系统使用多个客户机虚拟地址(GVA),这些客户机虚拟地址被转换成多个客户机物理地址(GPA)。一个管理一个或多个客户机操作系统的超管理器将多个GPA转换成多个根物理地址(RPA)。一个合并的转换旁视缓冲器(MTLB)高速缓存该多个地址域之间的多种转换,从而使能更快速的地址转换和存储器访问。该MTLB可以作为多个不同高速缓存逻辑可寻址,并且可以被重新配置成用于将不同的空间分配给每个逻辑高速缓存。

权利要求书

权利要求书
1.  一种电路,包括:
一个高速缓存,被配置成用于存储多个地址域之间的多种 转换,该高速缓存作为一个第一逻辑部分和一个第二逻辑部分可寻 址,该第一逻辑部分被配置成用于存储一个第一地址域和一个第二 地址域之间的多种转换,该第二逻辑部分被配置成用于存储该第二 地址域与一个第三地址域之间的多种转换;
一个处理器,被配置成用于使一个地址请求与该高速缓存 匹配并输出一个相应的地址结果;以及
一个寄存器,被配置成用于定义该第一和第二逻辑部分之 间的一个边界。

2.  如权利要求1所述的电路,其中,该处理器被进一步配置成 用于使该第一地址域中的一个地址请求与该第一逻辑部分中的多个 条目匹配,从而确定一个具有该第二地址域中的一个地址的相应的 条目。

3.  如权利要求2所述的电路,其中,该处理器被进一步配置成 用于使该第一逻辑部分中所确定的该条目与该第二逻辑部分中的多 个条目匹配,从而确定一个具有该第三地址域中的一个地址的相应 的条目,该地址结果包括该第三地址域中的该地址。

4.  如权利要求1所述的电路,其中,该处理器被进一步配置成 用于使该第二地址域中的一个地址请求与该第二逻辑部分中的多个 条目匹配,从而确定一个具有该第三地址域中的一个地址的相应的 条目,该地址结果包括该第三地址域中的该地址。

5.  如权利要求1所述的电路,其中,该高速缓存中的多个条目 的至少一个子集包括一个索引标识符,并且进一步包括一个解码器, 该解码器被配置成用于基于该索引标识符定位该高速缓存中的一个 条目。

6.  如权利要求5所述的电路,其中,该地址请求包括该索引标 识符的一个指示。

7.  如权利要求6所述的电路,其中,该索引标识符被配置在一 个索引标识符序列中,该序列的顺序取决于该地址请求的一个来源。

8.  如权利要求1所述的电路,其中,该边界的位置根据一个存 储于该寄存器的值而变化。

9.  如权利要求8所述的电路,其中,该第一和该二逻辑部分中 的至少一个的一个大小根据存储于该寄存器的该值而变化。

10.  如权利要求9所述的电路,其中,该处理器被进一步配置成 用于响应于该第一和第二逻辑部分中的该至少一个的该大小被改变 来更新该高速缓存中的多个条目。

11.  如权利要求1所述的电路,其中,该第一地址域是一个客户 机虚拟地址域,该第二地址域是一个客户机物理地址域,并且该第 三地址域是一个根物理地址域。

12.  如权利要求1所述的电路,其中,该高速缓存中的每个条目 包括一个指示该条目是该第一逻辑部分还是该第二逻辑部分的一个 成员的位。

13.  如权利要求12所述的电路,其中,该地址请求包括该位对 应于所请求的一个条目的一个指示。

14.  如权利要求1所述的电路,其中,该处理器被配置成用于在 一个给定时间段内抑制多个匹配条目所导致的一次异常。

15.  如权利要求14所述的电路,其中,该给定时间段包括多个 发送该地址请求的来源之间的一种过渡。

16.  如权利要求1所述的电路,其中,该高速缓存中的每个条目 包括一个指示一个与该条目相关联的来源的位。

17.  如权利要求1所述的电路,其中,该处理器被配置成用于基 于该地址请求的一个来源控制对该第一部分和该第二部分的访问。

18.  如权利要求1所述的电路,其中,一个高速缓存被进一步配 置成作为一个第三逻辑部分可寻址,该第三逻辑部分被配置成用于 存储该第三地址域与一个第四地址域之间的转换,并且其中,该寄 存器被进一步配置成用于定义该第二和第三逻辑部分之间的一个边 界。

19.  如权利要求1所述的电路,其中,该处理器被进一步配置成 用于基于该地址请求中的一个指示搜索该第一和第二逻辑部分中的 所选择的一个或两者。

20.  如权利要求1所述的电路,其中,该处理器被进一步配置成 用于:在针对该地址请求检测该高速缓存中的一个丢失的条目时, 输出一个对于对应于该丢失的条目的一种转换的请求。

21.  如权利要求20所述的电路,其中,该处理器被进一步配置 成用于:在接收到对应于该丢失的条目的该转换时,在该高速缓存 的该第一和第二逻辑部分中的所选择的一个的一个随机确定的条目 处将该转换输入至该高速缓存。

22.  如权利要求1所述的电路,其中,该第一逻辑部分包括一个 第一索引并且该第二逻辑部分包括一个第二索引,该第二索引是该 第一索引的一个反向。

23.  一种将地址转换高速缓存在存储器架构中的方法,包括:
将一个第一地址域与一个第二地址域之间的多种转换存储 至一个高速缓存的一个第一逻辑部分;
将该第二地址域与一个第三地址域之间的多种转换存储至 该高速缓存的一个第二逻辑部分;
借助一个寄存器值定义该第一和第二逻辑部分之间的一个 边界;以及
使一个地址请求与该高速缓存匹配并输出一个相应的地址 结果。

24.  如权利要求23所述的方法,其中,使该地址请求匹配包括 使该第一地址域中的一个地址请求与该第一逻辑部分中的多个条目 匹配,从而确定一个具有该第二地址域中的一个地址的相应的条目。

25.  如权利要求24所述的方法,进一步包括使该第一逻辑部分 中所确定的该条目与该第二逻辑部分中的多个条目匹配,从而确定 一个具有该第三地址域中的一个地址的相应的条目,该地址结果包 括该第三地址域中的该地址。

26.  如权利要求23所述的方法,其中,匹配该地址请求包括使 该第二地址域中的一个地址请求与该第二逻辑部分中的多个条目匹 配,从而确定一个具有该第三地址域中的一个地址的相应的条目, 该地址结果包括该第三地址域中的该地址。

27.  如权利要求23所述的方法,其中,该高速缓存中的多个条 目的至少一个子集包括一个索引标识符,并且进一步包括基于该索 引标识符定位该高速缓存中的一个条目。

28.  如权利要求27所述的方法,其中,该地址请求包括该索引 标识符的一个指示。

29.  如权利要求28所述的方法,其中,该索引标识符被配置在 一个索引标识符序列中,该序列的顺序取决于该地址请求的一个来 源。

30.  如权利要求23所述的方法,进一步包括根据一个存储于该 寄存器的值改变该边界的位置。

31.  如权利要求30所述的方法,进一步包括根据存储于该寄存 器的该值而改变该第一和该第二逻辑部分中的至少一个的一个大 小。

32.  如权利要求31所述的方法,进一步包括响应于该第一和第 二逻辑部分中的该至少一个的该大小被改变来更新该高速缓存中的 多个条目。

33.  如权利要求23所述的方法,其中,该第一地址域是一个客 户机虚拟地址域,该第二地址域是一个客户机物理地址域,并且该 第三地址域是一个根物理地址域。

34.  如权利要求23所述的方法,其中,该高速缓存中的每个条 目包括一个指示该条目是该第一逻辑部分还是该第二逻辑部分的一 个成员的位。

35.  如权利要求34所述的方法,其中,该地址请求包括该位对 应于所请求的一个条目的一个指示。

36.  如权利要求23所述的方法,进一步包括在一个给定时间段 内抑制多个匹配条目所导致的一次异常。

37.  如权利要求36所述的方法,其中,该给定时间段包括多个 发送该地址请求的来源之间的一种过渡。

38.  如权利要求23所述的方法,其中,该高速缓存中的每个条 目包括一个指示一个与该条目相关联的来源的位。

39.  如权利要求23所述的方法,进一步包括基于该地址请求的 一个来源控制对该第一部分和该第二部分的访问。

40.  如权利要求23所述的方法,进一步包括:
存储该第三地址域与一个第四地址域之间的多种转换;以 及
定义该第二和第三逻辑部分之间的一个边界。

41.  如权利要求23所述的方法,进一步包括基于该地址请求中 的一个指示搜索该第一和第二逻辑部分中的所选择的一个或两者。

42.  如权利要求23所述的方法,进一步包括在针对该地址请求 检测到该高速缓存中的一个丢失的条目时输出一个对于对应于该丢 失的条目的一种转换的请求。

43.  如权利要求42所述的方法,进一步包括在接收到对应于该 丢失的条目的该转换时在该高速缓存的该第一和第二逻辑部分中的 所选择的一个的一个随机确定的条目处将该转换输入至该高速缓 存。

44.  如权利要求23所述的方法,其中,该第一逻辑部分包括一 个第一索引并且该第二逻辑部分包括一个第二索引,该第二索引是 该第一索引的一个反向。

45.  一种电路,包括:
一个被配置成用于存储多个地址域之间的多种转换的转换 旁视缓冲器(TLB),该TLB作为一个客户机TLB和一个根TLB 可寻址,该客户机TLB被配置成用于存储一个客户机虚拟地址 (GVA)域与一个客户机物理地址(GPA)域之间的多种转换,该 根TLB被配置成用于存储该GPA域与一个根物理地址(RPA)域之 间的多种转换,该高速缓存中的每个条目包括一个指示该条目是该 客户机TLB还是该根TLB的一个成员的位;
一个处理器,被配置成用于使一个地址请求与该高速缓存 匹配并输出一个相应的地址结果;以及
一个寄存器,被配置成用于定义该客户机TLB和该根TLB 之间的一个边界。

说明书

说明书用于多个顺序地址转换的合并的TLB结构
技术领域
背景技术
在计算机系统中,虚拟化是计算机系统(称为主机)通过其对 计算资源(如硬件平台、操作系统、或存储器)进行模拟的过程。 典型的主机运行超管理器,该超管理器是创建并运行虚拟机的软件 或硬件,也称为客户机。通过硬件虚拟化,超管理器为每个客户机 提供一个虚拟硬件操作平台。通过与虚拟操作系统接口连接,客户 机访问主机的计算资源以执行其对应的操作。结果是,单个主机可 以通过虚拟化同时支持多个操作系统或其他软件。
在典型的主机中,将虚拟操作平台作为“真实的”硬件平台呈 现给客户机,意味着该硬件平台的虚拟性质对于客户机来说不应该 是可辨别的。进一步地,主机应该避免访问计算资源时客户机之间 的冲突。为了完成这些目标,主机可以在客户机软件和物理主机资 源之间实施转换方案。关于存储器资源,例如,主机可以支持呈现 给对应的客户机的虚拟地址空间。该虚拟地址空间对于客户机作为 “真实”(物理)地址空间出现。然而,主机在虚拟地址空间和对 应于主机的存储器的物理地址空间之间转换。结果是,主机可以管 理多个客户机的存储器资源。
发明内容
本发明的示例实施例提供了用于在虚拟化环境中高速缓存地址 空间之间的转换的系统和方法。一种电路可以包括一个被配置成用 于存储地址域之间的转换的高速缓存,其中,该高速缓存作为一个 第一逻辑部分和一个第二逻辑部分可寻址。该第一逻辑部分被配置 成用于存储一个第一地址域和一个第二地址域之间的转换,并且该 第二逻辑部分被配置成用于存储该第二地址域与一个第三地址域之 间的转换。一个处理器被配置成用于使一个地址请求与该高速缓存 匹配并输出一个相应的地址结果。进一步地,一个寄存器被配置成 用于定义该第一和第二逻辑部分之间的边界。
在进一步的实施例中,该处理器可以使该第一地址域中的一个 地址请求与该第一逻辑部分中的多个条目匹配,从而确定一个具有 该第二地址域中的一个地址的相应的条目。该处理器还可以使该第 一逻辑部分中所确定的条目与该第二逻辑部分中的多个条目匹配, 从而确定一个具有该第三地址域中的一个地址的相应的条目,该地 址结果包括该第三地址域中的该地址。该处理器可以进一步使该第 二地址域中的一个地址请求与该第二逻辑部分中的多个条目匹配, 从而确定一个具有该第三地址域中的一个地址的相应的条目,该地 址结果包括该第三地址域中的该地址。
在仍进一步的实施例中,该高速缓存中的多个条目的至少一个 子集可以包括一个索引标识符,并且可以包括一个解码器以基于该 索引标识符定位该高速缓存中的一个条目。该地址请求可以包括该 索引标识符的一个指示,并且该索引标识符可以被配置在一个索引 标识符序列中,该序列的顺序取决于该地址请求的来源。
在又进一步的实施例中,该边界的位置可以根据一个存储于该 寄存器中的值而变化,并且该第一和第二逻辑部分中的至少一个的 大小根据该寄存器中所存储的该值而变化。该处理器可以响应于该 第一和第二逻辑部分中的该至少一个的该大小被改变来更新该高速 缓存中的多个条目。
该第一地址域可以是一个客户机虚拟地址域,该第二地址域可 以是一个客户机物理地址域,并且该第三地址域可以是一个根物理 地址域。该高速缓存中的每个条目可以包括一个指示该条目是该第 一逻辑部分还是该第二逻辑部分的一个成员的位,并且该地址请求 可以包括该位对应于所请求的条目的一个指示。
在仍进一步的实施例中,该处理器可以进一步被配置成用于在 给定时间段内抑制多个匹配条目所导致的一次异常,该异常可以例 如发生于在发送该地址请求的多个来源之间过渡时。该高速缓存中 的每个条目可以包括一个指示与该条目相关联的一个来源的位。该 处理器可以基于该地址请求的来源控制对该第一部分和该第二部分 的访问。
在又进一步的实施例中,该高速缓存作为一个第三逻辑部分可 寻址,该第三逻辑部分被配置成用于存储该第三地址域与一个第四 地址域之间的转换。该寄存器可以定义该第二和第三逻辑部分之间 的边界。该处理器可以基于该地址请求中的一个指示(如一个或多 个位)来搜索这些逻辑部分中的所选择的一个或多个。
在进一步的实施例中,在针对该地址请求检测到该高速缓存中 的一个丢失的条目时,该处理器可以输出一个对于对应于该丢失的 条目的一种转换的请求。在接收到对应于该丢失的条目的转换时, 该处理器可以在例如该高速缓存的一个随机确定的条目处将该转换 输入至该高速缓存。该第一逻辑部分可以包括一个第一索引并且该 第二逻辑部分可以包括一个第二索引,其中,该第二索引是该第一 索引的一个求逆。
在仍进一步的实施例中,该电路可以包括一个被配置成用于存 储多个地址域之间的转换的转换旁视缓冲器(TLB),该TLB作为 客户机TLB和根TLB可寻址。该客户机TLB可以存储客户机虚拟 地址(GVA)与客户机物理地址(GPA)域之间的转换,同时该根 TLB可以存储该GPA域与一个根物理地址(RPA)域之间的转换。 该根TLB还可以存储该RVA(根虚拟地址)域与该RPA之间的转 换。该高速缓存中的每个条目可以包括一个指示该条目是该客户机 TLB还是该根TLB的成员的位。该电路可以进一步包括一个处理器, 该处理器被配置成用于使一个地址请求与该高速缓存匹配,并输出 相应的地址结果;以及一个寄存器,该寄存器被配置成用于定义该 客户机TLB与该根TLB之间的边界。
附图说明
根据本发明的示例性实施例的以下更具体的说明,上述内容将 是明显的,如在这些附图中展示的,其中贯穿这些不同的视图的相 同的参照字符是指相同的部分。附图不一定按比例,而是着重于展 示本发明的实施例。
图1是在一个实施例中实施合并的转换旁视缓冲器(MTLB)的 计算机系统的框图。
图2是MTLB的一种分区的框图。
图3是MTLB的框图。
图4是展示了在一个实施例中使用MTLB访问系统存储器的过 程的流程图。
图5是MTLB中的一个条目的框图。
图6是实施MTLB和微转换旁视缓冲器(μTLB)的计算机系统 的框图。
图7是μTLB中的一个条目的框图。
图8是展示了在一个实施例中使用μTLB访问系统存储器的过程 的流程图。
图9A-C是展示了输入至μTLB的折叠转换的框图。
图10是展示了在一个进一步的实施例中的一组TLB和虚拟数据 高速缓存的框图。
图11是示例数据高速缓存标签的框图。
图12是展示了跨多个高速缓存维护条目的过程的流程图。
图13是展示了一个进一步的实施例中地址转换的选择性旁路的 框图。
图14是展示了选择性旁路地址转换的过程流程图。
具体实施方式
以下是对本发明的示例性实施例的说明。
一种支持虚拟化的计算机系统可以维护多个地址空间。每个客 户机操作系统使用多个客户机虚拟地址(GVA),这些客户机虚拟 地址被转换成多个客户机物理地址(GPA)。GPA空间是指分配给 指定客户机的物理存储器的一个分区。然而,将该GVA空间(而不 是GPA空间)呈现给每个客户机以便允许存储器分布的更大灵活性。 例如,给定客户机的GVA空间可以比分配给它的物理存储器分区更 大,并且当该存储器分区达到最大容量时可以将数据存储至硬盘。
管理一个或多个客户机操作系统的软件系统(如超管理器)将 多个GPA转换成多个相应的根物理地址(GPA)。这些RPA(也称 为物理系统地址或机器地址)指示主机的物理存储器的位置。因此, 为了通过客户机完成存储器访问,发生两种转换:首先将GVA转换 成GPA,并且然后将GPA转换成RPA。
最初通过读取(“行走”)存储相关的地址关系的页表在多个 地址域之间(例如,虚拟地址到物理地址)转换地址。使用转换旁 视缓冲器(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),进而 将该客户机物理地址映射到为给定客户机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空间之间的关系,并且可以“被行走”以确定那些地址空间 之间的地址转换。因此,客户机140a-n可以行走页表140以确定GVA 到GPA转换,并且然后通过GTLB索引访问GTLB 120以将该转换 存储于GTLB 120。同样地,最初可以由超管理器105添加RTLB 120 中的条目,该超管理器访问存储于系统存储器150的页表140。该超 管理器可以行走页表140以确定GPA到RPA转换,并且然后通过 RTLB索引访问RTLB 130以将该转换存储在RTLB 130。可以如上 所述,响应于存储器控制器108在GTLB 120或RTLB 130处的转换 查找中上报的“丢失(miss)”,可以向GTLB 120和RTLB 130中 添加条目。
下文参照图2至图5进一步详细地描述了MTLB 110的配置, 以及在存储器访问和填充MTLB 110的过程中系统100的操作。
图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 120、 130视作两个逻辑上不同的TLB,将每个TLB的条目分别从0标引 至对应于每个逻辑TLB 120、130的大小的“G-Config-1”和 “R-Config-1”。例如,RTLB 130对于软件作为具有从0上至(是 RTLB大小-1的)R-Config-1的条目出现。GTLB 120对于软件作 为具有从0上至(是GTLB大小-1的)G-Config-1的条目出现。 (GTLB大小+RTLB大小=MTLB大小)。如图2中所示,可以 使高速缓存206中的条目序列在GTLB 120和RTLB 130之间反向, 意味着GTLB 120自顶向下排序,并且RTLB 130自底向上排序。这 种配置允许通过对TLB分区212重定位来更简单地调整TLB 120、 130的大小,因为只可以改变每个TLB 120、130的末端条目或使其 无效。在某些实施例中,RTLB 130可以具有位于1个条目和MTLB 高速缓存206中的条目总数之间的大小。相比之下,GTLB 120可以 具有1和小于MTLB高速缓存206中的条目数的数之间的大小,因 为可以要求RTLB 130具有至少一个条目。
图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索引访问GTLB 120以将该转换 存储在GTLB 120。同样地,RTLB 120中的条目可以由超管理器105 或代表该超管理器的硬件来添加并修改,该超管理器或代表该超管 理器的硬件还访问页表以确定GPA到RPA转换。可以响应于存储 器控制器108在GTLB 120或RTLB 130处的转换查找中上报的“丢 失”,向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的大小,并且在配置GTLB 120和RTLB 130 之间的分区之后自动更新。
MTLB 110可以是全关联结构。如果MTLB 110被配置成具有关 联匹配逻辑的一个物理TLB,MTLB 110中的搜索可能导致与或者 GTLB 120条目或者RTLB 130条目的匹配。为了使得关联逻辑区分 GTLB 120和RTLB 130条目,可以用一个位对每个条目加标签,称 为Gt位。如果Gt位是1,则条目属于GTLB 120;如果Gt位是零, 条目属于RTLB 130。因此,所有的RTLB 130条目可以使Gt位处于 零,同时所有GTLB 120条目可以使所有Gt位处于一。当需要在 RTLB 130上进行关联查找时,发送给MTLB 110的查找值(密钥) 将Gt设置为零。类似地,当需要在GTLB 120上进行关联查找时, 发送给MTLB 110的查找值将Gt设置为一。
通过使用“随机寄存器”,可以将随机替换用作处理MTLB查 找“丢失”的算法的一部分。该随机寄存器可以在所选择的GTLB 120 或RTLB 130的一部分中选择一个随机条目。参照图2,例如,可以 将随机替换限制为“线”条目(即,“G线”、“R线”)与对应 的TLB的末端条目之间的段。
再次参照图3(并参照图1),当超管理器105在客户机104a-n 之间切换时,必须用进入客户机(例如,客户机104b)的客户机TLB 条目替换属于外出客户机(例如,客户机104a)的客户机TLB条目。 超管理器105可以管理MTLB 110引起这种改变。由于MTLB 110 可以是全关联结构,系统应该避免提交可以匹配多个条目的待匹配 值(密钥)。与多个条目匹配通常被认为是软件错误并且可能导致 引起故障,如机器检查异常。在向TLB写入的过程中,可以针对潜 在的冲突对所有条目进行检查。如果发现冲突,禁止写入,并且生 成机器检查异常。在改变客户机操作系统的具体情况下,可以期待 GTLB 120中的多个条目可以匹配,因为外出TLB条目被进入TLB 条目替换。即,进入客户机映射可以与外出客户机映射具有相同或 相似的客户机虚拟地址。因为一旦外出客户机条目已经完全被进入 客户机条目所替换就可以解决这种暂时状况,可以提供软件控制(受 例如超管理器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条目无效。可替代地,可以将 电路或其他硬件配置成用于使所有具有设置为1的Gt位的条目无 效。结果是,可以在不影响根TLB条目的情况下(如在客户机之间 切换的过程中)从MTLB 110快速地擦除客户机上下文。在一个实 施例中,由包含地址空间标识符(还称为虚拟机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和超管理器 (或代表客户机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(如上文参照图1至图4所描述的MTLB)中的示 例条目500的框图。该条目可以具有一个虚拟部分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):执行抑制,指示映射包含数据并且不包含指令。如 果XI=1,则这种页面转换不能用于指令并且仅可以用于数据转换。 如果XI=0,则这种转换可以用于或者数据或者指令。
RI(512):读禁止。读禁止位可以用于防止读取具体页面。
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。为了访问系统存储器650 (通过RPA空间对该系统存储器进行寻址),可以首先将GVA映 射至GPA,进而在为给定客户604a-n分配的系统存储器650的一个 分区处将该GPA映射至RPA。因此,为了使能通过客户机604a-n 进行存储器访问,可以将GVA转换成GPA,然后将该GPA转换成 指示系统存储器650的一个条目的RPA。
可以如上文参照图1至图5的MTLB 110所述对MTLB 610进行 配置。如此,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索引访问GTLB 620以将该转换存储在GTLB 620。同样地,最初可以由超管理器605 (或代表该超管理器的硬件)添加RTLB 620中的条目,该超管理器 访问存储于系统存储器650的页表640。该超管理器可以行走页表 640以确定GPA到RPA转换,并且然后通过RTLB索引访问RTLB 630以将该转换存储在RTLB 630。可以如上所述响应于存储器控制 器608在GTLB 620或RTLB 630处的转换查找中上报的“丢失”向 GTLB 620和RTLB 630中添加条目。
可以包括客户机操作平台的硬件和软件部分的存储器控制器 608与这些客户机604a-n接口连接以访问系统存储器650。为了访问 系统存储器650,该存储器控制器首先访问μTLB 615。μTLB 615可 以包括高速缓存、缓冲器、段寄存器、系统寄存器、或其他存储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进一步详细地描述了μTLB 615的配置,以 及在存储器访问和填充μTLB 615的过程中系统600的操作。
图7是μTLB(如上文参照图6所描述的μTLB 615)中的示例 条目700的框图。条目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,不使用此字段。 Entg[7:0]==0,处于根TLB中,指示客户机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复制,或者可以是(来自客户机TLB的)GPN和(来自根 TLB的)RP的拼接。
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,并且可以取决于客户机和根转换的相对页面大小形成根页号 (RP)字段713(下文参照图9A-C进一步详细地描述)。
读禁止(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将一个存储 器访问请求(例如,读或写至系统存储器)与GVA一起发送至存储 器控制器608(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-C是展示了输入至μTLB的折叠转换的框图。如上文参 照图7所述,在μTLB条目700中,可以从正在被转换的虚拟地址 形成虚拟页号(VP)字段710,并且可以取决于客户机和根转换的 相对页面大小形成根页号(RP)字段713。可以根据客户机和根TLB 的相对页面掩码生成VP和RP。存在三种要考虑的情况: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位是一,则该条目的VP代表客户机虚拟 地址。类似地,如果条目的Gt位是零,则该条目的VP代表GPA或 RVA。当在不干扰超管理器所拥有的映射(即,GPA到RPA转换) 的情况下改变客户机时,Gt位还可以使硬件能够快速使客户机转换 (即,GVA到GPA转换)无效。
在仍进一步的实施例中,μTLB可以高速缓存任何数量的地址 域之间的转换。例如,某些虚拟化系统可以在GVA、GPA和RPA 域之间实施附加的地址域,如可以在GPA和RPA域之间实施的“安 全RPA”(SPA)。为了容纳这种寻址系统,MTLB可以包括三个 或更多个逻辑部分以存储转换。在包括SPA域的特定示例中,MTLB 可以包括存储GVA到GPA转换的第一逻辑部分、存储GPA到SPA 的转换的第二逻辑部分、和存储SPA到RPA的转换的第三逻辑部分。 相应地,μTLB可以被配置成用于高速缓存GVA域与RPA域之间的 转换,由此折叠四个地址域之间的转换。
在仍进一步的实施例中,可以使转换保持在多层级转换存储体 系的任何层级。每个存储层级可以保持直接转换(即,两个连续的 地址域之间的转换)或折叠转换(即,被一个或多个中间地址域分 开的两个地址域之间的转换)。在特定示例中,系统可以被配置成 用于四个逻辑域和三个存储层级。第三存储层级三可以保持从一个 第一地址域到一个最终地址域的折叠转换。第二层级可以保持从第 一到第二逻辑域的直接转换和从第二到最终逻辑域的折叠转换。最 后,第一层次可以保留从第一到第二、第二到第三、和第三到第四 逻辑域的直接转换。
图10是展示了实施进一步实施例中的多个TLB和虚拟数据高 速缓存的计算机系统1000的一部分的框图。可以分别参照图1和图 6的计算机系统100和600如上所述对系统1000进行配置。具体地, 可以类似于上述的那些组件对存储器控制器1008、MTLB 1010和 μ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所述向GTLB 1020、RTLB 1030填 充和更新条目(1205、1210),并且可以如上文参照图8所述填充 和更新μTLB 1015(1215)。进一步地,存储器控制器1008或其他 硬件可以通过导出给定μTLB条目的字段的选定子集将标签写入数 据高速缓存1035(1220)。通过填充MTLB、μTLB和数据高速缓 存的条目,存储器控制器1008可以如上文参照图4和图8所述响应 于存储器访问请求执行转换查找(1225)。
存储器控制器1008或其他硬件可以进一步监视MTLB 1010其 中条目的变化,如一个条目与另一条目的替换、条目的删除、或条 目的无效(1230)。如果检测到这种改变,则存储器控制器1008可 以搜索μTLB 1015和数据高速缓存1035中的每一个以定位条目和对 应于已改变的条目的标签(1235)。在定位此类条目和标签时,可 以通过修改其对应的“有效”位使其无效(1240)。下文进一步详 细地描述了维护跨MTLB 1010、μTLB 1015和数据高速缓存1035的 条目的示例实施例。
当替换GTLB 1020时,可以要求任何包含源自此条目的信息 的μTLB 1015或数据高速缓存1035条目无效。标签值如ENTg字段 (上文所述)可以用于这种无效。另外,与GTLB条目相关联的唯 一标识符可以用于寻找包含来自此GTLB条目的所有μTLB和数据 高速缓存条目。在一个实施例中,唯一标识符可以是GTLB条目的 物理索引。首先,可以对具有等于一的Gt的μTLB和数据高速缓存 条目进行搜索。存储器控制器或其他硬件可以使其ENTg字段匹配 的所有条目无效,其中,客户机TLB条目的物理索引被替换。这种 搜索可以顺序地、相关联地、或其某种组合完成。使用ENTg字段 可以通过消除与虚拟地址标签对比的需要来简化无效任务,可能必 须调整这些虚拟地址标签以容纳不同的地址宽度(例如,高速缓存 列大小VS页面大小)并找到相比的虚拟地址值。使用ENTg字段还 可以通过最小化CAM所需的模具区使能使用虚拟高速缓存,以便无 效或将无效减少至只是维持地址和数据一致性所需的标签的子集。 在可替代的实施例中,可以执行批量无效,由此使Gt等于一的所有 数据高速缓存和μTLB标签无效。在进一步的实施例中,可以执行 批量无效,由此所有数据高速缓存和μTLB标签,不管其Gt位值。
当替换RTLB 1030时,可以要求任何包含源自此条目的信息 的μTLB 1015或数据高速缓存1035条目无效。ENTr字段可以用于 这种无效。进一步地,与RTLB条目相关联的唯一标识符可以用于 寻找包含来自此RTLB条目的所有μTLB和数据高速缓存条目。在 一个实施例中,唯一标识符是根TLB条目的物理索引。然后可以执 行对μTLB和数据高速缓存条目的搜索。硬件使其ENTr字段匹配的 所有条目无效,其中,根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架构中,可以将一个位定义为使得 KSEGO(未映射的虚拟地址段)中的所有GVA被变换成GPA(通 过在固定变换1365处的地址掩蔽),并且GPA被变换成RPA(通 过在固定变换1366处的地址掩蔽),由此旁路GTLB转换1330和 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),客户机操 作系统可以确定旁路转换以直接访问物理存储器。然而,超管理器 可以禁止这种直接访问,并因此继续使(GTLB旁路所产生的)GPA 被转换成RPA。
如上所述的μTLB可以缓存从GVA到RPA的转换。因此,在 旁路的情况下,可以或不可以将旁路的结果缓存在μTLB中。如果 该结果未缓存在μTLB中,则在后续访问中会发生μTLB丢失,并且 可以重复旁路确定和掩蔽。
虽然已经参考本发明的示例实施例具体地示出和描述了本发 明,但本领域普通技术人员将会理解在不脱离由所附权利要求书限 定的本发明范围的情况下可在形式和细节上做出不同的改变。

用于多个顺序地址转换的合并的TLB结构.pdf_第1页
第1页 / 共35页
用于多个顺序地址转换的合并的TLB结构.pdf_第2页
第2页 / 共35页
用于多个顺序地址转换的合并的TLB结构.pdf_第3页
第3页 / 共35页
点击查看更多>>
资源描述

《用于多个顺序地址转换的合并的TLB结构.pdf》由会员分享,可在线阅读,更多相关《用于多个顺序地址转换的合并的TLB结构.pdf(35页珍藏版)》请在专利查询网上搜索。

本发明的各实施方式总体上涉及用于多个顺序地址转换的合并的TLB结构。具体地,一种支持虚拟化的计算机系统可以维护多个地址空间。每个客户机操作系统使用多个客户机虚拟地址(GVA),这些客户机虚拟地址被转换成多个客户机物理地址(GPA)。一个管理一个或多个客户机操作系统的超管理器将多个GPA转换成多个根物理地址(RPA)。一个合并的转换旁视缓冲器(MTLB)高速缓存该多个地址域之间的多种转换,从而使能更。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1