CN100480996C - 在冗余多线程***中管理外部存储器更新的方法和设备 - Google Patents
在冗余多线程***中管理外部存储器更新的方法和设备 Download PDFInfo
- Publication number
- CN100480996C CN100480996C CN200480039553.2A CN200480039553A CN100480996C CN 100480996 C CN100480996 C CN 100480996C CN 200480039553 A CN200480039553 A CN 200480039553A CN 100480996 C CN100480996 C CN 100480996C
- Authority
- CN
- China
- Prior art keywords
- thread
- instruction
- result
- hangover
- storage
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 15
- 238000001514 detection method Methods 0.000 title abstract description 8
- 206010019133 Hangover Diseases 0.000 claims description 35
- 230000005055 memory storage Effects 0.000 claims description 11
- 238000004321 preservation Methods 0.000 claims 1
- 230000010076 replication Effects 0.000 abstract description 9
- 238000005516 engineering process Methods 0.000 description 8
- 238000012856 packing Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 5
- 230000001052 transient effect Effects 0.000 description 5
- 230000015572 biosynthetic process Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- JJWKPURADFRFRB-UHFFFAOYSA-N carbonyl sulfide Chemical compound O=C=S JJWKPURADFRFRB-UHFFFAOYSA-N 0.000 description 3
- 230000006378 damage Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- LBDSXVIYZYSRII-IGMARMGPSA-N alpha-particle Chemical compound [4He+2] LBDSXVIYZYSRII-IGMARMGPSA-N 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1492—Generic software techniques for error detection or fault masking by run-time replication performed by the application software
- G06F11/1494—N-modular type
-
- 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/14—Error detection or correction of the data by redundancy in operation
- G06F11/1497—Details of time redundant execution on a single processing unit
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Multimedia (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Debugging And Monitoring (AREA)
- Hardware Redundancy (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
公开了一种使用推测性存储器支持来管理用于冗余多线程***中故障检测的外部存储器更新的多线程体系结构。特别是,一种方法通过使用推测性存储器支持将冗余线程与外部更新隔离来在SRT处理器上提供装入值的输入复制。该方法因此避免了提供输入复制的专用结构的需要。
Description
技术领域
本发明涉及冗余多线程***中的故障检测,更具体而言,涉及一种使用推测性存储器支持来管理用于冗余多线程***中故障检测的外部存储器更新的方法和设备。
背景技术
相关申请
此美国专利申请涉及以下美国专利申请:2003年12月30日提交的申请号为10/749,618的BUFFERING UNCHECKED STORES FORFAULT DETECTION IN RMS USING SPECULATIVE MEMORYSUPPORT。
处理器正在变得日益易受由α粒子和宇宙射线放电(strike)引起的瞬时故障的损坏。这些故障可能导致称为“软”错误的操作错误,因为这些错误并不导致处理器的永久故障。由于处理器缺少实际的保护,所以诸如中子之类的宇宙射线粒子的放电特别危险。在基于处理器的设备中,瞬时故障通常占故障中的90%以上。
由于晶体管尺寸缩小,所以单个晶体管变得不大易受宇宙射线放电的损坏。然而,伴随着晶体管尺寸的减少,电压电平也减少,并且用于处理器的晶体管数量的相应增加导致整个处理器对宇宙射线放电或其他软错误原因的敏感度按指数增加。为了解决该问题,对于多处理器***而言实现选定失效率需要单个处理器的甚至更低的失效率。作为这些趋势的结果,通常为关键任务应用程序所保留的故障检测和恢复技术正变得日益适用于其它处理器应用。
当错误没有被检测到并且可能导致破坏的数据值时,无记载(silent)数据破坏出现,所述破坏的数据值能够一直持续到处理器被复位。无记载数据破坏比率是无记载数据破坏事件出现的比率。软错误是例如通过使用奇偶检验来检测但不能被纠正的错误。
在故障能够扩散到永久存储器之前,故障检测支持可以通过暂停计算来减少处理器的无记载数据破坏比率。例如,奇偶校验是一种众所周知的故障检测机制,其避免存储器结构中单比特错误的无记载数据破坏。遗憾的是,将奇偶校验添加到锁存器或高性能处理器中的逻辑会不利地影响周期时间和整体性能。因此,处理器设计者已经采用冗余执行机制来检测处理器中的故障。
当前的冗余执行***一般使用称为“锁步”的技术,其通过在两个相同的锁步(周期同步的)处理器上运行同一程序的相同拷贝来检测处理器故障。在每个周期中,两个处理器被馈给相同的输入,并且检验器电路比较输出。一旦输出不匹配,则检验器标记错误并且能够启动恢复程序。锁步可以通过检测在检验器上显示的每个故障来减少处理器的无记载数据破坏失效时间。遗憾的是,锁步浪费了否则可用于改善性能的处理器资源。
发明内容
根据本发明的一个方面,提供一种使用推测性存储器支持来管理用于冗余多线程***中故障检测的外部存储器更新的方法,包括:
将两个指令线程作为前导线程和拖尾线程来并行执行,其中每个指令线程至少包括目的地是存储器中的存储单元的存储指令;
将在前导线程中执行的存储指令的第一结果以及在拖尾线程中执行的存储指令的第二结果保存到存储器中;
确定第一结果是否等于第二结果;
当第一结果等于第二结果时将存储指令应用于存储器状态;以及
延迟外部更新一直到完成应用步骤。。
根据本发明的另一方面,提供一种使用推测性存储器支持来管理用于冗余多线程***中故障检测的外部存储器更新的设备,包括:
用于将两个指令线程作为前导线程和拖尾线程来并行执行的装置,其中每个指令线程至少包括目的地是存储器中的存储单元的存储指令;
用于将在前导线程中执行的存储指令的第一结果以及在拖尾线程中执行的存储指令的第二结果保存到存储器中的装置;
用于确定第一结果是否等于第二结果的装置;
用于当第一结果等于第二结果时将存储指令应用于存储器状态的装置;以及
用于延迟外部更新一直到所述将存储指令应用于存储器状态的装置的操作完成为止的装置。
附图说明
根据如附图中所说明的优选实施例的下面的描述,本发明的各种特征将是显而易见的,其中在整个附图中,相同的参考数字通常是指相同的部分。附图不一定是按照比例的,而是把重点放在说明本发明的原理上。
图1是具有冗余线程的冗余多线程体系结构的一个实施例的框图。
图2是同步和冗余线程体系结构的一个实施例的框图。
图3说明同步和冗余多线程体系结构的一个实施例的最小和最大空闲时间(slack)关系。
图4是管理时期间(inter-epoch)存储器数据相关性的存储器***扩展的流程图。
图5是用于冗余多线程体系结构中的故障检测的外部存储器更新的一个实施例的框图。
具体实施方式
在下面的描述中,为了解释而非限制来阐述具体细节,例如特定结构、体系结构、接口、技术等等,以便提供对本发明各个方面的彻底理解。然而,对于具有本公开益处的本领域技术人员而言显而易见的是,可以在其他脱离这些具体细节的实例中实行本发明的各个方面。在某些情况中,省略了公知设备、电路和方法的描述,以便不用不必要的细节来模糊本发明的描述。
复制范围
图1是冗余多线程体系结构的一个实施例的框图。在冗余多线程体系结构中,通过将一个程序的两个拷贝作为独立的线程来执行可以检测故障。每个线程具备相同的输入,并且输出被比较以确定是否出现错误。可以相对于在此称为“复制范围”的概念来描述冗余多线程。复制范围是逻辑上或物理上冗余操作的边界。
在复制范围130内的部件(例如执行前导线程110的处理器和执行拖尾线程120的处理器)进行冗余执行。相反,在复制范围130外的部件(例如存储器150、RAID 160)不进行冗余执行。通过其它技术来提供故障保护,例如用于存储器150的纠错码和用于RAID 160的奇偶校验。其它的设备可以在复制范围130外,和/或其它的技术可以用来提供在复制范围130外的设备的故障保护。
输入复制范围130的数据通过输入复制代理170输入,该输入复制代理170复制数据,并且将数据的拷贝发送到前导线程110和拖尾线程120。类似地,离开复制范围130的数据通过输出比较代理180离开,该输出比较代理180比较数据,并且确定是否出现错误。改变复制范围130的边界导致硬件的性能与数量的折衷。例如,复制存储器150将通过避免存储指令的输出比较而允许较快地访问存储器,但是通过加倍***中存储器的数量将增加***成本。
通常存在两个复制范围,它们可以被称为“复制范围寄存器”和“复制范围高速缓存”。在复制范围寄存器体系结构中,寄存器文件和高速缓存在复制范围之外。从复制范围的复制范围寄存器的输出包括寄存器写以及存储地址和数据,为了发现故障而对它们进行比较。在复制范围高速缓存体系结构中,指令和数据高速缓存在复制范围之外,因此为了发现故障而对所有存储地址和数据而不是寄存器写进行比较。
复制范围高速缓存体系结构具有以下优点,即为了发现故障而仅比较存储内容(store)(和可能的有限数量的其他选定指令),这就通过不延迟存储操作而减少了检验器带宽并且改善了性能。相反,复制范围寄存器体系结构需要为了发现故障而比较大部分指令,这需要较大的检验器带宽,并且可以延迟存储操作,直到检验器确定在存储操作之前的所有指令是无故障的。复制范围高速缓存能够提供与复制范围寄存器相同的瞬时故障覆盖水平,因为在复制范围的边界处未显示为错误的故障不破坏***状态,并且因此被有效地屏蔽。
为了提供故障恢复,应该比较每个指令结果以提供对应于每个指令的检验点。因此,在此更加详细地描述复制范围寄存器体系结构。
同步和冗余线程体系结构的概述
图2是同步和冗余线程体系结构的一个实施例的框图。图2的体系结构是复制范围寄存器体系结构,其中比较每个指令的输出或结果以检测错误。
前导线程210和拖尾线程220表示以一个时间差来执行的相应线程,以使前导线程210在拖尾线程220执行指令之前执行相同的指令。在一个实施例中,前导线程210和拖尾线程220是相同的。作为选择,前导线程210和/或拖尾线程220能够包括未在副本(counterpart)线程中包含的控制或其他信息。可以通过同一处理器执行前导线程210和拖尾线程220,或者可以通过不同处理器执行前导线程210和拖尾线程220。
指令地址经由指令复制队列230而从前导线程210传递到拖尾线程220。通过指令复制队列230传递指令允许对在前导线程210中指令的执行与拖尾线程220中同一指令的执行之间的时间差或“空闲时间”进行控制。
输入数据通过源寄存器值队列240而从前导线程210传递到拖尾线程220。在一个实施例中,源寄存器值队列240为前导线程210和拖尾线程220复制输入数据。输出数据通过目的寄存器值队列250而从拖尾线程220传递到前导线程210。在一个实施例中,目的寄存器值队列240比较前导线程210和拖尾线程220的输出数据。
在一个实施例中,前导线程210比拖尾线程220提前运行数百条指令。可以使用任何数量的指令的“空闲时间”。在一个实施例中,通过放慢和/或延迟拖尾线程220的指令提取而产生空闲时间。在可选的实施例中,如果指令复制队列230不执行指令复制,那么可以通过指令复制队列230或指令复制机构来产生空闲时间。
用于在同步和冗余线程体系结构中产生空闲时间的技术的更多细节可以在以下文献中找到:Shubhendu S.Mukherjee,Michael Kontz和Steven K.Reinhardt的“Detailed Design and Evaluation of RedundantMultithreading Alternatives(冗余多线程替代的详细设计和评估)”in Proc.29th Int’1 Symp.on Computer Architecture,May 2002以及Steven K.Reinhardt和Shubhendu S.Mukherjee的“Transient Fault Detection viaSimultaneous Multithreading(经由同步多线程的瞬时故障检测)”in Proc.27th Int’1 Symp.on Computer Architecture,June 2000。
图3说明同步和冗余线程体系结构的一个实施例的最小和最大空闲时间关系。图3的实施例是如上所述的复制范围寄存器体系结构。最小空闲时间是高速缓存未命中、从执行到退出(retire)的等待时间以及招致将装入地址和值转发到拖尾线程的等待时间的总等待时间。如果前导线程经历高速缓存未命中,并且来自拖尾线程的相应装入在最小空闲时间之前到达执行点,那么停止拖尾线程。
类似地,最大空闲时间是前导线程中从退出到故障检测的等待时间。通常,存在确定数量的缓冲以允许从前导线程退出的指令在退出之后保留在处理器中。这在前导线程和拖尾线程之间定义了最大空闲时间。如果缓冲器装满,那么停止前导线程以允许拖尾线程使用缓冲器的附加指令。所以,如果两个线程之间的空闲时间大于最大空闲时间,那么整体性能降低。
推测性(speculative)存储器支持
在推测性多线程***中,将顺序程序分成逻辑上的顺序段,称为时期(epoch)或任务。多个时期在独立的处理器核心上或者作为SMT处理器内的独立线程来被并行执行。在时间中的任一给定点,仅最老的时期对应于原始顺序程序的执行。所有其它时期的执行基于推测过去可能的控制和数据冒险(hazard)。在时期间错误推测的情况下,错误推测的时期被压制。如果时期完成执行并且变成最老的时期,那么其结果被提交到计算的顺序体系结构状态。
在推测性多线程***的一个实施例中,编译器可以基于试探法来静态地将代码划分成时期。例如,通常可以使用循环体来形成时期。在该情况中,所述循环的多次迭代将在运行时间时创建能够并行执行的多个时期。
***必须实施时期间数据冒险以维持在该并行执行上的顺序程序的语义。在一个实施例中,编译器负责时期的形成,所以它能够明确地管理基于寄存器的时期间通信(也许具有硬件支持)。基于存储器的数据冒险(一般)不可静态预测,因此必须在运行时间时处理。管理时期间存储器数据相关性的存储器***扩展是任一推测性多线程***的关键部件,当可能的时候,它满足所述相关性,并且检测违犯以及另外压制时期。
图4说明管理时期间存储器数据相关性的存储器***扩展。检测违犯和压制时期是任一推测性多线程***的重要特征。在一个实施例中,在步骤400,装入必须将存储值返回到在程序的逻辑顺序执行中直接在其之前的相同地址。例如,***必须以优先次序返回以下内容。首先,如果有的话是同一时期内最近预先存储的值。其次,如果有的话是逻辑上最近的前述时期中最后存储的值。最后是来自所提交的顺序存储器状态的值。此外,装入必须未受到已经执行的任何逻辑上接连的存储内容的影响。这假设处理器保证存储器引用出现以在时期内顺序执行,因此,任何逻辑上接连的存储内容将属于逻辑上接连的时期。
接下来,在410,存储内容必须检测任何逻辑上接连的装入是否已经执行。如果它们已经执行,那么它们违犯了数据相关性。然后必须压制包含所述装入的任何时期以及可能的任何随后的时期。在420,提交操作获得在时期期间所执行的外露的存储内容组,并且自动地将它们应用于提交的顺序存储器状态。外露的存储内容是时期中特定位置的最后存储内容。非外露存储内容,即同一时期内其值被重写的存储内容在它们执行的时期外是不可观测到的。最后,在430,异常中止操作获得在时期期间所执行的存储内容组并丢弃它们。
图5是用于冗余多线程***中故障检测的使用推测性存储器支持将冗余执行与外部存储器更新隔离的框图。通过将执行与外部存储器更新隔离提供了装入输入的精确复制。
在该实施例中,前导线程510和拖尾线程520并行执行时期。指令复制队列530从前导线程510发送时期到拖尾线程520。前导线程510和拖尾线程520都具有复制范围500。
特定时期的单独执行被称为时期“实例”。通过冗余多线程***的前导线程510和拖尾线程520并行执行时期的两个实例。一旦执行,存储内容就被发送到存储器***540。可以修改在当前时期期间已经访问过的位置的外部代理的存储器修改没有被应用。而是将它们放置在存储器540中。由于它们被放置在存储器中,所以当相应拖尾线程装入发生时,在时期期间由前导线程读取的任何位置将具有相同的值。使用上述的推测性存储器支持,存储内容作为推测性存储内容被保存在存储器***中。一旦完成时期的两个实例,那么在550比较外露的存储内容。如果所比较的存储内容匹配,那么将单个组的外露存储内容提交到体系结构存储器状态560。
在该实施例中,如上所述检测的条件是对在当前执行的时期内已经读取的位置的外部写。在推测性存储器***中,该条件的出现将表示不正确的推测,并且使当前执行的时期被压制。在冗余多线程***中压制当前时期的两个实例将同样避免发散(divergent)执行,并且只要能够保证向前进展就表示一种适当的解法。然而,在具有松弛的存储器一致性模型的冗余多线程***中,该事件不需要引起压制。如果外部写位置的先前值能够被保持直到时期结束,并且被提供给在两个时期实例内的任何随后装入,那么这两个实例将沿着同一执行路径继续。在570,在完成当前时期时能够使外部写为本地线程可见。
推测性存储器***的冲突访问检测机构能够识别在冗余多线程***能够引起发散执行的事件的超集。具体而言,可能存在三种不同的情况,其中在当前时期期间已经本地读取的块内位置上出现外部写,所有的情况将通过推测性存储器***来标记。
在第一种情况中,虽然在同一高速缓存块中,但是外部写位置与本地处理器所读取的位置不同。在该情况中,推测性存储器***指示“假冲突”。通过使用附加状态位以精确指示块内哪些字被访问而能够避免这种情况。
在第二种情况中,在前导线程和拖尾线程都完成它们相应的访问之后(但在时期结束之前)出现外部写。两个冗余线程已经检索相同的值,所以不会出现发散。
在第三种情况中,在一个线程完成其访问之后,但在另一线程完成其相应访问之前出现外部写。在该情况中,仅在其到达时应用外部写可以引起发散执行。
有利的是,如果检测到的访问冲突使当前时期被压制,那么将头两种情况与第三种情况区别可能是值得的,以避免不必要地丢弃工作。如果仅冲突外部写被延迟直到时期边界,那么用于向所有情况应用该策略的惩罚应该是最小的。
相对于原始装入值队列设计的推测性存储器方法的另一优点在于两次访问存储器***,从而将高速缓存访问路径带到复制范围并且扩展冗余多线程的故障覆盖。然而,这种好处是以增加存储器***带宽需求为代价的。
另外,当前推测性存储器方法在时期内将所有的装入集合在一起。迫使外部无效仅在时期之间起作用确保了先前时期内的每个装入的两个实例已经完成,并且在接连的时期内的任一装入的两个实例都不发生。
在随后的描述中,为了解释而非限制的目的来阐述诸如特定结构、体系结构、接口、技术等等之类的具体细节,以便提供对本发明各个方面的彻底理解。然而,对于具有本公开益处的本领域技术人员而言显而易见的是,可以在其他脱离这些具体细节的实例中实行本发明的各个方面。在某些情况中,省略了公知设备、电路和方法的描述,以便不用不必要的细节来模糊本发明的描述。
Claims (9)
1.一种使用推测性存储器支持来管理用于冗余多线程***中故障检测的外部存储器更新的方法,包括:
将两个指令线程作为前导线程和拖尾线程来并行执行,其中每个指令线程至少包括目的地是存储器中的存储单元的存储指令;
将在前导线程中执行的存储指令的第一结果以及在拖尾线程中执行的存储指令的第二结果保存到存储器中;
确定第一结果是否等于第二结果;
当第一结果等于第二结果时将存储指令应用于存储器状态;以及
延迟外部更新一直到完成应用步骤。
2.权利要求1所述的方法,其中将保存的第一结果和保存的第二结果保存为推测性的。
3.权利要求1所述的方法,其中指令是时期指令。
4.权利要求3所述的方法,其中当拖尾线程装入发生时,在时期期间由前导线程读取的存储器存储单元包含相同的值。
5.一种使用推测性存储器支持来管理用于冗余多线程***中故障检测的外部存储器更新的设备,包括:
用于将两个指令线程作为前导线程和拖尾线程来并行执行的装置,其中每个指令线程至少包括目的地是存储器中的存储单元的存储指令;
用于将在前导线程中执行的存储指令的第一结果以及在拖尾线程中执行的存储指令的第二结果保存到存储器中的装置;
用于确定第一结果是否等于第二结果的装置;
用于当第一结果等于第二结果时将存储指令应用于存储器状态的装置;以及
用于延迟外部更新一直到所述将存储指令应用于存储器状态的装置的操作完成为止的装置。
6.权利要求5所述的设备,其中所执行的线程是时期线程。
7.权利要求6所述的设备,其中每个时期被执行两次。
8.权利要求5所述的设备,其中当拖尾线程装入发生时,在时期期间由前导线程读取的存储器存储单元包含相同的值。
9.权利要求8所述的设备,其中前导线程和拖尾线程被存储为推测性的。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/750,039 | 2003-12-30 | ||
US10/750,039 US7444497B2 (en) | 2003-12-30 | 2003-12-30 | Managing external memory updates for fault detection in redundant multithreading systems using speculative memory support |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1902581A CN1902581A (zh) | 2007-01-24 |
CN100480996C true CN100480996C (zh) | 2009-04-22 |
Family
ID=34739092
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200480039553.2A Expired - Fee Related CN100480996C (zh) | 2003-12-30 | 2004-12-22 | 在冗余多线程***中管理外部存储器更新的方法和设备 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7444497B2 (zh) |
JP (1) | JP4531060B2 (zh) |
CN (1) | CN100480996C (zh) |
DE (1) | DE112004002576T5 (zh) |
WO (1) | WO2005066780A2 (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7166847B2 (en) * | 2004-06-30 | 2007-01-23 | Intel Corporation | System with response to cosmic ray detection |
US7581152B2 (en) | 2004-12-22 | 2009-08-25 | Intel Corporation | Fault free store data path for software implementation of redundant multithreading environments |
US7818744B2 (en) * | 2005-12-30 | 2010-10-19 | Intel Corporation | Apparatus and method for redundant software thread computation |
US7444544B2 (en) * | 2006-07-14 | 2008-10-28 | International Business Machines Corporation | Write filter cache method and apparatus for protecting the microprocessor core from soft errors |
US8397052B2 (en) * | 2009-08-19 | 2013-03-12 | International Business Machines Corporation | Version pressure feedback mechanisms for speculative versioning caches |
US8521961B2 (en) * | 2009-08-20 | 2013-08-27 | International Business Machines Corporation | Checkpointing in speculative versioning caches |
US20110099439A1 (en) * | 2009-10-23 | 2011-04-28 | Infineon Technologies Ag | Automatic diverse software generation for use in high integrity systems |
US8250395B2 (en) * | 2009-11-12 | 2012-08-21 | International Business Machines Corporation | Dynamic voltage and frequency scaling (DVFS) control for simultaneous multi-threading (SMT) processors |
US20110208948A1 (en) * | 2010-02-23 | 2011-08-25 | Infineon Technologies Ag | Reading to and writing from peripherals with temporally separated redundant processor execution |
US8516356B2 (en) | 2010-07-20 | 2013-08-20 | Infineon Technologies Ag | Real-time error detection by inverse processing |
US8745440B1 (en) * | 2010-09-21 | 2014-06-03 | F5 Networks, Inc. | Computer-implemented system and method for providing software fault tolerance |
JP5850774B2 (ja) * | 2012-03-22 | 2016-02-03 | ルネサスエレクトロニクス株式会社 | 半導体集積回路装置及びそれを用いたシステム |
JP2014063258A (ja) * | 2012-09-20 | 2014-04-10 | Renesas Electronics Corp | 半導体集積回路装置及びマイクロコントローラ |
CN103092714A (zh) * | 2012-12-31 | 2013-05-08 | 哈尔滨工业大学 | 用于容错***的处理器瞬时故障检测方法 |
GB2565338B (en) * | 2017-08-10 | 2020-06-03 | Mips Tech Llc | Fault detecting and fault tolerant multi-threaded processors |
US11443820B2 (en) * | 2018-01-23 | 2022-09-13 | Microchip Technology Incorporated | Memory device, memory address decoder, system, and related method for memory attack detection |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5415835A (en) * | 1992-09-16 | 1995-05-16 | University Of New Mexico | Method for fine-line interferometric lithography |
JP2970553B2 (ja) * | 1996-08-30 | 1999-11-02 | 日本電気株式会社 | マルチスレッド実行方法 |
JP3139392B2 (ja) * | 1996-10-11 | 2001-02-26 | 日本電気株式会社 | 並列処理システム |
US6567839B1 (en) * | 1997-10-23 | 2003-05-20 | International Business Machines Corporation | Thread switch control in a multithreaded processor system |
JP3101594B2 (ja) | 1997-11-06 | 2000-10-23 | キヤノン株式会社 | 露光方法及び露光装置 |
JP4065468B2 (ja) * | 1998-06-30 | 2008-03-26 | キヤノン株式会社 | 露光装置及びこれを用いたデバイスの製造方法 |
US6625749B1 (en) * | 1999-12-21 | 2003-09-23 | Intel Corporation | Firmware mechanism for correcting soft errors |
US20020023202A1 (en) * | 2000-04-19 | 2002-02-21 | Mukherjee Shubhendu S. | Load value queue input replication in a simultaneous and redundantly threaded processor |
US7752423B2 (en) * | 2001-06-28 | 2010-07-06 | Intel Corporation | Avoiding execution of instructions in a second processor by committing results obtained from speculative execution of the instructions in a first processor |
JP2003015900A (ja) * | 2001-06-28 | 2003-01-17 | Hitachi Ltd | 追走型多重化システム、及び追走により信頼性を高めるデータ処理方法 |
JP3702815B2 (ja) * | 2001-07-12 | 2005-10-05 | 日本電気株式会社 | プロセッサ間レジスタ継承方法及びその装置 |
-
2003
- 2003-12-30 US US10/750,039 patent/US7444497B2/en not_active Expired - Fee Related
-
2004
- 2004-12-22 DE DE112004002576T patent/DE112004002576T5/de not_active Withdrawn
- 2004-12-22 WO PCT/US2004/043649 patent/WO2005066780A2/en active Application Filing
- 2004-12-22 CN CN200480039553.2A patent/CN100480996C/zh not_active Expired - Fee Related
- 2004-12-22 JP JP2006547476A patent/JP4531060B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP4531060B2 (ja) | 2010-08-25 |
WO2005066780A3 (en) | 2006-05-04 |
US7444497B2 (en) | 2008-10-28 |
DE112004002576T5 (de) | 2008-03-06 |
CN1902581A (zh) | 2007-01-24 |
WO2005066780A2 (en) | 2005-07-21 |
US20050154944A1 (en) | 2005-07-14 |
JP2007519101A (ja) | 2007-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1902593B (zh) | 使用推测存储器支持的冗余多线程***中缓冲未检验存储的方法 | |
CN100480996C (zh) | 在冗余多线程***中管理外部存储器更新的方法和设备 | |
KR101546033B1 (ko) | Smt 기계에서 비교 및 전달 명령어를 사용한 안정적 실행 | |
LaFrieda et al. | Utilizing dynamically coupled cores to form a resilient chip multiprocessor | |
JP3661614B2 (ja) | キャッシュメモリ制御方法及びマルチプロセッサシステム | |
CN109891393B (zh) | 使用检查器处理器的主处理器错误检测 | |
EP1763763B1 (en) | Logging of level-two cache transactions into banks of the level-two cache for system rollback | |
CN101286123B (zh) | 用于高效地执行事务的装置、方法和*** | |
Memik et al. | Increasing register file immunity to transient errors | |
JP5147564B2 (ja) | レジスタ状態エラー回復および再開機構 | |
US9304863B2 (en) | Transactions for checkpointing and reverse execution | |
US20080244354A1 (en) | Apparatus and method for redundant multi-threading with recovery | |
US9710280B2 (en) | Overlapping atomic regions in a processor | |
CN1327336C (zh) | 用于使用记录板机制处理加载锁定指令的方法 | |
US11113164B2 (en) | Handling errors in buffers | |
US20120226868A1 (en) | Systems and methods for providing deterministic execution | |
WO2013147898A1 (en) | Tracing mechanism for recording shared memory interleavings on multi-core processors | |
US6970999B2 (en) | Counting latencies of an instruction table flush, refill and instruction execution using a plurality of assigned counters | |
US9697040B2 (en) | Software replayer for transactional memory programs | |
US7216252B1 (en) | Method and apparatus for machine check abort handling in a multiprocessing system | |
US10671512B2 (en) | Processor memory reordering hints in a bit-accurate trace | |
Sugihara et al. | A simulation-based soft error estimation methodology for computer systems | |
JP3146058B2 (ja) | 並列処理型プロセッサシステムおよび並列処理型プロセッサシステムの制御方法 | |
US8417508B2 (en) | Multiprocessor development environment | |
Iiboshi et al. | Towards model checking library for persistent data structures |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090422 Termination date: 20131222 |