(57)【要約】  装置は、仮想マルチプロセッサコンテキスト、１つまたは複数の仮想処理要素コンテキスト、および構成論理を含む。仮想マルチプロセッサコンテキストは、リソースを規定し、かつ仮想マルチプロセッサの構成状態を制御する。１つまたは複数の仮想処理要素コンテキストそれぞれは、１つまたは複数の仮想処理要素のうちの１つに排他的に対応する。１つまたは複数の仮想処理要素コンテキストそれぞれは、１つまたは複数の仮想処理要素のうちの１つがリソースを構成することを許可されるかどうかを規定する第１の論理と、１つまたは複数の仮想処理要素のうちの前記１つに割り振られるリソースのサブセットを規定する第２の論理とを有する。構成論理は、仮想マルチプロセッサコンテキストおよび１つまたは複数の仮想処理要素コンテキストに結合される。構成論理は、１つまたは複数の仮想処理要素のうちの１つがリソースを構成することを許可されるかどうかを検出し、仮想マルチプロセッサが構成状態に入ることを指示するために仮想マルチプロセッサコンテキストを更新し、かつ規定された仮想処理要素コンテキストを更新することによってリソースを構成する。
2007504536.tif 000002
【特許請求の範囲】
【請求項１】
仮想マルチプロセッサ内の１つまたは複数の仮想処理要素に関してリソースを構成する装置であって、
リソースを規定しかつ仮想マルチプロセッサの構成状態を制御する、仮想マルチプロセッサコンテキストと、
それぞれが１つまたは複数の仮想処理要素のうちの１つに排他的に対応する、１つまたは複数の仮想処理要素コンテキストとを含み、前記仮想処理要素コンテキストそれぞれが、
１つまたは複数の仮想処理要素のうちの前記１つが、リソースを構成することを許可されるかどうかを規定する第１の論理と、
１つまたは複数の仮想処理要素のうちの前記１つに割り振られるリソースのサブセットを規定する第２の論理とを含み、前記装置がさらに、
構成論理を含み、該構成論理が、前記仮想マルチプロセッサコンテキストおよび前記１つまたは複数の仮想処理要素コンテキストに結合され、１つまたは複数の仮想処理要素のうちの前記１つが、リソースを構成することを許可されるかどうかを検出し、仮想マルチプロセッサが前記構成状態に入ることを指示するために、前記仮想マルチプロセッサコンテキストを更新し、かつ規定された仮想処理要素コンテキストを更新することによってリソースを構成する、装置。
【請求項２】
１つまたは複数の仮想処理要素が、仮想マルチプロセッサ内で並行して実行され、仮想マルチプロセッサが、対称マルチプロセッシングオペレーティングシステムに対して対称マルチプロセッサとして見える、請求項１に記載の装置。
【請求項３】
前記１つまたは複数の仮想処理要素それぞれが、１つまたは複数のスレッドを並行して実行するように構成された１つまたは複数のスレッドコンテキストを含む、請求項１に記載の装置。
【請求項４】
１つまたは複数のスレッドコンテキストそれぞれが、構成されたリソースを共用し、前記構成されたリソースが、リソースから１つまたは複数の仮想処理要素のうちの対応する１つに割り振られている、請求項３に記載の装置。
【請求項５】
リソースが、仮想マルチプロセッサの１つまたは複数の属性を含み、特定の仮想処理要素に関するリソースの構成は、前記特定の仮想処理要素が、仮想マルチプロセッサ内の１つまたは複数の仮想処理要素のうちの他のすべての仮想処理要素に対して実行する方法を決定する、請求項１に記載の装置。
【請求項６】
リソースが、変換ルックアヘッドバッファ属性を含む、請求項１に記載の装置。
【請求項７】
リソースが、コプロセッシング属性を含む、請求項１に記載の装置。
【請求項８】
リソースが、浮動小数点処理属性を含む、請求項１に記載の装置。
【請求項９】
リソースが、メディアアクセラレーション属性を含む、請求項１に記載の装置。
【請求項１０】
リソースが、リソースを構成することの許可を含む、請求項１に記載の装置。
【請求項１１】
リソースが、スレッドコンテキストを含む、請求項１に記載の装置。
【請求項１２】
リソースが、仮想マルチプロセッサの帯域幅を含む、請求項１に記載の装置。
【請求項１３】
リソースが、仮想処理要素をイネーブルすることを含む、請求項１に記載の装置。
【請求項１４】
１つまたは複数の仮想処理要素それぞれが、ＭＩＰＳ３２／ＭＩＰＳ６４命令および特権リソースアーキテクチャのインスタンス化を含む、請求項１に記載の装置。
【請求項１５】
前記規定された仮想処理要素コンテキストが、１つまたは複数の仮想処理要素のうちの前記１つに対応する、請求項１に記載の装置。
【請求項１６】
１つまたは複数の仮想処理要素のうちの前記１つが、リソースを構成することのそれ自体の許可を取り消すことができる、請求項１５に記載の装置。
【請求項１７】
前記規定された仮想処理要素コンテキストが、１つまたは複数の仮想処理要素のうちの異なる１つに対応する、請求項１に記載の装置。
【請求項１８】
１つまたは複数の仮想処理要素のうちの前記１つが、１つまたは複数の仮想処理要素のうちの前記異なる１つにリソースを構成することの許可を取り消すことができる、請求項１７に記載の装置。
【請求項１９】
前記仮想マルチプロセッシングコンテキストが、１つまたは複数のレジスタを含み、前記構成状態が、その中の構成状態フィールドに値を書き込むことによって制御される、請求項１に記載の装置。
【請求項２０】
前記第１の論理が、１つまたは複数の仮想プロセッサコンテキストレジスタ内のマスタ仮想プロセッサフィールドを含み、前記マスタ仮想プロセッサフィールドの特定の値は、１つまたは複数の仮想処理要素のうちの前記１つが、リソースを構成することを許可されるかどうかを規定する、請求項１に記載の装置。
【請求項２１】
前記第２の論理が、１つまたは複数の仮想プロセッサコンテキストレジスタ内の１つまたは複数のフィールドを含み、前記１つまたは複数のフィールドが、リソースを構成することを許可された所与の仮想処理要素によってのみ更新されることができる、請求項１に記載の装置。
【請求項２２】
前記所与の仮想処理要素が、リソースを構成することを許可されていない場合に、前記構成論理が例外を引き起こす、請求項２１に記載の装置。
【請求項２３】
前記構成状態を確立しかつリソースを構成するために、１つまたは複数のプログラム命令が、１つまたは複数の仮想処理要素のうちの前記１つによって実行される、請求項１に記載の装置。
【請求項２４】
仮想マルチプロセッサ内の仮想処理要素にリソースを割り当てるリソース構成機構体であって、
リソースを規定しかつ仮想マルチプロセッサの構成状態を制御するための仮想マルチプロセッサレジスタと、
仮想処理要素それぞれについて、対応する仮想処理要素がリソースを割り当てることを許可されるかどうかを規定し、かつ前記対応する仮想処理要素に割り振られるリソースのサブセットを規定するための仮想処理要素レジスタと、
前記仮想マルチプロセッサレジスタおよび前記仮想処理要素レジスタに結合され、前記対応する仮想処理要素がリソースを割り当てることを許可されるかどうかを検出し、仮想マルチプロセッサが前記構成状態に入ることを指示するために前記仮想マルチプロセッサレジスタを更新し、かつ前記仮想処理要素レジスタのうちの選択された１つを更新することによってリソースを割り当てるための構成論理とを含む、リソース構成機構体。
【請求項２５】
リソースが、変換ルックアヘッドバッファ属性を含む、請求項２４に記載の装置。
【請求項２６】
リソースが、コプロセッシング属性を含む、請求項２４に記載の装置。
【請求項２７】
リソースが、浮動小数点処理属性を含む、請求項２４に記載の装置。
【請求項２８】
リソースが、メディアアクセラレーション属性を含む、請求項２４に記載の装置。
【請求項２９】
リソースが、リソースを構成することの許可を含む、請求項２４に記載の装置。
【請求項３０】
リソースが、スレッドコンテキストを含む、請求項２４に記載の装置。
【請求項３１】
リソースが、仮想マルチプロセッサの帯域幅を含む、請求項２４に記載の装置。
【請求項３２】
リソースが、仮想処理要素をイネーブルすることを含む、請求項２４に記載の装置。
【請求項３３】
仮想処理要素それぞれが、ＭＩＰＳ３２／ＭＩＰＳ６４命令および特権リソースアーキテクチャのインスタンス化を含む、請求項２４に記載の装置。
【請求項３４】
前記対応する仮想処理要素が、リソースを割り当てることのそれ自体の許可を取り消すことができる、請求項２４に記載の装置。
【請求項３５】
前記対応する仮想処理要素が、仮想処理要素のうちの異なる１つにリソースを構成することの許可を取り消すことができる、請求項２４に記載の装置。
【請求項３６】
コンピューティングデバイスと共に使用されるコンピュータプログラム製品であって、
コンピュータ使用可能媒体を含み、該コンピュータ使用可能媒体が、コンピュータ使用可能媒体に実施されるコンピュータ可読プログラムコードを有し、かつ仮想マルチプロセッサ内の仮想処理要素に関してリソースを構成する装置を記述するように構成され、
前記コンピュータ可読プログラムコードが、
前記リソースを規定する仮想マルチプロセッサコンテキストを記述するように構成され、前記仮想マルチプロセッサの構成状態を制御する、第１のプログラムコードと、
仮想処理要素コンテキストを記述するように構成された第２のプログラムコードとを含み、仮想処理要素コンテキストそれぞれが、前記仮想処理要素のうちの１つに排他的に対応し、前記仮想処理要素のうちの前記１つが前記リソースを構成することを許可されるかどうかを規定し、かつ前記仮想処理要素のうちの前記１つに割り振られる前記リソースのサブセットを規定する仮想処理要素コンテキストを記述し、前記コンピュータ可読プログラムコードがさらに、
構成論理を記述するように構成された第３のプログラムコードを含み、前記構成論理が、前記仮想マルチプロセッサコンテキストおよび前記仮想処理要素コンテキストに結合され、前記仮想処理要素のうちの前記１つが前記リソースを構成することを許可されるかどうかを検出し、前記仮想マルチプロセッサが前記構成状態に入ることを指示するために前記仮想マルチプロセッサコンテキストを更新し、かつ規定された仮想処理要素コンテキストを更新することによって前記リソースを構成する、コンピュータプログラム製品。
【請求項３７】
前記リソースが、前記仮想マルチプロセッサの１つまたは複数の属性を含み、前記規定された仮想処理要素に関する前記リソースの構成は、前記規定された仮想処理要素が、前記仮想マルチプロセッサ内の前記仮想処理要素のうちの他のすべての仮想処理要素に対して実行する方法を決定する、請求項３６に記載のコンピュータプログラム製品。
【請求項３８】
前記リソースが、変換ルックアヘッドバッファ属性を含む、請求項３６に記載のコンピュータプログラム製品。
【請求項３９】
前記リソースが、コプロセッシング属性を含む、請求項３６に記載のコンピュータプログラム製品。
【請求項４０】
前記リソースが、浮動小数点処理属性を含む、請求項３６に記載のコンピュータプログラム製品。
【請求項４１】
前記リソースが、メディアアクセラレーション属性を含む、請求項３６に記載のコンピュータプログラム製品。
【請求項４２】
前記リソースが、前記リソースを構成することの許可を含む、請求項３６に記載のコンピュータプログラム製品。
【請求項４３】
前記リソースが、スレッドコンテキストを含む、請求項３６に記載のコンピュータプログラム製品。
【請求項４４】
前記リソースが、前記仮想マルチプロセッサの帯域幅を含む、請求項３６に記載のコンピュータプログラム製品。
【請求項４５】
前記リソースが、仮想処理要素をイネーブルすることを含む、請求項３６に記載のコンピュータプログラム製品。
【請求項４６】
前記仮想処理要素それぞれが、ＭＩＰＳ３２／ＭＩＰＳ６４命令および特権リソースアーキテクチャのインスタンス化を含む、請求項３６に記載のコンピュータプログラム製品。
【請求項４７】
伝送媒体で実施されるコンピュータデータ信号であって、
仮想マルチプロセッサ内の仮想処理要素に関してリソースを構成する装置を記述するように構成されたコンピュータ可読プログラムコードを含み、
該コンピュータ可読プログラムコードが、
前記リソースを規定する仮想マルチプロセッサコンテキストを記述するように構成され、前記仮想マルチプロセッサの構成状態を制御する、第１のプログラムコードと、
仮想処理要素コンテキストを記述するように構成された第２のプログラムコードとを含み、仮想処理要素コンテキストそれぞれが、前記仮想処理要素のうちの１つに排他的に対応し、前記仮想処理要素のうちの前記１つが前記リソースを構成することを許可されるかどうかを規定し、かつ前記仮想処理要素のうちの前記１つに割り振られる前記リソースのサブセットを規定し、前記コンピュータ可読プログラムコードがさらに、
構成論理を記述するように構成された第３のプログラムコードを含み、前記構成論理が、前記仮想マルチプロセッサコンテキストおよび前記仮想処理要素コンテキストに結合され、前記仮想処理要素のうちの前記１つが前記リソースを構成することを許可されるかどうかを検出し、前記仮想マルチプロセッサが前記構成状態に入ることを指示するために前記仮想マルチプロセッサコンテキストを更新し、かつ規定された仮想処理要素コンテキストを更新することによって前記リソースを構成する、コンピュータデータ信号。
【請求項４８】
前記リソースが、前記仮想マルチプロセッサの１つまたは複数の属性を含み、前記規定された仮想処理要素に関する前記リソースの構成は、前記規定された仮想処理要素が、前記仮想マルチプロセッサ内の前記仮想処理要素のうちの他のすべての仮想処理要素に対して実行する方法を決定する、請求項４７に記載のコンピュータデータ信号。
【請求項４９】
前記リソースが、変換ルックアヘッドバッファ属性を含む、請求項４７に記載のコンピュータデータ信号。
【請求項５０】
前記リソースが、コプロセッシング属性を含む、請求項４７に記載のコンピュータデータ信号。
【請求項５１】
前記リソースが、浮動小数点処理属性を含む、請求項４７に記載のコンピュータデータ信号。
【請求項５２】
前記リソースが、メディアアクセラレーション属性を含む、請求項４７に記載のコンピュータデータ信号。
【請求項５３】
前記リソースが、前記リソースを構成することの許可を含む、請求項４７に記載のコンピュータデータ信号。
【請求項５４】
前記リソースが、スレッドコンテキストを含む、請求項４７に記載のコンピュータデータ信号。
【請求項５５】
前記リソースが、前記仮想マルチプロセッサの帯域幅を含む、請求項４７に記載のコンピュータデータ信号。
【請求項５６】
前記リソースが、仮想処理要素をイネーブルすることを含む、請求項４７に記載のコンピュータデータ信号。
【請求項５７】
前記仮想処理要素それぞれが、ＭＩＰＳ３２／ＭＩＰＳ６４命令および特権リソースアーキテクチャのインスタンス化を含む、請求項４７に記載のコンピュータデータ信号。
【請求項５８】
仮想マルチプロセッサ内の仮想処理要素に関してリソースを構成する方法であって、
仮想マルチプロセッサコンテキストを介して、リソースを第１に規定し、仮想マルチプロセッサの構成状態を制御することと、
それぞれが仮想処理要素のうちの１つに排他的に対応する仮想処理要素コンテキストを介して、仮想処理要素のうちの１つがリソースを構成することを許可されるかどうかを第２に規定し、仮想処理要素のうちの１つに割り振られるリソースのサブセットを第３に規定することと、
仮想マルチプロセッサコンテキストおよび仮想処理要素コンテキストに結合された構成論理を介して、仮想処理要素のうちの１つがリソースを構成することを許可されるかどうかを検出し、仮想マルチプロセッサが前記構成状態に入ることを指示するために仮想マルチプロセッサコンテキストを第１に更新し、規定された仮想処理要素コンテキストを第２に更新することによってリソースを構成することとを含む方法。
【請求項５９】
前記第２に更新することが、仮想マルチプロセッサの１つまたは複数の属性を割り振ることを含む、請求項５８に記載の方法。
【請求項６０】
前記割り振ることが、変換ルックアヘッドバッファ属性を割り当てることを含む、請求項５９に記載の方法。
【請求項６１】
前記割り振ることが、コプロセッシング属性を割り当てることを含む、請求項５９に記載の方法。
【請求項６２】
前記割り振ることが、浮動小数点処理属性を割り当てることを含む、請求項５９に記載の方法。
【請求項６３】
前記割り振ることが、メディアアクセラレーション属性を割り当てることを含む、請求項５９に記載の方法。
【請求項６４】
前記割り振ることが、リソースを構成することの許可を割り当てることを含む、請求項５９に記載の方法。
【請求項６５】
前記割り振ることが、スレッドコンテキストを割り当てることを含む、請求項５９に記載の方法。
【請求項６６】
前記割り振ることが、仮想マルチプロセッサの帯域幅を割り当てることを含む、請求項５９に記載の方法。
【請求項６７】
前記割り振ることが、所与の仮想処理要素をイネーブルすることを含む、請求項５９に記載の方法。
【請求項６８】
仮想処理要素それぞれが、ＭＩＰＳ３２／ＭＩＰＳ６４命令および特権リソースアーキテクチャのインスタンス化を含む、請求項５８に記載の方法。
【請求項６９】
仮想マルチプロセッシングシステムであって、
複数のプログラムスレッドに関連するプログラム命令を保管するように構成されたメモリと、
前記メモリに結合され、仮想マルチプロセッサ内で構成された１つまたは複数の仮想処理要素上で前記プログラム命令を実行するように構成された仮想マルチプロセッサとを含み、前記仮想マルチプロセッサが、前記１つまたは複数の仮想処理要素の構成に関してリソースを規定し、かつ前記仮想マルチプロセッサの構成状態を制御する仮想マルチプロセッサコンテキストを有し、
前記１つまたは複数の仮想処理要素それぞれが、
前記１つまたは複数の仮想処理要素の前記それぞれが、前記リソースを構成することを許可されるかどうかを規定し、前記１つまたは複数の仮想処理要素のうちの規定された１つに割り振られる前記リソースのサブセットを規定する、仮想処理要素コンテキストと、
前記仮想マルチプロセッサコンテキストおよび前記仮想処理要素コンテキストに結合され、前記１つまたは複数の仮想処理要素の前記それぞれが、前記リソースを構成することを許可されるかどうかを検出し、前記仮想マルチプロセッサが前記構成状態に入ることを指示するために、前記仮想マルチプロセッサコンテキストを更新し、かつ前記１つまたは複数の仮想処理要素のうちの前記規定された１つに対応する規定された仮想処理要素コンテキストを更新することによって前記リソースを構成する構成論理とを含む、仮想マルチプロセッシングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、すべての意図および目的のために参照により本明細書にそれぞれが組み込まれている次の米国仮特許出願の恩恵を主張するものである。
【表１】
2007504536.tif 000003
【０００２】
本願は、すべての意図および目的のために参照により本明細書にそれぞれが組み込まれている、それぞれが本願と同一の譲受人および少なくとも１人の本願と同一の発明人を有する次の同時係属の米国非仮特許出願の一部継続出願である。
【表２】
2007504536.tif 000004
【０００３】
上記の同時係属の米国非仮特許出願の両方が、次の米国仮特許出願の恩恵を主張するものである。
【表３】
2007504536.tif 000005
【０００４】
本願は、すべての意図および目的のために参照により本明細書にそれぞれが組み込まれている、次の同時係属の米国非仮特許出願に関連する。
【表４】
2007504536.tif 000006
【０００５】
本発明は、全般的に仮想マルチプロセッサの分野に関し、具体的には、１つまたは複数の仮想処理要素間での仮想マルチプロセッサ内のリソースの動的構成を提供する機構体に関する。
【背景技術】
【０００６】
現在の設計者は、多数の技術を使用してマイクロプロセッサ性能を高めている。ほとんどのマイクロプロセッサが、固定された周波数で動作するクロック信号を使用して動作する。各クロックサイクルで、マイクロプロセッサの回路が、それぞれの機能を実行する。ヘネシ（Ｈｅｎｎｅｓｓｙ）およびパターソン（Ｐａｔｔｅｒｓｏｎ）によれば、マイクロプロセッサの性能の真の尺度は、１つのプログラムまたはプログラムの集合を実行するのに必要な時間である。この観点から、マイクロプロセッサの性能は、そのクロック周波数、１つの命令を実行するのに必要なクロックサイクル数の平均値（言い換えると、クロックサイクルあたりに実行される命令の個数の平均値）、およびプログラムまたはプログラムの集合で実行される命令の個数に応じる。半導体の科学者およびエンジニアは、マイクロプロセッサがますます高いクロック周波数で動作することを可能にする、当技術分野での進歩を提供し続ける。これらの進歩は、主に、トランジスタサイズの縮小を可能にし、この縮小は、それから設計される集積回路でのより高速のスイッチング時間をもたらす。実行される命令の個数は、主に、プログラムによって実行されるタスクによって固定されているが、マイクロプロセッサの命令セットアーキテクチャによっても影響を受ける。しかし、大きい性能向上が、クロックサイクルあたりの命令を改善するアーキテクチャ的技術および編成技術、特に命令の並列実行（すなわち、「並列性」）を可能にする技術によって実現されてきた。
【０００７】
マイクロプロセッサのクロックサイクルあたりの命令ならびにそのクロック周波数を改善した並列性技術の１つが、パイプライン化である。パイプライン化は、組立ラインのステージに実質的に似た形で、マイクロプロセッサのパイプラインステージ内で複数の命令の実行をオーバーラップさせる。理想的な状況で、各クロックサイクルに、１つの命令がパイプラインで新しいステージに移動し、この新しいステージは、その命令に対して異なる機能を実行する。したがって、各個々の命令は、完了に複数のクロックサイクルを要するが、個々の命令の複数のサイクルがオーバーラップしているので、命令ごとの平均クロック数が減る。パイプライン化の性能改善は、プログラム内の命令がそれを許容する範囲まで、すなわち、命令が実行のためにその先行命令に依存せず、したがってその先行命令と並列に実行できる（一般に、これを命令レベル並列性と称する）範囲まで実現することができる。命令レベル並列性が、現代のマイクロプロセッサによって活用されるもう１つの形が、同一クロックサイクル中の異なる機能ユニットへの実行のための複数の命令の発行であり、これらの機能ユニットは、それぞれ、そのクロックサイクル中に、それにあてられた命令を実行する。この形で命令レベル並列性を達成するマイクロプロセッサを、一般に、「スーパースカラ」マイクロプロセッサと称する。
【０００８】
上で述べた並列性機構は、個々の命令レベルでの並列性に関する。しかし、命令レベル並列性の活用を介して達成できる性能改善は、限られている。制限された命令レベル並列性によって課せられるさまざまな制約および他の性能を制約する問題が、最近、命令のブロック、シーケンス、ストリーム、またはスレッドのレベルでの並列性活用への関心を復活させた。このレベルの並列性を、一般に、スレッドレベル並列性と称する。スレッドとは、単に、プログラム命令のシーケンスまたはストリームである。マルチスレッド化されたマイクロプロセッサ（ｍｕｌｔｉｔｈｒｅａｄｅｄ  ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）は、インターリーブマルチスレッディング、ブロックドマルチスレッディング、または同時マルチスレッディングなど、さまざまなスレッドの命令のフェッチおよび発行を指図する、あるスケジューリングポリシに従って複数のスレッドを並行して実行する。マルチスレッド化されたマイクロプロセッサは、通常、複数のスレッドが、並行した形でマイクロプロセッサの機能ユニット（たとえば、命令フェッチおよびデコードユニット、キャッシュ、分岐予測ユニット、およびロード／ストア、整数、浮動小数点、ＳＩＭＤなどの実行ユニット）を共用することを可能にする。しかし、マルチスレッド化されたマイクロプロセッサには、命令をフェッチしかつ発行するように、スレッドの間ですばやく切り替える能力を促進するために、各スレッドの独自の状態を保管する、ハードウェア／ファームウェアリソースまたはスレッドコンテキストの複数の組が含まれる。たとえば、各スレッドコンテキストは、命令フェッチのためにそれ自体のプログラムカウンタおよびスレッド識別情報を含み、通常は、それ自体の汎用レジスタセットも含む。
【０００９】
マルチスレッディングマイクロプロセッサによって対処される、性能を制約する問題の一例が、キャッシュミスに起因して実行されなければならない、マイクロプロセッサの外部のメモリへのアクセスが、通常は比較的長い待ち時間を有するという事実である。現代のマイクロプロセッサベースのコンピュータシステムのメモリアクセス時間は、一般に、キャッシュヒットアクセス時間より１桁から２桁長い。その結果、パイプラインがメモリからのデータを待って失速している間に、シングルスレッドマイクロプロセッサのパイプラインステージの一部またはすべてが、アイドルになり、多数のクロックサイクルの間に有用な作業を実行しない場合がある。マルチスレッド化されたマイクロプロセッサは、メモリフェッチ待ち時間中に他のスレッドからの命令を発行し、これによって、ページフォールトに応答してタスク切り替えを実行するオペレーティングシステムに多少似ているがそれより微細な細分性レベルで、パイプラインステージが有用な作業を実行して前進することを可能にすることによって、この問題を軽減することができる。性能を制約する問題の他の例が、分岐誤予測および付随するパイプラインフラッシュに起因する、データ依存性に起因する、または除算命令などの長い待ち時間の命令に起因する、パイプライン失速およびそれに付随するアイドルサイクルである。やはり、そうでなければアイドルになるはずのパイプラインステージに、他のスレッドからの命令を発行するマルチスレッド化されたマイクロプロセッサの能力は、スレッドを含むプログラムまたはプログラムの集合を実行するのに必要な時間を大きく減らすことができる。もう１つの問題、特に組込みシステムにおける問題が、割込みサービスに関連する、浪費されるオーバーヘッドである。通常、入出力デバイスが、マイクロプロセッサに割込みイベントを信号で伝える時に、そのマイクロプロセッサは、割込みサービスルーチンに制御を切り替えるが、この切り替えは、現在のプログラム状態を保存し、割込みをサービスし、割込みがサービスされた後に現在のプログラム状態を復元することを必要とする。マルチスレッド化されたマイクロプロセッサは、イベントサービスコードが、それ自体のスレッドコンテキストを有するそれ自体のスレッドになる能力を提供する。その結果、入出力デバイスがイベントを信号で伝えることに応答して、マイクロプロセッサは、すばやく（おそらく単一のクロックサイクルで）イベントサービススレッドに切り替えることができ、これによって、従来の割込みサービスルーチンオーバーヘッドをこうむらなくなる。
【００１０】
命令レベル並列性の度合が、マイクロプロセッサがパイプライン化およびスーパースカラ命令発行の利益を利用できる範囲を指定するのと同様に、スレッドレベル並列性の度合は、マイクロプロセッサがマルチスレッド化された実行を利用できる範囲を指定する。スレッドの重要な特性が、マルチスレッド化されたマイクロプロセッサで実行される他のスレッドとは無関係であることである。スレッドは、その命令が他のスレッドの命令に依存しない範囲まで、別のスレッドとは無関係である。スレッドの独立の特性は、マイクロプロセッサがさまざまなスレッドの命令を並行して実行することを可能にする。すなわち、マイクロプロセッサは、他のスレッドの発行される命令にかかわりなく、あるスレッドの命令を実行ユニットに発行することができる。スレッドが共通のデータにアクセスする範囲まで、スレッド自体は、互いにデータアクセスを同期化するようにプログラムされて、正しい動作を保証し、マイクロプロセッサ命令発行ステージが、依存性を気にかける必要をなくさなければならない。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
前述から観察できるように、複数のスレッドを並行して実行する複数のスレッドコンテキストを有するプロセッサは、複数のスレッドを含むプログラムまたはプログラムの集合を実行するのに必要な時間を減らすことができる。しかし、複数のスレッドコンテキストの導入は、特にシステムソフトウェアに関して、複数の命令ストリームおよびそれらに関連するスレッドコンテキストを管理するという新しい問題の組も導入する。また、本発明人は、マイクロプロセッサでの命令実行に関連する並列性を改善するのに必要なもう１つのレベルに気付いた。これおよび関連する応用に関して、本発明人は、同一マイクロプロセッサ内での仮想処理要素の提供で対処する。このレベルでは、マルチスレッド化された仮想処理要素は、プログラムスレッドの効果的な切り替えを保証するために、複数のプログラムカウンタおよびスレッドコンテキストを実装することに加えて、所与の命令セットの単一のインスタンス化を提供するのに必要なリソースのすべて、およびプロセッサごとのオペレーティングシステムイメージを実行するのに十分な特権リソースアーキテクチャを実装する。効果的に、Ｎ個の仮想処理要素を実装するマイクロプロセッサ（すなわち、Ｎ個の仮想処理要素を有する「仮想マルチプロセッサ」）は、オペレーティングシステムソフトウェアからはＮウェイ対称マルチプロセッサとして見える。本発明による仮想マルチプロセッサと、従来の対称マルチプロセッサの間の物理的な相違は、メモリおよびあるレベルの接続性の共用に加えて、仮想マルチプロセッサ内の仮想処理要素が、たとえば命令フェッチおよび発行論理、アドレス変換論理（たとえば、変換ルックアサイドバッファ論理）、整数ユニット、浮動小数点ユニット、マルチメディアユニット、メディアアクセラレーションユニット、およびＳＩＭＤユニットなどの機能ユニット、ならびにコプロセッサなどの、仮想マルチプロセッサのオンチップリソースまたは属性も共用することである。さらに、仮想処理ユニットは、仮想マルチプロセッサの性能属性または利用態様（たとえば、「帯域幅」）も共用しなければならず、これは、主に、仮想処理要素のそれぞれに割り振られるスレッドの個数、１つの仮想処理要素に関連するスレッドが、実行が要求された時に他の仮想処理要素に関連するスレッドに対して優先権を得られる範囲、および仮想処理要素へのあるプロセッサ全体のリソース（たとえば、ロード／ストアバッファ）の割振りに基づいて決定される。たとえば、２つの別個の種類の処理、すなわち、オーディオデータまたはビデオデータのリアルタイム圧縮とグラフィカルユーザインターフェースの動作が行われている組込みシステムを検討されたい。２０世紀末の技術を使用すれば、これらのタスクを、２つの異なるプロセッサ、すなわち、マルチメディアデータを処理するリアルタイムディジタル信号プロセッサ、およびマルチタスキングオペレーティングシステムを実行する対話型プロセッサコアを使用することによって達成することができる。それでも、本発明は、この２つの機能を、同一の仮想マルチプロセッサで実行することを可能にする。仮想マルチプロセッサの２つの仮想処理要素、すなわち、マルチメディア処理タスクの実行専用の仮想処理要素、およびユーザインターフェースタスクの実行専用の仮想処理要素が使用される。２つの仮想処理要素を使用することによって、２つの異なるソフトウェアパラダイムの共存または同時インスタンス化という問題が解決されるが、専用プロセッサと同一の形ではリアルタイム性能要件が保証されない。というのは、マルチメディア仮想処理要素およびユーザインターフェース仮想処理要素が、仮想マルチプロセッサ内のあるリソースを共用しなければならず、仮想マルチプロセッサで実行されるアプリケーションの性能が、上で述べたように、これらのリソースまたは属性が、その中の仮想処理要素のそれぞれにどのように割り振られるかに基づくからである。
【００１２】
特定のマルチプロセッシング応用に合わせて正確に調整されたリソースを有する仮想マルチプロセッサを製造することは、マルチプロセッシング応用が、非常に幅広く多様なリソース要件の組を示す市場では過度にコスト効率が悪い。したがって、本発明人は、この広範囲のマルチプロセッシング応用にまたがって使用されることができる、仮想マルチプロセッサを提供することが非常に望ましいことに気が付いた。本発明人は、さらに、仮想マルチプロセッサに、ソフトウェアによってその中のさまざまな仮想処理要素へのリソースを構成する機構体が含まれることが望ましいことに気付いた。そのような機構体は、それぞれが１つまたは複数のスレッドを実行するように構成される１つまたは複数の仮想処理要素を有するように、仮想マルチプロセッサを構成することを可能にしなければならない。さらに、実行時に信頼される仮想処理要素によってリソースを動的に構成可能であることが望ましく、さらに、構成特権を取り消す機構体を設けることが望ましい。
【課題を解決するための手段】
【００１３】
本発明は、応用の中でも、上で述べた問題を解決し、従来技術の他の問題、短所、および制限に対処することを対象とする。本発明は、仮想マルチプロセッサのリソースを動的に構成するための優れた機構体を提供する。一実施形態で、仮想マルチプロセッサ内の１つまたは複数の仮想処理要素についてリソースを構成する装置を提供する。この装置は、仮想マルチプロセッサコンテキスト、１つまたは複数の仮想処理要素コンテキスト、および構成論理を含む。仮想マルチプロセッサコンテキストは、リソースを規定し、かつ仮想マルチプロセッサの構成状態を制御する。１つまたは複数の仮想処理要素コンテキストそれぞれは、１つまたは複数の仮想処理要素のうちの１つに排他的に対応する。１つまたは複数の仮想処理要素コンテキストそれぞれは、１つまたは複数の仮想処理要素のうちの１つが、リソースを構成することを許可されるかどうかを規定する第１の論理と、１つまたは複数の仮想処理要素のうちの前記１つに割り振られるリソースのサブセットを規定する第２の論理とを有する。構成論理は、仮想マルチプロセッサコンテキストおよび１つまたは複数の仮想処理要素コンテキストに結合される。構成論理は、１つまたは複数の仮想処理要素の１つが、リソースを構成することを許可されるかどうかを検出し、仮想マルチプロセッサが構成状態に入ることを指示するために仮想マルチプロセッサコンテキストを更新し、かつ規定された仮想処理要素コンテキストを更新することによってリソースを構成する。
【００１４】
本発明の一態様は、仮想マルチプロセッサ内の仮想処理要素にリソースを割り当てるリソース構成機構体を想定する。このリソース構成機構体は、仮想マルチプロセッサレジスタ、仮想処理要素ごとの仮想処理要素レジスタ、および構成論理を有する。仮想マルチプロセッサレジスタは、リソースを規定し、かつ仮想マルチプロセッサの構成状態を制御する。仮想処理要素レジスタは、対応する仮想処理要素がリソースを割り当てることを許可されるかどうかを規定し、かつ対応する仮想処理要素に割り振られるリソースのサブセットを規定する。構成論理は、仮想マルチプロセッサレジスタおよび仮想処理要素レジスタに結合される。構成論理は、対応する仮想処理要素がリソースを割り当てることを許可されるかどうかを検出し、仮想マルチプロセッサが構成状態に入ることを指示するために仮想マルチプロセッサレジスタを更新し、かつ仮想処理要素レジスタのうちの選択された１つを更新することによってリソースを割り当てる。
【００１５】
本発明のもう１つの態様は、コンピューティングデバイスと共に使用されるコンピュータプログラム製品を包含する。このコンピュータプログラム製品は、コンピュータ使用可能媒体を含み、コンピュータ使用可能媒体は、コンピュータ使用可能媒体に実施されるコンピュータ可読プログラムコードを有し、かつ仮想マルチプロセッサ内の仮想処理要素についてリソースを構成する装置を記述するように構成される。このコンピュータ可読プログラムコードは、第１のプログラムコード、第２のプログラムコード、および第３のプログラムコードを有する。第１のプログラムコードは、仮想マルチプロセッサコンテキストを記述する。仮想マルチプロセッサコンテキストは、リソースを規定し、かつ仮想マルチプロセッサの構成状態を制御する。第２のプログラムコードは、仮想処理要素コンテキストを記述し、この仮想処理要素コンテキストそれぞれは、仮想処理要素の１つに排他的に対応し、仮想処理要素のうちの１つがリソースを構成することを許可されるかどうかを規定し、かつ前記仮想処理要素の１つに割り振られるリソースのサブセットを規定する。第３のプログラムコードは、構成論理を記述する。構成論理は、仮想マルチプロセッサコンテキストおよび仮想処理要素コンテキストに結合される。構成論理は、仮想処理要素の１つがリソースを構成することを許可されるかどうかを検出し、仮想マルチプロセッサが構成状態に入ることを指示するために仮想マルチプロセッサコンテキストを更新し、かつ規定された仮想処理要素コンテキストを更新することによってリソースを構成する。
【００１６】
もう１つの態様で、本発明は、伝送媒体で実施されるコンピュータデータ信号を想定する。このコンピュータデータ信号は、コンピュータ可読プログラムコードを有し、コンピュータ可読プログラムコードは、仮想マルチプロセッサ内の仮想処理要素についてリソースを構成する装置を記述するように構成される。このコンピュータ可読プログラムコードは、第１のプログラムコード、第２のプログラムコード、および第３のプログラムコードを含む。第１のプログラムコードは、仮想マルチプロセッサコンテキストを記述し、この仮想マルチプロセッサコンテキストは、リソースを規定し、かつ仮想マルチプロセッサの構成状態を制御する。第２のプログラムコードは、仮想処理要素コンテキストを記述し、この仮想処理要素コンテキストそれぞれは、仮想処理要素の１つに排他的に対応し、仮想処理要素の１つがリソースを構成することを許可されるかどうかを規定し、かつ前記仮想処理要素の１つに割り振られるリソースのサブセットを規定する。第３のプログラムコードは、構成論理を記述し、この構成論理は、仮想マルチプロセッサコンテキストおよび仮想処理要素コンテキストに結合される。構成論理は、仮想処理要素の１つがリソースを構成することを許可されるかどうかを検出し、仮想マルチプロセッサが構成状態に入ることを指示するために仮想マルチプロセッサコンテキストを更新し、かつ規定された仮想処理要素コンテキストを更新することによってリソースを構成する。
【００１７】
もう１つの態様で、本発明は、仮想マルチプロセッサ内の仮想処理要素に関してリソースを構成する方法を実施する。この方法には、仮想マルチプロセッサコンテキストを介して、リソースを第１に規定し、かつ仮想マルチプロセッサの構成状態を制御することと、それぞれが仮想処理要素のうちの１つに排他的に対応する仮想処理要素コンテキストを介して、仮想処理要素のうちの１つがリソースを構成することを許可されるかどうかを第２に規定し、かつ仮想処理要素のうちの１つに割り振られるリソースのサブセットを第３に規定することと、仮想マルチプロセッサコンテキストおよび仮想処理要素コンテキストに結合された構成論理を介して、仮想処理要素のうちの１つがリソースを構成することを許可されるかどうかを検出し、仮想マルチプロセッサが前記構成状態に入ることを指示するために仮想マルチプロセッサコンテキストを第１に更新し、かつ規定された仮想処理要素コンテキストを第２に更新することによってリソースを構成することとが含まれる。
【００１８】
もう１つの態様で、本発明は、仮想マルチプロセッシングシステムを包含する。この仮想マルチプロセッシングシステムは、メモリおよび仮想マルチプロセッサを有する。メモリは、複数のプログラムスレッドに関連するプログラム命令を保管する。仮想マルチプロセッサは、メモリに結合される。仮想マルチプロセッサは、仮想マルチプロセッサ内で構成された１つまたは複数の仮想処理要素でプログラム命令を実行する。仮想マルチプロセッサは、１つまたは複数の仮想処理要素の構成についてリソースを規定し、かつ仮想マルチプロセッサの構成状態を制御する、仮想マルチプロセッサコンテキストを有する。１つまたは複数の仮想処理要素それぞれは、仮想処理要素コンテキストおよび構成論理を含む。仮想処理要素コンテキストは、１つまたは複数の仮想処理要素それぞれがリソースを構成することを許可されるかどうかを規定し、かつ１つまたは複数の仮想処理要素のうちの規定された１つに割り振られるリソースのサブセットを規定する。構成論理は、仮想マルチプロセッサコンテキストおよび仮想処理要素コンテキストに結合される。構成論理は、１つまたは複数の仮想処理要素それぞれがリソースを構成することを許可されるかどうかを検出し、仮想マルチプロセッサが構成状態に入ることを指示するために仮想マルチプロセッサコンテキストを更新し、かつ１つまたは複数の仮想処理要素のうちの規定された１つに対応する規定された仮想処理要素コンテキストを更新することによってリソースを構成する。
【００１９】
本発明の上記および他の目的、特徴、および利点は、以下の記載および添付図面に関してよりよく理解される。
【発明を実施するための最良の形態】
【００２０】
以下の記載は、当業者が、特定の応用およびその要件の文脈で提供されるとして本発明を作り、かつ使用することを可能にするために、提示されるものである。しかし、好ましい実施形態に対するさまざまな変更が、当業者に明白であり、本明細書で規定される全般的な原理は、他の実施形態に適用することができる。したがって、本発明は、本明細書で示され、かつ説明される特定の実施形態に制限されることを意図されてはおらず、本明細書で開示される原理および新規な特徴と一貫する最も広い範囲を与えられなければならない。現在のプロセッサで使用される並列性と、それに関連するマルチスレッディング技術およびマルチプロセッシング技術に関する上の背景の説明を考慮して、本発明の議論を、これから図１〜図７を参照して提示する。
【００２１】
図１を参照すると、本発明によるマルチプロセッシング環境１００を示すブロック図が示されている。マルチプロセッシング環境１００は、システムインターフェースコントローラ１０５に結合された仮想マルチプロセッサ１０１を含む。システムインターフェースコントローラ１０５は、システムメモリ１０６、および１つまたは複数の入出力（Ｉ／Ｏ）デバイス１０７に結合される。Ｉ／Ｏデバイス１０７それぞれは、割込み要求ライン１０８を仮想マルチプロセッサ１０１に提供する。仮想マルチプロセッサ１０１は、１つまたは複数の仮想処理要素１０２を含む。１つまたは複数の仮想処理要素１０２それぞれが、対応する仮想処理要素コンテキスト１０４、および１つまたは複数の対応するスレッドコンテキスト１０３を有する。マルチプロセッシング環境１００は、汎用プログラマブルコンピュータシステム、サーバコンピュータ、ワークステーションコンピュータ、パーソナルコンピュータ、ノートブックコンピュータ、携帯情報端末（ＰＤＡ）、または、ネットワークルータまたはスイッチ、プリンタ、マスストレージコントローラ、カメラ、スキャナ、自動車コントローラ、および類似物を含むがこれらに制限されない組込みシステムとすることができるが、これらに制限はされない。
【００２２】
システムメモリ１０６は、仮想マルチプロセッサ１０１での実行のためにプログラム命令を保管し、かつプログラム命令に従って仮想マルチプロセッサ１０１によって処理されるデータを保管する、ＲＡＭメモリまたはＲＯＭメモリなどのメモリとして実施することができる。プログラム命令は、仮想マルチプロセッサ１０１が並行して実行する１つまたは複数のプログラムスレッドを含むことができる。プログラムスレッドまたはスレッドは、プログラム命令のシーケンスまたはストリームと、命令のシーケンスの実行に関連する仮想マルチプロセッサ１０１内の対応する仮想処理要素１０２での状態変化の関連するシーケンスとを含む。各スレッドコンテキスト１０３は、対応するプログラムスレッドの実行をサポートするのに必要なハードウェア状態を含む。一実施形態で、各スレッドコンテキストは、汎用レジスタの組、プログラムカウンタ、ならびに乗算器状態およびコプロセッサ状態などの実行中のスレッドの状態を保存する他のレジスタを含む。仮想処理要素１０２それぞれが、プロセッサごとのオペレーティングシステムイメージの実行に十分な、命令セットアーキテクチャ全体および特権リソースアーキテクチャのインスタンス化をサポートするリソースを提供する。一実施形態で、仮想処理要素１０２それぞれが、ＭＩＰＳ３２／ＭＩＰＳ６４命令セットアーキテクチャ全体および特権リソースアーキテクチャのインスタンス化をサポートするリソースを提供する。仮想処理要素コンテキスト１０４それぞれが、対応する仮想処理要素１０２内で実行されるスレッドの実行をサポートするのに必要なハードウェア状態を含む。一実施形態で、仮想処理要素コンテキスト１０４それぞれが、アドレス変換論理リソース（たとえば、変換ルックアサイドバッファエントリ）、機能ユニット（たとえば、整数ユニット、浮動小数点ユニット、マルチメディアユニットおよびメディアアクセラレーションユニット、ＳＩＭＤユニット、コプロセッサ）、および性能属性など、対応する仮想処理要素１０２に割り振られるリソースを規定する。特定の実施形態で、性能属性は、他の仮想処理要素１０２に割り振られるリソースを停止させかつ構成することの許可、スレッドの個数および列挙、対応する仮想処理要素１０２のイネーブル／抑止、ならびに対応する仮想処理要素１０２に割り振られる仮想マルチプロセッサ１０１の帯域幅関連リソース（たとえば、命令実行帯域幅または優先順位、ロード／ストア帯域幅など）を含む。本発明は、スケジューリングヒント、実行優先順位割り当て、ロード／ストアバッファ割振り、および類似物を含むために、さまざまな帯域幅割振り技術を包含する。
【００２３】
システムインターフェースコントローラ１０５は、仮想マルチプロセッサ１０１をシステムインターフェースコントローラ１０５に結合するプロセッサバスを介して、仮想マルチプロセッサ１０１とインターフェースする。一実施形態で、システムインターフェースコントローラ１０５は、システムメモリ１０６を制御するメモリコントローラを含む。一実施形態で、システムインターフェースコントローラ１０５は、Ｉ／Ｏデバイス１０７が結合される、ＰＣＩバスなどのローカルバスを提供するローカルバスインターフェースコントローラを含む。
【００２４】
Ｉ／Ｏデバイス１０７は、キーボード、マウス、スキャナ、および類似物などのユーザ入力デバイス、モニタ、プリンタ、および類似物などのディスプレイデバイス、ディスクドライブ、テープドライブ、光ドライブ、および類似物などのストレージデバイス、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）、クロック、タイマ、Ｉ／Ｏポート、および類似物などのシステム周辺デバイス、Ｅｔｈｅｒｎｅｔ（登録商標）、ＦｉｂｒｅＣｈａｎｎｅｌ、Ｉｎｆｉｎｉｂａｎｄ、または他の高速ネットワークインターフェース用のメディアアクセスコントローラ（ＭＡＣ）などのネットワークデバイス、アナログディジタル（Ａ／Ｄ）変換器およびディジタルアナログ変換器などのデータ変換デバイスなどを含むことができるが、これらに制限はされない。Ｉ／Ｏデバイス１０７は、サービスを要求するために仮想マルチプロセッサ１０１への割込み信号１０８を生成する。有利なことに、仮想マルチプロセッサ１０１は、マイクロプロセッサ１０２の状態保存に関連する従来のオーバーヘッドを必要とせずに、割込み要求ライン１０８で示されたイベントを処理するために、複数のプログラムスレッドを並行に実行し、制御を割込みサービスルーチンに移し、割込みサービスルーチンの完了時に状態を復元することができる。
【００２５】
一実施形態で、仮想マルチプロセッサ１０１は、２つの別個であるが相互に排他的なマルチスレッディング機能を提供する。第１に、仮想マルチプロセッサは、対応する１つまたは複数の論理プロセッサコンテキストをサポートするための１つまたは複数の仮想処理要素（ＶＰＥ）１０２を含み、このＶＰＥ１０２それぞれは、仮想マルチプロセッサ１０１内のリソースの共用を介して、オペレーティングシステムには独立の処理要素として見える。オペレーティングシステムにとって、Ｎ個のＶＰＥ１０２を有する仮想マルチプロセッサ１０１は、Ｎウェイ対称マルチプロセッサ（ＳＭＰ）のように見え、これによって、既存のＳＭＰ対応オペレーティングシステムが、１つまたは複数のＶＰＥ１０２を管理できるようになる。第２に、各ＶＰＥ１０２は、対応する１つまたは複数のプログラムスレッドを同時に実行するための１つまたは複数のスレッドコンテキスト１０３を含むこともできる。その結果、本発明による仮想マルチプロセッサ１０１は、通常の場合に、オペレーティングシステム介入なしでプログラムスレッドを作成できかつ破棄でき、外部条件（たとえば、入出力サービスイベント信号）に応答して、最小化された割込み待ち時間でシステムサービススレッドをスケジューリングできる、マルチスレッド化されたプログラミングモデルも提供する。
【００２６】
一実施形態で、スレッドコンテキスト１０３それぞれは、対応するスレッドの実行の状態を記述するフィールド（たとえば、ビット）をその中に有する、レジスタまたはラッチなどの１つまたは複数のストレージ要素を含む。すなわち、所与のスレッドコンテキスト１０３は、仮想処理要素１０２で並行に実行されている実行の他のスレッドと共用される状態ではなく、そのスレッドに一意の、そのそれぞれのスレッドの状態を記述する。スレッド（本明細書ではプログラムスレッド、実行のスレッド、または命令ストリームとも称する）は、命令のシーケンスである。仮想処理要素１０２それぞれが、複数のスレッドを並行して実行することができる。スレッドコンテキスト１０３に各スレッドの状態を保管することによって、仮想マルチプロセッサ１０１内の仮想処理要素１０２それぞれが、命令をフェッチしかつ発行するために、スレッド間ですばやく切り替えるように構成される。有利なことに、本発明の仮想マルチプロセッサ１０１は、上で参照によって本明細書に組み込まれた、同時係属の米国特許出願第＿＿＿号（整理番号ＭＩＰＳ．０１９４−００−ＵＳ）、名称「ＭＥＣＨＡＮＩＳＭＳ  ＦＯＲ  ＳＯＦＴＷＡＲＥ  ＭＡＮＡＧＥＭＥＮＴ  ＯＦ  ＭＵＬＴＩＰＬＥ  ＣＯＭＰＵＴＡＴＩＯＮＡＬ  ＣＯＮＴＥＸＴＳ」に記載のように、さまざまなスレッドコンテキスト１０３の間でスレッドコンテキスト情報を移動するために命令を実行するように構成される。
【００２７】
一実施形態で、ＶＰＥコンテキスト１０４それぞれは、対応するＶＰＥ１０２の実行の状態を記述するフィールド（たとえば、ビット）をその中に有し、アドレス変換リソース、コプロセッシングリソース（たとえば、浮動小数点プロセッサ、メディアプロセッサなど）、スレッド容量および列挙、指定されたＶＰＥ１０２の実行のイネーブル／抑止の許可、および指定されたＶＰＥ１０２のリソースを構成する許可など（これらに制限はされない）、対応するＶＰＥ１０２のリソースの構成を提供する、レジスタまたはラッチなどのストレージ要素の集合を含む。一実施形態で、ＶＰＥ１０２が、そのＶＰＥコンテキスト１０４を更新することによって、それ自体のリソースを構成することができる。代替案では、ＶＰＥ１０２が、異なるＶＰＥ１０２に対応するＶＰＥコンテキスト１０４を更新することによって、その異なるＶＰＥ１０２のリソースを構成することができる。その結果、Ｎ個のＶＰＥ１０２を有する仮想マルチプロセッサ１０１が、オペレーティングシステムまたは他の対称マルチプロセッシングアプリケーションに、Ｎウェイ対称マルチプロセッサとして見える。一実施形態で、ＶＰＥ１０２は、命令キャッシュ、命令フェッチャ、命令デコーダ、命令イシュア（ｉｎｓｔｒｕｃｔｉｏｎ  ｉｓｓｕｅｒ）、命令スケジューラ、実行ユニットおよびコプロセッシングユニット、ならびにデータキャッシュなどの、仮想マルチプロセッサ１０１内の特定のリソースを、オペレーティングシステムから透過的に共用する。リソースが共用される度合および範囲は、ＶＰＥコンテキスト１０４によって規定され、実行時にまたは他の時に、ＶＰＥコンテキスト１０４を更新することによって動的に構成されることができる。所与のＶＰＥ１０２が、それ自体のリソースまたは異なるＶＰＥ１０２に割り当てられたリソースを構成するためには、下で詳細に説明するように、その所与のＶＰＥ１０２が仮想マルチプロセッサ１０１のリソースを構成することを許可されることを、それ自体のＶＰＥコンテキスト１０４が規定していなければならない。したがって、所与のＶＰＥ１０２のＶＰＥコンテキスト１０４が、その所与のＶＰＥ１０２がリソースを構成することを許可されることを示す場合に、その所与のＶＰＥ１０２は、構成許可を取り消す能力を含むリソース構成許可の変更を含めて、動的リソース構成を提供するために、すべてのＶＰＥコンテキスト１０４を更新することができる。一実施形態で、各ＶＰＥ１０２は、ＭＩＰＳ３２またはＭＩＰＳ６４の命令セットアーキテクチャ（ＩＳＡ）、およびＭＩＰＳ  Ｐｒｉｖｉｌｅｇｅｄ  Ｒｅｓｏｕｒｃｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＰＲＡ）に実質的に準拠し、ＶＰＥコンテキスト１０４それぞれは、ＭＩＰＳ  ＰＲＡ  Ｃｏｐｒｏｃｅｓｓｏｒ  ０およびそのインスタンス化を記述するのに必要なシステム状態を含む。一実施形態で、ＶＰＥコンテキスト１０６は、以下で説明する図５Ｄ〜図５ＧのＶＰＥＣＯＮＴＲＯＬレジスタ５０４、ＶＰＥＣＯＮＦ０レジスタ５０５、ＶＰＥＣＯＮＦ１レジスタ５０６、およびＶＰＥＳＣＨＥＤＵＬＥレジスタ５９２を含む。１つの点で、ＶＰＥ１０２を、例外ドメインとみなすことができる。すなわち、ＶＰＥ１���２のスレッドコンテキスト１０３のうちの１つが、例外を生成した時に、マルチスレッディングが、そのＶＰＥ１０２で中断され（すなわち、例外をサービスするスレッドコンテキスト１０４に関連する命令ストリームの命令だけが、フェッチされかつ発行され）、各ＶＰＥコンテキスト１０４が、例外をサービスするのに必要な状態を含む。例外がサービスされたならば、例外ハンドラが、ＶＰＥ１０２でのマルチスレッディングを選択的に再イネーブルすることができる。
【００２８】
図２に移ると、本発明による仮想マルチプロセッサ内の仮想マルチプロセッサパイプライン２００を示すブロック図が示されている。パイプライン２００は、複数のパイプラインステージを含み、さらに、１つまたは複数のスレッドコンテキスト１０３を含む。図２の例示的実施形態には、４つのスレッドコンテキスト１０３が示されている。一実施形態で、各スレッドコンテキスト１０３は、関連する命令ストリーム内の次の命令をフェッチするアドレスを保管するプログラムカウンタ（ＰＣ）２２２、プログラムカウンタ２２２値に基づいて、スレッドから発行された命令ストリームの中間実行結果を保管する汎用レジスタ（ＧＰＲ）セット２２４、および他のスレッドごとのコンテキスト２２６を含む。一実施形態で、パイプライン２００は、乗算器ユニット（図示せず）を含み、他のスレッドコンテキスト２２６は、命令ストリーム内の乗算命令に特に関連する乗算器ユニットの結果を保管するレジスタを含む。一実施形態で、他のスレッドコンテキスト２２６は、各スレッドコンテキスト１０３を一意に識別する情報を含む。一実施形態で、このスレッド識別情報は、スレッドがカーネルスレッド、スーパーバイザスレッド、またはユーザレベルスレッドのどれであるかなど、関連するスレッドの実行特権レベルを指定する情報を含む。一実施形態で、このスレッド識別情報は、そのスレッドを含むタスクまたはプロセスを識別する情報を含む。具体的に言うと、このタスク識別情報は、物理アドレスを仮想アドレスに変換するためのアドレス空間識別子（ＡＳＩＤ）として使用されることができる。
【００２９】
パイプライン２００は、仮想マルチプロセッサ１００によって並行に実行されているさまざまなスレッドの実行をスケジューリングするスケジューラ２１６を含む。スケジューラ２１６は、ＶＭＰコンテキスト２１０、図１のＶＰＥコンテキスト１０４、および他のスレッドごとのコンテキスト２２６に結合される。具体的に言うと、スケジューラ２１６は、以下で説明するように、さまざまなスレッドコンテキスト１０４のプログラムカウンタ２２２からの命令のフェッチをスケジューリングし、かつ仮想マルチプロセッサ１００の実行ユニット２１２へのフェッチされた命令の発行をスケジューリングする責任を負う。スケジューラ２１６は、仮想マルチプロセッサ１００のスケジューリングポリシに基づいて、スレッドの実行をスケジューリングする。スケジューリングポリシは、以下のスケジューリングポリシのどれであっても含むことができるが、これらに制限はされない。一実施形態で、スケジューラ２１６は、各準備のできているスレッドに回転する順序で所定の個数のクロックサイクルまたは命令発行スロットを割り振る、ラウンドロビン、時分割多重、またはインターリーブ式のスケジューリングポリシを使用する。ラウンドロビンポリシは、公平さが重要であり、かつリアルタイムアプリケーションプログラムなど、最小量のサービスがあるスレッドについて必要である応用に有用である。一実施形態で、スケジューラ２１６は、ブロッキングスケジューリングポリシを使用し、この場合に、スケジューラ２１６は、キャッシュミス、分岐誤予測、データ依存性、または長い待ち時間の命令など、スレッドのそれ以上の進行をブロックするイベントが発生するまで、現在実行されているスレッドのフェッチおよび発行のスケジューリングを続ける。一実施形態で、パイプライン２００は、複数の実行ユニット２１２を使用するスーパースカラパイプラインを含み、スケジューラ２１６は、一般に同時マルチスレッディングと称する、クロックサイクルごとに複数の命令の発行、具体的には、クロックサイクルごとに複数のスレッドからの命令の発行をスケジューリングする。もう１つの実施形態で、スケジューラ２１６は、ＶＰＥコンテキスト１０４を介して供給されるスケジューリング情報を利用するスケジューリングポリシを使用し、ここで、このスケジューリング情報は、ＶＰＥ１０２それぞれに割り振られる帯域幅および／または帯域幅関連リソースを示す。
【００３０】
パイプライン２００は、システムメモリからフェッチされたプログラム命令をキャッシングする命令キャッシュ２０２を含む。一実施形態で、パイプライン２００は、仮想メモリ性能を提供し、フェッチユニット２０４は、物理メモリページから仮想メモリページへの変換をキャッシングする変換ルックアサイドバッファ（図示せず）を含む。この実施形態では、変換ルックアサイドバッファ内のリソース（たとえば、エントリ）が、ＶＰＥコンテキスト１０４によって規定された通りに、パイプライン２００を共用するＶＰＥ１０２それぞれに割り振られる。一実施形態で、パイプライン２００内で実行されるプログラムまたはタスクそれぞれは、一意のタスクＩＤまたはアドレス空間ＩＤ（ＡＳＩＤ）が割り当てられ、これは、メモリアクセス、具体的にはメモリアドレス変換の実行に使用され、スレッドコンテキスト１０３は、またそのスレッドに関連するＡＳＩＤ用のストレージを含む。
【００３１】
パイプライン２００は、命令キャッシュ２０２およびシステムメモリからプログラム命令をフェッチする、命令キャッシュ２０２に結合されたフェッチユニット２０４も含む。フェッチユニット２０４は、マルチプレクサ２４４によって供給される命令フェッチアドレスで命令をフェッチする。マルチプレクサ２４４は、対応する複数のプログラムカウンタ２２２から複数の命令フェッチアドレスを受け取る。プログラムカウンタ２２２それぞれは、異なるプログラムスレッドの現在の命令フェッチアドレスを保管する。図２の実施形態は、４つの異なるスレッドに関連する４つの異なるプログラムカウンタ２２２を示す。マルチプレクサ２４４は、スケジューラ２１６によって供給される選択入力に基づいて、４つのプログラムカウンタ２２２のうちの１つを選択する。一実施形態で、マイクロプロセッサ１００で実行されるさまざまなスレッドが、フェッチユニット２０４を共用する。
【００３２】
パイプライン２００は、フェッチユニット２０４によってフェッチされたプログラム命令をデコードする、フェッチユニット２０４に結合されたデコードユニット２０６も含む。デコードユニット２０６は、命令のオペコード、オペランド、および他のフィールドをデコードする。一実施形態で、マイクロプロセッサ１００で実行されるさまざまなスレッドが、デコードユニット２０６を共用する。
【００３３】
パイプライン２００は、命令を実行する実行ユニット２１２も含む。実行ユニット２１２は、整数算術、ブール演算、シフト演算、ローテート演算、および類似物を実行する１つまたは複数の整数ユニットと、浮動小数点演算を実行する浮動小数点ユニットと、メモリアクセス、具体的には実行ユニット２１２に結合されたデータキャッシュ２４２へのアクセスを実行するロード／ストアユニットと、マルチメディア演算を実行するマルチメディアアクセラレーションユニットと、分岐命令の結果およびターゲットアドレスを解決する分岐解決ユニットとを含むことができるが、これらに制限はされない。一実施形態で、データキャッシュ２４２は、物理メモリページから仮想メモリページへの変換をキャッシングする変換ルックアサイドバッファを含む。データキャッシュ２４２から受け取られるオペランドの他に、実行ユニット２１２は、汎用レジスタセット２２４のレジスタからもオペランドを受け取る。具体的に言うと、実行ユニット２１２は、命令が属するスレッドに割り振られたスレッドコンテキスト１０４のレジスタセット２２４からオペランドを受け取る。マルチプレクサ２４８は、実行ユニット２１２に供給するために、オペランドを適当なレジスタセット２２４から選択する。さらに、マルチプレクサ２４８は、実行ユニット２１２によって実行されている命令のスレッドコンテキスト１０４に基づく、実行ユニット２１２への選択的供給のために、他のスレッドごとのコンテキスト２２６およびプログラムカウンタ２２２のそれぞれからデータを受け取る。一実施形態で、さまざまな実行ユニット２１２が、複数の並行スレッドからの命令を並行に実行することができる。
【００３４】
パイプライン２００は、スケジューラ２１６に結合され、かつデコードユニット２０６と実行ユニット２１２の間に結合された命令発行ユニット２０８をも含み、命令発行ユニット２０８は、スケジューラ２１６による指示に従い、デコードユニット２０６によってデコードされた命令に関する情報に応答して、実行ユニット２１２に命令を発行する。具体的に言うと、命令発行ユニット２０８は、命令が、前に実行ユニット２１２に発行された他の命令に対する依存性を有する場合に、それら命令が、実行ユニット２１２に発行されないことを保証する。一実施形態で、命令キュー（図示せず）が、実行ユニット２１２の枯渇の可能性を下げるために、実行ユニット２１２への発行を待っている命令をバッファリングするために、デコードユニット２０６と命令発行ユニット２０８との間に置かれる。一実施形態で、パイプライン２００内で実行されるさまざまなスレッドが、命令発行ユニット２０８を共用する。
【００３５】
パイプライン２００は、命令の結果を汎用レジスタセット２２４、プログラムカウンタ２２２、および他のスレッドコンテキスト２２６にライトバックするための、実行ユニット２１２に結合されたライトバックユニット２１４も含む。デマルチプレクサ２４６は、ライトバックユニット２１４から命令結果を受け取り、その命令結果を、その命令のスレッドに関連する適当なレジスタセット２２４、プログラムカウンタ２２２、および他のスレッドコンテキスト２２６に保管する。命令結果は、ＶＰＥコンテキスト１０４および仮想マルチプロセッサ（ＶＭＰ）コンテキスト２１０への保管のためにも供給される。
【００３６】
一実施形態で、ＶＭＰコンテキスト２１０は、仮想マルチプロセッサ１０１の実行の状態を記述する、ストレージ要素内の１つまたは複数のフィールド（たとえば、ビット）を有する、レジスタまたはラッチなどのストレージ要素の集合を含む。具体的に言うと、ＶＭＰコンテキスト２１０は、上で説明したように、ＶＰＥ１０２の間で共用される仮想マルチプロセッサ１０１のグローバルリソースに関する状態を保管する。具体的に言うと、ＶＭＰコンテキストは、構成中にＶＰＥ１０２に割り振ることのできるリソースを規定し、仮想マルチプロセッサ１０１がリソースの構成に関する構成状態であるかどうかも制御する。一実施形態で、ＶＭＰコンテキスト２１０は、以下で説明する、図５Ａ〜図５ＣのＭＶＰＣＯＮＴＲＯＬレジスタ５０１、ＭＶＰＣＯＮＦ０レジスタ５０２、およびＭＶＰＣＯＮＦ１レジスタ５０３を含む。
【００３７】
図２のパイプライン２００の特定のステージ２０２、２０４、２０６、２０８、２１２、および２１４は、本質的な態様を不明瞭にせずに、本発明を明瞭に提示するために提供されたものである。当業者は、本発明の趣旨および範囲から外れずに、ステージの数を増やすか減らすことによって、または異なる形で機能をステージに割り当てることによってパイプライン２００のステージングを変更して、性能を改善できることを理解するであろう。
【００３８】
図３を参照すると、本発明による動的に構成可能な仮想マルチプロセッサ３００を示すブロック図が示されている。マルチプロセッサ３００は、ＶＰＥ１  ３０２、ＶＰＥ２  ３０３からＶＰＥＮ  ３０４として列挙された、１つまたは複数のＶＰＥ３０２〜３０４を含む。各ＶＰＥ３０２〜３０４は、対応するＶＰＥコンテキスト３０５〜３０７を有する。ＶＰＥ３０２〜３０４は、図２に関して上で説明したように、ＶＭＰコンテキスト２１０と共に、実行論理２１２に結合される。実行論理２１２は、ＶＰＥ構成論理３１０を含む。ＶＰＥ構成論理３１０は、例外信号３１１に結合される。このブロック図には、リソース１  ３２２、リソース２  ３２４、リソース３  ３２６からリソースＭ３２８として列挙された、１つまたは複数のリソース３２２、３２４、３２６、および３２８も示されている。
【００３９】
動作時に、リソース３２２〜３２８の構成は、リソース３２２〜３２８の構成を許可されたＶＰＥ３０２〜３０４によって発行される、構成命令シーケンスを実行することによって達成される。一実施形態で、リソース３２２〜３２８を構成する許可は、対応するＶＰＥ３０２〜３０４のＶＰＥコンテキスト３０５〜３０７によって規定される。構成命令シーケンスが、パイプライン２００内の実行ユニット２１２によって受け取られた時に、ＶＰＥ構成論理３１０が、そのプログラムスレッドが構成命令シーケンスのフェッチを引き起こしたＶＰＥ３０２〜３０４に対応するＶＰＥコンテキスト３０５〜３０７にアクセスして、ＶＰＥ３０２〜３０４が、リソース３２２〜３２８の構成を許可されるかどうかを判定する。許可されない場合には、構成論理３１０は、例外信号３１１をアサートさせ、その構成命令シーケンスは実行されない。ＶＰＥ３０２〜３０４がリソース３２２〜３２８の構成を許可される場合には、ＶＰＥ構成論理３１０は、その構成命令シーケンスを実行して、仮想マルチプロセッサ３００に構成状態に入るように指示し、１つまたは複数の規定されたＶＰＥコンテキスト３０５〜３０７を更新し、したがって、リソースを再構成する。一実施形態で、構成命令シーケンスは、ＶＭＰコンテキスト２１０を更新することによって、構成状態に入るように仮想マルチプロセッサ３００に指示する。一実施形態で、構成命令のシーケンスは、ＭＩＰＳ３２／ＭＩＰＳ６４  Ｍｕｌｔｉｔｈｒｅａｄｉｎｇ（ＭＴ）Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｅｘｔｅｎｓｉｏｎｓ（ＡＳＥ）アーキテクチャに準拠する命令を含む。
【００４０】
このブロック図は、構成されたリソース３２２〜３２８の特定の実施形態を示し、この実施形態は、構成命令シーケンスの実行から生じ、特定のリソース３２２〜３２８が、所与のマルチスレッディングマルチプロセッシングアプリケーションで並行して実行されるスレッドの性能を最適化するために、本発明によってどのように動的に構成できるかを図式によって示す。たとえば、リソース１  ３２２の図式的分割は、アドレス変換リソース（たとえば、変換ルックアサイドバッファエントリ）に対応すると考えられたい。図示の分割から、ＶＰＥ１  ３０２が、残りのＶＰＥ３０３〜３０４に割り振られるものより少ないアドレス変換リソースの部分を割り当てられることが示されている。多分、ＶＰＥ１  ３０２で実行されるスレッドは、他のスレッドに対して短くかつ反復的であり、したがって、広範囲のアドレス変換リソースを必要としない。また、リソース２  ３２４が、マルチスレッド化されたコプロセッサ（たとえば、浮動小数点要素、メディア要素、ＳＩＭＤ要素など）に対応するコンテキストを表すと考えられたい。ＶＰＥ２  ３０３が、そのＶＰＥコンテキスト３０６内で規定されるように、多分広範囲のコプロセッシングリソースを必要としないＶＰＥ２  ３０３によって発行された命令スレッドによって指示される演算に起因して、他のＶＰＥ３０２、３０７に対してより少数のコンテキストを割り振られることが示されている。さらに、リソース３  ３２６が、リソース構成許可を表すと考えられたい。図式的に表されているように、ＶＰＥ２  ３０３だけが、仮想マルチプロセッサ３００のリソース３２２〜３２８を構成することを許可される。与えられた構成許可を有する所与のＶＰＥ３０２〜３０４（この事例ではＶＰＥ２  ３０３）が、他のＶＰＥ３０２〜３０４に構成許可を与えるか、それらの構成許可を取り消すか、それ自体の構成許可を取り消すことができることに留意されたい。これは、本明細書で説明するように、規定されたＶＰＥコンテキスト３０５〜３０７を更新することによって達成される。リソースＭ３２８が、上で説明した実装されたスケジューリングポリシに従って、ＶＰＥ３０２〜３０４に仮想マルチプロセッサ３００の帯域幅を割り振る帯域幅リソースであると考えられたい。したがって、例示的なＶＰＥ３０２〜３０４それぞれは、直接実行帯域幅割振りを介して、実行優先順位を適当に等しくセットすることによって、または規定の帯域幅もしくは帯域幅関連リソースの他の技術によってのいずれかで、マルチプロセッサ帯域幅の等しい部分を与えられることが、図式的に表されている。本発明によって想定される、帯域幅関連リソースを規定する技術の１つが、ＶＰＥ３０２〜３０４へのロード／ストア帯域幅の割振りである。たとえば、ＶＰＥ３０２〜３０４の間で共用される、仮想マルチプロセッサ３００内のメモリ動作バッファ（図示せず）の個数が、実行スレッドの個数より少ない場合に、所与のＶＰＥ３０２〜３０４のスレッドに関連するメモリ動作を実行する前に、仮想マルチプロセッサ３００は、そのような動作が、所与のＶＰＥ３０２〜３０４について規定された帯域幅関連リソース割振りを超えるので、所与のスレッドをスイッチアウトしなければならないか否かを評価する。帯域幅割振りに対するそのようなアプローチは、１つのＶＰＥ３０２〜３０４に関連する少数のスレッドが、たとえばそうでなければ帯域幅関連リソース（この例では、メモリ動作バッファ）を独占するキャッシュミスの長いシーケンスを生成し、したがって、他のＶＰＥ３０２〜３０４からのスレッドの実行を妨げる状況に有利に対処する。帯域幅関連リソースの割り当てを指定することによって、そのような状況が、本発明による仮想マルチプロセッサ３００で排除される。
【００４１】
図４を参照すると、本発明の例示的実施形態による仮想マルチプロセッシングコンテキストレジスタを示す表４００が提示されている。仮想マルチプロセッシングコンテキストレジスタは、上で説明したように、仮想マルチプロセッサコンテキスト２１０または仮想処理要素コンテキスト１０４のいずれかを構成するのに使用される。仮想マルチプロセッシングコンテキストは、レジスタＭＶＰＣＯＮＴＲＯＬ、ＭＶＰＣＯＮＦ０、およびＭＶＰＣＯＮＦ１を含む。仮想マルチプロセッサ内のＶＰＥごとの仮想処理要素コンテキストは、レジスタＶＰＥＣＯＮＴＲＯＬ、ＶＰＥＣＯＮＦ０、ＶＰＥＣＯＮＦ１、およびＶＰＥＳＣＨＥＤＵＬＥを含む。表４００には、レジスタが、ＭＩＰＳ３２／ＭＩＰＳ６４命令セットおよび特権リソースアーキテクチャに対するマルチスレッディングアプリケーション固有エクステンションに適合し、このアーキテクチャが、示されたレジスタのそれぞれついて、その中の内容にアクセスするためのＣＰ０レジスタ番号およびレジスタ選択番号を割り当てることが示されている。上のレジスタの構造および内容を、図５Ａ〜図５Ｇを参照してこれから説明する。
【００４２】
図５Ａ〜図５Ｇは、図４の仮想マルチプロセッシングコンテキストレジスタ５０１〜５０６、５９２それぞれの例示的実施形態を示す一連のブロック図である。図５Ａ〜図５Ｆは、各レジスタのフィールドの図示、およびさまざまなフィールドを説明する表を含む。特に関連するフィールドを、本明細書でより詳細に説明する。図５Ａ〜図５Ｇに示されたレジスタそれぞれは、そのＶＰＥＣＯＮＦ０レジスタ５０５内のＭＶＰフィールド５５３の値によって示されるように、リソースを動的に構成する許可を有するＶＰＥによって選択的に読み取りかつ／または書き込まれることができる。レジスタ５０１〜５０６および５９２内のある種のフィールドは、構成許可を有することをそのＭＶＰフィールド５５３が示すＶＰＥだけによって書き込まれることができる。そうでない場合には、このある種のフィールドは、構成論理３１０による制御されるように、読取専用である。
【００４３】
ＭＶＰＣＯＮＴＲＯＬレジスタ５０１は、ＳＴＬＢフィールド５１１、ＶＰＣフィールド５１２、およびＥＶＰフィールド５１３を有する。上で説明した構成許可を有するＶＰＥ  １０２は、リソースの構成のために仮想マルチプロセッサ１０１を構成状態にするために、ＶＰＣフィールド５１２およびＥＶＰフィールド５１３を更新することができる。ＶＰＣフィールド５１２をクリアし、かつＥＶＰフィールド５１３をセットすることによって、仮想処理を再開するために、新しいリソース値が、構成レジスタ５０１〜５０６および５９２にラッチされる。構成許可を有するＶＰＥ１０２は、アドレス変換リソースを共用させるために、ＳＴＬＢフィールド５１１を更新することができる。
【００４４】
ＭＶＰＣＯＮＦ０レジスタ５０２およびＭＶＰＣＯＮＦ１レジスタ５０３は、所与の仮想マルチプロセッサ１０１内で提供される構成可能なリソースの個数および範囲を判定するために、構成許可を有するＶＰＥ１０２によって読み取られる読取専用レジスタである。フィールドＴＬＢＳは、アドレス変換リソースが共用可能であることと、アドレス変換リソース共用が、ＭＶＰＣＯＮＴＲＯＬレジスタ５０１のフィールドＳＴＬＢ  ５１１をセットすることによって構成されることができることを示す。フィールドＰＶＰＥ  ５２４は、仮想マルチプロセッサ１０１によって提供されるＶＰＥ１０２の総数を規定した。図５Ａ〜図５Ｇの実施形態では、１６個までのＶＰＥ１０２を使用することができる。フィールドＰＴＣ５２５は、仮想マルチプロセッサ１０１によって提供されるスレッドコンテキスト１０３の総数を示す。図示の実施形態では、２５６個までのスレッドコンテキスト１０３をインスタンス化することができる。フィールドＣ１Ｍ５３１は、割振り可能なコプロセッサがメディアエクステンション対応であることを示す。フィールドＣ１Ｆ５３２は、割振り可能なコプロセッサが浮動小数点対応であることを示す。フィールド５３３〜５３５は、ＶＰＥ  １０２への割振りに使用可能な他のＩＳＡ固有リソースの総数を示す。
【００４５】
リソースは、ＶＰＥＣＯＮＴＲＯＬレジスタ５０４のフィールドＴＡＲＧＶＰＥ３３４にそのＶＰＥ番号を書き込むことによって、特定のＶＰＥ１０４に割り振られる。フィールド３３４への書き込みの一実施形態が、上で説明したＭＩＰＳのＭＴＴＲ命令およびＭＦＴＲ命令を介することである。
【００４６】
レジスタＶＰＥＣＯＮＦ０５０５のフィールドＶＰＡ５５２の値は、指定されたＶＰＥ１０２をイネーブル／ディスエーブルするためにセットされる。フィールドＭＶＰ  ５５３は、リソース構成許可を授与するか取り消すためにセットされる。フィールドＭＩＮＴＣ５５４およびＭＡＸＴＣ５５５は、スレッドコンテキスト１０３の個数および列挙を、指定されたＶＰＥ１０２に割り振るために更新される。フィールドＮＣＸ５６１、ＮＣＰ２  ５６ｉ２、およびＮＣＰ１  ５６３は、本発明のＭＩＰＳ３２／ＭＩＰＳ６４マルチスレッディングアプリケーション固有エクステンション実施形態において、特定のＶＰＥ１０２にコプロセッサリソースを割り振るために更新される。上で注記したように、図５Ｅおよび図５Ｆの表に、注記されたリソース割振りフィールド５５２〜５５５、５６１〜５６３が、読取専用フィールドであることが示されている。これは、ＶＰＥＣＯＮＦ０レジスタ５０５のＭＶＰビット５５３の状態によって示されるように、リソース構成許可を有しないすべてのＶＰＥ１０２について真である。しかし、与えられたリソース構成許可を有するＶＰＥ１０２について、構成論理３１０は、注記されたフィールド５５２〜５５５、５６１〜５６３の更新（すなわち書込）を可能にする。
【００４７】
ＶＰＥＳＣＨＥＤＵＬＥレジスタ５９２は、仮想マルチプロセッサ１０１内のＶＰＥ  １０２にまたがって帯域幅リソースを構成するために更新されることができる、スケジューラヒントフィールド５２９を含む。
【００４８】
図４および図５Ａ〜図５Ｇは、あるリソースが、ＭＩＰＳ３２／ＭＩＰＳ６４マルチスレッディングアプリケーション固有エクステンション環境で動的に構成されることができる、本発明の例示的実施形態を示すが、本発明人は、この例示的実施形態が、本発明の諸態様を教示するために、知られている命令セットアーキテクチャに従って提供されたことに特に言及する。本発明には、他のアーキテクチャも同様に包含されることにも言及する。
【００４９】
図６に移ると、仮想プロセッサリソースの動的構成に関する、本発明による方法を示す流れ図６００が示されている。この方法は、ブロック６０２で開始され、ここで、本発明によるＶＰＥが、リソースを動的に再構成することを望む。流れは、次にブロック６０４に進む。
【００５０】
ブロック６０４では、要求するＶＰＥに対応するＶＰＥコンテキストを読み取る。流れは、次に判断ブロック６０６に進む。
【００５１】
判断ブロック６０６では、ＶＰＥコンテキストを評価して、要求するＶＰＥが、仮想マルチプロセッサ内のリソースを動的に構成することを許可されるかどうかを判定する。そうである場合には、流れはブロック６０８に進む。そうでない場合には、流れはブロック６０７に進む。
【００５２】
ブロック６０７では、要求するＶＰＥが、リソース構成許可を有しないので、例外を宣言し、流れはブロック６２０に進む。
【００５３】
ブロック６０８では、仮想マルチプロセッサ内の処理をディスエーブルして、リソース再構成を可能にする。流れは、次にブロック６１０に進む。
【００５４】
ブロック６１０では、仮想マルチプロセッサ内で構成状態を確立する。流れは、次にブロック６１２に進む。
【００５５】
ブロック６１２では、仮想マルチプロセッサ内のＶＭＰコンテキストにアクセスして、どのリソースが何個だけ構成に使用可能であるかを判定する。流れは、次にブロック６１４に進む。
【００５６】
ブロック６１４では、割り振られたリソースの構成のために、ターゲットＶＰＥを選択する。流れは、次にブロック６１６に進む。
【００５７】
ブロック６１６では、対応するＶＰＥコンテキストを更新することによって、選択されたＶＰＥについてリソースを構成する。流れは、次にブロック６１８に進む。
【００５８】
ブロック６１８では、構成状態から抜けることによって選択されたＶＰＥのリソースの新しい構成をラッチし、仮想マルチプロセッサ内の仮想処理を再イネーブルする。流れは、次にブロック６２０に進む。
【００５９】
ブロック６２０で、この方法が完了する。
【００６０】
図７は、仮想プロセッサリソースの動的構成に関する、本発明による取消可能な方法を示す流れ図７００である。図７の流れ図７００のすべてのブロック７０２〜７２０は、図６の流れ図６００の対応するブロック６０２〜６２０と同等であり、１００の桁が７に置換されているが、追加のブロック７１７があり、このブロックでは、選択されたＶＰＥのＶＰＥコンテキストを更新して、リソースを動的に構成する許可を取り消す。ブロック７０２の要求するＶＰＥを、ブロック７１７の選択されたＶＰＥと同一とすることができ、したがって、ＶＰＥがそれ自体の構成許可を取り消すことが可能になることに留意されたい。ブロック７１８で新しい構成をラッチした後に、要求するＶＰＥは、もはやリソースを構成することができない。
【００６１】
本発明とその目的、特徴、および長所を詳細に説明したが、他の実施形態が、本発明に包含されている。たとえば、ハードウェアを使用する本発明の実装の他に、本発明を、たとえばコンピュータ使用可能（たとえば可読）媒体に配置されたソフトウェア（たとえば、コンピュータ可読コード、プログラムコード、命令、および／またはデータ）で実施することができる。そのようなソフトウェアは、本明細書で説明した装置および方法の機能、製造、モデル化、シミュレーション、記述、および／またはテストを可能にする。たとえば、これを、一般的なプログラミング言語（たとえば、Ｃ、Ｃ＋＋、Ｊａｖａ（登録商標）など）、ＧＤＳＩＩデータベース、Ｖｅｒｉｌｏｇ  ＨＤＬ、ＶＨＤＬなどを含むハードウェア記述言語（ＨＤＬ）、または他の使用可能なプログラム、データベース、および／もしくは回路（すなわち、概略）キャプチャツールの使用を介して達成することができる。そのようなソフトウェアは、半導体メモリ、磁気ディスク、光ディスク（たとえば、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭなど）を含むすべての知られているコンピュータ使用可能（たとえば可読）媒体に配置することができ、コンピュータ使用可能（たとえば可読）伝送媒体（たとえば、搬送波またはディジタル媒体、光媒体、もしくはアナログベースの媒体を含む他のすべての媒体）で実施されるコンピュータデータ信号として配置することができる。したがって、ソフトウェアを、インターネットおよびイントラネットを含む通信ネットワークを介して伝送することができる。本発明を、ソフトウェアで（たとえば、マイクロプロセッサコアなどの半導体知的所有権コアの一部として、またはシステムオンチップすなわちＳＯＣなどのシステムレベル設計としてＨＤＬで）実施し、集積回路製造の一部としてハードウェアに変換できることを理解されたい。また、本発明を、ハードウェアとソフトウェアの組み合わせとして実施することができる。
【００６２】
最後に、当業者は、請求項によって規定される本発明の趣旨および範囲から逸脱することなく、本発明と同一の目的を実行する他の構造を設計または変更する基礎として、開示された概念および特定の実施形態をたやすく使用できることを理解されたい。
【図面の簡単な説明】
【００６３】
【図１】本発明によるマルチプロセッシング環境を示すブロック図である。
【図２】本発明による仮想マルチプロセッサパイプラインの特徴を示すブロック図である。
【図３】本発明による動的に構成可能な仮想マルチプロセッサを示すブロック図である。
【図４】本発明の例示的実施形態による仮想マルチプロセッシングコンテキストレジスタを提示する表である。
【図５Ａ】図４の仮想マルチプロセッシングコンテキストレジスタそれぞれの例示的実施形態を示す一連のブロック図である。
【図５Ｂ】図４の仮想マルチプロセッシングコンテキストレジスタそれぞれの例示的実施形態を示す一連のブロック図である。
【図５Ｃ】図４の仮想マルチプロセッシングコンテキストレジスタそれぞれの例示的実施形態を示す一連のブロック図である。
【図５Ｄ】図４の仮想マルチプロセッシングコンテキストレジスタそれぞれの例示的実施形態を示す一連のブロック図である。
【図５Ｅ】図４の仮想マルチプロセッシングコンテキストレジスタそれぞれの例示的実施形態を示す一連のブロック図である。
【図５Ｆ】図４の仮想マルチプロセッシングコンテキストレジスタそれぞれの例示的実施形態を示す一連のブロック図である。
【図５Ｇ】図４の仮想マルチプロセッシングコンテキストレジスタそれぞれの例示的実施形態を示す一連のブロック図である。
【図６】仮想プロセッサリソースの動的構成に関する、本発明による方法を示す流れ図である。
【図７】仮想プロセッサリソースの動的構成に関する、本発明による取消可能な方法を示す流れ図である。
【図１】
2007504536.tif 000007
【図２】
2007504536.tif 000008
【図３】
2007504536.tif 000009
【図４】
2007504536.tif 000010
【図５Ａ】
2007504536.tif 000011
【図５Ｂ】
2007504536.tif 000012
【図５Ｃ】
2007504536.tif 000013
【図５Ｄ】
2007504536.tif 000014
【図５Ｅ】
2007504536.tif 000015
【図５Ｆ】
2007504536.tif 000016
【図５Ｇ】
2007504536.tif 000017
【図６】
2007504536.tif 000018
【図７】
2007504536.tif 000019
【国際調査報告】
2007504536.tif 000020
2007504536.tif 000021
2007504536.tif 000022