鏈表處理裝置、鏈表處理方法及相關(guān)網(wǎng)絡(luò)交換的制造方法
【專利摘要】本發(fā)明提供一種鏈表處理裝置、鏈表處理方法及網(wǎng)絡(luò)交換機(jī)。鏈表處理裝置包含存儲裝置以及鏈表控制器,鏈表控制器用于設(shè)置鏈表信息以及將鏈表信息寫入存儲裝置,以在存儲裝置中創(chuàng)建鏈表;其中鏈表包含多個節(jié)點(diǎn),每一節(jié)點(diǎn)具有下一節(jié)點(diǎn)地址欄,鏈表信息包含數(shù)據(jù)模式,數(shù)據(jù)模式用于指示鏈表的結(jié)尾以及輔助信息,并且鏈表控制器將數(shù)據(jù)模式儲存到鏈表的鏈表尾的下一節(jié)點(diǎn)地址欄。本發(fā)明的鏈表處理裝置、鏈表處理方法及網(wǎng)絡(luò)交換機(jī)可提供共享鏈表尾架構(gòu),充分使用存儲空間。
【專利說明】鏈表處理裝置、鏈表處理方法及相關(guān)網(wǎng)絡(luò)交換機(jī) 【【技術(shù)領(lǐng)域】】
[0001] 本發(fā)明有關(guān)于鏈表數(shù)據(jù)結(jié)構(gòu)(link list data structure),更具體來說,有關(guān)于使 用鏈表的鏈表尾(link-tail)儲存數(shù)據(jù)模式(data pattern)的裝置和方法,其中數(shù)據(jù)模式 指示鏈表的結(jié)尾以及輔助信息(auxiliary information)。 【【背景技術(shù)】】
[0002] 網(wǎng)絡(luò)交換機(jī)(network switch)是鏈接不同網(wǎng)絡(luò)設(shè)備的計算機(jī)網(wǎng)絡(luò)設(shè)備。舉例來 說,網(wǎng)絡(luò)交換機(jī)接收與其連接的第一網(wǎng)絡(luò)設(shè)備所產(chǎn)生的輸入封包,并將從已接收的封包導(dǎo) 出的修改后封包或者未修改封包僅傳輸至第二網(wǎng)絡(luò)設(shè)備,其中所述已接收的封包原本是由 第二網(wǎng)絡(luò)設(shè)備接收。一般來說,已接收的封包由多個數(shù)據(jù)塊組(datachunk)(亦即,多個單 元數(shù)據(jù)(cell data))組成。因此,從已接收的封包中導(dǎo)出的封包也由多個數(shù)據(jù)塊組(亦即, 多個單元數(shù)據(jù))組成。網(wǎng)絡(luò)交換機(jī)具有用于緩沖導(dǎo)出封包的數(shù)據(jù)塊組的封包緩沖器。然而, 封包緩沖器中的空閑可用存儲空間并不能確保是連續(xù)的。因此,導(dǎo)出封包的多個數(shù)據(jù)塊組 在被儲存入封包緩沖器中后,可能隨機(jī)位于封包緩沖器中。
[0003] 為有效管理封包緩沖器中的導(dǎo)出封包的多個數(shù)據(jù)塊組,網(wǎng)絡(luò)交換機(jī)可使用鏈表。 基于鏈表數(shù)據(jù)結(jié)構(gòu),鏈表包含順序關(guān)聯(lián)的多個節(jié)點(diǎn),其中每一節(jié)點(diǎn)與封包緩沖器中的導(dǎo)出 封包的多個數(shù)據(jù)塊組之一相關(guān),并且具有下一節(jié)點(diǎn)地址欄,用于儲存下一節(jié)點(diǎn)的地址。關(guān) 于鏈表的鏈表尾節(jié)點(diǎn),由于鏈表尾節(jié)點(diǎn)是鏈表的最后一個節(jié)點(diǎn),并不存在與鏈表尾節(jié)點(diǎn)級 聯(lián)的下一節(jié)點(diǎn)。故在常規(guī)設(shè)計中,鏈表尾節(jié)點(diǎn)的下一節(jié)點(diǎn)地址欄將儲存指向空地址(null address)的空指針(null pointer),從而在封包傳輸期間,當(dāng)封包傳輸電路讀取鏈表時,告 知封包傳輸電路鏈表的結(jié)尾。由于鏈表尾節(jié)點(diǎn)指向"零"(null),鏈表尾的下一節(jié)點(diǎn)地址欄 被浪費(fèi)掉了。 【
【發(fā)明內(nèi)容】
】
[0004] 有鑒于此,本發(fā)明特提供以下技術(shù)方案:
[0005] 本發(fā)明實(shí)施例提供一種鏈表處理裝置,包含存儲裝置以及鏈表控制器。鏈表控制 器用于設(shè)置鏈表信息以及將鏈表信息寫入存儲裝置,以在存儲裝置中創(chuàng)建鏈表;其中鏈表 包含多個節(jié)點(diǎn),每一節(jié)點(diǎn)具有下一節(jié)點(diǎn)地址欄,鏈表信息包含數(shù)據(jù)模式,數(shù)據(jù)模式用于指示 鏈表的結(jié)尾以及輔助信息,以及鏈表控制器將數(shù)據(jù)模式儲存到鏈表的鏈表尾節(jié)點(diǎn)的下一節(jié) 點(diǎn)地址欄。
[0006] 本發(fā)明實(shí)施例另提供一種鏈表處理方法,包含設(shè)置鏈表信息,其中鏈表信息包含 數(shù)據(jù)模式,數(shù)據(jù)模式用于指示鏈表的結(jié)尾以及輔助信息,以及將鏈表信息寫入存儲裝置,以 在存儲裝置中創(chuàng)建鏈表;其中鏈表包含多個節(jié)點(diǎn),每一節(jié)點(diǎn)具有下一節(jié)點(diǎn)地址欄,以及述數(shù) 據(jù)模式被寫入鏈表的鏈表尾節(jié)點(diǎn)的下一節(jié)點(diǎn)地址欄。
[0007] 本發(fā)明實(shí)施例又提供一種網(wǎng)絡(luò)交換機(jī),包含封包接收電路、鏈表處理裝置以及封 包傳輸電路。封包接收電路用于接收輸入封包,以及從已接收的輸入封包中導(dǎo)出多個第一 數(shù)據(jù)塊組;鏈表處理裝置,包含存儲裝置以及鏈表控制器,鏈表控制器用于將鏈表信息寫 入存儲裝置,以在存儲裝置中創(chuàng)建鏈表,其中鏈表包含與多個第一數(shù)據(jù)塊組分別相關(guān)的多 個節(jié)點(diǎn),每一節(jié)點(diǎn)具有下一節(jié)點(diǎn)地址欄,鏈表信息包含數(shù)據(jù)模式,數(shù)據(jù)模式用于指示鏈表的 結(jié)尾以及輔助信息,以及鏈表控制器將數(shù)據(jù)模式儲存到鏈表的鏈表尾節(jié)點(diǎn)的下一節(jié)點(diǎn)地址 欄;封包傳輸電路用于依據(jù)鏈表從多個第一數(shù)據(jù)塊組導(dǎo)出輸出封包的多個第二數(shù)據(jù)塊組, 以及傳輸輸出封包,其中當(dāng)產(chǎn)生輸出封包時,封包傳輸電路參考由鏈表尾節(jié)點(diǎn)指示的輔助 信息執(zhí)行封包處理。
[0008] 以上所述的鏈表處理裝置、鏈表處理方法及網(wǎng)絡(luò)交換機(jī)可提供共享鏈表尾架構(gòu), 充分使用存儲空間。 【【專利附圖】
【附圖說明】】
[0009] 圖1是依據(jù)本發(fā)明一實(shí)施例的網(wǎng)絡(luò)交換機(jī)的示意圖。
[0010] 圖2是依據(jù)本發(fā)明一實(shí)施例的圖1中的網(wǎng)絡(luò)交換機(jī)的運(yùn)行方案示意圖。
[0011] 圖3是圖1中的封包緩沖器及存儲裝置的數(shù)據(jù)存儲狀態(tài)的示意圖。
[0012] 圖4為依據(jù)本發(fā)明的另一實(shí)施例的網(wǎng)絡(luò)交換機(jī)的示意圖。
[0013] 圖5為依據(jù)本發(fā)明一實(shí)施例的產(chǎn)生自鏈表控制器的數(shù)據(jù)模式的示意圖。
[0014] 圖6是依據(jù)本發(fā)明一實(shí)施例的圖4中的網(wǎng)絡(luò)交換機(jī)的運(yùn)行方案示意圖。
[0015] 圖7是圖4中的封包緩沖器及存儲裝置的數(shù)據(jù)存儲狀態(tài)的示意圖。 【【具體實(shí)施方式】】
[0016] 在說明書及權(quán)利要求書當(dāng)中使用了某些詞匯來指稱特定的組件。所屬領(lǐng)域中的 技術(shù)人員應(yīng)可理解,制造商可能會用不同的名詞來稱呼同樣的組件。本說明書及權(quán)利要求 書并不以名稱的差異來作為區(qū)分組件的方式,而是以組件在功能上的差異來作為區(qū)分的基 準(zhǔn)。在通篇說明書及權(quán)利要求書當(dāng)中所提及的「包含」是開放式的用語,故應(yīng)解釋成「包含 但不限定于」。另外,「耦接」一詞在此包含任何直接及間接的電氣連接手段。因此,若文中 描述第一裝置耦接于第二裝置,則代表第一裝置可直接電氣連接于第二裝置,或透過其它 裝置或連接手段間接地電氣連接至第二裝置。
[0017] 本發(fā)明主要設(shè)想之一是使用鏈表尾節(jié)點(diǎn)的下一節(jié)點(diǎn)地址欄來儲存輔助信息。因 此,除指示鏈表的結(jié)尾之外,鏈表尾節(jié)點(diǎn)也提供與輸出封包的封包處理相關(guān)聯(lián)的附加信息 (additional information)(例如,控制信息或者數(shù)據(jù)信息)。簡言之,本發(fā)明提供共享鏈表 尾架構(gòu),以充分使用由鏈表尾節(jié)點(diǎn)占據(jù)的存儲空間,從而節(jié)約原被要求用于緩沖封包處理 相關(guān)信息(例如,控制信息或者數(shù)據(jù)信息)的附加存儲空間。共享鏈表尾架構(gòu)進(jìn)一步的細(xì) 節(jié)描述如下。
[0018] 圖1是依據(jù)本發(fā)明一實(shí)施例的網(wǎng)絡(luò)交換機(jī)的示意圖。網(wǎng)絡(luò)交換機(jī)100是因特網(wǎng)/ 內(nèi)部網(wǎng)設(shè)備,并且包含封包接收電路102,耦接于封包接收電路102的鏈表處理裝置104,耦 接于封包接收電路102以及鏈表處理裝置104的封包傳輸電路106,以及耦接于封包接收 電路102及封包傳輸電路106之間的封包轉(zhuǎn)發(fā)(packet forward)電路108。封包接收電路 102包含接收單元112、封包緩沖器114以及緩沖器管理單元118。鏈表處理裝置104包含 鏈表控制器122以及存儲裝置124。請注意,圖1中僅繪示了與本發(fā)明相關(guān)的元件。在實(shí)踐 中,網(wǎng)絡(luò)交換機(jī)100可能包含附加的元件以支持其他功能。接收單元112用于接收產(chǎn)生自 源網(wǎng)絡(luò)設(shè)備的輸入封包P_IN,以及自接收到的輸入封包P_IN導(dǎo)出多個數(shù)據(jù)塊組(單元數(shù) 據(jù))116,其中源網(wǎng)絡(luò)設(shè)備連接于網(wǎng)絡(luò)交換機(jī)100。舉例來說,輸入封包P_IN由多個數(shù)據(jù)塊組 116組成,其中數(shù)據(jù)塊組116由接收單元112相繼接收,并且每一數(shù)據(jù)塊組116攜帶一個單 元數(shù)據(jù)。緩沖器管理單元118用于管理封包緩沖器114的緩沖器存儲空間。舉例來說,緩 沖器管理單元118為已接收封包數(shù)據(jù)塊組分配封包緩沖器114中的空閑存儲空間,并且釋 放封包緩沖器114中由已傳輸封包數(shù)據(jù)塊組所占據(jù)的已使用存儲空間。因此,當(dāng)接收單元 112接收輸入封包P_IN的數(shù)據(jù)塊組時,緩沖器管理單元118在封包緩沖器114中動態(tài)分配 一空閑存儲空間,且接收單元112將已接收的數(shù)據(jù)塊組儲存于分配的空閑存儲空間中。在 本實(shí)施例中,在已接收的數(shù)據(jù)塊組被儲存于封包緩沖器114中之前,已接收的數(shù)據(jù)塊組未 作任何修改。
[0019] 緩沖器管理單元118進(jìn)一步傳輸已分配的存儲空間的位置信息至鏈表控制器 122。鏈表控制器122也具有儲存管理功能。基于已分配的存儲空間的位置信息,鏈表控制 器122在存儲裝置124中分配一個存儲空間,并且將信息儲存入已分配的存儲空間以創(chuàng)建 鏈表的一個節(jié)點(diǎn)126,其中已分配的存儲空間儲存數(shù)據(jù)塊組,節(jié)點(diǎn)126與儲存于封包緩沖器 114中的已接收的數(shù)據(jù)塊組相關(guān)。節(jié)點(diǎn)126包含數(shù)據(jù)欄與下一節(jié)點(diǎn)地址欄。在本實(shí)施例中, 儲存于封包緩沖器114中的多個數(shù)據(jù)塊組116以及存儲裝置124中創(chuàng)建的鏈表的多個節(jié)點(diǎn) 126之間存在一對一的映射關(guān)系。換言之,自輸入封包P_IN導(dǎo)出并儲存于封包緩沖器114 中的多個數(shù)據(jù)塊組分別與創(chuàng)建并儲存于存儲裝置124中的鏈表的多個節(jié)點(diǎn)相關(guān)聯(lián)。因此, 通過將鏈表從鏈表頭(link-head)節(jié)點(diǎn)(亦即,第一節(jié)點(diǎn))穿越(traversing)至鏈表尾節(jié) 點(diǎn)(亦即,最后節(jié)點(diǎn)),封包傳輸電路106可有序取出隨機(jī)儲存于封包緩沖器114中的數(shù)據(jù) 塊組以獲取輸出封包P_〇UT的多個數(shù)據(jù)塊組。此外,封包轉(zhuǎn)發(fā)電路108從接收單元112獲 取輸入封包P_IN的封包數(shù)據(jù),并提供封包目的信息至封包傳輸電路106。隨后,封包傳輸電 路106將輸出封包P_0UT傳輸至連接于網(wǎng)絡(luò)交換機(jī)100的目的網(wǎng)絡(luò)設(shè)備。
[0020] 輸出封包?_0瓜的數(shù)據(jù)塊組成功傳輸至目的網(wǎng)絡(luò)設(shè)備后,封包緩沖器114中由該 已傳輸?shù)臄?shù)據(jù)塊組所占據(jù)的已使用過的存儲空間可被釋放。從而,緩沖器管理單元118將 原本被分配給輸出封包P_〇UT的該已傳輸?shù)臄?shù)據(jù)塊組的存儲空間視為一空閑存儲空間。
[0021] 如圖1所示,鏈表節(jié)點(diǎn)架構(gòu)具有數(shù)據(jù)欄(data field)及下一節(jié)點(diǎn)地址欄。根據(jù)實(shí)際 設(shè)計考慮,每一節(jié)點(diǎn)126的數(shù)據(jù)欄可以是空的。在本實(shí)施例中,每一節(jié)點(diǎn)126的下一節(jié)點(diǎn)地 址欄被設(shè)計為用來記錄下一節(jié)點(diǎn)的地址。從而,儲存在存儲裝置124中的鏈表可被配置為 一個節(jié)點(diǎn)連接于單一的下一個節(jié)點(diǎn)。鏈表控制器122設(shè)置儲存于存儲裝置124中的鏈表信 息INF UST,其中鏈表信息INFUST可包含數(shù)據(jù)模式INF。,數(shù)據(jù)模式INF。被配置為指示鏈表的 結(jié)尾以及輔助信息(例如,控制信息)。鏈表控制器122將數(shù)據(jù)模式INF。儲存入鏈表的鏈 表尾節(jié)點(diǎn)的下一節(jié)點(diǎn)地址欄中。以此種方式,當(dāng)封包傳輸電路106從鏈表尾節(jié)點(diǎn)讀取出數(shù) 據(jù)模式INF。時,封包傳輸電路106不僅識別出當(dāng)前節(jié)點(diǎn)為鏈表的最后節(jié)點(diǎn),同時也獲得了 控制信息。當(dāng)產(chǎn)生輸出封包P_〇UT時,封包傳輸電路106參考鏈表尾節(jié)點(diǎn)指示的輔助信息 (例如,控制信息)執(zhí)行封包處理。
[0022] 如圖1所示,存儲裝置124至少包含位于第一地址范圍的第一存儲空間127及位 于第二地址范圍的第二存儲空間128。因此,并非存儲裝置124的所有存儲空間均用于儲 存鏈表。鏈表控制器122配置為將任一鏈表僅儲存于第一存儲空間127。請注意數(shù)據(jù)模式 INFC并非指向存儲裝置124的地址范圍(例如,第一地址范圍和第二地址范圍)之外的空 地址的空指針。在本實(shí)施例中,數(shù)據(jù)模式INF C具有與第二存儲空間128內(nèi)多個地址之一 相同的位模式(bit pattern)。亦即,與使用空地址(亦即,不存在于存儲裝置124中的地 址)的空指針相反,數(shù)據(jù)模式INFC被設(shè)置為與存儲裝置124中的一個未使用地址相同的位 模式。由于封包傳輸電路106知曉任一鏈表應(yīng)儲存于第一存儲空間127中,當(dāng)儲存于下一 節(jié)點(diǎn)地址欄的位模式超出第一存儲空間127的第一地址范圍時,封包傳輸電路106可以容 易的識別出鏈表尾節(jié)點(diǎn)。此外,當(dāng)偵測到儲存于鏈表節(jié)點(diǎn)的下一節(jié)點(diǎn)地址欄的位模式是位 于第二存儲空間128的第二地址范圍內(nèi)的未使用地址時,封包傳輸電路106更從鏈表節(jié)點(diǎn) 中獲取控制信息。舉例來說,控制信息用于指示輸入封包P_IN與鏈表尾節(jié)點(diǎn)相關(guān)的數(shù)據(jù)塊 組的接收錯誤。
[0023] 請一并參考圖2和圖3。圖2是依據(jù)本發(fā)明一實(shí)施例的圖1中的網(wǎng)絡(luò)交換機(jī)100 的運(yùn)行方案示意圖。圖3是圖1中的封包緩沖器114及存儲裝置124的數(shù)據(jù)存儲狀態(tài)的示 意圖。舉例來說,但并非本發(fā)明的限制,輸入封包P_IN是產(chǎn)生自連接于網(wǎng)絡(luò)交換機(jī)100的 源網(wǎng)絡(luò)設(shè)備的直通(cut-through)封包。故在輸入封包?_預(yù)所有的數(shù)據(jù)塊組(單元數(shù)據(jù)) 被接收之前,網(wǎng)絡(luò)交換機(jī)100便開始將輸出封包P_〇UT的數(shù)據(jù)塊組(單元數(shù)據(jù))傳輸至連 接于網(wǎng)絡(luò)交換機(jī)100的目的網(wǎng)絡(luò)設(shè)備。如圖2所示,封包接收電路102的接收單元112順 序接收輸入封包P_IN的數(shù)據(jù)塊組(單元數(shù)據(jù))RXD0_RXD4。當(dāng)接收單元112接收第一單元 數(shù)據(jù)RXD0,并且封包緩沖器114在地址5,10, 7和12具有空閑存儲空間時,接收單元112 將第一單元數(shù)據(jù)RXD0儲存于位于封包緩沖器114的地址5的存儲空間,而鏈表控制器122 因此使用位于存儲裝置124的地址5的存儲空間創(chuàng)建鏈表頭節(jié)點(diǎn)。第一單元數(shù)據(jù)RXD0被 儲存于封包緩沖器114之后,封包傳輸電路106立即自封包緩沖器114讀取第一單元數(shù)據(jù) RXD0,并將其作為輸出封包P_0UT的第一數(shù)據(jù)塊組(單元數(shù)據(jù))TXD0傳輸(亦即,RXD0 = TXD0)。
[0024] 當(dāng)接收單元112接收第二單元數(shù)據(jù)RXD1,且封包緩沖器114在地址10, 7和12具 有空閑存儲空間時,接收單元112將第二單元數(shù)據(jù)RXD1儲存于位于封包緩沖器114的地址 10的存儲空間,而鏈表控制器122因此使用位于存儲裝置124的地址10的存儲空間創(chuàng)建節(jié) 點(diǎn)0,并將地址10儲存入鏈表頭節(jié)點(diǎn)的下一節(jié)點(diǎn)地址欄,使得鏈表頭節(jié)點(diǎn)鏈接于節(jié)點(diǎn)0。類 似地,在第二單元數(shù)據(jù)RXD1被儲存于封包緩沖器114之后,封包傳輸電路106立即自封包 緩沖器114讀取第二單元數(shù)據(jù)RXD1,并將其作為輸出封包P_0UT的第二數(shù)據(jù)塊組(單元數(shù) 據(jù))TXD1 傳輸(亦即,RXD1 = TXD1)。
[0025] 關(guān)于之后的兩個單元數(shù)據(jù)RXD2和RXD3,接收單元112及鏈表控制器122同樣執(zhí) 行上述操作。故第三單元數(shù)據(jù)RXD2儲存于封包緩沖器114的地址7的存儲空間,而第四單 元數(shù)據(jù)RXD3儲存于封包緩沖器114的地址12的存儲空間。在存儲裝置124中,節(jié)點(diǎn)1和 2分別儲存于地址7和12,其中節(jié)點(diǎn)1鏈接于節(jié)點(diǎn)2,且節(jié)點(diǎn)2鏈接于節(jié)點(diǎn)3。
[0026] 當(dāng)接收單元112接收第五單元數(shù)據(jù)RXD4時,封包緩沖器114沒有可用于緩沖第五 單元數(shù)據(jù)RXD4的空閑存儲空間。故由于缺乏足夠存儲資源而發(fā)生寫錯誤。接收單元112不 將接收到的第五單元數(shù)據(jù)RXD4儲存于封包緩沖器114中。鏈表控制器122設(shè)置寫錯誤信 息作為數(shù)據(jù)模式INF。,并將數(shù)據(jù)模式INF。寫入節(jié)點(diǎn)2的下一節(jié)點(diǎn)地址欄,使得節(jié)點(diǎn)2被設(shè)置 為鏈表尾節(jié)點(diǎn),同時指示輸入封包P_IN的數(shù)據(jù)塊組的接收錯誤(亦即,第五單元數(shù)據(jù)RXD4 的接收錯誤)。當(dāng)封包傳輸電路106自節(jié)點(diǎn)2的下一節(jié)點(diǎn)地址欄讀取數(shù)據(jù)模式INFC時,將 得知封包被截斷。在本實(shí)施例中,封包傳輸電路106將一預(yù)設(shè)錯誤數(shù)據(jù)塊組TXD4附加至輸 出封包P_OUT。當(dāng)位于目的網(wǎng)絡(luò)設(shè)備的封包接收電路接收產(chǎn)生自網(wǎng)絡(luò)交換機(jī)100的輸出封 包P_OUT時,其將丟棄這個不完整的封包。
[0027] 在上述實(shí)施例中,儲存于鏈表尾節(jié)點(diǎn)的下一節(jié)點(diǎn)地址欄中的數(shù)據(jù)模式用于指示鏈 表的結(jié)尾以及輔助信息,其中輔助信息為控制信息。然而,其僅用作說明的目的。在其他替 代設(shè)計中,儲存于鏈表尾節(jié)點(diǎn)的下一節(jié)點(diǎn)地址欄中的數(shù)據(jù)模式可用于指示鏈表的結(jié)尾以及 輔助信息,其中輔助信息為數(shù)據(jù)信息。
[0028] 請參考圖4,其為依據(jù)本發(fā)明的另一實(shí)施例的網(wǎng)絡(luò)交換機(jī)的示意圖。網(wǎng)絡(luò)交換機(jī) 400的結(jié)構(gòu)類似于圖1中所示的網(wǎng)絡(luò)交換機(jī)100。網(wǎng)絡(luò)交換機(jī)100和網(wǎng)絡(luò)交換機(jī)400的主 要不同在于網(wǎng)絡(luò)交換機(jī)400更包含校驗(yàn)和處理器408,鏈表處理裝置404的鏈表控制器422 用于將數(shù)據(jù)模式INF D,包含數(shù)據(jù)信息(例如產(chǎn)生自校驗(yàn)和處理器408的校驗(yàn)和Das),儲存 至鏈表的鏈表尾節(jié)點(diǎn)的下一節(jié)點(diǎn)地址欄,而封包傳輸電路406基于讀取于鏈表尾節(jié)點(diǎn)的校 驗(yàn)和D CKS執(zhí)行校驗(yàn)和計算,以驗(yàn)證輸出封包P_0UT'的正確性。舉例來說,校驗(yàn)和處理器408 計算自輸入封包?_預(yù)'的原始數(shù)據(jù)塊組(單元數(shù)據(jù))導(dǎo)出并儲存于封包緩沖器114中的修 改的數(shù)據(jù)塊組(單元數(shù)據(jù))的校驗(yàn)和,其中自輸入封包P_IN'導(dǎo)出并儲存于封包緩沖器 114中的數(shù)據(jù)塊組與創(chuàng)建并儲存于存儲裝置124中的鏈表的節(jié)點(diǎn)相關(guān)。關(guān)于封包傳輸電路 406,當(dāng)產(chǎn)生輸出封包P_0UT'時,封包傳輸電路406參考鏈表尾節(jié)點(diǎn)指示的輔助信息(例如, 數(shù)據(jù)信息)執(zhí)行封包處理(例如,校驗(yàn)和驗(yàn)證)。
[0029] 如上所述,存儲裝置124至少具有位于第一地址范圍的第一存儲空間127及位于 第二地址范圍的第二存儲空間128。類似地,由于并非存儲裝置124的所有存儲空間均用于 儲存鏈表,鏈表控制器422配置為將任一鏈表僅儲存于第一存儲空間127。請注意數(shù)據(jù)模式 INF D并非指向存儲裝置124的地址范圍(例如,第一地址范圍和第二地址范圍)之外的空 地址的空指針。請參考圖5,其為依據(jù)本發(fā)明一實(shí)施例的產(chǎn)生自鏈表控制器422的數(shù)據(jù)模式 INF D的示意圖。在本實(shí)施例中,數(shù)據(jù)模式INFD具有較高有效位(more significant bit,簡寫 為MSB)部分以及較低有效位(less significant bit,簡寫為LSB)部分,其中LSB部分作為 校驗(yàn)和,MSB部分作為校驗(yàn)值的詞頭(prefix)。更具體來說,鏈表控制器422設(shè)置數(shù)據(jù)模式 INF D的MSB部分來指示鏈表的結(jié)尾,并用產(chǎn)生自校驗(yàn)和處理器408的校驗(yàn)和DeKS設(shè)置LSB部 分。假定下一節(jié)點(diǎn)地址欄的大小為8位。若鏈表尾節(jié)點(diǎn)的下一節(jié)點(diǎn)地址欄被8位的校驗(yàn)和 滿載,由于8位校驗(yàn)和的數(shù)據(jù)模式可能與第一地址范圍內(nèi)的多個8位地址其中之一的數(shù)據(jù) 模式相同,封包傳輸電路406可能不能夠區(qū)分第一存儲空間127的第一地址范圍內(nèi)的8位 已使用地址以及由校驗(yàn)和處理器408產(chǎn)生的8位校驗(yàn)和。因此,詞頭被特別設(shè)計來指示鏈 表的結(jié)尾。舉例來說,詞頭有2位,而校驗(yàn)和為6位而非8位。考慮下述情況,其中第一存 儲空間127的第一地址范圍從0x00000000至0x10000000,第二存儲空間128的第二地址范 圍從0x10000001至0x111 111 11。則鏈表中每一節(jié)點(diǎn)的已使用地址將為自地址0x00000000 至0x10000000中的一個。由于6位校驗(yàn)和可由自0x000000至0x111111的多個位模式中 的一個來設(shè)置,2位的詞頭被故意設(shè)置為0x11以確保數(shù)據(jù)模式INF D具有不同于第一地址范 圍(亦即,0x00000000至0x10000000)內(nèi)的任一地址的8位位模式。換言之,鏈表控制器 422將數(shù)據(jù)模式INFD的MSB部分設(shè)置為不同于第一存儲空間127的第一地址范圍內(nèi)的每一 地址的共址MSB部分。
[0030] 請一并參考圖6和圖7。圖6是依據(jù)本發(fā)明一實(shí)施例的圖4中的網(wǎng)絡(luò)交換機(jī)400 的運(yùn)行方案示意圖。圖7是圖4中的封包緩沖器114及存儲裝置124的數(shù)據(jù)存儲狀態(tài)的示 意圖。舉例來說,但并非本發(fā)明的限制,輸入封包P_IN'是產(chǎn)生自連接于網(wǎng)絡(luò)交換機(jī)400的 源網(wǎng)絡(luò)設(shè)備的存儲轉(zhuǎn)發(fā)(store-and-forward)封包。故在輸入封包?_預(yù)'所有的數(shù)據(jù)塊組 (單元數(shù)據(jù))被接收之后,網(wǎng)絡(luò)交換機(jī)400開始將輸出封包P_0UT'的數(shù)據(jù)塊組傳輸至連接 于網(wǎng)絡(luò)交換機(jī)400的目的網(wǎng)絡(luò)設(shè)備。如圖6所示,封包接收電路102的接收單元112順序接 收輸入封包P_IN'的數(shù)據(jù)塊組(單元數(shù)據(jù))RXD0_RXD3,并將對應(yīng)的修改后的數(shù)據(jù)塊組(單 元數(shù)據(jù))RXD0' -RXD3'順序儲存于封包緩沖器114的地址5,10, 7和12的存儲空間中。
[0031] 舉例來說,可通過修改輸入封包P_IN'的原始數(shù)據(jù)塊組的單元數(shù)據(jù)來產(chǎn)生修改后 的數(shù)據(jù)塊組,其中單元數(shù)據(jù)包含源IP地址,TCP源端口等。
[0032] 當(dāng)修改后的第一單元數(shù)據(jù)RXD0'被儲存于位于封包緩沖器114的地址5的存儲空 間時,鏈表控制器422使用位于存儲裝置124的地址5的存儲空間創(chuàng)建鏈表頭節(jié)點(diǎn)。當(dāng)修 改后的第二單元數(shù)據(jù)RXD1'被儲存于位于封包緩沖器114的地址10的存儲空間時,鏈表控 制器422使用位于存儲裝置124的地址10的存儲空間創(chuàng)建節(jié)點(diǎn)0,并將地址10儲存入鏈表 頭節(jié)點(diǎn)的下一節(jié)點(diǎn)地址欄,使得鏈表頭節(jié)點(diǎn)鏈接于節(jié)點(diǎn)0。當(dāng)修改后的第三單元數(shù)據(jù)RXD2' 被儲存于位于封包緩沖器114的地址7的存儲空間時,鏈表控制器422使用位于存儲裝置 124的地址7的存儲空間創(chuàng)建節(jié)點(diǎn)1,并將地址7儲存入鏈表頭節(jié)點(diǎn)的下一節(jié)點(diǎn)地址欄,使 得節(jié)點(diǎn)〇鏈接于節(jié)點(diǎn)1。當(dāng)自輸入封包P_IN'的最后單元數(shù)據(jù)導(dǎo)出的修改后的第四單元數(shù) 據(jù)RXD3'被儲存于位于封包緩沖器114的地址12的存儲空間時,鏈表控制器422使用位于 存儲裝置124的地址12的存儲空間創(chuàng)建節(jié)點(diǎn)3作為鏈表尾節(jié)點(diǎn)。
[0033] 當(dāng)接收單元112將修改后的數(shù)據(jù)塊組(單元數(shù)據(jù))RXDO' -RXD3'順序存入封包緩 沖器114中時,接收單元112也將修改后的數(shù)據(jù)塊組(單元數(shù)據(jù))RXDO' -RXD3'順序送至 校驗(yàn)和處理器408。以此種方式,接收到一個修改后的數(shù)據(jù)塊組(單元數(shù)據(jù)),校驗(yàn)和處理 器408計算并更新一次校驗(yàn)和。因此,當(dāng)校驗(yàn)和處理器408接收到修改后的第四單元數(shù)據(jù) RXD4'時,校驗(yàn)和處理器408產(chǎn)生自輸入封包P_IN'導(dǎo)出的所有修改后的數(shù)據(jù)塊組(單元數(shù) 據(jù))的最終校驗(yàn)和D as。當(dāng)自輸入封包?_預(yù)'的最后一個單元數(shù)據(jù)導(dǎo)出的修改后的第四單 元數(shù)據(jù)RXD4'被儲存于位于封包緩沖器114的地址12的存儲空間時,鏈表控制器422用校 驗(yàn)和D eKS來設(shè)置數(shù)據(jù)模式INFD的LSB部分,并將數(shù)據(jù)模式INFD儲存于存儲裝置124的地址 12的鏈表尾節(jié)點(diǎn)的下一節(jié)點(diǎn)地址欄中,其中數(shù)據(jù)模式INF D包含由詞頭"0x11"設(shè)置的MSB 部分和由校驗(yàn)和DCKS設(shè)置的LSB部分。
[0034] 由于輸入封包P_IN'所有的數(shù)據(jù)塊組(單元數(shù)據(jù))RXD0-RXD3均已被封包接收電 路102接收,封包傳輸電路406被允許基于修改后的數(shù)據(jù)塊組(單元數(shù)據(jù))RXD0'-RXD3'產(chǎn) 生及傳輸輸出封包P_〇UT'。封包傳輸電路406參考儲存于存儲裝置124的鏈表從封包緩 沖器114順序讀取修改后的數(shù)據(jù)塊組(單元數(shù)據(jù))RXDO' -RXD3'并儲存于本地FIFO中,用 于驗(yàn)證校驗(yàn)和。隨后,封包傳輸電路406從鏈表尾節(jié)點(diǎn)的下一節(jié)點(diǎn)地址欄讀取校驗(yàn)和D CKS 并驗(yàn)證校驗(yàn)和。若校驗(yàn)和正確,則封包傳輸電路406順序傳輸RXDO' -RXD3'作為輸出封包 P_0UT' 的數(shù)據(jù)塊組(單元數(shù)據(jù))TXD0-TXD3(亦即,RXDO' = TXD0,RXD1' = TXD1,RXD2' = TXD2,且RXD3' = TXD3)。若校驗(yàn)和不正確,封包傳輸電路406將丟棄上述數(shù)據(jù)。
[0035] 在上述實(shí)施例中提出的鏈表架構(gòu)應(yīng)用于網(wǎng)絡(luò)交換機(jī)100/400中,用于使用共享鏈 表尾節(jié)點(diǎn)來指示控制信息(例如,寫錯誤信息)或數(shù)據(jù)信息(例如,校驗(yàn)和)。然而,其僅用 作說明的目的,并不能作為本發(fā)明的限制。亦即,任一使用提出的鏈表架構(gòu)的電子設(shè)備均落 入本發(fā)明的范圍。
[0036] 以上所述僅為本發(fā)明的較佳實(shí)施例,本領(lǐng)域相關(guān)的技術(shù)人員依據(jù)本發(fā)明的精神所 做的等效變化與修改,都應(yīng)當(dāng)涵蓋在權(quán)利要求書內(nèi)。
【權(quán)利要求】
1. 一種鏈表處理裝置,其特征在于,包含: 存儲裝置;以及 鏈表控制器,用于設(shè)置鏈表信息以及將所述鏈表信息寫入所述存儲裝置,以在所述存 儲裝置中創(chuàng)建鏈表; 其中所述鏈表包含多個節(jié)點(diǎn),每一節(jié)點(diǎn)具有下一節(jié)點(diǎn)地址欄,所述鏈表信息包含數(shù)據(jù) 模式,所述數(shù)據(jù)模式用于指示所述鏈表的結(jié)尾以及輔助信息,以及所述鏈表控制器將所述 數(shù)據(jù)模式儲存到所述鏈表的鏈表尾節(jié)點(diǎn)的所述下一節(jié)點(diǎn)地址欄。
2. 根據(jù)權(quán)利要求1所述的鏈表處理裝置,其特征在于,所述數(shù)據(jù)模式并非指向空地址 的空指針。
3. 根據(jù)權(quán)利要求1所述的鏈表處理裝置,其特征在于,所述存儲裝置至少包含位于第 一地址范圍的第一存儲空間及位于第二地址范圍的第二存儲空間,所述鏈表控制器用于將 任一鏈表僅儲存于所述第一存儲空間,并且所述數(shù)據(jù)模式具有與所述第二存儲空間內(nèi)多個 地址之一相同的位模式。
4. 根據(jù)權(quán)利要求1所述的鏈表處理裝置,其特征在于,所述輔助信息是控制信息。
5. 根據(jù)權(quán)利要求4所述的鏈表處理裝置,其特征在于,所述控制信息指示與所述鏈表 尾節(jié)點(diǎn)相關(guān)的數(shù)據(jù)塊組的接收錯誤。
6. 根據(jù)權(quán)利要求5所述的鏈表處理裝置,其特征在于,當(dāng)無可用來緩沖所述數(shù)據(jù)塊組 的資源時,所述鏈表控制器設(shè)置寫錯誤信息作為所述數(shù)據(jù)模式,并將所述寫錯誤信息儲存 入所述鏈表尾節(jié)點(diǎn)的所述下一節(jié)點(diǎn)地址欄。
7. 根據(jù)權(quán)利要求1所述的鏈表處理裝置,其特征在于,所述輔助信息是數(shù)據(jù)信息。
8. 根據(jù)權(quán)利要求7所述的鏈表處理裝置,其特征在于,所述數(shù)據(jù)信息是與所述鏈表的 所述多個節(jié)點(diǎn)分別相關(guān)的多個數(shù)據(jù)塊組的校驗(yàn)和。
9. 根據(jù)權(quán)利要求8所述的鏈表處理裝置,其特征在于,所述數(shù)據(jù)模式具有較高有效位 部分以及較低有效位部分,所述鏈表控制器設(shè)置所述較高有效位部分以指示所述鏈表的所 述結(jié)尾,以及利用所述校驗(yàn)和設(shè)置所述較低有效位。
10. 根據(jù)權(quán)利要求9所述的鏈表處理裝置,其特征在于,所述存儲裝置至少包含位于第 一地址范圍的第一存儲空間及位于第二地址范圍的第二存儲空間,所述鏈表控制器用于將 任一鏈表僅儲存于所述第一存儲空間,并且所述數(shù)據(jù)模式的所述較高有效位部分不同于所 述第一地址范圍內(nèi)的每一地址的共址較高有效位部分。
11. 一種鏈表處理方法,其特征在于,包含: 設(shè)置鏈表信息,其中所述鏈表信息包含數(shù)據(jù)模式,所述數(shù)據(jù)模式用于指示鏈表的結(jié)尾 以及輔助信息;以及 將所述鏈表信息寫入存儲裝置,以在所述存儲裝置中創(chuàng)建所述鏈表; 其中所述鏈表包含多個節(jié)點(diǎn),每一節(jié)點(diǎn)具有下一節(jié)點(diǎn)地址欄,以及所述述數(shù)據(jù)模式被 寫入所述鏈表的鏈表尾節(jié)點(diǎn)的所述下一節(jié)點(diǎn)地址欄。
12. 根據(jù)權(quán)利要求11所述的鏈表處理方法,其特征在于,所述數(shù)據(jù)模式并非指向空地 址的空指針。
13. 根據(jù)權(quán)利要求11所述的鏈表處理方法,其特征在于,所述存儲裝置至少包含位于 第一地址范圍的第一存儲空間及位于第二地址范圍的第二存儲空間,任一鏈表僅被儲存于 所述第一存儲空間,并且所述數(shù)據(jù)模式具有與所述第二存儲空間內(nèi)多個地址之一相同的位 模式。
14. 根據(jù)權(quán)利要求11所述的鏈表處理方法,其特征在于,所述輔助信息是控制信息。
15. 根據(jù)權(quán)利要求14所述的鏈表處理方法,其特征在于,所述控制信息指示與所述鏈 表尾節(jié)點(diǎn)相關(guān)的數(shù)據(jù)塊組的接收錯誤。
16. 根據(jù)權(quán)利要求15所述的鏈表處理方法,其特征在于,設(shè)置所述鏈表信息的步驟包 含: 當(dāng)無可用來緩沖所述數(shù)據(jù)塊組的資源時,設(shè)置寫錯誤信息作為所述數(shù)據(jù)模式,使得所 述寫錯誤信息被儲存入所述鏈表尾節(jié)點(diǎn)的所述下一節(jié)點(diǎn)地址欄。
17. 根據(jù)權(quán)利要求11所述的鏈表處理方法,其特征在于,所述輔助信息是數(shù)據(jù)信息。
18. 根據(jù)權(quán)利要求17所述的鏈表處理方法,其特征在于,所述數(shù)據(jù)信息是與所述鏈表 的所述多個節(jié)點(diǎn)分別相關(guān)的多個數(shù)據(jù)塊組的校驗(yàn)和。
19. 根據(jù)權(quán)利要求18所述的鏈表處理方法,其特征在于,所述數(shù)據(jù)模式具有較高有效 位部分以及較低有效位部分,以及設(shè)置所述鏈表信息的步驟包含: 設(shè)置所述較高有效位部分以指示所述鏈表的所述結(jié)尾;以及 利用所述校驗(yàn)和設(shè)置所述較低有效位。
20. 根據(jù)權(quán)利要求19所述的鏈表處理方法,其特征在于,所述存儲裝置至少包含位于 第一地址范圍的第一存儲空間及位于第二地址范圍的第二存儲空間,任一鏈表僅被儲存于 所述第一存儲空間,并且所述數(shù)據(jù)模式的所述較高有效位部分不同于所述第一地址范圍內(nèi) 的每一地址的共址較高有效位部分。
21. -種網(wǎng)絡(luò)交換機(jī),其特征在于,包含: 封包接收電路,用于接收輸入封包,以及從已接收的所述輸入封包中導(dǎo)出多個第一數(shù) 據(jù)塊組; 鏈表處理裝置,包含: 存儲裝置;以及 鏈表控制器,用于將鏈表信息寫入所述存儲裝置,以在所述存儲裝置中創(chuàng)建鏈表,其中 所述鏈表包含與所述多個第一數(shù)據(jù)塊組分別相關(guān)的多個節(jié)點(diǎn),每一節(jié)點(diǎn)具有下一節(jié)點(diǎn)地址 欄,所述鏈表信息包含數(shù)據(jù)模式,所述數(shù)據(jù)模式用于指示所述鏈表的結(jié)尾以及輔助信息,以 及所述鏈表控制器將所述數(shù)據(jù)模式儲存到所述鏈表的鏈表尾節(jié)點(diǎn)的所述下一節(jié)點(diǎn)地址欄; 以及 封包傳輸電路,用于依據(jù)所述鏈表從所述多個第一數(shù)據(jù)塊組導(dǎo)出輸出封包的多個第二 數(shù)據(jù)塊組,以及傳輸所述輸出封包,其中當(dāng)產(chǎn)生所述輸出封包時,所述封包傳輸電路參考由 所述鏈表尾節(jié)點(diǎn)指示的所述輔助信息執(zhí)行封包處理。
22. 根據(jù)權(quán)利要求21所述的網(wǎng)絡(luò)交換機(jī),其特征在于,所述輔助信息指示所述輸入封 包的數(shù)據(jù)塊組的接收錯誤;以及當(dāng)讀取所述鏈表尾節(jié)點(diǎn)時,所述封包傳輸電路將預(yù)設(shè)錯誤 數(shù)據(jù)塊組附加至所述輸出封包。
23. 根據(jù)權(quán)利要求21所述的網(wǎng)絡(luò)交換機(jī),其特征在于,更包含: 校驗(yàn)和處理器,用于計算所述多個第一數(shù)據(jù)塊組的校驗(yàn)和; 其中所述鏈表控制器利用所述校驗(yàn)和設(shè)置所述輔助信息;以及當(dāng)傳輸所述輸出封包 時,所述封包傳輸電路依據(jù)讀取于所述鏈表尾節(jié)點(diǎn)的所述校驗(yàn)和驗(yàn)證所述多個第二數(shù)據(jù)塊 組。
【文檔編號】H04L12/931GK104125169SQ201410175645
【公開日】2014年10月29日 申請日期:2014年4月28日 優(yōu)先權(quán)日:2013年4月26日
【發(fā)明者】張建雄 申請人:聯(lián)發(fā)科技股份有限公司