專(zhuān)利名稱(chēng):利用門(mén)管理器維護(hù)實(shí)體順序的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)聯(lián)網(wǎng),更具體地說(shuō),本發(fā)明涉及在包含多個(gè)實(shí)體的系統(tǒng)中維護(hù)實(shí)體順序。
背景技術(shù):
計(jì)算機(jī)體系結(jié)構(gòu)一般定義計(jì)算機(jī)的各硬件單元之間的功能操作,包括信息和控制流。這種硬件單元之一是處理器或處理引擎,其包含組織為一組數(shù)據(jù)路徑的算術(shù)和邏輯處理電路。在某些實(shí)現(xiàn)中,數(shù)據(jù)路徑電路可配置為具有由一組指令定義的操作的中央處理單元(CPU)。這些指令一般存儲(chǔ)在指令存儲(chǔ)器中,并且規(guī)定在CPU上可用的一組硬件功能。
可以使用多個(gè)CPU或處理器來(lái)實(shí)現(xiàn)高性能計(jì)算機(jī),以并行執(zhí)行某些任務(wù)。對(duì)于純并行多處理器體系結(jié)構(gòu),每個(gè)處理器可以共享或獨(dú)占訪(fǎng)問(wèn)資源,例如耦合到處理器的外部存儲(chǔ)器。對(duì)外部存儲(chǔ)器的訪(fǎng)問(wèn)一般由存儲(chǔ)控制器處理,其接受來(lái)自各處理器的請(qǐng)求以訪(fǎng)問(wèn)外部存儲(chǔ)器,并且以一般由存儲(chǔ)控制器控制的順序來(lái)處理這些請(qǐng)求。某些復(fù)雜的多處理器系統(tǒng)可以使用多個(gè)存儲(chǔ)控制器,其中每個(gè)控制器被附接到獨(dú)立的外部存儲(chǔ)器子系統(tǒng)。
應(yīng)用并行多處理器體系結(jié)構(gòu)有利的場(chǎng)合包括數(shù)據(jù)通信領(lǐng)域,具體地說(shuō),用于諸如路由器或交換機(jī)之類(lèi)的中間網(wǎng)絡(luò)站或節(jié)點(diǎn)的轉(zhuǎn)發(fā)引擎。中間節(jié)點(diǎn)通過(guò)一系列端口互連通信鏈路和計(jì)算機(jī)網(wǎng)絡(luò)的子網(wǎng),使得能夠在在諸如端節(jié)點(diǎn)之類(lèi)的硬件平臺(tái)上執(zhí)行的兩個(gè)或多個(gè)軟件實(shí)體之間交換數(shù)據(jù)。這些節(jié)點(diǎn)一般通過(guò)根據(jù)預(yù)定義的協(xié)議交換離散的數(shù)據(jù)分組或幀進(jìn)行通信,預(yù)定義的協(xié)議例如是傳輸控制協(xié)議/因特網(wǎng)協(xié)議(TCP/IP)或者互連網(wǎng)絡(luò)分組交換(IPX)協(xié)議。轉(zhuǎn)發(fā)引擎常由中間節(jié)點(diǎn)用來(lái)根據(jù)各種預(yù)定義的協(xié)議處理在各端口上獲得的分組。這種處理可包括在分組存儲(chǔ)器中放置分組,其中轉(zhuǎn)發(fā)引擎可訪(fǎng)問(wèn)與該分組相關(guān)聯(lián)的數(shù)據(jù),并且針對(duì)該數(shù)據(jù)執(zhí)行各種功能,例如修改該分組的內(nèi)容。
在某些中間節(jié)點(diǎn)中,多處理器轉(zhuǎn)發(fā)引擎被組織為包括“m”行“n”列實(shí)體例如處理器或線(xiàn)程的脈動(dòng)陣列(systolic array)。在這里,每行的實(shí)體可配置為以流水線(xiàn)方式處理分組,其中行中每列實(shí)體充當(dāng)流水線(xiàn)中的一級(jí),并且對(duì)分組執(zhí)行特定的功能。例如,8×2的處理器脈動(dòng)陣列包括16個(gè)處理器,它們被組織為8行,每行包含2列,其中每行的列處理器包括2級(jí)流水線(xiàn)。
通常,脈動(dòng)陣列以這樣的方式處理分組其中分組被指派給特定的實(shí)體行,并且列中的每個(gè)實(shí)體配置為以上述方式對(duì)分組執(zhí)行功能。例如,在上述8×2陣列中,中間節(jié)點(diǎn)獲得分組,然后將分組指派給陣列中的特定處理器行。該行的第一列中的處理器可配置為將在分組中包含的目的地地址應(yīng)用到查找表來(lái)確定該分組的目的地。第二列中的處理器可配置為將該分組放置到與該目的地相關(guān)聯(lián)的輸出隊(duì)列中。
在一般的脈動(dòng)陣列配置中,特定列中的每個(gè)實(shí)體配置為在固定的時(shí)間量?jī)?nèi)執(zhí)行相同的代碼,但是具有不同的相位。在獲得分組時(shí),它們被放置在共享的資源中,例如外部存儲(chǔ)器,并且如上所述被指派給下一可用的實(shí)體行。在這種配置中,分組趨向于基于先進(jìn)先出而被中間節(jié)點(diǎn)處理,以使得在后到的分組之前到達(dá)的分組在這些后到的分組之前離開(kāi)轉(zhuǎn)發(fā)引擎。但是,由于與訪(fǎng)問(wèn)共享資源相關(guān)聯(lián)的各種事件所致的實(shí)體順序失序,后到的分組也可能在早到的分組之前離開(kāi)。
例如,在包括處理器的脈動(dòng)陣列配置中,由于與共享資源相關(guān)聯(lián)的各種存儲(chǔ)器事件,例如存儲(chǔ)器刷新周期或訪(fǎng)問(wèn)加鎖的存儲(chǔ)器位置被拒絕,處理先獲得的分組的特定行中的處理器可能延遲。這樣,處理早到的分組所花費(fèi)的時(shí)間可能比由不同行的處理器處理后獲得的分組所花費(fèi)的時(shí)間長(zhǎng),因此,后獲得的分組可能在早獲得的分組之前結(jié)束并離開(kāi)轉(zhuǎn)發(fā)引擎。
維護(hù)實(shí)體順序從而維護(hù)分組處理順序的一種方法是應(yīng)用同步機(jī)制,在脈動(dòng)陣列中的實(shí)體的分組處理期間的某些點(diǎn)處對(duì)脈動(dòng)陣列中的實(shí)體進(jìn)行同步??墒褂玫默F(xiàn)有同步機(jī)制包括所謂“邊界同步”(BSYNC)指令的專(zhuān)用指令。BSYNC指令使特定列中的實(shí)體等待(延遲),直到列中的所有處理器都已執(zhí)行了該指令。在典型的布置中,由該列實(shí)體執(zhí)行的代碼在該代碼的各個(gè)關(guān)鍵點(diǎn)處包含BSYNC指令。當(dāng)諸如處理器之類(lèi)的實(shí)體執(zhí)行BSYNC指令時(shí),處理器的硬件使該處理器延遲,直到同一列中的所有其他處理器都已執(zhí)行了它們的BSYNC指令,此刻,所有的處理器才繼續(xù)執(zhí)行它們的下一條指令。BSYNC指令用來(lái)在某些代碼邊界處同步這些實(shí)體,并且可用來(lái)防止處理后獲得的分組的實(shí)體“趕到”處理先獲得的分組的實(shí)體之前。
盡管在確保維護(hù)實(shí)體和分組處理順序方面上述技術(shù)是有效的,但是,該技術(shù)也有其缺點(diǎn)。例如,每個(gè)實(shí)體必須執(zhí)行指令以便同步并維護(hù)順序。這浪費(fèi)了可更好地用來(lái)處理分組的寶貴時(shí)間。此外,在等待較慢的實(shí)體執(zhí)行同步指令時(shí)實(shí)體被延遲。這也浪費(fèi)了寶貴的時(shí)間,并且可能進(jìn)一步降低實(shí)體的處理分組的能力。
發(fā)明內(nèi)容
本發(fā)明涉及用于維護(hù)中間網(wǎng)絡(luò)節(jié)點(diǎn)的多個(gè)實(shí)體之間的順序的有效技術(shù),這是通過(guò)確保順序訪(fǎng)問(wèn)由這些實(shí)體共享的資源實(shí)現(xiàn)的。根據(jù)該技術(shù),實(shí)體生成請(qǐng)求來(lái)訪(fǎng)問(wèn)資源。該請(qǐng)求被放置到與該實(shí)體相關(guān)聯(lián)的隊(duì)列中。每個(gè)隊(duì)列還與說(shuō)明性地代表關(guān)聯(lián)到該隊(duì)列的實(shí)體的ID相關(guān)聯(lián)。該請(qǐng)求最終到達(dá)隊(duì)列的頭部。注意,門(mén)管理器(gate manager)被提供來(lái)維護(hù)對(duì)共享資源的順序訪(fǎng)問(wèn)。就此而言,門(mén)管理器生成說(shuō)明性地代表允許訪(fǎng)問(wèn)資源的實(shí)體的ID。門(mén)管理器生成的ID被與關(guān)聯(lián)到隊(duì)列的ID相比較來(lái)確定它們是否匹配。如果匹配,則請(qǐng)求被傳送到資源,資源處理該請(qǐng)求。從資源獲得的結(jié)果(如果有的話(huà))被傳送到實(shí)體。
在說(shuō)明性實(shí)施例中,諸如處理器或執(zhí)行的線(xiàn)程之類(lèi)的實(shí)體利用資源控制器(例如,耦合到處理器和外部存儲(chǔ)器的存儲(chǔ)控制器)訪(fǎng)問(wèn)例如外部存儲(chǔ)器之類(lèi)的資源。存儲(chǔ)控制器包含門(mén)管理器,用來(lái)維護(hù)對(duì)存儲(chǔ)器的順序訪(fǎng)問(wèn)。處理器通過(guò)生成請(qǐng)求并將該請(qǐng)求傳送到耦合到存儲(chǔ)器的存儲(chǔ)控制器來(lái)訪(fǎng)問(wèn)存儲(chǔ)器。該請(qǐng)求被放置到與所述處理器相關(guān)聯(lián)的請(qǐng)求隊(duì)列。請(qǐng)求隊(duì)列被關(guān)聯(lián)到代表該處理器的ID。由處理器指定的門(mén)管理器ID被包含在請(qǐng)求中,指定在存儲(chǔ)控制器中包含的門(mén)管理器。當(dāng)請(qǐng)求到達(dá)隊(duì)列的頭部時(shí),存儲(chǔ)控制器的仲裁器確定由指定的門(mén)管理器生成的ID是否與關(guān)聯(lián)到該隊(duì)列的ID相同(匹配)。如果相同,則存儲(chǔ)控制器從隊(duì)列移除該請(qǐng)求,并且向存儲(chǔ)器發(fā)出該請(qǐng)求。存儲(chǔ)器處理請(qǐng)求,并且向存儲(chǔ)控制器返回結(jié)果(如果有的話(huà)),存儲(chǔ)控制器將這些結(jié)果傳送到處理器。
本發(fā)明的技術(shù)對(duì)現(xiàn)有技術(shù)的改進(jìn)在于在不要求干涉這些實(shí)體的部分的情況下,可以維護(hù)包含多個(gè)實(shí)體的系統(tǒng)中的實(shí)體順序。
通過(guò)結(jié)合附圖參考下面的描述,可以更好地理解本發(fā)明的上述和其他優(yōu)點(diǎn),在附圖中,相似的標(biāo)號(hào)指示相同的和功能上類(lèi)似的元素圖1是適于與本發(fā)明一起使用的計(jì)算機(jī)網(wǎng)絡(luò)的示意性框圖,該網(wǎng)絡(luò)包括附接到多個(gè)節(jié)點(diǎn)的互連的通信介質(zhì)的集合;圖2是適于與本發(fā)明一起使用的中間節(jié)點(diǎn)的高層示意性框圖;圖3是適于與本發(fā)明一起使用的陣列化處理引擎的部分示意性框圖,該陣列化處理引擎包括配置為多維脈動(dòng)陣列的對(duì)稱(chēng)多處理器系統(tǒng);圖4是適于與本發(fā)明一起使用的陣列化處理引擎的處理器集群的示意性框圖;圖5是適于與本發(fā)明一起使用的耦合到多個(gè)存儲(chǔ)控制器的處理器集群的示意性框圖;圖6是適于與本發(fā)明一起使用的門(mén)管理器選擇寄存器的示意性框圖;圖7是適于與本發(fā)明一起使用的請(qǐng)求的示意性框圖;圖8是適于與本發(fā)明一起使用的門(mén)管理器的高層示意性框圖;圖9是適于與本發(fā)明一起使用的處理器位掩碼的示意性框圖;圖10是根據(jù)本發(fā)明適于用來(lái)選擇并配置門(mén)管理器的步驟序列的流程圖;圖11是根據(jù)本發(fā)明適于用來(lái)處理請(qǐng)求的步驟序列的流程圖。
具體實(shí)施例方式
圖1是適于與本發(fā)明一起使用的計(jì)算機(jī)網(wǎng)絡(luò)100的示意性框圖。計(jì)算機(jī)網(wǎng)絡(luò)100包括連接到多個(gè)節(jié)點(diǎn)例如端節(jié)點(diǎn)110和中間網(wǎng)絡(luò)節(jié)點(diǎn)200的通信鏈路和段的集合。網(wǎng)絡(luò)鏈路和段可以包括由中間網(wǎng)絡(luò)節(jié)點(diǎn)200互連為形成計(jì)算機(jī)節(jié)點(diǎn)互連網(wǎng)絡(luò)的局域網(wǎng)(LAN)120、廣域網(wǎng)(WAN)例如因特網(wǎng)170以及WAN鏈路130。這些互連的節(jié)點(diǎn)通過(guò)根據(jù)預(yù)定義的協(xié)議組交換數(shù)據(jù)分組來(lái)進(jìn)行通信,預(yù)定義的協(xié)議組例如是傳輸控制協(xié)議/因特網(wǎng)協(xié)議(TCP/IP)和互連網(wǎng)絡(luò)分組交換(IPX)協(xié)議。
圖2是中間節(jié)點(diǎn)200的高層示意性框圖,說(shuō)明性的中間節(jié)點(diǎn)是路由器。適于與本發(fā)明一起使用的路由器的示例是可從San Jose,CA的CiscoSystems公司獲得的Cisco 10000系列因特網(wǎng)路由器。節(jié)點(diǎn)200包括多個(gè)互連的組件,這些組件包括轉(zhuǎn)發(fā)引擎300、各種存儲(chǔ)器、隊(duì)列邏輯210和網(wǎng)絡(luò)接口卡(線(xiàn)路卡)240。這些組件的操作優(yōu)選由時(shí)鐘模塊270同步控制,盡管轉(zhuǎn)發(fā)引擎300的陣列化的元件可操作配置為異步工作。在說(shuō)明性實(shí)施例中,時(shí)鐘模塊270生成例如200MHz(即,5ns時(shí)鐘周期)頻率的時(shí)鐘信號(hào),并且通過(guò)時(shí)鐘線(xiàn)路將它們?nèi)址职l(fā)到中間節(jié)點(diǎn)200的組件。
存儲(chǔ)器一般包括可由轉(zhuǎn)發(fā)引擎300尋址的隨機(jī)訪(fǎng)問(wèn)存儲(chǔ)器(RAM)存儲(chǔ)位置,以及用于存儲(chǔ)由組件和包括可實(shí)現(xiàn)本發(fā)明各個(gè)方面的程序的軟件程序訪(fǎng)問(wèn)的數(shù)據(jù)結(jié)構(gòu)的邏輯。操作系統(tǒng)一般部分駐留在存儲(chǔ)器中,并由轉(zhuǎn)發(fā)引擎300執(zhí)行,除了其他以外,操作系統(tǒng)通過(guò)調(diào)用支持在節(jié)點(diǎn)200上執(zhí)行的軟件進(jìn)程的網(wǎng)絡(luò)操作來(lái)在功能上組織節(jié)點(diǎn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)清楚,包括各種計(jì)算機(jī)可讀介質(zhì)在內(nèi)的其他存儲(chǔ)器裝置也可以用來(lái)存儲(chǔ)并執(zhí)行屬于這里所述的創(chuàng)造性技術(shù)和機(jī)制的程序指令。
緩沖和隊(duì)列單元(BQU)210被連接到分組存儲(chǔ)器220和隊(duì)列存儲(chǔ)器230,其中分組存儲(chǔ)器220配置為存儲(chǔ)分組,而隊(duì)列存儲(chǔ)器230配置為在諸如鏈表之類(lèi)的組織為隊(duì)列的數(shù)據(jù)結(jié)構(gòu)中存儲(chǔ)分組的網(wǎng)絡(luò)和鏈路層頭部。BQU 210還包括接口電路,用于利用具有仲裁器255的選擇器電路250將轉(zhuǎn)發(fā)引擎300互連到多個(gè)線(xiàn)路卡240。線(xiàn)路卡240例如可以包括異步傳輸模式(ATM)、快速以太網(wǎng)(FE)和G比特以太網(wǎng)(GE)端口,這些端口中的每個(gè)都包括可以具有信號(hào)、電和機(jī)械特性的傳統(tǒng)接口電路,以及交換電路,這些電路是用接口連接物理介質(zhì)和在該介質(zhì)上運(yùn)行的協(xié)議所需要的。
路由選擇處理器260執(zhí)行用于與轉(zhuǎn)發(fā)引擎300直接通信的傳統(tǒng)路由選擇協(xié)議。路由選擇協(xié)議一般包括在中間節(jié)點(diǎn)之間交換來(lái)基于例如目的地IP地址確定通過(guò)網(wǎng)絡(luò)的優(yōu)選路徑的拓?fù)湫畔ⅰ_@些協(xié)議提供由處理器260用來(lái)創(chuàng)建并維護(hù)轉(zhuǎn)發(fā)表的信息。這些表被加載到外部存儲(chǔ)器340作為轉(zhuǎn)發(fā)信息基礎(chǔ)(FIB)表,由引擎300用來(lái)執(zhí)行例如第2層(L2)和第3層(L3)轉(zhuǎn)發(fā)操作。當(dāng)根據(jù)IP路由選擇來(lái)對(duì)與分組相關(guān)聯(lián)的頭部進(jìn)行處理時(shí),例如引擎300通過(guò)使用包含在該頭部中的目的地IP地址索引該FIB,從而確定出向何處發(fā)送該分組。執(zhí)行轉(zhuǎn)發(fā)操作可能導(dǎo)致頭部的目的地媒體訪(fǎng)問(wèn)控制(MAC)地址被轉(zhuǎn)發(fā)引擎300重寫(xiě)來(lái)標(biāo)識(shí)分組的輸出端口。
轉(zhuǎn)發(fā)引擎300可以包括具有多個(gè)處理元件或處理器的對(duì)稱(chēng)多處理器系統(tǒng)。圖3是包括組織為多維脈動(dòng)陣列的多個(gè)處理器(TMC)450的轉(zhuǎn)發(fā)引擎300的部分示意性框圖。每個(gè)處理器450優(yōu)選是流水線(xiàn)化的處理器,除了其他以外,其包括多個(gè)算術(shù)邏輯單元(ALU)和寄存器文件,寄存器文件具有多個(gè)存儲(chǔ)由ALU處理的中間結(jié)果信息的通用寄存器。處理器450可以被陣列化為多行多列。在說(shuō)明性實(shí)施例中,處理器被陣列化為8×2陣列化配置的8行和2列,該配置被嵌入在輸入緩沖器360和輸出緩沖器380之間。但是,應(yīng)當(dāng)注意,例如4×4、4×8或8×1陣列化配置之類(lèi)的其他布置也適用于本發(fā)明。如這里所述,例如包含單個(gè)處理器的支持多線(xiàn)程執(zhí)行的系統(tǒng)也可以利用本發(fā)明的優(yōu)點(diǎn)。
轉(zhuǎn)發(fā)引擎300經(jīng)由關(guān)聯(lián)的外部存儲(chǔ)控制器375耦合到多個(gè)外部存儲(chǔ)器資源340。例如,外部存儲(chǔ)器340a經(jīng)由它的關(guān)聯(lián)存儲(chǔ)控制器375a耦合到轉(zhuǎn)發(fā)引擎300。外部存儲(chǔ)器340優(yōu)選組織為一個(gè)或多個(gè)存儲(chǔ)器條(bank),并且使用削減等待時(shí)間動(dòng)態(tài)隨機(jī)訪(fǎng)問(wèn)存儲(chǔ)器(RLDRAM)器件實(shí)現(xiàn),盡管也可以使用其他器件,例如快周期隨機(jī)訪(fǎng)問(wèn)存儲(chǔ)器(FCRAM)器件。外部存儲(chǔ)器340存儲(chǔ)非瞬逝數(shù)據(jù)(例如,轉(zhuǎn)發(fā)表、隊(duì)列),這些數(shù)據(jù)組織為一系列數(shù)據(jù)結(jié)構(gòu),在處理瞬逝數(shù)據(jù)(例如,分組)時(shí)使用。每個(gè)存儲(chǔ)控制器375包含使得能夠?qū)ζ潢P(guān)聯(lián)外部存儲(chǔ)器340中包含的存儲(chǔ)器位置進(jìn)行訪(fǎng)問(wèn)的邏輯。
特定列的處理器450耦合到特定的外部存儲(chǔ)控制器375,使得處理器450能夠共享并訪(fǎng)問(wèn)包含在耦合到控制器375的外部存儲(chǔ)器340中的數(shù)據(jù)。例如,包括列TMC0(即,處理器450a~450h)的處理器450耦合到外部存儲(chǔ)控制器375a,其使得這些處理器中的每個(gè)都能夠共享并訪(fǎng)問(wèn)在外部存儲(chǔ)器340a中包含的數(shù)據(jù)。
某行中的處理器450,例如處理器450a和450i,組織為包含上下文存儲(chǔ)器430的集群400,其中上下文存儲(chǔ)器430配置為保持由處理器450處理的上下文信息(例如,分組頭部)。圖4是集群400的示意性框圖。集群的每個(gè)處理器450耦合到指令存儲(chǔ)器(IRAM)420、控制寄存器單元410和上下文存儲(chǔ)器430,指令存儲(chǔ)器420配置為存儲(chǔ)處理器450執(zhí)行的指令??刂萍拇嫫鲉卧?10包括各種通用寄存器和控制寄存器,分別用于存儲(chǔ)和控制TMC 450的操作。每個(gè)處理器450包含MMU 460,其將處理器450耦合到存儲(chǔ)控制器375,并且使處理器450能夠訪(fǎng)問(wèn)耦合到控制器375的外部存儲(chǔ)器340。
每個(gè)集群400的處理器450對(duì)通過(guò)輸入緩沖器360載入到上下文存儲(chǔ)器430中的瞬逝數(shù)據(jù)執(zhí)行操作,而每列的處理器并行操作來(lái)以不同的相位對(duì)瞬逝數(shù)據(jù)執(zhí)行基本相同的操作。通過(guò)由耦合到處理器450的數(shù)據(jù)移動(dòng)器電路470提供的數(shù)據(jù)通路440,瞬逝(上下文)數(shù)據(jù)在引擎300的輸入和輸出緩沖器之間傳遞。流過(guò)集群400的上下文數(shù)據(jù)與其他數(shù)據(jù)和指針一起被存儲(chǔ)在上下文存儲(chǔ)器430中,其中指針引用在例如外部存儲(chǔ)器340中存儲(chǔ)的由處理器450使用的數(shù)據(jù)和各種數(shù)據(jù)結(jié)構(gòu)(例如,表)。數(shù)據(jù)移動(dòng)器470包括使數(shù)據(jù)能夠從上下文存儲(chǔ)器430被傳送到輸出緩沖器380的邏輯。
本發(fā)明涉及用于維護(hù)實(shí)體例如處理器450之間的順序的有效技術(shù),這是通過(guò)確保順序訪(fǎng)問(wèn)由實(shí)體共享的資源實(shí)現(xiàn)的,例如存儲(chǔ)器340。根據(jù)該技術(shù),生成請(qǐng)求來(lái)訪(fǎng)問(wèn)資源。該請(qǐng)求被放置到與實(shí)體相關(guān)聯(lián)的隊(duì)列中。每個(gè)隊(duì)列還與說(shuō)明性地代表關(guān)聯(lián)到該隊(duì)列的實(shí)體的ID相關(guān)聯(lián)。該請(qǐng)求最終到達(dá)隊(duì)列的頭部。注意,門(mén)管理器被提供來(lái)維護(hù)對(duì)共享資源的順序訪(fǎng)問(wèn)。就此而言,門(mén)管理器生成說(shuō)明性地代表允許訪(fǎng)問(wèn)資源的實(shí)體的ID。門(mén)管理器生成的ID被與關(guān)聯(lián)到隊(duì)列的ID相比較來(lái)確定它們是否匹配。如果匹配,則請(qǐng)求被傳送到資源,資源處理該請(qǐng)求。從資源獲得的結(jié)果(如果有的話(huà))被傳送到實(shí)體。
圖5是耦合到多個(gè)外部存儲(chǔ)控制器375的集群400的示意性框圖。每個(gè)存儲(chǔ)控制器375包含耦合到仲裁器550的多個(gè)請(qǐng)求隊(duì)列560。每個(gè)說(shuō)明性的請(qǐng)求隊(duì)列560是先進(jìn)先出(FIFO)隊(duì)列,其與處理器450相關(guān)聯(lián),并且配置為保持從處理器450傳送來(lái)的請(qǐng)求。此外,每個(gè)請(qǐng)求隊(duì)列560被關(guān)聯(lián)到說(shuō)明性地代表與隊(duì)列560相關(guān)聯(lián)的處理器450的標(biāo)識(shí)符(ID)。仲裁器550包含實(shí)現(xiàn)傳統(tǒng)仲裁策略的傳統(tǒng)邏輯,用于選擇隊(duì)列560并對(duì)在所選隊(duì)列560的頭部的請(qǐng)求進(jìn)行處理。仲裁器550包含門(mén)管理器800,其配置為生成標(biāo)識(shí)符(ID),由仲裁器550用來(lái)根據(jù)本發(fā)明的技術(shù)對(duì)在隊(duì)列560頭部處的請(qǐng)求進(jìn)行處理。
每個(gè)處理器450(圖4)說(shuō)明性地包含門(mén)管理器(MGR)選擇寄存器600,其被處理器450配置為指定(選擇)與處理器450相關(guān)聯(lián)的一個(gè)或多個(gè)門(mén)管理器800。圖6是適于與本發(fā)明一起使用的門(mén)管理器選擇寄存器600的示意性框圖。寄存器600包含門(mén)管理器字段620a~620c,說(shuō)明性的門(mén)管理器字段中的每個(gè)是與特定門(mén)管理器800相關(guān)聯(lián)的1位字段,并且保持將該門(mén)管理器關(guān)聯(lián)到處理器的值。例如,字段620a~620c分別保持將處理器450關(guān)聯(lián)到門(mén)管理器A~C的值。通過(guò)說(shuō)明性地將其在字段620中的對(duì)應(yīng)位斷言為例如1,從而門(mén)管理器800被關(guān)聯(lián)到處理器450。例如,斷言在字段620a和620c中包含的位指定門(mén)管理器A和C被關(guān)聯(lián)到處理器450。門(mén)管理器選擇寄存器600的內(nèi)容經(jīng)由總線(xiàn)530被傳送到耦合到處理器450的存儲(chǔ)控制器375。因此,例如在處理器450a~450h中包含的門(mén)管理器選擇寄存器600的內(nèi)容經(jīng)由總線(xiàn)530a被傳送到外部存儲(chǔ)控制器375a。
處理器450通過(guò)生成請(qǐng)求并將該請(qǐng)求傳送到與存儲(chǔ)器相關(guān)聯(lián)的存儲(chǔ)控制器375來(lái)訪(fǎng)問(wèn)外部存儲(chǔ)器340。圖7是適于與本發(fā)明一起使用的請(qǐng)求700的示意性框圖。請(qǐng)求700包含存儲(chǔ)器操作字段710、門(mén)管理器標(biāo)識(shí)符(ID)字段720和地址字段730。存儲(chǔ)器操作字段710和地址字段730分別保持代表要被執(zhí)行來(lái)訪(fǎng)問(wèn)存儲(chǔ)器的存儲(chǔ)器操作(例如,讀或?qū)?的值和其中該操作要被執(zhí)行的存儲(chǔ)器地址。門(mén)管理器ID字段720除了其他以外保持代表要用來(lái)處理請(qǐng)求的門(mén)管理器800的值。作為說(shuō)明,字段720是2位的字段,其保持0到3之間的值,其中0指示沒(méi)有門(mén)管理器要被使用,并且非0值(例如,1到3)指定(選擇)特定的門(mén)管理器800。例如,在門(mén)管理器ID字段720中包含值1的請(qǐng)求700指示門(mén)管理器A要被用來(lái)處理請(qǐng)求700。類(lèi)似地,在字段720中包含值0的請(qǐng)求700指示沒(méi)有門(mén)管理器要被用來(lái)處理請(qǐng)求700。
圖8是適于與本發(fā)明一起使用的門(mén)管理器800的示意性框圖。門(mén)管理器800包含入口計(jì)數(shù)邏輯820、處理器位掩碼900和處理器標(biāo)識(shí)符(ID)生成器邏輯850。入口計(jì)數(shù)邏輯820包括入口計(jì)數(shù)822和滾動(dòng)計(jì)數(shù)器(rollover counter)824。入口計(jì)數(shù)822保持作為在下述特定列中的處理器數(shù)目的計(jì)數(shù)的值,在該列中,已在它們的門(mén)管理器選擇寄存器600指定(選擇)了門(mén)管理器800。滾動(dòng)計(jì)數(shù)器824是傳統(tǒng)的滾動(dòng)計(jì)數(shù)器,其說(shuō)明性地生成從1到由入口計(jì)數(shù)822所代表的處理器的數(shù)目的值。
說(shuō)明性的處理器位掩碼900是8位位掩碼,其指示列中的特定處理器是否已在該處理器的門(mén)管理器選擇寄存器600中指定(選擇)了門(mén)管理器。圖9是適于與本發(fā)明一起使用的處理器位掩碼900的示意性框圖。每個(gè)處理器450由指示該處理器是否已指定了門(mén)管理器800的1位字段920說(shuō)明性地代表。例如,在門(mén)管理器800a中包含的位掩碼900的字段P0920a、P1 920b、P2 920c和P7 920h分別代表(對(duì)應(yīng)于)處理器450a、450b、450c和450h,并且指示那些處理器是否已在它們的門(mén)管理器選擇寄存器600中指定了門(mén)管理器800a。作為說(shuō)明,字段920中的值1指示該處理器450已指定了門(mén)管理器800,而值0則指示處理器450尚未指定門(mén)管理器800。
處理器ID生成器邏輯850將從滾動(dòng)計(jì)數(shù)器824生成的值與處理器位掩碼900組合來(lái)生成代表處理器450的標(biāo)識(shí)符(ID)。具體地說(shuō),邏輯850獲得滾動(dòng)計(jì)數(shù)器824生成的值,將所生成的值應(yīng)用到處理器位掩碼900來(lái)確定與所生成的值相關(guān)聯(lián)的處理器450,并且生成代表處理器450的ID。所生成的ID被傳送到仲裁器550。
例如,假設(shè)處理器450a、450b和450h在它們的門(mén)管理器選擇寄存器600中指定門(mén)管理器800a,并且每個(gè)處理器的門(mén)管理器選擇寄存器600的內(nèi)容被傳送到存儲(chǔ)控制器375a。門(mén)管理器800a獲得所傳送的內(nèi)容,并且將其入口計(jì)數(shù)邏輯820配置為生成對(duì)應(yīng)于處理器450a、450b和450h的計(jì)數(shù)值1、2和3。另外,門(mén)管理器800a配置其處理器位掩碼900,通過(guò)說(shuō)明性地將其處理器位掩碼900中的位P0 920a、P1 920b和P7 920h設(shè)置為1來(lái)代表這些處理器。現(xiàn)在假設(shè)滾動(dòng)計(jì)數(shù)器824生成代表處理器450h的值3。處理器ID生成器邏輯850將該值應(yīng)用到處理器位掩碼900,并且確定出計(jì)數(shù)器824生成的值對(duì)應(yīng)于處理器450h。即,處理器ID生成器邏輯850通過(guò)檢查處理器位掩碼900,說(shuō)明性地確定出處理器450h是從已在其門(mén)管理器選擇寄存器600中選擇了門(mén)管理器800a的位P0 920a起的第三個(gè)處理器。然后,邏輯850生成代表處理器450h的ID,該ID被傳送到仲裁器550。
如上所述,處理器450利用請(qǐng)求700訪(fǎng)問(wèn)存儲(chǔ)器340。具體地說(shuō),處理器450通過(guò)生成請(qǐng)求700,并且將請(qǐng)求700傳送到耦合到存儲(chǔ)器340的適當(dāng)?shù)耐獠看鎯?chǔ)控制器375,從而訪(fǎng)問(wèn)存儲(chǔ)器340。存儲(chǔ)控制器375將請(qǐng)求700放置在與處理器450相關(guān)聯(lián)的隊(duì)列560的結(jié)束處(尾部)。
最終,請(qǐng)求700到達(dá)隊(duì)列560的頂部(頭部),然后仲裁器550處理該請(qǐng)求。具體地說(shuō),仲裁器550實(shí)現(xiàn)了以例如循環(huán)賽(round robin)方式“選舉”隊(duì)列560的傳統(tǒng)選舉算法,選擇出包含該請(qǐng)求的隊(duì)列560,并且確定該請(qǐng)求700在所選出的隊(duì)列560的頭部。然后,仲裁器550處理請(qǐng)求700,包括檢查該請(qǐng)求的門(mén)管理器ID字段720的內(nèi)容,并且確定是否已指定了門(mén)管理器800。如果沒(méi)有指定,則從隊(duì)列移除請(qǐng)求,并且將其傳送到耦合到存儲(chǔ)控制器375的外部存儲(chǔ)器340。否則,仲裁器550確定由指定的門(mén)管理器800生成的ID是否與關(guān)聯(lián)到隊(duì)列560的ID相同。如果相同,則仲裁器550從隊(duì)列560移除請(qǐng)求700,并且將其傳送到耦合到存儲(chǔ)控制器375的外部存儲(chǔ)器340。否則,仍將請(qǐng)求700留在隊(duì)列560的頭部。
當(dāng)仲裁器550從隊(duì)列560向存儲(chǔ)器340傳送請(qǐng)求700時(shí),它向入口計(jì)數(shù)邏輯820發(fā)送信號(hào)來(lái)更新滾動(dòng)計(jì)數(shù)器824。然后,邏輯850基于更新的計(jì)數(shù)器的值生成ID,如上所述。例如,假設(shè)滾動(dòng)計(jì)數(shù)器824中的針對(duì)門(mén)管理器800a的值為1,并且包含與門(mén)管理器800a相關(guān)聯(lián)的門(mén)管理器ID的請(qǐng)求在隊(duì)列560a的頭部。此外,假設(shè)門(mén)管理器800a生成與關(guān)聯(lián)到隊(duì)列560a的ID相同的ID。仲裁器550(i)選舉隊(duì)列560a,(ii)確定出門(mén)管理器800a生成的ID與關(guān)聯(lián)到隊(duì)列560a的ID相同,(iii)從隊(duì)列560a移除請(qǐng)求,(iv)將請(qǐng)求700傳送到存儲(chǔ)器340a,并且(v)通知入口計(jì)數(shù)邏輯820將滾動(dòng)計(jì)數(shù)器的值更新為例如值2。然后,門(mén)管理器800基于更新后的滾動(dòng)計(jì)數(shù)器值生成ID,例如生成與關(guān)聯(lián)到處理器450b的隊(duì)列560的ID相同的ID。
如上所述,處理器450通過(guò)在其門(mén)管理器選擇寄存器600中放置適當(dāng)?shù)闹?,從而選擇門(mén)管理器800中的一個(gè)或多個(gè)。該寄存器的內(nèi)容被傳送到耦合到處理器的存儲(chǔ)控制器375,其中所選擇出的門(mén)管理器800獲得該內(nèi)容,并且如上所述配置入口計(jì)數(shù)邏輯820和處理器位掩碼900。圖10是根據(jù)本發(fā)明的技術(shù)可用來(lái)配置入口計(jì)數(shù)邏輯820和處理器位掩碼900的步驟序列的流程圖。該序列從步驟1005開(kāi)始,然后前進(jìn)到步驟1020,在該步驟中,諸如處理器450之類(lèi)的實(shí)體通過(guò)如上所述在門(mén)管理器選擇寄存器600中放置適當(dāng)?shù)闹祦?lái)選擇一個(gè)或多個(gè)門(mén)管理器800。例如,通過(guò)說(shuō)明性地在其門(mén)管理器選擇寄存器600中放置值5,處理器450a選擇門(mén)管理器800a和800c。在步驟1030中,門(mén)管理器選擇寄存器600的內(nèi)容被傳送到耦合到處理器450的外部存儲(chǔ)控制器375,該控制器然后將該寄存器600的內(nèi)容傳送到門(mén)管理器800。這樣,在上述示例中,處理器450a的門(mén)管理器選擇寄存器600的內(nèi)容例如5被傳送到外部存儲(chǔ)控制器375a,該控制器將該內(nèi)容傳送到門(mén)管理器800a、800b和800c。在步驟1040中,每個(gè)門(mén)管理器800基于所傳送來(lái)的門(mén)管理器選擇寄存器600的內(nèi)容更新它們的入口計(jì)數(shù)822和處理器位掩碼900。這樣,在上面的示例中,通過(guò)例如將它們的入口計(jì)數(shù)822增1,并且將它們的為掩碼中的字段P0 920a設(shè)置為1,門(mén)管理器800a和800c更新了它們的入口計(jì)數(shù)822和處理器位掩碼900,以反映出處理器450a的門(mén)管理器選擇寄存器600的內(nèi)容。在步驟1050中,每個(gè)門(mén)管理器800如上所述使用處理器位掩碼900和入口計(jì)數(shù)邏輯820來(lái)生成ID。該序列在步驟1095處結(jié)束。
圖11是根據(jù)本發(fā)明的技術(shù)可用來(lái)處理請(qǐng)求700的步驟序列的流程圖。該序列開(kāi)始于步驟1105,并且前進(jìn)到步驟1110,其中與實(shí)體例如處理器450相關(guān)聯(lián)的請(qǐng)求700被生成來(lái)訪(fǎng)問(wèn)資源,例如存儲(chǔ)器340。所生成的請(qǐng)求700從實(shí)體被傳送到與資源相關(guān)聯(lián)的資源控制器,例如耦合到存儲(chǔ)器340的存儲(chǔ)控制器375(步驟1112)。在步驟1115中,資源控制器將請(qǐng)求700放置到與實(shí)體相關(guān)聯(lián)的請(qǐng)求隊(duì)列560中。在步驟1120中,請(qǐng)求到達(dá)隊(duì)列560的頭部。仲裁器550以上述方式選舉隊(duì)列560,選擇出包含請(qǐng)求700的隊(duì)列560,并且檢查該請(qǐng)求700的門(mén)管理器字段720來(lái)確定該請(qǐng)求700是否指定了門(mén)管理器(步驟1122~1130)。如果未指定,則該序列前進(jìn)到步驟1140。否則,該序列前進(jìn)到步驟1135,在該步驟中,仲裁器550確定在請(qǐng)求700中指定的門(mén)管理器生成的標(biāo)識(shí)符(ID)是否與關(guān)聯(lián)到隊(duì)列560的ID相同。如果不相同,則仲裁器以上述方式選擇下一個(gè)隊(duì)列560,然后返回步驟1125。
否則,序列前進(jìn)到步驟1140,在該步驟中,資源控制器從隊(duì)列560移除請(qǐng)求700,并且將請(qǐng)求700傳送到資源。在步驟1142中,資源控制器通知門(mén)管理器請(qǐng)求已被傳送到資源,并且門(mén)管理器以上述方式生成下一個(gè)ID。資源處理請(qǐng)求700,并且如果有結(jié)果的話(huà)用該結(jié)果向資源控制器作出響應(yīng)(步驟1145)。例如,如果請(qǐng)求的存儲(chǔ)器操作字段710指定了讀操作,則存儲(chǔ)器340處理該請(qǐng)求,包括用從下述位置讀取的(返回)數(shù)據(jù)作出響應(yīng),所述位置是在該請(qǐng)求的地址字段730中表示出的。此外,如果該請(qǐng)求的存儲(chǔ)器操作是寫(xiě)操作,則存儲(chǔ)器340處理該請(qǐng)求但不響應(yīng)。在步驟1150中,如果存在從資源獲得的結(jié)果的話(huà),則資源控制器將這些結(jié)果傳送給實(shí)體。該序列結(jié)束于步驟1195。
盡管本發(fā)明的上述實(shí)施例將本發(fā)明描述為用在包含多個(gè)門(mén)管理器的系統(tǒng)中,但是這不是要限制本發(fā)明。相反,使用單個(gè)門(mén)管理器的系統(tǒng)也能利用本發(fā)明的技術(shù)。此外,本發(fā)明的上述實(shí)施例將本發(fā)明描述為用在包含一個(gè)或多個(gè)作為資源的存儲(chǔ)器的系統(tǒng)中。但是,這也不是要限制本發(fā)明。相反,本發(fā)明的技術(shù)可以被應(yīng)用到由多個(gè)實(shí)體共享的其他類(lèi)型的資源,例如輸入和/或輸出設(shè)備。
如上所述,支持多線(xiàn)程執(zhí)行的系統(tǒng)可以利用本發(fā)明的技術(shù)。在這里,本發(fā)明可以整個(gè)或部分實(shí)現(xiàn)在包括在計(jì)算機(jī)可讀介質(zhì)(例如,閃存RAM或盤(pán)文件)中存儲(chǔ)的計(jì)算機(jī)可執(zhí)行代碼的軟件中。例如,在本發(fā)明的一個(gè)實(shí)施例中,執(zhí)行線(xiàn)程來(lái)生成被傳送到資源控制器(例如,存儲(chǔ)控制器375)的請(qǐng)求700,其中資源控制器被實(shí)現(xiàn)為處理上述請(qǐng)求的軟件例程。
在本發(fā)明的其他實(shí)施例中,在處理請(qǐng)求時(shí)實(shí)體被“阻塞”執(zhí)行。例如,在本發(fā)明的實(shí)施例中,實(shí)體是執(zhí)行來(lái)生成請(qǐng)求并將該請(qǐng)求傳送到資源控制器的線(xiàn)程。在處理請(qǐng)求時(shí),線(xiàn)程執(zhí)行被阻塞,不進(jìn)一步執(zhí)行。如果請(qǐng)求包含不從資源返回結(jié)果的操作(例如,寫(xiě)操作),則在該請(qǐng)求被傳送到該資源(例如,存儲(chǔ)器)時(shí),資源控制器通知在系統(tǒng)中包含的調(diào)度器。如果請(qǐng)求包含從資源返回結(jié)果的操作(例如,讀操作),則資源控制器將結(jié)果傳送到線(xiàn)程,并通知調(diào)度器。當(dāng)調(diào)度器接收到通知時(shí),它就不再阻塞線(xiàn)程,并且重調(diào)度該線(xiàn)程以執(zhí)行。
前面的描述已集中描述了本發(fā)明的特定實(shí)施例。但是,將會(huì)清楚,可以對(duì)所述實(shí)施例作出其他改變和修改,同時(shí)還保留它們的某些或全部?jī)?yōu)點(diǎn)。因此,所附權(quán)利要求的目的是覆蓋所有這種變化和修改,只要它們?cè)诒景l(fā)明的真實(shí)精神和范圍內(nèi)。
權(quán)利要求
1.一種用于在中間節(jié)點(diǎn)中維護(hù)所述中間節(jié)點(diǎn)中包含的多個(gè)實(shí)體之間的順序的方法,所述方法包括下面的步驟生成請(qǐng)求來(lái)訪(fǎng)問(wèn)由所述實(shí)體共享的資源;將所述請(qǐng)求放置到與實(shí)體相關(guān)聯(lián)的隊(duì)列中;確定由門(mén)管理器生成的標(biāo)識(shí)符是否匹配與所述隊(duì)列相關(guān)聯(lián)的標(biāo)識(shí)符;和如果匹配則向所述資源傳送所述請(qǐng)求。
2.如權(quán)利要求1所述的方法,其中所述實(shí)體是處理器。
3.如權(quán)利要求1所述的方法,其中所述實(shí)體是執(zhí)行的線(xiàn)程。
4.如權(quán)利要求1所述的方法,其中所述資源是存儲(chǔ)器。
5.如權(quán)利要求1所述的方法,其中所述中間節(jié)點(diǎn)包括多個(gè)門(mén)管理器,并且所述門(mén)管理器是所述多個(gè)門(mén)管理器中的門(mén)管理器中的一個(gè)。
6.如權(quán)利要求5所述的方法,其中所述請(qǐng)求包括門(mén)管理器標(biāo)識(shí)符,其保持指定所述多個(gè)門(mén)管理器中的門(mén)管理器的值。
7.如權(quán)利要求6所述的方法,包括下面的步驟檢查所述門(mén)管理器標(biāo)識(shí)符來(lái)確定其是否指定了門(mén)管理器;和如果未指定則向所述資源傳送所述請(qǐng)求。
8.如權(quán)利要求6所述的方法,包括下面的步驟檢查所述門(mén)管理器標(biāo)識(shí)符來(lái)確定是否指定了門(mén)管理器;如果指定了門(mén)管理器,則確定所述由所指定的門(mén)管理器生成的標(biāo)識(shí)符是否匹配所述與所述隊(duì)列相關(guān)聯(lián)的標(biāo)識(shí)符實(shí)體;和如果匹配則向所述資源傳送所述請(qǐng)求。
9.如權(quán)利要求5所述的方法,其中所述中間節(jié)點(diǎn)包括門(mén)管理器選擇寄存器,其配置為將所述多個(gè)門(mén)管理器中的一個(gè)或多個(gè)門(mén)管理器關(guān)聯(lián)到所述實(shí)體。
10.如權(quán)利要求9所述的方法,包括下面的步驟通過(guò)在所述門(mén)管理器選擇寄存器中選擇所述門(mén)管理器來(lái)將所述門(mén)管理器關(guān)聯(lián)到所述實(shí)體;和向所述門(mén)管理器傳送所述門(mén)管理器選擇寄存器的內(nèi)容。
11.如權(quán)利要求1所述的方法,包括下面的步驟從所述資源獲得結(jié)果;和向所述實(shí)體傳送所述結(jié)果。
12.如權(quán)利要求11所述的方法,包括下面的步驟阻塞所述實(shí)體進(jìn)一步執(zhí)行;和在所述結(jié)果被傳送到所述資源后不再阻塞所述實(shí)體進(jìn)一步執(zhí)行。
13.一種裝置,包括共享資源;多個(gè)實(shí)體,配置為生成請(qǐng)求來(lái)訪(fǎng)問(wèn)所述共享資源;多個(gè)隊(duì)列,其中每個(gè)隊(duì)列被關(guān)聯(lián)到特定的實(shí)體,并且配置為保持由所關(guān)聯(lián)的實(shí)體生成的請(qǐng)求;門(mén)管理器,配置為生成代表所述多個(gè)實(shí)體中的實(shí)體的標(biāo)識(shí)符(ID);和資源控制器,配置為從所述多個(gè)隊(duì)列中選擇隊(duì)列,確定與所述隊(duì)列相關(guān)聯(lián)的ID是否匹配由所述門(mén)管理器生成的ID,并且如果匹配則向所述共享資源傳送在所選隊(duì)列頭部的請(qǐng)求。
14.如權(quán)利要求13所述的裝置,其中所述實(shí)體是處理器。
15.如權(quán)利要求13所述的裝置,其中所述資源是存儲(chǔ)器。
16.如權(quán)利要求13所述的裝置,其中所述資源控制器還配置為從所述資源獲取結(jié)果,并向所述實(shí)體傳送所述結(jié)果。
17.一種中間節(jié)點(diǎn),包括用于生成請(qǐng)求來(lái)訪(fǎng)問(wèn)由多個(gè)實(shí)體共享的資源的裝置;用于將所述請(qǐng)求放置到與所述多個(gè)實(shí)體中的實(shí)體相關(guān)聯(lián)的隊(duì)列中的裝置;用于確定由門(mén)管理器生成的標(biāo)識(shí)符(ID)是否匹配與所述隊(duì)列相關(guān)聯(lián)的ID的裝置;和用于如果由所述由門(mén)管理器生成的ID匹配與所述隊(duì)列相關(guān)聯(lián)的ID則向所述資源傳送所述請(qǐng)求的裝置。
18.如權(quán)利要求17所述的中間節(jié)點(diǎn),包括用于從所述資源獲得結(jié)果的裝置;和用于向所述實(shí)體傳送所述結(jié)果的裝置。
19.如權(quán)利要求18所述的中間節(jié)點(diǎn),包括用于阻塞所述實(shí)體進(jìn)一步執(zhí)行的裝置;和用于在所述結(jié)果被傳送到所述資源后不再阻塞所述實(shí)體進(jìn)一步執(zhí)行的裝置。
20.一種包括用于在處理器中執(zhí)行的計(jì)算機(jī)可讀指令的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)可讀指令用于執(zhí)行下面的步驟生成請(qǐng)求來(lái)訪(fǎng)問(wèn)由多個(gè)實(shí)體共享的資源;將所述請(qǐng)求放置到與實(shí)體相關(guān)聯(lián)的隊(duì)列中;確定由門(mén)管理器生成的標(biāo)識(shí)符所代表的實(shí)體是否匹配與所述隊(duì)列相關(guān)聯(lián)的實(shí)體;和如果匹配則向所述資源傳送所述請(qǐng)求。
全文摘要
本發(fā)明公開(kāi)了一種技術(shù),用于維護(hù)包含在中間節(jié)點(diǎn)中的多個(gè)實(shí)體之間的順序,這是通過(guò)確保順序訪(fǎng)問(wèn)由這些實(shí)體共享的資源實(shí)現(xiàn)的。請(qǐng)求被生成來(lái)訪(fǎng)問(wèn)資源。該請(qǐng)求被放置到與實(shí)體相關(guān)聯(lián)的隊(duì)列中。該請(qǐng)求最終到達(dá)隊(duì)列的頭部。門(mén)管理器生成的標(biāo)識(shí)符被與關(guān)聯(lián)到該隊(duì)列的標(biāo)識(shí)符相比較來(lái)確定它們是否匹配。如果匹配,則請(qǐng)求被傳送到資源,資源處理該請(qǐng)求。從資源獲得的結(jié)果(如果有的話(huà))被傳送到實(shí)體。
文檔編號(hào)H04L12/56GK1781079SQ200480011303
公開(kāi)日2006年5月31日 申請(qǐng)日期2004年6月10日 優(yōu)先權(quán)日2003年6月11日
發(fā)明者羅伯特·E·J·杰特, 約翰·A·察納克 申請(qǐng)人:思科技術(shù)公司