專利名稱:一種矩陣轉置存儲控制器的制作方法
技術領域:
本發(fā)明涉及一種應用于矩陣轉置的轉置存儲控制器,尤其是一種適合對多種尺寸的矩陣,采用軟硬件協(xié)同設計的方法能靈活選擇轉置算法進行矩陣轉置的轉置存儲控制器;具體地說,是一種適用于片上網(wǎng)絡的矩陣轉置存儲控制器。
背景技術:
矩陣數(shù)據(jù)結構常用工程計算、圖像和信號處理等各種領域,常常涉及到矩陣轉置這種數(shù)據(jù)處理過程。而矩陣轉置的速度對數(shù)據(jù)處理效率有很大的影響。對于大規(guī)模矩陣轉置,如果直接將矩陣讀入高速緩存中,必須頻繁訪問外部存儲器,這樣會極大降低轉置效率。所以一般采用硬件來完成矩陣轉置。使用SDRAM做存儲器的時候,由于SDRAM的列讀寫速率很低,這導致每次訪問內存都消耗大量的時間。而使用SRAM集成規(guī)模小、價格高。如何正確的選擇存儲器并且使它們能高效的完成矩陣轉置是矩陣轉置常見的一個問題。目前,實現(xiàn)矩陣轉置主要使用可編程邏輯器件控制存儲單元實現(xiàn)轉置存儲,或者采用微控制器控制實現(xiàn)轉置存儲;前者實現(xiàn)轉置控制較為復雜,而后者數(shù)據(jù)傳輸速率往往較低。合理的利用這兩種方法共同完成矩陣轉置,可以很好地融合兩種方法的優(yōu)點。同時, 目前實現(xiàn)矩陣轉置,主要是在確定了矩陣大小和存儲器大小后,再合理地選擇轉置方法,所以這些矩陣轉置控制器是對固定大小的矩陣來實現(xiàn)矩陣轉置的,而不能對多種尺寸的矩陣靈活的選擇轉置算法來實現(xiàn)矩陣轉置。片上網(wǎng)絡(Network-on-chip,NoC)是片上系統(tǒng)的一種設計方法?;贜oC的系統(tǒng)能很好地適應在現(xiàn)在復雜片上系統(tǒng)設計中常使用的是全局異步局部同步的時鐘機制。NoC 方法帶來了一種全新的片上通信方法,顯著改善了傳統(tǒng)總線式系統(tǒng)的性能。它被認為是未來集成工藝下多核技術發(fā)展的必然方向。
發(fā)明內容
本發(fā)明的目的是提供一種矩陣轉置存儲控制器,該矩陣轉置存儲控制器采用軟硬件協(xié)同的方法,能對多種尺寸的矩陣,靈活的選擇轉置方法進行轉置,并且能提供高速的數(shù)據(jù)傳輸速率。本發(fā)明的目的是通過以下技術方案來實現(xiàn)的
一種矩陣轉置存儲控制器,其特征在于該矩陣轉置存儲控制器包括處理器、總線、直接內存存取(DMA)、網(wǎng)絡接口(Ni)、存儲單元(SRAM)、中斷和程序存儲器;處理器通過總線與直接內存存取、網(wǎng)絡接口,中斷、程序存儲器進行數(shù)據(jù)傳輸;存儲單元通過直接內存存取與總線及網(wǎng)絡接口連接;網(wǎng)絡接口與總線連接,并通過片上網(wǎng)絡與外部存儲器連接。本發(fā)明中,控制器數(shù)據(jù)的傳輸有數(shù)據(jù)輸入與數(shù)據(jù)輸出兩種過程,它們是在處理器的控制下進行的;數(shù)據(jù)輸入時,在處理器的控制下,DMA完成對數(shù)據(jù)地址的配置,NI在處理器的控制下,從外部存儲器讀取數(shù)據(jù),根據(jù)DMA產(chǎn)生的地址,將數(shù)據(jù)存入SRAM ;數(shù)據(jù)讀入SRAM后,處理器配置DMA,產(chǎn)生地址,將數(shù)據(jù)從SRAM讀出,完成對讀入矩陣的轉置,然后將數(shù)據(jù)通過NI輸出。矩陣轉置由矩陣大小與存儲單元的存儲空間大小的關系決定,分三種模式,分別為
1)SRAM可以存儲一個矩陣所有的數(shù)據(jù);轉置控制器將數(shù)據(jù)讀入,處理器配置DMA,按照行方向將矩陣存入SRAM,然后按照列方向,將矩陣讀出,完成矩陣的轉置;
2)矩陣的數(shù)據(jù)大于SRAM的存儲空間;轉置控制器按照矩陣行數(shù)據(jù)方向讀滿SRAM,接著配置外部存儲器的地址,按列方向,將讀入的數(shù)據(jù)依次輸出到外部存儲器對應的地址;然后讀取原始矩陣下一部分數(shù)據(jù)到SRAM,并且輸出到外部存儲器對應的地址中;重復以上過程,直到矩陣所有的數(shù)據(jù)輸出,完成矩陣的轉置;
3)矩陣的數(shù)據(jù)遠大于SRAM的存儲空間;可以將矩陣分塊,每塊矩陣的大小正好等于 SRAM的存儲空間大?。环中袑K矩陣的數(shù)據(jù)全部讀入到SRAM中;與第二種轉置模式相同, 轉置控制器按列方向輸出SRAM數(shù)據(jù)到外部存儲器中;接著讀取第二塊矩陣,將數(shù)據(jù)按行方向寫入SRAM,按列方向讀出,輸出到外部存儲器中;重復以上過程,直到矩陣所有的數(shù)據(jù)輸出,完成矩陣的轉置。以上對矩陣的轉置有三種算法,對轉置算法的選擇,是由處理器控制DMA完成選擇的。處理器配置的主要內容包括矩陣行數(shù),矩陣列數(shù),矩陣轉置算法選擇。轉置模式3)中,需要確定分塊矩陣的行數(shù)H和列數(shù)P。它們是由數(shù)據(jù)輸入時建立數(shù)據(jù)通道所用時間Tl,與數(shù)據(jù)輸出建立數(shù)據(jù)通道所用時間T2決定的。矩陣轉置建立數(shù)據(jù)通道所用總時間為H*T1+P*T2,由于H*P是固定的,等于SRAM的存儲空間,所以利用不等式
x+y>2^可以計算得出H與P的值。本發(fā)明是一種使用SRAM作為存儲器,使用微控制器與可編程邏輯器件共同實現(xiàn)的轉置存儲。選擇SRAM作為存儲器,控制簡單,讀寫操作容易,不存在列讀寫速度比行讀寫速度慢的問題,在處理器的控制下,能充分發(fā)揮SRAM作為存儲器的優(yōu)勢。本發(fā)明使用處理器控制完成矩陣轉置,所以能靈活的選擇轉置方法,適用于對各種大小的矩陣進行轉置,并且具有很好的擴展性。同時,本發(fā)明使用DMA作為數(shù)據(jù)通道,能提供高速的數(shù)據(jù)傳輸速率。本發(fā)明可以通過網(wǎng)絡接口掛接在片上網(wǎng)絡路由器上,如圖1所示。通過片上網(wǎng)絡與外部存儲器建立數(shù)據(jù)通道,進行數(shù)據(jù)傳輸。本發(fā)明是一種適用于片上網(wǎng)絡的矩陣轉置存儲控制器。
圖1是本發(fā)明掛接在片上網(wǎng)絡結構上的示意圖; 圖2是本發(fā)明的結構示意圖3是本發(fā)明轉置存儲控制器的數(shù)據(jù)流圖; 圖4是轉置功能實現(xiàn)圖; 圖5是轉置算法一原理圖; 圖6是轉置算法二原理圖; 圖7是轉置算法二的數(shù)據(jù)輸出流程圖; 圖8是轉置算法三原理圖。
具體實施例方式下面結合附圖和實施例對本發(fā)明作進一步說明。一種適用于片上網(wǎng)絡的矩陣轉置存儲控制器,如圖2所示,該矩陣轉置存儲控制器包括處理器1,總線2,直接內存存取(DMA) 3,網(wǎng)絡接口(NI)4,SRAM5,中斷6,程序存儲器 7;該轉置控制器采用總線結構,嵌入式處理器1通過總線協(xié)議與DMA 3、NI 4,中斷6,程序存儲器7等功能模塊進行通訊;其中SRAM 5通過DMA 3與其他模塊相連;NI 4在連接到總線2的同時,一端直接與DMA 3相連,另一端與外部存儲器連接。該轉置存儲控制器使用 ARM核作為處理器,選用AHB總線協(xié)議。圖3是本發(fā)明轉置存儲控制器的數(shù)據(jù)流圖;數(shù)據(jù)的傳輸有數(shù)據(jù)輸入與數(shù)據(jù)輸出兩種過程,它們是在處理器的控制下進行的。數(shù)據(jù)輸入的時候,在ARM核的控制下,DMA完成對數(shù)據(jù)地址的配置,NI模塊在ARM的配置控制下,從外部存儲器讀取數(shù)據(jù),根據(jù)DMA產(chǎn)生的地址,將數(shù)據(jù)存入SRAM ;數(shù)據(jù)讀入SRAM以后,ARM核配置DMA,產(chǎn)生地址,將數(shù)據(jù)從SRAM讀出,完成對讀入矩陣的轉置,然后將數(shù)據(jù)通過NI輸出。通過對數(shù)據(jù)流的介紹,可以看出矩陣的轉置主要是,在處理器的控制下,DMA產(chǎn)生地址,實現(xiàn)對SRAM地址的控制,完成矩陣的轉置,圖4是該轉置功能實現(xiàn)圖。數(shù)據(jù)輸入時, DMA產(chǎn)生地址,將數(shù)據(jù)存入相應SRAM相應的地址中。這個過程中,SRAM的地址是從地址0 開始依次累加。數(shù)據(jù)輸出的時候,由ARM控制DMA產(chǎn)生地址,從SRAM中讀取相應的數(shù)據(jù),完成矩陣的轉置。所以,矩陣轉置的控制主要是在數(shù)據(jù)輸出時,由DMA產(chǎn)生的地址控制的。矩陣轉置分三種模式,是由矩陣大小與SRAM的存儲空間大小的關系決定的,選擇 SRAM大小為64Mbit,每個數(shù)據(jù)為64bit,這樣SRAM可以存儲IM數(shù)據(jù),矩陣的行數(shù)為C,列數(shù)為R。矩陣轉置分三種模式,是由矩陣大小決定的,分別為
1)SRAM可以存儲一個矩陣所有的數(shù)據(jù)4K*256 = IM ;
如圖5所示,C=4K, R=256,一個矩陣可以完全讀入。轉置控制器將數(shù)據(jù)讀入后,處理器配置DMA,按照行方向將矩陣存入SRAM,這時候按照列方向,將矩陣讀出,完成了對矩陣的轉置。2)矩陣的數(shù)據(jù)大于SRAM的存儲空間4K*1K=4M>1M,C=4K,R=IK ;此時,轉置控制器需要多次從外部存儲器讀取數(shù)據(jù),多次輸出,才能完成轉置。如圖6所示,下面具體介紹該怎樣完成矩陣轉置。a, SRAM可以存儲IM個數(shù)據(jù),因此首先只能順次讀取矩陣IM個數(shù)據(jù)。矩陣的列數(shù)為R=1K,讀滿SRAM需要N行數(shù)據(jù),R*N=M。即首先讀入N=IK行數(shù)據(jù)到SRAM。b,轉置控制器將SRAM中第一列數(shù)據(jù)輸出到外部存儲器中。配置外部存儲的地址是從A開始存儲,順序存儲N=IK個數(shù)據(jù)。接著,控制器重新配置給外部存儲器地址,輸出 SRAM中第二列N個數(shù)據(jù)到外部存儲器中。這時,外部存儲器的地址要從A加上原矩陣列數(shù)開始,即A+R,依次加一,存儲該列數(shù)據(jù)。c,后面的數(shù)據(jù)也進行以上傳輸,重復R=IK次后,轉置控制器將SRAM中的數(shù)據(jù)全部輸出到外部存儲器中。數(shù)據(jù)輸出的流程如圖7所示。d,接著,轉置控制器從原始矩陣按照行方向讀取第二組數(shù)據(jù),也就是原始矩陣的第N+1行到第2N行之間的數(shù)據(jù),將SRAM寫滿。數(shù)據(jù)讀入以后,開始重復以上數(shù)據(jù)輸出過程,將數(shù)據(jù)輸出到外部存儲器。其中,每列數(shù)據(jù)存儲到外部存儲器時,地址緊接著上次輸出數(shù)據(jù)的該列的最后一個數(shù)據(jù)開始。直到數(shù)據(jù)全部輸出。e,重復以上過程,直到矩陣所有的數(shù)據(jù)輸出,完成矩陣的轉置。3)矩陣的數(shù)據(jù)遠大于SRAM的存儲空間4K*8K 1M, C=4K, R=8K ;矩陣過大的時候,尤其是矩陣的列數(shù)R過大時,多次訪問外部存儲器建立數(shù)據(jù)通道,會消耗大量的時間。 所以,轉置控制器可以將矩陣分塊,完成矩陣轉置。如圖8所示,下面具體介紹該轉置算法。a,將矩陣分塊,每塊矩陣的大小正好等于SRAM的存儲空間大小,分塊矩陣行數(shù)為 N,列數(shù)為P,N*P=M。分塊矩陣的行數(shù)H和列數(shù)P的計算方法會在下面介紹。b,分行將塊矩陣的數(shù)據(jù)讀入到SRAM中。轉置控制器首先讀取第一行從d(0,0)到 d(0,p-l)的P個數(shù)據(jù),然后再讀取第二行的d(l,0) ilj d (1,, P-1)的P個數(shù)據(jù)……直到第N 行數(shù)據(jù),寫滿SRAM。c,與第二種轉置模式相同,轉置控制器按列方向輸出SRAM中的數(shù)據(jù)到外部存儲器中。d,接著讀取第二塊矩陣,從每列的第P+1個數(shù)據(jù)開始,直到第2P個數(shù)據(jù)。第一行是從d (0,P)到d (0,2P-1),第二行從d (1,P)到d (1,2P-1)……直到第N行從d(N-l,P)到d(N-l,2P-l)。重復以上過程,將數(shù)據(jù)按行方向寫入SRAM。數(shù)據(jù)輸出也與上面相同,每列數(shù)據(jù)在外部存儲器中的地址都是承接前一組進行的。e,重復以上過程,直到矩陣所有的數(shù)據(jù)輸出,完成矩陣的轉置。在第三種轉置算法中,需要計算分塊矩陣的行數(shù)和列數(shù)。它們是由數(shù)據(jù)輸入時建立數(shù)據(jù)通道所用時間T1,與數(shù)據(jù)輸出時建立數(shù)據(jù)通道所用時間T2決定的。分塊矩陣從外部存儲器讀取每行數(shù)據(jù)時,都需要建立數(shù)據(jù)通道,輸出每列數(shù)據(jù)時也要建立數(shù)據(jù)通道,每個分塊矩陣所以矩陣轉置建立數(shù)據(jù)通道所用總時間為η* \+Ρ*Τ2。最合適的H和P是使得
Η* \+Ρ*Τ2最小的解。由于Η*Ρ=1Μ,是固定的,所以利用不等式1+^^2^ ;可以計算得出H
與P的值,可以取整得到最合適的結果。取1\=700個時間周期,T2=400個時間周期為例,得至Ij H=IK, P=IK0以上共介紹了三種矩陣轉置算法。在選擇轉置算法時根據(jù)矩陣的大小,正確的選擇轉置算法進行轉置。本發(fā)明中對轉置算法的選擇,是由處理器控制DMA完成選擇的。處理器配置的主要內容包括矩陣行數(shù),矩陣列數(shù),以及矩陣轉置算法選擇。DMA根據(jù)處理器配置的算法選擇,對矩陣給出正確的轉置方法。下面計算三種情況下,轉置所用的時間。(1)4財256矩陣,轉置時間包括一次讀數(shù)據(jù)建立數(shù)據(jù)通道,一次寫數(shù)據(jù)建立數(shù)據(jù)通道,以及輸入輸出數(shù)據(jù)所用時間,所以需要的時鐘周期為
Ν1=2Μ+700+400
(2)4K*1K矩陣,轉置控制器需要往SRAM輸入輸出數(shù)據(jù)八次。每次過程,消耗的時間包括一次讀數(shù)據(jù)建立數(shù)據(jù)通道,IK次寫數(shù)據(jù)建立數(shù)據(jù)通道,以及輸入輸出數(shù)據(jù),所以需要的時鐘周期為
Ν2=(2Μ+700+400*1Κ)*4
(3)4Κ*8Κ矩陣,轉置控制器需要向SRAM輸入輸出數(shù)據(jù)32次。每次過程,消耗的時間包括IK讀數(shù)據(jù)建立數(shù)據(jù)通道,IK次寫數(shù)據(jù)建立數(shù)據(jù)通道,以及輸入輸出數(shù)據(jù),所以需要的時鐘周期為
N3=(2M+700*1K+400*1K)*32
本發(fā)明通過網(wǎng)絡接口掛接在片上網(wǎng)絡路由器上,通過片上網(wǎng)絡與外部存儲器建立數(shù)據(jù)通道,進行數(shù)據(jù)傳輸。 本發(fā)明是一種使用SRAM作為存儲器,使用微控制器與可編程邏輯器件共同實現(xiàn)的轉置存儲。選擇SRAM作為存儲器,控制簡單,讀寫操作容易,不存在列讀寫速度比行讀寫速度慢的問題,在處理器的控制下,能充分發(fā)揮SRAM作為存儲器的優(yōu)勢。本發(fā)明使用處理器控制完成矩陣轉置,所以能靈活的選擇轉置方法,適用于對各種大小的矩陣進行轉置,并且具有很好的擴展性。同時,本發(fā)明使用DMA作為數(shù)據(jù)通道,能提供高速的數(shù)據(jù)傳輸速率。
權利要求
1.一種矩陣轉置存儲控制器,其特征在于該矩陣轉置存儲控制器包括處理器(1)、總線O)、直接內存存取(3)、網(wǎng)絡接口 0)、存儲單元(5)、中斷(6)和程序存儲器(7);處理器⑴通過總線⑵與直接內存存取(3)、網(wǎng)絡接口 ,中斷(6)、程序存儲器(7)進行數(shù)據(jù)傳輸;存儲單元( 通過直接內存存取C3)與總線( 及網(wǎng)絡接口(4)連接;網(wǎng)絡接口(4)與總線(2)連接,并通過片上網(wǎng)絡與外部存儲器連接。
2.根據(jù)權利要求1所述的矩陣轉置存儲控制器,其特征在于處理器(1)對數(shù)據(jù)傳輸進行控制,數(shù)據(jù)傳輸包括數(shù)據(jù)輸入和數(shù)據(jù)輸出兩種過程;數(shù)據(jù)輸入時,在處理器(1)的控制下,直接內存存取C3)完成對數(shù)據(jù)地址的配置;網(wǎng)絡接口(4)從外部存儲器讀取數(shù)據(jù),并根據(jù)直接內存存取C3)產(chǎn)生的地址,將數(shù)據(jù)存入存儲單元(5);數(shù)據(jù)讀入數(shù)據(jù)存入存儲單元(5)后,處理器(1)配置直接內存存取C3)產(chǎn)生地址,將數(shù)據(jù)從存儲單元( 讀出,完成對讀入矩陣的轉置,并將數(shù)據(jù)通過網(wǎng)絡接口(4)輸出。
3.根據(jù)權利要求1所述的矩陣轉置存儲控制器,其特征在于矩陣轉置由矩陣大小與存儲單元(5)的存儲空間大小的關系決定,分三種模式,分別為1)存儲單元( 存儲一個矩陣所有的數(shù)據(jù);轉置控制器將數(shù)據(jù)讀入,處理器(1)配置直接內存存取(3),按照行方向將矩陣存入存儲單元(5),然后按照列方向,將矩陣讀出,完成矩陣的轉置;2)矩陣的數(shù)據(jù)大于存儲單元(5)的存儲空間;轉置控制器按照矩陣行數(shù)據(jù)方向讀滿存儲單元(5),接著配置外部存儲器的地址,按列方向,將讀入的數(shù)據(jù)依次輸出到外部存儲器對應的地址;然后讀取原始矩陣下一部分數(shù)據(jù)到存儲單元(5),并且輸出到外部存儲器對應的地址中;重復以上過程,直到矩陣所有的數(shù)據(jù)輸出,完成矩陣的轉置;3)矩陣的數(shù)據(jù)遠大于存儲單元(5)的存儲空間;可以將矩陣分塊,每塊矩陣的大小正好等于存儲單元(5)的存儲空間大小;分行將塊矩陣的數(shù)據(jù)全部讀入到存儲單元(5)中; 與2)轉置模式相同,轉置控制器按列方向輸出存儲單元( 數(shù)據(jù)到外部存儲器中;接著讀取第二塊矩陣,將數(shù)據(jù)按行方向寫入存儲單元(5),按列方向讀出,輸出到外部存儲器中; 重復以上過程,直到矩陣所有的數(shù)據(jù)輸出,完成矩陣的轉置。
4.根據(jù)權利要求3所述的矩陣轉置存儲控制器,其特征在于處理器(1)控制直接內存存取C3)完成對轉置算法的選擇;處理器(1)配置的內容包括矩陣行數(shù),矩陣列數(shù),矩陣轉置算法選擇。
5.根據(jù)權利要求3所述的矩陣轉置存儲控制器,其特征在于在轉置模式3)中,確定分塊矩陣的行數(shù)H和列數(shù)P ;分塊矩陣的行數(shù)H和列數(shù)P是由數(shù)據(jù)輸入時建立數(shù)據(jù)通道所用時間T1,與數(shù)據(jù)輸出建立數(shù)據(jù)通道所用時間T2決定的;矩陣轉置建立數(shù)據(jù)通道所用總時間為Η* \+Ρ*Τ2,Η*Ρ是固定的,并等于存儲單元SRAM(5)的存儲空間,利用不等式x+jr>2^;得出H與P的值;并取整得到最合適的結果。
全文摘要
本發(fā)明公開了一種矩陣轉置存儲控制器,該矩陣轉置存儲控制器包括處理器、總線、直接內存存取、網(wǎng)絡接口、存儲單元、中斷和程序存儲器;處理器通過總線與直接內存存取、網(wǎng)絡接口,中斷、程序存儲器進行數(shù)據(jù)傳輸;存儲單元通過直接內存存取與總線及網(wǎng)絡接口連接;網(wǎng)絡接口與總線連接,并通過片上網(wǎng)絡與外部存儲器連接。本發(fā)明選擇SRAM作為存儲器,控制簡單,讀寫操作容易,在處理器的控制下,能充分發(fā)揮SRAM作為存儲器的優(yōu)勢。本發(fā)明提供了三種轉置模式;使用處理器控制完成矩陣轉置,能靈活地選擇轉置方法,適用于對各種大小的矩陣進行轉置,并具有很好的擴展性。同時,本發(fā)明使用DMA作為數(shù)據(jù)通道,可提供高速的數(shù)據(jù)傳輸速率。本發(fā)明適用于片上網(wǎng)絡中。
文檔編號G06F13/28GK102508803SQ201110393660
公開日2012年6月20日 申請日期2011年12月2日 優(yōu)先權日2011年12月2日
發(fā)明者何書專, 李麗, 沙金, 潘紅兵, 王佳文, 鄭維山, 鄭艷麗 申請人:南京大學