(57)【要約】  データパス手段では、プロセッサエレメントがコンピュータプログラムに記述されている命令コードに対応してデータ処理を個々に実行し、スイッチエレメントが命令コードに対応して複数のプロセッサエレメントの接続関係を個々に切換制御する。スレーブメモリ手段は、データパス手段から外部メモリへのアクセスが発生したとき、そのアクセスを遅延実行するためのアクセス情報を一時保持しつつタスク切替のイベントデータを発生させ、アクセスをデータパス手段に代わって実行する。タスク切替手段は、スレーブメモリ手段でタスク切替のイベントデータが発生すると、データパス手段により実行されるタスクを切り替える。
2008087779.tif 000002
【特許請求の範囲】
【請求項１】
複数のタスクを有するコンピュータプログラムを実行するアレイ型プロセッサであって、
複数のプロセッサエレメントおよび複数のスイッチエレメントがマトリクス配列されており、前記プロセッサエレメントは、前記コンピュータプログラムに記述されている命令コードに対応してデータ処理を個々に実行し、前記スイッチエレメントは、前記命令コードに対応して複数の前記プロセッサエレメントの接続関係を個々に切換制御する、データパス手段と、
前記データパス手段から外部メモリへのアクセスが発生したとき、該アクセスを遅延実行するためのアクセス情報を一時保持しつつタスク切替のイベントデータを発生させ、該アクセスを前記データパス手段に代わって実行するスレーブメモリ手段と、
前記スレーブメモリ手段で前記タスク切替のイベントデータが発生すると、前記データパス手段により実行されるタスクを切り替えるタスク切替手段と、
を有しているアレイ型プロセッサ。
【請求項２】
前記スレーブメモリ手段は、前記データパス手段から外部メモリへのアクセスが発生したとき、該アクセスを即時実行できるときには即時実行し、該アクセスを即時実行できないときに、該アクセスに関するデータを一時保持しつつ前記タスク切替のイベントデータを発生させる、請求項１に記載のアレイ型プロセッサ。
【請求項３】
前記スレーブメモリ手段は、前記データパス手段からの前記アクセスの種類を判断するメモリアクセス判断手段と、前記データパス手段からのメモリリードのアクセス情報を一時保持する先入れ先出しメモリと、前記先入れ先出しメモリからの出力されるアクセス情報に従ってメモリリードを実行するメモリ補充手段と、前記メモリ補充手段による前記メモリリードで取得されたリードデータを一時保持するリードデータメモリと、を有し、
前記メモリアクセス判断手段は、前記データパス手段からの前記アクセスがメモリライトのとき該アクセスを即時実行し、前記データパス手段からのアクセスがメモリリードでかつアクセス先のアドレスのデータが前記リードデータメモリに保持されているとき前記リードデータメモリから該アドレスのデータを読み出して前記データパス手段に出力し、前記データパス手段からのアクセスがメモリリードであるがアクセス先のアドレスのデータが前記リードデータメモリに保持されていないとき、該アクセスのアクセス情報を前記先入れ先出しメモリに入力するとともに前記タスク切替のイベントデータを発生させ、
前記メモリ補充手段は、メモリリードを実行することによりリードデータを取得するとともに前記タスク切替のイベントデータを発生させる、
請求項１に記載のアレイ型プロセッサ。
【請求項４】
前記データパス手段の動作状態を管理しており、該動作状態毎の前記命令コードからなるコンテキストを、前記命令コードと適宜入力されるイベントデータとに対応して、前記動作状態毎に順次遷移させる状態管理手段を更に有し、
前記データパス手段は、前記状態管理手段により前記動作状態毎に順次遷移する前記コンテキストに従ってデータ処理を実行する、請求項１に記載のアレイ型プロセッサ。
【請求項５】
前記スレーブメモリ手段は、メモリリードのアクセス情報を一時保持しようとしたとき、該アクセス情報を保持できなければ、メモリ満杯のイベントデータを発生させ、
前記タスク切替手段は、前記スレーブメモリ手段で前記メモリ満杯のイベントデータが発生すると、前記メモリ満杯のイベントデータが解除されるまで前記データパス手段および前記状態管理手段を停止させる、請求項４に記載のアレイ型プロセッサ。
【請求項６】
前記タスク切替手段は、
前記スレーブメモリ手段でタスク切替のイベントデータが発生すると、前記状態管理手段および前記データパス手段の動作を停止させ、前記状態管理手段から動作状態を取得し、前記データパス手段から処理データを取得する動作停止制御手段と、
前記動作停止制御手段により、前記状態管理手段から取得された動作状態と、前記データパス手段から取得された処理データとを、タスク毎に一時保持するタスクテーブルと、
前記動作停止制御手段により停止した前記状態管理手段および前記データパス手段によって実行できるタスクを前記タスクテーブルから選択し、該タスクテーブルに一時保持されている該タスクの動作状態を前記状態管理手段に設定し、該タスクの処理データを前記データパス手段に設定し、前記状態管理手段および前記データパス手段の動作を開始させる動作開始制御手段と、を有している請求項４に記載のアレイ型プロセッサ。
【請求項７】
前記スレーブメモリ手段は、メモリリードとメモリライトとに異なる優先度を付与しておき、前記データパス手段からの前記外部メモリへのアクセスがメモリリードとメモリライトのいずれであっても該アクセスのアクセス情報を一時保持し、優先度の高いアクセスから優先的に実行する、請求項１に記載のアレイ型プロセッサ。
【請求項８】
前記データパス手段および前記スレーブメモリ手段は前記外部メモリへのアクセスをブロック単位で実行する、請求項１に記載のアレイ型プロセッサ。
【請求項９】
前記スレーブメモリ手段が複数あり、少なくともいずれか１個のスレーブメモリ手段はメモリライト専用である、請求項１に記載のアレイ型プロセッサ。
【請求項１０】
前記スレーブメモリ手段と、前記状態制御手段およびデータパス手段とが互いに非同期のクロックで動作する、請求項１に記載のアレイ型プロセッサ。
【請求項１１】
前記スレーブメモリ手段は、前記外部メモリへのアクセスの頻度に応じて動作クロックの速度を変化させる、請求項１０に記載のアレイ型プロセッサ。
【請求項１２】
複数のプロセッサエレメントおよび複数のスイッチエレメントがマトリクス配列されており、前記プロセッサエレメントは、前記コンピュータプログラムに記述されている命令コードに対応してデータ処理を個々に実行し、前記スイッチエレメントは、前記命令コードに対応して複数の前記プロセッサエレメントの接続関係を個々に切換制御する、データパス手段と、前記データパス手段から外部メモリへのアクセスが発生したとき、該アクセスを遅延実行するためのアクセス情報を一時保持しつつタスク切替のイベントデータを発生させ、該アクセスを前記データパス手段に代わって実行するスレーブメモリ手段と、前記スレーブメモリ手段で前記タスク切替のイベントデータが発生すると、前記データパス手段により実行されるタスクを切り替えるタスク切替手段と、を有し、複数のタスクを有するコンピュータプログラムを実行するアレイ型プロセッサと、
前記アレイ型プロセッサの実行する前記コンピュータプログラムを記憶したプログラムメモリと、
を有するデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアに対応してハードウェア構成が変更可能なアレイ型プロセッサを有するデータ処理装置に関する。
【背景技術】
【０００２】
現在、各種のデータ処理を自在に実行できるプロセッサユニットとしては、いわゆるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）と言われる製品が実用化されている。このようなプロセッサユニットを利用したデータ処理システムでは、複数の動作命令が記述された各種のオブジェクトコードと各種の処理データとがメモリデバイスに格納される。プロセッサユニットはメモリデバイスから複数の動作命令や処理データを順番に読出し、動作命令に従ったデータ処理を逐次実行する。この種のデータ処理システムは１個のプロセッサユニットで各種のデータ処理を実現できる。【０００３】
しかし、この種のデータ処理システムは複数のデータ処理を順番に逐次実行する。その際、逐次処理毎にプロセッサユニットがメモリデバイスから動作命令を読出す必要があるので、複雑なデータ処理を高速に実行することが困難であった。【０００４】
一方、実行すべきデータ処理が１種類に限定され、各種のデータ処理を自在に実行できる必要がない場合、そのデータ処理の実行に適した論理回路をハードウェアで形成することができる。そうすれば、プロセッサユニットがメモリデバイスから複数の動作命令を順番にデータ読出して複数のデータ処理を順番に逐次実行するような必要がない。それ故、この構成によれば複雑なデータ処理を高速に実行することが可能である。しかし当然ながら、この構成では実行できるデータ処理は１種類に限られる。【０００５】
以上のことから、各種のデータ処理を実行でき、かつそのデータ処理を高速で行うことのできるデータ処理装置の実現が望まれている。そして、それを実現するために、プロセッサユニットに複数のプロセッサエレメントを備え、ソフトウェアに対応してプロセッサユニットのハードウェア構成を変化させることのできるアレイ型プロセッサを有するデータ処理装置が提案されている。【０００６】
アレイ型プロセッサは、小規模の多数のプロセッサエレメントおよびスイッチエレメントがマトリクス配列されたデータパス部を有し、このデータパス部に並んで状態管理部が配置（並設）されている。複数のプロセッサエレメントは、個々に設定される動作命令に対応してデータ処理を個々に実行する。複数のスイッチエレメントは、個々に設定される動作命令に対応して複数のプロセッサエレメントの接続関係を個々に切換制御する。【０００７】
このように、アレイ型プロセッサは、複数のプロセッサエレメントと複数のスイッチエレメントとの動作命令を切り換えることでハードウェアの構成を変化させるので、各種のデータ処理を自在に実行することができる。また、アレイ型プロセッサは、ハードウェアとして小規模の多数のプロセッサエレメントが簡単なデータ処理を並列に実行するので、全体では複雑なデータ処理を高速に実行することができる。【０００８】
そして、上述のような複数のプロセッサエレメントと複数のスイッチエレメントとの動作命令からなるコンテキストを状態管理部がオブジェクトコードに対応して動作サイクル毎に順次切り換える。それ故、アレイ型プロセッサはオブジェクトコードに対応して並列処理を連続的に実行することができる。以下に示す文献１〜８が参照される。
文献１（特許３２６９５２６号公報）
文献２（特開２０００−１３８５７９号公報）
文献３（特開２０００−２２４０２５号公報）
文献４（特開２０００−２３２３５４号公報）
文献５（特開２０００−２３２１６２号公報）
文献６（特開２００３−０７６６６８号公報）
文献７（特開２００３−０９９４０９号公報）
文献８（“Ｉｎｔｒｏｄｕｃｔｉｏｎ  ｔｏ  ｔｈｅ  Ｃｏｎｆｉｇｕｒａｂｌｅ，  Ｈｉｇｈｌｙ  Ｐａｒａｌｌｅｌ  Ｃｏｍｐｕｔｅｒ”、  Ｌａｗｒｅｎｃｅ  Ｓｎｙｄｅｒ著、Ｐｕｒｄｕｅ  Ｕｎｉｖｅｒｓｉｔｙ、“ＩＥＥＥ  Ｃｏｍｐｕｔｅｒ，  ｖｏｌ．１５，  Ｎｏ．１，  Ｊａｎ．  １９８２，  ｐｐ４７−５６”）
さらに、複数のデータ処理装置が並列に接続され、煩雑なデータ処理を分担するデータ処理システムも実用化されている。そのようなシステムには、同一構造の複数のデータ処理装置を接続した同種結合タイプと、構造が相違する複数のデータ処理装置を接続した異種結合タイプとがある。【０００９】
同種結合タイプのデータ処理システムでは、１つのデータ処理を同一構造の複数のデータ処理装置で分担するので、高い並列度でデータ処理を実行することができる。一方、異種結合タイプのデータ処理システムでは、１つのデータ処理を複数種類のデータ処理装置で分担するので、データ処理装置の各々に得意なデータ処理を実行させることができる。上述のような異種結合タイプのデータ処理システムとして、一般的なＭＰＵとアレイ型プロセッサとを混載したものがある。本出願人による、文献９（国際公開ＷＯ２００５／００１６８９）が参照される。【００１０】
また、このアレイ型プロセッサのオブジェクトコードをソースコードから適切に生成する方法も知られている。文献７が参照される。ここでいうオブジェクトコードは、アレイ型プロセッサのコンテキストとそのコンテキストを動作サイクル毎に順次切り替えて動作させるためのコードである。【００１１】
また、複数のコンピュータプログラムに対応した処理動作を疑似的に並列実行できるアレイ型プロセッサが本出願人により提案されている。文献１０（特開２００５−２２２１４１号公報）が参照される。また、コンピュータプログラムのデータ容量が記憶容量を超過していても、そのコンピュータプログラムに対応した動作を実行できるアレイ型プロセッサが本出願人により提案されている。文献１１（特開２００５−２２２１４２号公報）が参照される。
【発明の開示】
【００１２】
上述のようなアレイ型プロセッサを実際に使用する場合、アレイ型プロセッサ内で一時保持する中間データ以外の全てのデータは、システムバスなどでアレイ型プロセッサに接続された外部メモリなどに保持される。外部メモリなどに保持されるデータには、アレイ型プロセッサが処理すべきデータ、処理後のデータ、その処理のオブジェクトコードであるコンピュータプログラムが含まれる。アレイ型プロセッサが外部メモリからデータを読み出すときに遅延（リードレイテンシ）が発生する。その結果、プロセッサエレメントが外部メモリからの応答を待つ時間が長くなり、プロセッサエレメントの稼働率が悪化してしまう。
【００１３】
これを防止するために、例えば、バーストアクセスによりメモリの連続したアドレスを次々とアクセスする手法がある。これによればリードレイテンシによる遅延の影響を緩和できる。しかし、バーストメモリは連続したアドレスへのアクセスでは有効であるが、アドレスが連続しないランダムアクセスでは全く効果がない。
【００１４】
また、アクセスしたい外部メモリがバス接続であれば、バス所有権獲得などによりリードレイテンシが固定ではなく、かつそのリードレイテンシが大きい場合が多い。このレイテンシが不定（不定レイテンシ）のメモリアクセスが完了するのを待っている間、他に並列動作可能なデータ処理はメモリアクセスと同期を取るために停止（ストール）する必要がある。その結果としてアレイ型プロセッサのプロセッサエレメントの稼働率が著しく低下する場合がある。
【００１５】
図１は、不定レイテンシメモリリードを含む一連の処理の一例を示す状態遷移である。不定レイテンシメモリリードを含む一連の処理が図１に示すような状態遷移で表されるようなコンピュータプログラムがあるとする。そのコンピュータプログラムを実行する場合、処理Ａ３にて、不定レイテンシのメモリリードが完了するのを待つことが必要となる。
【００１６】
図２は、図１に示した処理のシーケンシャルな実行を示すタイムチャートである。この図から分かるように、アレイ型プロセッサは、時間Ｔ１００、時間Ｔ１０１、および時間Ｔ１０２において処理Ａ３のメモリリードが完了するのを待つ処理だけを実行する。時間Ｔ１０３にてメモリリードが完了すると処理Ａ４が可能となる。このように、アレイ型プロセッサは、不定レイテンシのメモリリードの応答を待つ間は、それ以外の処理をすることができない。そのためプロセッサエレメントの稼働率が低下することにより処理性能が著しく低下してしまう。
【００１７】
本発明の一目的は、アレイ型プロセッサのプロセッサエレメントの稼働率を改善したアレイ型プロセッサを提供することである。
【００１８】
上記目的を達成するために、本発明の一態様によるアレイ型プロセッサは、複数のタスクを有するコンピュータプログラムを実行するアレイ型プロセッサであって、
複数のプロセッサエレメントおよび複数のスイッチエレメントがマトリクス配列されており、前記プロセッサエレメントは、前記コンピュータプログラムに記述されている命令コードに対応してデータ処理を個々に実行し、前記スイッチエレメントは、前記命令コードに対応して複数の前記プロセッサエレメントの接続関係を個々に切換制御する、データパス手段と、
前記データパス手段から外部メモリへのアクセスが発生したとき、該アクセスを遅延実行するためのアクセス情報を一時保持しつつタスク切替のイベントデータを発生させ、該アクセスを前記データパス手段に代わって実行するスレーブメモリ手段と、
前記スレーブメモリ手段で前記タスク切替のイベントデータが発生すると、前記データパス手段により実行されるタスクを切り替えるタスク切替手段と、
を有している。
【図面の簡単な説明】
【００１９】
【図１】不定レイテンシメモリリードを含む一連の処理の一例を示す状態遷移である。
【図２】図１に示した処理のシーケンシャルな実行を示すタイムチャートである。
【図３】本実施形態によるデータ処理システム１０００の構成を示すブロック図である。
【図４】アレイ型プロセッサのデータパス部の構造を示す回路構成図である。
【図５】プロセッサエレメントおよびスイッチエレメントの構成を示すブロック図である。
【図６】状態管理部およびデータパス部の構成を示すブロック図である。
【図７】タスク切替部の構成を示すブロック図である。
【図８】スレーブメモリ部の構成を示すブロック図である。
【図９Ａ】本実施形態によるアレイ型プロセッサの動作を説明するための処理例を示すフローチャートである。
【図９Ｂ】本実施形態によるアレイ型プロセッサの動作を説明するための処理例を示すフローチャートである。
【図１０】本実施形態によるアレイ型プロセッサにより図９Ａ、９Ｂの処理を実行したときのタイムチャートである。
【図１１】スレーブメモリ部の他の構成を示すブロック図である。
【発明を実施するための最良の形態】
【００２０】
本発明を実施するための形態について図面を参照して詳細に説明する。【００２１】
（実施形態の構成）
図３は、本実施形態によるデータ処理システム１０００の構成を示すブロック図である。図３を参照すると、データ処理システム１０００は、データ処理装置として、１個のアレイ型プロセッサ１００と１個のＭＰＵ２００とを有している。アレイ型プロセッサ１００とＭＰＵ２００とは外部バス３００およびデータライン３０１により互いに接続されている。【００２２】
また、データ処理システム１０００はプログラムメモリ３０２とプログラムメモリ３０３とを有している。プログラムメモリ３０２にはアレイ型プロセッサ１００のためのコンピュータプログラムが格納されている。プログラムメモリ３０３にはＭＰＵ２００のためのコンピュータプログラムが格納されている。このようにアレイ型プロセッサ１００とＭＰＵ２００とには各々専用にコンピュータプログラムを格納するメモリが設けられている。そして、プログラムメモリ３０２およびプログラムメモリ３０３は外部バス３００に接続されている。【００２３】
アレイ型プロセッサ１００は、自身のコンピュータプログラムをプログラムメモリ３０２から読出し、そのコンピュータプログラムに従ってデータ処理を実行する。そのとき入力された処理データがデータパス部１０６でデータ処理されて出力される。また、そのデータ処理に応じてデータパス部１０６でイベントデータが発行される。【００２４】
また、ＭＰＵ２００は、インタフェース（Ｉ／Ｆ）回路、プロセッサコア、内部レジスタ、等のハードウェアを有しており（図示せず）、プログラムメモリ３０３に格納されているコンピュータプログラムに従って動作する。ＭＰＵ２００の動作により、データ入力手段、データ処理手段、データ記憶手段、データ出力手段、等の各種手段が各種機能として論理的に形成される。【００２５】
データ入力手段は、コンピュータプログラムに従ってプロセッサコアがＩ／Ｆ回路の入力データを認識する機能に相当する。データ入力手段に入力されるデータは処理データとイベントデータとである。データ処理手段は、プロセッサコアがデータ処理を実行する機能に相当し、入力された処理データをコンピュータプログラムとイベントデータとに従ってデータ処理する。【００２６】
データ記憶手段は、プロセッサコアが処理データを内部レジスタに格納する機能に相当し、処理データなどの各種データを一時的に記憶する。データ出力手段は、プロセッサコアがＩ／Ｆ回路のデータ出力を制御する機能に相当し、処理されたデータとイベントデータとを出力する。【００２７】
ただし、データ処理システム１０００のＭＰＵ２００は、処理データの少なくとも一部とイベントデータとをアレイ型プロセッサ１００から入力し、データ処理の少なくとも一部に対応して新規のイベントデータを発行し、処理データの少なくとも一部と新規に発行されたイベントデータとをアレイ型プロセッサ１００に出力する。【００２８】
アレイ型プロセッサ１００は、Ｉ／Ｆ回路１０１、プロセッサコア１０２、メモリコントローラ１０３、リードマルチプレクサ１０４、およびスレーブメモリ部１８０を有している。プロセッサコア１０２は、状態管理部１０５とデータパス部１０６とを有している。メモリコントローラ１０３は仮想認識手段であり、アドレスを発行する回路である。リードマルチプレクサ１０４はデータを読出す回路である。【００２９】
図４は、アレイ型プロセッサのデータパス部の構造を示す回路構成図である。図５は、プロセッサエレメントおよびスイッチエレメントの構成を示すブロック図である。図６は、状態管理部およびデータパス部の構成を示すブロック図である。【００３０】
データパス部１０６は、図４、図５および図６に示すように、複数のプロセッサエレメント１０７、複数のスイッチエレメント１０８、複数のｍｂ（ｍ−ｂｉｔ）バス１０９、および複数のｎｂ（ｎ−ｂｉｔ）バス１１０を有している。図４に示すように、複数のプロセッサエレメント（ＰＥ）１０７と複数のスイッチエレメント（ＳＥ）１０８とがマトリクス配列され、複数のｍｂバス１０９およびｎｂバス１１０によりマトリクス接続されている。ｍｂバス１０９およびｎｂバス１１０はデータバスの一部である。【００３１】
また、図５に示すように、プロセッサエレメント１０７は、メモリ制御回路１１１、インストラクションメモリ１１２、インストラクションデコーダ（ＤＥＣ）１１３、ｍｂレジスタファイル１１５、ｎｂレジスタファイル１１６、ｍｂＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  ａｎｄ  Ｌｏｇｉｃａｌ  Ｕｎｉｔ）１１７、ｎｂＡＬＵ１１８、および内部可変配線（図示せず）を各々に有している。スイッチエレメント１０８は、バスコネクタ１２１、入力制御回路１２２、および出力制御回路１２３を各々に有している。インストラクションメモリ１１２はコンテキスト記憶手段である。【００３２】
Ｉ／Ｆユニット１０１は、図３に示したように、プロトコル制御部１３１、タスク切替部１５０、メモリアクセス部１３２、および同期制御回路１３３を有している。プロトコル制御部１３１、タスク切替部１５０、メモリアクセス部１３２、および同期制御回路１３３は、その順番で直列的に接続されている。さらにプロトコル制御部１３１は、外部バス３００に接続されている。また、メモリアクセス部１３２は、メモリコントローラ１０３とリードマルチプレクサ１０４とに接続されている。同期制御回路１３３は、プロセッサコア１０２の状態管理部１０５とデータパス部１０６とに接続されている。【００３３】
プロトコル制御部１３１は、外部バス３００と共通のバスプロトコルが設定されており、このバスプロトコルに従って外部バス３００と各種データを通信する。また、プロトコル制御部１３１は、より単純な手法で、タスク切替部１５０を介してメモリアクセス部１３２と各種データを通信する。【００３４】
メモリアクセス部１３２は、図３に示したように、ＭＰＵ２００から外部バス３００を介してプロトコル制御部１３１に入力された各種データを、プロトコル制御部１３１からタスク切替部１５０を介して受け、メモリコントローラ１０３とデータパス部１０６と同期制御回路１３３とに送る。また、メモリアクセス部１３２は、メモリコントローラ１０３、データパス部１０６、または同期制御回路１３３から受けた各種データを、タスク切替部１５０を介して、プロトコル制御部１３１から外部バス３００経由でＭＰＵ２００に出力する。【００３５】
同期制御回路１３３は、ＭＰＵ２００から外部バス３００を介してプロトコル制御部１３１に入力されたイベントデータを、メモリアクセス部１３２から受けて一時保持する。また、同期制御回路１３３は、状態管理部１０５から入力されるイベントデータを一時保持する。【００３６】
図３に示したように、ＭＰＵ２００から同期制御回路１３３に入力され、同期制御回路１３３によって一時保持されたイベントデータは、データパス部１０６を介して状態管理部１０５によって取得される。状態管理部１０５から同期制御回路１３３に入力され、同期制御回路１３３によって一時保持されたイベントデータはＭＰＵ２００によって取得される。【００３７】
メモリコントローラ１０３は、Ｉ／Ｆユニット１０１のメモリアクセス部１３２から受けた各種データをプロセッサコア１０２の状態管理部１０５とデータパス部１０６とに送る。リードマルチプレクサ１０４は、状態管理部１０５あるいはデータパス部１０６の保持しているデータを読み出してメモリアクセス部１３２に送る。【００３８】
状態管理部１０５について、より詳細に説明する。【００３９】
図６に示すように、状態管理部１０５は、インストラクションデコーダ１３８、遷移テーブルメモリ１３９、インストラクションメモリ１４０、およびステートメモリ１４１を有している。インストラクションメモリ１４０は状態を記憶するためのメモリである。インストラクションデコーダ１３８は命令バス１４２によってメモリコントローラ１０３に接続されている。【００４０】
インストラクションデコーダ１３８は遷移テーブルメモリ１３９およびインストラクションメモリ１４０に接続されている。遷移テーブルメモリ１３９はステートメモリ１４１に接続されている。【００４１】
また、前述のようにリードマルチプレクサ１０４は状態管理部１０５やデータパス部１０６の保持しているデータを読み出す。そのために、リードマルチプレクサ１０４には、状態管理部１０５の各種メモリ１３９〜１４１がデータバス１４３で接続されており、データパス部１０６のプロセッサエレメント１０７およびスイッチエレメント１０８がｍｂデータバス１０９およびｎｂデータバス１１０で接続されている。【００４２】
また、複数のプロセッサエレメント１０７は、図６に示すように、Ｘ行Ｙ列（ＸとＹとは“２”以上の自然数）に配列されている。そして、メモリコントローラ１０３からリードマルチプレクサ１０４まで並列に接続されたＸ行分の命令バス１４２は、１行ごとにＹ列のプロセッサエレメント１０７のメモリ制御回路１１１に接続されている。【００４３】
さらに、状態管理部１０５の１個のインストラクションデコーダ１３８にはＹ列のアドレスバス１４４が接続されている。そして、アドレスバス１４４は１列ごとにＸ行のプロセッサエレメント１０７のメモリ制御回路１１１に接続されている。【００４４】
プログラムメモリ３０２に格納されているアレイ型プロセッサ１００のコンピュータプログラムには、データパス部１０６においてマトリクス配列されている複数のプロセッサエレメント１０７と複数のスイッチエレメント１０８の命令コードが、順次切り換わるコンテキストとして記述されている。コンテキストはデータパス部１０６の動作状態毎の命令コードからなり、状態管理部１０５は、動作状態毎のコンテキストを、命令コードおよびイベントデータに対応して動作状態毎に順次切り換え、データパス部１０６に実行させる。コンテキストを動作状態毎（動作サイクル毎）に切り換えるための状態管理部１０５の命令コードは、順次遷移する動作状態として記述されている。また、順次遷移される複数の動作状態の相対関係は遷移ルールとして記述されている。【００４５】
このような構成の状態管理部１０５では、プログラムメモリ３０２から読出されたコンピュータプログラムがインストラクションデコーダ１３８によってデコードされる。デコードされた命令コードはインストラクションメモリ１４０に格納される。それとともに、複数の動作状態の遷移ルールが遷移テーブルメモリ１３９に格納される。【００４６】
続いて、状態管理部１０５は、遷移テーブルメモリ１３９の遷移ルールに対応して動作状態を順次遷移させる。また、状態管理部１０５は、インストラクションメモリ１４０の命令コードに従って複数のプロセッサエレメント１０７および複数のスイッチエレメント１０８のインストラクションポインタを各々発生する。【００４７】
なお、遷移テーブルメモリ１３９で一時保持されている遷移ルールにより現在の動作状態が判明する。その判明した現在の動作状態はステートメモリ１４１に一時保持される。また、インストラクションメモリ１４０には複数の動作状態に対応した複数の命令コードが格納される、そのために、それら複数の命令コードに対応する複数のアドレスデータがメモリコントローラ１０３から状態管理部１０５に送られる。【００４８】
また、状態管理部１０５に命令バス１４２で伝送される命令コードには、命令コードを格納するプロセッサエレメント１０７のアドレスデータもエンコードされて設定されている。インストラクションデコーダ１３８がそのアドレスデータをデコードすることによりＹ列のアドレスバス１４４からいずれか１つの信号線を選択する。命令コードは、インストラクションデコーダ１３８によって選択された１つの信号線に接続された一列のプロセッサエレメント１０７に送られる。【００４９】
それと同時にメモリコントローラ１０３はＸ行の命令バス１４２から１つの信号線を選択する。これにより、プロセッサエレメント１０７のインストラクションメモリ１１２に命令コードを格納するとき、１個のプロセッサエレメント１０７に命令コードとアドレスデータとが送られることになる。その結果、命令コードは、アドレスデータに対応したインストラクションメモリ１１２の１つのアドレス空間に格納される。【００５０】
図５に示されているスイッチエレメント１０８は、隣接するプロセッサエレメント１０７のインストラクションメモリ１１２を共用している。そのため、状態管理部１０５は、発生したプロセッサエレメント１０７とスイッチエレメント１０８の１組のインストラクションポインタを、対応するプロセッサエレメント１０７のインストラクションメモリ１１２に供給する。【００５１】
このインストラクションメモリ１１２は、プログラムメモリ３０２から読出されたプロセッサエレメント１０７とスイッチエレメント１０８との命令コードを一時保持する。このプロセッサエレメント１０７とスイッチエレメント１０８との命令コードは、状態管理部１０５から供給されたインストラクションポインタによって指定される。インストラクションデコーダ１１３は、インストラクションポインタで指定された命令コードをデコードし、それに従ってスイッチエレメント１０８、内部可変配線、ｍ／ｎｂＡＬＵ１１７，１１８、等の動作を制御する。【００５２】
ｍｂバス１０９は、ｍｂである“８（ｂｉｔ）”の処理データを伝送し、ｎｂバス１１０は、ｎｂである“１（ｂｉｔ）”の処理データを伝送する。スイッチエレメント１０８は、インストラクションデコーダ１１３の動作制御に従ってｍｂバス１０９およびｎｂバス１１０による複数のプロセッサエレメント１０７の相互の接続関係を制御する。【００５３】
より詳細には、スイッチエレメント１０８のバスコネクタ１２１においてｍｂバス１０９とｎｂバス１１０が四方からそれぞれ連通しており、連通している複数のｍｂバス１０９の相互の接続関係と、連通している複数のｎｂバス１１０の相互の接続関係とが制御される。【００５４】
このような構成によりアレイ型プロセッサ１００では、プログラムメモリ３０２に設定されたコンピュータプログラムに従って状態管理部１０５がデータパス部１０６のコンテキストを動作サイクルごとに順次切り換え、その段階ごとに複数のプロセッサエレメント１０７が個々に設定自在なデータ処理で並列動作する。【００５５】
入力制御回路１２２は、図５に示すように、ｍｂバス１０９からｍｂレジスタファイル１１５およびｍｂＡＬＵ１１７へのデータ入力の接続関係と、ｎｂバス１１０からｎｂレジスタファイル１１６およびｎｂＡＬＵ１１８へのデータ入力の接続関係とを制御する。【００５６】
出力制御回路１２３は、ｍｂレジスタファイル１１５およびｍｂＡＬＵ１１７からｍｂバス１０９へのデータ出力の接続関係と、ｎｂレジスタファイル１１６およびｎｂＡＬＵ１１８からｎｂバス１１０へのデータ出力の接続関係とを制御する。【００５７】
プロセッサエレメント１０７の内部可変配線は、インストラクションデコーダ１１３の動作制御に従って、プロセッサエレメント１０７の内部における、ｍｂレジスタファイル１１５とｍｂＡＬＵ１１７の接続関係と、ｎｂレジスタファイル１１６とｎｂＡＬＵ１１８の接続関係とを制御する。【００５８】
ｍｂレジスタファイル１１５は、内部可変配線に制御された接続関係によりｍｂバス１０９などから入力されるｍｂの処理データを一時保持してｍｂＡＬＵ１１７などに出力する。ｎｂレジスタファイル１１６は、内部可変配線に制御された接続関係によりｎｂバス１１０などから入力されるｎｂの処理データを一時保持してｎｂＡＬＵ１１８などに出力する。【００５９】
ｍｂＡＬＵ１１７は、インストラクションデコーダ１１３の動作制御に従ったデータ処理をｍｂの処理データを用いて実行する。ｎｂＡＬＵ１１８は、インストラクションデコーダ１１３の動作制御に従ったデータ処理をｎｂの処理データを用いて実行する。これにより、処理データのビット数に対応してｍ／ｎｂのデータ処理が適宜実行される。【００６０】
このデータパス部１０６による処理の結果は必要に応じて状態管理部１０５にイベントデータとしてフィードバックされる。状態管理部１０５は入力されたイベントデータにより動作状態を次段の動作状態に遷移させるとともにデータパス部１０６のコンテキストを次段のコンテキストに切り換える。【００６１】
本実施形態のアレイ型プロセッサ１００は、上述のようにプログラムメモリ３０２に格納されているコンピュータプログラムを読出し、命令コードを状態管理部１０５とデータパス部１０６とに保持させる。状態管理部１０５およびデータパス部１０６は、その命令コードに従って動作する。ただし、本実施形態のデータ処理システム１０００では、プログラムメモリ３０２にアレイ型プロセッサ１００の複数のコンピュータプログラムが格納されている。その複数のコンピュータプログラムの命令コードは、状態管理部１０５のインストラクションメモリ１４０とデータパス部１０６のインストラクションメモリ１１２とに保持される。【００６２】
タスク切替部１５０は、例えば、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃ  ｉｒｃｕｉｔ）からなり、インストラクションメモリ１４０、１１２に保持されている複数のコンピュータプログラムを適宜切替える。インストラクションメモリ１４０、１１２に保持される個々のコンピュータプログラムは「タスク」と呼ばれる。【００６３】
図７は、タスク切替部の構成を示すブロック図である。図７を参照すると、タスク切替部１５０は、動作停止制御部１５１、動作開始制御部１５２、タスクテーブル１５３、およびタスクポインタ１５４を有している。【００６４】
タスクテーブル１５３は、コンピュータプログラムに含まれる複数のタスクの各々の動作状態や処理データといったプロセッサコア１０２の中間状態を一時保持する。【００６５】
動作停止制御部１５１はタスクの停止を制御する。動作停止制御部１５１は、状態管理部１０５あるいはスレーブメモリ部１８０からタクス切替あるいはＦＵＬＬのイベントを受け、それに応じてプロセッサコア１０２を停止させる。そして、動作停止制御部１５１は、停止させたプロセッサコア１０２の中間状態（動作状態および処理データ）をタスクテーブル１５３に一時的に記録する。【００６６】
タスクポインタ１５４は、アレイ型プロセッサ１００で現在実行しているタスクを示すポインタである。【００６７】
動作開始制御部１５２はタスクの動作開始を制御する。その際、動作開始制御部１５２は、タスクテーブル１５３から実行可能なタスクを選択してタスクポインタ１５４に設定し、タスクテーブル１５３からプロセッサコア１０２の中間状態を取得して状態管理部１０５およびデータパス部１０６に設定し、その後に状態管理部１０５に動作開始イベントを出力する。【００６８】
なお、動作停止制御部１５１は、イベントに応じてプロセッサコア１０２を停止させたとき、ＦＵＬＬのように、イベントによっては他のタスクに切り替えることができない場合がある。また、動作開始制御部１５２にて実行可能なタスクを選択できない場合もある。そのような場合、タスク切替部１５０は、タスクが実行可能になるまでプロセッサコア１０２の動作を停止した状態を継続する。【００６９】
図８は、スレーブメモリ部の構成を示すブロック図である。【００７０】
スレーブメモリ部１８０は例えばＡＳＩＣからなり、図８を参照すると、メモリアクセス判断部１８１、メモリ補充部１８２、ＦＩＦＯメモリ１８３、外部メモリアクセス制御部１８４、およびリードデータメモリ１８５を有している。【００７１】
メモリアクセス判断部１８１は、プロセッサコア１０２からアクセスがあると、そのアクセスの種類を判断し、リードかライトかで異なる処理を行う。メモリライトであれば、メモリアクセス判断部１８１は、それを即時に外部メモリアクセス制御部１８０に伝達する。メモリリードであれば、メモリアクセス判断部１８１は、リードしようとするアドレスとリードデータメモリ１８５に既に読み出されているアドレスとが一致するか否かを判断し、一致したか否かで異なる処理を行う。一致すれば、リードデータメモリ１８５のデータを用い、一致しなければ、メモリ補充部１８２にリードデータメモリ１８５への読出し（補充）を指示する。【００７２】
メモリ補充部１８２は、メモリアクセス判断部１８１からの指示により外部メモリアクセス制御部１８４経由で外部メモリ１９０のデータをリードし、読み出したデータをリードデータメモリ１８５に書き込む。その際、メモリアクセス判断部１８１からの指示はＦＩＦＯメモリ１８３によって遅延してメモリ補充部１８２に伝達される。【００７３】
ＦＩＦＯメモリ１８３は、メモリアクセス判断部１８１からメモリ補充部１８２へ指示された補充すべきメモリのアドレス等を伝達する。【００７４】
外部メモリアクセス制御部１８４は、メモリアクセス判断部１８１またはメモリ補充部１８２から外部メモリ１９０へのアクセスを制御する。【００７５】
リードデータメモリ１８５は、メモリ補充部１８２が外部メモリアクセス制御部１８０を介して外部メモリ１９０からリードしたデータを一時保持する。リードデータメモリ１８５のデータはメモリアクセス判断部１８１から読出すことができる。【００７６】
スレーブメモリ部１８０の動作として、プロセッサコア１０２のデータパス部１０６から外部メモリ１９０へのアクセスの要求があると、メモリアクセス判断部１８１は、そのメモリアクセス要求の種類を判断する。メモリライトの要求であれば、メモリアクセス判断部１８１は、そのメモリライトをそのまま外部メモリアクセス制御部１８４に要求する。【００７７】
メモリリードの要求であれば、メモリアクセス判断部１８１は、リードデータメモリ１８５からインストラクションポインタでデータを選択し、そのＶＡＬＩＤフラグを参照して有効か否か判断する。図８に示されているように、リードデータメモリ１８５には、メモリ補充部１８２により読み出されたリードデータ（ｒｄａｔａ）がアドレス（ａｄｒ）およびＶＡＬＩＤフラグ（ｖａｌｉｄ）とともに記録されている。リードデータメモリ１８５の各データはインストラクションポインタ（ＩＰ）によって選択することができる。ＶＡＬＩＤフラグはデータが有効か否かを示している。【００７８】
ＶＡＬＩＤフラグが有効であれば、データパス部１６０から要求されているアドレスと、リードデータメモリ１８５から読みだしたデータに含まれるリードアドレスとが一致するか否か判断する。【００７９】
ＶＡＬＩＤフラグが有効で、かつデータパス部１６０から要求されているアドレスと、リードデータメモリ１８５から読みだしたデータに含まれるリードアドレスが一致した場合、メモリアクセス判断部１８１は、リードデータメモリ１８５から読みだしたデータに含まれるリードデータをデータパスに出力し、リードデータメモリ１８５のＶＡＬＩＤフラグを無効にする。【００８０】
ＶＡＬＩＤフラグが無効の場合、もしくはデータパス部１６０から要求されているアドレスと、リードデータメモリ１８５から読みだしたデータに含まれるリードアドレスが一致しなかった場合には、メモリアクセス判断部１８１は、メモリ補充部１８２へ外部メモリ１９０のデータ読出しを要求するために、データパス部１６０から要求されているアドレスとインストラクションポインタをＦＩＦＯメモリ１８３に書き込み、さらにアドレスが不一致したことを示すイベントをタスク切替部１５０に出力する。そのとき、ＦＩＦＯメモリ１８３が満杯（ＦＵＬＬ）であれば、メモリアクセス判断部１８１は同様にタスク切替部１５０にＦＵＬＬのイベントを出力する。【００８１】
メモリ補充部１８２は、ＦＩＦＯメモリ１８３が空（ＥＭＰＴＹ）か否かを監視する。空でなければ、メモリ補充部１８２はＦＩＦＯメモリ１８３からインストラクションポインタとアドレスを読み出し、ＦＩＦＯメモリ１８３から読み出したアドレスのデータを、外部メモリアクセス制御部１８４経由で外部メモリ１９０からリードする。【００８２】
さらに、メモリ補充部１８２は、リードしたデータをリードデータメモリ１８５にアドレスとともに一時保持する。このとき、メモリ補充部１８２は、リードデータメモリ１８５への書き込みインデックスとして、ＦＩＦＯメモリ１８３から読み出したインストラクションポインタを用いる。また、メモリ補充部１８２は、リードデータとアドレスを書き込むとともに、ＶＡＬＩＤフラグに“１”を書き込む。続いて、メモリ補充部１８２は、タスク切替のイベントをタスク切替部１５０に出力する。【００８３】
外部メモリアクセス部１８４は、メモリアクセス判断部１８１からの外部メモリ１９０へのライト要求、あるいはメモリ補充部１８２からの外部メモリ１９０のリード要求を受け、プロトコル制御部１３１を介して外部メモリ１９０にアクセスする。【００８４】
なお、異なるタスクが同一のインストラクションポインタを持つ場合、ＦＩＦＯメモリ１８３のエントリおよびリードデータメモリ１８５のエントリに、タスクの識別を可能にするタスクポインタを追加すればよい。その場合、タスクポインタはタスク切替部１５０から取得すればよい。【００８５】
（実施形態の動作）
上述のような構成を有するデータ処理システム１０００は、ＭＰＵ２００がメインプロセッサとして機能し、アレイ型プロセッサ１００がコプロセッサとして機能することにより、アレイ型プロセッサ１００とＭＰＵ２００のデータ処理が連動する。【００８６】
その際、アレイ型プロセッサ１００は、プログラムメモリ３０２から自身のコンピュータプログラムを読出して実行する。また、ＭＰＵ２００は、プログラムメモリ３０３から自身のコンピュータプログラムを読出して実行する。アレイ型プロセッサ１００とＭＰＵ２００が連動することにより、データ処理システム１０００は、データライン３０１から入力されたデータを用いて処理を実行し、処理結果のデータをデータライン３０１に出力する。【００８７】
アレイ型プロセッサ１００のコンピュータプログラムには、複数のプロセッサエレメント１０７と複数のスイッチエレメント１０８との命令コードが、順次切り換わるコンテキストとして記述されている。更に、アレイ型プロセッサ１００のコンピュータプログラムには、このコンテキストを動作サイクルごとに切り換える状態管理部１０５の命令コードが順次遷移する動作状態として記述されている。【００８８】
このようなコンピュータプログラムに従って動作するアレイ型プロセッサ１００では、状態管理部１０５が動作状態を順次遷移させるとともに、データパス部１０６のコンテキストを動作サイクルごとに順次遷移させる。このため、その動作サイクルごとに複数のプロセッサエレメント１０７が個々に設定自在なデータ処理で並列動作し、その複数のプロセッサエレメント１０７の接続関係を複数のスイッチエレメント１０８が切換制御する。【００８９】
このとき、データパス部１０６での処理結果は必要に応じて状態管理部１０５にイベントデータとしてフィードバックされる。状態管理部１０５は入力されたイベントデータにより動作状態を次段の動作状態に遷移させるとともにデータパス部１０６のコンテキストを次段のコンテキストに切り換える。【００９０】
本実施形態のアレイ型プロセッサ１００は、上述のようにプログラムメモリ３０２から命令コードをデータ読出して状態管理部１０５とデータパス部１０６とに一時保持させる。状態管理部１０５とデータパス部１０６とは命令コードに従って動作する。【００９１】
ただし、本実施形態のデータ処理システム１０００では、プログラムメモリ３０２に複数のコンピュータプログラム（タスク）が格納されており、アレイ型プロセッサ１００は、複数のコンピュータプログラムを読出して保持する。そして、各々のコンピュータプログラム（タスク）はスレーブメモリ部１８０を介して入力されるデータを用いてデータ処理を実行する。しかし、メモリリードするデータがスレーブメモリ部１８０に存在しない場合には、アレイ型プロセッサ１００は、そのデータ処理を一時停止し、他の動作可能なタスクに切り替える。そして、一時停止したタスクが切り替えによって再び実行開始されると、そのタスクはメモリリードから動作を再開する。【００９２】
この一連の動作制御により、状態管理部１０５とデータパス部１０６およびスレーブメモリ部１８０とが並列に動作するため、外部メモリ１９０のリード時でもアレイ型プロセッサ１００のデータ処理の並列性が低下しない。【００９３】
データ処理システム１０００の動作をより具体的に説明する。【００９４】
状態管理部１０５は１つのコンピュータプログラムに対応した処理動作を実行しているとき、対応するインストラクションポインタをデータパス部１０６とスレーブメモリ部１８０に出力する。【００９５】
一方、データパス部１０６も同じコンピュータプログラムに従った処理動作を実行する。そして実行途中に外部メモリ１９０へアクセスする場合、データパス部１０６は、アクセスの種類、アドレス、データといった情報をスレーブメモリ部１８０に出力する。【００９６】
スレーブメモリ部１８０のメモリアクセス判断部１８１は、インストラクションポインタおよびメモリアクセス情報が入力されると、まずアクセスの種類を判断する。アクセスの種類がメモリライトであれば、メモリアクセス判断部１８１は、そのメモリアクセスをそのまま外部メモリアクセス制御部１８４に要求する。【００９７】
メモリリードであれば、メモリアクセス判断部１８１はインストラクションポインタをインデックスにしてリードデータメモリ１８５からデータを読み出し、そのデータに含まれるＶＡＬＩＤフラグが有効かどうかを判断する。【００９８】
ＶＡＬＩＤフラグが有効であれば、メモリアクセス判断部１８１は、リードデータメモリ１８５から読み出したデータに含まれるリードアドレスと、データパス部１０６から要求されたメモリリードのアドレスとが一致するか否かを判断する。ＶＡＬＩＤフラグが有効で、かつリードデータメモリ１８５から読み出したデータに含まれるリードアドレスと、データパス部１０６からのメモリリードのアドレスが一致する場合、メモリアクセス判断部１８１は、リードデータメモリ１８５から読み出したデータに含まれるリードデータをデータパス部１０６に出力し、リードデータメモリ１８５上の読み出したデータのＶＡＬＩＤフラグを無効にする。【００９９】
メモリリードのときにＶＡＬＩＤフラグが無効の場合、もしくはメモリリードのときにＶＡＬＩＤフラグが有効で、かつリードデータメモリ１８５から読み出したデータに含まれるリードアドレスとデータパス部１０６から要求されたメモリリードのアドレスとが一致しない場合、メモリアクセス判断部１８１は、ＦＩＦＯメモリ１８３にデータパス部１０６から要求されたメモリリードのアドレスとインストラクションポインタとを出力し、タスク切替部１５０にタスク切替のイベントを出力する。【０１００】
このときＦＩＦＯメモリ１８３がＦＵＬＬであれば、メモリアクセス判断部１８１は、タスク切替部１５０にＦＵＬＬのイベントを出力する。このＦＵＬＬイベントは、スレーブメモリ部１８０が大量のメモリリードの要求を受けて停止（スタック）したことを意味している。この状態においては状態管理部１０５およびデータパス部１０６はこれ以上外部メモリ１９０へのアクセスを実行できない。【０１０１】
メモリ補充部１８２はＦＩＦＯメモリ１８３が空（ＥＭＰＴＹ）か否かを監視している。空でなければ、メモリ補充部１８２は、ＦＩＦＯメモリ１８３からインストラクションポインタとメモリリードアクセスアドレスを読み出し、外部メモリアクセス制御部１８４経由で外部メモリ１９０へのリードアクセスを実行する。続いて、メモリ補充部１８２は、読み出したリードデータをアドレスとともにリードデータメモリ１８５に一時保存する。【０１０２】
リードデータメモリ１８５への書き込みインデックスにはＦＩＦＯメモリ１８３から読み出したインストラクションポインタが用いられる。リードデータおよびアドレスを書き込みとき、メモリ補充部１８２はＶＡＬＩＤフラグに“１”を書き込む。さらに、メモリ補充部１８２はタスク切替部１５０にタスク切替のイベントを出力する。【０１０３】
外部メモリアクセス部１８４は、メモリアクセス判断部１８１からの外部メモリ１９０へのライト要求、またはメモリ補充部１８２からの外部メモリ１９０からのリード要求に対して、プロトコル制御部１３１を介して外部メモリ１９０にアクセスする。【０１０４】
タスク切替部１５０は、動作停止制御部１５１で、メモリアクセス判断部１８１またはメモリ補充部１８２からのタスク切替イベントを受け取ると、現在実行中のタスクの中間状態（動作状態および処理データ）を状態管理部１０６およびデータパス部１０５から取得してタスクテーブル１５３に一時保持し、アレイ型プロセッサ１００を停止させる。【０１０５】
アレイ型プロセッサ１００が停止した後、動作開始制御部１５２はタスクテーブル１５３を参照して実行可能なタスクを選択する。さらに、動作開始制御部１５２は、そのタスクのタスク番号をタスクポインタ１５４に設定し、そのタスクの中間状態を状態管理部１０６およびデータパス部１０５にデータ設定した後、アレイ型プロセッサ１００の動作を開始させる。【０１０６】
図９Ａ、９Ｂは、本実施形態によるアレイ型プロセッサの動作を説明するための処理例を示すフローチャートである。図１０は、本実施形態によるアレイ型プロセッサにより図９Ａ、９Ｂの処理を実行したときのタイムチャートである。【０１０７】
図９Ａに示したタスク（ａ）と、図９Ｂに示したタスク（ｂ）の２つの処理を本実施形態によるアレイ型プロセッサで実行させるものとする。タスク（ａ）の処理およびタスク（ｂ）の処理はいずれもメモリリードを含んでいる。【０１０８】
時間Ｔ１１０では、タスク（ａ）の実行中に処理Ａ２のメモリリードの要求によりタスク切替が発生する。このときタスク（ｂ）が実行可能であれば、タスク（ｂ）の実行が開始される。時間Ｔ１１０にはタスク（ｂ）の処理Ｂ１が実行され、時間Ｔ１１１には処理Ｂ２が実行され、時間Ｔ１１２には処理Ｂ３が実行される。処理Ｂ３にメモリリードの要求があり、またタスク（ａ）についてのメモリリードが完了したものとする。そのため時間Ｔ１１３にタスク切替が発生する。このときタスク（ａ）が実行可能なので、タスク（ａ）が処理Ａ３から開始される。【０１０９】
時間Ｔ１１４にはタスク（ａ）の処理Ａ４が実行され、時間Ｔ１１５には処理Ａ１が実行される。このときタスク（ｂ）についてのメモリリードが完了したものとする。そのため時間Ｔ１１６にタスク切替が発生する。このときタスク（ｂ）が実行可能なので、タスク（ｂ）の処理Ｂ４から開始される。【０１１０】
時間Ｔ１１７〜Ｔ１２０の間に処理Ｂ５、Ｂ１、Ｂ２、Ｂ３が実行される。ここでタスク（ｂ）のメモリリードの要求によりタスク切替が発生する。タスク（ａ）は実行可能なので、時間Ｔ１２１にタスク（ａ）の処理Ａ２が実行される。【０１１１】
図１０のタイムチャートを図２のタイムチャートと比較して分かるように、本実施形態のアレイ型プロセッサ１００では、メモリリードの完了を待つ間に他のタスクを実行するので、メモリリードの完了を待つために処理が中断してしまう時間を少なくすることができる。【０１１２】
本実施形態のアレイ型プロセッサ１００では、スレーブメモリ部１８０にてメモリリードが完了するのを待つための処理を行うので、コンピュータプログラムにメモリリードの完了を待つための処理を組み込む必要がない。それ故、本実施形態によるコンピュータプログラムの処理を、より少ない資源（プロセッサエレメント１０７およびスイッチエレメント１０８）で実現することができる。【０１１３】
また、タスク切替部１５０がメモリアクセス判断部１８１からＦＵＬＬイベントを受け取った場合、アレイ型プロセッサ１００は、ＦＵＬＬイベントが解除されるまで、状態管理部１０５およびデータパス部１０６の動作を停止させる。ＦＵＬＬイベントは、状態管理部１０５およびデータパス部１０６でこれ以上の動作を継続することができないことを示している。このＦＵＬＬイベントによってタスク切替部１５０は動作できない状態であることを自律的に判断することができる。そして、このＦＵＬＬイベントに同期して状態管理部１０５およびデータパス部１０６の動作を停止することにより、アレイ型プロセッサ１００は無駄な動作を行なわないことで消費電力を低減することができる。【０１１４】
（実施形態の効果）
本実施形態のアレイ型プロセッサ１００は、コンピュータプログラムで設定された命令コードによる状態管理部１０５およびデータパス部１０６の動作において外部メモリ１９０へのリードアクセスを要求するとき、スレーブメモリ部１８０がリードアクセスの動作をし、それと並列に状態管理部１０５およびデータパス部１０６は他のコンピュータプログラムで設定された命令コードの動作を実行する。スレーブメモリ部１８０がデータパス部１０６に代わって外部メモリ１９０へのアクセスを実行し、タスク切替部１５０が、その間にデータパス部１０６に他のタスクの処理を実行させる。それ故、外部メモリ１９０からの応答を待つ間にもアレイ型プロセッサ１００のプロセッサコア１０２が稼動することができ、アレイ型プロセッサのプロセッサエレメントの稼働率を向上させることができる。【０１１５】
しかも、アレイ型プロセッサ１００のためのコンピュータプログラムにおいて、不定レイテンシの外部メモリ１９０に対するランダムリードを常に固定レイテンシとして扱うことができる。【０１１６】
図１に示したような不定レイテンシメモリリードを行う場合、従来では、本来の処理を行うための回路に加えて、不定レイテンシを待つための回路や、処理をストールさせる回路が必要となり、データ処理システムの回路規模が増大する要因となっていた。また、従来のアレイ型プロセッサのオブジェクトコードをソースコードから生成するとき、オブジェクトコードに、不定レイテンシを待つためのスケジューリングや処理をストールさせるようなスケジューリングを追加する必要がある。その結果としてオブジェクトコードの生成時間が増加する。なお、ＭＰＵがランダムアクセスを得意としているので、ＭＰＵとアレイ型プロセッサとを混載し、それらを協調動作させるデータ処理システムではランダムアクセスが多くなる傾向にある。その結果、ＭＰＵと混載されたアレイ型プロセッサにランダムアクセスが発生する頻度は高い傾向にある。【０１１７】
そのような従来のアレイ型プロセッサに対して、本実施形態では、コンピュータプログラムとして、メモリリード完了を待つための処理を状態管理部１０５やデータパス部１０６に行なわせる必要が無いので、回路およびコンピュータプログラムが簡略化され、より少ない資源（プロセッサエレメント１０７およびスイッチエレメント１０８）で実現することができる。また、これによりアレイ型プロセッサ１００の動作の複雑さが緩和され、ソースコードからオブジェクトコードを生成する時間を短縮することができる。【０１１８】
さらに、本実施形態のアレイ型プロセッサ１００では、外部メモリ１９０へのリードアクセスをキューイングするＦＩＦＯメモリ１８３が満杯のときに出力されるＦＵＬＬ信号により、状態管理部１０５およびデータパス部１０６における処理を継続できるか否か判断し、処理を継続できないときには状態管理部１０５およびデータパス部１０６の動作を停止する。それ故、状態管理部１０５およびデータパス部１０６の無駄な動作を削減し、低消費電力化を図ることができる。【０１１９】
（実施形態の変形例）
本発明は上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で各種の変形が可能である。【０１２０】
例えば、上述の実施形態では、アレイ型プロセッサ１００とＭＰＵ２００とプログラムメモリ３０２、３０３とが外部バス３００で接続されているデータ処理システム１０００を例示した。しかし、本発明のデータ処理システムは、アレイ型プロセッサ１００とプログラムメモリ３０２とが外部３００に接続され、プログラムメモリ３０２、３０３とが存在しない構成（図示せず）であってもよい。【０１２１】
また、上述の実施形態では、タスク切替部１５０がプロトコル制御部１３１とメモリアクセス部１３２の間に配置された例を示した。しかし、本発明のタスク切替部１５０は、上述したようなタスクを切り替える機能が実現できればよく、配置位置はプロトコル制御部１３１とメモリアクセス部１３２の間に限らない。【０１２２】
さらに、上述の実施形態では、タスク切替部１５０の各部が図７に示したようなハードウェアにより構成される例を示した。しかし他の例として、本発明のタスク切替部１５０の一部または全部がマイクロプロセッサとソフトウェアとの組み合わせにより実現されるものであってもよい。【０１２３】
また、上述の実施形態では、スレーブメモリ部１８０がデータパス部１０６とプロトコル制御部１３１の間に配置された例を示した。しかし、本発明のスレーブメモリ部１８０は、上述したような外部メモリ１９０へアクセスする機能が実現できればよく、配置位置はデータパス部１０６とプロトコル制御部１３１の間に限らない。【０１２４】
さらに、上述の実施形態では、スレーブメモリ部１８０の各部が図８に示したようなハードウェアにより構成される例を示した。しかし他の例として、本発明のスレーブメモリ部１８０の一部または全部がマイクロプロセッサとソフトウェアとの組み合わせにより実現されるものであってもよい。【０１２５】
さらに、タスク切替部１５０の各部１５１〜１５４またはスレーブメモリ部１８０の各部１８１〜１８５は、その一部あるいは全部が、ソフトウェアプログラムを実行するＭＰＵ２００により実現されるものであってもよい。【０１２６】
タスク切替部１５０あるいはスレーブメモリ部１８０の機能をＭＰＵ２００で実現した場合にはハードウェアで実現した場合と比べて動作速度は劣る。しかし、プログラムメモリ３０３に格納するＭＰＵ２００のコンピュータプログラムによりタスク切替部１５０あるいはスレーブメモリ部１８０が実現されるので、アレイ型プロセッサのハードウェア構造を従来のままとすることができ、その実現が容易であるという利点がある。【０１２７】
さらに、タスク切換部１５０の各部１５１〜１５４またはスレーブメモリ部１８０の各部１８１〜１８５は、その一部あるいは全部がアレイ型プロセッサ１００に接続された専用回路であってもよい。具体例として、外部バス３００に接続したＡＳＩＣによって専用回路を構成してもよい。また、専用回路をアレイ型プロセッサ１００のためのプログラムメモリ３０２と一体に構成しておいてもよい。【０１２８】
また、上述した実施形態では、プログラムメモリ３０２に格納されている複数のコンピュータプログラムの全部の命令コードがアレイ型プロセッサ１００に保持される例を示した。しかし、アレイ型プロセッサ１００がプログラムメモリ３０２に格納されている複数のコンピュータプログラムの命令コードの一部だけを保持することにしてもよい。この場合、アレイ型プロセッサ１００は処理動作に必要な一連の命令コードのみを一時保持し、それ以降に継続する命令コードを必要なタイミングでプログラムメモリ３０２から読出せばよい。【０１２９】
また、上述の実施形態では、データパス部１０６による外部メモリ１９０へのアクセスの単位が単一アドレスのアクセスの場合だけを例示した。しかし、外部メモリ１９０へのアクセスはブロック単位のバーストアクセスであってもよい。外部メモリ１９０へのアクセスがブロック単位のバーストアクセスの場合、スレーブメモリ部１８０は、例えば図１１に示すような構成とすればよい。【０１３０】
図１１を参照すると、データバス部１８０への入力信号として、バーストアクセスするバースト長（ｌｅｎｇｔｈ）が追加されている。また、ＦＩＦＯメモリ１８３に格納する内容としてバースト長のエントリが追加されている。また、リードデータメモリ１８５はバーストデータを考慮した深さのリードデータを格納できるようにすればよい。【０１３１】
さらに、メモリアクセス判断部１８１、メモリ補充部１８２、および外部メモリアクセス部１８４はバースト長も考慮してそれぞれ動作すればよい。例えば、メモリアクセス判断部１８１は、メモリリード時、アドレスおよびバースト長によって示されるリードしようとするブロックがリードデータメモリ１８５に既に読み出されているか否かを判断する。読み出されていれば、リードデータメモリ１８５のデータを用い、読み出されていなければ、メモリ補充部１８２にリードデータメモリ１８５への補充を指示する。【０１３２】
また、上述の実施形態では、スレーブメモリ部１８０が１つだけの場合を例示した。しかし、アレイ型プロセッサ１００の有するスレーブメモリ部１８０は複数であってもよい。スレーブメモリ部１８０が複数の場合、更に、スレーブメモリ部１８０の各々の動作を簡略化してもよい。例えば、外部メモリ１９０へのライトアクセス専用のスレーブメモリ部と、外部メモリ１９０へのリードアクセス専用のスレーブメモリ部とを分けることにしてもよい。これにより各スレーブメモリ部の動作を簡略化することができる。さらに、ライトアクセス専用のスレーブメモリ部とリードアクセス専用のスレーブメモリ部とをそれぞれの機能に必要な部分だけで構成することにしてもよい。これによりそれぞれの構成を簡略化することができる。特に、上述した実施形態ではライトアクセスに必要な構成はメモリアクセス判断部１８１と外部メモリアクセス制御部１８４だけなので、リードアクセス専用のスレーブメモリ部１８０の構成は簡略化の効果が大きい。【０１３３】
また、上述の実施形態では、外部メモリ１９０へのメモリライト動作の場合、メモリアクセス判断部１８１はメモリライトであると判断すると即時に外部メモリアクセス制御部１８４にデータを出力し、外部メモリアクセス制御部１８４はそれを受けて外部メモリ１９０へデータを出力する例を示した。しかし、本発明のスレーブメモリ部１８０は、これに限定されるものではない。他の例として、スレーブメモリ部１８０は外部メモリ１９０へのライトデータを一時保持して遅延させた後に外部メモリ１９０に出力することにしてもよい。この場合、データを一時的に保持するメモリは、例えばメモリアクセス判断部１８１の内部に構成してもよく、また外部メモリアクセス制御部１８４の内部に構成してもよい。さらに、スレーブメモリ部１８０は、メモリリードとメモリライトの各々のアクセスに対して実行順序の優先度を付与しておき、外部メモリ１９０のメモリリードに加えてメモリライトも遅延させ、優先制御をすることにしてもよい。これによりシステムや処理内容に適した優先処理により処理効率を向上させることができる。例えば、メモリリードの優先度をメモリライトの優先度より高く設定すればメモリリードのアクセスレイテンシを向上させることができる。【０１３４】
また、上述の実施形態では、スレーブメモリ部１８０と、プロセッサコア１０２（状態制御部１０５およびデータパス部１０６）とが同期したクロックで動作していることを想定した例を示した。しかし、本発明はこれに限定されるものではない。他の例として、スレーブメモリ部１８０のメモリ補充部１８２および外部メモリアクセス制御部１８４と、プロセッサコア１０２とを非同期の異なるクロックで動作させてもよい。また、それらのクロックの速度を固定せず動的に制御することにしてもよい。例えば、プロセッサコア１０２で動作するコンピュータプログラムによる外部メモリ１９０へのアクセスが多いときにスレーブメモリ部１８０のクロックを高速にし、逆に外部メモリ１９０へのアクセスが少ないときにスレーブメモリ部１８０のクロックを低速にしてもよい。これにより、スレーブメモリ部１８０による外部メモリ１９０へのアクセスによって全体としての処理性能が低下するのを防止しつつ、スレーブメモリ部１８０の消費電力を削減できるので、アレイ型プロセッサ１００の性能を低下させることなく消費電力を低減させることができる。【０１３５】
以上、実施形態を参照して本発明を説明したが、本発明は実施形態に限定されるものではない。クレームに定義された本発明の構成や詳細には、発明のスコープ内で当業者が理解し得る様々な変更をすることができる。【０１３６】
この出願は、２００７年１月１９日に出願された日本出願特願２００７−１０３５２号を基礎として優先権の利益を主張するものであり、その開示の全てを引用によってここに取り込む。
【図１】
2008087779.tif 000003
【図２】
2008087779.tif 000004
【図３】
2008087779.tif 000005
【図４】
2008087779.tif 000006
【図５】
2008087779.tif 000007
【図６】
2008087779.tif 000008
【図７】
2008087779.tif 000009
【図８】
2008087779.tif 000010
【図９Ａ】
2008087779.tif 000011
【図９Ｂ】
2008087779.tif 000012
【図１０】
2008087779.tif 000013
【図１１】
2008087779.tif 000014
【国際調査報告】
2008087779.tif 000015
2008087779.tif 000016
2008087779.tif 000017
2008087779.tif 000018