《处理异构资源的地址转换和异常.pdf》由会员分享,可在线阅读,更多相关《处理异构资源的地址转换和异常.pdf(19页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 102981800 A(43)申请公布日 2013.03.20CN102981800A*CN102981800A*(21)申请号 201210375247.2(22)申请日 2007.06.2711/477,643 2006.06.29 US200780019982.7 2007.06.27G06F 9/30(2006.01)G06F 9/38(2006.01)G06F 12/10(2006.01)(71)申请人英特尔公司地址美国加利福尼亚(72)发明人 H王 江洪 J舍恩P卡约蒂亚 M乔伊N比斯瓦尔(74)专利代理机构永新专利商标代理有限公司 72002代理人刘瑜 。
2、王英(54) 发明名称处理异构资源的地址转换和异常(57) 摘要在一个实施例中,本发明包括一种用于向耦合到加速器上的第一指令定序器传送要求对在所述加速器上出现的故障或异常进行处理的请求的方法。所述加速器可以是相对于所述第一指令定序器异构的资源,例如,具有不同的指令集架构。响应于所述请求,可以在所述第一指令定序器中处理所述故障或异常。还描述并要求了其它实施例。(30)优先权数据(62)分案原申请数据(51)Int.Cl.权利要求书2页 说明书10页 附图6页(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书 2 页 说明书 10 页 附图 6 页1/2页21.一种用于处理故障或异。
3、常的方法,包括:向处理器的第一线程执行资源传送要求处理在所述处理器的加速器上出现的所述故障或异常的请求,其中所述加速器包括相对于所述第一线程执行资源异构的资源;以及响应于所述请求,在所述第一线程执行资源中根据所述第一线程执行资源的存储器换页机制来处理所述故障或异常以得到地址转换,并且根据所述加速器的存储器换页机制来在重映射器中转换所述地址转换,以使所述第一线程执行资源和所述加速器能够共享公共的虚拟地址空间。2.根据权利要求1所述的方法,其中,传送所述请求包括:通过线程执行资源间协议发送所述请求,并且没有操作系统的支持,其中所述加速器对所述操作系统是透明的。3.根据权利要求1所述的方法,还包括:。
4、通过与所述第一线程执行资源的第一指令集架构相关的、基于操作系统的处理机来处理所述故障或异常,其中所述加速器包括具有第二指令集架构的资源。4.根据权利要求1所述的方法,还包括:把所述处理的结果转换为所述加速器的格式。5.根据权利要求1所述的方法,还包括:通过与所述第一线程执行资源相关的、基于操作系统的处理机来处理所述异常以得到所述第一线程执行资源的格式的结果,并且把所述结果转换为所述加速器的格式。6.根据权利要求1所述的方法,还包括:在所述加速器上执行处理任务,并且将结果存储在所述第一线程执行资源能够访问的共享存储器中,而不涉及操作系统。7.根据权利要求1所述的方法,还包括:通过开发补丁代码,在。
5、所述第一线程执行资源中处理所述异常,其中所述开发补丁代码用于对处于开发中的所述加速器的硬件的功能进行仿真。8.一种能够处理地址转换故障的装置,包括:用于执行指令的第一线程执行资源;耦合到所述第一线程执行资源的第二线程执行资源,所述第二线程执行资源包括相对于所述第一线程执行资源异构的资源,其中,当所述第二线程执行资源引发所述地址转换故障时,所述第二线程执行资源向所述第一线程执行资源发送要求进行代理执行的请求;以及重映射器,用于把在所述第一线程执行资源中生成的地址转换映射为所述第二线程执行资源的地址转换格式,所述地址转换格式是所述第二线程执行资源的本地格式。9.根据权利要求8所述的装置,其中,所述。
6、装置包括具有单基底的处理器,所述单基底包括所述第一线程执行资源和所述第二线程执行资源。10.根据权利要求8所述的装置,其中,所述第一线程执行资源包括具有第一指令集架构的处理引擎,并且所述第二线程执行资源包括具有第二指令集架构的处理引擎。11.根据权利要求10所述的装置,其中,所述第一线程执行资源包括与所述第一指令集架构相关的第一地址转换机制,并且所述第二线程执行资源包括与所述第二指令集架构相关的第二地址转换机制。12.根据权利要求8所述的装置,其中,所述第一线程执行资源用于响应所述第二线程执行资源中的、与所述第一线程执行资源的非本地数据类型相关的异常而执行异常处理机。权 利 要 求 书CN 1。
7、02981800 A2/2页313.根据权利要求12所述的装置,其中,所述第二线程执行资源包括变换器,所述变换器用于把所述非本地数据类型的异常变换为所述第一线程执行资源的本地数据类型。14.根据权利要求8所述的装置,其中,所述第二线程执行资源用于发送带有聚集的故障地址的代理执行请求,所述聚集的故障地址对应于在所述第二线程执行资源的转换缓冲器中不可用的所述第二线程执行资源的本地数据类型的多个地址。15.根据权利要求8所述的装置,还包括:耦合到所述第一线程执行资源的第一转换缓冲器,和耦合到所述第二线程执行资源的第二转换缓冲器。16.根据权利要求15所述的装置,其中,所述第一转换缓冲器用于存储响应于。
8、所述地址转换故障而从页表接收到的地址转换,并且用于向耦合到所述第一转换缓冲器和所述第二转换缓冲器的重映射器提供所述地址转换。17.根据权利要求16所述的装置,其中,所述重映射器用于把所述地址转换从所述第一线程执行资源的格式映射为所述第二线程执行资源的格式。18.根据权利要求8所述的装置,其中,所述第一线程执行资源用于根据所述第一线程执行资源的换页机制得到地址转换,并且根据所述第二线程执行资源的换页机制来转换所述地址转换。19.一种能够处理转换故障状况或异常状况的系统,包括:第一线程执行资源,用于执行第一操作系统的指令,所述第一线程执行资源包括第一地址转换处理机和第一异常处理机;耦合到所述第一线。
9、程执行资源的第二线程执行资源,所述第二线程执行资源包括相对于所述第一线程执行资源异构的计算资源,其中所述第二线程执行资源用于请求所述第一线程执行资源来处理在所述第二线程执行资源上出现的所述转换故障状况或异常状况;重映射器,用于把响应于所述转换故障状况而在所述第一线程执行资源中生成的地址转换映射为所述第二线程执行资源的地址转换格式,所述地址转换格式是所述第二线程执行资源的本地格式;以及耦合到所述第一线程执行资源和所述第二线程执行资源的动态随机存取存储器。20.根据权利要求19所述的系统,其中,所述第一线程执行资源和所述第二线程执行资源包括处理器的异构资源。21.根据权利要求20所述的系统,其中,。
10、所述动态随机存取存储器包括用于所述第一线程执行资源和所述第二线程执行资源的共享虚拟存储器,其中,所述第一线程执行资源包括中央处理器而所述第二线程执行资源包括图形协处理器。22.根据权利要求19所述的系统,其中,所述第二线程执行资源用于把具有第二数据类型的数据转换为所述第一线程执行资源的第一数据类型,其中在所述第二数据类型上出现了所述异常状况。权 利 要 求 书CN 102981800 A1/10页4处理异构资源的地址转换和异常0001 本申请是申请日为2007年6月27日、申请号为200780019982.7的同名专利申请的分案申请。技术领域0002 本发明的实施例涉及基于处理器的系统,并且尤。
11、其涉及包括具有不同指令集架构的多个定序器(sequencer)的系统。背景技术0003 计算机系统包括各种用于处理和传送数据的组件。典型的系统包括一个或多个处理器(其中每个处理器可以包括多个内核)、以及关联的存储器、输入/输出(I/O)设备和其它这类组件。为了提高计算效率,可以通过一个或更多专用组件(这里一般将其称为辅助单元)来提供计算加速器、专用I/O设备以及其它这类专用单元。然而,使用这类辅助单元可能出现低效率的情况,这是因为在典型的其中实现了通用处理器和行业标准操作系统(OS)环境的计算环境下,软件栈会阻碍高效利用。也就是说,在典型的OS环境下,通过不同的特权级隔离了系统软件和应用软件,。
12、并且在这些不同特权级中的每一个上的操作要经受OS上下文保存和恢复操作以及其它限制等等。此外,辅助单元典型地缺乏处理异常和故障处理的能力,所述异常和故障处理使得能够对执行期间的某些事件进行健壮的处理。0004 计算加速器的经典例子是协处理器,例如像用于早期32位英特尔架构(IA)处理器的所谓的x87浮点协处理器这样的数学协处理器。典型地,这种协处理器通过协处理器接口被耦合到主处理器(例如,中央处理单元(CPU)上,该协处理器接口与主处理器同具有一种指令集架构(ISA)。最近,在系统中出现具有不同指令集架构(ISA)的分立资源。0005 在运行着针对单一ISA而写的单映像OS(例如,行业标准OS)。
13、的系统中出现具有不同ISA的多个资源的情况下,典型地,对于处理在具有异构ISA的资源上执行代码期间引发的异常或故障,仅提供有限的支持或不提供支持。即使存在这种处理,不同ISA的可能完全不同的架构机制也可能会要求对该OS进行大量重写。因此,异构资源通常并不提供对异常和故障处理的支持,这降低了异构资源对各种任务的适用性。附图说明0006 图1是根据本发明的一个实施例的处理器的框图。0007 图2是根据本发明的一个实施例的系统的一部分的框图。0008 图3是根据本发明的一个实施例的用于处理异构资源中的故障状况的方法的流程图。0009 图4是根据本发明的另一个实施例的系统的一部分的框图。0010 图5。
14、是根据本发明的一个实施例的用于处理异构资源中的异常的方法的流程图。0011 图6示出根据本发明的一个实施例的系统的框图。说 明 书CN 102981800 A2/10页5具体实施方式0012 在各种实施例中,提供了各种机制来支持基于指令集架构(ISA)的异常处理和地址转换机制。如这里所用到的,“定序器”是独特的线程执行资源,并且可以是任何能够执行线程的物理或逻辑单元。定序器可以是逻辑线程单元或物理线程单元,并且可以包括下一指令指针逻辑以便确定针对给定线程将要执行的下一条指令。0013 在许多实现中,系统可以包括具有第一ISA的第一定序器和具有异构性质的第二计算资源(其可以是定序器或非定序器)。。
15、也就是说,第二资源可以是具有不同ISA的定序器或可以是诸如固定功能单元(FFU)、专用集成电路(ASIC)或其它预编程逻辑这样的非定序器资源。在各种实施例中,在这里被称为“外框架(exo-skeleton)”的媒介或接口可以提供这种异构资源之间的通信。在不同的实施例中,外框架可以采用包括软件、硬件和/或固件在内的各种形式。在一些实施例中,外框架可以被实现在紧密耦合到异构资源的有限状态机(FSM)中。当然,可以允许其它实现。0014 现在参考图1,示出的是根据本发明的一个实施例的处理器的框图。如图1所示,处理器10包括多种不同的资源。在不同的实现中,处理器10可以是单核处理器或多核处理器。这样的。
16、处理器可以被实现在不同类型的系统中,包括单芯片多处理器(CMP)系统、同时多线程(SMT)系统或基于事件切换的多线程(SoeMT)系统以及其它这类系统等等。0015 如图1所示,处理器10包括多个定序器20a、20b、20c和20d(即,定序器1-4,统称为定序器20)。尽管在图1的实施例中示出四个这种定序器,但是可以理解本发明的范围并不受此限制。如图1所示,处理器10中的定序器20实施了ISA 30,在一个实施例中,所述ISA 30可以是英特尔架构(IA-32)指令集架构和/或其64位扩展(也被称为英特尔64位扩展存储器技术(EM64T)。处理器10还具有其它资源,包括第一资源(即资源1)5。
17、0a、第二资源(即资源2)50b和第三资源50c(即资源3)(统称为资源50)。这些资源可以是并未实施处理器10的ISA 30的异构资源。尽管在图1示出的实施例中包括三个这种资源,但是在不同的实施例中可以允许更多或更少这种资源。0016 每个资源50包括定序器(其可以实现与ISA30不同的ISA)、非定序器处理引擎或其它专用功能逻辑,这里统称为加速器。在不同的实施例中,不同类型的资源可以被实现为加速器,包括图形处理单元(GPU)(典型地,定序器)、加密单元(典型地,非定序器)、物理处理单元(PPU)(典型地,非定序器)、固定功能单元(FFU)(典型地,非定序器)等等。如图1所示,每个资源50可。
18、以包括加速器52(统称),并且更具体地,包括加速器52a、52b和52c,每个加速器与资源50a-50c其中之一相关联。这里,加速器52也被称为辅助单元。因为资源50a-50c可以具有另一种ISA或者甚至可以是非定序器,以及同样能够是相对于定序器20异构的资源,因此可以使用接口来提供与这样的资源进行通信的能力。具体地,如图1所示,外框架54a、54b和54c(统称外框架54)可以与资源50其中之一相关联。因此,每个资源50可以被称为“外定序器”,指示出外框架54与其相关加速器52之间的紧密耦合。这样,这些异构资源可以与异构的定序器资源一起被集成到一个支持定序器间通信的统一ISA框架中。0017。
19、 然而在其它实施例中,资源50可以是相对于定序器20异构的定序器资源,并且可以是对称内核,使得它们包括与定序器20相同或相似的架构。这样,可以实现并发纤程(fiber)并且能够增强遗留OS的可扩展性。此外,在其它实现中,资源50可以是非对称内说 明 书CN 102981800 A3/10页6核。换句话说,这些资源可以与定序器20具有相同的ISA,但是具有不同的微架构。这种实施例可以帮助管理非对称性并提供与遗留OS的兼容性。0018 对于实现了异构资源的实施例,外框架可以提供这样的效应:这些异构资源具有公共的ISA,以便达到定序器间通信的最小顺应性。于是,在各种实施例中,异构资源能够用作用户级功。
20、能单元资源(而不是系统级设备)。0019 尽管在图1的实施例中示出特定资源,但是可以理解,处理器10可以是能够支持多个硬件线程上下文(在不失明晰的情况下,其也被称作“线程上下文”,注意这与软件线程上下文是不同的)的单个物理处理器,每一个硬件线程上下文包括一组架构状态。在一些实施例中,某些资源对这些线程上下文是可见的,而其它资源是不可见的。因此,如图1所示,定序器20中的每一个可以对应一个线程上下文。当使得这些线程上下文中的至少一些(例如,n个中的m个,mn)对操作系统可见时,这些线程上下文有时被称为逻辑处理器或受OS管理的定序器(OMS)。每个线程上下文分别维护一组架构状态AS1-ASn。所述。
21、架构状态包括,例如,数据寄存器、段寄存器、控制寄存器、调试寄存器和大部分模式相关寄存器。线程上下文可以共享物理处理器的大部分微架构资源,例如高速缓存、执行单元、分支预测器、控制逻辑和总线。尽管可以共享这样的功能部件,但是处理器10的每个线程上下文能够独立地生成下一指令地址(并且执行例如从指令高速缓存、指令执行高速缓存或追踪高速缓存中进行取指(fetch)。与一个线程上下文对应的每一个定序器20与相应的架构状态40(统称)相关联。更具体地,例如,架构状态(AS1)40a可以与定序器20a相关联,AS240b可以与定序器20b相关联,AS340c可以与定序器20c相关联,并且AS440d可以与定序。
22、器20d相关联。0020 使用处理器10或类似的这种处理器的时候,可以发生基于ISA的定序器间通信而不涉及OS。例如,在共享存储器多处理范型中,应用程序员可以将一个软件程序(即,应用程序或进程)分成多个并发运行的任务,以便体现并行性。同一个软件程序(“进程”)的所有线程共享存储器地址空间的公共逻辑视图。然而,OS线程可以与多个可能不是由操作系统生成、调度或管理的用户级线程相关联。为了区别于OS线程,这种用户级线程可以被称为“shred”。这些shred可能对OS调度器是不可见的,因此OS并不管理相关的OS线程何时或如何调度shred在指定的逻辑定序器地址上运行。通常OS线程自己负责调度何时及如。
23、何运行它的其中一个shred。0021 在架构上对于基于ISA的定序器间通信的支持可以包括对ISA的扩展,从而提供一个或更多指令以允许用户直接地操纵定序器之间的控制和状态转移。这种指令可以包括这样的指令:或者令第一定序器向另一个(即,第二)定序器发送信号(这里,一条指令被称为shred转移或“SXFR”指令,其可以发送被称为外出情景(egress scenario)的外出控制信息,并且也可以携带数据有效载荷),或者设置第二定序器来监视这种信号(这里被称作shred监视器或“SEMONITOR”指令)以及在接收到该信号时(被称为进入情景(ingress scenario)异步地把控制转移到处理机。
24、(handler)。0022 在其中加速器52具有异构ISA或者是非定序器的实施例中,可以实现(用硬件、固件或者甚至用软件,取决于具体实施例)对应的外框架54(可以是有限状态机(FSM)或虚拟化层),使得加速器52能够参与到定序器间通信中。这种基于ISA的定序器间通信在到加速器52的进入方向提供了一种信令协议,使得其可以监视并响应来自另一个定序器或外说 明 书CN 102981800 A4/10页7定序器的、用SXFR发送的进入情景,所述进入情景包括针对外定序器的架构状态的GET和/或SET指令。此外,信令协议包括从加速器52用外出情景来通知相应的定序器20的外出通信,所述外出情景包括用于异常。
25、处理的指示,例如,针对诸如页故障这样的事件的代理执行请求。0023 为了降低开销,定序器20与加速器52之间通过定序器感知(sequencer-aware)指令进行的基于ISA的定序器间通信可以不需要涉及OS。这样,能够避免使用OS的设备驱动程序栈,而是能够实现定序器20和加速器52之间的直接通信。0024 在各种实施例中,可以在诸如集成具有异构ISA的受应用程序管理的外定序器的CMP系统这样的系统中实现地址转换重映射(ATR)和协作异常处理(CEH),在所述外定序器上执行程序时可能引发页故障或异常。使用本发明的实施例,OMS和在OMS上运行的OS能够很好地处理在受应用程序管理的外定序器上遇到。
26、的页故障和异常。例如,为了简便包含具有不同ISA的外定序器的CMP的程序设计(尤其在单映像OS环境下),在OMS和外定序器之间可以支持虚拟共享存储器,即使当外定序器可能与OMS具有不同的地址转换硬件机制时也是如此。当在外定序器上运行的代码引发关于虚拟地址到物理地址转换的架构或微架构上的故障状况时,实施例可以由在OMS上运行的OS来处理该故障状况(架构上的或微架构上的)。0025 类似地,可以对不同的定序器中的不同的数据类型执行操作。作为一个例子,各种定序器可以以并行方式(例如,以单指令多数据(SIMD)或多指令多数据(MIMD)方式)执行,使得可以并发地使用每个资源以提高性能。当在外定序器上出。
27、现异常时,所述异常可以被避开而转给OMS。然而,不同的数据类型会使这很困难。因此,在一些实施例中,外定序器可以包括用于辅助把该外定序器的本地数据类型变换为更适合OMS的格式的硬件。例如,外框架可以和外定序器相耦合,以处理这种数据变换并且支持定序器间通信。作为一个例子,外定序器的SIMD数据类型能够被变换为标量值,用于在OMS上进行异常处理。0026 现在参考图2,示出的是根据本发明的一个实施例的系统的一部分的框图。如图2所示,系统100包括处理器110,其可以是具有多个定序器的CMP。具体地,图2的实施例包括四个定序器120a-120d(统称定序器120)。尽管为了便于说明,示出了四个这种定序。
28、器,但是可以理解本发明的范围在这点上并不限于此。在许多实现中,定序器120a-120d中的一个或多个可以具有异构ISA或者是相对于系统100的本地ISA115异构的其它资源。为了便于说明,第一定序器120a可以是具有本地ISA的定序器。例如,在一个实施例中,第一定序器120a可以是IA-32CPU,尽管本发明的范围在这点上并不限于此。相应地,第一定序器120a作为OMS。一个或更多其它定序器120也可以是基于ISA-32的、实现本地ISA操作的定序器。然而,至少其中一个定序器120,例如,第三定序器120c,可以是异构定序器。为了便于说明,第三定序器120c可以是异构资源,例如,图形处理单元(。
29、GPU)或其它这种具有不同(非本地)ISA的异构引擎。这样,第三定序器120c作为受应用管理的外定序器。作为一个例子,第一定序器120a可以运行像WindowsTM或LinuxTM这样的基于IS-32的单映像OS,并且其通过定序器间信令机制与第三定序器120c进行互操作,例如,经由基于SXFR的定序器间信令机制。为了支持基于ISA的定序器间通信,第三定序器120c可以包括外框架。同时,这里,外框架和其基础的第三定序器120c一起也被称为外定序器。0027 在各种实施例中,可以实现地址转换重映射(ATR),以便通过代理执行页故障处说 明 书CN 102981800 A5/10页8理,支持在多个定。
30、序器之间的共享虚拟存储器。更具体地,可以使用第三定序器120c和第一定序器120a之间的定序器间通信机制,来在第一定序器120a中用代理执行的方式执行这种页故障处理。因此,当在第三定序器120c上运行的代码引发例如关于虚拟地址到物理地址的转换的架构故障(例如,页故障)或微架构故障状况(例如,TLB缺失)时,可以通过第一定序器120a上的地址转换机制处理第三定序器120c上的故障状况,就像被本地OS实现一样。因此,如图2所示,在遇到这种故障状况时,第三定序器120c向第一定序器120a传送一条消息,例如,经由SXFR消息。接着,第一定序器120a可以执行故障处理过程(可以是基于硬件、软件或固件的。
31、或其组合),以便确定故障地址是否存在于耦合到处理器110上的第一旁路转换缓冲(TLB)130中。如果没有存在,则启动翻页(page walk)机制,以使得从页表135获得所请求的页并将其存储在第一TLB130中。注意,从第一TLB130到页表135的翻页机制是根据OS支持的翻页机制实现的,在包括常规处理器TLB设计的硬件和包括虚拟存储器系统的OS软件中支持所述OS支持的翻页机制。因此,根据地址转换重映射机制(重映射器)145,这种用定序器120a的格式表示的虚拟地址到物理地址的转换(例如,页表项)被重映射为第三定序器120c的本地格式。然后,能够向耦合到第三定序器120c上的第二TLB140提。
32、供该被重映射的页转换。接着,现在第三外定序器120c能够访问由第一定序器120a提供的同一个物理页。实质上,定序器120a和120c都能够共享公共的虚拟地址空间而不管这两个定序器之间的异构性。重映射器145可以被实现为硬件、软件或固件、或其组合。此外,如图2的虚线框所示,重映射器145的功能可以被实现为例如第一定序器120a或第三定序器120c的一部分。这样,以本地模式处理了故障状况,并且向第三定序器120c提供被请求的信息,使得在OMS(例如,第一定序器120a)上运行的OS可以很好地处理异构资源(例如,第三定序器120c)的故障状况。0028 还要注意,在图2的实施例中,存在着存储器分级结。
33、构的附加层。具体地,如图2所示,高速缓存150被耦合到第一TLB 130上,并且对应的高速缓存160被耦合到第二TLB 140上。而高速缓存150和160又被耦合到存储器170上,在一个实施例中,存储器170可以是动态随机存取存储器(DRAM)。尽管在图2的实施例中,示出这种特定的实现,但是可以理解,本发明的范围在这点上并不限于此。0029 在各种实现中,可以实现执行故障处理的不同方式。现在参考图3,示出的是根据本发明的一个实施例的用于处理异构资源中的故障状况的方法的流程图。如图3所示,方法200可以开始于确定在外定序器上是否遇到转换故障(菱形210)。这种转换故障可以对应于关于虚拟地址到物理。
34、地址的转换的架构或微架构故障状况。在遇到这种故障后,外定序器可以挂起其代码执行并且记录关于该故障的信息(块220)。更具体地,外定序器可以记录故障指令状况,包括故障虚拟地址。这种故障地址可以对应在外定序器的转换缓冲器(例如TLB)中不可用的一个或更多虚拟地址。如果没有遇到这种故障,则控制传到块215,在这里,会继续在该外定序器上执行指令,则控制循环回菱形210。0030 继续参考图3,控制从块220传到块230。这里,可以用信号向OMS通知该故障(块230)。更具体地,外定序器可以向OMS发信号以向其通知该故障。在一个实施例中,可以发送代理执行请求信号。发送该信号时可以带有关于该故障的消息信息。
35、。这种信息可以包括故障类型的标识和故障地址。在一些实施例中,在该消息中关于该故障的信息可以提供指向可由外定序器和OMS访问的诸如寄存器或物理存储器这样的存储位置的指针,在所述存说 明 书CN 102981800 A6/10页9储位置中存储着该故障细节的描述符。于是,OMS在其代理执行期间能够取回这种信息,并且反过来,代理执行的结果能够被存储在那里以便随后外定序器取回该结果。在一些实施例中,引发该故障指令的外定序器的用于承载地址的本地数据类型可能拥有多个遇到故障的地址。例如,GPU外定序器可能遇到涉及本地数据类型向量或数组的转换故障,而OMS(像IA-32处理器)通常仅仅支持诸如字、字节等等这样。
36、的标量数据类型用于存储器访问。因此,在这种实施例中,外定序器可以负责向OMS发信号以告知应如何进行故障处理,例如,一次一个地址或者在一个组合式代理执行请求中打包多个地址。0031 响应代理执行请求信号,OMS可以处理该转换故障(块240)。更具体地,可以启动OMS的本地转换故障处理机制以便执行该处理。处理机可以对故障地址进行访问,以便保证在OMS处解决该故障。如果所期望的对应该故障地址的存储器区域(例如,页)没有驻留在与该OMS相关的转换缓冲器(例如TLB)中,则当执行访问时,处理机会引发TLB缺失故障。而这又会启动OMS的翻页器从存储器获得所要求的页项,并且相应地对TLB进行更新。而如果该访。
37、问又遇到页故障,则将在OMS上启动OS换页(paging)机制,其将把所要求的页从外部存储装置(例如磁盘)取到主存储器中,然后相应地对页表进行更新,并且对应的页项将被填入到OMS的TLB中。在任一情况下,对应于所要求的页的页表项然后可以被转换为外定序器的格式(块250)。因此,可以执行地址转换重映射过程。也就是说,由于OMS和外定序器的换页系统的格式不同,OMS的页表项的格式可以被“变换”或“译码”为外定序器的格式。在各种实施例中,可由OMS或外定序器或者媒介来执行这种处理。0032 仍旧参考图3,当OMS完成对于访问缺失页的代理执行时,其可以用信号向外定序器通知代理执行完成(块260)。于是。
38、,可以继续外定序器上的执行。因此,外定序器可以恢复被挂起的执行并且重新执行该故障指令(块270)。如图3所示,控制从块270传到块215,以便继续外定序器的执行。通过OMS执行的页更新,先前的故障指令应该不会再引发故障,并且外定序器能够继续向前。否则,在菱形210处,可以产生关于另一个所引发的转换故障的判定,并且可以进行方法200的进一步执行。尽管在图3的实施例中用特定的实现进行描述,但是可以理解,本发明的范围在这点上并不限于此。0033 尽管转换机制不同,但使用方法200或类似的这种方法在系统的OMS中处理转换故障,通用OMS能够用代理执行模式来处理外定序器上的页故障或TLB故障。因此,在外。
39、定序器中不需要支持对OMS的本地ISA的正确地址转换进行仿真或执行。如此,外定序器不需要被扩展成带有OMS的本地翻页机制。例如,对于IA-32OMS,支持ATR的GPU外定序器不需要直接在其硬件中实现对IA-32的换页机制的支持。相反,其仅仅需要检测它自己的换页支持机制上的页故障或TLB缺失,然后启动ATR机制并求助于OMS的代理执行,以便使用OMS上的OS来代表该外定序器执行地址转换。在代理执行之后,页项能够被重映射为GPU的格式并且被装在GPU的TLB中。如此,当从OMS向外定序器提供被重新映射的转换(例如,页表项)时,可以实现外定序器的本地翻页机制(例如,Windows Advanced。
40、 SchedulerTM配置的GPU页项格式),以便该虚拟地址到物理地址的转换对应于共享虚拟存储器空间或地址空间中的正确位置。结果,尽管OMS和外定序器用于支持地址转换的硬件机制不同,但是它们都能够实现共享的虚拟存储器。0034 现在参考图4,示出的是根据本发明的另一个实施例的系统的一部分的框图。如图4所示,系统300包括处理器110,其可以遵从图2的处理器110。为了简化说明,在图4中说 明 书CN 102981800 A7/10页10仅仅示出针对处理器110的定序器120a-d和ISA115。0035 为了通过OMS机制,如OMS代码流中的结构化异常处理(SEH),对在外定序器上遇到的异常。
41、(例如,FP上溢(overflow)或下溢(underflow)进行处理,代理执行可以通过协作异常处理机(CEH)机制来支持在外定序器上遇到的异常。在某些情况下可以使用CEH,因为一方面,某种异常处理(例如,遵从电气电子工程师协会(IEEE)的双精度FP异常处理)要求相当复杂的硬件(以及软件)实现;另一方面,行业标准的微处理器和传统OS已经扩展支持异常处理。对于给定的外定序器,通过利用OMS(通常是诸如IA-32处理器这样的通用处理器)来使用已有的OS机制(诸如结构化异常处理)代表外定序器对异常进行处理,CEH使得能够简化外定序器的硬件。外定序器的硬件可以检测异常并且通知OMS,以请求代理执行。
42、。0036 在各种实施例中,第三定序器120c可以具有不同的被执行操作的本地数据类型。因此,如果在第三定序器120c上在操作期间出现异常,这些不同的本地数据类型将会产生与在第一定序器120a上执行的异常处理不同的异常处理。例如,当浮点(FP)是第一定序器120a上的本地数据类型时,第一定序器120a和本地OS可以支持标准FP异常处理。然而,第三定序器120c的一些实现可以支持FP向量,因此,单指令多数据(SIMD)操作适用于第三定序器120c上的这种复合数据类型。因此,如果发生异常,则对异常进行处理将会涉及到第一定序器120a或底层OS不理解的复合本地数据类型。0037 为了在定序器中产生不同。
43、的异常处理,与第一定序器120a相关联的第一异常处理机320可以具有和与第三定序器120c相关联的第二异常处理机350不同的机制。为了最小化在第三定序器120c中需要的支持,异常处理功能可以被转移给第一定序器120a。于是,第三定序器120c将向第一定序器120a发送信号,并向其通知该异常。在其上引发异常的本地数据类型与第一定序器120a上的数据类型(可架构性地处理其异常)不同的情况下,可以执行变换,例如,通过把FP向量分成FP标量,并且把向量FP上的异常状况映射为第一定序器120a能够理解的标量FP异常。然后,第三定序器120c可以向第一定序器120a发送信号,以便对针对该异常的请求进行代理。
44、处理。在其它一些实施例中,第三定序器120c可以挂起执行,并且依靠第一定序器120a随后请求其状态(通过状态SAVE(保存)机制),然后使用软件方法来仿真第三定序器的异常出现。同样,在不失一般性的情况下,可以假设第一定序器120a是OMS,尽管通常其可以是能够处理异常而不引发OS服务的受应用管理的定序器(例如,通过应用软件仿真能够完成对某异常的修复(fixup)。0038 当在第一定序器120a上处理来自第三定序器120c的代理执行请求信号时,处理机可以访问异常记录并且确保在那里解决该异常。在OMS上对该异常的处理可以由硬件、固件或在第一定序器120a上运行的软件(包括,例如,OS异常处理机和。
45、SHE处理软件栈)执行。0039 由于第一定序器120a和第三定序器120c的本地数据格式的不同,第一定序器120a上的异常修复数据格式可能需要被“变换”或“译码”为第三定序器120c的格式。这种变换能够用硬件、固件或软件来完成,取决于与异常相关的数据类型(单精度、双精度等等)。当第一定序器120a完成对于修复异常的代理执行时,其用信号通知第三定序器120c该代理执行完成,并且在第三定序器120c上被挂起的执行恢复。因此,第三定序器120c将恢复执行(就好像是在本地执行修复一样)并且开始向前进展。0040 如图4所示,被称为CEH 340的转换机制可以向第二异常处理机350提供用其本说 明 书CN 102981800 A10。