您好、欢迎来到现金彩票网!
当前位置:秒速飞艇 > 锁步操作 >

具有成对的高可靠性模式的多处理器和方法

发布时间:2019-05-28 12:39 来源:未知 编辑:admin

  【专利摘要】在一个实施例中,多处理装置包括第一处理器和第二处理器。每个处理器都有自己的数据和指令高速缓存来支持独立操作。在正常模式下,处理器独立地执行单独的指令流。每个处理器具有相应的签名生成器。该系统还包括耦合到签名生成器的比较单元。在高可靠性模式下,两个处理器执行相同的指令流。也就是说,每个处理器计算流中的指令的结果的版本。响应于各自的版本,相应的签名生成器向比较单元提供签名,从而可以检测到故障指令。在另一方面,每个处理器具有其各自的提交逻辑。一旦比较单元接收到相应版本的结果的签名,但只有当签名匹配时,比较单元才会发信号通知每个相应处理器中的提交逻辑已经消除了该指令产生的计算中断的可能性。这允许提交逻辑提交结果。如果签名不匹配,则比较单元向提交逻辑发出相应指令发生故障的信号。提交逻辑允许以程序顺序执行故障指令之前的指令继续执行,但是启动由故障指令产生的结果和程序顺序中的至少一些指令冲洗到故障指令。

  存在用于实现高可靠性处理的各种方法。图。图1示出了用于高可靠性处理的一个现有技术处理器100处理器100包括两个相同类型的运算单元的执行单元130和135。例如,两个执行单元都可以是浮点单元,也可以是整数单位。处理器100具有用于保持所提交的执行结果的架构化寄存器120。两个执行单元130和135都并行地执行相同的指令流。也就是说,对于每个指令,指令的实例在每个相应的执行单元130和135中执行。然后,当两个单元准备将用于指令的结果提交给寄存器文件120时,比较结果的两个版本如果比较单元125确定版本相同,则单元125利用结果更新一个或多个寄存器120。如果版本不匹配,则采取其他操作。在一个实现中,计数器记录错误是否重复发生,如果是,错误被分类为“硬”失败。在硬故障的情况下,指令发布机制不会重新发出故障指令,而是执行“陷阱”指令。一个这样的陷阱导致用于读出缺陷处理器的状态并将其加载到备用处理器中的微代码例程,该备用处理器在最初故障的指令处重新开始执行。另一种方案是,在没有可用的处理器的情况下,陷阱导致操作系统将故障处理器上的进程迁移到其他处理器,这增加了其他处理器的工作负载。

  虽然这种布置提供了可靠性优点,但是不利之处在于处理器设计比常规处理器更复杂并且具有更大的开销。而且,它限制了处理器100的吞吐量,使处理器100中的两个执行单元130都执行相同的指令流。专为高可靠性操作设计的处理器的另一个变体在Richard N. Gufstason,John S.Luptay和Charles F.Webb,“具有增强的错误恢复的数据处理器”,美国专利1996年4月2日发布的第5,504,859号。

  图2示出了用于高可靠性处理的另一布置在这种投票方案中,三个处理器200各自并行地执行相同的程序,并且在处理器100外部的总线上的程序的检查点处比较结果的版本。如果版本不匹配,则采取其他动作,例如将不同的处理器100替换为产生不同版本的处理器100。这种布置是有利的,因为单个处理器200的复杂性被减少,并且可以识别错误产生处理器。而且,一个处理器200的吞吐量可以大于图1中的一个处理器100的吞吐量。如图1所示,由于单独处理器200不将其任何执行单元用于冗余处理。然而,图1的布置2在处理器200的级别是冗余的,并且使用三个整体处理器200从单个故障恢复。此外,错误检查限于由处理器外部断言的结果。

  在本发明中解决了上述需要。根据本发明,在第一实施例中,多处理系统包括第一处理器和第二处理器。每个处理器都有自己的数据和指令高速缓存来支持独立操作。在第一种模式下,“高性能”处理器独立地执行单独的指令流。在第二种模式下,“高可靠性”模式,两个处理器执行相同的指令流。也就是说,对于流中的指令,每个处理器计算其自己的结果版本。

  该系统包括用于指示各个版本是否匹配的比较单元。如果版本与指令不匹配,则该指令被认为是故障指令。响应于处于高可靠性模式的系统和指示故障指令的比较单元,处理器恢复处理器在执行故障指令之前的状态,并且处理器重新执行故障指令。

  在另一方面,每个处理器具有其各自的提交逻辑。如果比较单元接收到相应版本的结果的匹配签名,则比较单元发信号通知每个相应处理器中的提交逻辑已经消除了该指令产生的计算中断的可能性。这允许提交逻辑提交结果。如果签名不匹配,则比较单元向提交逻辑发出相应指令发生故障的信号。作为响应,提交逻辑允许在程序命令之前的故障指令之前的指令继续执行,但是刷新遵循程序序列中的故障指令的指令及其结果。或者,提交逻辑刷新由故障指令产生的结果,并且只有选择的指令在程序顺序中导致故障指令,即那些指令及其结果取决于故障指令。

  在另一方面,在一个实施例中,这样的签名包括指示签名的结果的对应版本的奇偶校验位。对于一个这样的实施例,签名由单个奇偶校验位组成。替代地,签名包括其版本的各个子集的奇数位数。在另一个实施例中,签名包括其版本结果的所有位的和。在另一个实施例中,签名包括整个版本本身。

  在另一方面,该系统包括用于产生纠错码的完整逻辑,用于将具有指令结果的处理器状态的一部分包括在内。对于这样的指令结果,签名生成器响应于它们各自的结果版本产生它们各自的签名,包括版本的纠错码。

  在仍然在未来的方面,在处理器执行单独的程序或指令流的高性能模式中,每个处理器将通过其各自的总线逻辑具有独立的总线访问。对于这种情况,模式控制逻辑通知总线接口单元中的仲裁逻辑来仲裁两个总线逻辑单元的独立总线请求。

  在高可靠性模式中,两个处理器并行执行相同的程序或指令流,每个处理器将需要相同的锁步总线访问。在这种情况下,模式控制逻辑通知总线接口单元中的仲裁逻辑,以允许只有一个总线逻辑单元控制总线请求并读取系统中两个处理器的总线。

  在另一方面,由于处理器经受外部中断,这可能会干扰同步,除非协调正确,系统的总线接口单元具有共同的外部中断逻辑,其响应外部中断请求并且同时向两个处理器发出信号以响应到中断请求。响应可以仅包括将寄存器中的位设置为稍后的跟踪,或者可以包括使处理器转移到微代码路由,执行调用操作系统路由的陷阱指令,或甚至终止指令流的双重执行,使处理器同步终止。

  在另一个实施例中,一种用于多处理器操作的方法包括选择操作模式的步骤。响应于处于高性能模式,两个处理器独立地执行单独的指令流。响应于处于高可靠性模式,两个处理器同时执行一个指令流的指令,其中每个处理器计算流中的指令的结果的相应版本。

  在另一方面,响应于指令结果的相应版本,签名生成器将签名声明为比较单元,使得可以检测到故障指令。响应于处于高可靠性模式的系统和指示故障指令的比较单元,处理器恢复处理器在执行故障指令之前的状态,并且处理器重新执行故障指令。响应于处于高可靠性模式的系统和指示正确计算的指令的比较单元,每个相应处理器的提交逻辑在每个处理器中提交结果。

  在另一方面,在处理器执行单独的程序或指令流的高性能模式中,每个处理器将通过其各自的总线逻辑具有独立的总线访问。对于这种情况,方法实施例包括模式控制逻辑的步骤,通知总线接口单元中的仲裁逻辑来仲裁两个总线逻辑单元的独立总线请求。在高可靠性模式下,两个处理器并行执行相同的程序或指令流,每个处理器将需要相同的锁步总线访问。在这种情况下,方法实施例包括模式控制逻辑的步骤,通知总线接口单元中的仲裁逻辑,以允许只有一个总线逻辑单元控制总线请求并读取系统中两个处理器的总线。

  现在参考图1。如图3所示,示出了具有第一和第二处理器305A和305B的高可靠性处理系统300。处理器的元素的编号相同,但具有相应的后缀“A”和“B.”在下文中,在上下文许可的情况下,将不再明确地引用后缀来描述元素,并且应当理解,后缀是隐含的。

  每个处理器具有用于保持由执行和加载/存储单元325产生的执行结果的扩展寄存器文件320.扩展寄存器文件包括架构化的寄存器和补充寄存器。在一个实施例中,补充寄存器包括重命名寄存器(有时被称为“未来文件”)。在替代实施例中,补充寄存器包括历史文件。

  可能会出现许多异常情况,要求中途通过管道中止指令。这些包括i / o设备请求,由用户程序调用的操作系统服务,指令执行跟踪,程序员请求的中断(称为“断点”),算术计算溢出或下溢,页错误,未对齐的存储器访问,硬件故障,电源故障,使用未定义的指令,存储器保护违规等。

  这种流水线并发症通过基于硬件的猜测来复合,其通常在现有技术的处理器中实现,根据哪些指令是按顺序和推测地执行的,即在解决相对于分支指令的依赖性之前执行的。是否将采取不正确的分支指令预测,因此是另一种特殊情况,要求中止指令。

  由于这些原因,状态恢复机制被包括在最先进的处理器中以处理“故障”导致这些特殊情况之一的指令。根据该机制,允许以程序顺序执行故障指令之前的指令的执行,从而将其结果提交到处理器状态,但是在故障指令之后立即执行指令,并且可能包括故障指令,这取决于上下文,重新启动。这些特殊情况的术语通常以不一致的方式使用。在本申请中,术语“错误”,“ 例外的或“中断”在这些特殊情况下可互换使用。

  在图1的上下文中,如图3所示,状态恢复机制包括扩展寄存器文件320中的数据存储和用于保存状态信息的存储队列330,以及用于将信息恢复到所选择的寄存器并响应于中断重新获取和重新执行指令的控制逻辑310,一旦信息提交就丢弃信息。

  现在参考图1。参见图4,对流水线的状态维护和恢复的方面进行了说明和实施例,据此扩展寄存器文件320包括“未来文件”也称为“重命名寄存器”管道级,提取,解码,重命名等在图1的顶部示出。在该实施例中,架构寄存器420保存所提交的指令的执行结果,并且重命名寄存器410保存尚未提交的指令的执行结果。也就是说,根据该实施例,执行/加载存储单元325将其结果写入重命名寄存器410或存储队列330中的一个或多个,并且响应于确定何时可能不再存在因为可能更改执行结果,提交逻辑480提交结果,使其被写入一个或多个架构寄存器420或存储器390,存储器390可能因此移位一个或多个构造寄存器420或存储器中的先前结果更具体地,结合由执行/加载存储单元325产生的结果,完整逻辑470计算纠错码,并且签名生成器355响应于包括纠错码的结果产生签名。签名由比较单元345进行比较,签名之间的匹配或差异的指示被输出到提交逻辑480.除了常规检查之外,本发明的提交逻辑480接收比较单元345输出,并且提交结果如果一个匹配是标记如果指出了差异,则启动或启动状态恢复。

  根据图1的实施例,如图4所示,如果对于包括计算错误的比较单元345的指示的故障指令发生中断,则逻辑310允许在程序顺序中的故障指令之前的指令继续,但是在扩展寄存器文件320中开始刷新结果并且由故障指令产生的存储队列330和其后的程序顺序存储队列330。在另一个实施例中,逻辑310刷新故障指令的结果和随后的指令,但是仅当它们使用由故障指令的结果产生的结果时才清除。刷新的指令通过取出逻辑430从指令高速缓存350重新获取以用于重新执行。

  现在参考图1。在图5中,示出了替代实施例的状态维护和恢复的方面,根据该替换实施例,扩展寄存器文件320包括历史文件510.在该实施例中,架构寄存器520具有将来的状态结果。历史记录寄存器510保存在架构化寄存器中被覆盖的先前值,并且可以包括尚未提交的执行结果。也就是说,根据本实施例,执行/加载存储单元325将其结果立即写入一个或多个构造寄存器520.(这与未来的文件实施例相反,其中结果首先写入补充因此,对于历史文件实施例,架构的寄存器保持未来,即未提交的状态。)根据该历史文件实施例,结果也被写入历史的一个或多个在转发的情况下注册,类似于转发到操作数寄存器。当完成逻辑570确定存储在历史寄存器中的结果不再受到中断时,提交逻辑580提交结果,释放历史文件中结果的条目,因此该条目可以用于后续结果。至少有效地释放条目(如果不是字面上)将结果从历史文件中移出。

  再次参考图1。如图3所示,应当理解,对于两者, 4和5状态维护和恢复机制实施例中,存储队列330临时存储主存储器的执行结果,等待结果被提交。在替代实施例中,存储队列被包含在重命名寄存器410(图4)中。不管实施例如何,扩展寄存器文件320和存储队列330在执行指令之后并在指令提交之前提供其他指令所需的结果。更具体地,本发明的目的是保持可用于状态恢复的结果。

  再次参考图1。如图3所示,对于图1和2所示的两个实施例参考图4和5,图4的处理系统300。3包括模式控制逻辑302,用于在高性能模式(“第一模式”)和操作处理器305的高可靠性模式(“第二模式”)之间进行选择。

  在高性能模式中,处理器305执行单独的程序或指令流。因此,处理器305包括它们自己的高速缓存335和350,以支持这种独立操作。在该模式中,每个处理器305将具有对总线的独立访问,因此模式控制逻辑302通知总线以在总线B的独立总线请求之间进行仲裁。

  在高可靠性模式中,两个处理器305都并行地执行相同的程序或指令流。也就是说,对于流中的一个指令,每个处理器计算其自己的结果版本。在该模式中,每个处理器305将需要相同的锁步总线访问,因此模式控制逻辑302通知总线,以允许只有一个总线来控制总线也是如此。此外,仲裁逻辑比较来自处理器305的请求,以检查两者是否在同一周期中产生相同的请求。

  系统300包括比较单元345,用于指示两个处理器的“相应版本的指令结果相符。如果版本与指令不匹配,则该指令被认为是故障指令。处理器305响应于处于高可靠性模式的系统300和指示故障指令的比较单元345,恢复处理器在执行故障指令之前的状态,并且处理器重新执行故障指令。

  在一个实施例中,每个处理器305具有至少一个相应的签名生成器。在图如图3所示,每个处理器305具有耦合到总线,用于传送用于存储在扩展寄存器文件230中的指令结果,以及总线,用于传送用于存储在存储队列330中的指令结果。每个签名发生器355耦合到比较单元345.响应于相应的结果版本,签名生成器355向比较单元345断言签名,使得可以检测到故障指令。

  响应于来自模式选择逻辑302的控制信号,将系统300设置为第一或第二模式。根据一个实施例,在高性能模式中,模式选择逻辑302将指令取消/解码/发出/完成逻辑310,使得逻辑310不响应由比较单元345产生的任何计算中断信号。在图3中,模式控制逻辑302在高性能模式下关闭比较单元345。替代方案,也由虚线在高性能模式中关闭签名生成单元355。

  两个处理器305都用确定性逻辑构建,因此只要两个处理器305在完全相同的状态下被初始化,并且只要在相同的时钟周期中两者都具有相同的同步输入,并且长时间由于没有发生硬件错误,两个处理器都将保持锁定状态。耦合到指令获取/解码/发布/完成逻辑310的模式控制逻辑302的一个功能是控制该初始化和同步指令取出。

  除了结合处理器开始执行指令流的同步之外,另外同步问题也出现在对处理器响应中断请求的要求上。也就是说,处理器305当然可能受到可能干扰同步的外部中断,除非双处理器305的操作被正确地协调。因此,处理器305总线具有共同的外部中断逻辑342,其同时对两个处理器中的外部中断请求和信号逻辑310进行响应以响应中断请求。响应可以仅包括将寄存器中的位设置为稍后的跟踪,或者可以包括使处理器转移到微代码路由,执行调用操作系统路由的陷阱指令,或甚至终止指令流的双重执行,使处理器同步终止。也就是说,要进入处理器305的BIU 340的外部信号是异步的。由于不可能保证两个仲裁电路在同步异步信号方面总是做出相同的决定,所以根据一个实施例,通过外部中断逻辑342去除这个不确定性,使得每个外部异步信号在它是复制到处理器305,并且在处理器305中不需要进一步的同步。适用于该功能的同步电路是众所周知的,包括Mead和Conway,“VLSI系统简介”第8章,系统定时,由Charles Seitz撰写,并通过引用并入本文。

  在极少数情况下,硬件故障可能导致处理器305脱离锁步操作,例如由于导致非构造和非保护寄存器中的不正确位的故障。这将在比较单元345中表现为一系列不良比较。根据本发明的一个实施例,一串错误比较将导致如现有技术中那样调用微代码。也就是说,计数器(未示出)记录错误是否重复出现,如果是,则将错误归类为“硬”失败。在硬故障的情况下,指令发布机制不会重新发出故障指令,而是执行“陷阱”指令。一个这样的陷阱导致用于读出缺陷处理器的状态并将其加载到备用处理器中的微代码例程,该备用处理器在最初故障的指令处重新开始执行。另一种方案是,在没有可用的处理器的情况下,陷阱导致操作系统将故障处理器上的进程迁移到其他处理器,这增加了其他处理器的工作负载。

  在执行单元305已经计算了其存储队列330或扩展寄存器320之一的指令的结果之后,并且在由逻辑310确定了任何纠错码之后,包括任何纠错码的结果,由签名生成器355处理,签名生成器355计算结果的签名。在一个实施例中,签名生成器355计算结果的奇偶校验,并输出指示奇偶校验的单个位。在另一个实施例中,签名生成器为64位字中的每8个字节计算8个奇偶校验位。在另一个实施例中,计算双向奇偶校验。也就是说,例如,除了每8个连续位的奇偶性之外,还计算每八位的奇偶校验。在另一个实施例中,签名包括结果中的所有比特的和。签名还可以包括识别功能。

  对于产生扩展寄存器文件320A或存储队列330A的结果的每个指令,处理器305A签名生成器355A向结果的处理器305A版本的比较单元345输出签名。类似地,对于相同的指令处理器305B,签名生成器355B向结果的处理器305B版本的比较单元345输出签名。假设处理器305在锁定步骤中保持其指令执行,根据上述同步机制,比较单元345从两个签名生成器350A和350B同步地接收对应的信号。如果签名与指令结果的两个版本不匹配,则这表明两个处理器305针对其各自版本的结果计算了不同的值,这在本文中可被称为“计算中断”由于“错误的指令”引起的。这表明其中一个值是错误的。如果签名与两个处理器305匹配,则比较单元345向每个相应处理器305中的提交逻辑310通知已经消除了该指令产生的计算中断的可能性,允许提交逻辑310提交结果。

  如果故障指令产生计算中断,则如果后续指令使用由故障指令的结果产生的结果,则结果对于程序顺序中的故障指令之后的任何指令是可疑的。因此,故障指令和任何后续指令需要重新执行。根据本发明的实施例,如果计算中断的比较单元345信号逻辑310,则逻辑310允许在程序顺序中的故障指令之前的指令继续,但是在扩展寄存器文件325和存储队列330中开始刷新结果这是由故障指令产生的,并在程序顺序之后产生。在另一个实施例中,逻辑310刷新故障指令的结果和随后的指令,但是仅当它们使用由故障指令的结果产生的结果时才清除。

  对于本领域普通技术人员来说,许多修改和变化将是显而易见的。例如,应该理解的是,图3至图5仅仅是许多可能的实施例中的选择的,并且操作和结构可以变化。考虑了本发明的状态维护和恢复元件的许多实施例。在许多参考文献中描述了状态维护和恢复元件的变化和额外的具体细节,包括以下内容,其通过引用并入本文:

  用于指示指令的各个版本是否匹配的比较逻辑,其中如果版本不匹配,该指令被认为是故障指令,并且响应于处于第二模式的系统和指示故障指令的比较单元,处理器恢复处理器在执行故障指令之前的状态,使得处理器可以重新执行故障指令。

  第二处理器的第二提交逻辑,其中响应于比较单元接收对于结果的相应版本的匹配签名,比较单元向每个相应处理器发信号通知提交逻辑已经消除了针对该指令的计算中断的可能性,并且提交逻辑提交结果,并且其中响应于签名之间的差异,比较单元向提交逻辑发出相应指令已经发生故障的提交逻辑,并且提交逻辑在程序顺序中的故障指令之前允许指令继续执行,但是按程序顺序发出故障指令后,指令的刷新以及刷新指令的结果。

  总线仲裁逻辑,其中在第一模式中,每个处理器通过其相应的总线逻辑单元独立地产生总线请求,并且总线仲裁逻辑在独立总线请求之间进行仲裁,并且在第二模式中,总线逻辑单元之一控制总线请求并读取系统中两个处理器的总线所述的系统,包括:

  响应于系统处于第二模式,通过用于两个处理器的单个总线逻辑单元来控制总线请求并读取总线,使得两个处理器具有锁步总线所述的方法,包括响应于异步外部中断请求同步地发信号通知两个处理器来响应中断请求的步骤,使得处理器不必采取进一步的动作来相互同步以响应于异步外部中断请求。

http://lyesmith.net/suobucaozuo/108.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有