CN1111799C - 用于多处理器系统的改进的信号发送协议方法和信号发送协议电路 - Google Patents

用于多处理器系统的改进的信号发送协议方法和信号发送协议电路 Download PDF

Info

Publication number
CN1111799C
CN1111799C CN95191949A CN95191949A CN1111799C CN 1111799 C CN1111799 C CN 1111799C CN 95191949 A CN95191949 A CN 95191949A CN 95191949 A CN95191949 A CN 95191949A CN 1111799 C CN1111799 C CN 1111799C
Authority
CN
China
Prior art keywords
bus
signal
circuit
cpu module
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
CN95191949A
Other languages
English (en)
Other versions
CN1143421A (zh
Inventor
B·F·本内特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN1143421A publication Critical patent/CN1143421A/zh
Application granted granted Critical
Publication of CN1111799C publication Critical patent/CN1111799C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system

Abstract

用于多处理器系统(10)中的改进的信号发送协议,可以在I/O总线访问时允许对共用系统总线(18)的并行访问。这缩短了系统总线的空闲时间,但没有使得系统总线的结构复杂化,因此不会减小总线整体带宽的增大。改进的总线结构采用系统产生的I/O总线繁忙指示信号(IOBUS_BSY-)信号来向所有处理器(12)指示I/O总线(20)正被使用,所有其他的I/O请求都必须保持到当前的事务处理完成为止。通过禁止其他处理器(12)执行I/O请求,系统总线(18)不必保持在空闲状态,而可以在I/O总线(20)被使用时用于存储器与处理器之间和处理器与处理器之间的事务处理。通过缩短系统总线的空闲时间,系统总线的整体性能被大大增强。

Description

用于多处理器系统的改进的 信号发送协议方法和信号发送协议电路
技术领域
本发明相关于改进的总线桥接器(bus bridge),该桥接器能实现在多处理器中对I/O总线和系统总线的并行访问。
背景技术
在多处理器系统中,所有的处理器共享一条系统总线和一条I/O总线,这种公用总线结构限制系统总线和I/O总线每次只能进行单一的传送。I/O总线桥接器将系统总线与I/O总线连接起来。因此,当一台处理器与系统或I/O总线进行通信时,其它处理器或者忙于其自身的内部操作,或者等待系统和I/O总线空闲下来。处理器等待总线变为可用状态所花费的时间被称为总线等待时间。
在常规的多处理器中,采用公用总线结构,当进行一次I/O请求时,系统总线实际上只是在很短的时间被用来将请求地址从处理器传送到I/O总线桥接器。然而,在整个数据传送过程中,总线桥接器都使系统总线保持空闲。I/O总线上的一个I/O控制器锁定来自I/O总线桥接器的地址并处理该请求。数据传送时间取决于I/O装置的存取时间,该时间可能会相当长。当I/O周期完成后,系统总线和I/O总线都可以为其它处理器所用。
当一个处理器正使用I/O总线之时,总线桥接器保持系统总线空闲,其它处理器必须等待两条总线都可用时,才启动任何类型的数据传送。当处理器数量增多时,总线访问次数增加,因此,总线等待时间延长。当I/O总线正被访问时,系统总线被保持空闲,并同时等待I/O周期完成,这样的时间周期是典型的总线结构中所固有的。在这个时间过程中,提出请求的处理器并不使用系统总线,而是保持系统总线,以防止其它处理器访问系统总线,直到它从I/O总线得到指示I/O周期已经结束的回答为止。在等待I/O周期完成之时,系统总线被保持,而不是处于活跃状态,这是多处理器系统中造成总线等待时间的主要原因。
为了缩短系统总线的空闲时间,需要研制一个协议,在允许系统总线级事务发生之时,阻止任何新的I/O级事务发生。一种可能的解决方案是采用“退下(back-off)”操作,一旦在I/O总线上的一个事务已经开始就取消已经启动的任何I/O请求,从而释放用于存储器和处理器与处理器之间的传送的系统总线。问题是某些I/O总线,如EISA总线,不允许适度的“退下”操作。由EISA总线提供的唯一的“退下”操作会导致提出请求的处理器接收一个不需要的错误状态。
如果I/O总线不能提供适度的退下操作,如EISA总线那样,仅有的其它解决途径是“退下”系统总线。然而在多处理器系统中,只需要“退下”企图访问I/O总线的处理器,并允许系统总线上的其它处理器继续进行。一个消除信号会“退下”整个系统总线,而“退下”整个总线不仅不会解决总线等待时间问题,还会产生另外的问题。
另一个方案是对I/O总线桥接器上的每个处理器产生一个“退下”信号。在这种情况下,要将N个引脚加到总线桥接器,来对N个处理器的每一个传送单独的退下信号。多处理器系统中的处理器数目通常是5到8个,因此在I/O总线桥接器上平均要加上5到8个引脚。典型的总线桥接器是引脚有限的一个电路,即没有许多额外的引脚可用来增加输出信号。另外,对每个需要受到控制的退下信号,必须给总线桥接器加上逻辑。由于所增加的这些复杂性,使得该解决方案不能成为最佳方案。此外,如果I/O总线桥接器允许数据被超高速缓冲存储,那么超高速缓冲存储器的相干协议使得退下协议的启动非常困难。一旦一个请求被启动,其它处理器模块可能监视(snooping)其超高速缓冲存储器,并且一旦被监视,就不能是“未被监视的”。因此,将单个处理器系统中的简单的退下协议用于多处理器系统不是最佳的解决方案。
造成多处理器系统中的等待时间的另一个因素是大部分I/O总线要比系统总线慢。例如,一条公用的多处理器系统总线以25MHz运行,宽度为64位。一条公用的I/O总线,如EISA总线,以8MHz运行,宽度仅仅为32位。因此,一条典型的系统总线可以以200M字节/秒的速度传送数据,而一条EISA总线只能以33M字节/秒的速度传送数据。所以,当数据以I/O总线的较慢的数据速度和较小的位宽从I/O总线向系统传送数据时,系统总线在一个较长的可用总线时间被保持。由于较快的系统总线被强迫等待较慢总线完成其事务,因此造成了系统总线速度和效率的浪费,这也是造成系统总线等待时间的一个因素。
因此,在多处理器系统中需要缩短在I/O总线事务处理和冗长的I/O数据传送过程中由于系统总线空闲所造成的总线等待时间。
发明内容
本发明的一个目的是在多处理器环境下利用一个公用系统总线的系统总线空闲时间以实现在进行对连接至公用系统的公用I/O总线的一个访问过程中实现对公用系统总线的并行访问。
本发明的另一个目的是在多处理器环境下当一个公用I/O总线繁忙时通过禁止其它的处理器执行I/O请求以增强整体的系统总线性能。
本发明的再一个目的是通过利用一个缓冲器电路来减少从一个I/O总线向一个系统总线传送数据所需要的时间。
本发明的有益效果在于,公用系统总线不必保持空闲并且能够用于处理器-存储器事务处理和用于处理器-处理器事务处理,由此减少当I/O总线繁忙时公用系统总线必须保持空闲的时间量,并且,系统总线能够在传送数据的同时处理其它事务,由此改进从I/O总线至系统总线的数据传送的效率。
本发明的一个较佳实施例包括用于多处理器系统中的一个改进的信号发送协议。该多处理器最好是包括若干与一条公用系统总线相连和经由一个I/O总线桥接器连接到I/O总线的CPU模块。本发明的设计利用了系统总线的空闲时间,并且能在I/O总线访问过程中实现对公用系统总线的并行访问。此外,本发明不会增加系统总线结构的复杂性,因此不会降低总线带宽的整体增大。
较佳实施例中改进的总线结构采用系统产生的一个I/O忙(IOBUS_BSY-)信号向所有的处理器指示I/O总线正在使用,所有其它I/O请求必须被保持到当前事务处理完成为止。通过阻止其它处理器执行I/O请求,系统总线不必保持空闲,而是可以在I/O总线被使用的同时用于处理器到存储器和处理器到处理器的事物处理。通过缩短系统总线必须保持空闲的时间,整个系统总线的性能被大大增强。
在一个较佳的实施例中,用于多处理器系统的一个改进的信号发送协议电路包括一个I/O总线协议电路,在每个CPU模块上的一个总线控制器逻辑电路,以及在每个CPU模块上的一个I/O总线禁止电路。I/O总线协议电路最好位于I/O总线桥接器上,并且产生一个具有第一和第二逻辑状态的I/O总线繁忙指示信号。I/O总线繁忙指示信号的第一逻辑状态指示I/O总线目前正忙于处理一I/O总线事务,第二逻辑状态指示I/O总线可用于处理I/O总线事务。在每个CPU模块上的每个总线控制器逻辑电路从相应的CPU接收一个地址请求,并且控制CPU地址请求向系统总线的发送。在每个CPU模块上的I/O总线禁止电路进一步包括一个地址和循环类型的译码器和一个逻辑电路。地址和循环类型的译码器产生一个具有第一和第二逻辑状态的I/O总线访问请求信号。I/O总线访问请求信号的第一逻辑状态指示CPU地址请求需要对I/O总线的访问,而第二逻辑状态指示CPU地址请求不需要对I/O总线的访问。该逻辑电路最好有第一和第二输入,该逻辑电路的第一输入连接到I/O总线访问请求信号,第二输入连接到I/O总线繁忙指示信号。逻辑电路的输出产生一个禁止信号,该禁止信号被连接到总线控制器逻辑电路,以禁止CPU地址请求向系统总线的传送,直到I/O总线完成当前的I/O事务处理为止。
在一个较佳实施例中,该改进的信号发送协议电路进一步包括一个设置在系统总线和I/O总线之间的缓冲电路,其中,从系统总线向I/O总线传送的数据被以系统总线速度传送到该缓冲器电路,并以I/O总线速度从该缓冲电路传送出去,从I/O总线向系统总线传送的数据被以I/O总线速度传送到该缓冲器电路,并以系统总线速度从该缓冲电路传送出去。
缓冲器电路缩短数据从I/O总线向系统总线传送的时间周期。该缓冲器电路最好位于I/O总线桥接器上,它以I/O总线的较低速度接收来自I/O总线的数据,并且存储该数据。当数据从I/O总线向缓冲电路传送时,系统总线可以自由地处理其他事务,并且不被中断来以I/O总线的较低数据速度接收数据。一旦所有的数据被存储在缓冲电路中后,总线桥接器通知系统总线,并以系统总线的较快数据速度将所有数据从缓冲器电路猝发到系统总线。这一处理大大改进了I/O总线向系统总线进行数据传送的效率。
用于多处理器系统中的改进的信号发送协议方法的一个较佳实施例,包括在I/O总线桥接器上产生一个具有第一和第二逻辑状态的I/O总线繁忙指示信号,第一逻辑状态指示I/O总线目前正忙于处理I/O总线事务,第二逻辑状态指示I/O总线可用于处理I/O总线事务。此外,每个CPU模块接收I/O总线繁忙指示信号,并确定一个CPU地址请求是否需要访问I/O总线,如果不论I/O总线繁忙指示信号的状态如何,CPU请求的地址都不需要访问I/O总线,那么当公用系统总线可用时,在该公用系统总线上处理该CPU地址请求。如果地址请求需要访问I/O总线,并且I/O总线繁忙指示信号处于第一逻辑状态,那么该CPU请求被保持。最后,如果地址请求需要访问I/O总线,并且I/O总线繁忙指示信号处于第二逻辑状态,那么当系统总线可用时,处理CPU地址请求。
附图说明
图1是多处理器系统的系统方框图,该系统具有本发明较佳实施例的总线结构。
图2是用于多处理器系统的一个典型的CPU模块的方框图及其与系统总线的通信方式。
图3是结合本发明的I/O总线协议电路的总线桥接器的方框图以及总线桥接器和系统及I/O总线之间的通信方式。
图4的状态图示出了在实施本发明的总线信号协议的每个CPU模块上的总线控制器的总线控制逻辑。
图5A的时序图示出了当第二CPU模块试图访问I/O总线时的时钟周期1-11,该模块在I/O控制器并行进行I/O总线访问时被禁止。
图5B的时序图示出了当第二CPU模块试图访问I/O总线时的时钟周期12-22,该模块在I/O控制器并行进行I/O总线访问时被禁止。
图6A的时序图示出了当一个没有被禁止的CPU模块试图访问I/O总线时的时钟周期1-11,没被禁止的原因是它与一个I/O控制器的I/O总线请求同时发生。
图6B的时序图示出了当一个没有被禁止的CPU模块试图访问I/O总线时的时钟周期12-22,没被禁止的原因是它与一个I/O控制器的I/O总线请求同时发生。
图7是结合本发明的I/O总线协议电路的另一个实施例的总线桥接器的另一个实施例的方框图。
图8的状态图示出了实施本发明的总线信号发送协议的总线桥接器的另一个实施例上的控制逻辑。
图9的状态图示出了在实施本发明的总线信号协议的每个CPU模块上的总线控制器的另一个实施例的总线控制逻辑。
图10A的时序图示出了当I/O总线忙于其他事务时,两个CPU模块试图访问I/O总线时的时钟周期1-11。
图10A的时序图示出了当I/O总线忙于其他事务时,两个CPU模块试图访问I/O总线时的时钟周期12-22。
实施例详细描述
本发明的较佳实施例包括一个用于多处理器系统10中的改进的信号发送协议,该系统有一个共用的总线系统(即处理器对共用的存储器进行存取,并且共享I/O资源)。图1示出了一个常规的多处理器系统1O,它包括若干CPU模块12(即CPU模块1、CPU模块2、......、CPU模块N),若干存储器模块14(即存储器模块1、存储器模块2、......、存储器模块M)以及若干I/O控制器16(即I/O控制器1、I/O控制器2、......、I/O控制器P)。CPU模块12和存储器模块14被连接到系统总线18,该总线进一步包括一条系统地址总线、一条系统数据总线和一条系统控制总线。I/O控制器16被一一连接到外围I/O设备(没有示出),并控制其运行。所有的I/O控制器16都被连接到一条I/O总线20。该I/O总线进一步包括一条I/O地址总线、一条I/O数据总线和一条I/O控制总线。总线桥接器22或I/O服务模块(IOSM模块)在系统总线18和I/O总线20之间提供一个接口,以控制I/O控制器16和系统总线18之间的数据流动。
图2示出了用于图1的多处理器系统10中的一个典型的CPU模块12的方框图。该CPU模块12最好包括一个微处理器24,一个带有内部译码逻辑的超高速缓冲存储器系统(CACHE)26,一个CPU或本地处理器总线28,总线收发器30和系统总线控制器逻辑32。根据本发明的一个实施例,每个CPU模块12又包括一个I/O总线禁止电路34。I/O总线禁止电路的其中一个实施例包括一个地址和循环类型译码器36,一个双输入的与门38和一个反相器40。
地址和循环类型译码器36被用于确定由微处理器24请求的地址是否需要访问I/O总线20。地址和循环类型译码器36在线路42上的输出是IOBUS_ACCESS信号。该IOBUS_ACCESS信号是一个高态有效信号,即,当它为真时处于逻辑高电平,当它为假时处于逻辑低电平。在线路42上的IOBUS_ACCESS信号被连接到双输入与门38的第一输入44。该双输入与门38的第二输入46被连接到反相器40的一个输出48。反相器40的输入50被连接到线路52上的IOBUS_BSY-信号,该信号由I/O总线协议电路上的逻辑线路产生,用于指示I/O总线目前正被使用,对此后面会作详细的描述。该IOBUS_BSY-信号是一个低态有效信号,即,当它为真时处于逻辑低电平,当它为假时处于逻辑高电平。因此,该IOBUS_BSY-信号由反相器40反相,以符合线路42上的高态有效逻辑信号IOBUS_ACCESS。双输入与门38的输出在线路54上产生一个INHIBIT_MP_ACCESS信号,该信号是一个高态有效信号,向总线控制器32指示微处理器24请求一个需要访问目前正被使用的I/O总线20的地址。线路54上的INHIBIT_MP_ACCESS信号被传送到总线控制器逻辑32,以禁止总线访问,直到I/O周期完成为止。总线控制器逻辑32将线路56上的若干总线收发器使能信号TRANS_ENB传送到处于无效电平的总线收发器30,以阻止微处理器的请求地址被呈现在系统总线18上,直到当前的I/O周期完成为止,对此后面要作详细的描述。此外,当系统总线上的有效数据已经准备响应CPU的地址请求猝发到处理器24时,总线控制逻辑32将线路58上的一个BRDY-信号返回到微处理器24。
图3示出了用于图1的多处理器系统10中的一个典型的总线桥接器的方框图。该总线桥接器22最好包括一个中央仲裁器60,一组双向地址和数据缓冲器62,以及一个控制逻辑电路63。控制逻辑电路63最好控制I/O周期的时序和某些系统总线控制信号的状态。根据本发明的一个实施例,总线桥接器22进一步包括一个I/O总线协议电路64,该电路包括一个地址译码器66和一个逻辑电路68。逻辑电路68是中央仲裁器60的一部分,该仲裁器被用来实施本发明的信号发送协议。
I/O总线协议电路64从系统总线18接受地址请求,将其发送到地址译码器66。地址译码器66确定系统总线上的地址请求是否需要访问I/O总线20。地址译码器42的输出是线路70上的一个MP-2-IO-ACCESS信号,它是一个高态有效信号。如果被请求的地址需要访问I/O总线20,那么MP-2-IO-ACCESS信号将是有效的。线路70上的MP-2-IO-ACCESS信号被传送到中央仲裁器60。
中央仲裁器60接受线路70上被译码的MP-2-IO-ACCESS信号,并确定I/O总线20是否需要响应被请求的地址。中央仲裁器60控制I/O总线18对一个提出请求的CPU模块12的授权,并控制启动并完成I/O访问所需要的信号交换信号(handshaking signal)。中央仲裁器60在线路72上接受来自相应的CPU模块12的一组系统请求(SBREQx-)信号(即SBREQ1-,SBREQ2-,...,SBREQN-)。中央仲裁器60将为系统总线18监控这些请求,并通过线路74向相应的CPU模块12返回一组系统总线确认(SBACKx-)信号(即SBACK1-,SBACK2,...,SBACKN-),向每个模块指示在何时授权访问系统总线18。
中央仲裁器60也监控I/O请求,即线路76上的一个IOBUS_REQ-信号,它来自于I/O控制器16,用于访问I/O总线20。中央仲裁器60检查来自CPU模块12和I/O控制器16的请求。然而,中央仲裁器60将授权一个I/O控制器16或一个CPU模块12在任何给定时间对I/O总线20的访问。
当I/O控制器16被授权访问I/O总线20时,中央仲裁器60在线路78上返回一个I/O总线确认(IOBUS_ACK-)信号。接受IOBUS_ACK-信号就是向I/O控制器16表明它可以将它的地址或数据放在I/O总线20上。
如果I/O控制器16请求对I/O总线18的访问,并且I/O总线20是可用的,那么中央仲裁器60将线路52上的I/O总线忙(IOBUS_BSY-)信号设置为有效电平。该IOBUS_BSY-信号52向所有的CPU模块指示I/O总线20已经被请求,并且CPU模块12必须保持它们的I/O请求直到当前事务处理完成为止。通过阻止其它CPU模块12执行I/O请求,系统总线18不必被保持空闲,并且可以用于存储器和CPU模块到CPU模块之间的事务处理,比如当使用I/O总线时超高速缓冲存储器的命中响应。
此外,总线桥接器22也包括一组双向地址和数据缓冲器62,它缩短数据从I/O总线20向系统总线18传送所需要的时间周期。I/O总线桥接器22上的缓冲器62可以以I/O总线20的较低速度接收来自I/O总线20的数据,并暂时存储该数据。在数据从I/O总线20向总线缓冲器22传送的同时,系统总线18可以任意地处理其它事务,并且不被中断来以I/O总线20的较低速度接收数据。一旦所有的数据都被缓冲器62存储起来,总线桥接器22通知系统总线18,并且将所有的数据都以系统总线18的较高速度从缓冲器62突然猝发到系统总线18。这一处理大大提高了从I/O总线20到系统总线18的数据传送效率。
在本实施例中,由CPU模块12向系统总线18呈现CPU请求地址被变更为总线控制器逻辑32和总线禁止电路34,对此后面要作进一步的描述。在地址请求被提供给系统总线18之前,总线控制器逻辑32和总线禁止电路34检查是否要求对I/O总线的访问,如果要求,总线控制器必须等待系统总线18和I/O总线20都可用后才能将其地址和其系统地址选通(SADDS-)放在系统总线18上。
参看图2和图4,即由CPU模块12上的控制器结合较佳实施例的I/O总线禁止电路电路34进行的地址请求的启动即产生一个SADDS-信号,将根据图4的状态图来进行描述。开始时,在状态S0,总线控制器32等待微处理器24在线路80上产生一个CPU地址信号选通(CADS-)信号。CADS-信号是一个低态有效信号,指示微处理器正发出一个地址请求。在线路80上的CADS-信号保持无效的同时,总线控制器32保持在状态S0等待一个地址请求。当线路80上的CADS-信号成为有效信号时,总线控制器32进入状态S1。
在状态S1,总线控制器32检查线路82上的一个地址总线可用(ABUSAVL)信号的状态及其自身在线路74上的系统总线确认(SBACKx-)信号。ABUSAVL信号是一个高态有效信号,它指示系统总线18何时可以从一个CPU模块12接受一个地址请求。SBACKx-信号是一个低态有效信号,它指示系统总线18已在何时确认了CPU模块12的总线请求。如果ABUSAVL信号不是有效的,即另一个CPU模块12正在使用系统地址总线,而且如果SBACKx-信号不是有效的,即系统总线18没有确认CPU模块12的地址请求,那么总线控制器32在状态S1保持等待。
如果总线控制器32接受一个处于有效电平的SBACKx-信号以及一个处于有效电平的ABUSAVL信号,那么总线控制器将进入状态S2。在状态S2总线控制器32检查线路86上系统总线忙(SBUSBSY-)信号的状态。SBUSBSY-信号是一个低态有效信号,指示系统总线18何时正处理由另一个CPU模块12所启动的先前事务。如果线路86上的SBUSBSY-信号是以无效电平被接受的,那么系统总线18是可用的,总线控制器32进入状态S4。在从状态S2向状态S4转换时,总线控制器32产生一个系统地址有效(SADDS-)信号,它向系统总线18指示存在一个有效的地址。
如果SBUSBSY-信号有效,那么总线控制器32检查线路42上的IOBUS_ACCESS信号的状态和线路52上IOBUS_BSY-信号的状态。IOBUS_ACCESS信号由CPU模块12上的地址和循环类型译码器36产生。如果IOBUS_ACCESS信号处于有效状态,那么由微处理器24请求的地址需要对I/O总线20进行访问。如上面所述,线路52上的IOBUS_BSY-信号是由总线桥接器22产生的,它指示I/O总线20何时被使用。如果IOBUS_BSY-信号是无效的,并且当SBUSBSY-信号有效时,IOBUS_ACCESS信号是无效的,那么CPU所请求的地址需要访问系统总线18,该系统总线当前处于忙状态,因此总线控制器等待在状态S2。如果IOBUS_BSY-信号有效,并且当SBUSBSY-信号有效时,IOBUS_ACCESS信号是有效的,那么所请求的地址需要访问I/O总线20,该总线当前处于忙状态,因此总线控制器32进入状态S3。
在状态S3,总线控制器监控IOBUS_BSY-信号的状态。当IOBUS_BSY-信号有效,指示I/O总线目前正忙于处理另一项事务时,总线控制器32等待在状态S3。一旦IOBUS_BSY-信号无效,总线控制器32返回到状态S1,因为现在I/O总线20是可用的,因此它又可以试图请求需要的地址。
在状态S4总线控制器32立即进入状态S5。在状态S5总线控制器32监控线路88上的事务保持(TRNSHLD-)信号的状态。该信号是低态有效信号,它由连接到系统总线18的每个装置驱动到有效电平,与此同时,每个装置确定它是否有被请求的数据(即该地址是否相应于装置所响应的一个地址)。当每个装置确定它不响应被请求的地址时,它发出TRNSHLD-信号。当线路88上的TRNSHLD-信号有效时,总线控制器逻辑32保持在状态S5。如果TRNSHLD-信号无效,总线控制器逻辑32返回到S0状态,等待下一个地址请求。
在一个如上面所述的多处理器系统10中,对每一个由相应的微处理器24请求的地址,每个CPU模块12上的每个总线控制器32不断地移经上述状态图的状态。CPU模块12与系统总线18和I/O总线20的交互作用将在下面参考图5A-5B进行描述。
图5A-5B示出了多处理器系统的I/O周期的时序图,该系统包括本发明的I/O总线协议,其中,当一个I/O控制器16已提出了对I/O总线20的控制后,一个第二处理器将被禁止访问I/O总线20。响应图4状态图的状态S1,第一微处理器(CPU1)、第二微处理器(CPU2)和第三微处理器(CPU3)的每一个启动一个CADS-信号(没有示出)到它们相应的总线控制器32。与此同时,每个微处理器24发送一个被请求的地址到总线收发器30。该被请求的地址也被传送到地址和循环类型译码器36,确定被请求的地址是否需要一次I/O访问,如果是,启动IOBUS_ACCESS信号(没有示出)。在CPU模块1的情况下,IOBUS_ACCESS信号没有被确立(asserted)。每个总线控制器32在线路72上传送一个总线请求(SBREQx-)信号。相应于状态图的状态S1,每个总线控制器32等待在线路74上接收系统总线确认(SBACKx-)信号,以及在线路82上接受来自中央仲裁器60的处于有效电平的ABUSAVL信号。
图5从时钟周期1开始,这时每个CPU模块12的总线请求被启动,即线路90上的SBREQ1-信号,线路92上的SBREQ2-信号,以及线路94上的SBREQ3-信号。在时钟周期1,CPU模块1已经收到了处于有效状态的SBACK1-信号,CPU模块2和CPU模块3上的总线控制器32正等待分别接收它们的系统总线确认(SBACKx-)信号SBACK2-和SBACK3-。在时钟周期1,相应于CPU模块1的状态图的状态S2,CPU模块1的总线控制器32等待在线路86上接收处于无效电平的SBUSBSY-信号。
如图5A中时钟周期2所示,一旦CPU模块1的总线控制器32在线路86上收到处于无效电平的SBUSBSY-信号,总线控制器32在线路96上发出一个处于有效电平的SADDS-信号。这在状态图中从状态S2向状态S4转换时发生。同样在时钟周期2,来自CPU模块1的系统地址经由SADDRxx线路98被呈现在系统总线上。从时钟周期2到5该地址有效。系统总线18上锁定被请求地址的装置,响应在线路96上收到的SADDS-信号,将被请求的地址锁定起来。
在时钟周期3,CPU模块1在线路90上发出系统总线请求信号SBREQ1-,因为CPU模块1已经将该地址放在系统总线18上,因此它已被授权使用系统总线18。在同一时间,线路88上的TRNSHLD-信号由连接到系统总线的每个装置驱动为有效信号,同时每个装置确定它是否有请求的数据(即该地址是否相应于装置所响应的一个地址)。当每个装置确定它不相应被请求的地址时,它在线路88上发出TRNSHLD-信号。这相应于状态图中的状态S5。由于线路98上的地址SADDRxx已经被呈现给系统总线18,线路96上的SADDS-信号被撤销(deasserted)。同样在时钟周期3,一个I/O控制器16通过确立线路76上的I/O总线请求信号IOBUS_REQ-,来请求对I/O总线20的访问。
在时钟周期4,线路100上的SBACK-信号被撤销,由此确认线路90上的SBREQ1-信号也被撤销。当在线路100上释放SBACK1-信号后,由于系统总线不再被授权给CPU模块1,因此中央仲裁器60确认下一个CPU模块12的请求。在这种情况下,中央仲裁器60在线路102上启动一个SBACK2-信号,将系统总线18授权给CPU模块2。响应线路76上启动的IOBUS_REQ-信号,中央仲裁器60启动一个处于有效电平的IOBUS_BSY-信号,以阻止其他CPU模块12访问I/O总线20的企图。
在时钟周期5,系统总线上的最后一个装置在线路88上发出TRNSHLD-信号,这是线路98上来自CPU模块1的地址ASDDRxx在系统总线18上有效的最后一个周期,并且相应于状态图中从状态S5到状态S0的转换。
在时钟周期6,由于来自CPU模块1的地址请求不再有效,线路82上的ABUSAVL信号返回到有效电平。总线桥接器22上的中央仲裁器60响应线路78上的IOBUS_ACK-信号,它向提出请求的I/O控制器16指示它已经被授权给I/O总线20。此外,I/O控制器16将有效数据放在I/O总线20的一组数据线路(IO_DATA)上,线路104上的这些数据信号从时钟周期6到时钟周期14是有效的。
由于先前在线路102上收到了处于有效电平的SBACK2-信号,又在线路82上收到处于有效电平的ABUSAVL信号,CPU模块2在时钟周期7移动到总线控制器时序图中的状态S2。CPU模块2已经将它的请求地址传送到总线收发器30以及地址和循环类型译码器36。该地址和循环类型译码器36确定被请求的地址是否需要一次I/O访问,如果是,那么启动IOBUS_ACCESS信号(没有示出)。在CPU模块2的情况下,地址请求需要访问I/O总线20。因此,IOBUS_ACCESS信号被确立在有效电平。
在时钟周期7,线路106上的一个时钟终止(CTERM-)信号由一个装置予以确立,该装置带有有效数据,指示该数据是可用的。该有效数据呈现在系统总线18的一组数据线路SMD【63:00】108上。CPU模块1在每个时钟周期8-11的前沿从系统总线18接收有效数据。同样在时钟周期7中,CPU模块2将它的请求地址放到系统总线18上。然而,由于线路52上的IOBUS_BSY-信号是有效的,线路96上的SADDS-信号没有被启动。由于没有线路96上的SADDS_信号的启动,因此CPU模块2的地址没有被系统总线18上的任何装置锁定。
在时钟周期8,由于CPU模块2在线路52上接收了处于有效电平的IOBUS_BSY-信号,CPU模块2上的总线控制器32进入状态S3,并等待接收IOBUS_BSY-信号,该信号处于无效电平,指示当前的I/O事务已经完成。另外,CPU模块2在等待I/O总线20变为可周的同时,撤销它在线路92上的总线请求SBREQ2-,以使得其它CPU模块12访问系统总线18。
在时钟周期9,中央仲裁器60撤销线路102上的SBACK2-信号,并确认撤销线路92上的SBREQ2-信号。当释放SBACK2-信号后,由于系统总线18不再授予CPU模块2,因此中央仲裁器60确认下一个CPU模块12的请求。在这种情况下,中央仲裁器60启动线路110上的SBACK3-信号,将系统总线18授予CPU模块3。
在时钟周期10,将数据传送到系统总线18的装置将线路112上的一个事务的系统处理结束(SEOT-)信号选通为低逻辑电平。在时钟周期11,CPU模块1已经接受了数据传送,并且线路106上的CTERM-信号返回到逻辑高电平。一旦线路106上的CTERM-信号返回到逻辑高电平,并且同时线路112上的SEOT信号被选通为低电平,那么线路86上的SBUSBSY-信号被设置为无效电平,原因是系统总线18的周期已经结束。同样在时钟周期11,CPU模块3将一个有效地址SADDRxx放在系统地址总线地址线路98上。线路98上的地址在时钟周期11-15是有效的。
CPU模块3先前在其地址和循环类型译码器36处收到了微处理器的请求地址。该地址和循环类型译码器36确定被请求的地址是否需要I/O访问,如果是,那么启动IOBUS_ACCESS信号(没有示出)。在CPU模块3的情况下,由于不需要I/O访问,IOBUS_ACCESS信号被没置为无效电平。CPU模块3上的总线控制器32已经在线路110上收到了系统总线确认(SBACK3-)信号,并且在线路82上收到了处于有效电平的ABUSAVL信号,因此处于状态图的状态S2。当在线路86上收到处于无效电平的SBUSBSY-信号后,CPU3在时钟周期12确立线路96上的SADDS-信号,如图5B所示。这发生在状态图中从状态S2向状态S4转换的时候。系统总线18上锁定地址的装置响应在线路96上接收的SADDS-信号对地址进行锁定。通过线路96上SADDS-信号的确立,系统地址总线不再可用,因此,线路82上的ABUSAVL信号被驱动为无效电平。最后,线路86上的SBUSBSY-信号被确立,指示系统总线18正忙于CPU模块3的请求操作。同样在时钟周期12,当在线路96上发出SADDS-信号之后,CPU模块3在线路94上释放系统总线请求线SBREQ3-,原因是CPU模块3已经将一个请求地址放在了系统总线18上,因此已经被授权使用系统总线18。
在时钟周期13,线路88上的TRNSHLD信号被每个连接到系统总线18的装置驱动到有效电平,与此同时每个装置确定它是否有被请求的数据。当每个装置确定它不响应被请求的地址时,它释放TRNSHLD-信号。这相关于状态图中的状态S5。由于地址已经被呈现给系统总线18,因此线路96上的SADDS-信号被撤销。在时钟周期14,最后一部分有效数据被从I/O控制器16传送到I/O总线20。
在时钟周期15,I/O控制器16撤销它在线路76上的总线请求信号IOBUS_REQ-,以使得其它装置访问I/O总线20,因为它的周期已经完成了。此外,系统总线18上的最后一个装置响应来自CPU模块3的请求在线路88上释放TRNSHLD-信号。该信号的释放相应于状态图中从状态S5向状态S0的转换。在状态S0,CPU模块3的总线控制器32等待来自其微处理器24的下一个地址请求。
在时钟周期16,线路81上的IOBUS_ACK-信号确认线路76上的IOBUS_REQ-信号的撤销。由于I/O总线20不再使用,线路52上的IOBUS-BSY-信号返回到一个无效状态。当线路52上的IOBUS_BSY-信号撤销后,CPU模块2的总线控制器32返回到状态图的状态S1,并且再一次试图访问I/O总线20,该总线现在是可用的。当系统总线18上来自CPU模块3的地址请求不再有效时,地址总线可用于另外的事务处理。因此,在时钟周期16,线路82上的ABUSAVL信号撤销。
在时钟周期17,CPU2又通过启动线路92上的SBREQ2-信号来请求对系统总线的访问。另外,线路106上的周期终止(CTERM-)信号由系统总线18上的装置予以确立,该装置带有有效数据,指示该数据是可用的。该有效数据提供到系统总线的数据线路SMD【63:00】108上。CPU模块1在每个时钟周期18-21的前沿从系统总线18接收有效数据。
在时钟周期18,线路110上的SBACK3-信号被撤销,由此确认线路94上的SBREQ3-信号的撤销。当在线路110上释放SBACK3-信号后,由于系统总线不再保留给CPU模块3,因此中央仲裁器60确认下一个CPU模块12的请求。在这种情况下,中央仲裁器60在线路102上启动一个SBACH2-信号,确认CPU模块2。
由于先前在线路102上收到了处于有效电平的SBACK2-信号,又在线路82上收到处于有效电平的ABUSAVL信号,CPU模块2在时钟周期19转换到总线控制器时序图中的状态S2。如上所述,由于CPU模块2请求的地址需要访问I/O总线20,因此,CPU模块2上的IOBUS_ACCESS信号被没置在有效电平(没有示出)。
在时钟周期20,CPU模块2将它的地址SADDRxx放到线路98上的系统地址总线上。然而,由于线路86上的SBUSBSY-信号仍然是有效的,线路96上的SADDS-信号没有被启动,因此CPU模块2的地址没有被系统总线18上的任何装置锁存。另外,在时钟周期20,响应CPU模块2的请求传送数据到系统总线18的装置将线路112上的事务的系统处理结束(SEOT-)信号选通为逻辑低电平。
在时钟周期21,CPU模块3已经接受了数据传送,并且线路106上的CTERM-信号返回到逻辑高电平。一旦线路106上的CTERM-信号返回到逻辑高电平,并且同时线路112上的SEOT信号被选通为逻辑低电平,那么线路86上的SBUSBSY-信号回到无效电平,原因是系统总线18上的周期已经结束
由于在线路86上收到了处于无效电平的SBUSBSY-信号,CPU模块3在时钟周期22确立线路96上的SADDS-信号。这发生在状态图中从状态S2向状态S4转换的时候。系统总线18上锁定地址的装置响应在线路96上接收的SADDS-信号对地址进行锁定。通过对线路96上SADDS-信号的确立,系统地址总线不再可以由其它CPU模块12访问,因此,线路82上的ABUSAVL信号被驱动为无效电平。最后,线路86上的SBUSBSY-信号被确立,指示系统总线18正忙于CPU模块2的请求操作。其余的I/O周期也以上述方式完成。
如图5A-5B所示以及如上所述,线路52上的IOBUS_BSY-信号在线路76上的IOBUS_REQ-信号启动之后的时钟周期启动。然而,线路78上的IOBUS_ACK-信号与线路52上的IOBUS_BSY-信号不在同一时刻启动,以阻止与某一个CPU模块12和某一个I/O控制器16试图并行访问I/O总线20所相关的问题。只要CPU模块12还没有收到线路52上的IOBUS_BSY-信号,就可以请求一次I/O访问。因此,I/O控制器16可以在CPU模块12请求I/O总线20的同时也请求I/O总线20。在由总线协议电路64在线路52上产生IOBUS_BSY-信号之后,到CPU模块12接收到线路52上的IOBUS_BSY-信号之前,由于需要一个时钟周期,因此,在中央仲裁器60将I/O总线18给予I/O控制器16来检查是否发生并行CPU模块访问之前,它需要等待至少一个周期。
在图5A-5B所示的较佳实施例中,当收到IOBUS_REQ-信号之后,IOBUS_ACK-信号在IOBUS_BSY-被确立之后的两个时钟周期被启动。两个时钟周期足以确定在响应I/O控制器1 6的请求启动IOBUS_BSY-信号的同时,是否有某一个CPU模块12请求了I/O总线20上的一个地址。两个时钟周期之后,已经确定CPU模块12已收到了线路52上的IOBUS_BSY-信号,并且在线路52上的IOBUS_BSY-信号撤销之前,将不再请求I/O总线访问。在检测到并行访问的情况下,由于终止CPU模块的请求会造成微处理器检测到错误情况,因此CPU模块被授权使用I/O总线,从而在CPU模块的周期完成之前,提出请求的I/O控制器16不会接收IOBUS_ACK-信号。
图6A-6B示出了在响应来自I/O控制器16的IOBUS_REQ-启动IOBUS_BSY-信号的同时,CPU模块2请求访问I/O总线20的情况。
在时钟周期1,每个CPU模块12的总线请求被启动(即线路90上的SBREQ1-信号,线路92上的SBREQ2-信号,以及线路94上的SBREQ3-信号被启动)。CPU模块1已经收到了线路100上处于有效状态的SBACK1-信号,CPU模块2和CPU模块3上的总线控制器32正等待分别接收它们的系统总线确认(SBACKx-)信号:线路102上的SBACK2-和线路110上的SBACK3-。在时钟周期1,相应于CPU模块1的状态图的状态S2,线路86上的SBUSBSY-信号处于无效电平,而线路82上的ABUSAVL-信号处于有效电平。
在时钟周期2,来自CPU模块1的系统地址经由SADDRxx线路98被提供经系统总线18。从时钟周期2到5该地址有效。同样在时钟周期2,由于SBUSBSY-处于无效电平,而ABUSAVL信号处于有效电平,CPU模块1上的总线控制器32在线路96上发出一个处于有效电平的SADDS-信号。这在状态图中从状态S2向状态S4过渡时发生。系统总线18上锁定该地址的装置,响应在线路96上收到的SADDS-信号,将被该地址锁定起来。
在时钟周期3,由于CPU模块1已经将它的地址放在了系统总线18上,CPU模块1在线路90上发出系统总线请求信号SBREQ1-,因此它已被授权使用系统总线18。在同一时间,线路88上的TRNSHLD-信号由连接到系统总线18上的每个装置驱动为有效信号,同时每个装置确定它是否有所请求的数据。当每个装置确定它不响应被请求的地址时,它发出TRNSHLD-信号。线路88上的TRNSHLD-信号的确立相应于状态图中的状态S5。另外,由于地址已经被提供给系统总线18,线路96上的SADDS-信号被撤销。
在时钟周期4,线路100上的SBACK-信号被撤销,由此确认线路90上的SBREQ1-信号的撤销。当释放了SBACK1-信号后,由于系统总线不再被授权给CPU模块1,因此中央仲裁器60确认下一个CPU模块12的请求。在这种情况下,中央仲裁器60在线路102上启动一个SBACK2-信号,将系统总线18授权给CPU模块2。
在时钟周期5,系统总线18上的最后一个装置在线路88上释放TRNSHLD-信号,这是线路98上来自CPU模块1的所请求的地址有效的最后一个周期,并且相应于状态图中从状态S5到状态S0的转换。此时,CPU模块1保持在状态S0,等待微处理器的下一个地址请求。
在时钟周期6,由于来自CPU模块1的地址请求不再有效,线路82上的ABUSAVL信号返回到有效电平。由于先前在线路102上收到了处于有效电平的SBACK2-信号,又在线路82上收到处于有效电平的ABUSAVL信号,CPU模块2在时钟周期7移动到总线控制器时序图中的状态S2。CPU模块2已经在总线收发器30以及地址和循环类型译码器36收到了微处理器的请求地址。该地址和循环类型译码器36确定CPU的请求地址是否需要一次I/O访问,如果是,那么启动IOBUS_ACCESS信号(没有示出)。在CPU模块2的情况下,地址请求需要访问I/O总线20。因此,IOBUS_ACCESS信号被确立在有效电平(没有示出)。
在时钟周期7,周期终止,线路106上的CTERM-信号由一个装置予以确立,该装置带有CPU模块1请求的数据,指示该数据是可用的。该有效数据通过数据线路SMD【63:00】108上提供给系统总线18。CPU模块1在每个时钟周期8-11的前沿从系统总线18接收有效数据。
在时钟周期9中,CPU模块2将它的地址SADDRxx放到系统总线18的地址线98上。然而,由于线路86上的SBUSBSY-信号处于有效电平,线路96上的SADDS-信号没有被启动,因此CPU模块2的地址没有被系统总线18上的任何装置锁定。在时钟周期10,将数据传送到CPU模块1的装置将线路112上的事务的系统处理结束(SEOT-)信号选通为有效电平。
在时钟周期11,CPU模块1已经接受了来自所述装置的数据传送,并且线路106上的CTERM-信号返回到无效电平。一旦线路106上的CTERM-信号返回到无效电平,并且同时线路112上的SEOT-信号被选通为有效电平,那么线路86上的SBUSBSY-信号回到无效电平,原因是系统总线18的周期已经结束。同样在时钟周期11,某一个I/O控制器16通过确立线路76上的I/O总线请求信号IOBUS_REQ-,来请求对I/O总线20的访问。
在时钟周期12,响应线路76上IOBUS_REQ-信号的启动,I/O总线协议电路64启动线路52上处于有效电平的IOBUS_BSY-信号,以阻止其它CPU模块12试图访问I/O总线20。然而,由于收到了线路86上处于无效电平的SBUSBSY-信号,CPU模块2也在时钟周期12在此线路96上确立SADDS-信号。这发生在状态图中从状态S2向状态S4的转换。
如上所述,当线路52上的IOBUS_BSY-信号响应来自I/O控制器16的一个请求而被启动的同时,一个CPU模块12用I/O请求启动线路96上的SADDS-信号,在这种情况下,提出请求的CPU模块12被提供给I/O总线20。在接收到线路78上的IOBUS_ACK-信号之前,I/O控制器16必须等待CPU模块的周期的完成。由于CPU模块2被提供给I/O总线20,线路52上的IOBUS_BSY-信号在CPU模块2的剩余I/O周期一直被确立。通过对线路96上SADDS-信号的确立,系统地址总线不再可用,因此,线路82上的ABUSAVL信号被驱动为无效电平。最后,线路86上的SBUSBSY-信号被确立,指示系统总线18正忙于CPU模块3的请求操作。
在时钟周期13,在线路96上发出SADDS-信号之后,由于CPU模块2已经将一个新请求的地址放在了系统总线18上,CPU模块2在线路92上释放系统总线请求信号SBREQ2-,因此已经授权使用系统总线18。同样在时钟周期13,线路88上的TRNSHLD-信号被每个连接到系统总线18的装置驱动到有效电平,与此同时每个装置确定它是否有被请求的数据。当每个装置确定它不响应被请求的地址时,它释放TRNSHLD-信号。这相关于状态图中的状态S5。最后,由于地址已经被提供给系统总线18,因此线路96上的SADDS-信号被撤销。
在时钟周期14,中央仲裁器60撤销线路102上的SBACK2-信号,并确认线路92上的SBREQ2-信号的撤销。当释放了线路102上的SBACK2-信号后,由于系统总线18不再被授权给CPU模块2,因此中央仲裁器60确认下一个CPU模块12的请求。在这种情况下,中央仲裁器60启动线路110上的SBACK3-信号,确认CPU模块3的请求。
在时钟周期15,系统总线18上的最后一个装置在线路88上释放TRNSHLD-信号。该信号的释放相应于状态图中从状态S5向状态S0的转换。这时CPU模块2上的总线控制器保持在状态S0直到微处理器请求一个新的地址为止。在时钟周期16,由于系统总线18上来自CPU模块2的地址请求不再有效,因此地址总线可用于其它事务处理,从而线路82上的ABUSAVL信号被确立。这相应于CPU模块3的状态图中的状态S2。
在时钟周期18中,CPU模块3将它的地址放到系统总线18上。然而,由于线路86上的SBUSBSY-信号处于有效电平,线路96上的SADDS-信号没有被启动,因此CPU模块2的地址没有被系统总线18上的任何装置锁定。
在时钟周期19,线路106上的周期终止(CTERM-)信号由总线桥接器上的控制逻辑63予以确立,另外,总线桥接器22上的控制逻辑63将线路112上的事物的系统处理结束(SEOT-)信号选通为低电平。来自I/O总线20的有效数据由总线桥接器22上的总线缓冲器62提供给系统总线数据线路SMD【63:00】108。
I/O总线桥接器22上的缓冲器62先前以I/O总线20的较低数据速度收到了来自I/O总线20的数据,并且暂时存储了该数据。在时钟周期19,一旦所有的数据都被缓冲器62存储起来后,总线桥接器22以系统总线18的较快数据速度在一个时钟周期内将所有的数据从缓冲器62猝发到系统总线18。CPU模块2在时钟周期20的前沿从系统总线18得到有效数据。
在时钟周期20,CPU模块2已经接受了数据传送,并且线路106上的CTERM-信号回到了高电平。一旦线路106上的CTERM-信号返回到高电平,并且同时线路112上的SEOT-信号被选通为低电平,那么线路86上的SBUSBSY-信号回到高电平,原因是系统总线18的周期已经结束。由于有效电平已经从I/O总线20传送到了总线缓冲器62,然后又传送到了系统总线18,因此CPU模块2的I/O总线事务已经结束。中央仲裁器60启动线路78上的IOBUS_ACK-信号,以使得I/O控制器16接收I/O总线20的控制。在I/O总线控制器16完成其事务处理的同时,线路52上的IOBUS_BSY-信号保持有效。
在时钟周期21,由于CPU模块3正试图访问系统存储器而不是处于忙状态的I/O总线20,因此允许它处理其地址请求。由于在线路86上收到了处于无效电平的SBUSBSY-信号,CPU模块3确立线路96上的SADDS-信号。这发生在状态图中从状态S2向状态S4过渡的转换。由于确立了线路96上的SADDS-信号,系统地址总线不再可用,因此线路82上的ABUSAVL信号被驱动为无效信号。最后,线路86上的SBUSBSY-信号被予以确立,指示系统总线18正忙于CPU模块3所请求的操作。CPU模块3的系统总线请求按前面相关于图6A-6B的CPU模块1所描述的方式来完成。
同样也在时钟周期21,相应于I/O控制器16的周期请求,I/O总线18上的有效数据是可用的。其余的I/O周期按前面相关于图5A-5B所描述的方式来完成。当I/O周期完成后,线路52上的IOBUS_BSY-信号被撤销(没有示出)。
图7示出了总线桥接器120的另一个实施例,其中中央仲裁器60的部分功能和控制逻辑63的部分功能由一个高度集成的I/O总线接口控制电路122所取代。该高度集成的I/O总线接口控制电路122具有传统的设计,如Intel公司的四个芯片组,部件号为82433LX、82434LX、82374EB和82375EB,它们能为系统总线18和两个I/O总线(即I/O总线1124和I/O总线2126)之间的接口提供必要的总线控制逻辑。总线接口电路122最好能够连接EISA类型和PCI类型的I/O总线。当总线接口电路122用于微处理器系统10中时,在每个CPU模块12上的I/O总线禁止电路34不需要改变。然而,总线控制器逻辑32被总线控制器逻辑的另一个实施例150所替代,如后面所述。此外,系统总线18和I/O总线124、126之间的接口信号将有少许改变。
总线桥接器120的这个实施例最好包括一个高度集成的I/O总线接口电路,一个仲裁逻辑电路128,控制逻辑130和一个定时电路132。控制逻辑电路130最好包括一个状态机,用于控制I/O周期的定时,对此下面将作更详细的描述。仲裁逻辑电路128最好在线路72上接收来自系统总线18的SBREQx-信号(即线路90上的SBREQ1-信号,线路92上的SBREQ2-信号,线路94上的SBREQ3-信号),并在线路74上返回系统总线确认信号(SBACKx-)(即线路100上的SBACK1-信号,线路102上的SBACK2-信号,和线路110上的SBACK3-信号),向每个CPU模块12指示它何时被授权访问系统总线18。每个I/O总线124、126将线路133上的I/O请求信号(IOREQx)发送到处理I/O总线请求的高度集成I/O总线接口电路122。一旦出请求的I/O总线124、126被授权访问,高度集成I/O总线接口电路122在线路134上返回一个处于有效状态的总线确认信号(IOACKx)。另外,高度集成I/O总线接口电路122控制线路135上的若干控制信号(IO-CONTROLx),后者控制I/O总线124和126的操作。
如果I/O总线124和126的其中一条希望传送数据到系统总线18,那么高度集成I/O总线接口电路将线路137上的一个IO_MP_REQ-信号传送到仲裁逻辑128。该仲裁逻辑128用线路136上由高度集成I/O总线接口电路122收到的一个系统总线确认信号(SBUS_ACK-)回答I/O总线请求。如果一个CPU模块12希望传送数据到I/O总线124和126的其中一个,那么高度集成I/O总线接口电路122在线路138上接收来自控制逻辑电路130的MP_IO_REQ-信号,当I/O总线124、126能够收到来自系统总线18的数据时,高度集成I/O总线接口电路122在线路139上传送一个处于有效状态的RDY-信号到控制逻辑电路130。当I/O总线124、126忙于事务处理时,高度集成I/O总线接口电路122在线路140上传送一个处于有效状态的BACK_OFF-信号到控制逻辑电路130。
再参看图8,总线接口电路122上控制逻辑电路130中的状态机将结合所示的状态图来进行描述。从状态S0开始,控制逻辑电路处于空闲状态,并等待在线路96上接收处于有效状态的SADDS-信号。如上所述,当CPU模块12将一个有效地址信号SADDRxx放在系统总线18的线路98上后,它产生SADDS-信号。一旦有效地址被提供给系统总线18,总线桥接器120就接收该地址并将其送到地址译码器66。地址译码器66判断被请求的地址是否需要分别访问I/O总线124或126。如果被请求的地址需要访问I/O总线124、126的其中一个,地址译码器66就启动线路70上的MP-2-IO-ACCESS信号。
控制逻辑电路130的状态机保持在S0状态,直到在线路96上接收到处于有效状态的SADDS-信号,并且在线路70上接收到处于有效电平的MP-2-IO-ACCESS为止,然后它进入状态S1。在状态S1,状态机通过监视线路139上总线准备信号(RDY-)来检查I/O总线的可用性。另外,控制逻辑130检查线路140上来自I/O总线124、126的退下(BACK_OFF-)信号的状态,当其处于有效状态时,线路140上的BACK_OFF-信号通知控制逻辑130,由于I/O总线124、126目前正忙于一件事务,当前的事务处理必须终止。如果线路139上的RDY-信号或线路140上的BACK_OFF-信号都不处于有效状态,那么控制逻辑130保持在状态S1。如果线路139上的RDY-信号处于有效状态,那么控制逻辑130进入到状态机的状态S2。如果线路140上的BACK_OFF-信号处于有效状态,那么控制逻辑130进入到状态机的状态S3。
在状态S2,控制逻辑130等待I/O总线20到系统总线18的传送结束,并在其结束之时启动线路112上的SEOT-信号,指示正在传送最后一部分有效数据。在传送结束之时,控制逻辑130返回到状态S0,等待下一次I/O总线请求。
在状态S3,控制逻辑130已经确定被请求的I/O总线124、126正忙于一个周期。该控制逻辑130将线路52上的IOBUS_BSY-信号设置为有效电平,以通知提出请求的CPU模块12以及其它的CPU模块12,I/O总线20目前正忙于一件事务处理。另外,控制逻辑130在线路112上返回处于有效电平的SEOT-信号,指示该周期已经结束。在提出请求的CPU模块12在线路52上收到处于有效电平的IOBUS_BSY-信号的同时,当它在线路112上也收到处于有效电平的SEOT-信号时,CPU模块12上的总线控制器150的另一个实施例确定I/O总线处于忙状态,它所请求的I/O访问已经结束。提出请求的CPU模块12将移动它的地址并将等待IOBUS_BSY-信号成为无效状态,然后将再提出请求。与此同时,其余的CPU模块12正监视线路52上的IOBUS_BSY-信号,如上所述。一旦其余的CPU模块12收到了线路52上处于有效电平的IOBUS_BSY-信号后,它们就不会试图进行I/O访问。另外,在状态S3,控制逻辑130将启动线路142上的START-信号,该信号被传送到定时器132,开始进行超时周期(time-out period),以确定已经被请求的I/O事务的类型。然后,控制逻辑130进入到状态S4。
在状态S4,控制逻辑130等待接收线路144上处于有效电平的TIMEOUT-信号,或接收线路136上的SBUS_ACK-信号。一旦从在线路142上收到START-信号开始经过了一个预定的时间周期后,定时器132就在线路144上产生TIMEOUT-信号。线路144上的TIMEOUT-信号用于确定什么时候当前的事务处理是I/O总线1124到I/O总线2 126类型的事务处理,或反过来。如果I/O事务处理是I/O总线1 124到I/O总线2 126类的或相反的事务处理,控制逻辑130将线路52上的IOBUS_BSY-信号设置为无效电平,从而使CPU模块12分别尝试对I/O总线124、126的访问。否则,控制逻辑130等待在线路136上接收来自仲裁逻辑电路128的SBUS_ACK-信号,以指示系统总线18正在确认分别来自I/O总线124、126的请求,从而使得数据被传送到提出请求的装置。然后控制逻辑130将撤销线路52上的IOBUS_BSY-信号,以使得其它CPU模块12访问I/O总线124、126。一旦收到线路144上处于有效电平的TIMEOUT-信号或线路136上处于有效电平的SBUS_ACK-信号,控制逻辑电路130将返回到状态S0,等待系统总线18的另一次请求。
如果线路144上的TIMEOUT-信号和线路136上的SBUS_ACK-信号保持无效,那么控制逻辑电路130就保持在状态S4,并且重新将线路52上的IOBUS_BSY-信号和线路142上的START-信号启动为有效电平。当控制逻辑130从状态S4转换到状态S0时,控制逻辑电路将线路146上的一个RESET-信号设置为有效电平,该信号被定时电路132接收,并复位超时时钟,直到在线路142上收到来自控制逻辑电路130的下一个START-信号为止。
总线桥接器电路的另一个实施例120与第一个实施例22不同,因为总线接口电路122消除了与I/O控制器16对I/O总线124、126同时提出访问请求以及CPU模块12请求有关的问题。在这两个实施例中,当另一个CPU模块12或I/O总线124、126中的一个已经请求访问时,如上所述,线路52上的IOBUS_BSY-信号制止所述的CPU模块启动I/O总线请求。另外,在提出请求的CPU模块12在线路52上收到IOBUS_BSY-信号之前,当另一个CPU模块12或I/O总线124、126的其中一个已经请求了I/O总线之时,另一实施例的总线桥接器电路120采用线路52上IOBUS_BSY-信号来“退下”,该请求访问I/O总线的CPU模块12。当第二CPU模块在线路52上的IOBUS_BSY-信号被启动之前请求访问I/O总线124、126时,线路112上的SEOT-信号和线路52上的IOBUS_BSY-信号回到有效电平。当该第二个提出请求的CPU模块12收到处于有效电平的这两个信号时,CPU模块12上另一实施例的总线控制逻辑150认识到它先前所请求的周期没有完成。CPU模块12上的总线控制逻辑32将等待线路52上的IOBUS_BSY-信号返回到无效电平,同时再启动先前的地址请求。CPU模块上另一实施例的总线控制逻辑150和另一实施例的总线桥接器120之间的通信将结合图10A-10B作更详细的描述。
图9示出了CPU模块12上另一实施例的总线控制器逻辑150的状态图。该另一实施例的总线控制器150被进行了改进,以便与该来自另一实施例的总线桥接器120的信号进行通信。在状态S0的开始,总线控制器150等待在线路80上接收处于有效电平的CPU地址选通(CADS-)信号。当CADS-信号保持无效时,总线控制器保持在状态S0。一旦在线路80上收到处于有效电平的CADS-信号,总线控制器就进入到状态S1。
在状态S1,总线控制器监视线路96上SADDS-信号、线路74上SBACKx-信号和线路86上SBUSBSY-信号的状态。当SADDS-信号和SBACKx信号保持无效时,总线控制器保持在状态S1。一旦线路74上的SBACKx-成为有效,而线路86上的SBUSBSY-信号无效,总线控制器150就进入状态S10。一旦线路96上的SADDS-信号有效而线路74上的SBACKx-信号保持无效,总线控制器就进入状态S2。
在状态S2,CPU模块已经准备将一个有效地址请求提供给系统总线18,但系统总线18还没有被授予提出请求的CPU模块12。在接下来的两个时钟周期,总线控制器150从状态S2转换到状态S3,然后是状态S4。在状态S4,总线控制器150监视线路42上的IOBUS_ACCESS-信号、线路52上的IOBUS_BSY-信号、线路74上的SBACKx-信号和线路86上的SBUSBSY-信号。如果线路42上的IOBUS_ACCESS-信号有效,线路52上的IOBUS_BSY-信号无效,线路74上的SBACKx-信号无效,线路86上SBUSBSY-信号有效,那么总线控制器进入状态S6。总线控制器150从状态S4向状态S6的转换表明CPU请求的地址需要访问I/O总线20,而I/O总线20目前没有忙于其他事务。另外,总线控制器150从状态S4向状态S6的转换表明系统总线18目前正忙于总线事务,因此没有同意提出请求的CPU模块的总线请求。
在状态S4,如果线路42上的IOBUS_ACCESS-信号无效,线路74上的SBACKx-信号无效,线路86上SBUSBSY-信号有效,那么总线控制器进入状态S7。总线控制器150从状态S4向状态S7的转换表明CPU请求的地址不需要访问I/O总线20。另外,从状态S4向状态S7的转换表明系统总线18目前正忙于一件事务,因此总线控制器150没有被授权访问系统总线。
最后,在状态S4,如果总线控制器在线路42上收到了处于无效电平的IOBUS_ACCESS-信号,或者如果控制器150在线路42上收到了处于有效电平的IOBUS_ACCESS-信号,以及线路52上处于无效电平的IOBUS_BSY-信号,并且如果总线控制器150已经另外在一条线路74上收到了处于有效电平的SBACKx-信号,在线路86上收到了处于无效电平的SBUSBSY-信号,那么总线控制器150进入状态S10。从状态S4向S10的转换表明了CPU请求的地址不需要访问I/O总线20,或者如果该地址需要访问I/O总线20,I/O总线20目前没有忙于事务处理。另外,从状态S4向状态S10的转换表明系统总线18目前是可用的,并且总线控制器150已被授权访问系统总线18。
如果在状态S4,总线控制器150收到了线路52上处于有效电平的IOBUS_BSY-信号和线路42上处于有效电平的IOBUS_ACCESS信号,那么总线控制器150进入状态S5。总线控制器150从状态S4向S5的转换表明CPU请求的地址需要访问I/O总线20,而I/O总线目前正忙于一件I/O请求。
在状态S5,总线控制器150监视线路52上IOBUS_BSY-信号的状态。如果线路52上的IOBUS_BSY-信号保持有效,那么总线控制器150保持在状态S5。一旦线路52上的IOBUS_BSY-信号转换到无效电平,总线控制器就进入状态S6。从状态S5向状态S6的转换表示I/O总线20不再忙于事务处理,因此可以用于访问。
在状态S6,总线控制器150监视线路52上IOBUS_BSY-信号、线路74上SBACKx-信号和线路86上SBUSBSY-信号的状态。如果线路52上的IOBUS_BSY-信号无效,线路74上的SBACKx-信号无效,线路86上的SBUSBSY-信号有效,那么总线控制器150将保持在状态S6。如果线路52上的IOBUS_BSY-信号有效,总线控制器150将返回到状态S5,直到线路52上的IOBUS_BSY-信号变为无效电平为止。如果线路74的其中一条上的SBACKx-信号有效,线路86上的SBUSBSY-信号无效,线路52上的IOBUS_BSY-信号无效,那么总线控制器150进入到状态S10。从状态S6向状态S10的转换表明了系统总线18可用于访问,并且系统总线18已经被授给了提出请求的CPU模块12。另外,从状态S6向状态S10的转换表明了I/O总线20可用于由提出请求的CPU模块12进行访问。
在状态S7,提出请求的CPU模块12的总线控制器150分别监视线路74上的SBACKx-信号和线路86上的SBUSBSY-信号的状态。如果SBACKx-信号保持无效而SBUSBSY-信号保持有效,总线控制逻辑就保持在状态S7。一旦CPU模块在线路74上的相交SBACKx-信号变为有效而线路86上的SBUSBSY-信号无效,总线控制器150就进入状态S10。从状态S7向状态S10的转换表明系统总线18现在可用于访问,并且提出请求的CPU模块12已被授权访问系统总线18。
在接下来的两个时钟周期总线控制器150从状态S10进入状态S11和状态S12。在状态S12,总线控制器150监视线路42上IOBUS_ACCESS-信号的状态。如果线路42上的IOBUS_ACCESS-信号无效,指示被请求的地址不需要访问I/O总线,总线控制器150就回到状态S0并等待下一个微处理器地址请求。如果线路42上的IOBUS_ACCESS-信号有效,那么总线控制器就进入状态S15。从状态S12向状态S15的转换表明CPU请求的地址不需要访问I/O总线。
在状态S15,总线控制器150监视线路112上的SEOT-信号和线路52上的IOBUS_BSY-信号的状态。当线路112上的SEOT-信号保持无效时,总线控制器150保持在状态S15。如果SEOT-信号有效,并且线路52上的IOBUS_BSY-信号也有效,那么总线控制器返回到状态S5。从状态S15向状态S5的转换表明,当I/O总线被授予另一个请求者之后,CPU对I/O总线请求的访问已经被接收,总线控制器150必须等待当前的I/O周期结束。在返回到状态S5之后,一旦当前的I/O周期结束,总线控制器150就可以试着再次访问I/O总线。如果在状态S15线路112上的SEOT-信号有效而线路52上的IOBUS_BSY-信号无效,总线控制器150就返回到状态S0。从状态S15向状态S0的转换表明CPU模块对I/O总线请求的访问已经结束。一处在状态S0,总线控制器150就等待微处理器24请求的下一个地址。
总线控制器150和另一实施例的总线桥接器120之间的通信将结合图10A-10B进行详细的描述。图10A-10B示出了CPU模块试图对系统总线18和I/O总线20进行的若干次访问的时序图。与图8和图9中的状态相应的CPU模块总线控制器的状态和总线桥接器上的控制逻辑130的状态示于图的上部。
从时序图的时钟周期1开始,总线桥接器120上的控制逻辑130等待CPU模块12的其中一个的地址请求。CPU模块#1、CPU模块#2和CPU模块#3的每个微处理器都已经发送了地址请求到它们相应的总线收发器30。另外,在时钟周期1,线路90上的SBREQ1-信号、线路92上的SBREQ2-信号和线路94上的SBREQ3-信号都是有效的。这表明每个CPU模块12都已请求了对系统总线18的访问。
在时钟周期2,线路100上的SBACK1-是有效的。这表明系统总线18已经授权访问CPU模块#1。另外,线路86上的SBUSBSY-信号是无效的,因此指示系统总线18是可用的。
在时钟周期3,CPU模块#1将其地址SADDRxx放在系统总线18的线路98上,并在线路96上启动SADDS-信号。从时钟周期3到时钟周期4地址都是有效的。由于系统总线18上的被请求地址,线路86上的SBUSBSY-信号变为有效,指示系统总线18目前正在处理一项事务。最后,CPU模块#1将它在线路90上的SBREQ1-信号设置为无效电平,指示CPU模块#1不再请求对系统总线18的访问。此外,CPU模块#1通过启动线路152上的一个CPU1 IOBUS_ACCESS信号,来指示它所请求的地址需要访问I/O总线124、126中的其中一个。
在时钟周期4,线路88上的TRNSHLD-信号被启动,以使得系统总线18上的装置确定它们是否相应于被请求的地址。响应线路90上SBREQ1-信号的撤销,总线仲裁逻辑128撤销线路100上的SBRCK1-信号。由于系统总线18在SBACK1-信号释放之后不再被授权给CPU模块#1,总线仲裁逻辑128确认下一个CPU模块12的请求。在这种情况下,总线仲裁逻辑128启动线路102上的SBACK2-信号,同意访问CPU模块#2。最后,线路70上的MP-2-IOBUS-ACCESS-信号被启动,指示CPU模块#1的地址请求需要访问I/O总线124、126的其中一个。
在时钟周期5,线路146上的RESET-信号被释放,并返回到无效电平。在时钟周期6,线路86上的SBUSBSY-信号返回到无效电平,指示系统总线可用于访问。同样在时钟周期6,线路154上的CPU3 IOBUS_ACCESS信号指示由CPU模块#3请求的地址需要访问I/O总线124、126的其中一个,然而,CPU模块#3还没有被授权访问系统总线18。
在时钟周期7,I/O总线124、126在线路140上产生一BACK_OFF-信号,表示I/O总线124、126当前正在处理前一I/O请求。
在时钟周期8,由于在线路140上收到了处于有效电平的BACK_OFF-信号,控制逻辑130将启动线路142上处于有效电平的START-信号到定时器电路132。此外,控制逻辑130将把线路52上的IOBUS_BSY-信号设置为有效电平,与此同时启动线路106上的CTERM-信号和线路112上的SEOT-信号到有效电平,从而向总线控制器150指示先前来自CPU模块#1的I/O请求没有完成。线路52上的IOBUS_BSY-信号将保持有效,一直到I/O请求完成为止。另外,在时钟周期8,线路92上的SBREQ2-信号被撤销,以使得其它CPU模块12访问系统总线18。同样在时钟周期8,CPU模块#2将其地址SADDRxx在线路98上提供给系统总线18,该地址从时钟周期8到时钟周期10一直保持有效。在时钟周期8,总线控制器150也在线路96上发出一个处于有效电平的SADDS-信号,以使得该装置在线路98的地址SADDRxx产生时钟同步。在这种情况下,CPU模块#2请求的地址不需要访问I/O总线124、126的任意一个。因此,线路156上的CPU2 IOBUS_ACCESS信号保持无效。
在时钟周期9,由于CPU请求的地址需要访问I/O总线124、126,并且由于线路52上的IOBUS_BSY-信号已变为有效,指示出I/O总线20正处于忙状态,因此CPU模块#3撤销线路94上的SBREQ3-信号。一开始,在时钟周期9,线路88上的TRNSHLD-信号被启动,以使得系统总线18上的装置确定是否其中某一个相应被请求的地址。时钟周期10被虚线所中断,它指示在时钟周期9和时钟周期11之间等于或大于一个时钟周期的一个不确定时间期间。
在时钟周期11,线路144上的TIMEOUT-信号被确立,指示定时器132已经完成了由线路142上的START-信号所启动的时间期间。另外,线路86上的SBUSBSY-信号被撤销,指示系统总线18可以用于访问。
在时钟周期12,当定时器132完成其时间期间后,线路142上的START-信号被撤销。另外,线路146上的RESET-信号被启动为有效电平,来重新设置计时器132。由于在收到线路136上的SBUS_ACK-信号之前,在线路144上收到了处于无效状态的TIMEOUT-信号,控制逻辑电路130撤销线路52上的IOBUS_BSY-信号,以允许另一次I/O访问。在线路144上收到处于无效电平的TIMEOUT-信号表示I/O请求很有可能是从I/O总线#1 124到I/O总线#2126的一次传送,因此,总线桥接器120将允许另一个处理器进行访问。
在时钟周期13,由于超时周期已经结束,因此线路144上的TIMEDUT-信号被撤销。由于在线路52上收到了处于无效电平的IOBUS_BSY-信号,CPU模块#1试图通过在线路90上确立SBREQ1-信号来启动另一次I/O请求。另外,CPU模块#3试图通过在线路94上确立SBREQ3-信号来启动一个I/O周期。此外,在时钟周期13,由CPU模块#2请求的数据数据是有效的,并且已经被提供给系统总线18上的数据线SMD【63:00】。在时钟周期13,CPU模块#2已经接受了数据传送,线路106上的CTERM-信号回到了有效高电平状态。另外,由于被请求的数据只需要一个时钟周期来进行传送,因此线路112上的SEOT-信号被选通为低,指示这是要传送的最后数据。
在时钟周期14,线路102上的SBACK2-信号被撤销,由此确认线路92上的SBREQ2-信号的撤销。由于在释放了SBACK2-信号之后系统总线18不再被授权给CPU模块#2,因此仲裁逻辑128确认下一个CPU模块12的请求。在这种情况下,仲裁逻辑启动线路100上的SBACK1-信号,以指示CPU模块#1被授权访问系统总线18。
在时钟周期15,CPU模块#1开始将一个地址放在系统总线18的SADDRxx线路98上。在时钟周期16,CPU模块#1将线路96上的SADDS-信号选通为有效电平,指示由CPU#1请求的地址是在系统总线18上并且是有效的。线路98上的SADDRxx-信号在时钟周期1 6和1 7是有效的。随着将CPU请求的地址提供给系统总线18,线路86上的SBUSBSY-信号被予以确立,指示系统总线18正忙于事务处理。最后,由于系统总线18已经被授权给CPU模块#1,线路90上二的SBREQ1-信号被撤销。
在时钟周期17,由CPU#1请求的地址被总线桥接器120锁定。总线桥接器120上的总线控制逻辑130启动线路146上的RESET-信号,将定时器132重新设置到初始位置。另外,线路100上的SBACK1-信号被撤销,由此确认线路90上的SBREQ1-信号在先前的时钟周期的撤销。由于系统总线18随着SBACK1-信号的释放不再被授予CPU模块#1,因此仲裁逻辑128确认下一个CPU模块12的请求。在这种情况下,仲裁逻辑128启动线路110上的SBACK3-信号,将系统总线18授予CPU模块#3。最后,启动线路88上的TRNSHLD-信号,以使得系统总线18上的装置确定其中某一个装置是否响应被请求的地址。
在时钟周期19,由于被请求的地址已经被总线桥接器120锁定,并且CPU模块#1不再需要系统总线18,因此线路86上的SBUSBSY-信号被CPU#1释放。
在时钟周期20,CPU#3准备将其地址放到系统总线18上。另外,由CPU#1从I/O总线124、126之一中请求的数据是可用的。该有效数据被提供给系统总线18的数据线路SMD【63:00】。进而,控制逻辑130启动线路106上的周期终止(CTERM-)信号,指示被请求的数据是可用的。CPU模块#1在时钟周期21的前沿在系统总线18上收到有效数据。此外,由于被请求的数据只需要一个时钟周期来进行传送,因此线路112上的SEOT-信号被选通一个时钟周期,指示这将是总线桥接器在这个时间传送的最后数据。
在时钟周期21,线路146上的RESET-信号被确立为一个有效电平,将定时器1 32重新设置一个新的时间周期,以监视下一个I/O传送。此外,CPU模块#1在线路42上的IOBUS_ACCESS-信号在其对CPU#1的I/O请求已经结束后就被撤销,而且CPU模块#3将其有效地址SADDRxx信号放在系统总线18的线路98上。在时钟周期21和22,被请求的地址是有效的。线路96上的SADDS-信号在一个时钟周期被选通为低电平,以使得系统总线18上的装置锁定该地址请求。当将CPU模块#3的地址请求放在系统总线上后,线路86上的SBUSBSY-信号被启动为有效电平,指示系统总线18正忙于下一次事务处理。
在时钟周期22,线路88上的TRNSHLD-信号被启动,以使得系统总线18上的装置来确定是否其中某个装置响应被请求的地址。其余的I/O周期以前面结合CPU模块#1所描述的方式来完成。
如上所述,由总线桥接器产生的IOBUS_BSY-信号向所有的CPU模块12表明了I/O总线20已经被请求,CPU模块12将保持其I/O请求直到当前的事务处理完成为止。通过制止其它CPU模块12执行I/O请求,系统总线18不必被保持空闲。在该先前所要保持的时间内,系统总线18可以被用于存储器到CPU模块的事务处理和CPU模块到CPU模块的事务处理,如当I/O总线20正使用时,超高速缓冲存储器的命中响应。通过减少系统总线必须保持空闲的时间,系统总线的整体性能被大大增强。
本发明在不脱离其精神或基本特征的前提下也可以以其他特定形式来实现。本发明的实施例都是示意性而非限制性的。因此本发明的范围由权利要求书而不是说明书来限定。在等同的权利要求范围内所作的任何改进都包括在该范围之内。

Claims (3)

1.一种用于多处理器系统的改进的信号发送协议方法,所述多处理器系统包括若干连接到公用系统总线和经由I/O总线桥接器连接到I/O总线的CPU模块,所述信号发送协议方法包括以下步骤:
在所述I/O总线桥接器上产生具有第一和第二逻辑状态的一个I/O总线繁忙指示信号,所述第一逻辑状态指示所述I/O总线目前正忙于处理一件I/O总线事务,所述第二逻辑状态指示所述I/O总线可用于处理一件I/O总线事务;
在每个所述CPU模块接收所述I/O总线繁忙指示信号;
确定CPU地址请求是否需要访问所述I/O总线;
不管所述I/O总线繁忙指示信号的状态如何,如果所述CPU请求的地址都不需要访问所述I/O总线,那么当所述共用系统总线可用时,处理所述共用系统总线上的所述CPU地址请求;
如果所述地址请求需要访问所述I/O总线,并且所述I/O总线繁忙指示信号处于所述第一逻辑状态,那么保持所述CPU地址请求;
如果所述地址请求需要访问所述I/O总线,并且所述I/O总线繁忙指示信号处于所述第二逻辑状态,那么当所述系统总线可用时,处理所述CPU地址请求。
2.一种用于多处理器系统的改进的信号发送协议电路,所述多处理器系统包括若干连接到公用系统总线和经由I/O总线桥接器连接到I/O总线的CPU模块,所述信号发送协议电路包括:
在所述I/O总线桥接器上的I/O总线协议电路,它产生具有第一和第二逻辑状态的一个I/O总线繁忙指示信号,所述第一逻辑状态指示所述I/O总线目前正忙于处理一个I/O总线事务,所述第二逻辑状态指示所述I/O总线可用于处理一件I/O总线事务;
在每个所述CPU模块上的总线控制器逻辑电路,每个所述总线控制器逻辑电路从相应的CPU得到一个地址请求,并且控制所述CPU地址请求向所述系统总线的传送;
在每个所述CPU模块上的I/O总线禁止电路,所述I/O总线禁止电路进一步包括:
一个地址和循环类型译码器,它产生具有第一和第二逻辑状态的一个I/O总线访问请求信号,所述第一逻辑状态指示所述CPU地址请求需要访问所述I/O总线,所述第二逻辑状态指示所述CPU地址请求不需要访问所述I/O总线;
具有第一和第二输入的一个逻辑电路,所述逻辑电路的第一输入连接到所述I/O总线访问请求信号,而所述逻辑电路的所述第二输入连接到所述I/O总线繁忙指示信号,所述逻辑电路的输出产生一个禁止信号,其中所述禁止信号被连接到所述总线控制器逻辑电路,以禁止所述CPU地址请求向所述系统总线的传送,并直到所述I/O总线完成了一个当前事物处理为止。
3.根据权利要求2所述的改进的信号发送协议电路,其特征在于,进一步包括一个位于所述系统总线和所述I/O总线之间的缓冲电路,其中,从所述系统总线向所述I/O总线传送的数据以系统总线的速度被传送到所述缓冲电路,并且再以I/O总线的速度从所述缓冲电路送出,而从所述I/O总线向所述系统总线传送的数据以I/O总线的速度被传送到所述缓冲电路,并且再以系统总线的速度从所述缓冲电路送出。
CN95191949A 1994-01-14 1995-01-06 用于多处理器系统的改进的信号发送协议方法和信号发送协议电路 Expired - Lifetime CN1111799C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/181,900 US5426740A (en) 1994-01-14 1994-01-14 Signaling protocol for concurrent bus access in a multiprocessor system
US08/181,900 1994-01-14

Publications (2)

Publication Number Publication Date
CN1143421A CN1143421A (zh) 1997-02-19
CN1111799C true CN1111799C (zh) 2003-06-18

Family

ID=22666285

Family Applications (1)

Application Number Title Priority Date Filing Date
CN95191949A Expired - Lifetime CN1111799C (zh) 1994-01-14 1995-01-06 用于多处理器系统的改进的信号发送协议方法和信号发送协议电路

Country Status (5)

Country Link
US (1) US5426740A (zh)
KR (1) KR100305138B1 (zh)
CN (1) CN1111799C (zh)
AU (1) AU1523595A (zh)
WO (1) WO1995019600A1 (zh)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761450A (en) * 1994-02-24 1998-06-02 Intel Corporation Bus bridge circuit flushing buffer to a bus during one acquire/relinquish cycle by providing empty address indications
WO1996008773A2 (en) * 1994-09-16 1996-03-21 Cirrus Logic, Inc. Pcmcia dma data bus mastering
US5568619A (en) * 1995-01-05 1996-10-22 International Business Machines Corporation Method and apparatus for configuring a bus-to-bus bridge
JPH096718A (ja) * 1995-06-16 1997-01-10 Toshiba Corp ポータブルコンピュータシステム
US5761444A (en) * 1995-09-05 1998-06-02 Intel Corporation Method and apparatus for dynamically deferring transactions
US5587957A (en) * 1995-09-29 1996-12-24 Intel Corporation Circuit for sharing a memory of a microcontroller with an external device
US5926378A (en) * 1995-09-29 1999-07-20 International Business Machines Corporation Low profile riser card assembly using paired back-to-back peripheral card connectors mounted on universal footprints supporting different bus form factors
US5796964A (en) * 1996-01-16 1998-08-18 International Business Machines Method for modifying an existing computer bus to enhance system performance
US5850557A (en) * 1996-05-10 1998-12-15 Intel Corporation Method and apparatus for reducing bus bridge thrashing by temporarily masking agent requests to allow conflicting requests to be completed
KR980004067A (ko) * 1996-06-25 1998-03-30 김광호 멀티프로세서 시스템의 데이터 송수신장치 및 방법
US5845107A (en) * 1996-07-03 1998-12-01 Intel Corporation Signaling protocol conversion between a processor and a high-performance system bus
US5771358A (en) * 1996-07-15 1998-06-23 Micron Electronics, Inc. Method and system for apportioning computer bus bandwidth
US6115551A (en) * 1997-03-27 2000-09-05 Industrial Technology Research Institute System for minimizing the number of control signals and maximizing channel utilization between an I/O bridge and a data buffer
US5905913A (en) * 1997-04-24 1999-05-18 International Business Machines Corporation System for collecting a specified number of peripheral interrupts and transferring the interrupts as a group to the processor
US6269412B1 (en) 1997-05-13 2001-07-31 Micron Technology, Inc. Apparatus for recording information system events
US6173346B1 (en) 1997-05-13 2001-01-09 Micron Electronics, Inc. Method for hot swapping a programmable storage adapter using a programmable processor for selectively enabling or disabling power to adapter slot in response to respective request signals
US6253334B1 (en) 1997-05-13 2001-06-26 Micron Electronics, Inc. Three bus server architecture with a legacy PCI bus and mirrored I/O PCI buses
US6170028B1 (en) 1997-05-13 2001-01-02 Micron Electronics, Inc. Method for hot swapping a programmable network adapter by using a programmable processor to selectively disabling and enabling power thereto upon receiving respective control signals
US6163853A (en) * 1997-05-13 2000-12-19 Micron Electronics, Inc. Method for communicating a software-generated pulse waveform between two servers in a network
US6202111B1 (en) 1997-05-13 2001-03-13 Micron Electronics, Inc. Method for the hot add of a network adapter on a system including a statically loaded adapter driver
US6243838B1 (en) 1997-05-13 2001-06-05 Micron Electronics, Inc. Method for automatically reporting a system failure in a server
US6192434B1 (en) 1997-05-13 2001-02-20 Micron Electronics, Inc System for hot swapping a programmable adapter by using a programmable processor to selectively disabling and enabling power thereto upon receiving respective control signals
US6179486B1 (en) 1997-05-13 2001-01-30 Micron Electronics, Inc. Method for hot add of a mass storage adapter on a system including a dynamically loaded adapter driver
US6304929B1 (en) 1997-05-13 2001-10-16 Micron Electronics, Inc. Method for hot swapping a programmable adapter by using a programmable processor to selectively disabling and enabling power thereto upon receiving respective control signals
US6249828B1 (en) 1997-05-13 2001-06-19 Micron Electronics, Inc. Method for the hot swap of a mass storage adapter on a system including a statically loaded adapter driver
US6499073B1 (en) 1997-05-13 2002-12-24 Micron Electronics, Inc. System using programmable processor for selectively enabling or disabling power to adapter in response to respective request signals
US6247080B1 (en) 1997-05-13 2001-06-12 Micron Electronics, Inc. Method for the hot add of devices
US6073190A (en) * 1997-07-18 2000-06-06 Micron Electronics, Inc. System for dynamic buffer allocation comprising control logic for controlling a first address buffer and a first data buffer as a matched pair
KR100256944B1 (ko) * 1997-07-31 2000-05-15 윤종용 피씨아이 핫 플러그를 위한 경보 장치
US6115770A (en) * 1998-03-25 2000-09-05 Lsi Logic Corporation System and method for coordinating competing register accesses by multiple buses
US6421746B1 (en) * 1998-03-26 2002-07-16 Micron Electronics, Inc. Method of data and interrupt posting for computer devices
US6587961B1 (en) * 1998-06-15 2003-07-01 Sun Microsystems, Inc. Multi-processor system bridge with controlled access
US6260098B1 (en) * 1998-12-17 2001-07-10 International Business Machines Corporation Shared peripheral controller
US6725312B1 (en) 2000-11-02 2004-04-20 Cml Versatel Inc. Bus architecture for high reliability communications in computer system
US6810455B2 (en) 2001-09-28 2004-10-26 Cradle Technologies, Inc. Bus arbitration system and method for carrying out a centralized arbitration with independent bus request and grant lines
TWI425354B (zh) * 2007-10-16 2014-02-01 Mstar Semiconductor Inc 資料存取系統及方法
CN102087637B (zh) * 2009-12-02 2012-08-22 奇景光电股份有限公司 利用率增强的共享汇流排系统及汇流排仲裁方法
CN101937537A (zh) * 2010-10-25 2011-01-05 上海申瑞电力科技股份有限公司 电网历史数据的并行访问方法
CN109818843A (zh) * 2019-02-26 2019-05-28 北京龙鼎源科技股份有限公司 总线的监听解析方法及设备、存储介质和电子装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3959775A (en) * 1974-08-05 1976-05-25 Gte Automatic Electric Laboratories Incorporated Multiprocessing system implemented with microprocessors
JPS58225432A (ja) * 1982-06-24 1983-12-27 Toshiba Corp 要求バツフア装置
JPS60258671A (ja) * 1984-06-05 1985-12-20 Nec Corp プロセツサ
US4837682A (en) * 1987-04-07 1989-06-06 Glen Culler & Associates Bus arbitration system and method
US5280589A (en) * 1987-07-30 1994-01-18 Kabushiki Kaisha Toshiba Memory access control system for use with a relatively small size data processing system
US5327545A (en) * 1988-05-26 1994-07-05 International Business Machines Corporation Data processing apparatus for selectively posting write cycles using the 82385 cache controller
US5261057A (en) * 1988-06-30 1993-11-09 Wang Laboratories, Inc. I/O bus to system interface
US5003463A (en) * 1988-06-30 1991-03-26 Wang Laboratories, Inc. Interface controller with first and second buffer storage area for receiving and transmitting data between I/O bus and high speed system bus
US5065313A (en) * 1989-03-30 1991-11-12 Dell Usa Corporation Digital computer system having circuit for regulation of I/O command recovery time
US5170481A (en) * 1989-06-19 1992-12-08 International Business Machines Corporation Microprocessor hold and lock circuitry
US5220651A (en) * 1989-10-11 1993-06-15 Micral, Inc. Cpu-bus controller for accomplishing transfer operations between a controller and devices coupled to an input/output bus
US5125080A (en) * 1989-11-13 1992-06-23 Chips And Technologies, Incorporated Logic support chip for AT-type computer with improved bus architecture
US5253348A (en) * 1990-12-28 1993-10-12 Apple Computer, Inc. Method of arbitration for buses operating at different speeds
US5353417A (en) * 1991-05-28 1994-10-04 International Business Machines Corp. Personal computer with bus interface controller coupled directly with local processor and input/output data buses and for anticipating memory control changes on arbitration for bus access
US5263139A (en) * 1992-05-19 1993-11-16 Sun Microsystems, Inc. Multiple bus architecture for flexible communication among processor modules and memory subsystems and specialized subsystems

Also Published As

Publication number Publication date
KR970700879A (ko) 1997-02-12
CN1143421A (zh) 1997-02-19
WO1995019600A1 (en) 1995-07-20
US5426740A (en) 1995-06-20
AU1523595A (en) 1995-08-01
KR100305138B1 (ko) 2001-11-22

Similar Documents

Publication Publication Date Title
CN1111799C (zh) 用于多处理器系统的改进的信号发送协议方法和信号发送协议电路
CN1230762C (zh) 用于在多点双向总线上传输信息方法和装置
CN1037982A (zh) 在有仲裁的80386/82385微机系统运行中80386对系统总线的抢用
JP3832833B2 (ja) 情報処理方法および装置
CN100347642C (zh) 具有进行本征时钟控制的硬件机构的半导体器件
CN1207670C (zh) 具有重叠读写操作和可伸缩地址流水线化的数据传送系统
EP0357685B1 (en) Method and apparatus for assuring adequate access to system resources by processors in a multiprocessor computer system
AU600830B2 (en) Computer systems
CN1102265C (zh) 用于在多条总线之间传送信息的系统和方法
CN1694085A (zh) 内部总线系统
WO1988008569A1 (en) Method and apparatus for managing multiple lock indicators in a multiprocessor computer system
WO1988008578A1 (en) Apparatus and method for determining access to a bus
US5659708A (en) Cache coherency in a multiprocessing system
US5822765A (en) System and method for resolving contention arising from execution of cache coherency operations in a multiple cache computer system
WO1988008571A1 (en) Method and apparatus for initiating transactions on a multiprocessor computer system employing multiple lock indications
JP3641003B2 (ja) 調停機構付きバス・システム
CN1892632A (zh) 总线系统和仲裁其的方法
US7552268B2 (en) Method for improving bus utilization using predictive arbitration
JPH0719242B2 (ja) 割り込みを行う装置
CN1296844C (zh) 数据传送方法和数据传送系统
US5241628A (en) Method wherein source arbitrates for bus using arbitration number of destination
JPH10283310A (ja) マルチプロセッサ・システムにおけるバス・アービトレーションの方法及び装置
CN101044459A (zh) 在具有混合体系结构的系统中使用原子操作来修改信息单元的方法和装置
KR0126583B1 (ko) 시스템 제어기 모듈에서의 요청기 읽기 제어기(Requester Read Controller In System Controller In System Control Module)
JP2002278923A (ja) バスシステム,バス制御方式及びそのバス変換装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent for invention or patent application
COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: AST RESEARCH, INC TO: SAMSUNG ELECTRONICS CO., LTD

CP03 Change of name, title or address

Address after: Gyeonggi Do Korea Suwon

Applicant after: Samsung Electronics Co., Ltd.

Address before: American California

Applicant before: AST Research, Inc.

C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CX01 Expiry of patent term

Expiration termination date: 20150106

Granted publication date: 20030618