(57)【要約】【課題】プロセッサに対するタスクの切り替えに伴うローカルメモリのアクセスに要するオーバーヘッドを低減する。【解決手段】第２プロセッサ（ＳＰＵ）によりタスクの割り当てが制御される第１のプロセッサ（ＤＲＰ１，ＤＲＰ２）は命令用ローカルメモリとしてのバッファメモリ（ＣＦＧＢＵＦ）とデータ用ローカルメモリとしてのデータメモリ（ＬＭＡ）とを備える。第２プロセッサは直前に実行されたタスクと次に実行するタスクの候補とのローカルメモリ内情報の入れ替えオーバーヘッドを考慮して計算されるコストを判断して、次に実行するタスクを決める。これによれば、タスク切り替えにおいて、タスク切り替えのコストが少ないタスクへの切り替えが優先され、全体の処理時間を短縮することが可能になる。【選択図】図８
2008152470.tif 000002
【特許請求の範囲】
【請求項１】
論理機能が可変に制御される第１プロセッサと、前記第１プロセッサに対するタスクの割り当てを制御する第２プロセッサとを有するデータ処理システムであって、
前記第１プロセッサは、前記第２プロセッサから受け取った論理構成情報を保持するバッファメモリと、バッファメモリが保持する論理構成情報を受け取って論理機能が決定される演算回路と、演算回路に接続されたデータメモリと、第２プロセッサからの指示に応答してバッファメモリから演算回路への論理構成情報の内部転送と演算回路とデータメモリ間のデータの内部転送を制御する制御回路とを有し、
前記第２プロセッサは、第１プロセッサが処理するタスクを切り替えるとき、切り替え候補となる同一優先順位のタスクに対して、論理機能を切り替えるための論理構成情報の転送時間とデータの転送時間との多寡を考慮したコスト計算を行い、その計算結果に基づいて、次に実行するタスクを決定する、データ処理システム。
【請求項２】
前記コスト計算は、前記バッファメモリの入れ替え容量と前記データメモリの入れ替え容量との合計によって前記転送時間の多寡を考慮するものである、請求項１記載のデータ処理システム。
【請求項３】
前記コスト計算は、前記バッファメモリと前記データメモリにおいて入れ替え対象とする情報の種類によって前記転送時間の多寡を考慮するものである、請求項１記載のデータ処理システム。
【請求項４】
前記第２プロセッサは前記第１プロセッサに処理させるタスクを管理するタスク管理情報の記憶領域を有し、
前記タスク管理情報は、タスク毎に、タスク識別情報、当該タスクの処理に割り当てられる第１プロセッサ識別情報、及びそのタスクのタスク実行優先度を含む、請求項１記載のデータ処理システム。
【請求項５】
前記第２プロセッサは前記データメモリを複数のエリアに分割して管理するためのエリア管理情報の記憶領域を有し、
前記エリア管理情報は、前記タスク管理情報で管理するタスクが利用するエリア毎に、タスク識別情報、当該タスクが利用する一つのエリアの識別情報、データ退避先アドレス情報、前記識別情報で示されるエリアに割り当てられるデータの所在を示す情報、前記識別情報で示されるエリアの利用目的を示す情報を含む、請求項４記載のデータ処理システム。
【請求項６】
前記第２プロセッサは、タスクの切り替えを行うとき、次に実行するタスクのエリア管理情報に含まれる前記所在を示す情報がデータメモリを意味しているとき、当該エリア管理情報で特定されるエリアを前記コスト計算の対象から除外する、請求項５記載のデータ処理システム。
【請求項７】
前記所在を示す情報はデータメモリ又は前記第1プロセッサの外部の退避先を意味し、前記所在を示す情報が退避先を示す場合には当該所在を示す情報を含むエリア管理情報で特定されるエリアをコスト計算の対象とする、請求項６記載のデータ処理システム。
【請求項８】
前記第２プロセッサは、タスクの切り替えを行うとき、そのタスクのエリア管理情報に含まれる前記利用目的を示す情報がデータの入れ替えを必要とするものであることを示すとき、当該エリア管理情報で特定されるエリアを前記コスト計算の対象にする、請求項５記載のデータ処理システム。
【請求項９】
前記利用目的を示す情報は出力バッファ、入力バッファ、定数データ記憶領域、又はタスクによる処理の途中結果を記憶する領域を示し、
前記第２プロセッサは、タスクを終了したときのタスクの切り替えに際しては前記利用目的を示す情報が前記出力バッファを示すとき当該タスクのエリア管理情報で特定されるエリアの情報を退避し、タスクの処理を中断したときのタスクの切り替えに際しては前記利用目的を示す情報が前記途中結果を記憶する領域を示すとき当該タスクのエリア管理情報で特定されるエリアの情報を退避する、請求項８記載のデータ処理システム。
【請求項１０】
前記第１プロセッサを複数個有し、
前記第２プロセッサにデータ処理要求を発行する複数個の第３プロセッサと、外部メモリとを更に備え、
前記第２プロセッサは前記第３プロセッサから発行されるデータ処理要求に応答して前記第１プロセッサに対するタスクの割り当てを制御すると共に、前記バッファメモリ及びデータメモリと前記外部メモリとの間のデータ転送のためのアクセス制御を行う、請求項１記載のデータ処理システム。
【請求項１１】
論理機能が可変に制御される複数個の第１プロセッサと、前記複数個の第１プロセッサを制御する第２プロセッサと、前記第２プロセッサにデータ処理要求を発行する複数個の第３プロセッサと、を１個の半導体基板に有する半導体集積回路であって、
前記第１プロセッサは、前記第２プロセッサから受け取った論理構成情報を保持するバッファメモリと、バッファメモリが保持する論理構成情報を受け取って論理機能が決定される演算回路と、演算回路に接続されたデータメモリと、第２プロセッサからの指示に応答してバッファメモリから演算回路への論理構成情報の内部転送と演算回路とデータメモリ間のデータの内部転送を制御する制御回路とを有し、
前記第２プロセッサは、前記第３プロセッサから発行されるデータ処理要求に応答して前記第１プロセッサに対するタスクの割り当てを制御すると共に、第１プロセッサが処理するタスクを切り替えるとき、切り替え候補となる同一優先順位のタスクに対して、論理機能を切り替えるための論理構成情報の転送時間とデータの転送時間との多寡を考慮したコスト計算を行い、その計算結果に基づいて、次に実行するタスクを決定する、半導体集積回路。
【請求項１２】
前記第１プロセッサ、前記第２プロセッサ及び前記第３プロセッサは内部バスに共通接続された、請求項１１記載の半導体集積回路。
【請求項１３】
前記第１プロセッサ及び前記第２プロセッサは第１内部バスに共通接続され、前記第３プロセッサは第２内部バスに共通接続され、第１内部バスと第２内部バスを接続するブリッジ回路を有する、請求項１１記載の半導体集積回路。
【請求項１４】
第１プロセッサと、前記第１プロセッサに対するタスクの割り当てを制御する第２プロセッサとを有するデータ処理システムであって、
前記第１プロセッサは、演算回路と、前記第２プロセッサから受け取った情報を保持すると共に演算回路による演算結果を保持するローカルメモリと、第２プロセッサからの指示に応答してローカルメモリと演算回路との間で情報の内部転送を制御する制御回路とを有し、
前記第２プロセッサは、第１プロセッサが処理するタスクを切り替えるとき、切り替え候補となる同一優先順位のタスクに対して、必要な前記情報の転送時間の多寡を考慮したコスト計算を行い、その計算結果に基づいて次に実行するタスクを決定する、データ処理システム。
【請求項１５】
前記コスト計算は、前記バッファメモリの入れ替え容量によって前記転送時間の多寡を考慮するものである、請求項１４記載のデータ処理システム。
【請求項１６】
前記コスト計算は、前記バッファメモリに対して入れ替え対象とする情報の種類によって前記転送時間の多寡を考慮するものである、請求項１４記載のデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理システム又は半導体集積回路に搭載された複数のプロセッサに対するタスク割り当て制御に関し、例えば、論理機能が可変に制御される動的差構成プロセッサに対する論理機能の設定と設定された論理機能を用いるタスクの割り当てとを制御する半導体集積回路に適用して有効な技術に関する。
【背景技術】
【０００２】
近年、情報処理機器の普及と高性能化、高機能化への要求に伴い、一つの半導体チップに複数のプロセッサが搭載されるようになってきた。これらのチップでは複数のプロセッサに処理を割り当てることで低周波数でも高い性能を得ることが可能である。近年、半導体製造技術の進歩により半導体チップで実現できる回路規模が拡大しており、複数のプロセッサを有効利用する半導体チップが登場してきた。これらの半導体チップ、特に複数の異なるプロセッサを搭載するヘテロジニアス・マルチプロセッサチップでは、一つのコアをマスターとして他のコアに処理を分配し制御する方式、または、各々が独立に動作する方式があり、搭載されたプロセッサを有効に利用する方法が求められている。
【０００３】
こうした問題に対して、マルチプロセッサシステムに対して効率的な処理を行うためのタスク割り当て技術が特許文献１に開示されている。かかる先行技術では、プロセッサの特徴に応じてタスクの割り当てを行う方法が提示されている。
【０００４】
【特許文献１】特開２００４−１７１２３４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に示される技術では、本発発明者が検討する組み込み向けプロセッサにおけるローカルメモリの管理については考慮されていない。例えば本発明者は、論理機能が可変に制御される動的差構成プロセッサに対する論理機能の設定と設定された論理機能を用いるタスクの割り当て制御について検討した。動的再構成プロセッサは、バッファメモリが保持する論理構成情報を受け取って論理機能が決定される演算回路の他に、当該演算回路に接続されたデータメモリと前記バッファメモリをローカルメモリとして備える。ローカルメモリとは動的再構成プロセッサの外部との間でのデータ転送が外部のプロセッサ等によって制御されるメモリを意味する。したがって、動的再構成プロセッサのタスクを切り替えるとき、ローカルメモリに対する論理構成情報やデータの入れ替えは、データ処理のオーバーヘッドになる。
【０００６】
特許文献１に示される技術では、プロセッサの命令セットによる処理効率向上を想定していると考えられ、組み込み向けプロセッサで性能向上に用いられる上記のようなローカルメモリの利用を考慮した効率的なタスク管理については特に考慮されていない。プロセッサそれ自体のアーキテクチャとして効率的なタスク管理については考慮されていない場合には、ユーザが作成するプログラムそれ自体によってローカルメモリの管理とオーバーヘッドまでを考慮してなくてはならなくなり。プログラム並びにそれによる処理が複雑化し、結果としてデータ処理のオーバーヘッドを小さくすることができない。今後、組み込み機器の高性能化や高機能化にともない、より多種多様な処理を行なうプロセッサが搭載されるようになるため、上述の問題は一層顕著になると考えられる。
【０００７】
本発明の目的は、搭載されたプロセッサに対するタスクの切り替えに伴うローカルメモリのアクセスに要するオーバーヘッドを低減することができるデータ処理システムを提供することにある。
【０００８】
本発明の別の目的は、オンチップ化されたプロセッサに対するタスクの切り替えに伴うローカルメモリのアクセスに要するオーバーヘッドを低減することができる半導体集積回路を提供することにある。
【０００９】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１０】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１１】
すなわち、複数のプロセッサを搭載して構成されるデータ処理システム又は半導体集積回路において、第２プロセッサ（ＳＰＵ）によりタスクの割り当てが制御される第１プロセッサ（ＤＲＰ１，ＤＲＰ２）は命令用ローカルメモリとしてのバッファメモリ（ＣＦＧＢＵＦ）とデータ用ローカルメモリとしてのデータメモリ（ＬＭＡ）とを備える。第２のプロセッサは第１のプロセッサで直前に実行されたタスクと、次に実行するタスクの候補とのローカルメモリ内情報の入れ替えオーバーヘッドを考慮して計算されるコストを判断して、第１プロセッサが次に実行するタスクを決める。これによれば、タスク切り替えにおいて、タスク切り替えのコストが少ないタスクへの切り替えが優先され、全体の処理時間を短縮することが可能になる。
【発明の効果】
【００１２】
本願において開示される発明のうち代表的なものについて簡単に説明すれば下記のとおりである。
【００１３】
すなわち、搭載されたプロセッサに対するタスクの切り替えに伴うローカルメモリのアクセスに要するオーバーヘッドを低減することができる。
【発明を実施するための最良の形態】
【００１４】
１．代表的な実施の形態
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１５】
〔１〕本発明の代表的な実施の形態に係るデータ処理システムは、論理機能が可変に制御される第１プロセッサ（ＤＲＰ１，ＤＲＰ２）と、前記第１プロセッサに対するタスクの割り当てを制御する第２プロセッサ（ＳＰＵ）とを有する。前記第１プロセッサは、前記第２プロセッサから受け取った論理構成情報を保持するバッファメモリ（ＣＦＧＢＵＦ）と、バッファメモリが保持する論理構成情報を受け取って論理機能が決定される演算回路（ＲＣＡ）と、演算回路に接続されたデータメモリ（ＬＭＡ）と、第２プロセッサからの指示に応答してバッファメモリから演算回路への論理構成情報の内部転送と演算回路とデータメモリ間のデータの内部転送を制御する制御回路（ＣＦＧＭ）とを有する。前記第２プロセッサは、第１プロセッサが処理するタスクを切り替えるとき、切り替え候補となる同一優先順位のタスクに対して、論理機能を切り替えるための論理構成情報の転送時間とデータの転送時間との多寡を考慮したコスト計算を行って、次に実行するタスクを決定する。
【００１６】
上記によればタスク切り替えに際して第1プロセッサの論理構成情報とデータの入れ替えに要するコストが少ないタスクへの切り替えを優先するから、第1プロセッサのタスク切り替えに伴うバッファメモリ及びデータメモリのアクセスに要するオーバーヘッドが低減され、これによって、全体的なデータ処理時間を短縮することが可能になる。
【００１７】
一つの具体的な形態として、前記コスト計算は、前記バッファメモリの入れ替え容量と前記データメモリの入れ替え容量との合計によって前記転送時間の多寡を考慮する。予め入れ替え容量を計算するから転送時間の多寡を比較的正確に判定することができる。
【００１８】
別の具体的な形態として、前記コスト計算は、前記バッファメモリと前記データメモリにおいて入れ替え対象とする情報の種類によって前記転送時間の多寡を考慮する。例えばタスク切り替えに際して、バッファメモリから演算回路に当該タスクに応ずる論理構成情報の転送だけで済む場合もあれば、第２プロセッサのアクセス制御を介して外部からバッファメモリに複数のタスクに応ずる論理構成情報を転送しなければならない場合、更には第２プロセッサのアクセス制御を介してデータメモリと外部の間でデータの転送を行わなければならない場合もあり、これを入れ替え対象とする情報の種類で区別してコスト計算を行う。上記入れ替え容量の計算を要しないのでコスト計算時間を短縮することができる。但し、上記より転送時間の多寡の判定精度は低くなる。
【００１９】
別の具体的な形態として、前記第２プロセッサは前記第１プロセッサに処理させるタスクを管理するタスク管理情報の記憶領域（ＴＭＦ）を有する。前記タスク管理情報は、タスク毎に、タスク識別情報（ＴＩＤ）、当該タスクの処理に割り当てられる第１プロセッサ識別情報（ＴＧＴＤＲＰ）、及びそのタスクのタスク実行優先度（ＴＳＫＰＲＩ）を含む。
【００２０】
更に具体的な形態として、前記第２プロセッサは前記データメモリを複数のエリアに分割して管理するためのエリア管理情報の記憶領域（ＬＭＭＦ）を有する。前記エリア管理情報は、前記タスク管理情報で管理するタスクが利用するエリア毎に、タスク識別情報（ＴＩＤ）、当該タスクが利用する一つのエリアの識別情報（ＡＩＤ）、データ退避先アドレス情報（ＢＵＦＡＤＲ）、前記識別情報で示されるエリアに割り当てられるデータの所在を示す情報（ＬＭＳＴ）、前記識別情報で示されるエリアの利用目的を示す情報（ＬＭＤＩＮＦＯ）を含む。タスク切り替えに際して第２プロセッサによるデータメモリの管理、即ち、データメモリに対する演算結果データの退避や演算に用いるデータのロードの管理が容易になる。
【００２１】
更に具体的な形態として、前記第２プロセッサは、タスクの切り替えを行うとき、切り替え元タスクのエリア管理情報に含まれる前記所在を示す情報がデータメモリを意味しており、更に、切り替え先タスクがデータメモリの同じ領域を利用するとき、当該エリア管理情報で特定されるエリアを前記コスト計算の対象とする。それ以外の所在のデータをコスト計算から容易に除外することができる。
【００２２】
更に具体的な形態として、前記所在を示す情報はデータメモリ又は前記第1プロセッサの外部の退避先を意味し、切り替え先タスクの前記所在を示す情報が退避先を示す場合には当該所在を示す情報を含むエリア管理情報で特定されるエリアをコスト計算の対象とする。切り替え元タスクが利用するデータメモリを切り替え先タスクが利用するために退避するコストと、切り替え先タスクのデータが退避先にある場合にデータメモリに復帰させるコストがコスト計算の対象に含まれる。
【００２３】
別の具体的な形態として、前記第２プロセッサは、タスクの切り替えを行うとき、そのタスクのエリア管理情報に含まれる前記利用目的を示す情報がデータの入れ替えを必要とするものであることを示すとき、当該エリア管理情報で特定されるエリアをコスト計算の対象にする。それ以外の目的のデータをコスト計算から容易に除外することができる。
【００２４】
更に具体的な形態として、前記利用目的を示す情報は出力バッファ、入力バッファ、定数データ記憶領域、又はタスクによる処理の途中結果を記憶する領域を示す。このとき、前記第２プロセッサは、タスクを終了したときのタスクの切り替えに際しては前記利用目的を示す情報が前記出力バッファを示すとき当該タスクのエリア管理情報で特定されるエリアの情報を退避し、タスクの処理を中断したときのタスクの切り替えに際しては前記利用目的を示す情報が前記途中結果を記憶する領域を示すとき当該タスクのエリア管理情報で特定されるエリアの情報を退避する。エリアのデータを退避すべきか否かの制御が容易になる。
【００２５】
別の具体的な形態として、前記第１プロセッサを複数個有し、前記第２プロセッサにデータ処理要求を発行する複数個の第３プロセッサ（ＰＥ１，ＰＥ２）と、外部メモリ（ＥＸＭＥＭ）とを更に備える。前記第２プロセッサは前記第３プロセッサから発行されるデータ処理要求に応答して前記第１プロセッサに対するタスクの割り当てを制御すると共に、前記バッファメモリ及びデータメモリと前記外部メモリとの間のデータ転送のためのアクセス制御を行う。第２プロセッサと第３プロセッサの機能を分離することにより、システム全体としてのデータ処理効率が向上する。一つの第３プロセッサに第２プロセッサの機能を負担させることも可能であるが、当該第３プロセッサはその分だけ処理能力を割かなければならず、本来のデータ処理効率が低下する場合があると考えられる。
【００２６】
〔２〕本発明の代表的な実施の形態に係る半導体集積回路（ＭＣＵ）は、論理機能が可変に制御される複数個の第１プロセッサ（ＤＲＰ１，ＤＲＰ２）と、前記複数個の第１プロセッサを制御する第２プロセッサ(ＳＰＵ)と、前記第２プロセッサにデータ処理要求を発行する複数個の第３プロセッサ（ＰＥ１，ＰＥ２）と、を１個の半導体基板に有する。前記第１プロセッサは、前記第２プロセッサから受け取った論理構成情報を保持するバッファメモリ（ＣＦＧＢＵＦ）と、バッファメモリが保持する論理構成情報を受け取って論理機能が決定される演算回路（ＲＣＡ）と、演算回路に接続されたデータメモリ（ＬＭＡ）と、第２プロセッサからの指示に応答してバッファメモリから演算回路への論理構成情報の内部転送と演算回路とデータメモリ間のデータの内部転送を制御する制御回路（ＣＦＧＭ）とを有する。前記第２プロセッサは、前記第３プロセッサから発行されるデータ処理要求に応答して前記第１プロセッサに対するタスクの割り当てを制御すると共に、第１プロセッサが処理するタスクを切り替えるとき、切り替え候補となる同一優先順位のタスクに対して、論理機能を切り替えるための論理構成情報の転送時間とデータの転送時間との多寡を考慮したコスト計算を行って、次に実行するタスクを決定する。
【００２７】
上記によればタスク切り替えに際して第1プロセッサの論理構成情報とデータの入れ替えに要するコストが少ないタスクへの切り替えを優先するから、第1プロセッサのタスク切り替えに伴うバッファメモリ及びデータメモリのアクセスに要するオーバーヘッドが低減され、これによって、全体的なデータ処理時間を短縮することが可能になる。第２プロセッサと第３プロセッサの機能が分離されているから、システム全体としてのデータ処理効率が更に向上する。
【００２８】
一つの具体的な形態として、前記第１プロセッサ、前記第２プロセッサ及び前記第３プロセッサは内部バス（ＩＢＵＳ）に共通接続される。バス構成が単純化する。
【００２９】
別の具体的な形態として、前記第１プロセッサ及び前記第２プロセッサは第１内部バス（ＩＢＵＳ２）に共通接続され、前記第３プロセッサは第２内部バス（ＩＢＵＳ１）に共通接続され、第１内部バスと第２内部バスを接続するブリッジ回路を有する。バスの分離により第1プロセッサ及び第２プロセッサによるデータ処理と第３プロセッサによるデータ処理との間でバスの競合回避が容易になる。
【００３０】
〔３〕本発明の別の観点によるデータ処理システムは、第１プロセッサ（ＤＲＰ１，ＤＲＰ２）と、前記第１プロセッサに対するタスクの割り当てを制御する第２プロセッサ（ＳＰＵ）とを有する。前記第１プロセッサは、演算回路（ＲＣＡ）と、前記第２プロセッサから受け取った情報を保持すると共に演算回路による演算結果を保持するローカルメモリ（ＣＦＧＢＵＦ，ＬＭＡ）と、第２プロセッサからの指示に応答してローカルメモリと演算回路との間で情報の内部転送を制御する制御回路(ＣＦＧＭ)とを有する。前記第２プロセッサは、第１プロセッサが処理するタスクを切り替えるとき、切り替え候補となる同一優先順位のタスクに対して、必要な前記情報の転送時間の多寡を考慮したコスト計算を行い、その計算結果に基づいて次に実行するタスクを決定する。これによれば、タスク切り替えに際して第1プロセッサのローカルメモリの情報を入れ替えするのに要するコストが少ないタスクへの切り替えを優先するから、第1プロセッサのタスク切り替えに伴うローカルメモリのアクセスに要するオーバーヘッドが低減され、これによって、全体的なデータ処理時間を短縮することが可能になる。
【００３１】
一つの具体的な形態として、前記コスト計算は、前記バッファメモリの入れ替え容量によって前記転送時間の多寡を考慮するものである。別の形態として、前記コスト計算は、前記バッファメモリに対して入れ替え対象とする情報の種類によって前記転送時間の多寡を考慮するものである。
【００３２】
２．実施の形態の説明
次に、実施の形態について更に詳述する。
【００３３】
図１には本発明にかかるデータ処理システムの一例が示される。同図にはマイクロコンピュータＭＣＵと外部メモリＥＸＭＥＭが代表的に示される。
【００３４】
マイクロコンピュータＭＣＵは、特に制限されないが、２つのプロセッサＰＥ１、ＰＥ２と、２つの動的再構成プロセッサＤＲＰ１、ＤＲＰ２と、１つのＤＲＰ管理用のサブ・プロセッサＳＰＵと、バス・ステート・コントローラＢＳＣと、プロセッサ間バスＩＢＵＳとを含んで構成され、外部メモリＥＸＭＥＭはバス・ステート・コントローラＢＳＣに接続される。その他にプロセッサ間バスＩＢＵＳにはダイレクト・メモリ・アクセス・コントローラ等、その他の回路モジュールが結合されてもよい。マイクロコンピュータＭＣＵは例えば単結晶シリコンのような１個の半導体チップに形成されている。
【００３５】
プロセッサＰＥ１とＰＥ２は汎用プロセッサであり、プログラムにしたがって命令を実行することにより所要のデータ処理を行う。プロセッサＰＥ１とプロセッサＰＥ２は相互に同じもので構成してもよいし、異なるもので構成してもよい。外部メモリＥＸＭＥＭはプロセッサＰＥ１及びプロセッサＰＥ２のアドレス空間に配置され、プロセッサＰＥ１、プロセッサＰＥ２は外部メモリＥＸＭＥＭをアクセスすることができる。
【００３６】
動的再構成プロセッサＤＲＰ１、ＤＲＰ２は、その演算処理機能が制御情報に基づいて動的に変更可能にされるプロセッサであり、主にプロセッサＰＥ１又はプロセッサＰＥ２からの要求で特定処理を高速に実行するアクセラレータとして利用される。動的再構成プロセッサＤＲＰ１、ＤＲＰ２は例えば画像データの圧縮・伸処理、暗号化復号処理、或いはベースバンド処理等に利用される。この動的再構成プロセッサＤＲＰ１、ＤＲＰ２は、特に制限されないが、互いに同一の構成を備える。これら動的再構成プロセッサＤＲＰ１、ＤＲＰ２の詳細は後で図２に基づいて説明で述べるが、命令用と、データ用のローカルメモリを備えることを特徴とし、主にプロセッサＰＥ１又はプロセッサＰＥ２からの指示に基づいて初期設定を行われた後はそれらに従い自動的に演算処理を行う。この動的再構成プロセッサＤＲＰ１、ＤＲＰ２はその外部に配置されたメモリモジュール、例えば外部メモリEXＭＥＭを直接アクセスする手段を持たない。動的再構成プロセッサＤＲＰ１、ＤＲＰ２は、命令用と、データ用のローカルメモリを備え、これらを用いて計算を行い、直接動的再構成プロセッサ外部のメモリモジュールにアクセスする手段を持たない、という特徴を持つプロセッサの一例として位置付けられる。ただし、メモリモジュールへのアクセスという概念にはプロセッサＰＥ１、ＰＥ２への割り込み要求や、ダイレクト・メモリ・アクセスの要求を含めず、動的再構成プロセッサのようなプロセッサはそれら要求を行なう手段を備えてもよい。
【００３７】
サブ・プロセッサＳＰＵは動的再構成プロセッサＤＲＰ１，ＤＲＰ２を管理するためのプロセッサであり、プロセッサＰＥ１，ＰＥ２から動的再構成プロセッサＤＲＰ１，ＤＲＰ２への処理要求を受け付け、内部の状況に応じて動的再構成プロセッサＤＲＰ１，ＤＲＰ２へ処理を割り当てる。この際、必要に応じて動的再構成プロセッサＤＲＰ１，ＤＲＰ２のローカルメモリ内の命令やデータの入れ替えを行う。ローカルメモリ内の命令やデータの入れ替えにはダイレクト・メモリ・アクセス・コントローラを用いることがよくあるが、本実施例ではサブ・プロセッサＳＰＵが内部に同等の機能を備えることとする。ここで、図示は省略するが、マイクロコンピュータＭＣＵはダイレクト・メモリ・アクセス・コントローラをサブ・プロセッサＳＰＵとは別に備えていてもよい。サブ・プロセッサＳＰＵでの処理については図４以降で詳細に述べる。また、サブ・プロセッサＳＰＵを備える代わりに、サブ・プロセッサＳＰＵに割り当てる処理を他のプロセッサＰＥ１又はＰＥ２の一タスクとして構成してもよい。
【００３８】
プロセッサ間バスＩＢＵＳはプロセッサＰＥ１，ＰＥ２、サブ・プロセッサＳＰＵ、動的再構成プロセッサＤＲＰ１，ＤＲＰ２およびバス・ステート・コントローラＢＳＣを接続する一般的なバスである。ここでは一つのプロセッサ間バスＩＢＵＳを用いてそれら回路モジュールを接続しているが、これに限定されず、複数のバスをブリッジ回路で接続した構成を採用してもよい。
【００３９】
バス・ステート・コントローラＢＳＣは、プロセッサ間バスＩＢＵＳとマイクロコンピュータＭＣＵの外部モジュール、例えば外部メモリＥＸＭＥＭを接続するための回路であり、バス・プロトコルの変換や、動作クロックが異なる場合のタイミング調整などを行う。
【００４０】
図２には動的再構成プロセッサＤＲＰ１の構成が例示される。特に図示はしないが動的再構成プロセッサＤＲＰ２も図２と同様に構成される。
【００４１】
図２に示される動的再構成プロセッサＤＲＰ１は、コンフィギュレーション情報により再構成されるリコンフィギュラブル・セル・アレイＲＣＡと、データ格納用のローカルメモリＬＭＡと、コンフィギュレーション・マネージャＣＦＧＭと、命令格納用のローカルメモリにあたるコンフィギュレーション・バッファＣＦＧＢＵＦと、バス・インターフェースＢＵＳＩＦを含んで構成される。また、バス・インターフェースＢＵＳＩＦはプロセッサ・バスＩＢＵＳに接続される。
【００４２】
ここで、コンフィギュレーションとは、動的再構成プロセッサＤＲＰ１における命令であり、これを切り替えることでローカルメモリＬＭＡのデータに対してデータ処理を実行することができる。
【００４３】
リコンフィギュラブル・セル・アレイＲＣＡは、アレイ状に配置された複数の演算セルを備え、複数の演算セルは信号線で接続され、例えばデータフロー型の演算装置を構成し、ローカルメモリＬＭＡとコンフィギュレーション・マネージャＣＦＧＭに接続される。リコンフィギュラブル・セル・アレイＲＣＡ内部の演算セルは単一種類であっても複数種類であってもよい。各演算セルは内部に実行時のコンフィギュレーションを保持する回路（演算セルのコンフィギュレーション保持回路）を備えており、コンフィギュレーション・マネージャＣＦＧＭによって自動的にコンフィギュレーション・バッファＣＦＧＢＵＦからこの保持回路にコンフィギュレーションがロードされる。リコンフィギュラブル・セル・アレイＲＣＡはコンフィギュレーション・マネージャＣＦＧＭの指示によりコンフィギュレーションが切り替えられながらローカルメモリＬＭＡのデータを入力してデータ処理を行い、データ処理結果を再びローカルメモリＬＭＡに格納する。前記演算セルのコンフィギュレーション保持回路は、１コンフィギュレーション分であっても複数コンフィギュレーション分であってもよいが、面積や動作速度の問題から小さめのサイズ、例えば２〜４コンフィギュレーション分程度で構成されることが多い。コンフィギュレーションの階層的な取り扱いについては図３で詳細に述べる。
【００４４】
データ用のローカルメモリＬＭＡは、リコンフィギュラブル・セル・アレイＲＣＡでの演算で利用する入力データと、これによる演算結果の出力データを格納するためのメモリである。また、ローカルメモリＬＭＡはリコンフィギュラブル・セル・アレイＲＣＡでの演算の途中結果を格納するために利用されることもある。ローカルメモリＬＭＡと動的再構成プロセッサＤＲＰ１外部のメモリＥＸＭＥＭとのデータ転送は、サブ・プロセッサＳＰＵにより制御される。
【００４５】
コンフィギュレーション・バッファＣＦＧＢＵＦは、動的再構成プロセッサＤＲＰ１の動作を記述したコンフィギュレーションを格納するためのメモリである。その容量や構成は動的再構成プロセッサＤＰＲ１の具体的な構成により異なるが、リコンフィギュラブル・セル・アレイＲＣＡの内部の演算セルに対する命令と、リコンフィギュラブル・セル・アレイＲＣＡを管理するコンフィギュレーション・マネージャＣＦＧＭの動作を指示する命令を含む。また、コンフィギュレーション・バッファＣＦＧＢＵＦ内には多数のコンフィギュレーションを格納することができる。コンフィギュレーション・バッファＣＦＧＢＵＦと動的再構成プロセッサＤＲＰ１の外部メモリＥＸＭＥＭとのデータ転送は、サブ・プロセッサＳＰＵにより制御される。
【００４６】
コンフィギュレーション・マネージャＣＦＧＭは、リコンフィギュラブル・セル・アレイＲＣＡで実行するコンフィギュレーションの切り替えや、コンフィギュレーション・バッファＣＦＧＢＵＦからリコンフィギュラブル・セル・アレイＲＣＡ内の演算セルへのコンフィギュレーションの転送の管理を、コンフィギュレーション・バッファＣＦＧＢＵＦに格納されたコンフィギュレーション・マネージャＣＦＧＭ用の命令に従って行う。また、コンフィギュレーション・マネージャＣＦＧＭはサブ・プロセッサＳＰＵからの要求により処理を開始し、終了時は割り込みによりサブ・プロセッサＳＰＵに通知を行う。ここで、終了に関しては割り込みでの通知を行わず、サブ・プロセッサＳＰＵがコンフィギュレーション・マネージャＣＦＧＭの状態を監視して終了を検知することも可能である。
【００４７】
以上のように構成される動的再構成プロセッサＤＲＰ１では、サブ・プロセッサＳＰＵからの設定と与えられたコンフィギュレーションにより、ローカルメモリＬＭＡに格納されたデータに対して自動的にデータ処理を行うことが可能である。
【００４８】
図３には動的再構成プロセッサＤＲＰのためのコンフィギュレーションの記憶領域の階層構成が例示される。ここではコンフィギュレーションの記憶領域は３つの階層を有する。コンフィギュレーションの第１の記憶階層（第１のコンフィギュレーション記憶階層）１ｓｔ＿ＣＦＧＨは外部メモリＥＸＭＥＭに代表される共有メモリである。マイクロコンピュータＭＣＵがオンチップで共有メモリを備えるとき、これを第1階層の記憶領域として用いることも可能である。第１階層ではセクション・コンフィギュレーションＳＣＦＧの単位でコンフィギュレーションを扱う。セクション・コンフィギュレーションＳＣＦＧとはコンフィギュレーション・バッファＣＦＧＢＵＦに一括格納可能なコンフィギュレーションの単位である。第１のコンフィギュレーション記憶階層では複数のセクション・コンフィギュレーションＳＣＦＧを扱う。
【００４９】
コンフィギュレーションの第２の記憶階層（第２のコンフィギュレーション記憶階層）２ｎｄ＿ＣＦＧＨは、動的再構成プロセッサＤＲＰ１，ＤＲＰ２が備えるコンフィギュレーション・バッファＣＦＧＢＵＦである。コンフィギュレーション・バッファＣＦＧＢＵＦはセクション・コンフィギュレーションＳＣＦＧを格納する。コンフィギュレーション・バッファＣＦＧＢＵＦを複数備える場合にはセクション・コンフィギュレーションＳＣＦＧも複数保存することが可能である。セクション・コンフィギュレーションＳＣＦＧは多数のコンフィギュレーションから構成されるため、動的再構成プロセッサＤＲＰ１，ＤＲＰ２はある程度の処理内容まではコンフィギュレーション・バッファＣＦＧＢＵＦ内のセクション・コンフィギュレーションＳＣＦＧの入れ替えを行うことなく、連続してデータ処理を実行することができる。
【００５０】
コンフィギュレーションの第３記憶階層（第３のコンフィギュレーション記憶階層）３ｒｄ＿ＣＦＧＨは、動的再構成プロセッサＤＲＰ１，ＤＲＰ２内部のリコンフィギュラブル・セル・アレイＲＣＡの各演算セルが備える小規模なコンフィギュレーション保持回路ＣＦＧＬＣである。
【００５１】
第１のコンフィギュレーション記憶階層１ｓｔ＿ＣＦＧＨから第２のコンフィギュレーション記憶階層２ｎｄ＿ＣＦＧＨへの転送は、サブ・プロセッサＳＰＵにより制御される。この転送が行われる際、サブ・プロセッサＳＰＵは動的再構成プロセッサＤＲＰ１，ＤＲＰ２が実行中の処理を意図しないで停止させることがないように処理状況を把握して行う必要がある。また、この転送はプロセッサ・バスＩＢＵＳを利用して行われるため他の回路モジュールによるバスアクセスの状況に応じた影響を受け、比較的長い転送時間を要する。
【００５２】
第２のコンフィギュレーション記憶階層２ｎｄ＿ＣＦＧＨから第３のコンフィギュレーション記憶階層３ｒｄ＿ＣＦＧＨへの転送は、動的再構成プロセッサＤＲＰ１，ＤＲＰ２内のコンフィギュレーション・マネージャＣＦＧＭによって制御される。この転送時間はリコンフィギュラブル・セル・アレイＲＣＡの演算セル数や、コンフィギュレーション・マネージャＣＦＧＭとリコンフィギュラブル・セル・アレイＲＣＡとの接続の構成により異なるが、各々の動的再構成プロセッサＤＲＰ１、ＤＲＰ２内部で閉じているために転送時間は比較的短く、転送時間を正確に見積もることも可能である。
【００５３】
このように階層化してコンフィギュレーションを扱う場合に、第１のコンフィギュレーション記憶階層１ｓｔ＿ＣＦＧＨから第２のコンフィギュレーション記憶階層２ｎｄ＿ＣＦＧＨへの転送回数を抑制できるように動的再構成プロセッサＤＲＰ１，ＤＲＰ２でのデータ処理を行えば、コンフィギュレーションの転送に伴う処理時間を少なくすることが可能である。
【００５４】
図４にはマイクロコンピュータＭＣＵにおけるソフトウェアの階層構成の例と共に、プロセッサＰＥ１，ＰＥ２でアプリケーションを実行し、一部の処理を動的再構成プロセッサＤＲＰ１，ＤＲＰ２に負担させる場合の指示並びのデータの流れが矢印ＡＲＷで示される。
【００５５】
図４では動的再構成プロセッサＤＲＰ１，ＤＲＰ２を制御するサブ・プロセッサＳＰＵと、動的再構成プロセッサＤＲＰ１，ＤＲＰ２へ処理要求を出すプロセッサＰＥ１，ＰＥ２のソフトウェア構成が例示される。動的再構成プロセッサＤＲＰ１，ＤＲＰ２に処理要求を出すプロセッサＰＥ１，ＰＥ２側のソフトウェアは、アプリケーションプログラムＡＰＬと、サブ・プロセッサへのアプリケーション・プログラム・インタフェースＳＰＵ−ＡＰＩと、リモート・プロシージャ・コールＲＰＣを含んで構成される。本発明ではプロセッサＰＥやサブ・プロセッサＳＰＵで動作するオペレーティング・システムは本質的ではないため省略しているが、オペレーティング・システムが存在してもよい。
【００５６】
アプリケーションプログラムＡＰＬを実行するアプリケーション処理では、必要に応じてアプリケーション・プログラム・インタフェースＳＰＵ−ＡＰＩを利用してＤＲＰへ処理要求を出したり、動的再構成プロセッサＤＲＰ１，ＤＲＰ２へのデータ転送要求を出したりする。
【００５７】
アプリケーション・プログラム・インタフェースＳＰＵ-ＡＰＩはアプリケーションプログラムＡＰＬからの要求を受け付け、リモート・プロシージャ・コールＲＰＣを利用してサブ・プロセッサＳＰＵに要求を伝える。即ち、アプリケーション・プログラム・インタフェースＳＰＵ-ＡＰＩはアプリケーションプログラムＡＰＬに対して公開されているプログラムインターフェイスを有し、アプリケーションプログラムからは、適当なパラメータ（引数）を指定して、アプリケーション・プログラム・インタフェースの関数を呼び出すことによってサブ・プロセッサＳＵＰに要求を伝えることができる。
【００５８】
リモート・プロシージャ・コールＲＰＣはプロセッサ間の通信を行うための手続きを規定するプログラムである。このリモート・プロシージャ・コールＲＰＣは既存のさまざまな通信方式を用いて実現することが可能である。
【００５９】
動的再構成プロセッサＤＲＰ１，ＤＲＰ２への処理要求を受け付け、動的再構成プロセッサＤＲＰ１，ＤＲＰ２を制御するサブ・プロセッサＳＰＵ側のソフトウェアは、ＤＲＰ制御カーネルＤＲＰＣＣと、リモート・プロシージャ・コールＲＰＣと、動的再構成プロセッサへのアプリケーション・プログラム・インタフェースＤＲＰ−ＡＰＩから構成される。
【００６０】
リモート・プロシージャ・コールＲＰＣはプロセッサＰＥ１、ＰＥ２側のソフトウェアと同じで、プロセッサ間の通信を行うためのプログラムである。
【００６１】
ＤＲＰ制御カーネルＤＲＰＣＣはプロセッサＰＥ１，ＰＥ２から動的再構成プロセッサＤＲＰ１，ＤＲＰ２への処理要求を受け付け、内部の動的再構成プロセッサ管理方式に従ってアプリケーション・プログラム・インタフェースＤＲＰ−ＡＰＩにより動的再構成プロセッサＤＲＰ１，ＤＲＰ２を制御する。ＤＲＰ制御カーネルＤＲＰＣＣ内部で管理を行う対象は、動的再構成プロセッサＤＲＰ１，ＤＲＰ２と、動的再構成プロセッサＤＲＰ１，ＤＲＰ２のセクション・コンフィギュレーションＳＣＦＧと、動的再構成プロセッサＤＲＰ１，ＤＲＰ２で実行するタスクと、そのタスクが利用するローカルメモリＬＭＡ，ＣＦＧＢＵＦである。動的再構成プロセッサＤＲＰ１，ＤＲＰ２で実行するタスクとその管理については図５と図６と図８、タスクが利用するローカルメモリについては図７で詳しく説明する。動的再構成プロセッサＤＲＰ１，ＤＲＰ２の管理では、プロセッサＰＥ１，ＰＥ２による動的再構成プロセッサＤＲＰ１，ＤＲＰ２の利用に関して占有するか、共有するかを管理する。占有とした場合は単一のプロセッサＰＥ１又はＰＥ２からしか要求を受け付けず、共有とした場合は複数のプロセッサＰＥ１，ＰＥ２からの要求を受け付けることができる。動的再構成プロセッサＤＲＰ１，ＤＲＰ２のセクション・コンフィギュレーションＳＣＦＧの管理では、登録されたセクション・コンフィギュレーションＳＣＦＧを管理する。セクション。コンフィギュレーションＳＣＦＧの管理では、セクション・コンフィギュレーションＳＣＦＧそのものをサブ・プロセッサＳＰＵ内に保持する場合と、外部メモリＥＸＭＥＭに配置し、そのアドレスを管理する場合がある。タスクの実行に際して、現在コンフィギュレーション・バッファＣＦＧＢＵＦにロードされているセクション・コンフィギュレーションＳＣＦＧと異なるセクション・コンフィギュレーションＳＣＦＧを利用するタスクを実行する場合は、メモリＥＸＭＥＭまたはサブ・プロセッサＳＰＵ内の当該メモリからコンフィギュレーション・バッファＣＦＧＢＵＦにロードする作業を行う。
【００６２】
アプリケーション・プログラム・インタフェースＤＲＰ−ＡＰＩはサブ・プロセッサＳＰＵから動的再構成プロセッサＤＲＰ１，ＤＲＰ２を直接制御するためのソフトウェアである。動的再構成プロセッサＤＲＰ１，ＤＲＰ２の構成に応じて制御用のレジスタへのアクセスを行ったり、セクション・コンフィギュレーションＳＣＦＧを動的再構成プロセッサＤＲＰ１，ＤＲＰ２内のコンフィギュレーション・バッファＣＦＧＢＵＦへロードしたり、動的再構成プロセッサＤＲＰ１，ＤＲＰ２内のローカルメモリＬＭＡへのアクセスを行ったりする。
【００６３】
図４のソフトウェア構成においてプロセッサＰＥ１，ＰＥ２で実行するアプリケーションプログラムＡＰＬから動的再構成プロセッサＤＲＰ１，ＤＲＰ２を利用する場合は、まず、アプリケーションプログラムＡＰＬがアプリケーション・プログラム・インタフェースＳＰＵ−ＡＰＩを利用して動的再構成プロセッサＤＲＰ１，ＤＲＰ２の利用要求を出す。アプリケーション・プログラム・インタフェースＳＰＵ-ＡＰＩはリモート・プロシージャ・コールＲＰＣＲＰＣを利用してプロセッサＰＥ１，ＰＥ２とサブ・プロセッサＳＰＵ間の通信を行い、ＤＲＰ制御カーネルＤＲＰＣＣに要求を伝える。ＤＲＰ制御カーネルＤＲＰＣＣは与えられた要求を内部の管理方式に従って処理する。この際、動的再構成プロセッサＤＲＰ１，ＤＲＰ２を直接制御するに当たってはアプリケーション・プログラム・インタフェースＤＲＰ−ＡＰＩを利用する。
【００６４】
以上のように構成することで、動的再構成プロセッサＤＲＰ１，ＤＲＰ２の構成が異なる場合にも同様にして扱うことが可能となる。また、プロセッサＰＥ１，ＰＥ２や動的再構成プロセッサＤＲＰ１，ＤＲＰ２が複数ある場合にもサブ・プロセッサＳＰＵで上記のような管理を行うことにより競合なども含めて容易に扱うことが可能である。
【００６５】
図５には動的再構成プロセッサＤＲＰ１の処理に必要なセクション・コンフィギュレーションが例示される。図５には２個のセクション・コンフィギュレーションＳＣＦＧ１，ＳＣＦＧ２が示される。セクション・コンフィギュレーションＳＣＦＧ１は２個のタスクＴＳＫ１とＴＳＫ２から構成され、セクション・コンフィギュレーションＳＣＦＧ２は３個のタスクＴＳＫ３とＴＳＫ４とＴＳＫ５から構成される。タスクＴＳＫ１は４個のコンフィギュレーションＣＦ１，ＣＦ２，ＣＦ３，ＣＦ４から構成され、タスクＴＳＫ２は４個のコンフィギュレーションＣＦ５，ＣＦ６，ＣＦ７，ＣＦ８から構成される。
【００６６】
ここで、タスクとは複数のコンフィギュレーションにより構成される一連の処理のことを意味する。例えばタスクＴＳＫ１はコンフィギュレーションＣＦ１，ＣＦ２，ＣＦ３，ＣＦ４から構成され、それぞれのコンフィギュレーションの遷移は図５の矢印で示すように定義される。これらの情報はすべてセクション・コンフィギュレーションＳＣＦＧ１に含まれる。
【００６７】
図５のセクション・コンフィギュレーションに従った処理において、例えばタスクＴＳＫ１からタスクＴＳＫ２へタスクの切り替えが発生した場合にはセクション・コンフィギュレーションＳＣＦＧの入れ替えは発生しないが、タスクＴＳＫ１からタスクＴＳＫ３へタスクの切り替えが発生した場合にはセクション・コンフィギュレーションＳＣＦＧ１からセクション・コンフィギュレーションＳＣＦＧ２に入れ替えが行われる。すべてのタスクが一つのセクション・コンフィギュレーションＳＣＦＧに入れることができれば入れ替えのオーバーヘッドは発生しないが、一つのセクション・コンフィギュレーションＳＣＦＧのサイズはコンフィギュレーション・バッファＣＦＧＢＵＦの容量により上限があるため、タスク切り替えのオーバーヘッドを考慮して、動的再構成プロセッサＤＲＰ１，ＤＲＰ２に対するセクション・コンフィギュレーションＳＣＦＧとタスクの割り当てを決めなくてはならない。タスクの切り替えに際してコンフィギュレーションの入れ替えがなければコンフィギュレーション・バッファＣＦＧＢＵＦからＲＣＡへのタスクのロードを行えば良いが、コンフィギュレーションの入れ替えを要する場合には例えば外部メモリＥＸＭＥＭからコンフィギュレーション・バッファＣＦＧＢＵＦへセクション・コンフィギュレーションをロードしなければならない。
【００６８】
図６にはサブ・プロセッサＳＰＵにおいて動的再構成プロセッサＤＲＰ１、ＤＲＰ２に処理させるタスクを管理するためのタスク管理情報が例示される。タスク管理情報はタスク毎に必要であり、図６には一つのタスクに対応する一つのタスク管理情報の詳細が例示される。タスク管理情報は例えばサブ・プロセッサＳＰＵの記憶領域ＴＭＦに保持される。
【００６９】
図６のタスク管理情報は、タスクを特定するタスク番号ＴＩＤと、そのタスクが含まれるセクション・コンフィギュレーションの番号（セクション・コンフィギュレーション番号）ＣＦＧＩＤと、タスクが割り当てられる動的再構成プロセッサの番号（動的再構成プロセッサ番号）ＴＧＴＤＲＰと、そのタスクのタスク実行優先度ＴＳＫＰＲＩと、そのタスクのタスク実行開始ポイントＳＴＰＴと、そのタスクのタスク実行終了ポイントＥＮＤＰＴと、其のタスクのタスク実行中断ポイントＳＰＤＰＴを含んで構成される。
【００７０】
タスク番号ＴＩＤは、タスクを識別するための番号である。例えば、図５の処理構成例では、ＴＳＫ１、ＴＳＫ２、ＴＳＫ３、ＴＳＫ４、ＴＳＫ５がこれにあたる。
【００７１】
セクション・コンフィギュレーション番号ＣＦＧＩＤは、そのタスクを含むＳＣＦＧの番号である。例えば、図５の処理構成例では、ＳＣＦＧ１とＳＣＦＧ２があり、タスク番号ＴＩＤがＴＳＫ１のタスクを含むセクション・コンフィギュレーションの番号ＣＦＧＩＤはＳＣＦＧ１である。これによりタスクとセクション・コンフィギュレーションとを関連付けている。この値はアプリケーションプログラムにＡＰＬに従ってサブ・プロセッサＳＰＵが動的再構成プロセッサに実行させるタスクを登録するときに設定する。
【００７２】
動的再構成プロセッサ番号ＴＧＴＤＲＰは、タスクが割り当てられる動的再構成プロセッサの番号であり、そのタスクを実行する動的再構成プロセッサＤＲＰを固定したい場合に指定する。ここに固定しないことを意味する値を設定することにより、利用可能な任意の動的再構成プロセッサＤＲＰに其のタスクの処理を割り当てて実行することもできる。この値は同じくタスクの登録時に設定する。
【００７３】
タスク実行優先度ＴＳＫＰＲＩは、タスクの実行優先度である。例えば、サブ・プロセッサＳＰＵにおいて複数のタスクが実行可能となった場合には、この優先度を利用して実行するタスクを決める。詳細な実行タスクの選択については図８で説明する。
【００７４】
タスク実行開始ポイントＳＴＰＴは、タスクの実行開始となるコンフィギュレーション番号を意味する。例えば、図５の処理例のタスクＴＳＫ１のＳＴＰＴはＣＦ１となる。動的再構成プロセッサＤＲＰにタスクを実行させるためには、開始ポイントとしてこの値を設定する。この値はタスクの登録時に設定する。
【００７５】
タスク実行終了ポイントＥＮＤＰＴは、タスクの実行終了となるコンフィギュレーション番号を意味する。例えば、図５の処理構成例のタスクＴＳＫ１のＥＮＤＰＴはＣＦ４となる。この値はタスクの登録時に設定する。また、この値はサブ・プロセッサＳＰＵからタスクの終了を確認するために利用される。即ち、動的再構成プロセッサＤＲＰにおいてコンフィギュレーション・マネージャＣＦＧＭがどこまで処理を実行したかを参照することによってサブ・プロセッサはタスクの終了を確認することができる。
【００７６】
タスク実行中断ポイントＳＰＤＰＴは、タスクが中断された時のコンフィギュレーションを意味する。例えば、図５の処理構成例のタスクＴＳＫ１において、ＣＦ２まで実行終了した後に中断された場合には、実行中断ポイントＳＰＤＰＴはＣＦ３となる。タスクが再開される場合はここに示されるコンフィギュレーションから再開する。また、タスクの登録時とタスクの終了時にはこの値は無効を意味する値に設定される。要するに、タスク実行中断ポイントＳＰＤＰＴは、タスクの実行が中断されたとき、それに応じたコンフィギュレーションの番号がセットされるテンポラリ領域として利用される。
【００７７】
上述のようにプロセッサＰＥ１，ＰＥ２によるアプリケーションプログラムの実行に従ってサブ・プロセッサが動的再構成プロセッサＤＲＰ１，ＤＲＰ２にタスクの割り当てを行ったとき、サブ・プロセッサＳＰＵは、データ用のローカルメモリＬＭＡに対ししてもタスクの割り当てに応じたデータ領域の割り当て並びに割り当てた領域に対するデータのロードとストアを制御する。即ち、サブ・プロセッサＳＰＵはタスクの割り当て管理と共にデータ用のローカルメモリＬＭＡの管理も行う。
【００７８】
図７には動的再構成プロセッサＤＲＰのタスク処理で利用されるローカルメモリＬＭＡを管理するためのサブ・プロセッサＳＰＵによるローカルメモリ管理の情報の詳細が例示される。前記ローカルメモリ管理情報は例えばサブ・プロセッサＳＰＵの記憶領域ＬＭＭＦに保持される。
【００７９】
図７のローカルメモリ管理情報は、タスク番号ＴＩＤと、ローカルメモリのエリア番号ＡＩＤと、ローカルメモリのデータ退避先メモリアドレスＢＵＦＡＤＲと、ローカルメモリのステータスＬＭＳＴと、ローカルメモリのデータ情報ＬＭＩＮＦＯを含んで構成される。一つのタスクは利用するローカルメモリＬＭＡのエリア分だけ、本ローカルメモリ管理情報を持つことができる。図７には一つのタスクの一つのローカルメモリエリアに対応する一つのローカルメモリ管理情報が例示される。
【００８０】
タスク番号ＴＩＤは、どのタスクのローカルメモリ管理情報かを識別するための値を示す。
【００８１】
ローカルメモリのエリア番号ＡＩＤは、利用するローカルメモリＬＭＡ内のエリアを識別するための値を示す。本実施例の動的再構成プロセッサＤＲＰでは、ローカルメモリＬＭＡを同じサイズに複数分割して各々にエリア番号ＡＩＤを割り当てる。分割するサイズは、特に限定しないが、小さ過ぎると管理オーバーヘッドが増え、大き過ぎると利用効率が悪くなるため、ローカルメモリＬＭＡのサイズに合わせて決める必要がある。例えば、ローカルメモリＬＭＡが４０キロバイト（k Byte）のメモリで構成される場合には、１エリアを２キロバイトとし、２０個のエリアで扱う、というように分割する。
【００８２】
ローカルメモリＬＭＡのデータ退避先メモリアドレスＢＵＦＡＤＲは、タスク切り替え発生時にローカルメモリＬＭＡ上のデータをコピーして保存しておくための退避先メモリアドレスである。図１に示す構成では退避先として外部メモリＥＸＭＥＭを利用する。チップ内に内蔵メモリを持つ構成の場合はそれらを利用することでデータの退避にかかる時間を小さくすることが可能である。また、タスクの開始前にはデータ退避先メモリアドレスＢＵＦＡＤＲが示すアドレスに処理に必要となるデータを格納しておき、タスク開始時にロードすることもできる。
【００８３】
ローカルメモリのステータスＬＭＳＴは、タスク番号ＴＩＤで示されるタスクの、エリア番号ＡＩＤで示されるエリアのデータがローカルメモリＬＭＡ上にあるか、データ退避先メモリアドレスＢＵＦＡＤＲで示されるメモリ上にあるかを示す。実行されるタスクが利用しないローカルメモリＬＭＡのエリアのデータに対しては、データの退避を行わないことでデータの退避にかかる時間を削減することができる。したがって、実行しているタスク以外のデータがローカルメモリＬＭＡの一部のエリアに存在していることがありえる。本値は、ローカルメモリＬＭＡのエリア番号ＡＩＤで示されたエリアの値がデータ退避先メモリアドレスＢＵＦＡＤＲに退避されたことを示す値と、ローカルメモリＬＭＡ上にデータが存在することを示す値の、少なくとも二通りの値を設定することができる。
【００８４】
ローカルメモリＬＭＡのデータ情報ＬＭＩＮＦＯは、タスク番号ＴＩＤで示されたタスクのエリア番号ＡＩＤで示されたエリアのデータがどのようなものかを示す値である。ローカルメモリデータ情報ＬＭＩＮＦＯがとる値は、例えば、定数値(タスク実行により変化しない値)を示す値と、処理の途中結果を示す値と、入力バッファとして利用することを示す値と、出力バッファとして利用することを示す値を設定することができる。これにより、タスク終了後にタスクの切り替えが発生した場合には、ローカルメモリデータ情報ＬＭＩＮＦＯが出力バッファを示す値のエリアのみを退避すればよい。タスク開始時には、定数、途中結果、入力の値が設定されているエリアのデータをロードして処理を進める。また、処理を途中で中断する場合は定数以外の用途のエリアを退避、復帰する。このようにすることでタスクの切り替え時におけるデータのロードとストアの処理を少なくすることができる。
【００８５】
図８にはサブ・プロセッサＳＰＵが動的再構成プロセッサＤＲＰ１，ＤＲＰ２にタスクを割り当てるタスク切り替え判定のフローチャートが例示される。
【００８６】
プロセッサＰＥ１，ＰＥ２からの要求に応答してサブ・プロセッサＳＰＵに実行待ちタスクが発生することにより本フローチャートによる処理が開始される（Ｓ１）。先ず、タスクを実行すべき対象となる動的再構成プロセッサＤＲＰ１，ＤＲＰ２が利用されているかどうかが確認され（Ｓ２）、利用されていないならば次のステップＳ３に進む。利用されている場合には、対象とする動的再構成プロセッサＤＲＰ１又はＤＲＰ２の利用が終了するまでステップＳ２の処理を繰り返す。タスクが利用対象とする動的再構成プロセッサＤＲＰ１，ＤＲＰ２は図６のタスク管理情報のＴＧＴＤＲＰを参照することによって解る。
【００８７】
ステップＳ３では、実行待ちの状態となっているタスクの数を確認する。実行待ちのタスクが一つであれば次のステップＳ４に進む。実行待ちのタスクが複数であればステップＳ５に進む。ステップＳ４では、当該実行待ちタスクを、実行対象とされる動的再構成プロセッサにおける次の実行タスクとして選択する。
【００８８】
ステップＳ５では、実行待ちタスクの図６に示したタスク管理情報のタスク実行優先度ＴＳＫＰＲＩを参照し、最も優先度の高いタスクを選出し、その数を数える。対象タスクが一つの場合はステップＳ６に進み、複数ある場合はステップＳ７に進む。ステップＳ６では実行待ちタスクの中から最も優先度の高いタスクを、実行対象とされる動的再構成プロセッサにおける次の実行タスクとして選択する。
【００８９】
ステップＳ７では、ステップＳ５で選出した最も優先度の高い複数のタスクに対して、前に実行したタスクからの切り替えコストを計算する。前記コストとはタスク切り替えに伴う時間であるが、この時間を正確に予測することは実質的に不可能であるため、ここでは、タスク切り替えに伴うデータのコピー量から間接的に評価を行うものとする。そして、タスク切換えコストの計算結果に基づいて最低コストのタスクを、実行対象とされる動的再構成プロセッサにおける次の実行タスクとして選択する。ただし、切り替えコストが同じタスクが存在する場合には、例えば、所謂ＦＩＦＯ（First-In First-Out）方式により、最も早く実行待ち状態となったタスクを選択する。
【００９０】
前記タスク切り替えに伴うコストの計算方法として、以下に二つの方式について述べる。ここで例示するコスト計算方式は、動的再構成プロセッサの命令メモリにあたるコンフィギュレーション・バッファＣＦＧＢＵＦへの転送と、図７のローカルメモリ管理情報より判定されるローカルメモリＬＭＡの退避と復帰を考慮して計算を行う方法である。
【００９１】
第１のコスト計算方式は、タスクの切り替えに伴うデータのコピー容量を直接計算する方式であり、下記の式
“素コスト”＝(“入れ替えＳＣＦＧ容量”＋“入れ替え対象ＬＭＡの総容量”)
“真コスト”＝“素コスト”×“コスト軽減係数”“タスク実行待ち回数”
により計算される。タスク切り替え対象の判定は(真コスト)を基に行われる。
【００９２】
“素コスト”は、ベースとなるタスク切り替えにおけるコストであるが、“入れ替えＳＣＦＧ容量”と“入れ替え対象ＬＭＡエリアの総容量”の和によって計算される。
【００９３】
“入れ替えＳＣＦＧ容量”は入れ替え対象となるＳＣＦＧの容量である。例えば、図５のＴＳＫ１からＴＳＫ２への切り替えの場合は、同じＳＣＦＧ１を利用しているため、この値は０になる。また、ＴＳＫ１からＴＳＫ３への切り替えの場合はＳＣＦＧ２の容量となる。タスクが利用するＳＣＦＧについては、図６のタスク管理情報のＣＦＧＩＤを参照する。具体的な容量値として、例えば、利用するセクション・コンフィギュレーションの容量値を用いてコスト計算に用いればよい。
【００９４】
“入れ替え対象ＬＭＡエリアの総容量”は入れ替え対象となるＬＭＡエリアの容量である。本値は真に入れ替えが必要なエリアのみから計算する。どのタスクがどのエリアを利用するかについては、図７に示されるローカルメモリ管理情報から判定する。例えば、ＴＳＫ１からＴＳＫ２へのタスク切り替えで、ＬＭＡのエリアがＴＳＫ１とＴＳＫ２で重複しない場合は、ＴＳＫ１のデータ退避は行われず、ＴＳＫ２の利用するＬＭＡエリアの内、ＬＭＡ上にないもののみを復帰(ロード)することとし、本値を計算する。また、図７のローカルメモリＬＭＡのデータ情報ＬＭＩＮＦＯでも説明したように、データの退避や復帰が必要のないエリアについては、本値に含まない。例えば、１エリアの容量と退避，復帰するエリアのエリア数から本値を計算する。
【００９５】
“真コスト”はタスク切り替え対象の判定を行うための値であり、先に述べた“素コスト”に“タスク実行待ち回数”の要素を加味して計算され、“コスト軽減係数”を“タスク実行待ち回数”乗し、これを“素コスト”に掛けて計算される。これは、“素コスト”のみで判定を行うと、同じタスクのみが実行される場合があるからである。この式によれば、“コスト軽減係数”を０にすると、“タスク実行待ち回数”が０の場合は“真コスト”は１となり、“タスク実行待ち回数”が１以上では常に０となる。これは、一度でもタスク切り替え判定で選択されなかったタスクを優先的に実行するための値である。“コスト軽減係数”を１にすると、“真コスト”は常に“素コスト”となり、実行待ち回数は考慮されない。“コスト軽減係数”を０より大きく、１より小さく(０＜“コスト軽減係数”＜１)すると、実行待ち回数に応じて“真コスト”が小さくなり、待ち回数が多くなれば実行されやすくなる。
【００９６】
このようにコストを計算することで、タスク切り替えに伴う時間を十分考慮すると共に、目的に応じてタスクの選択される頻度を調整することができる。
【００９７】
第２のコスト計算方式は、図９に示す表にしたがってコストを判定する。この方式では、詳細なコスト切り替えに伴うデータの転送量を計算しないため、第１のコスト計算方式に比べて、動作が予測しやすくコスト計算が簡単であるが、必ずしもタスク切り替えに伴うデータ転送量が最小になるとは限らないという点に注意が必要である。図９を用いて第２のコスト計算方式を説明する。
【００９８】
図９には、タスク切り替え判定のための第２のコスト計算方法で用いるコスト階層を示す評価テーブルが例示される。図９では縦軸にはタスク切り替えに際して入れ替え対象とするタスクＴＳＫ、ローカルメモリＬＭＡ、セクション・コンフィギュレーションＳＣＦＧをコスト判定の対象として示し、横軸にコスト判定レイヤーＬ１、Ｌ２、Ｌ３を示している。コスト判定レイヤーＬ１における入れ替え対象はタスクＴＳＫである。コスト判定レイヤーＬ２における入れ替え対象はタスクＴＳＫおよびローカルメモリＬＭＡである。この入れ替えは、実行中にタスクを中断し、別のタスクを実行する場合に、前後のタスクで使用するローカルメモリＬＭＡの領域が重複している場合や、新たに実行するタスクが利用するローカルメモリＬＭＡの領域がロードされていな場合に生ずる。ローカルメモリの入れ替えは、演算途中のデータを退避したり、演算結果を退避して保存したり、次に実行するタスクが利用するデータをセットするのに必要になる。タスクを中断して違うタスクを実行する場合のみでなく、前タスク終了後、新しくタスクを実行する場合の前タスクの結果の退避や、新タスクの入力データセットも対象になる。入れ替え(ストア及びロード)のみでなく、単なるロードの場合もある。コスト判定レイヤーＬ３における入れ替え対象はタスクＴＳＫ、ローカルメモリＬＭＡ及びセクション・コンフィギュレーションＳＣＦＧである。レイヤーＬ１が最もタスク切り替えコストが小さく、レイヤーＬ３が最もタスク切り替えコストが大きいと判定される。Ｌ１は、タスクの切り替え時にＬＭＡのエリアの入れ替えや、ＳＣＦＧの入れ替えが発生しない場合である。Ｌ２は、タスクの切り替え時にＬＭＡのエリアの入れ替えが発生し、ＳＣＦＧの入れ替えが発生しない場合である。Ｌ３は、タスクの切り替え時にＬＭＡのエリアの入れ替えが発生し、ＳＣＦＧの入れ替えが発生する場合である。
【００９９】
図９の例では同図に示すレイヤー構成としたが、コンフィギュレーション・バッファＣＦＧＢＵＦの容量や、ローカルメモリＬＭＡの容量によりこの評価テーブルを変更することでさまざまな動的再構成プロセッサに対応することができる。
【０１００】
以上で説明したように本発明の構成を採用したマイクロコンピュータＭＣＵを利用することにより、プロセッサＰＥ１，ＰＥ２、サブ・プロセッサＳＰＵ、動的再構成プロセッサＤＲＰ１，ＤＲＰ２を搭載した１チップにおいて処理全体におけるタスク切り替えによるコスト、すなわちオーバーヘッドを少なくすることができ、全体の処理性能を向上させることができる。
【０１０１】
図１０には、マイクロコンピュータＭＣＵの別の例が示される。同図に示されるマイクロコンピュータＭＣＵはプロセッサＰＥ１，ＰＥ２を含む回路ブロックＢＬＫ１と、動的再構成プロセッサＤＲＰ１，ＤＲＰ２及びサブ・プロセッサＳＰＵを含む回路ブロックＢＬＫ２とをブリッジ回路ＢＲＧを介して接続した点が図１とは相違される。バス・ステート・コントローラはＢＳＣ１、ＢＳＣ２とを別々に有し、夫々に異なる外部メモリＥＸＭＥＭ１，ＥＸＭＥＭ２が接続される。図１０の構成によれば、各回路ブロックＢＬＫ１，ＢＬＫ２内ではバスＩＢＵＳ１，ＩＢＵＳ２を流れるデータがお互いに干渉しないために、よりスムーズにマイクロコンピュータ内の処理が実行できる利点がある。また、タスク切り替えに際して前記コストを判定するとき、ブリッジ回路ＢＲＧをまたぐメモリアクセスのコストを大きくすることにより、より正確なコストの計算を行うことも可能である。
【０１０２】
以上本発明者によってなされた発明を具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば動的再構成プロセッサＤＲＰ１，ＤＲＰ２とプロセッサＰＥ１，ＰＥ２の数は２個に限定されず、適宜の単数又は複数個に変更可能である。外部メモリＥＸＭＥＭをマイクロコンピュータＭＣＵにオンチップしてもよい。
【０１０３】
また、第１プロセッサはデータフロー型の動的再構成プロセッサに限定されず、セットされた命令やコマンドに従ったデータ処理を行なうプロセッサであってもよい。この場合に、ローカルメモリは例えばコマンドバッファとデータメモリとされる。
【０１０４】
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるマイクロコンピュータに適用した場合について説明したが、本発明はそれに限定されるものではなく、各種半導体集積回路に適用することができる。本発明は、少なくとも、複数のプロセッサを含むことを条件に適用することができる。
【図面の簡単な説明】
【０１０５】
【図１】本発明にかかる半導体集積回路の一例とされるマイクロコンピュータの構成を例示するブロック図である。
【図２】本発明に係るマイクロコンピュータに含まれる動的再構成プロセッサの構成を例示するブロック図である。
【図３】動的再構成プロセッサのコンフィギュレーションの階層構成を例示する説明図である。
【図４】マイクロコンピュータにおけるソフトウェアの階層構成を例示する説明図である。
【図５】動的再構成プロセッサのコンフィギュレーションとタスクの構成を示す概念図である。
【図６】動的再構成プロセッサに割り当てるタスクの管理情報を示す説明図である。
【図７】動的再構成プロセッサに割り当てるタスクが利用するローカルメモリ管理情報を示す説明図である。
【図８】動的再構成プロセッサに割り当てるタスクの切り替え判定処理に関するフローチャートである。
【図９】動的再構成プロセッサに割り当てるタスク切り替え判定のための第２のコスト計算方法で用いるコスト階層を示す評価テーブルの説明図である。
【図１０】本発明に係るマイクロコンピュータの別の例を示すブロック図である。
【符号の説明】
【０１０６】
ＭＣＵ  マイクロコンピュータ、
ＥＸＭＥＭ  外部メモリ
ＰＥ１，ＰＥ２  プロセッサ
ＤＲＰ１，ＤＲＰ２  動的再構成プロセッサ
ＳＰＵ  サブ・プロセッサ
ＩＢＵＳ  プロセッサ間バス
ＲＣＡ  リコンフィギュラブル・セル・アレイ
ＬＭＡ  ローカルメモリ
ＣＦＧＭ  コンフィギュレーション・マネージャ
ＣＦＧＢＵＦ  コンフィギュレーション・バッファ
ＢＵＳＩＦ  バス・インターフェース
ＳＣＦＧ  セクション・コンフィギュレーション
ＳＰＵ−ＡＰＩ  アプリケーション・プログラム・インタフェース
ＤＲＰ−ＡＰＩ  アプリケーション・プログラム・インタフェース
ＲＰＣ  リモート・プロシージャ・コール
ＤＲＰＣＣ  ＤＲＰ制御カーネル
ＴＩＤ  タスク番号
ＣＦＧＩＤ  セクション・コンフィギュレーション番号
ＴＧＴＤＲＰ  動的再構成プロセッサ番号
ＴＳＫＰＲＩ  タスク実行優先度
ＳＴＰＴ  タスク実行開始ポイント
ＥＮＤＰＴ  タスク実行終了ポイント
ＳＰＤＰＴ  タスク実行中断ポイント
ＡＩＤ  ローカルメモリのエリア番号
ＢＵＦＡＤＲ  データ退避先メモリアドレス
ＬＭＳＴ  ローカルメモリのステータス
ＬＭＩＮＦＯ  ローカルメモリのデータ情報
【図１】
2008152470.tif 000003
【図２】
2008152470.tif 000004
【図３】
2008152470.tif 000005
【図４】
2008152470.tif 000006
【図５】
2008152470.tif 000007
【図６】
2008152470.tif 000008
【図７】
2008152470.tif 000009
【図８】
2008152470.tif 000010
【図９】
2008152470.tif 000011
【図１０】
2008152470.tif 000012