JP2008530714A - 非整列メモリアクセス予測 - Google Patents

非整列メモリアクセス予測 Download PDF

Info

Publication number
JP2008530714A
JP2008530714A JP2007556352A JP2007556352A JP2008530714A JP 2008530714 A JP2008530714 A JP 2008530714A JP 2007556352 A JP2007556352 A JP 2007556352A JP 2007556352 A JP2007556352 A JP 2007556352A JP 2008530714 A JP2008530714 A JP 2008530714A
Authority
JP
Japan
Prior art keywords
memory access
instruction
pipeline
inconsistent
history
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.)
Granted
Application number
JP2007556352A
Other languages
English (en)
Other versions
JP4856100B2 (ja
JP2008530714A5 (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 JP2008530714A publication Critical patent/JP2008530714A/ja
Publication of JP2008530714A5 publication Critical patent/JP2008530714A5/ja
Application granted granted Critical
Publication of JP4856100B2 publication Critical patent/JP4856100B2/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)

Abstract

命令実行パイプラインにおいて、メモリアクセスの不整合が予測される。該予測に基づいて、追加のマイクロ操作は該メモリアクセス命令の実効アドレス生成に先立って該パイプラインにおいて生成される。該追加のマイクロ操作は、所定のアドレス境界を横切る範囲に入る該メモリにアクセスする。該パイプラインにおける該不整合の予測および該マイクロ操作の早期生成により、追加のマイクロ操作を生成して追跡するために十分な数のパイプライン制御資源が利用可能であることが保証され、実効アドレス生成時にそれら資源が利用できない場合にパイプラインフラッシュが回避される。不整合予測は、フラッグ、二重モードカウンタ、局所的プレディクタ、大域的プレディクタおよび組合せられたプレディクタのような既知の条件付ブランチ予測技術を使用することができる。不整合プレディクタは、メモリアクセス命令フラッグまたは不整合命令タイプによって使用可能にされてもよいし、あるいはバイアスされてもよい。
【選択図】図3

Description

本発明は一般的にはプロセッサの分野に関係し、特にパイプラインされた(pipelined)プロセッサにおける非整列メモリアクセスを予測することに関係する。
携帯型電子機器は一般化してきている。携帯型電子機器における2つの動向は、向上した機能性と減少したサイズである。向上した機能性はより高速でより強力なプロセッサによって提供される向上した計算力によって促進される。
高度装備および高度機能性の提供に加えて、携帯型電子機器それ自体がサイズ及び重量の縮小を続けている。この縮小傾向の1つの影響は、その機器内のプロセッサおよび装置のその他の電子素子に電力を供給するために使用されるバッテリのサイズ縮小である。バッテリ技術における向上がその問題を部分的に相殺する一方で、バッテリのサイズ縮小は全ての携帯型電子機器電子装置に厳しい電力予算を課す。携帯型電子機器の電力予算のかなりの部分はプロセッサによって消費される電力である。
このように、性能を向上し、電力消費を減少させるプロセッサの改良は携帯型電子機器のような多くの用途にとって望ましい。一般に、現代のプロセッサは、夫々がマルチプルな(multiple)実行工程を有する逐次命令が実行中に重なりあう、パイプラインされたアーキテクチャを用いる。最高性能のために、それらの命令はパイプライン中を連続して流れなければならない。命令がパイプラインからフラッシュ(flush)されその後に再始動される状況は、性能及び電力消費の双方に有害な影響を及ぼす可能性がある。
命令ステータス及びトラッキング(tracking)のキューロケーションのような、いくつかのパイプライン資源は、命令がパイプラインに入ると割り当てられる。1つの命令が元々割り当てられている資源より多くの資源を要求していることが、パイプラインにおいて後から発見されると、次の命令は、それらを必要とする命令に、これらの資源が再度割当られることを可能にするためにフラッシュされる必要がある。
メモリからあるいはメモリに不整合データをロードあるいは保存するメモリアクセス命令は、それに元々割り当てられていたより多くのパイプライン資源を必要とする可能性のある命令の一例であり、それはパイプラインの奥深くにいたるまで分からない。不整合データは、メモリに保存されているので、1ワードもしくは半ワード境界のような所定のメモリ境界を横切る(cross)データである。メモリが論理的に構成され、アドレスされ(addressed)、そしてメモリバスに物理的に結合される方法が原因で、メモリ境界を横切るデータは一般に、単一サイクルで読み書きされることができない。むしろ、境界の1つの側のデータを読むあるいは書くための1つと、もう一つは残りのデータを読むあるいは書くための別の一つの2つの連続するバスサイクルが必要とされる可能性がある。
非整列データへのメモリアクセス命令、すなわちロードあるいは保存命令は、その非整列データによって要求される追加のメモリアクセスを実行するために、パイプラインにおいて追加の命令工程、すなわちマイクロ操作を生成しなくてはならない。しかし、データの整合は、パイプラインの奥深くでしか分からない可能性のあるデータサイズ及びメモリアクセスの実効アドレスが実行段階において分かるまで決定されることができない。実効アドレスが生成されてデータの不整合が発見される時までに、第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)(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 2008530714
各パイプステージが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 2008530714
メモリアクセス命令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 2008530714
LDとして命令を復号すること及び不整合を予測することに応答して、第2のマイクロ操作(i+3)は復号パイプステージにおいてクロックサイクル5で生成される。LD命令の実効アドレスがクロックサイクル7のEX2パイプステージにおいて計算される前の、マイクロ操作のこの早期生成は、十分なパイプライン制御資源がマイクロ操作(i+3)に利用可能であるということを保証する。命令実行のタイミングは、そうでなければ、EX2パイプステージにおける第2のマイクロ操作(i+3)の生成の十分な資源の利用可能性を仮定した表2のそれに類似する。1つの相違は、命令i+4は同一量によって機能停止されるが、マイクロ操作(i+3)はパイプラインのより早期に生成されるので、その機能停止は実行シーケンスのより早期にくるということである。
不整合予測が正しい場合、正しいパイプライン制御資源は不整合メモリアクセスを実行するために正確に割り当てられ、そして次の命令はパイプラインにロードされ、それらが不整合のためにフラッシュされる恐れなく、実行されることができる。不整合予測が誤っている場合、プロセッサの性能および電力管理は劣化する。しかし、性能における劣化は対称的ではない。下の表4は不整合予測正確さの見込みに関する相対的性能および電力影響を記載している。
Figure 2008530714
正しく予測された場合、命令を完全に実行するために必要とされるメモリアクセス命令に必要数のマイクロ操作を正確に割り当てることにより最適な性能が得られる。整合と予測されたけれど実際には不整合である誤予測の場合は上述されていて、データ整列は上述した例のEX2パイプステージにおいて、実効アドレスがメモリアクセス命令に生成されるまで、チェックされない。説明したように、十分なパイプライン制御資源が利用可能な場合、マイクロ操作は第2のメモリアクセス操作を実行するために生成されるので、性能劣化はメモリアクセス命令に続く命令の完了の増加した待ち時間だけである。しかし、十分なパイプライン制御資源が利用可能でない場合、例外が生じ、パイプライン12は追加のマイクロ操作を生成および管理するために必要な資源を解放するために、そのメモリアクセス命令後にロードされた全ての命令からフラッシュされる。これは、性能および電力最適化の点で最悪の可能性である。
不整合と予測されたが実際には整合されたという誤予測の場合、そのメモリアクセス命令に続いてパイプライン12において余分なマイクロ操作または「バブル(bubble)」が生成される。メモリアクセス命令の実効アドレスが生成されて、制御論理14が、それが実際に整合されていることを検出することができると、余分なマイクロ操作は放棄される。たとえば、メモリアクセス命令がキャッシュ26においてミスし、オフチップメモリ32へのアクセスを強要する場合、パイプライン12はメモリアクセス操作の完了を未決のままにしながら機能停止されることとなる。生成されたマイクロ操作の後ろのもう一つの命令は、それがEX1あるいはEX2パイプステージにおいて何の障害にも遭遇しない場合、バブルを消滅させながらメモリアクセス命令の直後に進むことができる。この場合、マイクロ操作を生成・管理することにおいていくらかの電力が無駄遣いされるが、性能劣化は生じない。メモリアクセス命令がキャッシュ26においてヒットする(hits)(及びパイプライン12は、そうでなければ、機能停止しない)という、より可能性のあるケースにおいて、バブルはパイプライン12を通って流れ、1サイクルの性能劣化(1パイプステージにつき1サイクルと仮定)を引き起こす。しかし、誤って予測された不整合は例外を発生させず、あるいは必要な制御資源の欠乏が原因でパイプライン12をフラッシュしない。
不整合予測は様々な他の方法で実施されてもよく、そのなかのいくつかはここにおいて開示されている。しかし、本発明は開示されている特定の不整合予測アルゴリズムに限定されない。メモリアクセス命令の不整合をどうにかして予測すること、および、不整合データにアクセスするために、その予測に応答して、命令の実効アドレス生成前にマイクロ操作を生成することは本発明の技術的範囲内である。
不整合データアクセスが共通であるとき、妥当な取るに足りない不整合予測アルゴリズムは単純に不整合を予測し、そしてメモリアクセス命令の実効アドレスを生成する前に追加のマイクロ操作を常に生成する可能性がある。このことは、実際に整合されたメモリアクセスにつき1サイクルの性能ヒットという犠牲を払って、不整合による例外なしあるいはパイプラインフラッシュなしを保証する。本発明の実施例によると、「予測不整合」モードは制御レジスタのビットによって定義される。アプリケーションは、それが数多くの不整合メモリアクセスを予期した場合、ビットを設定することによりそのモードを使用可能にすることができる。ビットが設定される間、全メモリアクセスは不整合と予測される。もう一つの実施例において、不整合予測はメモリアクセス命令のページテーブルの属性によって制御されるため、単一のページからの命令による全メモリアクセスは同様に、整合あるいは不整合と、予測される。
ほとんどのコードは、メモリのエリアまたはコードの特定のセグメント(segment)内であると非常に容易に特定されている不整合メモリアクセスに遭遇しない可能性がある。したがって、より高性能な不整合予測方法が望ましく、連続的に使用可能にされ得るが、しかし全メモリアクセス、または特定のページの全てを盲目的に予測するものではない予測は、不整合とされるであろう。例えば、1実施例において、不整合予測はスタックポインタ(stack pointer)整合に続くことができる。そのスタックポインタが不整合であるならば、メモリアクセスは不整合であると予測される。
条件付ブランチ命令の動作(behavior)の予測方法はよく知られており、多くのものは不整合を予測することに適用可能である。例えば、最近の過去メモリアクセスパターンは将来のメモリアクセスの整合の良いインジケータとなり得る。ある実施例において、メモリアクセス命令のアドレスビットによってインデックス(index)される複数の1ビットフラッグは、例えば不整合アクセスを指示する1および整合アクセスを指示するゼロ(あるいは逆)のような、対応する命令で最も新しいメモリアクセスの整合を指示する。不整合フラッグは,予測の正確さを低下させる可能性のあるメモリアクセス命令間の不整合エイリアシング(aliasing)を防止するためにメモリアクセス命令アドレスの全てあるいはかなりの部分を比較するタグを含むことができる。その代わりに、資源を節約して使用する(conserve)ために、アドレスの最下位の数ビットのみが不整合フラッグをインデックスするために用いられてもよい。
メモリアクセス命令の実効アドレス生成に先立って、また、好ましくはできるだけ早く、対応する不整合フラッグがチェックされる。メモリアクセス命令の最も新しい実行が不整合であった場合、パイプライン制御装置は係属中の(pending)アクセスも不整合であろうと予測し、第2のメモリアクセスを実行するためにマイクロ操作を生成する可能性がある。命令のタイプ(すなわち、メモリアクセス命令)は命令復号パイプステージにおいて最初に知られるので、マイクロ操作はそこで生成されるのが好ましい。しかし、マイクロ操作はパイプラインにおいて後から生成されてもよい。不整合予測に応答した、メモリアクセス命令の実効アドレスの生成に先立つマイクロ操作の生成は本発明の技術的範囲内である。
1ビット不整合フラッグの結果、整合メモリアクセス命令のストリームにおける断片的な(odd)不整合メモリアクセス命令は、一度は不整合命令が最初に遭遇されたとき、そして再び(その不整合フラッグが設定される)命令の次の整合された実行時の、二度、誤予測する。条件付ブランチ予測においても周知のこの問題の解決策は、メモリアクセス命令アドレスによってインデックスされた、2ビット飽和カウンタの表を具備する二重モード(bimodal)不整合プレディクタである。各カウンタは4つの状態のうちの1つを有する:
11−強く不整合
10−弱く不整合
01−弱く整合
00−強く整合
メモリアクセス命令の実効アドレスが生成されると、対応するカウンタが更新される。不整合メモリアクセス命令は状態を強く不整合にインクリメントし、整合メモリアクセス命令は状態を強く整合にデクリメントする。このような二重モードカウンタは、不整合アクセスのストリームの始まりにおける二度の誤予測という犠牲を払って、整合アクセスのストリームにおける断片的不整合アクセスに関しては一度誤予測するだけである。
条件付ブランチ予測から借用されるもう一つの不整合予測アルゴリズムは局所的不整合プレディクタである。局所的不整合プレディクタは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組の非整列(unaligned)メモリアクセス命令、あるいはメモリアクセス命令のフラッグを経由してプログラムの不整合予測動作に影響を及ぼすことができる。
1実施例において、LDおよびST命令のようなメモリアクセス命令は、不整合予測が実行されるべきであることを指示するパラメータリストにおいてフラッグを含む。その代わりに、命令セットは、可能性のある不整合ロードおよび保存操作にそれぞれ関するLDMALおよびSTMALのような新たな命令を含んでもよい。このフラッグあるいは新たな命令は、メモリ整合予測を可能にするための不整合プレディクタ56への入力を提供し、非整列データへアクセスするために追加のメモリアクセスサイクルを実行するために実効アドレス生成に先立ってマイクロ操作の早期生成を行う。
もう一つの実施例において、不整合予測フラッグすなわち命令タイプは、不整合プレディクタ56を、不整合予測がフラッグなしよりも精力的なものになるモードにする。例えば、フラッグすなわち命令タイプは、不整合プレディクタを上記した2ビット二重モード飽和カウンタを使用するものから、8の状態のうち5ないし6が予測不整合の程度を指示する3ビット飽和カウンタを使用するものに切り替えることができる。このような不整合予測フラッグまたは命令タイプの利点は、アプリケーション動作に関する知識のおかげで不整合予測がいつプロセッサ性能及び電力管理の向上になり得るかをより良好に予測することのできるプログラマーに不整合予測の制御を与えることである。
本発明はその特別な特徴、観点および実施例に関してここで記載されてきたが、多くの様々な変形、改良および他の実施例が本発明の広い技術的範囲内で可能であることは明らかである。従って、全ての様々な変形、改良および実施例は、本発明の技術的範囲内であるとみなされるべきである。従って、本実施例は全ての観点において例示的なものであって限定的なものではないと解釈され、添付の請求項の意味及び同義の範囲内の全ての変更はここに含まれるものである。
プロセッサの機能的ブロック図。 メモリ組織の概略図。 プロセッサパイプラインの一部の機能的ブロック図。

Claims (31)

  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に記載のプロセッサ。
JP2007556352A 2005-02-17 2006-02-16 非アラインドメモリアクセス予測 Expired - Fee Related JP4856100B2 (ja)

Applications Claiming Priority (3)

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
PCT/US2006/005782 WO2006089194A2 (en) 2005-02-17 2006-02-16 Unaligned memory access prediction

Related Child Applications (1)

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

Publications (3)

Publication Number Publication Date
JP2008530714A true JP2008530714A (ja) 2008-08-07
JP2008530714A5 JP2008530714A5 (ja) 2011-04-14
JP4856100B2 JP4856100B2 (ja) 2012-01-18

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 After (1)

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

Country Status (9)

Country Link
US (1) US7437537B2 (ja)
EP (1) EP1849061B1 (ja)
JP (2) JP4856100B2 (ja)
KR (1) KR100973951B1 (ja)
CN (2) CN101694613B (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
JP2010049500A (ja) * 2008-08-21 2010-03-04 Toshiba Corp パイプライン演算プロセッサ、及びパイプライン演算プロセッサを備える制御システム

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
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 联想(北京)有限公司 一种磁盘的访问方法及计算机系统
CN107832083B (zh) * 2011-04-07 2020-06-12 威盛电子股份有限公司 具有条件指令的微处理器及其处理方法
US9898402B2 (en) 2011-07-01 2018-02-20 Micron Technology, Inc. Unaligned data coalescing
WO2013058775A1 (en) 2011-10-21 2013-04-25 Soft Machines, Inc. 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
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
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
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
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
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
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
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
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
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
JP6407736B2 (ja) 2015-01-14 2018-10-17 ファナック株式会社 産業用ロボットに実装される複合ケーブル
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
CN105446773B (zh) * 2015-11-18 2019-02-12 上海兆芯集成电路有限公司 高速缓存行的非对齐加载指令的推测并行执行系统和方法
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 宁波轸谷科技有限公司 指令分支预测方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08328851A (ja) * 1995-06-06 1996-12-13 Toshiba Corp ロード・ストア命令処理装置及び方法
US6009510A (en) * 1998-02-06 1999-12-28 Ip First Llc Method and apparatus for improved aligned/misaligned data load from cache
JP2001256105A (ja) * 2000-02-18 2001-09-21 Texas Instr Inc <Ti> 非整列循環アドレス指定を用いるマイクロプロセッサ
JP2003296105A (ja) * 2002-04-01 2003-10-17 Mitsubishi Electric Corp データ処理装置

Family Cites Families (20)

* 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
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
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
US6581150B1 (en) * 2000-08-16 2003-06-17 Ip-First, Llc Apparatus and method for improved non-page fault loads and stores
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08328851A (ja) * 1995-06-06 1996-12-13 Toshiba Corp ロード・ストア命令処理装置及び方法
US6009510A (en) * 1998-02-06 1999-12-28 Ip First Llc Method and apparatus for improved aligned/misaligned data load from cache
JP2001256105A (ja) * 2000-02-18 2001-09-21 Texas Instr Inc <Ti> 非整列循環アドレス指定を用いるマイクロプロセッサ
JP2003296105A (ja) * 2002-04-01 2003-10-17 Mitsubishi Electric Corp データ処理装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010049500A (ja) * 2008-08-21 2010-03-04 Toshiba Corp パイプライン演算プロセッサ、及びパイプライン演算プロセッサを備える制御システム

Also Published As

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

Similar Documents

Publication Publication Date Title
JP5313279B2 (ja) 非アラインドメモリアクセス予測
JP2008530714A5 (ja)
JP5059623B2 (ja) プロセッサ及び命令プリフェッチ方法
JP4763727B2 (ja) 分岐予測ミスを訂正するシステムおよび方法
US7861066B2 (en) Mechanism for predicting and suppressing instruction replay in a processor
US6279105B1 (en) Pipelined two-cycle branch target address cache
US7783870B2 (en) Branch target address cache
US7877586B2 (en) Branch target address cache selectively applying a delayed hit
US10310859B2 (en) System and method of speculative parallel execution of cache line unaligned load instructions
JP5231403B2 (ja) スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ
JP2008530713A5 (ja)
JP2009536770A (ja) ブロックに基づく分岐先アドレスキャッシュ
US7844807B2 (en) Branch target address cache storing direct predictions
KR20090042303A (ko) 가변 길이 명령 세트의 브랜치 명령의 최종 입도와 캐싱된 브랜치 정보의 관련
US7779234B2 (en) System and method for implementing a hardware-supported thread assist under load lookahead mechanism for a microprocessor
US7962722B2 (en) Branch target address cache with hashed indices
US7865705B2 (en) Branch target address cache including address type tag bit
EP3321810A1 (en) Processor with instruction cache that performs zero clock retires

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101005

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110105

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110113

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110207

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110215

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20110221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110301

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110510

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110809

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110816

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110905

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: 20110927

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111027

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141104

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4856100

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

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