包含用于逻辑错误保护的混合冗余的处理器的制作方法

文档序号:6592786阅读:221来源:国知局
专利名称:包含用于逻辑错误保护的混合冗余的处理器的制作方法
技术领域
本发明乃关于处理器,尤系关于处理器内逻辑错误的保护。
背景技术
有各式各样的原因会让电子组件失效。包含存储器数组的构件会因为位失效而 呈现数据错误。逻辑电路则可能发生固定位值(stuck-at bit)及/或延迟误差(delay error)。这些原因可继续罗列下去。有许多错误是制造时的缺陷造成。举例来说,由于制造 期间的微粒污染导致硬错误(hard error)而表现在当下与稍后的操作期间。有许多这类 的错误可归类成硬错误,因为所检测出的故障是永久的。虽然在制造测试与烧入(burn-in) 期间可检测出许多硬错误,但是仍有一些不易察觉,或是恰好没被发现。而有些种类的错误 会比其它种类的错误更具破坏性。例如,像是因为存储器数据损毁造成的无症状(silent) 错误便可能成为灾难,这是因为只有检测到错误并且存在修正或复原机制才有办法予以回 复之故。因此已发展出多种检测/修正机构,尤其是错误检测码(error detection code, EDC)与错误修正码(error correction code, ECC)以及已经建立在设计中的EDC/ECC硬 件。过去此类技术虽然已用于微处理器的设计以保护免于存储器的错误,但是大多数的逻 辑错误却只有在制造测试与烧入的期间进行检测,故大部分的逻辑仍然是没有被保护的。在另一方面,软错误(soft error)则是间歇性的且随机出现,故很难检测并修正。 在过去软错误通常被隔离于采用缆线与具有连接器之电路板一类的系统以外。然而如今由 于制造技术的进步以及组件尺寸越来越小(像是小于90nm),便出现新的软错误来源,这种 情形特别是发生在金属氧化物半导体(metal oxide semiconductor,M0S)组件上。此类新 的软错误可由中子或α粒子轰击造成,直接轰击在存储器数组上会呈现存储器错误,而轰 击在逻辑单元(像是正反器)上则呈现逻辑错误。在像是微处理器等包含数以百万计个晶体管的组件中,如果软错误没有被检测出 来便会造成灾难性的后果。因此,像是传统芯片层级冗余(chip level redundancy)的检 测方法已经被发展出来,可检测出在芯片范围的错误。在传统芯片层级冗余的架构中,由于 该类错误已经损毁了处理器内部执行的状态,因此就算是检测出错误却仍无法修正,并且 系统也不能透通地(transparently)回复而必须重新启动。故虽然此类配置可以检测到错 误,但是对于高可靠与高可用的系统而言仍是无法接受的。

发明内容
本发明揭露包含用于逻辑错误保护之混合冗余的处理器的各种实施例。实施例的 处理器核心可运算在正规执行模式(normal execution mode)与可靠执行模式(reliable execution mode) 0该处理器核心包含指令译码单元,该指令译码单元可配置成派送 (dispatch)相同的整数指令流至多个整数执行单元,且配置成连续地派送相同的浮点指令 流至浮点单元。举例来说,当运算在该可靠执行模式中时,该指令译码单元可派送该相同的 整数指令流至该整数执行群集(cluster),并派送浮点指令流的指令至该浮点单元连续两次。该多个整数执行单元可配置成在锁定步骤中运算,以致于在每个时钟周期期间,该多个 整数执行单元执行该相同的整数指令,且因此应该得到完全相同的结果。该浮点单元可配 置成执行该相同浮点指令流两次,且也应该具有完全相同的结果。该处理器核心也包含比 较逻辑,该比较逻辑耦接至该多个整数执行单元以及至该浮点单元。举例来说,在该相同整 数指令流中的指令永久地引退(retire)或确定(commit)它们的结果之前,可将该比较逻 辑配置成检测来自各该多个整数执行单元的执行结果之间的不匹配。此外,在该浮点单元 把该浮点指令流的执行结果从该浮点单元转移出来之前,可进一步将该比较逻辑配置成检 测各个连续的浮点指令流执行结果间的不匹配。再者,当比较逻辑检测到任何不匹配时,可 将该比较逻辑配置成再次执行造成该不匹配的指令来做为响应。


图1是处理器核心的实施例方块图;图2是该处理器核心逻辑错误保护的实施例架构方块图;图3是描述图1和图2中处理器实施例的运作流程图;图4是描述图1和图2中处理器另一实施例的运作流程图;以及图5是包含多个显示在图1之处理器核心的处理器实施例方块图。
具体实施例方式虽然本发明容许各种修改与替代形式,本发明的具体实施例系以图式中的范例方 式来显示且将在此详细描述。然而应了解的是,该图式与其详细描述并非意欲限制本发明 仅仅在所揭露的特定形式,相反地,本发明是涵盖落入如所附申请专利范围所界定之本发 明的精神与范围内所有的修改、等效物、和替代形式。应注意的是,在本申请全文中的用语 「可(may)」是容许的意思(即具有...的可能、能够),而不是强制的意思(即必须)。图1说明处理器核心100的实施例。一般来说,核心100可配置成执行可储存在 系统存储器(显示在图5)中的指令,该系统存储器是直接或间接地耦接至核心100。此类 指令可根据特定的指令集架构(instruction set architecture, ISA)来定义。举例来说, 可将核心100配置成实作X86ISA的其中一个版本,惟在其它实施例中,核心100可实作成 不同的ISA或ISA的组合。在本示范实施例中,核心100可包含指令缓存(instruction cache,简称IC) 110, 其被耦接成提供指令至指令提取单元(instruction fetch unit,简称IFU) 120。可将IFU 120耦接至分支预测单元(branch prediction unit,简称BPU) 130且耦接至指令译码单 元140。可将译码单元140耦接成提供运算至多个整数执行群集150a和150b、以及至浮点 单元(FPU) 160。群集150a和150b的每一个可包含耦接至个别多个整数执行单元154a和 154b的个别群集调度器(scheduler) 152a和152b。群集150a和150b也可包含经耦接成 提供数据至执行单元154a和154b的个别数据缓存156a和156b。在说明的实施例中,数 据缓存156a和156b也可提供数据至FPU 160的浮点执行单元164,而该浮点执行单元164 则可被耦接成接收来自FP调度器162的运算。可额外地耦接数据缓存156a和156b以及 指令缓存110至核心接口单元170,而该核心接口单元170可依次耦接至统一的(unified) L2缓存180以及耦接至核心100外部的系统接口单元(system interface unit,SIU)(显示在图2中且将在下面描述)。应注意的是虽然图1反映出在各种单元之间某些指令与数 据流的路径,但是也可提供未具体显示在图1中的额外路径或数据方向或指令流。以下将详述,可将核心100配置成用于多线程执行(multithreaded execution), 其中,来自不同执行线程(thread,又称执行绪)的指令可同时被执行。实施例的群集150a 和150b的每一个可专门用来执行对应至两线程其中之一的指令,而在该等线程之间可共 享FPU 160和该上游指令的提取以及译码逻辑。而在其它实施例中,可设想不同数量的线 程以支持同时执行,且可提供不同数量的群集150和FPU 160。可将指令缓存110配置成在指令被撷取、译码与发布执行之前,储存该指令。在 各种实施例中,可视需要配置指令缓存110为任何类型的缓存并可为任意大小,且可实体 或虚拟寻址、仅虚拟寻址或结合该两者(例如虚拟索引位和实体卷标位)。在一些实施例 中,指令缓存110也可包含转译后备缓冲器(translation look-aside buffer,简称TLB) 逻辑,该转译后备缓冲器逻辑配置成以缓存贮存用于指令提取地址之虚拟至实体的转译 (virtual-to-physical translation),然而TLB和转译逻辑也可包含在核心100内其它地 方。IFU 120可协调存取指令缓存110的指令提取。举例来说,IFU 120可追踪各种 执行线程之当前程序计数器的状态,并发布对于指令缓存110的提取以撷取额外的执行指 令。在指令缓存未中(miss)的情况中,不是由指令缓存110便是由IFU 120来协调从L2 缓存180撷取指令数据。在一些实施例中,IFU 120也可为了减轻存储器等待时间(memory latency)的影响,而在预期使用指令之前协调从存储器的其它阶层来预提取(prefetch) 该指令。举例来说,成功的指令预提取可增加指令在需要时存在于指令缓存110中的可能 性,故能避免在多层存储器阶层间缓存未中的延迟影响。各种类型的分支(例如条件式或非条件式的跳跃(jump)、呼叫(call)/返回 (return)指令等)可改变特定线程的执行流程。分支预测单元130通常被配置以预测将 由IFU 120所使用的提取地址。在一些实施例中,BPU 130可包含分支目标缓冲区(branch target buffer,简称BTB)(未图示),可配置该分支目标缓冲区以储存与该指令流中的可 能分支相关的许多信息。在实施例可去耦接(decouple) IFU 120和BPU 130的执行管线 (pipeline)而容许该分支预测去「预先运行(rim ahead)」指令提取,使得多个将提取的地 址能被预测并放入队列,直到IFU 120准备好要使用它们。可设想在多线程运算期间,将该 预测与提取管线配置成在不同的线程上同时运作。由于提取的关系,可将IFU 120配置成产生指令字节的序列(sequence),该指令 字节的序列也可称为提取封包(fetch packet)。举例来说,提取封包的长度可为32个字 节、或另一适当的数值。在一些实施例中,特别是用于实作可变长度(variable-length)指 令的ISA,在指定的提取封包内可存在变动数目的有效指令,沿着该封包的任意边界排列, 且在一些情况中指令可跨越不同的提取封包。一般来说,可将译码单元140配置成用以识 别提取封包内的指令边界、以译码或转换指令成为适合由群集150或FPU 160所执行的运 算,以及派送此类运算以供执行。在一实施例中,可将DEC 140配置成首先判定从一个或多个提取封包抽取出的字 节给定窗口内的可能指令的长度。举例来说,对于相容于x86的ISA而言,可将DEC 140配 置成标识符首(prefix)、运算码(opcode)、m0d/rm和SIB字节的有效序列(从该给定提取封包内每一个字节的位置开始)。之后在某实施例中,可配置DEC 140内的挑选逻辑(pick logic)以识别该窗口内最多四个有效指令的边界。实施例中多个提取封包以及用来识别指 令边界的指令指针(instruction pointer)的多个群组可队列在DEC 140内,使得该译码 程序从提取功能中被去耦接,而让IFU 120可偶尔在译码前就「预先提取(fetch ahead) J0之后可将指令从提取封包储存体导入DEC 140内的多个指令译码器其中之一。 在一实施例中,可将DEC 140配置成于每个周期发送多达四个要执行的指令,且DEC 140 可提供对应的四个独立的指令译码器,惟其它配置也是可能且可预期的。在核心100支 持微码指令(microcoded instruction)的实施例中,可将每个指令译码器配置成判定给 定的指令是否为微码,而如果是的话可引动(invoke)微码引擎的运算以变换该指令成为 一序列的运算。否则,该指令译码器可变换该指令成为适合由群集150或FPU 160所执 行的一个运算(或在一些实施例中可能是许多个运算)。所产生的运算也可称为微运算 (micro-operation)、micro-ops或μ ops,且可储存在一个或多个队列内以等待被派送执 行。在一些实施例中,可把微码运算与非微码(或「快速路径(fastpath)」)运算储存在个 别的队列中。为了组合派送包(dispatch parcel),可配置DEC 140内的派送逻辑以检查等待 派送之队列运算的状态,以及执行资源与派送规则的状态。举例来说,DEC 140可考虑等待 派送之运算队列的可用度、群集150及/或FPU 160内已进入队列且等待执行的运算数量、 以及可应用至要被派送的运算的任何资源限制(constraint)。在一实施例中,可将DEC140 配置成于给定的执行周期期间派送最多包含四个运算的派送包至群集150或FPU 160的其 中一者。在一实施例中,可将DEC 140配置成在给定的执行周期期间译码并派送仅用于单 一线程的运算。然而要注意的是,IFU 120和DEC 140不需要在相同的线程上同时运算。在 指令提取与译码期间可设想使用各种类型的线程切换策略(thread-switching policy) 0 举例来说,可采用轮流(round robin fashion)的方式将IFU 120和DEC 140配置为每N个 周期(N可少至1)便选择不同的线程。另一种状况是线程的切换会被像是队列占用(queue occupancy)的动态条件所影响。举例来说,如果DEC140内某特定线程已译码运算的队列深 度、或是特定群集150之已派送运算的队列深度下降至低于阈值,则解碼处理可切换至该 线程,直到有不同线程之队列内的运算快处理完为止。在一些实施例中,核心100可支持多 个不同的线程切换策略,该等线程切换策略的任何一个可经由软件或是在制造(例如制造 屏蔽选择(fabrication mask option))期间来选择。一般说来,可将群集150配置成实行整数算术、逻辑运算以及进行加载/储存运 算。在一实施例中,群集150a和150b的每一个可专供某个别线程的运算执行,使得当核心 100被配置成在单一线程模式进行运算时,运算指令只会被发送至群集150的其中之一。每 个群集150可包含它自己的调度器152,且可将该调度器152配置成用以管理先前派送至该 群集之运算的执行发布(issuance for execution)。每个群集150可进一步包含它自己的 整数实体缓存器档案的副本,以及它自己的完成逻辑(completion logic)(例如记录器缓 冲区(recorder buffer)、或用以管理运算完成与引退的其它结构)。如下面将详细说明的,除了上述的运算之外,在一实施例中,可将处理器核心100 配置成在可靠执行模式中进行运算。举例来说,在一实作中,可通过把一外部接脚(显示于图5)连接至例如VDD或GND的预定参考电压而将处理器核心100选择性地配置成在正规 执行模式进行运算或在该可靠执行模式进行运算。当选择该可靠执行模式时,可将DEC 140 内的派送逻辑配置成在同一时钟周期派送该相同的指令序列至群集150a和150b的每一 个。此外,可将群集150a和150b配置成运行在锁定步骤(lock-st印)中,使得对于每个时 钟周期而言,该相同的指令是在该管线的相同阶段中,且在每个阶段时期,每个群集应该产 生完全相同的结果。此外当运算在锁定步骤中时,所有处理器状态在群集150a和150b之 间应该是完全相同的,且对于L2缓存180的存取应该实质上同时发生。下面将进一步描述 可使用这些特性以保护免于软件逻辑错误的传播(propagation)。在每个群集150内,执行单元154可支持同时执行各种不同类型的运算。举例来 说,实施例的执行单元154可支持两个同时加载/储存的地址产生(AGU)运算与两个同步 算术/逻辑(ALU)运算,故每个群集同时共有四个整数运算。执行单元154可支持例如整 数相乘与相除的额外运算,惟在各种实施例中,群集150可采用其它的ALU/AGU运算来实行 对于这种额外运算的处理量(throughput)与同时处理上的调度限制。此外,每个群集150 可具有它自己的数据缓存156,如同指令缓存110可使用各种缓存结构的其中之一来实行。 要注意的是,数据缓存156的缓存结构可不同于指令缓存110的缓存结构。在已说明的实施例中,FPU 160不同于群集150而可配置成执行来自不同线程的 浮点运算,且在一些情况中可同时执行。FPU 160可包含FP调度器162,该FP调度器162 与群集调度器152 —样可配置成用以接收、队列与发布于FP执行单元164内执行的运算。 FPU 160也可包含配置成用来管理浮点操作数的浮点实体缓存器档案。可将FP执行单元 164配置成实行许多种类的浮点运算(例如加、减、除、积和(multiply-accumulate))、以及 可由ISA所定义的其它浮点、多媒体或其它运算。在各种实施例中,FPU 160可支持特定不 同类型之浮点运算的同时执行,且也可支持不同程度的精确度(例如64位操作数、128位操 作数等等)。如图所示,FPU 160可以不包含数据缓存,但却可配置成存取包含在群集150 内的资料缓存156。在一些实施例中,FPU 160可配置成执行浮点加载和储存指令,而在其 它实施例中,群集150则可代表FPU 160来执行这些指令。如前所述,如果选择可靠执行模式,则可将DEC 140内的派送逻辑配置成每当FPU 160执行一个线程时连续派送该相同的线程至FPU160。因此如下述可为求精确而比较每个连续相同线程的执行结果。可将指令缓存110和数据缓存156配置成经由核心接口单元170来存取L2缓存 180。在一实施例中CIU 170可对核心100和其它系统内的核心100之间、以及和外部系统 存储器、周边等之间提供通用的接口。在一实施例中,可配置L2缓存180为采用任何适合 缓存结构的统一缓存。通常L2缓存180的容量远大于第一阶指令与数据缓存。在一些实施例中,核心100可支持无序(out oforder)运算的执行(包含加载和 储存运算)。也就是说,在群集150和FPU 160内的运算执行顺序可不同于该等运算所对应 指令在原始程序中的顺序。这种宽松的执行顺序可促进执行资源更有效地调度,而改善整 体执行效能。此外,核心100可实行各种控制与数据的推测(speculation)技术。如上所述,核 心100为了预测线程的执行控制流将进行的方向,可实行各种分支预测与推测的预提取技 术。此种控制推测技术在确切明白指令是否可用,或是发生推测错误(如分支预测错误)之前,通常会试着提供前后一致的指令流。如果发生了控制推测错误,则可将核心100配置 成抛弃该错误推测路径上的运算与数据,并将执行控制导向至正确路径。举例来说,在一实 施例中,可将群集150配置成成执行条件式的分支指令并判定该分支结果是否吻合该已预 测的结果。如果没有,则可将群集150配置将IFU 120重新导向以沿着正确的路径开始提 取。核心100可各自独立地实行各种资料推测技术,其中,该等资料推测技术企图在 得知该数据数值是否正确之前,便提供数据数值供将来执行之用。举例来说,在集合相联缓 存(set-associative cache)中,在知道是否有资料确实命中在某条路(way)之前,便可能 从该缓存的多条路中取得资料。在一实施例中,为了在得知路命中/未中状态之前企图提 供缓存结果,可将核心100配置成进行路的预测,如同指令缓存110、数据缓存156及/或 L2缓存180中的数据推测方式。如果发生不正确的数据推测,则依照错误推测数据所做的 运算可被「重新进行(r印lay)」或重新发布以再次执行。举例来说,对于预测不正确之路的 加载运算可重新进行。当再次执行时,根据实施例的不同而可依据稍早推测错误的结果来 再次推测该加载运算(例如使用如先前所判定该正确的路来推测)或是执行该加载运算而 不需推测数据(例如在产生结果之前仍继续进行,直到路命中/未中的检查完成)。在各种 实施例中,核心100可实行许多其它类型的数据推测,例如地址预测、依照地址或地址操作 数形态(address operand pattern)的加载/储存相依性(cbpendency)检测、推测的储存 至载入(store-to-load)结果的转递(forwarding)、数据同调性的推测(data coherence speculation)、或其它合适的技术或上述技术的组合。在不同实施例中,处理器的实作可包含将多个核心100的实例连同其它结构制造 成单一集成电路的一部份。图5说明此种处理器的实施例。如同前面所简短描述的,处理器核心100可在可靠执行模式中进行运算。在运算 于该可靠执行模式期间,群集150a和150b每一个内的逻辑是配置成在锁定步骤中运算,每 个群集执行相同的指令流。如果没有错误,放置于该逻辑内的结果总线(result bus)上的 结果应该在每个阶段的每个时钟周期是完全相同的。因此一旦发生错误(例如因为α粒 子对于一个群集中的逻辑组件的轰击),则在该逻辑组件受到影响之后的某个时钟周期内, 便会造成位于结果总线上某处的结果不同于在相同时钟周期内位于其它群集中相对应之 结果总线上的结果。如图1所示,每个群集150包含个别的签字产生器单元(signature generator unit) 157和个别的比较单元158。在运算期间,在一实施例中,当来自各种阶段的结果产生 在该结果总线上时,签字产生单元157a和157b可配置成从该个别结果总线而来的信号产 生签字。比较单元158a和158b可配置成用以比较用来比对的该签字,且如果发生不匹配则 通知CIU 170。CIU 170可配置成使得在两个群集中都受影响的指令被从两个群集150的执 行管线中清除并重新执行。在一实施例中,CIU 170可导致机器检查故障(machine check fault)以响应不匹配通知。在各种实施例中,可使用任何类型的签字或压缩来产生该等结果的签字。使用签 字或压缩技术来产生该等结果的签字或散列(hash)可减少必须排定至每个群集中比较单 元与该FPU 160内线路的数量。只要所产生的签字具有代表原始信号的高度可能性,则该 签字便是适当的。另外尽管效率不高,但是可预期在一个实施例中可没有任何压缩而需要比较所有的结果信号。此外,如前面所提到的,在两个群集150中的执行逻辑应该在实质上同一时间存 取该L2缓存180。因此,在CIU 170内的比较单元171可配置成检查L2存取何时发生,而 如果它们没有实质上同时发生,则如上所述,CIU 170可使得在两个群集中都受影响的指令 被清除并重新执行。以相似的方式,如果分支错误预测发生在一个群集中,则它也应该发生在另一个 群集中。因此,在CIU 170内的比较单元171也可配置成检查该两个群集的错误预测状态。如上述FPU 160为共享资源,在相同逻辑上可连续两次执行相同的线程或浮点指 令流。在一实施例中,类似于上述的签字产生器,可将签字产生器157c配置成从每个线程 执行的结果来产生签字。在FPU160和所指定的FP比较单元163内的比较单元可配置成在 该等结果被容许离开FPU 160而存进该引退队列中之前比较每个流的执行结果;如果检测 到不匹配,则把该不匹配通知CIU 170。与前面相同,CIU 170可使得该等结果被清除并使 得该线程被再次重新执行两次。因此,上述的逻辑错误保护可视为该群集150内群集层级的空间冗余与该FPU 170内线程层级的时间冗余。如图2中所显示的,该签字的产生和结果的比较是与该指令的 执行平行发生,并且是在该指令被储存进该引退队列(显示在图2中)之前发生的。因此, 在该指令永久地被引退或确定之前便可检测到错误,而达到透通的(transparent)错误恢 复。再者,既然是平行于该指令的执行来进行比较,故该比较不在关键路径中。在传统芯片 位准冗余结构中,要检查的结果是取自该引退队列,故系位于关键路径中。此外,可视需要 使用EDC/ECC的逻辑与码来保护其它的存储器、缓存器、与其它系统逻辑。因此,此种具有 空间、时间、与EDC/ECC错误保护冗余的结合便产生用来保护逻辑错误的混合冗余(hybrid redundancy)设备。参照图2的架构方块图,系显示该处理器核心逻辑错误保护的一个实施例。为了 简化,对应至图1中组件的组件系使用相同的编号。为了清楚表示,已经从图2中省略许多 组件。处理器核心100包含指令缓存、以及「指令提取暨译码逻辑」,两者在图2中一起标示 为组件符号210。此外和图1 一样,耦接至该译码单元210的处理器核心100包含整数执行 群集150与浮点单元(标示为FP单元160)。处理器核心100也包含引退队列290,该引退 队列290系经由个别结果总线来耦接至群集150以及FP单元160。该等结果总线也耦接至 签字产生器265,该签字产生器265再耦接至比较单元275。签字产生器265也会被耦接以 接收处理器状态信息295。在已说明的实施例中,该签字产生器265是显示成单一单元。然而,要注意的是 该签字产生器265可代表分布式功能(distributed function),其中可有多个签字产生方 块,如图1中所显示与如上所述。在已说明的实施例中,签字产生器265是配置成,当该等结果出现在多条结果总 线上且在该等结果被储存进引退队列290之前产生该等结果的签字或散列。因此如上所提 到的,该错误检查是进行在该关键路径之外。此外,在一实施例中,处理器状态信息包括例如EFLAGS缓存器数值、缓存器档案 奇偶性错误状态(register file parity error state)、外部中断等等,可包含在每个被产 生的签字中。如前说明图1时所述,该签字可送至比较单元275来作比较。通过检查该处理器状态信息,可检测到伴随该处理器状态的潜在问题,即使该问题可能不会出现在该等 结果中亦然。在该说明的实施例中,引退队列290是由ECC逻辑291来保护。因此,一旦检查过 的结果被储存在该引退队列290中,则通过奇偶性或一些其它类型的错误检测/校正码便 能保护检查过的结果免于受到软错误。图3系显示描述于图1和图2的处理器核心100之实施例的运作流程图。共同参 照图1至图3,且从图3的方块300开始,处理器核心100是运作在可靠执行模式中,并且 提取指令。如上所述,DEC 140实质上同时派送相同的整数指令至群集150a和150b (方块 305)。在可靠执行模式中,该群集150是配置成在锁定步骤中运作(方块310)。当可获得 不同管线阶段的结果时,便在每个群集中互相比较对应至那些结果的信号。更具体地说,每 个群集可把对应至在该给定阶段处的局部结果的信号,与同一阶段对应至来自另一群集的 结果信号作比较。因为该群集150是运行在锁定步骤中,所以结果应该完全相同。如上所 述,在比较该信号之前,该结果信号可压缩至签字或散列中。如果任一比较单元158检测到 不匹配(方块320),则比较单元158可通知CIU170,而CIU 170可发出机器检查故障、或其 它类型的故障,造成该指令被从两个群集中清除(方块325)、并且被重新执行(方块330)。 之后的运作如前述以及方块305的叙述继续进行。回头参照方块320,如果没有检测到不匹配,则可写入该结果至该引退队列 290(方块350)。要注意的是在其它实施例中,可检查来自额外阶段的额外结果。在这样的 实施例中,在每个阶段处可检查对应至该结果的信号的不匹配,且如果发现不匹配,则可清 除与重新执行该指令。然而如果没有检测到不匹配,则可在该引退队列290中写入或储存 该结果。回头参照方块300,如果所提取的指令是浮点指令,则DEC 140可派送包含指令流 的浮点线程至FPU 160 (方块355)。该线程执行的结果(或对应至该结果的信号)是保存 在例如FP比较单元163内(方块360)。此外,当运作在该可靠执行模式中时,DEC 140会 派送刚被执行之相同的浮点指令流至该FPU 160 (方块365)。FP比较单元163则比较该线 程当前的执行结果与先前的线程执行结果(方块370)。如果没有不匹配(方块375),则该结果从该FPU 160中释放、并储存在该引退队 列290中。然而,如果FP比较单元检测到不匹配(方块375),则在该线程中的浮点指令便 被清除(方块380)、且被再次重新执行,共两次(方块385)。之后的运作如前述以及方块 355的叙述继续进行。如上所述,为了减少用于传送比较结果所必需的线路数量,可使用该结果信号的 签字或散列。如此,可使用图1的签字产生方块157与图2的签字产生器265来实施此功 能。此外,对比于许多传统系统,显示在图1至图4中的签字产生与后续的比较系与该处理 平行进行(也就是可获得该结果时)。因此,该签字的产生与比较便从该处理的关键路径 中移除。图4是描述图1和图2的处理器核心100的另一实施例的运作流程图。更具体来 说,描述在图4中的运作相似于描述在图3中的运作。然而,显示在图4中的运作包含额外 的步骤。因此为了清楚说明,将只描述不同于显示在图3中的运作。共同参照图1至图4,且从图4的方块410开始,处理器核心100正运作在可靠执 行模式中,且已经提取与派送相同的整数指令至每个群集150。每个群集在锁定步骤中执行该指令。在沿着每个群集之结果总线的一个或多个所选择的位置处,拦截该结果总线的信 号。当该结果变得可获得时,签字产生器(例如157a、157b、265)便产生该结果与该处理器 状态的签字或散列,如上所述(方块415)。所产生的签字被传送至其它群集,且每个群集比 较自己的签字与从其它群集接收到的签字(方块420)。该签字的产生与后续的比较是和该 指令的执行平行发生的。依照比较的结果,该结果可能被储存在引退队列290中、或是该指 令被清除并被重新执行(方块425至435)。参照方块455,如之前图3中方块355的描述,该DEC 140可派送浮点指令线程至 该FPU 160。签字产生器157c从该浮点指令流的执行结果产生签字(方块460)。在一实 施例中,该结果是保持在FP比较单元163中。如上所述,DEC 140派送刚被执行之相同的 浮点指令流至该FPU 160 (方块465)。签字产生器157c从该浮点指令流第二次执行的结果 产生签字(方块470)。FP比较单元163比较该线程当前执行的结果与所保存之先前的线 程执行结果(方块475)。依照比较的结果,该结果可能储存在引退队列290中,或是该线程 中的指令可被清除并重新执行(方块480至495)。翻至图5,处理器500包含四个核心IOOa至100d,可如前所述配置每个核心。在 该说明的实施例中,每个核心100可经由系统接口单元(system interface unit, SIU) 510 来耦接至L3缓存520与存储器控制器/周边接口单元(memory controller/peripheral interface unit, MCU)530。在该说明的实施例中,可靠执行模式的选择接脚可耦接至SIU 510。然而,可预期到在其它实施例中,该接脚可连接至其它方块。在一实施例中,L3缓存 520可配置成使用任何合适的结构来实作的统一缓存,在核心100的L2缓存180与相对较 慢的系统存储器540之间,以L3缓存520作为中间的缓存。MCU 530可配置作为处理器500直接与系统存储器540相接的接口。举例来说,MCU 530可配置来产生支持一种或多种不同类型的随机存取存储器(RAM)(例如双数据速率同 步动态 RAM(DDR SDRAM)、DDR-2SDRAM、全缓冲双直列存储器模块(Fully Buffered Dual Inline Memory Module,FB-DIMM)、或其它适合实作系统存储器540的存储器)所必要的信 号。可配置系统存储器540来储存可在处理器500的不同核心100上运作的指令和数据, 且可由上述不同的缓存来缓存该系统存储器540的内容。此外,MCU 530可支持连接至处理器500其它类型的接口。举例来说,MCU 530可实 作出专属的图形处理器接口,例如加速/进阶图形端口(Accelerated/Advanced Graphics Port, AGP)界面其中一个版本,可使用该图形处理器接口作为将处理器500连接至图形处 理子系统的接口 ;该图形处理子系统可包含独立的图形处理器、图形存储器及/或其它组 件。MCU 530也可配置来实行一个或更多个类型的周边接口,例如PCI-Express总线标准的 一个版本;透过该PCI-Express总线标准,处理器500可连接至接口设备,例如储存装置、图 形装置、网络装置等等。在一些实施例中,可使用在处理器500外部的第二总线桥接器(例 如「南桥」),通过其它类型的总线或互连件来耦接处理器500至其它周边装置。要注意的 是虽然存储器控制器和周边接口功能是图标为经由MCU 530而整合在处理器500内,但是 在其它实施例中可经由传统「北桥」的配置,而在处理器500的外部也可实行这些功能。举 例来说,MCU 530的多种功能可经由独立芯片组来实行,而不需整合于处理器500内。虽然以上已经相当详细地描述了实施例,熟知此技术领域的人士一旦完全了解本 发明,则许多的变化形式与修改型式对他们来说将变得显而易见。本发明下列的申请专利范围是打算涵盖所有此类的变化与修改。产业利用件本发明一般可应用于处理器。
权利要求
一种处理器核心(100),配置成在可靠执行模式中运作,该处理器核心包括指令译码单元(140),配置成派送相同的整数指令流至多个整数执行单元(154a、154b),且连续派送相同的浮点指令线程至浮点单元(160);其中,该多个整数执行单元配置成在锁定步骤中运作,使得在每个时钟周期期间,该多个整数执行单元执行相同的整数指令;其中,该浮点单元配置成执行该相同的浮点指令流两次;比较逻辑(158a、158b、163),耦接至该多个整数执行单元与该浮点单元,其中,在该相同的整数指令流中的指令引退之前,该比较逻辑配置成检测来自该多个整数执行单元的每一个的执行结果之间的不匹配;其中,在该浮点单元把该浮点指令流的执行结果从该浮点单元转移出去之前,该比较逻辑进一步配置成检测在每个连续的浮点指令流的执行结果之间的不匹配;其中,响应该比较逻辑检测到的任何不匹配,该比较逻辑配置成使得造成该不匹配的指令被重新执行。
2.如权利要求1所述的处理器核心,其中,该多个整数执行单元包括多个整数执行群 集(150a、150b),每个整数执行群集包含一个或多个第一整数执行单元(154a)与一个或多 个第一调度器单元(152a)。
3.如权利要求2所述的处理器核心,其中,该比较逻辑进一步配置成用来比较与该多 个整数执行群集的第一执行群集的执行结果相对应的信号、以及与该多个整数执行群集的 第二执行群集的执行结果相对应的信号。
4.如权利要求3所述的处理器核心,其中,该比较逻辑包括分布式比较功能,该分布式 比较功能被包含在该第一执行群集、该第二执行群集、与该浮点单元内。
5.如权利要求1所述的处理器核心,其中,对应于来自该多个整数执行单元的每一个 的执行结果的信号包括签字,该签字产生自结果信号,而该结果信号则是被传送在该多个 整数执行单元的每一个内的结果总线上。
6.一种在处理器核心(100)中用于保护免于逻辑错误的方法,该方法包括 使该处理器核心在可靠执行模式中运作;派送相同的整数指令流至多个整数执行单元(305),并且连续派送相同的浮点指令流 至浮点单元(355、360);使该多个整数执行单元在锁定步骤(310)中运作,使得在每个时钟周期期间,该多个 整数执行单元执行相同的整数指令;该浮点单元执行该相同的浮点指令流两次;在该相同的整数指令流中的指令引退之前,比较逻辑比较(315)并检测来自该多个整 数执行单元的每一个的执行结果之间的不匹配(320);在该浮点单元把该浮点指令流的执行结果从该浮点单元转移出来之前,比较逻辑比较 (365)并检测每个连续的浮点指令流的执行结果之间的不匹配(370); 响应检测到的任何不匹配,重新执行导致该不匹配的指令。
7.如权利要求6所述的方法,其中,该多个整数执行单元包括多个整数执行群集 (150a、150b),每个整数执行群集包含一个或多个第一整数执行单元(154a)以及一个或多 个第一调度器单元(152a)。
8.如权利要求7所述的方法,还包括该比较逻辑比较与该多个整数执行群集的第一 执行群集的执行结果相对应的信号、以及与该多个整数执行群集的第二执行群集的执行结 果相对应的信号。
9.如权利要求8所述的方法,其中,该比较逻辑包括分布式比较功能,该分布式比较功 能被包含在该第一执行群集、该第二执行群集、与该浮点单元内。
10.如权利要求6所述的方法,还包括通过从传送在该多个整数执行单元的每一个内 的结果总线上的结果信号来产生签字,以产生对应于来自该多个整数执行单元的每一个的 执行结果的信号。
全文摘要
一种包含指令译码单元(140)的处理器核心(100),该指令译码单元可派送相同的整数指令流至多个整数执行单元(154a、154b),并且可连续地派送相同的浮点指令流至浮点单元(160)。该整数执行单元可操作在锁定步骤中,使得在每个时钟周期期间,每个个别的整数执行单元可执行该相同的整数指令,而该浮点单元则可执行该相同的浮点指令流两次。在该整数指令引退之前,比较逻辑(158a、158b、163)可检测来自各整数执行单元之执行结果间的不匹配。此外在浮点指令流的结果从该浮点单元转移出来之前,该比较逻辑也可检测各连续的浮点指令流的执行结果之间的不匹配。再者,于检测到任何不匹配时,该比较逻辑可产生使该不匹配再次执行的指令来做为响应。
文档编号G06F11/16GK101933002SQ200980103961
公开日2010年12月29日 申请日期2009年1月9日 优先权日2008年1月10日
发明者M·G·布尔特, N·郭 申请人:格罗方德半导体公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1