存储器管理的制作方法

文档序号:10577299阅读:592来源:国知局
存储器管理的制作方法
【专利摘要】本公开涉及存储器管理。一种操作主机数据处理系统的方法,其针对客户数据处理系统提供虚拟操作环境,方法包括:响应于来自由客户系统监视的设备的针对访问的系统存储器的事务请求,发起针对客户系统存储器地址到主机系统物理地址的转换的事务;存储与该事务有关的标识信息;检测关于该事务的转换错误状况:以及通过以下操作处理检测到的错误状况:(i)向监视请求事务的设备的客户系统提供指示转换错误状况的信息;(ii)从客户系统接收关于该事务的命令,来自客户系统的命令包括标识请求事务的设备的信息;以及(iii)通过将针对该事务的存储的标识信息至少与由命令标识的设备的标识进行比较,验证接收到的命令以供执行。
【专利说明】
存储器管理
技术领域
[0001 ]本公开涉及存储器管理。
【背景技术】
[0002]存储器管理单元(MMU)致力于虚拟存储器地址到物理存储器地址的转换。
[0003]数据处理装置通常向每个运行程序提供对由虚拟存储器地址定义的虚拟地址空间的访问。每个程序查看它自己的虚拟地址空间,该虚拟地址空间包含用于由该程序使用的指令和数据。除其它已建立的优势外,使用虚拟地址允许操作系统通过禁止一个程序访问或破坏另一程序所使用的信息来控制存储器访问。
[0004]当要求访问虚拟存储器地址时,首先有必要将虚拟存储器地址转换为物理存储器地址从而使得所需的信息可以从物理存储器或物理存储器缓存中获得或可以被写入物理存储器或物理存储器缓存。
[0005]被称为转换后备缓冲器(TLB)的缓存可用作地址转换过程的一部分。TLB存储虚拟存储器地址和物理存储器地址之间最近或通常使用的转换。因此,作为地址转换过程中的第一步骤,TLB被询问以检测TLB是否已包含所需的地址转换。如果未包含,则可以使用更复杂的转换过程,例如包括询问保持地址转换信息的所谓的页面表,这通常导致TLB被所需的转换填充。
[0006]多阶段MMU被用于某些情况中。在该布置中,实际上使用了两级转换。执行程序或其它系统模块(例如,图形处理单元(GPU))所需的虚拟地址(VA)通过第一 MMU阶段被转换为中间物理地址(IPA)13IPA通过第二 MMU阶段被转换为物理地址(PA)。使用多阶段转换的一个原因是当多个操作系统(OS)可能在相同处理器上运行的各个“虚拟机”上使用时的信息处理的安全性。特定的OS被披露于VA到IPA转换,而仅管理程序(监视虚拟机的运行的软件)监督第2阶段(IPA到PA)的转换。

【发明内容】

[0007]在示例布置中,提供了一种操作主机数据处理系统的方法,所述主机数据处理系统为一个或多个客户数据处理系统提供虚拟操作环境,所述方法包括:
[0008]响应于来自由客户系统监视的设备的针对访问在该客户系统存储器地址处的系统存储器的事务请求,发起针对所述客户系统存储器地址到主机系统物理地址的转换的事务;
[0009]存储与所述事务有关的标识信息,所述标识信息至少包括标识请求所述事务的设备的数据;
[0010]检测关于所述事务的转换错误状况:以及
[0011]通过以下操作处理检测到的错误状况:
[0012](i)向监视请求所述事务的设备的所述客户系统提供指示所述转换错误状况的信息;
[0013](ii)从所述客户系统接收关于所述事务的命令,来自所述客户系统的命令包括标识请求所述事务的设备的信息;以及
[0014](iii)通过将针对所述事务的存储的标识信息至少与由所述命令标识的所述设备的标识进行比较来验证接收到的命令以供执行。
[0015]在另一示例布置中,提供了一种主机数据处理系统,所述主机数据处理系统被配置为针对一个或多个客户数据处理系统提供虚拟操作环境,所述主机数据处理系统包括:
[0016]存储器管理单元,所述存储器管理单元被配置为:响应于来自由客户系统监视的设备的针对访问在该客户系统存储器地址处的系统存储器的事务请求,发起针对所述客户系统存储器地址到主机系统物理地址的转换的事务;
[0017]事务缓冲器,所述事务缓冲器被配置为存储与所述事务有关的标识信息,所述标识信息至少包括标识请求所述事务的设备的数据;
[0018]错误检测器,所述错误检测器被配置为检测关于所述事务的转换错误状况:以及
[0019]错误处理逻辑,所述错误处理逻辑被配置为通过以下操作处理检测到的错误状况:
[0020](i)向监视请求所述事务的设备的所述客户系统提供指示所述转换错误状况的信息;
[0021](ii)从所述客户系统接收关于所述事务的命令,来自所述客户系统的命令包括标识请求所述事务的设备的信息;以及
[0022](iii)通过将针对所述事务的存储的标识信息至少与由所述命令标识的所述设备的标识进行比较来验证接收到的命令以供执行。
[0023]在另一示例布置中,提供了一种主机数据处理系统,所述主机数据处理系统可操作于为一个或多个客户数据处理系统提供虚拟操作环境,所述主机数据处理系统包括:
[0024]用于响应于来自由客户系统监视的设备的针对访问在该客户系统存储器地址处的系统存储器的事务请求,发起针对所述客户系统存储器地址到主机系统物理地址的转换的事务的装置;
[0025]用于存储与所述事务有关的标识信息的装置,所述标识信息至少包括标识请求所述事务的设备的数据;
[0026]用于检测关于所述事务的转换错误状况的装置:以及
[0027]用于向监视请求所述事务的设备的所述客户系统提供指示所述转换错误状况的信息的装置;
[0028]用于从所述客户系统接收关于所述事务的命令的装置,来自所述客户系统的命令包括标识请求所述事务的设备的信息;以及
[0029]用于通过将针对所述事务的存储的标识信息至少与由所述命令标识的所述设备的标识进行比较来验证接收到的命令以供执行的装置。
[0030]本技术的另外的各个方面和特征由附加权利要求定义。
【附图说明】
[0031]将参照如附图中所示的实施例、仅通过示例的方式来进一步描述本公开,在附图中:
[0032]图1是虚拟化环境中的数据处理布置的示意图;
[0033]图2示意性示出了分布式存储器管理功能;
[0034]图3是地址转换过程的示意流程图;
[0035]图4是主机系统和客户系统的不意图;
[0036]图5是事务处理过程的示意流程图;
[0037]图6和图7示意性示出了事务缓冲器;
[0038]图8是搁置(stall)处理过程的示意流程图;
[0039]图9是数据存储过程的示意流程图;
[0040]图10是事件创建过程的示意流程图;
[0041]图11是确认过程的示意流程图;以及
[0042]图12是搁置事务清除过程的示意流程图。
【具体实施方式】
[0043]在参照附图讨论实施例之前,提供了对实施例的下述描述。
[0044]示例实施例提供了一种操作主机数据处理系统的方法,所述主机数据处理系统为一个或多个客户数据处理系统提供虚拟操作环境,所述方法包括:
[0045]响应于来自由客户系统监视的设备的针对访问在该客户系统存储器地址处的系统存储器的事务请求,发起针对所述客户系统存储器地址到主机系统物理地址的转换的事务;
[0046]存储与所述事务有关的标识信息,所述标识信息至少包括标识请求所述事务的设备的数据;
[0047]检测关于所述事务的转换错误状况:以及
[0048]通过以下操作处理检测到的错误状况:
[0049](i)向监视请求所述事务的设备的所述客户系统提供指示所述转换错误状况的信息;
[0050](ii)从所述客户系统接收关于所述事务的命令,来自所述客户系统的命令包括标识请求所述事务的设备的信息;以及
[0051](iii)通过将针对所述事务的存储的标识信息至少与由所述命令标识的所述设备的标识进行比较来验证接收到的命令以供执行。
[0052]验证测试被提供以检测产生搁置事务的相同设备或客户系统现在正尝试重试或中止搁置事务。该测试可以帮助避免一个客户影响在另一客户处产生的事务,作为错误的结果或作为潜在的安全问题,使得客户系统尝试欺骗地或以其它方式不适当地影响由另一客户系统监视的设备发起的事务。
[0053]为了允许搁置事务被标识,在示例实施例中,标识信息包括:标识在由主机系统处理的其它事务中的该事务的信息。
[0054]为了给出事务和补救动作的发起之间的链接,在示例实施例中,提供步骤包括:提供标识该事务的信息和标识请求该事务的设备的信息。类似地,为了将可能的解决方案与该事务链接,在示例实施例中,来自客户系统的命令包括标识该事务的信息、和/或标识请求该事务的设备的信息。
[0055]为了检测应该或可能是搁置的事务,在示例实施例中,检测步骤包括:关于转换错误状况,从一组或两个或多个错误类型中检测错误类型;针对错误类型的第一子集,终止该事务;以及针对除错误类型的第一子集中的那些错误类型之外的错误类型,执行处理步骤。
[0056]作为提供发起解决方案时使用的数据的一部分,例如事件通知,在示例实施例中,提供步骤包括:生成包括以下各项的事务标识符数据:请求该事务的设备的标识符、在由主机系统处理的其它事务中的该事务的标识符、定义错误类型的数据、与该事物有关的客户系统存储器地址、以及定义由设备请求的存储器访问的类型的数据;并且向监视请求该事务的设备的客户系统提供该事务标识符数据。在实施例中,提供步骤可以包括:将事务标识符数据添加到与监视请求该事务的设备的客户系统相关联的事件队列。
[0057]在虚拟化系统中,不允许客户系统访问管理程序控制功能的事件队列可以是适当的。在这种情况下,提供步骤可以包括:将事务标识符数据添加到与主机系统相关联的事件队列;以及将事务标识符数据从与主机系统相关联的事件队列复制到与监视请求该事务的设备的客户系统相关联的事件队列。取决于客户系统是否可以处理事件通知中的数据的类型,复制步骤可以包括:在将事务标识符数据复制到与监视请求该事务的设备的客户系统相关联的事件队列之前,修改定义错误类型的数据。在其它示例中,复制步骤可以包括:在将事务标识符数据复制到与监视请求该事务的设备的客户系统相关联的事件队列之前,修改标识请求该事务的设备的数据。在示例实施例中,来自客户系统的命令可以包括该事务标识符数据。
[0058]类似地,为了避免客户系统直接访问由主机控制的功能,在示例实施例中,接收步骤包括:在与监视请求该事务的设备的客户系统相关联的命令队列中检测由客户系统发出的命令;以及将命令从与监视请求该事务的设备的客户系统相关联的命令队列复制到与主机系统相关联的命令队列。
[0059]在示例实施例中,验证步骤可以包括:如果针对该事务的存储的标识信息不与由命令标识的设备相对应,则阻止对命令的执行。
[0060]在实施例中,验证步骤包括:核查产生命令的客户系统正在监视由命令标识的设备。
[0061]示例实施例提供了一种主机数据处理系统,所述主机数据处理系统被配置为针对一个或多个客户数据处理系统提供虚拟操作环境,所述主机数据处理系统包括:
[0062]存储器管理单元,所述存储器管理单元被配置为:响应于来自由客户系统监视的设备的针对访问在该客户系统存储器地址处的系统存储器的事务请求,发起或处理针对所述客户系统存储器地址到主机系统物理地址的转换的事务;
[0063]事务缓冲器,所述事务缓冲器被配置为:存储与所述事务有关的标识信息,所述标识信息至少包括标识请求所述事务的设备的数据;
[0064]错误检测器,所述错误检测器被配置为检测关于所述事务的转换错误状况:以及
[0065]错误处理逻辑,所述错误处理逻辑被配置为通过以下操作处理检测到的错误状况:
[0066](i)向监视请求所述事务的设备的所述客户系统提供指示所述转换错误状况的信息;
[0067](ii)从所述客户系统接收关于所述事务的命令,来自所述客户系统的命令包括标识请求所述事务的设备的信息;以及
[0068](iii)通过将针对所述事务的存储的标识信息至少与由所述命令标识的所述设备的标识进行比较来验证接收到的命令以供执行。
[0069]示例实施例提供了一种主机数据处理系统,所述主机数据处理系统可操作于为一个或多个客户数据处理系统提供虚拟操作环境,所述主机数据处理系统包括:
[0070]用于响应于来自由客户系统监视的设备的针对访问在该客户系统存储器地址处的系统存储器的事务请求,发起针对所述客户系统存储器地址到主机系统物理地址的转换的事务的装置;
[0071]用于存储与所述事务有关的标识信息的装置,所述标识信息至少包括标识请求所述事务的设备的数据;
[0072]用于检测关于所述事务的转换错误状况的装置:
[0073]用于向监视请求所述事务的设备的所述客户系统提供指示所述转换错误状况的信息的装置;
[0074]用于从所述客户系统接收关于所述事务的命令的装置,来自所述客户系统的命令包括标识请求所述事务的设备的信息;以及
[0075]用于通过将针对所述事务的存储的标识信息至少与由所述命令标识的所述设备的标识进行比较来验证接收到的命令以供执行的装置。
[0076]现在参照附图,图1是虚拟化环境中的数据处理布置的示意图。在图1中,各个单元经由互连布置10被连接。经由互连布置10被连接的单元包括:中央处理单元(CPU)20、系统存储器30(可选地具有相关联的缓存存储器,未示出)、一个或多个设备40、50以及包括转换后备缓冲器(TLB)62的系统存储器管理单元(SMMU)60。
[0077]在该示例中,设备是外围用户接口或数据输入/输出设备(例如照相机设备)。设备40、50中的每个设备与虚拟环境中的虚拟机(VM)或客户系统相关联。(一个或多个)设备被称为被各个VM监视,也就是说(例如)它们在VM中运行的操作系统下操作,并且它们具有对于提供用于VM(或由VM提供)的虚拟存储器空间的入口。图1的装置给设备提供对由虚拟存储器地址定义的虚拟地址空间的访问。每个虚拟机查看它自己的虚拟地址空间,该虚拟地址空间包含用于由该虚拟机使用的指令和数据。除其它优势外,使用虚拟地址允许主机操作系统或管理程序(HV)通过禁止一个虚拟机访问或破坏另一虚拟机所使用的信息来控制存储器访问。图1提供了主机数据处理系统为一个或多个客户数据处理系统提供虚拟操作环境的布置的示例。
[0078]系统存储器通过物理地址寻址。因此当设备要求访问虚拟存储器地址(例如读取或写入指令或数据项)时,首先有必要将虚拟存储器地址转换为物理存储器地址从而使得所需的信息可以从系统存储器30中获得或可以被写入系统存储器30。存储器地址的转换由SMMU 60执行。下面将给出关于SMMU操作的更多细节。
[0079]TLB 62在存储器地址转换过程中提供缓存功能。TLB 62存储虚拟存储器地址和物理存储器地址之间最近或通常使用的转换。因此,作为地址转换过程中的第一步骤,TLB 62被询问以便检测TLB是否已包含所需的地址转换。如果未包含,则可以使用更复杂的转换过程,例如包括询问保持地址转换信息的所谓的页面表,这通常导致TLB 62被所需的转换的细节填充。
[0080]图1的虚拟化系统利用多阶段地址转换。在该布置中,实际上使用了两级转换。设备40之一中的执行程序或其它系统模块所需的虚拟地址(VA)通过第一 MMU阶段被转换为中间物理地址(IPA)。据VM软件所知,IPA是用于访问系统存储器的物理地址。然而,虚拟化系统提供第二级地址转换,以使得IPA然后通过第二存储器管理单元阶段被转换为物理地址(PA) ο IPA到PA转换完全在管理程序的控制下。因此,特定VM可以被披露于VA到IPA转换,而仅管理程序监督IPA到PA转换并且因此控制对物理系统存储器的实际访问。但从VM的视角看,IPA是与所需存储器访问有关的实际地址。
[0081]在某些示例中,每个设备40、50可以与各个虚拟机相关联。在其它示例中,多个设备可以与单个虚拟机相关联。就设备和SMMU 60之间的通信而言,设备可以各自与各个“流”标识符(流ID)相关联,除其它功能外,流ID可以协助路由去往和来自设备的SMMU事务。流ID因此用作设备标识符。
[0082]图1示出了一个SMMU60的使用。在其它示例(例如图2中所示的示例)中,存储器管理单元功能可以部分分布在可以与每个设备各自相关联的那些TLB中,从而使得转换在设备本地发生,但是在相应TLB中未发现所需转换(TLB “错过”)的情况下,参照中央MMU以供解决所需转换。然而,为了下面的讨论的目的,两种布置中的任一布置都是适用的。
[0083]还要注意的是,图1和图2是数据处理布置的物理结构的示意性图示。下面关于一个或多个VM和一个HV讨论逻辑结构。VM和HV作为在CPU 20上运行的不同的软件过程(例如具有不同的各个操作特权等级)存在。因此,运行不同的各个软件(可以存储于系统存储器30中)的共同CPU可以提供(一个或多个)VM和该HV的功能。
[0084]图3示出了在高等级处地址转换操作的示意流程图。
[0085]在步骤100处,检测关于所需转换是否由TLB62保持。如果答案为是,则控制传递到下面所讨论的步骤120。如果答案为否,则控制传递到步骤110,在步骤110处,对该存储器地址的转换由SMMU 60获得。然后控制传递到步骤120,在步骤120处,使用与由讨论中的设备提供的初始VA相对应的PA,系统存储器30中的所需存储器地址被访问。
[0086]图4示意性示出了逻辑层处的虚拟机、管理程序和SMMU的交互。
[0087]如上面所提到的,VM 130可以与一个或多个设备40、50相关联。一个或多个VM可以由HV 190监视。为了清楚起见,图4中仅示出了一个VM。
[0088]VM 130包括与SMMU接口 150交互的驱动器软件140,该软件将在下面更详细地描述。SMMU接口 150与事件队列160、命令队列170和第I阶段页面表180进行交互。事件队列160中的新条目与被发布的中断相关联,从而促进VM 130所进行的特定软件动作。中断可以由将条目添加到队列的代理发起。
[0089]事件队列160、命令队列170和第I阶段页面表180归VM 130“所有”或在VM 130的监视下,但事实上被存储于系统存储器中。在图4的表述中,存储于系统存储器中的项目被绘制在虚线框34内。然而,那些项目的所有权通过它们是否被绘制在与VM或HV相对应的实线框内来指示。
[0090]HV 190包括SMMU仿真器200,将在下面更详细讨论SMMU仿真器200,并且SMMU仿真器200与事件队列210、命令队列220、第2阶段页面表230以及配置表240进行交互。SMMU仿真器200还与VM的SMMU接121150进行交互。
[0091]HV 190还与SMMU 250通过接口连接,SMMU 250利用已建立的两阶段SMMU功能并且包括(在一个或多个寄存器中)指向配置表240的存储器位置的指针260、指向事件队列210的存储器位置的指针270以及指向命令队列220的存储器位置的指针280。
[0092]VM和HV表示运行在CPU 20上的各自的软件过程。它们之间的一个差别(不同于它们在目的和功能上的差别)是针对VM和HV过程的指令被执行的特权等级。HV过程在较高特权等级处被执行,这里“特权”在本文中用于指代可以在不同特权等级处被执行的操作的类型和范围的意义。通常,较高的特权等级允许较大范围和/或较宽类型的操作被执行。操作系统(OS)通常将被期望在比应用程序的特权等级更高的特权等级处运行,并且管理程序通常被期望在比由管理程序监视的OS的特权等级更高的特权等级处运行,则这将允许管理程序运行在其之下的可能的多个OS作为VM,该多个VM通过使用虚拟寻址(以及可能的其它技术)来共享系统的资源。由于这个原因,HV可以被称为“主机”系统并且VM可以被称为“客户”系统。
[0093]在现有的示例布置中,对于客户系统,物理SMMU 250(在图1中示为SMMU 60)事实上不可直接访问。但是为了提供VM可以被写入和执行的环境,VM 130需要被提供有SMMU接口,从VM 130中执行的软件的视角看,SMMU接口仿佛是SMMU。为了实现这些共同目标,HV190提供对SMMU的一些功能的仿真200,仿真200包括仿真的SMMU接口 150。注意,仿真的接口150事实上不必是对到物理SMMU 250的实际接口的仿真,而可以是不具体表示任意物理设备但被提供给VM 130并且与VM 130处的驱动器140进行交互的通用SMMU接口或其它SMMU接
□O
[0094]因此,再次从VM的视角看,存储器地址转换由VM经由仿真接口150访问的“SMMU”执行。事实上,转换(或该转换的至少第2阶段操作)至少部分基于由HV经由仿真接口 150接收的信息,由受HV控制的SMMU 250执行。
[0095]SMMU功能具有相关联的事件队列(SMMU将指示诸如转换失败已发生之类的“事件”(事务成功通常不作为事件来通知,以避免通信的大量产生)的数据写入该事件队列),从而使得信息可以由与请求转换的系统相关联的软件从事件队列中读取。SMMU功能还具有指示SMMU做什么的命令队列(与请求转换的系统相关联的软件可以将命令插入到命令队列中)。针对实际的SMMU,这两个队列是事件队列210和命令队列220,这两个队列都在HV的控制下。重要地是,事件队列160和命令队列170作为仿真的一部分由HV 190提供给VM。它们不是SMMU 250的实际的事件和命令队列,但从VM 130的视角看仿佛是SMMU 250的实际的事件和命令队列。HV 190控制信息到事件队列160中的写入以及从命令队列170中对信息的读取。在示例中,这个可以被完成的方式如下。
[0096]当事件由物理SMMU写入事件队列210时,HV检测该事件是否与特定VM (例如VM130)有关,并且如果是,则将该事件写入该VM 130的事件队列160。这可以是直接的和文字的副本,或可以涉及将SMMU事件标识符映射到与VM有关的另一事件标识符的转换过程。类似地,针对VM的命令队列170,如果HV检测到命令被写入VM的命令队列,则HV将该命令写入SMMU的命令队列220。这些过程与下面的讨论有关。
[0097]页面表180、230被提供用于作为两阶段(VA到IPA、IPA到PA)MMU转换过程的第I阶段或第2阶段(分别地)的一部分被执行的所谓的页面表行进过程(walk process) ο
[0098]配置表240存储与SMMU 250和仿真的SMMU 200的当前配置有关的信息。下面将讨论配置表240的使用的与本技术有关的方面。
[0099]图5是示出了与转换事务(由在VM的控制下操作的设备进行的从VA到PA的转换的请求的实例)有关的操作的示意流程图。
[0100]在步骤300处,SMMU60从各个设备接收事务,例如,响应于来自由客户系统监视的设备的用于访问在该客户系统存储器地址处的系统存储器的事务请求,发起或处理针对客户系统存储器地址到主机系统物理地址的转换的事务。
[0101]在步骤310处,SMMU将事务添加到事务缓冲器,包括(例如)存储与事务有关的标识信息(至少包括标识请求该事务的设备的数据)。来自各个不同设备的事务在它们被接收时被添加到缓冲器,并且它们按处理由SMMU建立的事务的顺序(可以是接收事务的顺序,但可以是另一顺序)被处理。在适当的阶段,在步骤320处,特定的事务被请求转换。在适当的时候,转换响应由SMMU提供。
[0102]步骤330基于转换响应的性质来表示决策点。
[0103]如果转换成功(也就是说VA到PA转换在无任何错误代码或其它问题(下面更详细讨论这类问题的示例)的情况下被完成),则控制被传递到步骤340,在步骤340处,所需的转换被返回从而使得与该PA相对应的所需的存储器访问被执行,并且在步骤350处相应的事务从事务缓冲器中被删除。在这里,术语“被返回”覆盖以下情况,诸如事务在成功的转换后继续向下进行以便形成或提供用于存储器访问的读/写地址。因此术语“被返回”不一定指示事务被向回传递给做出请求的设备,而是指示作为转换过程的成功输出被提供给下一过程。
[0104]在步骤330处,如果事务是它已生成指示转换失败的错误代码的情况,则可选地,指示该状态的事件被写入事件队列210(并且如上所讨论的,从事件队列210被写入相关VM的事件队列160),然后控制被传递到步骤360,在步骤360处,该事务被终止,并且在步骤370处事务从事务缓冲器中被删除。
[0105]步骤330中提供了第三类结果,在于事务可能被视为已“搁置”。搁置的事务是具有错误类型的特定子集的错误类型(使得尽管事务已初始失败,但它可能是可解决的)的事务。因此,关于搁置的事务,控制不传递到步骤360而是替代地传递到步骤380,在步骤380处,事件被写入事件队列210(并且如上所讨论的,从事件队列210被写入相关VM的事件队列160)以促进关于该事务的一些补救动作,并且该事务在事务缓冲器中被标记为“搁置的”。
[0106]如下所描述的,在检测到搁置事务的情况下,采用以下处理过程,包括:向监视请求该事务的设备的客户系统提供指示转换错误状况的信息;从客户系统接收关于该事务的命令;以及通过将针对该事务存储的标识信息至少与由该命令标识的设备的标识相比较来验证接收到的命令以供执行。针对搁置的事务,作为引起可能可由监视请求该事务的设备的客户系统解决的错误状况的事务,下面的步骤可以被执行:(i)存储与该事务有关的标识信息,所述标识信息至少包括标识请求事务的设备的数据;(ii)向监视请求该事务的设备的客户系统提供指示转换错误状况的信息;以及(iii)推迟对搁置事务的继续处理直到后续命令从与搁置事务有关的客户系统被接收到。推迟步骤可以包括:推迟对搁置事务的继续处理直到后续命令从客户系统被接收到,并且例如通过将提供该命令的设备的标识与同该事务有关的存储的标识信息进行比较,命令被验证。
[0107]在步骤390处,与虚拟机130相关联的软件尝试解决引起事务搁置的问题。在步骤400处,如果该尝试解决成功(或至少由尝试解决的软件确定在适用于重试该事务的程度上已成功),则在步骤410处,重试该事务的命令被写入命令队列170(并且如上所讨论的,被写ASMMU 250的命令队列220)。关于该事务,控制然后返回到步骤320以尝试转换。然而,如果在步骤400处对搁置事务的尝试解决被认为失败,则在步骤420处,命令被写入命令队列170(并且被写入命令队列220)以终止事务并且控制传递到步骤360。
[0108]如上所指出的,在图4中,VM和HV二者都具有各自的事件队列和命令队列。消息被传送从而使得它们按照VM和HV中正确的一个来动作的方式在上面简要地被讨论并且将在下面更详细地被讨论。
[0109]图6和图7示意性地表示事务缓冲器的变型500(图6)、510(图7)。
[0110]在每种情况下,事务520(表示设备40、50对VA的转换的请求或需求)由HV的SMMU仿真器200接收并且被存储在事务缓冲器中。从设备接收到的每个事务至少包括转换被请求所针对的VA ο对事务缓冲器中的事务的存储与图5中的步骤310相对应。
[0111]如上面所提到的,每个设备40、50具有相关联的“流ID”,“流ID”在至少一些示例中对该特定设备是唯一的(或至少在被连接到系统的一群设备中是唯一的)。在本示例中流ID与设备相关联,但是在其它示例中流ID可以与VM相关联。流ID和设备之间的映射可以由HV维护为流表。(映射可以被永久建立,因此避免需要流表,但这将是相当不灵活的布置)。
[0112]在图6中,事务520被存储在事务缓冲器中,从而使得每个存储的事务可以被单独访问,并且使得每个存储的事务将事务从其中被接收的设备的流ID与它相关联(例如,作为与该事务有关的存储的数据的一部分)。图6中还示意性示出了两种类型的数据流,在失败事务或搁置事务的情况下,与该事务有关的数据可以被写入事件队列210,并且在一些情况(例如,与图5的步骤410、420相对应的那些情况)下,与该事务有关的数据可以被写入命令队列220以便对该事务的执行产生影响。
[0113]图7中示出了替代布置,其中事务缓冲器510在物理上或逻辑上被划分,从而使得从每个设备接收到的事务被存储在事务缓冲器的各自单独地可寻址区域中。在该实例中,可以避免存储对流ID的明确记录的需要,但是流ID与对应于每个事务的记录的关联被维持。
[0114]图8是覆盖图5中所示的从步骤330的操作的部分处(即不涉及成功事务的部分)开始的一些过程的示意流程图。
[0115]在步骤600处,转换错误被检测到。如上面所讨论的,转换错误可以是被分类为失败并且使得控制传递到图5中的步骤360的“致命的”转换错误。或者转换错误可以被分类为“搁置”。如上面所提到的,搁置事务是可能可解决的事务,但就针对这样的状态的具体测试而言,在步骤610处,失败事务的性质被与用于定义事务是否是搁置的准则进行比较。如果事务满足针对搁置的准则,则控制传递到步骤620。如果未满足,则控制传递到步骤635,步骤635示意性表示由图5中的步骤360、370指示的路径。
[0116]事务失败可能存在各种原因。这些原因中只有一些原因是可能可解决的并且因此适用于事务“搁置”状态。其它类型的事务失败可能直接导致失败通知(步骤635)而不是搁置处理。因此,步骤610中所用的准则可以是与事务搁置相关联的错误类型的集合的子集。这样的子集的示例包括:
[0117]1.地址大小故障
[0118]i1.访问故障
[0119]ii1.转换故障
[0120]iv.许可故障
[0121]如果检测到的故障是在故障的子集(例如上面所列出的子集)内,则在步骤610处转换被视为“搁置的”。如果检测到的故障是不在故障的子集中的故障,则在步骤610处转换被视为“失败的”。
[0122]因此这提供了针对转换错误状况从一组或两个或多个错误类型中检测错误类型的示例;针对错误类型的第一子集,终止事务;并且针对除错误类型的第一子集中的那些错误类型之外的错误类型,执行搁置事务处理过程。
[0123]在步骤620处,事件由SMMU写入事件队列210,并且HV检测到新写入的事件的存在。然后,在步骤630处,HV将该事件映射到相应的VM事件,并且将来自事件队列210的事件写入以形成VM 130的事件队列160中的相应事件。映射的原因是使得对客户系统来说好像客户系统直接与硬件连接而不是经由HV连接。
[0124]注意,在某些情况下,HV190实际上可以未将特定事件(与搁置事务有关)写入VM130的事件队列160。例如,如果当前故障是HV可以(并且应该)解决的故障(例如,仅与第2阶段转换相关联的一些类型的故障,并且来自由VM 130监视的设备的请求对这些类型的故障无影响),则HV本身可以解决故障。尽管在HV处理这样的故障时这样的故障可能被标记为搁置的,但是没必要涉及VM 130或后续验证(参见下文)与故障的解决有关的命令。然而,本说明书的剩余内容将涉及被通知给VM 130以供可能的解决的故障。
[0125]VM 130的事件队列160中的事件促进VM 130在关于事务的问题上采取某种补救动作。这在图8中由步骤632表示,并且在步骤634处,VM 130将命令写入VM 130的命令队列170。注意,步骤632、634是为了解释清楚的目的而示出的,但是(相比于图8的剩余内容)其是在VM 130处被执行而不是由HV 190或SMMU 250执行的步骤。
[0126]就针对HV 190的控制流而言,控制从步骤630传递到步骤640,在步骤640处,HV在VM命令队列170中检测到命令的存在,并且在步骤650处,HV和SMMU对命令进行验证。验证过程将在下面进一步讨论。针对成功验证的命令,在步骤660处,HV将该命令映射到相应的SMMU命令,并且将它写入SMMU命令队列220AMMU 250在命令队列220中检测到命令的存在并且执行该命令。
[0127]步骤650、660、670之间的交互可以根据实现方式而改变。例如,HV可以在将命令写入SMMU命令队列220之前验证命令,从而使得只有被验证的命令被写入命令队列220。替代地,命令可以被写入SMMU命令队列220但是SMMU本身阻止执行命令直到HV 190和SMMU已验证命令用于执行。无论哪种情况,结果是仅在步骤660处已被验证的那些命令由SMMU 250执行。
[0128]图9到图11是表示上面所示的过程的特定部分的流程图。
[0129]在图9中,对事务缓冲器500、510中的事务的初始存储(指图5的步骤310)包括:将事务存储在事务缓冲器500、510中(在步骤700处),并且在步骤710处存储或保留相对于该事务的流ID。如上面所讨论的,流ID可以被明确存储为与该事务相关联的事务缓冲器中的条目的一部分,或可以明确通过选择该事务被存储在该事务缓冲器的哪一部分来被存储。
[0130]图10涉及搁置事务的情况下图5的步骤380。所谓的“搁置标签”(STAG)从事务缓冲器500、510中存储的数据中被创建或被读取。在事务缓冲器510的一些实现方式的情况中,已存储于事务缓冲器(或实际上缓冲器中的事务的位置)中的数据可以与作为STAG所要求的数据相对应。在其它实现方式中,STAG从被存储在事务缓冲器中的数据中得到。下面将给出STAG的示例。然后,在步骤730处,至少最初发布该事务的设备的流ID和STAG作为与该搁置事务有关的事件的一部分被写入事件队列210。
[0131]STAG可以提供与事务有关的各种类型的数据。基本要求是STAG允许单独的事务(独立地或与流ID—起)位于事务缓冲器中。这提供了标识信息的示例,该标识信息包括标识在SMMU处理的其它事务中的该事务的信息。
[0132]因此,在示例中,STAG可以提供事务标识符,例如计数器或作为事务缓冲器中该事务的条目的一部分被分配给该事务的其它值。分配的值不需要在整个时间段或就系统的操作而言是唯一的,而是仅在事务缓冲器或事务缓冲器的子部分中当前保持的那些事务中是唯一的。当事务从事务缓冲器中被移除(例如,在图5的步骤350或370处),则与该事务相关联的STAG可用于被分配给另一新接收到的事务。在示例布置中,事务标识符可以被存储为事务缓冲器中的每个相应事务条目的一部分,从而使得当SMMU需要定位事务缓冲器中的特定事务时,它可以通过将特定事务的事务标识符与事务缓冲器中存储的事务标识符进行比较来完成。
[0133]在其它示例中,STAG还提供上面讨论的通用类型的事务标识符,但是对事务标识符的存储是隐含的从而使得事务标识符实际上形成定义该事务条目在事务缓冲器中被存储的地址的全部或一部分。即使事务缓冲器中的每个条目占用不止一个字节,这仍然可以适用;事务标识符可以指向(例如)每个这样条目的起点。例如,如果事务缓冲器中的每个条目占用(假设)16字节,则事务标识符可以被用作事务缓冲器中该条目的地址的除四个最低有效位外的全部位,从而使得(例如)相应条目的第一字节的地址是[事务标识符]0000。按这种方式,当SMMU需要定位事务缓冲器中的特定事务时,它可以通过(至少部分地)使用该特定事务的事务标识符来寻址事务缓冲器得以完成。
[0134]因此,如所讨论的,除事务缓冲器中的其它条目以外,STAG的功能将提供允许事务(由这样的标识符标识)位于事务缓冲器中的事务标识符。STAG可以提供其它信息。或者,其它信息可以作为事务缓冲器中由STAG标识的条目的一部分被提供。
[0135]注意,在图7的示例中,事务标识符和流ID的组合标识单独的事务。在图6中,简单的事务标识符原则上可以标识事务缓冲器中的每个单独的事务。或者事务标识符(针对每个流ID单独操作)和流ID的组合可用于标识特定的事务。
[0136]可以与事务缓冲器中的条目相关联的其它信息(不论是否被包括为STAG的一部分)的示例包括以下各项中的一个或多个:
[0137]1.指示事务所源于的设备和/或VM的流ID或另一标识符。在示例实施例中,流ID被用于指示事务所源于的设备;
[0138]i1.事务被请求所针对的VA;
[0139]i i 1.与事务有关的存储器访问的类型(例如,读、写或指令获取)。
[0140]上面提到的步骤730涉及提供HV的事件队列210中的“事件”。“事件”是之后可以例如由与VM 130相关联的软件用于尝试解决引起事务搁置的问题或确定实际上没有任何解决方案是可能的信息的集合。可以作为这样的事件的一部分被提供的数据的示例为如下。仅为了说明的目的,这里假设STAG仅提供上面所讨论的事务标识符功能。
[0141]1.STAG;
[0142]i1.用于产生的设备的流ID;
[0143]ii1.指示的转换故障类型(上面讨论了本示例中引起搁置事务的四种示例类型转换故障-这些转换故障可以通过各自的两位代码在事件数据中标识)的故障代码;
[0144]iv.事务被请求所针对的VA;
[0145]V.存储器访问的类型;以及
[0146]v1.指示故障是否在第I阶段或第2阶段转换处发生的标记。
[0147]对STAG和流ID的配设因此给出了提供标识该事务的信息和标识该请求事务的客户系统(或更具体地,标识设备)的信息的示例。在示例实施例中,标识请求该事务的设备的数据可以包括标识与客户系统(该客户系统发起访问与该事务相关联的系统存储器的请求)相关联的设备的数据。
[0148]将STAG和上面所讨论的一些或更多其它数据提供为被添加到事件队列的事件的一部分提供了生成事务标识符的示例,所述事务标识符数据包括:请求该事务的系统的标识符、在由主机系统处理的其它事务中的该事务的标识符、定义错误类型的数据、与该事务有关的客户系统存储器地址、以及定义由客户系统请求的存储器访问的类型的数据;并且向监视请求该事务的设备的客户系统提供该事务标识符数据。
[0149]这些数据被传递到HV的事件队列210。服将事件写入适当VM130的各自事件队列160(表示与监视请求该事务的设备的客户系统相关联的事件队列)(在上面所述的步骤630处)。在示例布置中,HV通过检测与事件相关联的流ID以及从流表中的设备ID识别相应VM以及识别由VM的HV保持的到设备的映射来检测哪个VM 130是适当的。该两阶段过程提供了执行以下操作示例:将事务标识符数据添加到与主机系统相关联的事件队列;以及将事务标识符数据从与主机系统相关联的事件队列复制到与监视请求该事务的设备的客户系统相关联的事件队列。
[0150]在某些示例实例中,HV仅将事件从事件队列210复制到适当VM130的事件队列160。在其它实例中,HV可以在复制之前修改与事件相关联的数据,从而使得事件数据的经修改的版本被写入适当VM 130的事件队列160。例如,如果布置为VM 130不知道两阶段转换被使用,则HV可以删除指示故障是否在第I阶段或第2阶段转换处发生的标记。在其它示例中,HV可以将故障代码映射到与可以由VM 130解决的事情有关的故障代码的不同集合中的一个。例如,第2阶段转换故障(其中例如IPA尝试访问被禁止的地址)可以作为外部中止记录(例如,页面表行进上的外部中止)被转发到客户VM,外部中止记录告诉客户系统诸如页面表行进之类的转换步骤引起非法的(考虑VM的许可的界限)访问。作为这种类型的技术的另外的示例,HV可以按允许很多设备被HV区分的形式维护流ID(例如,流ID 2991和流ID12920),而VM可以维护更简单的流ID系统,其仅需区分由该VM监视的设备(例如,流ID I和0)。服可以维护流ID的这些版本之间的映射,从而使得与VM有关的流ID的版本在适当的情况下被代入或代出与事件相关联的数据。总之,映射的命令被布置,从而使得客户OS不需要被修改来与HV—起工作(注意,客户OS不知道HV的存在)。颗130尝试解决问题,或替代地确定问题是不可解决的。与产生该事务的设备相关联的软件然后将命令放置在命令队列170上。命令可以包括(例如)至少下面的信息:
[0151]1.STAG
[0152]i1.流ID
[0153]ii1.解决代码,例如指定“重试”或“中止”。注意,“中止”代码可能由VM所进行的尝试的但失败的解决而引起,或可能由VM 130进行的简单的确定问题是不可解决的而引起。
[0154]通常,命令可以包括作为事件通知的一部分被提供的事务标识符数据中的一些或全部。来自客户系统的命令因此可以包括标识该事务的信息和/或标识请求该事务的设备的信息。
[0155]如上面所讨论的,HV和SMMU对命令进行验证并且HV写入命令。该过程可以包括:在与监视请求事务的设备的客户系统相关联的命令队列中检测命令;以及将命令从与监视请求该事务的设备的客户系统相关联的命令队列复制到与SMMU相关联的命令队列。验证过程可以包括:将来自客户系统的命令中的事务标识符数据中请求事务的设备的标识符与存储的标识信息进行比较。验证过程可以包括:如果针对该事务存储的标识信息不与由命令标识的设备相对应,则禁止或阻止命令的执行。下面将更详细描述验证过程。
[0156]图11涉及作为图8的验证步骤650的示例的、管理程序和SMMU的操作。
[0157]总体来看,发出命令的是客户系统或VM(监视发起搁置事务的设备)。作为响应,HV检查正确的VM正在发出命令,也就是说监视命令中指定的设备的VM正在发出命令。SMMU开始或发起它对事情的处理,并且检查命令中指定的设备与初始存储的事务信息中指定的设备或流ID相匹配。
[0158]步骤740与图8的步骤640相对应,在图8的步骤640中,对命令队列170的写入操作被检测。写入命令(事实上是被写入VM命令队列的初始命令)包括STAG并且还明确或隐含地指示提供该命令的设备的流ID。
[0159]在步骤750处,SMMU从该命令检测STAG。SMMU使用STAG访问事务缓冲器,从而使得SMMU识别事务缓冲器中与该STAG相对应的单个事务。如上面所讨论的,这可能涉及在事务缓冲器中搜索具有相同STAG的事务,或可能涉及使用STAG作为访问事务缓冲器的地址(或地址的至少一部分)。
[0160]关于事务缓冲器中保持的每个事务,事务缓冲器存储或以其它方式提供该事务所源于的设备的流ID。
[0161]HV因此检查命令中指定的流ID是由产生该命令的客户系统监视的设备的流ID。SMMU从事务缓冲器500、510中检测与相应事务有关的流ID,并且在步骤760处至少将来自事务缓冲器的流ID与由与该事务有关的命令指定的设备的流ID进行比较。
[0162]如果流ID匹配,则在步骤770(与图8的步骤660相对应)处命令被验证以供执行。
[0163]但是如果不匹配,则命令未被验证并且被忽略或被删除。
[0164]步骤780与上面讨论的步骤660相对应,在步骤660处(在验证的命令的情况下)相应的命令被写入SMMU命令队列220。
[0165]验证测试因此(在这些示例中)包括对流ID的两个版本(一个来自接收的命令,并且一个是存储具有事务缓冲器中的初始条目的版本)的简单的比较,如果产生搁置事务的相同设备由现在尝试重试或中止该事务的客户系统监视,则两个版本应该完全匹配。类似地,与事务信息相关联的流ID应该与由命令指定的设备的流ID相匹配。这些测试可以帮助避免一个客户影响由另一客户产生的事务,作为错误的结果或作为可能的安全问题,使得一个设备尝试欺骗地或以其它方式不适当地影响由另一设备发起的事务。
[0166]在实施例中,验证包括核查产生命令的客户系统正在监视由该命令标识的设备。
[0167]对HV来说无需解码STAG或验证STAGdSTAG因此对HV可以是“不透明的”,从而使得它的准确值或重要性与HV无关(除它标识特定事务的事实外)。对HV来说也无需维护定义事务搁置的顺序的数据。
[0168]注意如上面所讨论的,(a)将命令写入SMMU命令队列以及(b)验证命令以供执行,上面的(a)和(b)过程可以按任一顺序被执行,从而使得例如仅已被验证的命令由HV写入SMMU命令队列220、或被写入SMMU命令队列的命令被阻止执行直到和除非命令已被验证。在示例实施例中,仅被验证的命令被写入SMMU命令队列。
[0169]图12涉及在VM将被关闭的情况下被执行的操作的示意流程图。
[0170]图12的布置可能用于具有搁置故障模型(其中,故障事务可被保持/搁置待之后的软件解决,软件解决利用恢复(重试)或终止(中止)对搁置事务的处理的命令)的SMMU的情况。
[0171 ]在正常操作中,搁置事务通过一个恢复/终止命令来解决。由于搁置事务消耗SMMU资源,事务不应该被置为无限期地搁置否则系统可能锁定。当SMMU被用于向VM分配对设备的控制时,在到达终止该VM和收回资源的时间时,设备可能被期望处于不可预知的状态。在这样的情况下,在示例实施例(例如结合图12所讨论的那些)中,HV可以适当地假设搁置事务可能存在(来自于未被正确恢复的之前的故障),并且这些搁置事务应该全部被清除(例如,被删除或被移除),否则系统可能死锁。
[0172]对于HV来说,选项可以是追踪被记录到软件的所有搁置故障(在将这些故障传送到VM期间)。未解决的搁置的列表将被维护、相对于VM的恢复/终止命令交叉检查以解决搁置。当VM将被终止时,列表应该指示未被确认/单独终止的未解决的搁置,并且HV应该需要在逐个事务的基础上发出单独的恢复/终止命令。该方法的可能的劣势包括在软件上的额外的复杂性和额外的不间断的处理要求。
[0173]示例实施例用与下面讨论的步骤840相对应的命令或过程解决这些问题,与下面讨论的步骤840相对应的命令或过程终止(或使得被设为终止)与给定流ID(设备)有关的所有未解决的搁置(不论它们是否已被记录到软件)并且无需知道关于可能存在哪些单独的搁置的细节。这表示HV无需追踪单独的未解决的搁置,因为它们不需要被单独匹配到单独的终止命令。这可以在VM发起关闭分配的设备(安全/严格隔离路径)后,简化清除。此外,由于流量不能被保证在清除时是静止的,因此HV可以通过将设备配置为停止发出新的事务并且设置任意新到达的事务被立即终止而不是搁置来以与该过程无竞争的方式关闭客户设备流。针对流的搁置事务的设置现在是不变的。管理程序终止搁置事务的全部集合。由于无任何新的事务可以搁置,因此保证无任何搁置将留下。HV指示(一个或多个)设备等待所有未解决的事务终止。注意,终止过程将终止搁置事务,而不论搁置故障是否被报告到软件。
[0174]转向图12,VM可以由于各种原因被关闭。VM本身可以决定关闭它的过程。替代地,VM可以失灵(crash)。在另外的替代方式中,由于VM所采取的一些不适当的动作(例如,尝试违反它的操作特权的操作),HV可以而采取关闭VM的决定。在这些情况中的任意情况下,在本公开中认识到,VM的关闭可能(在缺乏对解决该可能问题的措施的情况下)没有给事务缓冲器500、510中的若干搁置事务留下针对随后要被删除的事务的任何机会。这是因为搁置事务的删除依赖从产生它的VM接收命令,但是在本情况下,特定VM(将需要提供命令以在那些事务上采取进一步的动作)不再存在。
[0175]在步骤800处,HV 190检测VM“状况”。在本文中,如所讨论的,状况可以是VM正在自愿关闭、VM正在通过失灵的方式不自愿地关闭、HV已决定关于该VM关闭VM等等。通常,VM状况是指示VM已至少发起与该客户系统有关的关闭过程(或服从与该客户系统有关的关闭过程)的VM状况。例如,关闭过程可以包括以下各项中的任一项:引起客户系统的关闭的主机系统;在关闭的客户系统;以及遭受操作故障的客户系统。
[0176]—系列步骤然后被执行以关于未决的SMMU事务提供对VM的干净的关闭。在本文中,术语“干净的”用于指示关闭可以在没有无限期地留下未解决的搁置事务的情况下发生。假设讨论中的VM监视一个或多个设备。
[0177]在步骤810处,HV本身关闭(或指示VM关闭)(高达所有的)与该VM相关联的一个或多个设备,从而使得它们无法发出针对存储器转换的任何另外的事务。步骤810提供了在针对客户系统取消任意当前搁置事务之前(针对该客户系统,命令尚未从相应的客户系统接收),执行以下操作的步骤的示例:阻止一个或多个设备发出任何另外的事务。
[0178]然后,在步骤820处,HV将配置表240设置为指示针对与讨论中的一个或多个设备有关的流ID的任意传入的事务将不被存储在事务缓冲器500、510中,而是将被立即终止。步骤810、820可以按任一顺序被执行。步骤820提供了在针对该设备或那些设备取消任意当前搁置事务之前(针对该设备或那些设备,命令尚未从相应的客户系统接收),执行以下操作的示例:将终止规则设置为终止由主机系统从由该客户系统监视的一个或多个设备新接收的任意事务。
[0179]步骤830应用所谓的“同步”操作,该“同步”操作确保通过步骤820被应用到配置表的设置对所有传入的事务起作用。
[0180]然后,在步骤840处,HV将针对讨论中的一个或多个流ID的所有当前搁置事务设置为终止。这可以包括立即终止那些搁置事务或仅将它们设置为在适当的时候终止。这提供了执行以下操作的示例:响应于发起关闭过程,针对由该客户系统监视的一个或多个设备发起任意当前搁置事务的取消(或事实上消除)。如所提到的,该过程由流ID执行,从而使得它提供执行以下操作的示例:针对该设备或那些设备检测任意当前搁置事务,针对该搁置事务,命令尚未由相应的客户系统提供,客户系统已存储与由客户系统监视的一个或多个设备(关闭过程已被发起)相对应的标识信息;以及发起对所有检测到的事务的取消。例如,一个或多个流ID可以与客户(VM)相对应,对应关系由流表提供。
[0181]在步骤850处,HV指示VM和讨论中的(一个或多个)设备等待关于所有未解决事务的响应。步骤850提供响应于关闭过程的发起执行以下操作的示例:指示由客户系统监视的一个或多个设备等待对任意未解决事务的响应。
[0182]因此,在至少某些实施例中,主机系统提供SMMU、事务缓冲器、错误处理逻辑、检测器和取消逻辑。
[0183]在本申请中,词“被配置为...”用于表示具有执行定义的操作的配置表的装置的元件。在该上下文中,“配置”表示硬件或软件的互连的方式或布置。例如,装置可以具有提供定义的操作的专用硬件,或处理器或其它处理设备(例如CPU 20)可以被编程为执行该功能。“被配置为”不隐含为了提供定义的操作装置元件需要以任意方式被改变。
[0184]尽管本技术的说明性实施例已在本文中参照附图进行了详细描述,但是要理解的是本技术不限于那些精确的实施例,并且在不脱离由所附权利要求定义的技术的范围和精神的情况下,本领域技术人员可以在其中产生各种变化、添加和修改。例如,在不脱离本技术的范围的情况下,可以进行对从属权利要求的特征与独立权利要求的特征的各种组合。
【主权项】
1.一种操作主机数据处理系统的方法,所述主机数据处理系统为一个或多个客户数据处理系统提供虚拟操作环境,所述方法包括: 响应于来自由客户系统监视的设备的针对访问在客户系统存储器地址处的系统存储器的事务请求,发起针对所述客户系统存储器地址到主机系统物理地址的转换的事务; 存储与所述事务有关的标识信息,所述标识信息至少包括标识请求所述事务的设备的数据; 检测关于所述事务的转换错误状况:以及 通过以下操作处理检测到的错误状况: (i)向监视请求所述事务的设备的所述客户系统提供指示所述转换错误状况的信息; (ii)从所述客户系统接收关于所述事务的命令,来自所述客户系统的命令包括标识请求所述事务的设备的信息;以及 (iii)通过将针对所述事务的存储的标识信息至少与由所述命令标识的所述设备的标识进行比较,验证接收到的命令以供执行。2.如权利要求1所述的方法,其中,所述标识信息包括:标识在由所述主机系统处理的其它事务中的所述事务的ig息。3.如权利要求1所述的方法,其中,提供步骤包括: 提供标识所述事务的信息和标识请求所述事务的设备的信息。4.如权利要求3所述的方法,其中,来自所述客户系统的命令包括标识所述事务的信息。5.如权利要求1所述的方法,其中,检测步骤包括: 关于所述转换错误状况,从一组或两个或多个错误类型中检测错误类型; 针对错误类型的第一子集,终止所述事务;以及 针对除错误类型的所述第一子集中的错误类型之外的错误类型,执行处理步骤。6.如权利要求1所述的方法,其中,所述提供步骤包括: 生成包括以下各项的事务标识符数据:请求所述事务的设备的标识符、在由所述主机系统处理的其它事务中的所述事务的标识符、定义错误类型的数据、与所述转换有关的客户系统存储器地址、以及定义由所述设备请求的存储器访问的类型的数据;以及 向监视请求所述事务的设备的所述客户系统提供所述事务标识符数据。7.如权利要求6所述的方法,其中,所述提供步骤包括:将所述事务标识符数据添加到与监视请求所述事务的设备的所述客户系统相关联的事件队列。8.如权利要求7所述的方法,其中,所述提供步骤包括: 将所述事务标识符数据添加到与所述主机系统相关联的事件队列;以及 将所述事务标识符数据从与所述主机系统相关联的事件队列复制到与监视请求所述事务的设备的所述客户系统相关联的事件队列。9.如权利要求8所述的方法,其中,复制步骤包括:在将所述事务标识符数据复制到与监视请求所述事务的设备的所述客户系统相关联的事件队列之前,修改定义错误类型的数据。10.如权利要求8所述的方法,其中,复制步骤包括:在将所述事务标识符数据复制到与监视请求所述事务的设备的所述客户系统相关联的事件队列之前,修改标识请求所述事务的设备的数据。11.如权利要求7所述的方法,其中,来自所述客户系统的命令包括所述事务标识符数据。12.如权利要求11所述的方法,其中,接收步骤包括: 在与监视请求所述事务的设备的所述客户系统相关联的命令队列中检测由所述客户系统发出的命令;以及 将所述命令从与监视请求所述事务的设备的所述客户系统相关联的命令队列复制到与所述主机系统相关联的命令队列。13.如权利要求1所述的方法,其中,验证步骤包括:核查产生所述命令的所述客户系统正在监视由所述命令标识的所述设备。14.如权利要求1所述的方法,其中,验证步骤包括:如果针对所述事务的存储的标识信息不与由所述命令标识的所述设备相对应,则阻止对所述命令的执行。15.—种主机数据处理系统,所述主机数据处理系统被配置为针对一个或多个客户数据处理系统提供虚拟操作环境,所述主机数据处理系统包括: 存储器管理单元,所述存储器管理单元被配置为:响应于来自由客户系统监视的设备的针对访问在客户系统存储器地址处的系统存储器的事务请求,发起针对所述客户系统存储器地址到主机系统物理地址的转换的事务; 事务缓冲器,所述事务缓冲器被配置为:存储与所述事务有关的标识信息,所述标识信息至少包括标识请求所述事务的设备的数据; 错误检测器,所述错误检测器被配置为检测关于所述事务的转换错误状况:以及 错误处理逻辑,所述错误处理逻辑被配置为通过以下操作处理检测到的错误状况: (i)向监视请求所述事务的设备的所述客户系统提供指示所述转换错误状况的信息; (ii)从所述客户系统接收关于所述事务的命令,来自所述客户系统的命令包括标识请求所述事务的设备的信息;以及 (iii)通过将针对所述事务的存储的标识信息至少与由所述命令标识的所述设备的标识进行比较,验证接收到的命令以供执行。16.—种主机数据处理系统,所述主机数据处理系统可操作于针对一个或多个客户数据处理系统提供虚拟操作环境,所述主机数据处理系统包括: 用于响应于来自由客户系统监视的设备的针对访问在客户系统存储器地址处的系统存储器的事务请求,发起针对所述客户系统存储器地址到主机系统物理地址的转换的事务的装置; 用于存储与所述事务有关的标识信息的装置,所述标识信息至少包括标识请求所述事务的设备的数据; 用于检测关于所述事务的转换错误状况的装置:以及 用于向监视请求所述事务的设备的所述客户系统提供指示所述转换错误状况的信息的装置; 用于从所述客户系统接收关于所述事务的命令的装置,来自所述客户系统的命令包括标识请求所述事务的设备的信息;以及 用于通过将针对所述事务的存储的标识信息至少与由所述命令标识的所述设备的标 识进行比较来验证接收到的命令以供执行的装置。
【文档编号】G06F12/1072GK105938460SQ201610102816
【公开日】2016年9月14日
【申请日】2016年2月24日
【发明人】马修·吕西安·伊万斯, 斯坦尼斯洛·泽尔尼亚斯基
【申请人】Arm 有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1