專利名稱:管理多個異步傳輸模式的信元隊列的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及共同擁有的第5774465號美國專利,以及共同擁有的被批準(zhǔn)的序列號是08/796085的申請,在這里將它們的內(nèi)容全部引入作為參考。發(fā)明背景1.發(fā)明領(lǐng)域本發(fā)明涉及異步傳輸模式(ATM)通信交換機(jī)。具體而言,本發(fā)明涉及一種方法和裝置,用于管理公共存儲器中的多個ATM信元隊列,其中的一些ATM信元要進(jìn)行多點(diǎn)傳輸。
2.技術(shù)現(xiàn)狀異步傳輸模式交換機(jī)通常都包括多個緩沖器、隊列或者FIFO,用于通過交換機(jī)管理異步傳輸模式信元流。這些緩沖器可以是在交換器的入口,在交換機(jī)的出口,或者在交換機(jī)的入口和出口之間。從共同擁有的被批準(zhǔn)的序列號是08/796085的申請中說明了如何使用實(shí)現(xiàn)多個隊列的公共存儲器(RAM)。在公共RAM中用來管理多個隊列的方法叫做“鏈表”。根據(jù)緩沖器管理的這一鏈表方法,特定隊列里的每個數(shù)據(jù)單元都包括一個指針,指向隊列中的下一個連續(xù)單元,從而允許將多個隊列(鏈表)分段存儲在整個公共RAM中。例如,如
圖11所示,RAM的一個框可以包括“N”個隊列作為鏈表#1、#2、……、#N。每個表都可以包括“n”個數(shù)據(jù)單元,用一種非連續(xù)方式儲存在RAM中。為了使這個表中每個數(shù)據(jù)單元都能以適當(dāng)?shù)姆绞礁@個表中的其它單元聯(lián)系起來,除了這個單元中連續(xù)儲存的“m”個字以外,每個單元都包括一個指針,指向這個表中下一個單元的RAM的物理地址。如同圖11中表#N的第二個單元所示,除了這個表中第一個單元以外的其它單元還包括一個指針,指向這個表中前一個單元的RAM物理地址。指向前一個單元的指針被用于測試或者實(shí)現(xiàn)LIFO緩沖器而不是典型的FIFO緩沖器。
這些鏈表隊列由圖12所示的另外一個表來管理,其中對于每個隊列(鏈表)有三個參數(shù)隊列中第一個數(shù)據(jù)單元的存儲器地址(首部指針)、隊列中最后一個數(shù)據(jù)單元的存儲器地址(尾部指針)和隊列深度(計數(shù)器)。另外,通過為排隊數(shù)據(jù)單元能夠使用的空閑RAM塊儲存一個首部指針、一個尾部指針和一個計數(shù)器,還保存有RAM中自由空間的一個表(空閑表)。顯然,沒有使用的RAM塊,它們不一定是連續(xù)的,是用前一個和下一個指針做的索引,就跟被使用的塊一樣。通過這種方式,可以在單獨(dú)一個公共存儲器中建立、刪除和管理多個隊列。
ATM一個有用的特征是它能支持多點(diǎn)數(shù)據(jù)傳輸。多點(diǎn)數(shù)據(jù)傳輸在有效地進(jìn)行會議呼叫的時候特別有用。第5774465號美國專利中討論了實(shí)現(xiàn)多點(diǎn)傳輸?shù)囊环N方法。總的來說,要進(jìn)行多點(diǎn)傳輸?shù)拿總€異步傳輸模式信元都用不同的地址首部進(jìn)行多次拷貝。在交換機(jī)出口采用離散隊列的ATM交換機(jī)中,多點(diǎn)傳輸信元被拷貝到多個隊列中。在交換機(jī)入口采用鏈表隊列的交換機(jī)中,多點(diǎn)傳輸可能會更加復(fù)雜。
在鏈表系統(tǒng)中管理多點(diǎn)傳輸?shù)囊环N簡單方法跟上面描述的方法相似,也就是每個多點(diǎn)傳輸數(shù)據(jù)單元都被拷貝到多個鏈表中。這種方法實(shí)現(xiàn)起來非常容易,但它不能有效地利用存儲器。在鏈表系統(tǒng)中管理多點(diǎn)傳輸?shù)囊环N解決方案是提高鏈表中每個數(shù)據(jù)單元的雜項開銷。按照這一方法,每個數(shù)據(jù)單元都有一個首部,其中包括關(guān)于要多點(diǎn)傳輸?shù)臄?shù)據(jù)單元的多個地址信息。這樣做能夠更加有效地使用數(shù)據(jù)存儲器,因?yàn)樗鼪]有必要存儲同一組數(shù)據(jù)的多個拷貝。但是,對具有擴(kuò)展首部信息的多點(diǎn)傳輸數(shù)據(jù)單元的管理將非常復(fù)雜,因?yàn)楸仨毑粩嗟乇O(jiān)視和更新每個多點(diǎn)傳輸狀態(tài)。判斷什么時候必需的所有多點(diǎn)傳輸信元拷貝都已經(jīng)發(fā)送完成,從而判斷什么時候信元緩沖空間能夠騰出來非常困難。此外,隨著多點(diǎn)傳輸目的地的數(shù)量增加,每個數(shù)據(jù)單元的系統(tǒng)開銷量有可能超過數(shù)據(jù)單元的大小。
發(fā)明簡述因此本發(fā)明的一個目的是提供一種方法和裝置,用于管理公共存儲器中的多個異步傳輸模式隊列。
本發(fā)明的另外一個目的是提供一種方法和裝置,用于管理公共存儲器中多個異步傳輸模式隊列并且支持多點(diǎn)傳輸。
本發(fā)明的再一個目的是提供一種方法和裝置,用于管理支持多點(diǎn)傳輸并且能夠有效地利用存儲器中公共存儲器的多個異步傳輸模式隊列。
本發(fā)明還有一個目的就是提供一種方法和裝置,用于管理公共存儲器中的多個異步傳輸模式隊列,它支持多點(diǎn)傳輸,能夠有效地利用存儲器,而且很容易實(shí)現(xiàn)。
按照上面將詳細(xì)討論的這些目的,本發(fā)明的裝置包括用于儲存異步傳輸模式信元以及用于儲存指向儲存的每個異步傳輸模式信元的至少一個指針的公共存儲器,其中的指針保存在多個鏈表中,以便建立多個隊列,還包括一個管理存儲器,用于儲存指向公共存儲器中儲存的指針的下標(biāo),每個多點(diǎn)傳輸會話還有一個表,以及指向公共存儲器中自由空間的一個下標(biāo)。
按照本發(fā)明的這個優(yōu)選實(shí)施方案,公共存儲器被分配在64個字節(jié)的塊中(16個32比特字)用于儲存信元和儲存指針。每個異步傳輸模式信元都跟一些交換機(jī)專用系統(tǒng)開銷以及等待這個信元的目的地的個數(shù)(也就是這個信元是它的一部分的隊列的個數(shù))一起儲存在一個塊中。儲存在鏈表中以便定義隊列的指針同時儲存在連續(xù)的64字節(jié)塊中,它包括16個指針和另外一個字,指向15個指針的下一塊。隊列中的所有指針都用一個表入口(在管理存儲器中)做索引,它包括第一個和最后一個指針的地址,隊列中信元的個數(shù),隊列最大長度(也就是最大的隊列長度),以及說明這個隊列是否活躍的一個說明。根據(jù)這個優(yōu)選實(shí)施方案,管理存儲器中的每個多點(diǎn)傳輸會話表都包括一個5比特計數(shù)器,說明多點(diǎn)傳輸會話中的地址總數(shù),以及一個地址表。但是,這個計數(shù)器可以是一個全32比特字。
本發(fā)明的方法包括將異步傳輸模式信元存入塊公共存儲器,每個異步傳輸模式信元的一個字記錄著等待這個信元的目的地的個數(shù),并且將指針作為鏈表存入異步傳輸模式信元。這些指針儲存在連續(xù)的塊中,每塊都有一個尾部指針指向下一個連續(xù)塊。本發(fā)明的方法還包括將指針的每個鏈表的下標(biāo)作為一個表入口加以管理,每個入口都包括關(guān)于指向數(shù)據(jù)單元的隊列的第一個和最后一個指針的信息;對于每個多點(diǎn)傳輸會話,維護(hù)這個會話中涉及到的所有隊列的一個表。
根據(jù)本發(fā)明的優(yōu)選方法,檢查進(jìn)入這個交換機(jī)的信元,將它們放進(jìn)共享的RAM中,將指向RAM的位置的指針寫入共享RAM中的另外一個位置。每次添加信元的時候更新管理RAM的表入口。開始多點(diǎn)傳輸會話的時候,利用多點(diǎn)傳輸會話中所有地址創(chuàng)建一個多點(diǎn)傳輸表。收到多點(diǎn)傳輸信元的時候,查詢多點(diǎn)傳輸會話表,指向這個信元的指針都被拷貝到每一個指針目的地鏈表;從而有效地將信元結(jié)合進(jìn)多個隊列。當(dāng)一個指針退出隊列的時候(也就是“彈出”),讀取這個指針指向的信元,發(fā)送給這個隊列的地址。讀取這個信元的時候,這個信元的目的地計數(shù)減1。當(dāng)目的地計數(shù)減到0的時候,用于儲存這個信元的RAM位置被添加到空閑表中。每次讀指針的時候,都要更新受到影響的隊列的表入口。不再需要這個隊列的時候,翻轉(zhuǎn)表入口中的活動比特。活動比特用于區(qū)分空隊列,它在等待不再需要的空隊列的輸入。
通過以下詳細(xì)說明,同時參考附圖,本領(lǐng)域里的技術(shù)人員會更加了解本發(fā)明的其它目的和優(yōu)點(diǎn)。
附圖簡述圖1是實(shí)施本發(fā)明的方法的一個裝置框圖;圖2是說明按照本發(fā)明如何管理圖1所示共享存儲器和管理存儲器的一個原理圖;圖3是本發(fā)明中管理存儲器內(nèi)容的一個原理圖;圖4是用于儲存共享存儲器中ATM信元的16個字存儲器塊的框圖;圖5是用于將指針存入ATM信元的16個字存儲器塊的框圖;圖6是用于識別隊列的管理存儲器16個字塊的框圖;圖7是用于識別多點(diǎn)傳輸會話地址的管理存儲器16個字塊的一個框圖;圖8是說明本發(fā)明中隊列初始化過程的一個簡化流程圖;圖9是說明緩沖器初始化以后進(jìn)來的信元的處理的一個簡化流程圖;圖10是說明本發(fā)明中出去的信元的處理的一個簡化流程圖;圖11是共享RAM中鏈表FIFO的原理圖;和圖12是用于管理圖11所示鏈表FIFO的管理RAM的原理圖。
優(yōu)選實(shí)施方案為了理解本發(fā)明,詳細(xì)描述中要涉及到ATM交換機(jī),例如ATM目的地交換機(jī)的物理層VLSI部分。前面提到的共同擁有的美國專利的裝置可以用于實(shí)施本發(fā)明。最好是將圖1所示那種類型的裝置用于實(shí)施本發(fā)明。
圖1所示的裝置10包括一個ATM交換機(jī)接口12,它對進(jìn)入或者離開ATM交換機(jī)的ATM信元進(jìn)行處理。這樣,接口12通過UTOPIA入口14和UTOPIA出口16跟UTOPIA接口連接(沒有畫出),通過接口17跟交換機(jī)18連接。如圖1所示,這個交換機(jī)是本申請人的受讓人的專有共享總線系統(tǒng),它的商標(biāo)是CELLBUS(注冊商標(biāo))。通過下面的詳細(xì)描述本領(lǐng)域里的技術(shù)人員會明白本發(fā)明可以利用其它的共享總線結(jié)構(gòu)或者傳統(tǒng)交換機(jī)結(jié)構(gòu)來實(shí)現(xiàn)。還會明白在異步傳輸模式交換機(jī)中,會有幾個裝置12跟交換機(jī)18連接,UTOPIA接口將被用于將交換機(jī)跟用戶線和網(wǎng)絡(luò)連接起來。這種裝置12將被本申請人的受讓人以商標(biāo)ASPEN(注冊商標(biāo))出售,將被用于構(gòu)造ATM交換機(jī)的一個部件。
裝置12包括一個內(nèi)部總線20和三個RISC處理器22、24、26,它們?nèi)扛鷥?nèi)部總線20連接。入口處理器22跟一個小的入口緩沖器28連接,它在UTOPIA入口14和內(nèi)部總線20之間。出口處理器24跟一個小的出口緩沖器30連接,它位于內(nèi)部總線20和UTOPIA出口16之間。每個處理器都可以通過一個主機(jī)接口32編程,它也可以用于收集通過裝置12的通信量的統(tǒng)計信息。提供一個DMA接口34用于將這個裝置12跟一個外部RAM36連接起來。如同下面將詳細(xì)描述的一樣,RAM36包括一個共享RAM部分36a,它儲存著數(shù)據(jù)和指針的隊列以及用于管理共享RAM的管理RAM部分36b。
通過裝置12的數(shù)據(jù)流基本上是如下數(shù)據(jù)進(jìn)入UTOPIA入口14和小緩沖器28。入口處理器22通過總線20和DMA結(jié)構(gòu)34將這些信元或者數(shù)據(jù)包傳遞給RAM36中適當(dāng)?shù)年犃小K俾侍幚砥?6將這些信元或者數(shù)據(jù)包從RAM36中的隊列里取出來,將它們放進(jìn)共享總線(或者交換機(jī)結(jié)構(gòu))18。來自ATM交換機(jī)中其它裝置12的數(shù)據(jù)被速率處理器從共享總線18中取走,通過內(nèi)部總線20發(fā)送給小出口緩沖器30,在那里它們被出口處理器24從隊列中取出傳遞給UTOPIA出口16。
現(xiàn)在參考圖2,將參考一個單元表來描述本發(fā)明,每個數(shù)據(jù)單元都有同樣的“m”個字和一個字計數(shù)器。如同下面將詳細(xì)描述的一樣,計數(shù)器說明應(yīng)當(dāng)接收這些數(shù)據(jù)的目的地的個數(shù)(例如多點(diǎn)傳輸目的地)。按照本發(fā)明,數(shù)據(jù)單元中的每個字都儲存在共享RAM36a的一個連續(xù)空間里,從而可以通過單獨(dú)一個地址對整個數(shù)據(jù)單元進(jìn)行訪問。每個數(shù)據(jù)單元至少有一個指針(如果這個數(shù)據(jù)單元要進(jìn)行多點(diǎn)傳輸就有多個指針),這些指針作為多個鏈表儲存在共享RAM中的另外一個位置上。如同下面將詳細(xì)描述的一樣,這些指針儲存在RAM的連續(xù)塊中,鏈表指針指向跟這同一個隊列有關(guān)的指針的下一個連續(xù)塊。當(dāng)指針的鏈表有效地建立起一個單元隊列(FIFO)的時候,指向各個單元的指針的一個鏈表用商標(biāo)QUEUE LINK FIFO或者縮寫QLF來表示。如圖2所示,QLF中指針的個數(shù)建立起隊列中數(shù)據(jù)單元的個數(shù)。但是,如同下面將詳細(xì)描述的一樣,不同鏈表中的指針可以指向同一個數(shù)據(jù)單元,也就是說,一個數(shù)據(jù)單元可以是在多個隊列中。例如,如圖2所示,其中畫出了三個不同的QLF,用于產(chǎn)生三個不同的隊列,這個單元表中有幾個單元被一個以上的QLF指向;也就是說,有幾個單元在一個以上的隊列中。如圖2所示,每個QLF都用管理RAM36b中指向QLF的一個表入口做下標(biāo)。按照一個優(yōu)選實(shí)施方案,指向每個QLF的表入口指針包括說明QLF是否“活動”的信息,指向這個QLF中最后一個指針的一個尾部指針,說明QLF中指針總數(shù)的一個信元數(shù)以及這個隊列中數(shù)據(jù)的單元總數(shù),說明這個隊列中允許的最大信元數(shù)的一個隊列最大長度,以及指向QLF中第一個指針的一個首部指針。
如上所述,如圖3所示,在管理RAM中儲存著每個QLF(QLF#1,QLF#2,……,QLF#N)的一個表入口指針。另外,管理RAM中還儲存著指向共享RAM中自由空間的一個類似的表入口指針。此外,如同下面將詳細(xì)描述的一樣,為本發(fā)明管理的每個多點(diǎn)傳輸會話儲存一個多點(diǎn)傳輸會話表(MST)。
按照本發(fā)明的這個優(yōu)選實(shí)施方案,共享RAM被劃分成64個字節(jié)的塊(16個32比特字),用于儲存信元和指針。每個ATM信元(數(shù)據(jù)單元)跟某些交換機(jī)專用系統(tǒng)開銷和等待這個信元的目的地的個數(shù)儲存在單獨(dú)一個塊中。例如,如圖4所示,一塊共享RAM的前兩個字被作為交換機(jī)專用參數(shù),接下來的13個字被用作ATM信元的數(shù)據(jù)有效負(fù)荷,最后一個字被用于說明應(yīng)當(dāng)接收這個信元的一個拷貝的目的地的個數(shù)。
指向一個隊列中的信元的指針同樣儲存在64個字節(jié)塊中,如圖5所示。每塊都保存15個指針,以及指向特定隊列中15個指針的下一塊的一個指針。例如,如果一個隊列中有41個信元,共享RAM的3塊中就會儲存41個指針。第一塊儲存前15個指針,還有一個指針指向包括接下來15個指針的存儲器塊的位置;接下來的塊指向接下來的15個指針,還有一個指針指向包括剩余的11個指針的存儲器塊的位置。
從前面可以看出,指向一個隊列中每個信元的指針的塊都按照跟鏈表相似的方式儲存。每個隊列中的所有指針都用一個表入口來做下標(biāo),它包括第一個和最后一個指針的地址,這個隊列中的信元個數(shù),最大隊列長度,以及說明這個隊列是否活動的一個說明。這個優(yōu)選表入口格式在圖6中說明,它說明管理RAM的64字節(jié)塊中的5個隊列的下標(biāo)。而按照本發(fā)明的一個實(shí)施方案,這些表入口被寫入管理RAM中保留的連續(xù)部分,根本不需要圖6所建議的表入口的鏈接塊。這個優(yōu)選的表入口格式包括一個1比特活動說明符“A”,可以很快地改變它的內(nèi)容,釋放這個表的空間供新的條目使用,指向共享RAM中的指針的29比特尾部指針,它指向隊列尾部的信元,隊列中當(dāng)前信元個數(shù)的一個16比特計數(shù)器,說明任意時刻隊列中能夠有的最大信元數(shù)的一個16比特數(shù),以及指向共享RAM中的指針的一個29比特首部指針,它指向隊列開頭的信元。按照這個優(yōu)選實(shí)施方案,這個表用隊列編號表示,提供了足夠的資源來管理共享RAM中的64千個隊列(65536)。另外,提供了跟圖6所示相似的表入口,指向共享RAM中的空閑塊。
由此可知,本領(lǐng)域里的技術(shù)人員會發(fā)現(xiàn)這些信元可以通過將指針拷貝給多個QLF并且將適當(dāng)?shù)膫€數(shù)寫入包括一個多點(diǎn)傳輸信元的每個存儲器塊的最后一個字(“計數(shù)”)來實(shí)現(xiàn)多點(diǎn)傳輸(見圖4)。但是,必須提供某些裝置來拷貝這些指針。按照本發(fā)明的優(yōu)選實(shí)施方案,每次建立多點(diǎn)傳輸會話的時候,在管理RAM中都要創(chuàng)建一個多點(diǎn)傳輸會話表(MST)。在信元的首部信息中給這個MST做索引,它是多點(diǎn)傳輸會話的一部分。按照本發(fā)明,如圖7所示,每個MST都有一個5比特計數(shù)(Dest#)多點(diǎn)傳輸會話目標(biāo)數(shù),以及每個多點(diǎn)傳輸目的地隊列一個16比特地址(QID)。如圖7所示,可以在單個64字節(jié)表中列出直到30個多點(diǎn)傳輸目的地。
下面參考圖8~10所示的流程圖進(jìn)一步地描述本發(fā)明的方法?,F(xiàn)在來看圖8,當(dāng)進(jìn)來的第一個ATM信元在100中進(jìn)入系統(tǒng)的時候,在102中檢查它的首部,并且剝離首部保護(hù)字。在信元能夠按照本發(fā)明發(fā)明的方法排隊之前,必須進(jìn)行圖8所示的操作,雖然不必按照圖示順序。在104打開這個信元的一個緩沖器(圖4),在106中打開指向這個信元以及同一隊列中其它信元的一個緩沖器(圖5)。在108中將這個信元寫入信元緩沖器,在110中指向這個信元緩沖器的地址的指針被寫入指針緩沖器。在112中將一個表入口(圖6)寫入管理RAM中的一個位置,說明第一個隊列已經(jīng)打開。在這個過程中的某個點(diǎn)上,例如圖8中的114,判斷這個信元是不是多點(diǎn)傳輸信元。如果它不是一個多點(diǎn)傳輸信元,這個輸入信元的排隊就完成,在116中更新自由空間指針。如果這個信元是多點(diǎn)傳輸會話的一部分,就在118中查詢MST(圖7)。指向這個信元的指針被拷貝到MST中列出的QID,在116中更新空閑存儲器指針之前,在120中來自MST的Dest#被拷貝到信元緩沖器中的計數(shù)字。
一旦緩沖器被初始化,必須在信元進(jìn)出交換機(jī)的時候?qū)λ鼈冞M(jìn)行管理。圖9說明信元進(jìn)來的過程中對緩沖器的管理。在130收到一個進(jìn)來的信元。在132檢查進(jìn)來的信元的首部,最好是從這個信元去掉首部保護(hù)字(HEC)。能夠進(jìn)一步處理這個信元之前,最好進(jìn)行圖9所示的操作,雖然沒有必要按照圖示順序。特別是必須在134判斷是否有足夠的存儲器(共享RAM和管理RAM)來處理這個信元。如果沒有,就必須在136中拋棄這個信元。還必須在138中判斷這個信元是否已經(jīng)有了一個隊列。如果這個信元沒有一個隊列作為它的目的地,就在140在管理RAM中為它創(chuàng)建一個新的QLF表入口,在146中在共享RAM中創(chuàng)建一個新的指針緩沖器。如果這個信元要去往已經(jīng)存在的緩沖器,就在142改變已有的QLF表入口。在144還要判斷這個隊列已有的指針緩沖器是否已經(jīng)滿。如果是這樣,就在146打開一個新的指針緩沖器(將這個新指針緩沖器的地址寫入舊指針緩沖器的最后一個字)。在148中,將這個異步傳輸模式信元(作為一個單元)寫入這個信元緩沖器,在150將指向這個信元的指針寫入指針緩沖器(QLF)。在某些點(diǎn)上,例如在152上,判斷這個信元是不是一個多點(diǎn)傳輸信元。如果不是,這個信元的處理就在154結(jié)束,更新自由空間指針。如果是,就在156查詢這個信元的MST,指針被拷貝到MST列出來的目的地隊列,來自MST的Dst#被拷貝到這個信元緩沖器的最后一個字。
退出本發(fā)明隊列系統(tǒng)的信元的處理在圖10中說明。當(dāng)一個隊列的目的地能夠獲得一條路徑的時候,在160中跟這個目的地有關(guān)來自這個隊列的第一個指針就按照FIFO方式從這個隊列中彈出來。讀出這個指針以便找到這個信元的存儲器位置,并且在162從共享RAM中讀出這個信元。在164中從這個信元首部判斷這個信元是不是一個多點(diǎn)傳輸信元。如果不是,就將這個信元發(fā)送給目的地,在166中更新自由空間指針,說明剛才儲存這個信元的RAM塊現(xiàn)在可以用了。自由空間指針更新以后,在172改變這個隊列的QLF表入口(圖6)。特別是將這個信元計數(shù)減1,改變首部指針,使它指向下一個信元指針(圖6中的下一個指針)。
回到164,如果這個信元是一個多點(diǎn)傳輸信元,這個信元被發(fā)送給它的目的地后,跟這個信元有關(guān)的計數(shù)器(圖5所示框中的最后一個字)就在168中減去1。如果在170中認(rèn)為這個計數(shù)器等于0,就按照以上方式在166中更新自由空間指針。如果這個計數(shù)器不等于0,在共享的RAM中同一個位置就有這個信元的一個拷貝,因?yàn)槠渌犃兄械闹羔樁贾赶蛩T?72中按照上述方式改變這個隊列的QLF表入口,以反映這個隊列有一個新的起始點(diǎn)和少了一個信元。
在這里已經(jīng)描述了管理共享RAM中多個ATM信元隊列的方法,同時為多點(diǎn)傳輸信元提供有效的裝置和實(shí)現(xiàn)這些方法的裝置。盡管描述了本發(fā)明的特定實(shí)施方案,但是其目的不是將本發(fā)明局限于此。所以,雖然公開了特定的存儲器塊的大小,但是當(dāng)然也可以采用其它的大小,犧牲本發(fā)明的一些好處,卻保留本方面的多數(shù)好處。還有,盡管給出了表入口的特定格式,但是應(yīng)當(dāng)認(rèn)識到也可以使用其它格式。此外,雖然參考流程圖給出了特定的方法步驟,但是應(yīng)當(dāng)明白可能需要額外的方法步驟來實(shí)現(xiàn)本發(fā)明,具體取決于使用的硬件和本領(lǐng)域里的技術(shù)人員明白的其它參數(shù)。更進(jìn)一步,雖然說明方法步驟的流程圖是按照特定的順序給出來的,但是應(yīng)當(dāng)明白一些方法步驟順序可以是任意的,一些步驟的順序可以任意改變而不會有任何不良后果,一些方法步驟的順序可以改變時要同時進(jìn)行其它的相應(yīng)改變,本發(fā)明的基本步驟不受描述它們的順序的限制。另外,盡管描述本發(fā)明的時候參考了異步傳輸模式信元,但是應(yīng)當(dāng)明白本發(fā)明的裝置和方法可以用于其它類型的數(shù)據(jù)的存儲。還有,雖然畫出和描述了特定的電路和軟件流程圖,但是應(yīng)當(dāng)明白也可以用其它的電路和/軟件按照本發(fā)明的原理來進(jìn)行數(shù)據(jù)管理。因此本領(lǐng)域里的技術(shù)人員會明白,可以對本發(fā)明進(jìn)行其它的修改,它不會偏離本發(fā)明的實(shí)質(zhì)和范圍。
權(quán)利要求
1.用管理存儲器管理共享存儲器中收到的數(shù)據(jù)的隊列的一種方法,該方法包括a)接收作為多個數(shù)據(jù)包代表多個數(shù)據(jù)隊列的數(shù)據(jù);b)將每個數(shù)據(jù)包寫入共享存儲器中的一個位置;c)對于寫入共享存儲器中一個位置的每個數(shù)據(jù)包,創(chuàng)建至少一個指針,指向包括這個數(shù)據(jù)包的位置;d)在數(shù)據(jù)包所屬數(shù)據(jù)隊列的基礎(chǔ)之上,在共享存儲器的一個位置上儲存至少一個指針,作為至少一個指針隊列的一部分,這個指針隊列對應(yīng)于某個數(shù)據(jù)隊列;e)對于每個指針隊列,將信息存入所述管理存儲器,該信息包括一個首部指針,指向共享存儲器中的一個位置,這個共享存儲器包括所述指針,指向包括要首先出來的接收數(shù)據(jù)的共享存儲器中的所述位置。
2.權(quán)利要求1的方法,其中數(shù)據(jù)包是異步傳輸模式信元。
3.權(quán)利要求2的方法,其中共享存儲器中的每個位置都是一個64字節(jié)塊。
4.權(quán)利要求3的方法,其中隊列中異步傳輸模式信元組的指針儲存在連續(xù)組中,這些連續(xù)組有一個指針,指向下一個連續(xù)指針組,這些指針按照信元離開隊列的順序儲存。
5.權(quán)利要求1的方法,還包括f)對于要傳遞到多個目的地的每個數(shù)據(jù)包,儲存指向包括多點(diǎn)傳輸數(shù)據(jù)包的位置的指針的多個拷貝,指針個數(shù)等于目的地個數(shù),其中將每個數(shù)據(jù)包寫入共享存儲器中一個位置的所述步驟包括,對于每個多點(diǎn)傳輸數(shù)據(jù)包,寫入一個數(shù)據(jù)包計數(shù),這個計數(shù)代表目的地的個數(shù)。
6.權(quán)利要求1的方法,其中所述信息包括一個尾部指針,它指向共享存儲器中的所述位置,這個共享存儲器包括所述指針,指向包括收到的要最后發(fā)送的數(shù)據(jù)的共享存儲器中的所述位置。
7.權(quán)利要求1的方法,其中所述信息包括這個隊列中指針個數(shù)的一個計數(shù)。
8.權(quán)利要求5的方法,還包括g)對于每個多點(diǎn)傳輸會話,寫入一個隊列標(biāo)識符表,用于識別跟多點(diǎn)傳輸會話有關(guān)的每個隊列。
9.權(quán)利要求8的方法,其中隊列標(biāo)識符表被寫入管理存儲器。
10.權(quán)利要求1的方法,還包括f)在管理存儲器中保存一個指針,它指向共享存儲器中的下一個空閑位置。
11.采用具有多個數(shù)據(jù)存儲位置的共享存儲器以及用于管理收到的數(shù)據(jù)的多個隊列的管理存儲器的一種方法,該方法包括a)將收到的數(shù)據(jù)轉(zhuǎn)發(fā)給共享存儲器中需要的多個數(shù)據(jù)存儲位置;b)創(chuàng)建一個指針,指向包括收到的數(shù)據(jù)的每個數(shù)據(jù)存儲位置;c)將這些指針存入多個隊列;和d)將指針隊列的有關(guān)信息存入管理存儲器,這些信息包括每個指針隊列的一個首部指針,這個首部指針指向指針的數(shù)據(jù)存儲位置,被指向的這個指針指向包括要首先離開隊列的收到的數(shù)據(jù)的數(shù)據(jù)存儲位置。
12.權(quán)利要求11的方法,其中收到的數(shù)據(jù)包括異步傳輸模式信元。
13.權(quán)利要求12的方法,其中所述數(shù)據(jù)存儲位置包括多個64字節(jié)塊。
14.權(quán)利要求11的方法,其中所述指針儲存在連續(xù)組中,這些連續(xù)組有一個指針,指向下一個連續(xù)指針組。
15.權(quán)利要求11的方法,還包括為了對數(shù)據(jù)進(jìn)行多點(diǎn)傳輸,創(chuàng)建多個指針,指向包括多點(diǎn)傳輸數(shù)據(jù)的數(shù)據(jù)存儲位置;和f)將所述多個指針儲存在多個隊列中。
16.權(quán)利要求11的方法,其中所述信息包括一個尾部指針,指向一個指針的數(shù)據(jù)存儲位置,這個指針指向包括要最后離開隊列的收到的數(shù)據(jù)的數(shù)據(jù)存儲位置。
17.權(quán)利要求11的方法,其中所述信息包括隊列中指針的一個計數(shù)。
18.權(quán)利要求15的方法,還包括g)對于每個多點(diǎn)傳輸會話,包括跟這個多點(diǎn)傳輸會話有關(guān)的一個指針隊列表。
19.權(quán)利要求18的方法,其中跟多點(diǎn)傳輸會話有關(guān)的這個指針隊列表保存在管理存儲器中。
20.權(quán)利要求11的方法,還包括e)保存一個指針,指向下一個空閑數(shù)據(jù)存儲位置。
21.管理收到的數(shù)據(jù)的多個隊列的裝置,包括a)有多個數(shù)據(jù)存儲位置的一個共享存儲器裝置;b)接收數(shù)據(jù)并且將收到的數(shù)據(jù)轉(zhuǎn)發(fā)給所述共享存儲器裝置中數(shù)據(jù)存儲位置的控制裝置,用于創(chuàng)建一個指針,指向儲存收到的數(shù)據(jù)的所述數(shù)據(jù)存儲位置中的每一個位置,并且用于將指針儲存在所述共享存儲器中的指針隊列里,所述指針隊列對應(yīng)于接收到的數(shù)據(jù)的多個隊列;和c)儲存所述指針隊列的有關(guān)信息的管理存儲器裝置,所述信息包括每個指針隊列的一個首部指針,所述首部指針指向所述指針的數(shù)據(jù)存儲位置,這個指針指向包括收到的數(shù)據(jù)要最先離開收到的數(shù)據(jù)的隊列的數(shù)據(jù)存儲位置。
22.權(quán)利要求21的裝置,其中收到的數(shù)據(jù)是異步傳輸模式信元。
23.權(quán)利要求22的裝置,其中所述數(shù)據(jù)存儲位置包括多個64字節(jié)塊。
24.權(quán)利要求21的裝置,其中所述控制裝置包括用于創(chuàng)建多個指針,指向儲存多點(diǎn)傳輸數(shù)據(jù)的每個數(shù)據(jù)存儲位置的裝置。
25.權(quán)利要求21的裝置,其中所述信息包括每個指針隊列的一個尾部指針,所述尾部指針指向所述指針的數(shù)據(jù)存儲位置,這個指針指向包括要最后離開收到的數(shù)據(jù)隊列的收到的數(shù)據(jù)的數(shù)據(jù)存儲位置。
26.權(quán)利要求21的裝置,其中所述信息包括所述指針隊列中指針個數(shù)的一個計數(shù)。
27.權(quán)利要求24的裝置,其中所述控制裝置包括保存每個多點(diǎn)傳輸會話的一個隊列表的裝置,所述隊列表包括跟這個多點(diǎn)傳輸會話有關(guān)的所有指針隊列的一個表。
28.權(quán)利要求21的裝置,其中所述控制裝置包括保存一個指針,指向所述數(shù)據(jù)存儲位置中下一個空閑位置的裝置。
全文摘要
檢查進(jìn)入交換機(jī)的信元,將它們放入共享RAM(36),指向這個RAM位置的一個指針被寫入共享RAM中的另外一個位置。每次將一個信元添加到這個隊列的時候更新管理RAM中的表(36b)入口。創(chuàng)建這個多點(diǎn)傳輸會話中所有地址的一個多點(diǎn)傳輸表。收到多點(diǎn)傳輸信元的時候,查詢這個多點(diǎn)傳輸會話表,指向這個信元的指針被拷貝到這個表中每個地址的隊列中。當(dāng)一個指針退出隊列的時候,讀取這個指針指向的信元,并且將它發(fā)送給這個隊列地址。讀取這個信元的時候,這個信元的目的地計數(shù)減1。當(dāng)目的地計數(shù)減到0的時候,用于儲存這個信元的RAM位置被添加到空閑表中。每次讀指針的時候,都要更新受到影響的隊列的表入口。當(dāng)這個隊列變成空隊列的時候,切換表入口的活動比特。
文檔編號H04L12/56GK1351784SQ00804670
公開日2002年5月29日 申請日期2000年2月11日 優(yōu)先權(quán)日1999年3月5日
發(fā)明者S·C·羅伊, E·L·帕雷拉, I·拉姆斯登 申請人:美商傳威股份有限公司