JP5532132B2 - Simdモードで動作するプロセッシング・エレメントの内部メモリに分散記憶された正方マトリックス及びその転置マトリックスに、時間と面積の効率良いアクセスを可能とする装置及び方法 - Google Patents
Simdモードで動作するプロセッシング・エレメントの内部メモリに分散記憶された正方マトリックス及びその転置マトリックスに、時間と面積の効率良いアクセスを可能とする装置及び方法 Download PDFInfo
- Publication number
- JP5532132B2 JP5532132B2 JP2012524948A JP2012524948A JP5532132B2 JP 5532132 B2 JP5532132 B2 JP 5532132B2 JP 2012524948 A JP2012524948 A JP 2012524948A JP 2012524948 A JP2012524948 A JP 2012524948A JP 5532132 B2 JP5532132 B2 JP 5532132B2
- Authority
- JP
- Japan
- Prior art keywords
- matrix
- sub
- internal memories
- matrices
- processing elements
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
- G06F15/8015—One dimensional arrays, e.g. rings, linear arrays, buses
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Image Processing (AREA)
- Multi Processors (AREA)
Description
2つの関連技術の構成は、隣接データについては、効率的に、また限定された面積オーバーヘッドで動作するが、隣接していないPE間でデータを交換する場合に、難点がある。特許文献2においては、面積は増大しないが、通信チャネル上を転送されるデータのクロックサイクル数は、データ交換に係るPE間の距離に比例して増大する。従って、この解決策は、遠く離れたPE間のデータの転送にとってはもはや高速ではない。例えば、相互に相反する2つのリングバスを介して接続された16PEのシステムの場合、どれかのIMEMとPEとの間の通信を確保するには、最大で8クロックサイクルを必要とする。16×16エレメントのマトリックス(マトリックス)のコーナーターンの場合、IMEMに読み書きするための32クロックサイクルに加えて64クロックサイクルの転送遅延が発生するため、全体で96クロックサイクルが結果する。
転置マトリックスの時間と面積の効率の良い生成のために非隣接IMEMユニットからのデータにアクセスしコーナーターンを行わせるための、図1について説明した第1の関連技術では、インターPE通信チャネル上にデータを転送する際に大きな転送遅延が発生する。
本発明の他の特徴及び利点は、添付図面を参照してなされる以下の詳細な説明によって、当業者には自ずと明らかとされるであろう。添付図面には、本発明を実施する上の最良の形態と考えられる実施態様のみが、単に例示的に示されている。本発明は、理解されるように、他の実施態様も含み、これらの実施態様のいくつかの詳細な点については、本発明の範囲内で更なる変更が可能である。従って、図面及び説明は、本質的に例であり、限定的ではない。
信号PATH情報を評価する。PATHが0ならば、ステップ2〜3による“YES”分岐を実行し、0でなければ、ステップ4〜14による“NO”分岐を実行する(1500)。
IMEMベースアドレスとlog2(N/m)(=2)カウンタビットとを組合せることによって、N/m(=4)IMEMアドレスを計算する(1501)。
IMEMにアドレスを転送し、メモリエレメントサブブロック行1605当りN/m(=4)×m2(=16)バイトを受ける。メモリエレメントサブブロック行1605は、各々、m(=4)個のマトリックスエレメント1603を有するメモリエレメントサブブロック1604の行から成り、マトリックスエレメント1603は、m(=4)個のメモリエレメント1600を備えている(1502)。
IMEMベースアドレスと、log2(N/m)(=2)カウンタビット及び反転カウンタビットを組合せることによって、N/m(=4)個のIMEMアドレスを計算する(1503)。カウンタビットを用いるか、反転カウンタビットを用いるかは、アドレスオフセットマトリックスを発生させることにより定める。
a)異なるレベルのマトリックスを生成させる。スタートポイントとして、m(=4)×mマトリックスエレメントを有するメモリエレメントサブブロック(複数)がレベル1のマトリックス(複数)を形成するものとする。次に、レベル1の4個の隣接マトリックスをグループ化して、レベル2の新しいマトリックスを形成する。4個のマトリックスしか残らなくなるまで、これを再帰的に行う。図19は、初期値がN=16、m=4である場合の、このステップの出力を表している。
(N/m)(=4)個のアドレスをIMEMに送信し、m(=4)個の隣接IMEMが1つのアドレスを受信する(1504)。
IMEMから(N/m)(=4)×m2(=16)バイトを受信する。図22は、正しい縦方向メモリエレメントサブブロック位置を有する、N/m(=4)個のメモリエレメントサブブロック行リクエストの受信データを示す(1505)。
インデックスを零に設定する(1506)。
カウンタCNTからのビットiを評価する。値が零に等しければステップ10に進み、そうでなければステップ9に続ける(1507)。
2個のサブブロックの対を作成する。これらの対は、一のメモリエレメントサブブロック行内のメモリエレメントサブブロックインデックスのビットiのみが相違するサブブロックから形成する。これらのサブブロックの位置をスワッピングする。図23は、インデックスi及びカウンタCNTの全値についてループの実行を終了させた後の、図23に示したマクロブロックについてのこのステップの出力を示している(1508)。
インデックスiを増大させる(1509)。
log2(N/m)(=2)とインデックスiを比較する。等しくなければステップ8に移行し、そうでなければステップ12に進む(1510)。
縦方向に各m(=4)個のバイトを有するm(=4)個の横方向に隣接するメモリエレメントとしてメモリエレメントサブブロックのm2(=16)個のバイトを再度整える(1511)。
図24に左上のメモリエレメントサブブロックについて例示的に示したように、各々のメモリエレメントサブブロックについて、各バイトを位置(x、y)から位置(y、x)に変更することによって、m(=4)×m(=4)個のバイトを転置する。図25は、カウンタCNTの全値についてループの実行を終了させた後のこのステップの出力を示している(1512)。
全部のN(=16)PEに、下位log2(N/m)(=2)個のCNTビットによって指定されるアドレスに、一のメモリエレメントを格納する(1513)。
log2(N/m)(=2)CNT下位2ビットによって指定されたアドレスから、m(=4)バイトの一メモリエレメントを、N(=16)個のPEから読出す(2400)。
信号PATH情報を評価する(2401)。PATH=0ならば、ステップ3に説明した“YES”分岐を実行し、そうでなければ、ステップ4に説明した“NO”分岐を実行する。
IMEMベースアドレスとlog2(N/m)(=2)CNT下位2ビットとを組合せることによって、N/m(=4)個のIMEMアドレスを計算する(2402)。ステップ5に続ける。
IMEMベースアドレスとlog2(N/m)(=2)CNT下位カウンタと反転カウンタビットを組合せることによって、N/m(=4)個のIMEMアドレスを計算する。リードコントロール機能について説明したようにアドレスオフセットマトリックスを発生させることによって、カウンタビットを使用するか反転カウンタビットを使用するかを定める。次に、アドレスオフセットマトリックスへの縦方向インデックスとしてカウンタビットCNT[0]、CNT[1]を用いて、現在処理されているアドレスマトリックス行を選択し、カウンタと反転カウンタビットから、選択された行の各メモリエレメントサブブロックのアドレスマトリックスエントリを形成することによって、あるメモリエレメントサブブロック行の各メモリエレメントサブブロックの正しいアドレスオフセットを再度発生させる(2403)。
各メモリエレメントサブブロック行について、N/m(16/4=4)個のアドレスとN/m(=4)×m2(=16)個のバイトとを、IMEMに転送する(2404)。
1)どの機能が実行されるか(リード又はライト)(1ビット)
2)どのパスが実行されるか(パス0又はパス1)(1ビット)
3)どのメモリエレメントサブブロック行が実行されるか(log2(N/m)=2ビット)。
この例においては、処理対象のマトリックスは、N×N(N=8)マトリックス、一のマトリックスエレメントのサイズは1バイトであり、各々の列データ即ちN(=8)個のエレメントのデータは、一ワードとして、IMEM0〜N−1(=7)に格納されているものとする。この例では、N×N(N=8)マトリックスは(N/m)×(N/m)(=4×4)個のm×m(2×2)サブマトリックスに区画され、各々のサブマトリックスは、m(=2)行×m列を有する。
a)3ビットカウンタ600(又は1400)の下位2ビット値に従ってMEM_Base_Addressの下位2ビットを変えることによって、IMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7のリードアドレスを生成する。
b)2×2サブマトリックスの横方向位置のスワッピングを行う。
c)各2×2サブマトリックスのコーナーターンを行う。
d)各PEのレジスタ0−3に格納する。
この例では、処理対象マトリックスは8×8マトリックス(N=8)であり、一のマトリックスエレメントのサイズは1バイトであり、各1列のデータ即ち4個のエレメントのデータ(m=4)は、IMEM0からIMEM7にそれぞれ格納され、IMEM及びレジスタの一のワードは、縦方向に整列された4個のエレメントを格納しているものとする。この例では、8×8マトリックスは、(8/4)×(8/4)=4個のサブマトリックスに区画され、各々のサブマトリックスは、4行4列から成っている。
a)リードアドレスは、3ビットカウンタ1400の1ビットカウンタ値(LSB)に従ってMEM_addressの下位1ビットを変更される。
b)4×4サブマトリックスの横方向位置をスワッピングする。
c)各4×4サブマトリックスについてコーナーターンを行う。
d)各PEのレジスタ0−1に格納する。
上述のリードプロセスの詳細は、以下の各図に示されている。
この例では、処理対象マトリックスは16×16マトリックス(N=16)であり、一のマトリックスエレメントのサイズは1バイトであり、各1列のデータ即ち16エレメントのデータは、IMEM0からIMEM Fにそれぞれ格納され、IMEM及びレジスタの一のワードは、縦方向に整列された2個のエレメント(m=2)を格納しているものとする。この例では、16×16マトリックスは、(16/2)×(16/2)=64個のサブマトリックスに区画され、各々のサブマトリックスは、2行2列から成っている。
a)各IMEMから一のワードを読出す。各々のリードアドレスは、3ビットカウンタ1400の3ビットカウンタ値(下位3ビット)に従ってMEM_addressの下位3ビットを変えることによって発生させる。
b)2×2サブマトリックスの横方向位置をスワッピングする。
c)各々の2×2サブマトリックスについてコーナーターンを行う。
d)各PEのレジスタ0−7に格納する。
図41を参照すると、クロックサイクル1において、IMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−Fには、MEM_Base_Address&“000”、MEM_Base_Address&“001”、MEM_Base_Address&“010”、MEM_Base_Address&“011”、MEM_Base_Address&“100”、MEM_Base_Address&“101”、MEM_Base_Address&“110”及びMEM_Base_Address&“111”がそれぞれ供給される。2×2サブマトリックスの8行8列に対角方向に存在する8個の2×2サブマトリックス(32バイトデータ)は、読出され、スワッピングされることなく、対応の転置ユニットに転送される。各々のコーナーターンされた8個の2×2サブマトリックスは、PE0−Fのレジスタ0に次に格納される。各々のPE0−Fのレジスタ0には、当該2×2サブマトリックスの2個の縦方向に隣接したエレメントが格納されている。
この例では、処理対象マトリックスは16×16マトリックス(N=16)であり、一のマトリックスエレメントのサイズは1バイトであり、各1列のデータ即ち16エレメントのデータは、IMEM0からIMEM Fにそれぞれ格納され、IMEM及びレジスタの一のワードは、縦方向に整列された4個のエレメントを格納しているものとする。この例では、16×16マトリックスは、(16/4)×(16/4)=16個のサブマトリックスに区画され、各々のサブマトリックスは、4行4列から成っている。
a)各IMEMから一のワードを読出す。各々のリードアドレスは、3ビットカウンタ1400の2ビットカウンタ値に従ってMEM_addressの下位2ビットを変えることによって発生させる。
b)4×4サブマトリックスの横方向位置をスワッピングする。
c)各々の4×4サブマトリックスについてコーナーターンを行う。
d)各PEのレジスタ0−7に格納する。
図57を参照すると、クロックサイクル1において、IMEM0−3、IMEM4−7、IMEM8−B、IMEMC−Fには、MEM_Base_Address&“00”、MEM_Base_Address&“01”、MEM_Base_Address&“10”及びMEM_Base_Address&“11”がそれぞれ供給される。4×4サブマトリックスの4行4列に対角方向に位置する4個の4×4サブマトリックス(64バイトデータ)が、読出され、スワッピングを受けることなく、対応の転置ユニットに転送される。次に、各々コーナーターンされた4個の4×4サブマトリックスは、PE0−Fのレジスタ0に格納される。各PE0−Fのレジスタ0は、当該4×4サブマトリックスの4個の縦方向に隣接したマトリックスエレメントを格納する。
図6に示した上記の実施態様によるリードコントロール機能ユニットにおいて、IMEM0−Fから読出されたサブマトリックスは、スワップユニットに供給され、次に対応の転置ユニットに供給される。コーナーターンされたサブマトリックスは、図6に示したように、PEのレジスタファイル(PE−RF)に格納される。しかし、スワップユニットと転置ユニットとの配置は入れ替えてもよい。例えば、図65に示したように、4個のIMEMから読出された4×4バイトデータ(4×4サブマトリックス)は、対応の4×4バイト転置ユニットにひとまず供給された後、4×16バイト転置ユニットに供給される。横方向位置についてスワッピングされた4×4サブマトリックスは、PEのレジスタファイル(PE−RF0〜PE−RF F)に格納される。本実施態様において、ライトコントロール機能ユニットは、図15と同じ構成となっている。
上記の実施態様によれば、IMEMからPEのレジスタファイルに読出されたデータの転送路(パス)において、リードデータは、スワッピング及びコーナーターンされる。しかしこれは本発明を限定するものではない。
図68は、実施態様4によるライトコントロール機能ユニットの構成を示すブロック図である。この実施態様によれば、ライトコントロール機能ユニットは、4×16バイトのスワップユニット1405と4個の4×4バイトの転置ユニット1406とを備えている。
図69は、実施態様5によるリードコントロール機能ユニットの構成を示すブロック図である。図69に示したこの実施態様によれば、リードコントロール機能ユニットは、4×4サブマトリックスの横方向位置を入れ替える4×16バイトのスワップユニット605を備えている。4×4バイト転置ユニット606は備えていない。IMEM0−3、IMEM4−7、IMEM8−B、IMEMC−Fの、アドレスジェネレータ603によって特定されたリードアドレスから読出された4個の4×4サブマトリックス(64バイトデータ)は、4×16バイトのスワップユニット605に供給され、3ビットカウンタ600の2ビットカウンタ値によって順次特定されるPE0−3、PE4−7、PE8−B、PEC−Fの対応のレジスタ0−3に格納される。
図71は、実施態様6によるリードコントロール機能ユニットの構成を示すブロック図である。図71に示したこの実施態様によれば、リードコントロール機能ユニットは、4個の4×4バイト転置ユニット606を備えている。4×16バイトのスワップユニット605は備えていない。IMEM0−3、IMEM4−7、IMEM8−B、IMEMC−Fの、アドレスジェネレータ603によって特定されたそれぞれのリードアドレスから読出された4個の4×4サブマトリックス(64バイトデータ)は、4個の4×4バイト転置ユニット606にそれぞれ供給され、3ビットカウンタ600の2ビットカウンタ値によって順次特定されるPE0−3、PE4−7、PE8−B、PEC−Fの対応のレジスタ0−3に格納される。
101 各PEの内部メモリ
102 時計方向のパイプラインリングバス
103 反時計方向のパイプラインリングバス
104 PEと自身のIMEMの間のデータ接続
200 PEと隣接IMEMの間のデータ接続
201 接続パスを選択するためのマルチプレクサ
300 PE群
301 IMEM群
302 コネクション装置
303 コントロール装置
400 画像ピクセル
401 4×4ピクセルのサブブロック
402 16×16ピクセルのマクロブロック
403 横方向位置のフィルタ
404 ピクセル値例とサブブロック
405 コーナーターン、位置(x、y)から位置(y、x)に交換する転置操作
406 入力例についての転置ピクセル値とサブブロック
407 縦方向位置のフィルタ
408 2次元フィルタリングされたマクロブロック
500 コネクション装置
501 リードコントロール機能ユニット
502 ライトコントロール機能ユニット
503 各PEから自身のIMEMへのパスを与えるリードコントロール機能からのパス0
504 各PEからR_TRANSユニットにより特定されるIMEMへのパスを与えるリードコントロール機能からのパス1
505 セレクタ
506 R_TRANSユニット
507 各PEから自身のIMEMへのパスを与えるライトコントロール機能からのパス0
508 各PEからW_TRANSユニットにより特定されるIMEMへのパスを与えるライトコントロール機能からのパス1
509 セレクタ
510 W_TRANSユニット
600 アドレスオフセット発生用の制御信号として用いられる3ビットカウンタ、下位2ビットは処理中のメモリエレメントサブブロック行を特定する
601 セレクタ
602 4IMEMユニットの群
603 IMEMアドレスジェネレータ
604 インバータ
605 4×16バイトスワップユニット
606 4×4バイト転置ユニット
607 PEレジスタファイルアドレスビット
608 4PE内の4PEレジスタファイル群
700 IMEMへのリードアクセスのアドレス
701 IMEMへのライトアクセスのアドレス
702 正しいIMEMアドレス選択のために用いるカウンタビット2
703 セレクタ
800 アドレスジェネレータ0
900 アドレスジェネレータ1
901 PATH情報の評価によってカウンタビット0と反転カウンタビット0の間の選択をするセレクタ
1000 メモリベースアドレスにカウンタビット0及びカウンタビット1又は反転カウンタビット1を付加してIMEMアドレスを発生させるアドレスジェネレータ2
1001 PATH情報の評価によってカウンタビット1と反転カウンタビット1の間の選択をするセレクタ
1100 メモリベースアドレスにカウンタビット0又は反転カウンタビット0及びカウンタビット1又は反転カウンタビット1を付加してIMEMアドレスを発生させるアドレスジェネレータ3
1101 PATH情報の評価によってカウンタビット1と反転カウンタビット1の間の選択をするセレクタ
1102 PATH情報の評価によってカウンタビット0と反転カウンタビット0の間の選択をするセレクタ
1200 メモリエレメントサブブロック行においてメモリエレメントサブブロックの横方向位置をスワップするのに用いる4×16バイトデータスワップユニット
1201 カウンタビット0が1であるとき横方向アドレスビット0のみが異なる2つのサブブロックからのサブブロックデータをスワップするための第1マルチプレクサ段
1202 カウンタビット1が1であるとき横方向アドレスビット1のみが異なる2つのサブブロックからのサブブロックデータをスワップするための第2マルチプレクサ段
1300 メモリエレメントサブブロックのコーナーターンを行わせる4×4バイト転置ユニット
1301 縦方向に各4バイトである4横方向ワードを有するメモリエレメントサブブロックとして構成される4×16バイトスワップユニットからの16バイト入力
1302 PEレジスタファイルに転送するための16バイト出力ベクトルとして構成された、各々縦方向に4バイトの4横方向ワードを有するメモリエレメントサブブロック
1303 16バイト出力ベクトルとして構成された転置メモリエレメントサブブロック又は16バイト入力ベクトルの直接出力を選択するための出力マルチプレクサ
1400 制御信号としてアドレスオフセット発生に用いられる3ビットカウンタ(下位2ビットは、処理中のメモリエレメントサブブロック行を特定する)
1401 リードアドレスとライトアドレスのどちらをIMEMユニットに転送するかを選択するセレクタ
1402 一のメモリエレメントサブブロックを書込むために同じアドレスを受ける4IMEMユニットの群
1403 メモリエレメントサブブロック行の各メモリエレメントサブブロックのためのIMEMアドレスジェネレータ
1404 正しいIMEMアドレスを発生させるために反転カウンタビットを発生させるためのインバータ
1405 PEレジスタファイルアドレスビット
1406 4PE内の4PEレジスタファイルの群
1500 リードコントロール機能ユニットのフローチャート(可変PATHの評価によってPEレジスタファイルにどのデータを移行させるかを識別する)
1501 リードコントロール機能ユニットのフローチャート(IMEMベースアドレスと下位log2(N/m) カウンタビットとを組合わせることにより(N/m)個のIMEMアドレスを計算する)
1502 リードコントロール機能ユニットのフローチャート(IMEMにアドレスを送りメモリエレメントサブブロック行当りN/m×m2バイトを受信する)
1503 リードコントロール機能ユニットのフローチャート(IMEMベースアドレスと下位log2(N/m) カウンタビット及び反転カウンタビットを組合わせることにより(N/m)個のIMEMアドレスを計算する)
1504 リードコントロール機能ユニットのフローチャート((N/m)個のアドレスをIMEMに送り、m個の隣接IMEMが1アドレスを受ける)
1505 リードコントロール機能ユニットのフローチャート((N/m)×m2バイトを受ける)
1506 リードコントロール機能ユニットのフローチャート(アドレスビット上に動作するインデックスiを0にセットする)
1507 リードコントロール機能ユニットのフローチャート(位置iのカウンタビットをテストし、位置iのビットが0ならば1509に続け、そうでなければ1508に続ける)
1508 リードコントロール機能ユニットのフローチャート(サブブロック行の位置を対ごとにスワップ、インデックスにおいてビットiのみが異なっていれば2サブブロックの対がサブブロックによって形成される)
1509 リードコントロール機能ユニットのフローチャート(インデックスiを増加させる)
1510 リードコントロール機能ユニットのフローチャート(iがlog2N/mより低いと、1507にジャンプし、そうでなければ1511に続ける)
1511 リードコントロール機能ユニットのフローチャート(縦方向にmバイトで、横方向に隣接したmエレメントとして、m2バイトを再構成する)
1512 リードコントロール機能ユニットのフローチャート(各バイトを位置(x、y)から(y、x)に変えることによって、m×mマトリックスを転置する)
1513 リードコントロール機能ユニットのフローチャート(mバイトの1メモリエレメントを全N個のPEの下位log2(N/m)CNTビットにより指定されるアドレスに格納する)
1600 1マトリックスエレメント(1バイトに等しい)
1601 16×16マトリックスエレメントのマクロブロック
1602 IMEMナンバー
1603 m=4縦方向マトリックスエレメント個のマトリックスエレメント
1604 横方向に隣接する4メモリエレメントを有するメモリエレメントサブブロック
1605 横方向に隣接する4メモリエレメントサブブロックを有するメモリエレメントサブブロック行
1700 8×8マトリックスエレメントのレベル1のマトリックス
1800 レベル1のマトリックスの対角方向サブブロック
1801 レベル1のマトリックスの反対角方向サブブロック
1802 レベル2のマトリックスの反対角方向ブロック
1900 レベル1の部分アドレスオフセットマトリックス
1901 レベル2の部分アドレスオフセットマトリックス
1902 アドレスオフセットマトリックス
2400 ライトコントロール機能ユニットのフローチャート(N個の全PEの下位log2(N/m)CNTビットにより特定されるアドレスから、mバイトの1メモリエレメントを読出す)
2401 ライトコントロール機能ユニットのフローチャート(可変PATHの評価によってアドレス計算の仕方を識別する)
2402 ライトコントロール機能ユニットのフローチャート(IMEMベースアドレスと下位log2(N/m) カウンタビットを組合わせることにより、N/m個のIMEMアドレスを計算する)
2403 ライトコントロール機能ユニットのフローチャート(IMEMベースアドレスと下位log2(N/m) カウンタビット及び反転カウンタビットを組合わせることにより、N/m個のIMEMアドレスを計算する)
2404 ライトコントロール機能ユニットのフローチャート(1メモリエレメントサブブロック行当り(N/m)個のアドレスとN/m×m2バイトをIMEMに送る)
Claims (10)
- N×N(Nは2以上の所定の正の整数である)のマトリックスエレメント及び転置の正方マトリックスにアクセスし、単一命令複数データモードで動作する装置であって、
N個のプロセッシングエレメントを有し、各々の前記プロセッシングエレメントは、m個(mは所定の正の整数であり、Nの除数である)のマトリックスエレメントに等しいデータ幅を有し、
前記N個のプロセッシングエレメントは(N/m)グループにグループ化され、各々の前記グループは、m個のプロセッシングエレメントを有し、
更に、N個の単一ポートの内部メモリを有し、各々の前記内部メモリは、m個のマトリックスエレメントに等しいデータ幅を有し、N個の単一ポートの内部メモリは、(N/m)グループにグループ化され、各々の前記グループは、m個の内部メモリを有し、
更に、前記プロセッシングエレメントと前記内部メモリとの間の接続を扱うコネクション装置を有し、
前記コネクション装置は、2×(N/m)クロックサイクルでマトリックスのコピー及びマトリックスのコーナーターンの実行を可能とするリードコントロール機能ユニット及びライトコントロール機能ユニットを備えている装置。 - 前記リードコントロール機能ユニットが、第1のパスと第2のパスとのどちらかを入力から出力に選択するためのセレクタを有し、
前記第1のパスは、プロセッシングエレメントのグループの各プロセッシングエレメントから、内部メモリのグループ中の自身の内部メモリへのアクセスのための、入力側と出力側との間の直接接続を与え、前記第2のパスは、マトリックスの転置の発生のためのアクセスを与え、
前記リードコントロール機能ユニットが、更に、
縦方向メモリエレメント・サブブロック行アドレスを並列に計算する(N/m)個のアドレス発生器を有し、
前記メモリエレメント・サブブロックは、m個の横方向に隣接するメモリエレメントを有し、前記メモリエレメントは、m個の縦方向に隣接するマトリックスエレメントを有し、
縦方向メモリエレメント・サブブロック行アドレスは、所望の縦方向位置のメモリエレメント・サブブロックにアクセスするために用いられ、
(N/m)×m2エレメントのスワップユニットは、選択された一のメモリエレメント・サブブロック行に属するメモリエレメント・サブブロックの(N/m)個のメモリエレメント・サブブロックをそれぞれの目的の横方向位置に並列に移動させ、
(N/m)個のm×mエレメントの転置ユニットが並列に動作してm×mエレメントのマトリックスの各エレメントを位置(x、y)から位置(y、x)に各々移動させる請求項1に記載の装置。 - 前記ライトコントロール機能ユニットが、第1のパスと第2のパスを入力から出力に選択するためのセレクタを有し、前記第1のパスは、プロセッシングエレメントのグループの各プロセッシングエレメントから、内部メモリのグループ中の自身の内部メモリへのアクセスのための、入力側と出力側との間の直接接続を与え、前記第2のパスは、マトリックスの転置の発生のためのアクセスを与え、
前記ライトコントロール機能ユニットが、更に、それぞれのメモリエレメント・サブブロックの縦方向メモリエレメント・サブブロック行アドレスを並列に計算する(N/m)個のアドレス発生器を有し、
縦方向メモリエレメント・サブブロック行アドレスは、プロセッシングエレメントのグループに含まれるそれぞれのプロセッシングエレメントが受信したm個のマトリックスエレメントからなるメモリエレメントのそれぞれを、内部メモリのグループに含まれるそれぞれの内部メモリにおける目的のメモリエレメント・サブブロック行位置に、並列に転送するために用いられるものであり、この並列転送に基づいて、(N/m)クロックサイクルで、前記ライトコントロール機能ユニットによる前記内部メモリへのN×Nのマトリックスエレメントのライトが行われるものである請求項1に記載の装置。 - N×N(Nは2以上の所定の正の整数である)のマトリックスエレメント及び転置の正方マトリックスにアクセスし、単一命令複数データモードで動作する方法であって、
m個(mは所定の正の整数であり、Nの除数である)のマトリックスエレメントに等しいデータ幅を各々有するN個のプロセッシングエレメントを、(N/m)グループにグループ化し、各々の前記グループは、m個のプロセッシングエレメントを有し、更に
m個のマトリックスエレメントに等しいデータ幅を各々有するN個の単一ポートの内部メモリを、(N/m)グループにグループ化し、各々の前記グループは、m個の内部メモリを含み、更に、
リードコントロール機能及びライトコントロール機能によって、前記プロセッシングエレメントと内部メモリとの間の接続を行わせ、2×(N/m)クロックサイクルでマトリックスのコピー及びマトリックスの転置の実行を可能とする、方法。 - 単一命令複数データモードで動作してN×N正方マトリックスにアクセスする装置であって、
N個の内部メモリを有し、各々の前記内部メモリは、m個のマトリックスエレメントに等しいデータ幅のデータを入出力し、mは所定の正の整数であり、Nの除数であり、
前記N個の内部メモリは、(N/m)個のグループにグループ化され、各々の前記グループは、m個の前記内部メモリを有し、
前記N個の内部メモリに格納された前記N×N正方マトリックスは、
(N/m)×(N/m)個のm×mサブマトリックスに区画して扱われ、
各々の前記m×mサブマトリックスは、m行m列のマトリックスエレメントを有し、1つのグループを形成するm個の内部メモリに格納され、
前記グループの各々の内部メモリは、m×mサブマトリックスの対応する列のm行のマトリックスエレメントを1つのワードとして格納し、
更に、N個のプロセッシングエレメントを有し、各々の前記プロセッシングエレメントは、m個のマトリックスエレメントに等しいデータ幅を有し、
前記N個のプロセッシングエレメントは、(N/m)グループにグループ化され、
各々の前記グループは、前記内部メモリのグループに関連して、m個のプロセッシングエレメントを有し、各々の前記プロセッシングエレメントは、(N/m)個のレジスタを有するレジスタファイルを含み、各々の前記レジスタは、m×mサブマトリックスの対応する列のm行のマトリックスエレメントを1ワードとして格納し、
更に、前記N個のプロセッシングエレメントと前記N個の内部メモリとの間に配されたコネクション装置を有し、
前記コネクション装置は、リードコントロール機能ユニット及びライトコントロール機能ユニットを含み、
前記リードコントロール機能ユニットは、
リードアドレス発生手段と、
スワップユニットと、
(N/m)個の転置ユニットと、
を含み、
前記ライトコントロール機能ユニットは、
ライトアドレス発生手段
を含み、
N個の前記内部メモリに格納された前記N×N正方マトリックスを読出して前記N×N正方マトリックスを、N個の前記プロセッシングエレメントの前記レジスタに格納する際に、
前記リードコントロール機能ユニットは、
前記リードアドレス発生手段によってそれぞれアドレスされた前記(N/m)グループの前記内部メモリから(N/m)個の前記m×mサブマトリックスをそれぞれ読出して前記スワップユニットに転送し、
前記スワップユニットは、前記(N/m)個の前記m×mサブマトリックスの内の所定の(N/m)/2対の各対の間のスワッピングを行い、
前記スワップユニットは、対角方向に位置した(N/m)個の前記m×mサブマトリックスについてはスワッピングを行わず、
前記スワップユニットからの前記(N/m)個の前記m×mサブマトリックスは、前記(N/m)個の転置ユニットに供給し、
前記(N/m)個の転置ユニットの各々は、前記スワップユニットから供給されたm×mサブマトリックスの転置されたバージョンを生成させ、
前記(N/m)個の転置ユニットからの(N/m)個の前記転置されたm×mサブマトリックスが、前記(N/m)グループのプロセッシングエレメントの前記レジスタにそれぞれ格納される、
操作を1サイクルで行い、
前記N個の内部メモリから前記N個のプロセッシングエレメントの前記レジスタへの前記N×N正方マトリックスの転置を伴うコピーが(N/m)サイクルで行われ、
前記N個のプロセッシングエレメントのレジスタに格納された前記N×N正方マトリックスを、前記N個の内部メモリに書き込む際に、
前記ライトコントロール機能ユニットは、
(N/m)個の前記m×mサブマトリックスを、前記(N/m)グループのプロセッシングエレメントの前記レジスタからそれぞれ読出し、前記ライトアドレス発生手段によってそれぞれアドレスされた前記(N/m)グループの内部メモリにそれぞれ書き込む、
操作を1サイクルで行い、
前記N個のプロセッシングエレメントの前記レジスタから前記N個の内部メモリへの前記N×N正方マトリックスのコピーが(N/m)サイクルで行われ
前記ライトコントロール機能ユニットによって前記N個の内部メモリに書き込まれる前記N×N正方マトリックスが、前記N個の内部メモリに格納されていた元の前記N×N正方マトリックスのコーナーターン済みのバージョンである装置。 - 単一命令複数データモードで動作してN×N正方マトリックスにアクセスする装置であって、
N個の内部メモリを有し、
各々の前記内部メモリは、m個のマトリックスエレメントに等しいデータ幅のデータを入出力し、mは所定の正の整数であり、Nの除数であり、
前記N個の内部メモリは、(N/m)グループにグループ化され、
各々の前記グループは、m個の前記内部メモリを有し、
前記N個の内部メモリに格納されたN×N正方マトリックスは、(N/m)×(N/m)個のm×mサブマトリックスに区画して扱われ、
各々のm×mサブマトリックスは、m行m列のマトリックスエレメントを有し、1つのグループを形成するm個の内部メモリに格納され、
前記グループの各々の内部メモリは、m×mサブマトリックスの対応する列のm行のマトリックスエレメントを1つのワードとして格納し、
更に、N個のプロセッシングエレメントを有し、各々の前記プロセッシングエレメントは、m個のマトリックスエレメントに等しいデータ幅を有し、
前記N個のプロセッシングエレメントは、(N/m)グループにグループ化され、
各々の前記グループは、前記内部メモリのグループに関連して、m個のプロセッシングエレメントを有し、
各々の前記プロセッシングエレメントは、(N/m)個のレジスタを有するレジスタファイルを含み、各々の前記レジスタは、m×mサブマトリックスの対応する列のm行のマトリックスエレメントを1ワードとして格納し、
更に、前記N個のプロセッシングエレメントと前記N個の内部メモリとの間に配されたコネクション装置を有し、
前記コネクション装置は、リードコントロール機能ユニット及びライトコントロール機能ユニットを含み、
前記リードコントロール機能ユニットは、
リードアドレス発生手段と、
スワップユニットと、
(N/m)個の転置ユニットと、
を含み、
前記ライトコントロール機能ユニットは、
ライトアドレス発生手段
を含み、
前記N個の内部メモリに格納された前記N×N正方マトリックスを読出して前記N×N正方マトリックスを前記N個のプロセッシングエレメントの前記レジスタに格納する際に、
前記リードコントロール機能ユニットは、
前記リードアドレス発生手段によってそれぞれアドレスされた(N/m)グループの内部メモリから(N/m)個のm×mサブマトリックスをそれぞれ読出して前記(N/m)個の転置ユニットに転送し、
前記(N/m)個の転置ユニットの各々は、それに供給されたm×mサブマトリックスの転置されたバージョンを発生させ、
前記(N/m)個の転置ユニットからそれぞれ出力された(N/m)個の転置されたm×mサブマトリックスの各々は、前記スワップユニットに供給され、
前記スワップユニットは、前記(N/m)個のm×mサブマトリックスの内の所定の(N/m)/2対の各対の間のスワッピングを行い、
前記スワップユニットは、対角方向に位置した(N/m)個の前記m×mサブマトリックスについてはスワッピングを行わず、
前記スワップユニットから出力された前記(N/m)個のm×mサブマトリックスを、前記(N/m)グループの前記プロセッシングエレメントのレジスタにそれぞれ格納する、
操作を1サイクルで行い、
前記N個の内部メモリから前記N個のプロセッシングエレメントのレジスタへの前記N×N正方マトリックスのコピーが(N/m)サイクルで行われ、
前記N個のプロセッシングエレメントの前記レジスタに格納された前記N×N正方マトリックスをN個の内部メモリに書き込む際に、
前記ライトコントロール機能ユニットは、
(N/m)個のm×mサブマトリックスを前記(N/m)グループのプロセッシングエレメントの前記レジスタからそれぞれ読出し、
前記ライトアドレス発生手段によってそれぞれアドレスされた(N/m)グループの内部メモリにそれぞれ書き込む、
操作を1サイクルで行い、
前記N個のプロセッシングエレメントの前記レジスタから前記N個の内部メモリへの前記N×N正方マトリックスのコピーが(N/m)サイクルで行われ、
前記ライトコントロール機能ユニットによって前記N個の内部メモリに書き込まれる前記N×N正方マトリックスが、前記N個の内部メモリに格納されていた元の前記N×N正方マトリックスのコーナーターン済みのバージョンである装置。 - 単一命令複数データモードで動作してN×N正方マトリックスにアクセスする装置であって、
N個の内部メモリを有し、各々の前記内部メモリは、m個のマトリックスエレメントに等しいデータ幅のデータを入出力し、mは所定の正の整数であり、Nの除数であり、
前記N個の内部メモリは、(N/m)グループにグループ化され、各々の前記グループは、m個の前記内部メモリを有し、
前記N個の内部メモリに格納されたN×N正方マトリックスは、(N/m)×(N/m)個のm×mサブマトリックスに区画して扱われ、
各々の前記m×mサブマトリックスは、m行m列のマトリックスエレメントを有し、1つのグループを形成するm個の前記内部メモリに格納され、
前記グループの各々の内部メモリは、m×mサブマトリックスの対応する列のm行のマトリックスエレメントを1つのワードとして格納し、
更に、N個のプロセッシングエレメントを有し、
各々の前記プロセッシングエレメントは、m個のマトリックスエレメントに等しいデータ幅を有し、
前記N個のプロセッシングエレメントは、(N/m)グループにグループ化され、
各々の前記グループは、前記内部メモリのグループに関連して、m個のプロセッシングエレメントを有し、
各々の前記プロセッシングエレメントは、(N/m)個のレジスタを有するレジスタファイルを含み、各々の前記レジスタは、前記m×mサブマトリックスの対応する列のm行のマトリックスエレメントを1ワードとして格納し、
更に、前記N個のプロセッシングエレメントと前記N個の内部メモリとの間に配されたコネクション装置を有し、
前記コネクション装置は、リードコントロール機能ユニット及びライトコントロール機能ユニットを含み、
前記リードコントロール機能ユニットは、
リードアドレス発生手段
を含み、
前記ライトコントロール機能ユニットは、
ライトアドレス発生手段と、
スワップユニットと、
(N/m)個の転置ユニットと、
を含み、
前記N個の内部メモリに格納された前記N×N正方マトリックスを読出して前記N×N正方マトリックスを、前記N個のプロセッシングエレメントの前記レジスタに格納する際に、
前記リードコントロール機能ユニットは、
(N/m)個の前記m×mサブマトリックスを前記リードアドレス発生手段によってそれぞれアドレスされた前記(N/m)グループの前記内部メモリからそれぞれ読出し、前記(N/m)個の前記m×mサブマトリックスを前記(N/m)グループのプロセッシングエレメントの前記レジスタにそれぞれ格納する、
操作を1サイクルで行い、
前記N個の内部メモリから前記N個のプロセッシングエレメントの前記レジスタへの前記N×N正方マトリックスへのコピーが(N/m)サイクルで行われ、
前記N個のプロセッシングエレメントの前記レジスタに格納された前記N×N正方マトリックスをN個の内部メモリに書き込む際に、
前記ライトコントロール機能ユニットは、
(N/m)個の前記m×mサブマトリックスを(N/m) グループのプロセッシングエレメントのレジスタからそれぞれ読出して(N/m)個の転置ユニットにそれぞれ供給し、
各々の(N/m)個の転置ユニットは、前記レジスタから供給されるm×mサブマトリックスの転置されたバージョンを発生させ、
(N/m)個の転置ユニットからの(N/m)個の転置されたm×mサブマトリックスは、スワップユニットに供給され、
前記スワップユニットは、(N/m)個のm×mサブマトリックスから、各々の所定の(N/m)/2対の各対の間のスワッピングを行い、
前記スワップユニットは、対角方向に配された(N/m)個の前記m×mサブマトリックスについては、スワッピングを行わず、
前記スワップユニットからの前記(N/m)個の前記m×mサブマトリックスを、前記ライトアドレス発生手段によってそれぞれアドレスされた前記(N/m)グループの内部メモリに書き込む、
操作を、1サイクルで行い、
前記N個のプロセッシングエレメントのレジスタから前記N個の内部メモリへの前記N×N正方マトリックスのコピーが(N/m)サイクルで行われ、
前記ライトコントロール機能ユニットによって前記N個の内部メモリに書き込まれた前記N×N正方マトリックスは、前記N個の内部メモリに格納されていた元の前記N×N正方マトリックスのコーナーターン済みのバージョンである装置。 - 単一命令複数データモードで動作してN×N正方マトリックスにアクセスする装置であって、
N個の内部メモリを有し、各々の前記内部メモリは、m個のマトリックスエレメントに等しいデータ幅のデータを入出力し、mは所定の正の整数であり、Nの除数であり、
前記N個の内部メモリは(N/m)グループにグループ化され、
各々の前記グループは、m個の前記内部メモリを有し、
前記N個の内部メモリに格納されたN×N正方マトリックスは、(N/m)×(N/m)個のm×mサブマトリックスに区画して扱われ、
各々の前記m×mサブマトリックスは、m行m列のマトリックスエレメントを有し、1つのグループを形成するm個の内部メモリに格納され、前記グループの各々の前記内部メモリは、前記m×mサブマトリックスの対応する列のm行のマトリックスエレメントを1つのワードとして格納し、
更に、N個のプロセッシングエレメントを有し、各々の前記プロセッシングエレメントは、m個のマトリックスエレメントに等しいデータ幅を有し、
前記N個のプロセッシングエレメントは、(N/m)グループにグループ化され、
各々の前記グループは、前記内部メモリのグループに関連して、m個のプロセッシングエレメントを有し、
各々の前記プロセッシングエレメントは、(N/m)個のレジスタを有するレジスタファイルを含み、各々の前記レジスタは、m×mサブマトリックスの対応する列のm行のマトリックスエレメントを1ワードとして格納し、
更に、前記N個のプロセッシングエレメントと前記N個の内部メモリとの間に配されたコネクション装置を有し、
前記コネクション装置は、リードコントロール機能ユニット及びライトコントロール機能ユニットを含み、
前記リードコントロール機能ユニットは、
リードアドレス発生手段
を含み、
前記ライトコントロール機能ユニットは、
ライトアドレス発生手段と、
スワップユニットと、
(N/m)個の転置ユニットと、
を含み、
前記N個の内部メモリに格納された前記N×N正方マトリックスを読出して前記N×N正方マトリックスを前記N個のプロセッシングエレメントの前記レジスタに格納する際に、
前記リードコントロール機能ユニットは、
(N/m)個の前記m×mサブマトリックスを前記リードアドレス発生手段によってそれぞれアドレスされた(N/m)グループの内部メモリからそれぞれ読出し、
前記(N/m)個の前記m×mサブマトリックスを前記(N/m)グループのプロセッシングエレメントの前記レジスタにそれぞれ格納する、
操作を1サイクルで行い、
前記N個の内部メモリから前記N個のプロセッシングエレメントの前記レジスタへの前記N×N正方マトリックスへのコピーが(N/m)サイクルで行われ、
前記N個のプロセッシングエレメントの前記レジスタに格納された前記N×N正方マトリックスを前記N個の内部メモリに書き込む際に、
前記ライトコントロール機能ユニットは、
(N/m)個のm×mサブマトリックスを前記(N/m)グループのプロセッシングエレメントの前記レジスタからそれぞれ読出して前記スワップユニットに供給し、
前記スワップユニットは、前記(N/m)個の前記m×mサブマトリックスから、各々の所定の(N/m)/2対の各対の間のスワッピングを行い、
前記スワップユニットは、対角方向に配された前記(N/m)個の前記m×mサブマトリックスについては、スワッピングを行わず、
前記スワップユニットからの(N/m)個の前記m×mサブマトリックスは、前記(N/m)個の転置ユニットにそれぞれ供給し、
前記(N/m)個の転置ユニットの各々は、前記スワップユニットから供給されたm×mサブマトリックスの転置されたバージョンを生成させ、
前記(N/m)個の転置ユニットからの前記(N/m)個の転置されたm×mサブマトリックスは、前記ライトアドレス発生手段によってそれぞれアドレスされた(N/m)グループの前記内部メモリにそれぞれ書き込む、
操作を1サイクルで行い、
前記N個のプロセッシングエレメントのレジスタから前記N個の内部メモリへの前記N×N正方マトリックスのコピーが(N/m)サイクルで行われ、
前記ライトコントロール機能ユニットによって前記N個の内部メモリに書き込まれた前記N×N正方マトリックスは、前記N個の内部メモリに格納されていた元の前記N×N正方マトリックスのコーナーターン済みのバージョンである装置。 - 単一命令複数データモードで動作してN×N正方マトリックスにアクセスする装置であって、
N個の内部メモリを有し、各々の前記内部メモリは、m個のマトリックスエレメントに等しいデータ幅のデータを入出力し、mは所定の正の整数であり、Nの除数であり、
前記N個の内部メモリは、(N/m)グループにグループ化され、
各々の前記グループは、m個の前記内部メモリを有し、
前記N個の内部メモリに格納されたN×N正方マトリックスは、(N/m)×(N/m)個のm×mサブマトリックスに区画して扱われ、
各々の前記m×mサブマトリックスは、m行m列のマトリックスエレメントを有し、一のグループを形成するm個の前記内部メモリに格納され、
前記グループの各々の前記内部メモリは、m×mサブマトリックスの対応する列のm行のマトリックスエレメントを一ワードとして格納し、
更に、N個のプロセッシングエレメントを有し、
各々の前記プロセッシングエレメントは、m個のマトリックスエレメントに等しいデータ幅を有し、
前記N個のプロセッシングエレメントは、(N/m)グループにグループ化され、各々の前記グループは、前記内部メモリのグループに関連して、m個のプロセッシングエレメントを有し、
各々の前記プロセッシングエレメントは、(N/m)個のレジスタを有するレジスタファイルを含み、各々の前記レジスタは、前記m×mサブマトリックスの対応する列のm行のマトリックスエレメントを1ワードとして格納し、
更に、前記N個のプロセッシングエレメントと前記N個の内部メモリとの間に配されたコネクション装置を有し、
前記コネクション装置は、リードコントロール機能ユニット及びライトコントロール機能ユニットを含み、
前記リードコントロール機能ユニットは、
リードアドレス発生手段と、
スワップユニットと、
を含み、
前記ライトコントロール機能ユニットは、
ライトアドレス発生手段と、
(N/m)個の転置ユニットと、
を含み、
前記リードコントロール機能ユニットは、前記N個の内部メモリに格納された前記N×N正方マトリックスを読出して前記N×N正方マトリックスを前記N個のプロセッシングエレメントの前記レジスタに格納する際に、
(N/m)個のm×mサブマトリックスを前記リードアドレス発生手段によってそれぞれアドレスされた前記(N/m)グループの内部メモリからそれぞれ読出して前記スワップユニットに転送し、
前記スワップユニットは、前記(N/m)個のm×mサブマトリックスから、各々の所定の(N/m)/2対の各対の間のスワッピングを行い、
前記スワップユニットは、対角方向に配された前記(N/m)個のm×mサブマトリックスについては、スワッピングを行わず、
前記スワップユニットからの(N/m)個のm×mサブマトリックスを、前記(N/m)グループのプロセッシングユニットの前記レジスタにそれぞれ格納する、
操作を1サイクルで行い、
前記N個の内部メモリからの前記N×N正方マトリックスの前記N個のプロセッシングエレメントの前記レジスタへのコピーが(N/m)サイクルで行われ、
前記N個のプロセッシングエレメントのレジスタに格納された前記N×N正方マトリックスを前記N個の内部メモリに書き込む際に、
前記ライトコントロール機能ユニットは、
(N/m)個のm×mサブマトリックスを前記(N/m)グループのプロセッシングエレメントの前記レジスタからそれぞれ読出して前記(N/m)個の転置ユニットに供給し、
前記(N/m)個の転置ユニットの各々は、前記レジスタから供給される前記m×mサブマトリックスの転置されたバージョンを発生させ、
前記(N/m)個の転置ユニットからの(N/m)個の転置されたm×mサブマトリックスを、前記ライトアドレス発生手段によってそれぞれアドレスされた前記(N/m)グループの内部メモリにそれぞれ書き込む、
操作を1サイクルで行い、
前記N個のプロセッシングエレメントのレジスタから前記N個の内部メモリへの前記N×N正方マトリックスの転置を伴うコピーが(N/m)サイクルで行われ、
前記ライトコントロール機能ユニットによって前記N個の内部メモリに書き込まれた前記N×N正方マトリックスは、前記N個の内部メモリに格納されていた元の前記N×N正方マトリックスのコーナーターン済みのバージョンである装置。 - 単一命令複数データモードで動作してN×N正方マトリックスにアクセスする装置であって、
N個の内部メモリを有し、各々の前記内部メモリは、m個のマトリックスエレメントに等しいデータ幅のデータを入出力し、mは所定の正の整数であり、Nの除数であり、
前記N個の内部メモリは、(N/m)グループにグループ化され、各々の前記グループは、m個の前記内部メモリを有し、
前記N個の内部メモリに格納されたN×N正方マトリックスは、(N/m)×(N/m)個のm×mサブマトリックスに区画して扱われ、
各々の前記m×mサブマトリックスは、m行m列のマトリックスエレメントを有し、1つのグループを形成するm個の内部メモリに格納され、前記グループの各々の内部メモリは、m×mサブマトリックスの対応する列のm行のマトリックスエレメントを1ワードとして格納し、
更に、N個のプロセッシングエレメントを有し、各々の前記プロセッシングエレメントは、m個のマトリックスエレメントに等しいデータ幅を有し、
前記N個のプロセッシングエレメントは、(N/m)グループにグループ化され、各々の前記グループは、前記内部メモリのグループに関連して、m個のプロセッシングエレメントを有し、
各々の前記プロセッシングエレメントは、(N/m)個のレジスタを有するレジスタファイルを含み、各々の前記レジスタは、m×mサブマトリックスの対応する列のm行のマトリックスエレメントを1ワードとして格納し、更に、
前記N個のプロセッシングエレメントと前記N個の内部メモリとの間に配されたコネクション装置を有し、
前記コネクション装置は、リードコントロール機能ユニット及びライトコントロール機能ユニットを含み、前記リードコントロール機能ユニットは、
リードアドレス発生手段と、
(N/m)個の転置ユニットと、
を含み、
前記ライトコントロール機能ユニットは、
ライトアドレス発生手段と、
スワップユニットと、
を含み、
前記N個の内部メモリに格納された前記N×N正方マトリックスを読出して前記N×N正方マトリックスを前記N個のプロセッシングエレメントの前記レジスタに格納する際に、
前記リードコントロール機能ユニットは、
(N/m)個の前記m×mサブマトリックスを前記リードアドレス発生手段によってそれぞれアドレスされた前記(N/m)グループの内部メモリからそれぞれ読出して前記(N/m)個の転置ユニットに転送し、
前記(N/m)個の転置ユニットの各々は、それに供給された前記m×mサブマトリックスの転置されたバージョンを発生させ、
前記(N/m)個の転置ユニットからの前記(N/m)個の転置されたm×mサブマトリックスを、前記(N/m)グループのプロセッシングエレメントの前記レジスタにそれぞれ格納する、
操作を1サイクルで行わせ、
前記N個の内部メモリからの前記N×N正方マトリックスの前記N個のプロセッシングエレメントの前記レジスタへのコピーが(N/m)サイクルで行われ、
前記N個のプロセッシングエレメントの前記レジスタに格納された前記N×N正方マトリックスをN個の内部メモリに書き込む際に、
前記ライトコントロール機能ユニットは、
(N/m)個の前記m×mサブマトリックスを前記(N/m)グループのプロセッシングエレメントの前記レジスタからそれぞれ読出して前記スワップユニットに供給し、
前記スワップユニットは、前記(N/m)個のm×mサブマトリックスから、各々の所定の(N/m)/2対の各対の間のスワッピングを行い、
前記スワップユニットは、対角方向に配された前記(N/m)個のm×mサブマトリックスについては、スワッピングを行わず、
前記スワップユニットからの(N/m)個のm×mサブマトリックスを、前記ライトアドレス発生手段によってそれぞれアドレスされた前記(N/m)グループの内部メモリにそれぞれ供給する、
操作を1サイクルで行わせ、
前記N個のプロセッシングエレメントの前記レジスタから前記N個の内部メモリへの前記N×N正方マトリックスへのコピーが(N/m)サイクルで行われ、
前記ライトコントロール機能ユニットによって前記N個の内部メモリに書き込まれた前記N×N正方マトリックスは、前記N個の内部メモリに格納されていた元の前記N×N正方マトリックスのコーナーターン済みのバージョンである装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2009/070272 WO2011064898A1 (en) | 2009-11-26 | 2009-11-26 | Apparatus to enable time and area efficient access to square matrices and its transposes distributed stored in internal memory of processing elements working in simd mode and method therefore |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013512479A JP2013512479A (ja) | 2013-04-11 |
JP5532132B2 true JP5532132B2 (ja) | 2014-06-25 |
Family
ID=42111322
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012524948A Active JP5532132B2 (ja) | 2009-11-26 | 2009-11-26 | Simdモードで動作するプロセッシング・エレメントの内部メモリに分散記憶された正方マトリックス及びその転置マトリックスに、時間と面積の効率良いアクセスを可能とする装置及び方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP5532132B2 (ja) |
WO (1) | WO2011064898A1 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5760532B2 (ja) * | 2011-03-14 | 2015-08-12 | 株式会社リコー | プロセッサ装置及びその演算方法 |
JP5888028B2 (ja) * | 2012-03-14 | 2016-03-16 | 株式会社リコー | Simd型のマイクロプロセッサ及びプロセッサシステム |
US9819951B2 (en) * | 2012-10-18 | 2017-11-14 | Nokia Technologies Oy | Image processing method, devices and system |
CN109445850A (zh) * | 2018-09-19 | 2019-03-08 | 成都申威科技有限责任公司 | 一种基于申威26010处理器的矩阵转置方法及系统 |
CN109408117B (zh) * | 2018-10-08 | 2021-01-26 | 京东方科技集团股份有限公司 | 矩阵转置装置及方法、显示装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3537074A (en) | 1967-12-20 | 1970-10-27 | Burroughs Corp | Parallel operating array computer |
JP2790911B2 (ja) * | 1989-12-01 | 1998-08-27 | 株式会社リコー | 直交変換演算装置 |
GB9509988D0 (en) * | 1995-05-17 | 1995-07-12 | Sgs Thomson Microelectronics | Matrix transposition |
US7386703B2 (en) | 2003-11-18 | 2008-06-10 | International Business Machines Corporation | Two dimensional addressing of a matrix-vector register array |
JP4698242B2 (ja) * | 2004-02-16 | 2011-06-08 | パナソニック株式会社 | 並列演算プロセッサ、並列演算プロセッサの動作を制御する制御プログラム及び制御方法、並びに並列演算プロセッサを搭載した画像処理装置 |
GB0420004D0 (en) | 2004-09-09 | 2004-10-13 | Koninkl Philips Electronics Nv | Interconnections in SIMD processor architectures |
JP5158091B2 (ja) | 2007-03-06 | 2013-03-06 | 日本電気株式会社 | 自律または共通制御されるpeアレイを有するシステムのためのデータ転送ネットワークおよび制御装置 |
-
2009
- 2009-11-26 JP JP2012524948A patent/JP5532132B2/ja active Active
- 2009-11-26 WO PCT/JP2009/070272 patent/WO2011064898A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
JP2013512479A (ja) | 2013-04-11 |
WO2011064898A1 (en) | 2011-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110770701B (zh) | 基于寄存器的矩阵乘法 | |
US5812147A (en) | Instruction methods for performing data formatting while moving data between memory and a vector register file | |
WO2013054468A1 (ja) | 転置演算装置とその集積回路、および転置処理方法 | |
US9110778B2 (en) | Address generation in an active memory device | |
JP5532132B2 (ja) | Simdモードで動作するプロセッシング・エレメントの内部メモリに分散記憶された正方マトリックス及びその転置マトリックスに、時間と面積の効率良いアクセスを可能とする装置及び方法 | |
JP2008513903A (ja) | シャッフル演算のためのマイクロプロセッサデバイス及び方法 | |
TWI603262B (zh) | 緊縮有限脈衝響應(fir)濾波器處理器,方法,系統及指令 | |
US20150356054A1 (en) | Data processor and method for data processing | |
JP3985797B2 (ja) | プロセッサ | |
WO2013097228A1 (zh) | 多粒度并行存储系统 | |
KR20210094666A (ko) | 메모리 디바이스에서 데이터를 구성하는 장치 및 방법 | |
KR101696987B1 (ko) | Fft/dft의 역순 배열 시스템과 방법 및 그 연산 시스템 | |
Sorokin et al. | Conflict-free parallel access scheme for mixed-radix FFT supporting I/O permutations | |
CN102156676B (zh) | 高速缓存系统 | |
US10452356B2 (en) | Arithmetic processing apparatus and control method for arithmetic processing apparatus | |
JP2002529814A (ja) | ベクトルアクセスを有するメモリ装置 | |
TWI794423B (zh) | 用於影像處理器之大查找表 | |
JP7136343B2 (ja) | データ処理システム、方法、およびプログラム | |
JP5659772B2 (ja) | 演算処理装置 | |
US8316215B2 (en) | Vector processor with plural arithmetic units for processing a vector data string divided into plural register banks accessed by read pointers starting at different positions | |
Tasnim et al. | MAGIC-DHT: Fast in-memory computing for Discrete Hadamard Transform | |
JPWO2019208566A1 (ja) | プロセッサ装置 | |
CN113542770B (zh) | 一种dct变换方法及dct变换电路系统 | |
JP6123510B2 (ja) | 半導体装置及び半導体装置の制御方法 | |
US7788471B2 (en) | Data processor and methods thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20131210 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140107 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140310 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20140325 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140407 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5532132 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |