説明

非アラインドメモリアクセス予測

【課題】命令実行パイプラインにおけるメモリアクセス命令のミスアライメントを早期に予測する。
【解決手段】複数のメモリアクセス命令のミスアラインメントを予測し、追加のマイクロ操作を実効アドレス生成に先立って生成する。該追加のマイクロ操作は、所定のアドレス境界を横切る範囲に入るメモリにアクセスする。追加のマイクロ操作を生成して追跡するのに十分なパイプライン制御資源が利用可能であることが保証され、実効アドレス生成時にそれら資源が利用可能でない場合のパイプラインフラッシュを回避する。ミスアラインメント予測は、フラッグ、二重モードカウンタ、局所プレディクタ、広域プレディクタおよび統合プレディクタなど、既知の条件付分岐予測技術を使用することができる。ミスアラインメントプレディクタは、メモリアクセス命令フラッグまたはミスアラインド命令タイプによって使用可能にされてもよいし、あるいはバイアスされてもよい。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は一般的にはプロセッサの分野に関係し、特にパイプラインされた(pipelined)プロセッサにおける非アラインドメモリアクセスを予測することに関係する。
【背景技術】
【0002】
携帯型電子機器は一般化してきている。携帯型電子機器における2つの動向は、向上した機能性と減少したサイズである。向上した機能性はより高速でより強力なプロセッサによって提供される向上した計算力によって促進される。
【0003】
高度装備および高度機能性の提供に加えて、携帯型電子機器それ自体がサイズ及び重量の縮小を続けている。この縮小傾向の1つの影響は、その機器内のプロセッサおよび装置のその他の電子素子に電力を供給するために使用されるバッテリのサイズ縮小である。バッテリ技術における向上がその問題を部分的に相殺する一方で、バッテリのサイズ縮小は全ての携帯型電子機器電子装置に厳しい電力予算を課す。携帯型電子機器の電力予算のかなりの部分はプロセッサによって消費される電力である。
【0004】
このように、性能を向上し、電力消費を減少させるプロセッサの改良は携帯型電子機器のような多くの用途にとって望ましい。一般に、現代のプロセッサは、夫々がマルチプルな(multiple)実行工程を有する逐次命令が実行中に重なりあう、パイプラインされたアーキテクチャを用いる。最高性能のために、それらの命令はパイプライン中を連続して流れなければならない。命令がパイプラインからフラッシュ(flush)され、その後に再始動される状況は、性能及び電力消費の双方に有害な影響を及ぼす可能性がある。
【0005】
命令ステータス及びトラッキング(tracking)のキューロケーションのような、いくつかのパイプライン資源は、命令がパイプラインに入ると割り当てられる。1つの命令が元々割り当てられている資源より多くの資源を要求していることが、パイプラインにおいて後から発見されると、次の命令は、それらを必要とする命令に、これらの資源が再度割当られることを可能にするためにフラッシュされる必要がある。
【0006】
メモリからあるいはメモリにミスアラインド(misaligned)データをロードあるいは保存するメモリアクセス命令は、それに元々割り当てられていたより多くのパイプライン資源を必要とする可能性のある命令の一例であり、それはパイプラインの奥深くにいたるまで分からない。ミスアラインドデータは、メモリに保存されているので、1ワードもしくは半ワード境界のような所定のメモリ境界を横切る(cross)データである。メモリが論理的に構成され、アドレスされ(addressed)、そしてメモリバスに物理的に結合される方法が原因で、メモリ境界を横切るデータは一般に、単一サイクルで読み書きされることができない。むしろ、境界の1つの側のデータを読むあるいは書くための1つと、もう一つは残りのデータを読むあるいは書くための別の一つの2つの連続するバスサイクルが必要とされる可能性がある。
【0007】
非アラインドデータへのメモリアクセス命令、すなわちロードあるいは保存命令は、その非アラインドデータによって要求される追加のメモリアクセスを実行するために、パイプラインにおいて追加の命令工程、すなわちマイクロ操作を生成しなくてはならない。しかし、データのアラインメント(alignment)は、パイプラインの奥深くでしか分からない可能性のあるデータサイズ及びメモリアクセスの実効アドレスが実行段階において分かるまで決定されることができない。実効アドレスが生成されてデータのミスアラインメントが発見される時までに、第2のメモリアクセスを実行するためのマイクロ操作を生成するために利用可能なパイプライン制御資源は不充分である。このようなミスアラインメントの場合、パイプラインはそのような資源を解放するために、少なくとも全ての次の命令からフラッシュされなくてはならない。フラッシュされた命令はその後パイプラインにおいて再フェッチされて再実行されなくてはならず、プロセッサ性能を劣化させ、電力を無駄にする。
【発明の概要】
【0008】
メモリアクセス命令に関するデータミスアラインメントは、命令の実効アドレス生成に先立って、パイプラインにおいて早期に予測される。第2のマイクロ操作を生成するためにパイプライン資源は割り当てられてもよく、そしてパイプラインは制御されてもよい。第2のマイクロ操作はミスアラインドデータによって要求される第2のメモリアクセスサイクルを実行するために使用される。
【0009】
本発明は、1実施例において、命令実行パイプラインにおけるメモリアクセス命令を処理する方法に関するものである。メモリアクセス命令のためにミスアラインメントが予測され、メモリアクセス命令のための実効アドレス生成に先立って少なくとも1つのマイクロ操作が予測に応答してパイプラインにおいて生成され、前記マイクロ操作はミスアラインドデータに対する第2のメモリアクセスを実行する。
【0010】
他の実施例において、本発明はパイプラインされたプロセッサに関する。プロセッサは、複数のパイプステージを具備する命令実行パイプラインと、メモリアクセス命令はミスアラインドデータにアクセスするであろうという予測を生成するミスアラインメントプレディクタ(predictor)とを含む。プロセッサは更に、メモリアクセス命令のための実効アドレスの生成に先立って、予測に応答してメモリアクセス命令のためにパイプラインにおいて追加のマイクロ操作を生成する制御論理を含む。
【図面の簡単な説明】
【0011】
【図1】プロセッサの機能的ブロック図。
【図2】メモリ組織の概略図。
【図3】プロセッサパイプラインの一部の機能的ブロック図。
【詳細な説明】
【0012】
パイプラインすること(pipelining)は、マルチプルな命令が実行中に同時に重なり合わされるプロセッサ実施技術である。典型的アーキテクチャにおける各命令は、フェッチ、復号、1以上の実行工程、メモリアクセスおよびライトバック(Write-Back)のような複数の実行工程において典型的に実行される。プロセッサパイプラインは複数の「パイプステージ」を具備する。一般に論理と記憶領域とを具備する各パイプステージは命令の実行工程あるいは実行工程の一部を完全に行う。パイプステージは互いに結合してパイプラインを形成する。命令はパイプラインに入って、パイプステージにおいて連続的に処理される。追加の命令は、前の命令が実行を完了する前にパイプラインに入って、このようにマルチプルな命令は任意の与えられた時間にそのパイプライン内で処理されることができる。逐次命令ストリーム中の複数の命令の内の並行性(parallelism)を活用するこの能力は改良されたプロセッサ性能に非常に貢献する。理想的条件下で、および1サイクルで各パイプステージを完了するプロセッサにおいて、パイプラインを満たすという短時間の初期プロセスに続いて、命令はサイクル毎に実行を完了することができる。
【0013】
このような理想的条件は、複数の命令間のデータ依存性(データハザード)や、複数のブランチ(branches)のような制御依存性(コントロールハザード)、プロセッサ資源割当衝突(構造ハザード)、割込み、キャッシュミスなどを含む様々な要因が原因で、実際には滅多に実現されない。加えて、いくつかの命令は1以上のパイプステージを介して1以上のパス(pass)を必要とする。この場合、プロセッサはその命令のためのマルチプルなマイクロ操作を生成する。ここにおいて用いられるように、1つのマイクロ操作は一時に1つのパイプステージを占領する論理エンティティであり、パイプライン中を流れる。理想的には、大部分の命令が(1サイクルごとに1命令の目標に近づくために)パイプライン中に単一のマイクロ操作を具備する。しかし、命令は2以上のマイクロ操作を具備してもよく、あるいは2以上に分割されてもよく、その各々はパイプライン中を逐次流れる。
【0014】
構造的パイプラインハザードの1形態は、ミスアラインドメモリアクセスから生じる。多くのメモリアクセス命令は実行ステージ期間中に、実効メモリアドレス、すなわちデータがロードされるか、あるいはデータが保存されるアドレス、を計算する。しかし、プロセッサ資源、特にパイプステージを命令に割り当ててパイプラインを介して命令を追跡する(track)パイプライン制御資源は、復号ステージ期間中にロード又は保存命令に割り当てられる。ワード、半ワード(half-word)、あるいは他の所定のアドレス境界でアラインされたメモリアドレスの通常の場合、ロードあるいは保存操作は、(データがメモリから検索されている(retrieved)あいだにパイプラインが一時停止される可能性があるが、)単一のパイプステージにおいて実行されてもよい。
【0015】
メモリアクセス命令が所定のアドレス境界を横切るデータに関するものである場合、2つのロードあるいは保存操作が要求され、パイプライン中の2つのマイクロ操作が実行することを要求する。しかし、たいてい、一つのマイクロ操作だけが復号ステージにおいてロードあるいは保存に割り当てられた。パイプラインの実行ステージにおいて新たなマイクロ操作を生成する必要性は問題をはらむ。パイプライン資源が完全に割り当てられる場合において、新たなマイクロ操作の必要性は、必要なパイプライン制御資源を解放するためにパイプラインから全ての次の命令がフラッシュされることを要求する例外を発生させるであろう。
【0016】
図1はプロセッサ10の機能的ブロック図を示している。プロセッサ10は、命令実行FIFO15を含むことができる制御論理14に従って、命令実行パイプライン12において命令を実行する。パイプラインはパイプステージにおいて編成された多様なレジスタまたはラッチ16と、1以上の演算論理ユニット(ALU)18とを含む。汎用レジスタ(GPR)ファイル20はメモリヒエラルキーの頂点を有するレジスタを備える。パイプラインは、命令サイド変換ルックアサイドバッファ(Instruction-side Translation Lookaside Buffer)(ITLB)24によって管理されるメモリアドレシング(addressing)と許可を用いて、命令キャッシュ22から命令を取り出す。データは、主変換ルックアサイドバッファ(TLB)28によって管理されるメモリアドレシングと許可を用いてデータキャッシュ26からアクセスされる。様々な実施例において、ITLBはTLBの一部のコピーを具備してもよい。その代わり、ITLBとTLBとは統合されていてもよい。同様に、プロセッサ10の様々な実施例において、Iキャッシュ22とDキャッシュ26は統合されてもよく、すなわち一体化されていてもよい。Iキャッシュ22および/またはDキャッシュ26におけるミスは、キャッシュミス処理キュー29を含むことができる、メモリインターフェース30の制御下で、主(オフチップ)メモリ32へのアクセスを発生させる。プロセッサ10は、様々な周辺機器36へのアクセスを制御する入出力(I/O)インターフェース34を含んでもよい。当業者は、プロセッサ10の数多くの変形が可能であることを認識するであろう。例えば、プロセッサ10はIおよびDキャッシュのいずれか一方あるいは両方のセカンド(second)レベル(L2)キャッシュを含んでもよい。加えて、プロセッサ10の中に示されている機能的ブロックのうちの1以上は、特定の実施例から除去されることができる。
【0017】
下の表1は代表的パイプライン操作のダイアグラムを示している。代表的アーキテクチャの命令は6工程で実行する:
IF−命令フェッチ
ID−命令復号
EX1−実行(メモリアクセス命令のためのアドレスオペランドをフェッチする)
EX2−実行(メモリアクセス命令の実効アドレス演算)
MEM−メモリアクセス
WB−ライトバック
【表1】

【0018】
各パイプステージが1サイクルで実行し、且つクロック6〜10からのパイプラインの機能停止(stall)、ハザード、あるいは割込みがない場合、1つの命令が各サイクルにおいて完了し、その結果のライトバックを実行する。クロックサイクル1〜4は、例えばリセット、コンテキスト(context)スイッチ、割込みあるいはパイプラインのその他のフラッシュに続いて実行される、パイプラインを満たす初期化工程を表す。更なる命令はi+4番目のものに続くので、1サイクルごとに1命令の性能は理想的な場合に無期限に続く。表1のパイプライン構造は見本に過ぎない。任意の与えられたプロセッサ実施において、パイプラインは任意の命令工程について任意の数のパイプステージを含むことができる。
【0019】
ロード(LD)および保存(ST)命令はそれぞれデータの読取りおよび書込みを行うためにメモリにアクセスする。メモリは一時に所定量のデータに同時にアクセスするよう編成されている。図2は、プロセッサ10とバス31とメモリ32とを含む、電子機器の1つのメモリ構造のブロック図である。この例において、バス31は32ビット幅であり、(例えば、プロセッサあるいはオフチップRAMにキャッシュメモリを有することのできる)メモリ32はワード(32ビット)境界でアラインされる。当業者に容易に明らかになるように、多数の異なるバス及びメモリアーキテクチャが、対応する異なるデータアラインメント境界を用いて、実施されることができる。
【0020】
非アラインドメモリアクセスの一例として、図2は、0x0Aの実効開始バイトアドレス及び3バイトのサイズフィールドを有するLD命令によって読取られるメモリを示している。ワードアラインドメモリ32に関して、このデータは1つのバスサイクルでメモリから読取られることができない。むしろ、プロセッサ10は最初に(バイト0x08及0x09をマスキング(masking out)する)0x08で始まる全ワードを読取り、その後(バイト0x0Dから0x0Fをマスキングする)0x0Cで始まる全ワードを読取らなければならない。ダブルワードメモリアラインメント及び64ビットバスを備えるシステムにおいて、このデータは1サイクル内に読取られることができる。しかし、0x07で始まる3バイトデータは不可能である。一般的に、リアルワード(real-world)バス31及びメモリ32構成は非アラインドメモリアクセスの問題を引き起こす可能性がある。
【0021】
非アラインドデータは2つのバスサイクルを必要とするため、(ここにおいて「非アラインドメモリ命令」と呼ばれている)非アラインドデータへ向けられたメモリアクセス命令は、実行ステージにおいて2つのマイクロ操作を生じさせることになる。例えば、表1のi+3番目の命令が非アラインドメモリアクセス命令であったなら、パイプラインは下記表2に示されているように実行する。
【表2】

【0022】
メモリアクセス命令i+3のための実効アドレスはEX2ステージ期間中にクロックサイクル7において決定される。実効メモリアクセスが非アラインドであり、すなわち所定のメモリ境界を横切るので、単一のバスサイクルでアクセスされることができないと、プロセッサ制御論理が決定できるのはこのポイントにおいてのみである。十分な資源が利用可能であるならば、プロセッサは(i+3)2と表されている、メモリアクセス命令のための追加のマイクロ操作(表2の「gen μ―op」)を生成する。最初に割り当てられたマイクロ操作および新たなマイクロ操作はその後、残りのパイプライン中を逐次進行する。
【0023】
EX2で第1のメモリアクセスのアドレスを計算した元のマイクロ操作はその後、MEMにおいてアドレスされたデータの第1部分にアクセスし、WBにおいてデータを書込む。新たに生成されたマイクロ操作はクロックサイクル8のEX2において(例えば、1ワードオフセットを追加することによって)第2メモリアクセスのアドレスを計算し、その後、MEMにおいてアドレスされたデータの第2部分にアクセスしWBにおいてデータを書込む。
【0024】
命令i+3に関するミスアラインドデータによって必要とされる追加のマイクロ操作により、命令i+4はクロックサイクル8において機能停止する。パイプラインにおいてこの機能停止を実施するために、EX1ラッチへのクロックはゲートされ(gated)なければならず、EX1ラッチへの出力はEX1ラッチへの入力においてマルチプレクサにリサイクルされ(recycled)、あるいは、他の何らかのメカニズム(mechanism)はクロックサイクル7及び8の両方を通じてEX1コンテンツを保持するために使用されなければならない。同様に、後に続く命令i+5はパイプライン全体においてDCDラッチなどで機能停止する。特に機能停止の必要性がパイプラインの終わりの方でしか発見されないと、この機能停止制御を実施することにより設計問題(challenge)が生じる。更に、EX2のメモリアクセス命令とその前のパイプステージの他の命令との両者の、パイプステージを「リサイクルする」必要性は、機械サイクル時間を増加することにより性能を潜在的に低下させながら、1以上のクリティカルパス(critical paths)上にマルチプレクサ選択遅延を追加する。パイプライン機能停止を引き起こすことが出来るイベントを最小化することにより、性能は改善される。
【0025】
ミスアラインドメモリアクセスはまた、命令パイプライン12の一部の機能的ブロック図である、図3を参照してより詳しく説明される。パイプラインにおいて、LD命令は命令キャッシュ22からフェッチされ、IFラッチ40にロードされる。命令は復号論理42によって復号される。1実施例において、LDは、第1のレジスタr1に位置するベースアドレスを、第2のレジスタr2に位置するオフセットに追加することによって実効アドレスを計算する。2つのレジスタr1及びr2のアドレス及びデータのサイズは命令から復号され、DCDラッチ44においてラッチされる。その後これらのレジスタアドレスは、(r1)、(r2)と表わされた、レジスタのコンテンツを戻す、GPRファイル20のようなレジスタファイルにインデックスをつけることができる。これらの値はEX1ラッチ46中に保存され、ALU18によって追加され、実効メモリアドレスはEX2ラッチ48中に保存される。メモリアクセスはその後50において進行しデータキャッシュ26にアクセスする。アクセスがデータキャッシュ26において失敗すると、メモリアクセス操作50は必要に応じてアドレス変換を行い、メモリアクセスが解決するまでパイプラインを機能停止する、オフチップメモリ32にアクセスする。とにかく、メモリアクセス操作50は、MEMラッチ52に保存される、非アラインドデータの第1の部分を戻す。
【0026】
(r1)と(r2)を追加することで48において実効アドレスが生成されると、制御論理14は実効アドレス及びサイズフィールドを検査し、メモリアクセスが非アラインドであることを初めて検出する。十分なプロセッサ資源が利用可能であるならば、実効アドレスは、矢印54によって示されているように、EX2ラッチ48で「リサイクル」される。そのアドレスは第2のメモリアクセスのための実効アドレスを生成するために1ワードオフセットを用いて更新される。このことは、一つのマイクロ操作をそのパイプラインに追加し、その後に続く命令はEX2パイプステージに進むことを許されない。第2のワードは50においてアクセスされ、第1のワードから抽出されたデータがパイプラインの下に進むとMEMラッチ52に保存される。データはその後GPRに連続的に書込まれ、あるいは適宜、組合せられその後書込まれる。
【0027】
説明の為に、図3はそのステージにおいて関連するLD命令工程を用いてパイプライン12の各ステージを示していることを特筆する。実際には、関連するLD命令工程がパイプステージにおいて完了し、対応するマイクロ操作が次のステージに進むと、もう一つの命令のマイクロ命令が処理のためにパイプステージにロードされる。このように、LD命令のための実効アドレスが48においてラッチされるときまでに、その前の3つのパイプステージは、3つまでの異なる命令に相当する3つのマイクロ操作によりロードされる。EX2ラッチ48における実効アドレスの生成のときまでに、54で示されているようにアドレスをサイクルして(cycle)、第2のメモリアクセスを実行するための第2のマイクロ操作を生成するために利用可能なパイプライン制御資源が不充分であるならば、構造的ハザードが生じ、例外が発生するであろう。この場合、ミスアラインドLD命令の後の全ての命令は、必要な制御資源を利用可能にするためにパイプラインからフラッシュされなければならない。これらの命令はあとで再フェッチおよび再処理をされなければならず、操作を二度行うことに関連する電力の無駄使い及び性能ペナルティの両方を招く。
【0028】
EX2パイプステージのマイクロ操作の生成に利用可能でなければならないパイプライン制御資源は命令トラッキングFIFO15(図1)におけるエントリを含むことができる。命令トラッキングFIFO15はプログラム順に各送出された命令ごとに1つのエントリを含む。FIFO15のエントリは、対応する命令が送出されると割り当てられ、パイプライン制御論理14が、割込みを引き起こすかもしれない例外を命令が有しているかどうかを判断すると、数サイクル後に更新される。エントリは、それが「確認」され(すなわち、パイプライン制御装置が、命令が例外なく実行を完了するであろうと判断し)、「コミット(commit)」された(すなわち、パイプライン制御装置が、それとその先行するものの全てが確認されているので、その命令がパイプラインにおいて実行を完了することが明らかであると認識した)後にそれぞれ1つをポッピング(popping)して、順番に命令トラッキングFIFO15から取り除かれる。
【0029】
命令トラッキングFIFO15の各エントリが単一のマイクロ操作に相当するならば、命令トラッキングFIFO15の構成及び制御は単純化される。他方において、非アラインドメモリアクセス命令が、例えばEX2パイプステージのような、パイプラインの奥深くで追加のマイクロ操作の生成を引き起こす場合、命令トラッキングFIFO15中の各エントリはマルチプルな可能性のあるマイクロ操作を追跡できなければならず、各FIFOエントリ毎のハードウエア資源及び制御複雑性を増加させる。この増加した複雑性とサイズは各FIFOエントリごとに必要とされるが、しかし非アラインドメモリアクセス命令―遅延した(late)マルチプルなマイクロ操作トラッキングを要求するための命令だけ―、は比較的希少である。命令トラッキングFIFO15をエントリ毎のマルチプルなマイクロ操作を追跡するよう設計する代わりとして、各エントリは1つのマイクロ操作だけを追跡してもよい。この場合、遅延ミスアラインドメモリアクセス命令は、パイプライン(及び命令トラッキングFIFO15)がその後ろの全ての命令からフラッシュされ、2つのエントリが2つのマイクロ命令に相当する命令トラッキングFIFO15に割り当てられ、そして、後に続く全ての命令が再フェッチ・再送出されるようにする。このことは重大な性能的・電力的ペナルティを負わせる。
【0030】
命令トラッキングFIFO15に加えて、パイプラインの終わりの方の利用不可能なミスアラインドメモリ命令に必要なもう一つの資源は、キャッシュミスキュー(cache miss queue)29のエントリである。データアクセスがデータキャッシュにおいてミスすると、そのアクセスは外部バスの主たるメモリにアクセスするためにキュー29に配置される。利用可能なキューエントリがない場合、パイプラインは機能停止しなければならない。メモリアクセス命令の場合、キャッシュミスキュー29はDCDステージ中にチェックされ、エントリが利用可能な場合、制御論理14は、キャッシュミスがパイプライン12を機能停止しないであろうことを知りながら、命令の進行を許す。しかし、非アラインドメモリアクセス命令が追加のメモリアクセスを実行するためにパイプの終りの方で追加のマイクロ操作を生成しなければならない場合、また、メモリアクセスがキャッシュにおいてミスする場合、第2のキャッシュミスキューエントリが必要とされる。DCDパイプステージには1つのみしか保存されていなかったので、利用可能なキュー資源は不充分であり、パイプライン12を機能停止させる可能性がある。
【0031】
本発明の1実施例によると、メモリアクセス命令のための実効アドレス生成の前に、メモリアクセス命令のデータのミスアラインメントが予測されマイクロ操作はその予測に応答して生成される。新たなマイクロ操作はミスアラインドデータにアクセスするために必要とされる第2のメモリアクセスを実行する。このことはパイプライン制御資源が、命令を復号するとすぐのような、パイプラインの早期に割り当てられることを可能にする。
【0032】
図2を再び参照すると、ミスアラインメントプレディクタ56は、命令が42において復号されるとすぐにメモリアクセス命令を検出する。IFラッチ40において「リサイクル」されるLD命令によって示されるように、ミスアラインメント予測に応答して、第2のマイクロ操作が直ちに生成される。第2のマイクロ操作はパイプラインを介して主(primary)ロード命令マイクロ操作に続き、データの予測されたミスアラインメントが正しければ第2のメモリアクセスサイクルを実行するために利用可能となる。メモリアクセスのアドレスは例えばワンワードオフセットを有するLD命令のそれと同一であることがわかっているので、追加のマイクロ操作はLD命令について上述したレジスタアクセス及びアドレス生成を実際に行う必要はない。50におけるLD命令による第1のメモリアクセスに続いて、ミスアラインメント予測が正しかったなら、第1のデータがMEMラッチ52に保存されるときに、ミスアラインドデータを読み取るために必要な第2のメモリアクセスのためのアドレスが計算され、EX2ラッチ48に保存される。第2のメモリアクセスはその後実行され、第2のデータはキャッシュ26またはメモリ32から取得されてMEMラッチ52にロードされる。
【0033】
ミスアラインメント予測が誤っていた場合、第2のメモリアクセスは実行されず、追加のマイクロ操作は放棄される。パイプライン機能停止の場合、第2のマイクロ操作に割り当てられた資源を消費し、パイプラインからそれを実効的に取り除きながら、LDに続く命令は進む。
【0034】
下の表3は、命令i+3が、ミスアラインメントが正しく予測されるミスアラインドメモリアクセス命令であるときのパイプラインを記載している。
【表3】

【0035】
LDとして命令を復号すること及びミスアラインメントを予測することに応答して、第2のマイクロ操作(i+3)は復号パイプステージにおいてクロックサイクル5で生成される。LD命令の実効アドレスがクロックサイクル7のEX2パイプステージにおいて計算される前の、マイクロ操作のこの早期生成は、十分なパイプライン制御資源がマイクロ操作(i+3)に利用可能であるということを保証する。命令実行のタイミングは、そうでなければ、EX2パイプステージにおける第2のマイクロ操作(i+3)の生成の十分な資源の利用可能性を仮定した表2のそれに類似する。1つの相違は、命令i+4は同一量によって機能停止されるが、マイクロ操作(i+3)はパイプラインのより早期に生成されるので、その機能停止は実行シーケンスのより早期にくるということである。
【0036】
ミスアラインメント予測が正しい場合、正しいパイプライン制御資源はミスアラインドメモリアクセスを実行するために正確に割り当てられ、そして次の命令はパイプラインにロードされ、それらがミスアラインメントのためにフラッシュされる恐れなく、実行されることができる。ミスアラインメント予測が誤っている場合、プロセッサの性能および電力管理は劣化する。しかし、性能における劣化は対称的ではない。下の表4はミスアラインメント予測正確さの見込みに関する相対的性能および電力影響を記載している。
【表4】

【0037】
正しく予測された場合、命令を完全に実行するために必要とされるメモリアクセス命令に必要数のマイクロ操作を正確に割り当てることにより最適な性能が得られる。アラインドと予測されたけれど実際にはミスアラインドである誤予測の場合は上述されていて、データアラインメントは上述した例のEX2パイプステージにおいて、実効アドレスがメモリアクセス命令のために生成されるまで、チェックされない。説明したように、十分なパイプライン制御資源が利用可能な場合、マイクロ操作は第2のメモリアクセス操作を実行するために生成されるので、性能劣化はメモリアクセス命令に続く命令の完了の増加した待ち時間だけである。しかし、十分なパイプライン制御資源が利用可能でない場合、例外が生じ、パイプライン12は追加のマイクロ操作を生成および管理するために必要な資源を解放するために、そのメモリアクセス命令後にロードされた全ての命令からフラッシュされる。これは、性能および電力最適化の点で最悪の可能性である。
【0038】
ミスアラインドと予測されたが実際にはアラインドであったという誤予測の場合、そのメモリアクセス命令に続いてパイプライン12において余分なマイクロ操作または「バブル(bubble)」が生成される。メモリアクセス命令のための実効アドレスが生成されて、制御論理14が、それが実際にアラインドであることを検出することができると、余分なマイクロ操作は放棄される。たとえば、メモリアクセス命令がキャッシュ26においてミスし、オフチップメモリ32へのアクセスを強要する場合、パイプライン12はメモリアクセス操作の完了を未決のままにしながら機能停止されることとなる。生成されたマイクロ操作の後ろのもう一つの命令は、それがEX1あるいはEX2パイプステージにおいて何の障害にも遭遇しない場合、バブルを消滅させながらメモリアクセス命令の直後に進むことができる。この場合、マイクロ操作を生成・管理することにおいていくらかの電力が無駄遣いされるが、性能劣化は生じない。メモリアクセス命令がキャッシュ26においてヒットする(hits)(及びパイプライン12は、そうでなければ、機能停止しない)という、より可能性のあるケースにおいて、バブルはパイプライン12を通って流れ、1サイクルの性能劣化(1パイプステージにつき1サイクルと仮定)を引き起こす。しかし、誤って予測されたミスアラインメントは例外を発生させず、あるいは必要な制御資源の欠乏が原因でパイプライン12をフラッシュしない。
【0039】
ミスアラインメント予測は様々な他の方法で実施されてもよく、そのなかのいくつかはここにおいて開示されている。しかし、本発明は開示されている特定のミスアラインメント予測アルゴリズムに限定されない。メモリアクセス命令のミスアラインメントをどうにかして予測すること、および、ミスアラインドデータにアクセスするために、その予測に応答して、命令の実効アドレス生成前にマイクロ操作を生成することは本発明の技術的範囲内である。
【0040】
ミスアラインドデータアクセスが共通であるとき、妥当な取るに足りないミスアラインメント予測アルゴリズムは単純にミスアラインドとみなし、そしてメモリアクセス命令の実効アドレスを生成する前に追加のマイクロ操作を常に生成するためのものとなることができる。このことは、実際にアラインドなメモリアクセスにつき1サイクルの性能ヒットという犠牲を払って、ミスアラインメントによる例外なしあるいはパイプラインフラッシュなしを保証する。本発明の1実施例によると、「ミスアラインドを予測する(predict misaligned)」モードは制御レジスタのビットによって定義される。アプリケーションは、それが数多くのミスアラインドメモリアクセスを予期した場合、ビットを設定することによりそのモードを使用可能にすることができる。ビットが設定されている間、全メモリアクセスはミスアラインドと予測される。もう一つの実施例において、ミスアラインメント予測はメモリアクセス命令のページテーブルの属性によって制御されるため、単一のページからの命令による全メモリアクセスは同じように、すなわちアラインドあるいはミスアラインドと、予測される。
【0041】
ほとんどのコードは、メモリのエリアまたはコードの特定のセグメント(segment)内であると非常に容易に特定されているミスアラインドメモリアクセスに遭遇しない可能性がある。したがって、より高性能なミスアラインメント予測方法が望ましい、すなわち、連続的に使用可能にされ得るが、しかし全メモリアクセス、または特定のページの全てを盲目的に予測するものではない予測は、ミスアラインドとされるであろう。例えば、1実施例において、ミスアラインメント予測はスタックポインタ(stack pointer)アラインメントに続くことができる。そのスタックポインタがミスアラインドであるならば、メモリアクセスはミスアラインドであると予測される。
【0042】
条件付ブランチ命令の動作(behavior)の予測方法はよく知られており、多くのものはミスアラインメントを予測することに適用可能である。例えば、最近の過去メモリアクセスパターンは将来のメモリアクセスのアラインメントの良いインジケータとなり得る。ある実施例において、メモリアクセス命令のアドレスビットによってインデックス(index)される複数の1ビットフラッグは、例えばミスアラインドアクセスを指示する1およびアラインドアクセスを指示するゼロ(あるいは逆)のような、対応する命令で最も新しいメモリアクセスのアラインメントを指示する。ミスアラインメントフラッグは,予測の正確さを低下させる可能性のあるメモリアクセス命令間のミスアラインメントエイリアシング(aliasing)を防止するためにメモリアクセス命令アドレスの全てあるいはかなりの部分を比較するタグを含むことができる。その代わりに、資源を節約して使用する(conserve)ために、アドレスの最下位の数ビットのみがミスアラインメントフラッグをインデックスするために用いられてもよい。
【0043】
メモリアクセス命令の実効アドレス生成に先立って、また、好ましくはできるだけ早く、対応するミスアラインメントフラッグがチェックされる。メモリアクセス命令の最も新しい実行がミスアラインドであった場合、パイプライン制御装置は係属中の(pending)アクセスもミスアラインドであろうと予測し、第2のメモリアクセスを実行するためにマイクロ操作を生成することができる。命令のタイプ(すなわち、メモリアクセス命令)は命令復号パイプステージにおいて最初に知られるので、マイクロ操作はそこで生成されるのが好ましい。しかし、マイクロ操作はパイプラインにおいて後から生成されてもよい。ミスアラインメント予測に応答した、メモリアクセス命令の実効アドレスの生成に先立つマイクロ操作の生成は本発明の技術的範囲内である。
【0044】
1ビットミスアラインメントフラッグの結果、アラインドメモリアクセス命令のストリームにおける断片的な(odd)ミスアラインドメモリアクセス命令は、一度はミスアラインド命令が最初に遭遇されたとき、そして再び(そのミスアラインメントフラッグが設定される)命令の次のアラインド実行時の、二度、誤予測する。条件付ブランチ予測においても周知のこの問題の解決策は、メモリアクセス命令アドレスによってインデックスされた、2ビット飽和カウンタの表を具備する二重モード(bimodal)ミスアラインメントプレディクタである。各カウンタは4つの状態のうちの1つを有する:
11−強くミスアラインド(Strongly misaligned)
10−弱くミスアラインド(Weakly misaligned)
01−弱くアラインド(Weakly aligned)
00−強くアラインド(Strongly aligned)
メモリアクセス命令のために実効アドレスが生成されると、対応するカウンタが更新される。ミスアラインドメモリアクセス命令は、強くミスアラインド(strongly misaligned)に向かって状態をインクリメントし、アラインドメモリアクセス命令は、強くアラインド(strongly aligned)に向かって状態をデクリメントする。このような二重モードカウンタは、ミスアラインドアクセスのストリームの始まりにおける二度の誤予測という犠牲を払って、アラインドアクセスのストリームにおける断片的ミスアラインドアクセスに関しては一度誤予測するだけである。
【0045】
条件付ブランチ予測から借用されるもう一つのミスアラインメント予測アルゴリズムは局所的ミスアラインメントプレディクタである。局所的ミスアラインメントプレディクタは2つのテーブルを維持する。第1のテーブルは局所的ミスアラインメントヒストリーテーブルである。これはメモリアクセス命令の複数のアドレスビットによってインデックスされ、各メモリアクセス命令の最も新しいn個の実行のアラインド/ミスアラインドヒストリーを記録する。他方のテーブルはパターンヒストリーテーブルである。二重モードプレディクタのように、このテーブルは二重モードカウンタを含むが、そのインデックスは第1のテーブルのミスアラインメントヒストリーから生成される。アラインメントを予測するために、ミスアラインメントヒストリーは検索され(looked up)、そのヒストリーはその後、ミスアラインメント予測を行う二重モードカウンタを検索するために用いられる。
【0046】
ミスアラインメントの予測の更なる他のオプションは、多くのメモリアクセスの動作が他の最近のメモリアクセスのヒストリーと強く相関していることを利用する、グローバル(global)ミスアラインメントプレディクタである。グローバルミスアラインメントプレディクタは単一のシフトレジスタを、実行されたあらゆる全てのメモリアクセス命令の最近のミスアラインメントヒストリーを用いて更新しつづけ、二重モードカウンタのテーブルにインデックスするためにこの値を用いる。
【0047】
その代わりに、二重モードカウンタのテーブルは、gselectプレディクタとして知られる、メモリアクセス命令のアドレスの数ビットと連結された最近のミスアラインメントヒストリーを用いてインデックスされてもよい。gselectは小さいテーブルサイズに関して局所的予測よりも正確な結果をもたらすことができる。もう一つの代替として、メモリアクセス命令アドレスは、連結されたものではなく、gshareプレディクタとして知られる、グローバル的ヒストリーを用いて排他的論理和演算されることができる。gshareは大きいテーブルに関してgselectよりも正確なミスアラインメント予測をもたらすことができる。gselect及びgshareが局所的予測よりも正確でないとしても、それらは実施理由のために好ましいことがある。gselect及びgshareはアラインメント予測ごとに1つのテーブル検索(lookup)を必要とし、そこにおいて局所的予測は連続して2つのテーブル検索を必要とする。
【0048】
1993年、スコット・マックファーリング氏は、ここにおいてその全文が参考文献とされている、デジタルウエスタンリサーチラボラトリーテクニカルノートTN36「ブランチプレディクタの結合(Combining Branch Predicator)」において、ブランチプレディクタを結合することを提案した。マックファーリング氏が提案した技術は、ミスアラインドメモリアクセスの予測の問題に有益に適用可能であり、それによって、本発明による、メモリアクセス命令の実効アドレス生成に先立ってパイプラインマイクロ操作を生成する。
【0049】
ある実施例において、結合されたミスアラインメント予測は3つのプレディクタ、すなわち、二重モード、gshare、およびメモリアクセスごとの命令(per-memory-access instruction)ベースで用いるために二重モードまたはgshareのどちらかを選ぶ二重モードのようなプレディクタを並列に用いる。選択プレディクタはさらに別の2ビットアップ/ダウン飽和カウンタであり、この場合、MSBは使用すべき予測を選択する。この場合、カウンタは、二重モード及びgshareの予測が一致しないときは常に、どちらのプレディクタでも正確であったものに有利である(favor)ように更新される。
【0050】
もう一つの実施例において、ミスアラインメントプレディクタは、完全に連想型であってもよいしあるいは連想型に設定されてもよく、かつメモリアクセス命令アドレスの一部によって、あるいは上記のgselectおよびgshareパラメータについてのような、他の最近のミスアラインメントヒストリーを用いて連結あるいは排他的論理和演算されたそのアドレスの一部によって、インデックスされてもよい、ミスアラインメントキャッシュを維持することができる。命令フェッチパイプステージ期間中(例えば、命令がメモリアクセス命令であると知られる前)のような、パイプラインの早期に、キャッシュはインデックスされてもよい。ミスアラインメントキャッシュがヒットする場合、そのメモリアクセスは最近ミスアラインドだったものであり、ミスアラインドと予測される可能性がある。このキャッシュアクセスがミスする場合、メモリアクセスはアラインドと予測される。エントリは予測されないミスアラインドメモリアクセス命令に関してはキャッシュに追加され、非アラインドと予測されたアラインドメモリアクセスに関してはキャッシュから取り除かれる。
【0051】
様々な他のミスアラインド予測アルゴリズムが可能である。例えば、ミスアラインメントプレディクタはメモリアクセス命令のアラインメント動作の詳細な統計を維持し、そして命令毎にもしくはグローバルに、過去のアラインメント経験の統計学的平均に基づいてミスアラインメントを予測してもよい。同様に、ミスアラインメントプレディクタは最も新しいn個のメモリアクセス命令のアラインメントのローリング(rolling)平均を維持してもよい。
【0052】
いくつかの命令設定アーキテクチャは、そのアプリケーションに関するプログラマーの特有の知識に基づいて、彼または彼女によって特定されることのできるオペレーションコード(opcode)において静的予測ビットを含む。例えば、ブランチが「ブランチ・オン・エラー(branch on error)」状況において使用され、エラーが比較的まれである場合、プログラマーはそれらのブランチを「取られていない」と静的に予測するかもしれない。同様に、プログラマーは特定のアプリケーションのメモリアラインメント動作を見抜くかもしれない。例えば、多くのデータ加工アプリケーションはうまく設計され秩序立ったデータ構成を用いており、非アラインドメモリアクセスがある場合、予期されるものはほとんどない。他方において、いくつかのアプリケーションは非常に多くの非アラインドデータアクセスを予期することができる。例には、共用チャネルの連続データストリームから特定のデータを抽出する通信プログラム、あるいは非同期トリガーに応答して連続出力からデータをロギング(logging)するデータ獲得アプリケーションが含まれる。このようなアプリケーションにおいて、ミスアラインメント予測を可能にすること、あるいは、その代わりに、より精力的な(aggressive)モードにミスアラインメント予測をバイアスすることは、プロセッサ性能および電力節約を向上させることができる。本発明の1実施例によると、プログラマーは1組の非アラインドメモリアクセス命令、あるいはメモリアクセス命令のフラッグによってプログラムのミスアラインメント予測動作に影響を及ぼすことができる。
【0053】
1実施例において、LDおよびST命令のようなメモリアクセス命令は、ミスアラインメント予測が実行されるべきであることを指示するパラメータリストにおいてフラッグを含む。その代わりに、命令セットは、可能性のあるミスアラインドロードおよび保存操作にそれぞれ関するLDMALおよびSTMALのような新たな命令を含んでもよい。このフラッグあるいは新たな命令は、メモリアラインメント予測を可能にするためのミスアラインメントプレディクタ56への入力を提供し、非アラインドデータへアクセスするために追加のメモリアクセスサイクルを実行するために実効アドレス生成に先立ってマイクロ操作の早期生成を行う。
【0054】
もう一つの実施例において、ミスアラインメント予測フラッグまたは命令タイプは、ミスアラインメントプレディクタ56を、ミスアラインメント予測がフラッグなしよりも精力的なものになるモードにする。例えば、フラッグまたは命令タイプは、ミスアラインメントプレディクタを上記した2ビット二重モード飽和カウンタを使用するものから、8の状態のうち5ないし6が予測されたミスアラインメントの程度を指示する3ビット飽和カウンタを使用するものに切り替えることができる。このようなミスアラインメント予測フラッグまたは命令タイプの利点は、アプリケーション動作に関する知識のおかげでミスアラインメント予測がいつプロセッサ性能及び電力管理の向上になり得るかをより良好に予測することのできるプログラマーにミスアラインメント予測の制御を与えることである。
【0055】
本発明はその特別な特徴、観点および実施例に関してここで記載されてきたが、多くの様々な変形、改良および他の実施例が本発明の広い技術的範囲内で可能であることは明らかである。従って、全ての様々な変形、改良および実施例は、本発明の技術的範囲内であるとみなされるべきである。従って、本実施例は全ての観点において例示的なものであって限定的なものではないと解釈され、添付の請求項の意味及び同義の範囲内の全ての変更はここに含まれるものである。

【特許請求の範囲】
【請求項1】
命令実行パイプラインにおいて、第1のメモリアクセスを実行するメモリアクセス命令を処理する方法であって、下記を具備する方法:
前記メモリアクセス命令のためにデータミスアラインメントを予測すること、及び、
前記メモリアクセス命令のための実効アドレス生成に先立って、前記予測に応答して前記パイプラインにおいて少なくとも1つのマイクロ操作を生成すること、前記マイクロ操作はミスアラインドデータに対する第2のメモリアクセスを実行する。
【請求項2】
前記パイプラインにおいて少なくとも1つのマイクロ操作を生成することは、命令復号パイプステージにおいて前記マイクロ操作を生成することを具備する、請求項1に記載の方法。
【請求項3】
少なくとも1つのマイクロ操作を生成することは、前記マイクロ操作にパイプライン制御資源を割り当てることを具備する、請求項1に記載の方法。
【請求項4】
前記パイプライン制御資源は、命令トラッキングFIFOにおいて少なくとも1つのエントリを含む、請求項3に記載の方法。
【請求項5】
前記パイプライン制御資源は、キャッシュミスキュー中に利用可能なスロットを含む、請求項3に記載の方法。
【請求項6】
前記メモリアクセス命令のためにデータミスアラインメントを予測することは、ミスアラインメント予測ビットが設定されている間、全メモリアクセス命令がミスアラインドとして予測されるように、制御レジスタにおいて前記ビットを設定することを具備する、請求項1に記載の方法。
【請求項7】
前記メモリアクセス命令のためにデータミスアラインメントを予測することは、1以上の属性が設定される場合に、対応するページの全メモリアクセス命令がミスアラインドとして予測されるように、前記メモリアクセス命令ページテーブルエントリに前記属性を設定することを具備する、請求項1に記載の方法。
【請求項8】
前記メモリアクセス命令のためにデータミスアラインメントを予測することは、スタックポインタがミスアラインドであるときデータミスアラインメントを予測すること、及び前記スタックポインタがアラインドであるときデータアラインメントを予測すること、を具備する、請求項1に記載の方法。
【請求項9】
前記メモリアクセス命令のためにデータミスアラインメントを予測することは、アラインメントヒストリーを保存すること、及び前記アラインメントヒストリーに応答してミスアラインメントを予測すること、を具備する、請求項1に記載の方法。
【請求項10】
アラインメントヒストリーを保存することは、前記メモリアクセス命令に関連したアラインメントヒストリーを保存することを具備する、請求項9に記載の方法。
【請求項11】
前記アラインメントヒストリーは前記メモリアクセス命令に関連した複数の命令アドレスビットによってインデックスされる、請求項10に記載の方法。
【請求項12】
前記アラインメントヒストリーは最も新しい前記メモリアクセス命令のアラインメントを指示するフラッグを具備する、請求項11に記載の方法。
【請求項13】
前記アラインメントヒストリーを保存することは、各前記メモリアクセス命令のアラインメントに応答して二重モード飽和カウンタをインクリメントもしくはデクリメントすることを具備し、
前記アラインメントヒストリーに応答してデータミスアラインメントを予測することは、前記二重モード飽和カウンタのMSBを出力することを具備する、請求項11に記載の方法。
【請求項14】
前記アラインメントヒストリーを保存することは、各前記メモリアクセス命令のアラインメントに応答して二重モード飽和カウンタをインクリメントもしくはデクリメントすることを具備し、
前記アラインメントヒストリーに応答してデータミスアラインメントを予測することは、前記カウンタの複数のビットの符号化に基づいてデータミスアラインメント予測を出力することを具備する、請求項11に記載の方法。
【請求項15】
前記アラインメントヒストリーを保存することは、所定数の最も新しい前記メモリアクセス命令に関するアラインメントの複数の指示を保存することを具備し、
前記アラインメントヒストリーに応答してデータミスアラインメントを予測することは、複数の二重モードカウンタのテーブルをインデックスするために前記複数の指示を用いること、及び前記インデックスされた二重モードカウンタのMSBを出力すること、を具備する、請求項14に記載の方法。
【請求項16】
アラインメントヒストリーを保存することは、全メモリアクセス命令と関連したアラインメントヒストリーを保存することを具備し、
前記アラインメントヒストリーに応答してミスアラインメントを予測することは、複数の二重モードカウンタのテーブルをインデックスするために前記アラインメントヒストリーを用いること、及び前記インデックスされた二重モードカウンタのMSBを出力すること、を具備する、請求項9に記載の方法。
【請求項17】
前記アラインメントヒストリーを用いて複数の二重モードカウンタの前記テーブルをインデックスすることは、前記メモリアクセス命令と関連づけられた複数のアドレスビットと連結された、請求項16に記載の方法。
【請求項18】
前記アラインメントヒストリーを用いて複数の二重モードカウンタの前記テーブルをインデックスすることは、前記メモリアクセス命令と関連づけられた複数のアドレスビットと排他的論理和演算された、請求項16に記載の方法。
【請求項19】
アラインメントヒストリーを保存することは:
各前記メモリアクセス命令の前記アラインメントに応答して独立の二重飽和カウンタをインクリメントあるいはデクリメントすること、及び、
全メモリアクセス命令と関連した包括的アラインメントヒストリーを保存すること、を具備し;
前記アラインメントヒストリーに応答してミスアラインメントを予測することは:
前記メモリアクセス命令と関連した前記二重モード飽和カウンタの前記MSBを具備する第1のプレディクタを生成すること、
前記メモリアクセス命令と関連した複数のアドレスビットと排他的論理和演算された前記包括的アラインメントヒストリーによってインデックスされたテーブルにおいて二重モードカウンタの前記MSBを具備する第2のプレディクタを生成すること、及び、
選択二重モード飽和カウンタの前記MSBを出力すること、ここにおいて前記選択二重モード飽和カウンタは、前記第1のプレディクタおよび前記第2のプレディクタが一致しないとき、前記第1及び第2のプレディクタのうち正確であったものに有利な方向に、更新される、
を具備する請求項9に記載の方法。
【請求項20】
過去のアラインメント経験を保存することは、過去の複数のメモリアクセス命令のアラインメントの統計的平均を維持することを具備する、請求項9に記載の方法。
【請求項21】
過去のアラインメント経験を保存することは、所定数の最も新しいメモリアクセス命令のアラインメントのローリング平均を維持することを具備する、請求項9に記載の方法。
【請求項22】
過去のアラインメント経験を保存することは、アラインドと予測された複数のミスアラインドメモリアクセスのミスアラインメントキャッシュを維持することを具備し、前記アラインメントヒストリーに応答してミスアラインメントを予測することは前記ミスアラインメントキャッシュにおいてヒットすることを具備する、請求項9に記載の方法。
【請求項23】
前記アラインメントヒストリーに応答してミスアラインメントを予測することは、前記メモリアクセス命令の復号に先立って前記ミスアラインメントキャッシュをインデックスすることを更に具備する、請求項22に記載の方法。
【請求項24】
ミスアラインドと予測された複数のアラインドメモリアクセスを前記キャッシュから取り除くことを更に具備する、請求項22に記載の方法。
【請求項25】
前記メモリアクセス命令のためにデータミスアラインメントを予測することは、前記メモリアクセス命令におけるフラッグに応答してデータミスアラインメントを予測することを具備する、請求項1に記載の方法。
【請求項26】
前記メモリアクセス命令のためにデータミスアラインメントを予測することは、可能性のあるミスアラインドメモリアクセス命令を具備する前記メモリアクセス命令に応答してデータミスアラインメントを予測することを具備する、請求項1に記載の方法。
【請求項27】
複数のパイプステージを具備する命令実行パイプラインと;
メモリアクセス命令がミスアラインドデータにアクセスするであろうという予測を生成するミスアラインメントプレディクタと;
前記メモリアクセス命令のために実効アドレスを生成することに先立って、追加のメモリアクセスを実行するために、前記予測に応答して、前記パイプラインにおいて追加のマイクロ操作を生成する制御論理とを具備する、パイプラインされたプロセッサ。
【請求項28】
前記追加のマイクロ操作は命令復号パイプステージにおいて生成される、請求項27に記載のプロセッサ。
【請求項29】
前記マイクロ操作は少なくとも1つの前記パイプステージを占有する、請求項27に記載のプロセッサ。
【請求項30】
前記ミスアラインメントプレディクタは前記メモリアクセス命令アラインメントヒストリーを保存するメモリを含む、請求項27に記載のプロセッサ。
【請求項31】
命令実行FIFOを更に具備し、前記制御論理は前記マイクロ操作に対応する前記命令実行FIFOにおいてエントリを生成する、請求項27に記載のプロセッサ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate


【公開番号】特開2011−150712(P2011−150712A)
【公開日】平成23年8月4日(2011.8.4)
【国際特許分類】
【外国語出願】
【出願番号】特願2011−43844(P2011−43844)
【出願日】平成23年3月1日(2011.3.1)
【分割の表示】特願2007−556352(P2007−556352)の分割
【原出願日】平成18年2月16日(2006.2.16)
【出願人】(595020643)クゥアルコム・インコーポレイテッド (7,166)
【氏名又は名称原語表記】QUALCOMM INCORPORATED
【Fターム(参考)】