專利名稱:用于編織排序的設(shè)備和方法
技術(shù)領(lǐng)域:
本發(fā)明一般而言涉及數(shù)據(jù)處理系統(tǒng),尤其是,涉及在多處理器節(jié)點數(shù)據(jù)處理系統(tǒng)結(jié)構(gòu)中事務(wù)處理的排序。
現(xiàn)代數(shù)據(jù)處理系統(tǒng)編入許多處理節(jié)點。每個節(jié)點本身包括一個或多個中央處理單元(“CPU”),系統(tǒng)存貯器,其本身可包括高速緩存存貯器,外圍設(shè)備,以及連接系統(tǒng)總線至外圍總線的外圍主橋(“PHB”)。
此外,具有多處理器的現(xiàn)代數(shù)據(jù)處理系統(tǒng)可以實現(xiàn)一種共享存貯器環(huán)境。在這樣的環(huán)境中,在一個節(jié)點中的一個處理器或多個處理器可以存取其它節(jié)點中的存貯器。實現(xiàn)多節(jié)點上共享存貯器的典型環(huán)境是非均勻存貯器存取(NUMA)環(huán)境和只高速緩存存貯器存取(COMA)環(huán)境。另外,在這些系統(tǒng)中希望通過每個節(jié)點中的設(shè)備實現(xiàn)既到本地存貯器也到遠距離存貯器的直接存貯器存取(DMA)。
在這樣一種NUMA或COMA系統(tǒng)中的節(jié)點通過一種稱為“編織器”的設(shè)備連接,這種設(shè)備傳遞在其間的事務(wù)。越過編織器的節(jié)點對節(jié)點的事務(wù)可以包括對I/O設(shè)備的加載/存貯(L/S)操作和DMA對等關(guān)系的事務(wù),除非編織器包括一種事務(wù)排序的機構(gòu),否則這些事務(wù)可能引起相干性損失。相干性抑制可以由每個節(jié)點中CPU的結(jié)構(gòu)強加上的,也可以由每個節(jié)點中總線的結(jié)構(gòu)強加上的。此外,事務(wù)排序必須被強加上以避免死鎖及保證在I/O中斷后系統(tǒng)相干域中的數(shù)據(jù)。因此,在技術(shù)上需要一種設(shè)備與方法,用于在一種共享存貯器環(huán)境中連接多重節(jié)點的編織器上實現(xiàn)事務(wù)排序規(guī)則。
本發(fā)明解決了上面提到的需要。因此,在此以第一形式提供包括編織器橋的一種數(shù)據(jù)處理系統(tǒng)。該編織器橋用于在數(shù)據(jù)處理系統(tǒng)中的節(jié)點之間傳遞事務(wù),編織器控制節(jié)點間事務(wù)的順序,其中,編織橋確定前面事務(wù)和后繼事務(wù)的排序。該排序是后繼事務(wù)可以繞過前面的事務(wù),必須繞過前面的事務(wù),和不允許繞過前面的事務(wù)之中的一種,其中所述的事務(wù)序列包括對輸入/輸出(I/O)設(shè)備的加載/存貯(L/S),和直接存貯器存取(DMA)對等關(guān)系事務(wù)。
在此也以第二形式提供一種數(shù)據(jù)處理系統(tǒng)中節(jié)點之間傳遞事務(wù)的方法。此方法包括步驟通過確定前面事務(wù)和后繼事務(wù)的排序來控制節(jié)點間事務(wù)順序,該排序是后繼事務(wù)可以繞過前面的事務(wù),必須繞過前面的事務(wù),和不允許繞過前面的事務(wù)之中的一種,其中所述的事務(wù)序列包括對輸入/輸出(I/O)設(shè)備的加載存貯(L/S),和直接存貯器存取(DMA)對等關(guān)系事務(wù)。
此外,在此以第三形式提供一種可操作的計算機程序產(chǎn)品,用于在程序存貯媒介上存貯,此程序產(chǎn)品可用于在數(shù)據(jù)處理系統(tǒng)中節(jié)點之間的事務(wù)傳遞。該程序產(chǎn)品包括通過確定前面事務(wù)與后繼事務(wù)的排序來控制節(jié)點之間事務(wù)的順序的編程,該排序是后繼事務(wù)可以繞過前面事務(wù),必須繞過前面事務(wù),和必須不繞過前面事務(wù)之中的一種,其中所述的事務(wù)序列包括對輸入/輸出(I/O)設(shè)備的加載/存貯(L/S),和直接存貯器存取(DMA)對等關(guān)系的事務(wù)。
以上已經(jīng)相當廣泛扼要地敘述了本發(fā)明的特征和技術(shù)優(yōu)點,以便更好地理解后續(xù)的發(fā)明詳述。以下將描述本發(fā)明另外的特征和優(yōu)點,這些構(gòu)成本發(fā)明的權(quán)利要求的主題。
為了更全面地理解本發(fā)明,及其優(yōu)點,在此參考結(jié)合附圖所做的下列描述,其中
圖1用作說明依據(jù)本發(fā)明的一個實施方案的一種共享存貯器數(shù)據(jù)處理系統(tǒng);圖2A以方框圖的形式,用作說明依據(jù)本發(fā)明的一個實施方案的一種編織器橋;圖2B以方框圖的形式,用作說明依據(jù)本發(fā)明的一種替代的實施方案的一種編織器橋;圖3以流程圖的形式,用作說明依據(jù)本發(fā)明的一種實施方案的一種事務(wù)排序方法;和圖4以表格形式,說明由圖3中的方法實現(xiàn)的排序規(guī)則。
本發(fā)明提供一種機構(gòu),用于在一個共享資源數(shù)據(jù)處理系統(tǒng)環(huán)境中通過連接多重節(jié)點的一個編織器對L/S到I/O,DMA對等關(guān)系事務(wù),L/S到系統(tǒng)存貯器和DMA到系統(tǒng)存貯器排序。越過編織器的L/S和DMA事務(wù)由對事務(wù)排序的一個狀態(tài)機構(gòu)控制。此狀態(tài)機構(gòu)確定依據(jù)預(yù)先規(guī)定的規(guī)則組一個后繼的事務(wù)是否可以繞過一個前面的事務(wù)。在總線橋中的事務(wù)排序已經(jīng)公開在共同指定的美國專利No.5,694,556 to Neal,etal中,引入于此作為參考,本發(fā)明提供一種在NUMA或COMA環(huán)境中事務(wù)排序的機構(gòu)。
在以下的描述中,為了對本發(fā)明的透徹理解,闡明了許多專門的細節(jié)。然而,對本領(lǐng)域的技術(shù)人員來說是顯然的,即沒有這樣一些專門的細節(jié)本發(fā)明也可被實現(xiàn),另外,大家熟知的電路用方框圖形式示出,以便不讓本發(fā)明在不必要的細節(jié)中弄得含糊不清,對于大多數(shù)部分來說,與定時考慮有關(guān)的細節(jié)以及對于本發(fā)明的充分理解是不必要的并且在有關(guān)技術(shù)領(lǐng)域的專業(yè)人員的技能范圍內(nèi)的細節(jié)均被略去。
現(xiàn)參看附圖,其中所描述的部件并不必要按比例示出,并且相同或類似的部件在幾個圖中用相同的參考數(shù)字標記。
現(xiàn)參看圖1,用作說明依據(jù)本發(fā)明的原理的一種多重節(jié)點數(shù)據(jù)處理系統(tǒng)100,每個節(jié)點102包括許多,N個,連接到系統(tǒng)總線106的CPU 104,系統(tǒng)存貯器部分,存貯器108也包括在每個節(jié)點中,并被連到系統(tǒng)總線106上。
外圍設(shè)備位于外圍總線110上,并通過外圍主橋(PHB)112接合到系統(tǒng)總線。另外,外圍設(shè)備,譬如設(shè)備114,可以位于一個或多個子總線116上,而這些子總線通過外圍對外圍(在圖1上標記為PtP)橋連到外圍總線110,這樣一種實施方案可被采用是為了滿足關(guān)于外圍總線110的扇出技術(shù)指標。例如,在本發(fā)明的實施方案中,外圍總線110可以是一種外圍部件互聯(lián)(PCI)總線,其中這種類型的每個總線支持在總線上十個負載。然而,熟悉常規(guī)技術(shù)的技術(shù)人員將理解,本發(fā)明可被提供在共享存貯器數(shù)據(jù)處理系統(tǒng)的其它實施方案中而并不限于外圍總線110是PCI總線的系統(tǒng)。
節(jié)點102通過編織器120連接,編織器120包括編織器橋122和多重節(jié)點編織器互聯(lián)126。在第一節(jié)點102內(nèi)的設(shè)備,如CPU104或外圍設(shè)備114之一可以參與另一個節(jié)點102中的另一個設(shè)備或存貯器的事務(wù),這些事務(wù)由編織器橋122傳遞,編織器橋122和多重節(jié)點編織器互聯(lián)126,例如,在本發(fā)明的一個實施方案中可以是一個可比相干接口(SCI),或,替換為一個電子切換編織器。在本發(fā)明的一個實施方案中,編織橋122可以傳遞到I/O的加載/存貯事務(wù)。另外,事務(wù)可包括DMA對等關(guān)系事務(wù),雖然在圖1中的系統(tǒng)100已被說明為具有四個節(jié)點102,熟悉常規(guī)技術(shù)的技術(shù)人員將理解,依據(jù)本發(fā)明的原理,一個多重節(jié)點數(shù)據(jù)處理系統(tǒng)100可以包括任何預(yù)先規(guī)定的節(jié)點數(shù)102,這樣一種實施方案將在本發(fā)明的精神與范圍內(nèi)。
現(xiàn)參看圖2,用作更詳細地說明編織器橋122。橋122通過多重節(jié)點編織器互聯(lián)126連到每個節(jié)點,在節(jié)點和橋之間傳送數(shù)據(jù)和控制信號,控制信號通知互聯(lián)事務(wù)已被執(zhí)行,在事務(wù)中要傳遞的數(shù)據(jù)可被安置在緩沖器202中,例如,對于一個用DMA操作方式對系統(tǒng)存貯器的延時讀請求來說,在第一節(jié)點102中的請求設(shè)備114可以試圖對物理上位于第二節(jié)點102中的存貯器108為目標進行讀請求,此讀請求被緩存在編織器橋122中。然后編織器橋122將此請求傳交給第二節(jié)點102中的存貯器108,從第二,目的地,節(jié)點102中的存貯器108接收到的數(shù)據(jù)可以存貯在緩沖器202中并被轉(zhuǎn)交給請求的PHB112,然后當請求設(shè)備114再次試圖其請求時提供給請求設(shè)備114。
在系統(tǒng)總線106上PHB 112執(zhí)行指定給另一個節(jié)點102的事務(wù)請求由請求節(jié)點102中的編織器橋112接受。然后這些事務(wù)在緩沖器202中緩存,由控制和路由邏輯204接收,狀態(tài)機構(gòu)206執(zhí)行控制各個節(jié)點間的事務(wù)的操作,在圖2B中所示的編織器橋122的一種替代實施方案中,CPU205依據(jù)存貯在存貯器207中指令程序作為排序規(guī)則狀態(tài)機構(gòu)起作用。在節(jié)點102上來自或去系統(tǒng)的事務(wù)在節(jié)點接口208上出或入編織器橋,同樣地,來自或去其它節(jié)點102的事務(wù)在編織器連接接口210上出或入編織器橋。
在節(jié)點102之間的事務(wù)在圖1中的編織器120上被連續(xù)地傳遞。為了保持數(shù)據(jù)連貫性和遵守可由CPU104和外圍總線110加上的適當?shù)呐判蛳拗疲瑺顟B(tài)機構(gòu)206或,替換為在存貯器207中的指令控制下的CPU205,必須執(zhí)行事務(wù)排序規(guī)則,由此后繼事務(wù)的執(zhí)行受前面事務(wù)的制約,換句話說,狀態(tài)機構(gòu)206或,替換為CPU205由一套排序規(guī)則確定何時可以允許后續(xù)事務(wù)在前面事務(wù)前執(zhí)行,如果已有臨時性失速的話,必須允許在前面事務(wù)以前執(zhí)行,或者必須按次序執(zhí)行,也就是說不允許在前面事務(wù)以前執(zhí)行,狀態(tài)機構(gòu)206或CPU205依據(jù)在圖3中以流程圖形式示出的方法300確定排序。
現(xiàn)參看圖3,以流程圖形式示出的一種對圖1的編織器122中的事務(wù)排序的方法300,支持對I/O設(shè)備的L/S操作,對等關(guān)系DMA事務(wù),和對系統(tǒng)存貯器的L/S以及對系統(tǒng)存貯器的DMA。此外,CPU 104可以執(zhí)行對總線事務(wù)強制排序的指令,例如,Power PC結(jié)構(gòu)(“Power PC”是IBM公司的一個商標)執(zhí)行Sync和eieio(強制按次序執(zhí)行I/O)指令。執(zhí)行Sync指令保證在Sync指令以前的所有Load和store指令在程序執(zhí)行經(jīng)過Sync指令以前的總線上被完成,eieio指令的執(zhí)行使所有在執(zhí)行eieio指令以前的Load和store指令,在任何執(zhí)行eieio指令以后可被發(fā)出的寫操作以前,為在總線上執(zhí)行作記號。方法300在步驟302中開始,并在步驟304中確定是否允許對I/O事務(wù)L/S。如果在步驟304中允許對I/O作L/S,那末在步驟306中,確定是否前面的事務(wù)是DMA操作或者對系統(tǒng)存貯器的L/S或者eieio或Sync事務(wù)。如果不是,方法300在步驟308中確定,是否前面的事務(wù)是L/S對I/O或者來自I/O的加載。如果不是,方法300在步驟310中繼續(xù)確定是否允許DMA對等關(guān)系事務(wù)。
然而,如果在步驟308中,前面的事務(wù)是L/S對I/O或來自I/O的加載,在步驟312中確定是否后繼的事務(wù)是對系統(tǒng)存貯器的L/S或來自系統(tǒng)存貯器的加載完成。如果是的,那末在步驟314中后續(xù)的事務(wù)被允許繞過前面的事務(wù),方法300在步驟399結(jié)束??墒牵粼诓襟E312中后繼的事務(wù)不是對系統(tǒng)存貯器的L/S,或者來自系統(tǒng)存貯器的加載完成,那末在步驟316中,確定是否后繼事務(wù)是eieio或Sync事務(wù)。如果在步驟316中,后繼事務(wù)是eieio或Sync,那末在步驟318中方法300確定后繼事務(wù)不允許繞過前面的對I/O的L/S或來自I/O的加載完成。然而,如果在步驟316中,后繼事務(wù)不是eieio或sync事務(wù),那末方法300在步驟320中確定是否后繼事務(wù)是對系統(tǒng)存貯器的DMA讀。如果是的,那末在步驟314中確定后繼事務(wù)可以繞過前面的事務(wù),否則在步驟321中確定,是否后繼事務(wù)是對系統(tǒng)存貯器的DMA寫,如果是的,在步驟324中,此事務(wù)必須被允許繞過,否則,在步驟322中確定是否后繼事務(wù)是來自系統(tǒng)存貯器的DMA讀完成并且前面的事務(wù)不是加載完成。如果是的,在步驟324中確定必須允許繞過。如果,在步驟322中后繼事務(wù)不是DMA讀完成或前面的事務(wù)不是加載完成,那末,在步驟326中確定是否對等關(guān)系傳送被允許。如不是,在步驟328中辨識后繼事務(wù)或者是加載或者是存貯到I/O,否則,在步驟326中,如果對等關(guān)系的事務(wù)被允許,確定是否后繼事務(wù)是加載或存貯到I/O。如果是的,或者,如果在步驟326中,已確定不允許對等關(guān)系的事務(wù),和因此后繼事務(wù)必須或者是加載或者是存貯到I/O,在步驟332中確定是否前面的L/S到I/O或來自I/O的加載完成以及后繼的L/S到I/O是到相同的目的地地址。如果是的,在步驟318中確定不允許繞過??墒牵绻康牡氐刂放c步驟332中的不相同,在步驟314中確定可以允許繞過。
如果在步驟326中對等關(guān)系被允許,并且在步驟330中,后繼的事務(wù)不是L/S到I/O,那末,在步驟334中確定是否后繼事務(wù)是對I/O的DMA寫或?qū)ο到y(tǒng)存貯器的DMA寫。如果是的,確定在步驟324中必須允許繞過。可是,如果在步驟334中后繼事務(wù)不是對I/O的DMA寫或?qū)ο到y(tǒng)存貯器的DMA寫,確定在步驟336中是否后繼事務(wù)是對I/O的讀請求。如果是的,對I/O的后繼讀請求可以繞過前面的對I/O的L/S或來自I/O的加載完成,步驟314??墒侨绻罄^事務(wù)不是對I/O的讀,方法300確定在步驟338中是否后繼事務(wù)是來自I/O的DMA讀完成和前面的事務(wù),在步驟308中是來自I/O的加載完成,如果不是,在步驟340中確定,是否后繼事務(wù)是對I/O的DMA讀,然而若在步驟338中,后繼事務(wù)是來自I/O的DMA讀完成,在步驟308中前面事務(wù)是來自I/O的加載完成,那末在步驟314中可以允許繞過,如果,在步驟340中確定后繼事務(wù)是對I/O的DMA讀和在步驟342中,事務(wù)是到相同的目的地,那末前面的來自I/O的加載完成被后繼的來自I/O的讀完成繞過必須被允許,步驟324。否則,在步驟314中此事務(wù)被允許繞過。
回到步驟306,如果確定,前面的事務(wù)是對系統(tǒng)存貯器的DMA操作或L/S,或者eieio或者sync,那末在步驟344中確定,是否后繼事務(wù)是對系統(tǒng)存貯器的DMA操作或加載或存貯。如果后繼事務(wù)是對系統(tǒng)存貯器的DMA操作或L/S,那末方法300,在步驟346中,按對系統(tǒng)存貯器L/S和DMA事務(wù)排序的方法對事務(wù)排序,后述的方法描述在共同未決,共同指定的美國專利申請中,標題是“Apparatus and Method for FafricOrdering of Load/Store and Direct Memory Access Transactions,”引入于此作為參考??墒侨绻诓襟E344中,后繼事務(wù)不是對系統(tǒng)存貯器的DMA操作或L/S操作,那末,在步驟346中確定,是否來自步驟306的前面事務(wù)是對系統(tǒng)存貯器的L/S或來自系統(tǒng)存貯器的加載完成。如果是的,在步驟348中確定是否對等關(guān)系的事務(wù)被允許。如果不是,那末方法300確定,在步驟350中是否后繼事務(wù)或者是對I/O的加載或存貯,或者是來自I/O的加載完成,如果是的,在步驟314中確定前面的事務(wù)被后繼的L/S或加載完成繞過可以被允許。如果不是,方法300回到步驟399。
否則,如果在步驟348中對等關(guān)系的事務(wù)被允許,在步驟352中確定,是否后繼事務(wù)是對I/O的DMA寫或?qū)ο到y(tǒng)存貯器的DMA寫,如果是的,在步驟234中后繼的對I/O或系統(tǒng)存貯器的DMA寫必須被允許繞過來自步驟346的前面的對系統(tǒng)存貯器的L/S或來自系統(tǒng)存貯器的加載完成。
然而,如果在步驟352中后繼的事務(wù)不是對I/O或系統(tǒng)存貯器的DMA寫,那末在步驟354中確定,是否后繼事務(wù)是對I/O的L/S或來自I/O的加載完成。如果是的,那末在步驟346,314中后繼事務(wù)可被允許繞過前面的對系統(tǒng)存貯器的L/S或來自系統(tǒng)存貯器的加載完成。然而,如在步驟354中,后繼的事務(wù)不是對I/O的L/S或來自I/O的加載完成,那末,在步驟356中確定是否后繼的事務(wù)是對I/O的DMA讀或來自I/O的DMA讀完成,如果是的,后繼的DMA讀在步驟356中可被允許繞過,在步驟314中,前面的在步驟346中被確定的對系統(tǒng)存貯器的L/S或來自系統(tǒng)存貯器的加載完成。否則,方法300走到步驟399。
回到步驟346,如果確定前面的事務(wù)不是對系統(tǒng)存貯器的L/S或來自系統(tǒng)存貯器的加載完成,在步驟358中確定是否前面的事務(wù)是eieio或sync。如果是的,在步驟360中確定是否后繼事務(wù)是對I/O的加載或存貯。如果是的,后繼的對I/O的加載或存貯,在步驟318中不允許繞過前面的eieio或sync。否則,方法300在步驟362中辨識,后繼事務(wù)是來自I/O的加載完成,并且在步驟314中前面的eieio或sync,來自步驟358,可允許被后繼的來自步驟362的來自I/O的讀完成繞過。
回到步驟358。如果前面的事務(wù)不是eieio或sync,那末在步驟364中,方法300辨識前面的事務(wù)是DMA系統(tǒng)存貯器操作,并且在步驟366中確定是否后繼的事務(wù)是來自I/O的讀完成和前面的事務(wù)不是對系統(tǒng)存貯器的DMA寫,或者是否后繼的事務(wù)是對I/O的L/S。如果是的,那末在步驟314中后繼事務(wù)可被允許繞過前面的DMA系統(tǒng)存貯器操作。否則,在步驟368中確定是否DMA對等關(guān)系的事務(wù)被允許。如果不是,在步驟370中,方法300辨識,后繼事務(wù)是來自I/O的加載完成和前面事務(wù)是對系統(tǒng)存貯器的DMA寫,后繼的來自I/O的加載完成不允許繞過前面的對系統(tǒng)存貯器的DMA寫,后繼的來自I/O的加載完成不允許繞過前面的DMA寫。這是因為前面的對系統(tǒng)存貯器的DMA寫在完成后繼事務(wù),即來自I/O的加載完成以前必須是完全地連貫的。
然而,如果在步驟368中DMA對等關(guān)系事務(wù)被允許,那末在步驟372中確定,是否前面的事務(wù)是對系統(tǒng)存貯器的DMA讀或來自系統(tǒng)存貯器的DMA讀完成并且后繼事務(wù)或者是對I/O的DMA讀或來自I/O的DMA讀完成或者前面事務(wù)是對系統(tǒng)存貯器的DMA寫以及后繼事務(wù)或者是對I/O的DMA讀或?qū)懟騺碜訧/O的DMA讀完成。如果前面的和后繼的事務(wù)滿足這些條件組之一,那末在步驟314中,后繼事務(wù)可被允許繞過前面的事務(wù)。如果在步驟372中,前面的和后繼的事務(wù)被確定不滿足這些條件組之一,那末在步驟374中方法300確定,是否后繼事務(wù)是對系統(tǒng)存貯器的DMA寫或者來自I/O的加載完成,前面的事務(wù)是對系統(tǒng)存貯器的DMA寫。
如果后繼的和前面的事務(wù)滿足此條件,那末,在步驟318中,后繼事務(wù),或者是對系統(tǒng)存貯器的DMA寫或來自I/O的加載完成不允許繞過前面的對系統(tǒng)存貯器的DMA寫。否則,在步驟376中,方法300確定是否后繼事務(wù)或者是對系統(tǒng)存貯器的DMA寫或者對I/O的DMA寫并且在前面事務(wù)中的DMA或者是對系統(tǒng)存貯器的DMA讀請求或者是來自系統(tǒng)存貯器的DMA讀完成。如果是的,在步驟324中確定后繼的事務(wù)或者是對系統(tǒng)存貯器的DMA寫或者是對I/O的DMA寫必須允許繞過前面的DMA讀請求或讀完成,否則,方法300走到步驟399。
再次回到步驟306,如果前面的事務(wù)既不是DMA操作也不是對系統(tǒng)存貯器的L/S或者eieio或sync,那末在步驟308中確定,是否前面事務(wù)是對I/O的L/S或者來自I/O的加載完成。來自步驟308的“是”通路在以上已描述過了。如果在步驟308中確定是否前面事務(wù)不是對I/O的L/S或者來自I/O的加載完成,那末方法300回到步驟310,并確定是否DMA對等關(guān)系事務(wù)被允許,如果不是,那末方法300對事務(wù)排序采用L/S和DMA對系統(tǒng)存貯器的排序協(xié)議,描述在共同擁有,共同未決的美國專利申請中,標題是“Appratns and Method for Fafric Orderingfor Load/Store and Direct Memory Accecc Transactions”,引入于此作為參考。
然而,如果在步驟310中,DMA對等關(guān)系事務(wù)被允許,在步驟378中方法300辨識前面的事務(wù)是DMA對等關(guān)系的操作,其中,所有其它的可能性已在前面考慮過了。在步驟379中確定是否前面的事務(wù)是對I/O的DMA讀或?qū)?。如果是的,在步驟381中確定,是否后繼事務(wù)是來自系統(tǒng)存貯器的DMA讀完成。如果是的,在步驟324中,后繼事務(wù)必須被允許繞過,否則方法走到步驟399,如果在步驟379中,無通路可取,則本方法進行到步驟380。然后在步驟380中確定,是否后繼事務(wù)是對I/O或系統(tǒng)存貯器的L/S,或者來自I/O或系統(tǒng)存貯器的加載完成或eieio或sync事務(wù),如果是的,在步驟382中進一步確定,是否后繼事務(wù)是對系統(tǒng)存貯器的加載,如果不是,在步驟314中前面的事務(wù)被后繼的事務(wù)繞過被允許,后繼的事務(wù)可以是對I/O的加載或存貯,或?qū)ο到y(tǒng)存貯器存貯,或者來自I/O或系統(tǒng)存貯器的加載完成,或者eieio或sync,來自步驟380,然而,如果后繼事務(wù)是對系統(tǒng)存貯器的加載,那末進一步在步驟385中確定,是否前面和后繼的事務(wù)是到不同的節(jié)點或目標I/O設(shè)備,如果是的,在步驟314中,對系統(tǒng)存貯器的后繼加載,在步驟382中,可被允許繞過前面的事務(wù),否則,如果在步驟385中,后繼的對系統(tǒng)存貯器的加載是到與前面的事務(wù)相同的節(jié)點,那末在步驟318中,對系統(tǒng)存貯器的后繼的加載不允許繞過前面的事務(wù),因為前面的事務(wù)必須在后繼事務(wù)以前完成。
回到步驟380,如果后繼事務(wù)不是對I/O或系統(tǒng)存貯器的L/S,或來自I/O或系統(tǒng)存貯器的加載完成,或者eieio或sync,那末在步驟384中確定是否前面的事務(wù)是對I/O的DMA讀或來自I/O的DMA讀完成。如果是的,在步驟386中確定是否后繼事務(wù)是對系統(tǒng)存貯器的DMA寫,或者對I/O的DMA寫。如果是的,那末在步驟324中確定后繼事務(wù)必須被允許繞過前面的對I/O的DMA讀,或者來自I/O的DMA讀完成。如果在步驟386中,確定后繼事務(wù)不是對系統(tǒng)存貯器的DMA寫,或來自系統(tǒng)存貯器的DMA讀完成,或?qū)/O的DMA寫,在步驟387中確定是否前面的事務(wù)是來自I/O的DMA讀完成。如果不是,方法300進行到步驟399。否則,在步驟383確定是否后繼事務(wù)是來自系統(tǒng)存貯器的DMA讀完成。如果是的,前面的事務(wù)可以被繞過,步驟314。否則方法300在步驟399中結(jié)束。
如果在步驟384中前面的事務(wù)不是對I/O的DMA讀或者來自I/O的DMA讀完成,在步驟388中確定是否后繼事務(wù)是來自I/O的DMA讀完成。如果是的,在步驟389中,方法300確定是否前面的事務(wù)是對I/O的DMA寫或?qū)/O的DMA讀,如果是的,在步驟324中確定后繼的來自I/O的DMA讀完成,步驟389,必須被允許繞過前面的步驟389中的DMA事務(wù)。然而如果在步驟389中前面事務(wù)不是對I/O的DMA寫或?qū)/O的DMA讀,方法300辨認,在步驟390中,前面的事務(wù)是來自I/O的DMA讀完成,并且在步驟314中確定,后繼的來自I/O的DMA讀完成,步驟388,可以被允許繞過前面的來自I/O的DMA讀完成。
然而,如果在步驟388中確定,后繼的事務(wù)不是來自I/O的DMA讀完成,在步驟391中確定,是否前面的事務(wù)是對I/O的DMA寫,如果不是,在步驟392中,方法300辨認前面的事務(wù)必須是對I/O的DMA讀或來自I/O的DMA讀完成,通過步驟386到達步驟392,后繼事務(wù)必須是對I/O的DMA讀或?qū)ο到y(tǒng)存貯器的DMA讀。然后,在步驟314中,后繼的對I/O的DMA讀或?qū)ο到y(tǒng)存貯器的DMA讀可被允許繞過前面的對I/O的DMA讀或來自I/O的DMA讀完成。
可是若在步驟391中前面的事務(wù)是對I/O的DMA寫,那末在步驟393中確定是否后繼事務(wù)是對I/O的DMA讀或?qū)?,如果不是,那末辨認后繼事務(wù)是對系統(tǒng)存貯器的讀或?qū)?,步驟394,和在步驟314中后繼的對系統(tǒng)存貯器的DMA讀或?qū)懣梢员辉试S繞過前面的對I/O的DMA寫。
可是如在步驟393中確定后繼事務(wù)是對I/O的讀或?qū)懀诓襟E395中進一步確定是否后繼事務(wù)是對I/O的DMA寫。如果是的,后繼的對I/O的DMA寫不允許繞過前面的對I/O的DMA寫,步驟318。然而,如果在步驟395中后繼事務(wù)不是對I/O的DMA寫。那末,在步驟396中辨認后繼事務(wù)必須是對I/O的DMA讀。那末,在步驟385中確定是否后繼的對I/O的DMA讀和前面的對I/O的DMA寫,來自步驟391,是到不同的節(jié)點或目標I/O設(shè)備。如果是的,那末在步驟314中,后繼的DMA讀可被允許繞過前面的DMA寫。然而,如果在步驟385中,后繼的DMA讀是與前面的DMA寫到相同的節(jié)點或目標I/O設(shè)備,那末后繼的DMA讀必須不繞過前面的DMA寫,步驟318,那末方法300在步驟399中結(jié)束。
可將方法300實施的排序協(xié)議扼要敘述在圖4的表中。在圖4中的表規(guī)定了事務(wù)對的組,這些組按表中相應(yīng)的入口指明的順序排序,其中“A”指明前面的/后繼的事務(wù),其中后繼事務(wù)可被允許繞過前面的事務(wù),“Y”指明后繼事務(wù)必須被允許繞過前面的事務(wù),和“N”指明后繼事務(wù)一定不允許繞過前面的前務(wù)。
本發(fā)明提供一種機構(gòu),用于在多節(jié)點,NUMA/COMA數(shù)據(jù)處理環(huán)境中編織器橋。在包括在編織器橋中的狀態(tài)機構(gòu)的控制下,通過橋交換的節(jié)點之間的事務(wù)可依據(jù)由狀態(tài)機構(gòu)執(zhí)行的方法排序。橋?qū)τ蓸騻鬟f的事務(wù)排序,使得連接性要求被保持,死鎖被避免。
權(quán)利要求
1.一種數(shù)據(jù)處理系統(tǒng)包括一個編織器橋,用于在所述的數(shù)據(jù)處理系統(tǒng)中的節(jié)點之間傳遞事務(wù),所述的編織器橋用于控制所述的節(jié)點之間事務(wù)的順序,其中所述的編織器橋確定前面事務(wù)與后繼事務(wù)的排序,所述的排序就是所述的后繼事務(wù)可被允許繞過,必須允許繞過,和必須不允許繞過所述的前面事務(wù)之中的一種,其中所述的事務(wù)序列包括對輸入/輸出(I/O)設(shè)備的加載/存貯(L/S),和直接存貯器存取(DMA)對等關(guān)系的事務(wù)。
2.根據(jù)權(quán)利要求1的數(shù)據(jù)處理系統(tǒng),其中所述的排序是當所述的第一和第二事務(wù)分別處于第一,第二和第三預(yù)先規(guī)定的事務(wù)對組時,所述的后繼事務(wù)可被允許繞過,所述的后繼事務(wù)必須被允許繞過,和所述的后繼事務(wù)必須不允許繞過。
3.根據(jù)權(quán)利要求1的數(shù)據(jù)處理系統(tǒng),其中所述的編織橋依據(jù)預(yù)定的協(xié)議確定所述的事務(wù)排序。
4.根據(jù)權(quán)利要求2的數(shù)據(jù)處理系統(tǒng),其中所述的第一、第二和第三組是依據(jù)預(yù)定的協(xié)議確定的。
5.根據(jù)權(quán)利要求1的數(shù)據(jù)處理系統(tǒng),其中所述的編織器橋進一步包括控制電路,用于控制所述節(jié)點之間事務(wù)的順序,所述的控制電路確定所述的前面事務(wù)和所述的后繼事務(wù)的排序。
6.根據(jù)權(quán)利要求5的數(shù)據(jù)處理系統(tǒng),其中所述的控制電路包括一個狀態(tài)機構(gòu),所述的狀態(tài)機構(gòu)依據(jù)一種預(yù)定的協(xié)議確定所述的前面事務(wù)和所述的后繼事務(wù)的排序。
7.根據(jù)權(quán)利要求5的數(shù)據(jù)處理系統(tǒng)進一步包括至少一個緩沖器,用于存貯事務(wù)信息,所述的緩沖器對來自所述的控制電路的信號作出響應(yīng)傳送事務(wù)信息。
8.根據(jù)權(quán)利要求1的數(shù)據(jù)處理系統(tǒng),其中所述的事務(wù)序列進一步包括對系統(tǒng)存貯器的直接存貯器存取(DMA)和對系統(tǒng)存貯器的加載/存貯。
9.根據(jù)權(quán)利要求8的數(shù)據(jù)處理系統(tǒng),其中所述的事務(wù)序列還包括eieio和sync事務(wù)。
10.根據(jù)權(quán)利要求1的數(shù)據(jù)處理系統(tǒng)還包括中央處理單元(CPU),連接到所述編織器橋,每個CPU用于產(chǎn)生所述的事務(wù)序列的一個或多個事務(wù)。
11.一種在數(shù)據(jù)處理系統(tǒng)中的節(jié)點之間傳遞事務(wù)的方法包括以下步驟通過確定前面事務(wù)和后繼事務(wù)的排序控制所述節(jié)點之間事務(wù)的順序,所述的排序是所述的后繼事務(wù)可被允許繞過所述的前面事務(wù),必須被允許繞過所述的前面事務(wù),和必須不允許繞過前面事務(wù)中的一種,其中所述的事務(wù)序列包括對輸入/輸出(I/O)設(shè)備的加載/存貯(L/S),和直接存貯器存取(DMA)對等關(guān)系的事務(wù)。
12.根據(jù)權(quán)利要求11的方法,其中所述的排序是當所述的第一和第二事務(wù)分別處于第一、第二和第三預(yù)定的事務(wù)對組時,所述的后繼事務(wù)可被允許繞過,所述的后繼事務(wù)必須被允許繞過,和所述的后繼事務(wù)必須不允許繞過前面的事務(wù)。
13.根據(jù)權(quán)利要求11的方法,其中所述的事務(wù)排序是依據(jù)預(yù)定的協(xié)議確定的。
14.根據(jù)權(quán)利要求12的方法,其中所述的第一,第二和第三組是依據(jù)預(yù)定的協(xié)議確定的。
15.根據(jù)權(quán)利要求11的方法,其中控制所述的事務(wù)順序的步驟包括提供控制電路,用于控制所述的節(jié)點之間的事務(wù)順序,所述的控制電路確定所述的前面事務(wù)和所述的后繼事務(wù)的排序。
16.根據(jù)權(quán)利要求15的方法,其中所述的控制電路包括一個狀態(tài)機構(gòu),所述的狀態(tài)機構(gòu)依據(jù)預(yù)定的協(xié)議確定所述的前面事務(wù)和所述的后繼事務(wù)的排序。
17.根據(jù)權(quán)利要求15的方法,其中控制所述的事務(wù)順序的步驟進一步包括提供至少一個緩沖器,用于存貯事務(wù)信息,和對來自所述的控制電路的信號作出響應(yīng),通過所述的緩沖器傳遞事務(wù)信息。
18.根據(jù)權(quán)利要求11的方法,其中所述的事務(wù)序列進一步包括對系統(tǒng)存貯器的直接存貯器存取(DMA)和對系統(tǒng)存貯器的加載/存貯。
19.根據(jù)權(quán)利要求18的方法,其中所述的事務(wù)序列還包括eieio和sync指令。
20.根據(jù)權(quán)利要求11的方法,其中所述的事務(wù)序列包括進一步或多個中央處理單元(CPU)產(chǎn)生的事務(wù)。
21.一種計算機程序產(chǎn)品,用于在程序存貯媒介上存貯,程序產(chǎn)品用于在數(shù)據(jù)處理系統(tǒng)中的節(jié)點之間傳遞事務(wù),程序產(chǎn)品包括通過確定前面事務(wù)和后繼事務(wù)的排序,編程控制所述的節(jié)點之間事務(wù)的順序,所述的排序是所述的后繼事務(wù)可被允許繞過前面事務(wù),必須被允許繞過和必須不允許繞過前面事務(wù)中的一種,其中所述的事務(wù)序列包括對輸入/輸出(I/O)設(shè)備的加載/存貯(L/S),和直接存貯器(DMA)對等關(guān)系事務(wù)。
22.根據(jù)權(quán)利要求21的程序產(chǎn)品,其中所述的排序是當所述的第一和第二事務(wù)分別是第一、第二和第三預(yù)定的事務(wù)對組之一時,所述的后繼事務(wù)可被允許繞過,所述的后繼事務(wù)必須被允許繞過,和所述的后繼事務(wù)必須不允許被繞過,所述的前面事務(wù)。
23.根據(jù)權(quán)利要求21的程序產(chǎn)品,其中所述的事務(wù)排序依據(jù)預(yù)定協(xié)議確定。
24.根據(jù)權(quán)利要求22的程序產(chǎn)品,其中所述的第一,第二和第三組是依據(jù)預(yù)定協(xié)議確定的。
25.根據(jù)權(quán)利要求21的程序產(chǎn)品,其中所述的用于控制所述的事務(wù)順序的編程包括對控制所述的節(jié)點之間的事務(wù)順序的控制電路編程,所述的控制電路對所述的編程作出響應(yīng)確定所述的前面事務(wù)和所述的后繼事務(wù)的排序。
26.根據(jù)權(quán)利要求25的程序產(chǎn)品,其中所述的控制電路包括狀態(tài)機構(gòu),所述的狀態(tài)機構(gòu)對所述的編程作出響應(yīng),依據(jù)預(yù)定的協(xié)議確定所述的前面事務(wù)和所述的后繼事務(wù)的排序。
27.根據(jù)權(quán)利要求25的程序產(chǎn)品,其中對所述的控制事務(wù)順序的編程進一步包括對控制至少一個用于存貯事務(wù)信息的緩沖器的編程;和對來自所述的控制電路的信號作出響應(yīng)通過所述的緩沖器傳遞事務(wù)信息編程。
28.根據(jù)權(quán)利要求21的程序產(chǎn)品,其中所述的事務(wù)序列進一步包括對系統(tǒng)存貯器的直接存貯器存取(DMA)和對系統(tǒng)存貯器的加載/存貯。
29.根據(jù)權(quán)利要求28的程序產(chǎn)品,其中所述的事務(wù)序列還包括eieio和sync指令。
30.根據(jù)權(quán)利要求21的程序產(chǎn)品,其中所述的事務(wù)序列包括由一個或多個中央處理單元(CPU)產(chǎn)生的事務(wù)。
全文摘要
實現(xiàn)一種在數(shù)據(jù)處理系統(tǒng)中越過編織器傳遞事務(wù)序列的設(shè)備和方法。編織器橋依據(jù)預(yù)定的協(xié)議將前面事務(wù)與后繼事務(wù)排序。利用協(xié)議確定是否后繼事務(wù)可被允許繞過前面事務(wù),必須被允許繞過前面事務(wù),或必須不允許繞過前面事務(wù)。事務(wù)包括加載/存貯(L/S)系統(tǒng)存貯器和對輸入/輸出(I/O)設(shè)備的L/S,以及對系統(tǒng)存貯器的直接存貯器存取(DMA)和DMA對等關(guān)系事務(wù)。
文檔編號G06F13/40GK1259702SQ9912476
公開日2000年7月12日 申請日期1999年12月9日 優(yōu)先權(quán)日1998年12月28日
發(fā)明者D·M·尼爾, S·M·瑟伯 申請人:國際商業(yè)機器公司