亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

總線流程控制機構(gòu)的制作方法

文檔序號:6405279閱讀:408來源:國知局
專利名稱:總線流程控制機構(gòu)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及對總線上的各進程之間的工作流程的控制,特別涉及對分享處理器資源的各進程間的邏輯連接的管理。
在以前的進程到進程的通訊中(通訊方法對于通訊進程是透明的),一個包含進程的單元請求總線上的另一單元來完成工作。待操作的數(shù)據(jù)放在請求者的存儲中,而服務(wù)者單元,亦即執(zhí)行此請求的單元,有存取這些數(shù)據(jù)的方法。以前的系統(tǒng)缺乏簡便管理進程間的邏輯連接以便可用最低級別服務(wù)的手段。服務(wù)級別依賴于所分配的系統(tǒng)資源。
從對進程編程的觀點來看,所分享的資源是由服務(wù)者進程提供的工作。該資源的各單元是那些工作請求。必須保證任何服務(wù)器的所有用戶具有存取此資源的最低級別,亦即,必須允許它們具有若干個未完成的工作請求,且保證這些請求最終將提交給服務(wù)器進行處理。
大多數(shù)的總線執(zhí)行使用獨立的信號線來確認接受還是拒絕表明工作請求的信息。對于遠程通訊應(yīng)用,對流程控制已實現(xiàn)了步調(diào)機構(gòu)(pacingmechanism)。SNA使用一種計數(shù)機構(gòu)。允許信息啟動器在接收到一個確認信號以前有最大數(shù)量的待完成信息??梢蕴幱诖瓿蔂顟B(tài)的信息數(shù)目必須由信息接收器建立,且待完成信息的步調(diào)控制必須由信息發(fā)送器負責(zé)。這樣,流程控制中直接涉及每個獨立的發(fā)送器和接收器。
在Rubinson等人的美國專利No.4,449,182中,在主處理器的主存儲中儲存了一個指令環(huán)與一個響應(yīng)環(huán)。它們包含對I/O控制器處理器的指令的空間和響應(yīng)來自控制器的指令的空間。對每一個I/O控制器有一個響應(yīng)環(huán)和一個指令環(huán)。使用一個位來表明所有權(quán),以防止某個處理器寫一條還沒有由I/O控制器處理的指令或還沒有由主處理器讀出的響應(yīng)。若指令環(huán)滿了,或者響應(yīng)環(huán)空了,那末在主處理器接到表明指令環(huán)已經(jīng)變成非滿,或反應(yīng)環(huán)已經(jīng)變成非空的中斷以前,它不再對環(huán)進行檢查。兩個處理器均含有指向環(huán)中應(yīng)該讀或?qū)懙南乱粋€位置的指針。這樣,以一種十分原始的方式在各裝置之間建立了一種簡單形式的流程控制。
Rubinson等人的專利沒有說明多進程互相通訊的資源分配問題。它不保證在任何一個處理器中運行多個進程可提供最低級別的服務(wù)。在多進程環(huán)境中的通訊由于給定的不同排隊延遲和進程的獨立性而變得復(fù)雜得多了。
一種分布式處理器網(wǎng)絡(luò)中的總線單元通訊管理機構(gòu),管理通訊進程之間的邏輯連接以保證對每個進程提供最低級別的服務(wù)??偩€單元是隸屬于分布式處理器網(wǎng)絡(luò)中的總線的處理單元,且可以包含一個或幾個主處理器或者輸入/輸出處理器。進程之間的邏輯連接由總線管理歸總為在每個處理器處的連接群。每個連接群具有足夠的處理器資源來完成至少一個工作請求。當(dāng)一個連接群已達到它的待完成的工作請求上限時,總線管理將該群已充滿后所請求的工作通知包含這些進程的總線單元,并表明此時不能完成它們指定的請求。
由于硬件排除的延遲,請求進程可以發(fā)送一個給連接于已滿的連接群的進程用的進一步的工作請求??偩€管理將再一次拒絕該請求,并通知發(fā)出請求的總線單元。當(dāng)連接群中的進程完成工作后,總線管理將通知該總線單元它現(xiàn)在可以接受進一步的工作請求了。由于希望按發(fā)送的次序來處理工作請求,所以該請求總線單元將按正確的次序重新開始它的工作請求,然后通知服務(wù)進程的總線單元它應(yīng)該再開始接受工作請求。只有在從請求程序接到重新開始的信息以后,請求總線單元才發(fā)送將由服務(wù)總線單元接受的請求。
使用連接群具有明顯的好處。這是一個在最低編程級別上的單一流程控制機構(gòu),且用于所有的總線單元??偩€單元的獨立任務(wù),主處理器,或者支持諸如通訊機構(gòu),二級存儲器。工作站等不同形式裝置的I/O控制器,都使用該流程控制機構(gòu)。由于它對所有總線單元是相同的,所以它還在總線上提供一種相互處于平等地位的環(huán)境。
這些連接群防止任何總線單元由于繁忙活動而被其它總線單元切斷另一個總線單元的服務(wù)。通過對每個隸屬于總線的處理器請求至少一個連接群,且使該連接群僅用于兩個特有的處理器上的進程之間的連接,來做到這一點。這樣,一個耦合于其它兩個處理器的處理器必須至少有兩個連接群,每個處理器有一個。
在一個較佳實施例中,有三種類型的連接群用于與其它要求通訊的處理器中的每一個進行通訊?;顒硬欢嗟倪M程屬于一個連接群,它在任何一個時間只能接受不多幾個工作請求。中等活動的進程屬于一個連接群,它可以接受更多的工作請求?;顒臃泵Φ倪M程屬于一個連接群,它具有很多系統(tǒng)資源以接受大量的工作請求。這樣,基于期望的工作級別,對不同的進程保證相應(yīng)的服務(wù)級別。
使用上述信息來指明何時一個連接群是滿的以及調(diào)整重新發(fā)送在那個連接群中曾被拒絕的信息,這些提供了更多的好處。它保證工作以所希望的次序來完成。
各連接群允許對其作用是釋放處于關(guān)鍵狀態(tài)的資源的進程指定一個連接群。這樣,若該連接群可以接受至少一個工作請求,則某些資源可以得到釋放。釋放資源的一個方法是關(guān)閉整個工作并重新使該系統(tǒng)置位。
對資源分群的進一步的好處是提供支持更多裝置的能力。每個裝置具有它運行時所需要的最小量的資源。在一個連接群中提供的資源(每個裝置的最小要求乘以該群中的裝置數(shù))越少,可以隸屬于一個系統(tǒng)的裝置就越多。一個例子是一臺磁帶驅(qū)動裝置。若要求它隸屬于多個磁帶驅(qū)動器,而每一個驅(qū)動器需要大量的存儲用于緩沖數(shù)據(jù),則對每一個磁帶驅(qū)動器指定足夠的資源將會只留下很少的可用于直接存取存儲裝置的資源。將這些磁帶驅(qū)動器組合為一個連接群,並且僅為一個或兩個同時運行的驅(qū)動器分配足夠的資源,則有足夠的資源可用于直接存取存儲裝置。對磁帶驅(qū)動裝置,並且也對直接存取存儲裝置提供有保證的支持級別。由于不大可能會五臺磁帶裝置同時運行,所以沒有降低總的服務(wù)。


圖1是取自美國專利No.4,649,473的方塊圖,它是具有用于各進程之間通訊的進程間通訊設(shè)備的多進程系統(tǒng)的總圖。
圖2是圖1所示的多進程系統(tǒng)的總體方塊圖,它給出在各進程間有邏輯連接的邏輯連接群。
圖3給出了用于管理圖2中的邏輯連接群的表和控制塊。
圖4是表示一個請求總線單元的方塊流程圖,該單元對指定給一個連接群的工作請求的“隊列滿”(QueueFull)狀態(tài)作出響應(yīng),該連接群沒有足夠的資源來接受更多的工作請求。
圖5是圖4所示的對“隊列滿”狀態(tài)作出響應(yīng)的請求總線單元的進一步的流程圖。
圖6是由圖4所示的對“隊列滿”狀態(tài)作出響應(yīng)的請求總線單元使用的隊列的方塊圖。
圖7是服務(wù)總線單元的方塊流程圖,表示確定連接群中是否具有足夠的資源以及如果沒有足夠的資源就發(fā)送“隊列滿”信息的流程圖。
圖8是圖7所示的服務(wù)總線單元的進一步的流程圖,它決定何時連接群的資源已經(jīng)成為可用的,并發(fā)送一個“隊列空間可用”(QueueSpaceAvailable)信息。
圖9是一個方塊圖,表示報告各種錯誤和指明“隊列滿”狀態(tài)的“總線錯誤條件”(BusErrorCondition)信息的各字段。
圖10是一個方塊圖,它給出了表明該資源對連接群是可用的“隊列空間可用”信息的各字段。
圖11是一個方塊圖,它給出了通知連接群開始接受工作請求的“重新開始排隊”(RestartQueue)信息的各字段。
圖12是包含連接群的隊列滿條件的信息流程圖。
圖13是一個方塊圖,它給出了表明存在一個對確定進程的工作請求的“運行開始”(Opstart)信息的各字段。
圖14是一個方塊圖,它給出了用來確定各請求和數(shù)據(jù)的位置的“請求/響應(yīng)控制塊”(Request/ResponseControlBlock)的各字段。
圖15是表示附加的“請求/響應(yīng)控制塊”各字段的方塊圖。
圖16是一個方塊圖,它給出了表明存在一個對工作請求的響應(yīng)的“運行結(jié)束”(Opend)信息的各字段。
圖17是一個方塊圖,它給出了請求管理遠程存儲的“存儲請求”(StorageRequest)信息的各字段。
圖18是一個方塊圖,它給出了表明待遠程管理的存儲表的位置的“存儲表可用”(StorageListAvailable)信息的各字段。
圖19是一個方塊圖,它給出了用來確定待管理的遠程存儲的“存儲表控制塊”(StorageListControlBlock)的各字段。
圖20是一個方塊圖,它給出了用來返回遠程存儲管理的“存儲表完成”(StorageListComplete)信息的各字段。
圖21是一個方塊圖,它給出了用來請求返回遠程存儲管理的“返回存儲表”(ReturnStorageList)信息的各字段。
圖22是傳送遠程存儲管理控制的信息流程圖。
圖23是表示準許遠程存儲管理的方塊流程圖。
圖24是表示返回遠程存儲管理的方塊流程圖。
圖25是逆轉(zhuǎn)工作請求流程的信息流程圖。
圖26是一個方塊圖,它給出了用來非正式傳送少量數(shù)據(jù)的“信號”(Signal)總線信息的各字段。
圖27是一個方塊圖,它給出了圖26所示的用于逆轉(zhuǎn)工作請求流程的“信號”信息的不同版本。
圖28是一個方塊圖,它給出了用來請求DMA傳送的“DMA請求”、(DMAReg)總線信息的各字段。
圖29是一個方塊圖,它給出了用來表明DMA傳送已完成的
“DMA完成”(DMAComp)總線信息的各字段。
圖30是使用圖28和圖29的DMA信息傳送數(shù)據(jù)的信息流程圖。
圖1取自轉(zhuǎn)讓給本發(fā)明的同一受讓人的美國專利NO.4,649,473。它用來向讀者提供,更清楚地理解本發(fā)明的基礎(chǔ)。緊跟著的內(nèi)容敘述圖1,並且集中于進程到進程的通訊,這里這些進程感覺不到潛在的通訊管理。將在稍后一節(jié)描述該潛在的總線傳輸機構(gòu),以及乃是本發(fā)明主題的總線管理。
在圖1中10表示一個分布式進程環(huán)境的示意圖。由12代表的處理器A通過由線14代表的實際路徑耦合到由16代表的處理器B。處理器A具有在其內(nèi)部的由18代表的進程A以及由19代表的進程B。存儲區(qū)域20與進程A以及進程B相連接,提供數(shù)據(jù)存儲的進程控制和存取,這種連接分別由線21和22表示。
處理器B具有在其內(nèi)部的由23代表的進程C以及由24代表的進程D。存儲區(qū)域25與進程C以及進程D相連接,提供數(shù)據(jù)存儲的進程控制和存取,這種連接分別由線26和28表示。
在這些處理器中,各進程或執(zhí)行程序需要互相通訊。在不同結(jié)構(gòu)的處理器中,或者在同一處理器中隨著時間的改變,進行通訊的兩個進程可以處于不同的相對位置,它們之間可以有不同的實際路徑。
在處理器A和處理器B中提供了分別由30及32代表的進程間通訊設(shè)備(IPCF),它調(diào)節(jié)對通訊進程是透明的進程間通訊。IPCF30通過線34與處理器A中的進程A相耦合,通過線36與進程B相耦合。線34和36代表進程A和進程B到IPCF30之間的接口。只要建立了適當(dāng)?shù)臄?shù)據(jù)通道,這些接口就允許在進程A和進程B之間進行通訊。IPCF30還通過處理器B中的傳輸機構(gòu)40與IPCF32相耦合。IPCF32本身通過接口線42和44與進程C以及進程D相耦合。這些IPCF的接口和傳輸機構(gòu)允許在上述所有進程之間建立通訊,而不需要關(guān)于與之通訊的進程的位置的進程知識。傳輸機構(gòu)38和40最好包含多個傳輸機構(gòu),諸如在單一處理器中進程A和進程B之間或進程C和進程D之間進行通訊時使用的局部傳輸結(jié)構(gòu)。若處理器A和處理器B在同一個機器中,則總線傳輸機構(gòu)被用來進行處理器A和處理器B的各進程之間的通訊。對于機器之間的通訊,諸如SNA的通訊協(xié)議是適用的。
傳輸機構(gòu)38、40是數(shù)據(jù)傳送器。它們負責(zé)把數(shù)據(jù)的各字節(jié)從一個地方傳送到另一地方,而並不理解所傳送的信息的意義。這樣,線46代表處理器A中的存儲20和傳輸機構(gòu)38耦合,線48代表處理器B中的存儲25和傳輸機構(gòu)40耦合,以允許傳輸結(jié)構(gòu)38、40在存儲器20與25之間直接傳送信息。
IPCF為企圖進行通訊的進程選擇進行該通訊的傳輸機構(gòu)。進行通訊的進程不需要知道所用的機構(gòu)。企圖進行通訊的進程將目標進程的名稱提供給IPCF(這對企圖進行通訊的進程而言是已知的),IPCF用一個適當(dāng)?shù)哪夸浄?wù)來安置它。然后IPCF選擇適當(dāng)?shù)膫鬏敊C構(gòu)並使用系統(tǒng)提供的服務(wù),以標準方式建立進程間的連接。所有級別的進程,從應(yīng)用性的到諸如分頁管理那樣的基本系統(tǒng)服務(wù),都可以使用IPCF。
為了允許使用各種不同的具有不同能力與特征的傳輸機構(gòu),IPCF包含一個對每個進程的通用傳輸機構(gòu)接口。該接口確定了一組為建立連接以及在進程間傳遞信息的功能。這些功能被變換到IPCF所使用的傳輸機構(gòu)上。寫到接口上的程序是獨立于傳輸機構(gòu)的,因而是獨立于它們在通訊時的相對位置的。
進程間的通訊是通過由IPCF建立它們之間的連接來發(fā)送和接收信息而實現(xiàn)的。該信息包含工作請求和/或數(shù)據(jù)。相對于一個特定的工作請求,進程起著請求者或服務(wù)器的作用。請求者通過發(fā)送請求給執(zhí)行此請求的服務(wù)器而啟動工作請求。請求包含工作請求(指令和它的參數(shù))以及可選的某些數(shù)據(jù)。請求和數(shù)據(jù)均具有可變的長度。
如果讀者需要關(guān)于IPCF的進一步的信息,以及建立連接的方式,可參考轉(zhuǎn)讓給本發(fā)明同一受讓人的美國專利NO.6,649,473?,F(xiàn)在描述作為傳輸機構(gòu)38和40一部分的總線管理。
總線管理在圖2中,兩個總線單元50和52通過一個諸如I/O(輸入和輸出)總線54那樣的實際路徑相耦合。在一個較佳實施例中,總線單元50包含一個帶有處理器56的主處理系統(tǒng),主存儲器58通過線60與該處理器相耦合。主處理器56執(zhí)行多個程序,從計數(shù)程序到操作系統(tǒng)程序。一個程序的一次執(zhí)行稱為一個進程。在主處理器56中給出了幾個進程PA1-PAn,PB1-PBn,PC1-PCn。
在一個較佳實施例中,總線單元52包含一個I/O處理器66,主存儲器68通過線70與其相耦合。I/O處理器66也有許多可執(zhí)行的進程PD1-PDn,PE1-PEn以及PF1-PFn。在處理器56和66中的每一個中畫出了大量的進程,但也可能出現(xiàn)一個處理器只有一個進程的情況。在另一個實施例中,處理器66是一個處理器網(wǎng)絡(luò)中的一個普通的處理器。進程間相互進行通訊,而不管通過總線單元50的IPCF72和通過總線單元52的IPCF74的兩個通訊進程的位置。每一對通訊進程是通過IPCF由總線單元50中的線80和總線單元52中的82所表示的邏輯連接在邏輯上連接起來的。
在前述專利No.6,649,473中更詳細地描述了這些連接的建立。實質(zhì)上,IPCF的“打開”(Open)謂詞在兩個進程間建立了IPCF連接。對于每一對進程的通訊,該連接是唯一的。這樣,線80中的每一條與線82中的一條相匹配。因為可以有比圖2中畫出的更多的I/O處理器或主處理器,所以比線82更多的線80指明對沒有畫出的處理器中的進程的連接。由一個要求開始通訊的進程發(fā)出“打開”謂詞,使得IPCF在發(fā)出“打開”謂詞的進程和由“打開”謂詞確定的目標進程之間建立邏輯連接,“打開”謂詞的目標由一個實體名稱確定?!按蜷_”謂詞基于提供給它的實體名稱建立與一個程序的新的或已經(jīng)執(zhí)行的事例的連接。
“打開”謂詞包含IPCF使用的實例名稱和相應(yīng)的操作系統(tǒng),以便確定服務(wù)器中需要連接的程序以及此程序的執(zhí)行例(即進程)。一個連接識別符確認由IPCF返回的連接。它用來參考在相繼操作中的這個連接。一個特定的連接識別符只在單一處理器中有效。一般說來兩個相連接的進程對于同樣的連接有不同的連接識別符。連接識別符由局部IPCF指定,並且在一個處理器中是唯一的。IPCF使用返回碼來表明“打開”謂詞的進程已完成。
總線管理86被表示成通過許多已經(jīng)建立起來的邏輯連接80與主處理器56相耦合。在總線單元52中畫出一個類似的總線管理88,它也具有多個連接82??偩€管理86提供在圖1所示總線單元中的總線傳輸機構(gòu)(BTM)38和40所完成的同樣功能。
總線管理86和88管理這些連接,並且發(fā)出信息來控制總線54上的工作請求的流程。標以90和92的支持此總線的硬件,在實現(xiàn)總線控制允許傳送信息和數(shù)據(jù)以前,提供每一個總線單元任意和總線相接的能力,提供到另一個總線單元的主存儲器的DMA能力,並且對來自各個總線管理的信息進行排隊??偩€硬件還控制從主存儲器隊列中的總線單元來的信息的排隊。
總線管理86接收由總線單元52發(fā)出的“打開”謂詞所產(chǎn)生的通訊。然后它建立與所指定的進程的連接。利用關(guān)于諸如目標進程(即服務(wù)進程)的特性,請求進程的特性,特定裝置所完成的工作的類型,或其它因素的信息,把上述連接的連接識別符賦于標號為CG1,CG2,…,CGn的許多連接群中的一個。該信息中的某一些包含在與總線單元52的通訊中。另一些信息包含在主存儲器58中,並且根據(jù)總線單元52提供的信息進行存取。然后根據(jù)那些信息進行指定,並且在一個較佳實施例中是由開發(fā)者預(yù)先構(gòu)造的。
連接群用于控制工作請求的流程。每一個工作請求要求處理一定量的系統(tǒng)資源。若在先來先服務(wù)基礎(chǔ)上安排對所有工作請求的服務(wù)。那末許多高資源要求的裝置將使其它裝置不能得到服務(wù)。
要求大量主存儲資源的裝置的一個例子是磁帶驅(qū)動裝置。為了保持磁帶裝置以它最有效的流水模式運行,要求一個很大的主存儲緩沖器。如果希望連接多個磁帶裝置,並且每一個均要求大量的存儲來緩沖數(shù)據(jù)(當(dāng)它以流水模式運行時),則對每一個磁帶驅(qū)動器指定足夠的資源將使可分配給直接存取存儲裝置的資源留下很少。通過將這些磁帶驅(qū)動器組合為一個連接群,並且僅為同時運行的一個或兩個驅(qū)動器分配足夠的資源,則有更多得多的資源可用于直接存取存儲裝置。對磁帶驅(qū)動裝置,並且也對直接存取存儲裝置,提供有保證的支持級別。由于不大可能會五臺磁帶裝置同時運行,所以沒有降低總的服務(wù)。
連接群還可以用來保證總有可服務(wù)于某些主進程的資源。一個例子可以是把主保存/存貯進程和相應(yīng)的I/O進程之間的服務(wù)器一側(cè)的連接放進一個連接群,在那個群中它是僅有的連接。這樣,在服務(wù)器進程可以與其它群連接的同時,總是有資源可服務(wù)于主保存/存貯工作請求。
分配群的一個基礎(chǔ)是裝置的運行特征。各種數(shù)據(jù)傳送器,諸如磁帶驅(qū)動器,它們只是偶爾用到的,放在一個群中。諸如直接存取存儲裝置那樣的裝置,它們繁忙地用于將數(shù)據(jù)存入主存儲器以及從主存儲器中取出數(shù)據(jù),放在另一個群中,並且給這個群分配大量的資源以保證高級別的服務(wù)。其它裝置,諸如工作站,放在又一個群中。若存在足夠的可用資源,則每個裝置有它自己的群。
當(dāng)討論把裝置放入群的時候,作為一種簡便說法,我們說把聯(lián)系于該裝置的進程的連接放進了一個群。根據(jù)所服務(wù)的工作請求的類型將各個連接進一步分配給各個群。與錯誤條件處理有關(guān)的連接以及與其它維修有關(guān)的工作請求可以放入它本身組成的又一個群中,以保證對這些請求的最低級別的服務(wù)??梢钥闯觯捎谑褂眠B接群來分配資源和這樣控制工作流程,而提供了極大的靈活性。
在作為服務(wù)器工作的總線單元50中,每個連接群均列在圖3(其數(shù)號與圖2相一致)的主存儲器58中的控制塊120中??刂茐K120包含每個連接群CG1-n的項目,用于群識別符的標以GP1D。在122欄中表明的數(shù)是與GPID相聯(lián)系的項目,它用來保持跟蹤通過該群中的一個連接而收到的工作請求數(shù),但是該請求還沒有被總線單元50中的進程服務(wù)過?;顒舆B接識別符(CID)的表125有指向連接群項目120的指針,並且確定有一個連接是其一部分的那個群??偩€單元52有保持跟蹤等待的尚未服務(wù)過的工作請求數(shù)的類似機構(gòu)。
上述工作請求流程的好處之一是,連接群中的工作(對于具有同樣優(yōu)先級的單一連接)是以請求總線單元所要求的次序得到服務(wù)的。這樣,如果對一個進程有多個某優(yōu)先級的寫入數(shù)據(jù)請求,那末將按要求的次序?qū)懭?,即使有某個時刻資源不夠用也是這樣。所有這些對于請求進程是明顯的。
現(xiàn)在參考圖4和圖5來描述請求總線單元中的流程圖。使用4個隊列來保持跟蹤發(fā)源于請求總線單元中的工作請求。每一個隊列包含指向工作請求的指針,請求識別符以及在“打開”進程期間與其通訊的那個服務(wù)總線單元中的相應(yīng)的連接群?!皽蕚浒l(fā)送隊列”用在正常的工作請求流程中,以指向準備發(fā)送給服務(wù)處理器的工作請求隊列。當(dāng)為“準備發(fā)送隊列”中的一個請求發(fā)送一個“運行開始”(OPSTART)信息時,移掉該指針并將它放入“等待響應(yīng)隊列”。當(dāng)收到一個“運行結(jié)束”(OPEND)信息時,從所有隊列中移掉該工作請求的項目。在圖4中由方塊150、152和154表示了此正常流程。
當(dāng)根據(jù)一個工作請求返回“隊列滿”時,該指針從等待完成隊列移到由156表示的拒絕隊列,並且表明收到了“隊列滿”信息的標志是與收到此信息的連接群相聯(lián)系的。然后在158處檢查表明現(xiàn)在該連接群有空間可用的“隊列空間標記”(QSPACEFLAG)。正常狀況下該標記為off,因而總線管理繼續(xù)發(fā)送和接收通訊。以這種方式把在等待完成隊列中的、“隊列滿”標記被返回的每一個工作請求放入拒絕隊列。
在圖5中,當(dāng)總線管理準備好發(fā)送與“準備發(fā)送隊列”中下一個項目對應(yīng)的另一個“運行開始”時,它在160處對服務(wù)總線單元中的連接群檢查“連接群滿”標志。若它表明該連接群隊列是滿的,則該請求項目被放入162處的中間隊列。若它不滿,則在164處發(fā)送一個“運行開始”信息,並且在166處將該請求項目放入等待完成隊列。
回到圖4所示的流程,當(dāng)請求處理器在168處收到一個“隊列空間可用”(QueueSpaceAvailable)信息時,在170處設(shè)置“隊列空間標記”O(jiān)N,並且在該指定連接群中對位于收到“隊列滿”項目之后的任何項目,檢查等待完成隊列。若對所有等待完成的請求“隊列滿”均沒有被返回,那末總線單元在174處繼續(xù)等待下一個通訊。
如果在172處全都得到了確認,則在176處把這些項目從拒絕隊列移到準備發(fā)送隊列的開始處。然后,在178處把請求項目從中間隊列移到準備發(fā)送隊列,放在從拒絕隊列來的項目之后,并在180處重新設(shè)置“隊列空間標記”。在182處發(fā)送“重新開始排隊”(RestartQueue)信息,並且總線管理在184處開始從準備發(fā)送隊列發(fā)送。
在圖6中,畫出了上述流程所用的隊列,箭頭表示相應(yīng)于工作請求的隊列項目的流動。正常情況下,準備發(fā)送隊列200經(jīng)過線202把項目傳送給等待響應(yīng)隊列210。如果收到了“隊列滿”狀態(tài),從隊列210經(jīng)過線222把項目傳送給拒絕隊列220。同時,當(dāng)新的工作在隊列200中開始時,如果檢測到對一個已經(jīng)滿了的連接群有工作請求,則將它經(jīng)過線232傳送給中間隊列230。當(dāng)所有的項目從滿連接群用的等待響應(yīng)隊列210傳送到了拒絕隊列220,並且根據(jù)“隊列空間可用”信息已經(jīng)發(fā)出“重新開始排隊”信息時,通過線234把曾被拒絕的請求送回到準備發(fā)送隊列200的頂端。然后,經(jīng)過線236,為現(xiàn)在已有資源可用于進一步工作的群準備的另一些請求被傳送給準備發(fā)送隊列200,放在上述曾被拒絕的請求之后。
圖7與圖8中畫出了服務(wù)總線單元中相應(yīng)的流程。服務(wù)總線單元在250處接收一個“開始運行”信息,在252處確定連接群,在254處增加它的計數(shù)。使用一個計數(shù)限來確定連接群在任一時刻可以待完成的工作請求的數(shù)目。在256處將上述計數(shù)的數(shù)值與計數(shù)限相比較,若此值大于計數(shù)限,則在258處設(shè)置“隊列滿標記”(QFULLFLAG),並且在260處向發(fā)來信號的總線單元發(fā)送在“總線錯誤條件信息”中的“隊列滿”狀態(tài),在261處繼續(xù)進行處理。在另一個實施例中,監(jiān)視實際可用的資源并與由“運行開始”表示的工作請求所要求的資源進行比較。若計數(shù)值不大于計數(shù)限,但在262處探測到“隊列滿標記”,則該流程返回到260,並根據(jù)“運行開始”發(fā)送“隊列滿”狀態(tài),否則,在264處繼續(xù)處理該請求,在266處繼續(xù)該流程。如果在250處收到的信息不是“運行開始”信息,則在268處檢查它是否是一個“重新開始排隊”信息。如果不是,在270處繼續(xù)處理。如果它是“重新開始排隊”信息,在272處將“隊列滿標記”重新設(shè)置到off狀態(tài),且在274處繼續(xù)處理。
為了清掉隊列滿條件,服務(wù)處理器必須或者分配更多的資源並增加待完成請求的計數(shù)限,或者完成一個滿連接中的至少一個工作請求。圖8中表示了這一流程。當(dāng)一個工作請求完成后,在280處減少相關(guān)的連接群的計數(shù)。在282處或者發(fā)送“運行結(jié)束”,或者發(fā)送一個“總線錯誤條件”信息。然后,在284處檢查“隊列滿標記”,如果它是off,在285處繼續(xù)進行處理。如果“隊列滿標記”已置為on,則在286處檢查該連接群的計數(shù),看它是否低于計數(shù)限。在方塊286中稱為“低值”的此計數(shù)限不需要與前面討論過的計數(shù)限相同??梢云谕⒁粋€更低的計數(shù)限以保證有足夠的資源可用于許多請求。由于多個請求可以跟著請求隊列的重新開始而快速發(fā)送出去,因而可以幫助消除“隊列滿”流的不變的序列。如果計數(shù)值不低于該“低值”,則在287處繼續(xù)處理。如果在286處計數(shù)值低于該“低值”,則在288處發(fā)送“隊列空間可用”信息,且在290處繼續(xù)處理。
在一個較佳實施例中,在總線單元50中,為每一個通訊協(xié)議定義了分開的連接群,這些協(xié)議包括與完成X,25,LAN,SDLC及其它通訊協(xié)議的進程的連接。
另一個群包括錯誤處理進程的連接。另一個群用于與一般維修的進程有關(guān)的連接。
還有一個群包括常規(guī)功能。諸如與在總線單元52控制的磁盤驅(qū)動裝置間傳送數(shù)據(jù)的進程的連接。
連接群數(shù)目的幾種變化是在本發(fā)明范圍內(nèi)的。某些進程可能要求大量的資源,因而與每個這種進程的連接可以要求有一個單一的連接群。對所需連接的具體分群取決于實際執(zhí)行和要互相通訊的各進程的特征。
在主處理器56中的一個進程與I/O處理器66中的一個進程之間建立連接,導(dǎo)致總線管理88完成該連接,並且將它的進程連接分配給多個連接群CG1、CG2、…、CGn中的一個。這樣,對于包括該總線單元的系統(tǒng)中的每個進程,它與另一個進程有連接,分配目標進程的處理器的總線管理分配它與一個群相連接,並且給該連接群分配資源,用來分配給該群的連接上的工作請求服務(wù)。
流程控制的總線信息當(dāng)一個連接群沒有足夠的資源來為連接于該群的請求提供服務(wù)時,信息在控制和“重新同步”信息的總線管理之間傳送。當(dāng)目標總線單元不能接受一個特定的連接群的新工作時,它返回具有指定的“隊列滿”狀態(tài)的信息。此狀態(tài)包含在“總線錯誤條件”信息中,它的格式示于圖9中。“總線錯誤條件”信息返回到對請求正常響應(yīng)的位置來報告失敗(阻止成功地完成或繼續(xù)運行)?!翱偩€錯誤條件”信息發(fā)送的一些其它條件包括內(nèi)存存取請求中的尋址錯誤,格式錯誤,以及收到未定義或不支持的信息。另外一些條件也可以引起發(fā)送這種依賴于總線傳輸機構(gòu)的實際執(zhí)行的信息。
在“總線錯誤條件”信息中的字段“保留”(RESERVED)被保留在將來使用。字段“總線單元”(BUSUNIT)用來確定信息源。對本發(fā)明的目的而言,它不起作用。第三個字段,“信息識別符”(MESSAGEID)(82)用來確定該信息是“總線錯誤條件”信息?!翱刂谱侄巍?CONTROLFIELD)包含確定經(jīng)受過失敗的特有的請求或連接的信息。此字段的內(nèi)容取決于該失敗、該特定的傳輸信息/DMA以及經(jīng)受該失敗的流動方法。CFID字段確定“控制字段”的內(nèi)容。不同的值表明控制字段中的信息是請求識別符,或是服務(wù)連接識別符,或是控制塊的地址等等。這取決于發(fā)送信息的原因以及是誰發(fā)送的。ACTN字段確定是否要進行恢復(fù)動作。一個值表示不進行任何動作,另一個值要求啟動關(guān)閉一個連接,又一個值引起重新設(shè)置使通訊重新同步。
在“錯誤狀態(tài)”(ERRORSTATUS)字段中指明“隊列滿”條件,“連接群識別符”(CONNGROUPID)緊跟著“隊列滿”條件指明那些已經(jīng)滿了的連接群。它表明所指定的總線單元沒有執(zhí)行此信息。當(dāng)出現(xiàn)“隊列滿”狀態(tài)時,“控制字段”將含有不同的值。它可能包含一個控制塊地址或者一個請求識別符,這依賴于傳送數(shù)據(jù)的方式。傳送數(shù)據(jù)的不同方式將在本申請的流程控制部分中作進一步的描述。“錯誤狀態(tài)”字段還用來確定諸如上述那些其它錯誤條件的狀態(tài)。
在向源總線單元發(fā)送了“隊列滿”狀態(tài)之后,發(fā)送此信息的目標總線單元的總線管理監(jiān)控著相應(yīng)的連接群,以決定何時有足夠的資源可用來服務(wù)于該連接群。
當(dāng)目標總線單元在該特定的連接群中有可用空間時,它向源總線單元發(fā)送一個“隊列空間可用”信息。該“隊列空間可用”總線單元信息用來向源總線管理表明隊列空間是可用的。僅在總線單元向源總線單元發(fā)送了“隊列滿”狀態(tài)以后,才由該總線單元發(fā)送此信息。它表明該連接群有隊列空間可用了。圖10中畫出了“隊列空間可用”信息的格式。有4個“保留”字段,一個“信息識別符”(MESSAGEID)字段和一個唯一地定義了有隊列空間可用的連接群的“群”(GROUP)字段。
源總線單元將接收該“隊列空間可用”信息,并確定送到目標總線單元上那個特定連接群去的工作請求的數(shù)目。由于通訊是異步進行的,並且在源總線單元的硬件中可能存在內(nèi)部排隊延遲,所以源總線單元可能已經(jīng)發(fā)送了更多的信息去啟動工作。
當(dāng)確定了要重新發(fā)送的通訊,亦即在使“隊列滿”狀態(tài)返回信息以后產(chǎn)生的那些通訊,並且已指明該連接群是滿的,這時源總線單元的總線管理發(fā)出一個“重新開始排隊”信息。此信息用來保證在目標處理器中由連接群按次序地取出信息。如果連接群在發(fā)出“隊列空間可用”信息后立即開始取信息,有可能使某些工作進行處理的次序混亂。這將使源總線單元先于其接收到“隊列滿”狀態(tài)發(fā)出信息來啟動工作,而目標總線單元管理則在發(fā)出“隊列空間可用”信息以后才收到它。
圖11中畫出了“重新開始排隊”信息的格式。它類似于“隊列空間可用”信息,其中在“信息識別符”(MESSAGEID)(OD)字段中確定了信息的類型,在“群”字段中確定了重新開始排隊的連接群??偩€管理對每個開始工作的信息返回“隊列滿”狀態(tài),直到目標總線單元的總線管理收到“重新開始排隊”的信息。
信息流程的例子圖12中畫出了對目標總線單元中的連接群的隊列滿作出響應(yīng)時的信息交換圖。目標總線單元標為服務(wù)器,源總線單元標為請求器。在圖上的服務(wù)器一側(cè)畫出了由服務(wù)器發(fā)送與接收的信息,因為流程是在那里進行控制的。請求器與服務(wù)器之間的箭頭指向接收每一信息的總線單元。以數(shù)字次序表示信息的序列?,F(xiàn)在按圖12中出現(xiàn)的次序來列出這些事件。
1.請求處理器向服務(wù)處理器發(fā)送一個開始工作的信息,稱之為“運行開始(1)”信息(在本說明書中稍后再定義)。
2.服務(wù)處理器識別出用“運行開始”信息的連接群處于“隊列滿”條件,並且返回帶有“隊列滿”狀態(tài)的“錯誤”信息。
3.因為總線單元的異步性質(zhì),請求器還不知道“隊列滿”狀態(tài),它向服務(wù)器發(fā)送第二個信息,“運行開始(2)”。
4.服務(wù)器已經(jīng)完成了以前的某個工作請求,并向請求器發(fā)出一個“運行結(jié)束”信息來表明這一點。
5.因為服務(wù)器已經(jīng)完成了以前的某個工作請求,服務(wù)器有了可用的資源或可用的隊列空間,將向請求器發(fā)出一個“隊列空間可用”信息。
6.由于請求器中的硬件排隊延遲,請求器還沒有識別“隊列滿”條件,將發(fā)出“運行開始(3)”信息。
7.服務(wù)器必須繼續(xù)向請求器返回“隊列滿”狀態(tài),直到服務(wù)器收到一個“重新開始排隊”信息。因此它返回“隊列滿(2)”狀態(tài),作為對識別“運行開始(2)”信息的響應(yīng)。
8.現(xiàn)在服務(wù)器識別“運行開始(3)”信息,并返回一個“隊列滿(3)”信息。
9.現(xiàn)在請求器識別對應(yīng)于“運行開始(1)、(2)、(3)”的“隊列滿”狀態(tài)以及“隊列空間可用”信息,并在決定了哪些信息必須重新發(fā)送和發(fā)送它們的次序之后,發(fā)出一個“重新開始排隊”信息。
10,11和12,請求處理器以正確的次序重新發(fā)送“運行開始”信息。
當(dāng)工作已由服務(wù)器完成時,向請求總線單元發(fā)出一個“運行結(jié)束”信息以表明該工作已經(jīng)完成。它的格式在以后描述。
數(shù)據(jù)流程在圖2所示的較佳實施例中,總線單元50及52中的總線硬件90及92是標明具有直接存儲存取(DMA)能力的。這種能力是當(dāng)今存在的大多數(shù)硬件的一種標準的硬件能力。主DMA能力允許具有它的總線單元直接對具有從屬DMA能力的總線單元的主存儲器進行存取,而不中斷從屬DMA總線單元的處理器。因此,不描述它運行的細節(jié),因為這對充分理解本發(fā)明是不必要的。
總線單元50有一個從屬DMA能力90,在該較佳實施例中,總線單元50是主處理器。從屬DMA能力允許一個總線單元讓其它總線單元存取它的主存儲器58,而不中斷主處理器56。這樣,使主處理器56對主存儲器58進行存取的線60,也與總線管理86和從屬DMA硬件相連,允許90直接對主存儲器58進行存取。接下來,這允許另一個總線單元,諸如具有主DMA硬件能力92的總線單元52,對總線單元50的主存58進行存取,而不中斷主處理器56。只具有從屬DMA能力的總線單元不能對任何其它總線單元的主存直接存取,同時,只具有主DMA能力的單元使任何其它總線單元都不能直接存取它的主存。
如果總線單元52中的一個進程向總線單元50中的一個進程發(fā)出一個工作請求,真實的數(shù)據(jù)傳送對這些進程而言必須是透明的。IPCF72和74是進程用來處理工作的謂詞接口。服務(wù)器進程將以其本身的步調(diào)存取由請求器確定的數(shù)據(jù)。由于這種情況下服務(wù)器總線單元只具有從屬DMA能力,所以提供一種得到對IPCF和進程均透明的數(shù)據(jù)的手段。
在保證每一個總線單元都有完整的DMA能力的標準流程中,總線管理88接受從IPCF謂詞74來的信息,它表明有一個進程需要發(fā)送工作請求。然后,總線管理88通過發(fā)送一個“運行開始”信息來通知總線管理86有工作要做。圖13中畫出了“運行開始”總線信息的格式,此格式中有足夠的信息提供給服務(wù)總線單元50中的總線管理86,使得在可能的情況下,把一個指定控制信息和數(shù)據(jù)地址的“請求/響應(yīng)控制塊”(RRCB)從總線單元52的主存儲器68移到總線單元50的主存儲器58中。圖14和15中畫出了RRCB的進一步的細節(jié)。然后,總線管理86可以通過IPCF72通知主處理器56中被看中的進程有一個由該進程排隊的待完成的工作請求。該進程將執(zhí)行該請求,這需要在總線單元間移動數(shù)據(jù)。總線管理86將使用現(xiàn)在處于主存儲器58中的RRCB的副本,來控制總線單元之間的數(shù)據(jù)傳送。向總線管理88發(fā)出的一個“運行結(jié)束”(看圖16)信息表明所請求的操作已完成,此信息通過IPCF74通知給請求進程。
如圖2中實現(xiàn)的上述方案的問題在于總線硬件90不能對主存68直接存取。即使總線硬件90有主DMA能力,總線硬件也還必須同時有從屬DMA能力。通過使用一個存儲表控制塊和幾個新總線信息來解決此問題,以管理主總線單元50的主存58中的緩沖器,為總線單元52的總線管理88提供緩沖。這允許請求器中的總線管理88,根據(jù)工作的標準流程,把與該請求有關(guān)的數(shù)據(jù)傳送給服務(wù)器主存58中的緩沖器,然后,服務(wù)器把這些數(shù)據(jù)從緩沖器傳送到服務(wù)進程可用的存儲器中。這樣,數(shù)據(jù)流程對IPCF72而言是標準的。象通常一樣,用RRCB指明服務(wù)器必須存取的數(shù)據(jù)在哪里。請求總線管理88簡單地保證把數(shù)據(jù)放在主存58的緩沖器中?,F(xiàn)在給出關(guān)于RRCB和信息的更詳細的說明。
圖14和15中畫出了一個RRCB。它用來確定一個工作請求和與它有關(guān)的數(shù)據(jù)。該RRCB是一個控制塊,被請求總線單元的總線管理和服務(wù)總線單元的總線管理用來控制總線單元之間的數(shù)據(jù)移動。RRCB中的信息被用于物理的DMA進程。RRCB的內(nèi)容最好是只讀的。該內(nèi)容不能由服務(wù)總線單元的總線管理改變或修改。
在較佳實施例中,RRCB可以由請求總線管理指定為直至4088字節(jié)的任何長度。為了利用請求器提供的固定塊緩沖器的管理,可以把RRCB分段并用鏈連接起來。例如,若一個固定塊的長度是512字節(jié),而一個RRCB更長一些,則將RRCB分段為一個包含某些頭標信息的第一類型段,和多個圖15所示的第二類型段,沒有一個段比固定塊更長。RRCB的第一類型段的第一個字段是總的RRCB的字節(jié)長度。此長度是RRCB的所有各段的長度的總和。一個“RRCB類型”(RRCBTYPE)字段指明這是一個第一類型的RRCB段?!胺?wù)器連接識別符”(SERVERCONNECTIONID)為該請求指明目標進程的識別符。一個“請求優(yōu)先級”(REQUESTPRIORITY)字段指明,當(dāng)在服務(wù)進程的輸入隊列中插進一個請求項時,該服務(wù)處理器使用的優(yōu)先級。一個“標記”(FLAGS)字段規(guī)定服務(wù)器是需要一個確定的響應(yīng),還是只需要一個表示異常的響應(yīng)。一個“請求識別符”(REQUESTORRID)字段指明該請求的識別符。只有該請求器知道它。
“擴展狀態(tài)指針”(EXTENDEDSTATUSPOINTER)指明一個可以放入擴展狀態(tài)(超過對狀態(tài)允許的結(jié)構(gòu)尺寸的狀態(tài)數(shù)據(jù))的區(qū)域的地址。這個區(qū)域必須是可用的,并在使用前由請求總線管理置為零。該地址是在請求器管理的存儲器中,與RRCB的存儲器一樣。
第一類型段的其余部分與第二類型段相同。它包含多個指定數(shù)據(jù)類型的描述符單元字,這些數(shù)據(jù)由“數(shù)據(jù)標記”(DATAFLAGS)字段中的描述符單元所描述。在“數(shù)據(jù)標記”字段中的描述符類型確定了該描述符的類型,諸如“請求”(Request),從服務(wù)器存儲到請求器存儲器“數(shù)據(jù)輸入”(DataIn),從請求器存儲到服務(wù)器存儲的“數(shù)據(jù)輸出”(DataOut),或者在需要另一段時是連到下一個RRCB段的一個段。如果存在另一個RRCB段,該RRCB段連接描述符單元必須放在該RRCB段的末尾處?!皵?shù)據(jù)標記”字段中的描述符格式字段用來指明立即數(shù)在數(shù)據(jù)字中有正確的起點,並延續(xù)至最大44個字節(jié)。一個請求或“數(shù)據(jù)輸出”描述符可以是立即數(shù)或者一個參考量,該參考量包括總線單元號和確定DMA數(shù)據(jù)來去地方的數(shù)據(jù)地址。在指定該參考量的描述符格式時必須有總線單元號。“數(shù)據(jù)標記”字段由總線單元號來確定下一個字段中的地址涉及的總線單元。
“數(shù)據(jù)長度”(DATALENGTH)字段指明由緊跟著的地址字段指定的字段的數(shù)據(jù)的字節(jié)長度。它是一個無符號的整數(shù)值,指明鄰接的實際存儲量。以零來填補此數(shù)據(jù)使之成為8字節(jié)的倍數(shù)。
“數(shù)據(jù)地址/數(shù)據(jù)”(DATAADDRESS/DATA)字段用作一個地址或立即數(shù)。如果在RRCB段的前述“數(shù)據(jù)標記”描述符格式中指定了立即數(shù),這個字段就是個立即數(shù);否則它是一個地址。該地址可以在服務(wù)器的存儲中,在請求器的存儲中,或者在第三個沒有畫出的總線單元的存儲中。服務(wù)總線管理使用此地址進行來自或去到一個存儲器的DMA操作,該存儲器可以在其它處理器中或者在服務(wù)器存儲中由請求器控制的緩沖器中。
緩沖器管理信息在兩個總線管理之間傳遞緩沖器管理。一個總線單元將提供在它的主存儲由其它總線單元使用與管理的遠程存儲。在此實施例中,總線單元52對和主處理器56緊密耦合的主存58中的緩沖器進行管理??偩€單元52,遠程處理器66可以為任何符合其要求的目的來使用主存58中的遠程存儲。遠程處理器可以把此遠程存儲看作它本身存儲的一個邏輯擴展。
總線單元52通過由總線管理88發(fā)出一個“存儲請求”(StorageRequest)總線單元信息來請求遠程存儲。圖17畫出了“存儲請求”信息的格式。標準系統(tǒng)一建立起來,總線單元立即使用此信息來得到遠程存儲。
當(dāng)遠程處理器沒有任何進一步的緩沖器可用時,也發(fā)出此“存儲請求”總線單元信息??稍凇熬彌_器長度”(LENGTHOFBUFFERS)字段中指定要求的緩沖器的長度。局部的處理器可能不提供所請求尺寸的緩沖器,但如果提供一個更大尺寸的緩沖器則將滿足此請求。不提供更小尺寸的緩沖器。有許多“保留”字段,且被指定為零。“信息識別器(06)”字段確定此信息為“存儲請求”總線單元信息?!按鎯Τ叽纭?STORAGESIZE)字段是所請求存儲的字節(jié)長度。在較佳實施例中,一個單個信息可以請求的最大存儲為65535字節(jié)?!熬彌_器長度”字段指定所要求的緩沖器的最小長度。這樣,當(dāng)要求的總的存儲尺寸不能滿足時,如果只提供一個緩沖器,則它至少和“緩沖器長度”字段中的值一樣長。
由局部總線單元中的總線管理發(fā)送“存儲表可用”(StorageListAvailable)總線單元信息和“存儲表控制塊”(SLCB),響應(yīng)“存儲請求”總線單元信息。SLCB在局部總線單元的存儲中給出一系列可由遠程總線單元使用的緩沖器。只發(fā)送一個“存儲表可用/SLCB”響應(yīng)“存儲請求”,且只響應(yīng)一個“存儲請求”。
圖18畫出了“存儲表可用”總線單元信息的格式?!皹擞洝弊侄沃该黜憫?yīng)的類型,諸如存儲器是可用的,資源不可用并且不能提供存儲,或者沒有所要求那么大的緩沖器可用以及不對該請求提供任何響應(yīng)。“信息識別符(07)”字段識別這是一個“存儲表可用”總線單元信息。“存儲表控制塊的地址”(ADDRESSOFSTORAGELISTCONTROLBLOCK)字段指定SLCB在包含遠程存儲的總線單元存儲中的實際地址。只在“標記”字段的值表明該存儲可用時,此字段才可用?!伴L度”(LENGTH)字段指明局部總線單元存儲中的SLCB的長度。
圖19中是SLCB的格式?!翱偩€號”(BUSNUMBER)字段指定局部總線單元中出現(xiàn)的總線單元的總線號。在較佳實施例中,可以有多至8個不同的總線。“總線單元”字段指定該SLCB指向的遠程總線單元的總線單元號。在下兩個字段中指定緩沖器號和它們的長度。局部總線單元中的發(fā)送器的責(zé)任是保證此字段與“存儲表可用”信息中的“長度”字段相符。
包含遠程存儲的總線單元中的總線管理著同一總線單元上的主存儲的一部分。它保持對主存儲中的緩沖器進行跟蹤,并且準許控制請求主存儲的其它總線單元。這樣,連接和其它總線單元通過總線管理來爭奪主存儲中的緩沖器。
用“緩沖器地址”(SUFFERADDRESS)字段來指定局部總線單元中緩沖器的實際存儲地址。按要求多次重復(fù)這過程,使“緩沖器號”字段中指明的所有緩沖器均得到處理。
由遠程總線單元的總線管理發(fā)出一個“存儲表完成”(StorageListComplete)總線單元信息,指明遠程總線單元不再要求存取SLCB指定的遠程存儲。還可以由具有從屬DMA能力的總線單元來啟動返回遠程存儲,它使存儲可用于具有主DMA的另一個總線單元,用一個“返回存儲表”(ReturnStorageList)總線單元信息來指明應(yīng)該返回到未用的緩沖器?!按鎯Ρ硗瓿伞毙畔⑦€用來指明不能滿足“返回存儲表”中指定的請求。
圖20中給出了“存儲表完成”信息的格式。“標記”字段指明是正常地返回到存儲表,或者是拒絕“返回”請求。它可以指明發(fā)生的是下述那一種情況由整個表構(gòu)成正常返回,響應(yīng)“返回存儲表”信息構(gòu)成返回,在“返回存儲表”信息中指明的具有指定尺寸的緩沖器構(gòu)成返回,或者已找到了要求的存儲,但還需要使用且不能返回。
“存儲表控制塊的地址”字段是局部處理器中的SLCB的實際地址。當(dāng)“返回存儲表”包含緩沖器的長度,且“存儲表完成”信息中緩沖器不被返回時,一個“緩沖器長度”字段包含“送回存儲表”中指定的各緩沖器的長度。
圖21中畫出了“返回存儲表”信息的格式。請求器可以指定任何具有要求的緩沖器尺寸的存儲表被返回,或者確定一個特定的被返回的存儲表。這個總線單元信息的“標記”字段指明任何具有指定緩沖器尺寸的存儲表或者一個指定的存儲表是否被返回。正如上面所描述的,這表明由“存儲表完成”總線單元信息把存儲表控制從遠程總線單元控制交給了局部總線單元控制?!靶畔⒆R別符(09)”字段確定此信息作為“返回存儲表”信息?!罢埱蟮拇鎯Ρ淼牡刂贰?ADDRESSOFREQUESTEDSTORAGELIST)字段指定被返回的存儲表的地址,如果“標記”字段表明要求一個指定的表的話。“緩沖器長度”字段指定由于這一請求被返回的緩沖器的長度,如果沒有要求指定的存儲表的話。
圖22中給出了帶有存儲表的簡化的流程圖。在此圖的右邊是具有主DMA的請求總線單元,在它下面列出了各個信息。在此圖的左邊是具有從屬DMA的服務(wù)總線單元。下述步驟1-6描述且確定了這些操作1.在具有主DMA能力的請求處理器中的總線管理通過發(fā)送一個“返回存儲表”信息來通知服務(wù)處理器它需要緩沖器。
2.服務(wù)處理器中的總線管理發(fā)送一個信息指明有一個存儲表控制塊SLCB可用于請求處理器。
3.遠程總線管理將該SLCB的全部或一部分DMA到它的存儲中。
4.請求處理器中的總線管理按要求使用這些緩沖器。
5.服務(wù)處理器中的總線管理想做某種類型的關(guān)閉,諸如一天的末尾,或者一個總線單元超過峰值負荷且沒有被返回存儲。它向請求處理器發(fā)送一個“返回存儲表”信息。
6.請求處理器中的總線管理發(fā)送一個“存儲表完成”信息,表明不再需要該SLCB了。
在圖23中,當(dāng)一個僅有從屬DMA能力的總線單元的總線管理收到該總線上的一個通訊時,它在300處檢查此通訊是否是一個存儲請求。如果是,則如塊302,304和306表示的那樣,該總線管理用眾所周知的存儲管理技術(shù)向系統(tǒng)存儲管理請求主存儲來滿足該請求。該總線管理固定住這些被準許的存儲,表明它有管理這些存儲的責(zé)任。管理責(zé)任包括對這些存儲進行讀和寫,并在某種級別上保證其它總線單元不獨立地使用這些存儲。然后,它將這些存儲分塊成要求的數(shù)目,建立存儲表控制塊,將連接于請求這些存儲的總線單元的指針保持在這些被準許的塊的存儲地址處。然后,總線管理發(fā)送存儲表可用信息給請求總線單元,并在308處繼續(xù)處理。
回到方塊300,如果該總線通訊不是存儲請求,在310處檢查此通訊是否為一個存儲表完成信息。如果是,那末在312處,指明的存儲被返回給系統(tǒng)存儲管理,指向返回該存儲管理的總線單元的指針被刪除。在314處繼續(xù)處理。如果在方塊310處,沒有檢測到存儲表完成信息,在316處繼續(xù)處理。
如果只具有從屬DMA的總線單元的總線管理收到一個請求,表明主處理器本身要求返回存儲,則應(yīng)在方塊330處進入圖24給出的流程??梢杂捎诓僮鲉T的關(guān)閉指令或某種類型的日時中斷產(chǎn)生這種請求。在任何情況下,總線管理一接到返回存儲請求就檢查由于被其它總線管理的管理所固定住的存儲,并選擇被返回的存儲。該總線管理可保留某種類型的關(guān)于使用量的統(tǒng)計數(shù)字,或者該請求可指定要關(guān)閉的裝置類型。在這種方式下,總線單元在存儲中選擇要求被返回的那些存儲。在332處,向期望的總線單元發(fā)送一個總線信息來返回這些存儲。如圖23的流程中指明的那樣,該總線單元將返回一個“存儲表完成”信息作為應(yīng)答。然后在334處繼續(xù)處理。
還可用遠程存儲管理機構(gòu)來平衡系統(tǒng)的品質(zhì)。如果一個總線單元沒有適當(dāng)?shù)闹鞔鎯?,它可以申請使用主處理器的主存中的緩沖器。給定了適當(dāng)?shù)目偩€品質(zhì),可以提高總線單元的品質(zhì)。系統(tǒng)可以容易地跟蹤其它總線單元的品質(zhì),并為那些響應(yīng)工作請求的總線單元分配更多的遠程存儲。如果太多的主存儲是遠程管理的,則此分配量被主處理器品質(zhì)的潛在下降所抵消。
反向流程正如上面所討論的,正常的工作請求流程是從主處理器56到I/O處理器66的。它們包含的工作可以是,向耦合于I/O處理器66的二級存儲裝置讀寫數(shù)據(jù)。或通過I/O處理器66啟動通訊。對于這種關(guān)系,理想的組合是一個具有主DMA能力的I/O處理器66和一個具有從屬DMA能力的主處理器56。I/O處理器作為服務(wù)器不中斷主處理器地進行數(shù)據(jù)傳送。
往往I/O處理器66會有一個向主處理器發(fā)出工作請求的進程。與此工作相聯(lián)系,產(chǎn)生了數(shù)據(jù)的反向流動。由于主處理器不能從I/O處理器DMA數(shù)據(jù),所以I/O處理器利用前面討論過的信息來使用在主處理器的主存儲中得到的遠程緩沖器。
現(xiàn)在參考圖25來說明反向流程的一個例子。該圖的右側(cè)給出了一個具有主DMA能力和I/O處理器66的請求總線單元以及所完成的步驟,而該圖的左側(cè)給出了一個具有從屬DMA能力和主處理器56的服務(wù)總線單元以及所完成的步驟。
下面說明這些標號為1-10的步驟1.請求處理器把在進程到進程謂詞接口處的一個請求發(fā)送給圖2中IPCF74所代表的進程到進程機構(gòu)。
2.若總線管理88在主處理器的主存58中還沒有一個適當(dāng)尺寸的緩沖器,它就將得到一個,并通過總線硬件92啟動一個主DMA操作,把該請求送進服務(wù)總線單元50中的遠程存儲中。
3.請求總線管理88把數(shù)據(jù)DMA入緩沖器。
4.然后,總線管理88把此RRCBDMA入服務(wù)器存儲中的緩沖器中。這時,RRCB使用了該請求的服務(wù)器存儲中的地址和在步驟2與3中被DMA入服務(wù)總線單元的遠程存儲中的那些數(shù)據(jù)。
5.請求處理器66中的總線管理88向服務(wù)處理器發(fā)送一個“運行開始”總線單元信息,指明RRCB和數(shù)據(jù)是在服務(wù)器存儲中。在發(fā)出“運行開始”信息的時候,與使用進程到進程機構(gòu)的進程相聯(lián)系的所有數(shù)據(jù)已經(jīng)被DMA入到服務(wù)器存儲中。
6.進程到進程機構(gòu)72把該請求傳送給服務(wù)進程。
7.服務(wù)進程請求處于服務(wù)器的存儲中的必要的數(shù)據(jù)。在處理“運行開始”信息時,總線管理88仍控制著這些緩沖器,但總線管理86也存取這些緩沖器。服務(wù)器進程的總線管理86把數(shù)據(jù)送入主存58中對服務(wù)進程能夠存取的一個區(qū)域中。
8.當(dāng)服務(wù)進程完成了請求的操作時,用IPCF謂詞來告訴進程到進程機構(gòu)72。
9.服務(wù)處理器56中的總線管理86發(fā)出一個帶有狀態(tài)信息的“運行結(jié)束”信息。這把總線管理86放入緩沖器中的任何響應(yīng)都告訴了請求處理器66中的總線管理88。在收到這些響應(yīng)以后,總線管理88釋放這些緩沖器以備以后使用,并向請求進程表明所請求的操作已經(jīng)完成。
10.然后,進程到進程機構(gòu)74通知請求進程操作已經(jīng)完成。
用信號信息的反向流程圖26中給出了一個“信號”(Signal)總線單元信息的格式?!靶盘枴笨偩€單元信息由一個總線管理產(chǎn)生,并用來向另一處理器中的一個進程傳送少量信息。在傳送數(shù)據(jù)時一次使用直到4個字符。發(fā)送“信號”的總線管理不要求信號總線單元信息的接收者發(fā)出響應(yīng)。在該請求器和一個服務(wù)進程之間的較高級別協(xié)議中也可以有一個響應(yīng),但在該較佳實施例中總線管理不要求任何東西?!靶盘枴钡陌l(fā)送者不能保證服務(wù)總線單元收到它了。對“信號”信息不存在流程控制機構(gòu)。沒有總線管理機構(gòu)通知發(fā)送者“信號”無法執(zhí)行,因為,例如,收到的進程沒能得到存儲。因為不要求響應(yīng),使它具有靈活性。和工作請求相反,使用信號信息的花費較少。不要求RRCB。
“信號”包括兩兩保留區(qū)域,在較佳實施例中它們是零?!?X”字段的類型用來定義總線單元信息的類型。在此字段中的“2”定義這是一個“信號”總線單元信息。“X”指定“用戶數(shù)據(jù)”(USERDATA)字段的內(nèi)容,下面是“信號”信息的類型20-注意(提醒接收者注意)21-立即數(shù)-1字節(jié)22-立即數(shù)-2字節(jié)23-立即數(shù)-3字節(jié)24-立即數(shù)-4字節(jié)25-立即錯誤數(shù)據(jù)
26-類型1的立即用戶數(shù)據(jù)27-類型2的立即用戶數(shù)據(jù)28-類型3的立即用戶數(shù)據(jù)29-類型4的立即用戶數(shù)據(jù)2A-2F-保留給以后用信息的“用戶數(shù)據(jù)”字段包含了用戶定義的數(shù)據(jù),亦即立即數(shù)。該字段中的立即數(shù)最好保證是正確的?!澳繕俗R別符”(TARGETCID)字段為此總線單元信息確定目標進程。
使用另一種“信號”提供一個機構(gòu),來逆轉(zhuǎn)傳遞工作請求和相關(guān)數(shù)據(jù)的責(zé)任,此傳遞過程原來是從具有主DMA的總線單元出發(fā)的,現(xiàn)在更改為由具有主DMA的總線單元來傳送。如圖27中所示,對另一種遠程存儲使用了“信號”一種不同形式。這是反向流程的一種容易實現(xiàn)的版本,但它不提供反向流程的遠程存儲版本所提供的那種保證。
當(dāng)一個I/O總線單元需要向主總線單元中的一個可靠性/可用性/可維護性(RAS)類型的進程啟動一個請求時,它發(fā)送一個具有圖27中給出的格式的“信號”信息。定義“用戶數(shù)據(jù)”為一個兩字節(jié)的“長度”(LENGTH)字段和一個兩字節(jié)的“偏置”(OFFSET)字段,“長度”字段指明將要接收的記錄的長度?!捌谩弊侄问怯蒊/O總線單元指定的一個編碼值,且用作一個與“信號”信息有關(guān)的跟蹤機構(gòu),此信息帶有根據(jù)三種類型的“信號”信息之一產(chǎn)生的工作請求。下面定義相應(yīng)于I/O總線單元工作請求的這些類型26-類型1的請求-錯誤數(shù)據(jù)27-類型2的請求-資源數(shù)據(jù)
28-類型3的請求-測試數(shù)據(jù)可以容易地確定其它的類型。
RAS型進程從I/O總線單元檢索“類型請求”(TyBeRequest)。它返回該請求中的“信號類型”,“偏置”和“長度”字段的值。I/O總線單元返回確認過的“類型請求”指令和相關(guān)的數(shù)據(jù)以響應(yīng)此請求。這些“類型請求”的每個格式就好象它已經(jīng)用以前的反向流程方法或正常流程發(fā)送過了。
使用這種反向流程方法的一個例子是檢索錯誤數(shù)據(jù)。接受此“信號”的主處理器負責(zé)發(fā)送工作請求去檢索指令字節(jié)和相關(guān)數(shù)據(jù)。下列工作請求字段包含給出的“信號”信息字段。
“目標”(TARGET)-“信號”類型“地址”(ADDRESS)-緩沖器“偏置”“最大值”(GETMAX)-“信號”長度然后,I/O總線單元將以FIFO次序為相應(yīng)于類型1,2或3請求的進程從所要求的隊列之一返回下一個可用項目。
“長度”字段指定I/O總線單元將返回的數(shù)據(jù)的長度。例如,在較佳實施例中,對于類型1,2和3的請求,由“信號”發(fā)送類型給定的可以被返回的最大長度分別是268,272或48。然而,I/O總線單元中的工作請求的實際長度是以字節(jié)計的,且相關(guān)的數(shù)據(jù)可能相當(dāng)少。I/O總線單元工作請求指定相關(guān)數(shù)據(jù)的實際長度。
因為“信號”信息可能由于系統(tǒng)排隊限制或錯誤條件而丟失。因而推薦一個管理這些信息的最小的系統(tǒng)隊列尺寸。為了在大多數(shù)情況下不丟失“信號”信息,對第1類請求至少有17個信號,對第2類請求是24個,對第3類請求是16個。這些數(shù)目完全依賴于總線單元資源支持的特定類型,并且在這里是作為一個較佳實施例對于直接存取存儲控制器總線單元給出的。
給出的這些數(shù)目是含有I/O總線單元工作請求的I/O內(nèi)部緩沖器中的項目的數(shù)目。若沒有從這些帶有主處理器工作請求的緩沖器中清除這些項目,并且這些緩沖器是滿的,則將發(fā)送一個錯誤數(shù)據(jù)類型?!靶盘枴钡摹捌谩敝涤米饕环N跟蹤方法以確定“信號”是否丟失了。含有一個非期望的偏置值的主處理器工作請求表明信號信息的丟失。因而,將由I/O總線單元來重新發(fā)送信號信息。對主處理器的請求的響應(yīng)包含一個錯誤碼,指明主總線單元應(yīng)該拒絕該請求。同樣的跟蹤方法還提供一種相互關(guān)系去處理已經(jīng)發(fā)送了要求的記錄的定時條件。
主處理器工作請求包含下列信息字節(jié)說明0-1指令長度2指令限定詞3指令碼=X′23′4修改量位0-1-存取方式=′00′位2-7-保留地址字段是從指定目標的偏置。
位2-7-保留5-7保留字節(jié)說明8-15地址偏置-帶有前導(dǎo)零的右邊對齊16-23目標位16信號類型位17-23保留24-27活動識別符=總線單元資源識別符28-31GETMAX=信號長度當(dāng)從I/O總線單元返回對主處理器的請求的響應(yīng)時,它含有說明與該請求相關(guān)的數(shù)據(jù)的下述信息字節(jié)說明0-1指令長度2指令限定詞3指令碼(與信號類型相關(guān))4修改量5-(n-1)指令正文(n=指令長度)n-L數(shù)據(jù)(L-描述符中數(shù)據(jù)的長度)用DMA請求的反向流程反向數(shù)據(jù)流程的控制的另一個方法是使用一對在圖28和圖29中給出的總線單元信息。服務(wù)總線單元為了請求一個DMA進入它的存儲,向請求器發(fā)送一個總線單元信息“DMA請求”(DMAReq)(圖28)。從請求總線單元來的總線單元信息“DMA完成”(DMAComp)(圖29)指明DMA操作已完成。該請求總線單元,具有主DMA的總線單元,為服務(wù)總線單元完成了一項服務(wù)。在請求總線單元中的總線管理不知道哪個CID引起了這個特定的服務(wù)請求。
一個例子是服務(wù)總線單元中的總線管理收到了一個“運行開始”總線單元信息。然后它發(fā)送一個指定請求器存儲中的RRCB地址以及它在服務(wù)器存儲中的位置的“DMA請求”總線單元信息。該請求總線單元將完成此服務(wù),且由一個“DMA完成”總線單元信息通知其它總線單元該操作已完成。接受該DMA請求的總線管理完成所要求的服務(wù),而不知道該服務(wù)的實際請求者是誰。它正在為其它“總線傳輸機構(gòu)”服務(wù)。
該“DMA請求”有下列字段RSVD被保留且必須是零。
“長度”是將要以進行“DMA請求”操作而傳送的數(shù)據(jù)的長度。
“DMA識別符”(DMAID)是用于此“DMA請求”的識別符,并且必須在“DMA完成”總線單元信息中被返回,以確認該特定的DMA請求。在這個DMA請求和DMA完成總線單元信息之外,此識別符沒有意義。
“類型識別符(OX)”用來定義總線單元信息的類型以及DMA的方向。一個“DMA請求”有兩個可能的16進制值′03′-從請求處理器到服務(wù)處理器′04′-從服務(wù)處理器到請求處理器在請求處理器中的“數(shù)據(jù)地址”(DATAAddress)字段是請求器存儲中數(shù)據(jù)傳送的起始地址。類型字段指定數(shù)據(jù)傳送的方向。這可以是從“運行開始”總線單元信息得到的RRCB的地址,或者是從該RRCB的內(nèi)容中得到的數(shù)據(jù)字段的地址。
在服務(wù)處理器中的“數(shù)據(jù)地址”字段是在該服務(wù)器存儲中數(shù)據(jù)傳送的起始地址。類型字段指定數(shù)據(jù)傳送方向。
當(dāng)該請求器完成了所要求的DMA操作時,它通知服務(wù)器該操作已完成。在圖29中由發(fā)送一個“DMA完成”總線單元信息來做到這一點。若在服務(wù)處理器執(zhí)行該要求的DMA操作時發(fā)生了一個總線錯誤,則返回一在“總線錯誤條件”(BUSERRORCONDITION)總線單元信息,而不是一個“DMA完成”總線單元信息。
“DMA完成”總線單元信息的各字段如下一個“保留”字段必須是零。
“DMA識別符”是“DMA請求”中提供的識別符,它用于確認這一特定DMA請求的請求者。
“類型”字段(05)用來定義總線單元信息的類型。
另兩個“保留”字段必須都是零。
由“運行開始”總線單元信息開始的序列將由“運行結(jié)束”總線單元信息完成。
圖30是一個“發(fā)送請求”(SENDREQ)操作的簡化的信息流程的例子,該操作起始于一個沒有從屬DMA能力的總線單元。
1.服務(wù)進程,在這例子中是主總線單元中的一個進程,到達了在它的處理中它想要等待的那一點處。它做一個“IPCI接收隊列”(IPCIRCVQ)(這個例子假定服務(wù)器訪問接收隊列的工作請求)。由于在它的輸入隊列上沒有請求的記錄,所以目標進程進入等待狀態(tài)。
2.請求器,在這例子中是IOP中的一個進程,想要向一個PU中的服務(wù)進程發(fā)送數(shù)據(jù)。該請求進程在IPCI處做一個“IPCI發(fā)送請求”(IPCISENDREQ)。IPCF總線管理把信息從該進程變換到一個RRCB中。
3.作為請求器發(fā)出“發(fā)送請求”的一個結(jié)果,IOP中的“總線傳輸機構(gòu)”啟動總線上的操作。IOP的總線管理向主處理器發(fā)送一個“運行開始”總線單元信息。
4.主處理器中的總線管理發(fā)送一個“DMA請求”總線單元信息,它要求IOP中的總線管理向該總線單元信息指定的位置做一次DMA。
5.IOP總線管理做要求的DMA操作,它把RRCB從IOP的存儲中移到主處理器的存儲中。
6.IOP中的總線管理向主處理器發(fā)送一個“DMA完成”總線單元信息,指明要求的DMA操作已經(jīng)完成。
7.主處理器中的總線管理發(fā)送一個“DMA請求”總線單元信息,它要求IOP中的總線管理做一次從總線管理信息指定的位置開始的DMA操作。這是由主處理器總線管理所擁有的存儲。
8.IOP總線管理做要求的DMA操作,把該請求從IOP的存儲中移到主處理器的存儲中。
9.IOP中的總線管理發(fā)送一個“DMA完成”總線單元信息,指明要求的DMA操作已經(jīng)完成。若該請求少于4字節(jié),例如RRCB中的立即數(shù)據(jù),則可不要求上述3個步驟。
10.通過IPCF向適當(dāng)?shù)姆?wù)進程發(fā)送一個“標記”(NOTE)。它符合待完成的接收隊列的要求。
11.現(xiàn)在服務(wù)進程必須發(fā)送一個“IPCIRCVDTA”來指定把數(shù)據(jù)放在主處理器存儲中的什么地方。
12.主處理器中的總線管理發(fā)送一個“DMA請求”總線單元信息,它要求IOP中的總線管理在該總線單元信息所指定的位置處做一次DMA。該地址由在IPCI處發(fā)出的“RCVDTA”來指定。
13.IOP中的總線管理做所要求的DMA操作,把用戶數(shù)據(jù)從IOP的存儲中移到主處理器的存儲中。
14.IOP中的總線管理發(fā)送一個“DMA完成”總線單元信息,指明該請求的DMA操作已經(jīng)完成。
15.服務(wù)器的“RCVDTA”是符合上述諸操作的要求的。
為傳送所有要求的數(shù)據(jù),按需要的次數(shù)重復(fù)步驟12到15。
16.請求進程,在這例子中是IOP中的一個進程,到達了在它的處理中它想要等待的那一點處。它發(fā)送一個“接收隊列”。因為在它的輸入隊列上沒有請求,所以請求進程進入等待狀態(tài)。
17.現(xiàn)在服務(wù)進程必須發(fā)送一個帶有狀態(tài)信息的“發(fā)送RSP”(SENDRSP)。
18.主處理器中的總線管理發(fā)送一個“運行結(jié)束”總線單元信息,指明要求的操作已經(jīng)完成。
19.向請求器的隊列發(fā)送一個“標記”。它滿足請求器的“接收隊列”(RCVQ)的要求。
通過使用反向流程的方法,保持進程之間通訊的、獨立于這些進程并保持這些進程的透明性的目標被保持了。事實上,還使用總線管理把IPCF層次從通訊細節(jié)中弧立了出來。使用連接群允許提高流程控制的水平,以保證把資源分配給各進程來提供有保證的最低服務(wù)級別。在討論了一些不同的較佳實施例的同時,很顯然本領(lǐng)域的熟練技術(shù)人員可以在下列權(quán)利要求范圍內(nèi)做出許多變更。
權(quán)利要求
1.控制涉及進程群之間信息的工作流程的一種方法,其中每個群屬于一個松散耦合的分布式處理器網(wǎng)絡(luò)中的一個處理器,且每個群中的各個進程分享處理器的資源,其特征為包括如下步驟;由含有某一個群中的一個請求進程的處理器向另一個群中的一個服務(wù)進程發(fā)送一個信息,啟動含有服務(wù)進程的處理器中的工作;接收信息后啟動服務(wù)處理器中的工作;在服務(wù)處理器中識別資源不夠的條件;由服務(wù)處理器向請求處理器返回一個信息,指明資源不夠;當(dāng)在該隊列中資源可用時,服務(wù)處理器向請求處理器發(fā)送一個資源可用信息;根據(jù)此資源可用信息,由請求處理器向服務(wù)處理器發(fā)送一個重新開始信息;以及將信息排隊,以便僅在從請求處理器收到重新開始信息后,在服務(wù)處理器中啟動從請求處理器接收的工作。
2.一個用于在松散耦合的分布式處理器網(wǎng)絡(luò)中的總線單元的通訊管理機構(gòu),其中各總線單元是由一條總線耦合在一起的,此通訊管理機構(gòu)方便了分別屬于目標和源總線單元的各進程之間的進程到進程的通訊,其特征為在總線單元處的這種結(jié)構(gòu)包括用于接收啟動工作的信息的接收裝置,所說的信息來自源總線單元;一個與接收裝置相匹配的資源管理,所說的資源管理包括管理在總線單元上預(yù)先指定的進程群的總線單元資源的管理裝置;顯示“滿”的裝置,如果沒有適當(dāng)?shù)馁Y源可用于該群以完成該工作,則它根據(jù)啟動預(yù)先指定的一個群中的工作的信息,向源總線單元返回一個隊列滿信息;顯示“資源可用”的裝置,在資源對該群成為可用時,它向源總線單元發(fā)送一個資源可用信息;以及工作接收裝置,只要源總線單元首先提供一個重新開始信息,并且該群具有適當(dāng)資源可用,它就從源總線單元接受一個信息來啟動工作。
3.如權(quán)利要求2所述的管理結(jié)構(gòu),其特征是該資源管理進一步包括根據(jù)啟動工作請求的總線單元中的進程,向該第二總線單元發(fā)送一個啟動工作的信息的裝置。
4.如權(quán)利要求3所述的管理機構(gòu),其特征是該資源管理進一步包括存儲以前送出的啟動第二總線單元中的工作信息的儲備裝置,所說的被存儲的信息指明該第二總線單元和信息被送往的群;向該第二總線單元發(fā)送一個重新開始信息的重新開始裝置,該單元曾經(jīng)用一個隊列滿信息響應(yīng)來自該總線單元的一個啟動工作信息,所說的重新開始信息是在從第二總線單元收到一個隊列空間可用信息以后發(fā)送的;以及與上述重新開始裝置和儲備裝置相耦合的,重新發(fā)送啟動工作信息的重新發(fā)送裝置,該信息曾使第二總線單元發(fā)送一個隊列滿信息。
5.如權(quán)利要求2所述的管理機構(gòu),其特征為,該顯示“滿”裝置進一步包括監(jiān)控對每個群仍然可用的資源的裝置。
6.如權(quán)利要求5所述的管理機構(gòu),其特征為,該監(jiān)控裝置包括對每個群的一個計數(shù),該計數(shù)減少或增加取決于該群是否完成了一個工作請求或者該群是否收到了一個工作請求。
7.如權(quán)利要求6所述的管理機構(gòu),其特征為,根據(jù)該計數(shù)值與該群最大值的比較,由上述顯示“滿”裝置返回隊列滿信息。
8.如權(quán)利要求7所述的管理機構(gòu),其特征為,每個工作請求使該監(jiān)控裝置把該計數(shù)增加或減少1。
9.如權(quán)利要求7所述的管理機構(gòu),其特征為,每個工作請求包含一個該請求要求服務(wù)所需資源量的標志,并且其中監(jiān)控裝置依賴于此標志使該計數(shù)增加或減少一個量。
10.如權(quán)利要求4所述的管理機構(gòu),其特征為該資源管理進一步包括一個為儲存將由總線單元發(fā)送的工作請求的發(fā)送隊列。一個以原來發(fā)送的同樣次序排列的儲存待發(fā)送的工作請求的中間隊列,對這些請求而言,它們要用的群已經(jīng)收到了一個隊列滿信息;如果工作請求要用的群已經(jīng)收到一個隊列滿信息,則把該工作請求從發(fā)送隊列傳送給中間隊列的裝置;以及檢查儲備裝置的裝置,它確定對于已經(jīng)收到隊列滿信息的各個群,是否所有的工作請求都導(dǎo)致收到隊列滿信息。
11.如權(quán)利要求10所述的管理機構(gòu),其特征為,一旦上述檢查裝置表明它們?nèi)际盏搅岁犃袧M信息,該重新發(fā)送裝置就重新發(fā)送那些收到過隊列滿信息的工作請求,所說的重新發(fā)送裝置以它們原來發(fā)送的同樣次序來發(fā)送它們,并且,然后所說的重新發(fā)送裝置以它們原來在發(fā)送隊列中排列的同樣次序來發(fā)送中間隊列上的工作請求。
12.多處理器計算機系統(tǒng)中的一種工作請求流程控制機構(gòu),其上多個進程在一個服務(wù)驅(qū)動環(huán)境下相互進行通訊,它包括一個第一總線單元,它具有一個主存儲和執(zhí)行第一進程的裝置;一個第二總線單元,它具有一個主存儲和執(zhí)行第二進程的裝置;以及一個與所說的第一總線單元和第二總線單元相耦合的I/O總線,此I/O總線方便了該第一和第二總線單元之間的通訊;其特征為,所說的第一總線單元有一個總線管理,用來在上述第一和第二進程之間建立邏輯連接,并且將該連接與可用有限數(shù)量的第一總線單元資源的一個連接群聯(lián)系起來;所說的第二進程引發(fā)一個將由上述第一進程服務(wù)的工作請求;所說的第二總線單元有一個總線管理,用來向第一總線單元的總線管理發(fā)送一個“運行開始”信息,通知第二總線單元由第二進程引發(fā)的該工作請求,所說的總線管理接收該“運行開始”信息,并確定用來服務(wù)于該工作請求的連接群;以及在所說的第二總線單元的總線管理中確定該連接群是否有足夠的資源可用來服務(wù)于該工作請求的裝置。
13.如權(quán)利要求12所述的工作請求流程控制機構(gòu),其特征為,所說的第一總線單元包括執(zhí)行多重進程的裝置,并且其中第一總線單元的總線管理根據(jù)第一總線單元中被連接進程的特征,在至少三個連接群之間安排各個連接。
14.如權(quán)利要求13所述的工作請求流程控制機構(gòu),其特征為第一總線單元的總線管理進一步包括每個連接群的計數(shù),用于保持跟蹤在各自連接群中具有連接的進程所服務(wù)的各個工作請求;以及與該計數(shù)相耦合的裝置,用于當(dāng)一個在連接群中具有連接的進程收到一個啟動工作信息,而該連接群的計數(shù)具有超過預(yù)定數(shù)的值時,向第二總線單元發(fā)送一個隊列滿信息。
15.如權(quán)利要求14所述的工作請求流程控制機構(gòu),其特征為第一總線單元的總線管理進一步包括與上述計數(shù)相耦合的裝置,用于當(dāng)該計數(shù)低于第二個預(yù)定值時,向第二總線單元發(fā)送一個隊列空間可用信息,其中所說的發(fā)送隊列滿信息的裝置,根據(jù)在已發(fā)送了第一個隊列滿信息的連接群中具有連接的一個進程收到啟動工作信息,而連續(xù)發(fā)送隊列滿信息,直到根據(jù)隊列空間可用信息從第二總線單元收到一個重新開始排除信息為止。
16.如權(quán)利要求15所述的工作請求流程控制機構(gòu),其特征為第二總線單元的總線管理進一步包括接受隊列滿信息的裝置;確定啟動工作信息原來次序的裝置,這些信息使該連接群產(chǎn)生隊列滿信息,并且是在產(chǎn)生第一個隊列滿信息的“運行開始”信息之后發(fā)出的;在確定了原來的次序并接收到隊列空間可用信息后,對所說的連接發(fā)送一個重新開始排隊信息的裝置;以及以原來的次序向第一總線單元發(fā)送所說的啟動工作信息的裝置。
17.在由一根總線聯(lián)系起來的具有多個總線單元的多進程服務(wù)驅(qū)動工作處理系統(tǒng)中控制工作請求流程的方法,其特征在于包括下述步驟a.在處于不同總線單元上的請求和服務(wù)進程之間建立多個邏輯連接;b.將每個總線單元中的每個連接安排到多個邏輯連接群中的一個群中;c.使用與啟動工作請求相連的總線,通過邏輯連接向服務(wù)進程發(fā)送啟動工作信息;d.在總線單元處接收執(zhí)行一個進程的啟動工作信息,該進程在該啟動工作信息中被確定為該工作請求的服務(wù)者;e.確定對該啟動工作信息中被確定的服務(wù)進程有邏輯連接的連接群;f.跟蹤每個連接群服務(wù)的工作請求的數(shù)目;g.確定所收到的啟動工作信息對于確定的連接群是否超過預(yù)定的工作請求數(shù)。
18.如權(quán)利要求17所述的方法,其特征在于包括下述步驟如果對確定的連接群,工作請求的數(shù)目超過了該預(yù)定數(shù),則向含有該請求進程的總線單元發(fā)送一個隊列滿信息。
19.一種用于松散耦合的分布式處理器網(wǎng)絡(luò)中的總線單元通訊管理機構(gòu),其中各總線單元由一根總線聯(lián)系起來,該通訊管理機構(gòu)方便了屬于目標和源總線單元的各個進程之間的進程到進程的通訊,其特征為在總線單元處的該機構(gòu)包括接收啟動工作的信息的接收裝置,所說的信息來自源總線單元;一個與該接收裝置相耦合的資源管理,所說的資源管理包括對該總線單元上的預(yù)定的進程群管理總線單元資源的管理裝置;啟動裝置的信息,該裝置用來接收從缺乏手段的源總線單元來的工作,并且當(dāng)一個群由于接收該信息而使資源超出界限時則拒絕啟動工作的信息。
全文摘要
描述在服務(wù)驅(qū)動的進程到進程通訊環(huán)境中的工作請求流程。進程與總線管理之間的邏輯連接把總線單元接到I/O總線上,總線管理把這些邏輯連接分配給各連接群。每個總線單元有自己的連接群。把總線單元的資源分配給每個連接群,并用一系列總線單元信息控制工作流程,使沒有更多資源的群不再接受進一步的工作請求。重新排列被拒絕的工作請求,并在該連接群有可用資源時重新發(fā)送它們。
文檔編號G06F9/46GK1035373SQ8810780
公開日1989年9月6日 申請日期1988年11月14日 優(yōu)先權(quán)日1987年11月18日
發(fā)明者威廉·愛德·哈默, 瓦爾特·亨利·史文尼, 弗蘭里卡·約瑟夫·賽茨那 申請人:國際商用機器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1