專利名稱:用于流量處理的包存儲系統的制作方法
技術領域:
在出口流量處理機中,包以超過輸出線速率的速率突發到達。例如,輸入速率可以是80Gbits/s,而線速率可以“只”有40Gbits/s。因此需要臨時包緩沖。通過在邏輯隊列中緩沖包,可以通過在隊列中改變有效資源(線帶寬和存儲容量)的分配得到不同的業務級別。
背景技術:
以下幾點共同使得在40Gbits/s的線速率時特別難以緩沖包1、需要高數據帶寬,以同時讀取和寫入包(在最壞的情況下結構超速)。
2、需要高地址帶寬,以在最壞的情況下拷貝,其中同時寫入最小量的數據包流并在隨機訪問模式下從存儲器讀取。
3、存儲器的容量必須高,由于緩沖器在高線速率的瞬間突發期間會迅速充滿。
4、在高線速率時必須減少與邏輯隊列管理或存儲器管理相關聯的狀態操作。典型地對于執行這種功能的硬件或軟件裝置有效的系統時鐘周期的數目最小。
將包直接放入映射到統計分配的存儲器的隊列中的方案可以滿足(2)和(4),但是使用存儲器的效率較低,因此不滿足(3)。將包緩沖到單片存儲器或SRAM中的方案能夠滿足(2),但是不能滿足(3),由于SRAM是低容量的存儲器。實施使用高容量的DRAM的方案可以滿足(3),但是難以滿足(2),因為隨機訪問時間短。在試圖滿足(1)時,方案需要具有高帶寬的互連和高引線數的接口。
總之,難以設計四個條件都滿足的體系結構。
發明內容
本發明一方面提供一種在通信系統中對可變大小的數據包進行排隊的方法,該方法包括從所述數據包產生預定固定大小的記錄部分并包含關于該包的信息,該包中的數據在數據部分中;在第一存儲器的獨立存儲器位置中存儲數據部分,并且每一數據部分彼此之間沒有聯系;在第二存儲器的一個或多個所管理的隊列中存儲記錄部分,其具有的固定大小存儲器位置的大小等于記錄部分的大小;其中第一存儲器比第二存儲器大,并且具有比其小的地址帶寬;并且第一存儲器中的存儲器位置設置成具有多個不同大小的塊,并且根據該數據部分的大小將存儲器位置分配給該數據部分。
方便地,在設置成兩個所述塊的第一存儲器中可以有兩個大小的存儲器位置,一個用來接收相對較小的數據部分,并且另一個用來接收相對較大的數據部分,并且其中將太大而不能存儲在單個存儲器塊中的數據部分存儲為多個塊中的鏈接列表,其具有指向下一塊的指針,但是沒有任何從該包的一個數據部分指向下一數據部分的指針。
塊中的存儲器位置優選地與該通信系統中最通常出現的數據包的大小匹配。優選地從有效地址的中央池成批地從提供給其的有效地址池分配第一存儲器中的存儲器位置。
存儲器塊可以分隔到多個存儲器通道中,并且順序地跨過通道將地址分配給數據部分,從而將數據部分的存儲分散在通道上。
優選地以管線方式通過數據檢索單元從第一存儲器中讀取數據部分,其用于指導存儲器塊讀出數據部分,而不必等待前一個讀取完成,并且從該第一存儲器中釋放地址位置。
在所接收到的包沒有足夠的存儲器的情況下,可以將記錄部分入隊,就像對應的數據部分存儲在第一存儲器中,以及順序讀出對應于所述數據包的記錄部分,設置標志用來表示將要丟棄所述包的數據部分,丟棄所述數據部分,并且釋放名義上分配給所丟棄數據部分的存儲器位置。
可以從地址的位圖中讀取地址位置,并且當在存儲器在其中的數據已經被讀出之后釋放存儲器位置時,直接將所釋放的存儲器位置的地址發送到該池中。在另一方面,本發明提供一種存儲集線器,其包含執行如下面的權利要求中所定義的方法所必須的所有特征。
本發明在其最廣泛的意義上,提供一種存儲集線器,其用來在高線速率流量處理機中緩沖包,從而實現使用高速串行鏈路與存儲集線器連接的大量可獨立尋址的存儲器通道,從而能夠應用于網絡線卡上的流量處理機。流量處理機的特征在于高線速率和對大存儲器的高速隨機訪問。
更廣泛地,當需要對非常大存儲器進行高速隨機訪問(等待容限)時,可以應用該方法。
根據優選實施例如下實施本發明隊列管理器和存儲器管理器是完全去耦合的(通過包/包記錄概念表明。這針對于標準(4))。
包直接流入動態分配的存儲器中,幾乎沒有第一手狀態操作(通過存儲器管理器和使用本地池得到支持。其針對于標準4)。
存儲器地址空間分段和使用存儲器管理器的位圖進行的有效性跟蹤對動態存儲器管理提供必要的支持(通過高效存儲器使用有助于滿足(3))。
使用高速串行芯片至芯片的鏈路與存儲集線器連接(遠程輸出到多個存儲器通道使得地址和數據帶寬能夠成比率,以滿足要求,而不會滿足實施限制,這針對于(1)和(2))。
現在將參照附圖描述本發明,其中圖1是該包存儲系統的主要組件的功能簡圖;圖2是概存儲集線器的體系結構簡圖;圖3是數據報檢索單元設計;圖4(a)是對于多芯片、規模可變實施方法,用于流量處理的包存儲系統的實施;圖4(b)是對于單芯片、高度集成的技術方案,用于流量處理的包存儲系統的實施。
具體實施例方式
本發明包括組裝成為一個方案的組件特性、思想和裝置,該方案滿足流量處理系統中用于40Gbits/s包緩沖所需要的全部條件。存儲集線器是本發明的主要實施例。將根據該主要實施例,并連同實現本發明能夠傳送的性能級別所需要的和/或所想要的周邊設備一起描述本發明。為此,下面的說明書被分為描述本發明不同方面和/或特征的多個副標題。不可避免地,在下面的部分之間存在一定的重疊。
存儲系統去耦合——該特征的主要目的是分離出包存儲問題,使得其不與其它功能混雜在一起,并與其它功能相互不相關。相對復雜的功能可以用來控制包的入隊和出隊。如果包本身并不傳送到該系統,這種包處理/操作的復雜度可以減少。由于在流量處理中并不需要訪問包內客,可以將該包放在存儲器中,并通過少量的固定大小的包記錄表示。在邏輯隊列或數據結構中被處理和計算的是這些記錄。按照順序調度的包記錄接著可以用來覆蓋包,以在輸出線上轉發。于是,從包緩沖和存儲器管理的任務中分離出處理和邏輯隊列管理功能。接下來,對少量的固定大小的包記錄元數據進行QoS處理。該記錄典型地包括包在存儲器中的位置(第一塊的地址)、該包所屬的流的標識(附在上游包上)、包長度和控制標志。使用該流標識符在本地查找附加數據。因此參照圖1,在到達塊1處到達的數據包流的長度可變。從所接收到的每一包中產生包記錄。每一包記錄包含關于其各自數據包的信息,并因此“表示”該數據包。而且,該包記錄的大小固定,使得原始包內的數據占據可變大小的數據部分。
這是本發明的關鍵特征,因為其將記錄部分和數據部分單獨地并彼此獨立地進行處理,從而使得能夠優化記錄和數據的存儲。將包的可變長度的數據部分發送到存儲集線器2中,而記錄部分發送到記錄處理系統3。該包記錄部分比該數據部分短,并因此相比于處理作為單個整體的全部接收的數據包,可以在單獨的處理系統3中有效地對其進行處理。
該存儲集線器2根據該包在其到達存儲器4的路上從本地池6中所拾取的地址,正確地將該數據傳送到存儲器4中。如此后所解釋,本地池保持有一批從存儲集線器2向其發送的有效地址。該系統工作完全不需要該池“請求”用于特定數據包的地址。中央池7保持有包存儲器4中的所有存儲器位置的地址。通過這種方式,數據包簡單地流入存儲器4,并且具有盡可能少的處理,以通過高數據速率,例如以當前高至80Gbits/s的速率從輸入通道拷貝。
包記錄包含指向存儲器中的包數據的指針。也可以有標志,即告訴系統3該如何處理記錄的信息,諸如應該將其放入哪一隊列,以及它們具有何種優先級。每一包具有隊列標識符。
大多數包存儲/排隊系統將整個包作為單個整體處理,包括記錄和數據信息,并因此與介紹部分中所述的標準相沖突。本發明通過滿足所有這些標準的唯一方式對該包的記錄和數據部分進行處理。
存儲集線器的使用可以確保當包高速達到時,對它們進行盡可能少的處理,而可以以較低的速度“離線”地處理包記錄。數據于是可以直接流入存儲器。常規方法使用的技術包括標識該數據將被寫入該隊列中的何處。如果已經寫入了,必須通過重寫指針來更新該狀態。當新數據達到時,讀取指針并且必須再次更新該指針。該過程顯然是密集的,并且降低了整體處理的速度。在本發明的優選實施方式中,沒有“握手處理”。
極其高速的輸入數據需要物理存儲器4具有許多通道。這就產生了“引線問題”,其中隊列太深使得存儲器必須很大(例如數百兆字節),并因此不是單片級。該集線器因此提供用于分離物理和邏輯存儲器問題的裝置。其然后可以是獨立芯片。該存儲集線器提供有第二裝置,可以在其上面實施所有的存儲器通道,而不必支持不同的接口。該存儲器4因此優選地是一組存儲器芯片,并且該存儲集線器潛在的是一個芯片。
該存儲集線器具有關于存儲器的每一塊是自由的知識,并且將一組地址從中央池7傳送到在到達塊1中的本地池6,指示具有用于接收其包記錄已經被到達塊剝離的數據的有效地址。在到達塊處所到達的數據的每一包都分發有從本地池6中得到的地址,并將其發送到用于存儲的對應存儲器位置。
存儲器管理——當存儲器用作數據結構的存儲時,其通常是靜態或者動態分配的。用于將存儲器分配給包的一種有效方法包括下面的特征,其在本發明的優選實施例中提供。包存儲器4在該存儲器地址空間中被劃分成小塊。這些塊可以是n個不同配置的大小之一。為了減少系統的復雜性,適當地考慮n=2。沒有將存儲器靜態地分配給隊列。相反,包存儲在一個或多個給定大小的塊中(適當地)。給定包的每一塊通過鏈接列表的方式指向下一個,但是在存儲器4中沒有邏輯隊列管理。通過存儲集線器中的存儲器管理器記錄所有存儲器塊的有效性。在圖2所示的存儲集線器的結構圖中,該存儲器管理器方框所示為20。輸入側(圖2中的左側)保持簡單,從而處理80Gbits/s的高數據速率,并且將該復雜度故意地保持到輸出側(圖2中的右側)。該輸入側有效地包括分布到不同存儲器通道的連續數據流。通過寫控制器22產生的寫操作具有的優先級比通過讀控制器23產生的讀操作高。如前面參照圖1所解釋,寫流入,并根據在到達塊1中的本地池6所分配的地址,跨過多個存儲器通道均衡地在請求復用器24和存儲器通道接口25上分布。
該存儲器管理器20使用存儲器模塊21中每個有效存儲器塊的位圖,每一位表示一個塊。當該存儲器管理器從中央池7發送地址塊到本地池6時,該地址與每一個模塊相關。因此,當輸入數據從本地池6拾取地址時,每一包或包的段會被發送到不同的模塊,從而實現負荷分散。如果模塊中的每一存儲器塊具有64字節的容量,也就是說整個包可以全部存儲在一個塊中,假定包大小少于64字節。更大的包,例如256字節的包會跨過幾個塊作為鏈接列表存儲。由于數據作為鏈接列表存儲在存儲器中,存儲器中的每一塊指向下一個,從而如果必須在讀取下一項之前讀取第一項數據和所提取的指針,其在檢索時低效率。因此,有利地將存儲器劃分成為不同大小的塊,以分別接受大的和小的數據包。通過該方式,大包可以存儲在大塊中,使得數據報檢索單元可以讀取第一個大塊,并且如果指針返回到第一個,其可以在完成第一個讀取之前,通過管線的方式發布請求讀取下一個。
這樣有助于在寫和讀控制器21、22之間的潛在爭奪,并且后來也有助于當派送單元5向存儲集線器發送請求需要特定的包時,該請求首先到達數據報檢索單元DRU,諸如圖2中的24,其然后將該請求輪流發布到每一通道。因此,在讀取側和寫入側都有分布。這樣進一步增強了負荷分散。
如果考慮平均來自切換結構的輸入是80Gbits/s,并且輸出側是40Gbits/s,可以出現數據被轉發到同一輸出的情況。因此,理想地在輸出應該有緩沖器用來處理負荷突發。盡管存儲器的大小有限,但是它們還是可以只處理超過40Gbits/s的第二個流量的片段。
通過從該位圖讀取字,該存儲器可以成批地標識空閑塊的地址。將位轉換成為地址,并且將該地址保持在有限的但是足夠大小的中央池中。這是一種數據解壓縮形式,其存儲效率比維持存儲器“自由列表”高(在隊列或鏈接列表中存儲所有可能的地址)。通過掃描該位圖、或者更直接地根據從存儲器和存儲器塊中讀取作為包達到的地址流,并且釋放其占用,可以將該中央池7加滿。如果中央池為滿,必須緩沖所返回的地址,并且將它們的信息插入到該位圖中。
高效包存儲——將信息放在存儲器中一般需要記錄存在新信息的更新狀態的系統開銷。需要一種平滑地以80Gbits/s將數據流入存儲器中的裝置,其并不需要通過中間狀態操作的幫助。到達塊1是管線處理器,其從用來創建包記錄的該包中提取信息,并且將該包切割成可以映射到存儲器塊中的切段。根據每一包的長度,適當地選擇用于其的段大小(并于是就是存儲器塊大小)。該包被轉發到存儲集線器,并且該包記錄被轉發到用于QoS處理和邏輯排隊的系統。所實施的每一不同存儲器塊大小要求單獨的本地(和中央)池。該本地池使得到達能夠立即將(分段的)包載入存儲器的自由塊中。這樣做唯一不重要的復雜性就是要將同一包的最后一個存儲器塊的地址插入到當前塊中。其是一個簡單快速的系統,不同于從本地池中彈出項,其不需要狀態操作。該系統的一個重要特征就是,其支持在存儲集線器的有效存儲通道上的負荷平衡。當補充本地池時,其等量地接收映射到不同物理存儲器通道中的存儲器塊的地址。接續塊于是可以通過循環方式寫到存儲器塊中,有效地分散了地址和數據帶寬負荷。在本地池變為空的偶爾情況下,需要由到達丟棄部分或全部的包。考慮記錄已經被部分地載入存儲器,但是該池臨時變空,例如因為存儲管理器中的小故障,或者因為其不能快速返回以接收新的批,該隊列可能完全裝滿,并因此導致存儲器溢出。在該情況下,不是修正問題,而是丟棄在到達塊處到達的其余包,并且還是通過處理器3發送該包記錄,但是將該記錄標記為“垃圾”。
因此還是要通過包記錄創建來報告執行情況,使得可以通過QoS處理器集中地管理事件處理。該處理器必須從存儲器中清除該包,并且必須報告所丟棄的任何包的詳情。這些都是QoS處理器用于普通操作所已經具有的功能。
本發明優選實施例的顯著特征是在派送單元5出現丟棄包的實際處理。記錄向平常一樣到達派送塊5中的隊列的報頭,但是因為標志,其可以看作垃圾記錄。數據還是要讀取,但是然后就丟棄,從而釋放分配給該數據項的存儲器,而不需要將該垃圾數據發送到線上。
高效的包恢復——由于其80Gbits/s的性能要求有挑戰性,所以故意地簡化該包存儲功能。結果,通過到達使用的“開環”法使得40G的包恢復功能變得更復雜。要點是,如果包存儲在存儲器中的多個塊中,每一個指向下一個,一個塊必須在可以發布下一個塊的請求之前讀取,并提取“下一個指針”。將包轉發到線上的該裝置是派送塊。其可以看作是一種類型的DMA引擎,其從QoS處理系統中獲取地址(包記錄),使用該地址從存儲器(存儲集線器)中獲取數據(包),并將該數據轉發到線上。存儲器標稱地被組織成為n(n=2)組塊——大塊和小塊。選擇塊的大小,以(a)通過將包大小分布中的峰值與塊大小匹配來優化存儲器的使用,和(b)檢索作為鏈接列表存儲的包更高效。于是,如果說所有的包具有64b/s和256b/s的峰值,可以選擇該塊大小來匹配。然后將非常大量的包裝入單個塊中,并且不需要分布在超過一個的塊之間。可以設置到達塊,以進行關于兩個大小塊中的哪一個的值調整,其地址保持在兩個本地池中,而不是圖1中所示的單個池6中,以分配所討論的包。當包被存儲在多個存儲器塊中時,在所發布的請求與返回的第一數據(其具有下一個塊的地址)之間存在延遲。如果塊足夠大,那么可以從第一個少數字節的塊中提取下一個指針,并且發布下一個請求,同時還從存儲器中讀取其余塊。通過選擇存儲器塊大小,使得大多數包可以存儲在單個存儲器塊中,就可以有效地聚合包恢復。在圖2的完全管線模式中(即在前一個請求的響應返回之前可以發送包請求)的存儲集線器中,可以通過數據報檢索單元(DRU)26提取包。如果每一包在單個塊中,可以管線傳輸該請求。然后所需要的就是通過圖3中的重排序緩沖器進行任何所需要的重新排序,如下將詳細解釋。然而,如果包存儲在鏈接列表中,在可以請求下一個包之前必須檢索每個包的數據,從而降低了檢索過程的速度。圖3表示數據報檢索單元(DRU)。記錄30到達控制器31,其從記錄32中提取指針并發布請求33,但是其知道該記錄是否是鏈接列表中的一個串。如果其不需要等待回來的響應,其可以發布下一個請求。其可以按照這種方式繼續。另一方面,如果其需要等待,其停止并建立環路。包的起始回來,并且提取指針。如果塊非常大,如幾百字節長,實際上保持該指針,從而在讀取控制器中讀取后幾個字節之前,塊的前幾個字節已經回來了。因此可以提取該指針,并循環回到該控制器的數據報指針FIFO34中,并且發布下一個包的請求。
一旦鏈接列表中的包已經返回,它們可以在重排序緩沖器36的存儲單元陣列35中重新排序。該存儲單元陣列等同于一系列鴿籠(pigeonhole),將數據按照其所讀出的順序存儲在其中。在等待數據填充到下一個空鴿籠的序列的末端有一個指針。只有接收到該數據,其可以向前移動,并且在其碰到缺口的時候,缺口表示該數據還沒有返回。
盡管緩沖器以固定的速率發送數據,在速率控制反饋輸入38的命令下對其進行速率控制37。在指針返回的緩沖器39中,提取已經讀取的塊的地址,使得可以釋放該塊,并且將指針輸出饋送到存儲器管理器。
于是,通過實施在多個不同的級別具有數據恢復的分層包檢索系統,可以有效地進行多塊包的恢復。派送請求完成來自數據報檢索單元的包。該DRU從各個存儲器通道的存儲器讀取控制器中提取存儲器塊,并重新組裝包。該存儲器讀取控制器通過突發讀取訪問從存儲器中提取字,通過標識該塊內的有效數據的起始和末端對該塊內容進行重新組裝。對于該DRU讀取的每一存儲器塊,將該塊地址傳送到存儲器管理器,使得可以更新相關的存儲器位圖(或者重新使用的塊地址)。現在返回到圖2,數據報丟棄單元27以類似于DRU的模式工作,但是不返回數據。其目的是更新存儲器管理器中的存儲器塊的狀態位。可以丟棄包,因為作為它們已經被標記為垃圾的結果就已經被截去了,因為數據輸入速率超過了存儲集線器和存儲器模塊的存儲容量,或者因為該流量處理機已經實施算法來隨機地丟棄包,以管理隊列。雖然與存儲集線器本身沒有關系,但是負責實施該實際丟棄功能的還是該數據報丟棄單元。然而在丟棄之前要從存儲器中讀取該包,只是要提取指針。這可以為存儲在單個塊中的包直接完成。存儲在多個塊中的包必須從存儲器中讀取,使得可以恢復“下一個塊”的指針。
現在考慮存儲器管理器,當存儲器用于存儲時,其通常靜態或動態地分配。然而在本發明中,在靜態和動態存儲器之間采取“中間結構”。如果一部分存儲器靜態地分配給一個隊列,而另一部分分配給另一個隊列,這樣的效率非常低,由于存在所有的流量都進入一個隊列的風險。如果動態地分配存儲器,系統在每一單個存儲器為滿的時候就不能夠接收數據。相反,該存儲器被分段成為較小的、位圖塊。
因此為這些塊保持位圖。其在該存儲器管理器中,優選地存儲在SRAM中,作為該存儲器中每一單個塊的記錄。其包括關于該塊的狀態的信息,諸如其是否被使用。可以通過從中央池7中讀取來刷新該本地池6。如果地址字是32位寬,其將從零至32個該有效存儲器的塊中返回標識。其以高效的方式提供任何有效的空閑存儲器。這可以通過使用自由列表的方式來代替,其帶有指向每個位置的指針的鏈接列表。該方法雖然十分徹底,但是在讀取指向第一個的指針時效率低,其表示該特定塊是自由的,并然后指向下一個自由塊。通過讀取該位圖,可以以高的速率讀取指針。在單個時鐘周期中,可以一次讀取32個自由塊的標識符,并將它們轉換成完整的地址。
在最差的情況下,即從存儲器的一端工作到另一端,一次讀取用于32個塊的標志,其可能是這樣的,在兩個或三個周期上遇到密集占據的存儲器部分,并且沒有明顯的標志。為了對付可能由于這種不測事件所引發的延遲,該存儲器管理器包括所謂的“捷徑”模式。當地址被DRU釋放并返回到存儲器管理器時,它們并非必須返回到位圖中。相反,可以將它們緩沖并循環使用。當接收到刷新本地池的請求時,該中央池并非將它們從位圖中除去。如果其FIFO已經緩沖有一批返回用于重發布的地址,其可以替代地釋放它們。
該存儲器管理器因此包括用于位圖的SRAM。當例如12位寬的地址從DRU到達時,其表示存儲器的某個地方剛剛被釋放。其勞動強度較大,必須將該地址轉換成為位,從SRAM中讀出該地址,插入該位并然后將其寫回。該讀取和寫操作包括32位字。專用FIFO保持該SRAM。已經解釋了,本地池需要周期性的刷新。因此替代從位圖中讀出32位字,將它們轉換成為指針,并然后將這些指針發送回到該池中,相反優選地使從DRU中發送回來的這些地址循環。
實施不同的系統——系統的劃分必須考慮現實情況,諸如裝置引腳數、功率消耗、硅工藝技術、PCB總數和布線等。通過存儲集線器訪問多個可獨立尋址的存儲器通道。該集線器將存儲器類型和該存儲器所需要的制作技術與系統的其它部分隔開。該集線器也可以使得實施大量可變數目的存儲器通道,由于(a)集線器封裝將用于存儲器通道實施的引線數目最大化;和(b)多個集線器可以與單個QoS處理芯片連接。參照圖4,該存儲集線器40通過窄的高速串行芯片至芯片的鏈路41、42與處理芯片(QoS和隊列芯片)連接。于是減少了與處理芯片的引線數目接口連接的存儲器的負擔,減少了整體的引線數目并減少了潛在的復雜ASIC的封裝成本。
優選實施例的概括和進一步詳情如圖1中所示,到達和派送提供了該包流中的叉點和結合點。它們將存儲集線器分開,其只簡單地分發從與存儲器連接的高速鏈路接收到的包組塊,或者按照要求從存儲器檢索包。
如圖2中所示,該總線用作DRU與存儲器通道控制器之間的縱橫連接器。這表示包可以存儲在多個存儲器通道上的存儲器塊中,并可以通過單個DRU被提取/重構。存在有多個DRU,以增加讀取帶寬,并為單線輸出(OC-768)系統提供負荷均衡。可替換地,在多線系統(例如4×10G以太網)中,每線分配單個DRU。
該存儲器管理器包含中央池和存儲器位圖。該存儲器位圖在SRAM中實施,并且典型地為256k字節,以支持組織為512字節存儲器塊的1G包存儲器。
如圖3中所示,該控制器監管讀取管線處理或從鏈接列表中的包恢復處理。
圖4所示為兩個可能的系統實施方式。存儲器的8個通道提供大約20GBytes/s的數據帶寬和300M每秒的隨機訪問。這滿足了40G流量處理(2×切換結構超高速)的要求。雖然可以看到,該整個系統可以在單個裝置中實施,如圖4(b)中所示,但是更實際地是在多個裝置上分布該功能,如圖4(a)中所示。存儲集線器的使用使得避免了在一個集線器上具有所有的存儲器。例如,兩個單芯片的范例允許每一芯片“擁有”半個通道。該到達塊然后可以集線器之間分布,并且該派送塊可以恢復來自該集線器的數據。可能需要平衡集線器之間的流量。
使用多個裝置有許多很好的理由,包括如果所有裝置并不圍繞單個高集成的處理器集群,就可以減輕物理分布和大量存儲器裝置的二級互連;該存儲器技術與該主要的專有處理邏輯分開。這樣能更新芯片,同時還可以維持該同一存儲器系統,并且該存儲器系統可以縮放,而不會過渡地增加引線的數目。現在,數據存儲與該處理系統存在物理分離和邏輯分離;如果存儲器通道緊密地圍繞單個芯片的周邊集群,難以觀察到電子特性、信號線分離和線終端上的緊規范;功率耗散更均勻地分散。單個裝置中高功率和引線數目的組合可能需要昂貴的封裝技術;在所使用的多個集線器可以被縮放以滿足該應用的存儲器要求(例如從10G放大到40G,以及更多)時,也可以適用該多芯片方法。
該存儲集線器可以設計為芯片內的邏輯塊,如圖4B中所示。然而,該存儲集線器的一個優點在于,存儲在存儲器中的隊列與對這些隊列所進行的處理邏輯之間沒有密切的關系。圖4A中所示的體系結構具有將該數據存儲功能的存儲器與處理側分離的優點,使得其非常容易地產生接口。在圖4A中,數據流入和流出該流集線器43。在該集線器與存儲集線器之間是用于指針的請求、返回的指針流41和送入的指針流以及返回的數據42。不需要復雜的握手處理。
權利要求
1.一種在通信系統中對可變大小的數據包進行排隊的方法,該方法包括從所述數據包產生預定固定大小的記錄部分并包含關于該包的信息,該包中的數據在數據部分中;在第一存儲器的獨立存儲器位置中存儲數據部分,并且每一數據部分彼此之間沒有聯系;在第二存儲器的一個或多個所管理的隊列中存儲記錄部分,其具有的固定大小存儲器位置的大小等于記錄部分的大小;其中第一存儲器比第二存儲器大,并且具有比其小的地址帶寬;并且第一存儲器中的存儲器位置被設置成具有多個不同大小的塊,并且根據該數據部分的大小將存儲器位置分配給該數據部分。
2.如權利要求1中所述的方法,其中在設置成兩個所述塊的第一存儲器中有兩個存儲器位置,一個用來接收相對較小的數據部分,并且另一個用來接收相對較大的數據部分,并且其中將太大而不能存儲在單個存儲器塊中的數據部分存儲為多個塊中的鏈接列表,其具有指向下一塊的指針,但是沒有任何從該包的一個數據部分指向下一數據部分的指針。
3.如權利要求1或權利要求2中所述的方法,其中該塊中的存儲器位置的大小與該通信系統中最通常出現的數據包的大小匹配。
4.如權利要求1至3中任何一個所述的方法,進一步包括從有效地址的中央池成批地從提供給其的有效地址的池中分配在所述第一存儲器中的存儲器位置。
5.如權利要求4中所述的方法,其中存儲器塊分隔成多個存儲器通道,該方法進一步包括順序地跨過通道將地址分配給數據部分,從而將數據部分的存儲分散在通道上。
6.如權利要求4中所述的方法,進一步包括以管線方式通過數據檢索單元從第一存儲器中讀取數據部分,數據檢索單元用于指導存儲器塊讀出數據部分,而不必等待前一個讀取完成,并且從該第一存儲器中釋放地址位置。
7.如前述權利要求中任何一個所述的方法,進一步包括在所接收到的包沒有足夠的存儲器的情況下,將記錄部分排隊,如同對應的數據部分存儲在第一存儲器中,順序讀出對應于所述數據包的記錄部分,設置標志用來表示將要丟棄所述包的數據部分,丟棄所述數據部分,并且釋放名義上分配給所丟棄數據部分的存儲器位置。
8.如權利要求6中所述的方法,進一步包括從地址的位圖中讀取地址位置,并且當在存儲器位置存儲的數據已經被讀出之后釋放該存儲器位置時,直接將所釋放的存儲器位置的地址發送到該池中。
9.一種用于對所接收到的數據包進行排隊的存儲集線器,包括到達塊,其用來從所述數據包產生預定固定大小的記錄部分并且包含關于該包的信息,該包中的數據在數據部分中;第一存儲器,用于在獨立存儲器位置中存儲數據部分,并且每一數據部分彼此之間沒有聯系;第二存儲器,用于在一個或多個所管理的隊列中存儲記錄部分,其具有的固定大小存儲器位置的大小等于記錄部分的大小;其中第一存儲器比第二存儲器大,并且具有比其小的地址帶寬;并且第一存儲器中的存儲器位置被設置成具有多個不同大小的塊,并且根據該數據部分的大小將存儲器位置分配給該數據部分。
10.如權利要求9中所述的存儲集線器,其中在設置成兩個所述塊的第一存儲器中有兩個存儲器位置,一個用來接收相對較小的數據部分,并且另一個用來接收相對較大的數據部分,并且其中將太大而不能存儲在單個存儲器塊中的數據部分存儲為多個決中的鏈接列表,其具有指向下一塊的指針,但是沒有任何從該包的一個數據部分指向下一數據部分的指針。
11.如權利要求9或權利要求10中所述的存儲集線器,其中該塊中的存儲器位置的大小與該通信系統中最通常出現的數據包的大小匹配。
12.如權利要求9至11中任何一個所述的存儲集線器,其中從有效地址的中央池成批地從提供給其的有效地址的池中分配在所述第一存儲器中的存儲器位置。
13.如權利要求12中所述的存儲集線器,其中該存儲器塊被分隔成多個存儲器通道,并且順序地跨過通道將地址分配給數據部分,從而將數據部分的存儲分散在通道上。
14.如權利要求12中所述的存儲集線器,進一步包括數據檢索單元,其用于以管線方式從第一存儲器中讀取數據部分,并指導存儲器塊讀出數據部分,而不必等待前一個讀取完成,并且從該第一存儲器中釋放地址位置。
15.如權利要求9至14中任何一個所述的存儲集線器,進一步包括標志設置裝置,使得在所接收到的包沒有足夠的存儲器的情況下,將記錄部分排隊,如同對應的數據部分存儲在第一存儲器中,順序地讀出對應于所述數據包的記錄部分,并且該標志設置裝置設置標志,使得丟棄所述包的數據部分,并且釋放名義上分配給所丟棄數據部分的存儲器位置。
16.如權利要求14中所述的存儲集線器,進一步包括地址位置的位圖和裝置,其可以工作以使得當在存儲器位置存儲的數據已經被讀出之后釋放該存儲器位置時,直接將所釋放的存儲器位置的地址發送到該池中。
全文摘要
一種在通信系統中對可變大小的數據包進行排隊的方法,包括從輸入數據包產生預定固定大小的記錄部分并包含關于該包的信息,該包中的數據在數據部分中;在第一存儲器2的獨立存儲器位置中存儲數據部分,并且每一數據部分彼此之間沒有聯系;在第二存儲器3的一個或多個所管理的隊列中存儲記錄部分,其具有的固定大小存儲器位置的大小等于記錄部分的大小;其中第一存儲器比第二存儲器大,并且具有比其小的地址帶寬;并且第一存儲器中的存儲器位置設置成具有多個不同大小的塊,并且根據該數據部分的大小將存儲器位置分配給該數據部分。方便地,在設置成兩個所述塊的第一存儲器中可以有兩個存儲器位置,一個用來接收相對較小的數據部分,并且另一個用來接收相對較大的數據部分,并且其中將太大而不能存儲在單個存儲器塊中的數據部分存儲為多個塊中的鏈接列表,其具有指向下一塊的指針,但是沒有任何從該包的一個數據部分指向下一數據部分的指針。塊中的存儲器位置優選地與該通信系統中最通常出現的數據包的大小匹配。優選地從有效地址的中央池成批地從提供給其的有效地址的池中分配在第一存儲器中的存儲器位置。
文檔編號H04L12/54GK1736066SQ200380108479
公開日2006年2月15日 申請日期2003年11月11日 優先權日2002年11月11日
發明者A·斯潘塞 申請人:克利爾斯皮德科技有限公司