处理地址转换请求的制作方法

文档序号:10577298阅读:303来源:国知局
处理地址转换请求的制作方法
【专利摘要】本公开涉及处理地址转换请求。存储器管理单元包括用于从设备接收地址转换请求的接口,该地址转换请求指定要被转换的虚拟地址。转换电路将虚拟地址转换成与直接指定存储器位置的物理地址不同的中间地址。响应于地址转换请求,接口向设备提供指定中间地址的地址转换响应。这通过避免将物理地址披露给设备来提高安全性。
【专利说明】
处理地址转换请求
技术领域
[0001]本技术涉及数据处理的领域。更具体地,本技术涉及存储器管理单元。
【背景技术】
[0002]数据处理装置可以具有存储器管理单元(MMU)以管理对存储器的访问。

【发明内容】

[0003 ]在至少一些示例中,本技术提供了一种存储器管理单元,包括:
[0004]接口,该接口被配置为从设备接收地址转换请求,该地址转换请求指定要被转换的虚拟地址;以及
[0005]转换电路,该转换电路被配置为将由地址转换请求指定的虚拟地址转换成与直接指定存储器位置的物理地址不同的中间地址;
[0006]其中,该接口被配置为响应于地址转换请求向设备提供包括中间地址的地址转换响应。
[0007]在另一示例中,本技术提供了一种包括如上文所讨论的存储器管理单元的数据处理装置。
[0008]在另一示例中,本技术提供了一种存储器管理单元,包括:
[0009]用于从设备接收地址转换请求的装置,该地址转换请求指定要被转换的虚拟地址;
[0010]用于将由地址转换请求指定的虚拟地址转换成与直接指定存储器位置的物理地址不同的中间地址的装置;以及
[0011]用于响应于地址转换请求向设备提供包括中间地址的地址转换响应的装置。
[0012 ]在另一示例中,本技术提供了一种方法,包括:
[0013]从设备接收地址转换请求,该地址转换请求指定要被转换的虚拟地址;
[0014]将由地址转换请求指定的虚拟地址转换成与直接指定存储器位置的物理地址不同的中间地址;以及
[0015]向设备提供地址转换响应,该地址转换响应包括中间地址。
[0016]以上所述和其它对象、特征和优势从结合附图理解的示例实施例的以下详细描述中变得清楚。
【附图说明】
[0017]本技术的另外的特征和优势可以从结合附图理解的示例的以下描述中变得清楚,其中:
[0018]图1示意性地示出其中多个设备通过存储器管理单元访问存储器的数据处理系统的示例;
[0019]图2示意性地示出MMU分布于若干设备的示例;[0020 ]图3示出由MMU执行的地址转换的示例;
[0021]图4示出处理地址转换请求和被转换的存储器访问请求的示例;
[0022]图5是示出处理未被转换的访问请求的示例的流程图;
[0023]图6是示出处理地址转换请求的示例的流程图;以及
[0024]图7是示出处理处理转换的访问请求的示例的流程图。
【具体实施方式】
[0025]数据处理装置可以具有存储管理单元(MMU)以管理对存储器的访问。例如,MMU可以负责将由希望访问存储器的设备指定的虚拟地址转换成直接标识在存储器中访问的位置的物理地址。MMU还可以基于针对地址空间的区域的访问权限集来控制设备是否被允许访问所请求的地址。地址转换和访问权限检查可以利用页表条目来控制,页表条目可以位于存储器中的页表内或者被缓存在MMU本地的转换后备缓冲器(TLB)内。如果TLB不包含针对给定访问的所需页表条目,那么可能需要相对较慢的页表移动来访问来自页表的页表条目。如果多个设备或情境通过MMU争夺对存储器的访问,那么在TLB中可能没有针对每个设备或情境所需的页表条目的足够的空间,并且因此该争夺可能导致更频繁的页表移动,这可能影响性能。
[0026]为了减小针对MMU资源的争夺对性能的影响,一些MMU可以提供预先地址转换功能,其中,客户端设备可以向MMU发送指定要被转换的虚拟地址(虽然该地址还不需要被访问)的预先地址转换请求,并且MMU向该设备发送指定与该虚拟地址相对应的物理地址的响应。物理地址可以被缓存在设备内,并且随后设备可以向MMU提供指定先前缓存的物理地址的被转换的存储器访问,从而此时不需要其他地址转换。通过提前执行相对慢的地址转换操作并且将结果缓存在客户端设备中,以使得该客户端设备不会与其它设备或情境争夺MMU存储或带宽,执行存储器访问时的性能可以被改善。
[0027]然而,向设备披露物理地址可能会造成安全问题,因为这允许设备向由于已经具有物理地址而不需要进行进一步的转换(或访问权限检查)的MMU发送存储器访问请求。如果设备可以被信任来只针对先前响应于地址转换请求而返回的物理地址做出被转换的访问请求以响应于地址转换请求,那么这是可接受的,因为在地址转换请求时执行的地址转换可以包括任何需要的权限检查。然而,如果设备不可被信任,那么这可能提供安全漏洞。例如,设备可以尝试指定先前未响应于地址转换请求而被返回物理地址(或者因为故障而意外地发生或者因为设备执行的恶意代码而故意地发生)的被转换的存储器访问。如果该存储器访问被允许,那么这可以允许设备访问其不被允许访问的存储器的区域,导致安全违规。因此,在实践中,预先地址转换方法只在当已知耦合于MMU的所有用户设备被信任来正确动作时被使用。通常不是这种情况,并且因此需要禁止预先地址转换。这就限制了可以通过使用地址转换获得的性能提升。
[0028]替换地,如本文所讨论的,响应于地址转换请求,MMU可以将由地址转换请求指定的虚拟地址转换成与直接指定存储器位置的物理地址不同的中间地址,并且向设备返回指定该中间地址而不是物理地址的地址转换响应。这避免了将物理地址披露给设备,使其在即使并非所有耦合到MMU的设备都被信任的情况下也安全地使用预先地址转换功能。这使得预先地址转换被更广泛的使用,允许为更大范围的实现方式获得性能节约。
[0029]设备可以发送两种类型的访问请求。未被转换的访问请求是针对存储器访问的常规请求,它指定虚拟地址并且不使用预先地址转换功能。被转换的访问请求是利用预转换的地址来请求存储器访问,该预转换的地址是先前由MMU响应于地址转换请求而提供的。地址转换请求不请求要被执行的存储器访问,而是只请求MMU返回随后可以被用于被转换的存储器访问的被转换的地址。
[0030]如上所述,当地址转换响应提供中间地址时,被转换的访问请求也将指定中间地址,并且作为响应,转换电路执行进一步转换以将中间地址转换成要被用于存储器访问的相应的物理地址。因此,所述最终的存储器访问仍然是针对物理地址,利用本技术,虚拟地址至中间地址的转换可以在地址转换请求时被执行,并且中间地址至物理地址的转换可以在随后的被转换的访问请求时被执行。
[0031]针对未被转换的访问请求,转换电路可以在两个阶段执行转换,以使得存在用于将虚拟地址转换成相应的中间地址的第一转换并且然后由第二阶段来将中间地址转换成相应的物理地址。例如,两阶段的转换可以被用于支持虚拟化系统。例如,可以利用由第一控制程序控制的第一控制数据集来控制第一转换,第一控制程序由包含MMU的系统内的处理单元执行;并且还可以利用由该处理单元执行的第二程序控制的第二控制数据集来控制第二转换。例如,第一控制程序可以是访客操作系统或虚拟机,而第二控制程序可以是用于管理多个访客操作系统或虚拟机的管理程序。在已经有针对未被转换的存储器访问的两个转换阶段的MMU中,需要很少的额外硬件或功能以利用中间地址而不是物理地址对地址转换请求进行响应,并且因此上文讨论的技术可以利用很少的额外电路区域或能耗开销来实现。
[0032]有人可能认为只将虚拟地址转换成中间地址以响应地址转换请求可能会降低提前执行地址转换的主要性能优势,因为当设备随后进行被转换的访问请求时仍然需要第二转换。然而,在实践中,在两阶段的转换中,通常是第一转换导致对MMU内的资源的更大争夺。例如,如果第一转换与由特定虚拟机或操作系统管理的转换相对应并且第二转换由管理程序管理,那么通常可能存在与不同虚拟机或操作系统相关联的设备或情境之间的竞争,因为每个虚拟机或操作系统可以请求不同的页表数据或其它被缓存在MMU中的控制数据,这增大了对MMU缓存中的空间的竞争。与由管理程序控制的第二阶段相比,可能可以利用共同的一组控制数据来管理多个情境或设备,以减少由于竞争产生MMU缓冲未击中的可能性。因此,在实践中,与提前执行地址转换相关联的很多性能获益可以通过只提前执行第一转换来获得,即使随后当被转换的存储器访问被请求时执行第二阶段转换。
[0033]不是所有的地址转换请求可以引起指定中间地址的响应。一些示例可以支持以不同方式处理地址转换请求的若干不同的地址转换模式。
[0034]例如,在第一地址转换模式下,地址转换请求可以如上文所述地进行处理,从而虚拟地址被转换成中间地址,并且然后向指定中间地址的设备提供响应。相反地,在第二地址转换模式下,物理地址可以响应于地址转换请求而被返回。
[0035]当在第一模式时,被转换的访问请求可以指定中间地址,并且因此作为响应,转换电路可以执行中间地址至要被用于存储器访问的相应物理地址的转换。在第二模式下,被转换的访问请求已经指定了物理地址,所以不需要另外的转换,并且在这种情况下,在请求中指定的物理地址可以被直接用于存储器访问。
[0036]转发电路可以基于转发电路可访问的控制信息(例如,在控制寄存器、缓存或主存储器)来选择是使用第一模式还是第二模式。控制信息可以分别为不同的设备或情境指定使用哪种模式,这些设备或情境对存储器的访问是由MMU管理的。因此,一个设备或情境可以使其地址转换请求在第一模式中被处理,而另一设备或情境可以使其地址转换在第二模式中被处理。因此,针对被信任进行适当动作的设备/情境,第二地址转换模式可以被使用,因为这允许随后被转换的存储器访问被更快的处理,因为不需要进行额外的转换。然而,针对不被信任的设备/情境,MMU可以在第一模式下处理地址转换,从而只披露中间地址以维护安全。通过提供两种模式,可以获得安全和性能之间更好的平衡。
[0037]可能存在与检查控制信息以确定使用哪种模式来处理地址转换请求相关联的性能开销。例如,控制信息可以被存储在存储器中并且因此在取回和读取该信息时可能有延迟。如果已知所有设备都是受信任的,那么该延迟可以是不必要的。
[0038]当设备受信任时时,为了进一步提高系能,可以为MMU提供包括性能模式和安全模式的多个操作模式。在性能模式下,响应于从设备接收到的被转换的访问请求,MMU可以允许被转换的存储器访问利用由被转换的访问请求指定的地址来进行,而不需要检查是使用第一地址转换模式还是第二地址转换模式。在安全模式下,转换电路在允许任意存储器访问进行以响应被转换的访问请求之前检查是使用第一地址转换模式还是第二地址转换模式。
[0039]如果所有设备都是可信的,那么可以选择性能模式,从而没有由于检查控制信息的延迟,并且替代地所有被转换的访问请求可以被假定为根据第二地址转换模式指定物理地址。如果考虑到至少一个设备可能是不可信的,那么可以选择安全模式,从而在访问存储器之前检查地址转换模式,并且如果为该设备选择了第一地址转换模式,那么执行中间地址至物理地址的进一步转换。因此,提供性能模式和安全模式可以允许在性能和安全之间权衡,这可以在实现具体的系统时根据所使用的设备来进行选择。
[0040]在一些示例中,MMU内的一些控制信息集可以指示是在安全模式下还是性能模式下操作。例如,可以在MMU内提供定义使用哪种模式的标志。
[0041]在性能模式期间,对存储器的访问被允许在不检查地址转换模式的情况下进行。此时,当MMU在性能模式下时,存储器管理单元可以禁止使用第一地址转换模式,从而从设备接收到的任意被转换的访问请求将指定物理地址而不是中间地址以避免由被解释成物理地址的中间地址引起的安全违规。例如,当MMU在安全模式下时,MMU可以只允许选择使用中间地址的第一地址转换模式。同样地,如果从安全模式切换到性能模式,那么MMU可以迫使所有设备使用第二转换模式。图1是虚拟化环境中的数据处理布置的示意图。在图1中,各种单元可以经由互联布置10被连接。经由互联布置10连接的单元包括:中央处理单元(CPU)
20、可选择性地包括缓存存储器32的系统存储器30、一个或多个设备40、50、和包括转换后备缓冲区(TLB)62的系统存储器管理单元(SMMU)60。当下文的描述提及访问“存储器”时,应该理解的是这还包括访问缓存32。
[0042]SMMU是一种类型的MMU,它负责为多个设备40、50管理对存储器的访问,多个设备通常可以是由主机CPU 20管理的外部设备。例如,这些设备可以包括外部用户接口或者如相机设备之类的输入/输出设备。本技术特别适用于SMMU,因为SMMU通常可能经历不同设备之间对MMU的严重争夺,但应该理解的是本技术还可以应用于其它类型的MMU。
[0043]设备40、50中的每个设备与虚拟机(VM)或虚拟环境中的访客系统相关联。图1的装置向设备提供对由虚拟存储器地址定义的虚拟地址空间的访问。每个虚拟机了解它自己的地址空间,该地址空间包含供该虚拟机使用的指令和数据。除其它优势外,虚拟地址的使用允许主机操作系统或管理程序(HV)通过禁止一个虚拟机访问或者损坏由另一虚拟机使用的信息来控制存储器访问。图1提供此类布置的示例,在该布置中主机数据处理系统为一个或多个访客数据处理系统提供虚拟操作环境。
[0044]系统存储器通过物理地址来寻址。因此,当设备请求访问虚拟存储器地址以例如读取或写入指令或数据项时,虚拟存储器地址被转换成物理存储器地址,从而所需信息可以从系统存储器30中获得或者可以写入系统存储器30。存储器地址的转换由SMMU 60执行。下文将给出更多SMMU操作的细节。
[0045]TLB 62在存储器地址转换过程中提供缓存功能。TLB 62存储最近或通常使用的虚拟和物理存储器地址之间的转换。因此,作为地址转换过程中的第一步,TLB 62被查阅以便检测TLB是否已经包含所需的地址转换。如果不包含,那么可以使用更复杂的转换过程,例如,涉及查阅保存地址转换信息的所谓页表,然后通常使得TLB 62中被填入所需转换的细
-K-
T O
[0046]图1的虚拟化系统利用了多个阶段的地址转换。在该布置中,使用了两个等级的转换。设备40、50中的一个设备中的执行程序或其它系统的模块所需的虚拟地址(VA)由第一MMU阶段转换成中间物理地址(IPA)。直到VM软件意识到,IPA是被用于访问系统存储器的物理地址。然而,虚拟化系统提供了第二等级的地址转换以使得IPA随后通过第二 MMU阶段转换成物理地址(PA) JPA至PA的转换完全由管理程序控制。因此,特定的VM可以被披露给VA以进行IPA转换,而管理程序监督IPA至PA的转换并且因此控制对物理系统存储器的实际访问。
[0047]在一些示例中,每个设备40、50可以与相应的虚拟机相关联。在其它示例中,多个设备可以与单一虚拟机相关联。就设备和SMMU 60之间的通信而言,设备可以分别与各自的“流”标识符(流ID)相关联,除其它功能外,“流”标识符可以协助路由向或从设备路由SMMU交易。
[0048]图1示出一个SMMU60的使用。在其它示例中,如图2所示的示例中,存储器管理单元功能可以是部分分布的,因为TLB可以分别与每个设备相关联,从而转换在设备本地发生,但是在所需转换不是在相应的TLB中发现的情况(TLB“未命中(miss)”)中,参考中央MMU来解决所需的转换。然而,为了进行下文的讨论,每个布置是适用的。
[0049]还需要注意的是图1和图2是数据处理布置的物理结构的示意图。逻辑结构提供了一个或多个VM和HV 和HV作为在CPU 20上运行的不同软件处理而存在,例如,伴随着不同的相应等级的操作权限。因此,运行不同的各个软件(可以被存储在系统存储器30中)的通用CPU可以提供(一个或多个)VM和HV的功能。
[0050]如图3所示,SMMU 60具有用于从设备40、50接收请求并且向设备40、50发送响应的设备接口 61。例如,SMMU 60可以经由诸如PCI总线之类的总线被耦合至设备40、50,并且设备接口 61可以实施用于在总线上传输信号的总线协议。
[0051]图3示出响应于来自设备40、50中的一个设备的未被转换的地址访问请求而执行地址转换的示例。未被转换的存储器访问指定上文所讨论的虚拟地址(VA)以及流标识符(SID) JA被转换成要被用于访问包括缓存32或主存储器30的存储器系统的物理地址(PA)。如图3所示,SMMU 60在两个阶段中执行转换,SMMU 60利用阶段一(SI)转换64来将VA转换成中间物理地址(IPA)并且利用阶段二(S2)转换66来将IPA转换成相应的PA Al和S2转换64、66被逻辑地示为图3的独立单元,但是应该理解的是,在一些实现方式中,用于执行两种转换的至少一些电路可以被共享。SI和S2转换是基于控制数据被执行的,控制数据包括:存储在存储器系统30、32中的SI页表70和S2页表72;分别缓存来自SI和S2页表70、72的转换数据的子集的SI和S2TLB 74、76;定义针对SMMU 60的配置数据的控制寄存器80;以及定义针对可通过SMMU发布访问请求的各个设备或情境的控制信息的流表。控制数据还可以包括队列,这些队列用于跟踪将由SMMU 60处理的存储器访问或地址转换命令的、或者跟踪由SSMU60检测的、将被报告给设备40、50的事件(这些事件可以包括页面错误、访问许可违规等)。
[0052]SI页表70提供定义如何执行VA至IPA的SI地址转换64的信息。SI页表由CPU 20在访客操作系统或虚拟机的控制下进行设置。SI页表70可以为虚拟地址空间的每个页面定义虚拟地址的页面部分和相应的中间物理地址(通常该地址还包括在转换期间保持不变的偏移部分)的页面部分之间的映射。SI页表70还可以定义用于控制是否允许存储器访问来自特定设备或情境的给定地址的访问权限数据。SI页表70可以包括若干等级的页表。当需要SI转换时,如果所需的页表条目不在SlTLB 74中,那么页表移动操作被执行以从存储器中的SI页表70的等级中的一个等级中取回条目,并且当所需页表条目被引入SlTLB 74中时,则SI转换64可以进行。页表移动操作可能相对较慢,并且如果在不同的设备或情境之间存在对SlTLB 74中的空间的争夺,那么这可能降低SMMU的性能,因为不可能尽快地为存储器访问请求服务。
[0053]类似地,S2页表72定义IPA和PA的页面部分(地址的偏移部分仍可以保持不变)之间的映射、以及用于控制是否允许访问给定地址的权限数据。S2页表在管理程序的控制下被设置。另外,S2TLB 76在用于缓存来自S2页表72的页表条目中的一些条目的SMMU内的芯片上被提供,并且页表移动可以被执行以将所需的页表条目取回至S2TLB。然后被S2转换76返回的PA可以被用于访问存储器系统30、32。
[0054]控制寄存器80包括针对SMMU的配置数据,该配置数据包括定义SMMU是在性能模式还是安全模式的模式标志84,这将在下文中进行详细讨论。
[0055]流表82可以在存储器系统30、32内或在SMMU 60内的本地存储器(例如,一组寄存器或本地缓存)中被提供。流表82包括由在由SMMU接收到的访问请求中所指定的流ID索引的多个流表条目86 AMMU可以利用其被访问的每个设备或情境可以被分配不同的流ID。
[0056]每个流表条目86包括与发布访问请求的具体设备或情境相关联的控制信息。例如,流表条目86可以包括到存储器中的S1、S2页表70、72的指针以用于具有相应流ID的请求。因此,不同的设备/情境可以通过访问不同的页表来被提供不同的转换数据和权限。这就是为什么当若干流需要不同的条目被取回SlTLB 74中并且没有针对所有条目的足够空间时在SlTLB 74中通常存在竞争的原因。并且,流表条目86可以包括“使能地址转换服务(EATS)”字段88,该字段定义被用于处理指定相应的流ID的地址转换请求的地址转换模式。可能提供多个不同的模式。另外,EATS字段88可以指定对地址转换请求和被转换的访问的处理是否是完全禁用的。如果地址转换服务是禁用的,那么拒绝任何地址转换请求或被转换的存储器访问请求。如果地址转换服务被使能,那么EATS 88字段可以指示两种不同的地址转换模式中的一种。
[0057]图4示出利用两种地址转换模式来处理地址转换请求和被转换的存储器访问。图4的左手侧部分示意性地示出对从设备40、50中的一个设备发送的地址转换请求90的处理,该地址转换请求90指定将被转换的虚拟地址。当还不需要存储器访问时,地址转换请求通常被提前发送。响应于地址转换请求90,SMMU向设备提供指定被转换的地址的转换响应92,在实际需要对该被转换的地址的存储器访问之前该地址可以被缓存在设备40、50内。当需要存储器访问时,设备发送被转换的存储器访问请求94,被转换的存储器访问请求94指定先前在转换响应92中接收到的被转换的地址。通过提前执行一些转换,实际的存储器访问不会因为争夺TLB资源而被延迟,这提高了性能。
[0058]如图4所示,SMMU可以支持全地址转换模式和半地址转换模式。要使用的模式是基于模式选择值89被选择的,模式选择值89可以从与请求中指定的流ID相对应的流表条目86中的EATS字段88中得到。
[0059]在全地址转换模式下,在转换请求90中指定的VA经过SI转换64以生成相应的IPA,并且IPA经过S2转换66以生成相应的PA,它们会在转换响应92中被返回给设备40、50。在全地址转换模式下,被转换的存储器访问94指定可以被直接用于存储器访问而不需要进一步转换的PA。
[0060]另一方面,当使用半转换模式时,只有SI转换模式在地址转换请求90时被执行,从而VA被转换成IPA而S2转换66被省略。指定从SI转换64获取的IPA的转换响应92被发送至设备。在半转换模式下,被转换的访问请求94指定IPA,并且此时使得S2转换66被执行来将IPA转换成将被用于存储器访问的PA。
[0061]于是,两种不同的模式提供了一方面的安全和另一方面的性能之间的平衡。披露直接指定位置和存储器的物理地址可能带来安全隐患,因为如图4的右侧部分所示设备可以发布指定物理地址的被转换的流量,该物理地址可以导致存储器访问而不需要任何进一步的转换或对访问许可的检查。如果终端设备可以被信任为只发布针对先前遵循地址转换请求90被返回的物理地址的被转换的流量,那么可以假设SI和S2转换64、66(包括由操作系统和管理程序实施的任意访问许可检查)都已经被执行并且该访问是安全的。因此,通过为受信任的设备或情境选择全转换模式,性能可以通过允许非常快速地处理的被转换的流量来得到改善。
[0062]另一方面,针对不受信任的设备或情境,半转换模式可以被选择来避免向该设备披露物理地址。而在被转换的存储器请求94时仍然需要S2转换,S2转换遇到由于竞争而产生的延迟的可能性比SI转换低,所以大部分提前执行转换的性能优势来自于提前执行SI转换而不是S2转换,所以半转换模式仍然能改善性能。半转换模式允许预先地址转换甚至与潜在不受信任的现成设备一起被使用,以使得预先地址转换的性能优势可以在更广泛范围的数据处理系统中得到使用。而且,可能有一些取决于地址转换服务的功能是可用的,例如,将设备耦合至SMMU的PCI总线的PRI功能,并且因此通过使地址转换服务能够更广泛地被使用,还可以使其它优化或功能能够被更广泛的使用。
[0063]SMMU的模式标志84控制SMMU是在性能模式下还是安全模式下。在性能模式下,SMMU可以根据全转换模式来处理所有地址转换请求和被转换的存储器访问流量。这可以在所有设备是都受信任的情况下被选择,从而不需要招致检查流表条目以确认是使用全转换模式还是半转换模式的延迟,这改善了性能。在安全模式下,SMMU可以在处理任意地址转换请求或被转换的流量之前检查流表条目,以确认物理地址没有向不受信任的设备披露。因此,这可以在存在至少一个潜在不受信任的设备时被选择以维护安全。如果SMMU的当前模式是性能模式,那么SMMU可以阻止EATS字段88被设置为指示半转换模式。
[0064]图5示出利用SMMU处理未被转换的存储器访问的方法。在步骤100处,SMMU60从设备40、50中的一个设备接收指定VA和流ID的访问请求。在步骤102处,SI转换64将VA转换成IPA。如果与被指定的地址相对应的转换数据不存在于SlLTB 74内,那么到SI页表70的指针从与在访问请求中指定的流ID相对应的流表条目86中被读取,并且页表移动被执行以从SI页表70中获得所需的转换数据。在步骤104中,S2转换66将在步骤102中获得的IPA转换成PA。再者,如果所需数据不存在于S2TLB 76中,那么利用由在相应的流表条目内的S2页表指针指示的S2页表72来执行页表移动。在步骤106处,利用在S2转换66中获得的PA来执行存储器访问,该存储器访问可以是读或写。
[0065]图6示出处理从设备中的一个设备中接收到的地址转换请求的方法。在步骤110处,从设备接收指定VA和流ID的地址转换请求。在步骤112处,基于模式标志84确定SMMU 60是在性能模式还是在安全模式。如果SMMU是在安全模式,那么在步骤114处,SMMU检查与被指定的流ID相对应的流表条目86以确定该地址转换模式。如果地址转换模式是半转换模式,那么在步骤116处,SI转换64被执行来将地址转换请求中指定的VA转换成IPA,并且在步骤118处,指定IPA的转换响应92被发送至设备。另一方面,如果地址转换模式是全转换模式,那么在步骤120处,SI转换被执行来将由地址转换请求指定的VA转换成IPA,并且在步骤122处,S2转换还被执行为将IPA转换成PA。在步骤124处,指定在S2转换中获得的PA的转换响应被发送至设备。如果在步骤112中,SMMU被确定为是在性能模式,那么跳过步骤114并且地址转换模式被假设为是全转换模式,从而使方法直接进行至步骤120以避免针对检查在流表82中指定的地址转换模式的任意延迟。
[0066]图7示出处理转换的访问请求94的方法。在步骤130处,指定流ID和被转换的地址的被转换的访问请求从设备40、50中的一个设备被接收,取决于被用于该设备的地址转换模式被转换的地址可以是IPA或PA。在步骤132处,确定SMMU当前是在性能模式还是安全模式。如果SMMU是在安全模式,那么在步骤134处,从流表82中确定针对当前流ID的地址转换模式。如果地址转换模式是半转换模式,那么在步骤136处,S2转换66被执行以将由被转换的访问请求指定的IPA转换成PA,并且在步骤138处,利用在步骤136中获得PA执行存储器访问。如果地址转换模式是全转换模式,那么在步骤140处,利用在被转换的访问中指定的PA执行存储器访问,而不需要任何进一步转换。如果在步骤132处,SMMU的当前模式是性能模式,那么省略步骤134并且根据全地址转换模式处理请求,从而方法可以直接从132进行至步骤140。
[0067]在本应用中,词语“被配置为……”被用于表示装置的元件具有能够执行被定义的操作的配置。在该语境中,“配置”表示硬件或软件的互连形式或布置。例如,装置可以具有提供被定义的操作的专用硬件,或者处理器或其它处理设备可以被编程为执行功能。“被配置为……”不暗示装置元件需要以任意形式进行改变以便于提供被定义的操作。
[0068]虽然说明性实施例在本文中已经参考附图进行了详细描述,但应该理解的是本发明不限于那些精确的实施例,并且在不背离所附权利要求的范围的情况下本领域的相关技术人员可以对其进行各种改变和修改。
【主权项】
1.一种存储器管理单元,包括: 接口,所述接口被配置为从设备接收地址转换请求,所述地址转换请求指定要被转换的虚拟地址;以及 转换电路,所述转换电路被配置为将由所述地址转换请求指定的所述虚拟地址转换成与直接指定存储器位置的物理地址不同的中间地址; 其中,所述接口被配置为响应于所述地址转换请求向所述设备提供包括所述中间地址的地址转换响应。2.根据权利要求1所述的存储器管理单元,其中,响应于由所述接口从所述设备接收的被转换的访问请求,所述被转换的访问请求指定所述中间地址,所述转换电路被配置为将所述中间地址转换成相应地物理地址。3.根据权利要求1所述的存储器管理单元,其中,响应于由所述接口从所述设备接收的未被转换的访问请求,所述未被转换的访问请求指定虚拟地址,所述转换电路被配置为将所述虚拟地址转换成相应的物理地址。4.根据权利要求3所述的存储器管理单元,其中,响应于所述未被转换的访问请求,所述转换电路被配置为执行第一转换以将所述虚拟地址转换成相应的中间地址、并且执行第二转换以将所述中间地址转换成所述相应的物理地址。5.根据权利要求4所述的存储器管理单元,其中,所述转换电路被配置为在由处理单元执行的第一控制程序的控制下、基于第一控制数据集合来执行所述第一转换,并且在由所述处理单元执行的第二控制程序的控制下、基于第二控制数据集合来执行所述第二转换。6.根据权利要求1所述的存储器管理单元,包括:控制电路,所述控制电路被配置为利用由所述转换电路获取的所述物理地址来控制对存储器访问的处理。7.根据权利要求1所述的存储器管理单元,其中,在第一地址转换模式下,响应于所述地址转换请求,所述转换电路被配置为将所述虚拟地址转换成所述中间地址,并且所述接口被配置为提供指定所述中间地址的所述地址转换响应;并且 在第二地址转换模式下,响应于所述地址转换请求,所述转换电路被配置为将所述虚拟地址转换成所述物理地址,并且所述接口被配置为提供指定所述物理地址的所述地址转换响应。8.根据权利要求7所述的存储器管理单元,其中,所述转换电路被配置为根据所述转换电路可访问的控制信息来选择是使用所述第一地址转换模式还是所述第二地址转换模式。9.根据权利要求8所述的存储器管理单元,其中,所述控制信息分别针对多个设备或情境中的每一设备或情境来指定针对从该设备或情境接收到的请求是使用所述第一地址转换模式还是所述第二地址转换模式。10.根据权利要求1所述的存储器管理单元,其中,在所述第一地址转换模式下,响应于由所述接口接收的被转换的访问请求,所述转换电路被配置为将由所述被转换的访问请求指定的中间地址转换成要被用于存储器访问的相应的物理地址;以及 在所述第二地址转换模式下,响应于由所述接口接收的被转换的访问请求,所述存储器管理单元被配置为提供由所述被转换的访问请求指定的、要被用于存储器访问的所述物理地址。11.根据权利要求10所述的存储器管理单元,其中,所述存储器管理单元具有多个操作模式,所述多个操作模式包括: 性能模式,在所述性能模式下,响应于由所述接口接收的被转换的访问请求,所述存储器管理单元被配置为在不需要检查是使用第一地址转换模式还是第二地址转换模式的情况下,允许利用由所述被转换的访问请求指定的地址来进行存储器访问;以及 安全模式,在所述安全模式下,响应于由所述接口接收的被转换的访问请求,所述转换电路被配置为在响应于所述被转换的访问请求而允许进行任意存储器访问之前,检查针对所述被转换的访问请求是使用所述第一地址转换模式还是所述第二地址转换模式。12.根据权利要求11所述的存储器管理单元,其中,所述存储器管理单元被配置为当所述存储器管理单元是在所述性能模式下时禁止使用所述第一地址转换模式。13.根据权利要求1所述的存储器管理单元,包括控制存储元件,所述控制存储元件被配置为存储指示所述存储器管理单元是在所述性能模式还是所述安全模式下的控制信息。14.一种数据处理装置,包括根据权利要求1所述的存储器管理单元。15.一种存储器管理单元,包括: 用于从设备接收地址转换请求的装置,所述地址转换请求指定要被转换的虚拟地址; 用于将由所述地址转换请求指定的所述虚拟地址转换成与直接指定存储器位置的物理地址不同的中间地址的装置;以及 用于响应于所述地址转换请求向所述设备提供包括所述中间地址的地址转换响应的目.ο16.一种方法,包括: 从设备接收地址转换请求,所述地址转换请求指定要被转换的虚拟地址; 将由所述地址转换请求指定的所述虚拟地址转换成与直接指定存储器位置的物理地址不同的中间地址;以及 向所述设备提供地址转换响应,所述地址转换响应包括所述中间地址。
【文档编号】G06F12/10GK105938459SQ201610101795
【公开日】2016年9月14日
【申请日】2016年2月24日
【发明人】马修·埃文斯
【申请人】Arm 有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1