(57)【特許請求の範囲】
【請求項１】
第１のキャッシュ・ラインに格納された命令の第１の部分を取得することと；
次のキャッシュ・ラインに格納された前記命令の第２の部分を取得することと；
修復されたプレデコード情報を形成するために、プロセッサ・パイプライン・ステージで前記命令の前記第１および第２の部分をプレデコードすることと；
前記修復されたプレデコード情報を前記命令に関係づけられたアドレスを利用してプレデコード修復キャッシュに書き込むことと；
を備える、プレデコード修復キャッシュを満たす方法。
【請求項２】
前記命令の前記第１および第２の部分は、レベル１命令キャッシュに格納される、請求項１に記載の方法。
【請求項３】
前記取得された命令が有効なプレデコード情報を含むかどうか前記プレデコードに先立って決定すること、
をさらに備える、請求項１に記載の方法。
【請求項４】
命令キャッシュ内の前記命令に関係づけられたアドレスを利用して前記プレデコード修復キャッシュからプレデコード情報を取得することと；
前記プレデコード修復キャッシュの前記アドレス指定された位置においてミスすることと；
有効なプレデコード情報が利用可能でないという決定に応答して前記プレデコード修復キャッシュに前記修復されたプレデコード情報を書き込むことと；
をさらに備える、請求項３に記載の方法。
【請求項５】
前記第１のキャッシュ・ラインは、少なくとも２つの異なる長さにフォーマットされた命令を保持する、請求項１に記載の方法。
【請求項６】
前記プレデコード情報は、前記命令の前記第１の部分に関連づけられたプレデコード・ビットの第１のセット、および前記命令の前記第２の部分に関連づけられたプレデコード・ビットの第２のセットにエンコードされる、請求項１に記載の方法。
【請求項７】
前記レベル１命令キャッシュが消去される時はいつも前記プレデコード修復キャッシュを消去すること
をさらに備える請求項２に記載の方法。
【請求項８】
エントリが前記レベル１命令キャッシュに書き込まれるときはいつも、前記プレデコード修復キャッシュのエントリを無効にすること
をさらに備える請求項２に記載の方法。
【請求項９】
２つのキャッシュ・ラインにまたがる命令を実行するための方法であって、前記方法は：
２つのキャッシュ・ラインにまたがる命令の第１の部分であって、前記第１の部分は、命令キャッシュの第１のキャッシュ・ラインに格納されるものである、前記第１の部分を取得することと；
前記命令に関係づけられたプレデコード情報を取得することであって、前記プレデコード情報は、前記命令キャッシュとは別のプレデコード修復キャッシュから取得されるものである、前記プレデコード情報を取得することと；
前記第１のキャッシュ・ラインに続く次のキャッシュ・ラインに格納された前記命令の第２の部分を取得することと；
前記プレデコード情報に応答して前記命令を実行することと；
を備える方法
【請求項１０】
有効にアラインされたプレデコード情報を伴う再構成された命令を生成するために、前記プレデコード情報を前記命令の前記第１および第２の部分と組合せること、
をさらに備える請求項９に記載の方法。
【請求項１１】
前記プレデコード情報を前記命令の前記第１および第２の部分と組合せることは：
前記プレデコード情報の第１の部分と第２の部分を選択することと；
前記命令キャッシュから前記命令の前記第１の部分と前記第２の部分を選択することと；
前記有効にアラインされたプレデコード情報を伴う再構成された命令を生成するために、前記プレデコード情報の前記第１の部分および前記第２の部分で前記命令の前記第１の部分および前記第２の部分をアラインすることと；
をさらに備える、請求項１０に記載の方法。
【請求項１２】
前記命令の前記第１の部分は、命令ビットの第１のセットおよびプレデコード・ビットの関係する第１のセットを含み、前記命令の前記第２の部分は、命令ビットの第２のセットおよびプレデコード・ビットの関係する第２のセットを含む、請求項９に記載の方法。
【請求項１３】
修復されたプレデコード・ビットの第１のセット及び第２のセットを形成するために前記命令ビットをプレデコードすること
をさらに備える、請求項１２に記載の方法。
【請求項１４】
前記プレデコード・ビットの第１のセットに代わって前記修復されたプレデコード・ビットの第１のセットを選択することと；
前記プレデコード・ビットの第２のセットに代わって前記修復されたプレデコード・ビットの第２のセットを選択することと；
前記プレデコード情報を修復したことに応答してプロセッサ・プレデコーダ・ステージをバイパスすることと；
をさらに備える、請求項１３に記載の方法。
【請求項１５】
少なくとも、第１の長さを有する命令と前記第１の長さより長い第２の長さを有する命令とを命令キャッシュ・ラインに格納するように動作可能な命令キャッシュと；
修復されたプレデコード情報を形成するために、前記命令キャッシュから取得した命令であって無効プレデコード情報を有する前記命令をプレデコードするように動作可能なプレデコーダと；
前記命令キャッシュ内の２つのキャッシュ・ラインにまたがる前記第２の長さの命令に関係づけられた前記修復されたプレデコード情報を格納するように動作可能なプレデコード修復キャッシュと、
を含む、プレデコード修復キャッシュを利用するための装置。
【請求項１６】
有効にアラインされたプレデコード情報を伴う再構成された命令を生成するために、前記プレデコード修復キャッシュから取得された修復されたプレデコード情報を前記第２の長さの命令の第１の部分および第２の部分と組合せるように動作可能な結合器、
をさらに備える、請求項１５に記載の装置。
【請求項１７】
有効なプレデコード情報を有する、前記命令キャッシュから取得された命令に対し前記プレデコーダをバイパスするように動作可能な前記プレデコーダを迂回するバイパス経路
をさらに備える、請求項１５に記載の装置。
【請求項１８】
有効にアラインされたプレデコード情報を伴う前記再構成された命令に対しプレデコーダをバイパスするように動作可能な前記プレデコーダを迂回するバイパス経路
をさらに備える、請求項１６に記載の装置。
【請求項１９】
前記結合器は：
前記第２の長さの命令に関係づけられたアドレスを利用して、前記プレデコード修復キャッシュから取得された修復されたプレデコード情報の第１の部分および第２の部分を選択するように、かつ前記命令キャッシュから取得された前記第２の長さの前記命令の第１の部分および第２の部分を選択するように動作可能なマルチプレクサと；
前記修復されたプレデコード情報の前記第１の部分を前記第２の長さの前記命令の前記第１の部分と組合せるように、かつ、前記修復されたプレデコード情報の前記第２の部分を前記第２の長さの前記命令の前記第２の部分と組合せるように動作可能なアラインメント論理と、
を含む、請求項１６に記載の装置。
【請求項２０】
前記プレデコーダがバイパスされる場合、前記プレデコーダは、ゲート・オフされる、請求項１８に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に、種々の長さを有する命令を処理するプロセッサの効率を改善する手法に関する。より詳細には、２つ以上のキャッシュ・ラインにまたがる命令のためのプレデコード修復キャッシュにプレデコード情報を格納するための有利な手法に関する。
【背景技術】
【０００２】
多くのプロセッサは、可変長命令を有する命令セットをサポートする。例えば、プロセッサの命令セットは、３２ビット命令および１６ビット命令から成ることができる。また、プロセッサは、例えば命令キャッシュ、データ・キャッシュおよびシステム・メモリを含む複数レベルのキャッシュを有する階層メモリ構造を有することができる。プロセッサが短い持続時間のパイプライン・ステージを備え、高クロックレートで動作する深い層の実行パイプラインも有する場合、プロセッサは、プレデコード（predecode）・ステージを有し、後続のデコード・ステージを簡略にし、それによりパイプラインをストリーム・ライン化するために命令を前処理するだろう。プレデコード・パイプライン・ステージは、一般的に命令キャッシュ・ミスの間、その命令ミスによって取得される命令を部分的にデコードするために動作する。プレデコード情報は、取得された命令と共に命令キャッシュに書き込まれる。
【発明の概要】
【０００３】
可変長命令プロセッサにおいて、ミスによって取得された命令は、長さが異なり得る。また、長い命令は、２つのキャッシュ・ラインにまたがることができる。２つのキャッシュ・ラインにまたがる命令に関し、命令の両部分は、命令を適切にプレデコードするために取得されなければならない。このことはプレデコード機能の複雑さを増加させ、性能および電力利用率に影響し得る。
【０００４】
いくつかの態様の中で、本発明は、プレデコード修復キャッシュを用いることにより性能が改善され、電力が節約されうることを理解する。本発明の第１の実施形態は、プレデコード修復（repair）キャッシュを満たす（filling）方法に対する必要性が存在することを理解する。第１のキャッシュ・ラインに格納された１つの命令の第１の部分が取得される。次のキャッシュ・ラインに格納されたその命令の第２の部分も取得される。命令の第１および第２の部分は、修復されたプレデコード情報を形成するためにプロセッサ・パイプライン・ステージでプレデコードされる。修復されたプレデコード情報は、命令に関係づけられたアドレスを利用してプレデコード修復キャッシュに書き込まれる。
【０００５】
本発明の別の実施形態は、２つのキャッシュ・ラインにまたがる命令を実行する方法を検討する。２つのキャッシュ・ラインにまたがる命令の第１の部分が取得される。ここでこの命令の第１の部分は、命令キャッシュ内の第１のキャッシュ・ラインに格納されている。命令に関係づけられたプレデコード情報は、命令キャッシュとは別のプレデコード修復キャッシュから取得される。第１のキャッシュ・ラインに続く次のキャッシュ・ラインに格納された命令の第２の部分も取得される。命令は、プレデコード情報に応答して実行される。
【０００６】
さらに別の実施形態は、プレデコード修復キャッシュを利用するための装置を取り扱う。命令キャッシュは、命令キャッシュ・ライン内に少なくとも第１の長さを有する命令と第１の長さより長い第２の長さを有する命令とを格納するように動作可能である。プレデコーダは、命令キャッシュから取得された命令をプレデコードするように動作可能である。これらの命令は、修復されたプレデコード情報を形成するための無効なプレデコード情報を有する。プレデコード修復キャッシュは、命令キャッシュの２つのキャッシュ・ラインにまたがる第２の長さの命令に関係づけられた修復されたプレデコード情報を格納するように動作可能である。
【０００７】
本発明のより完全な理解および本発明のさらに別の特徴及び利点は以下の詳細な説明および添付の図面から明らかになるだろう。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施形態が有利に採用される例示的な無線通信システムを示す図。
【図２】本発明の、プロセッサ、レベル１命令キャッシュ（Ｌ１  Ｉキャッシュ）、レベル２キャッシュ（Ｌ２キャッシュ）、およびプレデコード修復キャッシュを有する命令フロー論理を示す図。
【図３Ａ】本発明の、１６および３２ビットの長さの異なる命令を含む例示的なプログラム・セグメントを示す図。
【図３Ｂ】図３Ａのプログラム・セグメント３００からの命令を含む例示的なＬ１  Ｉキャッシュ・ラインを示す図。
【図４Ａ】本発明の、例示的なＬ１  Ｉキャッシュ・セグメントを示す図。
【図４Ｂ】本発明の、プレデコード修復キャッシュ・エントリを準備するためのパイプライン・ステージの図。
【図４Ｃ】本発明の、ライン横断命令（line crosser instruction）（２つのキャッシュ・ラインにまたがる命令）のための有効なプレデコード・ビットをプレデコード修復キャッシュから取得することにより電力を節約する動作を示す、プロセッサ・パイプライン・ステージの図。
【図５】本発明の、Ｌ１  Ｉキャッシュにおけるミスに続いてプレデコード修復キャッシュへのエントリを準備するための動作ステップの処理を示す図。
【図６】本発明の、ライン横断命令がＬ１  Ｉキャッシュから取得された後の動作ステップのフローチャート。
【発明を実施するための形態】
【０００９】
本発明は、本発明のいくつかの実施形態を示す添付図面を参照して本発明をより完全に説明されることになる。しかしながら、本発明は種々の形式で具体化されるかもしれず、ここに記載された実施形態に限定されるとして解釈されるべきではない。むしろ、これらの実施形態は、本開示が完璧かつ完全であり、当業者に本発明の範囲を完全に伝えるように提供されている。
【００１０】
本発明の教示に従う動作時に動作するため、または動作を実行するための計算機プログラム・コードすなわち「プログラム・コード」は、高級プログラミング言語、例えばＣ、Ｃ＋＋、ＪＡＶＡ（登録商標）、スモールトーク、ＪａｖａＳｃｒｉｐｔ（登録商標）、Ｖｉｓｕａｌ  Ｂａｓｉｃ（登録商標）、ＴＳＱＬ、パール、または種々の他のプログラミング言語で書かれることができる。対象とするプロセッサ・アーキテクチャのためのプログラムは、直接ネイティブ・アセンブラ言語で書かれることができる。ネイティブ・アセンブラ・プログラムは、マシン・レベルのバイナリ命令の命令ニーモニック表現を用いる。プログラム・コードまたは計算機可読媒体は、ここで用いられると、プロセッサがフォーマットを理解できるオブジェクトコードのようなマシン言語コードを指す。
【００１１】
図１に本発明の実施形態が有利に採用されることができる例示的な無線通信システム１００を示す。例示のために、図１は３つのリモート・ユニット１２０、１３０、および１５０、並びに２つの基地局１４０を示す。一般的な無線通信システムがより多くのリモート・ユニットおよび基地局を有しても良いことは理解されるだろう。リモート・ユニット１２０、１３０、および１５０は、構成要素１２５Ａ、１２５Ｂ、および１２５Ｃで表されるような、ハードウェア構成要素、ソフトウェア構成要素、または双方を含む。これらは以下でさらに検討されるように本発明を具体化するように適合されている。図１は、基地局１４０からの順方向リンク信号１８０、並びにリモート・ユニット１２０、１３０、および１５０、並びにリモート・ユニット１２０、１３０、および１５０から基地局１４０への逆方向リンク信号１９０を示す。
【００１２】
図１において、リモート・ユニット１２０は、移動電話として示され、リモート・ユニット１３０は、ポータブル・コンピュータとして示され、リモート・ユニット１５０は、無線ローカル・ループ・システムの固定位置のリモート・ユニットとして示される。例として、リモート・ユニットは、代替的には携帯電話、ポケットベル、携帯無線、携帯用パーソナル通信システム（ＰＣＳ）ユニット、個人情報端末のような携帯用データ・ユニット、または検針機器のような固定位置のデータ・ユニットであることができる。図１は、本開示の教示に従うリモート・ユニットを例示するが、本開示は、これらの例示的な例示ユニットに限定されない。本発明の実施携帯は可変長命令を有し命令キャッシュにプレデコード情報を格納するパイプライン・プロセッサを用いる任意のデバイスに適切に採用されることができる。
【００１３】
図２にプロセッサ２０４、レベル１命令キャッシュ（Ｌ１  Ｉキャッシュ）２０６、レベル２キャッシュ（Ｌ２キャッシュ）２０８、およびプレデコード修復キャッシュ２１０を有する命令フロー論理２００を示す。命令フロー論理２００は、プレデコーダ２１４、フィル・バッファ２１６、命令キャッシュ・ステージ１（ＩＣ１）２１８、命令キャッシュ・ステージ２（ＩＣ２）２２０、マルチプレクサ２２２、およびシステム・メモリに対するインターフェイス２２４をさらに含む。本発明の例示および検討の明快さのために、プロセッサ２０４に接続されることができる例えば通信サブシステムのような周辺デバイスは示さない。命令フロー論理２００は、プログラム・コードを実行するためにハードウェア部品１２５Ａ乃至Ｃに適切に採用されることができる。プロセッサ２０４は、直接Ｌ１  Ｉキャッシュ２０６、およびマルチプレクサ２２２に接続される。プロセッサ２０４は、キャッシュおよびシステム・メモリから階層的な方法で命令を取得する。例えば、プロセッサ２０４は、Ｌ１  Ｉキャッシュの入力バス２２８上に取得アドレスを生成することにより命令を取得する。プロセッサ２０４は、プロセッサの動作のプログラマ指定モードの標識として、動作モード状態信号を命令フロー論理回路２００に提供することができる。
【００１４】
プロセッサの命令セットは、複数長さのフォーマットでエンコードされた（encoded）命令を含む。ここで、より長い命令は、一般に、可変長命令セットにおいて利用可能な最短の命令フォーマットの長さの倍数である。命令は、命令の長さに依存して変化することができる複雑なエンコーディング（encoding）を有していることができるし、その命令が異なる長さの命令に隣接していることができるため、取得された命令のアラインメントとデコーディングは、短いクロック期間を有する１つのプロセッサ・パイプライン・ステージの能力を超えた処理を必要とすることができる。以下により詳細に説明するように、命令の複雑さのレベルに起因して、プロセッサは、別の命令・荒印面とパイプライン・ステージを含むことができる。また、命令デコード動作をプレデコード・ステップと１つ以上のデコード・パイプライン・ステージに分けることができる。
【００１５】
プレデコード・ステップは、Ｌ１  Ｉキャッシュ・ミスを処理する間にプレデコード動作をすることによって、通常のパイプライン実行から適切に隠されることができる。Ｌ１  Ｉキャッシュ・ミス処理は、取得される命令がＬ１  Ｉキャッシュ内で見つからず、メモリ階層のより高いレベルから取得しなければならない場合に発生する。取得された命令を例えばＬ２キャッシュ２０８から受けとると、取得された命令はプレデコードされる。プレデコード動作は、取得された命令と共にプレデコード情報をＬ１命令キャッシュに格納する。可変長命令のため、命令は、命令キャッシュ・ラインにまたがって命令を格納する長さであることができる。例えば、３２ビット命令は、２つの部分、すなわち第１の命令キャッシュ・ラインの終わりに格納される第１の１６ビットの部分と、次に続く命令キャッシュ・ラインの始まりに格納される１６ビットの第２の部分とに分割されることができる。以下にさらに詳細に検討するように、命令がキャッシュ・ライン境界にまたがる場合、プレデコード動作の複雑さは増加する。
【００１６】
動作中に、プロセッサ２０４は、Ｌ１  Ｉキャッシュ２０６にアクセスし、アドレス指定された命令がＬ１  Ｉキャッシュにあるか照合メカニズムを用いて判定する。取得される命令に対する照合がＬ１  Ｉキャッシュ２０６内に見つからない場合、ミスが発生する。次に、プロセッサ２０４は、Ｌ２キャッシュ２０８へアクセス要求２３２を行う。例えば、Ｌ１  Ｉキャッシュ２０６の初期化のとき、Ｌ１  Ｉキャッシュ２０６は、命令で満たしているため、Ｉキャッシュは、無効コンテンツを有しているとして扱われ、ミスがあるだろう。また、プログラムがコードの新しいセクションに分岐する場合、Ｉキャッシュ取得時にＬ１  Ｉキャッシュ・ミスが発生する機会がより大きくなるだろう。
【００１７】
命令がＬ２キャッシュ２０８内でヒットした場合、所望の命令を含むＬ２キャッシュ・ラインは、端子Ａ  ２３４上でプレデコーダ２１４へ出力される。プレデコーダ２１４は、ミス時に続く一連のステップを制御する処理パイプラインのプレデコード・パイプライン・ステージの間、動作する。プレデコーダ２１４は、Ｌ２キャッシュから取得した命令を部分的にデコードし、命令、その命令に関係づけられたプレデコード・ビット、およびタグ情報をフィル・バッファ２１６に接続された出力バス２３８上に出力する。フィル・バッファ２１６は、様々な格納およびプロセッサ遅延に適応するために弾力のある格納を提供する。フィル・バッファ２１６の出力バス２４０はバッファリングされた命令、関係するプレデコード・ビット、およびタグ情報をＬ１  Ｉキャッシュ２０６およびマルチプレクサ２２２に接続する。この命令は、マルチプレクサ制御（Ｍｃｔｌ）信号２４２によって選択されるとマルチプレクサ２２２からプロセッサ２０４へ進む。
【００１８】
Ｌ１  Ｉキャッシュ２０６内の命令ヒット時に、取得された命令およびプレデコード・ビットは命令バス２４４を通じてマルチプレクサ２２２に接続される。命令およびプレデコード・ビットはＭｃｔｌ信号２４２によって選択されるとマルチプレクサ２２２からプロセッサ２０４へ進む。プレデコード・ビットは、効率的な処理を支援するために複数の方法でフォーマットされることができる。例えば、４ビットのプレデコード・ビット（Ｐｄ４）は各１６ビット命令と共に提供されることができる。また、２セットのＰｄ４ビットは、各３２ビット命令と共に提供されることができる。プレデコード・ビットに格納される必要がある情報に依存して、２ビット、３ビット、または３ビットより大きいビットがプレデコードされ、関係する命令と共にＬ１  Ｉキャッシュ・ラインに格納されることができる。
【００１９】
図３Ａに１６および３２ビットの異なる長さの命令を適切に含むことができる例示的なプログラム・セグメント３００を示す。例示的なプログラム・セグメント３００は、Ｌ１  Ｉキャッシュ２０６およびＬ２キャッシュ２０８を含む命令フロー論理２００のメモリ階層に適切に格納されることができる。例示の目的のために、プログラム・セグメントが１つ以上のキャッシュ・ラインから検索されると仮定されているが、本発明の教示は、可変長命令が格納セグメント境界におよぶことができるプログラム・セグメントを格納するいかなるメモリ・デバイスにも適用可能であることに注意するべきである。一般に、用語キャッシュ・ラインは命令ストリングまたは命令ストリームと呼ばれることができる。キャッシュ・ラインが固定長であるため、用語命令ストリングまたは用語命令ストリームは１つ以上のプログラム・セグメントを指す。これらはキャッシュ・ラインの境界にまでおよぶことができるし、境界をまたがって分割される命令を有することができる。
【００２０】
プログラム・セグメント３００は、１６ビットおよび３２ビットの命令から成る可変長命令セットからの命令３０２を含む。例えば、プロセッサ２０４は、複数の形式の命令に対して１６ビットおよび３２ビットの命令フォーマットを用いることができる。また、命令形式の使用を指定および制約するいくつかの動作モードをサポートすることができる。例えば、プロセッサ２０４は、３２ビットの命令のみが用いられるように指定する第１の動作モードを有し、また１６ビットと３２ビットの命令の組合せが用いられるように指定する第２の動作モードを有することができる。プロセッサは複数の動作モードを有することができるが、本発明の検討の明快さのために、例示的なプロセッサ２０４の説明は主として上で説明した第２の動作モードに限定する。
【００２１】
種々の実施形態を例示するために、いくつかの例示的な１６ビットおよび３２ビットの命令を図３Ａに示す。例示のために、プログラムの相対バイト標識３０４は、キャッシュ・ライン内の命令が始まるバイト位置を表し、間接的に命令のサイズを示す。例えば、ＡＤＤ  Ｒ５，Ｒ４，Ｒ３という命令３０６は、相対バイト位置００で始まり、バイト位置０１で終わる。このように、ＡＤＤ  Ｒ５，Ｒ４，Ｒ３という命令３０６は１６ビット命令である。同様に、ＡＤＤ命令３０９も長さ１６ビットである。読み込み（ＬＯＡＤ）命令３０７、ＬＯＡＤ命令３０８、および格納（ＳＴＯＲＥ）命令３１０は長さ３２ビットである。
【００２２】
異なるプロセッサの実施において、例えば用いられる製造技術に基づいてプロセッサおよびメモリ階層設計においてなされる選択に依存して、キャッシュ・ライン・サイズは、変化することができる。Ｌ２キャッシュ２０８は２５６ビットまたは５１２ビットのキャッシュ・ラインを用いることができる、また、Ｌ１キャッシュ２０６は、１２８ビットのキャッシュ・ラインのようなより小さいキャッシュ・ラインを用いることができる。例示のために、プログラム・セグメント３００を相対アドレス００で始まるよう示したことに注意するべきである。そのようなプログラム・セグメント３００は、キャッシュ・ラインの種々の点に開始点を設定し、複数キャッシュ・ライン間にわたることができることが理解されるだろう。
【００２３】
図３Ｂに図３Ａのプログラム・セグメント３００からの命令を含む例示的なＬ１  Ｉキャッシュ・ライン３５０を示す。例示的な第１のＬ１  Ｉキャッシュ・ライン３２０および例示的な第２のＬ１  Ｉキャッシュ・ライン３２２は、隣接するキャッシュ・ラインであり、図２のＬ１  Ｉキャッシュ２０６にある。第１のＬ１  Ｉキャッシュ・ライン３２０は、複数の２０ビット・フィールドから成る。ここで例えば２０ビット・フィールド３２６のような各２０ビット・フィールドは、１６ビット・フィールド３２７とそれに関係する４ビットのプレデコード（Ｐｄ４）フィールド３２８とで構成されている。この実施形態において、Ｌ１キャッシュは、１２８ビットを命令に利用し、また、８つのＰｄ４フィールドのために追加スペースを必要とし、結果として１６０ビットのＬ１キャッシュ・ラインとなる。１つの４ビットＰｄ４フィールドは１６ビット命令に用いられ、２つのＰｄ４フィールドは３２ビット命令に用いられる。４ビットＰｄ４フィールドはＰｄ４フィールドに関係づけられた命令または命令のセクションの最大１６個のエンコードされた特徴を含むことができる。例えば、このエンコーディングは、命令が、読み込みもしくは格納命令、算術命令、またはマイクロコードのサポートが必要な複合命令であるかを示すことができる。また、このエンコーディングは、１６命令ビットの関係するセットが３２ビットの命令の前半であるかまたは別々の１６ビットの命令であるかどうか、または命令が命令の分岐形式であるかどうか、等を示すことができる。さらに、このエンコーディングは、有効なプレデコード情報が利用可能でなく、それに応じてＰｄ４ビットがマークされたことを示すことができる。Ｐｄ４情報は、命令アラインメント、デコーディングに有用であり、例えば分岐処理のような他の目的に用いられることができる。
【００２４】
図３Ａのプログラム・セグメント３００の命令は、Ｌ１キャッシュ・ライン・セグメント３２７および３２８にそれぞれ格納された図３Ａの１６ビットのＡＤＤ  Ｒ５，Ｒ４，Ｒ３命令３０６およびその関係するＰｄ４フィールドで始まるＬ１キャッシュ・ラインに配置されることができる。図３Ａの３２ビットのＬＯＡＤ命令３０７およびその関係するＰｄ４フィールドは、セグメント３３０として構成され、Ｌ１キャッシュ・ラインに単一の１６ビット命令とは異なるように格納される。例示目的のために、１６ビットのＬ１キャッシュ・ライン・セグメント３３１は、ＬＯＡＤ命令３０７の上位１６ビットを含む。Ｐｄ４フィールド３３２は、３２ビットのＬＯＡＤ命令のためのプレデコード情報を提供する。一方、次の１６ビットのＬ１キャッシュ・ライン・セグメント３３３は、ＬＯＡＤ命令３０７の下位１６ビットを含む。Ｐｄ４フィールド３３４は、３２ビットのＬＯＡＤ命令３０７のための追加プレデコード情報を含む。他のプログラム・セグメントが異なる時間にキャッシュ・ラインを占有することができるため、Ｐｄ４フィールド３３４は、例えば１６ビットのＬ１キャッシュ・ライン・セグメント３３３に格納される１６ビットの命令のサポートに用いられることができる。
【００２５】
Ｌ１キャッシュ・ラインにおける次の命令は、図３Ａの３２ビットのＬＯＡＤ命令３０８である。この命令は、２つの命令キャッシュ・ラインにまたがって格納されている。関係するプレデコード・ビット・フィールドと共にＬＯＡＤ命令３０８の高位１６ビットは、１６ビット・フィールド３３７と４ビットＰｄ４フィールド３３８で構成された２０ビットのセグメント３３６として第１のＬ１  Ｉキャッシュ・ライン３２０に格納される。関係するＰｄ４ビット・フィールドと共にＬＯＡＤ命令３０８の下位１６ビットは、１６ビット・フィールド３４１と４ビットＰｄ４フィールド３４２で構成された２０ビットのセグメント３４０として第２のＬ１  Ｉキャッシュ・ライン３２２に格納される。図３Ａに共に示すＡＤＤ  Ｒ８，Ｒ６，Ｒ７命令３０９およびＳＴＯＲＥ命令３１０は、セグメント３２６および３３０と同様な方法で第２のＬ１  Ｉキャッシュ・ライン３２２に格納される。
【００２６】
３２ビットのみの命令のための第１の動作モードにおいては、すべての命令は、ワード・アラインされた（word aligned）境界上でアーキテクチャ的定義によって配置されることを注意する。この第１の動作モードにおいて、プログラム・セグメントは、命令キャッシュ・ラインの境界をまたがない３２ビット命令（図示しない）だけで構成される。
【００２７】
本発明の１つの態様は、命令キャッシュ・ラインの境界にまたがる命令に関するプレデコード情報を決定し、プレデコード修復キャッシュを満たすことに関する。本発明の別の態様は、プロセッサ性能を改善し、電力を節約するために、２つのキャッシュ・ラインにまたがる命令を実行することに関する。本発明のこれらの態様および他の態様を以下にさらに詳細に説明する。
【００２８】
図２の命令フロー論理２００を再度参照して、プロセッサ２０４は、取得される命令のアドレス、取得アドレスを、Ｌ１  Ｉキャッシュの入力バス２２８上に出力することによって、Ｌ１  Ｉキャッシュ２０６から命令の取得を開始する。また、取得時の現在のプログラムが指定する動作モード状態の情報を出力することができる。取得時の動作モード状態情報は、プロセッサがワード・アラインされた境界上で３２ビット命令のみを用いる第１の動作モード、または１６ビットと３２ビットの命令双方を用いる第２の動作モード、または他のプロセッサモードにあるかどうかを含むことができる。
【００２９】
Ｌ１  Ｉキャッシュ２０６でミスが発生する場合、プロセッサ２０４は、Ｌ２キャッシュ２０８から、または命令がＬ２キャッシュ２０８で見つからない場合、システム・メモリから、命令を取得するように進む。メモリ・アクセス・タイミングによる遅延の後に、命令が、システム・メモリから、またはＬ２キャッシュ出力２３４から提供され、プレデコード・ビットを生成するためにプレデコーダ２１４に接続される。プレデコード４ビット（Ｐｄ４）は、命令を部分的にデコーディングすることによって生成される。命令の１６ビット・フィールドおよびそれらの関係するＰｄ４ビットは、Ｌ１  Ｉキャッシュの適切なキャッシュ・ライン・アドレスに書き込まれる。
【００３０】
プレデコードされた命令およびＰｄ４ビットは、フィル・バッファ２１６に格納され、そこからマルチプレクサ２２２およびＬ１  Ｉキャッシュ２０６に分配される。図３ＡのＬＯＡＤ命令３０８のような、Ｌ１  Ｉキャッシュ・ライン３２０および３２２にまたがる命令において、図３Ｂのセグメント３３８に格納されたＰｄ４ビットは、関係する１６ビットのフィールド３３７が３２ビット命令の高位１６ビットであり、かつＬＯＡＤ命令３０８がキャッシュ・ライン境界にまたがることを表示するように設定される。この時点で、ＬＯＡＤ命令３０８の後半は、利用可能ではない。Ｌ２キャッシュ２０８から、またはシステム・メモリからの第２の取得でＬＯＡＤ命令３０８の後半を強制的に得るようにする手法は、一般に実施することが高価であり、プロセッサ性能に影響するだろう。ＬＯＡＤ命令の後半の取得を強制するよりむしろ、自然なプログラムの進行においては次に続くキャッシュ・ラインが取得されるだろう。
【００３１】
ＬＯＡＤ命令３０８の高位１６ビットは、命令アラインメント（ＩＤＡ）パイプライン・ステージ２５０に読み込まれる。次の命令キャッシュ・ラインが取得された後、ＬＯＡＤ命令３０８の半分の下位１６ビットがＩＤＡパイプライン・ステージ２５０に書き込まれる。命令アラインメント・ステージ２５０に入力された命令は、後続のプロセッサ・プレデコーダ２５２およびパイプライン・ステージのデコーダ２５４のために整列され、準備される。デコーダ２５４の後に、デコードした命令はマルチプレクサ２５６を通過するように選択され、デコード・レジスタ２５８に読み込まれる前にさらにデコーダ２５７でデコードされることができる。命令はデコード・レジスタから実行を続行する。プロセッサ・プレデコーダ２５２は、命令に対する修復されたプレデコード情報として新しいＰｄ４プレデコード・ビットを形成する。Ｌ１  Ｉキャッシュ２０６の命令アドレスおよび修復されたプレデコード情報は、プレデコード修復バス２６０上でプレデコード修復キャッシュ２１０へ転送される。次に、アドレスおよび新しいＰｄ４ビットは、プレデコード修復キャッシュに格納される。代替的な実施形態において、命令、アドレス、およびその関係する新しいＰｄ４ビットは、プレデコード修復バス２６０上で転送され、プレデコード修復キャッシュに格納されることができる。
【００３２】
ライン横断ＬＯＡＤ命令３０８にヒットする後続の取得に関し、プレデコード修復キャッシュ２１０内に格納された情報、例えば命令および新しいＰｄ４ビット、が検索され、その新しいＰｄ４ビットは、Ｌ１  Ｉキャッシュ２０６からの命令と共に格納されたＰｄ４ビットに代わって用いられる。プレデコード修復キャッシュ２１０におけるヒットは、ヒットまたはミス信号２６１上で示される。プレデコード修復キャッシュの出力バス２６２は、ＩＤＡステージ２５０に接続されるマルチプレクサ２２２とプレデコード修復キャッシュ２１０とを接続する。プレデコード修復キャッシュに格納されたＰｄ４ビットが使用されている場合、ＩＤＡステージ２５０からの命令はＩＤＡバス２６４で直接デコーダ２６６へ進み、必要であればデコーダ２５７でさらにデコーディングが続き、次に、プロセッサ・プレデコーダ２５２で行われることになることができる多重サイクルをバイパスしてデコード・レジスタ２５８へ進む。ライン横断命令がプログラムループにある状況においては、そのループを通して毎回プロセッサ・プレデコーダ２５２のパイプライン・ステージを通過する必要なしに、プレデコード修復キャッシュ２１０からの修復されたプレデコード情報を用いることによって、重要な性能を保つことができる。
【００３３】
図４Ａに例示的なＬ１  Ｉキャッシュ・セグメント４００を示す。Ｌ１  Ｉキャッシュ・セグメント４００は、第１の８０ビットのＬ１  Ｉキャッシュ・ライン４０２および第２の８０ビットのＬ１  Ｉキャッシュ・ライン４０４を含む。キャッシュ・ラインの各々は、１６ビットの命令フィールドおよびＰｄ４フィールドを含む２０ビットのセクション４０６乃至４０９で構成される。例示的なプログラム・セグメントは、２０ビット・フィールドで仕切られたキャッシュ・ライン４０２および４０４に格納され、２０ビット・フィールド０乃至７および関係する１６ビットまたは３２ビット命令Ａ乃至Ｅと名付けられる。プログラム・セグメントの一例は、１つの２０ビット・フィールド（０，Ａ）４１１で構成された１６ビット命令Ａ、２つの２０ビット・フィールド（１，Ｂ）４１２および（２，Ｂ）４１３で構成された３２ビット命令Ｂ、（３，Ｃ）４１４および（４，Ｃ）４１５で構成された３２ビット命令Ｃ、１６ビット命令Ｄ（５，Ｄ）４１６、並びに３２ビット命令Ｅ（６，Ｅ）４１７および（７，Ｅ）４１８を含む。Ｌ１  Ｉキャッシュ・セグメント４００に格納されたプログラム・セグメントは、図３Ａのプログラム・セグメント３００に類似している。このプログラム・セグメントを用いて、図２の命令フロー論理２００における動作のプロセッサ・パイプライン・ステージを例示する。図４Ｂのパイプライン・ステージのダイアグラム４２０および図４Ｃの４５０の説明も図２の命令フロー論理を参照する。
【００３４】
図４Ｂはプレデコード修復キャッシュ・エントリを準備するためのパイプライン・ステージの図４２０を示す。パイプライン・ステージの図４２０は「ｔ」４２２、「ｔ＋１」４２３等、「ｔ＋７」４０９までの期間から成る。パイプライン・ステージは、行で示され、命令キャッシュ・ステージ１（ＩＣ１）４３０、命令キャッシュ・ステージ２（ＩＣ２）４３１、命令アラインメント・ステージ（ＩＤＡ）４３２、デコード・ステージ（ＤＣＤ）４３３、および修復アラインメント４３４を含む。
【００３５】
パイプライン・シーケンスは、時間「ｔ」４２２で始まる。第１のＬ１  Ｉキャッシュ・ライン４０２は、命令Ａ（０，Ａ）４１１、命令Ｂ（１，Ｂ）４１２および（２，Ｂ）４１３、並びに命令Ｃ（３，Ｃ）４１４を含み、命令キャッシュ・ステージ１（ＩＣ１）４３０、例えばＬ１命令キャッシュ２０６のＩＣ１  ２１８、に入る。この状態をパイプライン・ステージダイアグラム４２０において行ＩＣ１  ４３０の時間「ｔ」４２２の１６ビット・フィールド０乃至３として示す。
【００３６】
時間「ｔ＋１」４２３で、第１のＬ１  Ｉキャッシュ・ライン４０２は、命令キャッシュ・ステージ２（ＩＣ２）４３１、例えばＬ１命令キャッシュ２０６のＩＣ２  ２２０、に入る。また、時間「ｔ＋１」４２３で、命令Ｃの後半（４，Ｃ）４１５、命令Ｄ（５，Ｄ）４１６並びに命令Ｅ（６，Ｅ）４１７および（７，Ｅ）４１８を含む第２のＬ１  Ｉキャッシュ・ライン４０４は、ＩＣ１  ４３０、例えばＩＣ１  ２１８、に入る。この状態をパイプライン・ステージダイアグラム４２０において行ＩＣ１  ４３０の時間「ｔ＋１」４２３の１６ビット・フィールド４乃至７として示す。また、Ｍｃｔｌ信号２６１で示されるプレデコード修復キャッシュ２１０におけるミスはこの時に入力される。このミスは２つのキャッシュ・ラインにまたがる命令Ｃに対するプレデコード・ビットが修復されていないことを示す。
【００３７】
時間「ｔ＋２」４２４で、第１のＬ１  Ｉキャッシュ・ライン４０２は、マルチプレクサ２２２を通じて命令アラインメント（ＩＤＡ）パイプライン・ステージ４３２、例えばプロセッサ２０４のＩＤＡ２５０、に入る。この時点で、命令Ｃの半分だけがキャッシュ・ラインにあると判定される。この例示的なシナリオにおいて、命令Ｃの後半は、ＩＣ２  ４３１、例えばパイプラインのＩＣ２  ２２０ステージ、にある。また、次の取得されたキャッシュ・ラインからの命令は命令キャッシュ・ステージ１（ＩＣ１）４３０、例えばＬ１命令キャッシュ２０６のＩＣ１  ２１８、に入れられる。これらの次の命令を、次の命令セットが取得されることを示すために「・・・」で表示する。
【００３８】
時間「ｔ＋３」４２５で、有効なプレデコード・ビット（Ｐｄ４）を有する命令ＡおよびＢは、例えばデコード・レジスタ２５８へＩＤＡバス２６４上で転送することによりデコードＤＣＤパイプライン・ステージ４３３に入る。この状態をパイプラインのＤＣＤステージ４３３のＡ／Ｂで表示する。命令Ｃの後半は、ＩＣ２ステージ４３１から得られ、命令Ｃの前半と組合わされ、ＩＤＡステージ４３２、３Ｃ／４Ｃにおいて、無効のプレデコード・ビットを有する命令Ｃを生成する。第２のＬ１  Ｉキャッシュ・ライン４０４からの命令Ｄ（５，Ｄ）４１６および命令Ｅ（６，Ｅ）４１７および（７，Ｅ）４１８で構成される命令ＤおよびＥはパイプラインのＩＣ２ステージ４３１に残る。
【００３９】
時間「ｔ＋４」４２６で、命令Ｃ（３，Ｃ）４１４および（４，Ｃ）４１５は、プロセッサ・プレデコーダ２５２でプレデコードされ、その結果は、プレデコード修復キャッシュ２１０のフロントエンドに読み込まれる。この状態をプレデコード修復の最初のサイクルとして表示し時間「ｔ＋４」４２６かつ修復ステージ４３４の「１」で示す。また、プレデコーダの結果は、デコーダ２５４が利用できるようにされる。命令（５，Ｄ）４１６並びに命令Ｅ（６，Ｅ）４１７および（７、Ｅ）４１８はパイプラインのＩＣ２ステージ４３１に残る。
【００４０】
時間「ｔ＋５」４２７で、有効なプレデコード・ビットのようなプレデコーダ２５２の結果は、プレデコード修復キャッシュ２１０に読み込まれる。この状態を修復の２番目のサイクルとして表示し時間「ｔ＋５」４２７かつ修復ステージ４３４の「２」で示す。命令Ｃのデコードはこの時点で行われる。命令（５，Ｄ）４１６、並びに命令Ｅ（６，Ｅ）４１７および（７，Ｅ）４１８はパイプラインのＩＣ２ステージ４３１に残る。
【００４１】
時間「ｔ＋６」４２８で、命令Ｃのデコード結果はマルチプレクサ２５６によって選択され、デコーダ２５７でさらにデコードされ、デコード・レジスタ２５８に保存される。命令（５，Ｄ）４１６並びに命令Ｅ（６，Ｅ）４１７および（７，Ｅ）４１８はＩＤＡステージ４３２、例えばプロセッサ２０４のＩＤＡステージ２５０、に入る。
【００４２】
時間「ｔ＋７」４２９で、命令ＤおよびＥは、デコード・レジスタ２５８に達し、実行を続ける。命令Ｃが２つのキャッシュ・ラインにまたがるため、命令Ｃに対するプレデコード・ビットを修復し、プレデコード・ビットをプレデコード修復キャッシュ２１０に格納するために２＋（１／２）サイクルのパイプライン・バブルが用いられた。（２＋１／２）サイクルの２つのサイクルは丸で囲んだ区間４３５で表示し、１／２サイクルは、丸で囲んだ区間４３６で表示する。
【００４３】
図４Ｃは、ライン横断命令に対する有効なプレデコード・ビットをプレデコード修復キャッシュから取得することにより電力を節約する動作を例示するプロセッサ・パイプラインの図４５０である。パイプライン・ステージ図４５０は、「ｔ」４５２、「ｔ＋１」４５３等、「ｔ＋６」４５８までの期間、並びに命令キャッシュ・ステージ１（ＩＣ１）４６０、命令キャッシュ・ステージ２（ＩＣ２）４６１、命令整列ステージ（ＩＤＡ）４６２、デコード・ステージ（ＤＣＤ）４６３、および修復ステージ４６４を含むパイプライン・ステージから成る。
【００４４】
パイプライン・シーケンスは、時間「ｔ」４５２で始まる。第１のＬ１  Ｉキャッシュ・ライン４０２は命令Ａ４１１、Ｂ４１２および４１３並びに命令Ｃ４１４の前半を含み、命令キャッシュ・ステージ１（ＩＣ１）４６０、例えばＬ１命令キャッシュ２０６のＩＣ１  ２１８、に入る。この状態をパイプライン・ステージダイアグラム４５０において行ＩＣ１  ４６０の時間「ｔ」４５２の１６ビット・フィールド０乃至３として示す。
【００４５】
時間「ｔ＋１」４５３で、第１のＬ１  Ｉキャッシュ・ライン４０２は、命令キャッシュ・ステージ２（ＩＣ２）４６１、例えばＬ１命令キャッシュ２０６のＩＣ２  ２２０、に入る。また、時間「ｔ＋１」４５３で、命令Ｃの後半（４，Ｃ）４１５、命令Ｄ（５，Ｄ）４１６並びに命令Ｅ（６，Ｅ）４１７および（７，Ｅ）４１８を含む第２のＬ１  Ｉキャッシュ・ライン４０４は、ＩＣ１  ４６０、例えばＩＣ１  ２１８、に入る。この状態をパイプライン・ステージダイアグラム４５０において行ＩＣ１  ４６０の時間「ｔ＋１」４５３の１６ビット・フィールド４乃至７として示す。また、Ｍｃｔｌ信号２６１で示されるプレデコード修復キャッシュ２１０におけるヒットが入力される。このヒットは、キャッシュ・ラインにまたがる命令Ｃに対するプレデコード・ビットが修復されたことを命令フロー論理２００を示す。
【００４６】
時間「ｔ＋２」４５４で、第１のＬ１  Ｉキャッシュ・ライン４０２は、命令整列（ＩＤＡ）パイプライン・ステージ４６２、例えばプロセッサ２０４のＩＤＡ２５０、に入る。この時点で、命令Ｃの半分だけがキャッシュ・ラインにあると判定される。この例示的なシナリオにおいて、命令Ｃの後半は、ＩＣ２  ４６１、例えばパイプラインのＩＣ２  ２２０ステージ、にある。プレデコード修復キャッシュ２１０にヒットがあったため、命令Ｃに対する有効なプレデコード・ビットは、利用可能である。また、次の取得されたキャッシュ・ラインからの命令は、Ｌ１命令キャッシュ２０６のＩＣ１  ２１８のような命令キャッシュ・ステージ１（ＩＣ１）４６０に入れられる。これらの次の命令は、命令「８−１１」として表示され、８−１１グループの第１の命令は、１６ビットまたは３２ビットの命令であることができる命令「Ｆ」である。
【００４７】
時間「ｔ＋３」４５５で、命令ＡおよびＢは、有効なプレデコード・ビット（Ｐｄ４）を有し、例えばデコード・レジスタ２５８へ転送することによりデコードＤＣＤパイプライン・ステージ４６３に入る。この状態をパイプラインのＤＣＤステージ４６３にＡ／Ｂで表示する。命令Ｃの後半は、ＩＣ２ステージ４６１から得られ、命令Ｃの前半と組合わされ、さらにプレデコード修復キャッシュ２１０からの有効なプレデコード・ビットと組合わされＩＤＡステージ４６２において完全な命令Ｃを生成する。この結合は、Ｍｃｔｌ信号２４２で制御されるマルチプレクサ２２２およびＩＤＡパイプライン・ステージ２５０のアラインメント論理によって制御される。例えば、プレデコード修復キャッシュ２１０から取得された修復されたプレデコード情報は、第１の部分、例えば修復されたプレデコード・ビットの第１のセット、および第２の部分、例えば修復されたプレデコード・ビットの第２のセット、を有することができる。マルチプレクサ２２２は、修復されたプレデコード・ビットの第１の部分および第２の部分並びに命令Ｃからの命令ビットを選択し、命令整列（ＩＤＡ）パイプライン・ステージ２５０に入る。ＩＤＡパイプライン・ステージ２５０は、選択されたビットを整列し、有効にアラインされたプレデコード情報を伴う再構成された命令を生成する。第２のＬ１  Ｉキャッシュ・ライン４０４からの命令Ｄ（５，Ｄ）４１６、命令Ｅ（６，Ｅ）４１７および（７，Ｅ）４１８は、パイプラインのＩＣ２ステージ４６１に残る。命令８乃至１１はＩＣ１ステージ４６０に残る。
【００４８】
「ｔ＋４」４５６で、（３，Ｃ）４１４および（４，Ｃ）４１５で構成される命令Ｃ／−は例えばデコード・レジスタ２５８への転送のようなデコードＤＣＤパイプライン・ステージ４６３へ入る。命令（５，Ｄ）４１６、（６，Ｅ）４１７および（７，Ｅ）４１８はＩＤＡパイプライン・ステージ４６２へ入る。次の命令「８−１１」は、ＩＣ２ステージ４６１へ入る。
【００４９】
「ｔ＋５」４５７で、命令Ｄ（５，Ｄ）４１６並びに（６，Ｅ）４１７および（７，Ｅ）４１８で構成された命令Ｅは、デコードＤＣＤパイプライン・ステージ４６３へ入る。処理は、時間「ｔ＋６」４５８以降の次の命令グループ「８−１１」から残りの命令を続行する。
【００５０】
図４Ｃのプロセッサ・パイプライン・ステージの図４５０に示すように、図４Ｂのプロセッサ・パイプライン・ステージの図４２０で発生するパイプライン・バブルを表す丸で囲んだ区間４３５の２つのサイクルは、省電力および性能向上のために除かれる。
【００５１】
図５は、Ｌ１  Ｉキャッシュにおけるミス時に続く、プレデコード修復キャッシュへのエントリを準備するための動作ステップの処理５００である。ブロック５０２において、Ｌ１  Ｉキャッシュへの取得の結果がミスとなる。ブロック５０４において、プロセッサは、Ｌ２キャッシュまたはシステム・メモリから命令を取得する。ここで、命令は２つの形式の命令である。第１の形式の命令は、例えば１６ビットの第１の長さでフォーマットされ、第２の形式の命令は、第２の長さでフォーマットされる。例えば第２の長さ、３２ビット、は第１の長さより長い。ブロック５０６において、命令ストリングは、１つ以上のＬ１  Ｉキャッシュ・ラインに配置される。例えば、１つのキャッシュ・ラインが取得され、図３Ｂの第１のＬ１  Ｉキャッシュ・ライン３２０のようなキャッシュ・ラインに配置されることができる。ブロック５０８において、命令ストリングはプレデコードされ、部分的にデコードされた命令のためのプレデコード情報を発生させる。
【００５２】
判定ブロック５１０において、第２の形式の命令が、第１の部分が第１のラインにある２つのＬ１  Ｉキャッシュ・ラインにまたがるライン横断命令であることがわかったかどうかが決定される。ライン横断命令が見つからない場合、処理５００は、判定ブロック５１２へ進む。判定ブロック５１２において、有効なプレデコード情報がパイプライン化した命令に対して利用可能かどうかが決定される。有効なプレデコード情報がパイプライン化した命令に対して利用可能である場合、処理５００は、ブロック５１４へ進む。ブロック５１４において、例えばＩＤＡバス２６４を選択することによってプロセッサ・プレデコーダ・ステージは、バイパスされ、その結果、図２のプロセッサ・プレデコーダ２５２で行われることができる多重サイクルをバイパスする。ブロック５１５において、命令がデコードされる。これはデコーダ２６６および実施されることができるデコーダ２５７でのデコーディングを含むことができる。ブロック５１６において、命令フロー論理２００は命令実行を続行する。
【００５３】
判定ブロック５１２へ戻る。有効なプレデコード情報がパイプライン化された命令に対して利用可能でないと決定される場合、処理５００は、ブロック５１８へ進む。有効なプレデコード情報は、例えば、Ｌ１  Ｉキャッシュ２０６から取得された命令から得たＰｄ４ビットを調べることによって決定されることができる。例えば、Ｐｄ４ビットは、命令の最初の１６ビットがライン横断命令の部分であり、有効なプレデコード情報がライン横断命令に対して利用可能でないことを示すことができる。ブロック５１８において、パイプライン化された命令はプロセッサ・プレデコーダ・ステージ、例えば図２のプロセッサ・プレデコーダ２５２、に入る。これは修復されたプレデコード情報、例えば新しいプレデコード・ビット、を生成する。決定ブロック５２０において、ライン横断命令が存在するかどうかが決定される。ライン横断命令が存在しない場合、処理５００は、ブロック５２２へ進む。ブロック５２２において、パイプライン化された命令は、デコーダ・ステージ、例えば図２のデコーダ２５４、へ入る。デコーダ・ステージの後に、処理５００は、ブロック５１６へ進み、命令実行を続行する。
【００５４】
決定ブロック５２０に戻り、そこでライン横断命令が存在することが決定される。処理５００は、ブロック５２４へ進む。ブロック５２４において、ライン横断命令に関係づけられた新しいプレデコード・ビットは、プレデコード修復キャッシュ、例えば図２のプレデコード修復キャッシュ２１０、に書き込まれる。次に、処理５００は、ブロック５２２へ進み、パイプライン化された命令のデコードを出力する。次に、処理５００は、ブロック５１６へ進み、命令実行を続行する。
【００５５】
判定ブロック５１０へ戻り、そこでライン横断命令が存在することが決定される。決定ブロック５２４において、ライン横断命令の第２の部分が利用可能かどうか決定される。ライン横断命令の第２の部分が利用可能である場合、処理５００は、決定ブロック５１２へ続き、上で説明したように続く。決定ブロック５２４でライン横断命令の第２の部分が利用可能でないと決定される場合、処理５００は、ブロック５２６へ進む。ブロック５２６において、命令ストリングが、ライン横断命令の第２の部分を得るために取得される。例えば、そのような命令ストリングは、フィル・バッファ２１６またはＬ１  Ｉキャッシュ２０６から取得されることができる。次に、処理５００は判定ブロック５１２へ進み、上で説明したように続く。
【００５６】
図６は、ライン横断命令がＬ１  Ｉキャッシュから取得された時に続く動作ステップのフローチャート６００である。ブロック６０２において、命令が取得される。判定ブロック６０４において、ライン横断命令の第１の部分がＬ１  Ｉキャッシュ、例えば図２のＬ１  Ｉキャッシュ２０６、にあるかどうか決定される。ライン横断命令の第１の部分がＬ１  Ｉキャッシュにない場合、ミスが記録され、処理６００は、図５の処理５００のブロック５０２へ進む。ライン横断命令の第１の部分がＬ１  Ｉキャッシュにある場合、ヒットが記録され、処理６００は、決定ブロック６０６へ続く。
【００５７】
決定ブロック６０６において、ライン横断命令の第２の部分がＬ１  Ｉキャッシュにあるかどうか決定される。ライン横断命令の第２の部分がＬ１  Ｉキャッシュにない場合、ミスが記録され、処理６００は、図５の処理５００のブロック５２６へ進む。ライン横断命令の第２の部分がＬ１  Ｉキャッシュにある場合、ヒットが記録され、処理６００は、決定ブロック６０８へ進む。
【００５８】
決定ブロック６０８において、命令の取得アドレスがプレデコード修復キャッシュ、例えば、図２のプレデコード修復キャッシュ２１０、でヒットしたかどうか決定される。命令の取得アドレスがプレデコード修復キャッシュでヒットしなかった場合、ミスが記録され、処理６００は、図５の処理５００のブロック５１８へ進む。命令の取得アドレスがプレデコード修復キャッシュでヒットした場合、ヒットが記録され、処理６００はブロック６１０へ進む。ブロック６１０において、Ｌ１  Ｉキャッシュからのライン横断命令の第１および第２の部分は、プレデコード修復キャッシュから取得されたプレデコード修復ビットと組合わされる。結合器は、マルチプレクサ、例えばマルチプレクサ２２２、およびＩＤＡパイプライン・ステージ２５０にあることができるような整列論理から成ることができる。次に処理６００は図５の処理５００のブロック５１４へ進む。
【００５９】
正しい動作を維持するために、命令フロー論理２００またはプロセッサ２０４に関係づけられたコードの一部はＬ１  Ｉキャッシュの動作を追跡する。例えばＬ１  Ｉキャッシュが消去されるときはいつも、プレデコード修復キャッシュも消去される。また、Ｌ１  Ｉキャッシュが書き込まれるときはいつも、プレデコード修復キャッシュにおける既存のエントリは無効化される。
【００６０】
特定の実施においては、Ｌ１  Ｉキャッシュ・ラインの幅が縮小するに従い、ライン横断命令の割合が増加していくため、プレデコード修復キャッシュのサイズは、大きくなっていくだろう。例えば、１６０ビットのＬ１  Ｉキャッシュ・ラインには、多くの用途に対して２つのプレデコード修復キャッシュ・ラインで十分であることができる。
【００６１】
本発明は、例示した命令フロー論理２００に限定されず、可変長命令を有する、命令キャッシュにプレデコード情報を格納するいかなるパイプライン・プロセッサにもさらに適用可能である。可変長プロセッサ命令セットへの拡張は、その拡張が命令セットを用いた一意のモード、例えばプレデコード情報が選択的に制御されそれによって書き込み読み出し電力を節約するモード、をサポートする場合には、本発明によって対応されることができる。例えば、１６ビット、３２ビット、および６４ビットの命令が動作する場合、３２ビットおよび６４ビットの命令が２つのＬ１  Ｉキャッシュ・ラインにまたがることができるような動作モードが指定されることができる。６４ビット命令の形式を用いるプロセッサは上述した例示的なプロセッサ２０４の拡張であることができる。拡張プロセッサは、例えば３２ビット命令のみに制約された第１の状態、１６ビットおよび３２ビット命令双方に対する第２の状態、１６ビット、３２ビットおよび６４ビット命令に対する第３の状態、並びに６４ビット命令のみに制約された第４の状態に対してエンコードされた動作モード状態を取り得ることができる。Ｉキャッシュ・ラインにおける６４ビット命令は４つの２０ビット・フィールドに分割できることができる。ここで、各２０ビット・フィールドは６４ビット命令の１セクションおよび関連するＰｄ４フィールドを有する。Ｌ１  Ｉキャッシュ・ラインにおける６４ビットの命令では、６４ビット命令の１６ビット・フィールドの各々に関係づけられたＰｄ４フィールドは全体の６４ビット命令に対して用いられるだろう。
【００６２】
また、本発明は２の階乗の命令長に限定されない。例えば、１６ビットおよび２４ビット命令を有する別のアーキテクチャを考える。この例において、命令キャッシュ・ラインは８ビットの命令区間と２ビットのプレデコード区間に分割されることができる。１６ビット命令は、例えば｛８ビット、２ビットＰｄ２、８ビット、２ビットＰｄ２｝として構成された２０ビットから成る場合があることができる。２４ビット命令は、例えば｛８ビット、２ビットＰｄ２、８ビット、２ビットＰｄ２、８ビット、２ビットＰｄ２｝として構成された３０ビットから成る場合があることができる。１６ビット命令を格納する１６０ビットのキャッシュ・ラインは、すべてのビットが完全に利用された状態の全１６０ビットに対し、８つの２０ビット区間として構成された８つの１６ビット命令を保持できることができる。２４ビット命令を格納する１６０ビットのキャッシュ・ラインは、利用されない１０ビットをラインに残した状態の全１５０ビットに対し、５つの３０ビット区間として構成された５つの２４ビット命令を保持できることができる。
【００６３】
本発明は現時点での好ましい状況で開示されたが、本教示が本開示およびそれに続く特許請求範囲と一致する種々の状況に適応されても良いことが認識されるだろう。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］  第１のキャッシュ・ラインに格納された命令の第１の部分を取得することと；
次のキャッシュ・ラインに格納された前記命令の第２の部分を取得することと；
修復されたプレデコード情報を形成するために、プロセッサ・パイプライン・ステージで前記命令の前記第１および第２の部分をプレデコードすることと；
前記修復されたプレデコード情報を前記命令に関係づけられたアドレスを利用してプレデコード修復キャッシュに書き込むことと；
を備える、プレデコード修復キャッシュを満たす方法。
［Ｃ２］  前記命令の前記第１および第２の部分は、レベル１命令キャッシュに格納される、Ｃ１に記載の方法。
［Ｃ３］  前記取得された命令が有効なプレデコード情報を含むかどうかプレデコードに先立って決定すること、
をさらに備える、Ｃ１に記載の方法。
［Ｃ４］  命令キャッシュ内の前記命令に関係づけられたアドレスを利用して前記プレデコード修復キャッシュからプレデコード情報を取得することと；
前記プレデコード修復キャッシュの前記アドレス指定された位置においてミスすることと；
有効なプレデコード情報が利用可能でないという決定に応答して前記プレデコード修復キャッシュに前記修復されたプレデコード情報を書き込むことと；
をさらに備える、Ｃ３に記載の方法。
［Ｃ５］  前記第１のキャッシュ・ラインは、少なくとも２つの異なる長さにフォーマットされた命令を保持する、Ｃ１に記載の方法。
［Ｃ６］  前記プレデコード情報は、前記命令の前記第１の部分に関連づけられたプレデコード・ビットの第１のセット、および前記命令の前記第２の部分に関連づけられたプレデコード・ビットの第２のセットにエンコードされる、Ｃ１に記載の方法。
［Ｃ７］  前記レベル１の命令キャッシュが消去される時はいつも前記プレデコード修復キャッシュを消去すること
をさらに備えるＣ２に記載の方法。
［Ｃ８］  エントリがレベル１の命令キャッシュに書き込まれるときはいつも、前記プレデコード修復キャッシュの前記エントリを無効にすること
をさらに備えるＣ２に記載の方法。
［Ｃ９］  ２つのキャッシュ・ラインにまたがる命令を実行するための方法であって、前記方法は：
２つのキャッシュ・ラインにまたがり、命令キャッシュの第１のキャッシュ・ラインに格納される、命令の第１の部分を取得することと、；
前記命令キャッシュとは別のプレデコード修復キャッシュからの前記命令に関係づけられたプレデコード情報を取得することと；
前記第１のキャッシュ・ラインに続く次のキャッシュ・ラインに格納された前記命令の第２の部分を取得することと；
前記プレデコード情報に応答して前記命令を実行することと；
を備える方法
［Ｃ１０］  有効にアラインされたプレデコード情報を伴う再構成された命令を生成するために、前記プレデコード情報を前記命令の前記第１および第２の部分と組合せること、
をさらに備えるＣ９に記載の方法。
［Ｃ１１］  前記プレデコード情報を前記命令の前記第１および第２の部分と組合せることは：
前記プレデコード情報の第１の部分と第２の部分を選択することと；
前記命令キャッシュから前記命令の前記第１の部分と前記第２の部分を選択することと；
有効にアラインされたプレデコード情報を伴う再構成された命令を生成するために、前記プレデコード情報の前記第１の部分および前記第２の部分で前記命令の前記第１の部分および前記第２の部分をアラインすることと；
をさらに備える、Ｃ１０に記載の方法。
［Ｃ１２］  前記命令の前記第１の部分は、命令ビットの第１のセットおよびプレデコード・ビットの関係する第１のセットを含み、前記命令の前記第２の部分は、命令ビットの第２のセットおよびプレデコード・ビットの関係する第２のセットを含む、Ｃ９に記載の方法。
［Ｃ１３］  修復されたプレデコード・ビットの第１のセットを形成するために前記命令ビットの第１のセットをプレデコードすることと；
修復されたプレデコード・ビットの第２のセットを形成するために前記命令ビットの第２のセットをプレデコードすることと；
をさらに備える、Ｃ１２に記載の方法。
［Ｃ１４］  前記プレデコード・ビットの第１のセットに代わって前記修復されたプレデコード・ビットの第１のセットを選択することと；
前記プレデコード・ビットの第２のセットに代わって前記修復されたプレデコード・ビットの第２のセットを選択することと；
前記プレデコード情報を修復したことに応答してプロセッサ・プレデコーダ・ステージをバイパスすることと；
をさらに備える、Ｃ１３に記載の方法。
［Ｃ１５］  少なくとも、第１の長さを有する命令と前記第１の長さより長い第２の長さを有する命令とを命令キャッシュ・ラインに格納するように動作可能な命令キャッシュと；
前記命令キャッシュから取得した命令であって、修復されたプレデコード情報を形成するために、無効プレデコード情報を有する前記命令をプレデコードするように動作可能なプレデコーダと；
前記命令キャッシュ内の２つのキャッシュ・ラインにまたがる前記第２の長さの命令に関係づけられた前記修復されたプレデコード情報を格納するように動作可能なプレデコード修復キャッシュと、
を含む、プレデコード修復キャッシュを利用するための装置。
［Ｃ１６］  有効にアラインされたプレデコード情報を伴う再構成された命令を生成するために、前記プレデコード修復キャッシュから取得された修復されたプレデコード情報を前記第２の長さの命令の第１の部分および第２の部分と組合せるように動作可能な結合器、
をさらに備える、Ｃ１５に記載の装置。
［Ｃ１７］  有効なプレデコード情報を有する、前記命令キャッシュから取得された命令に対し前記プレデコーダをバイパスするように動作可能な前記プレデコーダを迂回するバイパス経路  をさらに備える、Ｃ１５に記載の装置。
［Ｃ１８］  有効にアラインされたプレデコード情報を伴う前記再構成された命令に対しプレデコーダをバイパスするように動作可能な前記プレデコーダを迂回するバイパス経路
をさらに備える、Ｃ１６に記載の装置。
［Ｃ１９］  前記結合器は：
前記第２の長さの命令に関係づけられたアドレスを利用して、前記プレデコード修復キャッシュから取得された修復されたプレデコード情報の第１の部分および第２の部分を選択するように、かつ前記命令キャッシュから取得された前記第２の長さの前記命令の第１の部分および第２の部分を選択するように動作可能なマルチプレクサと；
前記修復されたプレデコード情報の前記第１の部分を前記第２の長さの前記命令の前記第１の部分と組合せるように、かつ、前記修復されたプレデコード情報の前記第２の部分を前記第２の長さの前記命令の前記第２の部分と組合せるように動作可能なアラインメント論理と、
を含む、Ｃ１６に記載の装置。
［Ｃ２０］  前記プレデコーダがバイパスされる場合、前記プレデコーダは、ゲート・オフされる、Ｃ１８に記載の装置。
【図１】
0005384509.tif 000002
【図２】
0005384509.tif 000003
【図３Ａ】
0005384509.tif 000004
【図３Ｂ】
0005384509.tif 000005
【図４Ａ】
0005384509.tif 000006
【図４Ｂ】
0005384509.tif 000007
【図４Ｃ】
0005384509.tif 000008
【図５】
0005384509.tif 000009
【図６】
0005384509.tif 000010