(57)【特許請求の範囲】
【請求項１】
共通のリソースに対して、同時にアクセス可能な複数のプロセッサエレメントを含む演算処理装置であって、
前記複数のプロセッサエレメントに対して並列に接続され、それぞれの前記プロセッサエレメントに共通の第１命令を与える第１バスと、
前記複数のプロセッサエレメントに対して直列に接続され、前記複数のプロセッサエレメントにおいて、第１サイクルで第１プロセッサエレメントに与えた第２命令を、前記第１サイクルの次の第２サイクルで前記第１プロセッサエレメントに直列接続される第２プロセッサエレメントに伝える第２バスと、を有する、
ことを特徴とする演算処理装置。
【請求項２】
それぞれの前記プロセッサエレメントは、
命令を実行するプロセッサコアと、
前記第１命令および前記第２命令のいずれかを示す命令種別情報に従って、前記第１バスおよび前記第２バスのいずれかを選択する第１セレクタと、を有する、
ことを特徴とする請求項１に記載の演算処理装置。
【請求項３】
前記第１命令および前記第２命令は、それぞれの命令が第１命令か第２命令かを示す前記命令種別情報のビットフィールドを含み、
前記第１セレクタは、
前記命令種別情報のビットフィールドが前記第２命令を示すとき、前記第２バスを選択して前記第２命令を出力し、
前記命令種別情報のビットフィールドが前記第１命令を示すとき、前記第１バスを選択して前記第１命令を出力する、
ことを特徴とする請求項２に記載の演算処理装置。
【請求項４】
それぞれの前記プロセッサエレメントは、さらに、
前記第１セレクタで選択された命令を保持するコマンドバッファを有する、
ことを特徴とする請求項２または請求項３に記載の演算処理装置。
【請求項５】
前記第１プロセッサエレメントは、
前記第１サイクルにより、前記第１セレクタで選択された命令を前記コマンドバッファに保持し、
前記第２サイクルにより、前記コマンドバッファに保持された命令を、前記第２バスを通して、前記第２プロセッサエレメントに伝える、
ことを特徴とする請求項４に記載の演算処理装置。
【請求項６】
それぞれの前記プロセッサエレメントは、さらに、
前記第１セレクタで選択された命令および前記コマンドバッファに保持された命令のいずれか一方を選択する第２セレクタを有する、
ことを特徴とする請求項４に記載の演算処理装置。
【請求項７】
前記第１プロセッサエレメントは、前記第１プロセッサエレメントによるデータ処理が不要または完了している場合、
前記第２セレクタは、前記第１セレクタで選択された命令を、前記第１プロセッサエレメントをスキップして選択し、前記第２プロセッサエレメントに伝える、
ことを特徴とする請求項６に記載の演算処理装置。
【請求項８】
前記共通のリソースは、独立して動作可能な複数の共通リソースを含み、
前記第２バスは、前記複数の共通リソースの数に対応した数の複数の第２バスを含む、
ことを特徴とする請求項６または請求項７に記載の演算処理装置。
【請求項９】
それぞれの前記プロセッサエレメントは、さらに、
前記複数の共通リソースのうち、自身のプロセッサエレメントがアクセスする共通リソースを指定するルートセレクタレジスタを含む、
ことを特徴とする請求項８に記載の演算処理装置。
【請求項１０】
前記第２命令は、自身の命令が、前記複数の第２バスにおけるどのルートを通して伝えられるかを選択するルート選択情報のビットフィールド(ＲＳＢＦ)を含む、
ことを特徴とする請求項９に記載の演算処理装置。
【請求項１１】
共通のリソースに対して、同時にアクセス可能な複数のプロセッサエレメントを含む演算処理装置の制御方法であって、
前記複数のプロセッサエレメントに対して並列に接続された第１バスを通して、それぞれの前記プロセッサエレメントに共通の第１命令を与え、
前記複数のプロセッサエレメントに対して直列に接続された第２バスを通して、前記複数のプロセッサエレメントにおいて、第１サイクルで第１プロセッサエレメントに与えた第２命令を、前記第１サイクルの次の第２サイクルで前記第１プロセッサエレメントに直列接続される第２プロセッサエレメントに伝える、
ことを特徴とする演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で言及する実施例は、演算処理装置および演算処理装置の制御方法に関する。
【背景技術】
【０００２】
近年、例えば、画像認識やビッグデータの解析手法における処理を実行するために、ＳＩＭＤ(Single Instruction Multiple Data)型演算処理装置(プロセッサ)による並列処理が利用されている。
【０００３】
このようなＳＩＭＤ型プロセッサにおいて、例えば、命令(コマンド)は、ＰＥ(プロセッサエレメント)制御部から共通コマンドバス(共通バス)を通して、各プロセッサエレメント(ＰＥ：Processor Element)に伝えられる。
【０００４】
また、各ＰＥ(マルチコアの演算処理装置における各コア)は、例えば、調停回路(アービタ：Arbiter)を介して、メモリ(共通のリソース)にアクセスすることで、メモリに格納されたデータの並列処理を実行する。
【０００５】
ところで、従来、複数のプロセッサエレメントを含むＳＩＭＤ型演算処理装置および演算処理装置の制御方法としては、様々なものが提案されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−１４８８９９号公報
【特許文献２】特開平０８−０３０５７７号公報
【特許文献３】特開平０６−０３６０６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述したように、例えば、ＳＩＭＤ型プロセッサにおいて、ＰＥ制御部からのコマンドは、共通バスを介して各ＰＥに入力される。さらに、各ＰＥは、例えば、メモリ側に設けられた複雑なアービタを介してメモリをアクセスし、また、ＰＥ側には、メモリリードリクエストやアクノリッジ機構が実装されることになる。
【０００８】
そのため、例えば、全てのＰＥがコマンド実行を終了するまで、次のコマンドを実行することができず、処理サイクル数が増加してデータ処理を高速に実行するのが困難になるといった課題がある。また、回路規模によっては、アービタの動作周波数の低下が遅くなり、やはり、データ処理を高速に実行するのが困難になるといった課題がある。
【課題を解決するための手段】
【０００９】
一実施形態によれば、共通のリソースに対して、同時にアクセス可能な複数のプロセッサエレメントを含む演算処理装置であって、第１バスと、第２バスと、を有する演算処理装置が提供される。
【００１０】
前記第１バスは、前記複数のプロセッサエレメントに対して並列に接続され、それぞれの前記プロセッサエレメントに共通の第１命令を与え、前記第２バスは、前記複数のプロセッサエレメントに対して直列に接続される。
【００１１】
前記第２バスは、前記複数のプロセッサエレメントにおいて、第１サイクルで第１プロセッサエレメントに与えた第２命令を、前記第１サイクルの次の第２サイクルで前記第１プロセッサエレメントに直列接続される第２プロセッサエレメントに伝える。
【発明の効果】
【００１２】
開示の演算処理装置および演算処理装置の制御方法は、回路規模の増加を抑えつつ、複数のプロセッサエレメントによる共通のリソースに対する処理速度を向上させることができるという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】図１は、関連技術としての演算処理装置の一例を示すブロック図である。
【図２】図２は、図１に示す演算処理装置におけるプロセッサエレメントの一例を示すブロック図である。
【図３】図３は、図１に示す演算処理装置によりグラフィックス処理を行う場合の一例を説明するための図である。
【図４】図４は、２分木探索処理の一例を説明するための図である。
【図５】図５は、図１に示す演算処理装置により、図４に示す２分木探索処理を実行した場合の動作の一例を説明するためのタイミングチャートである。
【図６】図６は、第１実施例の演算処理装置を示すブロック図である。
【図７】図７は、図６に示す演算処理装置におけるプロセッサエレメントの一例を示すブロック図である。
【図８】図８は、図７に示すプロセッサエレメントにおけるセレクタを説明するための図である。
【図９】図９は、第１実施例の演算処理装置による動作の一例を説明するためのタイミングチャートである。
【図１０】図１０は、第２実施例の演算処理装置を示すブロック図である。
【図１１】図１１は、図１０に示す演算処理装置におけるプロセッサエレメントの一例を示すブロック図である。
【図１２】図１２は、図１１に示すプロセッサエレメントにおけるセレクタを説明するための図である。
【図１３】図１３は、第２実施例の演算処理装置による動作の一例を説明するためのタイミングチャートである。
【図１４】図１４は、第３実施例の演算処理装置を示すブロック図である。
【図１５】図１５は、図１４に示す演算処理装置におけるプロセッサエレメントの一例を示すブロック図である。
【図１６】図１６は、図１５に示すプロセッサエレメントにおけるセレクタを説明するための図(その１)である。
【図１７】図１７は、図１５に示すプロセッサエレメントにおけるセレクタを説明するための図(その２)である。
【図１８】図１８は、第３実施例の演算処理装置による動作の一例を説明するためのタイミングチャートである。
【図１９】図１９は、本実施例の演算処理装置が適用される半導体集積回路の一例を示すブロック図である。
【発明を実施するための形態】
【００１４】
まず、本実施例の演算処理装置および演算処理装置の制御方法を詳述する前に、図１〜図５を参照して、演算処理装置の制御方法の一例、並びに、その問題点を説明する。
【００１５】
図１は、関連技術としての演算処理装置の一例を示すブロック図であり、例えば、画像認識やビッグデータの解析手法における処理を実行するＳＩＭＤ型演算処理装置(ＳＩＭＤ型プロセッサ)の一例を示すものである。
【００１６】
図１において、参照符号101a〜101nはプロセッサエレメント(ＰＥ)、102はＰＥ制御部、103はメモリ(ツリー用メモリ)、104は共通コマンドバス(共通バス)、105は比較対象データバス、そして、106は調停回路(アービタ)を示す。
【００１７】
なお、図１では、複数のＰＥ101a〜101nが同時にアクセス可能な共通のリソースとして、ツリー用メモリ103を示しているが、例えば、図示しない画像用メモリに対しても、調停を行うアービタが設けられることになる。
【００１８】
ＰＥ制御部102は、命令(コマンド)を一時的に保持するフェッチ部121、および、プログラムを格納するプログラムメモリ122を含む。ここで、各ＰＥ101a〜101nは、共通バス104を通してＰＥ制御部102からの共通コマンドを受け取り、それぞれアービタ106との間のバス110a〜110nを介してメモリ103に対してアクセスする。
【００１９】
図１において、各ＰＥ101a〜101nとアービタ106間のバス110a〜110nは、１本の線として描かれているが、例えば、双方向で複数ビット(例えば、３２または６４ビット)のアドレスバスおよびデータバスを含む。
【００２０】
また、例えば、図１に示すＳＩＭＤ型プロセッサにより２分木(binary tree)探索を行う場合、２分木の各ツリーデータ(ツリー０〜ｎにおけるノード(node)０〜ｋ)のデータは、例えば、１つのメモリ(ツリーデータ格納メモリ)に格納される。
【００２１】
さらに、比較対象データは、例えば、別のメモリ(ＲＡＭ：Random Access Memory)から供給するようにしてもよい。また、ＰＥの数は、仕様に応じて数個〜数百個というように様々に設定されるが、画像認識やビッグデータの解析手法における処理を実行するものとして、例えば、百数十個程度にすることが考えられる。
【００２２】
図２は、図１に示す演算処理装置におけるプロセッサエレメントの一例を示すブロック図である。図２に示されるように各ＰＥ101(101a〜101n)は、共通バス104からコマンドを受け取って保持するコマンドバッファ111、および、コマンドバッファ111に保持されたコマンドを実行するプロセッサコア112を含む。
【００２３】
そして、ＰＥ101は、メモリ103に対して、バス110およびアービタ106を介してRAM(メモリ)アドレスおよびRAMリードリクエストを出力し、メモリ103からアービタ106およびバス110を介して、RAMリードACK(アクノリッジ)およびRAMリードデータを受け取る。
【００２４】
図３は、図１に示す演算処理装置によりグラフィックス処理を行う場合の一例を説明するための図である。ここで、図３は、複数のＰＥ101a〜101nを含むＳＩＭＤ型プロセッサにより、同一プログラムで複数のデータ処理を行う例として、グラフィックス処理を行う場合を説明するためのものである。
【００２５】
図３に示されるように、グラフィックス処理を行う場合、例えば、各ＰＥ101a〜101nに対して、それぞれが担当する画素のピクセルデータ(A1,A2,A3,… 〜 N1,N2,N3,…)を決まった順序で送り込む。
【００２６】
それぞれのＰＥ101a〜101nは、入力されたデータに対して単純に決まった演算(例えば、A1*A2+A3 〜 N1*N2+N3)を実施して出力する。すなわち、グラフィックス処理を行う場合には、各ＰＥ101a〜101nの内部状態に関わらず、例えば、外部(外部メモリ)からＤＭＡ(Direct Memory Access)などによってデータを供給することが可能である。
【００２７】
図４は、２分木探索処理の一例を説明するための図であり、図４(a)は、２分木のノードを示し、図４(b)は、２分木探索処理(２分木処理)の一例を説明するためのフローチャートである。
【００２８】
図４(a)に示されるように、２分木は、データ構造の一種である木構造において、親ノードが有する子ノードの数が２つ以下のもので、親のないノードを根(root node：node 0)とし、順に、node 1, node 2, …として配置される。
【００２９】
この２分木は、例えば、画像認識等の機械学習において使用するランダムフォレストと呼ばれる手法で使用される。そして、ＳＩＭＤ型プロセッサは、複数の２分木探索を並列処理するために適用される。なお、以下の説明では、簡略化のために、図６に示すＳＩＭＤ型プロセッサを用いて、２分木探索の各ノード(node 1, 2, 3, …)において、ある画素の輝度を閾値と比較することにする。
【００３０】
図４(b)に示されるように、２分木処理を開始(ＳＴＡＲＴ)すると、ステップＳＴ１において、ｉ＝０、すなわち、ルートノード(node 0)とし、ステップＳＴ２に進む。ステップＳＴ２では、node iにおいて、ツリー用メモリ(３２)から判定用画素座標、判定用閾値、判定結果が真／偽のそれぞれについての分岐先情報、並びに、最終ノードの場合の判定結果を読み出す(リードする)。なお、分岐先情報とは、次のノードの情報が格納されているツリー用メモリアドレス(ただし、最終ノードの場合には、NULL(ヌル))を示す。
【００３１】
さらに、ステップＳＴ３に進んで、画像用メモリ(３１)から判定用画素座標に相当する輝度データをリードし、ステップＳＴ４に進む。ここで、ツリー用メモリ(３２)は、２分木の各ノードの情報を格納するメモリであり、また、画像用メモリ(３１)は、各画素の輝度を格納するメモリである。
【００３２】
ステップＳＴ４では、判定を実行、すなわち、ステップＳＴ３で読み出した輝度が閾値よりも大きいかどうかを判定(輝度＞閾値？)し、さらに、ステップＳＴ５において、最終ノードかどうか、すなわち、分岐先がヌルかどうか(分岐先＝＝Null)を判定する。
【００３３】
ステップＳＴ５において、最終ノードではないと判定すると、ステップＳＴ６に進んで、判定結果による分岐先ノードを決定し、ステップＳＴ２に戻って、同様の処理を繰り返す。一方、ステップＳＴ５において、最終ノードであると判定すると、ステップＳＴ７に進んで、判定結果を出力し、処理を終了(ＥＮＤ)する。
【００３４】
ところで、各ＰＥ101a〜101nに対して、それぞれ１つの２分木を割り当てる場合を考えると、例えば、ルートノードnode 0のデータは、選択肢がないので一意に決まる。すなわち、node 0のデータは、外部から供給することは可能であるが、次のステップでノードnode 1またはnode 2のどちらを選択するかは、該当するＰＥのみが認識している情報なので、外部から対応するデータを供給することは困難である。
【００３５】
つまり、２分木探索をＳＩＭＤ型プロセッサに適用する場合には、少なくとも２ステップ目以降において、各ＰＥ101a〜101nから画像用メモリ(３１)およびツリー用メモリ(３２)に対する個別のアクセスが求められることになる。
【００３６】
そのため、複数のＰＥ101a〜101nからメモリへの同時アクセスが発生し、メモリ側に複雑なアービタ(調停回路)の実装が求められ、その結果、回路規模によってはアービタの動作周波数が遅くなり、データ処理を高速に実行するのが困難になるといった課題がある。
【００３７】
さらに、ＳＩＭＤ型プロセッサでは、全てのＰＥ101a〜101nが命令を終了するまで、次の命令を実行することが難しいため、上述したメモリアクセスにより個々のＰＥ101a〜101nの調停が行われている間は、次の命令に進むことが困難になる。そのため、処理サイクル数が増加し、やはりデータ処理を高速に実行するのが困難になるといった課題がある。
【００３８】
図５は、図１に示す演算処理装置により、図４に示す２分木探索処理を実行した場合の動作の一例を説明するためのタイミングチャートである。なお、メモリは、一般的なシングルポートのＲＡＭとする。
【００３９】
図５に示されるように、まず、共通バス104に対して、ツリー用メモリ(３２)のリードコマンドであるｃｍｄ１が発行される。各ＰＥ101a〜101nは、一斉にツリー用メモリ(３２)のリードコマンドを実行しようとするが、ツリー用メモリは、１サイクルに１つのＰＥからのアクセスを受け付けるだけである。
【００４０】
ここで、ツリー用メモリ(３２)のアービタが、例えば、ＰＥ(プロセッサエレメント)の数が１６個で、ＰＥ０→ＰＥ１→ … →ＰＥ１５とアクセスを受け付ける場合を考える。このとき、ＰＥ０は、最初のサイクルでメモリアクセスを受け付けられるので、その後、他のＰＥのアクセスが終了するまでウェイト(wait)状態になる。
【００４１】
また、ＰＥ１は、ＰＥ０の次のサイクルでメモリアクセスを受け付けられた後、ウェイト状態になる。このようにして、ＰＥ１５のメモリアクセスが受け付けられるまでには、合計１６サイクルが費やされる。
【００４２】
なお、次の画像用メモリ(３１)へのリード命令(リードコマンド)であるｃｍｄ２も、同様に合計１６サイクルを費やすことになり、この２つの命令により、合計３２サイクルが費やされることになる。
【００４３】
このように、関連技術の演算処理装置によれば、各ＰＥ101a〜101nからメモリへのアクセス時間を短縮することが難しく、例えば、画像処理における画像認識速度を向上させるのが困難になっている。
【００４４】
以下、演算処理装置および演算処理装置の制御方法の実施例を、添付図面を参照して詳述する。図６は、第１実施例の演算処理装置を示すブロック図であり、例えば、画像認識やビッグデータの解析手法における処理を実行するＳＩＭＤ型演算処理装置(ＳＩＭＤ型プロセッサ)の第１実施例を示すものである。
【００４５】
図６において、参照符号１a〜１nはプロセッサエレメント(ＰＥ)、２はＰＥ(プロセッサエレメント)制御部、３１は画像用メモリ、３２はツリー用メモリ、４は共通コマンドバス(共通バス：第１バス)、そして、５はカスケードバス(第２バス)を示す。
【００４６】
ここで、カスケードバス５は、コマンド(第２命令)を、各サイクルに基づいて順番に直列接続されるＰＥに渡す(バケツリレーする)ためのバスであり、本明細書では、コマンドをバケツリレーするバスを、便宜的に、カスケードバスと呼ぶことにする。
【００４７】
また、画像用メモリ３１には、２分木探索(２分木処理)で比較対象になる各画素の情報(例えば、輝度)が格納され、また、ツリー用メモリ３２には、２分木処理で使用するノード情報が格納されている。
【００４８】
各ＰＥ１a〜１nには、それぞれ１つの２分木処理が割り当てられる。また、共通バス４は、複数のＰＥ１a〜１nに対して並列に接続され、それぞれのＰＥ１a〜１nに対して共通の共通コマンド(第１命令)を与えるようになっている。
【００４９】
さらに、カスケードバス５は、複数のＰＥ１a〜１nに対して直列に接続され、複数のＰＥ１a〜１nにおいて、例えば、第１サイクルでＰＥ１ａに与えたカスケードコマンド(第２命令)を、次の第２サイクルでＰＥ１ｂに伝えるようになっている。
【００５０】
ＰＥ制御部２は、命令(コマンド)を一時的に保持するフェッチ部２１、および、プログラムを格納するプログラムメモリ２２を含む。ここで、各ＰＥ１a〜１nは、共通バス４を通して、ＰＥ制御部２からの共通コマンドを受け取り、さらに、カスケードバス５を通して、カスケードコマンドを受け取る。
【００５１】
図６に示されるように、各ＰＥ１a〜１nと画像用メモリ３１は、それぞれバス１８a〜１８nで接続され、また、各ＰＥ１a〜１nとツリー用メモリ３２は、それぞれバス１９a〜１９nで接続されている。
【００５２】
なお、これらのバス１８a〜１８nおよび１９a〜１９nは、１本の線として描かれているが、例えば、双方向で複数ビット(例えば、３２または６４ビット)のアドレスバスおよびデータバスを含んでいる。
【００５３】
図６において、ＰＥ制御部２から、共通バス４を通して送られる共通コマンド(第１命令)、並びに、カスケードバス５を通して送られるカスケードコマンド(第２命令)には、１ビットのビットフィールド(カスケードビットフィールド)が設定されている。
【００５４】
命令フォーマットの一例を、次の表１に示す。ここでは、命令長を３３ビットとし、最上位ビットをカスケードビットフィールドＣＢＦ(Cascade Bit Field：命令種別情報)に割り当て、下位３２ビットを、通常の３２bitプロセッサ用の命令フィールドとしている。
【表１】
0006477185.tif 000002
【００５５】
表１に示されるように、カスケードビットフィールドＣＢＦは、例えば、『１』のときはカスケードバス５を通して伝える命令(カスケードコマンド)であることを示し。『０』のときは、共通バス４を通して伝える命令(共通コマンド)であることを示す。
【００５６】
上述したように、ＰＥ制御部２と各ＰＥ１a〜１nは、共通バス４およびカスケードバス５の２つのバスによって接続されている。そして、ＰＥ制御部２は、各ＰＥ１a〜１nがメモリアクセスを行わないコマンド(共通コマンド)を共通バス４に発行し、メモリアクセスを行うコマンド(カスケードコマンド)をカスケードバス５に発行する。
【００５７】
この際、バス上に制御信号(命令種別情報)として、カスケードビットフィールドＣＢＦを設け、カスケードバス５にコマンドを発行する際には、例えば、カスケードビットフィールドＣＢＦを『１』(高レベル『Ｈ』)に設定する。
【００５８】
なお、ＣＢＦは、例えば、プログラムを作成するプログラマ、または、プログラミング言語で書かれたプログラムのソースコードを変換するコンパイラにより、ソフト的にコマンド中に組み込むことができる。
【００５９】
或いは、コマンド中にＣＢＦを埋め込まずに、例えば、コマンドの種別を判断して、共通バス４を通して各ＰＥ１a〜１nに伝える共通コマンドか、カスケードバス５を通して各ＰＥ１a〜１nに伝えるカスケードコマンドかを判断して処理を行うことも可能である。
【００６０】
図７は、図６に示す演算処理装置におけるプロセッサエレメントの一例を示すブロック図である。図７に示されるように、各プロセッサエレメント１(１a〜１n)は、コマンドバッファ１１、プロセッサコア１２およびセレクタ(第１セレクタ)１３を含む。
【００６１】
セレクタ１３は、カスケードビットフィールド(命令種別情報)ＣＢＦにより、共通バス４の共通コマンドまたはカスケードバス５のカスケードコマンドを選択し、セレクタ１３で選択されたコマンドは、コマンドバッファ１１に保持される。
【００６２】
すなわち、セレクタ１３は、ＣＢＦが『１』のとき、カスケードバス５のカスケードコマンドを選択し、ＣＢＦが『０』のとき、共通バス４の共通コマンドを選択し、その選択されたコマンドがコマンドバッファ１１に保持される。
【００６３】
プロセッサコア１２は、コマンドバッファ１１に保持されたコマンドを実行する。そして、ＰＥ１は、コマンドバッファ１１から出力されたコマンドがメモリアクセスの場合、ＰＥ１からメモリに対して、アドレス(RAMアドレス)と読み出しイネーブル(RAMリードイネーブル)を出力し、対応する読み出しデータ(RAMリードデータ)を受け取る。
【００６４】
コマンドバッファ１１には、カスケードバス５上の制御信号であるカスケードビットフィールドＣＢＦを観測し、そのＣＢＦが『１』のとき、セレクタ５で選択されたカスケードバス５によるカスケードコマンドが取り込まれる。また、コマンドバッファ１１には、ＣＢＦが『０』のとき、セレクタ５で選択された共通バス４による共通コマンドが取り込まれる。
【００６５】
コマンドバッファ１１は、取り込んだコマンドをバッファリングし、自身のＰＥ(例えば、ＰＥ１a)のプロセッサコア１２に対して、バッファリングしたコマンドを出力する。さらに、コマンドバッファ１１にバッファリングされたコマンドは、次のサイクルで、直列接続される(次段の)ＰＥ(例えば、ＰＥ１b)にカスケードバス５を通して伝えられる。
【００６６】
これにより、例えば、メモリアクセスを行うコマンド(カスケードコマンド)は、ＣＢＲが『１』に設定されているため、ＰＥ制御部２に近いプロセッサエレメントから順番に(１a→１b→１c→…)、１サイクルずつずれて伝えられることになる。
【００６７】
前述したように、ＰＥ１は、ＰＥ制御部２から出力されたコマンドを実行し、コマンドがメモリアクセスの場合、ＰＥ１からメモリに対して、アドレス(RAMアドレス)とリードイネーブルを出力(RAMリードイネーブル)する。
【００６８】
ここで、アドレスは、リードイネーブルがアサートされているサイクルのみ有意な値を持ち、その他のサイクルでは『０』を出力する。また、メモリアクセスのコマンドは、カスケードバス５を通して入力されるため、サイクルが重ならないことが保証されることになる。
【００６９】
そのため、メモリへ入力されるアドレスおよびリードイネーブルは、各ＰＥ１(１a〜１n)から出力されるアドレスとリードイネーブルのそれぞれの論理和をとった単純なものとすることができる。また、ＰＥ１側では、リードイネーブルを発行してから、決められたサイクル後(例えば、１サイクル後)にリードデータを受け取ることができるので、アクノリッジ機構は不要になる。
【００７０】
ＰＥ制御部２は、例えば、最終のプロセッサエレメント１nが出力するＣＢＦ(ＣＴＳ)を観測することによって、全てのプロセッサエレメント１a〜１nのメモリアクセスが終了したことを認識することができ、共通バス４に対するコマンドの発行が可能になる。
【００７１】
すなわち、上述した図６に示されるように、例えば、最終のプロセッサエレメント１nのカスケードビットフィールドＣＢＦをカスケード終了信号ＣＴＳとして、所定の配線Ｌ1を介してＰＥ制御部２に入力させればよいことになる。
【００７２】
このように、第１実施例の演算処理装置によれば、例えば、メモリ側に対して複雑なアービタを設けることなく、また、プロセッサエレメント(ＰＥ)側でメモリリードリクエストやアクノリッジ機構を実装することなく、所定の処理を行うことが可能になる。
【００７３】
図８は、図７に示すプロセッサエレメントにおけるセレクタを説明するための図であり、図８(a)は、セレクタ１３に注目して示し、図８(b)は、セレクタ１３の真理値表を示す。
【００７４】
図８(a)に示されるように、セレクタ１３には、カスケードバス５を経由したカスケードコマンド(Ａ)、並びに、共通バス４を経由した共通コマンド(Ｂ)が入力され、カスケードビットフィールドＣＢＦ(Ｓ)の値により一方が選択されるようになっている。
【００７５】
ここで、カスケードコマンド(Ａ)，共通コマンド(Ｂ)および選択コマンド(Ｙ)は、例えば、３３ビット(［３２：０］)とされ、ＣＢＦは、３３ビットのコマンドにおける最上位の１ビット(［３２］)とされている。なお、これは、単なる一例であり、コマンドの構成は、様々に変化し得るのはいうまでもない。
【００７６】
図８(b)に示されるように、例えば、カスケードビットフィールド(Ｓ)が『１』のとき、セレクタ１３により選択される選択コマンド(Ｙ［３２：０］)は、カスケードコマンド(Ａ［３２：０］)になる。また、カスケードビットフィールド(Ｓ)が『０』のとき、選択コマンド(Ｙ［３２：０］)は、共通コマンド(Ｂ［３２：０］)になる。
【００７７】
図９は、第１実施例の演算処理装置による動作の一例を説明するためのタイミングチャートであり、１６個(ＰＥ０〜ＰＥ１５)のプロセッサエレメントを使用し、ツリー用メモリ３２および画像用メモリ３１に連続してメモリアクセスする場合の波形を示す。なお、メモリは、一般的なシングルポートのＲＡＭとする。
【００７８】
図９と、前述した図５の比較から明らかなように、例えば、画像用メモリ３１へのリードコマンドであるｃｍｄ１およびｃｍｄ２を実行するのに３２サイクル要していたものが、本第１実施例によれば、１７サイクルに低減されるのが分かる。
【００７９】
すなわち、ツリー用メモリ３２へのアクセスであるコマンド(命令)ｃｍｄ１と画像用メモリへのアクセスであるコマンドｃｍｄ２は、異なるメモリへのアクセスであるためにカスケードバス５に対して連続したサイクルで発行することができる。
【００８０】
これにより、コマンドｃｍｄ１の終了には、図５の場合と同様に、１６サイクルを費やすことになるが、コマンドｃｍｄ２は、実質的に、１サイクルで処理が終了できることになり、コマンドの実行時間を大幅に短縮できることが分かる。
【００８１】
なお、図９の動作について、ツリー用メモリ３２と画像用メモリ３１に対するリードコマンドは、例えば、ＣＢＦが『１』に設定され、ＰＥ制御部２のプログラムメモリ２２に格納されている。
【００８２】
また、ＰＥ制御部２のフェッチ部２１は、ＣＢＦを見て、これらのコマンドをカスケードバス５に出力する。ここで、コマンド中のＣＢＦの設定は、コンパイラ或いはプログラマによって予め設定されることを想定しているが、例えば、ＰＥ制御部２のフェッチ部２１にコマンドを解析するロジックを追加し、自動的にＣＢＦを付加するようにしてもよい。
【００８３】
また、本実施例において、異なるメモリ(例えば、図６の画像用メモリ３１およびツリー用メモリ３２)に対するアクセスは、連続したカスケードコマンドとして発行することが可能であり、これは、画像用およびツリー用の２つのメモリに限定されない。
【００８４】
さらに、連続したカスケードコマンドとして発行することができるアクセス(命令)は、メモリアクセスに限定されるものではなく、例えば、複数のプロセッサエレメント(１a〜１n)によりアクセスが可能な共通のリソースに対するものであってもよい。
【００８５】
ここで、メモリ(画像用メモリ３１およびツリー用メモリ３２)は、共通のリソースの単なる一例に過ぎない。すなわち、共通のリソースとしては、例えば、入出力インターフェースや個々のプロセッサエレメントに実装するには高価になるような、乗算器を始めとする演算器等の様々なものが適用可能である。
【００８６】
以上のように、本第１実施例によれば、例えば、メモリアクセス毎にアービトレーションを行って全てのプロセッサエレメントのアクセスが完了するのを待つ方式に比較して、命令実行サイクル数を大幅に短縮することが可能になる。
【００８７】
すなわち、プロセッサエレメントとメモリの間に接続される複雑な調停回路が不要になり、メモリアクセス時のリードアクセスが終了するまで次の実行を待たなくてもよいため、２番目以降の選択命令コマンドの処理速度を大幅に向上させることができる。なお、この効果は、以下に説明する第２および第３実施例でも同様に発揮され、さらに、メモリ以外の共通のリソースに対するアクセスでも同様に発揮されることになる。
【００８８】
図１０は、第２実施例の演算処理装置を示すブロック図であり、複数のプロセッサエレメントの内、途中で処理が早く終わるものが含まれる場合に対応するものを示す。図１０と、前述した図６の比較から明らかなように、第２実施例では、２番目のプロセッサエレメント１bに与える２分木処理において、終端ノードＮＮにたどりついた場合が例として説明される。
【００８９】
すなわち、図１０に示されるように、例えば、プロセッサエレメント１bは、終端ノードＮＮにたどりついた場合には、与えられた２分木処理が早期に終了することになる。第２実施例では、早期に判定結果が決まった処理については、判定終了のフラグを立てることにより、カスケードバス５で接続されたプロセッサエレメント１bをスキップし、より一層、処理速度の向上を図るようになっている。
【００９０】
図１０に示されるように、各ＰＥ１a〜１nに対してそれぞれ割り当てられた２分木処理において、これら全ての２分木処理(２分木)が同じノード数となっているとは限らない。さらに、全てのＰＥ１a〜１nに対して、処理する２分木を割り当てられるとも限らない。
【００９１】
そこで、早期に判定結果が決まった(データ処理が完了している)ＰＥや２分木処理が割り当てられなかった(データ処理が不要の)ＰＥについては、判定終了や無効のフラグを立てることで、それらのＰＥをスキップする。
【００９２】
すなわち、カスケードバス５により直列に接続された複数のＰＥ１a〜１nから、データ処理が不要または完了しているＰＥをスキップすることにより、より一層、処理速度を向上させることが可能になる。
【００９３】
図１１は、図１０に示す演算処理装置におけるプロセッサエレメントの一例を示すブロック図であり、図１２は、図１１に示すプロセッサエレメントにおけるセレクタを説明するための図である。
【００９４】
ここで、図１２(a)は、セレクタ(第２セレクタ)１４に注目して示し、図１２(b)は、セレクタ１４の真理値表を示す。なお、セレクタ(第１セレクタ)１３は、図７および図８を参照して説明したのと同様のものである。
【００９５】
図１１および図１２(a)に示されるように、セレクタ１４には、セレクタ１３の出力およびコマンドバッファ１１の出力が入力され、オアゲート153の出力(ＣＳ0)に応じて一方を選択して出力する。
【００９６】
ここで、プロセッサコア１２は、無効フラグが『１』の時には動作を行わない。無効フラグの設定／解除は、図示しない専用の制御信号を使用して行うことを想定しているが、例えば、共通バス４に対して専用のロジック回路を付加し、無効フラグの設定用命令が発行されたときに、無効フラグの設定／解除を行うようにすることもできる。
【００９７】
また、コマンドバッファ１１は、判定終了フラグまたは無効フラグが『１』の時にはカスケードコマンドをＮＯＰ(No-OPeration)コマンドに置き換える。さらに、判定終了フラグの設定は、共通バス４またはカスケードバス５を経由したコマンドを使用して、プロセッサコア１２から行うようになっている。なお、判定終了フラグの解除は、共通バス４を経由したコマンドを使用して、プロセッサコア１２から行うことができる。
【００９８】
すなわち、オアゲート153は、判定終了フラグ(151)および無効フラグ(152)の論理和を取って、少なくとも一方が『１』になったら、セレクタ１４に対して、『１』の制御信号ＣＳ0を出力する。
【００９９】
図１２(b)に示されるように、セレクタ１４は、オアゲート153からの『１』の制御信号ＣＳ0(Ｓが『１』)を受け取り、セレクタ１３で選択されたコマンド(Ｂ［３２：０］)を選択する。
【０１００】
そして、セレクタ１３で選択された、コマンド(Ｂ［３２：０］、そのサイクルのコマンド)が、セレクタ１４による選択コマンド(Ｙ［３２：０］)として、カスケードバス５を通して直列接続される(次段の)プロセッサエレメントに伝えられる。このとき、オアゲート153からの『１』の制御信号ＣＳ0は、コマンドバッファ１１にも入力され、上述したＮＯＰコマンドへの置き換え処理が行われる。
【０１０１】
具体的に、図１０に示されるように、例えば、ＰＥ１bによる２分木処理が早期に終了した場合には、判定終了フラグ(151)を立てる(『１』にする)ことで、オアゲート153から出力される制御信号ＣＳ0が『１』になる。
【０１０２】
これにより、セレクタ１３で選択された、そのサイクルのコマンド(Ｂ［３２：０］)が選択コマンド(Ｙ［３２：０］)として、ＰＥ１bの次段のＰＥ１cに伝えられ、カスケードバス５によるコマンドの伝送時間を短縮することが可能になる。
【０１０３】
また、例えば、ＰＥ１bに対して２分木処理が割り当てられなかった場合には、無効フラグ(152)を立てる(『１』にする)ことで、オアゲート153から出力される制御信号ＣＳ0が『１』になる。
【０１０４】
これにより、セレクタ１３で選択されたコマンド(Ｂ［３２：０］、そのサイクルのコマンド)が選択コマンド(Ｙ［３２：０］)として、ＰＥ１bの次段のＰＥ１cに伝えられ、カスケードバス５によるコマンドの伝送時間を短縮することが可能になる。
【０１０５】
なお、判定終了フラグ(151)および無効フラグ(152)が立てられず、オアゲート153から出力される制御信号ＣＳ0が『０』のとき、セレクタ１４は、コマンドバッファ１１の出力(Ａ［３２：０］)を選択し、前述した第１実施例と同様の処理が行われる。
【０１０６】
すなわち、図１２(b)に示されるように、セレクタ１４は、オアゲート153からの『０』の制御信号ＣＳ0(Ｓが『０』)を受け取り、コマンドバッファ１１から出力されたコマンド(Ａ［３２：０］)を選択する。
【０１０７】
そして、コマンドバッファ１１から出力されたコマンド(Ａ［３２：０］、前のサイクルのコマンド)が、セレクタ１４による選択コマンド(Ｙ［３２：０］)として、カスケードバス５を通して直列接続されるプロセッサエレメントに伝えられる。すなわち、制御信号ＣＳ0が『０』のときは、第１実施例と同様の処理が行われることになる。
【０１０８】
図１３は、第２実施例の演算処理装置による動作の一例を説明するためのタイミングチャートであり、プロセッサエレメントＰＥ１が既に判定処理を終了している場合を説明するためのものである。なお、参照符号ｃｍｄ１は、ツリー用メモリ３２へのアクセスコマンドを示し、ｃｍｄ２は、画像用メモリ３１へのアクセスコマンドを示す。また、メモリは、一般的なシングルポートのＲＡＭとする。
【０１０９】
図１３と、前述した図９の比較から明らかなように、本第２実施例によれば、判定処理を終了しているＰＥ１においては、セレクタ(第２セレクタ)１４の制御信号ＣＳ0が『１』になる。
【０１１０】
そのため、第２セレクタ１４からは、セレクタ(第１セレクタ)１３で選択されたコマンド(Ｂ［３２：０］)が選択コマンド(Ｙ［３２：０］)として出力され、ＰＥ１をスルーして次段のＰＥ２に伝えられる。
【０１１１】
すなわち、ＰＥ１は判定終了フラグがセット(Ｓが『１』)されているので、ＰＥ０からカスケードバス５を通して受け取ったコマンド(ｃｍｄ１，ｃｍｄ２)は、コマンドバッファ１１でバッファリングされずに、ＰＥ１をスルーしてＰＥ２へと伝えられる。
【０１１２】
すなわち、ＰＥ２は、本来(ＰＥ１の判定処理が終了していない場合)、ＰＥ１がコマンドを受け取るサイクルでコマンドを受け取り、従って、ＰＥ３〜ＰＥ１５も、図９に示す場合よりも１サイクル早くコマンドを受け取って処理することになる。
【０１１３】
これにより、図９を参照して説明した第１実施例では１７サイクル要していた処理が、ＰＥ１をスキップすることにより、１サイクル削減され、１６サイクルまで短縮することが可能になる。この処理サイクルの短縮の効果は、例えば、判定処理が終了しているか無効設定になっているプロセッサエレメントの数が多いほど顕著になるのはいうまでもない。
【０１１４】
図１４は、第３実施例の演算処理装置を示すブロック図であり、複数のプロセッサエレメントを、独立動作が可能な経路を使って並列に動作させることにより、実行サイクルのさらなる短縮を図るものである。
【０１１５】
具体的に、例えば、左右に設けた２つのカメラによるそれぞれの画像を処理する場合、画像用メモリ３は、２つの独立した画像用メモリ311，312となる。ここで、画像用メモリ311，312は、例えば、アドレス(ＲＡＭアドレス)の最上位ビット(ＭＳＢ)で識別することができる。
【０１１６】
なお、図１４では、例えば、図１５に示すルートセレクタレジスタ１６に対してＲＡＭアドレスのＭＳＢが既に設定され、各ＰＥがアクセスする画像用メモリが既に指定されている。
【０１１７】
すなわち、図１４は、初段のＰＥ１aが第１画像用メモリ311をアクセスし、２つのデータ(比較対象データ)を読み込んで比較(判定)処理を行い、２段目のＰＥ１bが第２画像用メモリ312をアクセスし、２つのデータを読み込んで比較処理を行う場合を示す。
【０１１８】
なお、以下に説明する第３実施例では、２つの独立した画像用メモリ311，312を例としているが、画像用メモリの数は、２つに限定されるものではない。例えば、４つの独立した画像用メモリに適用する場合には、ＲＡＭアドレスの上位２ビットを用いて各ＰＥがアクセスする画像用メモリを指定することができる。
【０１１９】
さらに、画像用メモリは、共通のリソースの単なる例であり、複数のプロセッサエレメントが同時にアクセス可能な共通のリソースであればメモリに限定されるものではない。すなわち、共通のリソースとしては、例えば、入出力インターフェースや個々のプロセッサエレメントに実装するには高価となるような、乗算器を始めとする演算器等の様々なものであってもよい。そして、本第３実施例は、これら独立した複数の演算器等に対して適用することもできる。
【０１２０】
図１４に示されるように、第３実施例の演算処理装置において、ＰＥ制御部２と各ＰＥ１a〜１nを接続するカスケードバスは、独立した画像用メモリ311，312の個数と同じ２本(５１，５２)設けられている。
【０１２１】
また、各ＰＥ１a〜１nからは、ツリー用メモリ３２に対してアクセスするバス１９a〜１９n、並びに、２つの画像用メモリ311，312に対してアクセスするバスが独立に設けられている。
【０１２２】
ただし、上述のように、図１４は、ＰＥ１aがバス181aを介して既に指定された第１画像用メモリ311から２つのデータを読み込み、ＰＥ１bがバス181bを介して既に指定された第２画像用メモリ312から２つのデータを読み込んで比較処理を行う様子を示している。
【０１２３】
各ＰＥ１a〜１nは、ツリー情報として格納されたデータ処理ごと(例えば、画像ごと)に割り当てられ、ＰＥ１a〜１nが独立して動作可能な経路のカスケード接続(カスケードバス)を選択することで、ＰＥ１a〜１nを並列に動作させ、処理時間の短縮を図る。
【０１２４】
図１４に示されるように、独立にアクセスできる画像用メモリが２つ(311，312)ある場合、例えば、ＲＡＭアドレスの上位１ビット目(最上位ビット：ＭＳＢ：Most Significant Bit)を、２つの画像用メモリ311，312の選択に使用することができる。
【０１２５】
すなわち、各ＰＥ１a〜１nは、ＲＡＭアドレスのＭＳＢによって、アクセス対象のＲＡＭが、第１画像用メモリ311および第２画像用メモリ312のどちらであるかを識別することができるようになっている。
【０１２６】
このときに、アクセス対象の２つの画像用メモリ(ＲＡＭ)311，312に対して、関連する２本のカスケードバス５１，５２が設けられる。なお、ＲＡＭアドレスのＭＳＢを使用して、第１および第２画像用メモリ311，312の選択を行うのは単なる例であり、これに限定されるものではない。
【０１２７】
ここで、ＲＡＭアドレスのＭＳＢ(ＣＳ１)が『０』のとき、偶数番目のＰＥ１a，１c，…(ＰＥ０，ＰＥ２，…，ＰＥ１４)は、第１カスケードバス５１を通して伝えられる第１カスケードコマンドにより第１画像用メモリ311をアクセスするものとする。
【０１２８】
また、ＣＳ１が『１』のとき、奇数番目のＰＥ１b，１d，…(ＰＥ１，ＰＥ３，…，ＰＥ１５)が、第２カスケードバス５２を通して伝えられる第２カスケードコマンドにより第２画像用メモリ312をアクセスするものとする。
【０１２９】
なお、各ＰＥ１a〜１n(ＰＥ０〜ＰＥ１５)は、自らがアクセスする画像用メモリ311，312に対応したカスケードバス５１，５２からのコマンド(命令)のみを実行する。そして、他のカスケードバスからのコマンドは、コマンドバッファ１１によるバッファリングを行わずに、そのままスルーさせて、直列接続される(次段の)ＰＥに伝える。
【０１３０】
また、ツリー用メモリ３２に対するアクセスコマンドは、第１カスケードバス５１または第２カスケードバス５２を通して伝えてもよいが、第１および第２カスケードバスとは別の第３カスケードバスを設け、その第３カスケードバスを通して伝えることもできる。
【０１３１】
図１４において、ＰＥ制御部２から第１および第２カスケードバス５１，５２を通して送られる命令(カスケードコマンド)には、ＣＢＦとは別に、カスケードバスの一方のルートを選択するためのルート選択ビットフィールド(ＲＳＢＦ)が設定される。
【０１３２】
カスケードコマンドの命令フォーマットの一例を、次の表２に示す。ここでは、命令長を３４ビットとし、最上位ビットをＲＳＢＦ(Route Select Bit Field：ルート選択情報)に割り当てている。なお、下位３３ビットは、前述した表１と同様であり、上位２ビット目をＣＢＦ(命令種別情報)に割り当て、上位３ビット目からの下位３２ビットを、通常の３２bitプロセッサ用の命令フィールドとしている。
【０１３３】
ここで、例えば、ＲＳＢＦが『１』に設定されるときには、ＣＢＦも『１』に設定されることになる。
【表２】
0006477185.tif 000003
【０１３４】
なお、ＲＳＢＦは、例えば、プログラムを作成するプログラマ、または、プログラミング言語で書かれたプログラムのソースコードを変換するコンパイラにより、ソフト的にコマンド中に組み込むことができる。
【０１３５】
或いは、ＰＥ制御部２のフェッチ部２１に対して、命令(コマンド)やメモリアクセス先を解析するロジック回路を追加して、ＲＳＢＦをコンド中に自動的に付加することも可能である。
【０１３６】
また、ツリー用メモリ３２に対するアクセスの場合、例えば、ＲＳＢＦは『０』で、ＣＢＦは『１』になるが、このとき、本第３実施例では、第１カスケードバス５１からコマンドを取り込むものとする。
【０１３７】
図１５は、図１４に示す演算処理装置におけるプロセッサエレメントの一例を示すブロック図であり、図１６および図１７は、図１５に示すプロセッサエレメントにおけるセレクタを説明するための図である。
【０１３８】
ここで、図１６は、２つのセレクタ(第１セレクタ１３および第２セレクタ１４)に注目して示し、図１７(a)は、第１セレクタ１３の真理値表を示し、図１７(b)は、第２セレクタ１４の真理値表を示す。なお、図１７(a)および図１７(b)において、符号『×』は、考慮に入れなくてもよい(don't care：ドントケア)を示す。
【０１３９】
図１５に示されるように、各ＰＥ１(１a〜１n)は、ルートセレクタレジスタ１６を含む。ルートセレクタレジスタ１６は、例えば、画像用メモリ(311，312)をアクセスするアドレスの最上位ビット(ＲＡＭアドレスのＭＳＢ)を保持していて、カスケードバス５１，５２を選択する制御信号(ルートセレクト信号)ＣＳ１をセレクタ１３，１４に出力する。
【０１４０】
すなわち、各ＰＥ１(１a〜１n)は、画像用メモリ(311，312)に対するアクセスを実行するサイクルの前に、ＲＡＭアドレスのＭＳＢ(ＣＳ１)を、ルートセレクタレジスタ１６に設定する。
【０１４１】
また、図１５および図１６に示されるように、第１セレクタ１３には、第１カスケードバス５１を介した第１カスケードコマンド(Ａ)、並びに、第２カスケードバス５２を介した第２カスケードコマンド(Ｂ)が入力される。
【０１４２】
ここで、表２を参照して説明したように、各カスケードコマンド(例えば、３４ビット)の最上位ビットＭＳＢは、ルート選択情報(ＲＳＢＦ)として使用され、上位２ビット目は、命令種別情報(ＣＢＦ)として使用される。
【０１４３】
すなわち、第１カスケードコマンドのＲＳＢＦおよびＣＢＦは、第１セレクタ１３のＳ１およびＳ２として入力され、第２カスケードコマンドのＲＳＢＦおよびＣＢＦは、第１セレクタ１３のＳ３およびＳ４として入力される。また、共通バス４を介した共通コマンドは、第１セレクタ１３のＣとして入力される。
【０１４４】
なお、初段のプロセッサエレメント１aには、ＰＥ制御部２から出力される第１および第２カスケードバス５１，５２がそのまま接続される。ＰＥ制御部２から第１および第２カスケードバス５１，５２には、共通のコマンドが発行される。ここで、第１セレクタ１３は、Ｓ０〜Ｓ４に基づいて、第１および第２カスケードコマンド並びに共通コマンドのいずれかを選択する。
【０１４５】
具体的に、図１７(a)に示されるように、第１セレクタ１３は、第１カスケードコマンド(Ａ)がＳ１＝Ｓ２＝『１』であり、Ｓ０＝『１』に一致する場合、第１カスケードコマンド(Ａ)をＹとして選択し、コマンドバッファ１１に出力する。
【０１４６】
また、第１セレクタ１３は、第２カスケードコマンド(Ｂ)がＳ３＝Ｓ４＝『１』であり、Ｓ０＝『０』に一致する場合、第２カスケードコマンド(Ｂ)をＹとして選択し、コマンドバッファ１１に出力する。
【０１４７】
さらに、第１セレクタ１３は、第１カスケードコマンド(Ａ)のＳ２＝『０』で、第２カスケードコマンド(Ｂ)のＳ４＝『０』のとき、共通バス４からの共通コマンド(Ｃ)をＹとして選択し、コマンドバッファ１１に出力する。
【０１４８】
そして、図１７(b)に示されるように、第２セレクタ１４は、ＲＳＢＦおよびＣＢＦが共に『１』(Ｓ１＝Ｓ２＝『１』，Ｓ３＝Ｓ４＝『１』)で、かつ、Ｓ０(ＣＳ１)に一致しないカスケードコマンドＡ，Ｂを、次段のＰＥにそのままＹ１，Ｙ０として伝える。
【０１４９】
すなわち、Ｓ０が『１』のとき、第２カスケードバス５２に対して、Ｓ３＝Ｓ４＝『１』のカスケードコマンド(Ｂ)が入力された場合には、そのカスケードコマンド(Ｂ)を、次段のＰＥの第２カスケードバス５２に対してそのまま出力(Ｙ０)する。
【０１５０】
また、Ｓ０が『０』のとき、第１カスケードバス５１に対して、Ｓ１＝Ｓ２＝『１』のカスケードコマンド(Ａ)が入力された場合には、そのカスケードコマンド(Ａ)を、次段のＰＥの第１カスケードバス５１に対してそのまま出力(Ｙ１)する。
【０１５１】
なお、他の場合は、コマンドバッファ１１からの出力(Ｃ)を、そのまま次段のＰＥの第１および第２カスケードバス５１，５２に対して出力(Ｙ１，Ｙ０)することになる。
【０１５２】
図１８は、第３実施例の演算処理装置による動作の一例を説明するためのタイミングチャートであり、独立動作が可能な２つの経路(第１および第２カスケードバス５１，５２)により、２つの独立した画像用メモリ311，312をアクセスする様子を示すものである。
【０１５３】
図１８において、偶数番号のプロセッサエレメント(ＰＥ０，ＰＥ２，…，ＰＥ１４)は、例えば、第１カスケードバス５１を通して伝えられる第１カスケードコマンドにより、ＲＡＭアドレスのＭＳＢが『０』の第１画像用メモリ311をアクセスするものとする。
【０１５４】
また、奇数番号のプロセッサエレメント(ＰＥ１，ＰＥ３，…，ＰＥ１５)は、例えば、第２カスケードバス５２を通して伝えられる第２カスケードコマンドにより、ＲＡＭアドレスのＭＳＢが『１』の第１画像用メモリ312をアクセスするものとする。
【０１５５】
その結果、図１８に示されるように、同じ画像用メモリに対してアクセスするＰＥにより同じカスケードバスを使用するグループが形成され、異なるカスケードバスに属するグループのアクセスと同時に処理できるため、処理時間のさらなる短縮が可能になる。
【０１５６】
なお、独立した画像用メモリの数は、２つに限定されるものではなく、また、複数のＰＥが同時にアクセス可能な共通のリソースであれば画像用メモリに限定されないのは、前述した通りである。
【０１５７】
図１９は、本実施例の演算処理装置が適用される半導体集積回路の一例を示すブロック図であり、デジタルカメラ向けのＳｏＣ(System On a Chip)を概略的に示すものである。図１９に示されるように、ＳｏＣ(半導体集積回路)200は、ＳＩＭＤブロック201、内蔵メモリ202、メモリＩＦ(インターフェース)203、イメージセンサＩＦ204、画像処理部205、ＣＰＵ２０６およびバスマトリックス207を含む。
【０１５８】
ここで、ＳＩＭＤブロック201、内蔵メモリ202、メモリＩＦ203、イメージセンサＩＦ204、画像処理部205およびＣＰＵ２０６は、バスマトリックス207により相互に接続されている。また、イメージセンサＩＦ204は、例えば、外部に設けられたレンズ等の光学系による画像をイメージセンサで電気信号に変換した信号を受け取るものである。なお、上述した各実施例の演算処理装置は、ＳＩＭＤブロック201に対応する。
【０１５９】
すなわち、図１９に示すＳＩＭＤブロック201におけるＰＥ制御部２は、例えば、ＣＰＵ206からの命令により制御される。また、ＳＩＭＤブロック201における画像用メモリ３１(311，312)およびツリー用メモリ３２は、例えば、メモリＩＦ203を介して外部の大容量メモリ(図示しない)から取り込んだデータを格納する内蔵メモリ202からのデータを読み込むことになる。
【０１６０】
以上において、本実施例の演算処理装置の適用は、画像処理を行うＳｏＣに限定されるものではなく、様々な電子機器に使用する半導体集積回路として幅広くて適用することができるのはいうまでもない。
【０１６１】
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではない。また、明細書のそのような記載は、発明の利点および欠点を示すものでもない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【０１６２】
以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。
（付記１）
共通のリソースに対して、同時にアクセス可能な複数のプロセッサエレメントを含む演算処理装置であって、
前記複数のプロセッサエレメントに対して並列に接続され、それぞれの前記プロセッサエレメントに共通の第１命令を与える第１バスと、
前記複数のプロセッサエレメントに対して直列に接続され、前記複数のプロセッサエレメントにおいて、第１サイクルで第１プロセッサエレメントに与えた第２命令を、前記第１サイクルの次の第２サイクルで前記第１プロセッサエレメントに直列接続される第２プロセッサエレメントに伝える第２バスと、を有する、
ことを特徴とする演算処理装置。
【０１６３】
（付記２）
それぞれの前記プロセッサエレメントは、
命令を実行するプロセッサコアと、
前記第１命令および前記第２命令のいずれかを示す命令種別情報に従って、前記第１バスおよび前記第２バスのいずれかを選択する第１セレクタと、を有する、
ことを特徴とする付記１に記載の演算処理装置。
【０１６４】
（付記３）
前記第１命令および前記第２命令は、それぞれの命令が第１命令か第２命令かを示す前記命令種別情報のビットフィールドを含み、
前記第１セレクタは、
前記命令種別情報のビットフィールドが前記第２命令を示すとき、前記第２バスを選択して前記第２命令を出力し、
前記命令種別情報のビットフィールドが前記第１命令を示すとき、前記第１バスを選択して前記第１命令を出力する、
ことを特徴とする付記２に記載の演算処理装置。
【０１６５】
（付記４）
それぞれの前記プロセッサエレメントは、さらに、
前記第１セレクタで選択された命令を保持するコマンドバッファを有する、
ことを特徴とする付記２または付記３に記載の演算処理装置。
【０１６６】
（付記５）
前記第１プロセッサエレメントは、
前記第１サイクルにより、前記第１セレクタで選択された命令を前記コマンドバッファに保持し、
前記第２サイクルにより、前記コマンドバッファに保持された命令を、前記第２バスを通して、前記第２プロセッサエレメントに伝える、
ことを特徴とする付記４に記載の演算処理装置。
【０１６７】
（付記６）
それぞれの前記プロセッサエレメントは、さらに、
前記第１セレクタで選択された命令および前記コマンドバッファに保持された命令のいずれか一方を選択する第２セレクタを有する、
ことを特徴とする付記４に記載の演算処理装置。
【０１６８】
（付記７）
前記第１プロセッサエレメントは、前記第１プロセッサエレメントによるデータ処理が不要または完了している場合、
前記第２セレクタは、前記第１セレクタで選択された命令を、前記第１プロセッサエレメントをスキップして選択し、前記第２プロセッサエレメントに伝える、
ことを特徴とする付記６に記載の演算処理装置。
【０１６９】
（付記８）
前記共通のリソースは、独立して動作可能な複数の共通リソースを含み、
前記第２バスは、前記複数の共通リソースの数に対応した数の複数の第２バスを含む、
ことを特徴とする付記６または付記７に記載の演算処理装置。
【０１７０】
（付記９）
それぞれの前記プロセッサエレメントは、さらに、
前記複数の共通リソースのうち、自身のプロセッサエレメントがアクセスする共通リソースを指定するルートセレクタレジスタを含む、
ことを特徴とする付記８に記載の演算処理装置。
【０１７１】
（付記１０）
前記第２命令は、自身の命令が、前記複数の第２バスにおけるどのルートを通して伝えられるかを選択するルート選択情報のビットフィールドを含む、
ことを特徴とする付記９に記載の演算処理装置。
【０１７２】
（付記１１）
前記演算処理装置は、ＳＩＭＤ型演算処理装置であり、
前記共通のリソースは、メモリである、
ことを特徴とする付記１乃至付記１０のいずれか１項に記載の演算処理装置。
【０１７３】
（付記１２）
前記メモリは、画像データを格納する画像用メモリと、前記画像データに対して２分木探索を実行するときに使用するノード情報を格納するツリー用メモリと、を含み、
前記第１命令は、前記ツリー用メモリをアクセスし、
前記第２命令は、前記画像用メモリをアクセスする、
ことを特徴とする付記１１に記載の演算処理装置。
【０１７４】
（付記１３）
前記複数のプロセッサエレメントは、それぞれ
前記第１命令による前記ツリー用メモリのアクセス、および、前記第２命令による前記画像用メモリのアクセスによるデータ処理を、並列して同時に行う、
ことを特徴とする付記１２に記載の演算処理装置。
【０１７５】
（付記１４）
付記１乃至付記１３のいずれか１項に記載の演算処理装置を含む、
ことを特徴とする半導体集積回路。
【０１７６】
（付記１５）
共通のリソースに対して、同時にアクセス可能な複数のプロセッサエレメントを含む演算処理装置の制御方法であって、
前記複数のプロセッサエレメントに対して並列に接続された第１バスを通して、それぞれの前記プロセッサエレメントに共通の第１命令を与え、
前記複数のプロセッサエレメントに対して直列に接続された第２バスを通して、前記複数のプロセッサエレメントにおいて、第１サイクルで第１プロセッサエレメントに与えた第２命令を、前記第１サイクルの次の第２サイクルで前記第１プロセッサエレメントに直列接続される第２プロセッサエレメントに伝える、
ことを特徴とする演算処理装置の制御方法。
【符号の説明】
【０１７７】
１，１a〜１n，ＰＥ０〜ＰＥ１５    プロセッサエレメント(ＰＥ)
２，102    ＰＥ制御部
４，104    共通コマンドバス(共通バス：第１バス)
５，５１，５２    カスケードバス(第２バス)
１１，111    コマンドバッファ
１２    プロセッサコア
１３    セレクタ(第１セレクタ)
１４    第２セレクタ
１６    ルートセレクタレジスタ
２１，121    フェッチ部
２２，122    プログラムメモリ
３１，311，312    画像用メモリ
３２，103    ツリー用メモリ
106    アービタ
【図１】
0006477185.tif 000004
【図２】
0006477185.tif 000005
【図３】
0006477185.tif 000006
【図４】
0006477185.tif 000007
【図５】
0006477185.tif 000008
【図６】
0006477185.tif 000009
【図７】
0006477185.tif 000010
【図８】
0006477185.tif 000011
【図９】
0006477185.tif 000012
【図１０】
0006477185.tif 000013
【図１１】
0006477185.tif 000014
【図１２】
0006477185.tif 000015
【図１３】
0006477185.tif 000016
【図１４】
0006477185.tif 000017
【図１５】
0006477185.tif 000018
【図１６】
0006477185.tif 000019
【図１７】
0006477185.tif 000020
【図１８】
0006477185.tif 000021
【図１９】
0006477185.tif 000022