存儲(chǔ)器聚合設(shè)備的制造方法
【專利說明】存儲(chǔ)器聚合設(shè)備
【背景技術(shù)】
[0001] 本發(fā)明涉及一種存儲(chǔ)器聚合設(shè)備以及一種用于將多個(gè)輸入數(shù)據(jù)流存儲(chǔ)至一個(gè) FIFO存儲(chǔ)器組以及在所述FIFO存儲(chǔ)器組中取出多個(gè)輸出數(shù)據(jù)流的方法。
[0002] 高速硬件經(jīng)常需要將很多數(shù)據(jù)流聚合成單個(gè)數(shù)據(jù)流。這在當(dāng)前已普遍使用,其在 系統(tǒng)的輸入中,以及在一種將流量作為單個(gè)數(shù)據(jù)流調(diào)度出的機(jī)制中使用多個(gè)FIFO。由于不 同的FIFO使用不用的存儲(chǔ)器,且這些存儲(chǔ)器并不共享,故存在缺陷,可能導(dǎo)致芯片存儲(chǔ)區(qū) 域的大幅浪費(fèi)。
【發(fā)明內(nèi)容】
[0003] 本發(fā)明的目的在于提供一種單個(gè)聚合器FIFO的概念。
[0004] 該目的通過獨(dú)立權(quán)利要求的特征來實(shí)現(xiàn)。通過權(quán)利要求、說明書和附圖,更易于進(jìn) 一步理解實(shí)施形式。
[0005] 本發(fā)明的主要思想在于提供一種通過一個(gè)FIFO存儲(chǔ)器組以使用共享存儲(chǔ)器的單 個(gè)聚合器FIFO。通過各單個(gè)的FIFO存儲(chǔ)器的互連機(jī)制,使各FIFO存儲(chǔ)器如使用共享存儲(chǔ) 器的單個(gè)FIFO-樣運(yùn)行。
[0006] 所述互連機(jī)制包括將輸入流量互連至所述FIFO存儲(chǔ)器組的輸入互連矩陣以及將 所述FIFO存儲(chǔ)器互連至輸出流量的輸出互連矩陣。輸入互連和輸出互連由存儲(chǔ)控制器根 據(jù)數(shù)據(jù)聚合規(guī)則控制。
[0007] 為詳細(xì)描述本發(fā)明,將使用以下術(shù)語、縮寫和符號(hào):
[0008] FIFO :先進(jìn)先出存儲(chǔ)器(First-In First-〇ut memory),
[0009] VLSL:超大規(guī)模集成電路(Very large scale integration),
[0010] QoS:服務(wù)質(zhì)量(qualityofservice),
[0011] CPU :中央處理器(central processing unit),
[0012] RR :輪詢(round-robin),
[0013] RCS :速率控制選擇單元或速率限制單元(rate control selection unit or rate limiting unit),
[0014] LVP :查找向量準(zhǔn)備單元(lookup vector prepare unit),
[0015] PFF :前綴森林單元(pre-fix forest unit),
[0016] req_vec :請(qǐng)求組或請(qǐng)求向量(set of requests or vector of requests),
[0017] ack_vec :確認(rèn)組或確認(rèn)向量(set of acknowledgements or vector of acknowledgements),
[0018] raw_mask :選擇掩碼組或選擇掩碼向量(set of selection masks or vector of selection masks),
[0019] CMP :比較模塊(compare module),
[0020] NASO :Not And Shift One module,
[0021]TE、Bid和Sel:指定可能有不同優(yōu)先級(jí)的不同隊(duì)列組(designate different queue groups which may have different priorities),
[0022]PD :傳播延遲(propagation delay),
[0023]FA 和 HA :實(shí)現(xiàn)前綴樹的加法器(adders implementing the prefix tree)〇
[0024] 根據(jù)第一方面,本發(fā)明涉及一種用于存儲(chǔ)一個(gè)輸入數(shù)據(jù)流組(set of input data streams)以及將數(shù)據(jù)取出至一個(gè)輸出數(shù)據(jù)流組(set of output data streams)的存儲(chǔ)器 聚合設(shè)備(memory aggregation device),其中,所述輸入數(shù)據(jù)流組和所述輸出數(shù)據(jù)流組 是可操作的從而在每個(gè)時(shí)鐘周期內(nèi)進(jìn)行發(fā)送新數(shù)據(jù)和停止發(fā)送新數(shù)據(jù)中的任一項(xiàng),所述存 儲(chǔ)器聚合設(shè)備包括:一個(gè)FIFO存儲(chǔ)器組(set of FIFO memories),其中,每個(gè)FIFO存儲(chǔ) 器包括輸入(input)和輸出(output);輸入互連器(input interconnector),用于根據(jù)輸 入互連矩陣(input interconnection matrix),將所述輸入數(shù)據(jù)流組中的每個(gè)輸入數(shù)據(jù)流 與所述FIFO存儲(chǔ)器組中的每個(gè)輸入進(jìn)行互連;輸出互連器(output interconnector),用 于根據(jù)輸出互連矩陣(output interconnection matrix),將所述FIFO存儲(chǔ)器組中的每個(gè) 輸出與所述輸出數(shù)據(jù)流組中的每個(gè)輸出數(shù)據(jù)流進(jìn)行互連;輸入選擇器(input selector), 用于根據(jù)輸入數(shù)據(jù)調(diào)度方案(output data scheduling scheme),選擇所述輸入互連矩陣; 輸出選擇器(output selector),用于根據(jù)輸出數(shù)據(jù)調(diào)度方案(output data scheduling scheme),選擇所述輸出互連矩陣;存儲(chǔ)控制器(memory controller),與所述輸入選擇器和 所述輸出選擇器耦合,其中,所述存儲(chǔ)控制器用于:控制所述輸入數(shù)據(jù)調(diào)度方案,以使來自 所述輸入數(shù)據(jù)流組的數(shù)據(jù)通過輪詢方式在所述FIFO存儲(chǔ)器組中分發(fā)(spread),以及控制 所述輸出數(shù)據(jù)調(diào)度方案,以使來自所述FIFO存儲(chǔ)器組的數(shù)據(jù)通過輪詢方式取出至所述輸 出數(shù)據(jù)流組中。
[0025] 通過輪詢機(jī)制,整個(gè)存儲(chǔ)器聚合設(shè)備,即寬FIFO通過"先進(jìn)先出"方式運(yùn)行。每個(gè) 請(qǐng)求將幾乎同時(shí)得到處理。因此,存儲(chǔ)器聚合設(shè)備作為單個(gè)聚合器FIFO運(yùn)行,且所述存儲(chǔ) 器聚合設(shè)備有較高的吞吐量。
[0026] 當(dāng)來自所述輸入數(shù)據(jù)流組的數(shù)據(jù)在所述FIFO存儲(chǔ)器組中分發(fā),這些數(shù)據(jù)均勻加 載到所述FIFO存儲(chǔ)器上,且不會(huì)發(fā)生過載,因而提高了所述FIFO存儲(chǔ)器的吞吐量。
[0027] 輸入/輸出互連器可作為同步硬件電路調(diào)度器實(shí)現(xiàn)。所述輸入/輸出互連器能夠 根據(jù)某一調(diào)度方案,選擇N個(gè)請(qǐng)求,例如,輸入隊(duì)列或輸出隊(duì)列,且所述輸入/輸出互連器能 夠在每個(gè)時(shí)鐘周期內(nèi)進(jìn)行P次選擇或發(fā)放。因此,所述輸入/輸出互連器允許以低時(shí)延和 高于系統(tǒng)時(shí)鐘的速率來處理請(qǐng)求。
[0028] 所述輸入/輸出互連器可用作CPU中的任務(wù)調(diào)度器,或用于在切換元素或路由元 素時(shí)對(duì)數(shù)據(jù)包進(jìn)行調(diào)度。為得到復(fù)雜的調(diào)度方案,所述輸入/輸出互連器作為存儲(chǔ)器聚合 設(shè)備的構(gòu)造塊。所述輸入/輸出互連器與若干任務(wù)調(diào)度器連接,其中,為得到存儲(chǔ)器聚合設(shè) 備的分層調(diào)度方案,輸入/輸出互連器配置不同。這樣,存儲(chǔ)器聚合設(shè)備能如單個(gè)共享存儲(chǔ) 器一樣運(yùn)行,從而能夠應(yīng)用統(tǒng)一設(shè)計(jì)的FIFO存儲(chǔ)器。
[0029] 根據(jù)第一方面,在所述存儲(chǔ)器聚合設(shè)備的第一種可能的實(shí)施形式中,多個(gè)FIFO存 儲(chǔ)器(901a、901b,......,901c) (a number of the FIFO memories)與多個(gè)輸入數(shù)據(jù)流(902) (a number of the input data streams)對(duì)應(yīng)。
[0030] 當(dāng)FIFO存儲(chǔ)器的數(shù)量與輸入數(shù)據(jù)流的數(shù)量對(duì)應(yīng)時(shí),存儲(chǔ)器聚合設(shè)備的設(shè)計(jì)較方 便。
[0031] 根據(jù)第一方面或根據(jù)第一方面的第一種實(shí)施形式,在所述存儲(chǔ)器聚合設(shè)備的第二 種可能的實(shí)施形式中,所述輸入互連器包括一個(gè)復(fù)用器組(set of multiplexers),用于實(shí) 現(xiàn)所述輸入互連矩陣,且所述輸出互連器包括一個(gè)復(fù)用器組,用于實(shí)現(xiàn)所述輸出互連矩陣。
[0032] 所述復(fù)用器組,例如,作為VLSL系統(tǒng)設(shè)計(jì)中的標(biāo)準(zhǔn)門陣列(standard gate arrays)實(shí)現(xiàn),便于所述存儲(chǔ)器聚合設(shè)備的設(shè)計(jì),且便于移動(dòng)到不同的硬件平臺(tái)。
[0033] 根據(jù)第一方面的第二種實(shí)施形式,在所述存儲(chǔ)器聚合設(shè)備的第三種可能的實(shí)施形 式中,所述輸入選擇器包括一個(gè)門樹仲裁器邏輯(gate-tree-arbiter logic),用于控制所 述輸入互連器的所述復(fù)用器組,且所述輸出選擇器包括一個(gè)門樹仲裁器邏輯,用于控制所 述輸出互連器的所述復(fù)用器組。
[0034] 所述門樹仲裁器邏輯是一種用于快速切換的高效硬件結(jié)構(gòu)。
[0035] 根據(jù)第一方面或根據(jù)第一方面的上述實(shí)施形式中的任意一種,在所述存儲(chǔ)器聚合 設(shè)備的第四種可能的實(shí)施形式中,所述輸入選擇器用于選擇所述輸入互連矩陣,使得所述 輸入數(shù)據(jù)流組中,只有攜帶有效數(shù)據(jù)請(qǐng)求的數(shù)據(jù)流互連至所述FIFO存儲(chǔ)器組。
[0036] 通過這種處理,由于不會(huì)對(duì)無效數(shù)據(jù)請(qǐng)求進(jìn)行處理,也不會(huì)將無效數(shù)據(jù)請(qǐng)求存儲(chǔ) 至所述存儲(chǔ)器聚合設(shè)備中,因此,提高了所述存儲(chǔ)器聚合設(shè)備的吞吐量。
[0037] 根據(jù)第二方面,本發(fā)明涉及一種用于存儲(chǔ)一個(gè)輸入數(shù)據(jù)流組以及將數(shù)據(jù)取出至 一個(gè)輸出數(shù)據(jù)流組的存儲(chǔ)器聚合設(shè)備,其中,所述輸入數(shù)據(jù)流組和所述輸出數(shù)據(jù)流組是可 操作的從而在每個(gè)時(shí)鐘周期內(nèi)進(jìn)行發(fā)送新數(shù)據(jù)和停止發(fā)送新數(shù)據(jù)中的任一項(xiàng),且所述存儲(chǔ) 器聚合設(shè)備包括:一個(gè)FIFO存儲(chǔ)器組,其中,每個(gè)FIFO存儲(chǔ)器包括輸入和輸出;輸入互連 器,用于根據(jù)輸入互連矩陣,將所述輸入數(shù)據(jù)流組中的每個(gè)輸入數(shù)據(jù)流與所述FIFO存儲(chǔ)器 組中的每個(gè)輸入進(jìn)行互連;輸出互連器,用于根據(jù)輸出互連矩陣,將所述FIFO存儲(chǔ)器組中 的每個(gè)輸出與所述輸出數(shù)據(jù)流組中的每個(gè)輸出數(shù)據(jù)流進(jìn)行互連;輸入選擇器,用于選擇所 述輸入互連矩陣,使得所述輸入數(shù)據(jù)流組中,攜帶有效數(shù)據(jù)請(qǐng)求(valid data requests) 的數(shù)據(jù)流壓縮成所述FIFO存儲(chǔ)器組中一個(gè)連續(xù)的數(shù)據(jù)請(qǐng)求組(continuous set of data requests);輸出選擇器,用于根據(jù)輸出數(shù)據(jù)調(diào)度方案,選擇所述輸出互連矩陣;存儲(chǔ)控制 器,與所述輸入選擇器和所述輸出選擇器耦合。
[0038] 為了使所述FIFO組作為一個(gè)寬FIFO運(yùn)行,有必要對(duì)輸入數(shù)據(jù)流進(jìn)行壓縮。
[0039] 根據(jù)第二方面,在所述存儲(chǔ)器聚合設(shè)備的第一種可能的實(shí)施形式中,所述輸入選 擇器用于選擇所述輸入互連矩陣,使得所述輸入數(shù)據(jù)流組中,攜帶有效數(shù)據(jù)請(qǐng)求的所述數(shù) 據(jù)流與指向所述FIFO存儲(chǔ)器組的空條目(vacant entry)的FIFO指針(FIFO pointer)對(duì) 齊。
[0040] 當(dāng)只有攜帶有效數(shù)據(jù)請(qǐng)求的數(shù)據(jù)流與指向空FIFO條目的FIFO指針對(duì)齊時(shí),由于 未對(duì)無效數(shù)據(jù)請(qǐng)求進(jìn)行互連,因而提高了數(shù)據(jù)吞吐量。
[0041] 根據(jù)第二方面或根據(jù)第二方面的第一種實(shí)施形式,在所述存儲(chǔ)器聚合設(shè)備的第二 種可能的實(shí)施形式中,所述存儲(chǔ)器聚合設(shè)備包括:時(shí)鐘輸入(clock input),用于接收時(shí)鐘 信號(hào),其中,所述輸入選擇器用于在所述時(shí)鐘信號(hào)的每個(gè)時(shí)鐘周期內(nèi),切換所述輸入互連矩 陣,且所述輸出選擇器用于在所述時(shí)鐘信號(hào)的每個(gè)時(shí)鐘周期內(nèi),切換所述輸出互連矩陣。
[0042] 當(dāng)在每個(gè)時(shí)鐘周期內(nèi)切換輸入互連矩陣和輸出互連矩陣時(shí),在每個(gè)時(shí)鐘周期內(nèi), 可將新的數(shù)據(jù)請(qǐng)求存儲(chǔ)至FIFO存儲(chǔ)器中,從而減少了延遲時(shí)間,并提高了存儲(chǔ)器聚合設(shè)備 的吞吐量。
[0043] 根據(jù)第二方面的第二種實(shí)施形式,在所述存儲(chǔ)器聚合設(shè)備的第三種可能的實(shí)施形 式中,所述輸入選擇器用于接收指示所述輸入數(shù)據(jù)流組中攜帶有效數(shù)據(jù)請(qǐng)求的多個(gè)數(shù)據(jù) 流的R位向量(R-bit vector),且用于選擇所述輸入互連矩陣,使得在所述時(shí)鐘信號(hào)的每 個(gè)時(shí)鐘周期內(nèi),所述輸入數(shù)據(jù)流組中的所述多個(gè)數(shù)據(jù)流的前G個(gè)數(shù)據(jù)請(qǐng)求(first G data requests)互連至所述FIFO存儲(chǔ)器組,其中,R和G為整數(shù)。
[0044] 因此,在每個(gè)時(shí)鐘周期內(nèi),G個(gè)數(shù)據(jù)請(qǐng)求由存儲(chǔ)器聚合設(shè)備進(jìn)行處理,這提高了吞 吐率。
[0045] 根據(jù)第二方面的第二種實(shí)施形式或第三種實(shí)施形式,在所述存儲(chǔ)器聚合設(shè)備的第 四種可能的實(shí)施形式中,所述輸出選擇器用于接收指示所述輸出數(shù)據(jù)流組中攜帶有效數(shù)據(jù) 請(qǐng)求的多個(gè)數(shù)據(jù)流的R位向量,且用于選擇所述輸出互連矩陣,使得在所述時(shí)鐘信號(hào)的每 個(gè)時(shí)鐘周期內(nèi),所述輸出數(shù)據(jù)流組中的所述多個(gè)數(shù)據(jù)流的前G個(gè)數(shù)據(jù)請(qǐng)求互連至所述FIFO 存儲(chǔ)器組,其中,R和G為整數(shù)。
[0046] 通過這種處理,提高了所述存儲(chǔ)器聚合設(shè)備的吞吐量。
[0047] 根據(jù)第二方面的第三種實(shí)施形式或第四種實(shí)施