防止固件缺陷干扰逻辑时钟的方法和系统的制作方法

文档序号:6609651阅读:174来源:国知局
专利名称:防止固件缺陷干扰逻辑时钟的方法和系统的制作方法
技术领域
本发明总体涉及固件缺陷。更具体地,本发明针对用于防止固件缺陷干 扰逻辑时钟的计算机实现方法和数据处理系统,以改进系统的可靠性。
背景技术
大多数据处理系统使用用于检测并且可能诊断错误的机制,以及提供从 错误恢复的可能性。通常这两个功能是截然不同的,需要不同的硬件和软件 机制。
在硬件和软件中实现的可靠性、可用性和可维护性(RAS)概念针对防止 或识别系统故障(可靠性)、在故障情况下保持系统运行的能力(可用性)和 以非破坏性的方法修复故障的能力(可维护性)。为了在新产品开发期间诊断 设计错误、在生产时在系统建立期间识别坏的部分以及为了在系统操作时捕 获错误,可在各级系统开发上提出RAS。 RAS还可针对各种类型的故障,包括 系统级设计疏忽、逻辑错误、例如硬件错误的硬故障、或者例如由于外部噪 声或电路故障而在存储器中或数据传送后引起的数据错误的软错误。
在某些情况下,只需要识别已经发生了错误。在其它情况下,需要诊断 错误,即,具体地识别其来源。最后,在某些情况下,希望消除或纠正错误。
在大型可缩放计算机系统中,高可用性取决于检测和隔离故障的能力。 一旦被隔离,故障元件就与系统的其余部分隔开。为了确定根本原因和正确 的恢复或修复动作,必须在故障元件还处于故障状态时从其收集数据,而不 影响机器中的其余工作元件的稳态操作。
可通过问题分析固件来实时分析首次故障数据捕获(FFDC)数据,或将 其传送到远程支持地点并由产品支持分析者来分析。在使用电平敏感扫描设 计(LSSD)锁存器(latch)的设计中,此FFDC通常需要仅对故障元件停止逻 辑时钟,并仅从故障元件中扫描出锁存器的状态。
器值,这需要计时边界和扫描链(chain)的分离。希望在扫描域中具有精细粒
度,以减少许多测试或初始化功能的有效负载。在大型可缩放的多节点计算 机系统中,在系统中所有芯片上的计时边界和扫描链的数目可能非常大(数
千)。由于大量的i/o连接,所以经常在系统中的多个芯片上分配用于这些计
时和扫描链边界的控制,这将需要全部从单芯片或控制器来独立控制1/0连 接。这样,需要系统控制固件来管理分配的计时和扫描控制。系统控制固件 的复杂度使得其倾向于产生缺陷,就像任何其它复杂的软件或固件应用。
如果对于还在运行的机器的某部分中的元件的时钟无意地停止了 ,则将 使得机器的那部分、或甚至整个机器故障。如果在逻辑时钟还在运行时访问 扫描链,则将使得相应元件或整个机器故障。因为在系统控制固件中的缺陷 可能引起不正确地停止时钟或不正确地访问扫描链,所以希望有方法防止这 样的固件缺陷干扰机器中还在运行的元件。
对此问题的其它已知解决方案包括使用具有硬件状态机的专用时钟芯 片,以控制每个时钟域的停止和启动,以及仅在关闭逻辑时钟的情况下向目 标芯片/扫描链提供扫描时钟,或者依靠固件以分别在停止时钟或扫描链之前
明确地确认4企查停止(checkstop)状态或时钟停止状态。
使用专用时钟芯片的已知方法存在多个缺点。首先,在构成机器的芯片 组中有附加的部分数目,这增加了成本并增加了计算建立块所占面积。其次, 它要求在时钟芯片和全部芯片上的所有时钟域和扫描链之间的许多连接,这 再次添加了包装成本和额外的故障的可能点。
如果对于每个扫描链而独立驱动扫描时钟,则具有多个扫描链的芯片必 须在内部连线多个扫描时钟组。因为希望为了芯片级测试而以很快的频率扫 描,所以扫描时钟配线要求在设计中的一些"平衡",因此多个扫描时钟组大 大增加了扫描时钟分配的设计工作。通过对每个扫描链使用分离的扫描使能 (enable)信号和为每个链选通(gate)位于每个芯片中的扫描时钟,可减轻此 问题,但是用于每个链的分离的扫描使能信号显著地增加已经沉重的来自时 钟芯片的连接要求。编码值也可帮助减少连接,但是,这样也减少了同时为 了高效测试和初始化排序而选"^多个扫描链的灵活性。
依靠固件来明确地确认检查停止状态或时钟状态,这不提供对于固件错 误的完整保护。在编码中采用公共练习(common practice )可减少错误的可 能性,但是不会消除它们。并且当固件错误确实引起机器故障时,经常有故 障使得硬件看起来有问题而不是固件,这导致了不正确的诊断和修复动作。

发明内容
说明性实施例的不同方面提供了用于防止固件缺陷干扰逻辑时钟的计算 机实现的方法和数据处理系统。 一个说明性的实施例从用于功能单元的固件
接口接收对于扫描操作的请求。该请求包括扫描链长度值和环(ring)选择。 说明性实施例使用扫描链长度值来产生全局扫描时钟。说明性实施例响应于 环选择被设置为等于1的环选择值和全局时钟使能值被设置为等于0,而将 扫描使能信号的值设置为等于1。通过扫描使能信号来选通全局扫描时钟, 以形成本地扫描时钟。
此外,说明性实施例响应于环选择值被设置为l和全局时钟使能值被设 置为等于l,而将扫描使能信号的值设置为等于0。然后,说明性实施例在寄 存器中生成错误,并生成对固件接口的中断。
另 一个说明性的实施例从用于功能单元的固件接口接收命令以控制一组 逻辑时钟,并且该命令包括下一寄存器值。说明性实施例确定该组逻辑时钟 是否正在运行。说明性实施例响应于当前运行的时钟,而确定下一寄存器值 是否被设置为等于0。下一寄存器值被设置为等于0表示停止时钟,而下一 寄存器值被设置为等于1表示启动时钟。说明性实施例响应于下一寄存器值 被设置为等于0而确定是否将检查停止值设置为等于1。说明性实施例响应 于检查停止值被设置为等于1而停止时钟。
此外,说明性实施例响应于检查停止值被设置为等于0而忽略该命令。 随后,说明性实施例将错误发送到错误寄存器,并生成中断。


在所附的权利要求中阐述了说明性实施例的相信是新颖性特征的特性, 但是当接合附图阅读时,通过参考下面说明性实施例的详细描述,将最佳地 理解说明性实施例的方面以及优选的使用模式、其它目的和优点,其中 图1是其中可实现说明性实施例的代表性处理器芯片; 图2是根据说明性实施例的对称多处理器节点的示例性配置; 图3A-图3H表示根据说明性实施例的多个处理器节点的示例性组合; 图4图解了根据说明性实施例的多功能域中的电平敏感扫描设计(LSSD) 锁存器的计时和扫描;图5A描绘了根据说明性实施例的多功能逻辑单元中的功能计时的示例
性时序图5B图解了根据说明性实施例可独立控制来自时钟控制逻辑的全局时 钟使能信号;
图6是对于根据说明性实施例的多功能逻辑单元的扫描计时的时序图; 图7图解了根据说明性实施例的分离逻辑单元的逻辑时钟和扫描时钟的 独立控制;
图8图解了根据说明性实施例在扫描逻辑单元时无意地引起的危险,同
时对该单元的逻辑时钟仍然运行;
图9图解了根据说明性实施例的多功能单元的时钟运行扫描保护;
图10图解了根据说明性实施例的多功能单元的检查停止时钟停止保护;
图11图解了根据说明性实施例的多功能单元的时钟运行扫描保护操作
的流程图;以及
图12图解了根据说明性实施例的多功能单元的检查停止时钟停止保护 操作的流程图。
具体实施例方式
说明性实施例提供了计算机实现的方法和数据处理系统,以防止固件缺 陷干扰多内核微处理器芯片中的逻辑时钟,从而改善系统稳定性。从故障組 件收集首次故障数据捕获(FFDC)数据,以供诊断,这要求停止逻辑时钟并 经由LSSD扫描而提取锁存器内容,同时系统中的其余操作元件保持运行。在 系统中的所有芯片上分配时钟控制逻辑和扫描控制逻辑,每个具有存储器映 射的寄存器接口,通过系统控制固件操作该寄存器接口。从每个逻辑时钟域 到时钟运行控制逻辑的检查停止指示选择(gate)来自系统控制固件的更新 是否关系到停止逻辑时钟域。为每个逻辑时钟域对扫描控制逻辑指示时钟运 行状态,以选择是否对扫描链准予了固件访问。检测可能潜在地中断正在运 行的逻辑域的不正确的固件动作,阻止该动作,并且通过指示违反(violation) 的状态而向系统控制固件反向报告中断。
图1是其中可实现说明性实施例的代表性内核处理器芯片。处理器芯片 IOO可具有一个或多个处理器内核102。每个处理器内核可简称为内核。处理 器内核可具有多线程能力、检错和恢复功能、多个通用寄存器(GPR)和专用
寄存器(SPR)。
根据说明性实施例,可将处理器内核102连接到二级(L2 )高速緩存104 和非高速緩存单元(NCU) 106。 NCU 106可通过将从处理器内核102接收的 命令、地址和数据放置在存储装置的构造(fabric)总线130上以存储到主存 储器,而处理存储命令。可替换地,这样的存储可以是对于存储器映射的I/O 或寄存器的。,NCU 106可通过将从处理器内核102接收的命令和地址放置在 构造总线130上以便访问存储器或存储器映射I/O或寄存器、以及接收从构 造总线130返回的数据,而处理加载命令。可将对以后容易受到频繁访问的 存储器的访问存储在L2高速緩存104中,以便减少由处理器芯片102执行的 进一步操作的等待时间(latency )。
L2 104可经由可互连到在同一板上的、以及还超出处理器芯片IOO所位 于的板的其它芯片的构造总线130,而类似地提供对其内容的访问。可提供 邻近的、但在芯片外的三级(L3)高速緩存116。管理在处理器内核102和 L3高速緩存116之间的访问的控制在L3高速緩存控制114中。类似地,可 在芯片上提供存储器控制器122和1/0接口 126,以利于分别对总存储器124 和各种I/O集线器128的长等待时间的访问。
对称多处理器(SMP )构造控制118是通过各种附属装置来协调构造总线 130的竟争(contention)的专用装置,并且经由扩展端口 A、 B、 X、 Y和Z120 来提供给SMP拓朴配置。在实施例中示出了 5个扩展端口,但是应理解,为 了获得复杂的多芯片拓朴的不同级,可使用更少或更多的扩展端口。预期5 个端口可向64个芯片提供它们之间的快速指令、数据和时序信号。
普适(pervasive)控制108是存在于芯片上找到的各个处理块的外部、以 及混合在各个处理块内部的电路。通过在每个处理器内核102的方便指令边 界处提供每个处理器内核102的各个GPR和SPR的冗余副本,在普适控制108 的功能中提供对每个处理器内核102上的处理器状态的备份。此外,普适控 制108可帮助检错和将此错误传送到外部支持处理器(服务处理器)110,以由 例如带外(out-of-band)固件执行进一步的动作。应当注意术语"支持处理器,, 和"服务处理器"可互换使用。
普适控制108是用于冗余振荡器112的选通点,并且提供或接收导出的 (derivative)时序信号。应理解,错误或其它条件可从配置中去除一个或 多个冗余振荡器112,并且普适控制108的一个目的在于从冗余振荡器112
中选择更好的时序信号(或容限内的至少一个时序信号),并且选择可经由扩
展端口 120到达的分步编码(step-encoded)信号。
普适控制108还可包含控制状态机,用于响应于来自支持处理器110的 激励而启动和停止时钟、扫描电平敏感扫描设计(LSSD)锁存器和到寄存器 设备的串行通信路径(SCOM)。
图2以处理器节点200的形式并根据说明性实施例,示出了使用图1的 内核处理器芯片的对称多处理器节点的示例性配置。处理器节点200可包含 一个或多个服务处理器202、存储体(memory bank) 204、 I/O集线器210、构 造扩展端口 208和节点外(off-node)构造扩展端口 206。构造扩展端口 208 和节点外构造扩展端口 206为A和B端口 216提供从多芯片模块(MCM) 226 到其它处理器节点上的MCM的连接性。构造端口X、 Y和Z 222与同一处理器 节点220内的MCM 226互连。构造端口 X、 Y、 Z、 A和B与图1中的构造130、 SMP构造控制130和扩展端口 120有关。
此外,通过与图1的存储器控制器122和存储器124之间的连接有关的 连接220来将存储体204连接到MCM 226。每个多芯片模块226可在其硬件 配置方面相同,但是由固件在系统初始化期间配置,以支持不同的系统拓朴 和功能,例如主从功能的使能、或者可缩放多节点SMP系统中的多个节点的 不同组合之间的连接性。
在特定的MCM中,可能发现内核处理器芯片212,其可以是处理器芯片, 如图1的处理器芯片100,还可以是L3高速緩存214,其可以是例如图1的 L3高速緩存116的L3高速緩存。处理器节点200可具有路由到在处理器节 点200上发现的每个芯片的一个或多个振荡器224。在振荡器与功能单元之 间的连接扩展到整个板和芯片,但是为了限制混乱而未在图2中示出。类似 地,应理解,虽然未在图2中示出错综复杂的相互连接,但是在扩展端口 206、 208和到板上的各种芯片的I/O集线器210 (如MCM 266的构造端口 216和 1/0端口 218)之间存在许多这样的相互连接。
根据说明性实施例,图3A-3H描绘了例如图2的处理器节点200的多个 处理器节点的组合。在此例子中,在单板或层300上,存在通过各个处理器 节点302的节点外构造端口 304而连接的8个处理器节点302。节点外构造 扩展端口 304允许不同的处理器节点302将数据和命令传递到层300上的其 它节点。虽然未示出,但是可通过各个处理器节点302的构造扩展端口 306
来互连类似于层300的附加层。
图4图解了根据说明性实施例的多功能域中的电平敏感扫描设计(LSSD) 锁存器的计时和扫描。使用用于平衡电学特性的网格结构,在例如图2的处 理器芯片212的整个芯片上分配网格(grid)时钟402。可从锁相环(PLL)电路 或一些其它类型的稳定振荡器源(如图2的振荡器224)驱动网格时钟402。
扫描控制逻辑404提供全局扫描时钟a-clk和b_clk,其被分配到芯片 上的所有逻辑单元。逻辑单元x 408和逻辑单元y 410代表两个这样的逻辑 单元。扫描控制逻辑404也为逻辑单元x 408和逻辑单元y 410提供独立的 scan—enable信号412,其确定是否将在扫描操作中包括每个相应的逻辑电压 中的锁存器。
时钟控制逻辑414为每个逻辑单元提供独立的全局时钟使能信号416, 其控制是否对每个相应的逻辑单元运行或停止逻辑时钟。
逻辑单元x 408和逻辑单元y 410各自分别包含至少一个逻辑时钟分频 器418或420,其将网格时钟402分频为分离的反相Cl和C2时钟。电平敏 感扫描设计(LSSD)锁存器使用主从触发器(filp—flop )。主L1触发器422 和424具有数据输入和扫描输入。数据输入是通过功能逻辑426或428馈送 的,并利用来自本地时钟分频器418或420的C1时钟而捕获。在与(AND)门 430、 432、 434或436中,对全局扫描时钟a_clk和b_clk 406与各个 scan—enable信号412执行与操作,以形成内部扫描时钟clka和clkb。内部 扫描时钟clka用于捕获由不同的锁存器(在图中未示出)的扫描输出馈送到 主LI触发器422和424的扫描输入。从L2触发器438或440仅仅得到来自 主LI触发器422或424的数据。在或(OR)门422或444中,对本地时钟分频 器418或420的C2输出与内部扫描时钟clkb执行或操作,以捕获从主LI触 发器422或424到从L2触发器438或440中的数据。
扫描控制逻辑404用于通过链接在一起的锁存器而连续移动数据 scan—out到scan_in,而不修改沿此路径的值。时钟控制逻辑414用于使得 可以通过每个机器循环的计算结果来更新启动锁存器。在相同的功能单元中, 这些操作相互排斥。
从固件接口 446驱动扫描控制逻辑404和时钟控制逻辑414。固件接口 446的实现方式在本申请的范围之外,但是可以是工业标准接口,如I2C或 JTAG(羅1149. 1),或者如由在图1的外部服务处理器IIO上运行的带外固
件、或在系统中一个或多个处理器内核(如图l的处理器内核102)上运行 的主机固件使用的本说明性实施例中的专利(proprietary)串行通信(SCOM ) 接口。
图5A描绘了根据说明性实施例的多功能逻辑单元的功能计时的示例性 时序图。逻辑单元可为例如图4的逻辑单元408和逻辑单元410的逻辑单元。 网格时钟(clkg) 502从机器引导序列的初期开始自由运行。固件向例如图4 的时钟控制逻辑414的时钟控制逻辑发出命令,以同时启动用于逻辑单元x 504和逻辑单元y 506的时钟。全局时钟使能信号glb—clk—enable_x 508和 gib—elk—enable-y 510变为激活,这允许例如图4的逻辑时钟分频器418或 420的本地时钟分频器激活它们的时钟输出。如所示的,C2时钟512和514 与clkg 502反相地激活,而Cl时钟516和518与clkg 502同相地激活。根 据是否正对芯片上的某些其它功能单元执行扫描操作,全局扫描时钟 a一clk/b—elk 520可以激活或不激活。但是,不考虑全局扫描时钟a—clk/b—clk 520是否正运4亍,功能单元 scan—enable 4言号 scaruenable-x 522 和 scan—enalbe—y 524为无效的j氐,因此本地扫描时钟clka 526和528以及本 地扫描时钟clkb 5 30和532为无效(inact ive)。由于本地扫描时钟clkb 530 和532为无效,所以C2_b时钟534和536简单地跟随来自本地时钟分频器的 输出的C2时钟512和514。因为如果C1时钟516和518和C2-b时钟534和 536同时都激活,则来自例如图4的功能逻辑426或428的功能逻辑的data-in 将通过例如图4的主Ll触发器422或424的主Ll触发器、和例如图4的从 L2触发器438或440的从L2触发器涌入,使得锁存器仅表现为延迟元件而 非存储器元件,所以Cl时钟516和518必须与C2—b时钟534和536反相。
回到图5A,固件随后向例如图4的时钟控制逻辑414的时钟控制逻辑发 出命令,以同时停止用于逻辑单元x 504和逻辑单元y 506这两者的时钟。 gib—elk —enable — x 538和glb-clk_enable_y 540变为无凌文,如所图解的, 这引起本地时钟分频器使它们的输出542、 544、 546和548无效。同样,C2一b 时钟534和536简单地跟随分频器的输出C2时钟512和514,因此C2—b 550 和C2 —b 552也停止。
图5B图解了根据说明性实施例可独立控制来自时钟控制逻辑的全局时 钟使能信号。全局时钟使能信号可以是例如图4的全局时钟使能信号416的 全局时钟使能信号,而时钟控制逻辑可为例如图4的时钟控制逻辑414的时
钟控制逻辑。固件向时钟控制逻辑发出命令,以仅对逻辑单元X 504启动时
钟。时钟控制逻辑激活gib—clk_enable-x 554,其仅对逻辑单元x 504启动 功能时钟556。然后固件向时钟控制逻辑发出分离的命令以启动对逻辑单元y 506启动时钟,同时保留对逻辑单元x 504运行的时钟。时钟控制逻辑激活 glb-clk — enable-y 558,其对逻辑单元y 506启动功能时钟560。
图6是根据说明性实施例的对于多功能逻辑单元的扫描计时的时序图。 逻辑单元可以是例如图4的逻辑单元408和逻辑单元410的逻辑单元。固件 向例如图4的扫描控制逻辑404的扫描控制逻辑发出命令,以选择用于扫描 的逻辑单元x 602和逻辑单元y 604这两者。扫描控制逻辑激活全局 scaruenable信号scan_enable_x 606和scan—enable_y 608。 然后扫描控制 逻辑激活全局扫描时钟a-clk 610和b-clk 612以通过锁存器扫描链来连续 地移动值。固件包括具有扫描命令的扫描链中锁存器的数目,使得扫描控制 逻辑能够为要通过链移动的位数提供正确数目的a-clk 610和b_clk 612对。 时序图中的间隙614图解了所示的重复图案可继续比图上实际示出的更长的 时间。
使用例如图4的与门430、 432、 434和436的与门,对全局扫描时钟与 每个功能逻辑单元602或604中的scan—enable执行与操作。对于逻辑单元 x 602,由于激活了 scan—enable—x 606,本地扫描时钟clka 6163艮随全局扫 描时钟a-clk 610,而本地扫描时钟clkb 618跟随全局扫描时钟b_clk 612。 因为glb_clk_enable_x 620是无效的,所以来自例如图4的本地时钟分频器 418的本地时钟分频器的CI和C2时钟622是无效的,因此C2_b时钟624跟 随本地扫描时钟clkb 618。类似地,对于逻辑单元y 604,由于激活了 scan—enable-y 608,本地扫描时钟clka 626 3艮随全局扫描时钟a_clk 610, 而本地扫描时钟clkb 628跟随全局扫描时钟b-clk 612。因为 glb-clk-enable-y 630是无效的,所以来自例如图4的本地时钟分频器420 的本地时钟分频器的CI和C2时钟632是无效的,因此C2_b时钟634跟随本 地扫描时钟clkb 628。
在扫描链中移动了所希望的位置数目后,固件将命令发送到扫描控制逻 辑,以终止扫描操作。扫描控制逻辑使得scan—enab 1 e_x 636和scan—enab 1 e_y 638这两者无效。在示例性实施例中,在扫描操作结束后,扫描控制逻辑停 止驱动全局扫描时钟a—elk 610和b-clk 612,由于对于逻辑单元x 602,无
效的scaruenable-x 636将总是强制关闭对于逻辑单元x 602的clka 642和 clkb 644的本地扫描时钟,并且C2"b时钟646跟随clkb 644,所以这与全 局扫描时钟a-clk 640是否保持运行无关。类似地,对于逻辑单元y 604, 无效的scan—enable—y 638将强制关闭对于逻辑单元y 604的clka 648和 clkb 650的本地扫描时钟,并且C2—b时钟652跟随clkb 650。
图7图解了根据说明性实施例的用于分离逻辑单元的逻辑时钟和扫描时 钟的独立控制。固件将命令发送到例如图4的时钟控制逻辑414的时钟控制 逻辑,以仅对逻辑单元x 702启动时钟。时钟控制逻辑激活glb_clk—enable-x 706,其激活逻辑单元x 702内的时钟708,然后固件向例如图4的扫描控制 逻辑404的扫描控制逻辑发送命令,以仅对逻辑单元y 704初始化扫描操作。 扫描控制逻辑激活scan—enable_y 710并驱动经过本地扫描时钟714的全局 扫描时钟712。由于scan—enable—x 716在逻辑单元x 702中无效,所以逻 辑单元x 702不被逻辑单元y 704中的激活扫描操作影响。由于scan—enable一y 718在逻辑单元y 704中无效,逻辑单元y 704不被在逻辑单元x 702中运 行的逻辑时钟影响。
对本领域的技术人员应该显而易见的是如果无意地停止了逻辑单元的 逻辑时钟,则将引起逻辑单元故障。不那么显而易见的是,在图8中所图解 的危险由于无意地尝试扫描逻辑单元而引起,同时逻辑时钟对该单元仍然运 行。可能由于固件错误使得不正确的命令被发送到扫描控制逻辑或时钟控制 逻辑而引起这样的情形。
图8图解了根据说明性实施例在扫描逻辑单元时无意地引起的危险,同 时对该单元的逻辑时钟仍然运行。固件首先将命令发送到例如图4的时钟控 制逻辑414的时钟控制逻辑,以仅对逻辑单元x 802启动时钟。时钟控制逻 辑激活glb_clk_enable_x 806,其激活逻辑单元x 802中的时钟808。然后 固件向例如图4的扫描控制逻辑404的扫描控制逻辑发送命令,以仅对逻辑 单元y 804初始化扫描操作,但是还不正确地包括逻辑单元x 802。扫描控 制逻辑激活scan—enable—y 810并驱动经过逻辑单元y 8O4的本地扫描时钟 814的全局扫描时钟812。但是,因为固件错误还将逻辑单元x802包括在扫 描操作的目标中,所以扫描控制逻辑还激活逻辑单元x 802中的 scan-enable—y 816。这在逻辑单元x 802中引起2个危险。
第一个危险818显示出在从本地时钟分频器输出CI时钟822的同时激活
本地扫描时钟clka 820。如前面所提到的,对主Ll触发器同时激活Cl时钟 822和本地扫描时钟820引起在锁存器中捕获不可预料的值。
第二个危险824显示出对本地扫描时钟clkb 826与C2—b时钟828扭j亍 或操作,这使得在从本地时钟分频器输出Cl时钟830的同时激活C2—b时钟 828。如前所述,如果C1时钟830和C2—b时钟828同时激活,则主L1触发 器和从L2触发器将向下游逻辑涌入和传播不可预料的值。
图9图解了根据说明性实施例的多功能单元的时钟运行扫描保护。例如 图4的时钟控制逻辑的时钟控制逻辑902向所有功能单元以及保护逻辑908 和91(U是供全局时钟使能gib—clk_enable—x 904和gib—elk—enable—y 906, 其中保护逻辑908和910是例如图4的扫描控制逻辑404的扫描控制逻辑912 的部分。例如图4的固件接口 446的固件接口 914通过首先写入在扫描控制 逻辑912中的长度寄存器916来初始化扫描操作,其中状态机918使用首先 写入的长度寄存器916来产生正确数目的全局扫描时钟920。然后固件接口 914将命令寄存器922 (其包含用来识別例如读、写、开始、继续或结束的扫 描操作的类型的命令字段924 )写入状态机918和环选择(ring select ) 926, 其识别将由扫描操作执行操作的扫描链。
环选择字段926可具有用于每个扫描链的专用位,或者可以使用编码值 或位的组合来选择扫描链的多个组合。为了清楚示例,图9仅示出了对应于 例如图4的逻辑单元408和410的功能逻辑单元x和功能逻辑单元y的2个 分离的环选4奪928和930。
保护逻辑908使用用于功能逻辑单元x的全局时钟使能 gib—elk—enable —x 904、以及用于功能逻辑单元x的环选择ring —select一x 928,以根据真值表934确定其是否应该激活用于功能逻辑单元x的 scan—enable scan—enable — x 932。类似地,保护逻辑910使用用于功能逻 辑单元y的全局时钟使能gib —clk-enable-y 906、以及用于功能逻辑单元y 的环选4奪ring-select—y 930,以#_据真值表938确定其是否应该激活用于 功能逻辑单元y的scan—enable scan—enable—y 936。
保护逻辑真值表934用于功能单元x,并且图示了如果ring — select-x 928的输入为0,则不管gib—clk_enable_x 904的输入值是什么, scan—enable-x 932的输出都将为0。但是,如果ring —select_x 928的输入 为1,则scan—enable-x 932的输出只有当glb_clk—enable—x 904的输入是
指示逻辑时钟对于功能单元X不运行的0时才激活,即设置为1。如果
ring —select—x 928的输入是1,并且gib—clk_enable —x 904的输入也是1, 这指示逻辑时钟对于功能单元正在运行,那么,抑制对scan—enable-x 932 的输出,即设置为0,并且向错误寄存器944发信号通知错误940。
类似地,保护逻辑真值表938用于功能单元y,并且图示了如果 ring —select-y 930的输入为0,则不管gib—clk_enable—y 906的输入值是 4十么,scan—enable—y 936的输出老M年为0。 4旦是,如果ring — select—y 930 的输入为1,则scan—enable—y 936的l俞出只有当gib—clk_enable_y 906的 输入是指示逻辑时钟对于功能单元y不运行的0时才激活,即设置为1。如 果ring —select—y 930的输入是1,并且glb—clk—enable_y 906的输入也是 1,这指示逻辑时钟对于功能单元y正在运行,那么,抑制到scan_enable_y 936的输出,即设置为0,并且向错误寄存器944发信号通知错误942。
对于错误的情况,状态机918可能继续或不继续激活指定数目的全局扫 描时钟920。无论怎样,因为扫描启动932和936未激活,即设置为0,所以 全局扫描时钟920没有影响,因此避免了例如图8的危险814和820,并且 进一步防止了故障。
在错误寄存器944中设置的位使得向固件提出中断947。当固件由于尝 试的扫描操作而结束时,将经由中断946和错误寄存器944对其通知因为 对于与特定环选择相关的功能单元的时钟还在运行,所以扫描操作异常中止。 这指示不正确地尝试扫描操作的可能的固件错误。可能的后续固件诊断在本 申请的范围之外。
图10图解了根据说明性实施例的多功能单元的检查停止时钟停止保护。 固件接口 1002向例如图4的时钟控制逻辑406的时钟控制逻辑1004发送命 令,以通过写入全局时钟使能(gib—elk—enable)寄存器1006而对于一个或 多个逻辑单元启动或停止时钟。glb-clk—enable寄存器1006中的每个位驱 动对相应功能单元的全局时钟使能。寄存器位中的"1"对相应的功能单元激 活全局时钟使能,使得逻辑时钟运行;而寄存器位中的"0"对相应的功能单 元使得全局时钟无效,从而停止逻辑时钟。保护逻辑1008和IOIQ根据真值 表1012和1014确定来自固件接口 1002的值是否将^皮写入gib—clk_enable 寄存器1006。 glb_clk-enable寄存器1006可具有对应于多个分离的功能单 元的许多位。为了说明性实施例的清楚,图IO仅示出了对应于例如图4的逻
辑单元408和410的功能存储单元x和功能存储单元y的2个分离位的保护 逻辑1008和1010。
每个功能单元指示作为来自对于相应的保护逻辑1008或1010的 checkstop —x 1016或checkstop—y 1018的冲企查停止的重大错误情形。还向 固件(未示出)报告该重大错误情形,使得固件知道为错误情形搜集首次故 障数据捕获(FFDC),这要求仅对故障的功能单元停止时钟,并读取扫描链。
根据真值表1012,如果glb-clk — enable一x 1020的当前值是1,即指示 对于功能单元x的逻辑时钟已经在运行,则在也存在来自从功能单元x指示 的checkstop—x 1016的检查停止的情况下才允许来自固件接口 1002的命令 将向gib—clb—enable寄存器1006输入的glb_clk—enable—next 1024改变为 0以停止对功能单元x的时钟。类似地,根据真值表1014,如果 gib—clk_enable—y 1022的当前值是1,即指示逻辑时钟已经对于功能单元y 运行,则在也存在根据从功能单元y指示的checkstop—y 1018指示的检查停 止的情况下才允许来自固件接口 1002的命令将向gib—clb—enable寄存器 1006输入的glb-clk一enable-next 1026改变为0以停止对功能单元y的时 钟。换而言之,如果功能单元已经指示灾难性的检查停止错误1028或1030, 则保护逻辑1008和1010将只允许固件对于该功能单元停止时钟。这防止固 件错误对于运行的、无故障的功能逻辑单元不正确地停止逻辑时钟,其可能 引起其他的故障。
如果固件接口 1002尝试写gib—clb—enable寄存器1006,以停止没有指 示来自checkstop—x 1016或checkstop—y 1018的检查停止的逻辑单元的时 钟,则保护逻辑1008和1010将不关闭相应的gib—elk—enable 1020或1022 位,并且将指示到错误寄存器1032的相应的错误1028或1030。
错误寄存器1032中设置的位使得向固件提出中断1034。在固件尝试写 glb_clb—enable寄存器1006之后,将经由中断1034和错误寄存器1032向 固件通知因为对于未指示任何灾难性故障的正在运行的功能单元尝试停止 逻辑时钟,所以操作异常中止。这指示不正确地尝试停止对错误的功能单元 的时钟的可能的固件错误。可能的后续的固件诊断在此申请的范围外。
在说明性实施例中,如果glb — clk—enable—y 1020和1022是0,即指示 对于相应的逻辑单元已经停止了逻辑时钟,则保护逻辑1008和1010允许来 自固件接口 1002的命令将glb_clk—enable—next 1024和1026写为0或1,
即分别为停止或启动逻辑时钟。因为在说明性实施例中,对于已经指示灾难 性故障的逻辑单元启动时钟,不会引起额外的逻辑故障,所以不需要在这方 面的保护。
但是,替代实施例(在图10中未示出)可能响应于固件接口 1002被设 置等于1、 glb_clk_enable 1020和1022被设置等于0 (指示对于相应的功 能单元的逻辑时钟已经停止),容易地防止启动时钟,并且通过将checkstop-x 1016或checkstop_y 1018设置为等于1而从相应的功能单元指示突难性的 故障。换言之,如果希望这样的保护,则替代实施例可以通过将 glb-clk一enable-next 1024和1026设置为等于0,而容易地防止对于故障的 功能单元启动时钟。
如果glb-clk—enable 1020和1022为1,指示对于相应的逻辑单元逻辑 时钟已正在运行,则因为不会改变对于相应的逻辑单元的逻辑时钟的状态, 所以保护逻辑1008和1010允许来自固件接口 1002的命令将gib—clb—enable 寄存器1006写为1。
因为可能存在想要停止对于正常功能单元的时钟的情况,比如重启整个 计算机,所以说明性实施例实现超权(override)(在图10中未示出),其中 固件可禁用保护逻辑1008和1010,以允许停止时钟,而不考虑来自 checkstop—x 1016或checkstop_y 1018的指示停止。只有系统控制固件而 不是主机固件才能禁用保护逻辑1008和1010,并且需要比较不易受到固件 错误的影响的显式(explicit)协议。
图11图解了根据说明性实施例的多功能单元的时钟运行扫描保护操作 的流程图。当操作开始时,例如图4的固件接口 446的固件接口通过首先对 例如图9中的长度寄存器916的长度寄存器写入扫描链值而开始扫描操作(步 骤1102)。然后固件接口写入例如图9中的命令寄存器922的命令寄存器(步 骤1104)。命令寄存器包含识别例如读、写、开始、继续或结束的扫描操作 的类型的命令字段、以及识别将由扫描操作执行操作哪个扫描链的环选择字 段。响应于来自步骤1104的、写入到命令寄存器的命令,例如图9的状态机 918的状态机使用长度寄存器中的扫描链值,来生成正确数目的全局扫描时 钟(步骤1106 )。
例如图9的保护逻辑908的保护逻辑使用来自例如图4的时钟粒制414 的时钟控制逻辑的全局时钟使能、以及来自在步骤1104中所写的命令寄存器
的环选择,来确定是否应该激活用于特定功能单元的scan-enable信号(步 骤110S)。保护逻辑确定环选择是否为0 (步骤1110)。如果环选择被设置为 1,则保护逻辑确定全局时钟使能是否被设置为0 (步骤1112)。如果全局时 钟使能被设置为0,则通过将scan—enable信号值设置为1而激活 scan—enable信号(步骤1114),并且完成扫描操作,此后终止操作。通过扫 描使能信号来选通全局扫描时钟,以形成本地扫描时钟,如图5的本地扫描 时钟clka 526和528以及本地扫描时钟clkb 530和532。
如果在步骤1110,环选择被设置为0,则因为对于扫描操作不选择链, 所以则不激活scan-enable信号(步骤1116),而后操作终止。如果在步骤 1112,全局时钟使能被设置为1,则保护逻辑强制或超权使scan_enalbe信 号为0 (步骤1118)。保护逻辑生成错误寄存器中的错误位(步骤1120),其 使得扫描控制逻辑生成对固件的中断(步骤1122),而后操作终止。当固件 通过尝试的扫描操作而结束时,将经由中断向固件通知因为逻辑时钟正对 于与特定的环选择相关联的功能单元运行,所以扫描操作异常中止(abort)。 这指示不正确地尝试扫描操作的可能的固件错误。
图12图解了根据说明性实施例的多功能单元的检查停止时钟停止保护 操作的流程图。当操作开始时,例如图IO的固件接口 1002的固件接口向例 如图4的时钟控制逻辑406的时钟控制逻辑1004发送命令,以通过对例如图 10的全局时钟使能寄存器1006的全局时钟使能寄存器写入而对于一个或多 个逻辑单元启动或停止时钟(步骤1202 )。例如图10的保护逻辑1008的保 护逻辑确定来自固件接口的值是否将被写入全局时钟使能寄存器(步骤 1204 )。
保护逻辑确定所接收的命令是否为来自系统控制固件的超权以绕开保护 逻辑并停止时钟(步骤1206 )。因为可能存在想要停止对于正常功能单元的 时钟的情况,比如重启整个计算机,所以操作的一个方面实现超权,其中系 统控制固件可禁用保护逻辑,以允许停止时钟,而不考虑检查停止指示。为 了保持保护逻辑的效力,所述超权需要不易于由于固件错误而意外执行的特 定协议。如果命令是来自系统控制固件的、停止时钟的超权,则时钟停止(步 骤120S),而后操作终止。
如果在步骤1206,命令不是来自系统控制固件的超权,则保护逻辑确定 逻辑时钟是否已经在运行(步骤1210)。如果逻辑时钟尚未运行,并且来自
固件接口的命令是要启动或者停止时钟,则保护逻辑将全局时钟使能设置为 适当的状态,并发送命令(步骤1212),而后操作终止。对于已经指示突难
性错误的逻辑单元启动时钟不会引起额外的逻辑故障;在此方面不需要保护。 如果在步骤1210,逻辑时钟已经在运行,则保护逻辑确定来自固件接口的命 令是否是写入O (操作1214)。如果命令是写入l,则因为启动时钟命令不会 改变逻辑时钟的状态,所以将命令设置为启动时钟(步骤1216),而后操作 终止。
如果在步骤1214,来自固件接口的命令是写入0,则确定检查停止是否 被设置为1(步骤1218)。如果检查停止被设置为1,则停止时钟(步骤1220 ), 而后操作终止。如果在步骤1218,;险查停止被设置为0,则忽略来自固件接 口的停止时钟的命令(步骤1222 )。然后向错误寄存器发送错误(步骤1224 ), 并且,保护逻辑生成对固件接口的中断(步骤1226 ),而后操作终止。
因此,说明性实施例提供了计算机实现的方法和数据处理系统,以防止 固件缺陷干扰多内核微处理器芯片中的逻辑时钟,从而改善系统稳定性。从 故障组件收集首次故障数据捕获(FFDC)数据,以供诊断,这要求停止逻辑 时钟并经由LSSD扫描而提取锁存器内容,同时系统中的其余操作元件保持运 行。在系统中的所有芯片上分配时钟控制逻辑和扫描控制逻辑,每个具有存 储器映射的寄存器接口,通过系统控制固件操作该寄存器接口。从每个逻辑 时钟域到时钟运行控制逻辑的检查停止指示选择(gate)来自系统控制固件 的更新是否关系到停止逻辑时钟域。为每个逻辑时钟域对扫描控制逻辑指示 时钟运行状态,以选择是否对扫描链准予了固件访问。检测可能潜在地中断 正在运行的逻辑域的不正确的固件动作,阻止该动作,并且通过指示违反的 状态而向系统控制固件反向报告中断。
本发明可采取全部硬件实施例、全部软件实施例或包括硬件和软件元素 的实施例的形式。在优选实施例中,以软件实现本发明,所述软件包括但不 限于固件、常驻软件、微码等。
此外,说明性实施例可采用来自提供程序代码的计算机可用或计算机可 读介质的计算机程序产品的形式,以由计算机或者任何指令执行系统使用或 结合它们使用。为此描述的目的,计算机可用或计算机可读介质可为任何有 形设备,其可以容纳、存储、通信、传播或传输程序,以由指令执行系统、 设备或装置使用或结合它们使用。
所述介质可为电、磁、光、电磁、红外或半导体系统(或设备或装置) 或传播介质。计算机可读介质的例子包括半导体或固态存储器、磁带、可拆
卸计算机盘、随机存取存储器(RAM)、只读存储器(R0M)、硬磁盘和光盘。 光盘当前的例子包括致密盘只读存储器(CD-ROM)、致密盘读/写(CD-R/W) 和歸。
适于存储和/或执行程序代码的数据处理系统将包括通过系统总线而直 接或间接耦接到存储器元件的至少 一个处理器。存储器元件可包括在实际执 行程序代码期间应用的本地存储器、大容量存储器和提供至少某些程序代码 的暂时存储以便于减少在执行期间必须从大容量存储器检索代码的次数的高 速緩冲存储器。
输入/输出或1/0装置(包括但不限于键盘、显示器、定点装置等)可直 接或通过中间I/O控制器耦接到系统。
网络适配器可连接到系统,使得数据处理系统能够通过中间私有或公共 网络而耦接到其它数据处理系统或远程打印机或存储装置。调制解调器、电 缆调制解调器和以太网卡正是网络适配器的一些当前可用类型。
为了说明和描述的目的,已经提出了本发明的描述,并且不是想要穷举 或限于所公开的形式的本发明。对于本领域的技术人员很多修改和变换将是 明显的。选择并描述实施例以最好地解释本发明的原理、实践应用,并且使 得其他本领域的技术人员能够理解具有适用于预期的使用目的的各种修改的 的各种实施例的本发明。
权利要求
1.一种防止固件缺陷干扰逻辑时钟的计算机实现的方法,所述计算机实现的方法包括从用于功能单元的固件接口接收对于扫描操作的请求,其中所述请求包括扫描链长度值和环选择;使用所述扫描链长度值来产生全局扫描时钟;以及响应于所述环选择被设置为等于1的环选择值和全局时钟使能值被设置为等于0,将扫描使能信号的值设置为等于1,其中通过所述扫描使能信号来选通所述全局扫描时钟,以形成本地扫描时钟。
2. 如权利要求1所述的计算机实现的方法,还包括 响应于环选择值被设置为等于0,将扫描使能信号的值设置为等于0。
3. 如权利要求1所述的计算机实现的方法,还包括 响应于环选择值被设置为1和全局时钟使能值被设置为等于1,将扫描使能信号的值设置为等于0;在寄存器中生成错误;以及 生成对于固件接口的中断。
4. 如权利要求1所述的计算机实现的方法,其中所述请求是对于多个功 能单元的多个请求,并且其中对于多个功能单元中的每个功能单元独立地提 出所述多个请求中的每个请求。
5. —种防止固件缺陷干扰逻辑时钟的计算机实现的方法,所述计算机实 现的方法包括从用于功能单元的固件接口接收用来控制一组逻辑时钟的命令,其中所 述命令包括下一寄存器值;确定所述一组逻辑时钟是否正在运行;响应于时钟正在运行,确定所述下一寄存器值是否被设置为等于0,其 中所述下一寄存器值被设置为等于0指示停止时钟,并且其中所述下一寄存 器值被设置为等于1指示启动时钟;响应于所述下一寄存器值被设置为等于0,而确定检查停止值是否被设 置为等于l;以及响应于所述检查停止值被设置为等于1,而停止时钟。
6. 如权利要求5所述的计算机实现的方法,还包括 响应于所述检查停止值被设置为等于0,而忽略所述命令; 将错误发送到错误寄存器;以及生成中断。
7. 如权利要求5所述的计算机实现的方法,还包括 响应于所述下一寄存器值被设置为等于1,而发送用来启动时钟的指令。
8. 如权利要求5所述的计算机实现的方法,还包括 响应于时钟最初被停止,而确定所述下一寄存器值是否被设置为等于1; 响应于所述下一寄存器值被设置为等于1,而发送用来启动时钟的指令;以及响应于所述下一寄存器值被设置为等于0,而发送用来停止时钟的指令。
9. 如权利要求5所述的计算机实现的方法,其中所述命令是来自系统控 制固件的超权命令,并且其中所述超权命令立即停止时钟。
10. 如权利要求5所述的计算机实现的方法,其中所述命令是对于多个 功能单元的多个命令,并且其中对于多个功能单元中的每个功能单元独立地 提出所述多个命令中的每个命令。
11. 一种凄史据处理系统包括 总线系统;连接到所述总线系统的通信系统;连接到所述总线系统的存储器,其中所述存储器包括一组指令;以及 连接到所述总线系统的处理单元,其中所述处理单元执行所述一组指令, 以从用于功能单元的固件接口接收对于扫描操作的请求,其中所述请求包括 扫描链长度值和环选择;使用所述扫描链长度值来产生全局扫描时钟;以及 响应于所述环选择被设置为等于1的环选择值和全局时钟使能值被设置为等 于O,将扫描使能信号的值设置为等于1,其中通过所述扫描使能信号来选通 所述全局扫描时钟,以形成本地扫描时钟。
12. 如权利要求11所述的数据处理系统,其中所述数据处理系统执行进 一步的指令,以响应于所述环选择值被设置为0而将扫描使能信号的值设置 为等于0。
13. 如权利要求11所述的数据处理系统,其中所述数据处理系统执行进一步的指令,以将扫描使能信号的值设置为等于0;响应于所述环选择值被 设置为1和所述全局时钟使能值被设置为等于1,而在寄存器中生成错误;以及生成对于固件接口的中断。
14. 如权利要求11所述的数据处理系统,其中所述请求是对于多个功能 单元的多个请求,并且其中对于多个功能单元中的每个功能单元独立地提出 所述多个请求中的每个请求。
15. —种数据处理系统包括 总线系统;连接到所述总线系统的通信系统;连接到所述总线系统的存储器,其中所述存储器包括一组指令;以及 连接到所述总线系统的处理单元,其中所述处理单元执行所述一组指令, 以从用于功能单元的固件接口接收用来控制一组逻辑时钟的命令,其中所述 命令包括下一寄存器值;确定所述一组逻辑时钟是否正在运行;响应于时钟 正在运行,确定所述下一寄存器值是否被设置为等于0,其中所述下一寄存 器值被设置为等于0指示停止时钟,并且其中所述下一寄存器值被设置为等 于1指示启动时钟;响应于所述下一寄存器值被设置为等于0,而确定检查 停止值是否被设置为等于1;以及响应于所述检查停止值被设置为等于1,而 停止时钟。
16. 如权利要求15所述的数据处理系统,其中所述数据处理系统执行进 一步的指令,以响应于所述检查停止值被设置为等于0,而忽略所述命令; 将错误发送到错误寄存器;以及生成中断。
17. 如权利要求15所述的数据处理系统,其中所述数据处理系统执行进 一步的指令,以响应于所述下一寄存器值被设置为等于1,而发送用来启动时钟的指令。
18. 如权利要求15所述的数据处理系统,其中所述数据处理系统执行进 一步的指令,以响应于时钟最初被停止,而确定所述下一寄存器值是否被设 置为等于l;响应于所述下一寄存器值被设置为等于1,而发送用来启动时钟 的指令;以及响应于所述下一寄存器值被设置为等于0,而发送用来停止时 钟的指令。
19. 如权利要求15所述的数据处理系统,其中所述命令是来自系统控制 固件的超权命令,并且其中所述超权命令立即停止时钟。
20. 如权利要求15所述的数据处理系统,其中所述命令是对于多个功能单元的多个命令,并且其中对于多个功能单元中的每个功能单元独立地提出 所述多个命令中的每个命令。
全文摘要
提供了用于防止固件缺陷干扰逻辑时钟的计算机实现的方法和数据处理系统。响应于固件接口请求对功能单元的扫描操作,只有在停止对该功能单元的逻辑时钟的情况下,保护逻辑才允许对该功能单元激活扫描使能,否则不激活扫描使能、指示错误并且给出对固件的中断。同样,响应于来自固件接口、用来停止对功能单元的逻辑时钟的命令,只有在功能单元已经指示灾难性错误时,保护逻辑才允许停止对于该功能单元的时钟,否则不停止时钟、指示错误并且给出对固件的中断。
文档编号G06F11/36GK101114254SQ200710109548
公开日2008年1月30日 申请日期2007年6月25日 优先权日2006年7月26日
发明者托拜厄斯·韦贝尔, 斯科特·B·斯沃尼, 沃尔特·尼克劳斯, 董景隆, 迪特玛·施穆恩坎普, 阿道夫·马滕斯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1