專利名稱:多處理器的存儲阻塞檢測的制作方法
一般地講,本發(fā)明是關(guān)于數(shù)據(jù)處理系統(tǒng)的,具體說,本發(fā)明涉及一個多處理器系統(tǒng)內(nèi)的存儲和裝載操作。
在多處理器系統(tǒng)中,常有以下情況發(fā)生。在一個或多個處理器上,指令流的執(zhí)行要依靠由另一個處理器產(chǎn)生的存儲器的存儲操作能否成功完成。在某些情況下,因為系統(tǒng)的其它部分所產(chǎn)生的存儲操作完全占用了連接彼此的可用的帶寬或由于冒險檢測硬件的副作用而產(chǎn)生的等效于阻塞存儲操作的等效作用,存儲操作不能把數(shù)據(jù)成功地放入存儲器中。這種存儲器的“饑餓”可能使程序不能繼續(xù)執(zhí)行,最終使整個程序歸于失敗。做為這種情況的一個例子,請看下面的偽編碼P1P2loop裝入字 Rx,A存儲字Rz,A裝入字 Ry,B比較立即字 A,value若不等則分枝 loop在此自循環(huán)中涉及至兩個處理器P1和P2,其中一個處理器要等待將被另一個處理器存儲的特定值。Rx、Ry、Rz是處理器的寄存器,A和B是存儲器的地址?!氨容^立即字”使用文字值,但與任何其它源(如另一個寄存器中的內(nèi)容)相比較也是可以的。
在處理器P2中所執(zhí)行的把字存入A的操作是用一個值去更新一個存儲單元,在處理P1上執(zhí)行的程序代碼需要此值以便進(jìn)行下面的處理。循環(huán)會一直執(zhí)行下去直至獲得所期望的值為止。如果存儲單元A沒被放入處理器P1的高速緩沖存儲器,那么就不一定必需在處理器P1中執(zhí)行的第二個裝入字指令(從存儲單元B)來產(chǎn)生饑餓狀態(tài)。通過本例還可描述一個更一般的情形,其中存儲單元A和B是可緩存的。如果處理器P1高速緩沖存儲器是直接映射的,而存儲單元A和B的地址又使得它們占了該高速緩沖存儲器的同一時隙,則裝入字A和裝入字B兩條指令總是會彼此沖突。使處理器重復(fù)從外部存儲器讀取。如果假設(shè)處理器P1中的高速緩沖存儲器是更加相聯(lián)的。則更多的需要高速緩沖存儲器中相同時隙的裝入字指令就會被加到代碼序列中,其結(jié)果是,所讀取得的數(shù)據(jù)量有可能會阻礙處理器P2所執(zhí)行的往A存儲字的操作的完成。在一個具有大量處理器的系統(tǒng)中,如果有許多處理器都在等待上例中的那種值,其中每個處理器又都執(zhí)行上例中處理器P1的指令序列,則在此系統(tǒng)中就會產(chǎn)生類似的阻礙了。
因此,有必要在技術(shù)上找到一種解決辦法,使受阻的存儲操作能夠繼續(xù)下去。
本發(fā)明通過提供硬件和一個狀態(tài)機(jī)來解決上述問題。該狀態(tài)機(jī)監(jiān)視一個多處理器系統(tǒng)中每個處理器內(nèi)部的存儲請求,然后當(dāng)達(dá)到某個確定的閾值時產(chǎn)生一個存儲阻塞信號。這一閾值可能是任一處理器內(nèi)部失敗的存儲事件的計數(shù)值,與阻塞存儲操作相關(guān)的失敗的裁決的計數(shù)值,甚至是時鐘周期的計數(shù)值。存儲阻塞信號向系統(tǒng)內(nèi)所有處理器傳送。作為響應(yīng),在那些處理器中被掛起的讀(裝入)請求就被推后,直至阻塞的存儲請求被允許完成為止。然后,存儲阻塞信號被取消,其它處理器又能繼續(xù)其讀請求。
以上我們非常粗略地描述了本發(fā)明的特點(diǎn)和技術(shù)先進(jìn)性,以便使人們能更容易地理解后面對本發(fā)明的詳細(xì)描述,本發(fā)明的另外的特點(diǎn)和先進(jìn)性將在后面描述,并且這構(gòu)成了本發(fā)明權(quán)利要求的主題。
為了使人們能完整地理解本發(fā)明及其先進(jìn)性,下面結(jié)合附圖進(jìn)行說明,其中,
圖1示出一個按照本發(fā)明配置的多處理器系統(tǒng);圖2示出一個實現(xiàn)本發(fā)明的過程。
在下面的說明中,為了使人們能徹底理解本發(fā)明,我們使用了大量具體細(xì)節(jié),如具體的字或字節(jié)長。但是對于那些精通本領(lǐng)域的人來講,顯然,不用這些具體細(xì)節(jié)也是能實現(xiàn)本發(fā)明的。在其它例子中,一些著名電路被以框圖的形式給出,以便使本發(fā)明不致因充滿不必要的細(xì)節(jié)而含混不清。在絕大部分說明中,涉及到計時及類似方面的細(xì)節(jié)就被省略了,因為它們對于完全理解本發(fā)明不是很必要,而且對于那些對相關(guān)領(lǐng)域只有普通程度精通的人來講,這些細(xì)節(jié)是他們已經(jīng)掌握的。
現(xiàn)在參看附圖,其中的元件沒必要按比例畫出,且其中的幾個小框中的相似或相同的元件都被用相同的標(biāo)號標(biāo)出。
參看圖1,圖中示出一個多處理器系統(tǒng)100,其中包括N個處理器101~103,與互連網(wǎng)絡(luò)(總線)104和存儲器系統(tǒng)105相連。然而,應(yīng)當(dāng)注意,本發(fā)明也適用于任何有多個元件向另外的一個元件諸如存儲器系統(tǒng)或I/O設(shè)備發(fā)送存儲或讀請求的系統(tǒng)。
每個處理器101~103器都能通過總線104向存儲器105發(fā)送多個存儲請求(REQ)109和裝載請求(REQ)110。每個處理器101~103內(nèi)部的計數(shù)器和閾值檢測電路107監(jiān)視存儲請求109。檢測存儲操作的重復(fù)失敗正是電路107的功能。這可能用許多方式來確定。包括對某個特定存儲請求失敗次數(shù)進(jìn)行計數(shù),對某一特定的存儲請求不能被成功地判決控制總線104的次數(shù)進(jìn)行計數(shù),甚至對從一個存儲請求發(fā)出到未能成功地完成期間所經(jīng)過的時鐘周期進(jìn)行計數(shù)。當(dāng)存儲請求109被送上互連網(wǎng)絡(luò)(總線)104并被總線的任何參與部分用該總線的通信協(xié)議予以拒絕時,就認(rèn)為該存儲請求109未能完成,上述參與部分包括處理器101~103,存儲器105,或其替代物。對這些企圖進(jìn)行計數(shù)的裝置及實現(xiàn)一個特定的總線協(xié)議的細(xì)節(jié)已為那些對本領(lǐng)域及相近領(lǐng)域都精通的人所熟知。一旦所計的數(shù)達(dá)到預(yù)先設(shè)定的閾值,一個存儲阻塞(Store-stalled)信號106就產(chǎn)生了,并被送往所有處理器101~103,指出一個存儲操作在它寫存儲器時受到了阻礙,因而需要有較大的機(jī)會使用連接存儲器105的總線104。所有處理器101~103(包括存儲被阻塞的那一個處理器)都監(jiān)測存儲阻塞信號106,當(dāng)這種存儲阻塞信號106產(chǎn)生時,將停止把讀請求110送上它們的通向總線104的路徑。這是通過延遲裝載請求電路108來完成的。裝載(存儲器讀取)請求110通常被送往總線104,進(jìn)行系統(tǒng)級的判決。在那些支持多個未完成的讀取請求110的處理器中,這些請求可被內(nèi)部判決,從中選出一個然后送往總線104以便進(jìn)行進(jìn)一步的系統(tǒng)級判決。當(dāng)一個存儲阻塞信號產(chǎn)生時,通過阻止此類請求,就能使讀請求110不被放到總線上。對于此前已經(jīng)放到總線104上的讀請求110,則有可能被完成,也有可能被舍棄,這要視實現(xiàn)選擇的具體情況而定。
存儲阻塞信號可以是一個公用的雙向信號,在經(jīng)過許多失敗的嘗試后,或上述的其它某些設(shè)定好的閾值之后,被某處理器設(shè)成低電平。此信號也可能有一個開放式漏電(open-drain)驅(qū)動,它受電阻式上拉。根據(jù)處理器和系統(tǒng)設(shè)計的不同,存儲阻塞信號可能與處理器的時鐘異步發(fā)送或有可能需要與處理器時鐘同步。
圖2所示的是一個本發(fā)明的處理過程的流程圖。在步驟201中,電路107監(jiān)視每個處理器101~103內(nèi)部的存儲請求109。在步驟202中,在任一個處理器101~103內(nèi)部,如果達(dá)到了預(yù)先設(shè)定好的閾值,處理過程就轉(zhuǎn)到步驟203,在步驟203中,產(chǎn)生存儲阻塞信號并被送往所有的處理器101~103。隨后,在步驟204中,每個處理器101~103內(nèi)的延遲裝載請求電路108將會使處理器101~103取消(推遲)發(fā)送讀請求110做為接到這一存儲阻塞信號的響應(yīng)。接下來再進(jìn)行步驟205,直到被阻塞的存儲操作完成為止。當(dāng)存儲請求109被送上互連網(wǎng)絡(luò)(總線)104且未被總線的任何參與者,包括處理器101~103,存儲器105,或其替代物,用總線的通信協(xié)議拒絕時,就認(rèn)為存儲請求109被完成了。進(jìn)行這些嘗試的方法應(yīng)當(dāng)是為那些精通本領(lǐng)域的人所熟知的。當(dāng)被阻塞的存儲操作完成的時候,發(fā)生存儲阻塞的處理器中的計數(shù)與閾值檢測電路就被重置為初始狀態(tài),從而使之能監(jiān)視其它存儲阻塞的發(fā)生。然后在步驟206中,存儲阻塞信號被撤消。相應(yīng)地,在步驟207,每個處理器101~103內(nèi)的電路108將允許那些處理器繼續(xù)執(zhí)行其裝載請求110。
盡管已對本發(fā)明及其優(yōu)點(diǎn)進(jìn)行了詳細(xì)的描述,但應(yīng)當(dāng)清楚的是,對本發(fā)明的不同的改變、替換和更改,只要沒有偏離后附的權(quán)利要求中所定義的本發(fā)明的實質(zhì)和范圍,就都屬于本發(fā)明。
權(quán)利要求
1.一個多處理器系統(tǒng)包括第一處理器;第二處理器;和與第一和第二處理器相耦合的總線,其中第一處理器包括檢測第一處理器受阻塞的存儲操作的電路;和向第二處理器發(fā)送存儲阻塞信號的電路,其中第二處理器包括為了響應(yīng)所接收到的來自第一處理器的存儲阻塞信號而推后來自第二處理器的讀操作的電路。
2.權(quán)利要求1中所描述的系統(tǒng),其特征在于第一處理器還包括在存儲操作完成時,中止向第二處理器發(fā)送存儲阻塞信號的電路。
3.權(quán)利要求2中所描述的系統(tǒng),其特征在于第二處理器還包括為響應(yīng)存儲阻塞信號的撤消而撤消對讀操作的推遲的電路。
4.權(quán)利要求1中所描述的系統(tǒng),其特征在于當(dāng)達(dá)到一個預(yù)先設(shè)定的與所檢測的被阻塞的存儲操作相聯(lián)系的閾值時,就發(fā)送存儲阻塞信號。
5.權(quán)利要求4中所描述的系統(tǒng),其特征在于上述發(fā)送電路還包括一個計數(shù)器,用來對受阻的存儲操作失敗的次數(shù)進(jìn)行計數(shù)。
6.權(quán)利要求5中所描述的系統(tǒng),其特征在于上述發(fā)送電路還包括一個計數(shù)器,用來對受阻存儲操作未能成功地判決總線控制的次數(shù)進(jìn)行計數(shù)。
7.權(quán)利要求4中所描述的系統(tǒng),其特征在于發(fā)送電路還包括一個計數(shù)器,用來對在被阻塞的存儲操作被嘗試后所經(jīng)過的周期數(shù)據(jù)數(shù)進(jìn)行計數(shù)。
8.權(quán)利要求1中所描述的系統(tǒng),其特征在于存儲和讀操作都是針對一個與總線相連的存儲器系統(tǒng)的。
9.權(quán)利要求1中所描述的系統(tǒng),其特征在于第一處理器包括第二個為響應(yīng)所接收到的來自第一處理器的存儲阻塞信號而推遲來自第一處理器的讀操作的電路。
10.在一個包括一個第一處理器,一個第二處理器和一條與第一、第二處理器相連的總線的多處理器系統(tǒng)中,一種方法包括以下步驟檢測第一處理器受阻塞的存儲操作;向第二處理器發(fā)送一個存儲阻塞信號;和為響應(yīng)所接收到的來自第一處理器的存儲阻塞信號而推遲來自第二處理器的讀操作。
11.權(quán)利要求10中所描述的方法,其特征在于本方法還包括在存儲操作完成時停止向第二處理器發(fā)送存儲阻塞信號的步驟。
12.權(quán)利要求11中所描述的方法,其特征在于它還包括為響應(yīng)存儲阻塞信號的撤消而撤消對讀操作的推遲的步驟。
13.權(quán)利要求12中所描述的方法,其特征在于當(dāng)一個與所檢測的被阻塞存儲操作相聯(lián)系的預(yù)先設(shè)定的閾值被達(dá)到時,就發(fā)送存儲阻塞信號。
14.權(quán)利要求13中所描述的方法,其特征在于上述發(fā)送步驟還包括對受阻塞的存儲操作失敗次數(shù)進(jìn)行計數(shù)的步驟。
15.權(quán)利要求13中所描述的方法,其特征在于上述發(fā)送步驟還包括對受阻的存儲操作未能成功地判決總線控制的次數(shù)進(jìn)行計數(shù)的步驟。
16.權(quán)利要求13中所描述的方法,其特征在于上述發(fā)送步驟還包括對受阻塞的存儲操作被嘗試后所經(jīng)過的周期數(shù)進(jìn)行計數(shù)的步驟。
17.權(quán)利要求13中所描述的方法,其特征在于存儲和讀操作是針對與總線相連的存儲器系統(tǒng)的。
18.權(quán)利要求10中所描述的方法,其特征在于它還包括為響應(yīng)所接收到的來自第一處理器的存儲阻塞信號而推遲來自第一處理器的讀操作的步驟。
全文摘要
在一個多處理器系統(tǒng)中,當(dāng)一個存儲請求被阻塞時,一個信號就被產(chǎn)生并被發(fā)送給所有的處理器,向它們指出這一阻塞存儲的情形。做為響應(yīng),所有的處理器都會推遲向存儲器發(fā)送裝載或讀取請求,直至被阻塞的存儲請求完成為止。
文檔編號G06F9/52GK1226703SQ98122810
公開日1999年8月25日 申請日期1998年11月26日 優(yōu)先權(quán)日1998年2月19日
發(fā)明者彼特·S·蘭克, 米切爾·J·瑪夫萊德, 羅伯特·詹姆斯·里斯, 米切爾·托馬斯·瓦登 申請人:國際商業(yè)機(jī)器公司