两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種塊大小可變的可重構(gòu)矩陣寄存器文件的制作方法

文檔序號(hào):6598710閱讀:180來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):一種塊大小可變的可重構(gòu)矩陣寄存器文件的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及向量微處理器中的向量寄存器文件(也稱(chēng)為矩陣寄存器文 件),特別是一種塊大小可變的可重構(gòu)矩陣寄存器文件。
背景技術(shù)
圖像處理和現(xiàn)代通信等媒體應(yīng)用領(lǐng)域算法具有大規(guī)模并行性,需要進(jìn) 行大量的矩陣運(yùn)算。而不同算法并行性粒度不同、同一算法在運(yùn)行的不同階段并行性粒度 也不同,在不同算法運(yùn)行時(shí)、算法運(yùn)行的不同階段所需的數(shù)據(jù)塊或矩陣塊的大小也不同,這 就需要向量寄存器文件的大小和數(shù)量在運(yùn)行不同算法和同一算法運(yùn)行過(guò)程中均可改變。
面向這類(lèi)數(shù)據(jù)密集型應(yīng)用的向量微處理器通常采用單指令流多數(shù)據(jù)流 SIMD (Single Instruction Multiple Data)、超長(zhǎng)指令字體系結(jié)構(gòu)VLIW(VeryLong Instruction Words),設(shè)置向量運(yùn)算指令、向量寄存器文件和向量運(yùn)算陣列來(lái)支持矩陣或 向量數(shù)據(jù)運(yùn)算,以加快數(shù)據(jù)處理的速度。 向量指令譯碼部件對(duì)向量指令進(jìn)行譯碼,將譯碼結(jié)果發(fā)送到向量運(yùn)算部件和向量 寄存器文件。向量運(yùn)算部件由L(L為正整數(shù),且通常為2的冪)個(gè)標(biāo)量運(yùn)算單元組成,它按 照譯碼結(jié)果對(duì)來(lái)自向量寄存器文件或存儲(chǔ)器的源操作數(shù)進(jìn)行運(yùn)算,并將運(yùn)算結(jié)果寫(xiě)入向量 寄存器文件或存儲(chǔ)器。 如圖2公布的,向量寄存器文件由向量寄存器文件主體和讀寫(xiě)端口組成。向量寄 存器文件主體由NK個(gè)讀地址譯碼器、NK個(gè)讀出緩沖器、Nw個(gè)寫(xiě)地址譯碼器以及存儲(chǔ)單元陣 列構(gòu)成,存儲(chǔ)單元陣列由N個(gè)行向量寄存器VR。-VRN—i或M個(gè)列向量寄存器CVR。-CVRM—i構(gòu)成, N為行向量寄存器的數(shù)目,M為列向量寄存器的數(shù)目,存儲(chǔ)單元陣列包含N*M個(gè)元素,N和M 為正整數(shù)且通常為2的冪,N"Nw均為正整數(shù)。存儲(chǔ)單元陣列按行劃分為N個(gè)MAB位的存儲(chǔ) 單元行,每行由M個(gè)元素組成,每個(gè)元素的位寬為B。這N個(gè)存儲(chǔ)單元行與N個(gè)行向量寄存器 VR。-VRN—工 一一對(duì)應(yīng),實(shí)現(xiàn)行向量寄存器的存??;該存儲(chǔ)單元陣列按列劃分為M個(gè)N*B位的存 儲(chǔ)單元列,每列由N個(gè)同列的元素組成。這M個(gè)存儲(chǔ)單元列與M個(gè)列向量寄存器CVR。-CVIV工 一一對(duì)應(yīng),實(shí)現(xiàn)列向量寄存器的存取。以CVRM—工為例,該列向量寄存器包括所有行向量寄存 器VR。-VRN—工的最后一個(gè)元素。這種支持行列向量訪問(wèn)的向量寄存器文件不僅可視作由 N個(gè)行向量寄存器構(gòu)成,還可視作由M個(gè)列向量寄存器構(gòu)成。 讀寫(xiě)端口是向量寄存器文件與向量微處理器中其他部件的接口,它允許向量微處 理器中其他部件訪問(wèn)向量寄存器文件主體存儲(chǔ)的數(shù)據(jù)。為了支持同時(shí)從向量寄存器中獲取 多個(gè)源操作數(shù)和寫(xiě)入多個(gè)目的操作數(shù),向量寄存器文件需要多個(gè)讀端口和多個(gè)寫(xiě)端口 ,而 不同讀端口或?qū)懚丝谥g的訪問(wèn)相互獨(dú)立。因此,現(xiàn)有支持行列向量訪問(wèn)的向量寄存器文 件具有NK個(gè)讀端口和Nw個(gè)寫(xiě)端口 。每個(gè)讀端口都由行列選擇信號(hào)線、讀地址總線、讀使能信 號(hào)線以及讀數(shù)據(jù)總線組成,其中行列選擇信號(hào)線用于選擇當(dāng)前是對(duì)行向量寄存器進(jìn)行讀取 還是對(duì)列向量寄存器進(jìn)行讀取,讀地址總線的位寬為MAX(log2 N,log2 M),即log2 N和log2 M兩者的最大值,讀數(shù)據(jù)總線的位寬為,B或MAB的最大值。每個(gè)寫(xiě)端口都由行列選擇信 號(hào)線、寫(xiě)地址總線、寫(xiě)使能信號(hào)線以及寫(xiě)數(shù)據(jù)總線組成,其中行列選擇信號(hào)線用于選擇當(dāng)前 是對(duì)行向量寄存器進(jìn)行讀取還是對(duì)列向量寄存器進(jìn)行寫(xiě)入,寫(xiě)地址總線的位寬為MAX(log2 N, log2 M),即log2 N和log2 M兩者的最大值,寫(xiě)數(shù)據(jù)總線的位寬為N*B或M*B的最大值。
讀端口與向量寄存器文件主體中的讀地址譯碼器一一對(duì)應(yīng),其中每個(gè)讀端口的行 列選擇信號(hào)線、讀地址總線和讀使能信號(hào)線是相應(yīng)讀地址譯碼器的輸入。每個(gè)讀地址譯碼 器產(chǎn)生N個(gè)行讀地址選擇信號(hào)和M個(gè)列讀地址選擇信號(hào),這些信號(hào)通過(guò)行讀地址選擇總線 和列讀地址選擇總線送給存儲(chǔ)單元陣列中的N個(gè)存儲(chǔ)單元行,每一存儲(chǔ)單元行存儲(chǔ)一個(gè)行 向量寄存器的所有元素E。-Em—工;M個(gè)列讀地址選擇信號(hào)分別控制存儲(chǔ)單元陣列中的M個(gè)存 儲(chǔ)單元列,每一存儲(chǔ)單元列存儲(chǔ)一個(gè)列向量寄存器的所有元素。存儲(chǔ)單元陣列在行讀地址 選擇信號(hào)或列讀地址選擇信號(hào)的作用下,將相應(yīng)存儲(chǔ)單元行或存儲(chǔ)單元列的內(nèi)容讀出至相 應(yīng)讀端口的讀出緩沖器,讀出緩沖器將該內(nèi)容輸出至該讀端口的讀數(shù)據(jù)總線。
寫(xiě)端口與向量寄存器文件主體中的寫(xiě)地址譯碼器一一對(duì)應(yīng),每個(gè)寫(xiě)端口的行列選 擇信號(hào)線、寫(xiě)地址總線和寫(xiě)使能信號(hào)線是相應(yīng)寫(xiě)地址譯碼器的輸入。每個(gè)寫(xiě)地址譯碼器產(chǎn) 生N個(gè)行寫(xiě)地址選擇信號(hào)和M個(gè)列寫(xiě)地址選擇信號(hào),這些信號(hào)通過(guò)行寫(xiě)地址選擇總線和列 寫(xiě)地址選擇總線送給存儲(chǔ)單元陣列中的N個(gè)存儲(chǔ)單元行,M個(gè)列讀地址選擇信號(hào)分別控制 存儲(chǔ)單元陣列中的M個(gè)存儲(chǔ)單元列。存儲(chǔ)單元陣列在這些寫(xiě)地址選擇信號(hào)的作用下,將寫(xiě) 數(shù)據(jù)總線上的內(nèi)容寫(xiě)入相應(yīng)存儲(chǔ)單元行或存儲(chǔ)單元列。 已有專(zhuān)利討論了數(shù)據(jù)在向量寄存器文件中存儲(chǔ)方式改變的問(wèn)題,間接解決了向 量寄存器文件的大小和數(shù)量在運(yùn)行不同算法和同一算法運(yùn)行過(guò)程可改變的問(wèn)題。如美國(guó) 專(zhuān)利US 6, 898, 691B2 (REARRANGING DATABETWEEN VECTOR AND MATRIX FORMS IN A S頂D MATRIXPROCESSOR)通過(guò)指令將向量數(shù)據(jù)轉(zhuǎn)換為固定大小為4*4的陣列數(shù)據(jù),便于SMD陣列 處理器加速處理。但是它們存在缺點(diǎn)數(shù)據(jù)只能轉(zhuǎn)換為固定大小為4*4的數(shù)據(jù)塊,僅滿足并 行性粒度小的算法的需求,是一種塊大小固定的可重構(gòu)矩陣寄存器文件,不能滿足不同算 法并行性粒度不同、同一算法在運(yùn)行的不同階段并行性粒度不同的靈活需求,處理效率不 高。 如何以較低代價(jià)實(shí)現(xiàn)行向量寄存器和列向量寄存器的靈活分塊,即設(shè)計(jì)出一種塊 大小可變的可重構(gòu)矩陣寄存器文件,仍是本領(lǐng)域研究的熱點(diǎn)問(wèn)題。

發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題是針對(duì)應(yīng)用領(lǐng)域不同算法并行性粒度不同、
同一算法在運(yùn)行的不同階段并行性粒度不同導(dǎo)致在不同算法運(yùn)行時(shí)或算法運(yùn)行的不同階
段所需處理的數(shù)據(jù)塊或矩陣塊的大小也不同的情況,設(shè)計(jì)一種大小在運(yùn)行過(guò)程中均可改變
的向量寄存器文件,稱(chēng)為塊大小可變的可重構(gòu)矩陣寄存器文件。 本發(fā)明的技術(shù)方案是 本發(fā)明由矩陣寄存器文件主體、行列分塊標(biāo)志及行分塊寄存器、讀寫(xiě)端口、三級(jí)譯 碼電路組成。行列分塊標(biāo)志及行分塊寄存器是存貯行列分塊標(biāo)志和行分塊標(biāo)志的寄存器, 與CPU指令部件和三級(jí)譯碼電路相連,它根據(jù)CPU指令部件發(fā)來(lái)的指令進(jìn)行修改。三級(jí)譯 碼電路讀取行列分塊標(biāo)志及行分塊寄存器的內(nèi)容,從讀寫(xiě)端口接收讀寫(xiě)地址、讀寫(xiě)使能信 號(hào)、行列選擇信號(hào),對(duì)這些信號(hào)進(jìn)行譯碼,生成讀寫(xiě)數(shù)據(jù)所需的行列讀寫(xiě)地址通過(guò)行讀地址 選擇總線、列讀地址選擇總線、行寫(xiě)地址選擇總線、列寫(xiě)地址選擇總線送矩陣寄存器文件主 體。矩陣寄存器文件主體將讀寫(xiě)地址所指的存儲(chǔ)單元行或存儲(chǔ)單元列的內(nèi)容讀出至相應(yīng)讀 端口的讀出緩沖器,或者將寫(xiě)數(shù)據(jù)總線上的內(nèi)容寫(xiě)入讀寫(xiě)地址所指的存儲(chǔ)單元行或存儲(chǔ)單 元列。 矩陣寄存器文件主體采用背景技術(shù)中支持行列向量訪問(wèn)的向量寄存器文件中的矩陣寄存器文件主體,但它根據(jù)行列分塊標(biāo)志及行分塊寄存器的內(nèi)容可以分塊。因?yàn)橹С?行列向量訪問(wèn)的向量寄存器行或列的訪問(wèn)使用相同的端口 ,僅由行列選擇信號(hào)線來(lái)決定對(duì) 行還是列進(jìn)行訪問(wèn),因此僅考慮按列不分塊、按行等分塊的情況即可,按行不分塊、按列等 分塊的情況是一樣的,只是行列選擇信號(hào)線不同。分塊的形式有①按列不分塊,按行等分
成k*l塊(k為2的冪且k《kmax < 2(^(—m'n /2) =^min(M,N), min (M, n)指M禾卩n中
的小數(shù)),②當(dāng)k = kmax時(shí)行列同時(shí)分塊,分成kmax*kmaX塊。矩陣寄存器文件主體共有 log2kmax+2種分塊情況。當(dāng)k為2的0次冪時(shí),行列都不分塊,此種情況為矩陣寄存器全局 映像,與支持行列向量訪問(wèn)的向量寄存器文件相同。分塊情況下每個(gè)子塊作為一個(gè)獨(dú)立的 寄存器文件與其它子塊并行工作。矩陣寄存器分塊情況由行列分塊標(biāo)志及行分塊寄存器決 定。當(dāng)行列都分成kmax塊時(shí),即矩陣寄存器文件等分成kmax*kmaX寄存器文件,此時(shí)寄存 器文件子塊稱(chēng)為本地寄存器文件,本地寄存器文件上的讀寫(xiě)端口稱(chēng)為本地讀寫(xiě)端口 。
行列分塊標(biāo)志及行分塊寄存器與CPU指令部件、全局行譯碼器、kmax個(gè)全局列譯 碼器、kma^kmax個(gè)本地譯碼器相連。它由行分塊標(biāo)志、列分塊標(biāo)志、行分塊寄存器組成。行 分塊標(biāo)志只有1位寬,為1表示矩陣寄存器文件按行等分成子塊工作,為0表示矩陣寄存器 文件按行不分塊。行分塊寄存器共log2kmax位寬,每一位表示一種分塊情況,從低位到高位
分別表示按行等分成2、4.....kmax子塊。列分塊標(biāo)志也只有1位寬,為0表示矩陣寄存器
文件按列不分塊,為1時(shí),行分塊標(biāo)志為1且行分塊寄存器為kmax,表示矩陣寄存器文件同 時(shí)按行按列等分成kmax*kmaX塊。行列分塊標(biāo)志及行分塊寄存器從CPU指令部件接收分塊 指令,根據(jù)分塊指令進(jìn)行修改。行列分塊標(biāo)志及行分塊寄存器將其值送給三級(jí)譯碼電路。
讀寫(xiě)端口采用支持行列向量訪問(wèn)的向量寄存器文件中的讀寫(xiě)端口。當(dāng)矩陣寄 存器文件分成子塊工作時(shí),不同分塊情況讀寫(xiě)端口地址長(zhǎng)度不同,不分塊地址長(zhǎng)度最長(zhǎng), 為AddLen (AddLen《log2 (min (M, n))),按行分成k塊地址長(zhǎng)度為AddLen-log2k,分成 kmax*kmaX塊地址長(zhǎng)度為AddLen-210g2kmax,每個(gè)子塊的讀寫(xiě)端口數(shù)量與矩陣寄存器全局 映像完全相同,且子塊的每個(gè)端口與該子塊的其它端口并行工作。向量寄存器文件總的讀 端口數(shù)量從nk增加到nk* (kmax2+2kmax-l),寫(xiě)端口數(shù)量從nw增加到nw* (kmax2+2kmax-l),其 中kmax2+2kmaX-l是log2kmaX+2種分塊情況下一共可分成的子塊數(shù)量。為簡(jiǎn)化設(shè)計(jì)、減少 硬件實(shí)現(xiàn)代價(jià),將log2kmaX+2種分塊情況下的kmax2+2kmaX-l個(gè)子塊的序號(hào)相同的讀或?qū)?端口分為一組,各組的讀端口或?qū)懚丝谙嗤?一共分為nk組讀端口和nw組寫(xiě)端口 ,每組使用 一個(gè)三級(jí)譯碼電路統(tǒng)一譯碼,共有nk+nw個(gè)三級(jí)譯碼電路。 三級(jí)譯碼電路由一個(gè)全局行譯碼器、kmax個(gè)全局列譯碼器、kmax*kmax個(gè)本地譯 碼器組成。 全局行譯碼器為第一級(jí)譯碼器,與行列分塊標(biāo)志及行分塊寄存器、組內(nèi)所有讀寫(xiě) 端口、所有全局列譯碼器相連。它由log2kmaX種譯碼器和kmax個(gè)(log2kmaX+l)路選一多 路選擇器組成。log2kmax種譯碼器分別對(duì)應(yīng)log2kmax分塊情況,kmax*l , kmax*kmax兩種分 塊情況不需要譯碼器,1og2kmax種譯碼器在功能和數(shù)量上是不同的,按行等分k塊(1《k < kmax, k為2的冪)的情況下,譯碼器有l(wèi)og2 (kmax/k)位輸入(kmax/k)位輸出,譯碼器的 數(shù)量有k個(gè)。log2kmaX種譯碼器對(duì)log2kmaX分塊情況分別進(jìn)行譯碼按行等分k塊的情況 下抽取該組內(nèi)等分k塊情況下的k個(gè)讀端口或?qū)懚丝谧罡逷位Haddr (P = log2kmax-log2k =log2 (kmax/k))和讀寫(xiě)使能信號(hào)線,使用k個(gè)譯碼器(該譯碼器有l(wèi)og2 (kmax/k)位輸
7入(kmax/k)位輸出),k個(gè)譯碼器在相應(yīng)讀端口或?qū)懚丝诘淖x寫(xiě)使能信號(hào)線的控制下對(duì) P位Haddr分別進(jìn)行譯碼,共生成(kmax/k) *k = kmax個(gè)賦能信號(hào)。lo仏kmax種譯碼器 將log2kmaX種譯碼情況所產(chǎn)生的賦能信號(hào)送到kmax個(gè)log2kmaX+l路選一多路選擇器, kmax個(gè)log2kmaX+l路選一多路選擇器的另一路輸入分別固定為高電平或低電平(對(duì)應(yīng) 于kmax*l, kmax*kmax兩種分塊情況的賦能信號(hào),因?yàn)閗max*l, kmax*kmax分塊情況下所 有全局列譯碼器并行工作,需要將所有全局列譯碼器固定置為賦能狀態(tài),不需抽取kmaWl, kmaWkmax兩種分塊情況下的讀端口或?qū)懚丝诘刂犯呶?P = 0),不需使用譯碼器。高電平 或低電平的選擇取決于全局列譯碼器賦能信號(hào)是高有效還是低有效)。多路選擇器讀取行 列分塊標(biāo)志及行分塊寄存器作為選擇信號(hào),選擇當(dāng)前分塊情況下的賦能信號(hào),形成kmax個(gè) 賦能信號(hào)Ren。 Renkmax—p分別送kmax個(gè)全局列譯碼器。 全局列譯碼器為第二級(jí)譯碼器,每行一個(gè),共kmax個(gè)。每行的全局列譯碼器都與 全局行譯碼器、行列分塊標(biāo)志及行分塊寄存器、組內(nèi)所有讀寫(xiě)端口、本行的kmax個(gè)本地譯 碼器相連。全局列譯碼器由一個(gè)(log2kmax+l)路選一多路選擇器、一個(gè)第一譯碼器和kmax 個(gè)二選一路選擇開(kāi)關(guān)組成。全局列譯碼器從組內(nèi)所有讀寫(xiě)端口獲得行列選擇信號(hào)Sel和地 址低位Laddr進(jìn)行第二級(jí)譯碼按行等分成k塊情況下,第i (0《i《kmax-1)行的全局列 譯碼器接收第I (I = i mod k,mod為取模)個(gè)子塊的行列選擇信號(hào)Sel和地址低位Laddr, 送log2kmax+l路選一的多路選擇器;多路選擇器讀取行列分塊標(biāo)志及行分塊寄存器作為選 擇信號(hào),選擇當(dāng)前分塊情況下的行列選擇信號(hào)和地址低位,形成本行的行列選擇信號(hào)Sel, 和地址低位AdRi,并抽取AdRi的高log2kmax位送第一譯碼器,將AdRi去掉高log2kmax位 后的其余低位Raddri和本行的行列選擇信號(hào)Seli送本行的所有本地譯碼器;第一譯碼器 為log2kmaX位輸入kmax位輸出,它接收高log2kmaX位地址,在賦能信號(hào)Rer^的控制下,生 成kmax個(gè)賦能信號(hào),并送kmax個(gè)二選一路選擇開(kāi)關(guān);二選一路選擇開(kāi)關(guān)的一路輸入為第一 譯碼器送來(lái)的賦能信號(hào),另一路輸入固定為高電平或低電平(另一路為kmax*kmaX分塊情 況下賦能信號(hào),因?yàn)閗max*kmaX分塊情況下所有本地譯碼器并行工作,需要將本行的所有 本地譯碼器置為賦能狀態(tài),高電平或低電平的選擇取決于本地譯碼器賦能信號(hào)為高有效還 是低有效),二選一路選擇開(kāi)關(guān)使用列分塊標(biāo)志的值作為選擇信號(hào),生成kmax個(gè)賦能信號(hào) Ceni。 Cenikmax—p分別送第i行的kmax個(gè)本地譯碼器。 本地譯碼器為第三級(jí)譯碼器,共有kmax2個(gè),與等分成的kmaX*kmaX個(gè)本地寄存器 文件一一對(duì)應(yīng)。每個(gè)本地譯碼器都與行列分塊標(biāo)志及行分塊寄存器,該本地譯碼器所在行 的全局列譯碼器、本地譯碼器對(duì)應(yīng)的組內(nèi)本地讀寫(xiě)端口、本地譯碼器對(duì)應(yīng)的本地寄存器文 件相連。本地譯碼器由一個(gè)二選一路選擇開(kāi)關(guān)、一個(gè)第二譯碼器組成。每第ij(i行j列, 0《i《kmax-l,O《j《kmax-l)個(gè)本地譯碼器的二選一路選擇開(kāi)關(guān)的一路輸入為第i行 的全局列譯碼器送來(lái)的Raddri及Sel"另一路輸入為組內(nèi)本地讀寫(xiě)端口送過(guò)來(lái)的addrij及 Sel". ;二選一路選擇開(kāi)關(guān)使用列分塊標(biāo)志的值作為選擇信號(hào),生成本次讀寫(xiě)操作實(shí)際要譯 碼的地址及Sel送第二譯碼器,地址長(zhǎng)度為AddLen-21og2kmax ;第二譯碼器在全局列譯碼 器送來(lái)的賦能信號(hào)Cenij的控制下對(duì)二選一路選擇開(kāi)關(guān)送來(lái)的地址及Sel進(jìn)行譯碼,形成本 地寄存器文件的行讀地址選擇信號(hào)、列讀地址選擇信號(hào)、行寫(xiě)地址選擇信號(hào)、列寫(xiě)地址選擇 信號(hào),送本地譯碼器所對(duì)應(yīng)的本地寄存器文件。 本發(fā)明需要在CPU中設(shè)計(jì)分塊指令才能正確工作。不論矩陣寄存器文件按何種分
8塊模式進(jìn)行工作,CPU都必需先通過(guò)分塊指令對(duì)矩陣寄存器文件的行列分塊標(biāo)志及行分塊 寄存器進(jìn)行設(shè)置,本發(fā)明才能正確工作。
分塊指令格式如下
BLOCK (Rf lag, k, Cf lag) 參Rf lag是行分塊標(biāo)志,1表示分塊,0表示不分塊。 參k是行分塊數(shù)量,k為2的冪,且k《kmax = min (M, N)。 參Cf lag是列分塊標(biāo)志,1表示分塊,0表示不分塊。 參當(dāng)Cflag = 1時(shí),要求Rflag—定為l,且k = kmax,表示矩陣寄存器文件按行 列同時(shí)分成kmax子塊,即分成kmax*kmax個(gè)子塊進(jìn)行工作。 例如BL0CK(1,4,0)指令將行分塊標(biāo)志置為l,列分塊標(biāo)志置為O,行分塊寄存器 置為4,矩陣寄存器文按行等分成4個(gè)子塊工作; 設(shè)kmax = 4,則BLOCK(1,4, 1)指令將行列分塊標(biāo)志都置為l,行分塊寄存器置為 4( = Kmax),矩陣寄存器文同時(shí)按行按列分別分成4、4個(gè)相等的子塊工作,即共分成4*4 = 16個(gè)子塊進(jìn)行工作。 BLOCK(0, xx,O)指令將行列分塊標(biāo)志都置為0,矩陣寄存器文件工作時(shí)行列都不 分塊。 采用本發(fā)明可以達(dá)到以下技術(shù)效果 1.本發(fā)明在CPU運(yùn)行過(guò)程中可以通過(guò)指令動(dòng)態(tài)改變分塊形式,其大小和數(shù)量均可 改變,能夠動(dòng)態(tài)滿足在不同算法運(yùn)行時(shí)、算法運(yùn)行的不同階段所需數(shù)據(jù)塊或矩陣塊大小不 同的需求,較好地解決了不同算法并行性粒度不同、同一算法在運(yùn)行的不同階段并行性粒 度也不同的問(wèn)題。 2.本發(fā)明分塊方式靈活,共有(log2kmaX+2)種分塊情況,可以不分塊、均分成1、
2、4.....kmax、 kmax*kmaX子塊進(jìn)行工作。每種分塊情況下每個(gè)子塊能作為一個(gè)獨(dú)立的寄
存器文件與其它子塊并行工作。不同分塊情況下讀寫(xiě)端口除地址長(zhǎng)度不同外其它功能相 同。每個(gè)子塊讀寫(xiě)端口的數(shù)量與背景技術(shù)支持行列向量訪問(wèn)的向量寄存器文件完全相同, 每個(gè)子塊的每種端口可以與其它端口并行工作。 3.本發(fā)明需要 一 個(gè)寄存器文件體、NK*(kmaX2+2kmaX-l)個(gè)讀端口、 Nw* (kmax2+2kmaX-l)個(gè)寫(xiě)端口 、 (NK+NW)個(gè)三級(jí)譯碼電路、 一位行分塊標(biāo)志、 一位列分塊標(biāo) 志、log2kmax位寬行分塊寄存器,能實(shí)現(xiàn)(log2kmaX+2)種分塊情況下的共(kmax2+2kmaX-l) 個(gè)子塊的寄存器文件功能。而分開(kāi)實(shí)現(xiàn)(kmax2+2kmaX-l)個(gè)圖2所示所示的寄存 器文件需要(kmax2+2kmaX-l)個(gè)寄存器文件主體、NK* (kmax2+2kmaX-l)個(gè)讀端口 、 Nw*(kmax2+2kmax-l)個(gè)寫(xiě)端口、 NK* (kmax2+2kmax-l)個(gè)讀端口譯碼器、Nw* (kmax2+2kmax-l) 個(gè)寫(xiě)端口譯碼器。與分開(kāi)實(shí)現(xiàn)(kmax2+2kmaX-l)個(gè)寄存器文件相比,本發(fā)明大大減少了寄 存器文件主體的數(shù)量,數(shù)量從(kmax2+2kmaX-l)減少到一個(gè),而所需讀端口和寫(xiě)端口數(shù)量相 同,也不需要N一(kmax2+2kmax-l)個(gè)讀端口譯碼器、Nw*(kmax2+2kmax-l)個(gè)寫(xiě)端口譯碼器; 本發(fā)明所需器件開(kāi)銷(xiāo)僅僅為(NK+NW)個(gè)三級(jí)譯碼電路、一位行分塊標(biāo)志、一位列分塊標(biāo)志、 log2kmaX位寬行分塊寄存器,這比起(kmax2+2kmaX-l)個(gè)寄存器文件主體的開(kāi)銷(xiāo)來(lái)是很小 的,幾乎可以忽略不計(jì)。, 與分開(kāi)實(shí)現(xiàn)(kmaX2+2kmaX-l)個(gè)圖2所示的寄存器文件相比,本發(fā)明三級(jí)譯碼電路的本地譯碼器延遲相當(dāng)于讀端口譯碼器或?qū)懚丝谧g碼器延遲,因此本發(fā)明的最長(zhǎng)延遲開(kāi) 銷(xiāo)為全局行譯碼器和全局列譯碼器的延遲,僅為兩級(jí)多路選擇器延遲加上兩級(jí)譯碼器(具 有l(wèi)og2kmaX位輸入kmax位輸出)延遲,延遲開(kāi)銷(xiāo)也非常小。


圖1是背景技術(shù)支持行列向量訪問(wèn)的向量寄存器文件與外部部件的連接示意圖;
圖2是背景技術(shù)支持行列向量訪問(wèn)的向量寄存器文件的邏輯結(jié)構(gòu)示意圖;
圖3是圖2所示向量寄存器文件的存儲(chǔ)單元陣列結(jié)構(gòu)示意圖;
圖4是本發(fā)明的總體結(jié)構(gòu)圖; 圖5是本發(fā)明的行列分塊標(biāo)志及行分塊寄存器結(jié)構(gòu)示意圖
圖6是本發(fā)明的讀端口的三級(jí)譯碼電路總體結(jié)構(gòu)示意圖;
圖7是本發(fā)明三級(jí)譯碼電路中的全局行譯碼器邏輯結(jié)構(gòu)示意圖;
圖8是本發(fā)明三級(jí)譯碼電路中的全局列譯碼器邏輯結(jié)構(gòu)示意圖;
圖9是本發(fā)明三級(jí)譯碼電路中的本地譯碼器地址通路。 圖1是目前通用向量微處理器的部分邏輯結(jié)構(gòu)示意圖。向量微處理器通常包括向 量寄存器文件、向量指令譯碼部件和向量運(yùn)算部件。向量指令譯碼部件完成對(duì)向量指令的 譯碼,將譯碼結(jié)果發(fā)送到向量運(yùn)算部件和向量寄存器文件。向量運(yùn)算部件按照譯碼結(jié)果對(duì) 向量寄存器文件提供的源操作數(shù)進(jìn)行運(yùn)算,并將運(yùn)算的結(jié)果寫(xiě)入由譯碼結(jié)果指定的向量寄 存器或存儲(chǔ)器。向量寄存器文件用于存放向量微處理器運(yùn)行時(shí)所需的向量數(shù)據(jù)。
圖2是背景技術(shù)所述的支持行列向量訪問(wèn)的向量寄存器文件的邏輯結(jié)構(gòu)示意圖。 這種向量寄存器文件由向量寄存器文件主體和讀寫(xiě)端口組成。向量寄存器文件主體由^個(gè) 讀地址譯碼器、NK個(gè)讀出緩沖器、Nw個(gè)寫(xiě)地址譯碼器以及包含N*M個(gè)元素的存儲(chǔ)單元陣列 構(gòu)成,存儲(chǔ)單元陣列由N個(gè)行向量寄存器VR。-VRN—i或M個(gè)列向量寄存器CVR。-CVRM—i構(gòu)成,N 為行向量寄存器的數(shù)目,M為列向量寄存器的數(shù)目,因此存儲(chǔ)單元陣列包含N*M個(gè)元素。讀 寫(xiě)端口均為行列向量訪問(wèn)復(fù)用的端口 ,即一個(gè)讀端口不僅支持對(duì)行向量寄存器進(jìn)行讀取, 還支持對(duì)列向量寄存器進(jìn)行讀取,而一個(gè)寫(xiě)端口不僅支持對(duì)行向量寄存器進(jìn)行寫(xiě)入,還支 持對(duì)列向量寄存器進(jìn)行寫(xiě)入。為了支持多個(gè)向量部件同時(shí)工作,讀寫(xiě)端口由NK個(gè)讀端口和 Nw個(gè)寫(xiě)端口構(gòu)成,其中^》l且Nw^ 1。每個(gè)讀端口都由行列選擇信號(hào)線、讀地址總線、讀 使能信號(hào)線以及讀數(shù)據(jù)總線組成,其中行列選擇信號(hào)線用于選擇當(dāng)前是對(duì)行向量寄存器進(jìn) 行讀取還是對(duì)列向量寄存器進(jìn)行讀取,讀地址總線的位寬為MAX (log2 N, log2 M),讀數(shù)據(jù)總 線的位寬為N*B或M承B。每個(gè)寫(xiě)端口都由行列選擇信號(hào)線、寫(xiě)地址總線、寫(xiě)使能信號(hào)線以及 寫(xiě)數(shù)據(jù)總線組成,其中行列選擇信號(hào)線用于選擇當(dāng)前是對(duì)行向量寄存器進(jìn)行讀取還是對(duì)列 向量寄存器進(jìn)行寫(xiě)入,寫(xiě)地址總線的位寬為MAX(log2 N, log2 M),寫(xiě)數(shù)據(jù)總線的位寬為,B 或M站。 圖3是圖2所示向量寄存器文件的存儲(chǔ)單元陣列結(jié)構(gòu)示意圖。存儲(chǔ)單元陣列按行 劃分為N個(gè)M*B位的存儲(chǔ)單元行,每行由M個(gè)同行的元素組成,每個(gè)元素的位寬為B。這N 個(gè)存儲(chǔ)單元行與N個(gè)行向量寄存器VR。-VRN—工 一一對(duì)應(yīng),實(shí)現(xiàn)相應(yīng)行向量寄存器的存??;該 存儲(chǔ)單元陣列按列劃分為M個(gè),B位的存儲(chǔ)單元列,每列由N個(gè)同列的元素組成。這 個(gè) 存儲(chǔ)單元列與M個(gè)列向量寄存器CVR。-CVRM—工 一一對(duì)應(yīng),實(shí)現(xiàn)相應(yīng)列向量寄存器的存取。以CVRM—工為例,該列向量寄存器包括所有行向量寄存器VR。-VIV工的最后一個(gè)元素Em—1Q讀端口 與向量寄存器文件主體中的讀地址譯碼器一一對(duì)應(yīng),其中每個(gè)讀端口的行列選擇信號(hào)線、 讀地址總線和讀使能信號(hào)線是相應(yīng)讀地址譯碼器的輸入。每個(gè)讀地址譯碼器產(chǎn)生N個(gè)行 讀地址選擇信號(hào)和M個(gè)列讀地址選擇信號(hào),這些信號(hào)分別形成行讀地址選擇總線和列讀地 址選擇總線。N個(gè)行讀地址選擇信號(hào)分別控制存儲(chǔ)單元陣列中的N個(gè)存儲(chǔ)單元行,每一存 儲(chǔ)單元行存儲(chǔ)了一個(gè)行向量寄存器的所有元素E。-EM—工;M個(gè)列讀地址選擇信號(hào)分別控制存 儲(chǔ)單元陣列中的M個(gè)存儲(chǔ)單元列,每一存儲(chǔ)單元列存儲(chǔ)了一個(gè)列向量寄存器的所有元素。 存儲(chǔ)單元陣列在這些讀地址選擇信號(hào)的作用下,將相應(yīng)存儲(chǔ)單元行或存儲(chǔ)單元列的內(nèi)容讀
出至相應(yīng)讀端口的讀出緩沖器,而讀出緩沖器又將該內(nèi)容輸出至該讀端口的讀出數(shù)據(jù)總線 上。寫(xiě)端口與向量寄存器文件主體中的寫(xiě)地址譯碼器一一對(duì)應(yīng),每個(gè)寫(xiě)端口的行列選擇信 號(hào)線、寫(xiě)地址總線和寫(xiě)使能信號(hào)線是相應(yīng)寫(xiě)地址譯碼器的輸入。每個(gè)寫(xiě)地址譯碼器產(chǎn)生N 個(gè)行寫(xiě)地址選擇信號(hào)和M個(gè)列寫(xiě)地址選擇信號(hào),這些信號(hào)分別形成行寫(xiě)地址選擇總線和列 寫(xiě)地址選擇總線。N個(gè)行寫(xiě)地址選擇信號(hào)分別控制存儲(chǔ)單元陣列中的N個(gè)存儲(chǔ)單元行,M個(gè) 列讀地址選擇信號(hào)分別控制存儲(chǔ)單元陣列中的M個(gè)存儲(chǔ)單元列。存儲(chǔ)單元陣列在這些寫(xiě)地 址選擇信號(hào)的作用下,將寫(xiě)數(shù)據(jù)總線上的內(nèi)容寫(xiě)入相應(yīng)存儲(chǔ)單元行或存儲(chǔ)單元列。
圖4是本發(fā)明的總體結(jié)構(gòu)示意圖。 本發(fā)明由矩陣寄存器文件主體、讀寫(xiě)端口、三級(jí)譯碼電路、行列分塊標(biāo)志及行分塊 寄存器組成。 矩陣寄存器文件主體采用圖2所示的矩陣寄存器文件主體,但它根據(jù)行列分塊標(biāo) 志及行分塊寄存器的內(nèi)容可以分塊。分塊的形式有①按列不分塊,按行等分成kW塊(k 為2的冪且k《kmax《2(1。"(誦(m,n)V2)=如幸局),②當(dāng)k = kmax時(shí)行列同時(shí)分塊,
分成kmax*kmaX塊。共有l(wèi)og2kmaX+2種分塊情況。當(dāng)k為2的0次冪時(shí),行列都不分塊,此 種情況為矩陣寄存器全局映像,與圖2所示向量寄存器文件相同。分塊情況下每個(gè)子塊作 為一個(gè)獨(dú)立的寄存器文件與其它子塊并行工作。每個(gè)子塊的讀寫(xiě)端口數(shù)量與矩陣寄存器全 局映像完全相同,且子塊的每個(gè)端口與該子塊的其它端口并行工作。矩陣寄存器分塊情況 由行列分塊標(biāo)志及行分塊寄存器決定。當(dāng)行列都分成kmax塊時(shí),即矩陣寄存器文件等分成 kmax*kmaX寄存器文件,此時(shí)寄存器文件子塊稱(chēng)為本地寄存器文件,本地寄存器文件上的讀 寫(xiě)端口稱(chēng)為本地讀寫(xiě)端口。 讀寫(xiě)端口采用背景技術(shù)中支持行列向量訪問(wèn)的向量寄存器文件中的讀寫(xiě)端口。當(dāng) 矩陣寄存器文件分成子塊工作時(shí),不同分塊情況讀寫(xiě)端口地址長(zhǎng)度不同,不分塊地址長(zhǎng)度 最長(zhǎng),為AddLen (AddLen《log2 (min (M, N))),按行分成k塊地址長(zhǎng)度為AddLen-log2k,分 成kmax*kmaX塊地址長(zhǎng)度為AddLen-210g2kmax,每個(gè)子塊的讀寫(xiě)端口數(shù)量與矩陣寄存器全 局映像完全相同,且子塊的每個(gè)端口與該子塊的其它端口并行工作。向量寄存器文件總的 讀端口數(shù)量從N^增加到NK* (kmax2+2kmax-l),寫(xiě)端口數(shù)量從Nw增加到Nw* (kmax2+2kmax-l), 其中kmax2+2kmaX-l是log2kmaX+2種分塊情況下一共可分成的子塊數(shù)量。為簡(jiǎn)化設(shè)計(jì)、減 少硬件實(shí)現(xiàn)代價(jià),將log2kmaX+2種分塊情況下的kmax2+2kmaX-l個(gè)子塊的序號(hào)相同的讀或 寫(xiě)端口分為一組,各組的讀端口或?qū)懚丝谙嗤?一共分為NK組讀端口和Nw組寫(xiě)端口 ,每組使 用 一個(gè)三級(jí)譯碼電路統(tǒng)一譯碼,共有NK+NW個(gè)三級(jí)譯碼電路 三級(jí)譯碼電路根據(jù)行列分塊標(biāo)志及行分塊寄存器的值選擇當(dāng)前分塊情況下的各子塊讀端口的地址及行列地址選擇信號(hào)進(jìn)行譯碼,生成矩陣寄存器文件的行讀地址選擇信 號(hào)、列讀地址選擇信號(hào)、行寫(xiě)地址選擇信號(hào)、列寫(xiě)地址選擇信號(hào)。
圖5是本發(fā)明行列分塊標(biāo)志及行分塊寄存器結(jié)構(gòu)示意圖。 行列分塊標(biāo)志及行分塊寄存器由一位寬的行分塊標(biāo)志、一位寬的列分塊標(biāo)志、 1og2kmax位寬的行分塊寄存器組成。行分塊標(biāo)志為1表示矩陣寄存器文件按行等分成子塊 工作,為0表示矩陣寄存器文件按行不分塊。行分塊寄存器每一位表示一種分塊情況,從低
位到高位分別表示按行等分成2、4.....kmax子塊。列分塊標(biāo)志為0表示矩陣寄存器文件
按列不分塊,為1時(shí),行分塊標(biāo)志為1且行分塊寄存器最高位為1 (表示按行等分成kmax個(gè) 子塊),矩陣寄存器文件同時(shí)按行按列等分成kmax*kmaX塊工作。行列分塊標(biāo)志及行分塊寄 存器接受CPU指令部件對(duì)其值的修改,CPU指令部件通過(guò)BLOCK分塊指令進(jìn)行修改。行列分 塊標(biāo)志及行分塊寄存器與CPU指令部件、全局行譯碼器、kmax個(gè)全局列譯碼器、kmax*kmaX 個(gè)本地譯碼器相連。 圖6是本發(fā)明一個(gè)讀端口的三級(jí)譯碼電路邏輯結(jié)構(gòu)示意圖,寫(xiě)端口的三級(jí)譯碼電 路邏輯結(jié)構(gòu)與讀端口的三級(jí)譯碼電路邏輯結(jié)構(gòu)是相同的。 三級(jí)譯碼電路由一個(gè)全局行譯碼器、kmax個(gè)全局列譯碼器、kmax*kmax個(gè)本地譯 碼器組成。 全局行譯碼器為第一級(jí)譯碼器,與組內(nèi)所有讀寫(xiě)端口、行列分塊標(biāo)志及行分塊寄 存器、kmax個(gè)全局列譯碼器相連,它接收組內(nèi)所有讀寫(xiě)端口的地址高位Haddr,并進(jìn)行一級(jí) 譯碼,生成所有全局列譯碼器賦能信號(hào)Ren。 Renkniax—"控制所有全局列譯碼器的工作。
全局列譯碼器為第二級(jí)譯碼器,每行一個(gè),共有kmax個(gè)。每行的全局列譯碼器都 與全局行譯碼器、組內(nèi)所有讀寫(xiě)端口、行列分塊標(biāo)志及行分塊寄存器、本行的kmax個(gè)本地 譯碼器(分別對(duì)應(yīng)于kmax列)相連,它接收組內(nèi)所有讀寫(xiě)端口的地址低位Laddr和行列選 擇信號(hào)Sel、行列分塊標(biāo)志及行分塊寄存器的內(nèi)容,進(jìn)行第二級(jí)譯碼,生成本行的kmax個(gè)本 地譯碼器的賦能信號(hào)Cerii。 Cenikmax—"控制本行的kmax個(gè)本地譯碼器的工作,同時(shí)將地址 低位去掉高log2kmaX位,形成其余低位地址Raddri和本行的行列選擇信號(hào)Se"送本行的 所有本地譯碼器。 本地譯碼器為第三級(jí)譯碼器,共有kma 個(gè),與矩陣寄存器文件等分成的 kmax*kmaX個(gè)本地寄存器文件一一對(duì)應(yīng)。每個(gè)本地譯碼器都與本地譯碼器所在行的全局 列譯碼器、本地譯碼器對(duì)應(yīng)的組內(nèi)本地讀寫(xiě)端口、行列分塊標(biāo)志及行分塊寄存器、本地譯碼 器對(duì)應(yīng)的本地寄存器文件相連。它接收列分塊標(biāo)志的內(nèi)容、該行的全局列譯碼器送過(guò)來(lái)的 Raddri及Seli,或本地譯碼器對(duì)應(yīng)的組內(nèi)本地讀寫(xiě)端口送過(guò)來(lái)的kmaxaddrij及Se^,進(jìn)行 三級(jí)譯碼,生成本地寄存文件的讀寫(xiě)賦能信號(hào),控制本地寄存文件的讀寫(xiě)工作。
圖7是本發(fā)明三級(jí)譯碼電路中的全局行譯碼器邏輯結(jié)構(gòu)示意圖;
全局行譯碼器由log2kmaX種譯碼器和kmax個(gè)(log2kmaX+l)路選一多路選擇器組 成。log2kmax種譯碼器分別對(duì)應(yīng)log2kmax分塊情況,kmax*l, kmax*kmax兩種分塊情況不 需要譯碼器,log2kmaX種譯碼器在功能和數(shù)量上是不同的,按行等分k塊(1《k < kmax, k為2的冪)的情況下,譯碼器有l(wèi)og2(kmaX/k)位輸入(kmax/k)位輸出,譯碼器的數(shù)量有 k個(gè)。log2kmaX種譯碼器對(duì)log2kmaX分塊情況分別進(jìn)行譯碼按行等分k塊的情況下抽 取該組內(nèi)等分k塊情況下的k個(gè)讀端口或?qū)懚丝谧罡逷位Haddr(P = log2kmax-log2k =
12l0g2(kmaX/k))和讀寫(xiě)使能信號(hào)線,使用k個(gè)譯碼器,k個(gè)譯碼器在相應(yīng)讀端口或?qū)懚丝诘?讀寫(xiě)使能信號(hào)線的控制下對(duì)P位Haddr分別進(jìn)行譯碼,共生成(kmax/k)*k = kmax個(gè)賦能信 號(hào)。log2kmaX種譯碼器將log2kmaX種譯碼情況所產(chǎn)生的賦能信號(hào)送到kmax個(gè)log2kmaX+l 路選一多路選擇器,kmax個(gè)log2kmaX+l路選一多路選擇器的另一路輸入分別固定為高電平 或低電平。多路選擇器使用行列分塊標(biāo)志及行分塊寄存器作為選擇信號(hào),選擇當(dāng)前分塊情 況下的賦能信號(hào),形成kmax個(gè)賦能信號(hào)Ren。 Renkniax—n分別送kmax個(gè)全局列譯碼器。
圖8是本發(fā)明三級(jí)譯碼電路中的全局列譯碼器邏輯結(jié)構(gòu)示意圖;
全局列譯碼器由一個(gè)(log2kmaX+l)路選一的多路選擇器、一個(gè)第一譯碼器和kmax 個(gè)二選一路選擇開(kāi)關(guān)組成。全局列譯碼器接收組內(nèi)所有讀寫(xiě)端口獲得行列選擇信號(hào)Sel 和地址低位Laddr進(jìn)行第二級(jí)譯碼按行等分成k塊情況下,第i (0《i《kmax-1)行的 全局列譯碼器接收第I(I二i mod k, mod為取模)個(gè)子塊的行列選擇信號(hào)Sel和地址低 位Laddr,送log2kmax+l路選一的多路選擇器;多路選擇器使用行列分塊標(biāo)志及行分塊寄 存器作為選擇信號(hào),選擇當(dāng)前分塊情況下的行列選擇信號(hào)和地址低位,形成本行的行列選 擇信號(hào)Seli和地址低位AdRi,并抽取AdRi的高log2kmaX位送第一譯碼器,將AdRi去掉高 l0g2kmaX位后的其余低位Raddri和本行的行列選擇信號(hào)Seli送本行的所有本地譯碼器;第 一譯碼器為log2kmaX位輸入kmax位輸出,它接收高log2kmaX位地址,在賦能信號(hào)Rer^的 控制下,生成kmax個(gè)賦能信號(hào),并送kmax個(gè)二選一路選擇開(kāi)關(guān);二選一路選擇開(kāi)關(guān)接收第 一譯碼器送來(lái)的kmax個(gè)賦能信號(hào),另一路輸入固定為l,二選一路選擇開(kāi)關(guān)使用列分塊標(biāo) 志的值作為選擇信號(hào),生成kmax個(gè)賦能信號(hào)Ceni。 Cenikmax—15分別送第i行的kmax個(gè)本 地譯碼器。 圖9是本發(fā)明三級(jí)譯碼電路中的本地譯碼器邏輯結(jié)構(gòu)圖。 本地譯碼器由一個(gè)二選一路選擇開(kāi)關(guān)、一個(gè)第二譯碼器組成。每第i j (i行j列, 0《i《kmax-l,O《j《kmax-1)個(gè)本地譯碼器的二選一路選擇開(kāi)關(guān)的一路輸入為該行的 全局列譯碼器送過(guò)來(lái)的Raddri及Sel"另一路輸入為本地譯碼器對(duì)應(yīng)的組內(nèi)本地讀寫(xiě)端口 送過(guò)來(lái)的kmaxaddrij及Se" ;二選一路選擇開(kāi)關(guān)使用列分塊標(biāo)志的值作為選擇信號(hào),生成 本次讀寫(xiě)操作實(shí)際要譯碼的地址及Sel送第二譯碼器,地址長(zhǎng)度為AddLen-21og2kmax ;第 二譯碼器在Cenij的控制下對(duì)二選一路選擇開(kāi)關(guān)送來(lái)的地址及Sel進(jìn)行譯碼,形成本地寄存 器文件的行讀地址選擇信號(hào)、列讀地址選擇信號(hào)、行寫(xiě)地址選擇信號(hào)、列寫(xiě)地址選擇信號(hào), 送本地譯碼器所對(duì)應(yīng)的本地寄存器文件。
權(quán)利要求
一種塊大小可變的可重構(gòu)矩陣寄存器文件,其特征在于它由矩陣寄存器文件主體、行列分塊標(biāo)志及行分塊寄存器、讀寫(xiě)端口、三級(jí)譯碼電路組成矩陣寄存器文件主體將讀寫(xiě)地址所指的存儲(chǔ)單元行或存儲(chǔ)單元列的內(nèi)容讀出至相應(yīng)讀端口的讀出緩沖器,或者將寫(xiě)數(shù)據(jù)總線上的內(nèi)容寫(xiě)入讀寫(xiě)地址所指的存儲(chǔ)單元行或存儲(chǔ)單元列;矩陣寄存器文件主體采用支持行列向量訪問(wèn)的向量寄存器文件中的矩陣寄存器文件主體,根據(jù)行列分塊標(biāo)志及行分塊寄存器的內(nèi)容分塊;分塊的形式有①按列不分塊,按行等分成k*1塊,②當(dāng)k=kmax時(shí)行列同時(shí)分塊,分成kmax*kmax塊;矩陣寄存器文件主體共有l(wèi)og2kmax+2種分塊情況;k為2的冪且,min(M,N)指M和N中的小數(shù);當(dāng)k為2的0次冪時(shí),行列都不分塊,此種情況為矩陣寄存器全局映像,與支持行列向量訪問(wèn)的向量寄存器文件相同;分塊情況下每個(gè)子塊作為一個(gè)獨(dú)立的寄存器文件與其它子塊并行工作,當(dāng)行列都分成kmax塊時(shí),即矩陣寄存器文件等分成kmax*kmax寄存器文件,此時(shí)寄存器文件子塊稱(chēng)為本地寄存器文件,本地寄存器文件上的讀寫(xiě)端口稱(chēng)為本地讀寫(xiě)端口;行列分塊標(biāo)志及行分塊寄存器是存貯行列分塊標(biāo)志和行分塊標(biāo)志的寄存器,由行分塊標(biāo)志、列分塊標(biāo)志、行分塊寄存器組成,與CPU指令部件和三級(jí)譯碼電路相連,它根據(jù)CPU指令部件發(fā)來(lái)的分塊指令進(jìn)行修改;讀寫(xiě)端口采用支持行列向量訪問(wèn)的向量寄存器文件中的讀寫(xiě)端口,當(dāng)矩陣寄存器文件分成子塊工作時(shí),不同分塊情況讀寫(xiě)端口地址長(zhǎng)度不同,不分塊地址長(zhǎng)度最長(zhǎng),為AddLen,AddLen≤log2(min(M,N)),按行分成k塊地址長(zhǎng)度為AddLen-log2k,分成kmax*kmax塊地址長(zhǎng)度為AddLen-2log2kmax,每個(gè)子塊的讀寫(xiě)端口數(shù)量與矩陣寄存器全局映像完全相同,且子塊的每個(gè)端口與該子塊的其它端口并行工作;向量寄存器文件總的讀端口數(shù)量從NR增加到NR*(kmax2+2kmax-1),寫(xiě)端口數(shù)量從NW增加到NW*(kmax2+2kmax-1),其中kmax2+2kmax-1是log2kmax+2種分塊情況下一共可分成的子塊數(shù)量;將log2kmax+2種分塊情況下的kmax2+2kmax-1個(gè)子塊的序號(hào)相同的讀或?qū)懚丝诜譃橐唤M,各組的讀端口或?qū)懚丝谙嗤还卜譃镹R組讀端口和NW組寫(xiě)端口,每組使用一個(gè)三級(jí)譯碼電路統(tǒng)一譯碼;三級(jí)譯碼電路讀取行列分塊標(biāo)志及行分塊寄存器的內(nèi)容,從讀寫(xiě)端口接收讀寫(xiě)地址、讀寫(xiě)使能信號(hào)、行列選擇信號(hào),對(duì)這些信號(hào)進(jìn)行譯碼,生成讀寫(xiě)數(shù)據(jù)所需的行列讀寫(xiě)地址通過(guò)行讀地址選擇總線、列讀地址選擇總線、行寫(xiě)地址選擇總線、列寫(xiě)地址選擇總線送矩陣寄存器文件主體;三級(jí)譯碼電路由一個(gè)全局行譯碼器、kmax個(gè)全局列譯碼器、kmax*kmax個(gè)本地譯碼器組成;全局行譯碼器為第一級(jí)譯碼器,與行列分塊標(biāo)志及行分塊寄存器、組內(nèi)所有讀寫(xiě)端口、所有全局列譯碼器相連;全局列譯碼器為第二級(jí)譯碼器,每行一個(gè),共kmax個(gè),每行的全局列譯碼器都與全局行譯碼器、行列分塊標(biāo)志及行分塊寄存器、組內(nèi)所有讀寫(xiě)端口、本行的kmax個(gè)本地譯碼器相連;本地譯碼器為第三級(jí)譯碼器,共有kmax2個(gè),與等分成的kmax*kmax個(gè)本地寄存器文件一一對(duì)應(yīng);每個(gè)本地譯碼器都與行列分塊標(biāo)志及行分塊寄存器,該本地譯碼器所在行的全局列譯碼器、本地譯碼器對(duì)應(yīng)的組內(nèi)本地讀寫(xiě)端口、本地譯碼器對(duì)應(yīng)的本地寄存器文件相連。FSA00000023410500011.tif
2. 如權(quán)利要求1所述的塊大小可變的可重構(gòu)矩陣寄存器文件,其特征在于所述分塊指 令格式如下BLOCK (Rf lag, k, Cflag)參Rflag是行分塊標(biāo)志,1表示分塊,O表示不分塊;參k是行分塊數(shù)量,k為2的冪,且k《kmax = min (M, N);參Cflag是列分塊標(biāo)志,1表示分塊,O表示不分塊;當(dāng)Cflag = 1時(shí),要求Rflag—定為l,且k = kmax,表示矩陣寄存器文件按行列同時(shí) 分成kmax子塊,即分成kmax*kmax個(gè)子塊進(jìn)行工作。
3. 如權(quán)利要求1所述的塊大小可變的可重構(gòu)矩陣寄存器文件,其特征在于行分塊標(biāo)志 為1位寬,為1表示矩陣寄存器文件按行等分成子塊工作,為0表示矩陣寄存器文件按行不 分塊;行分塊寄存器共log2kmax位寬,每一位表示一種分塊情況,從低位到高位分別表示按行等分成2、4.....kmax子塊;列分塊標(biāo)志為1位寬,為0表示矩陣寄存器文件按列不分塊,為1時(shí),行分塊標(biāo)志為1且行分塊寄存器為kmax,表示矩陣寄存器文件同時(shí)按行按列等分成 km3x氺kmax塊。
4. 如權(quán)利要求1所述的塊大小可變的可重構(gòu)矩陣寄存器文件,其特征在于所述全局行 譯碼器由log2kmaX種譯碼器和kmax個(gè)(log2kmaX+l)路選一多路選擇器組成;log2kmax種 譯碼器分別對(duì)應(yīng)log2kmaX分塊情況,log2kmaX種譯碼器在功能和數(shù)量上是不同的,按行等 分k塊的情況下,譯碼器有l(wèi)og2(kmaX/k)位輸入(kmax/k)位輸出,譯碼器的數(shù)量有k個(gè), 1《k < kmax,k為2的冪;log2kmax種譯碼器對(duì)log2kmaX分塊情況分別進(jìn)行譯碼按行等 分k塊的情況下抽取該組內(nèi)等分k塊情況下的k個(gè)讀端口或?qū)懚丝谧罡逷位Haddr和讀寫(xiě) 使能信號(hào)線,P = log2kmax-log2k = log2(kmaX/k),使用k個(gè)譯碼器,k個(gè)譯碼器在相應(yīng)讀端 口或?qū)懚丝诘淖x寫(xiě)使能信號(hào)線的控制下對(duì)P位Haddr分別進(jìn)行譯碼,共生成(kmax/k)*k = kmax個(gè)賦能信號(hào);log2kmax種譯碼器將log2kmaX種譯碼情況所產(chǎn)生的賦能信號(hào)送到kmax 個(gè)log2kmaX+l路選一多路選擇器,kmax個(gè)log2kmaX+l路選一多路選擇器的另一路輸入分 別固定為高電平或低電平;多路選擇器讀取行列分塊標(biāo)志及行分塊寄存器作為選擇信號(hào), 選擇當(dāng)前分塊情況下的賦能信號(hào),形成kmax個(gè)賦能信號(hào)Ren。 Renkniax—n分別送kmax個(gè)全 局列譯碼器。
5. 如權(quán)利要求1所述的塊大小可變的可重構(gòu)矩陣寄存器文件,其特征在于所述全局列 譯碼器由一個(gè)(log2kmaX+l)路選一多路選擇器、一個(gè)第一譯碼器和kmax個(gè)二選一路選擇 開(kāi)關(guān)組成;全局列譯碼器從組內(nèi)所有讀寫(xiě)端口獲得行列選擇信號(hào)Sel和地址低位Laddr進(jìn) 行第二級(jí)譯碼按行等分成k塊情況下,第i行的全局列譯碼器接收第I個(gè)子塊的行列選擇 信號(hào)Sel和地址低位Laddr,送log2kmax+l路選一的多路選擇器,O《i《kmax-l, I = i mod k ;多路選擇器讀取行列分塊標(biāo)志及行分塊寄存器作為選擇信號(hào),選擇當(dāng)前分塊情況下 的行列選擇信號(hào)和地址低位,形成本行的行列選擇信號(hào)Seli和地址低位AdRi,并抽取AdRi 的高log2kmaX位送第一譯碼器,將AdRi去掉高log2kmax位后的其余低位Raddri和本行的 行列選擇信號(hào)Seli送本行的所有本地譯碼器;第一譯碼器為log2kmaX位輸入kmax位輸出, 它接收高log2kmaX位地址,在賦能信號(hào)Rerii的控制下,生成kmax個(gè)賦能信號(hào),并送kmax個(gè) 二選一路選擇開(kāi)關(guān);二選一路選擇開(kāi)關(guān)的一路輸入為第一譯碼器送來(lái)的賦能信號(hào),另一路 輸入固定為高電平或低電平,二選一路選擇開(kāi)關(guān)使用列分塊標(biāo)志的值作為選擇信號(hào),生成 kmax個(gè)賦能信號(hào)Ceni。 Cenikmax—15分別送第i行的kmax個(gè)本地譯碼器。
6. 如權(quán)利要求l所述的塊大小可變的可重構(gòu)矩陣寄存器文件,其特征在于所述本地譯碼器由一個(gè)二選一路選擇開(kāi)關(guān)、一個(gè)第二譯碼器組成,每第ij個(gè)本地譯碼器即第i 行j列個(gè)本地譯碼器的二選一路選擇開(kāi)關(guān)的一路輸入為第i行的全局列譯碼器送來(lái)的 Raddri及Seli,另一路輸入為組內(nèi)本地讀寫(xiě)端口送過(guò)來(lái)的addrij及Selij,O《i《kmax-l, 0《j《kmax-1 ;二選一路選擇開(kāi)關(guān)使用列分塊標(biāo)志的值作為選擇信號(hào),生成本次讀寫(xiě)操作 實(shí)際要譯碼的地址及Sel送第二譯碼器,地址長(zhǎng)度為AddLen-21og2kmax ;第二譯碼器在全 局列譯碼器送來(lái)的賦能信號(hào)Cenij的控制下對(duì)二選一路選擇開(kāi)關(guān)送來(lái)的地址及Sel進(jìn)行譯 碼,形成本地寄存器文件的行讀地址選擇信號(hào)、列讀地址選擇信號(hào)、行寫(xiě)地址選擇信號(hào)、列 寫(xiě)地址選擇信號(hào),送本地譯碼器所對(duì)應(yīng)的本地寄存器文件。
全文摘要
本發(fā)明公開(kāi)了一種塊大小可變的可重構(gòu)矩陣寄存器文件,目的是提供一種大小在運(yùn)行過(guò)程中均可改變的向量寄存器文件。它由矩陣寄存器文件主體、行列分塊標(biāo)志及行分塊寄存器、讀寫(xiě)端口、三級(jí)譯碼電路組成,行列分塊標(biāo)志及行分塊寄存器根據(jù)分塊指令進(jìn)行修改,三級(jí)譯碼電路由全局行譯碼器、全局列譯碼器、本地譯碼器組成,根據(jù)行列分塊標(biāo)志及行分塊寄存器的內(nèi)容對(duì)信號(hào)進(jìn)行譯碼,生成行列讀寫(xiě)地址;矩陣寄存器文件主體根據(jù)行列分塊標(biāo)志及行分塊寄存器的內(nèi)容分塊。分塊指令設(shè)計(jì)在CPU中。本發(fā)明通過(guò)指令動(dòng)態(tài)改變分塊形式,且分塊大小和數(shù)量均可改變,能夠滿足在不同算法運(yùn)行時(shí)、算法運(yùn)行的不同階段所需數(shù)據(jù)塊大小不同的需求,且分塊方式靈活,開(kāi)銷(xiāo)小。
文檔編號(hào)G06F9/30GK101776988SQ20101011717
公開(kāi)日2010年7月14日 申請(qǐng)日期2010年2月1日 優(yōu)先權(quán)日2010年2月1日
發(fā)明者萬(wàn)江華, 劉仲, 劉衡竹, 孫海燕, 彭元喜, 陳書(shū)明, 陳海燕 申請(qǐng)人:中國(guó)人民解放軍國(guó)防科學(xué)技術(shù)大學(xué)
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
河北省| 新闻| 宿州市| 南昌市| 南漳县| 洪雅县| 连南| 斗六市| 长阳| 平凉市| 丰台区| 宜兰县| 绥德县| 富川| 英吉沙县| 那曲县| 加查县| 靖西县| 莱阳市| 和龙市| 敖汉旗| 神池县| 礼泉县| 永兴县| 集贤县| 措勤县| 兴山县| 长宁县| 枣庄市| 肥乡县| 望谟县| 滨海县| 达日县| 双鸭山市| 玉树县| 长白| 新巴尔虎右旗| 中西区| 海门市| 富顺县| 峨山|