TWI570573B - 矩陣轉置電路 - Google Patents

矩陣轉置電路 Download PDF

Info

Publication number
TWI570573B
TWI570573B TW103123490A TW103123490A TWI570573B TW I570573 B TWI570573 B TW I570573B TW 103123490 A TW103123490 A TW 103123490A TW 103123490 A TW103123490 A TW 103123490A TW I570573 B TWI570573 B TW I570573B
Authority
TW
Taiwan
Prior art keywords
matrix
array
register
input
displacement direction
Prior art date
Application number
TW103123490A
Other languages
English (en)
Other versions
TW201602808A (zh
Inventor
顏志旭
周凡迪
Original Assignee
財團法人工業技術研究院
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 財團法人工業技術研究院 filed Critical 財團法人工業技術研究院
Priority to TW103123490A priority Critical patent/TWI570573B/zh
Priority to CN201410459887.0A priority patent/CN105282556A/zh
Priority to US14/662,246 priority patent/US9613669B2/en
Publication of TW201602808A publication Critical patent/TW201602808A/zh
Application granted granted Critical
Publication of TWI570573B publication Critical patent/TWI570573B/zh

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/04Arrangements for selecting an address in a digital store using a sequential addressing device, e.g. shift register, counter
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • G11C7/1012Data reordering during input/output, e.g. crossbars, layers of multiplexers, shifting or rotating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/78Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor
    • G06F7/785Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using a RAM
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C19/00Digital stores in which the information is moved stepwise, e.g. shift registers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C19/00Digital stores in which the information is moved stepwise, e.g. shift registers
    • G11C19/28Digital stores in which the information is moved stepwise, e.g. shift registers using semiconductor elements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C19/00Digital stores in which the information is moved stepwise, e.g. shift registers
    • G11C19/38Digital stores in which the information is moved stepwise, e.g. shift registers two-dimensional, e.g. horizontal and vertical shift registers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/106Data output latches
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1087Data input latches

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Complex Calculations (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)

Description

矩陣轉置電路
本揭露是有關於一種矩陣轉置電路,可以應用於矩陣轉置。
在影像及視訊訊號處理的領域裡面,有許多演算法都需要使用到矩陣乘法。以AVC/H.264(Advanced Video Coding,AVC)的編碼為例,其視訊編碼技術中的一個編碼工具,在實現上需要使用到4/8點的2D DCT/IDCT(Discrete Cosine Transform,DCT)計算。另外,在HEVC(High Efficiency Video Coding,HEVC)的編碼中,其甚至使用到更大的16/32點的2D DCT/IDCT計算。
一些VLSI(Very Large Scale Integration,VLSI)的文獻提出使用一維(1D)的架構來實現二維(2D)的DCT/IDCT運算,其例如使用一個4x4架構的位移暫存器來進行4點的DCT計算。另外也文獻有提出使用多個儲存區塊(bank)的記憶體,例如隨機存取記體(Random Access Memory,RAM)模組架構,來完成4/8/16/32點的DCT/IDCT計算。而前述技術使用暫存器陣列或多個隨機存取記體 模組架構來完成DCT/IDCT的運算的過程中,其都需要大量的矩陣轉置處理。
能有效率地完成矩陣轉置處理的電路,是本技術領域需要研發的課題其一。
本揭露的一實施範例提供一種矩陣轉置電路,對具有N×N維度的一矩陣,輸出該矩陣的轉置矩陣。該矩陣轉置電路包括:一輸入暫存器陣列,具有m×N的矩陣結構;一記憶體,具有b組儲存區塊;以及一輸出暫存器陣列,具有N×n的矩陣結構。其中,N、m、n、b都是2的冪次方的整數,m與n可以整除N,且N=n×m×b。該矩陣分割為多個次矩陣,每一個該次矩陣具有m×n陣元,每一個該次矩陣的多個陣元構成當作一個Y陣元以構成一個Y矩陣。該Y矩陣依照該b值區分為b個區塊,對應該b組儲存區塊分別儲存該b個區塊的該多個次矩陣的多個陣元資料。該輸入暫存器陣列具有一第一位移方向與一第二位移方向,以該第一位移方向接收輸入陣元資料,以該第二位移方向輸出資料,以對應儲存到該b組儲存區塊。其中,該輸出暫存器陣列具有一第一位移方向與一第二位移方向,以該第一位移方向從該b組儲存區塊取得陣元資料,以該第二位移方向輸出對應該轉置矩陣的陣元資料。
在本揭露的一實施範例的矩陣轉置電路,該輸入暫存器陣列由該第一位移方向依序接收該矩陣的m個1×N列向量。在填 滿該輸入暫存器陣列後,改為該第二位移方向將該些陣元儲存到對應的該b組儲存區塊。其中由於已儲存到該b組儲存區塊所釋放的暫存空間,同時繼續接收該矩陣後續的N-m個1×N列向量。
在本揭露的一實施範例的矩陣轉置電路,該輸入暫存器陣列包含m×(N/n)個暫存器。該輸入暫存器陣列的每一個該暫存器的輸入與輸出都是n個資料口,且該m×(N/n)個暫存器分為b組次暫存器陣列,該次暫存器陣列有mxm個該暫存器。該輸入暫存器陣列的每一組該次暫存器陣列皆可以選擇該第一位移方向或是該第二位移方向,其中每當由該第一位移方向輸入資料且填滿整個該輸入暫存器陣列後,就切換到該第二位移方向。該b組次暫存器陣列從該第二位移方向輸出的資料,分別存放到該b組儲存區塊。
在本揭露的一實施範例的矩陣轉置電路,該輸出暫存器陣列由該第一位移方向從該b組儲存區塊讀取資料。當填滿該輸入暫存器陣列後,改變為該第二位移方向輸出對應該轉置矩陣的陣元資料,其中由於已輸出資料所釋放的暫存空間,同時繼續從該b組儲存區塊讀取資料。
在本揭露的一實施範例的矩陣轉置電路,其中該輸出暫存器陣列包含(N/m)×n個暫存器。該輸出暫存器陣列的每一個該暫存器的輸入與輸出都是m個資料口,且該(N/m)×n個暫存器共分為b組次暫存器陣列,每一組該次暫存器陣列有n×n個該暫存器。該輸出暫存器陣列的每一組該暫存器,皆可以選擇該第一位移方向 或是該第二位移方向。每當由該第一位移方向輸入資料且資料填滿整個輸出暫存器陣列後,就切換到該第二位移方向,從b個RAM模組同時讀出b筆資料,分別推入該b組次暫存器陣列內。
本揭露提出的將矩陣處理行與列變換的電路,其包含暫存器和記憶體模組的組合架構。當一個矩陣的資料以行/列向量為單位,逐一輸入到裝置內後,經過此裝置內部架構的排列,此裝置會改以列/行向量的方式進行矩陣資料的輸出。
為讓本揭露的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
90‧‧‧矩陣轉置電路
100‧‧‧矩陣
102‧‧‧次矩陣
104‧‧‧輸入暫存器陣列
106‧‧‧輸出暫存器陣列
200‧‧‧記憶體
110、112‧‧‧暫存器組
114、116‧‧‧暫存器
120、122‧‧‧儲存區塊
圖1是依照本揭露的一實施範例,對於一個N×N矩陣的規劃示意圖。
圖2a~2d是依照本揭露的一實施範例,對於2個RAM模組的4種儲存的規劃示意圖。
圖3是依照本揭露的一實施範例,對於一個N×N矩陣的另一種規劃示意圖。
圖4是依照本揭露的一實施範例,矩陣轉置電路的結構示意圖。
圖5是依照本揭露的一實施範例,輸入暫存器陣列的每一組暫存器在兩個位移方向的位移方式示意圖。
圖6是依照本揭露的一實施範例,輸出暫存器陣列的每一組暫存器在兩個位移方向的位移方式示意圖。
圖7是依照本揭露的一實施範例,根據圖2a的規劃,矩陣的切割結構。
圖8是依照本揭露的一實施範例,N=16,m=2,n=4,b=2的輸入暫存器陣列架構。
圖9是依照本揭露的一實施範例,N=16,m=2,n=4,b=2的輸入暫存器陣列內存值示意圖。
圖10是依照本揭露的一實施範例,N=16,m=2,n=4,b=2的輸入暫存器陣列內存值示意圖。
圖11是依照本揭露的一實施範例,N=16,m=2,n=4,b=2的輸入暫存器陣列內存值示意圖。
圖12是依照本揭露的一實施範例,矩陣在RAM0和RAM1中的資料擺放示意圖。
圖13是依照本揭露的一實施範例,矩陣X以2×1切割後的編號示意圖。
圖14是依照本揭露的一實施範例,以圖7表示法與圖13表示法的部分對照關係示意圖。
圖15是依照本揭露的一實施範例,以圖7表示法與圖13表示法的部分對照關係,對於輸出暫存器陣列106的一組暫存器陣列的示意圖。
圖16是依照本揭露的一實施範例,圖7表示法與圖13表示法的部分對照關係示意圖。
圖17是依照本揭露的一實施範例,N=16,m=2,n=4,b=2的輸出暫存器陣列內存值示意圖。
本揭露技術可以對一個N×N的矩陣,進行轉置運算,其中N為2的冪次方。在操作上,例如可將行向量的輸入,以列向量輸出,反之亦然。本揭露接下來的內容,皆以列向量轉行向量作為實施範例,以進行說明。以下舉多個實施範例來說明,但是本揭露不限於舉多個實施範例。
圖1是依照本揭露的一實施範例,對於一個N×N矩陣的規劃示意圖。對於一個需要被轉置的方形矩陣100,其例如是N×N的結構。對於此矩陣100,以m×n的群組再分為多個次矩陣102,則可以得到一個(N/m)×(N/n)的矩陣Y,其如圖1中由粗線所構的矩陣Y,其中m與n也是2的冪次方,可整除N,且m,n<N。在圖1的實施範例,N=16,m=2,n=4。所以矩陣Y的每個陣元(entry)yi,j都是代表一個m×n的次矩陣102。次矩陣102包含m×n個陣元xi,j,xi,j是矩陣100的陣元,矩陣100也可以稱為矩陣X。
上述是關於矩陣100的再一規劃而得到矩陣Y。至於本揭露所使用的記憶體的規劃如下說明。記憶體利如是利用b個RAM模組來組成,以存放矩陣Y,因此,b值需要滿足n×m×b=N的條件,且b也是2的冪次方。而b個RAM的總容量至少可以存放矩陣Y,且記憶體位址的定址單位為1個yi,j,也就是m×n個xi,j
整個矩陣Y存放到b個RAM模組的儲存格式,必須同時遵守下列規則:
規則1. 每列的N/n個陣元,需均分為b等分,每一等分個別存放於b個RAM模組的其一。由於可以同時對b個RAM進行寫入,因此,需m個步驟來將一列資料存到RAM模組中。
規則2. 每行的N/m個陣元,需均分為b等分,每一等分個別存放於b個RAM模組的其一。由於可以同時對b個RAM進行讀取,因此,需n個步驟來將一行資料從RAM模組中讀取出來。
以圖1的N×N矩陣100為例,對於N=16的矩陣100,令n=4、m=2、b=2。則可以得到一個矩陣Y,其為8×4的結構,每個陣元代表一個次矩陣102,而有8(2*4)個陣元。在以圖1所示的結構是矩陣100與矩陣Y的重疊圖,其中細線框的部分表示為矩陣100的陣元xi,j,粗線框為矩陣Y的陣元yi,j,一個陣元yi,j代表矩陣100的一個次矩陣102。
又,因為有2個RAM,也就是b=2,則yi,j存放到RAM模組,是依照規則1和規則2的描述。矩陣Y儲存在2個RAM模組內的規劃,至少可以有下列4種儲存的規劃,但可以同時滿足規則1和規則2的規劃不限於所舉的4種舉例。
圖2a~2d是依照本揭露的一實施範例,對於2個RAM模組的4種儲存的規劃示意圖。在圖2a~2d所示的四種規劃圖案(pattern),同樣底色的陣元,表示是存放在同一個RAM模組中。依照規則1和規則2的描述,這個實施例,存放矩陣Y的一列向量到RAM中,需要m=2個步驟;從RAM讀取Y的一行向量資料,需要n=4個步驟,每一個規劃的步驟都一致。
參閱圖2a,矩陣Y是8×4的矩陣,且以Yi,j(=1,2,..,,8,j=1,2,3,4)代 表陣元,依照b=2的條件區分的第一個區塊的陣元集(entry set)是{Yi,j,i=1-4,j=1,2;以及Yi,j,i=5-8,j=3,4},及第二個區塊的陣元是{Yi,j,i=1-4,j=2,3;以及Yi,j,i=5-8,j=1,2}。
參閱圖2b,其第一個區塊的陣元集是{Yi,j,i=1,2,j=1,2;Yi,j, i=3,4,j=3,4;Yi,j,i=5,6,j=1,2;以及Yi,j,i=7,8,j=3,4},及其餘的第二個區塊是{Yi,j,i=1,2,j=3,4;Yi,j,i=3,4,j=1,2;Yi,j,i=5,6,j=3,4;以及Yi,j,i=7,8,j=1,2}。
參閱圖2c,其第一個區塊的陣元集是{Yi,j,i=1,j=1,2;Yi,j, i=2,j=3,4;Yi,j,i=3,j=1,2;Yi,j,i=4,j=3,4;Yi,j,i=5,j=1,2;Yi,j,i=6,j=3,4;Yi,j,i=7,j=1,2;Yi,j,i=8,j=3,4},及其餘的第二個區塊是{Yi,j,i=1,j=3,4;Yi,j,i=2,j=1,2;Yi,j,i=3,j=3,4;Yi,j,i=4,j=1,2;Yi,j,i=5,j=3,4;Yi,j,i=6,j=1,2;Yi,j,i=7,j=3,4;Yi,j,i=8,j=1,2}。
參閱圖2d,其第一個區塊的陣元集是{Yi,j,i=1-4 j=1,3;Yi,j, i=5-8,j=2,4},及其餘的第二個區塊是{Yi,j,i=1-4 j=2,4;Yi,j,i=5-8,j=1,3}。
圖3是依照本揭露的一實施範例,對於一個N×N矩陣的 另一種規劃示意圖。參閱圖3,其N=16且n=4、m=4、b=1,則可以得到一個矩陣Y,是4×4的結構。矩陣Y的每一陣元對應矩陣100的一個次矩陣102,具有在矩陣100的16(4×4)個陣元xi,j。於本實施範例,其只需要一個RAM模組,因此都是單一顏色。而儲存Y的一列向量到RAM模組,以及讀取Y的一行向量都需要4個步驟。
依照上面的兩個實施範例,本揭露透過b個RAM模組,以及矩 陣Y的儲存規劃,可以達到矩陣Y的矩陣轉置。矩陣Y的每一列向量,可以用m個步驟存到b個RAM模組。再由n個步驟,即可從b個RAM模組讀出一個行向量。以矩陣100的角度來看,對b個RAM模組讀取一條矩陣Y的行向量,等同於讀取矩陣100的n條行向量。又以上述的實施範例,每讀取一條矩陣Y的行向量,等同讀取了矩陣100的4條行向量。透過這個方式,亦等於完成矩陣100的轉置。因此,透過b個RAM模組以及重新定義矩陣的存取單元,來完成N×N矩陣的轉置。
本揭露的陣轉置電路,其輸入與輸出都是矩陣100的N個陣元。也就是將矩陣100的N條列向量逐條輸入到本裝置,然後將N條行向量逐條輸出。也就是說,將矩陣100的m條列向量存入到b個RAM模組,之後再將n條行向量從b個RAM模組讀出。因此,為了達到N個陣元(矩陣X的列向量)進,而N個陣元(矩陣X的行向量)出功能,本揭露使用了輸入陣存器陣列,與輸出暫存器陣列。
圖4是依照本揭露的一實施範例,矩陣轉置電路的結構示意圖。參閱圖4,本實施範例的矩陣轉置電路90,包含總容量至少可存放N×N矩陣100的記憶體200,其包括b個RAM模組當作b個儲存區塊,RAM0,RAM1,…,RAM b-1。矩陣轉置電路90還包含一組m×N的輸入暫存器陣列104以及一組N×n的輸出暫存器陣列106。參數N、m、n、b皆為2的冪次方,且符合m×n×b=N。矩陣100的規劃如圖1的描述,以次矩陣102規劃出矩陣Y的結構,對應記憶體200的b個RAM模組,每一個RAM模組的一個記憶體位址可以存放m×n個陣元xi,j
輸入暫存器陣列104是用來接收來自矩陣100的列向量,並將其 轉換為矩陣Y的陣元,然後儲存到記憶體200的b個RAM模組。輸出暫存器陣列106是用來接收從記憶體200的b個RAM模組讀取的矩陣Y的陣元,進一步轉換成矩陣100的行向量。
輸入暫存器陣列104的資料接收與傳送皆為矩陣100的N個陣元,此功能單元為一個緩衝區,如此可以將Y矩陣的陣元單位儲存到記憶體200的b個RAM模組中。輸入暫存器陣列104的運作步驟如下:
1.將矩陣100的1×N列向量{xr,0,xr,1,…,xr,m-1},逐一推入m×N的輸入暫存器陣列104之中,其持續m個步驟,將m×N的輸入暫存器陣列104填滿。前面的xr,i=0,1,…,m-1代表矩陣100的一列的陣元。
2.接下來的N-m個步驟,將剩餘的{xr,m,xr,m+1,..,xr,n-1}等列向量,依序推入輸入暫存器陣列104。同時將b個陣元yi,j也儲存到b個RAM模組之中。由於一個陣元yi,j有m×n個陣元xi,j,一次儲存到RAM模組的陣元個數有b×m×n個,其數值是N,剛好有矩陣100的一列的N個陣元數量一致。因此,輸入暫存器陣列104維持在一個N進N出的平衡狀況。關於矩陣Y的陣元yi,j是要歸屬於那一個RAM模組的規劃,其只須遵照規則1的規劃即可。
3.接著的m個步驟,則僅將輸入暫存器陣列104內的陣元yi,j,依照規則1繼續存放到b個RAM模組即可。
當矩陣100已經全部透過輸入暫存器陣列104的轉換,並完整儲存到記憶體200的b個RAM模組後,接下來要從b個RAM模組,依序讀出陣元yi,j,即可以完成矩陣轉置。輸出暫存器陣列106的運作如下:
1.從記憶體200的b個RAM模組,一次讀取出b個陣元yi,j,並推入N× n的輸出暫存器陣列106。由於b個陣元yi,j共有b×m×n個矩陣100的陣元xi,j,故每次的讀取都有N個陣元xi,j的資料量。在n個步驟之後,即可填滿N×n的輸出暫存器陣列106。
2.接下來的N-n個步驟,會將剩餘的陣元yi,j從b個RAM模組讀出,並推入到輸出暫存器陣列106中。同時,輸出N×1結構的行向量,此即為轉置的最後結果。由於從b個RAM模組讀取b個矩陣Y的陣元,同時又輸出N×1的行向量,對於每一個步驟,輸出暫存器陣列106的資料流都維持在N進N出的狀態。
3.接著的n個步驟,則將輸出暫存器陣列106的n條矩陣100的行向量,從輸出暫存器陣列106輸出,即完成整個矩陣轉置的運作。
接下來繼續描述輸入暫存器陣列104和輸出暫存器陣列106中的位移方式。在前面的描述,輸入暫存器陣列104和輸出暫存器陣列106是當作介面的功用,但是利用其內部的資料位移行為,分別都可以增加一次的資料轉換,以順利達到矩陣轉置後的輸出。
由於輸入暫存器陣列104是依序接收矩陣X的列向量,然後轉換成矩陣Y的陣元,再傳送給記憶體的b個記憶區塊,也就是b個RAM模組,以下輸入暫存器陣列104的位移實施範例可以達到需求。
輸入暫存器陣列104是以矩陣100作為描述的基準,而每個暫存器可存放矩陣X的1×n個陣元。
輸入暫存器陣列104的位移機制包含:- m×(N/n)個暫存器,每個暫存器的輸入與輸出都是n陣元;- 輸入暫存器陣列104共分為b組次暫存器陣列,每一組次暫存器陣列 有m×m個暫存器;- 每一組次暫存器陣列,皆可以選擇兩個位移方向,即是第一位移方向與第二位移方向,而本實施範例例如是垂直或水平方向的位移;- 每當資料填滿整個輸入暫存器陣列104後,就切換位移方向;以及- 從b組暫存器輸出的資料,分別存放到b個RAM模組當中。
圖5是依照本揭露的一實施範例,輸入暫存器陣列的每一組暫存器在兩個位移方向的位移方式示意圖。參閱圖5,輸入暫存器陣列104分為b個群組,分別對應b個RAM模組,因此每一個RAM模組對應m×m個暫存器。圖5中以虛線表示的暫存器,是表示數量為m×m個的示意標示。輸入暫存器陣列104先以第一位移方向,例如垂直方向接收矩陣100依序輸入的列陣元。而填滿該輸入暫存器陣列104後,改為第二位移方向,例如水平方位移方向,將這些陣元儲存到對應的b個RAM模組。而由於已儲存到b個RAM模組所釋放的暫存空間,同時繼續接收矩陣100後續的N-m個步驟的1×N列向量的陣元資料。
輸入暫存器陣列104的輸出與輸入資料格式是將矩陣100的列向量,以1×n個陣元為一個單位的劃分,可得到(N/n)個單位,然後再將這(N/n)個單位分成b等分。又,將b等分的資料,分別依照規則1的規畫,推入b組的m×m個暫存器內。
以下描述輸出暫存器陣列106的機制,其以矩陣100為描述的基準,每個暫存器可存放矩陣100的m×1個陣元。輸出暫存器陣列106的位移機制包含:
- (N/m)×n個暫存器,每個暫存器的輸入與輸出都是m個陣元; - 輸出暫存器陣列106共分為b組次暫存器陣列,每一組次暫存器陣列有n×n個暫存器;- 每一組次暫存器陣列,皆可以選擇兩個位移方向,即是第一位移方向與第二位移方向,而本實施範例例如是垂直或水平方向的位移;以及- 從b個RAM模組同時讀出b筆資料,每當資料填滿整個輸出暫存器陣列106,就切換位移方向輸出。
圖6是依照本揭露的一實施範例,輸出暫存器陣列的每一組暫存器在兩個位移方向的位移方式示意圖。參閱圖6,輸出暫存器陣列106分為b個群組,分別對應b個RAM模組,因此分別從RAM模組讀出的資料,對應暫存到m×m個暫存器的群組。圖6中以虛線表示的暫存器,是表示數量為n×n個的示意標示。輸出暫存器陣列106先以第一位移方向,例如垂直方向接收RAM模組讀出的資料。而填滿該輸出暫存器陣列106後,改為第二位移方向,例如水平方位移方向,將這些陣元輸出,成為矩陣100的轉置矩陣。而由於已輸出所釋放的暫存空間,同時繼續接收後續的N-n個步驟從b個RAM模組所讀取的資料。
輸出暫存器陣列106的輸出與輸入資料格式,包括將RAM模組中的每一筆定址的資料,以m×1個陣元為一個單位的劃分,由於RAM的每一筆資料為m×n,因此可以分出n個單位。每一次讀取,都從b個RAM模組各取出一筆資料,因此共有b筆。該b筆資料,則分別推入到輸出暫存器陣列106的b組n×n的次暫存器陣列。
以圖2a的實施範例來說明輸入暫存器陣列和輸出暫存器陣列的運作。首先將矩陣100的列向量,每n個entry,組成一個單位,由於n=4,可以得到如圖7的結構。圖7是依照本揭露的一實施範例,根據圖2a的規劃,矩陣的切割結構。為方便說明,每個單位的編號如下。因為本實施範例是使用圖2a的擺放方式,因此像是a0,a1,b0,b1,i2,i3,j2以及j3等灰色底標示的單位,都是存在RAM0,另外白色底標示的單位則儲存在RAM1。
假設,a,b,c,d,…,p為輸入暫存器接收的資料順序。輸入暫存器陣列共有兩組暫存器組110、112,每組為2×2暫存器114、116,如圖8所示。圖8是依照本揭露的一實施範例,N=16,m=2,n=4,b=2的輸入暫存器陣列架構。圖8的預設的位移方向為下。其中,灰色底標示的暫存器組110的暫存器114用來儲存灰色底的單位,白色底的暫存器116用來儲存白色底的單位。這個暫存器陣列有兩個位移方向,往下以及往左。先取往下位移的方向,當a和b依序往下位移之後,輸入暫存器陣列的內容如下圖9所示。圖9是依照本揭露的一實施範例,N=16,m=2,n=4,b=2的輸入暫存器陣列內存值示意圖。
接著,圖10是依照本揭露的一實施範例,N=16,m=2,n=4,b=2的輸入暫存器陣列內存值示意圖。依據圖2a,{a0,b0}要儲存到RAM0,{a2,b2}要儲存到RAM1。因此,接下來的位移方向轉為向左位移,才能達到此目的。向左移的時候,c向量和d向量的排列,但沒有限定,只需要符合RAM的規劃即可。
在向左位移兩次之後,輸入暫存器陣列的內容排列,如下圖11 示。圖11是依照本揭露的一實施範例,N=16,m=2,n=4,b=2的輸入暫存器陣列內存值示意圖。由於,接下來要儲存的資料為{c0,d0},{c2,d2},{c1,d1}以及{c3,d3},從下圖可發現,需要將位移方向改為向下,即可依序輸出{c0,d0},{c2,d2},{c1,d1}以及{c3,d3}。同時將e和f兩向量推入暫存器內,回到與a和b向量相同的狀態。依照這樣的步驟,不斷反覆操作即可將矩陣X以矩陣Y的方式儲存到記憶體200的RAM模組。
經過上述輸入暫存器陣列的位移,而儲存在記憶體200的RAM模組的資料如圖12所示。圖12是依照本揭露的一實施範例,矩陣100在RAM0,即是儲存區塊(bank)120,和RAM1,即是儲存區塊122,中的資料擺放示意圖。在儲存區塊(bank)120的資料依序為a0、b0、a1、b1、c0、d0、c1、d1、e0、f0、e1、f1、g0、h0、g1、h1、i2、j2、i3、j3、k2、l2、k3、l3、m2、n2、m3、n3、o2、p2、o3、p3。在儲存區塊122的資料依序為a2、b2、a3、b3、c2、d2、c3、d3、e2、f2、e3、f3、g2、h2、g3、h3、i0、j0、i1、j1、k0、l0、k1、l1、m0、n0、m1、n1、o0、p0、o1、p1。
接下來,將矩陣X的行向量,以m個陣元來組成一個單位。圖13是依照本揭露的一實施範例,矩陣X以2×1切割後的編號示意圖。在本實施範例,由於m=2,因此可以得到下如圖13所示的切割。對照圖7和圖13可以發現,{a0,b0}T={q0,r0,s0,t0}、{c0,d0}T={q1,r1,s1,t1}。因此,如果要從RAM模組中讀出{q0,q1,q2,…,q7}來完成矩陣轉置,從圖12可以看出,需要讀出RAM模組中的{a0,b0},{c0,d0},{e0,f0},{g0,h0},{i0,j0},{k0.l0},{m0,n0}以及{o0,p0}。
圖14是依照本揭露的一實施範例,以圖7表示法與圖13表 示法的部分對照關係示意圖。參閱圖14,輸出暫存器陣列106為N×n的結構,以下例子是以向左位移為預設方向來做為說明,其依序讀出{a0,b0}及{i0,j0},{c0,d0}及{k0.l0},{e0,f0}及{m0,n0},{g0,h0}及{o0,p0},並將之轉換為q,r,…,x等向量。對於整個轉置過程,當這幾組向量進入到輸出暫存器陣列106後,則暫存器陣列的內容,會如下圖15所示。圖15是依照本揭露的一實施範例,以圖7表示法與圖13表示法的部分對照關係,對於輸出暫存器陣列106的一組暫存器陣列的示意圖。於本實施範例,n=4,因此一組輸出暫存器包含4×4個暫存器。
接著再依序從RAM模組中讀出{a1,b1}及{i1,j1},{c1,d1}及{k1.l1},{e1,f1}及{m1,n1},{g1,h1}及{o1,p1},並以向下方式推入輸出暫存器內,同時將輸出暫存器內的資料往外推。從圖15可見,推出的第一筆資料為{q0,q1,q2,q3,q4,q5,q6,q7},即為矩陣X的第一條行向量。
圖16是依照本揭露的一實施範例,圖7表示法與圖13表示法的部分對照關係示意圖。參閱圖16,將圖16依序推入到輸出暫存器之後,暫存器的內容資料如圖17所示。
圖17是依照本揭露的一實施範例,N=16,m=2,n=4,b=2的輸出暫存器陣列內存值示意圖。參與圖17,接下來只要再將位移方向改回向左。即可輸出矩陣X的其他行向量。其餘資料,依照此運作邏輯即可完成整個矩陣X的轉置工作。
由上述可知,本揭露利用輸入暫存器陣列將矩陣的一些陣元儲存到該記憶體時,執行第一階段的轉換,又當該輸出暫存器陣列從該記憶體讀取這些陣元而輸出時,也會執行第二階段的 轉換,如此可以順利達到矩陣轉置後輸出。
雖然本揭露已以實施例揭露如上,然其並非用以限定本揭露,任何所屬技術領域中具有通常知識者,在不脫離本揭露的精神和範圍內,當可作些許的更動與潤飾,故本揭露的保護範圍當視後附的申請專利範圍所界定者為準。
90‧‧‧矩陣轉置電路
100‧‧‧矩陣
102‧‧‧次矩陣
104‧‧‧輸入暫存器陣列
106‧‧‧輸出暫存器陣列
200‧‧‧記憶體

Claims (11)

  1. 一種矩陣轉置電路,對具有N×N維度的一矩陣,輸出該矩陣的轉置矩陣,該矩陣轉置電路包括:一輸入暫存器陣列,具有m×N的矩陣結構;一記憶體,具有b組儲存區塊;以及一輸出暫存器陣列,具有N×n的矩陣結構,其中N、m、n、b都是2的冪次方的整數,m與n可以整除N,且N=n×m×b,其中該矩陣分割為多個次矩陣,每一個該次矩陣具有m×n陣元,每一個該次矩陣的多個陣元構成當作一個Y陣元以構成一個Y矩陣,其中該Y矩陣依照該b值區分為b個區塊,對應該b組儲存區塊分別儲存該b個區塊的該多個次矩陣的多個陣元資料,其中,該輸入暫存器陣列具有一第一位移方向與一第二位移方向,以該第一位移方向接收輸入陣元資料,以該第二位移方向輸出資料,以對應儲存到該b組儲存區塊,其中,該輸出暫存器陣列具有一第一位移方向與一第二位移方向,以該第一位移方向從該b組儲存區塊取得陣元資料,以該第二位移方向輸出對應該轉置矩陣的陣元資料,其中,該輸入暫存器陣列由該第一位移方向依序接收該矩陣的m個1×N列向量,而填滿該輸入暫存器陣列後,改為該第二位移方向將該些陣元儲存到對應的該b組儲存區塊,其中由於已儲 存到該b組儲存區塊所釋放的暫存空間,同時繼續接收該矩陣後續的N-m個1×N列向量。
  2. 如申請專利範圍第1項所述的矩陣轉置電路,其中該輸入暫存器陣列包含m×(N/n)個暫存器,其中該輸入暫存器陣列的每一個該暫存器的輸入與輸出都是n個資料口,且該m×(N/n)個暫存器分為b組次暫存器陣列,每一組該次暫存器陣列有m×m個該暫存器,其中該輸入暫存器陣列的每一組該次暫存器陣列,皆可以選擇該第一位移方向或是該第二位移方向,其中每當由該第一位移方向輸入資料且填滿整個該輸入暫存器陣列後,就切換到該第二位移方向,其中該b組次暫存器陣列從該第二位移方向輸出的資料,分別存放到該b組儲存區塊。
  3. 如申請專利範圍第1項所述的矩陣轉置電路,其中該輸出暫存器陣列由該第一位移方向從該b組儲存區塊讀取資料,當填滿該輸入暫存器陣列後,改變為該第二位移方向輸出對應該轉置矩陣的陣元資料,其中由於已輸出資料所釋放的暫存空間,同時繼續從該b組儲存區塊讀取資料。
  4. 如申請專利範圍第3項所述的矩陣轉置電路,其中該輸出暫存器陣列包含(N/m)×n個暫存器,其中該輸出暫存器陣列的每一個該暫存器的輸入與輸出都是m個資料口,且該(N/m)×n個暫存器共分為b組次暫存器陣列,每 一組該次暫存器陣列有n×n個該暫存器,其中該輸出暫存器陣列的每一組該次暫存器陣列,皆可以選擇該第一位移方向或是該第二位移方向,其中每當由該第一位移方向輸入資料且資料填滿整個輸出暫存器陣列後,就切換到該第二位移方向,從b個RAM模組同時讀出b筆資料,分別推入該b組次暫存器陣列內。
  5. 如申請專利範圍第1項所述的矩陣轉置電路,其中N=16、m=2、n=4、b=2。
  6. 如申請專利範圍第5項所述的矩陣轉置電路,其中該Y矩陣是8×4的矩陣,且以Yi,j(=1,2,...,8,j=1,2,3,4)代表陣元,依照該b值區分的第一個區塊的該陣元是{Yi,j,i=1-4,j=1,2;以及Yi,j,i=5-8,j=3,4},及第二個區塊的該陣元是{Yi,j,i=1-4,j=2,3;以及Yi,j,i=5-8,j=1,2}。
  7. 如申請專利範圍第5項所述的矩陣轉置電路,其中該Y矩陣是8×4的矩陣,且以Yi,j(=1,2,...,8,j=1,2,3,4)代表陣元,依照該b值區分的第一個區塊的該陣元是{Yi,j,i=1,2,j=1,2;Yi,j,i=3,4,j=3,4;Yi,j,i=5,6,j=1,2;以及Yi,j,i=7,8,j=3,4},及其餘的第二個區塊。
  8. 如申請專利範圍第5項所述的矩陣轉置電路,其中該Y矩陣是8×4的矩陣,且以Yi,j(=1,2,...,8,j=1,2,3,4)代表陣元,依照該b值區分的第一個區塊的該陣元是{Yi,j,i=1,j=1,2;Yi,j,i=2,j=3,4;Yi,j,i=3,j=1,2;Yi,j,i=4,j=3,4;Yi,j,i=5,j=1,2;Yi,j,i=6,j=3,4;Yi,j,i=7,j=1,2;Yi,j,i=8,j=3,4},及其餘的第二個區塊。
  9. 如申請專利範圍第5項所述的矩陣轉置電路,其中該Y矩 陣是8×4的矩陣,且以Yi,j(=1,2,...,8,j=1,2,3,4)代表陣元,依照該b值區分的第一個區塊的該陣元是{Yi,j,i=1-4 j=1,3;Yi,j,i=5-8,j=2,4},及其餘的第二個區塊。
  10. 如申請專利範圍第1項所述的矩陣轉置電路,其中N=16、m=4、n=4、b=1。
  11. 如申請專利範圍第1項所述的矩陣轉置電路,藉由該輸入暫存器陣列將該矩陣的該些陣元儲存到該記憶體時,執行第一階轉換,又當該輸出暫存器陣列從該記憶體讀取該些陣元而輸出時,執行第二階轉換。
TW103123490A 2014-07-08 2014-07-08 矩陣轉置電路 TWI570573B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
TW103123490A TWI570573B (zh) 2014-07-08 2014-07-08 矩陣轉置電路
CN201410459887.0A CN105282556A (zh) 2014-07-08 2014-09-11 矩阵转置电路
US14/662,246 US9613669B2 (en) 2014-07-08 2015-03-19 Matrix transposing circuit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW103123490A TWI570573B (zh) 2014-07-08 2014-07-08 矩陣轉置電路

Publications (2)

Publication Number Publication Date
TW201602808A TW201602808A (zh) 2016-01-16
TWI570573B true TWI570573B (zh) 2017-02-11

Family

ID=55067697

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103123490A TWI570573B (zh) 2014-07-08 2014-07-08 矩陣轉置電路

Country Status (3)

Country Link
US (1) US9613669B2 (zh)
CN (1) CN105282556A (zh)
TW (1) TWI570573B (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9952831B1 (en) 2017-02-16 2018-04-24 Google Llc Transposing in a matrix-vector processor
CN109408117B (zh) 2018-10-08 2021-01-26 京东方科技集团股份有限公司 矩阵转置装置及方法、显示装置
US10831507B2 (en) 2018-11-21 2020-11-10 SambaNova Systems, Inc. Configuration load of a reconfigurable data processor
US11188497B2 (en) 2018-11-21 2021-11-30 SambaNova Systems, Inc. Configuration unload of a reconfigurable data processor
US10698853B1 (en) 2019-01-03 2020-06-30 SambaNova Systems, Inc. Virtualization of a reconfigurable data processor
US10768899B2 (en) 2019-01-29 2020-09-08 SambaNova Systems, Inc. Matrix normal/transpose read and a reconfigurable data processor including same
US11386038B2 (en) 2019-05-09 2022-07-12 SambaNova Systems, Inc. Control flow barrier and reconfigurable data processor
US11055141B2 (en) 2019-07-08 2021-07-06 SambaNova Systems, Inc. Quiesce reconfigurable data processor
US11809908B2 (en) 2020-07-07 2023-11-07 SambaNova Systems, Inc. Runtime virtualization of reconfigurable data flow resources
US11782729B2 (en) 2020-08-18 2023-10-10 SambaNova Systems, Inc. Runtime patching of configuration files
US11204889B1 (en) 2021-03-29 2021-12-21 SambaNova Systems, Inc. Tensor partitioning and partition access order
US11366783B1 (en) 2021-03-29 2022-06-21 SambaNova Systems, Inc. Multi-headed multi-buffer for buffering data for processing
US11327771B1 (en) 2021-07-16 2022-05-10 SambaNova Systems, Inc. Defect repair circuits for a reconfigurable data processor
US11409540B1 (en) 2021-07-16 2022-08-09 SambaNova Systems, Inc. Routing circuits for defect repair for a reconfigurable data processor
US11556494B1 (en) 2021-07-16 2023-01-17 SambaNova Systems, Inc. Defect repair for a reconfigurable data processor for homogeneous subarrays
US11709611B2 (en) 2021-10-26 2023-07-25 SambaNova Systems, Inc. Determining and using memory unit partitioning solutions for reconfigurable dataflow computing systems
TWI808000B (zh) * 2022-09-20 2023-07-01 創鑫智慧股份有限公司 矩陣裝置及其操作方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6021420A (en) * 1996-11-26 2000-02-01 Sony Corporation Matrix transposition device
US20050193050A1 (en) * 2001-03-21 2005-09-01 Apple Computer Inc. Matrix multiplication in a vector processing system
CN101093474A (zh) * 2007-08-13 2007-12-26 北京天碁科技有限公司 利用矢量处理器实现矩阵转置的方法和处理系统
CN102053948A (zh) * 2009-11-04 2011-05-11 国际商业机器公司 在单指令多数据多核处理器架构上转置矩阵的方法和系统

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001117909A (ja) * 1999-10-21 2001-04-27 Oki Electric Ind Co Ltd マトリクス形式データの転置回路
CN100473161C (zh) * 2005-09-09 2009-03-25 海信集团有限公司 基于avs的4×4离散余弦变换的快速并行装置及其方法
US7797362B2 (en) * 2007-02-23 2010-09-14 Texas Instruments Incorporated Parallel architecture for matrix transposition
CN101562744B (zh) * 2008-04-18 2014-04-23 展讯通信(上海)有限公司 二维反变换装置
US8566382B2 (en) * 2008-09-22 2013-10-22 Advanced Micro Devices, Inc. Method and apparatus for improved calculation of multiple dimension fast fourier transforms
CN102547263B (zh) * 2010-12-27 2016-09-14 联芯科技有限公司 可变复杂度的离散余弦逆变换查表快速算法
CN102857756B (zh) * 2012-07-19 2015-04-08 西安电子科技大学 适于hevc标准的变换编码器

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6021420A (en) * 1996-11-26 2000-02-01 Sony Corporation Matrix transposition device
US20050193050A1 (en) * 2001-03-21 2005-09-01 Apple Computer Inc. Matrix multiplication in a vector processing system
CN101093474A (zh) * 2007-08-13 2007-12-26 北京天碁科技有限公司 利用矢量处理器实现矩阵转置的方法和处理系统
CN102053948A (zh) * 2009-11-04 2011-05-11 国际商业机器公司 在单指令多数据多核处理器架构上转置矩阵的方法和系统

Also Published As

Publication number Publication date
CN105282556A (zh) 2016-01-27
TW201602808A (zh) 2016-01-16
US9613669B2 (en) 2017-04-04
US20160012012A1 (en) 2016-01-14

Similar Documents

Publication Publication Date Title
TWI570573B (zh) 矩陣轉置電路
TWI680409B (zh) 適用於人工神經網路之矩陣及向量相乘的方法
JP5951570B2 (ja) 行列演算装置
US5331585A (en) Orthogonal transformation processor for compressing information
Lewis Matrix theory
JPH0526229B2 (zh)
JPH02173860A (ja) データセル配列とかかる配列を用いる神経網システム
CN114007079A (zh) 变换电路、方法、装置和编码器
KR0139703B1 (ko) 이산코사인변환장치
US5359549A (en) Orthogonal transformation processor for compressing information
CN108184127A (zh) 一种可配置的多尺寸dct变换硬件复用架构
CN101782878B (zh) 基于分布式存储器的数据存储方法
CN101310237B (zh) 查表乘法器
CN103945226A (zh) 一种视频解码的方法及其装置
CN113094648B (zh) 外积累加求解三角矩阵与矩阵内积的方法
Krishnan Textbook of Functional Analysis: A Problem-Oriented Approach
KR100341399B1 (ko) 병렬 입출력 구조를 갖는 병렬 셔플 메모리회로
JP2580501B2 (ja) 並列デ−タ処理装置
JP5519951B2 (ja) アレイプロセッサ
JPH02100577A (ja) ディスクリートコサイン変換装置
JP2003208415A (ja) データ配列変換システム
JP3575991B2 (ja) 直交変換回路
JPH07234863A (ja) 2次元直交変換装置
KR20160035317A (ko) 통합 코덱용 이산 코사인 변환 장치 및 그 방법
JP2002152045A (ja) 画像データ用フィルタ処理装置及びその制御方法