TWI763131B - 網路介面裝置、包含該網路介面裝置之電子裝置,及網路介面裝置的操作方法 - Google Patents
網路介面裝置、包含該網路介面裝置之電子裝置,及網路介面裝置的操作方法 Download PDFInfo
- Publication number
- TWI763131B TWI763131B TW109140340A TW109140340A TWI763131B TW I763131 B TWI763131 B TW I763131B TW 109140340 A TW109140340 A TW 109140340A TW 109140340 A TW109140340 A TW 109140340A TW I763131 B TWI763131 B TW I763131B
- Authority
- TW
- Taiwan
- Prior art keywords
- packet
- information
- network packets
- interface device
- network
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 15
- 230000004044 response Effects 0.000 claims description 4
- 239000000872 buffer Substances 0.000 description 57
- 238000010586 diagram Methods 0.000 description 10
- 230000008707 rearrangement Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 5
- 238000011017 operating method Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9057—Arrangements for supporting packet reassembly or resequencing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/34—Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/624—Altering the ordering of packets in an individual queue
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/72—Admission control; Resource allocation using reservation actions during connection setup
- H04L47/722—Admission control; Resource allocation using reservation actions during connection setup at the destination endpoint, e.g. reservation of terminal resources or buffer space
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
本案揭露了網路介面裝置、包含該網路介面裝置之電子裝置,及網路介面裝置的操作方法。網路介面裝置耦接主機,主機包含儲存電路。網路介面裝置包含互相耦接之封包接收電路及處理電路。封包接收電路用來接收複數個網路封包。處理電路執行以下步驟:(A)解析網路封包,以得到網路封包之複數個順序編號;(B)基於順序編號排序網路封包以產生重新排序資訊;(C)將重新排序資訊附加於網路封包的其中之一,並產生封包順序資訊,或是產生包含重新排序資訊之封包順序資訊;(D)在儲存電路中儲存封包順序資訊;以及(E)發送中斷至主機。封包接收電路或處理電路於處理電路發送中斷之前將網路封包儲存至儲存電路。
Description
本案是關於無線網路,尤其是關於網路介面裝置及其操作方法。
圖1為習知電子裝置10的功能方塊圖。電子裝置10包含主機110及網路介面裝置120。主機110透過網路介面裝置120接收網路封包。主機110是硬體及軟體的組合,用來實現電子裝置10的主要功能。網路介面裝置120用來接收網路封包,並且將收到的網路封包提供給主機110。
當網路介面裝置120傳送給主機110的網路封包沒有按照發送的順序排列時(例如某些網路封包因為重新傳送而較晚被網路介面裝置120收到),主機110必須先重新排序(reorder)該些網路封包後才能對該些網路封包進行更進一步的處理(例如,將網路封包傳送到開放式系統互聯模型(Open System Interconnection Model,OSI模型)的上層)。然而,重新排序網路封包會增加主機的負擔,使主機的效能降低。
鑑於先前技術之不足,本案之一目的在於提供網路介面裝置、包含該網路介面裝置之電子裝置,及網路介面裝置的操作方法。
本案揭露一種網路介面裝置。網路介面裝置耦接主機,主機包含儲存電路。網路介面裝置包含封包接收電路以及處理電路。封包接收電路用來接收複數個網路封包。處理電路耦接封包接收電路,用來執行以下步驟:(A)解析網路封包,以得到網路封包之複數個順序編號;(B)基於順序編號排序網路封包以產生重新排序資訊;(C)將重新排序資訊附加於網路封包的其中之一,並產生封包順序資訊,或是產生包含重新排序資訊之封包順序資訊;(D)在儲存電路中儲存封包順序資訊;以及(E)發送中斷至主機。封包接收電路或處理電路於處理電路發送中斷之前將網路封包儲存至儲存電路。
本案另揭露一種電子裝置,包含主機及網路介面裝置。主機包含儲存電路及處理器。儲存電路用來儲存緩存清單及複數個網路封包,其中緩存清單列出複數個緩存地址。處理器用來產生或更新緩存清單。網路介面裝置耦接主機,包含封包接收電路及處理電路。封包接收電路用來接收網路封包。處理電路耦接封包接收電路,用來執行以下步驟:(A)解析網路封包,以得到網路封包之複數個順序編號;(B)基於順序編號排序網路封包以產生重新排序資訊;(C)將重新排序資訊附加於網路封包的其中之一,並產生封包順序資訊,或是產生包含重新排序資訊之封包順序資訊;(D)在儲存電路中儲存封包順序資訊;以及(E)發送中斷至主機。主機回應於中斷讀取封包順序資訊,並且基於封包順序資訊存取儲存電路以讀取網路封包。
本案另揭露一種網路介面裝置的操作方法。網路介面裝置耦接主機,主機包含儲存電路。網路介面裝置的操作方法包含:接收複數個網路封包;解析網路封包,以得到網路封包之複數個順序編號;基於順序編號排序網路封包以產生重新排序資訊;將重新排序資訊附加於網路封包的其中之一,並產生封包順序資訊,或是產生包含重新排序資訊之封包順序資訊;儲存網路封包至儲存電路;在儲存電路中儲存封包順序資訊;以及發送中斷至主機。
有關本案的特徵、實作與功效,茲配合圖式作實施例詳細說明如下。
以下說明內容之技術用語係參照本技術領域之習慣用語,如本說明書對部分用語有加以說明或定義,該部分用語之解釋係以本說明書之說明或定義為準。
本案之揭露內容包含網路介面裝置、包含該網路介面裝置之電子裝置,及網路介面裝置的操作方法。由於本案之網路介面裝置及電子裝置所包含之部分元件單獨而言可能為已知元件,因此在不影響該裝置實施例之充分揭露及可實施性的前提下,以下說明對於已知元件的細節將予以節略。此外,本案之網路介面裝置的操作方法的部分或全部流程可以是軟體及/或韌體之形式,並且可藉由本案之網路介面裝置或其等效裝置來執行,在不影響該方法實施例之充分揭露及可實施性的前提下,以下方法實施例之說明將著重於步驟內容而非硬體。
圖2為本案電子裝置20之一實施例的功能方塊圖。電子裝置20包含互相耦接的主機200及網路介面裝置300。舉例來說,電子裝置20可以是電腦(例如桌上型電腦、筆記型電腦、平板電腦)、可攜式電子裝置(例如筆記型電腦、平板電腦、手機)或無線存取點(wireless access point, WAP)。網路介面裝置300用來接收網路封包,而主機200則負責處理該些網路封包。主機200包含處理器210及儲存電路220(例如動態隨機存取記憶體)。儲存電路220包含封包緩存區222、緩存清單儲存區224、 緩存使用狀態儲存區226以及封包順序資訊儲存區228。網路介面裝置300包含互相耦接的處理電路310以及封包接收電路320。封包接收電路320包含緩衝電路322。網路介面裝置300可以是電子裝置20的網路介面卡(Network Interface Card, NIC)或網路介面晶片。封包接收電路320例如是Wifi媒體存取控制接收卸載引擎(Wifi MAC RX Offload Engine)。
處理器210與儲存電路220互相耦接。處理器210可以是具有程式執行能力的電路或電子元件,例如中央處理器、微處理器、微處理單元、數位訊號處理器,或其等效電路。儲存電路220儲存複數個程式碼或程式指令,處理器210藉由執行該些程式碼或程式指令來實現電子裝置20的主要功能。
圖3A~3J為本案的儲存電路220的部分儲存內容及封包資訊的實施例。封包緩存區222包含用來儲存網路封包的複數個封包緩存(buffer,即儲存空間或記憶體空間)。緩存清單414儲存於緩存清單儲存區224中,緩存清單414列出封包緩存區222中一些封包緩存的地址。緩存使用狀態416儲存於緩存使用狀態儲存區226中 ,緩存使用狀態416記錄封包緩存區222的封包緩存的使用狀態。圖4A~4B為本案網路介面裝置的操作方法之一實施例的流程圖,包含以下的步驟。
步驟S510:主機200的處理器210在儲存電路220(更明確地說,封包緩存區222)配置至少一個封包緩存,並且產生一個緩存清單414。如圖3A所示,緩存清單414列出16個緩存地址ADDR=0x100~0x1600(分別對應於索引IND=0~15),而緩存使用狀態416記錄緩存清單414所列之緩存地址ADDR所對應之封包緩存的使用狀態。寫入指標Pw由處理器210控制,指到最新配置的封包緩存,而讀取指標Pr由處理電路310控制,指到最近一個被使用的地址。
步驟S515:處理器210更新緩存使用狀態416。如圖3A所示,因為處理器210在步驟S510配置對應於索引IND=0~15等16個封包緩存,所以寫入指標Pw指到索引IND=15。
步驟S520:網路介面裝置300的處理電路310複製部分的緩存使用狀態416到重新排列緩存(reorder buffer)422。如圖3A所示,重新排列緩存422列出索引IND=0~5等6個封包緩存。在將索引IND=0~5等6個封包緩存被複製到重新排列緩存422之後,處理電路310控制讀取指標Pr指到索引IND=5(緩存使用狀態416中已複製到重新排列緩存422的緩存地址ADDR以刪除線表示)。
步驟S522:網路介面裝置300的處理電路310從重新排列緩存422中決定一當前緩存地址424。當前緩存地址424對應於緩存清單414所列出之封包緩存的其中之一,如圖3A所示,當前緩存地址424為0x100(即緩存清單414中對應於索引IND=0的地址)。
在一些實施例中,重新排列緩存422及當前緩存地址424可以被省略;在此情況下,處理電路310直接以讀取指標Pr所指之地址作為當前緩存地址424,換言之,處理電路310直接基於讀取指標Pr的位置來決定當前緩存地址424。
步驟S525:封包接收電路320接收網路封包,並且將收到的網路封包儲存在緩衝電路322。
步驟S530:處理電路310解析網路封包,以得到封包資訊426。如圖3A所示,封包資訊426記錄索引IND、封包的順序編號SeqNo以及封包的來源裝置編號STANo。由同一個裝置(例如電腦或手機)所發出的網路封包具有相同的來源裝置編號STANo。在圖3A的實施例中,索引IND=0的網路封包的順序編號SeqNo為0x00(即第0個封包),且來源裝置編號STANo=0。以下的說明以網路封包皆來自於同一個裝置(來源裝置編號STANo=0)為例,但本案不以此為限。
步驟S535:處理電路310將封包資訊426儲存於處理電路310的儲存電路(圖未示)中。
步驟S540:網路介面裝置300將緩衝電路322中的網路封包儲存至主機200的儲存電路220的當前緩存地址424所對應的封包緩存中。在一些實施例中,封包接收電路320直接將暫存於緩衝電路322中的網路封包寫入封包緩存區222。在其他的實施例中,處理電路310從緩衝電路322讀取網路封包,然後將該網路封包寫入封包緩存區222。
步驟S545:網路介面裝置300的處理電路310更新緩存使用狀態416、重新排列緩存422及當前緩存地址424。在緩存地址ADDR=0x100的封包緩存被使用後(在步驟S540被存入網路封包後),處理電路310執行以下的操作:(1)基於讀取指標Pr的位置在緩存使用狀態416中讀取一個緩存地址ADDR(即索引IND=6之緩存地址ADDR=0x700),然後更新讀取指標Pr的位置;(2)將已被使用的緩存地址ADDR(即0x100)從重新排列緩存422中移除,並且將剛讀取的緩存地址ADDR(即0x700)複製到重新排列緩存422中;以及(3)根據重新排列緩存422的內容更新當前緩存地址424,即,從重新排列緩存422中選取其中一個緩存地址ADDR(例如最小的緩存地址ADDR)作為當前緩存地址424。更新後的緩存使用狀態416、重新排列緩存422及當前緩存地址424如圖3B所示。
步驟S550:處理電路310判斷封包資訊426的筆數是否達到門檻值且沒有遺失的封包。舉例來說,假設門檻值為4,則當封包資訊426中資料的筆數大於等於4,且封包資訊426中的順序編號SeqNo為連續,則處理電路310執行步驟S560(圖4B),否則執行步驟S555。
步驟S555:處理電路310判斷是否經過預設時間(即,是否發生逾時)。處理電路310基於一計時器或計數器執行步驟S555。當步驟S555的判斷為否,則流程回到步驟S522以繼續接收下一個網路封包。當步驟S555的判斷為是(即發生逾時),處理電路310執行步驟S560。
如圖3A之封包資訊426所示,由於暫存的封包資訊的筆數尚未達到門檻值(假設門檻值為4)且還沒有經過預設時間,所以處理電路310又執行3次的步驟S525至S555,以分別接收順序編號SeqNo為0x02、0x03及0x01的3個網路封包(分別儲存於緩存地址ADDR=0x200、0x300及0x400,緩存使用狀態416、重新排列緩存422、當前緩存地址424及封包資訊426的變化如圖3B至3D所示)。如圖3D所示,此時暫存的封包資訊的筆數已達到門檻值(假設門檻值為4)且沒有遺失的封包(沒有遺失的封包意謂封包資訊426中的封包的順序編號SeqNo為連續(即0x00至0x03)),因此處理電路310判斷步驟S550為是,而往下執行步驟S560。
步驟S560:網路介面裝置300的處理電路310基於封包資訊426排序已收到的網路封包以產生重新排序資訊428。處理電路310基於任意的排序演算法及順序編號SeqNo可以得知索引IND=0~3等4個網路封包的順序為索引IND=0、3、1及2。在圖3E的實施例中,處理電路310在重新排序資訊428記下順序編號SeqNo=0x00之網路封包的索引IND=0及來源裝置編號STANo=0。
步驟S565:網路介面裝置300的處理電路310將重新排序資訊428附加於已收到的網路封包的其中之一,並產生封包順序資訊(第一實施例),或是,處理電路310產生封包順序資訊,封包順序資訊包含重新排序資訊428(第二實施例)。
在第一實施例中,處理電路310將重新排序資訊428附加於重新排序資訊428所列出之網路封包的其中之一。在圖3E的例子中,處理電路310將重新排序資訊428附加於索引IND=0之網路封包(例如附加於網路封包的最前面或任意位置)。在第一實施例中,封包順序資訊可以不包含重新排序資訊428。在第一實施例中,附有重新排序資訊428之網路封包被儲存於目標緩存地址,且封包順序資訊包含該目標緩存地址,及/或對應於該目標緩存地址之索引IND。以圖3E的重新排序資訊428為例,目標緩存地址為0x100,因此封包順序資訊儲存「0x100」(即儲存緩存地址ADDR)及/或「0」(即儲存索引IND)。
步驟S570:網路介面裝置300的處理電路310在儲存電路220的封包順序資訊儲存區228中儲存封包順序資訊。
步驟S575:網路介面裝置300的處理電路310發送中斷至主機200以通知主機200網路封包已準備就緒(即處理器210可以開始處理該些網路封包)。
步驟S580:網路介面裝置300的處理電路310重置計時器或計數器,例如將計時器或計數器歸零。
步驟S585:主機200的處理器210回應於中斷從封包順序資訊儲存區228中讀取封包順序資訊,並且基於封包順序資訊存取儲存電路220的封包緩存區222以讀取網路封包。
若處理電路310在步驟S585中執行第一實施例,則,在步驟S585中,處理器210先讀取附有重新排序資訊428的網路封包,以取得重新排序資訊428,再基於重新排序資訊428讀取其他的網路封包。以圖3E為例,處理器210依據封包順序資訊的指示(索引IND=0及/或目標緩存地址=0x100)從緩存地址ADDR=0x100讀取附有重新排序資訊428的網路封包。因為目前的重新排序資訊428只列出一個網路封包(即對應於索引IND=0的網路封包),所以處理器210在本次的步驟S585中只讀取緩存地址ADDR=0x100的網路封包。
若處理電路310在步驟S585中執行第二實施例,則,在步驟S585中,處理器210讀取封包順序資訊後可以立即取得重新排序資訊428,然後基於重新排序資訊428讀取網路封包。
圖3F至圖3J接續於圖3E之後,以下以圖3F至圖3J所示之例子來進一步討論圖4A及圖4B的流程。
如圖3F所示,處理器210在封包緩存區222中配置緩存地址ADDR=0x1700的封包緩存,並且更新緩存清單414(將對應於索引IND=0的緩存地址ADDR更新為0x1700)(步驟S510),然後更新緩存使用狀態416(控制寫入指標Pw移到第一列,並且在索引IND的欄位及緩存地址ADDR的欄位中分別寫入「0」及「0x1700」)(步驟S515)。
如圖3G所示,處理電路310基於封包資訊426產生重新排序資訊428(即,根據順序編號SeqNo決定接下來的一個或多個索引IND或緩存地址ADDR)(步驟S560)、將重新排序資訊428附加於索引IND=3之網路封包(即儲存於緩存地址ADDR=0x400之網路封包)(步驟S565)、在儲存電路220的封包順序資訊儲存區228中儲存封包順序資訊(指示索引IND=3及/或目標緩存地址=0x400)(步驟S570),以及發送中斷(步驟S575)。然後處理器210執行步驟S585以讀取封包順序資訊以及基於封包順序資訊讀取儲存於緩存地址ADDR=0x400的網路封包。
如圖3H所示,處理器210在封包緩存區222中配置緩存地址ADDR=0x1800的封包緩存,並且更新緩存清單414(將索引IND=3的緩存地址ADDR更新為0x1800)(步驟S510),然後更新緩存使用狀態416(控制寫入指標Pw移到下一列,並且在索引IND的欄位及緩存地址ADDR的欄位中分別寫入「3」及「0x1800」)(步驟S515)。
如圖3I所示,一方面,網路介面裝置300的處理電路310執行兩次步驟S522至步驟S555以接收索引IND=4及5等兩個網路封包,然後基於封包資訊426產生重新排序資訊428(步驟S560)、將重新排序資訊428附加於索引IND=1、2或4之網路封包(步驟S565)、在儲存電路220的封包順序資訊儲存區228中儲存封包順序資訊(如果處理電路310將重新排序資訊428附加於索引IND=1之封包,則目標緩存地址為0x200(對應於索引IND=1);如果處理電路310將重新排序資訊428附加於索引IND=2之封包,則目標緩存地址為0x300(對應於索引IND=2);如果處理電路310將重新排序資訊428附加於索引IND=4之封包,則目標緩存地址為0x500(對應於索引IND=4))(步驟S570),以及發送中斷(步驟S575)。
繼續參考圖3I,另一方面,處理器210回應於中斷執行步驟S585以讀取封包順序資訊,並且基於封包順序資訊讀取儲存於緩存地址ADDR=0x200、0x300或0x500的網路封包。在圖3I的例子中,由於重新排序資訊428包含3個索引IND,所以處理器210在讀取儲存於目標緩存地址的網路封包之後,會基於重新排序資訊428繼續讀取另外兩個網路封包。舉例來說,如果處理電路310將重新排序資訊428附加於索引IND=1之封包,則處理器210在讀取緩存地址ADDR=0x200的網路封包之後會便會取得重新排序資訊428,然後處理器210基於重新排序資訊428繼續讀取緩存地址ADDR=0x300及0x500的網路封包。
如圖3J所示,一方面,網路介面裝置300的處理電路310複製部分的緩存使用狀態416(即索引IND=10,緩存地址ADDR=0x1100)到重新排列緩存422(步驟S520)。另一方面,處理器210在封包緩存區222中配置3個封包緩存(因為處理器210在前一次的步驟S585中讀取分別對應到索引IND=1、2及4等3個網路封包,),並且更新緩存清單414(將索引IND=1、2及4的緩存地址ADDR分別更新為0x1900、0x2000及0x2100)(步驟S510),然後更新緩存使用狀態416(控制寫入指標Pw往下移動3列,分別在索引IND的欄位寫入「1」、「2」及「4」,以及分別在緩存地址ADDR的欄位寫入「0x1900」、「0x2000」及「0x2100」)(步驟S515)。
重覆執行圖4A及圖4B的步驟,電子裝置20即可接收及處理更多的網路封包。
圖5顯示本案之網路封包的資料安排的一實施例的示意圖。網路封包610為附有重新排序資訊的網路封包,而網路封包620為未附有重新排序資訊的網路封包。在本例中重新排序資訊被安排在網路封包的頭部,然而,重新排序資訊亦可被安排在網路封包的中段或尾部。
圖6顯示本案網路介面裝置300之處理電路310的一實施例的功能方塊圖。處理電路310包含計算電路311、記憶體312以及重新排序模組313。計算電路311可以是具有程式執行能力的電路或電子元件,例如中央處理器、微處理器、微處理單元、數位訊號處理器,或其等效電路。記憶體312儲存複數個程式碼或程式指令,計算電路311藉由執行該些程式碼或程式指令來實現處理電路310的部分功能。
在一些實施例中,重新排序模組313用來執行步驟S530以及更新緩存使用狀態416(即部分的步驟S545),而計算電路311執行步驟S520、S522、S535、S540、部分的S545、S550、S555、S560、S565、S570、S575以及S580。
在一些實施例中,計算電路311得到重新排序資訊428後(步驟S560),將重新排序資訊428提供給重新排序模組313,重新排序模組313再執行步驟S565、S570及S575。
在一些實施例中,重新排序模組313可以由電路(例如邏輯電路)實作。本技術領域具有通常知識者可以根據以上的討論來實現重新排序模組313,故不再贅述。
圖7顯示本案網路介面裝置300之處理電路310的另一實施例的功能方塊圖。處理電路310包含計算電路316及記憶體317。計算電路316可以是具有程式執行能力的電路或電子元件,例如中央處理器、微處理器、微處理單元、數位訊號處理器,或其等效電路。記憶體317儲存複數個程式碼或程式指令,計算電路316藉由執行該些程式碼或程式指令來實現處理電路310的功能。
關於步驟S555,以下配合圖8有進一步的討論。圖8顯示9個網路封包801(順序編號SeqNo為0x00至0x03、0x05至0x08及0x10),順序編號SeqNo為0x04及0x09的網路封包遺失。計算電路311於時間點t1曾發出中斷,然後重覆執行步驟S522至S555直到於時間點t2發生逾時(即步驟S555的判斷為是)。在時間點t1至t2之間,網路介面裝置300共收到順序編號SeqNo為0x03、0x05、0x06及0x07等4個網路封包801,但沒有收到順序編號SeqNo為0x04的網路封包。由於已逾時,所以即使有遺失的網路封包,網路介面裝置300仍然執行步驟S560以產生重新排序資訊428,以及執行步驟S575以在時間點t2發出中斷。處理器210在接下來的步驟S585回應該中斷從儲存電路220中讀取順序編號SeqNo為0x03、0x05、0x06及0x07等4個網路封包。然而,因為有遺失的網路封包,所以該重新排序資訊428指示順序編號SeqNo不連續的網路封包,即,指示順序編號SeqNo為0x03、0x05、0x06及0x07等4個網路封包。
在一些實施例中,緩存清單414、緩存使用狀態416、重新排列緩存422、當前緩存地址424、封包資訊426及重新排序資訊428只包含緩存地址ADDR但不包含索引IND,或是以相對應的緩存地址ADDR取代索引IND。在此情況下,圖3I的內容變成如圖9所示的內容,而前述之操作中與索引IND有關的部分皆以相對應的緩存地址ADDR取代。
綜上所述,本案的網路介面裝置300具有重新排序網路封包的功能,如此一來,主機200不需要耗費運算資源來重新排序網路封包。再者,因為網路介面裝置300將網路封包儲存於主機200的儲存電路220,所以網路介面裝置300可以節省記憶體(例如緩衝電路322)的用量。
請注意,前揭圖示中,元件之形狀、尺寸、比例以及步驟之順序等僅為示意,係供本技術領域具有通常知識者瞭解本案之用,非用以限制本案。
雖然本案之實施例如上所述,然而該些實施例並非用來限定本案,本技術領域具有通常知識者可依據本案之明示或隱含之內容對本案之技術特徵施以變化,凡此種種變化均可能屬於本案所尋求之專利保護範疇,換言之,本案之專利保護範圍須視本說明書之申請專利範圍所界定者為準。
10,20:電子裝置
110,200:主機
120,300:網路介面裝置
210:處理器
220:儲存電路
222:封包緩存區
224:緩存清單儲存區
226:緩存使用狀態儲存區
228:封包順序資訊儲存區
310:處理電路
311,316:計算電路
312,317:記憶體
313:重新排序模組
320:封包接收電路
322:緩衝電路
414:緩存清單
416:緩存使用狀態
422:重新排列緩存
424:當前緩存地址
426:封包資訊
428:重新排序資訊
ADDR:緩存地址
IND:索引
Pw:寫入指標
Pr:讀取指標
610,620,801:網路封包
t1,t2:時間點
S510~S585:步驟
圖1為習知電子裝置的功能方塊圖;
圖2為本案電子裝置之一實施例的功能方塊圖;
圖3A~3J為本案的儲存電路的部分儲存內容及封包資訊的實施例;
圖4A~4B為本案發明網路介面裝置的操作方法之一實施例的流程圖;
圖5為本案之網路封包的資料安排的一實施例的示意圖;
圖6為本案網路介面裝置之處理電路的一實施例的功能方塊圖;
圖7為本案網路介面裝置之處理電路的另一實施例的功能方塊圖;
圖8顯示複數個網路封包及產生中斷的時間點;以及
圖9為本案的儲存電路的部分儲存內容及封包資訊的另一實施例。
20:電子裝置
200:主機
210:處理器
220:儲存電路
222:封包緩存區
224:緩存清單儲存區
226:緩存使用狀態儲存區
228:封包順序資訊儲存區
300:網路介面裝置
310:處理電路
320:封包接收電路
322:緩衝電路
Claims (10)
- 一種網路介面裝置,耦接一主機,該主機包含一儲存電路,該網路介面裝置包含: 一封包接收電路,用來接收複數個網路封包;以及 一處理電路,耦接該封包接收電路,用來執行以下步驟: (A) 解析該些網路封包,以得到該些網路封包之複數個順序編號; (B) 基於該些順序編號排序該些網路封包以產生一重新排序資訊; (C) 將該重新排序資訊附加於該些網路封包的其中之一,並產生一封包順序資訊,或是產生包含該重新排序資訊之該封包順序資訊; (D) 在該儲存電路中儲存該封包順序資訊;以及 (E) 發送一中斷至該主機; 其中,該封包接收電路或該處理電路於該處理電路發送該中斷之前將該些網路封包儲存至該儲存電路。
- 如請求項1之網路介面裝置,其中該儲存電路儲存一緩存清單及一緩存使用狀態,該緩存清單列出複數個緩存地址,該緩存使用狀態記錄該些緩存地址所對應之複數個緩存的一使用狀態。
- 如請求項2之網路介面裝置,其中該網路介面裝置基於該緩存使用狀態將該些網路封包儲存至該儲存電路,該處理電路包含: 一重新排序模組,耦接於該封包接收電路,用來執行步驟(A),以及更新該緩存使用狀態; 一記憶體,用來儲存複數個程式指令或程式碼;以及 一計算電路,耦接該重新排序模組及該記憶體,用來執行該些程式指令或程式碼以執行步驟(B)至步驟(E)。
- 如請求項2之網路介面裝置,其中該重新排序資訊包含該些緩存地址的至少其中一者。
- 如請求項2之網路介面裝置,其中該緩存清單包含對應於該些緩存地址的複數個索引,且該重新排序資訊包含對應於該些緩存地址的至少其中一者的該索引。
- 如請求項2之網路介面裝置,其中當該些網路封包的其中之一附有該重新排序資訊時,該封包順序資訊包含一目標緩存地址或對應於該目標緩存地址之一索引,且附有該重新排序資訊之該網路封包係儲存於該目標緩存地址。
- 如請求項1之網路介面裝置,其中當該些網路封包的其中之一附有該重新排序資訊時,該封包順序資訊不包含該重新排序資訊。
- 如請求項1之網路介面裝置,其中該處理電路更執行以下步驟: (F) 當逾時發生時,執行步驟(B)至步驟(E),其中該重新排序資訊指示順序編號不連續的該些網路封包。
- 一種電子裝置,包含: 一主機,包含: 一儲存電路,用來儲存一緩存清單及複數個網路封包,其中該緩存清單列出複數個緩存地址;以及 一處理器,用來產生或更新該緩存清單;以及 一網路介面裝置,耦接該主機,包含: 一封包接收電路,用來接收該些網路封包;以及 一處理電路,耦接該封包接收電路,用來執行以下步驟: (A) 解析該些網路封包,以得到該些網路封包之複數個順序編號; (B) 基於該些順序編號排序該些網路封包以產生一重新排序資訊; (C) 將該重新排序資訊附加於該些網路封包的其中之一,並產生一封包順序資訊,或是產生包含該重新排序資訊之該封包順序資訊; (D) 在該儲存電路中儲存一封包順序資訊;以及 (E) 發送一中斷至該主機; 其中,該主機回應於該中斷讀取該封包順序資訊,並且基於該封包順序資訊存取該儲存電路以讀取該些網路封包。
- 一種網路介面裝置的操作方法,該網路介面裝置耦接一主機,該主機包含一儲存電路,該操作方法包含: 接收複數個網路封包; 解析該些網路封包,以得到該些網路封包之複數個順序編號; 基於該些順序編號排序該些網路封包以產生一重新排序資訊; 將該重新排序資訊附加於該些網路封包的其中之一,並產生一封包順序資訊,或是產生包含該重新排序資訊之該封包順序資訊; 儲存該些網路封包至該儲存電路; 在該儲存電路中儲存該封包順序資訊;以及 發送一中斷至該主機。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW109140340A TWI763131B (zh) | 2020-11-18 | 2020-11-18 | 網路介面裝置、包含該網路介面裝置之電子裝置,及網路介面裝置的操作方法 |
| US17/409,838 US11757800B2 (en) | 2020-11-18 | 2021-08-24 | Network interface device, electronic device containing same, and operation method of the network interface device |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW109140340A TWI763131B (zh) | 2020-11-18 | 2020-11-18 | 網路介面裝置、包含該網路介面裝置之電子裝置,及網路介面裝置的操作方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TWI763131B true TWI763131B (zh) | 2022-05-01 |
| TW202222098A TW202222098A (zh) | 2022-06-01 |
Family
ID=81586954
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW109140340A TWI763131B (zh) | 2020-11-18 | 2020-11-18 | 網路介面裝置、包含該網路介面裝置之電子裝置,及網路介面裝置的操作方法 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US11757800B2 (zh) |
| TW (1) | TWI763131B (zh) |
Families Citing this family (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11979340B2 (en) * | 2017-02-12 | 2024-05-07 | Mellanox Technologies, Ltd. | Direct data placement |
| US11252464B2 (en) | 2017-06-14 | 2022-02-15 | Mellanox Technologies, Ltd. | Regrouping of video data in host memory |
| US12216575B2 (en) | 2022-07-06 | 2025-02-04 | Mellanox Technologies, Ltd | Patterned memory-network data transfer |
| US12135662B2 (en) | 2022-07-06 | 2024-11-05 | Mellanox Technologies, Ltd. | Patterned direct memory access (DMA) |
| US12137141B2 (en) | 2022-07-06 | 2024-11-05 | Mellanox Technologies, Ltd. | Patterned remote direct memory access (RDMA) |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN100486134C (zh) * | 2005-10-14 | 2009-05-06 | 华为技术有限公司 | 无线网络控制器对基站发送的数据进行重排序的方法 |
| CN103870536A (zh) * | 2012-12-18 | 2014-06-18 | Sap股份公司 | 用于内存数据库处理的系统和方法 |
| CN106471474A (zh) * | 2014-06-02 | 2017-03-01 | 美光科技公司 | 用于在可扩展存储器系统协议中传输包的系统及方法 |
| CN111566646A (zh) * | 2018-01-05 | 2020-08-21 | 三星电子株式会社 | 用于对数据进行混淆和解码的电子装置以及用于控制该电子装置的方法 |
Family Cites Families (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2001189755A (ja) * | 1999-12-28 | 2001-07-10 | Toshiba Corp | パケット通信装置、パケット通信方法および記憶媒体 |
| US7187689B1 (en) * | 2001-10-29 | 2007-03-06 | Juniper Networks, Inc. | Self-cleaning mechanism for error recovery |
| US7349398B1 (en) * | 2001-12-31 | 2008-03-25 | Redback Networks, Inc. | Method and apparatus for out-of-order processing of packets |
| US6735647B2 (en) * | 2002-09-05 | 2004-05-11 | International Business Machines Corporation | Data reordering mechanism for high performance networks |
| EP1616415B1 (en) * | 2003-04-22 | 2009-06-03 | Agere Systems Inc. | Method and apparatus for shared multi-bank memory |
| JP4379800B2 (ja) * | 2004-07-12 | 2009-12-09 | ソニー・エリクソン・モバイルコミュニケーションズ株式会社 | 受信装置およびそのメモリ解放方法 |
| US10073635B2 (en) * | 2014-12-01 | 2018-09-11 | Micron Technology, Inc. | Multiple endianness compatibility |
| US10069766B2 (en) * | 2015-07-07 | 2018-09-04 | TransferSoft, Inc. | Accelerated data transfer using thread pool for parallel operations |
| CN108234550B (zh) * | 2016-12-14 | 2020-06-12 | 中国移动通信有限公司研究院 | 一种信息发送方法、信息接收方法及pdcp实体 |
| US10645033B2 (en) * | 2017-03-27 | 2020-05-05 | Mellanox Technologies Tlv Ltd. | Buffer optimization in modular switches |
-
2020
- 2020-11-18 TW TW109140340A patent/TWI763131B/zh active
-
2021
- 2021-08-24 US US17/409,838 patent/US11757800B2/en active Active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN100486134C (zh) * | 2005-10-14 | 2009-05-06 | 华为技术有限公司 | 无线网络控制器对基站发送的数据进行重排序的方法 |
| CN103870536A (zh) * | 2012-12-18 | 2014-06-18 | Sap股份公司 | 用于内存数据库处理的系统和方法 |
| CN106471474A (zh) * | 2014-06-02 | 2017-03-01 | 美光科技公司 | 用于在可扩展存储器系统协议中传输包的系统及方法 |
| CN111566646A (zh) * | 2018-01-05 | 2020-08-21 | 三星电子株式会社 | 用于对数据进行混淆和解码的电子装置以及用于控制该电子装置的方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| US11757800B2 (en) | 2023-09-12 |
| US20220158955A1 (en) | 2022-05-19 |
| TW202222098A (zh) | 2022-06-01 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI763131B (zh) | 網路介面裝置、包含該網路介面裝置之電子裝置,及網路介面裝置的操作方法 | |
| JP5629819B2 (ja) | 通信ポートに可変クロックゲーティングヒステリシスを使用する装置および方法 | |
| US11003388B2 (en) | Prefetch signaling in memory system or sub system | |
| CN113746893B (zh) | 一种基于fpga的智能网卡数据转发方法、系统及终端 | |
| WO2014094419A1 (zh) | 数据缓存处理方法、装置以及系统 | |
| WO2013109640A1 (en) | Techniques for command validation for access to a storage device by a remote client | |
| CN103902473B (zh) | 一种数据处理方法及数据缓存系统 | |
| CN108780420A (zh) | 在基于处理器的系统中的存储器中的经压缩存储器线的基于优先级的存取 | |
| WO2023155698A1 (zh) | 基于半虚拟化设备的数据处理方法、装置和系统 | |
| WO2024187779A1 (zh) | 业务数据存储方法、装置、计算机设备和存储介质 | |
| US10095765B1 (en) | Method and apparatus for a hardware-implemented AVL tree module | |
| US9836491B1 (en) | Method and apparatus for hardware-implemented AVL tree updates | |
| WO2022001133A1 (zh) | 一种提升软拷贝读性能的方法、系统、终端及存储介质 | |
| US20200349069A1 (en) | Garbage Data Scrubbing Method, and Device | |
| CN108090018A (zh) | 数据交换方法及系统 | |
| WO2021143049A1 (zh) | 一种读写方法、装置和电子设备及可读存储介质 | |
| CN112433839B (zh) | 实现网络芯片高速调度的方法、设备及存储介质 | |
| CN114615219B (zh) | 网络接口装置、电子装置以及网络接口装置的操作方法 | |
| WO2025200601A1 (zh) | 一种数据处理系统、方法、装置、设备及介质 | |
| US20160037382A1 (en) | Just in time packet body provision for wireless transmission | |
| CN117312197A (zh) | 报文处理方法、装置、电子设备及非易失性存储介质 | |
| TWI742565B (zh) | 記憶體裝置、電子裝置以及與其相關的讀取方法 | |
| CN115291801B (zh) | 数据处理方法、装置、存储介质及电子装置 | |
| WO2020124609A1 (zh) | 一种处理芯片、方法及相关设备 | |
| CN120909708B (zh) | 一种描述符重排序方法及模块、数据处理单元 |