(57)【要約】  論理スレッドの数が、物理スレッドの数よりも多い場合、または、少ない場合において、複数の論理スレッドを、複数の同時物理スレッドによりサポートするスレッドの管理システム及び管理方法。一例として、複数の論理スレッドの各々が、ウエイト状態、アクティブ状態、ドレイン状態、及びストール状態の１つにおいて維持され、また、ステートマシン及びハードウエアシーケンサが、トリガリングイベントに応じた状態と、割り込み可能なポイントが論理スレッドにあるか否かの状態との間に、論理スレッドを移行するために使用される。論理スレッドが、優先度、性能、公平度などにより、物理スレッドに適合されるが各論理スレッドに対し利用可能なリソースを特定することも可能である。一例として、１つの論理スレッドが、未使用である１つ以上の物理スレッドを故意的に使用してもよい。
2007517322.tif 000002
【特許請求の範囲】
【請求項１】
複数の論理スレッドを、複数の同時物理スレッドによりサポートするスレッドの管理方法。
【請求項２】
ウエイト状態、アクティブ状態、ドレイン状態、及びストール状態のうちの１つにおいて、複数の論理スレッドの各々を維持する請求項１に記載のスレッドの管理方法。
【請求項３】
前記アクティブ状態において、第一の論理スレッドを維持するスレッドの管理方法であって、物理スレッドの次期命令ポインタに対し、第一の論理スレッドに関連したマクロ命令をマッピングし、トリガリングイベントを処理するプロセッサを監視し、また、前記トリガリングイベントが現れるまで、前記アクティブ状態において、前記第一の論理スレッドを保持する請求項２に記載のスレッドの管理方法。
【請求項４】
前記トリガリングイベントが現れた場合、前記マッピングを中断し、前記第一の論理スレッドを前記ドレイン状態に切り替える請求項３に記載のスレッドの管理方法。
【請求項５】
前記トリガリングイベントは、メモリ時間待ちイベント、スリープ要求、及びスレッド優先度イベントの少なくともいずれか１つを含む請求項３に記載のスレッドの管理方法。
【請求項６】
第一の論理スレッドが、前記ドレイン状態にて維持されるスレッドの管理方法であって、割り込み可能なポイントに対する前記第一の論理スレッドを監視し、前記割り込み可能なポイントが現れるまで、前記第一の論理スレッドを前記ドレイン状態に保持する請求項２に記載のスレッドの管理方法。
【請求項７】
前記割り込み可能なポイントが現れた場合に、前記第一の論理スレッドを、前記ストールスレッドに切り替える請求項６に記載のスレッドの管理方法。
【請求項８】
前記割り込み可能なポイントが、前記第一の論理スレッドにおけるマクロ命令の終わり、または、前記第一の論理スレッドに関連する最後のマイクロ操作のリタイアメントのいずれかに相当する請求項６に記載のスレッドの管理方法。
【請求項９】
第一の論理スレッドが、前記ストール状態において維持されるスレッドの管理方法であって、トリガリングイベントの処理を監視し、前記トリガリングイベントが無くなるまで、前記第一の論理スレッドを前記ストール状態に保持する請求項２に記載のスレッドの管理方法。
【請求項１０】
前記トリガリングイベントが無くなった場合に、前記第一論理スレッドを、前記ウエイト状態に切り替える請求項９に記載のスレッドの管理方法。
【請求項１１】
前記トリガリングイベントよりも高い優先順位を有する他のイベントが信号化される場合に、前記第一の論理スレッドを待ち状態に切り替える請求項９に記載のスレッドの管理方法。
【請求項１２】
前記トリガリングイベントが、メモリ時間待ちイベント、スリープ要求、及びスレッド優先イベントの少なくともいずれか１つを含む請求項９に記載のスレッドの管理方法。
【請求項１３】
第一のスレッドが前記ウエイト状態に保持されるスレッドの管理方法であって、利用可能な物理スレッドに対する複数の同時物理スレッドを監視し、前記利用可能な物理スレッドが現れるまで、前記ウェイト状態において前記第一の論理スレッドを保持する請求項２に記載のスレッドの管理方法。
【請求項１４】
前記利用可能な物理スレッドが現れた場合に、前記第一論理スレッドを前記アクティブスレッドに切り替える請求項１３に記載のスレッドの管理方法。
【請求項１５】
論理管理テーブルにおけるスレッド情報、状態を認識するスレッド情報、１つ以上のトリガリングイベント、及び複数の論理スレッドの各々に対するリニア命令ポイントをさらに含む請求項１に記載のスレッドの管理方法。
【請求項１６】
前記スレッド情報は、複数の論理スレッドの各々に対し、リソース要求プロフィールをさらに含む請求項１５に記載のスレッドの管理方法。
【請求項１７】
前記複数の論理スレッドの数は、前記複数の同時物理スレッドの数よりも多い請求項１に記載のスレッドの管理方法。
【請求項１８】
前記複数の論理スレッドの数は、前記複数の同時物理スレッドの数よりも少ない請求項１に記載のスレッドの管理方法。
【請求項１９】
複数の論理スレッドを、複数の同時物理スレッドによりサポートする方法であり、
物理スレッドの次期命令ポインタに対し、第一の論理スレッドに関連したマクロ命令をマッピングし、
第一の時間にてトリガリングイベントを処理するプロセッサを監視し、
前記トリガリングイベントが現れるまで、アクティブ状態において第一の論理スレッドを保持し、
前記トリガリングイベントが有る場合に、前記マッピングを中断し、前記第一の論理スレッドをドレイン状態に切り替え、
割り込み可能なポイントに対する第一の論理スレッドを監視し、
割り込み可能なポイントが現れるまで、前記第一の論理スレッドを前記ドレイン状態に保持し、
前記割り込み可能なポイントが現れた場合に、前記第一の論理スレッドをストール状態に切り替え、
第二の時間にてトリガリングイベントを処理するプロセッサを監視し、
前記トリガリングイベントが無くなるまで、前記第一の論理スレッドをストール状態に保持し、
前記トリガリングイベントが無い場合に、前記第一の論理スレッドをウエイト状態に切り替え、
利用可能な物理スレッドに対する前記複数の同時物理スレッドを監視し、
前記利用可能なスレッドが現れるまで、前記第一の論理スレッドをウエイト状態において保持し、また、
前記利用可能なスレッドが現れた場合に、前記論理スレッドを前記アクティブ状態に切り替える論理レッドのサポート方法。
【請求項２０】
前記トリガリングイベントは、メモリ時間待ちイベント、スリープ要求、及びスレッド優先度イベントの少なくともいずれか１つを含む請求項１９に記載の論理スレッドのサポート方法。
【請求項２１】
前記割り込み可能なポイントが、前記第一の論理スレッドにおけるマクロ命令の終わり、または、第一の論理スレッドに関連する最後のマイクロ操作のリタイアメントのいずれかに相当する請求項１９に記載の論理スレッドのサポート方法。
【請求項２２】
論理管理テーブルにおけるスレッド情報、状態を認識するスレッド情報、１つ以上のトリガリングイベント、及び複数の論理スレッドの各々に対するリニア命令ポインタをさらに含む請求項１９に記載の論理スレッドのサポート方法。
【請求項２３】
ウエイト状態、アクティブ状態、ドレイン状態、及びストール状態のいずれか１つにおいて、複数の論理スレッドの各々を維持することにより、複数の論理スレッドを、複数の同時論理スレッドでサポートするステートマシンを含むスレッドの管理アーキテクチャ。
【請求項２４】
前記ステートマシンが、物理スレッドの次期命令ポインタに対し、第一の論理スレッドに関連したマクロ命令をマッピングし、トリガリングイベントを処理するプロセッサを監視し、また、前記トリガリングイベントが現れるまで、アクティブ状態において第一の論理スレッドを保持する請求項２３に記載のスレッドの管理アーキテクチャ。
【請求項２５】
前記ステートマシンが、割り込み可能な第一の論理スレッドを監視し、前記割り込みポイントが現れるまで、前記第一理スレッドを前記ドレイン状態に保持する請求項２３に記載のスレッドの管理アーキテクチャ。
【請求項２６】
前記ステートマシンは、トリガリングイベントを処理するプロセッサを監視し、前記トリガリングイベントが無くなるまで、前記第一の論理スレッドを前記ストール状態に保持することを特徴とする請求項２３に記載のスレッドの管理アーキテクチャ。
【請求項２７】
ハードウェアシーケンサをさらに含み、前記ハードウェアシーケンサは、利用可能な物理スレッドに対する複数の同時物理スレッドを監視し、前記ステートマシンは、前記物理スレッドが現れるまで、前記第一の論理スレッドを、ウエイト状態に保持する請求項２３に記載のスレッドの管理アーキテクチャ。
【請求項２８】
マクロ命令を保存するランダムアクセスメモリ、前記メモリにカップリングされたシステムバス、及びシステムにカップリングされ、前記マクロ命令を取り出すプロセッサを含み、前記プロセッサは、ウェイト状態、アクティブ状態、ドレイン状態、及びストール状態のいずれか１つにおける複数の論理スレッドのそれぞれを維持することにより、前記マクロ命令に対応する複数の論理スレッドを、複数の同時物理スレッドでサポートするステートマシンを有するスレッド管理アーキテクチャを含むことを特徴とするコンピュータシステム。
【請求項２９】
前記ステートマシンは、物理スレッドの次期命令ポインタに対し、第一の論理スレッドに関連したマクロ命令をマッピングし、トリガリングイベントを処理するプロセッサを監視し、また、前記トリガリングイベントが現れるまで、アクティブ状態において第一の論理スレッドを保持することを特徴とする請求項２８に記載のコンピュータシステム。
【請求項３０】
前記ステートマシンが、割り込み可能な第一の論理スレッドを監視し、前記割り込みポイントが現れるまで、前記第一論理スレッドを前記ドレイン状態に保持することを特徴とする請求項２８に記載のコンピュータシステム。
【請求項３１】
前記ステートマシンが、トリガリングイベントを処理するプロセッサを監視し、前記トリガリングイベントが無くなるまで、第一の論理スレッドを前記ストール状態に保持することを特徴とする請求項２８に記載のコンピュータシステム。
【請求項３２】
前記スレッド管理アーキテクチャは、ハードウェアシーケンサをさらに含み、前記ハードウェアシーケンサは、利用可能な物理スレッドに対する複数の同時物理スレッドを監視し、前記ステートマシンは、前記物理スレッドが現れるまで、前記第一論理スレッドを、ウエイト状態に保持することを特徴とする請求項２８に記載のコンピュータシステム。
【請求項３３】
スレッド情報、状態を識別するスレッド情報、１つ以上のトリガリングイベント、及び前記複数の論理スレッドの各々に対するリニア命令ポインタを有するスレッド管理テーブルをさらに含む請求項２８に記載のコンピュータシステム。
【請求項３４】
前記スレッド情報は、前記複数の論理スレッドの各々に対するリソース要求プロフィールを認識すること請求項３３に記載のコンピュータシステム。
【請求項３５】
前記複数の論理スレッドの数は、前記複数の同時物理スレッドの数よりも多い請求項２８に記載のコンピュータシステム。
【請求項３６】
前記複数の論理スレッドの数は、前記複数の同時物理スレッドの数よりも少ない請求項２８に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の複数の実施形態は、コンピュータシステムに関する。具体的には、複数の実施形態は、同時スレッドを実行するコンピュータ・アーキテクチャの改良に関する。
【背景技術】
【０００２】
近年、コンピュータの機能を高めることの需要性が増加するに伴い、プロセッサ・デザイナー及びメーカーにて、数多くの試みが実施されている。例えば、インターネットの利用、及びマルチメディアの適用が着実に増えるにつれ、処理量の増大、あるいは複数のスレッドの実行、また、同時に、プロセッサ及びメモリ資源へのアクセスが必要となる。１台のプロセッサで、複数のスレッドを同時に機能させることが可能なハイパー・スレッドなどにより、プロセッサの処理量は増大しているが、全ての問題点が解決しているわけではない。特に、スレッドの論理要素と物理要素をカップリングすることが、従来の試みとして実施されていたが、このような試みにおいては、処理量及び投機性に伴う問題が付随していた。一例として、処理量を増やすためには、同時スレッドの数を増やすことが考えられるが、スレッドの設計及び構築に伴うコストが増大するため、規定のプロセッサの物理的資源においては限界がある。このため、スレッドの数を増やすことによりプロセッサの処理量を増大させるには、実用上、限界があった。よって、実際に使用するスレッドの数を増やすことを必要とせずに、同時スレッドの有効数を増やすことが可能なマルチ・スレッド・アプローチ（Ｍｕｌｔｉ-ｔｈｒｅａｄｉｎｇ  ａｐｐｒｏａｃｈ）を提供することを目的とする。
【０００３】
また、１つ以上のスレッド物理要素において、論理要素を実行させる投機は、各スレッドの論理要素を各スレッドの物理要素にカップリングする従来の手段においては達成できないことより、プロセッサの処理量の増大に係わる改良においても限界があった。よって、投機実行が可能なマルチ・スレッド・アプローチ（Ｍｕｌｔｉ-ｔｈｒｅａｄｉｎｇ  ａｐｐｒｏａｃｈ）を提供することを目的とする。
【図面の簡単な説明】
【０００４】
本発明の複数の実施形態による様々な作用効果は、当業者が、後述の明細書、及び添付の請求項、及び図面を参照して実施可能である。
【０００５】
【図１】本発明の１つの実施形態に係わるステートマシンの一例を示す図である。
【０００６】
【図２】本発明の１つの実施形態に係わるアクティブ状態において、論理スレッドを維持するプロセスの一例を示すフローチャートである。
【０００７】
【図３】本発明の１つの実施形態に係わるドレイン状態において、論理スレッドを維持するプロセスの一例を示すフローチャートである。
【０００８】
【図４】本発明の１つの実施形態に係わるストール状態において、論理スレッドを維持するプロセスの一例を示すフローチャートである。
【０００９】
【図５】本発明の１つの実施形態に係わるウェイト状態において、論理スレッドを維持するプロセスの一例を示すフローチャートである。
【００１０】
【図６】本発明の１つの実施形態に係わるスレッド管理テーブルを示す図である。
【００１１】
【図７】本発明の１つの実施形態に係わる処理モード操作の一例を示す図である。
【００１２】
【図８】本発明の他の実施形態に係わる投機モード操作の一例を示す図である。
【００１３】
【図９】本発明の１つの実施形態に係わるコンピュータシステムの一例を示す図である。
【発明の詳細な説明】
【００１４】
複数の同時物理スレッドで、複数の論理スレッドをサポートすることにより、スレッドの構築及び設計に係わる従来の問題点を生じることなく、効率的な効果を達成することが可能なスレッドの管理システム及び管理方法を説明する。図１は、ウェイト状態１２、アクティブ状態１４、ドレイン状態１６、及びストール状態１８のうちの１つにおいて、複数の論理スレッドのそれぞれを維持する手段を示す構成図１０である。各論理スレッドは、１つ以上のトリガリング・イベントが現れるまで、アクティブ状態１４にて待機する。尚、トリガリング・イベントは、待ち時間、公正、及び優先順位などのさまざまな要因に関連する。トリガリング・イベントが有る場合には、論理スレッドはドレイン状態１６に入力され、このドレイン状態１６にて、プロセッサは、論理スレッドにおける割り込み可能なポイントを探す。尚、割り込み可能なポイントとは、ドレイン状態１６に入力された論理スレッドが保存されているポイントである。割り込み可能なポイントが現れると、トリガリング・イベントが無くなるまで、あるいは、第一のトリガリング・イベントよりも優先順位の高いトリガリング・イベントが現れるまでの間は、論理スレッドは、ストール状態１８に置かれる。これらのうちのいずれかの場合において、論理スレッドがウェイト状態１２へと切り換えられる。例えば、トリガリング・イベントがキャッシュミスである場合には、キャッシュミスが、メモリにて使用可能になるまで、論理スレッドは、ストール状態１８に待機する。次に、利用可能な物理スレッドが現れ、論理スレッドがアクティブ状態１４に切り替わるまで、論理スレッドは、ウェイト状態にて待機する。よって、論理スレッドがアクティブ状態１４から退去するとき、他の論理スレッドがアクティブ状態１４に、絶えず切り替えられる。このため、論理スレッドと同時物理スレッドの間で、特有のデカップリング効果が得られる。
【００１５】
図２は、アクティブ状態にて、論理スレッドを維持するためのアクセスの一例を、より詳細に示す図である。処理ブロック２０において、物理スレッドの次期命令ポインタ（ＮＩＰ）に対し、論理スレッドに関連するマクロ命令がマッピングされる。尚、論理スレッドは、マクロ操作（あるいはＵＯＰ）において復号化されるマクロ命令の手順として観測される。例えば、マクロ命令の「Ｃａｌｌ」が、ＵＯＰの「Ｓｔｏｒｅ」、「Ｔｅｓｔ」、及び「Ｊｕｍｐ」に復号化される。この時、各々の同時物理スレッドは、それぞれ対応するＮＩＰを有する。ここで、ＮＩＰとは、処理すべきマクロ命令のアドレスを効率的に示す時期命令ポインタである。このようにして、所定の論理スレッドのマクロ命令が、ＮＩＰに対しマッピングされるため、これらのマクロ命令は、フェッチされ、ＵＯＰに対し復号化された後、パイプライン処理装置の剰余演算子へ伝送される。
【００１６】
このような方法は、縮小命令セット・コンピュータ（ＲＩＳＣ）アーキテクチャ、及び複数命令セット・コンピュータ（ＣＩＳＣ）においても同様に適用される。尚、マクロ命令を、ミクロ動作シーケンスに変換することは、必ずしも必要ではない。
【００１７】
ブロック２２において、１つ以上のトリガリング・イベントを処理するプロセッサが監視される。トリガリング・イベントは、メモリ待ち時間イベント、スリープ要求、及びスレッド優先イベントを有するが、これらに限定されるものではない。例えば、メモリ待ち時間イベントは、キャッシュミスとなりうる。キャッシュミスは、比較的長い待ち時間を有するメモリから、データを読み取ることを必要とするため、この場合、トリガリング・イベントを、パイプライン処理装置からスレッド管理ロジックへと連通させる。また、他の例として、メモリ待ち時間イベントにより、キャッシュミスを予測することが可能である。この場合、待ち時間のより長いメモリ階層のメモリからフェッチされるデータあるいは命令が必要とされる。尚、キャッシュミスは、さまざまな方法にて予測することが可能である。一例としては、スレッドが復号化される際に、ロードマイクロ操作が、未解決分岐よりも若い分岐である場合に、１つのアルゴニズムが、キャッシュミスとなる頻度の高いロードマイクロ操作を指定してもよい。尚、キャッシュミスを予測する方法は、本発明の主題ではないため、前述の例は、あくまでもトリガリングイベントを発生させるための一例にすぎない。また、トリガリングイベントにおいては、ある条件、すなわち、ウエイト状態にて利用可能な論理スレッドがある場合、これらの論理スレッドを実行したほうが、投機モードにおける現在の論理スレッドを実行するよりも、より効率がよいとの条件だけで、条件分岐が予測される。さらにまた、条件分岐は、現在の論理スレッドの優先順位によっても、確実に予測することが可能である。
【００１８】
他の種類のトリガリングイベントであるスリープ要求について説明する。例えば、「ＨＡＬＴ」あるいは「ＭＯＮＩＴＯＲ/ＭＷＡＩＴ」命令を実行することにより、論理スレッドが所定のアドレスに保存されるまで、あるいは、入力信号（割り込み信号など）を受信するまでは、スレッド管理アーキテクチャに、論理スレッドの処理を停止させることが可能となる。また、トリガリング・イベントは、アクティブ論理スレッドよりも高い優先順位を有する他の論理スレッドからの割り込み指令であってもよい。一例として、優先順位の高い論理スレッドとは、物理スレッドへのアクセスができない場合には、「画面のちらつき」を表示する画面更新用スレッドであってもよい。さらにまた、スレッド優先イベントは、論理スレッドにより、同時物理スレッドへの均等なまたはどちらかへのアクセスが可能となる公平性ルールに基づいて発生させてもよい。
【００１９】
いずれにせよ、ブロック２４において、１つ以上のトリガリングイベントがあると判断された場合には、ブロック２６にて、マッピングが中断され、ブロック２８にて、論理スレッドがドレイン状態に切り替えられる。また、ブロック３０においては、１つ以上のトリガリングイベントが現れるまで、論理スレッドはアクティブ状態に保持される。
【００２０】
図３は、ドレイン状態にて、論理スレッドを維持するためのアクセスの一例を、より詳細に示す図である。ブロック３２において、割り込み可能なポイントを検出するための論理スレッドが監視される。前述のごとく、論理スレッドが処理される際に、マクロ命令が１つ以上のＵＯＰに復号化される。ＵＯＰは、マクロ命令（ＢＯＭ）の始まり、あるいはマクロ命令（ＥＯＭ）の終わりのいずれか１つとして表示される。この場合、割り込み可能なポイントとは、ＥＯＭとして表示されるＵＯＰに相当する。このようなアクセスにより、マクロ命令（ＢＯＭ）の始まりと、マクロ命令（ＥＯＭ）の終わりが、共依存関係になる問題を、未然に防ぐことが可能となる。割り込み可能なポイントは、単に、問い合わせの論理スレッドから退出する最後のＵＯＰに相当する。ブロック３４において、割り込み可能なポイントがあれば、ブロック３６において、論理スレッドが、ストール状態に切り換えられる。また、ブロック３８においては、割り込み可能なポイントが現れるまで、論理スレッドはドレイン状態に保持される。
【００２１】
図４は、ストール状態にて、論理スレッドを維持するためのアクセスの一例を、より詳細に示す図である。ブロック４０において、１つ以上のトリガリングイベントを処理するプロセッサが監視される。前述のごとく、トリガリング・イベントは、メモリ待ち時間イベント、スリープ要求、及びスレッド優先イベントなどを有するが、これらに限定されるものではない。ブロック４２において、トリガリングイベントが無いと判断された場合は、ブロック４４において、論理スレッドは、ウエイト状態に切り替えられる。ブロック４６においては、トリガリングイベントが無い状態となるまで、論理スレッドがストール状態に保持される。例えば、キャッシュミス・トリガリングイベントが機能し、データが現れるまでは、論理スレッドはストール状態に保持される。
【００２２】
論理スレッドをドレイン状態に切り替えるトリガリングイベントは、論理スレッドをストール状態から退去させるトリガリングイベントと同一場合と、異なる場合がある。例えば、論理スレッドは、「ＨＡＬＴ」命令により、ストール状態にして、割り込み信号を受信するまで、ストール状態に保持させてもよい。また、他の例としては、割り込み信号を機能させることは、キャッシュミスの予測が完了することを待つことよりも重要であるため、論理スレッドを、キャッシュミスのロード命令により、ストール状態にするか、また、割り込み信号を受信することにより、ストール状態から退出させてもよい。
【００２３】
図５は、ウェイト状態にて、論理スレッドを維持するためのアクセスの一例を、より詳細に示す図である。ブロック４８において、利用可能な物理スレッドを検出するための複数の同時物理スレッドが監視される。ブロック５２において、利用可能な物理スレッドが有ると判断された場合、ブロック５２において、論理スレッドは、アクティブ状態への切り替えられる。ブロック５４においては、利用可能な物理スレッドが現れるまで、論理スレッドがウエイト状態に保持される。このため、ウエイト状態にある全ての論理スレッドが、物理スレッドにおいて、実行される段階となる。物理スレッドが、利用可能となる時に、論理スレッドが選択され、アクティブ状態へと移動する。尚、物理スレッドは、上述の例に応じて利用可能である。論理スレッドの選択は、論理スレッドにおける優先順位、および／または、公平要件に応じて決定することが可能であるが、これらに限定されるものではない。
【００２４】
図６は、スレッド管理テーブル５６を示す。スレッド管理テーブル５６は、状態、及び複数の論理スレッドのそれぞれに対応する１つまたは複数のトリガリングイベントを認識可能な論理スレッド情報を保存する。例えば、図中のスレッドＴ０は、アクティブ状態にあり、特定のメモリ要求、あるいは、モニタアドレスＡＦ０９に対する外部記憶装置において、トリガリングを行う。これに対し、スレッドＴ１はストール状態にあり、モニタアドレスＡＦ０９に対する外部記憶装置、及びＭＷＡＩＴコマンドに対する外部記憶装置において、トリガリングを行う。アクティブ状態にて使用されるIP、及び論理スレッドをサポートするために必要とされるハードウェア資源プロファイルなどのその他の情報は、スレッド管理表５６においても保存することが可能である。但し、この場合、ハードウェア資源を、全ての論理スレッドに対して、均一に指定する必要はない。尚、より迅速に実行することが一般的であるため、ハードウェア資源は、迅速な投機実行を行うために、プロセッサに一時レジスタを備えているが、これに限定されるものではない。実際、システムにおけるプラットフォーム・リソースは、ハードウェア資源プロファイルに備えられた状態にて制御される。例えば、論理スレッドの指定が必要になるにつれ、論理スレッドを必要としない資源が増大する。リソースの指定においては、優先順位、パフォーマンス・フィードバック、及び公平性入力が使用されるが、これらに限定はされるものではない。但し、スレッド管理テーブル５６の構成要素は、実用上、実施可能であれば、他のプロセッサから提供されてもよい。
【００２５】
図７は、複数の論理スレッド５８の数が、複数の同時スレッド６０の数よりも多い例を示す図である。この場合、処理準備が整った論理スレッドを、連続的に機能させることにより、同時物理スレッド６０が、可能な限りビィジー状態に保たれるため、スレッド管理アーキテクチャは、処理モードで機能する。これに対し、図８は、投機モードを得るために、複数の論理スレッド６２の数が、複数の同時物理スレッド６４の数よりも少ない例を示す図である。尚、投機モードは、プログラムコール、あるいは、他の間接プログラム構成が現れたときに、余分な同時物理スレッドを、同等の論理スレッドに指定することにより達成される。例えば、プログラムコールの場合、コール命令を有する適切な書き込みプログラムが、結果的に、コールポイントに戻ることが予測される。よって、予測されるリターンポイントにて、余分な物理スレッドをスタートさせ、実際のリターンが発生した時に、この実際のリターンにて、余分な同時物理スレッドから処理されるＵＯＰが適用される。但し、前述の処理モード及び予測スレッドが、同時に実施される「ハイブリッド」モードにて、スレッド管理アーキテクチャが着実に構成される。
【００２６】
次に、図９にて、コンピュータシステム６６を示す。コンピュータシステム６６は、マクロ命令を保存するためのシステムメモリ６８を有する。システムメモリは、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、及びフラッシュメモリなどを有する。システムバス７０は、マクロ命令を取り出すために、システムメモリ６８及びプロセッサ７２に連結されている。プロセッサ７２は、ステートマシン７６、及びハードシーケンサ７８を備えるスレッド管理アーキテクチャ７４を有する。尚、ステートマシン７６は、図１の構成図１０に示すステートマシンと同一の方法にて機能する。ステートマシン７６は、ウェイト状態、アクティブ状態、ドレイン状態、及びストール状態のいずれか１つにおける複数の論理スレッドのそれぞれを維持することにより、前記マクロ命令に対応する複数の論理スレッドを、複数の同時物理スレッドでサポートする。ハードウェアシーケンサ７８は、論理スレッドに対応する利用可能な物理スレッドに対する複数の同時物理スレッドを監視する。ステートマシン７６は、利用可能な物理スレッドが現れるまでは、ウエイト状態における論理スレッドを保持する。但し、図においては、複数の論理スレッドに対応するマクロ命令が、システムメモリに保存されるが、命令及び対応のＵＰＯは、トレース・キャッシュ、命令キャッシュなどの「オン・チップ」メモリから取り出されてもよい。
【００２７】
また、論理スレッドが存在する状態の実際の数は、周囲の環境により変更してもよい。例えば、実際の操作を容易にするために、ドレイン状態は、様々な状態、すなわち、各々のサブ状態が、「ドレイン」操作の一部に変わる様々な状態に分散してもよい。
【００２８】
本発明の実施形態は、当業者にとって、様々な形態で実施可能である。よって、本発明は、その特定の複数の実施形態を参照して説明したが、これらの実施形態に限定されるものではなく、当業者が、本願の図面、明細書、及び後述の請求項を参照して、修正及び変更することは可能である。
【図１】
2007517322.tif 000003
【図２】
2007517322.tif 000004
【図３】
2007517322.tif 000005
【図４】
2007517322.tif 000006
【図５】
2007517322.tif 000007
【図６】
2007517322.tif 000008
【図７】
2007517322.tif 000009
【図８】
2007517322.tif 000010
【図９】
2007517322.tif 000011
【国際調査報告】
2007517322.tif 000012
2007517322.tif 000013
2007517322.tif 000014