(57)【要約】命令実行パイプラインにおいて、メモリアクセスの不整合が予測される。該予測に基づいて、追加のマイクロ操作は該メモリアクセス命令の実効アドレス生成に先立って該パイプラインにおいて生成される。該追加のマイクロ操作は、所定のアドレス境界を横切る範囲に入る該メモリにアクセスする。該パイプラインにおける該不整合の予測および該マイクロ操作の早期生成により、追加のマイクロ操作を生成して追跡するために十分な数のパイプライン制御資源が利用可能であることが保証され、実効アドレス生成時にそれら資源が利用できない場合にパイプラインフラッシュが回避される。不整合予測は、フラッグ、二重モードカウンタ、局所的プレディクタ、大域的プレディクタおよび組合せられたプレディクタのような既知の条件付ブランチ予測技術を使用することができる。不整合プレディクタは、メモリアクセス命令フラッグまたは不整合命令タイプによって使用可能にされてもよいし、あるいはバイアスされてもよい。【選択図】図３
2008530714.tif 000002
【特許請求の範囲】
【請求項１】
命令実行パイプラインにおいて、第１のメモリアクセスを実行するメモリアクセス命令を処理する方法は：
前記メモリアクセス命令のデータ不整合を予測することと；
前記メモリアクセス命令の実効アドレス生成に先立って、前記予測に応答して前記パイプラインにおいて少なくとも１つのマイクロ操作を生成することとを具備し、前記マイクロ操作は不整合データに対する第２のメモリアクセスを実行する。
【請求項２】
前記パイプラインにおける少なくとも１つのマイクロ操作の生成は、命令復号パイプステージにおいて前記マイクロ操作を生成することを具備する、請求項１に記載の方法。
【請求項３】
少なくとも１つのマイクロ操作の生成は、前記マイクロ操作のパイプライン制御資源を割り当てることを具備する、請求項１に記載の方法。
【請求項４】
前記パイプライン制御資源は、命令トラッキングＦＩＦＯにおいて少なくとも１つのエントリを含む、請求項３に記載の方法。
【請求項５】
前記パイプライン制御資源は、キャッシュミスキュー中に利用可能なスロットを含む、請求項３に記載の方法。
【請求項６】
前記メモリアクセス命令のデータ不整合の予測は、前記ビットが設定される間に全メモリアクセス命令が不整合と予測されるように、制御レジスタにおいて不整合予測ビットを設定することを具備する、請求項１に記載の方法。
【請求項７】
前記メモリアクセス命令のデータ不整合の予測は、前記属性が設定される場合に、前記対応するページの全メモリアクセス命令が不整合と予測されるように、前記メモリアクセス命令ページテーブルエントリに１以上の属性を設定することを具備する、請求項１に記載の方法。
【請求項８】
前記メモリアクセス命令のデータ不整合の予測は、スタックポインタが不整合であるときデータ不整合を予測することと、前記スタックポインタが整合であるときデータ整合を予測することとを具備する、請求項１に記載の方法。
【請求項９】
前記メモリアクセス命令のデータ不整合の予測は、整合ヒストリーを保存することと、前記整合ヒストリーに応答して不整合を予測することとを具備する、請求項１に記載の方法。
【請求項１０】
整合ヒストリーを保存することは、前記メモリアクセス命令に関連した整合ヒストリーを保存することを具備する、請求項９に記載の方法。
【請求項１１】
前記整合ヒストリーは前記メモリアクセス命令に関連した複数の命令アドレスビットによってインデックスされる、請求項１０に記載の方法。
【請求項１２】
前記整合ヒストリーは最も新しい前記メモリアクセス命令の整合を指示するフラッグを具備する、請求項１１に記載の方法。
【請求項１３】
前記整合ヒストリーの保存は、各前記メモリアクセス命令の整合に応答して二重モード飽和カウンタをインクリメントもしくはデクリメントすることを具備し、
前記整合ヒストリーに応答した前記データ不整合の予測は、前記二重モード飽和カウンタのＭＳＢを出力することを具備する、請求項１１に記載の方法。
【請求項１４】
前記整合ヒストリーの保存は、各前記メモリアクセス命令の整合に応答して二重モード飽和カウンタをインクリメントもしくはデクリメントすることを具備し、
前記整合ヒストリーに応答した前記データ不整合の予測は、前記カウンタのビットの前記符号化に基づいてデータ不整合予測を出力することを具備する、請求項１１に記載の方法。
【請求項１５】
前記整合ヒストリーの保存は、所定数の最も新しい前記メモリアクセス命令に関する整合の指示を保存することを具備し、
前記整合ヒストリーに応答したデータ不整合の予測は、二重モードカウンタのテーブルをインデックスするために前記指示を用いることと、前記インデックスされた二重モードカウンタのＭＳＢを出力することとを具備する、請求項１４に記載の方法。
【請求項１６】
整合ヒストリーの保存は全メモリアクセス命令と関連した整合ヒストリーを保存することを具備し、
前記整合ヒストリーに応答した不整合の予測は、二重モードカウンタのテーブルをインデックスするために前記整合ヒストリーを用いることと、前記インデックスされた二重モードカウンタのＭＳＢを出力することとを具備する、請求項９に記載の方法。
【請求項１７】
前記整合ヒストリーを用いて二重モードカウンタの前記テーブルをインデックスすることは、前記メモリアクセス命令と関連づけられた複数のアドレスビットと連結された、請求項１６に記載の方法。
【請求項１８】
前記整合ヒストリーを用いて二重モードカウンタの前記テーブルをインデックスすることは、前記メモリアクセス命令と関連づけられた複数のアドレスビットと排他的論理和演算された、請求項１６に記載の方法。
【請求項１９】
整合ヒストリーの保存は：
各前記メモリアクセス命令の前記整合に応答して独立の二重飽和カウンタをインクリメントあるいはデクリメントすることと；
全メモリアクセス命令と関連した包括的整合ヒストリーを保存することとを具備し；
前記整合ヒストリーに応答した不整合の予測は：
前記メモリアクセス命令と関連した前記二重モード飽和カウンタの前記ＭＳＢを具備する第１のプレディクタを生成することと；
前記メモリアクセス命令と関連した複数のアドレスビットと排他的論理和演算された前記包括的整合ヒストリーによってインデックスされたテーブルにおいて二重モードカウンタの前記ＭＳＢを具備する第２のプレディクタを生成することと；
選択二重モード飽和カウンタの前記ＭＳＢを出力することと、ここにおいて前記選択二重モード飽和カウンタは、前記第１のプレディクタおよび前記第２のプレディクタが一致しないとき、前記第１及び第２のプレディクタのうち正確であったものに有利な方向に、更新される、
を具備する請求項９に記載の方法。
【請求項２０】
過去の整合経験の保存は、過去のメモリアクセス命令の整合の統計的平均を維持することを具備する、請求項９に記載の方法。
【請求項２１】
過去の整合経験の保存は、所定数の最も新しいメモリアクセス命令の整合のローリング平均を維持することを具備する、請求項９に記載の方法。
【請求項２２】
過去の整合経験の保存は、整合と予測された不整合メモリアクセスの不整合キャッシュを維持することを具備し、前記整合ヒストリーに応答した不整合の予測は前記不整合キャッシュにおいてヒットすることを具備する、請求項９に記載の方法。
【請求項２３】
前記整合ヒストリーに応答した不整合の予測は、前記メモリアクセス命令の復号に先立って前記不整合キャッシュをインデックスすることを更に具備する、請求項２２に記載の方法。
【請求項２４】
不整合と予測された整合メモリアクセスを前記キャッシュから取り除くことを更に具備する、請求項２２に記載の方法。
【請求項２５】
前記メモリアクセス命令に関するデータ不整合の予測は、前記メモリアクセス命令におけるフラッグに応答してデータ不整合を予測することを具備する、請求項１に記載の方法。
【請求項２６】
前記メモリアクセス命令に関するデータ不整合の予測は、可能性のある不整合メモリアクセス命令を具備する前記メモリアクセス命令に応答してデータ不整合を予測することを具備する、請求項１に記載の方法。
【請求項２７】
複数のパイプステージを具備する命令実行パイプラインと；
メモリアクセス命令が不整合データにアクセスするであろうという予測を生成する不整合プレディクタと；
前記メモリアクセス命令の実効アドレスの生成に先立って、追加のメモリアクセスを実行するために、前記予測に応答して、前記パイプラインにおいて追加のマイクロ操作を生成する制御論理とを具備する、パイプラインされたプロセッサ。
【請求項２８】
前記追加のマイクロ操作は命令復号パイプステージにおいて生成される、請求項２７に記載のプロセッサ。
【請求項２９】
前記マイクロ操作は少なくとも１つの前記パイプステージを占有する、請求項２７に記載のプロセッサ。
【請求項３０】
前記不整合プレディクタは前記メモリアクセス命令整合ヒストリーを保存するメモリを含む、請求項２７に記載のプロセッサ。
【請求項３１】
命令実行ＦＩＦＯを更に具備し、前記制御論理は前記マイクロ操作に対応する前記命令実行ＦＩＦＯにおいてエントリを生成する、請求項２７に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般的にはプロセッサの分野に関係し、特にパイプラインされた(pipelined)プロセッサにおける非整列メモリアクセスを予測することに関係する。
【背景技術】
【０００２】
携帯型電子機器は一般化してきている。携帯型電子機器における２つの動向は、向上した機能性と減少したサイズである。向上した機能性はより高速でより強力なプロセッサによって提供される向上した計算力によって促進される。
【０００３】
高度装備および高度機能性の提供に加えて、携帯型電子機器それ自体がサイズ及び重量の縮小を続けている。この縮小傾向の１つの影響は、その機器内のプロセッサおよび装置のその他の電子素子に電力を供給するために使用されるバッテリのサイズ縮小である。バッテリ技術における向上がその問題を部分的に相殺する一方で、バッテリのサイズ縮小は全ての携帯型電子機器電子装置に厳しい電力予算を課す。携帯型電子機器の電力予算のかなりの部分はプロセッサによって消費される電力である。
【０００４】
このように、性能を向上し、電力消費を減少させるプロセッサの改良は携帯型電子機器のような多くの用途にとって望ましい。一般に、現代のプロセッサは、夫々がマルチプルな(multiple)実行工程を有する逐次命令が実行中に重なりあう、パイプラインされたアーキテクチャを用いる。最高性能のために、それらの命令はパイプライン中を連続して流れなければならない。命令がパイプラインからフラッシュ(flush)されその後に再始動される状況は、性能及び電力消費の双方に有害な影響を及ぼす可能性がある。
【０００５】
命令ステータス及びトラッキング(tracking)のキューロケーションのような、いくつかのパイプライン資源は、命令がパイプラインに入ると割り当てられる。１つの命令が元々割り当てられている資源より多くの資源を要求していることが、パイプラインにおいて後から発見されると、次の命令は、それらを必要とする命令に、これらの資源が再度割当られることを可能にするためにフラッシュされる必要がある。
【０００６】
メモリからあるいはメモリに不整合データをロードあるいは保存するメモリアクセス命令は、それに元々割り当てられていたより多くのパイプライン資源を必要とする可能性のある命令の一例であり、それはパイプラインの奥深くにいたるまで分からない。不整合データは、メモリに保存されているので、１ワードもしくは半ワード境界のような所定のメモリ境界を横切る(cross)データである。メモリが論理的に構成され、アドレスされ(addressed)、そしてメモリバスに物理的に結合される方法が原因で、メモリ境界を横切るデータは一般に、単一サイクルで読み書きされることができない。むしろ、境界の１つの側のデータを読むあるいは書くための１つと、もう一つは残りのデータを読むあるいは書くための別の一つの２つの連続するバスサイクルが必要とされる可能性がある。
【０００７】
非整列データへのメモリアクセス命令、すなわちロードあるいは保存命令は、その非整列データによって要求される追加のメモリアクセスを実行するために、パイプラインにおいて追加の命令工程、すなわちマイクロ操作を生成しなくてはならない。しかし、データの整合は、パイプラインの奥深くでしか分からない可能性のあるデータサイズ及びメモリアクセスの実効アドレスが実行段階において分かるまで決定されることができない。実効アドレスが生成されてデータの不整合が発見される時までに、第２のメモリアクセスを実行するためのマイクロ操作を生成するために利用可能なパイプライン制御資源は不充分である。このような不整合の場合、パイプラインはそのような資源を解放するために、少なくとも全ての次の命令からフラッシュされなくてはならない。フラッシュされた命令はその後パイプラインにおいて再フェッチされて再実行されなくてはならず、プロセッサ性能を劣化させ、電力を無駄にする。
【発明の開示】
【０００８】
［発明の概要］
メモリアクセス命令のデータ不整合は、命令の実効アドレス生成に先立って、パイプラインにおいて早期に予測される。第２のマイクロ操作を生成するためにパイプライン資源は割り当てられてもよく、そしてパイプラインは制御されてもよい。第２のマイクロ操作は不整合データによって要求される第２のメモリアクセスサイクルを実行するために使用される。
【０００９】
本発明は、１実施例において、命令実行パイプラインにおけるメモリアクセス命令を処理する方法に関するものである。メモリアクセス命令の不整合が予測され、メモリアクセス命令の実効アドレス生成に先立って少なくとも１つのマイクロ操作が予測に応答してパイプラインにおいて生成され、前記マイクロ操作は不整合データの第２のメモリアクセスを実行する。
【００１０】
他の実施例において、本発明はパイプラインされたプロセッサに関する。プロセッサは、複数のパイプステージを具備する命令実行パイプラインと、メモリアクセス命令は不整合データにアクセスするであろうという予測を生成する不整合プレディクタ(predictor)とを含む。プロセッサは更に、メモリアクセス命令の実効アドレスの生成に先立って、予測に応答してメモリアクセス命令に関するパイプラインにおいて追加のマイクロ操作を生成する制御論理を含む。
【００１１】
［発明の詳細な説明］
パイプラインすること(pipelining)は、マルチプルな命令が実行中に同時に重なり合わされるプロセッサ実施技術である。典型的アーキテクチャにおける各命令は、フェッチ、復号、１以上の実行工程、メモリアクセスおよびライトバック(Write-Back)のような複数の実行工程において典型的に実行される。プロセッサパイプラインは複数の「パイプステージ」を具備する。一般に論理と記憶領域とを具備する各パイプステージは命令の実行工程あるいは実行工程の一部を完全に行う。パイプステージは互いに結合してパイプラインを形成する。命令はパイプラインに入って、パイプステージにおいて連続的に処理される。追加の命令は、前の命令が実行を完了する前にパイプラインに入って、このようにマルチプルな命令は任意の与えられた時間にそのパイプライン内で処理されることができる。逐次命令ストリーム中の複数の命令の内の並行性(parallelism)を活用するこの能力は改良されたプロセッサ性能に非常に貢献する。理想的条件下で、および１サイクルで各パイプステージを完了するプロセッサにおいて、パイプラインを満たすという短時間の初期プロセスに続いて、命令はサイクル毎に実行を完了する。
【００１２】
このような理想的条件は、複数の命令間のデータ依存性（データハザード）や、複数のブランチ(branches)のような制御依存性（コントロールハザード）、プロセッサ資源割当衝突（構造ハザード）、割込み、キャッシュミスなどを含む様々な要因が原因で、実際には滅多に実現されない。加えて、いくつかの命令は１以上のパイプステージを介して１以上のパス(pass)を必要とする。この場合、プロセッサはその命令のためのマルチプルなマイクロ操作を生成する。ここにおいて用いられるように、１つのマイクロ操作は一時に１つのパイプステージを占領する論理エンティティであり、パイプライン中を流れる。理想的には、大部分の命令が（１サイクルごとに１命令の目標に近づくために）パイプライン中に単一のマイクロ操作を具備する。しかし、命令は２以上のマイクロ操作を具備してもよく、あるいは２以上に分割されてもよく、その各々はパイプライン中を逐次流れる。
【００１３】
構造的パイプラインハザードの１形態は、不整合メモリアクセスから生じる。多くのメモリアクセス命令は実行ステージ期間中に、実効メモリアドレス、すなわちデータがロードされるか、あるいはデータが保存されるアドレス、を計算する。しかし、プロセッサ資源、特にパイプステージを命令に割り当ててパイプラインを介して命令を追跡する(track)パイプライン制御資源は、復号ステージ期間中にロード又は保存命令に割り当てられる。ワード、半ワード(half-word)、あるいは他の所定のアドレス境界上に整列されるメモリアドレスの通常の場合、ロードあるいは保存操作は、（データがメモリから検索されている(retrieved)あいだにパイプラインが一時停止される可能性があるが、）単一のパイプステージにおいて実行されてもよい。
【００１４】
メモリアクセス命令が所定のアドレス境界を横切るデータに関するものである場合、２つのロードあるいは保存操作が要求され、パイプライン中の２つのマイクロ操作が実行することを要求する。しかし、最もあり得る一つのマイクロ操作だけが復号ステージにおいてロードあるいは保存に割り当てられた。パイプラインの実行ステージにおいて新たなマイクロ操作を生成する必要性は不確かである。パイプライン資源が完全に割り当てられる場合において、新たなマイクロ操作の必要性は、必要なパイプライン制御資源を解放するためにパイプラインから全ての次の命令がフラッシュされることを要求する例外を発生させるであろう。
【００１５】
図１はプロセッサ１０の機能的ブロック図を示している。プロセッサ１０は、命令実行ＦＩＦＯ１５を含むことができる制御論理１４に従って、命令実行パイプライン１２において命令を実行する。パイプラインはパイプステージにおいて編成された多様なレジスタまたはラッチ１６と、１以上の演算論理ユニット（ＡＬＵ）１８とを含む。汎用レジスタ（ＧＰＲ）ファイル２０はメモリヒエラルキーの頂点を有するレジスタを備える。パイプラインは、命令サイド変換ルックサイドバッファ(Instruction-side Translation Lookaside)（ＩＴＬＢ）２４によって管理されるメモリアドレシング(addressing)と許可を用いて、命令キャッシュ２２から命令を取り出す。データは、主変換ルックサイドバッファ（ＴＬＢ）２８によって管理されるメモリアドレシングと許可を用いてデータキャッシュ２６からアクセスされる。様々な実施例において、ＩＴＬＢはＴＬＢの一部のコピーを具備してもよい。その代わり、ＩＴＬＢとＴＬＢとは統合されていてもよい。同様に、プロセッサ１０の様々な実施例において、Ｉキャッシュ２２とＤキャッシュ２６は統合されてもよく、すなわち一体化されていてもよい。Ｉキャッシュ２２および／またはＤキャッシュ２６におけるミスは、キャッシュミス処理キュー２９を含むことができる、メモリインターフェース３０の制御下で、主（オフチップ）メモリ３２へのアクセスを発生させる。プロセッサ１０は、様々な周辺機器３６へのアクセスを制御する入出力（Ｉ／Ｏ）インターフェース３４を含んでもよい。当業者は、プロセッサ１０の数多くの変形が可能であることを認識するであろう。例えば、プロセッサ１０はＩおよびＤキャッシュのいずれか一方あるいは両方のセカンド(second)レベル（Ｌ２）キャッシュを含んでもよい。加えて、プロセッサ１０の中に示されている機能的ブロックのうちの１以上は、特定の実施例から除去されることができる。
【００１６】
下の表１は代表的パイプライン操作のダイアグラムを示している。代表的アーキテクチャの命令は６工程で実行する：
ＩＦ−命令フェッチ
ＩＤ−命令復号
ＥＸ１−実行（メモリアクセス命令のフェッチアドレスオペランド）
ＥＸ２−実行（メモリアクセス命令の実効アドレス演算）
ＭＥＭ−メモリアドレス
ＷＢ−ライトバック
【表１】
2008530714.tif 000003
【００１７】
各パイプステージが１サイクルで実行し、且つクロック６〜１０からのパイプラインの機能停止(stall)、ハザード、あるいは割込みがない場合、１つの命令が各サイクルにおいて完了し、その結果のライトバックを実行する。クロックサイクル１〜４は、例えばリセット、コンテキスト(context)スイッチ、割込みあるいはパイプラインのその他のフラッシュに続いて実行される、パイプラインを満たす初期化工程を表す。更なる命令はｉ＋４番目のものに続くので、１サイクルごとに１命令の性能は理想的な場合に無期限に続く。表１のパイプライン構造は見本に過ぎない。任意の与えられたプロセッサ実施において、パイプラインは任意の命令工程について任意の数のパイプステージを含むことができる。
【００１８】
ロード（ＬＤ）および保存（ＳＴ）命令はそれぞれデータの読取りおよび書込みを行うのためにメモリにアクセスする。メモリは一時に所定量のデータに同時にアクセスするよう編成されている。図２は、プロセッサ１０とバス３１とメモリ３２とを含む、電子機器の１つのメモリ構造のブロック図である。この例において、バス３１は３２ビット幅であり、（例えば、プロセッサあるいはオフチップＲＡＭにキャッシュメモリを有することのできる）メモリ３２はワード（３２ビット）境界上に整列される。当業者に容易に既に明らかになるように、多数の異なるバス及びメモリアーキテクチャが、対応する異なるデータ整列境界を用いて、実施されることができる。
【００１９】
非整列メモリアクセスの一例として、図２は、０ｘ０Ａの実効開始バイトアドレス及び３バイトのサイズフィールドを有するＬＤ命令によって読取られるメモリを示している。ワード整列メモリ３２に関して、このデータは１つのバスサイクルでメモリから読取られることができない。むしろ、プロセッサ１０は最初に（バイト０ｘ０８及０ｘ０９をマスキング(masking out)する）０ｘ０８で始まる全ワードを読取り、その後（バイト０ｘ０Ｄから０ｘ０Ｆをマスキングする）０ｘ０Ｃで始まる全ワードを読取らなければならない。ダブルワードメモリ整列及び６４ビットバスを備えるシステムにおいて、このデータは１サイクル内に読取られることができる。しかし、０ｘ０７で始まる３バイトデータは不可能である。一般的に、リアルワード(real-world)バス３１及びメモリ３２構成は非整列メモリアクセスの問題を引き起こす可能性がある。
【００２０】
非整列データは２つのバスサイクルを必要とするため、（ここにおいて「非整列メモリ命令」と呼ばれている）非整列データへ向けられたメモリアクセス命令は、実行ステージにおいて２つのマイクロ操作を生じさせることになる。例えば、表１のｉ＋３番目の命令が非整列メモリアクセス命令であったなら、パイプラインは下記表２に示されているように実行する。  
【表２】
2008530714.tif 000004
【００２１】
メモリアクセス命令ｉ＋３の実効アドレスはＥＸ２ステージ期間中にクロックサイクル７において決定される。実効メモリアクセスが非整列であり、すなわち所定のメモリ境界を横切るので、単一のバスサイクルでアクセスされることができないと、プロセッサ制御論理が決定できるのはこのポイントにおいてのみである。十分な資源が利用可能であるならば、プロセッサは（ｉ＋３）2と表されている、メモリアクセス命令の追加のマイクロ操作（表２の「ｇｅｎ  μ―ｏｐ」）を生成する。最初に割り当てられたマイクロ操作および新たなマイクロ操作はその後、残りのパイプライン中を逐次進行する。
【００２２】
ＥＸ２で第１のメモリアクセスのアドレスを計算した元のマイクロ操作はその後、ＭＥＭにおいてアドレスされたデータの第１部分にアクセスし、ＷＢにおいてデータを書込む。新たに生成されたマイクロ操作はクロックサイクル８のＥＸ２において（例えば、１ワードオフセットを追加することによって）第２メモリアクセスのアドレスを計算し、その後、ＭＥＭにおいてアドレスされたデータの第２部分にアクセスしＷＢにおいてデータを書込む。
【００２３】
命令ｉ＋３の不整合データによって必要とされる追加のマイクロ操作により、命令ｉ＋４はクロックサイクル８において機能停止する。パイプラインにおいてこの機能停止を実施するために、ＥＸ１ラッチへのクロックはゲートされ(gated)なければならず、ＥＸ１ラッチへの出力はＥＸ１ラッチへの入力においてマルチプレクサにリサイクルされ(recycled)、あるいは、いくつかの他のメカナズム(mechanism)はクロックサイクル７及び８の両方を通じてＥＸ１コンテンツを保持するために使用されなければならない。同様に、後に続く命令ｉ＋５はパイプライン全体においてＤＣＤラッチなどで機能停止する。特に機能停止の必要性がパイプラインの終わりの方でしか発見されないと、この機能停止制御を実施することにより設計問題(challenge)が生じる。更に、ＥＸ２のメモリアクセス命令とその前のパイプステージの他の命令との両者の、パイプステージを「リサイクルする」必要性は、機械サイクル時間を増加することにより性能を潜在的に低下させながら、１以上のクリティカルパス(critical paths)上にマルチプレクサ選択遅延を追加する。パイプライン機能停止を引き起こすことが出来るイベントを最小化することにより、性能は改善される。
【００２４】
不整合メモリアクセスはまた、命令パイプライン１２の一部の機能的ブロック図であり、図３を参照してより詳しく説明される。パイプラインにおいて、ＬＤ命令は命令キャッシュ２２からフェッチされ、ＩＦラッチ４０にロードされる。命令は復号論理４２によって復号される。１実施例において、ＬＤは、第１のレジスタｒ１に位置するベースアドレスを、第２のレジスタｒ２に位置するオフセットに追加することによって実効アドレスを計算する。２つのレジスタｒ１及びｒ２のアドレス及びデータのサイズは命令から復号され、ＤＣＤラッチ４４においてラッチされる。その後これらのレジスタアドレスは、（ｒ１）、（ｒ２）と表わされているように、レジスタのコンテンツに戻るＧＰＲファイル２０のようなレジスタファイルに索引をつけることができる。これらの値はＥＸ１ラッチ４６中に保存され、ＡＬＵ１８によって追加され、実効メモリアドレスはＥＸ２ラッチ４８中に保存される。メモリアクセスはその後５０において進行しデータキャッシュ２６にアクセスする。アクセスがデータキャッシュ２６において失敗すると、メモリアクセス操作５０は必要に応じてアドレス変換を行い、メモリアクセスが解決するまでパイプラインを機能停止する、オフチップメモリ３２にアクセスする。とにかく、メモリアクセス操作５０は、ＭＥＭラッチ５２に保存されている非整列データの第１の部分に戻る。
【００２５】
（ｒ１）と（ｒ２）を追加することで４８において実効アドレスが生成されると、制御論理１４は実効アドレス及びサイズフィールドを検査し、メモリアクセスが非整列されることを初めて検出する。十分なプロセッサ資源が利用可能であるならば、実効アドレスは、矢印５４によって示されているように、ＥＸ２ラッチ４８で「リサイクル」される。そのアドレスは第２のメモリアクセスの実効アドレスを生成するために１ワードオフセットを用いて更新される。このことは、一つのマイクロ操作をそのパイプラインに追加し、その後に続く命令はＥＸ２パイプステージに進むことを許されない。第２のワードは５０においてアクセスされ、第１のワードから抽出されたデータがパイプラインの下に進むとＭＥＭラッチ５２に保存される。データはその後ＧＰＲに連続的に書込まれ、あるいは適宜、組合せられその後書込まれる。
【００２６】
説明の為に、図３はそのステージにおいて関連するＬＤ命工程を用いてパイプライン１２の各ステージを示していることを特筆する。実際には、関連するＬＤ命令工程がパイプステージにおいて完了し、対応するマイクロ操作が次のステージに進むと、もう一つの命令のマイクロ命令が処理のためにパイプステージにロードされる。このように、ＬＤ命令の実効アドレスが４８においてラッチされるときまでに、その前の３つのパイプステージは、３つまでの異なる命令に相当する３つのマイクロ操作によりロードされる。ＥＸ２ラッチ４８における実効アドレスの生成のときまでに、５４で示されているようにアドレスをサイクルして(cycle)、第２のメモリアクセスを実行するための第２のマイクロ操作を生成するために利用可能なパイプライン制御資源が不充分であるならば、構造的ハザードが生じ、例外が発生するであろう。この場合、不整合ＬＤ命令の後の全ての命令は、必要な制御資源を利用可能にするためにパイプラインからフラッシュされなければならない。これらの命令はあとで再フェッチおよび再処理をされなければならず、操作を二度行うことに関連する電力の無駄使い及び性能ペナルティの両方を招く。
【００２７】
ＥＸ２パイプステージのマイクロ操作の生成に利用可能でなければならないパイプライン制御資源は命令追跡ＦＩＦＯ１５（図１）におけるエントリを含むことができる。命令トラッキングＦＩＦＯ１５はプログラム順に各送出された命令ごとに１つのエントリを含む。ＦＩＦＯ１５のエントリは、対応する命令が送出されると割り当てられ、パイプライン制御論理１４が、割込みを引き起こすかもしれない例外を命令が有しているかどうかを判断すると、数サイクル後に更新される。エントリは、それが「確認」され（すなわち、パイプライン制御装置が、命令が例外なく実行を完了するであろうと判断し）、「コミット(commit)」された（すなわち、パイプライン制御装置が、それとその先行するものの全てが確認されているので、その命令がパイプラインにおいて実行を完了することが明らかであると認識した）後にそれぞれ１つをポッピング(popping)して、順番に命令トラッキングＦＩＦＯ１５から取り除かれる。
【００２８】
命令トラッキングＦＩＦＯ１５の各エントリが単一のマイクロ操作に相当するならば、命令トラッキングＦＩＦＯ１５の構成及び制御は単純化される。他方において、非整列メモリアクセス命令が、例えばＥＸ２パイプステージのような、パイプラインの奥深くで追加のマイクロ操作の生成を引き起こす場合、命令トラッキングＦＩＦＯ１５中の各エントリはマルチプルな可能性のあるマイクロ操作を追跡できなければならず、各ＦＩＦＯエントリ毎のハードウエア資源及び制御複雑性を増加させる。この増加した複雑性とサイズは各ＦＩＦＯエントリごとに必要とされるが、しかし非整列メモリアクセス命令―遅延した(late)マルチプルなマイクロ操作トラッキングを要求するための命令だけ―、は比較的希少である。命令トラッキングＦＩＦＯ１５をエントリ毎のマルチプルなマイクロ操作を追跡するよう設計する代わりとして、各エントリは１つのマイクロ操作だけを追跡してもよい。この場合、遅延不整合メモリアクセス命令は、パイプライン（及び命令トラッキングＦＩＦＯ１５）がその後ろの全ての命令からフラッシュされ、２つのエントリが２つのマイクロ命令に相当する命令トラッキングＦＩＦＯ１５に割り当てられ、そして、後に続く全ての命令が再フェッチ・再送出されるようにする。このことは重大な性能的・電力的ペナルティを負わせる。
【００２９】
命令トラッキングＦＩＦＯ１５に加えて、パイプラインの終わりの方の利用不可能な不整合メモリ命令に必要なもう一つの資源は、キャッシュミスキュー(cache miss queue)２９のエントリである。データアクセスがデータキャッシュにおいてミスすると、そのアクセスは外部バスの主たるメモリにアクセスするためにキュー２９に配置される。利用可能なキューエントリがない場合、パイプラインは機能停止しなければならない。メモリアクセス命令の場合、キャッシュミスキュー２９はＤＣＤステージ中にチェックされ、エントリが利用可能な場合、制御論理１４は、キャッシュミスがパイプライン１２を機能停止しないであろうことを知りながら、命令の進行を許す。しかし、非整列メモリアクセス命令が追加のメモリアクセスを実行するためにパイプの終りの方で追加のマイクロ操作を生成しなければならない場合、また、メモリアクセスがキャッシュにおいてミスする場合、第２のキャッシュミスキューエントリが必要とされる。ＤＣＤパイプステージには１つのみしか保存されていなかったので、利用可能なキュー資源は不充分であり、パイプライン１２を機能停止させる可能性がある。
【００３０】
本発明の１実施例によると、メモリアクセス命令の実効アドレス生成の前に、メモリアクセス命令のデータの不整合が予測されマイクロ操作はその予測に応答して生成される。新たなマイクロ操作は不整合データにアクセスするために必要とされる第２のメモリアクセスを実行する。このことはパイプライン制御資源が、命令を復号するとすぐのような、パイプラインの早期に割り当てられることを可能にする。
【００３１】
図２を再び参照すると、不整合プレディクタ５６は、命令が４２において復号されるとすぐにメモリアクセス命令を検出する。ＩＦラッチ４０において「リサイクル」されるＬＤ命令によって示されるように、不整合予測に応答して、第２のマイクロ操作が直ちに生成される。第２のマイクロ操作はパイプラインを介して主(primary)ロード命令マイクロ操作に続き、データの予測不整合が正しければ第２のメモリアクセスサイクルを実行するために利用可能となる。メモリアクセスのアドレスは例えばワンワードオフセットを有するＬＤ命令のそれと同一であることが周知であるので、追加のマイクロ操作はＬＤ命令について上述したレジスタアクセス及びアドレス生成を実際に行う必要はない。５０におけるＬＤ命令による第１のメモリアクセスに続いて、不整合予測が正しかったなら、第１のデータがＭＥＭラッチ５２に保存されるときに、不整合データを読み取るために必要な第２のメモリアクセスのアドレスが計算され、ＥＸ２ラッチ４８に保存される。第２のメモリアクセスはその後実行され、第２のデータはキャッシュ２６またはメモリ３２から取得されてＭＥＭラッチ５２にロードされる。
【００３２】
不整合予測が誤っていた場合、第２のメモリアクセスは実行されず、追加のマイクロ操作は放棄される。パイプライン機能停止の場合、第２のマイクロ操作に割り当てられた資源を消費し、パイプラインからそれを実効的に取り除きながら、ＬＤに続く命令は進む。
【００３３】
下の表３は、命令ｉ＋３が、不整合が正しく予測される不整合メモリアクセス命令であるときのパイプラインを記載している。  
【表３】
2008530714.tif 000005
【００３４】
ＬＤとして命令を復号すること及び不整合を予測することに応答して、第２のマイクロ操作（ｉ＋３）２は復号パイプステージにおいてクロックサイクル５で生成される。ＬＤ命令の実効アドレスがクロックサイクル７のＥＸ２パイプステージにおいて計算される前の、マイクロ操作のこの早期生成は、十分なパイプライン制御資源がマイクロ操作（ｉ＋３）２に利用可能であるということを保証する。命令実行のタイミングは、そうでなければ、ＥＸ２パイプステージにおける第２のマイクロ操作（ｉ＋３）２の生成の十分な資源の利用可能性を仮定した表２のそれに類似する。１つの相違は、命令ｉ＋４は同一量によって機能停止されるが、マイクロ操作（ｉ＋３）２はパイプラインのより早期に生成されるので、その機能停止は実行シーケンスのより早期にくるということである。
【００３５】
不整合予測が正しい場合、正しいパイプライン制御資源は不整合メモリアクセスを実行するために正確に割り当てられ、そして次の命令はパイプラインにロードされ、それらが不整合のためにフラッシュされる恐れなく、実行されることができる。不整合予測が誤っている場合、プロセッサの性能および電力管理は劣化する。しかし、性能における劣化は対称的ではない。下の表４は不整合予測正確さの見込みに関する相対的性能および電力影響を記載している。  
【表４】
2008530714.tif 000006
【００３６】
正しく予測された場合、命令を完全に実行するために必要とされるメモリアクセス命令に必要数のマイクロ操作を正確に割り当てることにより最適な性能が得られる。整合と予測されたけれど実際には不整合である誤予測の場合は上述されていて、データ整列は上述した例のＥＸ２パイプステージにおいて、実効アドレスがメモリアクセス命令に生成されるまで、チェックされない。説明したように、十分なパイプライン制御資源が利用可能な場合、マイクロ操作は第２のメモリアクセス操作を実行するために生成されるので、性能劣化はメモリアクセス命令に続く命令の完了の増加した待ち時間だけである。しかし、十分なパイプライン制御資源が利用可能でない場合、例外が生じ、パイプライン１２は追加のマイクロ操作を生成および管理するために必要な資源を解放するために、そのメモリアクセス命令後にロードされた全ての命令からフラッシュされる。これは、性能および電力最適化の点で最悪の可能性である。
【００３７】
不整合と予測されたが実際には整合されたという誤予測の場合、そのメモリアクセス命令に続いてパイプライン１２において余分なマイクロ操作または「バブル(bubble)」が生成される。メモリアクセス命令の実効アドレスが生成されて、制御論理１４が、それが実際に整合されていることを検出することができると、余分なマイクロ操作は放棄される。たとえば、メモリアクセス命令がキャッシュ２６においてミスし、オフチップメモリ３２へのアクセスを強要する場合、パイプライン１２はメモリアクセス操作の完了を未決のままにしながら機能停止されることとなる。生成されたマイクロ操作の後ろのもう一つの命令は、それがＥＸ１あるいはＥＸ２パイプステージにおいて何の障害にも遭遇しない場合、バブルを消滅させながらメモリアクセス命令の直後に進むことができる。この場合、マイクロ操作を生成・管理することにおいていくらかの電力が無駄遣いされるが、性能劣化は生じない。メモリアクセス命令がキャッシュ２６においてヒットする(hits)（及びパイプライン１２は、そうでなければ、機能停止しない）という、より可能性のあるケースにおいて、バブルはパイプライン１２を通って流れ、１サイクルの性能劣化（１パイプステージにつき１サイクルと仮定）を引き起こす。しかし、誤って予測された不整合は例外を発生させず、あるいは必要な制御資源の欠乏が原因でパイプライン１２をフラッシュしない。
【００３８】
不整合予測は様々な他の方法で実施されてもよく、そのなかのいくつかはここにおいて開示されている。しかし、本発明は開示されている特定の不整合予測アルゴリズムに限定されない。メモリアクセス命令の不整合をどうにかして予測すること、および、不整合データにアクセスするために、その予測に応答して、命令の実効アドレス生成前にマイクロ操作を生成することは本発明の技術的範囲内である。
【００３９】
不整合データアクセスが共通であるとき、妥当な取るに足りない不整合予測アルゴリズムは単純に不整合を予測し、そしてメモリアクセス命令の実効アドレスを生成する前に追加のマイクロ操作を常に生成する可能性がある。このことは、実際に整合されたメモリアクセスにつき１サイクルの性能ヒットという犠牲を払って、不整合による例外なしあるいはパイプラインフラッシュなしを保証する。本発明の実施例によると、「予測不整合」モードは制御レジスタのビットによって定義される。アプリケーションは、それが数多くの不整合メモリアクセスを予期した場合、ビットを設定することによりそのモードを使用可能にすることができる。ビットが設定される間、全メモリアクセスは不整合と予測される。もう一つの実施例において、不整合予測はメモリアクセス命令のページテーブルの属性によって制御されるため、単一のページからの命令による全メモリアクセスは同様に、整合あるいは不整合と、予測される。
【００４０】
ほとんどのコードは、メモリのエリアまたはコードの特定のセグメント(segment)内であると非常に容易に特定されている不整合メモリアクセスに遭遇しない可能性がある。したがって、より高性能な不整合予測方法が望ましく、連続的に使用可能にされ得るが、しかし全メモリアクセス、または特定のページの全てを盲目的に予測するものではない予測は、不整合とされるであろう。例えば、１実施例において、不整合予測はスタックポインタ(stack pointer)整合に続くことができる。そのスタックポインタが不整合であるならば、メモリアクセスは不整合であると予測される。
【００４１】
条件付ブランチ命令の動作(behavior)の予測方法はよく知られており、多くのものは不整合を予測することに適用可能である。例えば、最近の過去メモリアクセスパターンは将来のメモリアクセスの整合の良いインジケータとなり得る。ある実施例において、メモリアクセス命令のアドレスビットによってインデックス(index)される複数の１ビットフラッグは、例えば不整合アクセスを指示する１および整合アクセスを指示するゼロ（あるいは逆）のような、対応する命令で最も新しいメモリアクセスの整合を指示する。不整合フラッグは，予測の正確さを低下させる可能性のあるメモリアクセス命令間の不整合エイリアシング(aliasing)を防止するためにメモリアクセス命令アドレスの全てあるいはかなりの部分を比較するタグを含むことができる。その代わりに、資源を節約して使用する(conserve)ために、アドレスの最下位の数ビットのみが不整合フラッグをインデックスするために用いられてもよい。
【００４２】
メモリアクセス命令の実効アドレス生成に先立って、また、好ましくはできるだけ早く、対応する不整合フラッグがチェックされる。メモリアクセス命令の最も新しい実行が不整合であった場合、パイプライン制御装置は係属中の(pending)アクセスも不整合であろうと予測し、第２のメモリアクセスを実行するためにマイクロ操作を生成する可能性がある。命令のタイプ（すなわち、メモリアクセス命令）は命令復号パイプステージにおいて最初に知られるので、マイクロ操作はそこで生成されるのが好ましい。しかし、マイクロ操作はパイプラインにおいて後から生成されてもよい。不整合予測に応答した、メモリアクセス命令の実効アドレスの生成に先立つマイクロ操作の生成は本発明の技術的範囲内である。
【００４３】
１ビット不整合フラッグの結果、整合メモリアクセス命令のストリームにおける断片的な(odd)不整合メモリアクセス命令は、一度は不整合命令が最初に遭遇されたとき、そして再び（その不整合フラッグが設定される）命令の次の整合された実行時の、二度、誤予測する。条件付ブランチ予測においても周知のこの問題の解決策は、メモリアクセス命令アドレスによってインデックスされた、２ビット飽和カウンタの表を具備する二重モード(bimodal)不整合プレディクタである。各カウンタは４つの状態のうちの１つを有する：
１１−強く不整合
１０−弱く不整合
０１−弱く整合
００−強く整合
【００４４】
メモリアクセス命令の実効アドレスが生成されると、対応するカウンタが更新される。不整合メモリアクセス命令は状態を強く不整合にインクリメントし、整合メモリアクセス命令は状態を強く整合にデクリメントする。このような二重モードカウンタは、不整合アクセスのストリームの始まりにおける二度の誤予測という犠牲を払って、整合アクセスのストリームにおける断片的不整合アクセスに関しては一度誤予測するだけである。
【００４５】
条件付ブランチ予測から借用されるもう一つの不整合予測アルゴリズムは局所的不整合プレディクタである。局所的不整合プレディクタは２つのテーブルを維持する。第１のテーブルは局所的不整合ヒストリーテーブルである。これはメモリアクセス命令のアドレスビットによってインデックスされ、各メモリアクセス命令のｎの最も新しい実行の整合／不整合ヒストリーを記録する。他方のテーブルはパターンヒストリーテーブルである。二重モードプレディクタのように、このテーブルは二重モードカウンタを含むが、そのインデックスは第１のテーブルの不整合ヒストリーから生成される。整合を予測するために、不整合ヒストリーは検索され(looked up)、そのヒストリーはその後、不整合予測を行う二重モードカウンタを検索するために用いられる。
【００４６】
不整合の予測の更なる他のオプションは、多くのメモリアクセスの動作が他の最近のメモリアクセスのヒストリーと強く相関していることを利用する、グローバル(global)不整合プレディクタである。グローバル不整合プレディクタは単一のシフトレジスタを、実行されたあらゆる全てのメモリアクセス命令の最近の不整合ヒストリーを用いて更新しつづけ、二重モードカウンタのテーブルにインデックスするためにこの値を用いる。
【００４７】
その代わりに、二重モードカウンタのテーブルは、ｇｓｅｌｅｃｔプレディクタとして知られる、メモリアクセス命令のアドレスの数ビットと連結された最近の不整合ヒストリーを用いてインデックスされてもよい。ｇｓｅｌｅｃｔは小さいテーブルサイズに関して局所的予測よりも正確な結果をもたらすことができる。もう一つの代替として、メモリアクセス命令アドレスは、連結されたものではなく、ｇｓｈａｒｅプレディクタとして知られる、グローバル的ヒストリーを用いて排他的論理和演算されることができる。ｇｓｈａｒｅは大きいテーブルに関してｇｓｅｌｅｃｔよりも正確な不整合予測をもたらすことができる。ｇｓｅｌｅｃｔ及びｇｓｈａｒｅが局所的予測よりも正確でないとしても、それらは実施理由のために好ましいことがある。ｇｓｅｌｅｃｔ及びｇｓｈａｒｅは整合予測ごとに１つのテーブル検索(lookup)を必要とし、そこにおいて局所的予測は連続して２つのテーブル検索を必要とする。
【００４８】
１９９３年、スコット・マックファーリング氏は、ここにおいてその全文が参考文献とされている、デジタルウエスタンリサーチラボラトリーテクニカルノートＴＮ３６「ブランチプレディクタの結合(Combining  Branch  Predicator)」において、ブランチプレディクタを結合することを提案した。マックファーリング氏が提案した技術は、不整合メモリアクセスの予測の問題に有益に適用可能であり、それによって、本発明による、メモリアクセス命令の実効アドレス生成に先立ってパイプラインマイクロ操作を生成する。
【００４９】
ある実施例において、結合された不整合予測は３つのプレディクタ、すなわち、二重モード、ｇｓｈａｒｅ、およびメモリアクセスごとの命令(per-memory-access instruction)ベースで用いるために二重モードまたはｇｓｈａｒｅのどちらかを選ぶ二重モードのようなプレディクタを並列に用いる。選択プレディクタはさらに別の２ビットアップ／ダウン飽和カウンタであり、この場合、ＭＳＢは使用すべき予測を選択する。この場合、カウンタは、二重モード及びｇｓｈａｒｅの予測が一致しないときは常に、どちらのプレディクタでも正確であったものに有利である(favor)ように更新される。
【００５０】
もう一つの実施例において、不整合プレディクタは、完全に連想型であってもよいしあるいは連想型に設定されてもよく、かつメモリアクセス命令アドレスの一部によって、あるいは上記のｇｓｅｌｅｃｔおよびｇｓｈａｒｅパラメータについてのような、他の最近の不整合ヒストリーを用いて連結あるいは排他的論理和演算されたそのアドレスの一部によって、インデックスされてもよい、不整合キャッシュを維持することができる。命令フェッチパイプステージ期間中（例えば、命令がメモリアクセス命令であると知られる前）のような、パイプラインの早期に、キャッシュはインデックスされてもよい。不整合キャッシュがヒットする場合、そのメモリアクセスは最近不整合だったものであり、不整合と予測される可能性がある。このキャッシュアクセスがミスする場合、メモリアクセスは整合と予測される。エントリは予測されない不整合メモリアクセス命令のキャッシュに追加され、非整列と予測された整合メモリアクセスのキャッシュから取り除かれる。
【００５１】
様々な他の不整合予測アルゴリズムが可能である。例えば、不整合プレディクタはメモリアクセス命令の整合動作の詳細な統計を維持し、そして命令毎にもしくはグローバルに、過去の整合経験の統計学的平均に基づいて不整合を予測してもよい。同様に、不整合プレディクタはｎの最も新しいメモリアクセス命令の整合のローリング(rolling)平均を維持してもよい。
【００５２】
いくつかの命令設定アーキテクチャは、そのアプリケーションに関するプログラマーの特有の知識に基づいて、彼または彼女によって特定されることのできるオペレーションコード(opcode)において静的予測ビットを含む。例えば、ブランチが「ブランチ・オン・エラー(branch on error)」状況において使用され、エラーが比較的まれである場合、プログラマーはそれらのブランチを「取られていない」と静的に予測するかもしれない。同様に、プログラマーは特定のアプリケーションのメモリ整合動作を見抜くかもしれない。例えば、多くのデータ加工アプリケーションはうまく設計され秩序立ったデータ構成を用いており、非整列メモリアクセスがある場合、予期されるものはほとんどない。他方において、いくつかのアプリケーションは非常に多くの非整列データアクセスを予期することができる。例には、共用チャネルの連続データストリームから特定のデータを抽出する通信プログラム、あるいは非同期トリガーに応答して連続出力からデータをロギング(logging)するデータ獲得アプリケーションが含まれる。このようなアプリケーションにおいて、不整合予測を可能にすること、あるいは、その代わりに、より精力的な(aggressive)モードに不整合予測をバイアスすることは、プロセッサ性能および電力節約を向上させることができる。本発明の１実施例によると、プログラマーは１組の非整列(unaligned)メモリアクセス命令、あるいはメモリアクセス命令のフラッグを経由してプログラムの不整合予測動作に影響を及ぼすことができる。
【００５３】
１実施例において、ＬＤおよびＳＴ命令のようなメモリアクセス命令は、不整合予測が実行されるべきであることを指示するパラメータリストにおいてフラッグを含む。その代わりに、命令セットは、可能性のある不整合ロードおよび保存操作にそれぞれ関するＬＤＭＡＬおよびＳＴＭＡＬのような新たな命令を含んでもよい。このフラッグあるいは新たな命令は、メモリ整合予測を可能にするための不整合プレディクタ５６への入力を提供し、非整列データへアクセスするために追加のメモリアクセスサイクルを実行するために実効アドレス生成に先立ってマイクロ操作の早期生成を行う。
【００５４】
もう一つの実施例において、不整合予測フラッグすなわち命令タイプは、不整合プレディクタ５６を、不整合予測がフラッグなしよりも精力的なものになるモードにする。例えば、フラッグすなわち命令タイプは、不整合プレディクタを上記した２ビット二重モード飽和カウンタを使用するものから、８の状態のうち５ないし６が予測不整合の程度を指示する３ビット飽和カウンタを使用するものに切り替えることができる。このような不整合予測フラッグまたは命令タイプの利点は、アプリケーション動作に関する知識のおかげで不整合予測がいつプロセッサ性能及び電力管理の向上になり得るかをより良好に予測することのできるプログラマーに不整合予測の制御を与えることである。
【００５５】
本発明はその特別な特徴、観点および実施例に関してここで記載されてきたが、多くの様々な変形、改良および他の実施例が本発明の広い技術的範囲内で可能であることは明らかである。従って、全ての様々な変形、改良および実施例は、本発明の技術的範囲内であるとみなされるべきである。従って、本実施例は全ての観点において例示的なものであって限定的なものではないと解釈され、添付の請求項の意味及び同義の範囲内の全ての変更はここに含まれるものである。
【図面の簡単な説明】
【００５６】
【図１】プロセッサの機能的ブロック図。
【図２】メモリ組織の概略図。
【図３】プロセッサパイプラインの一部の機能的ブロック図。
【図１】
2008530714.tif 000007
【図２】
2008530714.tif 000008
【図３】
2008530714.tif 000009
【国際調査報告】
2008530714.tif 000010
2008530714.tif 000011
2008530714.tif 000012
2008530714.tif 000013
2008530714.tif 000014
2008530714.tif 000015
2008530714.tif 000016