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

一種基于隊列的通信方法及裝置制造方法

文檔序號:8005533閱讀:224來源:國知局
一種基于隊列的通信方法及裝置制造方法
【專利摘要】本發(fā)明實施例提供一種基于隊列的通信方法及裝置,與發(fā)送節(jié)點相連的適配器包括仲裁器、預取器、高速緩沖存儲器和發(fā)送引擎,所述方法包括:所述預取器接收所述仲裁器發(fā)送的待處理隊列的身份標識,所述待處理隊列的身份標識由所述仲裁器在獲取當前處理隊列的身份標識時獲??;所述預取器判斷所述高速緩沖存儲器中是否保存有所述待處理隊列的上下文,如果未保存,則從所述發(fā)送節(jié)點的內存中讀取所述待處理隊列的上下文,并保存至所述高速緩沖存儲器中,供所述發(fā)送引擎發(fā)送所述待處理隊列的數(shù)據(jù)時使用。如此,就可顯著提高利用QP通信的節(jié)點的數(shù)據(jù)傳輸性能。
【專利說明】一種基于隊列的通信方法及裝置

【技術領域】
[0001]本發(fā)明涉及通信【技術領域】,具體涉及一種基于隊列的通信方法及裝置。

【背景技術】
[0002]在節(jié)點利用基于隊列的通信機制QP (Queue Pair)進行數(shù)據(jù)傳輸時,會先為該QP在內存建立三個隊列:發(fā)送隊列SQ (Send Queue)、接收隊列RQ (Receive Queue)、完成隊列CQ (Complet1n Queue),然后再通過節(jié)點連接的適配器adapter進行數(shù)據(jù)傳輸。
[0003]下面結合圖1所示的adapter的發(fā)送場景示意圖對數(shù)據(jù)發(fā)送過程進行簡單介紹。
[0004]首先,仲裁器arbiter確定當前處理的QP的身份標識,并由發(fā)送引擎send queueprocess engine判斷高速緩沖存儲器cache中是否保存有該QP的上下文,如果有,則直接從cache內讀??;如果沒有,則暫停當前的處理過程,先進行cache替換,即通過訪問內存的方式獲取當前處理的QP的上下文。
[0005]需要說明的是,QP的上下文中保存有該QP對應的三個隊列在內存的位置、工作隊列元素WQE (Work Queue Element)的個數(shù)等信息,占用的存儲量較大(一個上下文大概512字節(jié)),適配器中無法保存所有QP的上下文。一般情況下,QP的上下文被保存在內存,但為了提高適配器對QP上下文的訪問速度,可將常用QP上下文保存在適配器的cache內。
[0006]其次,在發(fā)送引擎獲取到QP的上下文之后,即能獲知該QP的發(fā)送隊列SQ在內存中的位置,進而可讀取出SQ隊列的首個WQE,并將其對應的數(shù)據(jù)發(fā)送至接收節(jié)點。
[0007]對于接收節(jié)點來說,可結合圖2所示的adapter的接收場景示意圖對數(shù)據(jù)接收過程進行簡單介紹。
[0008]首先,接收引擎receive queue process engine接收到發(fā)送節(jié)點發(fā)送的數(shù)據(jù)之后,判斷cache中是否保存有該數(shù)據(jù)對應的QP的上下文,如果有,則直接從cache內讀??;如果沒有,同樣要暫停當前的處理過程,進行cache替換,從內存中獲取QP的上下文。
[0009]其次,在接收引擎獲取到QP的上下文之后,即能獲知該QP的接收隊列RQ在內存中的位置,進而可讀取出RQ隊列的首個WQE,將接收到的數(shù)據(jù)保存到WQE指示的緩沖區(qū),完成數(shù)據(jù)接收過程。
[0010]由上述發(fā)送和接收過程的介紹可知,因為cache中只保存了一些常用QP的上下文,這就可能出現(xiàn)無法在cache中找到QP上下文的情況,而一旦cache不命中,就需要花費較大的代價進行cache替換,就會降低利用QP通信的節(jié)點的數(shù)據(jù)傳輸性能。


【發(fā)明內容】

[0011]本發(fā)明實施例的基于隊列的通信方法及裝置,通過預處理的方式提高利用QP通信的節(jié)點的數(shù)據(jù)傳輸性能。
[0012]為此,本發(fā)明實施例提供如下技術方案:
[0013]第一方面,本發(fā)明實施例提供了一種基于隊列的通信方法,與發(fā)送節(jié)點相連的適配器包括仲裁器、預取器、高速緩沖存儲器和發(fā)送引擎,所述方法包括:
[0014]所述預取器接收所述仲裁器發(fā)送的待處理隊列的身份標識,所述待處理隊列的身份標識由所述仲裁器在獲取當前處理隊列的身份標識時獲?。?br> [0015]所述預取器判斷所述高速緩沖存儲器中是否保存有所述待處理隊列的上下文,如果未保存,則從所述發(fā)送節(jié)點的內存中讀取所述待處理隊列的上下文,并保存至所述高速緩沖存儲器中,供所述發(fā)送引擎發(fā)送所述待處理隊列的數(shù)據(jù)時使用。
[0016]在第一方面的第一種可能的實現(xiàn)方式中,所述方法還包括:
[0017]在所述從所述發(fā)送節(jié)點的內存中讀取所述待處理隊列的上下文之后,
[0018]所述預取器從所述待處理隊列的上下文中提取該待處理隊列對應的配對隊列的身份標識,并將所述配對隊列的身份標識通過所述發(fā)送引擎發(fā)送給接收節(jié)點。
[0019]第二方面,本發(fā)明實施例提供了一種基于隊列的通信方法,與接收節(jié)點相連的適配器包括預取器、高速緩沖存儲器和接收引擎,所述方法包括:
[0020]所述預取器接收所述接收引擎轉發(fā)的配對隊列的身份標識;
[0021]所述預取器判斷所述高速緩沖存儲器中是否保存有所述配對隊列的上下文,如果未保存,則從所述接收節(jié)點的內存中讀取所述配對隊列的上下文,并保存至所述高速緩沖存儲器中,供所述接收引擎接收所述配對隊列的數(shù)據(jù)時使用。
[0022]在第二方面的第一種可能的實現(xiàn)方式中,如果所述接收節(jié)點接收到至少兩個發(fā)送節(jié)點發(fā)送的配對隊列的身份標識,則
[0023]所述預取器接收所述接收引擎轉發(fā)的配對隊列的身份標識,包括:
[0024]所述預取器接收至少兩個配對隊列的身份標識,并按接收順序將所述至少兩個配對隊列的身份標識保存到等候隊列。
[0025]結合第一方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述方法還包括:
[0026]所述預取器依序從所述等候隊列中提取預設個數(shù)的配對隊列;
[0027]所述預取器判斷所述高速緩沖存儲器中是否保存有所述配對隊列的上下文,包括:
[0028]所述預取器判斷所述高速緩沖存儲器中是否保存有提取出的預設個數(shù)的配對隊列的上下文。
[0029]第三方面,本發(fā)明實施例提供了一種基于隊列的通信裝置,所述裝置包括:
[0030]接收單元,用于接收仲裁器發(fā)送的待處理隊列的身份標識,所述待處理隊列的身份標識由所述仲裁器在獲取當前處理隊列的身份標識時獲??;
[0031]判斷單元,用于判斷高速緩沖存儲器中是否保存有所述待處理隊列的上下文;
[0032]讀取單元,用于在所述高速緩沖存儲器中未保存所述待處理隊列的上下文時,從發(fā)送節(jié)點的內存中讀取所述待處理隊列的上下文,并保存至所述高速緩沖存儲器中,供所述發(fā)送引擎發(fā)送所述待處理隊列的數(shù)據(jù)時使用。
[0033]在第三方面的第一種可能的實現(xiàn)方式中,所述裝置還包括:
[0034]提取單元,用于從所述讀取單元讀取的待處理隊列的上下文中提取該待處理隊列對應的配對隊列的身份標識;
[0035]發(fā)送單元,用于將所述提取單元提取的配對隊列的身份標識通過所述發(fā)送引擎發(fā)送給接收節(jié)點。
[0036]第四方面,本發(fā)明實施例提供了一種基于隊列的通信裝置,所述裝置包括:
[0037]接收單元,用于接收接收引擎轉發(fā)的配對隊列的身份標識;
[0038]判斷單元,用于判斷高速緩沖存儲器中是否保存有所述配對隊列的上下文;
[0039]讀取單元,用于在所述高速緩沖存儲器中未保存所述配對隊列的上下文時,從接收節(jié)點的內存中讀取所述配對隊列的上下文,并保存至所述高速緩沖存儲器中,供所述接收引擎接收所述配對隊列的數(shù)據(jù)時使用。
[0040]在第四方面的第一種可能的實現(xiàn)方式中,如果所述接收節(jié)點接收到至少兩個發(fā)送節(jié)點發(fā)送的配對隊列的身份標識,則
[0041]所述接收單元,具體用于接收至少兩個配對隊列的身份標識,并按接收順序將所述至少兩個配對隊列的身份標識保存到等候隊列。
[0042]結合第四方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述裝置還包括:
[0043]提取單元,用于依序從所述等候隊列中提取預設個數(shù)的配對隊列;
[0044]所述判斷單元,具體用于判斷所述高速緩沖存儲器中是否保存有提取出的預設個數(shù)的配對隊列的上下文。
[0045]本發(fā)明實施例的基于隊列的通信方法及裝置,預先將可能會出現(xiàn)cache缺失的隊列的上下文準備好,這樣,就無需在處理該隊列時再實時進行開銷較大的cache替換;另夕卜,還能有效保證數(shù)據(jù)傳輸?shù)倪B續(xù)性,避免傳輸過程中出現(xiàn)暫?,F(xiàn)象,如此就可顯著提高利用QP通信的節(jié)點的數(shù)據(jù)傳輸性能。

【專利附圖】

【附圖說明】
[0046]為了更清楚地說明本申請實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請中記載的一些實施例,對于本領域普通技術人員來講,還可以根據(jù)這些附圖獲得其它的附圖。
[0047]圖1是現(xiàn)有技術中適配器的發(fā)送場景示意圖;
[0048]圖2是現(xiàn)有技術中適配器的接收場景示意圖;
[0049]圖3是兩個節(jié)點利用QP機制通/[目時在內存中建立的二個隊列的不意圖;
[0050]圖4是本發(fā)明中與發(fā)送節(jié)點相連的適配器的結構示意圖;
[0051]圖5是本發(fā)明發(fā)送方的基于隊列的通信方法實施例1的流程圖;
[0052]圖6是本發(fā)明發(fā)送方的基于隊列的通信方法實施例2的流程圖;
[0053]圖7是本發(fā)明中與接收節(jié)點相連的適配器的結構示意圖;
[0054]圖8是本發(fā)明接收方的基于隊列的通信方法實施例1的流程圖;
[0055]圖9是本發(fā)明接收方的基于隊列的通信方法實施例2的流程圖;
[0056]圖10是本發(fā)明中準備預設個數(shù)的配對隊列的上下文的流程圖;
[0057]圖1la是本發(fā)明中發(fā)送節(jié)點與適配器的結構示意圖;
[0058]圖1lb是本發(fā)明中接收節(jié)點與適配器的結構示意圖;
[0059]圖12是本發(fā)明發(fā)送方的基于隊列的通信裝置實施例1的示意圖;
[0060]圖13是本發(fā)明發(fā)送方的基于隊列的通信裝置實施例2的示意圖;
[0061]圖14是本發(fā)明接收方的基于隊列的通信裝置實施例1的示意圖;
[0062]圖15是本發(fā)明接收方的基于隊列的通信裝置實施例2的示意圖;
[0063]圖16是本發(fā)明發(fā)送方的通信裝置的硬件構成示意圖;
[0064]圖17是本發(fā)明接收方的通信裝置的硬件構成示意圖。

【具體實施方式】
[0065]為了使本【技術領域】的人員更好地理解本發(fā)明方案,下面結合附圖和實施方式對本發(fā)明實施例作進一步的詳細說明。
[0066]下面先對本發(fā)明的應用場景進行解釋說明。
[0067]本發(fā)明實施例主要針對的是隊列通信機制,對于一個Queue Pair來說,其對應有發(fā)送隊列SQ、接收隊列RQ、完成隊列CQ三個隊列。參見圖3,示出了兩個節(jié)點利用QP機制通信時在內存中建立的三個隊列的示意圖,假設在當前的通信過程中,節(jié)點I為數(shù)據(jù)發(fā)送方,節(jié)點2為數(shù)據(jù)接收方,數(shù)據(jù)傳輸過程可大致描述為:
[0068]1.節(jié)點I的軟件層在內存中準備需要傳輸?shù)臄?shù)據(jù)。
[0069]對應地,節(jié)點2的軟件層則在內存中準備接收數(shù)據(jù)存放的緩沖區(qū)。
[0070]2.節(jié)點I的軟件層創(chuàng)建傳輸?shù)墓ぷ麝犃性豔QE (Work Queue Element),并將WQE按序插入到SQ中,然后配置SQ對應的QP的上下文(主要是配置WQE的數(shù)目,一般情況下,WQE數(shù)目不為零就表示還有數(shù)據(jù)需要發(fā)送,WQE數(shù)目為零則表示無數(shù)據(jù)發(fā)送)。需要說明的是,每個WQE記錄了一個或多個需要發(fā)送的數(shù)據(jù)緩沖區(qū),具體可包括每個數(shù)據(jù)緩沖區(qū)的起始虛擬地址和大小。
[0071]對應地,節(jié)點2的軟件層創(chuàng)建接收的工作隊列元素WQE,并將WQE按序插入到RQ中。需要說明的是,RQ中的每個WQE指向一個或多個接收緩沖區(qū),具體可包括每個接收緩沖區(qū)的起始虛擬地址和大小。
[0072]3.與節(jié)點I相連的適配器adapter處理SQ隊列的首個WQE,從WQE指明的數(shù)據(jù)緩沖區(qū)取出數(shù)據(jù)并發(fā)送至節(jié)點2。
[0073]對應地,與節(jié)點2相連的adapter —旦接收到數(shù)據(jù),便取出RQ隊列的首個WQE,將接收到的數(shù)據(jù)保存到WQE指明的緩沖區(qū)中。
[0074]4.當節(jié)點I的adapter處理好一個SQ的WQE時,即會生成一個完成隊列元素CQE(Complet1n Queue Element),用以指示一個發(fā)送的完成,并將該CQE插入到節(jié)點I的CQ中。
[0075]對應地,當節(jié)點2的adapter接收好一個數(shù)據(jù)包時,也會生成一個CQE插入到節(jié)點2的CQ中,以此來指示一個接收的完成。
[0076]如【背景技術】所作介紹,現(xiàn)有技術在按照上述方式進行數(shù)據(jù)傳輸時,可能會出現(xiàn)cache不命中導致的傳輸性能下降的問題,本發(fā)明實施例即是為了解決這一問題而提出,下面進行解釋說明。
[0077]參見圖4,示出了本發(fā)明與發(fā)送節(jié)點相連的適配器的結構示意圖,所述適配器包括仲裁器101、預取器102、高速緩沖存儲器103和發(fā)送引擎104。其中,
[0078]所述仲裁器,用于獲取當前處理隊列的身份標識與待處理隊列的身份標識,并將所述當前處理隊列的身份標識發(fā)送至所述發(fā)送引擎,將所述待處理隊列的身份標識發(fā)送至所述預取器;
[0079]所述發(fā)送引擎,用于從所述高速緩沖存儲器中讀取所述當前處理隊列的上下文,并根據(jù)所述上下文從所述發(fā)送節(jié)點的內存中讀取當前發(fā)送的數(shù)據(jù),將所述當前發(fā)送的數(shù)據(jù)發(fā)送至接收節(jié)點;
[0080]所述預取器,用于判斷所述高速緩沖存儲器中是否保存有所述待處理隊列的上下文,如果未保存,則從所述發(fā)送節(jié)點的內存中讀取所述待處理隊列的上下文,并保存至所述高速緩沖存儲器中,供所述發(fā)送引擎發(fā)送所述待處理隊列的數(shù)據(jù)時使用;
[0081]所述預取器,還用于從所述待處理隊列的上下文中提取該待處理隊列對應的配對隊列的身份標識,并將所述配對隊列的身份標識發(fā)送至所述發(fā)送引擎;
[0082]所述發(fā)送引擎,還用于將所述配對隊列的身份標識發(fā)送給所述接收節(jié)點。
[0083]下面結合圖5所示的實施例1的流程圖,對本發(fā)明實施例的通信過程進行解釋說明,所述方法可包括:
[0084]步驟201,所述預取器接收所述仲裁器發(fā)送的待處理隊列的身份標識,所述待處理隊列的身份標識由所述仲裁器在獲取當前處理隊列的身份標識時獲取。
[0085]為了解決cache不命中對數(shù)據(jù)傳輸性能造成的影響,仲裁器在向發(fā)送引擎發(fā)送當前處理隊列的身份標識時,還可提前獲取下一個需要處理的隊列的身份標識,并將其作為待處理隊列,將其身份標識發(fā)送至預取器。這樣,在發(fā)送引擎正常處理發(fā)送當前處理隊列的數(shù)據(jù)的同時,預取器還能提前為發(fā)送引擎準備好待處理隊列的上下文,這樣,在發(fā)送引擎處理完當前處理隊列的數(shù)據(jù)之后,即可直接利用準備好的待處理隊列的上下文處理發(fā)送待處理隊列的數(shù)據(jù),避免發(fā)送引擎獲取待處理隊列上下文時出現(xiàn)cache不命中的情況,就能解決由此引起的傳輸性能下降問題。
[0086]一般情況下,在發(fā)送節(jié)點的軟件層向SQ添加完WQE,并配置完上下文之后,上下文即會通知適配器其當前有數(shù)據(jù)要發(fā)送,如此仲裁器就知曉了其要處理哪個QP。
[0087]以發(fā)送節(jié)點具有3個QP為例,且身份標識分別為QP1、QP2、QP3,若軟件層向QP2對應的SQ中插入了一個WQE,并配置上下文中的WQE數(shù)目加1,則QP2的上下文即會向適配器發(fā)送指令;接著,軟件層又向QPl對應的SQ中插入了一個WQE,同時配置上下文中的WQE數(shù)目加1,此時QPl的上下文亦會向適配器發(fā)送指令;最后,軟件層向QP3對應的SQ中插入了一個WQE,并配置上下文中的WQE數(shù)目加1,同樣地QP3的上下文也會向適配器發(fā)送指令。按照順序處理原則,適配器就知曉了發(fā)送節(jié)點的3個QP的處理順序為QP2、QP1、QP3,這樣,仲裁器即可明確知曉:若當前隊列為QP2,待處理隊列就是QPl ;若當前隊列為QP1,待處理隊列就是QP3 ;若當前隊列為QP3,待處理隊列就是QP2。
[0088]需要說明的是,本步驟中提及的仲裁器在獲取當前處理隊列的身份標識時獲取待處理隊列的身份標識,是相對現(xiàn)有技術獲取當前隊列身份標識并等待發(fā)送引擎發(fā)送當前處理隊列的數(shù)據(jù)之后,再獲取待處理隊列的身份標識而言,也就是說,仲裁器并不是絕對意義上的同時獲取到當前處理隊列和待處理隊列的身份標識。
[0089]步驟202,所述預取器判斷所述高速緩沖存儲器中是否保存有所述待處理隊列的上下文,如果未保存,則執(zhí)行步驟203 ;否則不作處理,結束流程。
[0090]步驟203,所述預取器從所述發(fā)送節(jié)點的內存中讀取所述待處理隊列的上下文,并保存至所述高速緩沖存儲器中,供所述發(fā)送引擎發(fā)送所述待處理隊列的數(shù)據(jù)時使用。
[0091]因為cache中保存的是部分常用QP的上下文,而所有QP的上下文是保存在發(fā)送節(jié)點的內存中的,因此在cache中查找隊列的上下文就存在以下兩種結果:
[0092]一是,待處理隊列的上下文保存在cache中,可通過訪問cache的方式獲得,稱為“cache命中”,對應這種結果,適配器此時已為發(fā)送引擎準備好待處理隊列的上下文,無需預取器執(zhí)行任何動作;
[0093]二是,待處理隊列的上下文未保存在cache中,無法通過訪問cache的方式獲得,稱為“cache不命中”或“cache缺失”,對應這種結果,就需要本發(fā)明實施例的預取器通過cache替換的方式,提前為發(fā)送引擎準備好待處理隊列的上下文。
[0094]這樣,在步驟201接收到待處理隊列的身份標識后,預取器即可先從cache中查找具有該身份標識的隊列的上下文,并以此判斷其查找結果是上述兩種情況中的哪種。
[0095]如果是第一種,預取器則無需做任何處理。因為,在發(fā)送引擎接收到仲裁器發(fā)送的待處理隊列的身份標識之后,可以直接訪問cache獲取待處理隊列的上下文,并根據(jù)上下文進行數(shù)據(jù)發(fā)送。
[0096]如果是第二種,預取器則需要訪問發(fā)送節(jié)點的內存進行cache替換,也即從發(fā)送節(jié)點的內存中查找具有待處理隊列的身份標識的隊列的上下文,并保存至cache中,供發(fā)送引擎在需要時使用。
[0097]本發(fā)明實施例通過這種預處理或預測的方式,預先將可能會出現(xiàn)cache缺失的隊列的上下文準備好,這樣,一方面發(fā)送引擎就無需在處理該隊列時再實時進行開銷較大的cache替換;另一方面還能有效保證數(shù)據(jù)傳輸?shù)倪B續(xù)性,避免傳輸過程中出現(xiàn)暫?,F(xiàn)象,如此,就顯著提高了本發(fā)明實施例的發(fā)送節(jié)點的數(shù)據(jù)傳輸性能。
[0098]參見圖6,示出了本發(fā)明實施例通信方法實施例2的流程圖,可包括:
[0099]步驟301,所述預取器接收所述仲裁器發(fā)送的待處理隊列的身份標識,所述待處理隊列的身份標識由所述仲裁器在獲取當前處理隊列的身份標識時獲取。
[0100]步驟302,所述預取器判斷所述高速緩沖存儲器中是否保存有所述待處理隊列的上下文,如果未保存,則執(zhí)行步驟303 ;否則不作處理,結束流程。
[0101]步驟303,所述預取器從所述發(fā)送節(jié)點的內存中讀取所述待處理隊列的上下文,并保存至所述高速緩沖存儲器中,供所述發(fā)送引擎發(fā)送所述待處理隊列的數(shù)據(jù)時使用。
[0102]步驟301?303與步驟201?203相同,此處不再贅述。
[0103]步驟304,所述預取器從所述待處理隊列的上下文中提取該待處理隊列對應的配對隊列的身份標識,并將所述配對隊列的身份標識通過所述發(fā)送引擎發(fā)送給接收節(jié)點。
[0104]對于接收節(jié)點來說,其只有在接收到發(fā)送節(jié)點發(fā)的數(shù)據(jù)之后,才知道要從cache中讀取哪個隊列的上下文,若此時出現(xiàn)cache缺失,會導致接收操作的停止,致使數(shù)據(jù)傳輸性能下降更為明顯。為了解決這一問題,預取器還可從待處理隊列的上下文中提取配對隊列的身份標識,并將該身份標識發(fā)送至發(fā)送引擎,由發(fā)送引擎通過優(yōu)先級較高的控制信道將配對隊列的身份標識發(fā)送至接收節(jié)點,從而使接收節(jié)點相連的適配器也通過預處理的方式,預先為接收引擎準備好配對隊列的上下文。如此方案,既可使發(fā)送節(jié)點提前準備好待處理隊列的上下文,供發(fā)送引擎在發(fā)送待處理隊列的數(shù)據(jù)時使用;亦可使接收節(jié)點提前準備好配對隊列的上下文,供接收引擎在接收配對隊列的數(shù)據(jù)時使用(如果從發(fā)送節(jié)點的角度來說,此處可理解為,供接收引擎在接收發(fā)送節(jié)點發(fā)送的待處理隊列的數(shù)據(jù)時使用)。
[0105]需要說明的是,QP在發(fā)送節(jié)點和接收節(jié)點處是成對出現(xiàn)的,二者的身份標識可能一致,如某個隊列在發(fā)送節(jié)點處的身份標識為QP1,該隊列的配對隊列在接收節(jié)點處的身份標識也為QPl。或者,二者的身份標識也可能不一致,如某個隊列在發(fā)送節(jié)點處的身份標識為QP4,而其配對隊列在接收節(jié)點處的身份標識為QP8。這種配對關系保存在QP的上下文中,為了使接收節(jié)點相連的適配器能準確找到QP數(shù)據(jù)的接收緩沖區(qū),預取器優(yōu)選還要從QP的上下文中提取出QP的配對隊列的身份標識,發(fā)送給接收節(jié)點相連的適配器。
[0106]綜上所述可知,本實施例中獲取隊列的上下文主要是出于以下兩個目的:
[0107]第一個是,上下文中保存有QP的三個隊列在內存的位置。這樣發(fā)送引擎就可據(jù)此訪問這三個隊列,對于發(fā)送節(jié)點來說,發(fā)送引擎主要是訪問發(fā)送隊列SQ,進而根據(jù)SQ的首個WQE讀取到要發(fā)送的數(shù)據(jù),進行數(shù)據(jù)發(fā)送。如此,就可解決發(fā)送節(jié)點因cache缺失導致的傳輸性能下降問題。
[0108]第二個是,上下文中保存有QP的配對隊列的身份標識。為了使接收節(jié)點相連的適配器能準確找到QP數(shù)據(jù)的接收緩沖區(qū),還應將QP的配對隊列的身份標識發(fā)送給接收節(jié)點相連的適配器,進而使適配器內的預取器預先準備好配對隊列的上下文,供接收引擎在需要時使用。如此,就可解決接收節(jié)點因cache缺失導致的傳輸性能下降問題。
[0109]另外,需要說明的是,若步驟302判定cache中保存有待處理隊列的上下文,預取器則不需要進行cache替換,但此時接收節(jié)點相連的適配器的cache內可能保存有配對隊列的上下文,也可能未保存,因此,在判定發(fā)送節(jié)點相連的適配器的cache內保存有待處理隊列的上下文時,預取器亦可從中提取出配對隊列的身份標識,將其發(fā)送給接收節(jié)點,供接收節(jié)點相連的適配器內的預取器預先準備好配對隊列的上下文,本發(fā)明實施例對此可不做限定。
[0110]參見圖7,示出了本發(fā)明與接收節(jié)點相連的適配器的結構示意圖,所述適配器包括預取器401、高速緩沖存儲器402和接收引擎403。其中,
[0111]所述接收引擎,用于接收發(fā)送節(jié)點發(fā)送的數(shù)據(jù),并從所述高速緩沖存儲器中讀取所述數(shù)據(jù)對應的隊列的上下文,并根據(jù)所述上下文將所述數(shù)據(jù)保存至所述接收節(jié)點的內存;
[0112]所述接收引擎,還用于接收所述發(fā)送節(jié)點發(fā)送的配對隊列的身份標識,并將所述配對隊列的身份標識轉發(fā)給所述預取器;
[0113]所述預取器,用于接收所述接收引擎轉發(fā)的配對隊列的身份標識,并判斷所述高速緩沖存儲器中是否保存有所述配對隊列的上下文,如果未保存,則從所述接收節(jié)點的內存中讀取所述配對隊列的上下文,并保存至所述高速緩沖存儲器中,供所述接收引擎接收所述配對隊列的數(shù)據(jù)時使用。
[0114]下面結合圖8所示的實施例1的流程圖,對本發(fā)明實施例的通信過程進行解釋說明,所述方法可包括:
[0115]步驟501,所述預取器接收所述接收引擎轉發(fā)的配對隊列的身份標識。
[0116]為了解決接收節(jié)點因cache缺失導致的傳輸性能下降問題,與發(fā)送節(jié)點相連的適配器在處理當前隊列的數(shù)據(jù)發(fā)送時,還會提前獲取到下一個要處理隊列的身份標識(即待處理隊列的身份標識),并找到該待處理隊列在接收節(jié)點處的配對隊列的身份標識,將其發(fā)送給與接收節(jié)點相連的適配器,以使適配器能提前準備好配對隊列的上下文。這樣,在適配器需要處理配對隊列時,cache中已保存有該隊列的上下文,就不會出現(xiàn)cache缺失現(xiàn)象。
[0117]本步驟即是適配器接收配對隊列身份標識的過程。與發(fā)送節(jié)點相連的適配器的發(fā)送引擎通過控制信道將配對隊列的身份標識發(fā)送給接收節(jié)點的適配器,由適配器的接收引擎接收后,轉發(fā)給預取器,以使預取器提前準備具有該身份標識的配對隊列的上下文。
[0118]需要說明的是,接收節(jié)點當前可能只與一個發(fā)送節(jié)點相通信,此時預取器接收的就是一個發(fā)送節(jié)點發(fā)送的配對隊列的身份標識;或者,接收節(jié)點還可同時與至少兩個發(fā)送節(jié)點相通信,那么,預取器接收的就是這至少兩個發(fā)送節(jié)點發(fā)送的至少兩個配對隊列的身份標識。對應這種情況,為了保證接收節(jié)點與每個發(fā)送節(jié)點的正常通信,預取器會按照順序處理原則,依序將接收到的配對隊列的身份標識保存至一個先進先出的等候隊列,以逐個準備每個配對隊列的上下文。
[0119]步驟502,所述預取器判斷所述高速緩沖存儲器中是否保存有所述配對隊列的上下文,如果未保存,則執(zhí)行步驟503 ;否則不作處理,結束流程。
[0120]步驟503,所述預取器從所述接收節(jié)點的內存中讀取所述配對隊列的上下文,并保存至所述高速緩沖存儲器中,供所述接收引擎接收所述配對隊列的數(shù)據(jù)時使用。
[0121]如上文在圖5所示實施例的步驟202、203處所做介紹。接收節(jié)點的內存中保存著所有QP的上下文,適配器的cache內只保存有部分常用QP的上下文,因此,在預取器判斷cache中是否保存配對隊列的上下文時,也存在以下兩種判斷結果:
[0122]一是,cache中保存有配對隊列的上下文,也就是說,適配器已為接收引擎準備好配對隊列的上下文,無需預取器執(zhí)行任何動作;
[0123]二是,cache中未保持配對隊列的上下文,也即出現(xiàn)cache缺失現(xiàn)象,此時就需要本發(fā)明實施例的預取器通過cache替換的方式,提前為接收引擎準備好配對隊列的上下文。
[0124]本發(fā)明實施例通過這種預處理或預測的方式,預先將可能會出現(xiàn)cache缺失的隊列的上下文準備好,這樣,一方面接收引擎就無需在接收到配對隊列的數(shù)據(jù)之后再實時訪問cache并進行開銷較大的cache替換;另一方面還能有效保證數(shù)據(jù)傳輸?shù)倪B續(xù)性,避免傳輸過程中出現(xiàn)停止現(xiàn)象,如此,就顯著提高了本發(fā)明實施例的接收節(jié)點的數(shù)據(jù)傳輸性能。
[0125]參見圖9,示出了本發(fā)明實施例通信方法實施例2的流程圖,可包括:
[0126]步驟601,所述預取器接收所述至少兩個配對隊列的身份標識,并按接收順序將所述至少兩個配對隊列的身份標識保存到等候隊列。
[0127]本步驟與步驟501相同,但主要針對的是一個接收節(jié)點與至少兩個發(fā)送節(jié)點相通信的情況而言,此處不再贅述。
[0128]步驟602,所述預取器依序從所述等候隊列中提取預設個數(shù)的配對隊列。
[0129]發(fā)送節(jié)點按照一定順序向接收節(jié)點發(fā)送配對隊列的身份標識之后,在后續(xù)發(fā)送配對隊列的數(shù)據(jù)時卻不一定嚴格按照發(fā)送身份標識的順序進行,為了進一步提高本發(fā)明實施例接收節(jié)點的數(shù)據(jù)傳輸性能,預取器可預先多準備幾個配對隊列的上下文,供接收引擎使用。如此,就需要預取器從等候隊列中提取出預設個數(shù)的配對隊列進行處理,如提取處理等候隊列的前3個配對隊列。
[0130]下面結合具體示例對本步驟進行舉例說明。如接收節(jié)點目前與5個發(fā)送節(jié)點相通信,且接收節(jié)點接收這5個發(fā)送節(jié)點發(fā)送的配對隊列的身份標識的順序為:
[0131]發(fā)送節(jié)點I發(fā)送的配對隊列TQP1、發(fā)送節(jié)點2發(fā)送的配對隊列TQP2、發(fā)送節(jié)點3發(fā)送的配對隊列TQP3、發(fā)送節(jié)點4發(fā)送的配對隊列TQP4、發(fā)送節(jié)點5發(fā)送的配對隊列TQP5。
[0132]受實際通信過程的影響,假設發(fā)送節(jié)點發(fā)送配對隊列的數(shù)據(jù)的順序為:
[0133]發(fā)送節(jié)點3發(fā)送的配對隊列TQP3的數(shù)據(jù)、發(fā)送節(jié)點2發(fā)送的配對隊列TQP2的數(shù)據(jù)、發(fā)送節(jié)點4發(fā)送的配對隊列TQP4的數(shù)據(jù)、發(fā)送節(jié)點I發(fā)送的配對隊列TQPl的數(shù)據(jù)、發(fā)送節(jié)點5發(fā)送的配對隊列TQP5的數(shù)據(jù)。
[0134]此時,如果預取器仍按照順序逐一的準備等候隊列中配對隊列的上下文,針對某些隊列仍可能會出現(xiàn)cache缺失現(xiàn)象。如,按照配對隊列身份標識的接收順序,預取器應先準備TQPl的上下文,并在接收引擎處理TQPl的數(shù)據(jù)時,準備TQP2的上下文;然而參見配對隊列數(shù)據(jù)的接收順序可知,接收引擎先接收的是TQP3的數(shù)據(jù),而此時預取器尚未準備好TQP3的上下文,因此,在接收引擎訪問cache時,仍會出現(xiàn)cache缺失現(xiàn)象。
[0135]為了解決上述問題,進一步提高數(shù)據(jù)傳輸性能,預取器可成批準備好預設個數(shù)的配對隊列的上下文,供接收引擎使用。如預設個數(shù)為3,則預取器從等候隊列中提取出的配對隊列就是TQP1、TQP2、TQP3,對應的就可提前準備好這3個隊列的上下文,這樣,在接收引擎在接收到TQP3的數(shù)據(jù)之后,就可訪問cache獲得TQP3的上下文,進行正常連續(xù)的數(shù)據(jù)接收。
[0136]步驟603,所述預取器判斷所述高速緩沖存儲器中是否保存有提取出的預設個數(shù)的配對隊列的上下文,如果未保存,則執(zhí)行步驟604 ;否則不作處理,結束流程。
[0137]步驟604,所述預取器從所述接收節(jié)點的內存中讀取所述高速緩沖存儲器未保存的配對隊列的上下文,并保存至所述高速緩沖存儲器中,供所述接收引擎接收所述配對隊列的數(shù)據(jù)時使用。
[0138]因為本實施例中要提前準備預設個數(shù)的配對隊列的上下文,因此步驟603判斷cache中是否保存有提取出的預設個數(shù)的配對隊列的上下文,指的是cache中保存所有提取出的配對隊列的上下文時,就不需要預取器執(zhí)行任何動作;若cache未保存部分或全部提取出的配對隊列的上下文,就需要預取器進行cache替換,提前將這些cache未保存的上下文準備好。
[0139]作為本實施例中提前準備預設個數(shù)的配對隊列的上下文的一種實現(xiàn)方式,可參見圖10所示流程圖,包括:
[0140]步驟701,所述預取器從所述預設個數(shù)的配對隊列中選取一個作為當前配對隊列;
[0141]步驟702,所述預取器判斷所述高速緩沖存儲器中是否保存有所述當前配對隊列的上下文,如果未保存,則執(zhí)行步驟703,否則返回執(zhí)行所述步驟701。
[0142]步驟703,所述預取器從所述接收節(jié)點的內存中讀取所述當前配對隊列的上下文,并保存至所述高速緩沖存儲器中,供所述接收引擎接收所述當前配對隊列的數(shù)據(jù)時使用;然后返回執(zhí)行所述步驟701,直至判斷完所有提取出的配對隊列。
[0143]在從預設個數(shù)的配對隊列中選取一個作為當前配對隊列時,可按配對隊列在后續(xù)隊列的先后順序選擇,如上述示例中,可先選TQPl作為當前處理隊列,然后在下一輪判斷過程中選取TQP2作為當前處理隊列,最后選取TQP3作為當前處理隊列。此外,還可按照其它方式選取,如先處理奇數(shù)位再處理偶數(shù)位的配對隊列TQP1、TQP3、TQP2,或者,隨機從中選取當前配對隊列TQP3、TQP1、TQP2,本發(fā)明對此可不做限定。
[0144]以上就從接收節(jié)點和發(fā)送節(jié)點兩方介紹了本發(fā)明方案的具體實現(xiàn)過程,下面再結合圖1 la、I Ib對本發(fā)明實施例的通信過程進行解釋說明。
[0145]參見圖11a,示出了發(fā)送節(jié)點(圖中主要體現(xiàn)的是節(jié)點的CPU及內存MEM,其中QP的上下文context保存在MEM中)與適配器adapter的結構示意圖。
[0146]1.仲裁器arbiter在向發(fā)送引擎發(fā)送當前處理周期需要處理的QP身份標識(以QP4為例)之外,還會向預取器發(fā)送即將處理的QP的身份標識(不妨稱為next_qp,以next_qp=QP3 為例)。
[0147]2.預取器接收到next_qp之后,首先查詢cache中是否保存有next_qp的上下文(即qp conteXt3),若有則不作處理,等待接收仲裁器發(fā)送的新的待處理隊列的身份標識(結合圖1la所示示例,新的待處理隊列即為QPl);若沒有,預取器就需要從內存中將qpcontext3 預取到 cache 中。
[0148]3.預取器從qp context3中查到next_qp對應的目的節(jié)點(即數(shù)據(jù)發(fā)送過程的接收節(jié)點),以及在目的節(jié)點中與next_qp配對的配對隊列的身份標識,不妨稱為next_tqp(結合圖1la所示示例,next_tqp=TQP7,并將next_tqp傳遞給發(fā)送引擎。
[0149]4.發(fā)送引擎接收到預取器發(fā)送的neXt_tqp之后,通過控制信息通道(專用于傳遞優(yōu)先級最高的控制幀的通道,一般為QP0,即QPO —般只用來發(fā)送優(yōu)先級最高的控制幀,不做其它用途),將next_tqp傳遞給目的節(jié)點。
[0150]5.當發(fā)送引擎處理完當前處理隊列QP4的數(shù)據(jù)之后,仲裁器即會將QP3作為當前處理隊列發(fā)送給發(fā)送引擎,發(fā)送引擎即可訪問cache,從中讀取QP3的上下文qp context3(可能是cache本來就保存有,也可能是預取器按上述步驟準備好的),并通過qp context3保存的內容獲知QP3的發(fā)送隊列SQ在內存的什么位置,進而從中獲取當前發(fā)送的WQE (這一信號走向未在圖中示出),并通過數(shù)據(jù)信道將其發(fā)送給目的節(jié)點。
[0151]參見圖11b,示出了接收節(jié)點(圖中主要體現(xiàn)的是節(jié)點的CPU及內存MEM,其中QP的上下文context保存在MEM中)與適配器adapter的結構示意圖。
[0152]6.作為接收方的adapter,當接收到特殊控制通道傳遞過來的信息next_tqp之后,即將next_tqp傳遞給預取器。
[0153]因預取器可能會接收到多個next_tqp,因此在預取器中設置有一個先入先出的等候隊列,用于保存接收到的next_tqp。
[0154]7.預取器從等候隊列中取出前η項next_tcip,在cache中查找這些next_tcip對應的context,如果全部查找到,預取器則不作處理;如果存在未查找到的,預取器就需要從內存中將未查找到的next_tqp context預取到cache中。
[0155]8.當接收引擎接收到發(fā)送節(jié)點發(fā)送的next_tqp的數(shù)據(jù)時,如接收到TQP7的數(shù)據(jù),則會訪問cache從中讀取TQP7的上下文(TQP是相對發(fā)送節(jié)點的QP3而言,在接收節(jié)點處其實際上就是QP7,反過來,發(fā)送節(jié)點處的QP3此時則被定義為TQP3)qp context7 (可能是cache本來就保存有,也可能是預取器按上述步驟準備好的),并通過qp context7保存的內容獲知QP7的接收隊列RQ在內存的什么位置,進而從中獲取到用于指明數(shù)據(jù)保存緩沖區(qū)的WQE (這一信號走向未在圖中示出),將接收到的數(shù)據(jù)保存到指定緩沖區(qū),完成數(shù)據(jù)接收。
[0156]綜上所述,對于發(fā)送方而言,在其處理完當前QP之后,需要處理下一個QP時,該QP的上下文已經(jīng)保存在cache中了,于是發(fā)送引擎可以直接訪問cache獲得QP context并進行數(shù)據(jù)傳送。對于接收方而言,當接收到新的數(shù)據(jù)時,由于新的數(shù)據(jù)對應的QP context也已經(jīng)保存在cache中了,所以接收引擎也可以直接訪問cache獲得QP context并進行數(shù)據(jù)接收。
[0157]相應地,本發(fā)明實施例還提供了一種基于隊列的通信裝置,也即上文中提及的預取器。
[0158]參見圖12,示出了本發(fā)明實施例發(fā)送方的基于隊列的通信裝置實施例1的示意圖,所述裝置包括:
[0159]接收單元801,用于接收仲裁器發(fā)送的待處理隊列的身份標識,所述待處理隊列的身份標識由所述仲裁器在獲取當前處理隊列的身份標識時獲取;
[0160]判斷單元802,用于判斷高速緩沖存儲器中是否保存有所述待處理隊列的上下文;
[0161]讀取單元803,用于在所述高速緩沖存儲器中未保存所述待處理隊列的上下文時,從發(fā)送節(jié)點的內存中讀取所述待處理隊列的上下文,并保存至所述高速緩沖存儲器中,供所述發(fā)送引擎發(fā)送所述待處理隊列的數(shù)據(jù)時使用。
[0162]參見圖13,示出了本發(fā)明實施例發(fā)送方的基于隊列的通信裝置實施例2的示意圖,所述裝置包括:
[0163]接收單元901,用于接收仲裁器發(fā)送的待處理隊列的身份標識,所述待處理隊列的身份標識由所述仲裁器在獲取當前處理隊列的身份標識時獲??;
[0164]判斷單元902,用于判斷高速緩沖存儲器中是否保存有所述待處理隊列的上下文;
[0165]讀取單元903,用于在所述高速緩沖存儲器中未保存所述待處理隊列的上下文時,從發(fā)送節(jié)點的內存中讀取所述待處理隊列的上下文,并保存至所述高速緩沖存儲器中,供所述發(fā)送引擎發(fā)送所述待處理隊列的數(shù)據(jù)時使用;
[0166]提取單元904,用于從所述讀取單元讀取的待處理隊列的上下文中提取該待處理隊列對應的配對隊列的身份標識;
[0167]發(fā)送單元905,用于將所述提取單元提取的配對隊列的身份標識通過所述發(fā)送引擎發(fā)送給接收節(jié)點。
[0168]參見圖14,示出了本發(fā)明實施例接收方的基于隊列的通信裝置實施例1的示意圖,所述裝置包括:
[0169]接收單元1001,用于接收接收引擎轉發(fā)的配對隊列的身份標識;
[0170]判斷單元1002,用于判斷高速緩沖存儲器中是否保存有所述配對隊列的上下文;
[0171]讀取單元1003,用于在所述高速緩沖存儲器中未保存所述配對隊列的上下文時,從接收節(jié)點的內存中讀取所述配對隊列的上下文,并保存至所述高速緩沖存儲器中,供所述接收引擎接收所述配對隊列的數(shù)據(jù)時使用。
[0172]如果所述接收節(jié)點接收到至少兩個發(fā)送節(jié)點發(fā)送的配對隊列的身份標識,則參見圖15,示出了本發(fā)明實施例接收方的基于隊列的通信裝置實施例2的示意圖,所述裝置包括:
[0173]接收單元1101,具體用于接收所述至少兩個配對隊列的身份標識,并按接收順序將所述至少兩個配對隊列的身份標識保存到等候隊列;
[0174]提取單元1102,用于依序從所述等候隊列中提取預設個數(shù)的配對隊列;
[0175]判斷單元1103,具體用于判斷所述高速緩沖存儲器中是否保存有提取出的預設個數(shù)的配對隊列的上下文。
[0176]讀取單元1104,用于在所述高速緩沖存儲器中未保存所述提取出的預設個數(shù)的配對隊列的上下文時,從接收節(jié)點的內存中讀取所述未保存的配對隊列的上下文,并保存至所述高速緩沖存儲器中,供所述接收引擎接收所述配對隊列的數(shù)據(jù)時使用。
[0177]進一步地,本發(fā)明實施例還提供了通信裝置的硬件構成??砂ㄖ辽僖粋€處理器(例如CPU),至少一個網(wǎng)絡接口或者其它通信接口,存儲器,和至少一個通信總線,用于實現(xiàn)這些裝置之間的連接通信。處理器用于執(zhí)行存儲器中存儲的可執(zhí)行模塊,例如計算機程序。存儲器可能包含高速隨機存取存儲器(RAM:Random Access Memory),也可能還包括非不穩(wěn)定的存儲器(non-volatile memory),例如至少一個磁盤存儲器。通過至少一個網(wǎng)絡接口(可以是有線或者無線)實現(xiàn)該系統(tǒng)網(wǎng)關與至少一個其它網(wǎng)元之間的通信連接,可以使用互聯(lián)網(wǎng),廣域網(wǎng),本地網(wǎng),城域網(wǎng)等。
[0178]參見圖16,在一些實施方式中,存儲器中存儲了程序指令,程序指令可以被處理器執(zhí)行,其中,程序指令包括接收單元801、判斷單元802、讀取單元803,各單元的具體實現(xiàn)可參見圖12所揭示的相應單元。
[0179]參見圖17,在一些實施方式中,存儲器中存儲了程序指令,程序指令可以被處理器執(zhí)行,其中,程序指令包括接收單元1001、判斷單元1002、讀取單元1003,各單元的具體實現(xiàn)可參見圖14所揭示的相應單元。
[0180]本發(fā)明方案可以在由計算機執(zhí)行的計算機可執(zhí)行指令的一般上下文中描述,例如程序單元。一般地,程序單元包括執(zhí)行特定任務或實現(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結構等等。也可以在分布式計算環(huán)境中實踐本發(fā)明方案,在這些分布式計算環(huán)境中,由通過通信網(wǎng)絡而被連接的遠程處理設備來執(zhí)行任務。在分布式計算環(huán)境中,程序單元可以位于包括存儲設備在內的本地和遠程計算機存儲介質中。
[0181]本說明書中的各個實施例均采用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其它實施例的不同之處。尤其,對于裝置實施例而言,由于其基本相似于方法實施例,所以描述得比較簡單,相關之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。本領域普通技術人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
[0182]以上對本發(fā)明實施例進行了詳細介紹,本文中應用了【具體實施方式】對本發(fā)明進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及設備;同時,對于本領域的一般技術人員,依據(jù)本發(fā)明的思想,在【具體實施方式】及應用范圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本發(fā)明的限制。
【權利要求】
1.一種基于隊列的通信方法,其特征在于,與發(fā)送節(jié)點相連的適配器包括仲裁器、預取器、高速緩沖存儲器和發(fā)送引擎,所述方法包括: 所述預取器接收所述仲裁器發(fā)送的待處理隊列的身份標識,所述待處理隊列的身份標識由所述仲裁器在獲取當前處理隊列的身份標識時獲??; 所述預取器判斷所述高速緩沖存儲器中是否保存有所述待處理隊列的上下文,如果未保存,則從所述發(fā)送節(jié)點的內存中讀取所述待處理隊列的上下文,并保存至所述高速緩沖存儲器中,供所述發(fā)送引擎發(fā)送所述待處理隊列的數(shù)據(jù)時使用。
2.根據(jù)權利要求1所述的方法,其特征在于,所述方法還包括: 在所述從所述發(fā)送節(jié)點的內存中讀取所述待處理隊列的上下文之后, 所述預取器從所述待處理隊列的上下文中提取該待處理隊列對應的配對隊列的身份標識,并將所述配對隊列的身份標識通過所述發(fā)送引擎發(fā)送給接收節(jié)點。
3.一種基于隊列的通信方法,其特征在于,與接收節(jié)點相連的適配器包括預取器、高速緩沖存儲器和接收引擎,所述方法包括: 所述預取器接收所述接收引擎轉發(fā)的配對隊列的身份標識; 所述預取器判斷所述高速緩沖存儲器中是否保存有所述配對隊列的上下文,如果未保存,則從所述接收節(jié)點的內存中讀取所述配對隊列的上下文,并保存至所述高速緩沖存儲器中,供所述接收引擎接收所述配對隊列的數(shù)據(jù)時使用。
4.根據(jù)權利要求3所述的方法,其特征在于,如果所述接收節(jié)點接收到至少兩個發(fā)送節(jié)點發(fā)送的配對隊列的身份標識,則 所述預取器接收所述接收引擎轉發(fā)的配對隊列的身份標識,包括: 所述預取器接收至少兩個配對隊列的身份標識,并按接收順序將所述至少兩個配對隊列的身份標識保存到等候隊列。
5.根據(jù)權利要求4所述的方法,其特征在于,所述方法還包括: 所述預取器依序從所述等候隊列中提取預設個數(shù)的配對隊列; 所述預取器判斷所述高速緩沖存儲器中是否保存有所述配對隊列的上下文,包括:所述預取器判斷所述高速緩沖存儲器中是否保存有提取出的預設個數(shù)的配對隊列的上下文。
6.一種基于隊列的通信裝置,其特征在于,所述裝置包括: 接收單元,用于接收仲裁器發(fā)送的待處理隊列的身份標識,所述待處理隊列的身份標識由所述仲裁器在獲取當前處理隊列的身份標識時獲??; 判斷單元,用于判斷高速緩沖存儲器中是否保存有所述待處理隊列的上下文; 讀取單元,用于在所述高速緩沖存儲器中未保存所述待處理隊列的上下文時,從發(fā)送節(jié)點的內存中讀取所述待處理隊列的上下文,并保存至所述高速緩沖存儲器中,供所述發(fā)送引擎發(fā)送所述待處理隊列的數(shù)據(jù)時使用。
7.根據(jù)權利要求6所述的裝置,其特征在于,所述裝置還包括: 提取單元,用于從所述讀取單元讀取的待處理隊列的上下文中提取該待處理隊列對應的配對隊列的身份標識; 發(fā)送單元,用于將所述提取單元提取的配對隊列的身份標識通過所述發(fā)送引擎發(fā)送給接收節(jié)點。
8.一種基于隊列的通信裝置,其特征在于,所述裝置包括: 接收單元,用于接收接收引擎轉發(fā)的配對隊列的身份標識; 判斷單元,用于判斷高速緩沖存儲器中是否保存有所述配對隊列的上下文; 讀取單元,用于在所述高速緩沖存儲器中未保存所述配對隊列的上下文時,從接收節(jié)點的內存中讀取所述配對隊列的上下文,并保存至所述高速緩沖存儲器中,供所述接收引擎接收所述配對隊列的數(shù)據(jù)時使用。
9.根據(jù)權利要求8所述的裝置,其特征在于,如果所述接收節(jié)點接收到至少兩個發(fā)送節(jié)點發(fā)送的配對隊列的身份標識,則 所述接收單元,具體用于接收至少兩個配對隊列的身份標識,并按接收順序將所述至少兩個配對隊列的身份標識保存到等候隊列。
10.根據(jù)權利要求9所述的裝置,其特征在于,所述裝置還包括: 提取單元,用于依序從所述等候隊列中提取預設個數(shù)的配對隊列; 所述判斷單元,具體用于判斷所述高速緩沖存儲器中是否保存有提取出的預設個數(shù)的配對隊列的上下文。
【文檔編號】H04L12/861GK104426797SQ201310378798
【公開日】2015年3月18日 申請日期:2013年8月27日 優(yōu)先權日:2013年8月27日
【發(fā)明者】張廣飛, 張柳航, 常軼松, 侯銳 申請人:華為技術有限公司, 中國科學院計算技術研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
吉林市| 璧山县| 黔西县| 福贡县| 哈尔滨市| 哈密市| 榆社县| 永顺县| 洪江市| 盖州市| 图木舒克市| 唐河县| 都匀市| 崇左市| 花垣县| 许昌市| 东乡族自治县| 齐齐哈尔市| 莱芜市| 绥芬河市| 弋阳县| 太仆寺旗| 繁峙县| 陆川县| 涡阳县| 济源市| 迭部县| 泸州市| 同德县| 丁青县| 青河县| 桦南县| 香河县| 马尔康县| 蚌埠市| 亚东县| 巴中市| 卢龙县| 揭阳市| 稷山县| 齐河县|