專利名稱:動(dòng)態(tài)資源分配的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及對(duì)設(shè)備,如網(wǎng)絡(luò)接口設(shè)備,運(yùn)行中所使用的資源的配置。
圖1示出了通過(guò)網(wǎng)絡(luò)接口卡(NIC)3連接于網(wǎng)絡(luò)2的計(jì)算機(jī)1的架構(gòu)。計(jì)算機(jī)1的數(shù)據(jù)處理組件通過(guò)總線4,如PCI(個(gè)人計(jì)算機(jī)接口)總線,相互連接以及與NIC相連接。
計(jì)算機(jī)運(yùn)行操作系統(tǒng)10,該操作系統(tǒng)能夠支持同樣運(yùn)行于該計(jì)算機(jī)的應(yīng)用程序11。計(jì)算機(jī)存儲(chǔ)有指令庫(kù)12,該庫(kù)對(duì)應(yīng)用程序可用。庫(kù)中用于與NIC3通信的部分稱作傳輸庫(kù)13。操作系統(tǒng)內(nèi)核包括驅(qū)動(dòng)組件14一個(gè)允許與NIC進(jìn)行的數(shù)據(jù)傳送及控制面操作的專用指令集。
為了實(shí)現(xiàn)在網(wǎng)絡(luò)上向計(jì)算機(jī)或從計(jì)算機(jī)傳送數(shù)據(jù),需要許多的網(wǎng)絡(luò)特定的處理及數(shù)據(jù)資源。所需的資源依賴于所使用的網(wǎng)絡(luò)協(xié)議,但這些資源可以包括一個(gè)或多個(gè)定時(shí)器(用于識(shí)別網(wǎng)絡(luò)協(xié)議超時(shí))及數(shù)據(jù)隊(duì)列(用于在計(jì)算機(jī)及NIC間傳送網(wǎng)絡(luò)數(shù)據(jù)及指令)。這些資源通常由NIC的專用元件提供。
當(dāng)應(yīng)用程序想要建立網(wǎng)絡(luò)連接時(shí),其調(diào)用庫(kù)12中的建立子程序。內(nèi)核驅(qū)動(dòng)程序接到指示,通知NIC分配一組資源供應(yīng)用程序使用。支持網(wǎng)絡(luò)連接的該組資源的構(gòu)成是系統(tǒng)設(shè)計(jì)者所熟知的。因此,可被請(qǐng)求的資源組的構(gòu)成是固定的以允許應(yīng)用程序通過(guò)對(duì)庫(kù)的單次調(diào)用建立連接它包括足以支持所需要的網(wǎng)絡(luò)連接的一定數(shù)量的各種類別的定時(shí)器和一定數(shù)量的各種類別的隊(duì)列。
總線4上的地址空間通常以一定大小的頁(yè)為單位每頁(yè)一般為4或8KB。為每個(gè)資源組分配一頁(yè),每個(gè)資源都在該頁(yè)中具有各自的地址。
這類設(shè)置存在諸多問(wèn)題。首先,如果應(yīng)用程序需要附加資源,如為了支持多處理器線程,則其需要請(qǐng)求另一完整的資源組,該資源組將占據(jù)另一頁(yè)總線地址空間??墒怯捎谠摳郊泳€程可能不需要全部資源組,因此這樣可能會(huì)造成浪費(fèi)。例如,附加的線程可能不需要如定時(shí)器這樣的資源。
其次,資源一經(jīng)分配,即使對(duì)于分配給單一線程且繼而就空閑了的情況,也只能等到其所屬的整個(gè)組均釋放后才能釋放。這意味著NIC必須具有比必要資源容量更多的資源容量。
再次,難以、甚至不可能將資源自一個(gè)應(yīng)用程序或線程重新分配至另一個(gè)應(yīng)用程序或線程。然而這在如一個(gè)線程想要將對(duì)一組存儲(chǔ)器緩沖器的所有權(quán)轉(zhuǎn)移至另一個(gè)線程的情況下可能是必需的。
需要一種系統(tǒng)以解決這些問(wèn)題中的一個(gè)或多個(gè)。
根據(jù)本發(fā)明的一個(gè)方面,提供了一種用于在網(wǎng)絡(luò)和數(shù)據(jù)處理設(shè)備間提供接口的網(wǎng)絡(luò)接口設(shè)備,該網(wǎng)絡(luò)接口設(shè)備具有多個(gè)不同類型的資源,用于支持接口,以及一個(gè)總線接口,用于與數(shù)據(jù)處理設(shè)備依靠一種通過(guò)對(duì)總線上的地址進(jìn)行尋址在總線上發(fā)送數(shù)據(jù)的總線進(jìn)行接口,將該網(wǎng)絡(luò)接口設(shè)備設(shè)置為可以通過(guò)總線上各自的地址對(duì)每個(gè)資源進(jìn)行尋址。
網(wǎng)絡(luò)接口設(shè)備可以包括一個(gè)存儲(chǔ)有映射數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)器,映射數(shù)據(jù)為每個(gè)資源在總線上定義的各自的地址以實(shí)現(xiàn)對(duì)其的尋址。優(yōu)選的,當(dāng)網(wǎng)絡(luò)接口設(shè)備提供至少所述接口中的一種時(shí),能改變映射數(shù)據(jù)。優(yōu)選的,當(dāng)網(wǎng)絡(luò)接口設(shè)備提供資源所支持的接口時(shí),能改變映射數(shù)據(jù)以改變總線上可通過(guò)其資源尋址的地址。優(yōu)選的,數(shù)據(jù)存儲(chǔ)器保存了所有權(quán)數(shù)據(jù),該所有權(quán)數(shù)據(jù)為每個(gè)資源定義了允許對(duì)各資源的狀態(tài)作出修改的一個(gè)或多個(gè)實(shí)體。如果該設(shè)備支持內(nèi)存映射協(xié)議,則數(shù)據(jù)存儲(chǔ)器還可以存儲(chǔ)每個(gè)資源所關(guān)聯(lián)的映射的指示。優(yōu)選的,當(dāng)網(wǎng)絡(luò)接口裝置提供資源所支持的接口時(shí),可以改變所有權(quán)數(shù)據(jù)。可以設(shè)置該裝置以令其限制未被所有權(quán)數(shù)據(jù)定義為允許對(duì)各資源的狀態(tài)進(jìn)行修改的實(shí)體修改各資源的狀態(tài)。資源的狀態(tài)可以包括設(shè)備的運(yùn)行設(shè)置或配置(包括資源所使用的指針)及/或(如可用,例如資源有效)資源的運(yùn)行狀態(tài)(例如,將由設(shè)備處理的緩沖或業(yè)務(wù)數(shù)據(jù),或定時(shí)器的逆序記數(shù)值)。
優(yōu)選的,將總線接口設(shè)置為將設(shè)備從總線上接收到的并送至映射數(shù)據(jù)所定義的作為一個(gè)資源的地址的數(shù)據(jù)送至那個(gè)資源。
優(yōu)選的,資源的類型包括兩個(gè)或兩個(gè)以上的定時(shí)器、用于支持將數(shù)據(jù)隊(duì)列從網(wǎng)絡(luò)設(shè)備送至數(shù)據(jù)處理設(shè)備的資源,以及用于支持將數(shù)據(jù)隊(duì)列從數(shù)據(jù)處理設(shè)備送至網(wǎng)絡(luò)設(shè)備的資源。這樣,每個(gè)資源均可以,例如,是支持定時(shí)器或隊(duì)列的設(shè)備。這樣的隊(duì)列可以是緩沖器或DMA隊(duì)列。
根據(jù)本發(fā)明的第二個(gè)方面,提供了一種網(wǎng)絡(luò)設(shè)備以及一種鏈接于總線的,用于與數(shù)據(jù)處理設(shè)備相通信的數(shù)據(jù)處理設(shè)備,其中數(shù)據(jù)處理設(shè)備設(shè)置為將總線上的地址以頁(yè)塊(page blocks)為單位進(jìn)行分配并且在單一頁(yè)內(nèi)可對(duì)多個(gè)資源單獨(dú)尋址。
優(yōu)選的,每頁(yè)的大小可為4KB或更大。優(yōu)選的,可在總線的至少一個(gè)頁(yè)塊內(nèi)對(duì)多資源進(jìn)行尋址。
根據(jù)本發(fā)明的第三個(gè)方面,提供了一種用于控制數(shù)據(jù)處理設(shè)備通過(guò)總線與網(wǎng)絡(luò)設(shè)備進(jìn)行通信的程序,該程序被設(shè)置為接收總線上的資源的分配請(qǐng)求;對(duì)應(yīng)該請(qǐng)求,識(shí)別總線上已經(jīng)分配給網(wǎng)絡(luò)設(shè)備的頁(yè)塊并識(shí)別該頁(yè)內(nèi)將被分配給該資源的但尚未分配的地址;以及將指示資源的分配的并包括識(shí)別出的地址的消息傳送至網(wǎng)絡(luò)設(shè)備。
根據(jù)本發(fā)明的第四個(gè)方面,提供了一種用于在網(wǎng)絡(luò)和數(shù)據(jù)處理設(shè)備的進(jìn)程間提供接口的網(wǎng)絡(luò)接口設(shè)備,該數(shù)據(jù)處理設(shè)備能夠支持多個(gè)進(jìn)程,每個(gè)進(jìn)程都具有標(biāo)識(shí)代碼,該網(wǎng)絡(luò)接口設(shè)備具有用于支持接口的多個(gè)不同類型的資源,可將每個(gè)資源分配給這些進(jìn)程中的一個(gè),以及保存有為每個(gè)資源定義了為其分配的進(jìn)程的標(biāo)識(shí)代碼的映射數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)器。
該網(wǎng)絡(luò)接口可以具有資源安全裝置,該資源安全裝置被設(shè)置為阻止分配給每個(gè)資源的進(jìn)程之外的進(jìn)程對(duì)各資源的狀態(tài)進(jìn)行修改。
優(yōu)選的,該資源安全裝置被設(shè)置為阻止分配給每個(gè)資源的進(jìn)程之外的進(jìn)程對(duì)各資源的狀態(tài)進(jìn)行修改。
優(yōu)選的,將資源安全裝置設(shè)置為支持虛擬內(nèi)存機(jī)制,通過(guò)虛擬內(nèi)存機(jī)制可將數(shù)據(jù)處理設(shè)備的內(nèi)存空間映射至另一個(gè)數(shù)據(jù)處理設(shè)備的內(nèi)存空間上。資源安全裝置可以包括數(shù)據(jù)處理器,該數(shù)據(jù)處理器通過(guò)訪問(wèn)數(shù)據(jù)存儲(chǔ)器來(lái)處理網(wǎng)絡(luò)接口設(shè)備接收到的用以修改資源狀態(tài)的并包括由機(jī)制決定的內(nèi)存映射的標(biāo)識(shí)的請(qǐng)求,以此識(shí)別資源是否與映射相關(guān)聯(lián),如不相關(guān)聯(lián)則阻止該請(qǐng)求。由數(shù)據(jù)處理設(shè)備上的硬件或軟件來(lái)管理虛擬內(nèi)存機(jī)制的運(yùn)行均可。
優(yōu)選的,當(dāng)網(wǎng)絡(luò)接口設(shè)備提供至少一種所述接口時(shí),可以改變映射數(shù)據(jù),這樣可以改變總線上用以對(duì)資源進(jìn)行尋址的地址。
根據(jù)本發(fā)明的第五個(gè)方面,提供了一種用于在網(wǎng)絡(luò)和數(shù)據(jù)處理設(shè)備間提供接口的網(wǎng)絡(luò)接口設(shè)備,網(wǎng)絡(luò)接口設(shè)備具有用以支持接口的多個(gè)不同類型的資源,每種類型的資源的每一個(gè)均能夠與同類型的其他資源進(jìn)行數(shù)據(jù)傳輸,以及一個(gè)保存有映射數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)器,映射數(shù)據(jù)定義了允許相互通信的一個(gè)或多個(gè)包括不同種類資源的資源對(duì)。優(yōu)選的,當(dāng)網(wǎng)絡(luò)接口設(shè)備提供至少一種所述接口時(shí),可以改變映射數(shù)據(jù)。優(yōu)選的,網(wǎng)絡(luò)接口具有資源安全裝置,該資源安全裝置設(shè)置為阻止沒(méi)有為其保存定義了與另一資源的配對(duì)情況的映射數(shù)據(jù)的資源修改另一資源的狀態(tài)的。優(yōu)選的,網(wǎng)絡(luò)接口具有資源安全裝置,資源安全裝置設(shè)置為阻止沒(méi)有為其保存定義了與另一資源的配對(duì)情況的映射數(shù)據(jù)的資源以外的資源修改另一資源的狀態(tài)?,F(xiàn)在,將參照附圖并僅以示例的形式對(duì)本發(fā)明做出描述。
附圖中圖1示出了一種連入網(wǎng)絡(luò)的系統(tǒng)的架構(gòu);圖2示出了另一種連入網(wǎng)絡(luò)的系統(tǒng)的架構(gòu);圖3示出了總線映射表圖2示出了一種計(jì)算機(jī)設(shè)備20,其耦接于網(wǎng)絡(luò)接口設(shè)備30以與網(wǎng)絡(luò)40相連接。該計(jì)算機(jī)可以是個(gè)人計(jì)算機(jī)或服務(wù)器,也可以是渴望獲得網(wǎng)絡(luò)連通性的非可重復(fù)配置處理設(shè)備。網(wǎng)絡(luò)接口設(shè)備可以任何適當(dāng)形式存在,例如,可以是獨(dú)立設(shè)備,可以是以外圍卡的形式存在的或集成于計(jì)算機(jī)主板的網(wǎng)絡(luò)接口卡。僅為了方便起見(jiàn),將以PC指代計(jì)算機(jī)設(shè)備、NIC指代網(wǎng)絡(luò)接口設(shè)備。網(wǎng)絡(luò)可以是以太網(wǎng)或其他類型的網(wǎng)絡(luò)。
計(jì)算機(jī)運(yùn)行一種操作系統(tǒng)21,該操作系統(tǒng)能夠支持同樣運(yùn)行于計(jì)算機(jī)上的應(yīng)用程序22。計(jì)算機(jī)存儲(chǔ)有指令庫(kù)23,該指令庫(kù)對(duì)應(yīng)用程序可用。庫(kù)中可用于與NIC30通信的部分定義為傳送庫(kù)24。操作系統(tǒng)內(nèi)核包括驅(qū)動(dòng)程序組件25允許與NIC進(jìn)行數(shù)據(jù)傳送的指令集。每個(gè)應(yīng)用程序都可以軟件程序的形式運(yùn)行于計(jì)算機(jī)上,但也可以是嵌入的固件。一些操作系統(tǒng)除基本操作系統(tǒng)代碼外還包括應(yīng)用程序。
本系統(tǒng)中未說(shuō)明的方面可以是如WO2004/025477中所陳述的那樣。
NIC可支持多種類型的資源即具有不同種類功能的資源。這樣的例子包括DMA隊(duì)列,事件隊(duì)列,定時(shí)器及支持WO2004/025477中所描述的那種類型的遠(yuǎn)程孔穴的資源。每種類型的資源(31-34)均由專用的硬件資源池提供,該硬件資源池可支持每種類型資源的多個(gè)范例。為了運(yùn)行范例,必須如下文所詳述的那樣,通過(guò)自PC的指令對(duì)其進(jìn)行配置。
NIC通過(guò)總線50與PC進(jìn)行通信。在此例中,總線為PCI總線,但本發(fā)明并不局限于該種總線。在PCI總線上傳輸?shù)臄?shù)據(jù)都關(guān)聯(lián)有目的地址,并由連接于總線的并被分配了相應(yīng)目的地址的實(shí)體接收數(shù)據(jù)。在一種典型的PC實(shí)現(xiàn)中,地址被分配于4或8KB大小的頁(yè)中??蓪⑦@些頁(yè)中的一個(gè)或多個(gè)分配給NIC。塊51和52代表PCI總線上已分配的頁(yè)。
NIC具有總線接口控制器35,資源配置單元36和總線映射表37。資源配置單元處理從計(jì)算機(jī)接收的,提供了對(duì)NIC上的資源進(jìn)行分配、重新分配(re-allocation)及釋放(de-allocation)的指令的通信,并依據(jù)這些指令配置資源。驅(qū)動(dòng)程序25存儲(chǔ)了NIC上資源的分配記錄。當(dāng)要對(duì)資源進(jìn)行分配時(shí),驅(qū)動(dòng)程序?qū)IC上合適的所需類型的閑置資源進(jìn)行識(shí)別并向NIC傳送分配指令。該指令對(duì)資源進(jìn)行識(shí)別并指定如何對(duì)資源進(jìn)行分配,包括資源的內(nèi)部配置(如定時(shí)器運(yùn)行的時(shí)間長(zhǎng)短)。將這指令送入資源配置單元。資源配置單元繼而將指定的配置載入已識(shí)別的資源。指令還包括所有權(quán)字符串,所有權(quán)字符串可以是計(jì)算機(jī)上的那些正在由應(yīng)用程序或線程使用的資源的標(biāo)識(shí)。資源配置單元將這些保存于總線映射表的一行中。圖3示出了總線映射表中條目的一種示例,此例將在下文中詳述。當(dāng)需要重新分配資源時(shí),就根據(jù)需要改變位于資源的自身配置存儲(chǔ)器中的及總線映射表中的相關(guān)條目。當(dāng)需要釋放資源時(shí),就禁用該資源并在總線映射表中上刪除相關(guān)行。
針對(duì)向現(xiàn)在將描述系統(tǒng)是如何運(yùn)行以向網(wǎng)絡(luò)傳送或從網(wǎng)絡(luò)傳送數(shù)據(jù)的。
在系統(tǒng)建立期間就已經(jīng)將總線50上的一個(gè)或多個(gè)頁(yè)(51,52)分配于NIC。內(nèi)核驅(qū)動(dòng)程序25可使用地址空間的一部分(頁(yè)51)以向NIC發(fā)送指令。其他頁(yè)(如頁(yè)52)可用于應(yīng)用程序,如應(yīng)用程序22與資源(31-34)間的通信。由資源分配單元36存儲(chǔ)分配給NIC以供資源使用的頁(yè)的記錄。
當(dāng)應(yīng)用程序22想要在網(wǎng)絡(luò)上開(kāi)啟數(shù)據(jù)連接時(shí),其在傳輸庫(kù)中調(diào)用子程序以使連接所需的NIC資源得到分配。標(biāo)準(zhǔn)類型的網(wǎng)絡(luò)需要標(biāo)準(zhǔn)資源集;例如事件隊(duì)列,TX與RX DMA信道,以及可DMA內(nèi)存緩沖器集。例如,一個(gè)典型的集包括1TX及RXDMA 2定時(shí)器及定序100DMA內(nèi)存緩沖器。
傳輸庫(kù)中包含一個(gè)或多子程序,該一個(gè)或多個(gè)子程序可被應(yīng)用程序直接調(diào)用,并用以使包括有不同類型的資源集的集號(hào)的標(biāo)準(zhǔn)資源集得到分配。傳輸庫(kù)還包括允許每種類型的子程序得到分配、重新分配或釋放的子程序。這兩種類型的指令的出現(xiàn)意味著可以有效地建立標(biāo)準(zhǔn)連接,并可以逐資源地創(chuàng)建非標(biāo)準(zhǔn)資源組以及重新配置現(xiàn)存的連接。
用于分配資源的子程序使內(nèi)核驅(qū)動(dòng)程序25將指令傳送給NIC,用以按子程序中指定的那樣對(duì)資源進(jìn)行分配。這些指令指定了與資源相關(guān)聯(lián)的應(yīng)用程序或線程的標(biāo)識(shí),以及資源的種類。由NIC的資源配置單元36處理這些指令。可換由內(nèi)核驅(qū)動(dòng)程序25提供資源分配單元的部分或全部功能。
本系統(tǒng)的一個(gè)突出特征在于總線50上分配給NIC的空間可在總線50上的資源間動(dòng)態(tài)分割。一旦已經(jīng)將一個(gè)或多個(gè)頁(yè)52分配給NIC供資源使用,可為這些資源在該頁(yè)中分配一個(gè)或多個(gè)單獨(dú)的子頁(yè)地址,對(duì)應(yīng)如53、54所示的位置。這樣,每個(gè)資源均可具有為其分配的總空間的部分。為哪個(gè)資源分配了總空間的哪個(gè)部分的記錄存儲(chǔ)于總線映射表37中。其效果在于,可將總線的一頁(yè)用于與計(jì)算機(jī)20上的多種類型的資源及/或與多種連接相關(guān)的資源及/或與多個(gè)應(yīng)用程序或線程相關(guān)聯(lián)的資源的通信。并因此可相對(duì)有效地利用總線空間。
對(duì)經(jīng)分配的總線空間52的使用由驅(qū)動(dòng)程序25管理。當(dāng)要對(duì)資源進(jìn)行分配時(shí),RAU利用一個(gè)由驅(qū)動(dòng)程序25管理其內(nèi)容的數(shù)據(jù)存儲(chǔ)器識(shí)別總線上的空間內(nèi)已分配給NIC的資源使用的但尚未使用的塊,空間的大小為資源所需要的大小。驅(qū)動(dòng)程序25進(jìn)而在數(shù)據(jù)存儲(chǔ)器中存儲(chǔ)資源的標(biāo)識(shí)(“資源”ID)、已分配的空間中的塊地址(“子頁(yè)”ID),以及將要使用資源的應(yīng)用程序或線程的標(biāo)識(shí)(“線程標(biāo)簽”);并向資源分配單元(RAU)發(fā)送消息,以使其在總線映射表37(如圖3所示)中存儲(chǔ)相應(yīng)數(shù)據(jù)。如果RAU發(fā)現(xiàn)表37指示地址馬上將被占據(jù),則其向驅(qū)動(dòng)程序報(bào)告一個(gè)錯(cuò)誤代碼。如果無(wú)法推斷分配給資源使用的頁(yè)僅有一頁(yè),則可能需要在子頁(yè)地址后附加子頁(yè)所在頁(yè)的地址。如果分配給資源使用的總空間不足,則內(nèi)核驅(qū)動(dòng)程序就為其分配更多的空間。完成對(duì)資源的分配后,RAU向內(nèi)核驅(qū)動(dòng)程序報(bào)告成功消息。分配的頁(yè)及子頁(yè)地址則被報(bào)告并映射至請(qǐng)求該資源的應(yīng)用程序,以使應(yīng)用程序可通過(guò)該數(shù)據(jù)對(duì)他們進(jìn)行訪問(wèn)。
已分配了資源的應(yīng)用程序可通過(guò)向相關(guān)總線頁(yè)發(fā)送數(shù)據(jù)(例如通過(guò)虛擬內(nèi)存映射載入/存儲(chǔ)循環(huán)),在與各資源相對(duì)應(yīng)的子頁(yè)地址上對(duì)各資源進(jìn)行訪問(wèn)。任何發(fā)送至已分配給了資源的頁(yè)的數(shù)據(jù)均由總線接口控制器35從總線50上拿掉??偩€接口控制器35通過(guò)執(zhí)行在表37中的查找將所述數(shù)據(jù)引入資源31-34中適當(dāng)?shù)囊粋€(gè),并由此識(shí)別分配了子頁(yè)地址的資源的標(biāo)識(shí)。應(yīng)用程序還可以總線寫入以外的方法對(duì)資源進(jìn)行訪問(wèn)例如,直接內(nèi)存訪問(wèn)(DMA)。在這些例子中,由NIC校驗(yàn)發(fā)出訪問(wèn)請(qǐng)求的應(yīng)用程序/線程的標(biāo)識(shí)與表37中所指示的資源的標(biāo)識(shí)是否相匹配。如不匹配,則忽略該數(shù)據(jù)。如匹配,則將該數(shù)據(jù)送至相應(yīng)資源。這樣做增加了安全性并有助于防止由其他應(yīng)用程序引起的資源崩潰。
可以認(rèn)為分配給一個(gè)應(yīng)用程序或線程的資源集組成了一個(gè)虛擬網(wǎng)絡(luò)接口(VNIC)。
一旦組成了虛擬接口,就可動(dòng)態(tài)的對(duì)其進(jìn)行重新配置。可作出的動(dòng)作的示例如下1.可以釋放不再需要的資源。為實(shí)現(xiàn)這一點(diǎn),正在使用該資源的應(yīng)用程序從傳輸庫(kù)23中調(diào)用一個(gè)釋放子程序。釋放子程序調(diào)用內(nèi)核驅(qū)動(dòng)程序25,由內(nèi)核驅(qū)動(dòng)程序25指示RAU,通過(guò)對(duì)該資源禁用、在表37中清除其狀態(tài)并刪除其所在行,來(lái)釋放該資源。
2.可為VNIC(等)增加額外資源。該過(guò)程與上述用于最初組成VNIC的過(guò)程相似。
3.可將資源由一個(gè)應(yīng)用程序或進(jìn)程送至另一個(gè)應(yīng)用程序或進(jìn)程。這在一個(gè)應(yīng)用程序具有多個(gè)線程并想要將資源由一個(gè)線程送至另一線程的情況下最有用。例如,想要由一個(gè)新線程來(lái)接收并處理來(lái)自網(wǎng)絡(luò)的數(shù)據(jù)。要實(shí)現(xiàn)這一點(diǎn),正在使用資源的應(yīng)用程序從傳輸庫(kù)23中調(diào)用一個(gè)重新分配子程序。重新分配子程序調(diào)用內(nèi)核驅(qū)動(dòng)程序25,由內(nèi)核驅(qū)動(dòng)程序25指示RAU重新分配資源,修改表37中該資源對(duì)應(yīng)的行以指定接管其控制權(quán)的應(yīng)用程序或線程的標(biāo)識(shí)。
在某些情況下,可能需要一種類型的資源與另一種類型的資源進(jìn)行通信。例如,可能要將從網(wǎng)絡(luò)40接收到的數(shù)據(jù)送至應(yīng)用程序22進(jìn)行處理。該應(yīng)用程序在與總線50相連接的內(nèi)存27中具有隊(duì)列26。該隊(duì)列由傳輸庫(kù)23部分的管理,傳輸庫(kù)為一個(gè)位于NIC上的DMA隊(duì)列資源提供了最新的指向隊(duì)列上的下一個(gè)可用位置的指針。指針在應(yīng)用程序從隊(duì)列26中讀出數(shù)據(jù)時(shí)得到更新。從網(wǎng)絡(luò)接收到的數(shù)據(jù)將送入事件隊(duì)列資源32,事件隊(duì)列資源將其寫入由指針指示的位置并觸發(fā)一個(gè)事件,如計(jì)算機(jī)設(shè)備20上的中斷,以指示隊(duì)列上的該數(shù)據(jù)可用。為了令此發(fā)生,事件隊(duì)列資源32必須從DMA隊(duì)列資源31中獲悉指針的詳情。這需要將數(shù)據(jù)從DMA隊(duì)列資源送入事件隊(duì)列資源。
為實(shí)現(xiàn)這一點(diǎn),可更加常規(guī)的將表37的“線程標(biāo)簽”欄作為所有權(quán)標(biāo)簽對(duì)待,并將DMA隊(duì)列與相關(guān)的事件隊(duì)列相鏈接。為實(shí)現(xiàn)這一點(diǎn),可將事件隊(duì)列的所有權(quán)標(biāo)簽設(shè)置為相關(guān)DMA隊(duì)列的標(biāo)識(shí)。當(dāng)DMA隊(duì)列需要向相關(guān)事件隊(duì)列傳送數(shù)據(jù)時(shí),其可通過(guò)在所有權(quán)標(biāo)簽欄中執(zhí)行對(duì)其自身標(biāo)識(shí)的查找而從表37中識(shí)別出該事件隊(duì)列。
可由總線控制器25校驗(yàn)需要從一個(gè)資源送至另一個(gè)資源的數(shù)據(jù)以保證其與表37中的設(shè)置相符。具體地講,當(dāng)需要將數(shù)據(jù)從一個(gè)資源發(fā)送至另一個(gè)資源時(shí),總線控制器可對(duì)表37中是否存在這樣的行進(jìn)行校驗(yàn)即在所有權(quán)標(biāo)簽字段中具有作為數(shù)據(jù)源的資源的標(biāo)識(shí)、且在資源ID字段中具有作為數(shù)據(jù)所指的預(yù)期目的地的資源的標(biāo)識(shí)。如果不匹配,則阻止數(shù)據(jù)到達(dá)目的地。這提供了額外的安全性及抗崩潰保護(hù)。可選的,或進(jìn)一步的,如果一個(gè)資源與另一個(gè)資源具有共同的物主,則可允許其中一個(gè)向另一個(gè)傳送數(shù)據(jù)在本例中,如果兩者的資源ID字段指明它們由相同的線程、應(yīng)用程序或其他資源所擁有。
還可通過(guò)傳輸庫(kù)中的重新配置子程序動(dòng)態(tài)的重新配置以這種方式鏈接的資源標(biāo)識(shí)。
網(wǎng)絡(luò)可以是以太網(wǎng)或其他類型的網(wǎng)絡(luò)。網(wǎng)絡(luò)上使用的協(xié)議客戶可以包括但不局限于TCP/IP。
申請(qǐng)人分別披露了所述每個(gè)單獨(dú)的特點(diǎn)和兩個(gè)或多個(gè)這些特點(diǎn)的組合,在這種意義上,不管這些特點(diǎn)或組合是否解決這里所披露的所有問(wèn)題,不限制權(quán)利要求的范圍,按照本領(lǐng)域技術(shù)人員的通常的整體知識(shí),基于本說(shuō)明能夠?qū)崿F(xiàn)這些特點(diǎn)和組合。申請(qǐng)人指出本發(fā)明可以包括這些單獨(dú)的特點(diǎn)或者這些特點(diǎn)的組合。由于前面的描述,這是顯然的對(duì)于本領(lǐng)域技術(shù)人員在本發(fā)明的范圍內(nèi)可作出各種修改。
權(quán)利要求
1.一種用于在網(wǎng)絡(luò)和數(shù)據(jù)處理設(shè)備間提供接口的網(wǎng)絡(luò)接口設(shè)備,該網(wǎng)絡(luò)接口設(shè)備具有多個(gè)不同類型的資源,用于支持接口,以及一個(gè)總線接口,用于與數(shù)據(jù)處理設(shè)備依靠一種通過(guò)對(duì)總線上的地址進(jìn)行尋址在總線上發(fā)送數(shù)據(jù)的總線進(jìn)行接口,將該網(wǎng)絡(luò)接口設(shè)備設(shè)置為可以通過(guò)總線上各自的地址對(duì)每個(gè)資源進(jìn)行尋址。
2.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)接口設(shè)備,包括一個(gè)存儲(chǔ)有映射數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)器,映射數(shù)據(jù)為每個(gè)資源在總線上定義的各自的地址以實(shí)現(xiàn)對(duì)其的尋址。
3.根據(jù)權(quán)利要求2所述的網(wǎng)絡(luò)接口設(shè)備,其中,當(dāng)網(wǎng)絡(luò)接口設(shè)備提供至少所述接口中的一種時(shí),能改變映射數(shù)據(jù)。
4.根據(jù)權(quán)利要求3所述的網(wǎng)絡(luò)接口設(shè)備,其中,當(dāng)網(wǎng)絡(luò)接口設(shè)備提供資源所支持的接口時(shí),能改變映射數(shù)據(jù)以改變總線上可通過(guò)其資源尋址的地址。
5.根據(jù)權(quán)利要求2至4中任意一項(xiàng)所述的網(wǎng)絡(luò)接口設(shè)備,其中,數(shù)據(jù)存儲(chǔ)器保存了所有權(quán)數(shù)據(jù),該所有權(quán)數(shù)據(jù)為每個(gè)資源定義了允許對(duì)各資源的狀態(tài)作出修改的一個(gè)或多個(gè)實(shí)體。
6.根據(jù)權(quán)利要求5所述的網(wǎng)絡(luò)接口設(shè)備,其中,當(dāng)網(wǎng)絡(luò)接口裝置提供資源所支持的接口時(shí),可以改變所有權(quán)數(shù)據(jù)。
7.根據(jù)權(quán)利要求5或6所述的網(wǎng)絡(luò)接口設(shè)備,其中,設(shè)置該裝置以令其限制未被所有權(quán)數(shù)據(jù)定義為允許對(duì)各資源的狀態(tài)進(jìn)行修改的實(shí)體修改各資源的狀態(tài)。
8.根據(jù)權(quán)利要求2至7中任意一項(xiàng)所述的網(wǎng)絡(luò)接口設(shè)備,其中,將總線接口設(shè)置為將設(shè)備從總線上接收到的并送至映射數(shù)據(jù)所定義的作為一個(gè)資源的地址的數(shù)據(jù)送至那個(gè)資源。
9.根據(jù)前述權(quán)利要求中任意一項(xiàng)所述的網(wǎng)絡(luò)接口設(shè)備,其中,資源的類型包括兩個(gè)或兩個(gè)以上的定時(shí)器、用于支持將數(shù)據(jù)隊(duì)列從網(wǎng)絡(luò)設(shè)備送至數(shù)據(jù)處理設(shè)備的資源,以及用于支持將數(shù)據(jù)隊(duì)列從數(shù)據(jù)處理設(shè)備送至網(wǎng)絡(luò)設(shè)備的資源。
10.根據(jù)前述權(quán)利要求中任意一項(xiàng)所述的網(wǎng)絡(luò)接口設(shè)備以及一種網(wǎng)絡(luò)設(shè)備以及一種鏈接于總線的,用于與數(shù)據(jù)處理設(shè)備相通信的數(shù)據(jù)處理設(shè)備,其中,數(shù)據(jù)處理設(shè)備設(shè)置為將總線上的地址以頁(yè)塊為單位進(jìn)行分配并且在單一頁(yè)內(nèi)可對(duì)多個(gè)資源單獨(dú)尋址。
11.根據(jù)權(quán)利要求10中所述的網(wǎng)絡(luò)設(shè)備及數(shù)據(jù)處理設(shè)備,其中,每頁(yè)的大小為4KB或更大。
12.根據(jù)權(quán)利要求11中所述的網(wǎng)絡(luò)設(shè)備及數(shù)據(jù)處理設(shè)備,其中,可在總線的至少一個(gè)頁(yè)塊內(nèi)對(duì)多資源進(jìn)行尋址。
13.一種用于控制數(shù)據(jù)處理設(shè)備通過(guò)總線與網(wǎng)絡(luò)設(shè)備進(jìn)行通信的程序,該程序被設(shè)置為接收總線上的資源的分配請(qǐng)求;對(duì)應(yīng)該請(qǐng)求,識(shí)別總線上已經(jīng)分配給網(wǎng)絡(luò)設(shè)備的頁(yè)塊并識(shí)別該頁(yè)內(nèi)將被分配給該資源的但尚未分配的地址;以及將指示資源的分配的并包括識(shí)別出的地址的消息傳送至網(wǎng)絡(luò)設(shè)備。
14.一種用于在網(wǎng)絡(luò)和數(shù)據(jù)處理設(shè)備的進(jìn)程間提供接口的網(wǎng)絡(luò)接口設(shè)備,該數(shù)據(jù)處理設(shè)備能夠支持多個(gè)進(jìn)程,每個(gè)進(jìn)程都具有標(biāo)識(shí)代碼,該網(wǎng)絡(luò)接口設(shè)備具有用于支持接口的多個(gè)不同類型的資源,可將每個(gè)資源分配給這些進(jìn)程中的一個(gè),以及保存有為每個(gè)資源定義了為其分配的進(jìn)程的標(biāo)識(shí)代碼的映射數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)器。
15.根據(jù)權(quán)利要求14中所述的網(wǎng)絡(luò)設(shè)備,其中,網(wǎng)絡(luò)接口具有資源安全裝置,該資源安全裝置被設(shè)置為阻止分配給每個(gè)資源的進(jìn)程之外的進(jìn)程對(duì)各資源的狀態(tài)進(jìn)行修改。
16.根據(jù)權(quán)利要求15中所述的網(wǎng)絡(luò)設(shè)備,其中,資源安全裝置被設(shè)置為阻止分配給每個(gè)資源的進(jìn)程之外的進(jìn)程對(duì)各資源的狀態(tài)進(jìn)行修改。
17.根據(jù)權(quán)利要求16中所述的網(wǎng)絡(luò)設(shè)備,其中,將資源安全裝置設(shè)置為支持虛擬內(nèi)存機(jī)制,通過(guò)虛擬內(nèi)存機(jī)制可將數(shù)據(jù)處理設(shè)備的內(nèi)存空間映射至另一個(gè)數(shù)據(jù)處理設(shè)備的內(nèi)存空間上,資源安全裝置可以包括數(shù)據(jù)處理器,該數(shù)據(jù)處理器通過(guò)訪問(wèn)數(shù)據(jù)存儲(chǔ)器來(lái)處理網(wǎng)絡(luò)接口設(shè)備接收到的用以修改資源狀態(tài)的并包括由機(jī)制決定的內(nèi)存映射的標(biāo)識(shí)的請(qǐng)求,以此識(shí)別資源是否與映射相關(guān)聯(lián),如不相關(guān)聯(lián)則阻止該請(qǐng)求。
18.根據(jù)權(quán)利要求14至17中任意一項(xiàng)所述的網(wǎng)絡(luò)設(shè)備,其中,資源的類型包括兩個(gè)或兩個(gè)以上的定時(shí)器、用于支持將數(shù)據(jù)隊(duì)列從網(wǎng)絡(luò)設(shè)備送至數(shù)據(jù)處理設(shè)備的資源,以及用于支持將數(shù)據(jù)隊(duì)列從數(shù)據(jù)處理設(shè)備送至網(wǎng)絡(luò)設(shè)備的資源。
19.根據(jù)權(quán)利要求14至18中任意一項(xiàng)所述的網(wǎng)絡(luò)設(shè)備,其中,當(dāng)網(wǎng)絡(luò)接口設(shè)備提供至少一種所述接口時(shí),可以改變映射數(shù)據(jù),這樣可以改變總線上用以對(duì)資源進(jìn)行尋址的地址。
20.一種用于在網(wǎng)絡(luò)和數(shù)據(jù)處理設(shè)備間提供接口的網(wǎng)絡(luò)接口設(shè)備,網(wǎng)絡(luò)接口設(shè)備具有用以支持接口的多個(gè)不同類型的資源,每種類型的資源的每一個(gè)均能夠與同類型的其他資源進(jìn)行數(shù)據(jù)傳輸,以及一個(gè)保存有映射數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)器,映射數(shù)據(jù)定義了允許相互通信的一個(gè)或多個(gè)包括不同種類資源的資源對(duì)。
21.根據(jù)權(quán)利要求20中所述的網(wǎng)絡(luò)接口設(shè)備,其中,當(dāng)網(wǎng)絡(luò)接口設(shè)備提供至少一種所述接口時(shí),可以改變映射數(shù)據(jù)。
22.根據(jù)權(quán)利要求21中所述的網(wǎng)絡(luò)接口設(shè)備,其中,網(wǎng)絡(luò)接口具有資源安全裝置,該資源安全裝置設(shè)置為阻止沒(méi)有為其保存定義了與另一資源的配對(duì)情況的映射數(shù)據(jù)的資源修改另一資源的狀態(tài)。
23.根據(jù)權(quán)利要求22中所述的網(wǎng)絡(luò)接口設(shè)備,其中,網(wǎng)絡(luò)接口具有資源安全裝置,資源安全裝置設(shè)置為阻止沒(méi)有為其保存定義了與另一資源的配對(duì)情況的映射數(shù)據(jù)的資源以外的資源修改另一資源的狀態(tài)。
24.根據(jù)權(quán)利要求20至23中任意一項(xiàng)所述的網(wǎng)絡(luò)接口設(shè)備,其中,資源的類型包括兩個(gè)或兩個(gè)以上的定時(shí)器、用于支持將數(shù)據(jù)隊(duì)列從網(wǎng)絡(luò)設(shè)備送至數(shù)據(jù)處理設(shè)備的資源,以及用于支持將數(shù)據(jù)隊(duì)列從數(shù)據(jù)處理設(shè)備送至網(wǎng)絡(luò)設(shè)備的資源。
全文摘要
一種用于在網(wǎng)絡(luò)和數(shù)據(jù)處理設(shè)備間提供接口的網(wǎng)絡(luò)接口設(shè)備,該網(wǎng)絡(luò)接口設(shè)備具有多個(gè)不同類型的資源,用于支持接口,以及一個(gè)總線接口,用于與數(shù)據(jù)處理設(shè)備依靠一種通過(guò)對(duì)總線上的地址進(jìn)行尋址在總線上發(fā)送數(shù)據(jù)的總線進(jìn)行接口,將該網(wǎng)絡(luò)接口設(shè)備設(shè)置為可以通過(guò)總線上各自的地址對(duì)每個(gè)資源進(jìn)行尋址。
文檔編號(hào)G06F13/42GK101048767SQ200580035359
公開(kāi)日2007年10月3日 申請(qǐng)日期2005年9月2日 優(yōu)先權(quán)日2004年9月9日
發(fā)明者大衛(wèi)·里多克, 史蒂文·珀佩 申請(qǐng)人:Level5網(wǎng)絡(luò)公司