專利名稱:緩存流數(shù)據(jù)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及網(wǎng)絡(luò)器件,更具體地說,本發(fā)明涉及對包含在分組緩沖器(packet buffer)中的數(shù)據(jù)進(jìn)行緩存。
背景技術(shù):
計(jì)算機(jī)網(wǎng)絡(luò)是在地理上分布的用于在多個(gè)諸如計(jì)算機(jī)之類的節(jié)點(diǎn)之間傳輸數(shù)據(jù)的多個(gè)互連通信鏈路的集合。很多種類型的計(jì)算機(jī)網(wǎng)絡(luò)都是可以獲得的,所述類型的范圍可以從局域網(wǎng)(LAN)到廣域網(wǎng)(WAN)。所述的多個(gè)節(jié)點(diǎn)一般根據(jù)預(yù)先定義的協(xié)議,通過交換離散的數(shù)據(jù)幀或者分組來進(jìn)行通信,這些協(xié)議例如是傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議(TCP/IP)或者網(wǎng)間分組交換(IPX)協(xié)議。
計(jì)算機(jī)網(wǎng)絡(luò)的拓?fù)淇梢杂泻艽蟛煌?。例如,該拓?fù)淇梢园瑔我坏腖AN,該LAN包含單一的中間節(jié)點(diǎn),該中間節(jié)點(diǎn)的類型例如是網(wǎng)絡(luò)集線器(hub),多個(gè)端節(jié)點(diǎn)附接到該網(wǎng)絡(luò)集線器。更復(fù)雜的網(wǎng)絡(luò)可以包括一個(gè)或者多個(gè)通過復(fù)雜的中間網(wǎng)絡(luò)而互連的局域網(wǎng),從而形成WAN,所述中間網(wǎng)絡(luò)包含多個(gè)其它類型的中間節(jié)點(diǎn),例如交換機(jī)或者路由器。后面提到的這些中間節(jié)點(diǎn)中的每一個(gè)一般都包含一個(gè)中心處理器,使得所述中間節(jié)點(diǎn)可以將數(shù)據(jù)分組沿著互連的鏈路從產(chǎn)生數(shù)據(jù)的源端點(diǎn)路由或者交換到被指定用于接收數(shù)據(jù)的目的端點(diǎn),等等。通常,這些中間節(jié)點(diǎn)使用分組緩沖器來暫時(shí)保存被節(jié)點(diǎn)處理的數(shù)據(jù)。
分組緩沖器通常包含一個(gè)或多個(gè)存儲器件,這些存儲器件被排列以形成一個(gè)或多個(gè)先進(jìn)先出(FIFO)的隊(duì)列,其中每個(gè)隊(duì)列與一個(gè)具體的輸入或者輸出線路相關(guān)聯(lián)。每個(gè)FIFO隊(duì)列的尺寸通常依賴于與該隊(duì)列相關(guān)聯(lián)的線路速度和中間節(jié)點(diǎn)處理一個(gè)分組所花費(fèi)的時(shí)間。例如,假設(shè)中間節(jié)點(diǎn)上的一條輸入線路具有1千兆位每秒(Gb/s)的線速(line rate),并且該節(jié)點(diǎn)處理一個(gè)分組所花費(fèi)的時(shí)間是250毫秒(ms)。那么可以通過線速乘以處理速度來確定FIFO隊(duì)列的尺寸,因此得到至少250兆位(Mb)的隊(duì)列尺寸。
與輸入或者輸出線路相關(guān)聯(lián)的線速一般定義了為了支持這些線路所需的分組緩沖器的最小要求存儲器帶寬。存儲器帶寬通常通過計(jì)算“隨機(jī)循環(huán)時(shí)間”(tRC)的倒數(shù)并且將這個(gè)結(jié)果乘以一次能夠被傳遞到該存儲器件的位數(shù)目來確定,其中隨機(jī)循環(huán)時(shí)間和包含分組緩沖器的存儲器件相關(guān)聯(lián)。例如,假設(shè)分組緩沖器可以處理64位的數(shù)據(jù)傳遞,并且包含緩沖器的存儲器件具有50納秒(ns)的tRC,那么分組緩沖器的存儲器帶寬是1.2Gb/s。
典型的中間節(jié)點(diǎn)可以包含很多線路卡,其中每個(gè)線路卡包含很多端口,并且每個(gè)端口包含一條輸入線路和一條輸出線路。此外,每條線路可以工作在1Gb/s或者更大的速度。因此,用于中間節(jié)點(diǎn)的分組緩沖器通常很大并且工作在很高的存儲器帶寬。例如,假設(shè)一個(gè)中間節(jié)點(diǎn)具有四個(gè)端口,每個(gè)端口有兩條線路,并且每條線路以1Gb/s的速度工作。還假設(shè)該中間節(jié)點(diǎn)250毫秒內(nèi)可以處理一個(gè)分組并且這些數(shù)據(jù)使用64位的數(shù)據(jù)傳輸量傳進(jìn)和傳出分組緩沖器。該分組緩沖器的存儲器帶寬必須是至少8Gb/s并且該存儲器件的tRC必須是8ns或者更少。此外,每個(gè)FIFO的尺寸必須是至少250Mb,從而產(chǎn)生的分組緩沖器的總尺寸是1千兆位(Gb)。
為了迎合與高速數(shù)據(jù)通信線路相關(guān)聯(lián)的高帶寬的要求,傳統(tǒng)的分組緩沖器設(shè)計(jì)要求只能使用高速存儲器件,例如靜態(tài)隨機(jī)存取存儲器(SRAM),因?yàn)楦咚俅鎯ζ骷膸捄蛅RC通常足夠迎合高速輸入/輸出線路提出的嚴(yán)格的要求。然而,高速存儲器件通常非常昂貴并且不夠密集,使其不能實(shí)用地應(yīng)用于這樣的實(shí)現(xiàn)方式。
用于實(shí)現(xiàn)高速高密度的分組緩沖器的替代技術(shù)已經(jīng)在S.Iyer等人的著作Analysis of a Memory Architecture for Fast Packet Buffers中有過描述。該技術(shù)采用了高速器件和低速高密度器件的組合,其中所述高速器件被排列作為頭部和尾部緩存而低速高密度器件(例如動態(tài)隨機(jī)存取存儲器(DRAM))被設(shè)置來保存FIFO隊(duì)列。此外,該技術(shù)采用了一種存儲器管理算法,該算法利用前視排列(look-ahead arrangement)來確定數(shù)據(jù)從低速器件中讀出,進(jìn)而補(bǔ)充到頭部緩存的順序。但是,該技術(shù)不能根據(jù)FIFO隊(duì)列的數(shù)目很好地?cái)U(kuò)展,因此可能不適用于包含大量隊(duì)列,例如多于512個(gè)隊(duì)列的系統(tǒng)。我們需要一種用來實(shí)現(xiàn)高速高密度分組緩沖器的技術(shù),該技術(shù)可以很好地?cái)U(kuò)展到采用大量隊(duì)列的系統(tǒng)。
發(fā)明內(nèi)容
本發(fā)明包含一種利用高速和低速存儲器件的組合來實(shí)現(xiàn)高速高密度分組緩沖器的技術(shù),還包含一種能夠支持大量隊(duì)列的緩存補(bǔ)充技術(shù)。這種新型分組緩沖器由多個(gè)FIFO隊(duì)列組成,其中每個(gè)FIFO隊(duì)列與一條具體的輸入或者輸出線路相關(guān)聯(lián)。每個(gè)隊(duì)列包含駐留于高速存儲器中的高速緩存部分以及駐留于低速高密度存儲器中的低速高密度部分。所述高速緩存部分保存著與新型FIFO隊(duì)列的頭部和/或尾部相關(guān)聯(lián)的FIFO數(shù)據(jù)。所述低速高密度部分保存著那些沒有保存在高速緩存部分的FIFO數(shù)據(jù)。
每個(gè)FIFO隊(duì)列與保存著該隊(duì)列特定信息的目錄條目(directoryentry)相關(guān)聯(lián)。所述信息包括與該隊(duì)列相關(guān)聯(lián)的頭部和尾部信息,以及與保存在該FIFO的高速部分中的數(shù)據(jù)量相關(guān)的信息。使用包含在所述目錄中的信息可以確定何時(shí)和怎樣補(bǔ)充FIFO隊(duì)列的高速部分,等等。
在本發(fā)明的一個(gè)實(shí)施例中,F(xiàn)IFO隊(duì)列的高速部分只保存與該隊(duì)列頭部相關(guān)聯(lián)的數(shù)據(jù)。被寫到隊(duì)列尾部的數(shù)據(jù)被寫入該隊(duì)列的低速部分。數(shù)據(jù)在其可以從頭部緩存中獲得時(shí)被從頭部緩存中讀出,如果頭部的緩存部分已被耗盡,數(shù)據(jù)則從低速部分讀出。只要當(dāng)數(shù)據(jù)向FIFO隊(duì)列寫入或者從FIFO隊(duì)列讀出的時(shí)候,都根據(jù)需要來補(bǔ)充頭部緩存。
有利的是,本發(fā)明的技術(shù)不完全依賴于高速存儲器件就可以實(shí)現(xiàn)高速高密度的分組緩沖器。更確切地說,根據(jù)本發(fā)明,所述高速高密度的分組緩沖器的其中一部分可以利用廉價(jià)的低速高密度的器件,例如商業(yè)型DRAM來實(shí)現(xiàn)。
結(jié)合附圖參考下面的說明可以更好的理解本發(fā)明的上述以及更多優(yōu)點(diǎn)。附圖中相同的標(biāo)號指的是同樣的或者功能上類似的元件圖1是利用本發(fā)明可以有利地使用的網(wǎng)絡(luò)的示意框圖;圖2是利用本發(fā)明可以有利地使用的中間節(jié)點(diǎn)的部分示意框圖;圖3是可以被用來實(shí)現(xiàn)本發(fā)明的網(wǎng)絡(luò)服務(wù)引擎(NSE)的部分示意框圖;圖4是可以被用來實(shí)現(xiàn)本發(fā)明的分組緩沖器的示意框圖;圖5是本發(fā)明可以使用的QID目錄條目的示意圖;圖6是本發(fā)明可以使用的請求的示意圖;圖7是依照本發(fā)明可以被用來使分組入列到FIFO隊(duì)列和從FIFO隊(duì)列中出列的方法的高級流程圖;圖8A-8B是可以被用來實(shí)現(xiàn)本發(fā)明的方法的流程圖;和圖9示出了采用頭部緩存和尾部緩存的本發(fā)明的實(shí)施例。
具體實(shí)施例方式
圖1是利用本發(fā)明可以有利地使用的計(jì)算機(jī)網(wǎng)絡(luò)100的示意框圖。計(jì)算機(jī)網(wǎng)絡(luò)100包含連接到多個(gè)節(jié)點(diǎn)的多個(gè)通信鏈路和區(qū)段(segment)的集合,所述節(jié)點(diǎn)例如是端節(jié)點(diǎn)110和中間節(jié)點(diǎn)200。所述網(wǎng)絡(luò)鏈路和區(qū)段可以包括通過例如網(wǎng)絡(luò)交換機(jī)或者路由器的中間節(jié)點(diǎn)200而互連的局域網(wǎng)(LAN)120、例如因特網(wǎng)270的廣域網(wǎng)(WAN)以及WAN鏈路130,從而形成具有多個(gè)計(jì)算機(jī)節(jié)點(diǎn)的網(wǎng)絡(luò)。這些網(wǎng)絡(luò)節(jié)點(diǎn)根據(jù)事先定義的一組協(xié)議通過交換數(shù)據(jù)分組進(jìn)行通信,這些協(xié)議例如是傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議(TCP/IP)和網(wǎng)間分組交換(IPX)協(xié)議。
圖2是利用本發(fā)明可以有利地使用的中間節(jié)點(diǎn)(交換機(jī))200的部分框圖。中間節(jié)點(diǎn)200的一個(gè)說明示例是Cisco 7300路由器,該路由器可以從加州San Jose的Cisco公司獲得。說明性的中間節(jié)點(diǎn)200是一臺小型中檔(mid-range)路由器,該路由器提供了高可用性和高性能,并且可以光速傳遞高接觸(high-touch)IP服務(wù)。中間節(jié)點(diǎn)200支持多種通信協(xié)議的組合,這些通信協(xié)議包括異步傳輸模式(ATM)、以太網(wǎng)、快速以太網(wǎng)、千兆位以太網(wǎng)和多通道(multi-channel)T3。中間節(jié)點(diǎn)200包含多個(gè)板卡,這些板卡包括通過交換機(jī)光纖背板220互連的線路卡210和網(wǎng)絡(luò)服務(wù)引擎(NSE)卡300。此外,每塊板卡具有背板接口250,該接口將板卡通過接口連接到背板220,并且使板卡可以向背板220發(fā)送以及從背板220接收各種數(shù)據(jù)和控制信號,等等。
線路卡210將中間節(jié)點(diǎn)連接(通過接口連接)到網(wǎng)絡(luò)100,其中的中間節(jié)點(diǎn)或者可以被配置成交換機(jī)200。為了這個(gè)目的,線路卡210使用各種協(xié)議(例如OC-3、OC-12、快速以太網(wǎng)、T3),分別通過輸入端口215和輸出端口217而在網(wǎng)絡(luò)上接收和發(fā)送數(shù)據(jù)。線路卡210把從網(wǎng)絡(luò)100上接收的數(shù)據(jù)轉(zhuǎn)發(fā)到背板220,也將從背板220接收到的數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)100。
交換機(jī)光纖背板220包含若干邏輯和點(diǎn)到點(diǎn)互連背板,其提供了線路卡210和NSE 300之間的接口。也就是說,背板220提供了多個(gè)板卡間的互連,使得數(shù)據(jù)和信號可以從一塊板卡傳遞到另一塊板卡上。
NSE 300適于提供對進(jìn)入和外出分組的處理。圖3是NSE 300的部分框圖,NSE 300包括背板接口邏輯250d、集群互連邏輯320、處理器370、處理器存儲器360、分組處理邏輯350、端口接口邏輯380、一個(gè)或者多個(gè)物理端口385、流量管理器330和分組緩沖器400。背板接口邏輯250d包含使NSE 300可以通過背板220進(jìn)行通信的邏輯。例如,背板接口邏輯250d包含使NSE 300可以使用各種數(shù)據(jù)和控制信號與連接到背板220上的其他板卡進(jìn)行通信的邏輯。
集群互連邏輯320包含將背板接口邏輯250d和處理器370通過接口連接到流量管理器330的邏輯。優(yōu)選地,集群互連實(shí)現(xiàn)在為現(xiàn)場可編程門陣列(FPGA)中,該FPGA被配置成使得流量管理器330可以向背板220和處理器370發(fā)送數(shù)據(jù)以及從背板220和處理器370接收數(shù)據(jù)。
處理器370包含可以執(zhí)行指令和產(chǎn)生存儲器請求的處理元件和邏輯。本發(fā)明中可以有利地使用的處理器370的一個(gè)示例是BCM1250處理器,該處理器可以從加州Irving的Broadcom公司獲得。處理器存儲器360是計(jì)算機(jī)可讀介質(zhì),它保存著數(shù)據(jù)和包含可執(zhí)行指令的軟件例程。這些數(shù)據(jù)和軟件例程使處理器370可以(適于)執(zhí)行各種功能,例如管理交換機(jī)200,以及路由處理。處理器存儲器360可以包含一個(gè)或者多個(gè)存儲器件(未示出),它們可以存儲可執(zhí)行指令和數(shù)據(jù)。優(yōu)選地,這些存儲器件是工業(yè)標(biāo)準(zhǔn)的存儲器件,例如動態(tài)隨機(jī)存取存儲器(DRAM)器件,這些器件可以從愛達(dá)荷州Boise的Micron技術(shù)公司獲得。
端口接口邏輯380包含通過接口把流量管理器330連接到物理端口385的邏輯。為了這個(gè)目的,端口接口邏輯380包括使流量管理器330可以分別向端口385傳送和從端口385接收分組的邏輯。端口385包含將NSE 300物理上通過接口連接到網(wǎng)絡(luò)100的邏輯。
分組處理邏輯350包含邏輯和處理元件,其可以將NSE 300已經(jīng)接收到的分組進(jìn)行分類,等等。分組處理邏輯350包含下述邏輯,其被配置來檢查接收到分組的分組頭部并且將每個(gè)分組與包含在分組緩沖器400中的一個(gè)FIFO隊(duì)列相關(guān)聯(lián)。優(yōu)選地,分組處理邏輯350包含在一系列專用集成電路(ASIC)中。
流量管理器330包含邏輯和存儲器元件,其被配置來將分組入列到包含在分組緩沖器400中的FIFO隊(duì)列405以及將分組從該隊(duì)列中出列,等等。此外,流量管理器330被配置成用于分配和釋放包含在分組緩沖器的外部DRAM中的多個(gè)存儲器塊,并且向分組緩沖器400發(fā)送命令,從而指導(dǎo)緩沖器400從FIFO隊(duì)列405中讀取或者向該隊(duì)列中寫入分組。為了這個(gè)目的,流量管理器330包括內(nèi)部分組存儲器(IPM)332、隊(duì)列描述符存儲器(QDM)338、調(diào)度程序(SCH)336和隊(duì)列管理器(QM)334。內(nèi)部分組存儲器332包含邏輯和存儲器元件,其可以被用來暫時(shí)保存從交換機(jī)光纖背板220和物理端口385接收到的分組。隊(duì)列描述符存儲器338保存隊(duì)列405中的每個(gè)隊(duì)列專有的信息。所述信息包括指向每個(gè)隊(duì)列405的頭部和尾部指針,以及每個(gè)隊(duì)列的尺寸。調(diào)度程序336包含邏輯和處理元件,其可以執(zhí)行流量管理以及為NSE 300通過交換機(jī)光纖背板220和端口385發(fā)送的流量的整形。隊(duì)列管理器334包含邏輯和處理元件,其可以被用來管理包含在分組緩沖器400中的FIFO隊(duì)列405中的每個(gè)隊(duì)列,等等。優(yōu)選地,流量管理器330被配置成用于支持8192個(gè)FIFO隊(duì)列。
分組緩沖器400包含邏輯和存儲器元件,其可以依據(jù)本發(fā)明向FIFO隊(duì)列405寫入以及從FIFO隊(duì)列405中讀出分組。每個(gè)FIFO隊(duì)列405包含低速部分492(圖4)和高速部分482。此外,每個(gè)隊(duì)列都和一個(gè)隊(duì)列標(biāo)識符(QID)相關(guān)聯(lián)。優(yōu)選地,分組緩沖器400被配置成用于支持8192個(gè)FIFO隊(duì)列。
具體操作是這樣的,源線路卡210從網(wǎng)絡(luò)100上接收進(jìn)入的分組,并且通過交換機(jī)光纖背板220將其發(fā)送到NSE 300,在NSE 300上,背板接口邏輯250d接收這些分組,并通過集群互連邏輯320將其傳送給流量管理器330以待進(jìn)一步處理。或者,也可以通過物理端口385從網(wǎng)絡(luò)100上接收分組,并且通過端口接口邏輯380將其傳送到流量管理器330。流量管理器330將每個(gè)分組都存儲在內(nèi)部分組存儲器332中并且通知分組處理邏輯350。分組處理邏輯350檢查分組的頭部,選擇一個(gè)用來接收該分組的FIFO隊(duì)列405,并且將該FIFO隊(duì)列的QID傳遞到隊(duì)列管理器334。根據(jù)需要,隊(duì)列管理器334分配DRAM 490中的一塊或者多塊(圖4),將分配的塊與該QID相關(guān)聯(lián)并且向分組緩沖器400發(fā)送一系列命令,用于將分組放置到已分配的DRAM中。然后隊(duì)列管理器334通知調(diào)度程序336安排分組出列的時(shí)間。當(dāng)分組需要出列時(shí),調(diào)度程序336會通知隊(duì)列管理器334。隊(duì)列管理器334接著向分組緩沖器400發(fā)送一系列命令,用于使分組出列。然后,出列的分組被處理并且被發(fā)送到背板220或者一個(gè)或多個(gè)物理端口385上。
本發(fā)明包含一種技術(shù),其可以利用高速和低速存儲器件的組合來實(shí)現(xiàn)高速高密度的分組緩沖器。所述新型的分組緩沖器由多個(gè)FIFO隊(duì)列所組成,其中每個(gè)FIFO隊(duì)列和一個(gè)特定的輸入或者輸出線路相關(guān)聯(lián)。每個(gè)隊(duì)列包含駐留于高速存儲器中的高速緩存部分和駐留于低速高密度存儲器中的低速高密度部分。所述高速緩存部分包含與這種新型FIFO隊(duì)列的頭部和/或尾部相關(guān)聯(lián)的FIFO數(shù)據(jù)。所述低速高密度的部分包含那些未包括在高速緩存部分中的FIFO數(shù)據(jù)。
圖4是可以被用來實(shí)現(xiàn)本發(fā)明的分組緩沖器400的詳細(xì)的部分示意框圖。分組緩沖器400包含接口邏輯410、命令譯碼邏輯420、讀取請求隊(duì)列邏輯430、隊(duì)列標(biāo)識符(QID)目錄460、隊(duì)列頭部(Qhead)緩存480、寫入分組隊(duì)列邏輯450、DRAM控制器470和DRAM 490。優(yōu)選地,接口邏輯410、命令譯碼邏輯420、讀取請求隊(duì)列430、QID目錄460、Qhead緩存480、寫入分組隊(duì)列450和DRAM控制器470都包含在一個(gè)或者多個(gè)專用集成電路中。
接口邏輯410包含下述邏輯,其被配置來將分組緩沖器400通過接口連接到流量管理器330。為了這個(gè)目的,接口邏輯410產(chǎn)生必需的數(shù)據(jù)和控制信號,從而可以在流量管理器330和分組緩沖器400之間傳遞請求和數(shù)據(jù)。命令譯碼邏輯420被連接到接口邏輯410、讀取請求隊(duì)列邏輯430和寫入分組隊(duì)列邏輯450,并且包含被配置的邏輯,用于處理接口邏輯410接收到的請求。如果請求中指定了讀取命令,那么邏輯420將請求轉(zhuǎn)發(fā)到讀取請求隊(duì)列邏輯430;否則如果指定的是寫入命令,那么邏輯420將請求和數(shù)據(jù)轉(zhuǎn)發(fā)到寫入分組隊(duì)列邏輯450。
讀取請求隊(duì)列430包含邏輯和存儲器元件,其被配置來保存和處理命令譯碼邏輯420接收到的讀取命令。讀取請求隊(duì)列430包含F(xiàn)IFO命令隊(duì)列432和命令譯碼邏輯434,該命令譯碼邏輯被配置成用于在命令到達(dá)命令隊(duì)列432的頭部的時(shí)候處理這個(gè)命令。優(yōu)選地,F(xiàn)IFO命令隊(duì)列432是一個(gè)32條目乘以72位的FIFO隊(duì)列,該隊(duì)列被配置成用于保存最多32個(gè)讀取請求。
相似地,寫入分組隊(duì)列450包含邏輯和存儲器元件,其被配置來保存和處理命令譯碼邏輯420接收到的寫入命令和數(shù)據(jù)。寫入分組隊(duì)列450包含F(xiàn)IFO命令隊(duì)列452、命令譯碼邏輯454和寫入分組緩沖器456,該命令譯碼邏輯454被配置成用于在命令到達(dá)命令隊(duì)列452的頭部的時(shí)候處理這個(gè)命令,寫入分組緩沖器456被配置成用于保存與命令隊(duì)列452中的命令相關(guān)聯(lián)的數(shù)據(jù)。優(yōu)選地,寫入分組隊(duì)列450是一個(gè)16條目的隊(duì)列,該隊(duì)列被配置成用于保存最多16個(gè)寫入請求。
DRAM控制器470包含下述邏輯,其被配置來處理寫入分組隊(duì)列450和QID目錄邏輯460發(fā)出的請求。為了這個(gè)目的,DRAM控制器470包含的邏輯譯碼這些請求并且向包含在DRAM 490中的FIFO隊(duì)列405的低速部分492傳遞或者從該部分接收與這些請求相關(guān)聯(lián)的數(shù)據(jù),所傳遞的數(shù)據(jù)優(yōu)選地作為32字節(jié)塊的形式來傳遞。
DRAM 490包含邏輯和存儲器元件,其被配置來保存每個(gè)FIFO隊(duì)列405的低速部分492,該低速部分492優(yōu)選地作為一系列一個(gè)或者多個(gè)4096字節(jié)塊進(jìn)行保存。優(yōu)選地,所述存儲器元件包含能夠保存分組數(shù)據(jù)的高密度商業(yè)型存儲器件,例如可以從加州San Jose的Infineon技術(shù)公司獲得的縮短延遲DRAM(RLDRAM)器件。
Qhead緩存480包括邏輯和存儲器元件,其被配置來保存FIFO隊(duì)列405的高速部分482,在優(yōu)選實(shí)施例中,該高速部分就是隊(duì)列頭部的前1024個(gè)字節(jié)。優(yōu)選地,Qhead緩存480包括高速高帶寬的嵌入式存儲器宏或者外部存儲器件,例如可以從愛達(dá)荷州Boise的Micron技術(shù)公司獲得的靜態(tài)隨機(jī)存取存儲器(SRAM)器件。
QID目錄460包含邏輯和存儲器元件,其被配置來向DRAM控制器470發(fā)出請求并且保存FIFO隊(duì)列405的專有信息,等等。QID目錄460在讀取請求隊(duì)列430和寫入分組隊(duì)列450的指導(dǎo)下,向DRAM控制器470發(fā)送讀取請求,用于補(bǔ)充Qhead緩存480。此外QID目錄460還包含數(shù)據(jù)庫462,該數(shù)據(jù)庫被配置用來保存FIFO隊(duì)列405專有的信息。優(yōu)選地,數(shù)據(jù)庫462以一系列8192個(gè)條目的形式組織起來,其中每個(gè)條目與一個(gè)具體的FIFO隊(duì)列405相關(guān)聯(lián)。
圖5是包含在QID目錄數(shù)據(jù)庫462中的典型的條目500的示意圖。條目500包含奇偶校驗(yàn)字段510、新條目字段520、Qtail(隊(duì)列尾)偏移字段530、Qtail塊地址字段540、Qhead末端偏移字段550、Qhead起始端偏移字段560和Qhead塊地址字段570。奇偶校驗(yàn)字段510包括1位的數(shù)值,該數(shù)值代表?xiàng)l目500的總的奇偶校驗(yàn)。新條目字段520包含1位的標(biāo)記字段,該字段指示該隊(duì)列是否正在進(jìn)行第一次數(shù)據(jù)入列。
Qtail塊地址字段540保存了一個(gè)指針,該指針是DRAM 490中的與隊(duì)列405的尾部相關(guān)聯(lián)的4096字節(jié)塊的地址,Qtail偏移字段530保存的是Qtail塊地址字段540所指向的所述4096字節(jié)塊內(nèi)部的字節(jié)偏移。Qtail塊地址540和Qtail偏移530一起產(chǎn)生隊(duì)列尾部指針535,該指針是指向隊(duì)列405尾部字節(jié)地址的指針。
Qhead塊地址字段570保存了一個(gè)指針,該指針是DRAM 490中的與隊(duì)列的頭部相關(guān)聯(lián)的4096字節(jié)塊的地址。Qhead起始端偏移字段560保存的是Qhead塊地址字段570所“指向”(引用)的所述4096字節(jié)塊內(nèi)部的字節(jié)偏移。Qhead塊地址570和Qhead起始端偏移560一起產(chǎn)生隊(duì)列的頭部指針565,該指針是指向隊(duì)列頭部字節(jié)地址的指針。
Qhead末端偏移字段550保存的是Qhead塊地址字段570所指向的塊內(nèi)被包括在隊(duì)列405的高速部分482中的最后一個(gè)字節(jié)的字節(jié)偏移。Qhead起始端偏移和Qhead末端偏移之間的差值給出當(dāng)前在相關(guān)聯(lián)的FIFO隊(duì)列405的高速部分中的字節(jié)數(shù)目。
例如,假設(shè)流量管理器330需要將位于內(nèi)部分組存儲器332中的2048字節(jié)的分組放置(入列)到FIFO隊(duì)列405a中,并且根據(jù)調(diào)度程序336的決定在之后的某一時(shí)刻使該分組出列。還假設(shè)分組處理邏輯350已經(jīng)檢查過分組并且向流量管理器330提供了一個(gè)與FIFO隊(duì)列405a相關(guān)聯(lián)的QID,并且與隊(duì)列405a相關(guān)聯(lián)的QID條目500的新條目字段520指示該隊(duì)列正在進(jìn)行第一次數(shù)據(jù)入列。圖7是流量管理器330可以用來將分組入列到FIFO隊(duì)列405,為分組安排出列時(shí)間并且使分組出列的步驟序列的高級流程圖。該序列從步驟702開始并且前進(jìn)到步驟704,在步驟704中,隊(duì)列管理器334在DRAM 490中分配一個(gè)4096字節(jié)的塊,并且在隊(duì)列405a的隊(duì)列描述符存儲器條目中更新隊(duì)列尾部指針和隊(duì)列尺寸以反映這個(gè)分組。在步驟706,隊(duì)列管理器334產(chǎn)生一個(gè)請求600,從而將來自于內(nèi)部分組存儲器332的分組數(shù)據(jù)傳遞到隊(duì)列405a。
圖6是本發(fā)明可以用到的請求600的示意圖。請求600包含命令字段610、地址字段630、傳遞尺寸字段650和隊(duì)列標(biāo)識符(QID)字段660。命令字段610指定分組緩沖器400要執(zhí)行的操作,例如讀取或者寫入數(shù)據(jù)。地址字段630指定要讀取或者寫入的數(shù)據(jù)在DRAM中的位置。優(yōu)選地,該字段是28位的字段,用于指定32字節(jié)塊的地址。傳遞尺寸字段650指定要傳遞的數(shù)據(jù)量。優(yōu)選地,該字段是7位的字段,用于指定要傳遞的32字節(jié)塊的數(shù)目。QID字段660指定FIFO隊(duì)列405。
流量管理器330產(chǎn)生請求600,該請求在命令字段610指明寫入命令,在地址字段630指明與所分配的塊相關(guān)聯(lián)的地址,在傳遞尺寸字段650指明分組的尺寸并且在QID字段660指明用于隊(duì)列405a的QID。然后如步驟708所指出的,流量管理器330將請求600和數(shù)據(jù)一起發(fā)送到分組緩沖器400。
圖8A和8B的流程圖說明了依據(jù)本發(fā)明使用高速和低速存儲器件使得分組緩沖器(例如分組緩沖器400)可以實(shí)現(xiàn)為高速高密度分組緩沖器的步驟序列。該序列從步驟802開始并且前進(jìn)到步驟804,在步驟804中,請求600和相關(guān)數(shù)據(jù)在接口邏輯410處被接收并且被傳遞到命令譯碼邏輯420。接下來在步驟806,命令譯碼邏輯檢查命令字段610并且確定是否指明了讀取命令。如上面所指出的,命令字段610指示的是寫入命令,因此序列進(jìn)行到步驟810,在該步驟,包含數(shù)據(jù)的請求被傳遞到寫入分組隊(duì)列450并且數(shù)據(jù)被放置到緩沖器456中。
在步驟810,寫入分組隊(duì)列450指導(dǎo)DRAM控制器470將包含在緩沖器456中的與請求600相關(guān)的數(shù)據(jù)寫入隊(duì)列405a的低速部分492a中由地址字段630所指定的位置。接下來在步驟812,為了反映剛剛已經(jīng)被加到隊(duì)列405a中去的分組,寫入分組隊(duì)列450更新用于隊(duì)列405a的QID目錄條目500。
在步驟813-814,寫入分組隊(duì)列450檢查隊(duì)列450a的QID目錄并且確定具有緩存的高速部分(下文中的“Qhead緩存482a”)是否需要被補(bǔ)充。具體地說,就是檢查新條目字段520,如果字段520指示隊(duì)列405a正在進(jìn)行數(shù)據(jù)的第一次入列,那么寫入分組隊(duì)列450“得出結(jié)論”緩存482a需要被補(bǔ)充,并且清空新條目字段520以指示隊(duì)列正在進(jìn)行數(shù)據(jù)的第一次入列,并且前進(jìn)到步驟816。否則,就計(jì)算出Qhead末端偏移字段550和Qhead起始端偏移字段560之間的差值。如果這個(gè)差值小于緩存482a的大小(即1024字節(jié)),那么寫入分組隊(duì)列450同樣地得出緩存482a需要被補(bǔ)充的結(jié)論并且前進(jìn)到步驟816。否則,緩存482a就不需要被補(bǔ)充,即緩存已滿,并且所述序列進(jìn)行到序列結(jié)尾的步驟880。
因?yàn)樾聴l目字段指示隊(duì)列正在進(jìn)行數(shù)據(jù)的第一次入列,所以新條目字段被清空,并且所述序列前進(jìn)到步驟816,在步驟816中,寫入分組隊(duì)列450確定Qhead塊地址570指出的塊地址是否與Qtail塊地址540指出的塊地址相同,即隊(duì)列405a是否包含在單一的塊內(nèi)。如果Qhead緩存482a不是包含在單一的塊內(nèi),那么該序列前進(jìn)至步驟820,在步驟820中,Qhead緩存482a被填充,直到緩存482a被充滿或者已到達(dá)Qhead塊地址所570指向的塊的末端。假設(shè)隊(duì)列405a包含在單一的塊內(nèi),則該序列前進(jìn)到步驟818,在步驟818中,緩存482a被隊(duì)列405a的低速部分492a中包含的數(shù)據(jù)所補(bǔ)充,直到緩存482a被充滿或者已到達(dá)隊(duì)列的尾部地址。在步驟822,寫入分組隊(duì)列450更新Qhead末端偏移550以反映放置在Qhead緩存482a中的數(shù)據(jù)量。然后該序列前進(jìn)到序列結(jié)尾的步驟880。
再一次參考圖7,在步驟712,隊(duì)列管理器334利用調(diào)度程序336安排分組在之后的某一時(shí)刻出列。如步驟714指出的,當(dāng)調(diào)度程序336確定分組準(zhǔn)備出列時(shí),它會通知隊(duì)列管理器334。然后在步驟716,隊(duì)列管理器334按照前面描述的方式產(chǎn)生一個(gè)請求600,用于從FIFO隊(duì)列405a中讀取分組。更具體地說,隊(duì)列管理器334從描述符存儲器338中讀取與隊(duì)列405a相關(guān)聯(lián)的條目,并且使用該信息產(chǎn)生請求600,該請求在命令字段610中指明讀取命令,在地址字段630指明隊(duì)列的頭部地址,在傳遞尺寸字段650指明分組的尺寸(即2048字節(jié)),以及在QID字段660指明與隊(duì)列405a相關(guān)聯(lián)的QID。然后如步驟718指出的,請求600被發(fā)送到分組緩沖器400。
在步驟720,分組緩沖器400從隊(duì)列405a中讀取數(shù)據(jù)。更具體地說,再一次參考圖8A,在步驟804,接口邏輯410接收請求600,并將該請求傳送到命令譯碼邏輯420,如步驟806指出的,在命令譯碼邏輯420,該請求被檢查,以確定該請求是否指明讀取命令。因?yàn)樵撜埱蟀x取命令,所以該序列前進(jìn)到步驟807,在步驟807,該請求被轉(zhuǎn)發(fā)到讀取請求隊(duì)列430。然后,該序列前進(jìn)到步驟840(圖8B),在步驟840,讀取請求隊(duì)列430檢查隊(duì)列405a的QID目錄條目500并且確定Qhead緩存482a是否為空,即沒有包含數(shù)據(jù)。優(yōu)選地,通過計(jì)算隊(duì)列405a的Qhead起始端偏移560與Qhead塊地址570之間的差值來做出這個(gè)確定,如果該差值為零,則可得出Qhead緩存482a為空的結(jié)論。如果緩存482a為空,該序列則前進(jìn)至步驟844,在步驟844,讀取請求隊(duì)列430指示DRAM控制器470從隊(duì)列405a的低速部分492a獲得(讀取)分組,并且序列前進(jìn)至步驟852。
如上面所描述的,緩存482a不為空,因此該序列前進(jìn)到步驟846,在步驟846,讀取請求隊(duì)列430指示QID目錄從Qhead緩存482a中獲得(讀取)數(shù)據(jù)。在接下來的步驟848,讀取請求隊(duì)列430確定從Qhead緩存482a中讀取的全部數(shù)據(jù)是否足夠滿足該請求,即從Qhead緩存482a中讀取的數(shù)據(jù)量是否和請求600的傳遞尺寸字段650指定的數(shù)據(jù)量相同。如果相同,則該序列前進(jìn)到步驟852。
因?yàn)镼head緩存482a只提供1024字節(jié)的數(shù)據(jù),這比傳遞尺寸字段650指定的尺寸要小,所以該序列前進(jìn)至步驟850,在步驟850,讀取請求隊(duì)列430指示DRAM控制器470從FIFO隊(duì)列405a的低速部分492a讀取剩余數(shù)據(jù),即1024字節(jié)。
在步驟852,讀取請求隊(duì)列430通過更新Qhead起始端偏移字段560來更新與隊(duì)列405a相關(guān)聯(lián)的QID目錄條目500,從而反映已經(jīng)從隊(duì)列405a中讀取的數(shù)據(jù)量。
在接下來的步驟856,讀取請求隊(duì)列430確定FIFO隊(duì)列405a中是否有數(shù)據(jù)來補(bǔ)充Qhead緩存482a。更具體地說,讀取請求隊(duì)列430通過將Qhead塊地址570與Qhead起始端偏移560相加來計(jì)算隊(duì)列的頭部指針,通過將Qtail塊地址540與Qtail偏移530相加來計(jì)算隊(duì)列的尾部指針,并將所述頭部指針和尾部指針相比較來確定它們是否相等。如果在隊(duì)列405a中沒有數(shù)據(jù),該序列則前進(jìn)至步驟858,在步驟858要執(zhí)行一項(xiàng)檢查,確定Qhead塊地址570和Qtail塊地址540是否指向同一個(gè)塊。如果是,讀取請求隊(duì)列430則指示QID目錄460去指示DRAM控制器470從DRAM490補(bǔ)充Qhead緩存482a,直到緩存482a被充滿或者已到達(dá)隊(duì)列的尾部地址,如步驟860指出的。否則如果Qhead塊地址570與Qtail塊地址540不在同一個(gè)塊內(nèi),則指示DRAM控制器補(bǔ)充緩存482a,直到緩存482a被充滿或者已到達(dá)塊的末端,如步驟862指出的。然后該序列前進(jìn)至序列的結(jié)尾步驟880。因?yàn)殛?duì)列405a中包含的所有數(shù)據(jù)都已被讀取,并且隊(duì)列的頭部和尾部指針相等,所以讀取請求隊(duì)列430得出隊(duì)列405a中沒有數(shù)據(jù)用來補(bǔ)充緩存482a的結(jié)論,并且因此該序列前進(jìn)至序列的結(jié)尾步驟880。
再一次參考圖7,在步驟722,隊(duì)列管理器334檢查隊(duì)列描述符存儲器338中的隊(duì)列405a的條目,并且確定被分配的塊中的所有數(shù)據(jù)都已經(jīng)被讀取,即該塊不再使用,并且因此釋放該塊。然后該序列在步驟724結(jié)束。
應(yīng)該注意的是在本發(fā)明上述實(shí)施例中,F(xiàn)IFO隊(duì)列的高速部分只包含一個(gè)隊(duì)列頭部緩存;然而,本發(fā)明不局限于此。更確切地說,在本發(fā)明的其他實(shí)施例中,高速部分包含隊(duì)列頭部和隊(duì)列尾部緩存的其他組合。例如,圖9示出了FIFO隊(duì)列900,它采用了一個(gè)隊(duì)列頭部緩存和一個(gè)隊(duì)列尾部緩存。隊(duì)列900包含高速部分970和低速部分925,其中高速部分970包含尾部緩存915和頭部緩存955。頭部緩存955包含條目951、952和953,尾部緩存包含隊(duì)列條目911、912和913。低速部分包含了包括第一條目923和最后條目921的多個(gè)條目。數(shù)據(jù)在910進(jìn)入FIFO隊(duì)列900,并且被寫入尾部緩存915。當(dāng)尾部緩存915被充滿的時(shí)候,數(shù)據(jù)則沿路徑920以上述方式被寫入低速部分925。數(shù)據(jù)也按照上述方式被從隊(duì)列900中讀出,首先從頭部緩存955中讀出,然后沿路徑940從低速部分925中讀出,或者如果頭部緩存955的尾部指針和尾部緩存915的頭部指針相等時(shí),則沿路徑930從尾部緩存915中讀出。同樣地,按照上述方式,或者從低速部分925沿路徑940,或者如果頭部緩存955的尾部指針和尾部緩存915的頭部指針相同時(shí),則從尾部緩存915沿路徑930來補(bǔ)充頭部緩存955。
應(yīng)該注意的是,上述新技術(shù)采用的某些方法可以使用計(jì)算機(jī)可讀并且可執(zhí)行指令來全部或者部分實(shí)現(xiàn),所述指令存儲在諸如DRAM的計(jì)算機(jī)可讀介質(zhì)中,并在包含能夠執(zhí)行指令的處理元件,例如處理器的硬件上面執(zhí)行。例如,在本發(fā)明的一個(gè)實(shí)施例中,通過流量管理器、命令譯碼邏輯、讀取請求隊(duì)列、寫入分組隊(duì)列和QID目錄來執(zhí)行的多個(gè)方法被實(shí)現(xiàn)為一系列軟件例程,這些例程被存儲在處理器存儲器360中并且通過處理器370來執(zhí)行。
總之,本發(fā)明包含一種可以實(shí)現(xiàn)高速高密度的分組緩沖器的技術(shù)。該技術(shù)不會招致只使用高速存儲器件實(shí)現(xiàn)整個(gè)緩沖器相關(guān)的成本問題。但是,很明顯,可以對所述實(shí)施例做出其他的變化和修改,同樣能夠得到所述實(shí)施例優(yōu)點(diǎn)中的一些或者全部。因此,附帶的權(quán)利要求書的目的在于要包含落入本發(fā)明的真實(shí)精神和范圍內(nèi)的所有這種變化和修改。
權(quán)利要求
1.一種方法,用于操作包括多個(gè)隊(duì)列的分組緩沖器,該方法包含以下步驟從請求者接收請求,該請求包括隊(duì)列標(biāo)識符和命令;使用所述隊(duì)列標(biāo)識符,從所述多個(gè)隊(duì)列中選擇一個(gè)隊(duì)列,其中每個(gè)隊(duì)列被配置來保存數(shù)據(jù),并且每個(gè)隊(duì)列包含高速部分和低速部分;和確定所述命令是否是讀取命令,如果是,則從所選隊(duì)列的所述高速部分獲取數(shù)據(jù)并且確定所獲取的數(shù)據(jù)量是否已經(jīng)滿足所述請求,如果不滿足,則從所選隊(duì)列的所述低速部分獲取剩余數(shù)據(jù)。
2.如權(quán)利要求1所述的方法,其中所述隊(duì)列是先進(jìn)先出隊(duì)列。
3.如權(quán)利要求1所述的方法,其中所述請求與數(shù)據(jù)相關(guān)聯(lián),并且所述方法還包含以下步驟確定所述命令是否是寫入命令,如果是,則將與所述請求相關(guān)聯(lián)的數(shù)據(jù)寫入所選隊(duì)列。
4.如權(quán)利要求3所述的方法,其中所述隊(duì)列是先進(jìn)先出隊(duì)列,并且其中與所述請求相關(guān)聯(lián)的數(shù)據(jù)被寫入所選先進(jìn)先出隊(duì)列的所述高速部分。
5.如權(quán)利要求3所述的方法,其中所述隊(duì)列是先進(jìn)先出隊(duì)列,并且其中與所述請求相關(guān)聯(lián)的數(shù)據(jù)被寫入所選先進(jìn)先出隊(duì)列的所述低速部分。
6.如權(quán)利要求1所述的方法,還包括以下步驟更新與所選隊(duì)列相關(guān)聯(lián)的隊(duì)列標(biāo)識符目錄條目。
7.如權(quán)利要求3所述的方法,還包括以下步驟從包含在所選隊(duì)列的所述低速部分的數(shù)據(jù)中補(bǔ)充所選隊(duì)列的所述高速部分。
8.如權(quán)利要求1所述的方法,還包括以下步驟確定所選隊(duì)列的所述高速部分是否為空,如果是,則從所選隊(duì)列的所述低速部分獲取數(shù)據(jù)。
9.如權(quán)利要求8所述的方法,其中所選隊(duì)列與隊(duì)列頭部起始端偏移和隊(duì)列頭部末端偏移相關(guān)聯(lián),并且確定所選隊(duì)列的所述高速部分是否為空的所述步驟還包括以下步驟計(jì)算所述隊(duì)列頭部起始端偏移和所述隊(duì)列頭部末端偏移之間的差值;以及如果所述差值為零,則得出所述隊(duì)列為空的結(jié)論。
10.一種分組緩沖器,該分組緩沖器包括一個(gè)或者多個(gè)隊(duì)列,每個(gè)隊(duì)列包含高速部分和低速部分,該分組緩沖器包括接口邏輯,其經(jīng)配置用于傳遞請求和數(shù)據(jù);被連接到所述接口邏輯的命令譯碼邏輯,其經(jīng)配置用于處理所述接口邏輯接收到的請求;被連接到所述命令譯碼邏輯的讀取請求隊(duì)列,其經(jīng)配置用于處理所述命令譯碼邏輯轉(zhuǎn)發(fā)過來的讀取命令;被連接到所述讀取請求隊(duì)列的隊(duì)列標(biāo)識符目錄,其經(jīng)配置用于在所述讀取請求隊(duì)列的指導(dǎo)下,用來自所述低速部分的數(shù)據(jù)補(bǔ)充所述一個(gè)或者多個(gè)隊(duì)列的所述高速部分;和被連接到所述隊(duì)列標(biāo)識符目錄的隊(duì)列頭部緩存,其經(jīng)配置用于保存與所述高速部分相關(guān)聯(lián)的數(shù)據(jù)。
11.如權(quán)利要求10所述的分組緩沖器,其中所述隊(duì)列是先進(jìn)先出隊(duì)列。
12.如權(quán)利要求10所述的分組緩沖器,還包括被連接到所述命令譯碼邏輯的寫入分組隊(duì)列,其經(jīng)配置用于處理所述命令譯碼邏輯轉(zhuǎn)發(fā)過來的寫入命令。
13.如權(quán)利要求12所述的分組緩沖器,還包括被連接到所述寫入分組隊(duì)列和所述隊(duì)列標(biāo)識符目錄的DRAM控制器,其經(jīng)配置用于處理所述寫入分組隊(duì)列和隊(duì)列標(biāo)識符目錄發(fā)出的請求。
14.如權(quán)利要求13所述的分組緩沖器,還包括被連接到所述DRAM控制器的DRAM,其經(jīng)配置用于保存與所述一個(gè)或者多個(gè)隊(duì)列的所述低速部分相關(guān)聯(lián)的數(shù)據(jù)。
15.如權(quán)利要求10所述的分組緩沖器,還包括數(shù)據(jù)庫,其經(jīng)配置用于保存所述隊(duì)列的專有信息。
16.如權(quán)利要求15所述的分組緩沖器,其中所述數(shù)據(jù)庫包括一個(gè)或者多個(gè)條目,并且其中每個(gè)條目與一個(gè)隊(duì)列相關(guān)聯(lián),并且其中每個(gè)條目包括隊(duì)列頭部指針;和隊(duì)列尾部指針。
17.如權(quán)利要求16所述的分組緩沖器,其中所述隊(duì)列頭部指針還包括指向所述DRAM中的一個(gè)塊的指針,并且其中每個(gè)條目還包括所述隊(duì)列頭部指針?biāo)赶虻乃鰤K內(nèi),包含在所述隊(duì)列的所述高速部分中最后字節(jié)的偏移。
18.一種中間節(jié)點(diǎn),包括分組緩沖器,其包括一個(gè)或者多個(gè)隊(duì)列,其中每個(gè)隊(duì)列經(jīng)配置來保存一個(gè)或者多個(gè)分組,并且每個(gè)隊(duì)列包含高速部分和低速部分;和被連接到所述分組緩沖器的流量管理器,其經(jīng)配置用于將所述一個(gè)或者多個(gè)分組入列到所述一個(gè)或者多個(gè)隊(duì)列中,以及從所述一個(gè)或者多個(gè)隊(duì)列中出列。
19.如權(quán)利要求18所述的中間節(jié)點(diǎn),其中所述隊(duì)列是先進(jìn)先出隊(duì)列。
20.如權(quán)利要求18所述的中間節(jié)點(diǎn),其中所述流量管理器還包括內(nèi)部分組存儲器,經(jīng)配置來保存所述一個(gè)或者多個(gè)分組;隊(duì)列描述符存儲器,經(jīng)配置來保存所述隊(duì)列中每個(gè)隊(duì)列的專有信息;隊(duì)列管理器,經(jīng)配置用于管理所述一個(gè)或多個(gè)隊(duì)列;和調(diào)度程序,經(jīng)配置用于確定所述一個(gè)或者多個(gè)分組何時(shí)從所述一個(gè)或多個(gè)隊(duì)列中出列。
21.一種分組緩沖器,包含一個(gè)或者多個(gè)隊(duì)列,其中每個(gè)隊(duì)列經(jīng)配置來保存數(shù)據(jù),并且每個(gè)隊(duì)列包括高速部分和低速部分,所述分組緩沖器包括以下裝置用于從請求者接收請求的裝置,所述請求包括隊(duì)列標(biāo)識符和命令;用于使用所述隊(duì)列標(biāo)識符從所述一個(gè)或多個(gè)隊(duì)列中選擇一個(gè)隊(duì)列的裝置;和用于確定所述命令是否是讀取命令,如果是,則從所選隊(duì)列的所述高速部分獲取數(shù)據(jù),以及確定所獲取的數(shù)據(jù)量是否已經(jīng)滿足所述請求,如果不滿足,則從所選隊(duì)列的所述低速部分獲取剩余數(shù)據(jù)的裝置。
22.如權(quán)利要求21所述的分組緩沖器,其中所述隊(duì)列是先進(jìn)先出隊(duì)列。
23.如權(quán)利要求21所述的分組緩沖器,其中所述請求與數(shù)據(jù)相關(guān)聯(lián),并且所述分組緩沖器還包括用于確定所述命令是否是寫入命令,如果是,則將與所述請求相關(guān)聯(lián)的數(shù)據(jù)寫入所選隊(duì)列的裝置。
24.一種計(jì)算機(jī)可讀介質(zhì)所述計(jì)算機(jī)可讀介質(zhì)包含在處理器內(nèi)執(zhí)行的指令,用于實(shí)施權(quán)利要求1所述的方法。
全文摘要
本發(fā)明的技術(shù)利用高速和低速存儲器件的組合實(shí)現(xiàn)了一種新型的高速高密度分組緩沖器。所述新型的分組緩沖器以多個(gè)FIFO隊(duì)列的形式組織起來,其中的每個(gè)FIFO隊(duì)列與一條特定的輸入或者輸出線路相關(guān)聯(lián)。每個(gè)隊(duì)列包括駐留在高速存儲器內(nèi)的高速緩存部分和駐留在低速高密度存儲器內(nèi)的低速高密度部分。所述高速緩存部分包含有FIFO數(shù)據(jù),該數(shù)據(jù)含有與所述新型FIFO隊(duì)列相關(guān)聯(lián)的頭部和/或尾部。所述低速高密度部分包含未被包含在所述高速緩存部分內(nèi)的FIFO數(shù)據(jù)。
文檔編號H04L29/06GK1643872SQ03806222
公開日2005年7月20日 申請日期2003年4月28日 優(yōu)先權(quán)日2002年4月30日
發(fā)明者肯尼思·M·基, 麥國根, 孫曉明 申請人:思科技術(shù)公司