(57)【要約】【課題】命令レベルでのリソース割り当ての識別を可能にする方法および装置を提供する。【解決手段】情報処理システムは、情報処理システム内のシステム・バスに対する、プログラム・アプリケーションのロード、ストアおよびＩ／Ｏインターフェース要求を生成する、複数のハードウェア・ユニットを備えるプロセッサを含む。このプロセッサは、システム・バス要求を開始するプロセッサのハードウェア・ユニットを特定のリソース割り当てグループと関連付けるリソース割り当て識別子（ＲＡＩＤ）を含む。リソース割り当てグループは、特定の帯域幅割り当てレートを、この開始するプロセッサに割り振る。ロード、ストアまたはＩ／Ｏインターフェース・バス要求が、実行のためにＩ／Ｏバスに届くと、リソース割り当てマネージャは、一連のＩ／Ｏリクエスタそれぞれに別々の量の帯域幅を割り振ることによって、各Ｉ／Ｏ要求に関連付けられる帯域幅の量を制限する。ハードウェア・ユニット内の命令パイプラインの一連のステージが、特定のロード、ストアまたはＩ／Ｏ命令と関連するリソース割り当て識別子（ＲＡＩＤ）を含む。【選択図】図８
2010518472.tif 000002
【特許請求の範囲】
【請求項１】
複数のハードウェア・ユニットを含むプロセッサによって共有リソースにアクセスする方法であって、
前記共有リソースへのアクセス要求を呼び出す実行命令を、前記プロセッサ内のハードウェア・ユニットによって受け取るステップと、
前記ハードウェア・ユニット内の複数のパイプライン・ステージを前記命令が通るときに、リソース割り当て識別情報を前記命令に提供するステップであって、前記リソース割り当て識別情報は、前記ハードウェア・ユニット内のパイプライン・ステージからパイプライン・ステージへと、前記命令とともに進む、前記ステップと、
を含む方法。
【請求項２】
前記パイプライン・ステージのうちの１つは、前記命令に関して有効アドレスから実アドレスへの変換を行うアドレス変換パイプライン・ステージであり、前記リソース割り当て識別情報は、前記アドレス変換パイプライン・ステージにて前記命令と関連付けられる、請求項１に記載の方法。
【請求項３】
前記パイプライン・ステージのうちの１つはストア・キューであって、前記ストア・キューは、前記アドレス変換パイプライン・ステージによるアドレス変換の後に、前記命令と、関連のリソース割り当て識別情報とを受け取る、請求項２に記載の方法。
【請求項４】
前記提供するステップは、前記ハードウェア・ユニットにおいて実行されるハイパーバイザによって前記リソース割り当て識別情報を提供するステップを含む、請求項１、２または３に記載の方法。
【請求項５】
前記ハードウェア・ユニット内のアクセス・リクエスタが、前記共有リソースへのアクセスのアクセス要求をリソース割り当てマネージャへ送り、前記リソース割り当てマネージャは、前記ハードウェア・ユニットの外部にあって、前記プロセッサの前記複数のハードウェア・ユニットと通信しており、前記アクセス・リクエスタは、前記ストア・キュー内の命令および関連のリソース割り当て識別情報に関して、命令ごとにアクセス要求を送り、それによって、前記ストア・キュー内の個々の命令のリソース割り当て識別情報を含むアクセス要求を提供する、請求項３に記載の方法。
【請求項６】
前記リソース割り当てマネージャによって、前記アクセス要求内の前記リソース割り当て識別情報に基づき、前記アクセス要求に対して前記共有リソースの帯域幅を割り当てるステップをさらに含む、請求項５に記載の方法。
【請求項７】
前記アクセス要求は、メモリ・アクセス要求と、Ｉ／Ｏアクセス要求とのうちの１つである、先行するいずれかの請求項に記載の方法。
【請求項８】
前記共有リソースは、メモリと、Ｉ／Ｏデバイスとのうちの１つである、先行するいずれかの請求項に記載の方法。
【請求項９】
半導体ダイ上に位置し、共有リソースにアクセスするよう構成され、第１のハードウェア・ユニットを含む複数のハードウェア・ユニット
を含むプロセッサであって、
前記第１のハードウェア・ユニットは、複数のパイプライン・ステージを含み、前記共有リソースへのアクセス要求を呼び出す実行命令を受け取り、前記第１のハードウェア・ユニット内の前記複数のパイプライン・ステージを前記命令が通るときに、リソース割り当て識別情報を前記命令に提供する、
プロセッサ。
【請求項１０】
前記第１のハードウェア・ユニットを除く他の前記複数のハードウェア・ユニットはそれぞれ、複数のパイプライン・ステージを含み、上記他のハードウェア・ユニットは、前記共有リソースへのアクセス要求を呼び出す実行命令を受け取り、上記他のハードウェア・ユニット内の前記複数のパイプライン・ステージを前記命令が通るときに、リソース割り当て識別情報を前記命令に提供する、請求項９に記載のプロセッサ・システム。
【請求項１１】
前記第１のハードウェア・ユニットの前記パイプライン・ステージのうちの１つは、前記命令に関して有効アドレスから実アドレスへの変換を行うアドレス変換パイプライン・ステージであり、前記リソース割り当て識別情報は、前記アドレス変換パイプライン・ステージにて前記命令と関連付けられる、請求項９に記載のプロセッサ・システム。
【請求項１２】
前記第１のハードウェア・ユニットの前記パイプライン・ステージのうちの１つはストア・キューであって、前記ストア・キューは、前記アドレス変換パイプライン・ステージによるアドレス変換の後に、前記命令と、関連のリソース割り当て識別情報とを受け取る、請求項１１に記載のプロセッサ・システム。
【請求項１３】
前記第１のハードウェア・ユニットは、前記リソース割り当て識別情報を前記命令に提供するハイパーバイザを実行する、請求項９〜１２のいずれかに記載のプロセッサ・システム。
【請求項１４】
前記第１のハードウェア・ユニットは、前記共有リソースへのアクセスのアクセス要求をリソース割り当てマネージャへ送るアクセス・リクエスタを含み、前記リソース割り当てマネージャは、前記第１のハードウェア・ユニットの外部にあって、前記プロセッサの前記複数のハードウェア・ユニットに結合されており、前記アクセス・リクエスタは、前記ストア・キュー内の命令および関連のリソース割り当て識別情報に関して、命令ごとにアクセス要求を送り、それによって、前記ストア・キュー内の個々の命令のリソース割り当て識別情報を含むアクセス要求を提供する、請求項１２に記載のプロセッサ・システム。
【請求項１５】
前記アクセス要求内の前記リソース割り当て識別情報に基づいて、前記アクセス要求に対して前記共有リソースの帯域幅を割り当てるよう前記リソース割り当てマネージャが動作可能なように、さらに構成されている、請求項１４に記載のプロセッサ・システム。
【請求項１６】
前記アクセス要求は、メモリ・アクセス要求と、Ｉ／Ｏアクセス要求とのうちの１つである、請求項９〜１５のいずれかに記載のプロセッサ・システム。
【請求項１７】
前記共有リソースは、メモリと、Ｉ／Ｏデバイスとのうちの１つである、請求項９〜１６のいずれかに記載のプロセッサ・システム。
【請求項１８】
共有リソースと、
前記共有リソースにアクセスする複数のハードウェア・ユニットを含み、前記共有リソースに結合されているプロセッサであって、前記複数のハードウェア・ユニットは、第１のハードウェア・ユニットを含む、前記プロセッサと、
を含む情報処理システムであって、
前記第１のハードウェア・ユニットは、複数のパイプライン・ステージを含み、前記共有リソースへのアクセス要求を呼び出す実行命令を受け取り、前記第１のハードウェア・ユニット内の前記複数のパイプライン・ステージを前記命令が通るときに、リソース割り当て識別情報を前記命令に提供する、
情報処理システム。
【請求項１９】
前記第１のハードウェア・ユニットの前記パイプライン・ステージのうちの１つは、前記命令に関して有効アドレスから実アドレスへの変換を行うアドレス変換パイプライン・ステージであり、前記リソース割り当て識別情報は、前記アドレス変換パイプライン・ステージにて前記命令と関連付けられる、請求項１８に記載の情報処理システム。
【請求項２０】
前記パイプライン・ステージのうちの１つはストア・キューであって、前記ストア・キューは、前記アドレス変換パイプライン・ステージによるアドレス変換の後に、前記命令と、関連のリソース割り当て識別情報とを受け取る、請求項１９に記載の情報処理システム。
【請求項２１】
前記第１のハードウェア・ユニットは、前記リソース割り当て識別情報を前記命令に提供するハイパーバイザを実行する、請求項１８〜２０のいずれかに記載の情報処理システム。
【請求項２２】
前記第１のハードウェア・ユニットは、前記共有リソースへのアクセスのアクセス要求をリソース割り当てマネージャへ送るアクセス・リクエスタを含み、前記リソース割り当てマネージャは、前記第１のハードウェア・ユニットの外部にあって、前記プロセッサの前記複数のハードウェア・ユニットに結合されており、前記アクセス・リクエスタは、前記ストア・キュー内の命令および関連のリソース割り当て識別情報に関して、命令ごとにアクセス要求を送り、それによって、前記ストア・キュー内の個々の命令のリソース割り当て識別情報を含むアクセス要求を提供する、請求項２０に記載の情報処理システム。
【請求項２３】
前記アクセス要求内の前記リソース割り当て識別情報に基づいて、前記アクセス要求に対して前記共有リソースの帯域幅を割り当てるよう前記リソース割り当てマネージャが動作可能なように、さらに構成されている、請求項２２に記載の情報処理システム。
【請求項２４】
前記アクセス要求は、メモリ・アクセス要求と、Ｉ／Ｏアクセス要求とのうちの１つである、請求項１８〜２３のいずれかに記載の情報処理システム。
【請求項２５】
前記共有リソースは、メモリと、Ｉ／Ｏデバイスとのうちの１つである、請求項１８〜２４のいずれかに記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願明細書の開示は、情報処理システムに関し、特に、情報処理システムにおける共有リソースの効率的な割り当てに関する。
【背景技術】
【０００２】
情報処理システム（ＩＨＳ：ｉｎｆｏｒｍａｔｉｏｎ  ｈａｎｄｌｉｎｇ  ｓｙｓｔｅｍ）には、情報の処理、取り扱い、伝達、または別の方法での操作を行う複数のプロセッサを用いるプロセッサ・システムが含まれ得る。マルチコア・プロセッサは、共通の集積回路上に統合された複数のプロセッサまたはコアを備えるプロセッサ・システムを表す１つの表現である。ＩＨＳまたはプロセッサ・システムは、複数のオペレーティング・システムを同時にサポートすることもある。さらに、複数のソフトウェア・プログラム・アプリケーションが、同時にプロセッサ・システム内で実行されることもある。例えば、プロセッサ・システムは、ウイルス検出用のプログラム・アプリケーションを実行する一方で、同時に、画像データを計算してディスプレイへ送出するプログラムを実行することもある。マルチプロセッシング環境は、複数のプログラムが、同時に実行される、または動く環境である。マルチプロセッシング環境は、従来のプロセッサ・アーキテクチャでは一般的である。
【０００３】
プロセッサ・システムにおける典型的なソフトウェア・プログラム・アプリケーションは、メモリ・アドレスおよび入出力（Ｉ／Ｏ：ｉｎｐｕｔ／ｏｕｔｐｕｔ）リソースを、プログラム実行中の標準的なプロセスとして消費する。プロセッサ・システムは、メモリ・バスまたはＩ／Ｏバス、あるいはその両方を用いるロードおよびストア動作を実行する。プロセッサ・システムは、効率的なリソース管理の重要な機能として、バス・リソースの割り当てに依存する。読み書き要求としても知られる、メモリ・ロード／ストア要求は、データ転送のためにメモリ・バスの使用を必要とする。アクティブなソフトウェア・アプリケーションは、ＩＨＳに備わっているシステム・メモリへの、またはシステム・メモリからのメモリ・データ転送の要求を開始することもある。従来のプロセッサ・システムは、メモリ・アクセスのリクエスタを複数含むこともある。さらに、他の複数プログラムと同時に動く２つ以上のプログラムが、メモリ・ロード／ストア要求を行い、それによって、メモリ・ロード／ストアまたは情報転送動作を開始することもある。さらに、プロセッサ・システム内の複数プロセッサが、共通のＩ／Ｏバスを要求することもある。したがって、プロセッサ・システムの種々の機能要素は、プロセッサ・システムのリソースを得るために競合し、結局はリソースを共有しなければならない。
【０００４】
プロセッサ・システムは、典型的には、メモリ・バスの複数の要求を管理し、各リソースの帯域幅の一部を各リソース・リクエスタに割り当てるリソース・マネージャを含む。プロセッサ・システム内のプロセッサまたはプロセッサ要素が、リソース・リクエスタである。リソース要求とリソースの利用可能性とのバランスをとることが、効果的なリソース・マネージャの設計における主要な課題となる。プロセッサ・システムは、競合するリクエスタが共有しなければならない共通のＩ／Ｏインターフェース・バスも含む。より詳しくは、プロセッサ・システムは、競合するオペレーティング・システム、ソフトウェア・アプリケーション、およびプロセッサ要素の間で共通のＩ／Ｏインターフェース・バスを共有する。リソース・マネージャは、帯域幅を、競合する複数のＩ／Ｏインターフェース・リソース・リクエスタに割り当てる。Ｉ／Ｏインターフェース・バスは、次に限定はされるものではないが、周辺のプロセッサ・システム、ディスプレイ、キーボード、マウス、メディア・ドライブ、およびその他のデバイスなどの外部デバイスと通信する。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
プロセッサ・システムの従来のソフトウェア・アーキテクチャ上の階層は、ハイパーバイザ、すなわち、プロセッサ・リソース、メモリ・リソースおよびＩ／Ｏリソースに対するオペレーティング・システム（単数または複数）のアクセスをコントロールするソフトウェアの層を含むと考えられる。ハイパーバイザは、弱体化を招く競合を伴わずに、複数のソフトウェア・アプリケーションおよびオペレーティング・システムをプロセッサ・システムまたはＩＨＳにおいて実行できるようにする。ハイパーバイザは、リソース・マネージャをコントロールし、リソース・マネージャがプログラム・アプリケーションごとに許可するメモリおよびＩ／Ｏバス帯域幅の量を制限し、それによって、複数のプログラム・アプリケーションがプロセッサ・システム内で効果的に協調して共存する環境を実現する。リソース・マネージャは、メモリおよびＩ／Ｏバスの使用を制限または限定することによって、メモリ帯域幅およびＩ／Ｏバス帯域幅をコントロールする。そのようなリソース・マネージャがなければ、１つのアプリケーションが、Ｉ／Ｏリソースを無制限に消費して、その結果、別のアプリケーションが適当なタイムフレーム内でアプリケーション・タスクを完了するのに十分なバス帯域幅を得られないようにするおそれがある。メモリ・バスまたはＩ／Ｏバスのリソース管理が不十分であると、連続的な再試行またはプログラムの中断など、望ましくない状況が生じ得る。より詳しくは、不十分なバス・リソース管理により、プロセッサ・システムが限られたバス帯域幅リソースを非効率的に消費するようになるかもしれない。プロセッサまたは単一の集積回路が、複数のコアまたはプロセッサ要素、ならびにメモリおよびＩ／Ｏコントローラを含むプロセッサ・システムは、現在では一般的である。そのようなプロセッサ・システムは、マルチコア・プロセッサまたはシステム・オン・チップ（ＳｏＣ：ｓｙｓｔｅｍ‐ｏｎ‐ａ‐ｃｈｉｐ）と呼ばれることもある。このようなプロセッサ・システムは、メモリおよびＩ／Ｏリソースへのアクセスを要求することができる１つ以上のハードウェア・ユニット（ＨＵ：ｈａｒｄｗａｒｅ  ｕｎｉｔ）を含み得る。ＨＵは、１つまたは複数の汎用プロセッサ・コア、１つまたは複数の専用プロセッサ・コア、およびＩ／Ｏデバイスの代わりに要求を開始し得るＩ／Ｏコントローラを含むこともある。そのようなマルチコア・プロセッサ内のリソース・マネージャは、メモリおよびＩ／Ｏ帯域幅の各部分を、プロセッサ・システム内のハードウェア・ユニットのリソース割り当てグループ（ＲＡＧ：ｒｅｓｏｕｒｃｅ  ａｌｌｏｃａｔｉｏｎ  ｇｒｏｕｐ）に割り当てるとよい。残念ながら、この割り当ては、典型的には比較的粗雑である。例えば、単一のハードウェア・ユニット上で動く複数のオペレーティング・システムごと、またはプログラム・アプリケーションごとに異なるリソースの必要性に対応しない。そのような粗雑なリソース割り当ては、プロセッサ・システムまたはＩＨＳにおいて動作面の問題を生じさせることもある。例えば、このような粗雑なリソース割り当てが原因で、ウイルス・スキャンなどの高帯域アプリケーションが、グラフィカル・ユーザ・インターフェースなどのユーザ対話型アプリケーションの実行を事実上制限する可能性がある。これは、ユーザの体験に悪影響をもたらし得る。
【課題を解決するための手段】
【０００６】
第１の態様によれば、複数のハードウェア・ユニットを含むプロセッサによって共有リソースにアクセスする方法が提供される。方法は、共有リソースへのアクセス要求を呼び出す実行命令を、プロセッサ内のハードウェア・ユニットによって受け取ることを含む。方法はさらに、ハードウェア・ユニット内の複数のパイプライン・ステージ（ｐｉｐｅｌｉｎｅｄ  ｓｔａｇｅ）を命令が通るときに、リソース割り当て識別情報を命令に提供することを含み、リソース割り当て識別情報は、ハードウェア・ユニット内のパイプライン・ステージからパイプライン・ステージへと、命令とともに進む。
【０００７】
パイプライン・ステージのうちの１つが、命令に関して有効アドレスから実アドレスへの変換を行うアドレス変換パイプライン・ステージである一実施形態では、リソース割り当て識別情報は、アドレス変換パイプライン・ステージにて命令と関連付けられる。一実施形態では、パイプライン・ステージのうちの１つはストア・キューであって、ストア・キューは、アドレス変換パイプライン・ステージによるアドレス変換の後に、命令と、関連するリソース割り当て識別情報とを受け取る。
【０００８】
第２の態様が提供される場合、それによれば、半導体ダイ上に位置する複数のハードウェア・ユニットを含むプロセッサが開示される。複数のハードウェア・ユニットは、共有リソースにアクセスするよう構成されている。複数のハードウェア・ユニットは、第１のハードウェア・ユニットを含む。第１のハードウェア・ユニットは、複数のパイプライン・ステージを含み、共有リソースへのアクセス要求を呼び出す実行命令を受け取る。第１のハードウェア・ユニットは、第１のハードウェア・ユニット内の複数のパイプライン・ステージを命令が通るときに、リソース割り当て識別情報を命令に提供するよう構成されている。
【０００９】
共有リソースは、複数のハードウェア・ユニットの外部にあることが好ましい。
【００１０】
一実施形態では、第１のハードウェア・ユニットのパイプライン・ステージのうちの１つが、命令に関して有効アドレスから実アドレスへの変換を行うアドレス変換パイプライン・ステージであり、リソース割り当て識別情報は、アドレス変換パイプライン・ステージにて命令と関連付けられる。一実施形態では、パイプライン・ステージのうちの１つはストア・キューであって、ストア・キューは、アドレス変換パイプライン・ステージによるアドレス変換の後に、命令と、関連するリソース割り当て識別情報とを受け取る。一実施形態では、第１のハードウェア・ユニットを除く他の複数のハードウェア・ユニットはそれぞれ、複数のパイプライン・ステージを含み、上記他のハードウェア・ユニットは、共有リソースへのアクセス要求を呼び出す実行命令を受け取る。上記他のハードウェア・ユニットは、上記他のハードウェア・ユニット内の複数のパイプライン・ステージを通る個々の命令に、リソース割り当て識別情報を提供する。
【００１１】
以下、一例として、次の図面を参照して本発明の好適な実施形態を開示する。
【図面の簡単な説明】
【００１２】
【図１】本発明の好適な実施形態に従った、プロセッサ・システムのリソース・マネージャのブロック図である。
【図２】本発明の好適な実施形態に従った、図１のプロセッサ・システムのリソース割り当てマップである。
【図３】本発明の好適な実施形態に従った、図１のプロセッサ・システムで使用可能なハードウェア・ユニットのブロック図である。
【図４】本発明の好適な実施形態に従った、プロセッサ・システムで使用可能な、開示されるハードウェア・ユニットのブロック図である。
【図５】本発明の好適な実施形態に従った、図４のハードウェア・ユニットを含む開示されるプロセッサ・システムのブロック図である。
【図６】本発明の好適な実施形態に従った、図４の開示されるハードウェア・ユニットのＥＲＡＴルックアップ・テーブルの例を表すものである。
【図７】本発明の好適な実施形態に従った、図４の開示されるハードウェア・ユニットのＦＩＦＯ（ｆｉｒｓｔ  ｉｎ  ｆｉｒｓｔ  ｏｕｔ）ストア・キューの例を表すものである。
【図８】本発明の好適な実施形態に従った、開示される方法を用いたプロセッサ・システム内でのストア要求の処理を示すフロー・チャートである。
【図９】本発明の好適な実施形態に従った、開示されるリソース割り当て方法を用いる情報処理システムのブロック図である。
【発明を実施するための形態】
【００１３】
複数のプロセッサ・ユニットを含むプロセッサ・システムにおいて、リソース割り当てマネージャ（ＲＡＭ：ｒｅｓｏｕｒｃｅ  ａｌｌｏｃａｔｉｏｎ  ｍａｎａｇｅｒ）は、メモリおよびＩ／Ｏ帯域幅割り当てレートを、メモリまたはＩ／Ｏアクセスを要求し得る各プロセッサ・ユニットに割り振ることで、複数のプログラム・アプリケーション間のリソース帯域幅レートを管理するとよい。ハードウェア・ユニット（ＨＵ）という表現は、メモリまたはＩ／Ｏアクセス要求を出し得る、プロセッサ・システム内の各プロセッサ・ユニットに対応する。そのようなハードウェア・ユニット内で実行されるシステム・ソフトウェア・プログラム・アプリケーション内のロードまたはストア命令は、特定のメモリまたはＩ／Ｏ要求を生成し得る。トークン・マネージャは、プロセッサ・システムが用いてもよい、リソース割り当てマネージャ（ＲＡＭ）の一種類の例である。トークン・マネージャは、各ハードウェア・ユニット（ＨＵ）のリソース帯域幅割り当てレートを制御する、１つ以上のリソース・コントロール・レジスタを含むとよい。ＲＡＭは、ハードウェア・ユニットＨＵをリソース割り当てグループ（ＲＡＧ）にグループ化する。リソース・コントロール・レジスタは、プロセッサ・システム内の特定のＲＡＧそれぞれを、トークン・マネージャ内での別々の識別子の割り振りによって識別する。トークン・マネージャは、トークン付与プロセス（ｔｏｋｅｎ  ｇｒａｎｔ  ｐｒｏｃｅｓｓ）によって、要求元ハードウェア・ユニット（ＨＵ）にメモリおよびＩ／Ｏインターフェース・バスの使用を許可する。トークンは、ＨＵによるバス帯域幅要求の個別的なコントロールを実現して、メモリおよびＩ／Ｏバス帯域幅の使用をコントロールする。トークン・マネージャが各リソース割り当てグループ（ＲＡＧ）に関連付けるバス帯域幅の量は、トークン・レート、すなわち、トークン・マネージャがトークンを所定のＲＡＧ内の要求元ＨＵに付与するレートとして知られている。トークン・マネージャは、トークン・マネージャのリソース・コントロール・レジスタにおいて、特定のトークン・レートをＲＡＧの識別子に関連付けることによって、特定の帯域幅割り当てレートを特定のＲＡＧに割り振るとよい。
【００１４】
ハイパーバイザは、トークン・マネージャ内のリソース・コントロール・レジスタを再プログラムして、プロセッサ・システムにおけるＨＵのＲＡＧ割り振りそれぞれに関して、トークン・レートまたは帯域幅割り当てレートに変更を加えてもよい。既存のＲＡＧのトークン・レートに変更を加えるための時間またはシステム・バス・サイクルは、ＲＡＧの割り振りをプログラム実行中に変更する際の主要な欠点である。実行中のプログラムは、最初に、現在未解決の全リソース要求、すなわち、既存のリソース割り当て設定を使用するリソース要求または命令を使い果たす、すなわち「フラッシュ」する必要がある。プロセッサ・システムは、この命令フラッシュを、「ＳＹＮＣ」コマンドを用いて遂行する。さらに、プログラム・アプリケーションは、新たな帯域幅割り当てレートが影響する既存命令の前に、ＳＹＮＣコマンド命令を挿入する必要がある。ＳＹＮＣコマンドは、ＳＹＮＣコマンドに続く次の命令より前に、パイプライン・キューが完了するまで、すなわち空になるまで、プログラム命令の既存のパイプライン・キューに処理を続けさせる。新たな帯域幅レートが有効になる前に、すべてのバスＩ／Ｏ動作が完了する必要がある。この、ＳＹＮＣコマンドに基づくプロセスは、望ましくないほど長い時間を消費することもある。
【００１５】
ＳＹＮＣコマンド・プロセスが完了すると、パイプライン・キュー内の次の命令が、ＲＡＭのコントロール・レジスタ、およびその結果としてＲＡＧ帯域幅割り当てレートに変更を加えることができる。ＲＡＭのコントロール・レジスタに変更を加えるプロセスも、ＲＡＭと、新たなＲＡＧ割り振りを要求するＨＵとの間の距離が比較的長いことが原因で、望ましくないほど長い時間を消費し得る。新たなＲＡＧ割り振りが完了すると、ＨＵ内の命令パイプライン・キューは、後の命令に関して新たな帯域幅割り当てレートで処理を続けることができる。残念ながら、この遅いＲＡＧ割り振り変更プロセスは、帯域幅割り当てレートの変更中に実行される複雑なシステム・クロック・サイクルに関連するシステム遅延を生じさせることもある。このような理由で、このＲＡＧ割り振り変更プロセスは、帯域幅割り当てレートを変更する望ましい方法ではない。
【００１６】
ＲＡＧ割り振り変更の別の手法では、各ＨＵが、個々のＨＵ内のリソース割り当て識別子（ＲＡＩＤ：ｒｅｓｏｕｒｃｅ  ａｌｌｏｃａｔｉｏｎ  ｉｄｅｎｔｉｆｉｅｒ）レジスタを使用して、特定のＲＡＧへのＨＵの割り振りを特定する。ＲＡＩＤの割り振り、ひいては特定のＨＵのリソース帯域幅割り当てレートに変更を加えることが、個々の命令間のリソース帯域幅レートを調節する、より現実的な手法である。ＨＵがＲＡＩＤ情報をローカルに維持することが理由で、ＲＡＩＤを変更し、その結果、異なる帯域幅割り当てレートを有する可能性のある他のＲＡＧにＨＵを関連付けるためにプロセッサ・システムが使うシステム・バス・サイクル時間が減る。このローカルＲＡＩＤストレージ手法は、ローカルＲＡＩＤストレージを用いない手法よりも高速である。しかし、このローカルＲＡＩＤストレージ手法では、プロセッサ・システムは依然として、命令パイプライン・キューをフラッシュし、新たな帯域幅割り当てレートが、新たなレートを必要とする次の命令と同期をとることができるようにする。したがって、ローカルＲＡＩＤストレージ手法もやはり、システム・リソース時間の点から見ると望ましくないほどにコストがかかる。
【００１７】
リソース割り当てマネージャ（ＲＡＭ）は、プロセッサ・システム内のハードウェア・ユニット（ＨＵ）の中核を成し、メモリ・アクセスおよびＩ／Ｏインターフェース・アクセスのＨＵ要求を管理する。さらに、ＲＡＭは、複数ＨＵのリソース割り当てグループ（ＲＡＧ）それぞれの、個々の帯域幅割り当てレートをコントロールすることによって、バス使用を管理する。システム・ソフトウェアは、システム・メモリのストアをプロセッサ・システム内の特定のタスクに割り当て得るが、メモリ・バスは、複数のアプリケーションが共有しなくてはならないリソースを表す。さらに、ＲＡＭは、メモリ・バス帯域幅を効果的に管理して、メモリ・リソースの効率的な使用を実現しなければならない。
【００１８】
図１は、プロセッサ・システム１００における集中型のリソース管理を示すブロック図である。プロセッサ・システム１００は、マルチコア・プロセッサ１０５を含み、マルチコア・プロセッサ１０５は、その中に統合されているリソース割り当てマネージャＲＡＭ１１０を備える。マルチコア・プロセッサの一例は、ＩＢＭ（ＩＢＭ社の登録商標）社、ソニーおよび東芝の「Ｃｅｌｌ  Ｂｒｏａｄｂａｎｄ  Ｅｎｇｉｎｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ、  Ｖｅｒｓｉｏｎ  １．０」という題の、２００５年８月８日の公表資料に示されているものなどのセル・ブロードバンド・エンジン（ＣＢＥ：ｃｅｌｌ  ｂｒｏａｄｂａｎｄ  ｅｎｇｉｎｅ）プロセッサである。この公表資料の開示全体を、参照によって本願明細書に引用したものとする。ＲＡＭ１１０は、汎用コンピューティング能力をもたらす電力プロセッサ要素ＰＰＥ（ｐｏｗｅｒ  ｐｒｏｃｅｓｓｏｒ  ｅｌｅｍｅｎｔ）１１５に結合している。１つの手法では、ＲＡＭ１１０は、要求元ＨＵに対してメモリまたはＩ／Ｏバスを許可するためのトークンを付与する、トークン・マネージャである。各トークンは、例えば１２８バイト、または特定用途に応じたその他の値など、バス帯域幅の特定の割り当てレートを表すとよい。
【００１９】
電力プロセッサ要素ＰＰＥ１１５は、ＲＡＭ１１０からのトークンを蓄積すること、または蓄える（ｂａｎｋ）ことができる。より詳しくは、ＰＰＥ１１５は、ＲＡＭ１１０からのトークンを要求し、ＲＡＭ１１０からのトークンを蓄え、すなわち保持してもよい。ＰＰＥ１１５は、後からのメモリまたはＩ／Ｏ要求に対するＲＡＭ１１０からの承認としてトークンを使用してもよい。この特定のプロセッサ・システム１００は、８つの相乗プロセッサ要素（ｓｙｎｅｒｇｉｓｔｉｃ  ｐｒｏｃｅｓｓｏｒ  ｅｌｅｍｅｎｔ）、すなわちＳＰＥ‐１、ＳＰＥ２、ＳＰＥ‐３、ＳＰＥ‐４、ＳＰＥ‐５、ＳＰＥ‐６、ＳＰＥ‐７、およびＳＰＥ‐８を含み、これらは、図１に示されているようにＲＡＭ１１０に結合している。８つのＳＰＥそれぞれ、ならびにＰＰＥ１１５は、ＲＡＭ１１０からのトークンを個別に要求するとよい。したがって、各ＳＰＥおよびＰＰＥは、本願明細書で定義されるハードウェア・ユニット（ＨＵ）である。この特定のプロセッサ・システム１００では、ＳＰＥおよびＰＰＥは、４つのリソース割り当てグループ（ＲＡＧ）を表すことができる。ＲＡＭ１１０内のコントロール・レジスタは、各ＲＡＧの帯域幅割り当てレートを格納する。
【００２０】
メモリ・コントローラ１６０は、ＲＡＭ１１０に結合し、メモリ・バス１６５へのインターフェースを管理する。メモリ・バス１６５は、後述する情報処理システム（ＩＨＳ）のシステム・メモリ（図示せず）に連結する。システム・メモリは、等しいメモリ・サイズの８つのバンクを含むとよい。メモリのロードまたはストアを要求するＰＰＥまたはＳＰＥなどのＨＵは、メモリの各バンクに個別にアクセスする。ＲＡＭ１１０は、各バンクに関し別々のトークンを出す。メモリの個々のバンクは、アクセス・ロードおよびストア中に、セットアップおよびセトリング時間を必要とする。メモリの各バンクは、どのロードまたはストア動作を完了するためにも複数のバス・サイクルを必要とする。いかなるメモリ・バス動作も待ち時間が長いことから、ＲＡＭ１１０は、メモリの同じバンクに関して繰り返しのトークンを連続して出すことを避ける。
【００２１】
Ｉ／Ｏインターフェース・コントローラ１７０は、ＲＡＭ１１０に結合し、高速および低速インターフェース・バスへのＩ／Ｏインターフェースを管理する。より詳しくは、高速インターフェース入力バスＩＯＩＦ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  ｉｎｔｅｒｆａｃｅ）０‐入１７５および高速インターフェース出力バスＩＯＩＦ０‐出１８０が、プロセッサ１０５を、別のＣＢＥまたはグラフィック・ディスプレイなどの高速デバイスに結合する。低速インターフェース入力バスＩＯＩＦ１‐入１８５および低速インターフェース出力バスＩＯＩＦ１‐出１９０が、プロセッサ１０５を、キーボードおよびコンパクト・ディスク読み書きドライブなどの低速インターフェース・デバイスに結合する。Ｉ／Ｏバスは、入出力インターフェース・バス１７５〜１９０の略称である。
【００２２】
ハードウェア・ユニット（ＨＵ）は、プロセッサ・システム１００においてメモリ・アドレスまたはＩ／Ｏに対するロードまたはストア要求を生成することで、メモリまたはＩ／Ｏリソース帯域幅の使用を直接要求する、プロセッサ・システム１００内のハードウェア要素、プロセッサ要素または機能ユニットである。ＲＡＭ１１０は、プロセッサ・システム１００内のハードウェア・ユニット（ＨＵ）の任意のリソース割り当てグループ（ＲＡＧ）にＲＡＭ１１０が割り当てるメモリおよびＩ／Ｏインターフェース帯域幅の量をコントロールする。図１に示されているように、プロセッサ・システム１００は、ＰＰＥ１１５およびＳＰＥ１〜８などのＨＵを含む。Ｉ／Ｏデバイスの代理として直接メモリ・アクセス（ＤＭＡ：ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）を要求するインターフェース・コントローラ１７０の能力が理由で、Ｉ／Ｏインターフェース・コントローラ１７０は、この特定のプロセッサ・システム１００のアーキテクチャでは、第１０のＨＵとしての要件を満たす。メモリ・コントローラ１６０よびメモリ・バス１６５は、メモリ・コントローラ１６０も、メモリ・バス１６５も、メモリまたはＩ／Ｏバスの使用を直接要求しないため、ハードウェア・ユニットＨＵとしての要件を満たさない。１０個のＨＵはすべて、動作およびＲＡＭ１１０との対話の間中、ＣＢＥのメモリおよびＩ／Ｏ帯域幅の使用をめぐって競合する。
【００２３】
ＲＡＭ１１０は、ＨＵを等しい帯域幅割り当てレートのグループ、すなわちリソース割り当てグループ、つまりＲＡＧに編成する。ＲＡＭ１１０は、Ｉ／Ｏバス帯域幅の合計のうちの所定の割合を各ＲＡＧに割り当てる。ＲＡＭ１１０は、トークンを生成し、それに対し所定のＲＡＧを付与する。さらに、ＲＡＭ１１０は、トークンを出すこと、すなわちトークン付与レートによって、リソース割り当てを管理する。各トークンは、メモリ・バスおよびＩ／Ｏインターフェース・バス・リソース割り当てのメカニズムを実現する。この例では、各トークンは、メモリまたはＩ／Ｏの１２８バイトの帯域幅をサポートする。ＲＡＭ１１０がＨＵにトークンを付与すると、ＨＵは、１２８バイトというＩＯバス使用のトークン・サイズまでで、許可されたＩ／Ｏまたはメモリ・バス・プロセスを開始し、完了するまでＩ／Ｏまたはメモリ・バス・プロセスを管理する。
【００２４】
図２は、図１のプロセッサ・システム１００のＲＡＭ１１０が用いるとよい、１つのリソース割り当てマップを示す図である。図は、リソース割り当てグループ番号、すなわちＲＡＧ番号（ＲＡＧ＃）を表す列２１０を含む。ＲＡＭ１１０は、図２が示すリソース割り当てマップに従って動作する。ハイパーバイザを含むこともあるシステム・ソフトウェアが、プロセッサ・システム１００の帯域幅割り当てレートを判断する。さらに、システム・ソフトウェアは、ＲＡＭ１１０のリソース・コントロール・レジスタ１９５に、帯域幅レートのＲＡＧ割り振りをロードする。ＲＡＭ１１０は、４つのリソース割り当てグループＲＡＧ、すなわち、列２１０に見られるＲＡＧ＃０〜３それぞれに対する特定のメモリ・バスおよびＩ／Ｏインターフェース帯域幅割り当てレートを管理する。ＲＡＭ１１０は、特定のハードウェア・ユニット（ＨＵ）に対するＩ／Ｏ帯域幅割り当てレートを管理し、その割り当てレートを、システム・ソフトウェアが特定のＲＡＧに割り振るＲＡＧ番号に基づかせる。メモリ・アクセスまたはインターフェースＩ／Ｏ転送を要求するソフトウェア命令は、図２の列２１５のＨＵと、列２１０のＲＡＧ番号との間でＲＡＧ番号が関連付ける、リソース割り当てレート割り振りを使用する。
【００２５】
上記のように、ハードウェア・ユニット（ＨＵ）は、メモリ・アクセスまたはＩ／Ｏインターフェース転送を要求する能力がある、プロセッサ・システムのハードウェア処理要素である。図１の例および図２の列２１５では、ハードウェア・ユニット（ＨＵ）は、ＰＰＥ、ＳＰＥ‐１、ＳＰＥ２、ＳＰＥ‐３、ＳＰＥ‐４、ＳＰＥ‐５、ＳＰＥ‐６、ＳＰＥ‐７、ＳＰＥ‐８、および最後にＩ／Ｏインターフェース・コントローラ１７０である。システム・ソフトウェアは、特定のＲＡＩＤビットを各ＨＵの個々のＲＡＩＤレジスタに割り振ることで、列２１０に示されるように、特定のＲＡＧの、数値で示される関連性を各ＨＵに割り振る。さらに、列２１０のＲＡＧの数値で示される割り振りは、動的に変化して、プロセッサ・システム１００がシステム・ソフトウェアの要求通りにオンザフライで（ｏｎ  ｔｈｅ  ｆｌｙ）Ｉ／Ｏバス帯域幅割り当てレートの割り振りを変更できるようにしてもよい。図２のマップに示されているように、ＲＡＭ１１０は、ハードウェア・ユニットＰＰＥ１１５およびＳＰＥ‐１を、０と等しいＲＡＧ番号、すなわちＲＡＧ０に割り振る。ＲＡＧ０の割り振りは、ＲＡＧ０のハードウェア・ユニットＨＵに対する特定の帯域幅割り当てレートを表す。ＰＰＥ１１５およびＳＰＥ‐１からの、それから先のメモリ・アクセス要求またはＩ／Ｏインターフェース要求に対する帯域幅割り当てレートの割り振りは、システム・ソフトウェア、より具体的にはハイパーバイザが割り振りに変更を加えるまで、ＲＡＧ０の割り振りに対応する。図２の例では、ＲＡＭ１１０はさらに、ＳＰＥ‐２、ＳＰＥ‐３、ＳＰＥ‐４およびＳＰＥ‐５を、１というＲＡＧ番号１、すなわちＲＡＧ１に割り振る。ＲＡＭ１１０は、ＳＰＥ‐６およびＳＰＥ‐７を、ＲＡＧ番号２、すなわちＲＡＧ２に割り振る。ＲＡＭ１１０は、ＳＰＥ‐８をＲＡＧ番号３、すなわちＲＡＧ３に割り振る。Ｉ／Ｏコントローラ１７０は、Ｉ／Ｏコントローラ１７０に隣接してＲＡＧ番号列２１０に示されている特定のＲＡＧ番号、すなわちＲＡＧ０〜ＲＡＧ３にそれぞれ対応する、４つの仮想Ｉ／Ｏチャネル（図示せず）を含む。さらに、ＲＡＭ１１０は、Ｉ／Ｏデバイスから生じる各Ｉ／Ｏ要求を、所定の仮想チャネルに割り振り、それによって、Ｉ／Ｏ要求を対応するＲＡＧに割り振る。
【００２６】
一例では、プロセッサ・システム１００はさらに、メモリ・バンク２２０を８つの別々のバンクに分割する。メモリの別々のバンクはそれぞれ、一意のメモリ・ロードまたはストア動作を表す。メモリ・バンク・アクセスまたはメモリ・データ転送には、ＲＡＭ１１０に対するトークン要求と、ＲＡＭ１１０による対応するトークン付与が必要である。ＲＡＭ１１０は、メモリ・バンクのロードおよびストア動作の転送帯域幅を管理する。ＲＡＭ１１０は、各メモリ・バンクのロードまたはストア要求と、単一の帯域幅レートとを関連付ける。メモリ・コントローラ１６０は、プロセッサ・システム１００において、個々のメモリ・バンクＩ／Ｏロードおよびストア動作を管理する。
【００２７】
ＲＡＭ１１０のトークン要求およびトークン付与プロセスは、バス帯域幅の利用可能性合計の或る割合に相当する。さらに、帯域幅割り当てレートは、バスの利用可能性全体、すなわち１００％のうちの割合である。図２の例では、帯域幅の割合が、メモリ・バンク２２０の各列に示されている。ＲＡＧ０は、総メモリ・バス帯域幅の２０％を表すよう示されている。ＲＡＧ１は、総メモリ・バス帯域幅の３０％を表す。ＲＡＧ２は、メモリ・バス帯域幅の１５％を表す。図２に示されているように、ＲＡＧ３は、総メモリ・バス帯域幅の１０％を表す。最後に、Ｉ／Ｏコントローラ１７０の４つの仮想チャネルに対応するＲＡＧ０〜ＲＡＧ３は、総メモリ・バス帯域幅の１０％を表す。メモリ・バスの総バス帯域幅は１００％であるが、バス帯域幅割合のＲＡＧ割り振り全体の合計は、必ずしも１００％と等しいとは限らない。より詳しくは、必ずしもバスの完全利用がプロセッサ・システム１００の標準状態であるとは限らないため、メモリ帯域幅の総割合は合わせて１００％以下であればよい。図２の例では、メモリ帯域幅の総割合、すなわち８５％が、列２２０に示されている割合すべての和を表す。
【００２８】
図２のＩ／Ｏインターフェースの列２３０は、ＲＡＭ１１０が管理することになる第２〜第５のリソースを示す。これらのリンク・リソースは、Ｉ／ＯバスＩＯＩＦ０‐入１７５、ＩＯＩＦ０‐出１８０、ＩＯＩＦ１‐入１８５およびＩＯＩＦ１‐出１９０を含む。これら４つのＩ／Ｏインターフェース・バスはそれぞれ、ＲＡＭ１１０の、特定の帯域幅割り当てリソースと、Ｉ／Ｏインターフェース・バス割り当て割合レートとを表す。より詳しくは、図２が示すように、ＲＡＭ１１０は、特定のＨＵに特定のＲＡＧ番号を割り振り、今度はＲＡＧ番号が、割合として示される帯域幅割り当てレートを、５つの関連するリソース、すなわちメモリ・バンク２２０および４つのＩ／Ｏ２３０のバスそれぞれに割り振る。ＩＯＩＦ０‐入１７５は、ＲＡＧ０に関して１０％のＩ／Ｏインターフェース・バス帯域幅割り当てレートを、ＲＡＧ１に関して２０％を、ＲＡＧ２に関して１５％を、ＲＡＧ３に関して１５％を、さらに最後にＲＡＧ０〜ＲＡＧ３に関して２０％を表すよう図２に示されている。メモリ・バスの場合の様に、バス帯域幅割り当ての総割合は、合わせて総Ｉ／Ｏインターフェース・バス帯域幅割り当ての１００％になる必要はない。列２３０のＩＯＩＦ０‐出１８０は、ＲＡＧ０に関して１５％のＩ／Ｏインターフェース・バス帯域幅割り当てレートを、ＲＡＧ１に関して１０％を、ＲＡＧ２に関して２０％を、ＲＡＧ３に関して２５％を、さらに最後にＲＡＧ０〜ＲＡＧ３に関して１５％を表す。ＩＯＩＦ１‐入１８５は、ＲＡＧ０に関して１５％のＩ／Ｏインターフェース・バス帯域幅割り当てレートを、ＲＡＧ１に関して２０％を、ＲＡＧ２に関して１０％を、ＲＡＧ３に関して１０％を、さらに最後にＲＡＧ０〜ＲＡＧ３に関して１０％を表す。図２に示されているＩＯＩＦ１‐出１９０は、ＲＡＧ０に関して１０％のＩ／Ｏインターフェース・バス帯域幅割り当てレートを、ＲＡＧ１に関して１０％を、ＲＡＧ２に関して３０％を、ＲＡＧ３に関して１５％を、さらに最後にＲＡＧ０〜ＲＡＧ３に関して１５％を表す。場合によっては、ＲＡＭ１１０は、追加のＲＡＧ番号割り振りを使用して、帯域幅が現在割り当てられていないか、またはトークンが付与されていない要求元ＨＵからのメモリまたはＩ／Ｏ要求を管理してもよい。
【００２９】
図３は、リソース割り当て識別子（ＲＡＩＤ）レジスタ３５５を含むハードウェア・ユニット（ＨＵ）３００のブロック図を示す。プロセッサ・システム１００などのマルチコア・プロセッサ・システムは、そのすべてのハードウェア・ユニットとして、ＨＵ３００を用いてもよい。より具体的には、プロセッサ・システム１００は、ＨＵ３００をＰＰＥ１１５、ＳＰＥ‐１〜ＳＰＥ‐８、およびＩ／Ｏコントローラ１７０として使用してもよい。しかし、そのようなＨＵ３００の構成を備えたプロセッサ・システム１００は、以下の、バス帯域幅割り当ての割り振りの問題に直面することもある。
【００３０】
ハードウェア・ユニット（ＨＵ）３００は、命令ハンドラ３０５および他のハードウェア３０６を含む。命令ハンドラ３０５は、後述のように命令の実行を扱う多段命令パイプライン（ｍｕｌｔｉ−ｓｔａｇｅ  ｉｎｓｔｒｕｃｔｉｏｎ  ｐｉｐｅｌｉｎｅ）を含む。他のハードウェア３０６は、ローカル・キャッシュ・メモリ、演算論理ユニット（ＡＬＵ：ａｒｉｔｈｍｅｔｉｃ  ｌｏｇｉｃ  ｕｎｉｔ）、または特定のタイプのＨＵに適したその他のハードウェアなどのハードウェアを含むとよい。例えば、ＰＰＥまたはＳＰＥタイプのＨＵはＡＬＵを含む可能性がある一方で、Ｉ／Ｏコントローラ・タイプのＨＵはＡＬＵを含まないと考えられる。
【００３１】
プロセッサ・システム１００内の典型的なＨＵ３００など、特化して構成されている各ＨＵは、プロセッサ・システム内で実行される、より大型のソフトウェア・アプリケーションまたはプログラム・アプリケーションの一部として、一連のプログラミング・ソフトウェア命令を開始し得る。特定のハードウェア・ユニットＨＵ３００が、プロセッサ・システム１００内で実行されているプログラム・アプリケーションから一連の命令を受け取る。プログラム・アプリケーションの出力は、命令キュー３０７の入力に送り込まれる。ＨＵ３００は、ＨＵ３００内の命令ハンドラ３０５の命令キュー３０７に、命令を入れる。命令キュー３０７は、ＨＵ３００内で実行される次の命令を含む命令レジスタ３１０に結合している。ＨＵ３００は、ＨＵ内で実行される次の命令、例えばメモリ・ストアまたはＩ／Ｏインターフェース・ストア命令を復号する。ストア命令は、メモリまたはインターフェースＩ／Ｏ要求を必要とする。このストア命令の後、ＨＵ３００が開始する次の命令が、命令キュー３０７から命令レジスタ３１０へ移動する。
【００３２】
命令ストア・シーケンスの間、ＨＵ３００はまず、ＨＵがストア命令の実行を完了するときにＨＵがデータを書き込むことになる有効アドレス（ＥＡ：ｅｆｆｅｃｔｉｖｅ  ａｄｄｒｅｓｓ）の値を求める。命令ハンドラ３０５は、書き込み命令の有効アドレス（ＥＡ）の計算を容易にするオペランドを含んだ汎用レジスタ（ＧＰＲ：ｇｅｎｅｒａｌ  ｐｕｒｐｏｓｅ  ｒｅｇｉｓｔｅｒ）３１５のセットを含む。汎用レジスタ（ＧＰＲ）３１５は、オペランド・レジスタ３２０およびオペランド・レジスタ３２５に結合している。命令レジスタ３１０、オペランド・レジスタ３２０、およびオペランド・レジスタ３２５は、すべてＥＡ生成器３３０の個別の入力に結合している。ＥＡ生成器３３０は、命令レジスタ３１０内のストア命令に関して有効アドレス（ＥＡ）を計算する。ＥＡ生成器３３０の出力は、ＥＡレジスタ３３５の入力に結合しており、そこへストア命令の有効アドレスを提供する。ＥＡレジスタ３３５の出力は、有効アドレス‐実アドレス変換器（ＥＲＡＴ：ｅｆｆｅｃｔｉｖｅ  ｔｏ  ｒｅａｌ  ａｄｄｒｅｓｓ  ｔｒａｎｓｌａｔｏｒ）３４０の入力に結合している。ＥＲＡＴ３４０は、ＥＡレジスタ３３５から有効アドレス・データを入力として受け取る。
【００３３】
メモリまたはＩ／Ｏストア要求の間、ＨＵ３００は、ソフトウェア・アプリケーション動作アーキテクチャの中の有効アドレス変換を使用して実アドレスを生成する。実アドレスは、メモリ・アドレス位置に直接関係する。より詳しくは、実アドレスは、ＩＨＳのシステム・メモリ（図示せず）内など、ＨＵの外部のメモリ位置に対応する。ＥＲＡＴ３４０は、連想配列のページ・テーブル変換データのページ・テーブル・キャッシュを使用するルックアップ・テーブル（ＬＵＴ：ｌｏｏｋｕｐ  ｔａｂｌｅ）として機能し得る。さらに、ＥＲＡＴ３４０内の各エントリは、ページ・テーブル・エントリ（ＰＴＥ：ｐａｇｅ  ｔａｂｌｅ  ｅｎｔｒｙ）である。ＥＲＡＴ３４０の各エントリは、有効アドレス（ＥＡ）をメモリのページの実アドレス（ＲＡ）にマッピングする。有効アドレス（ＥＡ）、すなわち仮想アドレスは、ＥＲＡＴ３４０ページ・テーブル・キャッシュまたはメモリ・マップ配列への入力を表す。ＥＲＡＴ３４０データ・テーブルは、ＥＡ入力と関連する実アドレス（ＲＡ）およびＷＩＭＧビットを格納する。ＨＵ３００は、メモリ・ページごとにＥＲＡＴキャッシュを編成する。ＥＲＡＴ３４０のメモリ・ページは、固定サイズまたは複数の異なるサイズのうちの１つを示すとよい。これらメモリ・ページは、変換中のアドレスの最上位のビット・セットを表す。一例では、ＥＲＡＴ３４０は、４Ｋバイトの有効アドレスを変換し得る。この特定の例では、ＥＲＡＴ３４０は、有効アドレスの下位１２ビットを変換に使用しない。さらに具体的には、ＥＲＡＴ３４０は、有効アドレスの下位１２ビットをページ・オフセットとして解釈し、４Ｋバイトの有効アドレスの下位１２ビットは、変換後、元の状態のままである。したがって、ページは、有効アドレスおよび実アドレス（ＲＡ）の、残りの上位アドレス・ビットを表す。
【００３４】
ＥＲＡＴ３４０は、メモリ・アドレス転送属性としてＷＩＭＧビットを格納する。より具体的には、図３の例において、ＥＲＡＴ３４０は、ＷＩＭＧビットをアドレス・ストレージ属性として格納する。ＷＩＭＧビットは、プロセッサ・システム内のソフトウェアおよびハードウェアがメモリにアクセスする方法を決定する。ＷＩＭＧビットは、アドレス要求のライト・バックまたはライト・スルー状態に対応するＷビットと、ストア要求のキャッシュ有効またはキャッシュ禁止状態を表すＩビットとを含む。Ｍビットは、ストア要求のローカルまたはグローバルのアクセス権を表す。Ｇビットは、アドレス・ストア要求の保護または非保護状態に対応する。ＥＲＡＴ３４０の出力は、ＲＡ，ＷＩＮＧレジスタ３４５の入力に結合している。ＥＲＡＴ３４０は、物理、すなわち実アドレスＲＡと、ストレージ属性ＷＩＭＧビットのセットとを出力として生成する。ＲＡ，ＷＩＭＧレジスタ３４５は、有効アドレス‐実アドレス変換モジュールＥＲＡＴ３４０の出力を入力として受け取る。ＲＡ，ＷＩＭＧレジスタ３４５の出力は、先入れ先出し（ＦＩＦＯ）パイプライン・ストア・キュー３５０の入力に結合している。ストア・キュー３５０は、ＲＡ，ＷＩＭＧレジスタ３４５から命令シーケンスを受け取る。さらに、ＨＵ３００は、これら命令シーケンスを、（ＦＩＦＯ）パイプライン・ストア・キュー３５０に集めて格納する。命令パイプライン・ストア・キュー３５０は、ＲＡ，ＷＩＭＧレジスタ３４５からの後続の命令を保持する。ストア・キュー３５０に詰めていくことで、ＨＵ３００が現在の命令を実行している間に、ＥＲＡＴ３４０によって新たなアドレスを変換できるようになる。現在の命令は、パイプライン（ＦＩＦＯ）ストア・キュー３５０の最下位置にある。ＨＵ３００は、満杯または部分的に満杯のストア・キュー３５０の現在の命令を実行し、現在の命令のメモリまたはＩ／Ｏバス・アクセスを待つ。
【００３５】
ＨＵ３００は、図３に示されているように、ハイパーバイザ・ソフトウェア層３５２を含む。さらに、ＨＵ３００内で動いているハイパーバイザ３５２は、ＲＡＧ識別子を表す２ビットのバイナリ・コードでＲＡＩＤレジスタ３５５をポピュレートする。ＲＡＩＤレジスタ３５５の出力は、トークン・リクエスタ３６０の入力に結合している。トークン・リクエスタ３６０は、ＨＵ３００がメモリまたはＩ／Ｏバス動作を必要とするときに、リソース割り当てマネージャＲＡＭ１１０からのトークンを要求する。ＲＡＩＤレジスタ３５５は、４つのＲＡＧのうちの１つ、すなわちＲＡＧ０、ＲＡＧ１、ＲＡＧ２またはＲＡＧ３を特定する２バイナリ・ビットのデータを含む。より詳しくは、ＲＡＧ０〜ＲＡＧ３は、ＲＡＭ１１０における個々の帯域幅割り当てレートに直接対応する。ＨＵ３００は、ストア・キュー３５０の最下のエントリを読み取り、ＲＡＩＤレジスタ３５５内のＲＡＩＤビット値をトークン・リクエスタ３６０へ送出することによって、Ｉ／Ｏ要求を開始する。その後、トークン・リクエスタ３６０は、ＲＡＭ１１０に結合している出力信号トークン要求ライン３６５に出力信号トークン要求を生成する。このようにして、トークン・リクエスタ３６０は、メモリ・バス・アクセスの要求を、リソース割り当てマネージャＲＡＭ１１０へ送出する。出力信号トークン要求は、ＲＡＩＤレジスタ３５５からのＨＵ３００ＲＡＩＤビットを２つ含む。ＲＡＩＤレジスタ３５５からの２つのＲＡＩＤビットは、ＨＵ３００のＲＡＧ識別子ＲＡＧ０〜ＲＡＧ３をそれぞれ表す。ＲＡＭ１１０は、トークン要求を受け取り、ＨＵ３００が必要とする帯域幅割り当てレートを評価する。ＲＡＭ１１０は、ＨＵ３００のＲＡＩＤ識別子ビットを、現在の帯域幅使用に対して評価し、トークン付与をトークン・リクエスタ３６０へ送るトークン付与ライン３７０上にトークン付与信号を生成することによって、トークンを付与する。
【００３６】
より詳しくは、ＲＡＭ１１０は、ＲＡＭ１１０内での適切なタイミングおよび帯域幅分析が完了すると、ライン３７０の入力にトークン付与信号を生成する。ストア・キュー３５０の出力は、スイッチ３７５の１つの入力に結合している。スイッチ３７５は、トークンの付与後にリソース要求が進むことを可能にするハードウェアを表す。ストア・キュー３５０の出力がメモリ・ストア命令であれば、ストア要求は、メモリ・バス１６５の使用を必要とする。ストア・キュー３５０の出力がＩ／Ｏストア命令であれば、ストア要求はＩ／Ｏバス１７５〜１９０の使用を必要とする。ＨＵ３００は、ストア・キュー３５０の出力を評価して、どのバス、すなわちメモリ・バス１６５またはＩ／Ｏバス１７５〜１９０をストア要求が必要としているかを判断する。スイッチ３７５は、ストア・キュー３５０の出力を、図１のプロセッサ・システム１００のメモリ・コントローラ１６０／システム・メモリ１６５またはＩ／Ｏコントローラ１７０／Ｉ／Ｏバス１７５〜１９０と効果的に接続および切断する。この切り替えは、ＨＵ３００のスイッチ３７５に結合しているトークン・リクエスタ３６０にコントロールされる。トークン・リクエスタ３６０が、トークン付与ライン３７０上でＲＡＭ１１０からトークン付与信号を受け取ると、ＨＵ３００は、効果的にスイッチ３７５を閉じ、ストア動作の最終ステージを開始する。さらに、ＨＵ３００は、ストア・キュー３５０の最下のエントリが、スイッチ３７５を通って移動してメモリまたはＩ／Ｏバス１７５〜１９０にアクセスし、したがって、実アドレスおよびＷＩＭＧビットを、ストア動作のタイプに応じてメモリまたはＩ／Ｏバスに乗せることを許可する。ストレージ・データおよびデータ・サイズが、実アドレスおよびＷＩＭＧビット・データとともに進む。
【００３７】
上記の方法は、図１のプロセッサ・システム１００内でのストア動作を示す。あるいは、プロセッサ・システム１００は、書き込みデータの生成はしないが読み取りデータを要求するロード動作を扱うこともある。より具体的には、ロード動作の間、プロセッサ・システム１００は、Ｉ／Ｏインターフェース・バス１７０〜１９０上にデータを書き込むことも、メモリ・バス１６５を介してシステム・メモリにデータを書き込むこともない。ロード動作には２つの段階がある。第１の段階では、ＨＵがロード要求を開始し、最終的に、実アドレスをメモリ・バス１６５またはＩ／Ｏインターフェース・バス１７０〜１９０に乗せる。第２の段階で、プロセッサ・システムがロード・データを取り出した後、プロセッサ・システムはロード・データを要求元ＨＵに渡し、ロード動作が完了する。実アドレス、ＷＩＭＧビットおよびＲＡＩＤビットは、ストア動作で果たすのと同じ役割をロード動作において果たす。なお、簡単にするために、以下の説明ではストア動作に焦点を当てる。
【００３８】
図１および図２を参照する。ＲＡＭ１１０は、プロセッサ・システム１００の各ＨＵに、ＲＡＭ１１０のコントロール・レジスタ１９５内の特定のＲＡＧ番号を割り振る。さらに、ＲＡＧ番号を割り振ることで、プロセッサ・システムの各ハードウェア・ユニットＨＵごとに特定の帯域幅割り当てレートを区別する際の柔軟性がもたらされる。なお、プログラム・アプリケーション間または各ＨＵ内の特定の命令間で帯域幅割り当てレートを区別するには追加動作が必要である。
【００３９】
再度図１および図２両方を参照する。ＲＡＭ１１０内のコントロール・レジスタ１９５にあるデータに変更を加えることが、命令ごとにバス帯域幅割り当てレートの割り振りを変更する１つの手法を実現する。より具体的には、ハイパーバイザ３５２は、ＲＡＭ１１０内のリソース・コントロール・レジスタ１９５を新たなバス帯域幅値で再プログラミングすることによって、帯域幅割り当てレートに変更を加えるとよい。リソース・コントロール・レジスタ１９５に対するストア動作が完了すると、ストアを要求している特定のＨＵが、すべての新しいバス動作を新たなＲＡＧ番号の割り振りを用いて開始し、新たなバス帯域幅割り当てレートが適用される。プロセッサ・システム１００のシステム・ソフトウェアは命令を実行し、命令は新たな帯域幅割り当てレートを示す単数または複数のＲＡＧに関連する。残念ながら、この手法は、完了するために複数のバス・サイクルを要することもあり、プロセッサ・システム１００による非効率的な処理をもたらしがちである。
【００４０】
ＲＡＩＤレジスタ３５５におけるＲＡＩＤビットの割り振りを再プログラミングすることが、命令ごとに帯域幅割り当てレートの割り振りを変更するさらに別の手法を実現する。図３のＲＡＩＤレジスタ３５５への変更は、長いサイクル時間の外部ストア動作が必要ないように、特定のＨＵ内部にとどまる。残念ながら、ＲＡＭ１１０は、ＲＡＭ１１０のコントロール・レジスタに既にある当該の既存のＲＡＧ番号および帯域幅割り当てレート割り振りに対する、新たなＲＡＩＤレジスタ３５５割り振りを制限する。システム・プログラマまたはプロセッサ・システム・コンパイラは、ＲＡＩＤの再割り当てを認識して、適切な命令シーケンスを生成し、特定のＨＵ内でコンフリクトを伴わずに変更を加えることができるようにしなければならない。さらに、ＨＵ３００は、隣接する任意の２つのストア命令の間にＳＹＮＣステートメントを挿入して、最新のＲＡＩＤ変更より前にすべてのストア命令の命令キュー３０７をまずフラッシュし、新たな帯域幅割り当てレートを要求する次のストア動作のキューを保持しなければならない。より詳しくは、キューは保持状態に入り、新たな帯域幅割り当てレートを必要とするストア動作より前のすべての命令を取り除かなければならない。次に、ハイパーバイザ３５２は、新たなリソース割り当て識別子の、ＲＡＩＤレジスタ３５５へのロードを発生させる。ＨＵ３００がＳＹＮＣコマンドでキューをフラッシュすると、先行するストア動作は、次の動作用にバスを解放する前に、それらのバス・サイクルを完了しなければならない。続いて、特定のＨＵが、新たなＲＡＩＤビット割り振りを活用するストア命令を実行する。残念ながら、上記の方法でＳＹＮＣコマンドを出すと、ＳＹＮＣステートメントが命令キュー・パイプラインの遅延を複数生じさせるため、プロセッサ・システムのパフォーマンスに対して重大な悪影響を与えることもある。このような理由で、図１のプロセッサ・システム１００のＨＵに図３のＨＵ３００のＨＵ構成を使用することは、望ましくないこともある。
【００４１】
図４は、開示される方法を実践して、特定のＨＵ内で命令ごとまたはアクセス要求ごとに異なる帯域幅割り当てレートを可能にする、典型的なハードウェア・ユニット（ＨＵ）４００のブロック図である。開示される方法および装置の一実施形態では、望ましくない長い待ち時間のＳＹＮＣ命令を導入することも、ＲＡＭ１１０のＲＡＩＤレジスタのデータに変更を加える追加のストア命令を導入することもなく、各命令が、特定のＩ／Ｏバス帯域幅割り当てレートに対応することができる。
【００４２】
図５は、半導体ダイ５０５を含むプロセッサ・システム５００のブロック図である。プロセッサ・システム５００は、そのハードウェア・ユニットそれぞれに、ＨＵ４００などの個別のハードウェア・ユニットを用いる。より具体的には、プロセッサ・システム５００は、ＳＰＥ‐５１１〜ＳＰＥ‐５１８、ＰＰＥ５１９、およびＩ／Ｏコントローラ５２０としてＨＵ４００を使用してもよい。プロセッサ・システム５００は、上記のセル・ブロードバンド・エンジン（ＣＢＥ）のアーキテクチャを用いて、このマルチコア・プロセッサ・システムを構成する複数のコアを構成してもよい。プロセッサ・システム５００は、メモリ・バス５３０に結合しているメモリ・コントローラ５２５を含む。メモリ・バス５３０は、システム・メモリ（図示せず）に結合している。プロセッサ・システム５００のＩ／Ｏインターフェース（ＩＯＩＦ）コントローラ５２０としても知られるＩ／Ｏコントローラ５２０は、Ｉ／Ｏバス５３５に結合している。Ｉ／Ｏバス５３５は、図５に示されているとおり、ＩＯＩＦ０‐入バス５４０およびＩＯＩＦ０‐出バス５４５、ＩＯＩＦ１‐入バス５５０およびＩＯＩＦ１‐出バス５５５を含む。
【００４３】
プロセッサ・システム５００は、メモリ・バス５３０およびＩ／Ｏバス５３５へのアクセスの要求を扱うリソース割り当てマネージャ（ＲＡＭ）５６０を含む。ＲＡＭ５６０は、リクエスタへのリソースの割り当てをコントロールするリソース・コントロール・レジスタ５６５を含む。一実施形態では、図５のＲＡＭ５６０は、図１のＲＡＭ１１０と同じ構成および機能性を示すとよい。
【００４４】
図４に戻る。ハードウェア・ユニット（ＨＵ）４００は、命令ハンドラ４０５および他のハードウェア４０６を含む。命令ハンドラ４０５は、後述のように命令の実行を扱う多段命令パイプラインを含む。ハードウェア４０６は、ローカル・キャッシュ・メモリ、演算論理ユニット（ＡＬＵ）、または、特定のタイプのＨＵに適したその他のハードウェアなどのハードウェアを含むとよい。例えば、ＰＰＥまたはＳＰＥタイプのハードウェア・ユニットは、演算論理ユニットを含む可能性がある一方で、Ｉ／ＯコントローラＨＵはＡＬＵを含まないと考えられる。
【００４５】
プロセッサ・システム５００内の典型的なＨＵ４００など、特別に構成されている各ＨＵは、プロセッサ・システム内で実行される、より大型のソフトウェア・アプリケーションまたはプログラム・アプリケーションの一部として、一連のソフトウェア・プログラム命令を開始し得る。特定のハードウェア・ユニットＨＵ４００が、プロセッサ・システム５００内で動くプログラム・アプリケーションから一連の命令を受け取る。プログラム・アプリケーションの出力は、命令キュー４０７の入力に送り込まれる。ＨＵ４００は、命令ハンドラ４０５の命令キュー４０７に、命令を入れる。命令キュー４０７は、ＨＵ４００内で実行される次の命令を含む命令レジスタ４１０に結合している。ＨＵ４００は、復号器（図示せず）を用いて、ＨＵ内で実行される次の命令、例えばシステム・メモリ要求またはＩ／Ｏインターフェース要求を必要とするストア命令を復号する。このストア命令の後、ＨＵ４００が開始する次の命令が、命令キュー４０７から命令レジスタ４１０へ移動する。命令ストア・シーケンスの間、ＨＵ４００はまず、ＨＵがストア命令の実行を完了するときにＨＵがデータを書き込むことになる有効アドレスの値を求める。
【００４６】
命令ハンドラ４０５は、書き込み命令の有効アドレス（ＥＡ）の復号を容易にするオペランドを含んだ、汎用レジスタ（ＧＰＲ）４１５のセットを含む。汎用レジスタ４１５は、第１のオペランド・レジスタ４２０および第２のオペランド・レジスタ４２５に結合している。命令レジスタ４１０、第１のオペランド・レジスタ４２０、および第２のオペランド・レジスタ４２５は、すべてＥＡ生成器４３０の個別の入力に結合している。ＥＡ生成器４３０は、命令レジスタ４１０内のストア命令に関して有効アドレス（ＥＡ）を計算する。ＥＡレジスタ４３５が、ＥＡ生成器４３０の出力に結合しており、有効アドレスの計算結果を、ＥＡ生成器４３０から入力として受け取る。ＥＡレジスタ４３５の出力は、有効アドレス‐実アドレス変換器（ＥＲＡＴ）４４０の入力に結合している。命令ハンドラ４０５の要素は、情報がステージからステージへ、または要素から要素へ進むパイプライン構造を構成する。例えば、命令キュー４０７、ＥＲＡＴ４４０、レジスタ４４５およびＦＩＦＯストア・キュー７００が、このパイプラインのステージの一部の例である。
【００４７】
図６は、ページ番号エントリの典型的なＥＲＡＴ４４０を示す。典型的なＥＲＡＴは３２のエントリを含むとよいが、それより大きなＥＲＡＴおよび小さなＥＲＡＴも可能である。さらに、ＥＲＡＴ４４０の各エントリは、ページ・テーブル・エントリ（ＰＴＥ）である。ＥＲＡＴ４４０は、キャッシュ変換データの複数エントリを含み、書き込み命令またはストア命令の有効アドレスＥＡまたは有効ページ番号（ＥＰＮ：ｅｆｆｅｃｔｉｖｅ  ｐａｇｅ  ｎｕｍｂｅｒ）を入力として使用する。図６に見られるように、キャッシュ変換データの複数エントリのうち、一番上の３つが詳しく示されている。ＥＲＡＴ４４０ルックアップ・テーブル（ＬＵＴ）は、実アドレス（ＲＡ）または実ページ番号（ＲＰＮ：ｒｅａｌ  ｐａｇｅ  ｎｕｍｂｅｒ）データに対する有効アドレス（ＥＡ）を含む。ＥＲＡＴテーブルの各行は、有効ページ番号（ＥＰＮ）を実ページ番号（ＲＰＮ）にマッピングする。ＥＲＡＴ４４０は、ＲＡデータと関連するＷＩＭＧビットおよびＲＡＩＤビットも含む。より詳しくは、ＲＡＩＤビットは、ＥＲＡＴ４４０のページ・テーブル・エントリ（ＰＴＥ）の属性である。ＥＲＡＴ４４０は、他の複数の属性（図示せず）を含んでもよい。ＥＲＡＴ４４０は、ページ・オフセットを変換する必要も、ＥＡ入力の下位ビットを変換する必要もない。さらに、ＥＲＡＴ４４０は、ＥＡおよびＲＡページ・テーブル・データの下位ビットを格納しなくてよい。この例では、ＥＲＡＴ４４０の一番上のエントリにおいて、ＨＵ４００は、有効アドレスＥＡ３をＥＲＡＴ４４０への入力として使用する。ＥＲＡＴ４４０は、実アドレスＲＡ３データを出力する。０１０１として示されているＷＩＭＧビットは、それぞれＷ、Ｉ、ＭおよびＧビットを表す。実アドレスＲＡ３のライト・バックまたはライト・スルー状態に対応するＷビットは０であり、したがってライト・バックを指定する。ＲＡ３のキャッシュ有効またはキャッシュ禁止状態に対応するＩビットは１であり、したがってキャッシュ禁止を指定する。実アドレスＲＡ３のローカル・アクセスまたはグローバル・アクセスに対応するＭビットは０であり、したがってローカル・アクセスを指定する。実アドレスＲＡ３の非保護または保護状態に対応するＧビットは１であり、したがって保護状態を指定する。００（すなわち０）というＲＡＩＤ割り振りが、ＲＡ３データおよびＥＲＡＴ４４０へ入力されるＥＡ３と関連している。
【００４８】
変換データのＥＲＡＴ４４０キャッシュの次のエントリは、ＥＡ２という有効アドレスとして示されている。ＨＵ４００は、有効アドレスＥＡ２をＥＲＡＴ４４０への入力として使用する。ＥＲＡＴ４４０は実アドレスＲＡ２データを出力する。０１０１として示されているＷＩＭＧビットは、それぞれＷ、Ｉ、ＭおよびＧビットを表す。実アドレスＲＡ２のライト・バックまたはライト・スルー状態に対応するＷビットは０であり、したがってライト・バックを指定する。ＲＡ２のキャッシュ有効またはキャッシュ禁止状態に対応するＩビットは１であり、したがってキャッシュ禁止を指定する。実アドレスＲＡ２のローカル・アクセスまたはグローバル・アクセスに対応するＭビットは０であり、したがってローカル・アクセスを指定する。実アドレスＲＡ２の非保護または保護状態に対応するＧビットは１であり、したがって保護状態を指定する。１１（すなわち３）というＲＡＩＤ割り振りが、ＲＡ２データおよびＥＲＡＴ４４０へ入力されるＥＡ２と関連している。
【００４９】
変換データのＥＲＡＴ４４０キャッシュの次のエントリは、ＥＡ１という有効アドレスとして示されている。ＨＵ４００は、有効アドレスＥＡ１を、ＥＲＡＴ４４０への入力として使用する。ＥＲＡＴ４４０は実アドレスＲＡ１データを出力する。０１０１として示されているＷＩＭＧビットは、それぞれＷ、Ｉ、ＭおよびＧビットを表す。実アドレスＲＡ１のライト・バックまたはライト・スルー状態に対応するＷビットは０であり、したがってライト・バックを指定する。ＲＡ１のキャッシュ有効またはキャッシュ禁止状態に対応するＩビットは１であり、したがってキャッシュ禁止を指定する。実アドレスＲＡ１のローカル・アクセスまたはグローバル・アクセスに対応するＭビットは０であり、したがってローカル・アクセスを指定する。実アドレスＲＡ１の非保護または保護状態に対応するＧビットは１であり、したがって保護状態を指定する。０１（すなわち１）というＲＡＩＤ割り振りが、ＲＡ１データおよびＥＲＡＴ４４０へ入力されるＥＡ１と関連している。図６において、複数のエントリ（図示せず）が、有効アドレス‐実アドレス変換器ＥＡ４４０の変換データのキャッシュ全体を表す。
【００５０】
ＥＲＡＴ４４０は、ＥＡレジスタ４３５から有効アドレス・データを入力として受け取る。ストア要求の間、ＨＵ４００は、ソフトウェア・アプリケーション動作アーキテクチャの中の有効アドレス変換を用いて実アドレスを生成する。実アドレスは、メモリ・アドレス位置に直接関係する。より詳しくは、実アドレスは、ＩＨＳのシステム・メモリなど、ＨＵの外部の物理メモリ位置に対応する。ＥＲＡＴ４４０は典型的に、図６に見られるように、連想配列の変換データのページ・テーブル・キャッシュを使用するルックアップ・テーブル（ＬＵＴ）として機能する。有効アドレス（ＥＡ）、すなわち仮想アドレスは、ＥＲＡＴ４４０ページ・テーブル・キャッシュ配列への入力を表す。ＥＲＡＴ４４０ページ・テーブルは、ＥＡ入力と関連する実アドレス（ＲＡ）、書き込まれるデータのサイズ、書き込まれるデータ、ＷＩＭＧビットおよびリソース割り当て識別子（ＲＡＩＤ）ビットを保持する。ＲＡＧ識別子を表す２つのＲＡＩＤビットはＥＲＡＴ４４０にある。ＲＡＩＤビットはＥＲＡＴ４４０にあるため、ＨＵ４００は、図３のＨＵ３００のようにＲＡＩＤレジスタを必要としない。さらにこの特定の実施形態では、ＨＵ４００は、２つのＲＡＩＤビットをＥＲＡＴ４４０内のページに割り振り、それによって、ＥＲＡＴ４４０が実行するアドレス変換プロセスの間に各命令に一意のＲＡＩＤを提供する、ハイパーバイザ４４２、すなわちＨＵ４００内のソフトウェアまたはファームウェア層を含む。ハイパーバイザ４４２は、読み出しアクセスおよび変更の権利など、プロセッサ・システム１００の他のシステム・ソフトウェアよりも高いプロセッサ・システム特権を示す、特権のあるシステム・ソフトウェア層を表す。ハイパーバイザ４４２は、ＨＵ上で実行され得る命令を含む。ハイパーバイザの命令は、ＲＡＩＤレジスタ、ＲＡＭ１１０、およびＥＲＡＴ４４０がキャッシュするアドレス変換テーブルなどのシステム・コントロール機能にアクセスできる。オペレーティング・システムまたはスーパーバイザ・コード、およびアプリケーション・プログラムには、典型的にはそのようなアクセス権がない。プロセッサ・システム１００のハイパーバイザ４４２は、典型的にはＳＰＥ、すなわちＳＰＥ‐１〜ＳＰＥ‐８上で直接実行することはない。しかし、ハイパーバイザ４４２は、ＰＰＥ１１５上で直接実行され、メカニズム（図示せず）を使用してＳＰＥ内のシステム・コントロール機能を変更する能力を示す。一実施形態では、ハイパーバイザ４４２は、ＥＲＡＴがキャッシュとしての機能を果たすアドレス変換テーブルを維持する。ＲＡＩＤ情報は、ハイパーバイザが維持するアドレス変換テーブルと関連している。ＲＡＩＤ情報は、ＥＲＡＴ４４０内のページ・テーブル・エントリ（ＰＴＥ）の属性である。Ｉ／Ｏインターフェース動作およびメモリ動作は、Ｉ／Ｏインターフェース動作およびメモリ動作のどちらも一意のリソース割り当て識別子ＲＡＩＤを得られるように、実行中、ＥＲＡＴ４４０を経て動作する。ハイパーバイザ４４２は、一意のＲＡＩＤビットの割り振りを、変換データのＥＲＡＴ４４０キャッシュの各エントリに割り振る。さらに、ハイパーバイザ４４２は、一意のＲＡＩＤビット割り振りを割り振って、ＥＲＡＴ４４０キャッシュ内の各エントリ、ひいては命令に対し、異なる帯域幅割り当てレートを用いる。プロセッサ・システム５００のＨＵ内で実行されるアプリケーション・ソフトウェアが、特定のバス帯域幅割り当てレートの必要性を解釈し、さらに、命令ごとに、ＥＲＡＴ４４０内のＲＡＩＤビットの割り振りを変更するよう、ハイパーバイザ４４２に指示してもよい。
【００５１】
ＥＲＡＴ４４０のページ・テーブル・キャッシュ内の各エントリは、ページ・テーブル・エントリＰＴＥに対応する。ＥＲＡＴ４４０のページは、変換中のアドレスまたは有効アドレス（ＥＡ）の最上位ビットのセットを表す。開示される装置および方法の一実施形態では、ＥＲＡＴ４４０は、４Ｋバイトの有効アドレス（ＥＡ）を実アドレス（ＲＡ）に変換する。この変換プロセスでは、ＥＲＡＴ４４０は、変換に関して有効アドレスＥＡの下位１２ビットを無視する。より具体的には、ＥＲＡＴ４４０は、有効アドレスＥＡの下位１２ビットをページ・オフセットとして解釈し、４Ｋバイトの有効アドレスＥＡの下位１２ビットは、変換後、元の状態のままである。ページ、または変換中のＥＡの上位ビットは、残る、有効アドレスＥＡ‐実アドレスＲＡ変換の上位アドレス・ビットを表す。
【００５２】
ＥＲＡＴ４４０は、ＷＩＭＧビットを、メモリ・アドレス転送属性として格納する。より具体的には、図４の実施形態では、ＥＲＡＴ４４０は、ＷＩＭＧビットをアドレス・ストレージ属性として格納する。ＷＩＭＧビットは、プロセッサ・システム内のソフトウェアおよびハードウェアがシステム・メモリにアクセスする方法を決定する。ＷＩＭＧビットは、アドレス要求のライト・バックまたはライト・スルー状態に対応するＷビットを含む。Ｉビットは、ストア要求のキャッシュ有効またはキャッシュ禁止状態を表す。Ｍビットは、ストア要求のローカルまたはグローバルのアクセス権を表す。Ｇビットは、アドレス・ストア要求の保護または非保護状態に対応する。ＥＲＡＴ４４０の出力は、ＲＡ，ＷＩＭＧ，ＲＡＩＤレジスタ４４５の入力に結合している。ＥＲＡＴ４４０は、物理、すなわち実アドレスＲＡと、ストレージ属性ＷＩＭＧビットのセットと、ＲＡＩＤビットとを、その出力において生成する。ＲＡ，ＷＩＭＧ，ＲＡＩＤレジスタ４４５は、有効アドレス‐実アドレス変換器ＥＲＡＴ４４０の出力を入力として受け取る。ＲＡ，ＷＩＭＧ，ＲＡＩＤレジスタ４４５は、ＨＵ４００が実行する命令のＲＡ、ＷＩＭＧおよび対応するＲＡＩＤビットの一時的なストレージを提供する。ＲＡ，ＷＩＭＧ，ＲＡＩＤレジスタ４４５の出力は、図７のパイプライン先入れ先出し（ＦＩＦＯ）ストア・キュー７００の入力に結合している。（ＦＩＦＯ）ストア・キュー７００は、ＲＡ，ＷＩＭＧ，ＲＡＩＤレジスタ４４５から命令シーケンスを受け取る。ＨＵ４００は、これら命令シーケンスを、パイプライン（ＦＩＦＯ）ストア・キュー７００に集めて格納する。さらに、パイプライン命令（ＦＩＦＯ）ストア・キュー７００は、ＲＡ，ＷＩＭＧ，ＲＡＩＤレジスタ４４５からの後続の命令を保持する。（ＦＩＦＯ）ストア・キュー７００に詰めていくことで、ＨＵ４００が現在の命令でのメモリ・バス・アクセスを待っている間に、ＥＲＡＴ４４０によって新たなアドレスを変換できるようになる。現在の命令は、（ＦＩＦＯ）ストア・キュー７００の最下位置にある。ＨＵ４００は、満杯または部分的に満杯の（ＦＩＦＯ）ストア・キュー７００の現在の命令を実行し、現在の命令のメモリまたはＩ／Ｏバス・アクセスを待つ。
【００５３】
ＦＩＦＯストア・キュー７００内のＲＡＩＤビットは、４つのＲＡＧのうちの１つ、すなわちＲＡＧ０、ＲＡＧ１、ＲＡＧ２またはＲＡＧ３を特定する２バイナリ・ビットのデータである。より詳しくは、ＲＡＧ０〜ＲＡＧ３は、ＲＡＭ５６０における帯域幅割り当てレートに直接対応する。ＦＩＦＯストア・キュー７００の出力は、トークン・リクエスタ４６０の入力に結合し、そこへＲＡＩＤビット・データを提供する。ＨＵ４００は、ＦＩＦＯストア・キュー７００の最下のエントリを読み出し、ＦＩＦＯストア・キュー７００内のＲＡＩＤビットをトークン・リクエスタ４６０へ送出することによって、メモリ・バス・アクセスまたはＩ／Ｏバス・アクセスの要求を開始する。その後、トークン・リクエスタ４６０は、トークン要求ライン４６５にトークン要求を生成する。このトークン要求は、メモリ・バス・アクセスまたはＩ／Ｏバス・アクセスの要求として、トークン要求ライン４６５上をリソース割り当てマネージャ（ＲＡＭ）５６０まで伝わる。ライン４６５上のトークン要求は、ＲＡ，ＷＩＭＧ，ＲＡＩＤレジスタ４４５からのＨＵ４００ＲＡＩＤビットを含む。ＲＡＭ５６０は、トークン要求を受け取り、対応するＨＵ４００の帯域幅割り当てレートを評価する。ＲＡＭ５６０は、ＨＵ４００のＲＡＩＤ識別子ビットを、現在の帯域幅使用に対して評価し、トークン付与をトークン・リクエスタ４６０へ返すトークン付与ライン４７０上にトークン付与信号を生成することによって、トークンを付与する。ＲＡＭ５６０は、ＲＡＭ５６０内での適切なタイミングおよび帯域幅分析が完了すると、トークン付与を生成する。
【００５４】
ＦＩＦＯストア・キュー７００の出力は、スイッチ４７５の１つの入力に結合している。ＦＩＦＯストア・キュー７００の出力が、メモリ・ストア命令、すなわちデータを格納するためのメモリ・アクセス要求を出すと、ストア要求は、メモリ・バス５３０の使用を必要とする。ＦＩＦＯストア・キュー７００の出力がＩ／Ｏストア命令を出すと、ストア要求はＩ／Ｏバス５３５の使用を必要とする。ＨＵ４００は、ＦＩＦＯストア・キュー７００の出力を評価して、どちらのバス、すなわちメモリ・バス５３０またはＩ／Ｏバス５３５をストア要求が必要としているかを判断する。スイッチ４７５は、ＦＩＦＯストア・キュー７００の出力を、図５のプロセッサ・システム５００のメモリ・コントローラ５２５／システム・メモリ・バス５３０またはＩ／Ｏコントローラ５２０／Ｉ／Ｏバス５３５と効果的に接続および切断する。この切り替えは、ＨＵ４００のスイッチ４７５に結合しているトークン・リクエスタ４６０にコントロールされる。トークン・リクエスタ４６０が、トークン付与ライン４７０上でＲＡＭ５６０からトークン付与信号を受け取ると、ＨＵ４００は、効果的にスイッチ４７５を閉じ、ストア動作の最終ステージを開始する。さらに、ＨＵ４００は、ＦＩＦＯストア・キュー７００の最下のエントリが、スイッチ４７５を通って移動し、メモリ・バス５３０またはＩ／Ｏバス５３５にアクセスし、したがって、実アドレスおよびＷＩＭＧビットを、メモリまたはＩ／Ｏバスに乗せることを許可する。ストレージ・データおよびデータ・サイズが、実アドレスおよびＷＩＭＧビット・データとともに進む。
【００５５】
上記で開示された方法は、図５のプロセッサ・システム５００が図４の特別に構成されているハードウェア・ユニット（ＨＵ）４００を用いる、典型的なストア動作について説明している。当該の例はストア動作を伴うが、プロセッサ５００のＨＵは、開示された方法を用いてロード動作も実行し得る。ロード動作は、書き込みデータの生成はしないが、読み取りデータを要求する。ロード動作の間、プロセッサ・システム５００は、Ｉ／Ｏインターフェース・バス５３５上にデータを書き込むことも、メモリ・バス５３０を介してシステム・メモリにデータを書き込むこともない。ロード動作には２つの段階がある。ロード動作の第１の段階では、ＨＵ４００がロード要求を開始し、ＥＲＡＴ４４０による有効アドレスから実アドレスへの変換後、最終的に、実アドレスをメモリ・バス５３０上に乗せる。ロード動作の第２の段階では、プロセッサ・システム５００は、特定のターゲット・アドレスにおいてメモリ・データを取り出し、メモリ・データをメモリ・バス５３０上でＨＵに渡す。その結果、ロード動作が完了する。ＨＵ４００によるストア動作とＨＵ４００によるロード動作とを比較すると、実アドレス、ＷＩＭＧビットおよびＲＡＩＤビットはすべて、これら動作それぞれにおいて本質的に同じ役割を果たす。したがって、ＨＵ４００によるストア動作の実行に関する上記の教示は、ＨＵ４００が実行するロード動作にも当てはまる。
【００５６】
プロセッサ・システム５００の典型的なＨＵ４００における命令レベルの帯域幅割り当ては、異なる個別のＩ／Ｏバス使用レートまたはメモリ・バス・アクセス・レート、あるいはその両方をそれぞれ必要とする複数のアプリケーションを管理する能力をもたらす。開示される方法は、同じＨＵ上で動作している複数のオペレーティング・システムがそれぞれ、Ｉ／Ｏバス使用およびメモリ・バス使用に関し、オペレーティング・システムごとに特定の異なる帯域幅割り当てレートを必要とする場合、特に有用である。
【００５７】
図７は、図４のＨＵ４００用のＦＩＦＯストア・キュー７００の典型的な構成を示す。より具体的には、図７は、最下の３つのストア命令を示し、これらは、ＥＲＡＴ４４０がこれらのストア命令を変換した後、ＲＡ，ＷＩＭＧ，ＲＡＩＤレジスタ４４５に一時的にあったものである。ＥＲＡＴ４４０は、これらのストア命令を変換し、続いて、レジスタ４４５を介して、ＦＩＦＯストア・キュー７００内の個々のストレージ位置に、変換された命令を入れる。図７は、ＦＩＦＯストア・キュー７００の要素を、命令ごとに、実アドレスＲＡ、ＷＩＭＧビット、命令データ・サイズ、ストレージ・データ、およびＲＡＩＤビットとして示す。ストア命令、すなわちストア‐１命令は、ＨＵによる実行完了のためにＦＩＦＯストア・キュー７００を出る次の命令を表す。ＦＩＦＯストア・キュー７００は、ストア‐１命令に関して、ＲＡ１という実アドレスＲＡを含む。ＲＡ１は、６４ビット・アドレスを表すとよく、下位１２ビットは、ＥＲＡＴ４４０に入力された有効アドレスと同じである。一実施形態では、ＦＩＦＯストア・キュー７００は、これら下位１２ビットを格納しなくてもよい。ＥＡおよびＲＡの下位１２ビットは、４ＫＢアドレス・ページ・オフセットを表す。この例では、６４ビット実アドレスＲＡの残りの上位５２ビットが、実アドレスＲＡ１エントリに相当する。０１１０として示されているＷＩＭＧビットの例は、それぞれＷ、Ｉ、ＭおよびＧビットを表す。ＷＩＭＧビットは、ハードウェア・ユニット（ＨＵ）のメモリまたはＩ／Ｏバスへのアクセス法に影響を及ぼすことができるメモリ・アドレス転送属性である。実アドレスＲＡ１のライト・バックまたはライト・スルー状態に対応するＷビットは０であり、したがってライト・バックを指定する。ＲＡ１のキャッシュ有効またはキャッシュ禁止状態に対応するＩビットは１であり、したがってキャッシュ禁止を指定する。実アドレスＲＡ１のローカル・アクセスまたはグローバル・アクセスに対応するＭビットは１であり、したがってグローバル・アクセスを指定する。実アドレスＲＡ１の非保護または保護状態に対応するＧビットは０であり、したがって非保護状態を指定する。図７では、ＦＩＦＯストア・キュー７００は、命令ストア‐１の典型的なデータ・サイズを２バイトとして示す。したがって、ストア‐１のストア動作に関するデータ・サイズは、２バイトのデータである。ＦＩＦＯストア・キュー７００は、図７において、Ｄ１として２バイトのサイズで示されているストア動作ストア‐１のデータを含む。ストア‐１命令は、０１（すなわち１）という関連ＲＡＩＤビットの割り振りを示す。この例では、１というＲＡＩＤ割り振りは、ストア‐１命令が、１というＲＡＧ番号割り振りと、ＲＡＭ５６０がＲＡＧ１に割り振る関連バス帯域幅レートとを有することになるということを示す。
【００５８】
図７のＦＩＦＯストア・キュー７００の表現に見られるように、ストア‐１命令の後の、ＦＩＦＯストア・キュー７００の次の命令は、ストア‐２命令である。ＦＩＦＯストア・キュー７００は、ストア‐２命令に関して、ＲＡ２という実アドレスＲＡを格納している。ＲＡ２は、６４ビット・アドレスを表すとよく、下位１２ビットは、ＥＲＡＴ４４０に入力された有効アドレスと同じである。一実施形態では、ＦＩＦＯストア・キュー７００は、これら下位１２ビットを格納しなくてもよい。ＥＡおよびＲＡの下位１２ビットは、４ＫＢアドレス・ページ・オフセットを表す。この例では、実アドレスＲＡの上位５２ビットが、実アドレスＲＡ２エントリに相当する。１１０１として示されているＷＩＭＧビットの例は、それぞれＷ、Ｉ、ＭおよびＧビットを表す。実アドレスＲＡ２のライト・バックまたはライト・スルー状態に対応するＷビットは１であり、したがってライト・スルー動作を指定する。ＲＡ２のキャッシュ有効またはキャッシュ禁止状態に対応するＩビットは１であり、したがってキャッシュ禁止を指定する。実アドレスＲＡ２のローカル・アクセスまたはグローバル・アクセスに対応するＭビットは０であり、したがってローカル・アクセスを指定する。実アドレスＲＡ２の非保護または保護状態に対応するＧビットは１であり、したがって保護状態を指示する。図７では、ＦＩＦＯストア・キュー７００は、ストア‐２命令の典型的なサイズを８バイトとして示す。したがって、ストア‐２のストア動作に関するデータ・サイズは、８バイトのデータである。ＦＩＦＯストア・キュー７００は、Ｄ２として８バイトのサイズで示されているストア動作ストア‐２のデータを含む。１１（すなわち３）というＲＡＩＤの割り振りが、ストア‐２命令と関連している。したがって、ＲＡＭ５６０は、ＲＡＧ３のバス帯域幅レートをストア‐２命令に割り振る。
【００５９】
ストア‐２命令の後の、ＦＩＦＯストア・キュー７００における次の命令が、ストア‐３命令として示されている。図７では、ＦＩＦＯストア・キュー７００は、ストア‐３命令に関して、ＲＡ３という実アドレスＲＡを格納している。ＲＡ３は、６４ビット・アドレスを表すとよく、上記のように、下位１２ビットはＥＲＡＴ４４０に入力された有効アドレスと同じである。一実施形態では、ＦＩＦＯストア・キュー７００は、これら下位１２ビットを格納しなくてもよい。ＥＡおよびＲＡの下位１２ビットは、４ＫＢアドレス・ページ・オフセットを表す。この例では、実アドレスＲＡの上位５２ビットが、実アドレスＲＡ３エントリに相当する。０１０１として示されているＷＩＭＧビットの例は、それぞれＷ、Ｉ、ＭおよびＧビットを表す。実アドレスＲＡ３のライト・バックまたはライト・スルー状態に対応するＷビットは０であり、したがってライト・バックを指定する。ＲＡ３のキャッシュ有効またはキャッシュ禁止状態に対応するＩビットは１であり、したがってキャッシュ禁止を指定する。実アドレスＲＡ３のローカル・アクセスまたはグローバル・アクセスに対応するＭビットは０であり、したがってローカル・アクセスを指定する。実アドレスＲＡ３の非保護または保護状態に対応するＧビットは１であり、したがって保護状態を指示する。図７では、ＦＩＦＯストア・キュー７００は、ストア‐３に関して、４バイトという典型的なサイズを示す。ストア‐３のストア動作のデータ・サイズは、４バイトのデータである。ＦＩＦＯストア・キュー７００は、Ｄ３として、４バイトのサイズとして表されているストア動作ストア‐３のデータを含む。００（すなわち０）というＲＡＩＤの割り振りが、ストア‐３命令と関連している。ＲＡＭ５６０は、ＲＡＧ０のバス帯域幅レートをストア３命令に割り振り、それによって、ＦＩＦＯストア・キュー７００をポピュレートしているストア命令データを完了する。ＲＡＩＤビットの割り振りには、０、１、２、および３があり、異なる２ビットの対が、ＲＡＩＤビットの割り振りそれぞれに対応する。ＲＡＩＤビットの割り振りは、ＲＡＧ番号の割り振りＲＡＧ０、ＲＡＧ１、ＲＡＧ２、およびＲＡＧ３と直接関連している。一部の用途において、より少ない数のＲＡＧが特定の用途に望ましければ、プロセッサ・システム５００およびＨＵ４００は２より少ない数のビットを用いてもよい。例えば、０または１の単一ビット・フィールドが、２つのＲＡＧを表してもよい。一部の用途において、４より多い数のＲＡＧが特定の用途に望ましければ、プロセッサ・システム５００およびＨＵ４００は、２より多い数のビットを用いてもよい。
【００６０】
図８は、図４の典型的なハードウェア・ユニット（ＨＵ）４００によるストア命令または書き込み命令の実行を示すフロー・チャートである。プロセッサ・システム５００内のハードウェア・ユニット（ＨＵ）は、当該のストア要求を実行することができる。ストア命令の実行は開始ブロック８０５で始まる。複数のＨＵのうちのいずれかで実行されるアプリケーション・ソフトウェアが、書き込み命令または書き込み動作としても知られるストア命令を開始するとよい。ハイパーバイザ４４２は、ブロック８１０のように、実アドレスＲＡ、ＷＩＭＧビットを備え、リソース割り当て識別（ＲＡＩＤ）ビットを含む、命令ごとの初期の変換データを、変換テーブル（図示せず）を用いて間接的にＥＲＡＴ４４０にロードするとよい。ＥＲＡＴ４４０の各エントリは、ルックアップ・アドレスまたは有効アドレスＥＡに対応する命令を含む。ブロック８１５のように、特定のＨＵ内の命令復号器（図示せず）が命令を復号する。次に、決定ブロック８２０のように、ＨＵ４００内の命令復号器または関連のハードウェアがテストを実行し、復号された命令がストア命令、すなわち書き込み要求であるかを判断する。復号された命令のテストが偽の結果を返し、復号された命令がストア命令でなければ、非ストア命令の処理ブロック８２２のように、非ストア命令が実行される。フローはブロック８１５へ戻り、命令復号器は次の命令を復号する。一方、ストア命令テストが決定ブロック８２０で真の結果を返すと、ＨＵは、有効アドレス（ＥＡ）判断ブロック８２５のように、ストア命令の有効ターゲット・アドレスを判断する。続いて、ＨＵは、評価のために、ストア命令データをその有効アドレスと共にＥＲＡＴ４４０へ移動させる。ＥＲＡＴ４４０は、有効アドレス‐実アドレス変換器ＥＲＡＴ内にＥＡエントリが既に存在すれば、有効アドレス（ＥＡ）を対応する実アドレス（ＲＡ）に変換する。より詳しくは、ＥＲＡＴ４４０は、有効アドレス（ＥＡ）を、ルックアップ・テーブルＬＵＴにおいてルックアップ・データとして使用し、ブロック８３０のように、ＥＲＡＴ４４０内のＥＡデータを探索する。ＥＲＡＴ４４０が現在、そのＬＵＴメモリにＥＡを格納していれば、ＥＲＡＴ４４０は、対応するＲＡをＬＵＴメモリに出力する。これは、決定ブロック８４０での「ヒット」、すなわち変換成功を表す。一方、ＥＲＡＴ  ＬＵＴメモリが、テスト中の特定のＥＡに関して値を含まなければ、決定ブロック８４０のヒット・テストは偽の結果を返す。決定ブロック８４０で、そのようなＥＡヒットなしの状態になると、ＨＵは、ブロック８４５のように、サービス変換要求を開始する。サービス変換要求は、ブロック８５０のように、適切なＥＲＡＴ変換データを生成させ、そのＥＲＡＴ変換データをＥＲＡＴ  ＬＵＴメモリにロードさせる。ＥＲＡＴ  ＬＵＴメモリのロードが成功した後、再びブロック８３０のように、ＨＵは再度ＥＲＡＴ４４０内のＥＡのルックアップを試行する。ブロック８４０の有効アドレス・ヒット・テストが、対象のストア命令または動作に関して真の結果を返し、ＥＲＡＴキャッシュがＥＡの一致するものを含むと、ブロック８７０のように、ＨＵは、その命令の対応するＲＡ、ＷＩＭＧビットおよびリソース割り当て識別（ＲＡＩＤ）ビットをＦＩＦＯストア・キュー７００へ転送する。この例のために、ブロック８７０はＷＩＭＧビットに言及している。しかし、開示された方法の他の実装では、ハードウェア・ユニット（ＨＵ）は、追加のコントロール・ビット、またはＷＩＭＧの例よりも少ないコントロール・ビットを使用してもよく、それらコントロール・ビットは、特定の用途に従う他のアドレス転送属性に対応してもよい。
【００６１】
一実施形態では、ＨＵ４００は、ＦＩＦＯストア・キュー７００に命令をロードし、各命令を、命令のロード順に実行する。例えば、図７では、最下の命令ストア‐１が、キューにおける、次に実行する命令である。ストア‐１命令の実行後、ストア‐２命令はＦＩＦＯストア・キュー７００の最下位置へ移動し、次に実行する命令となる。ストア‐３命令はストア・キュー内で下へ移動し、新たな命令がストア・キューの最上位置に入る。図８のフロー・チャートへ戻る。キュー内の次の命令は、ＦＩＦＯストア・キュー７００の最下のエントリである。ブロック８７５のように、ＨＵ４００は、ＦＩＦＯストア・キュー７００の前方へ進む。続いて、ＨＵ４００は、ブロック８８０のように、トークン要求を開始するか、またはトークンを要求する。より詳しくは、ＨＵ４００のトークン・リクエスタ４６０が、リソース割り当てマネージャ（ＲＡＭ）５６０からのトークンを要求する。すなわち、ストア動作のためにメモリ・バス５３０またはＩ／Ｏインターフェース・バス５３５の使用を要求する。ＨＵ４００は、ＲＡＭ５６０がトークン要求を許可するまでストア命令動作を継続せずに待つ。トークン・リクエスタ４６０は、トークン付与決定ブロック８８５のように、テストを行ってＲＡＭ５６０がトークンを付与することで応答するかを判断する。トークン付与テストが偽の結果を返すと、決定ブロック８８５のように、ＨＵ４００は、保留および待機状態を維持する。一方、トークン付与テストが真の結果を返すと、ブロック８９０によって、適切に、ＨＵ４００がストア要求データをメモリ・バス５３０またはＩ／Ｏインターフェース・バス５３５に乗せる。メモリ・ストア動作の場合、メモリ・バス５３０は次に、ストア要求データをシステム・メモリへ、そのメモリに格納されるよう転送する。ＨＵはさらに、Ｉ／Ｏインターフェース・バス５３５転送を、上記と同じ方法で要求してもよい。その場合、ＨＵは、得られたＩ／Ｏデータを、Ｉ／Ｏインターフェース・コントローラ５２０を通じて、Ｉ／Ｏインターフェース・バス５３５上に乗せることになる。したがって、「要求をバス上に乗せる」ブロック８９０は、ストア命令から生じるデータをメモリ・バス５３０上に乗せることと、さらにＩ／Ｏ要求命令から生じるデータをＩ／Ｏバス５３５上に乗せることとの両方に当てはまる。最後に、ストア命令動作が成功した後、ブロック８１５のように、ＨＵ４００は次の命令を復号し、動作フローは継続する。図８に示されている例は、プロセッサ・システム１００の典型的なストアまたは書き込み動作を示す。示された実施形態の有効性を実証する別のタイプの動作は、ロードまたは読み取り動作である。データのストアおよびロード、すなわちバス上でのデータの読み取りまたは書き込みにおける差異は、２つの動作タイプの違いを表すが、図８に示されているメカニズムおよび方法は、当該の構造の同じ基本的要素を表す。さらに、ＲＡＩＤビットの特別な用途は、ロード動作とストア動作との間の共通要素を表す。
【００６２】
図９は、プロセッサ９０５を用いる典型的な情報処理システム（ＩＨＳ）９００の単純化したブロック図を示す。一実施形態では、プロセッサ９０５は、ＨＵ４００を含むプロセッサ・システム５００である。ＩＨＳ９００は、プロセッサ９０５をメモリ・コントローラ５２５およびビデオ・グラフィックス・コントローラ９２０に結合するバス９１０をさらに含む。より詳しくは、システム・メモリ・バス５３０が、図のように、システム・メモリ９１５に結合している。実際の実践においては、バス９１０は、例えばメモリ・バスおよびＩ／Ｏバスなど、複数のバスを含むとよい。ディスプレイ９２５は、ビデオ・グラフィックス・コントローラ９２０に結合している。ハード・ディスク・ドライブ、ＣＤドライブ、ＤＶＤドライブ、またはその他の不揮発性ストレージなどの不揮発性ストレージ９３０が、バス９１０に結合し、ＩＨＳ９００に情報の永久ストレージを提供する。オペレーティング・システム９３５が、メモリ９１５にロードされ、ＩＨＳ９００の動作を制御する。他のシステム・ソフトウェア、すなわちアプリケーション・ソフトウェア９４０およびハイパーバイザ９４５は、メモリ９１５に常駐し、ＩＨＳ９００の動作をさらに制御する。キーボードおよびマウス・ポインティング・デバイスなどのＩ／Ｏデバイス９５０は、Ｉ／Ｏバス５３５およびＩ／Ｏコントローラ５２０を介してバス９１０へ結合している。ＵＳＢ、ＩＥＥＥ１３９４バス、ＡＴＡ、ＳＡＴＡ、ＰＣＩ、ＰＣＩＥおよび他のバスなどの１つ以上の拡張バス９５５が、バス９１０に結合して、ＩＨＳ９００に周辺機器およびデバイスを容易に接続できるようにしている。ネットワーク・インターフェース・アダプタ９６０がバス９１０に結合し、ＩＨＳ９００が、有線または無線でネットワークおよび他の情報処理システムに接続できるようにしている。図９は、プロセッサ・システム５００をプロセッサ９０５として用いる１つのＩＨＳを示すが、ＩＨＳは数多くの形態をとり得る。例えば、ＩＨＳ９００は、デスクトップ、サーバ、携帯用、ラップトップ、ノート、もしくはその他のフォーム・ファクタのコンピュータ、またはデータ処理システムの形態をとってもよい。ＩＨＳ９００は、ゲーム用デバイス、携帯情報端末（ＰＤＡ：ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ）、携帯用電話デバイス、通信デバイス、またはプロセッサおよびメモリを含むその他のデバイスなど、その他のフォーム・ファクタをとり得る。
【００６３】
上記では、メモリ・バスおよびＩ／Ｏインターフェース・バス帯域幅の改善を実現し得るプロセッサ・システムおよび方法が開示された。一実施形態では、プロセッサ・システムは、メモリ・バスまたはＩ／Ｏバス帯域幅、あるいはその両方を、命令ごとまたは要求ごとに割り当てるとよい。
【００６４】
本発明のこの説明を考慮すると、本発明の変更および代わりの実施形態が、当業者には明らかとなる。したがって、この説明は、本発明を遂行する方法を当業者に教示するものであり、実例としてのみ解釈されるものとする。図示および記載された本発明の形態が本実施形態を構成する。当業者は、部品の形状、サイズおよび配置に種々の変更を加えてよい。例えば、当業者は、ここに説明および記載された要素の代わりに、等価な要素を用いてもよい。
【図１】
2010518472.tif 000003
【図２】
2010518472.tif 000004
【図３】
2010518472.tif 000005
【図４】
2010518472.tif 000006
【図５】
2010518472.tif 000007
【図６】
2010518472.tif 000008
【図７】
2010518472.tif 000009
【図８】
2010518472.tif 000010
【図９】
2010518472.tif 000011
【国際調査報告】
2010518472.tif 000012
2010518472.tif 000013
2010518472.tif 000014