JPH08305565A - 命令及びデータのフェッチ制御方法及びシステム - Google Patents

命令及びデータのフェッチ制御方法及びシステム

Info

Publication number
JPH08305565A
JPH08305565A JP8081784A JP8178496A JPH08305565A JP H08305565 A JPH08305565 A JP H08305565A JP 8081784 A JP8081784 A JP 8081784A JP 8178496 A JP8178496 A JP 8178496A JP H08305565 A JPH08305565 A JP H08305565A
Authority
JP
Japan
Prior art keywords
instruction
stouch
line
field
speculation
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.)
Pending
Application number
JP8081784A
Other languages
English (en)
Inventor
Pradeep Dubey
プラディープ・ダビー
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH08305565A publication Critical patent/JPH08305565A/ja
Pending legal-status Critical Current

Links

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/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
    • 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/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms

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)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】 命令及びデータの改善されたフェッチ方法及
びシステムを提供する。 【解決手段】 コンピュータ処理ユニットがSTOUCH命令
と称する新規のプリフェッチ命令を含み、プリフェッチ
要求が開始された時点とプリフェッチされたデータが実
際に必要とされる時点との間にある条件分岐に関するコ
ンパイル時投機をエンコードすることができる。この投
機を実行時ハードウェアへ明示することにより、無効な
投機に基づくプリフェッチ・ラインを早期に破棄すると
共に、有効な投機に基づくプリフェッチ・ラインをキャ
ッシュに長く保持することが可能となり、キャッシュ性
能を向上させる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータ処理
ユニットに関し、特に、コンピュータ処理ユニットのキ
ャッシュ・メモリへ命令及びデータをプリフェッチ(pre
fetch:先取り)することに関する。
【0002】
【従来の技術】コンピュータ処理ユニットの命令サイク
ル時間は、年毎に約50%の割合で短縮されている。そ
の一方、メモリ・アクセス時間は、年毎に約5〜10%
で短縮されている。この結果、コンピュータ処理ユニッ
トにおいて、積極的プリフェッチ技術が利用されるよう
になった。積極的プリフェッチによれば、命令及び/又
はデータのブロックが必要なときにこれらがキャッシュ
に記憶されていることが確保される。これにより、メモ
リ・アクセスの潜在的に大きな遅延が顕在化しないこと
となる。
【0003】コンピュータ処理ユニットは、有効なプリ
フェッチに用いられたアクセス・パターンを動的に学習
しようとする。このような動的(すなわち実行時)プリフ
ェッチ技術は、重装備のハードウェアを必要とする上、
命令やデータの複雑なアクセス・パターンを学習する際
にはあまり有効でないこともある。別の方法として、プ
リフェッチによるサポートが、キャッシュ・ラインのコ
ンパイラ指向実行時プリフェッチの形態をとる場合があ
る。さらに、コンピュータ処理ユニットが、キャッシュ
・ブロックのプリフェッチのサポートを行う場合もあ
る。PowerPC 601等の現在のマイクロプロセッサは、通
常「タッチ命令」(例えば、PowerPC 601におけるdcbt
命令及びdcbst命令)として知られる新しい命令を含
み、特定のブロックをキャッシュへフェッチすれば性能
が上がるだろうという示唆を実行時のマシンに対して与
える。このようなプリフェッチは、データの場合で云え
ば、変換違反又は保護違反に対してシステム・エラー・
ハンドラが呼出されないことを除いて、ロード・オペレ
ーションとして一般的に単純に扱われる。
【0004】現在の積極的プリフェッチ技術の有効性は
限られている。第1に、プリフェッチの発生が早すぎる
ことがある。この場合、命令及び/又はデータの指定さ
れたブロックは、それが実際に必要とされる前にキャッ
シュから削除されてしまう。さらに重要なことに、積極
的プリフェッチは、プログラム制御フローの不確定部分
へ入り込みがちである。言い替えるならば、コンピュー
タ処理ユニットが未導出の条件分岐命令に遭遇したと
き、次の2つの選択肢が存在する。 (1)両方のブロック(すなわち、選択される枝に対応
するブロックと選択されない枝に対応するブロック)を
プリフェッチする。又は、 (2)これらのブロックのいずれか1つをプリフェッチ
する。 上記2つの選択肢とも、誤った分岐投機(branch specul
ation)があった場合にはキャッシュ汚染という障害の可
能性がある。キャッシュ汚染とは、キャッシュが役に立
たないブロックを含ませられることを意味する。そして
ますます、命令やデータが実際に必要とされる前にキャ
ッシュから削除される可能性が高くなり、従ってプリフ
ェッチによる性能利得とはかけ離れてくる。これらの条
件下で更なる積極的プリフェッチを行うことは更なるキ
ャッシュ汚染を意味するので、プリフェッチの潜在的性
能が限定されてしまうことが深刻な問題である。
【0005】
【発明が解決しようとする課題】以上により、本発明の
目的は、多数の未導出の分岐を越えて命令及びデータを
フェッチする改善された方法を提供することである。本
発明の更なる目的は、多数の未導出の分岐を越え、コン
パイル時投機を用いて命令及びデータをフェッチする改
善された方法を提供することである。本発明の更なる目
的及び利点は、添付の図面と共に以下の説明により明ら
かとされるであろう。
【0006】
【課題を解決するための手段】上記の目的の達成するた
めに、ここに具体的に説明される本発明によるコンピュ
ータ処理ユニットは、命令キャッシュのライン内へロー
ドされそして実行のために命令キャッシュから処理ユニ
ットへ転送される命令のシーケンスを記憶する主メモリ
を有する。ライン置換アルゴリズムは、命令キャッシュ
のラインを上書きするために用いられる。STOUCH命令
が、例えばコンパイル時に命令のシーケンスへ挿入され
る。STOUCH命令は、このSTOUCH命令により識別される1
又は複数の命令が命令キャッシュへフェッチされ、かつ
このSTOUCH命令により特定される投機(speculation)が
真(true)であるならば性能が上がるであろうという示唆
を与えるものである。
【0007】命令のシーケンスの実行中に、上記命令キ
ャッシュから上記処理ユニットへ転送された命令の1つ
がSTOUCH命令であれば、STOUCH命令により識別された1
又は複数の命令が主メモリから1又は複数の命令キャッ
シュのラインへフェッチされ、STOUCH命令に関する投機
が導出(resolve)される。
【0008】STOUCH命令に関する各投機が有効と導出さ
れたならば、STOUCH命令により識別された1又は複数の
命令を含む命令キャッシュの1又は複数のラインが、ラ
イン置換アルゴリズムの通常のオペレーションにおける
よりも多いマシン・サイクル数について保持されるよう
にライン置換アルゴリズムが修整される。
【0009】しかしながら、STOUCH命令に関する投機の
いずれも無効であると導出されたならば、STOUCH命令に
より識別される1又は複数の命令を含む1又は複数の命
令キャッシュのラインがライン置換アルゴリズムの通常
オペレーション中よりも少ないマシン・サイクル数だけ
保持されるように、ライン置換アルゴリズムを修整す
る。
【0010】本発明は、データ・キャッシュへデータを
プリフェッチするために同様の方式を開示する。
【0011】STOUCH命令により指定された投機の導出に
よってライン置換アルゴリズムを修整することにより、
キャッシュ汚染が低減されシステム性能が拡張される。
【0012】
【発明の実施の形態】詳細な説明の前に、以下の用語の
定義を示すことが有用であろう。 [1]プリフェッチ:命令又はデータのプリフェッチと
は、命令又はデータがメモリ階層の下層(例えば、オン
チップ・キャッシュ)にないと仮定してその命令又はデ
ータが必要とされる前に、メモリ階層の上層(例えば、
主メモリ)からメモリ階層の下層へその命令又はデータ
を予めフェッチすることを云う。ある命令が実際に必要
であると見なされる時点は、プログラム制御が当該命令
をフェッチしデコード及び実行しようとする準備ができ
たときである。あるデータ値が実際に必要であると見な
される時点は、当該データ値をオペランドとして用いる
1又は複数の命令の実行の準備ができたときである。
【0013】[2]投機プリフェッチ:1又は複数の未
導出の分岐をもつ命令又はデータのプリフェッチであ
る。
【0014】[3]順次追随順序(sequential trace or
der:STO):同時に1つだけ命令を実行する単一制御
スレッドの非投機マシン上のプログラムの完全な実行か
ら得られたプログラム命令の実行シーケンスの動的順序
【0015】次に概要を説明する。コンピュータ・シス
テムにおいては、実行時に先立って命令メモリ中のシー
ケンスにコンパイラ又はアセンブリ・プログラムを用い
て生成された命令が配置される。このシーケンスは、静
的順序と呼ばれる。動的順序は、コンピュータがこれら
の命令を実行する順序である。動的順序は、静的順序と
同じ場合も異なる場合もある。以下の説明において「コ
ンパイル時」という用語は、実行時以前処理(prior-to-
run-time processing)のタイミングを云う。このような
処理はコンパイラにより実行されることがほとんどであ
るけれども、例えばアセンブリ・レベル・プログラミン
グ等の他の手段を代わりに用いることもできることを注
記する。
【0016】本発明は、明示的な制御フロー投機を各投
機によるプリフェッチと関連付けるプリフェッチ方式を
提示する。このプリフェッチ方式は、命令又はデータの
キャッシュ・ミスが実行時に起こりやすいプログラム中
の特定の場所を決定するコンパイル時解析に基づく。非
順次(non-sequential)の分岐目標や不規則なデータ・ア
クセスは、通常、キャッシュ・ミスの原因となりやすい
キャッシュ・アクセスの典型例である。このようなキャ
ッシュ・ミスによる性能への影響を最小とするために、
コンパイラは、実行時のハードウェアに対して早めの示
唆を与えることができる1組の場所を識別する。この示
唆により実行時のハードウェアは、前もって識別された
キャッシュ・アクセスに関する予想されるミス損失を避
けるべくプリフェッチを開始することができる。以下の
説明においては、このような静的プログラム中の場所を
「プリフェッチ・ポイント」と称する。これには、この
ようなアクセスのアドレスをより早く入手できるように
再構成するコンパイル時コードも含まれる。
【0017】図1は、プログラムの制御フローを示す図
である。図中の各ノードは非分岐命令の群すなわちブロ
ックを示しており、分岐命令により任意に終了する。条
件分岐により終了するコード・シーケンスのいずれのブ
ロックも、分岐が選択されない(fall through)場合に制
御が移行する一つの端(符号Fで示される)と、分岐が選
択された場合に制御が移行するもう一つの端(符号Tで
示される)とを有する。残りのブロックは、単独の目標
ブロックへの非分岐命令又は無条件分岐のいずれかで終
了する。ブロックから制御フローが出てブロックへ制御
フローが入る場合は、符号を付していない端が示されて
いる。
【0018】例えば、ブロックB10にある記憶命令
が、実行時にキャッシュ・ミスを起こしそうなものの1
つとしてコンパイル時に識別されたと仮定する。このア
クセスに関するミス遅延のおそれを顕在化させないよう
に、コンパイラは、例えばブロックB1のプリフェッチ
・ポイントを識別する。ところが、ブロックB1とブロ
ックB10との間には3つの条件分岐、すなわちブロッ
クB1、B2、及びB8の端の条件分岐が存在する。従
って、実行時に介入するこれらの分岐結果によっては制
御がブロックB1からブロックB10へと流れない可能
性がある。その場合、おそらくはより有用なキャッシュ
・ラインを置き換えることになるため、ブロックB1で
開始されたプリフェッチが無駄になると共にキャッシュ
を汚染する。
【0019】本発明は、STOUCH命令と称される新規のプ
リフェッチ命令を提示するものである。この命令は、プ
リフェッチ要求が開始される時点と実際にそのプリフェ
ッチされたデータが必要とされる時点との間に存在する
条件分岐に関するコンパイル時投機をエンコードするこ
とができる機能をもつコンパイラを提供する。このコン
パイル時投機を実行時ハードウェアに対して明示的に伝
達する結果、無効な投機に基づいてプリフェッチされた
ラインを早めに破棄できる一方、有効な投機に基づいて
プリフェッチされたラインをキャッシュ内にさらに長く
保持することができ、好適なキャッシュ性能が実現され
る。命令のセマンティクス及びこの命令を実行する際の
コンピュータ処理システムのオペレーションの詳細を以
下に述べる。
【0020】先ず、STOUCH命令について詳細に説明す
る。本発明におけるSTOUCH命令は、もしこの命令の予想
する有効アドレスによりアドレス指定されたバイトを含
むブロックがキャッシュ内にフェッチされそしてこの命
令に動的に続く分岐シーケンスに関する指定された投機
が保持されるならば、プログラムは識別されたブロック
に速やかにアクセスすることになり、おそらくは性能が
向上するであろうという示唆を与えるものである。STOU
CH命令を実行することは、システム・エラー・ハンドラ
を呼出す原因とはならない。
【0021】図2はSTOUCH命令11を示しており、好適
にはSTOUCH命令のOPコード・フィールド12と、アド
レス・フィールド13と、条件フィールド15とを含
む。アドレス・フィールド13は、命令又はデータのキ
ャッシュ・ブロックのアドレスを明確に識別する。条件
フィールド15は、1組のコンパイル時投機、<条件1
>、<条件2>...<条件N> (図中、符号15-1、15-
2...15-Nで示される)を指定する。Nは、許容され
る投機の最大数を意味し、所与のアーキテクチャにおけ
るSTOUCH命令エンコードのために利用可能なOPコード
・ビットの数の関数である。さらにSTOUCH命令11は、
2つ方法のうちの1つにより、<条件1>から<条件N>ま
での条件の組を解釈するために用いられるモード・ビッ
ト14を含んでもよい。例えば、モード・ビット14が
有効(V)にセットされているならば、STOUCH命令に関
する全てのコンパイル時指定条件(<条件1>〜<条件N>)
が実行時に真と評価された場合に、関連するプリフェッ
チが推奨されたとみなすことができる。一方、モード・
ビット14が無効(I)にセットされているならば、ST
OUCH命令に関する全てのコンパイル時指定条件(<条件1
>〜<条件N>)が実行時に真と評価されたとしても、関連
するプリフェッチが推奨されたとみなすことはできな
い。
【0022】次に、条件フィールド15のセマンティク
スを詳細に説明する。説明を簡単とするために、STOUCH
命令の「従属領域」は、STOUCH命令の直後の命令から始
まり、そしてSTOUCH命令によりプリフェッチされた命令
やデータが実際に必要とされる直前の命令において終了
する順次追随順序(STO)による命令のシーケンスと
して定義される。
【0023】さらに具体的には、STOUCH命令11の条件
フィールド15は、1又は複数の分岐のシーケンスの結
果に関するコンパイル時投機を<条件1>、<条件2>...<
条件N>としてエンコードする。シーケンス中の第1の
条件は、符号15-1で示される<条件1>であり、STOUC
H命令の従属領域において動的に遭遇する単独の条件分
岐の最初のものである。シーケンス中の第2の条件は、
符号15-2で示される<条件2>であり、STOUCH命令の
従属領域において動的に遭遇する単独の条件分岐の第2
のものである。以下同様である。別々の命令場所に存在
する分岐のみが、単独の分岐と見なされる。
【0024】さらに、特定の分岐結果のコンパイル時投
機をエンコードする条件は、好適には、次の3つの条件
のいずれかである。すなわち、分岐(T)、非分岐
(F)、及び無視(X)のいずれかである。別の例とし
て、条件に関する投機が、分岐(T)又は非分岐(F)
のいずれかに限定されることもある。
【0025】正確に言えば、STOUCH命令11の<条件1>
〜<条件N>の条件の組は、従属領域における後続の制御
パスに関するコンパイル時投機をエンコードする。直観
的には、コンパイラは、プリフェッチ・ポイントから正
規のアクセス・ポイントまでの制御フロー領域を通る好
ましいパスをエンコードする場合には有効モード・セッ
トを用いることになり、一方、プリフェッチ・ポイント
から正規のアクセス・ポイントまでの制御フロー領域を
通る好ましくないパスをエンコードする場合には無効モ
ード・セットを用いることになる。
【0026】STOUCH命令の条件エンコード形式をさらに
明確とするために、図1に示した例について考える。 ・STOUCH [R1],V,T,X,T このエンコードは、レジスタR1のアドレスに関するキ
ャッシュ・ブロックのプリフェッチが推奨されることを
示唆する。ただし、STOUCH命令の従属領域内の第1の条
件分岐(すなわち、ブロックB1の末端の分岐)が分岐
であり、STOUCH命令の従属領域内の第2の条件分岐(す
なわち、ブロックB2の末端の分岐)がいずれへも行く
ことができ、そしてSTOUCH命令の従属領域内の第3の条
件分岐(すなわち、ブロックB8の末端における分岐)
が分岐である場合においてである。実行時制御フローが
この投機されたパスに沿わない場合、つまりブロックB
10の記憶へとつながらない場合には、プリフェッチさ
れたキャッシュ・ブロックは、関連するキャッシュ汚染
による性能への悪影響を避けるために破棄される。ここ
で、1組のコンパイル時投機のこの特定の解釈は、関連
する有効Vモード・ビットのセットによることを注記す
る。
【0027】・STOUCH [R2],V,F,F このエンコードは、レジスタR1のアドレスに関するキ
ャッシュ・ブロックのプリフェッチが推奨されることを
示唆する。ただし、STOUCH命令の従属領域内の第1の条
件分岐(すなわち、ブロックB1の末端の分岐)が非分
岐であり、STOUCH命令の従属領域内の第2の条件分岐
(すなわち、ブロックB3の末端の分岐)もまた非分岐
である場合においてである。実行時制御フローがこの投
機されたパスに沿わない場合、つまりブロックB7のロ
ードへとつながらない場合には、プリフェッチされたキ
ャッシュ・ブロックは、関連するキャッシュ汚染による
性能への悪影響を避けるために破棄される。ここで、1
組のコンパイル時投機のこの特定の解釈は、関連する有
効モード・ビット(V)のセットによることを注記す
る。
【0028】・STOUCH B12,I,F,X,T このエンコードは、ブロックB12に関連するキャッシ
ュ・ブロックのプリフェッチが不要と見なされることを
示唆する。ただし、STOUCH命令の従属領域内の第1の条
件分岐(すなわち、ブロックB1の末端の分岐)が非分
岐であり、STOUCH命令の従属領域内の第2の条件分岐
(すなわち、ブロックB3の末端の分岐)がいずれへも
行くことができ、そしてSTOUCH命令の従属領域内の第3
の条件分岐(すなわち、ブロックB9の末端における分
岐)が分岐である場合に限る。実行時制御フローがこの
投機されたパスに沿わない場合、ブロック12のプリフ
ェッチが推奨される。ここで、1組のコンパイル時投機
のこの特定の解釈は、関連する無効モード・ビット
(I)のセットによることを注記する。
【0029】プリフェッチ・ポイントとアクセス・ポイ
ントとの間のコード領域が、無ループであるよう制限さ
れている場合には、STOUCH命令の後に遭遇する分岐の動
的シーケンスは、全て単独のものとなるであろう。言い
替えるならばこのような状況下では、第1の単独の条件
分岐は、単純に最初に動的に遭遇した条件分岐というこ
とになり、第2の単独の条件分岐は、単純に2番目に動
的に遭遇した条件分岐ということになる。以下同様であ
る。
【0030】次に、STOUCH命令を実行するためのコンピ
ュータ処理システムについて説明する。図3は、本発明
によるSTOUCH命令を実行可能なコンピュータ処理システ
ムを示す機能ブロック図である。コンピュータ処理シス
テムは、プロセッサ・ユニット100及び関連するメモ
リ・ユニット102を有する。メモリ・ユニット102
は、プロセッサ・ユニット100上で実行されるプログ
ラムのデータ及び命令を保持する。汎用的には、メモリ
・ユニット102は、命令キャッシュ・ユニット104
及び及びデータ・キャッシュ・ユニット106とインタ
フェースされ、これによってメモリ・ユニット102中
の命令及びデータのうち頻繁に利用される部分が、それ
ぞれ命令キャッシュ・ユニット104及びデータ・キャ
ッシュ・ユニット106内にそれぞれ維持される。別の
例として、命令キャッシュ・ユニット104及びデータ
・キャッシュ・ユニット106を1つに統合されたキャ
ッシュへ併合することもできる。キャッシュ・ユニット
104、106に対するアクセス時間は、通常、メモリ
・ユニット102へのアクセス時間よりも遥かに短い。
さらに、周知のとおり命令キャッシュ・ユニット104
及び/又はデータ・キャッシュ・ユニット106は、多
数のキャッシュ又は多段階のキャッシュから構成されて
もよい。
【0031】通常、命令キャッシュ104及びデータ・
キャッシュ106に記憶された命令やデータは、それぞ
れライン又はブロックに分割されている。命令フェッチ
・ユニット108は、命令キャッシュ104に記憶され
た1又は複数の命令のブロックをデコード・ユニット1
10内へフェッチする。デコード・ユニット110は、
分岐・条件レジスタ更新命令を実行のために分岐ユニッ
ト112へ送り、順次命令(非分岐命令)をディスパッ
チ・ユニット114へ送る。ディスパッチ・ユニット1
14は、ペンディング中の命令の従属性を解析して、1
又は複数の機能ユニット116上での命令の実行をスケ
ジューリングする。
【0032】データ・フェッチ・ユニット118は、デ
ータ・キャッシュ106から機能ユニット116へのデ
ータ・ブロックのフェッチを必要に応じて処理する。デ
ータ・キャッシュ106は、命令によりソース・オペラ
ンドとして利用されるデータ値及び実行された命令によ
り発生されたデータ値のいくつかを保持する。メモリ内
の多数のデータ値が同時に機能ユニット116により要
求されたり、メモリへ送られる多数の結果が同時に発生
されたりするので、データ・キャッシュ106は、通
常、複数のポートを備えている。
【0033】処理ユニット100はさらに、1組のレジ
スタを含むレジスタ・ファイル120を有する。レジス
タ・ファイル120は、命令の実行のために機能ユニッ
ト116に対してオペランドを与えかつ実行の結果を受
信する。さらにこのレジスタの組は、構造的に可視のレ
ジスタと、構造的に不可視のレジスタとに分けられる。
構造的に可視の、すなわち構造化されたレジスタは、固
定レジスタ・セットと称され、マシンのアセンブリ・レ
ベルのプログラマ(又はコンパイラ)へアクセス可能で
ある。このようなレジスタ・ファイル120は周知の技
術である。
【0034】各機能ユニット116は、いくつかの又は
全ての種類の命令を実行することができる。機能ユニッ
ト116は、レジスタ・ファイル120及び/又はデー
タ・キャッシュ106から入力ソース・オペランドを受
信したり、これらに対して出力結果を書き込んだりす
る。好適例では、全ての機能ユニット116が同一であ
り、よっていかなる命令も実行可能である。別の例とし
て、機能ユニット116が非対称的であり、特定のユニ
ットが所与の命令サブセットのみを実行可能であるよう
にしてもよい。この場合、ディスパッチ・ユニット11
4は、この非対称性を認識して命令を適切にスケジュー
リングしなければならない。
【0035】さらにプロセッサ・ユニット100は、ア
ーキテクチャにより有効な順序と見なされた順序で命令
の実行を完了する完了ユニット122を有する。プロセ
ッサ・ユニット100は、機能ユニット116が順序を
逸脱して命令を実行する場合であっても、アーキテクチ
ャ制約に依ってその同じ順序で命令を完了してもよい
し、しなくてもよい。
【0036】分岐ユニット112は、未導出の分岐を予
測し、分岐導出に対する各予測の有効性を判断する。分
岐ユニット112は条件レジスタも含み、これは、条件
分岐の結果を評価するために用いられる。さらに分岐ユ
ニット112は、機能ユニット116により実行される
オペレーションの結果に従って条件レジスタを更新する
論理を含む。
【0037】本発明においては、前述の通り、命令キャ
ッシュ104に記憶された命令は、1又は複数のSTOUCH
命令を含む。デコード・ユニット110はSTOUCH命令を
識別し、そのSTOUCH命令を投機的プリフェッチ制御ユニ
ット124へ送る。投機的プリフェッチ制御ユニット1
24は、STOUCH命令に従って命令の投機的プリフェッチ
を制御し、そのSTOUCH命令に対応する投機的プリフェッ
チ・バッファ126に対してエントリを追加する。さら
に分岐ユニット112は、各分岐結果を投機的プリフェ
ッチ制御ユニット124へ送る。仮に分岐ユニット11
2内で順序を逸脱して分岐が導出されたとしても、単純
とするために、分岐結果情報を順次追随順序(STO)
とすることができる。別の例として、分岐ユニット11
2は、非順次の分岐結果情報を投機的プリフェッチ制御
ユニット124へ送ることもできるが、この場合、関連
する分岐IDを各結果に付加することが必要である。投
機的プリフェッチ制御ユニット124は、分岐結果情報
を用いることにより、投機的プリフェッチ・バッファ1
26のエントリに関連する投機タグを評価し、この評価
に基づいて命令キャッシュ104及び/又はデータ・キ
ャッシュ106の上書きを制御する。さらに別の例とし
て、条件レジスタをレジスタ・ファイル120の部分と
して形成し、別の算術命令のセマンティクスの部分とし
て他の構造化レジスタと同様に更新することもできる。
【0038】投機的プリフェッチ制御ユニット124及
び投機的プリフェッチ・バッファ126は、本発明独自
のものであり、STOUCH命令のセマンティクスを実施する
ことを主に担う。図4は、投機的プリフェッチ・バッフ
ァ126の各エントリ200を示しており、ライン・タ
グ202、投機タグ204、及び制御タグ206を含
む。ライン・タグ202は、命令キャッシュ104又は
データ・キャッシュ106の特定のラインに対してエン
トリ200を1対1で関連付ける。通常、キャッシュ構
造は、(命令キャッシュであれデータ・キャッシュであ
れ)適切なラインをアドレス指定するために用いられる
ライン・タグを含むディレクトリ部分と、ラインに関連
付けられたデータを含むデータ部分とから構成される。
この場合、各エントリに関連付けられたライン・タグ
は、投機的にプリフェッチされるキャッシュ・ラインに
関連するディレクトリ内容から容易に導出することがで
きる。別の例として、(投機的であるか否かによらず)
プリフェッチされるラインを保持されるために別個のプ
リフェッチ・バッファを用いることもできる。この場
合、エントリ200のライン・タグ202は、単に、対
象とするラインに対するプリフェッチ・バッファの適宜
のインデクス(index)と云うことができる。エントリ2
00の投機タグ204は、STOUCH命令においてエンコー
ドされるコンパイル時投機から導出される。投機タグ2
04については後述する。最後に、エントリ200の制
御タグ206は、投機タグ204内のコンパイル時投機
を評価するために用いられる。制御タグ206に関する
サブフィールドについては後述する。制御タグ206を
初期化し及び更新するために用いられるアルゴリズムに
ついても後述する。
【0039】図5は、各エントリの投機タグ204を示
しており、好適には複数のサブフィールド302-1〜
302-Nからなる投機フィールド300を含む。前述
の通り、Nは許容される投機の最大数を示し、所与のア
ーキテクチャにおけるSTOUCH命令エンコードのために利
用可能なOPコード・ビットの数の関数である。サブフ
ィールド302-1〜302-Nは、各々、STOUCH命令の
後に遭遇する第1〜第N番目の単独の動的分岐に関する
コンパイル時投機をエンコードするデータを含む。さら
に、各投機タグ204はモード・ビット304を含むこ
とができ、これは、サブフィールド302-1〜302-
Nを2つの方法のいずれかにより解釈するために用いら
れる。具体的には、例えばモード・ビット304が有効
(V)にセットされているならば、サブフィールド30
2-1〜302-Nでエンコードされる全てのコンパイル
時条件が実行時に真と評価された場合に、関連するエン
トリが推奨されたとみなすことができる。一方、モード
・ビット14が無効(I)にセットされているならば、
サブフィールド302-1〜302-Nでエンコードされ
る全てのコンパイル時条件が実行時に真と評価されたと
しても、関連するプリフェッチが推奨されたとみなすこ
とはできない。
【0040】さらに、図6は、各エントリの制御タグ2
06を示しており、好適には、1又は複数の有効ビット
400、ミス・ビット402、状態フィールド404、
第1の分岐IDフィールド406、適合計数フィールド
408、及び寿命計数フィールド410を含む。有効ビ
ット400がセットされているときは、関連するエント
リ200が有効であることを示す。一方、有効ビット4
00が非セットのときは、エントリ200が無効である
ことを示す。また、ミス・ビット402がセットされて
いるときは、エントリ200に関連するキャッシュ・ラ
インがキャッシュ内にないことが判明しそしてSTOUCH命
令のプリフェッチ要求に応じてメモリ階層の高層からフ
ェッチされたことを示す。一方、ミス・ビット402が
非セットのときは、そのエントリに対応するSTOUCH命令
によりプリフェッチを推奨されたラインがキャッシュ内
に存在すると判明したことを示す。状態フィールド40
4は、投機的にプリフェッチされたラインの状態を記録
する。状態フィールド404は、未導出状態に初期化さ
れ、その後、有効導出又は無効導出のいずれかに評価さ
れる。以下に、制御タグの更新アルゴリズムを図13を
参照して説明する。
【0041】第1の分岐IDフィールド406は、STOU
CH命令の後に順次追随順序(STO)で動的に遭遇する第
1の条件分岐の実行時IDに初期化される。この情報
は、特定のSTOUCH命令が依存している可能性のある条件
分岐の範囲を確立するために用いられる。この範囲は、
第1の分岐IDをもつ分岐から始まり、順次追随順序
(STO)で連続するN個の単独の条件分岐の後に終わ
る。この範囲外の分岐は、対応するキャッシュに関する
投機の有効性を評価する際に、いかなる影響も及ぼさな
い。
【0042】適合計数フィールド408は、実行時結果
と一致したコンパイル時投機の数の計数を表す。これ
は、図13の制御タグ更新アルゴリズムについて後述す
るように、コンパイル時投機の有効性を評価するために
用いられる。
【0043】最後に、寿命計数フィールド410は、デ
フォールトのキャッシュ置換アルゴリズムにより関連す
るキャッシュ・ラインが置換候補として識別された後
に、そのキャッシュ・ラインが置換されなかった回数の
計数を表す。このフィールドの情報は、命令及びデータ
のキャッシュに用いられるデフォールトのキャッシュ置
換アルゴリズムを修整するために用いられる。修整され
るライン置換アルゴリズムについては、図12を参照し
て後述する。
【0044】次に、STOUCH命令を実行する方法を詳細に
説明する。図7は、上記のSTOUCH命令を実行するステッ
プを示す流れ図である。先ずコンパイル時において、ス
テップ1000でコンパイラは、上記のSTOUCH命令とは
全く関係のない命令の静的シーケンスを発生する。ステ
ップ1002においてコンパイラは、この静的シーケン
スの中で実行時に命令ミス又はデータ・ミスに遭遇しそ
うな特定の場所を識別するためにこれを解析し、そして
静的シーケンス中の識別された場所に従ってコンパイラ
は、プリフェッチ・ポイントと呼ばれる1組のポイント
を識別する。このポイントにおいてコンパイラは、識別
された場所におけるキャッシュ・アクセスに関して予想
されるミス損失を顕在化させないために実行時ハードウ
ェアに対してプリフェッチを開始するよう早めに示唆す
ることができる。さらに、プリフェッチ・ポイントの識
別の際に、対応するプログラム従属グラフ(制御従属グ
ラフ及びデータ従属グラフの組合せ)の一部又は全て等
に基づくデータ及び制御の従属解析を行ってもよい。ス
テップ1004においてコンパイラは、ステップ100
2で識別されたプリフェッチ・ポイントに1又は複数の
STOUCH命令を挿入する。
【0045】ステップ1006の実行時において、コン
ピュータ処理システムは、コンパイルされた命令の静的
シーケンスを図3のメモリ102へロードする。この静
的シーケンスにはステップ1004で挿入されたSTOUCH
命令が含まれている。前述のように、メモリ102は、
このコンピュータ処理システムの命令キャッシュ104
とインタフェースされる。汎用的であるが、メモリ10
2に記憶された静的シーケンスのサブシーケンスは、実
行されるために周期的に命令キャッシュ104へ転送さ
れる。
【0046】ステップ1008において、命令フェッチ
・ユニット108は、命令キャッシュ104をアドレス
指定することにより命令キャッシュ104から次の命令
シーケンスをフェッチする。もし次の命令シーケンスが
命令キャッシュ104になければ、メモリ102から命
令キャッシュ104へとフェッチされる。図8は、ステ
ップ1008をさらに詳細に示している。
【0047】ステップ10081において、命令フェッ
チ・ユニット108は、デコード・ユニット110が更
なる命令を受入れ可能であるか否かを判断する。このこ
とは、更なる命令のフェッチのために命令キャッシュ・
アクセスが必要であることを意味する。デコード・ユニ
ット110が更なる命令を受入れ可能であると判断した
ならば、ステップ10083において命令フェッチ・ユ
ニット108は、命令キャッシュ104へ命令フェッチ
・アドレスを送ることにより命令キャッシュ104へア
クセスする。ステップ10083において、命令フェッ
チ・アドレスにより識別された命令が命令キャッシュ1
04内に存在していれば、キャッシュ・ヒットが発生
し、対応する命令が命令キャッシュ104からデコード
・ユニット110へ転送され、そしてステップ1010
へ続く。一方、命令フェッチ・アドレスにより識別され
た命令が命令キャッシュ104内に存在しなければ、キ
ャッシュ・ミスが発生し、ステップ10085へ進み、
存在しない命令ラインをフェッチする。存在しない命令
ラインを命令キャッシュ104へフェッチするステップ
の詳細については、図12を参照して後述する。ステッ
プ10085において存在しない命令ラインが命令キャ
ッシュ104へフェッチされた後、ステップ1010へ
続く。
【0048】図7のステップ1010においてデコード
・ユニット110は、1又は複数の命令を同時にデコー
ドする。分岐命令としてデコードされた命令、すなわち
条件レジスタ更新を含む命令は、デコード・ユニット1
10により分岐ユニット112へ送られる。STOUCH命令
としてデコードされた命令は、デコード・ユニット11
0により投機的プリフェッチ制御ユニット124へ送ら
れる。最後に、1又は複数の機能ユニット116を使用
することを必要とする命令は、従属性解析及び機能ユニ
ット116へのディスパッチのためにディスパッチ・ユ
ニット114へ送られる。
【0049】ステップ1012において分岐ユニット1
12は、分岐命令としてデコードされた命令すなわち条
件レジスタを操作する命令を処理する。図9は、ステッ
プ1020の詳細を示したものである。具体的には、ス
テップ10121において分岐ユニット112は、デコ
ードされた分岐命令が導出可能であるか否かを判断す
る。条件分岐は、その依存する条件レジスタ・ビットが
更新された後にのみ導出可能と見なされる。ステップ1
0123において分岐ユニット112は、未導出分岐命
令の現在の動的インスタンスが以前に予測されていなか
ったか否かを判断するために検査する。ステップ101
23において未導出分岐命令が以前に予測されていたな
らば、分岐ユニット112のオペレーションは、ステッ
プ10121へ戻り、その分岐命令が導出可能となるの
を待つ。一方、ステップ10123において未導出分岐
命令が以前に予測されていなかったならば、ステップ1
0125へ進み、分岐ユニット112はその未導出命令
の結果を予測する。この予測は、通常、その分岐結果が
分岐又は非分岐のいずれであるかに関する予測を含む。
動的分岐予測技術は周知の技術であり、例えば、分岐履
歴テーブル及び/又はデコード履歴テーブルを含む。ス
テップ10125において未導出分岐の結果を予測した
後、ステップ10127へ進み、命令フェッチ・ユニッ
ト108により記憶された命令フェッチ・アドレスがそ
の予測に従って更新される。ステップ10125におい
て、未導出の分岐命令の結果が分岐と予測されたなら
ば、ステップ10127において命令フェッチ・ユニッ
ト108は、分岐命令の非順次の目標アドレスにより更
新される。非分岐と予測されたならば、ステップ101
27において命令フェッチ・ユニット108は、命令シ
ーケンスの次の順次の(sequential)アドレスにより更新
される。
【0050】ステップ10121において分岐ユニット
112が、デコードされた分岐命令が導出可能であると
判断したならば、ステップ10129へ進み、投機的プ
リフェッチ・バッファ126のエントリの制御タグを更
新する。図13は、ステップ10129をさらに詳細に
示した図である。ステップ10129において投機的プ
リフェッチ・バッファ126のエントリの制御タグを更
新した後、ステップ10127へ進み、命令フェッチ・
ユニット108により記憶された命令フェッチ・アドレ
スが、導出された分岐命令に従って更新される。ステッ
プ10127において、導出された分岐命令が分岐と予
測されかつ分岐と導出されたならば、コンピュータ処理
システムの通常のオペレーションが続けられる。同様
に、導出された分岐命令が非分岐と予測されかつ非分岐
と導出された場合も、通常のオペレーションが続けられ
る。一方、導出された分岐命令が分岐と予測されかつ非
分岐と導出されたならば、命令フェッチ・ユニット10
8は、順次(非選択)パスに沿ってフェッチするために
更新され、目標(選択)パスから投機的に実行された命
令は破棄される。同様に、導出された分岐命令が非分岐
と予測されかつ分岐と導出されたならば、命令フェッチ
・ユニット108は、目標(選択)パスに沿ってフェッ
チするために更新され、順次(非選択)パスから投機的
に実行された命令は破棄される。
【0051】図7に戻って、ステップ1014において
投機的フェッチ制御ユニット124は、デコード・ユニ
ット110によりSTOUCH命令としてデコードされた命令
を処理する。図10は、ステップ1014をさらに詳細
に示した図である。具体的には、ステップ10141に
おいて投機的プリフェッチ制御ユニット124は、STOU
CH命令にエンコードされた情報を利用して、指定された
キャッシュ・ラインについてのエントリを作成し、その
エントリを投機的プリフェッチ・バッファ126へロー
ドする。図14は、ステップ10141をさらに詳細に
示した図である。ステップ10141における投機的プ
リフェッチ・バッファのエントリ作成に続いて又は並行
して、ステップ10143において投機的プリフェッチ
制御ユニット124は、STOUCH命令のライン・アドレス
を用いて命令キャッシュ・ユニット104及びデータ・
キャッシュ・ユニット106のうち適切な1つにアクセ
スする。ステップ10143のキャッシュ・アクセスの
結果がキャッシュ・ヒットであれば(すなわち、ライン
がそのキャッシュ内で見出されたならば)、ステップ1
0145において投機的プリフェッチ・バッファ内の関
連するエントリの制御タグのミス・ビットがリセットさ
れ(すなわち、「0」にセットされ)、そしてSTOUCH命
令処理ステップ1014が完了する。一方、ステップ1
0143のキャッシュ・アクセスの結果がキャッシュ・
ミス(すなわち、ラインがそのキャッシュ内で見出され
なければ)、ステップ10147において投機的プリフ
ェッチ・バッファ内の関連するエントリの制御タグのミ
ス・ビットがセットされ(すなわち、「1」にセットさ
れ)、そして、命令のミス・ライン(見出されなかった
ライン)をフェッチするためにステップ10149へ続
く。図12は、命令のミス・ラインを適切なキャッシュ
へフェッチするステップを詳細に示した図である。ステ
ップ10149において、命令のミス・ラインをキャッ
シュへフェッチした後、STOUCH命令処理ステップ101
4が完了する。
【0052】図7に戻って、ステップ1016におい
て、ディスパッチ・ユニット114は、他のデコードさ
れた命令を機能ユニット116へディスパッチするため
に処理する。この処理には、同時ディスパッチのための
独立したサブセットを検出するべく命令間の従属性を解
析することを含めてもよい。これは、例えば、機能ユニ
ット116が、同時に複数の命令を実行できる場合など
である。
【0053】ステップ1018において、機能ユニット
116は、ディスパッチ・ユニット114によりディス
パッチされた命令を実行する。この実行には、入力とし
て1又は複数のソース・オペランドを含めてもよく、出
力として1又は複数の結果オペランドを生成してもよ
い。オペランドは、レジスタ・ファイル120から読取
られかつこれへ書込まれるか、又は、データ・キャッシ
ュ・ユニット106からロードされかつこれへ記憶され
るかのいずれかである。図11は、データ・キャッシュ
・ユニット106にアクセスする際のオペレーションを
示す図である。具体的には、ステップ10181におい
て機能ユニット116が、命令がデータ・キャッシュ・
アクセスを必要とするか否か(すなわち、入力オペラン
ドがデータ・キャッシュ・ユニット106から取出され
るべきか、又は、出力オペランドがデータ・キャッシュ
・ユニット106へ書込まれるべきか)を判断する。ス
テップ10181においてデータ・キャッシュ・アクセ
スが必要ならば、ステップ10183において機能ユニ
ット116は、データ・キャッシュ・ユニット106内
のオペランドを取出す又は記憶する場所を識別するため
のブロック・アドレスをデータ・フェッチ・ユニット1
18へ与える。そしてデータ・フェッチ・ユニット11
8は、与えられたブロック・アドレスを用いてデータ・
キャッシュ・ユニット106へアクセスする。ステップ
10183のキャッシュ・アクセスの結果がキャッシュ
・ヒットであれば(すなわち、ブロック・アドレスがデ
ータ・キャッシュ・ユニット106内に見出されたなら
ば)、データ・キャッシュ・アクセス・ステップ101
8は完了する。一方、ステップ10183のキャッシュ
・アクセスの結果がキャッシュ・ミスであれば(すなわ
ち、ブロック・アドレスがデータ・キャッシュ・ユニッ
ト106内に見出されなければ)、ステップ10185
へ進み、データのミス・ライン(見出されなかったライ
ン)をメモリ102からフェッチする。図12は、デー
タのミス・ラインをデータ・キャッシュ・ユニット10
6へフェッチするステップの詳細を示す図である。ステ
ップ10185において、データのミス・ラインがデー
タ・キャッシュ・ユニット106へフェッチされた後、
データ・キャッシュ・アクセス・ステップ1018が完
了する。
【0054】図7に戻って、ステップ1020において
完了ユニット122が、アーキテクチャにより有効な順
序と見なされた順序で命令の実行を完了する。そして、
処理はステップ1008へ進み、命令キャッシュ104
からの次の命令シーケンスをフェッチする。
【0055】上記の本発明のコンピュータ処理システム
のオペレーションは、命令キャッシュ・ユニット104
又はデータ・キャッシュ・ユニット106のいずれかか
ら見出されなかったラインをフェッチするステップを含
む。命令キャッシュ・ユニット104又はデータ・キャ
ッシュ・ユニット106にミス・ラインをフェッチする
ことは、そのキャッシュ・ユニットの既存のラインを必
然的に置換えることになる。本発明においては、キャッ
シュの既存のラインを置換するために用いられるライン
置換アルゴリズムは、無効な投機によりプリフェッチさ
れたキャッシュ・ラインをより速やかに破棄しかつ有効
な投機によりプリフェッチされたキャッシュ・ラインを
より長く保持するために、修整される。
【0056】図12は、メモリ102から命令キャッシ
ュ・ユニット104へミス・ラインをフェッチするステ
ップをさらに具体的に示す。ステップ2000において
命令フェッチ・ユニット108は、メモリ102からフ
ェッチされるラインに対応する命令キャッシュ・ユニッ
ト104の適合クラス又は組が無効ラインを含むか否か
を判断する(すなわち、その組の既存の有効ラインは、
入ってくるラインのための空きを作るべく置換される必
要はない)。ステップ2000においてその組の中に無
効ラインが存在すると判断したならば、ステップ200
6において命令フェッチ・ユニット108は、その無効
ラインをフェッチされたミス・ラインで置換し、このオ
ペレーションを完了する。一方、ステップ2000にお
いてその組の中に無効ラインが存在しないと判断したな
らば、ステップ2004において、投機的プリフェッチ
制御ユニット124は、メモリ102からフェッチされ
るラインに対応する組が現在不要とされている投機的プ
リフェッチされたラインを含むか否かを判断する。この
ようなラインは、投機的プリフェッチ・バッファ126
の1又は複数のエントリの制御タグを検査することによ
り識別される。さらに、投機的プリフェッチ・バッファ
126は、セット・アソシアティブ(set associative)
方式でもよい。この場合、このラインは、投機的プリフ
ェッチ・バッファ126の、メモリ102からフェッチ
されるラインと同じ適合クラス又は組に属するエントリ
の制御タグを検査することにより識別することができ
る。
【0057】具体的には、ステップ2004において投
機的プリフェッチ制御ユニット124は、次の3つの条
件を満足する制御タグをもつエントリを識別するために
投機的プリフェッチ・バッファ126のエントリを解析
する。第1に、有効ビット400が、そのエントリが有
効であることを示すべくセットされている。第2に、ミ
ス・ビット402が、そのエントリに対応するキャッシ
ュ・ラインがそのプリフェッチ以前にキャッシュ内にな
いことが判明したことを示すべくセットされている。第
3に、そのエントリの状態フィールド404が、そのエ
ントリに対応するキャッシュ・ラインが不必要なプリフ
ェッチと評価されたことを示すべく無効導出とセットさ
れている。ステップ2004において投機的プリフェッ
チ・バッファ126のエントリが、上記3つの条件を満
足すると識別されたならば、ステップ2006において
命令フェッチ・ユニット108は、ステップ2004で
識別されたエントリに対応する命令キャッシュ・ユニッ
ト104内のそのラインを、フェッチされたミス・ライ
ンで置換し、そしてミス・ラインのフェッチ・オペレー
ションが完了する。
【0058】このオペレーションは、無効と導出された
投機状態をもつラインを早期に破棄することを、プリフ
ェッチの時点でそのキャッシュに存在しない(これは、
ミス・ビットのセットにより示される)ことが判明した
ラインのみに限定していることを注記する。従って、ST
OUCH命令に応答してプリフェッチを要求された時点でキ
ャッシュに存在していると判明したラインは、早期に破
棄されない。なぜならこれらは、プログラムの他のアク
ティブな部分で必要とされるかも知れないからである。
【0059】しかしながら、ステップ2004において
投機的プリフェッチ制御ユニット124が、不必要にプ
リフェッチされたラインがないと判断したならば、ステ
ップ2008において置換候補を識別するためにデフォ
ールトのライン置換アルゴリズムが適用される。例え
ば、デフォールトのライン置換アルゴリズムは、周知の
技術であるLRU(least recently used)アルゴリズム
であってもよい。又は他の周知の技術であってもよい。
【0060】ステップ2010において、ステップ20
08に続いて又はこれと並行して、投機的プリフェッチ
制御ユニット124は、ステップ2008で識別された
置換候補に対応する有効なエントリが投機的プリフェッ
チ・バッファ126に存在するか否かを判断する。この
ようなエントリが存在しなければ、上述のステップ20
06へ進み、置換候補ラインをフェッチされたミス・ラ
インと置換する。一方、ステップ2010において上記
のような有効なエントリが存在すれば、ステップ201
2に進み、投機的プリフェッチ制御ユニット124は、
その有効エントリの制御タグ206の状態フィールド4
04が有効導出であるか又は未導出であるかを判断す
る。ここで、前述のステップ2004により、このエン
トリの状態が無効と導出されてはいないことを注記す
る。
【0061】ステップ2021において、状態フィール
ド404が有効と導出されていれば、ステップ2014
において、そのエントリの制御タグ206の寿命計数フ
ィールド410が増分される。そしてステップ2016
において、更新された寿命計数フィールド410が第1
のしきい値すなわち有効導出しきい値と比較される。ス
テップ2016において、寿命計数フィールド410が
第1のしきい値を超えれば、前述のステップ2006へ
進み、そのエントリに対応するキャッシュ・ラインをフ
ェッチされたミス・ラインで置換する。一方、ステップ
2016において、寿命計数フィールド410が第1の
しきい値を超えなければ、ステップ2018へ進み、置
換するための別のラインを選ぶことによりそのエントリ
に対応するキャッシュ・ラインを保持しようとする。こ
の点で、デフォールトの置換アルゴリズムを修整してい
る。
【0062】ステップ2018において、そのエントリ
に対応するキャッシュ・ラインを保持するために、命令
フェッチ・ユニットは、その組の中に置換候補として未
だ識別されていないラインがあるか否かを判断する。こ
のようなラインがその組の中に残っていたならば、ステ
ップ2008へ進み、その別の置換候補を検査する。一
方、ステップ2018において、その組の中に他の置換
候補が残っていなければ、ステップ2006へ進み、置
換候補ラインをフェッチされたミス・ラインで置換す
る。
【0063】ステップ2012において、状態フィール
ド404が未導出であれば、ステップ2020において
そのエントリの制御タグ206の寿命計数フィールド4
10が増分される。そしてステップ2020において、
更新された寿命計数フィールド410が第2のしきい値
すなわち未導出しきい値と比較される。ステップ202
2において、寿命計数フィールド410が第2のしきい
値を超えれば、前述のステップ2006へ進み、置換候
補ラインをフェッチされたミス・ラインで置換する。一
方、ステップ2022において、寿命計数フィールド4
10が第2のしきい値を超えなければ、ステップ201
8へ進み、前述のように置換するための別のラインを選
ぶことによりそのエントリに対応するキャッシュ・ライ
ンを保持しようとする。第1及び第2のしきい値は、設
計時における特定の定数である。これらのしきい値が高
いことは、修整の程度が大きいことを意味する。
【0064】ミス・ラインを命令キャッシュ・ユニット
104へフェッチする際の命令フェッチ・ユニット10
8のオペレーションを説明した。また、ミス・ラインを
データ・キャッシュ・ユニット106へフェッチする際
のデータ・フェッチ・ユニット118のオペレーション
も、同様に実行される。
【0065】前述のSTOUCH命令を処理する際のコンピュ
ータ処理システムのオペレーションもまた、ステップ1
0121を含む。すなわち、分岐ユニット112による
分岐命令の導出に従って投機的プリフェッチ・バッファ
126のエントリの制御タグ206を更新する。図13
は、このステップをさらに詳細に示した図である。具体
的には、ステップ3000において投機的プリフェッチ
制御ユニット124が、投機的プリフェッチ・バッファ
126のエントリ200のうち、制御タグ206の有効
ビット400がセットされかつ状態フィールド404が
未導出のものを識別する。このようなエントリがなけれ
ば、制御タグ更新ステップ10121は完了する。一
方、このような1又は複数のステップを識別したなら
ば、ステップ3000においてこれらのエントリがさら
に検査され、導出された分岐命令の分岐識別子が、各エ
ントリの関与する範囲内であるか否かを判断する。特定
のエントリの関与する範囲は、そのエントリの第1の分
岐IDフィールド406から始まり、その後に連続する
N個の分岐命令の後で終わる範囲である。
【0066】Nは、設計及びアーキテクチャによるパラ
メータである。これは、コンパイル時に命令セット・ア
ーキテクチャによりエンコードできる分岐投機の最大数
の関数である。特定のエントリの分岐IDフィールド4
06は、実行中の任意の時点における異なる分岐命令及
びこれらの同時にアクティブとなる異なる動的インスタ
ンスを個別に識別するために実行時に割当てられるID
を示す。
【0067】ステップ3000において関与する範囲内
であると判断された各エントリに対し、ステップ300
4において投機的プリフェッチ制御ユニット124は、
導出された分岐命令に対応するエントリの投機タグ20
4の条件フィールドが、無視(X)エンコードを含むか
否かを判断する。この分岐結果は、分岐ユニット112
により順次追随順序で投機的プリフェッチ制御ユニット
124へ伝達されると見なされるので、それに続く分岐
結果と条件フィールド302-1、...302-Nとの間
の対応が設定される。ステップ3004において、対応
する条件フィールドが無視エンコードを含むならば、制
御タグ更新ステップ10121が完了する。一方、対応
する条件フィールドが無視エンコードを含まないなら
ば、ステップ3006へ進む。エントリの投機タグ20
4の評価はモード・ビット304に依存するので、ステ
ップ3006において投機的プリフェッチ制御ユニット
124は、そのエントリの投機タグ204のモード・ビ
ット304が有効又は無効のいずれにセットされている
かを判断する。
【0068】ステップ3006においてモード・ビット
304が有効にセットされていれば、ステップ3008
において投機的プリフェッチ制御ユニット124は、分
岐結果を、対応する条件フィールドと比較することによ
り適合か又は不適合かを判断する。不適合であれば、ス
テップ3010において投機的プリフェッチ制御ユニッ
ト124は、そのエントリの制御タグ206の状態フィ
ールド404を無効導出として更新する。ステップ30
08において適合であれば、ステップ3012において
投機的プリフェッチ制御ユニット124は、そのエント
リの制御タグ206の適合計数フィールドを増分し、そ
してステップ3014において更新された適合計数フィ
ールド408が値Nに達したか否かを判断する。これに
より、投機タグ評価が完了したことを示す。ステップ3
014において適合計数フィールド408が値Nに達し
なければ、制御タグ更新ステップ10121が完了す
る。一方、適合計数フィールド408が値Nに達すれ
ば、ステップ3016に進み、投機的プリフェッチ制御
ユニット124は、そのエントリの制御タグ206の状
態フィールド404を有効導出として更新し、そのエン
トリの寿命計数フィールド410を初期化する(例え
ば、「0」にセットする)。
【0069】ステップ3006において、そのエントリ
のモード・ビットが無効にセットされていれば、ステッ
プ3018において投機的プリフェッチ制御ユニット1
24が、分岐結果を、対応する条件フィールドと比較す
ることにより適合か又は不適合かを判断する。不適合で
あれば、ステップ3020において投機的プリフェッチ
制御ユニット124は、そのエントリの制御タグ206
の状態フィールド404を有効導出として更新し、その
エントリの寿命計数フィールド410を初期化する(例
えば、「0」にセットする)。ステップ3018におい
て適合であれば、ステップ3022において投機的プリ
フェッチ制御ユニット124は、そのエントリの制御タ
グ206の適合計数フィールド408を増分し、そして
ステップ3024において、更新された適合計数フィー
ルド408が値Nに達したか否かを判断する。これによ
り、投機タグ評価が完了したことを示す。ステップ30
24において適合計数フィールド408が値Nに達しな
ければ、ステップ3026へ進み、投機的プリフェッチ
制御ユニット124は、そのエントリの制御タグ206
の状態フィールドを無効導出として更新する。
【0070】上記のSTOUCH命令を処理する際のコンピュ
ータ処理システムのオペレーションは、STOUCH命令のエ
ンコードされた情報に従って投機的プリフェッチ・バッ
ファ126内にエントリを作成するステップ10141
を含む。図14は、このステップを詳細に示した図であ
る。具体的には、ステップ4000において投機的プリ
フェッチ制御ユニット124が、そのラインのプリフェ
ッチ・アドレスを用いてエントリのラインタグ・フィー
ルド202を初期化し、好適には、命令キャッシュ・ユ
ニット104又はデータ・キャッシュ・ユニット106
のエントリとの一対一対応を設定する。ステップ400
2において投機的プリフェッチ制御ユニット124は、
STOUCH命令に含まれる情報を用いてそのエントリ200
の投機タグ204を初期化する。モード・ビット304
は、モード・ビットに関連するSTOUCH命令内の値と同じ
値に初期化される。そしてSTOUCH命令のサブフィールド
<条件1>...<条件N>が、そのエントリの投機タグ20
4の分岐投機フィールド302-1...302-Nを初期
化するために用いられる。最後に、ステップ4004に
おいて投機的プリフェッチ制御ユニット124は、図1
5に示すように制御タグを初期化する。
【0071】具体的には、ステップ40041におい
て、投機的プリフェッチ制御ユニット124が制御タグ
206の有効ビット400をセットする。ステップ40
043において、投機的プリフェッチ制御ユニット12
4が制御タグ206の状態フィールド404を未導出に
初期化する。ステップ40045において、投機的プリ
フェッチ制御ユニット124が、制御タグ206の第1
の分岐IDフィールド406を、当該STOUCH命令の後の
順次追随順序による最初の分岐命令の識別子にセットす
る。この分岐識別子は、通常、順次割当てられるので、
STOUCH命令の前に遭遇した最新の動的分岐インスタンス
の識別子が、第1の分岐IDフィールド406を発生す
るために用いられる。ステップ40047において投機
的プリフェッチ制御ユニット124は、制御タグ206
の適合計数フィールド408を、投機タグ204にエン
キューコードされた無視の数に初期化する。最後に、ス
テップ40049において投機的プリフェッチ制御ユニ
ット124は、制御タグ206の寿命計数フィールド4
10を、例えば「0」に初期化する。
【0072】次に、本発明の別の実施の形態を示す。従
来のほとんどの演算エンジンにおいては、条件レジスタ
内の条件コードをセットする可能性のある命令は、常
に、以前の情報を破壊する。しかしながら、いくつかの
従来のアーキテクチャ、例えば、パワーPC(「PowerP
C」は、International Buisiness Machines, Corpの商
標である)・アーキテクチャは、条件レジスタの以前の
内容を完全に上書きすることなくその条件レジスタの多
重更新を可能とする。言い替えるならばこのようなアー
キテクチャにおいては、その条件レジスタの別々の非上
書き部分の更新が、全く干渉されることなく同時に実行
されることが可能である。以下に示す本発明の別の実施
の形態は、基本的にこの種のアーキテクチャに基づく演
算エンジンに対して適用可能である。
【0073】別の実施形態では、前述のSTOUCH命令のコ
ンパイル時投機<条件1>から<条件N>までが、条件レジ
スタの別々のビットに直接関連付けられている。この結
果、制御フロー投機は、1組の条件レジスタ・ビット、
好適には、条件レジスタの連続する一連のビットの設定
が真か偽かに関して投機する。実行時にSTOUCH命令の従
属領域の終わりにおいて、投機された条件レジスタ・ビ
ットの設定が実際の対応する条件レジスタ・ビットの設
定に対して比較され、コンパイル時投機の有効性が判断
される。これは、条件ビット比較に関連する対応する分
岐についての分岐仮定又は非分岐仮定に類似する。この
実施の形態の下では、先の実施の形態とは異なり、投機
された分岐の動的順序が無関係となり、指定された条件
レジスタ・ビットが実行時に任意の順序でセット可能で
あることを注記する。さらに、真及び偽にエンコードす
るようにコンパイル時条件を制限することが可能である
ことも重要である。この場合、無視の分岐結果をエンコ
ードする必要がない。プリフェッチされたキャッシュ・
ラインに対して実体のないような分岐結果をもつ分岐に
ついては、STOUCH命令の<条件1>から<条件N>により用
いられる以外の条件レジスタ・ビットを使用させること
もできる。
【0074】コンパイル時投機とは、N個の連続する条
件レジスタ・ビットの組であると仮定している。第1の
投機された条件レジスタ・ビットの場所は、固定するこ
ともでき、また条件フィールドのエンコードの一部とし
て指定することもできる。同様に、投機されるビットの
数は、N個に固定することもでき、またSTOUCH命令の条
件フィールドのエンコードの一部として指定することも
できる。固定数のビットが投機される場合には、使用さ
れないビットは、投機に影響を与えないようコンパイル
時に設定することができる。さらに、使用されない条件
レジスタ・ビットを設定するためにコンパイル時に挿入
される命令は、STOUCH命令の従属領域にあるので、これ
らの更新は実行時に投機タグを評価する際に適切に記録
される。以下の説明は、コンパイル時投機が、固定数の
条件レジスタ・ビットを用いてSTOUCH命令で指定された
場所から始まるようにエンコードされる。
【0075】本発明の別の実施の形態に従って、図3の
コンピュータ・システム及び図7から図15に示した実
行方法が以下のように変更される。さらに、前述の分岐
投機は、ここでは条件レジスタ・ビットに関する投機を
意味する。
【0076】具体的には、図3の分岐ユニット112
が、条件レジスタ更新に関する情報を分岐結果の代わり
に投機的プリフェッチ制御ユニット124へ転送できる
よう変更される。言い替えるならば、条件レジスタの更
新毎に、1又は複数のビットが更新されたこと及びその
新しい内容が投機的プリフェッチ制御ユニット124へ
伝達される。
【0077】さらに、投機的プリフェッチ・バッファ1
26に記憶されたエントリの制御タグ206の第1の分
岐IDフィールド406が、第1の条件レジスタ・ビッ
トIDフィールドとリネームされ、関連するSTOUCH命令
で投機される第1の条件レジスタ・ビットの場所を含
む。
【0078】前述の実行方法は以下のように変更され
る。分岐命令のために特別な処理は必要ない。しかしな
がら、条件レジスタ・ビットの設定には制御タグの更新
を含めてもよい。従って、図7及び図9の分岐及び条件
レジスタ命令処理ステップ1012は、図16に示すス
テップ10120で置き換えられる。具体的には、ステ
ップ5000において分岐ユニット112は、条件レジ
スタ・ビットが更新されようとしているか否かを判断
し、そのような更新を全て投機的プリフェッチ制御ユニ
ット124へ伝送する。ステップ5002において、1
又は複数の条件レジスタ・ビットの更新に応答して投機
的プリフェッチ制御ユニット124は、投機的プリフェ
ッチ・バッファ126の1又は複数のエントリの制御タ
グ206の可能性のある更新を実行する。ステップ50
02は、次の変更以外は図13に示したステップを同じ
である。すなわち、図13のステップ3000が、分岐
IDが範囲内にあるか否かを検査する代わりに、条件ビ
ットIDが範囲内にあるか否かを検査するべく変更され
る。この範囲は、第1の条件レジスタ・ビットIDから
始まるN個の連続する条件レジスタ・ビットIDからな
るように定められる。そして、図13のステップ300
8及び3018は、分岐結果を対応する投機タグと比較
する代わりに、条件レジスタ・ビット結果を対応する投
機タグと比較するべく変更される。
【0079】前述のように、投機的プリフェッチ・バッ
ファ200のエントリのライン・アドレスと投機タグと
が、コンパイル時情報から導出される。しかしながら、
ハードウェア・プリフェッチ及び投機実行が可能なマシ
ンでは、実行時情報からこれらのエントリを作成するこ
とができる。
【0080】当業者であれば、以上に開示された本発明
の内容の検討により本発明の他の実施形態は自明であろ
う。ここに開示された内容は例示であることを理解され
たい。
【0081】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0082】(1)主メモリに記憶された命令のシーケ
ンスが命令キャッシュへロードされそして該命令キャッ
シュから処理ユニットへ実行のために転送され、かつラ
イン置換アルゴリズムが該命令キャッシュを上書きする
ために用いられるコンピュータ処理システムにおいて、
該主メモリから該命令キャッシュへの命令のフェッチを
制御する方法であって、前記命令キャッシュから前記処
理ユニットへ転送される前記命令の1つがSTOUCH命令で
ある場合に、該処理ユニットにより実行可能な命令であ
って該STOUCH命令により識別された1又は複数の命令を
前記主メモリから該命令キャッシュの1又は複数のライ
ンへフェッチするステップと、前記STOUCH命令に関連す
る1又は複数の投機を導出するステップと、前記1又は
複数の投機の各々が有効と導出された場合に、前記STOU
CH命令により識別された1又は複数の命令を含む前記命
令キャッシュの1又は複数のラインが前記ライン置換ア
ルゴリズムの通常のオペレーションにおけるよりも多い
マシン・サイクルの間保持されるように該ライン置換ア
ルゴリズムを修整するステップと、前記1又は複数の投
機のいずれかが無効と導出された場合に、前記STOUCH命
令により識別された1又は複数の命令を含む前記命令キ
ャッシュの1又は複数のラインが前記ライン置換アルゴ
リズムの通常のオペレーションにおけるよりも少ないマ
シン・サイクルの間保持されるように該ライン置換アル
ゴリズムを修整するステップとを有するコンピュータ処
理システムにおける命令フェッチの制御方法。 (2)前記投機の1又は複数が未導出である場合に、前
記STOUCH命令により識別された1又は複数の命令を含む
前記命令キャッシュの1又は複数のラインが前記ライン
置換アルゴリズムの通常のオペレーションにおけるより
も多いマシン・サイクルの間保持されるように該ライン
置換アルゴリズムを修整するステップを有する上記
(1)に記載の方法。 (3)前記STOUCH命令が、前記主メモリに記憶された前
記命令のシーケンスの他の命令から該STOUCH命令を識別
するためのOPコード・フィールドと、前記STOUCH命令
により識別される前記1又は複数の命令の、前記主メモ
リ内におけるアドレスを指示するアドレス・フィールド
と、前記1又は複数の投機を特定する条件フィールドと
を有する上記(1)に記載の方法。 (4)前記STOUCH命令が、前記条件フィールドを解釈す
るモード・フィールドを有する上記(1)に記載の方
法。 (5)前記モード・フィールドが第1の値及び第2の値
のうちの1つであり、前記モード・フィールドが前記第
1の値であるときに、前記条件フィールドにより特定さ
れる前記投機の各々が真と判断される場合にのみ該投機
が有効と導出され、前記モード・フィールドが前記第2
の値であるときに、前記条件フィールドにより特定され
る前記投機の1又は複数が偽と判断される場合にのみ該
投機が有効と導出される上記(4)に記載の方法。 (6)前記STOUCH命令が32ビットからなり、第1の部
分がビット0〜5、第2の部分がビット6〜10、第3
の部分がビット11〜15、第4の部分がビット16〜
20、第5の部分がビット21〜30、そして第6の部
分がビット31である上記(3)に記載の方法。 (7)前記第1の部分が前記OPコード・フィールドを
構成する上記(6)に記載の方法。 (8)前記第3の部分及び前記第4の部分が前記アドレ
ス・フィールドを構成する上記(6)に記載の方法。 (9)前記第2の部分が前記条件フィールドを構成する
上記(6)に記載の方法。 (10)前記第2の部分のビット6が前記モード・フィ
ールドを構成する上記(6)に記載の方法。 (11)前記投機の各々が、前記STOUCH命令に続く分岐
命令の投機結果である上記(1)に記載の方法。 (12)前記STOUCH命令に関連する1又は複数の投機を
導出するステップが、最初に、前記STOUCH命令に関連す
る導出状態フラグを、該STOUCH命令により識別される前
記投機が未導出であることを示す値へセットするステッ
プと、前記STOUCH命令により識別された前記分岐の投機
結果の各々に対して、該分岐の投機結果を前記処理ユニ
ットからの分岐の導出結果と比較するステップと、前記
分岐の投機結果が前記分岐の導出結果と適合しない場合
に、前記STOUCH命令に関連する前記状態フラグを、該ST
OUCH命令により識別された該投機が無効と導出されたこ
とを示す値へセットするステップと、 前記分岐の投機
結果が前記処理ユニットからの対応する前記分岐の導出
結果と適合する場合に、前記STOUCH命令に関連する前記
状態フラグを、該STOUCH命令により識別された該投機が
有効と導出されたことを示す値へセットするステップと
を有する上記(11)に記載の方法。 (13)前記投機の各々が、前記STOUCH命令に続く命令
の完了時における条件レジスタ・フィールドの投機状態
を含む上記(1)に記載の方法。 (14)前記STOUCH命令に関連する1又は複数の投機を
導出するステップが、最初に、前記STOUCH命令に関連す
る導出状態フラグを、該STOUCH命令により識別される前
記投機が未導出であることを示す値へセットするステッ
プと、前記STOUCH命令により識別された前記条件レジス
タ・フィールドの投機状態の各々に対して、該投機状態
を該条件レジスタ・フィールドの実際の状態と比較する
ステップと、前記条件レジスタ・フィールドの前記投機
状態が該条件レジスタ・フィールドの実際の状態と適合
しない場合に、前記STOUCH命令に関連する前記状態フラ
グを、該STOUCH命令により識別された該投機が無効と導
出されたことを示す値へセットするステップと、前記条
件レジスタ・フィールドの前記投機状態が該条件レジス
タ・フィールドの実際の状態と適合する場合に、前記ST
OUCH命令に関連する前記状態フラグを、該STOUCH命令に
より識別された該投機が有効と導出されたことを示す値
へセットするステップとを有する上記(13)に記載の
方法。 (15)前記命令キャッシュが1又は複数のラインに関
連する組へと分割され、そして前記命令キャッシュの1
又は複数のラインが前記ライン置換アルゴリズムの通常
のオペレーションにおけるよりも多いマシン・サイクル
の間保持されるように該ライン置換アルゴリズムを修整
する前記ステップが、前記命令キャッシュに記憶される
べきミス・ラインを前記主メモリからフェッチするステ
ップと、前記命令キャッシュ内の前記ミス・ラインと関
連する前記組に含まれかつ置換のために推奨されるライ
ンを識別するために該組に対して前記ライン置換アルゴ
リズムを適用するステップと、前記置換のために推奨さ
れるラインが前記STOUCH命令により識別された命令を含
みかつ前記STOUCH命令に関連する前記投機が有効と導出
された場合に、前記ラインが以前に置換のために推奨さ
れた回数を示す該ラインに関連する寿命計数器を増分す
るステップと、前記寿命計数器が所定の第1のしきい値
を超えたとき、前記ラインを前記フェッチされたミス・
ラインで置換するステップと、前記寿命計数器が前記所
定の第1のしきい値を超えないとき、前記ラインに関連
する前記組の該ラインを除いたサブセットが空でなけれ
ば該サブセットに対して前記ライン置換アルゴリズムを
適用する前記ステップへ戻り、そして該サブセットが空
であれば該ラインを前記フェッチされたミス・ラインで
置換するステップとを有する上記(1)に記載の方法。 (16)前記命令キャッシュが1又は複数のラインに関
連する組へと分割され、そして前記命令キャッシュの1
又は複数のラインが前記ライン置換アルゴリズムの通常
のオペレーションにおけるよりも多いマシン・サイクル
の間保持されるように該ライン置換アルゴリズムを修整
する前記ステップが、前記命令キャッシュに記憶される
べきミス・ラインを前記主メモリからフェッチするステ
ップと、前記命令キャッシュ内の前記ミス・ラインと関
連する前記組に含まれかつ置換のために推奨されるライ
ンを識別するために該組に対して前記ライン置換アルゴ
リズムを適用するステップと、前記置換のために推奨さ
れるラインが前記STOUCH命令により識別された命令を含
みかつ前記STOUCH命令に関連する前記投機が未導出であ
る場合に、前記ラインが以前に置換のために推奨された
回数を示す該ラインに関連する寿命計数器を増分するス
テップと、前記寿命計数器が所定の第2のしきい値を超
えたとき、前記ラインを前記フェッチされたミス・ライ
ンで置換するステップと、前記寿命計数器が前記所定の
第2のしきい値を超えないとき、前記ラインに関連する
前記組の該ラインを除いたサブセットが空でなければ該
サブセットに対して前記ライン置換アルゴリズムを適用
する前記ステップへ戻り、そして該サブセットが空であ
れば該ラインを前記フェッチされたミス・ラインで置換
するステップとを有する上記(2)に記載の方法。 (17)前記STOUCH命令により識別された前記1又は複
数の命令を前記主メモリから前記命令キャッシュの1又
は複数のラインへフェッチするとき、該命令キャッシュ
の該1又は複数のラインの各々に関連するミス・ビット
をセットするステップを含んでおり、そして前記命令キ
ャッシュの1又は複数のラインが前記ライン置換アルゴ
リズムの通常のオペレーションにおけるよりも少ないマ
シン・サイクルの間保持されるように該ライン置換アル
ゴリズムを修整する前記ステップが、前記命令キャッシ
ュに記憶されるべきミス・ラインを前記主メモリからフ
ェッチするステップと、前記STOUCH命令に関連する前記
投機が無効と導出された場合に、前記関連するミス・ビ
ットをセットされた前記1又は複数のラインの範囲内に
ありかつ前記STOUCH命令により識別される命令を含む特
定のラインを識別するステップと、前記特定のラインを
前記フェッチされたミス・ラインで置換するステップと
を有する上記(1)に記載の方法。 (18)前記STOUCH命令が、コンパイル時に前記命令の
シーケンスへ挿入される上記(1)に記載の方法。 (19)1又は複数の命令に関連するデータが主メモリ
に記憶され、データ・キャッシュのラインへロードさ
れ、そして該データ・キャッシュから処理ユニットへ実
行のために転送されかつ該データ・キャッシュを上書き
するためにライン置換アルゴリズムが用いられるコンピ
ュータ処理システムにおいて、該主メモリから該データ
・キャッシュへのデータのフェッチを制御する方法であ
って、実行のために前記処理ユニットへロードされる命
令がSTOUCH命令である場合に、該STOUCH命令により識別
されたデータを前記主メモリから前記データ・キャッシ
ュの1又は複数のラインへフェッチするステップと、前
記STOUCH命令に関連する1又は複数の投機を導出するス
テップと、前記1又は複数の投機の各々が有効と導出さ
れた場合に、前記STOUCH命令により識別された前記デー
タを含む前記データ・キャッシュの1又は複数のライン
が前記ライン置換アルゴリズムの通常のオペレーション
におけるよりも多いマシン・サイクルの間保持されるよ
うに該ライン置換アルゴリズムを修整するステップと、
前記1又は複数の投機のいずれかが無効と導出された場
合に、前記STOUCH命令により識別された前記データを含
む前記データ・キャッシュの1又は複数のラインが前記
ライン置換アルゴリズムの通常のオペレーションにおけ
るよりも少ないマシン・サイクルの間保持されるように
該ライン置換アルゴリズムを修整するステップとを有す
るコンピュータ処理システムにおけるデータ・フェッチ
の制御方法。 (20)前記投機の1又は複数が未導出である場合に、
前記STOUCH命令により識別された前記データを含む前記
データ・キャッシュの1又は複数のラインが前記ライン
置換アルゴリズムの通常のオペレーションにおけるより
も多いマシン・サイクルの間保持されるように該ライン
置換アルゴリズムを修整するステップを有する上記(1
9)に記載の方法。 (21)前記STOUCH命令が、前記主メモリに記憶された
前記命令のシーケンスの他の命令から該STOUCH命令を識
別するためのOPコード・フィールドと、前記STOUCH命
令により識別される前記データの、前記主メモリ内にお
けるアドレスを指示するアドレス・フィールドと、前記
1又は複数の投機を特定する条件フィールドとを有する
上記(19)に記載の方法。 (22)前記STOUCH命令が、前記条件フィールドを解釈
するモード・フィールドを有する上記(21)に記載の
方法。 (23)前記モード・フィールドが第1の値及び第2の
値のうちの1つであり、前記モード・フィールドが前記
第1の値であるときに、前記条件フィールドにより特定
される前記投機の各々が真と判断される場合にのみ該投
機が有効と導出され、前記モード・フィールドが前記第
2の値であるときに、前記条件フィールドにより特定さ
れる前記投機の1又は複数が偽と判断される場合にのみ
該投機が有効と導出される上記(22)に記載の方法。 (24)前記STOUCH命令が32ビットからなり、第1の
部分がビット0〜5、第2の部分がビット6〜10、第
3の部分がビット11〜15、第4の部分がビット16
〜20、第5の部分がビット21〜30、そして第6の
部分がビット31である上記(21)に記載の方法。 (25)前記第1の部分が前記OPコード・フィールド
を構成する上記(24)に記載の方法。 (26)前記第3の部分及び前記第4の部分が前記アド
レス・フィールドを構成する上記(24)に記載の方
法。 (27)前記第2の部分が前記条件フィールドを構成す
る上記(24)に記載の方法。 (28)前記第2の部分のビット6が前記モード・フィ
ールドを構成する上記(24)に記載の方法。 (29)前記投機の各々が、前記STOUCH命令に続く分岐
命令の投機結果である上記(19)に記載の方法。 (30)前記STOUCH命令に関連する1又は複数の投機を
導出するステップが、最初に、前記STOUCH命令に関連す
る導出状態フラグを、該STOUCH命令により識別される前
記投機が未導出であることを示す値へセットするステッ
プと、前記STOUCH命令により識別された前記分岐の投機
結果の各々に対して、該分岐の投機結果を前記処理ユニ
ットからの分岐の導出結果と比較するステップと、前記
分岐の投機結果が前記分岐の導出結果と適合しない場合
に、前記STOUCH命令に関連する前記状態フラグを、該ST
OUCH命令により識別された該投機が無効と導出されたこ
とを示す値へセットするステップと、前記分岐の投機結
果が前記処理ユニットからの対応する前記分岐の導出結
果と適合する場合に、前記STOUCH命令に関連する前記状
態フラグを、該STOUCH命令により識別された該投機が有
効と導出されたことを示す値へセットするステップとを
有する上記(29)に記載の方法。 (31)前記投機の各々が、前記STOUCH命令に続く命令
の完了時における条件レジスタ・フィールドの投機状態
を含む上記(19)に記載の方法。 (32)前記STOUCH命令に関連する1又は複数の投機を
導出するステップが、最初に、前記STOUCH命令に関連す
る導出状態フラグを、該STOUCH命令により識別される前
記投機が未導出であることを示す値へセットするステッ
プと、前記STOUCH命令により識別された前記条件レジス
タ・フィールドの投機状態の各々に対して、該投機状態
を該条件レジスタ・フィールドの実際の状態と比較する
ステップと、前記条件レジスタ・フィールドの前記投機
状態が該条件レジスタ・フィールドの実際の状態と適合
しない場合に、前記STOUCH命令に関連する前記状態フラ
グを、該STOUCH命令により識別された該投機が無効と導
出されたことを示す値へセットするステップと、前記条
件レジスタ・フィールドの前記投機状態が該条件レジス
タ・フィールドの実際の状態と適合する場合に、前記ST
OUCH命令に関連する前記状態フラグを、該STOUCH命令に
より識別された該投機が有効と導出されたことを示す値
へセットするステップとを有する上記(31)に記載の
方法。 (33)前記データ・キャッシュが1又は複数のライン
に関連する組へと分割され、そして前記データ・キャッ
シュの1又は複数のラインが前記ライン置換アルゴリズ
ムの通常のオペレーションにおけるよりも多いマシン・
サイクルの間保持されるように該ライン置換アルゴリズ
ムを修整する前記ステップが、前記データ・キャッシュ
に記憶されるべきミス・ラインを前記主メモリからフェ
ッチするステップと、前記データ・キャッシュ内の前記
ミス・ラインと関連する前記組に含まれかつ置換のため
に推奨されるラインを識別するために該組に対して前記
ライン置換アルゴリズムを適用するステップと、前記置
換のために推奨されるラインが前記STOUCH命令により識
別されたデータを含みかつ前記STOUCH命令に関連する前
記投機が有効と導出された場合に、前記ラインが以前に
置換のために推奨された回数を示す該ラインに関連する
寿命計数器を増分するステップと、前記寿命計数器が所
定の第1のしきい値を超えたとき、前記ラインを前記フ
ェッチされたミス・ラインで置換するステップと、前記
寿命計数器が前記所定の第1のしきい値を超えないと
き、前記ラインに関連する前記組の該ラインを除いたサ
ブセットが空でなければ該サブセットに対して前記ライ
ン置換アルゴリズムを適用する前記ステップへ戻り、そ
して該サブセットが空であれば該ラインを前記フェッチ
されたミス・ラインで置換するステップとを有する上記
(19)に記載の方法。 (34)前記データ・キャッシュが1又は複数のライン
に関連する組へと分割され、そして前記データ・キャッ
シュの1又は複数のラインが前記ライン置換アルゴリズ
ムの通常のオペレーションにおけるよりも多いマシン・
サイクルの間保持されるように該ライン置換アルゴリズ
ムを修整する前記ステップが、前記データ・キャッシュ
に記憶されるべきミス・ラインを前記主メモリからフェ
ッチするステップと、前記データ・キャッシュ内の前記
ミス・ラインと関連する前記組に含まれかつ置換のため
に推奨されるラインを識別するために該組に対して前記
ライン置換アルゴリズムを適用するステップと、前記置
換のために推奨されるラインが前記STOUCH命令により識
別されたデータを含みかつ前記STOUCH命令に関連する前
記投機が未導出である場合に、前記ラインが以前に置換
のために推奨された回数を示す該ラインに関連する寿命
計数器を増分するステップと、前記寿命計数器が所定の
第2のしきい値を超えたとき、前記ラインを前記フェッ
チされたミス・ラインで置換するステップと、前記寿命
計数器が前記所定の第2のしきい値を超えないとき、前
記ラインに関連する前記組の該ラインを除いたサブセッ
トが空でなければ該サブセットに対して前記ライン置換
アルゴリズムを適用する前記ステップへ戻り、そして該
サブセットが空であれば該ラインを前記フェッチされた
ミス・ラインで置換するステップとを有する上記(2
0)に記載の方法。 (35)前記STOUCH命令により識別された前記データを
前記主メモリから前記データ・キャッシュの1又は複数
のラインへフェッチするとき、該データ・キャッシュの
該1又は複数のラインの各々に関連するミス・ビットを
セットするステップを含んでおり、そして前記データ・
キャッシュの1又は複数のラインが前記ライン置換アル
ゴリズムの通常のオペレーションにおけるよりも少ない
マシン・サイクルの間保持されるように該ライン置換ア
ルゴリズムを修整する前記ステップが、前記データ・キ
ャッシュに記憶されるべきミス・ラインを前記主メモリ
からフェッチするステップと、前記STOUCH命令に関連す
る前記投機が無効と導出された場合に、前記関連するミ
ス・ビットをセットされた前記1又は複数のラインの範
囲内にありかつ前記STOUCH命令により識別されるデータ
を含む特定のラインを識別するステップと、前記特定の
ラインを前記フェッチされたミス・ラインで置換するス
テップとを有する上記(19)に記載の方法。 (36)前記STOUCH命令が、コンパイル時に前記命令の
シーケンスへ挿入される上記(19)に記載の方法。 (37)命令のシーケンス及びこれらの命令に関連する
データ値を記憶する主メモリと、前記主メモリに接続さ
れ、処理ユニットにより実行される1又は複数の命令を
各々記憶する複数のラインを備え、そして該ラインを上
書きするためにライン置換アルゴリズムを用いる命令キ
ャッシュと、前記主メモリから前記命令キャッシュへ1
又は複数の命令をフェッチする命令フェッチ・ユニット
と、実行のために前記処理ユニットへロードされる他の
命令からSTOUCH命令を認知し、そして該STOUCH命令を認
知したとき、該STOUCH命令により識別された該処理ユニ
ットにより実行可能な1又は複数の命令を前記主メモリ
から前記命令キャッシュの1又は複数のラインへフェッ
チするべく前記命令フェッチ・ユニットを制御する手段
と、前記STOUCH命令に関連する1又は複数の投機を導出
するSTOUCH評価論理とを有し、上記STOUCH評価論理が、
前記投機の各々が有効と導出された場合に、前記STOUCH
命令により識別された前記1又は複数の命令を含む前記
命令キャッシュの1又は複数のラインが、前記ライン置
換アルゴリズムの通常のオペレーションよりも多いマシ
ン・サイクル数の間保持されるように、該ライン置換ア
ルゴリズムを修整し、上記STOUCH評価論理が、前記投機
のいずれかが無効と導出された場合に、前記STOUCH命令
により識別された前記1又は複数の命令を含む前記命令
キャッシュの1又は複数のラインが、前記ライン置換ア
ルゴリズムの通常のオペレーションよりも少ないマシン
・サイクル数の間保持されるように、該ライン置換アル
ゴリズムを修整するデータ処理システム。 (38)1又は複数の前記投機が未導出の場合に、前記
STOUCH評価論理が、前記STOUCH命令により識別された前
記1又は複数の命令を含む前記命令キャッシュの1又は
複数のラインが、前記ライン置換アルゴリズムの通常の
オペレーションよりも多いマシン・サイクル数の間保持
されるように、該ライン置換アルゴリズムを修整する上
記(37)に記載のデータ処理システム。 (39)前記STOUCH命令が、前記主メモリに記憶された
前記命令のシーケンスの他の命令から該STOUCH命令を識
別するためのOPコード・フィールドと、前記STOUCH命
令により識別される前記1又は複数の命令の、前記主メ
モリ内におけるアドレスを指示するアドレス・フィール
ドと、前記1又は複数の投機を特定する条件フィールド
とを有する上記(37)に記載のデータ処理システム。 (40)前記STOUCH評価論理が前記STOUCH命令に対応す
るエントリを記憶するバッファを含みかつ該エントリを
利用することにより該STOUCH命令を評価し、そして該エ
ントリが、前記STOUCH命令の前記アドレス・フィールド
により識別される前記1又は複数の命令を含む前記命令
キャッシュの1又は複数のラインを指示するライン・タ
グと、前記STOUCH命令の前記条件フィールドにより特定
される前記投機を特定する投機タグとを少なくとも含む
上記(39)に記載のデータ処理システム。 (41)前記投機タグが、該投機タグによりエンコード
される前記投機を解釈するために前記STOUCH評価論理に
より用いられるモード・ビットを含む上記(40)に記
載のデータ処理システム。 (42)前記モード・ビットが第1の値及び第2の値の
うちの1つであり、前記モード・ビットが前記第1の値
であるときに、前記条件フィールドにより特定される前
記投機の各々が真と判断される場合にのみ前記STOUCH評
価論理が該投機を有効と導出し、前記モード・ビットが
前記第2の値であるときに、前記条件フィールドにより
特定される前記投機の1又は複数が偽と判断される場合
にのみ前記STOUCH評価論理が該投機を有効と導出する上
記(41)に記載のデータ処理システム。 (43)前記投機の各々が、前記STOUCH命令に続く分岐
命令の投機結果を含む上記(40)に記載のデータ処理
システム。 (44)前記STOUCH命令に対応する前記バッファの前記
エントリが、少なくとも導出状態フィールドを含む制御
タグを有し、そして該導出状態フィールドは、該エント
リの前記投機タグによりエンコードされる投機が未導
出、有効導出、及び無効導出のうちのいずれであるかを
示す上記(43)に記載のデータ処理システム。 (45)前記STOUCH評価論理が制御論理を含み、該制御
論理が、最初に、前記STOUCH命令に関連する前記バッフ
ァ内に記憶された前記エントリの前記導出状態フィール
ドを、前記投機タグによりエンコードされる前記投機が
未導出であることを示す値へセットし、前記STOUCH命令
により識別された前記分岐の投機結果の各々に対して、
該分岐の投機結果を前記処理ユニットからの分岐の導出
結果と比較し、前記分岐の投機結果が前記分岐の導出結
果と適合しない場合に、前記STOUCH命令に関連する前記
導出状態フィールドを、前記投機タグによりエンコード
された前記投機が無効と導出されたことを示す値へセッ
トし、前記分岐の投機結果が前記処理ユニットからの対
応する前記分岐の導出結果と適合する場合に、前記STOU
CH命令に関連する前記導出状態フィールドを、前記投機
タグによりエンコードされた前記投機が有効と導出され
たことを示す値へセットする上記(44)に記載の方
法。 (46)前記投機の各々が、前記STOUCH命令に続く命令
の完了時における条件レジスタ・フィールドの投機状態
を含む上記(40)に記載のデータ処理システム。 (47)前記STOUCH命令に対応する前記バッファの前記
エントリが、少なくとも導出状態フィールドを含む制御
タグを有し、そして該導出状態フィールドは、該エント
リの前記投機タグによりエンコードされる投機が未導
出、有効導出、及び無効導出のうちのいずれであるかを
示す上記(46)に記載のデータ処理システム。 (48)前記STOUCH評価論理が制御論理を含み、該制御
論理が、前記STOUCH命令に関連する前記エントリの導出
状態フィールドを、該エントリの投機タグによりエンコ
ードされる前記投機が未導出であることを示す値へセッ
トし、前記エントリの前記投機タグによりエンコードさ
れた前記条件レジスタ・フィールドの投機状態の各々に
対して、該投機状態を該条件レジスタ・フィールドの実
際の状態と比較し、前記条件レジスタ・フィールドの前
記投機状態が該条件レジスタ・フィールドの実際の状態
と適合しない場合に、前記エントリの前記制御タグの前
記導出状態フィールドを、該エントリの該投機タグによ
りエンコードされた該投機が無効と導出されたことを示
す値へセットし、前記条件レジスタ・フィールドの前記
投機状態が該条件レジスタ・フィールドの実際の状態と
適合する場合に、前記エントリの前記制御タグの前記導
出状態フィールドを、該エントリの該投機タグによりエ
ンコードされた該投機が有効と導出されたことを示す値
へセットする上記(47)に記載のデータ処理システ
ム。 (49)前記STOUCH命令が、コンパイル時に前記命令の
シーケンスへ挿入される上記(37)に記載のデータ処
理システム。 (50)命令のシーケンス及びこれらの命令に関連する
データ値を記憶する主メモリと、前記主メモリに接続さ
れ、前記主メモリに記憶された前記命令を実行する際に
処理ユニットにより利用される1又は複数のデータ値を
各々記憶する複数のラインを備え、そして該ラインを上
書きするためにライン置換アルゴリズムを用いるデータ
・キャッシュと、前記主メモリから前記データ・キャッ
シュへ1又は複数のデータ値をフェッチするデータ・フ
ェッチ・ユニットと、実行のために前記処理ユニットへ
ロードされる他の命令からSTOUCH命令を認知し、そして
該STOUCH命令を認知したとき、該STOUCH命令により識別
された1又は複数のデータ値を前記主メモリから前記デ
ータ・キャッシュの1又は複数のラインへフェッチする
べく前記データ・フェッチ・ユニットを制御する手段
と、前記STOUCH命令に関連する1又は複数の投機を導出
するSTOUCH評価論理とを有し、上記STOUCH評価論理が、
前記投機の各々が有効と導出された場合に、前記STOUCH
命令により識別された前記1又は複数のデータ値を含む
前記データ・キャッシュの1又は複数のラインが、前記
ライン置換アルゴリズムの通常のオペレーションよりも
多いマシン・サイクル数の間保持されるように、該ライ
ン置換アルゴリズムを修整し、上記STOUCH評価論理が、
前記投機のいずれかが無効と導出された場合に、前記ST
OUCH命令により識別された前記1又は複数のデータ値を
含む前記データ・キャッシュの1又は複数のラインが、
前記ライン置換アルゴリズムの通常のオペレーションよ
りも少ないマシン・サイクル数の間保持されるように、
該ライン置換アルゴリズムを修整するデータ処理システ
ム。 (51)1又は複数の前記投機が未導出の場合に、前記
STOUCH評価論理が、前記STOUCH命令により識別された前
記1又は複数のデータ値を含む前記データ・キャッシュ
の1又は複数のラインが、前記ライン置換アルゴリズム
の通常のオペレーションよりも多いマシン・サイクル数
の間保持されるように、該ライン置換アルゴリズムを修
整する上記(50)に記載のデータ処理システム。 (52)前記STOUCH命令が、前記主メモリに記憶された
前記命令のシーケンスの他の命令から該STOUCH命令を識
別するためのOPコード・フィールドと、前記STOUCH命
令により識別される前記1又は複数のデータ値の、前記
主メモリ内におけるアドレスを指示するアドレス・フィ
ールドと、前記1又は複数の投機を特定する条件フィー
ルドとを有する上記(50)に記載のデータ処理システ
ム。 (53)前記STOUCH評価論理が前記STOUCH命令に対応す
るエントリを記憶するバッファを含みかつ該エントリを
利用することにより該STOUCH命令を評価し、そして該エ
ントリが、前記STOUCH命令の前記アドレス・フィールド
により識別される前記1又は複数のデータ値を含む前記
データ・キャッシュの1又は複数のラインを指示するラ
イン・タグと、前記STOUCH命令の前記条件フィールドに
より特定される前記投機を特定する投機タグとを少なく
とも含む上記(52)に記載のデータ処理システム。 (54)前記投機タグが、該投機タグによりエンコード
される前記投機を解釈するために前記STOUCH評価論理に
より用いられるモード・ビットを含む上記(53)に記
載のデータ処理システム。 (55)前記モード・ビットが第1の値及び第2の値の
うちの1つであり、前記モード・ビットが前記第1の値
であるときに、前記条件フィールドにより特定される前
記投機の各々が真と判断される場合にのみ前記STOUCH評
価論理が該投機を有効と導出し、前記モード・ビットが
前記第2の値であるときに、前記条件フィールドにより
特定される前記投機の1又は複数が偽と判断される場合
にのみ前記STOUCH評価論理が該投機を有効と導出する上
記(54)に記載のデータ処理システム。 (56)前記投機の各々が、前記STOUCH命令に続く分岐
命令の投機結果を含む上記(53)に記載のデータ処理
システム。 (57)前記STOUCH命令に対応する前記バッファの前記
エントリが、少なくとも導出状態フィールドを含む制御
タグを有し、該導出状態フィールドは、該エントリの前
記投機タグによりエンコードされる投機が、未導出、有
効導出、及び無効導出のうちのいずれであるかを示す上
記(56)に記載のデータ処理システム。 (58)前記STOUCH評価論理が制御論理を含み、該制御
論理が、最初に、前記STOUCH命令に関連する前記バッフ
ァ内に記憶された前記エントリの前記導出状態フィール
ドを、前記投機タグによりエンコードされる前記投機が
未導出であることを示す値へセットし、前記STOUCH命令
により識別された前記分岐の投機結果の各々に対して、
該分岐の投機結果を前記処理ユニットからの分岐の導出
結果と比較し、前記分岐の投機結果が前記分岐の導出結
果と適合しない場合に、前記STOUCH命令に関連する前記
導出状態フィールドを、前記投機タグによりエンコード
された前記投機が無効と導出されたことを示す値へセッ
トし、前記分岐の投機結果が前記処理ユニットからの対
応する前記分岐の導出結果と適合する場合に、前記STOU
CH命令に関連する前記導出状態フィールドを、前記投機
タグによりエンコードされた前記投機が有効と導出され
たことを示す値へセットする上記(57)に記載の方
法。 (59)前記投機の各々が、前記STOUCH命令に続く命令
の完了時における条件レジスタ・フィールドの投機状態
を含む上記(53)に記載のデータ処理システム。 (60)前記STOUCH命令に対応する前記バッファの前記
エントリが、少なくとも導出状態フィールドを含む制御
タグを有し、そして該導出状態フィールドは、該エント
リの前記投機タグによりエンコードされる投機が未導
出、有効導出、及び無効導出のうちのいずれであるかを
示す上記(59)に記載のデータ処理システム。 (61)前記STOUCH評価論理が制御論理を含み、該制御
論理が、前記STOUCH命令に関連する前記エントリの導出
状態フィールドを、該エントリの投機タグによりエンコ
ードされる前記投機が未導出であることを示す値へセッ
トし、前記エントリの前記投機タグによりエンコードさ
れた前記条件レジスタ・フィールドの投機状態の各々に
対して、該投機状態を該条件レジスタ・フィールドの実
際の状態と比較し、前記条件レジスタ・フィールドの前
記投機状態が該条件レジスタ・フィールドの実際の状態
と適合しない場合に、前記エントリの前記制御タグの前
記導出状態フィールドを、該エントリの該投機タグによ
りエンコードされた該投機が無効と導出されたことを示
す値へセットし、前記条件レジスタ・フィールドの前記
投機状態が該条件レジスタ・フィールドの実際の状態と
適合する場合に、前記エントリの前記制御タグの前記導
出状態フィールドを、該エントリの該投機タグによりエ
ンコードされた該投機が有効と導出されたことを示す値
へセットする上記(60)に記載のデータ処理システ
ム。 (62)前記STOUCH命令が、コンパイル時に前記命令の
シーケンスへ挿入される上記(50)に記載のデータ処
理システム。
【図面の簡単な説明】
【図1】本発明による命令及びデータのプリフェッチの
ためのSTOUCH命令を利用するプログラムの制御流れ図で
ある。
【図2】本発明のSTOUCH命令のフォーマットを示す図で
ある。
【図3】本発明によるSTOUCH命令を実行するコンピュー
タ処理システムの機能ブロック図である。
【図4】図3の投機的プリフェッチ・バッファのエント
リのフォーマットを示す図である。
【図5】図4のエントリの投機タグのサブフィールドを
示す図である。
【図6】図4のエントリの制御タグのサブフィールドを
示す図である。
【図7】本発明によるSTOUCH命令を実行する図3のコン
ピュータ処理システムのオペレーションを示す流れ図で
ある。
【図8】図7の「フェッチ・ステップ」に関連するサブ
ステップを示す図である。
【図9】図7の「分岐及び条件レジスタ命令処理ステッ
プ」に関連するサブステップを示す図である。
【図10】図7の「STOUCH命令処理ステップ」に関連す
るサブステップを示す図である。
【図11】図7の「実行ステップ」に関連するサブステ
ップを示す図である。
【図12】図8、図10、及び図11の「ミス・ライン
のフェッチ・ステップ」に関連するサブステップを示す
図である。
【図13】図9の「制御タグ更新ステップ」に関連する
サブステップを示す図である。
【図14】図10の「投機的プリフェッチ・バッファの
エントリ作成ステップ」に関連するサブステップを示す
図である。
【図15】図14の「制御タグ初期化ステップ」に関連
するサブステップを示す図である。
【図16】本発明の別の実施形態における図7の「分岐
及び条件レジスタ命令処理ステップ」に関連するサブス
テップを示す図である。
【符号の説明】
11 STOUCH命令 12 OPコード・フィールド 13 アドレス・フィールド 14 モード・ビット 15-1、...15-N 条件フィールド 100 データ処理システム 102 主メモリ 104 命令キャッシュ 106 データ・キャッシュ 108 命令フェッチ・ユニット 110 デコード・ユニット 112 分岐ユニット 114 ディスパッチ・ユニット 116 機能ユニット 118 データ・フェッチ・ユニット 120 レジスタ・ファイル 122 完了ユニット 124 投機的プリフェッチ制御ユニット 126 投機的プリフェッチ・バッファ(エントリ) 200 投機的プリフェッチ・バッファ 202 ライン・タグ 204 投機タグ 206 制御タグ

Claims (62)

    【特許請求の範囲】
  1. 【請求項1】主メモリに記憶された命令のシーケンスが
    命令キャッシュへロードされそして該命令キャッシュか
    ら処理ユニットへ実行のために転送され、かつライン置
    換アルゴリズムが該命令キャッシュを上書きするために
    用いられるコンピュータ処理システムにおいて、該主メ
    モリから該命令キャッシュへの命令のフェッチを制御す
    る方法であって、 前記命令キャッシュから前記処理ユニットへ転送される
    前記命令の1つがSTOUCH命令である場合に、該処理ユニ
    ットにより実行可能な命令であって該STOUCH命令により
    識別された1又は複数の命令を前記主メモリから該命令
    キャッシュの1又は複数のラインへフェッチするステッ
    プと、 前記STOUCH命令に関連する1又は複数の投機を導出する
    ステップと、 前記1又は複数の投機の各々が有効と導出された場合
    に、前記STOUCH命令により識別された1又は複数の命令
    を含む前記命令キャッシュの1又は複数のラインが前記
    ライン置換アルゴリズムの通常のオペレーションにおけ
    るよりも多いマシン・サイクルの間保持されるように該
    ライン置換アルゴリズムを修整するステップと、 前記1又は複数の投機のいずれかが無効と導出された場
    合に、前記STOUCH命令により識別された1又は複数の命
    令を含む前記命令キャッシュの1又は複数のラインが前
    記ライン置換アルゴリズムの通常のオペレーションにお
    けるよりも少ないマシン・サイクルの間保持されるよう
    に該ライン置換アルゴリズムを修整するステップとを有
    するコンピュータ処理システムにおける命令フェッチの
    制御方法。
  2. 【請求項2】前記投機の1又は複数が未導出である場合
    に、前記STOUCH命令により識別された1又は複数の命令
    を含む前記命令キャッシュの1又は複数のラインが前記
    ライン置換アルゴリズムの通常のオペレーションにおけ
    るよりも多いマシン・サイクルの間保持されるように該
    ライン置換アルゴリズムを修整するステップを有する請
    求項1に記載の方法。
  3. 【請求項3】前記STOUCH命令が、 前記主メモリに記憶された前記命令のシーケンスの他の
    命令から該STOUCH命令を識別するためのOPコード・フ
    ィールドと、 前記STOUCH命令により識別される前記1又は複数の命令
    の、前記主メモリ内におけるアドレスを指示するアドレ
    ス・フィールドと、 前記1又は複数の投機を特定する条件フィールドとを有
    する請求項1に記載の方法。
  4. 【請求項4】前記STOUCH命令が、前記条件フィールドを
    解釈するモード・フィールドを有する請求項1に記載の
    方法。
  5. 【請求項5】前記モード・フィールドが第1の値及び第
    2の値のうちの1つであり、 前記モード・フィールドが前記第1の値であるときに、
    前記条件フィールドにより特定される前記投機の各々が
    真と判断される場合にのみ該投機が有効と導出され、 前記モード・フィールドが前記第2の値であるときに、
    前記条件フィールドにより特定される前記投機の1又は
    複数が偽と判断される場合にのみ該投機が有効と導出さ
    れる請求項4に記載の方法。
  6. 【請求項6】前記STOUCH命令が32ビットからなり、第
    1の部分がビット0〜5、第2の部分がビット6〜1
    0、第3の部分がビット11〜15、第4の部分がビッ
    ト16〜20、第5の部分がビット21〜30、そして
    第6の部分がビット31である請求項3に記載の方法。
  7. 【請求項7】前記第1の部分が前記OPコード・フィー
    ルドを構成する請求項6に記載の方法。
  8. 【請求項8】前記第3の部分及び前記第4の部分が前記
    アドレス・フィールドを構成する請求項6に記載の方
    法。
  9. 【請求項9】前記第2の部分が前記条件フィールドを構
    成する請求項6に記載の方法。
  10. 【請求項10】前記第2の部分のビット6が前記モード
    ・フィールドを構成する請求項6に記載の方法。
  11. 【請求項11】前記投機の各々が、前記STOUCH命令に続
    く分岐命令の投機結果である請求項1に記載の方法。
  12. 【請求項12】前記STOUCH命令に関連する1又は複数の
    投機を導出するステップが、 最初に、前記STOUCH命令に関連する導出状態フラグを、
    該STOUCH命令により識別される前記投機が未導出である
    ことを示す値へセットするステップと、 前記STOUCH命令により識別された前記分岐の投機結果の
    各々に対して、該分岐の投機結果を前記処理ユニットか
    らの分岐の導出結果と比較するステップと、 前記分岐の投機結果が前記分岐の導出結果と適合しない
    場合に、前記STOUCH命令に関連する前記状態フラグを、
    該STOUCH命令により識別された該投機が無効と導出され
    たことを示す値へセットするステップと、 前記分岐の投機結果が前記処理ユニットからの対応する
    前記分岐の導出結果と適合する場合に、前記STOUCH命令
    に関連する前記状態フラグを、該STOUCH命令により識別
    された該投機が有効と導出されたことを示す値へセット
    するステップとを有する請求項11に記載の方法。
  13. 【請求項13】前記投機の各々が、前記STOUCH命令に続
    く命令の完了時における条件レジスタ・フィールドの投
    機状態を含む請求項1に記載の方法。
  14. 【請求項14】前記STOUCH命令に関連する1又は複数の
    投機を導出するステップが、 最初に、前記STOUCH命令に関連する導出状態フラグを、
    該STOUCH命令により識別される前記投機が未導出である
    ことを示す値へセットするステップと、 前記STOUCH命令により識別された前記条件レジスタ・フ
    ィールドの投機状態の各々に対して、該投機状態を該条
    件レジスタ・フィールドの実際の状態と比較するステッ
    プと、 前記条件レジスタ・フィールドの前記投機状態が該条件
    レジスタ・フィールドの実際の状態と適合しない場合
    に、前記STOUCH命令に関連する前記状態フラグを、該ST
    OUCH命令により識別された該投機が無効と導出されたこ
    とを示す値へセットするステップと、 前記条件レジスタ・フィールドの前記投機状態が該条件
    レジスタ・フィールドの実際の状態と適合する場合に、
    前記STOUCH命令に関連する前記状態フラグを、該STOUCH
    命令により識別された該投機が有効と導出されたことを
    示す値へセットするステップとを有する請求項13に記
    載の方法。
  15. 【請求項15】前記命令キャッシュが1又は複数のライ
    ンに関連する組へと分割され、そして前記命令キャッシ
    ュの1又は複数のラインが前記ライン置換アルゴリズム
    の通常のオペレーションにおけるよりも多いマシン・サ
    イクルの間保持されるように該ライン置換アルゴリズム
    を修整する前記ステップが、 前記命令キャッシュに記憶されるべきミス・ラインを前
    記主メモリからフェッチするステップと、 前記命令キャッシュ内の前記ミス・ラインと関連する前
    記組に含まれかつ置換のために推奨されるラインを識別
    するために該組に対して前記ライン置換アルゴリズムを
    適用するステップと、 前記置換のために推奨されるラインが前記STOUCH命令に
    より識別された命令を含みかつ前記STOUCH命令に関連す
    る前記投機が有効と導出された場合に、 前記ラインが以前に置換のために推奨された回数を示す
    該ラインに関連する寿命計数器を増分するステップと、 前記寿命計数器が所定の第1のしきい値を超えたとき、
    前記ラインを前記フェッチされたミス・ラインで置換す
    るステップと、 前記寿命計数器が前記所定の第1のしきい値を超えない
    とき、前記ラインに関連する前記組の該ラインを除いた
    サブセットが空でなければ該サブセットに対して前記ラ
    イン置換アルゴリズムを適用する前記ステップへ戻り、
    そして該サブセットが空であれば該ラインを前記フェッ
    チされたミス・ラインで置換するステップとを有する請
    求項1に記載の方法。
  16. 【請求項16】前記命令キャッシュが1又は複数のライ
    ンに関連する組へと分割され、そして前記命令キャッシ
    ュの1又は複数のラインが前記ライン置換アルゴリズム
    の通常のオペレーションにおけるよりも多いマシン・サ
    イクルの間保持されるように該ライン置換アルゴリズム
    を修整する前記ステップが、 前記命令キャッシュに記憶されるべきミス・ラインを前
    記主メモリからフェッチするステップと、 前記命令キャッシュ内の前記ミス・ラインと関連する前
    記組に含まれかつ置換のために推奨されるラインを識別
    するために該組に対して前記ライン置換アルゴリズムを
    適用するステップと、 前記置換のために推奨されるラインが前記STOUCH命令に
    より識別された命令を含みかつ前記STOUCH命令に関連す
    る前記投機が未導出である場合に、 前記ラインが以前に置換のために推奨された回数を示す
    該ラインに関連する寿命計数器を増分するステップと、 前記寿命計数器が所定の第2のしきい値を超えたとき、
    前記ラインを前記フェッチされたミス・ラインで置換す
    るステップと、 前記寿命計数器が前記所定の第2のしきい値を超えない
    とき、前記ラインに関連する前記組の該ラインを除いた
    サブセットが空でなければ該サブセットに対して前記ラ
    イン置換アルゴリズムを適用する前記ステップへ戻り、
    そして該サブセットが空であれば該ラインを前記フェッ
    チされたミス・ラインで置換するステップとを有する請
    求項2に記載の方法。
  17. 【請求項17】前記STOUCH命令により識別された前記1
    又は複数の命令を前記主メモリから前記命令キャッシュ
    の1又は複数のラインへフェッチするとき、該命令キャ
    ッシュの該1又は複数のラインの各々に関連するミス・
    ビットをセットするステップを含んでおり、そして前記
    命令キャッシュの1又は複数のラインが前記ライン置換
    アルゴリズムの通常のオペレーションにおけるよりも少
    ないマシン・サイクルの間保持されるように該ライン置
    換アルゴリズムを修整する前記ステップが、 前記命令キャッシュに記憶されるべきミス・ラインを前
    記主メモリからフェッチするステップと、 前記STOUCH命令に関連する前記投機が無効と導出された
    場合に、前記関連するミス・ビットをセットされた前記
    1又は複数のラインの範囲内にありかつ前記STOUCH命令
    により識別される命令を含む特定のラインを識別するス
    テップと、 前記特定のラインを前記フェッチされたミス・ラインで
    置換するステップとを有する請求項1に記載の方法。
  18. 【請求項18】前記STOUCH命令が、コンパイル時に前記
    命令のシーケンスへ挿入される請求項1に記載の方法。
  19. 【請求項19】1又は複数の命令に関連するデータが主
    メモリに記憶され、データ・キャッシュのラインへロー
    ドされ、そして該データ・キャッシュから処理ユニット
    へ実行のために転送されかつ該データ・キャッシュを上
    書きするためにライン置換アルゴリズムが用いられるコ
    ンピュータ処理システムにおいて、該主メモリから該デ
    ータ・キャッシュへのデータのフェッチを制御する方法
    であって、 実行のために前記処理ユニットへロードされる命令がST
    OUCH命令である場合に、該STOUCH命令により識別された
    データを前記主メモリから前記データ・キャッシュの1
    又は複数のラインへフェッチするステップと、 前記STOUCH命令に関連する1又は複数の投機を導出する
    ステップと、 前記1又は複数の投機の各々が有効と導出された場合
    に、前記STOUCH命令により識別された前記データを含む
    前記データ・キャッシュの1又は複数のラインが前記ラ
    イン置換アルゴリズムの通常のオペレーションにおける
    よりも多いマシン・サイクルの間保持されるように該ラ
    イン置換アルゴリズムを修整するステップと、 前記1又は複数の投機のいずれかが無効と導出された場
    合に、前記STOUCH命令により識別された前記データを含
    む前記データ・キャッシュの1又は複数のラインが前記
    ライン置換アルゴリズムの通常のオペレーションにおけ
    るよりも少ないマシン・サイクルの間保持されるように
    該ライン置換アルゴリズムを修整するステップとを有す
    るコンピュータ処理システムにおけるデータ・フェッチ
    の制御方法。
  20. 【請求項20】前記投機の1又は複数が未導出である場
    合に、前記STOUCH命令により識別された前記データを含
    む前記データ・キャッシュの1又は複数のラインが前記
    ライン置換アルゴリズムの通常のオペレーションにおけ
    るよりも多いマシン・サイクルの間保持されるように該
    ライン置換アルゴリズムを修整するステップを有する請
    求項19に記載の方法。
  21. 【請求項21】前記STOUCH命令が、 前記主メモリに記憶された前記命令のシーケンスの他の
    命令から該STOUCH命令を識別するためのOPコード・フ
    ィールドと、 前記STOUCH命令により識別される前記データの、前記主
    メモリ内におけるアドレスを指示するアドレス・フィー
    ルドと、 前記1又は複数の投機を特定する条件フィールドとを有
    する請求項19に記載の方法。
  22. 【請求項22】前記STOUCH命令が、前記条件フィールド
    を解釈するモード・フィールドを有する請求項21に記
    載の方法。
  23. 【請求項23】前記モード・フィールドが第1の値及び
    第2の値のうちの1つであり、 前記モード・フィールドが前記第1の値であるときに、
    前記条件フィールドにより特定される前記投機の各々が
    真と判断される場合にのみ該投機が有効と導出され、 前記モード・フィールドが前記第2の値であるときに、
    前記条件フィールドにより特定される前記投機の1又は
    複数が偽と判断される場合にのみ該投機が有効と導出さ
    れる請求項22に記載の方法。
  24. 【請求項24】前記STOUCH命令が32ビットからなり、
    第1の部分がビット0〜5、第2の部分がビット6〜1
    0、第3の部分がビット11〜15、第4の部分がビッ
    ト16〜20、第5の部分がビット21〜30、そして
    第6の部分がビット31である請求項21に記載の方
    法。
  25. 【請求項25】前記第1の部分が前記OPコード・フィ
    ールドを構成する請求項24に記載の方法。
  26. 【請求項26】前記第3の部分及び前記第4の部分が前
    記アドレス・フィールドを構成する請求項24に記載の
    方法。
  27. 【請求項27】前記第2の部分が前記条件フィールドを
    構成する請求項24に記載の方法。
  28. 【請求項28】前記第2の部分のビット6が前記モード
    ・フィールドを構成する請求項24に記載の方法。
  29. 【請求項29】前記投機の各々が、前記STOUCH命令に続
    く分岐命令の投機結果である請求項19に記載の方法。
  30. 【請求項30】前記STOUCH命令に関連する1又は複数の
    投機を導出するステップが、 最初に、前記STOUCH命令に関連する導出状態フラグを、
    該STOUCH命令により識別される前記投機が未導出である
    ことを示す値へセットするステップと、 前記STOUCH命令により識別された前記分岐の投機結果の
    各々に対して、該分岐の投機結果を前記処理ユニットか
    らの分岐の導出結果と比較するステップと、 前記分岐の投機結果が前記分岐の導出結果と適合しない
    場合に、前記STOUCH命令に関連する前記状態フラグを、
    該STOUCH命令により識別された該投機が無効と導出され
    たことを示す値へセットするステップと、 前記分岐の投機結果が前記処理ユニットからの対応する
    前記分岐の導出結果と適合する場合に、前記STOUCH命令
    に関連する前記状態フラグを、該STOUCH命令により識別
    された該投機が有効と導出されたことを示す値へセット
    するステップとを有する請求項29に記載の方法。
  31. 【請求項31】前記投機の各々が、前記STOUCH命令に続
    く命令の完了時における条件レジスタ・フィールドの投
    機状態を含む請求項19に記載の方法。
  32. 【請求項32】前記STOUCH命令に関連する1又は複数の
    投機を導出するステップが、 最初に、前記STOUCH命令に関連する導出状態フラグを、
    該STOUCH命令により識別される前記投機が未導出である
    ことを示す値へセットするステップと、 前記STOUCH命令により識別された前記条件レジスタ・フ
    ィールドの投機状態の各々に対して、該投機状態を該条
    件レジスタ・フィールドの実際の状態と比較するステッ
    プと、 前記条件レジスタ・フィールドの前記投機状態が該条件
    レジスタ・フィールドの実際の状態と適合しない場合
    に、前記STOUCH命令に関連する前記状態フラグを、該ST
    OUCH命令により識別された該投機が無効と導出されたこ
    とを示す値へセットするステップと、 前記条件レジスタ・フィールドの前記投機状態が該条件
    レジスタ・フィールドの実際の状態と適合する場合に、
    前記STOUCH命令に関連する前記状態フラグを、該STOUCH
    命令により識別された該投機が有効と導出されたことを
    示す値へセットするステップとを有する請求項31に記
    載の方法。
  33. 【請求項33】前記データ・キャッシュが1又は複数の
    ラインに関連する組へと分割され、そして前記データ・
    キャッシュの1又は複数のラインが前記ライン置換アル
    ゴリズムの通常のオペレーションにおけるよりも多いマ
    シン・サイクルの間保持されるように該ライン置換アル
    ゴリズムを修整する前記ステップが、 前記データ・キャッシュに記憶されるべきミス・ライン
    を前記主メモリからフェッチするステップと、 前記データ・キャッシュ内の前記ミス・ラインと関連す
    る前記組に含まれかつ置換のために推奨されるラインを
    識別するために該組に対して前記ライン置換アルゴリズ
    ムを適用するステップと、 前記置換のために推奨されるラインが前記STOUCH命令に
    より識別されたデータを含みかつ前記STOUCH命令に関連
    する前記投機が有効と導出された場合に、 前記ラインが以前に置換のために推奨された回数を示す
    該ラインに関連する寿命計数器を増分するステップと、 前記寿命計数器が所定の第1のしきい値を超えたとき、
    前記ラインを前記フェッチされたミス・ラインで置換す
    るステップと、 前記寿命計数器が前記所定の第1のしきい値を超えない
    とき、前記ラインに関連する前記組の該ラインを除いた
    サブセットが空でなければ該サブセットに対して前記ラ
    イン置換アルゴリズムを適用する前記ステップへ戻り、
    そして該サブセットが空であれば該ラインを前記フェッ
    チされたミス・ラインで置換するステップとを有する請
    求項19に記載の方法。
  34. 【請求項34】前記データ・キャッシュが1又は複数の
    ラインに関連する組へと分割され、そして前記データ・
    キャッシュの1又は複数のラインが前記ライン置換アル
    ゴリズムの通常のオペレーションにおけるよりも多いマ
    シン・サイクルの間保持されるように該ライン置換アル
    ゴリズムを修整する前記ステップが、 前記データ・キャッシュに記憶されるべきミス・ライン
    を前記主メモリからフェッチするステップと、 前記データ・キャッシュ内の前記ミス・ラインと関連す
    る前記組に含まれかつ置換のために推奨されるラインを
    識別するために該組に対して前記ライン置換アルゴリズ
    ムを適用するステップと、 前記置換のために推奨されるラインが前記STOUCH命令に
    より識別されたデータを含みかつ前記STOUCH命令に関連
    する前記投機が未導出である場合に、 前記ラインが以前に置換のために推奨された回数を示す
    該ラインに関連する寿命計数器を増分するステップと、 前記寿命計数器が所定の第2のしきい値を超えたとき、
    前記ラインを前記フェッチされたミス・ラインで置換す
    るステップと、 前記寿命計数器が前記所定の第2のしきい値を超えない
    とき、前記ラインに関連する前記組の該ラインを除いた
    サブセットが空でなければ該サブセットに対して前記ラ
    イン置換アルゴリズムを適用する前記ステップへ戻り、
    そして該サブセットが空であれば該ラインを前記フェッ
    チされたミス・ラインで置換するステップとを有する請
    求項20に記載の方法。
  35. 【請求項35】前記STOUCH命令により識別された前記デ
    ータを前記主メモリから前記データ・キャッシュの1又
    は複数のラインへフェッチするとき、該データ・キャッ
    シュの該1又は複数のラインの各々に関連するミス・ビ
    ットをセットするステップを含んでおり、そして前記デ
    ータ・キャッシュの1又は複数のラインが前記ライン置
    換アルゴリズムの通常のオペレーションにおけるよりも
    少ないマシン・サイクルの間保持されるように該ライン
    置換アルゴリズムを修整する前記ステップが、 前記データ・キャッシュに記憶されるべきミス・ライン
    を前記主メモリからフェッチするステップと、 前記STOUCH命令に関連する前記投機が無効と導出された
    場合に、前記関連するミス・ビットをセットされた前記
    1又は複数のラインの範囲内にありかつ前記STOUCH命令
    により識別されるデータを含む特定のラインを識別する
    ステップと、 前記特定のラインを前記フェッチされたミス・ラインで
    置換するステップとを有する請求項19に記載の方法。
  36. 【請求項36】前記STOUCH命令が、コンパイル時に前記
    命令のシーケンスへ挿入される請求項19に記載の方
    法。
  37. 【請求項37】命令のシーケンス及びこれらの命令に関
    連するデータ値を記憶する主メモリと、 前記主メモリに接続され、処理ユニットにより実行され
    る1又は複数の命令を各々記憶する複数のラインを備
    え、そして該ラインを上書きするためにライン置換アル
    ゴリズムを用いる命令キャッシュと、 前記主メモリから前記命令キャッシュへ1又は複数の命
    令をフェッチする命令フェッチ・ユニットと、 実行のために前記処理ユニットへロードされる他の命令
    からSTOUCH命令を認知し、そして該STOUCH命令を認知し
    たとき、該STOUCH命令により識別された該処理ユニット
    により実行可能な1又は複数の命令を前記主メモリから
    前記命令キャッシュの1又は複数のラインへフェッチす
    るべく前記命令フェッチ・ユニットを制御する手段と、 前記STOUCH命令に関連する1又は複数の投機を導出する
    STOUCH評価論理とを有し、 上記STOUCH評価論理が、前記投機の各々が有効と導出さ
    れた場合に、前記STOUCH命令により識別された前記1又
    は複数の命令を含む前記命令キャッシュの1又は複数の
    ラインが、前記ライン置換アルゴリズムの通常のオペレ
    ーションよりも多いマシン・サイクル数の間保持される
    ように、該ライン置換アルゴリズムを修整し、 上記STOUCH評価論理が、前記投機のいずれかが無効と導
    出された場合に、前記STOUCH命令により識別された前記
    1又は複数の命令を含む前記命令キャッシュの1又は複
    数のラインが、前記ライン置換アルゴリズムの通常のオ
    ペレーションよりも少ないマシン・サイクル数の間保持
    されるように、該ライン置換アルゴリズムを修整するデ
    ータ処理システム。
  38. 【請求項38】1又は複数の前記投機が未導出の場合
    に、前記STOUCH評価論理が、前記STOUCH命令により識別
    された前記1又は複数の命令を含む前記命令キャッシュ
    の1又は複数のラインが、前記ライン置換アルゴリズム
    の通常のオペレーションよりも多いマシン・サイクル数
    の間保持されるように、該ライン置換アルゴリズムを修
    整する請求項37に記載のデータ処理システム。
  39. 【請求項39】前記STOUCH命令が、 前記主メモリに記憶された前記命令のシーケンスの他の
    命令から該STOUCH命令を識別するためのOPコード・フ
    ィールドと、 前記STOUCH命令により識別される前記1又は複数の命令
    の、前記主メモリ内におけるアドレスを指示するアドレ
    ス・フィールドと、 前記1又は複数の投機を特定する条件フィールドとを有
    する請求項37に記載のデータ処理システム。
  40. 【請求項40】前記STOUCH評価論理が前記STOUCH命令に
    対応するエントリを記憶するバッファを含みかつ該エン
    トリを利用することにより該STOUCH命令を評価し、そし
    て該エントリが、前記STOUCH命令の前記アドレス・フィ
    ールドにより識別される前記1又は複数の命令を含む前
    記命令キャッシュの1又は複数のラインを指示するライ
    ン・タグと、前記STOUCH命令の前記条件フィールドによ
    り特定される前記投機を特定する投機タグとを少なくと
    も含む請求項39に記載のデータ処理システム。
  41. 【請求項41】前記投機タグが、該投機タグによりエン
    コードされる前記投機を解釈するために前記STOUCH評価
    論理により用いられるモード・ビットを含む請求項40
    に記載のデータ処理システム。
  42. 【請求項42】前記モード・ビットが第1の値及び第2
    の値のうちの1つであり、 前記モード・ビットが前記第1の値であるときに、前記
    条件フィールドにより特定される前記投機の各々が真と
    判断される場合にのみ前記STOUCH評価論理が該投機を有
    効と導出し、 前記モード・ビットが前記第2の値であるときに、前記
    条件フィールドにより特定される前記投機の1又は複数
    が偽と判断される場合にのみ前記STOUCH評価論理が該投
    機を有効と導出する請求項41に記載のデータ処理シス
    テム。
  43. 【請求項43】前記投機の各々が、前記STOUCH命令に続
    く分岐命令の投機結果を含む請求項40に記載のデータ
    処理システム。
  44. 【請求項44】前記STOUCH命令に対応する前記バッファ
    の前記エントリが、少なくとも導出状態フィールドを含
    む制御タグを有し、そして該導出状態フィールドは、該
    エントリの前記投機タグによりエンコードされる投機が
    未導出、有効導出、及び無効導出のうちのいずれである
    かを示す請求項43に記載のデータ処理システム。
  45. 【請求項45】前記STOUCH評価論理が制御論理を含み、
    該制御論理が、 最初に、前記STOUCH命令に関連する前記バッファ内に記
    憶された前記エントリの前記導出状態フィールドを、前
    記投機タグによりエンコードされる前記投機が未導出で
    あることを示す値へセットし、 前記STOUCH命令により識別された前記分岐の投機結果の
    各々に対して、該分岐の投機結果を前記処理ユニットか
    らの分岐の導出結果と比較し、 前記分岐の投機結果が前記分岐の導出結果と適合しない
    場合に、前記STOUCH命令に関連する前記導出状態フィー
    ルドを、前記投機タグによりエンコードされた前記投機
    が無効と導出されたことを示す値へセットし、 前記分岐の投機結果が前記処理ユニットからの対応する
    前記分岐の導出結果と適合する場合に、前記STOUCH命令
    に関連する前記導出状態フィールドを、前記投機タグに
    よりエンコードされた前記投機が有効と導出されたこと
    を示す値へセットする請求項44に記載の方法。
  46. 【請求項46】前記投機の各々が、前記STOUCH命令に続
    く命令の完了時における条件レジスタ・フィールドの投
    機状態を含む請求項40に記載のデータ処理システム。
  47. 【請求項47】前記STOUCH命令に対応する前記バッファ
    の前記エントリが、少なくとも導出状態フィールドを含
    む制御タグを有し、そして該導出状態フィールドは、該
    エントリの前記投機タグによりエンコードされる投機が
    未導出、有効導出、及び無効導出のうちのいずれである
    かを示す請求項46に記載のデータ処理システム。
  48. 【請求項48】前記STOUCH評価論理が制御論理を含み、
    該制御論理が、 前記STOUCH命令に関連する前記エントリの導出状態フィ
    ールドを、該エントリの投機タグによりエンコードされ
    る前記投機が未導出であることを示す値へセットし、 前記エントリの前記投機タグによりエンコードされた前
    記条件レジスタ・フィールドの投機状態の各々に対し
    て、該投機状態を該条件レジスタ・フィールドの実際の
    状態と比較し、 前記条件レジスタ・フィールドの前記投機状態が該条件
    レジスタ・フィールドの実際の状態と適合しない場合
    に、前記エントリの前記制御タグの前記導出状態フィー
    ルドを、該エントリの該投機タグによりエンコードされ
    た該投機が無効と導出されたことを示す値へセットし、 前記条件レジスタ・フィールドの前記投機状態が該条件
    レジスタ・フィールドの実際の状態と適合する場合に、
    前記エントリの前記制御タグの前記導出状態フィールド
    を、該エントリの該投機タグによりエンコードされた該
    投機が有効と導出されたことを示す値へセットする請求
    項47に記載のデータ処理システム。
  49. 【請求項49】前記STOUCH命令が、コンパイル時に前記
    命令のシーケンスへ挿入される請求項37に記載のデー
    タ処理システム。
  50. 【請求項50】命令のシーケンス及びこれらの命令に関
    連するデータ値を記憶する主メモリと、 前記主メモリに接続され、前記主メモリに記憶された前
    記命令を実行する際に処理ユニットにより利用される1
    又は複数のデータ値を各々記憶する複数のラインを備
    え、そして該ラインを上書きするためにライン置換アル
    ゴリズムを用いるデータ・キャッシュと、 前記主メモリから前記データ・キャッシュへ1又は複数
    のデータ値をフェッチするデータ・フェッチ・ユニット
    と、 実行のために前記処理ユニットへロードされる他の命令
    からSTOUCH命令を認知し、そして該STOUCH命令を認知し
    たとき、該STOUCH命令により識別された1又は複数のデ
    ータ値を前記主メモリから前記データ・キャッシュの1
    又は複数のラインへフェッチするべく前記データ・フェ
    ッチ・ユニットを制御する手段と、 前記STOUCH命令に関連する1又は複数の投機を導出する
    STOUCH評価論理とを有し、 上記STOUCH評価論理が、前記投機の各々が有効と導出さ
    れた場合に、前記STOUCH命令により識別された前記1又
    は複数のデータ値を含む前記データ・キャッシュの1又
    は複数のラインが、前記ライン置換アルゴリズムの通常
    のオペレーションよりも多いマシン・サイクル数の間保
    持されるように、該ライン置換アルゴリズムを修整し、 上記STOUCH評価論理が、前記投機のいずれかが無効と導
    出された場合に、前記STOUCH命令により識別された前記
    1又は複数のデータ値を含む前記データ・キャッシュの
    1又は複数のラインが、前記ライン置換アルゴリズムの
    通常のオペレーションよりも少ないマシン・サイクル数
    の間保持されるように、該ライン置換アルゴリズムを修
    整するデータ処理システム。
  51. 【請求項51】1又は複数の前記投機が未導出の場合
    に、前記STOUCH評価論理が、前記STOUCH命令により識別
    された前記1又は複数のデータ値を含む前記データ・キ
    ャッシュの1又は複数のラインが、前記ライン置換アル
    ゴリズムの通常のオペレーションよりも多いマシン・サ
    イクル数の間保持されるように、該ライン置換アルゴリ
    ズムを修整する請求項50に記載のデータ処理システ
    ム。
  52. 【請求項52】前記STOUCH命令が、 前記主メモリに記憶された前記命令のシーケンスの他の
    命令から該STOUCH命令を識別するためのOPコード・フ
    ィールドと、 前記STOUCH命令により識別される前記1又は複数のデー
    タ値の、前記主メモリ内におけるアドレスを指示するア
    ドレス・フィールドと、 前記1又は複数の投機を特定する条件フィールドとを有
    する請求項50に記載のデータ処理システム。
  53. 【請求項53】前記STOUCH評価論理が前記STOUCH命令に
    対応するエントリを記憶するバッファを含みかつ該エン
    トリを利用することにより該STOUCH命令を評価し、そし
    て該エントリが、前記STOUCH命令の前記アドレス・フィ
    ールドにより識別される前記1又は複数のデータ値を含
    む前記データ・キャッシュの1又は複数のラインを指示
    するライン・タグと、前記STOUCH命令の前記条件フィー
    ルドにより特定される前記投機を特定する投機タグとを
    少なくとも含む請求項52に記載のデータ処理システ
    ム。
  54. 【請求項54】前記投機タグが、該投機タグによりエン
    コードされる前記投機を解釈するために前記STOUCH評価
    論理により用いられるモード・ビットを含む請求項53
    に記載のデータ処理システム。
  55. 【請求項55】前記モード・ビットが第1の値及び第2
    の値のうちの1つであり、 前記モード・ビットが前記第1の値であるときに、前記
    条件フィールドにより特定される前記投機の各々が真と
    判断される場合にのみ前記STOUCH評価論理が該投機を有
    効と導出し、 前記モード・ビットが前記第2の値であるときに、前記
    条件フィールドにより特定される前記投機の1又は複数
    が偽と判断される場合にのみ前記STOUCH評価論理が該投
    機を有効と導出する請求項54に記載のデータ処理シス
    テム。
  56. 【請求項56】前記投機の各々が、前記STOUCH命令に続
    く分岐命令の投機結果を含む請求項53に記載のデータ
    処理システム。
  57. 【請求項57】前記STOUCH命令に対応する前記バッファ
    の前記エントリが、少なくとも導出状態フィールドを含
    む制御タグを有し、該導出状態フィールドは、該エント
    リの前記投機タグによりエンコードされる投機が、未導
    出、有効導出、及び無効導出のうちのいずれであるかを
    示す請求項56に記載のデータ処理システム。
  58. 【請求項58】前記STOUCH評価論理が制御論理を含み、
    該制御論理が、 最初に、前記STOUCH命令に関連する前記バッファ内に記
    憶された前記エントリの前記導出状態フィールドを、前
    記投機タグによりエンコードされる前記投機が未導出で
    あることを示す値へセットし、 前記STOUCH命令により識別された前記分岐の投機結果の
    各々に対して、該分岐の投機結果を前記処理ユニットか
    らの分岐の導出結果と比較し、 前記分岐の投機結果が前記分岐の導出結果と適合しない
    場合に、前記STOUCH命令に関連する前記導出状態フィー
    ルドを、前記投機タグによりエンコードされた前記投機
    が無効と導出されたことを示す値へセットし、 前記分岐の投機結果が前記処理ユニットからの対応する
    前記分岐の導出結果と適合する場合に、前記STOUCH命令
    に関連する前記導出状態フィールドを、前記投機タグに
    よりエンコードされた前記投機が有効と導出されたこと
    を示す値へセットする請求項57に記載の方法。
  59. 【請求項59】前記投機の各々が、前記STOUCH命令に続
    く命令の完了時における条件レジスタ・フィールドの投
    機状態を含む請求項53に記載のデータ処理システム。
  60. 【請求項60】前記STOUCH命令に対応する前記バッファ
    の前記エントリが、少なくとも導出状態フィールドを含
    む制御タグを有し、そして該導出状態フィールドは、該
    エントリの前記投機タグによりエンコードされる投機が
    未導出、有効導出、及び無効導出のうちのいずれである
    かを示す請求項59に記載のデータ処理システム。
  61. 【請求項61】前記STOUCH評価論理が制御論理を含み、
    該制御論理が、 前記STOUCH命令に関連する前記エントリの導出状態フィ
    ールドを、該エントリの投機タグによりエンコードされ
    る前記投機が未導出であることを示す値へセットし、 前記エントリの前記投機タグによりエンコードされた前
    記条件レジスタ・フィールドの投機状態の各々に対し
    て、該投機状態を該条件レジスタ・フィールドの実際の
    状態と比較し、 前記条件レジスタ・フィールドの前記投機状態が該条件
    レジスタ・フィールドの実際の状態と適合しない場合
    に、前記エントリの前記制御タグの前記導出状態フィー
    ルドを、該エントリの該投機タグによりエンコードされ
    た該投機が無効と導出されたことを示す値へセットし、 前記条件レジスタ・フィールドの前記投機状態が該条件
    レジスタ・フィールドの実際の状態と適合する場合に、
    前記エントリの前記制御タグの前記導出状態フィールド
    を、該エントリの該投機タグによりエンコードされた該
    投機が有効と導出されたことを示す値へセットする請求
    項60に記載のデータ処理システム。
  62. 【請求項62】前記STOUCH命令が、コンパイル時に前記
    命令のシーケンスへ挿入される請求項50に記載のデー
    タ処理システム。
JP8081784A 1995-04-21 1996-04-03 命令及びデータのフェッチ制御方法及びシステム Pending JPH08305565A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US426502 1995-04-21
US08/426,502 US5774685A (en) 1995-04-21 1995-04-21 Method and apparatus for biasing cache LRU for prefetched instructions/data based upon evaluation of speculative conditions

Publications (1)

Publication Number Publication Date
JPH08305565A true JPH08305565A (ja) 1996-11-22

Family

ID=23691055

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8081784A Pending JPH08305565A (ja) 1995-04-21 1996-04-03 命令及びデータのフェッチ制御方法及びシステム

Country Status (4)

Country Link
US (1) US5774685A (ja)
EP (1) EP0738962B1 (ja)
JP (1) JPH08305565A (ja)
DE (1) DE69635037D1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100988334B1 (ko) * 2008-03-26 2010-10-18 후지쯔 가부시끼가이샤 캐쉬 제어 장치, 정보 처리 장치

Families Citing this family (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6055621A (en) * 1996-02-12 2000-04-25 International Business Machines Corporation Touch history table
US5943687A (en) * 1997-03-14 1999-08-24 Telefonakiebolaget Lm Ericsson Penalty-based cache storage and replacement techniques
US6138213A (en) 1997-06-27 2000-10-24 Advanced Micro Devices, Inc. Cache including a prefetch way for storing prefetch cache lines and configured to move a prefetched cache line to a non-prefetch way upon access to the prefetched cache line
US5987598A (en) * 1997-07-07 1999-11-16 International Business Machines Corporation Method and system for tracking instruction progress within a data processing system
US5983325A (en) * 1997-12-09 1999-11-09 Advanced Micro Devices, Inc. Dataless touch to open a memory page
US7071946B2 (en) * 1997-12-30 2006-07-04 Micron Technology, Inc. Accelerated graphics port for a multiple memory controller computer system
US6157398A (en) * 1997-12-30 2000-12-05 Micron Technology, Inc. Method of implementing an accelerated graphics port for a multiple memory controller computer system
US6542966B1 (en) * 1998-07-16 2003-04-01 Intel Corporation Method and apparatus for managing temporal and non-temporal data in a single cache structure
US6490654B2 (en) * 1998-07-31 2002-12-03 Hewlett-Packard Company Method and apparatus for replacing cache lines in a cache memory
US6260190B1 (en) * 1998-08-11 2001-07-10 Hewlett-Packard Company Unified compiler framework for control and data speculation with recovery code
US6611910B2 (en) * 1998-10-12 2003-08-26 Idea Corporation Method for processing branch operations
US6233645B1 (en) 1998-11-02 2001-05-15 Compaq Computer Corporation Dynamically disabling speculative prefetch when high priority demand fetch opportunity use is high
US6393527B1 (en) 1998-12-18 2002-05-21 Ati International Srl Prefetch buffer with continue detect
US6725333B1 (en) * 1999-04-22 2004-04-20 International Business Machines Corporation System and method for managing cachable entities
US6360299B1 (en) 1999-06-30 2002-03-19 International Business Machines Corporation Extended cache state with prefetched stream ID information
US6421763B1 (en) 1999-06-30 2002-07-16 International Business Machines Corporation Method for instruction extensions for a tightly coupled speculative request unit
US6393528B1 (en) * 1999-06-30 2002-05-21 International Business Machines Corporation Optimized cache allocation algorithm for multiple speculative requests
US6510494B1 (en) * 1999-06-30 2003-01-21 International Business Machines Corporation Time based mechanism for cached speculative data deallocation
US6421762B1 (en) 1999-06-30 2002-07-16 International Business Machines Corporation Cache allocation policy based on speculative request history
US6496921B1 (en) 1999-06-30 2002-12-17 International Business Machines Corporation Layered speculative request unit with instruction optimized and storage hierarchy optimized partitions
US6532521B1 (en) 1999-06-30 2003-03-11 International Business Machines Corporation Mechanism for high performance transfer of speculative request data between levels of cache hierarchy
US6253286B1 (en) * 1999-08-05 2001-06-26 International Business Machines Corporation Apparatus for adjusting a store instruction having memory hierarchy control bits
US6230242B1 (en) * 1999-08-05 2001-05-08 International Business Machines Corporation Store instruction having vertical memory hierarchy control bits
US6249911B1 (en) * 1999-08-05 2001-06-19 International Business Machines Corporation Optimizing compiler for generating store instructions having memory hierarchy control bits
US6249843B1 (en) * 1999-08-05 2001-06-19 International Business Machines Corporation Store instruction having horizontal memory hierarchy control bits
US6560693B1 (en) 1999-12-10 2003-05-06 International Business Machines Corporation Branch history guided instruction/data prefetching
US6591361B1 (en) 1999-12-28 2003-07-08 International Business Machines Corporation Method and apparatus for converting data into different ordinal types
US6859862B1 (en) 2000-04-07 2005-02-22 Nintendo Co., Ltd. Method and apparatus for software management of on-chip cache
JP2002014868A (ja) * 2000-06-28 2002-01-18 Hitachi Ltd メモリ参照動作検出機構を有するマイクロプロセッサおよびコンパイル方法
US6523093B1 (en) * 2000-09-29 2003-02-18 Intel Corporation Prefetch buffer allocation and filtering system
US6480939B2 (en) * 2000-12-29 2002-11-12 Intel Corporation Method and apparatus for filtering prefetches to provide high prefetch accuracy using less hardware
US6571318B1 (en) 2001-03-02 2003-05-27 Advanced Micro Devices, Inc. Stride based prefetcher with confidence counter and dynamic prefetch-ahead mechanism
CA2346762A1 (en) * 2001-05-07 2002-11-07 Ibm Canada Limited-Ibm Canada Limitee Compiler generation of instruction sequences for unresolved storage devices
US7234040B2 (en) * 2002-01-24 2007-06-19 University Of Washington Program-directed cache prefetching for media processors
US20030154349A1 (en) * 2002-01-24 2003-08-14 Berg Stefan G. Program-directed cache prefetching for media processors
US20030200386A1 (en) * 2002-04-19 2003-10-23 Seagate Technology Llc Data retention prioritization for a data storage device
US7278136B2 (en) * 2002-07-09 2007-10-02 University Of Massachusetts Reducing processor energy consumption using compile-time information
US6934865B2 (en) * 2002-07-09 2005-08-23 University Of Massachusetts Controlling a processor resource based on a compile-time prediction of number of instructions-per-cycle that will be executed across plural cycles by the processor
US6970985B2 (en) * 2002-07-09 2005-11-29 Bluerisc Inc. Statically speculative memory accessing
US7058936B2 (en) * 2002-11-25 2006-06-06 Microsoft Corporation Dynamic prefetching of hot data streams
US7140008B2 (en) * 2002-11-25 2006-11-21 Microsoft Corporation Dynamic temporal optimization framework
US6976147B1 (en) 2003-01-21 2005-12-13 Advanced Micro Devices, Inc. Stride-based prefetch mechanism using a prediction confidence value
US7343598B2 (en) * 2003-04-25 2008-03-11 Microsoft Corporation Cache-conscious coallocation of hot data streams
US7587709B2 (en) * 2003-10-24 2009-09-08 Microsoft Corporation Adaptive instrumentation runtime monitoring and analysis
US20050114850A1 (en) 2003-10-29 2005-05-26 Saurabh Chheda Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
US7996671B2 (en) 2003-11-17 2011-08-09 Bluerisc Inc. Security of program executables and microprocessors based on compiler-architecture interaction
US8607209B2 (en) 2004-02-04 2013-12-10 Bluerisc Inc. Energy-focused compiler-assisted branch prediction
US7607119B2 (en) * 2005-04-26 2009-10-20 Microsoft Corporation Variational path profiling
US7457926B2 (en) * 2005-05-18 2008-11-25 International Business Machines Corporation Cache line replacement monitoring and profiling
US7770153B2 (en) * 2005-05-20 2010-08-03 Microsoft Corporation Heap-based bug identification using anomaly detection
US7912877B2 (en) * 2005-05-20 2011-03-22 Microsoft Corporation Leveraging garbage collection to dynamically infer heap invariants
KR100851298B1 (ko) * 2005-12-28 2008-08-08 엠텍비젼 주식회사 캐시 메모리 컨트롤러 및 이를 이용한 캐시 메모리 관리방법
US7962901B2 (en) 2006-04-17 2011-06-14 Microsoft Corporation Using dynamic analysis to improve model checking
US7926043B2 (en) * 2006-06-20 2011-04-12 Microsoft Corporation Data structure path profiling
US20080126766A1 (en) 2006-11-03 2008-05-29 Saurabh Chheda Securing microprocessors against information leakage and physical tampering
US9058272B1 (en) 2008-04-25 2015-06-16 Marvell International Ltd. Method and apparatus having a snoop filter decoupled from an associated cache and a buffer for replacement line addresses
US8131982B2 (en) * 2008-06-13 2012-03-06 International Business Machines Corporation Branch prediction instructions having mask values involving unloading and loading branch history data
US10338923B2 (en) * 2009-05-05 2019-07-02 International Business Machines Corporation Branch prediction path wrong guess instruction
US8521999B2 (en) * 2010-03-11 2013-08-27 International Business Machines Corporation Executing touchBHT instruction to pre-fetch information to prediction mechanism for branch with taken history
US9465631B2 (en) 2011-09-30 2016-10-11 Microsoft Technology Licensing, Llc Automatic caching of partial results while editing software
US9405706B2 (en) * 2014-09-25 2016-08-02 Intel Corporation Instruction and logic for adaptive dataset priorities in processor caches
US10108467B2 (en) 2015-04-24 2018-10-23 Nxp Usa, Inc. Data processing system with speculative fetching
US10719321B2 (en) * 2015-09-19 2020-07-21 Microsoft Technology Licensing, Llc Prefetching instruction blocks
US10296463B2 (en) * 2016-01-07 2019-05-21 Samsung Electronics Co., Ltd. Instruction prefetcher dynamically controlled by readily available prefetcher accuracy
US10417135B2 (en) * 2017-09-28 2019-09-17 Intel Corporation Near memory miss prediction to reduce memory access latency
US11243952B2 (en) 2018-05-22 2022-02-08 Bank Of America Corporation Data cache using database trigger and programmatically resetting sequence
US10467141B1 (en) * 2018-06-18 2019-11-05 International Business Machines Corporation Process data caching through iterative feedback

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60500187A (ja) * 1982-12-30 1985-02-07 インタ−ナシヨナル・ビジネス・マシ−ンズ・コ−ポレ−シヨン データ処理システム
US5226130A (en) * 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US5287467A (en) * 1991-04-18 1994-02-15 International Business Machines Corporation Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit
US5375216A (en) * 1992-02-28 1994-12-20 Motorola, Inc. Apparatus and method for optimizing performance of a cache memory in a data processing system
US5500950A (en) * 1993-01-29 1996-03-19 Motorola, Inc. Data processor with speculative data transfer and address-free retry
TW226050B (en) * 1993-05-11 1994-07-01 Nat Science Committee A method for elevating multilevel instructions of a compiler
US5537573A (en) * 1993-05-28 1996-07-16 Rambus, Inc. Cache system and method for prefetching of data
IE940855A1 (en) * 1993-12-20 1995-06-28 Motorola Inc Data processor with speculative instruction fetching and¹method of operation
US5526510A (en) * 1994-02-28 1996-06-11 Intel Corporation Method and apparatus for implementing a single clock cycle line replacement in a data cache unit
US5551001A (en) * 1994-06-29 1996-08-27 Exponential Technology, Inc. Master-slave cache system for instruction and data cache memories
US5611071A (en) * 1995-04-19 1997-03-11 Cyrix Corporation Split replacement cycles for sectored cache lines in a 64-bit microprocessor interfaced to a 32-bit bus architecture

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100988334B1 (ko) * 2008-03-26 2010-10-18 후지쯔 가부시끼가이샤 캐쉬 제어 장치, 정보 처리 장치

Also Published As

Publication number Publication date
EP0738962B1 (en) 2005-08-10
DE69635037D1 (de) 2005-09-15
US5774685A (en) 1998-06-30
EP0738962A2 (en) 1996-10-23
EP0738962A3 (en) 2000-06-07

Similar Documents

Publication Publication Date Title
JPH08305565A (ja) 命令及びデータのフェッチ制御方法及びシステム
JP5198879B2 (ja) ループ末尾に置かれた分岐により分岐履歴レジスタの更新を抑制すること
US5805877A (en) Data processor with branch target address cache and method of operation
US6263427B1 (en) Branch prediction mechanism
US8069336B2 (en) Transitioning from instruction cache to trace cache on label boundaries
US9875106B2 (en) Computer processor employing instruction block exit prediction
US6944718B2 (en) Apparatus and method for speculative prefetching after data cache misses
EP0381444B1 (en) Branch prediction
JP5579930B2 (ja) 事前通知技術を用いる、プログラムのシーケンシャルフローを変更するための方法および装置
US5761515A (en) Branch on cache hit/miss for compiler-assisted miss delay tolerance
JP3048910B2 (ja) 命令スレッドを処理するための方法
US6351796B1 (en) Methods and apparatus for increasing the efficiency of a higher level cache by selectively performing writes to the higher level cache
US5761723A (en) Data processor with branch prediction and method of operation
US7424578B2 (en) Computer system, compiler apparatus, and operating system
US20020091915A1 (en) Load prediction and thread identification in a multithreaded microprocessor
JP2008532142A5 (ja)
JP2011100466A5 (ja)
JPH0557617B2 (ja)
KR101048258B1 (ko) 가변 길이 명령 세트의 브랜치 명령의 최종 입도와 캐싱된 브랜치 정보의 관련
US6289444B1 (en) Method and apparatus for subroutine call-return prediction
EP1853995B1 (en) Method and apparatus for managing a return stack
US7640422B2 (en) System for reducing number of lookups in a branch target address cache by storing retrieved BTAC addresses into instruction cache
JP4134179B2 (ja) ソフトウエアによる動的予測方法および装置
US20030204705A1 (en) Prediction of branch instructions in a data processing apparatus
US5964870A (en) Method and apparatus for using function context to improve branch

Legal Events

Date Code Title Description
EXPY Cancellation because of completion of term