在微处理器上使能多指令流/多数据流扩展的制作方法

文档序号:6613353阅读:207来源:国知局
专利名称:在微处理器上使能多指令流/多数据流扩展的制作方法
在微处理器上使能多指令流/多数据流扩展技术领域实施例属于计算机系统领域,更具体地说,属于多处理器系统中操 作系统接口和控制的领域。
背景技术
现代计算机系统中并行处理的快速发展已经引起了分区微处理器体 系结构的发展,诸如多核或多处理器系统。这又使能够开发当前多核微处理器体系结构的系统软件和应用程序的发展成为必要。MIMD (多指 令流、多数据流)模型是一个这种发展,其涉及并行执行模型,其中多 处理器系统中的处理器实质上彼此独立运行。在这种系统中,可以在功 能基础上为了并行执行的目的而分解程序或处理结构。例如,某些系统 可以为操作系统和应用程序使用单独的序列器或处理器。这种系统可以 使用操作系统管理序列器(OMS)来处理操作系统(OS)代码,并使用 应用程序管理序列器(AMS)来处理应用程序代码。在一般的OMS中, 能够既执行OS又执行应用程序代码,但是AMS仅能执行应用程序代码。理。然而,在这种系统中,必须作出调节,以保证OMS和AMS序列器 检测在什么时候它们中任何一个才丸行牵涉到操作系统的操作,诸如系统 调用(例如,打开文件等)、或者故障或异常。用于把专用AMS和OMS序列器之间的应用程序和操作系统处理分 离的系统具有的一个缺点是,由于操作系统不知道AMS,所以它不能总 向系统使用的某些对象或单元提供保护。发明内容根据本发明的一个方面,提供一种方法,包括检测需要应用程序管理序列器和操作系统管理序列器中的至少一个与在多处理器系统中执行的操作系统交互的条件;向所述操作系统管理序列器和所述应用程序 管理序列器分配存储器;初始化所述操作系统管理序列器中的特权状态; 以及将所述应用程序管理序列器的执行重定向到包括响应于所检测条件 的事件处理程序的内核特权级组件。根据本发明的另一方面,提供一种系统,包括操作系统管理序列 器,用以执行在多处理器平台中执行的操作系统的一个或多个处理线程; 应用程序管理序列器,用以执行所述多处理器平台上的一个或多个应用 程序;分配给所述应用程序管理序列器和操作系统管理序列器的存储空 间,用以存储包含所述操作系统和应用程序内容的一个或多个页面;以 及固件层,用以将所述应用程序管理序列器的执行重定向到包括硬件事 件处理程序的内核特权级组件,所述硬件事件处理程序响应于需要应用 程序管理序列器与所述操作系统交互的4企测条件。根据本发明的又一方面,提供一种机器可读介质,其上存储有多个 指令,当所述指令由系统中的处理器执行时,完成下列操作检测需要应用程序管理序列器与在多处理器系统中执行的操作系统交互的条件; 向所述多处理器系统中的操作系统管理序列器和所述应用程序管理序列 器分配存储器;初始化所述操作系统管理序列器中的特权状态;以及将 所述应用程序管理序列器的执行重定向到包括响应于所检测条件的硬件 事件处理程序的内核特权级组件。


图1是在一个实施例下实现用户级序列器管理和控制层的计算机系 统的框图。图2是示出在一个实施例下在OMS-AMS接口系统中检测和处理Ring 转变的整个过程的流程图。图3是示出根据一个实施例检测与OMS上发生的故障相关联的 Ring-0和Ring-3转变的方法的流程图。图4是示出在一个实施例下才莫拟处理器指令或执行OMS-AMS接口功能的过程的流程图。图5A示出根据一个实施例通过应用程序安全系统调用机制的成功 OS服务请求。图5B示出根据一个实施例通过应用程序安全系统调用机制的失败 OS服务请求。
具体实施方式
本文描述的实施例公开了 一种系统,用于允许模拟支持用户级序列 器管理和控制的多指令流/多数据流(MIMD)扩展,以及由操作系统管 理序列器和应用程序管理序列器执行的一组特权代码,包括不同组的持 续的按CPU和按线程数据。在一个实施例中,轻便代码层执行在净乘作系 统之下。响应于诸如OMS和AMS之间的通信需要等特定监控事件来调 用此代码层。当这发生时,将控制转移到此代码层,执行一个或多个专 用操作,并且控制返回到原始执^f亍代码的地方。当用户应用程序或操作 系统正在执行时,代码层通常处于休止状态,并且能够在任何时候调用。 包括保持处理器执行状态和中断状态的机制,其中处理器执行状态包括 控制寄存器。可以在一台计算机或执行软件指令的多台计算机上实现本文描述的 一个或多个实施例的各方面。计算机可以是独立的计算机,或者可以联 网到客户机-服务器配置或类似的分布式计算机网络中。图1是在一个 实施例下实现用户级序列器管理和控制层的计算机系统的框图。图1的计算机102表示计算才几平台的一部分,其包括一个或多个微 处理器设备或单元103和主存储器101,以及平台硬件设备105。计算机 102可以实施在一个或多个主板或者包括平台硬件块105内的至少一些组 件的集成电路设备上。例如,平台102可包括存储控制器、接口控制器、 耦合计算机组件的总线、以及多个緩沖器和用于将计算机直接或间接耦 合至一个或多个板上或板外外围设备或网络的类似电路。处理器103可 执行平台102的编程指令,而且可以是单核和/或多核处理器、控制器、 专用集成电路等等。图1的计算机平台102包括操作系统(OS) 104和驻留在存储器101 中的一个或多个应用程序106。尽管显示为驻留在单个存储器设备101 中,但应注意的是,OS 104和应用程序106能够驻留在平台102内的不 同存储器中,或耦合到平台102的存储器中。通常,操作系统104用作 提供执行应用程序106的操作环境,并提供应用程序106与平台102的 硬件105和其它资源之间的接口功能。应用程序106可包括任何数量或 类型的、由处理器103执行以完成特定任务或提供特定输出的不同软件 程序或组件。在本文使用时,术语"组件"是指可以用于获取所需结果 的编程逻辑和相关数据。它可以与"模块"或"代理"同义,并且可以 指代在硬件或固件中或者以编程语言编写的软件指令集合中包含的编程 逻辑,编程语言诸如C、 C++、 Java、 Intel⑧体系结构32位(IA-32)可 执行代码、Intel⑧体系结构64位(IA-64 )可执行代码等。对于图1中示出的实施例,平台102包括一个或多个微处理器103。 处理器103包括OS管理序列器(OMS) 110和应用程序管理序列器 (AMS) 112。通常,OMS 110是为操作系统104处理线程和为应用程序 106处理线程的处理器或处理器103的一部分;而AMS 112是为应用程 序106处理线程的处理器或处理器103的一部分。OMS和AMS之间的 这种功能性划分在图1中通过虚线箭头示出。与系统中所有处理器均与 操作系统交互的传统计算机系统不同,对于图l的实施例,各序列器110 和112利用专用指令和专用数据,这些专用指令和专用数据是它们相应 的执行域即OS或应用程序所需的。在完全隔离的系统中,由于AMS只 专用于执行应用程序线程,因此操作系统不知道AMS的存在。然而,仅 当应用程序代码和AMS活动不牵涉任何操作系统调用时,这类隔离才能 充分地起作用。实际上,系统需要能够检测AMS或OMS在什么时候执 行与操作系统交互的动作,诸如发出异常、打开文件或任何类似的系统调用类型。在一实施例中,平台102包括驻留在序列器110和112与OS 104和 应用程序106执行域之间的软件层108,并有效地担当了协调序列器之间通信的OMS-AMS接口。软件层108代表一个通用且轻便构架,用于允 许模拟支持用户级序列器管理和控制的MIMD扩展。对于平台102基于Intel Itanium 处理器或类似的IA-64体系结构 的实施例,OMS-AMS接口层108可作为处理器抽象层(PAL)的一部分 实现。当进入到代码层108时,将少量的寄存器诸如通用寄存器和断定 寄存器保存到临时存储空间以释放一些寄存器供使用。在退出代码层时 恢复这些寄存器。通常,PAL通过Itanium处理'器家族的多种实现来保持 与OS的一致处理器接口。在内核特权级(Ring-0)执行时,PAL固件实 质上包括两个组件提供受OS影响的处理器性能的状态和控制的一组服 务过程,和对处理器硬件事件进行观测并响应的OS透明的硬件事件处理 程序集。处理器103可包括可编程调试硬件支持,以便PAL层108对各 种各样的硬件事件进行观测并作出反应。另外,Itanium体系结构定义了 一组性能监控单元(PMU)接口以跟踪多个处理器事件的发生。PAL层 能对PMU编程,以对特定事件计数并将相应计数器溢出条件与硬件断点 事件相关联。尽管可与PAL相关地把实施例描述成OMS-AMS接口层108 的实现,但应该注意的是,接口 108可以是固件、微代码、VMM(虚拟 机监控器)、操作系统支持或任何微处理器平台体系结构的类似组件的任 意层。在一个实施例中,PAL层108是通过加载定制驱动程序而初始安装 的代码补丁。该驱动程序分配必要的存储器,初始化OMS IIO上的特权 状态,以及重新启动并初始化剩余的OS不可见序列器,诸如AMS 112。 该驱动程序还分配非页面存储器以用于OMS 110和AMS 112的持续数据 存储。如图l所示,平台102包括存储器101。有四种用于持续存储的存 储器类型,其中一些是按物理CPU分配的,并且是由驱动程序分配的; 而其中一些是按线程分配的,并且是由OS分配的。这些存储区域如下 (1)处理器全局型-在每个序列器组中(OMS及其关联的AMS),所 有序列器共享此区域,并且此存A者器由驱动程序分配;(2)处理器局部 型-专用于每个处理器(OMS或AMS),并由驱动程序分配;(3)线程全局型-序列器组中的每个处理器可以使用这种状态,其对当前由os调度到OMS上的线程是特定的,此存储器由OS在线程创建时分配并在线 程破坏时毁坏;和(4)线程局部型-对于线程特定的婆t据专用于当前处 理器(OMS或AMS),此存储器由OS在线程创建时分配并在线程破坏 时毁坏。在PAL代码路径安装期间分配驱动程序分配的存储器。这些存储区 域j又分配一次,并且持续到卸载该驱动程序。每个序列器110和112必 须保持指向这些区域的指针。这些指针可另外存储在不使用的寄存器中, 或者每个指针的地址可以嵌入在PAL处理程序中的入口代码中,而且基 于进入PAL代码的序列器的标识符将适当的指针加载到寄存器中。可选 地,每个序列器可具有不同的PAL代码入口点,而执行代码的序列可在 跳至用于序列器管理的公共PAL ^K码前将适当的指针加载到寄存器中。初始化后,所有OMS和AMS序列器110和112都安装了指向与它 们的序列器组关联的序列器全局区域的指针和指向它们的专用处理器局 部存储区域的指针,通常这些指针保持不变。当应用程序当前被调度到 该序列器组的OMS时,仅线程全局和线程局部指针有效。无论什么时候 将线程上下文恢复到OMS上,线程全局和线程局部区域的地址都通过已 插入OS中的专用命令来提供给PAL代码。然后OMS IIO将此信息传递 到其序列器组中的AMS 112。由于存取这些存储区域必须成功,即,它们必须不引起故障,所以 应该以物理模式来存取它们,或者,如果以虛拟模式存取的话,须将它 们的地址转换插接到TLB (转换后备緩沖区)中。这种需要能通过多种 方式满足。在PAL安装时间,可分配大块的存储区,而TR(转换寄存 器)可安装在每个处理器上,给出这个存储块的转换。然后从该大块存 储区给出不同的全局和局部存储区域,作为不同的厚块。第二个解决方 案是标识出对于OS内核在插接区域中另外不用的存储厚块。然后,将该 插接的TR入口安装到每个AMS上。在一个实施例中,OMS和AMS序列器110和112响应于多个预定义事件调用PAL层,诸如(1 )必须模拟用于MIMD支持的指令的执行; (2 )从另 一处理器接收处理器间中断(IPI)信号;和(3 )检测Ring转 变事件。当序列器跳到其PAL代码入口点时,它检查其状态以确定调用 代码的原因和适当的响应。在一些情况下,确定此原因可能需要持续状 态的检查。例如,如果^巴PAL代石马调用作为OMS从一个特权级返回到 另一个特权级(例如,从Ring-0到Ring-3)的结果,则必须确定OMS 当前是否正在处理代理请求。处理器在其PAL代码内在特定调用上通常 花4艮少时间,除了 AMS 112进入其中止状态之外,在此期间它在处理程 序内部的中止循环中运转,直到由外部信号重新开始。尽管前述和后续讨论可能涉及特定寄存器、指针、指令等,但是要 注意的是,实施例不仅仅局限于特定寄存器或微处理器体系结构,而是 能够使用任何类似的结构、组件、指令或其等同物。在一实施例中,OMS 110和AMS 112序列器之间的通信是通过处理 器间中断(IPI)结构的使用来实现的。这种中断信号可包括PMI (平台 管理中断)、NMI (非可屏蔽中断)和外部中断信号。当初始上电时,序 列器经过多个步骤,以便执行初始引导,并在等待继续由OS引导时最终 跳至空闲循环。通常,AMS 112不是由OS初始化,因此,为了初始化 AMS必须获得对AMS的初始控制,并且使用PMI IPI类型中断能够获 得该初始控制。当序列器接收到PMIIPI时,PMIIPI跳至寄存器(例如, XPN_PMI寄存器)中指定的物理地址,并且指令执行继续在物理模式下 执行的数据和指令存取。通过改变XPN一PMI寄存器中指示的目标地址, 序列器可以跳至不同的位置。可选地,可以修补默认目标地址处的代码, 以改为引起跳至用于MIMD模拟的PAL代码层。因此,修改默认XPN一PMI 目标处的代码,以引起跳至执行目标AMS初始化的代码,然后PMI IPI 被发送到AMS 112或系统中的每个AMS。因为有限数量的PMI向量可用,需要进一步的信息来区别特定IPI 想要的消息。不同类型之间的区别可通过使用PMI向量和存储器支持的 消息指示符(例如,存储在目标AMS的处理器局部区域中)的组合来得出,当接收到IPI时对其进行检查。根据这种方法,IPI被传递到通用IPI 向量上的序列器。然后,处理器4全查预定存储器位置以确定关于包括消息类型和参数的通信的更多细节。可选择地,如果从该位置中读出NULL 或无效值,则能确定IPI已经在所l是出的构架以外生成了,而且该控制应 该改为转移到原始的默认PMI处理程序。有大量消息类型能够在序列器 110和112之间发送。其中一些例子包括有PAUSE、 RESUME、 PROXY—REQUEST 、 SAVE—CONTEXT 、 RESTORE—CONTEXT 和 INITIALIZE 。当OMS 110正在内核内^丸行时,为了通过防止AMS 112继续"t丸行来 允许代理执行处理和保证正确处理,为OMS 110和AMS 112捕获所有CPL (当前特权级)转变是必需的。通常,CPL转变包括从Ring-3到Ring-0 转变和从Ring-0到Ring-3转变。 、在一个实施例中,系统102能利用检测和捕获从Ring-3到Ring-0转 变的三个可行方法中的至少 一个。第 一种方法包括使用中断向量表(IVA) 截取,其中到Ring-0的序列器转变或者通过一个故障。当故障发生时, 序列器跳至在IVA寄存器中指定的中断向量表地址,其包括每个故障向 量的截然不同的处理程序。为了捕获从Ring-3到Ring-0的Ring转变,IVA 被修改为指向在初始化期间由驱动程序安装的故障截取层。因此,无论 什么时候发生故障,首先将控制转移到虚设表,其完成处理所尝试的Ring 转变所需的任何工作;如果AMS 112引起故障,则虚设表进行代理请求 以处理该故障;如果OMS 110引起故障,则在跳至真实的、OS管理中 断向量表之前,其首先中止所有AMS进程。检测Ring-3到Ring-0转变的第二种方法是通过使用操作码匹配调试 特性来执行进入特权代码(epc)指令。当该指令是所匹配的操作码时, 控制被转移到PAL代码108。如果AMS执行该epc指令,则进行代理请 求。如果OMS执行了该指令,则首先中止所有AMS进程,然后OMS 跳至OS服务的内核。检测Ring-3到Ring-0转变的第三种方法是通过指令断点机制的执行。对于os指令和数据位于分离的存储区域内的实施例,调试指令断点机制可用于识别在Ring-0的执行。能够安装指令断点,其监控适当存储 区域中的任何指令执行,而且当这种情况发生时,触发控制转移到PAL 代码。可选地,因为OS内核的地址转换通常插接在TR内,因此还可采 用对该TR所转换的存取的监控。注意,通过一些修改,此机制还可用于 识别控制已返回到Ring-3。类似地,在一个实施例中,系统102可利用检测和捕获从Ring-0到 Ring-3转变的三个可行方法中的至少一个。第一种方法包括使用处理器 状态寄存器(PSR),其包括状态和控制标记的混合,如在Itanium体系 结构中所定义的。这些位中的一位,即单步(PSR.ss)使能当设置时, 在一条指令成功执行后强制 一个陷阱。该位一般用于允许调试程序的单 步操作。 一当进入到内核,PSR的ss位被设置成中断Ring-3状态(IPSR)。 在完成中断处理之后,Ring-3状态恢复为先前设置的PSR.ss位。 一个 Ring-3指令的执行保证已完成了由Ring-3指令触发的所有中断处理。在 执行Ring-3指令时,出现单步陷阱,然后其将陷阱信号重定向到PAL处 理程序,从而有效地俘获内核的退出路径。可以通过经由虛设故障截取 层截取单步故障向量,或者通过将单步故障重定向到直接控制,来检测 单步故障的发生。检测Ring-0到Ring-3转变的第二种方法是通过PMU溢出机制的使 用。当PAL层检测到向Ring-0的初始转变时,可以对可用PMU编程, 以对某种事件(例如,退役的指令或周期)的发生计数,但是将对此事 件进行计数仅限制在Ring-3。当之后控制返回到Ring-3时,此PMU将 对目标事件计数。当计数器溢出时,控制被重定向到OMS-AMS接口层 108,其4企测到回到Ring-3的转变已经发生。可通过在IVA截取层截取PMU 溢出向量,或通过将此溢出事件定向到直接控制来实施此控制转移。检测Ring-0到Ring-3转变的第三种方法是通过超越返回地址。当PAL 层108检测到向Ring-0的初始转变时,此Ring转变的返回地址被存储在 指针中,该指针能够被保存并被<奮改为到备选返回地址的直接控制。特别地,在执行适当的指令时,可以将控制定向到PAL层。当这发生时, 检测到Ring转变。根据Ring转变的性质,可以使用多个返回地址目标。 当冲企测到OMS 112已经返回到Ring-3时,如果它正在处理代理事件, 则发出终止代理的信号。如果它不是正在处理代理事件,则重新开始其 关联的AMS进程。因为AMS 112在Ring-0不执行任何OS代码,所以 没有机会检测到它们已"返回"到Ring-3。图2是示出在一个实施例下,在OMS-AMS接口系统中检测和处理 Ring转变的整个过程的流程图。该过程从块202中的CPL转变检测开始, 该转变可以是使用上述方法之一的Ring-3到Ring-0转变,或者是Ring-0 到Ring-3转变。在块204中,确定该转变是来自OMS 110还是AMS 112。 如果是来自AMS 112,则在块206检测到来自AMS的Ring转变,然后 在块208进行代理请求。如果在块204确定转变来自OMS 110,则在接 下来的块210确定该进程是否为被监控线程。如果不是被监控线程,则 OMS 110跳至真中断向量表,块212。如果是被监控线程,则OMS通过 中止命令或其等同命令中止AMS 112,并等待确认。当接收到确认时, AMS跳至操作系统,如块216所示。如图2所示,对于Ring转变是由于OMS的情形,采用中断向量表 (IVT)。图3是示出根据一个实施例当OMS上出现故障时检测关联的 Ring转变的方法的流程图。图3中示出了 OMS 304和AMS 306均执行 目标应用程序302的实例。当在OMS 304上发生故障时,控制立刻被转 移到IVA寄存器中给出的目标。对于此寄存器已被修改为指向在初始化 期间由驱动程序安装的专用故障截取层308的实施例,PAL代码108检 测到向Ring-0转变的尝试,如图3中的转变321所示。故障截取层308 首先通过PAL代码处理程序310的调用中止所有的AMS 306进程,如转 变322所示,然后继续跳至已经安装到OS内核312内的原始IVT 314, 如转变323所示。这允许OS内核312控制和处理故障。当完成时,OS 内核通过适当的指令经AMS 306返回到应用程序。通过上述机制之一, 诸如使用PSR.ss位,检测到该回到Ring-3的转变,并再次调用已安装的PAL代码,如转变324所示。然后进程重新开始AMS 306,最后返回到 用户程序,允许执行继续进行,如转变325中所示。在一个实施例中,使用诸如Itanium的IA-64处理器实现该系统,定 义了新的处理器指令。该新指令称之为sxfr,使OMS能够在可用的AMS 上执行派生工作。这种指令可以被模拟为MIMD ISA (指令集体系结构) 扩展的一部分。根据本实施例实现MIMD ISA扩展的系统必须根据相应 的结构化语义唯一地解码新ISA指令并执行它们。对于Itanium体系结构, PMU机制提供了 一种称为操作码匹配寄存器的实用程序,其允许PAL对 调试硬件编程,以识别并俘获编码在正处理的指令中的任何专用操作码。 当发现正在处理的指令与操作码匹配寄存器中指定的操作码值相匹配 时,该指令^皮标记。当它在流水线中向下游移动时,标记的指令^皮进一 步检查它是否符合任何后端事件。在异常4企测阶段,就在退役之前,被 标记的指令将触发硬件断点事件,并将控制直接转移到对应的PAL事件 处理程序,其又能够模拟指令语义。在Itanium体系结构中,用21位立即字段定义no-op (无操作)指令, 该字段可能被应用软件用作注释标志。在没有损失一般适用性的情况下, no-op指令用唯一文字值编码被保留以代替附加的指令,而暂时存储寄存 器被分配来唯一地指定哪个新指令被指示。在检测到专用no-叩的执行 后,控制被转移到PAL处理程序时,读取暂时存储寄存器,并执行对应 的语义。图4是示出在一个实施例下才莫拟处理器指令或执行OMS-AMS接口 功能的过程的流程图。如图4所示,碎片在OMS404上执行通过将SXFR 命令的标记值移动到暂时存储寄存器(例如,r9)中来触发PAL模拟, 然后执行专用NOP命令,如块410所示。当此发生时,启动向PAL代码 的控制转移,如转变421所示。PAL代码处理程序408检查该暂时存储 寄存器,确定要模拟的所请求命令(SXFR),并通过用适当的输入值向 AMS 406发信号通知来执行此操作,如转变423所示。然后,OMS 404 退出PAL代码408返回用户程序,如转变422所示,并将指令指针送进跟在专用NOP之后的指令。类似;也执行处理IPI的过程,但是在返回到 用户程序之前不送进指令指针。在一个实施例中,在没有任何操作系统 干涉或知晓的情况下,能够执行指今模拟。'在一个实施例中,OMS-AMS 4妾口层108包括保持OMS 110和AMS 112之间TLB (转换后备緩冲区) 一致性的机制。这增加了允许AMS选 择性调用OMS服务的能力。通常,TLB是在存储器中保持的表,它包 含有关处理器最近存取的存储器中的页面信息。TLB将程序的虚拟地址 与程序最近使用最多的物理存储器中的对应绝对地址交叉引用。在Itanium 处理器上,由软件管理转换后备^1冲区,但是用硬件支持改进的性能。 也就是说,当操作系统承受负责将TLB条目插入到处理器的TLB的极限 时,通过虚拟散列页表Walker ( VHPT )在硬件中自动处理绝大部分TLB 未中。该VHPT通过首先检查TLB条目的基于OS的高速緩存来减少TLB 未中惩罚,并且如果发现了所需条目,则将它透明地插入到TLB中。在 VHPT Walker未能自动插入此条目的情况下,产生故障,并且操作系统 安装TLB条目。在此方案下,在AMS上发生的绝大部分TLB未中由VHPT处理。 对于那些不是的情况,触发代理执^亍请求来处理TLB未中。无论什么时 候AMS进行OMS的代理请求,OMS都开始操作码匹配特定指令(例如, itc和ptc指令),其分别插入和清除TLB条目。无论什么时候检测到OMS 上的这些TLB指令中一个的执行,都在PAL处理程序中解码它们,并将 这些TLB指令的操作码值用IPI广^番给AMS。当接收到这种IPI时,AMS 执行所请求的操作。作为结果,在OMS上执行的相同TLB指令语义和 操作码值被复制在AMS上。通常,这种方法保证了正确性,但是可能在TLB未中故障很常见的 工作量方面效果很差。事实上,仅当AMS真正需要操作系统辅助前进时 (例如,当它遇到负荷引起真实页面故障时)才需要代理执行。在一个 实施例中,由OS或某种其它Ring-0可行软件部分提供称为应用程序安 全系统调用(ASC)的专用软件处理程序,该软件部分允许AMS在不需要采取完全代理执行的情况下,直接处理故障和系统调用。ASC用作代理执行过滤器。就是说,当需要某种Ring-0服务时,序 列器能够首先调用适当的ASC来尝试直接处理OS服务需求。如果成功, 则完全避免了代理执行请求,并且AMS继续执行。否则,返回错误条件 并且执行返回到完全代理执行。尽管ASC关于处理TLB未中进行描述, 它是一个常规技术,还可应用于任何其他经常遇到的系统调用或故障。通过用作代理执行过滤器,ASC在两种方式上改进了性能。第一, 因为AMS直接处理它自己的OS请求,所以增加了最小附加开销。例如, 不强制OMS保存和恢复它的状态,也不需要复制任何AMS状态,因为 它完全不在意AMS上的ASC执4亍。第二,由ASC处理的OS交互不强 制整个系统串行化。这使得多个AMS有可能同时执行OS交互(例如, 不同AMS的多个TLB未中)。在一个实施例中,ASC机制用于提供专用软件TLB未中处理程序。 该处理程序可能满足绝大多数AMS TLB未中,但是在真实页面故障的 情况下仍然需要代理执行。在传统平台中,当AMS引起TLB未中时, 通常AMS将立即请求代理执行。然而,对于ASC提供专用TLB未中处 理程序的实施例,AMS反而首先if兆至特别寄存的软件处理程序。该处理 程序导航OS管理数据结构,寻找未中页面的有效映射。如果该处理程序 找到这种映射,则它将TLB条目"t翁入到硬件TLB中,并完全避免了任何 代理执行请求。如果该处理程序未成功,诸如当已经发生了真实页面故 障时,则返回错误条件,并进行完全代理执行请求。图5A示出根据一个实施例通过应用禾旱序安全系统调用机制的成功 OS服务请求。对于图5A的实施例,OMS 502和AMS 504执行它们各 自的处理线程。AMS 506发出指示需要OS服务的请求511。专用AMS 处理程序508通过导航OS管理数据结构来处理该请求。图5A示出找到 未中页面的有效映射的情况。然而,在某些情况下,该请求可能失败。图5B示出根据一个实施例通过应用程序安全系统调用机制的失败 OS服务请求。对于图5B的实施例,OMS 520和AMS 522执行它们各自的处理线程。AMS 524向专用AMS处理程序526发出OS服务需要的请 求531。如果不能实现该请求,则处理程序返回请求失败信号532,然后 AMS执行完全代理执行请求533。通常必须将ASC配置为能够以安全方式执行某种系统请求,即如果 需要的话就能取消。然而,ASC的不同实现是可行的。实施例包括两种 用作ASC的实现安全代码的机制。第一,ASC可实现为回调。在这种情 况下,在任何程序已经执行了之前,为每个目标事件寄存ASC,而且每 个ASC的地址被传递到系统中的每个AMS。例如,可以在安装PAL补 丁时完成上述操作。可选地,可使用专用no-op,当其执行时使PAL代 码将ASC的细节广播给所有AMS,其中特定寄存器向此指令提供所需 的参数。然后在程序执行期间,当AMS引起一个故障或进行系统调用时, 执行检验来看是否已经为该特定事件寄存了 ASC。如果是,则AMS将 首先跳至ASC并执行ASC,而不是立即请求代理执行。所执行的ASC 尝试满足AMSOS服务请求,例如,校正故障或执行系统调用。如果ASC 不能满足,则系统返回到完全代理执行。在第二实施例中,ASC可实现为默认故障处理程序。OS内的默认故 障处理程序可以安全和可取消的方式实现,以致于当故障发生时,OMS 和AMS都能自由地直接调用OS提供的故障处理程序。如果ASC不足 以解决故障,例如,如果已经检测到TLB未中是真实页面故障,则取消 ASC的执行,并且需要进行完全代理执行。为了利用此方法,对Ring-0 截取代码作些修改。例如,可以修改IVT截取层以便对于特定向量,控 制直接传到原始OS提供的IVT。另外,当进行执行epc指令的尝试时, 能够分析输入寄存器,以确定由ASC处理的系统请求是否正在被请求。 如果是,则允许在不需要代理请求或中止当前活动的AMS的情况下,继 续Ring转变。虽然上述描述说明了 ASC用于过滤AMS代理请求,但它们还可用 于当OMS需要操作系统服务时改进性能。这是很有利的,因为它避免了 无论什么时候当OMS向Ring-0转变时所需的普通系统串行化。通常,OMS可以与AMS同样的方式利用ASC,也就是说,当OMS引起TLB未中 故障时,在尝试满足该请求时首先调用ASC,而不是中止系统中的所有 AMS。如果ASC调用不成功,则OMS返回到它正常的方法,即,中止 所有AMS,然后跳至真实操作系统入口点。上述实施例描述了一个软件层,其提供一种方法,通过该方法具有 本机(硬件级)MIMD ISA支持的处理器设计能够通过使用硬件和软件 支持的组合来简化。该软件层包括由OMS和AMS都执行的一组特权代 码,包括不同组的持续的按CPU和按线程数据。它截取在AMS和OMS 上出现的所有CPL转变,并且协调OMS和AMS之间的通信,包括初始 重新启动AMS和初始化AMS。它进一步允许AMS的高性能TLB未中 处理,这避免了来自代理执行的显著开销,并且对于OMS,避免了与中 止所关联的AMS相关联的显著开销。尽管描述是关于一个或多个特定处理器体系结构的,但是所描述的 实施例可应用于广泛的环境。因此,尽管已结合实践它们的优选形式及 其修改描述了当前实施例,本领域技术人员将能理解在下述权利要求范 围内能够进行很多其它修改。因此,不是意图通过上述描述以任何形式 限定所描述实施例的范围,而是参考下述权利要求完整地确定该范围。对于本说明书的目的,术语"处理器"或"CPU"是指能够执行指 令序列的任何机器,并应理解为,但不局限为,通用微处理器、专用微 处理器、专用集成电路(ASIC)、多媒体控制器、数字信号处理器和微控 制器等。与图1示出的系统关联的存储器可以实施为适于存储数字信息的各 种不同类型的存储器设备,诸如静态随机存取存储器(SRAM)、动态随 机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)和/或双 倍数据速率(DDR) SDRAM或DRAM,以及诸如只读存储器(ROM) 的非易失存储器。而且,存储器设备还可包括其他存储设备,诸如硬盘 驱动器、软盘驱动器、光盘驱动器等,以及适当的接口。该系统可包括 与I/O设备接口的适当接口, 1/0设备诸如盘驱动器、监控器、键盘、调制解调器、打印机或任何其他类型的适当1/0设备。本文描述的方法和系统的各方面可实跳'为编程到各种电路任一个中的功能,所述电路包括可编程逻辑器件("PLD"),诸如现场可编程门阵 列("FPGA',)、可编程阵列逻辑("PAL")器件、电可编程逻辑和存储 器件以及标准的基于单元的器件,以及专用集成电路。各种实现还可包 括具有存储器(诸如EEPROM)的微控制器、嵌入式微处理器、固件、 软件等。进一步地,各方面可以实施在具有基于软件的电路模拟、离散 逻辑(顺序和组合)、定制器件、纟莫糊(神经)逻辑、量子器件和上述任 何器件类型的任何混合的微处理器中。可以各种组件类型提供基础的器 件技术,例如,类似互补金属氧4匕物半导体("CMOS")的金属氧化物 半导体场效应晶体管("MOSFET")技术、类似射极耦合逻辑("ECL") 的双极技术、聚合物技术(例如,硅共轭聚合物和金属共辄聚合物金属 结构)、混合的模拟和数字等。在此广泛使用了术语"组件",作为本领域熟知的术语,应该理解"组 件"包括电路、元件、模块和/或电路、元件和/或模块的任何组合等。本文公开的各种组件和/或功能从它们的行为、寄存器传输、逻辑组 件和/或其它特征方面来讲,可使用任何数量的硬件、固件组合,和/或在 各种机器可读或计算机可读介质中实施的数据和/或指令来描述。在其中 可实施这种格式化数据和/或指令的计算机可读介质包括,但不局限于, 各种形式的非易失存储介质(例如,光、磁或半导体存储介质)和可通 过无线、光或有线信号介质或其任何组合来传输这种格式化数据和/或指 令的载波。通过载波传输这种格式化数据和/或指令的例子包括,但不局 限于,通过因特网和/或其他计算^L网络经由一个或多个数据传输协议来 传输(上载、下载、电子邮件等)。整个说明书和权利要求书,除非上下文明确需要,否则词语"包括"、 "包含"等类似用语应解释为包舍在内的含义,与排它或穷举的含义相 反;也就是说,是"包括,但不局限于"的含义。使用单数或复数的词 还分别包括复数或单数。另外,词语"本文"、"此后"、"上述"、"下述"以及类似含义的词是指本申请作为一个整体,而不是本申请的任何特定 部分。当词语"或者"用于指示具有两项或更多项的列表时,该词涵盖了该词的下述所有解释列表中的任一项、列表中的所有项和列表中各 项的〗壬意组合。所示实施例的上述描述不是意图通过公开而穷举或限制。本领域技 术人员应该意识到,虽然为了阐述的目的在此描述本系统和方法的具体 实施例和示例,但是可作出各种等同修改。本文提供的示教可应用于其 它系统和方法,而不仅限于上述描述的系统和方法。可以组合上述各种 实施例的元素和动作来提供更多的实施例。按照上述的详细描述可以对 方法和系统作出这些和其它改变。总之,在下述权利要求中,使用的术语不应解释为限制于本说明书 和权利要求书解释的具体实施例,而应解释为包括在权利要求范围内运 作的所有系统和方法。相应地,该方法和系统不局限于本7>开,而是由 权利要求书确定的整个范围。虽然下面以特定权利要求形式表示特定方 面,但是发明人企图以各种权利要求形式覆盖各个方面。因此,发明人 保留在申请提交后添加附加权利要求的权利,以同样为其它方面补充这 种附加权利要求形式。
权利要求
1.一种方法,包括检测需要应用程序管理序列器和操作系统管理序列器中的至少一个与在多处理器系统中执行的操作系统交互的条件;向所述操作系统管理序列器和所述应用程序管理序列器分配存储器;初始化所述操作系统管理序列器中的特权状态;以及将所述应用程序管理序列器的执行重定向到包括响应于所检测条件的事件处理程序的内核特权级组件。
2. 如权利要求1所述的方法,其中所分配的存储器从包括处理器全 局存储器、处理器局部存储器、线程全局存储器和线程局部存储器的组 中选择。
3. 如权利要求2所述的方法,还包括初始化所述操作系统管理序列器中的第一指针,以指向与第 一序列 器组关联的全局区域;初始化所述操作系统管理序列器中的第二指针,以指向第 一处理器 局部存储区域;初始化所述应用程序管理序列器中的第 一指针,以指向与第二序列 器组关联的全局区域;以及初始化所述应用程序管理序列器中的第二指针,以指向与第二处理 器局部存储区域关联的全局区域。
4. 如权利要求1所述的方法,其中所述条件包括从所述多处理器系 统中的第 一处理器接收处理器间中断信号。
5. 如权利要求4所述的方法,其中所述条件包括检测Ring转变事件。
6. 如权利要求5所述的方法,其中所述Ring转变事件包括Ring-0 到Ring-3转变。
7. 如权利要求5所述的方法,其中所述Ring转变事件包括Ring-3 到Ring画0專争变。
8. 如权利要求5所述的方法,还包括如果所检测的条件由所述应用程序管理序列器引起,则完成所述条 件的代理执行处理;如果所述条件由所述操作系统管理序列器引起,则确定所述条件是 否为被监控线程;以及如果所述条件发生在被监控线程内,则跳至由中断向量表指向的执 行位置。
9. 如权利要求4所述的方法,其中所述内核特权级组件包括功能上 驻留在所述多处理器系统的至少一个处理器与所述操作系统之间的固件 层,并且其中硬件事件处理程序对于所述操作系统是透明的。
10. 如权利要求9所述的方法,其中所述至少一个处理器包括64位 处理器,并且其中所述内核特权级组件包括由所述64位处理器体系结构 定义的处理器抽象层。
11. 如权利要求1所述的方法,还包括保持由所述操作系统管理序 列器和所述应用程序管理序列器通过虚拟散列页表Walker所利用的转换 后备緩冲区的一致性。
12. —种系统,包括操作系统管理序列器,用以执行在多处理器平台中执行的操作系统 的一个或多个处理线程;应用程序管理序列器,用以4丸行所述多处理器平台上的一个或多个 应用程序;分配给所述应用程序管理序列器和操作系统管理序列器的存储空 间,用以存储包含所述操作系统和应用程序内容的一个或多个页面;及固件层,用以将所述应用程序管理序列器的执行重定向到包括硬件 事件处理程序的内核特权级组件,所述硬件事件处理程序响应于需要应 用程序管理序列器与所述操作系统交互的检测条件。
13. 如权利要求12所述的系统,其中所述至少一个处理器包括64 位处理器,并且其中所述固件层包括由所述64位处理器体系结构定义的 处理器抽象层。
14. 如权利要求13所述的系统,其中所述存储空间从包括处理器全 局存储器、处理器局部存储器、线程全局存储器和线程局部存储器的组 中选择。
15. 如权利要求12所述的系统,其中所检测条件从包括如下项的组 中选择处理器从所述多处理器系统中的另 一个处理器接收处理器间中 断信号;以及处理器检测Ring转变事件。
16. 如权利要求15所述的系统,其中所述Ring转变事件从包括Ring-0 到Ring-3转变和Ring-3到Ring-0转变的组中选择。
17. 如权利要求16所述的系统,还包括由所述操作系统管理序列器 和所述应用程序管理序列器所利用的转换后备緩冲区,所述转换后备缓 冲区内容通过虚拟散列页表Walker控制。
18. —种机器可读介质,其上存储有多个指令,当所述指令由系统 中的处理器执行时,完成下列操作检测需要应用程序管理序列器与在多处理器系统中执行的操作系统 交互的条件;向所述多处理器系统中的操作系统管理序列器和所述应用程序管理序列器分配存储器;初始化所述操作系统管理序列器中的特权状态;以及 将所述应用程序管理序列器的执行重定向到包括响应于所检测条件的硬件事件处理程序的内核特权级组件。
19. 如权利要求18所述的机器可读介质,还包括执行下列操作的指令初始化所述操作系统管理序列器中的第 一指针,以指向与第 一序列 器组关联的全局区域;初始化所述操作系统管理序列器中的第二指针,以指向第一处理器局部存储区域;初始化所述应用程序管理序列器中的第 一指针,以指向与第二序列 器组关联的全局区域;以及初始化所述应用程序管理序列器中的第二指针,以指向与第二处理 器局部存储区域关联的全局区域。
20.如权利要求19所述的机器可读介质,还包括执行下列操作的指令如果所检测条件由所述应用程序管理序列器引起,则完成所述条件 的代理执行处理;如果所述条件由所述操作系统管理序列器引起,则确定所述条件是 否为被监控线程;以及如果所述条件发生在被监控线程内,则跳至由中断向量表指向的执 行位置。
全文摘要
本文描述的实施例公开了一种系统,用于允许模拟支持用户级序列器管理和控制的MIMD ISA扩展,以及由操作系统管理序列器和应用程序管理序列器执行的一组特权代码,包括不同组的持续的按CPU和按线程数据。在一个实施例中,在操作系统之下执行轻便代码层。此代码层响应于特定监控事件而调用,诸如操作系统管理序列器和应用程序管理序列器之间的通信需要。控制被转移到此代码层,用于执行特别操作,然后控制返回到原始执行代码。当执行用户应用程序或操作系统时,该代码层通常处于休止状态,并且能够在任何时候调用。
文档编号G06F15/80GK101236512SQ20071017015
公开日2008年8月6日 申请日期2007年9月25日 优先权日2006年9月27日
发明者A·马利克, B·林特, G·钦亚, J·科林斯, K·亚马达, P·王, R·汉金斯 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1