JP5532132B2 - Simdモードで動作するプロセッシング・エレメントの内部メモリに分散記憶された正方マトリックス及びその転置マトリックスに、時間と面積の効率良いアクセスを可能とする装置及び方法 - Google Patents

Simdモードで動作するプロセッシング・エレメントの内部メモリに分散記憶された正方マトリックス及びその転置マトリックスに、時間と面積の効率良いアクセスを可能とする装置及び方法 Download PDF

Info

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
Application number
JP2012524948A
Other languages
English (en)
Other versions
JP2013512479A (ja
Inventor
リースケ、ハンノ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Publication of JP2013512479A publication Critical patent/JP2013512479A/ja
Application granted granted Critical
Publication of JP5532132B2 publication Critical patent/JP5532132B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures 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/8015One 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

本発明は、SIMDプロセッサアレイに関する。より詳細には、本発明は、複数の非隣接内部メモリ(internal memory、IMEM)ユニットを含む関連する内部メモリ(IMEM)ユニットにプロセッシング・エレメント(PE)から時間と面積の効率良いアクセスを可能とするように好適に適合されたコネクション装置に関する。
シングル・インストラクション・マルチプル・データ(SIMD)方式で動作する多くのプロセッサがこれまでに提案されている(特許文献1参照)。この種のプロセッサにおいて、あるプロセッシング・エレメント(PE)から、別のプロセッシング・エレメント(PE)の内部メモリ(IMEM)に格納されたデータへのアクセスを支持するために、種々の形式のインターPEデータ・アクセスが考えられている。図1は、SIMDプロセッサアレイの典型的な形態を示す図である。
あるPE100のIMEM101、ここでは例えばPE00、に格納されたデータを、別のPE、ここでは例えばPE01、において使用されるように供与する一つのやり方は、特許文献2に記載されているように、PE00のIMEMからPE00にデータをロードした後、インターPE通信チャネル102を介して(時計方向に)、又はインターPE通信チャネル103を介して(反時計方向に)、データをPE00からPE01に移動するものである。特許文献2には、PE間の通信チャネルとして用いられているリングバスシステムを介して、複数のPEを相互に接続したシステムが開示されている。このシステムによれば、2つの隣接PE間においてデータを交換するための廉価で高効率の方法が可能となる。それは、単一のリングバス、又は、双方向転送の場合には、2つのリングバスが必要なだけであり、2つの隣接PE間において、1クロックサイクルでデータを交換できることによる。
隣接PEからIMEMデータにアクセスすることを可能にする別のやり方が、特許文献3に開示されている。図2は、特許文献3の構成を例示している。図2に示すように、隣接PEのIMEMからのデータは、ダイレクトコネクション200を介して、8PE形態のPEに、ルーチングされる。マルチプレクサ201は、IMEMデータの中から各PEによってアクセスされるデータを選択する。この方法は、余分のマルチプレクサ201及びPEと隣接PEのIMEM間の接続とを必要とするだけなので、隣接IMEMデータにアクセスするための手早で廉価な方法である。
関連技術についての以下の分析は、本発明によって与えられる。
2つの関連技術の構成は、隣接データについては、効率的に、また限定された面積オーバーヘッドで動作するが、隣接していないPE間でデータを交換する場合に、難点がある。特許文献2においては、面積は増大しないが、通信チャネル上を転送されるデータのクロックサイクル数は、データ交換に係るPE間の距離に比例して増大する。従って、この解決策は、遠く離れたPE間のデータの転送にとってはもはや高速ではない。例えば、相互に相反する2つのリングバスを介して接続された16PEのシステムの場合、どれかのIMEMとPEとの間の通信を確保するには、最大で8クロックサイクルを必要とする。16×16エレメントのマトリックス(マトリックス)のコーナーターンの場合、IMEMに読み書きするための32クロックサイクルに加えて64クロックサイクルの転送遅延が発生するため、全体で96クロックサイクルが結果する。
特許文献3では、遅延は一定に保つことができる。しかし、コネクション・クロスバーの面積は、隣接PE−IMEM接続クロスバーの増大と共に増大する。そのため、各PEから各IMEMへのアクセスが支持可能となる一般的な場合では、非特許文献1に開示されているように、マルチプロセッサシステムオンチップ内のインターPE接続に、また特許文献4に開示されているように、レジスタ・リードポート接続の内部に、それぞれ用いられているフルクロスバー接続が必要となる。これは廉価な解決策とは言えない。
米国特許第3537074号明細書 国際公開第2008/108005号 米国特許出願公開第2008/320273号明細書 米国特許出願公開第2005/108503号明細書
M.Z. Urfianto, T. Isshiki, A.U. Khan, D. Li, H. Kunieda, "A Multiprocessor System on Chip Architecture with Enhanced Compiler Support and Efficient Interconnect," in IP/SoC 2006, Grenoble, France, Dec. 2006
上述した本発明による関連技術の分析は、概略して、次の通りである。
転置マトリックスの時間と面積の効率の良い生成のために非隣接IMEMユニットからのデータにアクセスしコーナーターンを行わせるための、図1について説明した第1の関連技術では、インターPE通信チャネル上にデータを転送する際に大きな転送遅延が発生する。
転置マトリックスの時間と面積の効率の良い生成のために非隣接IMEMユニットからのデータにアクセスしコーナーターンを行わせるための、図2について説明した第2の関連技術では、各PEと各IMEMの間のフルクロスバー接続に、大きな面積が必要となる。
従って、本発明の目的は、SIMDプロセッサアレイにおいて各PEからIMEMに時間と面積の効率良いアクセスを可能とする装置及び方法を提供することにある。
本発明の1つの側面によれば、各PEから、選択されたIMEMユニットへのアクセスのみがなされるコネクション装置が提供される。この選択は、マトリックスを分散された形態で格納しているIMEMユニットに直接アクセスするために、自身のIMEMユニットのみに、又は、転置マトリックスを生成してコーナーターンを行うために必要とされるIMEMユニットに、時間と面積の効率良いアクセスを可能とするようになされる。
本発明によれば、フルクロスバー接続の代りに、各々のプロセッシング・エレメントから、選択されたIMEMユニットへの接続のみが与えられる。これにより必要なセル及び正味の面積は約85%節減される。IMEM接続は、複数のIMEMユニット内に分散されて格納されたマトリックスに直接アクセスするために自身の内部メモリに、又は、転置マトリックスを生成してコーナーターンを行うために必要とされるIMEMユニットに、時間と面積の効率良いアクセスすることを可能とするように選択される。
本発明の他の特徴及び利点は、添付図面を参照してなされる以下の詳細な説明によって、当業者には自ずと明らかとされるであろう。添付図面には、本発明を実施する上の最良の形態と考えられる実施態様のみが、単に例示的に示されている。本発明は、理解されるように、他の実施態様も含み、これらの実施態様のいくつかの詳細な点については、本発明の範囲内で更なる変更が可能である。従って、図面及び説明は、本質的に例であり、限定的ではない。
図1は先行技術文献2のPEからIMEMへの相互接続の構成を示す図である。 図2は先行技術文献3のPEからIMEMへの相互接続の構成を示す図である。 図3は本発明の一実施態様の構成を示す図である。 図4(A)−図4(D)は2次元変換の別々の実行を示す図である。 図5はコネクション装置の構成を示す図である。 図6はN=16、m=4についてリードコントロール機能ユニットの構成を示す図である。 図7はリードコントロール機能ユニットの入力出力接続の構成を示す図である。 図8はセレクタの構成を示す図である。 図9はアドレスジェネレータ0の構成を示す図である。 図10はアドレスジェネレータ1の構成を示す図である。 図11はアドレスジェネレータ2の構成を示す図である。 図12はアドレスジェネレータ3の構成を示す図である。 図13は4×16バイトスワップユニットの構成を示す図である。 図14は4×4バイト転置ユニットの構成を示す図である。 図15はライトコントロール機能ユニットの構成を示す図である。 図16はライトコントロール機能ユニットの入力出力接続を示す図である。 図17はリードコントロール機能ユニットの作用を示すフローチャートである。 図18は各々m=4マトリックスエレメント(バイト)の複数のメモリエレメントにグループ化されたN=16×N個のマトリックスエレメント(バイト)によるマクロブロックの小分割と、メモリエレメントサブブロックとメモリエレメントサブブロック行を示す。 図19(A)−図19(D)はレベル2のマトリックスをレベル1の4個のマトリックスに小分割することを示す。 図20(A)−図20(D)は部分アドレスオフセット値を各レベル2の各ブロックに割当てることを示す。 図21は各レベルからの各メモリエレメントサブブロックのためのアドレスオフセット値を有するアドレスオフセットマトリックスの発生を示す。 図22は各メモリエレメントサブブロックの正しい縦方向位置をもってIMEMからロードされたマトリックスを示す。 図23は対ごとのスワッピングの後の各メモリエレメントサブブロックの正しい横方向及び縦方向位置を有するマトリックスを示す。 図24はメモリエレメントサブブロックのコーナーターンの例を示す。 図25(A)−図25(D)はN/m(=4)のリード指示の実行後N/m(=4)個のPEレジスタに格納されるマトリックスを示す。 図26はライトコントロール機能ユニットの作用を示すフローチャートである。 図27は4回のライト転送指示の後にIMEMに格納されるマトリックスデータを示す。 図28はデータビット幅m(=4)ピクセルでN(=16)×Nピクセルのマトリックスのコーナーターンを行わせるための制御信号の設定を示す。 図29はクロックサイクル1リード操作においてコネクション装置により8×8マトリックスを転置するマトリックス転置処理を示す。 図30はクロックサイクル2リード操作においてコネクション装置により8×8マトリックスを転置するマトリックス転置処理を示す。 図31はクロックサイクル3リード操作においてコネクション装置により8×8マトリックスを転置するマトリックス転置処理を示す。 図32はクロックサイクル4リード操作においてコネクション装置により8×8マトリックスを転置するマトリックス転置処理を示す。 図33はクロックサイクル1ライト操作においてコネクション装置により8×8マトリックスを転置するマトリックス転置処理を示す。 図34はクロックサイクル2ライト操作においてコネクション装置により8×8マトリックスを転置するマトリックス転置処理を示す。 図35はクロックサイクル3ライト操作においてコネクション装置により8×8マトリックスを転置するマトリックス転置処理を示す。 図36はクロックサイクル4ライト操作においてコネクション装置により8×8マトリックスを転置するマトリックス転置処理を示す。 図37はクロックサイクル1リード操作においてコネクション装置により8×8マトリックスを転置するマトリックス転置処理を示す。 図38はクロックサイクル2リード操作においてコネクション装置により8×8マトリックスを転置するマトリックス転置処理を示す。 図39はクロックサイクル1ライト操作においてコネクション装置により8×8マトリックスを転置するマトリックス転置処理を示す。 図40はクロックサイクル2ライト操作においてコネクション装置により8×8マトリックスを転置するマトリックス転置処理を示す。 図41はクロックサイクル1リード操作においてコネクション装置により16×16マトリックスを転置するマトリックス転置処理を示す。 図42はクロックサイクル2リード操作においてコネクション装置により16×16マトリックスを転置するマトリックス転置処理を示す。 図43はクロックサイクル3リード操作においてコネクション装置により16×16マトリックスを転置するマトリックス転置処理を示す。 図44はクロックサイクル4リード操作においてコネクション装置により16×16マトリックスを転置するマトリックス転置処理を示す。 図45はクロックサイクル5リード操作においてコネクション装置により16×16マトリックスを転置するマトリックス転置処理を示す。 図46はクロックサイクル6リード操作においてコネクション装置により16×16マトリックスを転置するマトリックス転置処理を示す。 図47はクロックサイクル7リード操作においてコネクション装置により16×16マトリックスを転置するマトリックス転置処理を示す。 図48はクロックサイクル8リード操作においてコネクション装置により16×16マトリックスを転置するマトリックス転置処理を示す。 図49はクロックサイクル1ライト操作においてコネクション装置により16×16マトリックスを転置するマトリックス転置処理を示す。 図50はクロックサイクル2ライト操作においてコネクション装置により16×16マトリックスを転置するマトリックス転置処理を示す。 図51はクロックサイクル3ライト操作においてコネクション装置により16×16マトリックスを転置するマトリックス転置処理を示す。 図52はクロックサイクル4ライト操作においてコネクション装置により16×16マトリックスを転置するマトリックス転置処理を示す。 図53はクロックサイクル5ライト操作においてコネクション装置により16×16マトリックスを転置するマトリックス転置処理を示す。 図54はクロックサイクル6ライト操作においてコネクション装置により16×16マトリックスを転置するマトリックス転置処理を示す。 図55はクロックサイクル7ライト操作においてコネクション装置により16×16マトリックスを転置するマトリックス転置処理を示す。 図56はクロックサイクル8ライト操作においてコネクション装置により16×16マトリックスを転置するマトリックス転置処理を示す。 図57はクロックサイクル1リード操作においてコネクション装置により16×16マトリックスを転置するマトリックス転置処理を示す。 図58はクロックサイクル2リード操作においてコネクション装置により16×16マトリックスを転置するマトリックス転置処理を示す。 図59はクロックサイクル3リード操作においてコネクション装置により16×16マトリックスを転置するマトリックス転置処理を示す。 図60はクロックサイクル4リード操作においてコネクション装置により16×16マトリックスを転置するマトリックス転置処理を示す。 図61はクロックサイクル1ライト操作においてコネクション装置により16×16マトリックスを転置するマトリックス転置処理を示す。 図62はクロックサイクル2ライト操作においてコネクション装置により16×16マトリックスを転置するマトリックス転置処理を示す。 図63はクロックサイクル3ライト操作においてコネクション装置により16×16マトリックスを転置するマトリックス転置処理を示す。 図64はクロックサイクル4ライト操作においてコネクション装置により16×16マトリックスを転置するマトリックス転置処理を示す。 図65はコネクション装置のリードコントロール機能ユニットの別の構成例を示す。 図66はコネクション装置のライトコントロール機能ユニットの別の構成例を示す。 図67はコネクション装置のリードコントロール機能ユニットの更に別の構成例を示す。 図68はコネクション装置のライトコントロール機能ユニットの更に別の構成例を示す。 図69はコネクション装置のリードコントロール機能ユニットの更に別の構成例を示す。 図70はコネクション装置のライトコントロール機能ユニットの更に別の構成例を示す。 図71はコネクション装置のリードコントロール機能ユニットの更に別の構成例を示す。 図72はコネクション装置のライトコントロール機能ユニットの更に別の構成例を示す。
本発明の好ましい態様を図面について説明する。図1を参照して説明した第1の関連技術と比較して、本発明による、時間と面積の効率良い転置マトリックスを発生させて非隣接IMEMユニットからのデータにアクセスしてコーナーターンを速やかに実行する仕方は、面積要求をごくわずか増大させるだけで、転置マトリックスを発生させるのに要する時間を著しく減少させる。
また、図2を参照して説明した第2の関連技術と比較して、本発明による、時間と面積の効率良い転置マトリックスを発生させて非隣接IMEMユニットからのデータにアクセスしてコーナーターンを速やかに実行する仕方は、所要の時間をごくわずか増大させるだけで、転置マトリックスを発生させるための面積要求を著しく減少させる。
PEと選択されたIMEMユニットの間のコネクション装置を介したアクセスを可能とすることによって、第1の関連技術と比較して、所要のクロックサイクル数を少なくし、第2の関連技術と比較して所要の面積要求を減少させることが可能となる。
本発明の例示的な実施態様によるコネクション装置によれば、IMEMユニットに時間と面積の効率良いアクセスを可能として、IMEMユニットに分散して格納されているN×Nピクセルマトリックスへの直接アクセスを提供すると共に、コーナーターンを実行するためのN×N転置ピクセルマトリックスの発生に必要なIMEMユニットにアクセスすることが可能となる。
例示的一実施態様において用いられるコネクション装置と特定のアルゴリズムのための方法について以下に説明する。
図3は、本発明の第1の例示的な実施態様の構成を示す図である。図3には、PEとIMEMの相互接続が示されている。図3を参照すると、16個のPE300、16個のIMEM301、PE300のアレイとIMEM301のアレイとの間に配されたコネクション装置302、並びに、コネクション装置302を制御するコントロール装置303が設けられている。アルゴリズムの一例として、N=16バイト×N=16バイトのマトリックスのエレメントの位置(x、y)を(y、x)に変更するマトリックスのコーナーターンが、m=4バイトのデータビット幅について実行される。
この種のマトリックスのコーナーターンは、画像及びビデオ処理アルゴリズムにおいて、例えばJPEG、MPEG1、MPEG2、MPEG4、H.261、H.263、H264等において極めて度々行われる。例えばコーナーターンは、図4A−4Dに示すように、横方向に第1の変換ステップの出力に対し転置操作を行うことによってマクロブロックに対して別々の仕方で2次元フーリエ変換(FFT)又は離散コサイン変換(DCT)処理を行う場合に実行される。図4(A)−図4(D)に、マクロブロック402を示し、このマクロブロックは、16×16ピクセルデータ400から成り、16個のサブブロック401に分割される。垂直エッジに水平フィルタ403をかけた後、図4(C)の左上の入力サブブロック404のコーナーターン405を実行する。最後に水平エッジに垂直フィルタ407をかけ、図4(D)に示した2次元フィルタリングを実行するための出力ピクセル値408を得る。コーナーターンのための転置機能を備えたコネクション装置について以下に詳細に説明する。
図5は、第1の実施態様によるコネクション装置の構成を示す図である。図5のコネクション装置500は、図3のコネクション装置302に対応している。図5を参照すると、コネクション装置500は、リードコントロール機能ユニット501とライトコントロール機能ユニット502とを備えている。入力データ信号及び出力データデータ信号は、一側でIMEM群に、他側でPE群に、それぞれ接続されている。適切に機能を選択し実行するには、多くの追加の制御信号が必要となる。リードコントロール機能ユニット501では、IMEM群からのデータパスは、2つのパスに、即ちパス0とパス1とに分けられる。第1のパス(パス0)は、セレクタ505の第1入力に接続される。第2のパス(パス1)はリード変換ユニット(R_TRANS)506を有し、その出力は、セレクタ505の第2入力に接続される。セレクタ505により選択されたパス上のデータはPE群に与えられる。
ライトコントロール機能ユニット502では、PE群からのデータパスは、2つのパスに、即ちパス0とパス1とに分けられる。第1のパス(パス0)は、セレクタ509の第1入力に接続される。第2のパス(パス1)は、ライト変換ユニット(W_TRANS)510を有し、その出力は、セレクタ509の第2入力に接続される。セレクタ509により選択されたパス上のデータはIMEM群に与えられる。リードコントロール機能ユニット501の第1のパス(パス0)及びライトコントロール機能ユニット502の第1のパス(パス0)は、入力側と出力側との間の直接接続を与え、各PEと自身のIMEMとの間の接続を可能とする。リードコントロール機能ユニット501の第2のパス(パス1)に配されたリード変換ユニット(R_TRANS)506と、ライトコントロール機能ユニット502の第2のパス(パス1)に配されたライト変換ユニット(W_TRANS)510とは、以下に詳細に説明するように、必要なデータ位置を変更して転置マトリックスを形成する働きをする。
図6は、リードコントロール機能ユニットの構成を示すブロック図である。マトリックスのエレメントの数Nは16、一のメモリエレメントIMEMに格納されたマトリックスのエレメントの数は4である。リードコントロール機能ユニットは、図7に示した入力及び出力の接続を有している。
入力メモリリードベースアドレスMEM_Base_Addressは、IMEMリードアドレスを計算するために用いられる。2ビットカウンタ値、即ちカウンタユニット(3ビットカウンタ)600によって発生させた下位2ビットと、インバータ604によって発生させたその反転値は、アドレスジェネレータ(アドレス発生器)603の内部でのIMEMリード(Read)アドレスの計算と内部制御のためのオフセットとして用いられる。3ビットカウンタ600の下位2ビットの値は、CNT[1:0](信号名)とも呼ばれる(図7参照)。アドレスジェネレータ603からIMEMリードアドレスへの出力アドレスはIMEMデータの読出しに用いられる。IMEMからのリードデータは、リードコントロール機能ユニット内の処理ステージを通過した後、PEレジスタファイルPE−RF608にライト(Write)データとして転送され、3ビットカウンタ600の下位2ビットによって指定されるアドレス607に格納される。なお、この実施態様において、単純化のため、IMEMユニットは、それからの読出し(リード)において、追加遅延を生じさせないので、アドレスが供与された同じクロックサイクルにおいてデータが読出される。
図3においてコントロール装置303から供与された信号PATHは、リードコントロール機能ユニット内の処理を制御するために用いられる。16個の内部メモリ(IMEM0−IMEM F)の4アドレスを計算した後、アドレスは、セレクタ601を経て内部メモリ(IMEM0−IMEM F)602に転送され、4×16バイト(4×4×4バイト)のデータワードは、16個の内部メモリ(IMEM0〜IMEM F)によって受信される。4×16バイトのデータワードは、4×16バイトスワップユニット605に転送され、そこで、メモリエレメントサブブロックが横方向に相互に入れ替えられる。この実施態様では、一サブブロックは、4×4サブマトリックス(サブマトリックス)に対応し、一マトリックスエレメントのサイズは1バイトである。
より詳細には、IMEM0−3からの4×4バイトのリードデータは、第1の4×4サブマトリックスに対応し、IMEM4−7からの4×4バイトのリードデータは、第2の4×4サブマトリックスに対応し、IMEM8−Bからの4×4バイトのリードデータは、第3の4×4サブマトリックスに対応し、IMEMB−Fからの4×4バイトのリードデータは、第4の4×4サブマトリックスに対応する。第1から第4の4×4サブマトリックスは、4×16バイトスワップユニット605に供給され、第1から第4の4×4サブマトリックスが各々対角エレメントを形成しない限り、各所定対の4×4サブマトリックスの間にスワッピングが行われる。即ち、4×16バイトスワップユニット605は、対角エレメントを形成する第1から第4の4×4サブマトリックスをスワッピングなしで通過させる。
4×16バイトスワップユニット605から出力される4個の4×4サブマトリックス(サブマトリックス)は、4個の4×4バイトの転置ユニット606にそれぞれ供給される。各々の4×4バイトの転置ユニット606は、4×4サブマトリックスの転置を実行する。各々の4×4バイトの転置ユニット606では、各々のサブマトリックス即ち16バイトのデータワードが、縦幅4バイトの4個の横方向メモリエレメントとして整えられた後、各バイトの位置を(x、y)から(y、x)に転置する。リードコントロール機能ユニットの4×16バイトスワップユニット605と4×4バイトの転置ユニット606において行われる上述のスワップ及び転置の各操作は、図57から図61を参照して、後にクロックサイクルベースで詳述する。
図8は、IMEM入力アドレスのセレクタを示す図である。図8のこのセレクタは、図6のセレクタ601と図15について後述するセレクタ1401を形成する。図6の各セレクタ601は、リードコントロール機能ユニットからのRead_addressとライトコントロール機能ユニットからのWrite_addressとを受け(これは図6には示してないが図15を参照して後に説明する)Read_addressとWrite_addressとの一方を選択し、選択されたアドレスとリード/ライト制御信号R/Wとを対応の群のIMEMに供給する。図8を参照すると、セレクタ703を介した選択は、3ビットカウンタユニットCNT[2]702の上位ビット(リードに対しては“0”、ライトに対しては“1”とし得る)によって定まる移送方向に依存して行われる。リードの場合はリードコントロール機能ユニットからのアドレス700が使用され、そうでなければ、ライトコントロール機能ユニットからのアドレス701が使用される。
図9に、図6のアドレスジェネレータ0(603)に対応するアドレスジェネレータ0(800)の構成を示す。図9を参照すると、アドレスジェネレータ0において、出力アドレスは、メモリベースアドレス((N−2)ビット)とカウンタの下位2ビットCNT[1]、CNT[0]とを組合せることによって発生させる。
図10に、図6のアドレスジェネレータ1に対応するアドレスジェネレータ1(900)の構成を示す。図10を参照すると、アドレスジェネレータ1において、出力アドレス(Nビット)は、メモリベースアドレス((N−2)ビット)と、ビット1(CNT[1])と、信号PATHに依存してセレクタ901によって選択されるビット0(CNT[0])と反転ビット0(CNT[0])のどちらか1つを組合せることによって発生させる。
図11に、図6のアドレスジェネレータ2(603)に対応するアドレスジェネレータ2(1000)の構成を示す。図11を参照すると、アドレスジェネレータ2において、出力アドレス(Nビット)は、メモリベースアドレス((N−2)ビット)と、信号PATHに依存してセレクタ1001によって選択された、ビット1(CNT[1])と反転ビット1(Inv(CNT[1]))の内の1つと、ビット1(CNT[0])を組合せることによって発生させる。
図12に、図6のアドレスジェネレータ3(603)に対応するアドレスジェネレータ3(1100)の構成を示す。図12を参照すると、アドレスジェネレータ3において、出力アドレス(Nビット)は、メモリベースアドレス((N−2)ビット)と、信号PATHに依存してセレクタ1101によって選択された、ビット1(CNT[1])と反転ビット1(Inv(CNT[1]))の内の1つと、信号PATHに依存してセレクタ1102によって選択された、ビット0(CNT[0])と反転ビット0(Inv(CNT[0]))の内の1つと、を組合せることによって発生させる。
図13に、4×16バイトスワップユニット1200の構成を示し、このユニットは、IMEMからの4×16バイトのリードデータと、カウンタの下位2ビット値CNT[0]、CNT[1]をその入力側に受ける。スワップユニットの4×16バイトの出力データは、マルチプレクサ1201、1202の2ステージを通過することによって発生させる。第1のマルチプレクサステージ1201では、第1及び第2の16バイトのデータ信号は、2ビットカウンタ値(CNT[1:0])のビット0(CNT[0])に依存して、出力側にスルーで導かれるか、又は相互の位置が入れ替えられる。第3及び第4の16バイトのデータ信号についても同様である。
第2のマルチプレクサステージ1202では、第1及び第3の16バイトのデータ信号は、2ビットカウンタ値(CNT[1:0])のビット1(CNT[1])に依存して、出力側にスルーで導かれるか、又は相互の位置が入れ替えられる。第2及び第4の16バイトのデータ信号についても同様である。
より詳しくは、IMEM0−3からの4×4バイトデータ及びIMEM4−7からの4×4バイトデータは、第1のセレクタの0−入力及び1−入力にそれぞれ供給されると共に、マルチプレクサステージ1201の第2のセレクタの1−入力及び0−入力にそれぞれ供給される。IMEM8−Bからの4×4バイトデータ及びIMEMC−Fからの4×4バイトデータは、第3のセレクタの0−入力及び1−入力にそれぞれ供給されると共に、マルチプレクサステージ1201の第4のセレクタの1−入力及び0−入力にそれぞれ供給される。マルチプレクサステージ1201の第1〜第4のセレクタは、CNT[0]が“0”のときその0−入力に供給される出力データを選択及び出力し、CNT[0]が“1”のときその1−入力に供給される出力データを選択及び出力する。
マルチプレクサステージ1201の第1及び第3のセレクタの出力は、マルチプレクサステージ1202の第1のセレクタの0−入力及び1−入力にそれぞれ供給される。マルチプレクサステージ1201の第2及び第4のセレクタの出力は、マルチプレクサステージ1202の第2のセレクタの0−入力及び1−入力にそれぞれ供給される。マルチプレクサステージ1201の第3及び第1のセレクタの出力は、マルチプレクサステージ1202の第3のセレクタの0−入力及び1−入力にそれぞれ供給される。マルチプレクサステージ1201の第4及び第2のセレクタの出力は、マルチプレクサステージ1202の第4のセレクタの0−入力及び1−入力にそれぞれ供給される。マルチプレクサステージ1202の第1から第4のセレクタは、CNT[1]が“0”のとき、その0−入力に供給されるデータを選択及び出力し、CNT[1]が“1”のとき、その1−入力に供給されるデータを選択及び出力する。マルチプレクサステージ1202の第1のセレクタから出力される4×4バイトデータは、PE0−3の4×4バイトの転置ユニットに供給される。マルチプレクサステージ1202の第2のセレクタから出力される4×4バイトデータは、PE4−7の4×4バイトの転置ユニットに供給される。マルチプレクサステージ1202の第3のセレクタから出力される4×4バイトデータは、PE8−Bの4×4バイトの転置ユニットに供給される。マルチプレクサステージ1202の第4のセレクタから出力される4×4バイトデータは、PEC−Fの4×4バイトの転置ユニットに供給される。
CNT[1:0]=“00”のとき、4×16バイトスワップユニット1200は、IMEM0−3からの4×4バイトのデータ、IMEM4−7からの4×4バイトのデータ、IMEM8−Bからの4×4バイトのデータ、及び、IMEMC−Fからの4×4バイトのデータを、この順序で、スワッピングなしに出力する。
CNT[1:0]=“01”のとき、4×16バイトスワップユニット1200は、IMEM4−7からの4×4バイトのデータ、IMEM0−3からの4×4バイトのデータ、IMEMC−Fからの4×4バイトのデータ、及び、IMEM8−Bからの4×4バイトのデータを、この順序で出力する。この場合、IMEM0−3からの4×4バイトのデータ、及び、IMEM4−7からの4×4バイトのデータは、相互にスワッピングされ、IMEM8−Bからの4×4バイトのデータ、及び、IMEMC−Fからの4×4バイトのデータは、相互にスワッピングされる。
CNT[1:0]=“10”のとき、4×16バイトスワップユニット1200は、IMEM8−Bからの4×4バイトのデータ、IMEMC−Fからの4×4バイトのデータ、IMEM0−3からの4×4バイトのデータ、及び、IMEM4−7からの4×4バイトのデータを、この順序で出力する。この場合、IMEM0−3からの4×4バイトのデータ、及び、IMEM8−Bからの4×4バイトのデータは、相互にスワッピングされ、IMEM4−7からの4×4バイトのデータ、及び、IMEMC−Fからの4×4バイトのデータは、相互にスワッピングされる。
CNT[1:0]=“11”のとき、4×16バイトスワップユニット1200は、IMEMC−Fからの4×4バイトのデータ、IMEM8−Bからの4×4バイトのデータ、IMEM4−7からの4×4バイトのデータ、及び、IMEM0−3からの4×4バイトのデータを、この順序で出力する。この場合、IMEM0−3からの4×4バイトのデータ、及び、IMEMC−Fからの4×4バイトのデータは、相互にスワッピングされ、IMEM4−7からの4×4バイトのデータ、及び、IMEM8−Bからの4×4バイトのデータはスワッピングされる。
図14に、4×4バイトの転置ユニット1300の構成を示す。この4×4バイトの転置ユニット1300は、図6の4×4バイトの転置ユニット606に対応している。図13の4×16バイトスワップユニットの出力データは、これらの4個の転置ユニット1300の入力を形成する。16バイト出力データは、入力側1301及び出力側1302において、各4バイトの4列の1つのマトリックス(マトリックス)として再構成される。次に、データは、信号PATHに依存して、一のパス上では、非転置パスを通るアクセスのため、出力部に直接転送される。転置パスを通るアクセスのためには、データは、第2のパス上において、各データ信号の位置(x、y)を交換することによって転置される。出力側では、マルチプレクサ1303は、選択されたパスをクリアにする。
図14に示すように、4×4サブマトリックスは、(列0、バイト0)、(列0、バイト1)、(列0、バイト2)、(列0、バイト3)、(列1、バイト0)、(列1、バイト1)、・・・(列3、バイト3)として、線形(リニアな)順序で表される。転置された4×4サブマトリックスは、(列0、バイト0)、(列1、バイト0)、(列2、バイト0)、(列3、バイト0)、(列0、バイト1)、(列1、バイト1)、・・・(列3、バイト3)として表される。
図15に、ライトコントロール機能ユニットの構成をブロック図で示す。一例として、マトリックスエレメント数Nは16、一のメモリエレメントに格納されたマトリックスエレメント数は4である。ライトコントロール機能ユニットは、図16に示した入出力接続を有する。入力メモリリードベースアドレスMEM_BASE_ADDRESSは、IMEMライトアドレスを計算するために用いられる。カウンタユニット1400(図6のカウンタユニット600と同一の3ビットカウンタ)により発生させた2ビットカウンタ値(CNT[1:0])並びにインバータ1404(図6のインバータ604と同一)により発生させたその反転値は、アドレスジェネレータ1403(図6のアドレスジェネレータ603と同一)内においてのIMEMライトアドレス計算のためのオフセットとして用いられる。
アドレスジェネレータ1403により発生させた、IMEM1402(図6のIMEM602と同一)へのWrite_addressは、セレクタ1401(図6のセレクタ601と同一)を通過した後、PE−RF1406(図6のPE−RF608と同一)からのデータを格納するために用いられる。PE−RF1406は、2つの下位カウンタビット(CNT[1:0])により指定されるアドレス1405(図6のアドレス607と同一)によってアクセスされる。信号PATHは、ライトコントロール機能においてアドレス発生を制御するために用いられる。
ライトコントロール機能ユニットは、図16に示すような入出力接続を有している。
図17は、リードコントロール機能のフローチャートを示す。図18に、16×16マトリックスエレメント(バイト)を有するマクロブロックの一例を示す。マクロブロック1601において、マトリックスの各エレメントは、各々4個の縦方向のマトリックスエレメント(バイト)1600を有するメモリエレメント1603を形成するようにグループ化される。メモリエレメント1603は、4個の横方向に隣接したメモリエレメントを有するメモリエレメントサブブロック1604を形成するようにグループ化される。メモリエレメントサブブロック1604は、4個の横方向に隣接したメモリエレメントサブブロックを有するメモリエレメントサブブロック行1605を形成するようにグループ化される。リードコントロール機能の作用について図17、18を参照して説明する。
<ステップ1>
信号PATH情報を評価する。PATHが0ならば、ステップ2〜3による“YES”分岐を実行し、0でなければ、ステップ4〜14による“NO”分岐を実行する(1500)。
<ステップ2>
IMEMベースアドレスとlog2(N/m)(=2)カウンタビットとを組合せることによって、N/m(=4)IMEMアドレスを計算する(1501)。
<ステップ3>
IMEMにアドレスを転送し、メモリエレメントサブブロック行1605当りN/m(=4)×m(=16)バイトを受ける。メモリエレメントサブブロック行1605は、各々、m(=4)個のマトリックスエレメント1603を有するメモリエレメントサブブロック1604の行から成り、マトリックスエレメント1603は、m(=4)個のメモリエレメント1600を備えている(1502)。
<ステップ4>
IMEMベースアドレスと、log2(N/m)(=2)カウンタビット及び反転カウンタビットを組合せることによって、N/m(=4)個のIMEMアドレスを計算する(1503)。カウンタビットを用いるか、反転カウンタビットを用いるかは、アドレスオフセットマトリックスを発生させることにより定める。
アドレスオフセットマトリックスは、次のようにして発生させる。
a)異なるレベルのマトリックスを生成させる。スタートポイントとして、m(=4)×mマトリックスエレメントを有するメモリエレメントサブブロック(複数)がレベル1のマトリックス(複数)を形成するものとする。次に、レベル1の4個の隣接マトリックスをグループ化して、レベル2の新しいマトリックスを形成する。4個のマトリックスしか残らなくなるまで、これを再帰的に行う。図19は、初期値がN=16、m=4である場合の、このステップの出力を表している。
b)各メモリエレメントサブブロックに部分アドレスオフセットを図20に示すように割当てる。各レベルの各マトリックスの各対角要素(diagonal)のメモリエレメントサブブロック1800に、零値を割当て、各対角要素のメモリエレメントサブブロックに2(level−1)値を割当てる。従って、レベル1の反対角要素(anti−diagonal)のメモリエレメントサブブロックについては1801には、値1が、またレベル2の反対角要素のメモリエレメントサブブロックについては、1802には値2が、それぞれ割当てられる。
c)各メモリエレメントサブブロックについて全レベル(ここではレベル1、1900及びレベル2、1901)からの部分アドレスオフセットを総和し、各メモリエレメントサブブロックについてのアドレスオフセットと共にアドレスオフセットマトリックス1902を受ける(図21参照)。
メモリエレメントサブブロック行の各メモリエレメントサブブロックの正しいアドレスオフセットは、アドレスオフセットマトリックスへの縦方向インデックスとしてカウンタビットCNT[0]及びCNT[1]を用いて、現在処理中のアドレスマトリックス行を選択し、カウンタビット及び反転カウンタビットから、選択された行の各メモリエレメントサブブロックのためのアドレスマトリックスエントリを形成することによって発生させる。
<ステップ5>
(N/m)(=4)個のアドレスをIMEMに送信し、m(=4)個の隣接IMEMが1つのアドレスを受信する(1504)。
<ステップ6>
IMEMから(N/m)(=4)×m(=16)バイトを受信する。図22は、正しい縦方向メモリエレメントサブブロック位置を有する、N/m(=4)個のメモリエレメントサブブロック行リクエストの受信データを示す(1505)。
<ステップ7>
インデックスを零に設定する(1506)。
<ステップ8>
カウンタCNTからのビットiを評価する。値が零に等しければステップ10に進み、そうでなければステップ9に続ける(1507)。
<ステップ9>
2個のサブブロックの対を作成する。これらの対は、一のメモリエレメントサブブロック行内のメモリエレメントサブブロックインデックスのビットiのみが相違するサブブロックから形成する。これらのサブブロックの位置をスワッピングする。図23は、インデックスi及びカウンタCNTの全値についてループの実行を終了させた後の、図23に示したマクロブロックについてのこのステップの出力を示している(1508)。
<ステップ10>
インデックスiを増大させる(1509)。
<ステップ11>
log2(N/m)(=2)とインデックスiを比較する。等しくなければステップ8に移行し、そうでなければステップ12に進む(1510)。
<ステップ12>
縦方向に各m(=4)個のバイトを有するm(=4)個の横方向に隣接するメモリエレメントとしてメモリエレメントサブブロックのm(=16)個のバイトを再度整える(1511)。
<ステップ13>
図24に左上のメモリエレメントサブブロックについて例示的に示したように、各々のメモリエレメントサブブロックについて、各バイトを位置(x、y)から位置(y、x)に変更することによって、m(=4)×m(=4)個のバイトを転置する。図25は、カウンタCNTの全値についてループの実行を終了させた後のこのステップの出力を示している(1512)。
<ステップ14>
全部のN(=16)PEに、下位log2(N/m)(=2)個のCNTビットによって指定されるアドレスに、一のメモリエレメントを格納する(1513)。
図25に示した結果マトリックスをN(=16)個のPEのN/m(=4)個のレジスタに格納する。図25(A)、図25(B)、図25(C)、図25(D)に示すように、レジスタ0、1、2、3は、転置された16×16マトリックスの行0−3、4−7、8−B及びC−Fにそれぞれ対応する4×16バイトのデータを格納する。図6、15のPE−RF 0〜PE−RF Fはレジスタ0〜3に対応する。例えばPE−RF 0は、それぞれ図25(A)−図25(D)に示したレジスタ0〜3の第1列の第1〜第4行の各エレメントを格納し、PE−RF 1は、それぞれ図25(A)−図25(D)に示したレジスタ0〜3の第2列の第1−第4行の各エレメントを格納し、・・・、PE−RF Fは、それぞれ図25(A)−図25(D)に示したレジスタ0〜3の第16列の第1−第4行の各エレメントを格納する。
図26に、ライトコントロール機能を説明するためのフローチャートを示す。PE−RF0−3、PE−RF4−7、PE−RF8−B、PE−RFC−Fに格納されたデータは、IMEM0−3、IMEM4−7、IMEM8−B、IMEMC−F、の、アドレスジェネレータによって指定されたアドレスにリード及びライトされる。
<ステップ1>
log2(N/m)(=2)CNT下位2ビットによって指定されたアドレスから、m(=4)バイトの一メモリエレメントを、N(=16)個のPEから読出す(2400)。
<ステップ2>
信号PATH情報を評価する(2401)。PATH=0ならば、ステップ3に説明した“YES”分岐を実行し、そうでなければ、ステップ4に説明した“NO”分岐を実行する。
<ステップ3>
IMEMベースアドレスとlog2(N/m)(=2)CNT下位2ビットとを組合せることによって、N/m(=4)個のIMEMアドレスを計算する(2402)。ステップ5に続ける。
<ステップ4>
IMEMベースアドレスとlog2(N/m)(=2)CNT下位カウンタと反転カウンタビットを組合せることによって、N/m(=4)個のIMEMアドレスを計算する。リードコントロール機能について説明したようにアドレスオフセットマトリックスを発生させることによって、カウンタビットを使用するか反転カウンタビットを使用するかを定める。次に、アドレスオフセットマトリックスへの縦方向インデックスとしてカウンタビットCNT[0]、CNT[1]を用いて、現在処理されているアドレスマトリックス行を選択し、カウンタと反転カウンタビットから、選択された行の各メモリエレメントサブブロックのアドレスマトリックスエントリを形成することによって、あるメモリエレメントサブブロック行の各メモリエレメントサブブロックの正しいアドレスオフセットを再度発生させる(2403)。
<ステップ5>
各メモリエレメントサブブロック行について、N/m(16/4=4)個のアドレスとN/m(=4)×m(=16)個のバイトとを、IMEMに転送する(2404)。
IMEMに転送し格納した後の結果マトリックスを図27に示す。図27において、図18のマトリックスエレメントの位置(x、y)は、(y、x)に変更されている。
データ信号に加えて、制御信号が、実行すべき正しい制御機能を特定するために必要とされる。制御信号において、次の3つの情報が解読される。
1)どの機能が実行されるか(リード又はライト)(1ビット)
2)どのパスが実行されるか(パス0又はパス1)(1ビット)
3)どのメモリエレメントサブブロック行が実行されるか(log2(N/m)=2ビット)。
図28に示した各クロックサイクルの制御信号設定において、2×(N/m)=2×(16/4)=8クロックサイクルで、コネクション装置302中のリードコントロール機能ユニット及びライトコントロール機能ユニットの転置されたパスを用いることによって、N(=16)×N個のマトリックスのコーナーターンを実行することができる。
本実施態様のコネクション装置302によるマトリックスのスワップ及び転置処理の特定の例について以下に説明する。
<実施例1>
この例においては、処理対象のマトリックスは、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列を有する。
各々のIMEM及びレジスタの一ワードは、m(=2)個の、縦方向に整列されたエレメントを格納している。この例では、IMEM0−7の指定されたアドレスに格納された8×8マトリックスの(N/m)(=4)個の2×2サブマトリックスは、読出され、スワッピング及び転置を受け、次に、PE0−7のそれぞれのレジスタに格納される。この操作が(N/m)回(サイクル)繰返される。リード操作の後、PE0−7のレジスタに格納された8×8マトリックスの(N/m)(=4)個の2×2サブマトリックスは、読出され、IMEM0−7の指定されたアドレスに再格納される。この操作が(N/m)回(サイクル)繰返される。IMEM0−7に再格納された8×8マトリックスは、当初IMEM0−7に保持されていた8×8マトリックスのコーナーターン済みのバージョンとなっている。即ち、IMEM0−7に再格納された8×8マトリックスの各マトリックスエレメントの位置は、最初の位置(x、y)から(y、x)に変更されている。
次にリード操作について説明する。
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に格納する。
上述のリードプロセスの詳細は、以下の各図に示されている。
図29において、IMEM0−7に格納されたメモリコンテンツ即ち8×8マトリックスの各マトリックスエレメントは、行インデック番号x及び列インデック番号yで各々表されている。図29において、“00”は第1の行及び第1の列(0、0)の位置にあるマトリックスエレメントを示し、“77”は第8の行及び第8の列(7、7)の位置にあるマトリックスエレメントを示す。8×8マトリックスは、4×4個の2×2サブマトリックスに区画されている。
IMEM0のMEM_Base_Address&“00”のアドレスに格納された8×8マトリックスの2つの縦方向に隣接するマトリックスエレメント(0、0)及び(1、0)と、IMEM1のMEM_Base_Address&“00”のアドレスに格納された8×8マトリックスの2つの縦方向に隣接するマトリックスエレメント(0、1)及び(1、1)とは、左上位置(0、0)の第1の2×2サブマトリックスを形成する。同様に、IMEM2−3のMEM_Base_Address&“01”のアドレスに格納された8×8マトリックスの4つのマトリックスエレメント(2、2)、(3、2)、(2、3)及び(3、3)は、位置(1、1)の第2の2×2サブマトリックスを形成し、IMEM4、5のMEM_Base_Address&“10”のアドレスに格納された8×8マトリックスの4つのマトリックスエレメント(4、4)、(5、4)、(4、5)及び(5、5)は、位置(2、2)の第3の2×2サブマトリックスを形成する。IMEM6、7のMEM_Base_Address&“11”のアドレスに格納された8×8マトリックスの4つのマトリックスエレメント(6、6)、(7、6)、(6、7)及び(7、7)は、右下位置(3、3)の第4の2×2サブマトリックスを形成する。尚、演算子(オペレータ)“&”、例えば MEM_Base_Address&“11”は、MEM_Base_Address(上位(N−2)ビット)と下位2ビット“11”をモジュロ2の演算などによって連接する(concatenate)ことによって得たアドレスを表している。
図29を参照すると、クロックサイクル1で、図6の3ビットカウンタ600のCNT[0]=0、CNT[1]=0において、アドレスジェネレータ0(図6及び図9)は、MEM_Base_Address&“00”をIMEM0−1に供給し、アドレスジェネレータ1(図6及び図10)は、MEM_Base_Address&“01”(セレクタ901によって選択された(CNT[1]及びInvCNT[0])を、IMEM2−3に供給し、アドレスジェネレータ2(図6及び図11)は、MEM_Base_Address&“10”(セレクタ1001によって選択されたInvCNT[1]及び(CNT[0])をIMEM4−5に供給し、アドレスジェネレータ3(図6及び図12)は、MEM_Base_Address&“11”(セレクタ1101によって選択されたInv(CNT[1]及びセレクタ1102によって選択されたInvCNT[0])をIMEM6−7に供給する。
2×2サブマトリックスの4行4列に(0、0)、(1、1)、(2、2)及び(3、3)に対角方向に位置する、対角方向サブマトリックスエレメントを形成する4個の2×2サブマトリックスは、読出され、スワッピングされずに、対応の転置ユニットにそれぞれ転送される。即ち、対角方向に位置する4個の2×2サブマトリックスは、スワッピングされず、各サブマトリックスの転置だけが行われる。各々の転置ユニットは、転置された2×2サブマトリックスを生成させる。2×2サブマトリックスエレメントの位置(x、y)は位置(y、x)に変更されている。x=0又は1、y=0又は1、x≠yである。各々転置された4個の2×2サブマトリックスは、PE0−7のレジスタ0に格納される。各PE0−7のレジスタ0には、当該2×2サブマトリックスの2個の縦方向に隣接するエレメントが格納されている。
図30を参照すると、クロックサイクル2において、IMEM0−1、IMEM2−3、IMEM4−5及びIMEM6−7には、MEM_Base_Address&“01”、MEM_Base_Address&“00”、MEM_Base_Address&“11”、MEM_Base_Address&“10”がそれぞれ供給される。クロックサイクル2において、4個の2×2サブマトリックスの4行4列の(1、0)、(0、1)、(3、2)及び(2、3)にそれぞれ位置された2×2サブマトリックスは、アドレスジェネレータによってアクセスされる。4個の2×2サブマトリックス(16バイトのリードデータ)は、スワップ操作され、その際に、2個の2×2サブマトリックスの間で横方向位置が相互にスワッピングされる。ここでは、第1と第2の2×2サブマトリックスの対がスワッピングされ、第3と第4の2×2サブマトリックスの対がスワッピングされる。スワッピングされた4個の2×2サブマトリックスは、各々コーナーターンに付された後、PE0−7のレジスタ1に格納される。各PE0−7のレジスタ1は、当該2×2サブマトリックスの2個の縦方向に隣接するエレメントを格納する。
図31を参照すると、クロックサイクル3において、IMEM0−1、IMEM2−3、IMEM4−5及びIMEM6−7には、MEM_Base_Address&“10”、MEM_Base_Address&“11”、MEM_Base_Address&“00”、MEM_Base_Address&“01”がそれぞれ供給される。クロックサイクル3において、4個の2×2サブマトリックスの4行4列の(2、0)、(3、1)、(0、2)及び(1、3)にそれぞれ位置された4個の2×2サブマトリックスは、アドレスジェネレータによってアクセスされる。4個の2×2サブマトリックスは、スワップ操作され、ここでは、第1と第3の2×2サブマトリックスの対及び第2と第4の2×2サブマトリックスの対がスワッピングされる。スワッピングされた2×2サブマトリックスは、各々コーナーターンに付された後、PE0−7のレジスタ2に格納される。各PE0−7のレジスタ2は、当該2×2サブマトリックスの2個の縦方向に隣接するエレメントを格納する。
図32を参照すると、クロックサイクル4において、IMEM0−1、IMEM2−3、IMEM4−5及びIMEM6−7には、MEM_Base_Address&“11”、MEM_Base_Address&“10”、MEM_Base_Address&“01”、MEM_Base_Address&“00”がそれぞれ供給される。クロックサイクル4において、4個の2×2サブマトリックスの4行4列の(3、0)、(2、1)、(1、2)及び(0、3)にそれぞれ位置された2×2サブマトリックスは、アドレスジェネレータによってアクセスされる。4個の2×2サブマトリックスは、スワップ操作され、その際に、第1と第4の2×2サブマトリックスの対及び第2と第3の2×2サブマトリックスの対がスワッピングされる。スワッピングされた2×2サブマトリックスは、各々コーナーターンが施された後、PE0−7のレジスタ3に格納される。各PE0−7のレジスタ3は、当該2×2サブマトリックスの2個の縦方向に隣接するエレメントを格納する。IMEM0−7に格納された8×8マトリックスの4クロックサイクルのリード操作の結果として、図33に示すように、PE0−7のレジスタ0−3に、8×8マトリックスが格納される。
ライト操作において、レジスタ0−3からの一ワードは、数字の順序で読出され、IMEMに格納される。IMEM0−7のアドレスは、3ビットカウンタ1400の下位2ビットカウンタ値に従ってMEM_addressの下位2ビットを変えることによって生成させる。
より詳細には、図33を参照すると、ライトクロックサイクル1において、4個の2×2サブマトリックス(32バイトデータ)は、PE0−7のレジスタ0から読出され、IMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7のMEM_Base_Address&“00”、MEM_Base_Address&“01”、MEM_Base_Address&“10”、MEM_Base_Address&“11”のアドレスに格納される。尚、ライトクロックサイクル1においてIMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7にそれぞれ供給されるライトアドレス中の下位2ビット値の組合せは、図29に示したリードクロックサイクル1においてIMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7にそれぞれ供給されるリードアドレスの下位2ビット値の組合せと同じである。IMEM0−7は、指定アドレスに、一ワードとして、当該2×2サブマトリックスの2個の縦方向に隣接するエレメントを各々格納する。
図34を参照すると、ライトクロックサイクル2において、16バイトデータは、PE0−7のレジスタ1から読出され、IMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7のMEM_Base_Address&“01”、MEM_Base_Address&“00”、MEM_Base_Address&“11”、MEM_Base_Address&“10”のアドレスに格納される。尚、ライトクロックサイクル2においてIMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7にそれぞれ供給されるライトアドレス中の下位2ビット値の組合せは、図30に示したリードクロックサイクル2においてIMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7にそれぞれ供給されるリードアドレスの下位2ビット値の組合せと同じである。
図35を参照すると、ライトクロックサイクル3において、16バイトデータは、PE0−7のレジスタ2から読出され、IMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7のMEM_Base_Address&“10”、MEM_Base_Address&“11”、MEM_Base_Address&“00”、MEM_Base_Address&“10”のアドレスに格納される。尚、ライトクロックサイクル3においてIMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7にそれぞれ供給されるライトアドレス中の下位2ビット値の組合せは、図31に示したリードクロックサイクル3においてIMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7にそれぞれ供給されるリードアドレスの下位2ビット値の組合せと同じである。
図36を参照すると、ライトクロックサイクル4において、16バイトデータは、PE0−7のレジスタ3から読出され、IMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7のMEM_Base_Address&“11”、MEM_Base_Address&“10”、MEM_Base_Address&“01”、MEM_Base_Address&“00”のアドレスに格納される。尚、ライトクロックサイクル4においてIMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7にそれぞれ供給されるライトアドレス中の下位2ビット値の組合せは、図32に示したリードクロックサイクル4においてIMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7にそれぞれ供給されるリードアドレスの下位2ビット値の組合せと同じである。上述のライト操作によってIMEM0−7に格納された8×8マトリックスは、図29に示したマトリックスのコーナーターン済みのバージョンとなっている。即ち、図29のIMEM0−7に格納される8×8マトリックス中の一のマトリックスエレメントの位置(x、y)は、図36のIMEM0−7に格納された8×8マトリックスにおいて(y、x)に変更される。
<実施例2>
この例では、処理対象マトリックスは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に格納する。
上述のリードプロセスの詳細は、以下の各図に示されている。
図37を参照すると、クロックサイクル1において、IMEM0−3、IMEM4−7には、MEM_Base_Address&“0”、MEM_Base_Address&“1”が供給される。4×4サブマトリックスの2行2列の位置(0、0)及び(1、1)に対角方向に位置する2個の4×4サブマトリックス(32バイトデータ)は、IMEM0−3、IMEM4−7から読出され、スワッピングされることなく、対応の転置ユニットに転送される。2個の4×4サブマトリックスは、次に、コーナーターンされた後、PE0−7のレジスタ0に格納される。各PE0−7のレジスタ0には、縦方向に隣接した4個のエレメントが格納される。
図38を参照すると、クロックサイクル2において、IMEM0−3及びIMEM4−7には、MEM_Base_Address&“1”、MEM_Base_Address&“0”が供給される。4×4サブマトリックスの2行2列の位置(1、0)及び(0、1)にそれぞれ位置された2個の4×4サブマトリックスは、IMEM0−3、IMEM4−7から読出され、スワッピング操作され、2個の4×4サブマトリックスは、横方向にスワッピングされる。スワッピングされた2個の4×4サブマトリックスは、コーナーターンされ、PE0−7のレジスタ1に格納される。各PE0−7のレジスタ1は4個の縦方向に隣接したエレメントを格納している。
ライト操作の場合、PE0−7のレジスタ0−1から一のワードが、数字の順序で読出され、IMEM0−7の指定されたアドレスに格納される。IMEM0−7のアドレスは、3ビットカウンタ1400の1ビットカウンタ値(LSB)に従って、MEM_addressの下位1ビット値を変えることによって発生させる。
より詳細には、図39を参照すると、ライトクロックサイクル1において、2個の4×4サブマトリックスは、PE0−7のレジスタ0から読出され、IMEM0−3及びIMEM4−7のMEM_Base_Address&“0”、MEM_Base_Address&“1”に格納される。ライトクロックサイクル1においてIMEM0−3及びIMEM4−7にそれぞれ供給されるライトアドレス中の下位1ビット値の組合せは、図33に示したリードクロックサイクル1においてIMEM0−3及びIMEM4−7にそれぞれ供給されるリードアドレス中の下位1ビット値のそれと同じである。IMEM0−7は、当該2×2サブマトリックスの4個の縦方向に隣接したエレメントを指定されたアドレスにそれぞれ一ワードとして格納している。
4×4サブマトリックスの2行2列の位置(0、0)、(1、1)に最初存在し、各々コーナーターンされ、次に図37に示すように、PE0−7のレジスタ0に格納された、2個の4×4サブマトリックスは、今は、図39に示すように、4×4サブマトリックスの2行2列の位置(0、0)、(1、1)に再格納されている。
図40を参照すると、ライトクロックサイクル2において、32バイトデータは、PE0−7のレジスタ1から読出され、IMEM0−3及びIMEM4−7のMEM_Base_Address&“1”、MEM_Base_Address&“0”のアドレスに格納される。ライトクロックサイクル2においてIMEM0−3及びIMEM4−7にそれぞれ供給されるライトアドレス中の下位1ビット値の組合せは、図33に示したリードクロックサイクル2においてIMEM0−3及びIMEM4−7にそれぞれ供給されるリードアドレス中の下位1ビット値のそれと同じである。「
4×4サブマトリックスの2行2列の位置(1、0)、(0、1)に最初存在し、対ごとにスワッピング及びコーナーターンされ、次に図38に示すように、PE0−7のレジスタ1に格納された、2個の4×4サブマトリックスは、今は、図40に示すように、4×4サブマトリックスエレメントの2行2列の(0、1)、(1、0)の転置された位置に再格納されている。
各々リード操作においてコーナーターンされ、上述のライト操作においてIMEM0−7のそれぞれのアドレスに書込まれた、4個の4×4サブマトリックスから成る8×8マトリックスは、図37の8×8マトリックスのコーナーターン済みのバージョンである。即ち、図40のIMEM0−7に格納された8×8マトリックスにおいて、図37のIMEM0−7に格納された8×8マトリックスの一のマトリックスエレメントの位置(x、y)は、(y、x)に変更されている。
<実施例3>
この例では、処理対象マトリックスは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個の縦方向に隣接したエレメントが格納されている。
図42を参照すると、クロックサイクル2において、IMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−Fには、MEM_Base_Address&“001”、MEM_Base_Address&“000”、MEM_Base_Address&“011”、MEM_Base_Address&“010”、MEM_Base_Address&“101”、MEM_Base_Address&“100”、MEM_Base_Address&“111”及びMEM_Base_Address&“110”がそれぞれ供給される。IMEM0−Fから読出された8個の2×2サブマトリックス(32バイトデータ)は、スワッピングされ、その際に、隣接する対の2×2サブマトリックスの横方向位置がスワッピングされる。スワッピングされた8個の2×2サブマトリックスは、コーナーターンされ、PE0−Fのレジスタ1に格納される。各々のPE0−Fのレジスタ1には、当該2×2サブマトリックスの2個の縦方向に隣接したエレメントが格納されている。
図43を参照すると、クロックサイクル3において、IMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−Fには、MEM_Base_Address&“010”、MEM_Base_Address&“011”、MEM_Base_Address&“000”、MEM_Base_Address&“001”、MEM_Base_Address&“110”、MEM_Base_Address&“111”、MEM_Base_Address&“100”及びMEM_Base_Address&“101”がそれぞれ供給される。IMEM0−Fから読出された8個の2×2サブマトリックス(32バイトデータ)は、スワッピングされ、その際に、第1と第3の2×2サブマトリックスの対、第2と第4の2×2サブマトリックスの対、第5と第7の2×2サブマトリックスの対及び第6と第8の2×2サブマトリックスの対が横方向の位置についてスワッピングされる。スワッピングされた各8個の2×2サブマトリックスは、コーナーターンされ、PE0−Fのレジスタ2に格納される。各々のPE0−Fのレジスタ2には、当該2×2サブマトリックスの2個の縦方向に隣接したエレメントが格納されている。
図44を参照すると、クロックサイクル4において、IMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−Fには、MEM_Base_Address&“011”、MEM_Base_Address&“010”、MEM_Base_Address&“000”、MEM_Base_Address&“111”、MEM_Base_Address&“110”、MEM_Base_Address&“101”及びMEM_Base_Address&“100”がそれぞれ供給される。IMEM0−Fから読出された8個の2×2サブマトリックス(32バイトデータ)は、スワッピングされ、その際に、第1と第4の2×2サブマトリックスの対、第2と第3の2×2サブマトリックスの対、第5と第8の2×2サブマトリックスの対及び第6と第7の2×2サブマトリックスの対が横方向の位置についてスワッピングされる。スワッピングされた各8個の2×2サブマトリックスは、コーナーターンされ、PE0−Fのレジスタ3に格納される。各々のPE0−Fのレジスタ3には、当該2×2サブマトリックスの2個の縦方向に隣接したエレメントが格納されている。
図45を参照すると、クロックサイクル5において、IMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−Fには、MEM_Base_Address&“100”、MEM_Base_Address&“101”、MEM_Base_Address&“110”、MEM_Base_Address&“111”、MEM_Base_Address&“000”、MEM_Base_Address&“001”、MEM_Base_Address&“010”及びMEM_Base_Address&“011”がそれぞれ供給される。IMEM0−Fから読出された8個の2×2サブマトリックス(32バイトデータ)は、スワッピングされ、その際に、第1と第5の2×2サブマトリックスの対、第2と第6の2×2サブマトリックスの対、第3と第7の2×2サブマトリックスの対及び第4と第8の2×2サブマトリックスの対が横方向の位置についてスワッピングされる。スワッピングされた各8個の2×2サブマトリックスは、コーナーターンされ、PE0−Fのレジスタ4に格納される。各々のPE0−Fのレジスタ4には、当該2×2サブマトリックスの2個の縦方向に隣接したエレメントが格納されている。
図46を参照すると、クロックサイクル6において、IMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−Fには、MEM_Base_Address&“101”、MEM_Base_Address&“100”、MEM_Base_Address&“111”、MEM_Base_Address&“110”、MEM_Base_Address&“001”、MEM_Base_Address&“000”、MEM_Base_Address&“011”及びMEM_Base_Address&“010”がそれぞれ供給される。IMEM0−Fから読出された8個の2×2サブマトリックス(32バイトデータ)は、スワッピングされ、その際に、第1と第6の2×2サブマトリックスの対、第2と第5の2×2サブマトリックスの対、第3と第8の2×2サブマトリックスの対及び第4と第7の2×2サブマトリックスの対が横方向の位置についてスワッピングされる。スワッピングされた各8個の2×2サブマトリックスは、コーナーターンされ、PE0−Fのレジスタ5に格納される。各々のPE0−Fのレジスタ5には、当該2×2サブマトリックスの2個の縦方向に隣接したエレメントが格納されている。
図47を参照すると、クロックサイクル7において、IMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−Fには、MEM_Base_Address&“110”、MEM_Base_Address&“111”、MEM_Base_Address&“100”、MEM_Base_Address&“101”、MEM_Base_Address&“010”、MEM_Base_Address&“011”、MEM_Base_Address&“000”及びMEM_Base_Address&“001”がそれぞれ供給される。IMEM0−Fから読出された8個の2×2サブマトリックス(32バイトデータ)は、スワッピングされ、その際に、第1と第7の2×2サブマトリックスの対、第2と第8の2×2サブマトリックスの対、第3と第5の2×2サブマトリックスの対及び第4と第6の2×2サブマトリックスの対が横方向の位置についてスワッピングされる。スワッピングされた各8個の2×2サブマトリックスは、コーナーターンされ、PE0−Fのレジスタ6に格納される。各々のPE0−Fのレジスタ6には、当該2×2サブマトリックスの2個の縦方向に隣接したエレメントが格納されている。
図48を参照すると、クロックサイクル8において、IMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−Fには、MEM_Base_Address&“111”、MEM_Base_Address&“110”、MEM_Base_Address&“101”、MEM_Base_Address&“100”、MEM_Base_Address&“011”、MEM_Base_Address&“010”、MEM_Base_Address&“001”及びMEM_Base_Address&“000”がそれぞれ供給される。IMEM0−Fから読出された8個の2×2サブマトリックス(32バイトデータ)は、スワッピングされ、その際に、第1と第8の2×2サブマトリックスの対、第2と第7の2×2サブマトリックスの対、第3と第6の2×2サブマトリックスの対及び第4と第5の2×2サブマトリックスの対が横方向の位置についてスワッピングされる。スワッピングされた各8個の2×2サブマトリックスは、コーナーターンされ、PE0−Fのレジスタ7に格納される。各々のPE0−Fのレジスタ7には、当該2×2サブマトリックスの2個の縦方向に隣接したエレメントが格納されている。
ライト操作において、レジスタ0−7からの一のワードを数順に読出してIMEMに格納する。IMEM0−Fのアドレスは、3ビットカウンタ1400の3ビットカウンタ値に従ってMEM_Addressの下位3ビットを変えることによって発生させる。
より詳細には、図49を参照すると、ライトクロックサイクル1において、8個の2×2サブマトリックス(32バイト)をPE0−Fのレジスタ0から読出して、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”の各アドレスに格納する。ライトクロックサイクル1においてIMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−Fにそれぞれ供給されるライトアドレスの下位3ビット値の組合せは、図41に示したリードクロックサイクル1においてIMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−Fにそれぞれ供給されるリードアドレスの下位3ビット値の組合せに等しい。IMEM0−Fの各々は、当該2×2サブマトリックスの2個の縦方向に隣接したエレメントを、1つのワードとして、指定されたアドレスに格納する。
図50を参照すると、ライトクロックサイクル2において、8個の2×2サブマトリックス(32バイト)をPE0−Fのレジスタ1から読出して、IMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−FのMEM_Base_Address&“001”、MEM_Base_Address&“000”、MEM_Base_Address&“011”、MEM_Base_Address&“010”、MEM_Base_Address&“101”、MEM_Base_Address&“100”、MEM_Base_Address&“111”及びMEM_Base_Address&“110”の各アドレスに格納する。ライトクロックサイクル2においてIMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−Fにそれぞれ供給されるライトアドレスの下位3ビット値の組合せは、図42に示したリードクロックサイクル2においてIMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−Fにそれぞれ供給されるリードアドレスの下位3ビット値の組合せに等しい。
図51を参照すると、ライトクロックサイクル3において、8個の2×2サブマトリックス(32バイト)をPE0−Fのレジスタ2から読出して、IMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−FのMEM_Base_Address&“010”、MEM_Base_Address&“011”、MEM_Base_Address&“000”、MEM_Base_Address&“001”、MEM_Base_Address&“110”、MEM_Base_Address&“111”、MEM_Base_Address&“100”及びMEM_Base_Address&“101”の各アドレスに格納する。ライトクロックサイクル3においてIMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−Fにそれぞれ供給されるライトアドレスの下位3ビット値の組合せは、図43に示したリードクロックサイクル3においてIMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−Fにそれぞれ供給されるリードアドレスの下位3ビット値の組合せに等しい。
図52を参照すると、ライトクロックサイクル4において、8個の2×2サブマトリックス(32バイト)をPE0−Fのレジスタ3から読出して、IMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−FのMEM_Base_Address&“011”、MEM_Base_Address&“010”、MEM_Base_Address&“001”、MEM_Base_Address&“000”、MEM_Base_Address&“111”、MEM_Base_Address&“110”、MEM_Base_Address&“101”及びMEM_Base_Address&“100”の各アドレスに格納する。ライトクロックサイクル4においてIMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−Fにそれぞれ供給されるライトアドレスの下位3ビット値の組合せは、図44に示したリードクロックサイクル4においてIMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−Fにそれぞれ供給されるリードアドレスの下位3ビット値の組合せに等しい。
図53を参照すると、ライトクロックサイクル5において、8個の2×2サブマトリックス(32バイト)をPE0−Fのレジスタ4から読出して、IMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−FのMEM_Base_Address&“100”、MEM_Base_Address&“101”、MEM_Base_Address&“110”、MEM_Base_Address&“111”、MEM_Base_Address&“000”、MEM_Base_Address&“001”、MEM_Base_Address&“010”及びMEM_Base_Address&“011”の各アドレスに格納する。ライトクロックサイクル5においてIMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−Fにそれぞれ供給されるライトアドレスの下位3ビット値の組合せは、図45に示したリードクロックサイクル5においてIMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−Fにそれぞれ供給されるリードアドレスの下位3ビット値の組合せに等しい。
図54を参照すると、ライトクロックサイクル6において、8個の2×2サブマトリックス(32バイト)をPE0−Fのレジスタ5から読出して、IMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−FのMEM_Base_Address&“101”、MEM_Base_Address&“100”、MEM_Base_Address&“111”、MEM_Base_Address&“110”、MEM_Base_Address&“001”、MEM_Base_Address&“000”、MEM_Base_Address&“011”及びMEM_Base_Address&“010”の各アドレスに格納する。ライトクロックサイクル6においてIMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−Fにそれぞれ供給されるライトアドレスの下位3ビット値の組合せは、図46に示したリードクロックサイクル6においてIMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−Fにそれぞれ供給されるリードアドレスの下位3ビット値の組合せに等しい。
図55を参照すると、ライトクロックサイクル7において、8個の2×2サブマトリックス(32バイト)をPE0−Fのレジスタ6から読出して、IMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−FのMEM_Base_Address&“110”、MEM_Base_Address&“111”、MEM_Base_Address&“100”、MEM_Base_Address&“101”、MEM_Base_Address&“010”、MEM_Base_Address&“011”、MEM_Base_Address&“000”及びMEM_Base_Address&“001”の各アドレスに格納する。ライトクロックサイクル7においてIMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−Fにそれぞれ供給されるライトアドレスの下位3ビット値の組合せは、図47に示したリードクロックサイクル7においてIMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−Fにそれぞれ供給されるリードアドレスの下位3ビット値の組合せに等しい。
図56を参照すると、ライトクロックサイクル8において、8個の2×2サブマトリックス(32バイト)をPE0−Fのレジスタ7から読出して、IMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−FのMEM_Base_Address&“111”、MEM_Base_Address&“110”、MEM_Base_Address&“101”、MEM_Base_Address&“100”、MEM_Base_Address&“011”、MEM_Base_Address&“010”、MEM_Base_Address&“001”及びMEM_Base_Address&“000”の各アドレスに格納する。ライトクロックサイクル8においてIMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−Fにそれぞれ供給されるライトアドレスの下位3ビット値の組合せは、図48に示したリードクロックサイクル8においてIMEM0−1、IMEM2−3、IMEM4−5、IMEM6−7、IMEM8−9、IMEMA−B、IMEMC−D、IMEME−Fにそれぞれ供給されるリードアドレスの下位3ビット値の組合せに等しい。
上述のライト操作においてIMEM0−Fに格納された、16×16サブマトリックスは、図41に示したマトリックスのコーナーターン済みのバージョンである。即ち、図56のIMEM0−Fに格納された16×16マトリックスにおいて、図41のIMEM0−Fに格納された16×16マトリックスの一のマトリックスエレメントの位置(x、y)は、(y、x)に変更されている。
<実施例4>
この例では、処理対象マトリックスは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個の縦方向に隣接したマトリックスエレメントを格納する。
図58を参照すると、クロックサイクル2において、IMEM0−3、IMEM4−7、IMEM8−B、IMEMC−Fには、MEM_Base_Address&“01”、MEM_Base_Address&“00”、MEM_Base_Address&“11”及びMEM_Base_Address&“10”がそれぞれ供給される。IMEM0−Fから読出された4個の4×4サブマトリックス(64バイトデータ)は、スワッピング操作され、ここで、各対の隣接4×4サブマトリックスは、その横方向位置についてスワッピングされる。スワッピングされた4個の4×4サブマトリックスは、コーナーターンされた後、PE0−Fのレジスタ1に格納される。各PE0−Fのレジスタ1は、当該4×4サブマトリックスの4個の縦方向に隣接したマトリックスエレメントを格納する。
図59を参照すると、クロックサイクル3において、IMEM0−3、IMEM4−7、IMEM8−B、IMEMC−Fには、MEM_Base_Address&“10”、MEM_Base_Address&“11”、MEM_Base_Address&“00”及びMEM_Base_Address&“01”がそれぞれ供給される。IMEM0−Fから読出された4個の4×4サブマトリックス(64バイトデータ)は、スワッピング操作され、ここで、対の第1及び第3の4×4サブマトリックスは、その横方向位置についてスワッピングされ、別の対の第2及び第4の4×4サブマトリックスは、その横方向位置についてスワッピングされる。スワッピングされた4個の4×4サブマトリックスは、コーナーターンされた後、PE0−Fのレジスタ2に格納される。各PE0−Fのレジスタ2は、当該4×4サブマトリックスの4個の縦方向に隣接したマトリックスエレメントを格納する。
図60を参照すると、クロックサイクル4において、IMEM0−3、IMEM4−7、IMEM8−B、IMEMC−Fには、MEM_Base_Address&“11”、MEM_Base_Address&“10”、MEM_Base_Address&“01”及びMEM_Base_Address&“00”がそれぞれ供給される。IMEM0−Fから読出された4個の4×4サブマトリックス(64バイトデータ)は、スワッピング操作され、ここで、対の第1及び第4の4×4サブマトリックスは、その横方向位置についてスワッピングされ、別の対の第2及び第3の4×4サブマトリックスは、その横方向位置についてスワッピングされる。スワッピングされた4個の4×4サブマトリックスは、コーナーターンされた後、PE0−Fのレジスタ3に格納される。各PE0−Fのレジスタ3は、当該4×4サブマトリックスの4個の縦方向に隣接したマトリックスエレメントを格納する。
ライト操作において、レジスタ0−3からワードが数字の順で読出され、IMEMに格納される。IMEM 0−Fのアドレスは、3ビットカウンタ1400の2ビットカウンタ値に従ってMEMアドレスの下位2ビットを変えることによって発生させる。
より詳細には、図61を参照すると、ライトクロックサイクル1において、4個の4×4サブマトリックス(64バイトデータ)は、PE0−Fのレジスタ0から読出された後、IMEM0−3、IMEM4−7、IMEM8−B、IMEMC−FのMEM_Base_Address&“00”、MEM_Base_Address&“01”、MEM_Base_Address&“10”及びMEM_Base_Address&“11”にそれぞれ格納される。ライトクロックサイクル1においてIMEM0−3、IMEM4−7、IMEM8−B、IMEMC−Fにそれぞれ供給されるライトアドレスの下位2ビット値の組合せは、図57に示したリードクロックサイクル1においてIMEM0−3、IMEM4−7、IMEM8−B、IMEMC−Fにそれぞれ供給されるリードアドレスの下位2ビット値の組合せに等しい。IMEM0−Fの各々は、4個の縦方向に隣接したマトリックスエレメントを、1つのワードとして、指定されたアドレスに各々格納する。
図62を参照すると、ライトクロックサイクル2において、64バイトデータは、PE0−Fのレジスタ1から読出された後、MEM_Base_Address&“01”、MEM_Base_Address&“00”、MEM_Base_Address&“11”及びMEM_Base_Address&“10”にそれぞれ格納される。ライトクロックサイクル2においてIMEM0−3、IMEM4−7、IMEM8−B、IMEMC−Fにそれぞれ供給されるライトアドレスの下位2ビット値の組合せは、図58に示したリードクロックサイクル2においてIMEM0−3、IMEM4−7、IMEM8−B、IMEMC−Fにそれぞれ供給されるリードアドレスの下位2ビット値の組合せに等しい。
図63を参照すると、ライトクロックサイクル3において、64バイトデータは、PE0−Fのレジスタ2から読出された後、IMEM0−3、IMEM4−7、IMEM8−B、IMEMC−FのMEM_Base_Address&“10”、MEM_Base_Address&“11”、MEM_Base_Address&“00”及びMEM_Base_Address&“01”にそれぞれ格納される。ライトクロックサイクル3においてIMEM0−3、IMEM4−7、IMEM8−B、IMEMC−Fにそれぞれ供給されるライトアドレスの下位2ビット値の組合せは、図59に示したリードクロックサイクル3においてIMEM0−3、IMEM4−7、IMEM8−B、IMEMC−Fにそれぞれ供給されるリードアドレスの下位2ビット値の組合せに等しい。
図64を参照すると、ライトクロックサイクル4において、64バイトデータは、PE0−Fのレジスタ3から読出された後、IMEM0−3、IMEM4−7、IMEM8−B、IMEMC−FのMEM_Base_Address&“11”、MEM_Base_Address&“10”、MEM_Base_Address&“01”及びMEM_Base_Address&“00”にそれぞれ格納される。ライトクロックサイクル4においてIMEM0−3、IMEM4−7、IMEM8−B、IMEMC−Fにそれぞれ供給されるライトアドレスの下位2ビット値の組合せは、図60に示したリードクロックサイクル4においてIMEM0−3、IMEM4−7、IMEM8−B、IMEMC−Fにそれぞれ供給されるリードアドレスの下位2ビット値の組合せに等しい。
上述のライト操作においてIMEM0−Fに格納された、16×16サブマトリックスは、図57に示したマトリックスのコーナーターン済みのバージョンである。即ち、図64のIMEM0−Fに格納された16×16マトリックスにおいて、図57のIMEM0−Fに格納された8×8マトリックスの一のマトリックスエレメントの位置(x、y)は、(y、x)に変更されている。
<実施態様2>
図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と同じ構成となっている。
<実施態様3>
上記の実施態様によれば、IMEMからPEのレジスタファイルに読出されたデータの転送路(パス)において、リードデータは、スワッピング及びコーナーターンされる。しかしこれは本発明を限定するものではない。
図66は、実施態様3によるライトコントロール機能ユニットの構成を示すブロック図である。図66に示した実施態様によれば、ライトコントロール機能ユニットは、4×16バイトのスワップユニット1405と4個の4×4バイトの転置ユニット1406とを備えている。
ライトコントロール機能ユニットが図66に示した構成を有する本実施態様によれば、リードコントロール機能ユニットは、図67に示した構成を備えている。図67を参照すると、アドレスジェネレータ603によって特定されたそれぞれのリードアドレスにおいてIMEM0−3、IMEM4−7、IMEM8−B、IMEMC−Fから並列に読出されたリードデータ(4個の4×4サブマトリックスデータ)は、3ビットカウンタ1400の2ビットカウンタ値によって特定されるPE0−3、PE4−7、PE8−B、PEC−Fの対応するレジスタ0−3に直接書込まれる。
本実施態様のライトコントロール機能ユニットによれば、リードコントロール機能ユニットによってPE0−3、PE4−7、PE8−B、PEC−Fのレジスタ0−3に格納された4個の4×4サブマトリックスは、3ビットカウンタ1400の2ビットカウンタ値によって特定されるPE0−3、PE4−7、PE8−B、PEC−Fの対応するレジスタ0−3から並列に読出され、対応の4×4バイトの転置ユニット1406に転送される。4×4バイトの転置ユニット1406は、4個の転置された4×4サブマトリックスを4×16バイトのスワップユニット1405に供給する。4×16バイトのスワップユニット1405からの4個の4×4バイトデータ(4個の4×4サブマトリックスデータ)は、アドレスジェネレータ1403によって特定されたIMEM0−3、IMEM4−7、IMEM8−B、IMEMC−Fのそれぞれのアドレスに書込まれる。
本実施態様によれば、IMEM0−Fに格納された全16×16マトリックスデータは、4クロックサイクルで、リードコントロール機能ユニットによって読出され、PE0−Fのレジスタ0−3に格納される。PE0−Fのレジスタ0−3に格納された16×16マトリックスデータは、読出され、PE0−Fのレジスタ0−3に格納された16×16マトリックスデータは、読出され、ライトコントロール機能ユニットによって4クロックサイクルでIMEM0−Fに書込まれる。IMEM0−Fは、IMEM0−Fに当初格納された16×16マトリックスのコーナーターンされたバージョンを今や保持している。
<実施態様4>
図68は、実施態様4によるライトコントロール機能ユニットの構成を示すブロック図である。この実施態様によれば、ライトコントロール機能ユニットは、4×16バイトのスワップユニット1405と4個の4×4バイトの転置ユニット1406とを備えている。
ライトコントロール機能ユニットが図68に示した構成を有する本実施態様によれば、リードコントロール機能ユニットは、図67に示した構成を備えている。前述したように、アドレスジェネレータ603によって特定されたそれぞれのリードアドレスにおいてIMEM0−3、IMEM4−7、IMEM8−B、IMEMC−Fから並列に読出されたリードデータ(4個の4×4サブマトリックスデータ)は、3ビットカウンタ1400の2ビットカウンタ値によって特定されるPE0−3、PE4−7、PE8−B、PEC−Fの対応するレジスタ0−3に直接書込まれる。
本実施態様のライトコントロール機能ユニットによれば、4個の4×4サブマトリックスデータは、3ビットカウンタ1400の2ビットカウンタ値によって特定されるアドレスにおいて、PE0−3、PE4−7、PE8−B、PEC−Fのレジスタ0−3から読出され、4×16バイトのスワップユニット1405に供給される。4×16バイトのスワップユニット1405からの4個の4×4バイトデータは、4×4バイト転置ユニット1406に供給される。4個の4×4バイト転置ユニット1406から出力された4個の4×4サブマトリックスデータは、アドレスジェネレータ1403によって特定された、IMEM0−3、IMEM4−7、IMEM8−B、IMEMC−Fのそれぞれのアドレスに書込まれる。
本実施態様によれば、IMEM0−Fに格納された全16×16マトリックスデータは、4クロックサイクルで、リードコントロール機能ユニットによって読出され、PE0−Fのレジスタ0−3に格納される。PE0−Fのレジスタ0−3に格納された16×16マトリックスデータは、読出され、4クロックサイクルで、ライトコントロール機能ユニットによってIMEM0−Fに書込まれる。IMEM0−Fは、当初IMEM0−Fに格納されていた16×16マトリックスのコーナーターンされたバージョンを今や保持している。
<実施態様5>
図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に格納される。
図70は、実施態様5によるライトコントロール機能ユニットの構成を示すブロック図である。図70に示すように、ライトコントロール機能ユニットは、4個の4×4バイト転置ユニット1406を備えている。PE0−3、PE4−7、PE8−B、PEC−Fのレジスタ0−3から順次読出された4個の4×4サブマトリックス(64バイトデータ)は、4個の4×4バイト転置ユニット1406に供給される。4個の4×4バイト転置ユニット1406から出力された4個の4×4サブマトリックスは、対応のIMEM0−3、IMEM4−7、IMEM8−B、IMEMC−Fの、アドレスジェネレータ1403によって発生させたライトアドレスに格納される。
IMEM0−Fに書込まれ、サブマトリックス(各々リードコントロール機能ユニットによるスワッピング及びライトコントロール機能ユニットによる転置を受けている)を有している16×16マトリックスは、当初IMEM0−Fに格納されていた16×16マトリックスデータのコーナーターン済みのバージョンである。
<実施態様6>
図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に格納される。
図72は、実施態様6によるライトコントロール機能ユニットの構成を示すブロック図である。図72に示したように、ライトコントロール機能ユニットは、4×4サブマトリックスの横方向の位置を入れ替える4×16バイトのスワップユニット1405を備えている。各々転置された4×4サブマトリックス(64バイトデータ)は、PE0−3、PE4−7、PE8−B、PEC−Fのレジスタ0−3から順次読出され、4×16バイトのスワップユニット1405に供給される。4×16バイトのスワップユニット1405から出力された4個の4×4サブマトリックスは、対応のIMEM0−3、IMEM4−7、IMEM8−B、IMEMC−Fのアドレスジェネレータ1403によって発生させたライトアドレスに格納される。
IMEM0−Fに書込まれ、サブマトリックス(各々リードコントロール機能ユニットによるスワッピング及びライトコントロール機能ユニットによる転置を受けている)を有している16×16マトリックスは、当初IMEM0−Fに格納されていた16×16マトリックスデータのコーナーターン済みのバージョンである。
本発明は、装置間のフルクロスバー接続を設ける代りに、各PEから選択されたIMEMユニットへの接続のみを与えることによって、SIMDモードで動作するプロセッシング・エレメントの内部メモリに分散記憶された正方マトリックス及びその転置マトリックスに時間と面積の効率良いアクセスするために使用し得る。この選択は、直接接続のために自身のIMEMのみに、またコーナーターンを実行するため転置マトリックスの生成に必要なIMEMユニットに、時間と面積の効率良いアクセスすることを可能とする仕方でなされる。
ここに例示した実施態様及び実施例は、本発明の(付記を含む)全開示の範囲内において変更ないし調整が可能である。本発明の各付記の範囲内において、種々の開示された要素を種々の仕方で組合わせ、また選択することができる。即ち、付記を含む全開示及び技術上のコンセプトに従って当業者によってなされ得る変更は本発明に含まれる。
100 プロセッシング・エレメント(PE)
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×mバイトを受信する)
1503 リードコントロール機能ユニットのフローチャート(IMEMベースアドレスと下位log2(N/m) カウンタビット及び反転カウンタビットを組合わせることにより(N/m)個のIMEMアドレスを計算する)
1504 リードコントロール機能ユニットのフローチャート((N/m)個のアドレスをIMEMに送り、m個の隣接IMEMが1アドレスを受ける)
1505 リードコントロール機能ユニットのフローチャート((N/m)×mバイトを受ける)
1506 リードコントロール機能ユニットのフローチャート(アドレスビット上に動作するインデックスiを0にセットする)
1507 リードコントロール機能ユニットのフローチャート(位置iのカウンタビットをテストし、位置iのビットが0ならば1509に続け、そうでなければ1508に続ける)
1508 リードコントロール機能ユニットのフローチャート(サブブロック行の位置を対ごとにスワップ、インデックスにおいてビットiのみが異なっていれば2サブブロックの対がサブブロックによって形成される)
1509 リードコントロール機能ユニットのフローチャート(インデックスiを増加させる)
1510 リードコントロール機能ユニットのフローチャート(iがlog2N/mより低いと、1507にジャンプし、そうでなければ1511に続ける)
1511 リードコントロール機能ユニットのフローチャート(縦方向にmバイトで、横方向に隣接したmエレメントとして、mバイトを再構成する)
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×mバイトをIMEMに送る)

Claims (10)

  1. N×N(Nは2以上の所定の正の整数である)のマトリックスエレメント及び転置の正方マトリックスにアクセスし、単一命令複数データモードで動作する装置であって、
    N個のプロセッシングエレメントを有し、各々の前記プロセッシングエレメントは、m個(mは所定の正の整数であり、Nの除数である)のマトリックスエレメントに等しいデータ幅を有し、
    前記N個のプロセッシングエレメントは(N/m)グループにグループ化され、各々の前記グループは、m個のプロセッシングエレメントを有し、
    更に、N個の単一ポートの内部メモリを有し、各々の前記内部メモリは、m個のマトリックスエレメントに等しいデータ幅を有し、N個の単一ポートの内部メモリは、(N/m)グループにグループ化され、各々の前記グループは、m個の内部メモリを有し、
    更に、前記プロセッシングエレメントと前記内部メモリとの間の接続を扱うコネクション装置を有し、
    前記コネクション装置は、2×(N/m)クロックサイクルでマトリックスのコピー及びマトリックスのコーナーターンの実行を可能とするリードコントロール機能ユニット及びライトコントロール機能ユニットを備えている装置。
  2. 前記リードコントロール機能ユニットが、第1のパスと第2のパスとのどちらかを入力から出力に選択するためのセレクタを有し、
    前記第1のパスは、プロセッシングエレメントのグループの各プロセッシングエレメントから、内部メモリのグループ中の自身の内部メモリへのアクセスのための、入力側と出力側との間の直接接続を与え、前記第2のパスは、マトリックスの転置の発生のためのアクセスを与え、
    前記リードコントロール機能ユニットが、更に、
    縦方向メモリエレメント・サブブロック行アドレスを並列に計算する(N/m)個のアドレス発生器を有し、
    前記メモリエレメント・サブブロックは、m個の方向に隣接するメモリエレメントを有し、前記メモリエレメントは、m個の方向に隣接するマトリックスエレメントを有し、
    縦方向メモリエレメント・サブブロック行アドレスは、所望の縦方向位置のメモリエレメント・サブブロックにアクセスするために用いられ、
    (N/m)×mエレメントのスワップユニットは、選択された一のメモリエレメント・サブブロック行に属するメモリエレメント・サブブロックの(N/m)個のメモリエレメント・サブブロックをそれぞれの目的の横方向位置に並列に移動させ、
    (N/m)個のm×mエレメントの転置ユニットが並列に動作してm×mエレメントのマトリックスの各エレメントを位置(x、y)から位置(y、x)に各々移動させる請求項1に記載の装置。
  3. 前記ライトコントロール機能ユニットが、第1のパスと第2のパスを入力から出力に選択するためのセレクタを有し、前記第1のパスは、プロセッシングエレメントのグループの各プロセッシングエレメントから、内部メモリのグループ中の自身の内部メモリへのアクセスのための、入力側と出力側との間の直接接続を与え、前記第2のパスは、マトリックスの転置の発生のためのアクセスを与え、
    前記ライトコントロール機能ユニットが、更に、それぞれのメモリエレメント・サブブロックの縦方向メモリエレメント・サブブロック行アドレスを並列に計算する(N/m)個のアドレス発生器を有し、
    縦方向メモリエレメント・サブブロック行アドレスは、プロセッシングエレメントのグループに含まれるそれぞれのプロセッシングエレメントが受信したm個のマトリックスエレメントからなるメモリエレメントのそれぞれを、内部メモリのグループに含まれるそれぞれの内部メモリにおける目的のメモリエレメント・サブブロック行位置に、並列に転送するために用いられるものであり、この並列転送に基づいて、(N/m)クロックサイクルで、前記ライトコントロール機能ユニットによる前記内部メモリへのN×Nのマトリックスエレメントのライトが行われるものである請求項1に記載の装置。
  4. N×N(Nは2以上の所定の正の整数である)のマトリックスエレメント及び転置の正方マトリックスにアクセスし、単一命令複数データモードで動作する方法であって、
    m個(mは所定の正の整数であり、Nの除数である)のマトリックスエレメントに等しいデータ幅を各々有するN個のプロセッシングエレメントを、(N/m)グループにグループ化し、各々の前記グループは、m個のプロセッシングエレメントを有し、更に
    m個のマトリックスエレメントに等しいデータ幅を各々有するN個の単一ポートの内部メモリを、(N/m)グループにグループ化し、各々の前記グループは、m個の内部メモリを含み、更に、
    リードコントロール機能及びライトコントロール機能によって、前記プロセッシングエレメントと内部メモリとの間の接続を行わせ、2×(N/m)クロックサイクルでマトリックスのコピー及びマトリックスの転置の実行を可能とする、方法。
  5. 単一命令複数データモードで動作して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正方マトリックスのコーナーターン済みのバージョンである装置。
  6. 単一命令複数データモードで動作して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正方マトリックスのコーナーターン済みのバージョンである装置。
  7. 単一命令複数データモードで動作して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正方マトリックスのコーナーターン済みのバージョンである装置。
  8. 単一命令複数データモードで動作して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正方マトリックスのコーナーターン済みのバージョンである装置。
  9. 単一命令複数データモードで動作して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サブマトリックスを前記リードアドレス発生手段によってそれぞれアドレスされた前記(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正方マトリックスのコーナーターン済みのバージョンである装置。
  10. 単一命令複数データモードで動作して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正方マトリックスのコーナーターン済みのバージョンである装置。
JP2012524948A 2009-11-26 2009-11-26 Simdモードで動作するプロセッシング・エレメントの内部メモリに分散記憶された正方マトリックス及びその転置マトリックスに、時間と面積の効率良いアクセスを可能とする装置及び方法 Active JP5532132B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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アレイを有するシステムのためのデータ転送ネットワークおよび制御装置

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