(57)【要約】電力を節約するためのリネーミングレジスタファイルが記載される。マッピングユニットは、インストラクションレジスタナンバー（ＩＲＮ）を論理レジスタナンバー（ＬＲＮ）に変換する。リネーミングレジスタファイルは、ＬＲＮを物理レジスタナンバー（ＰＲＮ）にマップする。ＩＲＮの直接の使用によりアドレス可能なものよりより多い数の物理レジスタがある。リネーミングレジスタファイルはコンテンツアドレッサブルメモリ（ＣＡＭ）を使用してマッピング機能を提供する。リネーミングレジスタファイルＣＡＭはさらに現在のプロセッサー状態情報を用いてタグコンパレーターを選択的にイネーブルにしレジスタをアクセスする際の電力を最小にする。タグコンパレーターがイネーブルにならないとき、それは低電力状態になる。低電力特徴を有したリネーミングレジスタファイルを用いてプロセッサーも記載される。
2008533569.tif 000002
【特許請求の範囲】
【請求項１】
コンテンツアドレッサブルメモリ（ＣＡＭ）制御装置において、
前記ＣＡＭに記憶されるタグであって、前記タグは、前記ＣＡＭのエレメントと、プロセッサーの動作状態を記載する前記タグ内の属性のアドレスであるタグと、
前記タグを前記プロセッサーにより発生されたアドレスと比較するタグコンパレーターと、
前記属性を前記プロセッサーの現在の動作状態と比較する動作状態コンパレーターであって、それにより前記属性と前記プロセッサーの現在の動作状態との比較の結果に依存して前記タグコンパレーターがイネーブルになるかまたはディスエーブルになる、動作状態コンパレーターと、
を備えたＣＡＭ制御装置。
【請求項２】
前記属性が前記プロセッサーの現在の動作状態と一致するなら、前記タグコンパレーターはディスエーブルされる、請求項１のＣＡＭ制御装置
【請求項３】
前記タグコンパレーターはディスエーブルされると低電力状態になる、請求項１のＣＡＭ制御装置。
【請求項４】
前記属性が前記プロセッサーの現在の動作状態と一致しないなら前記タグコンパレーターはイネーブルになる、請求項１のＣＡＭ制御装置。
【請求項５】
前記タグが前記プロセッサーにより発生された前記アドレスと一致するとき、前記タグコンパレーターは、イネーブルになるとヒット表示を発生する、請求項１のＣＡＭ制御装置。
【請求項６】
ヒット表示に際して前記一致したタグに関連する物理レジスタが選択されるように動作する複数の物理レジスタを保持するＣＡＭ物理レジスタファイルをさらに備えた、請求項５のＣＡＭ制御装置。
【請求項７】
前記属性は前記タグの最上位ビットである、請求項１のＣＡＭ制御装置。
【請求項８】
前記プロセッサーの現在の動作状態は、現在のプロセッサー状態レジスタに記憶されたビットにより表示される、請求項１のＣＡＭ制御装置。
【請求項９】
前記プロセッサーにより発生されたアドレスは論理レジスタナンバー（ＬＲＮ）である、請求項１のＣＡＭ制御装置。
【請求項１０】
前記プロセッサーの現在の動作状態に依存して、前記ＬＲＮにインストラクションレジスタナンバー（ＩＲＮ）をマッピングすることにより前記ＬＲＮが得られる、請求項９のＣＡＭ制御装置。
【請求項１１】
前記ＣＡＭに記憶された複数のタグであって、各タグは、前記プロセッサーの動作状態を記載する属性を有する複数のタグと、
各タグに関連するタグコンパレーターと、
各タグに関連する動作状態コンパレーターであって、前記動作状態コンパレーターは各タグ内の属性を前記プロセッサーの現在の動作状態と比較し、それにより前記タグ内の属性と前記プロセッサーの現在の動作状態の比較結果に依存して各タグに関連する前記タグコンパレーターがイネーブルになるかまたはディスエーブルになる、動作状態コンパレーターと、
をさらに備えた、請求項１のＣＡＭ制御装置。
【請求項１２】
複数のアクセスポートと、
前記ＣＡＭに記憶された複数のタグであって、各タグは、前記プロセッサーの動作状態を記載する属性を有する複数のタグと、
各アクセスポートのための各タグに関連するタグコンパレーターと、
各タグに関連する動作状態コンパレーターであって、前記動作状態コンパレーターは、各タグ内の属性を前記プロセッサーの現在の動作状態と比較し、それにより、前記タグ内の属性と前記プロセッサーの現在の動作状態との比較結果に依存して各アクセスのための各タグに関連する複数のタグコンパレーターがイネーブルになるかディスエーブルになる、動作状態コンパレーターと、
をさらに備えた、請求項１のＣＡＭ制御装置。
【請求項１３】
レジスタファイルからレジスタを読むとき電力を節約するための装置において、
インストラクション実行を支持してオペランドを読むためのプロセッサーと、
前記プロセッサーによって読まれるオペランドを有する物理レジスタファイル（ＰＲＦ）と、
タグのアレイであって、タグは前記ＰＲＦ内のオペランドに関連するアドレスを有し、前記タグは、前記プロセッサーの動作状態を記載する属性を有するタグのアレイと、
タグコンパレーターのアレイであって、各タグコンパレーターは、前記プロセッサーにより発生されたオペランドアドレスをタグと比較するように動作し、前記ＰＲＦからオペランドを読むためにタグ比較一致が要求される、タグのアレイと、
動作状態コンパレーターのアレイであって、各動作状態コンパレーターはタグに関連し、前記属性を前記プロセッサーの現在の動作状態と比較し、前記関連するタグコンパレーターをイネーブルまたはディスエーブルにするように動作し、それにより前記属性と前記プロセッサーの現在の動作状態の比較に基いて比較するためにすべてのタグコンパレーター未満のタグコンパレーターがイネーブルになる、動作状態コンパレーターのアレイと、
を備えた装置。
【請求項１４】
前記属性は前記タグの最上位ビットである、請求項１３の装置。
【請求項１５】
前記タグは最も最近のビットを備え、タグ内の最も最近のビットは、前記ＰＲＦ内の関連するオペランドの状態を示し、タグコンパレーターはさらに比較されるタグ内の最も最近のビットに依存してイネーブルまたはディスエーブルされる、請求項１３の装置。
【請求項１６】
複数のアクセスポートと、
各アクセスポートのためのタグコンパレーターのアレイと、
動作状態コンパレーターのアレイであって、各動作状態コンパレーターはタグに関連し、前記属性を前記プロセッサーの現在の動作状態と比較し、各アクセスポートのための前記関連するタグコンパレーターをイネーブルまたはディスエーブルするように動作し、それにより前記属性と前記プロセッサーの現在の動作状態との比較に基いて比較するために各アクセスポートのためのすべてのタグコンパレーター未満がイネーブルになる、動作状態コンパレーターのアレイと、
をさらに備えた、請求項１３の装置。
【請求項１７】
コンテンツアドレッサブルメモリ（ＣＡＭ）ベースレジスタファイルにおいてディスエーブルされるレジスタアドレスコンパレーターを選択するための方法において、
ＣＡＭベースレジスタファイルと共に利用されるプロセッサーの状態の知識に基いてどのレジスタアドレスコンパレーターが与えられたアクセスと恐らく一致することができないかを識別することと、
恐らく一致することができないとして識別されたレジスタアドレスコンパレーターが低電力状態に入るように制御すること、
とを備えた方法。
【請求項１８】
ＣＡＭのタグの属性をプロセッサーの現在の動作状態と比較することと、
タグの属性が前記プロセッサーの現在の動作状態と一致するこれらのレジスタアドレスコンパレーターとして、与えられたアドレスと恐らく一致することができないレジスタアドレスコンパレーターを識別することと、
をさらに備えた、請求項１７の方法。
【請求項１９】
前記恐らく一致することができないとして識別されたレジスタアドレスコンパレーターを制御するステップは、
前記ＣＡＭのタグの属性とプロセッサーの現在の動作状態とを比較することと、
前記ＣＡＭのタグの属性と前記プロセッサーの現在の動作状態との比較に依存して前記レジスタアドレスコンパレーターをディスエーブルにするように制御することと、
をさらに備えた、請求項１７の方法。
【請求項２０】
プロセッサーにおいて論理レジスタナンバーを発生することと、
前記論理レジスタナンバーを前記ＣＡＭのタグと比較される前記レジスタアドレスコンパレーターに供給することと、
をさらに備えた、請求項１７の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は一般にプロセッサー内の電力を低減するための技術に関し、特に、周知のプロセッサーステートに基いてコンテンツアドレッサブルメモリ（ＣＡＭ）リネーミング(renaming)レジスタファイルにおいてコンパレーターを選択的にイネーブルにするための有利な技術に関する。
【背景技術】
【０００２】
高性能プログラム実行を達成するために、プロセッサーインプリメンテーションは、短い期間のパイプラインステージを用いて高クロックレートで動作するパイプラインを使用してもよい。このタイプのプロセッサーのためのインストラクションセットアーキテクチャーは、データのソースとしておよび結果のためのデスティネーションとして実行ユニットにより使用される汎用レジスタのセットを指定してもよい。各インストラクションは、インストラクションエンコーディングの一部として、ソースオペランドまたはデスティネーションオペランドとして使用されるレジスタのアドレスを指定するビットフィールドを含む。これらのレジスタ指示子は、インストラクションレジスタナンバー（ＩＲＮｓ）と呼ばれる。実行ユニットによる使用のために利用可能な汎用レジスタのセットは、プロセッサーのオペレーティングステートに応じて変化してもよい。例えば、特定のオペレーティングモードで実行しているプログラムは、汎用レジスタの合計セットのサブセットのみをアクセスすることができる命令を使用することに制限されてもよい。プロセッサーはまた、プログラムの順番において命令を完了する前にパイプライン実行の期間中にアウトオブオーダー(out-of-order)の命令を実行することをサポートしてもよい。アウトオブオーダー実行を有した深いパイプラインをサポートするために、プロセッサーは、プロセッサーのインストラクションセットアーキテクチャーによりサポートすることができる多数の物理レジスタを実施してもよい。レジスタファイル内で実施される物理レジスタは、物理レジスタナンバー（ＰＲＮ）アドレスの使用により典型的にアクセスされるであろう。けれども、ＰＲＮアドレスを直接使用する命令の場合困難性がある。例えば、１６のレジスタのＩＲＮアドレス空間を有したインストラクションセットアーキテクチャーをサポートするプロセッサーは、６４の物理レジスタのＰＲＮアドレス空間を用いて実施してもよい。ＩＲＮアドレス空間とＰＲＮアドレス空間との間の差を解決するために、プロセッサーは、命令に含まれるＩＲＮアドレスを物理レジスタナンバー（ＰＲＮ）アドレスにマップするためにリネーミング（renaming)ハードウエアを使用してもよい。そのようなマッピングは、タグ、タグコンパレーター、およびデータアレイを有するコンテンツアドレッサブルメモリ（ＣＡＭ）の使用により成就することができる。リネーミングハードウエアは、ＣＡＭデータアレイ内に記憶された物理レジスタのためのタグとしてＩＲＮアドレスを使用してもよい。
【０００３】
ＣＡＭｓをそのような目的に使用する場合の問題点は、ジェネリックＣＡＭインプリメンテーション内のＣＡＭタグコンパレーターは、レジスタファイルアクセス毎に評価されるということである。高性能インプリメンテーションの場合、ＣＡＭコンパレーターはダイナミックなデザインであり、プリチャージおよびディスチャージするときに電力を消費する。さらに、レジスタファイルは典型的にマルチポート構造であるので、各ポートに複数のコンパレーターがありさらにパワードレインを増加させる。
【発明の開示】
【０００４】
いくつかの観点の中で、この発明は、低電力コンテンツアドレッサブルメモリ（ＣＡＭ）制御レジスタファイルを提供する技術の必要性が存在することを認識する。第１の観点において、制御技術はＣＡＭに記憶されたタグを使用する。タグは、ＣＡＭのエレメントのアドレスである。タグは、プロセッサーのオペレーティングステートを記載するタグ内に属性を有する。タグコンパレーターは、タグをプロセッサーにより発生されたアドレスと比較する。オペレーティングステートコンパレーターは、タグコンパレーターをイネーブルにするかディスエーブルにするかを決定するために、その属性をプロセッサーの現在のオペレーティングステートと比較する。他の観点は、コンテンツアドレッサブルメモリ（ＣＡＭ）ベースレジスタファイル内でディスエーブルされるレジスタアドレスコンパレーターを選択するための方法を扱う。この方法において、与えられたアクセスと恐らく一致することができないレジスタアドレスコンパレーターは、ＣＡＭベースレジスタファイルと共同して利用されるプロセッサーのステートの知識に基いて識別される。識別されたレジスタアドレスコンパレーターは、それらが低電力状態に入るように制御される。この発明の他の観点は、以下にさらに詳細に記載されるように扱われる。
【０００５】
この発明のより完全な理解、並びにこの発明のさらなる特徴と利点は、添付された図面とともに以下の詳細な記載から明らかになるであろう。
【発明を実施するための最良の形態】
【０００６】
この発明は、この発明のいくつかの実施形態が示される添付図面を参照してより完全に記載されるであろう。しかしながら、この発明は種々の形態で具現化してもよく、ここに記載された実施形態に限定されると解釈されるべきではない。むしろ、これらの実施形態は、この開示が詳細で完全であり、この発明の範囲が当業者に完全に伝達されるように提供される。
【０００７】
コンピュータープログラムコードまたはこの発明の教示に基いて動作されるまたはこの発明の教示に従う動作を実行するための「プログラムコード」は、最初は、C、 C++、 JAVA(r)（登録商標）、JavaScript(r)、Visual Basic(r)、TSQL、Perlまたは種々の他のプログラミング言語で書かれてもよい。これらの言語の１つで書かれたプログラムは、ターゲットプロセッサーアーキテクチャーにコンパイルされる。また、ターゲットプロセッサーアーキテクチャーのためのプログラムは、ネイティブアセンブラー言語で書かれてもよい。ネイティブアセンブラープログラムは、マシンレベルバイナリインストラクションのインストラクションニーモニック表現を使用する。ここで使用されるプログラムコードまたはコンピューター読み取り可能媒体は、フォーマットがプロセッサーにより理解可能なオブジェクトコードのような機械言語コードを指す。
【０００８】
図１は、この発明の一実施形態が有利に採用される例示無線通信システムを示す。説明のために、図１は、３つの遠隔ユニット１２０、１３０、１５０と２つの基地局１４０を示す。典型的な無線通信システムは、より多くの遠隔ユニットおよび基地局を有してもよいことを認識するであろう。遠隔ユニット１２０、１３０、１５０は、それぞれハードウエアコンピューター１２５Ａ、１２５Ｂ、１２５Ｃを含む。これらはこの発明に従ってプログラムコードを実行する。図１は、基地局１４０からのフォワードリンク信号１８０と遠隔ユニット１２０、１３０、１５０へのフォワードリンク信号と、遠隔ユニット１２０、１３０、１５０および基地局１４０へのリバースリンク信号１９０を示す。
【０００９】
図１において、遠隔ユニット１２０は携帯電話として示される。遠隔ユニット１３０はポータブルコンピューターとして示される。遠隔ユニット１５０は、無線ローカルループシステムにおける固定ロケーション遠隔ユニットとして示される。例えば、遠隔ユニットは、ハンドヘルドパーソナルコミュニケーションシステム（ＰＣＳ）ユニット、パーソナルデータアシスタンツのようなポータブルデータユニット、またはメーター読み取り機器のような固定ロケーションデータユニットであってよい。図１はこの発明の教示に従って遠隔ユニットを図解するけれども、この発明はこれらの例示図解されたユニットに限定されない。この発明は、ＣＡＭベースリネーミングレジスタファイルと、プロセッサーの動作モードに応じてオペランドアドレス空間を制限するインストラクションセットアーキテクチャーを有するパイプラインプロセッサーを用いて任意のハードウエアコンピューターに適切に採用されてもよい。
【００１０】
図２は、この発明の一実施形態が採用されてもよいプロセッサー複合体２００のブロック図を示す。プロセッサー複合体２００は、プログラムコードを実行するためにハードウエアコンポーネント１２５Ａ−Ｃにおいて適切に採用されてもよい。プロセッサー複合体２００は、パイプラインプロセッサー２１０、レベル１（Ｌ１）データキャッシュ２１２、Ｌ１インストラクションキャッシュ（Icache）、レベル２インストラクションおよびデータキャッシュ(L2 cache)、およびシステムメモリインターフェースを含む。プロセッサー複合体に接続されてもよい周辺装置は、この発明の議論の明瞭さのために示されない。プロセッサー２１０はＬ１データキャッシュ２１２およびＬ１  Ｉｃａｃｈｅ２１４に直接接続され、それぞれそこから、階層メモリ構成からのデータとインストラクションを検索する。
【００１１】
プロセッサーのインストラクションセットアーキテクチャーは、各４ビットＩＲＮに対して１６のレジスタまでを識別する、ここでは、インストラクションレジスタナンバー（ＩＲＮ）フィールドと呼ばれる４ビットレジスタオペランドアドレスフィールドを有する３２ビットインストラクションフォーマットを有していてもよい。インストラクションセットアーキテクチャーは、さらに、インストラクションの４ビットＩＲＮが異なるレジスタを指す動作モードを定義してもよい。例えば、ＩＲＮｓ８−１４はプロセッサーの動作モードに応じて異なるレジスタを指してもよい。インストラクション内のＩＲＮｓの解釈におけるそのような変化の結果として、４ビットＩＲＮが示すように思われるよりも多数のレジスタがプロセッサー内で必要である。例えば、プロセッサーの種々の動作モードにおいてインストラクションの４ビットＩＲＮフィールドによりアドレスすることができるすべてのレジスタをサポートするためにレジスタファイル内の３２のレジスタが必要になるかもしれない。また、同じプロセッサーは、例えば１６ビットインストラクションフォーマットにおいて３ビットＩＲＮｓを使用するインストラクションフォーマットをサポートしてもよい。３ビットおよび４ビットＩＲＮｓは、例示プロセッサー２１０により提供されるすべての利用可能な３２レジスタを指定するために不十分であるので、プロセッサーの動作モードのエンコーディング２２０は、マッピング機能２２２において使用されＩＲＮを５ビットロジカルレジスタナンバー（ＬＲＮ）に変換する。５ビットＬＲＮはレジスタファイル内のアーキテクチャーの定義されたレジスタセットをアドレッシングすることを可能にする。一般に、ＩＲＮ空間のサブセットは、異なるレジスタにマップしてもよいので、マッピング機能２２２は、ＩＲＮを有した動作モードビットの単純な連結ではない。
【００１２】
例えば、プロセッサーのアーキテクチャーは、オペレーティングモードに応じて、複数の異なるレジスタにマップするためにＩＲＮ  Ｒ１４を指定してもよい。
【００１３】
典型的な使用において、プロセッサー２１０は一般的なユーザーモードにおいてユーザーのアプリケーションコードを主に実行することを期待することができる。それほど多くはないが、プロセッサー２１０は、例えばインタラプトまたはイクセプション(exceptions)を処理するために、スーパーバイザーモードまたは他のモードのような異なる動作モードでコードを実行する。頻繁に使用されるユーザーモードに対して効率的なサポートを提供することは、低減された電力動作に対して有利である。効率的な理由により、プロセッサー２１０の使用モードは、０−１５のレンジ内のＬＲＮにマップするＩＲＮを有するレジスタに、レジスタ空間の制限された使用を指定する。他の動作モード、言い換えれば、否ユーザーモードは、０−３１のＬＲＮレンジ内のレジスタを使用する。従って、プロセッサー２１０は、ユーザーモードにあるとき、１６−３１のＬＲＮレンジ内のレジスタにアクセスしない。ＬＲＮに対するＩＲＮの一般的なマッピングは、プロセッサーのオペレーティングモードの知識を必要とする。これは、現在のプロセッサーステータスレジスタ（ＣＰＳＲ）２３０のビットフィールドエンコーディングにより定義されてもよい。例えば、オペランドアドレス信号２２４上に供給される４ビットＩＲＮは、リードポートアドレス出力２２６として、ＣＰＳＲ２３０の使用により５ビットＬＲＮに適切に変換される。この発明は、特定のコンテキストで記載されているけれども、この発明が他の動作モードに適用できるおよび具体的に記載したものとは異なるレジスタアロケーションに適用できることが認識されるであろう。
【００１４】
プロセッサー２１０のようなパイプラインプロセッサーにおいて、インストラクションセットアーキテクチャーによりサポートされるよりもより多くの物理レジスタが実施される。プロセッサー２１０内に多数の物理レジスタを有する１つの結果は、同じインストラクションで指定されたレジスタの複数の値は、ユニークな物理レジスタに同時に保持することができる。このアプローチを用いて、インストラクション間の多数のデータ依存性を解決することができ、パイプラインを立ち往生させることなくシーケンシャル実行バリアを分割し、それにより性能を改善する。
【００１５】
プロセッサー２１０は、インストラクションアライメントユニット２３２、デコードユニット２３４、リネーミングレジスタファイル２３８、現在のプロセッサーステートレジスタ（ＣＰＳＲ）２３０、複数の実行ユニットから構成される。複数の実行ユニットのうちで単一の実効ユニット２４４のみが図の明瞭さのために示される。インストラクションはインターフェース２４０を介してメモリ階層からインストラクションアライメントユニット２３２に受信される。インストラクションが適切に割り当てられた後で、これらのインストラクションはデコーダユニット２３４でデコードされる。デコード動作は、制御信号２４２を利用して、制御情報を実行ユニット２４４に供給する。オペランドアドレス信号２２４を使用して、ソースおよびターゲットオペランドＩＲＮアドレスをマッピングユニット２２２に供給する。マッピングユニット２２２は、現在のプロセッサーステートに基いて各オペランドＩＲＮをＬＲＮにマップする。例えば、３２ビットインストラクションの場合、４ビットＡ３−Ａ０オペランドソースＩＲＮアドレスは、５ビットＡ４−Ａ０ＬＲＮに変換される。同様に、１６ビットインストラクションの場合、３ビットＩＲＮｓは、プロセッサーのインストラクションセットアーキテクチャーにより定義されるように、現在のプロセッサーステートにより決定される５ビットＬＲＮｓに変換される。また、リネーミングレジスタファイル２３８は、ＣＰＳＲ２３０のＣＰＳＲ出力２４６から現在のプロセッサーステートビットまたはビット群を受信する。
【００１６】
リネーミングレジスタファイル２３８は、ＬＲＮを物理レジスタナンバー（ＰＲＮ）にマップする。ＰＲＮは適切なレジスタ値をアクセスするために使用され、ＰＲＮレジスタに記憶された値はリード出力ポート２５０に出力される。また、命令が発行されると、結果レジスタは、リネーミングレジスタファイル２３８においてタグが付けられる。多数の実行パイプラインステージの後であってもよい、インストラクションの実行の終わりにおいて、実行ユニット２４４により発生された結果は、出力バス２５８を介してリネーミングレジスタファイル２３８に送信される。結果は、リネーミングレジスタファイル２３８において、以前にタグが付けられた結果ＰＲＮアドレスに記憶される。
【００１７】
図３Ａは、リネーミングレジスタファイル２３８、マッピングユニット３０１、ＣＰＳＲ２４０、および実行ユニット２４４を有するリネーミングレジスタファイル複合体３００においてインストラクションレジスタナンバー（ＩＲＮ）を物理レジスタナンバー（ＰＲＮ）にマッピングするための例示実施形態を図解する。リネーミングレジスタファイル２３８は、ＣＡＭ物理レジスタファイル（ＰＲＦ）３０２、およびレジスタファイルのシングルポートのためのＣＡＭタグアレイ３０４を含む。マッピングユニットは、ＣＰＳＲステート３０７に基いて、ポートＡＩＲＮ入力３０５に供給されたＩＲＮをＬＲＮ出力３０６にマップする。ＣＡＭ  ＰＲＦ  ３０２は、プロセッサーのアーキテクチャーにより指定されるよりも多数のレジスタ、例えば６４のレジスタを保持し、各々はＰＲＮ３０８によりアドレス可能である。ＣＡＭタグアレイは、タグ３１０のような６４のタグを保持し、ＯＲゲート３１２および比較ロジック３１４のような、各タグに関連するロジックを比較する。タグおよびタグ比較ロジックは一緒にタグ機能３１６として参照される。
【００１８】
タグ３１０のような各タグは、５ビットＬＲＮ、Ａ４−Ａ０をＣＡＭタグアレイ３０４に記憶する。タグは、ＣＡＭ  ＰＲＦ３０２内のレジスタｉ３１８のようなレジスタと関連する。典型的なＣＡＭにおいて、全てのタグの比較ロジックは、入力アドレスをすべてのタグと比較するように動作可能であり、入力アドレスと記憶されたタグとの間に一致があるか否かを決定する。この発明の有利なＣＡＭタグアレイ３０４において、比較ロジックは、プロセッサーのオペレーティングステートに基いた比較のために選択的にイネーブルになる。タグ比較ロジックがイネーブルにならないなら、それは低電力状態にある。
【００１９】
図２のデコードステージにより実行されるように、デコードの後で、発生されたＬＲＮ出力３０６はＣＡＭタグアレイ３０４に入力される。ＣＰＳＲ２４０は、非ユーザーモード
【数１】
2008533569.tif 000003
【００２０】
信号３２２を出力し、この信号はまたＣＡＭタグアレイ３０４に入力される。非ユーザーモード
【数２】
2008533569.tif 000004
【００２１】
信号３２２および５ビットオペランドＬＲＮ出力３０６は、タグ機能３１６のような各タグ機能に入力される。各タグ機能において、
【数３】
2008533569.tif 000005
【００２２】
信号３２２は、タグに記憶された５ビットＬＲＮの最上位ビットの逆数とＯＲされる。例えば、タグ機能３１６において、
【数４】
2008533569.tif 000006
【００２３】
信号３２２および否
【数５】
2008533569.tif 000007
【００２４】
３２４はＯＲゲート３１２に入力される。Ａ３−Ａ０ビットは、タグ３１０の４ビットアドレスセクション３３０に記憶される。ＯＲゲート３１２のようなＯＲゲートの目的は、各タグ機能において比較ロジックをイネーブルにするための信号を発生することである。この例のプロセッサー２１０の場合、各タグ機能内のすべての比較ロジックは、プロセッサーがユーザーモードにないなら動作している。
【００２５】
タグ機能３１６において、プロセッサーがユーザーモードにないとき、否ユーザーモード
【数６】
2008533569.tif 000008
【００２６】
信号３２２は１であり、ＯＲゲート３１２の出力はコンパレーター３１４をイネーブルにする１である。プロセッサーがユーザーモードにあるなら、
【数７】
2008533569.tif 000009
【００２７】
信号３２２は０であろう。タグアドレスＡ４の最上位ビットが０なら、否Ａ４信号３３４は１であろう。そしてＯＲゲート３１２は１であるイネーブル信号３３２を出力し、０に等しいＡ４を有するＬＲＮｓ０−１５のための比較ロジック３１４をイネーブルにする。あるいは、プロセッサーがユーザーモードにあるなら、
【数８】
2008533569.tif 000010
【００２８】
信号３２２は０であり、ＬＲＮｓ１６−３１に対してＬＲＮタグアドレスＡ４の最上位ビットが１なら、否Ａ４信号３３４は０であり、ＯＲゲート３１２は０としてイネーブル信号３３２を出力し、比較ロジック３１４を低電力状態に維持する。イネーブル信号３３２ロジック機能は以下の方程式により与えられる。
【数９】
2008533569.tif 000011
【００２９】
ただし、シンボル
【数１０】
2008533569.tif 000012
【００３０】
は論理ＯＲ動作を表す。
【数１１】
2008533569.tif 000013
【００３１】
機能は方程式
【数１２】
2008533569.tif 000014
【００３２】
を使用してＮＡＮＤインプリメンテーションと等価である。但し、
【数１３】
2008533569.tif 000015
【００３３】
は、丸括弧内の値を反転する論理ＮＯＴ演算を表し、シンボル
【数１４】
2008533569.tif 000016
【００３４】
は、論理ＡＮＤ演算を表す。
【００３５】
比較ロジックインプリメンテーションに依存して、ディスエーブル信号は、上記イネーブル信号３３２に対する代替物として使用されてもよい。以下の方程式により与えられるように、ディスエーブル信号は、ＯＲゲート３１２をＡＮＤゲートと交換し、第１の入力としてＡ４信号を供給し、第２の入力としてユーザーモードＵ信号を供給することにより得ることができる。
【数１５】
2008533569.tif 000017
【００３６】
この場合、プロセッサーがユーザーモードにあり、タグＬＲＮが１６−３１との間にある場合にのみディスエーブル信号はアクティブであろう。
【００３７】
タグ比較ロジックがイネーブルとなり、５ビットオペランドＬＲＮアドレス３０６と記憶されたＬＲＮタグＡ４３２４Ａ３−Ａ０３３０との間に一致があるなら、ヒットが生じたと言われる。ヒット信号３４０により論理的に示される、ヒットシチュエーションは、一致されたタグに関連するＰＲＮレジスタ３１８がＣＡＭ  ＰＲＦ３０２からアクセスさせ実行ユニット２４４への入力としてリードポート３４４に出力させる。
【００３８】
図３Ｂは、リネーミングレジスタファイル３５８、複数のマッピングユニット３０１、３６０、ＣＰＳＲ２４０、および実行ユニット２４４を有する複数のポートアドレス３０５および３５５を有するリネーミングレジスタファイル複合体３５０内でＰＲＮにＩＲＮをマッピングすることを図解する。たとえ、リネーミングレジスタファイル３５８への２つのオペランドリードポートのみが図３Ｂに示されているとしても、リネーミングレジスタファイル複合体３５０は、例えば、プロセッサー内の６つの同時リードポートのようなさらなるオペランドリードポートをサポートするように拡張することができる。
【００３９】
各リードポートに対して、ポートＡのＩＲＮを出力３０６のＬＲＮにマップするためのマッピングユニット３０１と、ポートＢのＩＲＮ３５５を出力３６４のＬＲＮにマップするためのマッピングユニット３６０のような別個のマッピングユニットが設けられる。リードポートＡ（ＲＰＡ）３６８およびリードポートＢ（ＲＰＢ）３７０は、リードポートが使用されていないなら、それぞれコンパレーター３１４および３７６をディスーブルするためにタグ機能イネーブルロジックＡＮＤゲート３７２および３７４において使用されるイネーブル信号である。
【００４０】
タグ３１０は、アドレスビットＡ４  ３２４およびＡ３−Ａ０  ３３０を両方のコンパレーター３１４および３７６に供給する。リードポートが使用されることを示すイネーブル信号ＲＰＡ３６８およびＲＰＢ３７０がアクティブであるなら、図３Ａのレジスタファイルリネーミング複合体３００に関して以前に記載された両方のコンパレーターに対して同じ電力節約特徴を供給することを用いて最上位ビットＡ４およびＣＰＳＲ動作モードＵに依存して両方のコンパレーターがイネーブルになる。各タグに対して複数のコンパレーターを用いて、ヒット信号３４０および３８０のような複数のヒットは、Ｒ７２を得るためにＲ７＊７を乗算するとき生じるような多数の算術演算において生じてもよい。複数のヒットを用いて、レジスタｉ３１８のような同じレジスタは、リードポートＡ  ３４４およびリードポートＢ  ３８４のような複数のポートに出力される。
【００４１】
図４は、この発明に従って、リネーミングレジスタファイル内のコンテンツアドレッサブルメモリ（ＣＡＭ）タグコンパレーターを選択的にイネーブルにするためのプロセス４００を図解する。インストラクションが発行され、インストラクションがリネーミングレジスタファイル３５８のようなリネーミングレジスタファイルから読まれるソースオペランドＩＲＮを指定するとき、第１のステップ４０５が生じる。次のステップ４１０において、ＣＰＳＲ２４０のような現在のプロセッサーステートレジスタ（ＣＰＳＲ）により供給されるように、プロセッサーの動作モードに依存して、マッピングユニット３０１のようなマッピングユニット内でＬＲＮにＩＲＮがマップされる。ステップ４１５において、タグ機能３１６のような適切なリードポートＣＡＭタグ機能は、ＣＡＭタグアレイ３０４のようなＣＡＭタグアレイ内のリードポートイネーブル信号を使用することにより選択される。すべての選択されたリードポートタグ機能に対して並列に生じるステップ４２０において、タグの最上位ビット（ｍｓｂ）およびＣＰＳＲからのユーザーモード（Ｕ）は、両方ともアクティブになるようにテストされ、両方とも１である。タグ機能においてタグｍｓｂとユーザーモードが両方ともアクティブなら、タグ機能はステップ４２５においてＣＡＭタグコンパレーターをディスエーブルにする。ステップ４３０において、タグ機能は、各ディスエーブルされたＣＡＭタグコンパレーターに対して停止し、ディスエーブルされたコンパレーターは低電力状態に留まる。
【００４２】
ステップ４２０において、タグｍｓｂとユーザーモードがタグ機能においてアクティブでないなら、タグ機能はステップ４３５においてＣＡＭタグコンパレーターをイネーブルにする。すべてのイネーブルされたＣＡＭタグコンパレーターに対して並列に生じるステップ４４０において、ＬＲＮは、コンパレーター３１４のようなコンパレーターによりタグ３１０のようなタグと比較される。ＬＲＮがタグと一致しないなら、タグ機能はステップ４４５において停止する。ＬＲＮがタグと一致するなら、ヒット信号３４０により示されるようにヒットが生じ、ステップ４５０においてタグに関連する物理レジスタは、ＣＡＭ  ＰＲＦ  ３０２のような物理レジスタファイル（ＰＲＦ）から読み出される。読み出されたレジスタ値は、リードポート３４４のようなリードポートを介して実行ユニット２４４のような適切な実行ユニットに供給される。
【００４３】
図５は、有効ビット５０２と、タグ５１０のようなタグ内の最も最近に使用された（ＭＲ）ビット５０４を有したリネーミングレジスタファイル５３８と、マッピングユニット３０１、ＣＰＳＲ２４０、および実行ユニット２４４を有したリネーミングレジスタファイル複合体５００において物理レジスタナンバー（ＰＲＮ）にインストラクションレジスタナンバー（ＩＲＮ）をマッピングする他の観点を図解する。有効ビット５０２は、有効ビットが０であるとき、タグに関連するＰＲＮレジスタは有効ではない。有効ビットが０であるとき、比較ロジックは、イネーブルにならず、低電力状態に留まる。ＭＲビット５０４は、タグに関連するＰＲＮレジスタが最も最近に発生された値を保持するか否かを示す。インストラクションが結果ＬＲＮを指定することを発行すると、物理レジスタエントリはデータ値を受信するように割り当てられ、タグがＬＲＮで書かれる。さらにパイプラインにおいて、結果データがいくつかのサイクルの後に書かれると、そのエントリのためにＭＲビットを設定することにより、タグは最も最近のものとしてマークされる。また、その特定のＬＲＮアドレスに対して最も最近のデータ値を以前に含んだエントリのためのＭＲビット５０４がリセットされる。ＭＲビット５０４が特定のエントリのための０であるなら、そのエントリのための比較ロジックはイネーブルにならず低電力状態に維持される。
【００４４】
リネーミングレジスタファイル複合体５００は、図３のリネーミングレジスタファイル３００と類似するが、さらに有効ビット５０２、ＭＲビット５０４および比較ロジックをイネーブルにするための新しいロジックを有する。新しいロジックは、ＯＲゲート３１２と比較ロジック３１４との間に３入力ＡＮＤゲート５２０を採用する。ＡＮＤゲート５２０への第１の入力はＭＲビット５０４であり、第２の入力は有効ビット５０２であり、第３の入力はＯＲゲート出力３３２である。ＡＮＤゲート５２０への３つの入力の少なくとも１つが０であるとき、比較ロジックは、低電力状態に維持される。比較ロジックをイネーブルにするために、データ値３１８は有効、すなわちＶ＝１でなければならず、最も最近のデータはＭＲ＝１でなければならない。ＯＲゲート３１２出力は、ＡＮＤゲート出力５２４が１となり、比較ロジック３１４をイネーブルにするように１でなければならない。
【００４５】
平均して、ユーザーモードは最も高度に使用される動作モードであり、ユーザーモードは、レジスタアドレス空間を０−１５に制限し、各リードポートのためのＣＡＭタグアレイ３０４内の６４の比較ロジック機能のうちの４８が典型的にイネーブルにならず低電力状態に維持される。これは、プロセッサーの動作モードにもかかわらず、各アクセスに対してすべての６４の比較ロジック機能が利用される設計に比べてＣＡＭタグアレイ電力における重要な節約を表す。
【００４６】
ＯＲゲート３１２を用いることに対する代替アプローチは、タグ機能３１６のように、各タグ機能においてモード選択された（ＭＳ）ラッチを実施することである。ＭＳラッチは、プロセッサーにより実行される各モード変更においてセット又はリセットすることができる。これは、相対的にまれなイベントであり、従ってＭＳラッチの状態を変更することは１サイクルまたは２サイクルかかる可能性があり、小さなモード変更待ち時間を観察する必要がある。あたらしいプロセッサーモードに入ると、各タグエントリは新しいモードを評価し、適切にＭＳラッチをセットまたはリセットするであろう。現在のプロセッサーモード以外のモードからのみエントリがアクセス可能であるのでエントリが一致することができないならＭＳラッチ出力を用いて比較ロジックを低電力状態に維持することができる。
【００４７】
この発明は現在好ましいコンテキストで開示されているけれども、この教示は、この開示およびそれに続くクレームに一致するさまざまなコンテキストに適用されてもよいことが認識されるであろう。
【００４８】
例えば、レジスタファイルの使用を動作モードに依存してレジスタの排他的セットに分割する代替アーキテクチャーにおいて、複数のリネーミングレジスタファイルを使用してもよい。異常がある実行の深くパイプライン化されたプロセッサーは２つの相異なる動作モードで定義されてもよい。例えば、システム、インタラプト、イクセプションを処理するためのユーザーモードおよびスーパーバイザーモードのような２つの動作モードを採用してもよい。プロセッサーインプリメンテーションにおいて、１つのリネーミングレジスタファイルはユーザーモードのために使用されてもよく、１つのリネーミングレジスタファイルはスーパーバイザーモードのために使用されてもよい。この代替アーキテクチャーの場合、ユーザーモードはインストラクションセットにより指定される１６のレジスタをサポートする。ユーザーモードリネーミングレジスタファイルは、異常実行および深いパイプラインによりインフライト(in-flight)インストラクションをサポートするために、さらなるレジスタ、例えば１６のさらなるレジスタを必要とするであろう。スーパーバイザーモードにおいて、スーパーバイザーモードリネーミングレジスタファイルは、異常な実行と深いパイプラインにより、１６の設計されたレジスタの別個のセットをサポートし、１６のインフライト(in-flight)レジスタを有するであろう。合計３２のユーザーモード物理レジスタがユーザーモードリネーミングレジスタファイル内で使用されるであろう。合計３２のスーパーバイザーモード物理レジスタがスーパーバイザーモードリネーミングレジスタファイルにおいて使用されるであろう。動作において、動作モードに応じて、１つのリネーミングレジスタファイルのみがアクティブになり、他のリネーミングレジスタファイルは低電力状態にあるであろう。特定の設計アプリケーションに適応させるための他のそのような変更および改作は、当業者にとって明白であろう。
【図面の簡単な説明】
【００４９】
【図１】図１は、この発明の一実施形態が有利に採用される例示無線通信システムの説明図である。
【図２】図２は、この発明に従うプロセッサー複合体のブロック図である。
【図３Ａ】図３Ａはこの発明に従う、リネーミングレジスタファイル、マッピングユニット、現在のプロセッサーステータスレジスタ（ＣＰＳＲ）、および実行ユニットを有するリネーミングレジスタファイル複合体内の物理レジスタナンバー（ＰＲＮ）にインストラクションレジスタナンバーをマッピングするための例示装置の説明図である。
【図３Ｂ】図３Ｂは、この発明に従う、リネーミングレジスタファイル、複数のマッピングユニット、ＣＳＰＲ、および実行ユニットを有する複数のポートアドレスを有したリネーミングレジスタファイル複合体内のＰＲＮにＩＲＮをマッピングするための例示装置の図式図である。
【図４】図４は、この発明に従うリネーミングレジスタファイル内のコンテンツアドレッサブルメモリ（ＣＡＭ）タグコンパレーターを選択的にイネーブルにするためのプロセスの図式図である。
【図５】図５は、この発明に従う、タグ内の有効なビットおよび最も最近に使用されたビットを有するリネーミングレジスタファイル、マッピングユニット、ＣＰＳＲ、および実行ユニットを有するリネーミングレジスタファイル複合体内の物理レジスタナンバー（ＰＲＮ）にインストラクションレジスタナンバー（ＩＲＮ）をマッピングするための他の例示装置の図式図である。
【図１】
2008533569.tif 000018
【図２】
2008533569.tif 000019
【図３Ａ】
2008533569.tif 000020
【図３Ｂ】
2008533569.tif 000021
【図４】
2008533569.tif 000022
【図５】
2008533569.tif 000023
【国際調査報告】
2008533569.tif 000024
2008533569.tif 000025