交换机中的地址缓存转让专利

申请号 : CN201680028182.0

文献号 : CN107949833B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 本杰明·C·谢布里

申请人 : 谷歌有限责任公司

摘要 :

方法、系统和设备包括在计算机存储介质上编码的计算机程序,用于将地址存储在交换机的存储器中。系统中的一个包括:交换机,其在交换机与每个装置之间的总线上没有任何部件的情况下,从连接至总线的装置接收分组并且将分组递送至连接至总线的装置;集成到交换机中的存储器,用于存储虚拟地址到物理地址的映射;以及集成到交换机中的存储介质,其存储指令,指令可由交换机执行以使交换机执行操作,操作包括:接收对通过总线连接至交换机的装置的地址转换请求的响应,响应包括虚拟地址到物理地址的映射,以及响应于接收到响应,将虚拟地址到物理地址的映射存储在存储器中。

权利要求 :

1.一种系统,包括:

交换机,所述交换机在所述交换机与一个或者多个装置中的每一个之间的总线上没有任何部件的情况下,从连接至所述总线的所述一个或者多个装置接收分组并且将分组递送至连接至所述总线的所述一个或者多个装置;

存储器,所述存储器被集成到所述交换机中以存储虚拟地址到物理地址的映射;以及非瞬时计算机可读存储介质,所述非瞬时计算机可读存储介质被集成到所述交换机中,所述非瞬时计算机可读存储介质存储指令,所述指令可由所述交换机执行,并且在这样的执行时,使所述交换机执行操作,所述操作包括:由所述交换机接收对通过所述总线连接至所述交换机的装置的地址转换请求的响应,所述响应包括虚拟地址到物理地址的映射;

响应于接收到对所述装置的所述地址转换请求的所述响应,将所述虚拟地址到所述物理地址的所述映射存储在所述存储器中,从所述装置接收包括特定物理地址的存储器访问请求;

确定所述特定物理地址被存储在所述存储器中;以及

响应于确定所述特定物理地址被存储在所述存储器中,将所述存储器访问请求转发至另一装置以用于服务。

2.根据权利要求1所述的系统,包括:

输入/输出存储器管理单元IOMMU,所述输入/输出存储器管理单元IOMMU被集成到所述交换机中并且包括IOMMU存储器,其中:所述存储器包括所述IOMMU存储器;

由所述交换机接收对所述装置的所述地址转换请求的所述响应包括:由所述交换机接收所述装置的页表的一部分;并且将所述虚拟地址到所述物理地址的所述映射存储在所述存储器中包括:将所述页表的所述部分存储在所述IOMMU中。

3.根据权利要求1所述的系统,其中:

所述存储器包括转换旁视缓冲器TLB;并且

将所述虚拟地址到所述物理地址的所述映射存储在所述存储器中包括:将所述虚拟地址到所述物理地址的所述映射存储在所述TLB中。

4.根据权利要求3所述的系统,包括:

所述交换机的预定数目的端口,所述端口中的每一个与特定装置对应,并且针对所述端口中的每一个,所述交换机包括单个TLB。

5.根据权利要求3所述的系统,所述操作包括:

响应于接收到对所述装置的所述地址转换请求的所述响应,确定所述TLB不包括空位置;

从所述TLB中的位置移除条目;以及

将新条目存储在所述TLB的所述位置中,所述新条目将所述虚拟地址映射至所述物理地址。

6.根据权利要求3所述的系统,所述操作包括:

确定特定于所述装置的设置指示所述装置当前在所述装置上的TLB中存储虚拟地址到物理地址的映射;

响应于确定特定于所述装置的所述设置指示所述装置当前在所述装置上的所述TLB中存储虚拟地址到物理地址的映射,向所述装置发送指令所述装置从所述装置的TLB移除条目的消息;以及响应于确定特定于所述装置的所述设置指示所述装置当前在所述装置上的所述TLB中存储虚拟地址到物理地址的映射,将所述虚拟地址到所述物理地址的所述映射提供给所述装置。

7.根据权利要求6所述的系统,所述操作包括:

从所述装置接收所述装置已经从所述装置的TLB移除了所述条目的确认,其中,将所述虚拟地址到所述物理地址的所述映射提供给所述装置包括:响应于接收到所述装置已经从所述装置的TLB移除了所述条目的所述确认,将所述虚拟地址到所述物理地址的所述映射提供给所述装置。

8.根据权利要求1所述的系统,其中:

所述交换机从包括所述装置的两个或者更多个装置接收分组并且将分组递送至所述两个或者更多个装置,所述两个或者更多个装置中的每一个装置在所述交换机与该装置之间的总线上没有任何部件的情况下连接至所述总线;

所述存储器特定于所述装置,并且不包括针对通过所述总线连接至所述交换机且包括在所述两个或者更多个装置中的其它装置的任何虚拟地址到物理地址的映射;并且所述系统包括:一个或者多个附加存储器,所述一个或者多个附加存储器中的每个附加存储器:a)特定于所述两个或者更多个装置中不同于所述装置的特定装置,并且b)不包括针对通过所述总线连接至所述交换机且包括在所述两个或者更多个装置中的其它装置的任何虚拟地址到物理地址的映射。

9.根据权利要求1所述的系统,包括:

一个或者多个附加存储器,所述一个或者多个附加存储器被集成到所述交换机中,所述附加存储器和所述存储器中的每一个特定于通过所述总线连接至所述交换机的特定装置,其中,确定所述特定物理地址被存储在所述存储器中包括:确定所述交换机中的特定端口接收到所述存储器访问请求;

使用所述特定端口来从包括所述存储器和所述附加存储器的群组中选择用于所述装置的所述存储器;以及响应于使用所述特定端口选择用于所述装置的所述存储器,确定所述特定物理地址被存储在所述存储器中。

10.根据权利要求1所述的系统,包括:

中央处理单元;以及

高速缓存,其中:

接收对所述装置的所述地址转换请求的所述响应包括:从所述高速缓存接收所述虚拟地址到所述物理地址的所述映射;以及将所述存储器访问请求转发至另一装置以用于服务包括:将所述存储器访问请求转发至所述中央处理单元。

11.根据权利要求10所述的系统,包括:

在第二总线上的控制器,所述控制器经由所述第二总线将所述交换机连接到所述中央处理单元和所述高速缓存,并且使用所述第二总线将响应和请求路由至所述交换机以及所述中央处理单元和所述高速缓存并且从所述交换机以及所述中央处理单元和所述高速缓存路由响应和请求。

12.根据权利要求11所述的系统,其中,所述控制器包括根复合体。

13.根据权利要求10所述的系统,包括:

包括所述交换机的多个交换机;以及

在第二总线上的控制器,所述控制器经由所述第二总线将所述多个交换机中的每一个连接到所述中央处理单元和所述高速缓存,并且使用所述第二总线将响应和请求路由至所述多个交换机中的每一个以及所述中央处理单元和所述高速缓存并且从所述多个交换机中的每一个以及所述中央处理单元和所述高速缓存路由响应和请求。

14.根据权利要求1所述的系统,包括:

母板;以及

所述总线,所述总线被集成到所述母板中,针对所述总线,所述交换机被配置成将请求从源装置路由至目的地装置,以允许外围装置连接至所述母板。

15.根据权利要求1所述的系统,包括:

集成到所述交换机中的预定数目的端口,所述端口中的每一个与所述存储器被配置成针对其存储对应的虚拟地址到物理地址的映射的特定装置对应,其中,所述存储器的大小与端口的所述预定数目对应。

16.一种系统,包括:

交换机,所述交换机在所述交换机与一个或者多个装置中的每一个之间的总线上没有任何部件的情况下,从连接至所述总线的所述一个或者多个装置接收分组并且将分组递送至连接至所述总线的所述一个或者多个装置;

存储器,所述存储器被集成到所述交换机中以存储虚拟地址到物理地址的映射;以及非瞬时计算机可读存储介质,所述非瞬时计算机可读存储介质被集成到所述交换机中,所述非瞬时计算机可读存储介质存储指令,所述指令可由所述交换机执行,并且在这样的执行时,使所述交换机执行操作,所述操作包括:由所述交换机接收对通过所述总线连接至所述交换机的装置的地址转换请求的响应,所述响应包括虚拟地址到物理地址的映射;

响应于接收到对所述装置的所述地址转换请求的所述响应,将所述虚拟地址到所述物理地址的所述映射存储在所述存储器中,从所述装置接收包括特定物理地址的存储器访问请求;

使用来自所述存储器的包括所述虚拟地址到所述物理地址的所述映射的数据,确定不允许所述装置访问由所述特定物理地址识别的存储器位置;

响应于确定不允许所述装置访问由所述特定物理地址识别的存储器位置,丢弃所述存储器访问请求;以及响应于确定不允许所述装置访问由所述特定物理地址识别的存储器位置,重置所述装置。

17.根据权利要求16所述的系统,所述操作包括:

由所述交换机从所述装置接收包括所述虚拟地址的所述地址转换请求;

确定所述虚拟地址没有被存储在所述存储器中;以及

请求所述虚拟地址到所述物理地址的所述映射,其中,由所述交换机接收对所述装置的所述地址转换请求的所述响应包括:响应于请求所述虚拟地址到所述物理地址的所述映射,接收所述响应。

18.根据权利要求17所述的系统,所述操作包括:

使用所述虚拟地址到所述物理地址的所述映射来确定所述虚拟地址的对应物理地址;

以及

将对所述地址转换请求的第二响应提供给所述装置,所述第二响应包括所述对应物理地址。

19.根据权利要求17所述的系统,所述操作包括:

确定所述存储器是否包括所述虚拟地址到所述物理地址的所述映射,同时请求所述虚拟地址到所述物理地址的所述映射。

20.根据权利要求17所述的系统,其中,请求所述虚拟地址到所述物理地址的所述映射包括:从中央处理单元请求所述虚拟地址到所述物理地址的所述映射。

21.根据权利要求17所述的系统,其中,请求所述虚拟地址到所述物理地址的所述映射包括:从存储器请求所述虚拟地址到所述物理地址的所述映射。

22.根据权利要求17所述的系统,其中,请求所述虚拟地址到所述物理地址的所述映射包括:从输入/输出存储器管理单元IOMMU请求所述虚拟地址到所述物理地址的所述映射。

23.根据权利要求16所述的系统,其中,确定不允许所述装置访问由所述特定物理地址识别的存储器位置包括:确定所述特定物理地址没有被存储在所述存储器中。

24.一种计算机实现的方法,包括:

由交换机接收对通过总线连接至所述交换机的装置的地址转换请求的响应,所述交换机在所述交换机与一个或者多个装置中的每一个之间的总线上没有任何部件的情况下,从连接至所述总线的一个或者多个装置接收分组并且将分组递送至连接至所述总线的一个或者多个装置,所述响应包括虚拟地址到特定物理地址的映射;

响应于接收到对所述装置的所述地址转换请求的所述响应,将虚拟地址到物理地址的映射存储在集成到所述交换机中以存储所述虚拟地址到所述物理地址的所述映射的存储器中;

确定所述交换机上的特定于所述装置的设置指示所述装置当前在所述装置上的转换旁视缓冲器TLB中存储虚拟地址到物理地址的映射;

响应于确定所述交换机上的特定于所述装置的所述设置指示所述装置当前在所述装置上的所述转换旁视缓冲器TLB中存储虚拟地址到物理地址的映射,向所述装置发送指令所述装置从所述装置的TLB移除条目的消息;以及响应于确定所述交换机上的特定于所述装置的所述设置指示所述装置当前在所述装置上的所述转换旁视缓冲器TLB中存储虚拟地址到物理地址的映射,将所述虚拟地址到所述物理地址的所述映射提供给所述装置。

说明书 :

交换机中的地址缓存

技术领域

[0001] 本说明书涉及交换机,例如,交换芯片。

背景技术

[0002] 针对转换请求以及为了运行虚拟机器的系统中的保护,输入/输出存储器管理单元(IOMMU)巡行页表以转换装置地址。在一些示例中,IOMMU可以进行部分页面巡行缓存,例如,a)以在有限存储器可用时节省空间、b)在IOMMU与对大量装置的转换请求做出响应时、或者这两种情况时。
[0003] 外围部件互连Express(PCIe)地址转换服务(ATS)允许装置向IOMMU请求地址转换,并且将该转换本地缓存在装置上,例如,在转换旁视缓冲器(TLB)中。在一些实例中,装置的TLB可能不会大到足以存储该装置将使用的所有虚拟地址到物理地址的映射。

发明内容

[0004] 用于例如PCI或者外围部件互连Express(PCIe)总线的总线的交换芯片接收转换的地址,并且使用转换的地址来验证来自连接到至少部分地由交换芯片管理的总线的装置的存储器访问请求是有效的。例如,交换芯片可以将页表存储在高速缓存中或者将虚拟地址到物理地址的映射存储在转换旁视缓冲器(TLB)中,并且使用来自页表或者TLB的地址来对来自连接到至少部分地由交换芯片管理的总线的装置的转换请求做出响应、验证来自这些装置的访问请求、或者两者。出于简洁起见,本说明书可以涉及“连接至交换芯片的”装置,将此理解为意味着连接到至少部分地由交换芯片来控制或者管理存储器请求和地址转换请求的总线或者点到点连接。
[0005] 交换芯片可以包括输入/输出存储器管理单元,该输入/输出存储器管理单元存储每个装置的页表或者页表的一部分。当交换芯片从装置接收转换请求时,交换芯片可以将该转换请求提供给集成的IOMMU,从集成的IOMMU接收物理地址作为响应,并且将物理地址提供给装置。
[0006] 当交换芯片从装置接收包括物理地址的存储器访问请求时,交换芯片使用装置的存储在集成的IOMMU中的页表来验证页表包括物理地址,并且如果页表包括物理地址,则允许装置访问对应存储器位置。如果页表不包括物理地址,则交换芯片防止装置访问存储器位置。
[0007] 在一些示例中,交换芯片包括TLB例如高速缓存,在该TLB中交换芯片例如每装置地存储将虚拟地址映射至物理地址的表格。交换芯片可以使用装置与交换芯片通信的端口号将特定表格与装置相关联。
[0008] 当交换芯片从装置接收具有特定虚拟地址的地址转换请求时,交换芯片确定TLB是否包括针对特定虚拟地址的映射,并且如果包括,则将对应物理地址提供给装置。如果不包括,则交换芯片将地址转换请求转发至另一装置例如根复合体,并且从该另一装置接收响应。交换芯片将响应转发至请求装置并且将响应缓存在TLB中。当交换芯片包括每装置的TLB时,交换机可以仅在该特定装置的TLB中查找该映射,并且如果映射未存储在该TLB中,则将从其它装置接收到的映射存储在装置的TLB中。
[0009] 当交换芯片从装置接收访问请求时,交换芯片使用装置的TLB来验证装置是否具有访问由在访问请求中包括的物理地址识别的存储器位置的权限,例如是否该物理地址包括在装置的TLB中。如果物理地址处于装置的TLB中,则交换芯片允许装置访问存储器位置。如果物理地址不在装置的TLB中,则交换芯片防止装置访问存储器位置,并且例如不将请求转发至另一装置。
[0010] 通常,本说明书中描述的主题的一个创新方面可以体现在系统中,该系统包括:交换机,该交换机从连接至总线的一个或者多个装置接收分组和将分组递送至连接至总线的一个或者多个装置,在交换机与每个装置之间的总线上没有任何部件;集成到交换机中的存储器,该存储器用于存储虚拟地址到物理地址的映射;以及集成到交换机中的非瞬时计算机可读存储介质,该非瞬时计算机可读存储介质存储有指令,该指令可由交换机执行并且在这样执行时使交换机执行操作,该操作包括:由交换机接收对由总线连接至交换机的装置的地址转换请求的响应,该响应包括虚拟地址到物理地址的映射;以及响应于接收到对装置的地址转换请求的响应,将虚拟地址到物理地址的映射存储在存储器中。该方面的其它实施例包括对应的计算机系统、设备、方法、和记录在一个或者多个计算机存储装置上的计算机程序,其中每一个配置成执行所述操作的动作。一个或者多个计算机的系统可以配置成借助于具有安装在该系统上的在操作中使系统执行动作的软件、固件、硬件、或者它们的组合来执行特定操作或者动作。一个或者多个计算机程序可以配置成借助于包括在由数据处理设备执行时使设备执行动作的指令来执行特定操作或者动作。
[0011] 通常,本说明书中描述的主题的一个创新方面可以体现在系统中,该系统包括交换机,该交换机跨总线路由分组;集成到交换机中的存储器,该存储器用于存储虚拟地址到物理地址的映射;以及集成到交换机中的非瞬时计算机可读存储介质,该非瞬时计算机可读存储介质存储有指令,该指令可由交换机执行并且在这样执行时使交换机执行操作,该操作包括:由交换机接收对装置的地址转换请求的响应,该响应包括虚拟地址到物理地址的映射;响应于接收到对装置的地址转换请求的响应,将虚拟地址到物理地址的映射存储在存储器中;从装置接收包括特定物理地址的存储器访问请求;确定特定物理地址存储在存储器中;并且响应于确定特定物理地址存储在存储器中,将存储器访问请求转发至另一装置用于服务。该方面的其它实施例包括对应的计算机系统、设备、方法、和记录在一个或者多个计算机存储装置上的计算机程序,其中每一个配置成执行所述操作的动作。一个或者多个计算机的系统可以配置成借助于具有安装在该系统上的在操作中使系统执行动作的软件、固件、硬件、或者它们的组合。一个或者多个计算机程序可以配置成借助于包括在由数据处理设备执行时使设备执行动作的指令来执行特定操作或者动作。
[0012] 通常,本说明书中描述的主题的一个创新方面可以体现在系统中,该系统包括交换机,该交换机跨总线路由分组;集成到交换机中的存储器,该存储器用于存储虚拟地址到物理地址的映射;以及集成到交换机中的非瞬时计算机可读存储介质,该非瞬时计算机可读存储介质存储有指令,该指令可由交换机执行并且在这样执行时使交换机执行操作,该操作包括:由交换机接收对装置的地址转换请求的响应,该响应包括虚拟地址到物理地址的映射;响应于接收到对装置的地址转换请求的响应,将虚拟地址到物理地址的映射存储在存储器中;从装置接收包括特定物理地址的存储器访问请求;确定特定物理地址未存储在存储器中;并且响应于确定特定物理地址未存储在存储器中,丢弃存储器访问请求。该方面的其它实施例包括对应的计算机系统、设备、方法、和记录在一个或者多个计算机存储装置上的计算机程序,其中每一个配置成执行所述操作的动作。一个或者多个计算机的系统可以配置成借助于具有安装在该系统上的在操作中使系统执行动作的软件、固件、硬件、或者它们的组合。一个或者多个计算机程序可以配置成借助于包括在由数据处理设备执行时使设备执行动作的指令来执行特定操作或者动作。
[0013] 可选地,前述和其它实施例可以分别单独地或者组合地包括以下特征中的一个或者多个特征。该系统可以包括集成到交换机中的输入/输出存储器管理单元(IOMMU),并且IOMMU包括IOMMU存储器。存储器可以包括IOMMU存储器。由交换机接收对装置的地址转换请求的响应可以包括:由交换机接收装置的页表的一部分。将虚拟地址到物理地址的映射存储在存储器中可以包括:将页表的部分存储在IOMMU中。
[0014] 在一些实施方式中,存储器可以包括转换旁视缓冲器(TLB)。将虚拟地址到物理地址的映射存储在存储器中可以包括:将虚拟地址到物理地址的映射存储在TLB中。该系统可以包括交换机的预定数目的端口,每个端口与特定装置对应,并且针对每个端口,交换机包括单个TLB。该操作可以包括:响应于接收到对装置的地址转换请求的响应,确定TLB不包括空位置;从TLB中的位置移除条目;以及将新条目存储在TLB的所述位置中,所述新条目将所述虚拟地址映射至所述物理地址。该操作可以包括:确定装置包括TLB并且装置的设置指示装置当前在装置的TLB中存储虚拟地址到物理地址的映射;响应于确定装置包括TLB并且装置的设置指示装置当前在装置的TLB中存储虚拟地址到物理地址的映射,向装置发送消息,指令装置从装置的TLB移除条目;以及响应于确定装置包括TLB并且装置的设置指示装置当前在装置的TLB中存储虚拟地址到物理地址的映射,将虚拟地址到物理地址的映射提供给装置。该操作可以包括:从装置接收装置已经从装置的TLB移除了条目的确认,其中,将虚拟地址到物理地址的映射提供给装置包括:响应于接收到装置已经从装置的TLB移除了条目的确认,将虚拟地址到物理地址的映射提供给装置。
[0015] 在一些实施方式中,该操作可以包括:从装置接收包括特定物理地址的存储器访问请求;确定将特定物理地址存储在存储器中;以及响应于确定特定物理地址存储在存储器中,将存储器访问请求转发至另一装置用于服务。存储器可以特定于装置并且可能不包括针对由总线连接至交换机的其它装置的任何虚拟地址到物理地址的映射。该系统可以包括集成到交换机中的一个或者多个附加存储器,附加存储器和存储器中的每一个都特定于由总线连接至交换机的特定装置。确定特定物理地址存储在存储器中可以包括:确定交换机中的特定端口接收到了存储器访问请求;使用特定端口来选择装置的存储器;以及响应于使用特定端口选择了装置的存储器,确定特定物理地址存储在存储器中。该系统可以包括中央处理单元和高速缓存。接收对装置的地址转换请求的响应可以包括:从高速缓存接收虚拟地址到物理地址的映射。将存储器访问请求转发至另一装置用于服务可以包括:将存储器访问请求转发至中央处理单元。该系统可以包括:位于第二总线上的控制器,该控制器经由第二总线将交换机连接到中央处理单元和高速缓存,并且使用第二总线将响应和请求路由至交换机以及中央处理单元和高速缓存和从交换机以及中央处理单元和高速缓存路由响应和请求。该控制器可以包括根复合体。该系统可以包括:多个交换机,该多个交换机包括交换机;以及位于第二总线上的控制器,该控制器经由第二总线将多个交换机中的每一个连接到中央处理单元和缓存,并且使用第二总线将响应和请求路由至多个交换机中的每一个以及中央处理单元和高速缓存和从多个交换机中的每一个以及中央处理单元和高速缓存路由响应和请求。
[0016] 在一些实施方式中,该系统包括母板和集成到该母板中的总线,针对总线,交换机配置成将请求从源装置路由至目的地装置以允许外围装置连接至母板。该操作可以包括:从装置接收包括特定物理地址的存储器访问请求;确定不允许装置访问由特定物理地址识别的存储器位置;以及响应于确定不允许装置访问由特定物理地址识别的存储器位置,丢弃存储器访问请求。该操作可以包括:响应于确定特定物理地址未存储在存储器中,重置装置。
[0017] 在一些实施方式中,该操作可以包括:由交换机从装置接收包括虚拟地址的地址转换请求;确定虚拟地址未存储在存储器中;以及请求虚拟地址到物理地址的映射,其中,由交换机接收对装置的地址转换请求的响应包括:响应于请求虚拟地址到物理地址的映射,接收响应。该操作可以包括:使用虚拟地址到物理地址的映射来确定虚拟地址的对应物理地址;并且将对转换请求的响应提供给装置,该响应包括对应物理地址。该操作可以包括:确定存储器是否包括虚拟地址到物理地址的映射,同时请求虚拟地址到物理地址的映射。请求虚拟地址到物理地址的映射可以包括:从中央处理单元请求虚拟地址到物理地址的映射。请求虚拟地址到物理地址的映射可以包括:从存储器请求虚拟地址到物理地址的映射。请求虚拟地址到物理地址的映射可以包括:从输入/输出存储器管理单元(IOMMU)请求虚拟地址到物理地址的映射。
[0018] 在一些实施方式中,该系统可以包括:集成到交换机中的预定数目的端口,每个端口与存储器配置成为其存储对应的虚拟地址到物理地址的映射的特定装置对应,其中,存储器的大小与端口的预定数目对应。交换机可以是交换芯片。
[0019] 在本说明书中描述的主题可以实施在特定实施例中并且可以产生以下优点中的一个或者多个优点。在一些实施方式中,一种包括具有存储虚拟地址到物理地址的映射的存储器的交换芯片的系统,该系统允许系统随着附加交换芯片的添加而扩展。例如,交换芯片允许系统包括:连接到至少部分地由交换芯片管理的总线的更多装置、连接到至少部分地由其它交换芯片管理的其它总线的更多装置、或者两者。在一些实施方式中,下文描述的系统和方法允许系统比不包括具有用于虚拟地址到物理地址的映射的存储器的交换芯片的系统更快地对地址转换请求做出响应。在一些实施方式中,下文描述的系统和方法允许系统验证装置是否具有访问包括在来自装置的存储器访问请求中的特定物理地址的权限。
[0020] 在附图和下面的说明中阐述了在本说明书的主题的一个或者多个实施例的细节。本主题的其它特征、方面、和优点将由描述、附图、以及权利要求书变得显而易见。

附图说明

[0021] 图1是交换芯片存储虚拟地址到物理地址的映射的环境的示例。
[0022] 图2是用于对转换请求做出响应的过程的流程图。
[0023] 图3是用于确定物理地址是否存储在存储器中的过程的流程图。
[0024] 在各种附图中的类似的附图标记和指示表示类似的元件。

具体实施方式

[0025] 概述
[0026] 在一些实施方式中,交换芯片例如外围部件互连Express(PCIe)交换芯片代表连接至由交换芯片管理的总线的装置缓存地址转换服务(ATS)转换。例如,当装置在总线上发出外围部件互连(PCI)读取或者写入请求时,交换芯片检查在交换芯片中包括的针对包括在请求中的虚拟地址的转换旁视缓冲器(TLB),并且在命中时,转换虚拟地址以确定物理地址。交换芯片可以将物理地址提供给装置或者将物理地址包括在请求中并且将请求转发至另一装置,例如,用于服务。
[0027] 在TLB未命中时,例如,交换芯片向根复合体中通过另一总线连接至交换芯片的输入/输出存储器管理单元(IOMMU)发出ATS请求以用于转换虚拟地址,接收该转换,并且将该转换缓存在交换芯片的TLB中。在一些实施方式中,为了实现并行性,交换芯片可以将未转换的原始请求发送至根复合体,同时针对虚拟地址检查TLB。
[0028] 交换芯片可以截获对连接到至少部分地由交换芯片管理的总线的装置的PCIe配置空间访问,以迫使ATS能力位为1,例如,使能ATS能力位。这可以使在包括交换芯片和装置的硬件上运行的操作系统或者在操作系统中的装置驱动器使能装置的ATS。当装置的ATS被使能时,响应于地址转换请求、读取或者写入访问请求、或者两者,IOMMU为交换芯片和装置(如果装置支持ATS)提供虚拟地址到物理地址的映射。
[0029] 在一些示例中,当在操作系统中的装置驱动器使能装置的ATS时,装置驱动器允许操作系统将已知的可信交换芯片列入白名单。例如,装置驱动器可以允许操作系统在硬件上执行,该硬件包括:包括存储虚拟地址到物理地址的映射的存储器(例如,TLB)的交换芯片和不包括存储虚拟地址到物理地址的映射的存储器的交换芯片。装置驱动器将包括存储器的交换芯片列入白名单,以指示这些交换芯片可以接收映射、指示来自这些交换芯片的请求不需要进行验证、或者两者。
[0030] 例如,交换芯片可以使用存储在其存储器中的映射来验证从连接到至少部分地由交换芯片管理的总线的装置接收到的读取请求、写入请求、或者两者。当另一硬件装置例如IOMMU或者处理器从该交换芯片接收请求时,其它硬件装置可以使用白名单来确定是否应该验证该请求以及是否应该允许创建该请求的装置访问对应存储器位置。当其它硬件装置从不在白名单上的交换芯片接收请求时,其它硬件装置可以验证该请求,以例如在创建该请求的装置是恶意装置、包括错误的软件、或者两者时,确保不允许创建该请求的装置访问该装置不具备访问权限的存储器位置。
[0031] 在一些实施方式中,交换芯片(例如,PCIe交换芯片)包括IOMMU,并且可选地,包括页表存储装置。例如,交换芯片包括页表巡行器和用于存储页表的板载存储器。交换芯片可以从连接到至少部分地由交换芯片管理的总线的装置接收地址转换请求并且确定对应物理地址是否存储在页表中。如果对应物理地址存储在页表中,则交换芯片为请求装置提供对应物理地址。如果对应物理地址未存储在页表中,则交换芯片可以将请求转发至另一装置例如高速缓存或者根复合体IOMMU,并且将从其它装置接收到的响应存储在交换机的存储器例如页表存储装置中。交换机然后可以对原始请求做出响应。
[0032] 示例系统
[0033] 图1是交换芯片A 102a存储虚拟地址到物理地址的映射的环境100的示例。在一些实施方式中,交换芯片A 102a包括TLB 104,交换芯片A 102a将映射存储在TLB 104中。
[0034] 例如,当装置A至C 108a-c中的一个添加至环境100并且通过总线101连接至交换芯片A 102a时,交换芯片A 102a将端口地址分配给装置例如装置A 108a。当装置A 108a请求虚拟地址到物理地址的转换时,交换芯片A 102a确定TLB 104是否包括针对请求的虚拟地址的转换。交换芯片A 102a可以初始地确定TLB 104不包括任何地址转换,并且向控制器110例如包括在控制器110中的IOMMU 112或者另一装置诸如处理器114或者高速缓存116请求转换。
[0035] 在一些实施方式中,当环境100包括PCIe总线,例如总线101是PCIe总线时,控制器110可以是根复合体。例如,根复合体可以是在不同的交换芯片A至C 102a-c之间路由数据并且管理对不同的交换芯片A至C 102a-c的请求的交换机。
[0036] 交换芯片A 102a接收对转换请求的响应,确定所请求的虚拟地址的物理地址,并且将物理地址提供给装置A 108a。在一些示例中,响应可以包括单个虚拟地址到物理地址的映射。在一些示例中,响应可以包括向装置A 108a分配的多个不同的虚拟地址中的每一个到装置A108a具有访问权限的对应物理地址的映射。
[0037] 当装置A 108a连接至由交换芯片A 102a管理的总线101时,交换芯片A 102a可以向装置A 108a请求映射。例如,当装置A 108a连接至由交换芯片A 102a管理的总线101时,交换芯片A 102a可以向另一装置例如控制器110请求预定量的地址转换。地址转换可以用于低编号虚拟地址、高编号虚拟地址、最有可能会被装置A 108a访问的虚拟地址、或者它们中的两个或者更多个的组合。
[0038] 一旦交换芯片A 102a在TLB 104中存储有虚拟地址到物理地址的映射,交换芯片A 102a可以对来自装置A 108a的地址转换请求做出响应,而不向另一装置请求转换。例如,交换芯片A 102a可以确定针对特定虚拟地址TLB 104包括特定虚拟地址到特定物理地址的映射,并且将该特定物理地址提供给装置A 108a。
[0039] 交换芯片A 102a可以使用装置A 108a的端口号、总线装置功能号、或者两者,以确定装置A 108a的映射。例如,TLB 104可以包括装置A 108a和装置B108b的映射,并且交换芯片A 102a可以使用装置A 108a的端口号和总线装置功能号来仅查看装置A 108a而不是装置B 108b的特定功能的映射。
[0040] 在一些示例中,当交换芯片A 102a从装置A 108a接收对地址转换的请求时,交换芯片A 102a可以将请求转发至另一装置例如控制器110用于服务,并且同时确定TLB 104是否包括对请求的响应。此处,在将请求转发至另一装置用于服务之前,交换芯片A 102a不会等待确定TLB 104不包括对应物理地址。
[0041] 例如,当交换芯片A 102a无法将附加映射存储在TLB 104中时,交换芯片A 102a可以使用任何适合的驱逐策略来从TLB 104驱逐条目。例如,交换芯片A 102a可以驱逐最不近期使用的条目或者最近使用的条目。
[0042] 在当装置将映射存储在其自身的存储器中并且交换芯片A 102a从TLB 104驱逐条目的实施方式中,交换芯片A 102a可以将消息发送至对应装置例如装置A 108a,指令装置从装置的存储器驱逐相同条目。例如,当交换芯片A 102a从TLB 104不包括其映射的装置A 108a接收地址转换请求时,交换芯片A 102a可以向控制器110请求转换。交换芯片A 102a确定TLB 104不包括任何未使用的存储器位置并且确定应该从TLB 104驱逐最不近期使用的条目。交换芯片A 102a将从控制器110接收到的转换存储在新清空的存储器位置中,并且将消息发送至装置A 108a,指令装置A 108a从装置A的存储器驱逐相同的最不近期使用的条目。交换芯片A 102a可以接收装置A 108a驱逐了条目的确认。例如,响应于接收到装置A 
108a驱逐了最不近期使用的条目的确认,交换芯片A 102a向装置A 108a发送从控制器110接收到的转换。
[0043] 环境100可以使用地址转换服务(ATS)来指示交换芯片A至C 102a-c和装置A至C 108a-c是否可以将地址转换映射存储在存储器中。例如,环境100可以使用ATS位来指示装置A 108a是否可以使用ATS并且是否允许装置A 108a使用ATS。当装置A 108a连接至由交换芯片A 102a管理的总线101时,交换芯片A 102a可以截获装置A 108a的配置设置,例如PCIe配置空间设置,以“使能”装置A 108a的ATS,例如,将位设置为值“1”。
[0044] 在装置A 108a不支持ATS的示例中,交换芯片A 102a从装置A 108a接收访问请求并且将请求转发至控制器110进行转换,或者可以自己转换访问请求中的一个或者多个虚拟地址。例如,交换芯片A 102a可以使能装置A 108a的ATS,从装置A 108a接收访问请求,确定请求中的虚拟地址,向控制器110发送对请求中的虚拟地址到对应物理地址的映射的消息,接收映射,并且使用接收到的映射来将从装置A 108a接收到的虚拟地址转换为对应物理地址。
[0045] 在一些实施方式中,当装置A 108a不支持ATS时,交换芯片A 102a不使能ATS位以指示装置A 108a支持ATS。例如,当交换芯片A 102a不将从装置A 108a接收到的请求中的任何虚拟地址转换为对应物理地址时,交换芯片A 102a不使能ATS位。
[0046] 在装置A 108a支持ATS的示例中,环境100可以或者可以不允许装置A 108a使用ATS功能。例如,当环境100允许装置A 108a使用ATS功能时,交换芯片A 102a可以检查装置A 108a的设置以确保ATS位被使能,例如设置为1,并且响应于确定ATS位被使能,不修改ATS位。交换芯片A 102a可以从装置A 108a接收地址转换请求,并且对如上所述的地址转换请求做出响应。
[0047] 交换芯片A 102a可以验证来自装置A 108a的请求,该请求包括物理地址,例如,转换后的地址。例如,当交换芯片A 102a从装置A 108a接收存储器访问请求时,交换芯片A 102a确定该请求是存储器访问请求且例如不是转换请求。交换芯片A 102a确定包括在请求中的一个或者多个物理地址并且确定这些地址是否包括在TLB 104中。如果这些地址包括在TLB 104中,则交换芯片A 102a将请求转发至另一装置例如处理器114、高速缓存116、或者随机存取存储器118以用于服务。
[0048] 如果交换芯片A 102a确定包括在来自装置A 108a的访问请求中的物理地址中的一个或者多个物理地址不包括在TLB 104中,则交换芯片A 102a不将访问请求转发至另一装置。例如,交换芯片A 102a确定装置A 108a不具备访问不包括在TLB 104中的物理地址的权限,并且确定不应该服务该访问请求。
[0049] 当交换芯片A 102a确定应该为存储器访问请求服务时,交换芯片A 102a可以经由根复合体转发请求。在这些示例中,控制器110可以确定交换芯片A 102a验证了请求,例如,使用交换芯片A 102a的标识符来确定交换芯片A 102a验证由交换芯片A 102a接收到的所有存储器访问请求。控制器110可以将请求转发至另一装置,诸如将为请求服务的目的地装置,例如包括由请求中的物理地址识别的存储器位置的装置。
[0050] 在装置A 108a支持ATS但是环境100不允许装置A 108a使用ATS功能的示例中,交换芯片A 102a按照与当装置A 108a不支持ATS功能时相似的方式对来自装置A 108a的请求进行处理。例如,交换芯片102a可以转换包括在来自装置A 108a的存储器访问请求中的虚拟地址。在一些示例中,交换芯片102a可以检查来自装置A 108a的请求以确定该请求不包括物理地址,例如,通过使用任何适合的方法。
[0051] 在一些实施方式中,交换芯片A 102a包括IOMMU 106,其中交换芯片A 102a将存储器地址存储在IOMMU 106中。例如,交换芯片A 102a包括IOMMU 106并且不包括TLB 104。IOMMU 106包括其中IOMMU可以存储页表的存储器,例如页表存储装置。
[0052] 当装置B 108b连接至由交换芯片A 102a管理的总线101时,例如,当使用在装置B 108b与处理器114之间的路径上包括总线101和交换芯片A 102a的物理连接将装置B 108b连接至母板时,交换芯片A 102a可以请求装置B 108b的一个或者多个页表。在一些示例中,响应于接收到来自装置B 108b的地址转换请求、来自装置B 108b的存储器访问请求、或者两者,交换芯片A 102a向装置B 108b请求页表。
[0053] 交换芯片A 102a通过使用存储在IOMMU 106中的并且由装置B 108b、且例如不是交换芯片A 102a经由总线101连接的另一装置特定的页表对装置B 108b的地址转换请求做出响应。例如,交换芯片A 102a从装置B 108b接收包括虚拟地址的地址转换请求。交换芯片A 102a例如使用访问IOMMU 106中的页表存储装置的页表巡行器,确定IOMMU 106是否包括虚拟地址到对应物理地址的映射。当IOMMU 106包括映射时,交换芯片A 102a确定对应物理地址并且将物理地址提供给装置B 108b。当IOMMU 106不包括映射时,交换芯片A 102a向另一装置例如高速缓存116、随机存取存储器118、或者控制器110中的IOMMU 112请求附加页表。
[0054] IOMMU 106可以针对存储在IOMMU的存储器中的页表使用驱逐策略。例如,当IOMMU 106不包括用于另一页表的空间时,IOMMU可以驱逐最不近期使用的页表或者最近使用的页表,例如,针对连接至由交换芯片A 102a管理的总线101的任何装置或者针对交换芯片A102a为其将新页表存储在IOMMU 106中的特定装置。
[0055] 当交换芯片A 102a从装置B 108b接收存储器访问请求时,交换芯片A 102a可以确定存储器访问请求是否包括虚拟地址或者物理地址。当存储器访问请求包括虚拟地址时,交换芯片A 102a通过使用IOMMU 106中的页表来确定对应物理地址,并且用对应物理地址替换在存储器访问请求中的虚拟地址的实例。交换芯片A 102a然后可以将存储器访问请求转发至另一装置例如处理器114、高速缓存116、或者随机存取存储器118用于服务。
[0056] 当交换芯片A 102a从装置B 108b接收包括物理地址的存储器访问请求时,交换芯片A 102a验证该物理地址。例如,交换芯片A 102a确定IOMMU 106中装置B 108b的页表,并且确定物理地址是否包括在所确定的页表中。交换芯片A 102a可以使用装置B 108b的端口号或者总线装置功能号来确定IOMMU 106中装置B 108b的页表。交换芯片A 102a使用装置B 108b的页表来确保装置B 108b不能访问装置A 108a或者另一装置具有访问权限但是装置B 
108b不具备访问权限的物理存储器位置。
[0057] 在一些实施方式中,对于每个预定页面范围例如4k页面范围,环境100例如交换芯片A 102a具有指示是否将页面范围映射至装置的位,例如,“这是否被映射”位或者指示读取和写入权限的两个位。环境100可以包括每个装置总线装置功能号的位标识符,例如,单个位或者两个位,例如,对于每个总线装置功能组合。
[0058] 当物理地址包括在装置B 108b的页表中时,交换芯片A 102a将存储器访问请求转发至另一装置例如处理器114、高速缓存116、或者随机存取存储器118用于服务。当物理地址未包括在装置B 108b的页表中时,交换芯片A 102a不服务该请求。在一些示例中,当物理地址未包括在装置B 108b的页表中时,交换芯片A 102a可以重置装置B 108b、暂停装置B 108b、或者两者。
[0059] 在一些实施方式中,环境100可以包括母板、计算机、或者多个计算机,例如,该多个计算机包括a)交换芯片A至C 102a-c中的一个或者多个、b)控制器110、c)处理器114、d)高速缓存116、随机存储器存储器118、或者这些装置中的两个或者更多个。环境100可以包括在硬件上运行的操作系统,例如在母板、计算机、或者这两者上运行的。
[0060] 使能装置A 108a的ATS位、例如将ATS位的值设置为1可以指令在包括交换芯片A 102a的硬件上运行的操作系统使能装置A 108a的ATS,例如,以允许装置A 108a和交换芯片A 102a将虚拟地址到物理地址的映射缓存在TLB 104中。响应于装置A 108a连接至由交换芯片A 102a管理的总线101,交换芯片A 102a可以使能装置A 108a的ATS位。
[0061] 在一些示例中,当装置A 108a连接至由交换芯片A 108a管理的总线101时,例如响应于来自交换芯片A 102a的消息,包括在软件中的装置驱动器可以使能ATS位。在这些示例中,装置驱动器可以允许操作系统将可以缓存地址映射的已知交换芯片列入白名单,以允许这些交换芯片将地址映射缓存在交换芯片的存储器中,例如,在TLB 104中。
[0062] 环境100或者操作系统可以使用白名单来确定对应交换芯片的功能以及是否应该允许交换芯片执行特定动作,例如,将地址映射缓存在集成存储器中、验证地址、或者两者。例如,环境100可以包括不同类型的交换芯片并且可以通过使用白名单来确定允许这些交换芯片中的每一个执行哪些动作。
[0063] 在一些示例中,交换芯片A 102a可以包括TLB,交换芯片B 102b可以包括IOMMU,并且交换芯片C 102c可以不包括TLB或者IOMMU中的任一个。环境100可以将使用ATS的装置连接至由交换芯片A 102a管理的总线101,将使用另一种方法来将在装置上本地缓存物理存储器地址的装置连接至由交换芯片B 102b管理的第二总线,以及将不在装置上本地缓存物理存储器地址的装置连接至由交换芯片C 102c管理的第三总线。环境100可以允许任何适合的类型的装置经由对应总线连接至任何适合的类型的交换芯片。
[0064] 示例地址转换过程流
[0065] 图2是用于对转换请求做出响应的过程200的流程图。例如,过程200可以由来自环境100的交换芯片A 102a使用。
[0066] 交换机从装置接收包括虚拟地址的地址转换请求(202)。例如,交换机从ATS使能的装置接收地址转换请求。
[0067] 交换机确定虚拟地址未存储在交换机的存储器中(204)。例如,交换机检查包括在交换机中的TLB或者IOMMU,以确定TLB或者IOMMU是否包括虚拟地址以及虚拟地址到对应物理地址的映射。交换机确定TLB或者IOMMU不包括虚拟地址以及对应物理地址。
[0068] 交换机发送请求虚拟地址到物理地址的映射的地址转换请求(206)。在一些示例中,响应于确定虚拟地址未存储在存储器中,交换机将地址转换请求发送至另一装置。例如,交换机将地址转换请求发送至根复合体,例如,当存储器是TLB时,或者将地址转换请求发送至高速缓存或者随机存取存储器,例如,当存储器是IOMMU时。
[0069] 交换机接收对地址转换请求的响应,该响应包括虚拟地址到物理地址的映射(208)。交换机将虚拟地址到物理地址的映射存储在存储器中(210)。例如,响应于发送地址转换请求,交换机例如从根复合体接收对地址转换请求的响应,并且将响应或者来自响应的数据存储在存储器中。交换机可以使用来自响应的数据来创建TLB中的条目。在一些示例中,交换机可以接收页表的一部分或者所有,并且将页表的这部分存储在IOMMU中。
[0070] 交换机使用虚拟地址到物理地址的映射来确定虚拟地址的物理地址(212)。例如,交换机使用存储在存储器中的响应或者数据来确定虚拟地址所映射到的物理地址。
[0071] 交换机将包括该物理地址的对转换请求的响应提供给装置(214)。例如,交换机可以将从根复合体接收到的响应转发至装置。在一些示例中,交换机创建包括物理地址的新响应并且将该新响应提供给装置。
[0072] 上述过程200中的步骤顺序仅是说明性的,并且可以按照不同顺序执行对转换请求的响应。例如,在确定虚拟地址未存储在存储器中、例如执行步骤204之前,交换机可以发送地址转换请求,例如执行步骤206。在一些示例中,交换机可以同时执行步骤204和206。
[0073] 在一些实施方式中,过程200可以包括附加步骤、更少的步骤,或者可以将一些步骤划分成多个步骤。例如,交换机可以接收地址转换请求,确定虚拟地址存储在存储器中,并且使用虚拟地址到物理地址的映射来确定物理地址,例如不执行步骤204至210。
[0074] 在一些实施方式中,交换机可以针对多个不同的地址转换请求来执行过程200或者过程200的一部分。例如,交换机可以从第一装置接收第一地址转换请求,确定响应于第一请求的第一物理地址存储在存储器中,并且将第一物理地址提供给第一装置。交换机可以从第一装置或者第二不同的装置接收第二地址转换请求,确定响应于第二请求的第二物理地址未存储在存储器中,例如,确定来自第二请求的虚拟地址未存储在存储器中,并且从例如根复合体或者高速缓存的另一装置请求虚拟地址的映射。交换机从包括映射的其它装置接收对请求的响应,并且将第二物理地址提供给请求装置。
[0075] 交换机可以包括针对交换机为其存储虚拟地址到物理地址的映射的装置中的每个装置的单独的存储器。在一些示例中,交换机可以包括TLB和IOMMU两者。
[0076] 示例验证过程流
[0077] 图3是用于确定物理地址是否存储在存储器中的过程300的流程图。例如,过程300可以由来自环境100的交换芯片A 102a或者控制器110使用。
[0078] 交换机从装置接收包括特定物理地址的存储器访问请求(302)。例如,交换机接收读取或者写入请求。
[0079] 交换机确定特定物理地址是否存储在交换机的存储器中(304)。存储器可以是TLB或者IOMMU。交换机通过确定特定物理地址是否存储在存储器中并且是否允许装置访问特定物理地址来验证请求。例如,当交换机具有针对交换机为其存储虚拟地址到物理地址的映射的装置中的每个装置的一个存储器时,存储器可以特定于装置。存储器可以用于交换机经由对应总线连接的所有装置。
[0080] 交换机确定特定物理地址存储在存储器中(306)。如果交换机确定特定物理地址存储在装置的存储器中,则当存在针对每个装置的单个存储器时,交换机验证该请求。如果交换机确定特定物理地址存储在针对所有装置的单个存储器中并且确定允许装置访问特定物理地址,则交换机验证请求。
[0081] 响应于确定特定物理地址存储在交换机的存储器中,交换机将存储器访问请求转发至另一装置用于服务(308)。例如,交换机将请求转发至具有响应于请求的数据的目的地装置。转发请求可以通过一个或者多个中间装置来路由请求。在一些示例中,当高速缓存包含响应于请求的数据时,交换机可以经由根复合体将请求发送至高速缓存。
[0082] 交换机确定特定物理地址未存储在存储器中(310)。例如,交换机确定不允许所述装置访问由特定物理地址识别的存储器位置。当特定的物理地址存储在交换机的另一个不针对该装置的存储器中时,当每个装置具有其自身的存储器时,或当特定物理地址存储在针对所有装置的单个存储器中,但特定物理地址不与装置相关联时,例如,不应该允许装置访问特定物理地址,则交换机不会验证请求。
[0083] 响应于确定特定物理地址未存储在交换机的存储器中,交换机丢弃存储器访问请求(312)。例如,交换机不将请求转发至另一装置用于服务或者不对请求做出响应,或者不会进行它们中任一者。在一些示例中,交换机可以记录识别丢弃的存储器访问请求的细节的错误,例如,未存储在交换机的存储器中的特定物理地址以及向交换机发送了请求的源装置的标识符。
[0084] 响应于确定特定物理地址未存储在交换机的存储器中,交换机重置装置(314)。例如,交换机可以确定装置是恶意装置、具有软件缺陷、或者两者,并且重置装置,例如,以防止装置访问该装置不具备访问权限的存储器位置。
[0085] 上述过程300中的步骤顺序仅是说明性的,并且可以按照不同顺序执行确定物理地址是否存储在存储器中。例如,交换机可以重置装置,然后丢弃存储器访问请求,例如,执行步骤314,然后执行步骤312。
[0086] 在一些实施方式中,过程300可以包括附加步骤、更少的步骤,或者可以将一些步骤划分成多个步骤。例如,交换机可以针对多个不同的存储器访问请求、多种不同类型的存储器访问请求例如读取、写入、或者两者、连接至由交换机管理的总线的多个不同的装置、或者它们中的两个或者更多个的组合来执行过程300的一部分或者所有。交换机可以验证请求中的一些、使请求中的一些无效、或者验证请求中的一些并且使请求中的一些无效两者。
[0087] 在一些实施方式中,具有TLB或者IOMMU的另一装置验证请求。例如,根复合体可以执行过程300以验证请求。
[0088] 可选实施方式细节
[0089] 在一些实施方式中,交换芯片可以包括针对交换芯片为其存储地址映射的装置中的每个装置的TLB,例如,针对允许装置连接至由交换芯片管理的总线并且交换芯片为其存储地址映射每个端口的TLB。交换芯片可以使用端口信息来确定应该访问哪个TLB,例如,以确定特定装置的地址映射或者验证对特定装置的存储器访问请求。交换芯片可以使用任何合适的方法来确定要针对特定装置访问哪个TLB。
[0090] 在一些实施方式中,交换芯片可以使用标识符例如端口标识符来识别装置并且确定装置是否可以将地址映射本地缓存在装置上。例如,交换芯片可以包括针对每个端口的位,该位指示经由总线连接至该端口的装置是否支持ATS,并且交换芯片是否应该对来自该装置的地址转换请求做出响应。
[0091] 可以基于存储器为其存储地址映射的装置的数目、例如当每个端口与可以连接至由交换芯片管理的总线并且IOMMU为其存储页表的装置对应时交换芯片中的端口的数目,来选择交换芯片中的存储器例如IOMMU的大小。例如,具有经由总线与至最多16个装置连接并且存储其页表的功能性的交换芯片可以包括比具有经由另一总线与最多4个装置连接并且存储其页表的功能性的另一交换芯片更大的IOMMU。
[0092] 在一些实施方式中,IOMMU可以存储一个或者多个装置的页表的总数的百分比。例如,当特定装置可以访问大量存储器位置时,IOMMU可以存储特定装置的页表中的一些而非所有。
[0093] 交换芯片可以为IOMMU为其存储页表的装置中的每个分配IOMMU的页表存储的预定百分比。例如,当交换芯片可以经由总线连接至最多16个装置并且存储其页表、并且一个装置连接至由交换芯片管理的总线时,交换芯片可以分配整个IOMMU以存储该一个装置的页表。当另一装置连接至由交换芯片管理的总线时,交换芯片可以将IOMMU中的存储器的一半分配给每个装置,并针对附加装置以此类推。在一些实施方式中,无论实际上将多少个装置连接至由交换芯片管理的总线,IOMMU可以将存储器的十六分之一分配给每个装置。
[0094] 在一些实施方式中,交换芯片可以包括存储器管理单元(MMU),而不是IOMMU。例如,交换芯片可以使用MMU将连接至由交换芯片管理的总线的装置的虚拟地址转换为物理地址。
[0095] 附加实施方式细节
[0096] 可以在数字电子电路系统中、在有形体现的计算机软件或者固件、在计算机硬件中,包括本说明书所公开的结构及其结构等效物、或者它们中的一个或者多个的组合中实施本说明书中描述的主题的实施例和功能操作。可以将本说明书中描述的主题的实施例实施为一个或者多个计算机程序,即,编码在有形的非瞬时程序载体上以由数据处理设备执行或者以控制该数据处理设备的操作的计算机程序指令的一个或者多个模块。计算机存储介质可以是机器可读存储装置、机器可读存储基板、随机或者串行存取存储器装置、或者它们中的一个或者多个的组合。
[0097] 术语“数据处理设备”是指数据处理硬件并且囊括了用于处理数据的所有种类的设备、装置、和机器,包括例如可编程处理器、计算机、或者多个处理器或者计算机。设备还可以是或者进一步包括专用逻辑电路系统,例如,FPGA(现场可编程门阵列)或者ASIC(专用集成电路)。除了硬件之外,可选地,设备可以包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、或者它们中的一个或者多个的组合的代码。
[0098] 计算机程序,其也可以称为或者描述为程序、软件、软件应用、模块、软件模块、脚本、或者代码,可以以任何形式的编程语言包括编译或者解译语言、或者声明性语言或者过程语言来编写,并且可以以任何形式包括作为独立式程序或者模块、部件、子例程、或者适合在计算环境中使用的其它单元来部署。计算机程序可以但并非必须与文件系统中的文件对应。可以将程序存储在保持其它程序或者数据例如存储在标记语言文档中的一个或者多个脚本的文件的一部分中,在专用于所探讨中的程序的单个文件中,或者存储在例如存储一个或者多个模块、子程序、或者部分代码的文件的多个协作文件中。可以将计算机程序部署为在一个计算机上执行或者在位于一个站点处或者分布在多个站点中并且通过通信网络互连的多个计算机上执行。
[0099] 可以由一个或者多个可编程计算机来执行本说明书中描述的过程和逻辑流,该一个或者多个可编程计算机执行一个或者多个计算机程序以通过操作输入数据并且生成输出来执行功能。也可以由专用逻辑电路系统例如FPGA(现场编程门阵列)或者ASIC(专用集成电路)来执行过程和逻辑流,并且也可以将设备实施为专用逻辑电路系统。
[0100] 适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器装置,包括例如:半导体存储器装置,例如EPROM、EEPROM、和闪速存储器装置;磁盘,例如内部硬盘或者可移动盘‘磁光盘’CD-ROM盘和DVD-ROM盘。处理器和存储器可以由专用逻辑电路系统补充或者可以并入专用逻辑电路系统中。
[0101] 虽然本说明书包含许多特定实施方式细节,但是这些细节不应被解释为限制所要求保护的范围,而是作为对可以由特定实施例专用的特征的描述。在本说明书中在单独实施例的背景下描述的某些特征还可以组合地实施在单个实施例中。相反,在单个实施例的背景中描述的各种特征也可以单独地或者按照任何合适的子组合实施在多个实施例中。此外,虽然上文可能将特征描述为以某些组合来起作用并且最初甚至同样地对该特征进行了要求,但是在一些情况下可以从组合中删除来自所要求的组合的一个或者多个特征,并且所要求的组合可以指向子组合或者子组合的变化。
[0102] 同样,虽然在附图中按照特定次序示出了操作,但是不应该将其理解为需要按照所述的特定次序或者按照顺序次序来执行这种操作,或者需要执行所有图示的操作以实现期望的结果。在某些情况下,多任务处理和并行处理可以是有利的。此外,不应该将在上述实施例中的各种系统模块和部件的分离理解为在所有实施例中需要这种分离,并且应该理解,所描述的程序部件和系统通常可以一起集成在单个软件产品中或者封装到多个软件产品中。
[0103] 已经对本主题的特定实施例进行了描述。其它实施例在以下权利要求书的范围内。例如,在权利要求书中叙述的动作可以按照不同的次序来执行并且仍然可以实现期望的结果。作为一个示例,在附图中描绘的过程不一定需要所示的特定次序或者顺序次序以实现期望的结果。在某些情况下,多任务处理和并行处理可以是有利的。