專(zhuān)利名稱(chēng):網(wǎng)絡(luò)交換裝置和網(wǎng)絡(luò)交換方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種在多個(gè)網(wǎng)絡(luò)之間傳送可變長(zhǎng)度的數(shù)據(jù)分組的網(wǎng)絡(luò)交換裝置和網(wǎng)絡(luò)交換方法,特別涉及使用共享緩沖器作為數(shù)據(jù)分組的存儲(chǔ)區(qū)域的網(wǎng)絡(luò)交換裝置和網(wǎng)絡(luò)交換方法。
背景技術(shù):
在如因特網(wǎng)等那樣多個(gè)網(wǎng)絡(luò)相互連接的情況下,在這些連接中多使用網(wǎng)絡(luò)交換裝置。其中,在把所接收的數(shù)據(jù)分組暫時(shí)存儲(chǔ)在內(nèi)部緩沖器中后、傳送給目的傳送端口的交換方式被稱(chēng)為存儲(chǔ)轉(zhuǎn)發(fā)方式,采用這種交換方式的網(wǎng)絡(luò)交換裝置得到廣泛應(yīng)用。
并且,在近年來(lái)的網(wǎng)絡(luò)上的通信中,使作為傳送單位的數(shù)據(jù)分組的數(shù)據(jù)量為可變的情況居多。例如,在因特網(wǎng)協(xié)議(IPInternet Protocol)中,把稱(chēng)為IP數(shù)據(jù)報(bào)的可變長(zhǎng)度的數(shù)據(jù)分組作為傳送單位,進(jìn)行信息傳送。
圖15是表示以往的網(wǎng)絡(luò)交換裝置的結(jié)構(gòu)示例的圖。
圖15所示的網(wǎng)絡(luò)裝置在多個(gè)網(wǎng)絡(luò)201~204之間進(jìn)行數(shù)據(jù)分組的傳送。該網(wǎng)絡(luò)裝置由以下部分構(gòu)成對(duì)應(yīng)于各個(gè)網(wǎng)絡(luò)201~204的接收接口211~214和接收緩沖器221~224、對(duì)應(yīng)于各個(gè)網(wǎng)絡(luò)201~204的發(fā)送接口231~234和發(fā)送緩沖器241~244、數(shù)據(jù)傳送電路250。另外,在圖15中,為了便于理解,把接收接口211~214和發(fā)送接口231~234表示為不同的要素。
接收接口211~214分別連接網(wǎng)絡(luò)201~204。同樣,發(fā)送接口231~234也分別連接網(wǎng)絡(luò)201~204。各個(gè)接收接口211~214從網(wǎng)絡(luò)201~204接收的數(shù)據(jù)分組,被暫時(shí)存儲(chǔ)在對(duì)應(yīng)的接收緩沖器221~224中。數(shù)據(jù)傳送電路250根據(jù)存儲(chǔ)在接收緩沖器221~224中的數(shù)據(jù)分組的目的地,向與該目的地端口對(duì)應(yīng)的發(fā)送緩沖器傳送數(shù)據(jù)分組。存儲(chǔ)在各個(gè)發(fā)送緩沖器241~244中的數(shù)據(jù)分組,被按照來(lái)自對(duì)應(yīng)的發(fā)送接口231~234的發(fā)送請(qǐng)求讀出,并傳送給網(wǎng)絡(luò)201~204。
在該圖15所示的網(wǎng)絡(luò)交換裝置中,在每個(gè)接收端口和發(fā)送端口處設(shè)有緩沖器,所以需要確保多個(gè)緩沖器,從而具有存儲(chǔ)器容量變大的缺點(diǎn)。對(duì)此,已經(jīng)公知有下述網(wǎng)絡(luò)交換裝置,其通過(guò)采用把所接收的數(shù)據(jù)分組與將要發(fā)送的數(shù)據(jù)分組全部存儲(chǔ)在一個(gè)共享緩沖器中的方法,來(lái)削減存儲(chǔ)器容量。
圖16是表示具備共享緩沖器的現(xiàn)有網(wǎng)絡(luò)交換裝置的結(jié)構(gòu)示例的圖。
與圖15相同,圖16中表示在多個(gè)網(wǎng)絡(luò)301~304之間進(jìn)行數(shù)據(jù)分組的傳送的網(wǎng)絡(luò)裝置。該網(wǎng)絡(luò)裝置由以下部分構(gòu)成對(duì)應(yīng)于各個(gè)網(wǎng)絡(luò)301~304的接收接口311~314、對(duì)應(yīng)于各個(gè)網(wǎng)絡(luò)301~304的發(fā)送接口321~324、分別對(duì)應(yīng)于接收數(shù)據(jù)分組和發(fā)送數(shù)據(jù)分組的數(shù)據(jù)傳送電路330和340、共享緩沖器350。另外,在圖16中,為了便于理解,把對(duì)應(yīng)于接收側(cè)的接收接口311~314和數(shù)據(jù)傳送電路330、對(duì)應(yīng)于發(fā)送側(cè)的發(fā)送接口321~324和數(shù)據(jù)傳送電路340表示為不同的要素。
各個(gè)接收接口311~314從網(wǎng)絡(luò)301~304接收的數(shù)據(jù)分組,通過(guò)數(shù)據(jù)傳送電路330被順序存儲(chǔ)在共享緩沖器350中。當(dāng)數(shù)據(jù)傳送電路340接收到來(lái)自各個(gè)發(fā)送接口321~324的發(fā)送請(qǐng)求時(shí),根據(jù)存儲(chǔ)在共享緩沖器350中的數(shù)據(jù)分組的目的地,向與該目的地端口對(duì)應(yīng)的發(fā)送接口傳送數(shù)據(jù)分組。各個(gè)發(fā)送接口321~324把從共享緩沖器350傳送來(lái)的數(shù)據(jù)分組傳送給所連接的網(wǎng)絡(luò)301~304。
并且,在上述圖15和圖16的網(wǎng)絡(luò)交換裝置中,預(yù)定發(fā)送的數(shù)據(jù)分組一般被控制為針對(duì)每個(gè)目的地利用指針連接的鏈表結(jié)構(gòu)的隊(duì)列。此處,在使用可變長(zhǎng)度的數(shù)據(jù)分組時(shí),存儲(chǔ)各個(gè)數(shù)據(jù)分組的緩沖器多以最大數(shù)據(jù)分組長(zhǎng)度為單位構(gòu)成,存儲(chǔ)在這種緩沖器中的數(shù)據(jù)分組通過(guò)使用指針來(lái)管理。這種結(jié)構(gòu)的優(yōu)點(diǎn)可以列舉如下,例如在丟棄由于錯(cuò)誤的發(fā)生等而接收的數(shù)據(jù)分組時(shí),僅刪除與該數(shù)據(jù)分組對(duì)應(yīng)的指針即可解決,容易控制。但是,其反面是對(duì)于緩沖器就需要提供希望存儲(chǔ)的數(shù)據(jù)分組數(shù)與最大數(shù)據(jù)分組長(zhǎng)度相乘的乘積值的存儲(chǔ)器容量。在該情況下,例如,當(dāng)只接收容量小于最大數(shù)據(jù)分組長(zhǎng)度的數(shù)據(jù)分組時(shí),則緩沖器內(nèi)未被數(shù)據(jù)分組占用的區(qū)域增加,從而具有存儲(chǔ)器使用效率降低的缺點(diǎn)。
以往,作為具備公共緩沖存儲(chǔ)器、使用可變長(zhǎng)度數(shù)據(jù)分組,而且提高該公共緩沖存儲(chǔ)器的使用效率的數(shù)據(jù)分組交換機(jī),例如有以下產(chǎn)品。該數(shù)據(jù)分組交換機(jī)把從各輸入線路接收的可變長(zhǎng)度數(shù)據(jù)分組以固定長(zhǎng)度的數(shù)據(jù)塊為單位寫(xiě)入公共緩沖存儲(chǔ)器。在進(jìn)行該寫(xiě)入時(shí),緩沖器控制部形成按輸入線路分類(lèi)的輸入隊(duì)列,在可變長(zhǎng)度數(shù)據(jù)分組的最終數(shù)據(jù)塊被登錄到輸入隊(duì)列中時(shí),使該輸入隊(duì)列的鏈?zhǔn)降刂妨斜礞溄拥脚c目的地的輸出線路對(duì)應(yīng)的輸出隊(duì)列。
在向公共緩沖存儲(chǔ)器寫(xiě)入時(shí),各輸入隊(duì)列通過(guò)把下一個(gè)固定長(zhǎng)度數(shù)據(jù)塊的寫(xiě)入地址存儲(chǔ)到下一個(gè)地址存儲(chǔ)器中而形成。并且,各個(gè)輸出隊(duì)列由存儲(chǔ)表示下一個(gè)應(yīng)該讀出的數(shù)據(jù)塊的下一個(gè)讀出地址和表示尾數(shù)據(jù)塊的尾讀出地址的地址表構(gòu)成,緩沖器控制部的輸入隊(duì)列控制部通過(guò)把各可變長(zhǎng)度數(shù)據(jù)分組的首數(shù)據(jù)塊的寫(xiě)入地址和尾數(shù)據(jù)塊的寫(xiě)入地址,分別移動(dòng)到與傳送目的地輸出線路對(duì)應(yīng)的地址表的下一個(gè)讀出地址和尾讀出地址,由此完成向輸出隊(duì)列的輸入鏈接。另外,在先行的可變長(zhǎng)度數(shù)據(jù)分組的尾讀出地址已經(jīng)被登錄的情況下,從下一個(gè)地址存儲(chǔ)器中提取后續(xù)的可變長(zhǎng)度數(shù)據(jù)分組的首數(shù)據(jù)塊的寫(xiě)入地址,使該地址鏈接到尾讀出地址。通過(guò)這種控制,在提高緩沖存儲(chǔ)器的使用效率的同時(shí),使交換動(dòng)作快速化。例如,參照特開(kāi)第2002-152247號(hào)公報(bào)(第0025~0040段,圖3)。
并且,與上述相同,作為把從各輸入線路接收的可變長(zhǎng)度數(shù)據(jù)分組以固定長(zhǎng)度的數(shù)據(jù)塊為單位寫(xiě)入公共緩沖存儲(chǔ)器的數(shù)據(jù)分組交換機(jī),存在如下構(gòu)成的數(shù)據(jù)分組交換機(jī),即,在進(jìn)行數(shù)據(jù)寫(xiě)入時(shí),緩沖器控制部形成按輸入線路分類(lèi)的輸入隊(duì)列,在可變長(zhǎng)度數(shù)據(jù)分組的尾數(shù)據(jù)塊被登錄到輸入隊(duì)列中時(shí),把該輸入隊(duì)列的鏈?zhǔn)降刂妨斜淼卿浀骄哂信c數(shù)據(jù)分組傳送目的地輸出線路對(duì)應(yīng)的待機(jī)緩沖器的輸出隊(duì)列中。在該數(shù)據(jù)分組交換機(jī)中,各輸出隊(duì)列由以下部分構(gòu)成用于臨時(shí)存儲(chǔ)可變長(zhǎng)度數(shù)據(jù)分組的首數(shù)據(jù)塊的寫(xiě)入地址和尾數(shù)據(jù)塊的寫(xiě)入地址的待機(jī)緩沖器;用于存儲(chǔ)表示下一個(gè)應(yīng)該讀出的數(shù)據(jù)塊的下一個(gè)讀出地址和表示尾數(shù)據(jù)塊的尾讀出地址的地址存儲(chǔ)器,在緩沖器控制部的輸入隊(duì)列控制部把各可變長(zhǎng)度數(shù)據(jù)分組的首數(shù)據(jù)塊的寫(xiě)入地址和尾數(shù)據(jù)塊的寫(xiě)入地址分別登錄到與傳送目的地輸出線路對(duì)應(yīng)的待機(jī)緩沖器中、在其附帶的地址存儲(chǔ)器成為空閑狀態(tài)時(shí),輸出隊(duì)列控制部把從待機(jī)緩沖器取出的一對(duì)地址作為新數(shù)據(jù)塊組的下一個(gè)讀出地址和尾讀出地址設(shè)定到地址存儲(chǔ)器中。由此,在提高緩沖存儲(chǔ)器的使用效率的同時(shí),使交換動(dòng)作快速化。例如,參照特開(kāi)第2002-185495號(hào)公報(bào)(第0025~0037段,圖3)。
但是,在使用上述圖16所示的共享緩沖器的網(wǎng)絡(luò)交換裝置中,在由于特定端口地址的接收數(shù)據(jù)分組集中等而產(chǎn)生擁擠的情況下,共享緩沖器內(nèi)部被這些接收數(shù)據(jù)分組和相同端口地址的發(fā)送數(shù)據(jù)分組占用,在與產(chǎn)生擁擠的端口無(wú)關(guān)的端口中吞吐量降低。這種現(xiàn)象一般被稱(chēng)為阻塞(blocking)等。特別是如上面所述,在使用可變長(zhǎng)度數(shù)據(jù)分組的情況下,盡管共享緩沖器內(nèi)的使用效率比較低,有時(shí)也發(fā)生阻塞。
對(duì)此,如上述的圖15所示,在按照接收端口數(shù)和發(fā)送端口數(shù)分別設(shè)置接收數(shù)據(jù)分組用接收緩沖器和發(fā)送數(shù)據(jù)分組用發(fā)送緩沖器的情況下,不會(huì)產(chǎn)生因阻塞造成的效率降低。但是,如上面所述,這種結(jié)構(gòu)需要增大各緩沖器的容量,導(dǎo)致部件成本提高。
并且,在上述特開(kāi)第2002-152247號(hào)公報(bào)和特開(kāi)第2002-185495號(hào)公報(bào)中公開(kāi)的數(shù)據(jù)分組交換機(jī)中,在已接收可變長(zhǎng)度數(shù)據(jù)分組的情況下,可以提高公共緩沖存儲(chǔ)器內(nèi)的使用效率,但未能采取防止阻塞的對(duì)策。
發(fā)明內(nèi)容
本發(fā)明就是鑒于上述情況而提出的,其目的在于,提供一種提高儲(chǔ)存可變長(zhǎng)度數(shù)據(jù)分組的緩沖器的使用效率,同時(shí)防止產(chǎn)生阻塞的網(wǎng)絡(luò)交換裝置。
為了解決上述課題,本發(fā)明提供了圖1所示的網(wǎng)絡(luò)交換裝置。該網(wǎng)絡(luò)交換裝置在多個(gè)網(wǎng)絡(luò)之間傳送可變長(zhǎng)度的數(shù)據(jù)分組,其特征在于,具有緩沖器1,被共享為所接收的數(shù)據(jù)分組的數(shù)據(jù)和將要發(fā)送的數(shù)據(jù)分組的數(shù)據(jù)的各存儲(chǔ)區(qū)域;數(shù)據(jù)分組分割電路2,把所接收的所述數(shù)據(jù)分組分割為1個(gè)或更多個(gè)的固定長(zhǎng)度的數(shù)據(jù)塊,來(lái)提供給所述緩沖器1;緩沖器控制電路3,對(duì)所述數(shù)據(jù)分組的每個(gè)傳送目的地的所述網(wǎng)絡(luò)形成可以登錄一定數(shù)量的所述數(shù)據(jù)塊的發(fā)送隊(duì)列4-1~n(其中,n為大于0的整數(shù)),在把分割后的所述數(shù)據(jù)塊寫(xiě)入所述緩沖器1中后,然后以所述數(shù)據(jù)分組為單位順序登錄到與該目的地對(duì)應(yīng)的所述發(fā)送隊(duì)列中,而且,把所述各數(shù)據(jù)分組內(nèi)的所述數(shù)據(jù)塊之間的連接和所述各發(fā)送隊(duì)列內(nèi)的所述數(shù)據(jù)分組之間的連接,作為基于所述各數(shù)據(jù)塊在所述緩沖器1中的寫(xiě)入位置的鏈表結(jié)構(gòu)來(lái)進(jìn)行管理。
在這種網(wǎng)絡(luò)交換裝置中,1個(gè)緩沖器1被共享為所接收數(shù)據(jù)分組的數(shù)據(jù)和將要發(fā)送的數(shù)據(jù)分組的數(shù)據(jù)的各自存儲(chǔ)區(qū)域。并且,所接收的數(shù)據(jù)分組由數(shù)據(jù)分組分割電路2分割為1個(gè)或更多個(gè)的固定長(zhǎng)度的數(shù)據(jù)塊,提供給緩沖器1。通過(guò)緩沖器控制電路3的控制,對(duì)數(shù)據(jù)分組的每個(gè)傳送目的地的網(wǎng)絡(luò)形成可以登錄固定數(shù)量的數(shù)據(jù)塊的發(fā)送隊(duì)列4-1~n,將已寫(xiě)入緩沖器1的數(shù)據(jù)塊被以數(shù)據(jù)分組為單位順序登錄到與目的地對(duì)應(yīng)的發(fā)送隊(duì)列中。此時(shí),各數(shù)據(jù)分組內(nèi)的數(shù)據(jù)塊之間的連接、和各發(fā)送隊(duì)列內(nèi)的數(shù)據(jù)分組之間的連接,被作為基于各數(shù)據(jù)塊在緩沖器中的寫(xiě)入位置的鏈表結(jié)構(gòu)來(lái)進(jìn)行管理。
本發(fā)明的上述及其他目的、特征和優(yōu)點(diǎn),根據(jù)表示作為本發(fā)明示例的優(yōu)選實(shí)施方式的附圖及以下相關(guān)說(shuō)明將更加明確。
圖1是說(shuō)明本發(fā)明的原理的原理圖。
圖2是表示本發(fā)明的第1實(shí)施方式涉及的網(wǎng)絡(luò)交換裝置的連接示例圖。
圖3是表示本發(fā)明的第1實(shí)施方式涉及的網(wǎng)絡(luò)交換裝置的內(nèi)部結(jié)構(gòu)的方框圖。
圖4是表示共享緩沖器內(nèi)的數(shù)據(jù)存儲(chǔ)狀態(tài)的示意圖。
圖5是表示指針控制電路和指針計(jì)數(shù)器組的內(nèi)部結(jié)構(gòu)示例的方框圖。
圖6是表示出棧控制部的處理流程的流程圖。
圖7是表示發(fā)送數(shù)據(jù)分組時(shí)的入棧控制部的處理流程的流程圖。
圖8是表示按第1管理方法存儲(chǔ)在共享緩沖器內(nèi)的數(shù)據(jù)塊的結(jié)構(gòu)的示意圖。
圖9是表示在第1鏈表管理示例中,寫(xiě)入/讀出控制電路具有的寄存器組的結(jié)構(gòu)的圖。
圖10是表示在第1鏈表管理示例中,接收數(shù)據(jù)分組時(shí)的寫(xiě)入/讀出控制電路的處理流程的流程圖。
圖11是表示在第1鏈表管理示例中,發(fā)送數(shù)據(jù)分組時(shí)的寫(xiě)入/讀出控制電路的處理流程的流程圖。
圖12是表示在第2鏈表管理示例中,寫(xiě)入/讀出控制電路具有的存儲(chǔ)器的結(jié)構(gòu)的圖。
圖13是表示在第2鏈表管理示例中,接收數(shù)據(jù)分組時(shí)的寫(xiě)入/讀出控制電路的處理流程的流程圖。
圖14是表示在第2鏈表管理示例中,發(fā)送數(shù)據(jù)分組時(shí)的寫(xiě)入/讀出控制電路的處理流程的流程圖。
圖15是表示現(xiàn)有網(wǎng)絡(luò)交換裝置的結(jié)構(gòu)示例的圖。
圖16是表示具有共享緩沖器的現(xiàn)有網(wǎng)絡(luò)交換裝置的結(jié)構(gòu)示例的圖。
具體實(shí)施例方式
以下,參照
本發(fā)明的實(shí)施方式。
圖1是說(shuō)明本發(fā)明的原理的原理圖。
本發(fā)明的網(wǎng)絡(luò)交換裝置是連接使用可變長(zhǎng)度的數(shù)據(jù)分組進(jìn)行通信的多個(gè)網(wǎng)絡(luò),并在這些網(wǎng)絡(luò)之間傳送數(shù)據(jù)分組的裝置。該網(wǎng)絡(luò)交換裝置如圖1所示,具有緩沖器1、數(shù)據(jù)分組分割電路2和緩沖器控制電路3。
緩沖器1是用于存儲(chǔ)所接收的數(shù)據(jù)分組的存儲(chǔ)裝置,例如利用半導(dǎo)體存儲(chǔ)器等構(gòu)成。
數(shù)據(jù)分組分割電路2把所接收的數(shù)據(jù)分組分割為1個(gè)或更多個(gè)的固定長(zhǎng)度的數(shù)據(jù)塊,提供給緩沖器1。因此,1個(gè)數(shù)據(jù)塊的容量被設(shè)定成小于1個(gè)數(shù)據(jù)分組內(nèi)所允許的最大數(shù)據(jù)量。
緩沖器控制電路3控制緩沖器1中的數(shù)據(jù)塊的寫(xiě)入和讀出動(dòng)作。緩沖器控制電路3使用由數(shù)據(jù)分組分割電路2分割后的數(shù)據(jù)塊,對(duì)每個(gè)成為目的地的網(wǎng)絡(luò)形成發(fā)送隊(duì)列4-1~n(其中,n為大于1的整數(shù)),把分割后的數(shù)據(jù)塊寫(xiě)入緩沖器1后,以數(shù)據(jù)分組為單位順序登錄到與該目的地對(duì)應(yīng)的發(fā)送隊(duì)列中。此處,在各發(fā)送隊(duì)列4-1~n中可以登錄固定數(shù)量的數(shù)據(jù)塊。因此,通常在緩沖器1內(nèi)對(duì)每個(gè)傳送目的地的網(wǎng)絡(luò)準(zhǔn)備相同容量的發(fā)送隊(duì)列4-1~n的存儲(chǔ)區(qū)域。
并且,緩沖器控制電路3把存儲(chǔ)在緩沖器1內(nèi)的各數(shù)據(jù)塊,作為基于各數(shù)據(jù)塊在緩沖器1中的寫(xiě)入位置的鏈表結(jié)構(gòu)進(jìn)行管理。在以下說(shuō)明中,作為示例,緩沖器控制電路3具備指針棧5,該指針棧5一維保存指示緩沖器1內(nèi)的寫(xiě)入位置的指針,在寫(xiě)入數(shù)據(jù)塊時(shí)將指針從該指針棧5中彈出并取得該指針,使用所取得的指針構(gòu)建鏈表結(jié)構(gòu)。
這種結(jié)構(gòu)的網(wǎng)絡(luò)裝置的動(dòng)作如下。
當(dāng)從規(guī)定的網(wǎng)絡(luò)接收數(shù)據(jù)分組時(shí),該數(shù)據(jù)分組通過(guò)數(shù)據(jù)分組分割電路2被分割為固定長(zhǎng)度的數(shù)據(jù)塊,通過(guò)緩沖器控制電路3的控制被存儲(chǔ)到緩沖器1中。此時(shí),緩沖器控制電路3例如在每個(gè)數(shù)據(jù)塊的寫(xiě)入動(dòng)作中,從指針棧5將指針彈出,向該指針?biāo)甘镜牡刂穼?xiě)入數(shù)據(jù)塊。并且,把在1個(gè)數(shù)據(jù)分組中分割的數(shù)據(jù)塊之間的連接作為使用指針的鏈表結(jié)構(gòu)來(lái)進(jìn)行管理。
當(dāng)1個(gè)數(shù)據(jù)分組的數(shù)據(jù)塊存儲(chǔ)在緩沖器1中時(shí),緩沖器控制電路3登錄到與該數(shù)據(jù)分組的目的地對(duì)應(yīng)的發(fā)送隊(duì)列4-1~n中的任一個(gè)隊(duì)列中。此處,緩沖器控制電路3把在各發(fā)送隊(duì)列4-1~n中登錄的數(shù)據(jù)分組之間的連接作為使用了與其對(duì)應(yīng)的指針的鏈表結(jié)構(gòu)來(lái)進(jìn)行管理。
從各發(fā)送隊(duì)列4-1~n順序輸出所登錄的數(shù)據(jù)塊,發(fā)送給對(duì)應(yīng)的網(wǎng)絡(luò)。此處,在各發(fā)送隊(duì)列4-1~n中,所登錄的數(shù)據(jù)塊之間和數(shù)據(jù)分組之間被作為使用了上述指針的鏈表結(jié)構(gòu)進(jìn)行管理,所以通過(guò)從指針指示的寫(xiě)入位置讀出數(shù)據(jù)塊,能夠容易地再編輯原來(lái)的數(shù)據(jù)分組。
在上述網(wǎng)絡(luò)交換裝置中,對(duì)數(shù)據(jù)分組的每個(gè)傳送目的地的網(wǎng)絡(luò)形成可以登錄固定數(shù)量的數(shù)據(jù)塊的發(fā)送隊(duì)列4-1~n,將寫(xiě)入緩沖器1的各數(shù)據(jù)塊以數(shù)據(jù)分組為單位順序登錄到與數(shù)據(jù)分組的目的地對(duì)應(yīng)的發(fā)送隊(duì)列中。通過(guò)采用這種步驟,與接收地點(diǎn)和傳送目的地的網(wǎng)絡(luò)無(wú)關(guān),作為數(shù)據(jù)分組的存儲(chǔ)區(qū)域,只要具備1個(gè)緩沖器1即可。并且,各發(fā)送隊(duì)列4-1~n的容量相對(duì)每個(gè)目的地的網(wǎng)絡(luò)被限定,即使在集中接收針對(duì)1個(gè)目的地的數(shù)據(jù)分組時(shí),這些數(shù)據(jù)分組也不會(huì)影響相對(duì)緩沖器1內(nèi)的其他目的地的數(shù)據(jù)分組的傳送動(dòng)作。因此,作為數(shù)據(jù)分組的存儲(chǔ)區(qū)域具備1個(gè)緩沖器1,防止產(chǎn)生阻塞。
并且,所接收的數(shù)據(jù)分組被分割為1個(gè)或更多個(gè)的固定長(zhǎng)度的數(shù)據(jù)塊,從而寫(xiě)入緩沖器1。與此同時(shí),各數(shù)據(jù)分組內(nèi)的數(shù)據(jù)塊之間的連接和各發(fā)送隊(duì)列4-1~n內(nèi)的數(shù)據(jù)分組之間的連接,作為基于各數(shù)據(jù)塊在緩沖器的寫(xiě)入位置的鏈表結(jié)構(gòu)受到管理。因此,緩沖器1內(nèi)的未使用區(qū)域變小,緩沖器1的使用效率提高。所以,可以抑制緩沖器1的容量,降低部件成本。
另外,例如在向發(fā)送隊(duì)列4-1~n登錄數(shù)據(jù)塊時(shí),在該登錄數(shù)量超過(guò)可以登錄數(shù)量的情況下,也可以將包括在該時(shí)刻的登錄處理中的數(shù)據(jù)塊的數(shù)據(jù)分組丟棄。此時(shí),向各發(fā)送隊(duì)列4-1~n登錄數(shù)據(jù)塊的數(shù)量,例如也可以被計(jì)數(shù)為使用的指針數(shù)。
并且,在丟棄數(shù)據(jù)分組時(shí)或輸出來(lái)自發(fā)送隊(duì)列4-1~n的數(shù)據(jù)分組時(shí),把在丟棄或所輸出的數(shù)據(jù)分組中使用的指針退回指針棧5即可。由此,可以有效控制緩沖器1內(nèi)的數(shù)據(jù)塊的寫(xiě)入。
下面,具體說(shuō)明本發(fā)明的第1實(shí)施方式。
圖2是表示本發(fā)明的第1實(shí)施方式涉及的網(wǎng)絡(luò)交換裝置的連接示例的圖。
如圖2所示,網(wǎng)絡(luò)交換裝置100設(shè)有多個(gè)通信端口,在各通信端口處連接著網(wǎng)絡(luò)21~24。在各網(wǎng)絡(luò)21~24處連接著例如終端裝置21a、22a、23a和24a。
網(wǎng)絡(luò)交換裝置100進(jìn)行所連接的網(wǎng)絡(luò)21~24之間的數(shù)據(jù)分組的傳送。例如,從終端裝置21a傳送給終端裝置22a的數(shù)據(jù)分組,通過(guò)網(wǎng)絡(luò)21被輸入網(wǎng)絡(luò)交換裝置100,通過(guò)該網(wǎng)絡(luò)交換裝置100的處理被傳送給網(wǎng)絡(luò)22。由此,所傳送的數(shù)據(jù)分組通過(guò)網(wǎng)絡(luò)22在終端裝置22a得到接收。并且,網(wǎng)絡(luò)交換裝置100可以傳送可變長(zhǎng)度的數(shù)據(jù)分組。
圖3是表示網(wǎng)絡(luò)交換裝置100的內(nèi)部結(jié)構(gòu)的方框圖。
如圖3所示,網(wǎng)絡(luò)交換裝置100具備收發(fā)接口111~114、數(shù)據(jù)傳送電路120、共享緩沖器130、寫(xiě)入/讀出控制電路140、指針棧150、指針控制電路160,以及指針計(jì)數(shù)器組170。并且,寫(xiě)入/讀出控制電路140、指針棧150和指針計(jì)數(shù)器組170連接著傳送指針的指針用總線180。
收發(fā)接口111~114是與外部網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)收發(fā)的通信接口,分別連接著網(wǎng)絡(luò)21~24。
各收發(fā)接口111~114從網(wǎng)絡(luò)21~24接收可變長(zhǎng)度數(shù)據(jù)分組,把該數(shù)據(jù)分組順序分割為固定長(zhǎng)度的數(shù)據(jù)塊,并且把接收請(qǐng)求通知給數(shù)據(jù)傳送電路120。接收針對(duì)該請(qǐng)求的應(yīng)答,把所分割的數(shù)據(jù)塊輸出給數(shù)據(jù)傳送電路120。此時(shí),通知表示所輸出的數(shù)據(jù)塊是數(shù)據(jù)分組中的首數(shù)據(jù)塊還是尾數(shù)據(jù)塊的塊位置信息。并且,提取表示數(shù)據(jù)分組的目的地的信息,將該信息也通知給數(shù)據(jù)傳送電路120。另外,在產(chǎn)生接收錯(cuò)誤等時(shí),丟棄對(duì)應(yīng)的數(shù)據(jù)分組的數(shù)據(jù),并且向指針控制電路160輸出丟棄信號(hào)。
另一方面,收發(fā)接口111~114從數(shù)據(jù)傳送電路120順序接收發(fā)送用數(shù)據(jù)塊,把這些數(shù)據(jù)塊發(fā)送給網(wǎng)絡(luò)21~24。
數(shù)據(jù)傳送電路120根據(jù)來(lái)自各收發(fā)接口111~114的接收請(qǐng)求,從對(duì)應(yīng)的收發(fā)接口111~114接收數(shù)據(jù)塊,并將其存儲(chǔ)在共享緩沖器130中。此時(shí),向?qū)懭?讀出控制電路140和指針控制電路160輸出所接收的數(shù)據(jù)塊的接收端口、與該數(shù)據(jù)塊的目的地對(duì)應(yīng)的發(fā)送端口、以及接口信息,該接口信息包括表示數(shù)據(jù)塊是數(shù)據(jù)分組中的首數(shù)據(jù)塊還是尾數(shù)據(jù)塊的塊位置信息。
并且,數(shù)據(jù)傳送電路120根據(jù)來(lái)自各收發(fā)接口111~114的傳送請(qǐng)求,從共享緩沖器130順序取出數(shù)據(jù)分組的數(shù)據(jù)塊,并將其順序輸出給該數(shù)據(jù)分組的目的地的終端裝置所連接的收發(fā)接口。此時(shí),參照所輸出的數(shù)據(jù)塊的目的地,在應(yīng)該傳送的目的地剩余1個(gè)時(shí),把該情況通知指針控制電路160。
共享緩沖器130是把傳送的數(shù)據(jù)分組的數(shù)據(jù)作為數(shù)據(jù)塊臨時(shí)存儲(chǔ)的緩沖器存儲(chǔ)器。在該共享緩沖器130中確保在每個(gè)接收端口存儲(chǔ)1個(gè)數(shù)據(jù)分組的數(shù)據(jù)塊的區(qū)域、和存儲(chǔ)形成于每個(gè)發(fā)送端口的發(fā)送隊(duì)列的區(qū)域。并且,共享緩沖器130中的數(shù)據(jù)塊的寫(xiě)入地址和讀出地址由寫(xiě)入/讀出控制電路140指定。
寫(xiě)入/讀出控制電路140管理共享緩沖器130中的數(shù)據(jù)塊的寫(xiě)入動(dòng)作和讀出動(dòng)作。具體講,對(duì)所分割的每個(gè)數(shù)據(jù)塊順序從指針棧150接收指針,根據(jù)該指針指定共享緩沖器130中的數(shù)據(jù)塊的寫(xiě)入地址。此時(shí),通過(guò)指針用總線180把所接收的指針輸出給指針計(jì)數(shù)器組170。并且,把存儲(chǔ)在共享緩沖器130中的數(shù)據(jù)塊作為使用上述指針的鏈表結(jié)構(gòu)進(jìn)行管理,根據(jù)該指針的連接指定從共享緩沖器130的讀出地址。此時(shí),通過(guò)指針用總線180把讀出使用的指針輸出給指針計(jì)數(shù)器組170。
該寫(xiě)入/讀出控制電路140在共享緩沖器130內(nèi)形成每個(gè)發(fā)送端口的發(fā)送隊(duì)列。各發(fā)送隊(duì)列可以存儲(chǔ)一定數(shù)量的數(shù)據(jù)塊。寫(xiě)入/讀出控制電路140把數(shù)據(jù)塊存儲(chǔ)在共享緩沖器130中后,把數(shù)據(jù)塊登錄在對(duì)應(yīng)于該目的地的發(fā)送隊(duì)列中。此時(shí),把此前登錄的數(shù)據(jù)分組和新登錄的數(shù)據(jù)分組的連接,作為使用了與構(gòu)成它們的數(shù)據(jù)塊對(duì)應(yīng)的指針的鏈表結(jié)構(gòu)進(jìn)行管理,從各發(fā)送隊(duì)列順序向數(shù)據(jù)傳送電路120輸出數(shù)據(jù)塊。
在指針棧150中存儲(chǔ)著指示共享緩沖器130中的數(shù)據(jù)塊的寫(xiě)入地址的指針。指針棧150一維保存與共享緩沖器130內(nèi)的所有數(shù)據(jù)分組存儲(chǔ)區(qū)域中的寫(xiě)入地址對(duì)應(yīng)的指針,由此可以有效使用共享緩沖器130內(nèi)的區(qū)域。
指針棧150在收發(fā)接口111~114中任一方接收數(shù)據(jù)分組,將分割該數(shù)據(jù)分組生成的數(shù)據(jù)塊存儲(chǔ)在共享緩沖器130中時(shí),根據(jù)來(lái)自指針控制電路160的控制信號(hào)進(jìn)行彈出動(dòng)作,把所彈出的指針通過(guò)指針用總線180輸出給寫(xiě)入/讀出控制電路140。在從共享緩沖器130取出數(shù)據(jù)塊時(shí),根據(jù)來(lái)自指針控制電路160的控制信號(hào),通過(guò)指針用總線180接收指針計(jì)數(shù)器組170保存的指針,并將其入棧。
指針控制電路160根據(jù)數(shù)據(jù)傳送電路120的數(shù)據(jù)塊的傳送動(dòng)作、和為了丟棄數(shù)據(jù)分組而通知的丟棄信號(hào)的接收,控制指針棧150中的指針的出棧動(dòng)作和入棧動(dòng)作。并且,向指針計(jì)數(shù)器組170輸出控制信號(hào),控制通過(guò)指針用總線180的指針在指針計(jì)數(shù)器組170內(nèi)的寫(xiě)入動(dòng)作和讀出動(dòng)作。
指針計(jì)數(shù)器組170具有多個(gè)計(jì)數(shù)器,該多個(gè)計(jì)數(shù)器按照接收端口和發(fā)送端口管理寫(xiě)入共享緩沖器130的數(shù)據(jù)塊的指針及其使用數(shù)、登錄在發(fā)送隊(duì)列中的指針數(shù)等。并且,指針計(jì)數(shù)器組170如后面所述,把正在使用的指針劃分為向共享緩沖器130寫(xiě)入數(shù)據(jù)塊時(shí)的和從共享緩沖器130讀出時(shí)的進(jìn)行管理。并且,根據(jù)來(lái)自指針控制電路160的控制信號(hào),向指針用總線180輸出與已完成傳送的數(shù)據(jù)塊對(duì)應(yīng)的指針,并返回指針棧150。并且,對(duì)登錄在發(fā)送隊(duì)列中的指針數(shù)進(jìn)行計(jì)數(shù),在指針數(shù)超過(guò)允許值時(shí),向指針控制電路160輸出通知丟棄正在登錄處理的數(shù)據(jù)分組的丟棄信號(hào)。
根據(jù)具有這種結(jié)構(gòu)的網(wǎng)絡(luò)交換裝置100,進(jìn)行使用了1個(gè)共享緩沖器130的數(shù)據(jù)分組的交換處理。例如,在已接收應(yīng)該從網(wǎng)絡(luò)21傳送給網(wǎng)絡(luò)22的數(shù)據(jù)分組時(shí),在收發(fā)接口111所接收的數(shù)據(jù)分組被分割為固定長(zhǎng)度的數(shù)據(jù)塊,通過(guò)數(shù)據(jù)傳送電路120存儲(chǔ)在共享緩沖器130中。根據(jù)從指針棧150取出的指針,由寫(xiě)入/讀出控制電路140指定共享緩沖器130中的寫(xiě)入地址。
寫(xiě)入/讀出控制電路140在共享緩沖器130內(nèi)形成對(duì)應(yīng)于各發(fā)送端口的發(fā)送隊(duì)列,把數(shù)據(jù)塊存儲(chǔ)在共享緩沖器130中,然后把數(shù)據(jù)塊登錄在對(duì)應(yīng)于該目的地的發(fā)送隊(duì)列中。此時(shí),把數(shù)據(jù)分組內(nèi)的數(shù)據(jù)塊之間的連接和發(fā)送隊(duì)列內(nèi)的數(shù)據(jù)分組之間的連接,作為使用指針的鏈表結(jié)構(gòu)進(jìn)行管理。例如,在發(fā)送隊(duì)列內(nèi),此前已登錄的數(shù)據(jù)分組的尾數(shù)據(jù)塊和新登錄的首數(shù)據(jù)塊通過(guò)指針相連接。
并且,按照該鏈表結(jié)構(gòu)順序指定指針,由此從發(fā)送隊(duì)列順序讀出數(shù)據(jù)塊。將所讀出的數(shù)據(jù)塊通過(guò)數(shù)據(jù)傳送電路120傳送給對(duì)應(yīng)于目的地的收發(fā)接口112,并順序傳送給網(wǎng)絡(luò)22。
此處,共享緩沖器130中的數(shù)據(jù)塊的寫(xiě)入地址作為指示該地址的指針,由指針棧150賦予。寫(xiě)入/讀出控制電路140使用從指針棧150彈出的指針,把存儲(chǔ)在共享緩沖器130中的數(shù)據(jù)塊之間的連接狀態(tài)作為鏈表結(jié)構(gòu)進(jìn)行管理。根據(jù)這種管理方法,與接收端口和發(fā)送端口無(wú)關(guān),在從數(shù)據(jù)分組的接收到向目的地網(wǎng)絡(luò)的傳送期間,可以把該數(shù)據(jù)分組中包含的數(shù)據(jù)存儲(chǔ)在1個(gè)共享緩沖器130中。并且,所接收的數(shù)據(jù)分組被分割為固定長(zhǎng)度的數(shù)據(jù)塊存儲(chǔ)在共享緩沖器130中,所以能夠提高共享緩沖器130的使用效率,減小共享緩沖器130的容量。
另外,在指針計(jì)數(shù)器組170中,管理使用中的指針及使用數(shù),并且按照發(fā)送端口管理對(duì)于登錄在發(fā)送隊(duì)列中的數(shù)據(jù)塊使用的指針數(shù)。根據(jù)這種管理方法,容易管理正在使用的指針,并且將登錄在發(fā)送隊(duì)列中的數(shù)據(jù)塊數(shù)量控制在一定數(shù)量以?xún)?nèi),以防止產(chǎn)生阻塞。
下面,圖4是表示共享緩沖器130中的數(shù)據(jù)存儲(chǔ)狀態(tài)的示意圖。
如圖4所示,在共享緩沖器130中形成有對(duì)應(yīng)于各接收端口的接收數(shù)據(jù)分組專(zhuān)用緩沖器區(qū)域131a~131d,和對(duì)應(yīng)于各發(fā)送端口的發(fā)送隊(duì)列專(zhuān)用緩沖器區(qū)域132a~132d。另外,該圖所示區(qū)域只表示邏輯上的緩沖器區(qū)域,實(shí)際的物理緩沖器區(qū)域未必一定如此。
接收數(shù)據(jù)分組專(zhuān)用緩沖器區(qū)域131a~131d是這樣的區(qū)域,即,其分別對(duì)應(yīng)于收發(fā)接口111~114,在通過(guò)各收發(fā)接口111~114接收的數(shù)據(jù)分組被分割為數(shù)據(jù)塊、通過(guò)數(shù)據(jù)傳送電路120傳送給共享緩沖器130時(shí),存儲(chǔ)這些數(shù)據(jù)塊。
發(fā)送隊(duì)列專(zhuān)用緩沖器區(qū)域132a~132d是存儲(chǔ)登錄在對(duì)應(yīng)于數(shù)據(jù)分組的目的地的發(fā)送隊(duì)列中的數(shù)據(jù)塊的區(qū)域。各發(fā)送隊(duì)列專(zhuān)用緩沖器區(qū)域132a~132d具有有限的容量,可以存儲(chǔ)一定數(shù)量的數(shù)據(jù)塊。通過(guò)在指針計(jì)數(shù)器組170處對(duì)針對(duì)存儲(chǔ)在發(fā)送隊(duì)列中的數(shù)據(jù)塊使用的指針數(shù)進(jìn)行計(jì)數(shù),來(lái)管理各發(fā)送隊(duì)列專(zhuān)用緩沖器區(qū)域132a~132d的容量。
如上所述,在已接收應(yīng)該從網(wǎng)絡(luò)21傳送給網(wǎng)絡(luò)22的數(shù)據(jù)分組的情況下,首先,在接收數(shù)據(jù)分組專(zhuān)用緩沖器區(qū)域131a存儲(chǔ)相當(dāng)于1個(gè)數(shù)據(jù)分組的數(shù)據(jù)塊。在存儲(chǔ)完成后,通過(guò)寫(xiě)入/讀出控制電路140的控制,使這些數(shù)據(jù)塊連接對(duì)應(yīng)目的地的發(fā)送端口的發(fā)送隊(duì)列。
此時(shí),利用寫(xiě)入/讀出控制電路140,把數(shù)據(jù)分組內(nèi)的數(shù)據(jù)塊之間的連接和發(fā)送隊(duì)列內(nèi)的數(shù)據(jù)分組之間的連接,作為使用指針的鏈表結(jié)構(gòu)進(jìn)行管理。因此,在共享緩沖器130中,所存儲(chǔ)的數(shù)據(jù)分組的數(shù)據(jù)的物理存儲(chǔ)位置不會(huì)變化,接收數(shù)據(jù)分組專(zhuān)用緩沖器區(qū)域131a轉(zhuǎn)移為發(fā)送隊(duì)列專(zhuān)用緩沖器區(qū)域132b的一部分。
并且,在向發(fā)送隊(duì)列的登錄動(dòng)作結(jié)束后,從發(fā)送隊(duì)列專(zhuān)用緩沖器區(qū)域132b順序讀出數(shù)據(jù)塊。該讀出是根據(jù)寫(xiě)入/讀出控制電路140的控制,按照鏈表結(jié)構(gòu)順序指定指針來(lái)進(jìn)行的。存儲(chǔ)了所讀出的數(shù)據(jù)塊的發(fā)送隊(duì)列專(zhuān)用緩沖器區(qū)域132b通過(guò)退回指示該區(qū)域的指針,在邏輯上被更新,從而可以存儲(chǔ)新的數(shù)據(jù)塊。
下面,詳細(xì)說(shuō)明指針控制電路160和指針計(jì)數(shù)器組170的結(jié)構(gòu)。
圖5是表示指針控制電路160和指針計(jì)數(shù)器組170的內(nèi)部結(jié)構(gòu)示例的方框圖。另外,在圖5中為了容易理解各部分的連接關(guān)系,根據(jù)需要也示出指針控制電路160和指針計(jì)數(shù)器組170周?chē)墓δ軌K。
如圖5所示,指針控制電路160具備出??刂撇?61、入棧控制部162和丟棄控制部163。指針計(jì)數(shù)器組170具有設(shè)在各接收端口的接收中指針計(jì)數(shù)器171a~171d、分別設(shè)在各發(fā)送端口的發(fā)送中指針計(jì)數(shù)器172a~172d,以及發(fā)送隊(duì)列指針計(jì)數(shù)器173a~173d。
在指針控制電路160中,出??刂撇?61在數(shù)據(jù)塊被存儲(chǔ)在共享緩沖器130中時(shí),根據(jù)來(lái)自數(shù)據(jù)傳送電路120的接口信息判斷開(kāi)始傳送數(shù)據(jù)塊,指示指針棧150彈出指針,并且向?qū)?yīng)于接收端口的接收中指針計(jì)數(shù)器輸出用于指示寫(xiě)入指針的控制信號(hào)。
入??刂撇?62在存儲(chǔ)于共享緩沖器130的數(shù)據(jù)塊被讀出時(shí),根據(jù)來(lái)自數(shù)據(jù)傳送電路120的接口信息,向?qū)?yīng)于發(fā)送端口的發(fā)送中指針計(jì)數(shù)器輸出用于指示寫(xiě)入指針的控制信號(hào)。
并且,在1個(gè)數(shù)據(jù)分組的數(shù)據(jù)塊的讀出處理結(jié)束,而且向所有目的地的輸出結(jié)束后,指示指針棧150推入輸出給指針用總線180的指針。并且,更新已指示寫(xiě)入的發(fā)送中指針計(jì)數(shù)器的指針。
丟棄控制部163在從收發(fā)接口111~114、和發(fā)送隊(duì)列指針計(jì)數(shù)器173a~173d接收丟棄信號(hào)時(shí),向入??刂撇?62輸出控制信號(hào),委托在指針棧150進(jìn)行入棧動(dòng)作。并且,向接收中指針計(jì)數(shù)器171a~171d和發(fā)送中指針計(jì)數(shù)器172a~172d輸出指示讀出保存的指針的控制信號(hào)。
另外,在接收中指針計(jì)數(shù)器171a~171d和發(fā)送中指針計(jì)數(shù)器172a~172d中,為了進(jìn)行指針的寫(xiě)入或計(jì)數(shù)控制信號(hào)的輸出而指定的計(jì)數(shù)器接收來(lái)自丟棄控制部163的控制信號(hào)。
另一方面,在指針計(jì)數(shù)器組170中,接收中指針計(jì)數(shù)器171a~171d和發(fā)送中指針計(jì)數(shù)器172a~172d分別連接指針用總線180,從而可以進(jìn)行指針的收發(fā)。并且,接收中指針計(jì)數(shù)器171a~171d和發(fā)送中指針計(jì)數(shù)器172a~172d分別向發(fā)送隊(duì)列指針計(jì)數(shù)器173a~173d輸出用于指示增減計(jì)數(shù)值的計(jì)數(shù)控制信號(hào)。
接收中指針計(jì)數(shù)器171a~171d根據(jù)來(lái)自指針控制電路160的出??刂撇?61的控制信號(hào),獲取并保存從指針棧150彈出并通過(guò)指針用總線180傳送的指針,并且對(duì)所獲取的指針數(shù)進(jìn)行計(jì)數(shù)。
并且,在1個(gè)數(shù)據(jù)分組的指針的存儲(chǔ)和指針數(shù)的計(jì)數(shù)完成后,輸出計(jì)數(shù)控制信號(hào),以便向與所指定的發(fā)送端口對(duì)應(yīng)的發(fā)送隊(duì)列指針計(jì)數(shù)器的計(jì)數(shù)值加算此時(shí)的計(jì)數(shù)值。在輸出計(jì)數(shù)控制信號(hào)后,清除所保存的指針和計(jì)數(shù)值。
另外,在接收到來(lái)自丟棄控制部163的控制信號(hào)后,讀出保存的指針并將其傳送給指針用總線180,并且返回指針棧150。此時(shí),清除計(jì)數(shù)值。
發(fā)送中指針計(jì)數(shù)器172a~172d獲取并保存從寫(xiě)入/讀出控制電路140通過(guò)指針用總線180傳送的指針,并且對(duì)所獲取的指針數(shù)進(jìn)行計(jì)數(shù)。此時(shí),輸出計(jì)數(shù)控制信號(hào),以便從與相同發(fā)送端口對(duì)應(yīng)的發(fā)送隊(duì)列指針計(jì)數(shù)器173a~173d的計(jì)數(shù)值順序減去所獲取的指針數(shù)。
并且,在沒(méi)有對(duì)讀出的數(shù)據(jù)分組指定其他目的地的情況下,在讀出來(lái)自共享緩沖器130的數(shù)據(jù)塊時(shí),從寫(xiě)入/讀出控制電路140向指針用總線180順序輸出對(duì)應(yīng)的指針,并返回指針棧150。此時(shí),對(duì)應(yīng)的發(fā)送中指針計(jì)數(shù)器清除計(jì)數(shù)值。在指定了其他目的地的情況下,輸出計(jì)數(shù)控制信號(hào),以將此時(shí)的計(jì)數(shù)值加到與所指定的發(fā)送端口對(duì)應(yīng)的發(fā)送隊(duì)列指針計(jì)數(shù)器的計(jì)數(shù)值上。在輸出計(jì)數(shù)控制信號(hào)后,清除所保存的指針和計(jì)數(shù)值。
并且,在接收了來(lái)自丟棄控制部163的控制信號(hào)的情況下,讀出保存的指針并將其送出給指針用總線180,并返回到指針棧150。此時(shí),清除計(jì)數(shù)值。
發(fā)送隊(duì)列指針計(jì)數(shù)器173a~173d根據(jù)來(lái)自接收中指針計(jì)數(shù)器171a~171d和發(fā)送中指針計(jì)數(shù)器172a~172d的計(jì)數(shù)控制信號(hào),進(jìn)行計(jì)數(shù)動(dòng)作,由此對(duì)為登錄在各發(fā)送隊(duì)列中的數(shù)據(jù)塊所使用的指針數(shù)進(jìn)行計(jì)數(shù)。并且,在各發(fā)送隊(duì)列的計(jì)數(shù)值超過(guò)了規(guī)定值的情況下,向丟棄控制部163輸出丟棄信號(hào)。
此處,一并說(shuō)明指針控制電路160內(nèi)部的動(dòng)作和指針計(jì)數(shù)器組170內(nèi)部的動(dòng)作。首先,示出出??刂撇?61的處理的流程圖,說(shuō)明接收數(shù)據(jù)分組時(shí)的動(dòng)作。
圖6是表示出??刂撇?61的處理流程的流程圖。以下,按照步驟序號(hào)說(shuō)明圖6所示處理。
(步驟S601)在從數(shù)據(jù)傳送電路120向共享緩沖器130存儲(chǔ)來(lái)自收發(fā)接口111~114的數(shù)據(jù)塊時(shí),將與各數(shù)據(jù)塊相關(guān)的接口信息輸出給出棧控制部161。出棧控制部161根據(jù)來(lái)自數(shù)據(jù)傳送電路120的接口信息,判斷向共享緩沖器130的數(shù)據(jù)塊存儲(chǔ)處理是否已開(kāi)始。并且,在判斷為已開(kāi)始的情況下進(jìn)入步驟S602。
(步驟S602)指示指針棧150彈出指針。通過(guò)指針用總線180將彈出后的指針輸出給寫(xiě)入/讀出控制電路140,再輸出給指針計(jì)數(shù)器組170。
(步驟S603)向與所指定的接收端口對(duì)應(yīng)的接收中指針計(jì)數(shù)器輸出用于指示寫(xiě)入指針的控制信號(hào)。由此,將從指針棧150彈出的指針存儲(chǔ)到與接收端口對(duì)應(yīng)的接收中指針計(jì)數(shù)器中,該接收中指針計(jì)數(shù)器的計(jì)數(shù)值增計(jì)數(shù)。
(步驟S604)根據(jù)塊位置信息,判斷正在存儲(chǔ)處理中的數(shù)據(jù)塊是否是數(shù)據(jù)分組的尾數(shù)據(jù)塊。在不是尾數(shù)據(jù)塊的情況下,返回步驟S601,在是尾數(shù)據(jù)塊的情況下,進(jìn)入步驟S605。
通過(guò)重復(fù)進(jìn)行以上步驟S601~S604,將1個(gè)數(shù)據(jù)分組的數(shù)據(jù)塊存儲(chǔ)到共享緩沖器130中,并且將對(duì)這些數(shù)據(jù)塊所使用的指針存儲(chǔ)到對(duì)應(yīng)的接收中指針計(jì)數(shù)器中。該接收中指針計(jì)數(shù)器將所存儲(chǔ)的指針數(shù)作為計(jì)數(shù)值來(lái)保持。
(步驟S605)向在上述步驟S601~S604的處理中所控制的接收中指針計(jì)數(shù)器指示結(jié)束指針的寫(xiě)入。此時(shí),從接口信息中包含的發(fā)送端口中選擇1個(gè)端口,將該發(fā)送端口通知給控制中的接收中指針計(jì)數(shù)器。另外,在指定了多個(gè)發(fā)送端口的情況下,需要預(yù)先制定規(guī)則,以使在該處理中選擇的發(fā)送端口與在寫(xiě)入/讀出控制電路140中選擇的發(fā)送端口相同。
接收到通知的接收中指針計(jì)數(shù)器輸出計(jì)數(shù)控制信號(hào),以將所保存的計(jì)數(shù)值加到與所通知的發(fā)送端口對(duì)應(yīng)的發(fā)送隊(duì)列指針計(jì)數(shù)器上。由此,將在對(duì)應(yīng)的發(fā)送隊(duì)列中使用的指針數(shù)、即所登錄的數(shù)據(jù)塊數(shù)量,作為發(fā)送隊(duì)列指針計(jì)數(shù)器的計(jì)數(shù)值進(jìn)行保存。
此處,在接收到計(jì)數(shù)控制信號(hào)的發(fā)送隊(duì)列指針計(jì)數(shù)器中,在計(jì)數(shù)值超過(guò)允許值,并且丟棄信號(hào)被輸出到丟棄控制部163的情況下,從丟棄控制部163向入棧控制部162輸出控制信號(hào)。與此同時(shí),向成為上述控制對(duì)象的接收中指針計(jì)數(shù)器輸出指示讀出指針的控制信號(hào)。并且,因?yàn)閺膩G棄控制部163向?qū)懭?讀出控制電路140輸出了控制信號(hào),所以寫(xiě)入/讀出控制電路140不進(jìn)行向發(fā)送隊(duì)列登錄數(shù)據(jù)塊的處理。但是,在存在其他目的地并可以存儲(chǔ)到與該目的地對(duì)應(yīng)的發(fā)送隊(duì)列中的情況下,進(jìn)行向該發(fā)送隊(duì)列登錄的處理。
下面,說(shuō)明發(fā)送數(shù)據(jù)分組時(shí)的動(dòng)作。
圖7是表示發(fā)送數(shù)據(jù)分組時(shí)的網(wǎng)絡(luò)交換裝置100的處理流程的流程圖。在該流程圖中,表示針對(duì)1個(gè)發(fā)送端口進(jìn)行數(shù)據(jù)分組的傳送的情況下的處理。以下,按照步驟序號(hào)說(shuō)明圖7所示處理。
(步驟S701)數(shù)據(jù)傳送電路120從收發(fā)接口接收發(fā)送請(qǐng)求。
(步驟S702)從數(shù)據(jù)傳送電路120向?qū)懭?讀出控制電路140通知進(jìn)行讀出的發(fā)送端口,寫(xiě)入/讀出控制電路140指定讀出地址。由此,從對(duì)應(yīng)的發(fā)送隊(duì)列中讀出數(shù)據(jù)塊,并通過(guò)數(shù)據(jù)傳送電路120傳送給與目的地對(duì)應(yīng)的收發(fā)接口。
(步驟S703)從寫(xiě)入/讀出控制電路140向指針用總線180輸出讀出所使用的指針。此時(shí),向?qū)?yīng)的發(fā)送中指針計(jì)數(shù)器輸出用于指示寫(xiě)入指針的控制信號(hào),在該發(fā)送中指針計(jì)數(shù)器中存儲(chǔ)著來(lái)自寫(xiě)入/讀出控制電路140的指針,并且計(jì)數(shù)值增計(jì)數(shù)。另外,從該發(fā)送中指針計(jì)數(shù)器向?qū)?yīng)的發(fā)送隊(duì)列指針計(jì)數(shù)器輸出計(jì)數(shù)控制信號(hào),接收到計(jì)數(shù)控制信號(hào)的發(fā)送隊(duì)列指針計(jì)數(shù)器減計(jì)數(shù)。
(步驟S704)數(shù)據(jù)傳送電路120根據(jù)所讀出的數(shù)據(jù)塊的內(nèi)容,判斷是否存在其他應(yīng)該傳送的目的地。此處,只在不存在其他目的地的情況下,向入??刂撇?62通知該情況。入??刂撇?62對(duì)應(yīng)于該通知,對(duì)指針棧150進(jìn)行控制以開(kāi)始入棧動(dòng)作。由此,將從寫(xiě)入/讀出控制電路140輸出給指針用總線180的指針?lè)祷亟o指針棧150。
(步驟S705)判斷所讀出的數(shù)據(jù)塊是否是數(shù)據(jù)分組的尾數(shù)據(jù)塊。在不是尾數(shù)據(jù)塊的情況下,返回步驟S702,進(jìn)行下一個(gè)數(shù)據(jù)塊的讀出和傳送。另外,在是尾數(shù)據(jù)塊的情況下,進(jìn)入步驟S706。
通過(guò)重復(fù)進(jìn)行以上步驟S701~S705,經(jīng)由1個(gè)發(fā)送端口來(lái)發(fā)送1個(gè)數(shù)據(jù)分組的數(shù)據(jù)塊,并且將對(duì)這些數(shù)據(jù)塊所使用的指針存儲(chǔ)到對(duì)應(yīng)的發(fā)送中指針計(jì)數(shù)器中。該發(fā)送中指針計(jì)數(shù)器把所存儲(chǔ)的指針數(shù)作為計(jì)數(shù)值來(lái)保存。并且,從與相同發(fā)送端口對(duì)應(yīng)的發(fā)送隊(duì)列指針計(jì)數(shù)器的計(jì)數(shù)值中僅減去該發(fā)送中指針計(jì)數(shù)器保存的計(jì)數(shù)值。
(步驟S706)判斷是否已完成向所有目的地的傳送。在已完成的情況下進(jìn)入步驟S707,在未完成的情況下進(jìn)入步驟S708。
(步驟S707)清除指針的存儲(chǔ)地點(diǎn)的發(fā)送中指針計(jì)數(shù)器。由此,結(jié)束1個(gè)數(shù)據(jù)分組的數(shù)據(jù)塊的傳送處理。
(步驟S708)在存在其他目的地的情況下,通過(guò)數(shù)據(jù)傳送電路120指定與下一個(gè)目的地對(duì)應(yīng)的發(fā)送端口。在指針計(jì)數(shù)器組170中,向與新指定的目的地對(duì)應(yīng)的發(fā)送隊(duì)列指針計(jì)數(shù)器輸出計(jì)數(shù)控制信號(hào),對(duì)與已結(jié)束傳送的發(fā)送端口對(duì)應(yīng)的發(fā)送中指針計(jì)數(shù)器的計(jì)數(shù)值進(jìn)行加運(yùn)算。
(步驟S709)此處,在對(duì)計(jì)數(shù)值進(jìn)行了加運(yùn)算的發(fā)送隊(duì)列指針計(jì)數(shù)器中,在計(jì)數(shù)值超過(guò)允許值的情況下,向丟棄控制部163輸出丟棄信號(hào)。此時(shí),在發(fā)送隊(duì)列指針計(jì)數(shù)器中,不進(jìn)行計(jì)數(shù)值的加運(yùn)算。在已輸出丟棄信號(hào)的情況下進(jìn)入步驟S710。
并且,在未輸出丟棄信號(hào)的情況下進(jìn)入步驟S707,清除與已結(jié)束發(fā)送的發(fā)送端口對(duì)應(yīng)的發(fā)送中指針計(jì)數(shù)器,結(jié)束處理。由此,變成將發(fā)送中指針計(jì)數(shù)器的計(jì)數(shù)值加到與相同數(shù)據(jù)分組的下一個(gè)目的地對(duì)應(yīng)的發(fā)送隊(duì)列指針計(jì)數(shù)器上的狀態(tài)。并且,通過(guò)寫(xiě)入/讀出控制電路140的控制,使數(shù)據(jù)分組連接到與新的目的地對(duì)應(yīng)的發(fā)送隊(duì)列上。
(步驟S710)判斷是否存在其他目的地。在存在目的地的情況下返回步驟S708,通過(guò)數(shù)據(jù)傳送電路120指定其他發(fā)送端口。另外,在沒(méi)有目的地的情況下進(jìn)入步驟S711。
在該步驟,接收到來(lái)自發(fā)送隊(duì)列指針計(jì)數(shù)器的丟棄信號(hào)的丟棄控制部163,請(qǐng)求入??刂撇?62開(kāi)始入棧動(dòng)作。此時(shí),從數(shù)據(jù)傳送電路120向入??刂撇?62通知是否存在其他目的地的信息。在存在其他目的地的情況下,需要進(jìn)行向該目的地的數(shù)據(jù)分組的傳送,所以入??刂撇?62不指示指針棧150進(jìn)行入棧動(dòng)作。
(步驟S711)在該步驟,從數(shù)據(jù)傳送電路120向入??刂撇?62通知沒(méi)有其他目的地。因此,入??刂撇?62響應(yīng)于來(lái)自丟棄控制部163的請(qǐng)求,指示指針棧150進(jìn)行入棧動(dòng)作。此時(shí),從丟棄控制部163向與已結(jié)束發(fā)送的發(fā)送端口對(duì)應(yīng)的發(fā)送中指針計(jì)數(shù)器輸出控制信號(hào),指示將保存的指針輸出到指針用總線180。接收到該控制信號(hào)的發(fā)送中指針計(jì)數(shù)器將保存的指針輸出到指針用總線180。由此,將該指針退回給指針棧150。并且,在這之后,進(jìn)入步驟S707,清除發(fā)送中指針計(jì)數(shù)器,結(jié)束處理。
通過(guò)執(zhí)行以上圖6和圖7說(shuō)明的處理,可以有效進(jìn)行共享緩沖器130中的數(shù)據(jù)塊的寫(xiě)入地址管理。例如,在丟棄數(shù)據(jù)分組的情況下,根據(jù)來(lái)自指針控制電路160的指示,從接收中指針計(jì)數(shù)器171a~171d或發(fā)送中指針計(jì)數(shù)器172a~172d中的必要的一方中讀出指針,并將指針退回指針棧150。由此,對(duì)應(yīng)于退回的指針,在共享緩沖器130內(nèi)形成空閑區(qū)域,通過(guò)再利用這些指針,可以把后續(xù)的數(shù)據(jù)塊可靠地存儲(chǔ)在共享緩沖器130中。
并且,因?yàn)樵诎l(fā)送隊(duì)列指針計(jì)數(shù)器173a~173d中對(duì)登錄在發(fā)送隊(duì)列中的數(shù)據(jù)塊數(shù)量進(jìn)行管理,所以存儲(chǔ)發(fā)送隊(duì)列的發(fā)送隊(duì)列專(zhuān)用緩沖器區(qū)域132a~132d通常被限制為小于等于固定容量。因此,例如在集中接收特定的發(fā)送端口目的地的數(shù)據(jù)分組的情況下,未能存儲(chǔ)的數(shù)據(jù)分組被丟棄,所以該發(fā)送端口的傳送處理不會(huì)影響其他發(fā)送端口的傳送處理,從而能夠容易地防止阻塞。
下面,說(shuō)明對(duì)存儲(chǔ)在共享緩沖器130中的數(shù)據(jù)塊使用了鏈表結(jié)構(gòu)的管理方法。此處,示例以下兩種管理方法。
(第1鏈表管理示例)在使用了鏈表結(jié)構(gòu)的第1管理示例中,在共享緩沖器130內(nèi)設(shè)有與每個(gè)數(shù)據(jù)塊對(duì)應(yīng)的附屬單元區(qū)域。并且,寫(xiě)入/讀出控制電路140生成用于管理1個(gè)數(shù)據(jù)分組內(nèi)的數(shù)據(jù)塊之間的連接、以及各發(fā)送隊(duì)列內(nèi)的數(shù)據(jù)分組之間的連接的附屬信息,并存儲(chǔ)到附屬單元區(qū)域中。并且,寫(xiě)入/讀出控制電路140具有各種寄存器組,以按照每個(gè)接收端口和每個(gè)發(fā)送端口來(lái)管理數(shù)據(jù)塊之間的連接,通過(guò)順序改寫(xiě)該寄存器組,控制共享緩沖器130內(nèi)的數(shù)據(jù)塊的寫(xiě)入和讀出。
圖8是表示存儲(chǔ)在共享緩沖器130中的數(shù)據(jù)塊的結(jié)構(gòu)的示意圖。另外,在圖8中,連接的各數(shù)據(jù)塊和各數(shù)據(jù)分組是連續(xù)配置的,但在共享緩沖器130上的實(shí)際的物理寫(xiě)入位置并非如此。
當(dāng)在各收發(fā)接口111~114中接收數(shù)據(jù)分組并將其分割為數(shù)據(jù)塊時(shí),將這些數(shù)據(jù)塊存儲(chǔ)到由指針?biāo)甘镜脑诠蚕砭彌_器130上的地址中。此時(shí),對(duì)各數(shù)據(jù)塊形成附屬單元區(qū)域133a和數(shù)據(jù)塊區(qū)域133b,將分割后的數(shù)據(jù)塊存儲(chǔ)到數(shù)據(jù)塊區(qū)域133b中。
此處,例如當(dāng)考慮接收了應(yīng)該從網(wǎng)絡(luò)21傳送給網(wǎng)絡(luò)22的數(shù)據(jù)分組的情況時(shí),從收發(fā)接口111通過(guò)數(shù)據(jù)傳送電路120提供給共享緩沖器130的1個(gè)數(shù)據(jù)分組的數(shù)據(jù)塊,被存儲(chǔ)到共享緩沖器130內(nèi)的對(duì)應(yīng)的接收數(shù)據(jù)分組專(zhuān)用緩沖器區(qū)域131a中。并且,此時(shí),在各數(shù)據(jù)塊的附屬單元區(qū)域133a中,存儲(chǔ)著從首數(shù)據(jù)塊開(kāi)始順序指示其后續(xù)數(shù)據(jù)塊的位置的指針。在圖8中,把這種指針表示為“指針P1”。在1個(gè)數(shù)據(jù)分組的數(shù)據(jù)塊的存儲(chǔ)結(jié)束的時(shí)刻,在除尾數(shù)據(jù)塊以外的所有數(shù)據(jù)塊的附屬單元區(qū)域133a中,存儲(chǔ)著在后續(xù)的數(shù)據(jù)塊中所使用的指針P1。由此,在數(shù)據(jù)分組內(nèi)數(shù)據(jù)塊之間被連接。
然后,這些數(shù)據(jù)塊被登錄到與網(wǎng)絡(luò)22對(duì)應(yīng)的發(fā)送隊(duì)列中。此時(shí),使用后述的寄存器組,經(jīng)常識(shí)別已登錄在發(fā)送隊(duì)列中的尾數(shù)據(jù)分組,在存在已經(jīng)登錄到發(fā)送隊(duì)列中的數(shù)據(jù)分組的情況下,把指示新登錄的數(shù)據(jù)分組的首數(shù)據(jù)塊的位置的指針存儲(chǔ)到該尾數(shù)據(jù)分組的首數(shù)據(jù)塊的附屬單元區(qū)域133a中。在圖8中,把這種指針表示為“指針P2”。由此,在發(fā)送隊(duì)列內(nèi)各個(gè)數(shù)據(jù)分組之間被連接。
并且,在寫(xiě)入/讀出控制電路140中,在寄存器組中總是保存用于讀出發(fā)送隊(duì)列內(nèi)的數(shù)據(jù)塊的指針,對(duì)于每次數(shù)據(jù)塊的讀出動(dòng)作,參照所讀出的數(shù)據(jù)塊的附屬單元區(qū)域133a,提取下一個(gè)應(yīng)該讀出的數(shù)據(jù)塊的指針,更新寄存器組的存儲(chǔ)數(shù)據(jù)。
下面,圖9是表示寫(xiě)入/讀出控制電路140所具備的寄存器組的結(jié)構(gòu)圖。
如圖9所示,寫(xiě)入/讀出控制電路140具有與各接收端口對(duì)應(yīng)的接收首地址寄存器141a~141d和接收尾地址寄存器142a~142d;與各發(fā)送端口對(duì)應(yīng)的已發(fā)送數(shù)據(jù)分組地址寄存器143a~143d、發(fā)送塊地址寄存器144a~144d、發(fā)送尾地址寄存器145a~145d、和下一個(gè)發(fā)送數(shù)據(jù)分組地址寄存器146a~146d。
在將所接收的數(shù)據(jù)分組存儲(chǔ)到共享緩沖器130時(shí),接收首地址寄存器141a~141d保存指示該數(shù)據(jù)分組中的首數(shù)據(jù)塊的指針。接收尾地址寄存器142a~142d保存指示該數(shù)據(jù)分組的尾數(shù)據(jù)塊的指針。
已發(fā)送數(shù)據(jù)分組地址寄存器143a~143d保存指示在登錄于共享緩沖器130內(nèi)的各發(fā)送隊(duì)列中、正在發(fā)送中或發(fā)送已結(jié)束的數(shù)據(jù)分組的首數(shù)據(jù)塊的指針。發(fā)送塊地址寄存器144a~144d保存指示在各發(fā)送隊(duì)列中預(yù)定下一個(gè)發(fā)送的數(shù)據(jù)塊的指針。發(fā)送尾地址寄存器145a~145d保存指示在各發(fā)送隊(duì)列中最后登錄的數(shù)據(jù)分組的首數(shù)據(jù)塊的指針。下一個(gè)發(fā)送數(shù)據(jù)分組地址寄存器146a~146d保存指示預(yù)定下一個(gè)發(fā)送的數(shù)據(jù)分組的首數(shù)據(jù)塊的指針。
下面,說(shuō)明基于存儲(chǔ)在這些寄存器組和各數(shù)據(jù)塊的附屬單元區(qū)域133a中的信息的寫(xiě)入/讀出控制電路140的處理。另外,在以下圖10和圖11所示流程圖的說(shuō)明中,根據(jù)需要也追加說(shuō)明網(wǎng)絡(luò)交換裝置100內(nèi)的其他要素的處理。
圖10是表示接收數(shù)據(jù)分組時(shí)的寫(xiě)入/讀出控制電路140的處理流程的流程圖。以下,按照步驟序號(hào)說(shuō)明圖10所示處理。
(步驟S1001)例如,當(dāng)收發(fā)接口111中接收到數(shù)據(jù)分組,向數(shù)據(jù)傳送電路120通知接收請(qǐng)求時(shí),數(shù)據(jù)傳送電路120把分割后的數(shù)據(jù)塊的接口信息輸出給寫(xiě)入/讀出控制電路140。寫(xiě)入/讀出控制電路140監(jiān)視接口信息的接收,當(dāng)接收到此信息時(shí),判斷為向共享緩沖器130存儲(chǔ)數(shù)據(jù)塊的處理已經(jīng)開(kāi)始,進(jìn)入步驟S1002。
(步驟S1002)從指針棧150彈出指針,寫(xiě)入/讀出控制電路140通過(guò)指針用總線180獲取該指針。并且,以該指針指示的共享緩沖器130內(nèi)的地址為基礎(chǔ),指定數(shù)據(jù)塊的寫(xiě)入地址。由此,將數(shù)據(jù)塊存儲(chǔ)到共享緩沖器130中。
(步驟S1003)把在步驟S1002獲取的指針按照以下條件寫(xiě)入附屬單元區(qū)域133a、接收首地址寄存器141a、接收尾地址寄存器142a。這些條件是根據(jù)接口信息中包含的塊位置信息來(lái)進(jìn)行判斷的。
(步驟S1003-1)在存儲(chǔ)在共享緩沖器130的數(shù)據(jù)塊是數(shù)據(jù)分組的首數(shù)據(jù)塊的情況下,把所獲取的指針寫(xiě)入對(duì)應(yīng)的接收首地址寄存器141a和接收尾地址寄存器142a。
(步驟S1003-2)在所存儲(chǔ)的數(shù)據(jù)塊是數(shù)據(jù)分組內(nèi)的首、尾以外的其他數(shù)據(jù)塊的情況下,參照存儲(chǔ)在接收尾地址寄存器142a中的指針。該指針是指示前一數(shù)據(jù)塊的寫(xiě)入地址的指針,寫(xiě)入/讀出控制電路140把在步驟S1002獲取的指針存儲(chǔ)到該數(shù)據(jù)塊的附屬單元區(qū)域133a。由此,與同一數(shù)據(jù)分組中的前一數(shù)據(jù)塊連接。
并且,使用在步驟S1002獲取的指針,更新接收尾地址寄存器142a。
(步驟S1003-3)在所存儲(chǔ)的數(shù)據(jù)塊是數(shù)據(jù)分組內(nèi)的尾數(shù)據(jù)塊的情況下,參照存儲(chǔ)在接收尾地址寄存器142a中的指針。并且,在寫(xiě)入該指針指示的地址的數(shù)據(jù)塊的附屬單元區(qū)域133a中存儲(chǔ)在步驟S1002獲取的指針,以與前面的數(shù)據(jù)塊連接。另外,在所存儲(chǔ)的數(shù)據(jù)塊的附屬單元區(qū)域133a中寫(xiě)入表示不存在后續(xù)數(shù)據(jù)塊的信息。
(步驟S1004)根據(jù)塊位置信息,判斷傳送處理中的數(shù)據(jù)塊是否是數(shù)據(jù)分組內(nèi)的尾數(shù)據(jù)塊。在不是尾數(shù)據(jù)塊的情況下返回步驟S1001,并等待后續(xù)數(shù)據(jù)塊的存儲(chǔ)處理的開(kāi)始。在是尾數(shù)據(jù)塊的情況下進(jìn)入步驟S1005。
通過(guò)重復(fù)以上步驟S1001~步驟S1004的處理,將1個(gè)數(shù)據(jù)分組的數(shù)據(jù)塊存儲(chǔ)在共享緩沖器130中。此時(shí),該數(shù)據(jù)分組內(nèi)的首數(shù)據(jù)塊的寫(xiě)入地址保存在接收首地址寄存器141a中,尾數(shù)據(jù)塊或其前一數(shù)據(jù)塊的寫(xiě)入地址保存在接收尾地址寄存器142a中。
另外,以上步驟S1001~步驟S1004的處理與圖6所示的步驟S601~S605的處理對(duì)應(yīng)。即,在該時(shí)刻,將在數(shù)據(jù)分組的存儲(chǔ)中使用的指針及其數(shù)量保存在接收中指針計(jì)數(shù)器171a中。
然后,進(jìn)行向發(fā)送隊(duì)列的登錄處理。
(步驟S1005)根據(jù)接口信息,選擇目的地的發(fā)送端口。另外,此處,說(shuō)明選擇網(wǎng)絡(luò)22作為目的地時(shí)的情況。并且,此時(shí),將接收中指針計(jì)數(shù)器171a的計(jì)數(shù)值相加給發(fā)送隊(duì)列指針計(jì)數(shù)器173b的計(jì)數(shù)值上。
(步驟S1006)在發(fā)送隊(duì)列指針計(jì)數(shù)器173b中,在計(jì)數(shù)值超過(guò)允許值并且不存在其他目的地的情況下,從丟棄控制部163向?qū)懭?讀出控制電路140輸出控制信號(hào)。在寫(xiě)入/讀出控制電路140接收到該控制信號(hào)的情況下進(jìn)入步驟S1008,在未接收到的情況下進(jìn)入步驟S1007。
(步驟S1007)對(duì)所接收的數(shù)據(jù)分組進(jìn)行登錄到與目的地對(duì)應(yīng)的發(fā)送隊(duì)列中的處理。此處,參照與所選擇的發(fā)送端口對(duì)應(yīng)的下一個(gè)發(fā)送數(shù)據(jù)分組地址寄存器146b,根據(jù)該寄存器里是否存儲(chǔ)有數(shù)據(jù),判斷目的地的發(fā)送隊(duì)列中是否登錄有先行的數(shù)據(jù)分組。并且,通過(guò)向發(fā)送用各種寄存器和附屬單元中寫(xiě)入存儲(chǔ)在接收首地址寄存器141a中的指針,使數(shù)據(jù)分組連接到發(fā)送隊(duì)列。
(步驟S1007-1)在與目的地對(duì)應(yīng)的發(fā)送隊(duì)列中登錄有先行的數(shù)據(jù)分組的情況下,提取存儲(chǔ)在接收首地址寄存器141a中的指針。并且,參照存儲(chǔ)在與目的地對(duì)應(yīng)的發(fā)送尾地址寄存器145b中的指針,提取已登錄在發(fā)送隊(duì)列內(nèi)的尾數(shù)據(jù)分組的首數(shù)據(jù)塊的寫(xiě)入位置,在該數(shù)據(jù)塊的附屬單元區(qū)域133a中存儲(chǔ)從接收首地址寄存器141a中提取的指針。由此,在發(fā)送隊(duì)列內(nèi)的先行數(shù)據(jù)分組中,在其首數(shù)據(jù)塊的附屬單元區(qū)域133a中存儲(chǔ)有指示后續(xù)數(shù)據(jù)塊的指針、和指示后續(xù)數(shù)據(jù)分組的首數(shù)據(jù)塊的指針,并在先行數(shù)據(jù)分組和新登錄的數(shù)據(jù)分組之間進(jìn)行連接。
并且,在發(fā)送尾地址寄存器145b中寫(xiě)入存儲(chǔ)在接收首地址寄存器141a中的指針。由此,對(duì)指示發(fā)送隊(duì)列中的尾數(shù)據(jù)分組的首位置的指針進(jìn)行更新。
(步驟S1007-2)在與目的地對(duì)應(yīng)的發(fā)送隊(duì)列中未登錄先行數(shù)據(jù)分組的情況下,把存儲(chǔ)在接收首地址寄存器141a中的指針?lè)謩e存儲(chǔ)到與目的地對(duì)應(yīng)的已發(fā)送數(shù)據(jù)分組地址寄存器143b、發(fā)送塊地址寄存器144b、發(fā)送尾地址寄存器145b以及下一個(gè)發(fā)送數(shù)據(jù)分組地址寄存器146b中。由此,寫(xiě)入/讀出控制電路140識(shí)別從對(duì)應(yīng)的發(fā)送隊(duì)列先行讀出的數(shù)據(jù)分組的讀出位置。
(步驟S1008)在步驟S1006中接收到來(lái)自丟棄控制部163的控制信號(hào)的情況下,參照接口信息,判斷是否指定了其他發(fā)送端口作為目的地。在存在其他目的地的情況下返回步驟S1005,選擇新的目的地的發(fā)送端口。
通過(guò)以上處理,在數(shù)據(jù)分組被正確登錄在共享緩沖器130上的發(fā)送隊(duì)列中的情況下,將該發(fā)送隊(duì)列上的數(shù)據(jù)塊作為使用了指針的鏈表結(jié)構(gòu)來(lái)進(jìn)行管理。然后,通過(guò)按照該鏈表結(jié)構(gòu)順序提取指針,從發(fā)送隊(duì)列順序讀出數(shù)據(jù)塊,并發(fā)送給目的地的網(wǎng)絡(luò)。
圖11是表示發(fā)送數(shù)據(jù)分組時(shí)的寫(xiě)入/讀出控制電路140的處理流程的流程圖。以下,按照步驟序號(hào)說(shuō)明圖11所示處理。
(步驟S1101)例如在向網(wǎng)絡(luò)22進(jìn)行數(shù)據(jù)分組的發(fā)送的情況下,當(dāng)從收發(fā)接口112向數(shù)據(jù)傳送電路120通知發(fā)送請(qǐng)求時(shí),數(shù)據(jù)傳送電路120把包括與其對(duì)應(yīng)的發(fā)送端口信息的接口信息輸出給寫(xiě)入/讀出控制電路140。寫(xiě)入/讀出控制電路140監(jiān)視接口信息的接收,當(dāng)接收到該接口信息時(shí),判斷為從共享緩沖器130的數(shù)據(jù)塊傳送已開(kāi)始,進(jìn)入步驟S1102。
(步驟S1102)參照存儲(chǔ)在與發(fā)送端口對(duì)應(yīng)的發(fā)送塊地址寄存器144b中的指針,根據(jù)該指針指定共享緩沖器130的讀出地址。由此,讀出對(duì)應(yīng)的發(fā)送隊(duì)列的首數(shù)據(jù)塊、和存儲(chǔ)在其附屬單元區(qū)域133a中的指針,將數(shù)據(jù)塊通過(guò)數(shù)據(jù)傳送電路120傳送給收發(fā)接口112。
(步驟S1103)使用所讀出的存儲(chǔ)在附屬單元區(qū)域133a中的指針和發(fā)送塊地址寄存器144b的指針,按照以下條件更新已發(fā)送數(shù)據(jù)分組地址寄存器143b、發(fā)送塊地址寄存器144b、發(fā)送尾地址寄存器145b以及下一個(gè)發(fā)送數(shù)據(jù)分組地址寄存器146b的指針。
(步驟S1103-1)首先,把存儲(chǔ)在發(fā)送塊地址寄存器144b中的指針寫(xiě)入已發(fā)送數(shù)據(jù)分組地址寄存器143b。由此,保存指示正在讀出的數(shù)據(jù)分組的首數(shù)據(jù)塊的指針。
并且,在所讀出的數(shù)據(jù)塊是數(shù)據(jù)分組的首部,并且在附屬單元區(qū)域133a內(nèi)存儲(chǔ)有指示后續(xù)數(shù)據(jù)分組的指針(在圖10的步驟S1007-1存儲(chǔ)的指針)的情況下,把該指針存儲(chǔ)到下一個(gè)發(fā)送數(shù)據(jù)分組地址寄存器146b中。由此,在發(fā)送隊(duì)列內(nèi)已登錄下一個(gè)數(shù)據(jù)分組的情況下,可以識(shí)別該數(shù)據(jù)分組的首地址。
并且,把存儲(chǔ)在附屬單元區(qū)域133a的指示后續(xù)數(shù)據(jù)分組的指針(在圖10的步驟S1102-2或S1102-3存儲(chǔ)的指針),存儲(chǔ)到發(fā)送塊地址寄存器144b中。由此,可以識(shí)別下一個(gè)應(yīng)該讀出的數(shù)據(jù)塊的地址。
(步驟S1103-2)在所讀出的數(shù)據(jù)塊不是數(shù)據(jù)分組中的首、尾數(shù)據(jù)塊的情況下,把存儲(chǔ)在附屬單元區(qū)域133a的指示后續(xù)數(shù)據(jù)塊的指針存儲(chǔ)到發(fā)送塊地址寄存器144b中。
(步驟S1103-3)在所讀出的數(shù)據(jù)塊是數(shù)據(jù)分組的尾數(shù)據(jù)塊的情況下,把存儲(chǔ)在下一個(gè)發(fā)送數(shù)據(jù)分組地址寄存器146b中的指針存儲(chǔ)到發(fā)送塊地址寄存器144b中。
(步驟S1104)把在步驟S1102中所參照的指針輸出給指針用總線180。該處理對(duì)應(yīng)于圖7的步驟S702,將所輸出的指針存儲(chǔ)到對(duì)應(yīng)的發(fā)送中指針計(jì)數(shù)器172b中并對(duì)發(fā)送中指針計(jì)數(shù)器172b進(jìn)行增計(jì)數(shù),同時(shí)對(duì)對(duì)應(yīng)的發(fā)送隊(duì)列指針計(jì)數(shù)器173a進(jìn)行減計(jì)數(shù)。
(步驟S1105)判斷所讀出的數(shù)據(jù)塊是否是數(shù)據(jù)分組中的尾數(shù)據(jù)塊。在不是的情況下返回步驟S1101,并等待下一個(gè)數(shù)據(jù)塊的傳送的開(kāi)始。以后,重復(fù)步驟S1101~步驟S1105的處理直到讀出1個(gè)數(shù)據(jù)分組的數(shù)據(jù)塊,并結(jié)束處理。
另外,在以上處理結(jié)束的時(shí)刻,將在所讀出的1個(gè)數(shù)據(jù)分組的數(shù)據(jù)塊中使用的指針全部存儲(chǔ)到發(fā)送中指針計(jì)數(shù)器172b中,并保存該指針數(shù)。并且,從發(fā)送隊(duì)列指針計(jì)數(shù)器173b的計(jì)數(shù)值中減去該指針數(shù)。
并且,然后在接口信息中包含其他目的地的發(fā)送端口的情況下,選擇其他發(fā)送端口,將數(shù)據(jù)分組連接到與該發(fā)送端口對(duì)應(yīng)的發(fā)送隊(duì)列。此時(shí),將發(fā)送中指針計(jì)數(shù)器172b的計(jì)數(shù)值加到與新發(fā)送隊(duì)列對(duì)應(yīng)的發(fā)送隊(duì)列指針計(jì)數(shù)器上,在該計(jì)數(shù)值在允許值以?xún)?nèi)的情況下,允許登錄數(shù)據(jù)分組。
為了登錄數(shù)據(jù)分組,取出存儲(chǔ)在已發(fā)送數(shù)據(jù)分組地址寄存器143b中的指針。與此同時(shí),提取存儲(chǔ)在新發(fā)送隊(duì)列內(nèi)的尾數(shù)據(jù)分組的首數(shù)據(jù)塊,在其附屬單元區(qū)域133a中存儲(chǔ)來(lái)自已發(fā)送數(shù)據(jù)分組地址寄存器143b的指針,進(jìn)行數(shù)據(jù)分組之間的連接。
在使用以上說(shuō)明的連接數(shù)據(jù)結(jié)構(gòu)的第1管理方法中,在共享緩沖器130內(nèi)同時(shí)形成數(shù)據(jù)塊和附屬單元區(qū)域133a,在該附屬單元區(qū)域133a中存儲(chǔ)后續(xù)數(shù)據(jù)塊和數(shù)據(jù)分組的首部的指針。由此,可以容易地連接數(shù)據(jù)分組內(nèi)的數(shù)據(jù)塊和發(fā)送隊(duì)列內(nèi)的數(shù)據(jù)分組。并且,使用對(duì)每個(gè)接收端口和發(fā)送端口設(shè)置的共5種寄存器,來(lái)控制發(fā)送隊(duì)列的登錄處理和從發(fā)送隊(duì)列的讀出處理。因此,可以利用廉價(jià)的裝置結(jié)構(gòu)有效地管理對(duì)共享緩沖器130的寫(xiě)入和讀出處理。
(第2鏈表管理示例)在使用鏈表結(jié)構(gòu)的第2管理示例中,在寫(xiě)入/讀出控制電路140針對(duì)每個(gè)接收端口和發(fā)送端口設(shè)置存儲(chǔ)器區(qū)域,通過(guò)在這些存儲(chǔ)器區(qū)域順序存儲(chǔ)指示數(shù)據(jù)塊的寫(xiě)入地址的指針,管理數(shù)據(jù)塊之間的連接。
圖12是表示寫(xiě)入/讀出控制電路140具備的存儲(chǔ)器的結(jié)構(gòu)的圖。
如圖12所示,寫(xiě)入/讀出控制電路140具備與各接收端口對(duì)應(yīng)的接收用地址存儲(chǔ)器147a~147d,和與各發(fā)送端口對(duì)應(yīng)的發(fā)送用地址存儲(chǔ)器148a~148d。
接收用地址存儲(chǔ)器147a~147d是在把所接收的數(shù)據(jù)分組進(jìn)行分割后得到的數(shù)據(jù)塊存儲(chǔ)到共享緩沖器130中時(shí),順序存儲(chǔ)指示后續(xù)數(shù)據(jù)塊的指針的存儲(chǔ)器。發(fā)送用地址存儲(chǔ)器148a~148d是在把數(shù)據(jù)分組登錄到發(fā)送隊(duì)列中時(shí)順序存儲(chǔ)指示后續(xù)數(shù)據(jù)塊的指針的存儲(chǔ)器。
這些存儲(chǔ)器通過(guò)FIFO(First In First Out先入先出)控制可以進(jìn)行指針的存儲(chǔ)和取出。并且,除FIFO控制外,也可以進(jìn)行LIFO(LastIn First Out后入先出)控制。
下面,說(shuō)明使用這些存儲(chǔ)器的寫(xiě)入/讀出控制電路140的處理。另外,在以下圖13和圖14所示流程圖的說(shuō)明中,根據(jù)需要也追加說(shuō)明網(wǎng)絡(luò)交換裝置100內(nèi)的其他要素的處理。
圖13是表示接收數(shù)據(jù)分組時(shí)的寫(xiě)入/讀出控制電路140的處理流程的流程圖。以下,按照步驟序號(hào)說(shuō)明圖13所示處理。
(步驟S1301和S1302)這些步驟的處理分別和圖10所示步驟S1001和S1002相同。即,例如,當(dāng)從收發(fā)接口111向數(shù)據(jù)傳送電路120通知接收請(qǐng)求時(shí),數(shù)據(jù)傳送電路120把分割后的數(shù)據(jù)塊的接口信息輸出給寫(xiě)入/讀出控制電路140。寫(xiě)入/讀出控制電路140接收接口信息后,獲取從指針棧150彈出的指針,把該指針指示的共享緩沖器130內(nèi)的地址指定為數(shù)據(jù)塊的寫(xiě)入地址。由此,將數(shù)據(jù)塊存儲(chǔ)到共享緩沖器130中。
(步驟S1303)把所獲取的指針以FIFO方式存儲(chǔ)到與接收端口對(duì)應(yīng)的接收用地址存儲(chǔ)器147a中。
(步驟S1304)判斷傳送處理中的數(shù)據(jù)塊是否是數(shù)據(jù)分組內(nèi)的尾數(shù)據(jù)塊,在不是尾數(shù)據(jù)塊的情況下返回步驟S1301。并且,通過(guò)重復(fù)以上步驟S1301~步驟S1304的處理,將1個(gè)數(shù)據(jù)分組的數(shù)據(jù)塊存儲(chǔ)到共享緩沖器130中。與此同時(shí),將指示所存儲(chǔ)的數(shù)據(jù)塊的指針順序存儲(chǔ)到接收用地址存儲(chǔ)器147a中,對(duì)數(shù)據(jù)分組內(nèi)的數(shù)據(jù)塊相互進(jìn)行連接。
另外,此時(shí),將與存儲(chǔ)在接收用地址存儲(chǔ)器147a中的指針相同的指針,存儲(chǔ)到接收中指針計(jì)數(shù)器171a中。然后,進(jìn)行把所存儲(chǔ)的指針登錄到例如與網(wǎng)絡(luò)22對(duì)應(yīng)的發(fā)送隊(duì)列中的處理。
(步驟S1305)選擇目的地的發(fā)送端口。此時(shí),將接收中指針計(jì)數(shù)器171a的計(jì)數(shù)值加到與目的地對(duì)應(yīng)的發(fā)送隊(duì)列指針計(jì)數(shù)器173b上。
(步驟S1306)在發(fā)送隊(duì)列指針計(jì)數(shù)器173b中,在計(jì)數(shù)值超過(guò)允許值的情況下,從丟棄控制部163輸出控制信號(hào)。在輸出該控制信號(hào)的情況下進(jìn)入步驟S1309,在未輸出的情況下進(jìn)入步驟S1307。
(步驟S1307)把存儲(chǔ)在接收用地址存儲(chǔ)器147a中的指針以FIFO方式存儲(chǔ)到與目的地對(duì)應(yīng)的發(fā)送用地址存儲(chǔ)器148b中。由此,進(jìn)行與目的地對(duì)應(yīng)的發(fā)送隊(duì)列內(nèi)的數(shù)據(jù)分組之間的連接。
(步驟S1308)清除接收用地址存儲(chǔ)器147a,結(jié)束處理。
(步驟S1309)判定是否已指定其他目的地,在已指定的情況下返回步驟S1305,選擇新的發(fā)送接口。
并且,在未指定的情況下進(jìn)入步驟S1308。此時(shí),將保存在接收中指針計(jì)數(shù)器171a中的指針退回指針棧150。另外,在接收用地址存儲(chǔ)器147a~147d可以進(jìn)行LIFO控制的情況下,代替接收中指針計(jì)數(shù)器171a,也可以把存儲(chǔ)在接收用地址存儲(chǔ)器147a中的指針退回指針棧150。
接著,圖14是表示發(fā)送數(shù)據(jù)分組時(shí)的寫(xiě)入/讀出控制電路140的處理流程的流程圖。以下,按照步驟序號(hào)說(shuō)明圖14所示處理。
(步驟S1401)例如在向網(wǎng)絡(luò)22進(jìn)行數(shù)據(jù)分組的發(fā)送時(shí),和圖11的步驟S1101相同,從收發(fā)接口112向數(shù)據(jù)傳送電路120通知傳送請(qǐng)求,把包括與其對(duì)應(yīng)的發(fā)送端口信息的接口信息從數(shù)據(jù)傳送電路120輸出給寫(xiě)入/讀出控制電路140。當(dāng)寫(xiě)入/讀出控制電路140接收接口信息時(shí),判斷數(shù)據(jù)塊的傳送已開(kāi)始,進(jìn)入步驟S1402。
(步驟S1402)以FIFO方式取出存儲(chǔ)在與發(fā)送端口對(duì)應(yīng)的發(fā)送用地址存儲(chǔ)器148b中的指針,根據(jù)該指針指定共享緩沖器130的讀出地址。由此,讀出對(duì)應(yīng)的發(fā)送隊(duì)列的首數(shù)據(jù)塊,并通過(guò)數(shù)據(jù)傳送電路120將其傳送給收發(fā)接口112。
(步驟S1403)把從發(fā)送用地址存儲(chǔ)器148b取出的指針輸出給指針用總線180。將所輸出的指針存儲(chǔ)到對(duì)應(yīng)的發(fā)送中指針計(jì)數(shù)器172b中,并進(jìn)行增計(jì)數(shù),同時(shí)對(duì)應(yīng)的發(fā)送隊(duì)列指針計(jì)數(shù)器173a進(jìn)行減計(jì)數(shù)。
(步驟S1404)判定所讀出的數(shù)據(jù)塊是否是數(shù)據(jù)分組中的尾數(shù)據(jù)塊,在不是的情況下返回步驟S1401。以后,重復(fù)步驟S1401~步驟S1404的處理直到讀出1個(gè)數(shù)據(jù)分組的數(shù)據(jù)塊,并結(jié)束處理。
另外,在以上處理結(jié)束的時(shí)刻,和圖11的情況相同,將在所讀出的1個(gè)數(shù)據(jù)分組的數(shù)據(jù)塊中使用的指針全部存儲(chǔ)到發(fā)送中指針計(jì)數(shù)器172b中,并保存該指針數(shù)。并且,從發(fā)送隊(duì)列指針計(jì)數(shù)器173b的計(jì)數(shù)值中減去該指針數(shù)。
并且,然后在接口信息中包含其他目的地的發(fā)送端口的情況下,選擇其他發(fā)送端口,將數(shù)據(jù)分組連接到與該發(fā)送端口對(duì)應(yīng)的發(fā)送隊(duì)列。關(guān)于可否連接發(fā)送隊(duì)列,根據(jù)對(duì)應(yīng)的發(fā)送隊(duì)列指針計(jì)數(shù)器的計(jì)數(shù)值以及有無(wú)對(duì)對(duì)應(yīng)的目的地端口的丟棄信號(hào)的斷言(assert)來(lái)判定。
為了登錄數(shù)據(jù)分組,例如,通過(guò)指針用總線180獲取存儲(chǔ)在發(fā)送中指針計(jì)數(shù)器172b中的指針,并將其存儲(chǔ)到與新發(fā)送隊(duì)列對(duì)應(yīng)的發(fā)送用地址寄存器中。并且,在發(fā)送用地址存儲(chǔ)器148a~148b中可以進(jìn)行LIFO控制的情況下,也可以代替發(fā)送中指針計(jì)數(shù)器172b,以LIFO方式從發(fā)送用地址存儲(chǔ)器148b中取出指針,并將其存儲(chǔ)到目的地的發(fā)送用地址寄存器中。通過(guò)這種處理,容易地將數(shù)據(jù)分組連接到新的發(fā)送隊(duì)列。
在使用以上說(shuō)明的連接數(shù)據(jù)結(jié)構(gòu)的第2管理示例中,在寫(xiě)入數(shù)據(jù)塊時(shí),將所使用的指針順序存儲(chǔ)在存儲(chǔ)器中。并且,通過(guò)順序取出存儲(chǔ)在存儲(chǔ)器中的指針,指定讀出地址。通過(guò)這種處理,可以有效地管理數(shù)據(jù)分組內(nèi)的數(shù)據(jù)塊之間的連接和發(fā)送隊(duì)列內(nèi)的數(shù)據(jù)分組之間的連接。
此處,在上述的第2鏈表管理示例中,與第1管理示例相比,存儲(chǔ)所使用的指針的處理非常簡(jiǎn)單。但是,在第2管理示例中,需要能夠存儲(chǔ)與存儲(chǔ)在共享緩沖器130中的數(shù)據(jù)塊數(shù)對(duì)應(yīng)的指針的存儲(chǔ)器,與第1管理示例中使用的寄存器組相比,需要準(zhǔn)備大容量的存儲(chǔ)器。因此,部件成本上升,存儲(chǔ)器的設(shè)置面積變大。并且,在不僅可以進(jìn)行FIFO控制,也可以進(jìn)行LIFO控制的情況下,存儲(chǔ)器的成本進(jìn)一步上升。
如上所述,在本發(fā)明的網(wǎng)絡(luò)裝置中,對(duì)數(shù)據(jù)分組的每個(gè)傳送目的地的網(wǎng)絡(luò)形成可以登錄固定數(shù)量的數(shù)據(jù)塊的發(fā)送隊(duì)列,將寫(xiě)入緩沖器的數(shù)據(jù)塊以數(shù)據(jù)分組為單位順序登錄到與目的地對(duì)應(yīng)的發(fā)送隊(duì)列中,所以即使在數(shù)據(jù)塊的寫(xiě)入中使用1個(gè)緩沖器,也能夠防止產(chǎn)生阻塞。并且,將所接收的數(shù)據(jù)分組分割為1個(gè)或更多個(gè)的固定長(zhǎng)度的數(shù)據(jù)塊來(lái)寫(xiě)入緩沖器中,并且將各數(shù)據(jù)分組內(nèi)的數(shù)據(jù)塊之間的連接、和各發(fā)送隊(duì)列內(nèi)的數(shù)據(jù)分組之間的連接,作為基于各數(shù)據(jù)塊在緩沖器中的寫(xiě)入位置的鏈表結(jié)構(gòu)來(lái)進(jìn)行管理,所以能夠提高緩沖器的使用效率。
以上僅簡(jiǎn)單地表示出本發(fā)明的原理。另外,對(duì)本領(lǐng)域技術(shù)人員來(lái)說(shuō)可以進(jìn)行多種變形、變更,本發(fā)明不限于以上所說(shuō)明的正確結(jié)構(gòu)和應(yīng)用示例,對(duì)應(yīng)的所有變形示例和等同物可被視為落入所附權(quán)利要求書(shū)及其等同物的發(fā)明范圍內(nèi)。
權(quán)利要求
1.一種網(wǎng)絡(luò)交換裝置,在多個(gè)網(wǎng)絡(luò)之間傳送可變長(zhǎng)度的數(shù)據(jù)分組,其特征在于,具有緩沖器,被共享為所接收的數(shù)據(jù)分組的數(shù)據(jù)和待發(fā)送的數(shù)據(jù)分組的數(shù)據(jù)的各自的存儲(chǔ)區(qū)域;數(shù)據(jù)分組分割電路,把所接收的所述數(shù)據(jù)分組分割為1個(gè)或更多個(gè)的固定長(zhǎng)度的數(shù)據(jù)塊,來(lái)提供給所述緩沖器;以及緩沖器控制電路,對(duì)所述數(shù)據(jù)分組的每個(gè)傳送目的地的所述網(wǎng)絡(luò)形成可以登錄一定數(shù)量的所述數(shù)據(jù)塊的發(fā)送隊(duì)列,在把分割后的所述數(shù)據(jù)塊寫(xiě)入所述緩沖器后,將其以所述數(shù)據(jù)分組為單位順序登錄到與該目的地對(duì)應(yīng)的所述發(fā)送隊(duì)列中,而且,把所述各數(shù)據(jù)分組內(nèi)的所述數(shù)據(jù)塊之間的連接和所述各發(fā)送隊(duì)列內(nèi)的所述數(shù)據(jù)分組之間的連接,作為基于所述各數(shù)據(jù)塊在所述緩沖器中的寫(xiě)入位置的鏈表結(jié)構(gòu)來(lái)進(jìn)行管理。
2.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)交換裝置,其特征在于,所述緩沖器控制電路按照所述鏈表結(jié)構(gòu)順序讀出登錄到所述各發(fā)送隊(duì)列中的所述數(shù)據(jù)塊。
3.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)交換裝置,其特征在于,在所述數(shù)據(jù)塊向所述各發(fā)送隊(duì)列的登錄數(shù)量超過(guò)可登錄數(shù)量的情況下,所述緩沖器控制電路將包含在該時(shí)刻處于登錄處理中的所述數(shù)據(jù)塊的所述數(shù)據(jù)分組丟棄。
4.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)交換裝置,其特征在于,所述緩沖器控制電路對(duì)每個(gè)接收地點(diǎn)的所述網(wǎng)絡(luò)形成可以登錄每一個(gè)所述數(shù)據(jù)分組所允許的最大數(shù)量的所述數(shù)據(jù)塊的接收隊(duì)列,當(dāng)完成一個(gè)所述數(shù)據(jù)分組的所述數(shù)據(jù)塊向所述各接收隊(duì)列的登錄時(shí),將對(duì)應(yīng)的接收隊(duì)列連接到與目的地對(duì)應(yīng)的所述發(fā)送隊(duì)列。
5.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)交換裝置,其特征在于,所述緩沖器控制電路具備指針棧,該指針棧一維保存指示所述數(shù)據(jù)塊在所述緩沖器中的寫(xiě)入位置的指針,在向所述緩沖器寫(xiě)入所述數(shù)據(jù)塊時(shí),從所述指針棧獲取所述指針,使用所獲取的所述指針,對(duì)所述各數(shù)據(jù)分組內(nèi)的所述數(shù)據(jù)塊之間的連接、和所述各發(fā)送隊(duì)列內(nèi)的所述數(shù)據(jù)分組之間的連接進(jìn)行管理。
6.根據(jù)權(quán)利要求5所述的網(wǎng)絡(luò)交換裝置,其特征在于,所述緩沖器控制電路具有接收中指針計(jì)數(shù)器,對(duì)每個(gè)接收地點(diǎn)的所述網(wǎng)絡(luò)設(shè)置該接收中指針計(jì)數(shù)器,在接收所述數(shù)據(jù)分組時(shí),從所述指針棧獲取的指針被順序存儲(chǔ),并且該接收中指針計(jì)數(shù)器對(duì)正在存儲(chǔ)的指針數(shù)進(jìn)行計(jì)數(shù);發(fā)送隊(duì)列指針計(jì)數(shù)器,對(duì)每個(gè)傳送目的地的所述網(wǎng)絡(luò)設(shè)置該發(fā)送隊(duì)列指針計(jì)數(shù)器,對(duì)與登錄在所述各發(fā)送隊(duì)列中的所述數(shù)據(jù)塊對(duì)應(yīng)的指針數(shù)進(jìn)行計(jì)數(shù);發(fā)送中指針計(jì)數(shù)器,對(duì)每個(gè)傳送目的地的所述網(wǎng)絡(luò)設(shè)置該發(fā)送中指針計(jì)數(shù)器,與從所述發(fā)送隊(duì)列發(fā)送的所述數(shù)據(jù)分組對(duì)應(yīng)的所述指針被順序存儲(chǔ),并且該發(fā)送中指針計(jì)數(shù)器對(duì)正在存儲(chǔ)的指針數(shù)進(jìn)行計(jì)數(shù),并且其中,在把所接收的所述數(shù)據(jù)分組登錄到與目的地對(duì)應(yīng)的所述發(fā)送隊(duì)列中時(shí),把對(duì)應(yīng)的所述接收中指針計(jì)數(shù)器的計(jì)數(shù)值加到與目的地對(duì)應(yīng)的所述發(fā)送隊(duì)列指針計(jì)數(shù)器的計(jì)數(shù)值上,在從所述發(fā)送隊(duì)列發(fā)送所述數(shù)據(jù)分組時(shí),使對(duì)應(yīng)的所述發(fā)送隊(duì)列指針計(jì)數(shù)器順序減計(jì)數(shù),并且使對(duì)應(yīng)的所述發(fā)送中指針計(jì)數(shù)器順序增計(jì)數(shù)。
7.根據(jù)權(quán)利要求6所述的網(wǎng)絡(luò)交換裝置,其特征在于,在從所述發(fā)送隊(duì)列發(fā)送所述數(shù)據(jù)分組時(shí),所述緩沖器控制電路把所述指針推入并退回到所述指針棧中。
8.根據(jù)權(quán)利要求6所述的網(wǎng)絡(luò)交換裝置,其特征在于,在從所述發(fā)送隊(duì)列發(fā)送所述數(shù)據(jù)分組后、繼續(xù)向其他所述網(wǎng)絡(luò)進(jìn)行發(fā)送的情況下,所述緩沖器控制電路把與已發(fā)送的所述發(fā)送隊(duì)列對(duì)應(yīng)的發(fā)送中指針計(jì)數(shù)器的計(jì)數(shù)值加給與傳送目的地的所述網(wǎng)絡(luò)對(duì)應(yīng)的所述隊(duì)列指針計(jì)數(shù)器的計(jì)數(shù)值。
9.根據(jù)權(quán)利要求6所述的網(wǎng)絡(luò)交換裝置,其特征在于,在把所接收的所述數(shù)據(jù)分組登錄到與目的地對(duì)應(yīng)的所述發(fā)送隊(duì)列中時(shí)、與目的地對(duì)應(yīng)的所述隊(duì)列指針計(jì)數(shù)器的計(jì)數(shù)值超過(guò)一定值的情況下,所述緩沖器控制電路丟棄處于登錄處理中的所述數(shù)據(jù)分組,并且把存儲(chǔ)在對(duì)應(yīng)的所述接收中指針計(jì)數(shù)器中的所述指針推入并退回到所述指針棧中。
10.根據(jù)權(quán)利要求5所述的網(wǎng)絡(luò)交換裝置,其特征在于,所述緩沖器控制電路把表示所述各數(shù)據(jù)分組內(nèi)的后續(xù)的所述數(shù)據(jù)塊的寫(xiě)入位置的所述指針,作為附屬數(shù)據(jù)與所述數(shù)據(jù)塊一起寫(xiě)入所述緩沖器。
11.根據(jù)權(quán)利要求10所述的網(wǎng)絡(luò)交換裝置,其特征在于,在同一個(gè)所述發(fā)送隊(duì)列中登錄了多個(gè)所述數(shù)據(jù)分組的情況下,所述緩沖器控制電路把指示位于后續(xù)數(shù)據(jù)分組的首部的所述數(shù)據(jù)塊的指針,作為位于先行數(shù)據(jù)分組的首部的所述數(shù)據(jù)塊的所述附屬數(shù)據(jù)并寫(xiě)入所述緩沖器。
12.根據(jù)權(quán)利要求11所述的網(wǎng)絡(luò)交換裝置,其特征在于,所述緩沖器控制電路把登錄在所述各發(fā)送隊(duì)列內(nèi)的指示位于預(yù)定下一個(gè)發(fā)送的所述數(shù)據(jù)分組的首部的所述數(shù)據(jù)塊的指針、和指示預(yù)定下一個(gè)發(fā)送的所述數(shù)據(jù)塊的指針,分別保存到下一個(gè)發(fā)送數(shù)據(jù)分組地址寄存器和發(fā)送塊地址寄存器中,參照所述各寄存器指定所述數(shù)據(jù)塊從所述緩沖器的讀出地址。
13.根據(jù)權(quán)利要求12所述的網(wǎng)絡(luò)交換裝置,其特征在于,在每次從所述各發(fā)送隊(duì)列讀出所述數(shù)據(jù)塊時(shí),所述緩沖器控制電路根據(jù)所讀出的所述數(shù)據(jù)塊的所述附屬數(shù)據(jù)更新所述發(fā)送塊地址寄存器,在每次讀出所述數(shù)據(jù)分組時(shí),根據(jù)位于所讀出的所述數(shù)據(jù)分組的首部的所述數(shù)據(jù)塊的所述附屬數(shù)據(jù),更新所述下一發(fā)送數(shù)據(jù)分組地址寄存器。
14.根據(jù)權(quán)利要求5所述的網(wǎng)絡(luò)交換裝置,其特征在于,所述緩沖器控制電路對(duì)于每個(gè)發(fā)送目的地的所述網(wǎng)絡(luò)都具備發(fā)送用塊位置存儲(chǔ)器,該發(fā)送用塊位置存儲(chǔ)器用于存儲(chǔ)指示登錄到所述各發(fā)送隊(duì)列中的所述數(shù)據(jù)塊的寫(xiě)入位置的所述指針,并且所述緩沖器控制電路參照所述發(fā)送用塊位置存儲(chǔ)器指定所述數(shù)據(jù)塊從所述緩沖器的讀出地址。
15.根據(jù)權(quán)利要求14所述的網(wǎng)絡(luò)交換裝置,其特征在于,所述緩沖器控制電路還具備接收用塊位置存儲(chǔ)器,該接收用塊位置存儲(chǔ)器用于在分割后的所述數(shù)據(jù)塊被寫(xiě)入所述緩沖器后,順序存儲(chǔ)指示同一數(shù)據(jù)分組內(nèi)的后續(xù)的所述數(shù)據(jù)塊的寫(xiě)入位置的所述指針,并且所述緩沖器控制電路在向所述發(fā)送隊(duì)列登錄所述數(shù)據(jù)分組時(shí),把存儲(chǔ)在所述接收用塊存儲(chǔ)器中的對(duì)應(yīng)的所述指針,存儲(chǔ)到與登錄地點(diǎn)的所述發(fā)送隊(duì)列對(duì)應(yīng)的所述發(fā)送用塊位置存儲(chǔ)器中。
16.一種網(wǎng)絡(luò)交換裝置,在多個(gè)網(wǎng)絡(luò)之間傳送可變長(zhǎng)度的數(shù)據(jù)分組,其特征在于,具有緩沖器,被共享為所接收的數(shù)據(jù)分組的數(shù)據(jù)和待發(fā)送的數(shù)據(jù)分組的數(shù)據(jù)的各自的存儲(chǔ)區(qū)域;數(shù)據(jù)分組分割電路,把所接收的所述數(shù)據(jù)分組分割為1個(gè)或更多個(gè)的固定長(zhǎng)度的數(shù)據(jù)塊,來(lái)提供給所述緩沖器;指針棧,一維保存指示所述數(shù)據(jù)塊在所述緩沖器中的寫(xiě)入位置的指針;以及緩沖器控制電路,使用從所述指針棧獲取的所述指針,控制對(duì)所述緩沖器的所述數(shù)據(jù)塊的寫(xiě)入動(dòng)作和讀出動(dòng)作,并且其中,在向所述緩沖器寫(xiě)入所述數(shù)據(jù)塊時(shí),所述緩沖器控制電路從所述指針棧獲取所述指針并將其指定為針對(duì)所述緩沖器的寫(xiě)入地址,并且把表示所述各數(shù)據(jù)分組內(nèi)的后續(xù)的所述數(shù)據(jù)塊的寫(xiě)入位置的所述指針,作為附屬數(shù)據(jù)與所述數(shù)據(jù)塊一起寫(xiě)入所述緩沖器。
17.根據(jù)權(quán)利要求16所述的網(wǎng)絡(luò)交換裝置,其特征在于,在同一所述發(fā)送隊(duì)列中登錄了多個(gè)所述數(shù)據(jù)分組的情況下,所述緩沖器控制電路把指示位于后續(xù)數(shù)據(jù)分組的首部的所述數(shù)據(jù)塊的指針,作為位于先行數(shù)據(jù)分組的首部的所述數(shù)據(jù)塊的所述附屬數(shù)據(jù),并將其寫(xiě)入所述緩沖器。
18.根據(jù)權(quán)利要求17所述的網(wǎng)絡(luò)交換裝置,其特征在于,所述緩沖器控制電路把登錄到所述各發(fā)送隊(duì)列內(nèi)的指示位于預(yù)定下一個(gè)發(fā)送的所述數(shù)據(jù)分組的首部的所述數(shù)據(jù)塊的指針、和指示預(yù)定下一個(gè)發(fā)送的所述數(shù)據(jù)塊的指針,分別保存在已發(fā)送數(shù)據(jù)分組地址寄存器和發(fā)送塊地址寄存器中,參照所述各寄存器指定所述數(shù)據(jù)塊從所述緩沖器的讀出地址。
19.根據(jù)權(quán)利要求18所述的網(wǎng)絡(luò)交換裝置,其特征在于,每當(dāng)從所述各發(fā)送隊(duì)列讀出所述數(shù)據(jù)塊時(shí),所述緩沖器控制電路根據(jù)所讀出的所述數(shù)據(jù)塊的所述附屬數(shù)據(jù)更新所述發(fā)送塊地址寄存器,每當(dāng)從所述各發(fā)送隊(duì)列讀出所述數(shù)據(jù)分組時(shí),根據(jù)位于所讀出的所述數(shù)據(jù)分組的首部的所述數(shù)據(jù)塊的所述附屬數(shù)據(jù),更新所述已發(fā)送數(shù)據(jù)分組地址寄存器。
20.一種網(wǎng)絡(luò)交換方法,把可變長(zhǎng)度的數(shù)據(jù)分組暫時(shí)存儲(chǔ)在1個(gè)緩沖器中,并在多個(gè)網(wǎng)絡(luò)之間進(jìn)行傳送,其特征在于,把所接收的所述數(shù)據(jù)分組分割為1個(gè)或更多個(gè)固定長(zhǎng)度的數(shù)據(jù)塊,來(lái)提供給所述緩沖器,對(duì)所述數(shù)據(jù)分組的每個(gè)傳送目的地的所述網(wǎng)絡(luò)形成可以登錄一定數(shù)量的所述數(shù)據(jù)塊的發(fā)送隊(duì)列,在把分割后的所述數(shù)據(jù)塊寫(xiě)入所述緩沖器后,將其以所述數(shù)據(jù)分組為單位順序登錄到與該目的地對(duì)應(yīng)的所述發(fā)送隊(duì)列中,而且,把所述各數(shù)據(jù)分組內(nèi)的所述數(shù)據(jù)塊之間的連接和所述各發(fā)送隊(duì)列內(nèi)的所述數(shù)據(jù)分組之間的連接,作為基于所述各數(shù)據(jù)塊在所述緩沖器的寫(xiě)入位置的鏈表結(jié)構(gòu)來(lái)進(jìn)行管理。
21.一種網(wǎng)絡(luò)交換方法,把可變長(zhǎng)度的數(shù)據(jù)分組暫時(shí)存儲(chǔ)在1個(gè)緩沖器中,并在多個(gè)網(wǎng)絡(luò)之間進(jìn)行傳送,其特征在于,把所接收的所述數(shù)據(jù)分組分割為1個(gè)或更多個(gè)固定長(zhǎng)度的數(shù)據(jù)塊,來(lái)提供給所述緩沖器,從一維保存指示所述數(shù)據(jù)塊在所述緩沖器中的寫(xiě)入位置的指針的指針棧獲取所述指針,并將其指定為針對(duì)所述緩沖器的寫(xiě)入地址,并且把表示所述各數(shù)據(jù)分組內(nèi)的后續(xù)的所述數(shù)據(jù)塊的寫(xiě)入位置的所述指針,作為附屬數(shù)據(jù)與所述數(shù)據(jù)塊一起寫(xiě)入所述緩沖器。
全文摘要
本發(fā)明提供一種提高存儲(chǔ)可變長(zhǎng)度的數(shù)據(jù)分組的緩沖器的使用效率,并且防止產(chǎn)生阻塞的網(wǎng)絡(luò)交換裝置。所接收的數(shù)據(jù)分組由數(shù)據(jù)分組分割電路(2)分割為1個(gè)或更多個(gè)固定長(zhǎng)度的數(shù)據(jù)塊,并被提供給緩沖器(1)。通過(guò)緩沖器控制電路(3)的控制,對(duì)數(shù)據(jù)分組的每個(gè)目的地的網(wǎng)絡(luò)形成可以登錄一定數(shù)量的數(shù)據(jù)塊的發(fā)送隊(duì)列(4-1~n),n是大于等于1的整數(shù);將寫(xiě)入緩沖器(1)的數(shù)據(jù)塊以數(shù)據(jù)分組為單位順序登錄到與目的地對(duì)應(yīng)的發(fā)送隊(duì)列中。此時(shí),把各數(shù)據(jù)分組內(nèi)的數(shù)據(jù)塊之間的連接和各發(fā)送隊(duì)列內(nèi)的數(shù)據(jù)分組之間的連接,作為基于各數(shù)據(jù)塊在緩沖器中的寫(xiě)入位置的鏈表結(jié)構(gòu)來(lái)進(jìn)行管理。
文檔編號(hào)H04L12/56GK1689284SQ0382391
公開(kāi)日2005年10月26日 申請(qǐng)日期2003年1月20日 優(yōu)先權(quán)日2003年1月20日
發(fā)明者片山徹 申請(qǐng)人:富士通株式會(huì)社