專利名稱:通過多個虛擬通道傳輸分割的數(shù)據(jù)分組的制作方法
技術(shù)領(lǐng)域:
本發(fā)明針對計算機網(wǎng)絡(luò)上的數(shù)據(jù)通信。更具體而言,本發(fā)明針對在ー個計算機網(wǎng)絡(luò)中通過多個虛擬通道的分割的數(shù)據(jù)分組。
背景技術(shù):
計算機頻繁地與輸入/輸出(I/O)単元通信。這種通信的典型特征是必須通過ー個互連來高速發(fā)送數(shù)據(jù)。
這種高速通信面臨的最主要的難題之一是處理器容量和正常情況下所要求的軟件開銷。舉例來說,為了有效地傳輸數(shù)據(jù),計算機的處理器需要根據(jù)可利用的資源情況動態(tài)地配置傳輸數(shù)據(jù)的帶寬。該處理過程需要巨大的軟件開銷,這會阻止計算機中的處理器或者是I/o単元中的ー個I/O控制器以適時的方式執(zhí)行其他任務(wù)?;谏鲜鲈?,需要有ー種方法或設(shè)備在一臺計算機和I/O単元之間有效地傳輸數(shù)據(jù)。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的實施例,提供了一種在傳輸數(shù)據(jù)中使用的方法,該方法包括將至少一個隊列對中的數(shù)據(jù)塊排隊傳輸?shù)交ミB的目的地址,所述至少ー個隊列對的每ー個包括發(fā)送隊列和接收隊列;以及通過與所述至少ー個隊列對相關(guān)聯(lián)的不同的物理端ロ分割地傳輸數(shù)據(jù)塊,其中所述分割包括經(jīng)由所述物理端口中不同的相應(yīng)端ロ發(fā)送所述數(shù)據(jù)塊的不同的相應(yīng)部分。根據(jù)本發(fā)明的實施例,還提供了一種在傳輸數(shù)據(jù)中使用的設(shè)備,該設(shè)備包括用于將至少ー個隊列對中的數(shù)據(jù)塊排隊傳輸?shù)交ミB的目的地址的裝置,所述至少ー個隊列對的每ー個包括發(fā)送隊列和接收隊列;以及用于通過與所述至少ー個隊列對相關(guān)聯(lián)的不同的物理端ロ分割地傳輸數(shù)據(jù)塊的裝置,其中所述分割包括經(jīng)由所述物理端口中不同的相應(yīng)端ロ發(fā)送所述數(shù)據(jù)塊的不同的相應(yīng)部分。根據(jù)本發(fā)明的ー個方面,用于通過互連傳輸數(shù)據(jù)塊的輸入/輸出(I/O)単元,數(shù)據(jù)塊包括多個數(shù)據(jù)分組,所說的I/o単元包括I/O控制器,用于創(chuàng)建涉及數(shù)據(jù)塊的直接存儲器存取(DMA)對象;與該I/O控制器耦合、用于存儲數(shù)據(jù)塊的存儲器;具有第一虛擬接ロ(VI)隊列對和第二虛擬接ロ(VI)隊列對的傳輸,每ー個隊列對都耦合到該互連,該傳輸創(chuàng)建涉及第一數(shù)據(jù)分組的第一描述符和涉及第ニ數(shù)據(jù)分組的第ニ描述符。
根據(jù)本發(fā)明的另ー個方面,一種通過互連向主計算機傳輸數(shù)據(jù)塊的方法,該方法包括(a)在存儲器存儲數(shù)據(jù)塊;(b)創(chuàng)建涉及該數(shù)據(jù)塊的直接存儲器存取(DMA)對象;(c)將數(shù)據(jù)塊分割成多個數(shù)據(jù)分組;(d)創(chuàng)建多個描述符,每ー個描述符涉及其中一個所述數(shù)據(jù)分組;(e)將所述多個描述符放入虛擬接ロ隊列對,所述隊 列對耦合到與主計算機耦合的虛擬通道;以及(f)通過所述互連在虛擬通道中傳輸所述多個數(shù)據(jù)分組。根據(jù)本發(fā)明的又ー個方面,ー種在互連上傳輸數(shù)據(jù)塊的計算機,該數(shù)據(jù)塊包括多個數(shù)據(jù)分組,該計算機包括處理器;與該處理器相耦合用于存儲數(shù)據(jù)塊的存儲器;ー輸入/輸出(I/O)控制器,用于創(chuàng)建涉及該數(shù)據(jù)塊的直接存儲器存取(DMA)對象;具有第一虛擬接ロ(VI)隊列對和第二虛擬接ロ(VI)隊列對的傳輸,每ー個隊列對都耦合到所述互連;該傳輸用于創(chuàng)建涉及第一數(shù)據(jù)分組的第一描述符和涉及第ニ數(shù)據(jù)分組的第二描述符。根據(jù)本發(fā)明的再ー個方面,一種聯(lián)網(wǎng)的計算機系統(tǒng),包括:互連;耦合到該互連的主計算機,該主計算機包括具有第一和第二虛擬接ロ的第一傳輸;稱合到該互連的I/O單元,該I/O單元包括I/O控制器,用于創(chuàng)建涉及該數(shù)據(jù)塊的直接存儲器存取(DMA)對象;與該I/O控制器耦合、用于存儲數(shù)據(jù)塊的第一存儲器;具有第一和第二隊列對的第二傳輸,所述第一隊列對與第一虛擬接ロ相耦合形成第一虛擬通道,所述第二隊列對與第二虛擬接ロ相耦合形成第二虛擬通道;該第二傳輸創(chuàng)建涉及第一數(shù)據(jù)分組的第一描述符和涉及第ニ數(shù)據(jù)分組的第二描述符。本發(fā)明的一個實施方案是ー個I/O単元,該單元通過ー個互連來傳輸其中包含多個數(shù)據(jù)分組的數(shù)據(jù)塊。I/o単元包括ー個I/O控制器和ー個連接到該I/O控制器用于存貯數(shù)據(jù)塊的存儲器。該I/o單元還包含了一個由控制器創(chuàng)建并涉及該數(shù)據(jù)塊的DMA對象和一個包含第一和第二 VI隊列對的傳輸,其中每ー個隊列對都耦合到互連。該I/O單元還包括了由傳輸創(chuàng)建并涉及該第一數(shù)據(jù)分組的第一描述符和由傳輸創(chuàng)建并涉及該第二數(shù)據(jù)分組的第二描述符。
圖I是按照本發(fā)明ー個實施方案的聯(lián)網(wǎng)計算機系統(tǒng)的框圖。圖2是ー個I/O單元的詳細(xì)框圖。
具體實施例方式本發(fā)明的一個實施方案把多個物理通道組合成單個邏輯通道,使用該邏輯通道可在I/o単元與主計算機之間傳輸數(shù)據(jù)。ー個I/O単元包括ー個或多個I/O控制器,以及還包括一個連接到互連的接ロ。圖I是按照本發(fā)明ー個實施方案的聯(lián)網(wǎng)計算機系統(tǒng)的框圖。計算機系統(tǒng)100包括一臺主計算機10和一個連接到互連30的I/O單元40。
互連30的作用就是在聯(lián)網(wǎng)設(shè)備之間充當(dāng)接ロ。在一個實施方案中,互連30是通過將多個交換機組合在一起創(chuàng)建的交換連接的集合。不過,互連30可以是任何已知的用于將聯(lián)網(wǎng)設(shè)備連接在一起的基礎(chǔ)結(jié)構(gòu)。比如,互連30可以包括ー個或多個直接連接(如,一條線路、ー個局域網(wǎng)、或者任何其他類型的網(wǎng)絡(luò)),也可以是ー個或多個可變且動態(tài)的連接(如,開關(guān))。計算機系統(tǒng)100中包括的其它聯(lián)網(wǎng)設(shè)備(沒有顯示在圖I中)同樣也耦合到互連30。主計算機10中包括處理器12。處理器12執(zhí)行包括驅(qū)動程序14的軟件應(yīng)用程序。主計算機10還包括了存儲器16和傳輸20。主計算機10還包括網(wǎng)絡(luò)接ロ卡(“NIC”)25,該卡把主計算機10稱合到互連30。主計算機10和耦合到互連30的設(shè)備使用虛擬接ロ( “VI”)結(jié)構(gòu)通信。VI結(jié)構(gòu)同時為多個應(yīng)用和過程提供了專用的網(wǎng)絡(luò)接ロ的假象,從而“虛擬”了接ロ。VI結(jié)構(gòu)還在VI消費者和一個或多個網(wǎng)絡(luò)之間定義了一個標(biāo)準(zhǔn)接ロ。在本發(fā)明中,驅(qū)動程序14的作用相當(dāng)于ー個VI消費者。在一個實施方案中,用于實現(xiàn)本發(fā)明的VI結(jié)構(gòu)在虛擬接ロ結(jié)構(gòu)規(guī)范(即VI規(guī)范)1.0版中公開,該規(guī)范是在1997年12月19日由康柏公司、英特爾公司和微軟公司公布的。VI規(guī)范可從互聯(lián)網(wǎng)站點http://www. viarch. orR獲得。VI規(guī)范定義了互連節(jié)點和互連存儲設(shè)備之間低延遲、高帶寬的信息傳輸機制。在發(fā)送和接收消息時,低延遲和持續(xù)的高帶寬是通過避免中間數(shù)據(jù)的拷貝和繞開操作系統(tǒng)實現(xiàn)的。與由VI規(guī)范中公開的VI結(jié)構(gòu)執(zhí)行相似功能的其他結(jié)構(gòu)也可用于實施本發(fā)明,因此說,本發(fā)明并不局限于VI結(jié)構(gòu)。傳輸20包括多個VI21-VI24。VI21-VI24中每ー個都包括ー個隊列對(“QP”)。依照VI規(guī)范,ー個QP包括ー個發(fā)送隊列和ー個接收隊列。在一個實施方案中VI21-24中每ー個都有ー個物理端ロ通過NIC25連接到互連30。不過,在其他實施方案中,VI21-24可以共享物理端ロ。I/O單元40包括I/O控制器42、緩沖存儲器44和傳輸50。I/O控制器是為ー個或多個主計算機提供I/o服務(wù)的設(shè)備。I/O服務(wù)包括存儲和檢索數(shù)據(jù)以及傳送數(shù)據(jù)到其它設(shè)備。在其它實施方案中,I/o単元40包括兩個或多個I/O控制器42。緩沖存儲器44是與I/O控制器40相耦合的存儲區(qū)域,并且它可以被放置在任何地方。在一個實施方案中,緩沖存儲器44是獨立的存儲設(shè)備。在其它實施方案中,緩沖存儲器44是磁盤驅(qū)動器60-62的一部分,或者它通過網(wǎng)絡(luò)連接到I/O控制器42。傳輸50包括QP51-54。I/O單元40中的ー個QP和與其對應(yīng)的主計算機10中的VI是ー個通過互連30的虛擬通道的端點。雖然計算機系統(tǒng)100中包含與VI21-24數(shù)目相同的QP51-54,但在其它實施方案中,主計算機10中VI的數(shù)目可以不同于I/O単元40中的QP的數(shù)目。不過,姆ー個通過互連30的虛擬通道都有ー個VI和ー個QP作為端點。
I/O單元40還包括一個NIC55,它將I/O單元40耦合到互連30。在一個實施方案中,每ー個QP51-54各自有ー個物理端ロ通過NIC55連接到互連30。不過,在其它實施方案中,QP51-54可以共享物理端ロ。I/O単元40還包括多個和總線70相耦合的磁盤驅(qū)動器60_62。磁盤驅(qū)動器60_62存儲主計算機10可訪問的數(shù)據(jù)。在其他實施方案中,I/O単元40可包括任何其他設(shè)備來存儲和/或檢索數(shù)據(jù),或者接收并轉(zhuǎn)發(fā)數(shù)據(jù)到別的設(shè)備,但不包括磁盤驅(qū)動器60-62。比如,I/O単元40可以包括⑶ROM驅(qū)動器、磁帶驅(qū)動器和到局域網(wǎng)的網(wǎng)絡(luò)接ロ等。在計算機系統(tǒng)100中,驅(qū)動程序14被認(rèn)為是“發(fā)起者”,這是因為其啟動I/O服務(wù)的請求。相反,I/o控制器42被認(rèn)為是“目標(biāo)”,這是因為其響應(yīng)了來自計算機系統(tǒng)100內(nèi)發(fā)起者的I/O請求。I/O控制器42通過例如在驅(qū)動器60-62上存儲數(shù)據(jù)或從驅(qū)動器60-62 檢索數(shù)據(jù)來響應(yīng)I/O請求。I/O服務(wù)請求可由驅(qū)動程序14產(chǎn)生。ー個I/O服務(wù)請求的例子是請求從某些存儲設(shè)備的邏輯塊地址讀取多個數(shù)據(jù)塊并將數(shù)據(jù)返回給主計算機10中的存儲單元。驅(qū)動程序14將I/O請求存儲在存儲器16的位置中。依照VI規(guī)范,驅(qū)動程序14將涉及I/O請求的描述符(即,指出該I/O請求被存儲的存儲器16中的位置)放入傳輸20中的發(fā)送隊列。然后,驅(qū)動程序14按響NIC25中的門鈴。該門鈴?fù)ǜ鍺IC25在發(fā)送隊列中查找該描述符。既而,NIC25取出該描述符并執(zhí)行該任務(wù)。該任務(wù)將I/O請求消息放入互連30進(jìn)行傳輸。該I/O請求的接收設(shè)備(如,I/O単元30)同樣具有NIC從互連30上接收I/O請求消息。I/O請求消息包含的信息指出了數(shù)據(jù)要移往的、在主計算機存儲器16中的位置,以及該消息指定了磁盤驅(qū)動器60-62中數(shù)據(jù)的獲取位置。主計算機存儲器16中的位置依照VI規(guī)范由一個虛擬地址存儲器句柄對指定。I/O控制器42使用I/O請求消息中包含的信息構(gòu)造描述符,從而實現(xiàn)從I/O単元40到主計算機10的實際數(shù)據(jù)移動。本發(fā)明的一個實施方案提供了從I/O單元40到主計算機10的有效數(shù)據(jù)傳輸。在操作中,驅(qū)動程序14向I/O単元40發(fā)送ー個I/O請求,以便從磁盤驅(qū)動器60-62中檢索ー個數(shù)據(jù)塊(數(shù)據(jù)塊46)。該請求被傳送到I/O控制器42。在一個實施方案中,I/O控制器42從磁盤驅(qū)動器60-62中檢索到所請求的數(shù)據(jù)塊46,并將數(shù)據(jù)塊46存儲到緩沖存儲器44中。圖2是I/O單元40的詳細(xì)框圖,例示了在數(shù)據(jù)塊46存儲到緩沖存儲器44后由I/O単元40執(zhí)行的步驟。I/O単元40的目標(biāo)是將數(shù)據(jù)塊46移動到主計算機10的存儲器16中。首先,I/O控制器42創(chuàng)建ー個直接存儲器存取(“DMA” )對象80,該對象涉及緩沖存儲器44中的數(shù)據(jù)塊46。DMA對象80指定了數(shù)據(jù)塊46的起始地址、數(shù)據(jù)塊46的長度和數(shù)據(jù)塊46的目的地。該目的地告訴傳輸50將數(shù)據(jù)塊46發(fā)送到何處。目的地包括數(shù)據(jù)塊46通過互連30發(fā)送給的端點及其要在端點存儲的存儲器地址。I/O控制器42將DMA對象80傳送到傳輸50。在一個實施方案中,傳輸50在接收DMA對象80前,已經(jīng)根據(jù)I/O単元40與主計算機10之間的物理通道數(shù)目創(chuàng)建了正確數(shù)目的QP51-54。在其它實施方案中,傳輸50在接收DMA對象80時動態(tài)創(chuàng)建所需數(shù)目的QP。在這個實施方案中,網(wǎng)絡(luò)服務(wù)單元連接到圖I中的互連30。網(wǎng)絡(luò)服務(wù)單元的任務(wù)是管理互連30以及在互連30中創(chuàng)建虛擬連接。傳輸50根據(jù)物理鏈路數(shù)目向網(wǎng)絡(luò)服務(wù)單元指定所需數(shù)目的虛擬通道,然后創(chuàng)建相應(yīng)的QP。傳輸50為其中的姆一個QP創(chuàng)建一個或多個描述符90-93。在一個實施方案中,傳輸50中的每ー個QP對應(yīng)于一個連接到互連30上的物理端ロ。在其它實施方案中,物理端ロ的數(shù)目可以少于傳輸50中QP的數(shù)目。每ー個描述符90-93描述了數(shù)據(jù)塊46的ー個分割部分,或稱為ー個“分組”。例如,描述符90代表數(shù)據(jù)分組147,描述符91代表數(shù)據(jù)分組148等。數(shù)據(jù)分組147-150根據(jù)分割數(shù)據(jù)塊46所采用的算法而具有不同的大小。如在一個實施方案中,每ー個數(shù)據(jù)分組147-150具有相同大小,在另ー個實施方案中,采用了一個根據(jù)互連30 中主計算機10與I/O単元40之間所提供的物理連接的操作特性決定每個數(shù)據(jù)分組147-150大小的算法。隨后,每ー個描述符90-93被放入各自的QP51-54中。QP51-54將由描述符90-93所表示的數(shù)據(jù)分組移動到其物理端ロ以通過互連30進(jìn)行傳輸。因而,數(shù)據(jù)分組通過多個物理連接而被“分割”。各個描述符90-93通過互連30移動的順序是任意的。在圖2所示的實施方案中,所有四個QP51-54因為各自擁有獨立的物理連接而并行運行。不過,所述多個物理連接被從I/o控制器42中抽象出來,因而在I/O控制器42和驅(qū)動程序14看來,存在一條虛擬通道以四倍于單個物理通道的帶寬運行。I/O控制器42僅僅能感覺到為整個數(shù)據(jù)塊46創(chuàng)建了單個DMA對象80。傳輸50實現(xiàn)了分割數(shù)據(jù)塊46在多個物理通道上傳輸?shù)墓δ埽瑥亩鴾p少了 I/O控制器42的開銷。正如前面所描述的,傳輸50中的VI被用于給驅(qū)動程序14和主計算機10中其它任何發(fā)起者造成任意大帶寬的假象。此外,傳輸50將多個物理通道組合成一個大的邏輯通道,而無須増加I/O控制器42和處理器12的任何開銷。在這里,對本發(fā)明的幾種實施方案進(jìn)行了明確說明和描述。不過,應(yīng)該理解,在不脫離本發(fā)明的精神和預(yù)定范圍的情況下,對本發(fā)明進(jìn)行的修改和變動是由前述示教所覆蓋并在所附權(quán)利要求的范圍之內(nèi)。舉例來說,本發(fā)明的另外ー個實施方案中,可以包括在一臺主計算機和其他計算機之間的數(shù)據(jù)傳輸,而不是主計算機和I/o単元40之間的數(shù)據(jù)傳輸。在這個處理器間的通信環(huán)境(“IPC”)中,其他計算機包含了一個執(zhí)行等同于I/O控制器42功能的處理器。其他計算機中所有其他単元與I/O単元40相似,并且數(shù)據(jù)傳輸方式與這里描述的相同。
權(quán)利要求
1.一種在傳輸數(shù)據(jù)中使用的方法,該方法包括 將至少一個隊列對中的數(shù)據(jù)塊排隊傳輸?shù)交ミB的目的地址,所述至少一個隊列對的每ー個包括發(fā)送隊列和接收隊列;以及 通過與所述至少ー個隊列對相關(guān)聯(lián)的不同的物理端ロ分割地傳輸數(shù)據(jù)塊,其中所述分割包括經(jīng)由所述物理端口中不同的相應(yīng)端ロ發(fā)送所述數(shù)據(jù)塊的不同的相應(yīng)部分。
2.如權(quán)利要求I所述的方法,進(jìn)ー步包括存儲所述傳輸?shù)闹辽侃`個描述符。
3.如權(quán)利要求I所述的方法,其中所述至少ー個隊列對包括多個隊列對。
4.如權(quán)利要求3所述的方法,其中所述隊列對中的多個相應(yīng)的隊列對與相同的相應(yīng)物理端ロ相關(guān)聯(lián)。
5.如權(quán)利要求3所述的方法,其中每個隊列對與不同的相應(yīng)物理端ロ相關(guān)聯(lián)。
6.如權(quán)利要求3所述的方法,其中所述分割包括在多個相應(yīng)隊列對中的多個隊列對上分割所述數(shù)據(jù)塊。
7.如權(quán)利要求I所述的方法,其中所述不同的相應(yīng)部分具有相同大小。
8.如權(quán)利要求I所述的方法,其中所述不同的相應(yīng)部分大小不同。
9.如權(quán)利要求I所述的方法,進(jìn)ー步包括 接收來自驅(qū)動器的傳輸所述數(shù)據(jù)塊的請求,以及 接收對應(yīng)于所述請求的門鈴響。
10.如權(quán)利要求I所述的方法,進(jìn)ー步包括對通過多個物理端ロ分割的接收數(shù)據(jù)塊執(zhí)行 DMA。
11.一種在傳輸數(shù)據(jù)中使用的設(shè)備,該設(shè)備包括 用于將至少ー個隊列對中的數(shù)據(jù)塊排隊傳輸?shù)交ミB的目的地址的裝置,所述至少ー個隊列對的每ー個包括發(fā)送隊列和接收隊列;以及 用于通過與所述至少ー個隊列對相關(guān)聯(lián)的不同的物理端ロ分割地傳輸數(shù)據(jù)塊的裝置,其中所述分割包括經(jīng)由所述物理端口中不同的相應(yīng)端ロ發(fā)送所述數(shù)據(jù)塊的不同的相應(yīng)部分。
12.如權(quán)利要求11所述的設(shè)備,進(jìn)一歩包括用于存儲所述傳輸?shù)闹辽侃`個描述符的裝置。
13.如權(quán)利要求11所述的設(shè)備,其中所述至少ー個隊列對包括多個隊列對。
14.如權(quán)利要求13所述的設(shè)備,其中所述隊列對中的多個相應(yīng)的隊列對與相同的相應(yīng)物理端ロ相關(guān)聯(lián)。
15.如權(quán)利要求13所述的設(shè)備,其中每個相應(yīng)的隊列對與不同的相應(yīng)物理端ロ相關(guān)聯(lián)。
16.如權(quán)利要求13所述的設(shè)備,其中所述用于分割的裝置包括用于在所述多個相應(yīng)隊列對中的多個隊列對上分割所述數(shù)據(jù)塊的裝置。
17.如權(quán)利要求11所述的設(shè)備,其中所述不同的相應(yīng)部分具有相同大小。
18.如權(quán)利要求11所述的設(shè)備,其中所述不同的相應(yīng)部分大小不同。
19.如權(quán)利要求11所述的設(shè)備,進(jìn)一歩包括 用于接收來自驅(qū)動器的傳輸所述數(shù)據(jù)塊的請求的裝置,以及 用于接收對應(yīng)于所述請求的門鈴響的裝置。
20.如權(quán)利要求11所述的設(shè)備,進(jìn)一歩包括用于對通過多個物理端ロ分割的接收數(shù)據(jù)塊執(zhí)行DMA的裝置。
全文摘要
本發(fā)明的名稱是通過多個虛擬通道傳輸分割的數(shù)據(jù)分組。一個I/O單元(40)用于通過相互連接(30)傳輸一個具有多個數(shù)據(jù)分組(147-150)的數(shù)據(jù)塊(46),該I/O單元包括一個I/O控制器(42)和連接到該I/O控制器(42)用于存儲該數(shù)據(jù)塊(46)的一個存儲器(44)。該I/O單元(40)還包括一個由I/O控制器(42)所創(chuàng)建并與數(shù)據(jù)塊(46)相對應(yīng)的DMA對象(80),以及一個包含連接到相互連接(30)的第一和第二隊列對(51,52)的傳輸(50)。該I/O單元(40)還包括一個由傳輸(50)創(chuàng)建并與第一數(shù)據(jù)分組(147)相對應(yīng)的第一描述符(90),以及一個由傳輸(50)創(chuàng)建并與第二數(shù)據(jù)分組(148)相對應(yīng)的第二描述符(91)。
文檔編號G06F13/12GK102693194SQ20121002697
公開日2012年9月26日 申請日期1999年8月13日 優(yōu)先權(quán)日1998年8月14日
發(fā)明者P·A·格倫, W·福特拉爾 申請人:英特爾公司