排隊(duì)裝置制造方法
【專(zhuān)利摘要】一種具有排隊(duì)引擎(2)的排隊(duì)裝置(1)包括:預(yù)定數(shù)目K個(gè)隊(duì)列Q,其中每個(gè)隊(duì)列Q具有與所述排隊(duì)引擎(2)的N個(gè)對(duì)應(yīng)數(shù)目的輸入通路相關(guān)聯(lián)的N個(gè)子隊(duì)列SQ,其中每個(gè)子隊(duì)列SQ用于存儲(chǔ)由所述排隊(duì)引擎(2)的每個(gè)相關(guān)聯(lián)的輸入通路應(yīng)用的包描述符;以及用于存儲(chǔ)所述排隊(duì)引擎(2)的預(yù)定數(shù)目K個(gè)隊(duì)列Q的子隊(duì)列SQ的所有描述符的共享描述符存儲(chǔ)器(10),其中在應(yīng)用到所述排隊(duì)引擎(2)的系統(tǒng)時(shí)鐘信號(hào)(CLK)的每個(gè)系統(tǒng)時(shí)鐘周期中,最多N個(gè)輸入通路可以請(qǐng)求對(duì)隊(duì)列Q的寫(xiě)入操作,以及最多一個(gè)對(duì)任意隊(duì)列Q的讀取操作。
【專(zhuān)利說(shuō)明】排隊(duì)裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種具有排隊(duì)引擎(queuing engine)的排隊(duì)裝置(queuingapparatus)以及涉及一種用于對(duì)包描述符(Packet Descriptor)進(jìn)行排隊(duì)的方法。
【背景技術(shù)】
[0002]許多應(yīng)用,尤其網(wǎng)絡(luò)中的高速路由器和交換機(jī),都需要高速排隊(duì)系統(tǒng)(queuingsystems)。當(dāng)多個(gè)輸入連接到同一個(gè)輸出時(shí),尤其在入口數(shù)據(jù)速率(ingress data rate)比出口數(shù)據(jù)率(egress data rate)速高的情況下有必要提供排隊(duì)引擎。傳統(tǒng)排隊(duì)引擎提供入口排隊(duì)(ingress queuing)或使用較高頻率的排隊(duì)系統(tǒng)。但是,兩種方法均有不足。入口隊(duì)列(ingress queue)占用更多的內(nèi)存并且具有較高線頭阻塞(head-of-line blocking,HOL blocking)以及必須提供復(fù)雜的流量管理等不足。使用利用高頻時(shí)鐘的高頻排隊(duì)系統(tǒng)增加了功耗,此外還導(dǎo)致時(shí)序收斂方面的擴(kuò)展性問(wèn)題。
[0003]傳統(tǒng)排隊(duì)引擎可以成為高速排隊(duì)系統(tǒng)整個(gè)設(shè)計(jì)的瓶頸。盡管高速排隊(duì)系統(tǒng)可以設(shè)計(jì)為支持指定的系統(tǒng)標(biāo)準(zhǔn)帶寬,排隊(duì)裝置通常需要支持較高的以及甚至有時(shí)高得多的帶寬以在有關(guān)緩沖中的延遲信息(delyed information)上開(kāi)啟差異化服務(wù)。在采用輸出隊(duì)列架構(gòu)的高速排隊(duì)系統(tǒng)中,需要特定的輸出隊(duì)列來(lái)吸收數(shù)據(jù)流量,其數(shù)據(jù)速率可以比其輸出速率高得多,尤其當(dāng)若干輸入數(shù)據(jù)源發(fā)送數(shù)據(jù)流量到所述特定輸出隊(duì)列時(shí)。這就對(duì)任意排隊(duì)裝置提出了重要的要求,該排隊(duì)裝置能夠以比隊(duì)列的輸出速率高得多的數(shù)據(jù)速率將輸入流量吸收到輸入隊(duì)列(input queue)。與讀取操作相比,該要求可以轉(zhuǎn)換成許多對(duì)隊(duì)列進(jìn)行的寫(xiě)入操作。為了能夠并行執(zhí)行多個(gè)寫(xiě)入訪問(wèn)(write access),要求每個(gè)系統(tǒng)時(shí)鐘周期內(nèi)必須承受多個(gè)寫(xiě)入操作的傳統(tǒng)排隊(duì)系統(tǒng)實(shí)際復(fù)制輸入隊(duì)列的控制存儲(chǔ)器(control memory)和描述符存儲(chǔ)器(descriptor memory) ?但是,由于排隊(duì)系統(tǒng)需要不斷增長(zhǎng)的隊(duì)列深度,控制和描述符存儲(chǔ)器的這種復(fù)制對(duì)系統(tǒng)設(shè)計(jì)造成了很大障礙,并且當(dāng)將這些傳統(tǒng)排隊(duì)系統(tǒng)集成到芯片上時(shí)導(dǎo)致芯片空間和功耗的浪費(fèi)。相應(yīng)地,需要一種排隊(duì)裝置和一種對(duì)應(yīng)的方法,其可以在一個(gè)系統(tǒng)時(shí)鐘周期內(nèi)承受多個(gè)寫(xiě)入操作和一個(gè)讀取操作而無(wú)需復(fù)制隊(duì)列的控制和描述符存儲(chǔ)器。
【發(fā)明內(nèi)容】
[0004]根據(jù)本發(fā)明的第一方面,提供了一種具有排隊(duì)引擎的排隊(duì)裝置,包括:
[0005]預(yù)定數(shù)目K個(gè)隊(duì)列Q,其中每個(gè)隊(duì)列具有與所述排隊(duì)引擎的N個(gè)對(duì)應(yīng)數(shù)目的輸入通路(input lane)相關(guān)聯(lián)的N個(gè)子隊(duì)列(sub-queue, SQ)。其中每個(gè)子隊(duì)列SQ用于存儲(chǔ)由所述排隊(duì)引擎的每個(gè)相關(guān)聯(lián)的輸入通路應(yīng)用的包描述符以及
[0006]用于存儲(chǔ)該排隊(duì)引擎的預(yù)定數(shù)目K個(gè)隊(duì)列Q的子隊(duì)列SQ的所有描述符的共享描述符存儲(chǔ)器(shared d escriptor memory),
[0007]其中在應(yīng)用到排隊(duì)引擎的系統(tǒng)時(shí)鐘信號(hào)CLK的每個(gè)系統(tǒng)時(shí)鐘周期中,最多N個(gè)輸入通路請(qǐng)求對(duì)隊(duì)列Q的寫(xiě)入操作(write operation, WR),以及最多一個(gè)對(duì)任意隊(duì)列Q的讀取操作(read operation, RR)。
[0008]根據(jù)本發(fā)明的第一方面的一種具有排隊(duì)引擎的排隊(duì)裝置的第一可能實(shí)施形式,每個(gè)子隊(duì)列SQ用于最多存儲(chǔ)M個(gè)應(yīng)用到所述子隊(duì)列SQ的相關(guān)聯(lián)的輸入通路的包描述符,其中每個(gè)子隊(duì)列SQ使用整個(gè)共享描述符存儲(chǔ)器,
[0009]其中M是共享描述符存儲(chǔ)器能夠存儲(chǔ)的描述符的數(shù)目。
[0010]在根據(jù)本發(fā)明的第一方面的一種具有排隊(duì)引擎的排隊(duì)裝置的第二可能實(shí)施方式中,為排隊(duì)引擎的N個(gè)輸入通路中的每個(gè)輸入通路提供了對(duì)應(yīng)的入隊(duì)單元(enqueuingunit)ο
[0011]在根據(jù)本發(fā)明的第一方面的一種具有排隊(duì)引擎的排隊(duì)裝置的第三可能實(shí)施方式中,每個(gè)入隊(duì)單元用于在應(yīng)用到排隊(duì)引擎的系統(tǒng)時(shí)鐘信號(hào)CLK的每個(gè)系統(tǒng)時(shí)鐘周期內(nèi)將應(yīng)用到相應(yīng)輸入通路的包描述符入隊(duì)到與相應(yīng)輸入通路對(duì)應(yīng)的子隊(duì)列SQ中。
[0012]在根據(jù)本發(fā)明的第一方面的一種具有排隊(duì)引擎的排隊(duì)裝置的第四可能實(shí)施方式中,排隊(duì)引擎進(jìn)一步包括一種出隊(duì)單元(dequeuing unit),用于在應(yīng)用到排隊(duì)引擎的系統(tǒng)時(shí)鐘信號(hào)CLK的一個(gè)系統(tǒng)時(shí)鐘周期內(nèi)將描述符(descriptor)從任意隊(duì)列Q出隊(duì)(dequeue)。
[0013]在根據(jù)本發(fā)明的第一方面的一種具有排隊(duì)引擎的排隊(duì)裝置的第一至四實(shí)施方式的又一第五可能實(shí)施方式中,排隊(duì)裝置進(jìn)一步包括一種調(diào)度器(scheduler),用于選擇由排隊(duì)引擎的出隊(duì)單元進(jìn)行出隊(duì)的隊(duì)列Q。
[0014]在根據(jù)本發(fā)明的第一方面的一種具有排隊(duì)引擎的排隊(duì)裝置的第五實(shí)施方式的第六可能實(shí)施方式中,被選擇的隊(duì)列Q的一個(gè)子隊(duì)列SQ由存儲(chǔ)控制器使用排序函數(shù)(sequencing function, SF)選擇。
[0015]在根據(jù)本發(fā)明的第一方面的一種具有排隊(duì)引擎的排隊(duì)裝置的第六實(shí)施方式的第七可能實(shí)施方式中,存儲(chǔ)控制器使用的排序函數(shù)SF包括先進(jìn)先出FIFO排序函數(shù)。
[0016]其中,被選擇的隊(duì)列Q的N個(gè)子隊(duì)列SQ中的被選擇的子隊(duì)列,包括被最小時(shí)間戳(minimum time stamp, TS)附著的在其隊(duì)列的頭中(in its head of queue)的描述符。
[0017]在根據(jù)本發(fā)明的第一方面的一種具有排隊(duì)引擎的排隊(duì)裝置的第六實(shí)施方式的第八可能實(shí)施方式中,存儲(chǔ)控制器使用的排序函數(shù)SF包括循環(huán)排序函數(shù)(Round Robinsequencing function),其中每次調(diào)度器選擇由排隊(duì)引擎的出隊(duì)單元進(jìn)行出隊(duì)的隊(duì)列Q時(shí),在隊(duì)列Q的N個(gè)子隊(duì)列中選擇不同的子隊(duì)列SQ。
[0018]在根據(jù)本發(fā)明的第一方面的一種具有排隊(duì)引擎的排隊(duì)裝置的第六實(shí)施方式的又一第九可能實(shí)施方式中,存儲(chǔ)控制器使用的排序函數(shù)SF包括差額循環(huán)排序函數(shù)(deficitRound Robin sequencing function)。
[0019]在根據(jù)本發(fā)明的第一方面的一種具有排隊(duì)引擎的排隊(duì)裝置的第一至九實(shí)施方式的第十可能實(shí)施方式中,共享描述符存儲(chǔ)器包括多寫(xiě)單讀存儲(chǔ)系統(tǒng)(mult1-write-singleread memory system)。
[0020]在根據(jù)本發(fā)明的第一方面的一種具有排隊(duì)引擎的排隊(duì)裝置的第十實(shí)施方式的第十一可能實(shí)施方式中,多寫(xiě)單讀存儲(chǔ)系統(tǒng)包括一種控制邏輯(control logic),用于在系統(tǒng)時(shí)鐘信號(hào)CLK的一個(gè)時(shí)鐘周期內(nèi)接收η個(gè)寫(xiě)入請(qǐng)求(write request)以及接收一個(gè)讀取請(qǐng)求(read request)。[0021]在根據(jù)本發(fā)明的第一方面的一種具有排隊(duì)引擎的排隊(duì)裝置的第十一實(shí)施方式的第十二可能實(shí)施方式中,多寫(xiě)單讀存儲(chǔ)系統(tǒng)進(jìn)一步包括用于存儲(chǔ)數(shù)據(jù)的η+1個(gè)存儲(chǔ)器塊(memory bank),其中η是整數(shù)。
[0022]在根據(jù)本發(fā)明的第一方面的一種具有排隊(duì)引擎的排隊(duì)裝置的第十一或十二實(shí)施方式的又一第十三可能實(shí)施方式中,多寫(xiě)單讀存儲(chǔ)系統(tǒng)的控制邏輯用于控制每個(gè)存儲(chǔ)器塊的存儲(chǔ)器塊占用率(memory bank occupancy levels, MBOL),從而使得存儲(chǔ)器塊的存儲(chǔ)器塊占用率MBOL之間的差值(difference)最小化。
[0023]在根據(jù)本發(fā)明的第一方面的一種具有排隊(duì)引擎的排隊(duì)裝置的第二至四實(shí)施方式的第十四可能實(shí)施方式中,排隊(duì)引擎進(jìn)一步包括一種存儲(chǔ)控制器(memory controller),用于從所述入隊(duì)單元接收來(lái)自所述入隊(duì)單元的包括描述符的隊(duì)列數(shù)據(jù)(queued data)和向出隊(duì)單元提供包括描述符的出隊(duì)數(shù)據(jù)(dequeuing data)。
[0024]在根據(jù)本發(fā)明的第一方面的一種具有排隊(duì)引擎的排隊(duì)裝置的第十至十四實(shí)施方式的第十五可能實(shí)施方式中,存儲(chǔ)控制器被連接到所述多寫(xiě)單讀存儲(chǔ)系統(tǒng)的所述控制邏輯,所述多寫(xiě)單讀存儲(chǔ)系統(tǒng)形成所述排隊(duì)引擎的所述共享描述符存儲(chǔ)器。
[0025]在根據(jù)本發(fā)明的第一方面的一種具有排隊(duì)引擎的排隊(duì)裝置的第十二實(shí)施方式的第十六可能實(shí)施方式中,所述多寫(xiě)單讀存儲(chǔ)系統(tǒng)的存儲(chǔ)器塊由單端口(single port)隨機(jī)存取存儲(chǔ)器(random access memory, RAM)形成。
[0026]在根據(jù)本發(fā)明的第一方面的一種具有排隊(duì)引擎的排隊(duì)裝置的第十四至十六實(shí)施方式的第十七可能實(shí)施方式中,排隊(duì)引擎包括下一指針存儲(chǔ)器(next pointer memory),其通過(guò)被連接到所述存儲(chǔ)控制器的多寫(xiě)單讀存儲(chǔ)系統(tǒng)形成。
[0027]在根據(jù)本發(fā)明的第一方面的一種具有排隊(duì)引擎的排隊(duì)裝置的第十四實(shí)施方式的第十八可能實(shí)施方式中,排隊(duì)引擎進(jìn)一步包括自由緩沖池存儲(chǔ)器(free buffer poolmemory),其通過(guò)被連接到所述存儲(chǔ)控制器的多寫(xiě)單讀存儲(chǔ)系統(tǒng)形成。
[0028]在根據(jù)本發(fā)明的第一方面的一種具有排隊(duì)引擎的排隊(duì)裝置的第十四實(shí)施方式的第十八可能實(shí)施方式中,排隊(duì)引擎包括時(shí)間戳存儲(chǔ)器(time stamp memory),其通過(guò)被連接到所述存儲(chǔ)控制器的多寫(xiě)單讀存儲(chǔ)系統(tǒng)形成。
[0029]在根據(jù)本發(fā)明的第一方面的一種具有排隊(duì)引擎的排隊(duì)裝置的第十九實(shí)施方式的第二十可能實(shí)施方式中,被提供的時(shí)間戳存儲(chǔ)器用于存儲(chǔ)被附著到通過(guò)排隊(duì)引擎的輸入通路接收的包描述符報(bào)文(Packet Descriptors packet)的時(shí)間戳TS。
[0030]在根據(jù)本發(fā)明的第一方面的一種具有排隊(duì)引擎的排隊(duì)裝置的第二至四實(shí)施方式的第二十一可能實(shí)施方式中,排隊(duì)引擎的入隊(duì)單元和出隊(duì)單元具有訪問(wèn)隊(duì)列信息存儲(chǔ)器(queue information memory)的能力,其存儲(chǔ)了隊(duì)列 Q 的信息數(shù)據(jù)(information data)。
[0031]在根據(jù)本發(fā)明的第一方面的一種具有排隊(duì)引擎的排隊(duì)裝置的第十九或二十實(shí)施方式的第二十二可能實(shí)施方式中,對(duì)于每個(gè)由所述排隊(duì)引擎通過(guò)輸入通路接收的報(bào)文,時(shí)間戳TS附著到其的包描述符,其中時(shí)間戳TS指示相應(yīng)報(bào)文的到達(dá)時(shí)間。
[0032]在根據(jù)本發(fā)明的第一方面的一種具有排隊(duì)引擎的排隊(duì)裝置的第二十二實(shí)施方式的第二十三可能實(shí)施方式中,包描述符包括存儲(chǔ)器地址(memory address)以為存儲(chǔ)在所述排隊(duì)裝置的共享數(shù)據(jù)存儲(chǔ)器(shared data memory)中的所述被接收的報(bào)文(receivedpacket)的凈荷數(shù)據(jù)(payload data)尋址。[0033]根據(jù)本發(fā)明的第二方面,提供了一種流量管理設(shè)備,包括根據(jù)本發(fā)明的第一方面的包含排隊(duì)引擎的排隊(duì)裝置。
[0034]根據(jù)本發(fā)明的第三方面,提供了一種集成電路,包括根據(jù)本發(fā)明的第一方面的包含排隊(duì)引擎的排隊(duì)裝置。
[0035]根據(jù)本發(fā)明的第四方面,提供了一種用于對(duì)在系統(tǒng)時(shí)鐘信號(hào)CLK的每個(gè)系統(tǒng)時(shí)鐘周期中使用排隊(duì)引擎從N個(gè)輸入通路并發(fā)(concurrently)接收的包描述符進(jìn)行排隊(duì)的方法,包括預(yù)定數(shù)目K個(gè)隊(duì)列Q中的每個(gè)隊(duì)列具有與排隊(duì)引擎的對(duì)應(yīng)輸入通路相關(guān)聯(lián)的N個(gè)子隊(duì)列SQ,其中預(yù)定數(shù)目K個(gè)隊(duì)列Q的子隊(duì)列SQ的所有描述符存儲(chǔ)在排隊(duì)引擎的共享描述符存儲(chǔ)器(shared descriptor memory)中,所述共享描述符存儲(chǔ)器用于在系統(tǒng)時(shí)鐘信號(hào)CLK的每個(gè)系統(tǒng)時(shí)鐘周期中最多存儲(chǔ)N個(gè)描述符以及取回(retrieve) —個(gè)描述符。
[0036]在根據(jù)本發(fā)明的第四方面的一種用于對(duì)包描述符進(jìn)行排隊(duì)的方法的可能實(shí)施方式中,在系統(tǒng)時(shí)鐘信號(hào)CLK的相同系統(tǒng)時(shí)鐘周期中,應(yīng)用到N個(gè)輸入通路的包描述符被并行地(in parallel)寫(xiě)入所述共享描述符存儲(chǔ)器中以及單個(gè)描述符被從所述共享描述符存儲(chǔ)器中讀取。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0037]在下文中,將參考附圖對(duì)本發(fā)明的不同方面的示例性實(shí)施形式進(jìn)行更加詳細(xì)的描述。
[0038]圖1所示為根據(jù)本發(fā)明的第一方面的一種具有排隊(duì)引擎的排隊(duì)裝置的可能實(shí)施方式的框圖;
[0039]圖2所示為圖1所示的排隊(duì)裝置中提供的排隊(duì)引擎的可能實(shí)施方式的框圖;
[0040]圖3所示為示出了根據(jù)本發(fā)明的第一方面的排隊(duì)裝置采用的單個(gè)隊(duì)列的邏輯視圖的圖。
[0041]圖4所示為示出了根據(jù)本發(fā)明的第一方面的排隊(duì)裝置采用的蝴蝶排隊(duì)機(jī)制(butterfly queuing mechanism)的隊(duì)列的聚合(aggregation)的圖。
【具體實(shí)施方式】
[0042]如圖1所示,排隊(duì)裝置I包括在所示的實(shí)施方式中作為其核心元素的排隊(duì)引擎2,其通過(guò)數(shù)據(jù)總線連接到調(diào)度器3。排隊(duì)裝置I進(jìn)一步包括連接到數(shù)據(jù)存儲(chǔ)單元5和數(shù)據(jù)取回單元(data retrieval unit)6的共享數(shù)據(jù)存儲(chǔ)器4。如圖1所示,排隊(duì)引擎2用于接收來(lái)自數(shù)據(jù)存儲(chǔ)單元5的N個(gè)描述符以及將一個(gè)描述符輸出到數(shù)據(jù)取回單元6。包描述符是一組描述報(bào)文的信息。包描述符可以存儲(chǔ)數(shù)據(jù)報(bào)文上的所有類(lèi)型的信息。例如,包描述符包括指向存儲(chǔ)報(bào)文的數(shù)據(jù)存儲(chǔ)器的指針。使用包描述符是為了減少插入到排隊(duì)引擎中的信息量。不將整個(gè)報(bào)文發(fā)送到排隊(duì)系統(tǒng),僅發(fā)送包描述符。報(bào)文本身存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器中??赡艽嬖谙到y(tǒng),其中這種類(lèi)型的描述符是足夠的。但是,可能存在描述符可以存儲(chǔ)報(bào)文ID等更多信息的情況。在各報(bào)文的報(bào)文長(zhǎng)度有所不同的系統(tǒng)中,為了使調(diào)度器3能夠準(zhǔn)確地計(jì)算實(shí)際調(diào)度的字節(jié)數(shù),報(bào)文長(zhǎng)度可添加到包描述符中。在可能實(shí)施方式中,包描述符可以包括報(bào)文本身的頭。在另一可能實(shí)施方式中,包描述符可以包括報(bào)文內(nèi)的頭的一個(gè)或若干個(gè)數(shù)據(jù)字段。包描述符存在許多變體,上述提及的是這些變體的示例。[0043]數(shù)據(jù)存儲(chǔ)單元5通過(guò)排隊(duì)引擎2的N個(gè)輸入通路連接以向排隊(duì)引擎2提供如圖1所示的N個(gè)描述符,例如,包描述符。
[0044]數(shù)據(jù)報(bào)文存儲(chǔ)在共享數(shù)據(jù)存儲(chǔ)器4中并且存儲(chǔ)數(shù)據(jù)的引用(通常是一個(gè)指針)置于發(fā)送到排隊(duì)引擎2的包描述符內(nèi)。
[0045]排隊(duì)引擎2包括預(yù)定數(shù)目K個(gè)隊(duì)列Q,其中每個(gè)隊(duì)列Q具有與連接到排隊(duì)引擎2的N個(gè)對(duì)應(yīng)數(shù)目的輸入通路相關(guān)聯(lián)的N個(gè)子隊(duì)列SQ。每個(gè)子隊(duì)列SQ用于存儲(chǔ)由排隊(duì)引擎2的每個(gè)相關(guān)聯(lián)的輸入通路應(yīng)用的包描述符。
[0046]調(diào)度器3用于在K個(gè)隊(duì)列中選擇一個(gè)隊(duì)列用于出隊(duì)。所屬領(lǐng)域的技術(shù)人員認(rèn)識(shí)到存在許多調(diào)度器3的先進(jìn)實(shí)施方式。在每個(gè)周期中,排隊(duì)引擎2在調(diào)度器3選擇的隊(duì)列頭處彈出包描述符。隨后該包描述符被發(fā)送到數(shù)據(jù)取回單元6,其查找來(lái)自共享數(shù)據(jù)存儲(chǔ)器4的彈出的包描述符的數(shù)據(jù)報(bào)文并將數(shù)據(jù)報(bào)文發(fā)送到輸出通路。
[0047]隊(duì)列是一種特定類(lèi)型的集合,其中該集合中的實(shí)體按序排列并且對(duì)集合的主要操作是將實(shí)體添加到隊(duì)列和將實(shí)體從隊(duì)列移除。例如,對(duì)于先入先出(FIFO)隊(duì)列而言,添加到隊(duì)列的第一個(gè)實(shí)體將被第一個(gè)移除。這等同于以下要求:一旦添加了一個(gè)實(shí)體,在調(diào)用新實(shí)體之前,必須移除之前添加的所有實(shí)體。隊(duì)列是線性數(shù)據(jù)結(jié)構(gòu)的示例。以FIFO序列為例,出隊(duì)操作是指一個(gè)或多個(gè)實(shí)體離開(kāi)隊(duì)列的前部末端位置(front terminal position),而入隊(duì)操作是指一個(gè)或多個(gè)實(shí)體進(jìn)入隊(duì)列的后部末端位置(rear terminal position)。所述領(lǐng)域的技術(shù)人員清楚應(yīng)用到任意類(lèi)型的隊(duì)列的出隊(duì)和入隊(duì)操作不局限于FIFO隊(duì)列。
[0048]輸入通路是數(shù)據(jù)總線,數(shù)據(jù)以報(bào)文形式流入排隊(duì)引擎2。換句話說(shuō),每個(gè)入隊(duì)路徑稱(chēng)為輸入通路。 [0049]圖1所示的排隊(duì)引擎2的實(shí)施方式在圖2的框圖中詳細(xì)示出。如圖2所示,對(duì)于排隊(duì)引擎2的N個(gè)輸入通路的每個(gè)輸入通路而言,提供了對(duì)應(yīng)的入隊(duì)單元7 - 1、7 - 2、……、7 - N。每個(gè)入隊(duì)單元7 -1用于在應(yīng)用到排隊(duì)引擎2的系統(tǒng)時(shí)鐘信號(hào)CLK的每個(gè)系統(tǒng)時(shí)鐘周期內(nèi)將應(yīng)用到相應(yīng)輸入通路的包描述符入隊(duì)到相應(yīng)輸入通路的對(duì)應(yīng)子隊(duì)列SQ中。如圖2所示,排隊(duì)引擎2進(jìn)一步包括出隊(duì)單元8,用于在應(yīng)用到排隊(duì)引擎2的系統(tǒng)時(shí)鐘信號(hào)CLK的一個(gè)系統(tǒng)時(shí)鐘周期內(nèi)將描述符從任意隊(duì)列Q出隊(duì)。排隊(duì)引擎2包括如圖2所示的實(shí)施方式中的存儲(chǔ)控制器9,用于接收來(lái)自出隊(duì)單元7的包括描述符的隊(duì)列數(shù)據(jù)并向出隊(duì)單元8提供包括描述符的出隊(duì)數(shù)據(jù)。
[0050]排隊(duì)引擎2包括共享描述符存儲(chǔ)器10,用于存儲(chǔ)排隊(duì)引擎2的預(yù)定數(shù)目K個(gè)隊(duì)列Q的子隊(duì)列SQ的所有描述符,其中在應(yīng)用到排隊(duì)引擎2的系統(tǒng)時(shí)鐘信號(hào)CLK的每個(gè)系統(tǒng)時(shí)鐘周期中,最多N個(gè)輸入通路可以請(qǐng)求對(duì)隊(duì)列Q的寫(xiě)入操作,以及最多一個(gè)對(duì)任意隊(duì)列Q的讀取操作。
[0051]在共享描述符存儲(chǔ)器10的可能實(shí)施方式中,共享描述符存儲(chǔ)器10可以包括多寫(xiě)單讀存儲(chǔ)系統(tǒng),其包括控制邏輯,用于在系統(tǒng)時(shí)鐘信號(hào)CLK的一個(gè)時(shí)鐘周期內(nèi)接收η個(gè)寫(xiě)入請(qǐng)求WR以及接收一個(gè)讀取請(qǐng)求RR。在這個(gè)可能實(shí)施方式中,多寫(xiě)單讀存儲(chǔ)系統(tǒng)可以包括用于存儲(chǔ)數(shù)據(jù)的η+1個(gè)存儲(chǔ)器塊,其中η是整數(shù)。多讀單寫(xiě)存儲(chǔ)系統(tǒng)的控制邏輯可以用于控制每個(gè)存儲(chǔ)器塊的控制存儲(chǔ)器塊占用率MBOL使得存儲(chǔ)器塊的存儲(chǔ)器塊占用率MBOL之間的差值最小化。在可能實(shí)施方式中,如圖2所示的存儲(chǔ)控制器9可以連接到多寫(xiě)單讀存儲(chǔ)系統(tǒng)的控制邏輯形成排隊(duì)引擎2的共享描述符存儲(chǔ)器10。多寫(xiě)單讀存儲(chǔ)系統(tǒng)的每個(gè)存儲(chǔ)器塊可以由單端口隨機(jī)存取存儲(chǔ)器RAM形成。
[0052]如圖2所示,排隊(duì)引擎2的入隊(duì)單元7 -1和出隊(duì)單元8可以訪問(wèn)隊(duì)列信息存儲(chǔ)器11,其存儲(chǔ)了隊(duì)列Q的信息。隊(duì)列信息存儲(chǔ)器11可以存儲(chǔ)每個(gè)子隊(duì)列SQ的詳情。例如,詳情可以是子隊(duì)列SQ的大小、讀指針和寫(xiě)指針的組合。隊(duì)列信息存儲(chǔ)器11包括至少隊(duì)列頭和隊(duì)列尾指針。在又一可能實(shí)施方式中,隊(duì)列信息存儲(chǔ)器11可以進(jìn)一步包括隊(duì)列大小信息和狀態(tài)信息。在又一可能實(shí)施方式中,隊(duì)列信息存儲(chǔ)器11可以存儲(chǔ)每個(gè)隊(duì)列SQ的進(jìn)一步信息。排隊(duì)引擎2的每個(gè)入隊(duì)單元7 -1接收描述符,讀取隊(duì)列Q,并且需要將數(shù)據(jù)插入隊(duì)列信息存儲(chǔ)器11并且從隊(duì)列信息存儲(chǔ)器11讀取隊(duì)列控制信息,例如隊(duì)列頭、隊(duì)列尾和隊(duì)列大小。入隊(duì)單元7 -1隨后發(fā)送命令到存儲(chǔ)控制器9請(qǐng)求存儲(chǔ)描述符并且更新最近存儲(chǔ)的描述符的相同地址上的下一指針存儲(chǔ)器,以接收用于描述符和下一指針的空置地址。入隊(duì)單元7 -1隨后使用最新數(shù)據(jù)更新隊(duì)列信息存儲(chǔ)器11。同時(shí),在隊(duì)列Q改變其狀態(tài)的情況下,例如從空變成非空狀態(tài)時(shí),入隊(duì)單元7 -1相應(yīng)地更新調(diào)度器3。
[0053]在可能實(shí)施方式中,出隊(duì)單元8從調(diào)度器3接收隊(duì)列數(shù)目并且讀取隊(duì)列信息存儲(chǔ)器11。根據(jù)接收的隊(duì)列信息,例如隊(duì)列頭,出隊(duì)單元8可以請(qǐng)求存儲(chǔ)控制器9從共享描述符存儲(chǔ)器10取回隊(duì)列頭處的包描述符并且將描述符發(fā)送到排隊(duì)引擎2的輸出。進(jìn)一步地,出隊(duì)單元8可以更新調(diào)度器3的出隊(duì)過(guò)程。在又一可能實(shí)施例中,更多存儲(chǔ)器10連接到存儲(chǔ)控制器9。在可能實(shí)施方式中,排隊(duì)引擎2包括下一指針存儲(chǔ)器,其也可以通過(guò)多寫(xiě)單讀存儲(chǔ)系統(tǒng)連接到存儲(chǔ)控制器9形成。下一指針存儲(chǔ)器用于保存一個(gè)存儲(chǔ)器中的多鏈路列表。
[0054]在又一可能實(shí)施方式中,排隊(duì)引擎2進(jìn)一步包括自由緩沖池存儲(chǔ)器,其可以通過(guò)多寫(xiě)單讀存儲(chǔ)系統(tǒng)連接到存儲(chǔ)控制器9形成。自由緩沖池存儲(chǔ)器可以用于追蹤空置的描述符緩沖,也可以用于傳入包描述符。入隊(duì)時(shí),緩沖標(biāo)記為占用;出隊(duì)時(shí),緩沖標(biāo)記為空置。
[0055]在又一可能實(shí)施方式中,排隊(duì)引擎進(jìn)一步包括時(shí)間戳存儲(chǔ)器,其可以通過(guò)多寫(xiě)單讀系統(tǒng)連接到存儲(chǔ)控制器9形成。在可能實(shí)施方式中,提供時(shí)間戳存儲(chǔ)器用于存儲(chǔ)附著到包描述符報(bào)文的時(shí)間戳TS,所述包描述符報(bào)文由排隊(duì)引擎2通過(guò)輸入通路接收。在可能實(shí)施方式中,對(duì)于由排隊(duì)引擎通過(guò)輸入通路接收的每個(gè)報(bào)文而言,時(shí)間戳TS附著到其包描述符,其中時(shí)間戳TS指示相應(yīng)報(bào)文的到達(dá)時(shí)間。
[0056]在可能實(shí)施方式中,包描述符可以包括存儲(chǔ)器地址以為存儲(chǔ)在排隊(duì)裝置I的共享數(shù)據(jù)存儲(chǔ)器4中的接收?qǐng)?bào)文尋址。首選選項(xiàng)是包描述符存儲(chǔ)指向共享數(shù)據(jù)存儲(chǔ)器中的數(shù)據(jù)報(bào)文的指針;否則,當(dāng)包描述符從隊(duì)列取出時(shí)將無(wú)法提取數(shù)據(jù)報(bào)文信息。
[0057]圖1所示的排隊(duì)裝置I提供的排隊(duì)機(jī)制完成了接收控制字(control word)或描述每個(gè)數(shù)據(jù)段(data segment),例如報(bào)文的包描述符并且將其存儲(chǔ)在一組(a set of)隊(duì)列Q中的功能。在決策引擎(decision engine),例如調(diào)度器3的控制下,包描述符從排隊(duì)裝置的一個(gè)隊(duì)列Q的頭中出隊(duì)。數(shù)據(jù)段本身可以在入隊(duì)過(guò)程(enqueuing process)之前存儲(chǔ)在共享數(shù)據(jù)存儲(chǔ)器4中。
[0058]圖1所示的調(diào)度器3用于選擇由排隊(duì)引擎2的出隊(duì)單元8進(jìn)行出隊(duì)的隊(duì)列Q。調(diào)度器3用于選擇隊(duì)列Q。調(diào)度器3甚至不需要知道隊(duì)列是由一組子隊(duì)列SQ表示的。排隊(duì)引擎2中的存儲(chǔ)控制器9選擇由調(diào)度器3決定的隊(duì)列的正確子隊(duì)列SQ。根據(jù)下述排序函數(shù)之一執(zhí)行排隊(duì)引擎2選擇子隊(duì)列SQ的方式:先入先出FIFO排序函數(shù)、循環(huán)排序函數(shù)和差額循環(huán)排序函數(shù)。[0059]在可能實(shí)施方式中,排序函數(shù)SF包括先入先出FIFO排序函數(shù),其中選擇所選隊(duì)列Q的N個(gè)子隊(duì)列SQ中的一個(gè)子隊(duì)列SQ,包括最小時(shí)間戳TS附著的隊(duì)列的頭中的描述符。該機(jī)制允許基于到達(dá)時(shí)間選擇報(bào)文。選擇第一個(gè)到達(dá)任意子隊(duì)列SQ的報(bào)文出隊(duì)。在該模式下,如圖4所示,要求時(shí)間戳TS附著到任意子隊(duì)列SQ的每個(gè)到達(dá)包描述符。選擇包含具有最小時(shí)間戳TS的隊(duì)列的頭中的包描述符的子隊(duì)列SQ,即最早入隊(duì)隊(duì)列出隊(duì)。這要求找到N個(gè)子隊(duì)列SQ之間的最小時(shí)間戳TS。該實(shí)施方式為每個(gè)隊(duì)列Q模擬了邏輯FIFO。
[0060]在又一替代性實(shí)施方式中,排序函數(shù)SF包括循環(huán)排序函數(shù),其中每次調(diào)度器3選擇由排隊(duì)引擎2的出隊(duì)單元8進(jìn)行出隊(duì)的隊(duì)列Q時(shí),在隊(duì)列Q的N個(gè)子隊(duì)列中選擇不同的子隊(duì)列SQ。如果需要對(duì)不同源之間的到達(dá)數(shù)據(jù)流量進(jìn)行排序,可以使用這種實(shí)施方式。在這種實(shí)施方式中,每次選擇出隊(duì)的隊(duì)列Q時(shí),選擇不同的子隊(duì)列SQ。
[0061]在又一可能實(shí)施方式中,排序函數(shù)SF包括差額循環(huán)排序函數(shù)。如果子隊(duì)列SQ包含不同大小的報(bào)文,差額循環(huán)機(jī)制可能不公平。差額循環(huán)機(jī)制允許以公平的方式進(jìn)行循環(huán)使得每個(gè)子隊(duì)列SQ計(jì)算字節(jié)或數(shù)據(jù)量而不是報(bào)文。
[0062]其他從所選隊(duì)列Q中選擇子隊(duì)列SQ的方式可以在排隊(duì)裝置I的其他實(shí)施方式中使用。
[0063]圖2所示的根據(jù)本發(fā)明的排隊(duì)引擎2采用的排隊(duì)機(jī)制通過(guò)允許相同時(shí)鐘周期上的出隊(duì)過(guò)程來(lái)允許在相同時(shí)鐘周期內(nèi)同時(shí)插入若干包描述符到相同或不同的隊(duì)列Q。通路數(shù)目,即在相同時(shí)鐘周期內(nèi)的最大入隊(duì)量由參數(shù)N表示。系統(tǒng)中的隊(duì)列Q的數(shù)目由參數(shù)K表示。為了支持排隊(duì)機(jī)制,提供了一種蝴蝶排隊(duì)引擎2,其具有針對(duì)數(shù)據(jù)和復(fù)制控制信息的共享存儲(chǔ)池。由排隊(duì)引擎2提供的排隊(duì)機(jī)制中的每個(gè)隊(duì)列Q由一組N個(gè)子隊(duì)列SQ表示。每個(gè)子隊(duì)列SQ表示源,例如排隊(duì)裝置I的輸入端口。包描述符存儲(chǔ)在相關(guān)子隊(duì)列SQ中,使得N個(gè)到達(dá)報(bào)文可以同時(shí)存儲(chǔ)到N個(gè)單獨(dú)子隊(duì)列SQ中。當(dāng)調(diào)度器3選擇用于出隊(duì)的隊(duì)列Q時(shí),隊(duì)列Q的一個(gè)子隊(duì)列SQ可以由排隊(duì)引擎2中的存儲(chǔ)控制器9選擇。在隊(duì)列Q的子隊(duì)列SQ之間的選擇可以通過(guò)使用不同方法或包括先入先出FIFO或循環(huán)排序函數(shù)的排序函數(shù)SF來(lái)進(jìn)行。排隊(duì)引擎2也可以使用其他選擇函數(shù)SF用于選擇隊(duì)列Q內(nèi)的子隊(duì)列SQ。
[0064]圖3示出了單個(gè)隊(duì)列Qi的邏輯視圖。如圖3所示,對(duì)于每個(gè)通路而言,提供了隊(duì)列Q內(nèi)的對(duì)應(yīng)子隊(duì)列SQ用于存儲(chǔ)包描述符D,其中每個(gè)子隊(duì)列SQ連接到如3所示的由子隊(duì)列選擇邏輯(sub-queue select logic, SQSL)控制的復(fù)用邏輯(multiplexing logic,MUX), SQSL評(píng)估例如與數(shù)據(jù)描述符(data Descriptor) D相關(guān)聯(lián)的時(shí)間戳TS。圖3所示的邏輯圖中的邏輯元素MUX和SQSL用于邏輯地示出圖2中的存儲(chǔ)控制器9完成的功能。
[0065]圖4是由圖2所示的排隊(duì)引擎2實(shí)施的方案的邏輯視圖(概念視圖)。換句話說(shuō),圖2是圖4所示的邏輯視圖的一種實(shí)施方式。
[0066]圖4示出了 K個(gè)隊(duì)列Q的聚合,每個(gè)隊(duì)列Q具有N個(gè)子隊(duì)列SQ。輸入通路i對(duì)應(yīng)于每個(gè)隊(duì)列Q的子隊(duì)列SQ i。對(duì)于每個(gè)輸入通路i,提供了每個(gè)隊(duì)列Q內(nèi)的對(duì)應(yīng)子隊(duì)列SQi,用于存儲(chǔ)包描述符D,其中每個(gè)子隊(duì)列SQ連接到由圖3所示的子隊(duì)列選擇邏輯SQSL控制的復(fù)用邏輯MUX。圖4所示的隊(duì)列和圖3所示的隊(duì)列之間的唯一差別在于時(shí)間戳TS附著到每個(gè)隊(duì)列Q內(nèi)的每個(gè)子隊(duì)列SQ。附著到每個(gè)子隊(duì)列SQ的時(shí)間戳TS組成了 SQSL的輸入。通過(guò)這樣,SQSL可以評(píng)估與包描述符D相關(guān)聯(lián)的時(shí)間戳TS。每個(gè)隊(duì)列Q的輸出耦合到另一個(gè)MUX。如圖4所示,每個(gè)子隊(duì)列SQ是根據(jù)某個(gè)功能SQSL(function SQSL)來(lái)選擇,而每個(gè)隊(duì)列Q是根據(jù)從調(diào)度器3傳遞到排隊(duì)引擎2的決策(decision)來(lái)選擇。可見(jiàn),排隊(duì)引擎2使用NxK個(gè)通過(guò)共享描述符存儲(chǔ)器實(shí)施的隊(duì)列。不同隊(duì)列Q之間的這種高層劃分使得共享不同隊(duì)列Q之間可共享描述符存儲(chǔ)器。例如,共享描述符存儲(chǔ)器的形式為使用多個(gè)多寫(xiě)單讀存儲(chǔ)器。多寫(xiě)單讀存儲(chǔ)器可以用來(lái)存儲(chǔ)形成存儲(chǔ)數(shù)據(jù)(stored data)的主要部分的包描述符數(shù)據(jù)庫(kù)(Packet Descriptor database)。每個(gè)通路均復(fù)制其他數(shù)據(jù),例如隊(duì)列讀和寫(xiě)指針等隊(duì)列控制信息。但是,隊(duì)列控制信息僅形成了存儲(chǔ)數(shù)據(jù)的一小部分并且包括不依賴(lài)于數(shù)據(jù)流量(data traffic)且可擴(kuò)展的(scalable)恒定數(shù)據(jù)量(constant datavolume)。
[0067]一旦調(diào)度器3為出隊(duì)階段(dequeue phase)選擇隊(duì)列Q,可能報(bào)文已準(zhǔn)備好從所選隊(duì)列Q的多于一個(gè)子隊(duì)列SQ進(jìn)行傳送。但是,排隊(duì)引擎2中的存儲(chǔ)控制器9選擇了一個(gè)子隊(duì)列SQ,并且每個(gè)子隊(duì)列SQ之間的選擇可以由預(yù)定排序函數(shù)SF進(jìn)行。在可能實(shí)施方式中,存儲(chǔ)控制器9使用的排序函數(shù)SF可以響應(yīng)于控制信號(hào)而改變,例如以改變排隊(duì)裝置I的操作模式。
[0068]圖1所示的排隊(duì)裝置I可以在根據(jù)本發(fā)明的第二方面的流量管理設(shè)備中實(shí)施。流量管理設(shè)備可以是例如網(wǎng)絡(luò)的交換設(shè)備或路由器設(shè)備。
[0069]進(jìn)一步地,圖1所示的排隊(duì)裝置I可以集成到形成本發(fā)明的第三方面的集成電路中。集成電路可以是包括圖1所示的排隊(duì)裝置I的芯片。
[0070]本發(fā)明進(jìn)一步提供了根據(jù)第四方面的一種用于對(duì)在系統(tǒng)時(shí)鐘信號(hào)CLK的每個(gè)系統(tǒng)時(shí)鐘周期中使用排隊(duì)引擎2從N個(gè)輸入通路并發(fā)接收的包描述符進(jìn)行排隊(duì)的方法,其中排隊(duì)引擎2包括預(yù)定數(shù)目K個(gè)隊(duì)列Q,每個(gè)隊(duì)列Q具有與排隊(duì)引擎2的對(duì)應(yīng)輸入通路相關(guān)聯(lián)的N個(gè)子隊(duì)列SQ。預(yù)定數(shù)目K個(gè)隊(duì)列Q的子隊(duì)列SQ的所有描述符存儲(chǔ)在排隊(duì)引擎2的共享描述符存儲(chǔ)器10中,所述共享描述符存儲(chǔ)器10用于在系統(tǒng)時(shí)鐘信號(hào)CLK的每個(gè)系統(tǒng)時(shí)鐘周期中最多存儲(chǔ)N個(gè)描述符以及取回一個(gè)描述符。在根據(jù)本發(fā)明的第四方面的一種方法的可能實(shí)施方式中,在系統(tǒng)時(shí)鐘信號(hào)CLK的相同系統(tǒng)時(shí)鐘周期中,應(yīng)用到N個(gè)輸入通路的包描述符并行寫(xiě)入共享描述符存儲(chǔ)器10中以及從共享描述符存儲(chǔ)器10中讀取單個(gè)描述符。
[0071]在可能實(shí)施方式中,用于對(duì)描述符進(jìn)行排隊(duì)的方法可以通過(guò)執(zhí)行具有指令的控制程序以執(zhí)行根據(jù)本發(fā)明的第四方面的方法來(lái)執(zhí)行。該控制程序可以存儲(chǔ)在程序存儲(chǔ)器的可能實(shí)施方式中。在可能實(shí)施方式中,該控制程序可以從存儲(chǔ)這種控制程序的數(shù)據(jù)載波加載。在可能實(shí)施方式中,可以在VLSI應(yīng)用中使用一種可以在每個(gè)系統(tǒng)時(shí)鐘周期內(nèi)承受多寫(xiě)單讀的排隊(duì)系統(tǒng)中共享存儲(chǔ)器的方法和裝置。
[0072]根據(jù)本發(fā)明的排隊(duì)裝置I使用多端口共享存儲(chǔ)器5來(lái)創(chuàng)建排隊(duì)系統(tǒng)。它還減少了將排隊(duì)裝置I集成到芯片上時(shí)所需的硅區(qū)域。此外,通過(guò)使用較低頻率實(shí)現(xiàn)了較低功耗。
[0073]在可能的特定實(shí)施方式中,N (N = 4)個(gè)輸入通路指隊(duì)列數(shù)目K = 1024。隊(duì)列大小僅由總描述符存儲(chǔ)器限制。單個(gè)隊(duì)列Q可以使用整個(gè)描述符存儲(chǔ)器。排隊(duì)裝置I的不同輸入可以在相同時(shí)鐘周期內(nèi)發(fā)送數(shù)據(jù)到相同隊(duì)列Q。在根據(jù)本發(fā)明的排隊(duì)裝置I中,單個(gè)隊(duì)列Q由N個(gè)子隊(duì)列SQ表示。輸入通路連接到特定子隊(duì)列SQ。調(diào)度器3選擇隊(duì)列Q,使用預(yù)定排序函數(shù)SF選擇子隊(duì)列SQ。由于調(diào)度器3確實(shí)只看見(jiàn)K個(gè)隊(duì)列Q,因此排隊(duì)裝置I允許提供不太復(fù)雜的調(diào)度器3。
[0074]在可能實(shí)施方式中,每個(gè)通路將其傳入報(bào)文插入到自己的隊(duì)列組中。進(jìn)一步地,時(shí)間戳TS可以用來(lái)定義相同隊(duì)列Q的子隊(duì)列SQ之間的順序。
[0075]在可能實(shí)施方式中,每個(gè)隊(duì)列Q包括4個(gè)子隊(duì)列SQ。當(dāng)選擇隊(duì)列Q時(shí),讀取所有四個(gè)頭時(shí)間戳TS并由控制圖4所示的復(fù)用邏輯的評(píng)估單元來(lái)比較。在相同時(shí)鐘周期內(nèi)相同隊(duì)列Q從多于一個(gè)通路插入的情況下,在可能實(shí)施方式中通路號(hào)可以作為區(qū)分符。在根據(jù)本發(fā)明的排隊(duì)裝置I中,僅復(fù)制隊(duì)列頭/尾存儲(chǔ)器,而不復(fù)制主要的包描述符存儲(chǔ)器,從而節(jié)省了存儲(chǔ)空間。
【權(quán)利要求】
1.一種具有排隊(duì)引擎(2)的排隊(duì)裝置(1),其特征在于,包括: 預(yù)定數(shù)目K個(gè)隊(duì)列Q,其中每個(gè)隊(duì)列Q具有與所述排隊(duì)引擎(2)的N個(gè)對(duì)應(yīng)數(shù)目的輸入通路相關(guān)聯(lián)的N個(gè)子隊(duì)列SQ, 其中每個(gè)子隊(duì)列SQ用于存儲(chǔ)由所述排隊(duì)引擎(2)的每個(gè)相關(guān)聯(lián)的輸入通路應(yīng)用的包描述符;以及 用于存儲(chǔ)所述排隊(duì)引擎(2)的預(yù)定數(shù)目K個(gè)隊(duì)列Q的子隊(duì)列SQ的所有描述符的共享描述符存儲(chǔ)器(10), 其中在應(yīng)用到排隊(duì)引擎⑵的系統(tǒng)時(shí)鐘信號(hào)(CLK)的每個(gè)系統(tǒng)時(shí)鐘周期中,最多N個(gè)輸入通路請(qǐng)求對(duì)隊(duì)列Q的寫(xiě)入操作,以及最多一個(gè)對(duì)任意隊(duì)列Q的讀取操作。
2.根據(jù)權(quán)利要求1所述的排隊(duì)裝置(I),其特征在于, 每個(gè)子隊(duì)列SQ用于存儲(chǔ)最多M個(gè)應(yīng)用到所述子隊(duì)列SQ的相關(guān)聯(lián)的輸入通路的包描述符,其中每個(gè)子隊(duì)列SQ使用整個(gè)共享描述符存儲(chǔ)器(10),M是共享描述符存儲(chǔ)器(10)存儲(chǔ)的描述符的數(shù)目。
3.根據(jù)權(quán)利要求1或2所述的排隊(duì)裝置,其特征在于, 對(duì)于所述排隊(duì)引擎(2)的所述N個(gè)輸入通路的每個(gè)輸入通路,提供了對(duì)應(yīng)的入隊(duì)單元(7), 所述入隊(duì)單元(7)用于在系統(tǒng)時(shí)鐘信號(hào)(CLK)的每個(gè)系統(tǒng)時(shí)鐘周期內(nèi)將應(yīng)用到相應(yīng)輸入通路的包描述符入隊(duì)到與相應(yīng)輸入通路對(duì)應(yīng)的子隊(duì)列SQ中。
4.根據(jù)權(quán)利要求3所述的排隊(duì)裝置,其特征在于, 所述排隊(duì)引擎(2)進(jìn)一步包括出隊(duì)單元(8),用于在應(yīng)用到所述排隊(duì)引擎(2)的系統(tǒng)時(shí)鐘信號(hào)(CLK)的系統(tǒng)時(shí)鐘周期內(nèi)將描述符從任意隊(duì)列Q出隊(duì)。
5.根據(jù)前述權(quán)利要求1至4中任一權(quán)利要求所述的排隊(duì)裝置,其特征在于,進(jìn)一步包括調(diào)度器(3),用于選擇由所述排隊(duì)引擎(2)的出隊(duì)單元(8)進(jìn)行出隊(duì)的隊(duì)列Q ; 其中所述排隊(duì)引擎(2)進(jìn)一步包括存儲(chǔ)控制器(9),用于使用排序函數(shù)SF選擇被選擇的隊(duì)列Q的一個(gè)子隊(duì)列SQ。
6.根據(jù)權(quán)利要求5所述的排隊(duì)裝置,其特征在于, 由所述存儲(chǔ)控制器(9)使用的所述排序函數(shù)SF包括: 先入先出FIFO排序函數(shù), 其中,被選擇的隊(duì)列Q的N個(gè)子隊(duì)列SQ中的被選擇的子隊(duì)列SQ,包括被最小時(shí)間戳TS附著的在其隊(duì)列的頭中的描述符;或者 由所述存儲(chǔ)控制器(9)使用的所述排序函數(shù)SF包括: 循環(huán)排序函數(shù), 其中,每次所述調(diào)度器(3)選擇由所述排隊(duì)引擎(2)的出隊(duì)單元(8)進(jìn)行出隊(duì)的隊(duì)列時(shí),在隊(duì)列Q的N個(gè)子隊(duì)列中選擇不同的子隊(duì)列SQ,或者 由所述存儲(chǔ)控制器(9)使用的所述排序函數(shù)SF包括差額循環(huán)排序函數(shù)。
7.根據(jù)前述權(quán)利要求1至6中任一權(quán)利要求所述的排隊(duì)裝置,其特征在于,所述共享描述符存儲(chǔ)器(10)包括多寫(xiě)單讀存儲(chǔ)系統(tǒng),包括: 控制邏輯,用于在系統(tǒng)時(shí)鐘信號(hào)(CLK)的系統(tǒng)時(shí)鐘周期內(nèi)接收η個(gè)寫(xiě)入請(qǐng)求WR以及接收一個(gè)讀取請(qǐng)求RRdP η+1個(gè)用于存儲(chǔ)數(shù)據(jù)的存儲(chǔ)器塊,η是整數(shù);所述多讀單寫(xiě)存儲(chǔ)系統(tǒng)的所述控制邏輯用于控制每個(gè)存儲(chǔ)器塊的存儲(chǔ)器塊占用率MBOL使得存儲(chǔ)器塊的存儲(chǔ)器塊占用率MBOL之間的差值最小化。
8.根據(jù)權(quán)利要求3或4所述的排隊(duì)裝置,其特征在于, 所述排隊(duì)引擎(2)進(jìn)一步包括存儲(chǔ)控制器(9),用于接收來(lái)自所述出隊(duì)單元(7)的包括描述符的隊(duì)列數(shù)據(jù)和向所述出隊(duì)單元(8)提供包括描述符的出隊(duì)數(shù)據(jù)。
9.根據(jù)權(quán)利要求7或8所述的排隊(duì)裝置,其特征在于, 所述存儲(chǔ)控制器(9)被連接到所述多寫(xiě)單讀存儲(chǔ)系統(tǒng)的所述控制邏輯,所述多寫(xiě)單讀存儲(chǔ)系統(tǒng)形成所述排隊(duì)引擎(2)的所述共享描述符存儲(chǔ)器(10)。
10.根據(jù)前述權(quán)利要求8或9中的一項(xiàng)權(quán)利要求所述的排隊(duì)裝置,其特征在于, 所述排隊(duì)引擎(2)包括下一指針存儲(chǔ)器、自由緩沖池存儲(chǔ)器和時(shí)間戳存儲(chǔ)器,其通過(guò)被連接到所述存儲(chǔ)控制器(9)的多寫(xiě)單讀存儲(chǔ)系統(tǒng)形成; 被提供的所述時(shí)間戳存儲(chǔ)器用于存儲(chǔ)被附著到包描述符的時(shí)間戳TS,所述包描述符由所述排隊(duì)引擎(2)通過(guò)輸入通路接收。
11.根據(jù)權(quán)利要求3或4所述的排隊(duì)裝置,其特征在于, 所述排隊(duì)引擎(2)的所述入隊(duì)單元(7)和所述出隊(duì)單元(8)具有訪問(wèn)隊(duì)列信息存儲(chǔ)器(11)的能力,其存儲(chǔ)了隊(duì)列Q的信息數(shù)據(jù)。
12.根據(jù)權(quán)利要求10所述的排隊(duì)裝置,其特征在于, 對(duì)于由所述排隊(duì)引擎(2)通過(guò)輸入通路接收的每個(gè)報(bào)文,時(shí)間戳TS被附著到其包描述符,其中所述時(shí)間戳TS指示相應(yīng)報(bào)文的到達(dá)時(shí)間。
13.根據(jù)權(quán)利要求12所述的排隊(duì)裝置,其特征在于, 所述包描述符包括存儲(chǔ)器地址以為存儲(chǔ)在所述排隊(duì)裝置(I)的共享數(shù)據(jù)存儲(chǔ)器(4)中的所述被接收的報(bào)文的凈荷尋址。
14.一種流量管理設(shè)備,其特征在于,包括根據(jù)前述權(quán)利要求1至13中的一項(xiàng)權(quán)利要求所述的包括排隊(duì)裝置(I)。
15.一種用于對(duì)在系統(tǒng)時(shí)鐘信號(hào)(CLK)的每個(gè)系統(tǒng)時(shí)鐘周期中使用排隊(duì)引擎(2)從N個(gè)輸入通路并發(fā)接收的包描述符進(jìn)行排隊(duì)的方法,其特征在于,所述排隊(duì)引擎(2)包括預(yù)定數(shù)目K個(gè)隊(duì)列Q,每個(gè)隊(duì)列Q具有與所述排隊(duì)引擎(2)的對(duì)應(yīng)輸入通路相關(guān)聯(lián)的N個(gè)子隊(duì)列SQ, 其中,預(yù)定數(shù)目K個(gè)隊(duì)列Q的子隊(duì)列SQ的所有描述符存儲(chǔ)在所述排隊(duì)引擎(2)的共享描述符存儲(chǔ)器(10)中,所述共享描述符存儲(chǔ)器(10)用于在系統(tǒng)時(shí)鐘信號(hào)(CLK)的每個(gè)系統(tǒng)時(shí)鐘周期中最多存儲(chǔ)N個(gè)描述符以及取回一個(gè)描述符。
【文檔編號(hào)】H04L12/861GK103988167SQ201180075404
【公開(kāi)日】2014年8月13日 申請(qǐng)日期:2011年12月7日 優(yōu)先權(quán)日:2011年12月7日
【發(fā)明者】亞戎·夏哈, 拉米·茨卡里埃 申請(qǐng)人:華為技術(shù)有限公司