專利名稱:應(yīng)用程序和動詞資源管理的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及使用遠程直接存儲器訪問(RDMA)的系統(tǒng)中的應(yīng)用程序和動詞資源管理。
背景技術(shù):
遠程直接存儲器訪問(RDMA)是通過快速傳輸有效地移動數(shù)據(jù)的技術(shù)。RDMA可使計算機以對存儲器總線帶寬最小需求和CPU處理開銷直接將信息放置在另一臺計算機的存儲器中,同時節(jié)省存儲器保護語義。它幫助由硬件通過直接存儲器訪問進行數(shù)據(jù)移動,通過網(wǎng)絡(luò)進行數(shù)據(jù)傳輸更快,同時減少主機CPU的開銷。
已知和使用了各種形式的RDMA(所有這些都被稱為RDMA),如,但不限于VIA(虛擬接口體系結(jié)構(gòu))、InfiniBand、iWARP和RNIC。簡單地說,VIA指定了RDMA能力,而沒有指定基礎(chǔ)傳輸。InfiniBand指定基礎(chǔ)的傳輸和物理層。TCP/IP上的RDMA(傳輸控制協(xié)議/Internet協(xié)議)指定通過標準的TCP/IP傳輸層進行交互操作的RDMA層。TCP上的RDMA不指定物理層;并通過以太網(wǎng)、廣域網(wǎng)(WAN)或其中使用TCP/IP的任何其他網(wǎng)絡(luò)。RNIC是啟用RDMA的NIC(網(wǎng)絡(luò)接口控制器)。RNIC為TCP上的RDMA提供支持,并可以在相同的網(wǎng)絡(luò)適配器中包括TCP卸載和RDMA功能的組合。
RDMA協(xié)議允許對應(yīng)用程序緩沖區(qū)進行直接訪問。硬件使用所謂的工作隊列(WQ)與軟件連接。工作隊列是成對地創(chuàng)建的,叫做隊列對(QP),一個用于發(fā)送操作(發(fā)送隊列),一個用于接收操作(接收隊列)。發(fā)送工作隊列(SWQ)保存使數(shù)據(jù)在一個使用者的存儲器和另一個使用者的存儲器之間傳輸?shù)闹噶?,而接收工作隊?RWQ)保存有關(guān)將從另一個使用者接收到的數(shù)據(jù)放在哪里的指令。使用者提交工作請求,這是要放置在適當?shù)墓ぷ麝犃兄械墓ぷ麝犃性?WQE)。通道適配器執(zhí)行WQE,以便它們放置在工作隊列中。
上文所提及的隊列是由所謂的動詞層進行管理的。此層是駐留在使用者的存儲空間中的軟件庫,并提供不同的RDMA服務(wù),如后發(fā)送和接收請求。
應(yīng)用程序(其中,術(shù)語“應(yīng)用程序”包含,但不限于,用戶和內(nèi)核空間;術(shù)語“使用者”還用于表示“應(yīng)用程序”)使用PostSend/PostRecv動詞發(fā)布其緩沖區(qū),以便進行RDMA NIC處理。一旦緩沖區(qū)被應(yīng)用程序發(fā)布,緩沖區(qū)的所有權(quán)被傳遞給RDMA NIC。在緩沖區(qū)被發(fā)布以便進行RDMA處理之后應(yīng)用程序被禁止訪問緩沖區(qū)。應(yīng)用程序緩沖區(qū)一直由RDMA NIC擁有,直到RDMA NIC完成它們的處理(發(fā)送完發(fā)布在那些緩沖區(qū)中的數(shù)據(jù),或接收發(fā)往那些緩沖區(qū)中的數(shù)據(jù))。RDMA NIC提供了應(yīng)用程序查詢完成的請求的方式,這里稱為PollCompletion動詞。
現(xiàn)有技術(shù)中具有不同的方法來解決管理通過工作請求(WR)和動詞資源(WQ)發(fā)布的應(yīng)用程序緩沖區(qū)所存在的問題。
一旦RDMA NIC處理完發(fā)布的WR,此請求消耗的應(yīng)用程序緩沖區(qū)可以被應(yīng)用程序重復(fù)使用,WQE可以被動詞層重復(fù)使用。
應(yīng)用程序使用PollCompletion動詞來查詢下一個完成的WR(如果有的話),以及此動詞所提供的給定信息,應(yīng)用程序可以管理此WR消耗的緩沖區(qū)。判斷如何管理緩沖區(qū)以及何時查詢發(fā)布的請求是否完成取決于應(yīng)用程序。
不是每一個發(fā)布的請求都要求報告其完成。由應(yīng)用程序決定是否選擇要求提供完成報告的請求(所謂的信令請求)。
現(xiàn)有技術(shù)中使用了多種完成報告機制,本文參考圖1A-2B描述了兩個基本的機制。
現(xiàn)在參考圖1A和1B,這兩個圖顯示了現(xiàn)有技術(shù)中用來報告WR完成的“寫回狀態(tài)方法”。
如圖1A所示,PostSend動詞為發(fā)送型WR使用發(fā)送隊列元素SQE 10,而PostReceive動詞為接收型WR使用接收隊列元素RQE 12。當WR完成時,一個WR完成的指示被寫入WQE的狀態(tài)字段14(即,SQE 10或RQE 12)。使用PollCompletion動詞來查詢WQE的狀態(tài)字段14來弄清對應(yīng)的WR是否完成。WQE中的狀態(tài)字段的更新不僅指出使用者WR完成,而且還指出此WQE可以是動詞層重復(fù)使用。
值得注意的是,Postsend/PostRecv和PollCompletion動詞都可以在相同的WQ結(jié)構(gòu)中進行操作。WQE的相同的狀態(tài)字段14可用于管理應(yīng)用程序?qū)雍蛣釉~層資源。
如圖1B所示,只有在應(yīng)用程序?qū)颖煌ㄖ揥QE的狀態(tài)字段被標記為“完成”之后,動詞層才能重復(fù)使用特定的WQE。
應(yīng)用程序查詢完成的請求的“寫回狀態(tài)方法”假設(shè)使用相同的數(shù)據(jù)結(jié)構(gòu)來發(fā)布新請求,取消分配完成的WQE,并對完成的請求進行查詢。在此方法中,應(yīng)用程序管理其自己的和動詞層資源。
現(xiàn)在參考圖2A和2B,這兩個圖顯示了現(xiàn)有技術(shù)中用來報告WR完成的“完成隊列方法”。例如,諸如InfiniBand和iWARP之類的協(xié)議使用完成隊列方法。此方法引入了完成隊列(CQ)的新術(shù)語,其中,這樣的隊列的每一個條目描述了已經(jīng)完成的單信令的WR。
當通道適配器完成WR時,完成隊列元素(CQE)16被放置在CQ中。每一個CQE 16都指定工作完成所需的所有信息,并直接包含該信息或者指向包含信息的其他結(jié)構(gòu),例如,關(guān)聯(lián)的WQE。在此方法中,使用Pollcompletion動詞查詢CQE 16,以弄清特定的WQE是否可用。
如圖2B所示,只有在應(yīng)用程序?qū)硬樵僀QE 16并被通知對應(yīng)的WR完成之后,動詞層才能重復(fù)使用特定的WQE。
此方法允許使用更加靈活的機制來管理應(yīng)用程序資源a.在不同的WQ之間共享相同的完成隊列b.使用不同的數(shù)據(jù)結(jié)構(gòu)發(fā)布請求,并輪詢完成此方法的缺點是,在輪詢完成時,再次執(zhí)行WQE的釋放。這就迫使應(yīng)用程序協(xié)議不時地向CQE 16發(fā)布信令WQE,以允許WQE取消分配,即使從協(xié)議的觀點來看,它們的完成不重要。另一個缺點是,WQ地址空間必須對PollCompletion動詞可訪問,CQ和QP必須駐留在相同的存儲空間中。另一個缺點是,需要在Pollcompletion和PostSend執(zhí)行之間同步。例如,由于PostSend消耗WQE,而PollCompletion釋放WQE,WQE總數(shù)的更新需要同步。
發(fā)明內(nèi)容
本發(fā)明的目的是,提供在使用RDMA協(xié)議的系統(tǒng)中進行應(yīng)用程序和動詞資源管理的改進的方法。如下文所描述的,本發(fā)明可以將動詞資源管理與應(yīng)用程序管理相分離。
通過下面的結(jié)合附圖對本發(fā)明進行的詳細說明,可以更全面地理解本發(fā)明,其中圖1A和1B是現(xiàn)有技術(shù)中用來報告WR完成的“寫回狀態(tài)方法”的簡圖;圖2A和2B是現(xiàn)有技術(shù)中用來報告WR完成的“完成隊列方法”的簡圖;以及圖3A和3B是根據(jù)本發(fā)明的實施例的應(yīng)用程序和動詞資源管理的方法的簡圖。
具體實施例方式
現(xiàn)在參考圖3A和3B,它們顯示了根據(jù)本發(fā)明的實施例的應(yīng)用程序和動詞資源管理的方法。本發(fā)明可以在使用RDMA協(xié)議(如,但僅不限于RNIC)的系統(tǒng)100中使用。
如圖3A所示,PostSend動詞可以為發(fā)布發(fā)送型WR使用發(fā)送隊列元素SQE 10,而PostReceive動詞可以為發(fā)布接收型WR使用接收隊列元素RQE 12。每一個發(fā)布的請求都可以包括兩個位。一個位,叫做應(yīng)用程序請求位18,可以指出對完成通知的應(yīng)用程序請求。另一個位,叫做動詞請求位20,可以指出對完成通知的動詞請求。
當RDMA完成對發(fā)布的請求的處理時,它可以標記應(yīng)用程序請求位18和動詞請求位20。如果設(shè)置了應(yīng)用程序請求位18(例如,等于邏輯“1”),那么,RDMA可以向?qū)?yīng)的完成隊列中添加CQE 16,指出該特定WR已經(jīng)完成(如圖3A中的箭頭23所示)。應(yīng)用程序可以使用PollCompletion動詞查詢此CQE 16以弄清特定WR是否完成。此動詞可以檢索可用的CQE,而無需對WQ進行任何其他處理,并可以給應(yīng)用程序提供管理應(yīng)用程序緩沖區(qū)所需的足夠信息。
如果設(shè)置了動詞請求位20(例如,等于邏輯“1”),那么RDMA可以更新特定的SQE 10或RQE 12的WQE狀態(tài)字段14,從而指出特定WQE已經(jīng)完成(如圖3A中的箭頭所示)。當請求動詞層發(fā)布新請求時,它可以檢查特定WQE的WQE狀態(tài)字段14,以確定特定WQE是否完成,并可以作進一步的使用。
本發(fā)明的方法可以將動詞資源的管理與應(yīng)用程序資源的管理相分離,并可以對應(yīng)用程序和動詞資源進行有效而靈活的管理。
如圖3B所示,應(yīng)用程序?qū)涌梢耘袛嗪螘r以及為什么它希望獲得特定的WR已經(jīng)完成的指示。換句話說,應(yīng)用程序可以判斷何時它需要通過使用PollCompletion動詞確定特定的WR是否完成來查詢完成信息。應(yīng)用程序可以在多個WQ之間共享共同的完成隊列,從而簡化應(yīng)用程序資源管理。這些應(yīng)用程序判斷中沒有一個會對動詞資源管理造成任何影響。此方法允許WQ和CQ位于不同的地址空間,不一定從一個地址空間可以訪問另一個地址空間。
獨立于應(yīng)用程序?qū)?,動詞層通過檢查特定WQE中的狀態(tài)字段14可以判斷何時和為什么它希望獲得特定WQE已經(jīng)完成的指示。WQ和CQ不一定必須在相同存儲空間中,也不一定必須被共同的軟件組件訪問。
值得注意的是,圖3A和3B所示,并且在上文中描述的方法,可以是由計算機程序產(chǎn)品來執(zhí)行,如,但不限于,網(wǎng)絡(luò)接口卡(NIC)、主機總線適配器(HBA),軟盤、硬盤、光盤、內(nèi)存設(shè)備等其他可以包括用于執(zhí)行上文所描述的方法的指令。
本發(fā)明的說明書只作說明,而不是詳盡的說明或限于所說明的形式。那些本領(lǐng)域普通技術(shù)人員將認識到,可以進行許多修改。所選擇的實施例是為了最好地說明本發(fā)明的原理,實際應(yīng)用,并使精通本技術(shù)的其他人懂得,帶有各種修改的各個實施例也是可以接受的。
權(quán)利要求
1.一種控制對計算機存儲器的訪問的方法,該方法包括利用應(yīng)用程序?qū)雍蛣釉~層傳輸工作隊列元素;以及指出所述工作隊列元素已經(jīng)完成,其中,應(yīng)用程序?qū)雍蛣釉~層能夠彼此獨立地檢查所述工作隊列元素中的至少一個是否完成。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述工作隊列元素是否已經(jīng)完成以兩種不同的方式指明,能夠由應(yīng)用程序?qū)舆M行查詢的第一種方式和能夠由動詞層進行查詢的第二種方式。
3.根據(jù)權(quán)利要求2所述的方法,其中,第一種方式包括提供指出特定使用者工作請求已經(jīng)完成的完成隊列元素。
4.根據(jù)權(quán)利要求2所述的方法,其中,第二種方式包括更新特定工作隊列元素的狀態(tài)字段,以指出該工作隊列元素已經(jīng)完成。
5.根據(jù)權(quán)利要求1所述的方法,其中,傳輸工作隊列元素包括傳輸由應(yīng)用程序請求位和動詞請求位組成的使用者工作請求,其中應(yīng)用程序請求位用于指出對完成通知的應(yīng)用程序請求,動詞請求位用于指出對完成通知的動詞請求。
6.根據(jù)權(quán)利要求5所述的方法,其中,如果設(shè)置了應(yīng)用程序請求位,則提供指出傳輸?shù)氖褂谜吖ぷ髡埱笠呀?jīng)完成的完成隊列元素。
7.根據(jù)權(quán)利要求5所述的方法,其中,如果設(shè)置了動詞請求位,則更新傳輸?shù)墓ぷ麝犃性氐臓顟B(tài)字段,以指出傳輸?shù)墓ぷ麝犃性匾呀?jīng)完成。
8.根據(jù)權(quán)利要求6所述的方法,進一步包括,應(yīng)用程序?qū)硬樵兺瓿申犃性?,以確定傳輸?shù)氖褂谜吖ぷ髡埱笫欠裢瓿伞?br>
9.根據(jù)權(quán)利要求7所述的方法,進一步包括,動詞層查詢傳輸?shù)墓ぷ麝犃性氐臓顟B(tài)字段,以確定傳輸?shù)墓ぷ麝犃性厥欠裢瓿伞?br>
10.一種用于控制對計算機存儲器的訪問的計算機程序產(chǎn)品,該計算機程序產(chǎn)品包括用于利用應(yīng)用程序?qū)雍蛣釉~層傳輸工作隊列元素的第一指令;以及用于指出所述工作隊列元素已經(jīng)完成的第二指令,其中,應(yīng)用程序?qū)雍蛣釉~層能夠彼此獨立地檢查所述工作隊列元素中的至少一個是否完成。
11.根據(jù)權(quán)利要求10所述的計算機程序產(chǎn)品,其中,在第二指令中,所述工作隊列元素是否完成以兩種不同的方式指明,能夠由應(yīng)用程序?qū)舆M行查詢的第一種方式和能夠由動詞層進行查詢的第二種方式。
12.根據(jù)權(quán)利要求11所述的計算機程序產(chǎn)品,其中,第一種方式包括提供指出特定使用者工作請求已經(jīng)完成的完成隊列元素。
13.根據(jù)權(quán)利要求11所述的計算機程序產(chǎn)品,其中,第二種方式包括更新特定工作隊列元素的狀態(tài)字段,以指出該工作隊列元素已經(jīng)完成。
14.根據(jù)權(quán)利要求10所述的計算機程序產(chǎn)品,其中,在第一指令中,傳輸工作隊列元素包括傳輸由應(yīng)用程序請求位和動詞請求位組成的請求,其中應(yīng)用程序請求位用于指出對完成通知的應(yīng)用程序請求,動詞請求位用于指出對完成通知的動詞請求。
15.根據(jù)權(quán)利要求14所述的計算機程序產(chǎn)品,其中,如果設(shè)置了應(yīng)用程序請求位,則提供指出傳輸?shù)氖褂谜吖ぷ髡埱笠呀?jīng)完成的完成隊列元素。
16.根據(jù)權(quán)利要求14所述的計算機程序產(chǎn)品,其中,如果設(shè)置了動詞請求位,則更新傳輸?shù)墓ぷ麝犃性氐臓顟B(tài)字段以指出傳輸?shù)墓ぷ麝犃性匾呀?jīng)完成。
17.一種用于控制對計算機存儲器的訪問的系統(tǒng),該系統(tǒng)包括根據(jù)遠程直接存儲器訪問(RDMA)協(xié)議進行傳輸?shù)挠布蛻?yīng)用程序緩沖區(qū),包括應(yīng)用程序?qū)雍蛣釉~層;利用應(yīng)用程序?qū)雍蛣釉~層進行傳輸?shù)墓ぷ麝犃性?;以及指出所述工作隊列元素已?jīng)完成的指示器,其中,應(yīng)用程序?qū)雍蛣釉~層能夠彼此獨立地檢查所述工作隊列元素中的至少一個是否完成。
18.根據(jù)權(quán)利要求17所述的系統(tǒng),其中,指示器包括指出特定使用者工作請求已經(jīng)完成的完成隊列元素。
19.根據(jù)權(quán)利要求17所述的系統(tǒng),其中,指示器用于更新特定工作隊列元素的狀態(tài)字段,以指出該工作隊列元素已經(jīng)完成。
20.根據(jù)權(quán)利要求18所述的系統(tǒng),其中,工作隊列元素和完成隊列元素不必位于相同的存儲空間中。
全文摘要
本發(fā)明涉及應(yīng)用程序和動詞資源管理。一種控制對計算機存儲器的訪問的方法,該方法包括利用應(yīng)用程序?qū)雍蛣釉~層傳輸工作隊列元素,以及指出工作隊列元素已經(jīng)完成,其中,應(yīng)用程序?qū)雍蛣釉~層能夠彼此獨立地檢查工作隊列元素中的至少一個是否完成。
文檔編號G06F13/28GK1638378SQ20041008835
公開日2005年7月13日 申請日期2004年11月12日 優(yōu)先權(quán)日2003年12月29日
發(fā)明者吉奧拉·比蘭, 佐里克·馬丘爾斯基, 瓦迪姆·馬克赫爾瓦克斯, 列阿赫·沙里夫 申請人:國際商業(yè)機器公司