(57)【要約】【課題】可変長命令のためのパワーセービング方法および装置【解決手段】少なくとも２つの長さの命令を有する、可変長命令をフェッチし、実行することができるプロセッサが説明される。プロセッサは複数のモードで動作する。モードのうちの１つは、フェッチされ実行されることができる命令を、より長い長さの命令に制限する。命令キャッシュは、命令キャッシュラインに、可変長命令およびそれらの関連するプレデコードビットフィールドを保存し、タグラインに、フェッチ時での命令アドレスおよびプロセッサオペレーティングモード状態情報を保存するために、使用される。プロセッサオペレーティングモード状態情報は、プログラム指定のプロセッサの動作モードを示す。プロセッサは、実行のために命令キャッシュから命令をフェッチする。命令フェッチオペレーションの結果、命令キャッシュは、命令キャッシュにおけるプレデコードビットフィールドの書き込みを選択的にイネーブルにすることができ、フェッチ時でのプロセッサ状態に基づいて命令キャッシュに保存されたプレデコードビットフィールドの読み取りを選択的にイネーブルにすることができる。【選択図】      図５
2008532187.tif 000002
【特許請求の範囲】
【請求項１】
可変長命令をサポートするプロセッサ環境におけるパワーを節約するための装置であって、
第１の長さおよび第２の長さの命令を部分的にデコードし、前記第１の長さと前記第２の長さの両方の命令のためのプレデコードビットを生成するためのプレデコーダと、なお、前記第２の長さは前記第１の長さよりも長い；
プロセッサオペレーティングモード状態インジケータと、なおこのプロセッサオペレーティングモード状態インジケータは、前記プロセッサが命令を前記第２の長さの命令に制限するモードで動作していることを示す；
複数のキャッシュラインを有する命令キャッシュと、なお１キャッシュラインは命令およびプレデコードビットを保存する；
前記プロセッサオペレーティングモード状態インジケータに応じてキャッシュライン中にプレデコードビットを選択的に書き込む書き込み制御ロジックと、なおそれによって、全てよりも少ない前記プレデコードビットが、前記第２の長さの命令のために書き込まれる；
を備える装置。
【請求項２】
前記命令キャッシュラインが、命令のためのセクションとプレデコードビットのためのセクションに区分され、全てよりも少ない前記のプレデコードセクションが、前記第２の長さの命令のために書き込まれる、請求項１記載の装置。
【請求項３】
前記命令のためのセクションが１６ビットフィールドであり、前記プレデコードビットのためのセクションが４ビットフィールドである、請求項２記載の装置。
【請求項４】
前記命令のためのセクションが８ビットフィールドであり、前記プレデコードビットのためのセクションが２ビットフィールドである、請求項２記載の装置。
【請求項５】
前記複数のキャッシュラインが第１のメモリに保存され、前記命令キャッシュは、
タグを保存する第２のメモリを更に備え、各タグはキャッシュラインに関連し、各タグは命令アドレスとプロセッサ状態ビットとを保持し、前記プロセッサ状態ビットは前記のフェッチ時での前記プロセッサオペレーティングモード状態を示している、
請求項１記載の装置。
【請求項６】
前記第１の長さが１６ビットであり、前記第２の長さが３２ビットであり、ここで、各第１の長さの命令は、４つのプレデコードビットを有し、各第２の長さの命令は、第１および第２グループの４つのプレデコードビットを有し、前記第２の長さの命令のための前記第２のグループのプレデコードビットは書き込まれない、請求項１記載の装置。
【請求項７】
前記プレデコードビットフィールドは、命令を、命令の機能および制御のカテゴリに分類する、請求項１記載の装置。
【請求項８】
前記書き込み制御ロジックは、第２の長さの命令を前記キャッシュラインの複数の命令セクションに書き込み、前記第２の長さの命令の一部分によって占められている前記命令セクションのうちの１つに関連した１つのプレデコードセクションに書き込み、前記第２の長さの命令の他の部分によって占められている命令セクションに関連したその他のプレデコードセクションは、無効で、書き込まれない、請求項２記載の装置。
【請求項９】
命令を前記第２の長さよりも長い第３の長さの命令に制限するモードで、前記プロセッサが動作していることを、前記プロセッサオペレーティングモード状態インジケータが更に示し、前記プレデコーダは、前記第３の長さの命令をデコードするようにさらに動作する、請求項１記載の装置。
【請求項１０】
前記命令キャッシュは、
複数のＩＣＡＭタグを有する命令コンテントアドレサブルメモリ（ＩＣＡＭ）と、なお、1つのＩＣＡＭタグは各キャッシュラインに関連しており、前記ＩＣＡＭタグは命令アドレスおよびプロセッサ状態ビットを保存するために割り付けられており、前記プロセッサ状態ビットは、前記のフェッチ時での前記プロセッサオペレーティングモード状態インジケータの値を有している；
前記命令アドレスおよび前記プロセッサ状態ビットをＩＣＡＭタグに書き込むための制御ロジックと；
を更に備える、請求項１記載の装置。
【請求項１１】
命令キャッシュラインを読み取るときにパワーを節約するための装置であって、
フェッチオペレーションを行なうプロセッサと、なお、前記フェッチオペレーションは第１の長さおよび第２の長さの命令をフェッチし、前記第２の長さは前記第１の長さよりも長い；
プロセッサオペレーティングモード状態インジケータと、なお、前記プロセッサオペレーティングモード状態インジケータは、命令を前記第２の長さの命令に制限するモードで前記プロセッサが動作していることを示している；
複数のキャッシュラインと各キャッシュラインに関連したタグとを有する命令キャッシュと、なお1つのキャッシュラインは命令およびプレデコードビットを保存し、前記タグは命令アドレス部分とプロセッサオペレーティングモード状態部分とを有している；
タグマッチヒットに応じてキャッシュラインにおける選択されたプレデコードビットフィールドを読み取る読み取り制御ロジックと、なお、それによって、前記キャッシュラインにおいて利用可能な前記プレデコードビットフィールドのうちの全てよりも少ないものが、前記第２の長さの命令のために読み取られる；
を備える装置。
【請求項１２】
前記タグマッチヒットを決定するためのヒット比較器を、
更に備え、
前記ヒット比較器は、プロセッサフェッチ命令アドレスおよび前記プロセッサオペレーティングモード状態インジケータを前記タグと比較し、そして、前記の比較が等しいときは、前記タグマッチヒットを生成する、
請求項１１記載の装置。
【請求項１３】
前記選択されたプレデコードビットフィールドは、前記キャッシュラインから読み取られた命令が位置合わせされかつデコードされるように、命令を分類する、請求項１１記載の装置。
【請求項１４】
前記プロセッサフェッチオペレーションは、前記命令アドレスおよび前記プロセッサオペレーティングモード状態インジケータを供給することを含んでいる、請求項１１記載の装置。
【請求項１５】
前記命令キャッシュは、
複数のＩＣＡＭタグを有する命令コンテントアドレサブルメモリ（ＩＣＡＭ）と、なお、１つのＩＣＡＭタグは、各キャッシュラインに関連し、前記ＩＣＡＭタグは命令アドレス部分とプロセッサオペレーティングモード状態インジケータ部分とを有する；
各タグに関連するタグ比較器と；
を備える、請求項１１記載の装置。
【請求項１６】
第１の長さあるいは第２の長さの命令をフェッチすることと、なお、前記第２の長さは前記第１の長さよりも長い；
プレデコーダにおける前記第１の長さおよび前記第２の長さの命令をプレデコードすることと；
前記第１の長さおよび前記第２の長さの両方の命令についてのプレデコードビットを生成することと；
命令を前記第２の長さの命令に制限するオペレーティングモードに応じて命令キャッシュラインにおける選択されたプレデコードビットを書き込むことと、なお、それによって、全てよりは少ない前記プレデコードビットが前記第２の長さの命令のために書かれている；
を備える方法。
【請求項１７】
前記命令キャッシュラインは、命令フィールドとプレデコードビットフィールドに区分されており、そして、選択されたプレデコードビットを書き込む前記のステップにおいて、全てよりは少ない前記プレデコードフィールドが、前記第２の長さの命令のために書かれている、請求項１６記載の方法。
【請求項１８】
命令キャッシュラインにおける選択されたプレデコードビットを書き込む前記のステップにおいて、
前記第２の長さの命令による使用に利用可能な複数のプレデコードビットフィールドのうちの１つを書き込むことを更に備えており、それによって、全てよりは少ない前記プレデコードビットフィールドが前記第２の長さの命令のために書かれている、
請求項１６記載の方法。
【請求項１９】
前記キャッシュラインに関連するタグにおける命令アドレスおよびプロセッサ状態ビットを書き込むことを更に備えており、前記プロセッサ状態ビットが、前記のフェッチ時での、前記プロセッサオペレーティングモード状態を示している、
請求項１６記載の方法。
【請求項２０】
プロセッサフェッチ命令アドレスおよびプロセッサオペレーティングモードインジケータを、前記命令キャッシュラインに関連した前記タグと比較することと；
もし前記の比較が等しい場合は、タグマッチヒットを生成することと；
タグマッチヒットに応じて命令キャッシュラインにおける選択されたプレデコードビットを読み取ることと、なお、それによって、前記キャッシュラインにおいて利用可能な全てよりは少ない前記プレデコードビットが前記第２の長さの命令のために読み取られる；
を備える、請求項１９記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、様々な長さを有している命令を処理するプロセッサ中のパワー(power)を減らす技術に関し、より特に、命令キャッシュ中のプレデコードビット(predecode bits)を書き込むことおよび読み取ることを選択的にイネーブルにし、ディスエーブルにするための有利な技術に関する。
【背景技術】
【０００２】
多くのプロセッサが、可変長命令(variable length instructions)を有する命令セットをサポートする。例えば、プロセッサの命令セットは、３２ビット命令および１６ビット命令から成る(consist of)ことができる。プロセッサはまた、命令キャッシュ、データキャッシュおよびシステムメモリを含むマルチレベルのキャッシュ(multi-levels of cashes)を備えた階層的メモリ構成を有することができる。もしプロセッサがさらに、短期間パイプラインステージ(short duration pipeline stages)を備えた高いクロックレートで動作する深い実行パイプライン(deep execution pipeline)を有する場合は、プロセッサが、その後に続くデコードステージを単純にするために、したがって、パイプラインを簡素化するために、命令を前処理するプレデコードステージを有する可能性もある。プレデコードパイプラインステージは、命令ミス(instruction miss)に起因してフェッチされる命令を部分的にデコードする命令キャッシュミスの間、一般に動作する。プレデコード情報は、フェッチされた命令と共に命令キャッシュに書き込まれる。
【０００３】
可変長命令プロセッサでは、ミスに起因してフェッチされた命令は、様々な長さであり得る。を変えることであることができる。プレデコードペレーションは、各命令についての１セットのプレデコードビットを決定し、命令およびプレデコードビットは、プロセッサの動作状態と無関係の命令キャッシュに保存される。プロセッサの動作状態に起因して不必要であり得るプレデコードビットの書き込みおよび読み取りは、パワー損失の原因である。
【発明の開示】
【０００４】
［概要］
いくつかの態様(aspects)の中で、本発明は、プレデコードビットの書き込みおよび読み取りを選択的にイネーブルにすることによりパワーが節約されることができることを、本認識する。本発明の第１の実施形態は、第２の長さが第１の長さよりも長い、第１の長さおよび第２の長さの可変長命令をフェッチし、実行する技術についての必要性が存在することを認識する。プロセッサオペレーティングモード状態インジケータ(processor operating mode state indicator)は、プロセッサが命令を第２の長さの命令に制限する動作モード(mode of operation)にあることを示す。プレデコーダ(predecoder)は、第１の長さおよび第２の長さの命令を部分的にデコードし、各部分的にデコードされた命令のためのプレデコードビットを生成する。命令およびプレデコードビットは、命令キャッシュにおけるキャッシュライン(cash line)に保存される。書き込み制御ロジックが、プロセッサオペレーティングモード状態インジケータに応じてキャッシュライン中にプレデコードビットを選択的に書き込む書き込み、それによって、全てよりも少ないプレデコードビットが、第２の長さの命令のために書き込まれる。キャッシュラインに関連したタグが、命令アドレスおよびプロセッサ状態ビットを用いて書かれる。読み取り時、フェッチ命令アドレスおよびプロセッサオペレーティングモードインジケータがタグと比較され、もしその比較が等しい場合は、選択されたプレデコードビットが、キャッシュラインから読み取られ、それによって、キャッシュラインにおいて利用可能な、全てよりは少ない(less than all)プレデコードビットが、第２の長さの命令のために読み取られる。
【０００５】
本発明の更なる特徴および利点と同様に、本発明についてのより完全な理解は、以下の詳細な説明および添附図面から明らかであろう。
【０００６】
［詳細な説明］
さて、本発明が、本発明のいくつかの実施形態が示されている添附の図面を参照して、より十分に説明される。然しながら、本発明は、様々な形態で具現化されることができ、ここに述べられた実施形態に制限されるものとして解釈されるべきでない。むしろ、この開示が徹底したもので完全であるように、また、本発明の範囲を当業者に十分に伝えるように、これらの実施形態は提供される。
【０００７】
本発明の教示に基づいて動作するためのあるいは本発明によってオペレーションを実行するためのコンピュータプログラムコード(computer program code)あるいは「プログラムコード」は、高水準プログラミング言語、例えば、Ｃ、Ｃ＋＋、ＪＡＶＡ（登録商標）、Ｓｍａｌｌｔａｌｋ、ＪａｖａＳｃｒｉｐｔ（登録商標）、Ｖｉｓｕａｌ Ｂａｓｉｃ（登録商標）、ＴＳＱＬ、Ｐｅｒｌなどで、あるいは様々な他のプログラミング言語で書かれることができる。ターゲットプロセッサアーキテクチャ(target processor architecture)のためのプログラムもまた、ネイティブアセンブラ言語で直接書かれることができる。ネイティブアセンブラプログラムは、マシンレベルバイナリ命令(machine level binary instructions)の命令ニーモニック表現(instruction mnemonic representations)を使用する。ここに使用されるようなプログラムコードあるいはコンピュータ読み取り可能なメディアは、そのフォーマットがプロセッサによって理解し得るオブジェクトコードのような機械語コード(machine language code)を指す。
【０００８】
図１は、本発明の実施形態が有利に使用されることができる例示的な無線通信システム１００の説明図である。説明のために、図１は、３つの遠隔ユニット(remote units)１２０、１３０、１５０および２つの基地局１４０を示す。一般的な無線通信システムはもっと多くの遠隔ユニットおよび基地局を有することができる、ということが認識されるだろう。遠隔ユニット１２０、１３０、および１５０は、ハードウェアコンポーネント１２５Ａ、１２５Ｂ、および１２５Ｃをそれぞれ含んでおり、本発明に従ってプログラムコードを実行している。図１は、基地局１４０から遠隔ユニット１２０、１３０、および１５０への順方向リンク信号１８０を示し、また、遠隔ユニット１２０、１３０、および１５０から基地局１４０への逆方向リンク信号１９０を示す。
【０００９】
図１において、遠隔ユニット１２０はモバイル電話(mobile telephone)として示され、遠隔ユニット１３０はポータブルコンピュータ(portable computer)として示され、また、遠隔ユニット１５０は、ワイヤレスローカルループシステム(wireless local loop system)における固定ロケーション遠隔ユニット(fixed location remote unit)として示される。例えば、遠隔ユニットは、ハンドヘルドパーソナルコミュニケーションシステム(hand-held personal communication systems)（ＰＣＳ）ユニット、個人情報端末(personal data assistants)のようなポータブルデータユニット(portable data units)、あるいは検診機器(meter reading equipment)のような固定ロケーションデータユニット(fixed location data units)であり得る。図１は本発明の教示による遠隔ユニットを示すが、本発明はこれらの図示された例示的なユニットに限定されない。本発明は、プレデコード情報を命令キャッシュに保存する、可変長命令を有しているパイプラインプロセッサを使用して、任意のハードウェアコンポーネントにおいて適切に使用されることができる。
【００１０】
図２は、本発明の一実施形態が有利に使用されることができるプロセッサ複合体(processor complex)２００の説明図である。プロセッサ複合体２００は、プログラムコードを実行するためにハードウェアコンポーネント１２５Ａ−Ｃにおいて適切に使用されることができる。プロセッサ複合体２００は、異なる長さの命令を実行するプロセッサ２１０、レベル１（Ｌｌ）データキャッシュ２１４、Ｌｌ命令キャッシュ（Ｉキャッシュ）２１８、プレデコーダ２２２、レベル２命令およびデータキャッシュ（Ｌ２キャッシュ）２２６、および、システムメモリへのインタフェースを含んでいる。プロセッサ複合体に接続する周辺デバイスは、本発明の論考を明確にするために示されていない。プロセッサ２１０は、Ｌｌデータキャッシュ２１４、Ｌｌ Ｉキャッシュ２１８、およびプレデコーダ２２２に直接に結合させている。プロセッサ２１０は、階層的方法でキャッシュから命令およびデータを取り出す(retrieve)。例えば、プロセッサ２１０は、Ｌｌ Ｉキャッシュインプット上にフェッチアドレスおよびプロセッサオペレーティングモード状態を生成することにより命令をフェッチし、そして、プロセス識別（ＰIＤ）信号のような命令をフェッチするために必要とされるかもしれない他の信号を供給する。する。また、のプは２２８およびをことができるのと同じくらい提供する他の情報を入力する。プロセッサオペレーティングモード状態は、プログラマが指定するプロセッサの動作のモードのインジケータである。
【００１１】
プロセッサの命令セットは、複数の長さのフォーマットで符号化された命令を含んでおり、そこでは、より長い命令は一般に、可変長命令セットにおいて利用可能な複数の最も短い命令フォーマットである。命令は、命令の長さに応じて変わり得る複合符号化(complex encoding)を有することができ、異なる長さの命令に隣接することができるので、フェッチされた命令のアラインメント(alignment)およびデコーディング(decoding)は、短い持続期間のクロック周期(short duration clock period)を持ったシングルプロセッサパイプラインステージにおいて可能であることを超えた処理を、要求することができる。命令複雑さのレベルに起因して、プロセッサは、個別の命令アラインメントパイプラインステージ(instruction alignment pipeline stage)を含むことができ、デコードオペレーション(decode operation)をプレデコードステップおよびデコードパイプラインステージへと分割する(split)ことができる。プレデコードステップは、Ｌｌ Ｉキャッシュミス処理(miss processing)中にプレデコードペレーションを行うことにより、正常な(normal)パイプライン実行から適切に隠されることができる。フェッチされた命令がＬｌ Ｉキャッシュにおいて見つからず、より高いレベルのメモリ階層からフェッチされなければならないときに、Ｌｌ Ｉキャッシュミス処理は生じる。プレデコードステップは、Ｌｌ命令キャッシュ中に、フェッチされた命令と共にプレデコード情報を保存する。
【００１２】
オペレーションでは、プロセッサ２１０は、マッチメカニズム(match mechanism)の使用によって、アドレス指定された命令がＬｌ Ｉキャッシュの中にあるかどうかを決定するために、Ｌｌ Ｉキャッシュ２１８にアクセスする。もしマッチが、Ｌｌ Ｉキャッシュ２１８の中で、フェッチされた命令について見つからない場合は、ミスが発生する。ミス情報２３０がプレデコーダ２２２に送られ、そしてプロセッサ２１０は、Ｌ２キャッシュ２２６にアクセスリクエスト２３２を行う。Ｌ２キャッシュ２２６における命令ヒット(instruction hit)で、所望の命令を含んでいるＬ２キャッシュラインは、ポートＡ(PORTA)上でプレデコーダ２２２に出力される。プレデコーダ２２２は、ミス処理におけるプレデコードステージの期間、Ｌ２キャッシュからフェッチされた命令を部分的にデコードし、命令、命令に関連するプレデコードされたビット、およびタグ情報を、アウトプット２３８上でＬｌ Ｉキャッシュ２１８およびプロセッサ２１０に供給する。
【００１３】
プロセッサ２１０がデータをフェッチすることを必要とするとき、プロセッサ２１０は、マッチメカニズムの使用によって、アドレス指定されたデータがＬｌ Ｉキャッシュの中にあるかどうかを決定するために、Ｌｌ Ｉデータキャッシュ２１４にアクセスする。もしマッチが、Ｌｌ Ｉデータキャッシュ２１４の中で、フェッチされた命令について見つからない場合は、ミスが発生し、そしてＬ２キャッシュ２２６が次にアクセスされる。両方のＬｌキャッシュの場合において、もし該命令あるいはデータがＬｌ命令あるいはＬｌデータキャッシュの中にそれぞれ存在することが見つけられる場合、そのときは、命令とデータは、アウトプット２４０および２４４上でそれらのそれぞれのＬｌキャッシュから直接に読み取られる。
【００１４】
図３Ａは、Ｌ２キャッシュ２２６およびＬｌ Ｉキャッシュ２１８を含むプロセッサ複合体２００のメモリ階層(memory hierarchy)に適切に保存されることができる、例示的なプログラムセグメント３００である。説明のためにプログラムセグメントがキャッシュラインから取り出されると仮定されるが、本発明の教示は、プログラムセグメントを保存する任意のメモリデバイスに適用可能であることに注意されるべきである。一般に、用語キャッシュラインもまた、命令ストリング(instruction string)あるいは命令ストリーム(instruction stream)と呼ばれることができる。キャッシュラインは固定長を有することができるので、用語命令ストリングあるいは命令ストリームは、一般に、キャッシュラインの境界をまたがることができるあるいはできない、１つ以上のプログラムセグメントを指す。
【００１５】
プログラムセグメント３００は、１６ビットおよび３２ビットの命令から成る可変長命令セットから出てくる命令３０２を含んでいる。例えば、複数のタイプの命令について１６ビットおよび３２ビットの命令形式を使用し、また、命令タイプの使用を指定し制限するいくつかの動作モードをサポートするプロセッサ２１０を考慮する。プロセッサ２１０は、３２ビット命令のみが使用されることができることを指定する第１動作モードと、１６ビットおよび３２ビットの命令の組合せが使用されることができることを指定する第２動作モードとを有する。プロセッサは、一般に、複数の動作モードを有するが、本発明の論考を明瞭にするために、例示的なプロセッサ２１０の説明は、主として、上記に説明された第１および第２の動作モードに制限されている。
【００１６】
本発明の態様を例示するために、いくつかの例示的な１６ビットおよび３２ビットの命令が、図３Ａの中で示される。説明のために、プログラム相対バイトインジケータ(program relative byte indicators)３０４が、命令が始まるキャッシュラインにおけるバイト位置を表わし、そして、間接的に命令のサイズを示す。例えば、ＭＵＬ  Ｒ５,Ｒ４,Ｒ３命令３０６は、バイト位置００で始まり、バイト位置０１で終わる。このように、ＭＵＬＴ  Ｒ５,Ｒ４,Ｒ３命令３０６は、１６ビット命令である。同様に、ＡＤＤ命令３０７および３１１、ならびに、ＳＨＩＦＴ命令３０９は、１６ビットの長さである。条件付き分岐（ＣＢＲＡＮＣＨ）命令３０８、ロード（ＬＯＡＤ）命令３１０、および保存（ＳＴＯＲＥ）命令３１２は、３２ビットの長さである。
【００１７】
Ｌ２キャッシュライン３２０の一部が図３Ｂの中で示されている。キャッシュラインサイズは、アプリケーション、技術、および選ばれたメモリ階層設計に応じて変わり得るが、説明のための目的のために、キャッシュラインの一部のみが示されている。例えば、２５６ビットあるいは５１２ビットのキャッシュラインが、Ｌ２キャッシュのために使用されることができる。図示された部分は、複数の１６ビットのフィールドを有する。図３Ａの命令３１４は、示されるように、Ｌ２キャッシュ３２０ラインに保存され、ＭＵＬＴ  Ｒ５,Ｒ４,Ｒ３の命令が、位置００で始まるＬ２キャッシュラインセグメント３２２に保存される。ＡＤＤ  Ｒ０,Ｒ５,Ｒｌの命令３０７が、位置０２で始まるＬ２キャッシュラインセグメント３２４に保存される。ＣＢＲＡＮＣＨ  ０Ａ命令３０８は、Ｌ２キャッシュラインセグメント３３０に保存される。命令３０８は、２つの１６ビットのセグメント３３２および３３４から構成され、それぞれ位置０４および位置０６で始まる。ＳＨＩＦＴ  Ｒ０,１の命令３０９が、位置０８で始まるＬ２キャッシュラインセグメント３３６に保存される。説明の目的のために、プログラムセグメント３００はキャッシュラインの最初の部分から始まって示されているが、しかし、そのようなプログラムセグメントは、キャッシュラインの他のセクションに位置することができるし、また、複数のキャッシュライン間で分けられることができることが、理解されるだろう。
【００１８】
複数の２０ビットのフィールドから成る、例示的なＬｌ Ｉキャッシュライン３５０が、図３Ｃの中で図示され、各２０ビットのフィールドは、関連する４ビットのプレデコード（Ｐｄ４）フィールドと共に１６ビットのフィールドから構成されている。例えば、Ｌｌキャッシュは、命令のための１２８ビットを利用し、８つのＰｄ４フィールドのための更なるスペースを必要とすることができ、結果として１６０ビットのＬｌキャッシュラインになる。単一の４ビットＰｄ４フィールドは、両方の１６ビット命令のために、および３２ビット命令のために使用される。４ビットのＰｄ４フィールドは、Ｐｄ４フィールドに関連する命令の１６までの符号化された特性(up to sixteen encoded characteristics)を含むことができる。例えば、符号化は、命令が、ロードあるいは保存の命令、算術命令、あるいはマイクロコードサポートを必要とする複雑な命令であるかどうかを、示すことができる。符号化はまた、命令データの１６ビットが、３２ビット命令の最初の半分かあるいは１６ビット命令であるのかを、そして、命令が、ブランチタイプの命令あるいは同様の類であるのかを、示すこともできる。Ｐｄ４情報は、命令アラインメント、デコーディングに役に立ち、そして、例えば、ブランチハンドリング(branch handling)に使用されることができる。
【００１９】
図３Ａの命令３１４は、Ｌｌキャッシュラインセグメント３５２および３５４にそれぞれ保存される１６ビットのＭＵＬＴ  Ｒ５,Ｒ４,Ｒ３の命令３０６およびその関連するＰｄ４フィールドで始まるＬｌキャッシュラインに、位置することができる。同様に、１６ビットのＡＤＤ  Ｒ０,Ｒ５,Ｒｌの命令３０７およびその関連するＰｄ４フィールドは、Ｌｌキャッシュラインセグメント３５６および３５８にそれぞれ保存される。プレデコードビットの１つのセットのみが３２ビット命令で保存されることを要求されるので、３２ビットのＣＢＲＡＮＣＨ  ０Ａ命令３０８は、異なって保存される。説明のために、１６ビットのＬｌキャッシュラインセグメント３６２は、高位１６ビットのＣＢＲＡＮＣＨ  ０Ａ命令３０８を含んでいる。Ｐｄ４フィールド３６４は、３２ビットのＣＢＲＡＮＣＨ命令に対しプレデコード情報を提供し、一方、次の１６ビットのＬｌキャッシュラインセグメント３６６は、下位１６ビットのＣＢＲＡＮＣＨ  ０Ａ命令３０８を含んでいる。Ｐｄ４フィールド３６８は、ＣＢＲＡＮＣＨ  ０Ａ命令３０８については必要ではない。他のプログラムセグメントは異なる時にキャッシュラインを占めることができるので、Ｐｄ４フィールド３６８は、例えば、１６ビットのＬｌキャッシュラインセグメント３６６の中に保存される１６ビット命令のサポートに使用されることができる。Ｌｌキャッシュライン中の次の命令は、１６ビットのＬｌキャッシュラインセグメント３７０とＰｄ４フィールド３７２から構成される２０ビットのフィールド中に保存される、１６ビットのＳＨＩＦＴ  Ｒ０,１命令３０９である。プログラムセグメント３１４中の他の命令についての同様の配置が、キャッシュライン３５０中の残りのビットフィールドについて続けられる(is followed)。
【００２０】
図４Ａは、Ｌ２キャッシュ２２６およびＬｌ Ｉキャッシュ２１８を含んでいる、プロセッサ複合体２００のメモリ階層に適切に保存されることができる、例示的なプログラムセグメント４００を示す。プログラムセグメント４００は、プロセッサ２１０の第１動作モードにおいて動作する３２ビット命令４０２を含んでおり、また、全ての命令は、アーキテクチャ上の定義(architectural definition)によってワードが位置合わせされた境界に(on word aligned boundaries)置かれる。本発明の態様を説明するために、いくつかの例示的な３２ビット命令が、図４Ａの中で示される。プログラムの相対バイトインジケータ(Program relative byte indicators)４０４は、命令が始まるキャッシュラインにおけるバイト位置を表わし、また、間接的に命令のサイズを示す。例えば、ＬＯＡＤ  Ｒ２２,ＥＥ命令４０６は、バイト位置００で始まり、バイト位置０３で終わる。このようにして、ＬＯＡＤ  Ｒ２２，ＥＥ命令４０６は、３２ビット命令である。同様に、ＡＤＤ命令４０７および４１１、ＣＢＲＡＮＣＨ  １０  ４０８、ＳＨＩＦＴ命令４０９、ＬＯＡＤ  Ｒ２０,８Ｆの命令４１０、およびＳＴＯＲＥ命令４１２は、全て３２ビットの長さである。
【００２１】
Ｌ２命令キャッシュライン４２０の一部が図４Ｂの中で図示される。ライン４２０は、複数の１６ビットのフィールドを有する。アプリケーション、技術、および選ばれたメモリ階層設計に応じて、キャッシュラインサイズが変わり得るので、キャッシュラインの一部のみが示される。例えば、２５６ビットまたは５１２ビットのキャッシュラインが、Ｌ２キャッシュのために適切に使用されることができる。図４Ａの命令４１４は、示されるように、Ｌ２キャッシュ４２０ラインに保存され、ＬＯＡＤ  Ｒ２２,ＥＥの命令が、位置００で始まるＬ２キャッシュラインセグメント４３２に保存される。ＡＤＤ  Ｒ１９,Ｒ２２,Ｒ３０の命令４０７が、位置０４で始まるＬ２キャッシュラインセグメント４３２に保存される。ＣＢＲＡＮＣＨ  １０命令４０８は、位置０８で始まるＬ２キャッシュラインセグメント４３６に保存される。他の３２ビット命令は、同様の方法で、Ｌ２キャッシュの中に保存される。説明の目的のために、プログラムセグメント４００はキャッシュラインの最初の部分から始まって示されているが、しかし、そのような３２ビットプログラムセグメントは、ワード境界で(on word boundaries)、キャッシュラインの他のセクションに位置することができるし、また、複数のキャッシュライン間で分けられることができることが、理解されるだろう。
【００２２】
例示的なＬｌ Ｉキャッシュライン４５０が、図４Ｃの中で図示される。ライン４５０は複数の２０ビットフィールドを有し、各２０ビットフィールドは、関連する４ビットのプレデコード（Ｐｄ４）フィールドと共に１６ビットのフィールドから構成されている。単一の４ビットＰｄ４フィールドは、両方の１６ビット命令のために、および３２ビット命令のために使用される。例えば、Ｌｌキャッシュは、命令のために１２８ビットを保存し、８つのＰｄ４フィールドのための更なるスペースを必要とすることができ、結果として１６０ビットのＬｌキャッシュラインになる。図４Ａの命令４１４は、１６ビットセグメント４５４、その関連するＰｄ４フィールド４５４、および１６ビットセグメントから構成されるＬｌキャッシュラインセグメント４５２に保存されることができる。４ビットのＰｄ４フィールド４５６が３２ビットのＬＯＡＤ  Ｒ２２,ＥＥ命令にプレデコード情報を供給するので、第２の４ビットＰｄ４フィールド４６０は必要とされない、従って、本発明の技術の使用によって、Ｐｄ４フィールド４６０は書き込まれず、読み取られない。同様に、３２ビットのＡＤＤ  Ｒ１９,Ｒ２２,Ｒ３０命令４０７は、Ｌｌキャッシュラインセグメント４６４および４６８に保存され、また、命令４０７の関連するＰｄ４フィールドはセグメント４６６に保存される。同様に、４ビットＰｄ４フィールド４７０は必要とされず、本発明の技術を使用して、Ｐｄ４フィールド４７０は書き込まれず、読み取られない。３２ビットＣＢＲＡＮＣＨ  １０命令４０８は、Ｌｌキャッシュラインセグメント４７４および４７８に保存され、そして、ＣＢＲＡＮＣＨ  １０命令４０８の関連するＰｄ４フィールドは、セグメント４７６に保存される。Ｐｄ４フィールド４８０もまた必要とされない。この場合もやはり、本発明の技術を使用して、Ｐｄ４フィールド４８０は書き込まれず。読み取られない。他のプログラムセグメントが異なるときにキャッシュラインを占めることがあり得るので、Ｐｄ４フィールド４６０、４７０および４８０は、例えば、１６ビットのＬｌキャッシュラインセグメント４５８、４６８、および４７８に関連する、１６ビット命令のサポートに使用されることができる。プログラムセグメント４１４中の次の３２−ビット命令４０９についての同様の配置が、キャッシュライン４５０中の残りのビットフィールドについて続けられる。
【００２３】
本発明の１つの態様は、Ｌｌ Ｉキャッシュに書き込むときにパワーを節約する本発明の技術によるＬｌキャッシュラインへのプレデコード情報の書き込みに関連する。第２の態様は、Ｌｌ Ｉキャッシュから読み取るときにパワーを節約するためにプレデコードビットフィールドを選択的にイネーブルにすることに対応する。これらの態様の両方が、以下に更に詳細に説明される。
【００２４】
図５は、Ｌｌ Ｉキャッシュ２１８に書き込むとき、および、Ｌｌ Ｉキャッシュ  ２１８から読む取るときに、パワーを節約するために、本発明に従って動作するプロセッサパイプラインステージ５００を図示する。Ｌｌ Ｉキャッシュ２１８は、２つのプロセッサパイプラインステージに分けられる。第１のパイプラインステージは、命令コンテントアドレサブルメモリ(instruction content addressable memory)（ＩＣＡＭ）ユニット５０２における命令タグマッチング(instruction tag matching)のために使用される。第２のパイプラインステージは、タグマッチヒット(tag match)がＩＣＡＭユニット５０２において起こるときに命令ランダムアクセスメモリ（ＩＲＡＭ）５０３からの命令にアクセスするために使用される。Ｉキャッシュ  ２１８の後、命令は、命令アラインメント（ＩＤＡ）ステージ５１６中のプロセッサ２１０に入り、デコードステージ５５４が続き、そしてつぎに、ステージ５５５を実行する。
【００２５】
本発明は、Ｌｌ Ｉキャッシュに書き込むときにパワーを節約するために動作する。例えば、Ｌｌ Ｉキャッシュミス(Ll Icache miss)が生じる場合、Ｌ２キャッシュあるいはシステムメモリ、および選択されたプレデコードビットフィールドからの命令が、Ｌｌ Ｉキャッシュに書き込まれる。プロセッサ状態情報(processor state information)に応じて、Ｌｌ Ｉキャッシュに書き込まれる選択されたプレデコードビットフィールドは、Ｉキャッシュラインにおいて利用可能な全てのプレデコードビットフィールドよりも少なくあり得る、したがって、パワーを節約できる。多くの理由で生じ得るＬｌ Ｉキャッシュミスを解決するとき、パワーの節約は達成される。例えば、Ｌｌ Ｉキャッシュの初期化時に、Ｉキャッシュは、無効のコンテンツを有しているとして扱われ、Ｌｌ Ｉキャッシュがいっぱいになるときにミスがあるであろう。さらに、プログラムがコードの新しいセクションに分岐するとき、ＩキャッシュミスがＬｌ Ｉキャッシュフェッチ時に生じる可能性がより大きい。
【００２６】
プロセッサ２１０は、ＩＣＡＭユニット５０２へのフェッチ時に、フェッチされるべき命令のアドレス（Ｆアドレス）５０４を供給することによって、また、プログラム指定のオペレーティングモードを表わす現在のオペレーティングモード状態(current operating mode state)（ＣＯＭＳ）情報５０６を供給することによって、Ｌ１ Ｉキャッシュからの命令のフェッチング(fetching)を開始する。プロセッサ２１０はまた、ＩＣＡＭユニット５０２に、ＰＩＤのような他の情報も供給することができる。フェッチ時のＣＯＭＳ情報は、プロセッサが、ワードが位置合わせされた境界で３２ビット命令のみを使用する第１動作モードにあるのか、１６ビットおよび３２ビットの両方の命令を使用する第２動作モードにあるのか、あるいは他のプロセッサモードにあるのかを、含むことができる。
【００２７】
ＩＣＡＭユニット５０２は、命令アドレス（Ｉアドレス）５０９、フェッチ時のプロセッサの動作モード（ＦＯＭＳ）５１０、および、ＩＣＡＭライン５１２のようなＩＣＡＭラインにおけるタグ(tags)であるような、マッチオペレーション(match operation)のために必要であると思われる他の情報を保存する。命令フェッチオペレーションでは、プロセッサは、Ｆアドレス５０４およびプロセッサＣＯＭＳ５０６を供給し、それらは、プロセッサの供給するＦアドレスおよびＣＯＭＳとマッチする有効データをいずれかの保存されたＩＣＡＭラインが保持するかどうかを決定するために、保存されたＩＣＡＭラインタグと比較される。もし、有効なマッチングアドレス、プロセッサ動作モード状態、あるいは同様の類を持ったＩＣＡＭラインが見つからない場合、それはミスと考えられ、そして、ミス指示５１４がプロセッサ２１０に与えられる。プロセッサ２１０は、もし命令がＬ２キャッシュ２２６中に見つからない場合は、Ｌ２キャッシュ２２６から、あるいはシステムメモリから、フェッチすることを始める(proceed)。メモリアクセスタイミングに起因するレイテンシ(latency)の後、命令は、システムメモリあるいはＬ２キャッシュアウトプット(output)５１８からプレデコーダ５２０およびＩＲＡＭ５０３に、供給される。プロセッサ２１０はまた、プレデコーダ５２０に、フェッチ時の命令フェッチアドレッシング、プロセッサオペレーティングモード状態、および同様の類、に関するミス情報５２２を送る。
【００２８】
プレデコーダ５２０は、メモリレーテンシの主な原因となるミス情報を追跡し(tracks)、ミス情報を利用可能にする。ミス情報は、例えば、フェッチ時のプロセッサＬｌ Ｉキャッシュフェッチアドレスおよびプロセッサ状態を含んでいる。命令が、システムメモリあるいはＬ２キャッシュアウトアウトバス５１８から提供されるとき、追跡されたフェッチアドレスはアウトプット５２４上で供給され、追跡されたプロセッサ状態はアウトプット５２６上で供給され、そして、ＰＩＤのような他の情報はアウトプット５２８上で供給されることができる。アウトプットバス５１８上の命令は、プレデコーダ５２０において部分的にデコードされ、ＩＲＡＭ５０３に保存されるべき適切な１６ビットフィールドについて、４ビットＰｄ４アウトプット５３０、５３２、・・・５３４まで、を生成する。有効な情報を保持するＰｄ４ビットのみが、プレデコーダ５２０において生成される。アウトプットバス５１８上の命令は、ＩＲＡＭ５０３への保存のために、例えば、第１の１６ビット５３６、第２の１６ビット５３８、・・・最後の１６−ビット５４０まで、について図示されるように、適切に分けられる。命令１６ビットのフィールド５３６、５３８、・・・５４０まで、およびそれらそれぞれのＰｄ４アウトプット５３０、５３２、・・・５３４まで、は、書き込み制御ロジック５４４の管理の下で、ＩＲＡＭライン例えばＩＲＡＭライン５４２などに保存される。パワーを節約するために、もしフェッチ信号５２６の時点でのプロセッサ状態が、命令を、ワードが位置合わせされた境界で３２ビット命令のみに制限する状態、例えば例示的な第１の動作モードなど、である場合、そのときは、ＩＲＡＭライン５４２に保存されるべき命令は、全て３２ビット命令である。３２ビット命令のみがＩＲＡＭライン５４２に保存されるべき状態で、Ｐｄ４アウトプット５３０のような、Ｐｄ４ビットの半分のみが、書き込まれることを必要とする。３２ビット命令の第２の半分の１６ビットに関連する、Ｐｄ４アウトプット５３２のようなＰｄ４アウトプットは、必要とされず、ＩＲＡＭ５０３の中には書き込まれない。１６０ビットのＬｌ Ｉキャッシュラインにおいては、４つの３２ビット命令と３２ビットのプレデコード情報がそこに保存されることができ、その１６ビットのみが、第１動作モードについての場合のように、Ｌｌ ＩキャッシュラインがＬ３２ビット命令のみを有しているとき保存されることを要求される。平均して、これは、Ｌｌ Ｉキャッシュラインの１６０ビットのうちの１６ビットを書き込まないことにより、Ｌｌ Ｉキャッシュに書き込むとき１０％節電(10% savings in power)に相当する。
【００２９】
命令がＩキャッシュに書き込まれるとき、タグ情報もまたＩＣＡＭ５０２に書き込まれる。ＩＣＡＭユニット５０２において、フェッチ信号５２６の時点でのフェッチアドレス５２４およびプロセッサ状態が、ＩＣＡＭライン５１２のようなＩＣＡＭラインに保存される。ＩＣＡＭライン５１２がＩＲＡＭライン５４２に直接に関連付けられているので、そのため、ＩＣＡＭユニット５０２におけるＬｌ Ｉキャッシュヒット５５０で(on an Ll Icache hit 550)、ＩＲＡＭユニット５０３における適切なラインが、読み取り制御ロジック５４６の制御下でＩＲＡＭアウトプット５５２上に出力されることができる。ＩＲＡＭアウトプット５５２は、所望の命令、および、命令アラインメント（ＩＤＡ）ステージ５１６に送られる複数の次の命令を含んでいる。
【００３０】
命令アラインメントステージ５１６中で受け取られた命令は、位置合わせされ(aligned)、それに続くデコードおよび実行ステージ５５４のために準備される。命令アラインメントステージ５１６およびデコードステージ５５４は、例えば、Ｐｄ４ビットがパイプラインを見つけ出している(track down)ので、キャッシュラインの状態を知っている。ＩＲＡＭユニット５０３からの命令にアクセスするためのパイプラインステージから始まって、Ｐｄ４ビットは、命令アラインメントステージ５１６、そしてつぎにデコードステージ５５４へと進む。もしIＤＡ５１６におけるプロセッサ２１０のオペレーティングモード状態が、３２ビットのみの命令のための第１動作モードである場合、そのときは、アラインメントロジックは、１番目、３番目、５番目、および、他の奇数のプレデコードビットフィールド（Ｐｄ４）のみが有効であることを知っている。もしＩＤＡ５１６におけるプロセッサ２１０のオペレーティングモード状態が、１６ビットおよび３２ビットの命令のための第２動作モードである場合、そのときは、全てのＰｄ４フィールドが有効であることができるので、全てのＰｄ４フィールドが考慮される。始まりのＰｄ４フィールドは、関連する１６ビットフィールドが３２ビット命令の最初の半分であるのかあるいは１６ビット命令であるのかを決定するために評価される。もしＰｄ４フィールドが、その関連する１６ビットフィールドが３２ビット命令の最初の半分であることを示す場合、そのときは、次のＰｄ４フィールドは無視される。もしＰｄ４フィールドが１６ビット命令を示す場合、そのときは、次の連続するＰｄ４フィールドは同様に調べられる。このプロセスは続き、フェッチされたキャッシュライン中の残りのＰｄ４フィールドに波及する(rippling across)。
【００３１】
例として、Ｌｌキャッシュラインヒットで(on an Ll cache line hit)、ＩＲＡＭアウトプット５５２は、最大４つまでの１６ビット命令、２つの１６ビット命令および単一の３２ビット命令、あるいは最大２つまでの３２ビット命令、を可能とする６４ビット命令と関連するプレデコードビットとを命令アラインメントユニット５１６に供給することができる。あるいは、ＩＲＡＭアウトプット５５２は、ＩＲＡＭライン５４２のようなフルの(full)ＩＲＡＭキャッシュラインを供給することができる。パワーを節約するために、もし、ワードが位置合わせされた境界で３２ビット命令のみを使用するモードにプロセッサがあることをプロセッサ状態５０６が示す場合、そのときは、ＩＲＡＭライン５４２から読み取られるべき命令は、全て３２ビット命令と考慮される。ＩＲＡＭライン５４２に３２ビット命令のみが保存された状態で、Ｐｄ４フィールド５５６のような、Ｐｄ４ビットの半分のみが読み取られることを必要とする。３２ビット命令の第２の半分の１６ビットに関連する、Ｐｄ４フィールド５５８のようなＰｄ４ビットは、必要とされない。１６０ビットのＬｌ Ｉキャッシュラインでは、４つの３２ビット命令と３２ビットのプレデコード情報とが保存されることができる。然しながら、この例では、プレデコード情報の１６ビットのみが読み取られることを要求される。平均して、これは、Ｌｌ Ｉキャッシュラインの１６０ビットのうちの１６ビットを読み取らないことにより、Ｌｌ Ｉキャッシュから読み取るとき１０％節電に相当する。
【００３２】
プロセッサオペレーティングモード状態に応じて変わるパワーセービング(power savings)を示す図３Ａ−３Ｃおよび図４Ａ−４Ｃにおいて、２つの例が提供された。プロセッサフェッチオペレーティングモード状態（ＦＯＭＳ）５１０は、各タグ、例えばタグ５１２など、に保存される。保存されたＦＯＭＳ５１０は、プレデコードビットを書き込むこと、および、読む取ることのために、第１動作モードを表わす第１の状態５８０、あるいは第２動作モードを表わす第２の状態５８２を、示すことができる。図３ＣのＬｌ Ｉキャッシュライン３５０の例においては、全体のＬｌ Ｉキャッシュライン３５０は、１６ビットおよび３２ビットの命令から構成され、それは、ＩＲＡＭ５０３に書き込まれるとき、第２の状態５８２を示すＦＯＭＳを有するＩＣＡＭタグに関連付けられている。図４ＣのＬｌ Ｉキャッシュライン４５０の例においては、全体のＬｌ Ｉキャッシュライン４５０は、３２ビット命令のみから構成され、それは、ＩＲＡＭ５０３に書き込まれるとき、第１の状態５８０を示すＦＯＭＳを有するＩＣＡＭタグに関連付けられている。第２の状態５８２において、全てのＰｄ４フィールドは、書き込みおよび読み取りの両方に対しイネーブルにされている。第１の状態５８０においては、ＩＲＡＭ５０３命令を書き込むことあるいは読み取ることについて、各３２ビット命令の最初の半分の１６ビットに関連するＰｄ４フィールドのみがイネーブルにされており、そして、各３２ビット命令の第２の半分の１６ビットに関連するＰｄ４フィールドはイネーブルにされていない。
【００３３】
図６は、命令キャッシュラインからのプレデコード情報を書き込み読み取るときにパワーを節約するための、本発明に従う、オペレーショナルステップを示すフローチャート６００である。第１のステップ６１０において、プロセッサは、命令が２つのタイプである場合に実行されるべき命令をフェッチする。第１のタイプの命令は、第１の長さ、例えば１６ビット、にフォーマットされ、また、第２のタイプの命令は、第２の長さにフォーマットされる。第２の長さ、例えば３２ビット、は第１の長さよりも長い。次のステップ６１５において、第１のタイプおよび第２のタイプの命令は、プレデコーダ中で部分的にデコードされる。ステップ６２０において、プレデコード情報が、部分的にデコードされた命令のために生成される。ステップ６２５において、命令が第２のタイプに制限されることをプロセッサオペレーティングモード状態が示すかどうかが、決定される。もしプロセッサオペレーティングモード状態が、プロセッサが第２のタイプに命令を制限しないような状態であるならば、書き込みのために命令キャッシュラインにおいて全てのプレデコードビットをイネーブルにするためにステップ６３０が続けられる。もしプロセッサオペレーティングモード状態が、プロセッサが第２のタイプに命令を制限するような状態である場合、書き込みのために命令キャッシュラインにおいて第２のタイプの命令に関連するプレデコードビットを選択的にイネーブルにするためにステップ６３５が続けられる。フェッチされた命令についてキャッシュラインに書き込んだ後に、システムはステップ６１０に戻る。
【００３４】
本発明は、説明されたパイプラインステージ５００に限定されず、また、命令キャッシュにプレデコード情報を保存する、可変長命令を有している任意のパイプラインプロセッサに更に適用可能である。可変長プロセッサ命令セットの拡張(extensions)は、もし拡張が、プレデコード情報が選択的に制御されることができ、それによって書き込み及び読み取りパワーを節約するような、命令セット使用の特有のモードをサポートする場合は、本発明によって適応されることができる。例えば、６４ビット命令がＬｌ Ｉキャッシュライン全体にわたって分割されないような、全ての６４ビット命令がダブルワード境界に(on double word boundaries)位置する場合、第３のモードは指定されることができる。６４ビット命令タイプを使用するプロセッサは、上記に説明された例示的なプロセッサ２１０の拡張であることが可能である。拡張されたプロセッサは、３２ビット命令のみに制限された第１の状態５８０、１６ビット命令および３２ビット命令の両方のための第２の状態５８２、および６４ビット命令のみに制限された第３の状態５８４、のために符号化されたオペレーティングモード状態を有することができるであろう。図５のＩＲＡＭライン５４２のような、Ｉキャッシュラインにおける６４ビット命令は、４つの２０ビットフィールドに区分されるであろう、そこでは、各２０ビットフィールドは、６４ビット命令の１セクションと関連するＰｄ４フィールドとを有する。Ｌｌ Ｉキャッシュライン中に６４ビット命令を備えた状態で、６４ビット命令の最初の１６ビットに関連するＰｄ４フィールドは、６４ビット命令全体について使用されるだろう、そして、次の３つのＰｄ４フィールドは必要とされないであろう。Ｌｌ Ｉキャッシュラインにおいて、第１番目、第５番目、第９番目、および同様な類のＰｄ４フィールドは使用されるであろう、一方、その他の、第２番目、第３番目、第４番目、第６番目、第７番目、第８番目、第１０番目、および同様な類のＰｄ４フィールドは、そこに書き込まれ、あるいはそこから読み取られないであろう。平均して、これは、Ｌｌ Ｉキャッシュラインにおける１６０ビットのうちの２４ビットを書き込まないことおよび読み取らないことにより、Ｌｌ Ｉキャッシュにアクセスするときは、１５％節電に相当する。
【００３５】
本発明はまた、２のべき乗である命令の長さに制限されない。例えば、１６ビットおよび２４ビットの命令、および、命令を２４ビットタイプに制限するモード、を有している代替アーキテクチャを考慮してください。１６ビットおよび２４ビットの命令の両方は、４つのプレデコードビットを必要とする。この例において、命令キャッシュラインは、８ビット命令セクションおよび２ビットプレデコードセクションに区分される。１６ビット命令は、｛８ビット、２ビットＰｄ２、８ビット、２ビットＰｄ２｝として編成された２０ビットから成るであろう。２４ビット命令は、｛８ビット、２ビットＰｄ２、８ビット、２−ビットＰｄ２、８ビット、２ビットＰｄ２｝として編成された３０ビットから成るであろう。１６ビット命令を保存する１６０ビットキャッシュラインは、全ビットが完全に利用された合計１６０ビットの場合、８つの２０ビットセクションとして編成された８つの１６ビット命令を保持することが可能であろう。２４ビット命令を保存する１６０ビットキャッシュラインは、有効でない５つのＰｄ２  ２ビットフィールドと、利用されないライン中に残っている１０ビットとを持った合計１５０ビットの場合、５つの３０ビットセクションとして編成された５つの２４ビット命令を保持することが可能であろう。プロセッサオペレーティングモードに応じて２４ビット命令の書き込みあるいは読み取りを有することによって、有効な情報を含んでいるキャッシュライン中のビットのみがアクセスされ、２０ビットはアクセスされず、ライン中で全ビットを書き込み読み取ることと比べて、パワーを節約する。
【００３６】
本発明は、現在好ましいコンテキストで開示されているが、本教示は、この開示および添付の特許請求の範囲と整合する様々なコンテキストに適応されることができることは認識されるだろう。  
【図面の簡単な説明】
【００３７】
【図１】図１は、本発明の一実施形態が有利に使用されることができる例示的な無線通信システムのグラフィック説明図である。
【図２】図２は、本発明に従う、プロセッサ複合体のグラフィック説明図である。
【図３Ａ】図３Ａは、本発明に従う、１６および３２ビットの可変長の命令を含んでいる例示的なプログラムセグメントのグラフィック説明図である。
【図３Ｂ】図３Ｂは、本発明に従う、図３Ａのプログラムセグメントからの命令を含んでいる、レベル２の命令およびデータキャッシュ（Ｌ２キャッシュ）からの命令ラインのグラフィック説明図である。
【図３Ｃ】図３Ｃは、本発明に従う、図３Ａのプログラムセグメントからの命令を含んでいる、レベル１の命令キャッシュ（Ｌｌ Ｉキャッシュ）からの命令ラインのグラフィック説明図である。
【図４Ａ】図４Ａは、本発明に従う、３２−ビット命令のみに制限されたプロセッサモードで動作する３２ビット命令のみを含んでいる、例示的なプログラムセグメントのグラフィック説明図である。
【図４Ｂ】図４Ｂは、本発明に従う、図４Ａのプログラムセグメントからの命令を含んでいるＬ２キャッシュからの命令ラインのグラフィック説明図である。
【図４Ｃ】図４Ｃは、本発明に従う、図４Ａのプログラムセグメントからの命令を含んでいるＬｌ Ｉキャッシュからの命令ラインのグラフィック説明図である。
【図５】図５は、Ｌｌ Ｉキャッシュに書き込み、Ｌｌ Ｉキャッシュから読み取るときに、パワーを節約するために本発明に従って動作するプロセッサパイプラインステージのグラフィック説明図である。
【図６】図６は、本発明に従う、命令キャッシュラインからのプレデコード情報を書き込み読み取るときにパワーを節約するために必要とされるオペレーショナルステップのフローチャートである。
【図１】
2008532187.tif 000003
【図２】
2008532187.tif 000004
【図３Ａ】
2008532187.tif 000005
【図３Ｂ】
2008532187.tif 000006
【図３Ｃ】
2008532187.tif 000007
【図４Ａ】
2008532187.tif 000008
【図４Ｂ】
2008532187.tif 000009
【図４Ｃ】
2008532187.tif 000010
【図５】
2008532187.tif 000011
【図６】
2008532187.tif 000012
【国際調査報告】
2008532187.tif 000013
2008532187.tif 000014