两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

利用有序的加鎖機(jī)制來維護(hù)諸如分組之類的項(xiàng)目的次序的制作方法

文檔序號(hào):7608971閱讀:144來源:國(guó)知局
專利名稱:利用有序的加鎖機(jī)制來維護(hù)諸如分組之類的項(xiàng)目的次序的制作方法
技術(shù)領(lǐng)域
本發(fā)明的一個(gè)實(shí)施例涉及通信和計(jì)算機(jī)系統(tǒng),尤其是路由器、分組交換系統(tǒng)、以及其他設(shè)備;更具體地說,一個(gè)實(shí)施例涉及利用有序加鎖機(jī)制來維護(hù)項(xiàng)目的次序,這可能包括在有序加鎖機(jī)制之間轉(zhuǎn)換。
背景技術(shù)
通信工業(yè)正快速改變,以適應(yīng)新興技術(shù)和日益增加的客戶需求。客戶對(duì)新應(yīng)用和現(xiàn)有應(yīng)用的更高性能的需求正驅(qū)動(dòng)通信網(wǎng)絡(luò)和系統(tǒng)提供商采用具有更快速度和更大容量(例如,更寬帶寬)的網(wǎng)絡(luò)和系統(tǒng)。在試圖實(shí)現(xiàn)這些目標(biāo)時(shí),許多通信供應(yīng)商采用的常用方法是使用分組交換技術(shù)。越來越多地公共和專用通信網(wǎng)絡(luò)利用各種分組技術(shù)(例如,因特網(wǎng)協(xié)議(IP))被構(gòu)建和擴(kuò)展。
諸如交換機(jī)或路由器之類的網(wǎng)絡(luò)設(shè)備一般基于一個(gè)或多個(gè)標(biāo)準(zhǔn)接收、處理、以及轉(zhuǎn)發(fā)或丟棄分組,所述標(biāo)準(zhǔn)包括分組使用的協(xié)議的類型、分組的地址(例如,源,目的地,群組)、所要求的服務(wù)類型或質(zhì)量。另外,一般還對(duì)分組執(zhí)行一種或多種安全操作。但是在可以執(zhí)行這些操作前,一般必須對(duì)分組執(zhí)行分組分類操作。
這些操作消耗時(shí)間和資源,所以加速它們的性能的一種方法是使用多個(gè)處理器并且并行處理分組。然而,屬于一個(gè)分組流的某些分組可能需要按照接收順序從分組處理器轉(zhuǎn)發(fā)甚至處理。此外,維護(hù)分組的原始次序與以下需求沖突在分組被處理完時(shí)盡可能快地從處理器撤回分組,以便騰空資源以處理更多的分組。需要這樣一種方法,該方法只保持流的關(guān)鍵順序,例如但不限于未在不相關(guān)的分組之間強(qiáng)加任意和非最優(yōu)順序的順序。

發(fā)明內(nèi)容
本發(fā)明公開了用于利用有序加鎖機(jī)制來維持項(xiàng)目次序的方法、設(shè)備、數(shù)據(jù)結(jié)構(gòu)、計(jì)算機(jī)可讀介質(zhì)、機(jī)制和裝置等,該維持可以包括在有序加鎖機(jī)制之間轉(zhuǎn)換。這些項(xiàng)目可以對(duì)應(yīng)于任何事物,包括但不限于分組、數(shù)據(jù)項(xiàng)、進(jìn)程、線程等。
實(shí)施例采用的鎖的數(shù)目可以變化,并且一般符合應(yīng)用的需求。鎖可以用來維持項(xiàng)目流的強(qiáng)排序。另外,鎖可以用來引起對(duì)項(xiàng)目的排序。例如,鎖可以被轉(zhuǎn)換到多種不同的鎖,這允許相同的順序在不同的鎖內(nèi)仍被保持,同時(shí)允許不同鎖的項(xiàng)目以任意順序被處理,例如但不限于被并行處理。類似地,多個(gè)鎖可以被轉(zhuǎn)換成單個(gè)鎖,這導(dǎo)致在不同鎖中的先前的項(xiàng)目之間排序(例如,一般具有加鎖請(qǐng)求被處理的排序)。
另外,某些實(shí)施例可以提供加鎖機(jī)制來執(zhí)行原子操作,這些原子操作內(nèi)在或明確地與加鎖項(xiàng)目相關(guān)聯(lián)。這種原子動(dòng)作的示例包括但不限于鎖轉(zhuǎn)換、序列號(hào)生成和/或檢查、存儲(chǔ)器操作、數(shù)據(jù)操縱操作等。在一個(gè)實(shí)施例中,與要執(zhí)行的原子操作相對(duì)應(yīng)的一組指令或者指令的命令隊(duì)列、或者其他指示被關(guān)聯(lián)有加鎖項(xiàng)目。通過允許加鎖機(jī)制執(zhí)行或者致使執(zhí)行這操作,一般可以減少關(guān)鍵的等待時(shí)間,這是由于這些操作一般可以流水線化在本地執(zhí)行,而不是分布式執(zhí)行。例如,在一個(gè)實(shí)施例中,這種操作由加鎖機(jī)制或者與加鎖機(jī)制相關(guān)聯(lián)的處理元件執(zhí)行,因此,一般可以減小或消除在執(zhí)行操作之前加鎖機(jī)制和鎖請(qǐng)求者之間的通信延遲。
一個(gè)實(shí)施例標(biāo)識(shí)多個(gè)項(xiàng)目中的特定項(xiàng)目,并且在響應(yīng)中生成對(duì)有序鎖的加鎖請(qǐng)求。該有序鎖配置為按照所請(qǐng)求的順序維護(hù)與所述加鎖請(qǐng)求相對(duì)應(yīng)的標(biāo)識(shí)符的加鎖隊(duì)列。一條或多條指令被關(guān)聯(lián)到該特定標(biāo)識(shí)符,并且在該特定標(biāo)識(shí)符到達(dá)加鎖隊(duì)列的頭部時(shí),執(zhí)行這一條或多條指令。
一個(gè)實(shí)施例重復(fù)標(biāo)識(shí)特定分組,并且在響應(yīng)中生成對(duì)有序鎖的加鎖請(qǐng)求,其中該有序鎖按照所請(qǐng)求的順序維護(hù)與加鎖請(qǐng)求相對(duì)應(yīng)的標(biāo)識(shí)符的加鎖隊(duì)列。與分組相對(duì)應(yīng)的接受請(qǐng)求被傳輸?shù)皆撚行蜴i。該有序鎖從加鎖隊(duì)列的頭部重復(fù)移除特定標(biāo)識(shí)符,并且如果先前生成了對(duì)應(yīng)的接受請(qǐng)求則準(zhǔn)予與該特定標(biāo)識(shí)符相對(duì)應(yīng)的加鎖接受請(qǐng)求,或者等待直到生成與該特定標(biāo)識(shí)符相對(duì)應(yīng)的加鎖接受請(qǐng)求,然后準(zhǔn)予與該特定標(biāo)識(shí)符相對(duì)應(yīng)的加鎖接受請(qǐng)求。


所附權(quán)利要求書具體闡明了本發(fā)明的特征。結(jié)合附圖從下面的具體實(shí)施方式
中,可以最好地理解本發(fā)明及其優(yōu)點(diǎn),在附圖中圖1A是采用一個(gè)實(shí)施例的示例性系統(tǒng)的框圖;圖1B是在一個(gè)實(shí)施例中使用的系統(tǒng)或其組件的框圖,所述組件包括但不限于例如分組處理器、鎖機(jī)制、鎖管理器、分配器、收集器或資源。
圖2A~2C圖示了在一個(gè)實(shí)施例中使用的有序鎖;圖3A~3D圖示了在一個(gè)實(shí)施例中使用的有序鎖;圖4A~4D圖示了在一個(gè)實(shí)施例中使用的鎖轉(zhuǎn)換的概念;圖5A~5D是圖示了用于利用有序鎖來維護(hù)分組次序的無限多個(gè)實(shí)施例中的一些實(shí)施例的流程圖;圖6A是使用有序鎖來維護(hù)分組次序的示例性系統(tǒng)的框圖;以及圖6B是圖示了使用有序鎖來維護(hù)分組次序的使用有序鎖處理的過程的流程圖。
具體實(shí)施例方式
本發(fā)明公開了這樣的方法、設(shè)備、數(shù)據(jù)結(jié)構(gòu)、計(jì)算機(jī)可讀介質(zhì)、機(jī)制和裝置等,其用于使用有序加鎖機(jī)制來維護(hù)項(xiàng)目的次序,該維護(hù)可以包括在有序加鎖機(jī)制之間轉(zhuǎn)換。這些項(xiàng)目可以是任意項(xiàng)目,包括但不限于分組,并且在這種情形中,使用有序鎖來維護(hù)分組的次序的操作尤其可用于路由器、分組交換系統(tǒng)和其他設(shè)備。
這里描述的實(shí)施例包括各種元素和限制,并且沒有一種元素或限制被設(shè)想為是關(guān)鍵元素或限制。權(quán)利要求中的每一個(gè)整體上單獨(dú)地?cái)⑹霰景l(fā)明的一個(gè)方面。此外,所述的某些實(shí)施例可以包括但不限于系統(tǒng)、網(wǎng)絡(luò)、集成電路芯片、嵌入式處理器、ASIC、方法和包含指令的計(jì)算機(jī)可讀介質(zhì)等。一個(gè)或多個(gè)系統(tǒng)、設(shè)備、組件等可以包括一個(gè)或多個(gè)實(shí)施例,實(shí)施例可以包括由相同或不同的系統(tǒng)、設(shè)備、組件等執(zhí)行的權(quán)利要求的某些元素或限制。下文所述實(shí)施例體現(xiàn)在本發(fā)明范圍和精神內(nèi)的各個(gè)方面和配置,同時(shí)附示了示例性的非限制配置。
這里所使用的術(shù)語(yǔ)“分組”指信息或數(shù)據(jù)的所有類型的分組或者任意其他單位,包括但不限于固定長(zhǎng)度的信元和可變長(zhǎng)度的分組,并且每個(gè)都可以或者不可以劃分為更小的分組或信元。這里所使用的術(shù)語(yǔ)“分組”也既指分組自身又指分組指示,例如但不限于分組的全部或一部分或者分組頭部、數(shù)據(jù)結(jié)構(gòu)值、指針或索引、或者分組的任意其他部分或直接或間接標(biāo)識(shí)、或者與其相關(guān)聯(lián)的信息。例如,路由器常常對(duì)分組的一個(gè)或多個(gè)字段進(jìn)行操作,尤其是頭部,所以分組的主體通常被存儲(chǔ)在獨(dú)立的存儲(chǔ)器中,而分組的頭部被操縱,并且基于對(duì)分組(即,在本示例中為分組頭部)進(jìn)行處理的結(jié)果,轉(zhuǎn)發(fā)或丟棄整個(gè)分組。另外,這些分組可以包含一種或多種類型的信息,包括但不限于聲音、數(shù)據(jù)、視頻和音頻信息。術(shù)語(yǔ)“項(xiàng)目”在這里總地用來指分組或任意其他信息或數(shù)據(jù)的單位或片斷、設(shè)備、組件、元件或任意其他實(shí)體。短語(yǔ)“處理分組”和“分組處理”一般指基于分組內(nèi)容(例如,分組頭部或其他字段)執(zhí)行某些步驟或動(dòng)作,并且這些步驟或動(dòng)作可以或者可以不包括修改、存儲(chǔ)、丟棄、和/或轉(zhuǎn)發(fā)分組和/或關(guān)聯(lián)數(shù)據(jù)。
術(shù)語(yǔ)“系統(tǒng)”在這里總地用來描述任意數(shù)量的組件、元件、子系統(tǒng)、設(shè)備、分組交換元件、分組交換機(jī)、路由器、網(wǎng)絡(luò)、計(jì)算機(jī)和/或通信設(shè)備或機(jī)制、或者它們的組件的組合。術(shù)語(yǔ)“計(jì)算機(jī)”在這里總地用來描述任意數(shù)量的計(jì)算機(jī),包括但不限于個(gè)人計(jì)算機(jī)、嵌入式處理元件和系統(tǒng)、控制邏輯、ASIC、芯片、工作站、主機(jī)等。術(shù)語(yǔ)“處理元件”在這里總地用來描述任意類型的處理機(jī)制或設(shè)備,例如處理器、ASIC、現(xiàn)場(chǎng)可編程門陣列、計(jì)算機(jī)等。術(shù)語(yǔ)“設(shè)備”在這里總地用來描述任意類型的機(jī)制,包括計(jì)算機(jī)或系統(tǒng)或者它們的組件。術(shù)語(yǔ)“任務(wù)”和“進(jìn)程”在這里總地用來描述任意類型的正運(yùn)行的程序,包括但不限于計(jì)算機(jī)進(jìn)程、任務(wù)、線程、執(zhí)行的應(yīng)用、操作系統(tǒng)、用戶進(jìn)程、設(shè)備驅(qū)動(dòng)、源代碼、機(jī)器或其他語(yǔ)言等,并且可以是交互式和/或非交互式、本地執(zhí)行和/或遠(yuǎn)程執(zhí)行的、前臺(tái)和/或后臺(tái)執(zhí)行的、在用戶和/或操作系統(tǒng)地址空間中執(zhí)行的、庫(kù)和/或獨(dú)立應(yīng)用的子例程,并且不限于任意特定存儲(chǔ)器分區(qū)技術(shù)。在包括但不限于任意框圖、流程圖和消息序列圖的圖中示出的步驟、連接和對(duì)信號(hào)及信息的處理可以按照相同的或不同的串行或并行順序執(zhí)行,并且/或者可以由不同的組件和/或進(jìn)程、線程等執(zhí)行,并且/或者可以通過不同的連接,并且可以與保持在本發(fā)明的范圍和精神內(nèi)的其他實(shí)施例中的其他功能組合。此外,術(shù)語(yǔ)“標(biāo)識(shí)”在這里總地用來描述任意方式或機(jī)制,用于直接或間接確認(rèn)某些內(nèi)容,其可以包括但不限于接收、從存儲(chǔ)器提取、確定、定義、計(jì)算、生成等。
此外,術(shù)語(yǔ)“網(wǎng)絡(luò)”和“通信機(jī)制”在這里總地用來描述一種或多種網(wǎng)絡(luò)、通信介質(zhì)或通信系統(tǒng),包括但不限于因特網(wǎng),專用或公共電話、蜂窩、無線、衛(wèi)星、線纜、局域、城域和/或廣域網(wǎng),線纜、電連接、總線等,以及消息傳遞、進(jìn)程間通信、共享存儲(chǔ)器等內(nèi)部通信機(jī)制。術(shù)語(yǔ)“消息”在這里總地用來描述信息片斷,其可以是可以不是但是一般是經(jīng)由任意類型的一個(gè)或多個(gè)通信機(jī)制傳輸?shù)摹?br> 術(shù)語(yǔ)“存儲(chǔ)機(jī)制”包括任意類型的存儲(chǔ)器、存儲(chǔ)設(shè)備或其他機(jī)制,用于保存任意格式的指令或數(shù)據(jù)?!坝?jì)算機(jī)可讀介質(zhì)”是一個(gè)可擴(kuò)展的術(shù)語(yǔ),包括任意存儲(chǔ)器、存儲(chǔ)設(shè)備、存儲(chǔ)機(jī)制、以及其他存儲(chǔ)和信令機(jī)制,包括接口和設(shè)備,例如網(wǎng)絡(luò)接口卡和其中的緩沖器、以及任意通信設(shè)備和接收和發(fā)送的信號(hào),以及計(jì)算機(jī)化的系統(tǒng)可以解釋、接收和/或發(fā)送的其他當(dāng)前和正在開發(fā)的技術(shù)。術(shù)語(yǔ)“存儲(chǔ)器”包括任意隨機(jī)訪問存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、閃存、集成電路、以及/或者其他存儲(chǔ)器組件或元件。術(shù)語(yǔ)“存儲(chǔ)設(shè)備”包括任意固態(tài)存儲(chǔ)介質(zhì)、盤驅(qū)動(dòng)、盤、連網(wǎng)的服務(wù)、帶驅(qū)動(dòng)、以及其他存儲(chǔ)設(shè)備。存儲(chǔ)器和存儲(chǔ)設(shè)備可以存儲(chǔ)由處理元件和/或控制邏輯執(zhí)行的計(jì)算機(jī)可執(zhí)行指令,以及由處理元件和/或控制邏輯操縱的數(shù)據(jù)。術(shù)語(yǔ)“數(shù)據(jù)結(jié)構(gòu)”是一個(gè)可擴(kuò)展的術(shù)語(yǔ),指任意數(shù)據(jù)元素、變量、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫(kù),以及/或者一種或多種有組織的方案,這些方案可以被用于到數(shù)據(jù)來幫助解釋數(shù)據(jù)或者對(duì)數(shù)據(jù)執(zhí)行操作,例如但不限于存儲(chǔ)器位置或器件、集合、隊(duì)列、樹、堆、列表、鏈接列表、數(shù)組、表、指針等。數(shù)據(jù)結(jié)構(gòu)一般保存在存儲(chǔ)機(jī)制中,術(shù)語(yǔ)“指針”和“鏈接”在這里總地用來標(biāo)識(shí)某些機(jī)制,該機(jī)制用于引用或標(biāo)識(shí)另一個(gè)元素、組件、或者其他實(shí)體,并且這些可以包括但不限于引用存儲(chǔ)器或其他存儲(chǔ)機(jī)制或者其中的位置、數(shù)據(jù)結(jié)構(gòu)中的索引、值等。術(shù)語(yǔ)“關(guān)聯(lián)存儲(chǔ)器”是一個(gè)可擴(kuò)展的術(shù)語(yǔ),并且指任意類型已知或?qū)頃?huì)開發(fā)出來的關(guān)聯(lián)存儲(chǔ)器,包括但不限于二進(jìn)制和三進(jìn)制內(nèi)容可尋址存儲(chǔ)器、散列表、TRIE和其他數(shù)據(jù)結(jié)構(gòu)等。另外,術(shù)語(yǔ)“關(guān)聯(lián)存儲(chǔ)器單元”可以包括但不限于一個(gè)和多個(gè)關(guān)聯(lián)存儲(chǔ)器器件或者它們的一部分,包括但不限于條目集合、區(qū)域、段、庫(kù)、頁(yè)、塊等。
術(shù)語(yǔ)“一個(gè)實(shí)施例”在這里用來指一個(gè)特定的實(shí)施例,其中每次引用“一個(gè)實(shí)施例”可以指不同的實(shí)施例,并且在這里描述關(guān)聯(lián)的特征、元素和/或限制時(shí)重復(fù)使用該術(shù)語(yǔ),這并不是要建立每個(gè)并且所有實(shí)施例都必須包括的關(guān)聯(lián)的特征、元素和/或限制的累積集合,盡管一個(gè)實(shí)施例一般可能包括所有這些特征、元素和/或限制。另外,短語(yǔ)“用于xxx的裝置”一般包括包含用于執(zhí)行xxx的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。
另外,術(shù)語(yǔ)“第一”、“第二”等在這里一般用來標(biāo)示不同的單元(例如,第一元素、第二元素)。在這里使用這些術(shù)語(yǔ)并不一定隱含著諸如一個(gè)單元或事件在另一個(gè)之前發(fā)生或到來這里的排序,而是提供一種機(jī)制來區(qū)分特定單元。另外,使用單數(shù)名詞是非限制性的,利用單數(shù)名詞一般包括一個(gè)或多個(gè)特定事物,而不是剛好一個(gè)(例如,使用詞“存儲(chǔ)器”一般指一個(gè)或多個(gè)存儲(chǔ)器,而不用必須指定“存儲(chǔ)器或多個(gè)存儲(chǔ)器”、或“一個(gè)或多個(gè)存儲(chǔ)器”、或“至少一個(gè)存儲(chǔ)器”等)。此外,短語(yǔ)“基于x”和“響應(yīng)于x”用來指示項(xiàng)目x的最小集合,從該集合導(dǎo)出或引致某些內(nèi)容,其中“x”是可擴(kuò)展的,并且不一定描述對(duì)其執(zhí)行了該操作的項(xiàng)目的完整列表等。另外,短語(yǔ)“耦合到”用來指示兩個(gè)元件或設(shè)備直接的直接或間接連接的某些級(jí)別,其中一個(gè)或多個(gè)耦合設(shè)備修改或不修改被耦合的信號(hào)或被傳輸?shù)男畔?。術(shù)語(yǔ)“子集”用來指示一個(gè)集合的全部或少于全部元素的群組。術(shù)語(yǔ)“子樹”用來指示樹的全部或一部分。此外,術(shù)語(yǔ)“或”在這里用來標(biāo)識(shí)選擇聯(lián)合(conjunctive)項(xiàng)目中的一個(gè)或多個(gè),包括全部。
一個(gè)實(shí)施例標(biāo)識(shí)特定的項(xiàng)目,并且在響應(yīng)中生成對(duì)有序鎖的加鎖請(qǐng)求。有序鎖被配置為按照請(qǐng)求的順序維護(hù)與加鎖請(qǐng)求相對(duì)應(yīng)的標(biāo)識(shí)符的加鎖隊(duì)列。一條或多條指令與特定的標(biāo)識(shí)符相關(guān)聯(lián),并且在特定的標(biāo)識(shí)符到達(dá)加鎖隊(duì)列的頭部時(shí),執(zhí)行這一條或多條指令。
在一個(gè)實(shí)施例中,在加鎖請(qǐng)求后執(zhí)行的操作中,指令被與特定的標(biāo)識(shí)符相關(guān)聯(lián)。在一個(gè)實(shí)施例中,在與第二加鎖請(qǐng)求相應(yīng)的另一個(gè)標(biāo)識(shí)符被添加到加鎖隊(duì)列后執(zhí)行的操作中,指令被與特定標(biāo)識(shí)符相關(guān)聯(lián)。在一個(gè)實(shí)施例中,當(dāng)對(duì)特定項(xiàng)目執(zhí)行加鎖請(qǐng)求時(shí),加鎖隊(duì)列包含與其他項(xiàng)目相對(duì)應(yīng)的多個(gè)其他標(biāo)識(shí)符。在一個(gè)實(shí)施例中,一條或多條指令包括鎖轉(zhuǎn)換指令,用于將特定項(xiàng)目與第二有序鎖相關(guān)聯(lián)。在一個(gè)實(shí)施例中,特定項(xiàng)目是分組。在一個(gè)實(shí)施例中,一條或多條指令包括分組收集指令。在一個(gè)實(shí)施例中,特定分組的一個(gè)或多個(gè)字段被處理來標(biāo)識(shí)第二有序鎖,并且一條或多條指令包括鎖轉(zhuǎn)換指令,用于將該特定項(xiàng)目與第二有序鎖相關(guān)聯(lián)。
一個(gè)實(shí)施例重復(fù)標(biāo)識(shí)出特定的分組,并且在響應(yīng)中生成對(duì)有序鎖的加鎖請(qǐng)求,其中該有序鎖按照請(qǐng)求的順序維護(hù)與加鎖請(qǐng)求相對(duì)應(yīng)的標(biāo)識(shí)符的加鎖隊(duì)列。與分組相對(duì)應(yīng)的接受請(qǐng)求被傳輸?shù)接行蜴i。有序鎖從加鎖隊(duì)列的頭部重復(fù)移除特定標(biāo)識(shí)符,并且如果先前已產(chǎn)生了對(duì)應(yīng)的接受請(qǐng)求,則向特定標(biāo)識(shí)符授予加鎖接受請(qǐng)求,或者等待直到生成與該特定標(biāo)識(shí)符相對(duì)應(yīng)的加鎖接受請(qǐng)求,然后授予與該特定標(biāo)識(shí)符相對(duì)應(yīng)的加鎖接受請(qǐng)求。
在一個(gè)實(shí)施例中,加鎖請(qǐng)求是非阻塞性的,并且接受請(qǐng)求是阻塞性的。在一個(gè)實(shí)施例中,響應(yīng)于授予與分組相對(duì)應(yīng)的加鎖接受請(qǐng)求,產(chǎn)生對(duì)特定第二鎖的第二加鎖請(qǐng)求,該第二加鎖請(qǐng)求與該分組相對(duì)應(yīng),并且該特定第二鎖基于該分組的內(nèi)容標(biāo)識(shí)出。
一個(gè)實(shí)施例包括多個(gè)分組處理器、有序鎖管理器和分配器。有序鎖管理器配置為接收鎖請(qǐng)求,接收與鎖請(qǐng)求相對(duì)應(yīng)的指令請(qǐng)求,并且在前一個(gè)鎖請(qǐng)求被釋放后按照接收到鎖請(qǐng)求的順序處理與鎖請(qǐng)求相對(duì)應(yīng)的指令。分配器配置為接收分組,向有序鎖管理器請(qǐng)求與分組相對(duì)應(yīng)的加鎖請(qǐng)求,并且將分組分配到一個(gè)或多個(gè)處理器。所述一個(gè)或多個(gè)處理器中的至少一個(gè)配置為將與分組相對(duì)應(yīng)的一組指令傳輸?shù)接行蜴i管理器。
在一個(gè)實(shí)施例中,該組指令包括分組收集指令。在一個(gè)實(shí)施例中,該組指令包括用于執(zhí)行鎖釋放的指令。在一個(gè)實(shí)施例中,該組指令包括轉(zhuǎn)換指令,用于執(zhí)行第二加鎖請(qǐng)求。
一個(gè)實(shí)施例包括一個(gè)或多個(gè)加鎖機(jī)制、多個(gè)分組處理器、以及分組分配器。這一個(gè)和多個(gè)加鎖機(jī)制操作多個(gè)有序鎖,包括根有序鎖和多個(gè)第二有序鎖,每個(gè)有序鎖包括用于存儲(chǔ)加鎖項(xiàng)目的隊(duì)列。每個(gè)加鎖機(jī)制配置為接收加鎖請(qǐng)求,將對(duì)加鎖請(qǐng)求的指示放置到有序鎖的對(duì)應(yīng)隊(duì)列中,并且接收加鎖接受和加鎖釋放并對(duì)它們作出反應(yīng)。分組分配器配置為接收分組,對(duì)每個(gè)分組作出根有序加鎖請(qǐng)求,并且將每個(gè)分組分配給分組處理器。每個(gè)分組處理器配置為接收特定分組,接受與對(duì)特定分組的根有序加鎖請(qǐng)求相對(duì)應(yīng)的根有序鎖,處理該分組來標(biāo)識(shí)第二鎖,作出與該第二鎖相對(duì)應(yīng)的加鎖請(qǐng)求,并且釋放該根有序鎖。在一個(gè)實(shí)施例中,每個(gè)分組處理器配置為在接受根有序鎖后并且釋放該根有序鎖之前作出與第二鎖相對(duì)應(yīng)的鎖請(qǐng)求,其中所述根有序鎖與對(duì)特定分組的根有序加鎖請(qǐng)求相對(duì)應(yīng)。
圖1A是采用一個(gè)實(shí)施例的示例性系統(tǒng)的框圖。圖中示出一個(gè)分組交換系統(tǒng),該交換系統(tǒng)具有由分組交換構(gòu)架103互連的分組處理器101~102和104~105。在一個(gè)實(shí)施例中,分組處理器101~102和104~105中的一個(gè)或多個(gè)使用有序加鎖機(jī)制來維護(hù)所需分組次序。
圖1B是在一個(gè)實(shí)施例中使用的系統(tǒng)或其組件120的框圖,所述組件例如但不限于分組處理器、鎖機(jī)制、鎖管理器、分配器、收集器或者資源。在一個(gè)實(shí)施例中,系統(tǒng)或組件120執(zhí)行與這里示出或描述的流程圖之一相對(duì)應(yīng)的一個(gè)或多個(gè)過程。
在一個(gè)實(shí)施例中,組件120包括處理元件121、存儲(chǔ)器122、存儲(chǔ)設(shè)備123和接口124,它們一般經(jīng)由一個(gè)或多個(gè)通信機(jī)制129(出于說明目的被示作總線)耦合,其中接口124用于接收和發(fā)送分組、項(xiàng)目和/或其他信息。組件120的各種實(shí)施例可以包括更多或更少的元件。組件120的操作一般由處理元件121利用存儲(chǔ)器122和存儲(chǔ)設(shè)備123控制,來執(zhí)行一個(gè)或多個(gè)調(diào)度任務(wù)或進(jìn)程。存儲(chǔ)器122是一種計(jì)算機(jī)可讀介質(zhì),并且一般包括隨機(jī)訪問存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、閃存、集成電路和/或其他存儲(chǔ)器組件。存儲(chǔ)器122一般存儲(chǔ)將由處理元件121執(zhí)行的計(jì)算機(jī)可執(zhí)行指令,和/或由處理元件121操縱用來實(shí)現(xiàn)根據(jù)本發(fā)明的功能的數(shù)據(jù)。存儲(chǔ)設(shè)備123是另一類計(jì)算機(jī)可讀介質(zhì),并且一般包括固態(tài)存儲(chǔ)介質(zhì)、盤驅(qū)動(dòng)、盤、聯(lián)網(wǎng)的服務(wù)、帶驅(qū)動(dòng)和其他存儲(chǔ)設(shè)備。存儲(chǔ)設(shè)備123一般存儲(chǔ)將由處理元件121執(zhí)行的計(jì)算機(jī)可執(zhí)行指令,和/或由處理元件121操縱用來實(shí)現(xiàn)根據(jù)本發(fā)明的功能的數(shù)據(jù)。
項(xiàng)目的次序可以利用有序鎖來維護(hù)。這些項(xiàng)目可以與任何內(nèi)容相對(duì)應(yīng),但是利用有序鎖來維護(hù)分組的次序可能尤其有用。一個(gè)實(shí)施例利用加鎖請(qǐng)求、接受和釋放協(xié)議。一個(gè)實(shí)施例將指令與加鎖請(qǐng)求相關(guān)聯(lián),以使在獲得鎖后,加鎖機(jī)制執(zhí)行關(guān)聯(lián)的指令或者使關(guān)聯(lián)的指令被執(zhí)行,這是由于對(duì)指令的關(guān)聯(lián)隱含了對(duì)鎖的接受請(qǐng)求(或者可被明確地請(qǐng)求)。在一些應(yīng)用中,不要求保留分組的全部次序的排序,而是僅保留項(xiàng)目的全部次序的某些子次序之間的排序,這可以通過將最初的根有序鎖(維護(hù)整個(gè)項(xiàng)目流的次序)轉(zhuǎn)換為多種其他的鎖(每種維護(hù)不同的項(xiàng)目子流的次序)來實(shí)現(xiàn)。
加鎖機(jī)制的一個(gè)實(shí)施例利用以下基本的可擴(kuò)展操作·request(lock_id)-上下文請(qǐng)求鎖,“上下文”一般指狀態(tài)和資源,包括與正被處理的分組或其他實(shí)體相關(guān)聯(lián)的處理器引擎、線程等。如果所請(qǐng)求的鎖可用(即,沒有其他上下文擁有它),則lock_grant被發(fā)送給發(fā)出請(qǐng)求的上下文。但是,如果該鎖由另一個(gè)上下文擁有,則新請(qǐng)求被排入隊(duì)列,直到該請(qǐng)求移動(dòng)到隊(duì)列的開頭,并且lock_grant被發(fā)送。這是一個(gè)非阻塞操作,即,在該請(qǐng)求之后但是在接受之前的任何代碼都不是臨界區(qū)(critical section)的一部分,并且可以在接收到lock_grant之前被執(zhí)行。
·accept(lock_id)-這是一個(gè)阻塞操作,該操作使發(fā)出請(qǐng)求的上下文阻塞,直到其獲得所需鎖(即,已接收到lock_grant)。在該接受之后但是在釋放之前執(zhí)行的任何代碼都是該鎖的臨界區(qū)。
·release(lock_id)-這是釋放鎖,并使該鎖對(duì)其他請(qǐng)求上下文可用的操作。
圖2A~2C圖示了在一個(gè)實(shí)施例中使用的有序鎖200。轉(zhuǎn)到圖2A,鎖機(jī)制201執(zhí)行加鎖操作,并且可以以無數(shù)種方式實(shí)現(xiàn),并且但不限于處理元件和存儲(chǔ)器、離散邏輯、定制ASIC等。在一個(gè)實(shí)施例中,有序鎖200利用一個(gè)或多個(gè)加鎖隊(duì)列202(或者任何其他機(jī)制來維護(hù)接收到的順序請(qǐng)求),一般所支持的每個(gè)鎖對(duì)應(yīng)于一個(gè)加鎖隊(duì)列。在一個(gè)實(shí)施例中,有序鎖200僅服務(wù)單個(gè)鎖,因此不需要鎖ID來標(biāo)識(shí)特定的鎖(例如,根鎖,第二鎖等)。在一個(gè)實(shí)施例中。有序鎖200服務(wù)多個(gè)鎖,特定的有序鎖一般由鎖ID(例如,唯一的值等)或者經(jīng)由其他機(jī)制標(biāo)識(shí)。鎖請(qǐng)求隊(duì)列202可以以無數(shù)種方式實(shí)現(xiàn),例如,在不同的存儲(chǔ)器、移位寄存器、單個(gè)存儲(chǔ)器中,并且每個(gè)隊(duì)列元素利用鏈表或其他數(shù)據(jù)結(jié)構(gòu)等標(biāo)識(shí)。
圖2B圖示了在一個(gè)實(shí)施例中用于處理鎖請(qǐng)求的鎖機(jī)制過程。處理開始于處理框220。在處理框222中,如果確定出鎖請(qǐng)求被接收到或者以其他方式被識(shí)別出,則在處理框224中,與所識(shí)別出的鎖請(qǐng)求相對(duì)應(yīng)的標(biāo)識(shí)符被放置在與該請(qǐng)求相對(duì)應(yīng)的鎖請(qǐng)求隊(duì)列的末尾(例如,如果加鎖機(jī)制支持多于一個(gè)鎖,則該鎖由鎖ID或者其他機(jī)制標(biāo)識(shí))。然后處理返回處理框222。這樣,加鎖機(jī)制維護(hù)了接收到加鎖請(qǐng)求的順序。
圖2C圖示了在一個(gè)實(shí)施例中用來處理由加鎖機(jī)制支持的每個(gè)隊(duì)列的鎖項(xiàng)目/請(qǐng)求的過程。處理開始于處理框240。在處理框242中,判斷隊(duì)列中是否存在鎖標(biāo)識(shí)符,然后在處理框244中,識(shí)別出與在該隊(duì)列的頭部的鎖請(qǐng)求相對(duì)應(yīng)的指示。在過程框248中,如果確定出已接收到與該標(biāo)識(shí)符相對(duì)應(yīng)的接受請(qǐng)求,則在處理框252中,該接受請(qǐng)求被準(zhǔn)予。然后該處理在處理框254處等待,直到接收到對(duì)應(yīng)的釋放請(qǐng)求,然后在處理框256中從隊(duì)列的頭部移除該指示,然后處理返回處理框242。否則,在處理框250中,如果確定出已接收到與標(biāo)識(shí)符相對(duì)應(yīng)的釋放請(qǐng)求,則處理直接前進(jìn)到處理框256。否則,處理返回處理框248。
加鎖機(jī)制的一個(gè)實(shí)施例使用以下基本的可擴(kuò)展操作·request(lock_id)-該上下文請(qǐng)求鎖。如果所請(qǐng)求的鎖可用(即,沒有其他上下文擁有它),則lock_grant被發(fā)送給請(qǐng)求上下文。但是,如果該鎖由另一個(gè)上下文擁有,則新請(qǐng)求被排入隊(duì)列,直到該請(qǐng)求移動(dòng)到隊(duì)列的開頭,才發(fā)送lock_grant。這是一個(gè)非阻塞操作,即,在該請(qǐng)求之后但是在接受之前的任何代碼都不是臨界區(qū)的一部分,并且可以在接收到lock_grant之前被執(zhí)行。
·attach(operation+attributions,convert+dest_flow_id)-該attach操作實(shí)際上包括隱含的接受(即,到達(dá)隊(duì)列的開頭找到當(dāng)前flow_id),然后跟隨著do_action和/或轉(zhuǎn)換到新的flow_id,最后釋放當(dāng)前的鎖。實(shí)施例可以使用不同的attach操作。
圖3A~3D圖示了在一個(gè)實(shí)施例中使用的有序鎖300。轉(zhuǎn)到圖3A,鎖機(jī)制301執(zhí)行加鎖操作,并且可以以無數(shù)種方式實(shí)現(xiàn),包括但不限于處理元件和存儲(chǔ)器、離散邏輯、定制ASIC等。在一個(gè)實(shí)施例中,有序鎖300使用一個(gè)或多個(gè)加鎖隊(duì)列302(或者任何其他機(jī)制來維護(hù)接收到的順序請(qǐng)求),一般所支持的每個(gè)鎖對(duì)應(yīng)于一個(gè)加鎖隊(duì)列。在一個(gè)實(shí)施例中,有序鎖300僅服務(wù)單個(gè)鎖,因此不需要鎖ID來標(biāo)識(shí)特定的鎖(例如,根鎖,第二鎖等)。在一個(gè)實(shí)施例中。有序鎖300服務(wù)多個(gè)鎖,特定的有序鎖一般由鎖ID(例如,唯一的值等)或者經(jīng)由其他機(jī)制來標(biāo)識(shí)。鎖請(qǐng)求隊(duì)列302可以以無數(shù)種方式實(shí)現(xiàn),例如,在不同的存儲(chǔ)器、移位寄存器、單個(gè)存儲(chǔ)器中,并且每個(gè)隊(duì)列元素利用鏈接列表或其他數(shù)據(jù)結(jié)構(gòu)等標(biāo)識(shí)。如圖所示,指令305與接收到的鎖請(qǐng)求相關(guān)聯(lián),例如,由(一個(gè)或多個(gè))鎖請(qǐng)求隊(duì)列302中存儲(chǔ)的鎖標(biāo)識(shí)符標(biāo)識(shí)出的那些鎖請(qǐng)求。可以利用無數(shù)種技術(shù)將這些指令與鎖請(qǐng)求相關(guān)聯(lián),并且這些指令可以存儲(chǔ)在隊(duì)列302中或者在一個(gè)或多個(gè)其他數(shù)據(jù)結(jié)構(gòu)中。
圖3B圖示了在一個(gè)實(shí)施例中用于處理鎖請(qǐng)求的鎖機(jī)制過程。處理開始于處理框320。在處理框322中,如果確定出鎖請(qǐng)求被接收到或者以其他方式被識(shí)別出,則在處理框324中,與所識(shí)別出的鎖請(qǐng)求相對(duì)應(yīng)的標(biāo)識(shí)符被放置在與該請(qǐng)求相對(duì)應(yīng)的鎖請(qǐng)求隊(duì)列的末尾(例如,如果加鎖機(jī)制支持多于一個(gè)鎖,則該鎖是由鎖ID或者其他機(jī)制標(biāo)識(shí)出的)。然后處理返回處理框322。這樣,加鎖機(jī)制維護(hù)接收到加鎖請(qǐng)求的順序。
圖3C圖示了在一個(gè)實(shí)施例中用來由加鎖機(jī)制處理指令請(qǐng)求的過程。處理開始于處理框340。在處理框342中,如果確定出指令請(qǐng)求被識(shí)別出(例如,接收到等),則在處理框344中,這些指令被關(guān)聯(lián)到鎖請(qǐng)求(例如,加鎖機(jī)制中的鎖標(biāo)識(shí)符,或者經(jīng)由任何其他機(jī)制)。
圖3D圖示了在一個(gè)實(shí)施例中用來處理由加鎖機(jī)制支持的每個(gè)隊(duì)列的鎖項(xiàng)目/請(qǐng)求的過程。處理開始于處理框360。在處理框362中,如果確定出在隊(duì)列中存在鎖標(biāo)識(shí)符,則在處理框364中,識(shí)別出與在該隊(duì)列的頭部的鎖請(qǐng)求相對(duì)應(yīng)的指示。在已識(shí)別出與該標(biāo)識(shí)符相對(duì)應(yīng)的指令(例如,現(xiàn)在或先前接收到或者以其他方式標(biāo)識(shí)出的)之前,處理都停留在366。在已識(shí)別出對(duì)應(yīng)的指令后,在處理框368中,這些指令由加鎖機(jī)制和/或其他處理機(jī)制執(zhí)行。
這些指令可以是阻塞性的(例如,在前進(jìn)到下一條指令或其他操作之前該鎖必須完成)或者非阻塞性的(例如,發(fā)起操作和前進(jìn)到其他指令或操作)。在一個(gè)實(shí)施例中,所執(zhí)行的(一條或多條)指令可以包括發(fā)起操作然后阻塞,直到該操作完成。在一個(gè)實(shí)施例中,所執(zhí)行的(一條或多條)指令可以包括發(fā)起操作但是直到該操作完成都不阻塞。在一個(gè)實(shí)施例中,所執(zhí)行的(一條或多條)指令可以包括發(fā)起操作并延遲發(fā)送確認(rèn)指示到鎖請(qǐng)求者,直到該操作完成,同時(shí)前進(jìn)到隊(duì)列中的其他鎖項(xiàng)目。例如,可能發(fā)起從不同存儲(chǔ)器位置和/或存儲(chǔ)器收集分組的多個(gè)部分的操作,而確認(rèn)操作可能被延遲,直到對(duì)存儲(chǔ)器的一次或多次訪問已完成以使(一個(gè)或多個(gè))存儲(chǔ)器位置可以被覆寫。
在處理框370中,確認(rèn)消息被發(fā)送到請(qǐng)求者,該確認(rèn)消息被立即發(fā)送或延遲發(fā)送直到某些其他操作完成,并且在這種確認(rèn)被發(fā)送之前可能繼續(xù)處理隊(duì)列中的更多的加鎖項(xiàng)目。然后處理返回到處理框362。從一個(gè)方面看,接收指令充當(dāng)隱含的鎖接受請(qǐng)求,或者甚至在一個(gè)實(shí)施例中,接受是與鎖請(qǐng)求或其指示相關(guān)聯(lián)的指令之一。
圖4A~4D圖示了在一個(gè)實(shí)施例中使用的鎖轉(zhuǎn)換的概念。注意,所使用的鎖轉(zhuǎn)換的數(shù)量和類型是可擴(kuò)展的,并且可以隨實(shí)施例而不同,以匹配應(yīng)用的需求。鎖可以被用來維護(hù)對(duì)項(xiàng)目流的強(qiáng)排序。另外,鎖可以用來引起對(duì)項(xiàng)目的排序。例如,鎖可以被轉(zhuǎn)換到多種不同的鎖,這允許相同的順序在不同的鎖內(nèi)仍被保持,同時(shí)允許不同鎖的項(xiàng)目以任意順序被處理,例如但不限于被并行處理。類似地,多個(gè)鎖可以被轉(zhuǎn)換成單個(gè)鎖,這導(dǎo)致在不同鎖中的先前的項(xiàng)目之間排序(例如,一般具有加鎖請(qǐng)求被處理的排序)。
例如,到達(dá)接口的分組可能每個(gè)都以它們被接收到的順序向單個(gè)根鎖作出加鎖請(qǐng)求,或者向多個(gè)根鎖之一作出加鎖請(qǐng)求(例如,每個(gè)接收端口、協(xié)議類型、分組類型等一個(gè)加鎖請(qǐng)求,或者它們的一些組合一個(gè)加鎖請(qǐng)求)。這這維持了分組的順序,因?yàn)檫@些鎖按照作出請(qǐng)求的順序被處理(例如,在一個(gè)實(shí)施例中是分組到達(dá)順序)。這些鎖然后可以基于所要求的對(duì)分組的處理或者分組中包括的某些值或者其他數(shù)據(jù)結(jié)構(gòu)等而被轉(zhuǎn)換為不同的鎖。例如,某些分組流必須維持排序。通過將與該流的分組相對(duì)應(yīng)的所有鎖從根鎖轉(zhuǎn)換到相同的其他鎖,可以維持該排序。類似地,第二鎖(或者第n鎖,其中,n是用于該事物的任意整數(shù),因?yàn)榭赡艿募渔i轉(zhuǎn)換數(shù)目是無限的)可以被轉(zhuǎn)換到另一種鎖,例如與輸出接口或端口相對(duì)應(yīng)的一個(gè)鎖,從而可以維持原始排序(即使從其他鎖轉(zhuǎn)換到相同的鎖也如此,因?yàn)樵撴i維持了每個(gè)流中的相對(duì)順序)。
首先轉(zhuǎn)到圖4A,該圖示出了有序鎖轉(zhuǎn)換400的一個(gè)示例。項(xiàng)目流401由有序鎖402處理(為了簡(jiǎn)單標(biāo)識(shí)為“根鎖”)。當(dāng)根鎖402被特定標(biāo)識(shí)符/項(xiàng)目獲取時(shí),如果其與項(xiàng)目流401內(nèi)的流動(dòng)(也稱作子序列或子流)相關(guān)聯(lián),則與該流動(dòng)相關(guān)聯(lián)的有序鎖404~406被標(biāo)識(shí)出,并且對(duì)該第二有序鎖404~406作出加鎖請(qǐng)求。注意,有序鎖404~406可以利用一個(gè)或多個(gè)有序鎖機(jī)制實(shí)現(xiàn),并且每個(gè)鎖利用鎖ID或其他機(jī)制隱含標(biāo)識(shí)出或明確標(biāo)識(shí)出。因此,由根有序鎖404維護(hù)的初始流內(nèi)的相關(guān)排序被傳送到每個(gè)流動(dòng)有序鎖404~406,并且與項(xiàng)目相關(guān)聯(lián)的鎖從根有序鎖402被“轉(zhuǎn)換”到流動(dòng)有序鎖404~406中的一個(gè)或多個(gè)。
圖4B示出了在一個(gè)實(shí)施例中由加鎖機(jī)制使用的這種處理。處理開始于420,然后前進(jìn)到處理框422,其中所獲取的根鎖中的鎖(例如,在對(duì)應(yīng)隊(duì)列的開頭或者其他排序機(jī)制處明確或隱含接受的指示)被標(biāo)識(shí)出。注意,處理可能需要等待直到鎖被獲取。接下來,在處理框424中,作出與所請(qǐng)求的鎖相對(duì)應(yīng)的流動(dòng)有序鎖中的鎖請(qǐng)求。然后處理返回處理框422。
類似地,如圖4C所示,可以作出從多個(gè)流動(dòng)鎖444~446到另一個(gè)有序鎖442(為了簡(jiǎn)單標(biāo)識(shí)為“根鎖”)的鎖轉(zhuǎn)換440,以產(chǎn)生項(xiàng)目流441。當(dāng)多個(gè)流動(dòng)鎖444~446之一被特定的標(biāo)識(shí)符/項(xiàng)目獲取,并且期望轉(zhuǎn)換操作轉(zhuǎn)換到根鎖442時(shí),對(duì)該第二鎖442作出加鎖請(qǐng)求。注意,有序鎖442~446可以利用一個(gè)或多個(gè)有序鎖機(jī)制實(shí)現(xiàn),并且每個(gè)鎖利用鎖ID或其他機(jī)制隱含標(biāo)識(shí)出或明確標(biāo)識(shí)出。
圖4D圖示了在一個(gè)實(shí)施例中由加鎖機(jī)制使用的這種處理。該處理開始于處理框460,然后前進(jìn)到處理框462,其中所獲取的有序鎖中的鎖(例如,在對(duì)應(yīng)隊(duì)列的開頭或者其他排序機(jī)制處明確或隱含接受的指示)被標(biāo)識(shí)出。注意,處理可能需要等待直到鎖被獲取。接下來,在處理框464中,作出有序鎖中的鎖請(qǐng)求。然后處理返回處理框462。因此,在通過將多個(gè)流動(dòng)有序鎖轉(zhuǎn)換到單個(gè)根流動(dòng)有序鎖從而執(zhí)行該處理時(shí),可以保持與這多個(gè)流動(dòng)有序鎖相對(duì)應(yīng)的項(xiàng)目的原始順序。
圖5A~5D是圖示了用于利用有序鎖來維持分組次序的無數(shù)實(shí)施例中的一些的流程圖。首先轉(zhuǎn)到圖5A,處理開始于處理框500,然后前進(jìn)到處理框502,其中分組被接收到,并且作出對(duì)應(yīng)的有序鎖請(qǐng)求。接下來,在處理框504中,該分組被處理。在處理框506中,作出對(duì)該有序鎖的接受請(qǐng)求。在處理框508中,當(dāng)該鎖被獲取到后,分組被進(jìn)一步處理、丟棄、發(fā)送等,然后該鎖被釋放。通過等待直到鎖被獲取,原始排序得到了保持。如處理框510所示,然后該流程圖的處理完成。
圖5B圖示了在一個(gè)實(shí)施例中使用的用于利用有序加鎖機(jī)制處理分組的過程。該處理開始于處理框520,然后前進(jìn)到處理框522,其中分組被接收到,并且作出對(duì)應(yīng)的有序鎖請(qǐng)求。接下來,在處理框524中,與分組相關(guān)聯(lián)的第二流動(dòng)被標(biāo)識(shí)出。例如,原始分組流可以是在接口上接收到的所有分組,并且特定的流動(dòng)可以基于源地址、目的地地址、協(xié)議類型、服務(wù)質(zhì)量需求、群組標(biāo)識(shí)符和/或在分組中包含的或在分組外的任何其他信息而被標(biāo)識(shí)出。在一個(gè)實(shí)施例中,所有項(xiàng)目屬于第二流動(dòng),其可以包括不與另一個(gè)特定的流動(dòng)相關(guān)聯(lián)的默認(rèn)的分組流動(dòng)。在一個(gè)實(shí)施例中,僅某些項(xiàng)目屬于第二流動(dòng),并且一般允許不屬于第二流動(dòng)的那些分組作為處理過的繼續(xù)。
在處理框526中,作出對(duì)根有序鎖的接受請(qǐng)求,然后一般繼續(xù)處理分組。在處理框528中,在鎖被獲取后,作出對(duì)與標(biāo)識(shí)出的第二流動(dòng)相對(duì)應(yīng)的第二有序鎖的鎖請(qǐng)求。在處理框530中,當(dāng)對(duì)分組的處理結(jié)束后,作出對(duì)對(duì)應(yīng)的第二有序鎖的接受請(qǐng)求,然后在處理框532中,當(dāng)獲取了第二有序鎖后,分組被進(jìn)一步處理、丟棄、發(fā)送等,然后該鎖被釋放。如處理框534所示,該流程圖的處理完成。
圖5C的流程圖的處理開始于處理框560,然后前進(jìn)到處理框562,其中分組被接收到,并且作出對(duì)應(yīng)的有序鎖請(qǐng)求。接下來,在處理框524中,該分組被處理。在處理框566中,當(dāng)對(duì)分組的處理完成后,一組一條或多條指令被關(guān)聯(lián)到鎖請(qǐng)求。注意,響應(yīng)于這些指令要執(zhí)行的原子操作是可擴(kuò)展的,并且一般根據(jù)應(yīng)用需要定義。例如,這些原子操作可以包括這樣的操作包括但不限于鎖轉(zhuǎn)換、序列號(hào)生成和/或檢查、檢錯(cuò)和/或校正、存儲(chǔ)器操作、數(shù)據(jù)操縱操作、發(fā)起另一個(gè)操作等。在處理框568中,在獲取到鎖后,這些指令一般由鎖機(jī)制或者其他機(jī)制執(zhí)行來進(jìn)一步處理、丟棄或收集/發(fā)送分組、轉(zhuǎn)換根鎖請(qǐng)求等,然后該鎖被釋放。通過在執(zhí)行這些指令之前等待直到獲取到鎖,原始排序得到了保持。如處理框570所示,然后該流程圖的處理完成。
圖5D圖示了在一個(gè)實(shí)施例中使用的用于利用有序加鎖機(jī)制處理分組的過程。該處理開始于處理框580,然后前進(jìn)到處理框582,其中分組被接收到,并且作出對(duì)應(yīng)的根有序鎖請(qǐng)求。接下來,在處理框584中,與分組相關(guān)聯(lián)的第二流動(dòng)被標(biāo)識(shí)出。在處理框586中,當(dāng)對(duì)分組的處理完成后,一組一條或多條指令被關(guān)聯(lián)到鎖請(qǐng)求,其中這些指令包括轉(zhuǎn)換操作指令。在處理框588中,在獲取到鎖后,這些指令由鎖機(jī)制或者其他機(jī)制執(zhí)行,來將根鎖轉(zhuǎn)換到所標(biāo)識(shí)出的第二鎖。在處理框590中,當(dāng)對(duì)分組的處理完成后,一組一條或多條指令被關(guān)聯(lián)到第二鎖請(qǐng)求。在處理框592中,在獲取到鎖后,這些指令一般由鎖機(jī)制或者其他機(jī)制執(zhí)行來進(jìn)一步處理、丟棄或收集/發(fā)送分組、轉(zhuǎn)換根鎖請(qǐng)求等,然后該鎖被釋放。如處理框594所示,然后該流程圖的處理完成。
圖6A是利用有序鎖來維持分組次序的示例性系統(tǒng)的框圖。分組601由分組處理器600接收到,并且一般經(jīng)由復(fù)用器602存儲(chǔ)到分組存儲(chǔ)器604中(同時(shí)分組處理器允許分組從組件624流出)。分配器606負(fù)責(zé)將分組分配給分組處理引擎610中的一個(gè)或多個(gè),用于執(zhí)行實(shí)際的分組處理。該處理可以利用緩存612、DRAM控制器614和外部存儲(chǔ)器615、查找控制器616、關(guān)聯(lián)存儲(chǔ)器控制器618和關(guān)聯(lián)存儲(chǔ)器619,以及/或者一般經(jīng)由耦合的資源網(wǎng)絡(luò)608訪問的其他組件。分配器606還通知鎖管理器和重排序器620對(duì)分組的分配,并且作出根鎖請(qǐng)求。分組處理引擎610執(zhí)行鎖請(qǐng)求、接受、釋放、結(jié)合鎖管理器和重排序器620將指令附加/關(guān)聯(lián)到鎖請(qǐng)求。在適當(dāng)?shù)臅r(shí)刻,收集機(jī)制622被通知應(yīng)當(dāng)例如基于與鎖請(qǐng)求相關(guān)聯(lián)的收集指令收集并發(fā)送分組。收集指令一般定義如何積累或收集已處理過的分組的多個(gè)部分以便形成處理過的分組,并且可以包括發(fā)送分組的語(yǔ)義。所收集到的分組被傳輸?shù)骄彌_、隊(duì)列、調(diào)度器、存儲(chǔ)器控制組件624,以如分組629所示發(fā)送處理過的分組。
現(xiàn)在結(jié)合圖6B描述分組處理器600和/或其他分組處理器的一個(gè)實(shí)施例的操作。該操作的處理開始于處理框640,然后前進(jìn)到處理框642,其中分組被接收到,并且被存儲(chǔ)到分組存儲(chǔ)器中,然后告知分配器該分組已到達(dá)及該分組的位置。在處理框644中,分配器標(biāo)識(shí)出分配來處理該分組的分組處理引擎和可能的線程。在處理框646中,分配器向分組處理引擎通知該分配,并且作出與所接收到的分組所屬的流相對(duì)應(yīng)的根加鎖請(qǐng)求,例如,在其上接收到該分組的接口。在一個(gè)實(shí)施例中,該流基于分組內(nèi)容被標(biāo)識(shí)出,但是其他實(shí)施例使分配器對(duì)分組執(zhí)行的處理最小化。分配器還針對(duì)該分組代表所分配的分組處理引擎向所管理器作出加鎖請(qǐng)求。在處理框648中,所分配的分組處理引擎從分組存儲(chǔ)器提取該分組的相關(guān)部分(例如,頭部、以及可能其他字段),然后處理該信息和/或其他信息來標(biāo)識(shí)出該分組被關(guān)聯(lián)到的第二流動(dòng)/鎖(如果有的話),然后繼續(xù)處理該分組。
在處理框650中,如果確定出要執(zhí)行轉(zhuǎn)換操作,則在處理框652中,分組處理引擎將轉(zhuǎn)換指令關(guān)聯(lián)/附加到根鎖請(qǐng)求,然后在獲取到根鎖后,例如對(duì)應(yīng)的標(biāo)識(shí)符到達(dá)根鎖隊(duì)列的開頭,鎖管理器執(zhí)行(或者使另一個(gè)機(jī)制執(zhí)行)指令來轉(zhuǎn)換該鎖,然后釋放該根鎖。
接下來,在處理框654中,當(dāng)對(duì)分組的處理完成后,分組處理引擎將收集指令附加到第二或根鎖請(qǐng)求(取決于是否執(zhí)行了有序鎖轉(zhuǎn)換操作)。在獲取到該鎖后,鎖管理器執(zhí)行(或者使另一個(gè)機(jī)制執(zhí)行)指令來收集分組的字段,以形成要發(fā)送的分組,然后轉(zhuǎn)發(fā)該分組。如處理框534所示,然后該流程圖的處理完成。
考慮到本發(fā)明的原理可以被應(yīng)用到的許多可能的實(shí)施例,將意識(shí)到這里參考附圖所述的實(shí)施例和它們的多個(gè)方面僅是說明性的,不應(yīng)當(dāng)理解為限制本發(fā)明的范圍。例如,對(duì)于本領(lǐng)域技術(shù)人員將清楚,許多處理框的操作可以被重排序來在其他操作之前、之后或者基本并發(fā)執(zhí)行。另外,在各種實(shí)施例中也可以使用許多不同形式的數(shù)據(jù)結(jié)構(gòu)。這里所述的發(fā)明設(shè)想所有這種實(shí)施例,只要它們可以在所附權(quán)利要求及其等同物的范圍內(nèi)。
權(quán)利要求
1.一種用于維持排序的方法,所述方法包括識(shí)別多個(gè)項(xiàng)目中的特定項(xiàng)目,并且在響應(yīng)中生成對(duì)與所述特定項(xiàng)目相對(duì)應(yīng)的有序鎖的加鎖請(qǐng)求,其中所述有序鎖被配置為按照所請(qǐng)求的順序維護(hù)與所述加鎖請(qǐng)求相對(duì)應(yīng)的標(biāo)識(shí)符的加鎖隊(duì)列,并且將與所述加鎖請(qǐng)求相對(duì)應(yīng)的特定標(biāo)識(shí)符放置到所述加鎖隊(duì)列的末尾;將一條或多條指令關(guān)聯(lián)到與所述加鎖請(qǐng)求相對(duì)應(yīng)的特定標(biāo)識(shí)符;以及識(shí)別出在所述加鎖隊(duì)列的頭部的特定標(biāo)識(shí)符,并且在響應(yīng)中執(zhí)行所述一條或多條指令。
2.如權(quán)利要求1所述的方法,其中,所述將一條或多條指令關(guān)聯(lián)到所述特定標(biāo)識(shí)符的步驟是在與第二加鎖請(qǐng)求相對(duì)應(yīng)的另一個(gè)標(biāo)識(shí)符被添加到所述加鎖隊(duì)列之后被執(zhí)行的。
3.如權(quán)利要求1所述的方法,其中,在所述生成對(duì)有序鎖的加鎖請(qǐng)求的步驟被執(zhí)行時(shí),所述加鎖隊(duì)列包含與其他項(xiàng)目相對(duì)應(yīng)的多個(gè)其他標(biāo)識(shí)符。
4.如權(quán)利要求1所述的方法,其中,所述一條或多條指令包括鎖轉(zhuǎn)換指令,用于將所述特定項(xiàng)目與第二有序鎖相關(guān)聯(lián)。
5.如權(quán)利要求1所述的方法,其中,所述多個(gè)項(xiàng)目中的每個(gè)項(xiàng)目包括分組。
6.如權(quán)利要求5所述的方法,其中,所述一條或多條指令包括分組收集指令。
7.如權(quán)利要求5所述的方法,包括對(duì)所述特定分組的一個(gè)或多個(gè)字段進(jìn)行處理來識(shí)別第二有序鎖;并且其中所述一條或多條指令包括鎖轉(zhuǎn)換指令,用于將所述特定項(xiàng)目與所述第二有序鎖相關(guān)聯(lián)。
8.如權(quán)利要求1所述的方法,包括發(fā)送釋放鎖確認(rèn)消息;其中所述一條或多條指令包括發(fā)起操作;并且其中所述發(fā)送釋放鎖確認(rèn)消息的步驟是在所述操作的執(zhí)行完成后被執(zhí)行的。
9.如權(quán)利要求1所述的方法,包括發(fā)送釋放鎖確認(rèn)消息;其中所述一條或多條指令包括發(fā)起操作;并且其中所述發(fā)送釋放鎖確認(rèn)消息的操作是在所述操作的執(zhí)行完成前被執(zhí)行的。
10.一種用于維持分組排序的方法,所述方法包括重復(fù)識(shí)別多個(gè)分組中的特定分組,并且在響應(yīng)中生成對(duì)與所述特定分組相對(duì)應(yīng)的有序鎖的加鎖請(qǐng)求,其中所述有序鎖按照所請(qǐng)求的順序維護(hù)與所述加鎖請(qǐng)求相對(duì)應(yīng)的標(biāo)識(shí)符的加鎖隊(duì)列;將與所述多個(gè)分組中的分組相對(duì)應(yīng)的接受請(qǐng)求傳輸?shù)剿鲇行蜴i;以及從所述加鎖隊(duì)列的頭部重復(fù)移除特定標(biāo)識(shí)符,并且如果先前生成了對(duì)應(yīng)的所述接受請(qǐng)求則準(zhǔn)予與所述特定標(biāo)識(shí)符相對(duì)應(yīng)的加鎖接受請(qǐng)求,或者等待直到生成與所述特定標(biāo)識(shí)符相對(duì)應(yīng)的加鎖接受請(qǐng)求,然后準(zhǔn)予與所述特定標(biāo)識(shí)符相對(duì)應(yīng)的加鎖接受請(qǐng)求。
11.如權(quán)利要求10所述的方法,其中,所述加鎖請(qǐng)求是非阻塞性的,并且所述接受請(qǐng)求是阻塞性的。
12.如權(quán)利要求10所述的方法,包括響應(yīng)于所述準(zhǔn)予與分組相對(duì)應(yīng)的加鎖接受請(qǐng)求,而轉(zhuǎn)發(fā)所述分組。
13.如權(quán)利要求10所述的方法,包括響應(yīng)于所述準(zhǔn)予與分組相對(duì)應(yīng)的加鎖接受請(qǐng)求,對(duì)多個(gè)第二有序鎖中的特定的第二鎖作出與所述分組相對(duì)應(yīng)的第二加鎖請(qǐng)求,所述特定的第二鎖基于所述分組的內(nèi)容而被識(shí)別出。
14.如權(quán)利要求10所述的方法,其中,所述與多個(gè)分組中的第一分組相對(duì)應(yīng)的加鎖請(qǐng)求在與所述多個(gè)分組中的第二分組相對(duì)應(yīng)的加鎖請(qǐng)求之前生成,并且與所述第二分組相對(duì)應(yīng)的接受請(qǐng)求在與所述第一分組相對(duì)應(yīng)的接受請(qǐng)求之前作出,并且與所述第一分組相對(duì)應(yīng)的接受請(qǐng)求在與所述第二分組相對(duì)應(yīng)的接受請(qǐng)求之前被準(zhǔn)予。
15.一種用于處理分組的裝置,所述裝置包括多個(gè)分組處理器;有序鎖管理器,其被配置為接收鎖請(qǐng)求,接收與所述鎖請(qǐng)求相對(duì)應(yīng)的指令請(qǐng)求,并且按照接收到所述鎖請(qǐng)求的順序在接收到所述鎖請(qǐng)求的順序中的前一個(gè)鎖請(qǐng)求被釋放后,對(duì)與所述鎖請(qǐng)求相對(duì)應(yīng)的指令進(jìn)行處理;以及分配器,其耦合到所述多個(gè)分組處理器和所述有序鎖管理器,其被配置為接收分組,向所述有序鎖管理器作出與所述分組相對(duì)應(yīng)的加鎖請(qǐng)求,并且將所述分組分配給所述多個(gè)分組處理器中的一個(gè)或多個(gè)處理器;其中所述一個(gè)或多個(gè)處理器中的至少一個(gè)處理器被配置為將與所述分組相對(duì)應(yīng)的一組指令傳輸?shù)剿鲇行蜴i管理器。
16.如權(quán)利要求15所述的裝置,其中,所述一組指令包括分組收集指令。
17.如權(quán)利要求16所述的裝置,其中,所述一組指令包括用于執(zhí)行鎖釋放的指令。
18.如權(quán)利要求15所述的裝置,其中,所述一組指令包括用于執(zhí)行第二加鎖請(qǐng)求的轉(zhuǎn)換指令。
19.如權(quán)利要求15所述的裝置,其中,所述一組指令包括用于執(zhí)行鎖釋放請(qǐng)求的指令。
20.一種用于處理分組的裝置,所述裝置包括一個(gè)或多個(gè)加鎖機(jī)制,用于操作多個(gè)有序鎖,所述多個(gè)有序鎖中的每個(gè)有序鎖包括用于存儲(chǔ)加鎖項(xiàng)目的隊(duì)列,所述一個(gè)或多個(gè)加鎖機(jī)制中的每個(gè)加鎖機(jī)制被配置為接收加鎖請(qǐng)求,將對(duì)所述加鎖請(qǐng)求的指示放置到所述多個(gè)有序鎖的對(duì)應(yīng)隊(duì)列中,接收加鎖接受和加鎖釋放并對(duì)所述加鎖接受和加鎖釋放作出反應(yīng),所述多個(gè)有序鎖包括根有序鎖和第二有序鎖;多個(gè)分組處理器;分組分配器,其被配置為接收分組,針對(duì)所述分組中的每個(gè)作出根有序加鎖請(qǐng)求,以及將所述分組中的每個(gè)分配給所述多個(gè)分組處理器;所述多個(gè)分組處理器中的每個(gè)分組處理器被配置為接收特定分組,接受與針對(duì)所述特定分組的根有序加鎖請(qǐng)求相對(duì)應(yīng)的根有序鎖,處理所述分組來識(shí)別第二鎖,作出與所述第二有序鎖相對(duì)應(yīng)的加鎖請(qǐng)求,以及釋放所述根有序鎖。
21.如權(quán)利要求20所述的裝置,其中,所述每個(gè)分組處理器被配置為,在所述接受與針對(duì)所述特定分組的根有序加鎖請(qǐng)求相對(duì)應(yīng)的根有序鎖之后,但在所述釋放根有序鎖之前,執(zhí)行所述作出與所述第二有序鎖相對(duì)應(yīng)的加鎖請(qǐng)求的步驟。
22.一種用于維持排序的裝置,所述裝置包括用于識(shí)別多個(gè)項(xiàng)目中的特定項(xiàng)目,并且在響應(yīng)中生成對(duì)與所述特定項(xiàng)目相對(duì)應(yīng)的有序鎖的加鎖請(qǐng)求的裝置,其中所述有序鎖被配置為按照所請(qǐng)求的順序維護(hù)與所述加鎖請(qǐng)求相對(duì)應(yīng)的標(biāo)識(shí)符的加鎖隊(duì)列、并且將與所述加鎖請(qǐng)求相對(duì)應(yīng)的特定標(biāo)識(shí)符放置到所述加鎖隊(duì)列的末尾;用于將一條或多條指令關(guān)聯(lián)到與所述加鎖請(qǐng)求相對(duì)應(yīng)的特定標(biāo)識(shí)符的裝置;以及用于識(shí)別在所述加鎖隊(duì)列的頭部的特定標(biāo)識(shí)符,并且在響應(yīng)中執(zhí)行所述一條或多條指令的裝置。
23.如權(quán)利要求22所述的裝置,其中,所述用于將一條或多條指令關(guān)聯(lián)到與所述加鎖請(qǐng)求相對(duì)應(yīng)的特定標(biāo)識(shí)符的裝置包括用于在與第二加鎖請(qǐng)求相對(duì)應(yīng)的另一個(gè)標(biāo)識(shí)符被添加到所述加鎖隊(duì)列之后將一條或多條指令關(guān)聯(lián)到所述特定標(biāo)識(shí)符的裝置。
24.如權(quán)利要求22所述的裝置,其中,所述一條或多條指令包括鎖轉(zhuǎn)換指令,用于將所述特定項(xiàng)目與第二有序鎖相關(guān)聯(lián)。
25.如權(quán)利要求22所述的裝置,其中,所述多個(gè)項(xiàng)目中的每個(gè)項(xiàng)目包括分組。
26.如權(quán)利要求25所述的裝置,其中,所述一條或多條指令包括分組收集指令。
27.如權(quán)利要求25所述的裝置,包括用于對(duì)所述特定分組的一個(gè)或多個(gè)字段進(jìn)行處理來識(shí)別第二有序鎖的裝置;并且其中所述一條或多條指令包括鎖轉(zhuǎn)換指令,用于將所述特定項(xiàng)目與所述第二有序鎖相關(guān)聯(lián)。
28.一種用于維持分組排序的裝置,所述裝置包括用于重復(fù)識(shí)別多個(gè)分組中的特定分組,并且在響應(yīng)中生成對(duì)與所述特定分組相對(duì)應(yīng)的有序鎖的加鎖請(qǐng)求的裝置,其中所述有序鎖按照所請(qǐng)求的順序維護(hù)與所述加鎖請(qǐng)求相對(duì)應(yīng)的標(biāo)識(shí)符的加鎖隊(duì)列;用于將與所述多個(gè)分組中的分組相對(duì)應(yīng)的接受請(qǐng)求傳輸?shù)剿鲇行蜴i的裝置;以及用于從所述加鎖隊(duì)列的頭部重復(fù)移除特定標(biāo)識(shí)符,并且如果先前生成了對(duì)應(yīng)的所述接受請(qǐng)求則準(zhǔn)予與所述特定標(biāo)識(shí)符相對(duì)應(yīng)的加鎖接受請(qǐng)求,或者等待直到生成與所述特定標(biāo)識(shí)符相對(duì)應(yīng)的加鎖接受請(qǐng)求,然后準(zhǔn)予與所述特定標(biāo)識(shí)符相對(duì)應(yīng)的加鎖接受請(qǐng)求的裝置。
29.如權(quán)利要求28所述的裝置,其中,所述加鎖請(qǐng)求是非阻塞性的,并且所述接受請(qǐng)求是阻塞性的。
30.如權(quán)利要求28所述的裝置,包括用于響應(yīng)于所述準(zhǔn)予與分組相對(duì)應(yīng)的加鎖接受請(qǐng)求而轉(zhuǎn)發(fā)所述分組的裝置。
31.如權(quán)利要求28所述的裝置,包括用于響應(yīng)于所述準(zhǔn)予與分組相對(duì)應(yīng)的加鎖接受請(qǐng)求,對(duì)多個(gè)第二有序鎖中的特定的第二鎖作出與所述分組相對(duì)應(yīng)的第二加鎖請(qǐng)求的裝置;以及用于基于所述分組的內(nèi)容識(shí)別所述特定的第二鎖的裝置。
32.如權(quán)利要求28所述的裝置,其中,與所述多個(gè)分組中的第一分組相對(duì)應(yīng)的加鎖請(qǐng)求在與所述多個(gè)分組中的第二分組相對(duì)應(yīng)的加鎖請(qǐng)求之前生成;并且與所述第二分組相對(duì)應(yīng)的接受請(qǐng)求在與所述第一分組相對(duì)應(yīng)的接受請(qǐng)求之前作出;并且與所述第一分組相對(duì)應(yīng)的接受請(qǐng)求在與所述第二分組相對(duì)應(yīng)的接受請(qǐng)求之前被準(zhǔn)予。
33.一種包含計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)可執(zhí)行指令用于執(zhí)行用于維持排序的步驟,所述步驟包括識(shí)別多個(gè)項(xiàng)目中的特定項(xiàng)目,并且在響應(yīng)中生成對(duì)與所述特定項(xiàng)目相對(duì)應(yīng)的有序鎖的加鎖請(qǐng)求,其中所述有序鎖被配置為按照所請(qǐng)求的順序維護(hù)與所述加鎖請(qǐng)求相對(duì)應(yīng)的標(biāo)識(shí)符的加鎖隊(duì)列,并且將與所述加鎖請(qǐng)求相對(duì)應(yīng)的特定標(biāo)識(shí)符放置到所述加鎖隊(duì)列的末尾;將一條或多條指令關(guān)聯(lián)到與所述加鎖請(qǐng)求相對(duì)應(yīng)的特定標(biāo)識(shí)符;以及識(shí)別在所述加鎖隊(duì)列的頭部的特定標(biāo)識(shí)符,并且在響應(yīng)中執(zhí)行所述一條或多條指令。
34.如權(quán)利要求33所述的計(jì)算機(jī)可讀介質(zhì),其中,所述將一條或多條指令關(guān)聯(lián)到所述特定標(biāo)識(shí)符在與第二加鎖請(qǐng)求相對(duì)應(yīng)的另一個(gè)標(biāo)識(shí)符被添加到所述加鎖隊(duì)列之后被執(zhí)行。
35.如權(quán)利要求33所述的計(jì)算機(jī)可讀介質(zhì),其中,在所述生成對(duì)有序鎖的加鎖請(qǐng)求被執(zhí)行時(shí),所述加鎖隊(duì)列包含與其他項(xiàng)目相對(duì)應(yīng)的多個(gè)其他標(biāo)識(shí)符。
36.如權(quán)利要求33所述的計(jì)算機(jī)可讀介質(zhì),其中,所述一條或多條指令包括鎖轉(zhuǎn)換指令,用于將所述特定項(xiàng)目與第二有序鎖相關(guān)聯(lián)。
37.如權(quán)利要求33所述的計(jì)算機(jī)可讀介質(zhì),其中,所述多個(gè)項(xiàng)目中的每個(gè)項(xiàng)目包括分組。
38.如權(quán)利要求37所述的計(jì)算機(jī)可讀介質(zhì),其中,所述一條或多條指令包括分組收集指令。
39.如權(quán)利要求37所述的計(jì)算機(jī)可讀介質(zhì),其中,所述步驟包括對(duì)所述特定分組的一個(gè)或多個(gè)字段進(jìn)行處理來標(biāo)識(shí)出第二有序鎖;并且其中所述一條或多條指令包括鎖轉(zhuǎn)換指令,用于將所述特定項(xiàng)目與所述第二有序鎖相關(guān)聯(lián)。
40.一種包含計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)可執(zhí)行指令用于執(zhí)行用于維持分組排序的步驟,所述步驟包括重復(fù)識(shí)別多個(gè)分組中的特定分組,并且在響應(yīng)中生成對(duì)與所述特定分組相對(duì)應(yīng)的有序鎖的加鎖請(qǐng)求,其中所述有序鎖按照所請(qǐng)求的順序維護(hù)與所述加鎖請(qǐng)求相對(duì)應(yīng)的標(biāo)識(shí)符的加鎖隊(duì)列;將與所述多個(gè)分組中的分組相對(duì)應(yīng)的接受請(qǐng)求傳輸?shù)剿鲇行蜴i;以及從所述加鎖隊(duì)列的頭部重復(fù)移除特定標(biāo)識(shí)符,并且如果先前生成了對(duì)應(yīng)的所述接受請(qǐng)求則準(zhǔn)予與所述特定標(biāo)識(shí)符相對(duì)應(yīng)的加鎖接受請(qǐng)求,或者等待直到生成與所述特定標(biāo)識(shí)符相對(duì)應(yīng)的加鎖接受請(qǐng)求,然后準(zhǔn)予與所述特定標(biāo)識(shí)符相對(duì)應(yīng)的加鎖接受請(qǐng)求。
41.如權(quán)利要求40所述的計(jì)算機(jī)可讀介質(zhì),其中,所述加鎖請(qǐng)求是非阻塞性的,并且所述接受請(qǐng)求是阻塞性的。
42.如權(quán)利要求40所述的計(jì)算機(jī)可讀介質(zhì),其中所述步驟包括響應(yīng)于所述授予與分組相對(duì)應(yīng)的加鎖接受請(qǐng)求,轉(zhuǎn)發(fā)所述分組。
43.如權(quán)利要求40所述的計(jì)算機(jī)可讀介質(zhì),其中所述步驟包括響應(yīng)于所述授予與分組相對(duì)應(yīng)的加鎖接受請(qǐng)求,對(duì)多個(gè)第二有序鎖中的特定的第二鎖作出與所述分組相對(duì)應(yīng)的第二加鎖請(qǐng)求,所述特定的第二鎖基于所述分組的內(nèi)容而被識(shí)別出。
44.如權(quán)利要求40所述的計(jì)算機(jī)可讀介質(zhì),其中,與所述多個(gè)分組中的第一分組相對(duì)應(yīng)的加鎖請(qǐng)求在與所述多個(gè)分組中的第二分組相對(duì)應(yīng)的加鎖請(qǐng)求之前生成,并且與所述第二分組相對(duì)應(yīng)的接受請(qǐng)求在與所述第一分組相對(duì)應(yīng)的接受請(qǐng)求之前作出,并且與所述第一分組相對(duì)應(yīng)的接受請(qǐng)求在與所述第二分組相對(duì)應(yīng)的接受請(qǐng)求之前被準(zhǔn)予。
45.如權(quán)利要求40所述的計(jì)算機(jī)可讀介質(zhì),其中,所述一條或多條指令包括發(fā)起操作;并且其中所述步驟包括在對(duì)所述操作的執(zhí)行完成后發(fā)送釋放鎖確認(rèn)消息。
46.如權(quán)利要求40所述的計(jì)算機(jī)可讀介質(zhì),其中,所述一條或多條指令包括發(fā)起操作;并且其中所述步驟包括在對(duì)所述操作的執(zhí)行完成前發(fā)送釋放鎖確認(rèn)消息。
全文摘要
可以利用有序鎖來維持項(xiàng)目次序。這些項(xiàng)目可以對(duì)應(yīng)于任何事物,但是利用有序鎖來維持分組次序可能尤其有用。一種實(shí)現(xiàn)方式利用鎖請(qǐng)求、接受和釋放協(xié)議(圖5B)。一種實(shí)現(xiàn)方式將指令與加鎖請(qǐng)求相關(guān)聯(lián),由于指令的關(guān)聯(lián)隱含了對(duì)鎖的接受請(qǐng)求(或者可以被明確地請(qǐng)求)(526),所以使得在獲取到鎖后加鎖機(jī)制執(zhí)行關(guān)聯(lián)的指令或者致使關(guān)聯(lián)的指令被執(zhí)行。在一些應(yīng)用中,不要求保留整個(gè)分組序列的排序,而是僅要求保留整個(gè)分組序列的某些子序列之間的排序,這可以通過將初始根有序鎖(維持整個(gè)項(xiàng)目流的次序)轉(zhuǎn)換為各種其他鎖(每個(gè)維持不同項(xiàng)目子流的次序)來實(shí)現(xiàn)。
文檔編號(hào)H04L12/56GK1879368SQ200480033472
公開日2006年12月13日 申請(qǐng)日期2004年9月30日 優(yōu)先權(quán)日2003年11月12日
發(fā)明者約翰·J·小威廉斯, 約翰·安德魯·費(fèi)戈哈特, 肯尼思·哈維·波特 申請(qǐng)人:思科技術(shù)公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
凤山县| 灌云县| 封丘县| 阿图什市| 二连浩特市| 浮梁县| 定西市| 互助| 南郑县| 海淀区| 高安市| 泽州县| 青浦区| 和政县| 呼玛县| 朝阳县| 岱山县| 全椒县| 柳江县| 贞丰县| 大化| 井冈山市| 闸北区| 克拉玛依市| 兴文县| 马公市| 陆川县| 仁布县| 泰安市| 伊吾县| 两当县| 吉木乃县| 惠东县| 忻州市| 大足县| 建始县| 贺兰县| 马边| 柳林县| 田东县| 安多县|