專利名稱:一種矩陣數(shù)據(jù)存取方法及其矩陣數(shù)據(jù)存儲裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種矩陣數(shù)據(jù)存取方法及其矩陣數(shù)據(jù)存儲裝置。
背景技術(shù):
矢量處理器廣泛地被應(yīng)用在多媒體處理和科學(xué)計算等領(lǐng)域,它操作的數(shù)據(jù)對象多為維數(shù)不同、數(shù)據(jù)類型各異的矩陣數(shù)據(jù),所以,實現(xiàn)高效的矩陣數(shù)據(jù)存取是十分重要。
如中國發(fā)明專利95103825.7,專利名稱為應(yīng)用線性變換進行圖像處理地并行存儲裝置,公開了一種使用線性變換進行圖像處理地并行存儲裝置,包括多個地址計算單元、多個存儲單元以及奧米伽網(wǎng)絡(luò)和移位電路單元,所述地址計算單元適于根據(jù)存取方式、參考坐標和相應(yīng)的存儲模塊的存儲模塊數(shù)來產(chǎn)生每個相應(yīng)于存儲模塊中的一個模塊的地址;所述的存儲單元適于接收每個相應(yīng)的地址計算單元和讀/寫信號所產(chǎn)生的地址,并且執(zhí)行實際數(shù)據(jù)的存儲、輸入、輸出;所述的奧米伽網(wǎng)絡(luò)適于接收來自與其相應(yīng)的存儲單元的數(shù)據(jù),對該數(shù)據(jù)產(chǎn)生合適的通路使其產(chǎn)生與一處理器所需邏輯順序一致的存儲模塊的實際處理順序,并通過該產(chǎn)生的通路輸出數(shù)據(jù),所述的移位電路單元適于根據(jù)該存取方式所指示的輸入在每個奧米伽網(wǎng)絡(luò)和數(shù)據(jù)終端之間產(chǎn)生合適的通路。這種裝置是通過在多個存儲模塊內(nèi)適當(dāng)?shù)姆峙洳⑿写嫒〉臄?shù)據(jù)而獲得了高的并行性能。這一類方案實際上就是通過存儲模塊之間地址空間的冗余作為代價實現(xiàn)并行,對于某一個可存取的諸如水平線、垂直線或方框之類的一定幾何形狀的圖形點子集,實際上在每一個存儲模塊中都要在有一個與之相應(yīng)的存儲地址空間,存儲效率較低,并且存在著無法在一任意的位置上以水平線、垂直線、二維方框方式來存取。雖然這種裝置通過將存儲模塊數(shù)增加到可同時存取圖像點數(shù)目的兩倍來克服這一缺陷,然而其代價是再一次增加了存儲模塊的冗余度,降低了存儲效率。
如中國發(fā)明專利01139343.2,專利名稱是使用存儲器的方法、兩維數(shù)據(jù)存取存儲器以及操作處理設(shè)備,公開了一種使用存儲器的方法,該方法包括下列步驟包含有預(yù)定的兩維存儲空間,它由預(yù)定的按照兩維方式形成的并沿縱向和橫向方向排列的虛擬最小兩維存儲器空間構(gòu)成,將所述虛擬最小兩維存儲器空間的各個地址預(yù)先分配給多個物理存儲器中按照與所述虛擬最小兩維存儲器的大小相關(guān)的方式確定的每一個存儲器內(nèi)的預(yù)定地址;在讀取所述兩維存儲器空間中的數(shù)據(jù)時,指定所述虛擬最小兩維存儲器中的讀取地址以及,參照指定的讀取地址指定預(yù)定的讀取方向,從而,根據(jù)指定的地址和指定的方式從多個物理存儲器的每個存儲器中的相應(yīng)的地址中讀取所述虛擬最小兩維存儲器中的數(shù)據(jù),在讀取數(shù)據(jù)時,還指定數(shù)據(jù)的讀取存取模式,如數(shù)據(jù)跨越了參照數(shù)據(jù)現(xiàn)有范圍的邊緣,則通過將不包含在參照數(shù)據(jù)的現(xiàn)有范圍內(nèi)的數(shù)據(jù)讀取地址修改成位于參照數(shù)據(jù)現(xiàn)有范圍的邊緣處的預(yù)定數(shù)據(jù)的地址而讀取數(shù)據(jù)。該方法將整個兩維存儲空間劃分成一系列的N×N的兩維最小存儲空間,且N相對較小,一方面不滿足實際應(yīng)用中所需存儲空間大小不定的要求,必然造成存儲的不方便和存儲空間的冗余;另外地址計算方法限制在兩維最小存儲空間中,采用一維地址計算方法,編程人員需要將兩維坐標偏移換算為一維正偏移,實際應(yīng)用中,用戶所見的一般為兩維坐標偏移,且可為正負偏移,所以增加了計算成本,也不方便靈活使用。
發(fā)明內(nèi)容為了克服已有技術(shù)的數(shù)據(jù)存儲方法存儲效率不高、不能滿足多種數(shù)據(jù)類型存取的要求的不足,本發(fā)明提供一種存儲效率高、能滿足不同類型數(shù)據(jù)存取的要求的矩陣數(shù)據(jù)存取方法及其矩陣數(shù)據(jù)存儲裝置。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是一種矩陣數(shù)據(jù)存取方法,該方法包括下列步驟包含有預(yù)定的高維矩陣數(shù)據(jù)存儲空間,它經(jīng)過多級的降維處理最終可以轉(zhuǎn)化為多個二維矩陣數(shù)據(jù)存儲空間,每一個二維矩陣數(shù)據(jù)存儲空間可以再分解成一系列的相互邏輯獨立的二維子矩陣數(shù)據(jù)存儲空間,所述的二維子矩陣為m×n矩陣,m、n為自然數(shù);數(shù)據(jù)在所述高維矩陣數(shù)據(jù)存儲空間進行存放時采取由高維到低維的方式,在每一個二維子矩陣數(shù)據(jù)存儲空間中進行存放時采取由左到右,由上到下的順序,按照模進行存放的方式;將所述二維子矩陣數(shù)據(jù)存儲空間通過數(shù)據(jù)存儲模式的配置映射到多個物理存儲器中,所述數(shù)據(jù)存儲模式的配置內(nèi)容包括基地址、數(shù)據(jù)元素寬度、行跨度、列跨度和數(shù)據(jù)存儲模式;在存取所述二維子矩陣數(shù)據(jù)存儲空間的數(shù)據(jù)時,指定需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移和列偏移;以及,需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的排列方向;需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的長度;從而根據(jù)以上條件從多個物理存儲器的每一個存儲器中的相應(yīng)地址中讀取需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的數(shù)據(jù);在讀取數(shù)據(jù)時,從物理存儲器中讀出的數(shù)據(jù)要按照需要經(jīng)過數(shù)據(jù)置換以使其滿足需要的讀取數(shù)據(jù)順序;在存入數(shù)據(jù)時,數(shù)據(jù)在送入物理存儲器中需要經(jīng)過數(shù)據(jù)置換以使其滿足物理存儲器中需要的存放順序。
進一步,如所述數(shù)據(jù)存儲模式是行存儲模式,在行存儲模式下,支持的存取的數(shù)據(jù)塊的排列方向為行排列,每次所能進行存取的最大數(shù)據(jù)塊長度為不超過物理存儲器的存儲單元總數(shù)。
或者,所述數(shù)據(jù)存儲模式是列存儲模式,在列存儲模式下,支持的存取的數(shù)據(jù)塊的排列方向為列排列,每次所能進行存取的最大數(shù)據(jù)塊長度為不超過物理存儲器的存儲單元總數(shù)。
再或者,所述數(shù)據(jù)存儲模式是行列交錯存儲模式,在行列交錯存儲模式下,支持的存取的數(shù)據(jù)塊的排列方向為行排列和列排列;在行列交錯存儲模式下,數(shù)據(jù)進行存取時要進行交錯,交錯包括下列步驟(1)、由獨立進行交錯的數(shù)據(jù)單元組成的正方形矩陣區(qū)域,所述正方形區(qū)域是指在行方向上包含的行跨度的個數(shù)等于這個區(qū)域所包含的行數(shù),所述包含的行跨度的個數(shù)為交錯額度,它不超過物理存儲器的存儲單元總數(shù)所包含的行跨度的個數(shù);(2)、將所述正方形區(qū)域中的第一行數(shù)據(jù)次序保持不變;(3)、將所述正方形區(qū)域中的第二行數(shù)據(jù)的最后一個行跨度中的數(shù)據(jù)元素轉(zhuǎn)移到第一個行跨度相應(yīng)位置中去,而原來的從第一個行跨度到倒數(shù)第二個行跨度中的數(shù)據(jù)元素依次向后轉(zhuǎn)移一個行跨度;(4)、將所述正方形區(qū)域中的第三行數(shù)據(jù)的倒數(shù)第二個行跨度中的數(shù)據(jù)元素轉(zhuǎn)移到第一個行跨度相應(yīng)位置中去,最后一個行跨度中的數(shù)據(jù)元素轉(zhuǎn)移到第二個行跨度相應(yīng)位置中去,而原來的從第一個行跨度到倒數(shù)第三個行跨度中的數(shù)據(jù)元素依次向后轉(zhuǎn)移兩個行跨度;(5)、依次類推,每進行到下一行,則從行尾移到行首的數(shù)據(jù)元素增加一個,直到進行到所述正方形區(qū)域的最后一行結(jié)束。
所述的交錯方法還包括(6)、所述正方形區(qū)域進行交錯后得出的新的各行可以進行排列組合,經(jīng)過排列組合產(chǎn)生的每一種結(jié)果均可作為本交錯方式的結(jié)果。依據(jù)交錯額度和行跨度確定行列交錯存儲模式的修正表方式如下表1
表1上表中,M為交錯額度,X表示行跨度xstride,X(M-1)表示行跨度X與(M-1)的乘積,X(M-2)表示行跨度X與(M-2)的乘積,X(M-3)表示行跨度X與(M-3)的乘積,依次類推;所述正方形區(qū)域進行交錯后得出的新的各行可以進行排列組合形成新的交錯結(jié)果,對應(yīng)的修正表1也進行相同的各行的排列組合。
再進一步,所述需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移和列偏移,其中偏移量為正數(shù)或負數(shù)。
更進一步,在行存儲模式下,物理地址計算過程為設(shè)基地址為base,需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移和列偏移分別為x和y,行跨度為xstride,列跨度為ystride;需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊中的各個數(shù)據(jù)在物理存儲器中對應(yīng)的全局的物理地址zi計算式為(1)zi=base+(x+i)×xstride+y×ystride(1)
其中,i為各個數(shù)據(jù)相對于該數(shù)據(jù)塊的首地址的距離,單位為行跨度;將全局的物理地址zi進行除以N和取N的模的運算后得到每一個存儲器單元所需要的物理地址信息,N是指所述物理存儲器的模數(shù)。
在列存儲模式下,物理地址計算過程為設(shè)基地址為base,需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移和列偏移分別為x和y,行跨度為xstride,列跨度為ystride;需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊中的各個數(shù)據(jù)在物理存儲器中對應(yīng)的全局的物理地址zi計算式為(2)zi=base+x×xstride+(y+i)×ystride(2)其中,i為各個數(shù)據(jù)相對于該數(shù)據(jù)塊的首地址的距離,單位為列跨度;將全局的物理地址zi進行除以N和取N的模的運算后得到每一個存儲器單元所需要的物理地址信息,N是指所述物理存儲器的模數(shù)。
在行列交錯存儲模式下,物理地址計算過程為設(shè)基地址為base,需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移和列偏移分別為x和y,行跨度為xstride,列跨度為ystride;行列交錯存儲模式的交錯額度為N,需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的各個數(shù)據(jù)在物理存儲器中對應(yīng)的物理地址的計算方法包括以下步驟(1)、計算未經(jīng)修正的數(shù)據(jù)塊中各個數(shù)據(jù)對應(yīng)的全局物理地址zi當(dāng)需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的排列方向為行排列時,計算式為(1)zi=base+(x+i)×xstride+y×ystride(1)當(dāng)需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的排列方向為列排列時,計算式為(2)zi=base+x×xstride+(y+i)×ystride(2)其中i為各個數(shù)據(jù)相對于該數(shù)據(jù)塊的首地址的距離,單位為行跨度;(2)、同時計算數(shù)據(jù)塊的各個數(shù)據(jù)在獨立進行數(shù)據(jù)交錯的正方形區(qū)域中所在位置的行坐標R(zi)和列坐標C(zi)當(dāng)需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的排列方向為行排列時,計算式為(3)、(4)R(zi)=(x+i)%N×xstride(x+i≥0)(N+(x+i)%N)×xstride(x+i<0)---(3)]]>
C(zi)=y%N(y≥0)N+y%N(y<0)---(4)]]>上式中,%為整除取余計算符號;當(dāng)需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的排列方向為列排列時,計算式為(5)、(6)R(zi)=(x%N)×xstride(x≥0)(N+x%N)×xstride(x<0)---(5)]]>C(zi)=(y+i)%N(y+i≥0)N+(y+i)%N(y+i<0)---(6)]]>(3)、按照不同的交錯方式得到修正表,依據(jù)前面求出的R(zi)和C(zi)得出數(shù)據(jù)塊的各個數(shù)據(jù)在交錯過程中移動的偏移量,利用這個偏移量對zi進行修正,從而得出需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊中的各個數(shù)據(jù)在物理存儲器中對應(yīng)的全局物理地址;根據(jù)各個數(shù)據(jù)在獨立進行交錯的數(shù)據(jù)單元組成的正方形矩陣區(qū)域中所處的行坐標和列坐標查表得到修正值,即在物理地址計算單元得到的zi的基礎(chǔ)上再加表中查得的修正偏移量就得到了修正后的各個數(shù)據(jù)所對應(yīng)的修正后的物理地址zi′。如所述正方形區(qū)域進行交錯后得出的新的各行可以進行排列組合形成新的交錯結(jié)果,則對應(yīng)的修正表1也進行相同的各行的排列組合即可,其修正值相同。
(4)、將全局的物理地址zi進行除以N和取N的模的運算后得到每一個存儲器單元所需要的物理地址信息,N是指所述物理存儲器的模數(shù)。
所述物理存儲器由多個位寬為字節(jié)的存儲器單元并聯(lián)組成,所述的基地址、數(shù)據(jù)元素寬度、行跨度、列跨度的數(shù)值以字節(jié)大小為單位。位寬也可以是雙字節(jié)或多字節(jié),只要配置的內(nèi)容的單位與位寬一致即可。
一種用于實現(xiàn)所述的矩陣數(shù)據(jù)存取方法的矩陣數(shù)據(jù)存儲裝置,所述的矩陣數(shù)據(jù)存儲裝置的邏輯存儲空間包含有預(yù)定的高維矩陣數(shù)據(jù)存儲空間,所述高維矩陣數(shù)據(jù)存儲空間經(jīng)過多級的降維處理最終可以轉(zhuǎn)化為多個二維矩陣數(shù)據(jù)存儲空間,每一個二維矩陣數(shù)據(jù)存儲空間可以再分解成一系列的相互邏輯獨立的二維子矩陣數(shù)據(jù)存儲空間,所述的二維子矩陣為m×n矩陣,m、n為自然數(shù);所述的矩陣數(shù)據(jù)存儲裝置包括配置寄存器,包括基址寄存器,數(shù)據(jù)元素字節(jié)寬度寄存器,行跨度寄存器,列跨度寄存器,循環(huán)存取次數(shù)寄存器,循環(huán)存取使能寄存器,數(shù)據(jù)存儲模式寄存器;地址計算單元組,由數(shù)量與物理存儲器單元相同的地址計算單元組成,每一個地址計算單元具有設(shè)定的模塊號,所述地址計算單元用于根據(jù)配置寄存器中的內(nèi)容和模塊號,按照控制器選擇的數(shù)據(jù)通路,從控制器讀取需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移和列偏移,生成需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的相應(yīng)位置數(shù)據(jù)所對應(yīng)的物理地址;地址轉(zhuǎn)換模塊,用于把地址計算單元組生成的各路物理地址信息來轉(zhuǎn)化成為各個物理存儲器單元的地址信息,輸送到各個物理存儲器單元;同時根據(jù)模塊號為0的地址計算單元產(chǎn)生的物理地址信息計算需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址所對應(yīng)的物理存儲器單元,并將這一信息輸送到數(shù)據(jù)置換模塊;數(shù)據(jù)置換模塊,用于在讀取數(shù)據(jù)時,按照地址轉(zhuǎn)換模塊產(chǎn)生的需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址所對應(yīng)的物理存儲器單元的信息對物理存儲器單元組產(chǎn)生的一組數(shù)據(jù)進行置換,以使其滿足需要的讀取數(shù)據(jù)順序;以及在寫數(shù)據(jù)時,按照地址轉(zhuǎn)換模塊產(chǎn)生的需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址所對應(yīng)的物理存儲器單元的信息對送入物理存儲器單元組的一組數(shù)據(jù)進行置換以使其滿足物理存儲器中需要的存放順序;物理存儲器單元組,由一組并行的物理存儲器單元組成;控制器,用于從程序存儲器中讀取指令,并對指令進行解析轉(zhuǎn)化為對配置寄存器的配置信息,或是將從指令中解析出的需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移和列偏移、需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的排列方向輸送到地址計算單元組,同時根據(jù)需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的長度決定使能地址計算單元的數(shù)量,根據(jù)需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的排列方向選擇地址計算單元的數(shù)據(jù)通路,將這些信息也輸送到地址計算單元組;總線,連接多個物理存儲器單元組的數(shù)據(jù)通道。
進一步,所述地址計算單元包括物理地址計算單元,用于根據(jù)控制器選擇的數(shù)據(jù)通路和模塊號,以及由控制器輸入的需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移和列偏移,生成需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的相應(yīng)位置數(shù)據(jù)所對應(yīng)的全局物理地址,所述全局物理地址在行存儲模式下將直接輸出,在行列交錯存儲模式下將輸入到地址修正單元進行修正后輸出;行坐標計算單元,用于在行列交錯存儲模式下,根據(jù)自身的模塊號和需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移,生成需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的相應(yīng)位置數(shù)據(jù)在獨立進行數(shù)據(jù)交錯的正方形區(qū)域中所在的行坐標;列坐標計算單元,用于在行列交錯存儲模式下,根據(jù)自身的模塊號和需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的列偏移,生成需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的相應(yīng)位置數(shù)據(jù)在獨立進行數(shù)據(jù)交錯的正方形區(qū)域中所在的列坐標;地址修正單元,用于在行列交錯存儲模式下,根據(jù)物理地址計算單元生成的全局物理地址、行坐標計算單元生成的數(shù)據(jù)在獨立進行數(shù)據(jù)交錯的正方形區(qū)域中所在的行坐標、列坐標計算單元生成的數(shù)據(jù)在獨立進行數(shù)據(jù)交錯的正方形區(qū)域中所在的列坐標進行修正,最終生成修正后的物理地址;輸出數(shù)據(jù)選擇器,用于選擇是輸出地址修正單元的結(jié)果還是直接輸出物理地址計算單元的計算結(jié)果。
再進一步,所述數(shù)據(jù)置換模塊包括數(shù)據(jù)控制單元,用于接受來自地址轉(zhuǎn)換模塊的首字節(jié)所在的物理存儲器單元模塊號,將其轉(zhuǎn)化為對數(shù)據(jù)選擇單元的選擇信號,輸送給讀取數(shù)據(jù)選擇單元或?qū)懭霐?shù)據(jù)選擇單元;讀取數(shù)據(jù)選擇單元,它由與物理存儲器單元數(shù)量相同的一組選擇器組成,每一個選擇器用于從多個物理存儲器單元中根據(jù)數(shù)據(jù)控制單元的選擇信號選擇各個讀出數(shù)據(jù)以便并行輸出需要讀取的數(shù)據(jù)塊的所有數(shù)據(jù);寫入數(shù)據(jù)選擇單元,它由與物理存儲器單元數(shù)量相同的一組選擇器組成,每一個選擇器用于根據(jù)數(shù)據(jù)控制單元的選擇信號選擇要寫入各個物理存儲器單元中的數(shù)據(jù)以便向物理存儲器單元組并行輸出需要寫入的數(shù)據(jù)塊的所有數(shù)據(jù)。
更進一步,所述物理存儲器單元是單口存儲器或多口存儲器。
本發(fā)明的有益效果主要表現(xiàn)在1、對存儲空間中單位存儲元素進行重新定義,滿足實際應(yīng)用中所需存儲空間大小不定的要求;2、存儲方便,不會造成存儲空間的冗余;3、能滿足不同類型數(shù)據(jù)存取的要求;4、通過對邏輯空間進行有效分配,存儲效率高;5、進行統(tǒng)一的交錯模式定義,進一步提高存儲效率;6、地址計算方法可以采用正負偏移,使用方便、靈活。
圖1是闡述矩陣存儲空間以及矩陣降維方法的圖;圖2是闡述二維子矩陣數(shù)據(jù)存儲空間的圖;圖3是闡述對于一個8×8矩陣的兩種不同的交錯結(jié)果的圖;圖4是闡述對于一個4×4矩陣的兩種不同的交錯結(jié)果的圖;圖5是闡述矩陣數(shù)據(jù)存儲裝置的詳細方框圖;圖6是闡述地址計算單元的詳細方框圖;圖7是闡述一個視頻宏塊中的亮度信號Y和兩個色度信號U、V在矩陣存儲空間的存儲方式的圖;圖8是闡述一個視頻宏塊中的亮度信號Y和兩個色度信號U、V在經(jīng)過降維處理后的邏輯空間的存儲方式的圖;圖9是闡述一個視頻宏塊中的色度信號U在物理存儲器中的存儲方式的圖;圖10是闡述需要存取的二維子矩陣數(shù)據(jù)存儲空間中的按行排列的數(shù)據(jù)塊在邏輯空間與物理空間中的分布的圖;圖11是闡述矩陣數(shù)據(jù)存儲裝置在行存儲模式下進行讀取一行數(shù)據(jù)的過程的圖;圖12是闡述H.264標準中需要進行預(yù)測的4×4亮度塊以及其上邊的像素組和左邊的像素組的圖;圖13是闡述需要預(yù)測的亮度塊的上邊的像素組和左邊的像素組在邏輯空間與物理空間中的分布的圖;圖14闡述矩陣數(shù)據(jù)存儲裝置在行列交錯存儲模式下進行讀取一行數(shù)據(jù)的過程的圖;圖15是闡述矩陣數(shù)據(jù)存儲裝置在行列交錯存儲模式下進行讀取一列數(shù)據(jù)的過程的圖。
具體實施方式
下面結(jié)合附圖對本發(fā)明作進一步描述。
實施例1如圖1所示,一種矩陣數(shù)據(jù)存儲方法,包含有預(yù)定的高維矩陣數(shù)據(jù)存儲空間1,它經(jīng)過多級的降維處理最終可以轉(zhuǎn)化為多個二維矩陣數(shù)據(jù)存儲空間2,每一個二維矩陣數(shù)據(jù)存儲空間2可以再分解成一系列的相互邏輯獨立的二維子矩陣數(shù)據(jù)存儲空間3。數(shù)據(jù)在所述高維矩陣數(shù)據(jù)存儲空間1進行存放時采取由高維到低維的方式,在每一個二維子矩陣數(shù)據(jù)存儲空間中進行存放時采取由左到右,由上到下的順序,按照模進行存放的方式;將所述二維子矩陣數(shù)據(jù)存儲空間3通過數(shù)據(jù)存取模式的配置映射到多個物理存儲器中,如圖2所示,配置的內(nèi)容包括基地址、數(shù)據(jù)元素寬度、行跨度、列跨度和數(shù)據(jù)存儲模式;在存取所述二維子矩陣數(shù)據(jù)存儲空間3的數(shù)據(jù)時,指定需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移和列偏移、需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的排列方向以及需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的長度,從而從多個物理存儲器的每一個存儲器中的相應(yīng)地址中讀取需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的數(shù)據(jù);在讀取數(shù)據(jù)時,從物理存儲器中讀出的數(shù)據(jù)要按照需要經(jīng)過數(shù)據(jù)置換以使其滿足需要的讀取數(shù)據(jù)順序;在寫數(shù)據(jù)時,數(shù)據(jù)在送入物理存儲器中需要經(jīng)過數(shù)據(jù)置換以使其滿足物理存儲器中需要的存放順序。
所述數(shù)據(jù)存儲模式包括行存儲、列存儲和行列交錯存儲。
在行存儲模式下,支持的存取的數(shù)據(jù)塊的排列方向只有行排列,每次所能進行存取的最大數(shù)據(jù)塊長度為不超過物理存儲器的存儲單元總數(shù)。
在列存儲模式下,支持的存取的數(shù)據(jù)塊的排列方向為列排列,每次所能進行存取的最大數(shù)據(jù)塊長度為不超過物理存儲器的存儲單元總數(shù)。
在行列交錯存儲模式下,支持的存取的數(shù)據(jù)塊的排列方向包括行排列和列排列,二者可同時支持。
在行列交錯存儲模式下,數(shù)據(jù)進行存取時要進行交錯,交錯包括下列步驟由獨立進行交錯的數(shù)據(jù)單元組成的正方形矩陣區(qū)域,所述正方形區(qū)域是指在行方向上包含的行跨度的個數(shù)等于這個區(qū)域所包含的行數(shù),所述包含的行跨度的個數(shù)又稱交錯額度,它不能超過物理存儲器的存儲單元總數(shù)所包含的行跨度的個數(shù);將所述正方形區(qū)域中的第一行數(shù)據(jù)次序保持不變;將所述正方形區(qū)域中的第二行數(shù)據(jù)的最后一個行跨度中的數(shù)據(jù)元素轉(zhuǎn)移到第一個行跨度相應(yīng)位置中去,而原來的從第一個行跨度到倒數(shù)第二個行跨度中的數(shù)據(jù)元素依次向后轉(zhuǎn)移一個行跨度;將所述正方形區(qū)域中的第三行數(shù)據(jù)的倒數(shù)第二個行跨度中的數(shù)據(jù)元素轉(zhuǎn)移到第一個行跨度相應(yīng)位置中去,最后一個行跨度中的數(shù)據(jù)元素轉(zhuǎn)移到第二個行跨度相應(yīng)位置中去,而原來的從第一個行跨度到倒數(shù)第三個行跨度中的數(shù)據(jù)元素依次向后轉(zhuǎn)移兩個行跨度;依次類推,每進行到下一行,則從行尾移到行首的數(shù)據(jù)元素增加一個,直到進行到所述正方形區(qū)域的最后一行結(jié)束;以上所述正方形區(qū)域進行交錯后得出的新的各行可以進行排列組合,經(jīng)過排列組合產(chǎn)生的每一種結(jié)果均可作為本交錯方式的結(jié)果。
如圖3所示,這里描述了對于一個8×8矩陣的兩種不同的交錯結(jié)果,如圖4所示,這里描述了對于一個4×4矩陣的兩種不同的交錯結(jié)果。
在行存儲模式下,物理地址計算過程為設(shè)基地址為base,需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移和列偏移分別為x和y,行跨度為xstride,列跨度為ystride;需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊中的各個數(shù)據(jù)在物理存儲器中對應(yīng)的全局物理地址zi計算式為(1)zi=base+(x+i)×xstride+y×ystride(1)其中,i為各個數(shù)據(jù)相對于該數(shù)據(jù)塊的首地址的距離,單位為行跨度;將全局的物理地址zi進行除以N和取N的模的運算后得到每一個存儲器單元所需要的物理地址信息,N是指所述物理存儲器的模數(shù)。
在列存儲模式下,物理地址計算過程為設(shè)基地址為base,需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移和列偏移分別為x和y,行跨度為xstride,列跨度為ystride;需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊中的各個數(shù)據(jù)在物理存儲器中對應(yīng)的全局物理地址zi計算式為(2)zi=base+x×xstride+(y+i)×ystride(2)其中,i為各個數(shù)據(jù)相對于該數(shù)據(jù)塊的首地址的距離,單位為列跨度;將全局的物理地址zi進行除以N和取N的模的運算后得到每一個存儲器單元所需要的物理地址信息,N是指所述物理存儲器的模數(shù)。
在行列交錯存儲模式下,物理地址計算過程為設(shè)基地址為base,需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移和列偏移分別為x和y,行跨度為xstride,列跨度為ystride;行列交錯存儲模式的交錯額度為N,需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的各個數(shù)據(jù)在物理存儲器中對應(yīng)的物理地址的計算方法包括以下步驟(1)、計算未經(jīng)修正的數(shù)據(jù)塊中各個數(shù)據(jù)對應(yīng)的全局物理地址zi當(dāng)需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的排列方向為行排列時,計算式為(1)zi=base+(x+i)×xstride+y×ystride(1)當(dāng)需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的排列方向為列排列時,計算式為(2)zi=base+x×xstride+(y+i)×ystride(2)其中i為各個數(shù)據(jù)相對于該數(shù)據(jù)塊的首地址的距離,單位為行跨度;(2)、同時計算數(shù)據(jù)塊的各個數(shù)據(jù)在獨立進行數(shù)據(jù)交錯的正方形區(qū)域中所在位置的行坐標R(zi)和列坐標C(zi)當(dāng)需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的排列方向為行排列時,計算式為(3)、(4)R(zi)=(x+i)%N×xstride(x+i≥0)(N+(x+i)%N)×xstride(x+i<0)---(3)]]>C(zi)=y%N(y≥0)N+y%N(y<0)---(4)]]>當(dāng)需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的排列方向為列排列時,計算式為(5)、(6)R(zi)=(x%N)×xstride(x≥0)(N+x%N)×xstride(x<0)---(5)]]>C(zi)=(y+i)%N(y+i≥0)N+(y+i)%N(y+i<0)---(6)]]>(3)、按照不同的交錯方式得到修正表,依據(jù)前面求出的R(zi)和C(zi)得出數(shù)據(jù)塊的各個數(shù)據(jù)在交錯過程中移動的偏移量,利用這個偏移量對zi進行修正,從而得出需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊中的各個數(shù)據(jù)在物理存儲器中對應(yīng)的全局物理地址;(4)、將全局的物理地址zi進行除以N和取N的模的運算后得到每一個存儲器單元所需要的物理地址信息,N是指所述物理存儲器的模數(shù)。
所述需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移和列偏移,其中偏移量可以是一個正數(shù),也可以是一個負數(shù),數(shù)值以字節(jié)大小為單位。
實施例2一個由多個物理存儲器單元并聯(lián)組成的矩陣數(shù)據(jù)存儲裝置,矩陣數(shù)據(jù)存儲裝置的邏輯存儲空間包含有預(yù)定的高維矩陣數(shù)據(jù)存儲空間,所述高維矩陣數(shù)據(jù)存儲空間經(jīng)過多級的降維處理最終可以轉(zhuǎn)化為多個二維矩陣數(shù)據(jù)存儲空間,每一個二維矩陣數(shù)據(jù)存儲空間可以再分解成一系列的相互邏輯獨立的的二維子矩陣數(shù)據(jù)存儲空間。如圖5所示,所述矩陣數(shù)據(jù)存儲裝置包括配置寄存器,包括基址寄存器,數(shù)據(jù)元素字節(jié)寬度寄存器,行跨度寄存器,列跨度寄存器,數(shù)據(jù)存儲模式寄存器,交錯額度寄存器。
地址計算單元組,由數(shù)量與物理存儲器單元相同的地址計算單元組成,每一個地址計算單元具有一個自己的模塊號,所述地址計算單元用于根據(jù)配置寄存器中的內(nèi)容和模塊號,按照控制器選擇的數(shù)據(jù)通路,從控制器讀取需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移和列偏移,生成需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的相應(yīng)位置數(shù)據(jù)所對應(yīng)的物理地址。
地址轉(zhuǎn)換模塊,用于把地址計算單元組生成的各路物理地址信息來轉(zhuǎn)化成為各個物理存儲器單元的地址信息,輸送到各個物理存儲器單元;同時根據(jù)模塊號為0的地址計算單元產(chǎn)生的物理地址信息計算需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址所對應(yīng)的物理存儲器單元的單元號,并將這一信息輸送到數(shù)據(jù)置換模塊。
數(shù)據(jù)置換模塊,用來在讀取數(shù)據(jù)時,按照地址轉(zhuǎn)換模塊產(chǎn)生的需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址所對應(yīng)的物理存儲器單元的信息對物理存儲器單元組產(chǎn)生的一組數(shù)據(jù)進行置換,以使其滿足需要的讀取數(shù)據(jù)順序;以及在寫數(shù)據(jù)時,按照地址轉(zhuǎn)換模塊產(chǎn)生的需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址所對應(yīng)的物理存儲器單元的信息對送入物理存儲器單元組的一組數(shù)據(jù)進行置換以使其滿足物理存儲器中需要的存放順序。
物理存儲器單元組,由一組并行的物理存儲器單元50~57組成,每一個物理存儲器單元的位寬均為字節(jié)。
控制器,從程序存儲器中讀取指令,并對指令進行解析轉(zhuǎn)化為對配置寄存器的配置信息,或是將從指令中解析出的需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移和列偏移、需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的排列方向輸送到地址計算單元組,同時根據(jù)需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的長度決定使能地址計算單元的數(shù)量,根據(jù)需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的排列方向選擇地址計算單元的數(shù)據(jù)通路,將這些信息也輸送到地址計算單元組;總線,連接多個物理存儲器單元組的數(shù)據(jù)通道。
如圖6所示,所述地址計算單元包括一個物理地址計算單元,用于根據(jù)控制器選擇的數(shù)據(jù)通路和模塊號i,所述的模塊號i與各個數(shù)據(jù)相對于該數(shù)據(jù)塊的首地址的距離i取值相同;以及由控制器輸入的需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移x和列偏移y,生成需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的相應(yīng)位置數(shù)據(jù)所對應(yīng)的全局物理地址,這個物理地址在行存儲模式下將直接輸出,在行列交錯存儲模式下將輸入到地址修正單元進行修正;還包括一個行坐標計算單元,用于在行列交錯存儲模式下,根據(jù)自身的模塊號i和需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移x,生成需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的相應(yīng)位置數(shù)據(jù)在獨立進行數(shù)據(jù)交錯的正方形區(qū)域中所在的行坐標;還包括一個列坐標計算單元,用于在行列交錯存儲模式下,根據(jù)自身的模塊號i和需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的列偏移y,生成需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的相應(yīng)位置數(shù)據(jù)在獨立進行數(shù)據(jù)交錯的正方形區(qū)域中所在的列坐標;還包括一個地址修正單元,用于在行列交錯存儲模式下,根據(jù)物理地址計算單元生成的物理地址、行坐標計算單元生成的數(shù)據(jù)在獨立進行數(shù)據(jù)交錯的正方形區(qū)域中所在的行坐標、列坐標計算單元生成的數(shù)據(jù)在獨立進行數(shù)據(jù)交錯的正方形區(qū)域中所在的列坐標進行修正,最終生成修正后的物理地址;還包括一個輸出數(shù)據(jù)選擇器,用來選擇是輸出地址修正單元的結(jié)果還是直接輸出物理地址計算單元的計算結(jié)果。
所述數(shù)據(jù)置換模塊包括一個數(shù)據(jù)控制單元,接受來自地址轉(zhuǎn)換模塊的首字節(jié)所在的物理存儲器單元模塊號,將其轉(zhuǎn)化為對數(shù)據(jù)選擇單元的選擇信號,輸送給讀取數(shù)據(jù)選擇單元或者是寫入數(shù)據(jù)選擇單元;還包括一個讀取數(shù)據(jù)選擇單元,它由與物理存儲器單元數(shù)量相同的一組選擇器組成,每一個選擇器用于從多個物理存儲器單元中根據(jù)數(shù)據(jù)控制單元的選擇信號選擇各個讀出數(shù)據(jù)以便并行輸出需要讀取的數(shù)據(jù)塊的所有數(shù)據(jù);還包括一個寫入數(shù)據(jù)選擇單元,它由與物理存儲器單元數(shù)量相同的一組選擇器組成,每一個選擇器用于根據(jù)數(shù)據(jù)控制單元的選擇信號選擇要寫入各個物理存儲器單元中的數(shù)據(jù)以便向物理存儲器單元組并行輸出需要寫入的數(shù)據(jù)塊的所有數(shù)據(jù)。
實施例3本實施例將矩陣數(shù)據(jù)存取方法應(yīng)用在視頻信號處理中,通常將一幀視頻數(shù)據(jù)分為若干個宏塊,每一個獨立的宏塊由亮度信號Y和兩個色度信號U和V按照4∶2∶0的比例組成。其中,亮度信號為一個16×16的矩陣,兩個色度信號分別為8×8的矩陣。利用本發(fā)明矩陣存儲裝置可以有效的實現(xiàn)對這種宏塊數(shù)據(jù)進行存儲。
將每一個獨立宏塊看作是一個四維矩陣數(shù)據(jù)存儲空間,其中一維為時間,如圖7所示,在沿著時間t軸依次排列著一組相互獨立的矩陣數(shù)據(jù)存儲空間1,每一個三維數(shù)據(jù)空間1由三個相互獨立的二維矩陣數(shù)據(jù)存儲空間2組成,每一個二維矩陣數(shù)據(jù)存儲空間2存放著Y、U、V中的一種信息,其中多個Y數(shù)據(jù)塊或者多個U數(shù)據(jù)塊或者多個V數(shù)據(jù)塊可組成一個二維子矩陣數(shù)據(jù)存儲空間。
把這個四維矩陣數(shù)據(jù)存儲空間通過降維處理,轉(zhuǎn)化為多個二維矩陣數(shù)據(jù)存儲空間2組成的一個總二維矩陣數(shù)據(jù)存儲空間,即一個平面邏輯空間,如圖8所示,在每個二維矩陣數(shù)據(jù)存儲空間2中存放著Y、U、V中的一種信息。在規(guī)劃二維矩陣數(shù)據(jù)存儲空間2的空間大小時可以將用來存放Y的二維矩陣數(shù)據(jù)存儲空間的長和寬設(shè)計為用來存放U、V的二維矩陣數(shù)據(jù)存儲空間的長和寬的兩倍,通過這樣的一種方法可以使邏輯空間達到充分的飽和。
在向物理存儲器中進行存放時,存放順序為在邏輯空間的同一個二維子矩陣數(shù)據(jù)存儲空間中,先將第一行的數(shù)據(jù)從左到右依次存入物理存儲器,然后轉(zhuǎn)到下一行的最左端,再按照從左到右的順序依次存放,如圖9所示,以色度信號U的8×8數(shù)據(jù)塊為例,先把所有同一行的U數(shù)據(jù)塊中的第一行的數(shù)據(jù)按照箭頭方向存入物理存儲器,然后按照箭頭方向存儲所有同一行的U數(shù)據(jù)塊中的第二行的數(shù)據(jù),依次類推,直到8行數(shù)據(jù)存儲完畢。
第一、行儲模式下的矩陣裝置的數(shù)據(jù)存取地址計算在信號處理的快速傅立葉變換、離散余弦變換等運算中,都會遇到同時取一行數(shù)據(jù)的運算,下面將以一個從存儲器中同時取一行4個數(shù)據(jù)至寄存器中的例子來說明本矩陣裝置在行存儲模式下的使用方法。
設(shè)行跨度為1,列跨度為16,數(shù)據(jù)元素寬度為1,需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移和列偏移分別為3和1,需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的排列方向為行排列,需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的長度為4,則這樣一個數(shù)據(jù)塊在邏輯空間中所處的位置如圖10a所示。
設(shè)物理存儲器單元組由8個并行的物理存儲器單元50~57組成,設(shè)基地址為4,則需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊在物理空間所處的位置如圖10b所示。
用戶在進行數(shù)據(jù)存取之前需要對矩陣存取裝置的配置寄存器進行配置,方式是用戶通過指令將配置信息輸送到控制器,然后由控制器對指令進行解析用得出的配置信息完成對各個配置寄存器的配置。配置后在下一次配置之前的所有的數(shù)據(jù)存取都依照本次配置執(zhí)行。
在這個例子中配置完成后各個配置寄存器值分別為數(shù)據(jù)存儲模式為行存儲模式,行跨度寄存器為1,列跨度寄存器為16,數(shù)據(jù)元素寬度寄存器為1。
然后用戶就可以通過指令來完成數(shù)據(jù)的存取,在本例中,控制器通過對存取指令的解析可以得到需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移和列偏移分別為4和1,需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的排列方向只可為行排列,需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的長度為4??刂破鲗⒁陨闲畔⑤斔偷礁鱾€地址計算單元進行物理地址的計算,同時生成地址計算單元的數(shù)據(jù)通路選擇信號以控制其計算的進行。
地址計算單元組中的前四個地址計算單元被控制器使能,開始執(zhí)行物理地址計算操作,如圖6所示,地址計算單元得到控制器送來的地址信息和數(shù)據(jù)通路選擇信號參照公式(1)完成以下運算物理地址計算單元執(zhí)行z0=4+(3+0)×1+1×16=23
z1=4+(3+1)×1+1×16=24z2=4+(3+2)×1+1×16=25z3=4+(3+3)×1+1×16=26其中下標0~4代表地址計算單元的模塊號,每一個物理地址計算單元只執(zhí)行自己對應(yīng)模塊號的運算。
由于沒有進行行列交錯,所以行坐標計算單元和列坐標計算單元在這里不進行工作,數(shù)據(jù)選擇器6選通信號為1,將物理地址計算單元的計算結(jié)果直接輸出。
如圖11所示,地址計算單元的計算結(jié)果輸送到地址轉(zhuǎn)換模塊。地址轉(zhuǎn)換模塊將計算結(jié)果進行除以8和模8的處理,這里的8是指物理存儲器單元組由8個并行的物理存儲器單元組成,得到下表2
表2如圖11所示,地址轉(zhuǎn)換模塊將轉(zhuǎn)換結(jié)果分別送到相應(yīng)的物理存儲器單元50~57,物理存儲器單元根據(jù)地址信息輸出數(shù)據(jù)到地址置換模塊。
與此同時,地址轉(zhuǎn)換模塊將z0所對應(yīng)的物理存儲器單元號7輸送到地址置換模塊,地址置換模塊中的數(shù)據(jù)控制單元將物理存儲器單元號7轉(zhuǎn)化成為對讀取數(shù)據(jù)選擇單元的選擇器的選擇信號送往讀取數(shù)據(jù)選擇單元,讀取數(shù)據(jù)選擇單元通過這些選擇信號將由物理存儲單元輸入的數(shù)據(jù)進行轉(zhuǎn)換,將物理存儲器單元57的數(shù)據(jù)調(diào)整到輸出的第一個字節(jié),如圖11所示,然后把讀出的一行4個數(shù)據(jù)同過總線送往寄存器。
至此,這次讀數(shù)據(jù)的操作全部完成。
第二、列存儲模式下的矩陣裝置的數(shù)據(jù)存取地址計算其過程與行存儲模式下基本相同,地址計算公式參照(2)。
第三、行列交錯存儲模式下的矩陣裝置的數(shù)據(jù)存取地址計算以下以H.264標準中幀內(nèi)預(yù)測中4×4亮度塊的預(yù)測為例來說明本矩陣裝置在行列交錯存儲模式下的使用方法。
圖12顯示了需要進行預(yù)測的4×4亮度塊7以及其上邊的像素組8和左邊的像素組9,將要被預(yù)測的亮度塊7可通過像素組8和像素組9中的數(shù)據(jù)進行預(yù)測,這里就需要既要同時存取處于同一行的像素組8又要能同時存取處于同一列的像素組9。使用本發(fā)明的矩陣裝置可以對這種存取操作進行加速。
設(shè)行跨度為1,列跨度為16,數(shù)據(jù)元素寬度為1,圖12中點M相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移和列偏移分別為3和1,相應(yīng)地,點A相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移和列偏移分別為4和1,則這樣一個數(shù)據(jù)塊在邏輯空間中所處的位置如圖13a所示。
設(shè)物理存儲器單元組由8個并行的物理存儲器單元50~57組成,設(shè)基地址為0,則需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊在物理空間所處的位置如圖13b所示,從圖中可以看出,由于在行列交錯存儲模式下,數(shù)據(jù)從邏輯空間轉(zhuǎn)換到物理空間中要進行交錯,本例中交錯額度為8。因此,在圖13b中,在邏輯空間中處于同一列的M、I、J、K、L五個像素點已經(jīng)被錯開分布在五個不同的列中。
用戶在進行數(shù)據(jù)存取之前需要對矩陣存取裝置的配置寄存器進行配置,方式是用戶通過指令將配置信息輸送到控制器,然后由控制器對指令進行解析用得出的配置信息完成對各個配置寄存器的配置。配置后在下一次配置之前的所有的數(shù)據(jù)存取都依照本次配置執(zhí)行。
在這個例子中配置完成后各個配置寄存器值分別為數(shù)據(jù)存儲模式為行列交錯存儲模式,行跨度寄存器為1,列跨度寄存器為16,數(shù)據(jù)元素寬度寄存器為1,交錯額度寄存器為8。
然后用戶就可以通過指令來完成數(shù)據(jù)的存取。
首先說明對于像素組8的讀取方式,控制器通過對存取指令的解析可以得到需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移和列偏移分別為4和0,需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的排列方向只可為行排列,需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的長度為8。控制器將以上信息輸送到各個地址計算單元進行物理地址的計算,同時生成地址計算單元的數(shù)據(jù)通路選擇信號以控制其計算的進行。
地址計算單元組中的八個地址計算單元均被控制器使能,開始執(zhí)行物理地址計算操作,如圖6所示,地址計算單元得到控制器送來的地址信息和數(shù)據(jù)通路選擇信號完成以下運算物理地址計算單元參照公式(1)執(zhí)行z0=0+(4+0)×1+1×16=20
z1=0+(4+1)×1+1×16=21z2=0+(4+2)×1+1×16=22z3=0+(4+3)×1+1×16=23z4=0+(4+4)×1+1×16=24z5=0+(4+5)×1+1×16=25z6=0+(4+6)×1+1×16=26z7=0+(4+7)×1+1×16=27其中下標0~7代表地址計算單元的模塊號,每一個物理地址計算單元只執(zhí)行自己對應(yīng)模塊號的運算。
行坐標計算單元參照公式(3)執(zhí)行R(z0)=(4+0)%8×1=4R(z1)=(4+1)%8×1=5R(z2)=(4+2)%8×1=6R(z3)=(4+3)%8×1=7R(z4)=(4+4)%8×1=0R(z5)=(4+5)%8×1=1R(z6)=(4+6)%8×1=2R(z7)=(4+7)%8×1=3其中下標0~7代表地址計算單元的模塊號,每一個行坐標計算單元只執(zhí)行自己對應(yīng)模塊號的運算。
列坐標計算單元由于需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的排列方向只可為行排列,因此所有的列坐標計算單元同時參照公式(4)執(zhí)行C(z)=0%8=1物理地址計算單元、行坐標計算單元、列坐標計算單元的結(jié)果輸送到地址修正單元進行地址的修正。表3為在交錯額度M為8,行跨度X為1的情況下地址修正單元對物理地址計算單元生成的物理地址進行修正表,表3是表1的一個具體實施例。地址的修正參照表3進行
表3例如對于像素B物理地址的修正包括如下步驟根據(jù)像素B在獨立進行交錯的數(shù)據(jù)單元組成的正方形矩陣區(qū)域中所處的行坐標5和列坐標1查表得到+1,即在物理地址計算單元得到的z1=21的基礎(chǔ)上再加1就得到了修正后的像素B所對應(yīng)的物理地址22。
按照同樣的方法,各個地址修正單元分別將修正后的像素A~H的物理地址輸送到相應(yīng)的數(shù)據(jù)選擇器6,如圖6所示,數(shù)據(jù)選擇器6選通信號為0,將地址修正單元的結(jié)果輸出。
如圖14所示,地址計算單元的計算結(jié)果輸送到地址轉(zhuǎn)換模塊。地址轉(zhuǎn)換模塊將計算結(jié)果進行除以8和模8的處理,這里的8是指物理存儲器單元組由8個并行的物理存儲器單元組成,得到下表4
表4如圖14所示,地址轉(zhuǎn)換模塊將轉(zhuǎn)換結(jié)果分別送到相應(yīng)的物理存儲器單元50~57,物理存儲器單元根據(jù)地址信息輸出數(shù)據(jù)到地址置換模塊。
與此同時,地址轉(zhuǎn)換模塊將z0所對應(yīng)的物理存儲器單元號5輸送到地址置換模塊,地址置換模塊中的數(shù)據(jù)控制單元將物理存儲器單元號5轉(zhuǎn)化成為對讀取數(shù)據(jù)選擇單元的選擇器的選擇信號送往讀取數(shù)據(jù)選擇單元,讀取數(shù)據(jù)選擇單元通過這些選擇信號將由物理存儲單元輸入的數(shù)據(jù)進行轉(zhuǎn)換,將物理存儲器單元55的數(shù)據(jù)調(diào)整到輸出的第一個字節(jié),如圖14所示,然后把讀出的一行8個數(shù)據(jù)同過總線送往寄存器。
再來說明對于像素組8的讀取方式,控制器通過對存取指令的解析可以得到需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移和列偏移分別為3和1,需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的排列方向為列排列,需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的長度為5??刂破鲗⒁陨闲畔⑤斔偷礁鱾€地址計算單元進行物理地址的計算,同時生成地址計算單元的數(shù)據(jù)通路選擇信號以控制其計算的進行。
地址計算單元組中的前五個地址計算單元均被控制器使能,開始執(zhí)行物理地址計算操作,如圖6所示,地址計算單元得到控制器送來的地址信息和數(shù)據(jù)通路選擇信號完成以下運算物理地址計算單元參照公式(2)執(zhí)行z0=0+3×1+(1+0)×16=19z1=0+3×1+(1+1)×16=35z2=0+3×1+(1+2)×16=51z3=0+3×1+(1+3)×16=67z4=0+3×1+(1+4)×16=83其中下標0~5代表地址計算單元的模塊號,每一個物理地址計算單元只執(zhí)行自己對應(yīng)模塊號的運算。
行坐標計算單元由于需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的排列方向只可為列排列,因此所有的行坐標計算單元同時參照公式(5)執(zhí)行R(z)=(3%8)×1=3列坐標計算單元參照公式(6)執(zhí)行C(z0)=(1+0)%8=1C(z1)=(1+1)%8=2C(z2)=(1+2)%8=3
C(z3)=(1+3)%8=4C(z4)=(1+4)%8=5物理地址計算單元、行坐標計算單元、列坐標計算單元的結(jié)果輸送到地址修正單元進行地址的修正。地址修正參照表3,例如對于像素I物理地址的修正包括如下步驟根據(jù)像素I在獨立進行交錯的數(shù)據(jù)單元組成的正方形矩陣區(qū)域中所處的行坐標3和列坐標2查表得到+2,即在物理地址計算單元得到的z1=35的基礎(chǔ)上再加2就得到了修正后的像素I所對應(yīng)的物理地址37。
按照同樣的方法,各個地址修正單元分別將修正后的像素M、J、K、L的物理地址輸送到相應(yīng)的數(shù)據(jù)選擇器6,如圖6所示,數(shù)據(jù)選擇器6選通信號為0,將地址修正單元的結(jié)果輸出。
如圖15所示,地址計算單元的計算結(jié)果輸送到地址轉(zhuǎn)換模塊。地址轉(zhuǎn)換模塊將計算結(jié)果進行除以8和模8的處理,這里的8是指物理存儲器單元組由8個并行的物理存儲器單元組成,得到下表5
表5如圖15所示,地址轉(zhuǎn)換模塊將轉(zhuǎn)換結(jié)果分別送到相應(yīng)的物理存儲器單元50~57,物理存儲器單元根據(jù)地址信息輸出數(shù)據(jù)到地址置換模塊。
與此同時,地址轉(zhuǎn)換模塊將z0所對應(yīng)的物理存儲器單元號4輸送到地址置換模塊,地址置換模塊中的數(shù)據(jù)控制單元將物理存儲器單元號4轉(zhuǎn)化成為對讀取數(shù)據(jù)選擇單元的選擇器的選擇信號送往讀取數(shù)據(jù)選擇單元,讀取數(shù)據(jù)選擇單元通過這些選擇信號將由物理存儲單元輸入的數(shù)據(jù)進行轉(zhuǎn)換,將物理存儲器單元54的數(shù)據(jù)調(diào)整到輸出的第一個字節(jié),如圖14所示,然后把讀出的一行5個數(shù)據(jù)同過總線送往寄存器。
至此,這次讀數(shù)據(jù)的操作全部完成。
權(quán)利要求
1.一種矩陣數(shù)據(jù)存取方法,該方法包括下列步驟包含有預(yù)定的高維矩陣數(shù)據(jù)存儲空間,它經(jīng)過多級的降維處理最終可以轉(zhuǎn)化為多個二維矩陣數(shù)據(jù)存儲空間,每一個二維矩陣數(shù)據(jù)存儲空間可以再分解成一系列的相互邏輯獨立的二維子矩陣數(shù)據(jù)存儲空間,所述的二維子矩陣為m×n矩陣,m、n為自然數(shù);數(shù)據(jù)在所述高維矩陣數(shù)據(jù)存儲空間進行存放時采取由高維到低維的方式,在每一個二維子矩陣數(shù)據(jù)存儲空間中進行存放時采取由左到右,由上到下的順序,按照模進行存放的方式;將所述二維子矩陣數(shù)據(jù)存儲空間通過數(shù)據(jù)存儲模式的配置映射到多個物理存儲器中,所述數(shù)據(jù)存儲模式的配置內(nèi)容包括基地址、數(shù)據(jù)元素寬度、行跨度、列跨度和數(shù)據(jù)存儲模式;在存取所述二維子矩陣數(shù)據(jù)存儲空間的數(shù)據(jù)時,指定需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移和列偏移;以及,需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的排列方向;需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的長度;從而根據(jù)以上條件從多個物理存儲器的每一個存儲器中的相應(yīng)地址中讀取需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的數(shù)據(jù);在讀取數(shù)據(jù)時,從物理存儲器中讀出的數(shù)據(jù)要按照需要經(jīng)過數(shù)據(jù)置換以使其滿足需要的讀取數(shù)據(jù)順序;在存入數(shù)據(jù)時,數(shù)據(jù)在送入物理存儲器中需要經(jīng)過數(shù)據(jù)置換以使其滿足物理存儲器中需要的存放順序。
2.如權(quán)利要求1所述的一種矩陣數(shù)據(jù)存取方法,其特征在于所述數(shù)據(jù)存儲模式是行存儲模式,在行存儲模式下,支持的存取的數(shù)據(jù)塊的排列方向為行排列,每次所能進行存取的最大數(shù)據(jù)塊長度為不超過物理存儲器的存儲單元總數(shù)。
3.如權(quán)利要求1所述的一種矩陣數(shù)據(jù)存取方法,其特征在于所述數(shù)據(jù)存儲模式是列存儲模式,在列存儲模式下,支持的存取的數(shù)據(jù)塊的排列方向為列排列,每次所能進行存取的最大數(shù)據(jù)塊長度為不超過物理存儲器的存儲單元總數(shù)。
4.如權(quán)利要求1所述的一種矩陣數(shù)據(jù)存取方法,其特征在于所述數(shù)據(jù)存儲模式是行列交錯存儲模式,在行列交錯存儲模式下,支持的存取的數(shù)據(jù)塊的排列方向為行排列和列排列;在行列交錯存儲模式下,數(shù)據(jù)進行存取時要進行交錯,交錯包括下列步驟(1)、由獨立進行交錯的數(shù)據(jù)單元組成的正方形矩陣區(qū)域,所述正方形區(qū)域是指在行方向上包含的行跨度的個數(shù)等于這個區(qū)域所包含的行數(shù),所述包含的行跨度的個數(shù)為交錯額度,它不超過物理存儲器的存儲單元總數(shù)所包含的行跨度的個數(shù);(2)、將所述正方形區(qū)域中的第一行數(shù)據(jù)次序保持不變;(3)、將所述正方形區(qū)域中的第二行數(shù)據(jù)的最后一個行跨度中的數(shù)據(jù)元素轉(zhuǎn)移到第一個行跨度相應(yīng)位置中去,而原來的從第一個行跨度到倒數(shù)第二個行跨度中的數(shù)據(jù)元素依次向后轉(zhuǎn)移一個行跨度;(4)、將所述正方形區(qū)域中的第三行數(shù)據(jù)的倒數(shù)第二個行跨度中的數(shù)據(jù)元素轉(zhuǎn)移到第一個行跨度相應(yīng)位置中去,最后一個行跨度中的數(shù)據(jù)元素轉(zhuǎn)移到第二個行跨度相應(yīng)位置中去,而原來的從第一個行跨度到倒數(shù)第三個行跨度中的數(shù)據(jù)元素依次向后轉(zhuǎn)移兩個行跨度;(5)、依次類推,每進行到下一行,則從行尾移到行首的數(shù)據(jù)元素增加一個,直到進行到所述正方形區(qū)域的最后一行結(jié)束。
5.如權(quán)利要求4所述的一種矩陣數(shù)據(jù)存取方法,其特征在于所述的交錯方法還包括(6)、所述正方形區(qū)域進行交錯后得出的新的各行可以進行排列組合,經(jīng)過排列組合產(chǎn)生的每一種結(jié)果均可作為本交錯方式的結(jié)果。
6.如權(quán)利要求1-5之一所述的一種矩陣數(shù)據(jù)存取方法,其特征在于所述需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移和列偏移,其中偏移量為正數(shù)或負數(shù)。
7.如權(quán)利要求4或5所述的一種矩陣數(shù)據(jù)存取方法,其特征在于依據(jù)交錯額度和行跨度確定行列交錯存儲模式的修正表方式如下表1
表1上表中,M為交錯額度,X表示行跨度xstride;所述正方形區(qū)域進行交錯后得出的新的各行可以進行排列組合形成新的交錯結(jié)果,對應(yīng)的修正表1也進行相同的各行的排列組合。
8.如權(quán)利要求2所述的一種矩陣數(shù)據(jù)存取方法,其特征在于設(shè)基地址為base,需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移和列偏移分別為x和y,行跨度為xstride,列跨度為ystride;需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊中的各個數(shù)據(jù)在物理存儲器中對應(yīng)的全局物理地址zi計算式為(1)zi=base+(x+i)×xstride+y×ystride (1)其中,i為各個數(shù)據(jù)相對于該數(shù)據(jù)塊的首地址的距離,單位為行跨度;將全局物理地址zi進行除以N和取N的模的運算后得到每一個存儲器單元所需要的物理地址信息,N是指所述物理存儲器的模數(shù)。
9.如權(quán)利要求3所述的一種矩陣數(shù)據(jù)存取方法,其特征在于設(shè)基地址為base,需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移和列偏移分別為x和y,行跨度為xstride,列跨度為ystride;需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊中的各個數(shù)據(jù)在物理存儲器中對應(yīng)的全局物理地址zi計算式為(2)zi=base+x×xstride+(y+i)×ystride (2)其中,i為各個數(shù)據(jù)相對于該數(shù)據(jù)塊的首地址的距離,單位為列跨度;將全局的物理地址zi進行除以N和取N的模的運算后得到每一個存儲器單元所需要的物理地址信息,N是指所述物理存儲器的模數(shù)。
10.如權(quán)利要求7所述的一種矩陣數(shù)據(jù)存取方法,其特征在于設(shè)基地址為base,需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移和列偏移分別為x和y,行跨度為xstride,列跨度為ystride;行列交錯存儲模式的交錯額度為N,需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的各個數(shù)據(jù)在物理存儲器中對應(yīng)的物理地址的計算方法包括以下步驟(1)、計算未經(jīng)修正的數(shù)據(jù)塊中各個數(shù)據(jù)對應(yīng)的全局物理地址zi當(dāng)需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的排列方向為行排列時,計算式為(1)zi=base+(x+i)×xstride+y×ystride (1)當(dāng)需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的排列方向為列排列時,計算式為(2)zi=base+x×xstride+(y+i)×ystride (2)其中i為各個數(shù)據(jù)相對于該數(shù)據(jù)塊的首地址的距離,單位為行跨度;(2)、同時計算數(shù)據(jù)塊的各個數(shù)據(jù)在獨立進行數(shù)據(jù)交錯的正方形區(qū)域中所在位置的行坐標R(zi)和列坐標C(zi)當(dāng)需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的排列方向為行排列時,計算式為(3)、(4)R(zi)=(x+i)%N×xstride(x+i≥0)(N+(x+i)%N)×xstride(x+i<0)---(3)]]>C(Zi)=y%N(y≥0)N+y%N(y<0)---(4)]]>當(dāng)需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的排列方向為列排列時,計算式為(5)、(6)R(Zi)=(x%N)×xtride(x≥)(N+x%N)×xtride(x<0)---(5)]]>C(Zi)=(y+i)%N(y+i≥0)N+(y+i)%N(y+i<0)---(6)]]>(3)、按照不同的交錯方式得到修正表,依據(jù)前面求出的R(zi)和C(zi)得出數(shù)據(jù)塊的各個數(shù)據(jù)在交錯過程中移動的偏移量,利用這個偏移量對zi進行修正,從而得出需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊中的各個數(shù)據(jù)在物理存儲器中對應(yīng)的全局物理地址;(4)、將全局的物理地址zi進行除以N和取N的模的運算后得到每一個存儲器單元所需要的物理地址信息,N是指所述物理存儲器的模數(shù)。
11.如權(quán)利要求6所述的一種矩陣數(shù)據(jù)存取方法,其特征在于所述物理存儲器由多個位寬為字節(jié)的存儲器單元并聯(lián)組成,所述的基地址、數(shù)據(jù)元素寬度、行跨度、列跨度的數(shù)值以字節(jié)大小為單位。
12.一種用于實現(xiàn)如權(quán)利要求1所述的矩陣數(shù)據(jù)存取方法的矩陣數(shù)據(jù)存儲裝置,其特征在于所述的矩陣數(shù)據(jù)存儲裝置的邏輯存儲空間包含有預(yù)定的高維矩陣數(shù)據(jù)存儲空間,所述高維矩陣數(shù)據(jù)存儲空間經(jīng)過多級的降維處理最終可以轉(zhuǎn)化為多個二維矩陣數(shù)據(jù)存儲空間,每一個二維矩陣數(shù)據(jù)存儲空間可以再分解成一系列的相互邏輯獨立的二維子矩陣數(shù)據(jù)存儲空間,所述的二維子矩陣為m×n矩陣,m、n為自然數(shù);所述的矩陣數(shù)據(jù)存儲裝置包括配置寄存器,包括基址寄存器,數(shù)據(jù)元素字節(jié)寬度寄存器,行跨度寄存器,列跨度寄存器,循環(huán)存取次數(shù)寄存器,循環(huán)存取使能寄存器,數(shù)據(jù)存儲模式寄存器;地址計算單元組,由數(shù)量與物理存儲器單元相同的地址計算單元組成,每一個地址計算單元具有設(shè)定的模塊號,所述地址計算單元用于根據(jù)配置寄存器中的內(nèi)容和模塊號,按照控制器選擇的數(shù)據(jù)通路,從控制器讀取需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移和列偏移,生成需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的相應(yīng)位置數(shù)據(jù)所對應(yīng)的物理地址;地址轉(zhuǎn)換模塊,用于把地址計算單元組生成的各路物理地址信息來轉(zhuǎn)化成為各個物理存儲器單元的地址信息,輸送到各個物理存儲器單元;同時根據(jù)模塊號為0的地址計算單元產(chǎn)生的物理地址信息計算需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址所對應(yīng)的物理存儲器單元,并將這一信息輸送到數(shù)據(jù)置換模塊;數(shù)據(jù)置換模塊,用于在讀取數(shù)據(jù)時,按照地址轉(zhuǎn)換模塊產(chǎn)生的需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址所對應(yīng)的物理存儲器單元的信息對物理存儲器單元組產(chǎn)生的一組數(shù)據(jù)進行置換,以使其滿足需要的讀取數(shù)據(jù)順序;以及在寫數(shù)據(jù)時,按照地址轉(zhuǎn)換單元產(chǎn)生的需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址所對應(yīng)的物理存儲器單元的信息對送入物理存儲器單元組的一組數(shù)據(jù)進行置換以使其滿足物理存儲器中需要的存放順序;物理存儲器單元組,由一組并行的物理存儲器單元組成;控制器,用于從程序存儲器中讀取指令,并對指令進行解析轉(zhuǎn)化為對配置寄存器的配置信息,或是將從指令中解析出的需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移和列偏移、需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的排列方向輸送到地址計算單元組,同時根據(jù)需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的長度決定使能地址計算單元的數(shù)量,根據(jù)需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的排列方向選擇地址計算單元的數(shù)據(jù)通路,將這些信息也輸送到地址計算單元組;總線,連接多個物理存儲器單元組的數(shù)據(jù)通道。
13.如權(quán)利要求12所述的矩陣數(shù)據(jù)存儲裝置,其特征在于所述地址計算單元包括物理地址計算單元,用于根據(jù)控制器選擇的數(shù)據(jù)通路和模塊號,以及由控制器輸入的需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移和列偏移,生成需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的相應(yīng)位置數(shù)據(jù)所對應(yīng)的全局物理地址,所述全局物理地址在行存儲模式下將直接輸出,在行列交錯存儲模式下將輸入到地址修正單元進行修正后輸出;行坐標計算單元,用于在行列交錯存儲模式下,根據(jù)自身的模塊號和需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的行偏移,生成需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的相應(yīng)位置數(shù)據(jù)在獨立進行數(shù)據(jù)交錯的正方形區(qū)域中所在的行坐標;列坐標計算單元,用于在行列交錯存儲模式下,根據(jù)自身的模塊號和需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的首地址相對于二維子矩陣數(shù)據(jù)存儲空間的基地址的列偏移,生成需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的相應(yīng)位置數(shù)據(jù)在獨立進行數(shù)據(jù)交錯的正方形區(qū)域中所在的列坐標;地址修正單元,用于在行列交錯存儲模式下,根據(jù)物理地址計算單元生成的全局物理地址、行坐標計算單元生成的數(shù)據(jù)在獨立進行數(shù)據(jù)交錯的正方形區(qū)域中所在的行坐標、列坐標計算單元生成的數(shù)據(jù)在獨立進行數(shù)據(jù)交錯的正方形區(qū)域中所在的列坐標進行修正,最終生成修正后的物理地址;輸出數(shù)據(jù)選擇器,用于選擇是輸出地址修正單元的結(jié)果還是直接輸出物理地址計算單元的計算結(jié)果。
14.如權(quán)利要求12或13所述的矩陣數(shù)據(jù)存儲裝置,其特征在于所述數(shù)據(jù)置換模塊包括數(shù)據(jù)控制單元,用于接受來自地址轉(zhuǎn)換模塊的首字節(jié)所在的物理存儲器單元模塊號,將其轉(zhuǎn)化為對數(shù)據(jù)選擇單元的選擇信號,輸送給讀取數(shù)據(jù)選擇單元或?qū)懭霐?shù)據(jù)選擇單元;讀取數(shù)據(jù)選擇單元,它由與物理存儲器單元數(shù)量相同的一組選擇器組成,每一個選擇器用于從多個物理存儲器單元中根據(jù)數(shù)據(jù)控制單元的選擇信號選擇各個讀出數(shù)據(jù)以便并行輸出需要讀取的數(shù)據(jù)塊的所有數(shù)據(jù);寫入數(shù)據(jù)選擇單元,它由與物理存儲器單元數(shù)量相同的一組選擇器組成,每一個選擇器用于根據(jù)數(shù)據(jù)控制單元的選擇信號選擇要寫入各個物理存儲器單元中的數(shù)據(jù)以便向物理存儲器單元組并行輸出需要寫入的數(shù)據(jù)塊的所有數(shù)據(jù)。
全文摘要
一種矩陣數(shù)據(jù)存取方法,包括下列步驟包含有預(yù)定的高維矩陣數(shù)據(jù)存儲空間,它經(jīng)過多級的降維處理轉(zhuǎn)化為多個二維矩陣數(shù)據(jù)存儲空間,每一個二維矩陣數(shù)據(jù)存儲空間再分解成相互邏輯獨立的二維子矩陣數(shù)據(jù)存儲空間;數(shù)據(jù)在高維矩陣數(shù)據(jù)存儲空間中的存放方式由高維到低維,在每一個二維子矩陣數(shù)據(jù)存儲空間中的存放方式由左到右,由上到下,按照模存放;將二維子矩陣數(shù)據(jù)存儲空間通過數(shù)據(jù)存儲模式的配置映射到多個物理存儲器中,根據(jù)配置條件從多個物理存儲器的每一個存儲器中的相應(yīng)地址中讀取需要存取的二維子矩陣數(shù)據(jù)存儲空間中的數(shù)據(jù)塊的數(shù)據(jù)。以及提供了一種矩陣數(shù)據(jù)存儲裝置。本發(fā)明存儲效率高、能滿足不同類型數(shù)據(jù)存取的要求。
文檔編號G06F12/02GK1971537SQ20051006170
公開日2007年5月30日 申請日期2005年11月25日 優(yōu)先權(quán)日2005年11月25日
發(fā)明者嚴曉浪, 秦興, 劉大可, 葛海通, 羅曉華 申請人:杭州中天微系統(tǒng)有限公司