專利名稱:信息處理系統(tǒng)、接收設(shè)備和程序的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種信息處理系統(tǒng)、接收設(shè)備和程序,更具體地說,涉及如下的信息處理系統(tǒng)、接收設(shè)備和程序,其可以提高被配置來通過使用該接收裝置所接收的數(shù)據(jù)而執(zhí)行處理的數(shù)據(jù)處理設(shè)備的處理速度。
背景技術(shù):
圖1是示例個(gè)人計(jì)算機(jī)(下文中,稱之為PC)1的框圖,其包括通過使用描述符(descriptor)50(在圖2中示出,將在后面描述)執(zhí)行直接存儲器存取(DMA)傳送的網(wǎng)卡19。
如圖1所示,中央處理單元(CPU)10經(jīng)由總線14連接到只讀存儲器(ROM)11、隨機(jī)存取存儲器(RAM)12和存儲器控制器13。CPU10根據(jù)存儲在ROM11和/或記錄單元18中的諸如設(shè)備驅(qū)動(dòng)器的程序來執(zhí)行各種處理過程。這里,CPU10所執(zhí)行處理的單位(字)被確定為32位。
例如,CPU10存儲關(guān)于所提供的分組區(qū)域32的地址的信息,以便經(jīng)由存儲器控制器把從網(wǎng)卡19DMA傳送的分組作為描述符50記錄到RAM12的描述符區(qū)域31上。此外,CPU10根據(jù)存儲在ROM11和/或記錄單元18中的程序基于描述符50處理從網(wǎng)卡19DMA傳送到RAM12的分組區(qū)域32的分組。
此外,CPU10啟動(dòng)設(shè)備驅(qū)動(dòng)器的中斷處理器,以便通過使用分組和對應(yīng)于分組的描述符50來執(zhí)行中斷處理。
RAM12包括其上記錄了描述符50的描述符區(qū)域32、其上記錄了從網(wǎng)卡19DMA傳送的分組的分區(qū)區(qū)域32等等。存儲器控制器13控制RAM12以及執(zhí)行RAM12和網(wǎng)卡19之間的DMA傳送。此外,存儲器控制器13把從網(wǎng)卡19發(fā)送的接收信息存儲在描述符50中,以便更新描述符50,其中該接收信息是關(guān)于從不同設(shè)備發(fā)送的分組的信息。
輸入輸出接口15經(jīng)由總線14連接到CPU10。包括鍵盤、鼠標(biāo)等等的輸入單元16和包括液晶顯示器(LCD)、陰極射線管(CRT)顯示器等等的輸出單元17連接到輸入輸出接口15。CPU10根據(jù)從輸入單元16輸入的指令執(zhí)行各種處理過程。此外,CPU10向輸出單元17輸出有關(guān)通過處理過程獲得的圖像和/或聲音的數(shù)據(jù)。
連接到輸入輸出接口15的記錄單元18包括例如硬盤,從而記錄由CPU10執(zhí)行的程序和/或各種數(shù)據(jù)項(xiàng)。網(wǎng)卡19接收經(jīng)由網(wǎng)絡(luò)從不同設(shè)備(未示出)發(fā)送的分組,并且經(jīng)由存儲器控制器13把該分組DMA傳送到RAM12,該分組遵從“Ethernet(以太網(wǎng),注冊商標(biāo))”等。此外,網(wǎng)卡19產(chǎn)生接收信息并且向存儲器控制器13發(fā)送該接收信息。
在下面的描述中,遵從“Ethernet(注冊商標(biāo))”的分組是從不同設(shè)備發(fā)送的,并且該分組包括添加了以太網(wǎng)報(bào)頭、因特網(wǎng)協(xié)議版本4(IPv4)報(bào)頭、傳輸控制協(xié)議(TCP)報(bào)頭等的數(shù)據(jù)。此外,為網(wǎng)卡19給定介質(zhì)訪問控制(MAC)地址。
當(dāng)把包括磁盤、光盤、磁光盤、半導(dǎo)體存儲器等的可移動(dòng)介質(zhì)21插入到連接到輸入輸出接口15的驅(qū)動(dòng)器20中時(shí),驅(qū)動(dòng)器20驅(qū)動(dòng)可移動(dòng)介質(zhì)21并且獲取記錄在可移動(dòng)介質(zhì)21上的程序和/或數(shù)據(jù)。視需要,把所獲取的程序和/或數(shù)據(jù)傳送到記錄單元18并且記錄。
圖2示出了記錄在圖1所示的描述符區(qū)域31上的描述符50的示例。
圖2所示的描述符50存儲地址51、分組大小52和狀態(tài)53。
地址51是被準(zhǔn)備來記錄從網(wǎng)卡19DMA傳送的分組的分組區(qū)域32的32位地址。分組大小52表示所準(zhǔn)備的分組區(qū)域32的大小、或者實(shí)際被記錄在分組區(qū)域32上的分組的數(shù)據(jù)大小。狀態(tài)53是關(guān)于當(dāng)記錄在地址51處的分組區(qū)域32上的分組被發(fā)送到網(wǎng)卡19時(shí)出現(xiàn)的錯(cuò)誤的細(xì)節(jié)的信息(下文稱之為錯(cuò)誤信息)。如果沒有發(fā)生錯(cuò)誤,則把指示無錯(cuò)誤發(fā)生的錯(cuò)誤信息作為狀態(tài)53存儲在描述符50中。
接下來,將參考圖3描述由圖1所示的PC1執(zhí)行的DAM傳送處理。
在步驟S11,CPU10執(zhí)行存儲在ROM11和/或記錄單元18中的設(shè)備驅(qū)動(dòng)器,以便把圖2所示的描述符50設(shè)置(存儲)到RAM12的描述符區(qū)域31。這時(shí),把關(guān)于被準(zhǔn)備來記錄從網(wǎng)卡19DMA傳送的分組的分組區(qū)域32的地址的信息作為地址51存儲在描述符50中,以及把關(guān)于分組區(qū)域32的大小的信息作為分組大小52存儲在描述符50中。
在步驟S11之后,處理前進(jìn)到步驟S12,從而CPU10執(zhí)行設(shè)備驅(qū)動(dòng)器,由此向網(wǎng)卡19發(fā)送通知,該通知指示描述符50設(shè)置完成。
在步驟S21,網(wǎng)卡19接收從CPU10發(fā)送的、指示描述符50設(shè)置完成的通知,然后前進(jìn)到步驟S22。在步驟S22,網(wǎng)卡19請求存儲器控制器13DMA傳送描述符50。這里,把關(guān)于描述符區(qū)域31的地址和描述符50的大小的信息預(yù)先存儲在網(wǎng)卡19中。把地址大小信息以及要求DMA傳送描述符50的請求發(fā)送到存儲器控制器13。
在步驟S31,存儲器控制器13接收從網(wǎng)卡19發(fā)送的地址大小信息以及要求DMA傳送描述符50的請求,然后前進(jìn)到步驟S32。在步驟S32,存儲器控制器13基于從網(wǎng)卡19發(fā)送的地址大小信息而從RAM12的描述符區(qū)域31讀取描述符50,然后前進(jìn)到步驟S33。
在步驟S33,存儲器控制器13向網(wǎng)卡19發(fā)送在步驟S32讀取的描述符50,從而DMA傳送描述符50。
在步驟S23,網(wǎng)卡19接收從存儲器控制器13DMA傳送的描述符50、把描述符50存儲在內(nèi)部存儲器(未示出)中,然后前進(jìn)到步驟S24。在步驟S24,網(wǎng)卡19判定是否經(jīng)由網(wǎng)絡(luò)從不同設(shè)備(未示出)發(fā)送了分組。如果確定沒有發(fā)送分組,則網(wǎng)卡19等待,直到發(fā)送了分組。
如果在步驟S24確定發(fā)送了分組,則網(wǎng)卡19前進(jìn)到步驟S25,指定所存儲的描述符50的地址51,把所發(fā)送的分組發(fā)送到存儲器控制器13,從而DMA傳送分組。
在步驟S34,存儲器控制器13指定地址51,接收從網(wǎng)卡19DMA傳送的分組,前進(jìn)到步驟S35。在步驟S35,存儲器控制器13把從存儲器控制器13發(fā)送的分組記錄到地址51處的分組區(qū)域32。
在步驟S26,網(wǎng)卡19向存儲器控制器13發(fā)送關(guān)于在步驟S24所發(fā)送的分組的數(shù)據(jù)大小和錯(cuò)誤信息的信息,作為關(guān)于所發(fā)送分組的信息的接收信息,從而DMA傳送接收信息。
在步驟S36,存儲器控制器13接收從網(wǎng)卡19DMA傳送的接收信息,然后前進(jìn)到步驟S37。在步驟S37,存儲器控制器13通過把所接收的接收信息存儲在描述符50中而更新描述符50。更具體地,存儲器控制器13存儲(更新)接收信息的數(shù)據(jù)大小信息作為描述符50的分組大小52,并且存儲錯(cuò)誤信息作為狀態(tài)53。
在步驟S37,存儲器控制器13前進(jìn)到步驟S38,并且向網(wǎng)卡19發(fā)送通知,該通知指示分組的DMA傳送完成,并且終止處理。
在步驟S27,網(wǎng)卡19接收從存儲器控制器13發(fā)送的、指示分組的DMA傳送完成的通知,并且前進(jìn)到步驟S28。在步驟S28,網(wǎng)卡19向CPU10發(fā)送關(guān)于中斷的通知,并且終止處理。
在步驟S13,CPU10接收從網(wǎng)卡19發(fā)送的中斷通知,并且前進(jìn)到步驟S14。在步驟S14,CPU10啟動(dòng)設(shè)備驅(qū)動(dòng)器的中斷處理器,并且終止處理。
接下來,將參考圖4描述中斷處理器所執(zhí)行的中斷處理。該中斷處理是例如當(dāng)在圖3所示的步驟S14處啟動(dòng)中斷處理器時(shí)被啟動(dòng)的。
在步驟S51,中斷處理器從記錄在RAM12的描述符區(qū)域31上的描述符50讀取地址51和狀態(tài)53,然后前進(jìn)到步驟S52。
在步驟S52,中斷處理器判斷在步驟S51所讀取的狀態(tài)53是否指示發(fā)生錯(cuò)誤。如果中斷處理器確定狀態(tài)53沒有指示發(fā)生錯(cuò)誤,也就是說,狀態(tài)53指示無錯(cuò)誤發(fā)生,則中斷處理器前進(jìn)到步驟S53。
在步驟S53,中斷處理器基于在步驟S51讀取的地址51讀取被記錄在地址51處的分組區(qū)域32上的分組,并且進(jìn)行報(bào)頭處理,以便從所讀取的分組去除Ethernet報(bào)頭等。在步驟S53之后,中斷處理器前進(jìn)到步驟S54,以便中斷處理器把經(jīng)過報(bào)頭處理的分組移交給上位(high-order)因特網(wǎng)協(xié)議(IP)層,然后前進(jìn)到步驟S56。
另一方面,如果在步驟S52確定狀態(tài)53指示發(fā)生錯(cuò)誤,則中斷處理器基于在步驟S51所讀取的地址51丟棄(刪除)記錄在地址51處的分組區(qū)域32上的分組,然后前進(jìn)到步驟S56。在步驟S56,中斷處理器清除在圖3所示的步驟S13發(fā)送的中斷通知,然后終止處理。
近年來,TCP/IP卸載引擎(TCP/IP Offload Engine,TOE)等的使用允許通過使用網(wǎng)卡執(zhí)行預(yù)定處理。過去,在分組的DMA傳送完成之后由CPU執(zhí)行該預(yù)定處理。在這種情況下,把關(guān)于預(yù)定處理的結(jié)果的信息存儲在描述符中。
例如,過去,在DMA傳送分組之后,CPU基于分組計(jì)算報(bào)頭校驗(yàn)和。當(dāng)通過使用網(wǎng)卡19執(zhí)行該計(jì)算處理時(shí),把作為計(jì)算處理的結(jié)果獲得的報(bào)頭校驗(yàn)和存儲在描述符70中,如圖5所示。
也就是說,圖5中所示的描述符70存儲地址51、分組大小52、狀態(tài)53、報(bào)頭校驗(yàn)和71和保留72。在圖5中,將不再描述與圖2所示的元件相同的元件。與圖2所示元件相同的圖5中的元件被以相同的標(biāo)號和/或字符表示。
報(bào)頭校驗(yàn)和71是通過由網(wǎng)卡19基于分組執(zhí)行的計(jì)算而獲得的報(bào)頭校驗(yàn)和。保留72是作為至閑區(qū)域提供的。
當(dāng)把圖5所示的描述符70記錄在描述符區(qū)域31上時(shí),網(wǎng)卡19基于所發(fā)送的分組計(jì)算報(bào)頭校驗(yàn)和,并且在圖3所示的步驟S26向存儲器控制器13發(fā)送關(guān)于分組的數(shù)據(jù)大小、分組的錯(cuò)誤信息的信息、以及關(guān)于報(bào)頭校驗(yàn)和的信息,作為接收信息。
在這種情況下,將參考圖6描述在圖3所示的步驟S14啟動(dòng)的由中斷處理器執(zhí)行的中斷處理。
在步驟S71,中斷處理器從記錄在RAM12的描述符區(qū)域31的描述符70(圖5中示出)讀取地址51、狀態(tài)53、報(bào)頭校驗(yàn)和71,然后前進(jìn)到步驟S72。
在步驟S72,中斷處理器判斷狀態(tài)53是否指示發(fā)生錯(cuò)誤,如圖4所示的步驟S52中的情況那樣。如果確定狀態(tài)53沒有指示發(fā)生錯(cuò)誤,則中斷處理器前進(jìn)到步驟S73。
在步驟S73,中斷處理器基于在步驟S71讀取的地址51讀取被記錄在地址51處的分組區(qū)域32上的分組,并且判定所讀取的分組的IPv4報(bào)頭中所包含的報(bào)頭校驗(yàn)和是否與在步驟S71讀取的報(bào)頭校驗(yàn)和71相符。
如果在步驟S73確定IPv4報(bào)頭中所包含的報(bào)頭校驗(yàn)和與報(bào)頭校驗(yàn)和71相符,則處理前進(jìn)到步驟S74。
另一方面,如果在步驟S72確定狀態(tài)53指示發(fā)生錯(cuò)誤,或者如果在步驟S73確定IPv4報(bào)頭中所包含的報(bào)頭校驗(yàn)和與報(bào)頭校驗(yàn)和71不相符,則處理前進(jìn)到步驟S76。
由于對應(yīng)于步驟S74、S75、S76、S77的處理與圖4中所示的對應(yīng)于步驟S53、S54、S55、S56的處理相同,所以,將不再描述對應(yīng)于步驟S74-S77的處理。
另一方面,例如,運(yùn)行于Linux上的中斷處理器分析寫在所發(fā)送分組的Ethernet報(bào)頭中的MAC地址,并且設(shè)置指示分析結(jié)果的值作為分組類型(skb→pkt_type),由函數(shù)eth_type_trans表達(dá)。
將參考圖7描述關(guān)于分組類型的細(xì)節(jié)。
當(dāng)分組類型的值是零時(shí),如圖7所示,該分組類型示出了該分析結(jié)果指示所發(fā)送的分組是通過單播(unicast)發(fā)送到自身設(shè)備的分組(PACKET_HOST)。當(dāng)分組類型的值是1時(shí),該分組類型示出了該分析結(jié)果指示所發(fā)送的分組是通過廣播(broadcast)發(fā)送的分組(PACKET_BROADCAST)。
當(dāng)分組類型的值是2時(shí),該分組類型示出了該分析結(jié)果指示所發(fā)送的分組是通過多播(multicast)發(fā)送的分組(PACKET_MULTICAST)。當(dāng)分組類型的值是3時(shí),該分組類型示出了該分析結(jié)果指示所發(fā)送的分組是通過單播發(fā)送到不同計(jì)算機(jī)的分組(PACKET_OTHERHOST)接下來,將參考圖8描述由分析MAC地址的中斷處理器執(zhí)行的中斷處理。
除了對應(yīng)于步驟S93的處理之外,圖8中所示的中斷處理與圖4中所示的相同。也就是說,對應(yīng)于步驟S91、S92、S94、S95、S96、S97的處理與對應(yīng)于步驟S51、S52、S53、S54、S55、S56的處理相同。因而,將不再描述對應(yīng)于步驟S91、S92、S94-S97的處理,以避免贅述。
在步驟S93,中斷處理器基于描述符50的地址51讀取被記錄在地址51處的分組區(qū)域32上的分組,并且進(jìn)行設(shè)置處理,以便基于所寫在所讀取分組的Ethernet報(bào)頭中的MAC地址來設(shè)置分組類型。后面將參考圖9描述關(guān)于設(shè)置處理的細(xì)節(jié)。
接下來,將參考圖9描述對應(yīng)于圖8所示的步驟S93的設(shè)置處理。
在步驟S111,中斷處理器判斷所寫在從分組區(qū)域32讀取的分組的Ethernet報(bào)頭中的MAC地址的最低有效位是否為1。也就是說,中斷處理器判斷所讀取的分組是否是通過廣播發(fā)送的分組或通過多播發(fā)送的分組。
在步驟S111,如果確定MAC地址的最低有效位不是1,也就是說,如果所讀取的分組是通過單播發(fā)送的分組,則處理前進(jìn)到步驟S112,以便中斷處理器判斷MAC地址是否為自身設(shè)備的地址(給予網(wǎng)卡19的MAC地址)。
在步驟S112,如果確定MAC地址不是自身設(shè)備的地址,也就是說,如果所讀取的分組是通過單播發(fā)送到不同計(jì)算機(jī)的分組,則處理前進(jìn)到步驟S113,以便中斷處理器把分組類型的值設(shè)置為3,然后前進(jìn)到圖8所示的步驟S94。
另一方面,如果在步驟S112確定MAC地址是自身設(shè)備的地址,也就是說,如果所讀取的分組是通過單播發(fā)送到自身設(shè)備的分組,則處理前進(jìn)到步驟S114,以便中斷處理器把分組類型的值設(shè)置為0,然后前進(jìn)到圖8所示的步驟S94。
此外,如果在步驟S111確定MAC地址的最低有效位是1,則處理前進(jìn)到步驟S115,以便中斷處理器判斷MAC地址是否是廣播地址,也就是說,是否MAC地址的每一位是1。
如果在步驟S115確定MAC地址不是廣播地址,則處理前進(jìn)到步驟S116,以便中斷處理器把分組類型的值設(shè)置為2,然后前進(jìn)到圖8所示的步驟S94。
另一方面,如果在步驟S115確定MAC地址是廣播地址,則處理前進(jìn)到步驟S117,以便中斷處理器把分組類型的值設(shè)置為1,然后前進(jìn)到圖8所示的步驟S94。
此外,當(dāng)網(wǎng)卡19通過使用TOE等分析MAC地址時(shí),把顯示分析結(jié)果的地址類別(class)存儲在描述符90中,如圖10所示。
圖10所示的描述符90存儲地址51、分組大小52、狀態(tài)53、地址類別91和保留92。在圖10中,將不再描述與圖2所示的元件相同的元件。與圖2所示元件相同的圖10中的元件被以相同的標(biāo)號和/或字符表示。
地址類別91表示指示MAC地址的分析結(jié)果的值,該分析是網(wǎng)卡19進(jìn)行的。保留92是作為空閑區(qū)域提供的。
接下來,將參考圖11描述圖10所示的地址類別91。
當(dāng)?shù)刂奉悇e91的值是0×20時(shí),如圖11所示,該地址類別91示出了該分析結(jié)果指示所發(fā)送的分組是通過多播發(fā)送的分組(RX_FLAG_MCAST)。當(dāng)?shù)刂奉悇e91的值是0×40時(shí),該地址類別91示出了該分析結(jié)果指示所發(fā)送的分組是通過廣播發(fā)送的分組(RX_FLAG_BCAST)。此外,當(dāng)?shù)刂奉悇e91的值是0×80時(shí),該地址類別91示出了該分析結(jié)果指示所發(fā)送的分組是以混雜方式發(fā)送的分組(RX_FLAG_MISS)。
這里,混雜方式表示其中接收每個(gè)分組的方式。通過單播發(fā)送到不同計(jì)算機(jī)的任何分組被以混雜方式接收。即,以混雜方式接收的分組是通過單播發(fā)送到不同計(jì)算機(jī)的分組。
接下來,將參考圖12描述對應(yīng)于圖8所示的步驟S93的設(shè)置處理,其中該設(shè)置處理是當(dāng)網(wǎng)卡19分析MAC地址時(shí)執(zhí)行的。
在步驟S131,中斷處理器讀取記錄在描述符區(qū)域31上的描述符90的地址類別91,并且判斷所讀取的地址類別91的值是否為0×40,也就是說,與標(biāo)識符90對應(yīng)的該分組(記錄在標(biāo)識符90中所存儲的地址51處的分組區(qū)域32上的分組)是否是通過廣播發(fā)送的分組。
如果在步驟S131確定地址類別91的值是0×40,則處理前進(jìn)到步驟S132,從而中斷處理器把分組類型的值設(shè)置為1,然后前進(jìn)到圖8所示的步驟S94。
另一方面,如果在步驟S131確定地址類別的值不是0×40,則處理前進(jìn)到步驟S133,從而中斷處理器判斷地址類別91的值是否為0×20,也就是說,對應(yīng)于標(biāo)識符90的分組是否是通過多播發(fā)送的分組。
如果在步驟S133確定地址類別91的值是0×20,則處理前進(jìn)到步驟S134,從而中斷處理器把分組類型的值設(shè)置為2,然后前進(jìn)到圖8所示的步驟S94。
此外,如果在步驟S133確定地址類別91的值不是0×20,則處理前進(jìn)到步驟S135,從而中斷處理器判斷地址類別91的值是否為0×80,也就是說,對應(yīng)于標(biāo)識符90的分組是否是以混雜方式接收的分組。
如果在步驟S135確定地址類別91不是0×80,則處理前進(jìn)到步驟S136,從而中斷處理器把分組類型的值設(shè)置為0,然后前進(jìn)到圖8所示的步驟S94。
另一方面,如果在步驟S135確定地址類別91的值是0×80,也就是說,如果對應(yīng)于描述符90的分組是通過單播發(fā)送到不同計(jì)算機(jī)的分組,則處理前進(jìn)到步驟S137,從而中斷處理器把分組類型的值設(shè)置為3,然后前進(jìn)到圖8所示的步驟S94。
過去,提出了各種有效進(jìn)行DMA傳送處理的方法,這些各種方式是由被配置來進(jìn)行DMA傳送處理的設(shè)備進(jìn)行的。例如,提出了一種數(shù)據(jù)傳送控制設(shè)備,被配置來通過交替使用兩個(gè)緩沖器而在數(shù)據(jù)段的轉(zhuǎn)變處無中斷地DMA傳送數(shù)據(jù)。例如,在日本未審查的專利申請公開No.2000-172634中公開了上述技術(shù)。此外,提出了一種數(shù)據(jù)傳送設(shè)備,被配置來即使在對準(zhǔn)(alignment)不一致發(fā)生時(shí)也以最大總線長度傳送數(shù)據(jù),例如如在日本未審查的專利申請公開No.2003-67321中公開的那樣。
發(fā)明內(nèi)容
但是,還沒有提出下列思想以準(zhǔn)備用于通過使用從網(wǎng)卡DMA傳送的分組所執(zhí)行的諸如中斷處理的處理的格式來產(chǎn)生接收信息,并且提高處理的速度,從而CPU可以高效執(zhí)行處理。
有利地,本發(fā)明允許數(shù)據(jù)處理設(shè)備以提高的速度執(zhí)行處理,該數(shù)據(jù)處理設(shè)備被配置來通過使用由接收設(shè)備接收的數(shù)據(jù)來執(zhí)行處理。
根據(jù)本發(fā)明的第一實(shí)施例,提出了一種信息處理系統(tǒng),其包括被配置來接收數(shù)據(jù)的接收設(shè)備和被配置來通過使用該數(shù)據(jù)執(zhí)行數(shù)據(jù)處理的數(shù)據(jù)處理設(shè)備。該接收設(shè)備包括接收單元,被配置來接收該數(shù)據(jù);以及存儲控制單元,被配置來基于所接收的數(shù)據(jù)生成格式數(shù)據(jù),并且將該格式數(shù)據(jù)和該數(shù)據(jù)存儲在存儲單元中,該格式數(shù)據(jù)是以準(zhǔn)備用于該數(shù)據(jù)處理的格式生成的數(shù)據(jù)。該數(shù)據(jù)處理設(shè)備包括處理單元,被配置來通過使用存儲在該存儲單元中的該數(shù)據(jù)和該格式數(shù)據(jù)而執(zhí)行該數(shù)據(jù)處理。
根據(jù)本發(fā)明的第二實(shí)施例,提出了一種接收設(shè)備,其使得存儲單元存儲由數(shù)據(jù)處理設(shè)備使用的數(shù)據(jù),以便執(zhí)行數(shù)據(jù)處理。該接收設(shè)備包括接收單元,被配置來接收該數(shù)據(jù);以及存儲控制單元,被配置來基于所接收的數(shù)據(jù)生成格式數(shù)據(jù),并且將該格式數(shù)據(jù)和該數(shù)據(jù)存儲在該存儲單元中,該格式數(shù)據(jù)是以準(zhǔn)備用于該數(shù)據(jù)處理的格式生成的數(shù)據(jù)。
該準(zhǔn)備用于該數(shù)據(jù)處理的格式是當(dāng)執(zhí)行該數(shù)據(jù)處理時(shí)使用的處理單位的大小。
該準(zhǔn)備用于該數(shù)據(jù)處理的格式是其中使用用于該數(shù)據(jù)處理的值的格式。
根據(jù)本發(fā)明的第三實(shí)施例,提供了一種程序,該程序使得計(jì)算機(jī)執(zhí)行處理使得存儲單元存儲由數(shù)據(jù)處理設(shè)備使用的數(shù)據(jù),以便執(zhí)行數(shù)據(jù)處理。該程序包括下述步驟接收該數(shù)據(jù);以及基于所接收的數(shù)據(jù)生成格式數(shù)據(jù),并且將該格式數(shù)據(jù)和該數(shù)據(jù)存儲在該存儲裝置中,該格式數(shù)據(jù)是以準(zhǔn)備用于該數(shù)據(jù)處理的格式生成的數(shù)據(jù)。
根據(jù)該第一實(shí)施例,接收數(shù)據(jù),基于所接收的數(shù)據(jù)生成格式數(shù)據(jù),并且將該格式數(shù)據(jù)和該數(shù)據(jù)存儲在存儲單元中,該格式數(shù)據(jù)是以適應(yīng)于通過使用該數(shù)據(jù)執(zhí)行的數(shù)據(jù)處理的格式而生成的數(shù)據(jù)。
根據(jù)該第二實(shí)施例,接收數(shù)據(jù),基于所接收的數(shù)據(jù)生成格式數(shù)據(jù),并且將該格式數(shù)據(jù)和該數(shù)據(jù)存儲在存儲單元中,該格式數(shù)據(jù)是以準(zhǔn)備用于數(shù)據(jù)處理的格式生成的數(shù)據(jù)。
這樣,本發(fā)明的第一和第二實(shí)施例允許存儲所接收的數(shù)據(jù)。
此外,根據(jù)本發(fā)明的第一和第二實(shí)施例,變得可以提高由數(shù)據(jù)處理設(shè)備通過使用該接收設(shè)備所接收的數(shù)據(jù)而執(zhí)行的處理的速度。
圖1是示出示例公知個(gè)人計(jì)算機(jī)的框圖;圖2示出了示例公知描述符;圖3是圖示公知DMA傳送處理的流程圖;圖4是圖示由公知中斷處理器執(zhí)行的中斷處理的示例的流程圖;圖5示出了另一示例公知描述符;
圖6是示出由公知中斷處理器執(zhí)行的中斷處理的另一示例的流程圖;圖7是圖示分組類型的圖;圖8是示出由公知中斷處理器執(zhí)行的中斷處理的另一示例的流程圖;圖9是圖示設(shè)置處理的流程圖;圖10示出了另一示例公知描述符;圖11是圖示公知地址類別的圖;圖12是示出不同于圖9所示的設(shè)置處理的設(shè)置處理的流程圖;圖13是圖示根據(jù)本發(fā)明實(shí)施例的個(gè)人計(jì)算機(jī)的示例硬件配置的框圖;圖14是圖示圖13所示的個(gè)人計(jì)算機(jī)的功能的框圖;圖15是圖示DMA控制單元的示例具體配置的框圖;圖16示出了IPv4報(bào)頭的配置;圖17示出了示例描述符;圖18是圖示DMA傳送處理的流程圖;圖19是圖示生成處理的流程圖;圖20是圖示中斷處理的流程圖;圖21是圖示另一DMA控制單元的示例具體配置的框圖;圖22示出另一示例描述符;圖23是圖示地址類別的圖;圖24是圖示不同于圖19所示的生成處理的生成處理的流程圖;圖25是圖示分析處理的流程圖;以及圖26是圖示不同于圖20所示的中斷處理的中斷處理的流程圖。
具體實(shí)施例方式
下文中,將參考附圖詳細(xì)描述本發(fā)明的實(shí)施例。
圖13是圖示根據(jù)本發(fā)明實(shí)施例的個(gè)人計(jì)算機(jī)(PC)101的示例硬件配置的框圖。
圖13所示的PC101包括只讀存儲器(ROM)11、存儲器控制器13、總線14、輸入輸出接口15、輸入單元16、輸出單元17、記錄單元18、驅(qū)動(dòng)器20、中央處理單元(CPU)110、隨機(jī)存取存儲器(RAM)111、網(wǎng)卡112。
下面的方法用于上述實(shí)施例中。即,在PC101中,當(dāng)把由網(wǎng)卡112接收的數(shù)據(jù)(即,分組)DMA傳送到RAM111時(shí),使包括報(bào)頭校驗(yàn)和的數(shù)據(jù)(下文中,稱之為報(bào)頭校驗(yàn)和數(shù)據(jù))的格式與CPU110執(zhí)行處理的單位(即,處理字)相符合。然后,把報(bào)頭校驗(yàn)和數(shù)據(jù)存儲在后面將描述的圖17中所示的描述符210中。
上述報(bào)頭校驗(yàn)和數(shù)據(jù)是通過使用包含在所接收的分組中的預(yù)定數(shù)據(jù)生成的,并且被使用,以便執(zhí)行包括例如錯(cuò)誤檢驗(yàn)等的各種中斷處理過程。如果報(bào)頭校驗(yàn)和數(shù)據(jù)的格式不同于CPU110的處理單位,則例如當(dāng)進(jìn)行在多個(gè)報(bào)頭校驗(yàn)和之間的比較時(shí),CPU110所執(zhí)行的處理負(fù)載增加。例如,假設(shè)CPU110的處理單位是32位,則把基于所接收的分組計(jì)算得到的16位報(bào)頭校驗(yàn)和數(shù)據(jù)存儲在描述符210中。在這種情況下,把存儲在描述符210中的16位報(bào)頭校驗(yàn)和數(shù)據(jù)與包含在所接收分組的報(bào)頭中的16位報(bào)頭校驗(yàn)和數(shù)據(jù)比較,從而將報(bào)頭校驗(yàn)和相互比較。隨后,比較處理的單位與CPU110所執(zhí)行的處理單位不同,這增加了置于CPU110上的處理負(fù)載。所增加的處理負(fù)載成為中斷高速數(shù)據(jù)處理的貢獻(xiàn)因素。在上述實(shí)施例中,因而,使得存儲在描述符210中的報(bào)頭校驗(yàn)和數(shù)據(jù)的格式(在本實(shí)施例中為數(shù)據(jù)大小)與CPU110的處理單位相符,從而降低置于CPU110上的處理負(fù)載。
此外,當(dāng)在上述實(shí)施例的PC101中進(jìn)行DMA傳送時(shí),把在中斷處理期間所使用的被設(shè)置為(用作)分組類型的格式用作應(yīng)該被存儲在后面將描述的圖22所示的描述符230中的、關(guān)于指示對所接收分組的MAC地址的分析結(jié)果的地址類別的數(shù)據(jù)格式。更具體地,把該被設(shè)置為(用作)分組類型的格式定義為由預(yù)定規(guī)則確定的參數(shù)。此外,根據(jù)本發(fā)明實(shí)施例的“格式數(shù)據(jù)”對應(yīng)于例如上述地址類別和報(bào)頭校驗(yàn)和。
通過分析所接收分組的MAC地址生成地址類別,并且使用該地址類別,從而執(zhí)行諸如分組類型設(shè)置的各種中斷處理過程。這里,當(dāng)?shù)刂奉悇e的數(shù)據(jù)格式不同于在分組類型設(shè)置期間使用的格式時(shí),CPU110難于原樣設(shè)置地址類別的值為分組類型。在這種情況下,因而,CPU110基于地址類別確定分組類型,并且根據(jù)所確定的分組類型進(jìn)行分組類型設(shè)置。結(jié)果,為進(jìn)行分組類型設(shè)置等必需的處理負(fù)載,即置于CPU110上的處理負(fù)載增加,并且增加的處理負(fù)載成為高速數(shù)據(jù)處理中斷的另一貢獻(xiàn)因素。因而,根據(jù)上述實(shí)施例,把地址類別的數(shù)據(jù)格式設(shè)置為在中斷處理期間的分組類型,以便降低置于CPU110上的處理負(fù)載。
下文中,將參考圖13描述上述實(shí)施例的PC101的具體配置。但是,在圖13中,將不再描述與圖1相同的元件。與圖1所示相同的元件將以與圖1所示相同的標(biāo)號和/或字符表示。
CPU110根據(jù)存儲在ROM11和/或記錄單元18中的包括設(shè)備驅(qū)動(dòng)器等的程序執(zhí)行各種處理過程。這里,CPU110所執(zhí)行的處理單位(字)被確定為32位。此外,CPU110可以用作根據(jù)本發(fā)明實(shí)施例的示例數(shù)據(jù)處理設(shè)備。
例如,CPU110把關(guān)于分組區(qū)域32的地址的數(shù)據(jù)作為在后面將描述的圖17中示出的描述符210記錄到RAM111的描述符區(qū)域121上。在分區(qū)區(qū)域32上,將記錄經(jīng)由存儲器控制器13從網(wǎng)卡112DMA傳送的分組。此外,CPU110根據(jù)存儲在ROM11和/或記錄單元18中的程序,基于描述符210來處理從網(wǎng)卡112DMA傳送到RAM111的分組區(qū)域32的分組。
此外,CPU110啟動(dòng)設(shè)備驅(qū)動(dòng)器的中斷處理器,由此,通過使用分組和對應(yīng)于該分組的描述符210執(zhí)行中斷處理。
RAM111包括其上記錄了描述符210的描述符區(qū)域121、其上記錄了從網(wǎng)卡112DMA傳送的分組的分區(qū)區(qū)域32等等。這里,RAM111可以用作根據(jù)本發(fā)明實(shí)施例的示例存儲單元。
網(wǎng)卡112接收經(jīng)由網(wǎng)絡(luò)從不同設(shè)備(未示出)發(fā)送的分組,并且經(jīng)由存儲器控制器13把該分組DMA傳送到RAM111,該分組遵從“Ethernet(注冊商標(biāo))”等。此外,網(wǎng)卡112以準(zhǔn)備用于由CPU110執(zhí)行的中斷處理的格式生成與所接收的分組相關(guān)的接收信息。然后,網(wǎng)卡112向存儲器控制器13發(fā)送該以準(zhǔn)備用于中斷處理的格式生成的接收信息(下文中,稱之為中斷準(zhǔn)備接收信息(interruption-ready-reception information))。這里,為網(wǎng)卡112賦予MAC地址。網(wǎng)卡112可以用作根據(jù)本發(fā)明實(shí)施例的示例接收設(shè)備。
接下來,圖14是示出圖13所示的PC101的功能的框圖。
圖14所示的PC101包括存儲器控制器13、CPU110、RAM111和網(wǎng)卡112。
圖14所示的CPU110包括設(shè)備驅(qū)動(dòng)器151和中斷處理器啟動(dòng)單元152。
設(shè)備驅(qū)動(dòng)器151包括中斷處理器151A。設(shè)備驅(qū)動(dòng)器151向RAM111的描述符區(qū)域121設(shè)置(記錄)描述符210,并且通知描述符控制單元131描述符210設(shè)置完成。
此外,設(shè)備驅(qū)動(dòng)器151根據(jù)從中斷處理器啟動(dòng)單元152發(fā)送的指令啟動(dòng)中斷處理器151A。中斷處理器151A從分組區(qū)域32讀取分組,從描述符區(qū)域121讀取對應(yīng)于所讀取分組的描述符210,并且通過使用分組和描述符210執(zhí)行中斷處理。這里,中斷處理器151A可以用作根據(jù)本發(fā)明實(shí)施例的示例處理單元。
中斷處理器啟動(dòng)單元152接收從網(wǎng)卡112的中斷控制單元135(隨后將對其進(jìn)行描述)發(fā)送的中斷通知,并且根據(jù)該中斷通知指令設(shè)備驅(qū)動(dòng)器151啟動(dòng)中斷處理器151A。
網(wǎng)卡112包括描述符控制單元131、描述符信息單元132、DMA控制單元133、分組接收單元134、中斷控制單元135。
描述符控制單元131接收從CPU110的設(shè)備驅(qū)動(dòng)器151發(fā)送的通知,該通知指示描述符設(shè)置完成。然后,描述符控制單元131根據(jù)所接收的通知請求描述符信息單元132來DMA傳送描述符210。
描述符信息單元132根據(jù)從描述符控制單元131發(fā)送的要求DMA傳送描述符210的請求而請求DMA控制單元133來DMA傳送描述符210。描述符信息單元132把經(jīng)由存儲器控制器13從RAM111的描述符區(qū)域121DMA傳送的描述符210存儲在內(nèi)部存儲器(未示出)中。此外,描述符信息單元132讀取存儲在該內(nèi)部存儲器中的描述符210,并且向DMA控制單元133發(fā)送描述符210。
DMA控制單元133根據(jù)從描述符信息單元132發(fā)送的要求DMA傳送描述符210的請求而請求存儲器控制器13來DMA傳送描述符210。此外,基于從分組接收單元134發(fā)送的分組和從描述符信息單元132發(fā)送的描述符210,DMA控制單元133把分組DMA傳送到存儲器控制器13。
此外,DMA控制單元133基于從分組接收單元134發(fā)送的錯(cuò)誤信息和分組而生成中斷準(zhǔn)備接收信息,并且把該中斷準(zhǔn)備接收信息DMA傳送到存儲器控制器13。DMA控制單元133根據(jù)從存儲器控制器13發(fā)送的通知而向中斷控制單元135發(fā)送指示分組的DMA傳送完成的通知,其中,該從存儲器控制器13發(fā)送的通知指示分組的DMA傳送完成。
分組接收單元134經(jīng)由網(wǎng)絡(luò)接收從不同的設(shè)備發(fā)送的分組,并且把該分組存儲在內(nèi)部存儲器(未示出)中。此外,分組接收單元134向DMA控制單元133發(fā)送所存儲的分組。此外,分組接收單元134檢測關(guān)于在分組接收期間發(fā)生的錯(cuò)誤的細(xì)節(jié)的信息,基于檢測結(jié)果生成錯(cuò)誤信息,并且向DMA控制單元133發(fā)送該錯(cuò)誤信息。
中斷控制單元135響應(yīng)于從DMA控制單元133發(fā)送的通知而向中斷處理器啟動(dòng)單元152發(fā)送通知,該通知指示中斷發(fā)生。
存儲器控制器13基于從網(wǎng)卡112的DMA控制單元133發(fā)送的、要求DMA傳送描述符210的請求而從描述符區(qū)域121讀取描述符210,并且向描述符信息單元132發(fā)送描述符210,從而執(zhí)行描述符210的DMA傳送。
此外,存儲器控制器13在分組區(qū)域32上記錄從DMA控制單元133DMA傳送的分組。此外,存儲器控制器13把從DMA控制單元133DMA傳送的中斷準(zhǔn)備接收信息存儲在描述符區(qū)域121的描述符210中,從而更新描述符210。此外,存儲器控制器13向DMA控制單元133發(fā)送通知,該通知指示分組的DMA傳送完成。
接下來,圖15、16、17、18、19、20示出了中斷處理器151A在中斷處理期間如何基于分組計(jì)算報(bào)頭校驗(yàn)和。
圖15是示出了圖14所示的DMA控制單元133的示例具體配置的框圖。
圖15所示的DMA控制單元133包括存儲控制單元171、提取單元172、計(jì)算單元173、生成單元174和中斷處理單元175。在圖15所示的DMA控制單元133中,生成單元174確定CPU110的字,即,作為中斷處理的單位的32位數(shù)據(jù)大小,是準(zhǔn)備用于中斷處理的格式。然后,生成單元174把包括描述符210中的以所確定的格式提供的報(bào)頭校驗(yàn)和的數(shù)據(jù)存儲作為中斷準(zhǔn)備接收信息。通過執(zhí)行上述處理過程,可以降低置于CPU110上的處理負(fù)載。
接下來,基于從圖14所示的分組接收單元134發(fā)送的分組和從描述符信息單元132發(fā)送的描述符210,存儲控制單元171向存儲器控制器13發(fā)送分組,從而DMA傳送分組。
提取單元172提取包括在從分組接收單元134發(fā)送的分組中的因特網(wǎng)協(xié)議版本4(IPv4)報(bào)頭190(在圖16中示出,稍后將對其進(jìn)行描述),并且向計(jì)算單元173和生成單元174的每個(gè)發(fā)送IPv4報(bào)頭190。計(jì)算單元173基于從提取單元172發(fā)送的IPv4報(bào)頭190計(jì)算報(bào)頭校驗(yàn)和,并且向生成單元174發(fā)送該報(bào)頭校驗(yàn)和。
分組接收單元134向生成單元174發(fā)送錯(cuò)誤信息。生成單元174生成作為CPU110的字的32位的報(bào)頭校驗(yàn)和數(shù)據(jù)作為中斷準(zhǔn)備接收信息,其中該報(bào)頭校驗(yàn)和數(shù)據(jù)包括錯(cuò)誤信息、IPv4報(bào)頭190的IP-數(shù)據(jù)報(bào)文長度194、存活時(shí)間(time-to-live,TTL)198、協(xié)議199和從計(jì)算單元173發(fā)送的報(bào)頭校驗(yàn)和。
生成單元174向存儲器控制器13發(fā)送中斷準(zhǔn)備接收信息,從而DMA傳送中斷準(zhǔn)備接收信息。然后,生成單元174在描述符210中存儲中斷準(zhǔn)備接收信息。中斷處理單元175響應(yīng)于從存儲器控制器13發(fā)送的、指示分組的DMA傳送完成的通知,而向中斷控制單元135發(fā)送指示分組的DMA傳送完成的通知。
圖16示出了IPv4報(bào)頭190的示例配置。
圖16所示的IPv4報(bào)頭190包括4位版本191、4位報(bào)頭長度192、8位服務(wù)類型(Type of Service,TOS)193、16位IP-數(shù)據(jù)報(bào)文長度194。版本191被提供作為關(guān)于分組的版本的信息,報(bào)頭長度192被提供作為關(guān)于包括從版本191到目的地IP地址202的數(shù)據(jù)的IPv4報(bào)頭190的長度的信息。ToS193被提供作為確定數(shù)據(jù)優(yōu)先級定義和確定應(yīng)該進(jìn)行何種類型傳送的信息。IP-數(shù)據(jù)報(bào)文長度194被提供作為示出分組的整體長度(數(shù)據(jù)大小)的信息。
IPv4報(bào)頭190還包括(1)16位數(shù)據(jù)報(bào)文標(biāo)識符195;(2)3位標(biāo)志196;和(3)13位片斷(fragment)偏移197。數(shù)據(jù)報(bào)文標(biāo)識符195是用來標(biāo)識分組的信息,以及標(biāo)志196是用來確定是否禁止分段(fragmenting)和/或確定是否示出經(jīng)劃分的數(shù)據(jù)報(bào)文的最后部分的信息。片斷偏移197是指示重新組裝經(jīng)劃分的數(shù)據(jù)報(bào)文的部分的順序的信息。
IPv4報(bào)頭190還包括(4)8位TTL198;(5)8位協(xié)議199;(6)16位報(bào)頭校驗(yàn)和200。TTL198是指示分組可以存活的時(shí)間段,即,分組可以通過其而發(fā)送的路由器的數(shù)目。協(xié)議199是指示上位協(xié)議的信息。報(bào)頭校驗(yàn)和200是用來判斷IPv4報(bào)頭中出現(xiàn)的錯(cuò)誤的信息。
此外,IPv4報(bào)頭190還包括(7)32位發(fā)送源IP地址201和(8)32位發(fā)送目的地IP地址202。發(fā)送源IP地址201是把分組發(fā)送到網(wǎng)卡112的發(fā)送源設(shè)備的IP地址。發(fā)送目的地IP地址是分組被發(fā)送到的發(fā)送目的地設(shè)備的IP地址。
接下來,圖17示出了被記錄在RAM111的描述符區(qū)域121上的描述符210的示例。
圖17所示的描述符210包括地址51、分組大小52、狀態(tài)53、TTL211、協(xié)議211、報(bào)頭校驗(yàn)和213。在圖17中,將不再描述與圖2相同的元件。與圖2所示相同的元件以與圖2所示相同的標(biāo)號和/或字符表示。
TTL211是與包括在所發(fā)送分組的IPv4報(bào)頭190(圖16中示出)中的8位TTL198相同的信息。協(xié)議212是與包括在所發(fā)送分組的IPv4報(bào)頭190中的8位協(xié)議199相同的信息。報(bào)頭校驗(yàn)和213是由計(jì)算單元173計(jì)算得到的16位報(bào)頭校驗(yàn)和。
接下來,將參考圖18描述由PC101執(zhí)行的DMA傳送處理。
在步驟S151,CPU110的設(shè)備驅(qū)動(dòng)器151把圖17所示的描述符210設(shè)置(記錄)到RAM111的描述符區(qū)域121上。這時(shí),把關(guān)于被準(zhǔn)備來記錄從網(wǎng)卡112DMA傳送的分組的分組區(qū)域32的地址的信息作為地址51存儲在描述符210中,以及把關(guān)于分組區(qū)域32的大小的信息作為分組大小52存儲在描述符210中。
在步驟S151之后,處理前進(jìn)到步驟S152,從而CPU110的設(shè)備驅(qū)動(dòng)器151向網(wǎng)卡112的描述符控制單元131發(fā)送通知,該通知指示描述符210的設(shè)置完成。
在步驟S161,網(wǎng)卡112的描述符控制單元131接收從CPU110發(fā)送的、指示描述符210設(shè)置完成的通知,并且響應(yīng)于上述通知而請求描述符信息單元132來DMA傳送描述符210。描述符信息單元132把關(guān)于描述符區(qū)域121的地址和描述符210的大小的信息,以及要求DMA傳送描述符210的請求發(fā)送到DMA控制單元133,其中該信息已經(jīng)被存儲在內(nèi)部存儲器(未示出)中。
在步驟S161之后,處理前進(jìn)到步驟S162,以便DMA控制單元133響應(yīng)于從描述符信息單元132發(fā)送的DMA傳送請求而請求存儲器控制器13來DMA傳送描述符210。同時(shí),DMA控制單元133把從描述符信息單元132發(fā)送的地址和大小信息發(fā)送到存儲器控制器13。
在步驟S171,存儲器控制器13接收要求DMA傳送描述符210的請求、以及關(guān)于描述符區(qū)域121的地址和描述符210的大小的信息,該請求和信息是從網(wǎng)卡112的DMA控制單元133發(fā)送的。然后,存儲器控制器13前進(jìn)到步驟S172。
在步驟S172,存儲器控制器13基于從DMA控制單元133發(fā)送的地址和大小信息而從RAM111的描述符區(qū)域121讀取描述符210,然后前進(jìn)到步驟S173。在步驟S173,存儲器控制器13向網(wǎng)卡112的描述符信息單元132發(fā)送在步驟S172讀取的描述符210,從而DMA傳送描述符210。
在步驟S163,網(wǎng)卡112的描述符信息單元132接收從存儲器控制器13DMA傳送的描述符210,把描述符210存儲在內(nèi)部存儲器(未示出)中。此外,描述符信息單元132讀取所存儲的描述符210并且將其發(fā)送到DMA控制單元133。
在步驟S163之后,處理前進(jìn)到步驟S164,從而網(wǎng)卡112的分組接收單元134判定是否經(jīng)由網(wǎng)絡(luò)從不同設(shè)備(未示出)發(fā)送了分組。如果確定沒有發(fā)送分組,則分組接收單元134等待,直到發(fā)送了分組。
如果在步驟S164確定發(fā)送了分組,則分組接收單元134在內(nèi)部存儲器(未示出)中存儲分組,檢測關(guān)于錯(cuò)誤發(fā)生的細(xì)節(jié)的信息,生成指示檢測結(jié)果的錯(cuò)誤信息。然后,分組接收單元134向DMA控制單元133發(fā)送分組和錯(cuò)誤信息。
然后,在步驟S165,DMA控制單元133指定從描述符信息單元132發(fā)送的描述符210的地址211,把從分組接收單元134發(fā)送的分組發(fā)送到存儲器控制器13,從而執(zhí)行了分組的DMA傳送,并且經(jīng)由存儲器控制器13把分組記錄到分組區(qū)域32上。
在步驟S174,存儲器控制器13指定地址211,接收從DMA控制單元133DMA傳送的分組,前進(jìn)到步驟S175。在步驟S175,存儲器控制器13把從DMA控制單元133發(fā)送的分組記錄到地址211處的分組區(qū)域32。
在步驟S166,網(wǎng)卡112的DMA控制單元133執(zhí)行生成處理,從而生成從分組接收單元134發(fā)送的分組的中斷準(zhǔn)備接收信息。后面將參考圖19描述關(guān)于生成處理的細(xì)節(jié)。
在步驟S166之后,處理前進(jìn)到步驟S167,從而DMA控制單元133向存儲器控制器13發(fā)送在步驟S166生成的中斷準(zhǔn)備接收信息。結(jié)果,執(zhí)行中斷準(zhǔn)備接收信息的DMA傳送,并且把中斷準(zhǔn)備接收信息經(jīng)由存儲器控制器13存儲(記錄)在描述符區(qū)域121的描述符210中。
在步驟S176,存儲器控制器13接收從網(wǎng)卡112的DMA控制單元133發(fā)送的中斷準(zhǔn)備接收信息,然后前進(jìn)到步驟S177。在步驟S177,存儲器控制器13把所發(fā)送的中斷準(zhǔn)備接收信息存儲在描述符210中從而更新描述符210。
更具體地,存儲器控制器13存儲(更新)包括在中斷準(zhǔn)備接收信息中的IP-數(shù)據(jù)報(bào)文長度194作為分組大小52,并且存儲錯(cuò)誤信息作為狀態(tài)53。此外,存儲器控制器13存儲TTL198、協(xié)議199、報(bào)頭校驗(yàn)和數(shù)據(jù)的報(bào)頭校驗(yàn)和作為TTL211、協(xié)議212、報(bào)頭校驗(yàn)和213。
在步驟S177之后,處理前進(jìn)到步驟S178,從而存儲器控制器13向網(wǎng)卡112的DMA控制單元133發(fā)送通知,該通知指示分組的DMA傳送完成,并且結(jié)束處理。
在步驟S168,網(wǎng)卡112的DMA控制單元133接收從存儲器控制器13發(fā)送的、指示分組的DMA傳送完成的通知,并且向中斷控制單元135發(fā)送指示DMA傳送完成的通知。
在步驟S168之后,處理前進(jìn)到步驟S169,從而中斷處理單元135響應(yīng)于從DMA控制單元133發(fā)送的、指示分組的DMA傳送完成的通知,而向CPU110發(fā)送關(guān)于中斷的通知,并且結(jié)束處理。
在步驟S153,CPU110的中斷處理器啟動(dòng)單元152接收從網(wǎng)卡112發(fā)送的中斷通知,并且響應(yīng)于該中斷通知而指令CPU110的設(shè)備驅(qū)動(dòng)器151啟動(dòng)中斷處理器151A。在步驟S153之后,處理前進(jìn)到步驟S154,以便設(shè)備驅(qū)動(dòng)器151根據(jù)從中斷處理器啟動(dòng)單元152發(fā)送的指令而啟動(dòng)中斷處理器151A,并且結(jié)束處理。
接下來,將參考圖19描述在圖18所示的步驟S166執(zhí)行的生成處理。
在步驟S191,提取單元172從發(fā)送自分組接收單元134的分組的IPv4報(bào)頭190提取IP-數(shù)據(jù)報(bào)文長度194,并且向生成單元174發(fā)送IP-數(shù)據(jù)報(bào)文長度194。
在步驟S191之后,處理前進(jìn)到步驟S192,從而提取單元172從發(fā)送自分組接收單元134的分組的IPv4報(bào)頭190提取TTL198和協(xié)議199,并且向生成單元174發(fā)送TTL198和協(xié)議199。
在步驟S192之后,處理前進(jìn)到步驟S193,從而計(jì)算單元173基于發(fā)送自分組接收單元134的分組的IPv4報(bào)頭190而計(jì)算報(bào)頭校驗(yàn)和,并且向生成單元174發(fā)送計(jì)算得到的報(bào)頭校驗(yàn)和。
在步驟S193之后,處理前進(jìn)到步驟S194,從而生成單元174生成32位的報(bào)頭校驗(yàn)和數(shù)據(jù)作為中斷準(zhǔn)備接收信息,其中該32位的報(bào)頭校驗(yàn)和數(shù)據(jù)包括從分組接收單元134發(fā)送的錯(cuò)誤信息、從提取單元172發(fā)送的IP-數(shù)據(jù)報(bào)文長度194、TTL198、協(xié)議199以及在步驟S193計(jì)算得到的報(bào)頭校驗(yàn)和。然后,處理前進(jìn)到圖18所示的步驟S167。
接下來,將參考圖20描述中斷處理器151A所執(zhí)行的中斷處理。該中斷處理是例如當(dāng)在圖18所示的步驟S154處啟動(dòng)中斷處理器151A時(shí)被啟動(dòng)的。
在步驟S211,中斷處理器151A從記錄在RAM111的描述符區(qū)域121上的描述符210(圖17中示出)讀取包括地址51、狀態(tài)53、TTL211、協(xié)議212、報(bào)頭校驗(yàn)和213的32位報(bào)頭校驗(yàn)和數(shù)據(jù),然后前進(jìn)到步驟S212。
在步驟S212,中斷處理器151A判斷在步驟S211所讀取的狀態(tài)53是否指示發(fā)生錯(cuò)誤。如果確定狀態(tài)53沒有指示發(fā)生錯(cuò)誤,則處理前進(jìn)到步驟S213。
在步驟S213,中斷處理器151A基于在步驟S211讀取的地址51而讀取被記錄在地址51處的分組區(qū)域32上的分組。然后,中斷處理器151A判斷包括在分組的IPv4報(bào)頭190中包含的TTL198和協(xié)議199、以及報(bào)頭校驗(yàn)和200的32位報(bào)頭校驗(yàn)和數(shù)據(jù)是否與存儲在描述符210中的32位報(bào)頭校驗(yàn)和數(shù)據(jù)相符。
這樣,在步驟S213,中斷處理器151A在與CPU110的字對應(yīng)的32位的報(bào)頭校驗(yàn)和數(shù)據(jù)項(xiàng)之間進(jìn)行比較。因而,可以以比其中在與CPU110的半字對應(yīng)的16位的報(bào)頭校驗(yàn)和數(shù)據(jù)項(xiàng)之間進(jìn)行比較(圖6中所示的步驟S73)的情況高的速度來進(jìn)行該比較。結(jié)果,提高了中斷處理的速度。
如果在步驟S213確定報(bào)頭校驗(yàn)和數(shù)據(jù)項(xiàng)彼此相符,則處理前進(jìn)到步驟S214,從而中斷處理器151A進(jìn)行報(bào)頭處理,以便從所讀取的分組去除Ethernet報(bào)頭等。在步驟S214之后,處理前進(jìn)到步驟S215,以便中斷處理器151A把經(jīng)過報(bào)頭處理的分組移交給上位IP層,然后前進(jìn)到步驟S217。
另一方面,如果在步驟S212確定狀態(tài)53指示發(fā)生錯(cuò)誤,或者如果在步驟S213確定報(bào)頭校驗(yàn)和數(shù)據(jù)項(xiàng)彼此不符,則處理進(jìn)行至步驟S216,從而中斷處理器151A丟棄(刪除)記錄在地址51處的分組區(qū)域32上的分組,然后前進(jìn)到步驟S217。在步驟S217,中斷處理器151A清除在圖18所示的步驟S153發(fā)送的中斷通知,然后結(jié)束處理。
如上所述,網(wǎng)卡112不僅在描述符210中存儲16位的報(bào)頭校驗(yàn)和數(shù)據(jù),而且存儲對應(yīng)于CPU110的字的32位大小的報(bào)頭校驗(yàn)和數(shù)據(jù),其中該32位報(bào)頭校驗(yàn)和數(shù)據(jù)包括TTL211、協(xié)議212、報(bào)頭校驗(yàn)和213。因而,CPU110通過將存儲在描述符210中的32位報(bào)頭校驗(yàn)和數(shù)據(jù)與包括在IPv4報(bào)頭190中的32位報(bào)頭校驗(yàn)和數(shù)據(jù)比較,而可以高速進(jìn)行報(bào)頭校驗(yàn)和之間的比較。
接下來,圖21、22、23、24、25、26示出了中斷處理器151A如何運(yùn)行在Linux上,以及在中斷處理期間如何設(shè)置指示對寫在分組的Ethernet報(bào)頭中的MAC地址的分析結(jié)果的值作為分組類型(skb→pkt_type)(函數(shù)eth_type_trans)。
在這種情況下,圖14所示的DMA控制單元配置如圖21所示。
圖21所示的DMA控制單元220包括存儲控制單元171、提取單元172、中斷處理單元175、分析單元221和生成單元222。根據(jù)本發(fā)明的另一實(shí)施例,生成單元222把其中作為分組類型而設(shè)置(使用)的值在中斷處理期間被使用的格式,確定為準(zhǔn)備用于中斷處理的格式。此外,生成單元222在描述符230中存儲指示MAC地址分析結(jié)果的地址類別作為接收信息。這里,以上述準(zhǔn)備用于中斷處理的格式生成和示出該地址類別。
將不再描述與圖15中所示元件相同的圖21中的元件。與圖15所示相同的元件以與圖15所示相同的標(biāo)號和/或字符表示。
分析單元221分析包括在從分組接收單元134發(fā)送的分組的Ethernet報(bào)頭中的MAC地址,并且把關(guān)于指示分析結(jié)果的地址類別的信息發(fā)送給生成單元222。
生成單元222生成中斷準(zhǔn)備接收信息,該中斷準(zhǔn)備接收信息包括從分組接收單元134發(fā)送的錯(cuò)誤信息、從提取單元172發(fā)送的IP-數(shù)據(jù)報(bào)文長度194、從分析單元221發(fā)送的地址類別。生成單元222通過向存儲器控制器13發(fā)送中斷準(zhǔn)備接收信息而DMA傳送中斷準(zhǔn)備接收信息,從而中斷準(zhǔn)備接收信息被存儲在描述符230中。
接下來,圖22示出了當(dāng)圖14所示的DMA控制單元133如圖21所示的DMA-控制單元220而提供時(shí)記錄在描述符區(qū)域121上的示例描述符。
圖22所示的描述符230存儲地址51、分組大小52、狀態(tài)53、地址類別231和保留232。將不再描述與圖2所示元件相同的圖22中的元件。圖22中的相同元件以與圖2中所示相同的標(biāo)號和/或字符表示。
地址類別232是指示由分析單元221執(zhí)行的分析結(jié)果的地址類別。保留232作為空閑區(qū)域提供。
接下來,將參考圖23描述地址類別231。
當(dāng)?shù)刂奉悇e231的值是零時(shí),如圖23所示,該地址類別231示出了該分析結(jié)果指示所發(fā)送的分組是通過單播發(fā)送到自身設(shè)備的分組。當(dāng)?shù)刂奉悇e231的值是1時(shí),該地址類別231示出了該分析結(jié)果指示所發(fā)送的分組是通過廣播發(fā)送的分組。
當(dāng)?shù)刂奉悇e231的值是2時(shí),分析結(jié)果指示所發(fā)送的分組是通過多播發(fā)送的分組。當(dāng)?shù)刂奉悇e231的值是3時(shí),分析結(jié)果指示所發(fā)送的分組是通過單播發(fā)送到不同計(jì)算機(jī)的分組。
如上所述,示出分析結(jié)果的地址類別231的值是與由運(yùn)行在Linux上的中斷處理器151A所設(shè)置的分組類型(skb→pkt_type)的值(圖7中示出)相同的。
接下來,將參考圖24描述由圖21所示的DMA控制單元220所執(zhí)行的生成處理。
由于對應(yīng)于步驟S231的處理與圖19中所示的對應(yīng)于步驟S191的處理相同,因此將不再對步驟S231進(jìn)行描述。
在步驟S231之后,處理前進(jìn)到步驟S232,從而分析單元221對從分組接收單元134發(fā)送的分組的Ethernet報(bào)頭的MAC地址進(jìn)行分析。稍后將參考圖25描述關(guān)于該分析處理的細(xì)節(jié)。
在步驟S232之后,處理前進(jìn)到步驟S233,從而生成單元222生成中斷準(zhǔn)備接收信息,該中斷準(zhǔn)備接收信息包括從分組接收單元134發(fā)送的錯(cuò)誤信息、從提取單元172發(fā)送的IP-數(shù)據(jù)報(bào)文長度194、從分析單元221發(fā)送的地址類別。然后,處理前進(jìn)到圖18中所示的步驟S167。
接下來,將參考圖25描述圖24中所示的步驟S232處所執(zhí)行的分析處理。
在步驟S251,分析單元221判斷寫在從分組接收單元134發(fā)送的分組的Ethernet報(bào)頭中的MAC地址的最低有效位的值是否為1。即,分析單元221判斷所發(fā)送的分組是否是通過廣播發(fā)送的分組或通過多播發(fā)送的分組。
在步驟S251,如果確定MAC地址的最低有效位的值不是1,即,如果確定所發(fā)送的分組是通過單播發(fā)送的分組,則處理前進(jìn)到步驟S252,以便分析單元221判斷MAC地址是否為自身設(shè)備的地址(給予網(wǎng)卡112的MAC地址)。
在步驟S252,如果確定MAC地址不是自身設(shè)備的地址,也就是說,如果所發(fā)送的分組是通過單播發(fā)送到不同計(jì)算機(jī)的分組,則處理前進(jìn)到步驟S253,以便分析單元221把分組類型的值設(shè)置為3,然后處理前進(jìn)到圖24所示的步驟S233。
另一方面,如果在步驟S252確定MAC地址是自身設(shè)備的地址,也就是說,如果所發(fā)送的分組是通過單播發(fā)送到自身設(shè)備的分組,則處理前進(jìn)到步驟S254,以便分析單元221把分組類型的值設(shè)置為0,然后處理前進(jìn)到圖24所示的步驟S233。
此外,如果確定MAC地址的最低有效位是1,則處理前進(jìn)到步驟S255,以便分析單元221判斷MAC地址是否是廣播地址,也就是說,是否MAC地址所有位的每一位是1。
如果在步驟S255確定MAC地址不是廣播地址,則處理前進(jìn)到步驟S256,以便分析單元221把分組類型的值設(shè)置為2,然后處理前進(jìn)到圖24所示的步驟S233。
另一方面,如果在步驟S255確定MAC地址是廣播地址,則處理前進(jìn)到步驟S257,以便分析單元221把分組類型的值設(shè)置為1,然后處理前進(jìn)到圖24所示的步驟S233。
接下來,將參考圖26描述由運(yùn)行在Linux上的中斷處理器151A執(zhí)行的中斷處理。該中斷處理是例如當(dāng)在圖18所示的步驟S154處啟動(dòng)中斷處理器時(shí)被啟動(dòng)的。
在步驟S271,中斷處理器151A從記錄在RAM111的描述符區(qū)域121上的描述符230(圖22中示出)讀取地址51、狀態(tài)53、地址類別231,然后前進(jìn)到步驟S272。
在步驟S272,中斷處理器151A判斷在步驟S271所讀取的狀態(tài)53是否指示發(fā)生錯(cuò)誤。如果確定狀態(tài)53沒有指示發(fā)生錯(cuò)誤,則處理前進(jìn)到步驟S273。
在步驟S273,中斷處理器151A把在步驟S271讀取的地址類別231確定為分組類型。
由于如上所述指示每個(gè)分析結(jié)果的地址類別231的值與指示每個(gè)分析結(jié)果的分組類型的值相同,所以中斷處理器151A可以把存儲在描述符230中的地址類別231原樣設(shè)置為分組類型。隨后,變得可以以比其中執(zhí)行公知的中斷處理的情況高的速度來執(zhí)行中斷處理,從而執(zhí)行圖12所示的設(shè)置處理。
由于對應(yīng)于步驟S274、S275、S276、S277的處理與圖20中所示的對應(yīng)于步驟S214、S215、S216、S217的處理相同,所以將不再提供對應(yīng)于步驟S274-S277的處理的描述。
這樣,網(wǎng)卡112把在由CPU110執(zhí)行的中斷處理期間所使用的分類類型值用作地址類別231的值,并且將該分組類型值存儲在描述符230中。因而,CPU110可以把存儲在描述符210中的地址類別231原樣設(shè)置為分組類型。結(jié)果,CPU110可以高速執(zhí)行設(shè)置分組類型的處理。
根據(jù)上述實(shí)施例,指示每個(gè)分析結(jié)果的地址類別231的值與在由在Linux上運(yùn)行的中斷處理器151A所執(zhí)行的中斷處理期間設(shè)置的分組類型(skb→pkt_type)的值(圖7中示出)相同。但是,地址類別231的值可以與由運(yùn)行在不同于Linux的操作系統(tǒng)(OS)上的中斷處理器所執(zhí)行的中斷處理期間設(shè)置的MAC地址的分析結(jié)果的值相同。
此外,可以在制造時(shí)預(yù)先設(shè)置示出每個(gè)分析結(jié)果的地址類別231的值。此外,可以通過初始化網(wǎng)卡112來設(shè)置地址類別231的值,以便適應(yīng)于預(yù)定OS。
這樣,網(wǎng)卡112以準(zhǔn)備用于由CPU110執(zhí)行的中斷處理的格式來生成接收信息,并且把所生成的接收信息,即中斷準(zhǔn)備接收信息存儲在描述符區(qū)域121的描述符210和/或描述符230中。隨后,CPU110可以以提升的速度執(zhí)行處理。
此外,在本說明書中,描述存儲在程序記錄介質(zhì)中的程序的步驟不僅包括根據(jù)所寫順序以時(shí)間順序執(zhí)行的處理,而且包括不必按時(shí)間順序執(zhí)行、而是可以并行和/或分別執(zhí)行的處理。
本領(lǐng)域技術(shù)人員應(yīng)該理解,取決于設(shè)計(jì)需求和其它因素,可能出現(xiàn)各種修改、組合、子組合、變更,它們都落在所附的權(quán)利要求及其等同的范圍內(nèi)。
相關(guān)申請的交叉參照本發(fā)明包含2005年12月19日在日本專利局提交的日本專利申請JP2005-364268相關(guān)的主題,其全部內(nèi)容通過引用合并于此。
權(quán)利要求
1.一種信息處理系統(tǒng),包括被配置來接收數(shù)據(jù)的接收設(shè)備和被配置來通過使用該數(shù)據(jù)來執(zhí)行數(shù)據(jù)處理的數(shù)據(jù)處理設(shè)備,其中,該接收設(shè)備包括接收裝置,被配置來接收該數(shù)據(jù);以及存儲控制裝置,被配置來基于所接收的數(shù)據(jù)而生成格式數(shù)據(jù),并且將該格式數(shù)據(jù)和該數(shù)據(jù)存儲在存儲裝置中,該格式數(shù)據(jù)是以準(zhǔn)備用于該數(shù)據(jù)處理的格式而生成的數(shù)據(jù),以及其中,該數(shù)據(jù)處理設(shè)備包括處理裝置,被配置來通過使用存儲在該存儲裝置中的該數(shù)據(jù)和該格式數(shù)據(jù)而執(zhí)行該數(shù)據(jù)處理。
2.一種接收設(shè)備,使得存儲裝置存儲由數(shù)據(jù)處理設(shè)備使用的數(shù)據(jù),以便執(zhí)行數(shù)據(jù)處理,該接收設(shè)備包括接收裝置,被配置來接收該數(shù)據(jù);以及存儲控制裝置,被配置來基于所接收的數(shù)據(jù)而生成格式數(shù)據(jù),并且將該格式數(shù)據(jù)和該數(shù)據(jù)存儲在該存儲裝置中,其中該格式數(shù)據(jù)是以準(zhǔn)備用于該數(shù)據(jù)處理的格式而生成的數(shù)據(jù)。
3.根據(jù)權(quán)利要求1的接收設(shè)備,其中,所述準(zhǔn)備用于該數(shù)據(jù)處理的格式是當(dāng)執(zhí)行該數(shù)據(jù)處理時(shí)使用的處理單位的大小。
4.根據(jù)權(quán)利要求1的接收設(shè)備,其中,所述準(zhǔn)備用于該數(shù)據(jù)處理的格式是其中使用用于該數(shù)據(jù)處理的值的格式。
5.一種程序,該程序使得計(jì)算機(jī)執(zhí)行處理使得存儲裝置存儲由數(shù)據(jù)處理設(shè)備使用的數(shù)據(jù),以便執(zhí)行數(shù)據(jù)處理,該程序包括下述步驟接收該數(shù)據(jù);以及基于所接收的數(shù)據(jù)生成格式數(shù)據(jù),并且將該格式數(shù)據(jù)和該數(shù)據(jù)存儲在該存儲裝置中,其中該格式數(shù)據(jù)是以準(zhǔn)備用于該數(shù)據(jù)處理的格式而生成的數(shù)據(jù)。
6.一種信息處理系統(tǒng),包括被配置來接收數(shù)據(jù)的接收設(shè)備和被配置來通過使用該數(shù)據(jù)而執(zhí)行數(shù)據(jù)處理的數(shù)據(jù)處理設(shè)備,其中,該接收設(shè)備包括接收單元,被配置來接收該數(shù)據(jù);以及存儲控制單元,被配置來基于所接收的數(shù)據(jù)而生成格式數(shù)據(jù),并且將該格式數(shù)據(jù)和該數(shù)據(jù)存儲在存儲單元中,其中該格式數(shù)據(jù)是以準(zhǔn)備用于該數(shù)據(jù)處理的格式而生成的數(shù)據(jù),以及其中,該數(shù)據(jù)處理設(shè)備包括處理單元,被配置來通過使用存儲在該存儲單元中的該數(shù)據(jù)和該格式數(shù)據(jù)而執(zhí)行該數(shù)據(jù)處理。
7.一種接收設(shè)備,使得存儲單元存儲由數(shù)據(jù)處理設(shè)備使用的數(shù)據(jù),以便執(zhí)行數(shù)據(jù)處理,該接收設(shè)備包括接收單元,被配置來接收該數(shù)據(jù);以及存儲控制單元,被配置來基于所接收的數(shù)據(jù)來生成格式數(shù)據(jù),并且將該格式數(shù)據(jù)和該數(shù)據(jù)存儲在該存儲單元中,該格式數(shù)據(jù)是以準(zhǔn)備用于該數(shù)據(jù)處理的格式而生成的數(shù)據(jù)。
全文摘要
一種信息處理系統(tǒng),包括被配置來接收數(shù)據(jù)的接收設(shè)備和被配置來通過使用該數(shù)據(jù)執(zhí)行數(shù)據(jù)處理的數(shù)據(jù)處理設(shè)備。該接收設(shè)備包括接收單元,被配置來接收該數(shù)據(jù);以及存儲控制單元,被配置來基于所接收的數(shù)據(jù)生成格式數(shù)據(jù),并且將該格式數(shù)據(jù)和該數(shù)據(jù)存儲在存儲單元中,該格式數(shù)據(jù)是以準(zhǔn)備用于該數(shù)據(jù)處理的格式而生成的數(shù)據(jù)。該數(shù)據(jù)處理設(shè)備包括處理單元,被配置來通過使用存儲在該存儲單元中的數(shù)據(jù)和格式數(shù)據(jù)而執(zhí)行該數(shù)據(jù)處理。
文檔編號H04L12/56GK1987838SQ20061017173
公開日2007年6月27日 申請日期2006年12月19日 優(yōu)先權(quán)日2005年12月19日
發(fā)明者久曾神宏 申請人:索尼株式會(huì)社