專利名稱:Atm信元重組共享緩存系統(tǒng)及其實現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計算機通信系統(tǒng)領(lǐng)域,具體涉及ATM技術(shù),尤其涉及一種ATM信元重組共享緩存系統(tǒng)。此外,本發(fā)明還涉及一種ATM信元重組共享緩存的實現(xiàn)方法。
背景技術(shù):
ATM全稱為“Asynchronous Transfer Mode”,中文名為“異步傳輸模式”。ATM是一項數(shù)據(jù)傳輸技術(shù)。ATM是以信元為基礎(chǔ)的一種分組交換和復(fù)用技術(shù),它是一種為了多種業(yè)務(wù)設(shè)計的通用的面向連接的傳輸模式。其中ATM重組位于ATM的AAL(ATM adaptation layer, ATM適配層)層中SAR(segmentation and reassembly,分割和重組)功能的一部分,用于完成將接收到的ATM信元重組成上層能夠辨識的格式,如以太網(wǎng)包,IP包。ATM重組需要緩存用于接收基于PVC(指在兩個用戶(DTE)之間建立起來的永久性虛電路連接,PVC是通過網(wǎng)管手工建立的,兩端用戶一開機即可使用)的信元。每個 PVC攢齊一個包(即收到尾信元)后,就可從緩存中調(diào)度出該包做ATM的重組。由于在 DSLAM(Digital SubscriberLine Access Multiplexer,數(shù)字用戶線路接入復(fù)用器)芯片中需求的PVC比較多,勢必意味著該緩存容量要求高。每個PVC維持一個包和一個信元的計數(shù)器。當(dāng)包計數(shù)器不為0時就通知調(diào)度模塊該PVC攢齊了一個數(shù)據(jù)包,準(zhǔn)備好做ATM重組。 當(dāng)出現(xiàn)擁塞時用信元計數(shù)器實現(xiàn)早期包丟棄(EPD)和部分包丟棄(PPD)。從傳統(tǒng)實現(xiàn)方式看存在如下問題1)硬件實現(xiàn)往往外掛RAM(DDR,SDRAM)作為接收緩存,在高速流量情況下很難保證帶寬要求。2)出現(xiàn)擁塞的時候PPD結(jié)合EPD也還是很難保證錯包進入重組功能,導(dǎo)致后續(xù)流
量有震動。3)需要在多PVC(可能多至1K)之間做調(diào)度,增加難度和硬件資源。4)如果始終接收不到某個PVC數(shù)據(jù)包尾信元,那么該PVC數(shù)據(jù)包之前已存信元是不會調(diào)度出去,占用了緩存空間影響其它PVC的接收。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種ATM信元重組共享緩存的實現(xiàn)方法,該方法能清除不需要的信元,同時完成釋放相應(yīng)的緩存空間,會使緩存管理更加公平合理,處理帶寬高,邏輯實現(xiàn)簡單。為此,本發(fā)明還提供一種ATM信元重組共享緩存系統(tǒng)。為解決上述技術(shù)問題,本發(fā)明一種ATM信元重組共享緩存的實現(xiàn)方法,采用片內(nèi) SRAM (SRAM是英文Matic RAM的縮寫,它是一種具有靜止存取功能的內(nèi)存,不需要刷新電路即能保存它內(nèi)部存儲的數(shù)據(jù))作為接收緩存,所有PVC共享該緩存,用鏈表實現(xiàn),該方法主要包括如下步驟(1)初始化鏈表,建立FREE鏈表和ACTIVE鏈表;該FREE鏈表指向緩存剩余空間, 該ACTIVE鏈表表示被緩存PVC包(或稱PVC數(shù)據(jù)包)占用空間;初始化每個PVC屬性值為
O)PVC接收信元,判斷接收到的信元是否是尾信元;接收到非尾信元時進入步驟 (3),接收到尾信元時進入步驟;(3)接收到非尾信元時,讀取PVC屬性值判斷是否能寫入緩存,如是,則從FREE鏈表中申請一個地址存入共享緩存,同時更新該PVC屬性值;如否,則僅僅更新PVC屬性值,同時丟棄該信元;(4)接收到尾信元時,讀取PVC屬性值判斷是否能寫入緩存,如是,則從FREE鏈表中申請一個地址存入共享緩存,把該PVC包寫入ACTIVE鏈表中,同時更新該PVC屬性值,并且把該PVC包的信息寫入FIFO (FIFO是英文First In First Out的縮寫,是一種先入先出的數(shù)據(jù)緩存器);如否,則更新PVC屬性值,并且丟棄該信元,同時把原來寫入緩存信元的地址寫入FREE鏈表完成鏈表rollback(回滾)功能;在步驟⑵、(3)、(4)的過程中,掃描器固定時序地訪問PVC屬性值和鏈表。在步驟(1)中,所述PVC屬性值為CRT_CELL_NUM表示當(dāng)前PVC包已存信元數(shù)目, ALL_CELL_NUM表示該PVC所有包已存信元數(shù)目,ERR0R_FLAG表示當(dāng)前PVC包是否是錯誤或者丟信元,ACTIVE_FLAG表示該PVC是否在接收信元。在步驟C3)和步驟(4)中,所述讀取PVC屬性值判斷是否能寫入緩存,其判斷過程如下比較ALL_CELL_NUM是否小于最大門限且同時ERR0R_FLAG是否是0,如是則能寫入緩存。在步驟(3)中,如是,則從FREE鏈表中申請一個地址存入共享緩存,同時更新該 PVC屬性值,所述更新該PVC屬性值具體為CRT_CELL_NUM加1,ALL_CELL_NUM加1,ERR0R_ FLAG 寫入 0,ACTIVE_FLAG 寫入 1。在步驟(3)中,如否,則僅僅更新PVC屬性值,具體為CRT_CELL_NUM保持不變, ALL_CELL_NUM 保持不變,ERR0R_FLAG 寫入 1,ACTIVE_FLAG 寫入 1。在步驟(4)中,如是,則從FREE鏈表中申請一個地址存入共享緩存,把該PVC包寫入ACTIVE鏈表中,同時更新該PVC屬性值,所述更新該PVC屬性值具體為CRT_CELL_NUM寫入 0,ALL_CELL_NUM 加 1,ERR0R_FLAG 寫入 0,ACTIVE_FLAG 寫入 0。在步驟⑷中,如否,則更新PVC屬性值,具體為CRT_CELL_NUM寫入0,ALL_CELL_ NUM 減去原來的 CRT_CELL_NUM,ERR0R_FLAG 寫入 0,ACTIVE_FLAG 寫入 1。在步驟C3)和步驟(4)中,所述從FREE鏈表中申請一個地址存入共享緩存的過程中還包括如下步驟記錄PVC指針;該PVC指針是PVC頭指針或尾指針,指當(dāng)前PVC包的第一個信元在緩存中的地址以及當(dāng)前信元在緩存中的地址;在步驟(4)中,當(dāng)接收到尾信元之后,如判斷可以寫入緩存,則把該PVC頭指針串接在ACTIVE鏈后面,完成該PVC包的入鏈;如判斷不可以寫入緩存或者尾信元超時,則把該PVC頭指針串接在FREE鏈后面,完成該鏈表的rollkick功能。所述在步驟0)、(3)、(4)的過程中,掃描器固定時序地訪問PVC屬性值和鏈表,具體為如果發(fā)現(xiàn)ACTIVE_FLAG為1,表明尾信元未超時,則僅僅把ACTIVE_FLAG寫成0,其他值不變;如果ACTIVE_FLAG為0,表明尾信元超時,就更新PVC屬性值,CRT_CELL_NUM寫入 0,ALL_CELL_NUM 減去原來的 CRT_CELL_NUM,ERR0R_FLAG 寫入 0,ACTIVE_FLAG 寫入 1,且把原來已存信元的地址寫入FREE鏈表完成了鏈表rollkick功能。
此外,本發(fā)明還提供一種ATM信元重組共享緩存系統(tǒng),包括PVC,兩個用戶之間建立起來的永久性虛電路,用于接收信元;采用片內(nèi)SRAM作為接收緩存,該PVC共享該緩存;鏈表,包括指向緩存剩余空間的FREE鏈表和表示被緩存PVC包占用空間的ACTIVE 鏈表,該FREE鏈表用于接收PVC的申請,將FREE鏈表中的地址傳送到PVC,并通過PVC將該地址存入該緩存;掃描器,用于固定時序的訪問PVC的屬性值和鏈表;FIFO,用于當(dāng)PVC收到某個PVC數(shù)據(jù)包的尾信元后把該PVC數(shù)據(jù)包的信息寫入 FIFO。本發(fā)明的有益效果在于本發(fā)明用片內(nèi)SRAM作為接收緩存,所有PVC共享該緩存, 用鏈表實現(xiàn)。該鏈表有rollkick的功能,當(dāng)某個PVC接收到錯信元,或者該PVC的信元數(shù)超過門限(該門限用于限制每個PVC占用共享緩存的最大信元數(shù)),或者該鏈表的剩余空間接近零時,或者該PVC數(shù)據(jù)包的尾信元超時后,會清除已經(jīng)寫入緩存的信元(以包為單位), 同時完成釋放相應(yīng)的空間。同時為了避免在多PVC之間進行復(fù)雜調(diào)度,當(dāng)收到某個PVC數(shù)據(jù)包的尾信元后就把該包的信息寫入FIFO,這樣就實現(xiàn)先入先出的簡單調(diào)度。本發(fā)明會使緩存管理更加公平合理,處理帶寬高,邏輯實現(xiàn)簡單。
圖1是本發(fā)明方法中非尾信元的流程示意圖;圖2是本發(fā)明方法中尾信元的流程示意圖;圖3是本發(fā)明中后臺掃描器循環(huán)掃描PVC的屬性值A(chǔ)CTIVE_FLAG的示意圖;圖4是本發(fā)明系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施例方式下面給出在IPDSLAM-10G芯片中的實施例。本發(fā)明的ATM信元重組共享緩存的實現(xiàn)方法,主要包括如下步驟1.初始化鏈表,建立FREE鏈表(指向緩存剩余空間)和ACTIVE鏈表(表示被緩存PVC包占用空間)。初始化每個PVC屬性值為0(CRT_CELL_NUM表示當(dāng)前PVC包已存信元數(shù)目,ALL_CELL_NUM表示該PVC所有包已存信元數(shù)目,ERR0R_FLAG表示當(dāng)前PVC包是否是錯誤或者丟信元(當(dāng)前的PVC包錯誤是指其中接受到的ATM信元有HEC(header errorcontrol,頭部錯誤控制)錯誤;當(dāng)前的PVC包丟信元是指該PVC的已收信元數(shù)超過門限(該門限用于限制每個PVC占用共享緩存最大信元數(shù))或者FREE鏈表的剩余空間接近 0時引起的),ACTIVE_FLAG表示該PVC是否在接收信元)。2. PVC接收信元,判斷接收到的信元是否是尾信元;接收到非尾信元時進入步驟 3,接收到尾信元時進入步驟4。3.如圖1所示,接收到非尾信元時,1)讀取PVC屬性值判斷是否能寫入緩存,比較ALL_CELL_NUM是否小于最大門限且同時ERR0R_FLAG是否是0,如是則進入下一步;2)從 FREE鏈表中申請一個地址;3)記錄PVC指針;記錄PVC指針是指頭指針/尾指針,指當(dāng)前 PVC包的第一個信元在緩存中的地址以及當(dāng)前信元在緩存中的地址;4)更新該PVC屬性值(CRT_CELL_NUM 加 1,ALL_CELL_NUM 加 1,ERR0R_FLAG 寫入 0,ACTIVE_FLAG 寫入 1) ;5)將步驟2)申請的地址存入共享緩存。如步驟1)的判斷結(jié)果是否,則僅僅更新PVC屬性值(CRT_ CELL_NUM 保持不變,ALL_CELL_NUM 保持不變,ERR0R_FLAG 寫入 1,ACTIVE_FLAG 寫入 1),同時丟棄該信元。4.如圖2所示,接收到尾信元時,1)讀取PVC屬性值判斷是否能寫入緩存,比較 ALL_CELL_NUM是否小于最大門限同時ERR0R_FLAG是否是0,如是則進入下一步;2)從FREE 鏈表中申請一個地址;幻記錄PVC指針;記錄PVC指針是指頭指針/尾指針,指當(dāng)前PVC 包的第一個信元在緩存中的地址以及當(dāng)前信元在緩存中的地址;記錄PVC指針的作用有 A.當(dāng)接收到尾信元之后,判斷可以寫入緩存,則把該PVC頭指針串接在ACTIVE鏈后面,完成該PVC包的入鏈;B.當(dāng)接收到尾信元之后,判斷不可以寫入緩存或者尾信元超時,則把該 PVC頭指針串接在FREE鏈后面,完成該鏈表的rollhck功能;4)更新該PVC屬性值(CRT_ CELL_NUM 寫入 0,ALL_CELL_NUM 加 1,ERR0R_FLAG 寫入 0,ACTIVE_FLAG 寫入 0) ;5)將步驟 2)申請的地址存入共享緩存;6)把該PVC包信息存入調(diào)度FIFO,同時把PVC頭指針串接在 ACTIVE鏈后面,完成該PVC包寫入ACTIVE鏈表中。如步驟1)的判斷結(jié)果是否(即PVC屬性值不能寫入緩存或者尾信元超時),則更新PVC屬性值(CRT_CELL_NUM寫入0,ALL_CELL_ NUM減去原來的CRT_CELL_NUM,ERR0R_FLAG寫入0,ACTIVE_FLAG寫入1),并且丟棄該信元, 同時把原來寫入緩存信元的地址寫入FREE鏈表(把該PVC頭指針串接在FREE鏈后面)完成了鏈表rollkick功能。5.如圖3所示,后臺有個掃描器,固定時序的掃描PVC的屬性值和鏈表,判斷尾信元是否超時,如果發(fā)現(xiàn)ACTIVE_FLAG為1 (表明尾信元未超時),則僅僅把ACTIVE_FLAG寫成 0,其他值不變;如果ACTIVE_FLAG為0 (表明尾信元超時),就更新PVC屬性值(CRT_CELL_ NUM 寫入 0,ALL_CELL_NUM 減去原來的 CRT_CELL_NUM,ERR0R_FLAG 寫入 0,ACTIVE_FLAG 寫入1),且把原來已存信元的地址寫入FREE鏈表完成了鏈表rollkick功能。該掃描器固定時序的掃描PVC的屬性值和鏈表是位于步驟2,3,4整個過程中的,該掃描器訪問PVC屬性值和鏈表都是在信元之間的間隙去訪問的,因此該功能對于步驟2,3,4整個過程是并行發(fā)生的。本發(fā)明的ATM信元重組共享緩存系統(tǒng)的結(jié)構(gòu)見圖4,該系統(tǒng)包括PVC,兩個用戶之間建立起來的永久性虛電路,用于接收信元;采用片內(nèi)SRAM作為接收緩存,該PVC共享該緩存;鏈表,包括指向所有緩存的FREE鏈表和表示空鏈的ACTIVE鏈表,該FREE鏈表用于接收PVC的申請,將FREE鏈表中的地址傳送到PVC,并通過PVC將該地址存入該緩存;掃描器,用于固定時序的訪問PVC的屬性值和鏈表;FIFO,用于當(dāng)PVC收到某個PVC數(shù)據(jù)包的尾信元后把該PVC數(shù)據(jù)包的信息寫入 FIFO。
權(quán)利要求
1.一種ATM信元重組共享緩存的實現(xiàn)方法,其特征在于,采用片內(nèi)SRAM作為接收緩存, 所有PVC共享該緩存,用鏈表實現(xiàn),該方法主要包括如下步驟(1)初始化鏈表,建立FREE鏈表和ACTIVE鏈表;該FREE鏈表指向緩存剩余空間,該 ACTIVE鏈表表示被緩存PVC包占用空間;初始化每個PVC屬性值為0 ;Q)PVC接收信元,判斷接收到的信元是否是尾信元;接收到非尾信元時進入步驟(3), 接收到尾信元時進入步驟;(3)接收到非尾信元時,讀取PVC屬性值判斷是否能寫入緩存,如是,則從FREE鏈表中申請一個地址存入共享緩存,同時更新該PVC屬性值;如否,則僅僅更新PVC屬性值,同時丟棄該信元;(4)接收到尾信元時,讀取PVC屬性值判斷是否能寫入緩存,如是,則從FREE鏈表中申請一個地址存入共享緩存,把該PVC包寫入ACTIVE鏈表中,同時更新該PVC屬性值,并且把該PVC包的信息寫入FIFO ;如否,則更新PVC屬性值,并且丟棄該信元,同時把原來寫入緩存信元的地址寫入FREE鏈表完成鏈表rollhck功能;在步驟O)、(3)、的過程中,掃描器固定時序地訪問PVC屬性值和鏈表。
2.如權(quán)利要求1所述的ATM信元重組共享緩存的實現(xiàn)方法,其特征在于,在步驟(1) 中,所述PVC屬性值為CRT_CELL_NUM表示當(dāng)前PVC包已存信元數(shù)目,ALL_CELL_NUM表示該PVC所有包已存信元數(shù)目,ERR0R_FLAG表示當(dāng)前PVC包是否是錯誤或者丟信元,ACTIVE_ FLAG表示該PVC是否在接收信元。
3.如權(quán)利要求2所述的ATM信元重組共享緩存的實現(xiàn)方法,其特征在于,在步驟(3)和步驟(4)中,所述讀取PVC屬性值判斷是否能寫入緩存,其判斷過程如下比較ALL_CELL_ NUM是否小于最大門限且同時ERR0R_FLAG是否是0,如是則能寫入緩存。
4.如權(quán)利要求2所述的ATM信元重組共享緩存的實現(xiàn)方法,其特征在于,在步驟(3) 中,如是,則從FREE鏈表中申請一個地址存入共享緩存,同時更新該PVC屬性值,所述更新該 PVC 屬性值具體為CRT_CELL_NUM 加 1,ALL_CELL_NUM 加 1,ERR0R_FLAG 寫入 0,ACTIVE— FLAG寫入1。
5.如權(quán)利要求2所述的ATM信元重組共享緩存的實現(xiàn)方法,其特征在于,在步驟(3) 中,如否,則僅僅更新PVC屬性值,具體為CRT_CELL_NUM保持不變,ALL_CELL_NUM保持不變,ERR0R_FLAG 寫入 1,ACTIVE_FLAG 寫入 1。
6.如權(quán)利要求2所述的ATM信元重組共享緩存的實現(xiàn)方法,其特征在于,在步驟(4) 中,如是,則從FREE鏈表中申請一個地址存入共享緩存,把該PVC包寫入ACTIVE鏈表中,同時更新該PVC屬性值,所述更新該PVC屬性值具體為CRT_CELL_NUM寫入0,ALL_CELL_NUM 加 1,ERR0R_FLAG 寫入 0,ACTIVE_FLAG 寫入 0。
7.如權(quán)利要求2所述的ATM信元重組共享緩存的實現(xiàn)方法,其特征在于,在步驟(4) 中,如否,則更新PVC屬性值,具體為CRT_CELL_NUM寫入0,ALL_CELL_NUM減去原來的CRT_ CELL_NUM, ERR0R_FLAG 寫入 0,ACTIVE_FLAG 寫入 1。
8.如權(quán)利要求1所述的ATM信元重組共享緩存的實現(xiàn)方法,其特征在于,在步驟(3)和步驟中,所述從FREE鏈表中申請一個地址存入共享緩存的過程中還包括如下步驟記錄PVC指針;該PVC指針是PVC頭指針或尾指針,指當(dāng)前PVC包的第一個信元在緩存中的地址以及當(dāng)前信元在緩存中的地址;在步驟中,當(dāng)接收到尾信元之后,如判斷可以寫入緩存,則把該PVC頭指針串接在ACTIVE鏈后面,完成該PVC包的入鏈;如判斷不可以寫入緩存或者尾信元超時,則把該PVC頭指針串接在FREE鏈后面,完成該鏈表的rollhck功能。
9.如權(quán)利要求2所述的ATM信元重組共享緩存的實現(xiàn)方法,其特征在于,所述在步驟O)、(3)、(4)的過程中,掃描器固定時序地訪問PVC屬性值和鏈表,具體為如果發(fā)現(xiàn) ACTIVE_FLAG為1,表明尾信元未超時,則僅僅把ACTIVE_FLAG寫成0,其他值不變;如果 ACTIVE_FLAG為0,表明尾信元超時,就更新PVC屬性值,CRT_CELL_NUM寫入0,ALL_CELL_ NUM減去原來的CRT_CELL_NUM,ERROR_FLAG寫入0,ACTIVE_FLAG寫入1,且把原來已存信元的地址寫入FREE鏈表完成了鏈表rollkick功能。
10.一種ATM信元重組共享緩存系統(tǒng),其特征在于,包括PVC,兩個用戶之間建立起來的永久性虛電路,用于接收信元;采用片內(nèi)SRAM作為接收緩存,該PVC共享該緩存;鏈表,包括指向緩存剩余空間的FREE鏈表和表示被緩存PVC包占用空間的ACTIVE鏈表,該FREE鏈表用于接收PVC的申請,將FREE鏈表中的地址傳送到PVC,并通過PVC將該地址存入該緩存;掃描器,用于固定時序的訪問PVC的屬性值和鏈表;FIFO,用于當(dāng)PVC收到某個PVC數(shù)據(jù)包的尾信元后把該PVC數(shù)據(jù)包的信息寫入FIFO。
全文摘要
本發(fā)明公開了一種ATM信元重組共享緩存系統(tǒng),包括PVC,用于接收信元;采用片內(nèi)SRAM作為接收緩存,PVC共享該緩存;鏈表,包括指向緩存剩余空間的FREE鏈表和表示被緩存PVC包占用空間的ACTIVE鏈表,F(xiàn)REE鏈表用于接收PVC的申請,將FREE鏈表中的地址傳送到PVC,并通過PVC將該地址存入該緩存;掃描器,用于固定時序的訪問PVC的屬性值和鏈表;FIFO,用于當(dāng)PVC收到某個PVC包的尾信元后把該PVC包的信息寫入FIFO。此外,本發(fā)明還公開了ATM信元重組共享緩存的實現(xiàn)方法。本發(fā)明能清除不需要的信元,同時完成釋放相應(yīng)的緩存空間,會使緩存管理更加公平合理,處理帶寬高,邏輯實現(xiàn)簡單。
文檔編號H04L12/56GK102347882SQ201010239780
公開日2012年2月8日 申請日期2010年7月29日 優(yōu)先權(quán)日2010年7月29日
發(fā)明者何運鋒, 蔡云陽 申請人:高通創(chuàng)銳訊通訊科技(上海)有限公司