專利名稱:支持矩陣整體讀寫操作的矩陣寄存器文件的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及向量微處理器中支持矩陣整體讀寫操作的矩陣 寄存器文件。
背景技術(shù):
圖像處理和現(xiàn)代通信等媒體應(yīng)用領(lǐng)域需要進(jìn)行大量的矩陣 運(yùn)算,如圖像處理中的二維卷積、小波變換,現(xiàn)代通信領(lǐng)域調(diào)制解調(diào)系統(tǒng) 中的空時編碼(STBC)、信道估計和FFT算法都需要使用矩陣乘法、矩陣加 法運(yùn)算。面向這類數(shù)據(jù)密集型應(yīng)用的向量微處理器通常釆用單指令流多數(shù) 據(jù)流(SIMD)、超常指令字體系結(jié)構(gòu)(VLIW),設(shè)置向量運(yùn)算指令、向量寄
存器文件和向量運(yùn)算陣列來支持矩陣或向量數(shù)據(jù)運(yùn)算,以加快數(shù)據(jù)處理的 速度。
向量微處理器執(zhí)行向量操作指令時,其指令譯碼部件完成指令譯碼, 并將執(zhí)行何種指令搡作、源操作數(shù)位置、以及目的操作數(shù)位置等譯碼結(jié)果 發(fā)送到向量寄存器文件和向量運(yùn)算陣列。源搡作數(shù)從向量寄存器文件讀出 并送往向量運(yùn)算陣列進(jìn)行運(yùn)算,運(yùn)算結(jié)果被寫入由譯碼結(jié)果指定的目的向 量寄存器文件或片內(nèi)存儲器中。需要時,向量寄存器文件和向量運(yùn)算陣列 通過直接存儲器訪問控制器(DMA)訪問片外主存。
向量寄存器文件存放和提供向量運(yùn)算所需的向量數(shù)據(jù),是由^個(N 為正整數(shù),且為2的整數(shù)次冪)行向量寄存器構(gòu)成的向量寄存器組。每個 行向量寄存器又由M個S (B為正整數(shù))位的字組成。向量寄存器文件的大 小以^M個字表示,即向量寄存器文件最多能存放^M個數(shù)據(jù),最多可存放如式l所示的矩陣數(shù)據(jù),也可存放大小為J*H (KJ《N、 1《H《M,且為 整數(shù))的任意矩陣數(shù)據(jù)。
<formula>formula see original document page 9</formula>(式1)
層乂
對于存放式1所示矩陣數(shù)據(jù)的向量寄存器文件,共有N個行向量,M 個列向量,其行向量VR^ (x力x,} (1《j《N,且為整數(shù)),列向 量CVRh- {~, x2A,…,xM} (1《h《M,且為整數(shù))。
目前已有支持按行向量或列向量訪問的向量寄存器文件,可實(shí)現(xiàn)矩陣 轉(zhuǎn)置、行列向量的運(yùn)算操作。但向量微處理器要完成一次矩陣運(yùn)算,仍需
執(zhí)行多條向量寄存器文件的行、列向量操作指令。
例如實(shí)現(xiàn)矩陣VA ( J*H)(式2)與矩陣VB (H*K)(式3) (1《K《M,
且為整數(shù))的矩陣乘法操作,VA*VB結(jié)果中的每個元素等于VA —個行向量
(如 a^,ap,…,a辨,1《j《J )乘以VB的 一個歹寸向量(如614,62)(:,...,6報,1《k《K ), 并將H個乘積累加的結(jié)果。即,VA*VB的第j行第k (1《k《K)列元素就等
于|>#*^'見式4。<formula>formula see original document page 9</formula>
(式2)
<formula>formula see original document page 9</formula>
(式3)
欣乂<formula>formula see original document page 10</formula>
以目前只支持行或列訪問的向量寄存器文件結(jié)構(gòu)看,完成VA*VB的矩 陣乘法需要發(fā)出"K次向量運(yùn)算指令;進(jìn)行J《次向量指令取指和譯碼操 作;然后分別訪問向量寄存器文件VA和VB各J化次,才能分別將VA的每 個行向量和VB的每個列向量讀出并送往向量運(yùn)算陣列進(jìn)行向量運(yùn)算。VA 矩陣的每一行向量與VB矩陣的所有列向量分別進(jìn)行K次行列向量乘加運(yùn)算 后,可得到結(jié)果矩陣的一個行向量,需將其寫入目的向量寄存器文件的某 一行向量中。所以完成VA*VB的矩陣乘法運(yùn)算,向量運(yùn)算陣列需要進(jìn)行J*K 次向量運(yùn)算,運(yùn)算結(jié)果需要向目的向量寄存器文件進(jìn)行J次行向量的寫操 作方可完成。
因此這種向量寄存器文件存在這樣的問題雖然可直接支持向量運(yùn)算 指令,但要完成一次矩陣運(yùn)算,需要分別執(zhí)行多次向量寄存器文件的行、 列向量的訪問及其運(yùn)算指令操作,多次的向量指令取指、譯碼搡作增加了 系統(tǒng)功耗,降低了矩陣指令的執(zhí)行效率。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供 一種支持矩陣整體讀寫操 作的矩陣寄存器文件,使其不僅支持向量運(yùn)算,而且直接支持矩陣運(yùn)算, 即支持整體矩陣的所有行或列數(shù)據(jù)的一次性讀操作和整體矩陣的所有行或 列數(shù)據(jù)的一次性寫操作,使用單條矩陣指令就能實(shí)現(xiàn)整體的矩陣運(yùn)算,從 而提高代碼密度,降低存儲器開銷,降低系統(tǒng)功耗。本發(fā)明的技術(shù)方案是
本發(fā)明矩陣寄存器文件由矩陣寄存器文件存儲體、1個讀訪問端口和1
個寫訪問端口組成。矩陣寄存器文件存儲體由W個行向量寄存器VR。 ~ VRh 或^個列向量寄存器CVR。 ~ CVRw構(gòu)成;每個行向量寄存器VRi( i-0, 1 ~ N-l) 又由N個寄存器(VRi[j], j=0,l~N-l)和一個行寫片選信號組成,每個列 向量寄存器CVRm (m=0, 1 ~ N-l )又由N個寄存器(VRk [m], k=0, 1 ~ N-l)和 一個列寫片選信號組成,每個寄存器有B (B為正整數(shù))位。每個行向量寄 存器和每個列向量寄存器既與讀訪問端口相連,又與寫訪問端口相連。矩 陣寄存器文件能存放J行^列大小的矩陣數(shù)據(jù)(1《J《N、 1《H《N,且為 整數(shù))。
讀訪問端口由讀譯碼選擇器、讀出數(shù)據(jù)緩沖器和讀出控制器組成。讀 譯碼選擇器與讀出數(shù)據(jù)緩沖器、讀出控制器和矩陣寄存器文件存儲體相連, 即讀譯碼選擇器的輸入既與矩陣寄存器文件存儲體中的每個行向量寄存器 相連,又與每個列向量寄存器相連,輸出與讀出數(shù)據(jù)緩沖器相連。讀譯碼 選擇器從向量微處理器的指令譯碼部件接受讀行列模式信號,從讀出控制 器接受讀向量地址,根據(jù)讀行列模式信號和讀向量地址進(jìn)行行或列向量地 址譯碼并選擇存儲體中的某一行向量(或列向量)數(shù)據(jù)作為輸出送給讀出
數(shù)據(jù)緩沖器。
讀出數(shù)據(jù)緩沖器由1個緩沖器空滿標(biāo)志位和N個B位的寄存器構(gòu)成, 既與讀譯碼選擇器的輸出相連,又與讀出控制器相連。當(dāng)系統(tǒng)復(fù)位有效時, 讀出數(shù)據(jù)緩沖器置緩沖器空滿標(biāo)志位為空;當(dāng)接收到讀出控制器發(fā)來的數(shù) 據(jù)緩沖器寫信號有效時,讀譯碼選擇器的輸出值被寫入讀出數(shù)據(jù)緩沖器,并輸出到讀出數(shù)據(jù)總線等待向量運(yùn)算陣列或存儲器讀取,同時置緩沖器空 滿標(biāo)志位為滿。
讀出控制器與讀譯碼選擇器和讀出數(shù)據(jù)緩沖器相連,由l個讀狀態(tài)機(jī)、 1個讀計數(shù)器和1個讀加法器組成。它從向量微處理器的指令譯碼部件接受 讀請求、讀行列模式、行讀起始地址、列讀起始地址、行讀向量數(shù)、列讀 向量數(shù)和系統(tǒng)復(fù)位信號,從向量運(yùn)算陣列或存儲器接受向量讀使能信號, 控制讀譯碼選擇器和讀出數(shù)據(jù)緩沖器的操作。讀狀態(tài)機(jī)和讀計數(shù)器控制矩 陣的讀訪問過程,讀加法器負(fù)責(zé)改變讀飛方問過程中讀譯碼選擇器的讀向量 地址。
讀狀態(tài)機(jī)由讀端口空閑、讀地址譯碼和讀出三個狀態(tài)組成,其狀態(tài)轉(zhuǎn)
換過程是當(dāng)從指令譯碼部件收到系統(tǒng)復(fù)位信號有效時,讀狀態(tài)機(jī)置讀端 口忙信號無效,置緩沖器空滿標(biāo)志位為空,讀計數(shù)器清O,進(jìn)入讀端口空閑
狀態(tài);在空閑狀態(tài)若收到來自指令譯碼部件的讀請求信號有效,則啟動讀 搡作,置讀端口忙信號有效,進(jìn)入讀地址譯碼狀態(tài);在讀地址譯碼狀態(tài)根 據(jù)讀行列模式選擇行讀向量數(shù)或列讀向量數(shù)作為讀向量數(shù),根據(jù)讀行列模 式選擇行讀起始地址或列讀起始地址作為讀向量地址,輸出到讀譯碼選擇 器,讀譯碼選擇器根據(jù)讀行列模式和讀向量地址完成行向量或列向量地址 譯碼和向量的選擇,并輸出選中的某一行向量或列向量。此時若緩沖器空 滿標(biāo)志位為空,則置數(shù)據(jù)緩沖器寫信號有效,進(jìn)入讀出狀態(tài);將讀譯碼選 擇器的輸出寫入讀出數(shù)據(jù)緩沖器,置讀數(shù)據(jù)有效信號有效,置緩沖器空滿 標(biāo)志位為滿,讀加法器對讀向量地址進(jìn)行加l操作,讀計數(shù)器加l;若檢測 到向量讀使能有效,則判斷讀計數(shù)器是否達(dá)到讀向量數(shù),若沒有,下一拍置緩沖器空滿標(biāo)志位為空,回到讀地址譯碼狀態(tài);若達(dá)到讀向量數(shù),下一 拍置讀端口忙信號為無效,置緩沖器空滿標(biāo)志位為空,讀計數(shù)器清o,返回 讀端口空閑狀態(tài),結(jié)束本次矩陣讀操作。
讀訪問端口能根據(jù)來自指令譯碼部件和向量運(yùn)算陣列(或存儲器)的 控制信號,用多個時鐘周期(時鐘周期數(shù)大于等于矩陣的行讀向量數(shù)或列 讀向量數(shù)+3拍)來完成矩陣的整體讀操作,即在讀出控制器的控制下,以
流水方式每一拍讀出矩陣寄存器的某一行或列向量寄存器,同時按順序遞 增行/列地址,直到行/列向量全部讀出,完成整個矩陣的讀訪問。
寫訪問端口由寫地址譯碼器和寫入控制器組成。寫地址譯碼器既與矩 陣寄存器文件存儲體內(nèi)所有行向量寄存器和所有列向量寄存器相連,又與
寫入控制器相連,它從指令譯碼部件接受寫行列模式信號,從向量運(yùn)算陣 列或存儲器接受寫數(shù)據(jù)和寫數(shù)據(jù)有效信號,根據(jù)寫行列模式和寫入控制器 產(chǎn)生的寫向量地址完成地址譯碼,向矩陣寄存器文件存儲體輸出一個有效 的行寫片選信號或l個有效的列寫片選信號,當(dāng)收到寫入控制器輸出的數(shù) 據(jù)寫使能信號有效時,將寫數(shù)據(jù)總線上的數(shù)據(jù)寫入行寫片選信號或列寫片 選信號選中的行向量或列向量寄存器中。
寫入控制器與寫地址譯碼器相連,它由l個寫狀態(tài)機(jī)、 一個寫計數(shù)器 和1個寫加法器組成。寫入控制器從向量微處理器的指令譯碼部件接受寫 請求、寫行列模式、行寫起始地址、列寫起始地址、行寫向量數(shù)、列寫向 量數(shù)和系統(tǒng)復(fù)位信號,從向量運(yùn)算陣列或存儲器接受寫數(shù)據(jù)有效信號。寫 狀態(tài)機(jī)和寫計數(shù)器控制矩陣的寫訪問過程,寫加法器在寫狀態(tài)機(jī)的控制下 改變寫訪問過程中寫地址譯碼器的寫向量地址。寫狀態(tài)機(jī)由寫端口空閑、寫地址譯碼和寫入三個狀態(tài)組成,其狀態(tài)轉(zhuǎn) 換過程是當(dāng)從指令譯碼部件收到系統(tǒng)復(fù)位信號有效時,置寫端口忙信號 無效,清寫計數(shù)器為0,進(jìn)入寫端口空閑狀態(tài);在寫端口空閑狀態(tài),若檢測
到來自指令譯碼部件的寫請求有效,啟動寫操作置寫端口忙信號有效, 進(jìn)入寫地址譯碼狀態(tài);在寫地址譯碼狀態(tài),接收來自指令譯碼部件的寫行 列模式、行寫起始地址、列寫起始地址、行寫向量數(shù),列寫向量數(shù),根據(jù) 寫行列模式選擇行寫向量數(shù)或列寫向量數(shù)作為寫向量數(shù),同時根據(jù)寫行列 模式選擇行寫起始地址或列寫起始地址作為寫向量地址,將寫向量地址發(fā) 送給寫地址譯碼器進(jìn)行寫地址譯碼,若檢測到寫數(shù)據(jù)有效信號有效,則向 寫地址譯碼器輸出數(shù)據(jù)寫使能信號有效,進(jìn)入寫入狀態(tài);將寫數(shù)據(jù)總線上 的數(shù)據(jù)寫入寫地址譯碼器輸出的行寫片選信號或列寫片選信號選中的行或 列向量寄存器中,同時寫加法器對寫向量地址加l,寫計數(shù)器加l,并判斷 寫計數(shù)器是否等于寫向量數(shù),若等于,下一拍回到寫地址譯碼狀態(tài),若不 等于,則下一拍置寫端口忙信號為無效,清寫計數(shù)器為0,回到寫端口空閑 狀態(tài),結(jié)東本次矩陣的寫訪問。
寫訪問端口根據(jù)能根據(jù)來自指令譯碼部件和向量運(yùn)算陣列(或存儲器) 的控制信號,用多個時鐘周期(時鐘周期數(shù)大于等于矩陣的行寫向量數(shù)(列 寫向量數(shù))+2拍)完成矩陣的行或列向量的寫入,即用流水的方式每拍寫 入矩陣寄存器的一個行或向量,同時按順序遞增寫向量地址,直到寫入全 部行或向量寄存器,完成整個矩陣的一次寫入操作。
釆用本發(fā)明的向量微處理器直接支持矩陣運(yùn)算和操作,其指令集增加 以下四條矩陣指令矩陣乘法、矩陣加法、矩陣裝載、矩陣存儲指令。1、 矩陣乘法指令
MRMUL MAR1[J,H,Vaddl,CVaddl], MAR2[H,K,Vadd2,CVadd2], MAR3[J,H,Vadd3,CV"dd3] 意思是將矩陣寄存器文件MAR1中行讀起始地址為Vaddl、列讀起始地址為 CVaddl、行讀向量數(shù)為J、列讀向量數(shù)為H的矩陣與矩陣寄存器文件MAR2 中行讀起始地址為Vadd2、列讀起始地址為CVadd2、行讀向量數(shù)為H、列讀 向量數(shù)為K的矩陣相乘,結(jié)果矩陣存入行讀起始地址為Vadd3、列讀起始地 址為CVadd3的矩陣寄存器文件MAR3中,矩陣數(shù)據(jù)為J行、H列。
2、 矩陣加法指令
MRADD MAR1[J, H, Vaddl, CVflddl], MAR2[J, H, V。dd2, CV"dd2], MAR3[J, H, Vadd3, CVfldd3] 意思是將矩陣寄存器文件MAR1中行讀起始地址為Vaddl、列讀起始地址為
CVaddl、行讀向量數(shù)為J、列讀向量數(shù)為H的矩陣與矩陣寄存器文件MAR2
中行讀起始地址為Vadd2、列讀起始地址CVadd2、行讀向量數(shù)為J、列讀向
量數(shù)為H的矩陣相加,結(jié)果存入起始行地址為Vadd3、列起始地址為CVadd3
的矩陣寄存器文件MAR3中,矩陣數(shù)據(jù)仍為J行、H列。
3、 矩陣裝載指令
(1 ) LDVMR MARn [J, H, Vaddl, CVaddl] , AR ( n為正整數(shù)) 意思是將AR寄存器給出的起始地址開始對應(yīng)的J個行向量數(shù)據(jù)(每個行向 量有H個有效數(shù)據(jù))按行寫操作模式載入行起始地址為Vaddl、列起始地址 為CVaddl的第n個矩陣寄存器文件MARn中;矩陣有效數(shù)據(jù)J行、H列。
(2 ) LDCMR MARn [J, H, Vaddl, CVaddl] , AR ( n為正整數(shù)) 意思是將AR寄存器給出的起始地址開始對應(yīng)的H個列向量數(shù)據(jù)(每個列向 量有J個有效數(shù)據(jù))按列載入列起始地址為CVaddl、行起始地址為Vaddl 的第n個矩陣寄存器文件MARn中;矩陣有效數(shù)據(jù)J行、H列。4、矩陣存儲指令
(1) STVMR MARn [J, H, Vaddl, CVaddl], Rd
意思是將矩陣寄存器文件MARn中行起始地址為Vaddl、列起始地址為 CVaddl的J個行向量數(shù)據(jù)(每個行向量有H個有效數(shù)據(jù))按行寫操作模式 寫入由Rd寄存器給出的起始地址對應(yīng)的存儲器中。 (2 ) STCMR MARn [J,H,Vaddl,CVaddl], Rd
意思是將矩陣寄存器文件MARn中列起始地址為CVaddl、行起始地址為 Vaddl、 H個列向量數(shù)據(jù)(每個列向量有J個有效數(shù)據(jù))按列寫搡作模式寫 入由Rd寄存器給出的起始地址對應(yīng)的存儲器中。
涉及以上矩陣操作指令的矩陣寄存器文件的讀搡作過程是
1 指令譯碼部件對矩陣讀搡作指令譯碼,從指令中抽取指定源矩陣寄 存器文件的讀請求、讀行列模式、行讀起始地址、行讀向量數(shù)、列 讀起始地址、列讀向量數(shù)、系統(tǒng)復(fù)位這些信號,同時檢測讀端口忙 信號是否為無效(即讀訪問端口不忙),是則將抽取的這些信號送往 指定矩陣寄存器文件的讀訪問端口 。
2 讀訪問端口的讀出控制器接到讀請求信號,置讀端口忙信號有效, 啟動矩陣讀操作
2. 1根據(jù)讀行列模式選擇是行向量讀操作還是列向量讀操作,若是行向 量讀操作,則以行讀起始地址為讀向量地址,行讀向量數(shù)為讀向量數(shù), 若是列向量讀操作,則以列讀起始地址作為讀向量地址,列讀向量數(shù)為
讀向量數(shù);
2. 2讀譯碼選擇器根據(jù)讀向量地址進(jìn)行譯碼,將輸出選擇的一個行向量或列向量寄存器的數(shù)據(jù)在緩沖器空滿標(biāo)志位為空時寫入讀出數(shù)據(jù)緩存 器,然后置讀數(shù)據(jù)有效信號有效,置緩沖器空滿標(biāo)志位為滿,等待外部 的向量讀使能信號有效;
2.3若向量讀使能有效,表示數(shù)據(jù)被讀走,則下一拍置讀數(shù)據(jù)有效信號 無效,置緩沖器空滿標(biāo)志位為空;讀出控制器對讀向量地址加1,讀計 數(shù)器加l。
3 讀出控制器內(nèi)的讀狀態(tài)機(jī)判斷其讀計數(shù)器的值是否達(dá)到讀向量數(shù),
若未達(dá)到則重復(fù)步驟2.2和2. 3;否則結(jié)東本次矩陣讀操作,置讀端
口忙信號無效,表示讀訪問端口空閑,回到步驟l,準(zhǔn)備接收下一次
矩陣讀操作。 矩陣寄存器文件的寫操作步驟具體如下
(1) 指令譯碼部件對矩陣寫操作指令譯碼,從指令中抽取目標(biāo)矩陣寄存器 文件寫請求、寫行列模式、行寫起始地址、行寫向量數(shù),列寫起始地 址、列寫向量數(shù)、系統(tǒng)復(fù)位信號,同時檢測寫訪問端口的寫端口忙信 號是否無效(即寫訪問端口不忙),是則將抽取的這些信號送往目標(biāo) 矩陣寄存器文件的寫訪問端口 。
(2) 寫訪問端口的寫入控制器接收到寫請求信號有效時,置寫端口忙信號 有效,(表示寫訪問端口忙,不再接收新的寫請求)啟動矩陣寫搡作:
(2.1)根據(jù)寫行列模式選擇是行向量寫操作還是列向量寫操作,若是
行向量寫操作,則以行寫起始地址為寫向量地址,行寫向量數(shù)為寫向量 數(shù),若是列向量寫操作,則以列寫起始地址作為寫向量地址,列寫向量 數(shù)為寫向量數(shù);(2.2)寫地址譯碼器根據(jù)寫行列模式和寫向量地址進(jìn)行行向量或列向 量地址譯碼。當(dāng)來自存儲器或向量運(yùn)算陣列的寫數(shù)據(jù)有效信號有效時, 寫入控制器置數(shù)據(jù)寫使能信號有效,將寫數(shù)據(jù)寫入寫地址譯碼器選中的
行向量或列向量寄存器中,同時將寫向量地址加l,寫計數(shù)器加l; (2. 3)寫入控制器內(nèi)的寫狀態(tài)機(jī)判斷寫計數(shù)器的值是否達(dá)到矩陣的寫 向量數(shù),若沒達(dá)到,則重復(fù)步驟(2.2)和(2. 3);否則置寫端口忙信 號無效,回到步驟(l),完成本次矩陣寫操作,準(zhǔn)備接收下一次矩陣寫 操作。
由上述過程可知,本發(fā)明直接支持整體矩陣數(shù)據(jù)的讀寫訪問搡作,實(shí) 現(xiàn)矩陣操作指令時不需要分別讀取和譯碼多條矩陣的行、列向量操作指令, 使用單條矩陣操作指令就可實(shí)現(xiàn)整個矩陣所有的行、列的讀操作和所有矩 陣行的寫操作。
釆用本發(fā)明能產(chǎn)生如下技術(shù)效果
(1) 不僅支持向量運(yùn)算,還可直接支持單指令形式的矩陣操作指令,即支 持單條指令對矩陣整體的行/列讀操作,或單條指令對矩陣整體的寫操作。 將同等規(guī)模大小的矩陣運(yùn)算需進(jìn)行的多次取指、譯碼操作減少為 一次取值、 譯碼,降低了同等規(guī)模大小矩陣運(yùn)算的功耗,提高了矩陣運(yùn)算的效率。對 于VA (J行H列)和矩陣VB (H行K列)的矩陣乘法運(yùn)算只需一條矩陣運(yùn) 算指令即可完成,比原來的向量寄存器文件少J化-l條。
(2) 節(jié)省了代碼量,提高了代碼密度,降低了存儲器開銷。
(3) 支持矩陣寄存器文件的行、列向量的讀訪問使得矩陣運(yùn)算不需要進(jìn)行 額外的矩陣轉(zhuǎn)置搡作。
圖1是現(xiàn)有向量寄存器文件與向量微處理器其他部件接口示意圖。
圖2是本發(fā)明矩陣寄存器文件的邏輯結(jié)構(gòu)框圖。 圖3是本發(fā)明矩陣寄存器文件存儲體邏輯結(jié)構(gòu)圖。 圖4是本發(fā)明讀出控制器中讀狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)換圖。 圖5是本發(fā)明寫入控制器中寫狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)換圖。
圖l是現(xiàn)有向量寄存器文件與向量微處理器中其他部件的接口示意圖。 該向量微處理器包括指令譯碼部件、 一個向量運(yùn)算陣列、片內(nèi)存儲器、直 接存儲器訪問控制器(DMA)和n個向量寄存器文件。指令譯碼部件對從取 指部件來的矩陣指令進(jìn)行譯碼,將譯碼后的各控制信號分別發(fā)送到向量寄 存器文件和向量運(yùn)算陣列。向量運(yùn)算陣列、片內(nèi)存儲器、DMA和向量寄存器 文件通過片內(nèi)資源總線交換數(shù)據(jù)。DMA實(shí)現(xiàn)成組的片內(nèi)外存儲器數(shù)據(jù)傳輸。 向量寄存器文件存放和提供向量微處理器運(yùn)行時所需的矩陣數(shù)據(jù)。若需要 進(jìn)行向量寄存器文件的讀操作,源搡作數(shù)從指定源向量寄存器文件的位置 中讀出,通過片內(nèi)資源總線或送往向量運(yùn)算陣列進(jìn)行運(yùn)算、或?qū)懭肫瑑?nèi)存 儲器、或通過DMA寫入片外存儲器。若需要進(jìn)行向量寄存器文件的加載或 寫訪問操作,則將片內(nèi)存儲器讀出的向量數(shù)據(jù)或向量運(yùn)算陣列的運(yùn)算結(jié)果 寫入向量指令指定的向量寄存器文件的相應(yīng)行中。
圖2是本發(fā)明矩陣寄存器文件的邏輯結(jié)構(gòu)框圖。它與向量微處理器中
其他部件的連接方式與圖l所示向量寄存器文件的一樣。矩陣寄存器文件 由l個讀訪問端口、l個寫訪問端口和矩陣寄存器文件存儲體組成。讀訪問端口由讀譯碼選擇器、讀出控制器、讀出數(shù)據(jù)緩沖器組成。其 中,輸入端口信號讀請求、讀行列模式、行讀起始地址、行讀向量數(shù)、列 讀起始地址、列讀向量數(shù),向量讀使能,系統(tǒng)復(fù)位均與讀出控制器相連; 輸出信號讀端口忙信號、讀數(shù)據(jù)有效與讀出控制器相連,讀出數(shù)據(jù)總線與 讀出數(shù)據(jù)緩沖器相連。讀譯碼選擇器還與矩陣寄存器文件存儲體的每個行 向量寄存器、列向量寄存器相連,它根據(jù)讀向量地址進(jìn)行讀向量地址譯碼, 輸出選中的行向量或列向量寄存器。讀出控制器由讀狀態(tài)機(jī)、讀計數(shù)器和 讀加法器組成,它與讀出控制器和讀出數(shù)據(jù)緩沖器相連,控制讀操作的復(fù) 位、啟動、結(jié)東。
寫訪問端口由寫地址譯碼器、寫入控制器組成。其中,輸入信號寫
請求、寫數(shù)據(jù)有效、寫行列模式、行寫起始地址、列寫起始地址、行寫向
量數(shù)、列寫向量數(shù)、系統(tǒng)復(fù)位與寫入控制器相連;輸出信號寫端口忙信號
與寫入控制器相連。寫數(shù)據(jù)總線與矩陣寄存器文件內(nèi)所有的行向量和列向
量寄存器相連;寫地址譯碼器根據(jù)寫行列模式和寫向量地址完成地址譯碼,
輸出有效的行寫片選信號或列寫片選信號,選擇欲寫的行向量或列向量。 寫入控制器由寫狀態(tài)機(jī)、寫計數(shù)器和寫激發(fā)起組成,與寫地址譯碼器相連, 控制寫操作的復(fù)位、啟動、結(jié)東。
圖3是矩陣寄存器文件存儲體邏輯結(jié)構(gòu)圖。該存儲體由N個行向量寄 存器VR廣VRh (或N個列向量CVR廣CVRh)組成。每個行向量寄存器VRi
(i =0,1~N-1)又由N個寄存器(VRi[j], j=0,l~N-1)和一個行寫片選 信號組成,每個列向量寄存器CVl (m=0,l~N-l)又由N個寄存器
(VRk[m],k-0,l~N-l)和一個列寫片選信號組成。每個寄存器有B位。每端口相連。每個行向量寄 存器和每個列向量寄存器均與寫數(shù)據(jù)總線和寫地址譯碼器相連。N個行向量 寄存器分別與寫地址譯碼器的N條行寫片選信號線(第0, 1, ......N-l條)
相連;N個列向量寄存器分別與寫地址譯碼器的N條列寫片選信號線(第0, 1, ......N-l條)相連。通過寫訪問端口內(nèi)的寫入控制器控制矩陣數(shù)據(jù)中所
有的行向量或列向量寄存器的連續(xù)寫入。每個行向量、列向量寄存器與讀 訪問端口的讀譯碼選擇器相連,并通過讀出控制器控制矩陣的讀訪問過程。 圖4是矩陣寄存器文件的讀訪問端口讀出控制器中讀狀態(tài)機(jī)的狀態(tài)轉(zhuǎn) 換圖,由讀端口空閑、讀地址譯碼和讀出三個狀態(tài)組成,其狀態(tài)轉(zhuǎn)換過程 是當(dāng)從指令譯碼部件收到系統(tǒng)復(fù)位信號有效時,讀狀態(tài)機(jī)置讀端口忙信 號無效,置緩沖器空滿標(biāo)志位為空,讀計數(shù)器清O,進(jìn)入讀端口空閑狀態(tài); 在空閑狀態(tài)若收到來自指令譯碼部件的讀請求信號有效,則啟動讀操作, 置讀端口忙信號有效,進(jìn)入讀地址譯碼狀態(tài);在讀地址譯碼狀態(tài)根據(jù)讀行 列模式選擇行讀向量數(shù)或列讀向量數(shù)作為讀向量數(shù),根據(jù)讀行列模式選擇 行讀起始地址或列讀起始地址作為讀向量地址,輸出到讀譯碼選擇器,讀 譯碼選擇器根據(jù)讀行列模式和讀向量地址完成行向量或列向量地址譯碼和
向量的選擇,并輸出選中的某一行向量或列向量。此時若緩沖器空滿標(biāo)志 位為空,則置數(shù)據(jù)緩沖器寫信號有效,進(jìn)入讀出狀態(tài);將讀譯碼選擇器的 輸出寫入讀出數(shù)據(jù)緩沖器,置讀數(shù)據(jù)有效信號有效,置緩沖器空滿標(biāo)志位 為滿,讀加法器對讀向量地址進(jìn)行加l操作,讀計數(shù)器加l;若檢測到向量 讀使能有效,則判斷讀計數(shù)器是否達(dá)到讀向量數(shù),若沒有,下一拍置緩沖 器空滿標(biāo)志位為空,回到讀地址譯碼狀態(tài);若達(dá)到讀向量數(shù),下一拍置讀端口忙信號為無效,置緩沖器空滿標(biāo)志位為空,讀計數(shù)器清o,返回讀端口 空閑狀態(tài),結(jié)東本次矩陣讀搡作。
圖5是矩陣寄存器文件寫訪問端口的寫入控制器中寫狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)
換圖,共有3個狀態(tài)寫端口空閑、寫地址譯碼和寫入狀態(tài)。其狀態(tài)轉(zhuǎn)換
過程是當(dāng)從指令譯碼部件收到系統(tǒng)復(fù)位信號有效時,置寫端口忙信號無
效,清寫計數(shù)器為0,進(jìn)入寫端口空閑狀態(tài);在寫端口空閑狀態(tài),若檢測到 來自指令譯碼部件的寫請求有效,啟動寫操作置寫端口忙信號有效,進(jìn) 入寫地址譯碼狀態(tài);在寫地址譯碼狀態(tài),接收來自指令譯碼部件的寫行列 模式、行寫起始地址、列寫起始地址、行寫向量數(shù),列寫向量數(shù),根據(jù)寫 行列模式選擇行寫向量數(shù)或列寫向量數(shù)作為寫向量數(shù),同時根據(jù)寫行列模 式選擇行寫起始地址或列寫起始地址作為寫向量地址,將寫向量地址發(fā)送 給寫地址譯碼器進(jìn)行寫地址譯碼,若檢測到寫數(shù)據(jù)有效信號有效,則向?qū)?地址譯碼器輸出數(shù)據(jù)寫使能信號有效,進(jìn)入寫入狀態(tài);將寫數(shù)據(jù)總線上的 數(shù)據(jù)寫入寫地址譯碼器輸出的行寫片選信號或列寫片選信號選中的行或列 向量寄存器中,同時寫加法器對寫向量地址加l,寫計數(shù)器加l,并判斷寫 計數(shù)器是否等于寫向量數(shù),若等于,下一拍回到寫地址譯碼狀態(tài),若不等 于,則下一拍置寫端口忙信號為無效,清寫計數(shù)器為0,回到寫端口空閑狀 態(tài),結(jié)東本次矩陣的寫訪問。
權(quán)利要求
1.一種支持矩陣整體讀寫操作的矩陣寄存器文件,它由矩陣寄存器文件存儲體、1個讀訪問端口和1個寫訪問端口組成;矩陣寄存器文件存儲體由N個行向量寄存器VR0~VRN-1或N個列向量寄存器CVR0~CVRN-1構(gòu)成,每個行向量寄存器VRi又由N個寄存器VRi[j]組成,每個列向量寄存器CVRm又由N個寄存器VRk[m]組成,每個寄存器有B位其中B為正整數(shù),i、j、m、k均為大于等于0小于等于N-1的整數(shù);矩陣寄存器文件存儲體的每個行向量寄存器和每個列向量寄存器既與讀訪問端口相連,又與寫訪問端口相連;其特征在于讀訪問端口由讀譯碼選擇器、讀出數(shù)據(jù)緩沖器和讀出控制器組成;讀譯碼選擇器與讀出數(shù)據(jù)緩沖器、讀出控制器和矩陣寄存器文件存儲體相連,讀譯碼選擇器從向量微處理器的指令譯碼部件接受讀行列模式信號,從讀出控制器接受讀向量地址,根據(jù)讀行列模式信號和讀向量地址進(jìn)行行或列向量地址譯碼并選擇存儲體中的某一行向量或列向量數(shù)據(jù)作為輸出送給讀出數(shù)據(jù)緩沖器;讀出數(shù)據(jù)緩沖器由1個緩沖器空滿標(biāo)志位和N個B位的寄存器構(gòu)成,既與讀譯碼選擇器的輸出相連,又與讀出控制器相連,當(dāng)系統(tǒng)復(fù)位有效時,讀出數(shù)據(jù)緩沖器置緩沖器空滿標(biāo)志位為空;當(dāng)接收到讀出控制器發(fā)來的數(shù)據(jù)緩沖器寫信號有效時,讀譯碼選擇器的輸出值被寫入讀出數(shù)據(jù)緩沖器,并輸出到讀出數(shù)據(jù)總線等待向量運(yùn)算陣列或存儲器讀取,同時置緩沖器空滿標(biāo)志位為滿;讀出控制器與讀譯碼選擇器和讀出數(shù)據(jù)緩沖器相連,由1個讀狀態(tài)機(jī)、1個讀計數(shù)器和1個讀加法器組成,它從向量微處理器的指令譯碼部件接受讀請求、讀行列模式、行讀起始地址、列讀起始地址、行讀向量數(shù)、列讀向量數(shù)和系統(tǒng)復(fù)位信號,從向量運(yùn)算陣列或存儲器接受向量讀使能信號,控制讀譯碼選擇器和讀出數(shù)據(jù)緩沖器的操作,讀狀態(tài)機(jī)和讀計數(shù)器控制矩陣的讀訪問過程,讀加法器負(fù)責(zé)改變讀訪問過程中讀譯碼選擇器的讀向量地址;寫訪問端口由寫地址譯碼器和寫入控制器組成,寫地址譯碼器既與矩陣寄存器文件存儲體內(nèi)所有行向量寄存器和所有列向量寄存器相連,又與寫入控制器相連,它從指令譯碼部件接受寫行列模式信號,從向量運(yùn)算陣列或存儲器接受寫數(shù)據(jù)和寫數(shù)據(jù)有效信號,根據(jù)寫行列模式和寫入控制器產(chǎn)生的寫向量地址完成地址譯碼,向矩陣寄存器文件存儲體輸出1個有效的行寫片選信號或1個有效的列寫片選信號,當(dāng)收到寫入控制器輸出的數(shù)據(jù)寫使能信號有效時,將寫數(shù)據(jù)總線上的數(shù)據(jù)寫入行寫片選信號或列寫片選信號選中的行向量或列向量寄存器中;寫入控制器與寫地址譯碼器相連,它由1個寫狀態(tài)機(jī)、一個寫計數(shù)器和1個寫加法器組成;寫入控制器從向量微處理器的指令譯碼部件接受寫請求、寫行列模式、行寫起始地址、列寫起始地址、行寫向量數(shù)、列寫向量數(shù)和系統(tǒng)復(fù)位信號,從向量運(yùn)算陣列或存儲器接受寫數(shù)據(jù)有效信號;寫狀態(tài)機(jī)和寫計數(shù)器控制矩陣的寫訪問過程,寫加法器在寫狀態(tài)機(jī)的控制下改變寫訪問過程中寫地址譯碼器的寫向量地址;向量微處理器的指令集增加矩陣乘法、矩陣加法、矩陣裝載、矩陣存儲四種矩陣指令。
2. 如權(quán)利要求l所述的支持矩陣整體讀寫操作的矩陣寄存器文件,其 特征在于所述讀狀態(tài)機(jī)由讀端口空閑、讀地址譯碼和讀出三個狀態(tài)組成,其 狀態(tài)轉(zhuǎn)換過程是當(dāng)從指令譯碼部件收到系統(tǒng)復(fù)位信號有效時,讀狀態(tài)機(jī)置 讀端口忙信號無效,置緩沖器空滿標(biāo)志位為空,讀計數(shù)器清O,進(jìn)入讀端口空閑狀態(tài);在空閑狀態(tài)若收到來自指令譯碼部件的讀請求信號有效,則啟動 讀操作,置讀端口忙信號有效,進(jìn)入讀地址譯碼狀態(tài);在讀地址譯碼狀態(tài)根 據(jù)讀行列模式選擇行讀向量數(shù)或列讀向量數(shù)作為讀向量數(shù),根據(jù)讀行列模式 選擇行讀起始地址或列讀起始地址作為讀向量地址,輸出到讀譯碼選擇器, 讀譯碼選擇器根據(jù)讀行列模式和讀向量地址完成行向量或列向量地址譯碼 和向量的選擇,并輸出選中的某一行向量或列向量,此時若緩沖器空滿標(biāo)志 位為空,則置數(shù)據(jù)緩沖器寫信號有效,進(jìn)入讀出狀態(tài);將讀譯碼選擇器的輸 出寫入讀出數(shù)據(jù)緩沖器,置讀數(shù)據(jù)有效信號有效,置緩沖器空滿標(biāo)志位為滿, 讀加法器對讀向量地址進(jìn)行加l搡作,讀計數(shù)器加l;若檢測到向量讀使能 有效,則判斷讀計數(shù)器是否達(dá)到讀向量數(shù),若沒有,下一拍置緩沖器空滿標(biāo) 志位為空,回到讀地址譯碼狀態(tài);若達(dá)到讀向量數(shù),下一拍置讀端口忙信號 為無效,置緩沖器空滿標(biāo)志位為空,讀計數(shù)器清0,返回讀端口空閑狀態(tài), 結(jié)東本次矩陣讀操作;
3. 如權(quán)利要求l所述的支持矩陣整體讀寫操作的矩陣寄存器文件,其 特征在于所述寫狀態(tài)機(jī)由寫端口空閑、寫地址譯碼和寫入三個狀態(tài)組成,其 狀態(tài)轉(zhuǎn)換過程是當(dāng)從指令譯碼部件收到系統(tǒng)復(fù)位信號有效時,置寫端口忙 信號無效,清寫計數(shù)器為0,進(jìn)入寫端口空閑狀態(tài);在寫端口空閑狀態(tài),若 檢測到來自指令譯碼部件的寫請求有效,啟動寫操作置寫端口忙信號有效,進(jìn)入寫地址譯碼狀態(tài);在寫地址譯碼狀態(tài),接收來自指令譯碼部件的寫行列 模式、行寫起始地址、列寫起始地址、行寫向量數(shù),列寫向量數(shù),根據(jù)寫行 列模式選擇行寫向量數(shù)或列寫向量數(shù)作為寫向量數(shù),同時根據(jù)寫行列模式選 擇行寫起始地址或列寫起始地址作為寫向量地址,將寫向量地址發(fā)送給寫地 址譯碼器進(jìn)行寫地址譯碼,若檢測到寫數(shù)據(jù)有效信號有效,則向?qū)懙刂纷g碼器輸出數(shù)據(jù)寫使能信號有效,進(jìn)入寫入狀態(tài);在寫入狀態(tài),將寫數(shù)據(jù)總線上的數(shù)據(jù)寫入寫地址譯碼器輸出的行寫片選信號或列寫片選信號選中的行或 列向量寄存器中,同時寫加法器對寫向量地址加l,寫計數(shù)器加l,并判斷 寫計數(shù)器是否等于寫向量數(shù),若等于,下一拍回到寫地址譯碼狀態(tài),若不等于,則下一拍置寫端口忙信號為無效,清寫計數(shù)器為o,回到寫端口空閑狀態(tài),結(jié)束本次矩陣的寫訪問。
4. 如權(quán)利要求l所述的支持矩陣整體讀寫操作的矩陣寄存器文件,其特征在于所述矩陣乘法指令為MRMUL MARl[J,H,Va礎(chǔ),CVcrddl],MAR2[H,K,Vodd2,CVadd2],MAR3[J,H,Vadd3,CVadd3〗意思是將矩陣寄存器文件MAR1中行讀起始地址為Vaddl、列讀起始地址為CVaddl、 行讀向量數(shù)為J、列讀向量數(shù)為H的矩陣與矩陣寄存器文件MAR2中行讀起始 地址為Vadd2、列讀起始地址為CVadd2、行讀向量數(shù)為H、列讀向量數(shù)為K 的矩陣相乘,結(jié)果矩陣存入行讀起始地址為Vadd3、列讀起始地址為CVadd3 的矩陣寄存器文件MAR3中,矩陣數(shù)據(jù)為J行、H列。
5. 如權(quán)利要求1所述的支持矩陣整體讀寫操作的矩陣寄存器文件,其特征在于所述矩陣加法指令為MRADD MAR1[J, H, Vaddl, CVaddl〗,MAR2[J, H, Vadd2, CVadd2], MAR3[J, H, Vadd3, CVadd3]意思是將矩陣寄存器文件MAR1中行讀起始地址為Vaddl、列讀起始地址為CVaddl、行讀向量數(shù)為J、列讀向量數(shù)為H的矩陣與矩陣寄存器文件MAR2 中行讀起始地址為Vadd2、列讀起始地址CVadd2、行讀向量數(shù)為J、列讀向 量數(shù)為H的矩陣相加,結(jié)果存入起始行地址為Vadd3、列起始地址為CVadd3 的矩陣寄存器文件MAR3中,矩陣數(shù)據(jù)仍為J行、H列。
6. 如權(quán)利要求1所述的支持矩陣整體讀寫操作的矩陣寄存器文件,其 特征在于所述矩陣裝載指令有兩條第一條為L,R MARn [J, H, Vaddl, CVaddl] , AR , n為正整數(shù),意思是 將AR寄存器給出的起始地址開始對應(yīng)的J個行向量數(shù)據(jù)一每個行向量有H 個有效數(shù)據(jù),按行寫操作模式載入行起始地址為Vaddl、列起始地址為CVaddl 的第n個矩陣寄存器文件MARn中;第二條為LDCMR MARn [J, H, Vaddl, CVaddl] , AR,意思是將AR寄存器給 出的起始地址開始對應(yīng)的H個列向量數(shù)據(jù)一每個列向量有J個有效數(shù)據(jù),按 列載入列起始地址為CVaddl、行起始地址為Vaddl的第n個矩陣寄存器文件 MARn中。
7. 如權(quán)利要求1所述的支持矩陣整體讀寫操作的矩陣寄存器文件,其 特征在于所述矩陣存儲指令有兩條第一條為STVMR MARn [J, H, Vaddl, CVaddl] , Rd,意思是將矩陣寄存器文 件MARn中行起始地址為Vaddl 、列起始地址為CVaddl的J個行向量數(shù)據(jù)一 每個行向量有H個有效數(shù)據(jù),按行寫操作模式寫入由Rd寄存器給出的起始 地址對應(yīng)的存儲器中;第二條為STCMRMARn [J, H, Vaddl, CVaddl] , Rd,意思是將矩陣寄存器文 件MARn中列起始地址為CVaddl 、行起始地址為Vaddl 、 H個列向量數(shù)據(jù)一每個列向量有J個有效數(shù)據(jù),按列寫操作模式寫入由Rd寄存器給出的起始地址對應(yīng)的存儲器中。
全文摘要
本發(fā)明公開了一種支持矩陣整體讀寫操作的矩陣寄存器文件,要解決的技術(shù)問題是提供一種支持整體矩陣的所有行或列數(shù)據(jù)的一次性讀操作和整體矩陣的所有行或列數(shù)據(jù)的一次性寫操作的矩陣寄存器文件。技術(shù)方案是它由矩陣寄存器文件存儲體、1個讀訪問端口和1個寫訪問端口組成;讀訪問端口由讀行列地址譯碼器、讀出數(shù)據(jù)緩沖器和讀出控制器組成,讀出控制器由1個讀狀態(tài)機(jī)、1個讀計數(shù)器和1個讀加法器組成;寫訪問端口由寫地址譯碼器和寫入控制器組成,寫入控制器由1個寫狀態(tài)機(jī)、一個寫計數(shù)器和1個寫加法器組成。使用本發(fā)明時,采用單條矩陣指令就能實(shí)現(xiàn)整體的矩陣運(yùn)算,從而提高了代碼密度,降低了存儲器開銷和系統(tǒng)功耗。
文檔編號G06F9/30GK101620524SQ20091004382
公開日2010年1月6日 申請日期2009年7月3日 優(yōu)先權(quán)日2009年7月3日
發(fā)明者萬江華, 劉衡竹, 孫永節(jié), 彭元喜, 陳書明, 陳吉華, 陳海燕, 陳躍躍 申請人:中國人民解放軍國防科學(xué)技術(shù)大學(xué)