(57)【特許請求の範囲】
【請求項１】
第１の命令セットによって定義された、アーキテクトされたレジスタの第１のセットと、第２の命令セットによって定義された、アーキテクトされたレジスタの第２のセットとにマッピングするように構成され、その一部が、リネームレジスタのセットとして用いられ得るように構成された複数の物理レジスタを備える装置内の方法であって、
前記アーキテクトされたレジスタの第１のセットを前記複数の物理レジスタの外部のメモリにマッピングするステップと、
前記マッピングするステップに応じて、前記マッピングするステップより前には前記アーキテクトされたレジスタの第１のセットに対応していた物理レジスタを、前記リネームレジスタのセットに加えるステップと、
を含む方法。
【請求項２】
前記アーキテクトされたレジスタの第２のセットへの前記物理レジスタのマッピングを初期化し、前記物理レジスタにおいて、前記リネームレジスタのセットを備えるように初期化するステップと、
前記複数の物理レジスタの外部のキャッシュメモリへの、前記アーキテクトされたレジスタの第１のセットのマッピングを初期化するステップと、
前記第１の命令セットからの命令に関連する使用需要に応じて、前記アーキテクトされたレジスタの第１のセットを前記物理レジスタに再マッピングするステップと、
前記アーキテクトされたレジスタの再マッピングされた第１のセットに対応する物理レジスタを、前記リネームレジスタのセットから除去するステップと、を含む、
請求項１の方法。
【請求項３】
前記アーキテクトされたレジスタの第１のセットを前記メモリにマッピングするステップは、前記アーキテクトされたレジスタの第１のセットを、前記複数の物理レジスタの外部のキャッシュメモリにマッピングするステップを含む、
請求項１の方法。
【請求項４】
前記アーキテクトされたレジスタの第１のセットを前記メモリにマッピングするステップは、前記第１の命令セットからの命令に関連する使用需要の減少に応じて、前記アーキテクトされたレジスタの第１のセットを前記物理レジスタから前記メモリに再マッピングするステップを含む、
請求項１の方法。
【請求項５】
前記第１の命令セットからの命令に関連する使用需要の増大に応じて、前記アーキテクトされたレジスタの第１のセットを、前記メモリから前記物理レジスタに再マッピングするステップと、
前記第１の命令セットからの命令に関連する使用需要の増大に応じて、再マッピングされた前記第１のセットに対応する物理レジスタを、前記リネームレジスタのセットから除去するステップと、を含む、
請求項１の方法。
【請求項６】
第１の命令セットによって定義された、アーキテクトされたレジスタの第１のセットと、第２の命令セットによって定義された、アーキテクトされたレジスタの第２のセットとにマッピングされるように構成され、その一部が、リネームレジスタのセットとして用いられ得るように構成された複数の物理レジスタを備え、
前記アーキテクトされたレジスタの第１のセットは、前記物理レジスタの外部のメモリにマッピングされるように構成されており、
前記アーキテクトされたレジスタの第１のセットが前記メモリにマッピングされることに応じて、前記メモリにマッピングされる前には前記アーキテクトされたレジスタの第１のセットに対応していた物理レジスタは、前記リネームレジスタのセットに加えられる、
装置。
【請求項７】
前記複数の物理レジスタは、前記複数の物理レジスタのある部分が、前記アーキテクトされたレジスタの第２のセットにマッピングされるように初期化され、前記複数の物理レジスタの他のある部分が、前記リネームレジスタのセットとして用いられるように初期化されるべく構成されており、
前記アーキテクトされたレジスタの第１のセットは、前記物理レジスタの外部の前記メモリにマッピングされ、
前記物理レジスタは、前記第１の命令セットからの命令に関連する使用需要に応じて、前記アーキテクトされたレジスタの第１のセットが前記物理レジスタに再マッピングされ得るように構成され、
前記アーキテクトされたレジスタの再マッピングされた第１のセットに対応する物理レジスタは、前記第１の命令セットからの命令に関連する使用需要に応じて、前記リネームレジスタのセットから除去され得る、
請求項６の装置。
【請求項８】
キャッシュメモリを備え、
前記物理レジスタは、前記アーキテクトされたレジスタの第１のセットが前記物理レジスタからキャッシュメモリにマッピングされ得るように構成されている、
請求項６の装置。
【請求項９】
前記物理レジスタは、前記第１の命令セットからの命令に関連する使用需要の減少に応じて、前記アーキテクトされたレジスタの第１のセットが前記物理レジスタから前記メモリにマッピングされ得るように構成されており、
前記物理レジスタは、前記第１の命令セットからの命令に関連する使用需要の増大に応じて、前記アーキテクトされたレジスタの第１のセットが前記メモリから前記物理レジスタに再マッピングされ得ると共に、前記第１の命令セットからの命令に関連する使用需要の前記増大に応答して、再マッピングされた前記第１のセットに対応する物理レジスタが前記リネームレジスタのセットから除去され得るように構成されており、
前記物理レジスタは、前記第２の命令セットからの命令に関連する使用需要の減少に応じて、前記アーキテクトされたレジスタの第２のセットが前記物理レジスタから前記メモリにマッピングされ得ると共に、前記第２の命令セットからの命令に関連する使用需要の前記減少に応じて、前記アーキテクトされたレジスタの第２のセットが前記メモリにマッピングされる前に前記第２のセットに対応していた物理レジスタが前記リネームレジスタのセットに加えられ得るように構成されている、
請求項６の装置。
【請求項１０】
実行されると、請求項６〜９のいずれかの装置を備える半導体デバイスを製造するために用いられる製造プロセスを構成し得る命令を含む、コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概してプロセッサベースのシステムに関し、より特定的にはプロセッサベースのシステムにおけるレジスタキャッシングに関する。
【背景技術】
【０００２】
従来のプロセッサベースのシステムは、典型的には、中央処理ユニット（ＣＰＵ）、グラフィカル処理ユニット（ＧＰＵ）、加速処理ユニット(accelerated processing unit)（ＡＰＵ）等の１つ以上の処理要素を含む。処理ユニットは、主メモリ内に記憶される命令及び／又はデータにアクセスし、次いで命令を実行し且つ／又はデータを操作するように構成される１つ以上のプロセッサコアを含む。各プロセッサコアは、実行された命令により要求される場合に浮動小数点数に対する数学的演算を行うために用いられる浮動小数点ユニットを含む。例えば従来の浮動小数点ユニットは、典型的には、加算、減算、乗算、除算及び平方根等の演算を実行するように設計される。幾つかのシステムは、指数関数や三角関数等の種々の超越関数の計算を実行することもできる。浮動小数点演算は、整数に対する整数演算とは別に取り扱われてよい。浮動小数点ユニットはまた、浮動小数点数を記憶するための専用の浮動小数点レジスタのセットを有していることがある。
【０００３】
浮動小数点ユニットは、多重の浮動小数点命令セットをサポートすることができる。例えば、ｘ８６アーキテクチャ命令セットは、ｘ８７と称される浮動小数点関連の命令のサブセットを含む。ｘ８７命令セットは、加算、減算及び比較等の基本浮動小数点演算のための命令の他に、正接関数や逆正接関数等のより複雑な数値演算のための命令を含む。ｘ８７命令セットにおける浮動小数点命令は、浮動小数点ユニット内の物理レジスタへとマッピングされ得るアーキテクトされたレジスタ(architected registers)（従来ＭＭＸレジスタとして知られる）のセットを用いることができる。別の例では、多重処理コアを含むコンピュータは、単一命令多重データ（ＳＩＭＤ）命令セットをサポートすることがある。ｘ８６アーキテクチャＳＩＭＤ命令セットは、ストリーミングＳＩＭＤエクステンション(Streaming SIMD Extensions)（ＳＳＥ）と称される別の浮動小数点関連の命令のサブセットをサポートする。ＳＳＥ命令セットにおける浮動小数点命令は、これも浮動小数点ユニット内の物理レジスタへとマッピングされ得るアーキテクトされたレジスタ（従来ＸＭＭレジスタとして知られる）の別のセットを用いることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従って、処理ユニットで実行中の異なるアプリケーションは、ｘ８７浮動小数点命令セット、ＳＳＥ浮動小数点命令セット又はこれら２つの命令セットの混合を用いることができる。その結果、両命令セットのためのアーキテクトされたレジスタが浮動小数点ユニット内の物理レジスタへとマッピングされて、処理ユニットで実行中の複数のアプリケーションは、アーキテクトされたレジスタの両セットを利用可能である。両命令セットのためのアーキテクトされたレジスタを浮動小数点ユニット内の物理レジスタへとマッピングすることは、チップ上面積、タイミング資源及び電力を消費する。異なるアプリケーションによって使用される命令セットによっては、異なる種類の命令セットへと割り当てられる資源が使用されないことがあるので、処理ユニットの効率が低下し得る。
【課題を解決するための手段】
【０００５】
開示される主題は、上述した１つ以上の問題の影響に対処することに向けられる。開示される主題の幾つかの態様の基本的な理解を提供するために、開示される主題の簡略化された概要を以下に提示する。この概要は開示される主題の包括的な概説である。開示される主題の鍵となる若しくは臨界的な要素を特定すること又は開示される主題の範囲を表すことは意図されていない。その唯一の目的は、後で議論される更に詳細な説明への序として、幾つかの概念を単純化された形態で提示することである。
【０００６】
一実施形態においては、浮動小数点レジスタキャッシングのための方法が提供される。この方法の一実施形態は、第１の命令セットによって定義された、アーキテクトされたレジスタの第１のセットを、複数の物理レジスタの外部のメモリにマッピングするステップを含む。複数の物理レジスタは、第１のセットと、第２の命令セットによって定義された、アーキテクトされたレジスタの第２のセットと、リネームレジスタのセットとにマッピングするように構成されている。この実施形態はまた、アーキテクトされたレジスタの第１のセットに対応する物理レジスタを、リネームレジスタのセットに加えるステップを含む。
【０００７】
別の実施形態においては、浮動小数点レジスタキャッシングのための装置が提供される。この装置の一実施形態は、第１の命令セットによって定義された、アーキテクトされたレジスタの第１のセットと、第２の命令セットによって定義された、アーキテクトされたレジスタの第２のセットと、リネームレジスタのセットとにマッピングされるように構成された複数の物理レジスタを含む。アーキテクトされたレジスタの第１のセットは、対応する物理レジスタがリネームレジスタのセットに加えられ得るように、物理レジスタの外部のメモリにマッピングされ得る。
【０００８】
別の実施形態は、実行されるときに、浮動小数点レジスタキャッシングのために用いられ得る半導体デバイスを製造するために用いられる製造プロセスを構成し得る命令を含むコンピュータ可読媒体を含む。製造された半導体デバイスは、第１の命令セットによって定義された、アーキテクトされたレジスタの第１のセットと、第２の命令セットによって定義された、アーキテクトされたレジスタの第２のセットと、リネームレジスタのセットとにマッピングされるように構成された複数の物理レジスタを含む。アーキテクトされたレジスタの第１のセットは、対応する物理レジスタがリネームレジスタのセットに加えられ得るように、物理レジスタの外部のメモリにマッピングされ得る。
【０００９】
別の実施形態においては、浮動小数点レジスタキャッシングのための装置が提供される。この装置の一実施形態は、浮動小数点数に対して数学的演算を行うように構成された浮動小数点ユニットと、浮動小数点ユニット内に実装され且つ浮動小数点数を記憶するように構成される複数の物理レジスタと、を含む。この実施形態はまた、物理レジスタの外部のメモリを含む。メモリは浮動小数点数を記憶するように構成される。第１の命令セットによって定義された、アーキテクトされたレジスタの第１のセットと、第２の命令セットによって定義された、アーキテクトされたレジスタの第２のセットと、リネームレジスタのセットとは、複数の物理レジスタにマッピングされ得る。アーキテクトされたレジスタの第１のセットは、対応する物理レジスタがリネームレジスタのセットに加えられ得るように、物理レジスタの外部のメモリにマッピングされ得る。
【００１０】
開示される主題は添付の図面と共に以下の説明を参照することによって理解されるであろう。図面において同様の参照番号は同様の要素を特定する。
【図面の簡単な説明】
【００１１】
【図１】半導体デバイスの第１の例示的な実施形態を概念的に示す図である。
【図２Ａ】アーキテクトされたレジスタの物理レジスタへのマッピングの第１の例示的な実施形態を概念的に示す図である。
【図２Ｂ】アーキテクトされたレジスタの物理レジスタ及びキャッシュへのマッピングの第２の例示的な実施形態を概念的に示す図である。
【図３】アーキテクトされたレジスタを物理レジスタへとマッピングするための第１の例示的な実施形態に係る方法を概念的に示す図である。
【図４】アーキテクトされたレジスタを物理レジスタへとマッピングするための第２の例示的な実施形態に係る方法を概念的に示す図である。
【図５】アーキテクトされたレジスタを物理レジスタへとマッピングするための第３の例示的な実施形態に係る方法を概念的に示す図である。
【００１２】
開示される主題は種々の修正及び代替的形態を許容する一方で、その具体的な実施形態が図面において例として示され、またここに詳細に説明されることになる。但し、具体的な実施形態のここでの説明は、開示される主題を開示される特定の形態に限定することを意図しておらず、むしろそれとは逆に、添付の特許請求の範囲にある全ての修正、均等なもの及び代替案を網羅することを意図している。
【発明を実施するための形態】
【００１３】
例示的な実施形態が以下に説明される。明瞭さのために、実際の実装の全ての特徴がこの明細書に記載されているわけではない。任意のそのような実際の実施形態の開発においては、システム関連及びビジネス関連の制約の遵守等の実装毎に変わることになる開発者の具体的な目標を達成するために、種々の実装固有の決定がなされるべきであることが当然に理解されるべきである。また、そのような開発努力は得てして複雑で且つ時間を費やすものであるが、この開示の利益を享受する当業者にとってはルーチン的な業務であろうことが理解されるはずである。
【００１４】
次に添付の図面を参照して、開示される主題を説明する。種々の構造、システム及びデバイスは、説明のみを目的とするために、且つ、当業者にとって周知の細部によって本願発明が不明瞭にならないように、図面に模式的に示されている。にもかかわらず、添付の図面は、開示される主題の例証的な例を記載し且つ説明するために含まれている。ここで用いられる語句は、関連分野を含めた当業者によるそれらの語句の理解と一致する意味を有するものとして理解され且つ解釈されるべきである。ある用語又は句の特別の定義、即ち当業者によって理解される通常の且つ慣例的な意味とは異なる定義は、ここでその用語又は句の一貫した使用によって暗示されることが意図されるわけではない。ある用語又は句が特別な意味、即ち当業者によって理解される以外の意味を有することが意図される限りにおいて、そのような特別な定義は、その用語又は句に対するその特別な定義を直接的且つ明白に提供する定義的な方法において明細書内に明示的に記載されることになる。
【００１５】
概して、本出願は、多重浮動小数点命令セットからの命令を実行することができるプロセッサベースのシステムの実施形態を記述する。例えばこのシステムは、ｘ８７浮動小数点命令セットからの命令及びＳＳＥ浮動小数点命令セットからの命令を実行することが可能であってよい。各命令セットには、種々の浮動小数点演算を実行するときに命令によって使用され得る複数のアーキテクトされたレジスタが割り当てられる。アーキテクトされたレジスタは、プロセッサベースのシステム内に実装される又はプロセッサベースのシステムによって使用される物理レジスタのセットへとマッピングされてよい。物理レジスタはまた、アーキテクトされたレジスタの１つ以上をリネームする(rename)ために使用され得るリネームレジスタを含んでいてもよく、それにより、命令が同じアーキテクトされたレジスタを参照することがある場合であっても、多重命令が並列に（例えば同時に）実行され得る。しかし、大体の場合、プロセッサベースのシステム内で実行中のアプリケーション及び／又はコードは、１つの命令セット又は他の命令セットのいずれかを使用する。単一のアプリケーションが２つの浮動小数点命令セットの混合を使用するのは極めて稀である。命令セットのいずれか（望ましくは最も使用頻度の少ないことが見込まれる命令セット）に関連するアーキテクトされたレジスタは、キャッシュ等の外部メモリ(outside memory)又は他のレジスタ構造へとオフロード(offloaded)され得る。オフロードされたアーキテクトされたレジスタに関連する物理レジスタは、次いで、リネームされたレジスタのセットへと加えられる。
【００１６】
図１は半導体ウェハ（又はダイ）内又はその上に形成され得る半導体デバイス１００の第１の例示的な実施形態を概念的に示している。半導体デバイス１００は、堆積、成長、フォトリソグラフィ、エッチング、平坦化、研磨、アニーリング等の周知のプロセスを用いて半導体ウェハ内又は半導体ウェハ上に形成され得る。図示される実施形態においては、デバイス１００は、主メモリ１１０内に記憶される命令及び／又はデータにアクセスするように構成される中央処理ユニット（ＣＰＵ）１０５を含む。図示される実施形態においては、ＣＰＵ１０５は、命令を実行し且つ／又はデータを操作するために使用される少なくとも１つのＣＰＵコア１１５を含む。多くのプロセッサベースのシステムは多重ＣＰＵコア１１５を含む。ＣＰＵ１０５はまた、選択された命令及び／又はデータをキャッシュ内に記憶することによって命令及び／又はデータへのアクセスを加速するために用いられる階層的な（又は多重レベルの）キャッシュシステムを実装している。しかし、本開示の利益を享受する当業者であれば、デバイス１００の代替的な実施形態は、外部キャッシュを使用する構成等のＣＰＵ１０５の異なる構成を実装してもよいことを理解すべきである。また、本願において説明される技術は、グラフィカル処理ユニット（ＧＰＵ）、加速処理ユニット（ＡＰＵ）等の他のプロセッサに適用されてもよい。
【００１７】
図示されるキャッシュシステムは、主メモリ１１０内に記憶される命令及び／又はデータの複製を記憶するためのレベル２（Ｌ２）キャッシュ１２０を含む。図示される実施形態においては、Ｌ２キャッシュ１２０は主メモリ１１０に対して１６ウェイアソシエイティブ(16-way associative)であり、従って主メモリ１１０内の各ラインは、Ｌ２キャッシュ１２０内の１６個の特定のライン（伝統的に「ウェイ」と称される）へ又はそこから潜在的に複製され得る。しかし、本開示の利益を享受する当業者であれば、主メモリ１１０及び／又はＬ２キャッシュ１２０の代替的な実施形態は、任意のアソシエイティブ性(associativity)を用いて実装され得ることを理解すべきである。主メモリ１１０と比較して、Ｌ２キャッシュ１２０は、より小さく、且つ、より高速なメモリ要素を用いて実装されてよい。Ｌ２キャッシュ１２０はまた、ＣＰＵコア１１５とＬ２キャッシュ１２０の間でより高速に、且つ／又は、より少ない待ち時間(latency)で情報が交換され得るように、ＣＰＵコア１１５に対して論理的に且つ／又は物理的に（主メモリ１１０と比較して）より近くに配置(deployed)されてよい。
【００１８】
図示されるキャッシュシステムはまた、主メモリ１１０及び／又はＬ２キャッシュ１２０内に記憶される命令及び／又はデータの複製を記憶するためのＬ１キャッシュ１２５を含む。Ｌ１キャッシュ１２５のライン内に記憶される情報がＣＰＵ１０５によって迅速にリトリーブされ(retrieved)得るように、Ｌ１キャッシュ１２５は、Ｌ２キャッシュ１２０と比較して、より小さく且つより高速なメモリ要素を用いて実装されてよい。Ｌ１キャッシュ１２５はまた、ＣＰＵコア１１５とＬ１キャッシュ１２５の間で（主メモリ１１０及びＬ２キャッシュ１２０との通信と比較して）より高速に且つ／又はより少ない待ち時間で情報が交換され得るように、ＣＰＵコア１１５に対して論理的に且つ／又は物理的に（主メモリ１１０及びＬ２キャッシュ１２０と比較して）より近くに配置されてよい。本開示の利益を享受する当業者であれば、Ｌ１キャッシュ１２５及びＬ２キャッシュ１２０は、複数レベル階層的キャッシュメモリシステムの１つの例示的な実施形態を代表することを理解すべきである。代替的な実施形態は、Ｌ０キャッシュ、Ｌ１キャッシュ、Ｌ２キャッシュ、Ｌ３キャッシュ等の要素を含む異なる複数レベルキャッシュを使用してよい。
【００１９】
図示される実施形態においては、Ｌ１キャッシュ１２５は、命令及びデータを記憶するための複数のレベル１（Ｌ１）キャッシュに分けられ、これらはＬ１−Ｉキャッシュ１３０及びＬ１−Ｄキャッシュ１３５と称される。Ｌ１キャッシュ１２５を、命令のみを記憶するためのＬ１−Ｉキャッシュ１３０及びデータのみを記憶するためのＬ１−Ｄキャッシュ１３５へと分けること又は区分化することは、これらのキャッシュが、それぞれ命令及び／又はデータを要求する可能性の高い構成要素のより近くに展開されることを可能にし得る。その結果、この配置は、競合(contention)、配線遅延を低減し得るし、また命令及びデータに関連する待ち時間を概して減少させ得る。１つの実施形態においては、置換ポリシーが、Ｌ１−Ｉキャッシュ１３０内のラインがＬ２キャッシュ１２０からの命令と置換されることと、Ｌ１−Ｄキャッシュ１３５内のラインがＬ２キャッシュ１２０からのデータと置換されることと、を指示する。しかし、当業者であれば、Ｌ１キャッシュ１２５の代替的な実施形態は、命令専用及びデータ専用のキャッシュ１３０，１３５へと区分化されなくてもよいことを理解すべきである。キャッシュ１２０，１２５，１３０，１３５は、修正された（又は「ダーティな(dirty)」）キャッシュラインを主メモリ１１０へ書き戻すこと及びキャッシュ１２０，１２５，１３０，１３５内の他のラインを無効にすることによってフラッシュされ(flushed)得る。キャッシュをフラッシュすることは、リセット（ＲＥＳＥＴ）又は書き戻し無効化（ＷＢＩＮＶＤ）命令等の、ＣＰＵ１０５によって実行される幾つかの命令のために要求されることがある。
【００２０】
プロセッサベースのシステムは、情報をレジスタ等のメモリロケーション内に投入する（又は記憶する）ストア(store)と、メモリロケーションからの情報を読むロード(load)という、２つの基本メモリアクセス命令を利用する。ＣＰＵコア１１５は、ロード及びストア等の命令を用いて形成されるプログラムを実行することができる。図示される実施形態においては、プログラムは主メモリ１１０内に記憶され、また命令は、プログラムが正確に動作するように命令の実行のための論理的な順序を示すプログラム順序で維持される。例えば主メモリ１１０は、ストアＳ１，Ｓ２及びロードＬ１をプログラム順序で含むプログラム１４０のための命令を記憶していてよい。本開示の利益を享受する当業者であれば、プログラム１４０はまた、プログラム１４０のプログラム順序において、より早く又はより遅く実行され得る他の命令を含んでいてもよいことを理解すべきである。
【００２１】
ＣＰＵコア１１５の図示される実施形態は、プログラム命令がＣＰＵコア１１５によって実行され得るように当該プログラム命令を選択すると共にデコードするデコーダ１４５を含む。図示される実施形態においては、ＣＰＵコア１１５は、関連するプログラムにおける命令のプログラム順序とは異なる順序で命令を実行することができるアウトオブオーダー(out-of-order)プロセッサである。例えばデコーダ１４５は、ロードＬ１がストアＳ１，Ｓ２よりも前に採られることに起因して、プログラム１４０のプログラム順序とは異なる順序Ｌ１，Ｓ１，Ｓ２でプログラム１４０から命令を選択及び／又はデコードすることがある。デコーダ１４５は、デコードされた命令をロード／ストアユニット１５０へと発送し、送信し又は提供することができる。図示される実施形態においては、ロード／ストアユニット１５０は、ストア及び関連するデータを保持するために使用される１つ以上のストア及び／又はロードキュー(store and/or load queues)１５５，１６５を実装している。１つの実施形態においては、ロード／ストアユニット１５０はまた、システム１００内の他のメモリ要素の動作をエミュレート又はイミテートする(emulate or imitate)ことができるエミュレートされたメモリ（Ｅ−ＭＥＭ）１６５を実装していてもよい。
【００２２】
図示された実施形態に示されるストアキュー１５５は、ストア及び関連データを保持するために使用される。各ストアのためのデータロケーションは線形アドレスによって識別され、線形アドレスは、主メモリ１１０及び／又はキャッシュ１２０，１２５，１３０，１３５の１つからデータがアクセスされ得るように、ＣＰＵコア１１５によって物理アドレスに変換されてよい。従って、ＣＰＵコア１１５は、線形アドレスを物理アドレスに変換するために用いられる情報を保持するトランスレーションルックアサイドバッファ(translation look aside buffer)（ＴＬＢ）１７０に電子的に且つ／又は通信可能に接続されていてよい。ストア（Ｓ１又はＳ２等）が採られる場合、ストアは、ＴＬＢ１７０及び／又はストアによって使用されるデータのためのデータキャッシュ１２０，１２５，１３０，１３５をチェックする。ストアは、次いでストアキュー１５５内に配置されてデータを待つ。図示された実施形態に示されるロードキュー１６０は、ロード及び関連データを保持するために使用される。ロードデータも線形アドレスによって識別されてよく、従ってＣＰＵコア１１５は、ＴＬＢ１７０内に記憶される情報を用いて、ロードデータのための線形アドレスを物理アドレスに変換してよい。図示される実施形態においては、あるロード（Ｌ１等）が採られるとき、そのロードは、ＴＬＢ１７０及び／又はそのロードによって使用されるデータのためのデータキャッシュ１２０，１２５，１３０，１３５をチェックする。ロードは、物理アドレスを使用してアドレスマッチのためにストアキュー１５５をチェックすることもできる。代替的には、アドレスマッチのためにストアキューをチェックするのに線形アドレスを使用してもよい。ストアキュー１５５内のあるアドレス（実施形態に応じて線形又は物理）がロードによって使用されるデータのアドレスにマッチすると、ストアからロードへの転送を用いて、データをストアキュー１５５からロードキュー１６０内のロードに転送することができる。
【００２３】
ＣＰＵコア１１５は他の機能要素を実装していてもよい。図示される実施形態においては、ＣＰＵコア１１５は、実行された命令によって要求される場合に浮動小数点数に対して数学的演算を実行するために使用される浮動小数点ユニット１７５を含む。例えば浮動小数点ユニット１７５は、加算、減算、乗算、除算及び平方根等の演算を実行するように設計されてよい。浮動小数点ユニット１７５の代替的な実施形態は、指数関数や三角関数等の種々の超越関数の計算を実行することもできる。浮動小数点ユニット１７５は、浮動小数点数を保持するために使用される複数の物理レジスタ１８５（１つの物理レジスタのみ識別数字で示される）を含むレジスタ構造１８０を実装している。物理レジスタ１８５は、異なる浮動小数点命令セットに関連する又はそれらによって定義されるアーキテクトされたレジスタへとマッピングされ得る。図示される実施形態においては、物理レジスタ１８５の１つの部分はｘ８７浮動小数点命令セットによって定義されるアーキテクトされたレジスタ（ＭＭＸ）へとマッピングされ得ると共に、物理レジスタ１８５の別の部分はＳＳＥ浮動小数点命令セットによって定義されるアーキテクトされたレジスタ（ＸＭＭ）へとマッピングされ得る。物理レジスタ１８５の残りの部分は、例えばアウトオブオーダー処理環境における複数の命令の並列実行及び／又は同時実行をサポートするために、リネームレジスタ（ＲＥＮ）として使用され得る。
【００２４】
１つの実施形態においては、第１の命令セットによって定義されるアーキテクトされたレジスタの第１のセット（例えばｘ８７浮動小数点命令セットによって定義されるアーキテクトされたレジスタ（ＭＭＸ））は、物理レジスタ１８５の外部（例えばキャッシュ１２０，１２５，１３０，１３５の１つ以上又はエミュレートされたメモリ１６５等）であるメモリロケーションにマッピングされてよい。アーキテクトされたレジスタの第１のセットに対応する物理レジスタ１８５は、次いでリネームレジスタのセットに追加され得る。従って、アーキテクトされたレジスタの幾つかを物理レジスタ１８５の外部メモリロケーションにマッピングすることは、リネームレジスタとしての使用のための追加的なレジスタを解放する(frees up)。追加的なリネームレジスタは、システムが追加的なリネームを使用することを可能にし、追加的なリネームは、追加的な命令が同時に実行され得るようにすることによって、環境の並列性を高めることができる。従って、リネームの数を増やすことによって、アウトオブオーダーウィンドウ(out-of-order window)を増やすと共にシステム１００の性能を向上させることができる。
【００２５】
図２Ａは、アーキテクトされたレジスタ２００（１〜３）の物理レジスタ２０５へのマッピングの第１の例示的な実施形態を概念的に示している。図示される実施形態においては、アーキテクトされたレジスタ２００は、ｘ８７浮動小数点命令セットのために定義されたアーキテクトされたレジスタ２００（１）と、マイクロコードのための一時的レジスタとして割り当てられるアーキテクトされたレジスタ２００（２）と、ＳＳＥ浮動小数点命令セットのために定義されたアーキテクトされたレジスタ２００（３）と、を含む。例えば、アーキテクトされたレジスタ２００は、８つのアーキテクトされたレジスタ２００（１）と、８つのアーキテクトされたレジスタ２００（２）と、３２個のアーキテクトされたレジスタ２００（３）と、を提供するように定義され構成されてよい。図示される実施形態においては、物理レジスタ２０５は、白矢印で示されるように、アーキテクトされたレジスタ２００にマッピングされることができ且つ／又はリネームレジスタとして使用されることができるエントリを含む。例えば物理レジスタ２０５は、アーキテクトされたレジスタ２００に４８個のエントリがマッピングされ得ると共に、他の４０個のエントリがリネームレジスタとして使用され得るように、８８個のエントリを含んでいてよい。しかし、アーキテクトされたレジスタ２００の数及び／又は物理レジスタ２０５の数は設計選択事項であり、また代替的な実施形態において異なっていてよい。
【００２６】
図２Ｂは、アーキテクトされたレジスタの物理レジスタ及びキャッシュへのマッピングの第２の例示的な実施形態を概念的に示す図である。図示される実施形態においては、アーキテクトされたレジスタ２００の一部は、物理レジスタ２０５の外部に位置するメモリ及び／又はレジスタ構造へとマッピングされる。例えば、アーキテクトされたレジスタ２００の一部は、キャッシュ２１０にマッピングされてよい。ここで議論されるように、外部メモリは、プロセッサシステム内に実装された種々のキャッシュや、エミュレートされたメモリ等を含み得る。代替的な実施形態においては、キャッシュ２１０にマッピングされるアーキテクトされたレジスタ２００の一部は、特定の命令セットに関連するアーキテクトされたレジスタ２００の幾つか又は全てを含んでいてよい。例えば、図２Ｂに示されるように、ｘ８７浮動小数点命令セットのために定義されたアーキテクトされたレジスタ２００（１）は、キャッシュ２１０にマッピングされ得る。しかし、本開示の利益を享受する当業者であれば、このマッピングが例示的であるものと意図されていることを理解すべきである。代替的な実施形態においては、異なる命令セットに関連するアーキテクトされたレジスタ２００がキャッシュ２１０にマッピングされ得る。また、特定の命令セットに関連する複数のエントリの全てよりも少ないエントリを含む複数のアーキテクトされたレジスタ２００の１つ以上のうちの一部がキャッシュ２１０にマッピングされ得る。
【００２７】
図２Ａ及び２Ｂに示されるレジスタマッピングの第１及び第２の例示的な実施形態は、アーキテクトされたレジスタ２００、物理レジスタ２０５及びキャッシュ２１０の２つの状態を表し得る。１つの実施形態においては、プロセッサシステムは、例えば異なるレジスタ及び／又は異なる命令セットに関連する予期された使用需要(demand usage)に応じて、これらの状態のいずれか一方に初期化されてよい。また幾つかの実施形態においては、プロセッサシステムは、これら２つの状態間を動的に遷移してよい。例えばシステムは、アーキテクトされたレジスタ２００（１）に関連するｘ８７命令セットのための使用需要が小さいと予想される場合には、追加的なリネームレジスタが利用可能になるように、図２Ｂに示される状態に初期化されてよい。しかし、ｘ８７浮動小数点命令のための使用需要が増大したとプロセッサシステムが決定すると、アーキテクトされたレジスタ２００のマッピングは、システムが図２Ａに示される状態にシフトするように変化させられ得る。
【００２８】
本開示の利益を享受する当業者であれば、図２Ａ及び２Ｂに示されるレジスタ状態のこの特定のセット及び状態遷移は例示的であるものと意図されていることを理解すべきである。代替的な実施形態においては、アーキテクトされたレジスタ２００、物理レジスタ２０５及びキャッシュ２１０の間での他のマッピングを表す状態が用いられ得るし、またこれらの状態間を遷移するための他の基準が定義され得る。例えば、アーキテクトされたレジスタ２００から物理レジスタ２０５及び／又はキャッシュ２１０への図２Ａ及び２Ｂに示されるマッピングは、相対的に順序付けられ(relatively ordered)、またシーケンシャルなものであってよく且つ／又はブロックベース(block-based)のものであってよい。しかし、代替的な実施形態においては、他のマッピングが用いられてもよい。例えば、アーキテクトされたレジスタ２００内の任意のエントリは、物理レジスタ２０５及び／又はキャッシュ２１０内の任意のエントリにマッピングされてよい。場合によっては、マッピングは、ランダムであってもよく、又は他の基準に基づいていてもよい。
【００２９】
図３は、アーキテクトされたレジスタを物理レジスタにマッピングするための第１の例示的な実施形態に係る方法３００を概念的に示している。図示される実施形態においては、プロセッサシステムが命令を実行しているときに、２つ以上の異なる浮動小数点命令セットに関連するアーキテクトされたレジスタが物理レジスタにマッピングされ、且つ使用されることができるように、物理レジスタが構成される。物理レジスタはまた、リネームレジスタとして使用され得る追加的なエントリを含む。マッピングは、アーキテクトされたレジスタの幾つかが物理レジスタの外部のメモリにマッピングされるように初期化され得る。図示される実施形態においては、アーキテクトされたレジスタの第１のセット（第１の浮動小数点命令セットのために定義された複数のアーキテクトされたレジスタから得られる）は、物理的に且つ／又は論理的に物理レジスタの外部に位置するキャッシュにマッピングされる（３０５）。アーキテクトされたレジスタの第２のセットは、物理レジスタにマッピングされる（３１０）。アーキテクトされたレジスタの第１のセットにマッピングされることが意図されていたがマッピングされなかった物理レジスタは、次いで、物理レジスタによってサポートされるリネームレジスタのセットに加えられ得る（３１５）。
【００３０】
図４は、アーキテクトされたレジスタを物理レジスタにマッピングするための第２の例示的な実施形態に係る方法４００を概念的に示している。図示される実施形態においては、アーキテクトされたレジスタの第１のセットは、物理レジスタの外部のメモリへ既にオフロードされている。例えば、アーキテクトされたレジスタのマッピングは、図３に示される技術の実施形態に従って既に初期化されていてよい。異なる複数の浮動小数点命令セットによって定義される命令のための使用需要がモニタされ得る（４０５）。アーキテクトされたレジスタの第１のセットに関連する第１の命令セットにおける命令のための需要がない、又は使用需要が閾値未満のままである限り（４１０：ＮＯ）、システムは、初期の及び／又は現在のマッピングを維持してよく、また異なる複数の命令セットのための使用需要をモニタし続けてよい（４０５）。
【００３１】
第１の命令セットにおける命令のための使用需要が閾値を超える場合（４１０：ＹＥＳ）、レジスタマッピングは修正され得る。１つの実施形態においては、閾値は、第１の命令セットからの任意の命令を使用することが再マッピングをトリガーし得るように、ゼロに設定されてよい。代替的には、閾値は、再マッピングをトリガーする使用需要のレベルを示す非ゼロの数に設定されてよい。使用需要が閾値よりも大きい場合（４１０：ＹＥＳ）、アーキテクトされたレジスタの第１のセットは、物理レジスタにマッピング又は再マッピングされ得る（４１５）。例えば、第１の命令セットに関連する使用需要は、アーキテクトされたレジスタが外部キャッシュから物理レジスタにマッピングされ戻される（４１５にて）ことを可能にするマイクロコードフォールト等のフォールト(fault)をトリガーしてよい。外部キャッシュ内に記憶されるアーキテクトされたレジスタの内容は、物理レジスタ内の適切なロケーション内へと書き込まれてもよい。アーキテクトされたレジスタの第１のセットに既にマッピング又は再マッピングされた（４１５）物理レジスタは、次いで、物理レジスタによってサポートされるリネームレジスタのセットから除去されてよい（４２０）。浮動小数点ユニット内のＥ−ＭＥＭ等の副レジスタ構造を使用する代替的な実施形態においては、フォールト又はレスト(rest)がトリガーされなくてよい。その代わりに、再マッピング（４１５）は、浮動小数点アーキテクチャによって内部的に殆ど混乱なく(with less disruption)処理されてよい。例えば浮動小数点ユニットは、少数のストール(stalls)を強制して物理レジスタとローカル副レジスタ構造との間で情報を直接的に複製することができる。
【００３２】
図５は、アーキテクトされたレジスタを物理レジスタにマッピングするための第３の例示的な実施形態に係る方法５００を概念的に示す図である。第３の例示的な実施形態に係る方法５００は、図４に示される第２の例示的な実施形態に係る方法４００に対して、独立して、併せて、同時に、且つ／又は追加的に用いられてよい。第３の例示的な実施形態においては、２つの異なる浮動小数点命令セットのためのアーキテクトされたレジスタが既に物理レジスタにマッピングされている。例えば、アーキテクトされたレジスタは、図３に示される技術の実施形態に従って既に初期化されていてよく、次いで図４に示されるように使用需要の変化に応答して物理レジスタに再マッピングされてよい。しかし、アーキテクトされたレジスタの物理レジスタへのマッピングは、図４において論じられた状態に対応している必要はなく、またシステムは、方法５００の実施形態を利用することができる状態に到達するために図３及び４において説明されたルートに追随したものである必要はない。代替的な実施形態においては、アーキテクトされたレジスタの物理レジスタへの特定のマッピングにかかわらず、方法５００が用いられてよい。
【００３３】
異なる複数の浮動小数点命令セットによって定義される命令のための使用需要がモニタされ得る（５０５）。アーキテクトされたレジスタの第１のセットに関連する第１の命令セットにおける命令のための使用需要が閾値を超えたままである限り（５１０：ＮＯ）、システムは、現在のマッピングを維持してよく、また異なる複数の命令セットのための使用需要をモニタし続けてよい（５０５）。１つの実施形態においては、閾値は、使用需要がゼロに落ちたときに再マッピングがトリガーされるように、ゼロに設定されてよい。代替的には、閾値は、再マッピングをトリガーする使用需要のレベルを示す非ゼロの数に設定されてよい。更に別の代替的な実施形態においては、再マッピングは、選択された期間又は選択された数のサイクルの間、使用需要が閾値を下回っていた時点で、トリガーされ得る。例えば、選択された数のクロックサイクル（例えば１０Ｋサイクル）が経過し且つｘ８７命令セットに割り当てられたレジスタ又はＳＳＥ命令セットに割り当てられたレジスタのいずれかが使用中でない場合、フォールトが強制されてよく、現在使用中でない種類のレジスタが保存されてよく、そして処理が継続してよい。しかし、浮動小数点ユニットがいかなる命令も実行中でない場合には、性能トレードオフがないので、保存を強制する必要はないであろう。
【００３４】
使用需要が（おそらく、選択された時間間隔に対して）閾値を下回ると（５１０：ＹＥＳ）、アーキテクトされたレジスタの第１のセットは、キャッシュ等の物理レジスタ外部のメモリにマッピングされ得る（５１５）。再マッピングされた物理レジスタ内に記憶される情報はまた、物理レジスタからマッピングによって示されるキャッシュエントリへと複製され又は書き込まれてよい（５１５）。キャッシュされた第１のセットに関連する物理レジスタは、次いで、セットされた利用可能なリネームレジスタに追加され得る（５２０）。従って、使用中でない（又は比較的低い使用需要で使用中の）命令セットのために、アーキテクトされたレジスタを再マッピングする（５１５）ことによって、利用可能なリネームレジスタの数を増やすことができ、結果として、システムに対する最終的な性能向上をもたらすことができる。例えば、アウトオブオーダー実行を行うことができるプロセッサに対するアウトオブオーダーウィンドウは、利用可能なリネームレジスタの数が増える場合に増大され得る。
【００３５】
ここに説明される浮動小数点レジスタキャッシングをサポートするプロセッサシステム（プロセッサシステム１００等）の実施形態は、種々のプロセッサ設計に従う半導体製造設備において製造され得る。１つの実施形態においては、プロセッサ設計は、コンピュータ可読媒体に記憶されるコードとして表現され得る。プロセッサ設計を定義し且つ／又は表現するために用いられ得る例示的なコードは、ＨＤＬ、ベリログ(Verilog)等を含んでいてよい。コードは、技術者によって書かれてよく、他の処理デバイスによって合成されてよく、そしてプロセッサ設計の中間的表現、例えばネットリスト(netlists)、ＧＤＳＩＩデータ等を生成するために用いられてよい。中間的表現は、コンピュータ可読媒体に記憶されてよく、また半導体製造設備において実行される生産・製造プロセスを構成し制御するために用いられてよい。半導体製造設備は、トランジスタ及び他の回路を半導体基板上に形成するために用いられる堆積、フォトリソグラフィ、エッチング、研磨／平坦化、計測及び他のプロセスを行うための処理ツールを含んでいてよい。処理ツールは、例えばＧＤＳＩＩデータから生成されるマスクワークの使用を通して、中間的表現を用いて構成され得るし、また動作させられ得る。
【００３６】
開示される主題及び対応する詳細な説明の一部は、ソフトウェア、又はコンピュータメモリ内のデータビットに対する動作のアルゴリズム及び記号的表現(symbolic representations)を単位として提示される。これらの説明及び表現は、それによって当業者が自らの仕事の内容を他の当業者に効果的に伝達するものである。ここで用いられる用語としての、また一般的に用いられるものとしてのアルゴリズムは、所望の結果を導き出す複数のステップの首尾一貫したシーケンスとして考えられるものである。これらのステップは、物理量の物理的な操作を必要とするものである。必須ではないが、通常、これらの量は、記憶され、転送され、結合され、比較され又は操作されることが可能な、光学的、電気的又は磁気的な信号の形態をとる。これらの信号をビット、値、要素、シンボル、キャラクター、ターム、数字等として参照することは、主として共通使用を理由として多くの場合に便利であることが分かっている。
【００３７】
しかし、これらの全ての用語及び類似の用語は、適切な物理量に関連するものであり且つ単にこれらの量に適用される便利な標識であることを心に留めておくべきである。特に別段の記載がない限り、又は議論から明らかな限り、「処理(processing)」又は「コンピューティング(computing)」又は「計算(calculating)」又は「決定(determining)」又は「表示(displaying)」等の用語は、コンピュータシステムのレジスタ及びメモリ内での物理的、電子的な量として表されるデータを、コンピュータシステムのメモリ若しくはレジスタ又はそのような情報を記憶し、伝送し若しくは表示する他のデバイス内での物理的な量として同様に表される他のデータへと処理し及び変形するコンピュータシステム又は同様の電子的コンピューティングデバイスの動作及び処理を参照する。
【００３８】
また、ソフトウェア実装に係る開示される主題の態様は、典型的には、プログラム記憶媒体の何らかの形態でエンコードされ、又は何らかの種類の伝送媒体を介して実施される。プログラム記憶媒体は、磁気的（例えばフロッピー（登録商標）ディスク又はハードドライブ）であってよく、又は光学的（例えばコンパクトディスクリードオンリーメモリ又はＣＤＲＯＭ）であってよく、またリードオンリー又はランダムアクセスであってよい。同様に、伝送媒体は、ツイストペア線、同軸ケーブル、光ファイバ又は当該分野で知られる何らかの他の適切な伝送媒体であってよい。開示される主題は、所与の実施のこれらの態様によって何ら限定されない。
【００３９】
開示される主題は、ここでの教示の利益を享受する当業者には明らかな方法であって、実施形態とは異なるが均等な方法において修正及び実施されてよく、従って上記開示された特定の実施形態は例示のみを目的としている。また、特許請求の範囲に記述されたもの以外の、ここに示された構成又は設計の詳細に限定することを意図していない。従って、上記開示された特定の実施形態が変更又は修正されてもよく、また全てのそのような変形は、開示される主題の範囲及び精神内にあるとみなされることが明らかである。よって、ここに求められる保護は特許請求の範囲に記載されている。
【図１】
0005703382.tif 000002
【図２Ａ】
0005703382.tif 000003
【図２Ｂ】
0005703382.tif 000004
【図３】
0005703382.tif 000005
【図４】
0005703382.tif 000006
【図５】
0005703382.tif 000007