CN100472456C - 确定用户程序是否作出了系统级调用的方法和系统 - Google Patents
确定用户程序是否作出了系统级调用的方法和系统 Download PDFInfo
- Publication number
- CN100472456C CN100472456C CN200510079206.9A CN200510079206A CN100472456C CN 100472456 C CN100472456 C CN 100472456C CN 200510079206 A CN200510079206 A CN 200510079206A CN 100472456 C CN100472456 C CN 100472456C
- Authority
- CN
- China
- Prior art keywords
- processor
- user program
- frame
- interruption
- system call
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1658—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1629—Error detection by comparing the output of redundant processing systems
- G06F11/165—Error detection by comparing the output of redundant processing systems with continued operation after detection of the error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1675—Temporal synchronisation or re-synchronisation of redundant processing components
- G06F11/1687—Temporal synchronisation or re-synchronisation of redundant processing components at event level, e.g. by interrupt or result of polling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3404—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for parallel or distributed programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3495—Performance evaluation by tracing or monitoring for systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1629—Error detection by comparing the output of redundant processing systems
- G06F11/1641—Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1629—Error detection by comparing the output of redundant processing systems
- G06F11/1641—Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
- G06F11/1645—Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components and the comparison itself uses redundant hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1675—Temporal synchronisation or re-synchronisation of redundant processing components
- G06F11/1683—Temporal synchronisation or re-synchronisation of redundant processing components at instruction level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/18—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
- G06F11/183—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components
- G06F11/184—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components where the redundant components implement processing functionality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/18—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
- G06F11/183—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components
- G06F11/184—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components where the redundant components implement processing functionality
- G06F11/185—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components where the redundant components implement processing functionality and the voting is itself performed redundantly
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Hardware Redundancy (AREA)
Abstract
确定用户程序是否已经作出系统级调用以及用户程序是否因此与容错操作不合作的方法和系统。一些示范性的实施例可以是基于处理器的方法,包含:提供来自第一个处理器(PA,PB,PC)的信息给第二个处理器(PA,PB,PC)(该信息表示在第一个处理器(PA,PB,PC)上执行的用户程序在预定数量的时间内还没有作出系统级调用),并由第一个处理器(PA,PB,PC)使用来自第二个处理器(PA,PB,PC)的信息,确定在第二个处理器(PA,PB,PC)中基本上同时执行的用户程序的复本是否已经在预定数量的时间内作出了系统级调用。
Description
背景技术
相关申请的交叉引用
本申请要求序列号为60/557,812(HP PDNO 200403395-1(2162-28500))的临时申请的权益,以下其如同全文再现一样在此包含于本申请以作为参考。更进一步的,本申请与以下共同提交的申请相关:申请序列号(HP PDNO200316143-1(2162-22100)),标题为,“在非确定的处理器上执行用户程序的方法和系统”;申请序列号(HP PDNO 200316181-1(2162-22200)),标题为,“在执行用户程序的多个处理器中提供异步中断服务的方法和系统”;和申请序列号(HP PDNO 200316183-1(2162-22400)),标题为,“在处理器之间交换信息的方法和系统”。
发明背景
对于计算机系统设计者来说,至少有两种计算错误可能是被关心的。第一种错误可能是硬件故障,例如处理器或者不可恢复的存储器错误的故障。第二种错误可能是计算错误,例如可以是由改变硬件中的比特状态的宇宙射线所导致的。为了使计算机系统在出现硬件故障之后保持可操作性,或者检测并从计算错误中恢复,有些计算系统具有执行相同软件应用程序的多个处理器。如果其中一个处理器发生了硬件故障,通过一个或者更多的仍在正常运行的处理器得以继续计算。比较多个处理器的输出可以允许对计算错误的检测和修正。
在某些情况下,执行相同软件应用程序的多个处理器以逐周期的或者严格锁步的方式操作,每个处理器被提供给完全相同的时钟信号,并且逐周期的执行相同的软件代码。当处理器时钟频率提高时,芯片尺寸(die size)也同样提高。提高了的时钟频率,以及与更大的芯片尺寸的结合,使得难以控制计算机系统的时钟信号的相位差异,因此也难以实施严格锁步。更多的困难可能包括可恢复错误(软件错误)的处理,其仅在一个处理器而不是在其它多个处理器中发生。为了处理这些困难,一些计算机制造商可能实施宽松锁步的系统,其中处理器执行相同的代码,但却不必以逐周期的方式或者在相同的挂钟(wallclock)时间。为了确保执行相同代码的处理器之间互相偏离的不会太远,这些系统对执行过的指令计数,并在达到预定的指令总数后进行同步,停止较快的处理器以使较慢的处理器得以赶上。
然而,处理器设计的新兴技术允许非确定性的处理器运行。非确定性处理器运行可以意指被提供了相同的软件应用指令的多个处理器将不必以相同的顺序或者使用相同的步骤总数来执行这些指令。这些区别可以归因于如下的技术进展,例如推理性运行(例如分支预测),无次序处理,以及在处理器内部执行的软件错误恢复。从而,两个或更多的执行相同软件应用程序的处理器可以不精确地运行相同的指令序列,因此严格锁步容错以及依赖于对已执行指令计数的宽松锁步是不可能的。
附图说明
为了详细说明本发明的示范性的实施例,现在将参照附图,其中:
图1示出了根据本发明实施例的计算系统;
图2更详细的示出了根据本发明实施例的计算系统;
图3示出了根据本发明实施例的计算系统的一部分;
图4示出了根据本发明至少一些实施例的示范性的时间线(timeline);
图5A和5B示出了根据本发明实施例的可由中断控制例行程序实施的流程图;
图6示出了根据本发明实施例的可在同步逻辑内实施的流程图;
图7示出了根据本发明实施例的可由系统调用实施的流程图;
图8示出了根据本发明实施例的一种时间线;
图9示出了根据本发明实施例的一种时间线;
图10示出了根据本发明实施例的一种时间线;
图11示出了根据本发明实施例的一种时间线;
图12A和12B示出了根据本发明实施例的可由非合作过程(uncooperativeprocess)处理例行程序实施的流程图;
图13也示出了根据本发明实施例的另一个时间线;和
图14示出了根据本发明实施例的可由过程级重组例行程序实施的流程图。
具体实施方式
符号和术语
贯穿于下面的说明书和权利要求书的某些术语用于指示特定系统组成。正如本领域技术人员能够理解的,多个计算机制造公司可以用不同的名称来指示一种元件。本文件并不想在仅仅是名称不同而不是功能不同的组件之间加以区别。
在以下的讨论和在权利要求中,术语“包括”和“包含”以一种开放的方式被使用,因此应当被解释以表示“包括,但不限于……”。同样,术语“耦合”想要表示间接或直接连接。因此,如果第一个设备耦合到第二个设备,该连接可以是通过直接连接,或者是通过经由其它设备和连接的间接电连接。
详细说明
以下的讨论是针对本发明的多种实施例的。尽管这些实施例中的一个或者更多可能是优选的,公开的实施例不应当被解释为,或者相反被用于作为限制公开的范围。另外,本领域技术人员能够理解,以下的说明具有广泛的应用,并且任何实施例的讨论仅仅意味着该实施例的示范性,并不想表明公开的范围被限于该实施例。
图1描述了一个根据本发明实施例的计算系统1000。特别的,计算系统1000可以包含多个多处理器计算机系统10。在一些实施例中,可能仅有两个多处理器计算机系统10被使用,这样,计算系统1000可以实现一个双模冗余(DMR)系统。如图1所示,计算系统1000包含三个多处理器计算机系统10,因此实现一个三模冗余(TMR)系统。不管计算机系统是双模冗余还是三模冗余,通过在多处理器计算机系统上冗余地执行用户程序,计算系统1000实现容错。
根据本发明的实施例,每个多处理器计算机系统10优选的包含一个或多个处理器,如图1中所示有四个处理器。图1中的每个处理器具有一个前缀“P”,表示一个处理器。更进一步的,每一个处理器被给予一个字母标记“A”、“B”或者“C”,以表示在多处理器计算机系统10A,10B和10C之一中该处理器各自的物理位置。最后,每一个处理器被给予一个数字标记以表示该处理器在每个多处理器计算机系统中的位置。这样,例如,在多处理器计算机系统10A中的处理器具有标记“PA1”,“PA2”,“PA3”和“PA4”。
根据本发明的实施例,每个多处理器计算机系统10的至少一个处理器可以被逻辑的分组以构成一个逻辑处理器12。在图1所示的实施例中,处理器PA3,PB3和PC3被分组以构成逻辑处理器12。根据本发明的实施例,逻辑处理器中的每个处理器基本上同时执行用户程序的复本,从而实现容错。更特别的,该逻辑处理器中的每个处理器提供用于该用户程序的相同的指令流,并计算相同的结果(假定没有错误),但是逻辑处理器中的多个处理器不是在逐周期地进行或者在严格的锁步中;相反的,处理器是宽松锁步的,其同步和对发生的中断的处理是基于会合点(rendezvous point)(在下文讨论)而实现的。根据一些实施例,这些处理器可以具有非确定的执行过程,因此严格锁步是不可能的。如果一个处理器产生故障,剩余的一个或者多个处理器可以继续运行,而不影响整个系统的性能。
因为在一个逻辑处理器中可能有两个或更多处理器执行同样的用户程序,会产生完全相同的读取和写入,例如到输入/输出(I/O)设备14和16的读取和写入。I/O设备14和16可以是任何适当的I/O设备,例如,网络接口卡,软盘驱动器,硬盘驱动器,CD ROM驱动器和/或键盘。为了比较用于错误检测的读取和写入,每个逻辑处理器具有与之相关的同步逻辑。例如,处理器PA1,PB1和PC1可以形成一个与同步逻辑18相关的逻辑处理器。同样的,处理器PA2,PB2和PC2可以形成一个与同步逻辑20相关的逻辑处理器。逻辑处理器12可以与同步逻辑22相关。最后,处理器PA4,PB4和PC4可以形成一个与同步逻辑24相关的逻辑处理器。因此,每个多处理器计算机系统10可以通过互连26而——耦合到同步逻辑18,20,22和24上。互连26可以是外设设备互连(PCI)总线,尤其是串行PCI总线,尽管也可以等价地使用其它总线和/或网络通信结构。
每个同步逻辑18,20,22和24包含一个表决器逻辑单元,例如同步逻辑22的表决器逻辑28。以下的讨论,虽然是针对同步逻辑22的表决器逻辑28的,但也可同样应用于每个同步逻辑18,20,22,24中的每个表决器逻辑单元。表决器逻辑28起到巩固来自于处理器的读写请求的作用,并且在处理器之间的信息交换中起作用。考虑到解释的目的,逻辑处理器12中的每个处理器执行它的用户程序的副本,每个处理器产生一个到网络接口34的读取请求。逻辑处理器12的每个处理器发送它的读取请求到表决器逻辑28。表决器逻辑28接收每个读取请求,比较这些读取请求,并且(假定读请求是一致的)发出一个单个读取请求到网络接口34。
响应由同步逻辑发出的该单个的读取请求,例示的网络接口34将所请求的信息返回给表决器逻辑28。接下来,表决器逻辑复制并传递所请求的信息给逻辑处理器的每一个处理器。同样的,对于其他输入/输出功能,例如写和传输分组消息到其他程序(可能在其他逻辑处理器上执行),同步逻辑确保请求匹配,然后将单个请求转发到适当的位置。如果逻辑处理器中的任何一个处理器不能正常的运转(例如,未能产生请求,未能在给定时间内产生请求,产生了一个不匹配的请求,或者完全故障),用户程序可以基于逻辑处理器其余的一个处理器或多个处理器的请求继续。同样的对于外部产生的通信,同步逻辑复制外部的通信并且将通信提供给每一个处理器。在外部产生的请求是直接存储器存取的情况下(也被称作远程DMA),同步逻辑复制该用于分配的请求,并基于这些请求比较和合并由每个处理器提供的数据。
除了合并到外部接口(例如网络接口34)的读取和写入,以及从那些外部接口复制信息和数据之外,同步逻辑还用于当对该信息的请求被作出时,确保提供给每个处理器相同的时刻。尤其是,用户程序可能在它们的执行过程中的一些特定点做出系统调用以请求时刻信息。系统调用是对特权程序(privilegedprogram)(在比用户模式更高的特权模式下执行)的任一调用,例如操作系统程序。获得时刻的系统调用仅仅是落在系统调用范畴之内的程序族的一个例子,系统调用在同步逻辑处理器中的处理器之间的用户程序中以及处理中断中的作用将在下面被更充分的讨论。为了给每个用户程序在用户程序中的相应的执行点提供给相同的时刻(不管当达到这些执行点时的挂钟时间的差异),根据本发明的同步逻辑提供时刻信息给逻辑处理器中的每个处理器。也就是说,作为在每个处理器的每个用户程序中调度一个点来服务于中断(以下将更充分地讨论)的过程的一部分,同步逻辑提供时刻信息给每个处理器。胜于当用户程序如此请求时从内部得到时刻,根据本发明实施例的时刻系统调用利用由同步逻辑提供的最近的时刻信息。这样,不依赖于用户程序是否运行在精确相同的挂钟时间,提供给每个用户程序相同的时刻信息。
图2更详细的示出了多处理器计算机系统10。尤其是,图2示出了根据本发明多个实施例的多处理器计算机系统10,该计算机系统可以具有多个处理器,在图2例示的情况中有四个这样的处理器34,36,38和40。尽管只有示出四个处理器,在不脱离本发明的范围和精神的情况下,可以使用任何数目的处理器。多个处理器34-40可以是独立封包的处理器,在单个封包中处理器封包包含两个或更多的处理器印模,或者是多个处理器,或是单个芯片。每个处理器可以经由处理器总线44耦合到一个I/O桥和存储控制器42(在下文中I/O桥42)上。I/O桥42经由存储器总线45将处理器34-40耦合到一个或多个存储器模块46上。从而,I/O桥42控制对由一个或多个存储器模块46所定义的存储区域进行读和写。I/O桥42也容许处理器34-40中的每一个耦合到同步逻辑(图2中未示出)上,如总线线路43所示例的。
仍然参照图2,由一个或多个存储器模块46定义的存储器可以被分割,每个处理器具有一个分区,因此允许每个处理器独立的操作。在可选择的实施例中,每个处理器可以拥有其自己的集成的存储控制器,从而每个处理器可以拥有其自己的专有存储器,这也在本发明的设想中。计算系统1000(多处理器计算机系统10可能形成其一部分)在逻辑处理器的处理器中实施用户程序的宽松锁步的运行。宽松锁步可以意指逻辑处理器(例如,逻辑处理器12)的每个处理器可以执行用户程序的一个复本拷贝,但是这些指令不需要以严格锁步的形式被执行,也不需要在相同的挂钟时间被执行。从而,处理器34-40可以具有各式各样的结构,包括(但是不限于)非确定性处理器,其可能不适合于严格锁步的执行过程,或者不适合用于已执行指令的计数。Intel的Itanium处理器系列(IPF)是运行非确定性执行过程的处理器系列的一个例子,该处理器系列因而不适合于严格锁步的执行过程或者用于已执行指令的计数。
图2更进一步的示出,每个多处理器计算机系统10包含一个耦合在I/O桥42和存储器模块46之间的重组逻辑48。图1的示例性实施例示出重组逻辑(线51)的环状互连,但是任何网络拓扑都可以等效使用(例如,环状,树状,双环状,完全连接的)。在操作中,重组逻辑48对于I/O桥42是透明的,并且不干涉对一个或者多个存储器模块46所进行的读取和写入。然而,如果逻辑处理器中的一个处理器发生了一个错误,并且需要重启,重组逻辑48发挥作用。
当重启一个处理器时,在与逻辑处理器中没有发生错误的处理器相同的点开始用户程序的执行是理想的。另外声明,重启的处理器可以在其它处理器在用户程序中已经到达的点开始,而不是在该处理器发生瞬时故障或硬件错误的地方。在图2示出的实施例中,每个多处理器计算机系统10中的重组逻辑48从非故障的多处理器系统的存储器复制存储器,该系统没有发生它的处理器错误。从而,再次参照图1,线条51表示每个多处理器计算机系统10使得它们的重组逻辑48耦合到一起,以便于存储器分区的复制,从而重启的多处理器计算机系统可以从与逻辑分区中的其它处理器相同的状态开始。整个存储器的复制,以及随后由于系统中的一个处理器的故障而导致的多处理器计算机系统中的所有处理器的重启,可以由单个存储控制器(I/O桥)42来支配。在可选择的实施例中,可以有多个存储控制器(例如,每个处理器一个),从而仅仅需要复制一部分存储器(也就是说,相应于需要重启的处理器所使用的存储控制器的那些存储器分区),同样的仅仅一部分处理器需要被重启(也就是说,那些与被复制的存储器相关联的)。
在宽松锁步系统中,一个处理器领先或者滞后的原因可能有很多。例如,尽管每个处理器可以以基本上相同的时钟频率执行指令,即使实际时钟频率中很小的差异经过一段时间也会导致实质上的不同(定时的不确定性)。而且,根据本发明的至少一些实施例实施的处理器具有非确定性的执行过程,从而即使被提供给精确相同的用户程序,处理器在达到用户程序的共同点所执行的步骤数目上也会大相径庭。更进一步的,某些处理器能够遇到数据存取延迟和/或固定的错误(非结构的可视状态不确定性)。一些例子可以是:一个处理器可能发生缓存丢失而其他处理器不会发生;一个处理器可能经受可修正的存储器错误,从而请求执行一个其余处理器所不需要的恢复例行程序;和一个处理器可能发生一个转换旁视缓冲器(Translation Look-aside Buffer)故障,导致附加的处理但不会影响用户程序的最终结果。再者,即使多个处理器最终在用户程序中到达相同的执行点,已执行指令的数目和执行这些指令所需要的时间也可能是不一样的。
逻辑处理器的处理器可以执行相同的指令流,但是可能不在指令流的相同点,基于以上的想法,讨论转向在这样一个环境下的中断处理。即使精确地在相同的挂钟时间为每个处理器断言相同的中断,由于它们各自处理器的宽松锁步的执行,中断可能不能在用户程序的相同执行点被断言。由于中断断言其自身是异步的,困难被进一步加剧。为了保证正确的操作,逻辑处理器中的每个处理器需要在用户程序中的指令流的相同执行点来服务中断。根据本发明的实施例,通过利用同步逻辑作为一个机制来保持中断服务的会合点一致,完成确保中断在指令流的相同的执行点被服务。
根据本发明的实施例,逻辑处理器中的处理器相互之间进行通信:特定的中断被断言;用户程序中的一个建议点,在该点挂起执行过程和中断服务。另外要陈述的,逻辑处理器中的处理器约定产生哪个中断被服务(或者被首先服务),也约定在用户程序中要为该中断服务的一个点。图3示出了一部分计算系统1000,以便描述各个组件的操作,这些组件在一起工作以调整对中断的服务。图3是图1的系统的简化形式,逻辑处理器50在这种情况下仅包含两个处理器PA1和PB1。在另一种理解上,图3也是比图1更详细的,因为图3示出了每个处理器的存储器分区52,和处理器如何通过I/O桥42耦合到存储器分区以及表决器逻辑。从而,图3的逻辑处理器50包含来自于多处理器计算机系统10A和10B每一个系统的一个处理器。处理器PA1耦合到I/O桥42A,其依次耦合到同步逻辑18和PA1处理器的存储器分区52A。处理器PB1耦合到它的相应I/O桥42B,其依次耦合到同步逻辑18和PB1处理器的存储器分区52B。
根据本发明的至少一些实施例,使得逻辑处理器中的多个处理器,为了建立会合点而交换信息,每个处理器把信息写入到同步逻辑18的表决器逻辑56的同步寄存器54。根据本发明实施例,会合点可以是任何适当的位置,例如:每次操作系统的调度功能执行并且设置其它要执行的任务时;陷阱处理和错误处理;和由用户程序作出的系统调用。术语“系统调用”用在说明书和权利要求书中,是指任何潜在的会合点。系统调用编号可以是一个表示有多少系统调用已经从随机的开始点作出。图3的区域72示出了存储器分区52中的一个位置,在那可以存储系统调用编号。在可选择的实施例中,系统调用编号可以等效地储存于存储器分区52之外的寄存器中。在图3所示出的实施例中,多个同步寄存器54是预先指定的存储器位置,但是数据可以被写入的任何位置都是可以满足需要的。当一些或者全部处理器写入它们各自的信息后,表决器逻辑56把同步寄存器54中的信息写回到每个存储器分区52中的对应的一组寄存器57。表决器逻辑56也可以在写回操作期间把其他信息写入到寄存器57,例如时刻信息。把信息写入到同步逻辑允许在等待其余处理器看到中断的同时,用户程序的处理继续。在可选择的实施例中,每个处理器可以对同步寄存器54中的存储器区域作出等待的读取,等待意指着直到每个处理器写入对应的关于该中断的信息,读取才会完成。虽然作为副产品的等待的读取可以用来同步处理器,每个处理器在软件循环中等待以完成读取,因此作为一种交换关于中断的信息的机制,等待读取不允许用户程序继续其执行过程。不管数据交换如何执行,在逻辑处理器中的多个处理器通过交换信息来协调在用户程序服务该中断的点。
通过包含中断信息的基于分组的消息,或者通过专用的中断信号线,中断可能在任何时间被断言给处理器。中断也可能从内部源断言给处理器,例如一个设置为在一定数量的处理器时钟循环之后到期的定时器。当处理器接收并检测到这样一个数据包、信号线或内部中断时,用户程序被挂起,并且中断控制例行程序被调用。中断控制例行程序的目的是为了开始识别会合点的过程。对于中断控制例行程序的中断所请求的服务不作任何操作。会合点(例如,系统调用)是调度会合点的过程完成并且调度程序以服务于接收到的中断的点。
图4示出了根据本发明实施例的一组事件的示例性时间线(随页面向下而时间增长)。参考符号PA1和PB1下面的直立条分别代表那些程序的处理器的执行。在竖直线之间的块代表硬件和/或事件,而中间块和直立条之间的线把各种组件之间的交互作用描绘成时间功能。同时参照图3和图4,假定每个处理器接收到一个中断(如框58和指向每个直立条的箭头所示)。如所示的,该中断在不同的时间被断言给每个处理器。当接收到中断时,挂起用户程序并且执行中断处理例行程序(如交叉阴影区域59所示例的)。中断处理例行程序决定中断的性质,并且写入关于中断的信息以及建议的系统调用编号,在该系统调用编号处把中断提供给同步寄存器。中断信息和建议的系统调用编号的写入由线60示出,例示出处理器PA1接收到中断5,并且该处理器建议以系统调用号1001来服务该中断。同样的对于处理器PB1,尽管在用户程序中中断可能在略微不同的时间被断言,但中断处理例行程序在其后很快被执行(交叉阴影区域59),并且中断处理例行程序把一个中断已经被接收的指示以及建议的对中断进行服务的系统调用编号写入到同步寄存器54。一旦中断处理例行处理程序完成它的到同步寄存器的写入,用户程序继续它的执行(在点61和63开始)。
一旦逻辑处理器中所有的处理器已经把它们各自的数据写入到同步寄存器54,表决器逻辑56把同步寄存器54中的至少一部分信息写入到对应的寄存器57中,该寄存器57位于逻辑处理器中的每个处理器的存储器分区中。根据本发明的至少一些实施例,来自所有处理器的信息与时刻信息一起被写回到每个独立的处理器。
对中断进行服务的系统调用编号,在一些实施例中,是由逻辑控制器中的任一处理器建议的最高的系统调用编号。当每一个单独的处理器到达指定的系统调用编号(例如,作出一个时刻的调用,其系统调用编号是最高的建议的系统调用编号)时,每个单独的处理器的系统调用程序除了运行它指定的任务外,还将一个中断服务例行程序放置到它相应的发送队列以便执行。因此,处理器PA1在执行先前确定的系统调用编号(在该情况下SCN1001;在PA1的时序中由阴影区域64指示)之后,就为中断5(如阴影区域67所示)而执行服务例行程序。可选择的,服务例行程序可以在系统调用之前紧接着运行。在其后的某个时刻,滞后的处理器PB1到达先前确定的系统调用编号(SCN1001),执行该系统调用(阴影区域66),并且为示例性的中断5执行中断服务例行程序(在PB1时间线中的阴影区域67)。从而,尽管两个处理器不在同一时刻接收该中断,并且这些处理器仅仅是宽松锁步的,但是中断仍然在用户程序的相同点被服务。需要注意的是,如图4所示,每个处理器中的普通处理在接收到中断和执行中断处理例行程序后继续进行,直到达到执行中断服务例行程序的系统调用编号。还需要注意的是,在图4所示出的情况下,就它们的用户程序的执行点而言处理器之间的差异极小,从而在所例示的方法中处理器既不停机也不减速。图4所示的一系列事件是简单的情况,给出它是为了向读者表明根据本发明实施例的中断处理的性质。在对中断处理例行程序所采取的步骤以及由根据本发明实施例的系统调用执行的步骤的更详细的说明之后,在下文还给出了其他情况。
图5(包含图5A和5B)示出了一个根据本发明的实施例的中断处理例行程序的流程图。该过程可以通过中断的断言和中断处理例行程序的执行而开始(框500)。下一步可以是禁止中断(框502),随即确定触发中断处理的中断是否是非合作过程计时器的到期(框504)。如果非合作过程计时器导致这种中断处理的情况,非合作过程处理程序被调用(框506)。非合作过程以及如何根据本发明的实施例来处理它们,将参照图12在下文作更充分的讨论。假定该中断不是由非合作过程计时器的到期所导致的,触发的中断被加入到未决列表(框508),其包括中断类型的标识。在实施来自Itanium处理器系列的处理器的系统中,确定中断的类型可以通过读取中断矢量寄存器(IVR)来完成。因此,未决列表是一个已经被断言的中断的列表,但是对它们来说还需要开始调度会合点的过程。
示例性过程的下一步骤可以是确定是否试图调度一个必须完成的会合点(框510)。从处理器的角度来看,调度一个会合点可以是具有两个步骤的过程:将建议的会合点信息写入到同步寄存器54;并且从逻辑处理器的一些或者所有的处理器接收确认信息。因此必须要完成的会合点的调度可以是这种情况,在那里数据被写入到同步寄存器54,该寄存器是必须还要被返回的,或者对于该同步寄存器来说数据已经被返回但是还必须要被分析。如果没有未完成的尝试来调度会合点,所示出的方法可以从未决列表中选择最高优先权的中断(框512),其可以是触发中断或者先前放置在未决列表中的其他更高优先权的中断。可选择的实施例可以从未决列表中选择多个最高优先权的中断。其后,存储器分区(表决器逻辑最后将数据写入到其中)中的寄存器57被清除,并且中断编号和在为中断服务的建议的系统调用编号被写入到同步寄存器54(框514)中。系统调用编号可以是存储在每个处理器(如图3的区域72所示)的存储器分区的编号,其表示从任意的开始点算起有多少系统调用已经被作出。根据本发明的至少一些实施例,建议的系统调用编号可以是当前系统调用编号加一。通过大于一地递增系统调用编号来创建建议的系统调用编号也包含在本发明的范围和精神中。中断识别符和建议的系统调用编号(框512)的写入,在图4中由线60(对于处理器PA1)和线62(对于处理器PB1)示出。
现在绕过对即时动作中断的讨论,在写入同步寄存器之后,过程的下一步可以是将中断编号和建议的系统调用编号写入到未决会合记录,并且从未决列表中移除中断(框518)。因此未决会合记录是一个中断的列表,对于这些中断已经作出建议但是还没有接收到确认或者还未达成一致。一旦从表决器逻辑接收到其它处理器一致同意的确认,就运行图5的程序以及其它程序(尤其是关于图7所讨论的系统调用程序),清除来自未决会合记录的已记录的项目。根据本发明的至少一些实施例,未决会合记录可以是在每个处理器的存储器分区内的一组存储器区域46(参见图3)。其后,中断被激活(框520),并且中断处理过程结束(框522)。现在讨论转到在中断处理例行程序的情况下的即时动作中断。
如关于图4的讨论,用户程序可能在断言中断后恢复执行,因此将给处理器时间以同意要服务的是哪个服务以及服务该中断的一个系统调用编号。然而,某些中断需要被立即服务(不允许用户程序继续),因此可以被称为“即时动作中断”。即时动作中断可以包含页错误,以及改正非合作过程的动作。不属于即时动作类型的中断可以包含输入/输出(I/O)完成中断,排队事件中断,和在启动操作期间用于在处理器之间交换信息的软件事件中断。回到确定是否已经尝试调度必须要完成的调度会合点(框510),如果有一个未完成的调度会合点的尝试,下一步可以是检查表决器逻辑是否写回了关于先前未确认的会合点的信息(框524)。如果表决器逻辑必须要写回数据(框524),下一步可以是确定在未决列表中是否有即时动作中断(框528)。如果在未决列表中没有即时动作中断(框528),激活中断(框520)并且结束过程(框522),是因为对于先前中断的会合点的调度仍然必须要完成,并且根据某些实施例,每一次仅有一个调度的尝试可以被激活。另一方面,如果在未决列表中有即时动作中断(框528),为了写回来自先前调度尝试的数据,过程在软件循环(框530)中等待。当表决器逻辑把数据写回到寄存器57时,过程进行到图5B所描述(示)的方法步骤。同样的,如果有一个未完成的调度会合点的尝试(框510),并且表决器逻辑已经写回数据(框524),图5B所示出的方法步骤被调用。所示出的过程也可以到达在软件循环中的等待(框530),随后是图5B所示出的步骤,通过确定刚刚建议的中断是否是即时动作中断(框516)。
图5B示出了响应来自表决器逻辑的数据的返回所采取的步骤。尤其是,确定在中断处理的执行中是否建议了即时动作中断(框550)。如果这个所示出的子过程是经由框524(图5A的)进入的,那么即时动作中断不是被该处理器先前建议的。然而,如果这个所描述的子过程是经由框530(图5A的)进入得,那么即时动作中断是先前建议的,或者在未决列表中有一个即时动作中断。如果该处理器先前建议的中断不是即时动作类型,确定是否有其他处理器被建议服务于即时动作中断(框552)。如果那样,未决会合记录中的中断被移回到未决列表(框560),并且从未决列表中选择最高优先级的中断来恢复执行(图5A的框512)。如果逻辑处理器的其他处理器没有建议服务于即时动作中断(还是框552),在未决会合记录中作出关于中断和系统调用编号的符号记录,在该系统调用编号处服务那些由其它处理器建议的中断(框553)。其后,确定处理器是否在服务哪个中断的问题上取得一致(框554)。对于取得一致的中断,未决会合记录中的一个或更多的取得一致的中断被移动到确认列表中(框562),以从未决列表中选择最高优先级的中断来恢复执行(图5A的框512)。从而,除了另一个处理器建议即时动作中断(框552和560)的情况之外,中断一旦放置在未决会合记录中,就将保留在那儿,直到处理器对服务这些中断取得一致。
仍然参照图5B,返回到框550,如果先前建议的中断是即时动作类型(通过框530进入),然后分析由表决器逻辑返回的数据,以确定逻辑处理器中的其它处理器是否同样的被建议服务该即时动作中断(框558)。如果那样,一个恰当的即时动作中断服务例行程序被调用(框564),并且其标志被从未决列表中移除,根据服务例行程序中的返回,以从未决列表中选择最高优先级的中断来恢复执行(图5A的框512)。如果处理器未取得一致,即时动作中断被放回到未决列表(框566),以从未决列表中选择最高优先级的中断来恢复执行(图5A的框512)。然而在这种情况下,刚刚放在列表中的即时动作中断可以是最高优先级的中断,因而图5的中断处理例行程序立即再次开始以下过程,使逻辑处理器的处理器在服务该即时动作中断的问题上取得一致。
图6示出了可以在同步逻辑18内执行以运行其会合点调度部分的过程的流程图。图6所示出的步骤可以在作为同步逻辑一部分的处理器或微控制器上运行的软件中来实施(未明确示出),或者可以在硬件中实施,可能是经由专用集成电路(ASIC),该电路被设计为一个实施所示步骤的状态机。过程开始(框600),并且移动到确定同步寄存器54的触发寄存器中是否有数据(框602)。在某些实施例中,同步逻辑18也许不知道写入的数据是“新的”还是“旧的”。在这些实施例中,在每个处理器写入的多个寄存器54中,至少一个可能充当触发寄存器,在把至少某些接收到的数据写入到每个处理器之前,作为过程的一部分启动定时器以等特来自所有处理器的数据。在可选择的实施例中,同步逻辑18可以是足够精密的以能够比较数据,来确定它是“旧的”还是“新的”。
一旦处理器写入触发寄存器(框602),确定逻辑处理器中是否有多于一个的处理器(框603)。例如,如果双模系统中的一个处理器出现故障,逻辑处理器可以仅通过一个单独的处理器来操作。同样的,如果在三模系统中两个处理器出现故障,逻辑处理器可以仅通过一个单独的处理器来操作。如果在逻辑处理器中仅仅一个处理器是激活的,数据可以被立即写回(框618)。
假定在逻辑处理器中多于一个处理器是激活的,定时器启动(框604)并且关于逻辑处理器的第二个处理器是否写入它相应的触发寄存器的确定被作出(框606)。如果不是,过程在软件循环中等待(框606和608),直到触发寄存器被写入或者定时器到期。如果在逻辑处理器中有多于两个的处理器(框610),定时器被重新启动(框612),过程再次在软件循环中等待(框614和616),直到第三个处理器的触发寄存器被写入或者定时器到期。图6的方法是包括三个处理器的逻辑处理器的示例。如果存在更多的处理器,附加的定时器重新启动并且可以增加在软件循环中的等待。同样的,如果逻辑处理器仅包含两个处理器,可以省略与第三个处理器相关的步骤。如果所有的数据已经被接收,与时刻数据一道,至少某些数据被写入到每个处理器(框618)。如果处理器中的一个未能在定时器到期之前写入它相应的寄存器,至少一部分已写入到同步逻辑18的数据被写回到每个处理器(框620)。除了写入由处理器提供的数据,状态字也可以写入到每个存储器分区;状态字表示操作完成,哪个处理器参与操作的指示,和哪个处理器(若有的话)超时的指示(还是框620)。如果一个处理器未能在分配的时间内写入,犯错的处理器被从逻辑处理器中移除(框622),所示出的过程重新开始。根据本发明的至少一些实施例,如果处理器没有在第一个处理器的几毫秒内写入数据到同步寄存器,则应当采取修正动作。
由于多个实施例的逻辑处理器实施宽松锁步的执行方案,每个处理器的中断处理例行程序(以及如我们将在稍后看到的,系统调用)写入数据到同步逻辑54的时间可以不是精确对准的。从而,框604-616的组合允许一定数量的偏差,其中所有的处理器可以检测中断和对中断作出反应。简略的参照图3,确认数据从同步寄存器写回到每个处理器可以包含从同步寄存器54复制数据到每个存储器分区中的位置,例如,位置57A和57B。根据本发明的至少一些实施例,由表决器逻辑56写入到存储器分区的数据使用主机处理器的固有缓存块校准来对准。
在继续之前要总结的是,中断处理例行程序的中断触发执行。图4中的散列的区域59代表中断处理例行程序的执行,因而用户程序被暂时挂起。假定没有当前未完成的调度会合点的尝试,中断处理例行程序把中断标识符与建议的服务中断的系统调用编号一起写入到表决器逻辑56的同步寄存器54中(参见图4的线60和62;图5的框514)。一旦逻辑处理器中的每个处理器写入它的信息,表决器逻辑56把至少一些信息写入到每个处理器的存储器分区的位置57(参见图4的线65;图6的框618或620)。在具有恰当的系统调用编号的系统调用处,用于中断的中断服务例行程序被放置到调度队列中并被服务。
图7示出了由至少一些系统调用所实施的步骤的一部分,以除了完成系统调用的正常任务(例如,恢复时刻)以外,还担当会合点并且协调中断处理。因此,图7中出现的方法步骤并不意味着是一整套任何一个系统调用可能执行的步骤;相反的,举例说明的流程图强调至少一些系统调用可能运行的额外的步骤,以便调整中断处理和在某些情况下实现多个宽松锁步处理器的同步。该过程可以由发出系统调用的用户程序开始(框700),例如当前时刻或者存储器位置的请求。其后,系统调用程序可以禁止中断(框702),并且递增系统调用编号(框704)以便特定的处理器知晓它目前正在执行哪个系统调用编号。现在跳过非合作过程(框706,724和726),该过程的下一步是确定是否已经尝试调度已完成的会合点(框708),其可以通过检查寄存器57中的非零数据来确定。如果那样,下一步可以确定是否有任何其它服务于即时动作中断的处理器被建议((框730)。如果那样,未决会合记录中的中断被移回到未决列表中(框736)。在某些实施例中,假定在其它处理器中看到的用于即时动作中断的触发可以在瞬时的处理器中出现,因而情况被忽略并且可能产生调度会合点的进一步尝试(通过框712的确定而开始)。在可选择的实施例中,处理可以开始解决触发即时动作中断的预期的错误(未专门示出)。
回到框730,如果其它处理器不建议服务即时动作中断,下一步可以是在未决会合记录中记录这些中断和其他处理器的建议的系统调用编号(框731)。其后,确定多个处理器是否在服务哪个中断的问题上取得一致(框734)。如果一致,中断被从未决会合记录中移动到确认列表中(框732),并且可能发生调度会合点的进一步尝试(通过框712的确定而开始)。确认列表是关于中断的列表,对于这些中断已经接收倒中断应当被服务的确认,以及中断应当在哪个系统调用编号被服务。如果多个处理器未就服务哪个中断的问题上取得一致(框734),例如,一个处理器建议服务中断5而第二个处理器建议服务中断9,则这种情况将在未来的建议中被校正,并且更多的调度会合点的尝试可以产生(通过框712的确定而开始)。
如果会合还没有完成(框708),下一步可以是确定是否已经有开始的仍然必须要完成的会合(框710)。跳过片刻对于未决列表的分析(框712),所例示的过程的下一步可以是检查在未决会合记录中是否有任何被建议用于当前系统调用编号的中断(框714)。如果那样,所例示的程序轮询中断(框716)(因为中断被框702禁止),并且过程在软件循环中等待(通过框708的确定而开始)。在这种情况下,由瞬时的处理器建议的系统调用编号可以是最高的系统调用编号,因而处理器在软件循环中等待确认。
如果在未决会合记录中没有被建议在当前系统调用编号处被服务的中断(框714),下一步可以是确定在确认列表中是否具有任何为当前系统调用编号而调度的中断(框718)。因此在确认列表中被调度为在当前系统调用编号处被服务的多个中断,每个都具有它们的用于执行而调度的中断服务例行程序,以及它们从确认列表移除的记录(框720),中断被激活(框722),并且系统运行它正常的活动(例如,时刻调用)(框723)。简要的参照图4,在当前系统调用程序结束的地方(阴影区域64和66),执行一个或更多放置在任务调度表中的中断服务例行程序,如阴影区域67所表示的。可选择的,中断服务例行程序可以早于系统调用的主要功能的实施而执行。如果在当前系统调用编号处的确认列表中没有具有会合点的中断(框718),中断被激活(框720),并且系统运行它的正常活动(框723)。
根据本发明的至少一些实施例,在至少一个中断编号和建议的系统调用编号被写入到表决器逻辑,并且同样的信息被写入到未决会合记录之后(图5的框514和518),没有更多的会合点的建议可以被开始,直到表决器逻辑返回数据。因此,一些中断可以被放置到未决列表(图5的框508)以用于将来的调度。通过写入到确认列表(框732),在未决会合记录的中断到未决列表的返回(框736),或者关于服务哪个中断的不一致,存在机会以再次开始会合点调度过程。因为这个原因,系统调用程序可以运行类似于中断处理的尝试,并通过检查未决列表来确定是否有任何中断需要为服务而被调度(框712)。如果有需要被调度的中断,系统调用运行调度过程的初始阶段,包括把建议的会合点信息写入到同步寄存器54(框740)。在运行会合点调度的初始阶段所涉及的一些步骤在图5的框512、514、516、530和550-566中被更详细的描述。这些相同的步骤可以通过系统调用程序来运行,但是在所例示的方法中被合成一个单独的项目(框740),以避免过度的复杂化附图。
图8示出了一种可能遇到的情况,逻辑处理器的一个处理器在另一个之前发现了中断,然而它们关于在哪个系统调用编号上应当服务中断取得一致。尤其是,处理器PA1刚刚先于该中断的断言来运行系统调用编号1003,然而处理器PB1也在中断断言之前很早就运行了系统调用编号1003。两个处理器建议在调度编号1004处服务示范性的中断5,象线100和102所示的那样。然而,在该示范性的例子中,处理器PB1在表决器逻辑56把同步数据写回到处理器之前而到达系统调用编号1004。在这种情况下,处理器PB1在软件循环中等待(图7的框708,710和714),如阴影区域104所示,直到确认在系统调用编号1004服务中断的数据被写回。同样的,先于由表决器逻辑的写入,处理器PA1到达系统调用编号1004,处理器PA1同样在软件循环中等待(还是图7的框708,710和714),如阴影区域106所示。当与两个示范性处理器相关的表决器逻辑把收集到的信息写回到每个处理器的存储器分区,并且系统调用程序确认系统调用编号1004是中断应当被服务的位置时(图7的框732和734),两个处理器都服务该中断(图7的框720),并继续正常的处理。注意两个处理器,当最初在它们的执行点稍微有点分歧的时候,如何根据从表决器逻辑到同步寄存器的写入和后来的对中断的服务来变得至少部分地同步。
图9示出了逻辑处理器的处理器建议或通告对不同中断编号进行服务的情况。在图9所示的示例性的情况下,处理器PA1使得它的中断5刚好先于中断5的断言而被激活,因此处理器PA1建议在系统调度编号96处服务中断5。然而,处理器PB1不能执行它的中断,直到在中断5和9的断言之后。为了解释假定中断9的优先级高于中断5。因此,在中断激活后,处理器PB1在所示出的系统调度编号96处建议服务中断9(因为它的更高的优先级)。因为在这种情况下处理器PA1在从同步寄存器把数据写回到该存储器分区之前到达系统调度编号96,处理器PA1在软件循环中等待(图7的框708,710和714)。同样的,处理器PB1在确认它建议的中断9是否将在系统调度编号96处被服务之前而到达系统调度编号96,同样的,它也在软件循环中等待确认。当表决器逻辑把同步数据写回到每个处理器的存储器分区,每个处理器记录中断类型的不匹配(一个处理器建议服务中断5,而第二个处理器建议服务中断9)(图7的框734)。在每种情况下,处理器接下来建议它们先前未建议的最高优先级的中断(图7的框712和740)。在示出的PA1的情况中,中断9是最高优先级的中断,因此建议它。此外,由于处理器PA1先前在系统调度编号96处已经建议过服务中断5,那个建议仍然是未处理的,系统调度继续在软件循环中等待(图7的框708,710和714)。对于所示出的处理器PB1,先前未建议的最高优先级的中断是中断5,因此中断5被建议(图7的框712和740)。通过将来自图9的第二个例证性的写操作的数据写回,多个处理器在最高的建议的系统调度编号(在这里是97)对服务中断5和9取得一致。当系统调用编号97在每个处理器中出现时,中断被服务(框718和720),首先服务最高优先级的中断。
在图4、8和9所示出的系统中,每个被断言的中断是事件型中断,意指该中断表示事件但是不要求即时动作。然而,即时动作中断被不同的处理,图10描述了根据本发明实施例的处理即时动作中断的时间线,例如页错误。在图10所示出的情况下,处理器PB1产生一个即时动作中断,在该示例性例子里是一个页错误(PF)。中断处理例行程序被触发,即时动作中断的性质被确定(图5的框516),并且即时动作中断的标志被写入到同步寄存器(图5的框514)。根据本发明的实施例,处理器PB1不再执行用户程序,相反在软件循环中等待其它处理器也已经到达该页错误的确认(图5的框530)。仍然参照图10,在处理器PB1的页错误之后的某个时刻,处理器PA1产生相应的页错误,它的中断处理例行程序被触发,并且一个页错误的标志被发送到同步寄存器。一旦表决器逻辑从每个处理器(或者一个超时的处理器)接收到数据,那些信息被写入到每个处理器的存储部分(图6的框618或620),如线150所例证的。一旦中断处理例行程序确认所有处理器在即时动作中断上取得一致(图5的框558),每个中断处理例行程序调度用于执行即时动作中断的中断服务例行程序(图5的框564)。在完成用于即时动作中断的中断服务例行程序后,中断处理重新开始调度会合点(从图5的框512开始)。在页面错误的示例性例子里,用于即时动作中断的中断服务例行程序可以是一个页错误服务例行程序。需要注意,参照图10,每个处理器中的处理停止,直到确认所有处理器已经到达在用户程序中发生页错误的点。
图11示出了事件中断和即时动作中断的相关处理。尤其是,图11示出了在示范性的系统中具有两个处理器PA1和PB1,处理器PA1先于页错误中断而接收到中断5的标志,然而处理器PB1在页错误中断之后接收中断5。在这种情况下,在处理器PA1上执行的中断处理例行程序在系统调度编号1006处写入一个服务中断5的建议(图5的框514)。然而,在处理器PB1上执行的中断处理例行程序(基于页错误)建议服务该页错误,并且在软件循环中等待直到该建议被确认(图5的框514,516和530)。其后的某个时刻,处理器PA1发现它的一个页错误。在这个示范性的情况下,处理器PA1具有一个未被确认的会合点(用于中断5),因此在由页错误触发的中断处理例行程序执行时,处理器在软件循环中等待(图5的框530),直到表决器逻辑写回同步信息。与这两个处理器相连的的表决器逻辑把同步寄存器中的信息写回到每个处理器的存储器分区。然而,在同步数据第一次写入到每个处理器的存储器分区时,一个处理器被建议在系统调用编号1006处服务中断5,而另一个处理器被建议服务该页错误。在这种情况下,每个处理器擦除服务该中断的尝试(对于处理器PB1,通过图5的框566的操作,对于处理器PA1通过图5的框552,560的操作)。在每种情况下,即时动作中断是最高优先级的中断(在图5的框512处被选择),因而,这两个处理器都建议服务于该即时动作中断。其后,表决器逻辑56把信息写回到每个处理器的存储器分区,这时在该例中多个处理器在页错误应当被处理的问题上取得一致。一旦即时动作中断被服务,在某个随后的时刻,仍然参照图11,处理器PA1和PB1中的每一个都建议在特定的系统调用编号处调度先前断言的中断5,在这个例子中是系统调用编号1006。现在页错误被清除,在系统调用编号1006处对中断5的服务可以如其它示范性的实施例所描述地进行。尽管图4和8-11中的每一个仅显示了两个处理器,应当被理解,所描述的技术可以同等应用于在每个逻辑处理器中具有三个或更多处理器的计算机系统1000。关于图4和8-11的说明显示了两个处理器,以免过度复杂化各种事件中断和即时动作中断的处理。
对于调度图4和8-11所示的会合点的讨论,限于每次仅调度一个中断。例如,图4示出了每个处理器把单独的中断编号和在该处服务中断的建议的系统调用编号写入到同步寄存器。根据可选择的实施例,多个中断(以及在该处服务中断的建议的系统调用编号)可以写入到同步寄存器,以便尝试为每个中断调度会合点。对于这些可选择的实施例的操作,各种流程图保持不变,保存多个中断,在某些实施例中是3个,可以同时被建议并且写入到未决会合记录,同样的多个中断可以被移动到确认列表。
更进一步的,描述这点的不同实施例使用三个列表:一个未决列表(被断言但是没有被建议的中断);一个未决会合记录(建议的但是其确认还没有被接收或者已经接收但是没有被分析的中断);一个同意的或者确认列表(其确认已经被接收的中断)。可选择的实施例可以仅使用两个列表:未决列表和确认列表。在这些实施例中,一个或更多的中断可以被同时建议,但是中断保留在未决列表中,直到多个处理器对于会合点取得一致。一旦每个中断取得一致,它从未决列表中被移动到确认列表。因为仅有一组调度会合点的建议可以是未完成的,这些可选择的实施例可以在数据写入到同步寄存器的时候设置一个标记,作为未完成的尝试的标志。同样的,当确认数据从表决器逻辑被返回时标记可以被重设。在这些可选择的实施例中,每个中断可以在多个处理器取得服务该中断的一致之前被建议多次(即使没有即时动作中断)。因此,在这些可选择的实施例中,每个处理器分析返回的数据,以发现其它处理器在服务一个或更多中断的问题上是否取得一致。如果取得一致,取得一致的中断从未决列表中被移除,并且放置到确认列表中。对于没有取得一致的中断,返回的数据被丢弃,并且过程通过从未决列表中选择最高优先级的中断重新开始,以建议会合点。
对于即时动作中断,在描述这一点的多个实施例中,当一个处理器发现(并且建议)一个即时动作中断时,其它处理器可以继续建议它们的最高优先级的非即时动作中断,直到某个时刻,例如它们也发现该即时动作中断。在可选择的实施例中,一旦至少一个处理器建议服务一个即时动作中断,其余的处理器可以避免更多的非即时动作中断的建议,并且改为继续处理,直到对应的即时动作中断出现。因此,非即时动作中断可以在每个处理器的未决列表中累积,直到即时动作中断被服务之后。因此这些可选择的实施例可以减少所有处理器、到达、协商以及服务于即时动作中断所花费的时间。
如上述讨论的,根据本发明的实施例,处理器的至少部分的同步,以及调整的中断的服务,可以在会合点被完成。然而,可以有这样一个用户程序,在扩展的一段时间,不作出系统调用。因此,在逻辑处理器内的处理器可以关于它们正在执行的一部分用户程序来有效地分割,并且进而可能没有充足的机会来服务中断。未以充分的频率作出系统调用的用户程序可以被称为“非合作过程(uncooperative process)”。
为了解释,非合作过程的处理可以被认为具有四个阶段。第一个阶段是识别一个用户程序确实是非合作的。第二个阶段可以是最小化在逻辑处理器的多个处理器之间的计算的故障的可能性,该故障是由应用程序的非合作的性质引起,该第二阶段还允许非合作过程以及其它不相关的过程继续执行并希望过程变为合作的。第三个阶段可以是采取行动以保证逻辑处理器中每个处理器的非合作过程执行在同一阶段。最终,最后一个阶段可以是改变原来的非合作过程。这些阶段的每一个将依次被处理。
在某些实施例中,识别用户程序作出很少发生的系统调用,因此被认为是非合作的,这涉及到定时器的使用。如果用户程序在定时器到时之前未作出系统调用,则该用户程序是一个非合作的过程。根据本发明的某些实施例,每次处理器的调度程序(以最高特权状态-核心状态-操作)设置用户程序以执行,该调度程序也启动一个非合作过程定时器,并且储存当前系统调用编号的标志。在定时器到期时,调用非合作过程处理例行程序的中断被断言。非合作过程处理例行程序检查在由定时器定义的这段时间是否已经有至少一个系统调用,在某些实施例中在100微秒左右。在可选择的实施例中,系统调用程序可以重设定时器以避免非合作过程处理例行程序的触发,但是这种重设可能需要高成本(昂贵)的核心状态处理调用。
图12(包含12A和12B)示出了一个依照本发明实施例的非合作过程处理程序的流程图。特别的,在由调度程序启动的定时器期满后,在下文中被称作非合作过程定时器,非合作过程处理程序可以通过中断的断言开始(框1201)。非合作过程定时器的到期可以直接启动例示的图12,或者图12的步骤可以通过中断处理被调用,该中断处理是由非合作过程定时器的期满(图5的框504)和处理程序的调用(图5的框506)来确定的。在禁止中断后(框1204),非合作过程处理程序可以读取当前的系统调用编号(框1208)和在开始时由调度程序存储的系统调用编号(框1212)。当前的系统调用编号与在开始时由调度程序存储的系统调用编号相同(框1216)表示用户程序在由定时器定义的这段时间未能作出系统调用,从而成为非合作过程。另一方面,如果当前的系统调用编号与存储的系统调用编号不同(还是框1216),过程是合作的,从而所例示的方法重启非合作过程定时器(框1237),存储当前系统调用编号(框1239),激活中断(框1238)并且结束(框1236)。
根据本发明的实施例,用户程序在逻辑处理器的至少一个处理器内成为不合作的,调度会合点操作以确定逻辑处理器中的其它处理器是否同意它的非合作性质。仍然参照图12,如果当前的系统调用编号与由调度程序存储的系统调用编号相同(框1216),下一步可以是确定是否有一个未确认的会合点操作(框1220)。如果没有,下一步可以是通过把一个用户程序的非合作性质的标志与当前系统调用编号一起写入到表决器逻辑56的同步寄存器54中,开始一个会合点操作(框1224)。其后,非合作过程处理例行程序在软件循环中等待表决器逻辑返回同步数据(框1228)。
由于在任何时刻仅有一个会合点的调度可以进行,如果在非合作过程处理定时器到期时,已经有一个启动的必须要完成的会合点(还是框1220),下一步可以是在软件循环中等待(框1246),直到表决器逻辑写入同步数据。记住写回的同步数据是关于前一中断的(而不是触发了非合作过程处理例行程序的当前执行的非合作过程定时器到期中断),会合信息被写入到确认列表以用于将来的执行,或者中断被移回到未决列表(框1250)(参见图5的框552,554,560,562和556)。其后,过程继续进行以把用户程序的非合作性质的标志和当前系统调用编号一起写入到表决器56的同步寄存器54中(框1224),并且在软件循环中等待数据的返回(框1228)。
如果多个处理器未在用户程序是非合作的问题上取得一致(框1232),对于同步数据进行分析以确定用户程序在其它处理器中是否是合作的(框1234)。例如,尽管一个处理器中的非合作过程定时器可能在用户程序的系统调用之前到期(或翻转),而逻辑处理器中的第二个处理器中的用户程序可能在到期之前作出系统调用。结果,一个处理器将表示过程是非合作的,而第二个处理器将试图调度下一个中断的处理,包括建议的会合点的写入。如果分析揭示用户程序将很快作出系统调用(框1234),非合作过程定时器被重新启动(框1237),当前系统调用编号被存储(框1239),中断被激活(框1238)并且过程结束(框1236)。
仍然参照图12,如果逻辑处理器的所有处理器在用户程序是非合作的问题上取得一致(框1232)(所有处理器在非合作定时期间均表示用户程序已经在同一个系统调用编号上),则非合作过程的处理的第一个阶段开始于设置一个非合作过程标记,并且累加计数器(框1254)。如果这是用户程序第一次被标记为非合作的(框1258),可能是通过读取计数器而确定的(在框1254中被累加),那么在与非合作过程(非合作程序的“过程设置”)相同的存储器区域访问同样的数据值的用户程序被放置到不允许它们的继续执行的列表中。另外还要被陈述的是,处理器的调度器将不会调度任一用于执行的过程设置的组成,也通常称为过程设置的隔离(框1262)。因为过程设置与非合作过程共享存储器,并且还由于在如逻辑处理器的处理器之间的非合作过程中在执行点上的潜在的不一致,其可能导致在共享存储器中的过程设置可以观察到的区别,过程设置的隔离确保过程设置中不会有过程在存储器中观察到不同的数据(如处理器之间的),因此导致计算错误。在第一阶段,非合作过程仍然被允许运行,希望它可以成为合作的。因此,在过程设置的隔离之后,非合作过程处理例行程序重启非合作过程定时器(框1237),存储当前的系统调用编号(框1239),激活中断(框1238)并且结束(框1236)。
根据本发明的实施例,非合作过程被允许继续执行,同时它的过程设置保持被隔离。在下一个用于执行的非合作过程的调度中,调度器再次存储当前系统调用编号,并启动非合作过程定时器。如果非合作过程再次在非合作过程定时期间执行而没有作出系统调用,非合作过程处理例行程序被再次调用。如果所有的处理器再次在用户程序的非合作性质上取得一致(框1232),例行程序设置非合作过程标记(框1254)(但是该标记已经被基于先前的记录而被断言),并且计数器被累加(框1254)。由于在这个示范性的情形下,用户程序不是新的非合作的(框1258),下一步确定是否已经发现用户程序是预定迭代数目非合作(框1266)。在某些实施例中,在过程设置的隔离之后,用户程序在采取更多修正动作之前,可以被十次宣告为非合作的。如果用户程序已经被确认为少于预定迭代数目非合作(框1266),非合作中断处理例行程序重启非合作过程定时器(框1237),存储当前的系统调用编号(框1239),激活中断(框1238)并且结束(框1236),再次希望在采取进一步动作之前非合作过程变成合作的。以下先讨论如果系统调用是在达到预定数目的迭代之前做出时,非合作过程如何被处理,然后讨论非合作过程处理的第三阶段。
为了更进一步的解释,假定用户程序已经被至少一次确认为非合作的,它的过程设置已经被隔离,但是因为预定数目反复操作,仍然必须要被确认为非合作的。进一步假定用户程序作出系统调用。再次简要的参照图7,当系统调用程序执行时,在递增系统调用编号之后(框704),确定正在调用的程序是否先前已经被标记为非合作的(框706)。如果不是,系统调用执行如先前所讨论的步骤。然而,如果正在调用的程序先前已经被标记为非合作的了,系统调用程序可以不再隔离过程设置(框724),并且清除非合作过程标记(框726)。
图13是示出非合作过程相对于事件中断的处理的时序图,以进一步说明图12的方法。尤其是,图13示出了一种情况,其中每个处理器观察到系统调用编号1999。在处理器PA1的情况下,中断5先于非合作过程定时器的期满而被断言,因此处理器PA1建议在系统调用编号2000处服务中断5(线1300;图5的框514)。建议服务中断5不久之后,PA1的非合作过程定时器期满,并且由于未确认的会合该处理器在软件循环中等待(图12的框1246)表决器逻辑从先前的建议写回同步数据。处理器PB1,相反,在中断被断言之前使它的非合作过程定时器期满,因此处理器PB1写入非合作过程信息到同步寄存器54(线1302),并且在软件循环中等待确认(图12的框1224和1228)。然后表决器逻辑把同步数据写回到每个处理器(线1304)。因为这些处理器未在服务该中断上取得一致,并且因为非合作过程中断的即时动作性质,处理器PA1把中断5写回到未决列表(框1250),把非合作过程的标志写入到同步寄存器(线1306;框1224),并且在软件循环中等待确认(框1228)。对于处理器PB1,这些处理器未在非合作过程的问题上取得一致(框1232)(处理器PA1建议服务一个中断,而不是用户程序是非合作的标志)。此外,由PA1建议的系统调用编号(在这个示范性的例子中系统调用2000)没有暗示处理器PB1中的系统调用是即将来临的;相反的,建议的系统调用编号2000意味着处理器PA1也处在系统调用编号1999(框1234)。因此,处理器PB1第二次写入表示非合作过程的同步数据(线1308;框1224),而且再次在软件循环中等待确认(框1228)。在其后的某个时刻,表决器逻辑56把同步数据写入到每个处理器(线1310)。在这个示范性的第二次写入中,多个处理器在非合作状态上取得一致(对于每个处理器,框1232),因此每个处理器断言非合作过程标记,累加非合作过程计数器(框1254),并且隔离用于非合作过程的过程设置(框1262)。其后,用户程序继续操作(在每个处理器时序的区域1312),虽然用于非合作过程的过程设置被隔离。
图13还示出了一种情形,尽管写入到表决器逻辑的同步数据不匹配,处理器搜集用户程序的非合作性质可以很快结束的信息。尤其是,图13还示出了处理器PA1作出系统调用(区域1314),在该示范性的例子中系统调用编号3000。作为系统调用过程的一部分,处理器PA1建议或者通告下一个会合(线1316;参见图7的框712和740)。相反,处理器PB1先于系统调用而使它的非合作过程定时器期满,从而写入非合作过程的标志(线1318;框1224),并且在软件循环中等待确认(框1228)。当表决器逻辑返回同步数据时(线1320),处理器PA1发现中断类型不匹配(图7的框730,如果通过系统调用分析,和框552,如果中断处理程序被分析),并且再次尝试写入同步数据(线1321;图7的框740或图5的框514)。相反,处理器PB1,接收同步数据(线1320),并且尽管多个处理器未在用户程序的非合作性质上取得一致(框1232),来自处理器PA1的建议的会合信息显示系统调用即将来临(框1234)。因此,处理器PB1继续用户程序的执行,直到系统调用被作出。在稍后的某个时刻,多个处理器关于处理器PA1最初建议的中断取得一致。
现在返回图12,尤其是框1266所示出的步骤。如果用户程序已经被标记为非合作过程预定的迭代次数(框1266),下一步可以是非合作过程的隔离(框1268),并且调用一个过程级的重组例行程序(框1270)。
在逻辑处理器的每个处理器中运行并被识别为非合作过程的用户程序,可以在处理器之间在它们的执行点有效地发散。根据本发明的至少一些实施例,如果用户程序不提供一个机会以基于系统调用而同步,同步可以通过强制每个用户程序在指令流的相同点重新开始执行来进行。这可能意味着某些处理器重复地执行某些指令,而其它处理器可以跳过某些指令的执行。然而,在允许用户程序在指令流中的相同点重新开始执行以前,需要每个处理器的工作存储器是相同的。另外需要陈述的是,非合作过程具有写访问的任一存储器都应当在逻辑处理器的处理器之间比较,并且使得相同。这样,当执行重新开始时每个处理器的过程状态将是相同的。因此,根据本发明的实施例,当图12所示的非合作过程处理例行程序确定需要一个被迫的同步时(框1266),用户程序的工作存储器的过程级重组可能是需要的。
图14示出了过程级重组例行程序的流程图,该程序可以在逻辑处理器的每个处理器中被基本上同步地执行。特别的,过程基于由图12中所示的非合作过程处理例行程序作出的调度来启动(框1400)。所示出的过程的下一步是与逻辑处理器中的其它处理器合作以选择一个源处理器(框1402)。为了选择源处理器,可以使用表决器逻辑在处理器之间交换消息,逻辑处理器中的任何一个处理器可以被选择。
所示出的过程的下一步是确定存储区域,非合作过程对该区域具有写访问能力(框1404)。例如,该决定可以通过查阅处理器的存储管理和/或页列表来作出。一旦确定了非合作过程具有写入访问能力的存储区域的范围,下一步是确定存储页面是否自从它创建后还未更改过(否则被称为干净的)(框1406)。对于示例性图14的描述的平衡,假定同时只有一个存储页面被多个处理器分析;然而,可选择的多个实施例在任一时刻比较多个存储页面。如果所考虑的存储页面是不干净的(否则被称作脏的)(还是框1406),所示出过程的下一步骤是为存储页面计算检查和(框1408)。
所示出过程的下一步骤是交换数据(框1410),该数据是一个标志,其标志着所考虑的存储页面是干净的(通过框1406进入),或者当存储页面是脏的时所述数据是计算的检查和(通过框1408进入)。该数据交换可以使用表决器来进行,并且其相似于关于即时动作中断的交换,在一定意义上,每个处理器在软件循环中等待数据被从表决器逻辑返回(等待每个处理器写入它的各自的数据,并且等待表决器逻辑写回数据)。这些步骤没有被明确的示出,以便不过度的复杂化附图。一旦数据被接收,确定关于所有处理器是否在存储页面示干净的问题上取得一致(框1412)。如果所有处理器在存储页是干净的问题上取得一致,不需要从源处理器拷贝存储页面,因此下一步骤可以确定所有的存储页面是否已经被分析(框1414)。如果没有,过程重新开始另一个存储页面的分析。
仍然参照图14,如果所有处理器未能在存储页面的干净状态上取得一致(还是框1412),下一步骤可以是确定运行所示过程的处理器和源处理器是否在存储页面是脏的问题上取得一致(框1416)。如果那样,确定由源处理器提供的检查和与在运行所示出过程的处理器所计算的检查和是否相等(框1418)。如果检查和是相等的,不需要从源处理器拷贝存储页面,因为该存储页面,即使是脏的,包含有相同的数据。另一方面,如果源处理器与运行所示出过程的处理器之间的检查和是不相等的(还是框1418),该存储页面是不相同的,因此来自源处理器的存储页面被复制到运行所示出过程的处理器(框1420)。同样的,如果源处理器与运行所描述过程的处理器在存储页面的脏的状态的问题上未取得一致(还是框1416),该存储页面是不相同的,因此来自源处理器的存储页面被复制到运行所示出过程的处理器(还是框1420)。除了从源处理器复制存储页面之外,与存储页面有关的干净/脏的比特也从源处理器被复制。这些比特可以被存储到,例如,在页表中或者处理器的资源的页面映射表中。在两个处理器都关于存储页面的脏的状态取得一致的情况下,复制干净/脏比特不是必需的;然而,从编程和交换时间的立场来看,每次存储页面被复制时复制这些比特可能是便利的,并且成本不是很高。在复制以后,所描述的方法移动到确认是否有更多的存储页面需要分析(框1414)。
一旦所有的页都已被分析,并且可能某些存储页被从源处理器复制到一个或多个非源处理器,所示出过程的下一步骤是从源处理器到非源处理器复制过程控制块的过程,可能包括指令指针和其它寄存器(框1422)。该复制确保每个处理器在与源处理器相同的执行点重新开始用户程序的执行。其后,过程级重组例行程序返回(框1426)。需要注意的是,过程级重组例行程序作为一个过程而运行,与其它过程(除了那些在被隔离的过程设置之外的)的执行交错。
一旦控制返回到图12所示出的非合作过程处理程序,用户程序,和它的过程设置,被从隔离列表中移除(框1274),非合作过程标记和计数器被清零(框1278),非合作过程定时器被重启(框1237),当前的系统调用编号被存储(框1239),中断被激活(框1238)并且过程结束(框1236)。因此,原来的非合作过程已经被同步(在这种情况下通过可写入的存储器的过程级重组),并且可以再次被多个处理器执行。因为来自源处理器的指令指针和其它寄存器被复制,所有的处理器在用户程序的相同的执行点重新开始执行。
根据本发明的至少一些实施例,过程级重组独自就可以充分地确保恰当的操作,而不管用户程序的非合作性质。另外,或者替代过程级重组,至少某些实施例可以采取主动的步骤以确保至少导致非合作过程指定的那部分用户程序不再这样做(框1424)。主动的步骤可以采取很多形式。在某些实施例中,用户程序的损坏了的部分(很可能是一个软件循环)被修改以包含一个系统调用。例如,这些可以通过使用系统调用(例如,时刻调用)替换多个非操作指令(NOP)来完成。如果用户程序指令流不允许一点点的替换,指令可以使用指向替换指令的分支指令、系统调用以及返回分支指令来替换。可以对用户程序做出这些改变,象它存在于主存储器中一样,和/或对用户程序做出改变,象它存在于例如硬盘驱动器的长期存储装置中一样。在其它的实施例中,在多处理器计算机系统(具有合作的和非合作的过程的多个处理器)内的全部处理器重组都可以用于在多个处理器之间同步非合作过程。
在进一步的备选实施例中,处理器硬件可以支持一个机制,该机制用于在指令流的特定的点插入中断,所述中断可以触发系统调用来同步和进行中断调度。例如,因特尔公司制造的Itanium处理器系列支持处理器中的寄存器,其被称为“指令断点寄存器”。断点寄存器可以载入指令指针值,并且当实际的指令指针与断点寄存器中的值匹配时,触发中断。因此这个示范性的机制可以被用于触发中断,后者为同步的目的而触发系统调用。这种基于硬件的机制可能不是在所有结构中都是有用的,但是修改用户程序的实施例可以具有普遍的应用。
在其它实施例中,在多处理器计算机系统(带有非合作过程的处理器,以及其过程是合作性的处理器)中的全部处理器重组(所有存储器的复制),可以用于在逻辑处理器的多个处理器之间同步非合作过程。
上述讨论意在示出本发明的原理和多个实施例。对于本领域技术人员,一旦充分理解了以上公开的内容,许多变化和修改将是显而易见的。下述的权利要求意欲被解释为包括所有这样的变化和修改。
Claims (10)
1.一种基于处理器的方法,包括:
提供来自第一个处理器的信息给第二个处理器,该信息表示在第一个处理器上执行的用户程序在预定数量的时间内没有作出系统级调用;和
由第一个处理器使用来自第二个处理器的信息,确定在第二个处理器中同时执行的用户程序复本是否已经在预定数量的时间内作出了系统级调用。
2.如权利要求1所规定的基于处理器的方法,其中:
如果用户程序的复本没有在预定数量的时间内作出系统级调用,所述方法还包括:
标识在与用户程序相同的存储区域中访问数据值的程序;
禁止执行在与用户程序相同的存储器中访问数据值的程序;和
允许用户程序继续执行。
3.如权利要求2所规定的基于处理器的方法,还包括:
在禁止执行用户程序之后,
利用第二处理器的用户程序的复本可以访问的相应存储器来重写第一处理器的用户程序可访问的存储器的至少一部分;和
复制来自用户程序的复本的指令指针,这样,在被执行时,第一处理器的用户程序在由指令指针所指示的位置开始。
4.如权利要求3中所规定的基于处理器的方法,其中重写还包含:
将用户程序的复本的存储页面的检查和与在第一处理器上的用户程序的相应存储页面的检查和进行比较;和
如果检查和不相等,在对应存储页面上复制来自用户程序的复本的存储页面。
5.如权利要求3中所规定的基于处理器的方法,还包含:
修改第一处理器的用户程序,以在没有作出系统级调用的用户程序的指令流部分中作出至少一个系统级调用。
6.一种系统,包含:
第一处理器,可操作用于执行用户程序;
第二处理器,与第一处理器同时地可操作用于执行用户程序的复本;
其中第一处理器可操作用于提供信息给第二处理器,所述信息表示第一处理器的用户程序未能在预定的一段时间内作出系统调用;和
其中第一处理器可操作用于使用来自第二处理器的信息,确定用户程序的复本是否未能在预定的时段内作出系统调用。
7.如权利要求6所规定的系统,还包含:
耦合在第一和第二处理器之间的数据交换逻辑模块,该数据交换逻辑模块包含一个可以由第一和第二处理器两者进行访问的寄存器组;
其中第一处理器可操作用于通过写入信息到数据交换逻辑模块上来提供信息给第二处理器。
其中第一处理器可操作用于使用通过数据交换逻辑模块提供给第一处理器的信息来确定在第二处理器中所执行的、用户程序的复本是否未能作出系统调用。
8.如权利要求6所规定的系统,其中如果用户程序的复本未能在预定时段内作出系统调用,第一处理器可操作用于标识在与第一处理器的用户程序相同的存储器中访问数据值的程序,禁止执行在与第一处理器的用户程序相同的存储器中访问数据值的程序,并且允许第一处理器的用户程序的更进一步的执行。
9.如权利要求8所规定的系统,还包含:
耦合到第一处理器上的第一存储器,该第一存储器的至少一部分可以被第一处理器的用户程序访问;和
耦合到第二处理器上的第二存储器,该第二存储器的至少一部分可以由用户程序的复本访问;
其中第一处理器,在禁止用户程序的执行之后,可操作用于使用用户程序的复本的相应存储器来重写第一处理器的用户程序访问的第一存储器的至少一部分;
其中第一处理器可操作用于复制来自用户程序的复本的指令指针,这样,在执行时,第一处理器的用户程序在由指令指针指示的位置开始。
10.如权利要求9所规定的系统,其中第一处理器可操作用于修改用户程序,以在未作出系统级调用的用户程序的指令流的部分作出至少一个系统级调用。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US55781204P | 2004-03-30 | 2004-03-30 | |
US60/557812 | 2004-03-30 | ||
US11/042981 | 2005-01-25 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1696903A CN1696903A (zh) | 2005-11-16 |
CN100472456C true CN100472456C (zh) | 2009-03-25 |
Family
ID=35346428
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200510079205.4A Pending CN1690970A (zh) | 2004-03-30 | 2005-03-30 | 在处理器之间交换信息的方法和系统 |
CN200510079206.9A Active CN100472456C (zh) | 2004-03-30 | 2005-03-30 | 确定用户程序是否作出了系统级调用的方法和系统 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200510079205.4A Pending CN1690970A (zh) | 2004-03-30 | 2005-03-30 | 在处理器之间交换信息的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (5) | US20050240806A1 (zh) |
CN (2) | CN1690970A (zh) |
Families Citing this family (90)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050240806A1 (en) * | 2004-03-30 | 2005-10-27 | Hewlett-Packard Development Company, L.P. | Diagnostic memory dump method in a redundant processor |
US20060020852A1 (en) * | 2004-03-30 | 2006-01-26 | Bernick David L | Method and system of servicing asynchronous interrupts in multiple processors executing a user program |
US7308605B2 (en) * | 2004-07-20 | 2007-12-11 | Hewlett-Packard Development Company, L.P. | Latent error detection |
US7412545B2 (en) * | 2004-07-22 | 2008-08-12 | International Business Machines Corporation | Apparatus and method for updating I/O capability of a logically-partitioned computer system |
US7047440B1 (en) * | 2004-07-27 | 2006-05-16 | Freydel Lev R | Dual/triple redundant computer system |
DE102004038590A1 (de) * | 2004-08-06 | 2006-03-16 | Robert Bosch Gmbh | Verfahren zur Verzögerung von Zugriffen auf Daten und/oder Befehle eines Zweirechnersystems sowie entsprechende Verzögerungseinheit |
US7502958B2 (en) * | 2004-10-25 | 2009-03-10 | Hewlett-Packard Development Company, L.P. | System and method for providing firmware recoverable lockstep protection |
US7627781B2 (en) * | 2004-10-25 | 2009-12-01 | Hewlett-Packard Development Company, L.P. | System and method for establishing a spare processor for recovering from loss of lockstep in a boot processor |
US20090265581A1 (en) * | 2004-10-25 | 2009-10-22 | Von Collani Yorck | Data system having a variable clock pulse rate |
US7818614B2 (en) * | 2004-10-25 | 2010-10-19 | Hewlett-Packard Development Company, L.P. | System and method for reintroducing a processor module to an operating system after lockstep recovery |
US7516359B2 (en) * | 2004-10-25 | 2009-04-07 | Hewlett-Packard Development Company, L.P. | System and method for using information relating to a detected loss of lockstep for determining a responsive action |
US7624302B2 (en) * | 2004-10-25 | 2009-11-24 | Hewlett-Packard Development Company, L.P. | System and method for switching the role of boot processor to a spare processor responsive to detection of loss of lockstep in a boot processor |
US7383471B2 (en) * | 2004-12-28 | 2008-06-03 | Hewlett-Packard Development Company, L.P. | Diagnostic memory dumping |
JP4528144B2 (ja) * | 2005-01-26 | 2010-08-18 | 富士通株式会社 | メモリダンププログラムのブート方法、機構及びプログラム |
US20060190700A1 (en) * | 2005-02-22 | 2006-08-24 | International Business Machines Corporation | Handling permanent and transient errors using a SIMD unit |
US20080195836A1 (en) * | 2005-02-23 | 2008-08-14 | Hewlett-Packard Development Company, L.P. | Method or Apparatus for Storing Data in a Computer System |
JP4555713B2 (ja) * | 2005-03-17 | 2010-10-06 | 富士通株式会社 | エラー通知方法及び情報処理装置 |
US7590885B2 (en) * | 2005-04-26 | 2009-09-15 | Hewlett-Packard Development Company, L.P. | Method and system of copying memory from a source processor to a target processor by duplicating memory writes |
DE102005037246A1 (de) * | 2005-08-08 | 2007-02-15 | Robert Bosch Gmbh | Verfahren und Vorrichtung zur Steuerung eines Rechnersystems mit wenigstens zwei Ausführungseinheiten und einer Vergleichseinheit |
US8694621B2 (en) * | 2005-08-19 | 2014-04-08 | Riverbed Technology, Inc. | Capture, analysis, and visualization of concurrent system and network behavior of an application |
JP4645837B2 (ja) * | 2005-10-31 | 2011-03-09 | 日本電気株式会社 | メモリダンプ方法、コンピュータシステム、およびプログラム |
US7668879B2 (en) * | 2005-11-30 | 2010-02-23 | Oracle International Corporation | Database system configured for automatic failover with no data loss |
US20070124522A1 (en) * | 2005-11-30 | 2007-05-31 | Ellison Brandon J | Node detach in multi-node system |
US7627584B2 (en) * | 2005-11-30 | 2009-12-01 | Oracle International Corporation | Database system configured for automatic failover with no data loss |
US7516358B2 (en) * | 2005-12-20 | 2009-04-07 | Hewlett-Packard Development Company, L.P. | Tuning core voltages of processors |
US7496786B2 (en) * | 2006-01-10 | 2009-02-24 | Stratus Technologies Bermuda Ltd. | Systems and methods for maintaining lock step operation |
US20070220369A1 (en) * | 2006-02-21 | 2007-09-20 | International Business Machines Corporation | Fault isolation and availability mechanism for multi-processor system |
JP5087884B2 (ja) * | 2006-08-11 | 2012-12-05 | 富士通セミコンダクター株式会社 | データ処理ユニット、およびこれを使用したデータ処理装置 |
US8127099B2 (en) * | 2006-12-26 | 2012-02-28 | International Business Machines Corporation | Resource recovery using borrowed blocks of memory |
US20080165521A1 (en) * | 2007-01-09 | 2008-07-10 | Kerry Bernstein | Three-dimensional architecture for self-checking and self-repairing integrated circuits |
US7743285B1 (en) * | 2007-04-17 | 2010-06-22 | Hewlett-Packard Development Company, L.P. | Chip multiprocessor with configurable fault isolation |
US20080263391A1 (en) * | 2007-04-20 | 2008-10-23 | International Business Machines Corporation | Apparatus, System, and Method For Adapter Card Failover |
US20080270653A1 (en) * | 2007-04-26 | 2008-10-30 | Balle Susanne M | Intelligent resource management in multiprocessor computer systems |
JP4838226B2 (ja) * | 2007-11-20 | 2011-12-14 | 富士通株式会社 | ネットワークロギング処理プログラム,情報処理システムおよびネットワークロギング情報自動退避方法 |
DE102007062974B4 (de) * | 2007-12-21 | 2010-04-08 | Phoenix Contact Gmbh & Co. Kg | Signalverarbeitungsvorrichtung |
JP5309703B2 (ja) * | 2008-03-07 | 2013-10-09 | 日本電気株式会社 | 共有メモリの制御回路、制御方法及び制御プログラム |
US7991933B2 (en) * | 2008-06-25 | 2011-08-02 | Dell Products L.P. | Synchronizing processors when entering system management mode |
CN103645953B (zh) * | 2008-08-08 | 2017-01-18 | 亚马逊技术有限公司 | 向执行中的程序提供对非本地块数据存储装置的可靠访问 |
JP5507830B2 (ja) * | 2008-11-04 | 2014-05-28 | ルネサスエレクトロニクス株式会社 | マイクロコントローラ及び自動車制御装置 |
US8429633B2 (en) * | 2008-11-21 | 2013-04-23 | International Business Machines Corporation | Managing memory to support large-scale interprocedural static analysis for security problems |
CN101782862B (zh) * | 2009-01-16 | 2013-03-13 | 鸿富锦精密工业(深圳)有限公司 | 处理器分配控制系统及其控制方法 |
US8631208B2 (en) * | 2009-01-27 | 2014-01-14 | Intel Corporation | Providing address range coherency capability to a device |
US8875142B2 (en) * | 2009-02-11 | 2014-10-28 | Hewlett-Packard Development Company, L.P. | Job scheduling on a multiprocessing system based on reliability and performance rankings of processors and weighted effect of detected errors |
TWI448847B (zh) * | 2009-02-27 | 2014-08-11 | Foxnum Technology Co Ltd | 處理器分配控制系統及其控制方法 |
CN101840390B (zh) * | 2009-03-18 | 2012-05-23 | 中国科学院微电子研究所 | 适用于多处理器系统的硬件同步电路结构及其实现方法 |
US7979746B2 (en) * | 2009-04-27 | 2011-07-12 | Honeywell International Inc. | Dual-dual lockstep processor assemblies and modules |
US8364862B2 (en) * | 2009-06-11 | 2013-01-29 | Intel Corporation | Delegating a poll operation to another device |
JP5099090B2 (ja) * | 2009-08-19 | 2012-12-12 | 日本電気株式会社 | マルチコアシステム、マルチコアシステムの制御方法、及びマルチプロセッサ |
US9411810B2 (en) * | 2009-08-27 | 2016-08-09 | International Business Machines Corporation | Method and apparatus for identifying data inconsistency in a dispersed storage network |
DE102009054637A1 (de) * | 2009-12-15 | 2011-06-16 | Robert Bosch Gmbh | Verfahren zum Betreiben einer Recheneinheit |
WO2011117155A1 (de) * | 2010-03-23 | 2011-09-29 | Continental Teves Ag & Co. Ohg | Redundante zwei-prozessor-steuerung und steuerungsverfahren |
US8479042B1 (en) * | 2010-11-01 | 2013-07-02 | Xilinx, Inc. | Transaction-level lockstep |
TWI447574B (zh) * | 2010-12-27 | 2014-08-01 | Ibm | 記錄崩潰與預防崩潰的方法、電腦可讀媒體、資訊設備、與系統 |
US8635492B2 (en) * | 2011-02-15 | 2014-01-21 | International Business Machines Corporation | State recovery and lockstep execution restart in a system with multiprocessor pairing |
US8671311B2 (en) | 2011-02-15 | 2014-03-11 | International Business Machines Corporation | Multiprocessor switch with selective pairing |
US8930752B2 (en) | 2011-02-15 | 2015-01-06 | International Business Machines Corporation | Scheduler for multiprocessor system switch with selective pairing |
WO2012143978A1 (ja) * | 2011-04-22 | 2012-10-26 | 富士通株式会社 | 情報処理装置及び情報処理装置の処理方法 |
US8554726B2 (en) * | 2011-06-01 | 2013-10-08 | Clustrix, Inc. | Systems and methods for reslicing data in a relational database |
US8924780B2 (en) * | 2011-11-10 | 2014-12-30 | Ge Aviation Systems Llc | Method of providing high integrity processing |
DE102012010143B3 (de) | 2012-05-24 | 2013-11-14 | Phoenix Contact Gmbh & Co. Kg | Analogsignal-Eingangsschaltung mit einer Anzahl von Analogsignal-Erfassungskanälen |
JP5601353B2 (ja) * | 2012-06-29 | 2014-10-08 | 横河電機株式会社 | ネットワーク管理システム |
GB2508344A (en) | 2012-11-28 | 2014-06-04 | Ibm | Creating an operating system dump |
US9274904B2 (en) * | 2013-06-18 | 2016-03-01 | Advanced Micro Devices, Inc. | Software only inter-compute unit redundant multithreading for GPUs |
JP6175958B2 (ja) * | 2013-07-26 | 2017-08-09 | 富士通株式会社 | メモリダンプ方法及びプログラム、並びに、情報処理装置 |
US9251014B2 (en) | 2013-08-08 | 2016-02-02 | International Business Machines Corporation | Redundant transactions for detection of timing sensitive errors |
JP6221702B2 (ja) * | 2013-12-05 | 2017-11-01 | 富士通株式会社 | 情報処理装置、情報処理方法、及び情報処理プログラム |
US10102052B2 (en) | 2014-01-29 | 2018-10-16 | Hewlett Packard Enterprise Development Lp | Dumping resources |
US9710273B2 (en) * | 2014-11-21 | 2017-07-18 | Oracle International Corporation | Method for migrating CPU state from an inoperable core to a spare core |
CN104699550B (zh) * | 2014-12-05 | 2017-09-12 | 中国航空工业集团公司第六三一研究所 | 一种基于lockstep架构的错误恢复方法 |
US9411363B2 (en) * | 2014-12-10 | 2016-08-09 | Intel Corporation | Synchronization in a computing device |
JP2016170463A (ja) * | 2015-03-11 | 2016-09-23 | 富士通株式会社 | 情報処理装置、カーネルダンプ方法、カーネルダンププログラム |
DE102015218898A1 (de) * | 2015-09-30 | 2017-03-30 | Robert Bosch Gmbh | Verfahren zur redundanten Verarbeitung von Daten |
US10067763B2 (en) | 2015-12-11 | 2018-09-04 | International Business Machines Corporation | Handling unaligned load operations in a multi-slice computer processor |
US9971650B2 (en) | 2016-06-06 | 2018-05-15 | International Business Machines Corporation | Parallel data collection and recovery for failing virtual computer processing system |
US10579536B2 (en) * | 2016-08-09 | 2020-03-03 | Arizona Board Of Regents On Behalf Of Arizona State University | Multi-mode radiation hardened multi-core microprocessors |
WO2018048723A1 (en) * | 2016-09-09 | 2018-03-15 | The Charles Stark Draper Laboratory, Inc. | Methods and systems for achieving trusted fault tolerance of a system of untrusted subsystems |
US10521327B2 (en) | 2016-09-29 | 2019-12-31 | 2236008 Ontario Inc. | Non-coupled software lockstep |
GB2555628B (en) * | 2016-11-04 | 2019-02-20 | Advanced Risc Mach Ltd | Main processor error detection using checker processors |
US10740167B2 (en) * | 2016-12-07 | 2020-08-11 | Electronics And Telecommunications Research Institute | Multi-core processor and cache management method thereof |
CN111149166B (zh) | 2017-07-30 | 2024-01-09 | 纽罗布拉德有限公司 | 基于存储器的分布式处理器架构 |
US10474549B2 (en) | 2017-07-31 | 2019-11-12 | Oracle International Corporation | System recovery using a failover processor |
JP7099050B2 (ja) * | 2018-05-29 | 2022-07-12 | セイコーエプソン株式会社 | 回路装置、電子機器及び移動体 |
US10901878B2 (en) * | 2018-12-19 | 2021-01-26 | International Business Machines Corporation | Reduction of pseudo-random test case generation overhead |
US11221899B2 (en) * | 2019-09-24 | 2022-01-11 | Arm Limited | Efficient memory utilisation in a processing cluster having a split mode and a lock mode |
US10977168B1 (en) * | 2019-12-26 | 2021-04-13 | Anthem, Inc. | Automation testing tool framework |
CN111123792B (zh) * | 2019-12-29 | 2021-07-02 | 苏州浪潮智能科技有限公司 | 一种多主系统交互通信与管理方法和装置 |
US11372981B2 (en) | 2020-01-09 | 2022-06-28 | Rockwell Collins, Inc. | Profile-based monitoring for dual redundant systems |
US11645185B2 (en) * | 2020-09-25 | 2023-05-09 | Intel Corporation | Detection of faults in performance of micro instructions |
US20230066835A1 (en) * | 2021-08-27 | 2023-03-02 | Keysight Technologies, Inc. | Methods, systems and computer readable media for improving remote direct memory access performance |
KR20230034646A (ko) * | 2021-09-03 | 2023-03-10 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
Family Cites Families (82)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3665404A (en) * | 1970-04-09 | 1972-05-23 | Burroughs Corp | Multi-processor processing system having interprocessor interrupt apparatus |
US4228496A (en) * | 1976-09-07 | 1980-10-14 | Tandem Computers Incorporated | Multiprocessor system |
US4293921A (en) * | 1979-06-15 | 1981-10-06 | Martin Marietta Corporation | Method and signal processor for frequency analysis of time domain signals |
US4481578A (en) * | 1982-05-21 | 1984-11-06 | Pitney Bowes Inc. | Direct memory access data transfer system for use with plural processors |
JPS61253572A (ja) | 1985-05-02 | 1986-11-11 | Hitachi Ltd | 疎結合マルチプロセツサ・システムの負荷配分方式 |
US4733353A (en) * | 1985-12-13 | 1988-03-22 | General Electric Company | Frame synchronization of multiply redundant computers |
JP2695157B2 (ja) | 1986-12-29 | 1997-12-24 | 松下電器産業株式会社 | 可変パイプラインプロセッサ |
EP0306211A3 (en) * | 1987-09-04 | 1990-09-26 | Digital Equipment Corporation | Synchronized twin computer system |
AU616213B2 (en) * | 1987-11-09 | 1991-10-24 | Tandem Computers Incorporated | Method and apparatus for synchronizing a plurality of processors |
CA2003338A1 (en) * | 1987-11-09 | 1990-06-09 | Richard W. Cutts, Jr. | Synchronization of fault-tolerant computer system having multiple processors |
JP2644780B2 (ja) | 1987-11-18 | 1997-08-25 | 株式会社日立製作所 | 処理依頼機能を持つ並列計算機 |
GB8729901D0 (en) * | 1987-12-22 | 1988-02-03 | Lucas Ind Plc | Dual computer cross-checking system |
JPH0797328B2 (ja) * | 1988-10-25 | 1995-10-18 | インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン | フオールト・トレラント同期システム |
US4965717A (en) * | 1988-12-09 | 1990-10-23 | Tandem Computers Incorporated | Multiple processor system having shared memory with private-write capability |
US5369767A (en) * | 1989-05-17 | 1994-11-29 | International Business Machines Corp. | Servicing interrupt requests in a data processing system without using the services of an operating system |
US5295258A (en) * | 1989-12-22 | 1994-03-15 | Tandem Computers Incorporated | Fault-tolerant computer system with online recovery and reintegration of redundant components |
US5317752A (en) * | 1989-12-22 | 1994-05-31 | Tandem Computers Incorporated | Fault-tolerant computer system with auto-restart after power-fall |
US5291608A (en) * | 1990-02-13 | 1994-03-01 | International Business Machines Corporation | Display adapter event handler with rendering context manager |
US5111384A (en) * | 1990-02-16 | 1992-05-05 | Bull Hn Information Systems Inc. | System for performing dump analysis |
ATE131375T1 (de) * | 1990-06-01 | 1995-12-15 | Du Pont | Orthopädisches implantat aus verbundwerkstoff mit modulschwankungen |
US5226152A (en) * | 1990-12-07 | 1993-07-06 | Motorola, Inc. | Functional lockstep arrangement for redundant processors |
US5295259A (en) * | 1991-02-05 | 1994-03-15 | Advanced Micro Devices, Inc. | Data cache and method for handling memory errors during copy-back |
CA2068048A1 (en) * | 1991-05-06 | 1992-11-07 | Douglas D. Cheung | Fault tolerant processing section with dynamically reconfigurable voting |
US5339404A (en) * | 1991-05-28 | 1994-08-16 | International Business Machines Corporation | Asynchronous TMR processing system |
JPH05128080A (ja) * | 1991-10-14 | 1993-05-25 | Mitsubishi Electric Corp | 情報処理装置 |
US5613127A (en) * | 1992-08-17 | 1997-03-18 | Honeywell Inc. | Separately clocked processor synchronization improvement |
US5838894A (en) * | 1992-12-17 | 1998-11-17 | Tandem Computers Incorporated | Logical, fail-functional, dual central processor units formed from three processor units |
US5535397A (en) * | 1993-06-30 | 1996-07-09 | Intel Corporation | Method and apparatus for providing a context switch in response to an interrupt in a computer process |
US5572620A (en) * | 1993-07-29 | 1996-11-05 | Honeywell Inc. | Fault-tolerant voter system for output data from a plurality of non-synchronized redundant processors |
US5504859A (en) * | 1993-11-09 | 1996-04-02 | International Business Machines Corporation | Data processor with enhanced error recovery |
CA2177850A1 (en) * | 1993-12-01 | 1995-06-08 | Thomas Dale Bissett | Fault resilient/fault tolerant computing |
JP3481737B2 (ja) * | 1995-08-07 | 2003-12-22 | 富士通株式会社 | ダンプ採取装置およびダンプ採取方法 |
US6449730B2 (en) * | 1995-10-24 | 2002-09-10 | Seachange Technology, Inc. | Loosely coupled mass storage computer cluster |
US5999933A (en) * | 1995-12-14 | 1999-12-07 | Compaq Computer Corporation | Process and apparatus for collecting a data structure of a memory dump into a logical table |
US5850555A (en) * | 1995-12-19 | 1998-12-15 | Advanced Micro Devices, Inc. | System and method for validating interrupts before presentation to a CPU |
US6141769A (en) * | 1996-05-16 | 2000-10-31 | Resilience Corporation | Triple modular redundant computer system and associated method |
GB9617033D0 (en) * | 1996-08-14 | 1996-09-25 | Int Computers Ltd | Diagnostic memory access |
US5790397A (en) * | 1996-09-17 | 1998-08-04 | Marathon Technologies Corporation | Fault resilient/fault tolerant computing |
US5796939A (en) * | 1997-03-10 | 1998-08-18 | Digital Equipment Corporation | High frequency sampling of processor performance counters |
US5903717A (en) * | 1997-04-02 | 1999-05-11 | General Dynamics Information Systems, Inc. | Fault tolerant computer system |
US5896523A (en) * | 1997-06-04 | 1999-04-20 | Marathon Technologies Corporation | Loosely-coupled, synchronized execution |
JP2001523855A (ja) * | 1997-11-14 | 2001-11-27 | マラソン テクノロジーズ コーポレイション | 故障回復/耐故障計算機 |
US6173356B1 (en) * | 1998-02-20 | 2001-01-09 | Silicon Aquarius, Inc. | Multi-port DRAM with integrated SRAM and systems and methods using the same |
US6141635A (en) * | 1998-06-12 | 2000-10-31 | Unisys Corporation | Method of diagnosing faults in an emulated computer system via a heterogeneous diagnostic program |
US5991900A (en) * | 1998-06-15 | 1999-11-23 | Sun Microsystems, Inc. | Bus controller |
US6223304B1 (en) * | 1998-06-18 | 2001-04-24 | Telefonaktiebolaget Lm Ericsson (Publ) | Synchronization of processors in a fault tolerant multi-processor system |
US6199171B1 (en) * | 1998-06-26 | 2001-03-06 | International Business Machines Corporation | Time-lag duplexing techniques |
US6247143B1 (en) * | 1998-06-30 | 2001-06-12 | Sun Microsystems, Inc. | I/O handling for a multiprocessor computer system |
US6314501B1 (en) * | 1998-07-23 | 2001-11-06 | Unisys Corporation | Computer system and method for operating multiple operating systems in different partitions of the computer system and for allowing the different partitions to communicate with one another through shared memory |
US6195715B1 (en) * | 1998-11-13 | 2001-02-27 | Creative Technology Ltd. | Interrupt control for multiple programs communicating with a common interrupt by associating programs to GP registers, defining interrupt register, polling GP registers, and invoking callback routine associated with defined interrupt register |
US6263373B1 (en) * | 1998-12-04 | 2001-07-17 | International Business Machines Corporation | Data processing system and method for remotely controlling execution of a processor utilizing a test access port |
US6393582B1 (en) * | 1998-12-10 | 2002-05-21 | Compaq Computer Corporation | Error self-checking and recovery using lock-step processor pair architecture |
US6948092B2 (en) * | 1998-12-10 | 2005-09-20 | Hewlett-Packard Development Company, L.P. | System recovery from errors for processor and associated components |
WO2000036492A2 (en) * | 1998-12-18 | 2000-06-22 | Triconex Corporation | Method and apparatus for processing control using a multiple redundant processor control system |
US6543010B1 (en) * | 1999-02-24 | 2003-04-01 | Hewlett-Packard Development Company, L.P. | Method and apparatus for accelerating a memory dump |
US6397365B1 (en) * | 1999-05-18 | 2002-05-28 | Hewlett-Packard Company | Memory error correction using redundant sliced memory and standard ECC mechanisms |
US6820213B1 (en) * | 2000-04-13 | 2004-11-16 | Stratus Technologies Bermuda, Ltd. | Fault-tolerant computer system with voter delay buffer |
US6658654B1 (en) * | 2000-07-06 | 2003-12-02 | International Business Machines Corporation | Method and system for low-overhead measurement of per-thread performance information in a multithreaded environment |
EP1213650A3 (en) * | 2000-08-21 | 2006-08-30 | Texas Instruments France | Priority arbitration based on current task and MMU |
US6604177B1 (en) * | 2000-09-29 | 2003-08-05 | Hewlett-Packard Development Company, L.P. | Communication of dissimilar data between lock-stepped processors |
US6604717B2 (en) * | 2000-11-15 | 2003-08-12 | Stanfield Mccoy J. | Bag holder |
US7017073B2 (en) * | 2001-02-28 | 2006-03-21 | International Business Machines Corporation | Method and apparatus for fault-tolerance via dual thread crosschecking |
US6704887B2 (en) * | 2001-03-08 | 2004-03-09 | The United States Of America As Represented By The Secretary Of The Air Force | Method and apparatus for improved security in distributed-environment voting |
US7065672B2 (en) * | 2001-03-28 | 2006-06-20 | Stratus Technologies Bermuda Ltd. | Apparatus and methods for fault-tolerant computing using a switching fabric |
US6928583B2 (en) * | 2001-04-11 | 2005-08-09 | Stratus Technologies Bermuda Ltd. | Apparatus and method for two computing elements in a fault-tolerant server to execute instructions in lockstep |
US6971043B2 (en) * | 2001-04-11 | 2005-11-29 | Stratus Technologies Bermuda Ltd | Apparatus and method for accessing a mass storage device in a fault-tolerant server |
US7207041B2 (en) * | 2001-06-28 | 2007-04-17 | Tranzeo Wireless Technologies, Inc. | Open platform architecture for shared resource access management |
US7076510B2 (en) * | 2001-07-12 | 2006-07-11 | Brown William P | Software raid methods and apparatuses including server usage based write delegation |
US6754763B2 (en) * | 2001-07-30 | 2004-06-22 | Axis Systems, Inc. | Multi-board connection system for use in electronic design automation |
US6859866B2 (en) * | 2001-10-01 | 2005-02-22 | International Business Machines Corporation | Synchronizing processing of commands invoked against duplexed coupling facility structures |
US7194671B2 (en) * | 2001-12-31 | 2007-03-20 | Intel Corporation | Mechanism handling race conditions in FRC-enabled processors |
US6687799B2 (en) * | 2002-01-31 | 2004-02-03 | Hewlett-Packard Development Company, L.P. | Expedited memory dumping and reloading of computer processors |
US7076397B2 (en) * | 2002-10-17 | 2006-07-11 | Bmc Software, Inc. | System and method for statistical performance monitoring |
US6983337B2 (en) * | 2002-12-18 | 2006-01-03 | Intel Corporation | Method, system, and program for handling device interrupts |
US7526757B2 (en) * | 2004-01-14 | 2009-04-28 | International Business Machines Corporation | Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program |
US7231543B2 (en) * | 2004-01-14 | 2007-06-12 | Hewlett-Packard Development Company, L.P. | Systems and methods for fault-tolerant processing with processor regrouping based on connectivity conditions |
JP2005259030A (ja) * | 2004-03-15 | 2005-09-22 | Sharp Corp | 性能評価装置、性能評価方法、プログラムおよびコンピュータ読取可能記録媒体 |
US7162666B2 (en) * | 2004-03-26 | 2007-01-09 | Emc Corporation | Multi-processor system having a watchdog for interrupting the multiple processors and deferring preemption until release of spinlocks |
US20050240806A1 (en) * | 2004-03-30 | 2005-10-27 | Hewlett-Packard Development Company, L.P. | Diagnostic memory dump method in a redundant processor |
US7308605B2 (en) * | 2004-07-20 | 2007-12-11 | Hewlett-Packard Development Company, L.P. | Latent error detection |
US7380171B2 (en) * | 2004-12-06 | 2008-05-27 | Microsoft Corporation | Controlling software failure data reporting and responses |
US7328331B2 (en) * | 2005-01-25 | 2008-02-05 | Hewlett-Packard Development Company, L.P. | Method and system of aligning execution point of duplicate copies of a user program by copying memory stores |
-
2004
- 2004-09-28 US US10/953,242 patent/US20050240806A1/en not_active Abandoned
- 2004-11-16 US US10/990,151 patent/US7890706B2/en active Active
-
2005
- 2005-01-25 US US11/042,981 patent/US7434098B2/en not_active Expired - Fee Related
- 2005-01-27 US US11/045,401 patent/US20050246581A1/en not_active Abandoned
- 2005-03-04 US US11/071,944 patent/US20050223275A1/en not_active Abandoned
- 2005-03-30 CN CN200510079205.4A patent/CN1690970A/zh active Pending
- 2005-03-30 CN CN200510079206.9A patent/CN100472456C/zh active Active
Also Published As
Publication number | Publication date |
---|---|
US20050240806A1 (en) | 2005-10-27 |
CN1690970A (zh) | 2005-11-02 |
US7890706B2 (en) | 2011-02-15 |
US20050223275A1 (en) | 2005-10-06 |
US20050246587A1 (en) | 2005-11-03 |
US7434098B2 (en) | 2008-10-07 |
US20050223178A1 (en) | 2005-10-06 |
CN1696903A (zh) | 2005-11-16 |
US20050246581A1 (en) | 2005-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100472456C (zh) | 确定用户程序是否作出了系统级调用的方法和系统 | |
CN1677354A (zh) | 在执行用户程序的多处理器中服务异步中断的方法和系统 | |
US7426656B2 (en) | Method and system executing user programs on non-deterministic processors | |
CN1811724B (zh) | 使用户程序的复制拷贝的执行点对齐的方法和系统 | |
CN100507833C (zh) | 使用户程序的复制拷贝的执行点对齐的方法和系统 | |
US4703481A (en) | Method and apparatus for fault recovery within a computing system | |
US8799706B2 (en) | Method and system of exchanging information between processors | |
US7155704B2 (en) | Determinism in a multiprocessor computer system and monitor and processor therefor | |
CN101103338B (zh) | 对用于录入和重放确定性事件序列的指令进行计数的方法 | |
KR100304319B1 (ko) | 시간 지연 이중화 기술을 구현하는 장치 및 방법 | |
CN1755660B (zh) | 冗余处理器中的诊断存储器转储方法 | |
JPS6013493B2 (ja) | デ−タ処理装置の動作シ−ケンスの制御方法および装置 | |
Weinstock | SIFT: System design and implementation | |
CN106033368A (zh) | 一种多核虚拟机确定性重演的方法 | |
JPH11143824A (ja) | バス・アービトレーション方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20170123 Address after: American Texas Patentee after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP Address before: American Texas Patentee before: Hewlett Packard Development Co. |