專利名稱:一種信元頭轉(zhuǎn)換表的動態(tài)存儲管理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種采用共享內(nèi)存型交換結(jié)構(gòu)的ATM(異步傳輸模式)交換系統(tǒng)中信元頭轉(zhuǎn)換表(Input Translation Table-ITT)的動態(tài)存儲方法,具體地說,涉及交換機領(lǐng)域中ATM信元的交換管理機制。
ATM網(wǎng)是面向連接的通信網(wǎng),端到端接續(xù)是在網(wǎng)絡(luò)通信開始以前建立,每一個ATM信元在網(wǎng)中獨立傳輸。ATM信元交換實質(zhì)是根據(jù)信元信頭的路由選擇標號(虛通道指針VPI/虛電路指針VCI),將輸入ATM邏輯信道的信元輸出到指定的輸出ATM邏輯信道上。ATM邏輯信道由以下兩個標示符構(gòu)成物理端口編號和路由選擇標號(VPI/VCI)。
在采用共享內(nèi)存型交換結(jié)構(gòu)的ATM交換機中,必須有一套有效的交換機制,來保證交換網(wǎng)絡(luò)對信元的解析、轉(zhuǎn)換和存儲,以及管理信元凈荷在內(nèi)存區(qū)的存儲。其中,信元凈荷實際并不參與具體的交換過程,而只是信元凈荷在內(nèi)存中的存儲地址指針從輸入端傳到輸出端。在輸出端,只是把轉(zhuǎn)換后的信元頭加到信元凈荷上,輸出到指定的ATM邏輯信道上。在此過程中,信元頭的解析、轉(zhuǎn)換和存儲,顯得非常重要。
在目前采用的共享內(nèi)存型交換結(jié)構(gòu)的ATM交換系統(tǒng)中,采用了多種信元頭轉(zhuǎn)換和存儲管理機制,其中采用最多的是固定長度空間的存取方法,這種方法是對空閑塊采用固定大小的分配,雖然存取速度比較快,但是,存儲空間的利用率很低,浪費也嚴重,限制了連接的建立數(shù)量,從而,限制了交換機的整體性能。
本發(fā)明的技術(shù)方案是運用buddy(伙伴)系統(tǒng),這種方法檢索合適大小的空閑塊很有效率,合并相鄰的空閑塊也很簡單,能有效實現(xiàn)ITT表的動態(tài)存儲分配。
本發(fā)明采用的buddy(伙伴)系統(tǒng)的ITT表動態(tài)存儲分配方法,其與連接相關(guān)的ITT表內(nèi)存塊存取并不遵循一種簡單的模式,例如后分配先釋放(棧順序),或者是先分配后釋放(隊列順序),而是以任何順序請求和釋放任意大小的動態(tài)存儲分配模式。為了節(jié)約存儲空間,本發(fā)明針對基于同一ITT基址的VCI的實際使用范圍,分配與之大小相當(dāng)?shù)膬?nèi)存塊。ITT表項空間是在連接建立過程中由軟件根據(jù)一定的內(nèi)存分配策略動態(tài)分配的,連接拆除時釋放該ITT表項空間。
對于VC(虛電路)連接來說,如果多條VC連接享有同樣的輸入端口、子端口和VPI(虛通道指針),那么,他們將有同樣的LUT(THE LOOKUPTABLE信元頭檢索表)地址,因此,就有同樣的ITT基地址,每條連接對于ITT基地址的偏移量由VCI(虛電路指針)決定。在本發(fā)明的內(nèi)存分配策略中,把整個ITT表所能使用的存儲空間分成若干長度不一的空間塊,對享有同樣的ITT基地址的所有VCI,統(tǒng)一申請一塊內(nèi)存區(qū)。ITT表的內(nèi)存空間分配以內(nèi)存塊為單位。分配的空間塊的大小,必須大于映射到同一ITT表基址的VCI的使用范圍。VCI為16位,但在實際的使用中,并不是從0x0到0xffff都使用了,只是使用了一部分,因此,映射到同一基址的ITT表的實際所需存儲空間是可變的。這就意味著在為ITT表分配內(nèi)存塊時,并不是每個內(nèi)存塊都必須分配涵蓋整個VCI范圍的同樣大小的空間。如何提供基于同一ITT表基址的VCI使用范圍呢?連接參數(shù)里的VCI_base提供與此ITT表基址相關(guān)的VCI的最小值。例如如果預(yù)先知道連接的VCI最小為1024,最大為2000,就不會安排2k大小的ITT段,因此節(jié)約了空間??稍O(shè)置VCI_base=1024,ITT片段分配代碼則會分配1k大小的ITT片段,并調(diào)整ITT基址。所以,如果改變了VCI_base,必須把與該LUT相應(yīng)的連接都關(guān)掉,并重建。
本發(fā)明所述的伙伴系統(tǒng),其核心算法是K階伙伴系統(tǒng)的數(shù)學(xué)定義S[i+1]=S[i]+S[i-k],此處S[i]為第i的片段的塊大小。
因此,如果K=0,S指指數(shù)伙伴系統(tǒng)。K=1,指Fibonaci(斐波納契數(shù)列)伙伴系統(tǒng)。K值越大,塊空間就越大。為了簡化,本發(fā)明設(shè)置最小的塊空間為64,(也就是說S
=64)。因為最大的塊空間大小由VCI的最大值決定,也就意味著●對于0階的伙伴系統(tǒng),可能的塊空間大小有如下幾種0x40,0x80,0x100,0x200,0x400,0x800,0x1000,0x2000,0x4000,0x8000?!駥τ?階的伙伴系統(tǒng),S[1]=0x80,可能的塊空間大小有如下幾種0x40,0x80,0xc0,0x140,0x200,0x340,0x540,0x880,0xdc0,0x1640,0x2400,0x3a40,0x5e40,0x9880,0xf6c0,0x18f40?!駥τ?階的伙伴系統(tǒng),S[1]=0x80,S[2]=0x100,可能的塊空間大小有如下幾種0x40,0x80,0x100,0x140,0x1c0,0x2c0,0x400,0x5c0,0x880,0xc80,0x1240,0x1ac0,0x2740,0x3980,0x5440,0x7d80,0xb500,0x10940。
伙伴系統(tǒng)處理固定大小的塊,當(dāng)需要一個空閑塊時,獲得一個有效的塊空間。如果沒有該空間大小的塊時,就把比該空間稍大一點的塊分段,以獲得所需空間,當(dāng)一段塊被釋放后,它尋找自己的伙伴,如果能夠找到,則共同組合成更大的空閑塊。當(dāng)釋放不再使用的占用塊時,系統(tǒng)需要將這新的空閑塊插入到ITT空閑塊鏈表中去。即把地址相鄰的空閑塊歸并成更大空閑塊,在伙伴系統(tǒng)中則僅考慮互為“伙伴”的兩個空閑塊的歸并。何謂“伙伴”?如前所述,在分配時經(jīng)常需要將一個空閑塊分裂成兩個大小相等的存儲區(qū),這兩個由同一塊分裂出來的小塊就稱之“互為伙伴”?;厥湛臻e快時,只當(dāng)其伙伴為空閑塊時才歸并成大塊。也就是說,若有兩個空閑塊即使是地址相鄰,但不是又同一大塊分裂出來的,也不歸并在一起。
在ITT表的動態(tài)存儲分配中,具體選用幾階伙伴系統(tǒng)取決于連接VPI,VCI的使用情況。例如,如果多條連接的VCI需要的空間是2的n次冪,適合應(yīng)用指數(shù)伙伴系統(tǒng)。因為用于指數(shù)系統(tǒng)的空間塊正好合適。而如果所需的空間是1025,比較以上三種階數(shù)的伙伴系統(tǒng)的塊值,1階伙伴系統(tǒng)的最佳。
更具體地,本發(fā)明中使用0階伙伴系統(tǒng),設(shè)S
=64。在任何給定的時間,都可能有各種大小的空閑塊和占用塊。為實現(xiàn)對ITT空間的管理,在每個ITT段中,可配置3種類型的ITT鏈表A.為每一種大小的空閑塊保留一個單獨的ITT空閑塊鏈表;B.ITT占用塊表C.VP連接ITT表對ITT表的存儲空間有分配和回收的管理兩個步驟,其中,1.對ITT表的存儲空間分配實現(xiàn)步驟如下步驟一、選定伙伴系統(tǒng)的階數(shù),在ITT表空間初始化過程中,把整個ITT表空間切割成一組依序排列的各種空間塊,并為每一種大小的空閑塊保留個單獨的ITT空閑塊鏈表;步驟二、建立連接時,如果該連接所映射的ITT表空間塊已經(jīng)分配過,則在該空間塊中建立一項ITT表項即可;否則,根據(jù)VCI-base,確定所需ITT表空間塊的大?。徊襟E三、從最小空閑塊鏈表依次向更大的空閑鏈表查找,如果存在大小與之一致的空閑塊,則分配所需空間。如果并不存在大小與之一致的空閑塊,則需要從空間范圍更大的空閑塊中去查找,直到找到一個空閑塊,則將其中的一部分分配給它,而將剩余部分伙伴塊插入大小與之一致空閑塊的空閑表中。例如當(dāng)需要分配一個0x1500字節(jié)的空間時,由于沒有與之相對應(yīng)的空閑塊鏈表,也就沒有0x1500空間的空閑塊。于是查找大小為0x2000空閑塊的鏈接表,如果該鏈接表里沒有空閑塊可分配,則從大小為0x4000空閑塊的鏈接表中得到一個空閑塊,并把它分成兩個0x2000空閑塊,把其中一個空閑塊分配出去,另一塊鏈接在0x2000空閑塊的空閑鏈表里。
2.對ITT表的存儲空間回收實現(xiàn)步驟如下步驟一、拆除一條連接時,判斷該連接是否是所在的ITT表空間里的取后一條連接;如果是,則進行以下的ITT表空間回收算法,否則不回收該ITT表空間;步驟二、在回收ITT表空間塊時,應(yīng)首先判斷其伙伴是否為空閑。若不空閑,則只要將釋放的空閑塊簡單插入在相應(yīng)大小的空閑鏈表中即可。若空閑,則從相應(yīng)大小的空閑鏈表中找到其伙伴,并在該鏈表中刪除它,然后再判斷合并后的空閑塊的伙伴是否為空閑塊;步驟三、重復(fù)步驟二,直到歸并所得空閑塊的伙伴不是空閑塊時,再把該空閑塊插入到相應(yīng)大小的空閑鏈表中。
進一步,上述的本發(fā)明方法中,選取0階伙伴系統(tǒng),在ITT表空間初始過程中,把整個ITT表空間切割成大小為0x40,0x80,0x100,0x200,0x400,0x800,0x1000,0x2000,0x4000,0x8000的各種空間塊。
本發(fā)明的有益效果是采用所述ITT表伙伴系統(tǒng)存儲管理機制,有效地節(jié)省了系統(tǒng)存儲空間,提高了檢索合適大小的塊空間的效率,簡化了合并相鄰空閑塊的步驟,實現(xiàn)了對ITT表空間的有效存儲管理。
圖2是本發(fā)明中的ITT表的存儲空間分配流程圖。
圖3是本發(fā)明中的ITT表的存儲空間回收流程圖。
先參閱
圖1所示它給出了信元頭的輸入轉(zhuǎn)換表之間的關(guān)系,在采用共享內(nèi)存型交換結(jié)構(gòu)的ATM交換系統(tǒng)中,信元頭的解析、轉(zhuǎn)換不是一次完成的,而是需要經(jīng)過多次轉(zhuǎn)換才能完成。因為如果只用一次轉(zhuǎn)換完成,那么所需的轉(zhuǎn)換表空間為2**(VPI長度+VCI長度),即2**28=256M。要占用這么大的存儲空間,一般的交換網(wǎng)系統(tǒng)是無法滿足的。信元頭的多次轉(zhuǎn)換基于這樣一個前提并不是所有的256M連接都在同一個時刻同時存在,因而并不需要這么大的存儲空間。信元頭的轉(zhuǎn)換在輸入端涉及以下幾個輸入轉(zhuǎn)換表信元頭輸入端口表11(Port Mode Table,PMT)、信元頭檢索表12(The LookupTable,LUT)、信元頭轉(zhuǎn)換表13(Input Translation Table,ITT)。
上述的這些輸入轉(zhuǎn)換表11、12、13都是在連接建立時,在相應(yīng)的存儲空間建立與該連接相關(guān)的各個表項。當(dāng)連接建立后,有信元從該連接輸入時通過硬件查表PMT11、LUT12、ITT13等表,得到輸出的信元頭值。PMT11值由輸入端口號110索引得到,PMT11表里存放LUT12表的基址111,加上信元的VPI120值作偏移地址得到ITT表基址121,再加上VCI130值作偏移地址,得到ITT地址131,從而讀取到ITT表項。
請參閱圖2,其系ITT表13的存儲空間分配流程圖,把其編成程序2駐留在交換機的只讀存儲器中,并由其CPU執(zhí)行啟動本程序2,實施對ITT表13的存儲空間的分配,在所分配的空間塊中建立信元頭從ATM邏輯輸入信通道至指定的ATM邏輯輸出信道的連接表項。本實施例中,選定0階伙伴系統(tǒng),程序啟動,執(zhí)行步驟21,把整ITT表13的內(nèi)存空間切割成10種大小的空間塊,并為每一種大小的空間塊保留一個單獨的ITT空間塊鏈表,之后,執(zhí)行步驟22,建立一條連接,并根據(jù)該連接的信元頭路由選擇標VPI、VCI查接其所屬的ITT表13中的空閑塊是否已經(jīng)存在?若存在,則跳躍而執(zhí)行步驟27,在所分配的ITT表13中空間塊中建立該連接的ITT表項;若該信元頭路由連接指向的空閑塊不存在,則執(zhí)行步驟23,根據(jù)VCI-base,所需ITT表13空間塊的大小,再從最小空閑塊鏈表依次向更大的空閑鏈表查找,是否存在大小與之一致的空閑塊?如果存在大小一致的空閑塊,便執(zhí)行步驟26,把找到的空閑塊分配出去,然后執(zhí)行步驟27,建立此連接的ITT表項;若執(zhí)行步驟23而知道不存在大小一致的空閑塊,則執(zhí)行步驟24,查詢能找到稍大一點的空閑塊嗎?若不能找到,則仍跳回執(zhí)行步驟24;若能找到稍大一點的空閑塊,便執(zhí)行步驟25,找到一個稍大的空閑塊,將該空閑塊中分割出一塊大小一致的空閑塊予以分配,而將剩余部分插入大小與之一致的空閑塊的空表中,之后,執(zhí)行步驟27,建立此連接的ITT表項。按所選的0階伙伴系統(tǒng),在執(zhí)行步驟21時,把ITT表13的空間切割成大小為{0X40,0X100,0X200,0X400,0X800,0X1000,0X2000,0X4000,0X8000,}10種大小空間塊。
請參閱圖3,它是ITT表13的存儲空間回收的流程圖,把其編成程序3駐留在交換機的只讀存儲器中,并由其CPU執(zhí)行,啟動程序3,其任務(wù)是拆除信元頭進入的鏈接,回收已使用過的ITT表13的空間塊,使伙伴空間塊重新恢復(fù)成原有的大小的空間塊。啟動程序3,首先執(zhí)行步驟31,折除一條連接時,判斷該連接是否是所在的ITT表13空間里的最后一條鏈接,若不是最后一條連接,執(zhí)行步驟35,程序返回;若是最后一條鏈接,則執(zhí)行步驟32,判斷伙伴是否為空閑塊?若不空閑,須執(zhí)行步驟34,從相應(yīng)大小的空閑鏈表中找到其伙伴,并在該鏈表中刪除它,然后再判斷合并后的空閑塊的伙伴是否為空閑塊?若空閑,須返回執(zhí)行步驟32;若不空閑塊,則執(zhí)行步驟34,再把該空閑塊插入到相應(yīng)大小的空閑鏈表中,再執(zhí)行步驟35,程序返回。
權(quán)利要求
1.一種信元頭轉(zhuǎn)換表的動態(tài)存儲管理方法,其包括對ITT表的存儲空間分配和回收兩大步驟,其中a.對ITT表的存儲空間分配主要有如下步驟(1).根信元信頭的路由選擇標號VPI/VCI的使用情況,選用相適應(yīng)階數(shù)的伙伴系統(tǒng),并在ITT表空間初始化過程中,把整個ITT表空間切割成一組大小依序排列的各種空間塊,且為每一種大小的空間塊保留一個單獨的ITT空閑塊鏈表;(2).建立連接時,如果該連接所映射的ITT表空間塊已經(jīng)分割過,則在該空間塊中建立一項ITT表;否則,根據(jù)VCI-base,確定所需ITT表空間塊的大??;(3).從最小空閑塊鏈表依次向更大的空閑鏈表查找,如果存在大小與之一致的空閑塊,則分配所需空間;如果并不存在大小與之一致的空閑塊,則需要從空間范圍更大的空閑塊中去查找,直到找到一個空閑塊,并從其中切割出所需大小的空閑塊分配給它,而余下的伙伴空閑塊部分插入大小與之一致的空閑塊表中;b.對ITT表的存儲空間回收主要步驟如下(1).拆除一條連接時,判斷該連接是否是所在的ITT表空間里的最后一條連接;如果是,則進行以下的ITT表空間回收算法,否則不回收該ITT表空間,(2).在回收ITT表空間塊時,應(yīng)首先判斷其伙伴塊是否為空閑,若不空閑,則只要將釋放的空閑塊簡單插入在相應(yīng)大小的空閑鏈表中即可;若空閑,則從相應(yīng)大小的空閑鏈表中找到伙伴塊,并在該鏈表中刪除它,然后再判斷合并后的空閑塊的伙伴是否為空閑塊,(3).依此重復(fù),直到歸并所有空閑塊的伙伴不是空閑塊時,再把該空閑塊插入到相應(yīng)大小的空閑鏈表中。
2.根據(jù)權(quán)利要求1所述的信元頭轉(zhuǎn)換表的動態(tài)存儲空間管理方法,其特征在于,所選用的伙伴系統(tǒng)為0階伙伴系統(tǒng),在ITT表空間初始化過程中,把整個ITT表空間切割成大小為{0X40,0X80,0X100,0X200,0X400,0X800,0X1000,0X2000,0X4000,0X8000,}10種空間塊。
全文摘要
一種信元頭轉(zhuǎn)換表的動態(tài)存儲管理方法,其包括對ITT表的存儲空間分配和回收兩大步驟,其中主要選用合適階數(shù)的伙伴系統(tǒng),先將ITT表空間切割成一組大小依序排列的各種大小空間塊,并為每一種大小空間塊保留一個單獨的ITT空閑塊鏈表,建立輸入輸出邏輯通道連接時,在ITT空閑空間塊中檢索相應(yīng)一致大小的空閑塊,然后建立該連接ITT表項。拆除連接時,如果該連接不是所映射的ITT空間塊中最后一條連接,則直接刪除該連接的ITT表項即可。本發(fā)明的ITT表伙伴系統(tǒng)存儲管理機制,有效地節(jié)省了系統(tǒng)存儲空間,提高了檢索合適大小的空間塊效率,簡化了合并相鄰空閑塊的步驟,實現(xiàn)了對ITT表空間的有效存儲管理。
文檔編號H04L12/40GK1409519SQ01126789
公開日2003年4月9日 申請日期2001年9月18日 優(yōu)先權(quán)日2001年9月18日
發(fā)明者周云 申請人:深圳市中興通訊股份有限公司上海第二研究所