專利名稱:行列訪問端口分離的矩陣寄存器文件的制作方法
技術(shù)領域:
本發(fā)明涉及向量微處理器中的向量寄存器文件,特別是一種 行列訪問端口分離的向量寄存器文件(簡稱矩陣寄存器文件)。
背景技術(shù):
為了支持矩陣或塊運算,已有向量微處理器中的向量指令譯 碼部件和向量運算部件利用支持行列向量訪問的向量寄存器文件實現(xiàn)矩陣 轉(zhuǎn)置以及不同數(shù)據(jù)大小的行列向量訪問。
向量指令譯碼部件對向量指令進行譯碼,將譯碼結(jié)果(執(zhí)行何種指令、 源操作數(shù)位置、以及目的操作數(shù)位置等)發(fā)送到向量運算部件和向量寄存器 文件。向量運算部件由丄(丄為正整數(shù),且通常為2的整數(shù)次冪)個標量運 算單元組成,它按照譯碼結(jié)果對來自向量寄存器文件或存儲器的源操作數(shù)進 行運算,并將運算結(jié)果寫入由譯碼結(jié)果指定的向量寄存器或存儲器。
支持行列向量訪問的向量寄存器文件存放和提供向量微處理器運行時 所需的向量數(shù)據(jù)。
支持行列向量訪問的向量寄存器文件由向量寄存器文件主體和讀寫端 口組成。向量寄存器文件主體由i^個讀地址譯碼器、i^個讀出緩沖器、 個寫地址譯碼器以及存儲單元陣列構(gòu)成,存儲單元陣列由w個行向量寄存器 ra。-ra^或m個列向量寄存器cra。-craw_,構(gòu)成,iv為行向量寄存器的數(shù)目, M為列向量寄存器的數(shù)目,w和M為正整數(shù)且通常為2的整數(shù)次冪,因此存 儲單元陣列包含A^M個元素。存儲單元陣列按行劃分為iV個M + 5位的存儲 單元行,每行由M個元素組成,每個元素的位寬為B。這iV個存儲單元行與
w個行向量寄存器ra。-ra^—一對應,用于實現(xiàn)行向量寄存器的存取;該存元陣列按列劃分為M個iV"位的存儲單元列,每列由iV個同列的元素組成。 這M個存儲單元列與M個列向量寄存器CFi 。 -CW ^ —一對應,用于實現(xiàn)列 向量寄存器的存取。以cra^為例,該列向量寄存器包括所有行向量寄存器 ,的最后一個元素^—,。由于存儲單元陣列的組成方式,已有支持行 列向量訪問的向量寄存器文件不僅可視作由W個行向量寄存器構(gòu)成,還可視 作由M個列向量寄存器構(gòu)成。
讀寫端口是向量寄存器文件與向量微處理器中其他部件的接口,它允許 向量微處理器中其他部件訪問向量寄存器文件主體存儲的數(shù)據(jù)。已有支持行 列向量訪問的向量寄存器文件中,讀寫端口均為行列向量訪問復用的端口 , 即一個讀端口不僅支持對行向量寄存器進行讀取,還支持對列向量寄存器進 行讀取,而一個寫端口不僅支持對行向量寄存器進行寫入,還支持對列向量 寄存器進行寫入。
為了支持多個向量部件同時工作,即同時從向量寄存器中獲取多個源操 作數(shù)和寫入多個目的操作數(shù),向量寄存器文件需要多個讀端口和多個寫端 口,而不同讀端口或?qū)懚丝谥g的訪問相互獨立。因此,已有支持行列向量 訪問的向量寄存器文件具有多個讀寫端口,即A^個讀端口和iV『個寫端口構(gòu) 成,其中A^H且AV^。每個讀端口都由行列選擇信號線、讀地址總線、讀 使能信號線以及讀數(shù)據(jù)總線組成,其中行列選擇信號線用于選擇當前是對行 向量寄存器進行讀取還是對列向量寄存器進行讀取,讀地址總線的位寬為 M4X(log2iV,log2M),即log2iV和log2M兩者的最大值,讀數(shù)據(jù)總線的位寬為 PB或MW。每個寫端口都由行列選擇信號線、寫地址總線、寫使能信號 線以及寫數(shù)據(jù)總線組成,其中行列選擇信號線用于選擇當前是對行向量寄存器進行讀取還是對列向量寄存器進行寫入,寫地址總線的位寬為 M4X(log27V,log2M),即log2^V和log2M兩者的最大值,寫數(shù)據(jù)總線的位寬為
讀端口與向量寄存器文件主體中的讀地址譯碼器一一對應,其中每個讀 端口的行列選擇信號線、讀地址總線和讀使能信號線是相應讀地址譯碼器的 輸入。每個讀地址譯碼器產(chǎn)生iV個行讀地址選擇信號和M個列讀地址選擇信
號,這些信號分別形成行讀地址選擇總線和列讀地址選擇總線。iV個行讀地 址選擇信號分別控制存儲單元陣列中的iV個存儲單元行,每一存儲單元行存 儲了一個行向量寄存器的所有元素A-M個列讀地址選擇信號分別控 制存儲單元陣列中的M個存儲單元列,每一存儲單元列存儲了 一個列向量寄 存器的所有元素。存儲單元陣列在這些讀地址選擇信號的作用下,將相應存 儲單元行或存儲單元列的內(nèi)容讀出至相應讀端口的讀出緩沖器,讀出緩沖器 將該內(nèi)容輸出至該讀端口的讀出數(shù)據(jù)總線上。
寫端口與向量寄存器文件主體中的寫地址譯碼器一一對應,每個寫端口 的行列選擇信號線、寫地址總線和寫使能信號線是相應寫地址譯碼器的輸 入。每個寫地址譯碼器產(chǎn)生iV個行寫地址選擇信號和M個列寫地址選擇信 號,這些信號分別形成行寫地址選擇總線和列寫地址選擇總線。^個行寫地 址選擇信號分別控制存儲單元陣列中的W個存儲單元行,M個列讀地址選擇 信號分別控制存儲單元陣列中的M個存儲單元列。存儲單元陣列在這些寫地 址選擇信號的作用下,將寫數(shù)據(jù)總線上的內(nèi)容寫入相應存儲單元行或存儲單 元列??茖W計算和圖像處理等大量算法需要對數(shù)據(jù)塊或矩陣的行向量和列向 量同時讀取,矩陣乘法就是最典型的算法之一。矩陣乘法X嚇可由下面的公 式表達,其中Z嚇中的每個元素等于義中一個行向量(如;cu,x,2,...,^)乘以 7中的一個列向量(如&,少21,...,^ )并將"個乘積累加的結(jié)果。例如,Z嚇
的第"行第6列元素就等于|>。£*^ ,即X中第"個行向量與7中第6個列向
量相乘,并將Z)個乘積累加(
<formula>formula see original document page 9</formula>
由上述計算公式可知,矩陣乘法需要大量同時使用矩陣的行向量和列向 量,已有一些專利討論了矩陣行向量和列向量訪問的實現(xiàn)方法。如美國專利
US 6, 084, 771 Bl (Processor PROCESSOR WITH REGISTER FILE ACCESSIBLE BY ROW COL固N TO ACHIEVE DATA ARRAY TRANSPOSITION)通過在向量寄存器文 件中增加列讀地址譯碼器、轉(zhuǎn)置控制以及行列讀地址復用器,使得同一個端 口既可以讀取行向量寄存器,又可以在轉(zhuǎn)置模式下讀取列向量寄存器。該專 利通過列加載指令利用行列復用的端口讀取列向量寄存器的內(nèi)容,并將其寫 入行向量寄存器,從而加速矩陣轉(zhuǎn)置操作。美國專利US20060036801 Al
<formula>formula see original document page 9</formula>(SCAIABLE MATRIX REGISTER FILE)提出利用硬件查找表實現(xiàn)邏輯行/列元 素到物理行/列元素的映射,使得任意邏輯行中的任意兩個元素不處于同一 個物理行,且任意邏輯列中的任意兩個元素不處于同一個物理列。這樣,該 向量寄存器文件可以通過同一個端口既讀取行向量寄存器,又讀取列向量寄 存器。這兩項專利均通過端口復用機制,使得一個端口既能訪問行向量寄存 器,又能訪問列向量寄存器。盡管這兩種行列端口復用機制降低了端口數(shù)目, 但是它們存在兩個缺點
1) 實現(xiàn)行、列向量寄存器同時訪問的代價較大。 一方面,釆用行列 訪問復用機制的端口由于同時實現(xiàn)了行列訪問機制,其實現(xiàn)代價 比非復用的行訪問端口或列訪問端口大。另一方面,實現(xiàn)行、列 向量寄存器同時訪問至少需要兩個端口,若全部或部分端口釆用 行列復用機制,則相對端口完全釆用非復用機制的,釆用復用機 制的向量寄存器的面積、功耗以及延時較大。
2) 行列向量訪問機制在某些情況下不能工作。 一方面,向量寄存器 文件中行向量寄存器和列向量寄存器中元素的數(shù)目分別為M和 iV,而M和iV往往不相等。因此,行列向量寄存器的皿不同, 不能直接進行運算。已有文獻和專利未對該情況提出解決方法。 另一方面,已有專利讀取行向量寄存器或列向量寄存器時是將其 所有元素取出,而M或7V往往大于向量運算部件中標量運算單元 的數(shù)目丄,因此,即便M和W相等,向量運算部件也不能一次性 處理源操作數(shù)中的所有元素。已有文獻和專利也未對這種情況提 出解決方法。綜上所述,如何以較低代價實現(xiàn)行向量寄存器和列向量寄存器的同時訪 問,并為向量運算部件提供與之運算能力匹配的源操作數(shù)帶寬仍是本領域研 究的熱點問題。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是針對現(xiàn)有向量寄存器文件實現(xiàn)時 訪問行向量和列向量寄存器的代價較大以及行列向量的元素數(shù)目與向量運 算部件處理能力不匹配的問題,提供一種行列訪問端口分離、支持行列向量 分段訪問且支持行列向量同時讀寫的矩陣寄存器文件,該矩陣寄存器文件通 過分離的行向量訪問端口和列向量訪問端口以及行列向量分段訪問機制,不 僅降低實現(xiàn)同時訪問行向量和列向量寄存器的代價,消除矩陣處理過程中的 矩陣轉(zhuǎn)置搡作,提高矩陣運算的效率;還完善了行列向量訪問機制,解決已 有矩陣寄存器文件的數(shù)據(jù)帶寬與向量運算部件運算能力不匹配的問題。
本發(fā)明的技術(shù)方案是
本發(fā)明由矩陣寄存器文件主體和讀寫端口組成。
矩陣寄存器文件主體由A^個行讀地址譯碼器、A^個行讀出緩沖器、 W,個行寫地址譯碼器、A^個列讀地址譯碼器、A^個列讀出緩沖器、A^個 列寫地址譯碼器以及包含A^M個元素的存儲單元陣列構(gòu)成,其中A^、 W,、 WCT、 AW均為正整數(shù)且iV朋H且iV^^l且A^^)且A^》0且AV+W^21。 W為矩陣寄存器文件中行向量寄存器的數(shù)目,且W為向量運算部件中標量運 算部件數(shù)目的倍數(shù),即A^"Z,"和Z為正整數(shù)且為2的整數(shù)次冪,丄為向量 運算部件中標量運算單元的數(shù)目,M為矩陣寄存器文件中列向量寄存器的數(shù) 目,且M為向量運算部件中標量運算部件的數(shù)目的倍數(shù),即M-mZ,其中附 為正整數(shù)且為2的整數(shù)次冪。存儲單元陣列按行劃分為W個存儲單元行,每行由M個同行的元素 £。-&—!組成,每個元素的位寬為S, ^為正整數(shù),這樣,每個存儲單元行有
厘*3位。這w個存儲單元行即構(gòu)成iv個行向量寄存器ra。-w^,,實現(xiàn)相應
行矩陣寄存器的存取。每個存儲單元行由附個子行組成,每個子行包含連續(xù)
的丄個元素。第/個行向量寄存器的第/個子行用ra,L/]表示,該子行由元素
^-An構(gòu)成,其中^0且""且^0且/<附;該存儲單元陣列按列劃分為 M個存儲單元列,每列由iV個同列的元素組成,每個存儲單元列有A^5位。 這M個存儲單元列即構(gòu)成M個列向量寄存器Cra。 -Cra^ ,實現(xiàn)相應列向量
寄存器的存取。每個存儲單元列由w個子列組成,每個子列包含連續(xù)的Z個 元素。第"個列向量寄存器的第v個子列用CKiUvl表示,其中"20且v〈w且
"o且
為了區(qū)分行向量寄存器訪問和列向量寄存器訪問,讀寫端口由分離的行 讀寫端口和列讀寫端口組成,行讀寫端口由A^個行讀端口、 AV個行寫端 口組成,列讀寫端口由A^個列讀端口和A^個列寫端口組成
每個行讀端口由行讀地址總線、行讀使能信號線以及行讀數(shù)據(jù)總線組 成。每個行寫端口由行寫地址總線、行寫使能信號線以及行寫數(shù)據(jù)總線組成。 行讀地址總線和行寫地址總線的寬度為10§2—*7\0位,支持向量處理器對矩
陣寄存器文件中任意行向量寄存器的任意子行進行訪問。行讀數(shù)據(jù)總線和行 寫數(shù)據(jù)總線的寬度為Z * 5位,即 一次訪問可為£個標量功能單元提供源操作 數(shù)或?qū)個標量功能單元產(chǎn)生的結(jié)果寫入矩陣寄存器文件。
行讀端口與矩陣寄存器文件主體中的行讀地址譯碼器 一對應,每個行 讀端口的行讀地址總線和行讀使能信號線是相應行讀地址譯碼器的輸入。行讀地址譯碼器根據(jù)行讀地址總線上的地址譯碼出附*^個子行讀地址選擇信 號,這些子行讀地址選擇信號形成子行讀地址選擇總線。每個子行讀地址選 擇信號控制存儲單元陣列中的一個存儲單元子行。當行讀使能信號線有效 時,與行讀地址對應的子行讀地址選擇信號有效,而其他子行讀地址選擇信 號無效。當行讀使能信號線無效時,附*^個子行讀地址選擇信號均無效。當 某一子行讀地址選擇信號有效時,相應存儲單元子行的內(nèi)容被讀出至該端口 的行讀出緩沖器,而行讀出緩沖器又將該內(nèi)容輸出至行讀端口的行讀出數(shù)據(jù) 總線上。
行寫端口與矩陣寄存器文件主體中的行寫地址譯碼器一一對應,每個行 寫端口的寫地址總線和寫使能信號線是相應行寫地址譯碼器的輸入。行寫地 址譯碼器根據(jù)行寫地址總線上的地址譯碼出^^iV個子行寫地址選擇信號,這 些子行寫地址選擇信號形成子行寫地址選擇總線。每個子行寫地址選擇信號 控制存儲單元陣列中的一個存儲單元子行。當行寫使能信號線有效時,與行 寫地址對應的子行寫地址選擇信號有效,而其他子行寫地址選擇信號無效。 當行寫使能信號線無效時,/^W個子行寫地址選擇信號均無效。當某一行寫 地址選擇信號有效時,行寫數(shù)據(jù)總線上的內(nèi)容寫入相應存儲單元行。
每個列讀端口由列讀地址總線、列讀使能信號線以及列讀數(shù)據(jù)總線組 成。每個列寫端口由列寫地址總線、列寫使能信號線以及列寫數(shù)據(jù)總線組成。 列讀地址總線和列寫地址總線的寬度為bg2(^M)位,支持向量處理器對矩陣
寄存器文件中任意列向量寄存器的任意子列進行訪問。列讀數(shù)據(jù)總線和列寫 數(shù)據(jù)總線的寬度為£*5位,即一次訪問可為Z個標量功能單元提供源搡作數(shù)
或?qū)A個標量功能單元產(chǎn)生的結(jié)果寫入矩陣寄存器文件。列讀端口與矩陣寄存器文件主體中的列讀地址譯碼器一一對應,每個列
讀端口的讀地址總線和讀使能信號線是相應列讀地址譯碼器的輸入。列讀地 址譯碼器根據(jù)列讀地址總線上的地址譯碼出 *^個子列讀地址選擇信號,這
些子列讀地址選擇信號形成子列讀地址選擇總線。每個子列讀地址選擇信號 控制存儲單元陣列中的一個存儲單元子列。當列讀使能信號線有效時,與列 讀地址對應的子列讀地址選擇信號有效,而其他子列讀地址選擇信號無效。 當列讀使能信號線無效時,^M個子列讀地址選擇信號均無效。當某一子列 讀地址選擇信號有效時,相應存儲單元子列的內(nèi)容被讀出至該端口的列讀出 緩沖器,而列讀出緩沖器又將該內(nèi)容輸出至列讀端口的列讀出數(shù)據(jù)總線上。 列寫端口與矩陣寄存器文件主體中的列寫地址譯碼器一 一對應,每個列 寫端口的寫地址總線和寫使能信號線是相應列寫地址譯碼器的輸入。列寫地 址譯碼器根據(jù)列寫地址總線上的地址譯碼出^M個子列寫地址選擇信號,這 些子列寫地址選擇信號形成子列寫地址選擇總線。每個子列寫地址選擇信號 控制存儲單元陣列中的一個存儲單元子列。當列寫使能信號線有效時,與M 寫地址對應的子列寫地址選擇信號有效,而其他子列寫地址選擇信號無效。 當列寫使能信號線無效時,"*^個子列寫地址選擇信號均無效。當某一列寫 地址選擇信號有效時,列寫數(shù)據(jù)總線上的內(nèi)容寫入相應存儲單元列。
矩陣寄存器文件主體滿足2Wsw且2葉sM且z^i:, Z)為矩陣義的 行向量或列向量數(shù)目。若D不滿足這個條件,則將x按高等教育出版社出版 的高等代數(shù)(張禾瑞等著,2007年,第5版)中的矩陣分塊計算方法拆分成 多個滿足這一條件的子矩陣,再分別對子矩陣進行運算,最后綜合各子矩陣 的運算結(jié)果形成最終結(jié)果。以矩陣乘法X吁的一次行列乘法為例,若矩陣X已經(jīng)按行連續(xù)存放于矩 陣寄存器文件中行向量寄存器VRA-VRA+^的第r個子行,且矩陣r已經(jīng)按列 連續(xù)存放于列向量寄存器CVRB-CVR旨,的第s個子列,其中r、 " ^和S為 正整數(shù),滿足JSD且SS"且r〈M且KiV,則矩陣Z的第p行乘以矩陣7的 第《列按如下步驟進行,其中p和《均為正整數(shù),滿足;^D且g〈i)。
1程序發(fā)出矩陣乘法指令VMULVRA+p[r],CVRB+JS],VRc+kW,意思是將矩
陣寄存器文件中的第^ + P個行向量寄存器中第r個子行的所有元素分別與 第5 + 個列向量寄存器中第s個子列的所有元素相乘,所得乘法結(jié)果放入第 CW個行向量寄存器中第,個子行中。
1.1向量指令譯碼部件從指令中抽取源搡作數(shù)地址P和r以及9和"并 同時完成如下兩個搡作 1. 1. 1將行讀地址(^ + p和r )發(fā)送到矩陣寄存器文件的某一行讀端
口i A,同時將其行讀使能信號置為有效; 1.1.2將列讀地址(S + g和s)發(fā)送到矩陣寄存器文件的某一列讀端 口i^,同時將其列讀使能信號置為有效。 1.2矩陣寄存器文件行讀端口i^中的行讀地址和行讀使能信號通過行 讀地址譯碼器形成附* iV個子行讀地址選擇信號,其中第m"^ + p) + r
個子行讀地址選擇信號有效,而其他子行讀地址選擇信號均無效。 因此,存儲單元陣列將第^ + P行存儲單元中第r個子行,即行向量 寄存器VR吣中第r個子行所在的存儲單元子行,的內(nèi)容讀取到行讀
端口i^中的行讀數(shù)據(jù)總線上。 1.3矩陣寄存器文件列讀端口 i ^中的列讀地址和列讀使能信號通過列讀地址譯碼器形成一M個子列讀地址選擇信號,其中第 *(^ +《)+ 1
個子列讀地址選擇信號有效,而其他子列讀地址選擇信號均無效。
因此,存儲單元陣列將第^ +《列存儲單元中第S個子列,即列向量
寄存器CVR^中第《個子列所在的存儲單元子列,的內(nèi)容讀取到列讀
端口i^中的列讀數(shù)據(jù)總線上。 1.4向量運算部件從行讀端口 i ^的行讀數(shù)據(jù)總線和列讀端口 i />c的列讀
數(shù)據(jù)總線上分別獲取到兩個源搡作數(shù),并對這兩個源操作數(shù)中的元
素分別做乘法運算,得到D個乘法運算結(jié)果。 1.5向量運算部件完成如下步驟
1.5.1將向量指令譯碼部件從指令中抽取的目的行向量寄存器地址 C + /t以及子行地址H乍為行寫地址發(fā)送到矩陣寄存器文件的某一 行寫端口i iV。
1. 5. 2將乘法運算結(jié)果作為寫入數(shù)據(jù)發(fā)送到行寫端口及iV 。 1.5.3置行寫端口i ^的行寫使能信號為有效
1. 6行寫端口 i /V中的行寫地址和行寫使能信號通過行寫地址譯碼器形 成附*^個子行寫地址選擇信號,其中第m^C + Q + f個子行寫地址選
擇信號有效,而其他子行寫地址選擇信號均無效。因此,存儲單元 陣列將行寫端口 i /V中行寫數(shù)據(jù)總線上的數(shù)據(jù)寫入存儲單元陣列第 C + "虧存儲單元的第f個子行,即行向量寄存器VRc+k中第f行所在的
存儲單元子行。
由上述過程可知,本發(fā)明進行矩陣乘法搡作時不需要進行矩陣轉(zhuǎn)置操 作,也不需要加載轉(zhuǎn)置矩陣,而且使矩陣寄存器文件的讀數(shù)據(jù)總線和寫數(shù)據(jù)總線寬度與向量運算部件的運算能力匹配。因此,采用本發(fā)明能產(chǎn)生如下有 益技術(shù)效果
本發(fā)明通過分離的行向量訪問端口和列向量訪問端口以及行列向量分 段訪問機制,不僅降低實現(xiàn)同時訪問行向量和列向量寄存器的代價,消除矩 陣處理過程中的矩陣轉(zhuǎn)置操作,提高矩陣運算的效率;還完善了行列向量訪 問機制,解決了已有矩陣寄存器文件的數(shù)據(jù)帶寬與向量運算部件運算能力不 匹配的問題。
圖i是目前通用向量微處理器的部分邏輯結(jié)構(gòu)示意圖2是目前通用向量微處理器中支持行列向量訪問的向量寄存器文件的
邏輯結(jié)構(gòu)示意圖3是圖2所示向量寄存器文件的存儲單元陣列結(jié)構(gòu)示意圖; 圖4是本發(fā)明矩陣寄存器文件的邏輯結(jié)構(gòu)示意圖; 圖5是本發(fā)明矩陣寄存器文件的存儲單元陣列邏輯結(jié)構(gòu)示意圖; 圖6是矩陣;r和y在本發(fā)明矩陣寄存器文件中的存放示意圖; 圖7是基于本發(fā)明矩陣寄存器文件的行、列向量進行乘法操作示意圖。 圖l是目前通用向量微處理器的部分邏輯結(jié)構(gòu)示意圖。向量微處理器通 常包括向量寄存器文件、向量指令譯碼部件和向量運算部件。向量指令譯碼 部件完成對向量指令的譯碼,將譯碼結(jié)果(需要執(zhí)行何種指令、需要讀取哪 些向量寄存器等)發(fā)送到向量運算部件和向量寄存器文件。向量運算部件按 照譯碼結(jié)果對向量寄存器文件提供的源操作數(shù)進行運算,并將運算的結(jié)果寫入由譯碼結(jié)果指定的向量寄存器或存儲器。向量寄存器文件用于存放和提供 向量微處理器運行時所需的向量數(shù)據(jù)。
圖2目前通用向量微處理器中支持行列向量訪問的向量寄存器文件的邏
輯結(jié)構(gòu)示意圖。這種向量寄存器文件由向量寄存器文件主體和讀寫端口組 成。向量寄存器文件主體由A^個讀地址譯碼器、A^個讀出緩沖器、A^個寫 地址譯碼器以及包含A^M個元素的存儲單元陣列構(gòu)成,存儲單元陣列由iV 個行向量寄存器KR。 -,或M個列向量寄存器CT及。-CWC—,構(gòu)成,AT為行向 量寄存器的數(shù)目,M為列向量寄存器的數(shù)目,因此存儲單元陣列包含iV * M個 元素。讀寫端口均為行列向量訪問復用的端口,即一個讀端口不僅支持對行 向量寄存器進行讀取,還支持對列向量寄存器進行讀取,而一個寫端口不僅 支持對行向量寄存器進行寫入,還支持對列向量寄存器進行寫入。為了支持 多個向量部件同時工作,讀寫端口由A^個讀端口和AV個寫端口構(gòu)成,其中 ^d且AV^。每個讀端口都由行列選擇信號線、讀地址總線、讀使能信號 線以及讀數(shù)據(jù)總線組成,其中行列選擇信號線用于選擇當前是對行向量寄存 器進行讀取還是對列向量寄存器進行讀取,讀地址總線的位寬為 M4X(bg2iV,log2M),即1og2JV和log2M兩者的最大值,讀數(shù)據(jù)總線的位寬為
JV*5或M"。每個寫端口都由行列選擇信號線、寫地址總線、寫使能信號 線以及寫數(shù)據(jù)總線組成,其中行列選擇信號線用于選擇當前是對行向量寄存 器進行讀取還是對列向量寄存器進行寫入,寫地址總線的位寬為 M4X(log2iV,log2M),即log,iV和log2M兩者的最大值,寫數(shù)據(jù)總線的位寬為圖3是圖2所示向量寄存器文件的存儲單元陣列結(jié)構(gòu)示意圖。存儲單元 陣列按行劃分為iV個A^5位的存儲單元行,每行由M個同行的元素組成,
每個元素的位寬為5。這iv個存儲單元行與AT個行向量寄存器ra。-ra^—一
對應,用于實現(xiàn)相應行向量寄存器的存取功能;該存儲單元陣列按列劃分為 M個A^萬位的存儲單元列,每列由iV個同列的元素組成。這Af個存儲單元 列與M個列向量寄存器Cra。 -Cra^ — 一對應,用于實現(xiàn)相應列向量寄存器
的存取功能。以cra^為例,該列向量寄存器包括所有行向量寄存器ra。-raM
的最后一個元素^—,。讀端口與向量寄存器文件主體中的讀地址譯碼器一一 對應,其中每個讀端口的行列選擇信號線、讀地址總線和讀使能信號線是相 應讀地址譯碼器的輸入。每個讀地址譯碼器產(chǎn)生W個行讀地址選擇信號和M 個列讀地址選擇信號,這些信號分別形成行讀地址選擇總線和列讀地址選擇
總線。iV個行讀地址選擇信號分別控制存儲單元陣列中的iV個存儲單元行,
每一存儲單元行存儲了一個行向量寄存器的所有元素£。-M個列讀地
址選擇信號分別控制存儲單元陣列中的M個存儲單元列,每一存儲單元列存 儲了一個列向量寄存器的所有元素。存儲單元陣列在這些讀地址選擇信號的 作用下,將相應存儲單元行或存儲單元列的內(nèi)容讀出至相應讀端口的讀出緩 沖器,而讀出緩沖器又將該內(nèi)容輸出至該讀端口的讀出數(shù)據(jù)總線上。寫端口 與向量寄存器文件主體中的寫地址譯碼器一一對應,每個寫端口的行列選擇 信號線、寫地址總線和寫使能信號線是相應寫地址譯碼器的輸入。每個寫地
址譯碼器產(chǎn)生iV個行寫地址選擇信號和M個列寫地址選擇信號,這些信號分
別形成行寫地址選擇總線和列寫地址選擇總線。w個行寫地址選擇信號分別
控制存儲單元陣列中的iV個存儲單元行,M個列讀地址選擇信號分別控制存儲單元陣列中的M個存儲單元列。存儲單元陣列在這些寫地址選擇信號的作
用下,將寫數(shù)據(jù)總線上的內(nèi)容寫入相應存儲單元行或存儲單元列。
圖4是本發(fā)明矩陣寄存器文件的邏輯結(jié)構(gòu)示意圖。本發(fā)明由讀寫端口和
矩陣寄存器文件主體組成。
讀寫端口是矩陣寄存器文件與向量微處理器中其他部件的接口,讀寫端
口由A^個行讀端口、 W,個行寫端口、 A^個列讀端口和iV^個列寫端口構(gòu) 成,其中iV朋》l且A^^l且JV脾20且iVc『》0且AV+iV,21。
矩陣寄存器文件主體由A^個行讀地址譯碼器、A^個行讀出緩沖器、 A^個行寫地址譯碼器、&,個列讀地址譯碼器、A^個列讀出緩沖器、JV^個 列寫地址譯碼器以及包含A^M個元素的存儲單元陣列構(gòu)成。
每個行讀端口由行讀地址總線、行讀使能信號線以及行讀數(shù)據(jù)總線組
成。每個行寫端口由行寫地址總線、行寫使能信號線以及行寫數(shù)據(jù)總線組成。 行讀地址總線和行寫地址總線的寬度為log,(^iV)位,支持向量處理器對矩
陣寄存器文件中任意行向量寄存器的任意子行進行訪問。行讀數(shù)據(jù)總線和行 寫數(shù)據(jù)總線的寬度為Z * B位,即 一次訪問可為Z個標量功能單元提供源操作 數(shù)或?qū)A個標量功能單元產(chǎn)生的結(jié)果寫入矩陣寄存器文件。
行讀端口與矩陣寄存器文件主體中的行讀地址譯碼器一一對應,每個行
讀端口的行讀地址總線和行讀使能信號線是相應行讀地址譯碼器的輸入。行 讀地址譯碼器根據(jù)行讀地址總線上的地址譯碼出附*^個子行讀地址選擇信
號L這些子行讀地址選擇信號形成子行讀地址選擇總線。每個子行讀地址選 擇信號控制存儲單元陣列中的一個存儲單元子行。當行讀使能信號線有效 時,與行讀地址對應的子行讀地址選擇信號有效,而其他子行讀地址選擇信號無效。當行讀使能信號線無效時,附*^個子行讀地址選擇信號均無效。當 某一子行讀地址選擇信號有效時,相應存儲單元子行的內(nèi)容被讀出至該端口 的行讀出緩沖器,而行讀出緩沖器又將該—容輸出至行讀端口的行讀出數(shù)據(jù) 總線上。
行寫端口與矩陣寄存器文件主體中的行寫地址譯碼器一一對應,每個行 寫端口的寫地址總線和寫使能信號線是相應行寫地址譯碼器的輸入。行寫地 址譯碼器根據(jù)行寫地址總線上的地址譯碼出附*^個子行寫地址選擇信號,這
些子行寫地址選擇信號形成子行寫地址選擇總線。每個子行寫地址選擇信號 控制存儲單元陣列中的一個存儲單元子行。當行寫使能信號線有效時,與行 寫地址對應的子行寫地址選擇信號有效,而其他子行寫地址選擇信號無效。 當行寫使能信號線無效時,m + iV個子行寫地址選擇信號均無效。當某一行寫 地址選擇信號有效時,行寫數(shù)據(jù)總線上的內(nèi)容寫入相應存儲單元行。
每個列讀端口由列讀地址總線、列讀使能信號線以及列讀數(shù)據(jù)總線組 成。每個列寫端口由列寫地址總線、列寫使能信號線以及列寫數(shù)據(jù)總線組成。 列讀地址總線和列寫地址總線的寬度為bg2(^M)位,支持向量處理器對矩陣 寄存器文件中任意列向量寄存器的任意子列進行訪問。列讀數(shù)據(jù)總線和列寫 數(shù)據(jù)總線的寬度為Z"^位,即一次訪問可為丄個標量功能單元提供源操作數(shù) 或?qū)個標量功能單元產(chǎn)生的結(jié)果寫入矩陣寄存器文件。
列讀端口與矩陣寄存器文件主體中的列讀地址譯碼器一一對應,每個列 讀端口的讀地址總線和讀使能信號線是相應列讀地址譯碼器的輸入。列讀地
址譯碼器根據(jù)列讀地址總線上的地址譯碼出^M個子列讀地址選擇信號,這
些子列讀地址選擇信號形成子列讀地址選擇總線。每個子列讀地址選擇信號控制存儲單元陣列中的一個存儲單元子列。當列讀使能信號線有效時,與ii 讀地址對應的子列讀地址選擇信號有效,而其他子列讀地址選擇信號無效。 當列讀使能信號線無效時,^M個子列讀地址選擇信號均無效。當某一子列 讀地址選擇信號有效時,相應存儲單元子列的內(nèi)容被讀出至該端口的列讀出 緩沖器,而列讀出緩沖器又將該內(nèi)容輸出至列讀端口的列讀出數(shù)據(jù)總線上。 列寫端口與矩陣寄存器文件主體中的列寫地址譯碼器一 一對應,每個列
寫端口的寫地址總線和寫使能信號線是相應列寫地址譯碼器的輸入。列寫地 址譯碼器根據(jù)列寫地址總線上的地址譯碼出"*M個子列寫地址選擇信號,這
些子列寫地址選擇信號形成子列寫地址選擇總線。每個子列寫地址選擇信號 控制存儲單元陣列中的一個存儲單元子列。當列寫使能信號線有效時,與M 寫地址對應的子列寫地址選擇信號有效,而其他子列寫地址選擇信號無效。 當列寫使能信號線無效時,^M個子列寫地址選擇信號均無效。當某一列寫 地址選擇信號有效時,列寫數(shù)據(jù)總線上的內(nèi)容寫入相應存儲單元列。 圖5是本發(fā)明矩陣寄存器文件的存儲單元陣列結(jié)構(gòu)的示意圖。 存儲單元陣列按行劃分為^個A^5位的存儲單元行,每行由M個同行
的元素五。-^一,組成,每個元素的位寬為s。這W個存儲單元行與iV個行向量
寄存器ra。-ra^—一對應,實現(xiàn)相應行矩陣寄存器的存取。每個存儲單元行 由m個子行組成,每個子行包含連續(xù)的1個元素。由此,矩陣寄存器文件中
第個行向量寄存器的第/個子行用表示,該子行由元素~-構(gòu)
成,其中,々0且/<"且_/20且7<附;該存儲單元陣列按列劃分為M個A^5位 的存儲單元列,每列由W個同列的元素組成。這M個存儲單元列與M個列向 量寄存器cra。-cra^—一對應,實現(xiàn)相應列向量寄存器的存取。每個存儲單元列由"個子列組成,每個子列包含連續(xù)的£個元素。由此,矩陣寄存器文 件中第"個列向量寄存器的第v個子列用Cra》]表示,其中"》0且"m且
20且^< 。例如,圖中存儲單元陣列右下角的灰色部分,可以用cra^["-i]表示。
每個行讀地址譯碼器產(chǎn)生的附* iV個子行讀地址選擇信號分別控制存儲 單元陣列中的m申iV個存儲單元子行,每一存儲單元子行存儲了一個行向量寄 存器中一個子行的所有元素。當某一子行讀地址選擇信號有效時,相應存儲 單元子行的內(nèi)容被讀出至該端口的行讀出緩沖器,而行讀出緩沖器又將該內(nèi) 容輸出至行讀端口的行讀出數(shù)據(jù)總線上。
每個行寫地址譯碼器產(chǎn)生的m *iV個子行寫地址選擇信號分別控制存儲 單元陣列中的/^iV個存儲單元子行,每一存儲單元子行存儲了一個行向量寄
存器中一個子行的所有元素。當某一行寫地址選擇信號有效時,行寫數(shù)據(jù)總 線上的內(nèi)容寫入相應存儲單元行。
每個列讀地址譯碼器產(chǎn)生的"*^個子列讀地址選擇信號分別控制存儲 單元陣列中的w*M個存儲單元子列,每一存儲單元子列存儲了 一個列向量寄 存器中一個子列的所有元素。當某一子列讀地址選擇信號有效時,相應存儲 單元子列的內(nèi)容被讀出至該端口的列讀出緩沖器,而列讀出緩沖器又將該內(nèi) 容輸出至列讀端口的列讀出數(shù)據(jù)總線上。
每個列寫地址譯碼器產(chǎn)生的"*似個子列寫地址選擇信號分別控制存儲 單元陣列中的^M個存儲單元子列,每一存儲單元子列存儲了一個列向量寄 存器中一個子列的所有元素。當某一列寫地址選擇信號有效時,列寫數(shù)據(jù)總 線上的內(nèi)容寫入相應存儲單元列。圖6是矩陣z和r在本發(fā)明矩陣寄存器文件中的存放示意圖。義矩陣按 行連續(xù)存放在行向量寄存器ra。-raD—,的第零個子行,即先在行向量寄存器
ra。第零個子行中存放矩陣Jf的第一行數(shù)據(jù)(Xu,^,…,^),然后在行向量寄存 器^第零個子行中存放矩陣X的第二行數(shù)據(jù)fe,;^,...,^),以此類推。F矩
陣按列連續(xù)存放在列向量寄存器crarcra^一,的第零個子列,即先在列向量 寄存器c^第零個子列中存放矩陣y的第一列數(shù)據(jù)(&^,...,^),然后在列
向量寄存器(3^)+1第零個子列中存放矩陣1^的第二列數(shù)據(jù)(&,>^...,&2),以
此類推。
圖7基于本發(fā)明矩陣寄存器文件的行、列向量進行乘法搡作示意圖。向 量運算單元執(zhí)行行列向量乘法指令VMULVRJO],CVRd
,VR。
,意思是將矩 陣寄存器文件中行向量寄存器VR,的第零個子行的所有元素分別與列向量寄 存器CVR。的第零個子列的所有元素相乘,所得乘法結(jié)果放入行向量寄存器 VR。的第零個子行。向量微處理器利用矩陣寄存器文件提供的行讀端口和列
讀端口同時讀取矩陣寄存器文件行向量寄存器v^的第零個子行(對應于x
矩陣的第二行)和列向量寄存器CVR。的第零個子列(對應于r矩陣的第一
列),兩個源向量數(shù)據(jù)在向量運算部件中相乘,所得乘法結(jié)果通過矩陣寄存 器文件提供的行寫端口寫入行向量寄存器raD的第零個子行。
權(quán)利要求
1.一種行列訪問端口分離的矩陣寄存器文件,由矩陣寄存器文件主體和讀寫端口組成,其特征在于所述矩陣寄存器文件主體由NRR個行讀地址譯碼器、NRR個行讀出緩沖器、NRW個行寫地址譯碼器、NCR個列讀地址譯碼器、NCR個列讀出緩沖器、NCW個列寫地址譯碼器以及包含N*M個元素的存儲單元陣列構(gòu)成,其中NRR、NRW、NCR、NCW均為正整數(shù)且NRR≥1且NCR≥1且NRW≥0且NCW≥0且NRW+NCW≥1,N為矩陣寄存器文件中行向量寄存器的數(shù)目,且N為向量運算部件中標量運算部件數(shù)目的倍數(shù),即N=nL,n為正整數(shù)且為2的冪,L為向量運算部件中標量運算單元的數(shù)目,M為矩陣寄存器文件中列向量寄存器的數(shù)目,且M為向量運算部件中標量運算部件的數(shù)目的倍數(shù),即M=mL,其中m為正整數(shù)且為2的冪;存儲單元陣列按行劃分為N個存儲單元行,每行由M個同行的元素E0-EM-1組成,每個元素的位寬為B,B為正整數(shù),每個存儲單元行有M*B位,這N個存儲單元行即構(gòu)成N個行向量寄存器VR0-VRN-1;每個存儲單元行由m個子行組成,每個子行包含連續(xù)的L個元素,第i個行向量寄存器的第j個子行用VRi[j]表示,該子行由元素EjL-EjL+L-1構(gòu)成,其中i≥0且i<n且j≥0且j<m;該存儲單元陣列按列劃分為M個存儲單元列,每列由N個同列的元素組成,每個存儲單元列有N*B位,這M個存儲單元列即構(gòu)成M個列向量寄存器CVR0-CVRM-1,每個存儲單元列由n個子列組成,每個子列包含連續(xù)的L個元素,第u個列向量寄存器的第v個子列用CVRu[v]表示,其中u≥0且v<m且u≥0且v<n;讀寫端口由分離的行讀寫端口和列讀寫端口組成,行讀寫端口由NRR個行讀端口、NRW個行寫端口組成,列讀寫端口由NCR個列讀端口和NCW個列寫端口組成每個行讀端口由行讀地址總線、行讀使能信號線以及行讀數(shù)據(jù)總線組成,每個行寫端口由行寫地址總線、行寫使能信號線以及行寫數(shù)據(jù)總線組成;行讀地址總線和行寫地址總線的寬度為log2(m*N)位,行讀數(shù)據(jù)總線和行寫數(shù)據(jù)總線的寬度為L*B位;行讀端口與矩陣寄存器文件主體中的行讀地址譯碼器一一對應,每個行讀端口的行讀地址總線和行讀使能信號線是相應行讀地址譯碼器的輸入,行讀地址譯碼器根據(jù)行讀地址總線上的地址譯碼出m*N個子行讀地址選擇信號,這些子行讀地址選擇信號形成子行讀地址選擇總線,每個子行讀地址選擇信號控制存儲單元陣列中的一個存儲單元子行;當行讀使能信號線有效時,與行讀地址對應的子行讀地址選擇信號有效,而其他子行讀地址選擇信號無效,當行讀使能信號線無效時,m*N個子行讀地址選擇信號均無效;當某一子行讀地址選擇信號有效時,相應存儲單元子行的內(nèi)容被讀出至該端口的行讀出緩沖器,而行讀出緩沖器將該內(nèi)容輸出至行讀端口的行讀出數(shù)據(jù)總線上;行寫端口與矩陣寄存器文件主體中的行寫地址譯碼器一一對應,每個行寫端口的寫地址總線和寫使能信號線是相應行寫地址譯碼器的輸入,行寫地址譯碼器根據(jù)行寫地址總線上的地址譯碼出m*N個子行寫地址選擇信號,這些子行寫地址選擇信號形成子行寫地址選擇總線,每個子行寫地址選擇信號控制存儲單元陣列中的一個存儲單元子行;當行寫使能信號線有效時,與行寫地址對應的子行寫地址選擇信號有效,而其他子行寫地址選擇信號無效,當行寫使能信號線無效時,m*N個子行寫地址選擇信號均無效;當某一行寫地址選擇信號有效時,行寫數(shù)據(jù)總線上的內(nèi)容寫入相應存儲單元行;每個列讀端口由列讀地址總線、列讀使能信號線以及列讀數(shù)據(jù)總線組成,每個列寫端口由列寫地址總線、列寫使能信號線以及列寫數(shù)據(jù)總線組成;列讀地址總線和列寫地址總線的寬度為log2(n*M)位,列讀數(shù)據(jù)總線和列寫數(shù)據(jù)總線的寬度為L*B位;列讀端口與矩陣寄存器文件主體中的列讀地址譯碼器一一對應,每個列讀端口的讀地址總線和讀使能信號線是相應列讀地址譯碼器的輸入,列讀地址譯碼器根據(jù)列讀地址總線上的地址譯碼出n*M個子列讀地址選擇信號,這些子列讀地址選擇信號形成子列讀地址選擇總線,每個子列讀地址選擇信號控制存儲單元陣列中的一個存儲單元子列;當列讀使能信號線有效時,與型讀地址對應的子列讀地址選擇信號有效,而其他子列讀地址選擇信號無效,當列讀使能信號線無效時,n*M個子列讀地址選擇信號均無效;當某一子列讀地址選擇信號有效時,相應存儲單元子列的內(nèi)容被讀出至該端口的列讀出緩沖器,而列讀出緩沖器又將該內(nèi)容輸出至列讀端口的列讀出數(shù)據(jù)總線上;列寫端口與矩陣寄存器文件主體中的列寫地址譯碼器一一對應,每個列寫端口的寫地址總線和寫使能信號線是相應列寫地址譯碼器的輸入,列寫地址譯碼器根據(jù)列寫地址總線上的地址譯碼出n*M個子列寫地址選擇信號,這些子列寫地址選擇信號形成子列寫地址選擇總線,每個子列寫地址選擇信號控制存儲單元陣列中的一個存儲單元子列;當列寫使能信號線有效時,與列寫地址對應的子列寫地址選擇信號有效,而其他子列寫地址選擇信號無效,當列寫使能信號線無效時,n*M個子列寫地址選擇信號均無效;當某一列寫地址選擇信號有效時,列寫數(shù)據(jù)總線上的內(nèi)容寫入相應存儲單元列。
全文摘要
本發(fā)明公開了一種行列訪問端口分離的矩陣寄存器文件,目的是提供一種行列訪問端口分離、支持行列向量分段訪問和行列向量同時讀寫的矩陣寄存器文件。它由矩陣寄存器文件主體和讀寫端口組成,矩陣寄存器文件主體由行讀地址譯碼器、行讀出數(shù)據(jù)緩沖器、行寫地址譯碼器、列讀地址譯碼器、列讀出數(shù)據(jù)緩沖器、列寫地址譯碼器以及存儲單元陣列構(gòu)成;存儲單元陣列按行劃分為N個存儲單元行,N個存儲單元行構(gòu)成N個行向量寄存器;存儲單元陣列按列劃分為M個存儲單元列,M個存儲單元列構(gòu)成M個列向量寄存器;讀寫端口由分離的行讀端口、行寫端口、列讀端口和列寫端口構(gòu)成。本發(fā)明降低了同時訪問行向量和列向量寄存器的代價,消除了矩陣轉(zhuǎn)置操作,提高了運算效率。
文檔編號G11C11/4063GK101609715SQ20091004334
公開日2009年12月23日 申請日期2009年5月11日 優(yōu)先權(quán)日2009年5月11日
發(fā)明者萬江華, 劉衡竹, 孫書為, 李振濤, 陳書明, 陳躍躍, 魯建壯 申請人:中國人民解放軍國防科學技術(shù)大學