欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于標(biāo)簽的無序矢量歸約電路的制作方法

文檔序號:6548456閱讀:181來源:國知局
一種基于標(biāo)簽的無序矢量歸約電路的制作方法
【專利摘要】本發(fā)明公開了一種基于標(biāo)簽的無序矢量歸約電路,一個矢量內(nèi)所有的數(shù)據(jù)均附帶有一個信號以指明其所屬的矢量,該信號為數(shù)據(jù)的標(biāo)簽;無序矢量歸約電路包括一個容器模塊,緩沖區(qū)模塊,多路選擇器模塊和運算器模塊。該無序矢量歸約電路能夠同時處理多個獨立的、任意長度的矢量的歸約運算,數(shù)據(jù)的輸入次序任意;僅使用一個通用硬件運算器,且完全流水;靈活性與可伸縮性強,內(nèi)部不存在復(fù)雜的控制算法和邏輯;接口簡單,操作時序與一個通用的隨機訪問存儲器相同。
【專利說明】一種基于標(biāo)簽的無序矢量歸約電路【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種矢量歸約電路領(lǐng)域,更具體地,涉及一種基于標(biāo)簽的、可同時進行多個獨立矢量的歸約運算的、數(shù)據(jù)輸入次序任意的無序矢量歸約電路。
【背景技術(shù)】
[0002]矢量歸約,是指將一系列的輸入數(shù)據(jù)的值,即矢量,通過運算歸約為一個標(biāo)量值的過程。這種類型的矢量運算形式是大量科學(xué)與工程運算的基礎(chǔ),其核心運算一般滿足交換率和結(jié)合率。常見的矢量歸約運算有矢量中所有元素的累加和、累乘積,尋找矢量中的最大、最小元素等。矢量歸約運算的特點是其為多步運算,且后面步驟需要前面步驟的運算結(jié)果O
[0003]在一些對算法實時性要求高的嵌入式應(yīng)用中,矢量歸約運算的功能需要在FPGA、ASIC等芯片上以硬件電路的形式實現(xiàn)。然而,為了達到更高的工作頻率,大多復(fù)雜運算如浮點加法和浮點乘法等的硬件運算器,通常經(jīng)過深度流水,延遲超過一個時鐘周期。使用多周期硬件運算器的矢量歸約電路應(yīng)當(dāng)安排好運算的各個步驟,合理地存儲和調(diào)度各步驟的運算結(jié)果,使得硬件運算器的流水線能盡量地被填滿,保證電路的吞吐量。另外,考慮到資源利用效率和系統(tǒng)總體性能,一個矢量歸約電路應(yīng)該使用盡量少的硬件運算器,能同時處理多個獨立矢量的歸約運算 ,并且實現(xiàn)完全流水,不阻塞輸入數(shù)據(jù)。
[0004]現(xiàn)有的矢量歸約電路中有一些可以滿足上述要求,但在同時處理多個矢量的歸約運算時,都要求一個矢量的數(shù)據(jù)全部輸入電路后才能輸入下一個矢量的數(shù)據(jù),也就是說,要求輸入數(shù)據(jù)有序。然而,在一些應(yīng)用中,矢量歸約電路需要處理的數(shù)據(jù)的輸入次序是無序的,即多個矢量的數(shù)據(jù)無規(guī)律地混雜在一起輸入。例如,矢量歸約電路與多個上位模塊通過應(yīng)用Lottery算法等基于概率的仲裁算法的總線仲裁器連接,或組成了片上網(wǎng)絡(luò),這時輸入數(shù)據(jù)的次序基本無法預(yù)測;現(xiàn)有的矢量歸約電路無法處理這樣的輸入數(shù)據(jù)。
[0005]另外,從面向?qū)嶋H應(yīng)用角度出發(fā),一個矢量歸約電路應(yīng)該有規(guī)范和友好的接口,無復(fù)雜的操作時序,以保證與上下位模塊的良好兼容性。現(xiàn)有的矢量歸約電路大多不關(guān)注這方面的問題,給實際應(yīng)用帶來不便。

【發(fā)明內(nèi)容】

[0006]針對現(xiàn)有的矢量歸約電路存在的問題,本發(fā)明提出了一種基于標(biāo)簽的無序矢量歸約電路,它能同時處理多個獨立的、任意長度的矢量的歸約運算,數(shù)據(jù)的輸入次序任意;本矢量歸約電路更靈活性,可伸縮性強,內(nèi)部不存在復(fù)雜的控制算法和邏輯。
[0007]為了實現(xiàn)上述目的,本發(fā)明的技術(shù)方案為:
[0008]一種基于標(biāo)簽的無序矢量歸約電路,一個矢量內(nèi)所有的數(shù)據(jù)均附帶有一個信號以指明其所屬的矢量,該信號為數(shù)據(jù)的標(biāo)簽;
[0009]電路包括容器模塊、緩沖區(qū)模塊、多路選擇器模塊及運算器模塊;
[0010]容器模塊:在每個時鐘周期,容器模塊接受兩個帶標(biāo)簽數(shù)據(jù),檢查容器模塊內(nèi)所有的數(shù)據(jù),將帶有相同標(biāo)簽的數(shù)據(jù)兩兩配成帶標(biāo)簽數(shù)據(jù)對,并輸出,
[0011]容器模塊每個時鐘周期接受的兩個帶標(biāo)簽數(shù)據(jù)分別是來自無序矢量歸約電路外部的帶標(biāo)簽數(shù)據(jù)與運算器模塊輸出的帶標(biāo)簽數(shù)據(jù);
[0012]緩沖區(qū)模塊:根據(jù)容器模塊輸出的帶標(biāo)簽數(shù)據(jù)對的數(shù)量進行緩沖操作;
[0013]多路選擇器模塊:將緩沖區(qū)模塊選通輸出的有效帶標(biāo)簽數(shù)據(jù)對輸出至運算器模塊;
[0014]運算器模塊:對輸入的有效帶標(biāo)簽數(shù)據(jù)對中的數(shù)據(jù)進行運算,將運算結(jié)果和有效帶標(biāo)簽數(shù)據(jù)中的標(biāo)簽構(gòu)成一個帶標(biāo)簽數(shù)據(jù),返回容器模塊。
[0015]矢量歸約的核心運算通常是滿足交換率和結(jié)合率的二元運算(乘法,加法,取大者,取小者等)。稱一個矢量的所有原始數(shù)據(jù)及歸約運算時的所有中間結(jié)果的集合為一個數(shù)據(jù)集。對于多個矢量的歸約運算,本發(fā)明的處理過程:設(shè)置一個容器模塊,在每個時鐘周期將當(dāng)前的輸入數(shù)據(jù)和從運算器輸出的中間結(jié)果數(shù)據(jù)放入容器,并從容器中選出兩個屬于同一數(shù)據(jù)集的數(shù)據(jù)組成一對,送入運算器中進行運算。若所有矢量的數(shù)據(jù)已經(jīng)輸入電路,容器中任意兩個數(shù)據(jù)都不屬于同一個數(shù)據(jù)集,而運算器的流水線已經(jīng)為空,那么所有矢量的歸約運算便完成,此時容器里的數(shù)據(jù)便是所有矢量的歸約運算結(jié)果。這樣的處理方式顯然并不需要關(guān)心這些矢量的數(shù)據(jù)的輸入次序。因為輸入數(shù)據(jù)是來自多個矢量的數(shù)據(jù)混雜而成,每個數(shù)據(jù)必定會附帶一個信號以指明其所屬的矢量。將這個信號視為數(shù)據(jù)信號的標(biāo)簽信號,附加在數(shù)據(jù)信號上。容器依靠標(biāo)簽來區(qū)分各個數(shù)據(jù)集的數(shù)據(jù),對數(shù)據(jù)相應(yīng)的進行存儲和匹配等操作。相同標(biāo)簽的數(shù)據(jù)會被組成一對送入運算器,運算結(jié)果也會被附加上一樣的標(biāo)簽。這樣,每個數(shù)據(jù)集都對應(yīng)唯一一個標(biāo)簽值,無效的數(shù)據(jù)會被附加一個與所有數(shù)據(jù)集的標(biāo)簽都不同的標(biāo)簽,以指明其無效,不屬于任何一個數(shù)據(jù)集,保證運算的正確性與準(zhǔn)確性。
[0016]所述容器模塊每個時鐘周期接受來自電路外部與運算器模塊輸出的兩個帶標(biāo)簽數(shù)據(jù),并且檢查包括當(dāng)前輸入的兩個帶標(biāo)簽數(shù)據(jù)在內(nèi)的所有內(nèi)部數(shù)據(jù),將相同標(biāo)簽的數(shù)據(jù)都兩兩配成帶標(biāo)簽數(shù)據(jù)對,并全部輸出。
[0017]由于成對的數(shù)據(jù)會被馬上配成數(shù)據(jù)對輸出,所以對于每一個數(shù)據(jù)集,容器模塊最多只用存儲它的一個數(shù)據(jù)。即容器模塊的存儲空間大小等于所述電路能同時處理的無序輸入矢量個數(shù)。當(dāng)同時處理的矢量個數(shù)不超過容器模塊的存儲空間大小,無論其數(shù)據(jù)的輸入次序如何,電路能保證運算的正確性與準(zhǔn)確性。
[0018]由于帶標(biāo)簽數(shù)據(jù)對只可能由輸入的兩個帶標(biāo)簽數(shù)據(jù)對構(gòu)成,或由輸入的帶標(biāo)簽數(shù)據(jù)與之前存儲在容器模塊內(nèi)部的數(shù)據(jù)構(gòu)成,在每個時鐘周期,容器模塊輸出帶標(biāo)簽數(shù)據(jù)對的數(shù)量的情況分為三種:不輸出帶標(biāo)簽數(shù)據(jù)對,記為狀態(tài)O ;輸出一對帶標(biāo)簽數(shù)據(jù)對,記為狀態(tài)I ;輸出兩對帶標(biāo)簽數(shù)據(jù)對,記為狀態(tài)2 ;
[0019]緩沖區(qū)模塊是根據(jù)所述容器模塊輸出的帶標(biāo)簽數(shù)據(jù)對的數(shù)量進行緩沖操作,以解決當(dāng)容器模塊同時輸出2個帶標(biāo)簽數(shù)據(jù)對所導(dǎo)致的沖突。具體過程:
[0020]當(dāng)容器模塊輸出帶標(biāo)簽數(shù)據(jù)對的數(shù)量情形屬于狀態(tài)O時,緩沖區(qū)模塊彈出一對帶標(biāo)簽數(shù)據(jù)對;
[0021]當(dāng)容器模塊輸出帶標(biāo)簽數(shù)據(jù)對的數(shù)量情形屬于狀態(tài)I時,緩沖區(qū)模塊保持上一個時鐘周期的狀態(tài)不變;
[0022]當(dāng)容器模塊輸出帶標(biāo)簽數(shù)據(jù)對的數(shù)量情形屬于狀態(tài)2時,緩沖區(qū)模塊將其中I個帶標(biāo)簽數(shù)據(jù)對壓入。
[0023]當(dāng)容器模塊輸出帶標(biāo)簽數(shù)據(jù)對的數(shù)量情形屬于狀態(tài)O時,緩沖區(qū)模塊彈出一對帶標(biāo)簽數(shù)據(jù)對;當(dāng)緩沖區(qū)模塊為空,令緩沖區(qū)模塊輸出端口的標(biāo)簽部分為無效值,以保證運算的正確性與準(zhǔn)確性。
[0024]本發(fā)明的電路對緩沖區(qū)模塊的壓入彈出次序無要求。緩沖區(qū)的最小深度是一個與要同時處理的矢量個數(shù)、各個矢量的長度、各個矢量的數(shù)據(jù)輸入的次序皆無關(guān)的有限值P-1,其中P為容器模塊與運算器模塊的流水線級數(shù)之和。只要不小于該最小深度,在任意的矢量長度及數(shù)據(jù)輸入次序,緩沖區(qū)模塊不會溢出。
[0025]運算器模塊由一個通用運算器和一個信號延遲器構(gòu)成,通用運算器根據(jù)具體要進行的矢量歸約運算選定,其流水線級數(shù)是任意的;信號延遲器的延遲周期數(shù)與通用運算器的流水線級數(shù)相等,以使通用運算器的輸出數(shù)據(jù)與信號延遲器的輸出標(biāo)簽匹配。
[0026]每個時鐘周期,運算器模塊接受一個帶標(biāo)簽數(shù)據(jù)對,數(shù)據(jù)部分送入通用運算器進行運算,標(biāo)簽部分送入信號延遲器進行延遲,將運算器輸出的數(shù)據(jù)與信號延遲器輸出的標(biāo)簽構(gòu)成一個帶標(biāo)簽數(shù)據(jù),返回容器模塊。
[0027]多路選擇器模塊將容器模塊和緩沖區(qū)模塊輸出的帶標(biāo)簽數(shù)據(jù)對選通對至運算器模塊。在每個時鐘周期,若容器模塊輸出I個帶標(biāo)簽數(shù)據(jù)對,多路選擇器模塊將這個帶標(biāo)簽數(shù)據(jù)對選通至運算器模塊;若容器模塊輸出2個帶標(biāo)簽數(shù)據(jù)對,多路選擇器模塊將未被壓入所述的緩沖區(qū)模塊的帶標(biāo)簽數(shù)據(jù)對選通至運算器模塊;若容器模塊輸出O個帶標(biāo)簽數(shù)據(jù)對,多路選擇器模塊將緩沖區(qū)模塊彈出的帶標(biāo)簽數(shù)據(jù)對選通至運算器模塊。
[0028]多路選擇器模塊根據(jù)容器模塊提供的一組狀態(tài)信號,將容器模塊和緩沖區(qū)模塊輸出的有效帶標(biāo)簽數(shù)據(jù)對選通對至運算器模塊,選通策略能保證所有矢量的歸約運算的正確性與準(zhǔn)確性。
[0029]容器模塊每個時鐘周期都可以接受一個來自外部的帶標(biāo)簽數(shù)據(jù),緩沖區(qū)模塊只要不小于最小深度就不會溢出,運算器模塊每個時鐘周期只需處理一個帶標(biāo)簽數(shù)據(jù)對,而輸出的帶標(biāo)簽數(shù)據(jù)也可以無阻塞地進入容器模塊。這表示本發(fā)明的電路不存在阻塞的狀況,是完全流水的。
[0030]來自外部的帶標(biāo)簽數(shù)據(jù)輸入容器模塊時是無阻塞的,所有矢量的歸約運算結(jié)果也存儲在容器模塊,由于容器模塊的存儲空間與數(shù)據(jù)集是映射的,可用標(biāo)簽在容器模塊中尋址。這使得對于電路的數(shù)據(jù)輸入輸出而言,標(biāo)簽信號等價于地址信號,所述的電路的操作時序與通用的隨機訪問存儲器一樣。
[0031]當(dāng)最后一個帶標(biāo)簽數(shù)據(jù)輸入電路,經(jīng)過最多/?(「1θ§2;?"|+1) + ρ-2「1<>g2pl個時鐘周
期,可以從所述的容器模塊內(nèi)讀取到所有矢量的歸約運算結(jié)果,其中P為所述的電路內(nèi)部總的流水級數(shù)。
[0032]本發(fā)明的電路接口簡單,操作時序與通用的隨機訪問存儲器相同。
【專利附圖】

【附圖說明】
[0033]圖1是基于標(biāo)簽的無序矢量歸約電路的是實施例1的電路原理圖。
[0034]圖2是容器模塊Container的電路原理圖?!揪唧w實施方式】
[0035]下面結(jié)合附圖對本發(fā)明做進一步的描述,但本發(fā)明的實施方式并不限于此。實施例I
[0036]圖1、2所示的是本發(fā)明基于標(biāo)簽的無序矢量歸約電路的實施例1的電路原理圖,由容器模塊Container,緩沖區(qū)模塊RBuff,多路選擇器模塊MUX和運算器模塊Operator構(gòu)成。stb_x、tag_x、dat_x是帶標(biāo)簽數(shù)據(jù)的輸入端口,dat_o為結(jié)果數(shù)據(jù)的輸出端口,ctl_read是用于讀取運算結(jié)果的控制信號。
[0037]來自電路外部的帶標(biāo)簽數(shù)據(jù){stb_x, tag_x, dat_x}的標(biāo)簽部分為{stb_x, tag_x},運算器模塊返回的帶標(biāo)簽數(shù)據(jù){stb_r, tag_r, dat_r}的標(biāo)簽部分為{stb_r, tag_r},電路內(nèi)的其他帶標(biāo)簽數(shù)據(jù)與帶標(biāo)簽數(shù)據(jù)對同理。所有帶標(biāo)簽數(shù)據(jù)或帶標(biāo)簽數(shù)據(jù)對的標(biāo)簽部分{stb_*,tag_*} (*是通配符,下同)的寬度為1+n。其中,stb_*寬度為1,是標(biāo)簽信號的最高位,稱為選通信號,其值為I時,表示該標(biāo)簽有效,為O時,表示該標(biāo)簽無效,這樣只要判斷選通信號的高低即可判斷該標(biāo)簽是否有效。tag_*是有效標(biāo)簽的取值,寬度為n,則可用的有效標(biāo)簽為m = 2"個,有效標(biāo)簽取值范圍為O?2n-l。
[0038]運算器模塊Operator中的硬件運算器根據(jù)具體要進行的矢量歸約運算選定,其流水線級數(shù)任意。運算器模塊內(nèi)及電路其他部分的信號延遲器都使用D觸發(fā)器實現(xiàn)。
[0039]容器模塊由緩存模塊Cache、緩存狀態(tài)查詢與更新模塊CacheStatQAU_PT這兩個子模塊及一個標(biāo)簽比較電路組成。容器模塊每個周期接受來自電路外部和運算器模塊的帶標(biāo)簽數(shù)據(jù)各一個。由于對于每一個數(shù)據(jù)集,容器模塊最多只存儲它的一個數(shù)據(jù),所以有效的帶標(biāo)簽數(shù)據(jù)對只有3種組合:由輸入的兩個帶標(biāo)簽數(shù)據(jù)構(gòu)成,由來自電路外部的帶標(biāo)簽數(shù)據(jù)及容器內(nèi)的對應(yīng)數(shù)據(jù)構(gòu)成,或由來自運算器模塊輸出的帶標(biāo)簽數(shù)據(jù)及容器內(nèi)的對應(yīng)數(shù)據(jù)構(gòu)成。容器模塊羅列出這3種組合的帶標(biāo)簽數(shù)據(jù)對:{flg_x_matches_r, tag_x, dat_x, dat_r} , {flg_x_got_matched, tag_x, dat_x, dat_x_cache}, {fIg_r_got_matched, tag_r, dat_r, dat_r_cache},有效性分別由其選通信號 f lg_x_matches_r、f lg_x_got_matched、f lg_r_got_matched來標(biāo)明。多路選擇器模塊MUX與緩沖區(qū)模塊RBuff根據(jù)它們的選通信號來判明它們的有效性并進行相關(guān)操作。
[0040]緩存模塊Cache負責(zé)當(dāng)前輸入容器模塊的兩個帶標(biāo)簽數(shù)據(jù)的數(shù)據(jù)部分的緩存,同時輸出兩個之前存儲的數(shù)據(jù),用于當(dāng)前的數(shù)據(jù)配對。緩存Cache使用一個工作在Read First模式下的雙端口 Ram實現(xiàn),讀延遲為p。。,一般ρ。。= I。其容量對應(yīng)可用的有效標(biāo)簽個數(shù),為m = 2n,則電路最多可同時處理m個數(shù)據(jù)集的歸約運算。信號tag_*直接作為緩存Cache的地址,以使要處理的數(shù)據(jù)集在緩存模塊Cache內(nèi)都有唯一的存儲空間。而輸入容器模塊的帶標(biāo)簽數(shù)據(jù)為無效時則會因為選通信號為低會使得寫使能為低,緩存模塊Cache內(nèi)的數(shù)據(jù)不會受影響。對于輸入的帶標(biāo)簽數(shù)據(jù){stb_x, tag_x, dat_x},緩存Cache以tag_x的值為地址,尋址到存儲著標(biāo)簽值為tag_x的數(shù)據(jù)集的數(shù)據(jù)的位置,將上次存儲的數(shù)據(jù)dat_X_cache讀出,用來構(gòu)成帶標(biāo)簽數(shù)據(jù)對{flg_x_got_matched, tag_x, dat_x, dat_x_cache}。同時,若{stb_x, tag_x, dat_x}的標(biāo)簽有效且與另一個帶標(biāo)簽數(shù)據(jù){stb_r, tag_r, dat_r}的標(biāo)簽不相等,緩存模塊Cache將dat_x_cache讀出后用dat_x覆蓋它。對于輸入容器模塊的帶標(biāo)簽數(shù)據(jù){stb_r, tag_r, dat_r},處理類似。緩存Cache的讀寫并不受各個數(shù)據(jù)集的緩存狀態(tài)的影響。盡管輸入的帶標(biāo)簽數(shù)據(jù)與之前存儲在緩存模塊Cache的數(shù)據(jù)配成有效數(shù)據(jù)對后,其數(shù)據(jù)部分仍會被存儲下來,不過因為緩存模塊Cache工作在Read First模式,且緩存狀態(tài)查詢與更新模塊CacheStatQAU_PT記錄著緩存狀態(tài),數(shù)據(jù)被重復(fù)計算和未被計算的數(shù)據(jù)被新數(shù)據(jù)沖掉等情況并不會出現(xiàn)。
[0041]標(biāo)簽比較電路給出帶標(biāo)簽數(shù)據(jù)對{flg_x_matches_r, tag_x, dat_x, dat_r}的選通信號flg_X_g0t_matChed。若輸入容器模塊的兩個的帶標(biāo)簽數(shù)據(jù)的標(biāo)簽都有效且相等,表明dat_x和dat_r是一對有效的數(shù)據(jù)對,標(biāo)簽的值為tag_x,標(biāo)簽比較電路則令flg_x_matches_r為高以表明{flg_x_matches_r, tag_x, dat_x, dat_r}是一個有效的帶標(biāo)簽數(shù)據(jù)對,否則,令flg_x_matches_r為低。
[0042]緩存狀態(tài)查詢與更新模塊CacheStatQAU_PT根據(jù)輸入容器模塊的兩個帶標(biāo)簽數(shù)據(jù)所帶的標(biāo)簽,查詢與更新對應(yīng)數(shù)據(jù)集在容器模塊中的存儲狀態(tài),并給出帶標(biāo)簽數(shù)據(jù)對{fIg_x_got_matched, tag_x, dat_x, dat_x_cache}的選通信號 fIg_x_got_matched 和{f lg_r_got_matched, tag_r, dat_r, dat_r_cache}的選通信號 flg_r_got_matched0 因為每個數(shù)據(jù)集在容器模塊中的緩存狀態(tài)只有兩種:容器內(nèi)有或沒有該數(shù)據(jù)集的數(shù)據(jù),模塊CacheStatQAU_PT內(nèi)設(shè)置一個m位的緩存狀態(tài)寄存器,其每位記錄一個數(shù)據(jù)集的緩存狀態(tài),用標(biāo)簽信號來位尋址。對于輸入容器模塊的帶標(biāo)簽數(shù)據(jù){stb_x, tag_x, dat_x},若所帶的是有效標(biāo)簽,模塊CacheStatQAU根據(jù)其標(biāo)簽值tag_x尋址緩存狀態(tài)寄存器的對應(yīng)位。如果該位為1,表明緩存模塊Cache存儲有與dat_x同一個數(shù)據(jù)集的數(shù)據(jù),即dat_x_cache與dat_x是一對有效的數(shù)據(jù)對,模塊CacheStatQAU則令選通信號flg_x_got_matched為高以表明{flg_x_got_matched, tag_x, dat_x, dat_x_cache}是一個有效的帶標(biāo)簽數(shù)據(jù)對,并把該位翻轉(zhuǎn)為0,表示緩存模塊Cache內(nèi)已經(jīng)沒有與dat_x同一個數(shù)據(jù)集的數(shù)據(jù);如果該位為
O,表示緩存Cache沒存儲著與dat_x同一個數(shù)據(jù)集的數(shù)據(jù),模塊CacheStatQAU則置flg_x_got_matched 為低以表明{fIg_x_got_matched, tag_x, dat_x, dat_x_cache}是一個無效的帶標(biāo)簽數(shù)據(jù)對,并把該位翻轉(zhuǎn)為1,表示緩存模塊Cache內(nèi)現(xiàn)有與dat_x同一個數(shù)據(jù)集的數(shù)據(jù)。若{stb_x, tag_x, dat_x}帶的是無效標(biāo)簽,模塊CacheStatQAU直接置flg_x_got_matched為低,緩存狀態(tài)寄存器不作變動。對于輸入容器模塊的帶標(biāo)簽數(shù)據(jù){stb_r,tag_r, dat_r},處理類似。由上述行為可歸納出如下模塊CacheStatQAU_PT行為描述的偽代碼:
[0043]input:stb_x, tag_x, stb_r, tag_r
[0044]flg_x_got_matched = cache_stat[tag_x]&stb_x
[0045]flg_r_got_matched = cache_stat[tag_r]&stb_r
[0046]case ({stb_x, stb_r})
[0047]00: cache_stat = cache_stat
[0048]01: cache_ stat = cache_stat ? (l<<tag_x)
[0049]10: cache—stat = cache—stat θ (l<<tag_r)
[0050]11: cache—stat = cache—stat θ (l<<tag_x) θ (l<<tag_r)
[0051]endcase
[0052]其中,cache—stat是其內(nèi)部的緩存狀態(tài)寄存器,位數(shù)為m;‘?’表示異或運算,‘〈〈’表示左移位運算,這兩個運算用來對cache—stat的相應(yīng)位取反。模塊的延遲Ppt取決于fig—X—got—matched和fig—r—got—matched輸出前是否鎖存,若鎖存則為1,否則為O。
[0053]緩沖區(qū)模塊RBuff使用一個工作在Fall-Through模式的FIFO實現(xiàn),指明FIFO是否為空的信號not—empty被用作為緩沖區(qū)模塊RBuff輸出端口上的帶標(biāo)簽數(shù)據(jù)對{not—empty, dat_o}的選通信號.多路選擇器模塊MUX是一個3選I的邏輯電路。緩沖區(qū)模塊RBuff與多路選擇器模塊MUX的行為描述偽代碼如下:
[0054]
【權(quán)利要求】
1.一種基于標(biāo)簽的無序矢量歸約電路,其特征在于,一個矢量內(nèi)所有的數(shù)據(jù)均附帶有一個信號以指明其所屬的矢量,該信號為數(shù)據(jù)的標(biāo)簽; 電路包括容器模塊、緩沖區(qū)模塊、多路選擇器模塊及運算器模塊; 容器模塊:在每個時鐘周期,容器模塊接受兩個帶標(biāo)簽數(shù)據(jù),檢查容器模塊內(nèi)所有的數(shù)據(jù),將帶有相同標(biāo)簽的數(shù)據(jù)兩兩配成帶標(biāo)簽數(shù)據(jù)對,并輸出, 容器模塊每個時鐘周期接受的兩個帶標(biāo)簽數(shù)據(jù)分別是來自無序矢量歸約電路外部的帶標(biāo)簽數(shù)據(jù)與運算器模塊輸出的帶標(biāo)簽數(shù)據(jù); 緩沖區(qū)模塊:根據(jù)容器模塊輸出的帶標(biāo)簽數(shù)據(jù)對的數(shù)量進行緩沖操作; 多路選擇器模塊:將緩沖區(qū)模塊選通輸出的有效帶標(biāo)簽數(shù)據(jù)對輸出至運算器模塊; 運算器模塊:對輸入的有效帶標(biāo)簽數(shù)據(jù)對中的數(shù)據(jù)進行運算,將運算結(jié)果和有效帶標(biāo)簽數(shù)據(jù)中的標(biāo)簽構(gòu)成一個帶標(biāo)簽數(shù)據(jù),返回容器模塊。
2.根據(jù)權(quán)利要求1所述的電路,其特征在于,容器模塊的存儲空間大小等于所述電路能同時處理的無序輸入矢量個數(shù)。
3.根據(jù)權(quán)利要 求1所述的電路,其特征在于,在每個時鐘周期,容器模塊輸出帶標(biāo)簽數(shù)據(jù)對的數(shù)量的情況分為三種:不輸出帶標(biāo)簽數(shù)據(jù)對,記為狀態(tài)O ;輸出一對帶標(biāo)簽數(shù)據(jù)對,記為狀態(tài)I ;輸出兩對帶標(biāo)簽數(shù)據(jù)對,記為狀態(tài)2 ; 當(dāng)容器模塊輸出帶標(biāo)簽數(shù)據(jù)對的數(shù)量情形屬于狀態(tài)O時,緩沖區(qū)模塊彈出一對帶標(biāo)簽數(shù)據(jù)對; 當(dāng)容器模塊輸出帶標(biāo)簽數(shù)據(jù)對的數(shù)量情形屬于狀態(tài)I時,緩沖區(qū)模塊保持上一個時鐘周期的狀態(tài)不變; 當(dāng)容器模塊輸出帶標(biāo)簽數(shù)據(jù)對的數(shù)量情形屬于狀態(tài)2時,緩沖區(qū)模塊將其中I個帶標(biāo)簽數(shù)據(jù)對壓入。
4.根據(jù)權(quán)利要求3所述的電路,其特征在于,當(dāng)容器模塊輸出帶標(biāo)簽數(shù)據(jù)對的數(shù)量情形屬于狀態(tài)O時,緩沖區(qū)模塊彈出一對帶標(biāo)簽數(shù)據(jù)對;當(dāng)緩沖區(qū)模塊為空,令緩沖區(qū)模塊輸出端口的標(biāo)簽部分為無效值。
5.根據(jù)權(quán)利要求3所述的電路,其特征在于,所述的緩沖區(qū)模塊的最小深度是一個有限值p-ι,其中P為容器模塊與運算器模塊的流水線級數(shù)之和。
6.根據(jù)權(quán)利要求1所述的電路,其特征在于,運算器模塊由一個通用運算器和一個信號延遲器構(gòu)成,運算器模塊每個時鐘周期接受一個帶標(biāo)簽數(shù)據(jù)對,數(shù)據(jù)部分送入通用運算器進行運算,標(biāo)簽部分送入信號延遲器進行延遲,將運算器輸出的數(shù)據(jù)與信號延遲器輸出的標(biāo)簽構(gòu)成一個帶標(biāo)簽數(shù)據(jù),返回容器模塊。
7.根據(jù)權(quán)利6所述的電路,其特征在于,通用運算器根據(jù)具體要進行的矢量歸約運算選定,其流水線級數(shù)是任意的;所述信號延遲器的延遲周期數(shù)與通用運算器的流水線級數(shù)相等,使得通用運算器的輸出數(shù)據(jù)與信號延遲器的輸出標(biāo)簽匹配。
8.根據(jù)權(quán)利I所述的電路,其特征在于,多路選擇器模塊將容器模塊和緩沖區(qū)模塊輸出的帶標(biāo)簽數(shù)據(jù)對選通對至運算器模塊; 在每個時鐘周期,若容器模塊輸出I個帶標(biāo)簽數(shù)據(jù)對,多路選擇器模塊將這個帶標(biāo)簽數(shù)據(jù)對選通至運算器模塊; 若容器模塊輸出2個帶標(biāo)簽數(shù)據(jù)對,多路選擇器模塊將未被壓入所述的緩沖區(qū)模塊的帶標(biāo)簽數(shù)據(jù)對選通至運算器模塊; 若容器模塊輸出O個帶標(biāo)簽數(shù)據(jù)對,多路選擇器模塊將緩沖區(qū)模塊彈出的帶標(biāo)簽數(shù)據(jù)對選通至運算器模塊。
9.根據(jù)權(quán)利8所述的電路,其特征在于,多路選擇器模塊根據(jù)容器模塊提供的一組狀態(tài)信號,將容器模塊和緩沖區(qū)模塊輸出的有效帶標(biāo)簽數(shù)據(jù)對選通對至運算器模塊,選通策略能保證所有矢量的歸約運算的正確性與準(zhǔn)確性。
10.根據(jù)權(quán)利1至9任一項所述的電路,其特征在于,所述電路的操作時序與通用的隨機訪問存儲器相同。
【文檔編號】G06F9/30GK103995688SQ201410240877
【公開日】2014年8月20日 申請日期:2014年5月30日 優(yōu)先權(quán)日:2014年5月30日
【發(fā)明者】黃以華, 韋銘 申請人:廣東順德中山大學(xué)卡內(nèi)基梅隆大學(xué)國際聯(lián)合研究院, 中山大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
丰镇市| 五寨县| 桓仁| 兴山县| 皮山县| 清远市| 登封市| 沾益县| 漠河县| 塘沽区| 社会| 武鸣县| 贵州省| 子长县| 塘沽区| 富川| 嘉义县| 宜黄县| 方城县| 西平县| 南昌县| 华亭县| 华蓥市| 阿荣旗| 临清市| 赤城县| 建湖县| 赤壁市| 新疆| 武宁县| 莒南县| 会昌县| 高要市| 平度市| 双桥区| 朝阳市| 抚远县| 东至县| 夏津县| 衡东县| 固镇县|