与不同种类的资源通信的基于指令系统结构的内定序器的制作方法

文档序号:6353666阅读:434来源:国知局
专利名称:与不同种类的资源通信的基于指令系统结构的内定序器的制作方法
技术领域
本发明的实施例涉及改善基于处理器的系统中的通信,尤其涉及一种包括多个定 序器的系统。
背景技术
计算机系统包括各种组件以便处理和传送数据。一般的系统包括一个或多个处理 器,每个处理器可以包括多个核,以及相关的存储器,输入/输出(I/O)设备和其它这样的 组件。为了提高计算效率,计算加速器,专用的I/O设备及其他这样的专用单元可以通过一 个或多个专用的组件提供,在这里一般被称为辅助单元。然而,在使用这种辅助单元的过 程中可能出现低效率,因为在执行通用处理器的一般的计算环境和行业标准操作系统(OS) 环境中,软件栈可能阻止高效的使用。也就是说,在一般的操作系统环境中,通过不同的特 权级别将系统软件与应用软件隔离,并且在这些不同的特权级别的每一个中的操作受限于 OS环境的保存和恢复操作,以及其它限制。因此每当包括诸如专用加速器之类的辅助单元时,该单元通常被展示为一个设备 而用户级应用程序只能通过OS的设备驱动程序软件栈间接地使用辅助单元,而该应用程 序可以直接访问原始物理辅助单元资源。因此,通过相关的设备驱动程序的辅助单元资源 是全系统范围的资源而不是诸如通过上下文转换而虚拟化的通用寄存器、虚拟存储器或定 序器之类的应用程序级资源。不得不使用设备驱动程序来访问辅助单元的问题是效率低(根据从驱动器应用 程序到辅助单元的路径长度),以及由于强加的OS限制相关的"标准化"驱动程序接口而 不灵活。计算加速器的范例是诸如数学协处理器(像所谓的用于早期的英特尔@体系结构 (IA)-32处理器的x87浮点协处理器)之类的协处理器。一般地,这种协处理器通过协处 理器接口与主处理器(例如,中央处理单元(CPU))耦合,其就像主处理器一样具有普通的 指令系统结构(ISA)。此外,通过传统的退出/等待信号协议在这些资源之间进行交互,其 中主处理器处于等待状态同时协处理器执行它的请求功能,在交互结束时控制返回主处理 器。然而,在协处理器操作期间,主处理器不能执行有用功而是等待来自于协处理器的结 果。也就是说,协处理器被集成以致它结构上用主处理器的控制流的程序指令顺序地操作。 这导致处理器利用的低效率,特别是,当协处理器能够和主处理器上的计算同时操作时。因 此存在对改进与这种辅助单元通信以及使用这种辅助单元的方式的需要。


图1是根据本发明的一个实施例的处理器的方框图。图2是根据本发明的一个实施例的系统的一部分的方框图。图3是根据本发明的另一个实施例的系统的一部分的方框图。图4是根据本发明的一个实施例的系统的方框图。
图5是根据本发明的一个实施例,与处理器中执行的操作相应的方法的流程图。图6是根据本发明的实施例,与加速器中执行的操作相应的方法的流程图。图7是根据本发明的另一个实施例的系统的方框图。
具体实施例方式在各种实施例中,提供多种结构以使基于指令系统结构(ISA)的内定序器能够通 信。正如这里所使用的,“定序器"是独特的线程执行资源并且可能是任何能够执行线程 的物理或逻辑单元。定序器可能是逻辑线程单元或物理线程单元,并且可能包括下一指令 指针逻辑以便确定将对给定的线程执行的下一指令。更具体来讲,可以在第一 ISA的第一定序器和不同种类的第二资源之间实现基于 ISA的内定序器通信,第二资源可以是定序器或非定序器。也就是说,第二资源可以是不同 ISA的定序器或者可以是非定序器资源,诸如固定功能单元(FFU)、专用集成电路(ASIC)或 其他预编程逻辑。在各种实施例中,中间物或接口,在此称为"外骨骼",可以提供在这些 不同种类的资源之间的通信。在不同的实施例中外骨骼可以采用各种形式,包括软件、硬件 和/或固件。在一些实施例中,可以在紧紧地耦合到不同种类资源的有限状态机(FSM)中 实现该外骨骼。当然,其它实现方式是可能的。现在参考图1,示出了根据本发明的一个实施例的处理器的方框图。如图1中所 示,处理器10包括各种不同的资源。在不同的实现方式中,处理器10可以是单核处理器或 多核处理器。可以在不同类型的系统中实现这样的处理器,包括芯片多处理器(CMP)系统 或同步的多线程(SMT)系统或接通事件多线程(SoeMT)系统,以及其它这样的系统。如图1中所示,处理器10包括多个定序器20a,20b,20c,和20d(即,定序器1-4, 和一般的定序器20)。虽然在图1的实施例中用示出了四个这样的定序器,应当理解本发明 的范围不因此受限。如图1中所示,处理器10中的定序器20实现ISA30,在一个实施例中 其可以是英特尔$体系结构(IA-32)指令系统结构和/或它的64位扩展名(也叫英特尔, 扩展内存64位技术(EM64T))。处理器10进一步包括其它资源,包括第一资源(S卩,资源 1) 50a,第二资源(即,资源2) 50b,和第三资源50c (即,资源3)(以及一般的资源50)。这 些资源可以是不同种类的资源,它们没有实现处理器10的ISA30。虽然图1的实施例中显 示为包括三个这样的资源,但是在不同的实施例中可能包括更多的或更少的这样的资源。每个资源50包括定序器(其可以实现为不同于ISA30的ISA)、非定序器处理引 擎、或其它特殊功能逻辑,在这里一般称为加速器。在不同的实施例中,不同类型的资源 可以实现为加速器,包括图形处理单元(GPU)(典型的定序器)、加密单元(典型的非定序 器)、物理处理单元(PPU)(典型的非定序器)、固定功能单元(FFU)(典型的非定序器)等 等。如图1中所示,每个资源50可以包括加速器52 (统称),更具体地,每个加速器52a,52b, 和52c与资源50a-50c之一有关。在这里加速器52也被称为辅助单元。因为资源50a-50c 可以是另一个ISA或者甚至可以是非定序器并且因而可能相对于定序器20是不同种类的, 一个接口可用于提供与这种资源通信的能力。特别地如图1中所示,外骨骼Ma,Mb,和 Mc (统称外骨骼54)可以与资源50中的每一个有关。每个资源50因此可以被称为表示外 骨骼M和它的相关加速器52之间紧密耦合的"外定序器"。用这样的方式,这些不同种 类的资源可以和支持内定序器通信(和/或如果可用的话基于共享存储器的寻址)的统一的ISA结构中的同类定序器资源集成在一起。此外,各种资源可以以并行方式,例如,以多 指令多数据(MIMD)方式执行,以便可以同时使用每个资源以提高性能。然而在其它实施例中,资源50可以是相对于定序器20同类的定序器资源并且可 以是对称的核以致它们包括与定序器20相同或类似的体系结构。以这种方式,可以实现并 行光纤并且可以增强传统OS的可量测性。更进一步,在其它实现方式中资源50可以是不 对称的核。换句话说,这些资源可以是与定序器20相同的ISA,但是是不同的微体系结构。 这种实施例可以帮助管理不对称并且提供与传统OS的兼容性。对于实现不同种类的资源的实施例,根据一个实施例,外骨骼可能提供这些不同 种类的资源具有通用的ISA以便对于内定序器通信实现最小限度符合的错觉。因此在各种 实施例中,不同种类的资源可以起用户级功能单元资源(而不是系统级设备)的作用。换 句话说,各种用户级应用程序可以直接与加速器通信并且访问加速器以致它变成用户级功 能单元。以这种方式,各种加速器资源可以变成管理的ISA的不同种类的组件。例如,每个外定序器或资源50可以展示为具有像〃包装纸〃的外骨骼M的定序 器的专用计算加速器,以便可以由作为用户级不同种类的计算资源,诸如MIMD资源的应用 程序直接使用这些加速器52。因此,应用程序设计员可以直接使用用户级ISA30以编程这些辅助单元52,即使 辅助单元本身物理上不必要具有ISA30。进一步,程序员可以使用统一的ISA结构来编程 不同组不同种类的辅助单元,每个辅助单元具有独特的"特征"(根据ISA或设备属性)。 实际上,根据本发明的实施例,外定序器允许程序员短路传统设备驱动程序软件栈。为此, 外定序器因而可以配备具有表层外骨骼的辅助单元并且使辅助单元看起来像是最小的定 序器,该定序器可以参与处理器或其它设备的基于定序器-感知ISA的内定序器操作。根 据软件栈的透视图,具有外定序器的应用程序或用户运行时间可以提供应用级软件层来管 理加速器为应用程序资源,并且为紧密耦合的应用程序二进制的一部分,而不需要使用基 于松散耦合OS的设备驱动程序来管理加速器为系统级资源。此外,在一些实现方式中,一个或多个外定序器可以包括外在的MIMD多定序器 ISA接口,其中每个参与的辅助单元在结构上用作最小的定序器资源,通过定序器-感知 同步的操作或通过最轻度级的用户级事件产生机构的异步内定序器交互作用与主处理器 (即,第一定序器)交互。即使辅助单元和第一定序器紧密耦合到相同的OS线程,结构上, 主处理器和配备外骨骼的辅助单元交互作用为两个独特的MIMD定序器。特别是,通过外骨 骼接口在第一定序器和辅助单元之间的数据和控制交换在结构上等于内定序器交换。虽然在图1的实施例中用具体的资源显示,但是可以理解的是,处理器10可以是 单个物理处理器,其可以支持多个硬件线程环境(在没有透明性损失的情况下,也称作" 线程环境",注意这个与软件线程环境不相同),每个包括一组体系结构状态。在一些实施 例中,某些资源对这些线程环境来说可以是可见的,而其它资源是不可见的。因而如图1中 所示,定序器20中的每一个可以对应于一个线程环境。当产生对操作系统是可见的至少一 些线程环境(例如,m在η的范围之外,m Sn)时,这些线程环境有时被称为逻辑处理器或 管理的OS定序器。每个线程环境分别保持一组体系结构状态AS1-Ai^所述体系结构状态 包括,例如,数据寄存器、段寄存器、控制寄存器、调试寄存器、和大部分模式特殊寄存器。线 程环境可以共享物理处理器的大部分微体系结构资源,诸如高速缓存器、执行单元、分支预测器、控制逻辑和总线。尽管这样的特征可以被共享,处理器10的每个线程环境可以独立 地产生下一个指令地址(并且执行,例如,从指令高速缓冲存储器、执行指令高速缓存器、 或追踪高速缓存器中的读取)。与线程环境相应的定序器20中的每一个与对应的体系结构 状态40 (统称)有关。更具体地说,例如体系结构状态(ASl) 40a可以与定序器20a有关, AS240b可以与定序器20b有关,AS340c可以与定序器20c有关,而As440d可以与定序器20d 有关。使用处理器10或类似的这种处理器,基于ISA的内定序器通信可以在不涉及OS 的情况下发生。例如,在共享存储器多处理范例中,应用程序设计员可以把软件程序(即, 应用程序或处理)拆分成为多个将被同时运行的任务以便表示并行。相同软件程序的所有 线程(“处理")共享存储器地址空间的公共逻辑视图。然而,OS线程可以与也许不被创 建、调度、或相反由操作系统管理的多用户级线程有关。这种用户级线程可以被称为"碎 片",以便把它们与OS线程区分。这些碎片也许对于OS调度程序是不可见的,因此OS不 管理相关的OS线程何时或如何调度碎片以在分配的逻辑定序器地址上运行。OS线程本身 通常负责调度何时以及怎样运行它的一个碎片。对基于ISA的内定序器通信的体系结构支持可以包括对于ISA的扩建,以致提供 一个或多个指令来允许用户直接操作定序器之间的控制和状态转换,其可以是所谓的定序 器-感知或定序器-算术指令。这种指令可以包括如下指令,即该指令或者为第一定序器作 准备以发信号给另一个(即,第二)定序器(一个指令在这里被称为碎片转换或"SXFR" 指令,其可以发送称作外出方案的外出控制信息,并且也可以携带数据有效负载)或者为 安装第二定序器作准备以监控这种信号(在这里称为碎片监控或者"SEM0NIT0R"指令) 并且一旦异步地接收所述信号(称作进入方案)就对控制器执行控制转换。定序器-感知指令也可以包括诸如定序器-感知状态保存和恢复指令之类的其它 指令。一旦执行这种状态保存指令,第一定序器可以创建第二定序器的体系结构状态的快 照拷贝。定序器-感知恢复指令可以指定保存的体系结构状态被加载到指定的定序器。对于至少一个实施例,一个或多个定序器-感知指令可以由程序员编码成为属于 OS线程的碎片。当在操作OS线程期间执行时,这种指令可以促使生成、控制转换、环境保 存、环境恢复或对碎片的其它操作,而不需要插入OS调度逻辑。以这种方式,根据一个实施例,基于ISA的内定序器通信减少了系统开销,提高了 性能。根据本发明的一个实施例,除了在相同ISA的定序器之间通信之外,在各种实施例中 可以例如,通过外骨骼在不同种类的定序器之间或在定序器和非定序器之间发生基于ISA 的内定序器通信。现在参考图2,示出了根据本发明的一个实施例一个系统的一部分的方框图。如图 2中所示,系统100包括定序器110和加速器130。加速器130可以在不同的实施例中采用 许多不同的形式,但是为了在这里讨论的目的,假定加速器130具有与定序器110不同种类 的特性。换句话说,加速器130可以具有不同的ISA或可以是非定序器。然而在各种实施 例中,定序器110和加速器130可以在单个衬底上实现(例如,作为多核处理器的一部分)。 另一方面,定序器110和加速器130可以在集成电路(IC)内的不同片的硅中,或在诸如位 于封装或母板上之类的不同的IC中,或以另外的方式实现。为了使基于ISA的内定序器能够通信,外骨骼120可以与加速器130耦合。外骨骼120和加速器130 —起在这里也被称为外定序器135。在其中加速器130具有不同种类的 ISA或是非定序器的实施例中,可以是一个有限状态机(FSM)或虚拟化层的外骨骼120可以 被实现(在硬件、固件乃至在软件中,取决于具体实施例)以便加速器130可以参与内定序 器通信。这种基于ISA的内定序器通信在进入方向上提供信号协议到加速器130中,以便 它可以监控和响应由SXFR从另外的定序器或外定序器发送的进入方案,包括用于外定序 器的体系结构状态的GET和/或SET指令。此外,信号协议包括从加速器130到信号定序器 110与包括用于诸如代理执行对这种事件的请求的异常处理的指示作为页面错误的外出方 案进行外出通信。此外,在一些实施例中,通过外骨骼120的加速器130可以参与面向通信 活动的性能报告以致一旦有来自于定序器110或另外的资源的查询,外骨骼120可以传送 关于加速器130性能的信息以允许它们的更有效的使用。如图2中所示,外骨骼120可以与加速器130紧密耦合。进一步如图2中所示,系 统100包括用户级运行时间软件层,表示为碎片库150以管理和调度碎片,S卩,用户级线程。 在不同的实现方式中,碎片库150可以执行操作以支持和管理在诸如定序器110之类的定 序器上的碎片。例如,碎片库150可以管理碎片调度、碎片环境保存、切换、和恢复,等等。以 这种方式,消耗了低系统开销因为OS 190不涉及这些操作。可以在系统100内执行用户应用程序160并且可以请求执行专门的或计算密集的 功能。为了能够提高性能,尤其在MIMD或并行的环境中,用户应用程序160可以请求定序 器110与加速器130通信以致加速器130将并行于执行应用程序其它有用功(或其它将由 定序器110执行的碎片)的定序器110而执行功能。用这样的方式,改进执行得以实现,因 为定序器110和加速器130两者可以在作为碎片的应用程序线程的不同部分上并行执行。 因此,使用本发明的实施例,定序器110的控制流可以并行地并且与外定序器上执行的专 用计算异步地运行,其作为单独的碎片有效地操作。为了减少系统开销,在定序器110和外定序器135之间通过定序器-感知指令的 基于ISA的内定序器通信也许不需要OS 190的介入。以这种方式,可以避免OS 190的设 备驱动程序栈并且相反在定序器110和外定序器135之间的直接通信可以实现。因而如图 2中所示,在一个实施例中,可以在定序器110和外骨骼120之间通过定序器-感知指令直 接进行基于ISA的内定序器通信。可以是用户应用程序的应用程序代码160可以通过碎片 运行时间库150使用这种基于ISA的内定序器通信。最小的OS层140支持OS线程的环境 保存和环境恢复操作。当OS线程在OS管理的定序器上执行环境保存或环境恢复指令时, 用于所有应用程序管理的定序器以及与OS管理的定序器有关的外定序器的环境将因此被 保存和恢复。OS可以对每一 OS线程提供足够的保存区,用于保存这些与OS线程环境转换 相交叉的状态。那里,基于ISA的内定序器通信可以用这样的方式转换,即它可以被提供给 外定序器135并且遵照外定序器135行事。在相反方向可能发生类似的通信流。在至少一 个实施例中,在每个定序器或外定序器上一旦OS线程环境转换,可以由并行于相同OS线程 中的其它定序器/外定序器的每个定序器或外定序器执行环境的保存和恢复。这种并行实 现可以提高整个保存和恢复操作的性能。虽然图2的实施例中所示的为包括单个定序器110,但是可以理解的是,本发明的 范围不因此受限,并且在其它实施例中,可以提供多定序器系统。在这种系统中,外骨骼120 可以进一步执行虚拟化功能以便单个物理的加速器130可以由多个定序器关联。因此,外骨骼120可以执行对多个环境的存储,以便为不同的定序器存储加速器130的体系结构状 态的多个副本,每个与逻辑外定序器相耦合。外骨骼120可以进一步包括逻辑,以便能够保 存和恢复环境状态,以及为定序或多路复用不同的定序器作准备以使用加速器130。以这种 方式,加速器130可以服务一个系统的多个定序器。在至少一个实施例中,外骨骼可以通过 接通事件多线程而执行多个逻辑外定序器。在这种实施例中,逻辑外定序器环境能够被执 行为独特的芯片上寄存器堆或专用的暂时存储器,并且外定序器环境转换状态可以在逻辑 中或在诸如微代码之类的固件中执行。在至少另一个的实施例中,可以为每个定序器实现 独特的物理外定序器。在这个实施例中,多个物理的外定序器可以被实现为同步的多线程 (SMT)或CMP系统。当加速器不具有和定序器130和/或剩余的系统相同的ISA或其中加速器是非定 序器时,可以使用诸如图2中所示的实施例。在这种实施例中,图2中所示的数据流提供定 序器110和加速器130之间的高效的基于ISA的内定序器通信而不需要OS 190的介入。然而,在其它实现方式中,加速器可以具有公共的ISA作为定序器或系统的其它 部分。更进一步,在一些实现方式中,可以用剩余的系统接近地配置加速器。例如,在一些 实现方式中,加速器可以是配置为执行专门操作的系统组件。然而,在给定的系统配置中, 组件是无效的或有利于诸如外围设备或附加设备之类的其它组件的最低限度地的使用。例 如,可以将集成的图形处理单元(GPU)实现为系统主板上的芯片组的一部分(诸如图形存 储器控制器集线器(GMCH))。然而,在某些系统配置中,附加的离散图形卡也被配置为插入 (例如,在外围设备组件互连(PCI)槽口上)到主板上。在这种实例中,集成的GPU可以被 无效等而不使用。类似地,GPU或其它这种组件可以包括多个不同的处理引擎,其中一些在 某些系统配置中也许不被完全使用。在这种实现方式中,根据本发明的一个实施例,这些或使无效或最低限度使用的 处理资源可以被配置为加速器。现在参照图3,示出了系统200的一部分的方框图,其包括 定序器210和加速器230。在图3的实施例中,加速器230可以包括第一部分232和第二部 分234。第一部分232可以被配置为充当外定序器,而第二部分234可以被配置为执行诸如 在正常的OS控制下专门的图形或介质功能之类的各种功能。因此,如图3中所示,第二部 分234与OS 290的设备驱动程序栈295耦合,以致它可以通过OS应用编程接口(API)到 设备驱动程序栈295与基于OS的执行模型的应用程序260通信。用这样的方式,第二部分 234可以在应用程序沈0的请求下通过传统的OS通信路线执行处理功能。与此相反,第一部分232被配置为通过外骨骼220直接与定序器210通信。外骨 骼220可以是硬件、软件、固件或它们的组合,以使能够在第一部分232和定序器210之间 基于ISA通信。因此,用户级应用程序256可以使用基于ISA的内定序器指令用于通过外 骨骼220在定序器210和第一部分232之间通信。一般地,可以使用用户级碎片库250,并 且OS支持MO的最小层用于提供对如上所述的OS线程环境保存和恢复操作的支持。因而,在图3的实施例中,根据本发明的一个实施例,两个软件栈可以共存,即OS 驱动程序栈和用户级运行时间栈。通过为资源共享加速器230作准备,可以实现改善性能, 因为通过基于ISA的内定序器通信,基于传统的应用程序(例如,使用OS设备驱动程序模 式)和为最小的系统开销作准备的用户级应用程序两者可以利用加速器230的资源。在一 些实现方式中,外骨骼220可以相对于加速器230执行虚拟化任务,以致应用程序256和应用程序260两者都相信它们已经拥有加速器230的完整资源(由于对于应用程序是可见 的)。因而在不同的实施例中,外骨骼220可以执行虚拟化任务,该任务包括提供用于加速 器230的体系结构状态的多个环境以及在类似接通事件多线程情况下提供对环境转换的 支持。因而,根据本发明的一个实施例,加速器230中功能的子集可以通过OS 290与传 统应用程序有关,而不同的功能子集可以通过基于ISA的内定序器通信协议与用户级应用 程序有关。因而,加速器230的物理资源可以支持这两个全异范例的共存。现在参考图4,示出了根据本发明的一个实施例一个系统的方框图。如图4中 所示,系统300包括与图形存储器控制器集线器(GMCH) 320耦合的处理器(例如,定序 器)310,该图形存储器控制器集线器320依次与存储器330耦合,该存储器330例如可以 是动态随机存取存储器(DRAM)。此外,GMCH320与显示器340(诸如平板显示器)耦合。 GMCH320可以包括集成的图形加速器。GMCH320进一步与输入/输出(I/O)控制器集线器 (ICH) 350耦合,该集线器可被用于将各种外围设备耦合到系统300。例如在图4的实施例 中示出的是外部图形设备360,其可以是分离的图形设备,该设备连同另一个外围设备370 一起耦合到ICH350。因为系统300被配置为具有单独的外部分离图形设备360,GMCH320内集成的图形 可能是无效的。例如,在GMCH320中系统基本输入/输出系统(BIOS)可以编程无效位,或 另一个机构可以使图形功能无效。另外,根据本发明的一个实施例,在GMCH320中被用于图 形处理的空闲进程资源可以替换地被转换为加速器。因此,例如,通过用户级应用程序,资 源可被用于执行各种功能而不需要OS介入。以这种方式,可以实现改善性能,尤其其中通 过GMCH320的图形资源的这种处理与处理器310的定序器中的任务并行(例如,以MIMD方 式)执行。在一些实施例中,GMCH320的集成图形中用于图形功能的外定序器可以包括执行 互不相关的功能的各种图形处理单元。一个或多个这些处理资源可以被配置为基于ISA的 介质加速器外定序器,以便实现系统300内的介质操作,而没有与系统300的OS有关的一 个或多个介质设备驱动程序的介入。以这种方式,可以在具有处理器310的最少介入的系 统300中执行诸如编码和解码数字介质之类的介质操作,而且不用遭受OS的设备驱动程序 栈的系统开销。在各种实施例中,像定序器、外定序器是一种应用程序级体系结构资源,并且因此 可能具有供定序器-感知用户级操作使用的唯一的和虚拟化的名字空间。因此,可以完全 在用户级执行内定序器通信而不需要OS介入。随着定序器的虚拟化,逻辑的外定序器体系 结构资源可以以类似于记录重命名和存储器虚拟化的方式被管理,其中物理资源的数目不 需要与逻辑资源的数目相同。进一步地,根据包括体系结构、微体系结构、热量、功率损耗特 性等等优点的量度的光谱,在物理资源之间可能存在各种差别。这些差别实际上在外定序 器资源之中本身显现为不对称性和不均勻性。此外,作为实际上可寻址的资源,外定序器资 源还能够受到基于性能的管理,其中可以由某一个硬件、固件、和抽象的软件层使用虚拟定 序器地址中的位,以便表示物理的特定定序器的性能来管理同步的或异步的对外定序器资 源的访问控制。在至少一个实施例中,外定序器可以通过提供对下列来自于第一定序器的两个规范的进入方案的响应,而支持最少的内定序器交换协议GET进入方案,其中第一定序器可 以使用SXFR以便向外定序器发送GET方案从而读取/获得本地状态给外定序器;以及SET 进入方案,其中第一定序器可以使用SXFR以便向外定序器发送SET方案从而写入/更新 本地状态到外定序器。更进一步,外定序器可以使用NOTIFY外出方案和SXFR,以便向第一 定序器发送NOTIFY方案来执行例如结束、进程或异常条件的异步事件通知。PROXY方案是 NOTIFY外出方案的特殊形式,该PROXY方案可以代表第一定序器促使加速器以代理执行模 式操作。有了这个最低限状态报告和更新性能,第一定序器可以构成高级的控制消息来操 作数据和控制状态(单独地或整个)。尤其是,可以构建各种合成状态访问。例如使用环境 保存/恢复,或者第一定序器可以重复地使用SXFR通过环境转换来读取或更新一组将被保 存/恢复的状态,或者在可替换的实施例中,第一定序器可以使用一个SXFR来读取和更新 外定序器本地重复过多状态的状态子集。此外,第一定序器可以使用SXFR来查询配置(即, 性能列举),该配置包括状态、相关属性(写入,读取等等)、格式等等。以这种方式,传统上 或者不是定序器或者不基于OS的设备驱动程序就无法与通用处理器工作的专用类的集成 设备,可以根据需要由特殊的应用程序虚拟化,就像它们是处理器的功能部件并且它们的 状态通过OS线程环境转换而经过OS线程环境保存和恢复。在一个实施例中,定序器类型的并且具有不同于第一定序器的ISA的辅助单元可 以使用它专用的ISA以实现外骨骼有限状态机(FSM)来经由体系结构定义的用于第一定序 器的输入和输出方案通信。用这样的方式,辅助单元可以选择使用它专用的ISA以响应由 第一定序器请求的操作而实现各种算法,即使辅助单元硬件本身不直接支持所述操作。可 以在任何物理的互连或接口上实现这个定序器FSM实现方式。互连的两个设备可以彼此发 信号,并且该信号可以在第一定序器上被本地接收和转换为逻辑上和结构上的用户级事件 并且作为触发脉冲输入给FSM。在一个实施例中,受有关查询的环境保存/恢复进入/外出 方案影响的外定序器的集合状态可以是辅助单元的初始状态的子集(或全集)。在该情况 下,辅助单元的专用ISA中的外骨骼代码具有固件中实现的微代码例程的性质以支持第一 定序器的定序器-感知操作。在另一个实施例中,与第一定序器的ISA相同的分离的定序器可以被用作外骨骼 以代表辅助单元实现最小的FSM0而外定序器和辅助单元之间的专用协议不是必须的本地 ISA兼容,第一定序器可以与外骨骼交互,以便外骨骼为第一定序器呈现自身的集合状态和 辅助单元(即,不同的ISA)。可以由外骨骼定序器将辅助单元的状态到外定序器的集合状 态映象为1 1或M: 1 (其中M > 1)。此外,实现FSM以支持第一定序器的内定序器操作的代 码序列类似于辅助单元硬件的基于微代码的控制。在另一个例子中,外定序器可以包括硬连接的"固定功能"辅助设备,该设备没 有(任何ISA的)内部控制序列,例如,具有1/0逻辑的专用ASIC块。对于这种辅助单元, 在至少一个实施例中,可以经由附着于固定功能单元的代理FSM而构造外骨骼。可以在具 有物理访问ASIC的外骨骼FSM中实现最少的定序器状态列举和查询界面。所展示的ASIC 状态到外骨骼定序器状态可以映象为1:1或M:l,并且可以在外骨骼FSM中实现。FSM逻辑 可以物理地实现为到ASIC块的接口。在其他实施例中,外骨骼FSM可以是可编程的微控制 器定序器,或硬布线的ASIC块,但是能够截取进入方案并且发布外出方案。
在一个实施例中,与第一定序器的ISA相同的分离的定序器可以工作以实现外骨 骼FSM,而外骨骼定序器可以物理访问ASIC状态,并且逻辑上/结构上集合ASIC状态加上 它自己的状态作为外定序器状态。在另一个实施例中,不同于第一定序器的ISA的分离的 定序器可以工作以实现外骨骼FSM。但不论是哪种情况,可以或者物理地通过保留静态贡献给给定辅助单元的物理定 序器,或者动态地多路复用为多个逻辑分离的定序器来执行外骨骼定序器的分离,每个逻 辑分离的定序器与唯一的辅助单元逻辑地关联。换言之,外骨骼定序器可以是一个通过对 定序器地址虚拟化的任何想要的方案来虚拟化的定序器。在一个实施例中,加速器可以具有相对于第一定序器的非相干高速暂存存储器。 为了使该辅助单元成为外定序器,非相干高速暂存存储器状态可以被映象为外定序器的" 公布的"(即,可列举的)集合状态的一部分。如果暂时存储器的尺寸足够大,外骨骼仅仅 可以得到暂存状态(包括状态的零数量)的有限子集作为对应的外定序器状态的一部分。 例如,即使加速器可以处理1千字节(Kb)长度的数据帧,外定序器也仅仅可以展示为包括 将被保存/恢复的256字节的缓冲状态的加速器。对于使用直接存储器存取(DMA)协议将数据传送到第一定序器/从第一定序器传 送数据的辅助单元设备,在一个实施例中,辅助单元和外骨骼之间的专用协议可以保持原 始的基于DMA的状态,而外定序器可以在辅助单元设备上为第一定序器呈现外骨骼的集合 状态和DMA结构状态。然后,外骨骼上的DMA配置和外定序器“仿真/实施”FSM状态可以 经过环境保存/恢复(因此通过OS环境转换是可虚拟化的)。然而,第一定序器不需要结 构上感知任何DMA配置信息,其是特定的实现。在另一个实施例中,外定序器(例如,作为用户级体系结构资源)和系统级(例 如,特权级别)设备资源可以实际上共享公共的物理原始构件块资源。对于外定序器,公布 的逻辑状态可以在构件块中被重命名为相同的物理状态,其是通过读/写命令由系统级逻 辑设备可访问的。在物理辅助单元内,可以静态地或动态地管理资源的区域/部分,并且对 于用户级外定序器和系统级设备两者的ISA是透明的。具备加密/解密加速器的某些服务器平台用于加速网络栈计算。这些隐藏引擎通 常物理地与网络处理器耦合,该处理器包括可编程的微引擎以控制隐藏加速器。例如,加密 引擎可以包括诸如供散列表计算使用的随机数发生器或伪随机数发生器。在这样一种实现 方式中,处理器微引擎作为与隐藏引擎耦合的外骨骼FSM可以被重新编程成为一个外定序
ο在一个实施例中,可以通过基于虚拟机扩展(VMX)的仿真器虚拟机监督系统 (VMM)来仿真分离的加速器。可以在具有作为外定序器的集合状态的附加体系结构状态的 定序器仿真顶上实现用于状态访问和更新的包括环境保存/恢复的进入/外出方案。从外 定序器到第一定序器的异步NOTIFY信号发送可以作为PROXY方案实现。通过外骨骼,可以表示各种内定序器计算基元的附加进入方案可以被仿真或通过 外定序器FSM仿真器传送并且被递交给分离的原始物理资源用于计算加速度。实际上,辅 助单元的原始计算资源的子集可以由应用程序使用,就像它们是用户级MD定序器体系结 构资源一样。现在参照图5,示出了根据本发明的一个实施例一种方法的流程图。如图5中所示,可以在定序器例如,处理器核等等中实现方法400。如图5中所示,可以通过执行开始监 视器(例如,SEM0NIT0R指令)以便开始监视来自加速器的信号并且把定序器中的事件处 理程序与该信号相关联而开始方法400(方框40 。具体来讲,这种信号可以是用于指示来 自加速器的消息的识别或通知信号。加速器可以是相对于指令定序器的不同种类的资源, 例如,是不同的ISA或非定序器。因此,可以通过外骨骼在指令定序器和加速器之间通信。 因此,可以由定序器通过外骨骼接收从加速器接收的信号。为了配置和启动加速器以代表用户级应用程序执行操作,供应用程序使用的体系 结构状态可以被传输给加速器(方框410),例如,通过SXFR。例如,指令定序器可以通过外 骨骼传输用于与寄存器值相对应的碎片体系结构状态的各种信息,配置信息等等。其次,指令定序器可以为加速器准备命令信息,以便加速器可以代表用户级应用 程序执行一个或多个操作(方框415)。例如,指令定序器可以准备命令信息,其可以进一步 的包括将由加速器和/或特定的将被应用在数据上的加速功能操作或处理的数据。然后, 可以通过内定序器协议(方框420)例如,包括使用SXFR指令传送这个命令信息。更具体 地说,这个协议可以具有指令定序器的ISA。可以使用所述协议直接将这个信息传送到外骨 骼,其可以转换所述协议以便底层的数据可以被传送到加速器。在各种实施例中,可以存在执行这种内定序器协议通信的不同方式。例如,在一些 实施例中,通信可以包括一个或多个用于存储在缓冲器中的每个基本工序的指令,其可以 是在指令定序器和加速器之间共享的存储缓冲器。在其他实施例中,最小的命令信息可以 从指令定序器,例如,指令指针(IP)中发送到想要在加速器上执行的代码段。然后,假定加 速器本身是定序器,加速器可以执行操作以便从指示的位置中读取代码。发送命令信息的 间隔尺寸也可以改变。例如,在不同的实施例中,可以以每个命令为基础或以充足的间隔尺 寸发送命令信息。在又一个实施例中,第一定序器可以通过外骨骼而不需要通过存储器将 本地命令发送到加速器,然后加速器能直接执行所述命令。仍然参考图5,其次指令定序器可以在指令定序器的命令下执行并行于加速器的 操作的互不相关的(例如,独立的)操作(方框425)。也就是说,在一些实施例中,可以执 行并行操作,例如,MD操作,以便指令定序器和加速器两者都可以并行执行有用功。以这种 方式,指令定序器无需等待由加速器产生的结果,并且可以代替地执行其它有用功。当然, 指令定序器可以并行执行相关的操作。其次可以确定指令定序器是否已经从加速器中接收了事件(菱形430)。这种事件 可以是通知或其它消息的形式,表示加速器中任务的状态或完成。注意,这个确定无需通过 同步的轮询,并且代替的通知可以是异步和事件驱动的并且因而基于非轮询。如果在菱形 430处没有接收这样的事件,控制可以退回到上述的方框425。代替的,当接收事件时,指令 定序器可以启动事件处理程序(例如,在方框405中通过SM0NIT0R的最初记录)以便接收 和处理来自于加速器的数据(方框440)。在各种实现方式中,这个事件处理程序可以是轻 度的用户级处理程序,以致避免了 OS调用或环境转换的系统开销。以这种方式,可以存在 改善的操作并且可以从加速器中获得结果数据并且用作用户级应用程序所期望的。可以在 记录了下一个指令指针之后发生到处理程序的控制传输(例如,推到栈中),以致可以在事 件处理程序完成之后恢复暂停的执行。现在参考图6,示出了根据本发明的实施例与具有外骨骼的加速器中执行的操作相应的方法的流程图。如上所述,这个加速器可以具有相对于定序器不同种类的特性。因 此,外骨骼可以提供内定序器协议通信。响应方框410(图5的,如上所述),加速器可以从 定序器中接收碎片体系结构状态信息。因此,可以根据这个信息配置加速器(方框460)。 因为加速器的不同种类的特性,外骨骼可以用于接收这个内定序器通信并且转换它,以便 可以由加速器处理它。其次,响应方框420 (图5的),可以通过外骨骼从定序器中接收命令信息(方框 465)。该命令信息可以包括控制和/或配置信息以及将被处理的数据。因此,加速器可以按 照所述命令信息执行操作(方框470)。可以并行于独立执行操作的定序器执行这些操作。 也就是说,定序器无需在执行其它有用功之前等待加速器完成它的操作。如上所述,可以以 MIMD方式执行定序器和加速器中的操作,并且在一些实现方式中可以对应于互不相关的操 作。当加速器完成它的操作时,外骨骼可以相应地通知定序器(方框475)。然后,在用 户级代码的控制下,例如,启动用户级事件处理程序的轻度用户级产生机构,可以通过外骨 骼将与加速器中获取的各种结果相应的数据传输到定序器(方框480)。虽然在图5和图6 的实施例中用这个具体的流程进行了描述,应当理解的是,本发明的范围不因此受限。使用根据本发明的实施例的外定序器,可以执行不同级别的提取。例如,在一些实 现方式中,虚拟或复杂指令集计算机(CISC)指令可以发送给外骨骼,然后其执行扩展以便 将这种指令映射到加速器的本地的物理指令或命令序列,该加速器可以是不同于第一定序 器的ISA的定序器或根本是一个非定序器。因此,如果加速器的基本命令集随时间被修改 或改善,则仍然可以通过这种提取的级别提供传统支持。以这种方式,即使对于传统用户级 应用程序也可以实现在加速器上提高性能。在其它实现方式中,可以从定序器将直接或精 简指令集计算(RISC)指令发送到可以直接执行加速器硬件上的指令的外定序器。可以以许多不同的系统类型实现这些实施例。现在参考图7,示出了根据本发明 的实施例的系统的方框图。如图7中所示,多处理器系统500是点对点互连系统,并且包括 通过点对点互连550耦合的第一处理器570和第二处理器580。如图7中所示,处理器570 和580中的每一个可以是多核心处理器,包括第一和第二处理器核心(即,处理器核心57 和574b以及处理器核心58 和584b)。处理器570和580中的每一个可以进一步包括外 定序器,即,第一外定序器575和第二外定序器585。如上所述,外定序器575和585可以是 相对于处理器核心570和580的剩余资源的不同种类的资源。虽然仅仅用每个处理器的单 个外定序器示出,可以理解的是,本发明的范围不因此受限。在其它实施例中,给定的处理 器中可以存在多个外定序器。此外,一个或多个外定序器可以与处理器的每个独立核心有 关。第一处理器570进一步包括存储控制器集线器(MCH) 572和点对点(P_P)接口 576 和578。类似地,第二处理器580包括MCH 582和P-P接口 586和588。如图7中所示,MCH 的572和582将处理器耦合到各自的存储器,即存储器532和存储器534,其可以是与各自 的处理器本地连接的主存储器的一部分。第一处理器570和第二处理器580可以分别通过P-P互连552和554与芯片组 590耦合。如图7中所示,芯片组590包括P-P接口 594和598。此外,芯片组590包括接 口 592,用于将高性能图形引擎538与芯片组590耦合。在一个实施例中,加速图形端口(AGP)总线539可以用于将图形引擎538耦合到芯片组590。AGP总线539可以遵循由加利 福尼亚州,圣克拉拉,英特尔公司于1998年5月4日公布的加速图形端口接口规格,修订版 2. 0 (AcceleratedGraphics Port Interface Specification, Revision 2.0)。另一方面, 点对点互连539可以耦合这些组件。依次,芯片组590可以通过接口 596与第一总线516耦合。在一个实施例中,第一 总线516可以是外围设备组件互连(PCI)总线,正如PCI本地总线规约,生产版本,修订版 2. 1,注明日期1995年6月所定义的,或者诸如PCIExpress总线或另外的第三代I/O互连 总线之类的总线,尽管本发明的范围不因此受限。如图7中所示,各种I/O设备514可以耦合到第一总线516,以及将第一总线516 耦合到第二总线520的总线桥接器518。在一个实施例中,第二总线520可以是低引脚计数 (LPC)总线。各种设备可以耦合到第二总线520,各种设备包括例如,键盘/鼠标522、通信 设备5 以及诸如在一个实施例中可以包括代码530的磁盘驱动器或其它大容量存储设备 之类的数据存储单元528。进一步,音频I/O 5M可以与第二总线520耦合。注意,其它体 系结构是可能的。例如,代替图7的点对点体系结构,系统可以实现多支路总线或另外的这 种体系结构。可以用代码实现实施例并且可以存储到已经在其上存储了指令的存储介质上, 存储的指令可被用于编程系统以执行所述指令。存储介质可以包括但不局限于任何类型 的盘,其包括软盘、光盘、高密度盘只读存储器(⑶-ROM)、高密度可重写盘(⑶-RW)、和磁光 盘,诸如只读存储器(ROM),诸如动态的随机存取存储器(DRAM)、静态的随机存取存储器 (SRAM)的随机存取存储器(RAM),可擦除可编程只读存储器(EPROM),闪存,电可擦除可编 程只读存储器(EEPROM),磁或光卡之类的半导体装置,或任何其它类型的适用于存储电子 指令的介质。虽然本发明已经描述了相对有限数目的实施例,本领域中的那些普通技术人员可 以理解的是,可以由此产生大量的修改和变化。意图是附加的权利要求覆盖了所有的这种 修改和变化,正如落在本发明的真实精神和范围内。
权利要求
1.一种基于指令系统结构的内定序器与不同种类的资源通信的方法,包括通过第一指令定序器将请求从用户级应用程序传送到与第一指令定序器耦合的加速 器,其中加速器包括相对于第一指令定序器的不同种类的资源;通过第一指令定序器的第一指令系统结构的指令,通过耦合到加速器的接口逻辑向加 速器提供请求,其中加速器包括第二指令系统结构的资源;以及响应请求,并行于第一指令定序器中的第二功能执行加速器中的第一功能,其中所述 第一功能和所述第二功能是所述应用程序的线程的不同部分。
2.根据权利要求1所述的方法,其中通过第一指令定序器将请求从用户级应用程序传 送到与第一指令定序器耦合的加速器包括根据接口逻辑和加速器之间的专用协议,发送请 求到接口逻辑并且从接口逻辑传递请求到加速器。
3.根据权利要求1所述的方法,进一步包括传送请求而不需要操作系统的支持,其中 加速器对操作系统是透明的。
4.根据权利要求1所述的方法,进一步包括响应请求将加速器的体系结构状态的子集 提供到用户级应用程序。
5.根据权利要求1所述的方法,进一步包括响应请求将接口逻辑和加速器的集合体系 结构状态提供到用户级应用程序。
6.根据权利要求1所述的方法,进一步包括根据系统的配置识别该系统的禁止资源, 其中禁止资源被禁止以支持其它系统元件,并且将禁止资源配置为加速器。
7.根据权利要求6所述的方法,进一步包括通过禁止资源而不是通过操作系统级介质 驱动程序来执行用户级介质应用程序。
8.根据权利要求1所述的方法,进一步包括通过接口逻辑虚拟化加速器,以便加速器 内的功能性第一子集对用户级应用程序是可见的并且加速器内的功能性第二子集对操作 系统是可见的。
9.一种用于基于指令系统结构的内定序器与不同种类的资源通信的装置,包括 用于执行指令的第一指令定序器;以及耦合到第一指令定序器的资源,其包括加速器,用于对从第一指令定序器接收的数据执行至少一个操作,其中加速器包括相 对于第一指令定序器的不同种类的资源;以及与加速器耦合的接口逻辑,用于通过从第一指令定序器的第一指令组到第二指令定序 器的第二指令组的内定序器通信的转换,使内定序器能够在用户级控制下在第一指令定序 器和加速器之间通信,其中该加速器包括将被配置成在用户级控制下由第一指令定序器使用的第一部分;以及 将被配置成通过启用操作系统的应用程序而使用的第二部分, 其中第一指令定序器和加速器并行执行操作。
10.如权利要求9所述的装置,其中加速器包括固定功能单元,而接口逻辑包括与固定 功能单元耦合的有限状态机。
11.如权利要求9所述的装置,其中装置包括具有单个衬底的处理器,该单个衬底包括 所述第一指令定序器和所述加速器。
12.如权利要求9所述的装置,其中一旦完成至少一个操作,加速器将通知第一指令定序器。
13.如权利要求12所述的装置,其中通知之后,在用户级控制下,第一指令定序器将执 行事件处理程序,其中事件处理程序将接收和处理来自于至少一个操作的结果数据。
14.如权利要求9所述的装置,其中内定序器通信包括直接通信而不需要操作系统介入。
15.如权利要求9所述的装置,其中第一指令定序器包括本地指令系统结构的处理引 擎,而加速器包括非本地指令系统结构的处理引擎。
16.如权利要求9所述的装置,其中接口逻辑包括第一部件,用于启动对于加速器的体系结构状态信息的进入通信以及对于第一指令定 序器的状态信息的发出通信;以及第二部件,用于虚拟化在用户级控制下和在操作系统控制下使用的加速器。
17.一种用于基于指令系统结构的内定序器与不同种类的资源通信的系统,包括 第一处理器,其包括第一定序器,用于执行第一指令系统结构的指令;与第一处理器耦合的第一系统元件,用于执行专门的功能;与第一处理器耦合的第二系统元件,该第二系统元件包括第二定序器,该第二定序器 包括通过内定序器通信协议与第一定序器通信的接口,该内定序器通信协议的通信包括指 向在第二定序器上要执行的代码段的指令指针,第二定序器进一步包括与接口耦合的计算 资源,该计算资源具有对于专门功能的双重功能性,并且其中该计算资源通过该系统的配 置被禁止执行专门功能并且被配置成用作加速器并且在应用程序的请求下执行处理功能; 以及耦合到第一定序器和第二定序器的动态随机存取存储器。
18.如权利要求17所述的系统,其中第一定序器和第二定序器包括处理器的不同种类 的资源。
19.如权利要求17所述的系统,进一步包括用户级应用程序,用于使用处理引擎来执 行不同于专门功能的第一任务而不需要操作系统的支持。
20.如权利要求17所述的系统,其中第一定序器将向第二定序器提供虚拟命令,其中 接口将虚拟命令映射为与计算资源有关的第二指令系统结构的一个或多个指令。
全文摘要
在一个实施例中,本发明包括一种方法,用于在加速器和耦合加速器的指令定序器之间直接通信,其中加速器是相对于指令定序器的不同种类的资源。接口可以用于提供这些资源之间的通信。通过这种通信机制,用户级应用程序可以直接与加速器通信而不需要操作系统的支持。进一步,指令定序器和加速器可以并行执行操作。描述并要求了其他实施例。
文档编号G06F9/50GK102081556SQ201110026729
公开日2011年6月1日 申请日期2006年12月29日 优先权日2005年12月29日
发明者B·帕特尔, B·比格比, D·罗杰斯, G·希菲尔, G·蔡亚, H·王, H·蒋, J·P·赫尔德, J·沈, P·哈马隆德, R·汉金斯, S·考施克, Y·塔尔加姆, Y·尤塞夫 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1