明 細 書
高速 PE間データ再配置機能を有するプロセッサアレイシステム
技術分野
[0001] 本発明は、オンチップ上に多数のプロセッシングエレメント(PE)を相互結合したプ 口セッサアレイシステムに関する。
背景技術
[0002] 従来より、ビデオ信号などの画像処理用にオンチップ一次元プロセッサアレイある いはそれに構成が類似した SIMD (Single Instruction Multiple Data)命令を 有するメディアプロセッサが用いられて 、る。例えば非特許文献 1に提示されて 、る ビデオ画像認識処理に向けた一次元プロセッサアレイでは、図 7に示すように、一端 力も順に画像を行単位で入力していき、そして隣接 PE同士には隣接する 1〜数列分 の画像列を割り付けた上で、 SIMD型制御に基づき、各 PEは、制御プロセッサ(CP) から放送される命令を自ローカルメモリ上のデータに適用することにより、 PE数分だ けの並列処理を実現する。
[0003] 特許文献 1 :特開平 5— 342184号公報
非特許文献 1:京 昭倫著「128個の 4ウェイ VLIW型 RISCコアを集積した車載向け 動画認識 LSI」電子情報通信学会研究会報告、集積回路研究会 (ICD) , 2003年 5月、 Vol. 103, No. 89, pp. 19— 24
発明の開示
発明が解決しょうとする課題
[0004] 一方、画像処理の中でも、特に画像に対し認識処理を行う場合では、最初の段階 でこそ全画素を対象に行われるエッジ検出処理などのように、処理すべき対象デー タが全 PE上に平等に存在するが、処理が進むに連れ、処理すべき対象データが PE 間で均一でなくなってしまうことが多!、。
[0005] 例えば多くの画像認識処理では、それまでの処理で、画像内の幾つかの(矩形)領 域を認識対象物が存在する箇所として特定すると、それらの候補領域のみが以降の 処理対象となる。また、それらの候補領域が、例えば図 8に模式的に示したように、お
互いに重なりを持つような位置関係で多数見つ力る場合が多いことも一つの特徴で ある。
[0006] ところが、例えば非特許文献 1のように、画像列を単位に PEへのデータ割付けを行 つている一次元プロセッサアレイでは、領域間で、列方向での位置的な重なりがある と、通常は重なりが発生した画像列の処理を受け持つ PE (例えば図 9 (a)の PEN— 2)がそうでない PEと比べ、重なりの回数分に比例して処理量が増え、 PE間で負荷 が不均一な状態となり処理性能が低下する。
[0007] こうした処理負荷の不均一性を解消するためには、図 9 (b)に示すように、複数の矩 形領域内画素データを、そっくり PE間で移動するという画素データの再配置処理を 行う必要がある。従来の一次元プロセッサアレイ上で、そうした画素データ再配置処 理を実現するためには、 PE数が 1行分の画素数と同様に Nであるとすると、図 10に 示すように、 CPを介する形で、 N個の画素を 1個ずつ逐次的に PE力 PEへと移動 することが、最も効率のよい方法になる。
[0008] カウンタ Cに Nをセットする(ステップ 1000)。
[0009] カウンタ Cがゼロとなるまで繰り返す。ステップ 1001の判定においてカウンタ Cが非 ゼロの場合、以下の処理を行い、ゼロの場合終了する。
[0010] PE番号が Cの PE上の Kをリードする(ステップ 1002)。
[0011] TMPを C+Kとする(ステップ 1003)。
[0012] PE番号が TMPの PE上の Dをリードする(ステップ 1004)。
[0013] PE番号が Cの PE上の Tに Dをライトする(ステップ 1005)。
[0014] Cを C—1にセットし (ステップ 1006)、ステップ 1001の判定に戻る。
[0015] この場合、図 10の 1001〜1006が示すように 6つの処理ステップを N回繰り返すた め、図 10の 1000を加えると、 PE間で 1行分の画素を再配置するのに、計 6N+ 1の ステップ数が必要であり、効率が悪い、という課題が存在していた。
[0016] なお、この課題の一つの解決方法として、 PE間結合に、 1次元結合ではなぐ例え ば特許文献 1に開示されて ヽるように、 2次元トーラスある 、はハイパ ·キューブと 、つ た、より高次元の結合形態を採用することで、ステップ毎の PE間距離を減らすァプロ ーチが考えられる。
[0017] しかし、結合の次元数を増やしてしまうと、チップ上でのレイアウトの自由度が減少 したり、あるいは PE間の配線距離が長くなつてしまうという問題点が存在していた。
[0018] したがって、本発明の主たる目的は、 PE間で画素などのデータを高速に再配置す ることにより処理の負荷分散を効率よく実現できるプロセッサアレイシステムを提供す ることにめる。
課題を解決するための手段
[0019] 本発明の第 1の側面(アスペクト)〖こ係るプロセッサアレイシステムは、複数 (M個)の プロセッサエレメント(以下、「PE」という)を含む PEブロックを少なくとも三つ有する P Eブロックアレイを備え、少なくとも一つの PEブロックは、前記一つの PEブロックとは 異なる少なくとも一つの他の PEブロックと 1本が所定ビットの M本の第 1の信号線で 結ばれるとともに、前記一つの PEブロック及び前記他の PEブロックとは異なる少なく とも一つのさらに別の PEブロックと 1本が所定ビットの M本の第 2の信号線で結ばれ、 前記一つの PEブロックに含まれる前記 PEが、前記 M本の第 1の信号線と前記 M本 の第 2の信号線の中から 1本の信号線を選択するセレクタ手段を備える、ことを特徴と する。
[0020] 本発明において、前記セレクタ手段は、前記 M本の第 1の信号線から一本の信号 線を選択する第 1のセレクタ手段と、前記 M本の前記第 2の信号線から一本の信号 線を選択する第 2のセレクタ手段と、前記第 1のセレクタ手段で選択された前記 1本の 信号線と、前記第 2のセレクタ手段で選択された前記 1本の信号線から、一本の信号 線を選択する第 3のセレクタと、を備える。
[0021] 本発明において、複数の前記 PEブロックは、一の PEブロックを一つのノードとする 一次元結合又はリング結合の形態で接続され、前記 PEブロックは、前記 PEブロック の一側で隣接する PEブロックと相互に前記 M本の第 1の信号線によって結ばれると ともに、前記 PEブロックの他側で隣接する PEブロックと相互に前記 M本の第 2の信 号線によって結ばれる。
[0022] 本発明において、 N個(ただし、 Nは 1より大きい自然数)の前記 PEに関して、距離 が M (ただし、 Mは 1より大きく Nより小さい自然数であり、 Nの約数)の PE同士を結合 する PE間での第 1の転送方向及び第 2の転送方向へのそれぞれの転送路を備え、
M個の隣接する PEがー個の PEブロックを構成し、前記 PEブロック内の M個の PEに よる前記第 1の転送方向への転送路が、前記 M本の第 1の信号線を構成し、前記 PE ブロック内の全 M個の PEによる前記第 2の転送方向への転送路カ 前記 M本の第 2 の信号線を構成する。
[0023] 本発明において、 N個(ただし、 Nは 1より大きい自然数)の前記 PE力 一つの PE を一つのノードとする一次元結合又はリング結合の形態で接続され、隣接 PE間の結 合線のほかに、さらに距離が M (ただし、 Mは 1より大きく Nより小さい自然数であり、 Nの約数)の PE同士を結合する PE間での前記第 1の転送方向及び前記第 2の転送 方向へのそれぞれの転送路を備え、 M個の隣接する PEがーつの PEブロックを構成 し、前記 PEブロック内の M個の PEによる第 1の転送方向への転送路が前記 M本の 第 1の信号線を構成し、前記 PEブロック内の M個の PEによる第 2の転送方向への転 送路が前記 M本の第 2の信号線を構成する。
[0024] 本発明において、前記 PEブロック内の各 PEは、前記 PEブロック内の全 PEに対す る第 1の転送方向の結合線及び第 2の転送方向の結合線により、それぞれ、隣接す る PEブロック内にある、自 PEから距離 Mの PEと結合されている。
[0025] 本発明にお 、て、前記各 PEは、
前記 PEとの距離が Mの PE同士を結合する前記第 1の転送方向への転送路 (BO) の転送データを格納する第 1の転送バッファ手段 (L)と、
前記 PEとの距離が Mの PE同士を結合する前記第 2の転送方向への転送路 (B1) の転送データを格納する第 2の転送バッファ手段 (R)と、
前記 PEブロック内の複数の前記第 1の転送バッファ手段の中から一つを選ぶ第 1 のセレクタ手段 (LS)と、
前記 PEブロック内の複数の前記第 2の転送バッファ手段の中から一つを選ぶ第 2 のセレクタ手段 (RS)と、
転送方向情報を格納するレジスタ手段 (F)と、
転送路を利用して、距離 Mの転送が全 PE間で行われる度に、格納値の絶対値を Mだけ減少させ、格納値が Mより小さくなつた時点で、前記格納値により、前記第 1の セレクタ手段 (LS)および第 2のセレクタ手段 (RS)を制御して得られる選択結果の!/ヽ
ずれかを、レジスタ手段 (F)の値により選択し、前記 PEへの転送結果として格納する 転送結果バッファ手段 (T)と、を含む。
[0026] 本発明にお 、て、前記各 PEは、前記 PEとの距離が Mの PE同士を結合する第 1転 送方向または第 2の転送方向への転送路の転送データを格納する転送バッファ手段 (L)と、
前記 PEブロック内の複数の前記転送バッファ手段(L)の中から一つを選ぶセレクタ 手段 (LS)と、
転送路を利用して、距離 Mの転送が全 PE間で行われる度に、格納値の絶対値を Mだけ減少させ、前記格納値が Mより小さくなつた時点で、前記格納値で、前記セレ クタ手段 (LS)を制御して得られる選択結果を、同 PEへの転送結果として格納する 転送結果バッファ手段 (T)と、を含む。
[0027] 本発明において、自 PEの右方向または左方向を正、その逆を負とし、最終的に自 PEに再配置されるデータ(D)を保有する PEの自 PE位置からみた格子距離を K (伹 し Kは— NZ2≤K≤NZ2の任意の値であってよい)とした場合に、転送動作に参加 するよう各 PEの動作非動作を決定するマスクレジスタ (MR)を動作側に設定し、 前記第 1の転送バッファ手段 (L)と前記第 2の転送バッファ手段 (R)に、自 PE上の データ(D)を格納し、
格子距離 (K)が正の場合は、レジスタ手段 (F)をオンとし、前記転送結果バッファ 手段 (T)に格子距離 (K)と PEブロック内で左または右力 数えた場合の自 PE番号 との加算結果を格納し、
格子距離 (K)が負の場合は、レジスタ手段 (F)をオフとし、前記転送結果バッファ 手段 (T)に格子距離 (K)と PEブロック内で右または左力 数えた場合の自 PE番号 との減算結果を格納するように制御する。
[0028] 本発明において、自 PEの右方向または左方向を正、その逆を負、最終的に自 PE に再配置されるデータ Dを保有する PEの自 PE位置からみた格子距離を K (但し Kは 0≤K≤N— 1の任意の値であってよい)とした場合に、転送動作に参加するよう各 P Eの動作 ·非動作を決定するマスクレジスタ (MR)を動作側に設定し、
前記転送バッファ手段 (L)に自 PE上のデータ (D)を格納し、
前記転送結果バッファ手段 (T)に、格子距離 (Κ)と ΡΕブロック内で左または右から 数えた場合の自 ΡΕ番号との加算結果を格納するように制御する。
[0029] 本発明にお ヽて、レジスタ手段 (F)がオンの場合は、前記転送結果バッファ手段の 値 Τが Μ以上ならば Τ—Μの値を前記転送結果バッファ手段 (Τ)に格納し、前記転 送結果バッファ手段 (Τ)が Μより小さければ ΡΕブロック内で左力 数えた場合の ΡΕ 番号力 の ΡΕの前記第 1の転送バッファ手段 (L)の内容を、前記第 1のセレクタ手段 (LS)で選び、前記転送結果バッファ手段 (Τ)に格納し、マスクレジスタ (MR)を非動 作に設定し、
レジスタ手段 (F)がオフの場合には、前記転送結果バッファ手段 (T)がー M以下な らば T+Mの値を、前記転送結果バッファ手段 (T)に格納し、 Tがー Mより大きけれ ば PEブロック内で右から数えた場合の PE番号が Tの PEの前記第 2の転送バッフ ァ手段 (R)の内容を前記第 2のセレクタ手段 (RS)で選び、前記転送結果バッファ手 段 (T)に格納し、マスクレジスタ(MR)を非動作に設定した上、全 PEが、左結合線( BO)と右結合線 (B1)を利用し、 M隣接する左と右の PEへそれぞれ、前記第 1の転 送バッファ手段 (L)や前記第 2の転送バッファ手段 (R)の内容を転送すると共に、前 記第 1の転送バッファ手段 (L)と前記第 2の転送バッファ手段 (R)にそれぞれ右 M隣 接と左 M隣接 PEから転送されてきたデータを格納する動作を、全 PEのマスクレジス タ MRが非動作の設定になるまで、マスクレジスタ(MR)が動作設定である各 PEが繰 り返し行うように制御する手段 (制御プロセッサ CP)を備えて!/ヽる。
[0030] 本発明において、前記転送結果バッファ手段 (T)が M以上ならば T—Mの値を前 記転送結果バッファ手段 (T)に格納し、
Tが Mより小さければ PEブロック内で左から数えた場合の PE番号が Tの PEの前記 第 1の転送バッファ手段 (L)の内容を第 1のセレクタ手段 (LS)で選び前記転送結果 ノ ッファ手段 (T)に格納し、マスクレジスタ (MR)を非動作に設定した上、全 PEが左 結合線 (BO)を利用し、 M隣接する左の PEへ前記第 1の転送バッファ手段 (L)の内 容を転送すると共に、前記第 1の転送バッファ手段 (L)に右 M隣接 PEから転送され てきたデータを格納する動作を、全 PEのマスクレジスタ(MR)が非動作の設定にな るまで、マスクレジスタ (MR)が動作設定である各 PEが繰り返し行うように制御する手
段 (制御プロセッサ CP)を備えて!/ヽる。
[0031] 本発明の他の側面によれば、それぞれが M個のプロセッサエレメント(以下、「PE」 という)からなる複数の PEブロックを有し、距離が M (ただし、 Mは 1より大きい自然数 )の PE同士を結合する PE間での第 1の転送方向及び Z又は第 2の転送方向への転 送路を備えたプロセッサアレイシステムを構成する PEであって、前記第 1及び/又は 第 2の転送方向への転送路による前記 PEが属する PEブロックへの複数の転送デー タの中から一つを選ぶセレクタ手段を含む PEが提供される。
[0032] 本発明の PEは、前記 PEとの距離が Mの PE同士を結合する前記第 1の転送方向 への転送路の転送データを格納する第 1の転送バッファ手段と、前記 PEとの距離が Mの PE同士を結合する前記第 2の転送方向への転送路の転送データを格納する第 2の転送バッファ手段と、前記 PEブロック内の M個の前記第 1の転送バッファ手段の 中力 一つを選ぶ第 1のセレクタと、前記 PEブロック内の M個の前記第 2の転送バッ ファ手段の中から一つを選ぶ第 2のセレクタと、転送方向情報を格納するレジスタ手 段と、転送路を利用して、距離 Mの転送が全 PE間で行われる度に、格納値の絶対 値を Mだけ減少させ、格納値が Mよりも小さくなつた時点で、前記格納値により、前 記第 1のセレクタ及び前記第 2のセレクタを制御して得られる選択結果のいずれかを 、前記レジスタ手段の値により選択し、前記 PEへの転送結果として格納する転送結 果バッファ手段と、を含む。あるいは、本発明の PEは、前記 PEとの距離が Mの PE同 士を結合する前記第 1の転送方向又は第 2の転送方向への転送路の転送データを 格納する転送バッファ手段を備え、前記セレクタ手段は、前記第 1の転送方向又は 第 2の転送方向への転送路の転送データを格納する複数の前記転送バッファ手段 の中から一つを選び、転送路を利用して、距離 Mの転送が全 PE間で行われる度に、 格納値の絶対値を Mだけ減少させ、前記格納値が Mよりも小さくなつた時点で、前記 格納値で、前記セレクタ手段を制御して得られる選択結果を、前記 PEへの転送結果 として格納する転送結果バッファ手段を含む。
[0033] 本発明に係るシステムは、それぞれが複数のプロセッサエレメント(以下、「PE」 t ヽ う)を含み、一次結合又はリング結合される、複数の PEブロックを有し、前記 PEとして
第 1の転送方向への結合線を介して、前記第 1の転送方向に関して自 PEと予め定 められた所定距離離間している、他の PEブロックの PEと接続され、
前記第 1の転送方向と逆方向の第 2の転送方向への結合線を介して、前記第 2の 転送方向に関して自 PEと予め定められた所定距離離間している、さらに別の PEプロ ックの PEと接続され、
前記第 1及び第 2の転送方向への結合線の転送データをそれぞれ格納する第 1及 び第 2の転送バッファ手段と、
自 PEの前記第 1の転送バッファ手段と、前記自 PEが属する PEブロック内の他の P Eの前記第 1の転送バッファ手段の中から一つを選択する第 1のセレクタ手段と、 前記自 PEの前記第 2の転送バッファ手段と、前記自 PEが属する前記 PEブロック 内の他の PEの前記第 2の転送バッファ手段の中力 一つを選択する第 2のセレクタ 手段と、
前記結合線を利用した、前記所定距離離間した PE間での転送動作が行われる度 に、前記所定距離の値だけ格納値を更新し、前記格納値と前記所定距離の値とが 予め定められた大小関係となった時点で、前記格納値により、前記第 1のセレクタ手 段及び前記第 2のセレクタ手段を制御して得られる選択結果の 、ずれかを、転送方 向にしたがって選択し、選択結果を自 PEへの転送結果として格納する転送結果バッ ファ手段と、を含む PEを有する。あるいは、前記 PEとして、結合線を介して、自 PEと 予め定められた所定距離離間している、他の PEブロックの PEと接続され、
前記結合線の転送データを格納する転送バッファ手段と、
自 PEの前記転送バッファ手段と、前記自 PEが属する PEブロック内の他の PEの前 記転送バッファの中から一つを選ぶセレクタ手段と、
前記結合線を利用した、前記所定距離離間した PE間での転送動作が行われる度 に、前記所定距離の値だけ格納値を更新し、前記格納値と前記所定距離の値とが 予め定められた大小関係となった時点で、前記格納値により、前記セレクタ手段を制 御して得られる選択結果を、 自 PEへの転送結果として格納する転送結果バッファ手 段と、を含む PEを有する。
発明の効果
[0034] 本発明によれば、処理の負荷分散を効率よく実現することができる。その理由は、 本発明にお 、ては、 N個の PEを有する一次元プロセッサアレイ型システム上で PE間 結合の次元数を増やさずに、 1行分(=N個)のデータを PE間で相互に交換するの に要するステップ数を、短縮できるようにしたためである。また、本発明によれば、レイ アウトの容易性を維持することができる。さらに、本発明によれば、ハードウェア規模 を/ J、さくすることができる。
図面の簡単な説明
[0035] [図 1]本発明の一次元プロセッサアレイの概略構成を示すブロック図である。
[図 2]本発明の一次元プロセッサアレイの PEブロック間結合線の構成を示すブロック 図である。
[図 3]本発明を実施するための最良の形態の構成を示すブロック図である。
[図 4]本発明を実施するための最良の形態の動作の前半を示す流れ図である。
[図 5]本発明を実施するための最良の形態の動作の後半を示す流れ図である。
[図 6]本発明を実施するための最良の形態の動作の具体例を示す図である。
[図 7]背景技術である既存の一次元プロセッサアレイの概略構成を示すブロック図で ある。
[図 8]本発明が解決しょうとする課題を説明するための図である。
[図 9]本発明が解決しょうとする課題を説明するための図である。
[図 10]従来技術の場合の動作の流れを示す図である。
[図 11]本発明の効果の一つを示す図である。
[図 12]本発明の第 2の発明を実施するための最良の形態の動作の前半を示す流れ 図である。
[図 13]本発明の第 2の発明を実施するための最良の形態の動作の後半を示す流れ 図である。
符号の説明
[0036] 100 一次元プロセッサアレイ(PEアレイ)
101 PE (プロセッシング 'エレメント)
102 PEブロック(PEの集合体)
103 右から左への PE間結合線 BO (左結合線)
104 左力も右への PE間結合線 B1 (右結合線)
110 制御プロセッサ CP
113 命令コード
301 B0からの転送データを格納するための転送バッファ L
302 B1からの転送データを格納するための転送バッファ R
303 セレクタ手段 LS
304 セレクタ手段 RS
305 転送結果バッファ T
306 方向レジスタ F
307 マスクレジスタ MR
308 命令デコーダ DE
309 レジスタフアイノレ RF
310 データメモリ
311 演算器
400〜405、 500〜511、 1000〜1006、 1200〜1202、 1300〜1306 ステップ 発明を実施するための最良の形態
[0037] 上記した本発明についてさらに詳細に説述すべく添付図面を参照して以下に説明 する。
[0038] はじめに、本発明の概要'動作原理を説明しておく。 N個の PEを有する一次元プロ セッサアレイ型システムは、 Mをチップ開発時でのレイアウトの単位である PEブロック 内の PE数、 Xを PE間の単位転送バイト数とする。
[0039] 図 1、図 3を参照すると、本発明のシステムは、
(A)距離 Mの PE同士を結合することによって得られる PEブロック単位で見た場合 での M本の Xバイト幅結合線手段(左結合線) B0 (右から左へ)、及び、 M本の Xバイ ト幅結合線手段 (右結合線) B1 (左から右へ)と、
(B) PEブロック内の各 PEそれぞれに存在する、 B0と B1からのデータを格納する 転送バッファ L及び転送バッファ R、
(C) PEブロック内にある M個の Lと尺の中から 1つを選ぶ M入力 1出力のセレクタ L S及びセレクタ RS、
(D) PEの動作 Z非動作を制御するマスクレジスタ MR、
(E)転送結果の格納及びカウンタとしても用いられる転送結果バッファ T、
(F)転送方向を記憶する方向レジスタ F、
とを備えている。
[0040] 上記構成のもとで、
.再配置対象を N個の Xバイトデータ Dとし、
•自 PEの右方向を正、左方向を負とし、
•自 PEに再配置される予定のデータ Dが存在する PEの自 PE位置からみた格子距 離を K (但し Kは NZ2≤K≤NZ2の任意の値であってよい)とすると、
制御プロセッサ CPは、 PEアレイに対して以下の制御を行う (図 4参照)。
[0041] まず、各 PEが転送バッファ Lと尺に、 自 PE上のデータ Dを格納する(図 4のステップ 400)。
[0042] 格子距離 Kが正又は 0の場合には、格子距離 Kに、 PEブロック内で左力 数えた 場合の自 PE番号を加算した結果を、転送結果バッファ Tに格納する(図 4の 402)。 格子距離 Kが負の場合は、格子距離 Kに、 PEブロック内で右カゝら数えた場合の自 P E番号を減算した結果を転送結果バッファ Tに格納する(図 4の 403)。格子距離 Kが 0以上の場合は方向レジスタ Fに 1をセットし(図 4の 402)、格子距離 Kが負の場合に は方向レジスタ Fに 0をセットし(図 4の 403)、マスクレジスタ MRに 1を格納する(図 4 の 405)ように、 PEアレイを制御する。
[0043] 次に、制御プロセッサ CPは、全 PEのマスクレジスタ MRをモニターし、全 PEのマス クレジスタ MRが全てゼロになるまで、下記動作をステップ毎に繰り返すように、 PEァ レイを制御する。
[0044] すなわち、マスクレジスタ MRが非ゼロの PE上は、転送結果バッファ Tと方向レジス タ Fの値に応じ、
方向レジスタ Fが 1の場合は、転送結果バッファ Tが M以上である場合、 T— Mの値 を転送結果バッファ Tに格納し(図 5のステップ 506)、転送結果バッファ Tが Mより小
さ 、場合、 PEブロック内で左力 数えた場合の PE番号が Tである PEの転送バッファ Lの内容を、セレクタ LSで選び、転送結果バッファ Tに格納し(図 5のステップ 503)、 マスクレジスタ MRをゼロにセットする(図 5のステップ 504)。
[0045] 方向レジスタ Fが 0の場合、転送結果バッファ Tがー M以下である場合、 T+Mの値 を、転送結果バッファ Tに格納し(図 5のステップ 511)、転送結果バッファ Tが— M り大きい場合、 PEブロック内で右力 数えた場合の PE番号が— Tである PEの転送 バッファ Rの内容をセレクタ RSで選び、転送結果バッファ Tに格納し(図 5のステップ 508)、かつマスクレジスタ MRをゼロにセットする(図 5のステップ 509)ように制御す る。なお、転送結果バッファ手段 Tにおいて、方向レジスタ Fが 1のとき、セレクタ LSで 選択された出力を選択し、方向レジスタ F力 SOのとき、セレクタ RSで選択された出力を 選択する機能は、請求項 2の第 3のセレクタ手段に対応する。
[0046] その後、結合線 B0と結合線 B1を利用し、 M隣接する左と右の PEへ転送バッファ L や転送バッファ Rの内容を転送する(図 5のステップ 505、 510)と共に、転送バッファ Lと転送バッファ尺に、それぞれ、右 M隣接と左 M隣接する PEから転送されてきたデ ータを格納するように動作する。
[0047] 上記構成および動作により、最大 1 + (N÷ 2M)ステップ後に、各 PEの転送結果バ ッファ Tには、自 PE力 距離 Kにある PE上のデータが格納される。
[0048] このため、図 10に示す従来の手法と比べると、約 12M倍の効率で、 1行内にある N 個の Xバイトデータを再配置することができる。
[0049] すなわち、本発明によれば、従来のように、隣接 PEとではなぐ距離 Mの PEと結合 する PE間結合線 B0、結合線 B1を有すると共に、各 PEが、最大(1 + (N÷ 2M) )の ステップ数の間の各ステップ中に、隣接 PEブロック力 転送されて次々と自 PEブロッ クを経由していくステップ毎、 2M個のデータの中から、構成要素として転送結果レジ スタ T、方向レジスタ F、転送バッファ L、転送バッファ S、セレクタ LS、 RS、そしてマス クレジスタ MRを用いた、単純な動作で、保持しておくべきデータを抽出できるように 構成されている。
[0050] このため、本発明によれば、 N個の PEを有する一次元プロセッサアレイ型システム 上で PE間結合の次元数を増やさずに、 1行分(=N個)のデータを PE間で相互に交
換するのに要するステップ数が従来の最大( 1 + 6N)から最大( 1 + (N ÷ 2M) )に短 縮できる。
[0051] 本発明によれば、レイアウトの容易性を維持することができる。すなわち、本発明に お!、ては、 M個の PEからなる PEブロックをレイアウトの単位として!/、ることから結合の 一次元性が維持されており、多次元結合とした場合よりも、チップ上でのレイアウトが 容易化している。
[0052] 本発明において、 M = Nとすると、 PE間データ転送距離は最大で、約 N÷ 2と なり、これは典型的な 2次元結合である八方格子結合のそれと同等である。そして、 P E毎に必要となるデータ転送用セレクタの規模は、八方格子結合の場合では、図 11 (a)に示すように、 8データから 1つを選ぶセレクタが 8つ必要なのに対し、本発明によ れば、 Nが 1024 (Mが 32)では八方格子結合と同じ 8つ必要とする力 Nが 1024より も小さい場合、例えば 256 (Mが 16)では、図 11 (b)に示すように、その約半分の 4つ だけで済むため、実用的な Nの値域内ではハードウェア規模を小さくできる。
[0053] これは、本発明においては、転送方向が左右の 2方向のみで済むため実現に要す るハードウェアコストが低 、一次元結合と、 PE毎のローカルなセレクタを有効に組み 合わせているためである。以下、実施の形態について説明する。
[0054] 図 1を参照すると、本発明の第 1の実施の形態は、 N個の PE101を有する PEァレ ィ 100と、 PEアレイに命令を供給する制御プロセッサ 110と、を有する。
[0055] PEアレイ 100は、それぞれ力 M個(ただし、 Mは Nの約数)の PE101を含む N÷ M個の PEブロック 102と、隣接する PEブロック同士を接続する左結合線 BO(103、 右カゝら左へ)と、右結合線 Bl(104、左カゝら右へ)と、を備えている。
[0056] 図 2を参照すると、一つの PEブロック 102内の各 PE101は、隣接する PEブロック 1 02内にある自 PEから距離 M (図 2では Mが 4)の PEと結合しており、 BOと B1は、そ れぞれ、 PEブロック 102内の全 PEに対する右から左、左から右への結合線の集合 体である。
[0057] 図 3を参照すると、各 PE101は、 BOと B1のうちの対応する一部の結合線で転送さ れてきたデータを格納する転送バッファ手段 L (301)と R(302)、
PEブロック 102内の全 PEの Lと Rの中から 1つを選ぶ M入力(図 3では Mが 8) 1出
力のセレクタ手段 LS (303)と RS (304)、
転送結果の格納およびカウンターとしても用いられる転送結果バッファ手段 T (305 )、
転送方向を記憶する方向レジスタ F (306)、
ΡΕの動作非動作を制御しかつ制御プロセッサ CP (110)力ももアクセス可能なマス クレジスタ MR (307)、
とを含む。
[0058] また、 PE101は、通常、その他に命令デコーダ DE (308)、レジスタファイル RF (3 09)、データメモリ(310)、そして演算器 (311)を備えている。
[0059] 転送結果バッファ手段 T (305)は、その内容を、レジスタファイル RF (309)に転送 したり、データメモリ(310)ヘライトしたり、あるいは、直接に、演算器(311)のオペラ ンドとして利用できるように構成されて 、る。
[0060] これらの手段は、それぞれ概略つぎのように動作する。なお、自 PEの右方向を正、 左方向を負とした場合に、自 PEに再配置される予定のデータ Dが存在する PEの自 PE位置からみた格子距離を K (但し Kは NZ2≤K≤NZ2の任意の値であってよ い)としている。この定義は逆でも力まわないが、以下では、この定義(自 PEの左方向 を正、右方向を負)のもとでの各手段の概略動作を述べる。
[0061] 制御プロセッサ 110から「MVSET」という命令コード 113が送られてくるものとする 。各 PE101は、自分が送出するデータを Dとすると、転送バッファ手段 Lと Rに Dを格 納し、全ての PEの MRを 1にセットする。
[0062] Kが正の場合は、方向レジスタ Fに 1、かつ転送結果バッファ手段 Tに、 Kと PEブロ ック内で左力 数えた場合の自 PE番号との加算結果、 Kが負の場合は、 Fに 0、かつ 、転送結果バッファ T手段に、 Kと PEブロック内で右力も数えた場合の自 PE番号との 減算結果を格納する。通常これらの動作は、単純のため、 1ステップで完了できる。
[0063] 制御プロセッサ 110から「MVLR」という命令コード 113が送られてくると、マスクレ ジスタ MRが 1の PEは、
方向レジスタ Fが 1の場合には、
Tが M以上ならば、 T Mの値を Tに格納し、
Tが Mより小さければ、ブロック内で左から数えた場合の PE番号が Tの PEの の 内容を LSで選び Tに格納し、かつ、 MRをゼロにセットする。
[0064] 方向レジスタ F力^の場合には、
Tがー M以下ならば、 T+Mの値を Tに格納し、
Tがー Mより大きければ、ブロック内で右から数えた場合の PE番号が Tの PEの Rの内容を RSで選び、 Tに格納し、かつ MRをゼロにセットする。
[0065] 次に、全 PEが BOと B1を利用し、 M隣接する左と右の PEへ Lや Rの内容を転送す ると共に、 Lと Rに、それぞれ右 M隣接と左 M隣接 PEから転送されてきたデータを格 納する。通常、これらの動作は単純のため 1ステップで完了できる。
[0066] 一方、制御プロセッサ 110は、全 PEの MRがゼロになるまで、ステップ毎に同じ命 令コード「MVLR」を PEに送り続ける。
[0067] 次に、図 4及び図 5のフローチャートを参照して、本実施の形態の全体の動作につ いて詳細に説明する。
[0068] 図 4は、「MVSET」命令コードが制御プロセッサ 110から送られた場合の各 PEで 実施される動作に係わるフローチャートである。
[0069] Dを Lと Rにそれぞれセットする(ステップ 400)。
[0070] 全 PEの MRに 1をセットする(ステップ 405)。
[0071] K力 SO以上か否かを判定する (ステップ 401)。
[0072] Kが 0以上の場合には、方向レジスタ Fに 1をセットし、かつ、 Kに PEブロック内で左 力も数えた場合の自 PE番号を加算した結果を、転送結果バッファ Tに格納する (ステ ップ 402)。
[0073] K力 Oより小さい場合には、方向レジスタ Fに 0をセットし、転送結果バッファ Tに Kに PEブロック内で右力も数えた場合の自 PE番号を加算した結果を Tに格納する (ステ ップ 403)。
[0074] ステップ 400〜405の動作は単純であるため、通常 1ステップで行うことができる。
[0075] 図 5は、「MVLR」命令コードに係わる、制御プロセッサ 110および各 PEで実施さ れる動作に係わるフローチャートである。
[0076] まず、制御プロセッサ 110力 マスクレジスタ MRが 1である PEが存在するか否かを
調べる(ステップ 520)。
[0077] そのような PEが存在する場合に PEアレイ 100へ命令コード「MVLR」を送る(ステツ プ 500)。
[0078] PEアレイ側では、マスクレジスタ MRが 1の PE上において、方向レジスタ Fが 1であ るか否かを判定する(ステップ 501)。
[0079] 方向レジスタ Fが 1の場合には、ステップ 502〜505の動作、方向レジスタ F力 0の 場合には、ステップ 507〜511の動作を行う。
[0080] 転送結果バッファ Tが Mより小さ 、か否かを判定する(ステップ 502)。
[0081] 転送結果バッファ Tが Mより小さいければ、 PEブロック内で左力 数えた場合の PE 番号が Tの PE上の Lを LSで選び、転送結果バッファ Tに格納する(ステップ 503)。
[0082] マスクレジスタ MRを 0にセットする(ステップ 504)。
[0083] 結合線 BOを用いて、 L内データを左方向で Mだけ離れた PEの転送バッファ Lに転 送する(ステップ 505)。
[0084] Tが M以上の場合は、転送結果バッファ Tを T—Mに更新する (ステップ 506)。
[0085] Tがー Mより大きいか否かを判定する(ステップ 507)。
[0086] Tがー Mより大きければ、 PEブロック内で右から数えた場合の PE番号が Tの PE 上の Rを RSで選び、転送結果バッファ Tに格納する(ステップ 508)。
[0087] マスクレジスタ MRを 0にセットする(ステップ 509)。
[0088] 結合線 B1を用いて R内データを右方向で Mだけ離れた PEの転送バッファ Rに転 送する (ステップ 510)。
[0089] Tが— M以下の場合は、転送結果バッファ Tを T+Mに更新する (ステップ 511)。
[0090] ステップ 501〜511の動作は、単純であるため、通常 1ステップで行うことができる。
[0091] 次に、本実施の形態の効果について説明する。
[0092] 本実施の形態では、 PE同士を距離 Mで双方向で結合しているため、 PE数が Nに おいて、全 PEから送出された N個の転送データ Dは、 1 + (N÷ 2M)のステップ数を かけて全 PEブロックを通過できる。
[0093] また、本実施の形態では、さらに各 PE力 PEブロック内の M個の PEが有する転送 バッファ Lと Rの内容の中力も一つを選ぶためのセレクタ LSと RS、およびそれらをど
のタイミングで利用すべきかを指定するカウンターとしての役割も果たす転送結果バ ッファ Tとを備えているため、 BOや B1を使って、各 PEブロックを、右から左、および、 左から右へと通過していく転送データ D群の中から、所定のステップにおいて、タイミ ングで効率よく必要なものを選択し、 自 PEの Tに取り込むことができる。
[0094] 本実施の形態では、マスクレジスタ MRを利用して全 PEが転送データを得た時点 で処理を停止するようにしているため、さらに多くの場合では、 1 + (N÷ 2M)よりも少 な!、ステップ数で全動作を終えることができる。
[0095] 次に、本発明の第 2の実施の形態について図面を参照して詳細に説明する。図 1、 図 2、図 3を参照すると、本発明の第 2の実施の形態は、図 1と図 2において、右結合 線 B1が存在しない点、及び、図 3において、転送バッファ R、セレクタ RS、方向レジス タ 、そして右結合線 B1が存在しない点以外は、本発明の第 1の実施の形態と同じ 構成をもつ。これらの手段は、概略つぎのように動作する。なお、 自 PEに再配置され る予定のデータ Dが存在する PEの自 PE位置力 右方向へみた場合の格子距離を K (但し Kは 0≤ K≤ N— 1の任意の値であつてよ!/、)とする。
[0096] 制御プロセッサ 110から「MVSET」という命令コード 113が送られてくるものとする 。各 PE101は自分が送出するデータを Dとする。
[0097] 転送バッファ手段 Lに Dを格納し、全ての PEの MRを 1にセットし、転送結果バッフ ァ手段 Tに Kと PEブロック内で左から数えた場合の自 PE番号との加算結果を格納す る。通常これらの動作は単純のため 1ステップで完了できる。
[0098] 制御プロセッサ 110から、「MVLR」という命令コード 113が送られてくると、 MRが 非ゼロの PEは、
Tが M以上ならば、 T—Mの値を転送結果バッファ Tに格納し、
Tが Mより小さければ、ブロック内で左から数えた場合の PE番号が Tの PEの Lの内 容を LSで選び、転送結果バッファ Tに格納し、かつ、マスクレジスタ MRをゼロにセッ トする。
[0099] 次に、全 PEが BOを利用し M隣接する左の PEへ Lの内容を転送すると共に、 Lに右
M隣接 PEから転送されてきたデータを格納する。
[0100] また通常これらの動作は、単純のため 1ステップで完了できる。
[0101] 一方、制御プロセッサ 110は、全 PEの MRがゼロになるまで、サイクル毎に同じ命 令コード「MVLR」を PEに送り続ける。
[0102] 次に、図 12及び図 13のフローチャートを参照して本発明の第 2の発明の実施の形 態の全体の動作について詳細に説明する。
[0103] 図 12は、「MVSET」命令コードが制御プロセッサ 110から送られた場合の各 PEで 実行される動作を説明するためのフローチャートである。
[0104] Dを転送バッファ Lにそれぞれセットする(ステップ 1202)。
[0105] 全 PEのマスクレジスタ MRに 1をセットする(ステップ 1201)。
[0106] Kに PEブロック内で左カゝら数えた場合の自 PE番号を加算した結果を転送結果バッ ファ Tに格納する(ステップ 1200)。
[0107] ステップ 1200〜1202の動作は単純であるため、通常 1ステップで行うことができる
[0108] 図 13は、「MVLR」命令コードに係わる、制御プロセッサ 110および各 PEで実施さ れる動作を説明するためのフローチャートである。
[0109] まず、制御プロセッサ 110力 MRが 1である PEが存在するか否かを調べ(1301)、 そのような PEが存在する場合に PEアレイ 100へ命令コード「MVLR」を送る(ステツ プ 1300)。
[0110] PEアレイ側では、 MRが 1の PE上において、転送結果バッファ Tが Mより小さいか 否かを判定する (ステップ 1302)。
[0111] 転送結果バッファ Tが Mより小さいければ、 PEブロック内で左力 数えた場合の PE 番号が Tの PE上の Lをセレクタ LSで選び、転送結果バッファ Tに格納する(ステップ
1303)。
[0112] MRを 0にセットし (ステップ 1304)、その後、結合線 BOを用いて、 L内データを左方 向で Mだけ離れた PEの転送バッファ Lに転送する(ステップ 1305)。
[0113] Tが M以上の場合は、転送結果バッファ Tを T—Mに更新する (ステップ 1306)。
[0114] また、ステップ 1302〜1306の動作は単純であるため、通常 1ステップで行うことが できる。
[0115] 次に、本発明の第 2の実施の形態の効果について説明する。
[0116] 本実施の形態では、 PE同士を距離 Mで結合しているため、 PE数が Nにおいて、 全 PEから送出された N個の転送データ Dは、 1 + (N÷M)のステップ数をかけて全 P Eブロックを通過できる。
[0117] また、本実施の形態では、さらに、各 PEが、 PEブロック内の M個の PEが有する転 送バッファ Lの内容の中から一つを選ぶためのセレクタ LSおよび RSを、どのタイミン グで利用すべきかを指定するカウンターとしての役割も果たす転送結果バッファ Tを 備えているため、 BOを使って各 PEブロックを右力 左へと通過していく転送データ D 群の中から、所定のステップにおいて、タイミングで効率よく必要なものを選択し、自 PEの Tに取り込むことができる。
[0118] 本実施の形態では、マスクレジスタ MRを利用して全 PEが転送データを得た時点 で処理を停止するようにしているため、さらに多くの場合では、 1 + (N÷M)よりも少 な!、ステップ数で全動作を終えることができる。
[0119] 本発明の第 2の実施の形態は、前記第 1の実施の形態と比べると、 1行分の N個の 画素を PE間で再配置するのに要するステップ数は 2倍程度に増える力 構成要素が より少ないため、ハードウェア規模の増加がより少ない、という効果がある。
実施例
[0120] 次に、具体的な実施例に即して説明する。図 6は、上記した本発明の動作を具体 的に説明するための図である。
[0121] 図 6 (a)では、各列で、 1つの PE上での設定を表現し、 Nを 16、 Mを 4としている。ま た、簡単のため各 PEは自 PE番号を送出データ D、任意の 8〜7の値を、転送元 P Eへの距離値 Kとして設定した場合に、 MVSET命令を発行した直後での、図 4のフ ローチャート通りに、 κやブロック内での右からおよび左からの PE番号を用いて F、 T 、 L、 R、 MRの値を設定した結果を示している。
[0122] ここで、図 6 (a)の T欄が、同じ列に属する Kと各列の網目欄の内容を、 Kが負の場 合は減算、正の場合は加算することにより求めていることがわかる。例えば 1列目の T = 6は、 K= 3とブロック内右からの PE # = 3の減算で求められ、 3列目の Τ=4 は、 Κ= 2とブロック内左からの ΡΕ # = 2の加算で求められている。
[0123] 図 6 (b)乃至図 6 (d)は、 MVLR命令の 1回〜 3回目の繰り返しを行った後の状態(
但し Lと Rは更新前の値を表示)を、図 6 (a)と対応した表形式でそれぞれ示して!/、る
[0124] 図 6 (b)乃至図 6 (d)では、図 5のフローチャートに従!、、 Tの絶対値が Mを下回つ たことにより、転送バッファ Lまたは Rの値力 転送結果バッファ Tへ格納された PEに ついては、当該 T欄および MR欄に網目を施して表示している。
[0125] 図 6力ら、 Kで指定された距離に位置する PE上の Dの値力 図 5のフローチャート に示した動作を 3回( = 1 + 16Z (4 X 2) )繰り返した後に、転送結果バッファ Tに格 納されて ヽることがわかる(図 6 (d)の T欄参照)。
[0126] 図 6 (e)は、図 6 (b)乃至図 6 (d)の間に行われた PE間データ移動の様子 (距離と方 向)を矢線にて表現したものである。
[0127] 本発明によれば、高速に PE間でデータを再配置することが可能な一次元プロセッ サアレイの提供により、処理負荷を PE間に分散させ一次元プロセッサアレイの性能 を向上する用途に適用できる。また処理負荷の分散のみでなぐ一次元プロセッサァ レイの各 PEにマッピングされた画像の拡大 '縮小'変形と!/、つた用途にも適用できる 。以上、本発明を上記実施例に即して説明したが、本発明は上記実施例の構成にの み制限されるものでなぐ本発明の範囲内で当業者であればなし得るであろう各種変 形、修正を含むことは勿論である。