处理异构资源的地址转换和异常的制作方法

文档序号:6454990阅读:193来源:国知局
专利名称:处理异构资源的地址转换和异常的制作方法
技术领域
本发明的实施例涉及基于处理器的系统,并且尤其涉及包括 具有不同指令集架构的多个定序器(s叫uencer)的系统。
背景技术
计算机系统包括各种用于处理和传送数据的组件。典型的系 统包括一个或多个处理器(其中每个处理器可以包括多个内核)、以及关联 的存储器、输入/输出(I/O)设备和其它这类组件。为了提高计算效率, 可以通过一个或更多专用组件(这里一般将其称为辅助单元)来提供计算 加速器、专用1/0设备以及其它这类专用单元。然而,使用这类辅助单元 可能出现低效率的情况,这是因为在典型的其中实现了通用处理器和行业 标准操作系统(OS)环境的计算环境下,软件栈会阻碍高效利用。也就是 说,在典型的OS环境下,通过不同的特权级隔离了系统软件和应用软件, 并且在这些不同特权级中的每一个上的操作要经受OS上下文保存和恢复 操作以及其它限制等等。此外,辅助单元典型地缺乏处理异常和故障处理 的能力,所述异常和故障处理使得能够对执行期间的某些事件进行健壮的 处理。计算加速器的经典例子是协处理器,例如像用于早期32位英 特尔@架构(IA)处理器的所谓的x87浮点协处理器这样的数学协处理器。 典型地,这种协处理器通过协处理器接口被耦合到主处理器(例如,中央 处理单元(CPU))上,该协处理器接口与主处理器同具有一种指令集架构 (ISA)。最近,在系统中出现具有不同指令集架构(ISA)的分立资源。 在运行着针对单一 ISA而写的单映像OS (例如,行业标准 OS)的系统中出现具有不同ISA的多个资源的情况下,典型地,对于处理 在具有异构ISA的资源上执行代码期间引发的异常或故障,仅提供有限的 支持或不提供支持。即使存在这种处理,不同ISA的可能完全不同的架构
5机制也可能会要求对该os进行大量重写。因此,异构资源通常并不提供
对异常和故障处理的支持,这降低了异构资源对各种任务的适用性。


图1是根据本发明的一个实施例的处理器的框图。
图2是根据本发明的一个实施例的系统的一部分的框图。
图3是根据本发明的一个实施例的用于处理异构资源中的故
障状况的方法的流程图。图4是根据本发明的另一个实施例的系统的一部分的框图。
图5是根据本发明的一个实施例的用于处理异构资源中的异
常的方法的流程图。图6示出根据本发明的一个实施例的系统的框图。
具体实施例方式在各种实施例中,提供了各种机制来支持基于指令集架构 (ISA)的异常处理和地址转换机制。如这里所用到的,"定序器"是独特 的线程执行资源,并且可以是任何能够执行线程的物理或逻辑单元。定序 器可以是逻辑线程单元或物理线程单元,并且可以包括下一指令指针逻辑 以便确定针对给定线程将要执行的下一条指令。在许多实现中,系统可以包括具有第一 ISA的第一定序器和
具有异构性质的第二计算资源(其可以是定序器或非定序器)。也就是说, 第二资源可以是具有不同ISA的定序器或可以是诸如固定功能单元 (FFU)、专用集成电路(ASIC)或其它预编程逻辑这样的非定序器资源。 在各种实施例中,在这里被称为"外框架(exo-skeleton)"的媒介或接口 可以提供这种异构资源之间的通信。在不同的实施例中,外框架可以采用 包括软件、硬件和/或固件在内的各种形式。在一些实施例中,外框架可以 被实现在紧密耦合到异构资源的有限状态机(FSM)中。当然,可以允许 其它实现。现在参考图1,示出的是根据本发明的一个实施例的处理器的 框图。如图1所示,处理器10包括多种不同的资源。在不同的实现中,处理器10可以是单核处理器或多核处理器。这样的处理器可以被实现在不同 类型的系统中,包括单芯片多处理器(CMP)系统、同时多线程(SMT) 系统或基于事件切换的多线程(SoeMT)系统以及其它这类系统等等。
如图1所示,处理器10包括多个定序器20a、 20b、 20c和20d
(即,定序器l-4,统称为定序器20)。尽管在图1的实施例中示出四个这 种定序器,但是可以理解本发明的范围并不受此限制。如图1所示,处理 器10中的定序器20实施了ISA30,在一个实施例中,所述ISA30可以是 英特尔⑧架构(IA-32)指令集架构和/或其64位扩展(也被称为英特尔⑧64 位扩展存储器技术(EM64T))。处理器10还具有其它资源,包括第一资 源(即资源l) 50a、第二资源(即资源2) 50b和第三资源50c (即资源3)
(统称为资源50)。这些资源可以是并未实施处理器10的ISA 30的异构 资源。尽管在图l示出的实施例中包括三个这种资源,但是在不同的实施 例中可以允许更多或更少这种资源。每个资源50包括定序器(其可以实现与ISA 30不同的ISA)、 非定序器处理引擎或其它专用功能逻辑,这里统称为加速器。在不同的实 施例中,不同类型的资源可以被实现为加速器,包括图形处理单元(GPU)
(典型地,定序器)、加密单元(典型地,非定序器)、物理处理单元(PPU)
(典型地,非定序器)、固定功能单元(FFU)(典型地,非定序器)等等。 如图1所示,每个资源50可以包括加速器52 (统称),并且更具体地,包 括加速器52a、 52b和52c,每个加速器与资源50a-50c其中之一相关联。 这里,加速器52也被称为辅助单元。因为资源50a-50c可以具有另一种ISA 或者甚至可以是非定序器,以及同样能够是相对于定序器20异构的资源, 因此可以使用接口来提供与这样的资源进行通信的能力。具体地,如图1 所示,外框架54a、 54b和54c (统称外框架54)可以与资源50其中之一 相关联。因此,每个资源50可以被称为"外定序器",指示出外框架54 与其相关加速器52之间的紧密耦合。这样,这些异构资源可以与异构的定 序器资源一起被集成到一个支持定序器间通信的统一 ISA框架中。然而在其它实施例中,资源50可以是相对于定序器20异构 的定序器资源,并且可以是对称内核,使得它们包括与定序器20相同或相 似的架构。这样,可以实现并发纤程(fiber)并且能够增强遗留OS的可扩展性。此外,在其它实现中,资源50可以是非对称内核。换句话说,这些资 源可以与定序器20具有相同的ISA,但是具有不同的微架构。这种实施例 可以帮助管理非对称性并提供与遗留OS的兼容性。对于实现了异构资源的实施例,外框架可以提供这样的效应 这些异构资源具有公共的ISA,以便达到定序器间通信的最小顺应性。于 是,在各种实施例中,异构资源能够用作用户级功能单元资源(而不是系 统级设备)。尽管在图1的实施例中示出特定资源,但是可以理解,处理 器IO可以是能够支持多个硬件线程上下文(在不失明晰的情况下,其也被 称作"线程上下文",注意这与软件线程上下文是不同的)的单个物理处理 器,每一个硬件线程上下文包括一组架构状态。在一些实施例中,某些资 源对这些线程上下文是可见的,而其它资源是不可见的。因此,如图l所 示,定序器20中的每一个可以对应一个线程上下文。当使得这些线程上下 文中的至少一些(例如,n个中的m个,rn^n)对操作系统可见时,这些 线程上下文有时被称为逻辑处理器或受OS管理的定序器(OMS)。每个线 程上下文分别维护一组架构状态ASl-ASn。所述架构状态包括,例如,数 据寄存器、段寄存器、控制寄存器、调试寄存器和大部分模式相关寄存器。 线程上下文可以共享物理处理器的大部分微架构资源,例如高速缓存、执 行单元、分支预测器、控制逻辑和总线。尽管可以共享这样的功能部件, 但是处理器10的每个线程上下文能够独立地生成下一指令地址(并且执行 例如从指令高速缓存、指令执行高速缓存或追踪高速缓存中进行取指 (fetch))。与一个线程上下文对应的每一个定序器20与相应的架构状态 40 (统称)相关联。更具体地,例如,架构状态(AS1) 40a可以与定序器 20a相关联,AS2 40b可以与定序器20b相关联,AS3 40c可以与定序器20c 相关联,并且AS4 40d可以与定序器20d相关联。使用处理器10或类似的这种处理器的时候,可以发生基于 ISA的定序器间通信而不涉及OS。例如,在共享存储器多处理范型中,应 用程序员可以将一个软件程序(即,应用程序或进程)分成多个并发运行 的任务,以便体现并行性。同一个软件程序("进程")的所有线程共享存 储器地址空间的公共逻辑视图。然而,OS线程可以与多个可能不是由操作系统生成、调度或管理的用户级线程相关联。为了区别于os线程,这
种用户级线程可以被称为"shred"。这些shred可能对OS调度器是不可见 的,因此OS并不管理相关的OS线程何时或如何调度shred在指定的逻辑 定序器地址上运行。通常OS线程自己负责调度何时及如何运行它的其中 ~"个shred 。在架构上对于基于ISA的定序器间通信的支持可以包括对 ISA的扩展,从而提供一个或更多指令以允许用户直接地操纵定序器之间 的控制和状态转移。这种指令可以包括这样的指令或者令第一定序器向 另一个(即,第二)定序器发送信号(这里, 一条指令被称为shred转移 或"SXFR"指令,其可以发送被称为外出情景(egress scenario)的外出 控制信息,并且也可以携带数据有效载荷),或者设置第二定序器来监视这 种信号(这里被称作shred监视器或"SEMONITOR"指令)以及在接收到 该信号时(被称为进入情景(ingress scenario))异步地把控制转移到处理 机(handler)。在其中加速器52具有异构ISA或者是非定序器的实施例中, 可以实现(用硬件、固件或者甚至用软件,取决于具体实施例)对应的外 框架54 (可以是有限状态机(FSM)或虚拟化层),使得加速器52能够参 与到定序器间通信中。这种基于ISA的定序器间通信在到加速器52的进 入方向提供了一种信令协议,使得其可以监视并响应来自另一个定序器或 外定序器的、用SXFR发送的进入情景,所述进入情景包括针对外定序器 的架构状态的GET和/或SET指令。此夕卜,信令协议包括从加速器52用外 出情景来通知相应的定序器20的外出通信,所述外出情景包括用于异常处 理的指示,例如,针对诸如页故障这样的事件的代理执行请求。为了降低开销,定序器20与加速器52之间通过定序器感知 (s叫uencer-aware)指令进行的基于ISA的定序器间通信可以不需要涉及 OS。这样,能够避免使用OS的设备驱动程序栈,而是能够实现定序器20 和加速器52之间的直接通信。在各种实施例中,可以在诸如集成具有异构ISA的受应用程 序管理的外定序器的CMP系统这样的系统中实现地址转换重映射(ATR) 和协作异常处理(CEH),在所述外定序器上执行程序时可能引发页故障或异常。使用本发明的实施例,OMS和在OMS上运行的OS能够很好地处 理在受应用程序管理的外定序器上遇到的页故障和异常。例如,为了简便 包含具有不同ISA的外定序器的CMP的程序设计(尤其在单映像OS环境 下),在OMS和外定序器之间可以支持虚拟共享存储器,即使当外定序器 可能与OMS具有不同的地址转换硬件机制时也是如此。当在外定序器上 运行的代码引发关于虚拟地址到物理地址转换的架构或微架构上的故障状 况时,实施例可以由在OMS上运行的OS来处理该故障状况(架构上的或 微架构上的)。类似地,可以对不同的定序器中的不同的数据类型执行操作。 作为一个例子,各种定序器可以以并行方式(例如,以单指令多数据(SIMD) 或多指令多数据(MIMD)方式)执行,使得可以并发地使用每个资源以 提高性能。当在外定序器上出现异常时,所述异常可以被避开而转给OMS。 然而,不同的数据类型会使这很困难。因此,在一些实施例中,外定序器 可以包括用于辅助把该外定序器的本地数据类型变换为更适合OMS的格 式的硬件。例如,外框架可以和外定序器相耦合,以处理这种数据变换并 且支持定序器间通信。作为一个例子,外定序器的SIMD数据类型能够被 变换为标量值,用于在OMS上进行异常处理。现在参考图2,示出的是根据本发明的一个实施例的系统的一 部分的框图。如图2所示,系统100包括处理器110,其可以是具有多个 定序器的CMP。具体地,图2的实施例包括四个定序器120a-120d (统称 定序器120)。尽管为了便于说明,示出了四个这种定序器,但是可以理解 本发明的范围在这点上并不限于此。在许多实现中,定序器12(V120d中的 一个或多个可以具有异构ISA或者是相对于系统100的本地ISA 115异构 的其它资源。为了便于说明,第一定序器120a可以是具有本地ISA的定序 器。例如,在一个实施例中,第一定序器120a可以是IA-32CPU,尽管本 发明的范围在这点上并不限于此。相应地,第一定序器120j乍为OMS。 一个或更多其它定序器120也可以是基于ISA-32的、实现本地ISA操作 的定序器。然而,至少其中一个定序器120,例如,第三定序器120e,可 以是异构定序器。为了便于说明,第三定序器120c可以是异构资源,例如, 图形处理单元(GPU)或其它这种具有不同(非本地)ISA的异构引擎。这样,第三定序器120e作为受应用管理的外定序器。作为一个例子,第一
定序器120a可以运行像WindowsTM或LimixTM这样的基于IS-32的单映像 OS,并且其通过定序器间信令机制与第三定序器120c进行互操作,例如, 经由基于SXFR的定序器间信令机制。为了支持基于ISA的定序器间通信, 第三定序器120e可以包括外框架。同时,这里,外框架和其基础的第三定 序器120e—起也被称为外定序器。在各种实施例中,可以实现地址转换重映射(ATR),以便通 过代理执行页故障处理,支持在多个定序器之间的共享虚拟存储器。更具 体地,可以使用第三定序器120e和第一定序器120a之间的定序器间通信机
制,来在第一定序器120a中用代理执行的方式执行这种页故障处理。因此, 当在第三定序器120e上运行的代码引发例如关于虚拟地址到物理地址的转
换的架构故障(例如,页故障)或微架构故障状况(例如,TLB缺失)时,
可以通过第一定序器120a上的地址转换机制处理第三定序器120e上的故障
状况,就像被本地OS实现一样。因此,如图2所示,在遇到这种故障状 况时,第三定序器120c向第一定序器120a传送一条消息,例如,经由SXFR
消息。接着,第一定序器120a可以执行故障处理过程(可以是基于硬件、
软件或固件的或其组合),以便确定故障地址是否存在于耦合到处理器iio
上的第一旁路转换缓冲(TLB) 130中。如果没有存在,则启动翻页(page walk)机制,以使得从页表135获得所请求的页并将其存储在第一TLB 130 中。注意,从第一 TLB 130到页表135的翻页机制是根据OS支持的翻页 机制实现的,在包括常规处理器TLB设计的硬件和包括虚拟存储器系统的 OS软件中支持所述OS支持的翻页机制。因此,根据地址转换重映射机制 (重映射器)145,这种用定序器120a的格式表示的虚拟地址到物理地址 的转换(例如,页表项)被重映射为第三定序器120e的本地格式。然后, 能够向耦合到第三定序器120e上的第二 TLB 140提供该被重映射的页转 换。接着,现在第三外定序器120c能够访问由第一定序器120a提供的同一
个物理页。实质上,定序器1203和120e都能够共享公共的虚拟地址空间而
不管这两个定序器之间的异构性。重映射器145可以被实现为硬件、软件 或固件、或其组合。此外,如图2的虚线框所示,重映射器145的功能可
以被实现为例如第一定序器120a或第三定序器120e的一部分。这样,以本且向第三定序器120e提供被请求的信息,使得
在OMS (例如,第一定序器120a)上运行的OS可以很好地处理异构资源 (例如,第三定序器120》的故障状况。还要注意,在图2的实施例中,存在着存储器分级结构的附 加层。具体地,如图2所示,高速缓存150被耦合到第一TLB130上,并 且对应的高速缓存160被耦合到第二 TLB 140上。而高速缓存150和160 又被耦合到存储器170上,在一个实施例中,存储器170可以是动态随机 存取存储器(DRAM)。尽管在图2的实施例中,示出这种特定的实现,但 是可以理解,本发明的范围在这点上并不限于此。在各种实现中,可以实现执行故障处理的不同方式。现在参 考图3,示出的是根据本发明的一个实施例的用于处理异构资源中的故障 状况的方法的流程图。如图3所示,方法200可以开始于确定在外定序器 上是否遇到转换故障(菱形210)。这种转换故障可以对应于关于虚拟地址 到物理地址的转换的架构或微架构故障状况。在遇到这种故障后,外定序 器可以挂起其代码执行并且记录关于该故障的信息(块220)。更具体地, 外定序器可以记录故障指令状况,包括故障虚拟地址。这种故障地址可以 对应在外定序器的转换缓冲器(例如TLB)中不可用的一个或更多虚拟地 址。如果没有遇到这种故障,则控制传到块215,在这里,会继续在该外 定序器上执行指令,则控制循环回菱形210。继续参考图3,控制从块220传到块230。这里,可以用信号 向OMS通知该故障(块230)。更具体地,外定序器可以向OMS发信号 以向其通知该故障。在一个实施例中,可以发送代理执行请求信号。发送 该信号时可以带有关于该故障的消息信息。这种信息可以包括故障类型的 标识和故障地址。在一些实施例中,在该消息中关于该故障的信息可以提 供指向可由外定序器和OMS访问的诸如寄存器或物理存储器这样的存储 位置的指针,在所述存储位置中存储着该故障细节的描述符。于是,OMS 在其代理执行期间能够取回这种信息,并且反过来,代理执行的结果能够 被存储在那里以便随后外定序器取回该结果。在一些实施例中,引发该故 障指令的外定序器的用于承载地址的本地数据类型可能拥有多个遇到故障 的地址。例如,GPU外定序器可能遇到涉及本地数据类型向量或数组的转
12换故障,而OMS (像IA-32处理器)通常仅仅支持诸如字、字节等等这样 的标量数据类型用于存储器访问。因此,在这种实施例中,外定序器可以 负责向OMS发信号以告知应如何进行故障处理,例如, 一次一个地址或 者在一个组合式代理执行请求中打包多个地址。响应代理执行请求信号,OMS可以处理该转换故障(块240)。 更具体地,可以启动OMS的本地转换故障处理机制以便执行该处理。处 理机可以对故障地址进行访问,以便保证在OMS处解决该故障。如果所 期望的对应该故障地址的存储器区域(例如,页)没有驻留在与该OMS 相关的转换缓冲器(例如TLB)中,则当执行访问时,处理机会引发TLB 缺失故障。而这又会启动OMS的lf i从存储器获得所要求的页项,并 且相应地对TLB进行更新。而如果该访问又遇到页故障,则将在OMS上 启动OS换页(paging)机制,其将把所要求的页从外部存储装置(例如磁盘) 取到主存储器中,然后相应地对页表进行更新,并且对应的页项将被填入 到OMS的TLB中。在任一情况下,对应于所要求的页的页表项然后可以 被转换为外定序器的格式(块250)。因此,可以执行地址转换重映射过程。 也就是说,由于OMS和外定序器的换页系统的格式不同,OMS的页表项 的格式可以被"变换"或"译码"为外定序器的格式。在各种实施例中, 可由OMS或外定序器或者媒介来执行这种处理。仍旧参考图3,当OMS完成对于访问缺失页的代理执行时, 其可以用信号向外定序器通知代理执行完成(块260)。于是,可以继续外 定序器上的执行。因此,外定序器可以恢复被挂起的执行并且重新执行该 故障指令(块270)。如图3所示,控制从块270传到块215,以便继续外 定序器的执行。通过OMS执行的页更新,先前的故障指令应该不会再引 发故障,并且外定序器能够继续向前。否则,在菱形210处,可以产生关 于另一个所引发的转换故障的判定,并且可以进行方法200的进一步执行。 尽管在图3的实施例中用特定的实现进行描述,但是可以理解,本发明的 范围在这点上并不限于此。尽管转换机制不同,但使用方法200或类似的这种方法在系 统的OMS中处理转换故障,通用OMS能够用代理执行模式来处理外定序 器上的页故障或TLB故障。因此,在外定序器中不需要支持对OMS的本地ISA的正确地址转换进行仿真或执行。如此,外定序器不需要被扩展成 带有OMS的本地翻页机制。例如,对于IA-32 OMS,支持ATR的GPU
外定序器不需要直接在其硬件中实现对IA-32的换页机制的支持。相反, 其仅仅需要检测它自己的换页支持机制上的页故障或TLB缺失,然后启动 ATR机制并求助于OMS的代理执行,以便使用OMS上的OS来代表该外 定序器执行地址转换。在代理执行之后,页项能够被重映射为GPU的格式 并且被装在GPU的TLB中。如此,当从OMS向外定序器提供被重新映 射的转换(例如,页表项)时,可以实现外定序器的本地翻页机制(例如, Microsoft Windows Advanced Scheduler 配置的GPU页项格式),以便该 虚拟地址到物理地址的转换对应于共享虚拟存储器空间或地址空间中的正 确位置。结果,尽管OMS和外定序器用于支持地址转换的硬件机制不同, 但是它们都能够实现共享的虚拟存储器。现在参考图4,示出的是根据本发明的另一个实施例的系统的 一部分的框图。如图4所示,系统300包括处理器110,其可以遵从图2 的处理器110。为了简化说明,在图4中仅仅示出针对处理器110的定序 器120a-d和ISA 115。为了通过OMS机制,如OMS代码流中的结构化异常处理 (SEH),对在外定序器上遇到的异常(例如,FP上溢(overflow)或下溢 (underflow))进行处理,代理执行可以通过协作异常处理机(CEH)机 制来支持在外定序器上遇到的异常。在某些情况下可以使用CEH,因为一 方面,某种异常处理(例如,遵从电气电子工程师协会(IEEE)的双精度 FP异常处理)要求相当复杂的硬件(以及软件)实现;另一方面,行业标 准的微处理器和传统OS已经扩展支持异常处理。对于给定的外定序器, 通过利用OMS (通常是诸如IA-32处理器这样的通用处理器)来使用已有 的OS机制(诸如结构化异常处理)代表外定序器对异常进行处理,CEH 使得能够简化外定序器的硬件。外定序器的硬件可以检测异常并且通知 OMS,以请求代理执行。在各种实施例中,第三定序器120e可以具有不同的被执行操 作的本地数据类型。因此,如果在第三定序器120e上在操作期间出现异常, 这些不同的本地数据类型将会产生与在第一定序器120a上执行的异常处理不同的异常处理。例如,当浮点(FP)是第一定序器120a上的本地数据类
型时,第一定序器120a和本地OS可以支持标准FP异常处理。然而,第 三定序器120。的一些实现可以支持FP向量,因此,单指令多数据(SIMD) 操作适用于第三定序器120e上的这种复合数据类型。因此,如果发生异常, 则对异常进行处理将会涉及到第一定序器1203或底层OS不理解的复合本 地数据类型。为了在定序器中产生不同的异常处理,与第一定序器1203相 关联的第一异常处理机320可以具有和与第三定序器120e相关联的第二异 常处理机350不同的机制。为了最小化在第三定序器120c中需要的支持, 异常处理功能可以被转移给第一定序器120a。于是,第三定序器120e将向 第一定序器120a发送信号,并向其通知该异常。在其上引发异常的本地数
据类型与第一定序器120a上的数据类型(可架构性地处理其异常)不同的
情况下,可以执行变换,例如,通过把FP向量分成FP标量,并且把向量 FP上的异常状况映射为第一定序器120a能够理解的标量FP异常。然后,
第三定序器120e可以向第一定序器120a发送信号,以便对针对该异常的请 求进行代理处理。在其它一些实施例中,第三定序器120e可以挂起执行,
并且依靠第一定序器120a随后请求其状态(通过状态SAVE (保存)机制), 然后使用软件方法来仿真第三定序器的异常出现。同样,在不失一般性的 情况下,可以假设第一定序器120a是OMS,尽管通常其可以是能够处理 异常而不引发OS服务的受应用管理的定序器(例如,通过应用软件仿真
能够完成对某异常的修复(fDOip))。当在第一定序器120a上处理来自第三定序器120e的代理执行 请求信号时,处理机可以访问异常记录并且确保在那里解决该异常。在 OMS上对该异常的处理可以由硬件、固件或在第一定序器1203上运行的 软件(包括,例如,OS异常处理机和SHE处理软件栈)执行。由于第一定序器1203和第三定序器120e的本地数据格式的不
同,第一定序器120a上的异常修复数据格式可能需要被"变换"或"译码" 为第三定序器120e的格式。这种变换能够用硬件、固件或软件来完成,取
决于与异常相关的数据类型(单精度、双精度等等)。当第一定序器120a
完成对于修复异常的代理执行时,其用信号通知第三定序器120e该代理执
15行完成,并且在第三定序器120e上被挂起的执行恢复。因此,第三定序器
120c将恢复执行(就好像是在本地执行修复一样)并且开始向前进展。如图4所示,被称为CEH 340的转换机制可以向第二异常处 理机350提供用其本地格式表示的、在第一异常处理机320中执行的被请 求的异常的结果。如图4中虚线框所示,CEH340的功能可以被实现为例 如第一定序器120a或第三定序器120e的一部分。这样,用这样一种模式处 理了异常状况,使得异构资源(例如,第三定序器120e)的异常可以被在 OMS上运行的OS很好地处理,并且代理执行的结果被提供给第三定序器 120c。在各种实现中,可以实现执行异常处理的不同方式。现在参 考图5,示出的是根据本发明的一个实施例的用于处理异构资源中的异常 状况的方法的流程图。如图5所示,方法400可以开始于确定在外定序器 中是否出现异常(菱形410)。这种异常可以对应于数值异常,例如FP异 常。在引发这种异常后,外定序器可以挂起其代码执行并且记录关于该异 常的信息(块420)。更具体地,外定序器可以记录导致该异常状况和异常 记录的指令。如果没有引发这种异常,则控制传到块415,在这里,会继 续在该外定序器上执行指令,则控制循环回菱形410。继续参考图5,控制从块420传到块430。这里,可以用信号 向OMS通知该异常(块430)。更具体地,外定序器可以向OMS发信号 以向其通知该异常。在一个实施例中,可以发送代理执行请求信号。发送 该信号时可以带有关于该异常的消息信息。这种信息可以包括异常类型的 标识和导致该异常的指令的地址。能够实现向OMS传送异常的不同方式。 例如,在一些实施例中,外定序器可以发送定序器间通信,包括异常的标 识以及指令指针(例如,EIP),以使得OMS能够处理该异常,或者也可 以实现如上所述的基于指针的方法。响应于代理执行请求信号,OMS可以对该异常进行处理(块 440)。更具体地,可以启动OMS的本地异常处理机制以便执行该处理。 处理机可以访问异常记录并解决该异常。作为一个例子,OMS可以重放所 述指令指针指向的指令并且用软件仿真所请求的操作。在一些实施例中, 这种仿真可以被包含在本地OS里面。当完成在OMS上的代理执行处理之
16后,异常结果可以被转换为外定序器的格式(块450)。因此,可以发生协 作异常处理转换过程。在不同实施例中,该处理过程可由OMS或外定序 器或媒介执行,以便把结果变换为外定序器的格式。例如,在一个实施例 中,在异常处理的修复之后,OMS能够更新外定序器的存储器映象,然后 在外定序器恢复执行之前,使用复原指令把存储器映像复原回外定序器。仍旧参考图5,当OMS完成对于异常处理的代理执行时,其 可以用信号向外定序器通知代理执行完成(块460)。因此,可以继续外定 序器上的执行(块415)。尽管在图5的实施例中用特定的实现进行描述, 但是可以理解,本发明的范围在这点上并不限于此。尽管异常处理机制不 同,但是使用方法400或类似的这种方法在系统的OMS上处理异常,通 用OMS能够用代理执行模式来处理外定序器上的异常。因此,在外定序 器中不需要支持对异常处理的仿真或执行。因此使用本发明的实施例,可以简化外定序器的硬件和软件 中的设计,并且用于处理各种异常(例如架构的浮点异常或与其它架构事 件相关的异常)的功能能够被通过代理执行而转移给OMS。如此,能够配 置并优化外定序器,以处理诸如图形处理或其它固定功能操作这样的特定 功能的计算处理,而不增加用于支持异常处理的逻辑或延迟关键路径。作 为替代,当出现这种架构事件时外定序器能够引起异常并且把处理转移给 OMS。在其它实施例中,通过根据本发明的实施例的异常处理,可 以实现对外定序器的硬件的未来增强的支持。也就是说,可以实现指令或 其它程序设计结构,使得在硬件中支持新特性。然而,为了有助于各种开 发过程,例如,早期软件实现,可以在硬件被完全实现在外定序器中之前 就定义和利用这些指令或结构。相应地,为了支持执行这些指令或结构并且加速开发周期, 实施例可以实现异常处理来处理这些操作的仿真。当外定序器面对这样的 指令或结构时,外定序器可以引发一个异常,该异常被经由CEH (例如, 通过定序器间通信)提供给OMS。 OMS可以处理这种异常,例如,通过 在OMS上用软件来仿真该操作。因此,可以改进开发周期,这是因为能 够实现众多的补丁来支持对新增的外定序器功能的仿真,而无需修补外定
17序器有限的微代码空间,也无需多个硬件版本(这需要与新的掩膜和晶片 制备有关的延迟)。例如,为了支持开发,外定序器可以提供用于新指令的指令 译码机制。然而,其全部需求是针对这些将要进行译码的指令,使外定序 器能够引起异常,从而使得OMS能够处理该异常。这样,在外定序器中 提供实际的全部硬件功能之前,就可以进行软件开发。通过使用本发明的实施例,外定序器和OMS可以使用共享的 虚拟存储器空间。因此,能够避免对基于OS的驱动程序的需求和与其相 关的开销。此外,也能够消除用于OMS和外定序器的独立的地址空间的 开销。相应地,能够避免经由OS机制在外定序器和OMS之间进行的低效 的直接存储器存取(DMA)数据传送。而是,通过传送指向共享存储器中 的位置的指针,可以实现从外定序器到OMS的数据传送(反之亦然)而 不需要实际的数据传送,这降低了时间和补偿消耗。同样,能够用独立于 OS的方式执行定序器间通信和它们之间的数据操作,这降低了复杂性和 开销。因此,能够在架构上集成具有不同故障和异常结构的定序器, 使得单个映像OS能够处理多种异常,以支持已知的(例如,遗留的)异 常处理模型,例如SHE等等,并且能够健壮地支持虚拟共享存储器系统。 结果,外定序器的硬件不需要包含或重复OMS的ISA功能和复杂性来自 发地处理异常和故障状况。而是,外定序器仅需要检测它自己的故障或异 常,并且伪装桩(veneer stub)(例如,外框架)或其它机制可以转换数据格 式并且向能够执行全面处理的OMS报告异常或故障状况。然后,结果被 转换回外定序器的本地格式(例如,页表项格式或本地的复合数据格式)。因此,外定序器的硬件并不需要重复OMS的换页机制和/或 异常处理机制的逻辑和复杂性。而是,外定序器可以提供一个最小化的钩 子(hook),来检测异常/故障、挂起执行、用信号通知OMS进行代理执行 以及接收并转换返回给外定序器的结果。这样的活动可以以最小代价完成 并且不进入关键路径。因此,从程序设计模型的角度看,因为能够应用基 于共享存储器的同步软件范型,所以编程实现与OMS共享虚拟存储器的 外定序器会更简单。此外,应用程序能够直接利用外定序器的计算能力而不必依赖可能导致更高系统开销并降低集成效果的OS驱动程序。例如, 在没有共享存储器的情况下,即使OMS和外定序器共享最后一级高速缓 存,但是一些数据计算业务将必须去片外,并且通过例如OMS和外定序 器之间的前端总线。相反,使用本发明的实施例支持的共享存储器模型, OMS和外定序器之间的共享工作集能够驻留在相干的最后一级高速缓存 中,并且不需要到片外进行通信。结果,在同一个线程上下文中使用OMS 和外定序器的应用程序可以受益于片上存储器分级结构的带宽并且获得基 于驱动程序的方法不可能达到的性能。这些实施例可以被实现在许多不同的系统类型中。现在参考 图6,示出的是根据本发明的一个实施例的系统的框图。如图6所示,多 处理器系统500是一个点到点互连系统,并且包括通过点到点互连550相 耦合的第一处理器570和第二处理器580。如图6所示,处理器570和580 中的每一个可以是包括第一和第二处理器内核(即,处理器内核574a和 574b以及处理器内核584a和584b)的多核处理器。处理器570和580中 的每一个还可以包括外定序器,即,第一外定序器575和第二外定序器585 。 如上所述,外定序器575和585可以是相对于处理器内核570和580的剩 余资源异构的资源。尽管每个处理器仅示出一个外定序器,但是可以理解, 本发明的范围不受限于此,并且在给定的处理器中可以存在多个外定序器。第一处理器570还包括存储器控制中心(MCH) 572和点到 点(P-P)接口 576和578。类似地,第一处理器580包括MCH 582和P-P 接口 586和588。如图6所示,MCH 572和MCH 582把处理器耦合到各 自的存储器,即存储器532和存储器534,其可以是本地接到各自处理器 的主存储器的一部分。 通过P-P互连552和554,第一处理器570和第二处理器580 可以分别被耦合到芯片组590上。如图6所示,芯片组5卯包括P-P接口 594和598。此外,芯片组590包括用于将芯片组590和高性能图形引擎 538相耦合的接口 592。在一个实施例中,可以使用高级图形端口 (AGP) 总线539把图形引擎538耦合到芯片组590上。AGP 539可以遵守由位于 Santa Clara, California的英特尔公司在1998年5月4日发布的Jcce/erafW Grap/z/ra PoW/"fe^jce /Spe"y c加'o", i e由'o" 2. (9。作为选择,点至lj点互连539可以耦合这些部件。反过来,芯片组590可以经由接口 596被耦合到第一总线516 上。在一个实施例中,第一总线516可以是如在日期为1995年6月的尸C7 丄oca/ iSpec折ca"o", iVodw"/ow P^ra/o", 7 ev/w,ow 27中定义的夕卜围纟且《牛 互连(PCI)总线,或诸如PCI Express总线或其它第三代输入/输出(I/O) 互连总线这样的总线,但是本发明的范围并不受限于此。如图6所示,各种I/O设备514连同总线桥518可以被耦合到 第一总线516上,其中所述总线桥518把第一总线516耦合到第二总线520 上。在一个实施例中,第二总线520可以是少针脚型(LPC)总线。在一 个实施例中,可以被耦合到第二总线520上的各种设备包括,例如,键盘/ 鼠标522、通信设备526和诸如磁盘驱动或其它大容量存储设备这样的可 以包括代码530的数据存储单元528。此外,音频I/O 524可以被耦合到第 二总线520上。注意,也可以是其它架构。例如,系统可以实现多点总线 或其它这种架构,以代替图6的点到点架构。所述实施例可以用代码来实现,并且可以被存储在存储介质 中,所述存储介质上所存的指令能够被用于对系统进行编程以使其执行所 述指令。存储介质可以包括但并不限于任意类型的盘,包括软盘、光盘、 光盘只读存储器(CD-ROM)、可重写光盘(CD-RW)和磁光盘;半导体 器件,例如只读存储器(ROM)、随机存取存储器(RAM)(诸如动态随 机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦可编程只 读存储器(EPROM)、闪速存储器、电可擦可编程只读存储器(EEPROM); 磁卡或光卡;或任何其它类型的适合存储电子指令的媒体。尽管本发明是参考有限数目的实施例来描述的,但本领域的 技术人员应该理解,能够进行很多修改和变化。所附权利要求旨在涵盖落 在本发明的实质和范围之内的所有这种修改和变化。
权利要求
1、一种方法,包括向第一指令定序器传送要求处理在加速器上出现的故障或异常的请求,其中所述加速器包括相对于所述第一指令定序器异构的资源;以及响应于所述请求,在所述第一指令定序器中处理所述故障或异常。
2、 根据权利要求1所述的方法,其中,传送所述请求包括通过定序 器间协议发送所述请求,并且没有操作系统(OS)的支持,其中所述加速 器对所述OS是透明的。
3、 根据权利要求1所述的方法,还包括通过基于操作系统(OS) 的处理机来处理所述故障或异常,所述处理机与所述第一指令定序器的第 一指令集架构相关,其中所述加速器包括具有第二指令集架构的资源。
4、 根据权利要求1所述的方法,还包括根据所述第一指令定序器的 存储器换页机制来处理所述故障以得到地址转换,并且根据所述加速器的 存储器换页机制来转换所述地址转换。
5、 根据权利要求1所述的方法,还包括通过与所述第一指令定序器 相关的、基于操作系统(OS)的处理机来处理所述异常以得到所述第一指 令定序器的格式的结果,并且把所述结果转换为所述加速器的格式。
6、 根据权利要求1所述的方法,还包括通过开发补丁代码,在所述 第一指令定序器中处理所述异常,其中所述幵发补丁代码用于对处于开发 中的所述加速器的硬件的功能进行仿真。
7、 一种装置,包括用于执行指令的第一指令定序器;以及耦合到所述第一指令定序器上的第二定序器,所述第二定序器包括相对于所述第一指令定序器异构的资源,其中如果所述第二定序器引发地址 转换故障或异常,则所述第二定序器向所述第一指令定序器发送要求进行 代理执行的请求。
8、 根据权利要求7所述的装置,其中,所述装置包括具有单基底的处 理器,所述单基底包括所述第一指令定序器和所述第二定序器。
9、 根据权利要求7所述的装置,其中,所述第一指令定序器包括具有 第一指令集架构(ISA)的处理引擎,并且所述第二定序器包括具有第二 ISA的处理引擎。
10、 根据权利要求9所述的装置,其中,所述第一指令定序器包括与 所述第一 ISA相关的第一地址转换机制,并且所述第二定序器包括与所述 第二 ISA相关的第二地址转换机制。
11、 根据权利要求10所述的装置,其中,所述第一指令定序器用于响 应所述异常而执行异常处理机,其中所述第二定序器中的异常与所述第一 指令定序器的非本地数据类型相关。
12、 根据权利要求11所述的装置,其中,所述第二定序器包括变换器, 所述变换器用于把所述非本地数据类型的异常变换为所述第一指令定序器 的本地数据类型。
13、 根据权利要求7所述的装置,还包括耦合到所述第一指令定序 器上的第一转换缓冲器,和耦合到所述第二定序器上的第二转换缓冲器。
14、 根据权利要求13所述的装置,其中,所述第一转换缓冲器用于存 储响应于所述地址转换故障而从页表接收到的地址转换,并且用于向耦合 到所述第一转换缓冲器和所述第二转换缓冲器的重映射器提供所述地址转 换。
15、 根据权利要求14所述的装置,其中,所述重映射器用于把所述地 址转换从所述第一指令定序器的格式映射为所述第二定序器的格式。
16、 一种系统,包括第一定序器,用于执行第一操作系统的指令,所述第一定序器包括第一地址转换处理机和第一异常处理机;耦合到所述第一定序器上的第二定序器,所述第二定序器包括相对于 所述第一定序器非异构的计算资源,其中所述第二定序器用于请求所述第 一定序器来处理在所述第二定序器上出现的转换故障状况或异常状况;以 及耦合到所述第一定序器和所述第二定序器上的动态随机存取存储器 (DRAM)。
17、 根据权利要求16所述的系统,其中,所述第一定序器和所述第二 定序器包括处理器的异构资源,并且其中,所述第一定序器包括中央处理 器而所述第二定序器包括图形协处理器。
18、 根据权利要求16所述的系统,其中,所述第二定序器用于把具有 第二数据类型的数据转换为所述第一定序器的第一数据类型,其中在所述 第二数据类型上出现了所述异常状况。
19、 根据权利要求16所述的系统,还包括重映射器,用于把响应于 所述转换故障状况而在所述第一定序器中生成的地址转换映射为所述第二 定序器的地址转换格式。
全文摘要
在一个实施例中,本发明包括一种用于向耦合到加速器上的第一指令定序器传送要求对在所述加速器上出现的故障或异常进行处理的请求的方法。所述加速器可以是相对于所述第一指令定序器异构的资源,例如,具有不同的指令集架构。响应于所述请求,可以在所述第一指令定序器中处理所述故障或异常。还描述并要求了其它实施例。
文档编号G06F9/32GK101454753SQ200780019982
公开日2009年6月10日 申请日期2007年6月27日 优先权日2006年6月29日
发明者H·王, J·舍恩, M·乔伊, N·比斯瓦尔, P·卡约蒂亚, 洪 江 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1