(57)【要約】【課題】より簡易な構成で動作速度を向上させることができ、多様なアルゴリズムの実現に対応できるデータ処理装置を提供する。【解決手段】各ＤＳＰステージ１に、複数のＰＥ３，ステージメモリ４及びイベントコントローラ５を備え、複数のＤＳＰステージ１間をスロッテッドバスにより接続する。自ＤＳＰステージ１内においてＰＥ３とステージメモリ４とを読み出し専用バス６で接続し、ＰＥ３とスロッテッドバス２とを書き込み専用バス８で接続する。イベントコントローラ５には、ＰＥ３からの処理完了イベント及び外部において発生した外部イベントが入力される。そして、イベントコントローラ５は、入力される各イベントに応じて自ＤＳＰステージ１内のＰＥ３に対してタスク開始イベントを発生させる。【選択図】図１
2015179409.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上のプロセッシングエレメント（３），１つ以上のステージメモリ（４）及びイベントコントローラ（５）からなる複数のデータ処理ステージ（１）と、
これら複数のデータ処理ステージ間を接続し、データ書き込み専用であり、データを書き込む方向毎に独立している２つのバス（２Ｌ，２Ｒ）からなる双方向のスロッテッドバス（２）とを備えて構成され、
自データ処理ステージ内の前記プロセッシングエレメントと前記ステージメモリとは、データ読み出し専用バス（６）で接続され、
前記プロセッシングエレメントとスロッテッドバスとは、データ書き込み専用バス（８）で接続され、
前記イベントコントローラには、前記プロセッシングエレメントからの処理完了イベント及び外部において発生した外部イベントが入力され、
前記イベントコントローラは、前記入力される各イベントに応じて、自データ処理ステージ内のプロセッシングエレメントに対してタスク開始イベントを発生させることを特徴とするデータ処理装置。
【請求項２】
前記プロセッシングエレメントは、各データ処理ステージにおいてそれぞれ複数存在し、
それら複数のプロセッシングエレメントについて共通に設けられる命令メモリ（３１）と、
各プロセッシングエレメントについて個別に設けられるローカルデータメモリ（３４）と、
各プロセッシングエレメントにおいて実行されるタスクを個別に制御するためのタスク制御メモリ（３５）とを備えることを特徴とする請求項１記載のデータ処理装置。
【請求項３】
前記プロセッシングエレメントは、１つの命令について１つのデータを処理する第１演算器（３８）と、１つの命令について複数のデータを並列に処理する第２演算器（３９）とを備え、
前記第１演算器は、前記ローカルデータメモリに第１データバス（４４）を介して接続され、
前記第２演算器は、前記ローカルデータメモリに第１データバスを介して接続されていると共に、前記スロッテッドバスに前記第１データバスよりもバス幅が広い第２データバス（８）を介して接続されていることを特徴とする請求項２記載のデータ処理装置。
【請求項４】
前記複数のデータ処理ステージに、外部への書き込みデータ及び外部からの書き込みデータを転送するための外部接続バス（５２）を接続したことを特徴とする請求項１から３の何れか一項に記載のデータ処理装置。
【請求項５】
前記外部接続バスは、前記スロッテッドバスを介して接続されていることを特徴とする請求４記載のデータ処理装置。
【請求項６】
前記複数のデータ処理ステージにそれぞれ搭載されているプロセッシングエレメントは、各データ処理ステージにおける処理特性に応じた異なる構成であることを特徴とする請求項１から５の何れか一項に記載のデータ処理装置。
【請求項７】
前記複数のデータ処理ステージと前記スロッテッドバスとは、それぞれアクセスポイント（７１）を介して接続されており、
一端側，他端側に配置されるデータ処理ステージのアクセスポイントは、隣接するアクセスポイントより入力されたデータを前記アクセスポイントに折り返して出力するためのループパス（７２Ｌ，７２Ｒ）を有しており、
両端の間に配置されるデータ処理ステージのアクセスポイントは、対応するデータ処理ステージに、前記スロッテッドバスを介して双方向に転送されるデータを入出力させるか、又は何れか一方向にのみ転送されるデータを入出力させるかが予め選択されていることを特徴とする請求項１から６の何れか一項に記載のデータ処理装置。
【請求項８】
前記両端の間に配置されるデータ処理ステージのアクセスポイントの少なくとも１つ（７２（３））は、前記ループパスを形成可能に構成されていることを特徴とする請求項７記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１つ以上のプロセッシングエレメントを有する複数のデータ処理ステージ間を、スロッテッドバスにより接続してなるデータ処理装置に関する。
【背景技術】
【０００２】
例えば画像処理に代表されるストリームデータ処理を行うためのハードウェアの実装については、処理性能だけでなく、多様なアルゴリズムに対応できる柔軟性も求められる。そのような要求に対応するものとして、複数のプロセッシングエレメント（以下、ＰＥと称す）を用いたマルチコア構成が提案されている。
【０００３】
例えば非特許文献１では、各ＰＥを書き込み専用のリングバスで接続し、各ＰＥに対応するメモリをデュアルポートメモリにした構成が開示されている。これにより、対応するＰＥからのメモリアクセスと、リングバスを介した他のＰＥからのアクセスが衝突することを回避している。また、ストリームデータの特性に応じて、リングバスを介した他のＰＥに対応するメモリへのアクセスを書き込み専用とすることで、回路構成を簡易化している。
【０００４】
また、特許文献１では、非特許文献１における各ＰＥに対応するものをコプロセッサとして、各コプロセッサを複数のＰＥにより構成している。そして、各コプロセッサは、内部に共有メモリであるフレームメモリに加え、より小規模な複数の並列メモリを備えている。このように複数のメモリを備えることで、ストリームデータ処理の性能を律速するメモリ帯域の向上を図っている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−４８５７９号公報
【非特許文献】
【０００６】
【非特許文献１】Yaremchuk,G:A Novel Slotted-Ring Architecture for Parallel Processing, Electrical and Computer Engineering,1994,486-489 vol.2
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ストリームデータ処理では、非特許文献１や特許文献１のように、ＰＥ毎にある処理単位を割り当て、データがそれらの間を順次転送されて行くパイプライン処理構成が多く採用される。ここで、非特許文献１の構成において、処理性能を向上させるため各ＰＥをマルチコア構成にすることを想定すると、デュアルポートメモリのアクセス帯域が不足することが懸念される。また、各ＰＥ間をリングバスで接続すると、パイプライン構成の自由度が制限され、隣接するＰＥ以外へのデータ転送を行うと、リングバス全体のアクセス帯域を圧迫することになる。
【０００８】
また、特許文献１では、コプロセッサ間が専用バスで接続されているため、パイプライン構成の自由度は高いが、アクセス帯域が低く拡張性も確保し難い。更に、コプロセッサ内に多数のメモリを備える構成ではハードウェアが複雑になり、回路規模が増大し、動作速度の低下を招くだけでなくソフトウェアの設計難度も増大する。
【０００９】
本発明は上記事情に鑑みてなされたものであり、その目的は、より簡易な構成で動作速度を向上させることができ、多様なアルゴリズムの実現に対応できるデータ処理装置を提供することにある。
【課題を解決するための手段】
【００１０】
請求項１記載のデータ処理装置によれば、各データ処理ステージに、１つ以上のプロセッシングエレメント，１つ以上のステージメモリ及びイベントコントローラを備え、複数のデータ処理ステージ間を、データ書き込み専用である双方向のスロッテッドバスにより接続する。自データ処理ステージ内において、プロセッシングエレメントとステージメモリとをデータ読み出し専用バスで接続し、プロセッシングエレメントとスロッテッドバスとは、データ書き込み専用バスで接続する。イベントコントローラには、プロセッシングエレメントからの処理完了イベント及び外部において発生した外部イベントが入力される。そして、イベントコントローラは、入力される各イベントに応じて、自データ処理ステージ内のプロセッシングエレメントに対してタスク開始イベントを発生させる。
【００１１】
例えば、２つのデータ処理ステージ（以下、単にステージと称す）間において、初段のステージにて処理されたデータを次段のステージが受けて、更に別の処理を行うことを想定する。この場合、初段のステージに属するプロセッシングエレメントは、ステージメモリから読み出したデータを処理した後、書き込み専用バスにより接続されているスロッテッドバスを介して、自ステージの両側にそれぞれ接続されている他のステージに処理済みのデータを転送して、前記ステージに属するステージメモリに書き込むことができる。これにより、初段のステージが処理すべきタスクが完了したため、そのタスクの完了をイベントとして発生させる。
【００１２】
そして、次段のステージに属するイベントコントローラが、初段のステージにおけるタスクの完了に伴い発生したイベントを受けて自ステージ内のプロセッシングエレメントにタスク開始イベントを発生させれば、前記プロセッシングエレメントはタスクの実行を開始し、ステージメモリに書き込まれている初段のステージが処理したデータを読み出して処理を行う。これにより、２つのステージ間で処理の同期をとることが可能になる。
【００１３】
すなわち、プロセッシングエレメントは、ステージ内では読み出し専用バスを介してステージメモリから処理対象のデータを読み出して処理し、処理済みのデータを書き込み専用のスロッテッドバスを介して他のステージのメモリに書き込むので、プロセッシングエレメント−メモリ間のデータ転送方向が固定化されている。また、メモリのコヒーレンシ管理は、各プロセッシングエレメントが他のステージのメモリに書き込みを行った後、イベントコントローラを介して、前記他のステージにイベントを発生させることで行われる。これにより、ハードウェア面積を削減し、且つ処理速度の向上を図ることができる。
【００１４】
更に、データを書き込む方向毎に独立した２つのバスからなる双方向スロッテッドバスは、非特許文献１のような単方向リングバスに比較して、ソフトウェアのパイプライン処理を行うための構成をより柔軟に構築できる。したがって、同一のハードウェアを用いて多様なアルゴリズムを実現でき、ハードウェアリソースをより効率的に使用することで消費電力を低減することも可能になる。
【図面の簡単な説明】
【００１５】
【図１】第１実施形態であり、データ処理装置の構成を示す機能ブロック図
【図２】アクセスポイントの構成を示す図
【図３】イベントコントローラの構成を示す図
【図４】ＰＥの内部構成を中心に示す図
【図５】ＳＩＭＤモデルによるプログラミングの一例を示す図
【図６】ＰＥのコアの内部構成を中心に示す図
【図７】ホスト及びＰＥによる一連の処理を示すフローチャート
【図８】アクセステーブルの一例を示す図
【図９】ＥＡデータフォーマットの一例を示す図
【図１０】２つのＰＥがＭＡ及びＥＡを行う場合を示すタイミングチャート
【図１１】ＰＥがＭＡ及びＥＡを行う場合に出力される、バスアドレス空間上のアドレスを示す図（その１）
【図１２】ＰＥがＭＡ及びＥＡを行う場合に出力される、バスアドレス空間上のアドレスを示す図（その２）
【図１３】ＰＥがＭＡを行う場合に出力される、ＰＥアドレス空間上のアドレスを示す図
【図１４】ＰＥがＥＡを行う場合に出力される、ＰＥアドレス空間上のアドレスを示す図
【図１５】第２実施形態を示す図１相当図
【図１６】第３実施形態であり、データ処理装置によって処理されるアプリケーションの一例を示す図
【図１７】図１６に示すアプリケーションに対応して構成されたデータ処理装置を示す図
【図１８】第４実施形態を示す図１相当図
【発明を実施するための形態】
【００１６】
（第１実施形態）
図１に示すように、本実施形態のデータ処理装置は、複数のＤＳＰ（Digital Signal Processing）ステージ１（１，２，…，Ｎ）を、双方向のスロッテッドバス２（１，２，…，Ｎ−１）により接続した構成である。各ＤＳＰステージ１（データ処理ステージ）は、複数のＰＥ３（１，２，…，ｎ）と、ステージメモリ４と、イベントコントローラ（ＥＶＴＣ）５とを備えている。各ＰＥ３とステージメモリ４とは、データ読み出し専用バス６を介して接続されている。尚、ＰＥ３は、例えばＤＳＰで構成されている。
【００１７】
各ＤＳＰステージ１は、アクセスポイント７を介してスロッテッドバス２に接続されており、各ＰＥ３とアクセスポイント７とは、データ書き込み専用バス８を介して接続されている。また、アクセスポイント７とステージメモリ４とは、データ書き込み専用バス９を介して接続されている。スロッテッドバス２は、データを図中右方向に転送するための右方向バス２Ｒと、その右方向バス２Ｒとは独立して、データを図中左方向に転送するための左方向バス２Ｌとを備えている。
【００１８】
図２（ａ）に示すように、アクセスポイント７は、３つのデータ入力ポート及び３つのデータ出力ポートを備えており、それらに対応して３つの入力バッファ１１（Ｓ，Ｌ，Ｒ）及びデータラッチ１２（Ｓ，Ｌ，Ｒ）と、３つのマルチプレクサ１３（Ｓ，Ｌ，Ｒ）及び３つの出力バッファ１４（Ｓ，Ｌ，Ｒ）とを備えている。
【００１９】
ＤＳＰステージ１の書き込み専用バス８を介して入力されるデータは、入力バッファ１１Ｓを介してデータラッチ１２Ｓにラッチされ、データラッチ１２Ｓの出力端子は、３入力マルチプレクサ１３（Ｓ，Ｌ，Ｒ）の入力端子の１つに接続されている。図中の左側に接続されるスロッテッドバス２Ｒより入力されるデータは、入力バッファ１１Ｌを介してデータラッチ１２Ｌにラッチされ、データラッチ１２Ｌの出力端子は、右方向バス１５Ｒを介してマルチプレクサ１３（Ｓ，Ｌ，Ｒ）の入力端子の他の１つに接続されている。
【００２０】
図中の右側に接続されるスロッテッドバス２Ｌより入力されるデータは、入力バッファ１１Ｒを介してデータラッチ１２Ｒにラッチされ、データラッチ１２Ｒの出力端子は、左方向バス１５Ｌを介してマルチプレクサ１３（Ｓ，Ｌ，Ｒ）の入力端子の残りの１つに接続されている。そして、マルチプレクサ１３（Ｓ，Ｌ，Ｒ）の出力端子は、出力バッファ１４（Ｓ，Ｌ，Ｒ）の入力端子にそれぞれ接続されている。
【００２１】
出力バッファ１４（Ｓ，Ｌ，Ｒ）の出力端子は、ＤＳＰステージ１の書き込み専用バス９，アクセスポイント７の左側に接続される左方向バス２Ｌ，同右側に接続される右方向バス２Ｒにそれぞれ接続されている。尚、データラッチ１２のラッチ制御，マルチプレクサ１３の選択制御及び出力バッファ１４のイネーブル制御は、アクセスポイント７のデータ制御部（図示せず）によって行われる。入力されたデータを出力する方向は、当該データに付随するアドレスに応じて決定される。
【００２２】
以上の構成により、ＰＥ３が書き込み専用バス８に出力したデータは、マルチプレクサ１３Ｒ及び出力バッファ１４Ｒを介して右方向バス２Ｒに出力可能であり、また、マルチプレクサ１３Ｌ及び出力バッファ１４Ｌを介して左方向バス２Ｌに出力可能である。更に、マルチプレクサ１３Ｓ及び出力バッファ１４Ｓを介して、ＤＳＰステージ１の書き込み専用バス９にも出力可能であり、各ＰＥ３は、この経路で、自ＤＳＰステージ１のステージメモリ４にデータを書き込むことができる。
また、アクセスポイント７を介してデータを出力しようとした際に、他のステージ等が行う書込みとの衝突が発生した場合には、例えばラウンドロビンなどの調停方法により決定された優先順位に従い、データが順次出力される。
【００２３】
図２（ａ）に示すデータラッチ１２Ｓ，マルチプレクサ１３Ｒ及び１３Ｌは、図２（ｂ）に示すＴＸＣ（送信コントローラ）１６を構成しており、データラッチ１２Ｌ及び１２Ｒ，マルチプレクサ１３ＳはＲＸＣ（受信コントローラ）１７を構成している。また、ＴＸＣ１６はアクセステーブル１８に接続されており、ＲＸＣ１７は、書き込み専用バス１９を介してイベントコントローラ５に接続されている。尚、書き込み専用バス１９は、図１及び図２（ａ）では図示を省略している。
【００２４】
図３に示すように、イベントコントローラ５は、各ＰＥ３（１，２，…，ｎ）毎に設けられているＰＥイベント選択部２１（１，２，…，ｎ）と、完了イベントリスト部２２とを有しており、これらはそれぞれ同数のフリップフロップで構成されている。また、これらと同数のＮＡＮＤゲート２３があり、その入力端子の一方はＰＥイベント選択部２１側のフリップフロップの出力端子に接続され、入力端子の他方（負論理）は完了イベントリスト部２２側のフリップフロップの出力端子に接続されている。前記フリップフロップの入力端子は、図２（ｂ）に示すＲＸＣ１７と書き込み専用バス１９を介して接続されている。
【００２５】
そして、各ＮＡＮＤゲートの出力端子は、各ＰＥ３（１，２，…，ｎ）に対応した多入力ＡＮＤゲート２４（１，２，…，ｎ）の入力端子にそれぞれ接続されている。各ＡＮＤゲート２４（１，２，…，ｎ）の出力端子は、それぞれに対応して配置されているフリップフロップ２５（１，２，…，ｎ）の入力端子に接続されている。
【００２６】
各ＰＥ３がそれぞれタスクの処理を開始する際に、他のＰＥ３が先行して処理しているタスクの完了や、その他の外部イベントが完了している必要があるものを、予めＰＥイベント選択部２１により選択しておく。この選択は予め、後述するホストによって行われる。ここで選択されなかったイベントの出力はローレベルとなるから、対応するＮＡＮＤゲート２３の出力は、対応するイベントが完了せずともハイレベルとなる。一方、選択されたイベントの出力はローレベルとなるから、対応するＮＡＮＤゲート２３の出力は、対応するイベントが完了した際にハイレベルとなる。
【００２７】
したがって、ＰＥ３が予め選択したイベントの全てが完了すると、対応するＡＮＤゲート２４の出力がハイレベルとなり、フリップフロップ２５を介してＰＥ３にイベント開始（タスク開始イベント）が割り込みとして通知される。その通知を受けたＰＥ３は、自身が実行すべきタスクの処理を開始する。
【００２８】
図４に示すように、ＤＳＰステージ１には、各ＰＥ３に共通の命令メモリ（ＲＡＭ）３１があり、各ＰＥ３と命令メモリ３１とは、データ読み出し専用バス３２を介して接続されている。ＰＥ３は、内部にコア３３，ローカルデータメモリ（Ｄａｔａ  ＲＡＭ）３４，タスク制御レジスタ（Ｔａｓｋ  ＲＥＧ，タスク制御メモリ）３５を備えており、コア３３は読み出し専用バス３２に接続されている。
【００２９】
各ＰＥ３は、命令メモリ３１から同一のプログラムを読み出して実行するが、それぞれのタスクが処理すべきデータのアドレスなど、個別のタスク制御は、タスク制御レジスタ３５に格納されたレジスタ値に応じて行われる。例えば、タスク制御レジスタ３５にタスク番号を格納しておき、処理するデータを「OFFSET＋（タスク番号）」のアドレスからロードする。尚、「OFFSET」は配列の先頭アドレスである。
【００３０】
このようなプログラミングモデルは一般にＳＩＭＤ（Single Instruction Multiple Data）と呼ばれるもので、画像処理などの超並列処理に好適であり、ハードウェアの簡易化にも有効である。図５に示す一例では、TASK＿IDで示される自身のＩＤを、演算対象となる配列のインデックスに用いている。
【００３１】
図６に示すように、ＰＥ３のコア３３は、命令メモリ３１から命令バスインターフェイス（Ｉ／Ｆ）３６を介して命令をフェッチすると、命令デコーダ３７によりデコードする。コア３３は、基本命令セット（Base ISA）実行部３８（第１演算器）と、特定命令セット（Application Specific ISA）実行部３９（第２演算器）との２つの実行部を有しており、これら２つの実行部３８，３９に命令デコーダ３７のデコード結果に応じて命令が振り分けられる。特定命令セット実行部３９は、ＳＩＭＤ命令や、ＶＬＩＷ（Very Long Instruction Word）命令を実行する。また、汎用レジスタファイル（ＧＰＲＦ）４０とベクタレジスタファイル４１とが設けられており、汎用レジスタファイル４０は、実行部３８及び３９により共通に使用されるが、ベクタレジスタファイル４１は、実行部３９のみにより参照される。
【００３２】
基本命令セット実行部３８は、データバスインターフェイス４２を介してローカルデータメモリ３４，タスク制御レジスタ（Task Ctrl I/O）３５及びイベント制御レジスタ４３にアクセスするが、これらの間を接続するローカルデータバス４４（第１データバス）のサイズは３２ビットである。特定命令セット実行部３９は、ステージメモリインターフェイス４５を介してステージメモリ４にアクセスするが、読み出し専用バス６及び書き込み専用バス８（第２データバス）のサイズは１２８ビットである。
【００３３】
また、特定命令セット実行部３９は、データバスインターフェイス４２を介してローカルデータメモリ３４等にもアクセスする。更に、特定命令セット実行部３９は、ライトバッファ４６，スロッテッドバスインターフェイス４７及びアクセスポイント７を介してスロッテッドバス２にアクセスする。スロッテッドバス２のサイズも１２８ビットである。そして、イベントコントローラ５が発生させるイベント完了割り込みは、コア３３の割り込み（ＩＮＴＲ）インターフェイス４８に入力される。
【００３４】
次に、本実施形態の作用について説明する。図７における「ホスト」は、図１に示す「外部モジュール」に相当するもので、各ＤＳＰステージ１におけるＰＥ３によるタスクの実行を統括的に制御する。ホストは、各ＤＳＰステージ１のイベントコントローラ５について、各ＰＥ３に対応するＰＥイベント選択部２１により完了待ちするイベントを選択する（Ｈ１）。続いて、各ＤＳＰステージ１の命令メモリ３１にプログラムをロードし（Ｈ２）、ステージメモリ４にデータを入力し（Ｈ３）、タスク制御レジスタ３５にレジスタ値をロードする（Ｈ４）。
【００３５】
各ＰＥ３は、それぞれのタスクの実行を開始するイベントの条件が成立するまで待機している（Ｐ１）。選択された他のＰＥ３及び／又は外部からの完了イベントが全て発生することで、自身に対してＰＥ開始イベントの割り込みが発生すると（ＹＥＳ）、当該ＰＥ３は自身に割り当てられたタスクの実行を開始する（Ｐ２）。そして、そのタスクの実行を完了すると、タスク完了イベントを発生させる。
【００３６】
前記イベントの発生は、ホストに対して通知される。するとホストは、イベントを発生させたＰＥ３が次に処理すべきタスクがあるか否かを判断し（Ｈ５）、次のタスクがあれば（ＹＥＳ）ステップＨ４に戻り、次に処理すべきタスクを示すレジスタ値を対応するタスク制御レジスタ３５にロードする。一方、次に処理すべきタスクが無ければ（ＮＯ）、対応するＤＳＰステージ１のＰＥ３が次に実行すべきプログラムがあるか否かを判断する（Ｈ６）。前記プログラムがあれば（ＹＥＳ）、対応するＤＳＰステージ１内の全てのＰＥ３がそれぞれのタスクの実行を完了するまで待機し（Ｈ７）、その後ステップＨ２に戻って次のプログラムをロードする。前記プログラムが無ければ（ＮＯ）終了となる。以上が、データ処理装置による一連の処理の流れである。
【００３７】
次に、各ＰＥ３によるステージメモリ４へのメモリアクセス（以下、ＭＡと称す），及びイベントアクセス（以下、ＥＡと称す）について説明する。ＰＥ３は、データを書き込む対象のステージメモリ４にＭＡを行いデータを書き込んだ後にＥＡを行う。図８に示すように、アクセステーブル１８では、ＤＳＰステージ１の番号（１〜Ｎ）とＰＥ３の番号（１〜Ｍ）とのマトリクスが構成されている。例えばＰＥ３（１）がＤＳＰステージ１のメモリ４にアクセスすると、対応するマトリクス要素のフラグが「１」にセットされる。その後、ＰＥ３（１）がＥＡを行うと、前記フラグはＴＸＣ１６により「０」にクリアされる。
【００３８】
ＰＥ３は、予め割り付けられている特定のアドレスに書き込みを行うことでＥＡを実行する。すると、ＴＸＣ１６はアクセステーブル１８を参照し、対応するＰＥ３がその時点までに何れのステージメモリ４にアクセスを行っているかに応じて、図９に示すフォーマットのＥＡデータを発行する。ＥＡデータは例えば３２ビット構成であり、ＭＳＢ側の８ビットでＤＳＰステージ１の番号（１〜Ｎ）を指定し、残りの２４ビットでイベントを発生させるＰＥ３や完了イベントの種類を指定する。すると、対応するＤＳＰステージ１のイベントコントローラ５において、対応するＰＥ３の完了イベントリスト部２２の１つにイベントフラグがセットされる。
【００３９】
例えば図１０に示すように、先ずＰＥ３（２）がＤＳＰステージ１（１）のメモリ４にＭＡを行い、次にＰＥ３（１）が同じステージメモリ４にＭＡを行い、続いてＰＥ３（２）が同じステージメモリ４にＭＡを行っており、その後ＰＥ３（２）がＥＡを行うと、属するＤＳＰステージ１のＴＸＣ１６がアクセステーブル１８を参照する。すると、その時点までにＰＥ３（２）がＭＡを行っていたのはＤＳＰステージ１（１）であることが判るので、ＴＸＣ１６は、ＤＳＰステージ１（１）に対してＥＡを行う（ＥＡデータを発行する）。その結果、ＤＳＰステージ１（１）のイベントコントローラ５における、対応するＰＥ３の完了イベントリスト部２２の１つにイベントフラグがセットされる。その後、ＰＥ３（１）がＥＡを行うと、上記ＰＥ３（２）のケースと同様に処理される。
【００４０】
図１１に示すように、ＰＥ３（１）がＤＳＰステージ１（１）のメモリ４にＭＡを行うと、ＴＸＣ１６を介して前記メモリ４に対する書き込みアドレス（バスアドレス空間上のアドレス）が出力され、その後ＰＥ３（１）がＥＡを行うと、ＴＸＣ１６によりＤＳＰステージ１（１）のイベントコントローラ５にアクセスするためのアドレスが出力される。また、図１２に示すように、ＰＥ３（１）がＤＳＰステージ１（１）のメモリ４と、ＤＳＰステージ１（２）のメモリ４とにＭＡを行うと、ＴＸＣ１６を介してＤＳＰステージ１（１），１（２）それぞれのメモリ４に対する書き込みアドレスが出力され、その後ＰＥ３（１）がＥＡを行うと、ＴＸＣ１６によりＤＳＰステージ１（１），１（２）それぞれのイベントコントローラ５にアクセスするためのアドレスが出力される。
【００４１】
図１３に示すように、図１１に示すケースでＤＳＰステージ１（１）のメモリ４に対する書き込みアドレスが出力されると、ＤＳＰステージ１（１）のＲＸＣ１７を介して、前記メモリ４にデータの書き込みが行われる。また、ＤＳＰステージ１（１）に対するＥＡが行われると、図１４に示すように、前記ＲＸＣ１７を介して、ＤＳＰステージ１（１）のイベントコントローラ５における完了イベントリスト部２２の１つに、イベントフラグがセットされる。
【００４２】
以上のように本実施形態によれば、各ＤＳＰステージ１に、複数のＰＥ３，ステージメモリ４及びイベントコントローラ５を備え、複数のＤＳＰステージ１間をスロッテッドバス２により接続する。自ＤＳＰステージ１内において、ＰＥ３とステージメモリ４とを読み出し専用バス６で接続し、ＰＥ３とスロッテッドバス２とを書き込み専用バス８で接続する。イベントコントローラ５には、ＰＥ３からの処理完了イベント及び外部において発生した外部イベントが入力される。そして、イベントコントローラ５は、入力される各イベントに応じて、自ＤＳＰステージ１内のＰＥ３に対してタスク開始イベントを発生させる。
【００４３】
ＰＥ３は、ＤＳＰステージ１内では読み出し専用バス６を介してステージメモリ４から処理対象のデータを読み出して処理し、処理済みのデータを書き込み専用のスロッテッドバス２を介して他のＤＳＰステージ１のメモリ４に書き込むので、ＰＥ３−メモリ４間のデータ転送方向が固定化されている。また、メモリ４のコヒーレンシ管理は、各ＰＥ３が他のＤＳＰステージ１のメモリ４に書き込みを行った後、アクセスポイント７及びイベントコントローラ５を介して前記他のＤＳＰステージ１にイベントを発生させることで行われる。これにより、ハードウェア面積を削減し、且つ処理速度の向上を図ることができる。
【００４４】
更に、データを書き込む方向毎に独立した２つのバス２Ｌ，２Ｒからなる双方向スロッテッドバス２は、非特許文献１のような単方向リングバスに比較して、ソフトウェアのパイプライン処理を行うための構成をより柔軟に構築できる。したがって、同一のハードウェアを用いて多様なアルゴリズムを実現でき、ハードウェアリソースをより効率的に使用することで消費電力を低減することも可能になる。
【００４５】
また、複数のＰＥ３について共通の命令メモリ３１を設けると共に、各ＰＥ３について個別にローカルデータメモリ３４を設け、各ＰＥ３において実行されるタスクを個別に制御するためのタスク制御レジスタ３５を備えた。これにより、ＳＩＭＤプログラミングモデルを導入して、画像データ等の処理に最適なプログラミングを行うことができる。
【００４６】
そして、ＰＥ３は、１つの命令について１つのデータを処理する基本命令セット実行部３８と、１つの命令について複数のデータを並列に処理する特定命令セット実行部３９とを備え、基本命令セット実行部３８を、ローカルデータメモリ３４にローカルデータバス４４を介して接続し、特定命令セット実行部３９を、前記メモリ３４にローカルデータバス４４を介して接続すると共に、スロッテッドバス２に、ローカルデータバス４４よりもバス幅が広い書き込み専用バス８を介して接続した。これにより、回路面積の増大を抑制しつつ、特定命令セット実行部３９による処理速度の向上を図るように、両者のバランスを適切に取ることができる。
【００４７】
（第２実施形態）
以下、第１実施形態と同一部分には同一符号を付して説明を省略し、異なる部分について説明する。図１５に示すように、第２実施形態では、アクセスポイント７に外部アクセスポイント５１を介して外部リンクバス５２（外部接続バス）が接続されている。外部リンクバス５２には、外部モジュールとしてのホスト５３が接続されている。外部アクセスポイント５１は、入力バッファ５４Ｌ及び５４Ｓ，出力バッファ５５Ｒ及び５５Ｓを備えており、入力バッファ５４Ｌ及び５４Ｓの出力端子は出力バッファ５５Ｒ及び５５Ｓの入力端子に接続されている。
【００４８】
ホスト５３のデータ出力ポートは、外部アクセスポイント５１（１）の入力バッファ５４Ｌの入力端子に接続されており、ホスト５３のデータ入力ポートは、外部アクセスポイント５１（Ｎ）の出力バッファ５５Ｒの出力端子に接続されている。すなわち、外部リンクバス５２は、図中左方向から右方向にデータが転送される単方向バスであり、ホスト５３は、外部アクセスポイント５１及び外部リンクバス５２を介して、各ＤＳＰステージ１のメモリ４等にデータを書き込んだり、ＰＥ３より出力されたデータを受信することができる。
この場合、ホスト５３については、スロッテッドバス２のアクセス権を例えば最上位に設定したり、各ＤＳＰステージ１のＰＥ３と同様にラウンドロビン方式でアクセス権を付与しても良い。
【００４９】
以上のように第２実施形態によれば、ＤＳＰステージ１に、外部への書き込みデータ及び外部からの書き込みデータを転送するための外部リンクバス５２を接続した。具体的には、外部リンクバス５２を、外部アクセスポイント５１を介してスロッテッドバス２に接続するようにした。これにより、データ処理装置の構成を拡張したり、各ＤＳＰステージ１におけるタスクの実行をホスト５３により統括的に制御することができる。
【００５０】
（第３実施形態）
本実施形態のデータ処理装置により、例えば図１６に示すように、イメージセンサなどにより得られた距離画像データについて（１）ノイズを除去して補正した後、（２）その画像データに含まれている立体物を検出し、（３）検出した立体物が移動している場合にはその追跡を行う、といった処理を行うことを想定する。このような処理（１）〜（３）を行う際には、各処理を担当するＤＳＰステージ１に搭載するＰＥ３の構成を、各処理に適合したものにすることで処理効率を向上させることができる。
【００５１】
図１７に示すように、処理（１）〜（３）に対応した３つのＤＳＰステージ６１（１）〜６１（３）があり、それぞれに搭載されるＰＥ３は、それぞれ異なる構成のコア３３Ａ，３３Ｂ，３３Ｃを備えている。何れのコア３３も、基本命令セット実行部３８は共通であるが、特定命令セット実行部３９に替わる拡張命令実行部６２（第２演算部）の構成が、それぞれ６２Ａ，６２Ｂ，６２Ｃと異なっている。
【００５２】
ＤＳＰステージ６１（１）のコア３３Ａは、ノイズ除去処理において単純なフィルタの演算を繰り返し実行するため、拡張命令実行部６２Ａが、積和（ＭＡＣ）演算を実行すると共にフィルタの係数を参照するための循環アドレッシング（Circular Addressing）を行うための構成やループバッファを備えている。ＤＳＰステージ６１（２）のコア３３Ｂが行う立体物検出処理では、ＳＩＭＤ演算による並列化が困難な部分が多いため、ＶＬＩＷによる複数命令を実行することで高速化を図ることが有効である。
【００５３】
また、ＤＳＰステージ６１（３）のコア３３Ｃが行う移動物追跡処理では、カルマンフィルタ演算等に対応した各種行列命令が実行可能にすることで高速化を図ることができる。これはアプリケーションに応じてそれぞれのＰＥを特化させた所謂ヘテロジニアス構成となっている。
【００５４】
以上のように第３実施形態によれば、ＤＳＰステージに６１（１）〜６１（３）それぞれ搭載するＰＥ３のコア３３を、各ステージ６１における処理特性に応じて異なるアーキテクチャを持つように構成にしたので、適用するアプリケーションに応じて処理効率を向上させることができる。
【００５５】
（第４実施形態）
第４実施形態では、図１８に示すように、各ＤＳＰステージ１に接続されるアクセスポイント７１の構成が全て同一ではなく、各ＤＳＰステージ１の処理特性に対応して予め最適化されている。例えば、図中の左端に位置するアクセスポイント７１（１）は、入力バッファ１１Ｌ，出力バッファ１４Ｌ，データラッチ１２Ｌ，マルチプレクサ１３Ｌを備えておらず、入力バッファ１１Ｒを介して入力されたデータは、ＤＳＰステージ１（１）に入力されるか、出力バッファ１４Ｒを介して折り返し右方向に出力されるようにループパス７２Ｌを構成している。尚、図１８に示すアクセスポイント７１ではバッファのみ図示しており、データラッチ１２及びマルチプレクサ１３の図示を省略している。
【００５６】
その右隣に位置するアクセスポイント７１（２）は、入力バッファ１１Ｌ，出力バッファ１４Ｒ，データラッチ１２Ｌ，マルチプレクサ１３Ｒを備えておらず、左方向から入力されたデータは、そのまま右方向に出力されるようになっている。そして、入力バッファ１１Ｓを介して入力されたデータは左方向バス１５Ｌのみに出力され、出力バッファ１４Ｓの入力端子は左方向バス１５Ｌのみに接続されている。次のアクセスポイント７１（３）は、アクセスポイント７と同じ構成である。
【００５７】
次のアクセスポイント７１（４）は、アクセスポイント７１（２）とは逆に、入力バッファ１１Ｒ，出力バッファ１４Ｌ，データラッチ１２Ｒ，マルチプレクサ１３Ｌを備えておらず、右方向から入力されたデータは、そのまま左方向に出力されるようになっている。そして、入力バッファ１１Ｓを介して入力されたデータは左方向バス１５Ｒのみに出力され、出力バッファ１４Ｓの入力端子は左方向バス１５Ｒのみに接続されている。
【００５８】
図中の右端に位置するアクセスポイント７１（Ｎ）は、入力バッファ１１Ｒ，出力バッファ１４Ｒ，データラッチ１２Ｒ，マルチプレクサ１３Ｒを備えておらず、入力バッファ１１Ｌを介して入力されたデータは、ＤＳＰステージ１（Ｎ）に入力されるか、出力バッファ１４Ｌを介して折り返し左方向に出力されるようにループパス７２Ｒを構成している。したがって、アクセスポイント７１を介して接続されているスロッテッドバス２は、リングバスを構成している。
【００５９】
以上のように構成される第４実施形態によれば、一端側に配置されるＤＳＰステージ１（１）のアクセスポイント７１（１）に、隣接するアクセスポイント７１（２）より入力されたデータを、当該アクセスポイント７１（２）に折り返して出力するためのループパス７２Ｌを備える。また、他端側に配置されるＤＳＰステージ１（Ｎ）のアクセスポイント７１（Ｎ）に、隣接するアクセスポイント７１（Ｎ−１）より入力されたデータを、当該アクセスポイント７１（Ｎ−１）に折り返して出力するためのループパス７２Ｒを備える。そして、両者の間に配置されるＤＳＰステージ１（２）〜１（Ｎ−１）のアクセスポイント７１（２）〜７１（Ｎ−１）は、対応するステージ（２）〜１（Ｎ−１）に、スロッテッドバス２を介して双方向に転送されるデータを入出力させるか、又は何れか一方向にのみ転送されるデータを入出力させるかが予め選択されている構成とした。
【００６０】
これにより、アプリケーションに特化したバスアーキテクチャを採用することができ、回路規模の増大を抑制すると共に、データ転送効率を向上させることができる。また、アクセスポイント７１（３）においては、必要に応じてデータのループパスを形成し、データを右方向，左方向の何れも折り返して転送させることができる。したがって、アプリケーションに応じて、データの転送形態を柔軟に変更でき、転送効率を更に改善することができる。
【００６１】
本発明は上記した、又は図面に記載した実施形態にのみ限定されるものではなく、以下のような変形又は拡張が可能である。
各ＤＳＰステージ１に、ＰＥ３は少なくとも１つあれば良い。また、ステージメモリ４を２つ以上備えても良い。
ローカルデータバス４４と、読み出し専用バス６及び書き込み専用バス８とのサイズは同じであっても良い。
また、ＰＥのコアには、必ずしも２つの実行部３８及び３９を備える必要はない。
外部イベントは、ホスト５３が発生させるイベントに限ることはない。
外部リンクバス５２は、スロッテッドバス２に接続する必要はなく、各ＤＳＰステージ１に別途直接接続されていても良い。
また、ホスト５３は、必ずしも外部リンクバス５２を介して接続される外部モジュールである必要はなく、スロッテッドバス２に接続されているＤＳＰステージ１の１つが、ホスト５３の機能を実行しても良い。
イベントを通知する方式については、ＴＸＣ１６がアクセステーブル１８を参照して対象とするＤＳＰステージ１にアクセスを行うものに限らず、各ＰＥ３がそれぞれＭＡを行ったＤＳＰステージ１に対して個別にＥＡを行っても良い。
【符号の説明】
【００６２】
図面中、１はＤＳＰステージ（データ処理ステージ）、２はスロッテッドバス、３はプロセッシングエレメント、４はステージメモリ、５はイベントコントローラ、６はデータ読み出し専用バス、７はアクセスポイント、８はデータ書き込み専用バス（第２データバス）、３１は命令メモリ、３４はローカルデータメモリ、３５はタスク制御レジスタ（タスク制御メモリ）、３８は基本命令セット実行部（第１演算器）、３９は特定命令セット実行部（第２演算器）、４４はローカルデータバス（第１データバス）を示す。
【図１】
2015179409.tif 000003
【図２】
2015179409.tif 000004
【図３】
2015179409.tif 000005
【図４】
2015179409.tif 000006
【図５】
2015179409.tif 000007
【図６】
2015179409.tif 000008
【図７】
2015179409.tif 000009
【図８】
2015179409.tif 000010
【図９】
2015179409.tif 000011
【図１０】
2015179409.tif 000012
【図１１】
2015179409.tif 000013
【図１２】
2015179409.tif 000014
【図１３】
2015179409.tif 000015
【図１４】
2015179409.tif 000016
【図１５】
2015179409.tif 000017
【図１６】
2015179409.tif 000018
【図１７】
2015179409.tif 000019
【図１８】
2015179409.tif 000020