(57)【要約】      （修正有）【課題】最適なタイミングまたは頻度でスレッドを切り替え、パフォーマンスの低下または消費電力の増加を防止する。【解決手段】プリフェッチバッファバンク１０１は、複数のバッファエントリを含み、各スレッドについて複数の命令を格納する。各スレッドについてフェッチされた命令は、インターコネクトＴ０、Ｔ１、Ｔ２、Ｔ３を介して、マルチプレクサ（ｍｕｘ）１０５へ通信される。マルチプレクサ１０５は、スレッドピッカーロジック１１０からの選択ラインに基づいて、選択されたスレッドに対応する命令の１つを選択する。スレッドピッカーロジックは、スレッドブロックインジケータ１１５および／またはデコーデッドインジケーションまたはデコーダ１２０が提供する、フェッチされた命令の表現に基づいて、どのスレッドを選択するかを判断してよい、つまり、スレッドのどの命令を実行するのかを判断してよい。【選択図】図１
2010061642.tif 000002
【特許請求の範囲】
【請求項１】
第２の命令が実行されたか否かに少なくとも一部は基づいて、複数のスレッドの１つに対応する第１の命令を選択する、スレッド選択ロジックを備え、前記第２の命令は、ｖｐｒｅｆｅｔｃｈ．ｍｉｓｓｈｉｎｔ命令とスレッド遅延命令とからなる命令セットから選択される、装置。
【請求項２】
前記第２の命令は、スレッドブロック信号をアサートにし、前記スレッド選択ロジックが前記第１の命令を選択することを阻止する、請求項１に記載の装置。
【請求項３】
前記スレッド選択ロジックは、複数のマイクロアーキテクチャ条件の１つに少なくとも一部は基づいて、前記第１の命令を選択し、前記複数のマイクロアーキテクチャ条件は、不整列なデータオペランドの処理と、ｌｏｃｋｅｄまたはａｔｏｍｉｃオペレーションの処理と、複数または複合オペレーションを要する命令の処理と、マイクロコードオペレーションのシーケンスを用いる命令の処理と、特定のプリフィックス、オペランドサイズ、アドレスサイズ、ロック、繰り返しオペレーション、またはセグメントオーバーライドオペレーションを含む命令のデコードと、からなる、請求項１に記載の装置。
【請求項４】
前記ｖｐｒｅｆｅｔｃｈ．ｍｉｓｓｈｉｎｔ命令および前記スレッド遅延命令の指示がスリープベクトルに格納される、請求項１に記載の装置。
【請求項５】
前記スリープベクトルは、複数のマイクロアーキテクチャ条件の複数の表示を含む、請求項４に記載の装置。
【請求項６】
前記スレッド選択ロジックは、シーケンス順に、異なるスレッドから命令を選択する、請求項１に記載の装置。
【請求項７】
前記スレッド選択ロジックは、動的選択アルゴリズムに基づいて、異なるスレッドから命令を選択する、請求項１に記載の装置。
【請求項８】
前記スレッド選択ロジックは、時間多重化アルゴリズムに基づいて、異なるスレッドから命令を選択する、請求項１に記載の装置。
【請求項９】
システムであって、ｖｐｒｅｆｅｔｃｈ．ｍｉｓｓｈｉｎｔ命令とスレッド遅延命令とからなる命令セットを有するメモリと、前記命令セットをフェッチおよび実行するプロセッサと、を備えるシステム。
【請求項１０】
前記プロセッサは、前記ｖｐｒｅｆｅｔｃｈ．ｍｉｓｓｈｉｎｔ命令または前記スレッド遅延命令が実行されたか否かに少なくとも一部は基づいて、複数のスレッドの１つに対応する複数の命令の１つを選択する、スレッド選択ロジックを有する、請求項９に記載のシステム。
【請求項１１】
前記命令セットは、スレッドブロック信号をアサートにさせる、請求項１０に記載のシステム。
【請求項１２】
前記スレッド選択ロジックは、複数のマイクロアーキテクチャ条件の１つに少なくとも一部は基づいて、命令を選択し、前記複数のマイクロアーキテクチャ条件は、不整列なデータオペランドの処理と、ｌｏｃｋｅｄまたはａｔｏｍｉｃオペレーションの処理と、複数または複合オペレーションを要する命令の処理と、マイクロコードオペレーションのシーケンスを用いる命令の処理と、特定のプリフィックス、オペランドサイズ、アドレスサイズ、ロック、繰り返しオペレーション、またはセグメントオーバーライドオペレーションを含む命令のデコードと、からなる、請求項１１に記載のシステム。
【請求項１３】
前記ｖｐｒｅｆｅｔｃｈ．ｍｉｓｓｈｉｎｔ命令および前記スレッド遅延命令の指示がスリープベクトルに格納される、請求項１２に記載のシステム。
【請求項１４】
前記スレッド選択ロジックは、シーケンス順に、異なるスレッドから命令を選択する、請求項１３に記載のシステム。
【請求項１５】
前記スレッド選択ロジックは、動的選択アルゴリズムに基づいて、異なるスレッドから命令を選択する、請求項１４に記載のシステム。
【請求項１６】
前記スレッド選択ロジックは、時間多重化アルゴリズムに基づいて、異なるスレッドから命令を選択する、請求項１５に記載のシステム。
【請求項１７】
第１のスレッドに対応する第１の命令をフェッチする段階と、第２のスレッドに対応する第２の命令をフェッチする段階と、命令セットの内の１つの命令が実行されると、前記第２の命令の実行を阻止する段階と、を備え、前記命令セットは、ｖｐｒｅｆｅｔｃｈ．ｍｉｓｓｈｉｎｔ命令と遅延命令とからなる、方法。
【請求項１８】
前記ｖｐｒｅｆｅｔｃｈ．ｍｉｓｓｈｉｎｔ命令は、プリフェッチデータが受信されるまでスレッドの切り替えを遅延させる、請求項１７に記載の方法。
【請求項１９】
前記遅延命令は、前記第１の命令が実行されるまで、前記第２の命令が実行されないようにする、請求項１７に記載の方法。
【請求項２０】
スレッドブロック信号をアサートする段階を備える、請求項１７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、概して情報処理分野に関する。本発明の実施形態は、特にプロセッサ内部で複数の命令スレッドをスケジュールするテクニックに関する。
【背景技術】
【０００２】
マイクロプロセッサにおけるマルチスレッド処理は、複数の命令シーケンスを同時、またはアプリケーションあるいはオペレーティングシステムから同時に見えるように実行するテクニックを伴う。スレッディングアーキテクチャには、スレッドのスケジュール方法または各スレッドへの処理リソースの配分方法に違いがあってよい。例えば、従来のスレッディングアーキテクチャには、単純に一定の期間、スレッドに処理リソースを配分した後、別のスレッドに配分するものがある。また別の例として、従来のスレッディングアーキテクチャには、スレッドの実行を一定の期間「一時停止」する命令を実装しうるものがある。この期間は固定の期間であって、命令が用いられる度に変更されることはない。
【０００３】
その時々のスレッドの処理ニーズまたは処理リソースの状態を考慮することなく、処理リソースを一定の期間スレッドに配分すると、重要あるいは本来であれば妥当な動作が完了する前に、スレッドを切り替えてしまう虞がある。またさらに、処理状態またはスレッドのニーズを顧みずにスレッドを切り替えると、プロセッサのパフォーマンスの劣化を招く虞がある。
【０００４】
従来のスレッディングアーキテクチャには、ある任意の期間に基づいてスレッドを切り替えることに加え、スレッドのニーズまたは内在的な処理リソースの状態にかかわらず、特定のイベントまたはイベント群でスレッドを切り替えるものがある。同様に、これらのスレッディングアーキテクチャは、最適ではないタイミングまたは頻度でスレッドを切り替え、パフォーマンスの低下または消費電力の増加につながる虞がある。
【図面の簡単な説明】
【０００５】
本発明の実施形態を添付図面に図示するが、これらは本発明を限定するものではなく例示に過ぎない。添付図面では、同様の参照番号は類似の構成要素を示すものとする。
【０００６】
【図１】少なくとも１つの実施形態を実装可能なロジックを示す図である。
【０００７】
【図２】本発明の少なくとも１つの実施形態を使用可能なプロセッサを示す図である。
【０００８】
【図３】本発明の少なくとも１つの実施形態を使用可能な、共有バスコンピュータシステムのブロック図を示す図である。
【０００９】
【図４】本発明の少なくとも１つの実施形態を使用可能なＰＴＰ（ｐｏｉｎｔ−ｔｏ−ｐｏｉｎｔ）インターコネクトコンピュータシステムを示すブロック図である。
【００１０】
【図５】１つの実施形態で使用可能な動作を示すフロー図である。
【発明を実施するための形態】
【００１１】
本発明の実施形態は、コンピュータシステムおよび情報処理に関する。より具体的には、処理リソースの様々な状態の条件に少なくとも一部は基づいて、別のスレッドが処理リソースへアクセスすることを遅延または防止するテクニックに関する。例えば、１実施形態では、命令、サブ命令（例えば「ｕｏｐ」）、または制御信号（以下、一般的に「命令」とする）を実行し、スレッドスケジューリングロジックが行う実行中のスレッドから別のスレッドへの切替えを、条件が満たされるまで遅延させてよい。この条件には、データがロード済みであること、あるいは所定のクロックサイクル数が経過したことなどがある。別の実施形態では、後続の命令が依存あるいは使用するプリフェッチデータが戻るまで、実行スレッドにおける後続の命令をスレッドスケジューラにスケジュールさせないようにする命令を実行してよい。またさらに、１実施形態では、前述の命令は、スレッドを処理中の処理リソース（例えば、処理「パイプライン」）のフラッシュを引き起こさず、むしろ処理リソースに状態情報を保持させ、様々な条件が満たされた後に、遅延または停止したスレッドが実行を再開することを可能にする。
【００１２】
本発明の実施形態は、多種多様かつ可変数の条件によって、スレッドの遅延、切り替え、フラッシュを制御することで、従来技術のスレッドスケジューリングテクニックと比べより知的なスレッドの切り替えを可能にする。スレッドのスケジュールまたは切り替えをある時点の処理条件に基づいて複数の可変条件に判断させることで、本発明の実施形態は、スレッドを切り替えるだけでシステムの消費電力を低減しつつ、処理パフォーマンスを向上させ、従って、処理の観点から適切な場合には、関連する状態の保存／修復オーバーヘッドを発生させることができる。固定の、あるいは柔軟性を欠く基準セットまたはタイミングに基づいてスレッドを切り替える従来技術のスレッドスケジューリングテクニックとは異なり、本発明の実施形態は、システムおよび処理リソースのある時点でのパラメータならびに条件を考慮した様々な可変アルゴリズムに従い変化するシステムおよび処理条件に基づいて、スレッドの切り替えを行う。
【００１３】
ある実施形態では、以下に説明するスレッドスケジューリングテクニックによって、処理リソース内の、スレッドが実行される様々なマイクロアーキテクチャ条件に少なくとも一部は基づいて、スレッドの切り替えを阻止または遅延する。マイクロアーキテクチャ条件には、不整列なデータオペランドの処理中、ｌｏｃｋｅｄまたはａｔｏｍｉｃオペレーションの処理、複数または複合オペレーション（ロード→ＡＬＵオペレーション、ロード→ＡＬＵ→格納オペレーションなど）を要する命令の処理中、マイクロコードオペレーションのシーケンスを用いる命令の処理中、あるいは特定のプリフィックス、オペランドサイズ、アドレスサイズ、ロック、繰り返しオペレーション、またはセグメントオーバーライドオペレーションを含む命令のデコード中などがある。また、実施形態では、その他のマイクロアーキテクチャ条件により、スレッドの切り替えを遅延または阻止してよい。ある実施形態では、スレッドの処理状態、スレッドの実行段階などに基づき、１つ以上の条件により、プロセッサから特定のスレッドをフラッシュさせるか否かを、スレッドスケジューラに選択させてよい。
【００１４】
図１は、少なくとも１つの実施形態を実装可能なロジックを示す図である。図１は、キャッシュまたは他のメモリ（図示なし）からフェッチした命令を各スレッドに対応するバッファ位置に格納する、プリフェッチバッファバンク１０１を含む。１実施形態では、スケジューリングロジック１００は、４つのスレッドのスケジューリングをサポートする。プリフェッチバッファバンクは、各スレッドのフェッチされた命令を格納するバッファエントリをスレッド毎に少なくとも１つ含む。別の実施形態では、プリフェッチバッファバンクは、複数のバッファエントリを含み、各スレッドについて複数の命令を格納する。各スレッドについてフェッチされた命令は、インターコネクトＴ１、Ｔ２、Ｔ３、Ｔ４を介して、マルチプレクサ（ｍｕｘ）１０５へ通信されてよい。マルチプレクサ１０５は、スレッドピッカーロジック１１０からの選択ラインに基づいて、選択されたスレッドに対応する命令の１つを選択してよい。スレッドピッカーロジックは、スレッドブロックインジケータ１１５および／またはデコーデッドインジケーションまたはデコーダ１２０が提供する、フェッチされた命令の表現に基づいて、どのスレッドを選択するかを判断してよい、つまり、スレッドのどの命令を実行するのかを判断してよい。
【００１５】
１実施形態では、デコーダは、命令がデコードされたことをスレッドピッカーロジックへ示し、新たな命令が異なるスレッドから選択されてよい。１実施形態では、スレッドブロック信号がアサートではない状態で、現在選択されている命令がデコードされた旨をデコーダがスレッドピッカーロジックに示すと、スレッドピッカーロジックが異なるスレッドから命令を選択してよい。１実施形態では、スレッドピッカーロジックは、スレッドが特定の順に選択される（例えば、Ｔ１、Ｔ２、Ｔ３、Ｔ４）ように、ラウンドロビン方式でスレッドから命令を選択する。１実施形態では、スレッドピッカーロジックがアルゴリズムに基づいてスレッドを選択し、選択されるスレッドの順番はその他の条件によって変化する。
【００１６】
１実施形態では、スレッドピッカーロジックは、ｍｕｘに信号をアサートして特定のスレッドの命令を選択する。これにより、スレッド内の命令をデコードロジックでデコードし、実行ロジック（図示なし）で実行可能にする。スレッドピッカーロジックは、特定のスレッドからの命令の選択について、様々なアルゴリズムを用いてよい。これには、シーケンシャルまたは「ラウンドロビン」選択アルゴリズムなどの静的アルゴリズムが含まれる。但し、１実施形態では、スレッドのブロック／遅延などを行うべきか、あるいは続行すべきかを示す、スレッドブロック信号をスレッドピッカーロジックが受信する。１実施形態では、スレッドブロック信号は、スレッドピッカーが次のスレッドの選択に用いるあらゆるアルゴリズムをオーバーライドしてよい。例えば、１実施形態では、スレッドブロック信号のアサートは、シーケンシャルまたは「ラウンドロビン」における次のスレッドが選択されることを阻止する。
【００１７】
１実施形態では、遅延命令または「ｖｐｒｅｆｅｔｃｈ．ｍｉｓｓｈｉｎｔ」命令の実行を含む様々な理由によって、スレッドブロック信号がアサートされてよい。例えば、ｖｐｒｅｆｅｔｃｈ．ｍｉｓｓｈｉｎｔ命令あるいは類似の命令の受信、デコード、または処理を受け、スレッドブロック信号は、スレッドブロック制御ロジック（図示なし）によってアサートされてよい。これにより、ｖｐｒｅｆｅｔｃｈ．ｍｉｓｓｈｉｎｔ命令が要求したデータがメモリ階層からフェッチされるまで、スレッドピッカーロジックによるスレッドの選択が阻止される。データがフェッチされると、スレッドブロック信号はディアサートされてよく、フェッチされたデータを待つ命令を有するスレッドが選択され、デコードされてよい。
【００１８】
１実施形態で、データを（例えば、メモリまたはレベル２キャッシュからレベル１キャッシュへ）フェッチする命令が、そのデータを使用する命令（例えば、「ロード」命令）から一定の「距離」（プログラム命令の数）で離れているような状況では、ｖｐｒｅｆｅｔｃｈ．ｍｉｓｓｈｉｎｔ命令または類似の命令は、ソフトウェアの開発者にとって有用である。このような場合、データを使用しているスレッドは、コンシューマ命令（フェッチされたデータを使用する命令）が満たされるまで、処理リソースを別のスレッドに譲らない。従って、別のスレッドは、データがフェッチされて使用可能になるまでハードウェアを使用することができないことがある。１実施形態では、ｖｐｒｅｆｅｔｃｈ．ｍｉｓｓｈｉｎｔは、コンシューマ命令を含むスレッドを「スキップ」あるいはスケジュールせず、別のスレッドをスケジュールおよび実行することで、コンシューマ命令が別のスレッドにハードウェアリソースを使用させないことを阻止する。このように、スレッドは、フェッチされたデータを待つ間、処理リソースへのアクセスを阻止することは許可されていない。
【００１９】
１実施形態では、スレッドブロック信号を選択可能な期間中アサートとすることができる処理ロジック（後述）によって遅延命令を実行してよい。例えば、ある実施形態では、遅延命令は、スレッドを遅延すべきクロック数を処理ロジックへ示すフィールドを含む。処理パイプラインの深さなどに基づいて一定の期間スレッドを停止する、従来技術の命令とは異なり、遅延命令は、スレッドに対応する状態を処理リソースからフラッシュすることなく、可変の期間、スレッドを遅延させることができる。所定の期間後（例えば、クロックカウンタでカウント）、スレッドブロック信号はディアサートされてよく、スレッドピッカーロジックは、スレッドピッカーロジックが用いるアルゴリズム（例えば、ラウンドロビン）に基づいて次のスレッドを選択してよい。
【００２０】
１実施形態では、スレッドブロック信号は処理ロジック（後述）による「ｖｐｒｅｆｅｔｃｈ．ｍｉｓｈｉｎｔ」命令の実行に応じてアサートされてよい。これにより、メモリ階層から必要なプリフェッチデータが受信されるまでスレッドを遅延させる。さらに、１実施形態では、ｖｐｒｅｆｅｔｃｈ．ｍｉｓｓｈｉｎｔ命令は、スレッドに対応する状態情報の処理リソースをフラッシュすることなくスレッドの実行を延期または遅延してよい。但し、別の実施形態では、プリフェッチデータの読み込みに時間がかかりすぎ、別のスレッドの実行が不当に遅延される場合には、ｖｐｒｅｆｅｔｃｈ．ｍｉｓｓｈｉｎｔ命令が処理状態をフラッシュしてよい。１実施形態では、ｖｐｒｅｆｅｔｃｈ．ｍｉｓｓｈｉｎｔ命令を受けてスレッドが遅延されてからしきい値までのサイクル数をカウントする、タイマーを使用してよい。処理ロジックは、サイクル数がしきい値に到達すると、遅延されたスレッドに対応する状態をフラッシュし、スレッドブロック信号をディアサートして別のスレッドの実行を許可してよい。
【００２１】
別の実施形態では、スレッドブロック信号は、前述のマイクロアーキテクチャイベントを含む、処理ロジック内の様々なマイクロアーキテクチャイベントまたは状態など、別の理由によってアサートされてよい。１実施形態では、スレッドピッカーロジックは、スリープベクトル内のデータまたは信号、あるいは類似の制御構造に応じてスレッドを選択してよい。例えば、１実施形態では、スリープベクトルは、ｄａｔａ  ｔｒａｎｓｌａｔｉｏｎ  ｌｏｏｋａｓｉｄｅ  ｂｕｆｆｅｒ  （ＤＴＬＢ）  ｍｉｓｓ、ｌｅｖｅｌ−１  （Ｌ１）  ｃａｃｈｅ  ｒｅａｄ  ｍｉｓｓ、Ｌ１  ｒｅａｄ−ｆｏｒ−ｏｗｎｅｒｓｈｉｐ  （ＲＦＯ）  ｍｉｓｓ、ｆｉｌｌ  ｂｕｆｆｅｒ  ｆｕｌｌ条件、ｆｉｌｌ  ｂｕｆｆｅｒ  ｓｅｔ  ａｄｄｒｅｓｓ  ｍａｔｃｈ条件、ｕｎｃａｃｈｅａｂｌｅ  ｗｒｉｔｅ、ｕｎｃａｃｈｅａｂｌｅ  ｗｒｉｔｅ  ｂｕｆｆｅｒ  ｆｕｌｌ条件、ｄｅｌａｙ  ｉｎｓｔｒｕｃｔｉｏｎ  ｉｎ−ｆｌｉｇｈｔ条件、ｉｎｓｔｒｕｃｔｉｏｎ  ｐｒｅｆｅｔｃｈ  ｂｕｆｆｅｒ  ｅｍｐｔｙ条件、およびｖｐｒｅｆｅｔｃｈ．ｍｉｓｓｈｉｎｔ命令が実行されている、などの処理条件を示すビットを格納してよい。次の表にスリープバッファのエントリの１実施形態を示す。
【表１】
2010061642.tif 000003
【００２２】
別の実施形態では、スリープベクトルエントリは前述のものと異なってよい。さらに、スリープベクトルにはより多くのあるいは少ないスリープベクトルエントリが含まれる実施形態があってよい。１実施形態では、スリープベクトルは遅延またはｖｐｒｅｆｅｔｃｈ．ｍｉｓｓｈｉｎｔ命令の実行の指示を含んでよく、ロジックがスリープベクトルを読み込むことで、スレッドピッカーロジックに対して、スレッドブロック信号をアサートしてよい。同様に、スリープベクトルは、スレッドピッカーロジックへスレッドブロック信号をディアサートする時を示してよい。１実施形態では、スリープベクトルに示される条件には、前述したような、その他のマイクロアーキテクチャイベントが含まれるとは限らない。１実施形態では、スリープベクトルに示されたものに加え、前述したような、その他のマイクロアーキテクチャイベントが、スレッドブロック信号のアサートに影響を及ぼしてよい。ある実施形態では、スリープベクトル内外に示される多くのイベントがスレッドブロック信号のアサートに影響を及ぼしてよい。
【００２３】
図２は、本発明の少なくとも１つの実施形態で使用可能なプロセッサを示す図である。図２は、特に一般的なＣＰＵアプリケーション、スループットアプリケーション（例、３Ｄグラフィックスアプリケーション）または一般的なＣＰＵおよびスループットアプリケーションの組み合わせにおいて使用可能なプロセッサを示す。プロセッサ２００は、リング状のインターコネクト２３０に沿って配された、複数のプロセッサコア２００−１から２００−Ｎ、専用のスループットアプリケーションハードウェア２１０（例えば、グラフィックステクスチャサンプリングハードウェア）、メモリインターフェースロジック２２０を含む。ある実施形態では、プロセッサ２００は、各コア２００―１から２００−Ｎ内のキャッシュ２０１−１から２０１−Ｎからの情報を含む、１つ以上のラストレベルキャッシュ２３５を含んでよい。１実施形態では、１つ以上のプロセッサコア２００―１から２００−ＮはＳＩＭＤオペレーションを実行することができる。
【００２４】
１実施形態では、図１に示したロジックが図２の各プロセッサコアに含まれてよい。１実施形態では、図２の各コアはここに説明する実施形態に沿って複数のスレッドを処理してよい。別の実施形態では、図２の１つまたは全てのコアの内のいくつかが、ここに説明する実施形態に基づいてスレッドを処理してよい。
【００２５】
図３は、本発明の少なくとも１つの実施形態で使用可能な共有バスコンピュータシステムのブロック図を示す図である。マイクロプロセッサ３０１から３１５は、１つ以上のＣＰＵ（３２３、３２７、３３３、３３７、３４３、３４７、３５３、３５７）、グラフィックスデバイス（３０７、３１７、３２７、３３７）、メモリコントローラ（３２５、３３５、３４５、３５５）、Ｉ／Ｏコントロール、またはＰＣＩあるいはＰＣＩｅコントローラ（３２０、３３０、３４０、３５０）などのその他の機能ユニットなど、様々な機能ユニットを含んでよい。また、図３のシステムは、マイクロプロセッサの周辺制御デバイス３６０とのインターフェースであるＩ／Ｏコントローラ３６５を含んでよい。
【００２６】
１実施形態では、システムは、ここに説明する実施形態に沿った選択的なスレッドの切り替えおよびスケジューリングを可能にする、ロジック３１９を含む。例えば、ロジックは、図１で図示および説明したロジックを含んでよい。
【００２７】
ある実施形態では、図３に示した要素の一部または全てがマイクロプロセッサに含まれてよく、ダイレクトメモリインターフェース（ＤＭＩ）、ＰＣＩエクスプレスグラフィックス（ＰＥＧ）インターコネクトなど、その他のインターコネクトを含んでよい。本発明の実施形態はその構成にかかわらず、図３のシステムに含まれるか、あるいは一部に関連付けられてよい。また、図３のシステムは、メインメモリ（図示なし）を含んでよい。メインメモリは、ＤＲＡＭ、ハードディスクドライブ（ＨＤＤ）、あるいはコンピュータシステムとネットワークを介して遠隔に存在し、様々なストレージデバイスおよび技術を有するメモリソースなど、様々なメモリ構造であってよい。図３のキャッシュメモリは、プロセッサ内部、あるいはプロセッサのローカルバス上などプロセッサの近辺にあってよい。
【００２８】
さらに、キャッシュメモリは、シックストランジスタ（６Ｔ）セル、あるいは同等またはより高速なアクセススピードのその他のメモリセルなど、比較的高速なメモリセルを有してよい。
【００２９】
本発明の様々な実施形態には、図３に示した共有バスコンピュータシステムに加え、Ｐ２Ｐインターコネクトシステムおよびリングインターコネクトシステムを含む、その他のシステム構成を使用することができる。例えば、図４のＰ２Ｐシステムは、複数のプロセッサを含んでよい。ここでは、この内２つのプロセッサ４７０および４８０のみを例示する。プロセッサ４７０および４８０は、それぞれメモリ４２および４４に接続する、ローカルメモリコントローラハブ（ＭＣＨ）４７２および４８２を含んでよい。プロセッサ４７０および４８０は、ＰｔＰインターフェース回路４７８および４８８を用い、ＰｔＰインターフェース４５０を介してデータを交換してよい。プロセッサ４７０および４８０は、それぞれＰｔＰインターフェース回路４７６、４９４、４８６、４９８を用い、各ＰｔＰインターフェース４５２および４５４を介してチップセット４９０とデータの交換を行ってよい。また、チップセット４９０は、高性能グラフィックスインターフェース４３９を介して高性能グラフィックス回路４３８とデータを交換してよい。本発明の実施形態は、あらゆる数のプロセッサコアを有するあらゆるプロセッサの内部、あるいは図４の各ＰｔＰバスエージェント内に存在してよい。
【００３０】
１実施形態では、図４は、図１に示したロジックを参照して説明した実施形態をはじめとする、ここに説明した実施形態に従って、複数のスレッドのスケジュールおよび切り替えを選択的に行う、ロジック４１９を含む。
【００３１】
図５は、本発明の少なくとも１つの実施形態で使用可能な動作のフロー図である。動作５０１では、第１のスレッドに対応する第１の命令をフェッチ、デコード、および実行のためにスケジュールされる。動作５０５でスレッドブロック信号がアサートではない場合は、動作５１０で別のスレッドからの命令を実行命令として選択する。動作５０５でスレッドブロック信号がアサートである場合は、動作５１５でスレッドブロック信号をアサートとしているイベントが完了すると、動作５２０でスレッドブロック信号がディアサートされ、動作５１０で別のスレッドからの命令を実行命令として選択する。
【００３２】
１実施形態では、ｖｐｒｅｆｅｔｃｈ．ｍｉｓｓｈｉｎｔ命令、遅延命令、またはここに説明したその他のマイクロアーキテクチャイベントの実行を含む、数多くのイベントがスレッドブロック信号をアサートしてよい。さらに、別のスレッドからの新しい命令の選択を行うか否か、および選択をいつ行うかは、スレッドブロック信号のアサートのみならず、実効命令として選択された最後の命令がデコード、スケジュール、または実行されたかどうかなど、その他の要素およびアルゴリズムにも依存する。１実施形態では、シーケンスまたは「ラウンドロビン」の順番でスレッドが選択される。別の実施形態では、静的または動的に決定された基準、アルゴリズム、または条件のセットに基づいてスレッドが選択される。
【００３３】
少なくとも１つの実施形態の１つ以上の側面は、プロセッサ内の様々なロジックを表す、機械で読み取り可能な媒体に格納されたデータ表現で実装してよい。この媒体は、機械で読み取られると、ここで説明したテクニックを実行するロジックを機械に組み立てさせる。「ＩＰコア」と呼ばれるこのような表現は、有形の機械で読み取り可能な媒体（「テープ」）に格納でき、様々な消費者または製造現場へ供給され、実際にロジックまたはプロセッサを製造する製造機器にロードされてよい。
【００３４】
以上、マイクロアーキテクチャのメモリ領域アクセスを管理する方法および装置を説明したが、ここでの説明は、限定ではなく例示を目的としていることが理解されるべきである。当業者が説明を読み理解すれば、数多くの別の実施形態に想到するであろう。従って、本発明の技術的範囲は、添付のクレームおよびその等価物の全範囲を参照して判断されるべきである。
【図１】
2010061642.tif 000004
【図２】
2010061642.tif 000005
【図３】
2010061642.tif 000006
【図４】
2010061642.tif 000007
【図５】
2010061642.tif 000008
【外国語明細書】
2010061642.tif 000009
2010061642.tif 000010
2010061642.tif 000011
2010061642.tif 000012
2010061642.tif 000013
2010061642.tif 000014
2010061642.tif 000015
2010061642.tif 000016
2010061642.tif 000017
2010061642.tif 000018
2010061642.tif 000019
2010061642.tif 000020
2010061642.tif 000021
2010061642.tif 000022
2010061642.tif 000023
2010061642.tif 000024
2010061642.tif 000025