JPH10198561A - プリフェッチの望ましさに関連するエントリのあるロードターゲットバッファを具現するマイクロプロセッサ回路、システム、および方法 - Google Patents

プリフェッチの望ましさに関連するエントリのあるロードターゲットバッファを具現するマイクロプロセッサ回路、システム、および方法

Info

Publication number
JPH10198561A
JPH10198561A JP10031905A JP3190598A JPH10198561A JP H10198561 A JPH10198561 A JP H10198561A JP 10031905 A JP10031905 A JP 10031905A JP 3190598 A JP3190598 A JP 3190598A JP H10198561 A JPH10198561 A JP H10198561A
Authority
JP
Japan
Prior art keywords
instruction
data
address
entry
value
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
JP10031905A
Other languages
English (en)
Inventor
Z N Kai George
ゼット.エヌ.カイ ジョージ
H Shell Johnathan
エィチ.シエル ジョナサン
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.)
Texas Instruments Inc
Original Assignee
Texas Instruments 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 Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of JPH10198561A publication Critical patent/JPH10198561A/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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
    • 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, 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers

Landscapes

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

Abstract

(57)【要約】 【課題】 データプリフェッチによるデータへのアクセ
スの改善。 【解決手段】 アドレスに応答してデータを出力し、予
測されたターゲットデータアドレスを含むプリフェッチ
要求を受けるようにも動作し得るメモリシステム20を
含むマイクロプロセッサ12は、第一の長さの第一の複
数のエントリと第二の長さの第二の複数のエントリを含
むロードターゲット回路56も含む。第一の複数のエン
トリは、エントリを対応する第一の複数のデータフェッ
チ命令に対応させる値(ADDRESS TAG)と、
対応する予測ターゲットデータアドレスを示す値(PO
INTER A)を含む。第二の複数のエントリも、そ
れを対応する、プリフェッチ要求を発することが望まし
くない、第二の複数のデータフェッチ命令に対応させる
値(ADDRESS TAG)を含む。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はマイクロプロセッサ
技術に関するものであり、更に詳しくはプリフェッチの
望ましさに関連するエントリのあるロードターゲットバ
ッファを具現するマイクロプロセッサ回路、システム、
および方法に関するものである。
【0002】
【従来の技術】マイクロプロセッサ技術は早いペースで
進歩し続けており、設計のすべての側面に考慮が払われ
ている。性能については、種々の関連および非関連のマ
イクロプロセッサ回路の速度および動作を改善すること
によりマイクロプロセッサ全体の、より早い速度が達成
されている。たとえば、動作効率が改善されている一つ
の領域は、並列と故障命令の実行を行えるようにするこ
とによって行われる。もう一つの例として、命令、デー
タの一方または両方を含む情報に対して、より早く、よ
り大きなアクセスが行えるようにすることによっても、
動作効率は改善される。本発明は主としてこのアクセス
能力を目指しており、更に詳しくはデータロード動作ま
たはデータ記憶動作に応答してこのようなデータをプリ
フェッチすることによりデータに対するアクセスを改善
することを目指している。
【0003】情報に対するアクセス時間を改善すること
を目指している最新式のコンピュータシステムでの非常
に一般的な一つのアプローチは、システムの中に一つ以
上のレベルのキャッシュレベルを含めることである。た
とえば、キャッシュメモリをマイクロプロセッサ上に直
接形成すること、マイクロプロセッサが外部キャッシュ
メモリにアクセスすること、の一方または両方を行える
ようにする。通常、最低のレベルのキャッシュ(すなわ
ち、アクセスすべき最初のキャッシュ)は、階層構造で
それより上のキャッシュ(一つまたは複数)より小さ
く、早く、そして与えられたメモリの階層構造の中のキ
ャッシュ数は変わり得る。いずれにしても、キャッシュ
階層構造を使用するとき、情報アドレスが発せられると
き、アドレスを通常、最低レベルのキャッシュ宛てとす
ることにより、そのアドレスに対応する情報がそのキャ
ッシュに記憶されているか、すなわちそのキャッシュに
「ヒット」があるが調べる。ヒットが起きると、アドレ
ス指定された情報がキャッシュから検索され、メモリ階
層構造の中でより高位のメモリにアクセスする必要は無
い。ここで、より高位のメモリはヒットキャッシュメモ
リに比べて多分アクセスが遅い。これに反して、キャッ
シュヒットが生じなかった場合には、キャッシュミスが
生じたと言われる。次にこれに応じて、問題のアドレス
が次の、より高位のメモリ構造に呈示される。この次
の、より高位のメモリ構造がもう一つのキャッシュであ
る場合には、もう一度ヒットまたはミスが生じ得る。各
キャッシュでミスが生じた場合には、結局プロセスはシ
ステム内の最高位のメモリ構造に達し、その点で、その
メモリからアドレス指定された情報を検索することがで
きる。
【0004】
【発明が解決しょうとする課題】キャッシュシステムが
存在するとした場合、速度を増大するためのもう一つの
従来技術の手法では、キャッシュシステムと組み合わせ
て、情報のプリフェッチが行われる。プリフェッチと
は、投機的検索、または情報検索の準備であって、情報
が外部メモリのような高位のメモリシステムから検索さ
れてキャッシュに入り、次の後続のクロックサイクル後
のある点で、予想される事象に対してマイクロプロセッ
サが検索された情報を必要とするものと想定している。
この点で、ロードの場合の方が多分、検索に関連してよ
り多く考えられるが、プリフェッチはデータの記憶にも
関連し得る。更に詳しく述べると、検索されたデータを
マイクロプロセッサが使用し得るように特定のデータが
検索される場合に、ロードが行われる。しかし、記憶動
作では、まず一群のデータが検索され、その群の一部が
上書きされる。更に、記憶質問のようないくつかの記憶
動作は、実際にデータを検索することはしないで、近づ
いている事象に対してマイクロプロセッサの外部のリソ
ースを用意する。この事象が情報をそのリソースに記憶
する。この「従来の技術」および後に続く「発明の実施
の形態」の目的のため、これらの各場合をプリフェッチ
の型と考えるべきである。いずれにしても、データを投
機的に検索してオンチップキャッシュに入れるプリフェ
ッチの場合に、プリフェッチを生じた予想された事象が
実際に生じると、プリフェッチされた情報は既にキャッ
シュに入っているので、キャッシュからフェッチするこ
とができ、高位のメモリシステムからそれを捜し求める
必要は無い。換言すれば、実際のフェッチが必要になっ
た場合、プリフェッチによりキャッシュミスの危険性が
低下する。
【0005】
【課題を解決するための手段】上記の手法のもとで、本
発明者はマイクロプロセッサの中にロードターゲットバ
ッファ(LTB)を設ける。このロードターゲットバッ
ファは、ある実施例ではプリフェッチのためのアドレス
として使用すべきデータのアドルスを予測し、更に他の
実施例ではプリフェッチの望ましさに基づき、更にある
場合にはデータフェッチパターンの挙動に基づき異なる
長さのエントリを含む。したがって以下、種々の従来技
術の考慮点に対処する種々の実施例、および熟練した当
業者が確かめ得るその他の側面を示す。
【0006】一実施例では、アドレスに応答してデータ
を出力するためのメモリシステムが提供される。メモリ
システムは、予測されたターゲットデータアドレスをそ
なえるプリフェッチ要求を受けるようにも動作し得る。
マイクロプロセッサには、ロードターゲット回路も含ま
れる。ロードターゲット回路は第一の長さの第一の複数
のエントリと第二の長さの第二の複数のエントリとを含
む。第一の複数のエントリの各々は、エントリを対応す
る第一の複数のデータフェッチ命令に対応させるための
値をそなえる。更に、第一の複数のエントリの各々は、
対応する予測されたターゲットデータアドレスを表示す
るための値をもそなえる。第二の複数のエントリの各々
も、第二の複数のエントリの各々を対応する第二の複数
のデータフェッチ命令に対応させるための値をそなえ
る。しかし、第二の複数のデータフェッチ命令の各々
は、それに対してプリフェッチ要求を発することが望ま
しくない型のデータフェッチ命令である。他の回路、シ
ステム、および方法も開示され、特許請求される。
【0007】
【発明の実施の形態】図1には、全体が10で表された
本発明の実施例によるマイクロプロセッサに基づくシス
テムのブロック図を示す。システム10にはマイクロプ
ロセッサ12が含まれており、マイクロプロセッサ12
はバスBをそなえている。図12に関連して後で説明す
るように、バスBは種々の外部装置に接続され得る。し
かし、実施例に対する状況を与える目的で、外部メモリ
14だけがバスBに接続されるものとして示されてい
る。付加的な品目については後で説明する。マイクロプ
ロセッサ12はマイクロプロセッサ構造の種々の異なる
型を表すことができることに注意すべきである。熟練し
た当業者は、多数のこのような構造を知っているか、確
認することができる。しかし、この点で、図1の構成要
素に関連する以外のこのようなマイクロプロセッサに関
連する詳細は、説明を簡略にするために図示も、説明も
しない。
【0008】図1のブロックでマイクロプロセッサ12
には、当業者に知られている仕方のメモリ階層構造、す
なわち最低位の記憶システムから始まって、より高位の
記憶システムに向かうデータを読み書きする階層構造が
含まれている。このようなシステムの最低レベルには、
0レベルのデータキャッシュ回路があり、これは図1で
はL0データキャッシュ16として示されている。「L
0」表示は当業者には知られているようにメモリ階層構
造の事柄を示す。詳しく述べると、低い数字が表示され
たキャッシュ回路は一般に、後で説明するL1およびL
2のデータキャッシュ回路のようなより高い数字の名称
をそなえたキャッシュ回路に比べて(後で説明する)マ
イクロプロセッサパイプラインの実行ユニットにより近
い。更にキャッシュの数字名称は、キャッシュから読ん
だり書いたりするときにキャッシュが通常アクセスされ
る上がっていく順番の表示を与える。このように、この
ようなアクセスはまずL0キャッシュに対して行われ、
そのキャッシュに対してキャッシュミスが生じた場合に
は、L1キャッシュに対するアクセスが続いて行われる
というようにメモリ階層構造を通っていき、ついにキャ
ッシュまたは他のメモリ構造にヒットが見出される。本
実施例ではL0データキャッシュ16は、16バイトの
ブロックで合計1Kバイトのデータを記憶するように動
作することができる4個の部分からなるセット対応の
(4−way set associative)キャ
ッシュであり、各部分は一度に64ビット(すなわち、
8バイト)を出力するように動作できることが好まし
い。
【0009】マイクロプロセッサ12には更にL1デー
タキャッシュ18が含まれている。L1データキャッシ
ュ18はバス19を介してL0データキャッシュ16に
接続される。この場合も、「L1」という名称はこのキ
ャッシュがメモリ階層構造でL0データキャッシュ16
に比べて高位にあるということを必ず示す。本実施例で
はL1データキャッシュ18は、32バイトのブロック
で合計8Kバイトのデータを記憶するように動作するこ
とができる2個の部分からなるセット対応のキャッシュ
であり、各部分は一度に128ビット(すなわち、16
バイト)を出力するように動作できることが好ましい。
【0010】システム10には、L2統合キャッシュ2
0も含まれている。L2統合キャッシュ20は、32バ
イトのサブブロックをそなえた64バイトのブロックで
合計64Kバイトのデータを記憶するように動作するこ
とができる4個の部分からなるセット対応のキャッシュ
であり、各部分は一度に256ビット(すなわち、32
バイト)を出力するように動作できることが好ましい。
L2キャッシュを統合キャッシュと呼ぶのは、データを
記憶する他に他の情報も記憶するということを意味する
ということに注意すべきである。詳しく述べると、後で
示すように、L2統合キャッシュ20はアドレス変換情
報の他に、命令も記憶する。しかし、代替実施例では、
情報の型(一つまたは複数)が変わり得るということに
注意すべきである。いずれにしてもこのときデータに対
して、L0データキャッシュ16からL1データキャッ
シュ18に、そしてL2統合キャッシュ20へとメモリ
階層構造が形成されるということに注意すべきである。
したがって、L2統合キャッシュ20のアドレス指定を
生じ得る第一の発生源は、L1データキャッシュ18の
ミスに応答するL1データキャッシュ18である。L1
データキャッシュ18のミスはL0データキャッシュ1
6のミスから生じる。更にキャッシュミスを生じた各フ
ェッチの場合、この階層構造の次の、より高いレベルで
データが捜し求められる。したがって、L2統合キャッ
シュ20でミスが生じた場合には、データは外部メモリ
14からアドレス指定される。L2統合キャッシュ20
にはアクセス制御器22も含まれていることにも注意す
べきである。後で詳細に説明するように、アクセス制御
器22はL2統合キャッシュ20にアクセスするように
という要求を受ける。ここでそれらの要求は、L2統合
キャッシュ20から情報をフェッチまたはプリフェッチ
するためのものである。
【0011】L2統合キャッシュ20に関連する図1に
示された他の情報径路について説明する前に、バスBに
向かう上向きの図1の説明を完了するものとして、L2
統合キャッシュ20は更にバス24を介してバスインタ
フェースユニット(BIU)26に接続され、BIU2
6はバスBに接続される。前に示唆したように、バスB
によりマイクロプロセッサ12からの外部アクセスが可
能となり、したがってマイクロプロセッサ12と外部メ
モリ14等のマイクロプロセッサ外部の他の要素との間
の通信を制御し、遂行することができる。熟練した当業
者には明らかなように、外部メモリ14はメモリ階層構
造でL2統合キャッシュ20より高位である(そしても
ちろん、L1データキャッシュ18およびL0データキ
ャッシュ16よりも高位である)。もう一つの例とし
て、バスBと主メモリ14との間に外部キャッシュを接
続してもよい。このようにして、マイクロプロセッサ1
2はこのような外部キャッシュと通信することができ
る。更にもう一つの例として、マイクロプロセッサ12
は多マイクロプロセッサシステムで他のマイクロプロセ
ッサと通信してもよい。たとえば、それらの他のマイク
ロプロセッサのオンチップメモリと通信してもよい。い
ずれにしても、これらの外部装置は例としてのものであ
り、この点で、マイクロプロセッサ12の外部の付加的
な要素は簡単さのため詳細に説明しない。このような要
素の例は熟練した当業者は知っていたり、確かめること
ができる。
【0012】上記のように、L2統合キャッシュ20も
命令を記憶する。これについては、L2統合キャッシュ
20のアドレス指定を生じ得る第二の発生源はL1命令
キャッシュ28である。詳しく述べると、L1命令キャ
ッシュ28はバス30を介してL2統合キャッシュ20
に接続される。その名前が示すように、L1命令キャッ
シュ28は(L1データキャッシュ18にデータが記憶
されるのに対して)命令を記憶する。実施例では、L1
命令キャッシュ28はL1データキャッシュ18と同様
の構成と大きさになっており、したがって合計8Kバイ
トの情報を記憶するように動作することができる2個の
部分からなるセット対応のキャッシュであることが好ま
しい。ここでは、情報は32バイトのブロックの命令で
あり、各部分は一度に128命令ビット(すなわち、1
6バイト)を出力するように動作することができる。
【0013】L2統合キャッシュ20のアドレス指定を
生じ得る第三の発生源はトランスレーション・ルックア
サイド・バッファ(TLB)32である。詳しく述べる
と、TLB32はバス34を介してL2統合キャッシュ
20に接続されている。実施例では、マイクロプロセッ
サの分野では普通に行われているように、論理命令アド
レスは対応する物理的アドレスに翻訳(transla
te)される。このような状況においてTLB32はい
くつかの既存の翻訳のテーブルを記憶しているので、後
続の時点にこのような翻訳にアクセスすることができ、
翻訳を再計算する必要は無い。更に、TLB32の探索
にミスがあった場合には、TLB32に結合されたハー
ドウェアは主メモリのページテーブルを通るテーブルウ
ォークを開始することにより、アドレス翻訳を決定す
る。これらの主メモリページテーブルは一部または全部
をL2統合キャッシュ20に記憶してもよい。実施例で
は、TLB32は256エントリ、4個の部分からなる
セット対応のものであり、各行が単一の翻訳を記憶する
ような大きさになっていることが好ましい。
【0014】図1に示すように異なるレベルのキャッシ
ュがあるが、このようなキャッシュは各々、仲裁回路3
6にも接続される。仲裁回路36は、低位のキャッシュ
のミスに基づいて各キャッシュへの相次ぐアクセスの一
般的な動作を示すために含まれる。たとえば、上記のよ
うに、L0データキャッシュ16へのキャッシュアクセ
スがキャッシュミスになった場合、L1データキャッシ
ュ18がアクセスされ、次にL2統合キャッシュ20が
アクセスされというようにして、以下同様に行われる。
したがって仲裁回路36は、動作に対する仲裁制御を表
し、熟練した当業者は種々のやり方でこれを具現するこ
とができる。仲裁回路36はL2統合キャッシュ20の
アクセス制御器22にも接続されていることに注意すべ
きである。このようにして、より低レベルのキャッシュ
のミスに基づいてL2統合キャッシュ20に対するアク
セス要求が示されたとき、仲裁回路36はこのアクセス
要求をアクセス制御器22に与える。しかし、後で詳し
く説明するように、アクセス制御器22は付加的な制御
レベルも表し、これによりこれらの要求は順位をつけて
表に並べられ、優先順位に基づいてL2統合キャッシュ
20に再送出される。
【0015】L2統合キャッシュ20のアドレス指定を
生じ得る第四の発生源は、L2統合キャッシュ20にス
ヌープ(snoop)要求を出す任意の回路である。当
業者には知られているように、スヌープはメモリ階層構
造の異なるレベルを通してメモリの一貫性を確実にする
機能である。スヌープ要求はマイクロプロセッサの内部
または外部で発生することができる。通常、スヌープ
は、メモリシステムの一つ以上のレベルに対するアドレ
スを示すことにより行われる。図1でこの機能は、BI
U26から仲裁回路36へのスヌープアドレス入力とし
て示されている。仲裁回路36は図1のキャッシュ構造
のいずれかにスヌープアドレスを示すことができる。各
キャッシュには、一貫性プロトコルを具現するというよ
うな当業者には知られている要因に応じて種々の仕方で
スヌープアドレスに応答するように指示することができ
る。たとえば、スヌープアドレスに対応する情報を記憶
しているか確かめることだけを行うようにキャッシュに
指示することができる。もう一つの例として、スヌープ
アドレスに対応する情報をそなえていれば、このような
情報を出力するようにキャッシュに指示することができ
る。更にもう一つの例として、スヌープアドレスに対応
する情報をそなえていれば、このような情報を無効にす
るようにキャッシュに指示することができる。いずれに
してもスヌープアドレスは、L2統合キャッシュ20に
対する更にもう一つの潜在的なアドレスとなる。
【0016】マイクロプロセッサ12のアドレス指定可
能なメモリ階層構造の種々の構成要素を示したが、次
に、メモリ階層構造からのアドレス指定可能な情報を必
要とするマイクロプロセッサの構成要素について説明す
る。これについては、マイクロプロセッサ12には全体
を38で表したパイプラインが含まれる。パイプライン
38を使用して、複合命令セットコンピュータ(CIS
C:complex instruction set
computer)で命令を受けて、処理することが
できる。パイプライン38は40から50までの偶数の
参照番号を付した6段階をそなえるものとして例示され
ている。40から50までの各段階は、いくつかの点に
おいて、当業者には知られている段階(一つまたは複
数)を表しており、異なる構成の中では名前や機能が異
なることがあり得る。したがって、以下の説明は例を示
すものであり、発明の実施例を限定するものではない。
パイプライン38について一般的に注意すべきことは命
令を開始段で受けるということである。本例では、開始
段は命令フェッチ段40である。命令フェッチ段40に
は、ブランチターゲットバッファ(BTB)41が含ま
れる。ブランチターゲットバッファ(BTB)41は、
当業者には知られているようにブランチ命令の状況で命
令のフェッチを助ける。段40による命令フェッチは、
上記のようなL1命令キャッシュ28からの第一のレベ
ルで行われる。命令フェッチによっては、特にメモリ階
層構造システムのより遅い構成要素にアクセスするため
に、1クロックサイクルより長い間、パイプラインを停
止させることがあり得るということに注意すべきであ
る。代表的には、受信された命令はその後、一つ以上の
復号段42で復号される。したがって、パイプラインに
は整数個の復号段が含まれ得るが、パイプライン38に
は例としてこのような復号段42が一つしか含まれてい
ない。通常、復号プロセスは多段(すなわち、多クロッ
ク)プロセスであることは理解されるはずである。復号
段42(一つ以上の段)はより複雑な命令を伸長して、
本明細書でマイクロオペレーションコードと呼ぶ一つ以
上の簡単なオペレーションとする。これらのマイクロオ
ペレーションコードは、代表的には単一の実行クロック
で実行させることができる。マイクロオペレーションコ
ードは構成や製造者により異なる名前が付けられている
ことに注意すべきである。たとえば、テキサスインスツ
ルメント社の規格では、マイクロオペレーションコード
はアトミックオペレーション(AOp)と呼ばれる。こ
れらのAOpは全体として完成すれば、そのオプコード
とオペランドがある場合にはそれらを含む命令セット命
令の完成と卒業を表す。AOpはいくつかのRISC命
令とほぼ同等であるので、マイクロプロセッサの種々の
部分に接続されて、復号された命令の実行を次に開始す
るコードであることに注意すべきである。したがって、
AOpは他の構成でROp、μOp、またはRISC8
6命令と呼ばれるものと同等である。
【0017】復号段42からマイクロオペレーションコ
ードが発生すると、スケジュール段44がマイクロプロ
セッサの対応する適当な実行ユニットに対してそれらの
コードを指定する。いくつかの協定では、スケジュール
段は各マイクロオペレーションコードのそれの実行ユニ
ットへの発行と呼ばれる。たとえば、マイクロプロセッ
サに三つの実行ユニット(たとえば、演算ユニット、ロ
ード/記憶ユニット、および浮動小数点ユニット)が含
まれている場合には、対応する各実行ユニットは3個以
内のマイクロオペレーションコードの群を形成して、単
一のクロックサイクルでの実行に対して割り当てること
ができる。実際には、たとえば、演算ユニットが1個よ
り多く、ロード/記憶ユニットが1個より多いというよ
うにして、マイクロプロセッサが3個より多い実行ユニ
ットを含むことがあり得る。このような場合には、単一
のクロックサイクルで実行すべきマイクロオペレーショ
ンコードの数をそれに応じて増大することができる。本
明細書で使用する用語として、マイクロオペレーション
コードの群はその大きさにかかわらず、「マシンワー
ド」と呼ばれる。このようなマシンワードが実行リソー
ス当たり50ビット以上を必要とすることもまれでない
ので、三つの実行ユニットをそなえたマイクロプロセッ
サは幅が150ビットのオーダのマシンワードに応答し
て動作することがあり得る。
【0018】スケジュール段44に続く段の説明をする
前に、マシンワードは上記の代わりとして異なる発生源
から、すなわちマイクロプログラムメモリ52から来る
ことがあるということにも注意すべきである。マイクロ
プログラムメモリはこの分野ではマイクロROMと呼ば
れることが多い。マイクロプログラムメモリ52は一般
に、マシンワードの種々の列(thread)で予めプ
ログラミングされたROMである。マイクロプログラム
メモリ52の出力は、スケジュール段44の出力と同様
にマルチプレクサ54の入力として接続される。その結
果として、ここでは詳細に説明する必要のない種々の制
御信号に応答してマルチプレクサ54は、スケジュール
段44からのマシンワードではなくてマイクロプログラ
ムメモリ52からのマシンワードを次の後続の段に与え
る。更に詳しく述べると、マイクロプログラムメモリ5
2に対するエントリポイントアドレスを発生することが
できる。この場合、このような列の最初のマシンワード
が出力され、次に後続の各クロックサイクルの間に列の
中の後続のマシンワードを出力することができる。した
がって、このプロセスを繰り返すことにより、マイクロ
プログラムメモリ52からの全体の列の中の一つの列が
パイプライン38の残りに送られる。パイプライン38
の残りは次にマイクロプログラムメモリの列の中の各マ
シンワードを実行し、完了することができる。
【0019】マルチプレクサ54の後のオペランドフェ
ッチ段46は、現在発せられているマシンワードの中の
マイクロオペレーションコードのいずれか一つ以上を実
行するために必要な任意のデータをフェッチする。代表
的にはこのデータには、レジスタまたはメモリからフェ
ッチされたオペランドが含まれる。メモリからデータを
検索する状況で、段46はL0データキャッシュ16に
接続され、そのキャッシュからデータを捜す。この場合
も、そのキャッシュレベルでミスが生じると、熟練した
当業者には明らかなように、より高位のレベル、たとえ
ばL1データキャッシュ18、L2統合キャッシュ2
0、または外部メモリ14からデータを捜す。命令フェ
ッチと同様に、いくつかのデータフェッチも1クロック
サイクルより長くパイプラインを停止させることがあ
る。
【0020】実行段48には、一つ以上の演算ユニッ
ト、一つ以上のロード/記憶ユニット、および浮動小数
点ユニットのような多数の実行ユニットが含まれる。こ
のような各ユニットに対して、ユニットはマシンワード
のそれに対応する部分を実行する。すなわち、各実行ユ
ニットはそれに割り当てられたマイクロオペレーション
コードでそれに対応する機能を遂行する。実行段48の
一つ以上の実行ユニットがデータにアクセスすることも
ある。したがって、段48はL0データキャッシュ16
にも接続され、その接続により、マイクロプロセッサ1
2のメモリ階層構造でそのキャッシュより高位の付加的
なデータ記憶構造だけでなく、そのキャッシュにもアク
セスする。
【0021】最後に、段50は命令を卒業する。これは
命令を完了し、マイクロプロセッサの構成された状態に
対して、もしあればその命令の影響を及ぼすということ
を意味する。更に、命令の結果があれば、それがレジス
タファイルのようなある記憶装置に書き込まれる。この
最後の動作は一般にライトバック(write bac
k)と呼ばれ、ときにはパイプラインの最終段の一部で
ないが、命令の卒業と同時に生じる機能と考えられる。
【0022】以上の説明から熟練した当業者には明らか
なように、マイクロプロセッサ12にはそのメモリ階層
構造からの情報にアクセスできる種々の回路が含まれ、
その情報はデータ、命令、またはアドレス翻訳テーブル
のいずれであってもよい。ここまで説明したアクセスは
このような情報の実際のフェッチを処理する。すなわ
ち、その情報がパイプライン38に直接フェッチされる
情報の検索を処理する。代表的には、フェッチされた情
報は、それがフェッチされたサイクルの直後のクロック
サイクルで作用を受ける。たとえば、命令フェッチ段4
0により第一のクロックサイクルでフェッチされた命令
は、第一のクロックサイクルに続く次のクロックサイク
ルに復号段42により復号することができる。もう一つ
の例として、第一のクロックサイクルにデータフェッチ
段46によりフェッチされるデータは、第一のクロック
サイクルに続く次のクロックサイクルに、実行段48の
実行ユニットが使用することができる。最後に、注意す
べきことは、上記のアクセスの型は説明のためのもので
あり、アクセスの他の型も熟練した当業者は確かめるこ
とができる。たとえば、ある命令は、パイプラインの種
々の異なる段階のいずれかにあるとき、メモリの階層構
造にアクセスして、情報をパイプラインにフェッチする
ことができる。更に、上記のパイプライン38の説明は
単に例示のためのものである。したがって当業者には知
られているように、他の型のパイプライン構成の種々の
パイプライン段を通るときに、命令は情報をパイプライ
ンにフェッチすることができる。
【0023】フェッチによる情報のアクセスについて説
明してきたが、システム10には、フェッチではなくて
プリフェッチを必要とする情報アクセスに関する種々の
回路および方法も含まれる。プリフェッチがフェッチと
異なるのは、プリフェッチされた情報は受信するとすぐ
に情報に作用する必要が実際にあるので、検索されるの
ではなくて投機的に検索されるという点である。本実施
例では、後で説明するようにシステム10のメモリ階層
構造を通る実効アクセス時間を短縮するためにプリフェ
ッチが使用される。更に、上記の「従来の技術」で説明
したように、プリフェッチはロード、データ記憶、また
は記憶質問のような場合に関係し得る。いずれにしても
この点で、後の実施例の理解を容易にするため、前置き
の説明を行う。前に述べたように、外部メモリ14に記
憶される情報は種々のキャッシュにも記憶され、異なる
キャッシュを特徴付けているのは、一部はメモリ階層構
造の中でのそれらの位置と、与えられたキャッシュが記
憶する情報の型である。プリフェッチの場合、マイクロ
プロセッサ12の中の種々の回路(それらの回路につい
ては後で説明する)の中の一つがプリフェッチを希望す
ると、要求する回路は所望の情報に対応するプリフェッ
チ要求を発する。後で詳細に述べるように、プリフェッ
チ要求には少なくとも所望の情報のアドレスと所望の情
報の大きさについての何らかの表示(たとえば、バイト
数)が含まれることが好ましい。実施例ではプリフェッ
チ要求が、より低レベルのキャッシュ構造ではなくて、
L2統合キャッシュ20に直接結合されることに注意す
べきである。換言すれば、フェッチ要求と異なりプリフ
ェッチ要求は、その要求により捜される特定の型の情報
を記憶しているかも知れない最低レベル(一つまたは複
数)のキャッシュにはアクセスしない。このアプローチ
が行われる理由は、実施例ではL2統合キャッシュ20
はその情報が下方包括的であるからである。換言すれ
ば、L2統合キャッシュ20より下位のキャッシュ内の
どの情報もL2統合キャッシュ20にも記憶されている
からである。たとえば、L1データキャッシュ18が情
報のキャッシュ列を記憶する場合には、その同じ情報が
L2統合キャッシュ20にも記憶される。したがって、
プリフェッチ動作がL2統合キャッシュ20に発せられ
てキャッシュミスになった場合、それより低位のキャッ
シュはどれも要求された情報を記憶していないこともわ
かるので、プリフェッチ動作を続行して、チップ上の情
報をL2統合キャッシュ20に入れることが有益であ
る。一旦情報がチップ上にもたらされると、その後、そ
の情報が必要になった場合、より容易にアクセスできる
(すなわち、少なくともL2統合キャッシュ20でアク
セスできる)ので、外部アクセスは必要でない。したが
って、これに関して注意すべきことは、プリフェッチの
利点のほとんどはプリフェッチされたデータをオンチッ
プで持ってくることにより行われる。換言すれば、プリ
フェッチが無くて、その情報に対するフェッチが後で発
せられ、その情報をオフチップで検索しなければならな
い場合には、このアクセスのために多数のクロックサイ
クルが必要になると思われる。しかし、情報をオンチッ
プでプリフェッチすることにより、オンチップキャッシ
ュの中の少なくとも1個から情報を入手することができ
る。したがって、その情報にアクセスするための時間
は、オフチップアクセスで必要とされる時間に比べてか
なり短くなる。更に、プリフェッチ動作がL2統合キャ
ッシュ20に発せられてキャッシュヒットになった場
合、情報はL2統合キャッシュ20から入手でき、L2
統合キャッシュ20に比べて階層構造でより低位のキャ
ッシュからさえも入手できることがわかっている。した
がって、いずれの位置でも、オフチップリソースから情
報を検索しなければならない場合に比べて比較的短い期
間内に、情報にアクセスすることができる。この好まし
い動作の付加的な利点については、後で説明する。いず
れにしても、付加的な介在無しに、一旦プリフェッチ要
求がL2統合キャッシュ20に示されると、L2統合キ
ャッシュ20がその情報を記憶していることを一般的に
確かめることができるか、またはその情報をより高位の
レベルのメモリから検索してL2統合キャッシュ20に
入れることができる。代替案として、プリフェッチされ
た情報をマイクロプロセッサ12の中の何か他のリソー
スに、たとえば一群のプリフェッチバッファの中に記憶
してもよい。ここで、それらのバッファはL2統合キャ
ッシュ20の一部であるか、または別個の構造である。
いずれにしても、一旦情報がプリフェッチされれば、そ
して投機的プリフェッチが正しければ、すなわち、その
情報がその後実際のフェッチに必要であれば、これはキ
ャッシュ(L2統合キャッシュ20)または他のオンチ
ップリソースからアクセス可能であるので、情報に対す
る実効アクセス時間が最小化される。
【0024】プリフェッチの上記の説明で更に注意すべ
きことは、次のような、本実施例が扱う二つの考慮すべ
き問題が生じるということである。第一に、どの回路が
プリフェッチを発するかという考慮すべき問題がある。
第二に、プリフェッチ情報のアクセスは付加的な介在無
しに上記のようにしてL2統合キャッシュ20に対して
進むと前に述べたが、後で詳しく説明するように本実施
例は場合によってはプリフェッチ機能で介在する回路お
よび方法を提供する。
【0025】上記したように、実施例では種々の回路が
プリフェッチを発し得る。これに関してまず注意すべき
ことは、実際のフェッチを発し得る上記の回路のいくつ
かはプリフェッチ要求も発し得るということである。た
とえば、実行段48はデータに対するプリフェッチ要求
を、たとえばそれの一つ以上のロード/記憶ユニットの
動作により発することができる。もう一つの例として、
当業者にはBTBは命令に対する実際のフェッチを発す
る(すなわち、直ちに復号等を行うためパイプラインに
配置するために実際のフェッチを発する)ことが知られ
ているが、本実施例では命令フェッチ段40のBTB
(ブランチターゲットバッファ)41もプリフェッチ要
求を発することができるので、一つ以上の命令がL2統
合キャッシュ20にプリフェッチされる。これについて
は、本発明と出願人が同じで、 に出願され、ここに引用
されている米国特許出願第 号、「マイクロプ
ロセッサにおけるブランチ予測とキャッシュプリフェッ
チの組み合わせ」(Combined Branch
Prediction And Cache Pref
etch In A Microprocessor)
(代理人処理番号TI−24154)を参照できる。マ
イクロプロセッサ12には、プリフェッチ要求を発する
ことができる付加的な回路が含まれる。詳しく述べると
マイクロプロセッサ12には更に、L2統合キャッシュ
20に接続されたロードターゲットバッファ(LTB)
56も含まれる(ただし代替実施例では、それが発する
プリフェッチ要求はどこか他の所に、たとえば、より低
レベルのキャッシュ(一つまたは複数)に接続すること
ができる)。この点で、そして前置きとして注意すべき
ことはLTB56に、あるデータフェッチ命令のアドレ
ス、およびそれらの命令により将来、どのデータが使用
されるかに基づくマイクロプロセッサ12による予測が
含まれる。このようにして、一旦データフェッチ命令自
身がパイプライン38にフェッチされると、LTB56
を使用してデータフェッチ命令に対応するエントリをそ
なえているか判定する。そうであれば、その予測および
多分、データフェッチ命令に対応する他の情報に基づい
て、LTB56はL2統合キャッシュ20にプリフェッ
チ要求を発することができる。他の介在無しに、L2統
合キャッシュ20から始まってメモリ階層構造を通って
上向きに伝搬するプリフェッチ動作によりプリフェッチ
要求に応答するので、データが現在オンチップである
(そのキャッシュの一つの中にある)と確認されるか、
またはそれがプリフェッチ要求に応答してマイクロプロ
セッサ上に検索することができる。したがって、一旦検
索された場合、命令がパイプライン38を通るときにデ
ータフェッチ命令がデータを要求すれば、データは後続
の使用に利用できる。他の介在が無い場合にプリフェッ
チ要求に応答してプリフェッチ動作が行われるというこ
とを少し前に説明した。しかし、これについては場合に
よって、要求に応答するプリフェッチ動作は他のシステ
ムパラメータに基づいて抑制または変形することができ
る。このようなシステムの更に詳しい情報については、
本発明と出願人が同じで、本発明と同じ日に出願され、
ここに引用されている米国特許出願第 号、「マイクロプ
ロセッサに基づくシステムでプリフェッチ処理のための
回路、システム、および方法」(Circuits,S
ystems,AndMethods For Pre
fetch Handling In A Micro
processor−Based System)(代
理人処理番号TI−24153)を参照できる。
【0026】LTB56はデータフェッチ命令によって
フェッチすべきデータのアドレスを予測する。説明の目
的で、このデータをターゲットデータと呼び、そのアド
レスをターゲットデータアドレスと呼ぶことにする。L
TB56の予測に応答して、データフェッチ命令が実行
される前に、ターゲットデータアドレスのターゲットデ
ータをマイクロプロセッサチップ上のキャッシュ(たと
えば、L2統合キャッシュ20)または他のメモリ構造
にプリフェッチすることができる。したがって、その後
データフェッチ命令がテータを要求すると、何か外部記
憶装置からデータをフェッチしないで、オンチップキャ
ッシュまたはメモリ構造からデータをフェッチすること
ができる。換言すれば、このようにしてプリフェッチす
ることにより、キャッシュミスのコストが低減されるの
で、マイクロプロセッサの効率が向上する。しかし、プ
リフェッチの利点があるとして、この利点が実現される
のは、LTBが与えられたデータフェッチ命令に対する
データパターンを正確に予測できる場合だけである。後
で詳細に説明するように、本実施例は種々の複雑なデー
タパターンに対して正確な予測を与えることにより従来
の技術を改善する。
【0027】少なくとも現在の出版物は科学分野のソフ
トウェアを対象とした簡単なロードターゲットの予測に
ついて論じており、したがって、このようなソフトウェ
アでしばしば出会うデータ構造を対象としている。これ
と異なり、本発明者は業務のためのデータレコード処理
ソフトウェアは科学および技術のソフトウェアと異な
る、かなり異なる型のデータ構造を含むことを認識し
た。したがって、現在のLTBはこのような異なるデー
タ構造に対して良好に適合していない。したがって本発
明者は本明細書で、データレコード処理ソフトウェアに
対して特に有益なターゲットデータのプリフェッチを許
容する種々の実施例を示す。レコード処理ソフトウェア
とはレコード集約的なプログラムを表わそうとしてい
る。レコードのファイル内の各レコードに対して、命令
のループが繰り返されることが多い。この概念を更に導
入するために、図2aは全体を60で表した簡単なレコ
ードを示しており、このレコードには例として60aか
ら60eまでの5個のフィールドが含まれている。もち
ろん、これより少ない数またはより多い数のフィールド
を使用してもよく、それらのフィールドの主題は非常に
変化してもよい。図2aの例は、後の説明のために一般
的な状況を示している。レコード60の最初のフィール
ド60aはEMPLOYEE NAME(従業員の氏
名)を表し、残りのフィールドはその従業員の属性を指
定する。詳しく述べると、第二のフィールド60bはそ
の従業員のI.D.NUMBER(ID番号)を表し、
第三のフィールド60cはその従業員のHOURLY
WAGE(時給)を表し、第四のフィールド60dはそ
の従業員のHOURS WORKED FOR THE
PAST MONTH(先月の労働時間)(以後HO
URS WORKED(労働時間)と略す)数を表す。
第五のフィールド60eは、後でより良く理解できるよ
うに、フィールド60cおよび60dに基づくその従業
員に対するPAY DUE(支払い賃金)を表す。
【0028】後の説明に対する背景を示すため、図2b
は4個のレコード62、64、66、および68を示
す。これらは図2aのレコード60のフォーマットに従
っている。しかし、この場合も後の説明のための例を示
すため、レコード62、64、66、および68の各々
に対して特定の情報が与えられている。たとえば、レコ
ード62には、EMPLOYEE NAME(従業員氏
名)としてアベ・アダムス(Abe Adams)、そ
のI.D.NUMBER(ID番号)として123、そ
のHOURLY WAGE(時給)として6.50ド
ル、そのHOURSWORKED(労働時間)数として
185、そのPAY DUE(支払い賃金)として12
02.50ドルがリストされている。熟練した当業者
は、各フィールドのデータについて再度説明しなくて
も、レコード64、66、および68の各々に対してど
のようにこのデータが示されているか理解できるはずで
ある。また、レコード62、64、66、および68に
示された実際の情報フィールドは虚構で作成されたデー
タに過ぎず、したがって、生死にかかわらず、いかなる
個人をも反映したものではない。
【0029】本実施例がLTB技術に関連するものであ
るとして、LTB56の予測が充分な回数、正確である
場合には、LTB56の使用はマイクロプロセッサの効
率を改善する。これに関して、レコードフォーマットを
導入し、本発明者はデータレコードを処理するためのあ
る公知の手法の環境で予測が充分に許容できるようにす
るためのLTB56の構成の仕方を理解した。図3はこ
のような手法の一つを紹介するものである。詳しく述べ
ると、データレコード処理ソフトウェアにより普通に使
用される一つの手法では、三つの別々のメモリエリアを
使用して、三つの異なるデータレコードの処理が重なり
合えるようにする。このプロセスを示すため、図3には
AREA1、AREA2、AREA3と名付けられた三
つの、このようなメモリエリアが示されている。代表的
には、図3に関連して説明したやり方で使用されるAR
EAはメモリ内の別々のページであるが、メモリエリア
を供するための他の手法を使用してもよい。いずれにし
ても、三つのAREAの中の各エリアの位置は、その開
始アドレスによりソフトウェアにはわかる。説明のため
の例を示すため、AREA1はメモリのアドレス120
0で始まり、AREA2はメモリのアドレス2200で
始まり、AREA3はメモリのアドレス5200で始ま
るものとする。例示のため、種々のAREAのアドレス
は熟練した当業者には理解されるように16進数であ
る。
【0030】一旦、図3のAREAの位置がわかれば、
各AREAはすぐ後に説明するようにレコードファイル
のレコードの中の一つのレコードに対する一時的な作業
スペースとして使用される。例として図2bのレコード
を使用すると、各メモリAREAは相次ぐレコードのた
めに使用される。更に、このようなAREAの使用は次
のように重なり合う。図3でt1と示された第一の時点
に、AREA1の開始アドレスである1200から始ま
って、データレコードがAREA1にフェッチされる。
したがって本例では、図2bからのレコード62がAR
EA1にフェッチされる。第五のフィールド(すなわ
ち、PAY DUE(支払い賃金))が図3に示されて
いるが、その値は最初はレコードの中に無くて、後で説
明するように、後で計算されて、メモリに書き込まれる
ことに注意すべきである。また注意すべきことは、この
ようなレコード62の入力は代表的には、別個のダイレ
クトメモリアクセス制御器(DMA)等を使用するなど
して、中央処理装置(CPU:central pro
cessing unit)に負担をかけることなく行
われるということである。このようにして、t1の間
に、DMAを使用して、ディスク記憶装置のようなある
記憶装置からレコード62がフェッチされ、AREA1
の開始アドレスである1200から始まってAREA1
に入力される。図3でt2で示される第二の時点には、
データレコードがAREA2の開始アドレスである22
00から始まってAREA2にフェッチされる。したが
って本例では、図2bからのレコード64がDMAを介
してAREA2に入力される。しかしt2の間で更に注
意すべきことは、レコード64がAREA2に入力され
ている間に、AREA1のレコード62がCPUによっ
て処理されつつあるということである。すなわち、レコ
ード62のフィールドは、それらのフィールドのどれか
を読み出すため、そしてそれらのフィールドに情報を書
き込むためにプログラムコードが利用できる。その後、
図3でt3で示される第三の時点には、データレコード
がAREA3の開始アドレスである5200から始まっ
てAREA3にフェッチされる。したがって本例では、
図2bからのレコード66がDMAを介してAREA3
に入力される。しかし、AREA1とAREA2の両方
が既にレコードを受けているので、t3の間で更に注意
すべきことは、DMAを介してレコード66がAREA
3に入力されている間に、AREA2のレコード64が
処理されつつあり、AREA1のレコード62が出力さ
れつつあるということである。AREA1のレコード6
2について更に詳しく述べると、注意すべきことは、こ
れもDMA等を使用することによりCPUに負担をかけ
ることなくディスク記憶装置に出力されるということで
ある。
【0031】AREA1からAREA3のフォーマット
が与えられているが、それらのAREAに記憶されたレ
コードの処理を続ける前に注意すべきことは、エリア当
たり一つのレコードの上記のフォーマットは例示のため
のものであるということである。したがって、代替案と
して、この性質のAREAに対する、ある入力/出力は
ブロック状レコードによって行われる。この用語は当業
者には知られている。ブロック状レコードは、複数のレ
コードが単一のエリアに配置される場合を示す。ここ
で、それらの複数のレコードはブロックと呼ばれる。た
とえば、図3で、レコード62および64をAREA1
に記憶し、レコード66および68をAREA2に記憶
することができる。このように、以下に教示される種々
の概念から理解されるように、本実施例により異なるデ
ータパターンが実現され、収容することができる。
【0032】AREA1からAREA3の各AREAが
上記のようにしてレコードを受けた後、注意すべきこと
は、レコードのファイルの中の各レコードを処理しなけ
ればならないので、手順が続行されるということであ
る。このようにして、t4で、レコードファイルの中の
次のレコードがAREA1に入力される。図3には示さ
れていないが、t4の間に、図2bのレコード68がA
REA1に入力される。更に、この同じt4の間に、レ
コード64がAREA2から出力され、AREA3のレ
コード66が処理される。この手順が与えられると、熟
練した当業者には理解できるように、相次ぐレコードを
メモリ内で効率的に処理できるとともに、ディスク記憶
装置からの、そしてディスク記憶装置へのそれらのレコ
ードのアクセス時間を短縮できる。換言すれば、三つの
メモリエリアでなく、単一のメモリエリアだけを使用す
る場合には、単一のレコードがそのエリアに入力され、
処理された後、そのエリアから出力され、その後、次の
単一レコードについて同様のことが行われ、以下同様に
進められる。この後者の手順では、一つのレコードの入
力の時間、もう一つのレコードの処理の時間、更にもう
一つのレコードの出力の時間に重なりが無いので、多数
のレコードを処理するためには、かなり、より長い時間
が必要とされる。したがって、要するに、図3に示す手
法はレコード処理効率を改善する。しかし、更に、後で
説明するように、図3の手順がどのようにして検出され
てLTB56に記録される予測可能性のレベルを生じる
かということも本発明者は理解した。上記のプロセスと
組み合わせてプリフェッチを使用することにより、マイ
クロプロセッサの効率を更に改善することができる。
【0033】本実施例の説明を更に進める。次の表1
は、図2bのレコードを処理するための簡単な擬似コー
ドプログラムを示す。
【表1】 LTB56の構成の説明を進める前に、表1の擬似コー
ドに関連した付加的な注釈を加えることは有用である。
まず注意すべきことは、擬似コードとして表1のコード
は単なる一例に過ぎず、コードにより示される機能を遂
行するためにマイクロプロセッサが使用する実際のコー
ドは、形式、複雑さの一方または両方が異なり得るとい
うことである。いずれにしても、表1が示そうとしてい
ることは、種々のプログラムコード行がメモリの中のど
こかに記憶されるということと、プログラム行が図2b
のレコードファイルの中の各レコードに対して種々の動
作を行うということである。プログラムコードのメモリ
記憶について注意すべきことは、表1は各プログラム行
に対するメモリアドレスをリスト表示したものであり、
アドレスはアドレス10から始まり、相次ぐ命令毎に1
づつ大きくなる。したがって、この点以降、このような
各命令は表1のそのアドレスで表す。コードにより行わ
れる動作に対して表1の例は、各従業員が先月かせいだ
金額を計算するものである。すなわち、表1の例は図2
aに示されたPAY DUE(支払い賃金)フィールド
を計算するものである。詳しく述べるとPAY DUE
(支払い賃金)は、各従業員のHOURLY WAGE
(時給)にその従業員のHOURS WORKED(労
働時間)を乗算することにより計算される。更に詳しく
述べると、命令11および12はこれらの乗数の各々を
それぞれのレジスタにロードし、命令13はそれらのレ
ジスタの乗算を行い、積を第三のレジスタに記憶する。
最後に、命令13は結果を対応するレコードに対するP
AY DUE(支払い賃金)フィールドに記憶させる。
もちろん、種々の付加的な動作を行うことはできるが、
本例は下記の原理を説明するのに充分なはずである。
【0034】本発明者は次に、図3のメモリAREAに
関連して観察され、そして本実施例に従ってLTB56
により予測され得る動作のルーピングパターンについて
説明する。このルーピング手法を説明するために、図2
bのレコードの処理段を通って上記の擬似コードをたど
ってみる。J=1に対する擬似コードについては、レコ
ード62(すなわち、Abe Adams)が処理され
る。命令11はターゲットデータアドルス1214にあ
るAbeのHOURLY WAGE(時給)のターゲッ
トデータをロードする。命令12はターゲットデータア
ドレス1218にあるAbeのHOURS WORKE
D(労働時間)のターゲットデータをロードする。命令
13は、これらの二つの乗数の積を計算し、これをレジ
スタREG3に記憶させる。最後に命令14は命令13
により得られた積を、PAY DUE(支払い賃金)フ
ィールドに対応するメモリAREA位置、すなわちター
ゲットデータアドレス121Cに記憶させる。次に命令
15によりJが増大させられ、J=2に対して、同じ命
令によりレコード64(すなわち、Barry Bar
nes)に対するデータが処理される。したがってこの
場合も、命令11がターゲットデータアドレス2214
にあるBarryのHOURLY WAGE(時給)の
ターゲットデータをロードする。命令12は、ターゲッ
トデータアドレス2218にあるBarryのHOUR
S WORKED(労働時間)のターゲットデータをロ
ードする。その後、積が計算され、ターゲットデータア
ドレス221Cに書き込まれる。再びJが増大させら
れ、J=3に対して、同じ命令によりレコード66(す
なわち、Cindy Cox)に対するデータが処理さ
れる。したがってこの場合も、命令11がターゲットデ
ータアドレス5214にあるCindyのHOURLY
WAGE(時給)のターゲットデータをロードする。
命令12は、ターゲットデータアドレス5218にある
CindyのHOURS WORKED(労働時間)の
ターゲットデータをロードする。その後、積が計算さ
れ、ターゲットデータアドレス521Cに記憶される。
【0035】ファイルの最初の三つのレコードを処理し
たとき、前に述べたようにAREA3のレコードが上記
の命令によって処理されているとき、AREA1に次の
レコードがロードされる。したがって上記の例では、A
REA3のCindy Coxに対するレコードが処理
されている間、Diane Davisに対するレコー
ド68がAREA1にフェッチされている。したがっ
て、J=4に対して表1からの命令が続行され、同じ命
令によりレコード68(すなわち、DianeDavi
s)に対するデータが処理される。したがってこの場合
も、命令11がターゲットデータアドレス1214にあ
るDianeのHOURLY WAGE(時給)のター
ゲットデータをロードする。命令12は、ターゲットデ
ータアドレス1218にあるDianeのHOURS
WORKED(労働時間)のターゲットデータをロード
する。その後、積が計算され、ターゲットデータアドレ
ス121Cに記憶される。最後に、図2bには付加的な
データが示されていないが、熟練した当業者には理解さ
れるように、相次ぐ各レコードに対して命令10から1
4がメモリAREA毎に繰り返される。したがって、一
つのメモリAREAのデータを処理したとき、プロセス
はルーピング形式で次のメモリエリアに継続する。すな
わち、AREA1から、AREA2に、AREA3に、
そして再びAREA1に戻る。
【0036】上記を想定して、本発明者は次に上記のこ
とからのデータロードの予測可能性についての本発明者
の理解について説明する。たとえば、命令11の各生起
について考えてみる。J=1の場合、命令11がターゲ
ットアドレス1214からのデータを要求した。J=2
の場合、命令11がターゲットアドレス2214からの
データを要求した。J=3の場合、命令11がターゲッ
トアドレス5214からのデータを要求した。最後に、
J=4の場合、命令11がターゲットアドレス1214
からのデータをもう一度要求した。このようにして、更
に付加的なレコードの処理が行われると、ターゲットア
ドレスのパターン、すなわち1214から2214へ、
5214へ、1214に戻るパターンがあり、各レコー
ドに対して繰り返される。したがって、レコードの完全
性のため、本発明者はループを予測できるということを
理解する。これにより、単一の命令(すなわち、命令1
1)がルーピング形式で、すなわち第一のアドレスか
ら、第二のアドレスに、第三のアドレスに、そして第一
のアドレスに戻る形式でデータを要求する。更に、命令
12もこのようにしてループ状となるが、アドレス12
18から、2218へ、5218へ、1218に戻り、
これが繰り返される。実際、種々のデータレコード処理
ソフトウェアプログラムに対して、このプロセスが生じ
得ることがわかる。したがって、与えられたデータフェ
ッチ命令に対して、本実施例はこのようなルーピング手
法を検出する。更に本実施例は、データフェッチ命令が
検出された形式でループ動作を続けるということを更に
予測する。最後に、(好ましくはLTB56に記憶され
ている)予測に基づいて、本実施例はこのルーピング形
式で使用されるべきデータをプリフェッチすることがで
きる。これにより、キャッシュミスが最少限となり、後
で詳しく説明するようにマイクロプロセッサの効率が改
善される。
【0037】図4は上記のLTB56に示された単一の
エントリ56の第一の実施例を示す。実施例ではLT
B56に8個の部分からなるセット対応構造で2048
個のオーダのエントリを含めることができるが、図4に
は1個の部分の1エントリだけが示されている。本実施
例の残りのエントリは同じフォーマットをそなえること
が理解されるはずである。一般にLTB56の各エント
リは、異なるデータフェッチ命令に対応する情報を記憶
するように動作することができる。したがって後でより
良く理解されるように、LTB56で2048個までの
異なるデータフェッチ命令を一度に識別することができ
る。各エントリ特有の形式化については後で詳細に説明
するが、ここではLTB56全体の効果を簡単に紹介す
る。一般に、データフェッチ命令が命令フェッチ段40
によってフェッチされたとき、LTB56が探索され
て、そのフェッチ命令に対応するエントリをLTB56
が記憶しているか判定される。LTB56が記憶してい
ない場合には、後で詳細に説明するようにエントリが作
成され、更新される。一旦エントリが作成され、妥当な
状態に設定されると、上記のようにそれはデータフェッ
チ命令によりフェッチされるべきデータのアドレスの一
つ以上の予測を与える。換言すれば、データフェッチ命
令が命令フェッチ段40によりフェッチされ、LTB5
6がそのデータフェッチ命令に対応する妥当なエントリ
をそなえていることが見出されたとする。この場合、デ
ータフェッチ命令がまだ命令パイプライン38の相対的
に上にある間に、LTB56からの予測を使用して、L
TBエントリによって予測されたデータアドレスに対す
るプリフェッチ要求が発せられる。その結果、この要求
に応答して、データをマイクロプロセッサチップ上のキ
ャッシュ等にプリフェッチすることができる。その後、
データフェッチ命令がその実行段に達したとき、それは
キャッシュから直接データをフェッチすることができ、
マイクロプロセッサ外部のメモリからそれにアクセスす
る必要は無い。このようにして、エントリ56につい
ての以下の詳細な説明からより良く理解されるように、
マイクロプロセッサの効率が向上する。
【0038】エントリ56の最初の三つの値はデータ
フェッチ命令に一般的なものであり、残りの7個の値は
データフェッチ命令に対応するデータをプリフェッチす
るための予測に向けられている。これらの値の各々につ
いては後で説明する。
【0039】エントリ56の一般的な値から始める
と、その最初の値はADDRESSTAG(アドレスタ
グ)である。ADDRESS TAGはデータフェッチ
命令がメモリのどこに記憶されているかというアドレス
をリストしたものである。たとえば、エントリ56
表1の第一のロード命令に対応していれば、ADDRE
SS TAGは11の値に対応する。エントリ56
第二の値には、データフェッチ命令についてのMISC
ELLANEOUS CONTROL INFORMA
TION(雑制御情報)が含まれている。ここでこのよ
うな情報は、ブランチ命令に対するBTBにリストされ
た情報と類似のものとすることができる。たとえば、こ
の値の一部として妥当なインジケータを記憶することが
できる。これにより、エントリ内の情報が妥当である
か、そしてこのような情報を分析する他の回路が依存で
きるか、後で判定することができる。他の例について
は、熟練した当業者は確かめることができる。エントリ
56の第三の値は、データフェッチ命令のACCES
S TYPE(アクセス型)である。アクセス型の種々
の例は前に紹介した。たとえば、もっと単刀直入なアク
セス型はフェッチ要求である。この場合、データフェッ
チ命令はあるメモリ位置から情報を検索する(すなわ
ち、ロードする)ために探索を行う。しかし、もう一つ
の例として、要求はデータ記憶質問であるかも知れな
い。この場合、データ記憶質問はあるメモリ構造を準備
してデータを検索する要求であるが、実際にはデータは
検索されない。かわりに、要求はデータフェッチ記憶質
問であるかも知れない。ここで、データ記憶質問と同様
に、データフェッチ記憶質問でも、あるメモリ構造を準
備してデータを検索する。しかし、この場合は更に、準
備の一部として一群のデータが検索されてキャッシュに
入る。その群の一部はその群への後続の記憶により上書
きされるものと予想されている。更に他の型の要求につ
いては、熟練した当業者は確かめることができる。
【0040】エントリ56の予測に関する値について
説明しているが、エントリ56の第四の値はNEXT
POINTER(ネクストポインタ)である。これ
は、対応するデータフェッチ命令に対してフェッチされ
るべきデータの次の予測として三つの異なるポインタと
それに対応する制御のうちどれを使用するかを示すもの
である。更に詳しく述べると、エントリ56の残りの
6個の値は3個のポインタ(POINTER A、PO
INTER B、およびPOINTER C)として示
されている)とそれらの各ポインタに対する制御値(そ
れぞれA CONTROL、B CONTROL、C
CONTROLとして示されている)に対応している。
各POINTERはターゲットデータアドレスを記憶す
ることができる。したがって、そのアドレスにおけるデ
ータはエントリ56に結合された命令に対してプリフ
ェッチされるべきターゲットデータの予測を表す。CO
NTROL情報については後で詳しく説明する。この点
で、NEXT POINTER値に戻って説明する。下
記の例を使用して示すようにその値は、3個のポインタ
およびそれに対応するCONTROLの中のどれが、エ
ントリ56に対するADDRESS TAGで識別さ
れたデータフェッチ命令に対する次のターゲットデータ
アドレスを予測するかを示す。したがって、NEXT
POINTERは2ビットの値であることが好ましい。
ここで2ビットの状態は、次の表2に示すように3個の
POINTERとそのCONTROLの中の一つを示
す。
【表2】 表2でNEXT POINTERの2進値が00であれ
ば、これは与えられたデータフェッチ命令に対するター
ゲットデータアドレスに対する予測として使用されるべ
き次のPOINTERがPOINTER Aであるとい
うことを示す。これにより、POINTER Aに対応
するCONTROL情報によって制御される。同様に、
値01および10はそれぞれPOINTER Bおよび
POINTER Cに対応する。最後に、11の値は代
替実施例で使用するために取って置かれる。
【0041】3個のPOINTERの各々に対するCO
NTROL情報は、POINTERが妥当であるか否か
を示すため、そして妥当であれば、それの対応するPO
INTERに対するフェッチパターン型を符号化するた
めに使用される。フェッチパターン型については、下記
のように本実施例はデータフェッチパターンの異なる型
を検出することができる。これらのモードの一つはルー
プモードであり、これは上記の表1の擬似コードと関連
して説明した例に対応し、後で更に説明する。他のモー
ドにはストライディング(striding)パターン
が含まれるが、これについては後で詳しく説明する。い
ずれにしても、検出されたパターンはCONTROL情
報に符号化される。これまでルーピング(loopin
g)だけが紹介されてきたので、表3にはCONTRO
L情報の種々の表示が示されている。これらはPOIN
TERが妥当であるか否か、そして妥当である場合に
は、それに対応するルーピングの型を3ビットの値で示
す。
【表3】 表3で、CONTROLの2進値が000に等しいと、
これは対応するPOINTER値が妥当でないというこ
とを示す。一方、CONTROLの左端のビットが1に
等しければ、CONTROLの右の2ビットは、下記の
例で示すように、現在のPOINTERが指定するアド
レスからフェッチした後、制御がそれにループを形成す
べきPOINTERを指定する。最後に、CONTRO
Lの左端のビットが0に等しく、右側の2ビットの中の
1ビットが非0であれば、後で詳しく説明するように代
替実施例で使用するための更に付加的なモードが表され
る。
【0042】エントリ56の特性と上記の種々の側面
を更に示すため、表1に関連してエントリ56の中の
値の設定について以下説明する。更に詳しく述べると、
以下の説明は表1の命令11に当てはまるが、表1の命
令12にも同様に当てはまる。前に述べたように表1の
プログラムは、マイクロプロセッサ12がアクセスでき
るメモリ、たとえば外部メモリ14の中に命令として記
憶される。したがって、それらの命令を処理するため、
各命令がパイプライン38内にフェッチされ、それを通
ってその実行段に向かう。したがって、このプロセスの
間に、命令11が初めて(すなわち、命令10のJ=1
に対して)命令フェッチ段40によりフェッチされる。
この点で当業者には知られた手法により、命令がロー
ド、記憶、記憶質問等のようなデータフェッチ命令であ
るということが検出される。命令がデータフェッチ命令
であると検出されたことに応答して、LTB56はそれ
のエントリの一つが命令11に対応するか判定するよう
に求められる。現在の例では、これが命令11がフェッ
チされる最初であるので、LTB56は命令11に対応
するエントリをそなえていない。したがって、後で説明
するようにエントリが作成される。更に、エントリがL
TB56で検出された場合には、命令11に制御タグを
付けることもできるので、それがパイプライン38を通
るとき、LTB56でそれに対して既に設定されたエン
トリをそなえるデータフェッチ命令であることがわか
る。
【0043】LTB56内でのエントリの作成にはま
ず、LTB56のどこでエントリを作成するか決めるこ
とが含まれる。これについては、LTB56にまだ未使
用の行があれば、それらの行の一つをランダムまたは何
か置換アルゴリズムにより選択して、命令11に対応す
るように使用することができる。これに反して、LTB
56の各行が他のデータフェッチ命令に対して既に設定
されていれば、既存の各エントリに対応する最古使用
(LRU:least recently used)
がチェックされ、最古使用であるエントリが立ちのかせ
られ(すなわち、無効にされ)て、その場所に新しいエ
ントリを形成することができる。LRUを使用してテー
ブル内のエントリを立ちのかすことについては、キャッ
シュの使用におけるように当業者には知られており、こ
こに引用されているパターソンとヘネシー著「コンピュ
ータ構成の定量的アプローチ」というテキストの第5章
に示されている(”Computer Archite
cture A Quantitative Appr
oach”,Second Edition,by P
atterson and Hennessy,Mor
gan Kaufmann Publishers,I
nc.)。二つの手法に構わず、本発明の実施例に戻っ
て、現在の例としてエントリ56の中の命令11のた
めにエントリが形成されたものとする。エントリ56
を選択すると、それのアドレスタグの値が、11に対応
するように、すなわち現在のデータフェッチ命令がメモ
リの中に記憶されているアドレスを表すように、設定さ
れる。更に後でより良く理解されるように、NEXT
POINTERの値が01に、すなわち、POINTE
RBが命令11の次の生起の際に使用されるべき次のポ
インタであるということを示すように設定される。更
に、これは命令11の最初の生起であるので、命令11
の次の生起がどのようなデータを必要とするかを予測す
る情報は一般に充分でない。しかしデフォルトとして、
現在のデータフェッチ命令(すなわち、命令11)がル
ープモードの一部である、すなわち上記の表1の擬似コ
ードの例によって示されるように命令の生起毎にルーピ
ング形式でデータが集められるものと予測される。した
がって、POINTER Aのターゲットアドレスから
POINTER Bのターゲットアドレスに向かってル
ープが形成されると考えられるので、POINTER
Aに対応するA CONTROL情報が101に設定さ
れる。これにより、次のターゲットアドレスがPOIN
TER Bにより指示されるループモードが予測され
る。しかし、この予測を超えて、残りのPOINTER
BおよびPOINTER Cに対応するCONTRO
L情報値が非妥当(すなわち、表3に示す000)に設
定される。エントリ56が設定された後、結局、命令
11はパイプライン38を通り、それが必要とするデー
タに対する実際のアドレスを確かめることができる。し
かし、この点で、そのアドレスがPOINTER Aの
値の中に記憶される。図3に関連して示した例で説明し
たように、命令11の最初の生起はアドレス1214か
らのデータを必要とする。したがって、1214のアド
レスがPOINTER Aの中に記憶される。
【0044】表1からの上記の説明を続ける。J=2で
ある次の繰り返しのため、命令14は制御を命令10に
戻す。したがって、2回目に、命令11が命令フェッチ
段40によってフェッチされる。再び、命令11がデー
タフェッチ命令であることが検出されるので、LTB5
6を使用して、それのエントリの一つが命令11である
か判定する。現在の例では、命令11の前の生起のた
め、そして他のどの介在事象もエントリに影響を及ぼさ
なかったと仮定しているので、エントリ56のADD
RESS TAGが命令11に対応するものとして検出
される。これに応答して、エントリ56のNEXT
POINTERを使用して、予測されたターゲットデー
タアドレスのどれが命令11に対応するものか判定す
る。上記のようにNEXT POINTERはPOIN
TER Bを示すので、可能性のあるターゲットデータ
アドレスとしてPOINTER Bの値が調べられる。
更に上記のようにPOINTER Bに対応するB C
ONTROLは現在、非妥当に設定されている。したが
って、この点で、命令11の第二の生起に対するターゲ
ットデータアドルスの予測は無い。これに応答して、ま
ずNEXT POINTERの値が10に設定される。
すなわち、POINTER Cが、命令11の次の生起
時に使用するべき次のポインタであることが示される。
更に、再びデフォルトとして、現在のデータフェッチ命
令(すなわち、命令11)がループモードの一部となる
ことが予測される。したがって、POINTER Bの
ターゲットデータアドレスからPOINTER Cのタ
ーゲットデータアドレスに向かってループが形成される
と考えられるので、B CONTROLが110に設定
される。これにより、次のターゲットアドレスがPOI
NTER Cにより指示されるループモードが予測され
る。その後、再びプロセスは命令11がパイプライン3
8を通過するのを、それの実際のターゲットデータアド
レスが判定されるまで待つ。図3に関連して示した例で
は、上記のように命令11の第二の生起はアドレス22
14からのデータを必要とするので、2214のアドレ
スがPOINTER Bに記憶される。これまでの例の
ように二つのターゲットデータアドレスが二つのPOI
NTER(たとえば、POINTER AおよびPOI
NTERB)に記憶された後、(または代わりとして、
第二のアドレスが記憶されているのと同時に、またはそ
れが記憶される前に)、後で明らかになる理由により付
加的な試験が行われる。詳しく述べると、二つのターゲ
ットデータアドレスが一致するか判定される。しかし、
現在の例では、このような一致は無い。したがって、後
で詳しく説明するようにループモードの仮定のもとでプ
ロセスが続行される。
【0045】表1からの上記の例について更に説明を続
ける。J=3である次の繰り返しのため、命令14は制
御を命令10に戻す。したがって、3回目に、命令11
が命令フェッチ段40によってフェッチされる。再び、
命令11がデータフェッチ命令であることが検出され、
LTB56を使用して、命令11に対応するエントリ5
にアクセスする。これに応答して、エントリ56
のNEXT POINTER値を使用して、予測された
ターゲットデータアドレスのどれが命令11に対応する
ものか判定する。NEXT POINTERはPOIN
TER Cを示すので、可能性のあるターゲットデータ
アドレスとしてPOINTER Cの値が調べられる。
しかし、上記のようにPOINTER Cに対応するC
CONTROLは現在、非妥当に設定されている。し
たがって、この点で、命令11の第三の生起に対するタ
ーゲットデータアドレスの妥当な予測は無い。これに応
答して、まずNEXT POINTERの値が00に設
定される。すなわち、POINTER Aが、命令11
の次の生起時に使用するべき次のポインタであることが
示される。もう一度、デフォルトとして、現在のデータ
フェッチ命令11がループモードの一部となることが予
測される。これにより、POINTER Cのターゲッ
トデータアドレスからPOINTER Cのターゲット
データアドレスに向かってルーピングされるので、PO
INTER Cに対応するC CONTROLが100
に設定される。これにより、次のターゲットアドレスが
POINTER Aにより指示されるループモードが予
測される。その後、再びプロセスは命令11がパイプラ
イン38を通過するのを、それの実際のターゲットデー
タアドレスが判定されるまで待つ。図3に関連して示し
た例では、上記のように命令11の第三の生起はアドレ
ス5214からのデータを必要とするので、5214の
アドレスがPOINTER Cに記憶される。これまで
の例のように三つのターゲットデータアドレスが三つの
すべてのPOINTERに記憶された後、(または代わ
りとして、第三のアドレスが記憶されているのと同時
に、またはそれが記憶される前に)、後で明らかになる
理由により付加的な試験が行われる。詳しく述べると、
最も最近のターゲットデータアドレス(たとえば、PO
INTER Cの中にあるターゲットデータアドレス)
が最も最古のターゲットデータアドレス(たとえば、P
OINTER Aの中にあるターゲットデータアドレ
ス)と一致するか判定される。しかし、現在の例では、
このような一致は無い。したがって、後で詳しく説明す
るようにループモードの仮定のもとで、現在説明してい
るプロセスが続行される。しかし注意すべきことは、後
で詳しく説明する代替プロセスでは、最も最近のターゲ
ットデータアドレス(たとえば、POINTER Cの
中にあるターゲットデータアドレス)がPOINTER
Bの中にあるターゲットデータアドレスとも一致する
かという判定も行われるということである。
【0046】説明の、この点現在で上記の表1の例をま
とめると、命令11が3回処理された例でエントリ56
が図5にリストされた値となる。したがって要約する
と、まず使用すべきNEXT POINTERはPOI
NTER Aである。更に、各POINTERに対して
ループモードが予測される。換言すれば、POINTE
R Aが第一のターゲットデータアドレス(すなわち、
1214)を表し、それに対応するA CONTROL
が予測するところによれば、POINTERAにより指
示されるデータが命令11により使用された後、それの
次の生起がPOINTER Bのターゲットデータアド
レスに対してループとなる。同様に、POINTER
Bが第二のターゲットデータアドレス(すなわち、22
14)を表し、それに対応するB CONTROLが予
測するところによれば、POINTER Bにより指示
されるデータが命令11により使用された後、それの次
の生起がPOINTER Cのターゲットデータアドレ
スに対してループとなる。POINTER Cが第三の
ターゲットデータアドレス(すなわち、5214)を表
し、それに対応するC CONTROLが予測するとこ
ろによれば、POINTER Cにより指示されるデー
タが命令11により使用された後、それの次の生起がP
OINTER Aのターゲットデータアドレスに戻るル
ープを完成する。
【0047】上記のことから熟練した当業者には明らか
なように、命令11の後続の生起毎に、LTBエントリ
56はその命令に対するデータフェッチのパターンを
正確に予測する。たとえば、データフェッチ命令の第四
の生起に対する例を続けると、命令フェッチ段40によ
り命令11がフェッチされ、エントリ56が検出さ
れ、使用される。POINTER Aが現在制御しつつ
あるということをNEXT POINTER値が示し、
A CONTROLがループモードを示し、そして命令
11のこの第四の生起ではターゲットデータアドレス1
214のターゲットデータが必要になるということをP
OINTER Aの値が予測する。したがってこの点
で、LTB56またはそれと結合された回路によりプリ
フェッチ要求が発せられ、ターゲットデータアドレス1
214のデータのプリフェッチが要求される。したがっ
て図1bおよび図2に戻って、この第四の生起によりプ
リフェッチ要求が発せられ、Diane Davisに
対するHOURLY WAGE(時給)が検索される。
このように、データフェッチ命令11がパイプライン3
8を通るとき、このデータをオンチップキャッシュにプ
リフェッチすることができる。その後、データフェッチ
命令11が実行されるとき、それは代替案のように外部
メモリから検索する必要無しにオンチップキャッシュか
らデータをロードすることができる。この代替案では、
はるかに長い時間を要する。
【0048】データフェッチ命令11の第四の生起と、
その命令の後続の各生起を更に使用して、エントリ56
が正確であることを保証する。たとえば、第四の生起
の間に、データフェッチ命令の実行の前または実行の間
に、それの実際のターゲットデータアドレスが判定され
る。現在の例で、図2bのレコードでは、実際のターゲ
ットデータアドレスは予測されたアドレスと同じ、すな
わち、1214のアドレスとなる。その結果、エントリ
56はその予測が正しいままとなり、修正する必要は
無い。実際、熟練した当業者には理解されるように、デ
ータフェッチ命令11の相次ぐ生起毎に、図5の値によ
り示される予測は正確である。これにより、データフェ
ッチ命令11の各生起に対して、メモリアドレス121
4、2214、および5214からのデータの連続した
プリフェッチを行うことができる。したがって、これら
の各場合に、エントリ56の正確さが確かめられ、そ
の中の値は乱されない。
【0049】三つのアドルスを含むルーピングパターン
に対してエントリ56を成功裏に設定する例を示し
た。命令11の第二の繰り返し(すなわち、J=2)に
関連して説明したように、二つのターゲットデータアド
レスが一致するかという比較も行われ、上記の例ではこ
のような一致は無かった。しかし注意すべきことは、本
実施例は、ある命令に対するターゲットデータアドレス
として同じデータアドレスが繰り返しアクセスされるデ
ータパターンを検出することもでき、上記の比較はこの
ような検出を行うための一つの手法である。更に詳しく
述べると、代わりの例として、命令11が上記のように
ルーピングではなくて、アドレス1214に繰り返しア
クセスしたものと仮定する。このようにして、命令11
の第二の繰り返し後に、上記の手法を使用してPOIN
TER AとPOINTER Bの両方が1214に設
定される。しかし前に説明したように、POINTER
Bが設定された後にPOINTER AとPOINT
ER Bの比較も行われる。しかし、現在の例では二つ
は一致するので、代替予測手法はデータフェッチ命令が
同じターゲットデータアドレスに繰り返しアクセスする
命令であるということを予測する。これに応答して、N
EXT POINTERが01に維持され、これにより
POINTER Bがもう一度NEXT POINTE
Rであることが示される。その結果、命令11の相次ぐ
生起毎に、POINTER Bが予測されたターゲット
データアドレスを記憶しているということをNEXT
POINTERは連続的に示す。これにより、同じアド
レスのループモードが示される。したがって、その点以
降、そして予測の誤りが検出されるまで、命令11に対
するターゲットデータアドルスとして同じアドレス(た
とえば、1214)が使用される。注意すべきことは、
POINTER Aがこの同じターゲットデータアドレ
スを記憶するので、代わりにNEXT POINTER
はPOINTERAを示すものとして維持することによ
り、アドレスの相次ぐ各生起がターゲットデータアドレ
スとしてアドレス1214を予測するようにもできる。
実際、更にPOINTER AとPOINTER Bの
両方が同じアドレスを指示するので、POINTER
AとPOINTER Bとの間にループを形成するよう
に制御を設定できる。これにより、実際上、両者が指示
する同じアドレス(すなわち、1214)が命令11の
相次ぐ生起に対するターゲットデータアドレスとなる。
【0050】上記の同じアドレスパターンを検出する場
合の他に、命令11の3回目の繰り返し(すなわち、J
=3)に関連して説明したように、POINTER C
の設定に関連して、それが最古のターゲットデータアド
レス(たとえば、、POINTER Aの中のターゲッ
トデータアドレス)と一致するか判定される。上記の例
では一致が無かったので、プロセスはループモードの仮
定のもとで続行された。しかし、ここで注意すべきこと
は、本実施例はループに上記のような三つではなくて二
つのアドレスだけが含まれるルーピングデータパターン
を検出することもできるということである。更に詳しく
述べると、代わりの例として、命令11が一つの生起で
アドレス1214にアクセスし、次の生起でアドレス2
214にアクセスし、次の生起でアドレス1214にル
ープで戻り、以下同様にルーピングパターンを繰り返す
ものと仮定する。したがって、命令11の3回目の繰り
返しの後、上記の手法を使用してPOINTER Aと
POINTER Bは1214と2214にそれぞれ設
定されるが、POINTER Cも1214に設定され
る。また上記したように、POINTER Cの設定後
に、POINTERAとPOINTER Cとの比較、
およびPOINTER BとPOINTER Cとの比
較もある(POINTER AとPOINTER Cと
が一致すれば、POINTER BとPOINTER
Cとを比較する必要は無い。現在の筋書きでは、AがC
に等しければ、BはCに等しくないからである(AはB
に等しくないと既に判定されたため))。しかし現在の
例では、POINTER AとPOINTER Cとが
一致するので、代わりの予測手法がデータフェッチ命令
はPOINTER B内のアドレスからループでPOI
NTER A内のアドレスに戻る命令であると予測する
(すなわち、POINTER CとPOINTER A
とが同じターゲットデータアドレスを表すから)。これ
に応答して、NEXT POINTERが01に設定さ
れる。これにより、POINTER Bがもう一度NE
XT POINTERであるということが示される。更
に、ACONTROLが101に設定されることにより
次のPOINTERがPOINTER Bであることが
示されるとともに、B CONTROLが100に設定
されることにより次のPOINTERがPOINTER
Aであることが示される。その後、データフェッチ命
令の生起毎に、NEXT POINTERがPOINT
ER AとPOINTER Bとの間に切り換えること
ができるので、それらの二つのPOINTERによりそ
れぞれ示される二つのアドレスの間でループが継続され
る。
【0051】上記の説明は、データフェッチ命令11の
4回目の生起とその命令の後続の各生起がエントリ56
の正確な予測を生じる例を示す。しかし他の場合に
は、問題となっているテータフェッチ命令が三つのター
ゲットデータアドレスの間にループとなっているように
思われるが、データフェッチ命令の付加的な生起によ
り、予測されたループパターンからはずれた実際のター
ゲットデータアドレスが生じる。この場合、エントリ5
はある仕方で修正される。このような修正の一例を
後で、ルーピングの前にストライディングを行う実施例
に関連して説明する。しかし更に他の修正は、熟練した
当業者が確かめることができ、図4の実施例で与えられ
る種々の値のフォーマットに構成することもできる。
【0052】これまで説明してきたようにLTB56の
実施例によるループモードの構成が与えられた場合、後
で説明するようにLTB56の各エントリのフォーマッ
トを拡張することにより、付加的な実施例を実現するこ
とができる。この実施例は、上記の場合のようにルーピ
ングを予測するだけでなく、ターゲットデータアドレス
後であるが、次のターゲットデータアドレスに対してル
ープを形成する前に、ストライド(stride)を予
測する。付加的な実施例に対する紹介として、図6aは
図2aのレコード60をもう一度示しているが、そのレ
コードに付加的な四つのフィールド60fから60iが
付加されている。図6aに示すように、これらのフィー
ルドはそれぞれ、今月の第一週から第四週に対するWE
EKLYHOURS WORKED(週労働時間)数を
表す。したがって、これらのフィールドは加算される
と、フィールド62dに示されたHOURS WORK
ED FOR PAST MONTH(先月の労働時
間)を与える。もちろん本例では、与えられた月が4週
しかないものと仮定している。この仮定は、本実施例の
以後の説明の基礎を与えるとともに、例を簡単にするた
めに行われたものである。いずれにしても、4週を仮定
し、そして前には説明しなかったが、フィールド60f
から60iを加算し、その結果をフィールド60dに記
憶するプログラムによって、フィールド60dの値を書
き込むことができる。
【0053】図6aの概念を更に説明するために、図6
bは図2bのレコード62、64、66、および68を
示すが、それらのレコードに図6aにより導入された新
しいフィールドが付加されている。たとえば、Abe
Adamsに対応するレコード62で、フィールド60
fから60iはAbeが先月の第一週に40時間働き、
先月の第二週に50時間働き、先月の第三週に50時間
働き、先月の第四週に45時間働いたということを表
す。熟練した当業者には理解されるように、このデータ
はレコード64、66、および68の各々に対しても与
えられる。その中の各フィールドのデータについて再び
説明することはしない。
【0054】図6aおよび6bがあたえられたとき、下
の表は図6bのレコードを処理するための簡単な擬似コ
ードプログラムを示す。このプログラムは、各WEEK
LYHOURS WORKED(週労働時間)フィール
ドの和を判定することによりHOURS WORKED
FOR THE PAST MONTH(先月労働時
間)の各レコードに対する値を与える。
【表4】
【0055】付加的なLTB56の実施例の説明を進め
る前に、再び注意すべきことは、表4が擬似コードを表
し、したがってコードによって示される機能を果たすた
めマイクロプロセッサが使用する実際のコードは形式と
複雑さの一方または両方が異なることがあり得る。いず
れにしても、もう一度、表4のプログラムコードの種々
の行がメモリのどこかに記憶され、プログラム行は図6
bのレコードファイルの中の各レコードに対して種々の
動作を行う。プログラムコードのメモリ記憶装置に対し
て、上記の表1と同様に、表4はプログラムの各行に対
するメモリアドレスをリストしたものである。表4の例
に対して、プログラムコードを記憶するメモリアドレス
はアドレス20から始まって、相次ぐ命令毎に増大す
る。この点以降、このような各命令は表4のそれのアド
レスによって表される。コードによって行われる動作に
ついては、表4の例の命令22から26は、従業員のレ
コードにリストされた4週の各々に対してWEEKLY
HOURS WORKED(週労働時間)を従業員毎
に加算することにより、従業員毎のHOURS WOR
KED FOR THE PAST MONTH(先月
の労働時間)を計算する。更に詳しく述べると、命令2
1がレジスタREG2をクリアした(すなわち、それを
0にセットした)後、4回の繰り返しに対して命令23
はWEEKLYHOURS WORKED(週労働時
間)の四つの値の相次ぐ一つをレジスタREG1にロー
ドする。それらの各々に対して、命令23はロードし、
命令24はレジスタREG1とREG2の内容を加算
し、結果をレジスタREG2に記憶する。したがって熟
練した当業者には理解されるように命令24は、与えら
れた従業員レコードに対して命令23によりロードされ
た値の各々の和をレジスタREG2に累積する。四つの
週フィールドのすべてに対して加算が完了すると、命令
26はHOURS WORKED FOR THE P
AST MONTH(先月の労働時間)と名付けられた
フィールドに対応するロケーションのレコードに総計を
戻して記憶する。もう一度、命令27から29によって
更に示されるように、種々の付加的な動作が行われ得
る。詳しく述べると、すべての繰り返しの後に命令24
がHOURS WORKED FOR THE PAS
T MONTH(先月の労働時間)の合計を与えると、
命令27がその従業員のHOURLY WAGE(時
給)をロードする。命令28がこの値にその従業員のH
OURS WORKED FOR THE PAST
MONTH(先月の労働時間)を乗算する。その結果、
そのときレジスタREG2にある積がその従業員に対す
るPAY DUE(支払い賃金)を表す。したがって命
令29により、その値がレコードに書き戻される。最後
に、更に付加的な動作が行われ得るが、以下に示す原理
を説明するためには本例は充分なはずである。
【0056】本発明者は次に、ストライディングパター
ンの後にルーピングパターンが続く動作について説明す
る。これについては、図3のメモリAREAフォーマッ
トに関連して述べた。メモリAREAフォーマットをよ
り良く示すために、図7は図3のメモリAREAをもう
一度示すが、それらのAREAはWEEKLY HOU
RS WORKED(週労働時間)フィールドの各々に
対してターゲットデータアドレスを示すように拡張され
る。たとえば、AREA1はAbe Adamsに対す
るWEEKLY HOURS WORKED(週労働時
間)をアドレス1221、1224、1227、および
122Aに記憶する。同様に、AREA2はBarry
Barnesに対するWEEKLY HOURS W
ORKED(週労働時間)をアドレス2221、222
4、2227、および222Aに記憶する。AREA3
はCindy Coxに対するWEEKLY HOUR
SWORKED(週労働時間)をアドレス5221、5
224、5227、および522Aに記憶する。
【0057】次に、ストライディングの後にルーピング
が続くパターンについて説明する。図6bのレコードの
処理段階により、表4の擬似コードについて説明する。
J=1の擬似コードで、レコード62(すなわち、Ab
e Adams)が処理される。命令21により、合計
を記憶しているレジスタREG2がクリアされる。命令
22により、レコードに対して四つのWEEKLY H
OURS WORKED(週労働時間)フィールドの各
々を処理するループが開始される。次に命令23によ
り、1221のターゲットデータアドレスにある、Ab
eのWEEKLYHOURS WORKED[#1]の
ターゲットデータ(すなわち、40)がロードされる。
次に命令24により、ロードされた値がレジスタREG
2の中の値と加算され、その値がレジスタREG2に記
憶される。したがって、この点では、レジスタREG2
が0にクリアされたので、レジスタREG2には合計4
0が記憶される。次に、命令25がプログラムを命令2
3に戻す(すなわち、K=2)。したがって、これは命
令23の第二の生起を表す。命令23のこの第二の生起
により、1224のターゲットデータアドレスにある、
AbeのWEEKLY HOURS WORKED[#
2]のターゲットデータ(すなわち、50)がロードさ
れる。次に命令24により、ロードされた値(すなわ
ち、50)がレジスタREG2の中の値(すなわち、4
0)と加算され、その値(すなわち、90)がレジスタ
REG2に記憶される。命令23から24の上記の繰り
返しは、K=3およびK=4に対して再び行われる。こ
のようにして、命令23の第三の生起により、1227
のターゲットデータアドレスにある、AbeのWEEK
LY HOURS WORKED[#3]のターゲット
データ(すなわち、50)がロードされる。次に命令2
4により、ロードされた値(すなわち、50)がレジス
タREG2の中の値(すなわち、90)と加算され、そ
の値(すなわち、140)がレジスタREG2に記憶さ
れる。更に、命令23の第四の生起により、122Aの
ターゲットデータアドレスにある、AbeのWEEKL
Y HOURS WORKED[#4]のターゲットデ
ータ(すなわち、45)がロードされる。次に命令24
により、ロードされた値(すなわち、45)がレジスタ
REG2の中の値(すなわち、140)と加算され、そ
の値(すなわち、185)がレジスタREG2に記憶さ
れる。この点で、プログラムは命令26まで継続する。
命令26により、レジスタREG2の中の合計(すなわ
ち、185)がAbeAdamsに対するHOURS
WORKED FOR THE PAST MONTH
(先月の労働時間)に対応するメモリアドレスに記憶さ
れる。したがって、185という値がメモリアドレス1
218に記憶される。最後に、前記のように命令27か
ら29で、Abe Adamsに対するPAY DUE
(支払い賃金)も計算される。
【0058】上記で単一の繰り返しJ=1は、ストライ
ディングとして知られるデータロードの予測可能性の一
つの型を示す。ストライディングはそれだけで、またぐ
ようにして行われるデータフェッチのその後の認識と予
測として知られている。しかし、直前の段落に示された
例の単一の繰り返しのストライディングについての以下
の説明の後に、更に本実施例のもとでストライディング
をループ検出とどのように組み合わせることができるか
も示される。この組み合わせにより、従来技術に比べて
更に付加的な利点が得られる。一般にストライディング
とは、一旦初期フェッチ(とそのアドレス)が設定され
れば、後続の次のフェッチに対しては「ストライド」と
呼ばれる一定距離がとられるように、相次いでデータを
フェッチするデータ処理パターンを指す。たとえば、初
期フェッチアドレスが10進数1000で、ストライド
が10進数10であれば、フェッチに対するアドレス系
列は1000、1010、1020、1030等とな
る。当業者には知られているようにストライディングに
ついて多くの情報を得るためには、次の二つの文書を参
照できる。両者ともここに引用されている。(1)アイ
イーイーイー(IEEE)から文書番号0−8186−
3175−9/92,著作権1992として発行されて
いるインテル社のジョン・ダブリュー・シー・フ、およ
びイリノイ大学のジャナク・エッチ・パテルとボブ・エ
ル・ジャンセン著「スカラプロセッサにおけるストライ
ド指向のプリフェッチ」(”Stride Direc
tedPrefetching in Scalar
Processors”,byJohn W.C.Fu
of Intel Corp,and Bob LJ
anssens of the Center for
Reliableand High−Perform
ance Computing at the Uni
versity of Illinois)、および
(2)1995年1月13日付けのミシガン大学のマイ
ケル・ゴールダとトレバー・エヌ・マッジ著「キャッシ
ュ待ち時間のためのハードウェアサポート」(”Har
dware Support for Hiding
Cache Latency”,by Michael
Golder and Trevor N.Mudg
e of the Advanced Compute
r Architecture Lab at the
University Of Michigan)。
【0059】前に紹介したように、上記のJ=1の単一
の繰り返しはストライディングの例を示す。たとえば、
J=1の場合、命令23に対するKの各生起について考
えてみる。第一に、J=1でK=1の場合、命令23は
ターゲットアドレス1221からのデータを要求した。
第二に、J=1でK=2の場合、命令2 ターゲットア
ドレス1224からのデータを要求した。第三に、J=
1でK=3の場合、命令23はターゲットアドレス12
27からのデータを要求した。最後に、J=1でK=4
の場合、命令23はターゲットアドレス122Aからの
データを要求した。したがって、命令23の四つの生起
にわたって、そのターゲットデータアドレスは122
1、1224、1227、および122Aであった。し
たがって、ストライディングの状況で、初期フェッチは
アドレス1224に対するものであった。次の三つのア
クセスの各々に対して、ストライドは3であった。
【0060】前の段落はストライディングを示すが、表
4の例は更にストライディングと組合わされたルーピン
グも示す。この組合わせを本実施例により検出し、後で
詳しく説明するようにLTB56に符号化される。更に
詳しく述べると、直前に説明したようにJ=1に対して
Kが1から4までくりかえされた後、Jが2に増大させ
られる。ストライディングだけが予測される従来技術で
は、命令23の次の生起に対して、最後にアクセスされ
たアドレス(すなわち、122A)に3のストライドが
加算される。これにより、命令23のこの次の生起がア
ドレス122Dのデータを使用するという予測が得られ
る。しかし、このような予測は不正確である。詳しく述
べると、J=2のとき、命令23の第一の生起はレコー
ド64に対するWEEKLY HOURS WORKE
D(週労働時間)[#1]を要求し、その値が図7のメ
モリAREA2のアドレス2221に記憶される。しか
し、後で詳しく説明するように本実施例では、ストライ
ドからこの変化を正確に予測することができる。これに
より、従来技術に比べて更に改善される。
【0061】表4の命令23の例および図7のメモリA
REA内のレコードについての説明を続けることによ
り、本発明者が認め、本実施例に入れた、ストライドの
後、ルーピングを行うというパターンの繰り返しが熟練
した当業者に理解されよう。上記の例の説明を続ける。
この例のこの点現在で、命令23によりアクセスされる
ターゲットデータアドレスは1221、1224、12
27、および122Aである。ここで、命令23の相次
ぐ生起に対するターゲットデータアドレス系列に注意す
べきである。したがって、アドレス2221はJ=2で
K=1のときアクセスされる。次に、J=2の間のKの
残りの3回の繰り返しについて考えてみる。J=2でK
=2の場合、命令23はターゲットアドレス2224か
らのデータを要求する。J=2でK=3の場合、命令2
3はターゲットアドレス2227からのデータを要求す
る。J=2でK=4の場合、命令23はターゲットアド
レス222Aからのデータを要求する。したがって、J
=2であるときの命令23の4回の生起に対して、その
ターゲットデータアドレスは2221、2224、22
27、および222Aであった。命令23の相次ぐ生起
の各々の詳細を説明しなくても熟練した当業者には理解
されるように、J=3の場合、命令23の4回の生起は
ターゲットデータアドルス5221、5224、522
7、および522Aからのデータを要求する。しかしこ
の点で、前に説明したように、AREA3が処理された
後、プロセスはループでAREA1に戻る。したがって
J=4の場合、命令23の第一の生起では、ループで戻
ってターゲットアドレス1221からのデータを要求す
る。その後、命令23の次の三つの生起はターゲットア
ドレス1224、1227、および122Aからのデー
タを要求する。
【0062】上記で、ストライディングの後にルーピン
グの組み合わせを要約する。J=1の場合、命令23は
4回実行し、それらの回数の間、3の距離でストライド
する(たとえば、アドレス1221、1224、122
7、および122A)。しかし、次にJは増大させられ
るので、命令23の次の実行は3の距離ストライドしな
い。その代わりに、初期の実施例の仕方でのループの始
まりは、命令23がアドレス2221からのデータを要
求するときに形成される。その後、命令23は次の三つ
のアクセスに対して3の距離を再びストライドする。こ
の点で、命令23が次にアドレス5221からのデータ
を要求したとき、もう一度ループが続く。距離3のスト
ライドを3回行った後、ループが始まる同じアドレス、
すなわちアドレス1221からのデータを命令23が次
に要求したとき、ループは完了する。したがって、命令
23のすべての生起をまとめると、命令23は1221
から1224へ、1227へ、122Aへストライドし
た後、ループで2221に至り、そこから2224へ、
2227へ、222Aへストライドした後、ループで5
221に至り、そこから5224へ、5227へ、52
2Aへストライドした後、ループで1221に戻り、命
令23のすべての生起に対してこのパターンを連続的に
繰り返す。
【0063】上記で、図8は上記のLTB56で説明さ
れた、単一のエントリ561の付加的な実施例を示す。
ここでエントリ56には、上記の図4と同じ値が含ま
れているが、5個の付加的な値も含まれている。それら
の値により、本実施例では、単独で、または上記のよう
なルーピングとの組み合わせで、種々のストライドパタ
ーンを予測することができる。エントリ56の最初の
10個の値については、前の説明を参照できる。したが
って、図8に示された新しく付加された値について集中
的に説明する。簡単に述べると、図8に新しく示された
値には、STRIDE LENGTH(ストライド長
さ)、STRIDE THRESHOLD(ストライド
閾値)、STRIDE COUNTER(ストライドカ
ウンタ)、TEMPORARY POINTER SA
VER(一時ポインタセーバ)、およびSTRIDE
CONTROL(ストライド制御)が含まれる。図8に
は後で詳しく説明するように3個のPOINTERに共
同使用される一組のストライドに関連した値が示されて
いるが、代替実施例では各ポインタとそれに結合された
CONTROLはそれ自身のストライドに関連した値を
そなえることができる。したがってこの代替実施例で
は、より複雑なデータパターンを予測することができ
る。これにより、単一のデータフェッチ命令の場合、一
つのストライド系列に対する長さや閾値は次のストライ
ド系列に対する長さや閾値と異なる。いずれにしても、
これらのストライドに関連した値の各々については以下
に説明する。
【0064】図8に示されたストライドに関連した値の
情報と動作を示すために、それらの値の各々に対して、
まず前置きの説明を行う。上記の表4の命令23の例に
より、サンプル情報を示す。説明を進める前に、ターゲ
ットデータアドレス1221、1224、1227、お
よび122Aをストライドすることにより命令23がど
のように進むかを前に示したことを想起されたい。次
に、図8のストライドに関連した値については、STR
IDE LENGTH(ストライド長さ)値は相次ぐス
トライドターゲットデータアドレス相互の間の相違の大
きさを表す。したがって現在の例では、STRIDE
LENGTHは3に等しい。すなわち、アドレス122
1と1224との間のストライドは3、アドレス122
4と1227との間のストライドは3などである。ST
RIDE THRESHOLD(ストライド閾値)は与
えられたストライド系列のターゲットアドレスの数であ
る。したがって現在の例では、STRIDE THRE
SHOLDは4に等しい(すなわち、1221、122
4、1227、および122Aの系列には4個のアドレ
スがある)。次にSTRIDE COUNTER(スト
ライドカウンタ)は、与えられたストライド系列の中の
系列毎に進むカウンタである。進むことにより、相次ぐ
各ストライドの跡をたどるようにCOUNTERが増減
することを示そうとしている。実施例でこの機能を達成
するため、そして後で詳しく説明するように、STRI
DE COUNTERには最初、STRIDE THR
ESHOLDがロードされた後、各ストライドが行われ
たとき0の値に向かって減らされる。TEMPORAR
Y POINTER SAVER(一時ポインタセー
バ)はストライドアドレスの系列の中の初期アドレスを
記憶するために使用される。したがって本例では、12
21のアドレスはTEMPORARY POINTER
SAVERに記憶される。後で詳しく説明するよう
に、ストライド系列の終わりに、このアドレスは最初に
それを与えたPOINTERの一つ(すなわち、A、
B、またはC)に戻される。TEMPORARY PO
INTER SAVERを設ける代わりに、代替実施例
ではストライド系列の終わりに初期アドレスを再計算し
てもよい。この場合、再計算された初期アドレスはそれ
を与えたPOINTERに戻される。最後に、STRI
DE CONTROL(ストライド制御)は、後で更に
説明するように単独またはルーピングと組合わされてス
トライド手法の動作を制御するために熟練した当業者が
構成することができる付加的な情報を供給するだけであ
る。
【0065】図8の種々のストライドに関連した値を紹
介したが、前に説明したように、POINTER A、
POINTER B、およびPOINTER Cは各々
対応するCONTROL値をそなえ、またルーピングに
関連するときのそれらの値の内容はルーピングデータパ
ターンに関する限り表3に関運して前に紹介した。しか
し、これから紹介し、以下更に詳しく説明するように、
図8の実施例には更に種々のストライドに関連したパタ
ーンも含まれている。この機能を更に果たすために、各
POINTERに対応するCONTROL情報は更にス
トライドに関連した動作を示し、またこれに関連して下
の表5は表3の値を繰り返しているが、種々のストライ
ド動作を入れるように表3の予備値のいくつかについて
定義もしている。
【表5】 表5でCONTROL情報の2進値が001、010、
または011に等しい場合、これはCONTROLに対
応するPOINTERがストライドの作用に関連してい
ることを示している。相違点はストライドの大きさであ
る。特定のストライドの相違点を以下に説明する。
【0066】表5に示すように、CONTROL情報の
2進値が001に等しい場合、これはストライドモード
を示す。この場合、LTB56のエントリのSTRID
ELENGTH値にストライドの長さが記憶されてい
る。この側面を示すため、表4のコード例、そして更に
詳しくは、LTB56のエントリ56が命令23のス
トライド動作にどのように関連するかについて以下に説
明する。この目的のため、図9はストライド動作の間、
命令23に対してデータプリフェッチ予測を可能にする
ように設定されたときのエントリ56を示している。
命令23を設定するためのステップについては後で詳し
く説明する。したがって、図9でエントリ56が事前
に設定され、表4の擬似コードがフェッチされ、前記の
パイプライン38により処理されるべきものであると仮
定する。このようにして、命令フェッチ段40は命令2
3をフエッチし、前記の場合のように、それがデータフ
ェッチ命令であることを検出する。このようにしてLT
B56を使用して、それが命令23に対応するエントリ
を記憶しているか判定する。詳しく述べると、エントリ
56の中のアドレスタグフィールドは命令23のアド
レスに一致するか判定され、したがってLTB56はこ
のようなエントリをそなえているか判定される。次に、
エントリ56のNEXT POINTER値が使用さ
れ、それはPOINTER Aとそれに対応するA C
ONTROLは命令23に対するターゲットデータアド
レスへの現在のプリフェッチ要求があれば、その現在の
プリフェッチ要求を制御するはずである。
【0067】上記に応答して、A POINTER C
ONTROL INFORMATIONが評価され、そ
れは現在のアクセスがストライドの一部であることを示
す(すなわち、001の値)。ここで、ストライドの長
さはSTRIVE LENGTH値に記憶されている。
この点から先のステップを更に説明するために、図10
は全体が70で表された方法を示す。方法70はストラ
イド動作の現在の型に応答する種々の好ましいステップ
を表す。図示するように、方法70は一般にステップ7
2で始まる。ステップ72は単に、001に等しいCO
NTROL情報値に応答して(またはストライドモード
の動作を示す他の制御値のいずれかに応答して)方法が
始まったことを示すだけである。次に、方法70はステ
ップ74に続く。ステップ74はSTRIDE COU
NTERが0に等しいか調べる。方法70の説明が完了
すればより良く理解されるように、これが1221、1
224、1227、および122Aのストライド系列に
対する命令23の第一の生起であるので、STRIDE
COUNTERは0にリセットされている。したがっ
て、ステップ74は真であるはずであり、方法70はス
テップ76に進む。何らかの理由でストライド系列の命
令の第一の生起でSTRIDE COUNTERの値が
非零であれば、方法70はステップ77に進む。ステッ
プ77は、STRIDE COUNTERの誤った設定
に応答するためのエラーハンドラの一例である。
【0068】ステップ77のエラーハンドリングは二つ
の動作を行う。第一に、現在のPOINTERに対する
CONTROL情報は非妥当に設定される。したがっ
て、現在の例では、A CONTROLが000に設定
される。第二に、NEXT POINTER値が後続の
次のポインタを指すように進められる。したがって、現
在の例では、NEXT POINTERの値が01に設
定される。最後に、このエラーハンドリングが完了する
と、フローはステップ77からステップ90に進む。後
でも述べるようにステップ90は、単にエントリ56
の現在の処理に対する方法70の終わりを表すに過ぎな
い。
【0069】命令23の現在の例におけるように、スト
ライディングを開始すべきデータフェッチ命令があるL
TB56の妥当なエントリについて当てはまるように、
STRIDE COUNTERが0に等しいことがわか
った後に、ステップ76に達する。次に、ステップ76
は二つのセットアップ動作を行う。第一に、ステップ7
6は現在のPOINTERの値をTEMPORARY
POINTER SAVER(一時ポインタセーバ)に
コピーする。したがって現在の例では、POINTER
Aに記憶された1221という値がTEMPORAR
Y POINTER SAVERにコピーされる。後で
より明らかになる理由により、このTEMPORARY
POINTER SAVERから後で検索されて、P
OINTER Aに入る。第二に、ステップ76はST
RIDE COUNTERにSTRIDE THRES
HOLDをロードする。したがって、相次ぐストライド
の生起毎に前に述べたようにカウントが減っていく。こ
れについても、後で詳しく説明する。この二つのセット
アップ動作の後、方法70はステップ78に続く。
【0070】ステップ78は、対応するPOINTER
によって示されるアドレスで開始するようにプリフェッ
チ要求を発する。したがって、現在の例では、POIN
TER Aが問題になっているので、ステップ78は1
221のターゲットデータアドレスにプリフェッチ要求
を発する。したがって、このプリフェッチ要求が実際の
プリフェッチ動作を誘発した場合、前に説明したように
アドレス1221のデータを検索してオンチップキャッ
シュに入れることができる。したがって、命令23がパ
イプライン38を通るとき適当な時点に達すると、その
データはそのキャッシュからフェッチして容易に利用す
ることができる。したがって再び、プリフェッチの利点
を実現することができる。ここでは、アドレスのストラ
イド系列の最初の場合にそれが示されている。次に、方
法70はステップ80に進む。
【0071】ステップ80では、STRIDE COU
NTERの値を減少させる。現在の例では、図9で説明
したように、STRIDE COUNTERはSTRI
DETHRESHOLDからの4という値を記憶してい
る。したがってステップ80で、この値を4から3に減
らす。後でより良く理解されるように、直前のステップ
78によるプリフェッチ要求の相次ぐ発行毎に、ステッ
プ80は再びカウントを減少させる。したがって、最後
にカウントは0に達し、与えられたストライドアドレス
の系列に対するすべてのストライドの場合が生じたとい
うことを示す。次に、方法70はステップ82に進む。
【0072】ステップ82は再び、STRIDE CO
UNTERが0に達したか判定する。直前の段落で説明
したように、与えられたストライドアドレスの系列に対
するすべてのストライドの場合が生じると、カウントが
0に達する。STRIDECOUNTERが0に達して
いない場合には、方法70はステップ84に進む。これ
に反して、STRIDE COUNTERが0に達した
場合には、方法70はステップ86に進む。現在の例で
は、STRIDE COUNTERは3に等しいので、
方法70はステップ84に進む。
【0073】ステップ84は現在ポインタの値をSTR
IDE LENGTHの値だけ増大させる。現在の例で
は、POINTER Aは1221に等しく、STRI
DELENGTHは3に等しい。したがって、ステップ
84に応答して、POINTER Aの値が1221か
ら1224に増大される。次に、方法70はステップ7
8に進む。
【0074】上記の説明で熟練した当業者には理解され
るように、方法70がステップ84からステップ78に
戻ることにより、一つ以上の付加的なプリフェッチ要求
が発せられる。後続の各プリフェッチ要求は前のプリフ
ェッチ要求のアドレスにSTRIDE LENGTHの
値を加えたものを発する。たとえば、前に説明したよう
に、ステップ78の第一の場合に1221のプリフェッ
チ要求が発せられ、そしてその後、POINTER A
の値がSTRIDE LENGTHの3だけ大きくされ
て1224の値となる。したがって次に、ステップ78
はもう一度プリフェッチ要求を発するが、ここではアド
レス1224で行われる。更にステップ80で再びST
RIDE COUNTERが減らされるが、ここでは3
から2に減らされる。後に続くステップ82が制御をス
テップ84に移し、POINTER Aが増大させら
れ、このようにして続行される。したがって、このプロ
セスで1221、1224、1227、および122A
の系列に対するプリフェッチ要求を発する。しかし、ア
ドレス122Aでプリフェッチ要求を発行した後、ステ
ップ80は再びSTRIDE COUNTERを減少さ
せる。したがって、この点で、STRIDE COUN
TERは1から0に減少させられる。その結果、ステッ
プ82は制御をステップ86に渡す。したがって、制御
のこの変化が生じるのは、ストライド系列(すなわち、
1221、1224、1227、および122A)のす
べてのアドレスがプリフェッチ要求の対象となった後で
ある。
【0075】ストライディングアドレスの系列に対応す
るすべてのプリフェッチ要求が発せられた後にステップ
86で、TEMPORARY POINTER SAV
ERからの値が現在のPOINTERにコピーされて戻
される。現在の例では、前に説明したようにステップ8
6の前に、POINTER Aの値はアドレス122
A、すなわち、ストライドアドレスの系列1221、1
224、1227、および122Aの最後のアドレスに
等しい。しかし、ステップ86でTEMPORARY
POINTER SAVERからのコピーバックによ
り、現在POINTERの値がストライドアドレスの系
列の初めにあった値に戻される。したがって現在の例で
は、前に(ステップ76で)TEMPORARY PO
INTERSAVERに記憶された1221という値が
今POINTER Aに戻される。したがって熟練した
当業者には理解されるように、POINTER Aに基
づくプリフェッチ要求の次の場合には、その要求はもう
一度、ストライド系列の終わりではなくてストライド系
列の初めのアドレスに向けられる。更に、そしてTEM
PORARY POINTER SAVERの紹介と関
連して前に説明したように、そのSAVERを使用する
代わりに、別の方法でSAVERに記憶された初期アド
レスを再循環させることによりステップ76の結果を達
成することができる。たとえば、1221の終了アドレ
スの場合、STRIDE LENGTHに(STRID
E THRESHOLD−1)の値を乗算することがで
き、その積を終了アドレスから減算することができる。
これにより、POINTER Aを再記憶するための初
期アドレスが与えられる。
【0076】ステップ86の後、方法70はステップ8
8に進む。ステップ88は、問題になっているLTB5
6のエントリに対するNEXT POINTERインジ
ケータを進める。現在の例では、図9について説明した
ようにNEXT POINTERの値は現在00に設定
されている。すなわち、NEXT POINTERは表
2に示された値によりPOINTER Aを指す。した
がって、ステップ88はNEXT POINTER値を
01に進める。これにより、POINTERBが、行5
が使用される次の場合に対して使用されるべき次の
POINTERであるということが示される。換言すれ
ば、フェッチ段40によりフェッチされることに応答し
て次回に命令23が検出されたとき、行56が再び使
用されるが、そのときはステップ88によるNEXT
POINTERの現在の前進に基づいてPOINTER
BとB CONTROLが制御を行う。更に注意すべ
きことは、NEXT POINTERのこの前進はルー
ピング形式でエントリ56の相次ぐ各ポインタに対し
て続行される。換言すれば、ステップ86に達したとき
NEXT POINTERがPOINTER Cを示す
ように設定されると、その場合にNEXT POINT
ERを前進させたとき、NEXT POINTERは次
のPOINTERとしてPOINTER Aを指す。こ
のようにして、円形形式がPOINTER AからPO
INTER Bに、POINTERCに、POINTE
R Aに戻る等のように形成される。
【0077】今説明したステップ88の動作の他に、ス
トライドを完了させ、円形の順序の次のPOINTER
以外のPOINTERに対するループを形成できるよう
にすることにより、本発明の範囲内で更にもう一つの実
施例を作成することができる。換言すれば、前の段落で
は、NEXT POINTERをPOINTER Cか
らPOINTER Aに進める場合について説明した。
これにより、POINTER Cに関連するストライド
系列が完了した後、円形ルーピング形式が維持される。
換言すれば、表5に与えられたストライド制御値で、前
の段落が示唆するところによれば、ストライド系列が完
了した後、NEXT POINTERを単に増大させ
る。これにより、今完了したストライド系列に関連して
使用されたばかりのPOINTERに円形順序で続くP
OINTERにより、次のターゲットデータアドレスが
示される。しかし、代替実施例として、ストライド系列
が完了した後、異なるPOINTERがNEXT PO
INTERとなるように、更に付加的な制御を行うこと
もできる。たとえば、各LTBエントリに付加的な値を
含めることができる。またはCONTROL内のビット
数を増やすことができる。いずれにしても付加的な機能
により、ストライド系列の完了後に、今使用したばかり
のPOINTERに円形状に続かないPOINTERが
指定される。たとえば、POINTER Aがストライ
ド系列を支配した上記の例で、この付加的な制御によっ
てNEXT POINTERを10に変えることができ
る。これにより、(上記の例のようなPOINTER
Bではなくて)POINTERCが、データフェッチ命
令の次の生起に対して使用すべき次のPOINTERで
あるということが示される。このように各LTBエント
リで、上記のものより更にもっと複雑なデータパターン
を検出し、示すことができる。
【0078】ステップ88の後、方法70はステップ9
0に達する。前に説明したように、ステップ77のエラ
ーハンドリングの後にも、ステップ90に達することが
あり得る。いずれにしても、ステップ90は単に、LT
B56の中の、ストライドモードの動作に基づく与えら
れたエントリに対する方法70の終わりを表しているに
過ぎない。したがって、ステップ90の後、方法70は
多数の付加的な回数繰り返すことができる。それらの回
数はフェッチされた命令とLTB56の中のエントリと
が一致したことに応答してもう一度開始される。ここ
で、一致するLTBエントリはストライドモードを示す
ために設定された適当なCONTROL情報値をそなえ
ており、ストライドの長さはSTRIDE LENGT
H値に示されている。
【0079】上記の説明から熟練した当業者には理解さ
れるように、図8の実施例では、プリフェッチ要求をス
トライディングアドレスの系列に発することができる。
実際、本例を継続することにより、熟練した当業者には
理解されるように図8の実施例では、ストライディング
アドレス相互の間にルーピングも行うことができる。更
に詳しく述べると、図9を再び参照することにより、P
OINTER Bがアドレス2221を表すことがわか
る。前に説明したように、上記の例のステップ88は、
NEXT POINTERを変更して、行56が使用
される次の場合に使用されるべき次のPOINTERと
してPOINTER Bを示す。このように、本例を続
けて説明する。フェッチ段40によりフェッチされるこ
とに応答して命令23が次に検出されたとき、フェッチ
を予測するために行56が再び使用されるが、この点
BではB CONTROLとPOINTER Bが使用
される。更に注意すべきことは、B CONTROLは
ルーピングモードを示すということである。したがっ
て、命令23のこの場合に対して、再びプリフェッチ要
求がアドレス2221に対して発せられるが、その後に
命令23の次の三つの生起の各々に対する三つのストラ
イドが続く。すなわち、次の三つのこのような生起はア
ドレス2224、2227、および222Aに対するプ
リフェッチ要求を生じる。更に、プリフェッチ要求の一
部としてアドレス222Aが発せられると、再びNEX
T POINTERが増大させられ、今度は次のアクセ
スのための制御としてPOINTER Cおよびそれの
C CONTROLが示される。熟練した当業者には理
解されるように、命令23の次の4回の生起に対しても
う一度アドレスのストライドパターンが生じる。それら
のアドレスには5221、5224、5227、および
522Aが含まれる。最後に、これが完了したとき、再
びNEXT POINTERが増大させられる。今度は
次のアクセスのための制御としてPOINTER Aお
よびそれのA CONTROLを生じるループバックが
完成する。このようにして、このパターンは多数回繰り
返すことができる。これにより、ストライドの後にルー
プが続く組み合わせ機能が得られる。
【0080】上記の例では、各POINTERに対して
CONTROL情報値が設けられており、CONTRO
L値は001に等しい。すなわち、ストライドモードが
示され、ストライドの大きさがエントリ56のSTR
IDE LENGTHに記憶された。しかし、代わりと
して010および011に等しいCONTROL値を使
用してもよい。それらの値は各々、(表5にLENGT
H1およびLENGTH2として示されている)既知の
固定長さに対応している。たとえば、LENGTH1は
3バイトの値とすることができる。この場合、STRI
DE LENGTH値からの値を使用する、前の例は代
わりに010のCONTROL値を使用して達成され
た。そしてそのCONTROL値から、それに対してプ
リフェッチ要求が発せられる次の予測されたアドレスを
計算するとき3というストライド長さを使用することが
わかっている。もう一つの例として、LENGTH2は
与えられた構成に対する1ワードの大きさとすることが
できる。したがって、LENGTH2はあるマシンにつ
いては4バイトとすることができる。したがって、この
ような場合には、CONTROL値が011に等しけれ
ば、エントリのSTRIDE LENGTH値を使用す
る必要は無く、代わりに011符号化からわかるような
4バイトの固定値を使用して相次ぐストライドアドレス
を計算する。上記の他に、更により複雑なストライディ
ングデータパターンに対しては、一つのPOINTER
に対応するCONTROLがもう一つのPOINTER
に対応するCONTROLとモードが異なってもよい。
たとえば、A CONTROLを001、B CONT
ROLを010、そしてC CONTROLを011と
することができる。このように、各CONTROLはス
トライドモードに関連するが、ストライド長さが異なっ
ている。更に他の例も、熟練した当業者には理解されよ
う。
【0081】上記のアドレスのパターンを背景として、
この点までプリフェッチ要求が発せられるということを
述べてきた。したがって、要求が実際にプリフェッチ動
作を生じるということを肯定的に述べていない。換言す
れば、一旦プリフェッチ要求が発せられると、その要求
に応答してプリフェッチ動作が実際に行われるか否かは
要求している回路にはわからない。プリフェッチ動作が
行われれば、多分、要求されたデータはその後、オンチ
ップキャッシュで利用できるので、そのキャッシュから
実際のフェッチによってそのデータを使用することがで
きる。しかし、場合によっては、プリフェッチ要求にサ
ービスしない、すなわち、プリフェッチ要求に応答した
プリフェッチ動作を許さないことが望ましいこともあ
る。このような場合の二つの例を以下に述べる。
【0082】プリフェッチ要求は発せられるが、その要
求に応答したプリフェッチは生じたり、生じなかったり
する場合の第一の例として、本実施例の更にもう一つの
側面では、LTB56の各エントリに一つ以上の付加的
な値を付加することができる。または上記のエントリに
アクセスする、ある付加的な回路を接続することができ
る。この付加的な回路は、キャッシュ行交差に基づいて
過去のプリフェッチ要求と比べて現在のプリフェッチ要
求を評価する。更に詳しく述べると、二つのアドレスを
評価することにより後続のアドレスが前のアドレスと同
じキャッシュ行の中にあるか否かを判定する種々の回路
がこの分野では知られている。後続のアドレスが前のア
ドレスと同じキャッシュ行の中に無ければ、後続のアド
レスは前のアドレスに対して行交差であると言われる。
すなわち、そのアドレスは一つのキャッシュ行と前のア
ドレスに対応するもう一つのキャッシュ行との間の境界
と交差する。本実施例の状況では、この機能をストライ
ド動作と組み合わせて使用することにより、性能を更に
改善する。更に詳しく述べると、プリフェッチ要求の一
部として相次ぐ各ストライドアドレスが発せられるにつ
れて、ストライドアドレスをこのような行交差検出回路
に提出することが好ましい。後続のアドレスがキャッシ
ュ行と交差しない場合には、したがって、前のストライ
ドアドレスに関連して多分捜された(かプリフェッチさ
れたかの一方または両方の)データを捜していることに
なる。したがって、他の考慮が無い場合には、後続のプ
リフェッチ要求はプリフェッチ動作を生じる必要は無
い。というのは、先行アドレスが既にプリフェッチ動作
を生じたからであり、またその動作により、後続のプリ
フェッチ要求で捜されるデータは既にキャッシュの中に
あることが保証されたからである。これをより良く説明
するため、命令23の例に戻る。前に説明したように、
方法20によって取り扱われるとき、命令23は122
1、1224、1227、および122Aのストライド
アドレスを発した。今、アドレス1221と1224が
一つのキャッシュ行の中にそろっており、アドレス12
27と122Aが一つのキャッシュ行の中にそろってい
るものとする。命令23の第一の生起に対しては、アド
レス1221に対応してプリフェッチ要求が発せられる
ことが前に示されている。これは系列の中の最初のアド
レスであるので、何か他の理由が無ければ、プリフェッ
チ要求に応答してプリフェッチ動作を行うことができ
る。このようにして、アドレス1221のデータがオン
チップキャッシュ内にプリフェッチされる。しかし、ア
ドレス1224もアドレス1221と同じキャッシュ内
にあるので、1221に対するアドレスがこのようにし
てプリフェッチされるのと同時にアドレス1224のデ
ータもプリフェッチされる。次に、命令23の第二の生
起に対しては、アドレス1224に対応してプリフェッ
チ要求が発せられることが前に示された。しかし、ここ
で、キャッシュ行交差検出回路は現在のアドレス122
4が先行するアドレス1221と同じキャッシュ行の中
にあることを検出する。これに応答して、アドレス12
24のデータに対してはプリフェッチ要求が発せられる
事が好ましいが、これに応答してこの点ではプリフェッ
チ動作が行われないことが好ましい。なぜなら、アドレ
ス1221のデータと同時に、捜し求められたデータが
既に以前にキャッシュにプリフェッチされていたからで
ある。この例について、説明を続ける。命令23の第三
の生起に対しては、アドレス1227に対応してプリフ
ェッチ要求が発せられることが前に示された。ここで、
キャッシュ行交差検出回路は現在のアドレス1227が
先行するアドレス1224と同じキャッシュ行の中に無
いことを検出する。したがって、アドレス1227のデ
ータに対して発せられたプリフェッチ要求に応答して、
プリフェッチ動作を行うことができることが好ましい。
これにより、アドレス1227(および122A)のデ
ータが異なるキャッシュ行にフェッチされる。これによ
り、この場合も、そのデータは後でフェッチのためオン
チップで利用できる。
【0083】プリフェッチ要求は発せられるが、その要
求に応答したプリフェッチは生じたり、生じなかったり
する場合の第二の例として、かなり前に説明したよう
に、付加的なシステムパラメータが、プリフェッチ動作
を行うべきか、または異なるが関連した応答性のプリフ
ェッチ動作が行われるように実際に要求を修正するべき
かということの有効性に影響を及ぼす。再び、これらの
付加的な考慮をするためには、前に引用した米国特許出
願第_____号、「マイクロプロセッサに基づくシス
テムでプリフェッチ処理のための回路、システム、およ
び方法」(Circuits,Systems,And
Methods For Prefetch Han
dling In A Microprocessor
−Based System)(代理人処理番号TI−
24153)を参照できる。
【0084】図8および9のエントリ56によって行
われるストライド動作とそれに続くルーピング動作につ
いて説明してきた。それらの図のエントリ56の特性
と、前に紹介した種々の側面を更に説明するために、表
4の例の命令23と関連して図9のエントリ56の中
の値の設定について説明する。前に説明したように、表
4のプログラムは、外部メモリ14のような、マイクロ
プロセッサ12がアクセスできるメモリに命令として記
憶される。したがって、それらの命令を処理するため
に、各命令はパイプライン38内にフェッチされ、それ
を通ってその実行段48に向かう。したがって、このプ
ロセスの間、命令23が初めて(すなわち、J=1でK
=1の場合)命令フェッチ段40によってフェッチされ
る。この点で当業者には知られた手法により、命令がロ
ード、記憶、記憶質問等のようなデータフェッチ命令で
あるということが検出される。命令23がデータフェッ
チ命令であると検出されたことに応答して、図5のエン
トリ56に関連して説明したように同じ初期ステップ
が行われる。したがって、それらの詳細をここで再び説
明しなくても前の説明を参照して理解し得る。簡単に述
べると、前に説明したように、LTB56を使用して、
それのエントリの一つが命令23に対応するか判定す
る。そして、エントリを検証するか、またはLTB56
の中の新しい列に(たとえば、LTB56の最も古く使
用されたエントリを立ちのかせることにより)エントリ
を作成する。しかし、更に前に述べたように、図4のエ
ントリはストライドに関連した属性を含んでおらず、デ
フォルト予測はループが含まれているということだっ
た。したがって、図4のエントリ56に対して、デー
タフェッチ命令を受けて、それのターゲットデータアド
レスをエントリに入れた後、NEXT POINTER
の値が01に設定される。これにより、POINTER
Bがデータフェッチ命令の次の生起の際に使用すべき次
のポインタであるということが示される。しかし、図8
のエントリ56の本実施例では、それに種々の付加的
なストライド処理能力が含まれている。その結果、後で
更に説明するように、それのデフォルト予測は、アドレ
ス系列がルーピングでなくストライディングを行うとい
うことである。したがって、NEXT POINTER
の値は00に維持される。すなわち、POINTER
Aが命令23の次の生起の際に使用すべき次のポインタ
であるということが示される。しかし、この点では単一
のターゲットデータアドレスしか無いので、それはTE
MPORARY POINTER SAVERとPOI
NTER Aに記憶され、A CONTROLは001
に設定される。表5で説明したようにこれは、ストライ
ド長さがSTRIDE LENGTH値に記憶されたス
トライドモードエントリを示す。更に、POINTER
Aの値がストライドアドレスの系列の中の第一のアド
レスであると予測されるので、STRIDE COUN
TERは1に初期設定される。最後にSTRIDE C
ONTROLは「不完全」に設定される。換言すれば、
本例の現在の点では、ストライド系列が完全であるか否
かわからない。したがって、後で理解されるような制御
の目的のため、STRIDE CONTROLの中にあ
る値(たとえば、ある2進コード)が設定されて、この
不完全なステータスを表示する。
【0085】命令23の第二の生起により、LTBにヒ
ットが生じる。これに応答して、NEXT POINT
ERがPOINTER Aであり、POINTER A
に対するCONTROL値が001(すなわち、ストラ
イドモードエントリ))、STRIDE COUNTE
Rが1に設定され、STRIDE CONTROLが
「不完全」に設定されているということが判定される。
これに応答して、この第二の生起からの実際のターゲッ
トデータアドレスを使用して、その値とPOINTER
Aに既に記憶されている値(すなわち、命令23の第
一の生起による実際のターゲットデータアドレス)との
差が計算される。したがって現在の例では、1221と
いう第一の生起のターゲットデータアドレスが1224
という第二の生起のターゲットデータアドレスから減算
される。これにより、3という差が得られる。更に、ス
トライドモードとしてデフォルトモードが予測されるの
で、次にこの差はエントリ56のSTRIDE LE
NGTH値に記憶される。更に、デフォルト予測によれ
ば命令23のこの第二の生起は一連のストライドアドレ
スの中の2番目であるので、STRIDE COUNT
ERはこのとき1から2に増やされる。更に、現在のタ
ーゲットデータアドレス(すなわち、1224)がPO
INTER Aに記憶される。最後に、二つの相次ぐア
ドレスだけが受信、分析されたので、NEXT POI
NTERは00にとどまってPOINTER Aを示
し、A CONTROLは001にとどまり、STRI
DE CONTROLは不完全なステータスを表示し続
ける。
【0086】命令23の第三の生起によって、LTBに
再びヒットが生じる。これに応答して、対応するエント
リに対して再び、NEXT POINTERがPOIN
TER Aであり、A CONTROLが001に設定
されていると判定される。しかし、ここでは、STRI
DE COUNTERが1より大きいということも検出
される。「不完全な」というSTRIDE CONTR
OL値と組合わされたこの表示から、ストライド系列が
設定されつつあり、まだ完成しておらず、データフェッ
チ命令の二つの生起しか含んでいないということがわか
る。したがって再び、この第三の生起からの実際のター
ゲットデータアドレスを使用して、その値とPOINT
ER Aに既に記憶されている値(すなわち、命令23
の第二の生起からの実際のターゲットデータアドレス)
との差が計算される。したがって、現在の例では、差は
3に等しい。次に、この差は既にSTRIDE LEN
GTHに記憶されている差と比較される。したがって、
現在の例では、一致していることが見出されるので、ア
ドレスのストライド系列が継続していると推定される。
その結果、(3という)同じ差がSTRIDE LEN
GTH値にとどまる。更に、現在のターゲットデータア
ドレス(すなわち、1227)がPOINTER Aに
記憶される。更に、STRIDE COUNTERはこ
のとき2から3に増やされる。
【0087】命令23の第四の生起により、再びLTB
56にヒットが生じ、対応するNEXT POINTE
RがPOINTER Aに設定され、A CONTRO
Lが001に設定され、STRIDE CONTROL
が「不完全」に設定される。しかし、STRIDE C
OUNTERが2より大きい(たとえば、現在3に等し
い)ので、データフェッチ命令のこの第四の生起に対す
る実際のターゲットデータアドレスはPOINTER
Aの値(すなわち、命令の第三の生起による値)とST
RIDE LENGTHに記憶された値との和となると
このとき予測される。換言すれば、この第四の生起がも
う一度、上記の第一から第三の生起で始まった系列のス
トライドになるということがこのとき予測される。した
がって、現在の例では、STRIDE LENGTHの
中の3という値がPOINTERAの中の1227の値
に加算され、その結果得られる122Aのターゲットデ
ータアドルスを使用してそのアドレスのプリフェッチ要
求が発せられる。更に結局、命令のこの第四の生起によ
り、命令はパイプライン38に沿って充分に進むので、
実際のターゲットデータアドレスが発せられる。これに
応答して、この第四の生起からの実際のターゲットデー
タアドレスを使用して、その値と前にPOINTER
Aに記憶された命令23の第三の生起からの値との差を
計算することにより、この第四の生起がもう一度ストラ
イドであったということを確かめる。ここで、差は3に
等しいので、STRIDE LENGTHに既に記憶さ
れている値と比較したとき、その結果は一致する。した
がって、予測されたターゲットデータアドレスは正確で
あったことが確かめられるので、更に、アドレスのスト
ライド系列が継続していると推定される。その結果とし
て、同じ差(3)がSTRIDE LENGTH値にと
どまり、STRIDE COUNTERがこのとき3か
ら4に増やされる。更に、現在のターゲットデータアド
レス(すなわち、122A)がPOINTER Aに記
憶される。
【0088】命令23の第五の生起により、再びLTB
56にヒットが生じ、対応するNEXT POINTE
RがPOINTER Aに設定され、A CONTRO
Lが001に設定され、STRIDE CONTROL
が「不完全」に設定される。もう一度、STRIDE
COUNTERが2より大きい(たとえば、現在4に等
しい)ので、データフェッチ命令のこの第五の生起に対
する実際のターゲットデータアドレスはPOINTER
Aの値(すなわち、命令の第四の生起による値)とS
TRIDE LENGTHに記憶された値との和となる
とこのとき予測される。したがって、現在の例では、S
TRIDE LENGTHの中の3という値がPOIN
TER Aの中の122Aの値に加算され、その結果得
られる122Dのターゲットデータアドレスを使用して
そのアドレスのプリフェッチ要求が発せられる。更に結
局、命令のこの第五の生起により、命令はパイプライン
38に沿って充分に進むので、実際のターゲットデータ
アドレスが発せられる。これに応答して、この第五の生
起からの実際のターゲットデータアドレスを使用して、
その値と前にPOINTER Aに記憶された命令23
の第四の生起からの値との差を計算することにより、こ
の第五の生起がもう一度ストライドであったということ
を確かめる。しかし、ここで、図7で説明したように命
令23の第五の生起に対する実際のターゲットデータア
ドレスは2221である。したがって、この第五のアド
レスとPOINTER Aに記憶された122Aの値と
の差はSTRIDE LENGTHに既に記憶されてい
る3という差に等しくない。このように、不一致に応答
して、現在の生起までのストライド系列が完了してい
る、すなわち、アドレス1221、1224、122
7、および122Aの系列が完了していると判定され
る。したがって、これに応答して、その系列の第一のア
ドレスがTEMPORARY POINTER SAV
ERからPOINTERAに戻される。更に、STRI
DE CONTROLの不完全なステータスがこのとき
再設定されて、POINTER Aに対するストライド
分析が完全であることを示す。したがってSTRIDE
LENGTHは、系列内のストライドアドレス相互の
間の適当な距離をそなえている。更に、前に説明したよ
うに、ストライド系列のアドレス毎にSTRIDE C
OUNTERは増やされた。したがって、ストライド系
列の検出を終了すると、STRIDE COUNTE
らの値がSTRIDE THRESHOLDに移され、
STRIDE COUNTERが1に戻される。更に、
次にNEXT POINTERが01の値に設定され
る。これにより、POINTER Bがデータフェッチ
命令の次の生起を制御すべきであるということが示され
る。最後に、命令23の第五の生起による現在のターゲ
ットデータアドレスがPOINTER BとTEMPO
RARY POINTER SAVERに記憶され、B
CONTROLが001に設定される。
【0089】命令23の第六の生起は種々の点で上記の
第二の生起に類似しているが、ここではPOINTER
AでなくPOINTER Bに対して動作が行われ
る。したがって、LTB56内のヒットに応答して、対
応するNEXT POINTERがPOINTER B
であり、POINTER Bに対するCONTROL値
が001に設定され、STRIDE COUNTERが
1に設定され、STRIDE CONTROLが「不完
全」に設定される。これに応答して、この第六の生起か
らの実際のターゲットデータアドレスを使用して、その
値とPOINTER Bに既に記憶されている第五の生
起の実際のターゲットデータアドレスの値との差が計算
される。したがって現在の例では、2221という第五
の生起のターゲットデータアドレスが2224という第
六の生起のターゲットデータアドレスから減算される。
これにより、3という差が得られる。しかしこの点で、
前に説明したようにPOINTER Aは既にストライ
ド系列に対応して完全に設定され、また前に説明したよ
うに各POINTERは同じストライドリソースを共通
使用する。したがって、POINTER Bがストライ
ド系列にも対応できる程度まで、STRIDE LEN
GTHがPOINTER Aの既に設定されたストライ
ド系列に対するのとPOINTER Bに対するのと同
じであることが保証される。したがって、第六および第
五の実際のターゲットデータアドレスから計算された3
というストライド長さが与えられたとき、この差がST
RIDELENGTH内の値と比較される。ここで、一
致が生じるので、ストライド系列に関連したPOINT
ER Bの設定を続行することができる。しかし注意す
べきことは、一致しない場合には代替のステップが行わ
れるということである。たとえば、前に述べた代替実施
例では、各POINTERはそれ自身の対応するストラ
イド属性をそなえているので、POINTER Bはス
トライド系列の異なる型、すなわちSTRIDE LE
NGTH、STRIDE THRESHOLDの一方ま
たは両方が異なる系列に対応するように設定することが
できる。熟練した当業者は更に他の代替実施例を確かめ
ることができる。いずれにしても、ストライド長さが一
致する現在の例に戻ると、STRIDE COUNTE
Rは1から2に増やされる。デフォルト予測によれば、
命令23のこの第六の生起はPOINTER Bに対す
る一連のストライドアドレスで二番目だからである。更
に、現在のターゲットデータアドレス(すなわち、22
24)がPOINTER Bに記憶される。最後に、二
つの相次ぐアドレスだけが受信、分析されたので、NE
XT POINTERは01にとどまってPOINTE
R Bを示し、B CONTROLは001にとどま
り、STRIDE CONTROLは不完全なステータ
スに設定されたままになる。
【0090】上記で熟練した当業者には理解されるよう
に、命令23の第三、第四、および第五の生起に関連し
たPOINTER Aの完了と同様にして、命令23の
第七、第八、および第九の生起に対して前のステップを
繰り返すことによりPOINTER Bに対応する値を
完了することもできる。したがって、命令23の第九の
生起の後、POINTER BにはTEMPORARY
POINTER SAVERからの2221のアドレ
スが戻され、STRIDE CONTROLは完了ステ
ータスを示すように再設定される。このようにして、一
旦次にPOINTER BがNEXT POINTER
として示されると、それはストライド値との組み合わせ
で一連の4個のストライドアドレスを予測する。それら
のストライドアドレスは2221、2224、222
7、および222Aである。更に注意すべきことは、第
九の生起を使用して現在のストライド系列が完了したと
推論されれば、STRIDE COUNTERの値がS
TRIDE THRESHOLDの値と比較される。こ
のステップは、多数のPOINTERの間でストライド
に関連した値が共通使用されるため、再び必要とされ
る。換言すれば、この点で、前に説明したようにSTR
IDE THRESHOLDは既に1221、122
4、1227、および122Aのストライド系列に対し
て完全に設定されている。したがって、POINTER
Bがストライド系列にも対応できる程度まで、STR
IDE THRESHOLDがPOINTER Aの既
に設定されたストライド系列に対するのとPOINTE
R Bに対するのと同じであることが保証される。した
がって、4というSTRIDE THRESHOLDが
与えられたとき、それがSTRIDE COUNTER
内の値と比較される。ここで、一致が生じるので、スト
ライド系列に関連したPOINTER Bの設定が完了
する。
【0091】POINTER BとそのCONTROL
がストライドモードを示すように完結した後も、POI
NTER AとPOINTER Bの値を比較するため
に付加的なステップを設けることができる。これら二つ
の値が一致すれば、代替の予測として、命令23が4個
のアドレスを通って繰り返しストライド系列を遂行した
後、もとの同じアドレス(すなわち、POINTER
AとPOINTERBの両方に記憶されたアドレス)に
戻ると予測することができる。換言すれば、POINT
ER Aに対応する与えられたストライド系列に対し
て、系列が完了した後、同じ糸列の開始アドレスにルー
プで戻ると判定することができる。この場合、更に前に
述べたように、ステップ88に関連して代替案を説明し
た。これにより、ストライドを完了し、その後に円形の
順序で次のPOINTER以外のPOINTERへのN
EXT POINTER表示を続けることができる。し
たがって、この現在の段落はこのような代替案から利益
を得る。この代替案により、ストライド系列を完了する
ことができ、現在完了しているストライドを支配した同
じPOINTERをNEXT POINTERが表すこ
とができる。換言すれば、現在の例に対して、NEXT
POINTER値は00に設定されたままになる。し
たがって、ストライド系列が完了すると、今完了したば
かりのストライド系列をも制御したPOINTER A
が再びデータフェッチ命令の次の生起を支配する。
【0092】最後に、図7の例およびエントリ56
設定に戻って、熟練した当業者には理解されるように、
第二組のストライドアドレス(すなわち、2221、2
224、2227、および222A)に対する前のステ
ップが命令23の第十から第十三の生起に対して繰り返
されることにより、POINTER Cに対応する値が
完了する。したがって、命令23の第十三の生起後に、
POINTER CにTEMPORARY POINT
ER SAVERからの5221のアドレスが再記憶さ
れ、C CONTROLが001に設定され、STRI
DE CONTROLが分析完了を示すように再設定さ
れる。このようにして、一旦POINTER CがNE
XT POINTERとして示されると、それはストラ
イド値との組み合わせで一連の4個のストライドアドレ
スを予測する。それらのストライドアドレスは522
1、5224、5227、および522Aである。更
に、命令23の第十三の生起に対する実際のターゲット
データアドレスを受けた後、熟練した当業者には理解さ
れるように、NEXT POINTERはPOINTE
R Aを指示する。したがって、第十三の生起の実際の
ターゲットデータアドレスはPOINTER Aの中の
ターゲットデータアドレスと一致することが確かめられ
る。したがって、現在の例では、一致が見出される。こ
れにより、POINTER Cに関連するストライド系
列の終わりからPOINTER Aで表されるような次
のストライド系列の初めに至るループが完成する。
【0093】上記で、熟練した当業者には理解されるよ
うに、命令23の第十三の生起の後、そのエントリ56
が(すなわち、図9に示すように)完成し、上記のよ
うなストライドの後にループが続く系列を正確に予測す
るように検証される。したがって、図10の方法での使
用を容易にするために、エントリ56を更に修正し
て、命令23の次の生起(すなわち、第十四の生起)と
その後の他の生起が図10の方法に従うようにすること
が好ましい。したがって、これを達成するため、STR
IDE COUNTERにSTRIDE THRESH
OLDをロードした後、一回減らすことが好ましい。と
いうのは、命令23の第十三の生起、すなわち、現在の
ストライド系列の第一の生起は、それのターゲットデー
タの実際のフェッチが行われたという点で既に処理され
ているからである。したがって、この点以降、図10の
方法は、エントリ56の予測が正確なままである限
り、上記のようにプリフェッチ要求を発することができ
る。
【0094】上記で、熟練した当業者は本実施例がどの
ようにデータフェッチ命令に対するルーピングとストラ
イディングの両方のデータパターンを正確に予測できる
かを理解するはずである。更に、符号化の種々の例をそ
れらの予測に対して示し、それらの符号化を設定するた
めの種々の手法を示したが、熟練した当業者は他の代替
案を確かめることができる。たとえば、図4の実施例は
3個のPOINTER(およびそれらの対応するCON
TROLフィールド)をそなえており、これは図2aか
ら図7に紹介されたようなパターンを検出するためには
好ましいが、種々のデータパターンに対して代わりの個
数のPOINTERを使用してもよい。もう一つの例と
して、図8の実施例に対する代替実施例を上記し、それ
によれば各POINTERとそれに結合されたCONT
ROLはそれ自身のストライドに関連した値の組をそな
えているが、更にもう一つの実施例として、ストライド
に関連した値のテーブルを設け、LTB56の一つ以上
のエントリがそのテーブルを参照し、またはそのテーブ
ルをLTB56の一つ以上のエントリからの一つ以上の
POINTERと結合するようにもできる。換言すれ
ば、ストライド値のリソースプールを異なるLTB56
によって共通使用することができるか、または一つ以上
のこのようなエントリの中の異なるPOINTERによ
って共通使用することができる。熟練した当業者は、更
に他の例を確かめることができる。
【0095】図11は、上記のLTB56のようなロー
ドターゲットバッファを構成する一つの方法を示す。詳
しく述べると、前に説明したように、LTB56に8個
の部分からなるセット対応構造の2048エントリが含
まれることが好ましい。したがって図11に示すよう
に、LTB56は2048個のエントリをそなえてお
り、第一のエントリ56で始まり、最後のエントリ5
2048で終わる。詳しく述べると、LTB56は8
部分セット対応構造であるので、LTB56の各行(ま
たは「セット」)は8個のエントリをそなえているの
で、各エントリは異なる8個の「部分」(way)の一
つに対応する。その用語はキャッシュの分野で使用され
る。更に、各セットは8個のエントリをそなえているの
で、LTB56は合計256セットをそなえることによ
り、合計2048エントリを形成する。したがって、2
048個のエントリの各々を使用して、対応するデータ
フェッチ命令についての情報を符号化することができ
る。しかし、これに関連して注意すべきことは、キャッ
シュのような写像結合構造として、当業者には知られて
いるように、LTB56のどこに命令を配置できるかと
いうことについての写像必要条件がある。更に詳しく述
べると、前に説明したように、与えられたデータフェッ
チ命令は対応するアドレスをそなえている。したがっ
て、このアドレスが与えられると、データフェッチ命令
はLTB56の256個のセットの中の1セットだけに
写像される。そのセットが識別されると、そのセットで
使用されるべき8個のエントリの中の実際の1セットが
種々の原理によって決められる。まず、後で説明するL
RU情報で始まり、次に多分、後で説明する他の考慮も
入れて決められる。
【0096】図11のLTB56の構成が与えられれ
ば、これは更に、本発明の更に他の実施例で使用するた
めの付加的な二つの概念を導入する。第一に、LTB5
6の各行のエントリのいくつかは他のエントリより長
い。この概念を一般的に説明するため、図11には垂直
な破線が含まれている。破線の左側のエントリは全体を
92で表したグループの中にある。グループ92のエン
トリは全体を94で表したグループの中にある、破線の
右側のエントリに比べて短い。第二に、エントリの各セ
ットはLRU情報をそなえている。実施例では、エント
リのサイズによりLRU情報が分けられる。特定のセッ
トに対して同じサイズをそなえた各グループのエントリ
に対して、一つのLRUインジケータが維持される。た
とえば、LTB56の最上部セットでは、LRU092
と名付けられたLRUインジケータがある。ここで、”
0”はそのLRU情報がLTB56の最上部すなわち0
番目のセットに対応するということを示す。サブスクリ
プト”92”は、そのLRU情報がセット0のグループ
92の中のエントリ(すなわち、エントリ56、56
、56、および56)に対応するということを示
す。LTB56の最上部のセットに対応するもう一つの
例として、LRU094名付けられたLRUインジケー
タがある。ここで、”0”は再びそのLRU情報がLT
B56の最上部すなわち0番目のセットに対応するとい
うことを示す。そしてサブスクリプト”94”は、その
LRU情報がセット0のグループ94の中のエントリ
(すなわち、エントリ56、56、56、および
56)に対応するということを示す。最後に、上記の
ように同じサイズのエントリのグループごとにLRU情
報をインジケータに分けるにもかかわらず、代替実施例
では、セット内のすべてのエントリに対して単一のLR
Uインジケータを使用することができる。
【0097】次に、図11のLTB56の可変長のエン
トリについて詳細に説明する。前に説明したように、グ
ループ92のエントリは長さがグループ94のエントリ
より短い。更に、詳しく述べると、前の図でエントリ5
の二つの異なるフォーマットについて説明した。す
なわち、一つは図4であり、もう一つは図8である。更
に注意すべきことは、図8の型のエントリは図4の型の
エントリに比べて構成するために必ず、より多くのビッ
ト数を必要とするということである。したがって、図1
1のLTB56の実施例では、グループ92のエントリ
は図4で示されたエントリ型を表すが、グループ94の
エントリは図8で示されたエントリ型を表す。換言すれ
ば、グループ92のエントリは、ルーピングおよび同一
アドレスパターンのような、複雑さの少ないデータパタ
ーンの挙動を予測するように動作できるのに対して、グ
ループ94のエントリはルーピングおよび同一アドレス
パターンの他に、ストライディングまたはストライディ
ング後ルーピングのような、より複雑なパターンの挙動
を予測するように動作できる。図11のLTB56の可
変サイズのエントリによれば、すべての行が同数の値を
そなえたLTBに比べて、種々の利点が得られる。詳し
く述べると、グループ94の各エントリは値の個数が比
較的多い。すなわち、その15個の値は、グループ92
の各エントリの10個の値に比べて多い。したがって、
与えられたデータフェッチ命令がグループ92のエント
リによって特性を表すことができる場合には、そのデー
タフェッチ命令に対する情報をグループ94ではなくて
グループ92に配置する方が効率が良い。たとえば、表
1で、命令11はルーピングパターンに従うように予測
することができる。したがって、命令11をグループ9
4に入れると、その行に対するストライドに関連した値
は無駄になる。命令11にはストライディングが含まれ
ていないからである。したがって、命令11は図11の
グループ92に一つのエントリとして含めることが好ま
しい。その結果、命令11はグループ94のエントリを
使用しないので、そうでなければ命令11によって使用
されてしまうエントリが付加的なストライドに関連した
リソースを使用する命令(たとえば、表4の命令23)
に自由に割り当てられる。換言すれば、グループ94の
各エントリを形成するために、かなりのリソースが必要
とされる。したがって、実施例では、それらのリソース
から利益を得る命令だけがグループ94の中に維持され
る。更に、やはり前に述べたように、ストライドに関連
した値をそなえるエントリを設定するとき、デフォルト
予測はデータフェッチ命令がストライドモードに従うと
いうことである。したがって、このデフォルトが与えら
れた場合、はじめてLTB56の中にエントリを設定す
るとき、そのエントリを最初、グループ94の中に形成
することが更に好ましい。その後、ストライドモードの
デフォルト予測が不正確であると判定されれば、そのエ
ントリを修正して、グループ92のエントリで得られ
る、複雑さの少ない構造に移すことができる。したがっ
て、再び、このプロセスは、グループ92とグループ9
4の両方のエントリの使用を更に最適化する。更に、代
替実施例では、異なるデフォルト、たとえば、データフ
ェッチ命令がループモードに従うというデフォルト予測
をそなえたデフォルトを使用してもよい。したがって、
この代替デフォルトが与えられた場合、LTB56の中
にエントリをはじめて設定するとき、そのエントリはま
ずグループ92の中に形成される。その後、ループモー
ドの代替デフォルト予測が不正確であると判定されれ
ば、そのエントリを修正して、グループ94のエントリ
で得られる、より複雑な構造に移すことができる。更に
付加的な変形は、LTBの中のエントリの異なる型、お
よびそれらのエントリで符号化することができるデータ
パターンの挙動の複雑さによって左右される。したがっ
て、それ以上の変形は熟練した当業者が確かめることが
できる。
【0098】次に、LRU情報について詳細に説明す
る。LRU情報については、LTB56内でのエントリ
の作成について説明したとき、一般的に紹介した。しか
し、LRU情報は図11に明白に示されている。なぜな
ら、後で詳しく説明するように、LRU情報は各LTB
エントリに含めることができる。更に付加的な情報と共
に使用することができるからである。この付加的な型の
情報については、後で図12により説明する。図12の
付加的な情報について説明する前に、前に一般的に説明
したように一実施例のLRU情報はLTB56にエント
リを作成するときの一つの要素であることが好ましい。
詳しく述べると、LRUインジケータに対応するすべて
のエントリが完全になった(すなわち、妥当な情報を含
んだ)後は、LRU情報は、次のデータフェッチ命令を
それらのエントリの中の一つに配置するために、使用さ
れたエントリの一つに上書きしてLTB56に新しいエ
ントリを作成することに関連するようになる。エントリ
56、56、56、および56の各々が妥当な
情報を記憶すれば、LRU92が、それらのエントリの
とれが最も古く使用されたかを表示する。次に、次のデ
ータフェッチ命令を受け、そのアドレスのためそれがエ
ントリ56、56、56、および56を含むエ
ントリのセットに写像される例を考えてみる。換言すれ
ば、次のデータフェッチ命令が命令フェッチ段40によ
ってフェッチされ、LTB56を使用してそれがそれに
対応するエントリを既にそなえているか否か判定し、そ
してエントリ56、56、56、および56
どれもがそのグループのエントリに写像される新しく受
信されたデータフェッチ命令に対応しないと判定された
ものとする。換言すれば、したがって、4個のエントリ
56、56、56、および56が各々、他のデ
ータフェッチ命令に対応する情報を既に記憶しているも
のともこの点で判定される。したがって、第一の実施例
では、既存のエントリに対応するLRU情報をチェック
して、4個のエントリのどれが最も古く使用されたかを
明らかにする。したがって、本実施例では、LRU94
が評価される。LRUインジケータに応答して、最も古
く使用されたエントリが、新しくフェッチされたデータ
フェッチ命令に関する情報に置き換えられる。この置き
換えは、単に最も古く使用されたデータフェッチ命令に
対応する情報に上書きすることにより、あるいはまずそ
れを何か二次記憶装置に立ちのかせた後、それの場所に
新しいエントリを作成することにより、行うことができ
る。しかし、後で図12の二つの付加的な値の紹介に続
いて、第二の代替実施例を詳しく説明する。この代替実
施例により、ある場合には上記のようにLRU情報を使
用することができるが、付加的な値に基づいて、更に最
も古く使用されたエントリ以外のエントリに上書きする
ことができる。
【0099】図12は、図4または図8のエントリ56
、または更に他の型のエントリの中にも含めることが
できる付加的な値を示す。したがって、図12のエント
リ56は上記の図4または図8と同じ種々の値を含む
ことができるが、図を簡単にするために上記の値の中の
二つだけが示されている。図12のエントリ56の中
の上記の値については、ADDRESS TAGとPO
INTER Aとが含まれる。図12のADDRESS
TAGは上記と同じである。POINTERAについ
ては、再び注意すべきことは、それは与えられたデータ
フェッチ命令に対するターゲットデータアドレスを予測
する値を表すということである。しかし、後で更に理解
されるように、図12に関連して説明した側面の多く
は、単一のPOINTERと複数のPOINTERをそ
なえたLTBエントリに適用できる。したがって、図1
2のエントリ56は、前記の種々の実施例と同様にP
OINTER BまたはPOINTER Cを含まな
い。図12のエントリ56の中の新しく示された値に
ついては、過去の予測されたアドレスの正確さ(PPA
A:past predicted address
accuracy)の値と過去のプリフェッチ有用性
(PPU:past prefetch usefui
ness)の値がそれらに含まれる。
【0100】図12に示されたPPAAについては、そ
れはLTB56の対応するデータフェッチ命令の過去の
生起に対する過去の予測されたアドレスの正確さの測定
値を示す。換言すれば、上記の多数の例からわかるよう
に、LTB56のエントリの妥当な各POINTERは
対応するデータフェッチ命令に対するターゲットデータ
アドレスを予測する。そしてエントリの可能性のある残
りの考慮(たとえば、NEXT POINTER、およ
びPOINTERに対応するCONTROL)に基づい
て、予測されたターゲットデータアドレスを含むプリフ
ェッチ要求が発せられる。このプリフェッチ要求に応答
して、そして予測されたデータが既にオンチップでない
場合に、通常、プリフェッチ要求が行われる。このと
き、種々のシステムパラメータに基づいてプリフェッチ
動作を防止するため、または別のゆり方で修正するため
の、アクセス制御器22の動作のような何か他の介在は
無い。プリフェッチ動作が行われる場合には、前に説明
したようにプリフェッチされた情報はオンチップで、キ
ャッシュまたはプリフェッチバッファのようなある記憶
リソースに与えられる。その後、データフェッチ命令が
充分にパイプライン38を通ると、実際のターゲットデ
ータアドレスが判定され、そのターゲットデータアドレ
スのデータに対するフェッチが行われる。したがって、
LTB56の適当なエントリからの予測が正確であれ
ば、前にプリフェッチされたデータをこのときオンチッ
プ記憶リソースからフェッチすることができる。現在の
状況に対するこれらの動作を要約すると、パイプライン
38を通るデータフェッチ命令の処理でデータフェッチ
命令がバイプライン38を通って進むにつれて、LTB
56からの予測されたターゲットデータアドレスと実際
のターゲットデータアドレスの両方が発生する。与えら
れたデータフェッチ命令に対するこれらの二つのアドレ
スの両方にアクセスすると、本実施例はこの二つを比較
して、PPAAに対する値を作成する。詳しく述べる
と、二つのアドレスが一致すると、LTB56の中のエ
ントリの最も最近の予測は正確である。逆に二つのアド
レスが一致しなければ、LTB56の中のエントリの最
も最近の予測は不正確である。これらの所見は種々の仕
方でPPAAで符号化し、更新することができる。以
下、二三の好ましい手法について説明する。
【0101】PPAAの値を符号化する第一の例とし
て、前の段落からわかるように、データフェッチ命令の
与えられた生起に対する予測されたターゲットデータア
ドレスと実際のターゲットデータアドレスとを比較する
ために充分な情報を利用することができる。したがって
一実施例では、PPAAは予測されたアドレス値による
正確な予測に応答して第一の方向に進むカウントであ
る。予測されたアドレス値による不正確な予測に応答し
て、カウントは第一の方向と逆の第二の方向に進む。た
とえば、比較されたターゲットデータアドレスが一致す
るたび毎にカウンタを増やすように第一の方向が大きく
なることができる。したがって、比較されたターゲット
データアドレスが一致しないたび毎にカウンタを減らす
ように第二の方向が小さくなる。その結果、PPAAの
カウントが高くなるにつれて、対応するデータフェッチ
命令に対する最近の予測がより正確になる。更に、カウ
ントのビット数が多くなるにつれて、その表示の分解能
が大きくなる。実際、カウントブランチ予測器に対する
他の参考文献が存在する。たとえば、ここに引用されて
いるウェスタンリサーチラボラトリのテクニカルノート
TN−36、スコットマックファーリングによる「ブラ
ンチ予測器の組み合わせ」である(”Combinin
g Branch Predictors”,Scot
t McFarling,Western Resea
rch Laboratory(WRL),Techn
ical Note TN−36,June 199
3)。実施例では、5ビットカウントを使用するので、
カウントは32個までの相次ぐ正しいまたは正しくない
予測を反映することができる。更に注意すべきことは、
与えられたデータフェッチ命令に対してLTB56にエ
ントリが作成されるのと同時にカウントがまず設定され
ることが好ましく、そしてカウントの初期値はその両極
端の間の中間あたりに設定される。したがって、5ビッ
トカウンタの例では、その両極端は0から31であるの
で、15(すなわち、2進値01111)または16
(すなわち、2進値10000)の値に初期設定するこ
とが好ましい。このようにカウントを中間値に初期設定
することにより、その初期表示は一方の極端または他方
の極端に偏ることはない。すなわち、その点ではPPA
Aは、正しい予測または正しくない予測の過去の表示が
あったということを不当に示唆することはない。その代
わりに、対応するデータフェッチ命令のすぐ後に続く生
起が、上記のようにカウントを増やすか減らすことによ
り、正しい予測または正しくない予測の表示に向かって
カウント値を変化させることができる。
【0102】PPAAの値の符号化の第二の例として、
PPAA値は予測されたターゲットデータアドレスと実
際のターゲットデータアドレスとが一致するか否かの過
去の判定を順次履歴として記録することができる。たと
えば、6ビットのPPAAフィールドは、これらの二つ
のアドレスの間の比較の最後の六つの状態を時間的に示
すことができる。したがって、不正確な予測が4回行わ
れた後、正確な予測が2回行われ、そして正確な予測が
論理高レベルで表されれば、6ビットのPPAAフィー
ルドは000011となる。したがって、0より1の多
いフィールドは、正確な予測の生起が最近多いというこ
とを示す。
【0103】PPAAの値を符号化するための二つの実
施例を上記した。しかし注意すべきことは、現在の教示
が与えられれば、熟練した当業者は種々の付加的な構成
を確かめることができるということである。更に注意す
べきことは、エントリ56に関連して示した単一のP
PAA値の使用は一実施例の例として示したものに過ぎ
ないということである。代替案に関連して前に説明した
ように、エントリ56は3個のPOINTERを含む
ことができる。したがって代替実施例では、3個のPO
INTERの各々が対応するPPAA値をそなえること
ができ、その対応するPPAA値は対応するPOINT
ERに対する過去の予測されたアドレスの正確さを表
す。この代替実施例では、必要な表示数を減らすことも
好ましい。たとえば、PPAAに対する第一の符号化手
法に関連して5ビットのカウンタを説明した場合につい
ては、個別の各POINTERに対してPPAAの個別
の値を初期化して維持する場合には、4ビットまたは3
ビットのカウンタのような、より小さい値を使用するこ
とが好ましい。代替実施例のもう一つの例として注意す
べきことは、LTBに関連したPPAA値の使用は上記
のLTBの型に限定する必要はないということである。
換言すれば、前記したようにLTB56は、同一アドレ
スモード、ループモード、ストライドモード、ストライ
ド後ループの組み合わせモード、および熟練した当業者
が確かめることができるような更に他のデータパターン
を予測することができる。それにもかかわらず、本明細
書でPPAAに適用するものとして説明した概念の多く
は、他のLTBにも適用し得る。
【0104】次に、図12に示されたPPU値について
説明する。これは、プリフェッチの前の予測されたター
ゲットデータのロケーションの判定に応答した対応する
データフェッチ命令の過去のプリフェッチの有用性を示
す。換言すれば、上記の多数の例からわかるように、プ
リフェッチ要求が発せられたとき、プリフェッチされた
データは種々のレベルに記憶することができる。たとえ
ば、図1のマイクロプロセッサ12では、前に説明した
ようにプリフェッチ要求がまずL2統合キャッシュ20
に発せられて、要求されたターゲットデータがそこに記
憶されているか判定される。更に実施例では、L2統合
キャッシュ20にヒットが生じると、プリフェッチ動作
は行われない。これに反してL2統合キャッシュ20に
ミスが生じると、何か他の考慮無しに、予測されたター
ゲットデータアドレスからのデータが、外部キャッシ
ュ、主メモリ14、または他のマイクロプロセッサのオ
ンチップメモリのような、あるオフチップリソースから
L2統合キャッシュ20にプリフェッチ(すなわち、検
索)される。上記を簡単にすると、プリフェッチ要求に
応答して、実施例は予測されたターゲットデータがオン
チップであるか、オフチップであるか判定する。また、
実施例では、予測されたターゲットデータがオフチップ
であるときだけ、付加的なプリフェッチ動作が行われ
る。換言すれば、予測されたターゲットデータがオフチ
ップであれば、本発明者は、データをオンチップリソー
スにプリフェッチして、後でデータフェッチ命令が更に
パイプライン38に入って行ったときフェッチできるよ
うにすることが有用であると考えた。逆に、予測された
ターゲットデータアドレスが既にオンチップであれば
(たとえば、L2統合キャッシュ20にあれば)、デー
タフェッチ命令が更にパイプライン38に入って行った
ときに、既にオンチップになっているデータをその後オ
ンチップ記憶リソースからフェッチすることができる。
したがって、後者の場合には、データが既にオンチップ
になっているので、付加的なプリフェッチ動作は有用で
ないと考えられる。上記のことをまとめると、データフ
ェッチ命令の一つの生起に対するプリフェッチ動作は有
用である(すなわち、予測されたターゲットデータアド
レスがオフチップである場合)が、データフェッチ命令
のもう一つの生起に対するプリフェッチ動作は必ずしも
有用ではない。これらの二つの可能性がある場合に、P
PUはデータフェッチ命令の相次ぐ生起に対する有用性
の履歴を維持し、PPUの値は種々の仕方で符号化し、
更新することができる。以下、二三の好ましい手法につ
いて説明する。
【0105】PPUの値を符号化する第一の例として、
上記のPPAAの値と同様にカウンタで符号化すること
ができる。したがって一実施例では、PPUもカウント
であり、有用なプリフェッチ(たとえば、予測されたタ
ーゲットデータがオフチップである場合のプリフェッ
チ)に応答して第一の方向に進むが、有用でないとみな
されるプリフェッチ(たとえば、予測されたターゲット
データがオンチップである場合のプリフェッチ)に応答
して第一の方向と反対の第二の方向に進む。したがって
再び、一例として、予測されたターゲットデータがオフ
チップであるたび毎にカウンタを増やすように第一の方
向が大きくなることができる。したがって、予測された
ターゲットデータがオンチップであるたび毎にカウンタ
を減らすように第二の方向が小さくなる。その結果、P
PUのカウントが高くなるにつれて、より有用なプリフ
ェッチが、対応するデータフェッチ命令に対する最近の
予測に基づいて行われることになる。更に、カウントの
ビット数が多くなるにつれて、その表示の分解能が大き
くなる。実施例では、5ビットカウントを使用するの
で、カウントはデータフェッチ命令の相次ぐ生起に対応
する32個までの相次ぐ有用な、または有用でないプリ
フェッチ事象を反映することができる。更にこの場合
も、与えられたデータフェッチ命令に対してLTB56
にエントリが作成されるのと同時にカウントがまず設定
されることが好ましく、そしてカウントの初期値はその
両極端の間の中間あたりに設定される。したがって、カ
ウントは一方の極端または他方の極端に偏ることはな
い。
【0106】PPUの値の符号化の第二の例として、P
PU値は上記のPPAA値と同様に履歴系列として実施
することができる。したがってPPUの場合には、履歴
系列はプリフェッチが有用であったか否かについての過
去の判定を反映する。たとえば、6ビットのPPUフィ
ールドは、判定の最後の六つの状態を時間的に示すこと
ができる。したがって、オフチップからプリフェッチさ
れたデータの予測が4回行われた後、オンチップでアル
ことがわかったデータの予測が2回行われた場合には、
6ビットのPPUフィールドは111100となる。し
たがって、0より1の多いフィールドは、オフチップで
予測されたデータの生起が最近多いということを示す。
【0107】PPUの値を符号化するための二つの実施
例を上記した。しかし注意すべきことは、現在の教示が
与えられれば、熟練した当業者は種々の付加的な構成を
確かめることができるということである。たとえば、上
記の説明では、唯二つの状態、すなわち、予測されたデ
ータがオンチップであるかオフチップであるかに基づい
てPPUを調整する。しかし、代替実施例はデータがど
こにあるかについてのより多くの情報を与えることがで
きる。したがって、異なる位置に異なるコードを割り当
てることができる。たとえば、どのオンチップ記憶装置
にデータがあるか、またはどのオフチップ記憶装置にデ
ータがあるかに応じて、異なるコードを割り当てること
ができる。更に、PPAAの値の場合と同様に、PPU
の値は3個のPOINTERをそなえたエントリ56
で実現することができ、3個のPOINTERの各々が
対応するPPUをそなえることができ、その対応するP
PU値は対応するPOINTERによって表されたデー
タに対する過去のプリフェッチの有用性を表す。代替実
施例のもう一つの例として、LTBに関連したPPU値
の使用は上記のLTBの型に限定する必要はない。
【0108】図12のPPAA値およびPPU値の種々
の精査について説明してきた。本発明者はそれらの値の
種々の使用を想定している。それらの使用は各値、個別
であってもよいし、互いの組み合わせであってもよい。
これらの値のこのような使用をここに示すが、その各々
についてここで簡単に紹介する。PPAA値およびPP
U値の第一の使用は、次のエントリが写像される関連の
LTBのすべてのエントリがいっぱいになった場合に、
LTB56のどのエントリに上書きするかを管理するた
めのLRU情報の評価に関連している。PPAA値およ
びPPU値の第二の使用は、プリフェッチの望ましさに
基づいてサイズの異なる行エントリをそなえるようにL
TBが構成される場合に、LTB56の中のエントリを
突き止めるためである。PPAA値およびPPU値の第
三の使用は、図1のプリフェッチ制御器22が考慮すべ
きシステムパラメータとしてである。
【0109】PPAA値の第一の使用は、LTB56の
あるセットの中の同じサイズのエントリのグループの中
のすべてのエントリがいっぱいになった場合に、LTB
56のどのエントリに上書きするかを管理するためのL
RU情報の評価に関連しており、図13aの方法96a
によって概略的に示されている。方法96aはステップ
98で始まる。ステップ98で、パイプライン38は命
令を受けて、それがデータフェッチ命令であるというこ
とを検出する。これに応答してステップ100は、受信
されたデータフェッチ命令がその命令のアドレスに応じ
てそれに写像されるLTB56内のセットを評価し、更
にそのセットの中のすべてのエントリがいっぱいである
か判定する。更に、ステップ100は更に細かく区別し
て、実施例のように、セットに複数のエントリグループ
を設け、各グループはそのエントリが一つのサイズであ
るので見分けられ、同じセットの中の異なるグループの
エントリは異なるサイズであるようにすることができ
る。この細かい区別を行った場合、ステップ100は受
信されたデータフェッチ命令に対応する情報をできる限
り符号化することが望ましいグループ(一つまたは複
数)の中のエントリだけを分析する。たとえば前に述べ
たように、実施例では、データフェッチ命令に対するエ
ントリがまずLTB56の長い方のエントリ、すなわ
ち、ストライドに関連したフィールドを含むエントリの
中に作成される。したがって、この状況ではステップ1
00に、受信されたデータフェッチ命令がそれに写像さ
れるセットがまず識別され、その後、そのセットに対す
るグループ94の各エントリがいっぱいであるか判定さ
れる。いっぱいでなければ、方法96aはステップ10
2に進む。いっぱいであれば、方法96aはステップ1
04に進む。
【0110】ステップ102で、LTB56の適切なセ
ットの、利用できるエントリの中の一つのエントリの中
に、現在のデータフェッチ命令に対応するエントリが作
成される。たとえば、適切なセットが識別されたとす
る。LTB56が図11に示された形式である場合に
は、新しいエントリがグループ94に作成されることが
好ましく、グループ92の複雑さの少ない予測値を使用
できる場合には、後でグループ92に変換することがで
きる。これに反して、関連のLTBのすべてのエントリ
が同じサイズである場合には、ステップ102で、適切
なセットに対する利用できるエントリの中のいずれかに
エントリが作成される。利用できるエントリの中から一
つを実際に選択することは、種々の配置アルゴリズム、
たとえば、ランダム選択により、または利用できるエン
トリのアドレスにより(たとえば、最高のアドレスまた
は最低のアドレスをそなえた利用できるエントリを選択
することにより)行うことができる。いずれにしても、
ステップ102でそのエントリが作成されると、方法9
6aはステップ98に戻り、次のデータフェッチ命令を
待つ。
【0111】ステップ104に達するのは、データフェ
ッチ命令が受信され、(ステップ100で)適切なLT
Bセット(すなわち、データフェッチ命令のアドレスが
それに写像されるセット)のすべてのエントリがいっぱ
いであると判定された後である。次に、ステップ104
で、この適切なセットに対するLRUインジケータを精
査する。再び、LTB56が図11の形式である場合に
は、精査はグループ94のLRUインジケータについて
だけ行うことが好ましい。というのは、グループ92の
エントリの一つを置き換える前に、グループ94のエン
トリの一つを置き換えることが都合がよいからである。
たとえば、受信されたデータフェッチ命令がLTB56
のセット0に写像される場合には、LRU094インジ
ケータを精査して、エントリ56、56、56
または56のどれが最も古く使用されたか判定する。
これに反して、関連のLTBのすべてのエントリが同じ
サイズである場合には、ステップ104では、選択され
たセットの中の同じサイズのLTBエントリのどれが最
も古く使用されたかを判定するだけである。次に、方法
96aはステップ106に進む。
【0112】ステップ106で、ステップ104で識別
されたエントリのPPAA値がある関値より大きいが判
定される。換言すれば、熟練した当業者には理解される
ように、上記のPPAAはLTB56の各エントリに対
して、そのエントリに対する過去の予測の成功の表示を
与える。したがって、LTB56のエントリに上書きす
るためにLRU情報にだけ頼る代わりとして、非常に正
確な予測を示すPPAAが、方法96aの残りのステッ
プを使用するLRU情報の効果を事実上無効にしてもよ
い。換言すれば、LTB56のあるエントリが非常に予
測可能であれば、たとえそのエントリが最も古く使用さ
れたとしても、それをLTB56の中に保持することは
なお価値があるかも知れない。たとえば、上記のPPA
Aのカウンタの実施例で、比較的大きなカウントは成功
した予測の過去の履歴を示す。更に詳しく述べると、5
ビットカウンタの例では、11100のオーダのカウン
ト閾値は、そのカウントに対応するLTB56のエント
リに対してかなり成功した過去の予測を示唆すると思わ
れる。もちろん、熟練した当業者はこの閾値を調整して
もよい。いずれにしても、図13aの方法の実施例で
は、識別されたエントリのPPAAが所望の閾値以上で
あれば、方法96aはステップ108に進む。これに反
して、識別されたエントリのPPAAが所望の閾値より
小さい場合には、方法96aはステップ110に進む。
【0113】前に識別されたエントリのPPAAが比較
的高いのでステップ108に達すると、ステップ104
で精査された同じセットのLRUインジケータを再び精
査して、そのセットの中の最も古く使用されたエントリ
を識別する。しかし、既に識別されたが、対応するPP
AA値がステップ106の閾値を超えることもわかった
前のエントリについては、どれも精査しない。更に、ス
テップ104と同様に、図11のLTB56が問題にな
っている場合には、ステップ108で精査されるのは、
最初はグループ94のエントリだけである。いずれにし
ても、熟練した当業者には理解されるように、ステップ
106および108は繰り返し継続して行われる。やが
て比較的古いLRU表示をそなえるだけでなく、PPA
Aの値がステップ106の閾値より低いエントリが、L
TB56の関連セットのグループの中で識別される。代
替案として、図13aには明白に示されていないが、ス
テップ106でグループの各エントリのPPAA値がス
テップ106の閾値以上である場合に、実施例ではPP
AA値が最低のエントリが以後の動作のため識別され
る。更に、ステップ106を更に修正して、精査されつ
つあるグループの各エントリのPPAA値がステップ1
06の閾値以上であり、最低のPPAA値が二つ以上の
エントリによって共有される場合には、それらの共有し
ているエントリの中で最も古く使用されたエントリが以
後の動作のため識別される。ステップ104によるエン
トリの識別が行われると、方法96aはステップ110
に進む。
【0114】ステップ110で、ステップ106の一回
以上の繰り返しによって識別されたエントリに上書きす
ることによって、受信されたデータフェッチ命令に対応
する新しいエントリが作成される。したがって通常は、
LRU表示が比較的古く、更にPPAA値がステップ1
06の閾値より低い、LTB56の中のエントリに上書
きされる(ただし、前の段落で説明したように、ある場
合には、すべてのエントリのPPAA値が閾値以上であ
る。この場合には、それらのエントリの中の一つが何か
代わりの手法によって識別される)。ステップ110で
そのエントリが作成されると、方法96aはステップ9
8に戻って、次のデータフェッチ命令を待つ。
【0115】上記で、熟練した当業者には理解されるよ
うに、方法96aは事実上、LTB56の中により多く
の、成功裏に予測されたデータフェッチ命令を維持す
る。したがって、これらの予測は保持されるので、それ
らのデータフェッチ命令はそれらの命令が将来生起した
場合に、より容易に処理される。更に、それらの命令に
対して情報(たとえば、POINTER、CONTRO
L等)を再設定しなければならないため手順を繰り返す
必要が少なくなる。このような手順は、上記の図4およ
び図8のそれぞれの説明の後に例として示されている。
【0116】図13aの方法96aについて説明してき
た。更に注意すべきことは、ステップ106のPPAA
値を上記のPPU値に置き換えることによって更にもう
一つの実施例を構成できるということである。したがっ
て、上記の詳細を繰り返すことなく熟練した当業者には
理解されるように、このような代替アプローチによりP
PU値は、LTB56の中のエントリに上書きするため
の唯一の規準としてLRU情報を使用することの効果を
事実上無効にする。換言すれば、この代替アプローチで
は、LTB56のセットがいっぱいになると(またはセ
ットの中の同一グループのすべてのエントリがいっぱい
になると)、最も古いエントリはそのPPU値が与えら
れた閾値を超えた場合には上書きされない。たとえば、
5ビットのカウンタの例では、11100のオーダのカ
ウント閾値は、そのカウントに対応するLTB56のエ
ントリに対するプリフェッチのかなり強い有用性を示唆
するように思われる。したがって、PPAAではなくて
PPUに関連して方法96aを使用することにより、こ
のようなエントリはLTB56の中にとどまる。その代
わりに、より低いPPU表示をそなえた比較的古いエン
トリが、新しく受信されたデータフェッチ命令に対応す
るエントリにより上書きされる。
【0117】更にもう一つの代替案として、もう一つの
実施例が得られる。この実施例では、図13aの方法9
6aを使用するが、ステップ106の比較はPPAA値
とPPU値の両方に基づく。換言すれば、PPUにより
与えられる情報が得られれば、これをステップ106で
閾値に対して測定されるべきPPAΛの値と、ある関数
で更に組み合わせることができる。たとえば、LTB5
6の中の最も古く使用されたエントリに対して、それの
PPAA値は比較的低いが、それのPPU値は比較的高
いと仮定する。したがって、組合わされたとき、大きな
PPU値により、PPAA値が低いにもかかわらずその
エントリをなお維持することを正当化することができ
る。したがって、組合わせに基づいて、このようなエン
トリをLTB56の中に維持することができる。そして
その代わりに、PPAAとPPUの組合わせが閾値より
低い別のエントリに上書きする。最後に注意すべきこと
は、これに関連してPPAAとPPUを組み合わせるた
めの考慮を限定する必要はなく、熟練した当業者は確か
めることができるということである。それにもかかわら
ず、実施例の一例として、PPAA値とPPU値とが各
々上記のようにカウントとして具体化される場合には、
PPAA値とPPU値の平均を計算して、閾値と比較す
ることができる。たとえば、各々の値が0と31の間の
カウントであれば、二つのカウントを加算して、その和
を2で割り、閾値と比較することができる。実際には、
割り算を避けるため、和を今述べた閾値の2倍の値と比
較することができる。しかし、更に注意すべきことは、
PPAAとPPUを組み合わせるために、より複雑な関
数を用いることができるということである。たとえば、
前に説明したように、低いPPAAと組み合わされた高
いPPUはLTB56の中にエントリを維持することを
正当化できる。しかし、更に注意すべきことは、低いP
PUと組み合わされた高いPPAAはLTB56の中に
エントリを維持することを正当化できないということで
ある。したがって、上記の平均手法は、この後者の可能
性に対しては正しい結果に到達しない。というのは、平
均値自体は()高いPPUと低いPPAA、(2)低い
PPUと高いPPAA、に対して同じ結果に達するから
である。したがって、熟練した当業者には理解されるよ
うに、それら二つの値の相対サイズに基づいて異なる結
果が必要とされる場合には、PPU値とPPAA値とを
組み合わせる別の関数が望ましいことがある。熟練した
当業者は更に他のアプローチを確かめることができる。
【0118】図13bは図13aの方法に対するフロー
チャートの変形を示す。この変形では、あるLTBエン
トリに上書きすることもできるが、図13bの付加的な
ステップにより、後で説明するようにLRU情報にかか
わらずエントリに上書きすることができる。図13bで
は、図13aの方法96aと同じ各ステップが含まれて
いる。したがって、図13aの参照番号を図13bでも
使用している。しかし、方法全体を区別するため、図1
3bの方法を96bと表す。更に注意すべきことは、方
法96bには方法96aのステップの他に二つのステッ
プが含まれているということである。詳しく述べると、
ステップ100の後にステップ103aおよび103b
が挿入されている。これらの新しく追加されたステップ
の各々については後で説明する。
【0119】ステップ100でグループのエントリがす
べていっぱいであると判定されたので、ステップ103
aに進み、最低のPPAA値をそなえたエントリが識別
される。再び、代替実施例では、ステップ103aは最
低のPPU値をそなえたエントリを識別することができ
る。更にもう一つの代替実施例では、ステップ103a
は最低のPPAAとPPUの組み合わせをそなえたエン
トリを識別することができる。このエントリが識別され
ると、ステップ103bはステップ103aで使用され
た値(一つまたは複数)(すなわち、PPAA、PP
U、またはその二つの組み合わせ)がある閾値より低い
か判定する。この、ある閾値は図13bではTHRES
HOLD2と表されている。後で明らかとなる理由によ
り、THRESHOLD2はTHRESHOLDに比べ
てかなり低い。問題になっている値(一つまたは複数)
がTHRESHOLD2より低い場合には、方法96b
はステップ110に進む。図13aで説明したように、
ステップ110では識別されたエントリに上書きする。
したがって現在の例では、上書きされるエントリは、P
PAA、PPU、またはPPAAとPPUの組み合わせ
がTHRESHOLD2より低いエントリである。これ
に反して、ステップ103bで問題になっている値(一
つまたは複数)がTHRESHOLD2以上である場合
には、方法は上記の図13aと同様にステップ104以
降に進む。
【0120】図13bの付加的なステップ103aおよ
び103bが与えられた場合、熟練した当業者は理解し
得るように、ステップ103aおよび103bの付加的
な精査により、貧弱な予測可能性、プリフェッチを発す
る有用性の欠如、の一方または両方の理由によりLTB
の中に保持しておく価値がほとんど無いエントリを多分
識別することができる。したがって、LTB56のエン
トリに上書きするためにLRU情報に頼ることの完全な
代替としてPPAA、PPUの一方または両方の値を使
用することができる。換言すれば、LTB56のあるエ
ントリの予測可能性が貧弱であるか、またはそれに対し
てプリフェッチ要求を発することが有益でなかった場合
には、そのエントリが最後に使用されたのがいつである
かにかかわらず、そのエントリをLTB56に保持して
おく価値がないかも知れない。たとえば、上記のPPA
Aのカウンタの実施例では、比較的低いカウントは成功
しなかった予測の過去の履歴を示す。更に詳しく述べる
と、5ビットのカウンタの例では、00100のオーダ
のカウント閾値はそのカウントに対応するLTB56の
中のエントリに対するかなり不成功の過去の予測を示唆
すると思われる。PPUの値およびPPAAとPPUと
の組み合わせ関数の値について、熟練した当業者は同様
の精査を確かめることができる。したがって、いずれに
しても、貧弱な予測可能性、プリフェッチの有用性の欠
如、の一方または両方をそなえたエントリは、新しく作
成されたエントリの利益になるように立ちのかせられ
る。そしてそれは、その立ちのかせられるエントリがL
TBの中にある間に最後に使用されたのがいつであるか
にかかわり無く行われる。
【0121】PPAA値またはPPU値単独、もしくは
これら二つの値の組み合わせの第二の使用は、プリフェ
ッチの望ましさに基づいてサイズの異なる行エントリを
そなえるようにLTBが構成された場合に、そのLTB
の中の対応するエントリの位置をつきとめるためであ
る。これについては図14に、全体を112で表したL
TBの代替構成のブロック図が示されている。この代替
構成でも図11と同様に再び、2048個のエントリが
8セットと256行にわたって配置され、再び異なるサ
イズに従ってエントリがグループ分けされている。しか
し、注意すべきことは、図11の二つのグループと異な
り、図14のLTB112には三つのグループが含まれ
ているということである。グループ116および118
は図11のLTB56のグループ92および94と同様
である。詳しく述べると、図14では、グループ116
の各エントリは図4に示されたエントリ56の型(す
なわち、ループモード型エントリ)であり、グループ1
18の各エントリは図8に示されたエントリ56の型
(すなわち、ストライド後ループモード型エントリ)で
あると示唆しょうとしている。したがって、グループ1
16と118は、これらの二つのグループに対してデー
タフェッチパターンの挙動が異なるという点で互いに異
なっている。更に注意すべきことは、各行はやはり合計
8個のエントリをそなえており、またグループ114は
行当たり4個のエントリをそなえているので、グループ
116および118の中の各行は図11の4個のエント
リと異なり2個のエントリしか含んでいない。グループ
114の各エントリについては、後で図15により詳細
に説明する。
【0122】図15には、単一のエントリ114が示
されている。このエントリ114は、図14のグルー
プ114のすべてのエントリのフォーマットを表す。実
施例では、エントリ114には二つの値しか含まれて
いない。第一の値は図4または図8に示されたエントリ
56の第一の値と同じであり、したがって、ADDR
ESS TAGである。このADDRESS TAGは
エントリを、データフェッチ命令がメモリの中のどこに
記憶されているかというアドレスに関連づけるものであ
る。第二の値はUNDESIRABLE PREFET
CH INDICATOR(プリフェッチが望ましくな
いというインジケータ)である。このUNDESIRA
BLE PREFETCH INDICATORは、エ
ントリ114に対応するデータフェッチ命令がプリフ
ェッチ動作に対して望ましくないと判定されたというこ
とを表す。すなわち、一つ以上の理由により、データフ
ェッチ命令が既に分析され、そのデータフェッチ命令に
関してプリフェッチ要求がなされるべきでないと判定さ
れたということを表す。更に詳しく述べると、PPAA
値、PPU値、または両者の組み合わせに基づいてプリ
フェッチ要求を発することが望ましくないことがある。
たとえば前に、あるデータフェッチ命令によりデータフ
ェッチのパターンを検出し、そのパターンから、そのデ
ータフェッチ命令に対する次のターゲットデータアドレ
スを予測するための種々の手法について説明した。しか
し、データパターンの多数の可能性のため、そしてまた
あるデータフェッチ命令は何らかのパターンに従ってフ
ェッチしないという事実のため、あるデータフェッチ命
令に対する次のターゲットデータアドレスは予測可能で
ない。実際、これは多数のデータフェッチ命令に対して
当てはまり得る。したがって、これらの型の命令が数回
の生起にわたって生じた後、LTBの中の各々に対して
エントリを形成すべきであるが、そのエントリは低いP
PAA値をそなえることになる。したがって、あるデー
タフェッチ命令に対するPPAAがある閾値に達する
か、またはそれより下に下がったとき、その命令に対し
て予測不可能であると推論することがあり得る。たとえ
ば、PPAAを示すために5ビットのカウンタが使用さ
れる上記の実施例では、00100のオーダの閾値カウ
ントは対応するデータフェッチ命令が予測不可能である
ということを示唆していると思われる。この場合も、熟
練した当業者は実際のカウントの閾値数またはPPAA
の他の尺度を変更することができる。いずれにしても、
一旦、与えられたデータフェッチ命令が予測不可能であ
るとみなされると、その命令のそれ以後の生起に対して
その命令に対するプリフェッチ要求をその後発すること
は望ましくないとみなされる。グループ116または1
18の中のその命令に対する既存のエントリは無効とさ
れる。したがって、この閾値に達すると、次にグループ
114の中のエントリがそのデータフェッチ命令に対し
て形成される。やはり注意すべきことは、プリフェッチ
が望ましくないという推論はPPUの結果として達した
ということである。換言すれば、与えられた命令に対し
て、それが数回生起した後に、LTBの中のエントリが
低いPPU値をそなえるところにエントリを形成でき
る。したがって、そのデータフェッチ命令に対するPP
Uがある閾値以下になったとき、その予測可能性にかか
わらず、データはオンチップであることが多く、その理
由によりその命令に対してプリフェッチ要求を繰り返し
発することは望ましくないと推論することができる。こ
の場合も閾値は、カウンタをある所定の数と比較するな
ど、PPUの符号化に使用される手法に基づいて評価す
ることができる。いずれにしても、そのデータがオンチ
ップであることが多いので与えられたデータフェッチ命
令がプリフェッチ要求から利益を得ることはめったにな
いとみなされると、代替実施例ではその命令の以後の生
起に対してその命令に対するプリフェッチ要求をその後
発することは望ましくないとみなすことができる。した
がって、この閾値に達すると、次にそのデータフェッチ
命令に対してグループ114の中のエントリが形成さ
れ、この場合もグループ116または118の中のその
命令に対する既存のエントリは無効とされる。最後に、
PPAAまたはPPUを個別に使うのではなくて、もう
一度PPAAとPPUの両方の組み合わせを形成するこ
とにより、与えられたデータフェッチ命令に対してプリ
フェッチ要求を発することの長所を評価することもでき
る。このようにして、これらの値を組み合わせた関数に
基づいて閾値を設定すると、あるデータフェッチ命令を
それに対するプリフェッチ要求が望ましくない命令であ
ると識別することができ、そしてこの場合も、次にそれ
らのデータフェッチ命令に対してグループ114の中の
エントリが形成され、グループ116または118の中
のその命令に対する既存のエントリは無効とされる。
【0123】図14のLTB112にもどって、すべて
の行が同数の値をそなえているLTBに比べてそれから
得られる種々の利点について説明する。第一に、LTB
112には、図11のLTB56から得られる利点の多
数がある。換言すれば、この場合も、グループ118で
はなくてグループ116にデータフェッチ命令に対する
情報を配置することはより効率的である。しかし、この
側面を超えて、適切なときは、エントリをグループ11
6またはグループ118ではなくてグループ114に配
置することが更に有利である。詳しく述べると、グルー
プ114のエントリの二つの値と比べて、グループ11
6およびグループ118の各エントリは比較的多い個数
の値をそなえている。したがって、与えられたデータフ
ェッチ命令がグループ114のエントリによって特性を
表すことができる場合には、そのデータフェッチ命令に
対する情報をグループ116またはグループ118では
なくてグループ114に配置することが更に効率的であ
る。たとえば、多数の頻繁に生じるデータフェッチ命令
に対してプリフェッチ要求を発することは望ましくない
ことがあり得る。したがって、最初はこのような各デー
タフェッチ命令に対してエントリをグループ116また
はグループ118に作成することができる。しかし、こ
のようなフェッチ命令に対するPPAA、PPU、また
はPPAAとPPUの組み合わせ関数が適切な閾値に達
すると、そのエントリを無効とすることができ、そのデ
ータフェッチ命令に対して新しいエントリをグループ1
14に作成することができる。その後、データフェッチ
命令が命令フェッチ段40によってフェッチされたと
き、LTB112が使用され、グループ114にヒット
が生じる。これにより、データフェッチ命令がプリフェ
ッチが望ましくない命令であることが前にわかったとい
うことが示される。したがって、そのデータフェッチ命
令については付加的な予測リソースを使用しなければな
らず、グループ114にとどまることができる。更に、
上記のグループ116またはグループ118の対比と同
様に、ここでも再びグループ116またはグループ11
8の中のエントリの有利な付加的な値が、プリフェッチ
要求が望ましくないデータフェッチ命令によって浪費さ
れることがなく、その代わりに、それらのリソースは予
測可能なデータフェッチ命令の特性を表すために利用で
きるように残される。
【0124】上記のことからわかるように、命令はLT
B112の中のグループの間を移動することができる。
たとえば、命令がストライディングパターンに従うとい
う予測により、データフェッチ命令が最初はグループ1
18に配置することができる。しかし、その後命令が複
雑さの少ないパターンに従うことができると判定されれ
ば、これをグループ116に移動することができる。最
後に、データフェッチ命令が予測不可能であるか、また
は予測されたデータに対してオンチップとなることが多
いと判定された場合には、これをグループ114に移動
することができる。したがって、この場合も、LTB1
12から全体として与えられるリソースが最大限とされ
る。
【0125】注意すべきことは、LTB112は種々の
点で変形して、更に付加的な実施例を形成することがで
きるということである。たとえば、LTB112は単一
の構造として描かれているが、グループ114、116
および118の各々を別々の構造として形成してもよ
い。グループ116および118は特定の予測可能性型
(すなわち、それぞれループ、およびストライド後ルー
プ)となっているが、グループ114を他の型のLTB
エントリと組み合わせてもよい。これにより、プリフェ
ッチ要求が望ましくない第一グループのデータフェッチ
命令が設けられる(すなわち、グループ114)。また
第二グループも設けられるが、第二グループのデータフ
ェッチ命令は普通の仕方(たとえば、ルーピング)また
は第二グループの中で異なる仕方(すなわち、第二グル
ープの中のある命令はルーピングであるが、他の命令は
ストライディング後にルーピングである)で予測可能で
ある。更に、ここにはルーピングまたは、ストライディ
ング後にルーピングの例が与えられているが、上記の仕
方のいずれかで、更に付加的な型の予測可能性パターン
を組み合わせてもよい。たとえば、グループの各データ
フェッチ命令がストラィディングパターンの命令だけで
ある(すなわち、ルーピングまたは何か他の属性は無
い)ようなグループを含めてもよい。熟練した当業者は
更に他の型のパターンも確かめることができる。いずれ
にしても、プリフェッチが望ましくないデータフェッチ
命令はプリフェッチが望ましいデータフェッチ命令とは
別々に識別される。実際、この別々の性質のため、図1
5に示されたUNDESIRABLE PREFETC
H INDICATORは必ずしもグループ114の各
エントリの値ではなくて、グループ114の各エントリ
の既知の属性としてもよい。換言すれば、与えられたデ
ータフェッチ命令に対してプリフェッチ要求が望ましく
ないという表示は、単にエントリがグループ114の中
にあるということだけで知ることができる。換言すれ
ば、あるエントリがあるグループ(たとえば、グループ
114)の中にあれば、定義によりそのエントリはプリ
フェッチ要求が望ましくなく、プリフェッチ要求を発す
るべきでないエントリであるということを示すために充
分な制御が行われる場合には、別個のUNDESIRA
BLE PREFETCH INDICATORは不要
である。
【0126】PPAA値またはPPU値単独、もしくは
それら二つの値の組み合わせの第三の使用は、図1のプ
リフェッチ制御器22によって精査されるべきシステム
パラメータとしての使用である。詳しく述べると、前記
米国特許出願第 号、「マイクロプロセッサに
基づくシステムでプリフェッチ処理のための回路、シス
テム、および方法」(Circuits,System
s,And Methods For Prefetc
h Handling In A Microproc
essor−Based System)(代理人処理
番号TI−24153)の図3にはプリフェッチサービ
スブロック80が示されている。このプリフェッチサー
ビスブロック80は、本明細書の図1に示されたアクセ
ス制御器22の一部として含めることができる。プリフ
ェッチサービスブロック80はプリフェッチ要求を受け
る。受信されたプリフェッチ要求と種々のシステムパラ
メータに応答してアクセス制御器22は、プリフェッチ
されたデータがプリフェッチ要求により要求されたのと
サイズが同じであるか異なる場合に、プリフェッチ動作
を誘発しないことによりプリフェッチ要求を抑制する
か、またはオンチップキャッシュへのデータフェッチ動
作を誘発することができる。この動作について、プリフ
ェッチ要求に応答してプリフェッチ動作を誘発するか否
かに影響を及ぼし得る種々のシステムパラメータが上記
特許出願に示されている。その中に説明されているパラ
メータの他に、更に付加的なシステムパラメータはPP
AA値、PPU値、またはそれらの値の両方を組み合わ
せた関数とすることができる。たとえば、あるLTBエ
ントリがあまり予測可能でない場合には、たとえ対応す
るデータフェッチ命令に応答してプリフェッチ要求が発
せられても、そのプリフェッチ要求に応答してプリフェ
ッチ動作を誘発することは価値がないかも知れない。更
に詳しく述べると、5ビットのカウンタの例では、01
000のオーダの閾値カウントは、そのカウントに対応
するLTBエントリに対してかなり不成功の過去の予測
を示唆すると思われる。したがって、カウントが001
11以下である場合には、アクセス制御器22はその要
求に応答してプリフェッチ動作を誘発しないことによ
り、そのプリフェッチ要求を抑制することができる。こ
の目的のため、この場合も、カウントの実際の閾値数ま
たはPPAAの他の尺度は熟練した当業者が変更するこ
とができる。
【0127】上記のように、直前の段落で説明した原理
も、熟練した当業者は修正して、PPU値もしくはPP
AA値とPPU値との組み合わせを入れるようにするこ
とができる。実際、PPAA値とPPU値とを組み合わ
せることによりアクセス制御器22に表示を与えるため
の一つのアプローチとして(またはアクセス制御器22
自身によって行われるように)、図16はPPAA値と
PPU値を受けて、それらの二つの値に基づいてプリフ
ェッチコードを出力するためのプログラマブルテーブル
120を示す。プログラマブルテーブル120はマイク
ロプロセッサ12上のどこかに配置される。詳しく述べ
ると、前に説明した実施例では、各値の過去の生起の中
の6回の生起を保持することによってPPAAとPPU
の両方が符号化された。したがって、データフェッチ命
令の生起毎に、対応するPPAAとPPUの値がある。
図16で、これらの値の各々は組合わされて、一対の値
を形成する。たとえば、[PPAA,PPU]と表
された対は最も古く記憶された対を表すことを意図して
おり、[PPAA,PPU]と表された対は最も古
く記憶された対の後の時間に到来した対を表すことを意
図しており、以下同様にして、[PPAA,PP
]と表された6番目の対まで続く。このようにして
6対のビットが得られ、合計12ビットの系列がプログ
ラマブルテーブル120のアドレスとして使用される。
更に、あるデータフェッチ命令の任意の与えられた生起
に対してPPAAとPPUの値は異なり得るので、それ
らの値の相次ぐ6対に対してPPAAとPPUの値の合
計212個の可能な組み合わせがある。したがって、プ
ログラマブルテーブル120には4096(すなわち、
12)個の異なるアドレス指定できるロケーションが
含まれる。後で説明するように、各ロケーションには一
つのプリフェッチコードが含まれる。
【0128】12ビットの入力で表されるようなPPA
AとPPUの値の組み合わせ系列が与えられた場合、プ
リフェッチ動作が望ましいか否かの表示をプリフェッチ
コードが与える。後で詳しく説明するように、入力系列
の第一の場合に応答したプリフェッチコード出力を変え
て、同じ入力系列の第二の場合に応答して異なる出力コ
ードが出力されるようにすることができる。この後者の
能力で、プログラマブルテーブル120はプログラマブ
ルと呼ばれる。4096のビット組み合わせのいずれに
対応する出力プリフェッチコードも、マイクロプロセッ
サ12の動作の間、変えることができるからである。次
の表6は4通りの可能なプリフェッチコードを示してお
り、その後にそれらのコードの解釈と効果の説明があ
る。
【表6】
【0129】表6は、与えられたプリフェッチコードに
対してプリフェッチ動作が望ましいか否か、またデータ
フェッチ命令の現在の生起に基づいてそのコードを変え
るべきか否かを示す。たとえば、[PPAA,PPU
]から[PPAA,PPU]が11111111
1111の系列に等しいものと仮定する。したがって、
データフェッチ命令の第一から第六の生起の各々に対し
て、予測されたターゲットデータアドレスは正しく、予
測されたターゲットデータアドレスはオフチップであっ
た。したがって、プリフェッチ動作は非常に有利であ
り、したがって、プリフェッチ動作は望ましい。いずれ
にしても、これの第七の生起に対して、プログラマブル
テーブル120のアドレスはそのアドレス111111
111111にある。これが00のプリフェッチコード
を出力するものとする。表6から、このコードはプリフ
ェッチ動作が望ましいということを示す。しかし更に、
データフェッチ命令の第七の生起は予測誤り(PPAA
=0)を生じ、フェッチされたデータはオンチップであ
る(PPU=0)ものと仮定する。したがって、ともに
0に等しいPPAAとPPUの値が2ビットの対の最新
のビットとして加えられる。そして次のデータフェッチ
命令に対して、すなわち、第八の生起に対して、プログ
ラマブルテーブル120はそのアドレス1111111
11100にアドレス指定され、適切なプリフェッチコ
ードを出力する。しかし更に、第七の生起によるPPA
AとPPUの現在の値を使用して、必要なら前の生起に
よるプリフェッチコード(すなわち、第六の生起で使用
された111111111111のアドレスに応答して
出力される00の値)を更新する。詳しく述べると、P
PAAとPPUの値は予測誤りとオフチップヒットによ
り今は低下しているので、更にこれらの低下したPPA
A値とPPU値の組み合わせが、ある関数(表6ではf
{PPAA,PPU}として示されている)によってア
ドレス指定されて、与えられた閾値より低くなるものと
仮定する。したがって、表6により、アドレス1111
11111111に対するプリフェッチコードは00か
ら01に変えるべきである。したがって、次回アドレス
111111111111がプログラマブルテーブル1
20に入力されたとき、プログラマブルテーブル120
は00ではなくて01の値を出力する。この例からわか
るように、上記はまた少したって繰り返される。アドレ
ス111111111111に対応するプリフェッチコ
ードはもう一度変化して、00または10(プリフェッ
チ動作が望ましくないことを示唆する)にさえ戻る。
【0130】プログラマブルテーブル120についての
上記の説明では、すべてのLTBエントリが単一のプロ
グラマブルテーブル120を使用するものと示唆してい
る。しかし、代替実施例では、複数のテーブルを使用す
ることができる。各LTBエントリがそれ自身の対応す
るプログラマブルテーブル120をそなえることさえ考
え得る。しかし、この後者の場合には、入力ビット数
(すなわち、PPAAとPPUの履歴量)を減らすこと
が好ましい。そうしなければ、2048個のLTBエン
トリが各々、それ自身の4096ビットのプログラマブ
ルテーブルを必要とすることになる。これは実用上、構
造が大きくなり過ぎると思われる。更にもう一つの代替
案では、あるデータフェッチ命令に対するエントリは一
つのプログラマブルテーブルにアクセスすることがで
き、他のデータフェッチ命令に対するエントリは別のプ
ログラマブルテーブルにアクセスできる。たとえば、前
に説明したように、LTBエントリはACCESS T
YPE値を含むことができるので、一つの型のデータフ
ェッチ命令は第一のプログラマブルテーブルにアクセス
することができるのに対して、もう一つの型のデータフ
ェッチ命令は第二のプログラマブルテーブルにアクセス
することができる。更に他の例は熟練した当業者が確か
めることができる。
【0131】上記の説明から理解されるように、上記の
実施例は多数の利益と利点を与える。たとえば、LTB
エントリは過去の予測されたアドレスの正確さを表す値
とともに作成することができる。もう一つの例として、
LTBエントリはそのエントリに対応するデータフェッ
チ命令にら対する過去のプリフェッチ動作の有用性を表
す値とともに作成することができる。実際、これらの値
のいずれも単独または組み合わせて使用することによ
り、データフェッチ命令の将来の生起に応答して将来の
プリフェッチ動作を遂行することの望ましさを表示する
ことができる。更に、これらの値は種々の目的に使用す
ることができる。たとえば、LTB内のより古いエント
リに上書きするため、そのエントリに対する長さ、目的
の一方または両方が変わるLTBの中であるエントリの
位置をつきとめるため、プリフェッチ要求を発すべき
か、または既に発せられたプリフェッチ要求に応答して
プリフェッチ動作を行うべきか判定するためなどであ
る。これらの利点の他に、ある側面の構成についてはか
なりの変化を伴い、しかもすべて本発明の範囲内にあっ
て、多数の異なる実施例が提供された。したがって、本
実施例を詳細に説明してきたが、特許請求の範囲に規定
された発明の範囲から逸脱することなく、上記の説明に
対して種々の置換、変形、または変更を行い得るもので
ある。
【0132】以上の説明に関して更に以下の項を開示す
る。 (1)マイクロプロセッサであって、アドレスに応答し
てデータを出力するためのメモリシステムであって、予
測されたターゲットデータアドレスをそなえるプリフェ
ッチ要求を受けるようにも動作し得るメモリシステム
と、ロードターゲット回路と、を具備し、前記ロードタ
ーゲット回路は、第一の長さの第一の複数のエントリで
あって、第一の複数のエントリの各々は、(a)第一の
複数のエントリの各々を対応する第一の複数のデータフ
ェッチ命令に対応させるための値と、(b)対応する予
測されたターゲットデータアドレスを表示するための値
と、を具備するような第一の長さの第一の複数のエント
リと、第一の長さと異なる第二の長さの第二の複数のエ
ントリであって、第二の複数のエントリの各々は第二の
複数のエントリの各々を対応する第二の複数のデータフ
ェッチ命令に対応させるための値を具備するような第二
の複数のエントリと、を具備し、そして前記第二の複数
のデータフェッチ命令の各々はそれに対してプリフェッ
チ要求を発することが望ましくない型のデータフェッチ
命令である、マイクロプロセッサ。
【0133】(2)第1項記載のマイクロプロセッサで
あって、前記第二の複数のデータフェッチ命令の各々は
対応するターゲットデータアドレスをそなえ、そして前
記第二の複数のデータフェッチ命令の各々は、対応する
ターゲットデータが予測不可能であるので、それに対し
てプリフェッチ要求を発することが望ましくない型のも
のである、マイクロプロセッサ。 (3)第1項記載のマイクロプロセッサであって、前記
第二の複数のデータフェッチ命令の各々は対応するター
ゲットデータをそなえ、そして前記第二の複数のデータ
フェッチ命令の各々は、対応するターゲットデータがメ
モリシステムの中に配置されているので、それに対して
プリフェッチ要求を発することが望ましくない型のもの
である、マイクロプロセッサ。 (4)第1項記載のマイクロプロセッサであって、前記
第一の複数のデータフェッチ命令の各々はルーピングパ
ターンをそなえると予測されるので、前記第一の複数の
データフェッチ命令の各々に対して、対応するターゲッ
トデータアドレスは第一のターゲットデータアドレスか
ら少なくとも一つの中間アドレスを通って最後のターゲ
ットデータアドレスに進み、そして第一のターゲットデ
ータアドレスに戻る、マイクロプロセッサ。
【0134】(5)第1項記載のマイクロプロセッサで
あって、前記第一の複数のデータフェッチ命令の各々は
ストライディングパターンをそなえると予測されるの
で、前記第一の複数のデータフェッチ命令の各々に対し
て、対応するターゲットデータアドレスは第一のターゲ
ットデータアドレスから複数の付加的なターゲットデー
タアドレスを通って進み、複数の付加的なターゲットデ
ータアドレスの各々のデータターゲットアドレスはそれ
自身と直前のターゲットデータアドレスのデータターゲ
ットアドレスとの間の差としてストライド長さをそなえ
ている、マイクロプロセッサ。 (6)第1項記載のマイクロプロセッサであって、前記
第一の複数のデータフェッチ命令の各々はストライディ
ングパターンの後にルーピングパターンをそなえると予
測され、ストライディングパターンは、前記第一の複数
のデータフェッチ命令の各々に対して、対応するターゲ
ットデータアドレスが第一のターゲットデータアドレス
から複数の付加的なターゲットデータアドレスを通って
進むようなものであり、複数の付加的なターゲットデー
タアドレスの各々のデータターゲットアドレスはそれ自
身と直前のターゲットデータアドレスのデータターゲッ
トアドレスとの間の差としてストライド長さをそなえて
おり、そしてストライディングパターンとその後のルー
ピングパターンは、前記第一の複数のデータフェッチ命
令の各々に対して、対応するターゲットデータアドレス
は第一のターゲットデータアドレスから少なくとも一つ
の中間アドレスを通って最後のターゲットデータアドレ
スに進み、そして第一のターゲットデータアドレスに戻
る、マイクロプロセッサ。
【0135】(7)第1項記載のマイクロプロセッサで
あって、前記第一の複数のデータフェッチ命令の各々に
対するターゲットデータアドレスは第一のデータパター
ンに従って予測可能であり、更に第三の複数のエントリ
も含まれ、前記第三の複数のエントリの各々が前記第三
の複数のエントリの各々を対応する第三の複数のデータ
フェッチ命令に対応させるための値を具備し、前記第三
の複数のデータフェッチ命令の各々が対応するターゲッ
トデータアドレスをそなえ、そして前記第三の複数のデ
ータフェッチ命令の各々に対する対応するターゲットデ
ータアドレスが第二のデータパターンに従って予測可能
である、マイクロプロセッサ。 (8)第1項記載のマイクロプロセッサであって、前記
第二の複数のエントリが前記第一の複数のエントリに比
べて数が多い、マイクロプロセッサ。 (9)第1項記載のマイクロプロセッサであって、前記
第一の複数のエントリの各々が更に、対応する予測され
たターゲットデータアドレスの過去の予測された正確さ
を表示するための値をも具備する、マイクロプロセッ
サ。
【0136】(10)第1項記載のマイクロプロセッサ
であって、前記第一の複数のエントリの各々が更に、予
測されたターゲットデータアドレスのターゲットデータ
が、そのエントリに対応するデータフェッチ命令の前の
過去の生起に応答してメモリシステムに記憶されたか否
かを表示するための過去プリフェッチ有用性値をも具備
する、マイクロプロセッサ。 (11)第1項記載のマイクロプロセッサであって、前
記第一の長さが前記第二の長さより大きい、マイクロプ
ロセッサ。 (12)第1項記載のマイクロプロセッサであって、前
記データフェッチ命令がロード命令である、マイクロプ
ロセッサ。 (13)第1項記載のマイクロプロセッサであって、前
記データフェッチ命令が記憶命令である、マイクロプロ
セッサ。
【0137】(14)マイクロプロセッサであって、ア
ドレスに応答してデータを出力するためのメモリシステ
ムであって、予測されたターゲットデータアドレスをそ
なえるプリフェッチ要求を受けるようにも動作し得るメ
モリシステムと、第一の複数のエントリを含むロードタ
ーゲット回路と、を具備し、前記第一の複数のエントリ
の各々が、(a)前記第一の複数のエントリの各々を対
応する第一の複数のデータフェッチ命令に対応させるた
めの値と、(b)対応する予測されたターゲットデータ
アドレスを表示するための値と、(c)予測されたター
ゲットデータアドレスのターゲットデータが、そのエン
トリに対応するデータフェッチ命令の前の過去の生起に
応答してメモリシステムに記憶されたか否かを表示する
ための過去プリフェッチ有用性値と、を具備する、マイ
クロプロセッサ。
【0138】(15)第14項記載のマイクロプロセッ
サであって、前記過去プリフェッチ有用性値がカウンタ
を具備し、予測されたターゲーットデータアドレスのタ
ーゲットデータがデータフェッチ命令の前の過去の生起
に応答してメモリシステムに記憶されなかったことが検
出されたことに応答して、前記カウンタが第一の方向に
進み、そして予測されたターゲットデータアドレスのタ
ーゲットデータがデータフェッチ命令の前の過去の生起
に応答してメモリシステムに記憶されたことが検出され
たことに応答して、前記カウンタが第二の方向に進む、
マイクロプロセッサ。 (16)第14項記載のマイクロプロセッサであって、
前記過去プリフェッチ有用性値が一連の2進インジケー
タを具備し、そして前記一連の2進インジケータの各々
が、予測されたターゲットデータアドレスのターゲット
データがデータフェッチ命令の前の過去の生起に応答し
てメモリシステムに記憶されたか否かを反映する、マイ
クロプロセッサ。
【0139】(17)命令パイプラインとロードターゲ
ットバッファとをそなえたマイクロプロセッサを動作さ
せる方法であって、以下のステップを含むマイクロプロ
セッサ動作方法:命令パイプラインで、対応するメモリ
アドレスをそなえたデータフェッチ命令を受信するこ
と、マイクロプロセッサ上のロードターゲットバッファ
でエントリのグループを識別することであって、該識別
されたグループは受信されたデータフェッチ命令に対応
するターゲットデータアドレス予測情報を前記対応する
メモリアドレスに基づいて記憶することができるグルー
プであるような、エントリのグループを識別すること、
前記識別されたエントリグループから最も古く使用され
たエントリを識別することであって、前記最も古く使用
されたエントリは、(a)前記最も古く使用されたエン
トリをあるデータフェッチ命令に対応させるための値
と、(b)前記最も古く使用されたエントリをある予測
されたターゲットデータアドレスに対応させるための値
と、(c)前記最も古く使用されたエントリの前記予測
されたターゲットデータアトレスの過去の予測された正
確さを表示するための値と、を具備するような、最も古
く使用されたエントリを識別すること、および過去の予
測された正確さを表示するための前記値が所定の閾値よ
り低くなったことに応答して、前記受信されたデータフ
ェッチ命令に対応する予測情報を前記識別されたエント
リに上書きすること。
【0140】(18)命令パイプラインとロードターゲ
ットバッファとをそなえたマイクロプロセッサを動作さ
せる方法であって、以下のステップを含むマイクロプロ
セッサ動作方法:命令パイプラインで、対応するメモリ
アドレスをそなえたデータフェッチ命令を受信するこ
と、マイクロプロセッサ上のロードターゲットバッファ
でエントリのグループを識別することであって、該識別
されたグループは受信されたデータフェッチ命令に対応
するターゲットデータアドレス予測情報を前記対応する
メモリアドレスに基づいて記憶することができるグルー
プであるような、エントリのグループを識別すること、
前記識別されたエントリグループから最も古く使用され
たエントリを識別することであって、前記最も古く使用
されたエントリは、(a)前記最も古く使用されたエン
トリをあるデータフェッチ命令に対応させるための値
と、(b)前記最も古く使用されたエントリをある予測
されたターゲットデータアドレスに対応させるための値
と、(c)予測されたターゲットデータアドレスのター
ゲットデータが、最も古く使用されたエントリに対応す
るデータフェッチ命令の前の過去の生起に応答してメモ
リシステムに記憶されたか否かを表示するための過去プ
リフェッチ有用性値と、を具備するような、最も古く使
用されたエントリを識別すること、および過去プリフェ
ッチ有用性値が所定の閾値より低くなったことに応答し
て、前記受信されたデータフェッチ命令に対応する予測
情報を前記識別されたエントリに上書きすること。
【0141】(19)命令パイプラインとロードターゲ
ットバッファとをそなえたマイクロプロセッサを動作さ
せる方法であって、以下のステップを含むマイクロプロ
セッサ動作方法:命令パイプラインで、対応するメモリ
アドレスをそなえたデータフェッチ命令を受信するこ
と、マイクロプロセッサ上のロードターゲットバッファ
でエントリのグループを識別することであって、該識別
されたグループは受信されたデータフェッチ命令に対応
するターゲットデータアドレス予測情報を前記対応する
メモリアドレスに基づいて記憶することができるグルー
プであるような、エントリのグループを識別すること、
前記識別されたエントリグループから最も古く使用され
たエントリを識別することであって、前記最も古く使用
されたエントリは、(a)前記最も古く使用されたエン
トリをあるデータフェッチ命令に対応させるための値
と、(b)前記最も古く使用されたエントリをある予測
されたターゲットデータアドレスに対応させるための値
と、(c)前記最も古く使用されたエントリの前記予測
されたターゲットデータアドレスの過去の予測された正
確さを表示するための値と、(d)予測されたターゲッ
トデータアドレスのターゲットデータが、最も古く使用
されたエントリに対応するデータフェッチ命令の前の過
去の生起に応答してメモリシステムに記憶されたか否か
を表示するための過去プリフェッチ有用性値と、を具備
するような、最も古く使用されたエントリを識別するこ
と、および過去の予測された正確さを表示するための前
記値と過去プリフェッチ有用性値との組み合わせが所定
の閾値より低くなったことに応答して、前記受信された
データフェッチ命令に対応する予測情報を前記識別され
たエントリに上書きすること。
【0142】(20)命令パイプラインとロードターゲ
ットバッファとをそなえたマイクロプロセッサを動作さ
せる方法であって、以下のステップを含むマイクロプロ
セッサ動作方法:命令パイプラインで、対応するメモリ
アドレスをそなえたデータフェッチ命令を受信するこ
と、マイクロプロセッサ上のロードターゲットバッファ
でエントリのグループを識別することであって、該識別
されたグループは受信されたデータフェッチ命令に対応
するターゲットデータアドレス予測情報を前記対応する
メモリアドレスに基づいて記憶することができるグルー
プであるような、エントリのグループを識別すること、
前記識別されたエントリグループからある特定のエント
リを識別することであって、前記特定のエントリは、
(a)前記特定のエントリをあるデータフェッチ命令に
対応させるための値と、(b)前記特定のエントリをあ
る予測されたターゲットデータアドレスに対応させるた
めの値と、(c)前記特定のエントリの前記予測された
ターゲットデータアドレスの過去の予測された正確さを
表示するための値と、を具備するような、特定のエント
リを識別すること、および過去の予測された正確さを表
示するための前記値が所定の閾値より低くなったことに
応答して、前記受信されたデータフェッチ命令に対応す
る予測情報を前記特定のエントリに上書きすること。
【0143】(21)命令パイプラインとロードターゲ
ットバッファとをそなえたマイクロプロセッサを動作さ
せる方法であって、以下のステップを含むマイクロプロ
セッサ動作方法:命令パイプラインで、対応するメモリ
アドレスをそなえたデータフェッチ命令を受信するこ
と、マイクロプロセッサ上のロードターゲットバッファ
でエントリのグループを識別することであって、該識別
されたグループは受信されたデータフェッチ命令に対応
するターゲットデータアドレス予測情報を前記対応する
メモリアドレスに基づいて記憶することができるグルー
プであるような、エントリのグループを識別すること、
前記識別されたエントリグループからある特定のエント
リを識別することであって、前記特定のエントリは、
(a)前記特定のエントリをあるデータフェッチ命令に
対応させるための値と、(b)前記特定のエントリをあ
る予測されたターゲットデータアドレスに対応させるた
めの値と、(c)予測されたターゲットデータアドレス
のターゲットデータが、前記特定のエントリに対応する
データフェッチ命令の前の過去の生起に応答してメモリ
システムに記憶されたか否かを表示するための過去プリ
フェッチ有用性値と、を具備するような、特定のエント
リを識別すること、および過去プリフェッチ有用性値が
所定の閾値より低くなったことに応答して、前記受信さ
れたデータフェッチ命令に対応する予測情報を前記特定
のエントリに上書きすること。
【0144】(22)アドレスに応答してデータを出力
するためのメモリシステム(20)を含むマイクロプロ
セッサ(12)。メモリシステムは、予測されたターゲ
ットデータアドレスをそなえるプリフェッチ要求を受け
るようにも動作し得る。マイクロプロセッサには、ロー
ドターゲット回路(56)も含まれる。ロードターゲッ
ト回路は第一の長さの第一の複数のエントリ(116)
と第二の長さの第二の複数のエントリとを含む。第一の
複数のエントリの各々は、エントリを対応する第一の複
数のデータフェッチ命令に対応させるための値(ADD
RESS TAG)をそなえる。更に、第一の複数のエ
ントリの各々は、対応する予測されたターゲットデータ
アドレスを表示するための値(POINTER A)を
もそなえる。第二の複数のエントリの各々も、第二の複
数のエントリの各々を対応する第二の複数のデータフェ
ッチ命令に対応させるための値(ADDRESS TA
G)をそなえる。しかし、第二の複数のデータフェッチ
命令の各々は、それに対してプリフェッチ要求を発する
ことが望ましくない型のデータフェッチ命令である。
【図面の簡単な説明】
【図1】 多レベルメモリシステムからの情報のフェッ
チおよびプリフェッチの両方を行うための種々の構成要
素がある、その多レベルメモリシステムをそなえたマイ
クロプロセッサの電気図である。
【図2】 レコードを示す図であって、aはデータ処理
ソフトウェアによって処理されるべきレコードの一例の
フォーマットを示す図、bはaで示されるフォーマット
に従う4個のレコードで使用されるべきデータの一例を
示す図である。
【図3】 図2の最初の3個のレコードを記憶する3個
のメモリエリアの構成を示し、このメモリエリア構成に
より、単一の期間の間に、データが記憶装置から第一の
エリアに入力され、その間に、データが第二のエリアで
処理され、第三のエリアのデータが記憶装置に出力され
るというように、相次ぐデータレコードをオーバラップ
して取り扱うことができる、メモリエリア構成図であ
る。
【図4】 ルーピングデータパターンを収容するため
の、ロードターゲットバッファ(LTB)の中のエント
リの第一の実施例を示す図である。
【図5】 3個の相次ぐアドレス1200、2200、
および5200の間のルーピングを示すように、ある値
が完了した図4のLTBエントリを示す図である。
【図6】 レコードを示す図であって、aは図2aのレ
コードに更に付加的なフィールドを付加したフォーマッ
トを示す図、bはaで示されるフォーマットに従う4個
のレコードで使用されるべきデータの一例を示す図であ
る。
【図7】 図3の3個のメモリエリアの構成を示すが、
図6bに示された付加的なデータをも含むメモリエリア
の構成図である。
【図8】 LTBの中のエントリの第二の実施例を示
し、ストラィディングデータパターン、ルーピングデー
タパターン、またはストライディングデータパターンと
ルーピングデータパターンの組み合わせを収容するエン
トリの第二の実施例を示す図である。
【図9】 3個の相次ぐアドレス1221、2221、
および5221の間のルーピング、とともにアドレス1
221からアドレス122Aを通るストライディングを
示すように、ある値が完了した図8のLTBエントリを
示す図である。
【図10】 相次ぐストライドアドレスに対して相次ぐ
プリフェッチ要求が発せられるように、図8のLTBエ
ントリに応答して動作する方法を示す図である。
【図11】 8個の部分からなるセット対応構造をそな
えたLTBを示す図であり、各セットの最初の4個のエ
ントリが第一のサイズであり、各セットの第二の4個の
エントリが第一のサイズより大きな第二のサイズであ
る、LTBを示す図である。
【図12】 エントリによって表される命令に対してプ
リフェッチ要求を発することの望ましさに関連する二つ
の値をそなえたLTBエントリを示す図であり、その二
つの値が過去の予測されたアドレスの正確さを示すPP
AA値と過去のプリフェッチの有用性を示すPPU値を
含む、LTBエントリを示す図である。
【図13】 それのLRU値とPPAA値に基づいてL
TBエントリに上書きするための方法のフローチャート
を示す図であり、aはそのフローチャートを示す図であ
り、bは比較的低いPPAA値に基づいてもLTBエン
トリに上書きできるようにした変形のフローチャートを
示す図である。
【図14】 8個の部分からなるセット対応構造をそな
えたLTBを示す図であり、各セットの第一のグループ
のエントリは第一のサイズであり、それに対してプリフ
ェッチ要求を発することが望ましくない、対応するデー
タフェッチ命令を収容し、各セットの第二のグループの
エントリは第一のサイズより大きい第二のサイズであ
り、各セットの第三のグループのエントリは第二のサイ
ズより大きい第三のサイズである、LTBを示す図であ
る。
【図15】 それに対してプリフェッチ要求を発するこ
とが望ましくない、データフェッチ命令を収容するため
のLTBのエントリを示す図である。
【図16】 PPAA値とPPU値を受けて、それら二
つの値に基づいてプリフェッチコードを出力するための
プログラマブルテーブルを示す図である。
【符号の説明】
12 マイクロプロセッサ 20 L2統合キャッシュ 38 パイプライン 56 ロードターゲットバッファ 98 データフェッチ命令検出ステップ 104 最古使用エントリ判定ステップ 114 プリフェッチが望ましくないエントリのグルー
プ 116 ループモード型エントリのグループ 118 ストライド後ループモード型エントリのグルー
プ PPAA 過去の予測されたアドレスの正確さ PPU 過去のプリフェッチの有用性

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 マイクロプロセッサであって、 アドレスに応答してデータを出力するためのメモリシス
    テムであって、予測されたターゲットデータアドレスを
    そなえるプリフェッチ要求を受けるようにも動作し得る
    メモリシステムと、 ロードターゲット回路と、 を具備し、 前記ロードターゲット回路は、 第一の長さの第一の複数のエントリであって、該第一の
    複数のエントリの各々は、 (a)第一の複数のエントリの各々を対応する第一の複
    数のデータフェッチ命令に対応させるための値と、 (b)対応する予測されたターゲットデータアドレスを
    表示するための値と、 を具備するような第一の長さの第一の複数のエントリ
    と、 第一の長さと異なる第二の長さの第二の複数のエントリ
    であって、該第二の複数のエントリの各々は該第二の複
    数のエントリの各々を対応する第二の複数のデータフェ
    ッチ命令に対応させるための値を具備するような第二の
    複数のエントリと、 を具備し、 前記第二の複数のデータフェッチ命令の各々はそれに対
    してプリフェッチ要求を発することが望ましくない型の
    データフェッチ命令である、 マイクロプロセッサ。
  2. 【請求項2】 命令パイプラインとロードターゲットバ
    ッファとをそなえたマイクロプロセッサを動作させる方
    法であって、 命令パイプラインで、対応するメモリアドレスをそなえ
    たデータフェッチ命令を受信するステップと、 マイクロプロセッサ上のロードターゲットバッファでエ
    ントリのグループを識別することであって、該識別され
    たグループは受信されたデータフェッチ命令に対応する
    ターゲットデータアドレス予測情報を前記対応するメモ
    リアドレスに基づいて記憶することができるグループで
    あるような、エントリのグループを識別するステップ
    と、 前記識別されたエントリグループから最も古く使用され
    たエントリを識別するステップであって、前記最も古く
    使用されたエントリは、 (a)前記最も古く使用されたエントリをあるデータフ
    ェッチ命令に対応させるための値と、 (b)前記最も古く使用されたエントリをある予測され
    たターゲットデータアドレスに対応させるための値と、 (c)前記最も古く使用されたエントリの前記予測され
    たターゲットデータアドレスの過去の予測された正確さ
    を表示するための値と、 を具備するような、最も古く使用されたエントリを識別
    するステップと、 過去の予測された正確さを表示するための前記値が所定
    の閾値より低くなったことに応答して、前記受信された
    データフェッチ命令に対応する予測情報を前記識別され
    たエントリに上書きするステップと、 を含む方法。
JP10031905A 1996-12-31 1998-01-05 プリフェッチの望ましさに関連するエントリのあるロードターゲットバッファを具現するマイクロプロセッサ回路、システム、および方法 Pending JPH10198561A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US3395896P 1996-12-31 1996-12-31
US033958 1996-12-31

Publications (1)

Publication Number Publication Date
JPH10198561A true JPH10198561A (ja) 1998-07-31

Family

ID=21873453

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10031905A Pending JPH10198561A (ja) 1996-12-31 1998-01-05 プリフェッチの望ましさに関連するエントリのあるロードターゲットバッファを具現するマイクロプロセッサ回路、システム、および方法

Country Status (2)

Country Link
US (1) US6216219B1 (ja)
JP (1) JPH10198561A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005529407A (ja) * 2002-06-07 2005-09-29 マイクロン テクノロジー,インコーポレイティド 内部キャッシュおよび/またはメモリアクセス予測を持つメモリハブ

Families Citing this family (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7837116B2 (en) 1999-09-07 2010-11-23 American Express Travel Related Services Company, Inc. Transaction card
US7239226B2 (en) 2001-07-10 2007-07-03 American Express Travel Related Services Company, Inc. System and method for payment using radio frequency identification in contact and contactless transactions
US7889052B2 (en) 2001-07-10 2011-02-15 Xatra Fund Mx, Llc Authorizing payment subsequent to RF transactions
US7172112B2 (en) 2000-01-21 2007-02-06 American Express Travel Related Services Company, Inc. Public/private dual card system and method
US8543423B2 (en) 2002-07-16 2013-09-24 American Express Travel Related Services Company, Inc. Method and apparatus for enrolling with multiple transaction environments
US8429041B2 (en) 2003-05-09 2013-04-23 American Express Travel Related Services Company, Inc. Systems and methods for managing account information lifecycles
US7627531B2 (en) 2000-03-07 2009-12-01 American Express Travel Related Services Company, Inc. System for facilitating a transaction
US7650314B1 (en) 2001-05-25 2010-01-19 American Express Travel Related Services Company, Inc. System and method for securing a recurrent billing transaction
US9031880B2 (en) 2001-07-10 2015-05-12 Iii Holdings 1, Llc Systems and methods for non-traditional payment using biometric data
US8284025B2 (en) 2001-07-10 2012-10-09 Xatra Fund Mx, Llc Method and system for auditory recognition biometrics on a FOB
US8548927B2 (en) 2001-07-10 2013-10-01 Xatra Fund Mx, Llc Biometric registration for facilitating an RF transaction
US8294552B2 (en) 2001-07-10 2012-10-23 Xatra Fund Mx, Llc Facial scan biometrics on a payment device
US7303120B2 (en) 2001-07-10 2007-12-04 American Express Travel Related Services Company, Inc. System for biometric security using a FOB
US7746215B1 (en) 2001-07-10 2010-06-29 Fred Bishop RF transactions using a wireless reader grid
US7925535B2 (en) 2001-07-10 2011-04-12 American Express Travel Related Services Company, Inc. System and method for securing RF transactions using a radio frequency identification device including a random number generator
US8635131B1 (en) 2001-07-10 2014-01-21 American Express Travel Related Services Company, Inc. System and method for managing a transaction protocol
US20040236699A1 (en) * 2001-07-10 2004-11-25 American Express Travel Related Services Company, Inc. Method and system for hand geometry recognition biometrics on a fob
US7705732B2 (en) 2001-07-10 2010-04-27 Fred Bishop Authenticating an RF transaction using a transaction counter
US7762457B2 (en) 2001-07-10 2010-07-27 American Express Travel Related Services Company, Inc. System and method for dynamic fob synchronization and personalization
US7503480B2 (en) 2001-07-10 2009-03-17 American Express Travel Related Services Company, Inc. Method and system for tracking user performance
US7827106B2 (en) 2001-07-10 2010-11-02 American Express Travel Related Services Company, Inc. System and method for manufacturing a punch-out RFID transaction device
US7493288B2 (en) 2001-07-10 2009-02-17 Xatra Fund Mx, Llc RF payment via a mobile device
US7360689B2 (en) 2001-07-10 2008-04-22 American Express Travel Related Services Company, Inc. Method and system for proffering multiple biometrics for use with a FOB
US8001054B1 (en) 2001-07-10 2011-08-16 American Express Travel Related Services Company, Inc. System and method for generating an unpredictable number using a seeded algorithm
US9024719B1 (en) 2001-07-10 2015-05-05 Xatra Fund Mx, Llc RF transaction system and method for storing user personal data
US7249112B2 (en) 2002-07-09 2007-07-24 American Express Travel Related Services Company, Inc. System and method for assigning a funding source for a radio frequency identification device
US7805378B2 (en) 2001-07-10 2010-09-28 American Express Travel Related Servicex Company, Inc. System and method for encoding information in magnetic stripe format for use in radio frequency identification transactions
US9454752B2 (en) 2001-07-10 2016-09-27 Chartoleaux Kg Limited Liability Company Reload protocol at a transaction processing entity
US7668750B2 (en) 2001-07-10 2010-02-23 David S Bonalle Securing RF transactions using a transactions counter
US7119659B2 (en) 2001-07-10 2006-10-10 American Express Travel Related Services Company, Inc. Systems and methods for providing a RF transaction device for use in a private label transaction
US7996324B2 (en) 2001-07-10 2011-08-09 American Express Travel Related Services Company, Inc. Systems and methods for managing multiple accounts on a RF transaction device using secondary identification indicia
US8538863B1 (en) 2001-07-10 2013-09-17 American Express Travel Related Services Company, Inc. System and method for facilitating a transaction using a revolving use account associated with a primary account
US8960535B2 (en) 2001-07-10 2015-02-24 Iii Holdings 1, Llc Method and system for resource management and evaluation
US6836823B2 (en) * 2001-11-05 2004-12-28 Src Computers, Inc. Bandwidth enhancement for uncached devices
US20030126591A1 (en) * 2001-12-21 2003-07-03 Youfeng Wu Stride-profile guided prefetching for irregular code
US6901486B2 (en) * 2002-07-05 2005-05-31 Hewlett-Packard Development Company, L.P. Method and system for optimizing pre-fetch memory transactions
US7117316B2 (en) * 2002-08-05 2006-10-03 Micron Technology, Inc. Memory hub and access method having internal row caching
US6820181B2 (en) * 2002-08-29 2004-11-16 Micron Technology, Inc. Method and system for controlling memory accesses to memory modules having a memory hub architecture
US6805287B2 (en) 2002-09-12 2004-10-19 American Express Travel Related Services Company, Inc. System and method for converting a stored value card to a credit card
US7140008B2 (en) * 2002-11-25 2006-11-21 Microsoft Corporation Dynamic temporal optimization framework
US7058936B2 (en) * 2002-11-25 2006-06-06 Microsoft Corporation Dynamic prefetching of hot data streams
US7120727B2 (en) * 2003-06-19 2006-10-10 Micron Technology, Inc. Reconfigurable memory module and method
US7260685B2 (en) * 2003-06-20 2007-08-21 Micron Technology, Inc. Memory hub and access method having internal prefetch buffers
US7120743B2 (en) 2003-10-20 2006-10-10 Micron Technology, Inc. Arbitration system and method for memory responses in a hub-based memory system
US7587709B2 (en) * 2003-10-24 2009-09-08 Microsoft Corporation Adaptive instrumentation runtime monitoring and analysis
US7330992B2 (en) 2003-12-29 2008-02-12 Micron Technology, Inc. System and method for read synchronization of memory modules
US7188219B2 (en) 2004-01-30 2007-03-06 Micron Technology, Inc. Buffer control system and method for a memory system having outstanding read and write request buffers
US7519788B2 (en) 2004-06-04 2009-04-14 Micron Technology, Inc. System and method for an asynchronous data buffer having buffer write and read pointers
US7318550B2 (en) 2004-07-01 2008-01-15 American Express Travel Related Services Company, Inc. Biometric safeguard method for use with a smartcard
US20060069857A1 (en) * 2004-09-24 2006-03-30 Nec Laboratories America, Inc. Compression system and method
US20060168407A1 (en) * 2005-01-26 2006-07-27 Micron Technology, Inc. Memory hub system and method having large virtual page size
US7607119B2 (en) * 2005-04-26 2009-10-20 Microsoft Corporation Variational path 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
US7461239B2 (en) * 2006-02-02 2008-12-02 International Business Machines Corporation Apparatus and method for handling data cache misses out-of-order for asynchronous pipelines
US7447620B2 (en) * 2006-02-23 2008-11-04 International Business Machines Corporation Modeling asynchronous behavior from primary inputs and latches
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
US7490305B2 (en) * 2006-07-17 2009-02-10 International Business Machines Corporation Method for driving values to DC adjusted/untimed nets to identify timing problems
US20090113182A1 (en) * 2007-10-24 2009-04-30 Abernathy Christopher M System and Method for Issuing Load-Dependent Instructions from an Issue Queue in a Processing Unit
US7882473B2 (en) 2007-11-27 2011-02-01 International Business Machines Corporation Sequential equivalence checking for asynchronous verification
US8266381B2 (en) * 2008-02-01 2012-09-11 International Business Machines Corporation Varying an amount of data retrieved from memory based upon an instruction hint
US8140771B2 (en) * 2008-02-01 2012-03-20 International Business Machines Corporation Partial cache line storage-modifying operation based upon a hint
US8255635B2 (en) * 2008-02-01 2012-08-28 International Business Machines Corporation Claiming coherency ownership of a partial cache line of data
US8250307B2 (en) * 2008-02-01 2012-08-21 International Business Machines Corporation Sourcing differing amounts of prefetch data in response to data prefetch requests
US8108619B2 (en) * 2008-02-01 2012-01-31 International Business Machines Corporation Cache management for partial cache line operations
US8117401B2 (en) * 2008-02-01 2012-02-14 International Business Machines Corporation Interconnect operation indicating acceptability of partial data delivery
US20090198910A1 (en) * 2008-02-01 2009-08-06 Arimilli Ravi K Data processing system, processor and method that support a touch of a partial cache line of data
JP2010021510A (ja) * 2008-06-13 2010-01-28 Canon Anelva Corp 基板保持装置およびプラズマ処理装置
US7991979B2 (en) * 2008-09-23 2011-08-02 International Business Machines Corporation Issuing load-dependent instructions in an issue queue in a processing unit of a data processing system
US8122410B2 (en) * 2008-11-05 2012-02-21 International Business Machines Corporation Specifying and validating untimed nets
US8117390B2 (en) * 2009-04-15 2012-02-14 International Business Machines Corporation Updating partial cache lines in a data processing system
US8140759B2 (en) * 2009-04-16 2012-03-20 International Business Machines Corporation Specifying an access hint for prefetching partial cache block data in a cache hierarchy
US8949579B2 (en) * 2010-10-04 2015-02-03 International Business Machines Corporation Ineffective prefetch determination and latency optimization
CN102214146B (zh) * 2011-07-28 2013-04-10 中国人民解放军国防科学技术大学 步长自适应的Cache预取方法及其系统
US9037835B1 (en) * 2013-10-24 2015-05-19 Arm Limited Data processing method and apparatus for prefetching
US10025717B1 (en) * 2015-06-01 2018-07-17 Marvell International Ltd. Multi-dimensional prefetching
GR20170100067A (el) * 2017-02-16 2018-10-31 Arm Limited Προβλεψη χρησης τομεων κρυφης μνημης
US10303608B2 (en) * 2017-08-22 2019-05-28 Qualcomm Incorporated Intelligent data prefetching using address delta prediction
US11281585B2 (en) * 2018-08-30 2022-03-22 Micron Technology, Inc. Forward caching memory systems and methods

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US5748976A (en) * 1993-10-18 1998-05-05 Amdahl Corporation Mechanism for maintaining data coherency in a branch history instruction cache

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005529407A (ja) * 2002-06-07 2005-09-29 マイクロン テクノロジー,インコーポレイティド 内部キャッシュおよび/またはメモリアクセス予測を持つメモリハブ

Also Published As

Publication number Publication date
US6216219B1 (en) 2001-04-10

Similar Documents

Publication Publication Date Title
JPH10198561A (ja) プリフェッチの望ましさに関連するエントリのあるロードターゲットバッファを具現するマイクロプロセッサ回路、システム、および方法
JP3830651B2 (ja) ループとストライドの一方または両方の予測を行うロードターゲットバッファを具現するマイクロプロセッサ回路、システム、および方法
US5694568A (en) Prefetch system applicable to complex memory access schemes
US7213126B1 (en) Method and processor including logic for storing traces within a trace cache
US5944815A (en) Microprocessor configured to execute a prefetch instruction including an access count field defining an expected number of access
US5553255A (en) Data processor with programmable levels of speculative instruction fetching and method of operation
US6401192B1 (en) Apparatus for software initiated prefetch and method therefor
US6571318B1 (en) Stride based prefetcher with confidence counter and dynamic prefetch-ahead mechanism
US5758142A (en) Trainable apparatus for predicting instruction outcomes in pipelined processors
US6473833B1 (en) Integrated cache and directory structure for multi-level caches
JP2889955B2 (ja) 分岐予測の方法とそのための装置
KR100277818B1 (ko) 컴퓨터 시스템의 데이터 처리 속도를 증가시키는 방법
KR100958705B1 (ko) 로드 동작들의 추론적 결과들을 레지스터 값들에링크시키는 시스템 및 방법
US8458408B2 (en) Cache directed sequential prefetch
JP3533294B2 (ja) プロセッサ・システム
US6351796B1 (en) Methods and apparatus for increasing the efficiency of a higher level cache by selectively performing writes to the higher level cache
Farcy et al. Dataflow analysis of branch mispredictions and its application to early resolution of branch outcomes
US20060101249A1 (en) Arrangements for adaptive response to latencies
US7516276B2 (en) Runtime register allocator
KR20040111566A (ko) 로드/저장 동작들을 바이패스하기 위하여 추론적 소스오퍼랜드를 사용하는 시스템 및 방법
JP3681647B2 (ja) キャッシュメモリシステム装置
WO1995016954A1 (fr) Circuit de traitement d'instructions dans un systeme informatique
US6418516B1 (en) Method and system for managing speculative requests in a multi-level memory hierarchy
CN117421259A (zh) 用飞行中预取服务于cpu需求请求
US6438656B1 (en) Method and system for cancelling speculative cache prefetch requests