JP5313279B2 - 非アラインドメモリアクセス予測 - Google Patents

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

Info

Publication number
JP5313279B2
JP5313279B2 JP2011043844A JP2011043844A JP5313279B2 JP 5313279 B2 JP5313279 B2 JP 5313279B2 JP 2011043844 A JP2011043844 A JP 2011043844A JP 2011043844 A JP2011043844 A JP 2011043844A JP 5313279 B2 JP5313279 B2 JP 5313279B2
Authority
JP
Japan
Prior art keywords
memory access
instruction
pipeline
micro
misalignment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011043844A
Other languages
English (en)
Other versions
JP2011150712A (ja
Inventor
ジェフリー・トッド・ブリッジス
ビクター・ロバーツ・オーグスバーグ
ジェームズ・ノリス・ディーフェンダーファー
トマス・アンドリュー・サートリウス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2011150712A publication Critical patent/JP2011150712A/ja
Application granted granted Critical
Publication of JP5313279B2 publication Critical patent/JP5313279B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は一般的にはプロセッサの分野に関係し、特にパイプラインされた(pipelined)プロセッサにおける非アラインドメモリアクセスを予測することに関係する。
携帯型電子機器は一般化してきている。携帯型電子機器における2つの動向は、向上した機能性と減少したサイズである。向上した機能性はより高速でより強力なプロセッサによって提供される向上した計算力によって促進される。
高度装備および高度機能性の提供に加えて、携帯型電子機器それ自体がサイズ及び重量の縮小を続けている。この縮小傾向の1つの影響は、その機器内のプロセッサおよび装置のその他の電子素子に電力を供給するために使用されるバッテリのサイズ縮小である。バッテリ技術における向上がその問題を部分的に相殺する一方で、バッテリのサイズ縮小は全ての携帯型電子機器電子装置に厳しい電力予算を課す。携帯型電子機器の電力予算のかなりの部分はプロセッサによって消費される電力である。
このように、性能を向上し、電力消費を減少させるプロセッサの改良は携帯型電子機器のような多くの用途にとって望ましい。一般に、現代のプロセッサは、夫々がマルチプルな(multiple)実行工程を有する逐次命令が実行中に重なりあう、パイプラインされたアーキテクチャを用いる。最高性能のために、それらの命令はパイプライン中を連続して流れなければならない。命令がパイプラインからフラッシュ(flush)され、その後に再始動される状況は、性能及び電力消費の双方に有害な影響を及ぼす可能性がある。
命令ステータス及びトラッキング(tracking)のキューロケーションのような、いくつかのパイプライン資源は、命令がパイプラインに入ると割り当てられる。1つの命令が元々割り当てられている資源より多くの資源を要求していることが、パイプラインにおいて後から発見されると、次の命令は、それらを必要とする命令に、これらの資源が再度割当られることを可能にするためにフラッシュされる必要がある。
メモリからあるいはメモリにミスアラインド(misaligned)データをロードあるいは保存するメモリアクセス命令は、それに元々割り当てられていたより多くのパイプライン資源を必要とする可能性のある命令の一例であり、それはパイプラインの奥深くにいたるまで分からない。ミスアラインドデータは、メモリに保存されているので、1ワードもしくは半ワード境界のような所定のメモリ境界を横切る(cross)データである。メモリが論理的に構成され、アドレスされ(addressed)、そしてメモリバスに物理的に結合される方法が原因で、メモリ境界を横切るデータは一般に、単一サイクルで読み書きされることができない。むしろ、境界の1つの側のデータを読むあるいは書くための1つと、もう一つは残りのデータを読むあるいは書くための別の一つの2つの連続するバスサイクルが必要とされる可能性がある。
非アラインドデータへのメモリアクセス命令、すなわちロードあるいは保存命令は、その非アラインドデータによって要求される追加のメモリアクセスを実行するために、パイプラインにおいて追加の命令工程、すなわちマイクロ操作を生成しなくてはならない。しかし、データのアラインメント(alignment)は、パイプラインの奥深くでしか分からない可能性のあるデータサイズ及びメモリアクセスの実効アドレスが実行段階において分かるまで決定されることができない。実効アドレスが生成されてデータのミスアラインメントが発見される時までに、第2のメモリアクセスを実行するためのマイクロ操作を生成するために利用可能なパイプライン制御資源は不充分である。このようなミスアラインメントの場合、パイプラインはそのような資源を解放するために、少なくとも全ての次の命令からフラッシュされなくてはならない。フラッシュされた命令はその後パイプラインにおいて再フェッチされて再実行されなくてはならず、プロセッサ性能を劣化させ、電力を無駄にする。
メモリアクセス命令に関するデータミスアラインメントは、命令の実効アドレス生成に先立って、パイプラインにおいて早期に予測される。第2のマイクロ操作を生成するためにパイプライン資源は割り当てられてもよく、そしてパイプラインは制御されてもよい。第2のマイクロ操作はミスアラインドデータによって要求される第2のメモリアクセスサイクルを実行するために使用される。
本発明は、1実施例において、命令実行パイプラインにおけるメモリアクセス命令を処理する方法に関するものである。メモリアクセス命令のためにミスアラインメントが予測され、メモリアクセス命令のための実効アドレス生成に先立って少なくとも1つのマイクロ操作が予測に応答してパイプラインにおいて生成され、前記マイクロ操作はミスアラインドデータに対する第2のメモリアクセスを実行する。
他の実施例において、本発明はパイプラインされたプロセッサに関する。プロセッサは、複数のパイプステージを具備する命令実行パイプラインと、メモリアクセス命令はミスアラインドデータにアクセスするであろうという予測を生成するミスアラインメントプレディクタ(predictor)とを含む。プロセッサは更に、メモリアクセス命令のための実効アドレスの生成に先立って、予測に応答してメモリアクセス命令のためにパイプラインにおいて追加のマイクロ操作を生成する制御論理を含む。
プロセッサの機能的ブロック図。 メモリ組織の概略図。 プロセッサパイプラインの一部の機能的ブロック図。
詳細な説明
パイプラインすること(pipelining)は、マルチプルな命令が実行中に同時に重なり合わされるプロセッサ実施技術である。典型的アーキテクチャにおける各命令は、フェッチ、復号、1以上の実行工程、メモリアクセスおよびライトバック(Write-Back)のような複数の実行工程において典型的に実行される。プロセッサパイプラインは複数の「パイプステージ」を具備する。一般に論理と記憶領域とを具備する各パイプステージは命令の実行工程あるいは実行工程の一部を完全に行う。パイプステージは互いに結合してパイプラインを形成する。命令はパイプラインに入って、パイプステージにおいて連続的に処理される。追加の命令は、前の命令が実行を完了する前にパイプラインに入って、このようにマルチプルな命令は任意の与えられた時間にそのパイプライン内で処理されることができる。逐次命令ストリーム中の複数の命令の内の並行性(parallelism)を活用するこの能力は改良されたプロセッサ性能に非常に貢献する。理想的条件下で、および1サイクルで各パイプステージを完了するプロセッサにおいて、パイプラインを満たすという短時間の初期プロセスに続いて、命令はサイクル毎に実行を完了することができる。
このような理想的条件は、複数の命令間のデータ依存性(データハザード)や、複数のブランチ(branches)のような制御依存性(コントロールハザード)、プロセッサ資源割当衝突(構造ハザード)、割込み、キャッシュミスなどを含む様々な要因が原因で、実際には滅多に実現されない。加えて、いくつかの命令は1以上のパイプステージを介して1以上のパス(pass)を必要とする。この場合、プロセッサはその命令のためのマルチプルなマイクロ操作を生成する。ここにおいて用いられるように、1つのマイクロ操作は一時に1つのパイプステージを占領する論理エンティティであり、パイプライン中を流れる。理想的には、大部分の命令が(1サイクルごとに1命令の目標に近づくために)パイプライン中に単一のマイクロ操作を具備する。しかし、命令は2以上のマイクロ操作を具備してもよく、あるいは2以上に分割されてもよく、その各々はパイプライン中を逐次流れる。
構造的パイプラインハザードの1形態は、ミスアラインドメモリアクセスから生じる。多くのメモリアクセス命令は実行ステージ期間中に、実効メモリアドレス、すなわちデータがロードされるか、あるいはデータが保存されるアドレス、を計算する。しかし、プロセッサ資源、特にパイプステージを命令に割り当ててパイプラインを介して命令を追跡する(track)パイプライン制御資源は、復号ステージ期間中にロード又は保存命令に割り当てられる。ワード、半ワード(half-word)、あるいは他の所定のアドレス境界でアラインされたメモリアドレスの通常の場合、ロードあるいは保存操作は、(データがメモリから検索されている(retrieved)あいだにパイプラインが一時停止される可能性があるが、)単一のパイプステージにおいて実行されてもよい。
メモリアクセス命令が所定のアドレス境界を横切るデータに関するものである場合、2つのロードあるいは保存操作が要求され、パイプライン中の2つのマイクロ操作が実行することを要求する。しかし、たいてい、一つのマイクロ操作だけが復号ステージにおいてロードあるいは保存に割り当てられた。パイプラインの実行ステージにおいて新たなマイクロ操作を生成する必要性は問題をはらむ。パイプライン資源が完全に割り当てられる場合において、新たなマイクロ操作の必要性は、必要なパイプライン制御資源を解放するためにパイプラインから全ての次の命令がフラッシュされることを要求する例外を発生させるであろう。
図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以上は、特定の実施例から除去されることができる。
下の表1は代表的パイプライン操作のダイアグラムを示している。代表的アーキテクチャの命令は6工程で実行する:
IF−命令フェッチ
ID−命令復号
EX1−実行(メモリアクセス命令のためのアドレスオペランドをフェッチする)
EX2−実行(メモリアクセス命令の実効アドレス演算)
MEM−メモリアクセス
WB−ライトバック
Figure 0005313279
各パイプステージが1サイクルで実行し、且つクロック6〜10からのパイプラインの機能停止(stall)、ハザード、あるいは割込みがない場合、1つの命令が各サイクルにおいて完了し、その結果のライトバックを実行する。クロックサイクル1〜4は、例えばリセット、コンテキスト(context)スイッチ、割込みあるいはパイプラインのその他のフラッシュに続いて実行される、パイプラインを満たす初期化工程を表す。更なる命令はi+4番目のものに続くので、1サイクルごとに1命令の性能は理想的な場合に無期限に続く。表1のパイプライン構造は見本に過ぎない。任意の与えられたプロセッサ実施において、パイプラインは任意の命令工程について任意の数のパイプステージを含むことができる。
ロード(LD)および保存(ST)命令はそれぞれデータの読取りおよび書込みを行うためにメモリにアクセスする。メモリは一時に所定量のデータに同時にアクセスするよう編成されている。図2は、プロセッサ10とバス31とメモリ32とを含む、電子機器の1つのメモリ構造のブロック図である。この例において、バス31は32ビット幅であり、(例えば、プロセッサあるいはオフチップRAMにキャッシュメモリを有することのできる)メモリ32はワード(32ビット)境界でアラインされる。当業者に容易に明らかになるように、多数の異なるバス及びメモリアーキテクチャが、対応する異なるデータアラインメント境界を用いて、実施されることができる。
非アラインドメモリアクセスの一例として、図2は、0x0Aの実効開始バイトアドレス及び3バイトのサイズフィールドを有するLD命令によって読取られるメモリを示している。ワードアラインドメモリ32に関して、このデータは1つのバスサイクルでメモリから読取られることができない。むしろ、プロセッサ10は最初に(バイト0x08及0x09をマスキング(masking out)する)0x08で始まる全ワードを読取り、その後(バイト0x0Dから0x0Fをマスキングする)0x0Cで始まる全ワードを読取らなければならない。ダブルワードメモリアラインメント及び64ビットバスを備えるシステムにおいて、このデータは1サイクル内に読取られることができる。しかし、0x07で始まる3バイトデータは不可能である。一般的に、リアルワード(real-world)バス31及びメモリ32構成は非アラインドメモリアクセスの問題を引き起こす可能性がある。
非アラインドデータは2つのバスサイクルを必要とするため、(ここにおいて「非アラインドメモリ命令」と呼ばれている)非アラインドデータへ向けられたメモリアクセス命令は、実行ステージにおいて2つのマイクロ操作を生じさせることになる。例えば、表1のi+3番目の命令が非アラインドメモリアクセス命令であったなら、パイプラインは下記表2に示されているように実行する。
Figure 0005313279
メモリアクセス命令i+3のための実効アドレスはEX2ステージ期間中にクロックサイクル7において決定される。実効メモリアクセスが非アラインドであり、すなわち所定のメモリ境界を横切るので、単一のバスサイクルでアクセスされることができないと、プロセッサ制御論理が決定できるのはこのポイントにおいてのみである。十分な資源が利用可能であるならば、プロセッサは(i+3)2と表されている、メモリアクセス命令のための追加のマイクロ操作(表2の「gen μ―op」)を生成する。最初に割り当てられたマイクロ操作および新たなマイクロ操作はその後、残りのパイプライン中を逐次進行する。
EX2で第1のメモリアクセスのアドレスを計算した元のマイクロ操作はその後、MEMにおいてアドレスされたデータの第1部分にアクセスし、WBにおいてデータを書込む。新たに生成されたマイクロ操作はクロックサイクル8のEX2において(例えば、1ワードオフセットを追加することによって)第2メモリアクセスのアドレスを計算し、その後、MEMにおいてアドレスされたデータの第2部分にアクセスしWBにおいてデータを書込む。
命令i+3に関するミスアラインドデータによって必要とされる追加のマイクロ操作により、命令i+4はクロックサイクル8において機能停止する。パイプラインにおいてこの機能停止を実施するために、EX1ラッチへのクロックはゲートされ(gated)なければならず、EX1ラッチへの出力はEX1ラッチへの入力においてマルチプレクサにリサイクルされ(recycled)、あるいは、他の何らかのメカニズム(mechanism)はクロックサイクル7及び8の両方を通じてEX1コンテンツを保持するために使用されなければならない。同様に、後に続く命令i+5はパイプライン全体においてDCDラッチなどで機能停止する。特に機能停止の必要性がパイプラインの終わりの方でしか発見されないと、この機能停止制御を実施することにより設計問題(challenge)が生じる。更に、EX2のメモリアクセス命令とその前のパイプステージの他の命令との両者の、パイプステージを「リサイクルする」必要性は、機械サイクル時間を増加することにより性能を潜在的に低下させながら、1以上のクリティカルパス(critical paths)上にマルチプレクサ選択遅延を追加する。パイプライン機能停止を引き起こすことが出来るイベントを最小化することにより、性能は改善される。
ミスアラインドメモリアクセスはまた、命令パイプライン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の部分を戻す。
(r1)と(r2)を追加することで48において実効アドレスが生成されると、制御論理14は実効アドレス及びサイズフィールドを検査し、メモリアクセスが非アラインドであることを初めて検出する。十分なプロセッサ資源が利用可能であるならば、実効アドレスは、矢印54によって示されているように、EX2ラッチ48で「リサイクル」される。そのアドレスは第2のメモリアクセスのための実効アドレスを生成するために1ワードオフセットを用いて更新される。このことは、一つのマイクロ操作をそのパイプラインに追加し、その後に続く命令はEX2パイプステージに進むことを許されない。第2のワードは50においてアクセスされ、第1のワードから抽出されたデータがパイプラインの下に進むとMEMラッチ52に保存される。データはその後GPRに連続的に書込まれ、あるいは適宜、組合せられその後書込まれる。
説明の為に、図3はそのステージにおいて関連するLD命令工程を用いてパイプライン12の各ステージを示していることを特筆する。実際には、関連するLD命令工程がパイプステージにおいて完了し、対応するマイクロ操作が次のステージに進むと、もう一つの命令のマイクロ命令が処理のためにパイプステージにロードされる。このように、LD命令のための実効アドレスが48においてラッチされるときまでに、その前の3つのパイプステージは、3つまでの異なる命令に相当する3つのマイクロ操作によりロードされる。EX2ラッチ48における実効アドレスの生成のときまでに、54で示されているようにアドレスをサイクルして(cycle)、第2のメモリアクセスを実行するための第2のマイクロ操作を生成するために利用可能なパイプライン制御資源が不充分であるならば、構造的ハザードが生じ、例外が発生するであろう。この場合、ミスアラインドLD命令の後の全ての命令は、必要な制御資源を利用可能にするためにパイプラインからフラッシュされなければならない。これらの命令はあとで再フェッチおよび再処理をされなければならず、操作を二度行うことに関連する電力の無駄使い及び性能ペナルティの両方を招く。
EX2パイプステージのマイクロ操作の生成に利用可能でなければならないパイプライン制御資源は命令トラッキングFIFO15(図1)におけるエントリを含むことができる。命令トラッキングFIFO15はプログラム順に各送出された命令ごとに1つのエントリを含む。FIFO15のエントリは、対応する命令が送出されると割り当てられ、パイプライン制御論理14が、割込みを引き起こすかもしれない例外を命令が有しているかどうかを判断すると、数サイクル後に更新される。エントリは、それが「確認」され(すなわち、パイプライン制御装置が、命令が例外なく実行を完了するであろうと判断し)、「コミット(commit)」された(すなわち、パイプライン制御装置が、それとその先行するものの全てが確認されているので、その命令がパイプラインにおいて実行を完了することが明らかであると認識した)後にそれぞれ1つをポッピング(popping)して、順番に命令トラッキングFIFO15から取り除かれる。
命令トラッキングFIFO15の各エントリが単一のマイクロ操作に相当するならば、命令トラッキングFIFO15の構成及び制御は単純化される。他方において、非アラインドメモリアクセス命令が、例えばEX2パイプステージのような、パイプラインの奥深くで追加のマイクロ操作の生成を引き起こす場合、命令トラッキングFIFO15中の各エントリはマルチプルな可能性のあるマイクロ操作を追跡できなければならず、各FIFOエントリ毎のハードウエア資源及び制御複雑性を増加させる。この増加した複雑性とサイズは各FIFOエントリごとに必要とされるが、しかし非アラインドメモリアクセス命令―遅延した(late)マルチプルなマイクロ操作トラッキングを要求するための命令だけ―、は比較的希少である。命令トラッキングFIFO15をエントリ毎のマルチプルなマイクロ操作を追跡するよう設計する代わりとして、各エントリは1つのマイクロ操作だけを追跡してもよい。この場合、遅延ミスアラインドメモリアクセス命令は、パイプライン(及び命令トラッキングFIFO15)がその後ろの全ての命令からフラッシュされ、2つのエントリが2つのマイクロ命令に相当する命令トラッキングFIFO15に割り当てられ、そして、後に続く全ての命令が再フェッチ・再送出されるようにする。このことは重大な性能的・電力的ペナルティを負わせる。
命令トラッキングFIFO15に加えて、パイプラインの終わりの方の利用不可能なミスアラインドメモリ命令に必要なもう一つの資源は、キャッシュミスキュー(cache miss queue)29のエントリである。データアクセスがデータキャッシュにおいてミスすると、そのアクセスは外部バスの主たるメモリにアクセスするためにキュー29に配置される。利用可能なキューエントリがない場合、パイプラインは機能停止しなければならない。メモリアクセス命令の場合、キャッシュミスキュー29はDCDステージ中にチェックされ、エントリが利用可能な場合、制御論理14は、キャッシュミスがパイプライン12を機能停止しないであろうことを知りながら、命令の進行を許す。しかし、非アラインドメモリアクセス命令が追加のメモリアクセスを実行するためにパイプの終りの方で追加のマイクロ操作を生成しなければならない場合、また、メモリアクセスがキャッシュにおいてミスする場合、第2のキャッシュミスキューエントリが必要とされる。DCDパイプステージには1つのみしか保存されていなかったので、利用可能なキュー資源は不充分であり、パイプライン12を機能停止させる可能性がある。
本発明の1実施例によると、メモリアクセス命令のための実効アドレス生成の前に、メモリアクセス命令のデータのミスアラインメントが予測されマイクロ操作はその予測に応答して生成される。新たなマイクロ操作はミスアラインドデータにアクセスするために必要とされる第2のメモリアクセスを実行する。このことはパイプライン制御資源が、命令を復号するとすぐのような、パイプラインの早期に割り当てられることを可能にする。
図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にロードされる。
ミスアラインメント予測が誤っていた場合、第2のメモリアクセスは実行されず、追加のマイクロ操作は放棄される。パイプライン機能停止の場合、第2のマイクロ操作に割り当てられた資源を消費し、パイプラインからそれを実効的に取り除きながら、LDに続く命令は進む。
下の表3は、命令i+3が、ミスアラインメントが正しく予測されるミスアラインドメモリアクセス命令であるときのパイプラインを記載している。
Figure 0005313279
LDとして命令を復号すること及びミスアラインメントを予測することに応答して、第2のマイクロ操作(i+3)は復号パイプステージにおいてクロックサイクル5で生成される。LD命令の実効アドレスがクロックサイクル7のEX2パイプステージにおいて計算される前の、マイクロ操作のこの早期生成は、十分なパイプライン制御資源がマイクロ操作(i+3)に利用可能であるということを保証する。命令実行のタイミングは、そうでなければ、EX2パイプステージにおける第2のマイクロ操作(i+3)の生成の十分な資源の利用可能性を仮定した表2のそれに類似する。1つの相違は、命令i+4は同一量によって機能停止されるが、マイクロ操作(i+3)はパイプラインのより早期に生成されるので、その機能停止は実行シーケンスのより早期にくるということである。
ミスアラインメント予測が正しい場合、正しいパイプライン制御資源はミスアラインドメモリアクセスを実行するために正確に割り当てられ、そして次の命令はパイプラインにロードされ、それらがミスアラインメントのためにフラッシュされる恐れなく、実行されることができる。ミスアラインメント予測が誤っている場合、プロセッサの性能および電力管理は劣化する。しかし、性能における劣化は対称的ではない。下の表4はミスアラインメント予測正確さの見込みに関する相対的性能および電力影響を記載している。
Figure 0005313279
正しく予測された場合、命令を完全に実行するために必要とされるメモリアクセス命令に必要数のマイクロ操作を正確に割り当てることにより最適な性能が得られる。アラインドと予測されたけれど実際にはミスアラインドである誤予測の場合は上述されていて、データアラインメントは上述した例のEX2パイプステージにおいて、実効アドレスがメモリアクセス命令のために生成されるまで、チェックされない。説明したように、十分なパイプライン制御資源が利用可能な場合、マイクロ操作は第2のメモリアクセス操作を実行するために生成されるので、性能劣化はメモリアクセス命令に続く命令の完了の増加した待ち時間だけである。しかし、十分なパイプライン制御資源が利用可能でない場合、例外が生じ、パイプライン12は追加のマイクロ操作を生成および管理するために必要な資源を解放するために、そのメモリアクセス命令後にロードされた全ての命令からフラッシュされる。これは、性能および電力最適化の点で最悪の可能性である。
ミスアラインドと予測されたが実際にはアラインドであったという誤予測の場合、そのメモリアクセス命令に続いてパイプライン12において余分なマイクロ操作または「バブル(bubble)」が生成される。メモリアクセス命令のための実効アドレスが生成されて、制御論理14が、それが実際にアラインドであることを検出することができると、余分なマイクロ操作は放棄される。たとえば、メモリアクセス命令がキャッシュ26においてミスし、オフチップメモリ32へのアクセスを強要する場合、パイプライン12はメモリアクセス操作の完了を未決のままにしながら機能停止されることとなる。生成されたマイクロ操作の後ろのもう一つの命令は、それがEX1あるいはEX2パイプステージにおいて何の障害にも遭遇しない場合、バブルを消滅させながらメモリアクセス命令の直後に進むことができる。この場合、マイクロ操作を生成・管理することにおいていくらかの電力が無駄遣いされるが、性能劣化は生じない。メモリアクセス命令がキャッシュ26においてヒットする(hits)(及びパイプライン12は、そうでなければ、機能停止しない)という、より可能性のあるケースにおいて、バブルはパイプライン12を通って流れ、1サイクルの性能劣化(1パイプステージにつき1サイクルと仮定)を引き起こす。しかし、誤って予測されたミスアラインメントは例外を発生させず、あるいは必要な制御資源の欠乏が原因でパイプライン12をフラッシュしない。
ミスアラインメント予測は様々な他の方法で実施されてもよく、そのなかのいくつかはここにおいて開示されている。しかし、本発明は開示されている特定のミスアラインメント予測アルゴリズムに限定されない。メモリアクセス命令のミスアラインメントをどうにかして予測すること、および、ミスアラインドデータにアクセスするために、その予測に応答して、命令の実効アドレス生成前にマイクロ操作を生成することは本発明の技術的範囲内である。
ミスアラインドデータアクセスが共通であるとき、妥当な取るに足りないミスアラインメント予測アルゴリズムは単純にミスアラインドとみなし、そしてメモリアクセス命令の実効アドレスを生成する前に追加のマイクロ操作を常に生成するためのものとなることができる。このことは、実際にアラインドなメモリアクセスにつき1サイクルの性能ヒットという犠牲を払って、ミスアラインメントによる例外なしあるいはパイプラインフラッシュなしを保証する。本発明の1実施例によると、「ミスアラインドを予測する(predict misaligned)」モードは制御レジスタのビットによって定義される。アプリケーションは、それが数多くのミスアラインドメモリアクセスを予期した場合、ビットを設定することによりそのモードを使用可能にすることができる。ビットが設定されている間、全メモリアクセスはミスアラインドと予測される。もう一つの実施例において、ミスアラインメント予測はメモリアクセス命令のページテーブルの属性によって制御されるため、単一のページからの命令による全メモリアクセスは同じように、すなわちアラインドあるいはミスアラインドと、予測される。
ほとんどのコードは、メモリのエリアまたはコードの特定のセグメント(segment)内であると非常に容易に特定されているミスアラインドメモリアクセスに遭遇しない可能性がある。したがって、より高性能なミスアラインメント予測方法が望ましい、すなわち、連続的に使用可能にされ得るが、しかし全メモリアクセス、または特定のページの全てを盲目的に予測するものではない予測は、ミスアラインドとされるであろう。例えば、1実施例において、ミスアラインメント予測はスタックポインタ(stack pointer)アラインメントに続くことができる。そのスタックポインタがミスアラインドであるならば、メモリアクセスはミスアラインドであると予測される。
条件付ブランチ命令の動作(behavior)の予測方法はよく知られており、多くのものはミスアラインメントを予測することに適用可能である。例えば、最近の過去メモリアクセスパターンは将来のメモリアクセスのアラインメントの良いインジケータとなり得る。ある実施例において、メモリアクセス命令のアドレスビットによってインデックス(index)される複数の1ビットフラッグは、例えばミスアラインドアクセスを指示する1およびアラインドアクセスを指示するゼロ(あるいは逆)のような、対応する命令で最も新しいメモリアクセスのアラインメントを指示する。ミスアラインメントフラッグは,予測の正確さを低下させる可能性のあるメモリアクセス命令間のミスアラインメントエイリアシング(aliasing)を防止するためにメモリアクセス命令アドレスの全てあるいはかなりの部分を比較するタグを含むことができる。その代わりに、資源を節約して使用する(conserve)ために、アドレスの最下位の数ビットのみがミスアラインメントフラッグをインデックスするために用いられてもよい。
メモリアクセス命令の実効アドレス生成に先立って、また、好ましくはできるだけ早く、対応するミスアラインメントフラッグがチェックされる。メモリアクセス命令の最も新しい実行がミスアラインドであった場合、パイプライン制御装置は係属中の(pending)アクセスもミスアラインドであろうと予測し、第2のメモリアクセスを実行するためにマイクロ操作を生成することができる。命令のタイプ(すなわち、メモリアクセス命令)は命令復号パイプステージにおいて最初に知られるので、マイクロ操作はそこで生成されるのが好ましい。しかし、マイクロ操作はパイプラインにおいて後から生成されてもよい。ミスアラインメント予測に応答した、メモリアクセス命令の実効アドレスの生成に先立つマイクロ操作の生成は本発明の技術的範囲内である。
1ビットミスアラインメントフラッグの結果、アラインドメモリアクセス命令のストリームにおける断片的な(odd)ミスアラインドメモリアクセス命令は、一度はミスアラインド命令が最初に遭遇されたとき、そして再び(そのミスアラインメントフラッグが設定される)命令の次のアラインド実行時の、二度、誤予測する。条件付ブランチ予測においても周知のこの問題の解決策は、メモリアクセス命令アドレスによってインデックスされた、2ビット飽和カウンタの表を具備する二重モード(bimodal)ミスアラインメントプレディクタである。各カウンタは4つの状態のうちの1つを有する:
11−強くミスアラインド(Strongly misaligned)
10−弱くミスアラインド(Weakly misaligned)
01−弱くアラインド(Weakly aligned)
00−強くアラインド(Strongly aligned)
メモリアクセス命令のために実効アドレスが生成されると、対応するカウンタが更新される。ミスアラインドメモリアクセス命令は、強くミスアラインド(strongly misaligned)に向かって状態をインクリメントし、アラインドメモリアクセス命令は、強くアラインド(strongly aligned)に向かって状態をデクリメントする。このような二重モードカウンタは、ミスアラインドアクセスのストリームの始まりにおける二度の誤予測という犠牲を払って、アラインドアクセスのストリームにおける断片的ミスアラインドアクセスに関しては一度誤予測するだけである。
条件付ブランチ予測から借用されるもう一つのミスアラインメント予測アルゴリズムは局所的ミスアラインメントプレディクタである。局所的ミスアラインメントプレディクタは2つのテーブルを維持する。第1のテーブルは局所的ミスアラインメントヒストリーテーブルである。これはメモリアクセス命令の複数のアドレスビットによってインデックスされ、各メモリアクセス命令の最も新しいn個の実行のアラインド/ミスアラインドヒストリーを記録する。他方のテーブルはパターンヒストリーテーブルである。二重モードプレディクタのように、このテーブルは二重モードカウンタを含むが、そのインデックスは第1のテーブルのミスアラインメントヒストリーから生成される。アラインメントを予測するために、ミスアラインメントヒストリーは検索され(looked up)、そのヒストリーはその後、ミスアラインメント予測を行う二重モードカウンタを検索するために用いられる。
ミスアラインメントの予測の更なる他のオプションは、多くのメモリアクセスの動作が他の最近のメモリアクセスのヒストリーと強く相関していることを利用する、グローバル(global)ミスアラインメントプレディクタである。グローバルミスアラインメントプレディクタは単一のシフトレジスタを、実行されたあらゆる全てのメモリアクセス命令の最近のミスアラインメントヒストリーを用いて更新しつづけ、二重モードカウンタのテーブルにインデックスするためにこの値を用いる。
その代わりに、二重モードカウンタのテーブルは、gselectプレディクタとして知られる、メモリアクセス命令のアドレスの数ビットと連結された最近のミスアラインメントヒストリーを用いてインデックスされてもよい。gselectは小さいテーブルサイズに関して局所的予測よりも正確な結果をもたらすことができる。もう一つの代替として、メモリアクセス命令アドレスは、連結されたものではなく、gshareプレディクタとして知られる、グローバル的ヒストリーを用いて排他的論理和演算されることができる。gshareは大きいテーブルに関してgselectよりも正確なミスアラインメント予測をもたらすことができる。gselect及びgshareが局所的予測よりも正確でないとしても、それらは実施理由のために好ましいことがある。gselect及びgshareはアラインメント予測ごとに1つのテーブル検索(lookup)を必要とし、そこにおいて局所的予測は連続して2つのテーブル検索を必要とする。
1993年、スコット・マックファーリング氏は、ここにおいてその全文が参考文献とされている、デジタルウエスタンリサーチラボラトリーテクニカルノートTN36「ブランチプレディクタの結合(Combining Branch Predicator)」において、ブランチプレディクタを結合することを提案した。マックファーリング氏が提案した技術は、ミスアラインドメモリアクセスの予測の問題に有益に適用可能であり、それによって、本発明による、メモリアクセス命令の実効アドレス生成に先立ってパイプラインマイクロ操作を生成する。
ある実施例において、結合されたミスアラインメント予測は3つのプレディクタ、すなわち、二重モード、gshare、およびメモリアクセスごとの命令(per-memory-access instruction)ベースで用いるために二重モードまたはgshareのどちらかを選ぶ二重モードのようなプレディクタを並列に用いる。選択プレディクタはさらに別の2ビットアップ/ダウン飽和カウンタであり、この場合、MSBは使用すべき予測を選択する。この場合、カウンタは、二重モード及びgshareの予測が一致しないときは常に、どちらのプレディクタでも正確であったものに有利である(favor)ように更新される。
もう一つの実施例において、ミスアラインメントプレディクタは、完全に連想型であってもよいしあるいは連想型に設定されてもよく、かつメモリアクセス命令アドレスの一部によって、あるいは上記のgselectおよびgshareパラメータについてのような、他の最近のミスアラインメントヒストリーを用いて連結あるいは排他的論理和演算されたそのアドレスの一部によって、インデックスされてもよい、ミスアラインメントキャッシュを維持することができる。命令フェッチパイプステージ期間中(例えば、命令がメモリアクセス命令であると知られる前)のような、パイプラインの早期に、キャッシュはインデックスされてもよい。ミスアラインメントキャッシュがヒットする場合、そのメモリアクセスは最近ミスアラインドだったものであり、ミスアラインドと予測される可能性がある。このキャッシュアクセスがミスする場合、メモリアクセスはアラインドと予測される。エントリは予測されないミスアラインドメモリアクセス命令に関してはキャッシュに追加され、非アラインドと予測されたアラインドメモリアクセスに関してはキャッシュから取り除かれる。
様々な他のミスアラインド予測アルゴリズムが可能である。例えば、ミスアラインメントプレディクタはメモリアクセス命令のアラインメント動作の詳細な統計を維持し、そして命令毎にもしくはグローバルに、過去のアラインメント経験の統計学的平均に基づいてミスアラインメントを予測してもよい。同様に、ミスアラインメントプレディクタは最も新しいn個のメモリアクセス命令のアラインメントのローリング(rolling)平均を維持してもよい。
いくつかの命令設定アーキテクチャは、そのアプリケーションに関するプログラマーの特有の知識に基づいて、彼または彼女によって特定されることのできるオペレーションコード(opcode)において静的予測ビットを含む。例えば、ブランチが「ブランチ・オン・エラー(branch on error)」状況において使用され、エラーが比較的まれである場合、プログラマーはそれらのブランチを「取られていない」と静的に予測するかもしれない。同様に、プログラマーは特定のアプリケーションのメモリアラインメント動作を見抜くかもしれない。例えば、多くのデータ加工アプリケーションはうまく設計され秩序立ったデータ構成を用いており、非アラインドメモリアクセスがある場合、予期されるものはほとんどない。他方において、いくつかのアプリケーションは非常に多くの非アラインドデータアクセスを予期することができる。例には、共用チャネルの連続データストリームから特定のデータを抽出する通信プログラム、あるいは非同期トリガーに応答して連続出力からデータをロギング(logging)するデータ獲得アプリケーションが含まれる。このようなアプリケーションにおいて、ミスアラインメント予測を可能にすること、あるいは、その代わりに、より精力的な(aggressive)モードにミスアラインメント予測をバイアスすることは、プロセッサ性能および電力節約を向上させることができる。本発明の1実施例によると、プログラマーは1組の非アラインドメモリアクセス命令、あるいはメモリアクセス命令のフラッグによってプログラムのミスアラインメント予測動作に影響を及ぼすことができる。
1実施例において、LDおよびST命令のようなメモリアクセス命令は、ミスアラインメント予測が実行されるべきであることを指示するパラメータリストにおいてフラッグを含む。その代わりに、命令セットは、可能性のあるミスアラインドロードおよび保存操作にそれぞれ関するLDMALおよびSTMALのような新たな命令を含んでもよい。このフラッグあるいは新たな命令は、メモリアラインメント予測を可能にするためのミスアラインメントプレディクタ56への入力を提供し、非アラインドデータへアクセスするために追加のメモリアクセスサイクルを実行するために実効アドレス生成に先立ってマイクロ操作の早期生成を行う。
もう一つの実施例において、ミスアラインメント予測フラッグまたは命令タイプは、ミスアラインメントプレディクタ56を、ミスアラインメント予測がフラッグなしよりも精力的なものになるモードにする。例えば、フラッグまたは命令タイプは、ミスアラインメントプレディクタを上記した2ビット二重モード飽和カウンタを使用するものから、8の状態のうち5ないし6が予測されたミスアラインメントの程度を指示する3ビット飽和カウンタを使用するものに切り替えることができる。このようなミスアラインメント予測フラッグまたは命令タイプの利点は、アプリケーション動作に関する知識のおかげでミスアラインメント予測がいつプロセッサ性能及び電力管理の向上になり得るかをより良好に予測することのできるプログラマーにミスアラインメント予測の制御を与えることである。
本発明はその特別な特徴、観点および実施例に関してここで記載されてきたが、多くの様々な変形、改良および他の実施例が本発明の広い技術的範囲内で可能であることは明らかである。従って、全ての様々な変形、改良および実施例は、本発明の技術的範囲内であるとみなされるべきである。従って、本実施例は全ての観点において例示的なものであって限定的なものではないと解釈され、添付の請求項の意味及び同義の範囲内の全ての変更はここに含まれるものである。
以下に、本願の出願当初請求項に記載された発明を付記する。
[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]に記載のプロセッサ。

Claims (14)

  1. 下記を具備する、プロセッサによって実行される、命令実行パイプラインにおいて第1のメモリアクセスを実行するメモリアクセス命令を処理する方法:
    前記メモリアクセス命令のための複数のアドレスオペランドをフェッチすることに先立って、前記命令実行パイプラインの復号ステージ中に前記メモリアクセス命令のためにデータミスアラインメントを予測すること
    記予測に応答して前記パイプラインの前記復号ステージにおいて少なくとも1つのマイクロ操作を生成すること、前記マイクロ操作はミスアラインドデータに対する第2のメモリアクセスを実行する。
  2. 少なくとも1つのマイクロ操作を生成することは、前記マイクロ操作にパイプライン制御資源を割り当てることを具備する、請求項1に記載の方法。
  3. 前記パイプライン制御資源は、命令トラッキングFIFOにおける少なくとも1つのエントリを含む、請求項に記載の方法。
  4. 前記パイプライン制御資源は、キャッシュミスキュー内に利用可能なスロットを含む、請求項に記載の方法。
  5. 下記を具備する、パイプラインされたプロセッサ:
    複数のパイプステージを具備する命令実行パイプライン、
    前記命令実行パイプラインの復号ステージ中に、メモリアクセス命令のための複数のアドレスオペランドをフェッチすることに先立って前記メモリアクセス命令がミスアラインドデータにアクセスするであろうという予測を生成するように構成された、ミスアラインメントプレディクタ
    記予測に応答して、前記メモリアクセス命令のために実効アドレスを生成することに先立って、追加のメモリアクセスを実行するために前記パイプラインの前記復号ステージにおいて追加のマイクロ操作を生成する制御論理。
  6. 前記マイクロ操作は少なくとも1つの前記パイプステージを占有する、請求項に記載のプロセッサ。
  7. 前記ミスアラインメントプレディクタはメモリアクセス命令アラインメントヒストリーを保存するメモリを含む、請求項に記載のプロセッサ。
  8. 命令実行FIFOを更に具備し、前記制御論理は前記マイクロ操作に対応する前記命令実行FIFOにおけるエントリを生成する、請求項に記載のプロセッサ。
  9. 下記を具備する、プロセッサによって実行される、命令実行パイプラインにおいて第1のメモリアクセスを実行するメモリアクセス命令を処理する方法:
    実効メモリアクセス命令の生成に関連した複数のアドレスオペランドを得ることに先立って、前記命令実行パイプラインの復号ステージ中に前記メモリアクセス命令のためにデータミスアラインメントを予測すること
    記予測に応答して前記パイプラインの前記復号ステージにおいて少なくとも1つのマイクロ操作を生成すること、前記少なくとも1つのマイクロ操作はミスアラインドデータに対する第2のメモリアクセスを実行する。
  10. 少なくとも1つのマイクロ操作を生成することは、前記マイクロ操作にパイプライン制御資源を割り当てることを具備する、請求項に記載の方法。
  11. 下記を具備する、パイプラインされたプロセッサ:
    複数のパイプステージを具備する命令実行パイプライン、
    前記命令実行パイプラインの復号ステージ中に、実効メモリアクセス命令の生成に関連した複数のアドレスオペランドを得ることに先立ってメモリアクセス命令がミスアラインドデータにアクセスするであろうという予測を生成するように構成された、ミスアラインメントプレディクタ
    記予測に応答して、前記メモリアクセス命令のために実効アドレスを生成することに先立って、追加のメモリアクセスを実行するために前記パイプラインの前記復号ステージにおいて追加のマイクロ操作を生成する制御論理。
  12. 前記追加のマイクロ操作は前記複数のパイプステージのうちの少なくとも1つを占有する、請求項11に記載のプロセッサ。
  13. 前記ミスアラインメントプレディクタはメモリアクセス命令アラインメントヒストリーを保存するメモリを含む、請求項11に記載のプロセッサ。
  14. 命令実行先入れ先出し(FIFO)バッファを更に具備し、前記制御論理は前記追加のマイクロ操作に対応する前記命令実行FIFOバッファにおけるエントリを生成する、請求項11に記載のプロセッサ。
JP2011043844A 2005-02-17 2011-03-01 非アラインドメモリアクセス予測 Expired - Fee Related JP5313279B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/062,221 2005-02-17
US11/062,221 US7437537B2 (en) 2005-02-17 2005-02-17 Methods and apparatus for predicting unaligned memory access

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2007556352A Division JP4856100B2 (ja) 2005-02-17 2006-02-16 非アラインドメモリアクセス予測

Publications (2)

Publication Number Publication Date
JP2011150712A JP2011150712A (ja) 2011-08-04
JP5313279B2 true JP5313279B2 (ja) 2013-10-09

Family

ID=36816969

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2007556352A Expired - Fee Related JP4856100B2 (ja) 2005-02-17 2006-02-16 非アラインドメモリアクセス予測
JP2011043844A Expired - Fee Related JP5313279B2 (ja) 2005-02-17 2011-03-01 非アラインドメモリアクセス予測

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2007556352A Expired - Fee Related JP4856100B2 (ja) 2005-02-17 2006-02-16 非アラインドメモリアクセス予測

Country Status (9)

Country Link
US (1) US7437537B2 (ja)
EP (1) EP1849061B1 (ja)
JP (2) JP4856100B2 (ja)
KR (1) KR100973951B1 (ja)
CN (2) CN101156132B (ja)
BR (1) BRPI0607888A2 (ja)
IL (1) IL185297A0 (ja)
TW (1) TWI444892B (ja)
WO (1) WO2006089194A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9717168B2 (en) 2015-01-14 2017-07-25 Fanuc Corporation Composite cable mounted in industrial robot

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7437537B2 (en) * 2005-02-17 2008-10-14 Qualcomm Incorporated Methods and apparatus for predicting unaligned memory access
US7404042B2 (en) * 2005-05-18 2008-07-22 Qualcomm Incorporated Handling cache miss in an instruction crossing a cache line boundary
US8219785B1 (en) * 2006-09-25 2012-07-10 Altera Corporation Adapter allowing unaligned access to memory
US20080320016A1 (en) * 2007-06-19 2008-12-25 Raza Microelectronics, Inc. Age matrix for queue dispatch order
US20080320274A1 (en) * 2007-06-19 2008-12-25 Raza Microelectronics, Inc. Age matrix for queue dispatch order
US8195919B1 (en) * 2007-10-29 2012-06-05 Oracle America, Inc. Handling multi-cycle integer operations for a multi-threaded processor
JP5395383B2 (ja) * 2008-08-21 2014-01-22 株式会社東芝 パイプライン演算プロセッサを備える制御システム
JP2010157130A (ja) * 2008-12-27 2010-07-15 Toshiba Corp メモリシステム
US20110314263A1 (en) * 2010-06-22 2011-12-22 International Business Machines Corporation Instructions for performing an operation on two operands and subsequently storing an original value of operand
CN102375695B (zh) * 2010-08-23 2015-09-23 联想(北京)有限公司 一种磁盘的访问方法及计算机系统
CN102707988B (zh) * 2011-04-07 2015-09-09 威盛电子股份有限公司 微处理器及其操作方法
US9898402B2 (en) * 2011-07-01 2018-02-20 Micron Technology, Inc. Unaligned data coalescing
US10360031B2 (en) * 2011-10-21 2019-07-23 Intel Corporation Fast unaligned memory access
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US20150188971A1 (en) * 2013-07-31 2015-07-02 Been, Inc. Data stream monitoring
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
GB2525314B (en) * 2014-01-17 2016-02-24 Imagination Tech Ltd Stack pointer value prediction
US9535701B2 (en) 2014-01-29 2017-01-03 Telefonaktiebolaget Lm Ericsson (Publ) Efficient use of branch delay slots and branch prediction in pipelined computer architectures
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US11093401B2 (en) 2014-03-11 2021-08-17 Ampere Computing Llc Hazard prediction for a group of memory access instructions using a buffer associated with branch prediction
US9430245B2 (en) 2014-03-28 2016-08-30 Telefonaktiebolaget Lm Ericsson (Publ) Efficient branch predictor history recovery in pipelined computer architectures employing branch prediction and branch delay slots of variable size
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US9703491B2 (en) * 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US9582413B2 (en) * 2014-12-04 2017-02-28 International Business Machines Corporation Alignment based block concurrency for accessing memory
CN105988774A (zh) * 2015-02-20 2016-10-05 上海芯豪微电子有限公司 一种多发射处理器系统和方法
WO2017019008A1 (en) * 2015-07-27 2017-02-02 Applied Micro Circuits Corporation Hazard prediction for a group of memory access instructions using a buffer associated with branch prediction
CN105446777B (zh) * 2015-11-18 2019-06-04 上海兆芯集成电路有限公司 高速缓存行的非对齐加载指令的推测并行执行方法
EP3264317B1 (en) * 2016-06-29 2019-11-20 Arm Ltd Permission control for contingent memory access program instruction
CN108062236A (zh) * 2016-11-07 2018-05-22 杭州华为数字技术有限公司 一种软硬件协同分支指令预测方法及装置
CN110347432B (zh) * 2019-06-17 2021-09-14 海光信息技术股份有限公司 处理器、分支预测器及其数据处理方法、分支预测方法
CN111258654B (zh) * 2019-12-20 2022-04-29 宁波轸谷科技有限公司 指令分支预测方法

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5148536A (en) * 1988-07-25 1992-09-15 Digital Equipment Corporation Pipeline having an integral cache which processes cache misses and loads data in parallel
US5781753A (en) * 1989-02-24 1998-07-14 Advanced Micro Devices, Inc. Semi-autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for speculative and out-of-order execution of complex instructions
US5835967A (en) * 1993-10-18 1998-11-10 Cyrix Corporation Adjusting prefetch size based on source of prefetch address
US5832297A (en) * 1995-04-12 1998-11-03 Advanced Micro Devices, Inc. Superscalar microprocessor load/store unit employing a unified buffer and separate pointers for load and store operations
JP3507193B2 (ja) * 1995-06-06 2004-03-15 株式会社東芝 ロード・ストア命令処理装置
US5875324A (en) * 1995-06-07 1999-02-23 Advanced Micro Devices, Inc. Superscalar microprocessor which delays update of branch prediction information in response to branch misprediction until a subsequent idle clock
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US5687336A (en) * 1996-01-11 1997-11-11 Exponential Technology, Inc. Stack push/pop tracking and pairing in a pipelined processor
US5761491A (en) * 1996-04-15 1998-06-02 Motorola Inc. Data processing system and method for storing and restoring a stack pointer
US5813045A (en) * 1996-07-24 1998-09-22 Advanced Micro Devices, Inc. Conditional early data address generation mechanism for a microprocessor
US6009510A (en) * 1998-02-06 1999-12-28 Ip First Llc Method and apparatus for improved aligned/misaligned data load from cache
US6112297A (en) * 1998-02-10 2000-08-29 International Business Machines Corporation Apparatus and method for processing misaligned load instructions in a processor supporting out of order execution
US6374349B2 (en) * 1998-03-19 2002-04-16 Mcfarling Scott Branch predictor with serially connected predictor stages for improving branch prediction accuracy
US6349383B1 (en) * 1998-09-10 2002-02-19 Ip-First, L.L.C. System for combining adjacent push/pop stack program instructions into single double push/pop stack microinstuction for execution
US6473832B1 (en) * 1999-05-18 2002-10-29 Advanced Micro Devices, Inc. Load/store unit having pre-cache and post-cache queues for low latency load memory operations
US6704854B1 (en) * 1999-10-25 2004-03-09 Advanced Micro Devices, Inc. Determination of execution resource allocation based on concurrently executable misaligned memory operations
US6539467B1 (en) * 1999-11-15 2003-03-25 Texas Instruments Incorporated Microprocessor with non-aligned memory access
US6581150B1 (en) * 2000-08-16 2003-06-17 Ip-First, Llc Apparatus and method for improved non-page fault loads and stores
JP2003296105A (ja) * 2002-04-01 2003-10-17 Mitsubishi Electric Corp データ処理装置
US6851033B2 (en) * 2002-10-01 2005-02-01 Arm Limited Memory access prediction in a data processing apparatus
JP3974063B2 (ja) * 2003-03-24 2007-09-12 松下電器産業株式会社 プロセッサおよびコンパイラ
CN100495323C (zh) * 2004-01-13 2009-06-03 智慧第一公司 保持分离队列功能单元之间的状态一致性的方法及装置
US20060009510A1 (en) * 2004-07-09 2006-01-12 Pharmacia & Upjohn Company Llc Method of synthesizing indolinone compounds
US7437537B2 (en) * 2005-02-17 2008-10-14 Qualcomm Incorporated Methods and apparatus for predicting unaligned memory access

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9717168B2 (en) 2015-01-14 2017-07-25 Fanuc Corporation Composite cable mounted in industrial robot

Also Published As

Publication number Publication date
CN101694613A (zh) 2010-04-14
TW200639702A (en) 2006-11-16
US7437537B2 (en) 2008-10-14
EP1849061A2 (en) 2007-10-31
WO2006089194A3 (en) 2007-03-29
CN101694613B (zh) 2013-12-18
BRPI0607888A2 (pt) 2009-10-20
US20060184738A1 (en) 2006-08-17
WO2006089194A2 (en) 2006-08-24
TWI444892B (zh) 2014-07-11
JP4856100B2 (ja) 2012-01-18
JP2008530714A (ja) 2008-08-07
CN101156132A (zh) 2008-04-02
KR100973951B1 (ko) 2010-08-05
EP1849061B1 (en) 2014-12-24
IL185297A0 (en) 2008-02-09
KR20070107772A (ko) 2007-11-07
JP2011150712A (ja) 2011-08-04
CN101156132B (zh) 2010-06-09

Similar Documents

Publication Publication Date Title
JP5313279B2 (ja) 非アラインドメモリアクセス予測
JP2008530714A5 (ja)
JP5059623B2 (ja) プロセッサ及び命令プリフェッチ方法
US7861066B2 (en) Mechanism for predicting and suppressing instruction replay in a processor
US7685410B2 (en) Redirect recovery cache that receives branch misprediction redirects and caches instructions to be dispatched in response to the redirects
JP5850532B2 (ja) アウトオブオーダー型マイクロプロセッサにおけるオペランド・ストア比較ハザードの予測及び回避
JP4763727B2 (ja) 分岐予測ミスを訂正するシステムおよび方法
US7133969B2 (en) System and method for handling exceptional instructions in a trace cache based processor
US6279105B1 (en) Pipelined two-cycle branch target address cache
EP2864868B1 (en) Methods and apparatus to extend software branch target hints
US20100205402A1 (en) Pipelined microprocessor with normal and fast conditional branch instructions
EP3171264B1 (en) System and method of speculative parallel execution of cache line unaligned load instructions
US7877586B2 (en) Branch target address cache selectively applying a delayed hit
JP5231403B2 (ja) スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ
JP2009536770A (ja) ブロックに基づく分岐先アドレスキャッシュ
US7779234B2 (en) System and method for implementing a hardware-supported thread assist under load lookahead mechanism for a microprocessor
US20040230782A1 (en) Method and system for processing loop branch instructions
EP3321810A1 (en) Processor with instruction cache that performs zero clock retires

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110330

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110330

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A132

Effective date: 20130212

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130513

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130516

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130517

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130604

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130703

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5313279

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees