本发明涉及一个使用全局总线实现多个处理器间的串行数据传输的通信网络。更具体地说,本发明涉及一种与全局总线有关的网络,这类全局总线具有能增加信道带宽利用率并更稳定地控制整个网络中的误差的性质。 全局总线网络是网络拓扑的一种,它通过连接在网络中的多个处理器构成的全局总线通路使微处理器间串行数据的发送和接收成为可能。同时,在全局总线系统中,在多个处理器间通过总线的串行数据传输,是通过一圆片形(Round-Robin)结构的允牌进行传送。
参阅这里公开的图1,传统的网络的部件包括处理器10、总线控制单元30、和总线故障检测和控制单元20。所述处理器10控制数据传送期间发生的情况的总的状态。所述总线控制单元30能够与处理器10接口并能根据来自处理器10的总线请求信号输入向所述处理器10输出一总线确认信号。另外,所述总线故障检测和控制单元20在收到总线确认信号时检测总线的故障,如检测到故障发生则向处理器10提供一故障确认信号,并同时向所述总线控制单元30发出一总线禁止信号。现参阅图2,在传统的处理器节点(node)中的总线控制单元30包括DMAC(直接存储存取控制器(Direct Memory Access Controller)31、SIO(串行I/O)32、总线驱动器34和一个总线控制模块33。
所述DMAC31能够为快速数据传送高速存取存在处理器10地局部存储器中的数据。SIO32把DMAC31从处理器10的局部存储器中获得的并行数据转换成用于串行数据通信的串行数据。总线驱动器34提供处理器和网络之间的实际连接(Ex,IEEE488)装置。如果认为在收到来自处理器10的总线请求信号时该处理器拥有允牌,则总线控制模块33能向处理器10发出总线确认信号,并能通过总线驱动器34发送来自SIO32的确认的数据。以及由网络(GBI)送到SIO32的数据。下面根据附图解释总线结构的传统网络的通常的工作过程。
在总线结构的网络中要发送数据的处理器10,在收到总线确认信号后,就可以发送数据,总线确认信号的接收意味着允许使用总线。总线故障检测和控制单元20作为计数器电路能和确定总线确认信号同步启动,并能通过在占有总线期间内计数脉冲来控制处理器节点的最大总线确定时间。如果处理器节点占用网络的时间超过预定的最大总线确定时间,总线故障检测和控制单元20就认为这是处理器节点本身发生了某种故障。因此,单元20向处理器10发送一故障确认信号并向总线控制单元30发出一总线禁止信号。结果,处理器节点最终释放总线,然后将最终得到某些恢复。更具体地说,所述处理器数据通信的处理可参考图3进行描述。当处理器有要发的数据时(一处理器确认一个到总线控制模块33的总线请求信号),确认总线请求步骤101按下面步骤进行:总线控制单元33计数确认同步时钟到一个固定的值(如,FFH),直到被给予使用总线的机会时(如,允牌),除非网络未被使用。此时,已请求总线的处理器10判断是否收到总线确认信号(中断信号,图5)。如果中断判断102为“是”,则DMAC/SIO起动103以一个总线确认信号开始。数据传送104以信号103为开始,且作出传送是否完成的判断105。如传送是否完成判断为“是”,则确定总线释放106;如果传送是否完成判断为“否”,则继续数据传送104。在执行106步后,系统返回101步。现参考图1,在总线结构的传统网络的处理器节点中,检测故障的方法限制了最大总线确定时间,以保证网络中连接的每个处理器节点都有相同的使用总线的机会。而且,在这个传统的网络中,故障检测仅在占用网络的处理器节点中进行。因此,传统网络中的系统不能检测通信信道引起的故障。这种系统还有另一个问题,即不能控制其它的空闲处理器,因为一个处理器和另一处理器之间不能互相监视。特别是当任一空闲处理器工作失常时,会出现很大问题。参看图2和图3,传统网络中的数据传送步骤是这样工作的,即在发出一总线请求信号以启动数据传送处理之后,处理器需等到总线确认信号被接收。因此,在数据传送处理期间就会发生多种延迟;由于总线请求信号在工作规程的任何时刻都会产生,所以由控制总线的传统硬件随机产生总线确认信号,因而控制总线的动作也是随机的;换句话说,总线请求信号和总线确定信号的间隔之间没有规律;需要一段时间来确认总线确认信号;启动DMAC和SIO需要额外的传播延迟。
这种延迟在某种程度上限制了总线形式的网络中的网络利用。传统网络的另一个问题,是工作情况下性能的恶化;在传统系统中,每个处理器节点一次能发送相同的最大数目的帧,而不考虑队列中每个处理器包括的数据量。因此,对在输入队列中有大负荷的处理器来说,由于输出队列中的拥挤,发送延迟就要增加。这引起整个发送的延迟。所以,在处理器的通信业务负荷彼此很不同的网络中,这一系统是不合适的。
为解决上述问题,本发明的一个目的是提供一个故障检测算法和由双节点结构即一个主处理器节点和一个从处理器节点构成的装置。这里,主处理器节点能检测整个网络的一些故障;另一方面,从处理器仅能检测自身的一些故障并能确定发自主处理器的故障检测信号。本发明的另一个目的是提供一种高速数据传送方法,该方法能提高总线的利用率。这一目的是由总线预定实现的。总线预定使得不必因总线请求信号的时间与总线确认信号的时间之间的不一致而进行延迟。本发明还有一个目的是提供多帧发送控制装置,其中根据通信业务负荷在处理器中鉴别可能的一次发送帧的数目。
因此,本发明的一个目的是提供结构上便宜且高性能的改进的网络。
本发明的另一个目的是提供一个有扩展的能力的处理器节点。
本发明的又一个目的是提供硬件支持机构以控制网络的执行。
本发明的又一目的,是为网络运行控制提供更有效的硬件支持。
简言之,本发明由结构上相同的主处理器节点和从处理器节点组成。每个处理器的部件都得到了改进。另外,还附加了一些部件,以改进网络的性能。
本发明实施例的新颖技术特征将在下面根据附图详细说明,其中:
图1是与总线构成的网络相连的传统处理器节点的结构框图;
图2是图1所示的总线控制单元的方框图;
图3是传统处理器节点中数据通信的流程图;
图4是构成本发明的处理器节点的方框图;
图5和图6说明了图4所示的全局总线网络中的故障检测和控制的工作流程图;
图7是本发明的处理器节点中的总线控制单元的扩展方框图;
图8是图7中总线控制模块的详细方框图;
图9是构成本发明的处理器节点中数据通信的流程图;
图10是构成本发明的、专为全局总线网络中的多帧发送设计的总线控制单元的方框图;
图11是图10中的各种信号有关的时间同步曲线图。
参看图4,构成本发明的一个处理器节点被分成两组:主处理器节点和从处理节点;主处理器节点包括处理器40、仅对发生在处理器40自身的故障感兴趣的故障控制单元50、检测和控制整个网络中故障的总线故障检测和控制单元60、以及包含有与总线网络接口并向处理器40发出总线确认信号的总线控制单元70;从处理器通过向主节点中的总线故障检测和控制单元(60,图4)发送故障信号来确认故障检测信号,并检测仅发生在自身的一些故障,而不能检测和控制整个网络中的故障。因此,从处理器节点包括总线故障检测单元80、用于检测从处理器节点自身故障的局部故障检测单元50A、能与全局总线网络接口并能向处理器40A发送总线确认信号的总线控制单元70A、和处理器40A。
参看图5和图6,本发明的全局总线网络中故障检测和控制工作,将分为主节点和从节点而详细加以解释。
首先,全局总线网络中的故障被大致分成两组。一种故障是占用网络的处理器节点产生的。另一组故障是从信道或从整个网络中产生的。
首先参看图5,在主处理器节点中检测和控制两类误差的步骤解释如下:检测网络故障判断210判定是否检测到一个网络故障。如果判断为“是”,确定故障确认信号211通过故障控制单元50被送到每个从处理器。在第211步后,执行处理器节点自身判定212,以判定是否发生了故障。如果为“是”,则执行确认主处理器判断213,以判定主处理器是否占用总线。如果为“是”,则转入释放总线状态214;如果为“否”,该系统重复开始第210步。如果处理器节点自身判断212为“否”,则执行确认从处理器判断215,以判定从处理器是否被确定;如果判断215为“是”,系统反回第210步;如果为“否”,告知网络故障步骤216就把固有网络故障告知用户。
参看图6,其中采用了描述检测和控制从处理器节点中故障的软件说明流程图;是在从处理器节点的总线故障检测单元80中作出检测故障判断220,以判断从处理器节点中是否发生故障。执行确认故障判断221以判断处理器是否收到总线故障检测和控制单元60发出的故障确认信号。执行总线确认检测判断222以由局部控制单元(50A,图4)判断是否有处理器占用网络。如果总线检测判断222为“是”,则执行确认处理器自身判断223,以判断从处理器(40A,图4)自身是否占用总线。如果判断223为“是”,则进行总线释放224,确认这类故障是来自从处理器自身。在第224步之后,从处理器(40A,图4)释放总线;如果判断223为“否”,则转到起始状态。如判断222为“否”,执行告知网络故障步骤225,认为故障发生在网络。
参看图7,构成本发明的总线控制单元(70,70A,图4)包括一个DMAC14、一个SIO15、一个DMAC/SIO连接程序16、一个总线控制模块17、和一个总线驱动器18。所述DMAC/SIO连接程序16控制DMAC和SIO的工作。所述总线驱动器18提供到全局总线(GB2)的连接。所述总线控制模块17在其收到来自处理器的总线请求信号后,确认一个到DMAC/SIO连接程序16的总线确认信号。
参看图8,总线控制模块(17,图7)包括缓冲控制单元5、总线判优程序6和局部计数器7;所述总线控制单元5把来自SIO15的串行数据送到与BRCLK(总线请求时钟)同步的总线驱动器18并把来自总线的数据经过总线驱动器18送到SIO15。所述局部计数器7从一初始值到一确定值(优先级数,比如FFM)计数同步时钟;当到达该确定值(如,FFH)时,有作为优先级数的该确定值的处理器就能占用总线。如果优先级的最低数被设定,则局部计数器7通过产生一个FRS(帧复位同步)信号,使每个处理器节点的计数器回到初始值。所述总线判优程序6,以来自处理器的总线请求信号输入和来自局部计数器的ASTCLK和AST输入,输出总线确认信号。上述结构的总线控制模块的工作将详细描述如下;每个处理器被给定固定标识号码,以控制给予使用总线的机会。这个标识号码作为初始值被输入所述局部计数器7中。局部计数器7在启动之后与ASTCLK同步,局部计数器7仅在总线空闲时计数。当达到某一确定值(比如,FFH)时,总线被允许使用。
当一个处理器获得总线时,如不保留总线,总线将不能被处理器确认。但当处理器获得总线时,如处理器保留总线,则总线将被处理器确认如下;图8所示的总线判优程序(6,图8)通过发出一AST信号使局部计数器不能使用,并通知缓冲控制单元5总线确认状态已被完成。然后缓冲控制单元驱动总线驱动器。总线判优程序也告知DMAC/SIO连接程序16一个总线确认信号,以开始数据接收。当数据接收完成时,图8中所示的总线判优程序检查总线请求信号和传送完成信号。如果仅有传送完成信号存在,总线判优程序6则释放总线。图8中所示的缓冲控制单元5使总线驱动器18不能工作,以使所有的局部计数器重新计数,从而使下个处理器占用总线成为可能。如果所有的处理器都已占用总线一次,则最后占用总线的处理器(即有最低优先级号码的处理器)用与FRS信号同步的每个处理器的所有不同的ID号码设定局部计数器(6,图8)。
参看图9,构成本发明的包括总线控制单元的处理器节点中的数据通信的工作过程是这样的:当所述处理器要传送数据时,向总线控制模块(17,图7)请求总线(第301步)、完成第301步后,同时进行驱动DMAC和SIO步(第302步)。当进行302步时,DMAC/SIO连接程序阻塞DMAC和SIO之间的数据通信,因为还没有收到来自所述总线控制模块的总线确认信号。总线控制模块17在第301步收到总线请求信号后,进行总线存取提供判断303,以判断请求总线的处理器是否能占用总线;如果判断303为“否”,则总线控制模块仍要判断,直到处理器在顶定后能够占用总线为止;如果判断303为“是”,则发送数据步(第304步)如下进行:在总线控制模块17占用总线后,它启动总线驱动器18,然后向DMAC/SIO连接程序16发出总线确认信号。
DMAC/SIO连接程序识别总线确认信号,而后用一种特殊控制信号驱动DAMC14和SIO15,使预定了总线的处理器可以进行数据处理,而不考虑任何其它请求总线的处理器。第304步完成之后,进行数据发送完成判断305。由305步的结果确定是否产生传送完成信号。如第305步判断为“是”,则释放总线(第306步),从而使下一个处理器能够占用总线。在第306步完成后,系统反回第301步,重新开始。
参看图10,构成本发明的且为多帧发送设计的总线控制单元包括:帧计数器100、总线确定确认单元200、数据发送请求单元300、总确定控制单元400、帧间隔控制单元500、SIO600、SIO/DMA连接程序70、DMA800、和帧发送完成单元900。所述帧计数器100计数一次发送的帧的数目。所述总线确定确认单元200作用与其名称指出的相同。所述数据发送请求单元300告知处理器是否有数据要发送。所述确定控制单元400决定总线是否能被帧计数器100产生的LMULTI*信号输入、总线确定确认单元200产生的Tx-ALLOW信号输入、和来自数据发送请求单元300的TxSTB*输入所占用。所述帧间隔控制单元500消除帧之间的间隔。所述SIO600向总线发送串行数据。所述帧发送控制单元900检测一帧的发送是否完成。所述SIO/DMA连接程序700,在收到来自SIO600的STRE-*信号和来自总线确定控制单元400的Tx-RDF*信号后,产生DTX REQ*(数据发送请求)信号到DMA。帧计数器100的输入代表输往总线确认单元400的Tx-COM*(发送完成)信号的帧数。
参看图11,上述部件构成的总线控制单元的操作将解释如下;图11说明了根据多帧发送处理的总线控制单元的输入和输出的时间同步图。
多帧发送顺序如下:
1.当处理器要发送数据时,该处理器命令数据发送请求单元(300,图10)产生TXSTB*信号(A,图11),并随后通知总线确定控制单元(400,图10)存在要发送的数据;(开始)
2.SIO(600,图10)复位到对应TXSTB*信号的初始状态。而后,SIO产生STXREQ*信号(B,图11);
3.当总线到达时,总线确定确认单元(200,图10)产生一个Tx ALLOW*信号(G,图11),并把它发送到帧计数器(100,图10)和总线确定控制单元(400,图10);
4.所述帧计数器(100,图10)和总线确定控制单元(400,图10)以TX ALLOW(G,图11)信号进行响应;相应的帧计数器输入预定的帧计数值(P1…PN)。如果TXSTB*(A)信号被确认,则相应的总线控制单元产生一个ASTRDF*信号(H,图11);
5.总线确定控制单元(400,图10)在总线被确定后,也产生一TX RDF*(I,图11)信号,把数据从SIO送到DMA;
6.响应于SIO(600)产生的STXREQ*信号(B),SIO/DMA连接程序(700,图10)产生一个DTXREQ*(C,图11)信号到DMA(500,图10);
7.响应于STXREQ*信号(B),所述DMA(800,图10)产生一个TX ACK*信号(D,图11)到帧发送完成单元(900,图10)和SIO(600,图10);
8.响应于TXACK*信号,SIO发送总线从DMA收到的数据。当DMA完成一帧的发送时,它产生DONE*信号(E,图11)。DMA在每个帧发送完成的点确定DONE*信号。
9.响应于DONE*信号和TXACK*,帧发送完成单元(900,图10)产生TX DONE*信号(F,图11)。
10.当TXDONE*信号被确定时,帧计数器(100,图10)计数在总线占用期间内发送的帧的数目,而且,帧间隔控制单元(500,图10)产生一个TXCOMP*持续一固定时间的信号(J,图11),以给出帧之间的间隔。
11.响应于TXCOMP*信号(J),总线确定控制单元(400,图10)产生一个不活动的TXRDF*信号(I,图11);这样DMA(800,图10)被控制,不产生DTXREQ*信号(C,图11);
12.当帧间隔控制单元(500,图10)拒绝TXCOMP*信号(J,图11)时,产生一个总线RES*(K,图11);
13.根据总线RES*信号(K)、TXSTB*信号(A)和LMVLTI*信号(L,图11),总线确定控制单元(400,图10)决定处理器是否仍然保留总线;上述决定是这样进行的;如果TXSTB*信号(A)待用,且产生了LMULTI*信号(L),总线确定控制单元(400,图10)产生ASTRDF*信号等待释放占用的总线。但是,如果TXSTB*信号(L)没有产生,总线确定控制单元(400,图10)则保留总线以完成多帧发送(结束)。
下面是图11中所用的缩写:
TX STB*-发送选通脉冲
STX REQ*-来自SIO TX请求
DTX REQ*-数据发送请求
TX ACK*-发送确认
TX DONE*-发送完成(Transmirsion Done)
TX ALLOW*-发送允许
ASTRDF*-确定准备标志
TX RDF*-发送准备标志
TX COMP*-发送完成
BUS RES*-总线释放
LMULTI*-最后的多个帧(Last Multiframe)