欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

數(shù)據(jù)接收設(shè)備和數(shù)據(jù)接收方法

文檔序號:7706768閱讀:240來源:國知局
專利名稱:數(shù)據(jù)接收設(shè)備和數(shù)據(jù)接收方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種數(shù)據(jù)接收設(shè)備和一種使用預(yù)定協(xié)議接收從網(wǎng)絡(luò)發(fā)送的數(shù)據(jù) 的接收方法。
背景技術(shù)
TCP/IP是用于互聯(lián)網(wǎng)通信的主要協(xié)議之一。例如,傳統(tǒng)的TCP/IP主要是在 個人計算機(jī)或者嵌入式設(shè)備中通過軟件處理和CPU執(zhí)行而實(shí)現(xiàn)的。在這種情況 下,使用網(wǎng)絡(luò)接口卡(NIC)接收來自網(wǎng)絡(luò)的數(shù)據(jù),并且接收到的幀被NIC本身 或者CPU —次寫入到存儲器的堆棧緩沖區(qū)中,然后由CPU的協(xié)議棧軟件進(jìn)行協(xié) 議處理。CPU通常除執(zhí)行協(xié)議處理外還執(zhí)行應(yīng)用程序處理,并且在執(zhí)行完協(xié)議 處理后數(shù)據(jù)被復(fù)制到由應(yīng)用程序指定的應(yīng)用程序緩沖區(qū)。該存儲的數(shù)據(jù)由應(yīng)用程 序等讀出。這種數(shù)據(jù)流如圖31所示。但是,在這種模式下,接收的數(shù)據(jù)在從NIC移動到應(yīng)用程序緩沖區(qū)的同時 被一次緩沖,這意味著數(shù)據(jù)在存儲器中總共進(jìn)行了兩次循環(huán)。為解決這個問題, 美國專利公開號2004-0078462公開了一種通過在NIC中執(zhí)行部分協(xié)議處理而直 接將來自NIC的數(shù)據(jù)寫入到應(yīng)用程序緩沖區(qū)中的模式。在這種模式下的數(shù)據(jù)流 如圖32所示。在這種布置中,數(shù)據(jù)流僅在存儲器中循環(huán)一次,因此可以避免性 能方面的開銷和與數(shù)據(jù)復(fù)制有關(guān)的功耗。但是,當(dāng)使用美國專利公開號2004-0078462的技術(shù)時將會遇到以下問題 (1)應(yīng)用問題典型的應(yīng)用程序經(jīng)常是使用套接字API而運(yùn)行。例如,這種情況下經(jīng)常使用 的方法是在select()函數(shù)中等待數(shù)據(jù)的接收,并且根據(jù)接收端的確認(rèn)調(diào)用recv() 函數(shù)。應(yīng)用程序在應(yīng)用程序緩沖區(qū)中指定地址,并且協(xié)議處理單元在該指定的地 址寫入數(shù)據(jù),但是在這種方法中,應(yīng)用程序通過recv()函數(shù)通知該地址。因此,當(dāng)處理這樣的應(yīng)用程序時,因?yàn)樾枰邮諞]有指定的應(yīng)用程序緩沖區(qū)的數(shù)據(jù),也 就是說不存在應(yīng)用程序緩沖區(qū),所以數(shù)據(jù)必須在傳輸中被一次緩沖。(2) 性能問題因?yàn)橹钡皆跀?shù)據(jù)接收后recv()調(diào)用返回并且下一個recv()調(diào)用被喚醒時才存 在應(yīng)用程序緩沖區(qū),所以即使在"recv()"中等待接收,數(shù)據(jù)還是不能被接收, 這將如圖33所示使數(shù)據(jù)接收中斷并且降低性能。(3) 窗口大小通知問題美國專利公開號2004-0078462說明了一種將接收窗口的大小作為應(yīng)用程序 緩沖區(qū)的大小通知對方的模式,但是實(shí)際上如下所述必須通知更大的容量。當(dāng)使用窗口縮放選項(xiàng)時,通知的窗口大小必須指定為是2n的倍數(shù)(n〉=l)。 因此,必須通知比應(yīng)用程序緩沖區(qū)更大的容量。由于當(dāng)接收窗口大小已經(jīng)降低到最大分段大小(MSS)以下時,發(fā)送端根據(jù) TCP的糊涂窗口綜合癥(Silly Window Syndrome)避免算法停止數(shù)據(jù)發(fā)送,所以 需要通知窗口大小至少要大于MSS。當(dāng)通知了更大的窗口大小時,對方可以發(fā)送比應(yīng)用程序緩沖區(qū)容量大的數(shù) 據(jù)。如果溢出應(yīng)用程序緩沖區(qū)的數(shù)據(jù)沒有被緩沖,將需要對方在下一個應(yīng)用程序 緩沖區(qū)被指定時重新發(fā)送數(shù)據(jù)。在TCP的發(fā)送端,重傳減小了擁塞窗口大小并 且顯著地降低了吞吐量。因此,為防止這種重傳,溢出的數(shù)據(jù)必須以某種方式被 緩沖。如上所述,美國專利公開號2004-0078462至少引起問題(1)到(3)中的 一個問題。為了避免這些問題就需要數(shù)據(jù)緩沖,但是美國專利公開號 2004-0078462在其中沒有公開該方法。也就是說,當(dāng)應(yīng)用上述第一個傳統(tǒng)的基于軟件的模式時,執(zhí)行緩沖并且不會 引起問題(1)到(3)。但是,將始終產(chǎn)生與復(fù)制有關(guān)的開銷。而當(dāng)使用美國專 利公開號2004-0078462的技術(shù)避免這種與復(fù)制有關(guān)的開銷時,將遇到問題(1) 到(3)。發(fā)明內(nèi)容根據(jù)本發(fā)明的一個方面,提供一種數(shù)據(jù)接收設(shè)備,包括配置為通過網(wǎng)絡(luò)接收數(shù)據(jù)序列的接收單元,該數(shù)據(jù)序列是一系列數(shù)據(jù),其中 每個數(shù)據(jù)都與一個序號相關(guān)聯(lián);配置為存儲數(shù)據(jù)的數(shù)據(jù)存儲器;第一指定單元,配置為在數(shù)據(jù)存儲器中指定臨時緩沖區(qū)用于臨時存儲數(shù)據(jù)序 列中包含的數(shù)據(jù);第二指定單元,配置為在數(shù)據(jù)存儲器中指定目的緩沖區(qū)用于存儲數(shù)據(jù)序列中 包含的數(shù)據(jù);第一識別單元,配置為當(dāng)目的緩沖區(qū)被第二指定單元指定時,依靠指定的目 的緩沖區(qū)大小識別目的號范圍,以便該目的號范圍跟隨(follow)上一次被識別 的目的號范圍,識別的目的號范圍中包含的每個序號在指定目的緩沖區(qū)中被分配 一個位置,該位置對應(yīng)于識別的目的號范圍中的序號的相對位置;數(shù)據(jù)寫入單元,配置為當(dāng)數(shù)據(jù)序列已經(jīng)被接收單元接收到時,在對應(yīng)于該數(shù) 據(jù)的序號的目的緩沖區(qū)中被分配的位置中寫入屬于已經(jīng)被第一識別單元識別的 一個目的號范圍的數(shù)據(jù),并且在臨時緩沖區(qū)中寫入不屬于任何一個目的號范圍的 數(shù)據(jù);和數(shù)據(jù)復(fù)制單元,配置為當(dāng)目的緩沖區(qū)被第二指定單元指定時,從臨時緩沖區(qū) 中讀出數(shù)據(jù)并且在對應(yīng)于該讀出的數(shù)據(jù)的序號的目的緩沖區(qū)中分配的位置寫入 該讀出的數(shù)據(jù),該數(shù)據(jù)具有屬于對應(yīng)于目的緩沖區(qū)的規(guī)范識別的目的號范圍的序 號。


圖1顯示根據(jù)第一實(shí)施例的數(shù)據(jù)接收設(shè)備的結(jié)構(gòu);圖2顯示根據(jù)第二實(shí)施例的數(shù)據(jù)接收設(shè)備的結(jié)構(gòu);圖3顯示根據(jù)第二實(shí)施例的數(shù)據(jù)接收設(shè)備的另一種結(jié)構(gòu);圖4顯示根據(jù)第四實(shí)施例的數(shù)據(jù)接收設(shè)備的結(jié)構(gòu);圖5是說明被第一實(shí)施例的數(shù)據(jù)接收設(shè)備執(zhí)行的實(shí)例處理流程的流程圖; 圖6是說明被第二實(shí)施例的數(shù)據(jù)接收設(shè)備執(zhí)行的實(shí)例操作流程的流程圖; 圖7是說明被第三實(shí)施例的數(shù)據(jù)接收設(shè)備執(zhí)行的實(shí)例操作流程的流程圖; 圖8是說明被第四實(shí)施例的數(shù)據(jù)接收設(shè)備執(zhí)行的實(shí)例處理流程的流程圖;圖9說明根據(jù)第二實(shí)施例的數(shù)據(jù)接收設(shè)備的操作;圖IO說明根據(jù)第二實(shí)施例的數(shù)據(jù)接收設(shè)備的操作;圖11說明根據(jù)第二實(shí)施例的數(shù)據(jù)接收設(shè)備的操作;圖12說明根據(jù)第二實(shí)施例的數(shù)據(jù)接收設(shè)備的操作;圖13說明根據(jù)第二實(shí)施例的數(shù)據(jù)接收設(shè)備的操作;圖14說明根據(jù)第二實(shí)施例的數(shù)據(jù)接收設(shè)備的操作;圖15說明根據(jù)第三實(shí)施例的數(shù)據(jù)接收設(shè)備的操作;圖16圖解用于分配臨時緩沖區(qū)的方案(第一方法);圖17圖解用于分配臨時緩沖區(qū)的方案(該第一方法);圖18圖解用于分配臨時緩沖區(qū)的方案(該第一方法);圖19圖解用于分配臨時緩沖區(qū)的方案(第二方法);圖20說明根據(jù)第四實(shí)施例的數(shù)據(jù)接收設(shè)備的操作;圖21說明根據(jù)第四實(shí)施例的數(shù)據(jù)接收設(shè)備的操作;圖22說明根據(jù)第四實(shí)施例的數(shù)據(jù)接收設(shè)備的操作;圖23說明根據(jù)第四實(shí)施例的數(shù)據(jù)接收設(shè)備的操作;圖24顯示根據(jù)第四實(shí)施例的數(shù)據(jù)接收設(shè)備的另一種結(jié)構(gòu);圖25是說明圖24的數(shù)據(jù)接收設(shè)備操作流程的流程圖; 圖26說明圖24的數(shù)據(jù)接收設(shè)備的操作; 圖27顯示數(shù)據(jù)接收設(shè)備的執(zhí)行的具體實(shí)例;圖28顯示主機(jī)CPU、 NIC、硬件和存儲器的示范的配置; 圖29顯示主機(jī)CPU、 NIC、硬件和存儲器的另一種示范的配置; 圖30顯示主機(jī)CPU、 MC、硬件和存儲器的又一種示范的配置; 圖31說明傳統(tǒng)的數(shù)據(jù)接收設(shè)備的操作;圖32說明傳統(tǒng)的數(shù)據(jù)接收設(shè)備的操作;和圖33說明傳統(tǒng)的數(shù)據(jù)接收設(shè)備的操作。
具體實(shí)施方式
(第一實(shí)施例)圖1顯示根據(jù)本發(fā)明的第一實(shí)施例的數(shù)據(jù)接收設(shè)備的結(jié)構(gòu)。該數(shù)據(jù)接收設(shè)備包括網(wǎng)絡(luò)接口單元ll,數(shù)據(jù)存儲器12,幀分析單元13,數(shù) 據(jù)寫入單元14,數(shù)據(jù)復(fù)制單元15,臨時緩沖區(qū)指定單元(第一指定單元)16, 目的緩沖區(qū)指定單元(第二指定單元)17和目的序號范圍識別單元(第一識別 單元)18。
網(wǎng)絡(luò)接口單元11從網(wǎng)絡(luò)接收幀。該網(wǎng)絡(luò)可以是諸如因特網(wǎng)的執(zhí)行TCP/IP通 信的網(wǎng)絡(luò),該網(wǎng)絡(luò)接口單元11為以太網(wǎng)(Ethernet)和/或無線局域網(wǎng)(LAN) 接收幀。
數(shù)據(jù)存儲器12具有用于存儲數(shù)據(jù)的數(shù)據(jù)區(qū)域。
幀分析單元13分析接收幀的以太網(wǎng)、IP和TCP報頭并且提取排除了報頭的 TCP數(shù)據(jù)部分(數(shù)據(jù)序列)。序號與TCP數(shù)據(jù)(數(shù)據(jù)序列)的每個字節(jié)相關(guān)聯(lián)。
臨時緩沖區(qū)指定單元16在數(shù)據(jù)存儲器12中指定一臨時緩沖區(qū)用于臨時存儲 由幀分析單元13提取的數(shù)據(jù)(TCP數(shù)據(jù))。
例如,目的緩沖區(qū)指定單元17可以是軟件應(yīng)用程序(能夠處理TCP的應(yīng)用 程序),并且多次在數(shù)據(jù)存儲器12中指定目的緩沖區(qū),被幀分析單元13提取的 TCP數(shù)據(jù)應(yīng)寫入目的緩沖區(qū)中。目的緩沖區(qū)例如由該區(qū)域的起始和結(jié)束地址或者 區(qū)域的起始地址及長度表示。例如,在套接字API中,目的緩沖區(qū)是通過recv() 調(diào)用等尋址的。例如,每當(dāng)數(shù)據(jù)寫入上一次指定的目的緩沖區(qū)完成時,目的緩沖 區(qū)被指定。
當(dāng)目的緩沖區(qū)已經(jīng)被目的緩沖區(qū)指定單元17指定時,目的序號范圍識別單 元18識別對應(yīng)于指定的目的緩沖區(qū)的序號范圍(即,目的序號范圍或者目的號 范圍),以便該范圍跟隨上一次被指定的序號范圍。在序號范圍中識別的每個序 號在指定的目的緩沖區(qū)中被分配一個位置(即地址或者區(qū)域部分),該位置相對 于目的序號范圍(目的號范圍)中的那個號碼的相對位置具有一偏移量。用于偏 移量的引用例如可以是指定目的緩沖區(qū)的起始地址。
數(shù)據(jù)寫入單元14或者在臨時緩沖區(qū)或者在目的緩沖區(qū)中寫入通過由幀分析
單元13分析而提取的TCP數(shù)據(jù)。具體地,關(guān)于提取的數(shù)據(jù)(數(shù)據(jù)序列),數(shù)據(jù) 寫入單元14在對應(yīng)于該數(shù)據(jù)序號的目的緩沖區(qū)中的位置(地址)寫入屬于識別 的目的序號范圍的數(shù)據(jù),并且在臨時緩沖區(qū)中寫入不屬于識別的目的序號范圍的 數(shù)據(jù)。數(shù)據(jù)復(fù)制單元15將寫入臨時緩沖區(qū)的數(shù)據(jù)復(fù)制到目的緩沖區(qū)。更具體地, 當(dāng)目的緩沖區(qū)被目的緩沖區(qū)指定單元17指定時,數(shù)據(jù)復(fù)制單元15從臨時緩沖區(qū) 存儲的數(shù)據(jù)中讀出屬于由目的序號范圍識別單元18重新識別的序號范圍的所有
數(shù)據(jù),并且在對應(yīng)于那個數(shù)據(jù)的序號的目的緩沖區(qū)的位置中(區(qū)域部分)寫入該 讀出的數(shù)據(jù)。
下文將使用具體的例子詳細(xì)說明圖1的數(shù)據(jù)接收設(shè)備的操作。
圖5是說明圖1的數(shù)據(jù)接收設(shè)備執(zhí)行的示范的處理流程的流程圖。
首先,確定網(wǎng)絡(luò)接口單元11是否已經(jīng)從網(wǎng)絡(luò)接收到幀(例如,以太網(wǎng)幀)
(S11)。如果已經(jīng)接收到幀(Sll是),幀分析單元13分析該幀的以太網(wǎng)、IP 和TCP報頭(S12)。根據(jù)分析的結(jié)果,數(shù)據(jù)寫入單元14在數(shù)據(jù)存儲器12的臨 時緩沖區(qū)或者目的緩沖區(qū)中寫入除去報頭的TCP數(shù)據(jù)部分(S13到S16)。下文 將對步驟S13到S16進(jìn)行更詳細(xì)的說明。
如上所述,序號與TCP數(shù)據(jù)的每個字節(jié)相關(guān)聯(lián)。初始數(shù)據(jù)的序號可以被識 別為跟隨在連接建立時從對方發(fā)送過來的同步(SYN)信號段的序號后的號碼。 例如,當(dāng)初始同步信號段的序號是0時,下一個將被發(fā)送的第一數(shù)據(jù)的序號是1。 數(shù)據(jù)接收設(shè)備通過接收具有序號是0的同步信號段而知道初始數(shù)據(jù)的序號將是 1,并因此當(dāng)隨后收到的幀具有序號1時識別出初始數(shù)據(jù)已經(jīng)被接收到。下次將 要接收的數(shù)據(jù)的序號是初始幀的開始數(shù)據(jù)的序號與初始幀的數(shù)據(jù)長度的總和。例 如,當(dāng)數(shù)據(jù)長度是1460時,下個數(shù)據(jù)的序號就是1461。由于IP通信的數(shù)據(jù)包 在傳輸過程中可能改變了其序列才到達(dá)對方,但是由序號指示的數(shù)據(jù)的交換能夠 使接收端檢測到序列的改變和/或數(shù)據(jù)的丟失,并且因此以正確順序重排該數(shù)據(jù) 包或者請求發(fā)送端重傳。
當(dāng)目的緩沖區(qū)指定單元17已經(jīng)指定一個目的緩沖區(qū)時,目的序號范圍識別 單元18從上述初始序號加上區(qū)域的長度識別范圍,作為目的序號范圍。換句或 說,作為起始于初始數(shù)據(jù)并且具有區(qū)域的長度的數(shù)據(jù)將被寫入目的緩沖區(qū),區(qū)域 的序號范圍被識別。例如,當(dāng)目的緩沖區(qū)是從0x80000000到0x80000fff時,它 的長度是4096 (0x1000),所以目的序號范圍是從1到4096。
當(dāng)數(shù)據(jù)被接收時如果目的緩沖區(qū)沒有被指定(S13否),數(shù)據(jù)寫入單元14 首先在臨時緩沖區(qū)中存儲所有的數(shù)據(jù)。例如,當(dāng)接收到的數(shù)據(jù)的數(shù)據(jù)長度是1460(0x05b4)并且臨時緩沖區(qū)被指定為從0x70000000到0x7000ffff時,則該數(shù)據(jù) 被存儲在從0x70000000到0x700005b3。
如果目的緩沖區(qū)被指定(S13是),假設(shè)它的地址例如是如上所述的從 0x80000000到0x80000fff,目的序號范圍是從1到4096并且接收的數(shù)據(jù)的序號 從1到1460都屬于該范圍,因此數(shù)據(jù)全部被寫入目的緩沖區(qū)中(S15是,和S16)。 更確切地說,數(shù)據(jù)被存儲在0x80000000到0x800005b3。
但是,例如如果目的緩沖區(qū)的地址是從0x80000000到0x800000ff,則目的 緩沖區(qū)的長度是256 (0x100)并且目的序號范圍是從1到256。因?yàn)榻邮盏降臄?shù) 據(jù)具有從1到1460的序號,具有序號從1到256的數(shù)據(jù)即第一個256字節(jié)被寫 入到目的緩沖區(qū)0x80000000到0x800000ff并且剩下的1204 (0x04b4)字節(jié)被寫 入到臨時緩沖區(qū)(S15是,和S16)。在這種情況下,例如具有序號從257到1460 的數(shù)據(jù)被寫入0x70000000到0x700004b3。
然后,如果在步驟S11確定沒有已經(jīng)接收到的幀(Sll否),它將確定目的 緩沖區(qū)是否已經(jīng)被指定(S17)。如果目的緩沖區(qū)沒有被指定(S17否),則流 程返回到步驟Sll。如果目的緩沖區(qū)已經(jīng)被指定(S17是),它將確定臨時緩沖 區(qū)是否包含其序號屬于被重新識別的目的序號范圍的數(shù)據(jù)(S18)。如果不存在 這樣的數(shù)據(jù),則流程返回到步驟S11而不執(zhí)行任何處理。
另一方面,如果數(shù)據(jù)已經(jīng)被接收了并且這種數(shù)據(jù)被存儲在臨時緩沖區(qū),數(shù)據(jù) 復(fù)制單元15從臨時緩沖區(qū)存儲的數(shù)據(jù)中讀出屬于重新識別的目的序號范圍的數(shù) 據(jù),并在目的緩沖區(qū)中寫入該讀出的數(shù)據(jù)(S19)。
例如,當(dāng)具有序號從1到4096的數(shù)據(jù)在臨時緩沖區(qū)的0x70000000到 0x70000fff被緩沖時,如果目的緩沖區(qū)被重新指定為0x80000000到0x800000ff, 則緩沖的長度是256 (0x100),那么數(shù)據(jù)復(fù)制單元15從臨時緩沖區(qū)中的數(shù)據(jù)提 取具有序號從1到256的數(shù)據(jù)并且將其復(fù)制到目的緩沖區(qū)。當(dāng)目的緩沖區(qū)被指定 為0x80000000到0x8000ffff時,則它的長度是65536 (0x10000)并且目的序號 范圍是從l到65536。因此,臨時緩沖區(qū)中的數(shù)據(jù)的序號從1到4096全部屬于 該范圍并且所有的數(shù)據(jù)被復(fù)制到目的緩沖區(qū)的0x80000000到0x80000fff。稍后 從網(wǎng)絡(luò)新接收的具有序號從4097到65536的數(shù)據(jù)將被直接寫入目的緩沖區(qū)的從 0x80001000到0x8000ffff的剩余區(qū)域中。在IP通信中,發(fā)送的數(shù)據(jù)可能沒有以正確的順序到達(dá)接收端。在這種情況 下,接收到的數(shù)據(jù)不是以接收的順序而是以對應(yīng)于其序號的偏移量被寫入到目的 緩沖區(qū)中,以便能以序號的順序被寫入。如上所述當(dāng)目的緩沖區(qū)被指定為 0x80001000到0x8000ffff并且它的序號范圍是從4097到65536時,起始于序號 4097的數(shù)據(jù)幀就是下一個預(yù)期被接收的,但是實(shí)際接收到的例如可能是具有序 號從5557到7016的數(shù)據(jù)幀。在這種情況下,不是被寫入始于0x80001000的區(qū) 域而使被寫入始于0x80001000+(5557_4097)=0x800015b4的區(qū)域。當(dāng)數(shù)據(jù)的長 度是1460 (0x05b4)時,數(shù)據(jù)被寫入0x800015b4到0x80001b67。如果晚到達(dá)的 具有序號4097到5556的數(shù)據(jù)在其后被接收,則該數(shù)據(jù)被寫入x80001000到 0x800015b3。因此,具有序號從4097到7106的數(shù)據(jù)按順序被正確地寫入 x80001000到0x80001b67。在這種方式下,實(shí)現(xiàn)了數(shù)據(jù)的重排。處理幀丟失的重 傳與處理延時到達(dá)的方式相類似。因?yàn)橄嗤臄?shù)據(jù)只是簡單地被重寫在相同的位 置所以發(fā)送重復(fù)的幀也不會引起問題。
在具有序號從1到65536的數(shù)據(jù)被寫入目的緩沖區(qū)的0x80000000到 0x8000ffff后,如果目的緩沖區(qū)下一次被指定為0x90000000到0x90000fff,目的 序號范圍被識別以便使其跟隨前面的范圍。也就是說,因?yàn)殚L度是4096 (0x1000) 并且65537+4096-1=69632,所以目的序號范圍是從65537到69632。后面的操作 是相似的。
在TCP中,在數(shù)據(jù)接收時執(zhí)行確認(rèn)。正如對寫入目的存儲區(qū)的接收的數(shù)據(jù) 執(zhí)行確認(rèn)一樣,對寫入臨時緩沖區(qū)的接收的數(shù)據(jù)也執(zhí)行確認(rèn)。但是,由于臨時緩 沖區(qū)也是有限的,可能出現(xiàn)臨時緩沖區(qū)耗盡并且不能接收數(shù)據(jù)的情況。在這種情 況下,例如數(shù)據(jù)可能被簡單地丟棄并且不執(zhí)行確認(rèn)(即等待重傳)。但是在TCP 中,接收緩沖區(qū)的大小能作為窗口大小被指示給對方。因此,通過通知對方目的 緩沖區(qū)和臨時緩沖區(qū)大小的總和,當(dāng)臨時緩沖區(qū)溢出時,可以阻止數(shù)據(jù)被發(fā)送到 該點(diǎn)。更具體地,當(dāng)已經(jīng)指定目的緩沖區(qū)時,將指定的目的緩沖區(qū)的大小與臨時 緩沖區(qū)中可用區(qū)域的大小的總和(或者,在指定目的緩沖區(qū)并執(zhí)行復(fù)制后目的緩 沖區(qū)的可用區(qū)域大小與臨時緩沖區(qū)的大小的總和)作為接收緩沖區(qū)的大小指示給 對方。根據(jù)本實(shí)施例的數(shù)據(jù)接收設(shè)備可以具有接收緩沖區(qū)大小通知器(緩沖區(qū)大 小通知器)用于通知該總的大小。通過這種操作,可以執(zhí)行所需的對接收到的數(shù)據(jù)的臨時緩沖并且當(dāng)不需要緩 沖時接收到的數(shù)據(jù)可以被直接寫入目的緩沖區(qū)。換句話說,通過具有臨時緩沖區(qū) 能夠解決相關(guān)技術(shù)中的上述問題(1)到(3),此外,通過在目的緩沖區(qū)中寫入 而將臨時緩沖區(qū)的使用最小化,數(shù)據(jù)可以隨時被直接寫入到目的緩沖區(qū),可以避 免向超出區(qū)域復(fù)制(extent),這樣可以實(shí)現(xiàn)改進(jìn)的性能并減少功耗。 (第二實(shí)施例)
雖然第一實(shí)施例說明了用于在目的緩沖區(qū)中寫入數(shù)據(jù)的基本操作,但有時還 需要檢測在目的緩沖區(qū)中所有數(shù)據(jù)的寫入的完成,也就是數(shù)據(jù)接收的完成。第二 實(shí)施例顯示了用于實(shí)現(xiàn)這種檢測的模式。
圖2顯示根據(jù)本發(fā)明的第二實(shí)施例的數(shù)據(jù)接收設(shè)備的結(jié)構(gòu)。在圖2中,與圖 1中的元件同名的元件用相同的參考數(shù)字表示,并且,除了還有擴(kuò)展的處理否則 省略對它們的說明。
圖2的數(shù)據(jù)接收設(shè)備除了包括圖1的結(jié)構(gòu),還包括用于存儲序號已經(jīng)被接收 的數(shù)據(jù)的接收序號存儲器(序號存儲器)21;用于更新接收序號存儲器21中的 接收序號的接收序號更新器(序號更新器)22;和用于確定接收完成的接收完成 確定單元(確定單元)23。數(shù)據(jù)復(fù)制單元15使用接收序號存儲器21中的信息來 識別數(shù)據(jù)進(jìn)行復(fù)制。
圖6是說明圖2的數(shù)據(jù)接收設(shè)備的操作流程的流程圖。
首先,假設(shè)與通信的對方已經(jīng)建立了連接并且初始序號通過同步信號段的交 換被設(shè)置為10000。同時也假設(shè)目的緩沖區(qū)被指定并且目的序號范圍被設(shè)置為 10000到14999。由于在IP通信中不需要按順序接收數(shù)據(jù),所以接收序號存儲器 21也可以存儲離散的接收序號。接收序號存儲器21在具有鏈表結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu) 中管理離散的接收序號,該離散的接收序號被稱作接收序號范圍信息(或者接收 范圍信息)。每當(dāng)接收到數(shù)據(jù)時,這種接收序號范圍信息被接收序號更新器22 更新。
圖9顯示了在連接建立后沒有接收到數(shù)據(jù)時的接收序號范圍信息。該接收序 號范圍信息由三部分組成起始序號,結(jié)束序號和下一接收序號范圍信息的地址。 但是,因?yàn)榈谝唤邮招蛱柗秶畔⒌钠鹗夹蛱柌恍枰粚iT地存儲,所以可以對 其如圖所示進(jìn)行省略。同樣,此時在這個時間點(diǎn)上還沒有接收到任何數(shù)據(jù)并且預(yù)期接收始于序號10000的數(shù)據(jù),此時與當(dāng)數(shù)據(jù)達(dá)到序號9999時被接收的情況相 同。因此,為了方便接收序號范圍信息如圖所示表示。這就是圖中結(jié)束序號是 9999的原因。從"下一個"指向"空"表示沒有更多的接收序號范圍信息。
例如,數(shù)據(jù)以1460字節(jié)塊被發(fā)送,并且具有序號從10000到11459的數(shù)據(jù) 被第一個接收到(S21是)。然后,接收序號更新器22更新接收序號存儲器21 中的接收序號范圍信息。圖10顯示更新后的信息,指示達(dá)到序號11459的數(shù)據(jù) 已經(jīng)被接收(S22到S30)。
當(dāng)接收序號范圍信息已經(jīng)被這樣更新時,接收完成確定單元23檢査目的序 號范圍是否屬于接收序號范圍信息的任何一個片段(S31是,和S32)。例如, 這種檢査可以通過査看第一接收序號范圍信息的結(jié)束序號是否與目的序號范圍 的序號相等或者是否比目的序號范圍的序號大而實(shí)現(xiàn)。由于在這個階段第一接收 序號范圍信息的結(jié)束序號11459不會大于目的序號范圍的結(jié)束數(shù)值14999,所以 接收完成確定單元23不會確定接收完成(S32否)。
當(dāng)具有序號從11460到12919的數(shù)據(jù)已經(jīng)被重新接收時(S21是),接收序 號范圍信息立刻指示達(dá)到12919的數(shù)據(jù)已經(jīng)被接收到,如圖11所示(S22到S30)。 因?yàn)榈谝唤邮招蛱柗秶畔⒌慕Y(jié)束序號12919不比目的序號范圍的結(jié)束號碼 14999大,所以接收完成確定單元23仍然不能確定接收完成(S31是,S32否)。
當(dāng)具有序號從14380到15839的數(shù)據(jù)被進(jìn)一步接收時(S21是),序號14380 到15839作為第二接收序號范圍信息被重新添加,如圖12所示(S22到S30)。 因?yàn)榈谝唤邮招蛱柗秶畔⒌慕Y(jié)束號碼12919不比目的序號范圍的結(jié)束號碼 14999大,所以在這個階段接收完成確定單元23仍然不能確定接收完成(S31 是,S32否)。
當(dāng)具有序號從12920到14379的數(shù)據(jù)被進(jìn)一步接收時(S21是),第一接收 序號范圍信息與第二接收序號范圍信息合并以便指示達(dá)到序號15839的數(shù)據(jù)已 經(jīng)被接收到,如圖13所示(S22到S30)。然后,因?yàn)榈谝唤邮招蛱柗秶畔⒌?結(jié)束數(shù)值15839比目的序號范圍結(jié)束數(shù)值14999大,所以在這點(diǎn)上接收完成確定 單元23確定接收完成(S31是,S32是)。當(dāng)確定了接收完成時,接收完成確定 單元23將該完成通知目的緩沖區(qū)指定單元17。直到目的緩沖區(qū)被目的緩沖區(qū)指 定單元17稍后重新指定時才再次具有目的緩沖區(qū)。盡管上述例子顯示了連續(xù)序號范圍信息的合并,但是信息片段也可以不必合 并,并且可以以離散的信息片段保存。但是,合并可以節(jié)省用于存儲接收序號范 圍信息所需的存儲空間并且也能使處理簡化,這是因?yàn)橹挥械谝唤邮招蛱柗秶?息的結(jié)束序號才必須被接收完成確定單元23在接收完成的確定中檢査。當(dāng)不執(zhí) 行合并時,接收完成的確定檢査多個接收序號范圍信息片段以便順序地查看是否 目的序號范圍中的所有序號都屬于接收序號范圍。
同樣,接收序號范圍信息的數(shù)據(jù)結(jié)構(gòu)也不是必須是鏈表結(jié)構(gòu),可以是諸如表 結(jié)構(gòu)(或者數(shù)組結(jié)構(gòu))的其它結(jié)構(gòu)。這里節(jié)點(diǎn)用于存儲離散的范圍信息并且因此 數(shù)據(jù)結(jié)構(gòu)無關(guān)緊要。
現(xiàn)在,我們說明圖6中的在連接建立后并且目的緩沖區(qū)沒有被指定前接收到 幀的情況。
如果沒有指定的目的緩沖區(qū)而接收到幀(S21是,S22,和S23否),幀中 的所有數(shù)據(jù)都被存儲在臨時緩沖區(qū)中(S24),并且接收序號更新器22與前面例 子相同更新接收序號存儲器21中的接收序號范圍信息(S30)。但是,當(dāng)沒有指 定目的緩沖區(qū)時,在更新后接收完成確定單元23不執(zhí)行接收完成的確定(S31 否)。
當(dāng)目的緩沖區(qū)被順序地指定(S27是)并且目的序號范圍被識別時,接收序號 存儲器21中的接收序號范圍信息首先被檢查(S33),并且檢査哪些數(shù)據(jù)被存儲 在臨時緩沖區(qū)中(S34)。然后,如果存在任何屬于目的序號范圍的數(shù)據(jù)(S34 是),就將該數(shù)據(jù)復(fù)制到目的緩沖區(qū)(S35),并且在復(fù)制完成后,接收完成確 定單元23確定接收是否完成(S32)。如果數(shù)據(jù)不屬于目的序號范圍(S34否), 什么也不執(zhí)行并且等待數(shù)據(jù)的接收。例如,圖14說明了在如圖12所示的位置指 定目的緩沖區(qū)、稍后接收剩余數(shù)據(jù)和確定接收完成的情況下的操作。
通過如上所述的本實(shí)施例的這種操作,可以正確地確定接收的完成。 現(xiàn)在,我們說明臨時緩沖區(qū)指定單元16如何分配臨時緩沖區(qū)。 一種方式是為每個幀獨(dú)立地分配一個存儲區(qū)(第一方法)。更具體地,臨時 緩沖區(qū)指定單元16例如分配32個1500字節(jié)的區(qū)域(或者部分區(qū)域),并且數(shù) 據(jù)寫入單元14在32個區(qū)域中的每個區(qū)域中(部分區(qū)域)存儲接收到的數(shù)據(jù)幀。 這里,該區(qū)域的地址必須與接收序號范圍信息關(guān)聯(lián)地存儲。例如,如圖10所示,當(dāng)接收到具有序號從10000到11459的數(shù)據(jù)并且存儲在臨時緩沖區(qū)中的 0x80000000時,該地址以圖16所示的關(guān)聯(lián)被存儲。然后,如圖11所示當(dāng)進(jìn)一 步接收到序號從11460到12919的數(shù)據(jù)并且存儲在臨時緩沖區(qū)的0x9000000時, 該地址以圖17所示的關(guān)聯(lián)被存儲。當(dāng)用于多個幀的接收序號范圍信息如圖17所 示合并時,需要存儲多個地址信息片段用于關(guān)聯(lián)的臨時緩沖區(qū)。因此,這種多個 信息片段可以以如圖18所示的相互關(guān)聯(lián)的鏈表格式存儲。由于部分區(qū)域的號碼 是有限的,例如,數(shù)據(jù)從其已經(jīng)被復(fù)制到目的緩沖區(qū)的部分區(qū)域被釋放并且被重 新使用。
另一種通過臨時緩沖區(qū)指定單元16分配臨時緩沖區(qū)的方式(第二方法)是 以目的緩沖區(qū)中序號的順序在單獨(dú)的緩沖區(qū)中存儲數(shù)據(jù)。也就是,用于臨時緩沖 區(qū)的序號范圍識別與用于目的緩沖區(qū)的序號范圍識別相同,并且數(shù)據(jù)被寫入相對 于序號范圍的偏移量位置,以便以臨時緩沖區(qū)中序號的順序?qū)憯?shù)據(jù)。用于這種情 況的數(shù)據(jù)接收設(shè)備的結(jié)構(gòu)如圖3所示。
圖3的數(shù)據(jù)接收設(shè)備具有臨時序號范圍識別單元(第二識別單元)31,該臨 時序號范圍識別單元就像為目的緩沖區(qū)那樣為臨時緩沖區(qū)確定相應(yīng)的序號范圍。 例如,假設(shè)臨時緩沖區(qū)指定單元16指定始于0x80000000的64k字節(jié)的臨時緩沖 區(qū),即0x80000000到0x8000ffff,當(dāng)序號起始于10000時,臨時序號范圍識別單 元31識別對應(yīng)于這個臨時緩沖區(qū)的序號范圍是10000到75535 (長度64k二 65536, 75535=10000+65536-1)。使用這個信息,能夠從序號之間的偏移量中識 別出地址區(qū)域,例如在圖12所示的情況,具有序號從10000到12919的數(shù)據(jù)位 于0x80000000到0x80000b67 (0x0b67=2919),具有序號從14380到15839的 數(shù)據(jù)位于0x8000111c到0x800016cf (0xlllc=4380,0xl6cf=5839),等等。也就是 說,這種方法消除了前面方法中說明的如圖16到18所示的在臨時緩沖區(qū)中為每 個幀數(shù)據(jù)都存儲一個地址的必要性,因此可以節(jié)省存儲區(qū)和/或使處理簡化。
例如,在這種情況下臨時緩沖區(qū)優(yōu)選環(huán)形緩沖區(qū)。作為具體例子,假設(shè)當(dāng)臨 時緩沖區(qū)是從0x80000000到0x8000ffff時,目的緩沖區(qū)被指定并且序號從10000 到14999的目的序號范圍被識別,并且臨時緩沖區(qū)中從0x80000000到0x80001387 的數(shù)據(jù)復(fù)制被完成。在這種情況下,從0x80000000到0x80001387(0x1387=4999) 的臨時緩沖區(qū)被釋放,這是因?yàn)樗鼘⒉辉俦挥糜谠试S在0x8000ffff之后寫入數(shù)據(jù)。也就是,從0x80001388到0x8000ffff的區(qū)域和從0x80000000到0x80001387的 區(qū)域以此順序成為新的64k字節(jié)區(qū)域。但是,這里臨時序號范圍(或臨時號碼范 圍)也被更新以便跟隨目的序號范圍,即15000到80535(80535=15000+65536-1)。
通過這樣做,例如,盡管具有序號從15000到15839的數(shù)據(jù)在圖14中第二 階段所示的復(fù)制完成時仍然剩余在臨時緩沖區(qū)中,但是即使不移動該剩余數(shù)據(jù)在 更新前后也能保持區(qū)域地址與序號之間的一致性。這種情況在圖19中說明,圖 19中上部表示更新前下部表示更新后,并且編號線上面顯示的是臨時緩沖區(qū)中 的地址下面顯示的是對應(yīng)的序號。
當(dāng)臨時緩沖區(qū)小于指定目的緩沖區(qū)時,臨時緩沖區(qū)不必是環(huán)形緩沖區(qū)。具體 而言,當(dāng)臨時緩沖區(qū)是從0x80000000到0x800000ff (大小:256字節(jié))時,并 且如果目的數(shù)值范圍又被再次識別為從10000到14999,當(dāng)完成數(shù)據(jù)復(fù)制時臨時 緩沖區(qū)可以仍舊是從0x80000000到0x800000ff。但是,對應(yīng)的臨時序號范圍還 是被更新以便跟隨目的序號,即成為從15000到15255。
上述這種操作能夠適當(dāng)?shù)胤峙渑R時緩沖區(qū)。 (第三實(shí)施例)
在第二實(shí)施例中,在數(shù)據(jù)復(fù)制單元15復(fù)制后(圖6中S35至S32)執(zhí)行接 收完成的確定,但是在數(shù)據(jù)復(fù)制單元15復(fù)制數(shù)據(jù)的同時也可以接收數(shù)據(jù)。由于 數(shù)據(jù)存儲器12的存儲器通常只有一個寫入端口,在用于復(fù)制的寫入操作和用于 數(shù)據(jù)接收的寫入操作之間以及它們中的任一個必須被暫停的情況下,將需要仲 裁。因?yàn)閷⒁粡?fù)制的數(shù)據(jù)被存儲在臨時緩沖區(qū)中,所以復(fù)制的延時不會引起嚴(yán) 重問題。另一方面,如果數(shù)據(jù)接收被延時,傳輸過程中的緩沖區(qū)(特別是網(wǎng)絡(luò)接 口單元ll的內(nèi)部緩沖區(qū)等)可能溢出并且數(shù)據(jù)順序發(fā)送時可能丟失。因此,在 這種情況下需要為用于數(shù)據(jù)接收的寫入賦予比用于數(shù)據(jù)復(fù)制的寫入更高的優(yōu)先 級,但是在那種情況下數(shù)據(jù)接收經(jīng)常在數(shù)據(jù)復(fù)制完成前發(fā)生。第三實(shí)施例處理這 種情況。
圖7是說明根據(jù)第三實(shí)施例的數(shù)據(jù)接收設(shè)備操作流程的流程圖。根據(jù)第三實(shí) 施例的數(shù)據(jù)接收設(shè)備的框圖與圖2或圖3所示的相似。
如果當(dāng)數(shù)據(jù)復(fù)制單元15執(zhí)行復(fù)制時具有指定目的緩沖區(qū)的數(shù)據(jù)被接收(S41
是,S43是,和S44是),接收序號更新器22與前述實(shí)施例一樣首先更新接收序號存儲器21中的接收序號范圍信息。但是,如果數(shù)據(jù)只是如前述實(shí)施例一樣 被簡單地寫入目的緩沖區(qū),則當(dāng)數(shù)據(jù)復(fù)制單元15還沒有為了復(fù)制而掃描數(shù)據(jù)的 序號時,接收序號范圍信息存儲具有那個序號的數(shù)據(jù)接收。因此,當(dāng)隨后掃描以 便從對應(yīng)的接收到的數(shù)據(jù)沒有被真正寫入的臨時緩沖區(qū)中的區(qū)域讀取數(shù)據(jù)并且 將該數(shù)據(jù)復(fù)制到目的緩沖區(qū)時,數(shù)據(jù)復(fù)制單元15查看更新的接收序號范圍信息。 換句話說,寫入目的緩沖區(qū)的接收到的數(shù)據(jù)被在那時碰巧存儲于臨時緩沖區(qū)中的 無效數(shù)據(jù)蓋寫。
因此,在這種情況下,也就是當(dāng)數(shù)據(jù)復(fù)制單元15執(zhí)行復(fù)制的同時接收到數(shù) 據(jù)時,如果數(shù)據(jù)復(fù)制單元15沒有為了復(fù)制而掃描接收到的數(shù)據(jù)的序號(S46否), 即使指定了目的緩沖區(qū)接收到的數(shù)據(jù)也被寫入臨時緩沖區(qū)(S49)。通過這樣做, 當(dāng)數(shù)據(jù)復(fù)制單元15隨后執(zhí)行掃描時數(shù)據(jù)將從臨時緩沖區(qū)被正確地復(fù)制到目的緩 沖區(qū)。換句話說,如果數(shù)據(jù)復(fù)制單元15為了復(fù)制而掃描了接收到的數(shù)據(jù)的序號
(S46是),因?yàn)闆]有關(guān)于復(fù)制的蓋寫問題而將接收到的數(shù)據(jù)寫入目的緩沖區(qū)
(S47)。
同樣,在第二實(shí)施例中,當(dāng)接收到幀時如果已經(jīng)指定了用于存儲幀序號的目 的緩沖區(qū),接收完成確定單元23確定接收是否完成。但是,在這個實(shí)施例中, 如果復(fù)制還沒有完成(S52是),由接收序號存儲器21指示的數(shù)據(jù)可能在目的 緩沖區(qū)中還不存在,并因此即使指定了目的緩沖區(qū)接收完成確定單元23也不執(zhí) 行確定。當(dāng)復(fù)制稍后完成時接收完成確定單元23確定接收是否完成(S56, S52 和S53否)。
上述操作的例子如圖15所示。與圖14一樣,圖15顯示了目的緩沖區(qū)被指 定為圖12所示的狀態(tài)下的狀態(tài)。但是,該圖顯示了當(dāng)數(shù)據(jù)復(fù)制單元15己經(jīng)復(fù)制 了達(dá)到序號12919的數(shù)據(jù)時重新接收具有序號從12920到14379的數(shù)據(jù)。這里, 因?yàn)閿?shù)據(jù)復(fù)制單元15的掃描還沒有經(jīng)過接收到的數(shù)據(jù),該數(shù)據(jù)被寫入臨時緩沖 區(qū),并且接著數(shù)據(jù)復(fù)制單元15將該數(shù)據(jù)與隨后的數(shù)據(jù)一起復(fù)制到目的緩沖區(qū), 然后接收完成確定單元23確定接收是否完成。通過這種操作,即使當(dāng)數(shù)據(jù)復(fù)制 單元15正在復(fù)制數(shù)據(jù)時,數(shù)據(jù)也能被恰當(dāng)?shù)亟邮铡?(第四實(shí)施例)
在第三實(shí)施例中,如果在數(shù)據(jù)復(fù)制單元15復(fù)制數(shù)據(jù)時接收到數(shù)據(jù),如果該接收到的數(shù)據(jù)的序號還沒有被掃描則該數(shù)據(jù)被寫入臨時緩沖區(qū)。但是,當(dāng)接收到 的數(shù)據(jù)的序號屬于目的序號范圍,因?yàn)椴恍枰獜?fù)制數(shù)據(jù)所以直接將數(shù)據(jù)寫入目的 緩沖區(qū)比寫入臨時緩沖區(qū)更有效率。本實(shí)施例說明實(shí)現(xiàn)這種方式的數(shù)據(jù)接收設(shè) 備。
圖4是顯示根據(jù)本發(fā)明的第四實(shí)施例的數(shù)據(jù)接收設(shè)備的結(jié)構(gòu)的框圖。
圖4的數(shù)據(jù)接收設(shè)備與圖3的數(shù)據(jù)接收設(shè)備的不同之處在于它具有兩個 (即,第一和第二)接收序號更新器和兩個(g卩,第一和第二)接收序號存儲器。 就是說圖4的數(shù)據(jù)接收設(shè)備不僅包括第一接收序號存儲器21a和第二接收序號存 儲器21b而且還包括第一接收序號更新器22a和第二接收序號更新器22b。第一 接收序號存儲器21a存儲對應(yīng)于寫入臨時緩沖區(qū)中的數(shù)據(jù)的接收序號范圍信息。 第二接收序號存儲器21b存儲對應(yīng)于寫入目的緩沖區(qū)中的數(shù)據(jù)的接收序號范圍 信息。第一和第二接收序號更新器22a和22b在第一和第二接收序號存儲器21a 和21b中更新接收序號范圍信息。例如,第一接收序號存儲器21a中的接收序號 范圍信息對應(yīng)于本發(fā)明的臨時范圍信息;第二接收序號存儲器21b中的接收序號 范圍信息對應(yīng)于本發(fā)明的目的范圍信息。
因?yàn)閷?yīng)于在臨時緩沖區(qū)中存儲的數(shù)據(jù)的接收序號范圍信息被存儲在第一 接收序號存儲器21a中,所以當(dāng)復(fù)制數(shù)據(jù)時數(shù)據(jù)復(fù)制單元15通過檢査該信息而 識別數(shù)據(jù)以便復(fù)制。對應(yīng)于該復(fù)制的數(shù)據(jù)的接收序號范圍從第一接收序號存儲器 21a被移動到第二接收序號存儲器21b。
當(dāng)重新接收到數(shù)據(jù)時,以第一實(shí)施例說明的方式確定是否應(yīng)將數(shù)據(jù)寫入臨時 緩沖區(qū)還是寫入目的緩沖區(qū)。寫入臨時緩沖區(qū)的數(shù)據(jù)的序號范圍被第一接收序號 更新器22a添加到第一接收序號存儲器21a,并且寫入目的緩沖區(qū)的數(shù)據(jù)的序號 范圍被第二接收序號更新器22b添加到第二接收序號存儲器21b。
當(dāng)?shù)诙邮招蛱柎鎯ζ?1b中的接收序號范圍信息根據(jù)數(shù)據(jù)復(fù)制或者新數(shù) 據(jù)的接收被更新時,接收完成確定單元23檢查更新的接收序號范圍信息是否屬 于目的序號范圍,并且如果該信息屬于該范圍則確定接收完成。
例如,考慮到下面的情況。圖21顯示從目的緩沖區(qū)的指定到接收完成的操 作的例子。
假設(shè)在初始狀態(tài)當(dāng)序號始于10000 (臨時序號范圍的開始是10000)并且沒有指定目的緩沖區(qū)時,臨時緩沖區(qū)最初包含具有序號從IOOOO到12919和從15840 到17299的數(shù)據(jù)。當(dāng)目的序號范圍從10000到16999的目的緩沖區(qū)被指定時,具 有序號從10000到11459的數(shù)據(jù)被首先復(fù)制。然后,在具有序號從12920到15839 的數(shù)據(jù)被重新接收并在目的緩沖區(qū)中被寫入期間,復(fù)制操作繼續(xù)。最后,具有序 號從11460到12919的數(shù)據(jù)和從15840到16999的數(shù)據(jù),也就是通過繼續(xù)復(fù)制操 作將被復(fù)制的剩余數(shù)據(jù)都被復(fù)制。此時,具有序號10000到16999的所有數(shù)據(jù)都 已經(jīng)被存儲在目的緩沖區(qū)中。下文將說明圖20所示情況的本實(shí)施例的數(shù)據(jù)接收 設(shè)備的詳細(xì)操作。
圖8是說明根據(jù)第四實(shí)施例的數(shù)據(jù)接收設(shè)備執(zhí)行的處理流程的流程圖。出于 方便,在下文中假設(shè)在第一接收序號存儲器21a中存儲的接收序號范圍信息屬于 第一組并且在第一接收序號存儲器21b中存儲的屬于第二組。
首先,初始狀態(tài)下的接收序號信息如圖21所示。在這種狀態(tài)下,還沒有接 收到數(shù)據(jù)。當(dāng)在這種狀態(tài)下接收到具有序號從10000到12919的數(shù)據(jù)和從15840 到17299的數(shù)據(jù)時(S61是),該狀態(tài)轉(zhuǎn)換到圖20的第一狀態(tài)(S62, S63否, 和S67)。對應(yīng)于圖20的接收序號范圍信息如圖22所示。圖22的每個狀態(tài)對 應(yīng)于圖20的每個狀態(tài)。在初始狀態(tài)下,序號到12919和序號從15840到17299 的接收序號范圍信息被存儲于第一組(S68)。因?yàn)橛膳R時序號范圍識別單元31 識別的范圍信息的起始指示為10000,所以確認(rèn)數(shù)據(jù)始于10000。由于沒有目的 緩沖區(qū),所以在第二組中不存在接收序號范圍信息。
接下來,目的緩沖區(qū)被指定(S61否,和S71是)。但是,即使指定目的緩 沖區(qū),接收序號范圍信息也不會改變。
然后,當(dāng)復(fù)制具有序號從10000到11459的數(shù)據(jù)時(S75, S76是,S77和 S73),該序號從第一組中被刪除并且被添加到第二組。結(jié)果,達(dá)到9999的序號, 從11460到12919和從15840到17299的序號都在第一組中,并且達(dá)到11459的 序號在第二組中(S74)。此時,接收完成確定單元23檢査從10000到16999 的目的序號范圍是否屬于第二組的接收序號范圍信息(S69是,S70)。但是, 這里范圍不屬于該范圍信息(S70否),因此不能確定接收完成。
當(dāng)具有序號從12920到15839的數(shù)據(jù)被重新接收時(S61是),那個范圍被 添加到第二組,從而達(dá)到11459的序號和從12920到15839的序號在第二組中(S62, S63是,S64是,S65和S66)。接收完成確定單元23再一次檢查從10000 到16999的目的序號范圍是否屬于第二組的接收序號范圍信息(S69是,S70)。 但是,該范圍仍不屬于該范圍信息(S70否),因此不能確定接收完成。
然后,當(dāng)復(fù)制具有序號從11460到12919和從15840到16999的數(shù)據(jù)也就是 將要被復(fù)制的剩余數(shù)據(jù)時(S73),這些位置從第一組中被刪除。結(jié)果,第一組 包含達(dá)到9999的序號和從17000到17299的序號,并且第二組包含達(dá)到16999 的序號(S74)。此時,接收完成確定單元23再一次檢查從10000到16999的目 的序號范圍是否屬于第二組的接收序號范圍信息(S69是,S70)。這里該范圍 確實(shí)屬于該范圍信息(S70是),則接收完成確定單元23確定接收完成。
數(shù)據(jù)復(fù)制完成后,例如期望釋放臨時緩沖區(qū)數(shù)據(jù)已經(jīng)被復(fù)制的部分,這是因 為如上所述在第二實(shí)施例的結(jié)尾不再需要該部分。例如,通過這種釋放,第一組 的相應(yīng)的接收序號范圍信息也不是必要的,并因此也可以被刪除如圖23所示。 更確切地說,在圖23的上部,第一組的第一接收序號范圍信息的結(jié)束序號是 16999,該結(jié)束序號指示了從圖22中上一個的狀態(tài)關(guān)于序號范圍從IOOOO到16999 的信息的刪除。此外,由于該范圍與17000到17299的第二接收序號范圍相鄰, 所以這些范圍可以被合并為如下部所示的達(dá)到17299的接收序號范圍。此時,臨 時序號范圍的起始也變成17000,顯示數(shù)據(jù)始于17000。在這種狀態(tài)下,等待新 目的緩沖區(qū)的指定和/或數(shù)據(jù)接收。
通過上述操作,當(dāng)在數(shù)據(jù)復(fù)制單元15復(fù)制數(shù)據(jù)期間接收到新數(shù)據(jù)時,可以 避免數(shù)據(jù)的復(fù)制,并且通過將數(shù)據(jù)直接寫入目的緩沖區(qū)而不是寫入臨時緩沖區(qū)可 以提高處理的效率。
現(xiàn)在說明能提供與上述實(shí)施例效果相同的另一種方式。根據(jù)這種方式的數(shù)據(jù) 接收設(shè)備的結(jié)構(gòu)如圖24所示。與圖2或者圖3相比較,圖24包括用于臨時存儲 接收序號范圍信息的接收序號臨時存儲器(接收序號臨時存儲器)32。
由圖24的數(shù)據(jù)接收設(shè)備處理的流程如圖25所示。對數(shù)據(jù)接收執(zhí)行的操作與 第二實(shí)施例中的處理相似,但是在目的緩沖區(qū)指定后的處理不同。
當(dāng)目的緩沖區(qū)被指定并且目的序列范圍信息被識別時(S91是),接收序號 臨時存儲器32存儲到那時為止的接收序號范圍信息(S93)。然后數(shù)據(jù)掃描單元 15順序掃描存儲于接收序號臨時存儲器32中的接收序號范圍信息,而不是掃描存儲于接收序號存儲器21的接收序號范圍信息,以便復(fù)制屬于目的序號范圍的 數(shù)據(jù)(S93)。
如果在數(shù)據(jù)復(fù)制期間重新接收到數(shù)據(jù)(S81是),存儲于接收序號存儲器21 中的信息和與該數(shù)據(jù)有關(guān)的信息一起被更新(S87),但是該信息不影響被數(shù)據(jù) 復(fù)制單元15引用的接收序號臨時存儲器32中的信息,并因此也不影響復(fù)制。
如果復(fù)制完成(S89否)并且如果目的序列范圍信息屬于接收序號范圍信息 (S90是),則確定接收完成。
對應(yīng)于圖20的接收序號范圍信息中的改變?nèi)鐖D26所示。"原始信息"是在 接收序號存儲器21中存儲的信息,并且"臨時信息"是在接收序號臨時存儲器 32中存儲的信息。
首先,在沒有指定目的緩沖區(qū)的階段中(第一階段),臨時信息中沒有數(shù)據(jù)。 如果此時在上次處理中使用過的數(shù)據(jù)殘留在臨時信息中,該數(shù)據(jù)在下一個階段將 被復(fù)制蓋寫。
當(dāng)指定目的緩沖區(qū)時(第二階段),此時接收序號范圍信息被存儲于臨時信 息中并且開始數(shù)據(jù)復(fù)制。通過參考臨時信息復(fù)制被順序地執(zhí)行第一接收序號范 圍信息被首先掃描并執(zhí)行復(fù)制(第三階段)。
接下來,當(dāng)重新接收到數(shù)據(jù)時(第四階段),關(guān)于該數(shù)據(jù)的信息被映射到原 始信息中而不是被映射到臨時信息中,因此該信息不影響復(fù)制。此時,目的序號 范圍剛好屬于接收序號范圍信息,但因?yàn)閺?fù)制還沒有完成所以不能確定接收被完 成。
此后,復(fù)制繼續(xù)掃描上一次的接收序號范圍信息(第五階段),直到復(fù)制完 成并且接收被確認(rèn)完成。
通過這種操作,當(dāng)在數(shù)據(jù)復(fù)制單元15復(fù)制數(shù)據(jù)期間重新接收到新數(shù)據(jù)時, 可以避免數(shù)據(jù)的復(fù)制,并且通過將數(shù)據(jù)直接寫入目的緩沖區(qū)而不是如前面的實(shí)施 例寫入臨時緩沖區(qū)可以提高處理的效率。 (第五實(shí)施例)
在第五實(shí)施例中將說明執(zhí)行的具體形式。圖27顯示了它的一個例子。 網(wǎng)絡(luò)接口單元ll由諸如網(wǎng)絡(luò)接口卡(NIC)的網(wǎng)絡(luò)接口裝置實(shí)現(xiàn)。 幀分析單元13,數(shù)據(jù)寫入單元14,數(shù)據(jù)復(fù)制單元15,第一和第二序號更新單元22a和22b,以及接收完成確定單元23都在被作為動態(tài)可重配置處理器、 FPGA等執(zhí)行的硬件(專用線路)52中實(shí)現(xiàn)。
臨時緩沖區(qū)指定單元16、臨時序號范圍識別單元31、目的緩沖區(qū)指定單元 17、目的序號范圍識別單元18等等都在由主機(jī)CPU53等執(zhí)行的軟件中實(shí)現(xiàn)。
第一和第二接收序號存儲器21a、 21b,數(shù)據(jù)存儲器12在諸如SDRAM和 SRAM的存儲器54中實(shí)現(xiàn)。該存儲器可以實(shí)際上被構(gòu)造為多個存儲器裝置或者 單個存儲器裝置。當(dāng)存儲器構(gòu)造為多個存儲器設(shè)備時,它們可以是獨(dú)立的存儲器 裝置。
上述結(jié)構(gòu)僅是一個例子,但是因?yàn)槊慨?dāng)接收到幀時都需要處理,所以在硬件 中至少需要配置幀分析單元13,數(shù)據(jù)寫入單元14,數(shù)據(jù)復(fù)制單元15和第一及第 二接收序號更新器22a和22b。
同樣,主機(jī)CPU53, NIC51,硬件52和存儲器54的典型配置如圖28到圖 30所示。圖28顯示硬件52通過專用總線61與NIC51連接的情況;圖29顯示 它們通過共享總線62相連接的情況;以及圖30顯示硬件在NIC51中被執(zhí)行的 情況。本發(fā)明可以應(yīng)用到這些情況中的任何一種情況。
它們可以被配置在不同的LSI中,或者配置在諸如硬件的多個塊中,同時主 機(jī)CPU可以被配置在單個LSI中。
當(dāng)臨時緩沖區(qū)和目的緩沖區(qū)被配置在公用存儲器中時,全部的三種訪問即接 收數(shù)據(jù)的寫入、通過復(fù)制讀取和通過復(fù)制寫入可以被同時請求。因此要求存儲器 的帶寬至少是網(wǎng)絡(luò)帶寬的三倍。
如上所述,利用本發(fā)明的實(shí)施例,接收到的數(shù)據(jù)可以根據(jù)需要被臨時地緩沖 或者當(dāng)不需要緩沖時直接寫入目的緩沖區(qū)。因此,上述相關(guān)技術(shù)中的問題(1) 到(3)可以被解決同時使接收的數(shù)據(jù)到臨時緩沖區(qū)的復(fù)制最小化,這又將實(shí)現(xiàn) 改進(jìn)的性能并減少功耗。
權(quán)利要求
1. 一種數(shù)據(jù)接收設(shè)備,其特征在于,包含配置為通過網(wǎng)絡(luò)接收數(shù)據(jù)序列的接收單元,所述數(shù)據(jù)序列是一系列數(shù)據(jù),其中所述每個數(shù)據(jù)都與一個序號相關(guān)聯(lián);配置為存儲數(shù)據(jù)的數(shù)據(jù)存儲器;第一指定單元,配置為在所述數(shù)據(jù)存儲器中指定臨時緩沖區(qū),用于臨時存儲所述數(shù)據(jù)序列中包含的數(shù)據(jù);第二指定單元,配置為在所述數(shù)據(jù)存儲器中指定目的緩沖區(qū),用于存儲所述數(shù)據(jù)序列中包含的數(shù)據(jù);第一識別單元,配置為當(dāng)所述目的緩沖區(qū)被所述第二指定單元指定時,依靠所述指定的目的緩沖區(qū)大小來識別目的號范圍,以便所述目的號范圍跟隨上一次被識別的目的號范圍,識別的目的號范圍中包含的每個序號在所述指定的目的緩沖區(qū)中被分配一個位置,所述位置對應(yīng)于所述識別的目的號范圍內(nèi)的序號的相對位置;數(shù)據(jù)寫入單元,配置為當(dāng)所述數(shù)據(jù)序列已經(jīng)被所述接收單元接收到時,在對應(yīng)于所述數(shù)據(jù)的序號的所述目的緩沖區(qū)中的被分配的位置中,寫入屬于已經(jīng)被所述第一識別單元識別的目的號范圍之一的數(shù)據(jù),并且在所述臨時緩沖區(qū)中寫入不屬于任何一個所述目的號范圍的數(shù)據(jù);和數(shù)據(jù)復(fù)制單元,配置為當(dāng)所述目的緩沖區(qū)被所述第二指定單元指定時,從所述臨時緩沖區(qū)中讀出數(shù)據(jù),所述數(shù)據(jù)具有屬于響應(yīng)所述目的緩沖區(qū)的指定而被識別的所述目的號范圍內(nèi)的序號,并且在對應(yīng)于所述讀出的數(shù)據(jù)的序號的所述目的緩沖區(qū)中分配的位置中寫入所述讀出的數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的設(shè)備,其特征在于,進(jìn)一步包括 配置為存儲接收范圍信息的序號存儲器,所述接收范圍信息表示被所述接收單元接收的數(shù)據(jù)序列的一組序號范圍;序號更新器,配置為當(dāng)所述數(shù)據(jù)序列將被所述數(shù)據(jù)寫入單元寫入時,通過添加將被寫入的所述數(shù)據(jù)序列的所述序號范圍來更新所述接收范圍信息;和確定單元,配置為檢查所述識別的目的號范圍是否屬于所述接收范圍信息, 以及,如果檢測到所述范圍屬于所述信息,則確定用于所述識別的目的號范圍的 接收被完成,其中在所述數(shù)據(jù)復(fù)制單元響應(yīng)所述目的緩沖區(qū)的指定而執(zhí)行所述數(shù)據(jù)復(fù)制的情 況下,即使檢測到所述識別的目的號范圍屬于所述接收范圍信息,所述確定單元 也能在所述數(shù)據(jù)復(fù)制終止后確定接收已經(jīng)完成,和所述數(shù)據(jù)復(fù)制單元識別既屬于由所述接收范圍信息指示的序號范圍又屬于 所述識別的目的號范圍的序號,并復(fù)制具有所述識別的序號的數(shù)據(jù)。
3. 根據(jù)權(quán)利要求2所述的設(shè)備,其特征在于,所述數(shù)據(jù)復(fù)制單元順序地掃描所述接收范圍信息,并且復(fù)制屬于所述識別的 目的號范圍的數(shù)據(jù),和當(dāng)所述復(fù)制單元執(zhí)行數(shù)據(jù)復(fù)制的同時接收到屬于所述識別的序號范圍的數(shù) 據(jù)時,如果所述數(shù)據(jù)的序號還沒有被掃描,則所述寫入單元在所述臨時緩沖區(qū)中 寫入所述數(shù)據(jù),而如果所述數(shù)據(jù)的序號已經(jīng)被掃描,則在對應(yīng)于所述數(shù)據(jù)的序號 的所述目的緩沖區(qū)中分配的位置寫入所述數(shù)據(jù)。
4. 根據(jù)權(quán)利要求2所述的設(shè)備,其特征在于,所述序號存儲器存儲作為所述接收范圍信息的臨時范圍信息和目的范圍信 息,所述臨時范圍信息表示在所述臨時緩沖區(qū)中寫入的數(shù)據(jù)的所述序號范圍,所 述目的范圍信息表示在所述目的緩沖區(qū)中寫入的數(shù)據(jù)的所述序號范圍,所述序號更新器將在所述目的緩沖區(qū)中寫入的數(shù)據(jù)的所述序號范圍添加到 所述目的范圍信息,并且將所述臨時緩沖區(qū)中寫入的數(shù)據(jù)的所述序號范圍添加到 所述臨時范圍信息,所述數(shù)據(jù)復(fù)制單元識別既屬于由所述臨時范圍信息指示的序號范圍又屬于 所述識別的序號范圍的序號,并復(fù)制具有所述識別的序號的數(shù)據(jù),當(dāng)所述數(shù)據(jù)復(fù)制單元執(zhí)行數(shù)據(jù)復(fù)制時,所述序號更新器將所述復(fù)制的數(shù)據(jù)的 序號從所述臨時范圍信息移動到所述目的范圍信息,和當(dāng)檢測到所述識別的目的號范圍屬于所述目的范圍信息時,所述確定單元確定用于所述識別的目的號范圍的接收已經(jīng)完成。
5. 根據(jù)權(quán)利要求2所述的設(shè)備,其特征在于,進(jìn)一步包括 序號臨時存儲器,配置為存儲所述接收范圍信息直到所述第一識別單元已經(jīng)識別目的號范圍為止,其中所述數(shù)據(jù)復(fù)制單元順序地掃描在所述序號臨時存儲器中存儲的接收范圍信 息,并且復(fù)制屬于所述識別的目的號范圍的數(shù)據(jù)。
6. 根據(jù)權(quán)利要求2所述的設(shè)備,其特征在于,所述臨時緩沖區(qū)包含多個部分區(qū)域,每個部分區(qū)域具有能通過網(wǎng)絡(luò)被接收到 的數(shù)據(jù)序列的最大長度(size);當(dāng)在所述臨時緩沖區(qū)中寫入時,所述數(shù)據(jù)寫入單元在所述多個部分區(qū)域中的 可用的一個中寫入;當(dāng)所述數(shù)據(jù)已經(jīng)被寫入所述可用的部分區(qū)域中時,所述序號存儲器存儲所述 數(shù)據(jù)被寫入的地址,所述地址與所述接收范圍信息中的所述數(shù)據(jù)的序號范圍相關(guān) 聯(lián);當(dāng)所述數(shù)據(jù)復(fù)制單元已經(jīng)識別了將要被復(fù)制的數(shù)據(jù)的序號時,所述數(shù)據(jù)復(fù)制 單元基于所述接收范圍信息識別對應(yīng)于所述識別的序號的一個地址,并讀取在所 述識別的地址存儲的數(shù)據(jù)作為將要被復(fù)制的數(shù)據(jù);和當(dāng)寫入所述部分區(qū)域的所有數(shù)據(jù)的復(fù)制完成時,所述第一指定單元釋放所述 部分區(qū)域。
7. 根據(jù)權(quán)利要求2所述的設(shè)備,其特征在于,進(jìn)一步包括 第二識別單元,配置為每當(dāng)響應(yīng)所述目的緩沖區(qū)的指定而識別所述目的號范圍并且進(jìn)一步地所述復(fù)制被完成時,識別對應(yīng)于所述臨時緩沖區(qū)的臨時號范圍以 便所述臨時號范圍跟隨所述識別的目的號范圍,其中當(dāng)在所述臨時緩沖區(qū)中寫入數(shù)據(jù)時,所述數(shù)據(jù)寫入單元在與所述臨時號范圍 中的數(shù)據(jù)的相對位置對應(yīng)的位置寫入數(shù)據(jù),和所述復(fù)制單元將與所述臨時號范圍中的所述識別的序號的相對位置對應(yīng)的位置存儲的數(shù)據(jù)識別為將要被復(fù)制的數(shù)據(jù)。
8. 根據(jù)權(quán)利要求1所述的設(shè)備,其特征在于, 所述數(shù)據(jù)寫入單元和所述數(shù)據(jù)復(fù)制單元至少被配置在硬件中。
9. 根據(jù)權(quán)利要求1所述的設(shè)備,其特征在于,進(jìn)一步包括 緩沖區(qū)大小通知器,配置為通知發(fā)送端所述目的緩沖區(qū)與所述臨時緩沖區(qū)的總和中的可用區(qū)域的大小的所述數(shù)據(jù)序列。
10. 根據(jù)權(quán)利要求1所述的設(shè)備,其特征在于, 所述數(shù)據(jù)存儲器是單個存儲器裝置,以及 所述存儲器裝置的帶寬至少是所述網(wǎng)絡(luò)帶寬的三倍。
11. 一種數(shù)據(jù)接收方法,其特征在于,包含通過網(wǎng)絡(luò)接收數(shù)據(jù)序列,所述數(shù)據(jù)序列是一系列數(shù)據(jù),其中每個數(shù)據(jù)都與一 個序號相關(guān)聯(lián);指定臨時緩沖區(qū)用于臨時存儲數(shù)據(jù),該數(shù)據(jù)是配置為存儲數(shù)據(jù)的數(shù)據(jù)存儲器 中的所述數(shù)據(jù)序列中包含的數(shù)據(jù);在所述數(shù)據(jù)存儲器中指定目的緩沖區(qū),用于存儲所述數(shù)據(jù)序列中包含的數(shù)據(jù);當(dāng)所述目的緩沖區(qū)被指定時,依靠所述指定的目的緩沖區(qū)的大小來識別目的 號范圍,以便所述目的號范圍跟隨上一次識別的目的號范圍,識別的目的號范圍 中包含的每個序號被分配給一部分指定的目的緩沖區(qū),所述部分目的緩沖區(qū)與所 述識別的目的號范圍內(nèi)的序號的相對位置相關(guān)聯(lián);當(dāng)接收到所述數(shù)據(jù)時,在對應(yīng)于所述數(shù)據(jù)的序號的目的緩沖區(qū)中分配的位置 中寫入屬于已經(jīng)被識別的一個目的號范圍的數(shù)據(jù),并且在所述臨時緩沖區(qū)中寫入 所述數(shù)據(jù)序列包含的不屬于任何所述目的號范圍的數(shù)據(jù);和當(dāng)所述目的緩沖區(qū)被指定時,從所述臨時緩沖區(qū)中讀出數(shù)據(jù),所述數(shù)據(jù)具有 屬于響應(yīng)所述目的緩沖區(qū)的指定而被識別的目的號范圍的序號,并且在與所述讀出的數(shù)據(jù)的序號相關(guān)聯(lián)的所述目的緩沖區(qū)中的分配的位置寫入所述讀出的數(shù)據(jù)。
全文摘要
一種設(shè)備包括接收數(shù)據(jù)序列的接收器;在數(shù)據(jù)存儲器中指定臨時緩沖區(qū)和在數(shù)據(jù)存儲器中指定目的緩沖區(qū)的指定單元;第一識別單元,依靠指定的目的緩沖區(qū)的大小識別目的號范圍以便該范圍跟蹤上一次被識別的范圍;寫入單元,在對應(yīng)于該數(shù)據(jù)的序號的目的緩沖區(qū)中寫入屬于該區(qū)域范圍中的一個范圍的數(shù)據(jù),并且在臨時緩沖區(qū)中寫入不屬于它的數(shù)據(jù);復(fù)制單元,從臨時緩沖區(qū)讀出屬于識別的范圍的數(shù)據(jù),并且在與該數(shù)據(jù)的序號相關(guān)聯(lián)的目的緩沖區(qū)中的區(qū)域中寫入該讀出的數(shù)據(jù)。
文檔編號H04L29/06GK101547153SQ20091013243
公開日2009年9月30日 申請日期2009年3月26日 優(yōu)先權(quán)日2008年3月26日
發(fā)明者田中信吾 申請人:株式會社東芝
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
武宁县| 开原市| 滁州市| 阿克| 宣恩县| 刚察县| 边坝县| 天等县| 湖南省| 武川县| 任丘市| 湘潭县| 韩城市| 海盐县| 临猗县| 怀安县| 九江市| 安溪县| 辉南县| 仙居县| 陆良县| 房产| 武功县| 梁平县| 夏邑县| 福泉市| 东乡族自治县| 千阳县| 鲁山县| 家居| 游戏| 奉新县| 铁力市| 台中县| 中卫市| 无锡市| 武威市| 兴文县| 全州县| 丹江口市| 磐石市|