專利名稱:用于交叉存取的無阻塞的數據包緩沖的方法與裝置的制作方法
技術領域:
一個網絡轉送器從與其連接的多個數據入口接收數據包并將這些數據包送至與其連接的多個數據出口。該轉送器要根據包含于數據包中的目標地址來確定數據包被傳至的數據出口。從數據入口接收的數據包在送至數據出口之前被存于該轉送器中的一個存儲器中。
該轉送器中的存儲器可以是一個共用存儲器,從所有入口接收的所有數據包在被送至出口之前均被存于其中。無阻塞轉送器允許從所有入口接收的所有數據被送至出口。無阻塞轉送器通常包括一個共用存儲器,以便每個接口可以獲得最大的存儲容量。
共用存儲器轉送器的速度取決于該存儲器的帶寬。存儲器的帶寬取決于存儲器的存取時間,和存儲寬度即每段存儲器存取時間內存取的字節(jié)數。例如,如果共用存儲器為64字節(jié)寬并且其存取時間為80毫微秒(ns),則其寫入或讀出64個字節(jié)需80ns。如果與該轉送器連接的一個數據入口在以每秒100兆位(M)二進制位的速度接收數據,則每10ns接收一個二進制位,每80ns接收一個8個二進制位的字節(jié),并且每5120ns接收64個字節(jié)。64字節(jié)的數據被接收之后,執(zhí)行一個寫存儲器周期,以一個單一的存儲器訪問把這64個字節(jié)寫入64字節(jié)寬的存儲器中。該數據入口用80ns的存儲器帶寬每5120ns把所接收的數據寫入存儲器,這樣,64字節(jié)寬存取時間為80ns的存儲器可支持64(5120ns/80ns)個每秒100M二進制位的接口。對于與該轉送器連接的64個接口,每個接口周期為80ns。一個80ns的接口周期為每個接口提供每個周期一次的存儲器訪問。
要增大在每個接口周期中獲得的存儲帶寬,需要作到下述的一點或幾點縮短存儲器的存取時間,增大存儲寬度(即每個存儲周期中二進制位讀/寫的數量),或者降低接口的數量。增大存儲寬度受數據包最小規(guī)模的限制??s短存儲器存取時間受存儲器的最小存儲存取時間的限制。
也可以通過交叉安排存儲單元來增大存儲帶寬,例如,把第一個數據包寫入第一個存儲單元,把第二個數據包寫入第二個數據單元。然而,轉送器中的交叉數據會導致阻塞,例如倘若接口A和接口B同時都要求訪問第一個存儲單元時。阻塞入口與出口的數據傳遞會導致數據包的丟失,因此,這種方法不能用來增大無阻塞轉送器的存儲帶寬。
該包存儲管理器包括讀地址邏輯線路,用于在存儲器中選擇一個讀地址,以便在接口周期進行讀操作,還包括一個寫地址邏輯線路,用于選擇一個寫地址,以便在由讀地址邏輯線路選擇的讀地址上進行寫操作。寫地址邏輯線路選擇寫地址取決于讀地址,這樣,讀寫操作就能在一次單一的存儲訪問中同時進行。包存儲管理器立足于對于每個出口的一個口隊列和一個口隊列中未存信息的地址的空閑表。管理器從輸入的數據包中讀取網絡目標地址以確定一個合適的出口或該數據包將被存入的接口。管理器以從空閑表中去掉一個存儲段地址的方式,把一個數據包段寫入存儲器,其作法是,把該段地址存在該數據包段所指的每個口隊列的末尾,并把該數據包寫入存儲器中由該段地址所指明的地址。同時,位于每個口隊列開頭的一個地址指明將由管理器讀取的數據包段。
數據包存儲管理器中的讀地址邏輯線路包括一個用于每個出口的口隊列。該口隊列存儲由每個入口寫入存儲器的數據的存儲器單元??陉犃羞x擇邏輯線路選擇該口隊列,從中去掉一個依賴口周期的存儲地址。讀選擇邏輯線路根據從口隊列去掉的存儲地址選擇該存儲單元,從中讀取信息。
存儲器在物理上被分成幾個組。組的數據最好為三個或四個。包存儲管理器中寫地址邏輯線路包括一個用于每個組的組空閑表。每個組空閑表儲存存儲器的組中可得到的單元的地址。寫地址邏輯線路中的寫選擇邏輯線路選擇一個組空閑表,從中去掉一個寫地址。寫選擇邏輯線路可選擇一個組空閑表,以便數據包的連續(xù)被寫入存儲器的交叉相間的奇數組與偶數組中。
寫地址邏輯線路還可以包括用于每個組的組空閑表計數器。組空閑表計數器儲存該組中可獲得的單元的數量。寫選擇邏輯線路可根據該組空閑表計數器中的數量選擇一個組空閑表。同時進行的讀寫操作可對同一個口進行也可以對不同的口進行。
圖1A為一個無阻塞共用存儲器轉送器的方塊圖;圖1B為可在一個入口接收的現行技術的以太網數據包的方塊圖;圖2為描述在轉送器中數據從入口經共用存儲器到出口的傳遞的時間分配圖;圖3為描述圖1A中所示的數據包存儲管理器106的方塊圖;圖4為描述圖1A中所示的在物理上分為兩個組的段緩沖存儲器108的方塊圖;圖5為描述用于在圖4所示的兩組緩沖存儲器的在圖3所示的讀地址邏輯線路302的方塊圖;圖6為描述用于在圖4中所示的兩組段緩沖存儲器的在圖3中所示的寫地址邏輯線路的方塊圖;圖7為描述圖4中所示的兩組段緩沖存儲器的讀、寫地址的時間分配的時間分配圖;圖8為描述為在圖4中所示的兩組段緩沖存儲器選擇和寫地址的步驟的流程圖;圖9為描述在圖1A中所示的在物理上被分為四組的段緩沖存儲器的方塊圖;圖10為描述用于在圖9中所示的四組段緩沖存儲器的在圖3中所示的讀地址邏輯線路的方塊圖;圖11為描述用于在圖9中所示的四組段緩沖存儲器的在圖3中所示的寫地址邏輯線路的方塊圖;圖12為描述用于在圖9中所示的四組段緩沖存儲器的讀與寫地址的時間分配的時間分配圖;圖13為描述用于在圖9中所示的四組段緩沖存儲器的偶數組的選擇讀與寫地址的步驟的流程圖。
轉送器100包括一個入口驅動器104和一個出口驅動器110。數據包在入口102串行接收。入口驅動器104對所接收的數據包中的標題進行檢測與處理,根據被檢測的標題確定哪個出口112轉送數據包,并為該數據包生成一個轉送矢量114。轉送矢量114是一個位映射,具有與多個出口112中的每個出口對應的一個二進制位,指明該數據包是否要被轉送到那個出口112。轉送矢量114被轉送至包存儲管理器106。
包存儲管理器106提供對段緩沖存儲器108的訪問。包存儲管理器106為對段緩沖存儲器108的讀與寫操作提供段緩沖存儲器地址122并把所存的每個數據包在段緩沖存儲器108中的單元存儲在管理器106中。出口驅動器110通過選擇控制信號120在多個出口112中選擇將在其上傳送數據包的一個出口,并把所儲存的數據包提供給所選的出口112。
段緩沖存儲器108是由所有入口102和出口112共享的一個共用存儲器。轉送器100是無阻塞的,也就是說,抵達任何一個入口102的數據包可無阻塞地被轉送至任何一個出口112。轉送器100提供同時進行的處理,即由入口驅動器104對在入口102接收的數據包進行的處理,以及由用于出口112的出口驅動器110對所存數據包的處理。
在數據包在一個入口102被串行接收的同時,該串行數據被分組而成為數據段。數據段被寫入緩沖段存儲器108。數據段的寬度根據入口102和出口112所使用的網絡協議預先確定。例如,對于以太網協議,數據段的寬度為64個字節(jié),因為以太網數據包的最好數據包規(guī)模為64個字節(jié)。
圖1B是描述可在入口102接收的現地技術的以太網數據包120的方塊圖。該以太網數據包包括一個標題122,數據字段134和一個幀校驗序列132。標題122包括一個目標地址124,一個源地址126,和一個長度或類型字段130。數據包120的大小取決于數據字段134的大小,可能在從46個字節(jié)到1500個字節(jié)之間變化。
圖2是描述在轉送器100中在入口112處接收的數據通過段緩沖存儲器108轉送至出口112的時間分配圖。該時間分配器是連同圖1A中的三口轉送器(N=2),即具有三個入口102和三個出口112的轉送器的方塊圖一起進行描述的。
在三個入口102的每個入口處,從時間200至時間202,一個數據段被串行接收。時間200與時間202之間的數據段時間間隔是在入口102接收數據段所占用的時間。在接收數據段的同時,入口驅動器104根據數據包在標題中的目標地址124來確定數據將被轉送至哪個出口122。在時刻202,所有的數據均已被接收,并可通過包存儲管理106寫入到段緩沖存儲器108中,在接收下面的數據包的時間206之前,包存儲管理器106把所接收的所有數據包均寫入段緩沖存儲器108。
數據段時間間隔204被分成口周期時間間隔208,在每個數據段時間間隔204為與轉送器100連接的每個口指定一個口周期時間間隔208。口周期時間間隔208是存儲器訪問周期,也就是說,提供給每個口的時間用于對段緩沖存儲器108進行訪問。在時間210,包存儲管理器106把在入口0102接收的數據段寫入段緩沖存儲器108。從時間212至時間214,包存儲管理器106把在入口1102接收的數據段寫入緩沖存儲器108。在時間214,在入口0接收的數據段可以在存儲器中獲得并可由出口驅動讀出并轉送至出口1。在時間214,包存儲管理器106把在入口2102接收的數據寫至段緩沖存儲器108。在時間216,在入口接收的數據段可在存儲器中獲得并可由出口驅動器讀出并轉送到出口2。在時間216,包存儲管理器106把在入口0102接收的下一個數據段寫入段緩沖存儲器108。在時間218,在入口2接收的數據段可在緩沖段存儲器108中獲得并可由出口驅動器110讀出并轉送到出口0112。
這樣,就象它們在接口102被接收一樣,數據段由包存儲管理器106寫入段緩沖存儲器108。在所接收的數據段被寫入的同時,數據段能夠從段緩沖存儲器108讀出。入口102永遠不會被對段緩沖存儲器108的寫操作阻塞,而出口112永遠不會被對段緩沖存儲器108的讀操作阻塞。
圖3是描述在圖1A中所示的包存儲管理器106的方塊圖。包存儲管理器106同時處理來自入口驅動器104(圖1A)的段緩沖存儲器108進行寫操作的要求和來自出口驅動器110(圖1A)的對段緩沖存儲器108進行讀操作的要求。
包存儲管理器106包括寫地址邏輯線路300,讀地址邏輯線路302,口時間分配邏輯線路304,以及地址選擇邏輯線路312。寫地址邏輯線路300提供段緩沖存儲器108中可把來自入口102(圖1A)的數據段存入其中的單元讀地址邏輯線路302提供段緩沖存儲器108中的已存入供出口112用的數據包的單元。
地址選擇邏輯線路312把讀地址310和寫地址308轉送至緩沖段存儲器地址122??跁r間分配邏輯線路304根據一個時鐘306輸入信號生成一個口周期314。在每個預定的數據段周期時間204,口時間分配邏輯線路304為一個預定數量的時鐘周期一成口周期3 14,一個口周期時間208,并為口102,112中的每個口生成一個口周期314。數據段周期時間204取決于在任何一個入口102(圖1A)串行接收一個數據段所用的時間。根據口周期314為口102,112選擇讀地址310和寫地址308。如圖所示,可由口時間分配邏輯線路304把相同的口周期314提供給寫地址邏輯線路300和讀地址邏輯線路302,或者可由口時間分配邏輯線路304把不同的口周期314提供給寫地址邏輯線路300讀地址邏輯線路302。
在每個口周期314的起點,根據口周期314,在讀地址邏輯線路302中口隊列的開頭讀地址邏輯線路302為該口選擇一個預先排隊的讀地址310。寫地址邏輯線路300根據讀地址邏輯線路302選擇的讀地址310為口周期314選擇一個寫地址。
地址選擇邏輯線路312通過段緩沖存儲地址122把寫地址308和讀地址310送至緩沖段存儲器108。將被寫入段緩沖存儲器108的數據包的寫地址308在讀地址邏輯線路302中進行列隊。將從緩沖段存儲器108中讀出的數據包讀地址302在讀地址邏輯線路302中進行排隊。寫地址邏輯線路300和讀地址邏輯線路302將在圖5,6,10和11中更詳細地示出。
圖4是描述在圖1A中示出的在物理上被分為兩組108A和108B的段緩沖存儲器108的方塊圖。段緩沖存儲器108的每一組有一個關聯的存儲地址,地址-A400和地址-B402。2組地址選擇邏輯線路404根據在寫地址308中的被編碼的段緩沖存儲器108的組把寫地址308送至地址-A400或地址-B402。2組地址選擇邏輯線路404根據在讀地址310中被編碼的緩沖段存儲器108的組把讀地址310送至地址-A400或地址-B402。例如,讀地址310和寫地址308的最主要的位(“MSB”)可被用于確定段緩沖存儲器108的組108A,108B以及將由2組地址選擇邏輯線路404傳送的寫地址308和讀地址310。寫地址邏輯線路300(圖3)和讀地址邏輯線路304(圖3)確保在同一周期314(圖2)期間發(fā)出的讀地址308和寫地址310用于段緩沖存儲器的不同的組108A,B。對段緩沖存儲器108的一個組的一個讀訪問與對段緩沖存儲器108的另一個組的一個寫訪問同時出現。
圖5是描述用于在圖4中所示的兩組段緩沖存儲器404的在圖3中所示的讀地址邏輯線路302的方塊圖。讀地址邏輯線路302包括口隊列選擇邏輯線路512,口隊列510和讀地址選擇邏輯線路506??陉犃?10儲存將被提供給出口112的數據包在段緩沖存儲器108中的單元的地址。每個出口112被賦予一個獨立的口隊列510。當一個數據段被寫入段緩沖存儲器108時,已寫入該數據段的單元,寫地址308,被儲存(或排隊)于一個或多個口隊列510。寫入寫地址308的口隊列510由口隊列選擇邏輯線路512確定。口隊列選擇邏輯線路512根據轉送矢量114選擇口隊列510。轉送矢量114的生成已結合圖1A進行了描述。
在存于口隊列510中的寫地址308中的數據段被將有一個拷貝送至其處的每個出口從段緩沖存儲器108讀出之后,所存的寫地址308被從口隊列510中清除。
圖6是描述在圖2中所示的用于在圖4中所示的兩組段緩沖存儲器108A,108B的寫地址邏輯線路300的方塊圖。用于兩組段緩沖存儲器108A,108B的寫地址邏輯線路包括一個兩組寫選擇邏輯線路600,一個用于組-A的空閑表606,一個用于組-B的空閑表608,一個用于組-A的空閑表的計數器604,一個用于組-B的空閑表的計數器610和一個寫地址選擇邏輯線路602。
每個空閑表606,608儲存空閑表各自的在段緩沖存儲器108A,108B的組中可得到單元,而數據可被寫入這些單元。用于組-A的空閑表606儲存在段緩沖存儲器108A的組-A中可得到的單元,而用于組-B的空閑表608儲存在段緩沖存儲器108B的組-B中可得到的單元。
在一個口周期時間314內,兩組寫選擇邏輯線路600根據讀地址310對從中提取寫地址308的空閑表606,608進行判斷??筛鶕x地址310的SMB或讀地址310的其他任何位對段緩沖存儲器108A,108B的組進行選擇。例如,如果兩組寫選擇邏輯線路圖600由讀地址310判斷出讀地址310用于段緩沖存儲器108A的組-A,則寫地址從用于組-B的空閑表608中提取。如果讀地址310B用于段緩沖存儲器108B的組-B,則寫地址從用于組-A的空閑表606提取。這樣,一個數據段可從段緩沖存儲器108的一個組讀出。同時,另一個數據段被寫入段緩沖存儲器108的另一個組。
如果兩組寫選擇邏輯線路600判斷出讀地址310用于段緩沖存儲器108A的組-A,它就通過ENA-B信號618啟動組-B空閑表608以便組-B空閑表608能為寫地址選擇邏輯線路602提供一個組-B地址614。由于一個地址從組-B空閑表608去掉,兩組寫選擇邏輯線路600生成一個更新計數A信號的作為/更新計數值A信號,就降低了數B的空閑表計數值610。
在數據段被寫入段緩沖存儲器108中由寫地址308指明的單元的同時,寫地址308被從各個空閑表606,608中去掉,并且寫地址308根據轉送矢量114被寫入一個或多個口隊列306的末尾。一個拷貝計數值626被存入拷貝計數邏輯線路624供寫地址308使用。拷貝計數值用于跟蹤多投放數據包,也就是說,跟蹤為一個以上的出口112排隊的數據包。在由寫地址308指明的單元被寫地址邏輯線路302(圖3)讀取之后寫地址308被送還各空閑表606,608,并且與寫地址308相關的拷貝計數值被置為零。
如果在當前的口周期314沒有數據段要被讀取,并且有一個數據段要被寫入,則兩組寫選擇邏輯線路600對空閑表606,608進行判斷,根據空閑計數值604,610從606,608中提取寫地址308。兩組寫選擇邏輯線路600通過作為/更新計數A信號622和作為/更新計數B信號616從用于組-A的空閑表計數值604和用于組-B的空閑表計數值610獲得當前的計數值。用于組-A的空閑表表計數值632和用于組-B的空閑表計數值630被送至兩組寫地址邏輯線路600。具有最大計數值的空閑表計數值604,610指明段緩沖存儲器的最不滿的組108A,108B。兩組寫地址邏輯線路路600對計數值進行比較并根據是組-A計數值632還是組-B計數值630更大來生成一個EN-A620信號或一個ENA-B618信號。具有最大計數值604,610的空閑表606,608被選擇。寫地址308以所選擇的空閑表606,608選擇。這樣,由于數據段被寫入段緩沖存儲器108,它們即被均勻地分布在段緩沖存儲器的兩個組108A和108B中。
圖7是一個分時圖,用于對圖6中所示的兩組段緩沖存儲器108的讀、寫地址的時間劃分進行描述。在每個數據時間片204中,為與轉送器100連接的64個口中的每個提供了對緩沖存儲器的兩次訪問。數據段時間片204是在64個口中的任何一個口上接收一個數據包段的時間。這樣,數據段時間204是可得到的最大的時間,在該時間內為與與轉送器100連接的每個口把一個數據包段存入段緩沖存儲器108中。
數據段時間片204取決于數據在一個入口112被接收的速度以及傳送數據所提供的網絡協議。例如,如果所用的網絡協議是100兆赫的以太網協議,在每個口上每10ns接收一個比特,每80ns接收一個字節(jié),每5120ns接收一個最小規(guī)模為64字節(jié)的數據包。這樣,對于與轉送器100(圖1A)連接的64個100MHz的以太網口中的每個口而言,對于80ns的口周期,每5120ms可儲存一個最小規(guī)模的數據包。
每個口被指定一個口周期208,在此期間對段緩沖存儲器108進行訪問。在每個口周期時間208中,能夠在段緩沖存儲器108的不同地址讀出或寫入一個數據段。口周期時間208取決于數據段時間片204和與轉送器100連接的口的數量。
在時間700,一個數據段時間片204的開頭,通過啟動幀脈沖信號生成一個幀脈沖,幀脈沖信號可用于對口分時邏輯線路304(圖3)進行初始化。在700,用于口0的口周期208開始。一個用于入口0的寫地址可被送至段緩沖段存儲器108A,同時,用于出口0的一個讀地址可被送至段緩沖段存儲器108的B組108B。
在時間702,用于口1的口周期208開始。用于入口0的一個讀地址可被送至段緩沖段存儲器108A,同時,用于出口0的一個寫地址被送至段緩沖段存儲器的B組108B。
在時間704,數據段時間片的末端,通過啟動幀脈沖信號生成一個幀脈沖。在數據段時間片204期間,為與轉送器連接的64個口中的每個口生成一個口周期。
圖8是一個流程圖,用于描述包存儲管理器106為在圖3中所示的兩組段緩沖存儲器108A,108B選擇讀、寫地址而采用的步驟。如圖8所示,對于每個口周期314,讀、寫地址用于同一個口,即,入口102和出112是同一個口。然而,象所示出的那樣,入口102和出口112不必是同一個口,讀地址和寫地址可以用于不同的口。圖8的描述結合圖4至7進行。
在步驟800,兩組寫選擇邏輯線路500要判斷是否有對出口112的正在進行的讀操作。如果有正在進行讀操作,處理轉步驟802繼續(xù)進行。如果沒有正在進行的讀操作,處理轉822繼續(xù)進行。
在步驟802,兩組寫選擇邏輯線路600判斷地址通過存儲訪問送邏輯線路312送往段緩沖存儲器中的哪個組108A,108B。如果讀地址310用于組-A108A,處理轉至步驟812繼續(xù)。如果讀地址310用于組-B108B,處理轉至步驟804繼續(xù)。
在步驟804,兩組寫選擇邏輯線路600判斷是否有正在根據口周期314進行的寫操作。如果有對該口正在進行的寫操作,處理轉步驟810繼續(xù)。如果沒有,處理轉步驟806。
在步驟810,兩組寫選擇邏輯線路600從用于組-A的空閑表606提取段緩沖存儲器組-A108A中的一個可得到的單元的地址。來自用于組-A的空閑表604的組-A地址612被選作由寫地址選擇邏輯線路602使用的寫地址308。用于組-A的空閑表計數604被判斷。寫地址308和讀地址310通過存儲器訪問邏輯線路312被送至段緩沖存儲器的各組108A,108B。處理在步驟808繼續(xù)進行。
在步驟806,讀地址通過存儲器訪問邏輯線路312被送至段緩沖存儲器的組-B108B。處理在步驟808繼續(xù)。
在步驟808,讀操作完成之后。通過拷貝計數邏輯線路624對用于讀地址的拷貝計數值624進行判斷。如果拷貝值624為零,讀地址310被送回組-B的空閑表608,并且組-B的空閑表的計數值610被降低。處理在步驟820繼續(xù)。
在步驟822,寫選擇邏輯線路600判斷是否有對該口正在進行的寫操作。如果有對該口正在進行的寫操作,處理在步驟824繼續(xù)。如果沒有,處理在步驟820繼續(xù)。
在步驟824,寫選擇邏輯線路600從儲存在組-A的空閑表計數器604中的計數值以及儲存在組-B的空閑表計數器610中的計數值判斷段緩沖存儲器的哪個組108A,108B是最不滿的。如果寫選擇邏輯線路判斷出段緩沖存儲器A108A是不滿的,處理轉步驟828繼續(xù)。如果兩組寫選擇邏輯線路600判斷出段緩沖存儲器的組-B108B是最不滿的,處理轉至830。
在步驟828,寫選擇邏輯線路600從組-A的空閑表604中去掉在段緩沖存儲器的組-A108A中可得到的一個單元的地址。從組-A的空閑表606中選擇一個地址612作為寫地址選擇邏輯線路602使用的寫地址308。由于組-A地址612被從組-A空閑表606中去掉,組-A的空閑表計數值604被降低。寫地址308通過存儲器訪問邏輯線路312(圖2)被送至緩沖段存儲器的組-A108A。
在步驟830,寫選擇邏輯線路600從組-B的空閑表608中去掉在段緩沖存儲器的組-B108B中的一個可得到的單元的地址。從組-B的空閑表608中選擇組-B地址614作為寫地址選擇邏輯線路602的寫地址308。由于組-B地址614被從組-B的空閑表608中去掉,要對組-B的空閑表計數值610進行判斷。寫地址308通過存儲器訪問邏輯線路312(圖2)被送至緩沖段存儲器108B的組-B。
在步驟812,寫邏輯線路600判斷是否有正在對該口進行的寫操作。如果有一個正在進行的寫操作,處理轉步驟816繼續(xù)。如果沒有,處理在步驟814繼續(xù)。
在步驟816,寫選擇邏輯線路600從組-B的空閑表608中去掉在段緩沖存儲器的組-B108B中可得到的一個單元的地址。從組-B的空閑表608中選擇組-B地址614作為寫地址選擇邏輯線路602的寫地址308。由于組-B地址614被從組-B的空閑表608中去掉,組-B的空閑表的計數值被降低。寫地址308和讀地址310通過存儲器訪問邏輯312(圖2)被送至緩沖段存儲器的各組108A,108B中。處理在步驟818繼續(xù)。
在步驟814,寫選擇邏輯線路600通過存儲器訪問邏輯線路3312(圖2)把讀地址送至段緩沖存儲器的組-A108A。處理在步驟818繼續(xù)進行。
在步驟818,讀操作結束之后,讀地址的拷貝計數值被拷貝計數邏輯線路624降低。如果拷貝計數值為零,讀地址310被送回組-A的空閑表606,并且組-A的空閑表計數值被提高。處理在步驟820繼續(xù)進行。
在步驟820,口分時邏輯線路304(圖2)被增至下一個口周期314。處理在步驟800為下一個口周期繼續(xù)進行。
圖9是描述在圖1A中所示的段緩沖存儲器的方塊圖,該存儲器在物理上分為四個組,段緩沖存儲器108Ae(A組-A,eeven偶數),段緩沖存儲器108Ao(A組-A,oodd,奇數),段緩沖存儲器108Be(B組-B,eeven偶數),段緩沖存儲器108Bo(B組-B,oodd奇數)。該存儲器在物理上可以根據存儲地址的兩個MSB而分為四組,例如,選擇A或B組的MSB位以及選擇奇數或偶數組的MSB-1存儲地址。
段緩沖存儲器108的每個組有一個相關的存儲地址,地址-Ae 900與地址-Ao 902,地址-Be 904與地址-Bo 906。存儲器脈沖邏輯線路312根據在寫地址308中編碼的段緩沖存儲器108的組以及口周期把寫地址308送至地址-Ae900,地址-Ao902,地址-Be904或地址-Bo906。存儲器訪問邏輯線路312根據在讀地址310中編碼的段緩沖存儲器108的組以及口周期把讀地址310送至地址-Ae900,地址-Ao902,地址-Be904或地址-Bo906。
在每個數據段時間內提供給每個口的存儲帶寬通過在每個數據段時間內為每個口提供兩個口周期314,一個偶數口周期和一個奇數口周期的方式被增加一倍。在偶數周期內對偶數組108Ae,108Be進行訪問而在奇數周期內對奇數組108Ao,108Bo進行訪問。寫地址邏輯線路300(圖2)和讀地址邏輯線路304(圖2)保證在每個口周期內給出的讀地址308和寫地址310被用于緩沖段存儲器的不同組108Ae,108Ao,108Be,108Bo。這樣,在一個偶數周期內,對偶數組108Ae的讀訪問與對偶數組108Be的寫訪問同時出現。
通過在每個數據段時間內為每個口提供兩個口周期并且對于每個口周期提供一個同時進行的讀訪問與寫訪問,段緩沖存儲器108的帶寬對于與轉送器100連接的每個口而言被增加了三倍。這樣,在每個數據段時間內,對于每個口而言,可對段緩沖存儲器108進行四次訪問。存儲器訪問成對提供,對一個偶數組的讀操作與對另一個偶數組的寫操作同時進行。
圖10是描述在圖3中所示的用于在圖9中所示的四組段緩沖存儲器108的讀地址邏輯線路302的方塊圖。讀訪問邏輯線路302(圖3)包括偶數/奇數口隊列選擇邏輯線路1000,用于每個出口112的一個口隊列510,以及偶數/奇數讀地址選擇邏輯線路1004。對于一個四組段緩沖存儲器108,口分時邏輯線路304(圖3)為預定數量的時鐘周期生成一個偶數口周期1006和一個奇數口周期1008并且在每個數據段時間片(圖2)中生成一個偶數/奇數信號1010。結合圖10對一個偶數口周期1006和一個奇數口周期1008的分時圖的例子進行描述。
口隊列510已經結合圖5進行了描述。偶數/奇數口隊列選擇邏輯線路1000根據奇數口周期1006和偶數口周期1008的狀態(tài)以及來自口分時邏輯線路304(圖3)的偶數/奇數信號1010選擇一個口隊列510以讀取信息。如果或者是奇數口周期1006或者是偶數口周期1008對于該口而言是現行周期,則從口隊列510選擇該口將要讀取的下一個數據段并將其送至偶數/奇數讀地址選擇邏輯線路1004。
偶數/奇數讀地址單元選擇邏輯線路1004根據偶數口周期1006和奇數口周期1008的狀態(tài)轉送由口隊列510提供的地址504。如果單元504是奇數單元并且該奇數口周期1008是現行周期,則單元504被轉送至偶數/奇數讀地址選擇邏輯線路1004,但是如果單元504是奇數并且偶數口周期1006是現行周期,則單元504不被轉送至偶數/奇數讀地址選擇邏輯線路1004,但是如果單元504是偶數則單元504要被轉送。這樣,在一個數據數時間里,如果數據段被存于段緩沖存儲器108的奇數與偶數組中,則一個口可以從段緩沖存儲器108讀取數據段的兩上單元。
圖11是描述圖2中所示的用于圖9中所示的四組段緩沖存儲器108的寫地址邏輯線路的方塊圖。四組寫選擇邏輯線路1100為段緩沖存儲器的四個組108Ao,108Ae,108Bo,108Be中的一個組選擇一個寫地址308。段緩沖存儲器的每一個組108Ae,108Ao,108Be,108Bo均有一個相關的空閑表1112,1114,1116,1118和空閑表計數器1102,1104,1106,1108。
四組寫選擇邏輯線路1100對空閑表1112,1114,1116,1118進行判斷,根據讀地址310,偶數/奇數信號910,從空閑表中提取一個寫地址。如果四組寫選擇邏輯線路1100從偶數/奇數信號910判斷出存儲器訪問是用于偶數周期并且讀地址310是用于緩沖段存儲器的Ae組108Ae,則從Be組的空閑表1106提取一個寫地址。如果四組寫選擇邏輯線路1100從偶數/奇數信號910判斷出存儲器訪問是用于偶數周期并且讀地址310是用于緩沖段存儲器的Be組108Be,則從Ae組的空閑表1112中提取一個寫地址。
如果四組寫選擇邏輯線路1100判斷出讀地址是用于緩沖段存儲器的Ae組108Ae,它就通過ENA-3信號1134為Be組激活空閑表1116,以便用于Be組的空閑表1116能夠為四組寫地址選擇邏輯線路1120提供一個Be組地址。由于一個地址從Be組的空閑表中去掉,四組寫選擇邏輯線路1100生成一個更新計數器Be信號以作為/更新計數器Be信號1140,通過降低組-Be的空閑表計數值1140來更新Be組的空閑表1116。
如果沒有有效的讀地址,則四組寫選擇邏輯線路1110對空閑表1112,1114,1116,1118進行判斷,根據空閑表計數1102,1104,1106,1108從空閑表中提取寫地址308。具有最大值的空閑表計數1102,1104,1106,1108指明具有最大量的可得到的單元的段緩沖存儲器108Ae,108Ao,108Be,108Bo。與空閑表計數器1102,1104,1106,1108中的可得到最大量的單元有關的空閑表1112,1114,1116,1118被選擇,以便提供段緩沖存儲器108中將被寫的下一個單元。這樣,當數據寫入時,就均勻地分布在緩沖段存儲器的組108Ae,108Ao,108Bo,108Be之間。
例如,對于當前的口周期314而言沒有讀地址310,則兩組寫選擇邏輯線路1100通過作為/更新計數值Ae信號1144和作為/更新計數值Be 1140信號從Ae組的空閑表計數器1102和Be組的空閑表計數器1106獲得當前的計數值。組-Ae的空閑表計數值1102和Be組的空閑表計數值1106被送至四組寫地址邏輯線路1100。兩組寫地址邏輯線路600對計數值進行比較,并根據組-Ae計數值1106或組-Be計數值1102哪個更大來生成一個ENA-1信號1130或個ENA-3信號1134。
空閑表寫地址1122,1124,1126,1128中的一個地址被選擇之后,寫地址308通過四組寫地址選擇邏輯線路1120被送至段緩沖存儲器108??截愑嫈抵?26被存于用于寫地址308的拷貝計數邏輯線路624中??截愑嫈抵?26用于跟蹤多投數據包,即,為一個以上的出口112排隊的數據包。
圖12是對在圖9中所示的四組段緩沖存儲器108的讀地址與寫地址的時間劃分進行描述的分時圖。在每個數據段時間片204中,為與轉送器100連接的64個口中的每個口提供對段緩沖存儲器的4次訪問。數據段時間片204是在64個中的任一個口上接收一個數據段所用的時間。這樣,數據段時間204是可得到的最大時間,在該時間內為與轉送器100連接的每個口在段緩沖存儲器108中儲存一個數據段。
每個口被安排一個口周期時間208,在該周期中對段緩沖存儲器108進行訪問。在口周期時間208內,為一個口在數據段存儲器的一個組中讀出或寫入一個數據段。口周期時間208取決于數據段時間片204以及與轉送器100連接的口的數量。段緩沖存儲器108(圖1A)的訪問時間取決于口周期時間208。
在1204,每個數據段時間片204的開頭,通過給出一個幀脈沖信號而生成一個幀脈沖。該幀脈沖信號可用于對口分時邏輯線路304(圖3)進行初始化。在1206,口0的偶數周期開始???的一個寫地址被送至緩沖段存儲器的Ae組108Ae,同時,口0的一個寫地址被送至緩沖段存儲器的Be組108Be。在時間1214,口32的奇數周期開始,口32的一個寫地址被送至緩沖段存儲器的Ao組108Ao,同時,口32的一個讀地址被送至緩沖段存儲器的Bo組108Bo。在口0的偶數周期的起點1206之后,口32的奇數周期的起點1214出現在半口周期時間208。偶數周期的起點與奇數周期的起點間的這一延遲允許在奇數周期與偶數周期期間在緩沖段存儲器108中使用共用邏輯線路。如果不使用共用邏輯線路,奇數周期的起點與偶數周期的起點可以同時安排。
在口0的偶數周期開始之后。在1218,口0的奇數周期的起點被安排半個數據段時間204再加上半個口時間片208。該時間是圖12中的延遲時間1220。例如,如果數據段時間片204是5120ns(64個字節(jié),每字節(jié)8比特,每個比特10ns)并且口0的偶數口周期的起點1206開始0,則口0的奇數口周期的起點被安排在口0的偶數口周期的起點1206之后的2200ns(5120/2+40)。
在數據段時間片204中,轉送器100能夠按并是數據段的大小的倍數的字節(jié)計數值來接收數據包。這些數據包占用近乎等量的時間作為最小規(guī)模的數據包而被接收。例如,為了在一個數據段時間片204內儲存在入口0接收的65個字節(jié)的數據包,在口0的偶數周期內前64個字節(jié)被寫入段緩沖存儲器108,而最后一個字節(jié)在口0的奇數周期內被寫入段緩沖存儲器108。
轉送器100可以接收大于一個數據段的數據包。接收同一個數據包的數據時,四組寫選擇邏輯線路1100通過一個包信號1138來保證用于同一個數據包的連續(xù)數據段的寫地址208選自交替的交替的偶數與奇數空閑表。例如,如果第一個數據段被寫入選自偶數組-B的空閑表1116的寫地址308,則下一個連續(xù)的數據段根據是否存在一個對組-A 108Ao或組-B 108Bo的讀操作而被寫入選自奇數組-B的空閑表918或奇數組-A的空閑表1114的一個寫地址308。
圖13是描述為在圖9中所示的的四組段緩沖存儲器的偶數組選擇讀地址與寫地址的步驟的流程圖。
在一個偶數口時間片內,段緩沖存儲器的偶數組108Ae,108Be被選擇。在奇數口時間片內,對段緩沖存儲器的奇數組108Ao,108Bo的讀地址與寫地址執(zhí)行相同的步驟。如圖13中所示,在偶數口時間片內讀與寫操作針對同一個口,即,入口102與出口112是同一個口。如圖所示,入口102和出口112不必是同一個口,讀操作和寫操作可以同時針對不同的口。圖13的描述將結合圖9至圖12進行。
在步驟1300,四組寫選擇邏輯線路1100從指明對出口112的現行讀操作的讀選擇邏輯線路1004判斷是否存在有效的讀地址310。如果存在一個現行的讀操作,處理轉1304步驟繼續(xù)。如果沒有,處理轉1328步驟繼續(xù)。
在步驟1304,四組讀選擇邏輯線路1004通過存儲器訪問邏輯線路312判斷讀地址將被送至段緩沖存儲器的哪個偶數值108Ae,108Be。如果讀地址310用于偶數組-A 108Ae,處理轉步驟1308繼續(xù)。如果讀地址310用于偶數組-B 108Be,處理轉步驟1306繼續(xù)。
在步驟1308,四組寫選擇邏輯線路1100根據接口槽的號碼402判斷是否有現行的為入口102的寫操作。如果有為入口進行的現行寫操作,處理轉1320繼續(xù)。如果沒有,處理轉步驟1318繼續(xù)。
在步驟1320,四組寫選擇邏輯線路1100通過ENA-B信號1134從用于偶數組-B的空閑表1116提取用于段緩沖存儲器的偶數組-B的108Be的一個可得到地址。用四組寫地址選擇邏輯線路1100選擇來自用于組-B的偶數組-B空閑表1116的偶數組-B地址1126作為寫地址308。通過作為/更新計數值Ae信號1140來判斷偶數組-B空閑表計數值1106。寫地址308與讀地址310通過四組讀/寫地址選擇邏輯線路908(圖9)被送至段緩沖存儲器的各自的偶數組108Ae,108Be。處理在步驟1324繼續(xù)。
在步驟1318,讀地址310通過四組讀/寫地址選擇邏輯線路908被送至段緩沖存儲器的偶數組-A 108Ae。處理在步驟1324繼續(xù)。
在步驟1324,讀操作結束之后,讀地址310被送回用于偶數組-A的空閑表1112并且用于偶數組-A的空閑表計數值1102被增加。處理在步驟1326繼續(xù)。
在步驟1328,四組寫選擇邏輯線路1100判斷是有對該口的現行寫操作。如果有一個對該口的現行寫操作,處理在步驟1330繼續(xù)。如果沒有,處理在步驟1326繼續(xù)。
在步驟1330,四組寫選擇邏輯線1100從存在用于偶數組-A的空閑表計數器1102中的計數值以及存在用于偶數組-B的空閑表計數器1106中的計數值判斷段緩沖存儲器的哪個偶數組108Ae,108Be最不滿。如果寫選擇邏輯線路判定段緩沖存儲器的偶數組-A 108Ae最不滿,則處理在步驟1334繼續(xù)。如果四組寫選擇邏輯線路1100判斷緩沖段存儲器的偶數組-B 108Be最不滿,則處理轉至步驟1336繼續(xù)。
在步驟1334,四組寫選擇邏輯線路1100從偶數組-A的空閑表1112中去掉在段緩沖存儲器的偶數組-A 108Ae中可得到的單元的地址。由四組寫地址選擇邏輯線路1120從偶數組-A空閑表1112中選擇組-A地址1122作為寫地址308。由于偶數組-A地址1122被從偶數組-A空閑表1112中去掉,偶數組-A的空閑表計數值被降低。寫地址308通過四組/寫地址選擇邏輯線路908(圖9)被送至段緩沖段存儲器的偶數組-A 108Ae。
在步驟1336,四組寫選擇邏輯線路1100從偶數組-B的空閑表1116中在段緩沖存儲器的偶數B 108Be中可得到的一個地址。由四組寫地址選邏輯線路1120從偶數組-B的空閑表1116中選擇偶數組-B地址1126作為寫地址308。由于偶數組-B地址1126被從偶數組-B的空閑表1106中去掉,偶數組-B的空閑表的計數值1116被降低。寫地址308通過四組讀/寫地址選擇邏輯線路908(圖9)被送至緩沖段存儲器的偶數組-B108Be。
在步驟1306,四組寫選擇邏輯線路1100判斷是否存在一個為該口的現行的寫操作。如果有一個現行的寫操作,處理轉步驟1316繼續(xù)。如果沒有,處理轉步驟1312繼續(xù)。
在步驟1316,四組寫選擇邏輯線路1100從偶數組-A的空閑表1112中去掉在段緩沖存儲器的偶數組-A 108Ae中可得到的一個地址。由四組寫地址選擇邏輯線路1120從偶數組-B的空閑表1116中選擇偶數組-A地址1122作為寫地址308。由于偶數組-B地址1126被從偶數組-B的空閑表1112去掉,偶數組-B的空閑表計數值1102被降低。寫地址308和讀地址310通過四組讀/寫地址選擇邏輯線路908(圖9)被送至段緩沖存儲器的各組108Ae,108Be。處理轉步驟1322繼續(xù)。
在步驟1312,四組寫選擇邏輯線路1100通過四組旋/寫地址選擇邏輯線路908(圖9)把讀地址送至段緩沖存儲器的偶數組-A 108Ae。處理在步驟1322繼續(xù)。
在步驟1322,讀操作執(zhí)行完之后,讀地址310被送回偶數組-A空空閑表1112并且偶數組-A的空閑表計數值1102被增大。處理轉步驟1326繼續(xù)。
在步驟1326,與下一個偶數口時間片對應的處理開始。下一個偶數口周期906由口分時邏輯線路304(圖2)確定。
本發(fā)明不受緩沖段存儲器108(圖1A)如結合圖4-6所描述的被分成四組的限制,也不受如結合圖9-13所描述的被分成四組的限制,該緩沖段存儲器可被分成2N的任何數的組(其中N=1,2,3,4……)。
隨著參照其優(yōu)選的實施例對本發(fā)明進行的詳細展示與描述,本技術領域的專業(yè)人士將會理解,在不背離由所附的權利要求所固定的本發(fā)明的范圍的前提下,可以在形式與細節(jié)上進行各種各樣改變。
權利要求
1.一種轉送器,包括多個入口;多個出口;一個存儲器,用于從多個入口中的任一入口接收數據流并向多個出口中的任一出口提供數據流;一個數據包存儲管理器,為多個出口中的一個出口執(zhí)行讀操作,并為多個入口中的一個入口執(zhí)行寫操作,讀操作與寫操作在一個單存儲器訪問周期內對不同的存儲單元進行。
2.如權利要求1所述的轉送器,其中的包存儲管理器還包括讀地址邏輯線路,根據一個接口周期,在存儲器中為讀操作選擇一個讀地址;寫地址邏輯線路,根據由讀地址邏輯線路選擇的讀地址在存儲器中為寫操作選擇一個寫地址。
3.如權利要求1所述的轉送器,其中的讀地址邏輯線路包括一個接口隊列,用于多個出口中的每個出口,該接口隊列儲存由管理器根據新接收的數據包中的網絡目標寫入存儲器的數據的單元的存儲地址;口隊列選擇邏輯線路,根據接口周期選擇一個接口隊列,從中去掉一個存儲地址;邏輯線路,用于根據從所選口接口隊列的開頭去掉的存儲地址來選擇存儲單元,并從該單元讀取信息。
4.如權利要求3所述的轉送器,其中的寫地址邏輯線路包括一個接口隊列中未被儲存的地址的空閑表;寫選擇邏輯線路,用于為管理器在存儲器中提供一個地址以寫入一個數據包段,提供的方式是從空閑表中去掉一個存儲段地址并把該段地址儲存在該數據包段被引向的每個口隊列的尾部,管理器把數據包段寫入由該段地址指明的存儲器中的單元。
5.如權利要求4所述的轉送器,其中的存儲器在物理上被分成多個組。
6.如權利要求5所述的轉送器,其中組的數量為2。
7.如權利要求5所述的轉送器,其中組的數量為4。
8.如權利要求5所述的轉送器,其中的寫地址邏輯線路還包括一個用于每個組的空閑表,寫選擇邏輯線路選擇一個空閑表,從中去掉一個段地址。
9.如權利要求8所述的轉送器,其中的寫地址邏輯線路根據讀地址選擇一個空閑表。
10.如權利要求8所述的轉送器,其中的寫地址邏輯線路選擇一個空閑表,這樣,一個數據包的連續(xù)段被寫入存儲器的交插的奇數與偶數組。
11.如權利要求8所述的轉送器,其中的寫地址邏輯線路還包括用于多個組中的每個組的一個空閑表計數器,該空閑表計數器存有該組中可得到的單元的計數值,寫選擇邏輯線路根據該計數值選擇一個空閑表。
12.權利要求1所述的轉送器,其中的入口之一與出口之一是同一個口。
13.權利要求1所述的轉送器,其中的入口之一與出口之一是不同的口。
14.一個轉送器,包括多個入口;多個出口;一個存儲器,用于從多個入口中的任一入口接收數據流并向多個出口中的任一出口提供數據流;一個裝置,用于為多個出口中的一個出口執(zhí)行讀操作,并為多個入口中的一個入口執(zhí)行寫操作,讀操作與寫操作在一個單存儲器訪問周期內對不同的存儲單元進行。
15.一個在權利要求14中所要求的傳送器,其中用于執(zhí)行操作的裝置還包括一個裝置,根據一個口周期為讀操作在存儲器中選擇一個讀地址;一個裝置,根據由讀地址邏輯線路選擇的讀地址在存儲器中為寫操作選擇一個寫地址。
16.一個在權利要求15中所要求的傳送器,其中用于選擇讀地址的裝置包括一個口隊列,用于多個出口中的每個出口,該口隊列中存有由執(zhí)行寫操作的裝置根據在新接收的數據中的網絡目標地址寫入存儲器的數據的單元的存儲地址;一個裝置,用于根據口周期選擇口隊列,從中去掉一個存儲地址;一個裝置,用于根據從所選的口隊列的開頭去掉的存儲地址擇一個存儲單元,從中讀出信息。
17.一個如在權利要求15中所要求的傳送器,其中用于選擇讀地址的裝置包括一個口隊列中的未被存入信息的地址的空閑表;一個裝置,用于從空閑表中去掉一個存儲段地址,并把該段地址存到該段被引至的每個口隊列的末尾,并提供該地址用于由執(zhí)行讀寫操作的裝置把數據包寫至由該段地址指明的存儲器中的單元。
18.一個如在權利要求17中所要求的傳送器,其中的存儲器在物理上被分成多個組。
19.一個如在權利要求18中所要求的傳送器,其中組的數量是2。
20.一個如在權利要求18中所要求的傳送器,其中組的數量是4。
21.一個如在權利要求18中所要求的傳送器,其中,選擇寫地址的裝置還包括一個用于每個組的空閑表,并且用于清除的裝置選擇一個空閑表以從中去掉一個段地址。
22.一個如在權利要求21中所要求的傳送器,其中,選擇寫地址的裝置根據讀地址選擇一個組空閑表。
23.一個如在權利要求21中所要求的傳送器,其中,選擇寫地址的裝置根據讀地址選擇一個組空閑表,以致于一個數據包的連接段被寫入存儲器的交插的奇數與偶數組。
24,一個如在權利要求22中所要求的傳送器,其中,選擇寫地址的裝置還包括用于多個組中的每個組的一個空閑表計數器,該空閑表計數器中存有可在該組中得到的單元的計數,選擇寫地址的裝置根據空閑表計數器中所存的計數選擇一個空閑表。
25.一個如在權利要求14中所要求的傳送器,其中,多個入口中的一個入口與多個出口中的一個出口是同一個口。
26.一個如在權利要求14中所要求的傳送器,其中,多個入口中的一個入口與多個出口中的一個出口是不同的口。
27.在一個轉送器中共享一個存儲器的一個方法,包括把數據流從多個入口中的任一入口接入存儲器;把數據流從存儲器送往多個出口中的任一出口;為多個出口中的一個出口執(zhí)行讀操作并且為多個入口中的一個入口執(zhí)行寫操作,讀操作與寫操作在一個單存儲器訪問周期內對不同的存儲單元進行。
28.一個如權利要求27中所要求的方法,其中,執(zhí)行讀操作與寫操作的步驟還包括按照一個口周期,在存儲器中為讀操作選擇一個讀地址;根據由讀地址邏輯線路選擇的讀地址在存儲器中為寫操作選擇一個地址。
29.一個如權利要求28中所要求的方法,其中,選擇一個讀地址的步驟包括把寫入存儲器的數據的單元的存儲地址存入用于多個出口中的每個出口的一個隊列,該口隊列取決于新接收的數據中的網絡目標地址;按照口周期選擇口隊列,從中去掉一個存儲地址;根據從中隊列中去掉的存儲地址選擇存儲單元,從中讀取信息。
30.一個如權利要求29中所要求的方法,其中,選擇寫地址的方式包括提供一個口隊列中未存信息的地址的一個空閑表;從該空閑表中去掉一個存儲段地址;把該段地址存至該段被引向的每個口隊列的末尾;提從該地址以把數據包寫入由段地址指定的存儲器中的單元。
31.一個如權利要求30中所要求的方法,其中的存儲器在物理上被分成多個組。
32.一個如權利要求30中所要求的方法,其中的組的數量為2。
33.一個如權利要求30中所要求的方法,其中的組的數量為4。
34.一個如權利要求30中所要求的方法,其中選擇寫地址的步驟包括把可得到的單元的地址存入用于多個組中的每個組的一個組空閑表中;從多個組空閑表中選擇一個組空閑表;從所選擇的空閑表中去掉該寫地址。
35.一個如權利要求33中所要求的方法,其中,根據讀地址來選擇組空閑表。
36.一個如權利要求33中所要求的方法,其中,組空閑表被選擇,以致于一個數據包的連續(xù)段交替地寫入存儲器的奇數與偶數組中。
37.一個如權利要求35中所要求的方法,其中,選擇寫地址的步驟還包括把可得到單元的計數存入用于多個組中的每個組的一個組空閑表計數器中;根據該計數選擇一個組空閑表。
38.一個如權利要求27中所要求的方法,其中,多個入口中的任一入口與多個出口中的任一出口是同一個口。
39.一個如權利要求27中所要求的方法,其中,多個入口中的任一入口與多個出口中的任一出口是不同的口。
全文摘要
執(zhí)行存儲器的交叉存取以增大一個無阻塞轉送器的共用存儲器的帶寬。轉送器從多個入口接收數據包,將這些數據包儲存在共用存儲器中,并將這些數據轉送至多個出口。共用存儲器在物理上被分為兩組以提供兩路交叉存取。兩路交叉存取的實現方式是從一個組讀取將被轉送至一個出口的一個數據包,同時把一個入口接收的一個數據包寫入其他組。共用存儲器在物理上被分為四組以提供四路交叉存取。四路交叉存取的實現方式是同時讀與寫兩個偶數組或兩相奇數組。還提供組平衡技術以使共用存儲器的組處于同水平的占用率。
文檔編號G06F12/06GK1385015SQ00814958
公開日2002年12月11日 申請日期2000年8月21日 優(yōu)先權日1999年8月31日
發(fā)明者戴維·A·布朗 申請人:睦塞德技術公司