(57)【特許請求の範囲】
【請求項１】
あるシーケンスのデータ処理命令を処理するためのプロセッサコアと、
前記データ処理命令のシーケンス内で提供されるコプロセッサ命令を実行する複数のコプロセッサとを備え、各コプロセッサ命令が、これら複数のコプロセッサのうちのどれがそのコプロセッサ命令を実行するのかを識別するのに使用される、コプロセッサ命令に関連した仮想的コプロセッサ番号を有し、
関連する仮想的コプロセッサ番号を有する各コプロセッサ命令に対し、そのコプロセッサ命令を実行できる前記複数のコプロセッサ内の幾つかのコプロセッサが存在するデータ処理装置において、
該データ処理装置が、仮想コプロセッサ番号を割り当て、この仮想的コプロセッサ番号に関連した命令をどのコプロセッサが実行するのかをマッピングに基づき、仮想的コプロセッサ番号ごとに決定するようになっている、コプロセッサ決定論理回路を更に含む、データ処理装置。
【請求項２】
任意の仮想的コプロセッサ番号に対し、コプロセッサ番号が割り当てられ、よってそのコプロセッサ番号を有するコプロセッサ命令を実行する責任を果たすコプロセッサを変更するように、前記プロセッサコアがマッピングの変更を呼び出しできる、請求項１記載のデータ処理装置。
【請求項３】
前記コプロセッサ決定論理回路が、コプロセッサ命令に関連する仮想的コプロセッサ番号を有するコプロセッサ命令を実行する責任を果たすコプロセッサを、仮想的コプロセッサ番号ごとに識別するマッピングを維持するための記憶装置を含み、前記コプロセッサ決定論理回路が前記プロセッサコアに応答し、マッピングを変更するようになっている、請求項２記載のデータ処理装置。
【請求項４】
前記プロセッサコアがバスを介し、前記複数のコプロセッサに結合されており、データ処理命令のシーケンス内で提供される任意のコプロセッサ命令をバスに出力するようになっており、前記コプロセッサ決定論理回路が、コプロセッサが実行すべきコプロセッサ命令を識別するのに使用される仮想的コプロセッサ番号を各コプロセッサに通知するようになっており、各コプロセッサがコプロセッサ命令に関連する仮想的コプロセッサ番号を参照し、バス上に存在するコプロセッサ命令を実行すべきかどうかを決定するようになっている、請求項１記載のデータ処理装置。
【請求項５】
前記プロセッサコアがマルチタスクからのデータ処理命令を実行するようになっており、タスク間で必要とされるコプロセッサが変わるようになっており、現在実行中のタスクが必要とするコプロセッサに仮想的コプロセッサ番号が割り当てられるよう、タスク切り替え後に前記プロセッサコアがマッピングを変更するようになっている、請求項１記載のデータ処理装置。
【請求項６】
前記プロセッサコアがタスク切り替え時、およびタスク切り替え後の任意のデータ処理命令の処理前にマッピングを変更するようになっている、請求項５記載のデータ処理装置。
【請求項７】
タスク切り替え時にコプロセッサへのアクセスが一時的にディスエーブルされ、よってプロセッサコアがコプロセッサ命令を処理しようとする場合に例外を検出し、例外ハンドラーを読み出すようになっており、該例外ハンドラーがコプロセッサへのアクセスを再イネーブルし、マッピングを変更するようになっている、請求項５記載のデータ処理装置。
【請求項８】
前記コプロセッサ決定論理回路が、コプロセッサ命令に関連する仮想的コプロセッサ番号を有するコプロセッサ命令を実行する責任を果たすコプロセッサを仮想的コプロセッサ番号ごとに識別するマッピングを維持するための記憶装置を備え、前記コプロセッサ決定論理回路が、プロセッサコアに応答してマッピングを変更するようになっており、前記コプロセッサ決定論理回路の記憶装置が仮想的コプロセッサ番号の割り当てられるコプロセッサを識別するコプロセッサ識別子を仮想的コプロセッサ番号ごとに記憶するようになっており、前記コプロセッサ決定論理回路が、
前記記憶装置の内容を受信し、コプロセッサに割り当てられた仮想的コプロセッサ番号を識別するコプロセッサ番号信号をコプロセッサごとに発生するようになっているデコーダを更に備えた、請求項１記載のデータ処理装置。
【請求項９】
コプロセッサをイネーブルすべきかどうかを識別するイネーブルフラグを、各コプロセッサ識別子と共に前記記憶装置が更に記憶するようになっており、前記デコーダが、コプロセッサがイネーブルされているかどうかを表示するイネーブル信号をコプロセッサごとに発生するようになっている、請求項８記載のデータ処理装置。
【請求項１０】
前記デコーダが複数のデコーディング要素を備え、１つのデコーディング要素が各コプロセッサに関連しており、各デコーディング要素が記憶装置の内容を受信し、コプロセッサ番号信号および対応するコプロセッサのためのイネーブル信号を識別する出力信号を発生するようになっている、請求項９記載のデータ処理装置。
【請求項１１】
各デコーディング要素が前記記憶装置内の前記コプロセッサ識別子と前記関連するコプロセッサのコプロセッサ識別子とを比較するためのコンパレータ論理回路と、対応するコプロセッサのためのコプロセッサ番号信号をコンパレータ論理回路の出力から発生するためのエンコーダとを備えた、請求項１０記載のデータ処理装置。
【請求項１２】
各デコーディング要素が、コンパレータ論理回路の出力および前記記憶装置からのイネーブルフラグに基づき、対応するコプロセッサのためのイネーブル信号を発生するためのイネーブル信号発生論理回路を更に備えた、請求項１１記載のデータ処理装置。
【請求項１３】
あるシーケンスのデータ処理命令を処理するためのプロセッサコアおよび前記データ処理命令のシーケンス内で提供されるコプロセッサ命令を実行するための複数のコプロセッサを有するデータ処理装置に、コプロセッサ命令を実行させるように、該データ処理装置を作動させる方法において、
（ｉ）前記複数のコプロセッサのうちのどれがコプロセッサ命令を実行すべきかを識別するのに使用される仮想的コプロセッサ番号と各コプロセッサ命令とを関連付ける工程を備え、関連する仮想的コプロセッサ番号を有するコプロセッサ命令ごとに、そのコプロセッサ命令を実行できる複数のコプロセッサ内の幾つかのコプロセッサが設けられており、
（ｉｉ）仮想的コプロセッサ番号に関連する命令をどのコプロセッサが実行するかをマッピングに基づき仮想的コプロセッサ番号ごとに決定する工程を備えた、コプロセッサ命令を実行するためにデータ処理装置を作動させる方法。
【請求項１４】
（ｉｉｉ）コプロセッサ命令に関連する仮想的コプロセッサ番号を有するコプロセッサ命令を実行する責任を果たすコプロセッサを、仮想的コプロセッサ番号に対して変更するようマッピングの変更をイネーブルする工程を更に備えた、請求項１３記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ処理装置においてコプロセッサの命令を取り扱うための技術に関する。
【０００２】
【従来の技術】
通常、データ処理装置はデータ処理命令のシーケンスを処理するためのプロセッサコアを内蔵している。このデータ処理装置の性能を改善するために、特定の計算を特に取り扱うようになっている１つ以上のコプロセッサを設けることが知られている。一例として、汎用プロセッサは浮動小数点計算を行うのに良好に適しているとは言えないので、かかる計算を取り扱うための特殊な浮動小数点ユニット（ＦＰＵ）の開発が行われている。ＦＰＵは浮動小数点計算を取り扱うのにプロセッサコアが使用できるコプロセッサとして実現できる。別の例として、特にＭＰＥＧの符号化／アクセレレーションを実行するためのコプロセッサを設けることもできる。
【０００３】
多数のコプロセッサを内蔵するデータ処理装置では、通常プロセッサコアが処理すべきデータ処理命令のシーケンスには適当なコプロセッサによって取り扱う多数のコプロセッサ命令を含む。従って、プロセッサコアがかかるコプロセッサ命令に出会うと、プロセッサコアはこのコプロセッサ命令を適当なコプロセッサへ送って実行させる。特定のコプロセッサ命令に対する適当なコプロセッサを識別するために、通常各コプロセッサ命令はそのコプロセッサ命令を実行すべきコプロセッサをユニークに識別するコプロセッサ命令に関連したコプロセッサ番号を有する。
【０００４】
【発明が解決しようとする課題】
コプロセッサ番号を指定するために設定されるビット数により、特定できるコプロセッサの数が制限されることが理解できよう。例えばコプロセッサ番号を指定するのに４ビットを使用する場合、１６個までのコプロセッサをユニークに識別できることは明らかである。一般にビットスペースは貴重である。従って、特定の実現例で望まれるコプロセッサの数が、コプロセッサ番号を指定するのに割り当てられるその時のビットによって、ユニークに識別できる数よりも大きくなった場合、単にコプロセッサの場合を指定するのに使用されるビット数を増し、所望するコプロセッサの全てをユニークに識別できるようにすることは一般にできない。
【０００５】
例えばコプロセッサ番号は命令自身の内部のフィールドとして指定されることが多い。この命令は所定の数のビット、例えば３２ビットで指定しなければならならず、種々の情報、例えば命令を実行するための条件、必要な計算の識別、ソースレジスタおよび目的レジスタの識別などを含まなければならない。従って、命令内の各ビットは利用できるビット内で必要な情報の全てを指定できるように、極めて注意深く使用しなければならない。従って、コプロセッサ番号を指定し、よって１６個のコプロセッサをユニークに識別できるようにするのに、４ビットを使用する先の例を検討すると、１７個以上のコプロセッサを設けたい場合、後でコプロセッサ番号を指定するのに５ビットを使用できるようになる可能性はない。
【０００６】
更に所定の実現例では、将来の使用のために１つ以上の可能なコプロセッサの番号を保留することは可能であるが、このことは特定の設計において内蔵できるコプロセッサの番号を制限する。
【０００７】
従って、データ処理装置の設計で、より多数のコプロセッサを追加できることが好ましいので、これらプロセッサにコプロセッサ番号を割り当てる問題もより深刻となっている。
【０００８】
【課題を解決するための手段】
本発明の第１の特徴によれば、データ処理命令のシーケンスを処理するためのプロセッサコアと、前記データ処理命令のシーケンス内で提供されるコプロセッサ命令を実行するための複数のコプロセッサとを備え、各コプロセッサ命令が、これら複数のコプロセッサのうちのどれがそのコプロセッサ命令を実行するのかを識別するのに使用され、各コプロセッサ命令に関連し、そのコプロセッサ命令を実行する前記複数のコプロセッサ中の幾つかのコプロセッサが存在する仮想的コプロセッサ番号を有するデータ処理装置において、該データ処理装置が、各仮想コプロセッサ番号に対して、マッピングに基づき、どのプロセッサがこの仮想的コプロセッサ番号に割り当てられており、この仮想的コプロセッサ番号に関連する命令を実行するのかを決定する、コプロセッサ決定論理回路を更に含む、データ処理装置が提供される。
【０００９】
本発明によれば、データ処理命令のシーケンスを処理する際の特定の時点でコプロセッサの全てが使用できるようになっている必要はない。従って、本発明によれば、必要な特定のコプロセッサに割り当てできる多数の仮想的コプロセッサ番号が提供される。従って、コプロセッサ命令はこの命令に関連した１つの仮想的コプロセッサ番号を有することができ、コプロセッサ決定論理回路はその仮想的コプロセッサ番号に対し、この仮想的コプロセッサ番号をどのコプロセッサに割り当てるかを決定するようになっている。この決定はマッピングを基準にして行われる。
【００１０】
この方法によれば、コプロセッサを指定するのに利用できるコプロセッサ番号の数よりも多い数のコプロセッサをデータ処理装置に内蔵することが可能となる。
【００１１】
このデータ処理装置は初期化の際に一回マッピングを設定する構成とする。これとは異なり、データ処理装置の作動中にマッピングをダイナミックに変更できるようにする機構を設けることもできる。好ましい実施例では、前記プロセッサコアがマッピングの変更を呼び出すことにより、任意の仮想的コプロセッサ番号に対し、このコプロセッサ番号が割り当てられ、よってそのコプロセッサ番号を有するコプロセッサ命令を実行する責任を果たすコプロセッサの変更が可能となる。従って、かかる実施例ではプロセッサコアは任意の時点でマッピングの変更を呼び出しできる。
【００１２】
一実施例ではプロセッサコアはマッピングの変更を直接要求してもよいし、また、これとは異なり、マッピングを変更するための別個の機構を設けることもできることが理解できよう。
【００１３】
実際には、コプロセッサは２つのカテゴリーに分けることができる。第１のカテゴリーは常時利用できなければならない包括的コプロセッサ、例えばＦＰＵコプロセッサまたはデバッグおよび制御コプロセッサである。かかるコプロセッサには対応する汎用コプロセッサをユニークに識別する固定されたコプロセッサ番号が割り当てられ、これに対してコプロセッサ決定論理回路を使用する必要はないようにする事が好ましい。コプロセッサの第２のカテゴリーはアプリケーション特定コプロセッサであり、そのうちの一例は先に述べたＭＰＥＧ用エンコーディング／アクセレレーションコプロセッサである。特定のアプリケーション、アプリケーションスレッド、タスクなどの実行中に、利用できる状態にならなければならないかかる多数のアプリケーション特定コプロセッサが一般に存在する。利用できる状態になっていなければならないこれらアプリケーション特定コプロセッサはかかるアプリケーション、アプリケーションスレッド、タスクなどの間で明らかに変化する。好ましい実施例ではこのカテゴリーのコプロセッサには仮想的コプロセッサ番号が提供される。従って、特定の時点で特定の仮想的コプロセッサ番号をどのアプリケーション特定コプロセッサに割り当てるかを決定するようになっているコプロセッサ決定論理回路により仮想的コプロセッサ番号とアプリケーション特定コプロセッサとのマッピングを行うようになっている。
【００１４】
このマッピングはコプロセッサ決定論理回路による参照のためにデータ処理装置内の適当なロケーションに記憶できると理解できよう。しかしながら、好ましい実施例では、前記コプロセッサ決定論理回路は、コプロセッサ命令に関連する仮想的コプロセッサ番号を有するコプロセッサ命令を実行する責任を果たすコプロセッサを、仮想的コプロセッサ番号ごとに識別するマッピングを維持するための記憶装置を含み、前記コプロセッサ決定論理回路は前記プロセッサコアに応答し、マッピングを変更するようになっている。好ましい実施例では、コプロセッサ決定論理回路内の多数のレジスタ内に実際にマッピングが設けられる。
【００１５】
プロセッサコアにより適当なコプロセッサにコプロセッサ命令を発行する多数の異なる方法があることが理解できよう。例えば各コプロセッサ命令に関連したコプロセッサ番号を参照し、次にこのコプロセッサ番号によって決定される適当なコプロセッサにコプロセッサ命令をルーティングするための所定の分配論理回路をコア内またはコア外のいずれかに設けることができる。コプロセッサ命令に関連した仮想的コプロセッサ番号を有するコプロセッサ命令に対して、その分配論理回路が正しく作動できるようにするために、その論理回路は各仮想的コプロセッサ番号に対し、その仮想的コプロセッサ番号が割り当てられたコプロセッサを識別するための信号をコプロセッサ決定論理回路から受信する。
【００１６】
しかしながら、好ましい実施例では、前記プロセッサコアはバスを介し、前記複数のコプロセッサに結合されており、データ処理命令のシーケンス内で提供される任意のコプロセッサ命令をバスに出力するようになっており、前記コプロセッサ決定論理回路は、コプロセッサが実行すべきコプロセッサ命令を識別するのに使用される仮想的コプロセッサ番号を各コプロセッサに通知するようになっており、各コプロセッサはコプロセッサ命令に関連する仮想的コプロセッサ番号を参照し、バス上に存在するコプロセッサ命令を実行すべきかどうかを決定するようになっている。従って、かかる実施例では個々のコプロセッサは各コプロセッサ命令に関連したコプロセッサ番号に基づき、これらコプロセッサが実行しなければならないのはどのコプロセッサ命令であるかを決定する役割を果たす。このコプロセッサ決定論理回路はそのコプロセッサによって実行すべきコプロセッサ命令を識別するのに使用される仮想的コプロセッサ番号を各コプロセッサに通知し、よって所望するコプロセッサによって各コプロセッサ命令を取り扱うことが可能となる。
【００１７】
プロセッサコアは、データ処理命令のシーケンスの実行中の、必要とするいかなる時点においても、マッピングの変更を呼び出すことが可能な構成とし得ることが解る。以下の記載において、「タスク」と言う語は、コプロセッサの所定の組をアクセスすることを要求する任意のアプリケーション、アプリケーションスレッド、タスク、ルーチン等を意味するものとして使用される。
好ましい実施例では、前記プロセッサコアはマルチタスクからのデータ処理命令を実行するようになっており、タスク間で必要とされるコプロセッサが変わるようになっており、現在実行中のタスクが必要とするコプロセッサに仮想的コプロセッサ番号が割り当てられるよう、タスク切り替え後に前記プロセッサコアがマッピングを変更するようになっている
【００１８】
従って、かかるマルチタスクの例は、マルチタスクオペレーティングシステムの制御によりプロセッサコアがデータ処理命令を実行中に切り替えられる個々のタスクとなる。しかしながら、本明細書で定義する語としてのマルチ「タスク」の存在にとって、マルチタスクオペレーティングシステムを使用するための要件は存在しないことが理解できよう。
【００１９】
タスクの切り替え後にマッピングを変更する方法は多数あることが理解できよう。第１の方法は、プロセッサコアがタスク切り替え時およびタスク切り替え後の任意のデータ処理命令の処理前にプロセッサコアがマッピングを変更させる方法である。この方法は実現が容易であり、タスクの切り替え後のコプロセッサ命令が処理される前に、仮想的コプロセッサ番号とコプロセッサとの間の正しいマッピングが所定の場所に存在することを保証する。しかしながら、再マッピング方法では一般にかなりの時間がかかり、従って、この方法はどのタスク切り替えに対しても時間オーバーヘッドを必要とする。
【００２０】
別の方法はタスク切り替え時にコプロセッサへのアクセスを一時的にディスエーブルし、結果として、プロセッサコアがコプロセッサ命令を処理しようとする時、例外が検出され、例外ハンドラーが呼び出される方法である。この例外ハンドラーはコプロセッサへのアクセスを再イネーブルし、マッピングを変更させるようになっている。この方法によれば、特定のタスクへのタスク切り替えの後、次のタスクの切り替えが行われる前にコプロセッサへのアクセスをそのタスクが実際に必要としない場合、そのタスクのための再マッピングを実行するのに必要なオーバーヘッドが存在しなくなる。コプロセッサ命令が不正確に処理されないように保証するために、プロセッサコアがコプロセッサへのコプロセッサ命令を発行しようと試みる場合、未定義命令の例外が生じるように、タスク切り替え後にコプロセッサへのアクセスを一時的にディスエーブルする。これによって例外ハンドラーが呼び出される。この呼び出しは好ましい実施例では例外を取り扱うのに移用されるソフトウェアルーチンである。この特殊なケースでは、例外ハンドラーはコプロセッサへのアクセスを再イネーブルし、実行中のその時のタスクに従ってマッピングを変更するようになっている。
【００２１】
コプロセッサへのアクセスを一時的にディスエーブルできる方法は多数あることが理解できよう。第１に、マッピングが有効でないことを表示するための値をコプロセッサ決定論理回路のレジスタ内に記憶できる。これとは異なり、コプロセッサのアクセスをディスエーブルするための値をプロセッサコアのレジスタ内に書き込むこともできる。好ましい実施例ではデバッグおよび制御機能を実行するよう、プロセッサコア内に実際に１つ以上のコプロセッサを設け、好ましい実施例ではこれら特定のコプロセッサはディスエーブルされない。
【００２２】
コプロセッサ決定論理回路を配置できる方法は種々存在することが理解できよう。例えばコプロセッサ決定論理回路はコプロセッサごとに１つのレジスタを含むことができ、各コプロセッサに割り当てられる仮想的コプロセッサ番号（割り当てられる場合）は対応するレジスタに記憶される。これによってコプロセッサ決定論理回路から各コプロセッサに容易に出力信号を発生し、そのコプロセッサに割り当てられた仮想的コプロセッサ番号をそのコプロセッサに通知することができる。しかしながら、かかる方法はプログラムのモデルの見地から比較的複雑となる。その理由は、任意の時点で２つ以上のコプロセッサに同じ仮想的コプロセッサ番号が割り当てられないことを保証するルーチンを所定位置に挿入しなければならないからである。更に、比較的多数のレジスタを使用しなければならない。
【００２３】
従って、好ましい実施例では、前記コプロセッサ決定論理回路の記憶装置は仮想的コプロセッサ番号の割り当てられるコプロセッサを識別するコプロセッサ識別子を仮想的コプロセッサ番号ごとに記憶するようになっており、前記コプロセッサ決定論理回路は、前記記憶装置の内容を受信し、コプロセッサに割り当てられた仮想的コプロセッサ番号を識別するコプロセッサ番号信号をコプロセッサごとに発生するようになっているデコーダを更に備える。
【００２４】
この方法は、上記別の方法よりも一般に少ない記憶容量で済む。例えばデータ処理装置の設計で１０個のアプリケーション特定コプロセッサが設けられ、そのうちの最大４個しか特定のタスクに使用されない場合、仮想的コプロセッサ番号の表示を１０個のコプロセッサに対して記憶しなければならない代わりに、好ましい方法ではそのコプロセッサ番号が割り当てられたコプロセッサの表示を４個のコプロセッサ番号に対して記憶することとなるからである。次に、コプロセッサに割り当てられた仮想的コプロセッサ番号（割り当てられている場合）を識別するために、各コプロセッサに送られる信号を記憶装置の内容から発生するためにデコーダが使用される。
【００２５】
好ましい実施例では、コプロセッサをイネーブルすべきかどうかを識別するイネーブルフラグを、各コプロセッサ識別子と共に前記記憶装置が更に記憶するようになっており、前記デコーダは、コプロセッサがイネーブルされているかどうかを表示するイネーブル信号をコプロセッサごとに発生するようになっている。このようなイネーブル信号を使用することには、コプロセッサに対して発生された対応するコプロセッサ番号信号に更なる資質を与えることが可能となり、特定のコプロセッサがコプロセッサ番号信号を受信したとしても、そのコプロセッサは、そのコプロセッサがイネーブルされていることをイネーブル信号が確定した場合にのみ、その仮想的コプロセッサ番号を有するコプロセッサ命令を処理する。
【００２６】
好ましい実施例では、前記デコーダは複数のデコーディング要素を備え、１つのデコーディング要素が各コプロセッサに関連しており、各デコーディング要素は記憶装置の内容を受信し、コプロセッサ番号信号および対応するコプロセッサのためのイネーブル信号を識別する出力信号を発生するようになっている。従って、かかる好ましい実施例では、各コプロセッサに対してコプロセッサ番号信号とイネーブル信号とは別々に発生される。
【００２７】
更に好ましい実施例では、各デコーディング要素は前記記憶装置内の前記コプロセッサ識別子と前記関連するコプロセッサのコプロセッサ識別子とを比較するコンパレータ論理回路と、対応するコプロセッサに対するコプロセッサ番号信号をコンパレータ論理回路の出力から発生するエンコーダとを備える。明らかに記憶装置内のコプロセッサ識別子と関連するコプロセッサのコプロセッサ識別子とが一致していることをコンパレータ論理回路が表示した場合、エンコーダは対応する仮想的コプロセッサ番号を識別する信号をコプロセッサに対して発生するようになっている。コンパレータの論理回路が一致していないと表示した場合、コプロセッサ番号信号は種々の形態をとり得ることが明らかである。例えばそのコプロセッサが現在使用されていないことをコプロセッサに表示するデフォルト値を割り当てできる。
【００２８】
しかしながら、好ましい実施例では各デコーディング要素は、コンパレータ論理回路の出力および前記記憶装置からのイネーブルフラグに基づき、対応するコプロセッサに対するイネーブル信号を発生するイネーブル信号発生論理回路を更に備える。この方法では、コンパレータ論理回路が一致を識別しない時に、コプロセッサ番号信号の値が何であるかは関係のない事である。その理由は、任意の事象においてイネーブル信号は対応するコプロセッサに対し、イネーブルされていないことを表示し、よってコプロセッサがイネーブルされた状態となり、それに割り当てられた対応する仮想的コプロセッサ番号を識別するコプロセッサ番号信号を受信するまで、コプロセッサはコプロセッサ命令を処理しないかである。
【００２９】
本発明の第２の特徴によれば、データ処理命令のシーケンスを処理するプロセッサコアおよび前記データ処理命令のシーケンス内で提供されるコプロセッサ命令を実行する複数のコプロセッサを有するデータ処理装置に、コプロセッサ命令を実行させるように、該データ処理装置を作動させる方法において、（ｉ）前記複数のコプロセッサのうちのどれがコプロセッサ命令を実行すべきかを識別するのに使用される仮想的コプロセッサ番号と各コプロセッサ命令とを関連付ける工程であり、各コプロセッサ命令にそのコプロセッサ命令を実行し得る複数のコプロセッサ内の幾つかのコプロセッサが存在する関連する仮想的コプロセッサ番号を関連づける工程と、（ｉｉ）仮想的コプロセッサ番号に関連する命令をどのコプロセッサが実行するかをマッピングに基づき仮想的コプロセッサ番号ごとに決定する工程を備えた、コプロセッサ命令を実行するためにデータ処理装置を作動させる方法が提供される。
【００３０】
以下、添付図面に示された本発明の好ましい実施例を参照し、単なる例として本発明について説明する。
【００３１】
【発明の実施の形態】
図１は、本明細書ではＣＰＵコアとも称す主プロセッサ１３０と浮動小数点ユニット（ＦＰＵ）コプロセッサ１００と、多数の（本例では１０個の）再マップ可能なコプロセッサ１１０と、メモリ１４０と、コプロセッサ決定周辺装置１５０とを含むデータ処理装置１０を示す。主プロセッサ１３０と、メモリ１４０と、コプロセッサ決定周辺装置１５０とは、主バス１６０（システムバスとも称す）を介してリンクされている。コプロセッサバス１２０は主プロセッサ１３０を種々のコプロセッサ１００、１１０にリンクしている。主プロセッサ１３０の外部のコプロセッサの他に、主プロセッサ１３０内に１つ以上のコプロセッサ１０５、１１５を設けることもできる。図１の例では、デバッグ機能および制御機能を実行するために、本明細書でＣＰＵ１４およびＣＰ１５とも称す２つのコプロセッサ１０５および１１５が主プロセッサ１３０内に設けられている。
【００３２】
作動時に主プロセッサ１３０はデータ処理命令のシーケンスを実行する。これらデータ処理命令はメモリ１４０およびシステムバス１６０に接続できる他の部品、例えばキャッシュメモリまたは入出力システム（簡潔にするために、かかる別の論理要素は図１から除いてある）との相互作用を含む一般的タイプのデータ処理演算を制御する。データ処理命令のシーケンス内にはコプロセッサ命令が埋め込まれている。主プロセッサ１３０はこれらコプロセッサ命令が付加コプロセッサによって実行すべきタイプであると認識し、好ましい実施例ではこの認識はコプロセッサ命令内のコプロセッサ番号フィールドを参照して行われる。従って、主プロセッサ１３０はコプロセッサバス１２０にこれらコプロセッサ命令を発生し、これらコプロセッサ命令はこのコプロセッサバスから付加コプロセッサによって受信される。付加コプロセッサはどのコプロセッサ番号がコプロセッサに割り当てられているかを知っているので、付加コプロセッサは対応するコプロセッサ番号を含む受信したコプロセッサの命令を実行する。
【００３３】
コプロセッサ命令内のコプロセッサ番号のフィールドのサイズにより指定できるユニークなコプロセッサ番号の数が決定される。従って、一例としてコプロセッサ番号のフィールドの長さが４ビットである場合、対応するコプロセッサ番号によって１６個までのコプロセッサをユニークに識別できる。しかしながら実際には、コプロセッサ番号の一部を将来の機能のために保留するケースが多く、従ってコプロセッサにユニークに割り当てるために利用できるコプロセッサ番号の数は１６未満となる可能性が高い。
【００３４】
本発明の好ましい実施例によれば、これらコプロセッサの割り当てに利用できるコプロセッサの番号の総数をデータ処理装置内に設けることができるコプロセッサの数よりも多くできる技術が提供され、この技術は、実行される特定のタスクが利用可能な全コプロセッサのサブセットにのみアクセスすればよいようなデータ処理装置で使用するようになっている。
【００３５】
本発明の好ましい実施例によれば、全利用可能コプロセッサの番号のサブセットが割り当て可能な仮想的コプロセッサ番号と見なされ、これは、コプロセッサの番号とコプロセッサとの間の固定された割り当てではなく、適切なコプロセッサに必要とされる時に必要とされるように設定されるものである。コプロセッサの番号を割り当てでき、これらコプロセッサの番号のサブセットの仮想的プロセッサの番号として使用できる異なる方法は明らかに多数存在している。しかしながら、図７には４ビットのコプロセッサ番号フィールドを有する実現例におけるコプロセッサ番号の使用の特定の例が示されている。図７に示されるように、将来の使用のためにコプロセッサ番号０〜３、８および９ならびに１２および１３が保留されている。コプロセッサ番号１４および１５は常にシステム制御／デバッグコプロセッサＣＰ１４およびＣＰ１５を参照して使用され、ＦＰＵコプロセッサ１００を参照するのに常にコプロセッサ番号１０および１１が使用される。好ましい実施例では２つの別個の作動モード、すなわち１倍精度の作動モードおよび２倍精度の作動モードを識別するためにＦＰＵ１００には２つのコプロセッサ番号が割り当てられている。
【００３６】
このようなコプロセッサ番号の割り当てをした場合、他のコプロセッサの割り当てられにはコプロセッサ番号４、５、６および７しか利用できないことは明らかである。データ処理装置が別の３個以下のコプロセッサしか必要としない場合、これによって明らかに問題は生じない。しかしながら、図１の例では１０個の追加のコプロセッサ１１０が設けられており、この場合、これらコプロセッサを参照するのに４つのコプロセッサ番号しか使用できない。従って、本発明の好ましい実施例では、コプロセッサ番号４〜７は仮想的コプロセッサ番号と見なされ、特定のタスクにとって適切なものとして再マップ可能なコプロセッサ１１０のうちの特定のコプロセッサにマッピングされる。これにより、再マップ可能なコプロセッサ１１０のうちの４つまでを主プロセッサ１３０が実行する特定のタスクによって使用できるようになる。
【００３７】
コプロセッサバス１２０に出力されるコプロセッサ命令が正しいコプロセッサによって正しく実行されることを保証するために、コプロセッサ決定周辺装置１５０が設けられている。この周辺装置は好ましい実施例ではシステムバス１６０を介して主プロセッサ１３０に結合されている。このコプロセッサ決定周辺装置１５０はマッピングに基づき、各仮想的コプロセッサ番号に対し、どのコプロセッサがその仮想的コプロセッサ番号に割り当てられているかを決定し、再マップ可能なコプロセッサ１１０へその情報を伝える役割を果たす。実施例においてこれらを実現する方法が図３および４に関連して詳しく述べられている。
【００３８】
図３は、本発明の好ましい実施例におけるコプロセッサ決定周辺装置１５０の基本構成部品を示す。各仮想的コプロセッサ番号のうちの１つに対し、複数のレジスタ３１０が設けられている。従って、図７のコプロセッサ番号の割り当てを参照すると、４つのレジスタが設けられている。すなわちレジスタ０は仮想的コプロセッサ番号４に関連しており、レジスタ１は仮想的コプロセッサ番号５に関連しており、レジスタ２は仮想的コプロセッサ番号６に関連しており、レジスタ３は仮想的コプロセッサ番号７に関連している。
【００３９】
周期的に、例えばタスクの切り替え時に、主プロセッサ１３０はシステムバス１６０を介してコプロセッサ決定周辺装置１５０へ信号を出力し、主プロセッサ１３０がシステムバス１６０に出力するデータによりレジスタ３１０の内容を更新させることを命令する。これら信号はコプロセッサ決定周辺装置１５０内の読みだし／書き込み論理回路３００によって受信される。各レジスタ３１０は読みだし／書き込み論理回路３００が受信するアドレスを介して識別され、このアドレスに関連するデータは対応するレジスタ内に記憶されるデータとなる。特に好ましい実施例では、各レジスタに対し、１ビットのイネーブル値および４ビットのコプロセッサ識別子の値が与えられる。（本明細書では、プロセッサＩＤとも称す）コプロセッサ識別子は、特定のレジスタ３１０に対応する仮想的コプロセッサ番号に１０個の再マップ可能なコプロセッサ１１０のうちのどれが関連しているかを識別し、イネーブル値はそのコプロセッサをイネーブルすべきかどうかを示す。
【００４０】
各レジスタ内には５ビットの情報だけを記憶するだけでよく、各レジスタが一般に１６ビット長さとなっている場合は、個々のレジスタのうちの上部の半分、または下部の半分のいずれかへの書き込みを取り扱うための別の論理回路を設けることにより、必要とされるレジスタの数を２つまで減少させることが可能となる。しかしながら、簡潔にするために、好ましい実施例は各仮想的コプロセッサ番号に関連付けられる別個のレジスタを使用している。
【００４１】
コプロセッサ決定周辺装置１５０は再マップ可能なコプロセッサ１１０に割り当てられた仮想的コプロセッサ番号およびそのコプロセッサがイネーブルされているかどうかの表示を示すための信号をパス１７０を通して再マップ可能なコプロセッサ１１０の各々に出力するようになっている。この機能はデコーダ３２０によって実行され、このデコーダは４つのレジスタ３１０の各々からのデータを受信し、対応するコプロセッサ１１０に出力すべき１０個の信号の一組を発生するようになっている。好ましい実施例では、デコーダは各再マップ可能なコプロセッサのためのデコーディング要素３３０を内蔵している。このデコーディング要素３３０の構造は図４を参照し、より詳細に示されている。
【００４２】
図４に示されるように、各デコーディング要素３３０は４つのレジスタ３１０の各々からのコプロセッサＩＤ値およびイネーブル値を受信する。これらコプロセッサＩＤ値はコンパレータ４００のバンクへ提供され、各コンパレータは入力信号として受信されたコプロセッサＤＩとレジスタ４１０内に記憶されていたコプロセッサＩＤとを比較する。上記レジスタ４１０に記憶されていたコプロセッサＩＤはデコーディング要素が関連している再マップ可能なコプロセッサを識別するものである。図４ではデコーディング要素３３０はコプロセッサ８に関連する要素と見なされているので、レジスタ４１０に記憶されたコプロセッサＩＤはコプロセッサ８を識別する。
【００４３】
各コプロセッサ４００はコンパレータ４００に入力されるコプロセッサＩＤとレジスタ４１０内のコプロセッサＩＤとが一致した場合、ヒット信号（好ましくは論理１の値）を発生し、一致しない場合は論理０の値を出力する。コンパレータ４００からの４つの出力信号すべてがエンコーダ４１０へ入力信号として送られる。エンコーダ４１０は４つの入力信号に基づき、対応するコプロセッサへ出力すべき仮想的コプロセッサ番号を発生するようになっている。図５の表には好ましい実施例で使用されるコードが示されている。
【００４４】
従って、その表に示されるように、レジスタ０からのコプロセッサＩＤを受信したコンパレータ４００によってヒット信号が出力された場合、他の３つのコンパレータが発生した信号に拘わらず、仮想コプロセッサ番号の出力は４となる。レジスタ０からのコプロセッサＩＤを受信したコンパレータがヒット信号を発生せず、レジスタ１からのコプロセッサＩＤを受信するようになっているコンパレータがヒット信号を発生した場合、他の２つのコンパレータからの出力に拘わらず、仮想コンパレータ番号の出力は５となる。同様に、レジスタ２からのコプロセッサＩＤを受信したコンパレータによってヒット信号が出力され、レジスタ０およびレジスタ１の内容を見たコンパレータによってヒット信号が発生されない場合、レジスタ３の内容を見たコンパレータからの出力に拘わらず、仮想的コンパレータ番号の出力は６となる。最後に、レジスタ３からのコプロセッサＩＤを受信したコンパレータによってヒット信号が発生された場合において、他のコンパレータのいずれもヒット信号を発生しないと仮定した場合、エンコーダ４２０によって７の仮想的コプロセッサ番号が出力される。
【００４５】
この方法では、特定のタスクが必要とするプロセッサ（最大４個まで）が、それらプロセッサの実行しなければならないコプロセッサ命令に関連した仮想的コプロセッサ番号の表示をデコーダ３２０から受信することが理解できよう。特定のタスクによって使用されないコプロセッサに対して、対応するデコーディング要素３３０のエンコーダ４２０はコンパレータ４００から４つの論理０の値を受信する。かかる状況では、エンコーダ４２０はコプロセッサに対し、これらプロセッサが選択されていないことを表示するユニークな出力を発生するようにできる。しかしながら、好ましい実施例では、かかる状況でエンコーダ４２０が出力する仮想的コプロセッサ番号の実際の値は重要ではない。その理由は、主プロセッサ１３０が実行する特定のタスクによって必要とされていないコプロセッサに対し、値が論理０となるイネーブル信号を発生するための追加の論理回路が、各デコーディング要素３３０内に設けられているからである。
【００４６】
この論理回路はＡＮＤゲート４３０、４４０、４５０および４６０から成り、これらＡＮＤゲートの出力は対応するコプロセッサに対して出力されるイネーブル信号を発生するのに使用されるＯＲゲート４７０にルーティングされる。ＡＮＤゲート４３０はレジスタ０からのコプロセッサＩＤを受信する比較器からのパス４３５上の出力信号と共に、レジスタ０内に記憶されていたイネーブル信号を受信する。従って、レジスタ０内のコプロセッサＩＤと対応するコプロセッサのコプロセッサＩＤとが一致し、イネーブル信号がセットされた場合、ＡＮＤゲート４３０は論理１の値を出力する。この論理１の値の信号は次に、対応するコプロセッサにこのコプロセッサがイネーブルされることを表示するためのセットイネーブル信号としてＯＲゲート４７０を介して出力される。この状況では、ＡＮＤゲート４４０、４５０および４６０のいずれも、論理１の出力を発生できない。その理由は、これらゲートはそれらの入力信号の１つとしてパス４３５上に出力された信号の反転信号（すなわち論理０の値）を受信しているからである。
【００４７】
同様に、特定のデコーディング要素がパス４３５ではなく、パス４４５上に一致信号を発生した場合、仮想的コプロセッサ番号の出力は５となり、モニタすべき対応するイネーブル信号はＡＮＤゲート４４０によって発生される信号となる。レジスタ１内のイネーブル信号がセットされていると仮定した場合、ＡＮＤゲート４４０は論理１の出力を発生する。その理由は、パス４３５上の信号は０であり、パス４４５上の信号は１となるからである。他のＡＮＤゲート４３０、４５０または４６０のいずれも、論理１の出力を発生できないので、ＯＲゲート４７０から出力されるイネーブル信号はＡＮＤゲート４４０の出力によって決定されることが理解できよう。
【００４８】
同様に、パス４４５上にヒット信号が発生された場合、イネーブル信号はＡＮＤゲート４５０の出力によって決定され、一方、パス４６５上にヒット信号が発生されると、ＯＲゲート４７０によって発生されるイネーブル信号はＡＮＤゲート４６０の出力によって決定される。
【００４９】
従って、コプロセッサ決定周辺装置１５０はコプロセッサのうちのどれをイネーブルするかの決定と共に、各再マップ可能なコプロセッサ１１０に割り当てられる仮想的コプロセッサ番号を決定し、次にその情報を対応するコプロセッサに伝え、よってこれらコプロセッサはコプロセッサバス１２０に出力されこれらコプロセッサ向けのコプロセッサ命令を実行する状態になる。
【００５０】
図６は、図３および４に示された論理回路の代わりに使用できるコプロセッサ決定周辺装置１５０の別の実施例を示すブロック図である。この実施例によれば、図３の読み出し／書き込み論理回路３００に類似した読み出し／書き込み論理回路６００が設けられる。しかしながら、レジスタバンク６１０は、再マップ可能なコプロセッサ１１０ごとにレジスタを含むので、この実施例では１０個のレジスタを含む。従って、読み出し／書き込み論理回路はレジスタバンク６１０内の１０個のレジスタの各々に読み出しおよび書き込みができなければならない。適当な時点、例えばタスクの切り替えの後の時点で、主プロセッサ１３０はシステムバス１６０上に出力される新しいデータにより、レジスタ６１０の内容を更新することをコプロセッサ決定周辺装置１５０に命令する信号をコプロセッサ決定周辺装置１５０に発生する。レジスタごとにコプロセッがイネーブルされているかどうかを示すイネーブル信号と共に、対応するコプロセッサに割り当てられる仮想的コプロセッサ番号を指定するデータが提供される。次にこのデータは、デコーダ３２０を必要とすることなく、パス１０７を通して対応するコプロセッサに直接出力できる。
【００５１】
図６に示された実施例がデコーダを必要としないが、より多数のレジスタが必要である場合、潜在的にこの実施例は論理回路のより大きい部分を必要とする。更に、かかる実施例はレジスタのうちの任意のレジスタに、競合する情報が記憶されないことを保証する条件を仮定すれば、プログラマーのモデルの見地から、一般により複雑となる。
【００５２】
図１の実施例では、コプロセッサ決定周辺装置１５０はシステムバス１６０を介して主プロセッサ１３０に結合されるように示されている。しかしながら、コプロセッサ決定周辺装置１５０をこのように結合するという条件はなく、むしろコプロセッサバス１２０を介し、主プロセッサ１３０に結合される別個のコプロセッサとしてコプロセッサ決定論理回路を実現できることが理解できよう。かかる回路構造は図２に示されている。基本的には、コプロセッサ決定コプロセッサ２００の動作は図１のコプロセッサ決定周辺装置１５０の動作と同じとなる。しかしながら、主プロセッサ１３０は１つ以上のプロセッサ命令を使用することにより、コプロセッサ決定コプロセッサ２００とコンタクトし、この場合、かかるコプロセッサ命令のコプロセッサ番号フィールドがその特定のコプロセッサ２００を指定する。明らかに、かかる実施例ではコプロセッサ決定コプロセッサ２００は、好ましくはＦＰＵコプロセッサ１００に割り当てられた固定番号と同じように固定されたコプロセッサ番号を有することが好ましい。
【００５３】
上記説明から、本発明の好ましい実施例は、特定のコプロセッサ番号に対し、その時にその番号が割り当てられた実際のコプロセッサを決定するために設けられた簡単な周辺装置により、コプロセッサ番号をダイナミックに特定のコプロセッサに割り当てできるような技術を提供することが理解できよう。この簡単な周辺ユニットは任意の時点、例えばタスク切り替えの時点で仮想的コプロセッサ番号とコプロセッサとの間のマッピングを変えることができるように、プロセッサコアの制御によりプログラムできる。特定のタスクに対し、プロセッサコアによって実行されるコードは、特定のコプロセッサ番号を有するコプロセッサ命令を取り扱うようになっているのはどのコプロセッサであるかを識別し、この情報はそのマッピングを更新するために周辺ユニットへ送られる必要な更新情報を発生するために使用される。
【００５４】
以上で、本発明の特定の実施例について説明したが、この発明はこの実施例だけに限定されているものではなく、発明の範囲では多数の変形および追加が可能であることは明らかである。例えば発明の範囲から逸脱することなく、次の従属請求項の特徴事項と独立請求項の特徴事項とを種々に組み合わせることができる。
【図面の簡単な説明】
【図１】本発明の第１実施例に係わるデータ処理装置の要素を示すブロック図である。
【図２】本発明の第２実施例に係わるデータ処理装置の要素を示すブロック図である。
【図３】本発明の好ましい実施例のコプロセッサ決定論理回路の実施例を示すブロック図である。
【図４】好ましい実施例に係わるデコーダ内のデコーディング要素の１つの構造をより詳細に示すブロック図である。
【図５】図４に示されたエンコーダの作動を示すテーブルである。
【図６】コプロセッサ決定論理回路の別の実施例を示す。
【図７】コプロセッサ番号の使用の一例を示す。
【符号の説明】
１０  データ処理装置
１００  ＦＰＵコプロセッサ
１１０  再マップ可能なコプロセッサ
１２０  コプロセッサバス
１３０  ＣＰＵコア
１４０  メモリ
１５０  コプロセッサ決定周辺ユニット
１６０  システムバス
【図１】
0003773470.tif 000002
【図２】
0003773470.tif 000003
【図３】
0003773470.tif 000004
【図４】
0003773470.tif 000005
【図５】
0003773470.tif 000006
【図６】
0003773470.tif 000007
【図７】
0003773470.tif 000008