多线程处理器和容错多线程处理器的制作方法

文档序号:13836661阅读:167来源:国知局
多线程处理器和容错多线程处理器的制作方法

本申请涉及但不限于多线程处理器。



背景技术:

容错系统是被设计成甚至在存在一些错误的情况下也继续工作的系统。这样的系统因此可涉及错误检查机制的冗余和使用。在实时容错系统中,在计算中的错误可被快速识别并解决很重要。实时容错系统可以例如被用在这样的系统中:其中安全是关键的(例如汽车、飞机、航天器或核电站的控制系统)、其中维护是频繁的(例如对于太空应用例如在卫星上)或其中错误可能有严重的后果(例如在金融系统中)。在所有这些应用中,错误需要被尽可能快地(例如实时地)识别和解决,因为以后矫正它们可能是不可行的或不可能的。



技术实现要素:

下面所述的实施方式不限于解决已知的容错处理器的任何或所有缺点的实现。

本概述被提供来以简化的形式介绍一系列概念,其在下面在详细描述中被进一步描述。这个概述并不打算识别所要求保护的主题的关键特征或本质特征,也不打算用作在确定所要求保护的主题的范围时的帮助。

描述了使用在两个或多于两个不同的线程中运行的指令的时间和/或空间分离的容错多线程处理器。指令由两个或多于两个线程中的每个取出、解码并执行以为两个或多于两个线程中的每个产生结果。然后使用比 较硬件逻辑来比较这些结果,并且如果在所得到的结果之间有不匹配,则错误或事件产生。该比较在逐个指令基础上被执行,使得错误被快速识别(且因此可被解决)。

第一方面提供多线程处理器,其包括:调度器,其被在硬件逻辑中实现并被在第一操作模式中布置为引起使程序中的指令由多个线程中的每个取出;执行级,其被在硬件逻辑中实现并被在第一操作模式中被布置为执行指令的每个被取出的实例以产生指令的多个结果,多个线程中的每个线程一个结果;以及比较硬件逻辑,其被在第一操作模式中被布置为比较指令的多个结果以确定是否所有结果都匹配。

第二方面提供操作多线程处理器的方法,其包括:由多个线程中的每个取出程序中的指令;执行指令的每个被取出的实例以产生指令的多个结果,多个线程中的每个线程一个结果;以及比较多个结果。

另外的方面提供:在其上编码有用于产生如本文所述的处理器的计算机可读程序代码的计算机可读存储介质;在其上存储有计算机可读指令的非暂时性计算机可读存储介质,所述指令当在计算机系统处被执行用于根据电路元件的定义和定义用于组合那些电路元件的规则的数据产生数字电路的表示时引起计算机系统产生如本文所述的处理器;以及在其上编码有用于产生被配置成执行本文所述的方法的处理器的计算机可读程序代码的计算机可读存储介质。

本申请的实施方式还涉及以下方面:

1)一种多线程处理器,包括:

调度器,其包括引起程序中的指令由多个线程中的每个取出的硬件逻辑;

执行级,其包括输出端和用于执行所述指令的每个被取出的实例的硬件逻辑,所述输出端用于输出所述指令的多个结果,所述多个线程中的每个线程一个结果;以及

比较硬件逻辑,其包括用于存储所述指令的所述结果的一个或多个缓冲器和连接到所述一个或多个缓冲器并被配置成对所述指令的存储的结 果进行比较的比较器硬件逻辑。

2)根据项目1)所述的多线程处理器,其中所述比较硬件逻辑还包括事件/错误触发逻辑,所述事件/错误触发逻辑连接到所述比较器硬件逻辑并被布置成响应于所述比较器硬件逻辑识别出所述指令的所述结果不都是相同的而触发错误/事件。

3)根据项目2)所述的多线程处理器,还包括连接到所述事件/错误触发逻辑的性能计数器。

4)根据项目1)所述的多线程处理器,还包括:

第一指令缓冲器,其用于存储指令的第一被取出的实例;以及

第二指令缓冲器,其用于存储所述指令的第二被取出的实例。

5)一种容错多线程处理器,包括:

取出级,其包括调度器;

第一指令缓冲器,其连接到所述取出级的输出端以用于存储指令的第一被取出的实例;以及

第二指令缓冲器,其连接到所述取出级的输出端以用于存储所述指令的第二被取出的实例;

执行级,其包括输出端和用于执行所述指令的每个被取出的实例的硬件逻辑,所述执行级)的所述输出端用于输出所述指令的多个结果,所述多个线程中的每个线程一个结果;以及

比较硬件逻辑,其包括用于存储所述指令的所述多个结果的一个或多个缓冲器和连接到所述一个或多个缓冲器并被配置成对所述指令的所述结果进行比较的比较器硬件逻辑。

如将对技术人员明显的是,优选特征可在适当时进行组合,并可与本实用新型的任何方面进行组合。

附图说明

将参考以下的附图通过示例的方式来描述本实用新型的实施方式,在附图中:

图1示出示例容错多线程有序处理器的示意图;

图2是示出例如在图1中示出的处理器的多线程处理器的示例容错操作模式的流程图;以及

图3示出来自图1中所示的处理器的比较硬件逻辑的示例实现的示意图。

公共参考数字在全部附图中用于指示类似的特征。

具体实施方式

下面仅通过示例的方式来描述本实用新型的实施方式。这些示例表示申请人当前已知的实施本实用新型的最佳方式,尽管它们不是以其这可被实现的仅有的方式。本描述阐述示例的功能和用于构造并操作示例的步骤的顺序。然而,相同或等效的功能和顺序可由不同的示例实现。

容错处理器必须甚至在存在多个错误的情况下也继续操作。在现有容错处理器中使用的技术涉及使用多个处理器核心来执行相同的代码,其中结果在每个操作结束时被比较。如果结果不相同,则该比较用信号通知错误。可选地,在有多于两个核心的场合,投票系统可用于决定哪个结果是正确的(即:其中由占多数的核心得到的结果被视为正确的结果)。

在本文描述了使用在单个处理器核心内的多线程(且特别是细粒度多线程)并使用在多线程处理器管线中的两个不同线程中运行的指令的时间和/或空间分离的容错处理器的可选设计。这导致在处理器的尺寸(或面积)和处理器的功率消耗两者中的降低(与多个核心的使用相比较)。如下所述的容错处理器因此可特别适合于在空间和/或功率被约束的情况下的应用(例如电池供电的便携式计算设备、可穿戴的设备等);然而,它们还可被用在其它应用中。

图1示出实现细粒度多线程并因而在每个循环上改变线程的示例容错 多线程有序处理器100的示意图。在这个示例中,多线程处理器100是两线程处理器(具有被表示为线程0和线程1的线程);然而,方法还可适用于具有不同数量的线程(例如四个或多于四个线程)的多线程处理器。

多线程处理器100包括多级管线,其包括取出级102、解码级106、发布级111、执行级109、存储器存取级112(尽管这可在一些处理器中被省略)和写回级114。执行级109、存储器存取级112(在被提供的情况下)和写回级114被在线程之间共享,而在前端(包括取出级102、解码级106和发布级111)中,一些元件(例如缓冲器)对每个线程是分离的(即重复的)。在各种示例中,解码级106也可以是重复的,对每个线程有单独的解码级106。

取出级102被配置成从程序(以程序顺序)取出如由程序计数器(PC)指示的指令。程序可被存储在存储器104(其可包括高速缓冲存储器以减小访问存储器的时延)中。在取出级102内的调度器105(其可被称为“管线调度器”)控制指令被取出的顺序和由哪个线程取出。

解码级106被布置成解译已经由取出级102取出的指令,且这一般涉及从一个或多个寄存器文件(FR)读取,且在图1中所示的示例中,为每个线程提供单独的寄存器文件107、108。

发布级111选择将被在每个循环执行的线程并因而控制指令沿着管线被传递到执行级109的顺序。发布级111可因此被描述为包括第二调度器(其中第一调度器是在取出级102中的调度器105)。在一些处理器中,可省略这个发布级111(且在各种示例中,它可由共享的指令缓冲器来代替),使得指令以它们被取出的顺序通过处理器管线继续前进(且因而调度器105隐含地按其被执行的顺序来控制指令)。

执行级109包括一个或多个功能(或执行)单元110。每个功能单元110负责执行指令,且功能单元可被配置成执行特定类型的指令。例如,一个或多个功能单元110可以是加载/存储单元、整数单元、浮点单元(FPU)、数字信号处理(SDP)/单指令多数据(SIMD)单元或乘积累加(MAC)单元。加载/存储单元执行加载和存储存储器指令,整数单元执行整数指令,FPU执行浮点指令,DSP/SIMD单元具有同时对多个数据点 执行相同的操作的多个处理元件,且MAC单元计算两个数字的乘积并将该乘积加到累加器。功能单元和其中的管线可具有不同的长度和/或复杂度。例如,FPU管线一般比整数执行管线长,因为它通常执行更复杂的操作。

存储器存取级112(在被实现的场合)被布置成执行任何数据存储器存取。

写回级114(其还可被称为提交级或分度单元(graduation unit))将指令的结果提交到寄存器/存储器(例如到寄存器文件107、108)和/或将结果写到输出端(例如到输出设备)。写回级114包括比较硬件逻辑115,且该逻辑115的操作被在下面进行描述。

如图1中所示以及提供单独的寄存器文件107、108,单独的寄存器116、117可用于为处理器110中的每个线程存储当前PC,且单独的指令缓冲器120、122可用于缓存在取出级和解码级102、106之间的每个线程的指令。如上所述,在没有第二调度器(在发布级111中)的情况下,可提供单个共享指令缓冲器(而不是单独的指令缓冲器120、122)。

多线程处理器100还可包括不同于图1中所示的那些功能元件的功能元件。将认识到,其它处理器可以不包括图1所示的所有功能元件(即图1所示的功能元件中的一个或多个功能元件可被省略)。

图1所示的处理器100可以以两种操作模式进行操作:容错模式(例如对于特定的程序)和非容错或标准模式(例如对于其它程序),且在任何时间,可通过设置寄存器中的位或通过任何其它适当的技术来选择处理器操作的模式(即当前操作模式)。可选地,处理器100可以总是以容错操作模式进行操作。

在非容错或标准操作模式中,在程序中的每个指令由单个线程取出一次,且每个线程可从同一程序或从不同的程序取出指令。在这个标准操作模式中,如果处理器由于某个原因而被倒回或如果程序被执行多于一次,则在程序中的指令仅被取出多于一次。

然而在容错操作模式中,每个指令由两个或多于两个线程(例如由在 图1的处理器100中的线程0和线程1两者)取出、解码并随后执行,且在它们通过处理器管线继续前进时,同一指令的不同实例(针对取出指令的每个线程一个实例)是交错的。在各种示例中,每个指令可由M个线程取出,其中M≥2,且处理器可包括N个线程,其中N≥M,且仅仅为了下面描述的示例的目的,N=M=2。只要已经执行同一指令的所有实例,就在写回级114内的比较硬件逻辑115中比较执行每个指令的结果(即通过执行同一指令的M个实例中的每个而得到的M个结果),例如以最小化在错误出现和错误被识别出之间的任何延迟。下面参考图2更详细地描述容错操作模式。

图2是示出多线程处理器(例如图1中所示的处理器100)的示例容错操作模式的流程图。在这个操作模式(其如上所述可以是处理器的唯一操作模式或处理器的多个可能的操作模式之一)中,例如在调度器105的控制下针对两个或多于两个线程单独地取出每个指令(块202)。可例如从被存储在存储器中(例如在空间上分离的位置处的存储器104中)的同一程序的两个(或更一般地,M个)单独的副本取出指令,或可选地,可以只有被存储在存储器中的程序的单个副本,指令被从被存储在该存储器中的程序的单个副本取出多于一次(即M次),且错误纠正技术可被在存储器内使用以处理出现在用于存储程序的存储器内的任何错误。

同一指令的两个或多于两个实例一个接一个地由不同的线程取出(即:其中每个线程取出同一指令的一个实例)(在块202中)。在一些示例中,调度器可引起线程对每个指令以相同的顺序取出指令的实例(例如指令1首先由线程0取出并接着由线程1取出,且然后指令2由线程0取出并接着由线程1取出),或顺序可改变,只要所有实例被一个接一个地取出(例如指令1首先由线程0取出并接着由线程1取出,且然后指令2由线程1取出并接着由线程0取出)。

在各种示例中,同一指令的实例被严格地背对背地调度(即:一个接一个地,而在其间没有任何其它指令);然而,在其它示例中,这可稍微放宽,使得它们被紧密地在一起进行调度(使得在提交结果并然后将它们写到存储器时的时延没有明显地增加),但不必一个接一个地紧接着被调 度(例如,所有M个实例可被在M+Δ个循环内调度,其中Δ是小整数)。

一旦每个线程已经取出指令的实例(在块202中),则每个线程对指令的所取出的实例进行解码(块204,例如在解码级106中,其中如果有必要,指令被缓存在指令缓冲器120、122中),且同一指令的实例然后被独立地执行以产生同一指令的多个结果(每个实例一个结果,且总共M个结果)(块206)。在没有第二调度器(例如在发布级111中)的情况下,每个指令的实例被实质上以与它们在管线调度器105的控制下被取出(在块202中)的顺序相同的顺序执行。

同一指令的多个(即M个)实例的执行(在块206中)可被描述为是前后紧接的,因为它们被一起并行地或一个接一个地运行。在很多示例实现中,M=2(如图1所示)。在其它示例实现中,M=3。然而将认识到,M可以可选地是大于三的值。

一旦已经执行同一指令的所有实例(且因而产生结果),则例如在处理器管线的最后级(例如写回级114)内的比较硬件逻辑115中对结果进行比较(块208)。图3示出这个比较硬件逻辑115的示例实现的示意图,这个比较硬件逻辑115包括存储当被产生时的进入的结果的一个或多个缓冲器302(例如M个缓冲器,每个被布置成存储单个结果或一个缓冲器被布置成存储M个结果或M-1个结果)和执行结果的比较(在块208中)的比较器逻辑304。

在所有结果(来自同一指令的每个实例)是相同的(在块210中的“是”)的情况下,于是处理器可照常继续并将结果提交给寄存器/存储器和/或将结果写到输出设备(块212)。

在结果不都是相同的(在块210中的“否”)的情况下,于是在比较硬件逻辑115中的事件/错误触发逻辑306可触发事件和/或错误(块214)。例如,可触发内部管线事件或中断(在块214中),其引起处理器管线的清除(flushing)以及产生不匹配的结果的指令的重新取出和执行(块216),即处理器被倒回且针对特定的指令(其中所产生的结果不都是相同的)重复图2的方法。

除了产生事件/错误以外或代替产生事件/错误(在块214中),比较硬件逻辑115可使可以被称为性能计数器的计数器递增(块218)。性能计数器可例如跟踪出现的错误的数量,且这可用于触发另外的事件(块220)(例如在计数器值达到或超过阈值(在块222中的“是”)的情况下错误标志或中断的产生)。

在其中存在多于两个线程且单个指令由多于两个线程取出的处理器中,代替(或除了)产生事件/错误(在块214中)和/或使性能计数器递增(在块218中),通过指令的占多数的实例的执行而得到的结果可被当作是实际的(或正确的)结果并被提交给寄存器/存储器和/或被写到输出设备(块224)。

当在逐个指令基础上执行比较(在块208中)时(即在每个指令已经被执行之后而不是在一组指令或整个程序已经被执行之后),可以更快地识别(并接着解决)可能在实时系统中特别重要的任何错误。例如,在无人驾驶汽车的控制中使用这样的容错处理器时,在错误可能引起故障或事故之前立即矫正错误很重要。

因为不同的线程(其执行同一指令的不同实例)使用不同的寄存器,所以本文所述的方法将识别引起位在寄存器中翻转的错误。

当对在处理器内的不同线程执行同一指令的多个实例时,线程可在一些示例中共享高速缓冲存储器,尽管在其它示例中,不同的线程可使用不同的高速缓冲存储器。在高速缓冲存储器被在线程之间共享的场合,时延可减小,因为如果执行指令的实例的第一线程经历高速缓冲存储器未中(miss),则执行同一指令的其它实例的随后的线程将经历高速缓冲存储器命中。此外,在同一指令的实例被背对背调度的情况下,高速缓冲存储器中的数据已经发生变化(例如作为错误的结果)的可能性越小。错误纠正技术还可被在高速缓冲存储器中使用以识别(且在一些情况下校正)任何错误。

在M>2的场合,可能使用投票技术(在块224中)以在其中针对单个指令产生的所有的M个结果不匹配(即,它们不都是相同的)的情况下确定“正确的”结果(其是占多数的结果)。这减小必须使处理器管线清除 并接着重新取出以及重新执行指令的可能性。然而,当M被增加时,处理器的总处理量减小,且所以在各种示例中,可使用M=3。

为了实现上面所述的方法(例如容错操作模式),处理器(例如图1所示的处理器)包括在写回级114中的附加的比较硬件逻辑115。此外,在管线中(例如在取出级102中且在一些示例中还在发布级111中)的一个或多个调度器(例如调度器105)被修改以通过不同的线程实现同一指令的不同实例的连续取出和执行。只有对任何软件的最小变化可能被需要。

虽然图1示出有序多线程处理器100,但是将认识到,上面所述的方法还可被在无序处理器中实现,只要同一指令的实例都被前后紧接地(例如并行地或连续地)实现,且不被以不同的方式重新排序,因为这将在比较(在块208中)可被执行且任何错误可以被识别出之前增加相当大的延迟。

术语“处理器”和“计算机”在本文用于指具有处理能力使得它可执行指令的任何设备或其部分。术语“处理器”可例如包括中央处理单元(CPU)、图形处理单元(GPU或VPU)、物理处理单元(PPU)、无线电处理单元(RPU)、数字信号处理器(DSP)、通用处理器(例如通用GPU)、微处理器、被设计成加速在CPU外部的任务的任何处理单元等。本领域中的技术人员将认识到,这样的处理能力被并入很多不同的设备内,且因此术语“计算机”包括机顶盒、媒体播放器、数字无线电装置、PC、服务器、移动电话、个人数字助理和很多其它设备。

本领域中的技术人员将认识到,用于存储程序指令的存储设备可分布在整个网络当中。例如,远程计算机可存储被描述为软件的过程的示例。本地或终端计算机可访问远程计算机并下载软件的一部分或全部以运行程序。可选地,本地计算机可按需要下载软件的片段或执行在本地终端处的一些软件指令和在远程计算机(或计算机网络)处的一些软件指令。本领域中的技术人员还将认识到,通过利用本领域中的技术人员已知的常规技术,软件指令的全部或一部分可由专用电路(例如DSP、可编程逻辑阵列等)实现。

本文所述的方法可由被配置有软件的计算机执行,软件是以被存储在有形存储介质上的机器可读形式(例如以包括用于配置计算机来执行所述方法的组成部分的计算机可读程序代码的计算机程序的形式或以包括适合于当程序被在计算机上运行时执行本文所述的任何方法的所有步骤的计算机程序代码模块的计算机程序的形式),且其中计算机程序可被体现在计算机可读存储介质上。有形(或非暂时性)存储介质的示例包括磁盘、拇指驱动器、存储卡等,且并不包括传播的信号。软件可适合于在并行处理器或串行处理器上执行,使得方法步骤可以被以任何适当的顺序或同时执行。

本文描述的硬件部件可由在其上编码有计算机可读程序代码的非暂时性计算机可读存储介质产生。

还旨在包括“描述”或定义实现上面所述的模块、功能、部件或逻辑的硬件的配置的软件(例如HDL(硬件描述语言)软件),如用于设计集成电路或用于配置可编程芯片以实现期望功能。也就是说,可提供计算机可读存储介质,其上编码有用于产生被配置成执行本文所述的任何方法的处理单元或用于产生包括本文所述的任何装置的处理单元的计算机可读程序代码。也就是说,计算机系统可被配置成根据电路元件的定义和定义关于组合那些电路元件的规则的数据产生数字电路的表示,其中非暂时性计算机可读存储介质可在其上存储有处理器可执行指令,其当被在这样的计算机系统处执行时引起计算机系统产生如本文所述的处理单元。

存储用于在实现所公开的方面时使用的机器可执行数据的存储器可以是非暂时性介质。非暂时性介质可以是易失性的或非易失性的。易失性非暂时性介质的示例包括基于半导体的存储器,例如SRAM或DRAM。可用于实现非易失性存储器的技术的示例包括光学和磁存储器技术、闪存存储器、相变存储器、电阻式RAM。

对“逻辑”的特定提及指执行一种功能或多种功能的结构。逻辑的示例包括被布置成执行那些功能的电路。例如,这样的电路可包括晶体管和/或在制造过程中可用的其它硬件元件。通过示例的方式,这样的晶体管和 /或其它元件可用于形成实现和/或包含存储器(例如寄存器、触发器或锁存器、逻辑运算器(例如布尔运算、数学运算器(例如加法器、乘法器或移位器)))和互连的电路或结构。这样的元件可被提供为定制电路或标准单元库、宏或以其它抽象级。可在特定的布置中使这样的元件互连。逻辑可包括具有固定功能的电路,且电路可被编程以执行一种功能或多种功能;这样的编程可被从固件或软件更新或控制机制提供。被识别为执行一种功能的逻辑还可包括实现组成功能或子过程的逻辑。在示例中,硬件逻辑具有实现一个固定功能操作或多个固定功能操作、状态机或过程的电路。

如对技术人员将明显的是,本文给出的任何范围或设备值可被扩展或改变而不失去所寻求的效果。

将理解,上面描述的益处和优点可涉及一个实施方式或可涉及几个实施方式。实施方式不限于解决任何或所有所陈述的问题的那些实施方式或具有任何或全部所陈述的益处和优点的那些实施方式。

对“一个(an)”项的任何提及指的是那些项中的一项或多项。术语“包括”在本文用于意指包括所识别的方法块或元件,但这样的块或元件并不包括排他列表,且装置可包含额外的块或元件,以及方法可包含额外的操作或元件。此外,块、元件和操作本身并不隐含地是封闭的。

本文描述的方法的步骤可在适当时被以任何适当的顺序或同时执行。在附图中的框之间的箭头示出方法步骤的一个示例顺序,但并不意欲排除其它顺序或并行执行多个步骤。此外,单独的块可被从任何方法删除而不偏离本文描述的主题的精神和范围。上面描述的任何示例的方面可与所描述的其它示例中的任一个示例的方面结合以形成另外的示例,而不失去所寻求的效果。在附图的元件被示为由箭头连接的场合,将理解的是,这些箭头仅仅示出在元件之间的通信(包括数据和控制消息)的一个示例流。在元件之间的流可以在任一方向上或在两个方向上。

将理解,仅通过示例的方式给出优选实施方式的上述描述,以及各种修改可由本领域中的技术人员做出。虽然上文已经以某个程度的特殊性或参考一个或多个单独的实施例描述了各种实施例,但是本领域中的技术人 员可以对所公开的实施例做出很多改变而不偏离本实用新型的精神或范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1