(58)【調査した分野】(Int.Cl.,DB名)
前記動作は、少なくとも1つのuopを導入することと、前記状態を変更することと、前記レジスタの最下位ビット(LSB)を物理レジスタのLSBに揃えることと、のうち少なくとも1つを含む、請求項1の方法。
履歴を生成するために、前記動作及び少なくとも1つの次の動作と、前記レジスタのパッキング及び前記レジスタの少なくとも1つの次のパッキングと、前記状態及び前記レジスタの少なくとも1つの次の状態と、のうち少なくとも1つを追跡することと、
次の動作が必要であるか否か、又は、どのような次の動作が必要であるかを、前記履歴に基づいて決定することと、をさらに含む、請求項1の方法。
前記状態は、前記パックされたレジスタが単一の物理レジスタに記憶されているか否かと、前記パックされたレジスタが2つ以上の物理レジスタに記憶されているか否かと、前記記憶されたパックされたレジスタを少なくとも1つの物理レジスタに配置する指示と、のうち少なくとも1つを示す、請求項1の方法。
複数の論理レジスタ名(LRN)の各々は、1つ以上の前記パックされたレジスタに関連し、各LRNは、物理レジスタに関連する物理レジスタ名(PRN)にマッピングされる、請求項1の方法。
前記動作は、少なくとも1つのuopを導入することと、前記状態を変更することと、前記レジスタの最下位ビット(LSB)を物理レジスタのLSBに揃えることと、のうち少なくとも1つを含む、請求項10の装置。
履歴を生成するために、前記動作及び少なくとも1つの次の動作と、前記レジスタのパッキング及び前記レジスタの少なくとも1つの次のパッキングと、前記状態及び前記レジスタの少なくとも1つの次の状態と、のうち少なくとも1つを追跡する回路と、
次の動作が必要であるか否か、又は、どのような次の動作が必要であるかを、前記履歴に基づいて決定する回路と、をさらに備える、請求項10の装置。
前記状態は、前記パックされたレジスタが単一の物理レジスタに記憶されているか否かと、前記パックされたレジスタが2つ以上の物理レジスタに記憶されているか否かと、前記記憶されたパックされたレジスタを少なくとも1つの物理レジスタに配置する指示と、のうち少なくとも1つを示す、請求項10の装置。
【発明を実施するための形態】
【0011】
図2は、1つ以上の開示された実施形態を実装し得る例示的な装置100のブロック図である。装置100は、例えば、コンピュータ、ゲーミングデバイス、ハンドヘルド装置、セットトップボックス、テレビ受信機、携帯電話又はタブレット型コンピュータで構成し得る。装置100は、プロセッサ102と、メモリ104と、記憶装置106と、1つ以上の入力装置108と、1つ以上の出力装置110と、を備えている。さらに、装置100は、オプションとして、入力ドライバ112及び出力ドライバ114を備えてもよい。装置100が、
図1に示されていない他のコンポーネントを備え得ることが理解されるであろう。
【0012】
プロセッサ102は、中央処理装置(CPU)、グラフィック処理装置(GPU)、同一のチップに配置されたCPU及びGPU、又は、1つ以上のプロセッサコアを含んでもよい。各プロセッサコアは、CPU又はGPUであってもよい。メモリ104は、同一のチップ上にプロセッサ102として配置されてもよいし、プロセッサ102から離れて配置されてもよい。メモリ104は、揮発性メモリ又は不揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM又はキャッシュ)を含んでもよい。メモリ104は、1つ以上の単一の装置として実装されてもよいし、複数の単一のメモリ(図示省略)を含んでもよいことに留意されたい。例えば、装置100は、この明細書でさらに説明するように、CPUメモリ及びGPUメモリ(図示省略)の両方を含んでもよい。
【0013】
記憶装置106は、固定型の記憶装置又は可搬型の記憶装置(例えば、ハードディスク装置、固定型のドライブ、光ディスク又はフラッシュドライブ)を含んでもよい。入力装置108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロホン、加速度計、ジャイロスコープ、生物測定スキャナ又はネットワーク接続装置(例えば、無線IEEE802信号を送信及び/又は受信するための無線ローカルエリアネットワークカード)を含んでもよい。出力装置110は、ディスプレイ、スピーカ、プリンタ、触角フィードバック装置、1つ以上の発光体、アンテナ又はネットワーク接続装置(例えば、無線IEEE802信号を送信及び/又は受信するための無線ローカルエリアネットワークカード)を含んでもよい。
【0014】
入力ドライバ112は、プロセッサ102及び入力装置108と通信し、入力装置108からの入力をプロセッサ102が受信できるようにする。出力ドライバ114は、プロセッサ102及び出力装置110と通信し、プロセッサ102が出力装置110に出力を送信できるようにする。入力ドライバ112及び出力ドライバ114は、オプションの要素であること、及び、装置100は、入力ドライバ112及び出力ドライバ114を備えていない場合でも同様の方法で動作することに留意されたい。
【0015】
説明を簡潔にするため、集積回路設計、キャッシング、メモリ操作、メモリコントローラ、及び、システムの他の機能的態様(及びシステムの要素の個々の操作)に関する従来技術は、この明細書では詳細に記載されていない。さらに、この明細書に含まれる様々な図面に示された接続線は、例示の機能的関係及び/又は様々な要素間の物理的結合を表わすことを意味している。多くの代替若しくは追加の機能的関係又は物理的結合は、本発明の実施形態において表し得ることに留意されたい。さらに、特定の専門用語は、参照のみの目的のために下記の説明において使用することができ、したがって限定する意図ではない。構成を参照する用語「第1」、「第2」及び他の数値用語は、文脈によって明確に指示されない限り、連続又は順序を意味するものではない。
【0016】
下記の説明は、互いに「接続」又は「結合」されている要素、ノード、機能に言及する。この明細書で使用されているように、明確に説明されていない限り、「接続」は、1つの要素/ノード/機能が別の要素/ノード/機能に直接結合され(又は直接通信する)ことを意味し、必ずしも機械的に接続されている訳ではない。同様に、明確に説明されていない限り、「結合」は、1つの要素/ノード/機能が別の要素/ノード/機能に直接結合又は間接結合され(又は直接通信若しくは間接通信する)ことを意味し、必ずしも機械的に接続されている訳ではない。したがって、その特徴は要素の1つの例示配列を示してもよいが、追加の介在する要素、装置、機能、又は、要素が説明された本発明の実施形態において提示されてもよい。
【0017】
少なくとも1つの例示の実施形態が下記の説明において提示されるが、非常に多くのバリエーションが存在することが認められるべきである。この明細書における例示の実施形態又は複数の実施形態は、いかなる場合においても、特許が請求された範囲、応用性又は構成を限定するものではない。むしろ、上記の詳細な説明は、記載された実施形態又は複数の実施形態を実装するための指針を当業者に提供するであろう。特許請求によって定義された範囲から逸脱することなく、様々な変更が要素の機能及び配列においてなされ得る。
【0018】
物理レジスタにおいて
図1A及び
図1Bに関して示されるように、高密度のパックされたレジスタを記憶することにより、いくつかのプロセッサアーキテクチャにおいて問題となるエイリアシング効果が発生し得る。例えば、異なるサイズの高密度のパックされたアーキテクチャレジスタが全て同じサイズを有する物理レジスタにマッピングされた場合には、この明細書でさらに説明するように、マッピングを訂正するために採用される追加の測定がない限り、書込まれ又は読込まれる不適正なデータにエイリアシング効果が生じる結果となり得る。さらに、プロセッサアーキテクチャのマイクロ操作(uop)のストリームは、全てのアーキテクチャレジスタが独立して読出し可能且つ書込み可能であるように要求できる。例えば、S3への書込みに続くQ0の読出しのために、S3への書込みの結果を含む値を戻すことが必要となり得る。また、プロセッサアーキテクチャは、全ての操作の最下位ビット(LSB)がデータパスのLSBと揃うことを要求し得る。したがって、(
図1A及び
図1Bの例におけるQ0のビット96と揃った)S3を読出すために、物理レジスタに記憶されたS3データが未だそのように揃っていない場合には、S3データを先ずビット0に揃えることが必要になり得る。
【0019】
このような問題を解決するために、全幅のアーキテクチャレジスタ(すなわち、4倍)内にパックされた全てのレジスタのレジスタ状態が記憶され得る。全幅のアーキテクチャレジスタは、全体的にパックされたレジスタとして4倍が記憶されているかどうか、又は、4倍が異なる物理レジスタに個別に(又は同じ物理レジスタ若しくは両方のレジスタに順不同に)記憶されている2つのレジスタ(
図1A及び
図1Bの例においてDレジスタ若しくは64ビットレジスタ)、4つのレジスタ(
図1A及び
図1Bの例においてSレジスタ若しくは32ビットレジスタ)又は3つのレジスタ(例えば、1つのDレジスタ及び2つのSレジスタ)に分割されているかどうかを表す。
【0020】
命令が、全幅のアーキテクチャレジスタ又はその中にパックされた1つのアーキテクチャレジスタにアクセスしようとする場合には、その状態をチェックすることができ、所望のレジスタが単一の物理レジスタから直接アクセスできるか否か、データが異なる物理レジスタから最初にリアセンブルされるべきであるか否か、又は、物理レジスタのデータが再編成されるべきであるか否かを、例えば、物理レジスタに記憶されたデータの一部を、異なるビット位置における新たな物理レジスタに書込むことによって判断する。例えば、命令が、全幅のアーキテクチャレジスタ又はその中にパックされた1つのアーキテクチャレジスタを読取ろうとする場合には、その状態をチェックすることができ、所望のレジスタが単一の物理レジスタから直接アクセスできるか否か、データが異なる物理レジスタから最初にリアセンブルされるべきであるか否か、又は、物理レジスタのデータが再編成されるべきであるか否かを、例えば、物理レジスタに記憶されたデータの一部を、異なるビット位置における新たな物理レジスタに書込むことによって判断する。また、状態は、他のタイプのアクセス(例えば、書込み等)のためにチェックすることができる。
【0021】
高密度のパックされたレジスタを独立して読出し且つ書込むことが望ましいプロセッサアーキテクチャにおいては、パックされたレジスタに対応するより大きなレジスタが書込まれた後により小さなレジスタに書き込むことは、より大きなパックされたレジスタのために記憶されたデータの一部だけしか確認できない。したがって、データの残りを保持することが必要になり得る。例えば、Q0が書込まれ、続いてS0が書込まれた(新たな物理レジスタに対応する新たな物理レジスタ名(PRN)にマッピングされた)場合には、Q0を記憶している物理レジスタのS1、S2及びS3に対するデータは、依然として有効であり且つ保持されなければならず、すなわち、Q0を記憶している物理レジスタ全体を上書きすることによっては廃棄されない。パックされたレジスタがどのように物理的に記憶されるかを表わす4倍レジスタQ0の状態を記憶することにより、パックされたレジスタの各々にアクセスすることが可能になる。この実施例において、いくつかのパックされたレジスタは、物理レジスタから直接アクセスすることができ、いくつかのパックされえたレジスタは、この明細書でさらに説明するように、再編成される物理レジスタに記憶されたビットを新たな物理レジスタにできる限り移動することによって、要求することができる。
【0022】
リネーミングを容易にするため、論理レジスタ名(LRN)が各アーキテクチャレジスタに割り当てられ得る。次に、マッピングは、マッピングが書き込まれる物理レジスタのLRNとPRNとの間に記憶される。LRNとPRNとの間のマッピングを含むテーブルをレジスタマップと称することができる。
【0023】
新たな物理レジスタは、書込まれる毎に、(例えば、リネーミングを容易にするために)アーキテクチャレジスタに対して割り当てることができる。この物理レジスタは、データがもはや有効でない場合、その後「廃棄」され「フリーリスト」に戻される(すなわち、読取りのために無効にされ得るとともに、新たなアーキテクチャレジスタにマッピングするために使用することができる)。
【0024】
表1は、4倍でエイリアス又は「パック」された異なるアーキテクチャレジスタが以前に書込まれた後に、所定のサイズの所定のアーキテクチャレジスタが命令によって読込まれ又は書込まれる場合に生じ得る例示的な問題を記述する表である。表1は、
図2及び3のQ0によってパックされたアーキテクチャレジスタに関して記述されている。表は、4倍内にパックされたアーキテクチャレジスタQ、D又はSが、当該4倍内にパックされた同一又は異なるレジスタQ、D若しくはSが書き込まれた後に読込まれ又は書込まれる場合に生じ得る問題を記述している。
【表1】
【0025】
上述したように、かかる問題を解決するために、各4倍のレジスタ状態を記憶することができる。その状態を追跡するために、各4倍は複数のLRNに対応することができ、各LRNは物理レジスタに独立してマッピング可能である。独立してマッピング可能なLRNの各々は、1つ以上のパックされたアーキテクチャレジスタを表すことができる。
図1A及び
図1Bの例においては、各アーキテクチャレジスタは、4つのLRNを有することができる。
【0026】
第1のLRNは、全Qレジスタ、下位Dレジスタ(これはQレジスタに揃っている)及び最下位Sレジスタ(これはQレジスタ及び下位Dレジスタに揃っている)の何れかを表すことができる。
図1Aの例において、これらのレジスタは、Q0、D0及びS0に対応し、第1のLRNをQ0/D0/S0と称することができる。第2のLRNは、第2のSレジスタのみを表すことができる。
図1Aの例において、これはS1に対応し、第2のLRNをS1と称することができる。第3のLRNは、上位Dレジスタ及び第3のSレジスタをともに表すことができる。
図1Aの例において、これらはD1及びS2に対応し、それらは揃っており、第3のLRNをD1/S2と称することができる。第4のLRNは、第4のSレジスタのみを表すことができる。
図1Aの例において、これはS3に対応し、第4のLRNをS3と称することができる。
【0027】
LRNの例示的なセット、例えば、
図1BのアーキテクチャレジスタQ0〜Q3(及びこれらに対応するパックされたD及びSレジスタ)は、下記の表2に示される。
【表2】
【0028】
各LRNは、独立してPRNにマッピングされ得る。PRNに対するLRNのマッピングを示すレジスタマップの例は、下記の表3に示される。
【表3】
【0029】
LRN−PRNマッピングの状態は、所定のLRNをアクセスすることにより読取られるデータが有効であることが確かではないかもしれないので、上記したエイリアシング問題を処理するために追跡しなければならない。各LRN−PRNマッピングの状態は、4倍毎に追跡することができる(すなわち、その状態は互いにエイリアスされ又はパックされるLRNの全てに関係する)。4倍は、他のレジスタが内部でパックされるQレジスタの名前によって参照することができる。例えば、Q0に関する状態は、LRNQ0/D0/S0、S1、D1/S2及びS3とPRNsとの間のLRN−PRNマッピングの状態を追跡することができる。したがって、例えば(この明細書においてさらに説明するように)Q0が状態D0/D1である場合には、その状態がこれらのアーキテクチャレジスタに対するLRNの全てに関係するので、アーキテクチャレジスタQ0、D0、D1、S0、S1、S2又はS3に対する全ての読取り又は書込みが復号期間中にこの状態を考慮する必要があることを、その状態が示すことができる。表4は、LRN−PRNマッピングに対する8つの例示的なレジスタ状態を示す表である。
【表4】
【0030】
マッピング状態の追跡を維持するために、各4倍のためにビットを記憶することができる。これらのビットは、復号装置(DE)又はプロセッサの任意の他の適切な装置によって追跡され及び/又は記憶され得る。例えば、3ビットは、各4倍におけるDE内の装置によって記憶され且つ追跡されて、8つの状態を追跡することができる。8つの状態を使用する例では、表5に記載されたビット符号化の例を用いて追跡することができる。
【表5】
【0031】
表4及び表5に記載された状態は例示であることに留意されたい。例えば、4倍、D0/D1及びS0/S1/S2/S3の状態は、エイリアシング問題を処理するために重要であり得る。しかしながら、他の状態、すなわち、Q/D1、D0/D1U、D0/S2/S3及びS0/S1/D1は、最適化の目的(例えば、これらの追加状態が追跡される場合に、物理レジスタにおけるデータに要求されるより少ない操作)を実行するために使用することができる。その方法は、不特定多数の最適化のために、例えば、状態の数を増加することにより、又は、異なる状態を用いることにより、さらに拡張することができることが留意され且つ理解されるであろう。そのような追加の又は異なる状態は、Q0/D1/S3、Q0/S3、Q0/S1、D0/S1/D1、D0/S1/S2/S3、D0/S1/S2/S3、D0/S1/D1/S3、S0/S1U/D1、D0/S2/S3U、S0/S1U/S2/S3、S0/S1/S2/S3U、S0/S1U/S2/S3U等を含むことができ、それらはこの明細書において説明される原理から導かれる。
【0032】
物理レジスタに記憶されたデータを操作しなければならず、(LRN−PRNマッピング状態及びエイリアシングレジスタに対するアクセスのタイプ及びサイズに基づいて)命令を実行する際にデータの有効性を維持することを決定する場合には、追加の「フィックスアップ(fixup)」マイクロ操作(uop)をuopストリーム又は命令に対して復号化されたuopsに先行するバッファの中に導入することによって、物理レジスタのデータを操作(例えば、物理レジスタの部分から異なる物理レジスタの部分に移動)することができる。フィックスアップuopsは、DE又はプロセッサの任意の他の適切な構成によって決定及び/又は導入することができる。いくつかのケースにおいて、アーキテクチャレジスタの読取り又は書込みを有効にするために、この明細書においてさらに説明するように、他の選択肢としてマッピング状態を変更することも必要となり得る。
【0033】
フィックスアップuopsは、命令に対するuopsの中に又は先行して導入することができ、様々な構成の中にレジスタをパックし及び/又はパック解除する。これらのuops又はその組み合わせは、表6に記載された1つ以上の例のフィックスアップuopsを含むことができる。これらのuopsの名称は任意であることに留意されたい。物理レジスタのビットが128ビットの4倍に関して記載されているが、他のアーキテクチャに対応するように変更して他のビット幅が使用できることも留意されたい。
【表6】
【0034】
これらのフィックスアップuposの1つ以上を導入すること、及び/又は、4倍の状態を変更することが必要であるか否かを決定するため、プロセッサの適切な部分は、命令のオペランドアーキテクチャレジスタの中及びリネームされた他の命令の中の任意のエイリアシングをチェックし、任意のかかるレジスタの状態をチェックし、その状態に基づいてかかるレジスタの有効な読取り又は書込みのために任意のuopsが命令に対して導入されるべきか否かを決定し、任意のレジスタ状態が変更されるべきか否かを決定する。これらの決定は、例えば、復号装置又は復号装置からの復号された命令のオペランドレジスタに関する情報を受信するエイリアシング論理(logic)によって行うことができる。しかしながら、これらの決定は、任意の適切な構成によって行われ得ることに留意されたい。
【0035】
表7〜13は、状態遷移及び4倍の現在の状態(すなわち、アーキテクチャレジスタがその中でパックされる4倍におけるLRN−PRNパッキングの状態)に基づいてアーキテクチャレジスタに対する読込み又は書込みのために必要となり得るuop導入の例を示す表である。状態名は、Q0について表されるが、この明細書においてさらに説明するように、任意のパックされたアーキテクチャレジスタQ0〜Q15の変化に関係する。
【表7】
【表8】
【表9】
【表10】
【表11】
【表12】
【表13】
【0036】
各4倍における状態を追跡するため、レジスタ状態テーブルを管理することができる。表14は、アーキテクチャレジスタQ0〜Q3によってパックされたレジスタの状態の例を表すレジスタ状態テーブルを示す表である。
【表14】
【0037】
図3は、上記したように、命令を復号化し、エイリアシング効果を処理する回路300の例を示すブロック図である。回路300は、命令抽出論理回路305と、命令復号装置310,315,320と、エイリアシング及び状態追跡論理回路325と、uopバッファ330と、を備えている。回路300は、プロセッサ102(
図2)等のプロセッサの一部であってもよい。これらの装置は、単なる一例であり、いくつかの実施例において適宜に代替又は省略することができることに留意されたい。
【0038】
抽出論理回路305は、命令のストリームを受信し、ストリームからN個の命令(本例では浮動小数点命令)を抽出し、N個の復号装置にその命令をロードする。3つの復号装置310,315,320が示されているが、復号装置及び命令の数は、任意に増加又は減少することができることに留意されたい。
【0039】
抽出論理回路305は、命令取得装置(図示せず)から又は任意の他の適切な入力元から命令のストリームを受信することができる。次に、抽出論理回路305は、抽出された命令を復号装置310,315,320にロードすることができる。3つの抽出された命令を復号化するために3つの復号装置のみが示されているが、基本的には、任意の数の復号装置が、任意の数の抽出された命令を復号化するために使用することができる。
【0040】
復号装置310は、命令INST1を実行するために1つ以上のuopsに復号化して、復号化されたuopsをuopバッファ330にロードする。いくつかの実施例(図示省略)では、uopバッファ330を省略することができ、uopsは、下流の実行装置335にそのまま発送され得ることに留意されたい。また、復号装置310は、INST1のオペランドレジスタに関する情報を論理回路325に送信する。復号装置315は、命令INST2を実行するために1つ以上のuopsに復号化して、復号化されたuopsをuopバッファ330にロードする。また、復号装置315は、INST2のオペランドレジスタに関する情報を論理回路325に送信する。復号装置320は、命令INST3を実行するために1つ以上のuopsに復号化して、復号化されたuopsをuopバッファ330にロードする。また、復号装置320は、INST3のオペランドレジスタに関する情報を論理回路325に送信する。復号装置315,320,325は、3つの命令を同時に復号化することができるが、他の実施例では非同時に復号化することができることに留意されたい。
【0041】
論理回路325は、INST1の各オペランドレジスタに対するLRN−PRNマッピングの状態をチェックして、それが有効であるか否かを決定する。マッピングの状態が無効である場合には、論理回路325は、uopsが導入されるべきであるか否かを決定し、且つ、状態の変更が必要であるか否かを決定する。uopの導入が必要な場合には、論理回路325は、INST1に対する復号化されたuopsに先立って、適切にフィックスアップuopsをuopバッファ330に導入する。上述したように、(図示しない)いくつかの実施例では、uopバッファ330を省略することができ、uopsは、INST1に対する復号化されたuopsに先立ってそのまま導入されて、下流の実行装置335に送出され得ることに留意されたい。状態の変更が必要な場合には、論理回路325は、4倍に対するマッピングの状態を更新する。また、論理回路325は、INST2及びINST3に対して同じタスクを実行する。
【0042】
INST1、INST2及びINST3に対する復号化されたopsの全てがバッファ330にロードされた後、任意の要求されたフィックスアップopsが導入され、状態が要求に応じて更新され、uopバッファ330におけるuopsの待ち行列が、実行のために1つ以上の実行装置335に送出され得る。上述したように、uopバッファを使用しない実施例(図示せず)においては、uopsは、既に下流の実行装置335に送出されている場合がある。
【0043】
図4は、上述したように、命令を復号化する方法の例を示すフロー
図400である。
【0044】
ステップ405において、任意の命令が復号化するのに有効か否かが決定される。命令が復号化するのに有効である場合には、ステップ410において、uopsに復号化される。この決定は復号装置によって行われ、uopsを、
図3に関して説明されたように記憶することができる。
【0045】
ステップ415において、命令の任意のオペランドレジスタが、有効なLRN−PRN状態マッピングのために未だチェックされていないかどうかが決定される。そうである場合には、各レジスタの状態がステップ420においてチェックされる。これらの決定は、
図3に関して説明されたように、オペランドレジスタに関する情報を受信するエイリアシング論理回路によって行われ得る。
【0046】
いくつかの実施例(図示省略)において、LRN−PRN状態マッピングの有効性を、uopsの復号化の前又は同時にチェックすることができる。
【0047】
レジスタ状態が有効でないと決定された場合には、ステップ425において、フィックスアップuopsを導入する必要があるか否かが決定される。この決定は、エイリアシング論理回路によって行われる。フィックスアップuopsを導入する必要があると決定された場合には、ステップ430において、フィックスアップuopsが導入される。フィックスアップuopsは、命令に対する復号化されたuopsに先立って、uop待ち行列に導入され、
図3に関して説明されたように記憶され得る。
【0048】
ステップ425においてuopsを導入することが決定されたか否かに応じて、ステップ435においてLRN−PRNマッピングの状態を変更する必要があるか否かも決定される。そうである場合には、ステップ440において、マッピングが更新される。何れかのイベントにおいて、フローはステップ415に戻る。
【0049】
有効な状態に関してチェックすべきレジスタがもはや存在しない場合には、ステップ445において、復号化され且つ導入されたuopsが、実行のために発送され得る。
【0050】
3つの浮動小数点命令の並行復号化の下記の実施例は、この明細書において説明される基本を示し、
図1〜4に関して説明された構成及び方法を用いて実行することができる。しかしながら、多くの修正及び加工が可能であり得ることに留意されたい。例えば、各4倍におけるLRN−PRNマッピングの初期状態(すなわち、レジスタ状態)は、表15によって示される。この例では、4つの4倍のみが使用されているので、4つの状態のみが示されている。
【表15】
【0051】
LRN−PRNマッピングの初期状態(すなわち、レジスタ状態)は、表16によって示される。
【表16】
【0052】
物理レジスタファイル(PRF)の初期の内容は、表17によって示される。
【表17】
【0053】
この実施例において復号化される3つの例示的な浮動小数点命令は以下の通りである。
INST1:Add Q0=Q1+Q2
INST2:Sub D0=D1−D2
INST3:Mul Q3=Q0×Q1
【0054】
この実施例では、命令は、
図3に示すように、復号装置310,315,320によって並行して復号化される。しかしながら、他の実施例においては、命令は、順次又は順不同に復号化され得ることに留意されたい。
【0055】
復号装置310は、INST1を復号化して、INST1に対するuopsを後の実行に備えて下流のバッファ330に送り込む。また、復号装置310は、情報を論理回路325に送信して、そのオペランドがレジスタQ0、Q1及びQ2であることを通知する。論理回路325は、アーキテクチャレジスタQ0、Q1及びQ2が互いにエイリアスされていないことを検出する。したがって、uopsは、INST1に対するuopsに先立って導入される必要がなく、レジスタ状態が変更される必要はない。
【0056】
復号装置315は、INST2を復号化して、INST1に対するuopsに続いて、INST2に対するuopsを、後の実行に備えて下流のバッファ330に送り込む。また、復号装置315は、情報を論理回路325に送信して、そのオペランドがレジスタD0、D1及びD2であることを通知する。
【0057】
論理回路325は、レジスタD2がQ1によってエイリアスされていることを検出する。Q1は状態Qである。また、論理回路325は、レジスタのD1の読込み及びD0の書込みがQ0によってエイリアシングされていることを検出する。Q0は状態Qである。
【0058】
D2は状態QにおいてQ1から読取ることができる。このことは、D2がQ1の下位の2倍であり、Q1が状態Qである場合にD2の読取りが有効になるからである。したがって、論理回路325は、INST2に対するuopsに先立っていかなるuopsをも導入せず、このエイリアシングに対してレジスタ状態を変更することはない。
【0059】
Q0が状態Qである場合には、D1の読取りは有効ではない。したがって、D1を読取るためには、fkregq2d D1,Q0の導入、及び、QからQ0/D1へのQ0の状態遷移が必要である。したがって、論理回路325は、INST2に対するuopsに先立ってこのuopを待ち行列に導入し、Q0に対する状態ビットを更新して状態Q0/D1に合わせる。このことがなされるのは、D1が上位の倍であり、Q0が状態Qである場合には、D1が物理レジスタのLSBに揃わないからである。
【0060】
導入されたuopのfkregq2d D1,Q0は、Q0を記憶する物理レジスタの上位の2倍を取ることになり(すなわち、上位64ビット−D1に対するデータ)、このデータを新たな物理レジスタの下位の2倍に書込む。D1は、このuopが実行された後に新たな物理レジスタにマッピングされて、D1に対するデータが物理レジスタのLSBに揃うことになるので、有効に読取ることができる。このuopは、そのPRNをフリーリストに戻さず、元のデータが元の物理レジスタに残ることに留意されたい。
【0061】
このパッキング解除の後、(Q0にパックされた全てのアーキテクチャレジスタを表す)Q0の状態は、Q/D1に変更され、4倍状態に対して有効であろう読取りがなおも有効であることを表示するが(すなわち、このデータは元の物理レジスタに今まで通り残るが)、D1の読取りが現在もなお有効であることは表示しない。なぜならば、D1は、新たな物理レジスタにマッピングされるからである。
【0062】
D0は、Q0が状態Q/D1である場合には、いかなるuopsも導入することなく書込まれ得る。しかしながら、書込みの後には、D0は、新たな物理レジスタにマッピングされ、D1は、他の物理レジスタにおいて有効な読取りのためにそのまま使用できる。したがって、Q0は、もはや直接には読み取ることができないので、Q0の状態を、Q/D1からD1/D0に更新しなければならない。このため、論理回路325は、Q0に対する状態ビットを更新して状態D1/D0に合わせる。
【0063】
この点でのレジスタ状態は、表18に反映されている。
【表18】
【0064】
復号装置320は、INST3を復号化して、INST3に対するuopsに続いて、INST2に対するuopsを、後の実行に備えて下流のバッファ330に送り込む。また、復号装置320は、情報を論理回路325に送信して、そのオペランドがレジスタQ3、Q0及びQ1であることを通知する。論理回路325は、レジスタQ0がD0及びD1によってエイリアスされていることを検出する。
【0065】
Q0は状態D0/D1であり、この状態ではQ0を直接読取ることができない。これは、D0及びD1レジスタが、異なる物理レジスタにマッピングされているからである。Q0を読取るためには、uopsを導入することによって状態が変更されなければならない。したがって、論理回路325は、INST3に対するuopsに先立って、2つの連続したuopsを導入する。第1のuop(fkreclaimprn D1)は、D1が再びマッピングされる物理レジスタをフリーリストに置くが、レジスタマップにマッピングされたままにする。これは、第2のuopのための準備の段階である。第2のuop(fkregd2q Q0、D0、D1)は、Q0に対して新たな物理レジスタを割り当て、D0にマッピングされた物理レジスタから新たな物理レジスタの下位の2倍に下位の2倍を書き込み、D1にマッピングされた物理レジスタから新たな物理レジスタの上位の2倍に下位の2倍を書き込む。このことは、新たなレジスタに4倍を「再度組み立てて(reassemble)」、Q0を読取ることを有効にする。したがって、Q0にパックされたレジスタに関する状態は、次にQに変更される。(図示省略した)いくつかの実施例において、fkreclaimprn D1 uopを省略でき、その状態をQ/D1に変更することができ、マッピングされたD1に対するPRNを維持することに留意されたい。fkreclaimprn uopsは、例えば表6に示すように、第2のフィックスアップuop(ここでは、fkrgd2q)によって自動的に実行され得ることに留意されたい。
【0066】
この点でのレジスタ状態は、表19に反映されている。
【表19】
【0067】
命令の復号化、uopsの導入、及び/又は、レジスタ状態の適宜の変更の後の命令uopsの待ち行列は以下の通りである。
1)Add Q0=Q1+Q2に関するuops
2)fkregq2d D1,Q0に関するuop
3)Sub D0=D1−D2に関するuops
4)fkreclaimprn D1に関するuop
5)fkregd2q Q0,D1に関するuop
6)Mul Q3=Q0×Q1に関するuops
【0068】
したがって、命令が復号化されると、フィックスアップuopsが導入され、状態が適宜変更され、uopsは、論理回路325のレジスタマップ論理によって以下のように処理され得る。
【0069】
Add Q0=Q1+Q2に関する復号化されたuop又はuopsがレジスタマップ論理によって処理された場合には、Q0を記憶するための新たなPRN(PRNE)は、Q0にパックされたアーキテクチャレジスタ(すなわち、Q0/D0/S0、S1、D1/S2及びS3)に対するLRNにマッピングされる。この操作も、マッピングを使用してAdd PRNE=PRNB+PRNCに変換される。この操作の後のレジスタマップの状態は、表20に示される。
【表20】
【0070】
fkregq2d D1,Q0に対して導入されたuop又はuopsがレジスタマップ論理によって処理された場合には、D1を記憶するための新たなPRN(PRNF)は、D1にパックされたアーキテクチャレジスタ(すなわち、D1/S2及びS3)に対するLRNにマッピングされる。この操作も、マッピングを使用してfkregq2d PRNF=PRNE[127:64]に変換される。この操作の後のレジスタマップの状態は、表21に示される。
【表21】
【0071】
Sub D0=D1−D2に対して導入されたuop又はuopsがレジスタマップ論理によって処理された場合には、D0を記憶するための新たなPRN(PRNG)は、D0にパックされたアーキテクチャレジスタ(すなわち、Q0/D0/S0及びS1)に対するLRNにマッピングされる。この操作も、マッピングを使用してSub PRNG=PRNF−PRNCに変換される。この操作の後のレジスタマップの状態は、表22に示される。
【表22】
【0072】
fkreclaimprn D1に対して導入されたuop又はuopsがレジスタマップ論理によって処理された場合には、レジスタマップへの変更がなく、その操作は、マッピングを用いてfkreclaimprn PRNFに変換される。
【0073】
fkregd2q Q0,D1に対して導入されたuop又はuopsがレジスタマップ論理によって処理された場合には、Q0を記憶するための新たなPRN(PRNH)は、Q0にパックされたアーキテクチャレジスタ(すなわち、Q0/D0/S0、S1、D1/S2及びS3)に対するLRNにマッピングされる。その操作は、fkregd2q PRNH[127:0]=PRNF[63:0],PRNG[63:0]に変換される。この操作の後のレジスタマップの状態は、表23に示される。
【表23】
【0074】
Mul Q3=Q0×Q1に対して復号化されたuop又はuopsがレジスタマップ論理によって処理された場合には、Q3を記憶するための新たなPRN(PRNI)は、Q3にパックされたアーキテクチャレジスタ(すなわち、Q3/D6/S12、S13、D7/S14及びS15)に対するLRNにマッピングされる。その操作は、マッピングを用いてMul PRNI=PRNH×PRNBに変換される。この操作後のレジスタマップの状態は、表24に示される。
【表24】
【0075】
レジスタマップ論理によって全てのuopsが処理された後、それらは実行装置335によって実行され、下記のPRFファイルに変化する結果となり得る。
【0076】
a.Add PRNE=PRNB+PRNC(Add Q0=Q1+Q2から)。対応するopsが実行された後のPRF状態は、表25に示される。
【表25】
【0077】
b.fkregq2d PRNF=PRNE[127:64](fkregq2d D1,Q0から)。対応するopsが実行された後のPRF状態は、表26に示される。
【表26】
【0078】
c.Sub PRNG=PRNF−PRNB(Sub D0=D1−D2から)。対応するopsが実行された後のPRF状態は、表27に示される。
【表27】
【0079】
d.fkreclaimprn PRNF(fkreclaimprn D1から)。レジスタがフリーリストに戻されるときに、fkreclaimprnが終了するまでPRFへの変更がないが、fkreclaimprnは、その後のuopによって終了されなければならない。したがって、PRF効果が発生するのは、fkregd2qがfkreclaimprnを有するアトミックになった後である。
【0080】
e.fkregd2q PRNH[127:0]=PRNF[63:0],PRNG[63:0](fkregd2q Q0,D1)。対応するopsが実行された後のPRF状態は、表28に示される。
【表28】
【0081】
f.Mul PRNI=PRNH×PRNB(Mul Q3=Q0×Q1から)。対応するopsが実行された後のPRF状態は、表29に示される。
【表29】
【0082】
いくつかの実施例において、特定のレジスタのパッキングは、長時間にわたって追跡されて、命令の復号化を最適化することができる。かかる追跡は、エイリアシング及び状態追跡論理又はプロセッサの他の適切な部分において行うことができ、uopsのパッキング解除を導入する必要性を最小化するために使用することができる。例えば、命令のストリームが特定のレジスタにアクセスする少数の命令を含み、その方法が当該レジスタの多数の使用と競合する場合には、プロセッサは、当該少数の命令を復号化する方法に変更することができる。特に、命令のストリームが特定のパックされたレジスタにアクセスする少数の命令を含み、使用するレジスタサイズが、そのレジスタが通常アクセスされるサイズと競合する場合には、プロセッサは、競合サイズを有するそれらの命令の符号化方法を変更することができる。
【0083】
かかる競合は、ISAの構成の結果として発生し得る。例えば、1つのサイズのロード命令又は記憶命令(例えば、64ビット)のみを含むISAにおいては、他の命令は、異なるサイズ(例えば、128ビット)としてそれらのロード又は記憶の結果を利用することができる。また、かかる競合は、同様の行為を生じる特定の符号化形式のために発生し得る。例えば、特定のプログラムは、1つのサイズ又は1つのサイズセットにデータをロード又は記憶して、ISAがこの方法で制約されない場合であっても、異なるサイズ又はサイズセットとして記憶されたデータに対して操作することができる。
【0084】
かかる場合を解決するため、レジスタのパッキングの履歴を追跡することができる。いくつかの実施例においては、アクセスのサイズを追跡するために、各レジスタに対して1つ以上の計数回路を管理することができる。飽和カウンタは、そのような目的のために使用することができる。例えば、飽和カウンタは、Q0に対するアクセスのために管理することができ、かかるカウンタは、各4倍サイズのアクセス毎にインクリメントされ、且つ、各2倍サイズのアクセス毎にデクリメントされる。閾値ポイントを決定することができるので、プロセッサは、Q0が4倍として又はQ0の2倍としてより頻繁にアクセスされるか否かによって、2つの64ビットのロードuops及び1つの128ビットのuopの何れかを導入することになる。履歴追跡の他の方法が可能であることに留意されたい。
【0085】
例えば、フィックスアップuop導入の履歴が同様に又は代替として追跡され、プロセッサは、この履歴情報を使用して、命令の復号化がより良い実行を様々にもたらし得る飽和を検出することができる。いくつかの実施例においては、復号化される命令のアドレスを、ハッシュアルゴリズムを用いて分析することができ、かかる履歴を、各レジスタに対するメモリに記憶することができる。説明のために、(例えば、128ビットの)Q0が最初に半分にロード(例えば、最初にD0をロード、次にD1をロード)され、その後に4倍のレジスタ(例えば、128ビット)としてアクセスされた場合には、uopsを、ローディングに先立ってQ0を最初にパック解除するために導入することができ、uopも、アクセスに先立ってQ0をパック解除するために導入することができる。しかしながら、特定の命令のストリームが、主に4倍のレジスタ(例えば、128ビット)としてQ0をアクセスし、主に2つの半分にレジスタをロード(例えば、最初にD0をロード、次にD1をロード)する場合には、プロセッサは、命令のストリームに対するuopsの導入を長時間追跡することによって、このことを検出することができる。(例えば、履歴、飽和計数回路、又は、上記した実施例を統計的に使用して)この動作が検出された場合には、2つの64ビットのロードを行うためのuopsを連続したDレジスタに送らずに、プロセッサは、1つの128ビットのロードuopのみを全4倍レジスタに対して送出して、使用に先立つローディング後のQ0のローディング及びパック解除の前に、Q0をパック解除する必要性を除去することができる。かかる検出は、ローディング及び記憶のために必要とされるuopsの正味数を削減することによって、性能を改善する利点を有し得る。この追跡の様々な他の置き換えは、当業者にとって明らかである。
【0086】
下記の例示の最適化は、レジスタマッピングの機能として実行することができる。上述したように、いくつかのアーキテクチャにおいてフィックスされサポートされたロードサイズのみが存在し得る。例えば、ベクターロード命令VLD
*の実施例に対する1つだけのサポートされたロードサイズは64ビットでよい。この場合において、128ビット演算を実行する任意の命令は、前もって2つの64ビット領域にロードされていたデータを使用する必要がある。
【0087】
この場合において、ロードする長さとともに出力先のレジスタの現在のマッピング及び出力先のレジスタの開始番号は、2倍又は4倍としてデータをロードすべきか否かを決定するプロセッサによって使用することができる。命令がレジスタの偶数番号をロードし、最初のレジスタが偶数のレジスタ番号であり、及び、出力先が以前4倍として使用されていたことを現在のマップが示す場合には、データを4倍としてロードすることができる。命令がレジスタの奇数番号をロードし、奇数番号のレジスタから開始し、又は、以前に使用したレジスタが4倍ではなかったことを現在のマッピングが示す場合には、データを2倍としてロードすることができる。
【0088】
同様の最適化は、命令を記憶することにも応用することができる。現在のマッピングによって2倍又は4倍として入力元を記憶することが可能であり、レジスタの番号が偶数又は奇数であるかどうかが記憶され、偶数又は奇数のレジスタから開始するかどうかが記憶される。
【0089】
一般に、データを長くする(すなわち、1つ以上の入力元のレジスタよりも長いアーキテクチャレジスタに書込む)命令は、かかる最適化の余地があり得る。かかる命令の実施例は、2倍のレジスタとして指定された入力元、及び、4倍のレジスタとして指定された出力先の1つ又は両方を有することができる。これらの命令がuopsに復号化される方法によって、それらが4倍として現在パックされている場合、且つ、復号装置がuopsを順に変換できる場合には、入力元をパッキング解除することなく、かかる命令を実行することが可能である。
【0090】
例えば、命令VADDL.S8<Qd>,<Dn>,<Dm>は、加算を実行するためにDn、Dm及び第3のuopにおいてデータを長くする2つのシャッフルuopsに分割することができる。シャッフルuopは、命令のレジスタを例えば上位ビット及び下位ビット(64ビット)の何れかから長くすることができる。特定の実施例において、fkpmovsxbw<出力先><入力元>は、入力元のビット63:0にパックされたデータを長くするために使用することができ、一方、fkpmovsxbwh<出力先><入力元>は、入力元のビット127:64にパックされたデータを長くするために使用することができる。例えば、命令の入力元が、ビット127:64として4倍に現在パックされている奇数のDレジスタである場合には、fkpmovsxbwの代わりにfkpmovsxbwh uopを使用することができ、レジスタが、導入されたuopsによってパック解除される必要がない。レジスタが奇数又は偶数であるかどうか、及び、レジスタが4倍又は2倍としてパックされているかどうかに基づいて、最初の2つのシャッフルopsが変換される場合には、uopsは、下記のようになり得る(レジスタが単一としてパックされていることは仮定しない)。
1)(Dnが偶数であるか又は2倍としてパックされている)場合には、(fkpmovsxbw FT0,Dn)、そうでない場合には(fkpmovsxbwh FT0,Qx) ここで、x=(n−1)/2
2)(Dmが偶数であるか又は2倍としてパックされている)場合には、(fkpmovsxbw FT1,Dm)、そうでない場合には(fkpmovsxbwh FT1,Qy) ここで、y=(m−1)/2
3)fkpaddw Qd,FT0,FT1
【0091】
1つの入力元のみが2倍であるが、他が4倍であり、且つ、出力先が4倍の場合に命令を広げることについても同様に真である。この場合において、上記のop変換は、入力元の2倍に対して実行することができる。
【0092】
浮動小数点の装置及び浮動小数点のレジスタに関して様々な実施形態が説明されてきたが、これらのコンセプトは、エイリアシング効果が発生し得る他の処理装置及びパックされたレジスタにも応用できることに留意されたい。例えば、本明細書に記載されたコンセプトは、
図1A及び
図1Bに示されたものと同様の高密度にパックされた構成において、ISAが浮動小数点レジスタ以外のレジスタを構成する場合に適用することができる。
【0093】
本明細書において提供された方法又はフローチャートは、汎用のコンピュータ又はプロセッサによる実行のために、非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア又はファームウェアにおいて実施することができる。非一時的なコンピュータ可読記憶媒体の例には、読出専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリ装置、内部ハードディスク及び可搬型ディスク等の磁気媒体、光磁気媒体、並びに、CD−ROMディスクやデジタル多機能ディスク(DVDs)等の光媒体が含まれる。
【0094】
(実施形態)
1.物理メモリに記憶されたパックされたレジスタをアクセスする方法であって、パックされたレジスタの状態を記憶することと、パックされたレジスタのレジスタに命令がアクセスする状況において、パックされたレジスタの状態に基づいてレジスタに直接アクセスできるか否かを決定することと、レジスタに直接アクセスできない状況において、レジスタに直接アクセス可能になる動作を行うことと、を含む。
【0095】
2.動作は、少なくとも1つのuopを導入すること、又は、状態を変更することを含む、実施形態1の方法。
【0096】
3.動作は、状態を変更することを含む、上記何れかの実施形態の方法。
【0097】
4.動作は、レジスタの最下位ビット(LSB)を物理レジスタのLSBに揃えることを含む、上記何れかの実施形態の方法。
【0098】
5.アクセスは、読取り操作又は書込み操作を含む、上記何れかの実施形態の方法。
【0099】
6.アクセスは、書込み操作を含む、上記何れかの実施形態の方法。
【0100】
7.パックされたレジスタのビットは、物理メモリの少なくとも1つの物理レジスタに記憶されている、上記何れかの実施形態の方法。
【0101】
8.物理メモリは、物理レジスタファイルを含む、上記何れかの実施形態の方法。
【0102】
9.履歴を生成するために、動作及び次の動作、又は、レジスタのパッキング及びレジスタの次のパッキングを追跡することと、次の動作が必要であるか否か、又は、どのような次の動作が必要であるかを履歴に基づいて決定することと、を含む、上記何れかの実施形態の方法。
【0103】
10.動作は、アクセスの前に、第2の物理レジスタのパックされたレジスタのビットの少なくとも一部を記憶する少なくとも1つのuopを導入することを含む、上記何れかの実施形態の方法。
【0104】
11.レジスタは、導入された少なくとも1つのuopの実行の後に、第2の物理レジスタにて直接アクセス可能である、上記何れかの実施形態の方法。
【0105】
12.レジスタの最下位ビット(LSB)は、導入された少なくとも1つのuopの実行の後に、第2の物理レジスタのLSBに揃えられる、上記何れかの実施形態の方法。
【0106】
13.状態は、パックされたレジスタが単一の物理レジスタ又は2つ以上の物理レジスタに記憶されているか否かを示す、上記何れかの実施形態の方法。
【0107】
14.状態は、記憶されたパックされたレジスタを少なくとも1つの物理レジスタに配置する指示を示す、上記何れかの実施形態の方法。
【0108】
15.パックされたレジスタの各々は物理レジスタにマッピングされる、上記何れかの実施形態の方法。
【0109】
16.複数の論理レジスタ名(LRN)の各々は、1つ以上のパックされたレジスタに関連し、各LRNは、物理レジスタに関連する物理レジスタ名(PRN)にマッピングされる、上記何れかの実施形態の方法。
【0110】
17.状態は、各LRNの有効性を、パックされたレジスタのPRNマッピングに反映する、上記何れかの実施形態の方法。
【0111】
18.レジスタの最下位ビット(LSB)が物理レジスタのLSBに揃っている場合に、レジスタに直接アクセス可能である、上記何れかの実施形態の方法。
【0112】
19.レジスタは、ビットにアクセスする前に物理メモリに記憶されたレジスタのビットを移動することなく命令によってアクセス可能である場合に、直接アクセス可能である、上記何れかの実施形態の方法。
【0113】
20.レジスタは、浮動小数点レジスタである、上記何れかの実施形態の方法。
【0114】
21.命令は、浮動小数点命令である、上記何れかの実施形態の方法。
【0115】
22.導入される少なくとも1つのuopが復号化される少なくとも1つのuopの前に実行されるように、導入される少なくとも1つのuopは、命令の復号化される少なくとも1つのuopに先立って導入される、上記何れかの実施形態の方法。
【0116】
23.導入される少なくとも1つのuopは、2つのuopsを含む、上記何れかの実施形態の方法。
【0117】
24.2つのuopsは、分割できないものとして(アトミックに)実行するように構成されている、上記何れかの実施形態の方法。
【0118】
25.2つのuopsの両方は、状態が更新される前に実行するように構成されている、上記何れかの実施形態の方法。
【0119】
26.パックされたレジスタは、1つの4倍精度レジスタと、2つの倍精度レジスタと、4つの単精度レジスタと、を含む、上記何れかの実施形態の方法。
【0120】
27.パックされたレジスタの1つに対する書き込みの後に、パックされたレジスタ内のより多くのレジスタを読取り可能である、上記何れかの実施形態の方法。
【0121】
28.パックされたレジスタは、アーキテクチャレジスタである、上記何れかの実施形態の方法。
【0122】
29.物理メモリに記憶されたパックされたレジスタにアクセスする装置であって、パックされたレジスタの状態を記憶する回路と、パックされたレジスタのレジスタに命令がアクセスする状況において、レジスタに直接アクセスできるか否かを状態に基づいて決定する回路と、レジスタに直接アクセスできない状況において、レジスタに直接アクセス可能になる動作を行う回路と、を備えている。
【0123】
30.動作は、少なくとも1つのuopを導入することを含む、実施形態29の装置。
【0124】
31.動作は、状態を変更することを含む、上記何れかの実施形態の装置。
【0125】
32.動作は、レジスタの最下位ビット(LSB)を物理レジスタのLSBに揃えることを含む、上記何れかの実施形態の装置。
【0126】
33.アクセスは、読取り操作である、上記何れかの実施形態の装置。
【0127】
34.アクセスは、書込み操作である、上記何れかの実施形態の装置。
【0128】
35.パックされたレジスタのビットは、物理メモリの少なくとも1つの物理レジスタに記憶される、上記何れかの実施形態の装置。
【0129】
36.物理的メモリは、物理レジスタファイルを含む、上記何れかの実施形態の装置。
【0130】
37.履歴を生成するために、動作及び次の動作、又は、レジスタのパッキング及びレジスタの次のパッキングを追跡する回路と、次の動作が必要であるか否か、又は、どのような次の動作が必要かを履歴に基づいて決定する回路と、を備える、上記何れかの実施形態の装置。
【0131】
38.アクセスの前に、第2の物理レジスタのパックされたレジスタのビットの少なくとも一部を記憶する少なくとも1つのuopを導入する回路を備える、上記何れかの実施形態の装置。
【0132】
39.レジスタは、導入された少なくとも1つのuopの実行の後に、第2の物理レジスタにて直接アクセス可能である、上記何れかの実施形態の装置。
【0133】
40.レジスタの最下位ビット(LSB)は、導入された少なくとも1つのuopの実行の後に、第2の物理レジスタのLSBに揃えられる、上記何れかの実施形態の装置。
【0134】
41.状態は、パックされたレジスタが単一の物理レジスタ又は2つ以上の物理レジスタに記憶されているか否かを示す、上記何れかの実施形態の装置。
【0135】
42.状態は、記憶されたパックされたレジスタを少なくとも1つの物理レジスタに配列する指示を示す、上記何れかの実施形態の装置。
【0136】
43.パックされたレジスタの各々は物理レジスタにマッピングされる、上記何れかの実施形態の装置。
【0137】
44.複数の論理レジスタ名(LRN)の各々は、1つ以上のパックされたレジスタに関連し、各LRNは、物理レジスタに関連する物理レジスタ名(PRN)にマッピングされる、上記何れかの実施形態の装置。
【0138】
45.状態は、各LRNの有効性を、パックされたレジスタのPRNマッピングに反映する、上記何れかの実施形態の装置。
【0139】
46.レジスタの最下位ビット(LSB)が物理レジスタのLSBに揃っている場合に、レジスタに直接アクセス可能である、上記何れかの実施形態の装置。
【0140】
47.レジスタは、ビットにアクセスする前に物理メモリに記憶されたレジスタのビットを移動することなく命令によってアクセス可能である場合に、直接アクセス可能である、上記何れかの実施形態の装置。
【0141】
48.レジスタは、浮動小数点レジスタである、上記何れかの実施形態の装置。
【0142】
49.命令は、浮動小数点命令である、上記何れかの実施形態の装置。
【0143】
50.導入される少なくとも1つのuopが復号化される少なくとも1つのuopの前に実行されるように、導入される少なくとも1つのuopは、命令の復号化される少なくとも1つのuopに先立って導入される、上記何れかの実施形態の装置。
【0144】
51.導入される少なくとも1つのuopは、2つのuopsを含む、上記何れかの実施形態の装置。
【0145】
52.2つのuopsは、分割できないものとして(アトミックに)実行するように構成されている、上記何れかの実施形態の装置。
【0146】
53.2つのuopsの両方は、状態が更新される前に実行するように構成されている、上記何れかの実施形態の装置。
【0147】
54.パックされたレジスタは、1つの4倍精度レジスタと、2つの倍精度レジスタと、4つの単精度レジスタと、を備える、上記何れかの実施形態の装置。
【0148】
55.パックされたレジスタの1つに対する書き込みの後に、パックされたレジスタ内のより多くのレジスタを読取り可能である、上記何れかの実施形態の装置。
【0149】
56.パックされたレジスタは、アーキテクチャレジスタである、上記何れかの実施形態の装置。