專利名稱:在多處理器系統(tǒng)中用于總線并行訪問的改進(jìn)的信號發(fā)送協(xié)議的制作方法
技術(shù)領(lǐng)域:
本發(fā)明相關(guān)于改進(jìn)的總線橋接器(bus bridge),該橋接器能實現(xiàn)在多處理器中對I/O總線和系統(tǒng)總線的并行訪問。
在多處理器系統(tǒng)中,所有的處理器共享一條系統(tǒng)總線和一條I/O總線,這種公用總線結(jié)構(gòu)限制系統(tǒng)總線和I/O總線每次只能進(jìn)行單一的傳送。I/O總線橋接器將系統(tǒng)總線與I/O總線連接起來。因此,當(dāng)一臺處理器與系統(tǒng)或I/O總線進(jìn)行通信時,其它處理器或者忙于其自身的內(nèi)部操作,或者等待系統(tǒng)和I/O總線空閑下來。處理器等待總線變?yōu)榭捎脿顟B(tài)所花費的時間被稱為總線等待時間。
在常規(guī)的多處理器中,采用公用總線結(jié)構(gòu),當(dāng)進(jìn)行一次I/O請求時,系統(tǒng)總線實際上只是在很短的時間被用來將請求地址從處理器傳送到I/O總線橋接器。然而,在整個數(shù)據(jù)傳送過程中,總線橋接器都使系統(tǒng)總線保持空閑。I/O總線上的一個I/O控制器鎖定來自I/O總線橋接器的地址并處理該請求。數(shù)據(jù)傳送時間取決于I/O裝置的存取時間,該時間可能會相當(dāng)長。當(dāng)I/O周期完成后,系統(tǒng)總線和I/O總線都可以為其它處理器所用。
當(dāng)一個處理器正使用I/O總線之時,總線橋接器保持系統(tǒng)總線空閑,其它處理器必須等待兩條總線都可用時,才啟動任何類型的數(shù)據(jù)傳送。當(dāng)處理器數(shù)量增多時,總線訪問次數(shù)增加,因此,總線等待時間延長。當(dāng)I/O總線正被訪問時,系統(tǒng)總線被保持空閑,并同時等待I/O周期完成,這樣的時間周期是典型的總線結(jié)構(gòu)中所固有的。在這個時間過程中,提出請求的處理器并不使用系統(tǒng)總線,而是保持系統(tǒng)總線,以防止其它處理器訪問系統(tǒng)總線,直到它從I/O總線得到指示I/O周期已經(jīng)結(jié)束的回答為止。在等待I/O周期完成之時,系統(tǒng)總線被保持,而不是處于活躍狀態(tài),這是多處理器系統(tǒng)中造成總線等待時間的主要原因。
為了縮短系統(tǒng)總線的空閑時間,需要研制一個協(xié)議,在允許系統(tǒng)總線級事務(wù)發(fā)生之時,阻止任何新的I/O級事務(wù)發(fā)生。一種可能的解決方案是采用“退下(back-off)”操作,一旦在I/O總線上的一個事務(wù)已經(jīng)開始就取消已經(jīng)啟動的任何I/O請求,從而釋放用于存儲器和處理器與處理器之間的傳送的系統(tǒng)總線。問題是某些I/O總線,如EISA總線,不允許適度的“退下”操作。由EISA總線提供的唯一的“退下”操作會導(dǎo)致提出請求的處理器接收一個不需要的錯誤狀態(tài)。
如果I/O總線不能提供適度的退下操作,如EISA總線那樣,僅有的其它解決途徑是“退下”系統(tǒng)總線。然而在多處理器系統(tǒng)中,只需要“退下”企圖訪問I/O總線的處理器,并允許系統(tǒng)總線上的其它處理器繼續(xù)進(jìn)行。一個消除信號會“退下”整個系統(tǒng)總線,而“退下”整個總線不僅不會解決總線等待時間問題,還會產(chǎn)生另外的問題。
另一個方案是對I/O總線橋接器上的每個處理器產(chǎn)生一個“退下”信號。在這種情況下,要將N個引腳加到總線橋接器,來對N個處理器的每一個傳送單獨的退下信號。多處理器系統(tǒng)中的處理器數(shù)目通常是5到8個,因此在I/O總線橋接器上平均要加上5到8個引腳。典型的總線橋接器是引腳有限的一個電路,即沒有許多額外的引腳可用來增加輸出信號。另外,對每個需要受到控制的退下信號,必須給總線橋接器加上邏輯。由于所增加的這些復(fù)雜性,使得該解決方案不能成為最佳方案。此外,如果I/O總線橋接器允許數(shù)據(jù)被超高速緩沖存儲,那么超高速緩沖存儲器的相干協(xié)議使得退下協(xié)議的啟動非常困難。一旦一個請求被啟動,其它處理器模塊可能監(jiān)視(snooping)其超高速緩沖存儲器,并且一旦被監(jiān)視,就不能是“未被監(jiān)視的”。因此,將單個處理器系統(tǒng)中的簡單的退下協(xié)議用于多處理器系統(tǒng)不是最佳的解決方案。
造成多處理器系統(tǒng)中的等待時間的另一個因素是大部分I/O總線要比系統(tǒng)總線慢。例如,一條公用的多處理器系統(tǒng)總線以25MHz運行,寬度為64位。一條公用的I/O總線,如EISA總線,以8MHz運行,寬度僅僅為32位。因此,一條典型的系統(tǒng)總線可以以200M字節(jié)/秒的速度傳送數(shù)據(jù),而一條EISA總線只能以33M字節(jié)/秒的速度傳送數(shù)據(jù)。所以,當(dāng)數(shù)據(jù)以I/O總線的較慢的數(shù)據(jù)速度和較小的位寬從I/O總線向系統(tǒng)傳送數(shù)據(jù)時,系統(tǒng)總線在一個較長的可用總線時間被保持。由于較快的系統(tǒng)總線被強迫等待較慢總線完成其事務(wù),因此造成了系統(tǒng)總線速度和效率的浪費,這也是造成系統(tǒng)總線等待時間的一個因素。
因此,在多處理器系統(tǒng)中需要縮短在I/O總線事務(wù)處理和冗長的I/O數(shù)據(jù)傳送過程中由于系統(tǒng)總線空閑所造成的總線等待時間。
本發(fā)明的一個較佳實施例包括用于多處理器系統(tǒng)中的一個改進(jìn)的信號發(fā)送協(xié)議。該多處理器最好是包括若干與一條公用系統(tǒng)總線相連和經(jīng)由一個I/O總線橋接器連接到I/O總線的CPU模塊。本發(fā)明的設(shè)計利用了系統(tǒng)總線的空閑時間,并且能在I/O總線訪問過程中實現(xiàn)對公用系統(tǒng)總線的并行訪問。此外,本發(fā)明不會增加系統(tǒng)總線結(jié)構(gòu)的復(fù)雜性,因此不會降低總線帶寬的整體增大。
較佳實施例中改進(jìn)的總線結(jié)構(gòu)采用系統(tǒng)產(chǎn)生的一個I/O忙(IOBUS_BSY-)信號向所有的處理器指示I/O總線正在使用,所有其它I/O請求必須被保持到當(dāng)前事務(wù)處理完成為止。通過阻止其它處理器執(zhí)行I/O請求,系統(tǒng)總線不必保持空閑,而是可以在I/O總線被使用的同時用于處理器到存儲器和處理器到處理器的事務(wù)處理。通過縮短系統(tǒng)總線必須保持空閑的時間,整個系統(tǒng)總線的性能被大大增強。
在一個較佳的實施例中,用于多處理器系統(tǒng)的一個改進(jìn)的信號發(fā)送協(xié)議電路包括一個I/O總線協(xié)議電路,在每個CPU模塊上的一個總線控制器邏輯電路,以及在每個CPU模塊上的一個I/O總線禁止電路。I/O總線協(xié)議電路最好位于I/O總線橋接器上,并且產(chǎn)生一個具有第一和第二邏輯狀態(tài)的I/O總線忙信號。I/O總線忙信號的第一邏輯狀態(tài)指示I/O總線目前正忙于處理一I/O總線事務(wù),第二邏輯狀態(tài)指示I/O總線可用于處理I/O總線事務(wù)。在每個CPU模塊上的每個總線控制器邏輯電路從相應(yīng)的CPU接收一個地址請求,并且控制CPU地址請求向系統(tǒng)總線的發(fā)送。在每個CPU模塊上的I/O總線禁止電路進(jìn)一步包括一個地址和循環(huán)類型的譯碼器和一個邏輯電路。地址和循環(huán)類型的譯碼器產(chǎn)生一個具有第一和第二邏輯狀態(tài)的I/O總線訪問信號。I/O總線訪問信號的第一邏輯狀態(tài)指示CPU地址請求需要對I/O總線的訪問,而第二邏輯狀態(tài)指示CPU地址請求不需要對I/O總線的訪問。該邏輯電路最好有第一和第二輸入,該邏輯電路的第一輸入連接到I/O總線訪問信號,第二輸入連接到I/O總線忙信號。邏輯電路的輸出產(chǎn)生一個禁止信號,該禁止信號被連接到總線控制器邏輯電路,以禁止CPU地址請求向系統(tǒng)總線的傳送,直到I/O總線完成當(dāng)前的I/O事務(wù)處理為止。
在一個較佳實施例中,該改進(jìn)的信號發(fā)送協(xié)議電路進(jìn)一步包括一個設(shè)置在系統(tǒng)總線和I/O總線之間的緩沖電路,其中,從系統(tǒng)總線向I/O總線傳送的數(shù)據(jù)被以系統(tǒng)總線速度傳送到該緩沖器電路,并以I/O總線速度從該緩沖電路傳送出去,從I/O總線向系統(tǒng)總線傳送的數(shù)據(jù)被以I/O總線速度傳送到該緩沖器電路,并以系統(tǒng)總線速度從該緩沖電路傳送出去。
緩沖器電路縮短數(shù)據(jù)從I/O總線向系統(tǒng)總線傳送的時間周期。該緩沖器電路最好位于I/O總線橋接器上,它以I/O總線的較低速度接收來自I/O總線的數(shù)據(jù),并且存儲該數(shù)據(jù)。當(dāng)數(shù)據(jù)從I/O總線向緩沖電路傳送時,系統(tǒng)總線可以自由地處理其他事務(wù),并且不被中斷來以I/O總線的較低數(shù)據(jù)速度接收數(shù)據(jù)。一旦所有的數(shù)據(jù)被存儲在緩沖電路中后,總線橋接器通知系統(tǒng)總線,并以系統(tǒng)總線的較快數(shù)據(jù)速度將所有數(shù)據(jù)從緩沖器電路猝發(fā)到系統(tǒng)總線。這一處理大大改進(jìn)了I/O總線向系統(tǒng)總線進(jìn)行數(shù)據(jù)傳送的效率。
用于多處理器系統(tǒng)中的改進(jìn)的信號發(fā)送協(xié)議方法的一個較佳實施例,包括在I/O總線橋接器上產(chǎn)生一個具有第一和第二邏輯狀態(tài)的I/O總線忙信號,第一邏輯狀態(tài)指示I/O總線目前正忙于處理I/O總線事務(wù),第二邏輯狀態(tài)指示I/O總線可用于處理I/O總線事務(wù)。此外,每個CPU模塊接收I/O總線忙信號,并確定一個CPU地址請求是否需要訪問I/O總線,如果不論I/O總線忙信號的狀態(tài)如何,CPU請求的地址都不需要訪問I/O總線,那么當(dāng)公用系統(tǒng)總線可用時,在該公用系統(tǒng)總線上處理該CPU地址請求。如果地址請求需要訪問I/O總線,并且I/O總線忙信號處于第一邏輯狀態(tài),那么該CPU請求被保持。最后,如果地址請求需要訪問I/O總線,并且I/O總線忙信號處于第二邏輯狀態(tài),那么當(dāng)系統(tǒng)總線可用時,處理CPU地址請求。
圖1是多處理器系統(tǒng)的系統(tǒng)方框圖,該系統(tǒng)具有本發(fā)明較佳實施例的總線結(jié)構(gòu)。
圖2是用于多處理器系統(tǒng)的一個典型的CPU模塊的方框圖及其與系統(tǒng)總線的通信方式。
圖3是結(jié)合本發(fā)明的I/O總線協(xié)議電路的總線橋接器的方框圖以及總線橋接器和系統(tǒng)及I/O總線之間的通信方式。
圖4的狀態(tài)圖示出了在實施本發(fā)明的總線信號協(xié)議的每個CPU模塊上的總線控制器的總線控制邏輯。
圖5A的時序圖示出了當(dāng)?shù)诙﨏PU模塊試圖訪問I/O總線時的時鐘周期1-11,該模塊在I/O控制器并行進(jìn)行I/O總線訪問時被禁止。
圖5B的時序圖示出了當(dāng)?shù)诙﨏PU模塊試圖訪問I/O總線時的時鐘周期12-22,該模塊在I/O控制器并行進(jìn)行I/O總線訪問時被禁止。
圖6A的時序圖示出了當(dāng)一個沒有被禁止的CPU模塊試圖訪問I/O總線時的時鐘周期1-11,沒被禁止的原因是它與一個I/O控制器的I/O總線請求同時發(fā)生。
圖6B的時序圖示出了當(dāng)一個沒有被禁止的CPU模塊試圖訪問I/O總線時的時鐘周期12-22,沒被禁止的原因是它與一個I/O控制器的I/O總線請求同時發(fā)生。
圖7是結(jié)合本發(fā)明的I/O總線協(xié)議電路的另一個實施例的總線橋接器的另一個實施例的方框圖。圖8的狀態(tài)圖示出了實施本發(fā)明的總線信號發(fā)送協(xié)議的總線橋接器的另一個實施例上的控制邏輯。
圖9的狀態(tài)圖示出了在實施本發(fā)明的總線信號協(xié)議的每個CPU模塊上的總線控制器的另一個實施例的總線控制邏輯。
圖10A的時序圖示出了當(dāng)I/O總線忙于其他事務(wù)時,兩個CPU模塊試圖訪問I/O總線時的時鐘周期1-11。
圖10A的時序圖示出了當(dāng)I/O總線忙于其他事務(wù)時,兩個CPU模塊試圖訪問I/O總線時的時鐘周期12-22。
本發(fā)明的較佳實施例包括一個用于多處理器系統(tǒng)10中的改進(jìn)的信號發(fā)送協(xié)議,該系統(tǒng)有一個共用的總線系統(tǒng)(即處理器對共用的存儲器進(jìn)行存取,并且共享I/O資源)。圖1示出了一個常規(guī)的多處理器系統(tǒng)10,它包括若干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被連接到系統(tǒng)總線18,該總線進(jìn)一步包括一條系統(tǒng)地址總線、一條系統(tǒng)數(shù)據(jù)總線和一條系統(tǒng)控制總線。I/O控制器16被一一連接到外圍I/O設(shè)備(沒有示出),并控制其運行。所有的I/O控制器16都被連接到一條I/O總線20。該I/O總線進(jìn)一步包括一條I/O地址總線、一條I/O數(shù)據(jù)總線和一條I/O控制總線??偩€橋接器22或I/O服務(wù)模塊(IOSM模塊)在系統(tǒng)總線18和I/O總線20之間提供一個接口,以控制I/O控制器16和系統(tǒng)總線18之間的數(shù)據(jù)流動。
圖2示出了用于圖1的多處理器系統(tǒng)1 O中的一個典型的CPU模塊12的方框圖。該CPU模塊12最好包括一個微處理器25,一個帶有內(nèi)部譯碼邏輯的超高速緩沖存儲器系統(tǒng)(CACHE)26,一個CPU或本地處理器總線28,總線收發(fā)器30和系統(tǒng)總線控制器邏輯32。根據(jù)本發(fā)明的一個實施例,每個CPU模塊12又包括一個I/O總線禁止電路34。I/O總線禁止電路的其中一個實施例包括一個地址和循環(huán)類型譯碼器36,一個雙輸入的與門38和一個反相器40。
地址和循環(huán)類型譯碼器36被用于確定由微處理器24請求的地址是否需要訪問I/O總線20。地址和循環(huán)類型譯碼器36在線路42上的輸出是IOBUS_ACCESS信號。該IOBUS_ACCESS信號是一個高態(tài)有效信號,即,當(dāng)它為真時處于邏輯高電平,當(dāng)它為假時處于邏輯低電平。在線路42上的IOBUS_ACCESS信號被連接到雙輸入與門38的第一輸入44。該雙輸入與門38的第二輸入46被連接到反相器40的一個輸出48。反相器40的輸入50被連接到線路52上的IOBUS_BSY-信號,該信號由I/O總線協(xié)議電路上的邏輯線路產(chǎn)生,用于指示I/O總線目前正被使用,對此后面會作詳細(xì)的描述。該IOBUS_BSY-信號是一個低態(tài)有效信號,即,當(dāng)它為真時處于邏輯低電平,當(dāng)它為假時處于邏輯高電平。因此,該IOBUS_BSY-信號由反相器40反相,以符合線路42上的高態(tài)有效邏輯信號IOBUS_ACCESS。雙輸入與門38的輸出在線路54上產(chǎn)生一個INHIBIT MP_ACCESS信號,該信號是一個高態(tài)有效信號,向總線控制器32指示微處理器24請求一個需要訪問目前正被使用的I/O總線20的地址。線路54上的INHIBIT_MP_ACCESS信號被傳送到總線控制器邏輯32,以禁止總線訪問,直到I/O周期完成為止??偩€控制器邏輯32將線路56上的若干總線收發(fā)器使能信號TRANS_ENB傳送到處于無效電平的總線收發(fā)器30,以阻止微處理器的請求地址被呈現(xiàn)在系統(tǒng)總線18上,直到當(dāng)前的I/O周期完成為止,對此后面要作詳細(xì)的描述。此外,當(dāng)系統(tǒng)總線上的有效數(shù)據(jù)已經(jīng)準(zhǔn)備響應(yīng)CPU的地址請求猝發(fā)到處理器24時,總線控制邏輯32將線路58上的一個BRDY-信號返回到微處理器24。
圖3示出了用于圖1的多處理器系統(tǒng)10中的一個典型的總線橋接器的方框圖。該總線橋接器22最好包括一個中央仲裁器60,一組雙向地址和數(shù)據(jù)緩沖器62,以及一個控制邏輯電路63。控制邏輯電路63最好控制I/O周期的時序和某些系統(tǒng)總線控制信號的狀態(tài)。根據(jù)本發(fā)明的一個實施例,總線橋接器22進(jìn)一步包括一個I/O總線協(xié)議電路64,該電路包括一個地址譯碼器66和一個邏輯電路68。邏輯電路68是中央仲裁器60的一部分,該仲裁器被用來實施本發(fā)明的信號發(fā)送協(xié)議。
I/O總線協(xié)議電路64從系統(tǒng)總線18接受地址請求,將其發(fā)送到地址譯碼器66。地址譯碼器66確定系統(tǒng)總線上的地址請求是否需要訪問I/O總線20。地址譯碼器42的輸出是線路70上的一個MP-2-IO-ACCESS信號,它是一個高態(tài)有效信號。如果被請求的地址需要訪問I/O總線20,那么MP-2-IO-ACCESS信號將是有效的。線路70上的MP-2-IO-ACCESS信號被傳送到中央仲裁器60。
中央仲裁器60接受線路70上被譯碼的MP-2-IO-ACCESS信號,并確定I/O總線20是否需要響應(yīng)被請求的地址。中央仲裁器60控制I/O總線18對一個提出請求的CPU模塊12的授權(quán),并控制啟動并完成I/O訪問所需要的信號交換信號(handshaking signal)。中央仲裁器60在線路72上接受來自相應(yīng)的CPU模塊12的一組系統(tǒng)請求(SBREQx-)信號(即SBREQ1-,SBREQ2-,…,SBREQN-)。中央仲裁器60將為系統(tǒng)總線18監(jiān)控這些請求,并通過線路74向相應(yīng)的CPU模塊12返回一組系統(tǒng)總線確認(rèn)(SBACKx-)信號(即SBACK1-,SBACK2,…,SBACKN-),向每個模塊指示在何時授權(quán)訪問系統(tǒng)總線18。
中央仲裁器60也監(jiān)控I/O請求,即線路76上的一個IOBUS_REQ-信號,它來自于I/O控制器16,用于訪問I/O總線20。中央仲裁器60檢查來自CPU模塊12和I/O控制器16的請求。然而,中央仲裁器60將授權(quán)一個I/O控制器16或一個CPU模塊12在任何給定時間對I/O總線20的訪問。
當(dāng)I/O控制器16被授權(quán)訪問I/O總線20時,中央仲裁器60在線路78上返回一個I/O總線確認(rèn)(IOBUS_ACK-)信號。接受IOBUS_ACK-信號就是向I/O控制器16表明它可以將它的地址或數(shù)據(jù)放在I/O總線20上。
如果I/O控制器16請求對I/O總線18的訪問,并且I/O總線20是可用的,那么中央仲裁器60將線路52上的I/O總線忙(IOBUS_BSY-)信號設(shè)置為有效電平。該IOBUS_BSY-信號52向所有的CPU模塊指示I/O總線20已經(jīng)被請求,并且CPU模塊12必須保持它們的I/O請求直到當(dāng)前事務(wù)處理完成為止。通過阻止其它CPU模塊12執(zhí)行I/O請求,系統(tǒng)總線18不必被保持空閑,并且可以用于存儲器和CPU模塊到CPU模塊之間的事務(wù)處理,比如當(dāng)使用I/O總線時超高速緩沖存儲器的命中響應(yīng)。
此外,總線橋接器22也包括一組雙向地址和數(shù)據(jù)緩沖器62,它縮短數(shù)據(jù)從I/O總線20向系統(tǒng)總線18傳送所需要的時間周期。I/O總線橋接器22上的緩沖器62可以以I/O總線20的較低速度接收來自I/O總線20的數(shù)據(jù),并暫時存儲該數(shù)據(jù)。在數(shù)據(jù)從I/O總線20向總線緩沖器22傳送的同時,系統(tǒng)總線18可以任意地處理其它事務(wù),并且不被中斷來以I/O總線20的較低速度接收數(shù)據(jù)。一旦所有的數(shù)據(jù)都被緩沖器62存儲起來,總線橋接器22通知系統(tǒng)總線18,并且將所有的數(shù)據(jù)都以系統(tǒng)總線18的較高速度從緩沖器62突然猝發(fā)到系統(tǒng)總線18。這一處理大大提高了從I/O總線20到系統(tǒng)總線18的數(shù)據(jù)傳送效率。
在本實施例中,由CPU模塊12向系統(tǒng)總線18呈現(xiàn)CPU請求地址被變更為總線控制器邏輯32和總線禁止電路34,對此后面要作進(jìn)一步的描述。在地址請求被提供給系統(tǒng)總線18之前,總線控制器邏輯32和總線禁止電路34檢查是否要求對I/O 總線的訪問,如果要求,總線控制器必須等待系統(tǒng)總線18和I/O總線20都可用后才能將其地址和其系統(tǒng)地址選通(SADDS-)放在系統(tǒng)總線18上。
參看圖2和圖4,即由CPU模塊12上的控制器結(jié)合較佳實施例的I/O總線禁止電路電路34進(jìn)行的地址請求的啟動,即產(chǎn)生一個SADDS-信號,將根據(jù)圖4的狀態(tài)圖來進(jìn)行描述。開始時,在狀態(tài)S0,總線控制器32等待微處理器24在線路80上產(chǎn)生一個CPU地址信號選通(CADS-)信號。CADS-信號是一個低態(tài)有效信號,指示微處理器正發(fā)出一個地址請求。在線路80上的CADS-信號保持無效的同時,總線控制器32保持在狀態(tài)S0等待一個地址請求。當(dāng)線路80上的CADS-信號成為有效信號時,總線控制器32進(jìn)入狀態(tài)S1。
在狀態(tài)S1,總線控制器32檢查線路82上的一個地址總線可用(ABUSAVL)信號的狀態(tài)及其自身在線路74上的系統(tǒng)總線確認(rèn)(SBACKx-)信號。ABUSAVL信號是一個高態(tài)有效信號,它指示系統(tǒng)總線18何時可以從一個CPU模塊12接受一個地址請求。SBACKx-信號是一個低態(tài)有效信號,它指示系統(tǒng)總線18已在何時確認(rèn)了CPU模塊12的總線請求。如果ABUSAVL信號不是有效的,即另一個CPU模塊12正在使用系統(tǒng)地址總線,而且如果SBACKx-信號不是有效的,即系統(tǒng)總線18沒有確認(rèn)CPU模塊12的地址請求,那么總線控制器32在狀態(tài)S1保持等待。如果總線控制器32接受一個處于有效電平的SBACKx-信號以及一個處于有效電平的ABUSAVL信號,那么總線控制器將進(jìn)入狀態(tài)S2。在狀態(tài)S2總線控制器32檢查線路86上系統(tǒng)總線忙(SBUSBSY-)信號的狀態(tài)。SBUSBSY-信號是一個低態(tài)有效信號,指示系統(tǒng)總線18何時正處理由另一個CPU模塊12所啟動的先前事務(wù)。如果線路86上的SBUSBSY-信號是以無效電平被接受的,那么系統(tǒng)總線18是可用的,總線控制器32進(jìn)入狀態(tài)S4。在從狀態(tài)S2向狀態(tài)S4轉(zhuǎn)換時,總線控制器32產(chǎn)生一個系統(tǒng)地址有效(SADDS-)信號,它向系統(tǒng)總線18指示存在一個有效的地址。
如果SBUSBSY-信號有效,那么總線控制器32檢查線路42上的IOBUS_ACCESS信號的狀態(tài)和線路52上IOBUS_BSY-信號的狀態(tài)。IOBUS_ACCESS信號由CPU模塊12上的地址和循環(huán)類型譯碼器36產(chǎn)生。如果IOBUS_ACCESS信號處于有效狀態(tài),那么由微處理器24請求的地址需要對I/O總線20進(jìn)行訪問。如上面所述,線路52上的IOBUS_BSY-信號是由總線橋接器22產(chǎn)生的,它指示I/O總線20何時被使用。如果IOBUS_BSY-信號是無效的,并且當(dāng)SBUSBSY-信號有效時,IOBUS_ACCESS信號是無效的,那么CPU所請求的地址需要訪問系統(tǒng)總線18,該系統(tǒng)總線當(dāng)前處于忙狀態(tài),因此總線控制器等待在狀態(tài)S2。如果IOBUS_BSY-信號有效,并且當(dāng)SBUSBSY-信號有效時,IOBUS_ACCESS信號是有效的,那么所請求的地址需要訪問I/O總線20,該總線當(dāng)前處于忙狀態(tài),因此總線控制器32進(jìn)入狀態(tài)S3。
在狀態(tài)S3,總線控制器監(jiān)控IOBUS_BSY-信號的狀態(tài)。當(dāng)IOBUS_BSY-信號有效,指示I/O總線目前正忙于處理另一項事務(wù)時,總線控制器32等待在狀態(tài)S3。一旦IOBUS_BSY-信號無效,總線控制器32返回到狀態(tài)S1,因為現(xiàn)在I/O總線20是可用的,因此它又可以試圖請求需要的地址。
在狀態(tài)S4總線控制器32立即進(jìn)入狀態(tài)S5。在狀態(tài)S5總線控制器32監(jiān)控線路88上的事務(wù)保持(TRNSHLD-)信號的狀態(tài)。該信號是低態(tài)有效信號,它由連接到系統(tǒng)總線18的每個裝置驅(qū)動到有效電平,與此同時,每個裝置確定它是否有被請求的數(shù)據(jù)(即該地址是否相應(yīng)于裝置所響應(yīng)的一個地址)。當(dāng)每個裝置確定它不響應(yīng)被請求的地址時,它發(fā)出TRNSHLD-信號。當(dāng)線路88上的TRNSHLD-信號有效時,總線控制器邏輯32保持在狀態(tài)S5。如果TRNSHLD-信號無效,總線控制器邏輯32返回到S0狀態(tài),等待下一個地址請求。
在一個如上面所述的多處理器系統(tǒng)10中,對每一個由相應(yīng)的微處理器24請求的地址,每個CPU模塊12上的每個總線控制器32不斷地移經(jīng)上述狀態(tài)圖的狀態(tài)。CPU模塊12與系統(tǒng)總線18和I/O總線20的交互作用將在下面參考圖5A--5B進(jìn)行描述。
圖5A--5B示出了多處理器系統(tǒng)的I/O周期的時序圖,該系統(tǒng)包括本發(fā)明的I/O總線協(xié)議,其中,當(dāng)一個I/O控制器16已提出了對I/O總線20的控制后,一個第二處理器將被禁止訪問I/O總線20。響應(yīng)圖4狀態(tài)圖的狀態(tài)S1,第一微處理器(CPU1)、第二微處理器(CPU2)和第三微處理器(CPU3)的每一個啟動一個CADS-信號(沒有示出)到它們相應(yīng)的總線控制器32。與此同時,每個微處理器24發(fā)送一個被請求的地址到總線收發(fā)器30。該被請求的地址也被傳送到地址和循環(huán)類型譯碼器36,確定被請求的地址是否需要一次I/O訪問,如果是,啟動IOBUS_ACCESS信號(沒有示出)。在CPU模塊1的情況下,IOBUS_ACCESS信號沒有被確立(asserted)。每個總線控制器32在線路72上傳送一個總線請求(SBREQx-)信號。相應(yīng)于狀態(tài)圖的狀態(tài)S1,每個總線控制器32等待在線路74上接收系統(tǒng)總線確認(rèn)(SBACKx-)信號,以及在線路82上接受來自中央仲裁器60的處于有效電平的ABUSAVL信號。
圖5從時鐘周期1開始,這時每個CPU模塊12的總線請求被啟動,即線路90上的SBREQ1-信號,線路92上的SBREQ2-信號,以及線路94上的SBREQ3-信號。在時鐘周期1,CPU模塊1已經(jīng)收到了處于有效狀態(tài)的SBACK1-信號,CPU模塊2和CPU模塊3上的總線控制器32正等待分別接收它們的系統(tǒng)總線確認(rèn)(SBACKx-)信號SBACK2-和SBACK3-。在時鐘周期1,相應(yīng)于CPU模塊1的狀態(tài)圖的狀態(tài)S2,CPU模塊1的總線控制器32等待在線路86上接收處于無效電平的SBUSBSY-信號。如圖5A中時鐘周期2所示,一旦CPU模塊1的總線控制器32在線路86上收到處于無效電平的SBUSBSY-信號,總線控制器32在線路96上發(fā)出一個處于有效電平的SADDS-信號。這在狀態(tài)圖中從狀態(tài)S2向狀態(tài)S4轉(zhuǎn)換時發(fā)生。同樣在時鐘周期2,來自CPU模塊1的系統(tǒng)地址經(jīng)由SADDRxx線路98被呈現(xiàn)在系統(tǒng)總線上。從時鐘周期2到5該地址有效。系統(tǒng)總線18上鎖定被請求地址的裝置,響應(yīng)在線路96上收到的SADDS-信號,將被請求的地址鎖定起來。
在時鐘周期3,CPU模塊1在線路90上發(fā)出系統(tǒng)總線請求信號SBREQ1-,因為CPU模塊1已經(jīng)將該地址放在系統(tǒng)總線18上,因此它已被授權(quán)使用系統(tǒng)總線18。在同一時間,線路88上的TRNSHLD-信號由連接到系統(tǒng)總線的每個裝置驅(qū)動為有效信號,同時每個裝置確定它是否有請求的數(shù)據(jù)(即該地址是否相應(yīng)于裝置所響應(yīng)的一個地址)。當(dāng)每個裝置確定它不相應(yīng)被請求的地址時,它在線路88上發(fā)出TRNSHLD-信號。這相應(yīng)于狀態(tài)圖中的狀態(tài)S5。由于線路98上的地址SADDRxx已經(jīng)被呈現(xiàn)給系統(tǒng)總線18,線路96上的SADDS-信號被撤銷(deasserted)。同樣在時鐘周期3,一個I/O控制器16通過確立線路76上的I/O總線請求信號1OBUS_REQ-,來請求對I/O總線20的訪問。
在時鐘周期4,線路100上的SBACK-信號被撤銷,由此確認(rèn)線路90上的SBREQ1-信號也被撤銷。當(dāng)在線路100上釋放SBACK1-信號后,由于系統(tǒng)總線不再被授權(quán)給CPU模塊1,因此中央仲裁器60確認(rèn)下一個CPU模塊12的請求。在這種情況下,中央仲裁器60在線路102上啟動一個SBACK2-信號,將系統(tǒng)總線18授權(quán)給CPU模塊2。響應(yīng)線路76上啟動的IOBUS_REQ-信號,中央仲裁器60啟動一個處于有效電平的IOBUS_BSY-信號,以阻止其他CPU模塊12訪問I/O總線20的企圖。
在時鐘周期5,系統(tǒng)總線上的最后一個裝置在線路88上發(fā)出TRNSHLD-信號,這是線路98上來自CPU模塊1的地址ASDDRxx在系統(tǒng)總線18上有效的最后一個周期,并且相應(yīng)于狀態(tài)圖中從狀態(tài)S5到狀態(tài)S0的轉(zhuǎn)換。在時鐘周期6,由于來自CPU模塊1的地址請求不再有效,線路82上的ABUSAVL信號返回到有效電平??偩€橋接器22上的中央仲裁器60響應(yīng)線路78上的IOBUS_ACK-信號,它向提出請求的I/O控制器16指示它已經(jīng)被授權(quán)給I/O總線20。此外,I/O控制器16將有效數(shù)據(jù)放在I/O總線20的一組數(shù)據(jù)線路(IO_DATA)上,線路104上的這些數(shù)據(jù)信號從時鐘周期6到時鐘周期14是有效的。
由于先前在線路102上收到了處于有效電平的SBACK2-信號,又在線路82上收到處于有效電平的ABUSAVL信號,CPU模塊2在時鐘周期7移動到總線控制器時序圖中的狀態(tài)S2。CPU模塊2已經(jīng)將它的請求地址傳送到總線收發(fā)器30以及地址和循環(huán)類型譯碼器36。該地址和循環(huán)類型譯碼器36確定被請求的地址是否需要一次I/O訪問,如果是,那么啟動IOBUS_ACCESS信號(沒有示出)。在CPU模塊2的情況下,地址請求需要訪問I/O總線20。因此,IOBUS_ACCESS信號被確立在有效電平。
在時鐘周期7,線路106上的一個時鐘終止(CTERM-)信號由一個裝置予以確立,該裝置帶有有效數(shù)據(jù),指示該數(shù)據(jù)是可用的。該有效數(shù)據(jù)呈現(xiàn)在系統(tǒng)總線18的一組數(shù)據(jù)線路SMD6300108上。CPU模塊1在每個時鐘周期8-11的前沿從系統(tǒng)總線18接收有效數(shù)據(jù)。同樣在時鐘周期7中,CPU模塊2將它的請求地址放到系統(tǒng)總線18上。然而,由于線路52上的IOBUS_BSY-信號是有效的,線路96上的SADDS-信號沒有被啟動。由于沒有線路96上的SADDS_信號的啟動,因此CPU模塊2的地址沒有被系統(tǒng)總線18上的任何裝置鎖定。
在時鐘周期8,由于CPU模塊2在線路52上接收了處于有效電平的IOBUS_BSY-信號,CPU模塊2上的總線控制器32進(jìn)入狀態(tài)S3,并等待接收IOBUS_BSY-信號,該信號處于無效電平,指示當(dāng)前的I/O事務(wù)已經(jīng)完成。另外,CPU模塊2在等待I/O總線20變?yōu)榭捎玫耐瑫r,撤銷它在線路92上的總線請求SBREQ2-,以使得其它CPU模塊12訪問系統(tǒng)總線18。
在時鐘周期9,中央仲裁器60撤銷線路102上的SBACK2-信號,并確認(rèn)撤銷線路92上的SBREQ2-信號。當(dāng)釋放SBACK2-信號后,由于系統(tǒng)總線18不再授予CPU模塊2,因此中央仲裁器60確認(rèn)下一個CPU模塊12的請求。在這種情況下,中央仲裁器60啟動線路110上的SBACK3-信號,將系統(tǒng)總線18授予CPU模塊3。
在時鐘周期10,將數(shù)據(jù)傳送到系統(tǒng)總線18的裝置將線路112上的一個事務(wù)的系統(tǒng)處理結(jié)束(SEOT-)信號選通為低邏輯電平。在時鐘周期11,CPU模塊1已經(jīng)接受了數(shù)據(jù)傳送,并且線路106上的CTERM-信號返回到邏輯高電平。一旦線路106上的CTERM-信號返回到邏輯高電平,并且同時線路112上的SEOT信號被選通為低電平,那么線路86上的SBUSBSY-信號被設(shè)置為無效電平,原因是系統(tǒng)總線18的周期已經(jīng)結(jié)束。同樣在時鐘周期11,CPU模塊3將一個有效地址SADDRxx放在系統(tǒng)地址總線地址線路98上。線路98上的地址在時鐘周期11-15是有效的。
CPU模塊3先前在其地址和循環(huán)類型譯碼器36處收到了微處理器的請求地址。該地址和循環(huán)類型譯碼器36確定被請求的地址是否需要I/O訪問,如果是,那么啟動IOBUS_ACCESS信號(沒有示出)。在CPU模塊3的情況下,由于不需要I/O訪問,IOBUS_ACCESS信號被設(shè)置為無效電平。CPU模塊3上的總線控制器32已經(jīng)在線路110上收到了系統(tǒng)總線確認(rèn)(SBACK3-)信號,并且在線路82上收到了處于有效電平的ABUSAVL信號,因此處于狀態(tài)圖的狀態(tài)S2。當(dāng)在線路86上收到處于無效電平的SBUSBSY-信號后,CPU3在時鐘周期12確立線路96上的SADDS-信號,如圖5B所示。這發(fā)生在狀態(tài)圖中從狀態(tài)S2向狀態(tài)S4轉(zhuǎn)換的時候。系統(tǒng)總線18上鎖定地址的裝置響應(yīng)在線路96上接收的SADDS-信號對地址進(jìn)行鎖定。通過線路96上SADDS-信號的確立,系統(tǒng)地址總線不再可用,因此,線路82上的ABUSAVL信號被驅(qū)動為無效電平。最后,線路86上的SBUSBSY-信號被確立,指示系統(tǒng)總線18正忙于CPU模塊3的請求操作。同樣在時鐘周期12,當(dāng)在線路96上發(fā)出SADDS-信號之后,CPU模塊3在線路94上釋放系統(tǒng)總線請求線SBREQ3-,原因是CPU模塊3已經(jīng)將一個請求地址放在了系統(tǒng)總線18上,因此已經(jīng)被授權(quán)使用系統(tǒng)總線18。在時鐘周期13,線路88上的TRNSHLD信號被每個連接到系統(tǒng)總線18的裝置驅(qū)動到有效電平,與此同時每個裝置確定它是否有被請求的數(shù)據(jù)。當(dāng)每個裝置確定它不響應(yīng)被請求的地址時,它釋放TRNSHLD-信號。這相關(guān)于狀態(tài)圖中的狀態(tài)S5。由于地址已經(jīng)被呈現(xiàn)給系統(tǒng)總線18,因此線路96上的SADDS-信號被撤銷。在時鐘周期14,最后一部分有效數(shù)據(jù)被從I/O控制器16傳送到I/O總線20。
在時鐘周期15,I/O控制器16撤銷它在線路76上的總線請求信號IOBUS_REQ-,以使得其它裝置訪問I/O總線20,因為它的周期已經(jīng)完成了。此外,系統(tǒng)總線18上的最后一個裝置響應(yīng)來自CPU模塊3的請求在線路88上釋放TRNSHLD-信號。該信號的釋放相應(yīng)于狀態(tài)圖中從狀態(tài)S5向狀態(tài)S0的轉(zhuǎn)換。在狀態(tài)S0,CPU模塊3的總線控制器32等待來自其微處理器24的下一個地址請求。
在時鐘周期16,線路81上的IOBUS_ACK-信號確認(rèn)線路76上的IOBUS_REQ-信號的撤銷。由于I/O總線20不再使用,線路52上的IOBUS-BSY-信號返回到一個無效狀態(tài)。當(dāng)線路52上的IOBUS_BSY-信號撤銷后,CPU模塊2的總線控制器32返回到狀態(tài)圖的狀態(tài)S1,并且再一次試圖訪問I/O總線20,該總線現(xiàn)在是可用的。當(dāng)系統(tǒng)總線18上來自CPU模塊3的地址請求不再有效時,地址總線可用于另外的事務(wù)處理。因此,在時鐘周期16,線路82上的ABUSAVL信號撤銷。
在時鐘周期17,CPU2又通過啟動線路92上的SBREQ2-信號來請求對系統(tǒng)總線的訪問。另外,線路106上的周期終止(CTERM-)信號由系統(tǒng)總線18上的裝置予以確立,該裝置帶有有效數(shù)據(jù),指示該數(shù)據(jù)是可用的。該有效數(shù)據(jù)提供到系統(tǒng)總線的數(shù)據(jù)線路SMD6300108上。CPU模塊1在每個時鐘周期18-21的前沿從系統(tǒng)總線18接收有效數(shù)據(jù)。
在時鐘周期18,線路110上的SBACK3-信號被撤銷,由此確認(rèn)線路94上的SBREQ3-信號的撤銷。當(dāng)在線路110上釋放SBACK3-信號后,由于系統(tǒng)總線不再保留給CPU模塊3,因此中央仲裁器60確認(rèn)下一個CPU模塊12的請求。在這種情況下,中央仲裁器60在線路102上啟動一個SBACH2-信號,確認(rèn)CPU模塊2。
由于先前在線路102上收到了處于有效電平的SBACK2-信號,又在線路82上收到處于有效電平的ABUSAVL信號,CPU模塊2在時鐘周期19轉(zhuǎn)換到總線控制器時序圖中的狀態(tài)S2。如上所述,由于CPU模塊2請求的地址需要訪問I/O總線20,因此,CPU模塊2上的IOBUS_ACCESS信號被設(shè)置在有效電平(沒有示出)。
在時鐘周期20,CPU模塊2將它的地址SADDRxx放到線路98上的系統(tǒng)地址總線上。然而,由于線路86上的SBUSBSY-信號仍然是有效的,線路96上的SADDS-信號沒有被啟動,因此CPU模塊2的地址沒有被系統(tǒng)總線18上的任何裝置鎖存。另外,在時鐘周期20,響應(yīng)CPU模塊2的請求傳送數(shù)據(jù)到系統(tǒng)總線18的裝置將線路112上的事務(wù)的系統(tǒng)處理結(jié)束(SEOT-)信號選通為邏輯低電平。
在時鐘周期21,CPU模塊3已經(jīng)接受了數(shù)據(jù)傳送,并且線路106上的CTERM-信號返回到邏輯高電平。一旦線路106上的CTERM-信號返回到邏輯高電平,并且同時線路112上的SEOT信號被選通為邏輯低電平,那么線路86上的SBUSBSY-信號回到無效電平,原因是系統(tǒng)總線18上的周期已經(jīng)結(jié)束由于在線路86上收到了處于無效電平的SBUSBSY-信號,CPU模塊3在時鐘周期22確立線路96上的SADDS-信號。這發(fā)生在狀態(tài)圖中從狀態(tài)S2向狀態(tài)S4轉(zhuǎn)換的時候。系統(tǒng)總線18上鎖定地址的裝置響應(yīng)在線路96上接收的SADDS-信號對地址進(jìn)行鎖定。通過對線路96上SADDS-信號的確立,系統(tǒng)地址總線不再可以由其它CPU模塊12訪問,因此,線路82上的ABUSAVL信號被驅(qū)動為無效電平。最后,線路86上的SBUSBSY-信號被確立,指示系統(tǒng)總線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所相關(guān)的問題。只要CPU模塊12還沒有收到線路52上的IOBUS_BSY-信號,就可以請求一次I/O訪問。因此,I/O控制器16可以在CPU模塊12請求I/O總線20的同時也請求I/O總線20。在由總線協(xié)議電路64在線路52上產(chǎn)生IOBUS_BSY-信號之后,到CPU模塊12接收到線路52上的IOBUS_BSY-信號之前,由于需要一個時鐘周期,因此,在中央仲裁器60將I/O總線18給予I/O控制器16來檢查是否發(fā)生并行CPU模塊訪問之前,它需要等待至少一個周期。
在圖5A-5B所示的較佳實施例中,當(dāng)收到IOBUS_REQ-信號之后,IOBUS_ACK-信號在IOBUS_BSY-被確立之后的兩個時鐘周期被啟動。兩個時鐘周期足以確定在響應(yīng)I/O控制器16的請求啟動IOBUS_BSY-信號的同時,是否有某一個CPU模塊12請求了I/O總線20上的一個地址。兩個時鐘周期之后,已經(jīng)確定CPU模塊12已收到了線路52上的IOBUS_BSY-信號,并且在線路52上的IOBUS_BSY-信號撤銷之前,將不再請求I/O總線訪問。在檢測到并行訪問的情況下,由于終止CPU模塊的請求會造成微處理器檢測到錯誤情況,因此CPU模塊被授權(quán)使用I/O總線,從而在CPU模塊的周期完成之前,提出請求的I/O控制器16不會接收IOBUS_ACK-信號。
圖6A-6B示出了在響應(yīng)來自I/O控制器16的IOBUS_REQ-啟動IOBUS-BSY-信號的同時,CPU模塊2請求訪問I/O總線20的情況。
在時鐘周期1,每個CPU模塊12的總線請求被啟動(即線路90上的SBREQ1-信號,線路92上的SBREQ2-信號,以及線路94上的SBREQ3-信號被啟動)。CPU模塊1已經(jīng)收到了線路100上處于有效狀態(tài)的SBACK1-信號,CPU模塊2和CPU模塊3上的總線控制器32正等待分別接收它們的系統(tǒng)總線確認(rèn)(SBACKx-)信號線路102上的SBACK2-和線路110上的SBACK3-。在時鐘周期1,相應(yīng)于CPU模塊1的狀態(tài)圖的狀態(tài)S2,線路86上的SBUSBSY-信號處于無效電平,而線路82上的ABUSAVL-信號處于有效電平。
在時鐘周期2,來自CPU模塊1的系統(tǒng)地址經(jīng)由SADDRxx線路98被提供給系統(tǒng)總線18。從時鐘周期2到5該地址有效。同樣在時鐘周期2,由于SBUSBSY-處于無效電平,而ABUSAVL信號處于有效電平,CPU模塊1上的總線控制器32在線路96上發(fā)出一個處于有效電平的SADDS-信號。這在狀態(tài)圖中從狀態(tài)S2向狀態(tài)S4過渡時發(fā)生。系統(tǒng)總線18上鎖定該地址的裝置,響應(yīng)在線路96上收到的SADDS-信號,將被該地址鎖定起來。在時鐘周期3,由于CPU模塊1已經(jīng)將它的地址放在了系統(tǒng)總線18上,CPU模塊1在線路90上發(fā)出系統(tǒng)總線請求信號SBREQ1-,因此它已被授權(quán)使用系統(tǒng)總線18。在同一時間,線路88上的TRNSHLD-信號由連接到系統(tǒng)總線18上的每個裝置驅(qū)動為有效信號,同時每個裝置確定它是否有所請求的數(shù)據(jù)。當(dāng)每個裝置確定它不響應(yīng)被請求的地址時,它發(fā)出TRNSHLD-信號。線路88上的TRNSHLD-信號的確立相應(yīng)于狀態(tài)圖中的狀態(tài)S5。另外,由于地址已經(jīng)被提供給系統(tǒng)總線18,線路96上的SADDS-信號被撤銷。
在時鐘周期4,線路100上的SBACK-信號被撤銷,由此確認(rèn)線路90上的SBREQ1-信號的撤銷。當(dāng)釋放了SBACK1-信號后,由于系統(tǒng)總線不再被授權(quán)給CPU模塊1,因此中央仲裁器60確認(rèn)下一個CPU模塊12的請求。在這種情況下,中央仲裁器60在線路102上啟動一個SBACK2-信號,將系統(tǒng)總線18授權(quán)給CPU模塊2。
在時鐘周期5,系統(tǒng)總線18上的最后一個裝置在線路88上釋放TRNSHLD-信號,這是線路98上來自CPU模塊1的所請求的地址有效的最后一個周期,并且相應(yīng)于狀態(tài)圖中從狀態(tài)S5到狀態(tài)S0的轉(zhuǎn)換。此時,CPU模塊1保持在狀態(tài)S0,等待微處理器的下一個地址請求。
在時鐘周期6,由于來自CPU模塊1的地址請求不再有效,線路82上的ABUSAVL信號返回到有效電平。由于先前在線路102上收到了處于有效電平的SBACK2-信號,又在線路82上收到處于有效電平的ABUSAVL信號,CPU模塊2在時鐘周期7移動到總線控制器時序圖中的狀態(tài)S2。CPU模塊2已經(jīng)在總線收發(fā)器30以及地址和循環(huán)類型譯碼器36收到了微處理器的請求地址。該地址和循環(huán)類型譯碼器36確定CPU的請求地址是否需要一次I/O訪問,如果是,那么啟動IOBUS_ACCESS信號(沒有示出)。在CPU模塊2的情況下,地址請求需要訪問I/O總線20。因此,IOBUS_ACCESS信號被確立在有效電平(沒有示出)。
在時鐘周期7,周期終止,線路106上的CTERM-信號由一個裝置予以確立,該裝置帶有CPU模塊1請求的數(shù)據(jù),指示該數(shù)據(jù)是可用的。該有效數(shù)據(jù)通過數(shù)據(jù)線路SMD6300108上提供給系統(tǒng)總線18。CPU模塊1在每個時鐘周期8-11的前沿從系統(tǒng)總線18接收有效數(shù)據(jù)。
在時鐘周期9中,CPU模塊2將它的地址SADDRxx放到系統(tǒng)總線18的地址線98上。然而,由于線路86上的SBUSBSY-信號處于有效電平,線路96上的SADDS-信號沒有被啟動,因此CPU模塊2的地址沒有被系統(tǒng)總線18上的任何裝置鎖定。在時鐘周期10,將數(shù)據(jù)傳送到CPU模塊1的裝置將線路112上的事務(wù)的系統(tǒng)處理結(jié)束(SEOT-)信號選通為有效電平。
在時鐘周期11,CPU模塊1已經(jīng)接受了來自所述裝置的數(shù)據(jù)傳送,并且線路106上的CTERM-信號返回到無效電平。一旦線路106上的CTERM-信號返回到無效電平,并且同時線路112上的SEOT-信號被選通為有效電平,那么線路86上的SBUSBSY-信號回到無效電平,原因是系統(tǒng)總線1 8的周期已經(jīng)結(jié)束。同樣在時鐘周期11,某一個I/O控制器16通過確立線路76上的I/O總線請求信號IOBUS_REQ-,來請求對I/O總線20的訪問。
在時鐘周期12,響應(yīng)線路76上IOBUS_REQ-信號的啟動,I/O總線協(xié)議電路64啟動線路52上處于有效電平的IOBUS_BSY-信號,以阻止其它CPU模塊12試圖訪問I/O總線20。然而,由于收到了線路86上處于無效電平的SBUSBSY-信號,CPU模塊2也在時鐘周期12在此線路96上確立SADDS-信號。這發(fā)生在狀態(tài)圖中從狀態(tài)S2向狀態(tài)S4的轉(zhuǎn)換。
如上所述,當(dāng)線路52上的IOBUS_BSY-信號響應(yīng)來自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-信號的確立,系統(tǒng)地址總線不再可用,因此,線路82上的ABUSAVL信號被驅(qū)動為無效電平。最后,線路86上的SBUSBSY-信號被確立,指示系統(tǒng)總線18正忙于CPU模塊3的請求操作。
在時鐘周期13,在線路96上發(fā)出SADDS-信號之后,由于CPU模塊2已經(jīng)將一個被請求的地址放在了系統(tǒng)總線18上,CPU模塊2在線路92上釋放系統(tǒng)總線請求信號SBREQ2-,因此已經(jīng)授權(quán)使用系統(tǒng)總線18。同樣在時鐘周期13,線路88上的TRNSHLD-信號被每個連接到系統(tǒng)總線18的裝置驅(qū)動到有效電平,與此同時每個裝置確定它是否有被請求的數(shù)據(jù)。當(dāng)每個裝置確定它不響應(yīng)被請求的地址時,它釋放TRNSHLD-信號。這相關(guān)于狀態(tài)圖中的狀態(tài)S5。最后,由于地址已經(jīng)被提供給系統(tǒng)總線18,因此線路96上的SADDS-信號被撤銷。
在時鐘周期14,中央仲裁器60撤銷線路102上的SBACK2-信號,并確認(rèn)線路92上的SBREQ2-信號的撤銷。當(dāng)釋放了線路102上的SBACK2-信號后,由于系統(tǒng)總線18不再被授權(quán)給CPU模塊2,因此中央仲裁器60確認(rèn)下一個CPU模塊12的請求。在這種情況下,中央仲裁器60啟動線路110上的SBACK3-信號,確認(rèn)CPU模塊3的請求。
在時鐘周期15,系統(tǒng)總線18上的最后一個裝置在線路88上釋放TRNSHLD-信號。該信號的釋放相應(yīng)于狀態(tài)圖中從狀態(tài)S5向狀態(tài)S0的轉(zhuǎn)換。這時CPU模塊2上的總線控制器保持在狀態(tài)S0直到微處理器請求一個新的地址為止。在時鐘周期16,由于系統(tǒng)總線18上來自CPU模塊2的地址請求不再有效,因此地址總線可用于其它事務(wù)處理,從而線路82上的ABUSAVL信號被確立。這相應(yīng)于CPU模塊3的狀態(tài)圖中的狀態(tài)S2。
在時鐘周期18中,CPU模塊3將它的地址放到系統(tǒng)總線18上。然而,由于線路86上的SBUSBSY-信號處于有效電平,線路96上的SADDS-信號沒有被啟動,因此CPU模塊2的地址沒有被系統(tǒng)總線18上的任何裝置鎖定。
在時鐘周期19,線路106上的周期終止(CTERM-)信號由總線橋接器上的控制邏輯63予以確立,另外,總線橋接器22上的控制邏輯63將線路112上的事務(wù)的系統(tǒng)處理結(jié)束(SEOT-)信號選通為低電平。來自I/O總線20的有效數(shù)據(jù)由總線橋接器22上的總線緩沖器62提供給系統(tǒng)總線數(shù)據(jù)線路SMD6300108。
I/O總線橋接器22上的緩沖器62先前以I/O總線20的較低數(shù)據(jù)速度收到了來自I/O總線20的數(shù)據(jù),并且暫時存儲了該數(shù)據(jù)。在時鐘周期19,一旦所有的數(shù)據(jù)都被緩沖器62存儲起來后,總線橋接器22以系統(tǒng)總線18的較快數(shù)據(jù)速度在一個時鐘周期內(nèi)將所有的數(shù)據(jù)從緩沖器62猝發(fā)到系統(tǒng)總線18。CPU模塊2在時鐘周期20的前沿從系統(tǒng)總線18得到有效數(shù)據(jù)。
在時鐘周期20,CPU模塊2已經(jīng)接受了數(shù)據(jù)傳送,并且線路106上的CTERM-信號回到了高電平。一旦線路106上的CTERM-信號返回到高電平,并且同時線路112上的SEOT-信號被選通為低電平,那么線路86上的SBUSBSY-信號回到高電平,原因是系統(tǒng)總線1 8的周期已經(jīng)結(jié)束。由于有效電平已經(jīng)從I/O總線20傳送到了總線緩沖器62,然后又傳送到了系統(tǒng)總線18,因此CPU模塊2的I/O總線事務(wù)已經(jīng)結(jié)束。中央仲裁器60啟動線路78上的IOBUS_ACK-信號,以使得I/O控制器16接收I/O總線20的控制。在I/O總線控制器16完成其事務(wù)處理的同時,線路52上的IOBUS_BSY-信號保持有效。
在時鐘周期21,由于CPU模塊3正試圖訪問系統(tǒng)存儲器而不是處于忙狀態(tài)的I/O總線20,因此允許它處理其地址請求。由于在線路86上收到了處于無效電平的SBUSBSY-信號,CPU模塊3確立線路96上的SADDS-信號。這發(fā)生在狀態(tài)圖中從狀態(tài)S2向狀態(tài)S4過渡的轉(zhuǎn)換。由于確立了線路96上的SADDS-信號,系統(tǒng)地址總線不再可用,因此線路82上的ABUSAVL信號被驅(qū)動為無效信號。最后,線路86上的SBUSBSY-信號被予以確立,指示系統(tǒng)總線18正忙于CPU模塊3所請求的操作。CPU模塊3的系統(tǒng)總線請求按前面相關(guān)于圖6A-6B的CPU模塊1所描述的方式來完成。
同樣也在時鐘周期21,相應(yīng)于I/O控制器16的周期請求,I/O總線18上的有效數(shù)據(jù)是可用的。其余的I/O周期按前面相關(guān)于圖5A-5B所描述的方式來完成。當(dāng)I/O周期完成后,線路52上的IOBUS_BSY-信號被撤銷(沒有示出)。
圖7示出了總線橋接器120的另一個實施例,其中中央仲裁器60的部分功能和控制邏輯63的部分功能由一個高度集成的I/O總線接口控制電路122所取代。該高度集成的I/O總線接口控制電路122具有傳統(tǒng)的設(shè)計,如Intel公司的四個芯片組,部件號為82433LX、82434LX、82374EB和82375EB,它們能為系統(tǒng)總線18和兩個I/O總線(即I/O總線1124和I/O總線2126)之間的接口提供必要的總線控制邏輯。總線接口電路122最好能夠連接EISA類型和PCI類型的I/O總線。當(dāng)總線接口電路122用于微處理器系統(tǒng)10中時,在每個CPU模塊12上的I/O總線禁止電路34不需要改變。然而,總線控制器邏輯32被總線控制器邏輯的另一個實施例150所替代,如后面所述。此外,系統(tǒng)總線18和I/O總線124、126之間的接口信號將有少許改變。
總線橋接器120的這個實施例最好包括一個高度集成的I/O總線接口電路,一個仲裁邏輯電路128,控制邏輯130和一個定時電路132??刂七壿嬰娐?30最好包括一個狀態(tài)機,用于控制I/O周期的定時,對此下面將作更詳細(xì)的描述。仲裁邏輯電路128最好在線路72上接收來自系統(tǒng)總線18的SBREQx-信號(即線路90上的SBREQ1-信號,線路92上的SBREQ2-信號,線路94上的SBREQ3-信號),并在線路74上返回系統(tǒng)總線確認(rèn)信號(SBACKx-)(即線路100上的SBACK1-信號,線路102上的SBACK2-信號,和線路110上的SBACK3-信號),向每個CPU模塊12指示它何時被授權(quán)訪問系統(tǒng)總線18。每個I/O總線124、126將線路133上的I/O請求信號(IOREQx)發(fā)送到處理I/O總線請求的高度集成I/O總線接口電路122。一旦提出請求的I/O總線124、126被授權(quán)訪問,高度集成I/O總線接口電路122在線路134上返回一個處于有效狀態(tài)的總線確認(rèn)信號(IOACKx)。另外,高度集成I/O總線接口電路122控制線路135上的若干控制信號(IO_CONTROLx),后者控制I/O總線124和126的操作。
如果I/O總線124和126的其中一條希望傳送數(shù)據(jù)到系統(tǒng)總線18,那么高度集成I/O總線接口電路將線路137上的一個IO_MP_REQ-信號傳送到仲裁邏輯128。該仲裁邏輯128用線路136上由高度集成I/O總線接口電路122收到的一個系統(tǒng)總線確認(rèn)信號(SBUS_ACK-)回答I/O總線請求。如果一個CPU模塊12希望傳送數(shù)據(jù)到I/O總線124和126的其中一個,那么高度集成I/O總線接口電路122在線路138上接收來自控制邏輯電路130的MP_IO_REQ-信號,當(dāng)I/O總線124、126能夠收到來自系統(tǒng)總線18的數(shù)據(jù)時,高度集成I/O總線接口電路122在線路139上傳送一個處于有效狀態(tài)的RDY-信號到控制邏輯電路130。當(dāng)I/O總線124、126忙于事務(wù)處理時,高度集成I/O總線接口電路122在線路140上傳送一個處于有效狀態(tài)的BACK_OFF-信號到控制邏輯電路130。
再參看圖8,總線接口電路122上控制邏輯電路130中的狀態(tài)機將結(jié)合所示的狀態(tài)圖來進(jìn)行描述。從狀態(tài)S0開始,控制邏輯電路處于空閑狀態(tài),并等待在線路96上接收處于有效狀態(tài)的SADDS-信號。如上所述,當(dāng)CPU模塊12將一個有效地址信號SADDRxx放在系統(tǒng)總線18的線路98上后,它產(chǎn)生SADDS-信號。一旦有效地址被提供給系統(tǒng)總線18,總線橋接器120就接收該地址并將其送到地址譯碼器66。地址譯碼器66判斷被請求的地址是否需要分別訪問I/O總線124或126。如果被請求的地址需要訪問I/O總線124、126的其中一個,地址譯碼器66就啟動線路70上的MP-2-IO-ACCESS信號。
控制邏輯電路130的狀態(tài)機保持在S0狀態(tài),直到在線路96上接收到處于有效狀態(tài)的SADDS-信號,并且在線路70上接收到處于有效電平的MP-2-IO-ACCESS為止,然后它進(jìn)入狀態(tài)S1。在狀態(tài)S1,狀態(tài)機通過監(jiān)視線路139上總線準(zhǔn)備信號(RDY-)來檢查I/O總線的可用性。另外,控制邏輯130檢查線路140上來自I/O總線124、126的退下(BACK_OFF-)信號的狀態(tài),當(dāng)其處于有效狀態(tài)時,線路140上的BACK_OFF-信號通知控制邏輯130,由于I/O總線124、126目前正忙于一件事務(wù),當(dāng)前的事務(wù)處理必須終止。如果線路139上的RDY-信號或線路140上的BACK_OFF-信號都不處于有效狀態(tài),那么控制邏輯130保持在狀態(tài)S1。如果線路139上的RDY-信號處于有效狀態(tài),那么控制邏輯130進(jìn)入到狀態(tài)機的狀態(tài)S2。如果線路140上的BACK_OFF-信號處于有效狀態(tài),那么控制邏輯130進(jìn)入到狀態(tài)機的狀態(tài)S3。
在狀態(tài)S2,控制邏輯130等待I/O總線20到系統(tǒng)總線18的傳送結(jié)束,并在其結(jié)束之時啟動線路112上的SEOT-信號,指示正在傳送最后一部分有效數(shù)據(jù)。在傳送結(jié)束之時,控制邏輯130返回到狀態(tài)S0,等待下一次I/O總線請求。
在狀態(tài)S3,控制邏輯130已經(jīng)確定被請求的I/O總線124、126正忙于一個周期。該控制邏輯130將線路52上的IOBUS_BSY-信號設(shè)置為有效電平,以通知提出請求的CPU模塊12以及其它的CPU模塊12,I/O總線20目前正忙于一件事務(wù)處理。另外,控制邏輯130在線路112上返回處于有效電平的SEOT-信號,指示該周期已經(jīng)結(jié)束。在提出請求的CPU模塊12在線路52上收到處于有效電平的IOBUS_BSY-信號的同時,當(dāng)它在線路112上也收到處于有效電平的SEOT-信號時,CPU模塊12上的總線控制器150的另一個實施例確定I/O總線處于忙狀態(tài),它所請求的I/O訪問已經(jīng)結(jié)束。提出請求的CPU模塊12將移動它的地址并將等待IOBUS_BSY-信號成為無效狀態(tài),然后將再提出請求。與此同時,其余的CPU模塊12正監(jiān)視線路52上的IOBUS_BSY-信號,如上所述。一旦其余的CPU模塊12收到了線路52上處于有效電平的IOBUS_BSY-信號后,它們就不會試圖進(jìn)行I/O訪問。另外,在狀態(tài)S3,控制邏輯130將啟動線路142上的START-信號,該信號被傳送到定時器132,開始進(jìn)行超時周期(time-outperiod),以確定已經(jīng)被請求的I/O事務(wù)的類型。然后,控制邏輯130進(jìn)入到狀態(tài)S4。
在狀態(tài)S4,控制邏輯130等待接收線路144上處于有效電平的TIMEOUT-信號,或接收線路136上的SBUS_ACK-信號。一旦從在線路142上收到START-信號開始經(jīng)過了一個預(yù)定的時間周期后,定時器132就在線路144上產(chǎn)生TIMEOUT-信號。線路144上的TIMEOUT-信號用于確定什么時候當(dāng)前的事務(wù)處理是I/O總線1124到I/O總線2126類型的事務(wù)處理,或反過來。如果I/O事務(wù)處理是I/O總線1124到I/O總線2126類的或相反的事務(wù)處理,控制邏輯130將線路52上的IOBUS_BSY-信號設(shè)置為無效電平,從而使CPU模塊12分別嘗試對I/O總線124、126的訪問。否則,控制邏輯130等待在線路136上接收來自仲裁邏輯電路128的SBUS_ACK-信號,以指示系統(tǒng)總線18正在確認(rèn)分別來自I/O總線124、126的請求,從而使得數(shù)據(jù)被傳送到提出請求的裝置。然后控制邏輯130將撤銷線路52上的IOBUS_BSY-信號,以使得其它CPU模塊12訪問I/O總線124、126。一旦收到線路144上處于有效電平的TIMEOUT-信號或線路136上處于有效電平的SBUS_ACK-信號,控制邏輯電路130將返回到狀態(tài)S0,等待系統(tǒng)總線18的另一次請求。
如果線路144上的TIMEOUT-信號和線路136上的SBUS_ACK-信號保持無效,那么控制邏輯電路130就保持在狀態(tài)S4,并且重新將線路52上的IOBUS_BSY-信號和線路142上的START-信號啟動為有效電平。當(dāng)控制邏輯130從狀態(tài)S4轉(zhuǎn)換到狀態(tài)S0時,控制邏輯電路將線路146上的一個RESET-信號設(shè)置為有效電平,該信號被定時電路132接收,并復(fù)位超時時鐘,直到在線路142上收到來自控制邏輯電路130的下一個START-信號為止。
總線橋接器電路的另一個實施例120與第一個實施例22不同,因為總線接口電路122消除了與I/O控制器16對I/O總線124、126同時提出訪問請求以及CPU模塊12請求有關(guān)的問題。在這兩個實施例中,當(dāng)另一個CPU模塊12或I/O總線124、126中的一個已經(jīng)請求訪問時,如上所述,線路52上的IOBUS_BSY-信號制止所述的CPU模塊啟動I/O總線請求。另外,在提出請求的CPU模塊1 2在線路52上收到IOBUS_BSY-信號之前,當(dāng)另一個CPU模塊12或I/O總線124、126的其中一個已經(jīng)請求了I/O總線之時,另一實施例的總線橋接器電路120采用線路52上IOBUS_BSY-信號來“退下”該請求訪問I/O總線的CPU模塊12。當(dāng)?shù)诙﨏PU模塊在線路52上的IOBUS_BSY-信號被啟動之前請求訪問I/O總線124、126時,線路112上的SEOT-信號和線路52上的IOBUS_BSY-信號回到有效電平。當(dāng)該第二個提出請求的CPU模塊12收到處于有效電平的這兩個信號時,CPU模塊12上另一實施例的總線控制邏輯150認(rèn)識到它先前所請求的周期沒有完成。CPU模塊12上的總線控制邏輯32將等待線路52上的IOBUS_BSY-信號返回到無效電平,同時再啟動先前的地址請求。CPU模塊上另一實施例的總線控制邏輯150和另一實施例的總線橋接器120之間的通信將結(jié)合圖10A-10B作更詳細(xì)的描述。
圖9示出了CPU模塊12上另一實施例的總線控制器邏輯150的狀態(tài)圖。該另一實施例的總線控制器150被進(jìn)行了改進(jìn),以便與該來自另一實施例的總線橋接器120的信號進(jìn)行通信。在狀態(tài)S0的開始,總線控制器150等待在線路80上接收處于有效電平的CPU地址選通(CADS-)信號。當(dāng)CADS-信號保持無效時,總線控制器保持在狀態(tài)S0。一旦在線路80上收到處于有效電平的CADS-信號,總線控制器就進(jìn)入到狀態(tài)S1。
在狀態(tài)S1,總線控制器監(jiān)視線路96上SADDS-信號、線路74上SBACKx-信號和線路86上SBUSBSY-信號的狀態(tài)。當(dāng)SADDS-信號和SBACKx信號保持無效時,總線控制器保持在狀態(tài)S1。一旦線路74上的SBACKx-成為有效,而線路86上的SBUSBSY-信號無效,總線控制器150就進(jìn)入狀態(tài)S10。一旦線路96上的SADDS-信號有效而線路74上的SBACKx-信號保持無效,總線控制器就進(jìn)入狀態(tài)S2。
在狀態(tài)S2,CPU模塊已經(jīng)準(zhǔn)備將一個有效地址請求提供給系統(tǒng)總線18,但系統(tǒng)總線18還沒有被授予提出請求的CPU模塊12。在接下來的兩個時鐘周期,總線控制器150從狀態(tài)S2轉(zhuǎn)換到狀態(tài)S3,然后是狀態(tài)S4。在狀態(tài)S4,總線控制器150監(jiān)視線路42上的IOBUS_ACCESS-信號、線路52上的IOBUS_BSY-信號、線路74上的SBACKx-信號和線路86上的SBUSBSY-信號。如果線路42上的IOBUS_ACCESS-信號有效,線路52上的IOBUS_BSY-信號無效,線路74上的SBACKx-信號無效,線路86上SBUSBSY-信號有效,那么總線控制器進(jìn)入狀態(tài)S6??偩€控制器150從狀態(tài)S4向狀態(tài)S6的轉(zhuǎn)換表明CPU請求的地址需要訪問I/O總線20,而I/O總線20目前沒有忙于其他事務(wù)。另外,總線控制器150從狀態(tài)S4向狀態(tài)S6的轉(zhuǎn)換表明系統(tǒng)總線18目前正忙于總線事務(wù),因此沒有同意提出請求的CPU模塊的總線請求。
在狀態(tài)S4,如果線路42上的IOBUS_ACCESS-信號無效,線路74上的SBACKx-信號無效,線路86上SBUSBSY-信號有效,那么總線控制器進(jìn)入狀態(tài)S7??偩€控制器150從狀態(tài)S4向狀態(tài)S7的轉(zhuǎn)換表明CPU請求的地址不需要訪問I/O總線20。另外,從狀態(tài)S4向狀態(tài)S7的轉(zhuǎn)換表明系統(tǒng)總線18目前正忙于一件事務(wù),因此總線控制器150沒有被授權(quán)訪問系統(tǒng)總線。
最后,在狀態(tài)S4,如果總線控制器在線路42上收到了處于無效電平的IOBUS_ACCESS-信號,或者如果控制器150在線路42上收到了處于有效電平的IOBUS_ACCESS-信號,以及線路52上處于無效電平的IOBUS_BSY-信號,并且如果總線控制器150已經(jīng)另外在一條線路74上收到了處于有效電平的SBACKx-信號,在線路86上收到了處于無效電平的SBUSBSY-信號,那么總線控制器150進(jìn)入狀態(tài)S10。從狀態(tài)S4向S10的轉(zhuǎn)換表明了CPU請求的地址不需要訪問I/O總線20,或者如果該地址需要訪問I/O總線20,I/O總線20目前沒有忙于事務(wù)處理。另外,從狀態(tài)S4向狀態(tài)S10的轉(zhuǎn)換表明系統(tǒng)總線18目前是可用的,并且總線控制器150已被授權(quán)訪問系統(tǒng)總線18。
如果在狀態(tài)S4,總線控制器150收到了線路52上處于有效電平的IOBUS_BSY-信號和線路42上處于有效電平的IOBUS_ACCESS信號,那么總線控制器150進(jìn)入狀態(tài)S5。總線控制器150從狀態(tài)S4向S5的轉(zhuǎn)換表明CPU請求的地址需要訪問I/O總線20,而I/O總線目前正忙于一件I/O請求。
在狀態(tài)S5,總線控制器150監(jiān)視線路52上IOBUS_BSY-信號的狀態(tài)。如果線路52上的IOBUS_BSY-信號保持有效,那么總線控制器150保持在狀態(tài)S5。一旦線路52上的IOBUS_BSY-信號轉(zhuǎn)換到無效電平,總線控制器就進(jìn)入狀態(tài)S6。從狀態(tài)S5向狀態(tài)S6的轉(zhuǎn)換表示I/O總線20不再忙于事務(wù)處理,因此可以用于訪問。
在狀態(tài)S6,總線控制器150監(jiān)視線路52上IOBUS_BSY-信號、線路74上SBACKx-信號和線路86上SBUSBSY-信號的狀態(tài)。如果線路52上的IOBUS_BSY-信號無效,線路74上的SBACKx-信號無效,線路86上的SBUSBSY-信號有效,那么總線控制器150將保持在狀態(tài)S6。如果線路52上的IOBUS_BSY-信號有效,總線控制器150將返回到狀態(tài)S5,直到線路52上的IOBUS_BSY-信號變?yōu)闊o效電平為止。如果線路74的其中一條上的SBACKx-信號有效,線路86上的SBUSBSY-信號無效,線路52上的IOBUS_BSY-信號無效,那么總線控制器150進(jìn)入到狀態(tài)S10。從狀態(tài)S6向狀態(tài)S10的轉(zhuǎn)換表明了系統(tǒng)總線18可用于訪問,并且系統(tǒng)總線18已經(jīng)被授給了提出請求的CPU模塊12。另外,從狀態(tài)S6向狀態(tài)S10的轉(zhuǎn)換表明了I/O總線20可用于由提出請求的CPU模塊12進(jìn)行訪問。
在狀態(tài)S7,提出請求的CPU模塊12的總線控制器150分別監(jiān)視線路74上的SBACKx-信號和線路86上的SBUSBSY-信號的狀態(tài)。如果SBACKx-信號保持無效而SBUSBSY-信號保持有效,總線控制邏輯就保持在狀態(tài)S7。一旦CPU模塊在線路74上的相應(yīng)SBACKx-信號變?yōu)橛行Ф€路86上的SBUSBSY-信號無效,總線控制器150就進(jìn)入狀態(tài)S10。從狀態(tài)S7向狀態(tài)S10的轉(zhuǎn)換表明系統(tǒng)總線18現(xiàn)在可用于訪問,并且提出請求的CPU模塊12已被授權(quán)訪問系統(tǒng)總線18。
在接下來的兩個時鐘周期總線控制器150從狀態(tài)S10進(jìn)入狀態(tài)S11和狀態(tài)S12。在狀態(tài)S12,總線控制器150監(jiān)視線路42上IOBUS_ACCESS-信號的狀態(tài)。如果線路42上的IOBUS_ACCESS-信號無效,指示被請求的地址不需要訪問I/O總線,總線控制器150就回到狀態(tài)S0并等待下一個微處理器地址請求。如果線路42上的IOBUS_ACCESS-信號有效,那么總線控制器就進(jìn)入狀態(tài)S15。從狀態(tài)S12向狀態(tài)S15的轉(zhuǎn)換表明CPU請求的地址不需要訪問I/O總線。
在狀態(tài)S15,總線控制器150監(jiān)視線路112上的SEOT-信號和線路52上的IOBUS_BSY-信號的狀態(tài)。當(dāng)線路112上的SEOT-信號保持無效時,總線控制器150保持在狀態(tài)S15。如果SEOT-信號有效,并且線路52上的IOBUS_BSY-信號也有效,那么總線控制器返回到狀態(tài)S5。從狀態(tài)S15向狀態(tài)S5的轉(zhuǎn)換表明,當(dāng)I/O總線被授予另一個請求者之后,CPU對I/O總線請求的訪問已經(jīng)被接收,總線控制器150必須等待當(dāng)前的I/O周期結(jié)束。在返回到狀態(tài)S5之后,一旦當(dāng)前的I/O周期結(jié)束,總線控制器150就可以試著再次訪問I/O總線。如果在狀態(tài)S15線路112上的SEOT-信號有效而線路52上的IOBUS_BSY-信號無效,總線控制器150就返回到狀態(tài)S0。從狀態(tài)S15向狀態(tài)S0的轉(zhuǎn)換表明CPU模塊對I/O總線請求的訪問已經(jīng)結(jié)束。一旦處在狀態(tài)S0,總線控制器150就等待微處理器24請求的下一個地址。
總線控制器150和另一實施例的總線橋接器120之間的通信將結(jié)合圖10A-10B進(jìn)行詳細(xì)的描述。圖10A-10B示出了CPU模塊試圖對系統(tǒng)總線18和I/O總線20進(jìn)行的若干次訪問的時序圖。與圖8和圖9中的狀態(tài)相應(yīng)的CPU模塊總線控制器的狀態(tài)和總線橋接器上的控制邏輯130的狀態(tài)示于圖的上部。
從時序圖的時鐘周期1開始,總線橋接器120上的控制邏輯130等待CPU模塊12的其中一個的地址請求。CPU模塊#1、CPU模塊#2和CPU模塊#3的每個微處理器都已經(jīng)發(fā)送了地址請求到它們相應(yīng)的總線收發(fā)器30。另外,在時鐘周期1,線路90上的SBREQ1-信號、線路92上的SBREQ2-信號和線路94上的SBREQ3-信號都是有效的。這表明每個CPU模塊12都已請求了對系統(tǒng)總線18的訪問。
在時鐘周期2,線路100上的SBACK1-是有效的。這表明系統(tǒng)總線18已經(jīng)授權(quán)訪問CPU模塊#1。另外,線路86上的SBUSBSY-信號是無效的,因此指示系統(tǒng)總線18是可用的。
在時鐘周期3,CPU模塊#1將其地址SADDRxx放在系統(tǒng)總線18的線路98上,并在線路96上啟動SADDS-信號。從時鐘周期3到時鐘周期4地址都是有效的。由于系統(tǒng)總線18上的被請求地址,線路86上的SBUSBSY-信號變?yōu)橛行?,指示系統(tǒng)總線18目前正在處理一項事務(wù)。最后,CPU模塊#1將它在線路90上的SBREQ1-信號設(shè)置為無效電平,指示CPU模塊#1不再請求對系統(tǒng)總線18的訪問。此外,CPU模塊#1通過啟動線路152上的一個CPU1 IOBUS_ACCESS信號,來指示它所請求的地址需要訪問I/O總線124、126中的其中一個。
在時鐘周期4,線路88上的TRNSHLD-信號被啟動,以使得系統(tǒng)總線18上的裝置確定它們是否相應(yīng)于被請求的地址。響應(yīng)線路90上SBREQ1-信號的撤銷,總線仲裁邏輯128撤銷線路100上的SBRCK1-信號。由于系統(tǒng)總線18在SBACK1-信號釋放之后不再被授權(quán)給CPU模塊#1,總線仲裁邏輯128確認(rèn)下一個CPU模塊12的請求。在這種情況下,總線仲裁邏輯128啟動線路102上的SBACK2-信號,同意訪問CPU模塊#2。最后,線路70上的MP-2-IOBUS-ACCESS-信號被啟動,指示CPU模塊#1的地址請求需要訪問I/O總線124、126的其中一個。
在時鐘周期5,線路146上的RESET-信號被釋放,并返回到無效電平。在時鐘周期6,線路86上的SBUSBSY-信號返回到無效電平,指示系統(tǒng)總線可用于訪問。同樣在時鐘周期6,線路154上的CPU3 IOBUS_ACCESS信號指示由CPU模塊#3請求的地址需要訪問I/O總線124、126的其中一個,然而,CPU模塊#3還沒有被授權(quán)訪問系統(tǒng)總線18。
在時鐘周期7,I/O總線124、126在線路140上產(chǎn)生一BACK_OFF-信號,表示I/O總線124、126當(dāng)前正在處理前一I/O請求。
在時鐘周期8,由于在線路140上收到了處于有效電平的BACK_OFF-信號,控制邏輯130將啟動線路142上處于有效電平的START-信號到定時器電路132。此外,控制邏輯130將把線路52上的IOBUS_BSY-信號設(shè)置為有效電平,與此同時啟動線路106上的CTERM-信號和線路112上的SEOT-信號到有效電平,從而向總線控制器150指示先前來自CPU模塊#1的I/O請求沒有完成。線路52上的IOBUS_BSY-信號將保持有效,一直到I/O請求完成為止。另外,在時鐘周期8,線路92上的SBREQ2-信號被撤銷,以使得其它CPU模塊12訪問系統(tǒng)總線18。同樣在時鐘周期8,CPU模塊#2將其地址SADDRxx在線路98上提供給系統(tǒng)總線18,該地址從時鐘周期8到時鐘周期10一直保持有效。在時鐘周期8,總線控制器150也在線路96上發(fā)出一個處于有效電平的SADDS-信號,以使得該裝置在線路98的地址SADDRxx產(chǎn)生時鐘同步。在這種情況下,CPU模塊#2請求的地址不需要訪問I/O總線124、126的任意一個。因此,線路156上的CPU2IOBUS_ACCESS信號保持無效。
在時鐘周期9,由于CPU請求的地址需要訪問I/O總線124、126,并且由于線路52上的IOBUS_BSY-信號已變?yōu)橛行?,指示出I/O總線20正處于忙狀態(tài),因此CPU模塊#3撤銷線路94上的SBREQ3-信號。一開始,在時鐘周期9,線路88上的TRNSHLD-信號被啟動,以使得系統(tǒng)總線18上的裝置確定是否其中某一個響應(yīng)被請求的地址。時鐘周期10被虛線所中斷,它指示在時鐘周期9和時鐘周期11之間等于或大于一個時鐘周期的一個不確定時間期間。
在時鐘周期11,線路144上的TIMEOUT-信號被確立,指示定時器132已經(jīng)完成了由線路142上的START-信號所啟動的時間期間。另外,線路86上的SBUSBSY-信號被撤銷,指示系統(tǒng)總線18可以用于訪問。
在時鐘周期12,當(dāng)定時器132完成其時間期間后,線路142上的START-信號被撤銷。另外,線路146上的RESET-信號被啟動為有效電平,來重新設(shè)置計時器132。由于在收到線路136上的SBUS_ACK-信號之前,在線路144上收到了處于無效狀態(tài)的TIMEOUT-信號,控制邏輯電路130撤銷線路52上的IOBUS_BSY-信號,以允許另一次I/O訪問。在線路144上收到處于無效電平的TIMEOUT-信號表示I/O請求很有可能是從I/O總線#1 124到I/O總線#2 126的一次傳送,因此,總線橋接器120將允許另一個處理器進(jìn)行訪問。
在時鐘周期13,由于超時周期已經(jīng)結(jié)束,因此線路144上的TIMEOUT-信號被撤銷。由于在線路52上收到了處于無效電平的IOBUS_BSY-信號,CPU模塊#1試圖通過在線路90上確立SBREQ1-信號來啟動另一次I/O請求。另外,CPU模塊#3試圖通過在線路94上確立SBREQ3-信號來啟動一個I/O周期。此外,在時鐘周期13,由CPU模塊#2請求的數(shù)據(jù)數(shù)據(jù)是有效的,并且已經(jīng)被提供給系統(tǒng)總線18上的數(shù)據(jù)線SMD6300。在時鐘周期13,CPU模塊#2已經(jīng)接受了數(shù)據(jù)傳送,線路106上的CTERM-信號回到了有效高電平狀態(tài)。另外,由于被請求的數(shù)據(jù)只需要一個時鐘周期來進(jìn)行傳送,因此線路112上的SEOT-信號被選通為低,指示這是要傳送的最后數(shù)據(jù)。
在時鐘周期14,線路102上的SBACK2-信號被撤銷,由此確認(rèn)線路92上的SBREQ2-信號的撤銷。由于在釋放了SBACK2-信號之后系統(tǒng)總線18不再被授權(quán)給CPU模塊#2,因此仲裁邏輯128確認(rèn)下一個CPU模塊12的請求。在這種情況下,仲裁邏輯啟動線路100上的SBACK1-信號,以指示CPU模塊#1被授權(quán)訪問系統(tǒng)總線18。
在時鐘周期15,CPU模塊#1開始將一個地址放在系統(tǒng)總線18的SADDRxx線路98上。在時鐘周期16,CPU模塊#1將線路96上的SADDS-信號選通為有效電平,指示由CPU#1請求的地址是在系統(tǒng)總線18上并且是有效的。線路98上的SADDRxx-信號在時鐘周期16和17是有效的。隨著將CPU請求的地址提供給系統(tǒng)總線18,線路86上的SBUSBSY-信號被予以確立,指示系統(tǒng)總線18正忙于事務(wù)處理。最后,由于系統(tǒng)總線18已經(jīng)被授權(quán)給CPU模塊#1,線路90上的SBREQ1-信號被撤銷。
在時鐘周期17,由CPU#1請求的地址被總線橋接器120鎖定??偩€橋接器120上的總線控制邏輯130啟動線路146上的RESET-信號,將定時器132重新設(shè)置到初始位置。另外,線路100上的SBACK1-信號被撤銷,由此確認(rèn)線路90上的SBREQ1-信號在先前的時鐘周期的撤銷。由于系統(tǒng)總線18隨著SBACK1-信號的釋放不再被授予CPU模塊#1,因此仲裁邏輯128確認(rèn)下一個CPU模塊12的請求。在這種情況下,仲裁邏輯128啟動線路110上的SBACK3-信號,將系統(tǒng)總線18授予CPU模塊#3。最后,啟動線路88上的TRNSHLD-信號,以使得系統(tǒng)總線18上的裝置確定其中某一個裝置是否響應(yīng)被請求的地址。
在時鐘周期19,由于被請求的地址已經(jīng)被總線橋接器120鎖定,并且CPU模塊#1不再需要系統(tǒng)總線18,因此線路86上的SBUSBSY-信號被CPU#1釋放。
在時鐘周期20,CPU#3準(zhǔn)備將其地址放到系統(tǒng)總線18上。另外,由CPU#1從I/O總線124、126之一中請求的數(shù)據(jù)是可用的。該有效數(shù)據(jù)被提供給系統(tǒng)總線18的數(shù)據(jù)線路SMD6300。進(jìn)而,控制邏輯130啟動線路106上的周期終止(CTERM-)信號,指示被請求的數(shù)據(jù)是可用的。CPU模塊#1在時鐘周期21的前沿在系統(tǒng)總線18上收到有效數(shù)據(jù)。此外,由于被請求的數(shù)據(jù)只需要一個時鐘周期來進(jìn)行傳送,因此線路112上的SEOT-信號被選通一個時鐘周期,指示這將是總線橋接器在這個時間傳送的最后數(shù)據(jù)。
在時鐘周期21,線路146上的RESET-信號被確立為一個有效電平,將定時器132重新設(shè)置一個新的時間周期,以監(jiān)視下一個I/O傳送。此外,CPU模塊#1在線路42上的IOBUS_ACCESS-信號在其對CPU#1的I/O請求已經(jīng)結(jié)束后就被撤銷,而且CPU模塊#3將其有效地址SADDRxx信號放在系統(tǒng)總線18的線路98上。在時鐘周期21和22,被請求的地址是有效的。線路96上的SADDS-信號在一個時鐘周期被選通為低電平,以使得系統(tǒng)總線18上的裝置鎖定該地址請求。當(dāng)將CPU模塊#3的地址請求放在系統(tǒng)總線上后,線路86上的SBUSBSY-信號被啟動為有效電平,指示系統(tǒng)總線18正忙于下一次事務(wù)處理。
在時鐘周期22,線路88上的TRNSHLD-信號被啟動,以使得系統(tǒng)總線18上的裝置來確定是否其中某個裝置響應(yīng)被請求的地址。其余的I/O周期以前面結(jié)合CPU模塊#1所描述的方式來完成。
如上所述,由總線橋接器產(chǎn)生的IOBUS_BSY-信號向所有的CPU模塊12表明了I/O總線20已經(jīng)被請求,CPU模塊12將保持其I/O請求直到當(dāng)前的事務(wù)處理完成為止。通過制止其它CPU模塊12執(zhí)行I/0請求,系統(tǒng)總線18不必被保持空閑。在該先前所要保持的時間內(nèi),系統(tǒng)總線18可以被用于存儲器到CPU模塊的事務(wù)處理和CPU模塊到CPU模塊的事務(wù)處理,如當(dāng)I/O總線20正使用時,超高速緩沖存儲器的命中響應(yīng)。通過減少系統(tǒng)總線必須保持空閑的時間,系統(tǒng)總線的整體性能被大大增強。
本發(fā)明在不脫離其精神或基本特征的前提下也可以以其他特定形式來實現(xiàn)。本發(fā)明的實施例都是示意性而非限制性的。因此本發(fā)明的范圍由權(quán)利要求書而不是說明書來限定。在等同的權(quán)利要求范圍內(nèi)所作的任何改進(jìn)都包括在該范圍之內(nèi)。
權(quán)利要求
1.用于多處理器系統(tǒng)的一種改進(jìn)的信號發(fā)送協(xié)議方法,所述多處理器系統(tǒng)包括若干連接到公用系統(tǒng)總線和經(jīng)由I/O總線橋接器連接到I/O總線的CPU模塊,所述信號發(fā)送協(xié)議方法包括以下步驟在所述I/O總線橋接器上產(chǎn)生具有第一和第二邏輯狀態(tài)的一個I/O總線忙信號,所述第一邏輯狀態(tài)指示所述I/O總線目前正忙于處理一件I/O總線事務(wù),所述第二邏輯狀態(tài)指示所述I/O總線可用于處理一件I/O總線事務(wù);在每個所述CPU模塊接收所述I/O總線忙信號;確定CPU地址請求是否需要訪問所述I/O總線;不管所述I/O總線忙信號的狀態(tài)如何,如果所述CPU請求的地址都不需要訪問所述I/O總線,那么當(dāng)所述共用系統(tǒng)總線可用時,處理所述共用系統(tǒng)總線上的所述CPU地址請求;如果所述地址請求需要訪問所述I/O總線,并且所述I/O總線忙信號處于所述第一邏輯狀態(tài),那么保持所述CPU地址請求;如果所述地址請求需要訪問所述I/O總線,并且所述I/O總線忙信號處于所述第二邏輯狀態(tài),那么當(dāng)所述系統(tǒng)總線可用時,處理所述CPU地址請求。
2.用于多處理器系統(tǒng)的一種改進(jìn)的信號發(fā)送協(xié)議電路,所述多處理器系統(tǒng)包括若干連接到公用系統(tǒng)總線和經(jīng)由I/O總線橋接器連接到I/O總線的CPU模塊,所述信號發(fā)送協(xié)議電路包括在所述I/O總線橋接器上的I/O總線協(xié)議電路,它產(chǎn)生具有第一和第二邏輯狀態(tài)的一個I/O總線忙信號,所述第一邏輯狀態(tài)指示所述I/O總線目前正忙于處理一個I/O總線事務(wù),所述第二邏輯狀態(tài)指示所述I/O總線可用于處理一件I/O總線事務(wù);在每個所述CPU模塊上的總線控制器邏輯電路,每個所述總線控制器邏輯電路從相應(yīng)的CPU得到一個地址請求,并且控制所述CPU地址請求向所述系統(tǒng)總線的傳送;在每個所述CPU模塊上的I/O總線禁止電路,所述I/O總線禁止電路進(jìn)一步包括一個地址和循環(huán)類型譯碼器,它產(chǎn)生具有第一和第二邏輯狀態(tài)的一個I/O總線訪問信號,所述第一邏輯狀態(tài)指示所述CPU地址請求需要訪問所述I/O總線,所述第二邏輯狀態(tài)指示所述CPU地址請求不需要訪問所述I/O總線;具有第一和第二輸入的一個邏輯電路,所述邏輯電路的第一輸入連接到所述I/O總線訪問信號,而所述邏輯電路的所述第二輸入連接到所述I/O總線忙信號,所述邏輯電路的輸出產(chǎn)生一個禁止信號,其中所述禁止信號被連接到所述總線控制器邏輯電路,以禁止所述CPU地址請求向所述系統(tǒng)總線的傳送,并直到所述I/O總線完成了一個當(dāng)前事物處理為止。
3.根據(jù)權(quán)利要求2所述的改進(jìn)的信號發(fā)送協(xié)議電路,其特征在于進(jìn)一步包括一個位于所述系統(tǒng)總線和所述I/O總線之間的緩沖電路,其中,從所述系統(tǒng)總線向所述I/O總線傳送的數(shù)據(jù)以系統(tǒng)總線的速度被傳送到所述緩沖電路,并且再以I/O總線的速度從所述緩沖電路送出,而從所述I/O總線向所述系統(tǒng)總線傳送的數(shù)據(jù)以I/O總線的速度被傳送到所述緩沖電路,并且再以系統(tǒng)總線的速度從所述緩沖電路送出。
全文摘要
用于多處理器系統(tǒng)(10)中的改進(jìn)的信號發(fā)送協(xié)議,可以在I/O總線訪問時允許對共用系統(tǒng)總線(18)的并行訪問。這縮短了系統(tǒng)總線的空閑時間,但沒有使得系統(tǒng)總線的結(jié)構(gòu)復(fù)雜化,因此不會減小總線整體帶寬的增大。改進(jìn)的總線結(jié)構(gòu)采用系統(tǒng)產(chǎn)生的I/O總線忙信號(IOBUS BSY-)信號來向所有處理器(12)指示I/O總線(20)正被使用,所有其他的I/O請求都必須保持到當(dāng)前的事務(wù)處理完成為止。通過禁止其他處理器(12)執(zhí)行I/O請求,系統(tǒng)總線(18)不必保持在空閑狀態(tài),而可以在I/O總線(20)被使用時用于存儲器與處理器之間和處理器與處理器之間的事務(wù)處理。通過縮短系統(tǒng)總線的空閑時間,系統(tǒng)總線的整體性能被大大增強。
文檔編號G06F13/36GK1143421SQ95191949
公開日1997年2月19日 申請日期1995年1月6日 優(yōu)先權(quán)日1994年1月14日
發(fā)明者B·F·本內(nèi)特 申請人:Ast研究公司