外围设备互连总线器件层上的差错隔离的诊断方法和系统的利记博彩app

文档序号:7560841阅读:214来源:国知局
专利名称:外围设备互连总线器件层上的差错隔离的诊断方法和系统的利记博彩app
技术领域
本发明一般地涉及一种用于诊断在硬件中的差错的方法和系统,更具体涉及一种用于在外围设备互连(PCI)总线上的器件中的差错的方法和系统。
背景技术
硬件预测技术用于预测硬件的操作。硬件预测器可以被实现为一种有限状态机器,它在给定一些输入比特及其内部状态时输出特定比特的未知值的预测。
用于预测的逻辑一般工作在两种模式中。第一种模式被称为“预测模式”(诸如它接受输入和产生输出),第二种模式被称为“更新模式”(诸如它接受输入和更新它的过去的记录)。
因为误预测浪费功率和周期,因此期望避免它们。为了最小化这个问题,已经开发了联合预测器(Alloyed Predictor)。它们依赖于分支预测的全局历史和本地历史。这有助于减少误预测的数量。
在PCI结构中,主方或从方可以产生差错。这些差错的一些在本质上是严重的,诸如奇偶校验差错,它可能导致产生诸如不可屏蔽的中断(NMI)的严重中断,进一步导致系统的关闭。
存在其他的可以引起产生NMI的信号。例如,在事务处理阶段的目标异常中止可以导致产生NMI。这产生了精确定点在事务处理阶段引起问题的器件的需要。
但是,在本发明之前,没有方法可以基于联合预测来使用布尔逻辑而不是基于误预测的加权来精确定点故障器件。相反,传统的方法需要历史表格或图案历史表格,因此导致硬件和系统的复杂性增加。
而且,在传统的方法中,操作系统(OS)不能根据差错的严重性来采育必要的行动。

发明内容
考虑到传统方法和结构的上述和其他的问题、缺陷和不足,本发明的一个典型目的是提供一种可以根据联合预测使用布尔逻辑精确定点故障器件的方法和结构。
另一个目的是提供一种不需要历史表格或图案历史表格的方法和结构,因此导致降低对于硬件的要求。
另一个目的是提供一种其中OS可以根据差错的严重程度采取任何必要的行为的方法和系统。
在本发明的第一个方面,一种监视具有成对的参与者的总线的方法(和系统),包括在第一和第二参与者之间的事务处理期间检测问题;并确定哪个参与者对于所述问题有错误或是否所述问题包括系统总线问题。
利用本发明的唯一和不明显的特征,可以使用基于联合预测的布尔逻辑而不是基于误预测的加权来精确定点故障器件。另外,这种方法不需要历史表格(诸如图案历史表格),因此导致缩小的硬件。另外,本发明允许OS根据差错的严重性采取任何必要的行动。
在本发明中,一种根据PCI总线规范基于监视器的方法用于检测是否符合了PCI总线约束条件。最好使用用于描述适当的行为的硬件描述语言(HDL)来开发监视器,并且最好使用环境或代理来实现监视器。
如果遵守在代理控制下的约束条件,则代理产生一个正确信号,并且如果它产生错误信号,则已经违反了PCI总线约束条件。存在基于监视器的方法应该履行的其他标准。
即,系统必须返回空闲状态,这有助于发现死锁状态。另外,在单个事务处理期间不应当改变终止类型,这可以有助于检查是否代理可以以信号表示在一个周期中的目标异常中止,并且随后在事务处理结束之前在下一个时钟周期中返回一个重试。


通过参照附图详细说明本发明的优选实施例,本发明的上述和其他目的、方面和优点将会变得更好明白,其中图1图解了其中使用本发明的示范的上层环境100;图2图解了按照本发明的架构200。
图3图解了按照本发明的处理300的顶层流程图;图4图解了按照本发明的图2的架构200的一部分(子集);图5图解了按照本发明的图2所示的器件对信息寄存器240的示范逻辑流程500;图6A图解了按照本发明的图2所示的全局信息寄存器250中提供的表格600;更具体而言,图6A示出了三个PCI器件1、2和3的事务处理的可能组合(例如6),其中这些器件的第一个是主方,第二个器件是从方;图6B图解了表格650,它示出了在总线上发生的主-从事务处理的各种组合;图6C图解了一个表格,其中与单个事务处理不同,根据几个事务处理来进行差错检查诊断。
图7图解了按照本发明的在主-从组合之间的事务处理的逻辑流程700;图8图解了按照本发明的、用于在总线上的器件“1”的处理800的流程图;图9图解了按照本发明的逻辑900;图10图解了按照本发明的逻辑1000;图11图解了捕获在总线(例如PCI总线)上的目标器件的地址;图12图解了按照本发明的用于确定是否已经违反协议的处理1200的流程图;图13图解了按照本发明的用于确定是否已经违反了另一个协议的处理1300的流程图;图14图解了按照本发明的用于图13的方法的处理1400的流程图;图15图解了用于在其中并入本发明的示范硬件/信息处理系统1500;和图16图解了按照本发明的用于存储方法的程序的步骤的信号承载媒体1600(诸如存储介质)。
具体实施例方式
现在参照附图,具体是图1-16,其中示出了按照本发明的方法和结构的优选实施例。应当注意,为了读者的理解和清楚,在附图中使用来标注一个特征的附图标号将在全部附图中使用来图解相同的项目。
图1示出了本发明的方法和环境的高层架构100,包括监视器110和经由CPI总线140被链接在一起的多个代理(例如第一和第二代理)120、130。每个代理可以包括一个或多个PCI器件115。所述两个监视器代理120、130被建立来负责检查在它们的监督下由器件遵守的PCI约束条件。
诊断逻辑125、135存在于每个环境(诸如代理120、130)中,并且将按其操作模式控制故障器件或任何其他与总线相关联的问题。
图1中的虚线(未标注)用于在PCI器件115和诊断逻辑125、135之间的GNT信号、DEVSEL信号、总线差错信号、PCI总线协议信号等。
因此,建立两个监视器代理120、130,它们负责检查在它们的监督下由器件遵守的PCI约束条件。
图2示出了整体的系统架构200,并且在图3的方法300的流程图中示出了由架构200遵守的处理。
图2的架构200包括器件对(device pair)检测器230(图5中被示出,并且下面进一步详细讨论)、器件对信息寄存器240(图5中被示出,并且下面进一步详细讨论)、差错检测器逻辑260(图7中被示出,并且下面进一步详细讨论)、全局信息寄存器250(图8中被示出,并且下面进一步详细讨论)。
在图2中,注意操作系统初始化系统。而且,注意对于PCI总线140(具有器件对参与者,其中一个器件是主方,另一个器件是从方)的一个问题是可以从总线140直接读出主地址。但是,不能从总线140直接读取目标地址。
因此,在图2中,左上方框(例如方框210)被提供作为用于获得目标器件信息(诸如软件和硬件)(这个操作在下面参照图11而进一步详细地被说明)的方法/装置。目标(诸如从器件)在总线上提供的所有内容是地址。
因此,地址必须被映射到实际的目标器件(诸如从器件)。这样的操作通过方框210被执行,并且这个操作不能没有来自操作系统的帮助(例如,输入)而被执行。应当注意在方框210中被标为“S/W”的软件是图11中所示的目标映射软件1110,并且被标注为“H/W”的硬件是门阵列1120。基本上,软件必须建立门阵列1120,以便当器件地址出现时,门阵列1120可以指示这是哪个器件。因此,一旦已经建立了软件,则在此没有另外的软件涉及。
然后目标信息被输入到从事事务处理的器件对检测器230。器件对检测器230也接收到主地址(诸如从PCI总线140直接接收)。
然后器件对检测器230执行“与(AND)”运算(即这在下面参照图5被进一步详细说明)。
器件对检测器230随后向器件对信息寄存器(硬件)240和向全局信息寄存器(H/W-硬件)250提供输出。注意图5也图解了器件对寄存器240。即,“与”网络在图5的左手侧,而图5的右手侧示出了器件对信息寄存器240。
全局信息寄存器250也接收VHDL(极高速集成电路硬件描述语言)代码,用于使用基于监视器的方法来确定对协议的违反。为了本申请的目的并且如上所述,“基于监视器的方法”表示使用外部代理来监视系统或子系统的操作。
如图所示,这些信号作为差错信号被输入到寄存器250。这些差错信号被示出在图6A中。即图6A的寄存器240的列a、b和c图解了了差错信号馈入的位置。因此,图6A示出了三个PCI器件1、2和3的事务处理的可能组合(例如6个),其中这些器件的第一个是主器件,第二个器件是从器件。因此,图6A的最左列指定哪个器件对正在产生差错。
即,在第一行中,器件1是主器件,器件2是从器件,在第二行中,器件1的主器件,器件3是从器件,等等。列(例如a、b和c)表示可能的差错。下面进一步详细描述差错的类型(如,目标异常中止、主异常中止、中断信号、PERR(例如奇偶校验差错),等等)。
器件对检测寄存器240将指示哪一行正在被检查(例如哪个是主方和哪个是目标/从方)。对于上述列出的每个差错,为其提供了列(例如a、b、c、d、e等之一)。因此,差错的类型被插入到对应的列中。因此,如果差错为高(例如为“1”),则知道该器件对有问题。因此,在第一行中的列a中的“1”可以指示在1-2器件对中发生的目标异常中止差错。
更详细地检查差错信号,图6B示出了一个表格,其中示出了不同的组合。对于用于1-2和1-3的组合的图6B的行1,结论是如果在这两个器件对中发生差错,则因为1是对于两者公共的,则它必须是其中具有差错的主方。应当注意,如果仅仅存在一个事务处理。则仅仅涉及一个器件对。如果检查一组事务处理,则可以涉及多个器件对。
因此,现在返回图2,器件对信息寄存器240接收总线差错信号和随后向差错检测逻辑260(下面参照图7更详细地说明)提供输入。差错检测逻辑260根据器件对信息信号检测差错,并且向逻辑运算器件270提供输入。
逻辑运算器件270也接收全局信息寄存器信号,并且执行“与”运算以隔离故障器件。
逻辑运算器件270随后提供一个输出,它表示关于故障器件的信息。
本发明的方法现在转向图3,将说明本发明的方法300。
首先,在步骤310,监视总线信号以检查总线操作。
在步骤320,确定是否符合PCI约束条件。如果符合PCI约束条件(例如在步骤320中的“是”),则处理返回步骤310。
如果不符合PCI约束条件(例如“否”),则处理继续到步骤330,在此联系诊断逻辑(例如,图1中的125、135),因此确定差错的类型和向在事务处理中涉及的器件(例如主器件或目标器件)精确定点所述差错。这是在本发明中的关键步骤。即,通过使用所述约束条件和将它们对应于适当类型的差错(例如在寄存器中的列),可以识别和随后定位差错类型。
在步骤340,差错信息被发送到操作系统。
处理在步骤350结束,此时,执行必要的行为来校正差错。这样的必要行为可以包括向处理器提供中断,它可以随后调用适当的差错处理软件。例如,所述系统可以被指令来故障恢复(fail-over)到另一个硬件器件,并且/或者可以请求维护电话来替换误操作器件。
诊断逻辑125、135的设计在上述的问题的环境中,设计诊断逻辑125、135很重要。结果,对用于信息的信号的选择起到重要的作用。所述逻辑基于联合预测方法,并且被示出在图4的配置400中。
图4示出了从器件对检测器230向全局信息寄存器250和向收集比特的器件对信息寄存器240提供的器件对信息信号。来自寄存器240(通过差错检测逻辑260)和250的信号被提供到对应于逻辑运算器件270的确定逻辑,以确定“接受”或“不接受”。
在图4中,假定是所有的信号是可以获得的,并且所有的事务处理涉及PCI(总线)桥。最好在事务处理在进行时捕获差错信号。这有助于定位主-从组合,所述主-从组合引起最大数量的差错。所述方法将有助于精确定点精确的主-从对,而不是仅仅一个器件。而且,它将有助于确定那种类型的操作(诸如总线读取、总线写入或状态信息传送)引起最大数量的差错。关于这种方法,存在一些技术问题,包括因为将从从方产生一些信号因此当事务处理开始时如何产生器件对信息、如何知道那个器件是作为主方或从方的故障器件、在PCI总线上有诸如基本结构或定时问题的其他问题吗。本发明以最佳的方式处理这些问题的每个,如下所述。
图5示出了器件对信息寄存器240的操作。
如图5所示,器件对信息寄存器240使用两种类型的信号来用于它的输入(例如主方和从方)。主方仲裁总线的所有权是公知的。仲裁向主方断言(assert)一个准许(GNT)信号,授权它驱动总线。由目标发出被称为“DEVSEL”的信号,由此确认它对于事务处理阶段已经准备好。
假定在监视器代理下存在器件1、2和3,不确定哪个是主器件和哪个是从器件。在此,M1、M2和M3表示为GNT信号,并且S1、S2和S3被表示为DEVSEL信号。信号被如图5所示的与门510进行“与”运算,以便获得关于在事务处理中涉及的器件对的信息。
关于在主从组合之间的事务处理期间产生差错信号的信息可以被存储在寄存器240中。因此,如上所述,假定分别监视三个差错信号a、b和c,寄存器240将如图6A所示出现。如果断言一个差错信号,则将登记一个“1”,否则将登记一个“0”。现在,考虑每个寄存器的列(a),在图6B的表格中给出可能的组合。
如上所述,依赖于应当监视哪个信号,用于器件对信息寄存器240的差错信号可以是目标异常中止(它是当TRDY未被断言、STOP被断言和DEVSEL被断言时被产生的)、主器件异常中止、中断信号和PERR。
现在,可以观察到情况(i)、(iv)、(vi)和(xi)是伪冗余的,这仅仅告知器件‘1’是故障器件。类似地,情况(iii)、(v)、(x)和(xii)给出关于器件2的相同信息,情况(vii)、(ix)、(xiii)和(xv)提供器件3的相同信息。因此,可以使用这些情况的任何一个。而且,情况(ii)、(Vii)和(xiv)不提供任何附加信息。因此,图7示出了如何可以处理它们。
图7示出了差错检测逻辑260,它在示范的配置中包括多个或门(OR gate)2601的排列,其中每个接收第一和第二输入,并且向与门(AND gate)2602提供输出。与门对于其输入执行与运算,因此输出总线差错信号的一种类型差错(例如ERR1(a)等)。注意在器件对1+2和1+3之间的差错事务处理将产生由“1”指示的差错,据此指示对于以器件1为成员的一些器件对的差错。
现在,差错必须被精确定点到主方或目标。对于这个操作,使用来自全局信息寄存器250的输入。
在全局信息寄存器250中,设计和寻址方案与用于器件对信息寄存器240的相同,除了取代将是总线协议信号的差错信号的设计和寻址方案。如果违反了任何约束条件,则“1”将因此被登记,否则将登记‘0’。在此的关键是协议的选择。协议对应于被监视的差错信号,因为它有助于加强结论。
图8中示出用于确定具体故障器件(在这种情况下的器件‘1’)的方法800的故障诊断流程图。
现在,假定在器件3和器件1之间没有事务处理,它暗示‘MS1-MS3’变低。即使‘MS1-MS2’为高,‘ERR1’将保持低,据此提供关于差错的错误信息。而且,如果‘ERR1’为高,则不确定是否它是主问题或目标问题。因此,为了克服这些限制,提供了全局信息寄存器250,它最好具有关于在器件之间的事务处理期间的协议的附加信息。因此,一旦已经识别了差错,则现在所述主方或目标必须根据在器件对中的器件对于协议的违反而被识别为故障方,于是使用全局信息寄存器250。
全局信息寄存器250的设计和操作全局信息寄存器250的设计和寻址方案与器件对信息寄存器240的类似。一个例外是取代在寄存器240中的差错信号而使用总线协议信号。如果违反了任何约束条件,则对于该违反将登记‘1’,否则将登记‘0’。一种重要方面是协议的选择。协议对应于要被监视的差错信号,因为它有助于加强结论。因此,在给出多义性问题的情况下,GIR 250有助于确定是否故障方是主方或目标/从方。如果它是与主方或目标/从方两者有关的总线问题,则GIR 250将同样进行这样的声明。在图8的方法800中提供了用于确定具体故障器件(在这种情况下的器件‘1’)的故障诊断流程图。
具体上,图8表示对于一个器件执行的步骤的流程图,所述步骤用于测试是否器件1是问题/具有差错(例如是故障方)。对于连接到总线的其他器件执行其他类似的流程图,以便测试是否对于那些器件有问题/差错驻留。因此,如果三个器件连接到总线,则将并行执行类似于图8的三个流程。
在方法800中,一般,在流程图的右手侧的步骤指示知道故障驻留在哪里(例如知道差错存在于目标和主方的具体的一个中),而左手侧指示不知道故障存在于目标和主方具体哪一个中。
在步骤810中,获得信号(例如来自图7的“ERR1”)。注意如图7所示,“ERR1”表示主1-从2和主2-从1的异或(exclusive-OR)运算。因此,如果在主1-从2之间的事务处理或主2-从1之间的事务处理之间发生差错,则将导致“1”。同样,如果差错在两个(例如共同的)事务处理上,则根据异或运算导致“0”。
因此,确定是否在步骤820信号为低。(注意全局信息寄存器250主要感兴趣具有总线的低电平的信号。)如果信号为低(例如“是”)(表示“无差错”和/或知道差错具体在哪里),则在步骤830,利用全局信息寄存器250执行异或运算(例如M1-S2)。注意这个步骤820在图9的顶部部分被示出,下面将进一步详细说明。
即,在ERR1和M1-S2之间执行异或运算,所述M1-S2被插入图9的异或(XOR)门910中,因此提供一个输出,表示如果高则作为主方的“1”与从方2具有问题。即,当ERR1为低时仅仅异或逻辑适用。因此,如果异或的输出是高,则表示GIR 250已经检测到在M1-S2事务处理上的协议违反。
如下更详细所述,如果ERR1为高(“1”),则不确定是否它是主方问题或目标问题,并且步骤825等必须被执行以确定问题的类型和是什么器件导致它。而且,如果ERR1为高,则未知是否在主方或从方/目标中存在差错,并且利用ERR1和GIR 250信息来执行与运算(经由图10的4个与门1010),如图10所示并且在下面更详细的说明。注意在图10中使用了4个与门,因为知道对于器件1存在问题,于是必须确定它工作在哪个模式(例如主或从)中,并且它在与哪个其他的器件(例如M2、M3、S2、S3)执行事务处理。
在步骤840,确定是否信号为高(例如“1”)。如果信号为高(例如“是”),则处理继续到步骤860。如果信号为低(例如“否”),则在步骤850,不声明任何差错(表示在器件没有差错)。因此,如果信号为低,则不存在涉及产生总线差错或协议差错的器件1的事务处理,而不论器件1是作为主方或作为从方。
在步骤860,确定是否已经违反了主协议。下面更详细地列出和说明主协议。在本发明中,协议可以是主协议、目标协议和通用(主-目标)协议。主协议指示在事务处理中的主方有差错。如何检查是否一些示范的主协议已经被违反分别以图12-14的示范协议检查方法1200-1400来执行。
如果没有违反主协议,则在步骤870确定对于器件“1”无问题。
同样,如果在步骤860确定已经违反了主协议,则处理继续到步骤875,在此,器件1被声明为故障器件,同样它的操作模式(例如主或从)被声明。
现在返回步骤820,如果在步骤820确定信号不低(例如“否”),则处理分支到步骤825。
在步骤825,这样的信息与来自全局信息寄存器(M1-S2)250的信息进行与运算。
然后,在步骤835,确定是否信号是高。如果信号是高,则在步骤845确定总线无问题。(换句话说,如果信号为低,则确定总线有问题。)在这样的情况下,器件可以适当地操作,但是它们在其上通信的总线可能已经影响了事务处理(或如果不能确定哪个器件是故障器件)。
如果在步骤835确定信号为高,则在步骤875中,器件“1”被声明为故障器件和操作模式(例如,器件1是主器件或器件1是从器件)。此时,操作系统可以采取校正行为。而且,声明“操作模式”表示还声明所述器件作为主器件或者所述器件作为从器件。
从图8的方法800可以清楚看出需要以一个顺序来登记PCI协议信号。因此,假定存在‘p’个PCI协议信号,其中‘m’个是主PCI协议信号,‘n’个是目标,‘i’个是主和从协议。同样,GIR 250将具有专用于主协议的初始的‘m’个单元、专用于目标协议的接下来的‘n’个单元等等。因此,在‘违反了主协议吗’的确定操作的情况下,可以返回和检查寄存器250。如果‘m’个初始比特的任一个为高,则它是主协议违反。
以下描述了如何进行确定。或者可以借助于复用器而进行。下面说明如何执行异或及其操作、它的重要性等等。这被示出在图9中。
因此,返回图9,即使器件对信息寄存器240提供错误的结果,可以仍然根据在GIR 250中的全局信息来进行预测。如果在异或运算之后,信号变高,则未提供关于故障器件的完整信息,但是它指示操作的模式。如果检查GIR 250以看违反了那些协议,则可以推断故障器件和它的操作模式。
如图9所示,如果两个信号为高,则可以预测故障器件和它的操作模式。
以下进一步详细地描述了如何固定在器件对中的上述差错和如何精确定点故障器件。
在PCI总线上捕获目标器件的地址(窃听DEVSEL信号)以下说明如何获得器件地址。关于主方,可以从驻留在PCI桥140上的总线仲裁器来获得信息。一旦断言了GNT,则可以获得主器件地址。
下面的问题是如何获得目标信号(DEVSEL),因为它是总线信号。这被完成如下。
每次系统启动,操作系统(OS)执行器件的地址初始化。因此,OS保留用于器件的地址空间,并且信息保存在每个器件的器件驱动器中。可以设计一个现场可编程门阵列或一些其他的逻辑组件,其中代码将被作为OS的目标映射软件启动,并且将器件地址写入到门阵列中。可以从PCI总线桥获得所述器件(目标)地址,因此可以获得关于目标器件的信息。如上所述,这种方法可以被理解为如图11的结构1100中所示,包括目标映射软件1110和门阵列1120。注意器件选择1130与器件对检测240(用于获得目标地址信息)相同。
可能的PCI协议的列表关于可能的PCI协议,以下提供一些示范的协议。
I.总线应当是空闲的或返回空闲的(解断言(deassert)FRAME和IRDY)II.不能驱动TRDY(目标准备好)直到断言DEVSEL(器件选择)。
III.仅仅当断言IRDY时,才可以解断言指示最后一个数据阶段的FRAME。
IV.在计时器超时后不必终止事务处理,除非解断言GNT。
V.一旦已经解断言了FRAME,则不能在同一事务处理期间重新断言它。
VI.一旦主方已经断言IRDY,则不能改变IRDY或FRAME,直到当前的数据阶段完成。
VII.在完成最后的数据阶段后,主方必须解断言IRDY。
VIII.在地址阶段和读取事务处理的第一数据阶段之间的回转周期期间,不能断言STOP。
IX.数据阶段在任何上升边缘完成,在所述上升边缘上IRDY被断言,并且STOP或TRDY被断言。
X.与STOP的状态无关,当IRDY和TRDY被断言时发生数据传送。
XI.一旦STOP被断言,则目标必须保持它被断言,直到FRAME被解断言,此时目标必须解断言STOP。
XII.一旦断言TRDY或STOP,则目标不能改变DEVSEL、TRDY或STOP,直到数据阶段完成。
XIII.断言STOP,一旦可以解断言IRDY则主方必须解断言。
XIV.在完成最后的数据阶段后,必须解断言TRDY、STOP和DEVSEL。
XV.如果解断言GNT和断言FRAME,则总线事务处理是有效的并且将继续。
XVI.当解断言FRAME时,可以在任何时间解断言GNT,以便服务较高优先级的主方。
XVII.主方必须在当FRAME和IRDY被解断言和它的GNT被断言时的可能的第一时钟周期断言FRAME。
XVIII.当目标通过STOP中止事务处理时,主方必须解断言它的REQ达到最小两个时钟周期。
XIX.在DEVSEL可以按照配置命令被断言之前,目标必须以FRAME来限定IDSEL。
XX.特殊的周期命令-无目标响应。
协议被分类为“通用协议”,表示它们有助于确定其他协议的违反和进行确定。
例如,协议‘1’是通用协议,因为总线将在每个数据事务处理结束之后变为空闲。类似地,协议2、3、7、9、14和17是通用协议。
以下说明关于如何在图12-14中的方法1200、1300、1400中实现这些协议的流程图。下面图解了几个协议。可以如图12-14中所示来实现所有其他的协议。协议可以被分类为“主协议”(1、3、5、6、7、13和17)、“目标协议”(2、8、12、14、19)和“主-目标协议”(11和18)。
转向图12,方法1200的流程图被示出,用于处理上述的协议17(例如,“主方必须在当FRAME和IRDY被解断言和它的GNT被断言时的可能的第一时钟周期断言FRAME”),以便确定是否遵守或违反了协议17。在协议17中,IRDY表示I/O准备好。
在步骤1210,总线空闲,FRAME和IRDY已经被解断言。
在步骤1220,GNT(准许)被断言,并且在步骤1230,系统等待一个时钟周期。这个等待按照PCI总线标准规范满足某些总线定时要求。
在步骤1240,确定是否断言FRAME(例如由主方断言)。如果FRAME被断言(例如“是”),则在步骤1250中确定遵守协议17。
如果未断言FRAME(例如在步骤1240中的“否”),则确定协议17被主方违反。
图13示出了检查其他被遵守或违反的协议(诸如协议6、12、14)的方法1300。协议12和14是目标协议,而协议6是主协议。因此,图13示出了如何可能检测到双违反。在方法1300中并行执行这些检查。
在步骤1305中,总线空闲。
在步骤1310中,GNT被断言,并且FRAME被断言。
在步骤1315中,IRDY被断言,并且在步骤1320中,DEVSEL被断言。
在步骤1325中,确定是否完成了数据阶段。如果“是”,则处理继续到步骤1330,其中确定是否被完成的数据阶段是最后的数据阶段。如果“否”,则处理循环回步骤1325。
如果在步骤1330中“是”(例如被完成的数据阶段是最后的数据阶段),则在步骤1335中,确定是否TRDY、STOP和DEVSEL被解断言。如果TRDY、STOP和DEVSEL被解断言(例如“是”),则处理循环回步骤1305。
同样,如果TRDY、STOP和DEVSEL未被解断言(例如“否”),则确定违反协议14。
而且,关于步骤1325,注意如果数据阶段完成,但是这不是最后的数据阶段(例如在步骤1330中的“否”),则进行检查协议12的违反。
因此,如果在步骤1325中确定数据阶段完成(但是不是由步骤1330确定的最后阶段),则处理继续到步骤1345,其中确定是否TRDY被解断言。
如果在步骤1345中“是”,则确定已经违反了协议12。如果“否”,则在步骤1350中,确定是否解断言了DEVSEL。如果“是”,则违反了协议12。
如果在步骤1345中“否”,则确定遵守协议12。
如果在步骤1325中确定数据阶段未完成,则在步骤1365确定是否IRDY被解断言。如果在步骤1365中“是”,则在步骤1370推论协议6被违反。
如果在步骤1365“否”,则在步骤1375确定是否FRAME被解断言。如果FRAME被解断言(例如在步骤1375中的“是”),则在步骤1370中推论违反了协议6。
如果在步骤1375中发生“否”(例如未解断言FRAME),则在步骤1380中确定遵守协议6。
图14图解了方法1400,它是用于图13的方法的子例程,并且它确定是否在具体的事务处理中数据阶段完成(例如图13的步骤1325),所述具体事务处理中主方和从方彼此通信并且数据通过总线被发送。因此,图14不表示协议检查,而是确定是否数据阶段是完整的子例程(例如图13的步骤1325)。即这个子例程确定是否数据已经被完整地发送,并且将有助于图13的方法1300的流程图。
具体而言,识别总线可能“口吃(stutter)”,因而,一个事务处理没有开始和结尾并且其间没有内容,而是可能具有开始然后停止,然后继续。因此,具有确定何时完成给定的事务处理的方式是有益的。结果,图14的方法1400被提供,并且可以被插入到图13的步骤1325。
现在转向图14的方法1400,在步骤1405,总线空闲,并且在步骤1410,GNT被断言并且FRAME被断言。其后,在步骤1415,IRDY被断言。
在步骤1420,DEVSEL被断言,并且在步骤1425,TRDY被断言。
在步骤1430,检查IRDY和TRDY的状态。
在步骤1440,确定它们(IRDY和TRDY)是否在总线信号的同一上升边缘一起被再次断言。如果在步骤1440“否”,则在步骤1445,事务处理继续。
如果在步骤1440“是”(例如,在总线信号的同一上升边缘,IRDY和TRDY一起被再次断言),则在步骤1450,数据阶段完成,并且在步骤1455确定是否FRAME被解断言并且STOP被断言。
如果“否”,则处理循环回步骤1450。如果“是”,则在步骤1460,推论是最后的数据阶段(这对应于图13中的确定方框1330)。
注意,虽然上述的方法指的是仅仅根据一个事务处理来进行诊断(例如,其中仅仅图6A中的一行可能被填充),但是诊断也可以基于几个事务处理,在这种情况下,在图6A中的几个行可能包括输入项。
例如,图6C示出了在已经发生了几个事务处理后差错寄存器的内容。可以回忆在单元中的‘0’指示对于在那个行的第一列中命名的器件对没有在那个列的第一行中指示的类型的差错,在单元中的“1”指示对于这样的器件对发现了这样的差错。在所有这些事务处理中,假定器件2是故障器件,但是仅仅用于差错类型b,并且仅仅当它是从器件时。假定已经被监视的事务处理包括这样的事务处理,其中1是主方而2是从方,并且已经被监视的事务处理包括这样的事务处理,其中3是主方并且2是从方。则表格将如图6C所示出现。
从图6C的表格中的‘1’的位置,有可能确定当在从容量(capacity)中动作时器件2有差错。按照这个技术,在总线上的所有参与者之间的多个事务处理的观察允许确定器件对的哪个器件是故障器件。
图15图解了用于本发明的信息处理/计算机系统的典型硬件配置,它最好具有至少一个处理器或中央处理单元(CPU)1511。
CPU 151经由系统总线1512相互连接到随机存取存储器(RAM)1514、只读存储器(ROM)1516、输入/输出(I/O)适配器1518(用于将诸如盘单元1521和磁带驱动器1540的外设器件连接到总线1512)、用户接口适配器1522(用于将键盘1524、鼠标1526、扬声器1528、麦克风1532和/或其他的用户接口器件连接到总线1512)、用于将信息处理系统连接到数据处理网络、因特网、内部网、个人区域网络(PAN)等的通信适配器1534、用于将总线1512连接到显示器1538和/或打印机的显示适配器1536。
除了上述的硬件/软件环境之外,本发明的不同方面包括计算机实现的方法,用于执行上述的方法。作为一个示例,这些方法可以被实现在上述特定环境中。
这样的方法可以例如通过操作计算机以执行机器可读的指令序列而被实现,所述计算机被体现为一个数字数据处理装置。这些指令可以驻留在不同类型的信号承载媒体中。
这个信号承载媒体可以包括例如包含在CPU 1511中的RAM,例如由快速访问存储器表示。或者,所述指令可以被包括在可以由CPU 1511直接或间接访问的另一个信号承载媒体中,诸如磁数据存储盘1600(图16)。
不论是否被包括在盘1600、计算机/CPU 1511或其他地方,所述指令可以被存储在多种机器可读数据存储媒体中,诸如DASD存储器(如传统的“硬盘驱动器”或RAID阵列)、磁带、电子只读存储器(如ROM、EPROM或EEPROM)、光存储器(如CD-ROM、WORM、DVD、数字光带等)、纸张“穿孔”卡或其他适合的信号承载媒体,所述其他适合的信号承载媒体包括诸如数字和模拟和通信链路和无线链路的传输媒体。在本发明的一个图解的实施例中,机器可读的指令可以包括从诸如“C”语言等的语言编译的软件目标代码。
利用本发明的唯一和不明显的特征,可以使用基于联合预测的布尔逻辑而不是基于误预测的加权来精确定点故障器件。另外,本发明不需要历史表格或图案历史表格,因此导致缩小的硬件。另外,OS可以根据差错的严重性采取任何必要的行为。
因此,本发明提供了一种根据PCI总线规范的基于监视器的方法,它用于检测是否符合了PCI总线约束条件。最好使用用于描述适当的行为的硬件描述语言(HDL)来开发监视器,并且最好使用环境或代理来实现监视器。这些代理满足分离规则,这表示每个代理的输出与其他代理的输出不同。
虽然按照几个优选实施例而描述了本发明,本领域的技术人员会明白,在所附的权利要求的精神和范围内,可以对本发明进行修改。
而且,注意申请人的异图是涵盖所有权利要求元素的等同物,即使后来在审查期间被修改。
权利要求
1.一种监视具有成对的参与者的总线的方法,包括在所述总线上的第一和第二参与者之间的事务处理期间检测问题;和确定哪个参与者对于所述问题有错误或是否所述问题包括系统总线问题。
2.按照权利要求1的方法,其中所述确定基于观察多个事务处理和检测所述问题。
3.一种在总线上的器件级的故障分离的方法,包括根据硬件总线规范,用监视器检测是否硬件总线约束条件被遵守,其中使用描述行为的硬件描述语言(HDL)来开发监视器,并且使用环境实现监视器。
4.按照权利要求3的方法,其中所述环境包括代理。
5.按照权利要求3的方法,其中如果遵守在代理的控制下的约束条件,则所述代理产生正确信号,并且如果所述代理产生错误信号,则违反了硬件总线约束条件。
6.一种在系统中分离故障的方法,所述系统在总线上具有器件对,所述方法包括判断是否已经发生了故障;确定是否器件对的器件之一引起故障;以及如果所述器件之一被确定未引起故障,则将所述故障的起因识别为总线故障。
7.按照权利要求6的方法,其中所述总线包括外围设备互连(PCI)总线。
8.按照权利要求6的方法,其中所述器件包括PCI器件。
9.一种用于在总线上的器件级隔离故障的系统,包括器件对检测器,用于接收主地址信息和目标地址信息;器件对信息寄存器,用于接收所述器件对检测器的输出;差错检测逻辑,用于接收所述器件对的输出;全局信息寄存器,用于接收所述器件对检测器和协议违反检查逻辑的输出;以及逻辑运算单元,用于如果有的话,根据所述差错检测逻辑和所述全局信息寄存器的输出来确定所述目标和所述主方的哪个是所述故障的起因,其中如果所述逻辑运算单元识别出所述目标和所述主方都不是起因,则所述逻辑运算单元确定所述起因包括系统总线问题。
10.按照权利要求9的系统,还包括用于获得目标器件信息的单元。
11.按照权利要求10的系统,其中所述单元包括目标映射模块和数字逻辑,其中操作系统建立数字逻辑,以便当器件地址出现时,数字逻辑提供指示所述器件的身份的输出。
12.按照权利要求11的系统,其中所述目标信息被输入到在事务处理中使用的器件对检测器,并且器件对检测器从总线直接接收主地址,其中所述器件对检测器执行“与”运算,以向所述全局信息寄存器和所述器件对信息寄存器提供所述输出。
13.按照权利要求9的系统,其中通过极高速集成电路硬件开发语言(VHDL)代码来实现全局信息寄存器,以使用基于监视器的方法来确定协议的违反。
14.按照权利要求13的系统,其中所述VHDL代码包括至少一个差错信号,所述至少一个差错信号包括目标异常中止、主方异常中止、中断信号和奇偶校验差错(PERR)信号。
15.按照权利要求9的系统,其中所述全局信息寄存器接收总线协议信号,所述协议对应于要被监视的差错信号。
16.一种在总线中的故障分离的方法,至少包括第一和第二参与者,所述第一和第二参与者选择性地参与在事务处理中,包括监视总线信号,以检查总线操作;确定是否总线约束条件被遵守;以及如果总线约束条件未被遵守,则联系诊断逻辑,由此确定差错的类型并将差错精确定点到在事务处理中涉及的第一和第二参与者。
17.按照权利要求16的方法,其中所述联系包括使用约束条件并将它们对应于一种差错类型,以便可以识别和随后定位所述差错类型。
18.按照权利要求16的方法,还包括向操作系统发送差错信息。
19.按照权利要求18的方法,还包括采取行动来修正差错。
20.按照权利要求16的方法,其中所有的事务处理涉及总线,并且在事务处理进行时捕获差错信号。
21.一种故障诊断方法,用于确定总线上的具体故障器件,包括获得差错信号,所述差错信号指示在事务处理中的差错,所述事务处理包括在事务处理中的第一和第二参与者;确定是否该信号具有预定的值;以及如果该信号具有预定的值,则用全局信息寄存器执行逻辑运算,由此指示所述两个参与者中的哪个有问题。
22.按照权利要求21的方法,其中所述逻辑运算包括异或运算。
23.按照权利要求21的方法,还包括如果所述差错信号具有第二预定值,则判断不肯定是否它是主方问题或目标问题;以及确定问题的类型和哪个参与者引起所述问题,所述确定包括与所述差错信号和全局信息寄存器信息进行第二逻辑运算,以便获得具有预定值的信号,其中如果所述信号具有第一预定值,则所述问题被识别为总线问题,如果所述信号具有第二预定值,则确定引起问题的参与者和它的操作模式。
24.按照权利要求23的方法,其中所述第二逻辑运算包括与运算,其中所述第一预定值为低,所述第二预定值相对于所述第一预定值为高。
25.按照权利要求22的方法,还包括确定是否所述信号具有高预定值;以及如果所述信号具有低预定值,则声明无差错。
26.按照权利要求25的方法,还包括如果信号为高,则确定是否已经违反主协议,其中所述主协议表示在事务处理中是主方故障;如果未违反主协议,则确定器件没有问题;以及如果确定已经违反了主协议,则声明所述器件是问题的起因,并且声明它的操作模式。
27.按照权利要求22的方法,其中预定值指示“无故障”和/或知道具体上差错在哪里。
28.按照权利要求21的方法,其中对于连接到总线的每个器件并行执行所述方法。
29.按照权利要求9的系统,其中所述差错检测逻辑包括多个异或门。
30.一种信号承载媒体,可感知地包含由数字处理装置可执行的机器可读指令的程序,所述程序用于执行监视具有成对的参与者的总线的方法,包括在所述总线上的第一和第二参与者之间检测事务处理期间的问题;以及确定哪个参与者对于所述问题有差错或是否所述问题包括系统总线问题。
31.一种用于监视具有成对的参与者的总线的系统,包括检测器,用于在所述总线上的第一和第二参与者之间的事务处理期间检测问题;和确定单元,用于确定哪个参与者对于所述问题有差错或是否所述问题包括系统总线问题。
全文摘要
一种监视具有成对的参与者的总线的方法(和系统),包括在所述总线上的第一和第二参与者之间的事务处理期间检测问题;以及确定哪个参与者对于所述问题有错误或是否所述问题包括系统总线问题。
文档编号H04B1/74GK1506824SQ200310120400
公开日2004年6月23日 申请日期2003年12月11日 优先权日2002年12月12日
发明者理查德·E·哈珀, 塔朗D·辛格, ば粮, 理查德 E 哈珀 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1