專利名稱:一種二維尋址方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其設(shè)計一種二維尋址方法及裝置。
背景技術(shù):
在現(xiàn)有的數(shù)據(jù)處理過程種,處理器的處理對象很大部分是二維的矩陣數(shù)
組,由于數(shù)據(jù)存儲器是一維線性結(jié)構(gòu),所以要將X(m, n)(m對應(yīng)行坐標(biāo),n對 應(yīng)列坐標(biāo))的下標(biāo)(m, n)變換為數(shù)據(jù)存儲器對應(yīng)的一維線性地址。
傳統(tǒng)的DSP (Digital Signal Processor,數(shù)字信號處理器)只有一維線性地 址尋址,其放在數(shù)據(jù)存儲器中的方式為
A0, Al, A2, A3, A4, ......An-2, An-1, An,
DSP中地址寄存器R和數(shù)據(jù)存儲器中元素的對應(yīng)關(guān)系為AR:即R寄存器的 內(nèi)容對應(yīng)此元素在存儲器中的地址;改變地址寄存器R的內(nèi)容就可以尋找特定 的元素;對于矩陣的一個特定元素AR。, R1,它應(yīng)該由兩個下標(biāo)RO, Rl分別對 應(yīng)此元素在矩陣中的行地址和列地址。
例如,如圖l所示,左邊的是三角矩陣,右邊是矩形矩陣,當(dāng)其放入存儲 器后其排列格式如下
三角矩陣A0, o, Ab o, " A2, o, A2, P A2. 2, ...A6, 3, ...A7, 0, A7, P A7,2, ...A7,7
矩形矩陣A0, o, A0,,...A0, 10, o,人!, " ...A!, 10, ...A6, 0, ...A6, 3,...八6,
io, A7, 0 A7, p h.A , io
因此很容易推出矩陣二維地址和其存放的線性地址之間的二維關(guān)系 三角矩陣線性地址=基址+行地址*(行地址+l)/2+列地址 矩形矩陣線性地址=基址+行地址*列維數(shù)+列地址
對于一維尋址的DSP,如果給定三角矩陣的行地址和列地址,其要轉(zhuǎn)化成數(shù)據(jù)存儲器所需的線性地址,至少要經(jīng)過下面的5個步驟 步驟l:行地址+ 1 步驟2:行地址* (行地址+ 1) 步驟3:行地址* (行地址+ I)/2 步驟4:行地址*(行地址+1)/2+列地址 步驟5:基址+行地址*(行地址+1)/2+列地址 而對于矩形矩陣需要3個步驟 步驟l:行地址*列維數(shù) 步驟2:行地址*列維數(shù)+列地址 步驟3:基址+行地址*列維數(shù)+列地址每完成一個矩陣元素的存取,三角矩陣的5個步驟需要5條指令,矩形矩 陣的3個步驟需要3條指令。綜上所述,現(xiàn)在所有處理器的尋址方式都是基于memory (寄存器)是線 性地址的一維寄存器間接尋址,這種尋址方式盡管有了很多演進(jìn),但是核心 都是基于一個寄存器產(chǎn)生地址或者是一個偏移寄存器加上基址寄存器產(chǎn)生地 址,如果要對一個矩陣操作就必須使用指令將二維地址變成線性地址;這樣 會造成指令執(zhí)行時間的加長和代碼長度的增加,即在進(jìn)行矩陣操作時,會造 成效率的下降。發(fā)明內(nèi)容有鑒于此,本發(fā)明解決的問題是提出一種二維尋址方法及裝置,用以在 進(jìn)^f亍矩陣尋址時減少了將二維地址轉(zhuǎn)換成線性地址所需的諸多指令,同時也 減少執(zhí)行時間和指令的長度
為解決上述問題,本發(fā)明提供的技術(shù)方案如下 一種二維尋址方法,該方法包:fe:將元素在矩陣的行地址、列地址、基址和列維數(shù)送入相應(yīng)的寄存器中;利用二維取址指令將元素在矩陣中的行列位置轉(zhuǎn)化為該元素在數(shù)據(jù)存儲 器中存放的一維線性地址。相應(yīng)的,該方法進(jìn)一步包括當(dāng)矩陣為三角矩陣時,所述二維指令為取行地址及其加1后乘積的一半, 再和列地址和基址相與。相應(yīng)的,該方法進(jìn)一步包括當(dāng)矩陣為矩形矩陣時,所述二維指令為將行地址與列維數(shù)相乘再和列地 址和基址相與。相應(yīng)的,該方法進(jìn)一步包括將該元素的行、列位置分別加上下一個元素和本元素之間的偏移值得到 下一個元素的行、列位置。一種二維尋址裝置,該裝置包括地址寄存器和二維算術(shù)單元;所述地址寄存器用于存儲元素在矩陣中的行地址、列地址、基址和列維 數(shù),并將存儲的值送入二維算術(shù)單元;所述二維算術(shù)單元用于利用二維取址指令將元素在矩陣中的行列位置轉(zhuǎn) 化為該元素在數(shù)據(jù)存儲器中存放的 一維線性地址。相應(yīng)的,所述二維算術(shù)單元進(jìn)一步包括第一加法器、第二加法器和乘 法器;所述第一加法器用于對列地址和基址進(jìn)行與運算,并將結(jié)果送入第二加 法器;所述乘法器用于當(dāng)矩陣為三角矩陣時,對行地址及行地址加1的一半進(jìn) 行乘法運算;當(dāng)矩陣為矩形矩陣時,對行地址和列維數(shù)進(jìn)行乘法運算;并將 運算后的結(jié)果送入第二加法器;所述第二加法器用于對第一加法器和乘法器送來的結(jié)果進(jìn)行與運算。相應(yīng)的,所述地址寄存器進(jìn)一步包括將該元素的行、列位置分別加上下一個元素和本元素之間的偏移值得到 下一個元素的行、列位置的行、列地址寄存器。相應(yīng)的,所述地址寄存器為一維地址寄存器和/或二維地址寄存器。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點通過二維算術(shù)單元中的加法器 和乘法器的運算及二維取址指令,只要指定了元素的行列地址,就可存取數(shù) 據(jù)存儲器中對應(yīng)的元素,而不需使用額外的指令周期將二維地址變?yōu)橐痪S線 性地址后才能對數(shù)據(jù)存儲器中的元素進(jìn)行操作,因而,在進(jìn)行矩陣尋址時減 少了將二維地址轉(zhuǎn)換成線性地址所需的諸多指令,同時也減少執(zhí)行時間和指 令的長度。
圖l是現(xiàn)有技術(shù)中元素矩陣示意圖;圖2是本發(fā)明實施例1的方法流程示意圖;圖3是本發(fā)明裝置的示意框圖;圖4是本發(fā)明實施例2的裝置框圖;圖5是本發(fā)明實施例2中的二維算術(shù)單元示意圖。
具體實施方式
本發(fā)明的基本思想在于采用專用(或共享)寄存器(行地址寄存器、列
地址寄存器、基址寄存器和列維數(shù)寄存器),通過二維取址指令、根據(jù)元素在 矩陣中的行、列索引生成該元素在存儲器中對應(yīng)的一維線性地址,實現(xiàn)二維 尋址。為此,本發(fā)明提出一種二維尋址方法及裝置,在進(jìn)行矩陣尋址時減少了 將二維地址轉(zhuǎn)換成線性地址所需的指令,因而減少了執(zhí)行時間并減少了指令 的長度。為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明的技術(shù)方案,下面結(jié)合附圖和具體實施例對本發(fā)明作進(jìn)一步的詳細(xì)說明。如圖2所示,本發(fā)明方法包括 步驟201:將元素在矩陣的行地址、列地址、基址和列維數(shù)送入相應(yīng)的寄 存器中;步驟202:利用二維取址指令將元素在矩陣中的行列位置轉(zhuǎn)化為該元素在 數(shù)據(jù)存儲器中存放的 一維線性地址;具體的,本領(lǐng)域技術(shù)人員很容易知道,當(dāng)要從數(shù)據(jù)存儲器中取三角矩陣 的元素時,例如A6,3,現(xiàn)有的方按計算如下步驟l:行地址6送入地址寄存器R0步驟2:列地址3送入地址寄存器R1步驟3:三角矩陣基地址1000送入地址寄存器R2步驟4: R0+1送寄存器R3 (行地址加1送R3)步驟5: R3 * R0送寄存器R3 (行地址加1乘以行地址結(jié)果存入R3)步驟6: R3除2后再送寄存器R3步驟7: R3+R1后再送寄存器R3 (行地址* (行地址+ 1) /2 +列地址) 步驟8: R3+R2后再送寄存器R3 (基址+行地址*(行地址+1)/2+列地址) 步驟9:從R3指定的地址取A6,3到數(shù)據(jù)寄存器 當(dāng)要從數(shù)據(jù)存儲器中取矩形矩陣的元素A6,3時,現(xiàn)有的方按計算如下
步驟l:行地址6送入地址寄存器RO步驟2:列地址3送入地址寄存器R1步驟3:矩形矩陣基地址1000送入地址寄存器R2步驟4:列維數(shù)11送地址寄存器R3步驟5: R0 * R3送寄存器R3 (行地址加乘以列維數(shù)結(jié)果存入R3) 步驟6: R3+R1后再送寄存器R3 (行地址*列維數(shù)+列地址) 步驟7: R3+R2后再送寄存器R3(基址+行地址*列維數(shù)+列地址) 步驟8:從R3指定的地址取A6,3到數(shù)據(jù)寄存器對于三角矩陣來說,步驟4到8都是用于將二維地址轉(zhuǎn)化為一維地址的 計算;而對于矩形矩陣來說,步驟4到6都是用于將二維地址轉(zhuǎn)化為一維地 址的計算。而在本發(fā)明實施例中,將元素在矩陣中的行地址、列地址、基址及列維 數(shù)送到相應(yīng)的行地址寄存器、列地址寄存器、基址寄存器及列維數(shù)寄存器, 然后通過二維尋址指令產(chǎn)生一維線性地址;其中,行地址寄存器加上行地址遞 增值后再寫入行地址寄存器;列地址寄存器加上列地址遞增值后再寫入列地 址寄存器;這樣即可通過二維尋址指令完成將元素在矩陣中的行列位置轉(zhuǎn)化 位此元素在數(shù)據(jù)存儲器存放的一維線性地址;將此元素的行/列位置加上下一 個元素和本元素之間的行/列偏移值得到下一個元素在矩陣中的行/列位置。具體的,本實施例中,RO相當(dāng)于矩陣行地址寄存器,Rl相當(dāng)于矩陣列地 址寄存器,R2相當(dāng)于矩陣基址寄存器,R3相當(dāng)于矩陣列維數(shù)寄存器;對于三 角矩陣/矩形矩陣RO設(shè)置行號、Rl設(shè)置列號,通過二維尋址指令就可以算出 此元素在數(shù)據(jù)存儲器中對應(yīng)的一維線性地址(2D一ADDR);以一個常用的二 維取址指令(LDRM [(R0)+#1, (Rl)+#2], Dn)為例,指令的功能是將RO指定 的行號,Rl指定的列號對應(yīng)的元素從外部數(shù)據(jù)存儲器中讀入寄存器Dn;并且
其行號加l,列號加2;在執(zhí)行這條指令時,將行列地址轉(zhuǎn)化為一維的線性地址。具體的二維取址指令為三角矩陣2D—ADDR = R0*(R0+l)/2+Rl+R2矩形矩陣2D—ADDR = R0*R3+R1+R2例如,利用二維取址指令從數(shù)據(jù)存儲器中取三角矩陣的元素A6.3時,具 體步驟如下步驟1:行地址6送入地址寄存器RO步驟2:列地址3送入地址寄存器R1步驟3:三角矩陣基地址1000送入地址寄存器R2步驟4:用三角矩陣二維取址指令取A6,3到數(shù)據(jù)寄存器同理,利用二維取址指令從數(shù)據(jù)存儲器中取矩形矩陣的元素A6.3時,具 體步驟如下步驟1:行地址6送入地址寄存器RO步驟2:列地址3送入地址寄存器R1步驟3:矩形矩陣基地址1000送入地址寄存器R2步驟4:列維數(shù)11送地址寄存器R3步驟5:用矩形矩陣二維取址指令取A6,3到數(shù)據(jù)寄存器是可以通過程序來指令相關(guān)的硬件來完成的,所述的程序可以存儲于計算機(jī) 可讀取存取介質(zhì)中,在此不再贅述??梢钥闯?,采用本發(fā)明的方法,增加了上述指令以后,只要指定了元素 的行列地址,就可存取數(shù)據(jù)存儲器中對應(yīng)的元素,而不需使用額外的指令周 期將二維地址變?yōu)橐痪S線性地址后才能對數(shù)據(jù)存儲器中的元素進(jìn)行操作,因而DSP的執(zhí)行效率大大高于傳統(tǒng)的一維尋址方式。 基于上述思想,本發(fā)明還提供一種二維尋址裝置,如圖3所示,該裝置包括地址寄存器301和二維算術(shù)單元302;所述地址寄存器301用于存儲元素在矩陣中的行地址、列地址、基址和 列維數(shù),并將存儲的值送入二維算術(shù)單元302;所述二維算術(shù)單元302用于利用二維取址指令將元素在矩陣中的行列位 置轉(zhuǎn)化為該元素在數(shù)據(jù)存儲器中存放的 一維線性地址。其中,行地址寄存器、列地址寄存器、基址寄存器及列維數(shù)寄存器送到 二維算術(shù)單元產(chǎn)生一維線性地址;如此,通過二維尋址指令將元素在矩陣中 的行列位置轉(zhuǎn)化位此元素在數(shù)據(jù)存儲器存放的一維線性地址;此外,本發(fā)明裝置還可包括地址算術(shù)單元,具體的,本發(fā)明實施例2如 圖4所示;圖4是本發(fā)明的二維尋址裝置示意圖,由于在本實施例中處理器包含有 兩條數(shù)據(jù)總線,所以本實施例包含兩個一樣的數(shù)據(jù)總線二維尋址裝置 XA—AGU和XB—AGU。因兩個地址產(chǎn)生單元相同,故本文只描述XA—AGU 即可;其中,二維尋址裝置主要由3個部分構(gòu)成8個地址寄存器R0-R7:用來存儲元素在矩陣中的行地址、列地址、基址 和列維數(shù)等值,并將存儲的值送入二維算術(shù)單元;其中,每個寄存器的長度 為16bit;每個寄存器中的值都可以通過地址算術(shù)單元(圖中的address arithmeticunit)輸出到數(shù)據(jù)總線中的地址信號線(圖中的XA—ADDR)上;此方法 和現(xiàn)有技術(shù)中的方法一致,在此不再贅述;同時R0-R3還可以作為二維尋址 的寄存器,即R0-R3連接到二維算術(shù)單元(圖中的2D arithmetic unit)上,通過 它實現(xiàn)將二維地址轉(zhuǎn)變?yōu)橐痪S地址并輸出到數(shù)據(jù)總線中的地址信號線(圖中的 XA—ADDR)上;在本實施例中,R0-R3寄存器不但可以作為傳統(tǒng)的一維地址 寄存器,而且還可以作為二維地址寄存器(RO被作為矩陣行地址寄存器,用來 存儲行地址;Rl被作為矩陣列地址寄存器,用來存儲列地址;R2被作為矩陣
基址寄存器,用來存儲基址;R3被作為矩陣列維數(shù)寄存器,用來存儲列維數(shù));地址算術(shù)單元R0-R7中的任一寄存器都可以通過源多選一開關(guān)(圖中的SRC1/2—MUX)將其存儲的值送到地址算術(shù)單元,用以實現(xiàn)寄存器和立即數(shù)(immediate data)的加法運算、寄存器和寄存器之間的加/減法運算、寄存器的 邏輯操作運算、寄存器的移位操作運算等;運算的結(jié)果通過目的多選一開關(guān)(圖中的R DEST—MUX)再送回R0-R7中的任意一個或兩個寄存器;在本實施例 中,該地址算術(shù)單元可以實現(xiàn)兩個寄存器和立即數(shù)的加法運算并且將計算結(jié) 果回寫到這兩個寄存器中,用公式表示就是RO+存delta0 —R0; Rl+#deltal — Rl; 而現(xiàn)有技術(shù)中傳統(tǒng)的處理器只能實現(xiàn)一個寄存器和立即數(shù)的加法運算并且將計算結(jié)果回寫到這一個寄存器;二維算術(shù)單元(2D Arithmetic Unit): 2D Arithmetic Unit利用寄存器R0-R3 產(chǎn)生二維地址;在本實施例中,R(H皮作為矩陣行地址寄存器,Rl被作為矩陣 列地址寄存器,R2被作為矩陣基址寄存器,R3被作為矩陣列維數(shù)寄存器;一 個矩陣的元素可以用Crq,w表示;類似于一維指令[(R)+弁delta]可以實現(xiàn)寄存器 間接尋址和寄存器增減,二維指令[(RO)+弁delta, (Rl)+弁delta]也可以通過2D Arithmetic Unit將RO中的行地址,Rl中的列地址,R2中的基址及R3中的列 維數(shù)變換成數(shù)據(jù)存儲器的一維地址;同時Address Arithmetic Unit實現(xiàn) RO+#delta —RO和Rl+弁delta—Rl的計算;其中,二維算術(shù)單元還可包括第一加法器、第二加法器和乘法器;所述第一加法器用于對列地址和基址進(jìn)行與運算,并將結(jié)果送入第二加 法器;所述乘法器用于當(dāng)矩陣為三角矩陣時,對行地址及^f亍地址加1的一半 進(jìn)行乘法運算;當(dāng)矩陣為矩形矩陣時,對行地址和列維數(shù)進(jìn)行乘法運算;并 將運算后的結(jié)果送入第二加法器;所述第二加法器用于對第一加法器和乘法 器送來的結(jié)果進(jìn)行與運算;具體的,如圖5所示,RO相當(dāng)于矩陣行地址寄存器,Rl相當(dāng)于矩陣列地 址寄存器,R2相當(dāng)于矩陣基址寄存器,R3相當(dāng)于矩陣列維數(shù)寄存器;對于三 角矩陣/矩形矩陣R0設(shè)置行號Rl設(shè)置列號,二維算術(shù)單元(圖中2D arithmetic unit)利用加法器和乘法器對行地址、列地址、基址和列維數(shù)進(jìn)行運算,就可以 算出此元素在數(shù)據(jù)存儲器中對應(yīng)的一維線性地址(2D一ADDR);圖中的兩個 MUX用于選擇三角矩陣或者是矩形矩陣;具體的,當(dāng)矩陣為三角矩陣時,利用加法器和乘法器進(jìn)行運算的二維尋 址指令為2D—ADDR = R0*(R0+l)/2+Rl+R2;當(dāng)矩陣為矩形矩陣時,利用加法器和乘法器進(jìn)行運算的二維尋址指令為 2D—ADDR(矩形矩陣)=R0*R3+R1+R2;此外,在本實施例2中,當(dāng)行地址寄存器加上行地址遞增值后再寫入行 地址寄存器;列地址寄存器加上列地址遞增值后再寫入列地址寄存器;如此, 可將此元素的行/列位置加上下一個元素和本元素之間的行/列偏移值得到下 一個元素在矩陣中的行/列位置,再將下一個元素在矩陣中的位置值(行、歹'J、 基址及矩陣列維數(shù))送入二維算術(shù)單元,通過二維尋址指令完成二維地址到 一維線性地址的轉(zhuǎn)換??梢钥闯觯黾恿硕S算術(shù)單元以后,只要指定了元素的行列地址,就 可存取數(shù)據(jù)存儲器中對應(yīng)的元素,而不需使用額外的指令周期將二維地址變 為一維線性地址后才能對數(shù)據(jù)存儲器中的元素進(jìn)行操作,因而,在進(jìn)行矩陣 尋址時減少了將二維地址轉(zhuǎn)換成線性地址所需的諸多指令,同時也減少執(zhí)行 時間和指令的長度。
權(quán)利要求
1、一種二維尋址方法,其特征在于,該方法包括將元素在矩陣的行地址、列地址、基址和列維數(shù)送入相應(yīng)的寄存器中;利用二維取址指令將元素在矩陣中的行列位置轉(zhuǎn)化為該元素在數(shù)據(jù)存儲器中存放的一維線性地址。
2、 根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法進(jìn)一步包括 當(dāng)矩陣為三角矩陣時,所述二維指令為取行地址及其加1后乘積的一半,再和列地址和基址相與。
3、 根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法進(jìn)一步包括當(dāng)矩陣為矩形矩陣時,所述二維指令為將行地址與列維數(shù)相乘再和列地 址和基址相與。
4、 根據(jù)權(quán)利要求1至3任意一項所述的方法,其特征在于,該方法進(jìn)一 步包括將該元素的行、列位置分別加上下一個元素和本元素之間的偏移值得到 下一個元素的行、列位置。
5、 一種二維尋址裝置,其特征在于,該裝置包括地址寄存器和二維算 術(shù)單元;所述地址寄存器用于存儲元素在矩陣中的行地址、列地址、基址和列維 數(shù),并將存儲的值送入二維算術(shù)單元;所述二維算術(shù)單元用于利用二維取址指令將元素在矩陣中的行列位置轉(zhuǎn) 化為該元素在數(shù)據(jù)存儲器中存放的一維線性地址。
6、 根據(jù)權(quán)利要求5所述的裝置,其特征在于,所述二維算術(shù)單元進(jìn)一步 包括第一加法器、第二加法器和乘法器;所述第一加法器用于對列地址和基址進(jìn)行與運算,并將結(jié)果送入第二加 法器;所述乘法器用于當(dāng)矩陣為三角矩陣時,對行地址及行地址加1的一半進(jìn)行乘法運算;當(dāng)矩陣為矩形矩陣時,對行地址和列維數(shù)進(jìn)行乘法運算;并將 運算后的結(jié)果送入第二加法器;所述第二加法器用于對第一加法器和乘法器送來的結(jié)果進(jìn)行與運算。
7、 根據(jù)權(quán)利要求5或6所述的裝置,其特征在于,所述地址寄存器進(jìn)一 步包括將該元素的行、列位置分別加上下一個元素和本元素之間的偏移值得到 下一個元素的行、列位置的行、列地址寄存器。
8、 根據(jù)權(quán)利要求7所述的裝置,其特征在于 所述地址寄存器為一維地址寄存器和/或二維地址寄存器。
全文摘要
本發(fā)明提供一種二維尋址方法,該方法包括將元素在矩陣的行地址、列地址、基址和列維數(shù)送入相應(yīng)的寄存器中;利用二維取址指令將元素在矩陣中的行列位置轉(zhuǎn)化為該元素在數(shù)據(jù)存儲器中存放的一維線性地址。本發(fā)明還提供一種二維尋址裝置。采用本發(fā)明的方法和裝置,通過二維算術(shù)單元中的加法器和乘法器的運算及二維取址指令,只要指定了元素的行列地址,就可存取數(shù)據(jù)存儲器中對應(yīng)的元素,而不需使用額外的指令周期將二維地址變?yōu)橐痪S線性地址后才能對數(shù)據(jù)存儲器中的元素進(jìn)行操作,因而,在進(jìn)行矩陣尋址時減少了將二維地址轉(zhuǎn)換成線性地址所需的諸多指令,同時也減少執(zhí)行時間和指令的長度。
文檔編號G06F12/02GK101398784SQ20071012253
公開日2009年4月1日 申請日期2007年9月26日 優(yōu)先權(quán)日2007年9月26日
發(fā)明者徐英韜, 謙 李 申請人:大唐移動通信設(shè)備有限公司