用于设备间通信的系统与方法

文档序号:6566416阅读:160来源:国知局
专利名称:用于设备间通信的系统与方法
技术领域
本发明总的方面涉及信息处理系统,而具体地涉及用于设备间通信的系统与方法。
在信息处理系统中,设备间是能够互相交换信息的。通过输出一个操作信号,设备能在受到其它总线设备监听的一条系统总线上启动一个总线操作。自系统总线上总线操作启动后的一个预定的或可变的等待时间之后,各监听总线的设备(即监听操作信号的设备)通过系统总线输出一个监听应答指示给主总线设备(即启动总线操作的设备)。
监听应答指示是为响应相应的总线操作而产生的。在一个强有序系统中,这些监听应答指示与它们各自的总线操作以相同的次序出现,从而总线操作与监听应答指示是互相强有序的。然而,某些以前的强有序系统的一个缺点是在等待所有前面的总线操作的完成时,延迟了后续总线操作的完成。即使通过其他方式能够完成后续总线操作,也会延迟其完成。
某些先有技术曾试图通过支持地址“重试(Retry)”监听应答指示来改善这一缺点。响应这一地址“重试”监听应答指示,能够完成后续总线操作。通过稍后的重新输出操作信号,主总线设备重新启动系统总线上的“重试”总线操作。
然而,这种“重试”技术的一个缺点是重新启动的总线操作(为响应较早的“重试”监听应答指示而重复进行的)再一次受到每一个监听总线的设备的监听并完全按其行动(诸如读取监听设备的高速缓存中的状态位)。另一缺点是当只采用一种“重试”技术时,可能引起死锁。
例如,如果一个监听设备完成了其响应总线操作的动作,而另一个监听设备尚未完成其向应总线操作的动作并相应地输出了一个地址“重试”应答指示,这时便可能产生一个往复死锁。稍后,主总线设备在系统总线上重新启动“重试”总线操作。由于每一个监听总线的设备再一次监听重新启动的总线操作并完全按其行动,便有可能使第二个监听设备能够响应重新启动的总线操作完成其动作,而第一个监听设备则不能响应重新启动的总线操作而完成其动作,从而输出一个地址“重试”监听应答指示。这一序列事件能无限期地重复进行下去,其间第一个与第二个设备交替地轮流输出一个地址“重试”监听应答指示。
作为另一个例子,如果监听总线的设备的未来操作依赖于主总线设备稍后重复“重试”总线操作,而由于某种原因主总线设备未能重复“重试”总线操作,便可能产生死锁。而另一方面,如果要求主总线设备总是重复“重试”总线操作,则主总线设备会由于不能具有不重复“重试”总线操作的选择而丧失可贵的灵活性。
因此,存在着对在等待所有前面的总线操作的完成时,后续总线操作不受到延迟的一种用于设备间通信的方法与系统的需求。同时,还存在着对不要求每一个监听总线的设备去监听重复的总线操作并完全按其行动的一种用于设备间通信的方法与系统的需求。再者,存在着对不容易产生死锁的一种用于设备间通信的方法与系统的需求。另外,还存在着对主总线设备保持具有不重复总线操作的选择的灵活性的一种用于设备间通信的方法与系统的需求。
在一种用于设备间通信的方法与系统的第一方面中,从一个第一设备输出一个信号。响应该信号,一个第二设备启动至少一种动作。输出表示第二设备是否完成了该动作与第二设备的操作是否与第一设备重新输出该信号无关的一个指示。
在一种用于设备间通信的方法与系统的第二方面中,从一个第一设备输出一个信号。响应该信号,第二与第三设备启动至少一种动作。输出第二与第三设备是否完成了该动作的一个指示。第三设备不重新启动该动作,第一设备响应表示第二设备未能完成该动作及第三设备完成该动作的指示,重新输出该信号。
本发明的一个技术优点是在等待所有前面的总线操作的完成的同时,不延迟后面的总线操作的完成。
本发明的另一个技术优点是并不要求每一个监听总线的设备去监听一个重复的总线操作并完全按其行动。
本发明的又一个技术优点是不易产生死锁。
本发明的再一个技术优点是一个主总线设备能保持具有不重复一个总线操作的可选择的灵活性。
参见下述说明与附图,能更好地理解本发明的一个示例性实施例及其优点,附图中

图1为按照一个示例性实施例的信息处理系统的结构框图;图2a-b为该信息处理系统通过图1的系统总线所执行的示例操作的示意图;以及图3a-b为图1的信息处理系统所执行的操作的流程图。
参见附图中的图1-3b,能更好地理解本发明的一个示例性实施例及其优点,图中相同的数字用于附图中相同的与对应的部件。
图1为总体上用10指示的按照一个示例性实施例的信息处理系统的方框图。信息处理系统10包括多个总线设备12、14、16与18。更具体地,设备12是一个第一处理器设备(此后称作“处理器A”),而设备14则为一个第二处理器设备(此后称作“处理器B”)。再者,设备16为一个总线适配器设备(此后称作“BA”),而设备18则为一个存储设备。处理器A、处理器B与BA16按照示例性实施例操作,如下面结合图2a-b与3a-b进一步讨论的。
设备12、14、16与18通过一条系统总线20互相连接。从而,设备12、14、16与18通过系统总线20互相传递信息。在图1的示例性实施例中,系统总线20包含一条64位地址总线22、一条128位数据总线24、一条8位数据标记(“Dtag”)总线26及一条10位控制/状态总线28。
此外,BA16连接到一条附加总线30上。从而,BA16作为系统总线20与总线30之间的接口进行操作。以这一方式,设备12、14与18通过BA16与系统总线20将信息传递给连接在总线30上的一个或多个其它设备(未示出)。
使用按照示例性实施例的一种重新运行(ReRun)技术,相对于操作在系统总线20上启动的次序来说系统10支持非顺序的(即弱有序的)共享总线操作的“完成”,通过输出一个操作信号,一个总线设备便能在受到其它总线设备监听的系统总线20上启动一个总线操作。响应该操作信号,各监听总线的设备(即监听该操作信号的各设备)启动一个动作。例如,该动作可以是读取监听设备的高速缓存中的状态位。作为另一例子,该动作可以是BA16通过总线30确定来自连接在总线30上的一个或多个其它设备(未示出)的一种远程状态。
再者,在总线20上启动总线操作后某一预定的等待时间之后,各监听总线的设备通过系统总线20同时向主总线设备(即启动总线操作的设备)输出一个监听应答指示。该监听应答指示表示监听总线的设备是否完成了它响应操作信号先前启动的动作。值得注意的是,一个监听设备没有输出信号(即一个“空”应答指示)本身被认为是一个监听应答指示。
无论系统总线20对于监听应答指示是流水线的还是完全互锁的,或者该监听应答指示从启动总线操作后,是持续一个固定的还是可变的等待时间的,重新运行技术都是可应用的。在示例性实施例中,响应各自的总线操作产生相应的监听应答指示,这些监听应答指示与其各自的总线操作以相同次序产生,从而总线操作与监听应答指示之间是互相强有序的。
然而,对总线操作的应答不一定非指示总线操作的“完成”不可。因此,使用按照示例性实施例的重新运行技术,总线操作相对于在系统总线20上启动这些操作的次序是可以不按次序“完成”的(即弱有序的)。从而,在较佳实施例的一个显著方面中,系统10根据总线操作与系统10的状态,支持一个特定的监听设备完成动作所需的等待时间的变化,这一动作是该监听总线的设备响应操作信号而在前面启动的。
按照示例性实施例的重新运行技术,一个或多个总线监听设备能向主总线设备输出一个表示主总线设备有必要延长一个原来总线操作的监听等待时间的一个重新运行应答指示。重新运行应答指示用作原来总线操作的一个监听应答指示,因此允许其它总线操作继续进行,同时还有利地允许各监听设备(发布重新运行应答指示的设备)继续处理原来的总线操作(即响应它而动作)。各监听设备(发布重新运行应答指示的设备)存储一个操作标记(预先由主总线设备结合原来的总线操作输出的)供以后识别该特定的总线操作。
在重新运行应答指示后的一个稍后的时间上,主总线设备重新输出操作信号,借此重复原来的总线操作;同时,主总线设备重新输出先前与原来的总线操作有关的同一操作标记。各监听设备(发布重新运行应答指示的)将该输出操作标记与任何以前存储的操作标记进行比较。如果在该操作标记与以前存储的操作标记之间没有匹配,则监听设备忽略该重复的总线操作。
通过比较,响应该操作标记与一个以前存储的操作标记之间的匹配,监听设备对重复的总线操作作出响应。尽管先前已发出过一个重新运行应答指示,如果该监听设备仍需要更多的时间来完全处理重复的总线操作(即完成监听总线的设备响应操作信号在前面启动的动作),该监听设备能再一次向主总线设备输出另一个重新运行应答指示要求主总线设备进一步延长重复的总线操作的监听等待时间。有利地,能响应相继地重复的总线操作发布任意多的重新运行应答指示,从而作为重复的总线操作的监听应答指示进行操作,并因此而允许其它总线操作继续进行。
图2a-b为系统10根据示例性实施例的重新运行系统总线技术通过图1的系统总线20所执行的示例操作的图示。更具体地,图2a为系统10根据示例性实施例的重新运行系统总线技术所执行的示例性SYNC/TLBSYNC操作的图示。SYNC指令操作与TLBSYNC指令操作将在下面附录中进一步讨论。处理器与总线适配器总线设备能利用示例性实施例的重新运行技术来延长SYNC与TLBSYNC总线操作的应答。
作为比较,图2b为系统10根据示例性实施例的重新运行系统总线技术所执行的示例性非SYNC/非TLBSYNC操作的图示。在示例性实施例中,总线适配器总线设备(诸如BA16)能利用重新运行技术来延长非SYNC/非TLBSYNC总线操作的应答。
参见图2a,在系统总线20的时钟周期1期间,处理器A通过系统总线20输出一个同步(“SYNC”)操作信号。随同时钟周期1期间的SYNC操作,处理器A通过系统总线20输出一个操作标记=X1及一个R位=0。处理器A通过地址总线22输出该操作标记与R位。处理器A通过控制/状态总线28输出操作类型(诸如SYNC)与传送长度(即要传送的字节数)。
在系统总线20的时钟周期3期间,处理器B通过系统总线20输出一个读(“RD”)操作信号。随同时钟周期3期间的这一RD操作,处理器B通过系统总线20输出一个操作标记=Y2及一个R位=0。
在系统总线20的时钟周期4期间,处理器B响应时钟周期1期间从处理器A输出的SYNC操作,通过系统总线20输出一个ReRun1(重新运行1)操作信号。通过比较,如果没有总线设备曾在时钟周期4上可以前(即在SYNC操作以后三个总线时钟周期的固定等待预定时间内)通过系统总线20发布过一个“重新运行”操作信号或一个“重试”操作信号(响应时钟周期1期间处理器A输出的SYNC操作),则处理器A将成功地“完成”其在时钟周期1中所启动的SYNC操作。
从而,示例性实施例的重新运行技术,根据总线操作与系统10的状态,支持一个特定监听设备为完成其响应操作信号而在前面启动的动作所需的等待时间的变化(超过预定的固定等待应答时间)。一个总线设备能够通过发布一个“ReRun(重新运行)”操作而延长等待时间。不仅如此,示例性实施例的“重新运行”技术同样地有利并可应用于使用可变的等待时间而不是固定等待时间的其它系统上。
在系统总线20的时钟周期6期间,处理器B成功地“完成”了它在时钟周期3中启动的RD操作,如图2a中标号“Done2”所示。响应于其它总线设备可能输出(在RD操作后三个总线时钟周期的一个固定等待时间内)或者(1)一个“重试”操作或者(2)一个“重新运行”操作,处理器B成功地完成该RD操作。
响应ReRun1操作(周期4中)后的预定数目的周期(即,在示例性实施例中,为2个周期)的到期,处理器A在系统总线20的时钟周期7中通过系统总线20再次输出SYNC操作信号。和时钟周期1的SYNC操作一样,处理器A随同时钟周期7中的SYNC操作,通过系统总线20输出操作标记=X1。然而,与时钟周期1的SYNC操作不同,处理器A随同时钟周期7中的SYNC操作通过系统总线20输出一个R位=1。通过确立R位=1,处理器A向其它总线设备指出处理器A已在前面输出过SYNC操作。
在系统总线20的时钟周期10期间,或者处理器A成功地完成了它在时钟周期7中所启动的SYNC操作,如图2a中用标号“Done 1”指示的;或者处理器B响应时钟周期7中处理器A输出的SYNC操作,而通过系统总线20输出另一个ReRun 1操作信号,如图2a中在时钟周期10上用标号“ReRun 1”所示。
参见图2b,在系统总线20的时钟周期1期间,处理器A通过系统总线20输出一个读(“RD 1”)操作信号。随同时钟周期1中的RD1操作,处理器A通过系统总线20输出一个操作标记=X1及一个R位=0。
在系统总线20的时钟周期3中,处理器B通过系统总线20输出一个读(“RD2”)操作信号。随同时钟周期3中的RD2操作,处理器B通过系统总线20输出一个操作标记=Y2及一个R位=0。
在系统总线20的时钟周期4中,BA16响应处理器A在时钟周期1中输出的RD1操作,通过系统总线20输出一个ReRun1操作信号。
在系统总线20的时钟周期6期间,处理器B成功地完成了它在时钟周期3中启动的RD2操作,如图2b中用标号“Done 2”所示。
在系统总线20的时钟周期7期间,根据BA16能够(或者预测它在预定数目的时钟周期内将能够)响应(在时钟周期1中处理器A输出的)RD1操作,BA16通过系统总线20输出一个标记匹配的重新运行操作信号。在示例性实施例中,BA16在通过总线30接收到来自连接在总线30上的一个或多个其它设备(未示出)的一个远程状态后,是能够响应RD1操作的。不仅如此,BA16还能为了减少响应系统总线20上的RD1操作的等待时间的目的,而在接收到该远程状态之前便输出标记匹配的重新运行(ReRun)操作。
随同时钟周期7中的这一标记匹配重新运行操作,BA16通过系统总线20输出操作标记=X1。R位不能用于标记匹配重新运行操作。标记匹配重新运行总线操作是地址总线22上的一个只含地址的操作。该标记匹配重新运行操作没有地址,因此是只含标记的。
如果在系统总线20上连接有一个附加的总线适配器(未示出),则各总线适配器监听另一个总线适配器输出一个标记匹配的重新运行操作信号。例如,如果附加的总线适配器检测到BA16输出的一个标记匹配重新运行操作信号,并且如果该标记匹配重新运行操作的标记与附加的总线适配器前面重新运行的一个操作的标记匹配,则附加的总线适配器并不输出另一个标记匹配重新运行操作信号。
在系统总线20的时钟周期10中,处理器A响应时钟周期7中BA 16输出的标记匹配重新运行操作信号,通过系统总线20输出RD1操作信号。和时钟周期1的RD1操作一样,处理器A随同时钟周期10中的RD1操作通过系统总线20输出操作标记=X1。不仅如此,和时钟周期1的RD1操作不同,处理器A随同时钟周期10中的RD1操作,通过系统总线20输出一个R位=1。
在系统总线20的时钟周期13中,或者处理器A成功地完成它在时钟周期10中所启动的RD1操作,如图2b中时钟周期13处用标号“Done1”所示;或者BA16响应时钟周期10中处理器A输出的RD1操作,通过系统总线20输出另一个ReRun1操作信号,如图2b中时钟周期13处用标号“ReRun1”所示。
例如,如果BA16(在时钟周期7中)错误地估计了其在预定的时钟周期数(即,在示例性实施例中,为6个时钟周期)内响应RD1操作的能力,则在时钟周期13中,BA16有可能通过系统总线20(响应时钟周期10中处理器A输出的RD1操作)输出另一个ReRun1操作信号。
从而,相对于在系统总线20上启动操作的次序,示例性实施例的系统10通过支持弱有序的共享总线操作的“完成”,而达到性能优点。这些优点中包括当一个长监听等待时间总线操作并不影响随后的较短监听等待时间总线操作的完成时所获得的增进的性能。
再者,由于一个重复的总线操作(响应一个较早的重新运行应答指示重复的)只受到发布(或者没有另一个设备已经发布时,可能发布)较早的重新运行应答指示的各监听设备的监听与重新执行(即全面作用在上面),而得以改进性能。这相对于诸如“重试”技术等先有技术是有利的,在“重试”技术中,每一个监听设备监听与重新执行(例如通过读取监听设备的高速缓存中的状态位)一个重复的总线操作。
在示例性实施例中有利地,一个监听总线的设备能在系统总线20上输出或者一个“重试”应答指示,或者一个“重新运行”应答指示,使后面的总线操作能够继续进行。为了这一目的,如果监听总线的设备的未来操作与主总线设备以后是否重复“重试”总线操作无关,监听总线的设备例输出“重试”应答指示;在这种情况下,主总线设备可选择地重复“重试”总线操作。
作为比较,如果监听总线的设备的未来操作依赖于主总线设备以后重复“重新运行”总线操作,则监听总线的设备输出“重新运行”应答指示;在这种情况下,主总线设备总是重复“重新运行”总线操作。因此,在输出“重新运行”应答指示之后,监听总线设备便能继续处理原来的总线操作,而不用担心主总线设备以后可能不再重复“重新运行”总线操作。
再由于示例性实施例的重新运行技术避免了在只采用“重试”技术时可能引起的死锁,而功能得以顺利进行。例如,如果监听总线的设备的未来操作依赖于主总线设备以后重复“重试”总线操作,而由于某种原因,主总线设备不能重复“重试”总线操作,则便会产生这种死锁。反之,如果要求主总线设备一直重复“重试”总线操作,主总线设备则将由于失去不重复“重试”总线操作的选择而丧失可贵的灵活性。
在示例性实施例中,一个监听总线的设备能够在系统总线20上输出或者一个“重试”应答指示或者一个“重新运行”应答指示而使以后的总线操作能够继续进行。从而,在示例性实施例中,在监听总线设备的未来操作与主总线设备以后是否重复“重试”总线操作无关的情况中,监听总线的设备输出一个“重试”操作;以这一方式,主总线设备通过具有不重复“重试”总线操作的选择,而保住了可贵的灵活性。再者,当监听总线的设备的未来操作依赖于主总线设备以后重复“重新运行”总线操作的情况中,监听总线的设备输出一个“重新运行”操作;以这一方式,监听设备能够依靠主总线设备来一直重复“重新运行”总线操作,借此避免可能的死锁。
有利地,在示例性实施例中,即使监听总线的设备输出一个“重新运行”操作,主总线设备由于具有中止“重新运行”总线操作的选择而保住了可贵的灵活性。如果主总线设备选择中止“重新运行”总线操作,主总线设备便重复“重新运行”总线操作(使R位=1),然后在系统总线20上输出一个“重试”应答指示。这一“重试”应答指示(主总线设备紧跟在其重复“重新运行”总线操作后输出的)用以通知监听总线的设备主总线设备正在中止“重新运行”总线操作。以这一方式,监听总线的设备通过停止对主总线设备的“重新运行”总线操作的重复的依赖,而避免可能的死锁。
图3a-b为信息处理系统10所执行的操作的流程图。更具体地,图3a为系统10的主总线设备(“MBD”)(诸如在图2a-b的实例中的处理器A)所执行的操作的流程图。作为对照,图3b为监听处理器(诸如图2a的实例中的处理器B)与总线配适器(诸如图2b的实例中的BA16)所执行的操作的流程图,此后集体称作监听总线的设备(“SBD”)。
参见图3a,执行开始于步骤100,这时MBD清除R位(即R位=0)。在下一步骤102,MBD进行仲裁以获得对于系统总线20的控制并通过它输出一个总线操作信号。步骤102之后,执行继续到判定框104。
在判定框104,如果MBD通过系统总线20接收到对步骤102的总线操作的响应的一个Null/None(空/无)、Shared(共享)或Modified(修改)应答指示,则执行结束,如图3a中所示。作为对比,如果MBD通过系统总线20接收到作为对步骤102的总线操作的应答的一个Retry(重试)应答指示,则执行返回到步骤102。另一方面,如果MBD通过系统总线20接收到作为对步骤102的总线操作的应答的一个ReRun(重新运行)应答指示,则执行继续到判定框106。
在判定框106中,如果步骤102的总线操作为一个SYNC操作或TLBSYNC操作,则执行继续到步骤108。作为对比,如果步骤102的总线操作既非SYNC操作也非TLBSYNC操作,则执行继续到步骤110,MBD等待一个标记匹配ReRun操作,如上面结合图2b的时钟周期7所深入讨论的。
步骤110之后,执行继续到步骤108。在步骤108中,MBD设置R位(即R位=1)。步骤108之后,执行返回到步骤102。
参见图3b,执行从步骤200开始,这时SBD等待系统总线20上的一个总线操作。在步骤200中SBD监听到一个总线操作之后,执行便继续到判定框202,SBD判定R位是0还是1。如果SBD在判定框202中判定R位=0,则执行继续到步骤204,SBD启动监听到的总线操作所请求的功能。再者,在步骤204中,如果总线操作作为一个非SYNC/非TLBSYNC操作,则执行继续到步骤206。
在步骤206中,SBD等待接收总线30上的总线操作的一个远程状态。SBD接收到远程状态之后,执行便继续到步骤208。在步骤208中,只在原来监听到的总线操作(在步骤200中监听到的)在前面引起一个ReRun操作(如下面结合步骤212及上面结合图2b的时钟周期4所深入讨论的)的情况下,SBD才在系统总线20上输出一个标记匹配ReRun操作(如上面结合图2b的时钟周期7深入讨论的)。步骤208之后,执行便结束,如图3b中所示。
步骤204之后,执行继续到判定框210。值得注意的是,在步骤204中,如果总线操作为非SYNC/非TLBSYNC操作,则执行并行地继续到步骤206与判定框210。在判定框210中,SBD判定它能否在“ARespOut”或之前响应原来监听到的总线操作(在步骤200中监听到的)。
“ARespOut”为在步骤200监听到总线操作之后的一个预定的等待时间(诸如时钟周期数)。上面已结合图2a-b深入讨论了等待时间。如果在判定框210中SBD判定它不能在“ARespOut”或之前响应原来监听到的总线操作,则执行继续到步骤212。在步骤212中,SBD输出一个ReRun操作,如上面诸如结合图2b的时钟周期4深入讨论的。步骤212之后,执行结束,如图3b中所示。
作为对比,如果SBD在判定框210中判定它能够在“ARespOut”或之前响应原来监听到的总线操作,则执行继续到步骤214。在步骤214中,SBD输出一个“Null(空)”应答指示。步骤214之后,执行结束,如图3b中所示。
再一次参见判定框202,如果SBD判定R位=1,则执行继续到判定框216。在判定框216中,SBD判定监听到的总线操作是否具有一个等于前面监听到的(尚未完成的)总线操作的操作标记,该总线操作源于SBD的一个ReRun操作(如上面结合步骤212及上面诸如结合图2b的时钟周期4深入讨论的)。如果SBD在判定框216中判定操作标记相等,则执行继续到判定框210,并且如果总线操作为非SYNC/非TLBSYNC操作,则执行并行地继续到步骤206与判定框210。
通过对比,如果SBD在判定框216判定操作标记不相等,则执行继续到步骤218。在步骤218中,SBD记录监听到的总线操作的完成。步骤218之后,执行结束,如图3b中所示。
下表概括了监听设备(“监听器”)响应总线操作的方式。更具体地,下表概括了总线适配器(诸如BA16)响应非SYNC/非TLBSYNC总线操作的方式以及处理器(诸如处理器A与处理器B)与总线适配器响应SYNC与TLBSYNC总线操作的方式。
虽然上面详细描述了本发明的一个示例性实施例及其优点,但它们只是作为实例而不是作为限制而描述的。在不脱离本发明的广度、范围与精神的情况下在该示例性实施例中可作出各种改变、替代与改动。本发明的广度、范围与精神不应受示例性实施例的限制,而仅由以下的权利要求书及其等效物来定义。附录TLBSYNC与SYNC指令一条TLBSYNC指令的执行确保已执行了全部处理器中的所有LOAD(加载)与STORE(存储)指令,这些处理器可能使用了为响应一条TLBIE(即TLB无效入口)指令而已无效了的翻译后援缓冲器(translation lookaside buffer-“TLB”)入口。在示例性实施例中,该TLBSYNC指令在一个时间上只由一个进程发布,并且这是由软件控制的。
处理器A与B都能够作为一个TLBSYNC主处理器或监听处理器来操作。TLBSYNC指令的执行并不保证所有前面的TLBIE指令都已发布到了系统总线20上。再者,如果在系统总线20上已完成了一条前面的TLBIE指令,TLBSYNC指令的执行并不保证这一前面的TLBIE指令已由一个监听处理器完成。从而,在示例性实施例中为了保证在TLBSYNC指令发布到系统总线20之前, 系统总线20上及所有处理器都已完成了在TLBSYNC指令以前执行的所有TLBIE指令,软件在一条TLBSYNC指令前面加上一条SYNC指令。TLBSYNC总线操作的完成保证已完成了可能使用了被一条TLBIE指令所作废的一个翻译的其它处理器上的所有指令。
响应一条TLBSYNC指令,一个监听处理器保证所有使用任何TLB入口的加载、存储与取指令都已冲掉或执行。如果SYNC指令受到监听处理器的执行,一条监听到的TLBSYNC指令在一个监听处理器上将具有与一条SYNC指令所具有的相同的效果。一个监听处理器能在系统总线20上发布完成TLBSYNC指令所需要的任何次数的“ReRun”。
当在示例性实施例中要强制一部分存储器进入一种已知状态时,存储器是相对于所有处理器同步的。SYNC指令为一个给定的处理器所执行的所有指令的作用提供排序的功能。这是在指令流中通过插入一条SYNC指令明确地指出要求同步而达到的。通过执行一条SYNC指令,一个处理器保证在完成该SYNC指令以前,已完成了该处理以前启动的所有指令,并保证直到完成该SYNC指令为止,该处理器没有启动随后的指令。在完成该SYNC指令时,在执行其下一条指令之前,相对于所有存取存储器的其它处理器与机制,该处理器将执行完该SYNC指令以前启动的所有有关存储器存取的操作。
一个处理器能用SYNC指令来保证对一个共享的数据结构的所有更新对于将释放该数据结构上的加锁而执行存储以前的所有其它处理器都是可见的。通过执行SYNC指令,一个处理器保证该处理器已完成了其执行的TLBIE指令。然而,SYNC指令的执行并不等待其它处理器去完成TLBIE指令。从而,在示例性实施例中,处理器执行一条TLBSYNC指令跟着执行一条SYNC指令来保证所有处理器都已完成了所有前面的TLBIE指令。
SYNC指令作为所有后续指令的一个隔离物来操作,并且它等待所有其它处理器中的所有尚未执行的监听推压的完成。更具体地,处理器将SYNC指令保持在调度阶段中直到处理器结束(与“完成”)了所有前面的指令的执行。当处理器完成了所有前面的指令之后,便将SYNC总线操作发布给系统总线20。在SYNC总线操作完成以前,处理器并不调度后面的指令。
如果处理器在系统总线20上接收到响应SYNC总线操作的一个“Retry(重试)”信号,该处理器便重新发布带有R=1的SYNC总线操作,如果处理器在系统总线20上接收到响应SYNC总线操作的一个“Null(空)”信号,处理器便完成该SYNC总线操作。响应SYNC总线操作,处理器将在系统总线20上接收到一个或多个“ReRun(重新运行)”信号,除非与直到在系统总线20上已经完成了前面监听到的总线操作以及由前面监听到的总线操作所导致的监听推压,此时,处理器将在系统总线20上接收到响应该SYNC总线操作的一个“Null”信号。响应SYNC指令,处理器在完成由监听到的总线操作引起的所有存储缓冲器项以前,不调度后面的指令。如果不能进行重新排序,及如果只是从系统总线20存取存储器阵列,则存储设备可以忽略该SYNC总线操作。
权利要求
1.设备间通信的一种方法,包括下述步骤从一个第一设备输出一个信号;响应上述信号,第二与第三设备启动至少一个动作;输出一个上述第二与第三设备是否完成了上述动作的指示;以及在上述第三设备不重新启动上述动作的情况下,上述第一设备响应表示上述第二设备未能完成上述动作及上述第三设备完成了上述动作的上述指示,重新输出上述信号。
2.权利要求1的方法,其特征在于还包括响应上述重新输出的信号,输出上述第二设备是否完成了上述动作的一个附加指示的步骤。
3.权利要求1的方法,其特征在于还包括从上述第二设备输出一个附加信号的步骤,其中上述重新输出步骤包括响应上述附加信号,从上述第一设备重新输出上述信号的步骤。
4.权利要求3的方法,其特征在于输出上述附加信号的上述步骤包括响应上述第二设备完成上述动作,输出上述附加信号的步骤。
5.权利要求3的方法,其特征在于输出上述附加信号的上述步骤包括响应上述第二设备预测上述动作的完成,输出上述附加信号的步骤。
6.权利要求5的方法,其特征在于还包括响应上述重新输出的信号,输出上述第二设备是否完成了上述动作的一个附加指示的步骤。
7.权利要求6的方法,其特征在于输出上述附加指示的上述步骤包括输出表示上述第二设备未能完成上述动作,从而上述第二设备错误预测上述动作的完成的上述附加指示的步骤。
8.权利要求1的方法,其特征在于输出上述指示的上述步骤包括下述步骤从上述第二设备输出一个表示上述第二设备未能完成上述动作的重新运行指示;以及从上述第三设备输出一个表示上述第三设备完成了上述动作的空指示。
9.权利要求1的方法,其特征在于输出上述指示的上述步骤包括在启动上述动作以后的一段预定时间里输出上述指示的步骤。
10.用于设备间通信的一种系统,包括一个第一设备,用于输出一个信号;以及耦合于上述第一设备的第二与第三设备,用于响应上述信号,启动至少一个动作,及用于输出上述第二与第三设备是否完成了上述动作的一个指示,其中上述第一设备,在上述第三设备不重新启动上述动作时,响应表示上述第二设备未能完成上述动作而上述第三设备完成了上述动作的上述指示,重新输出上述信号。
11.权利要求10的系统,其特征在于上述第二设备响应上述重新输出的信号,输出上述第二设备是否完成了上述动作的一个附加指示。
12.权利要求10的系统,其特征在于上述第二设备输出一个附加信号,以及上述第一设备响应上述附加信号,重新输出上述信号。
13.权利要求12的系统,其特征在于上述第二设备响应上述第二设备完成上述动作,输出上述附加信号。
14.权利要求12的系统,其特征在于上述第二设备响应上述第二设备预测上述动作的完成,输出上述附加信号。
15.权利要求14的系统,其特征在于上述第二设备响应上述重新输出的信号,输出上述第二设备是否完成了上述动作的一个附加指示。
16.权利要求15的系统,其特征在于上述第二设备输出表示上述第二设备未能完成上述动作,从而上述第二设备错误预测上述动作的完成的上述附加指示。
17.权利要求10的系统,其特征在于上述指示包括来自上述第二设备的表示上述第二设备未能完成上述动作的一个重新运行指示;以及来自上述第三设备的表示上述第三设备完成了上述动作的一个空指示。
18.权利要求10的系统,其特征在于上述第二与第三设备在启动上述动作之后的一段预定的时间里,输出所述指示。
全文摘要
用于设备间通信的方法和系统,从第一设备输出一个信号,响应该信号,第二和第三设备启动至少一个动作,输出第二和第三设备是否完成了上述动作的一个指示,在第三设备不重新启动上述动作的情况下,第一设备响应表示第二设备未能完成上述动作及第三设备完成了上述动作的指示,重新输出上述信号。
文档编号G06F13/36GK1343054SQ0113399
公开日2002年4月3日 申请日期1995年7月7日 优先权日1994年8月31日
发明者M·S·艾伦, R·K·阿里密尔里, J·M·凯泽, W·K·卢丘克 申请人:国际商业机器公司, 摩托罗拉公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1