(57)【要約】【課題】実効効率の高い並列計算装置を提供する。【解決手段】並列計算装置は、並列して演算処理を行う複数の演算プロセッサー（ＰＥ）２と、ＰＥ２のそれぞれに制御命令を供給する命令実行制御プロセッサー（ＰＥ−Ｉ）３とを備える。ＰＥ２において記憶部１１Ａは、複数のデータ又は複数の演算結果を保持する。サブプロセッサーＳＰＥ２Ａにおける演算部ＡＬＵｌ２Ａは、記憶部１１Ａから読み出したデータに演算処理を施し、その結果を記憶部ｌｌＡに供給する。サブプロセッサーＳＰＥ２Ａは、複数の該サブプロセッサーＳＰＥ２Ａのうち少なくとも２つのサブプロセッサーが同じ構造を有するサブ演算プロセッサーグループＳＰＥ２Ｇを形成する。ＰＥ−Ｉ３における交換部３１は、サブ演算プロセッサーグループＳＰＥ２Ｇに含まれるサブプロセッサーＳＰＥ２Ａ〜２Ｃに供給する制御信号を交換して供給する。【選択図】図２
2011008416.tif 000002
【特許請求の範囲】
【請求項１】
並列して演算処理を行う複数の演算プロセッサーと、
前記演算プロセッサーのそれぞれに制御命令を供給する命令実行制御部と、
を備え、
前記演算プロセッサーが、
複数のデータ又は複数の演算結果を保持する記憶部と、
前記記憶部から読み出したデータに演算処理を施し、その結果を前記記憶部に供給する演算部と、
を備えるサブプロセッサーであって、
複数の該サブプロセッサーのうち少なくとも２つのサブプロセッサーが同じ構造を有する同一構造プロセッサー群を備え、
前記命令実行制御部は、
前記同一構造サブプロセッサー群に含まれるサブプロセッサーに供給する制御信号を交換して供給する交換部
を備えることを特徴とする並列計算装置。
【請求項２】
前記サブプロセッサーは、
前記演算部の一方の入力に接続され、書き込まれる情報を記憶するレジスタ部
を備え、
前記レジスタ部は、
通常時は前記演算部による演算結果を記憶し、記憶した演算結果を出力し、
前記同一構造プロセッサー群に含まれるサブプロセッサーは、
自サブプロセッサー以外の他のサブプロセッサーが有する前記レジスタ部を参照するレジスタ参照部
を備え、
前記命令実行制御部は、
前記同一構造プロセッサー群のサブプロセッサーに供給する制御信号を交換した場合には、交換された交換制御信号が供給されるサブプロセッサーが参照する前記レジスタ部を交換前の前記制御信号が示すサブプロセッサーと一致させるように前記レジスタ参照部を切り換える
ことを特徴とする請求項１に記載の並列計算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列計算装置に関する。
【背景技術】
【０００２】
大容量の演算処理を行う電子計算装置には、画像処理用途に用いられるものがある。そのような電子計算装置が、リアルタイムに演算処理を行うシステムを例に示す。
自動車に搭載されたビデオカメラによって得られる映像に基づいて画像処理を行って、検出された結果をドライバーに示すことにより安全運転を補助するシステムがある。このようなシステムに用いられる電子計算装置（画像処理プロセッサー）は、ビデオカメラと一緒に自動車に搭載され、ビデオカメラからの映像（例えば640画素×480画素、10フレーム/秒）を分析する。例えば、歩行者検出をするような用途の分析に用いられる画像処理プロセッサーには、100GOPS（Giga (109) operations per second）以上の演算能力が必要と言われている。歩行者の検出精度を高めたり、或いは遠くの歩行者を検出したりするには、ビデオカメラが出力する映像信号から示される細部の状況を検出して、判定する必要がある。細部の状況を判定できる解像度を基準にすると、ビデオカメラの解像度を高め、映像信号を構成する画素数を増やす必要がある。それに伴って画像分析に必要な演算量は扱う画素数にほぼ比例して増大する。そのため、より高速な画像処理プロセッサーが必要になる。
また、安全性を高めるには歩行者をより短時間で検出しなければならず、それには検出周期を短くし、１秒当たりに処理するフレーム数を増やす必要がある。フレーム数を増やすと、画像分析に必要な演算量は扱うフレーム数に比例して増大するので、画像処理プロセッサーの更なる高速化が要求されている。
【０００３】
一方で、車載環境では供給できる電力に限りがあるので、低消費電力（数ワット以下）で動作することが必須であり、消費電力の増大を無視してプロセッサーを高速化することはできない。
近年、パーソナルコンピュータ（PC）などに使われる、汎用プロセッサー（汎用CPU）の性能が飛躍的に向上した（10Gflops程度）。それでも上記用途に必要とされる性能と比較すると、性能不足であり、かつ消費電力が数10Ｗ（ワット）にもなるので車載用途には使えない。
PC用の高性能画像処理専用のプロセッサーとして、例えば米国nVIDIA社からGPGPU（General Purpose computing on Graphics Processing Unit）と呼ばれる半導体装置が市販されている。この半導体装置に搭載されるプロセッサーの公称演算性能は数100Gflosであり十分と推定されるが、消費電力が多大（数10Ｗ（ワット））であり、また画像処理専用のプロセッサーであるが映像データを生成する用途向きであり、歩行者検出のような用途には不向きである。
【０００４】
消費電力が数ワットと少ないプロセッサーとしては、例えば、株式会社ルネサステクノロジ社の組み込み用プロセッサーＳＨ４シリーズなどがあるが、演算性能が2Gflops未満と低過ぎる。
これらの状況から、低消費電力で非常に高い演算処理性能を達成する計算機アーキテクチャを有する画像処理プロセッサーが開発されている。その一例として、車載用画像処理を目的とする画像処理プロセッサーがある。その画像処理プロセッサーは、動作周波数を低く抑えた消費電力が非常に小さい要素プロセッサーエレメント（要素PE）を、１個のLSIに多数個集積して並列処理する構成となっている。例えば、日本電気株式会社が開発したIMAPCARなどである（例えば、非特許文献１）。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】岡崎、昭倫、古賀、肥田野、「車載組込み用画像認識プロセッサIMAPCAR」、NEC技報 Vol. 60 No. 2/2007 p17 - 20,2007．
【非特許文献２】Kyo, S.; Okazaki, S.; Arai, T., "An Integrated Memory Array Processor Architecture for Embedded Image Recognition Systems"， Computer Architecture, 2005. ISCA apos;05. Proceedings. 32nd International Symposium on Volume , Issue , 4-8 June 2005 p134 - 145,2005．
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、一般的に、並列処理プロセッサーを実際に動作させた時に得られる実効性能は、そこに内蔵されている演算器（ＡＬＵ）の総数と、それらの動作周波数との掛け算で得られる公称値に比べてかなり低い。実効性能が低下する主な原因は、演算器が必要とするデータを適当なタイミングで供給できなかったり、或いは演算結果を直ぐに格納できなかったりして演算器に遊びが生じるからである。並列処理プロセッサーを実際に動作させたときに得られる実効性能を高めるには途切れなく演算器へデータを供給し、同時に演算結果を迅速に適当な場所へ格納できるようにする構成が必要とされる。
【０００７】
多数の要素PEを並列動作させる方式にはSIMD（Single Instruction Multi Data）型、MIMD（Multi Instruction Multi Data）型及びVLIW（Very Long Instruction Word）型などのアーキテクチャがあるが、車載用画像処理用途では低コストと高いパフォーマンス性を併せ持つ必要があることから、SIMD型にVLIW型を組み合わせた前述のIMAPCARの方式が優れている。
SIMD型画像処理プロセッサーの構成例を図１２に示す。SIMD型並列計算装置では、同じ命令で全ての要素PEが同時に動作するという構造上、各要素PEが一斉にデータ読み込んだり、一斉にデ−タを出力したりする。例えば、１つのＬＳＩの中に１２８個の要素PEが在り、これらが100MHz（メガヘルツ）のクロックで動作して一斉に８ビットのデータを1つ要求したとすると、瞬間的に必要なデータ転送速度は、100MHz×1B×128 = 12.8GB（ギガバイト）/秒である。これは実現困難なデータ転送速度ではないが、外部回路も含めてコスト上昇と消費電力の増大を招いてしまう。そこで、図の構成では要素PE毎にローカルメモリを設け、それらと要素PEとの間を専用バスで接続している。このような構成にすることで、各要素PEとローカルメモリ間で必要なデータ転送速度は最大100MB（メガバイト）/秒になる。
【０００８】
一方、処理すべきデータは先ずLSI外部の素子から供給され、処理結果はLSI外部へと取り出されなければならない。先に上げた例（640画素×480画素、10フレーム/秒）で入力画像が白黒で８bit/画素であるとすると、入力データのデータ転送速度は  640×480×10/s×1B = 3.1MB/秒であり、入力データ線を８本使えば3.1MHzのクロックで入力できる。この程度のデータ入力速度は容易に達成できる。また、一般的に画像処理では、出力データのデータ量は入力データと同程度なので、これも容易に出力できる。
【０００９】
また、非特許文献１の技術によれば、IMAPCARの要素PEは、4つのサブプロセッサー（以後ＳＰＥ）を持つVLIW型である（図１３参照）。4つのサブＰＥは機能分化している。すなわち、ローカルメモリとのデータ入出力又は加算を担当するサブＰＥ（図中MEM/Add）、論理演算を担当するサブＰＥ（同Logic）、算術論理演算を担当するサブＰＥ（同ALU）、及び乗算を担当するサブＰＥ（同Multiplier）である。４つのサブＰＥに共通に２８個のジェネラルレジスタ（ＧＲ）を備える。この構成では次に示す３つの問題点がある。
一つ目の問題は、ローカルメモリとのデータ入出力が１つのサブＰＥでしか行えないので、メモリアクセスが集中するとデータ入出力が間に合わなくなったり（メモリデータバスのバンド幅の不足）、逆にメモリアクセスや加算が殆ど無い時は、このサブＰＥが遊んでしまったりする点である。
二つ目の問題は、１つのサブＰＥを乗算に固定しているが、画像処理において乗算を行う頻度はそれほど多くなく、このサブＰＥ（同Multiplier）が遊んでしまう可能性が高いことである。これらの問題により、常に4つのサブＰＥをアクティブ（遊びが無い状態）に保ち続けることは難しい。
三つ目の問題は、２８個のＧＲにある。
非特許文献２における  5.3節によれば、サブＰＥで実行される命令のオペランドは、ソース２、ディスティネーション１の３オペランドである。ＧＲは２８個在るのでオペランド指定にそれぞれ５ビット必要になり、合計では１５ビットになる。したがって、VLIW構成とするために４つのサブＰＥを合わせると、６０ビット必要であり、命令コードを格納するメモリの容量が大きくなって、コストが上昇する要因になってしまう。
【００１０】
発明は、上記問題を解決すべくなされたもので、その目的は、実効効率の高い並列計算装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記問題を解決するために、請求項１に記載した発明は、並列して演算処理を行う複数の演算プロセッサー（例えば、実施の形態における演算プロセッサーＰＥ２）と、前記演算プロセッサーのそれぞれに制御命令を供給する命令実行制御部（例えば、実施の形態における命令実行制御プロセッサーＰＥ−Ｉ３）と、を備え、前記演算プロセッサーが、複数のデータ又は複数の演算結果を保持する記憶部（例えば、実施の形態におけるローカルメモリ１１Ａ〜１１Ｄ）と、前記記憶部から読み出したデータに演算処理を施し、その結果を前記記憶部に供給する演算部（例えば、実施の形態におけるＡＬＵ１２Ａ〜１２Ｃ及び１２ＤＡ）と、を備えるサブプロセッサー（例えば、実施の形態におけるサブプロセッサー（ＳＰＥ）２Ａ〜２Ｄ）であって、複数の該サブプロセッサーのうち少なくとも２つのサブプロセッサーが同じ構造を有する同一構造プロセッサー群（例えば、実施の形態におけるサブプロセッサーグループＳＰＥ２Ｇ）を備え、前記命令実行制御部は、前記同一構造サブプロセッサー群に含まれるサブプロセッサーに供給する制御信号を交換して供給する交換部（例えば、実施の形態における交換部３３Ａ〜３３Ｃ）を備えることを特徴とする並列計算装置。
【００１２】
請求項２に記載した発明は、前記サブプロセッサーは、前記演算部の一方の入力に接続され、書き込まれる情報を記憶するレジスタ部（例えば、実施の形態におけるＡｃｃ１３Ａ〜１３Ｄ）を備え、前記レジスタ部は、通常時は前記演算部による演算結果を記憶し、記憶した演算結果を出力し、前記同一構造プロセッサー群に含まれるサブプロセッサーは、自サブプロセッサー以外の他のサブプロセッサーが有する前記レジスタ部を参照するレジスタ参照部（例えば、実施の形態におけるレジスタ参照部１５Ａ〜１５Ｃ）を備え、前記命令実行制御部は、前記同一構造プロセッサー群のサブプロセッサーに供給する制御信号を交換した場合には、交換された交換制御信号が供給されるサブプロセッサーが参照する前記レジスターを交換前の前記制御信号が示すサブプロセッサーと一致させるように前記レジスタ参照部を切り換えることを特徴とする請求項１に記載の並列計算装置。
【発明の効果】
【００１３】
請求項１から請求項２に記載した発明によれば、並列計算装置は、並列して演算処理を行う複数の演算プロセッサーを備える。演算プロセッサーでは、命令実行制御部がそれぞれに制御命令を供給する。サブプロセッサーは、記憶部が複数のデータ又は複数の演算結果を保持する。演算部は、記憶部から読み出したデータに演算処理を施し、その結果を記憶部に供給する。
また、複数のサブプロセッサーのうち少なくとも２つのサブプロセッサーは同じ構造を有する。それらの同じ構造を有するサブプロセッサーは、同一構造プロセッサー群を形成する。また、命令実行制御部は、交換部が同一構造サブプロセッサー群に含まれるサブプロセッサーに供給する制御信号を交換して供給する。
これにより、記憶部に記憶されたデータを交換したり、参照するデータを切り換えて同様の処理をしたりするためにオペランドの異なる類似のプログラムを用意することもなく、データと処理の組み合わせを交換することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１実施形態を示す概略ブロック図である。
【図２】第１実施形態におけるＰＥ２の構成を示すブロック図である。
【図３】第１実施形態における画像データを入力する場合のタイミングチャートである。
【図４】第１実施形態におけるＰＥ２から外部へデータを出力する場合のタイミングチャートである。
【図５】第１実施形態における演算処理に入力される映像信号の例を示す図である。
【図６】第１実施形態におけるアドレスレジスタの構成を示す図である。
【図７】第１実施形態におけるローカルメモリへの画像データのマッピングを示す図である。
【図８】第１実施形態におけるＰＥ−Ｉ３を示す概略ブロック図である。
【図９】第１実施形態における交換部３１における命令選択状態を示す図である。
【図１０】第１実施形態におけるレジスタ参照部の動作を示す図である。
【図１１】第２実施形態におけるＰＥ２の構成を示すブロック図である。
【図１２】従来技術によるSIMD型画像処理プロセッサーの構成例のブロック図である。
【図１３】従来技術による要素演算プロセッサーの構成例を示す。
【発明を実施するための形態】
【００１５】
（第１実施形態）
図を参照し、並列計算装置の一実施形態について示す。
図１は、本発明の実施形態を示す概略ブロック図である。
この図に示される並列計算装置１は、複数の演算プロセッサー（「要素ＰＥ」ともいう）によって並列演算処理を行う。本実施形態の詳細な説明に先立ち、並列計算装置１の構成概要について説明する。
並列計算装置１における演算プロセッサー（ＰＥ）２−０〜２−１０６（まとめて「演算プロセッサー（ＰＥ）２」という。）、及びＰＥ２のそれぞれに制御命令を供給する命令実行制御プロセッサー（ＰＥ−Ｉ）３を含んで構成されている。
また、並列計算装置１は、入出力プロセッサー（ＩＯＰ）４、命令メモリ５、データ入力シフトレジスタ６、データ出力シフトレジスタ７及び外部メモリ９を備える。
【００１６】
演算プロセッサー２は、それぞれが４個のサブプロセッサー（ＳＰＥ）２Ａ〜２Ｄを有する。
ＳＰＥ２Ａ〜２Ｄは、それぞれが異なる命令を実行するVLIW（Very Long Instruction Word）型の構成を有している。それぞれのＰＥ２では、ＳＰＥ２Ａ〜２Ｄが組み合わされた同じ構成で形成される。また、全てのＰＥ２が有する１０７個のＳＰＥ２Ａは、SIMD（Single Instruction Multi Data)型で構成され、全てのＳＰＥ２Ａで同一の命令を実行する。また、ＳＰＥ２Ｂ、ＳＰＥ２Ｃ、ＳＰＥ２Ｄについても同様に、それぞれがSIMD型で構成される。
それらのＳＰＥ２Ａ〜２Ｄは、構成の異なるＳＰＥを組み合わせて構成される。演算プロセッサー２における演算処理を行うＳＰＥ２ＡからＳＰＥ２Ｃと、演算処理のほかに外部との入出力などの構成を備えるＳＰＥ２Ｄの組み合わせを例にして説明する。なお、同じ構成を有するＳＰＥ２ＡからＳＰＥ２Ｃの組み合わせをサブプロセッサーグループ２Ｇという。
【００１７】
ＰＥ−Ｉ３は、ＰＥ２の命令の実行順序を制御する。
ＰＥ−Ｉ３は、ＰＥ２のプログラムにおけるループ処理やサブルーチンコールなどの条件分岐を必要とする処理の制御を行う。ＰＥ-Ｉ３及びＰＥ２の命令をアセンブラプログラムで記述すると、ＳＰＥ２ＡからＳＰＥ２Ｄ及びＰＥ-Ｉ３の命令の５命令を並列に実行するVLIW型の命令として記述される。
【００１８】
ＩＯＰ４は、ＰＥ２外部との入出力を行う。
SIMD+VLIW型の並列計算装置１で実行されるプログラムコードは、計算開始前にＩＯＰ４によって外部メモリ９から予め読み込まれ、ＰＥ-Ｉ３に付属する命令メモリ５に書き込まれる。その後、ＩＯＰ４がＰＥ-Ｉ３に計算開始信号を送ると、ＰＥ-Ｉ３は命令メモリから自分自身で実行する命令と、ＳＰＥ２ＡからＳＰＥ２Ｄで実行すべき４個の命令とを読み出して演算を開始する。演算対象のデータはＩＯＰ４によって外部から取り込まれ、データ入力シフトレジスタ６を介して、ＰＥ２−０からＰＥ２−１０６のプロセッサーに分割して転送される。また、演算結果は、データ出力シフトレジスタ７を介してＩＯＰ４によって各ＰＥ２から読み出され、外部メモリ９へ転送され、ＰＥ２の外部に出力される。
【００１９】
データ入力シフトレジスタ６及びデータ出力シフトレジスタ７は、並列計算装置１のＰＥ２で演算を行うデータの入力及び出力を行う。データ入力シフトレジスタ６は、ＩＯＰ４を介して入力されたデータをシフトレジスタの機能により、シリアルで順次入力されるデータに対応するＰＥ２が配置されている位置までシフトする。また、データ出力シフトレジスタ７は、各ＰＥ２でそれぞれで演算処理された結果を、ＰＥ２が配置されている位置からＩＯＰ４までシフトして、ＩＯＰ４を介して出力する。
このように、複数のＰＥ２は、並列して演算処理及び入出力処理を行うことができる。
【００２０】
図２は、本発明の並列計算装置１におけるＰＥ２の構成を示すブロック図である。
この図に示される並列計算装置１は、ＰＥ２−ｋと、ＰＥ２−ｋを挟んで配置されるＰＥ２−（ｋ−１）とＰＥ２−（ｋ＋１）、ＰＥ−Ｉ３、ＩＯＰ４、命令メモリ５、データ入力シフトレジスタ６、データ出力シフトレジスタ７が示される。図１と同じ構成には同じ符号を付す。
【００２１】
ＰＥ２−ｋは、隣接するＰＥ２−（ｋ−１）とＰＥ２−（ｋ＋１）と同じ構成を有することから、ＰＥ２−ｋ（以下、隣接関係を特に示さない限り「ＰＥ２」と示す。）を参照して構成を示す。
ＰＥ２は、４個のサブプロセッサー（ＳＰＥ）２Ａ〜２Ｄのほか、レジスター２Ｍを有する。また、ＳＰＥ２ＡからＳＰＥ２Ｃは、同じ構成を有し、サブプロセッサーグループＳＰＥ２Ｇを形成する。
【００２２】
レジスター２Ｍは、演算に必要なデータの一時記憶用の記憶領域である。レジスター２Ｍは、内部に１２個のレジスター（R4〜R15）を備える。レジスター２Ｍは、各ＳＰＥから参照され、また書き込みが行われる。
【００２３】
ＳＰＥ２Ａは、ローカルメモリー(ＬＭ)１１Ａ、ＡＬＵ１２Ａ、Ａｃｃ１３Ａ、セレクタ(Ｓｅｌ)１４Ａ及びレジスタ参照部（Ｓｅｌ）１５Ａを備える。同様に、ＳＰＥ２Ｂは、ローカルメモリー(ＬＭ)１１Ｂ、ＡＬＵ１２Ｂ、Ａｃｃ１３Ｂ、セレクタ(Ｓｅｌ)１４Ｂ及びレジスタ参照部（Ｓｅｌ）１５Ｂを備える。ＳＰＥ２Ｃは、ローカルメモリー(ＬＭ)１１Ｃ、ＡＬＵ１２Ｃ、Ａｃｃ１３Ｃ、セレクタ(Ｓｅｌ)１４Ｃ及びレジスタ参照部（Ｓｅｌ）１５Ｃを備える。
【００２４】
まず、ＳＰＥ２Ａ〜２Ｃの構成についてＳＰＥ２Ａを代表して説明する。
ＳＰＥ２Ａにおいてローカルメモリー１１Ａは、例えば、512 × 8b（ビット）の構成を有するメモリであり、演算処理の入力データ及び演算結果を記録する。
Ａｃｃ１３Ａは、ＡＬＵ１２Ａの演算結果が書き込まれ、また、ＡＬＵ１２Ａ〜１２Ｄから参照されるアキュムレータである。
セレクタ１４Ａは、ＡＬＵ１２Ａへの入力を選択する。
ＡＬＵ１２Ａは、入力されるデータに基づいて所定の演算処理を行う。ＡＬＵ１２Ａの一方の入力は、Ａｃｃ１３Ａからのデータが供給される。ＡＬＵ１２Ａの他方の入力は、セレクター１４Ａにより選択されたデータが供給される。
セレクター１４Ａによって選択されるデータは、レジスタ２Ｍ、Ａｃｃ１３ＡとＡｃｃ１３ＢとＡｃｃ１３ＣとＡｃｃ１３Ｄ、ローカルメモリー１１Ａに記憶されたデータのいずれかである。
【００２５】
ＡＬＵ１２Ａによる演算結果は通常はＡｃｃ１３Ａに書き込まれるが、Ａｃｃ１３Ａのデータをレジスター２Ｍへ転送する命令を使って、レジスター２Ｍ内のレジスターR4〜R15のいずれかを選択して演算結果を書き込む。また、Ａｃｃ１３Ａのデータをメモリー１１Ａへ転送する命令を使って、メモリー１１Ａ内の記憶領域のいずれかを選択して書き込む。
レジスタ参照部１５Ａは、ＰＥ−Ｉ３からの制御信号により、セレクタ１４Ａに出力するデータを選択する。選択できるデータは、Ａｃｃ１３Ａ〜Ａｃｃ１３Ｃのデータである。セレクタ１４Ａにおける選択条件を変更することなく、レジスタ選択部１５Ａの選択を変更することによって、Ａｃｃ１３Ａ〜Ａｃｃ１３Ｃのデータを参照することが可能になる。
ＳＰＥ２Ｂ〜ＳＰＥ２Ｃは、ＳＰＥ２Ａの構成と対応する構成を有する。
【００２６】
続いて、ＳＰＥ２Ａ〜ＳＰＥ２Ｃと異なる構成を有するＳＰＥ２Ｄについて示す。
ＳＰＥ２Ｄは、ローカルメモリー１１Ｄ、演算部１２、Ａｃｃ１３Ｄ及びセレクタ１４Ｄ、データ入力バッファ（SIN_reg）１６、データ出力バッファ（SOUT_reg）１７、ＰＥ出力レジスタＬ（PE-out-L）１８、ＰＥ出力レジスタＲ（PE-out-R）１９を備える。このように、ＳＰＥ２Ｄは、他のＳＰＥ２Ａ〜ＳＰＥ２Ｃと異なる独自の構成を有しており、レジスタ参照部を備えていないことも、前述のＳＰＥ２Ａ〜ＳＰＥ２Ｃとの相違点になる。
【００２７】
ＳＰＥ２Ｄが有する構成を、ＳＰＥ２Ａと対比して示す。
ＳＰＥ２Ｄにおけるローカルメモリー１１Ｄは、ローカルメモリー１１Ａに相当する。
演算部１２Ｄは、ＡＬＵ１２ＤＡ、乗算器１２ＤＭ、セレクタ１２ＤＳを備える。ＡＬＵ１２ＤＡは、ＡＬＵ１２Ａに相当し、出力はセレクタ１２ＤＳを介してＡＣＣ１３Ｄに入力される。乗算器１２ＤＭは、ＡＬＵ１２ＤＡと同じ入力信号が設定され、入力されるデータの乗算を行う。セレクタ１２ＤＳは、ＡＬＵ１２ＤＡ又は乗算器１２ＤＭの演算結果を選択的にＡｃｃ１３Ｄに出力する。Ａｃｃ１３Ｄは、Ａｃｃ１３Ａに相当する。
セレクタ１４Ｄは、セレクタ１４Ａと同じレジスタ２Ｍ、Ａｃｃ１３ＡとＡｃｃ１３ＢとＡｃｃ１３ＣとＡｃｃ１３Ｄ、ローカルメモリー１１Ｄに記憶されたデータのほかに、データ入力バッファ１６を介して入力されるデータ入力シフトレジスタ６からの入力データ、隣接するＰＥ２−（ｋ−１）やＰＥ２−（ｋ＋１）からの入力データがある。
【００２８】
データ入力バッファ１６は、ＰＥ２に入力されたデータを各ＰＥ２にセットするデータ入力シフトレジスタ６からの入力を一時的に保持する。データ出力バッファ１７は、演算された結果をＰＥ２から出力する際に、データ出力シフトレジスタ７に出力するデータを一時的に記憶し、データ出力シフトレジスタ７によって読み出しが行われる。
ＰＥ出力レジスタＬ１８とＰＥ出力レジスタＲ１９は、隣接するＰＥ２に出力するデータを一時的に記憶する。
ＰＥ出力レジスタＬ１８やＰＥ出力レジスタＲ１９に記憶されたデータは、隣接するＰＥ２におけるＳＰＥ２Ｄから参照される。
ＰＥ出力レジスタＬ１８は、図の左隣に隣接するＰＥ２−（ｋ−１）にデータを出力する。ＰＥ出力レジスタＲ１９は、図の右隣に隣接するＰＥ２−（ｋ＋１）にデータを出力する。
このように、ＳＰＥ２Ｄは、乗算を含んだ演算処理とＰＥ２外部とのデータ交換処理を選択的に処理できる。
【００２９】
以上に示したＳＰＥ２Ａ〜２Ｄにより、ローカルメモリ１１Ａ〜１１Ｄは、各ＳＰＥに分割して配置される。この図に示した例では、その容量は512 x 8b（ビット）の単位で４分割されているものとする。ローカルメモリ１１Ａ〜１１Ｄの合計容量は、分割せずにっまとめて配置される2k x 8b（ビット）と同じ記憶容量であるが、分割して配置したことにより、それぞれのＳＰＥで同時にアクセスできるようになり、ＰＥ２におけるローカルメモリに対するデータ転送能力は、４倍になる。この構成により、全てのＳＰＥが待ち時間なしでメモリアクセスできるようになり、さらに、マルチポートメモリを使う場合に生じるアクセスの衝突問題を回避できる。ただし、これらの利点と引き換えに、2k x 8b（ビット）のメモリを１つ配置する場合よりも、ローカルメモリ１１Ａ〜１１Ｄの配置に必要な面積は若干増大する。
【００３０】
ローカルメモリ１１Ａ〜１１Ｄは、それぞれ内部にアドレスレジスタを備えている。ＳＰＥ２Ａ〜２Ｄにおいて、ローカルメモリ１１Ａ〜１１Ｄをアクセスする場合は、先ずアドレス情報を図示されないアドレスレジスタにセットし、次にメモリへの書き込みか、或いはメモリからの読み出しを行う。ローカルメモリ１１Ａ〜１１Ｄにアクセスする度にアドレスレジスタを設定し直すのでは効率が悪くなる。そこで、通常のメモリアクセス命令とは別に、アクセス後に自動的にアドレスレジスタに設定されたアドレスが１増える命令と、１減る命令とを用意する。このようなアドレスレジスタを用いることにより、メモリアクセス時に必要な命令数を減らすことができ、画像処理のようにメモリアクセスが多くなる処理では、メモリアクセスの効率を改善することができる。
【００３１】
また、全てのＳＰＥには、ＡＬＵ１２Ａ〜１２ＤＡをそれぞれ備えているので、どのＳＰＥにおいても算術論理演算処理ができる。更に、ＳＰＥ２Ｄには乗算器（Mul）１２ＤＭを備えており、乗算処理が可能である。この構成により、各ＳＰＥはそれぞれ算術論理演算処理を並列に行えることから、コンパイラによる命令割付の自由度が大幅に向上する。
【００３２】
また、各ＳＰＥ２は、ジェネラルレジスタ方式ではなく、アキュムレータ方式である。即ち、それぞれのＡＬＵ１２Ａ〜ＡＬＵ１２ＤＡの一方の入力は、アキュムレータ（Acc）に固定され、また、ＡＬＵ１２Ａ〜ＡＬＵ１２ＤＡの出力先はそれぞれのＡｃｃ１３Ａ〜１３Ｄである。ＡＬＵ１２Ａ〜ＡＬＵ１２ＤＡの他方の入力だけが、命令に応じてデータの参照先を指定できる。
ＰＥ２は、演算に必要なデータの一時記憶用に用いられるレジスタ２Ｍを備える。通常は、レジスタ２ＭからＡＬＵ１２Ａ〜１２ＤＡへデータが供給される。このアーキテクチャにより、このレジスタを参照する命令に必要なオペランドが４ビットと少なくでき、４つのＳＰＥ２Ａ〜２Ｄを独立して制御する場合でも、合計１６ビットで構成できるので非常にコンパクトになる。
【００３３】
続いて各ＳＰＥにおけるアキュムレータ（Ａｃｃ）選択制御処理について示す。
Ａｃｃ１３Ａ〜Ａｃｃ１３Ｄは、各ＡＬＵからの参照が可能な４つのレジスタ（レジスタR0〜R3）である。Ａｃｃ１３Ａ〜Ａｃｃ１３Ｄは、それぞれのＳＰＥに分散して配置されるが、他のＳＰＥから参照して読み出すことができる。
ただし、ＳＰＥ２Ａ〜２Ｃにおいて、Ａｃｃ１３Ａ〜Ａｃｃ１３ＣとＡｃｃ１３Ｄとは、参照方法が異なる。
Ａｃｃ１３Ａ〜Ａｃｃ１３Ｃは、レジスタ参照部１５Ａ〜１５Ｃによって選択され、次にＡｃｃ１３Ｄやレジスタ２Ｍなどと共にセレクタ１４Ａ〜１４Ｄによって選択されてＡＬＵ１２Ａ〜ＡＬＵ１２ＤＡの片側に入力される。
Ａｃｃ１３Ｄは、レジスタ２Ｍなどと共にセレクタ１４Ａ〜１４Ｄによって選択されてＡＬＵ１２Ａ〜１２ＤＡの片側に入力される点が異なる。
【００３４】
セレクタ１４Ａ〜１４Ｄの選択により、各ＡＬＵから参照されるレジスタR3は、常にＡｃｃ１３Ｄに対応しているが、レジスタR0〜R2は、レジスタ参照部１５Ａ〜１５Ｃが設定される状態により参照先を変更できるようになる。そのため、レジスタR0〜R2は、レジスタ参照部１５Ａ〜１５Ｃの設定によってＡｃｃ１３Ａ〜Ａｃｃ１３Ｃのいずれかに変化する。
レジスタR4〜R15へのデータの書き込みは、Ａｃｃ１３Ａ〜Ａｃｃ１３Ｄからのデータ転送命令によって行われる。同一レジスタへの同時書き込みは、コンパイラで容易に回避できる。また、レジスタR4〜R15へのデータの書き込みは上記の命令でしか実行できないので、同一レジスタからの読み出しと書き込みが同時に起こる場合でも、データのバイパスを設けるなどでタイミング問題を容易に回避できる。
なお、演算部１２Ｄ並びに乗算器１２ＤＭへの入力は、前述のＡＬＵ１２ＤＡの説明を参照する。
【００３５】
図を参照し、画像データを入出力する処理について示す。
図３は、画像データの入力処理のタイミングチャートである。
ＳＰＥ２Ｄには、ＰＥ２の外部とデータを入出力するための構成を有している。
入力画像データは、ＩＯＰ４によって取り込まれ、データ入力シフトレジスタ（Serial-in）６にシフトされながら設定される。ＰＥ２がリセット（初期化）された直後（時刻ｔｉ０）はデータ入力シフトレジスタ６が空であることを示すフラグSin-emtyが１に、また、データ入力シフトレジスタ６にデータが準備できたことを示すフラグSin-rdyが０になっている。計算を開始するとＩＯＰ４はデータ入力シフトレジスタ６へデータを書き込む前にSin-emtyが1になるのを待つ（時刻ｔｉ１）が、既にSin-emtyが１なので直ぐにデータ転送を始める（時刻ｔｉ２）。
【００３６】
一方、ＰＥ−Ｉ３はSin-rdyが１になるのを待ってウェイト状態になる（時刻ｔｉ２）。ＰＥ−Ｉ３がウェイト状態になると同時に、全てのＳＰＥがウェイト状態に入る。ＩＯＰ４はデータ入力シフトレジスタ６に１ライン分のデータ転送を終了するとSin-rdyを１にする（時刻ｔｉ４）。するとＰＥ−Ｉ３はウェイト状態から抜け出して（時刻ｔｉ５）、１クロックでデータ入力シフトレジスタ６からデータ入力レジスタ（SIN-reg）１６へデータを転送すると同時にSin-rdyをクリアし、更にSin-emtyを１にしてＩＯＰ４にデータ入力シフトレジスタ６が空になったことを知らせる（時刻ｔｉ８）。データ入力バッファー（SIN-reg）１６にデータが用意できると、それをＳＰＥ２Ｄの処理により読み出されて、ローカルメモリに蓄積したり、或いは即座に計算処理に使ったりできる。
【００３７】
一方、ＩＯＰ４は１ライン分のデータを転送した後で他にするべき処理が無くなるとウェイト状態に入って、次のラインのデータを転送するためにSin-emtyが１になるのを待っつ（時刻ｔｉ７）。Sin-emtyが１になるとＩＯＰ４は再びデータ入力シフトレジスタ６へのデータ転送を開始する。
【００３８】
Sin-emtyは、ＩＯＰ４が適当なタイミングでクリアする（時刻ｔｉ３）。この手順により、ＩＯＰ４からのデータ書き込みとＰＥ２での計算処理とが同期し、更にＰＥ２での計算処理と画像データの入力作業とを並行させて実行できる。
【００３９】
図４は、ＩＯＰ４を介して外部へデータを出力する処理のタイミングチャートである。
ＰＥ２がリセットされた直後は、データ出力バッファ（SOUT-reg）１７が空であることを示すフラグSOUT-emtyが1に、また SOUT-regにデータが準備できたことを示すフラグSOUT-rdyが0になっている（時刻ｔｏ０）。計算を開始すると、ＩＯＰ４はSOUT-rdyが1になるのを待ってウェイト状態になる（時刻ｔｏ１）。
一方、ＰＥ−Ｉ３はSOUT-emtyが1になるのを待つウェイト状態になろうとするが、既にSOUT-emtyが1なのでウェイトには入らない（時刻ｔｏ１）。そして、ＰＥ−Ｉ３がSOUT-emtyをクリアすると同時に、ＳＰＥ２ＤがSOUT-regに出力データを蓄積し始める（時刻ｔｏ３）。
出力すべきデータの準備できると、ＰＥ−Ｉ３はSOUT-rdyを１にする（時刻ｔｏ４）。するとＩＯＰ４はウェイト状態から抜け出して（時刻ｔｏ７）、１クロックでSOUT-regからSerial-outへデータを転送すると同時にSOUT-rdyをクリアし、更にSOUT-emtyを1にしてＰＥ−Ｉ３にSOUT-regが空になったことを通知する（時刻ｔｏ８）。その後、ＩＯＰ４はSerial-outをシフトしながらデータを読み出して、LSIの外部へと転送する（時刻ｔｏ８）。この手順により、ＰＥ２でのデータ処理と、ＩＯＰ４によるLSI外部へのデータ出力とを同期させ、更にこれらの処理を並行して実行できる。
【００４０】
この他に、隣り合ったＰＥ２間でデータを転送するために、ＰＥ出力レジスタＬレジスタ１８とＰＥ出力レジスタＲレジスタ１９が在る。左側即ちＰＥ２の番号が小さいＰＥ２へ渡したいデータは、ＳＰＥ２ＤがそれをＰＥ出力レジスタＬレジスタ１８に書くと、次の命令以降で左隣のＳＰＥ２Ｄが読み出せる。同様に、右側即ちＰＥ２の番号が大きいＰＥ２へ渡したいデータは、ＳＰＥ２ＤがそれをＰＥ出力レジスタＲレジスタ１９に書き込むと、次の命令以降で右隣のＳＰＥ２Ｄが読み出せる。
以上述べてきたように、図２に示す構成を用いることにより、ローカルメモリへのアクセスにおけるバンド幅の不足や各ＳＰＥを命令実行状態に保ち続けることに効果がある。
【００４１】
さらに、画像処理用途に適用する際に、生じるローカルメモリへのアクセスにおけるバンド幅の不足の問題を解決する技術について説明する。
図５は、本発明の実施形態における演算処理に入力される映像信号の例を示す。
入力される映像信号は、図に示されるように640画素×480画素を２次元に配列した画素で構成される画面によって示される白黒画像を表している。１画素は、８ビットで構成され、各画素の明るさに応じた階調が示される。
【００４２】
続いて、画像処理特有の処理についての問題と対策について説明する。
並列計算装置１には、映像信号がビデオカメラから１ライン分の６４０画素を単位として、ラインごとに４８０回に分けてデータが入力される。入力されたデータは、ＰＥ２−０からＰＥ２−１０６の１０７個のＰＥ２に分割して格納され、各ＰＥ２が分担して演算処理をする。
ところで、画像処理では、特定の画素を定め、その画素に対し、２次元平面で示す座標軸方向に隣接する上下左右方向の画素のデータを参照することが多い。
頻繁に参照される上下左右の画素のデータを効率よくアクセスできないと、処理が煩雑になり処理速度が低下する。
最初に、水平方向に並んだ左右の画素を効率よく扱うための方法を説明する。
各ＰＥ２は、入力されたデータの内、分割された６画素分のデータを担当する（107×6 = 642）。しかし、自ら担当する６画素しかローカルメモリに格納しないと、頻繁に両隣のＰＥ２との間でデータの受け渡しが発生して効率が悪くなる。そこで各ＰＥ２は、両隣が格納すべきデータを１画素分ずつ重複して格納することにする。各ローカルメモリは、１ライン当たり８画素を記憶することにする。
【００４３】
続いて、垂直方向に並んだ上下の画素を効率よく扱うための方法を説明する。上下方向の画素は、ライン単位で扱われることからライン間の参照として説明する。
各ＳＰＥに配置されるローカルメモリ１１Ａ〜１１Ｄの容量は512×8b（ビット）なので、それぞれのＳＰＥが備える１つのローカルメモリには、一度に６４ライン（= 512÷8（画素））分のデータを格納できる。ＰＥ２内にローカルメモリは、４個あるので、最大で２５６ライン分のデータを同時に格納できるが、１画面は４８０ラインなので１画面分のデータまでを格納することはできない。
画像処理では画像を狭い領域ごとに区切って演算対象にすることが多いため、入力されるデータを例えばＳＰＥ２Ａのローカルメモリ１１Ａだけに順に格納すると、演算する時にＳＰＥ２Ａのローカルメモリ１１Ａだけが頻繁に読み出され、メモリを分散配置して得られたデータ転送能力を生かせないことになる。
【００４４】
また、一度に６５ライン分以上のデータを格納しようとすると、初めの６４ライン分と次の６４ライン分のデータを別々のメモリに格納しなければならず、データを格納するためのプログラムだけでなく、そのデータを使うプログラムも、条件判断処理を行うため複雑になってしまう。
このように、単にローカルメモリを分割して配置するだけでは、メモリアクセスのバンド幅を広げることはできず、また６５ライン分以上のデータを格納して処理しようとすると、処理プログラムが複雑化するという新たな問題が生じてしまう。
【００４５】
ここで、ローカルメモリへアクセスするためのアドレスレジスタについて説明する。
図６は、アドレスレジスタの構成を示す図である。この図に示されるアドレスレジスタには、モード０〜モード２として選択できる３つのモードを設定できる。
モード０では、ベースポインタＢＰと、４つのポインタＡＰ０〜ＡＰ３によって参照するメモリアドレスを定める。メモリアクセス命令は、そのオペランドにポインタＡＰ０〜ＡＰ３を一つ指定できる。例えばポインタＡＰ０を指定するとポインタＡＰ０の下位３ビットがメモリアドレスのビット2-0になり、ビット4-3は０固定、そしてＢＰの値がビット8-5になる。
【００４６】
メモリアドレスを自動的に１増加させる命令を実行する場合は、ローカルメモリをアクセスした後にポインタＡＰ０が１増加する。ポインタＡＰ０の値が、７から８になると、下位３ビットが全て０になるので、結局最初のアドレスに戻ることになる。このモードは、画像処理において、１ラインごとに処理する場合に便利である。ラインを１だけ移動する場合は、ベースポインタＢＰの値を１だけ増減する。ベースポインタＢＰやポインタＡＰ０〜ＡＰ３を１だけ増減する命令が用意されている。このモードでは、例えばポインタＡＰ０はデータの読み出し番地を、ポインタＡＰ１は一時的にデータを書き込む格納番地をそれぞれ保持し、読み書きする命令でポインタＡＰ０とポインタＡＰ１とをオペランド指定して切り替えてそれぞれの番地を切り換えてアクセスできる。
【００４７】
モード１の動作も同様であるが、ポインタＡＰ０とＡＰ２の下位４ビットが割り当てられているので、データを２ラインずつアクセスする場合に有用である。
モード２ではポインタＡＰ０の値がそのまま９ビットのアドレスに変換できるので、５１２Ｂ（バイト）のメモリ空間をリニアにアクセスできる。
【００４８】
図７は、本実施形態によるローカルメモリへの画像データのマッピング例を示す。
６５ライン分以上のデータを格納する場合にも処理プログラムを同一にするために、図に示すように画像データを１ライン毎にＳＰＥ２Ａのローカルメモリ１１Ａ、ＳＰＥ２Ｂのローカルメモリ１１Ｂ、ＳＰＥ２Ｃのローカルメモリ１１Ｃと順に格納することにする。
【００４９】
最初に画像信号におけるライン０のデータをローカルメモリーに格納する場合の手順を示す。
【００５０】
ＩＯＰ４によって取り込まれた画像信号は、データ入力シフトレジスタ６によって、ＳＰＥ２Ｄにおけるデータ入力バッファ１６に設定される。設定された画像信号のデータをＳＰＥ２ＤにおけるＡＬＵ１２ＤＡがデータ入力バッファ１６から読み出すと、データはＡｃｃ１３Ｄに書き込まれ、レジスタR3として参照できるようになる。ＳＰＥ２ＡにおけるＡＬＵ１２Ａは、レジスタR3に書き込まれたデータを参照し、Ａｃｃ１３Ａへ転送した後、ローカルメモリ１１Ａに書き込む。
【００５１】
続いて、ＳＰＥ２Ａのローカルメモリ１１Ａにライン０のデータを書き込むプログラムを使って、次のライン１のデータをＳＰＥ２Ｂのローカルメモリ１１Ｂに書き込む手順を説明する。
図８は、本発明の実施形態におけるＰＥ−Ｉ３を示す概略ブロック図である。この図に示されるＰＥ−Ｉ３は、内部に交換部３１を備える。
ＰＥ−Ｉ３は、命令メモリ５に登録されたプログラムに記述された命令を分解し、ＳＰＥ２Ａ用、ＳＰＥ２Ｂ用、ＳＰＥ２Ｃ用の命令（OPコード）と、その命令の交換を行うローテーション命令を抽出する。ローテーション命令はＰＥ−Ｉ３で実行される。ＳＰＥ２Ａ用、ＳＰＥ２Ｂ用、ＳＰＥ２Ｃ用の命令（OPコード）を、それぞれｓｐｅ−ａ用コード、ｓｐｅ−ｂ用コード、ｓｐｅ−ｃ用コードと示し、ローテーション命令をＲＯＴ命令と示す。
ＰＥ―Ｉ３における交換部３１は、これらのOPコードを、必要に応じてローテーション（交換）する。
【００５２】
交換部３１は、命令セレクト部３２、命令選択部３３Ａ〜３３Ｃ、命令デコード部３４Ａ〜３４Ｃを備える。
交換部３１における命令セレクト部３２は、入力されるＲＯＴ命令に応じて、命令選択部３３Ａ〜３３Ｃの入力選択を制御する。命令セレクト部３２は、内部に２ビットのカウンタを備え、ＲＯＴ命令が実行されるとカウンタの値を１ずつ増加させる。命令セレクト部３２は、カウンタの値が２のときにＲＯＴ命令が実行されると値を０に戻し、０〜２の範囲で変化させる。命令セレクト部３２は、そのカウンタの値に応じて、命令選択部３３Ａ〜３３Ｃの入力を切り換えるセレクト信号を出力する。
命令選択部３３Ａ〜３３Ｃは、入力されるｓｐｅ−ａ用コード、ｓｐｅ−ｂ用コード、ｓｐｅ−ｃ用コードを命令セレクト部３２が出力するセレクト信号に応じて切り換える。
命令デコーダ部３４Ａ〜３４Ｃは、入力される命令コードに応じて各ＳＰＥ２Ａ〜２Ｃの制御信号を生成し出力する。
【００５３】
交換部３１において命令選択部３３Ａは、ｓｐｅ−ａ用コードがＩ０入力に、ｓｐｅ−ｂ用コードがＩ２入力に、ｓｐｅ−ｃ用コードがＩ１入力に入力される。命令選択部３３Ｂは、ｓｐｅ−ａ用コードがＩ１入力に、ｓｐｅ−ｂ用コードがＩ０入力に、ｓｐｅ−ｃ用コードがＩ２入力に入力される。命令選択部３３Ｃは、ｓｐｅ−ａ用コードがＩ２入力に、ｓｐｅ−ｂ用コードがＩ１入力に、ｓｐｅ−ｃ用コードがＩ０入力に入力される。
命令選択部３３Ａ〜３３Ｃは、入力されるセレクト信号の値０〜２に応じて、対応するＩ０入力、Ｉ１入力、Ｉ２入力の各入力端子に入力されるコードを出力する。
【００５４】
図を参照し、図８に示した交換部３１によって各ＳＰＥに供給される制御信号を交換する処理を説明する。
図９は、交換部３１における命令選択状態を示す図である。
命令セレクト部３２が出力するセレクト信号が０のとき、ＳＰＥ２Ａの制御信号にはｓｐｅ−ａ用コードが、ＳＰＥ２Ｂの制御信号にはｓｐｅ−ｂ用コードが、ＳＰＥ２Ｃの制御信号にはｓｐｅ−ｃ用コードが出力される。ＲＯＴ命令が実行され、セレクト信号が１になると、ＳＰＥ２Ａの制御信号にはｓｐｅ−ｃ用コードが、ＳＰＥ２Ｂの制御信号にはｓｐｅ−ａ用コードが、ＳＰＥ２Ｃの制御信号にはｓｐｅ−ｂ用コードが出力される。さらにＲＯＴ命令が実行され、セレクト信号が２になると、ＳＰＥ２Ａの制御信号にはｓｐｅ−ｂ用コードが、ＳＰＥ２Ｂの制御信号にはｓｐｅ−ｃ用コードが、ＳＰＥ２Ｃの制御信号にはｓｐｅ−ａ用コードが出力される。次にＲＯＴ命令が実行されるとセレクト信号の値は０に戻る。
【００５５】
命令セレクト部３２におけるセレクト信号が０の状態で、ＳＰＥ２Ａがｓｐｅ−ａ用コードにしたがってライン０の読み込みを行った後に、ＰＥ−Ｉ３でＲＯＴ命令を実行すると、セレクト信号が１になる。そのためｓｐｅ−ａ用として記述されたプログラムのOPコードであっても、ＳＰＥ２Ｂで実行されるようになる。つまり、ライン０を読み込んだプログラムと全く同じプログラムを実行してライン１のデータをＳＰＥ２Ｂのローカルメモリ１１Ｂに書き込むことができる。同様に、ライン１の読み込み終了後にＲＯＴ命令を実行すると、ライン２のデータがＳＰＥ２Ｃのローカルメモリ１１Ｃに書き込むことができる。
次に、ＲＯＴ命令を実行してデータを読み込むと、ＳＰＥ２Ａでライン０のデータがライン３のデータで上書きされることになる。それが不都合な場合は、ＰＥ−Ｉ３でＲＯＴ命令を行うのと同時にＳＰＥ２ＡでベースポインタＢＰ（図６）を１増やす命令を実行しておく。このようにすることで、ＲＯＴ命令を実行しながら単純にループするプログラムで、図７のようにデータを格納することができる。
【００５６】
なお、ＳＰＥ２ＤとＰＥ−Ｉ３の命令は、常にｓｐｅ−ｄ用コードとｐｅ−ｉ用コードであり変化しない。また、ＳＰＥ２Ａ〜ＳＰＥ２Ｃをローテート（交換）するためには、これらが全く同じ構成でなければならない。したがって、ＰＥ２の外部とのデータ入出力に必要な構成や、乗算器などは全てＳＰＥ２Ｄに集中して配置する。
【００５７】
次に、図７のように格納された画像データを使って、画像処理が効率的に行えることを説明する。例えば３画素×３画素の窓を有するデジタルフィルタを画像に適用する場合を示す。
最初の処理では、ライン０（上段）、ライン１（中段）、ライン２（下段）からそれぞれ３画素ずつのデータ（合計9画素）を読み出して処理する。ライン０のデータはＳＰＥ２Ａ、ライン１のデータはＳＰＥ２Ｂ、ライン２のデータはＳＰＥ２Ｃの各ローカルメモリ１１Ａ〜１１Ｃにそれぞれ格納されていると仮定する。
ＳＰＥ２Ａ〜２Ｃでは、各ラインのデータから３画素ずつ分散して読み出せる。つまり、拡大されたメモリバンド幅を有効に使うことができる。１ライン分の処理が終わって次のラインの処理に移ると、ライン１が上段、ライン２が中段、ライン３が下段になる。１ライン分の処理の最後で、ＲＯＴ命令を実行すれば、spe-a用コードがＳＰＥ２Ｂで、spe-ｂ用コードがＳＰＥ２Ｃで、spe-ｃ用コードがＳＰＥ２Ａでそれぞれ実行されるようになるので、順次切り換えられるラインへの移動が簡単に行える。
【００５８】
つまり、上段のデータにアクセスする命令はspe-a用のコードとして記述されているが、データが格納されているローカルメモリーは、ＳＰＥ２Ｂにおけるローカルメモリー１１Ｂである。spe-a用のコードが、ローカルメモリー１１Ｂが含まれるＳＰＥ２Ｂで実行されるので、結局ライン１のデータが上段のデータとして処理することになるからである。ただし、spe-ｃ用のコードについては注意が必要で、これはＳＰＥ２Ａで実行されるが、そのままではライン０をアクセスしてしまう。そこで、ＲＯＴ命令と同時にＳＰＥ２ＡにおいてベースポインタＢＰを１増加する命令を実行しておく。このように、ＲＯＴ命令とベースポインタＢＰを増加させる命令を加えて、単純にループするプログラムで、図７のように格納されたデータを使った画像処理ができる。
【００５９】
最後に、図を参照し、図２の３つのレジスタ参照部１５Ａ〜１５Ｃの機能について説明する。
図１０は、レジスタ参照部の動作を示す図である。
ＳＰＥをローテーションしてもプログラムが正しく動作するためには、spe-a用のコードが実行されているＳＰＥのＡｃｃが、他のＳＰＥからは、レジスタR0として読み出せることが必要になる。同様に、spe-ｂ用のコードが実行されているＳＰＥのＡｃｃがレジスタR1、spe-ｃ用のコードが実行されているＳＰＥのＡｃｃがレジスタR2として読み出せることが必要になる。
そこで、レジスタ参照部１５Ａ〜１５Ｃは、図に示すように、命令セレクト部３２が出力するセレクト信号の値に応じてＡｃｃ１３Ａ〜１３Ｃを選択してレジスタR0〜R2とする。
命令セレクト部３２が出力するセレクト信号が０のとき、レジスタR0にはＡｃｃ１３Ａが、レジスタR1にはＡｃｃ１３Ｂが、レジスタR2にはＡｃｃ１３Ｃが参照される。セレクト信号が１のとき、レジスタR0にはＡｃｃ１３Ｂが、レジスタR1にはＡｃｃ１３Ｃが、レジスタR2にはＡｃｃ１３Ａが参照される。セレクト信号が２のとき、レジスタR0にはＡｃｃ１３Ｃが、レジスタR1にはＡｃｃ１３Ａが、レジスタR2にはＡｃｃ１３Ｂが参照される。
【００６０】
（第２実施形態）
図を参照し、並列計算装置の一実施形態について示す。
図１１は、第２実施形態におけるＰＥ２の構成を示すブロック図である。図２と同じ構成には同じ符号を付す。
この図に示される並列計算装置１ａは、ＰＥ２ａ、ＰＥ−Ｉ３ａ、ＩＯＰ４、命令メモリ５、データ入力シフトレジスタ６、データ出力シフトレジスタ７が示される。図１と同じ構成には同じ符号を付す。また、ＰＥ２ａは、同じ構成を有する複数のＰＥ２ａ−０〜ＰＥ２ａ−１０６を代表する。また、ＩＯＰ４、命令メモリ５は、記載が省略されている。
【００６１】
ＰＥ２ａは、図２におけるＰＥ２に相当し、一部異なる構成を有している。ＰＥ２ａは、ＳＰＥ２Ａａ〜ＳＰＥ２Ｄａとレジスタ２Ｍを有する。
ＰＥ２ａにおけるＳＰＥ２Ａａ〜ＳＰＥ２Ｄａは、図２におけるＳＰＥ２Ａ〜ＳＰＥ２Ｄに相当するが、セレクタ１４Ａ〜セレクタ１４Ｄ及びレジスタ参照部１５Ａ〜１５Ｃに代え、セレクタ１４ＸＡ〜セレクタ１４ＸＤを備える。
セレクタ１４ＸＡ〜セレクタ１４ＸＣは、セレクタ１４Ａ〜セレクタ１４Ｃとレジスタ参照部１５Ａ〜１５Ｃを一体化した構成にあたり入力される信号を選択制御信号に応じて選択する。セレクタ１４ＸＡに入力される信号は、Ａｃｃ１３Ａ〜Ａｃｃ１３Ｄ、ローカルメモリ１１Ａ及びレジスタ２Ｍであり、ＰＥ−Ｉ３ａからの選択制御信号に応じて入力される信号を切り換える。セレクタ１４ＸＢ〜１４ＸＣについても、セレクタ１４ＸＡと同様である。
また、セレクタ１４ＸＤは、入力される信号が、Ａｃｃ１３Ａ〜Ａｃｃ１３Ｄ、ローカルメモリ１１Ｄ、レジスタ２Ｍ及びデータ入力バッファー（SIN_reg）１６からの情報並びに隣接するＰＥ２ａからの入力信号であり、ＰＥ−Ｉ３ａからの選択制御信号に応じて入力される信号を切り換える。
【００６２】
ＰＥ−Ｉ３ａは、図２におけるＰＥ−Ｉ３に相当し、交換部３１ａを備える。交換部３１ａは、命令セレクト部３２と選択制御部３５Ａ〜３５Ｄを備える。
命令選択デコード部３５Ａ〜３５Ｄは、図８における命令選択部３３Ａ〜３３Ｄと命令デコード部３４Ａ〜３４Ｄをそれぞれ合わせた構成を備え、入力されるｓｐｅ−ａ用コード、ｓｐｅ−ｂ用コード、ｓｐｅ−ｃ用コードを、命令セレクト部３２が出力するセレクト信号に応じて切り換えて、入力される命令コードに応じて各ＳＰＥ２Ａ〜２Ｃを制御する制御信号を生成し出力する。
【００６３】
上記の構成とすることによりＳＰＥ２Ａ〜２Ｃ内におけるレジスタR0〜R3の選択を簡素化し、ＳＰＥ内のセレクタ１４ＸＡ〜１４ＸＣの１段で切り換えるようになる。
第１実施形態に示したＲＯＴ命令によって、ＳＰＥ２Ａ用、ＳＰＥ２Ｂ用、ＳＰＥ２Ｃ用の命令（OPコード）を交換し、各ＳＰＥのＡＬＵ１２Ａ〜１２Ｃに供給する選択処理を同じように実施できる。
【００６４】
以上に示した実施形態により、複数のサブＰＥを持つVLIW型アーキテクチャーを採用した並列計算機において、ローカルメモリをサブＰＥ毎に分割して配置することで、ローカルメモリへの多重アクセス問題を回避しながら、メモリとサブＰＥ間のデータ転送能力を高めることができる。さらに、2つ以上のサブＰＥの構成を全く同じにし、サブＰＥの動作を制御する制御信号を交換することによって、ローカルメモリに格納されている全てのデータを短時間（1クロック）で交換したのと同じ効果を出せる。これらの特徴により、サブＰＥとローカルメモリ間のデータ転送能力が大幅に向上し、実効演算性能が高い並列処理プロセッサーを提供できる。
【００６５】
本発明の実施形態によれば、並列計算装置１は、並列して演算処理を行う複数の演算プロセッサー（ＰＥ）２を備える。演算プロセッサー２では、命令実行制御部３がそれぞれに制御命令を供給する。サブプロセッサーＳＰＥ２Ａは、記憶部１１Ａが複数のデータ又は複数の演算結果を保持する。ＡＬＵ１２Ａは、記憶部１１Ａから読み出したデータに演算処理を施し、その結果を記憶部に供給する。
また、サブプロセッサーは、複数のサブプロセッサーのうち少なくとも２つのサブプロセッサーが同じ構造を有する。それらの同じ構造を有するサブプロセッサーは、同一構造プロセッサー群を形成する。また、命令実行制御部は、交換部が、同一構造サブプロセッサー群に含まれるサブプロセッサーに供給する制御信号を交換して供給する。
これにより、記憶部に記憶されたデータを交換したり、参照するデータを切り換えて同様の処理をしたりするためにオペランドの異なる類似のプログラムを用意することもなく、１命令の処理により、データと処理の組み合わせを交換することができる。
【００６６】
なお、本発明は、上記の各実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で変更可能である。
例えば、本発明の説明では１個の並列計算装置１（LSI）に内蔵される演算プロセッサー２の個数を107としたが、本発明はこれに制限されるものではなく、１以上の演算プロセッサー２を内蔵する計算機に適用できる。また、VLIW型で並列化するサブＰＥの個数を各演算プロセッサー２ごとに４としたが、本発明はこれに制限されるものではなく、複数のＳＰＥを持つシステムに適用できる。さらに、ＲＯＴ命令により、OPコードを交換するサブＰＥの個数を３としたが、本発明はこれに制限されるものではなく、複数のサブＰＥのOPコードが交換されるシステムに適用できる。
【００６７】
また、本発明の説明では全ての演算プロセッサー２でSIMD型を構成し、１個の命令制御プロセッサーによって制御されるとしたが、本発明はこれに制限されるものではなく、演算プロセッサー２を複数のグループに分割し、それぞれに制御プロセッサーを配置するような、SIMD型とMIMD型の中間のアーキテクチャにも適用できる。また、図１１に示す第２実施形態の構成では、各ＳＰＥのOPコードを交換した後でOPコードをデコードしているが、制御信号の本数がOPコードのビット数よりも少ないような場合には、OPコードをデコードした後で交換しても、本発明と同様の効果を得ることができる。
【００６８】
また、図２に示した構成では説明を分かり易くするために、Ａｃｃ１３Ａ〜Ａｃｃ１３Ｃの選択を２段にしているが、必要な回路素子の数を減らし、同時に回路の動作速度を上げるためには、図１１に示した構成のように１段で構成する方が望ましい。その場合は図１１に示すように、図８と同じ命令セレクト信号を用いて、セレクタ１４ＸＡ〜１４ＸＤのデータ選択信号そのものを交換する。
【符号の説明】
【００６９】
２  演算プロセッサー（ＰＥ）
２Ａ、２Ｂ、２Ｃ、２Ｃ、２Ｄ  サブ演算プロセッサー（ＳＰＥ、サブプロセッサー）
２Ｇ  サブ演算プロセッサーグループ（同一構造プロセッサー群）
３  命令実行制御プロセッサー（ＰＥ−Ｉ、命令実行制御部）
１１Ａ、１１Ｂ、１１Ｃ、１１Ｄ  ローカルメモリー（ＬＭ、記憶部）
１２Ａ、１２Ｂ、１２Ｃ、１２ＤＡ  ＡＬＵ（演算部）
１３Ａ、１３Ｂ、１３Ｃ、１３Ｄ  Ａｃｃ（レジスター部）
３１  交換部
【図１】
2011008416.tif 000003
【図２】
2011008416.tif 000004
【図３】
2011008416.tif 000005
【図４】
2011008416.tif 000006
【図５】
2011008416.tif 000007
【図６】
2011008416.tif 000008
【図７】
2011008416.tif 000009
【図８】
2011008416.tif 000010
【図９】
2011008416.tif 000011
【図１０】
2011008416.tif 000012
【図１１】
2011008416.tif 000013
【図１２】
2011008416.tif 000014
【図１３】
2011008416.tif 000015