亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種網(wǎng)絡(luò)設(shè)備以及解包輸出報文的方法

文檔序號:7783038閱讀:239來源:國知局
一種網(wǎng)絡(luò)設(shè)備以及解包輸出報文的方法
【專利摘要】本發(fā)明實施例公開了一種網(wǎng)絡(luò)設(shè)備,包括:環(huán)狀緩存,寫指針寄存器,第一加法器,讀指針寄存器,第二加法器,由于在網(wǎng)絡(luò)設(shè)備中采用環(huán)狀緩存保存寫指針寄存器寫入的報文段,讀指針寄存器保存起始讀地址,寫指針寄存器保存起始寫地址,加法器根據(jù)讀或?qū)懼羔樇拇嫫髯x或?qū)懗龅膱笪亩蔚慕M數(shù)量更新起始讀或?qū)懙刂?,因此,可以根?jù)讀指針寄存器以及寫指針寄存器所保存的起始地址找到正確的寫入位置以及讀出位置,無需在緩存中移動報文段去確保正確的讀/寫位置,實現(xiàn)了網(wǎng)絡(luò)設(shè)備在解包輸出報文時無需進行數(shù)據(jù)移動操作,提高效率的目的。另外,本發(fā)明實施例還公開了一種解包輸出報文的方法。
【專利說明】一種網(wǎng)絡(luò)設(shè)備以及解包輸出報文的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機網(wǎng)絡(luò)領(lǐng)域,特別涉及一種網(wǎng)絡(luò)設(shè)備以及解包輸出報文的方法?!颈尘凹夹g(shù)】
[0002]隨著網(wǎng)絡(luò)芯片的帶寬不斷增加,很多外部端口使用多組數(shù)據(jù)總線拼包的模式進行數(shù)據(jù)傳輸。因此,網(wǎng)絡(luò)芯片通常會同時收到多組報文段,同時收到的多組報文段可能屬于同一個報文,也可能屬于不同的多個報文。然而,由于網(wǎng)絡(luò)芯片不支持同時對多個報文進行處理,因此,需要將所收到的多組報文段進行解包,每次輸出屬于同一個報文的I個或多個報文段。
[0003]目前,主要采用隊列式緩存對報文段進行緩存,通過流水推送的機制進行報文段的解包和輸出。所謂流水推送的機制是指,總是從隊列式緩存的保存有有效報文段的最后一組寄存器后開始寫入所收到的報文段,其中,一組報文段寫入一組寄存器,相當于解包,總是從隊列式緩存的第一組寄存器開始輸出屬于同一報文的報文段,當有報文被輸出后,需要將其他未輸出的報文段向第一組寄存器方向順序移動,從而使得最后一個有效報文段向前移動以增加新的空閑存儲空間去接受新寫入的報文段,保證輸出時可以簡單地遵循地址順序輸出正確的報文,同時可以根據(jù)第一組寄存器以及最后一組有效報文段簡單地找到正確的讀/寫位置。
[0004]但是,由于這種流水推送的機制需要在隊列式緩存中進行大量的移動操作,因此,效率較低。

【發(fā)明內(nèi)容】

[0005]有鑒于此,本發(fā)明實施例的主要目的在于提供一種網(wǎng)絡(luò)設(shè)備以及解包輸出報文的方法以實現(xiàn)網(wǎng)絡(luò)設(shè)備在解包輸出報文時無需進行數(shù)據(jù)移動操作,從而提高效率的目的。
[0006]為了解決以上技術(shù)問題,本發(fā)明實施例采取的技術(shù)方案是:
[0007]第一方面,本發(fā)明實施例提供了一種網(wǎng)絡(luò)設(shè)備,所述網(wǎng)絡(luò)設(shè)備包括:
[0008]環(huán)狀緩存,用于保存寫指針寄存器寫入的報文段;
[0009]寫指針寄存器,用于保存環(huán)狀緩存的起始寫地址,當需要將網(wǎng)絡(luò)設(shè)備所接收到的至少一組報文段進行緩存時,從所述起始寫地址開始,按所述環(huán)狀緩存的地址順序?qū)⑺邮盏膱笪亩沃鸾M寫入所述環(huán)狀緩存,其中,一個地址寫入一組報文段;根據(jù)第一加法器計算出的更新的起始寫地址,對保存的起始寫地址進行更新;
[0010]第一加法器,用于根據(jù)寫指針寄存器寫入所述環(huán)狀緩存的報文段的組數(shù)量計算出更新的起始寫地址;
[0011]讀指針寄存器,用于保存環(huán)狀緩存的起始讀地址,當需要輸出報文時,從所述環(huán)狀緩存的起始讀地址開始按所述地址順序,從所述環(huán)狀緩存讀出屬于同一報文的報文段,輸出所讀出的報文段,根據(jù)第二加法器計算出的更新的起始讀地址,對保存的起始讀地址進行更新;[0012]第二加法器,用于根據(jù)讀指針寄存器所讀出的報文段的組數(shù)量計算出更新的起始讀地址。
[0013]在第一方面的第一種可能的實現(xiàn)方式中,所述寫指針寄存器,具體用于當需要在當前時鐘周期內(nèi)將網(wǎng)絡(luò)設(shè)備在當前時鐘周期所接收到的N組報文段進行緩存時,從所述起始寫地址開始,按所述環(huán)狀緩存的地址遞增的順序?qū)⑺邮盏腘組報文段逐組寫入所述環(huán)狀緩存,其中,N大于等于I ;
[0014]所述第一加法器,用于根據(jù)更新的起始寫地址等于所述環(huán)狀緩存的起始寫地址開始遞增N個地址,計算出所述更新的起始寫地址;
[0015]且還包括:
[0016]第一比較器,用于判斷所述當前時鐘周期之前,所述環(huán)狀緩存所保存的一個報文段是否包含報文尾標志;
[0017]第二比較器,用于每當讀指針寄存器從一個地址讀出報文段時,判斷該地址的報文段是否包含報文尾標志;
[0018]其中,所述讀指針寄存器,具體用于如果第一比較器判斷出所述當前時鐘周期之前,所述環(huán)狀緩存所保存的一個報文段包含報文尾標志,在所述當前時鐘周期內(nèi)從環(huán)狀緩存的所述起始讀地址開始逐個遞增地址讀出報文段,每當從一個地址讀出報文段時,如果第二比較器判斷出該地址的報文段包含報文尾標志,當前時鐘周期的讀操作結(jié)束;
[0019]所述第二加法器,具體用于根據(jù)所述更新的起始讀地址等于所述環(huán)狀緩存的起始讀地址開始遞增M個地址,計算出更新的起始讀地址,所述M為所述讀指針寄存器在所述當前時鐘周期內(nèi)所讀出的報文段的組數(shù)量。
[0020]在第一方面的第二種可能的實現(xiàn)方式中,所述寫指針寄存器,具體用于當需要在當前時鐘周期內(nèi)將網(wǎng)絡(luò)設(shè)備在當前時鐘周期所接收到的N組報文段進行緩存時,從所述起始寫地址開始,按所述環(huán)狀緩存的地址遞減的順序?qū)⑺邮盏腘組報文段逐組寫入所述環(huán)狀緩存,其中,N大于等于I ;
[0021]所述第一加法器,具體用于根據(jù)所述更新的起始寫地址等于所述環(huán)狀緩存的起始寫地址開始遞減N個地址,計算出更新的起始寫地址;
[0022]且,還包括:
[0023]第一比較器,用于判斷所述當前時鐘周期之前,所述環(huán)狀緩存所保存的還未被輸出的一個報文段是否包含報文尾標志;
[0024]第二比較器,用于判斷所述讀指針寄存器所讀出的報文段是否包含報文尾標志;
[0025]其中,所述讀指針寄存器,具體用于如果第一比較器判斷出所述當前時鐘周期之前,所述環(huán)狀緩存所保存的一個報文段包含報文尾標志,則在所述當前時鐘周期內(nèi)從環(huán)狀緩存的所述起始讀地址開始逐個遞減地址讀出報文段,每當從一個地址讀出報文段時,如果第二比較器判斷出所讀出的報文段包含報文尾標志,當前時鐘周期的讀操作結(jié)束;
[0026]所述第二加法器,具體用于根據(jù)所述更新的起始讀地址等于所述環(huán)狀緩存的起始讀地址開始遞減M個地址,計算出更新的起始讀地址,所述M為所讀出的報文段的組數(shù)量。
[0027]結(jié)合第一方面的第一種可能的實現(xiàn)方式到第二種可能的實現(xiàn)方式中的任一種,在第三種可能的實現(xiàn)方式中,還包括:
[0028]第三加法器,用于當所述寫指針寄存器將所接收的報文段寫入所述環(huán)狀緩存時,將有效數(shù)據(jù)數(shù)量加上寫入的報文段的組數(shù)量,當所述讀指針寄存器從所述環(huán)狀緩存讀出報文段時,將有效數(shù)據(jù)量減去讀出的報文段的組數(shù)量;
[0029]第三比較器,用于判斷所述有效數(shù)據(jù)數(shù)量是否達到緩存閾值;
[0030]其中,所述寫指針寄存器,用于當所述第三比較器判斷為是時,禁止向所述環(huán)狀緩存進行寫入操作,當所述第三比較器判斷為否時,允許向所述環(huán)狀緩存進行寫入操作。
[0031]結(jié)合第一方面的第一種可能的實現(xiàn)方式到第二種可能的實現(xiàn)方式中的任一種,在第四種可能的實現(xiàn)方式中,還包括:第四比較器,用于每當所述讀指針寄存器從所述環(huán)狀緩存讀出屬于同一報文的一個報文段時,判斷所述讀指針寄存器在當前時鐘周期內(nèi)所讀出的報文段的總位寬是否達到輸出位寬閾值;所述讀指針寄存器,用于當?shù)谒谋容^器判斷為是時結(jié)束當前時鐘周期的讀操作;
[0032]或者,
[0033]第五比較器,用于判斷所述環(huán)狀緩存中所有未輸出的報文段是否不包含報文尾標志且所述未輸出的報文段的總位數(shù)達到輸出位寬閾值;
[0034]所述讀指針寄存器,用于當?shù)谖灞容^器判斷為是時確定需要輸出報文。
[0035]第二方面,本發(fā)明實施例提供了一種解包輸出報文的方法,所述方法包括:
[0036]保存環(huán)狀緩存的起始寫地址以及起始讀地址,其中,所述環(huán)狀緩存用于保存所寫入的報文段;
[0037]當需要將網(wǎng)絡(luò)設(shè)備所接收到的至少一組報文段進行緩存時,從所述起始寫地址開始,按所述環(huán)狀緩存的地址順序?qū)⑺邮盏膱笪亩沃鸾M寫入所述環(huán)狀緩存,其中,一個地址寫入一組報文段;根據(jù)寫入所述環(huán)狀緩存的報文段的組數(shù)量計算出更新的起始寫地址;根據(jù)計算出的更新的起始寫地址,對保存的起始寫地址進行更新;
[0038]當需要輸出報文時,從所述環(huán)狀緩存的所述起始讀地址開始按所述地址順序,從所述環(huán)狀緩存讀出屬于同一報文的報文段;輸出所讀出的報文段;根據(jù)所讀出的報文段的組數(shù)量計算出更新的起始讀地址;根據(jù)計算出的更新的起始讀地址,對保存的起始讀地址進行更新。
[0039]在第二方面的第一種可能的實現(xiàn)方式中,所述當需要將網(wǎng)絡(luò)設(shè)備所接收到的至少一組報文段進行緩存時,從所述起始寫地址開始,按所述環(huán)狀緩存的地址順序?qū)⑺邮盏膱笪亩沃鸾M寫入所述環(huán)狀緩存包括:當需要在當前時鐘周期內(nèi)將網(wǎng)絡(luò)設(shè)備在當前時鐘周期所接收到的N組報文段進行緩存時,從所述起始寫地址開始,按所述環(huán)狀緩存的地址遞增的順序?qū)⑺邮盏腘組報文段逐組寫入所述環(huán)狀緩存,其中,N大于等于I ;
[0040]所述根據(jù)寫入所述環(huán)狀緩存的報文段的組數(shù)量計算出更新的起始寫地址包括:根據(jù)更新的起始寫地址等于所述環(huán)狀緩存的起始寫地址開始遞增N個地址,計算出所述更新的起始與地址;
[0041]所述當需要輸出報文時,從所述環(huán)狀緩存的所述起始讀地址開始按所述地址順序,從所述環(huán)狀緩存讀出屬于同一報文的報文段包括:如果在所述當前時鐘周期之前,所述環(huán)狀緩存所保存的一個報文段包含報文尾標志,在所述當前時鐘周期內(nèi)從環(huán)狀緩存的所述起始讀地址開始逐個遞增地址讀出報文段,每當從一個地址讀出報文段時,如果判斷出所讀出的報文段包含報文尾標志,當前時鐘周期的讀操作結(jié)束;
[0042]所述根據(jù)所讀出的報文段的組數(shù)量計算出更新的起始讀地址包括:根據(jù)所述更新的起始讀地址等于所述環(huán)狀緩存的起始讀地址開始遞增M個地址,計算出更新的起始讀地址,所述M為在所述當前時鐘周期內(nèi)所讀出的報文段的組數(shù)量。
[0043]在第二方面的第二種可能的實現(xiàn)方式中,所述當需要將網(wǎng)絡(luò)設(shè)備所接收到的至少一組報文段進行緩存時,從所述起始寫地址開始,按所述環(huán)狀緩存的地址順序?qū)⑺邮盏膱笪亩沃鸾M寫入所述環(huán)狀緩存包括:當需要在當前時鐘周期內(nèi)將網(wǎng)絡(luò)設(shè)備在當前時鐘周期所接收到的N組報文段進行緩存時,從所述起始寫地址開始,按所述環(huán)狀緩存的地址遞減的順序?qū)⑺邮盏腘組報文段逐組寫入所述環(huán)狀緩存,其中,N大于等于I ;
[0044]所述根據(jù)寫入所述環(huán)狀緩存的報文段的組數(shù)量計算出更新的起始寫地址包括:根據(jù)所述更新的起始寫地址等于所述環(huán)狀緩存的起始寫地址開始遞減N個地址,計算出更新的起始與地址;
[0045]所述當需要輸出報文時,從所述環(huán)狀緩存的所述起始讀地址開始按所述地址順序,從所述環(huán)狀緩存讀出屬于同一報文的報文段包括:如果在所述當前時鐘周期之前,所述環(huán)狀緩存所保存的一個報文段包含報文尾標志,則在所述當前時鐘周期內(nèi)從環(huán)狀緩存的所述起始讀地址開始逐個遞減地址讀出報文段,每當從一個地址讀出報文段時,如果判斷出所讀出的報文段包含報文尾標志,當前時鐘周期的讀操作結(jié)束;
[0046]所述根據(jù)所讀出的報文段的組數(shù)量計算出更新的起始讀地址包括:根據(jù)所述更新的起始讀地址等于所述環(huán)狀緩存的起始讀地址開始遞減M個地址,計算出更新的起始讀地址,所述M為所讀出的報文段的組數(shù)量。
[0047]結(jié)合第二方面的第一種可能的實現(xiàn)方式到第二種可能的實現(xiàn)方式中的任一種,在第三種可能的實現(xiàn)方式中,當將所接收的報文段寫入所述環(huán)狀緩存時,還包括:將有效數(shù)據(jù)數(shù)量加上寫入的報文段的組數(shù)量;
[0048]當從所述環(huán)狀緩存讀出報文段時,還包括:將有效數(shù)據(jù)量減去讀出的報文段的組
數(shù)量;
[0049]且還包括:
[0050]判斷所述有效數(shù)據(jù)數(shù)量是否達到緩存閾值;
[0051]當判斷為是時,禁止向所述環(huán)狀緩存進行寫入操作;
[0052]當判斷為否時,允許向所述環(huán)狀緩存進行寫入操作。
[0053]結(jié)合第二方面的第一種可能的實現(xiàn)方式到第二種可能的實現(xiàn)方式中的任一種,在第四種可能的實現(xiàn)方式中,還包括:
[0054]每當從所述環(huán)狀緩存讀出屬于同一報文的一個報文段時,判斷在當前時鐘周期內(nèi)所讀出的報文段的總位寬是否達到輸出位寬閾值;當判斷為是時結(jié)束當前時鐘周期的讀操作;
[0055]或者,
[0056]判斷所述環(huán)狀緩存中所有未輸出的報文段是否不包含報文尾標志且所述未輸出的報文段的總位數(shù)達到輸出位寬閾值;當判斷為是時確定需要輸出報文。
[0057]可見本發(fā)明實施例具有如下有益效果:
[0058]由于本發(fā)明實施例采用環(huán)狀緩存保存寫指針寄存器寫入的報文段,讀指針寄存器與寫指針寄存在環(huán)狀緩存中采用一致的地址順序進行讀或者寫報文段操作,因此,在讀指針寄存器從環(huán)狀緩存讀出報文段的同時,被釋放的存儲位置就成為了最后一個存有有效報文段的位置之后的新的空閑存儲位置,無需在緩存中移動報文段去釋放存儲空間,在輸出時可以簡單地遵循地址順序輸出正確的報文,而且,由于讀指針寄存器保存起始讀地址,寫指針寄存器保存起始寫地址,當寫指針寄存器從起始寫地址開始將所接收的報文段逐組順序地寫入所述環(huán)狀緩存后,根據(jù)寫指針寄存器寫入所述環(huán)狀緩存的報文段的組數(shù)量更新起始寫地址,當讀指針寄存器從起始讀地址開始讀出屬于同一報文的報文段后,根據(jù)讀指針寄存器讀出的報文段的組數(shù)量更新起始讀地址,因此,可以根據(jù)讀指針寄存器以及寫指針寄存器所保存的起始地址找到正確的寫入位置以及讀出位置,無需在緩存中移動報文段去確保正確的讀/寫位置,實現(xiàn)了網(wǎng)絡(luò)設(shè)備在解包輸出報文時無需進行數(shù)據(jù)移動操作,提高效率的目的。
【專利附圖】

【附圖說明】
[0059]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0060]圖1是本發(fā)明實施例提供的網(wǎng)絡(luò)設(shè)備結(jié)構(gòu)示意圖之一;
[0061]圖2是本發(fā)明實施例提供的網(wǎng)絡(luò)設(shè)備結(jié)構(gòu)示意圖之二 ;
[0062]圖3是本發(fā)明實施例提供的網(wǎng)絡(luò)設(shè)備結(jié)構(gòu)示意圖之三;
[0063]圖4是本發(fā)明實施例提供的解包輸出報文的方法流程示意圖之一;
[0064]圖5是本發(fā)明實施例提供的解包輸出報文的方法流程示意圖之二 ;
[0065]圖6是本發(fā)明實施例提供的解包輸出報文的方法流程示意圖之三;
[0066]圖7是本發(fā)明實施例提供的解包輸出報文的方法流程示意圖之四;
[0067]圖8是本發(fā)明實施例提供的解包輸出報文的方法流程示意圖之五。
【具體實施方式】
[0068]為使本發(fā)明實施例的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和【具體實施方式】對本發(fā)明實施例作進一步詳細的說明。
[0069]目前,例如Interlaken(芯片間高速數(shù)據(jù)傳輸協(xié)議)等接口的發(fā)展趨勢是使用多組數(shù)據(jù)總線拼接構(gòu)成一個寬的數(shù)據(jù)總線,在Interlaken等接口與內(nèi)部模塊連接時,由于內(nèi)部模塊不支持同時對多個報文進行處理,必然需要解包輸出功能,本發(fā)明實施例適用于這類應(yīng)用場景,能夠提高解包輸出效率。
[0070]例如,請參閱圖1所示的本發(fā)明實施例提供的網(wǎng)絡(luò)設(shè)備結(jié)構(gòu)示意圖之一。其中,本實施例所述的網(wǎng)絡(luò)設(shè)備可以為網(wǎng)絡(luò)芯片等任意需要解包輸出報文的網(wǎng)絡(luò)設(shè)備。如圖所示,所述網(wǎng)絡(luò)設(shè)備可以包括:
[0071]環(huán)狀緩存110,可以用于保存寫指針寄存器寫入的報文段;
[0072]寫指針寄存器120,可以用于保存環(huán)狀緩存的起始寫地址,當需要將網(wǎng)絡(luò)設(shè)備所接收到的至少一組報文段進行緩存時,從所述起始寫地址開始,按所述環(huán)狀緩存的地址順序?qū)⑺邮盏膱笪亩沃鸾M寫入所述環(huán)狀緩存,其中,一個地址寫入一組報文段;根據(jù)第一加法器130計算出的更新的起始寫地址,對保存的起始寫地址進行更新;[0073]需要說明的是,所述將網(wǎng)絡(luò)設(shè)備所接收到的至少一組報文段進行緩存的時機可以根據(jù)實施需要,在滿足預(yù)設(shè)寫入條件時確定,例如,可以在當前時鐘周期內(nèi)接收到報文段之后,確定需要將網(wǎng)絡(luò)設(shè)備所接收到的報文段進行緩存。或者,也可以有其他實現(xiàn)方式,在本發(fā)明中并不進行限制。
[0074]第一加法器130,可以用于根據(jù)寫指針寄存器120寫入所述環(huán)狀緩存110的報文段的組數(shù)量計算出更新的起始寫地址;
[0075]讀指針寄存器140,可以用于保存環(huán)狀緩存的起始讀地址,當需要輸出報文時,從所述環(huán)狀緩存的起始讀地址開始按所述地址順序,從所述環(huán)狀緩存讀出屬于同一報文的報文段,輸出所讀出的報文段,根據(jù)第二加法器計算出的更新的起始讀地址,對保存的起始讀地址進行更新;
[0076]需要說明的是,可以根據(jù)實際需要,設(shè)置滿足預(yù)設(shè)讀出條件時確定需要輸出報文。例如,可以在環(huán)狀緩存中至少有一個未輸出的報文段有報文尾標志時,或者環(huán)狀緩存中未輸出的屬于同一報文的報文段超出一定閾值時,確定需要輸出報文,或者,也可以有其他實現(xiàn)方式,在本發(fā)明中并不進行限制。
[0077]其中,當讀出的報文段為多組時,可以拼包后輸出。相當于將輸入端口的多個數(shù)據(jù)總線傳輸?shù)膱笪亩伟凑蛰敵龆说奈粚捿敵?,實現(xiàn)接口位寬轉(zhuǎn)換和解拼包功能。
[0078]第二加法器150,可以用于根據(jù)讀指針寄存器140所讀出的報文段的組數(shù)量計算出更新的起始讀地址。
[0079]可見,在本實施例中,當網(wǎng)絡(luò)設(shè)備輸入端同時接收到多組數(shù)據(jù)總線輸入的多組報文段時,由于在網(wǎng)絡(luò)設(shè)備中采用環(huán)狀緩存110保存寫指針寄存器120寫入的報文段,因此,在讀指針寄存器140從環(huán)狀緩存110讀出報文段的同時,被釋放的存儲位置就成為了最后一個存有有效報文段的位置之后的新的空閑存儲位置,無需在緩存中移動報文段去釋放存儲空間,在輸出時可以簡單地遵循地址順序輸出正確的報文,而且,由于讀指針寄存器保存起始讀地址,寫指針寄存器保存起始寫地址,根據(jù)讀或?qū)懼羔樇拇嫫髯x或?qū)懗龅膱笪亩蔚慕M數(shù)量更新起始讀或?qū)懙刂罚虼?,可以根?jù)讀指針寄存器以及寫指針寄存器所保存的起始地址找到正確的寫入位置以及讀出位置,無需在緩存中移動報文段去確保正確的讀/寫位置,實現(xiàn)了網(wǎng)絡(luò)設(shè)備在解包輸出報文時無需進行數(shù)據(jù)移動操作,提高效率的目的。
[0080]需要說明的是,本發(fā)明實施例所述的環(huán)狀緩存110可以使用若干組寄存器或者靜態(tài)隨機存儲器(SRAM,Static RAM)搭建構(gòu)成,具體可以根據(jù)應(yīng)用場景需要搭建。例如,由于寄存器讀寫速度較快,可以使用寄存器搭建環(huán)狀緩存。具體地,例如,可以使用若干組寄存器搭建成線性緩存,再由最后一組寄存器記錄第一組寄存器的地址,從而形成環(huán)狀緩存。其中,一組寄存器對應(yīng)環(huán)狀緩存的一個地址。在本發(fā)明實施例中,由于環(huán)狀緩存的一個地址寫入一組報文段,因此,可以根據(jù)報文段的位寬以及緩存深度確定需要使用的寄存器的數(shù)量。例如,在一種可能的應(yīng)用場景下,如果一組報文段的位寬是134bit,那么環(huán)狀緩存的一個地址就需要134bit的寄存器,換句話說,在一個寄存器為Ibit的情況下,一組寄存器要有134個寄存器,如果環(huán)狀緩存的緩存深度或稱環(huán)狀緩存的地址個數(shù)為8,那么總共需要134*8個寄存器就能夠搭建出該場景下所需要的環(huán)狀緩存。
[0081]可以理解的是,所述環(huán)狀緩存110能夠存儲的有效報文段的數(shù)量是由緩存深度決定的。因此,為了避免寫入的報文段的數(shù)量超過環(huán)狀緩存110的緩存深度而導致數(shù)據(jù)溢出,可以預(yù)先設(shè)置緩存閾值,在讀/寫報文段的過程中,利用第三加法器ill對環(huán)狀緩存中所存儲的有效報文段的數(shù)量進行計算,再利用第三比較器112對有效報文段的數(shù)量與緩存閾值進行比較以確定是否禁止或允許寫入。具體地,例如,參見圖2所示本發(fā)明實施例提供的網(wǎng)絡(luò)設(shè)備結(jié)構(gòu)示意圖之二,所述網(wǎng)絡(luò)設(shè)備還可以包括:
[0082]第三加法器111,可以用于當所述寫指針寄存器120將所接收的報文段寫入所述環(huán)狀緩存110時,將有效數(shù)據(jù)數(shù)量加上寫入的報文段的組數(shù)量,當所述讀指針寄存器120從所述環(huán)狀緩存110讀出報文段時,將有效數(shù)據(jù)量減去讀出的報文段的組數(shù)量;
[0083]第三比較器112,可以用于判斷所述有效數(shù)據(jù)數(shù)量是否達到緩存閾值;
[0084]所述寫指針寄存器140,可以用于當所述第三比較器112判斷為是時,禁止向所述環(huán)狀緩存110進行寫入操作,當所述第三比較器112判斷為否時,允許向所述環(huán)狀緩存110進行寫入操作。
[0085]另外,利用有效數(shù)據(jù)數(shù)量還可以用來判斷是否需要進行讀操作,例如,當有效數(shù)據(jù)數(shù)量為零時,所述讀指針寄存器不需要進行是否輸出報文的判斷,當有效數(shù)據(jù)數(shù)量大于零時,所述讀指針寄存器需要進行是否輸出報文的判斷。
[0086]在一些可能的實施方式中,由于讀指針寄存器140在一個時鐘周期內(nèi)所讀出以及輸出的報文段的總位寬需要與輸出端的數(shù)據(jù)總線的位寬相適應(yīng),因此,為了一個時鐘周期內(nèi)所輸出的報文段的總位寬不超出輸出端的數(shù)據(jù)總線的位寬,可以預(yù)先根據(jù)輸出端的數(shù)據(jù)總線的位寬設(shè)置輸出位寬閾值,利用該輸出位寬閾值去限制讀指針寄存器140在一個時鐘周期內(nèi)所輸出的報文段的總位寬。具體地,如圖2所示,所述網(wǎng)絡(luò)設(shè)備還可以包括:
[0087]第四比較器141,可以用于每當所述讀指針寄存器140從所述環(huán)狀緩存110讀出屬于同一報文的一個報文段時,判斷所述讀指針寄存器140在當前時鐘周期內(nèi)所讀出的報文段的總位寬是否達到輸出位寬閾值;
[0088]其中,所述讀指針寄存器140,可以用于當?shù)谒谋容^器141判斷為是時結(jié)束當前時鐘周期的讀操作。
[0089]可見,該實施例可以在讀指針寄存器讀報文段的過程中對當前時鐘周期內(nèi)讀出的報文段的總位寬進行限制。
[0090]另外,在某些應(yīng)用場景下可能會根據(jù)收到包含報文尾標志的報文段確定需要輸出報文,在這些應(yīng)用場景下,當收到屬于同一報文的較多報文段卻未收到報文尾標志時,可能會需要一直等待報文尾標志而無法輸出報文,同時也無法及時釋放環(huán)狀緩存的存儲空間,造成效率低下。為了避免這一問題,如圖2所示,所述網(wǎng)絡(luò)設(shè)備還可以包括:
[0091]第五比較器142,可以用于判斷所述環(huán)狀緩存中所有未輸出的報文段是否不包含報文尾標志且所述未輸出的報文段的總位數(shù)達到輸出位寬閾值;
[0092]其中,所述讀指針寄存器140,可以用于當?shù)谖灞容^器判斷為是時確定需要輸出報文。
[0093]可見,在該實施例中,如果收到屬于同一報文的較多報文段卻未收到報文尾標志,可以根據(jù)未輸出的報文段的總位數(shù)達到輸出位寬閾值及時確定需要輸出報文,進而提高效率。
[0094]可以理解的是,由于本發(fā)明實施例中寫指針寄存器以及讀指針寄存器按環(huán)狀緩存的地址順序?qū)笪亩沃鸾M寫入或讀出,因此,所述地址順序具體可以為遞增的順序,也可以為遞減的順序。例如:
[0095]在本發(fā)明實施例一種可能的實現(xiàn)方式中,寫指針寄存器120和讀指針寄存器140可以按照地址遞增的順序?qū)懟蛘咦x。具體地,例如:
[0096]所述寫指針寄存器120,具體可以用于當需要在當前時鐘周期內(nèi)將網(wǎng)絡(luò)設(shè)備在當前時鐘周期所接收到的N組報文段進行緩存時,從所述起始寫地址開始,按所述環(huán)狀緩存的地址遞增的順序?qū)⑺邮盏腘組報文段逐組寫入所述環(huán)狀緩存,其中,N大于等于I ;
[0097]所述第一加法器130,具體可以用于根據(jù)更新的起始寫地址等于所述環(huán)狀緩存的起始寫地址開始遞增N個地址,計算出所述更新的起始寫地址;
[0098]且,如圖3所示,還可以包括:
[0099]第一比較器160,可以用于判斷所述當前時鐘周期之前,所述環(huán)狀緩存所保存的一個報文段是否包含報文尾標志;
[0100]第二比較器170,可以用于每當讀指針寄存器從一個地址讀出報文段時,判斷該地址的報文段是否包含報文尾標志;
[0101]其中,所述讀指針寄存器140,具體可以用于如果第一比較器160判斷出所述當前時鐘周期之前,所述環(huán)狀緩存110所保存的一個報文段包含報文尾標志,則在所述當前時鐘周期內(nèi)從環(huán)狀緩存110的所述起始讀地址開始逐個遞增地址讀出報文段,每當從一個地址讀出報文段時,如果第二比較器170判斷出該地址的報文段包含報文尾標志,當前時鐘周期的讀操作結(jié)束;
[0102]所述第二加法器150,具體可以用于根據(jù)所述更新的起始讀地址等于所述起始讀地址遞增M個地址,計算出更新的起始讀地址,其中,所述M為所述讀指針寄存器在所述當前時鐘周期內(nèi)所讀出的報文段的組數(shù)量。
[0103]需要說明的是,由于該實施例采用地址遞增的順序讀寫,因此,讀指針寄存器保存的起始讀地址以及寫指針寄存器保存的起始寫地址在復位后初始狀態(tài)時,均可以為O。
[0104]下面,結(jié)合以下兩個示例,對該實施例進行詳細說明。
[0105]例如,在一種可能的應(yīng)用場景下,假設(shè)輸入為2組數(shù)據(jù)總線輸入,每組總線都有相應(yīng)的VLD (valid,報文有效標志)/SOP (start of packet,報文頭標志)/EOP (end ofpacket,報文尾標志),其中,每組總線在一個時鐘周期內(nèi)輸入128bit的報文段數(shù)據(jù),需要解包輸出到384bit位寬的數(shù)據(jù)總線上,輸出總線上只有一組VLD/S0P/E0P標志和384bit數(shù)據(jù)。針對該應(yīng)用場景,至少需要搭建緩存深度為4的環(huán)狀緩存,例如,可以搭建緩存深度為5的環(huán)狀緩存,每個緩存地址可以存儲128bit數(shù)據(jù)和一些報文信息的環(huán)狀緩存。另外,還需要一個至少為log2 (4)bit的寫指針寄存器去記錄起始寫地址,一個至少為log2(4)bit的讀指針寄存器去記錄起始讀地址。當復位完成后,寫指針寄存器記錄的起始寫地址以及讀指針寄存器記錄的起始讀地址均為O。下面,對本發(fā)明實施例提供的網(wǎng)絡(luò)設(shè)備在以下幾個時鐘周期內(nèi)的解包輸出報文的過程進行介紹:
[0106]第I時鐘周期:寫指針寄存器從環(huán)狀緩存的地址O開始,寫入2組報文段,都沒有EOP標志;
[0107]第2時鐘周期,寫指針寄存器記錄的起始寫地址更新為2,讀指針寄存器的起始讀地址為0,第一比較器判斷出第2時鐘周期之前環(huán)狀緩存內(nèi)沒有任何一個報文段包含EOP標志,因此,在該第2時鐘周期內(nèi),不能輸出報文,在該第2時鐘周期內(nèi)寫入I組報文段,擁有EOP標志;
[0108]第3時鐘周期,寫指針寄存器記錄的起始寫地址更新為3,讀指針寄存器記錄的起始讀地址仍為0,由于第一比較器判斷出該第3時鐘周期之前,環(huán)狀緩存保存的一個報文段包含EOP標志,因此,讀指針寄存器從地址O開始,逐個遞增地址讀出報文段,直到遇到EOP標志,當前時鐘周期的讀操作結(jié)束,共讀出3組報文段,將該3組報文段拼接起來輸出;在該第3時鐘周期內(nèi)寫入2組報文段,都擁有EOP標志;
[0109]第4時鐘周期,寫指針寄存器記錄的起始寫地址更新為0(由于上一時鐘周期寫入2組報文段,從地址3遞增2個地址,由于緩存深度為5,即該環(huán)狀緩存的地址包括0,1,2,3,4,因此,從第3個地址遞增到第5個地址,第5個地址為地址0),讀指針寄存器記錄的起始讀地址為3,由于第一比較器判斷出該第4時鐘周期之前,環(huán)狀緩存保存的一個報文段包含EOP標志,因此,讀指針寄存器從地址3開始,逐個遞增地址讀出報文段,直到遇到EOP標志,當前時鐘周期的讀操作結(jié)束,共讀出I組報文段輸出;在該第4時鐘周期內(nèi)寫入2組報文段,第I組報文段有EOP標志;
[0110]第5時鐘周期,寫指針寄存器記錄的起始寫地址更新為2,讀指針寄存器記錄的起始讀地址為4,由于第一比較器判斷出該第5時鐘周期之前,環(huán)狀緩存保存的一個報文段包含EOP標志,因此,讀指針寄存器從地址4開始,逐個遞增地址讀出報文段,直到遇到EOP標志,當前時鐘周期的讀操作結(jié)束,共讀出I組報文段輸出;
[0111]第6時鐘周期,寫指針寄存器…(以此類推,在此不再贅述)。
[0112]再例如,在另一種可能的應(yīng)用場景下,假設(shè)輸入為3組數(shù)據(jù)總線輸入,每組總線都有相應(yīng)的VLD/S0P/E0P標志,其中,每組總線在一個時鐘周期內(nèi)輸入128bit的報文段數(shù)據(jù),需要解包輸出到512bit位寬的數(shù)據(jù)總線上,輸出總線上只有一組VLD/S0P/E0P標志和512bit數(shù)據(jù)。針對該應(yīng)用場景,至少需要搭建緩存深度為6的環(huán)狀緩存,例如,可以搭建緩存深度為8的環(huán)狀緩存,每個緩存地址可以存儲128bit數(shù)據(jù)和一些報文信息的環(huán)狀緩存。另外,還需要一個至少為log2 (6)bit的寫指針寄存器去記錄起始寫地址,一個至少為log2 (6)bit的讀指針寄存器去記錄起始讀地址。當復位完成后,寫指針寄存器記錄的起始寫地址以及讀指針寄存器記錄的起始讀地址均為O。下面,對本發(fā)明實施例提供的網(wǎng)絡(luò)設(shè)備在以下幾個時鐘周期內(nèi)的解包輸出報文的過程進行介紹:
[0113]第I時鐘周期:寫指針寄存器從環(huán)狀緩存的地址O開始,寫入I組報文段,有EOP標志;
[0114]第2時鐘周期,寫指針寄存器記錄的起始寫地址更新為1,讀指針寄存器記錄的起始讀地址為0,第一比較器判斷出第2時鐘周期之前環(huán)狀緩存內(nèi)有一個報文段包含EOP標志,因此,在該第2時鐘周期內(nèi),輸出地址O保存的I組報文段,在該第2時鐘周期內(nèi)寫入3組報文,均無EOP標志;
[0115]第3時鐘周期`,寫指針寄存器記錄的起始寫地址更新為4,讀指針寄存器記錄的起始讀地址為1,第一比較器判斷出第3時鐘周期之前環(huán)狀緩存內(nèi)沒有報文段包含EOP標志,因此,該第3時鐘周期不輸出報文,在該第3時鐘周期內(nèi)寫入3組報文,無EOP標志;
[0116]第4時鐘周期,寫指針寄存器記錄的起始寫地址更新為0,讀指針寄存器記錄的起始讀地址為1,第一比較器判斷出第4時鐘周期之前環(huán)狀緩存內(nèi)沒有EOP標志,但是,由于第五比較器判斷出環(huán)狀緩存中未輸出的報文段的總位數(shù)達到輸出位寬閾值(512bit),讀指針寄存器根據(jù)第五比較器判斷為是,確定需要輸出報文,因此,讀指針寄存器從地址I開始讀出4組報文段(4組報文段的總位寬達到輸出位寬閾值),輸出所讀出的4組報文段,本周期寫入2組報文,第二組有EOP標志;
[0117]第5時鐘周期,寫指針寄存器記錄的起始寫地址更新為2,讀指針寄存器記錄的起始讀地址為5,第一比較器判斷出第5時鐘周期之前環(huán)狀緩存內(nèi)有EOP標志,從讀指針位置取出4組報文輸出;
[0118]第6時鐘周期,...(以此類推,不再贅述)。
[0119]在本發(fā)明實施例另一種可能的實現(xiàn)方式中,寫指針寄存器120和讀指針寄存器140可以按照地址遞減的順序?qū)懟蛘咦x。具體地,例如:
[0120]所述寫指針寄存器120,具體可以用于當需要在當前時鐘周期內(nèi)將網(wǎng)絡(luò)設(shè)備在當前時鐘周期所接收到的N組報文段進行緩存時,從所述起始寫地址開始,按所述環(huán)狀緩存的地址遞減的順序?qū)⑺邮盏腘組報文段逐組寫入所述環(huán)狀緩存,其中,N大于等于I ;
[0121]所述第一加法器130,具體可以用于根據(jù)所述更新的起始寫地址等于所述環(huán)狀緩存的起始寫地址開始遞減N個地址,計算出更新的起始寫地址;
[0122]且,還包括:
[0123]第一比較器160,可以用于判斷所述當前時鐘周期之前,所述環(huán)狀緩存所保存的還未被輸出的一個報文段是否包含報文尾標志;
[0124]第二比較器170,可以用于判斷所述讀指針寄存器所讀出的報文段是否包含報文尾標志;
[0125]其中,所述讀指針寄存器140,具體可以用于如果第一比較器160判斷出所述當前時鐘周期之前,所述環(huán)狀緩存110所保存的一個報文段包含報文尾標志,則在所述當前時鐘周期內(nèi)從環(huán)狀緩存110的所述起始讀地址開始逐個遞減地址讀出報文段,每當從一個地址讀出報文段時,如果第二比較器170判斷出所讀出的報文段包含報文尾標志,當前時鐘周期的讀操作結(jié)束;
[0126]所述第二加法器150,具體可以用于根據(jù)所述更新的起始讀地址等于所述環(huán)狀緩存Iio的起始讀地址開始遞減M個地址,計算出更新的起始讀地址,所述M為所讀出的報文段的組數(shù)量。
[0127]需要說明的是,由于該實施例采用地址遞減的順序讀寫,因此,讀指針寄存器保存的起始讀地址以及寫指針寄存器保存的起始寫地址在復位后初始狀態(tài)時,均可以為所述環(huán)狀緩存的存儲地址中的最大值。
[0128]與上述本發(fā)明實施例提供的網(wǎng)絡(luò)設(shè)備相對應(yīng)的,本發(fā)明實施例還提供一種解包輸出報文的方法。
[0129]請例如,請參閱圖4所示的本發(fā)明實施例提供的解包輸出報文的方法流程示意圖之一。其中,本實施例所述的方法可以應(yīng)用于任何需要解包輸出報文的網(wǎng)絡(luò)設(shè)備,例如網(wǎng)絡(luò)芯片等。如圖所示,所述方法可以包括:
[0130]S410、保存環(huán)狀緩存的起始寫地址以及起始讀地址,其中,所述環(huán)狀緩存用于保存所寫入的報文段;
[0131]S420、當需要將網(wǎng)絡(luò)設(shè)備所接收到的至少一組報文段進行緩存時,從所述起始寫地址開始,按所述環(huán)狀緩存的地址順序?qū)⑺邮盏膱笪亩沃鸾M寫入所述環(huán)狀緩存,其中,一個地址寫入一組報文段;
[0132]S430、根據(jù)寫入所述環(huán)狀緩存的報文段的組數(shù)量計算出更新的起始寫地址;
[0133]S440、根據(jù)計算出的更新的起始寫地址,對保存的起始寫地址進行更新;
[0134]S450、當需要輸出報文時,從所述環(huán)狀緩存的所述起始讀地址開始按所述地址順序,從所述環(huán)狀緩存讀出屬于同一報文的報文段;
[0135]S460、輸出所讀出的報文段;
[0136]S470、根據(jù)所讀出的報文段的組數(shù)量計算出更新的起始讀地址;
[0137]S480、根據(jù)計算出的更新的起始讀地址,對保存的起始讀地址進行更新。
[0138]可見,在本實施例中,當網(wǎng)絡(luò)設(shè)備輸入端同時接收到多組數(shù)據(jù)總線輸入的多組報文段時,由于在網(wǎng)絡(luò)設(shè)備中采用環(huán)狀緩存110保存寫入的報文段,因此,在從環(huán)狀緩存讀出報文段的同時,被釋放的存儲位置就成為了最后一個存有有效報文段的位置之后的新的空閑存儲位置,無需在緩存中移動報文段去釋放存儲空間,在輸出時可以簡單地遵循地址順序輸出正確的報文,而且,由于保存了起始讀地址,寫指針寄存器保存了起始寫地址,根據(jù)讀或?qū)懗龅膱笪亩蔚慕M數(shù)量更新起始讀或?qū)懙刂罚虼?,可以根?jù)所保存的起始地址找到正確的寫入位置以及讀出位置,無需在緩存中移動報文段去確保正確的讀/寫位置,實現(xiàn)了網(wǎng)絡(luò)設(shè)備在解包輸出報文時無需進行數(shù)據(jù)移動操作,提高效率的目的。
[0139]需要說明的是,本發(fā)明實施例所述的環(huán)狀緩存110可以使用若干組寄存器或者靜態(tài)隨機存儲器(SRAM,Static RAM)搭建構(gòu)成,具體可以根據(jù)應(yīng)用場景需要搭建。例如,由于寄存器讀寫速度較快,可以使用寄存器搭建環(huán)狀緩存。具體地,例如,可以使用若干組寄存器搭建成線性緩存,再由最后一組寄存器記錄第一組寄存器的地址,從而形成環(huán)狀緩存。其中,一組寄存器對應(yīng)環(huán)狀緩存的一個地址。在本發(fā)明實施例中,由于環(huán)狀緩存的一個地址寫入一組報文段,因此,可以根據(jù)報文段的位寬以及緩存深度確定需要使用的寄存器的數(shù)量。例如,在一種可能的應(yīng)用場景下,如果一組報文段的位寬是134bit,那么環(huán)狀緩存的一個地址就需要134bit的寄存器,換句話說,一組寄存器要有134個寄存器,如果環(huán)狀緩存的緩存深度或稱環(huán)狀緩存的地址個數(shù)為8,那么總共需要134*8個寄存器就能夠搭建出該場景下所需要的環(huán)狀緩存。
[0140]可以理解的是,所述環(huán)狀緩存能夠存儲的有效報文段的數(shù)量是由緩存深度決定的。因此,為了避免寫入的報文段的數(shù)量超過環(huán)狀緩存的緩存深度而導致數(shù)據(jù)溢出,可以預(yù)先設(shè)置緩存閾值,在讀/寫報文段的過程中,對環(huán)狀緩存中所存儲的有效報文段的數(shù)量進行計算,再對有效報文段的數(shù)量與緩存閾值進行比較以確定是否禁止或允許寫入。具體地,例如,參見圖5所示本發(fā)明實施例提供的解包輸出報文的方法流程示意圖之二,當將所接收的報文段寫入所述環(huán)狀緩存時,還可以包括:S421、將有效數(shù)據(jù)數(shù)量加上寫入的報文段的組數(shù)量;
[0141]當從所述環(huán)狀緩存讀出報文段時,還可以包括:S451、將有效數(shù)據(jù)量減去讀出的報文段的組數(shù)量;
[0142]且還可以包括:
[0143]S481、判斷所述有效數(shù)據(jù)數(shù)量是否達到緩存閾值;
[0144]S482、當判斷為是時,禁止向所述環(huán)狀緩存進行寫入操作;
[0145]S483、當判斷為否時,允許向所述環(huán)狀緩存進行寫入操作。[0146]另外,由于在一個時鐘周期內(nèi)所讀出以及輸出的報文段的總位寬需要與輸出端的數(shù)據(jù)總線的位寬相適應(yīng),因此,為了一個時鐘周期內(nèi)所輸出的報文段的總位寬不超出輸出端的數(shù)據(jù)總線的位寬,可以預(yù)先根據(jù)輸出端的數(shù)據(jù)總線的位寬設(shè)置輸出位寬閾值,利用該輸出位寬閾值去限制一個時鐘周期內(nèi)所輸出的報文段的總位寬。具體地,如圖6所示,所述方法還可以包括:
[0147]S452、每當從所述環(huán)狀緩存讀出屬于同一報文的一個報文段時,判斷在當前時鐘周期內(nèi)所讀出的報文段的總位寬是否達到輸出位寬閾值;
[0148]S453、當判斷為是時結(jié)束當前時鐘周期的讀操作;
[0149]可見,該實施例可以在讀指針寄存器讀報文段的過程中對當前時鐘周期內(nèi)讀出的報文段的總位寬進行限制。
[0150]另外,在某些應(yīng)用場景下可能會根據(jù)收到包含報文尾標志的報文段確定需要輸出報文,在這些應(yīng)用場景下,當收到屬于同一報文的較多報文段卻未收到報文尾標志時,可能會需要一直等待報文尾標志而無法輸出報文,同時也無法及時釋放環(huán)狀緩存的存儲空間,造成效率低下。為了避免這一問題,如圖6所示,所述方法還可以包括:
[0151]S411、判斷所述環(huán)狀緩存中所有未輸出的報文段是否不包含報文尾標志且所述未輸出的報文段的總位數(shù)達到輸出位寬閾值;
[0152]S412、當判斷為是時確定需要輸出報文。
[0153]可見,在該實施例中,如果收到屬于同一報文的較多報文段卻未收到報文尾標志,可以根據(jù)未輸出的報文段的總位數(shù)達到輸出位寬閾值及時確定需要輸出報文,進而提高效率。
[0154]可以理解的是,由于本發(fā)明實施例中按環(huán)狀緩存的地址順序?qū)笪亩沃鸾M寫入或讀出,因此,所述地址順序具體可以為遞增的順序,也可以為遞減的順序。例如:
[0155]在本發(fā)明實施例一種可能的實現(xiàn)方式中,可以按照地址遞增的順序?qū)懟蛘咦x。具體地,例如,如圖7所示:
[0156]步驟S420所述當需要將網(wǎng)絡(luò)設(shè)備所接收到的至少一組報文段進行緩存時,從所述起始寫地址開始,按所述環(huán)狀緩存的地址順序?qū)⑺邮盏膱笪亩沃鸾M寫入所述環(huán)狀緩存可以包括:
[0157]S421、當需要在當前時鐘周期內(nèi)將網(wǎng)絡(luò)設(shè)備在當前時鐘周期所接收到的N組報文段進行緩存時,從所述起始寫地址開始,按所述環(huán)狀緩存的地址遞增的順序?qū)⑺邮盏腘組報文段逐組寫入所述環(huán)狀緩存,其中,N大于等于I ;
[0158]步驟S430所述根據(jù)寫入所述環(huán)狀緩存的報文段的組數(shù)量計算出更新的起始寫地址可以包括:
[0159]根據(jù)更新的起始寫地址等于所述環(huán)狀緩存的起始寫地址開始遞增N個地址,計算出所述更新的起始寫地址;
[0160]步驟S450所述當需要輸出報文時,從所述環(huán)狀緩存的所述起始讀地址開始按所述地址順序,從所述環(huán)狀緩存讀出屬于同一報文的報文段可以包括:
[0161]如果在所述當前時鐘周期之前,所述環(huán)狀緩存所保存的一個報文段包含報文尾標志,在所述當前時鐘周期內(nèi)從環(huán)狀緩存的所述起始讀地址開始逐個遞增地址讀出報文段,每當從一個地址讀出報文段時,如果判斷出所讀出的報文段包含報文尾標志,當前時鐘周期的讀操作結(jié)束;
[0162]步驟S470所述根據(jù)所讀出的報文段的組數(shù)量計算出更新的起始讀地址可以包括:
[0163]根據(jù)所述更新的起始讀地址等于所述環(huán)狀緩存的起始讀地址開始遞增M個地址,計算出更新的起始讀地址,所述M為在所述當前時鐘周期內(nèi)所讀出的報文段的組數(shù)量。
[0164]需要說明的是,由于該實施例采用地址遞增的順序讀寫,因此,讀指針寄存器保存的起始讀地址以及寫指針寄存器保存的起始寫地址在復位后初始狀態(tài)時,均可以為O。
[0165]在本發(fā)明實施例另一種可能的實現(xiàn)方式中,可以按照地址遞減的順序?qū)懟蛘咦x。具體地,例如:如圖8所示,步驟S420所述當需要將網(wǎng)絡(luò)設(shè)備所接收到的至少一組報文段進行緩存時,從所述起始寫地址開始,按所述環(huán)狀緩存的地址順序?qū)⑺邮盏膱笪亩沃鸾M寫入所述環(huán)狀緩存可以包括:
[0166]當需要在當前時鐘周期內(nèi)將網(wǎng)絡(luò)設(shè)備在當前時鐘周期所接收到的N組報文段進行緩存時,從所述起始寫地址開始,按所述環(huán)狀緩存的地址遞減的順序?qū)⑺邮盏腘組報文段逐組寫入所述環(huán)狀緩存,其中,N大于等于I ;
[0167]步驟S430所述根據(jù)寫入所述環(huán)狀緩存的報文段的組數(shù)量計算出更新的起始寫地址可以包括:
[0168]根據(jù)更新的起始寫地址等于所述環(huán)狀緩存的起始寫地址開始遞減N個地址,計算出所述更新的起始寫地址;
[0169]步驟S450所述當需要輸出報文時,從所述環(huán)狀緩存的所述起始讀地址開始按所述地址順序,從所述環(huán)狀緩存讀出屬于同一報文的報文段可以包括:
[0170]如果在所述當前時鐘周期之前,所述環(huán)狀緩存所保存的一個報文段包含報文尾標志,則在所述當前時鐘周期內(nèi)從環(huán)狀緩存的所述起始讀地址開始逐個遞減地址讀出報文段,每當從一個地址讀出報文段時,如果判斷出所讀出的報文段包含報文尾標志,當前時鐘周期的讀操作結(jié)束;
[0171]步驟S470所述根據(jù)所讀出的報文段的組數(shù)量計算出更新的起始讀地址可以包括:
[0172]根據(jù)所述更新的起始讀地址等于所述環(huán)狀緩存的起始讀地址開始遞減M個地址,計算出更新的起始讀地址,所述M為所讀出的報文段的組數(shù)量。
[0173]需要說明的是,由于該實施例采用地址遞增的順序讀寫,因此,讀指針寄存器保存的起始讀地址以及寫指針寄存器保存的起始寫地址在復位后初始狀態(tài)時,均可以為所述環(huán)狀緩存的存儲地址中的最大值。
[0174]所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。
[0175]在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。[0176]所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
[0177]另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
[0178]所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(ROM,Read-OnlyMemory)、隨機存取存儲器(RAM, Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。[0179]而且,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
[0180]以上所述,以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍。
【權(quán)利要求】
1.一種網(wǎng)絡(luò)設(shè)備,其特征在于,包括: 環(huán)狀緩存,用于保存寫指針寄存器寫入的報文段; 寫指針寄存器,用于保存環(huán)狀緩存的起始寫地址,當需要將網(wǎng)絡(luò)設(shè)備所接收到的至少一組報文段進行緩存時,從所述起始寫地址開始,按所述環(huán)狀緩存的地址順序?qū)⑺邮盏膱笪亩沃鸾M寫入所述環(huán)狀緩存,其中,一個地址寫入一組報文段;根據(jù)第一加法器計算出的更新的起始寫地址,對保存的起始寫地址進行更新; 第一加法器,用于根據(jù)寫指針寄存器寫入所述環(huán)狀緩存的報文段的組數(shù)量計算出更新的起始與地址; 讀指針寄存器,用于保存環(huán)狀緩存的起始讀地址,當需要輸出報文時,從所述環(huán)狀緩存的起始讀地址開始按所述地址順序,從所述環(huán)狀緩存讀出屬于同一報文的報文段,輸出所讀出的報文段,根據(jù)第二加法器計算出的更新的起始讀地址,對保存的起始讀地址進行更新; 第二加法器,用于根據(jù) 讀指針寄存器所讀出的報文段的組數(shù)量計算出更新的起始讀地址。
2.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)設(shè)備,其特征在于,所述寫指針寄存器,具體用于當需要在當前時鐘周期內(nèi)將網(wǎng)絡(luò)設(shè)備在當前時鐘周期所接收到的N組報文段進行緩存時,從所述起始寫地址開始,按所述環(huán)狀緩存的地址遞增的順序?qū)⑺邮盏腘組報文段逐組寫入所述環(huán)狀緩存,其中,N大于等于I ; 所述第一加法器,用于根據(jù)更新的起始寫地址等于所述環(huán)狀緩存的起始寫地址開始遞增N個地址,計算出所述更新的起始寫地址; 且還包括: 第一比較器,用于判斷所述當前時鐘周期之前,所述環(huán)狀緩存所保存的一個報文段是否包含報文尾標志; 第二比較器,用于每當讀指針寄存器從一個地址讀出報文段時,判斷該地址的報文段是否包含報文尾標志; 其中,所述讀指針寄存器,具體用于如果第一比較器判斷出所述當前時鐘周期之前,所述環(huán)狀緩存所保存的一個報文段包含報文尾標志,在所述當前時鐘周期內(nèi)從環(huán)狀緩存的所述起始讀地址開始逐個遞增地址讀出報文段,每當從一個地址讀出報文段時,如果第二比較器判斷出該地址的報文段包含報文尾標志,當前時鐘周期的讀操作結(jié)束; 所述第二加法器,具體用于根據(jù)所述更新的起始讀地址等于所述環(huán)狀緩存的起始讀地址開始遞增M個地址,計算出更新的起始讀地址,所述M為所述讀指針寄存器在所述當前時鐘周期內(nèi)所讀出的報文段的組數(shù)量。
3.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)設(shè)備,其特征在于,所述寫指針寄存器,具體用于當需要在當前時鐘周期內(nèi)將網(wǎng)絡(luò)設(shè)備在當前時鐘周期所接收到的N組報文段進行緩存時,從所述起始寫地址開始,按所述環(huán)狀緩存的地址遞減的順序?qū)⑺邮盏腘組報文段逐組寫入所述環(huán)狀緩存,其中,N大于等于I ; 所述第一加法器,具體用于根據(jù)所述更新的起始寫地址等于所述環(huán)狀緩存的起始寫地址開始遞減N個地址,計算出更新的起始寫地址; 且,還包括:第一比較器,用于判斷所述當前時鐘周期之前,所述環(huán)狀緩存所保存的還未被輸出的一個報文段是否包含報文尾標志; 第二比較器,用于判斷所述讀指針寄存器所讀出的報文段是否包含報文尾標志; 其中,所述讀指針寄存器,具體用于如果第一比較器判斷出所述當前時鐘周期之前,所述環(huán)狀緩存所保存的一個報文段包含報文尾標志,則在所述當前時鐘周期內(nèi)從環(huán)狀緩存的所述起始讀地址開始逐個遞減地址讀出報文段,每當從一個地址讀出報文段時,如果第二比較器判斷出所讀出的報文段包含報文尾標志,當前時鐘周期的讀操作結(jié)束; 所述第二加法器,具體用于根據(jù)所述更新的起始讀地址等于所述環(huán)狀緩存的起始讀地址開始遞減M個地址,計算出更新的起始讀地址,所述M為所讀出的報文段的組數(shù)量。
4.根據(jù)權(quán)利要求1-3任一項所述的網(wǎng)絡(luò)設(shè)備,其特征在于,還包括: 第三加法器,用于當所述寫指針寄存器將所接收的報文段寫入所述環(huán)狀緩存時,將有效數(shù)據(jù)數(shù)量加上寫入的報文段的組數(shù)量,當所述讀指針寄存器從所述環(huán)狀緩存讀出報文段時,將有效數(shù)據(jù)量減去讀出的報文段的組數(shù)量; 第三比較器,用于判斷所述有效數(shù)據(jù)數(shù)量是否達到緩存閾值; 其中,所述寫指針寄存器,用于當所述第三比較器判斷為是時,禁止向所述環(huán)狀緩存進行寫入操作,當所述第三比較器判斷為否時,允許向所述環(huán)狀緩存進行寫入操作。
5.根據(jù)權(quán)利要求1-3任一項所述的網(wǎng)絡(luò)設(shè)備,其特征在于,還包括:第四比較器,用于每當所述讀指針寄存器從所述環(huán)狀緩存讀出屬于同一報文的一個報文段時,判斷所述讀指針寄存器在當前時鐘周期內(nèi)所讀出的報文段的總位寬是否達到輸出位寬閾值;所述讀指針寄存器,用于當?shù)谒谋容^器判斷為是時結(jié)束當前時鐘周期的讀操作; 或者, 第五比較器,用于判斷所述環(huán)狀緩存中所有未輸出的報文段是否不包含報文尾標志且所述未輸出的報文段的總位數(shù)達到輸出位寬閾值; 所述讀指針寄存器,用于當?shù)谖灞容^器判斷為是時確定需要輸出報文。
6.一種解包輸出報文的方法,其特征在于,包括: 保存環(huán)狀緩存的起始寫地址以及起始讀地址,其中,所述環(huán)狀緩存用于保存所寫入的報文段; 當需要將網(wǎng)絡(luò)設(shè)備所接收到的至少一組報文段進行緩存時,從所述起始寫地址開始,按所述環(huán)狀緩存的地址順序?qū)⑺邮盏膱笪亩沃鸾M寫入所述環(huán)狀緩存,其中,一個地址寫入一組報文段;根據(jù)寫入所述環(huán)狀緩存的報文段的組數(shù)量計算出更新的起始寫地址;根據(jù)計算出的更新的起始寫地址,對保存的起始寫地址進行更新; 當需要輸出報文時,從所述環(huán)狀緩存的所述起始讀地址開始按所述地址順序,從所述環(huán)狀緩存讀出屬于同一報文的報文段;輸出所讀出的報文段;根據(jù)所讀出的報文段的組數(shù)量計算出更新的起始讀地址;根據(jù)計算出的更新的起始讀地址,對保存的起始讀地址進行更新。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述當需要將網(wǎng)絡(luò)設(shè)備所接收到的至少一組報文段進行緩存時,從所述起始寫地址開始,按所述環(huán)狀緩存的地址順序?qū)⑺邮盏膱笪亩沃鸾M寫入所述環(huán)狀緩存包括:當需要在當前時鐘周期內(nèi)將網(wǎng)絡(luò)設(shè)備在當前時鐘周期所接收到的N組報文段進行緩存時,從所述起始寫地址開始,按所述環(huán)狀緩存的地址遞增的順序?qū)⑺邮盏腘組報文段逐組寫入所述環(huán)狀緩存,其中,N大于等于I ; 所述根據(jù)寫入所述環(huán)狀緩存的報文段的組數(shù)量計算出更新的起始寫地址包括:根據(jù)更新的起始寫地址等于所述環(huán)狀緩存的起始寫地址開始遞增N個地址,計算出所述更新的起始與地址; 所述當需要輸出報文時,從所述環(huán)狀緩存的所述起始讀地址開始按所述地址順序,從所述環(huán)狀緩存讀出屬于同一報文的報文段包括:如果在所述當前時鐘周期之前,所述環(huán)狀緩存所保存的一個報文段包含報文尾標志,在所述當前時鐘周期內(nèi)從環(huán)狀緩存的所述起始讀地址開始逐個遞增地址讀出報文段,每當從一個地址讀出報文段時,如果判斷出所讀出的報文段包含報文尾標志,當前時鐘周期的讀操作結(jié)束; 所述根據(jù)所讀出的報文段的組數(shù)量計算出更新的起始讀地址包括:根據(jù)所述更新的起始讀地址等于所述環(huán)狀緩存的起始讀地址開始遞增M個地址,計算出更新的起始讀地址,所述M為在所述當前時鐘周期內(nèi)所讀出的報文段的組數(shù)量。
8.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述當需要將網(wǎng)絡(luò)設(shè)備所接收到的至少一組報文段進行緩存時,從所述起始寫地址開始,按所述環(huán)狀緩存的地址順序?qū)⑺邮盏膱笪亩沃鸾M寫入所述環(huán)狀緩存包括:當需要在當前時鐘周期內(nèi)將網(wǎng)絡(luò)設(shè)備在當前時鐘周期所接收到的N組報文段進行緩存時,從所述起始寫地址開始,按所述環(huán)狀緩存的地址遞減的順序?qū)⑺邮盏腘組報文段逐組寫入所述環(huán)狀緩存,其中,N大于等于I ; 所述根據(jù)寫入所述環(huán)狀緩存的報文段的組數(shù)量計算出更新的起始寫地址包括:根據(jù)所述更新的起始寫地址等于所述環(huán)狀緩存的起始寫地址開始遞減N個地址,計算出更新的起始與地址; 所述當需要輸出報文時,從所述環(huán)狀緩存的所述起始讀地址開始按所述地址順序,從所述環(huán)狀緩存讀出屬于同一報文的報文段包括:如果在所述當前時鐘周期之前,所述環(huán)狀緩存所保存的一個報文段包含報文尾標志,則在所述當前時鐘周期內(nèi)從環(huán)狀緩存的所述起始讀地址開始逐個遞減地址讀 出報文段,每當從一個地址讀出報文段時,如果判斷出所讀出的報文段包含報文尾標志,當前時鐘周期的讀操作結(jié)束; 所述根據(jù)所讀出的報文段的組數(shù)量計算出更新的起始讀地址包括:根據(jù)所述更新的起始讀地址等于所述環(huán)狀緩存的起始讀地址開始遞減M個地址,計算出更新的起始讀地址,所述M為所讀出的報文段的組數(shù)量。
9.根據(jù)權(quán)利要求6-8任一項所述的方法,其特征在于,當將所接收的報文段寫入所述環(huán)狀緩存時,還包括:將有效數(shù)據(jù)數(shù)量加上寫入的報文段的組數(shù)量; 當從所述環(huán)狀緩存讀出報文段時,還包括:將有效數(shù)據(jù)量減去讀出的報文段的組數(shù)量; 且還包括: 判斷所述有效數(shù)據(jù)數(shù)量是否達到緩存閾值; 當判斷為是時,禁止向所述環(huán)狀緩存進行寫入操作; 當判斷為否時,允許向所述環(huán)狀緩存進行寫入操作。
10.根據(jù)權(quán)利要求6-8任一項所述的方法,其特征在于,還包括: 每當從所述環(huán)狀緩存讀出屬于同一報文的一個報文段時,判斷在當前時鐘周期內(nèi)所讀出的報文段的總位寬是否達到 輸出位寬閾值;當判斷為是時結(jié)束當前時鐘周期的讀操作;或者, 判斷所述環(huán)狀緩存中所有未輸出的報文段是否不包含報文尾標志且所述未輸出的報文段的總位數(shù)達到輸出位寬閾值;當`判斷為是時確定需要輸出報文。
【文檔編號】H04L12/879GK103746940SQ201310746676
【公開日】2014年4月23日 申請日期:2013年12月30日 優(yōu)先權(quán)日:2013年12月30日
【發(fā)明者】楊升, 王長宏 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1