著录项信息
专利名称 | 在多线程并行处理器中防止线程丢失的现场保护 |
申请号 | CN01125543.9 | 申请日期 | 2001-08-14 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2002-03-06 | 公开/公告号 | CN1338680 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | 暂无 | IPC分类号 | 暂无查看分类表>
|
申请人 | 国际商业机器公司 | 申请人地址 | 美国纽约
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 国际商业机器公司 | 当前权利人 | 国际商业机器公司 |
发明人 | 萨尔瓦托·N·斯托林诺;戈里高利·J·尤尔曼 |
代理机构 | 中国国际贸易促进委员会专利商标事务所 | 代理人 | 付建军 |
摘要
一个方法,一个装置,用于保护在多线程计算机处理器中线程不会丢失。这个处理器可能会遇到一个或更多的线程发生故障;根据本发明,可以进行一个功能测试来检测出哪一个线程发生了故障。如果线程故障导致了与这个线程相关的唯一一个寄存器/阵列发生了故障,然后,本发明将禁止到这些多线程寄存器/阵列的访问。每一个线程都可以有它自己的多线程寄存器/阵列设置,或者它可以被唯一分配给一个多线程寄存器/阵列中多个存储单元中的一个。使用本发明,一个处理器将继续处理其它线程,与被禁止的或者发生了故障的线程相关的指令和数据可以被进行重新路由。
1.尽管一个线程发生故障仍然在执行多个线程的一个硬件多线程 计算机处理系统中继续正常计算机处理的方法,所述方法包括步骤:
(a)在一个硬件多线程处理器中执行所述多个线程中的至少一个 指令,所述多线程处理器具有其各独立存储元素与所述多个线程中的 每一个相关的至少一个多线程寄存器/阵列;
(b)对一特定线程和具有与该特定线程相关的独立存储元素的至 少一个多线程寄存器/阵列进行测试;
(c)检测与该特定线程相关的独立存储元素故障;
(d)禁止所有与该特定线程相关的存储元素;
(e)将该特定线程的数据重定向到与多个线程中没有具有缺陷的 存储元素的其它线程相关的、其它独立存储元素;
2.如权利要求1的方法,进一步的包含:(a)产生一个错误信 号指明与特定的线程有关的至少一个独立存储元素出错。
3.如权利要求2的方法,进一步的包含:
(a)对其存储元素没有发生故障的所述其它多线程继续进行正常 处理。
4.如权利要求1的方法,其中对一个特定线程和具有与所述特 定线程相关的独立存储元素的至少一个多线程寄存器/阵列进行测试 的所述步骤进一步包含运行一个功能测试,来在紧张处理条件下执行 指令。
5.如权利要求1的方法,其中对一个特定线程和具有与上述特 定线程相关的独立存储元素的至少一个多线程寄存器/阵列进行测试 的所述步骤进一步包含对所述至少一个多线程寄存器/阵列进行阵列 内置自检和/或者逻辑内置自检测试。
6.如权利要求1的方法,其中禁止与所述特定线程相关的所有 存储元素的所述步骤进一步包括,生成一个线程选择信号来选择与所 述多个线程中的其它多个线程相关的其它独立存储元素。
7.如权利要求1的方法,其中禁止与特定线程相关的所有存储 元素的所述步骤进一步包括禁止属于一个线程交换控制寄存器中的所 述特定线程的全部或者部分多个线程交换控制事件。
8.能够在现场禁止一个线程的多线程计算机系统包括:
(a)至少一个多线程计算机处理器;
(b)所述多线程计算机处理器中多个操作线程中的每一个线程操 作至少一个线程交换控制寄存器;
(c)至少一个具有多线程存储单元的硬件多线程存储器/寄存器 阵列,在所述多线程存储单元中,每一个存储单元具有唯一与一个线 程相关的一个存储元素;
(d)一个主存储器,与至少一个多线程计算机处理器相连接;
(e)一个总线接口,将多线程计算机处理器和主存储器连接到至 少包含下列部件组中的一个:多个数据存储器,一个或更多的外部通 信网络,用于提供到/来自计算机处理器的用户输入的一个或更多的输 入/输出设备;
(f)一个功能测试产生器,用于在正常运行期间,对至少一个多 线程计算机处理器中的至少一个线程进行现场功能测试;
(g)一个存储元素故障检测器,用于检测与至少一个正在被进行 功能测试的线程唯一相关的一个存储元素的故障;
(h)一个存储元素禁止器,用于禁止与正在进行功能测试的至少 一个线程相关的所有存储元素;
(i)一个数据重定向器,用于将来自至少一个线程的数据重定向 到与其它操作线程相关联的存储元素,以继续进行处理;以及
(j)一个错误信号产生器,用于传播表示这至少一个线程已经发 生了一个故障的消息。
9.一个方法,用于尽管其中某一个线程有错误,仍在执行多个线 程的一个硬件多线程计算机处理系统中继续正常的计算机处理,所述 方法包含步骤:
(a)执行具有多个硬件寄存器/阵列的一个硬件多线程处理器中 的至少一个所述的多线程的指令,其中每一个与所述多个线程中的每 一个相关;
(b)对一特定线程和与特定线程相关的至少一个寄存器/阵列进 行测试;
(c)检测与特定线程相关的至少一个寄存器/阵列的故障;
(d)禁止发生了故障的、与特定线程相关的至少一个寄存器/阵 列;
(e)将这个特定线程的数据重新路由到没有发生故障的其它独 立寄存器/阵列。
技术领域\n本发明一般涉及了计算机存储电路的领域,并且特别涉及了一种在 计算机被制造和销售后防止由于和唯一操作线程有关的寄存器或者阵 列错误引起的计算机操作的丢失的方法。\n背景技术\n作为计算机处理业务的消费者,商业人士惧怕出现由计算机错误 引起的停机,实际上停机可能由于很多的原因而出现。一个包含有大 量未备份数据的硬盘可能会崩溃而且导致数据的丢失。更为严重的是, 可能计算机的核心处理器也会不再正常运行。新增或者扩展内存并不 能挽救计算机的功能:计算机自己崩溃了。这样的处理器的问题可能对 许多商业运行系统带来灾难性的后果;例如可以回想某一个特定航班 几个小时无法获得航线和时间表资料的困境。计算机死机带来的后果 可能是百万甚至累计到上十亿的美元的损失。\n为了避免在计算机元件被制造和组装后,和计算机销售后出现这 样的问题,很多制造商在把计算机销售给客户之前测试他们的处理器 和存储器组件,并且消除处理器的隐患。不管检测和消除隐患的工作 效果有多好,当计算机到用户处后,即使在普通压力下进行处理器操 作,计算机硬件仍然会有出故障的可能。一种典型的故障最有可能是 由这样的原因引起的:在正常的使用下由于使用过度而导致处理器内 核内的通用寄存器、专用寄存器和计算机的随机存取主存的AC故障。\n有一些测试是在计算机的用户点完成的,例如静态随机访问存储 器SRAM阵列的检测就是计算机上电自检的一个常见步骤。如果处理 器检测SRAM不成功,它将会给用户一个”失败”的提示,并且系统将 不会正常启动,直到客户服务人员处理了这一问题。在系统是多处理 器系统的情况下,系统中的某一个处理器有可能被禁止,剩余处理器 进行额外的处理,从而系统性能会有所下降直到客户服务人员赶到。\n但是,SRAMs并不包含多线程存储单元。现在,如果一个错误出 现在多线程存储阵列或者寄存器中,多线程计算机操作系统会显示一 个错误代码表明因为多线程的数据冲突而出错并且或者关闭整个系 统,或者,如果系统是包含多个处理器的,则接下来的操作将不使用 出错的处理器而运行。在任何情况下,线程的失败的处理器都会被关 闭,并且使处理受到损害。\n多线程计算机的工业需要在正常处理运行过程中检测包含有多线 程存储单元的寄存器和/或存储阵列的缺陷。如果多线程内存或者寄存 器中只有与一个失败的线程相关的存储元素不能被处理器正常调用, 那么就不必要停止整个处理器;处理器在这种条件下能够继续正常运 行其他的不含有有缺陷的存储元素的线程,并且能够重新路由那些与 失效存贮单元相关线程到完好的存储元素。这一方法使处理器仍处于 服务状态而非停止全部的处理器的运行。\n发明内容\n对该领域的技术人员来说很明显的这些要求和其它要求可以被一 个方法满足。尽管多个线程中的一个线程发生了故障,这个方法仍然 能够在执行多个线程的一个硬件多线程处理计算机系统中进行正常的 计算机处理。这个方法应该包含以下的步骤:执行含有多个硬件寄存 器/阵列的一个硬件多线程处理器的至少一个线程的指令,其中的每一 个硬件寄存器/阵列与一个线程相关联;检测一个特定的线程和至少一 个与该特定线程相关联的寄存器/阵列;检测到与该特定线程相关连的 至少一个寄存器/阵列的故障;关闭与该特定线程相关联的故障寄存器/ 阵列;且重新路由该特定线程的数据到其它单个的没有故障的寄存器/ 阵列。\n这个寄存器/阵列可能是一个含有多个多线程存储单元的多线程存 储寄存器/阵列,每一个多线程存储单元都包含各与一个线程相关联的许 多存储单元。在这种情况下,本发明给出了在硬件多线程计算机处理系 统执行多个线程的过程中尽管一个线程失败但继续正常计算机处理的 方法,其步骤如下:执行含有至少一个多线程寄存器/阵列的一个硬件 多线程处理器的多个线程中的至少一个线程的指令,其中多线程寄存 器/阵列含有多个独立的存储单元,这些存储单元每一个都与一个线程 相关联;检测一个特定的线程和至少一个含有与该特定线程相关联的 独立存储单元的多线程寄存器/阵列;检测到该特定线程相关连的至少 一个单个的存储单元的故障;关闭与该特定线程相关联的所有存储单 元;且重新路由该特定线程的数据到与其它没有故障的线程相关联的 独立存储单元。\n这个方法进一步包括生成一个错误信号表示与该特定线程相关联 的至少一个存储单元的失效。不含失效存储单元的其它线程的正常处 理将继续。\n对一特定线程和含有与该线程相关联的单个存储单元的至少一个 多线程寄存器/阵列的进行检测的步骤进一步包括:运行一个功能测试 以在压力处理条件(stressed processing condition)下执行指令。替代 的,该测试可是一个ABIST(阵列内置自检)测试和/或一个LBIST (逻辑内置自检)测试。\n关闭所有与该线程相关联的存储单元的步骤可能包括:产生一个 线程选择信号以选择与其它线程相关联的其它独立存储单元。在其它 的实施方式中,关闭所有与该特定线程相关联的存储单元的步骤可能 进一步包括在进程切换控制寄存器中禁止所有或者一部分与特定线程 有关的线程切换控制事件。\n本发明进一步可被认为是一能够现场关闭一线程的多线程计算机 系统,这个系统包括:至少一个多线程计算机处理器;纪录多线程计算 机处理器中多个操作线程的每一个操作线程的至少一个线程切换控制 寄存器;至少一个包含多个独立的多线程存储单元的硬件多线程存储 器/寄存器阵列,其中每一个存储单元都和一个唯一的线程相关;连接到 至少一个多线程计算机处理器的一主存;一个总线接口连接多线程计 算机处理器和主存到至少一个下述组件:多个数据存储设备,一个或更多外部 的通信网络,一个或者更多向用户提供入/出计算机处理器的输入/输出 操作的输入/输出设备;一功能测试产生器以在多线程计算机处理器正常 处理现场测试至少一个线程的功能;一存储单元错误检测器,检测与正 在执行功能测试的线程唯一相关联的一存储单元是否失败;一存储单元 关闭器,以关闭与在功能测试中失败的线程相关联的所有存储单元;一 数据路由器,以重定向来自该线程的数据到与其它继续处理的线程相 关联的存储单元;错误信号产生器以传播表示一个线程已失败的消息。\n本发明也是一个用于硬件多线程计算机处理器的程序产品,该产品 能够检测多个正在运行的线程中的一个是否失败。该程序产品包括一 信号承载介质,其上承载有:一功能测试程序,包含对多线程中至少 一个线程进行测试的一系列指令;一线程关闭器,以关闭在硬件寄存器/ 存储阵列的多线程存储单元的单个存储单元;被关闭的每一个存储单 元与在功能测试中失败的至少一个线程相关联;一数据路由器以重新 配置任意可编程寄存器来路由在功能测试中失败的至少一个线程的数 据到与在功能测试中未失败的其它线程相关联的多线程存储单元的其 它存储单元;和一错误消息产生器以表示在功能测试中至少一个线程 失败。\n附图说明\n被认为是本发明特征的新的特征在权利要求书进行了描述。然而 这个发明本身,以及一使用的优选模式,他们的目的和优点,参考下 述的与附图相联系的示例的实施方式的详细描述将被更好的理解,其 中:\n图1显示了根据本发明的优选实施方式一计算机系统的主要硬件 组件利用含存储单元的多线程寄存器/存储器阵列给单个的线程提供存 储单元。\n图2是一多线程存储寄存器的一简化框图。\n图3是图2中的多线存储单元的一更详细的框图。\n图4是图3中的多线程存储单元的示意图。\n图5用于检测一多线程存储单元中的失效存储元素的过程的简化 流程图。\n图6根据本发明的优选实施方式,用于关闭一存储寄存器的存储 元素和重新路由发送到该线程的数据的过程的简单流程图。建议图6 印在专利的封面。\n具体实施方式\n图1是一计算机系统100的主要硬件组件,含一带有多线程存储单 元的寄存器,该多线程存储单元能够根据本发明的优选实施方式被有 选择的关闭。对来自主存储器102中的指令和数据进行基本机器处理 中中央处理器(CPUs)101A和101B支持硬件多线程操作。每一个 CPU101A和101B分别包含相应的内部的一级指令缓存106A,106B(L1 I-cache)和一级数据缓存107A,107B(L1 D-cache)。每一个L1 I-cache 106A,106B存储各自对应的CPU执行的指令。每一个L1 D-cache 106A,106B存储各自对应的CPU处理的除指令外的数据。每一个CPU 101A,101B被连接了一相应的能够被用来保存数据和指令的二级缓存 (L2-cache)108A,108B。存储总线109在CPUs和主存储器间传输数 据。CPUs 101A,101B和主存储器102也通过存储总线109和总线接 口105与系统I/O总线110进行通信。不同的I/O处理单元(IOPs) 111-115连接到系统I/O总线110且支持与不同的存储器和I/O设备的 通信,例如直接访问存储设备(DASD),磁带驱动器,工作站,打印机,和为 与远程设备或其他计算机系统完成远程通信的线。为了简单,CPU,L1 I-cache,L1 D-cache,和L2 cache在这里依次被指定为参考号 101,106,107和108。图1中显示的不同总线,应理解为这些总线用于从 原理的角度代表了不同的通信线路,实际的总线的物理结构可能会变 化,实际上会非常复杂,应进一步的理解,图1用作是系统结构的一 例,计算机系统的实际组件的数目,类型和结构可能会变化。特别的, 本发明可以被用于含一单个多线程CPU的系统,或含多个多线程CPU 的系统。\n每一个CPU101能够保持多线程的状态。CPU101典型的包括 用于存储数据的多个通用寄存器,用于存储条件,中间结果,指令和 其它一起决定CPU状态的指令的信息的各种专用寄存器。这些信息对 被CPU101支持的每一个线程是相同的。在CPU101中含有每一个 线程的硬件状态寄存器103A和103B。每一个线程包含有关线程优先 级,其激活或非激活状态等的信息。如图1所示的是一假设的二线程 系统中的两个线程状态寄存器;但是,事实上处理器可以同时容纳超过 两个线程的状态并处理超过两个的线程数目。线程状态寄存器产生一 个激活线程的信号。硬件线程切换控制寄存器105A和105B能够通过 被编程去选择产生线程间的切换的事件。每个线程切换控制事件在线 程切换寄存器105中都有单独的使能位。每一个线程可能会拥有一个 单独的线程切换寄存器,但是更频繁地对应于一独立的线程的寄存器 的位电路典型地在一芯片上物理地交织,即,线程0的寄存器部分的 位0物理地与其它每一个线程的寄存器部分的位0紧邻;相应的位1 也在物理上彼此相邻,等。一线程切换控制寄存器中的一线程的线程 切换事件不需要与与另一个线程相联系的线程切换控制事件相同,或 者与其它线程切换控制寄存器中的事件相同。线程切换控制寄存器可 以被一个服务处理器写,这在该领域为人们所知。线程切换寄存器的 内容被一个硬件线程切换控制器读取,以决定是否在多线程处理器中 产生一个线程切换。寄存器中的值1将使与此位相关联的线程切换控 制事件产生一线程切换。寄存器中的值0将使与此位相关联的线程切 换控制事件不产生一线程切换。寄存器第22到第29位中的任何一位 的值为0则禁止与该位相关联的线程。当然,在正在执行的线程的一 条指令可以禁止任何或者全部该线程或者其它线程的线程切换条件。 下列的表格提供了在线程切换控制寄存器的线程切换事件和他们的使 能位间的联系的一个例子。\n线程切换控制寄存器控制分配\n(0)在L1数据缓存拾取失败时切换\n(1)在L1数据缓存存储失败时切换\n(2)在L1指令缓存失败时切换\n(3)在指令TLB失败时切换\n(4)在L2缓存失败时切换\n(5)在L2缓存存储失败时切换\n(6)在L2指令缓存失败时切换\n(7)在数据TLB/段数据后备缓冲失败时切换\n(8)在L2缓存失败或者后备的线程不处于L2缓存中时切换\n(9)当达到线程切换超时值时切换\n(10)L2缓存数据返回时切换\n(11)在I/O外部访问请求时切换\n(12)在双-X存储*第一个X失败时切换\n(13)在双-X存储*第二个X失败时切换\n(14)在存储序列或字符串访问失败时切换\n(15)在读取序列或字符串访问失败时切换\n(16)保留\n(17)在双-X读取*第一个X失败时切换\n(18)在双-X读取*第二个X失败时切换\n(19)在接到指令or 1,1,1并且机器状态寄存器(问题状态)位, msr(pr)=1时切换。允许与msr(pr)无关的软件优先级改变。如果位 19的值为1,指令or 1,1,1设置低优先级。如果位19的值为0,当 指令or 1,1,1执行时仅当msr(pr)=0时才将优选级设置为低。参 见用软件改变优先级,将在后文中讨论。\n(20)保留\n(21)线程切换优先级使能\n(22:29)线程使能---每一个线程一个\n(30:31)前向进程计数\n(32:63)在64位寄存器设备中保留\n*双-X读取/存储指跨越一个双字的边界读取或存储基本的1/2字, 字,或者双字。在该上下文中,一双-X读取/存储不是读取/存储若干字 或者字符串。\n其他的关于多线程处理器设计的背景资料被包含在下列的共同转 让的未决美国专利申请中,这里它们整个被作为参考:其序列号未知的同 时申请的题目为“改变多线程计算机处理器同时处理的线程容量”(受 让人档案号ROC920000140);序列号09/439,581,1999年12月12日 申请,题目为“多线程处理的主-从属锁存器电路”(受让人档案号 RO999-140);序列号09/266,133,1999年3月10日申请,题目为“多 线程处理器的指令缓存”(受让人档案号RO998-277);序列号 08/976,533,1997年11月21日申请,题目为“在多线程处理系统 中如何同时向缓冲区输入复合数据”(受让人档案号RO997-182)序列 号08/966,706,1997年11月10日申请,题目为“实用的实际地址 缓存管理设置和方法”(受让人档案号RO997-155);序列号 08/958,718,1997年10月23日申请,题目为“多线程处理器中的优 先级设置”(受让人档案号RO997-106);序列号08/958,716,1997年10 月23日申请,题目为“选择线程切换事件的方法和装置”(受让人档 案号RO997-104);序列号08/957,002,1997年10月23日申请,题目 为“多线程处理器系统中的线程切换控制”(受让人档案号RO996-042); 序列号08/956,875,1997年10月23日申请,题目为“多线程处理 器系统中保证线程正常运行的方法和具体实施”(受让人档案号 RO997-105);序列号08/956,577,1997年10月23日申请,题目为“多 线程处理器系统中强制线程切换的方法设备和具体实施”(受让人档案 号RO997-107);序列号08/773.572,1996年12月27日申请,题目为 “在多线程处理系统的后台完成指令和连接请求”(受让人档案号 RO996-043)。虽然上述申请中描述的多线程处理器的设计是模糊的多 线程实现(coarse-grained multithreading implementation),应被理 解本发明可以被应用到模糊的或者是精确的(fine-grained)多线程中。\n一个多线程存储阵列和传统的有一公用总线的二线程存储阵列进 行对比。有公用读取总线的计算机体系结构的范例假定读取的独立是 必要的且需要一用于同时读取每一线程的独立读取解码器。然而,发 现具有一个优化连线和相关的优化的最小的晶体管数目的一个多线程 存储器可以通过消除读取的独立性而实现,而不会产生严重的副面效 果,因为其中两个或多个线程同时需要数据的实例的数目可以忽略不 计。图2中的多线程处理寄存单元反映了如下的事实,通过消除读取 独立性就可以大大减少芯片表面的占用面积而不会产生严重的副面效 果,因为读取独立性是一次仅能够访问一个线程的处理器可忽略的属 性。与为每一个线程提供单独的读端口所需要的相比,这里的线程选 择器和读端口需要更少的晶体管。\n图2描述了一个多线程存储单元的框图,如美国专利中的NO. 5,778,243,在这里被受让人共同拥有并整个的作为参考。多线程存储单 元300有一个多线程读取接口,这个接口包括线程选择器330以选择性 将线程0和1连接到该读取的端口340。这个读取端口340的端口数 目对应于功能单元的数目,通常不止一个,例如,六到八个不同的功能,能 从存储元素320和322读取。一个功能单元的一例是一个能执行下列 的一些操作的算术逻辑单元:整数,逻辑移位,字段提取和/或浮点操作,和 /或浮点和整数表示之间的转换操作。为完成读操作,每个存储元素 320,322被连接到一个功能部件如下:存储元素320,322被连接到线程 选择器330;线程选择器330连接到读取的端口340中的一个;这个端 口被连接到译码器(不表示在图2中);且这个译码器连接到该功能单元, 也不表示在图2。\n图2还包含线程0的写端口310和线程1的写端口312,写端口的 数目对应于功能单元的数目,它通常不止一个,例如,三到十二个不同的 功能单元能够写到存储元素中;线程0的存储元素320连接到写端口 310和线程选择器330;线程1的存储元素322连接到写端口312和线 程选择器110。\n一个处理器(不显示)能通过控制线程选择器330选择线程0,来读 取存储元素320中的数据,藉此存储元素320中的数据可以被读端口340 读取。同样地,读取存储元素322中的数据,处理器需要控制线程选择器 330选择来自存储元素322的线。\n图3是图2实施方式更加详细的框图。图3中显示了一个由多 线程存储单元组410构成的二线程阵列402。图3中的该两线程阵列 包括了读解码器430,432,434,436,线程0的写解码器438,线程1的写 解码器440,以及多线程存储单元组410中的一个阵列450。图中只显 示了与多线程存储单元410的一个存储组的连线,因为其他联线的连 接方式都是相同的。\n写解码器438,440各自与写地址总线418、422相联,并且分别和 他们各自的写线程控制选择线416,420相连接。在这种方式下,线程的 选择是在二线程寄存器402实现的。与之对照的是,该读出解码器,如 430,432,434,436,都与读地址总线412连接,但是不与读入线程选择 线414相连。而多线程存储单元组410中的每一个单独的存储元素都 与读入线程选择线414相连。由此哪一个线程进行读入的选择是在多线 程处理单元组410内作出的,而非在多线程处理单元组410外作出的。\n图4描绘了一个图2的实施方式的示意图。具体说来,在图4中, 框都是由互补金属氧化物半导体晶体管(CMOS)组成的,尽管本发 明是可以应用到NMOS,BICMOS,双极型,SOI,和GaAS等其他 技术。一个存储元素320是由晶体管510,512,514,516,518,520 构成并包含一个独立的位。所示的写端口310仅包含一个端口,因为 简单的假设了仅有一个功能单元写到该存储元素,尽管如上所述这样 的由晶体管组成的功能单元可能多于一个。类似地,该写端口是由晶 体管502和504构成的。该存储元素332是由晶体管530,532,534,536, 538,540构成的。线程选择器330是由晶体管560,562,564,566,568, 570构成的。根据连接到晶体管560的栅极和晶体管566的栅极的线550 上的信号THB的状态,以及连接到晶体管562的栅极和晶体管564的 栅极的线552上的信号THA的状态,线程选择器330选择第一个或 第二个线程。读端口340包括了2个端口:580和590,第一个端口580 是由晶体管582和584构成,而第二个端口590则是由晶体管592和 594构成。再次需要指出的是,在每个接口的端口的数量是可以改变的, 并且在实际中可能会按照能写入或读出该存储元素的功能单元的数目 改变,\n制造之后,含多线程处理单元的寄存器和存储阵列被测试。已知 的测试的办法有多种,LBIST和ABIST是其中的两种。简单的说, 向阵列输入一个已知的位序列,然后将其与阵列的输出结果进行比较。 在一个正确的功能存储器阵列中,输入匹配输出。若过可能的话,这 些序列将快速的同时执行操作,且这一操作能包括很多存储单元,这 种负荷的条件迫使处理器确定其故障参数,如果有的话。另外一种测 试是一个功能测试,其中代表客户运行要求的典型编码指令,在一定 的压力条件下执行,以训练存储器阵列的关键部分。这些测试也可以 以不同的处理器速度执行,以确定是否和何时处理器系统会失败。普 遍的情况下出现的故障是由于存储器阵列和通用或者专门寄存器不能 够在多线程处理单元捕获并保持某一位的值。本发明的一个重要特征 就是能够测试与单个线程相关联的单个存储器中储存的值。换句话说, 在发明的上下文中,每个线程能够被独立测试。\n正如下面描述的详细内容,优选实施方式的各方面与在一个多线 程计算机系统100中可现在的特定方法步骤相关。在一个替代的实施 方式中本发明可能会被作为一个由计算机系统100使用的计算机程序 产品而实现。定义了优选实施方式功能的程序可以通过多种信号加载 媒质传送到计算机100,它包括了,但不限:(a)永久存储在不可写存 储介质,例如被连接到总线110的只读存储器,(例如CD-ROM)上 的信息;(b)保存在可写的磁性或光介质媒质存储器,例如在在磁盘 驱动内部软磁盘或硬盘驱动器或其他的数据存储设备,上的可改变信 息;(c)通过电话线或者网络电缆介质网络,包括无线电通信,被传 送到一个计算机的信息。这样一种信号承载媒质,当携带了执行本发 明的功能的计算机可读取的指令时,表示本发明的替代实施方式。\n图5是检测一个多线程处理器的故障的一种方法的一个简化的流 程图。尽管图5显示了执行实际编码指令直到出现故障的一个功能测 试,但是,被用于测试存储器阵列的其它测试,例如,ABIST,LBIST 等等也可以用于本发明中。典型的这些测试是在被制造之后,和/或者 在现场处理器系统正常的工作期间。即,在正常处理器性能下,在客 户的使用位置周期性的进行着。从步骤600开始,处理进行到步骤610, 其中一第一个线程变成激活的或者选定的线程。下面步骤612中,在 处理器中执行被选择的线程的一的指令。在614步骤,测试程序检查 是否有需要被执行的、被选择线程的其它指令。如果有其它指令,然 后程序返回到步骤612,来执行这个线程的下一个指令。但是如果在614 步骤,被选定的线程没有进一步的指令去运行,然后在步骤616,处 理将询问是否有任何故障出现在选定线程的指令执行期间。\n如果在步骤616中,没有发现计数器或者存储器阵列故障,那么 程序检查是否有需要测试的附加的线程,正如在步骤618中的一样。 如果这样的话,正如在步骤620中的那样,线程选择被编程为选择另 一个线程用来测试指令的执行,如步骤612。但是如果第一线程发生 了一个故障,在630步骤中这个故障被记录,在步骤632中产生一个 信号错误消息。此时,因为处理器已经在一个多线程寄存器或者存储 器发生了一个功能故障,所以在步骤640中可以结束这个测试。在这 里所公开的本发明特征以前,发生了故障的处理器的芯片将被禁止且 客户的计算机操作将出现瘫痪或者发生严重的障碍,即使这个处理器 内的其它线程能够正确的执行,且其他线程的存储单元也能完全的工 作,因为不是所有的线程均被测试。\n用这种方式,图6的流程图代表了几个本发明的特征,这几个本 发明的特征通过确定哪一个特定的线程发生错误,而能够有力的抢救 用户的处理操作。用这种方式,具有多线程寄存器的处理器不需要被 禁止,但是,在发生了错误的多线程寄存器中的指令和数据可能会被 重定向到在相同的或者不同的阵列或寄存器中的其它线程的存储单 元。在步骤702,执行如图5所示的功能测试。如果功能测试在步骤704 的执行没有发现任何故障,在步骤706正常的操作继续运行。但是如 果在步骤704有一个故障被检测到,在步骤714会询问系统来判断是 否有任何剩余的功能的线程。当然,如果没有剩余的功能线程,然后 在步骤716,处理器停止执行并且发出错误的信息。但是如果有其它 的令人满意地完成并且通过了步骤714所询问的功能测试的其它线 程,然后在步骤720,故障的线程被记录,并且在步骤722为此目的产 生一个错误信息。在步骤724,失败线程被通知给操作系统,并且操 作系统会产生合适的响应仅处理功能线程。通过将适当的信号输入到 线程选择330,或者通过关闭该线程转换控制寄存器上的该特定线程 的位,并且然后将这些指令全部路由到另一个线程转换控制寄存器, 来完成上面的处理。在任何情况下,在步骤730,指令可以被执行,只 要它们仅工作在功能线程。\n虽然上面已经描述了本发明的各种具体实施方式,但是应该理解 它们仅仅是示例,并且没有限制作用,其变化也是可能的。这样,本 发明的范围和幅度将不会受上面描述的示例性实施方式中的任何一个 的限制,而是仅应该根据下面权利要求书和其等效去定义。
法律信息
- 2010-11-10
未缴年费专利权终止
IPC(主分类): G06F 11/34
专利号: ZL 01125543.9
申请日: 2001.08.14
授权公告日: 2005.03.30
- 2005-03-30
- 2002-03-06
- 2002-01-02
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有引用任何外部专利数据! |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |