JPH10207706A - ループとストライドの一方または両方の予測を行うロードターゲットバッファを具現するマイクロプロセッサ回路、システム、および方法 - Google Patents

ループとストライドの一方または両方の予測を行うロードターゲットバッファを具現するマイクロプロセッサ回路、システム、および方法

Info

Publication number
JPH10207706A
JPH10207706A JP10031916A JP3191698A JPH10207706A JP H10207706 A JPH10207706 A JP H10207706A JP 10031916 A JP10031916 A JP 10031916A JP 3191698 A JP3191698 A JP 3191698A JP H10207706 A JPH10207706 A JP H10207706A
Authority
JP
Japan
Prior art keywords
instruction
data
address
pointer
stride
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP10031916A
Other languages
English (en)
Other versions
JP3830651B2 (ja
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 JPH10207706A publication Critical patent/JPH10207706A/ja
Application granted granted Critical
Publication of JP3830651B2 publication Critical patent/JP3830651B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/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
    • 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 or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques

Landscapes

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

Abstract

(57)【要約】 【課題】 データプリフェッチによるデータへのアクセ
スの改善。 【解決手段】 複数のエントリ56をそなえたロード
ターゲット回路56の中の複数のエントリの各々には、
行をデータフェッチ命令に対応させるための値(ADD
RESS TAG)が含まれる。更に、各ロードターゲ
ット回路行には複数のポインタ(POINTER A,
POINTER B,POINTER C)も含まれ
る。複数のポインタの各々は、データフェッチ命令の生
起に対応するターゲットデータアドレスを記憶するため
のものである。

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
FR 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 L.
Janssens of the Center fo
r Reliableand High−Perfor
mance Computing at the Un
iversity 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はターゲットアドレス1
227からのデータを要求した。最後に、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で説明さ
れた、単一のエントリ56の付加的な実施例を示す。
ここでエントリ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
IVE 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の値)。ここで、ストライドの長
さはSTRIDE 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に移され、S
TRIDE COUNTERが1に戻される。更に、次
にNEXT POINTERが01の値に設定される。
これにより、POINTER Bがデータフェッチ命令
の次の生起を制御すべきであるということが示される。
最後に、命令23の第五の生起による現在のターゲット
データアドレスがPOINTER BとTEMPORA
RY POINTER SAVERに記憶され、B C
ONTROLが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】以上の説明に関して更に以下の項を開示す
る。 (1)ロードターゲット回路であって、複数のエントリ
を具備し、前記複数のエントリの各々が、行をデータフ
ェッチ命令に対応させるための値と、複数のポインタで
あって、複数のポインタの各々がデータフェッチ命令の
生起に対応するターゲットデータアドレスを記憶するた
めのものである、複数のポインタと、を具備する、ロー
ドターゲット回路。 (2)第1項記載のロードターゲット回路であって、前
記複数のエントリの各々には更に、前記複数のポインタ
の中のどの一つがデータフェッチ命令の与えられた生起
に対するターゲットデータアドレスを与えるかを表すた
めのネクストポインタ値も含まれる、ロードターゲット
回路。 (3)第1項記載のロードターゲット回路であって、前
記複数のエントリの各々には更に複数のコントロール値
が含まれ、複数のコントロール値の中の各コントロール
値は前記複数のポインタの中の一つのポインタに対応す
る、ロードターゲット回路。
【0096】(4)第1項記載のロードターゲット回路
であって、前記複数のエントリの各々が更に、前記複数
のポインタの中のどの一つがデータフェッチ命令の与え
られた生起に対するターゲットデータアドレスを与える
かを表すためのネクストポインタ値と、複数のコントロ
ール値の中の各コントロール値が前記複数のポインタの
中の一つのポインタに対応するような、複数のコントロ
ール値と、を具備し、そして前記複数のポインタの各々
が論理的に順次かつ円形の順序に配列されており、そし
て前記複数のエントリの中の与えられた一つに対して、
ループモードを示す前記複数のコントロール値の中の与
えられた一つに応答して、前記ネクストポインタが前記
複数のコントロール値の中の前記与えられた一つに対応
する前記複数のポインタの中の第一のポインタから、前
記複数のポインタの中の前記第一のポインタのターゲッ
トデータアドレスに対応するプリフェッチ要求を発した
後、順次かつ円形の順序で前記複数のポインタの中の第
二のポインタに増やされる、ロードターゲット回路。
【0097】(5)第1項記載のロードターゲット回路
であって、前記複数のエントリの各々が更に、前記複数
のポインタの中のどの一つがデータフェッチ命令の与え
られた生起に対するターゲットデータアドレスを与える
かを表すためのネクストポインタ値と、複数のコントロ
ール値の中の各コントロール値が前記複数のポインタの
中の一つのポインタに対応するような、複数のコントロ
ール値と、を具備し、そして前記複数のエントリの中の
与えられた一つに対して、ループモードを示す前記複数
のコントロール値の中の与えられた一つに応答して、前
記ネクストポインタが前記複数のコントロール値の中の
前記与えられた一つに対応する前記複数のポインタの中
の第一のポインタから、前記複数のポインタの中の前記
第一のポインタのターゲットデータアドレスに対応する
プリフェッチ要求を発した後、前記複数のポインタの中
の第二のポインタに調整される、ロードターゲット回
路。
【0098】(6)第1項記載のロードターゲット回路
であって、前記複数のエントリの各々が更に、複数のコ
ントロール値の中の各コントロール値が前記複数のポイ
ンタの中の一つのポインタに対応するような、複数のコ
ントロール値と、ストライド系列の中のデータターゲッ
トアドレスの数を示すためのストライドスレッショルド
値と、を具備するロードターゲット回路。 (7)第6項記載のロードターゲット回路であって、更
にプリフェッチ要求を発するための回路をも具備し、そ
して前記複数のエントリの中の各エントリは更に、その
エントリに対応するプリフェッチ要求の系列の中で発せ
られたデータターゲットアドレスの数を計数するための
ストライドカウンタをも具備する、ロードターゲット回
路。
【0099】(8)第6項記載のロードターゲット回路
であって、更にプリフェッチ要求を発するための回路を
も具備し、前記複数のエントリの中の与えられた一つに
対して、データフェッチ命令の相次ぐ生起に応答して、
そして更にストライドモードを示す前記複数のコントロ
ール値の中の一つに応答して、前記プリフェッチ要求を
発するための回路が、前記ストライドスレッショルド値
によって示されるストライド系列の中のデータターゲッ
トアドレスの数に等しい数のプリフェッチ要求を発す
る、ロードターゲット回路。 (9)第1項記載のロードターゲット回路であって、前
記複数のエントリの各々が更に、複数のコントロール値
の中の各コントロール値が前記複数のポインタの中の一
つのポインタに対応するような、複数のコントロール値
と、ストライド系列の中の相次ぐデータターゲットアド
レスの間のストライド長さを示すためのストライドレン
グス値と、を具備するロードターゲット回路。
【0100】(10)第9項記載のロードターゲット回
路であって、更にプリフェッチ要求を発するための回路
をも具備し、前記複数のエントリの中の与えられた一つ
に対して、データフェッチ命令の相次ぐ生起に応答し
て、そして更にストライドモードを示す前記複数のコン
トロール値の中の一つに応答して、前記プリフェッチ要
求を発するための回路が、相次ぐプリフェッチ要求を発
し、前記相次ぐプリフェッチ要求の各々がデータターゲ
ットアドレスを含み、そして前記相次ぐプリフェッチ要
求の中の第一の要求の後の相次ぐプリフェッチ要求の各
々のデータターゲットアドレスは、それ自身と直前のプ
リフェッチ要求のデータターゲットアドレスとの間の差
としてストライドレングスをそなえる、ロードターゲッ
ト回路。 (11)第1項記載のロードターゲット回路であって、
前記複数のエントリの各々が更に、複数のコントロール
値の中の各コントロール値が前記複数のポインタの中の
一つのポインタに対応するような、複数のコントロール
値と、ストライド系列の中のデータターゲットアドレス
の数を示すためのストライドスレッショルド値と、スト
ライド系列の中の相次ぐデータターゲットアドレスの間
のストライド長さを示すためのストライドレングス値
と、を具備するロードターゲット回路。
【0101】(12)第1項記載のロードターゲット回
路であって、更にプリフェッチ要求を発するための回路
をも具備し、そして前記複数のエントリの各々が更に、
複数のコントロール値の中の各コントロール値が前記複
数のポインタの中の一つのポインタに対応するような、
複数のコントロール値と、ストライド系列の中のデータ
ターゲットアドレスの数を示すためのストライドスレッ
ショルド値と、ストライド系列の中の相次ぐデータター
ゲットアドレスの間のストライド長さを示すためのスト
ライドレングス値と、前記複数のポインタの中のどの一
つがデータフェッチ命令の与えられた生起に対するター
ゲットデータアトレスを与えるかを表すためのネクスト
ポインタ値と、を具備し、前記複数のエントリの中の与
えられた一つに対して、データフェッチ命令の相次ぐ生
起に応答して、そして更にストライドモードを示す前記
複数のコントロール値の中の一つに応答して、前記プリ
フェッチ要求を発するための回路が、前記ストライドス
レッショルド値によって示されるストライド系列の中の
データターゲットアドレスの数に等しい数のプリフェッ
チ要求を発し、そして前記複数のエントリの中の与えら
れた一つに対して、ループモードを示す前記複数のコン
トロール値の中の与えられた一つに応答して、前記ネク
ストポインタが前記複数のコントロール値の中の前記与
えられた一つに対応する前記複数のポインタの中の第一
のポインタから、前記複数のポインタの中の前記第一の
ポインタのターゲットデータアドレスに対応するプリフ
ェッチ要求を発した後、前記複数のポインタの中の第二
のポインタに増やされる、ロードターゲット回路。
【0102】(13)第1項記載のロードターゲット回
路であって、前記複数のエントリの各々が更に、前記複
数のポインタの中のどの一つがデータフェッチ命令の与
えられた生起に対するターゲットデータアドレスを与え
るかを表すためのネクストポインタ値をも具備し、そし
て更に複数のコントロール値の中の各コントロール値が
前記複数のポインタの中の一つのポインタに対応するよ
うな、複数のコントロール値と、ネクストポインタ値を
一定値に維持することにより、データフェッチ命令の多
数回の生起に対して複数のポインタの中の一つを表し、
これにより同一アドレスループモードを作成するための
回路と、をも具備するロードターゲット回路。
【0103】(14)第1項記載のロードターゲット回
路であって、更にプリフェッチ要求を発するための回路
をも具備し、そして前記複数のエントリの中の与えられ
た一つに対して、データフェッチ命令の相次ぐ生起に応
答して、そして更に同一アドレスループモードに応答し
て、前記プリフェッチ要求を発するための回路が、同一
ターゲットデータアドレスをそなえた相次ぐプリフェッ
チ要求を発する、ロードターゲット回路。 (15)第1項記載のロードターゲット回路であって、
前記複数のポインタが3個のポインタであるロードター
ゲット回路。 (16)第1項記載のロードターゲット回路であって、
前記データフェッチ命令がロード命令である、ロードタ
ーゲット回路。 (17)第1項記載のロードターゲット回路であって、
前記データフェッチ命令が記憶命令である、ロードター
ゲット回路。
【0104】(18)マイクロプロセッサであって、命
令を受信するための命令パイプラインと、受信された命
令がデータフェッチ命令であるか否かを判定するための
回路と、複数のエントリを含むロードターゲット回路
と、を具備し、そして前記複数のエントリの各々が、行
をデータフェッチ命令に対応させるための値と、複数の
ポインタの各々が前記データフェッチ命令の生起に対応
するターゲットデータアドレスを記憶するような複数の
ポインタと、を具備する、マイクロプロセッサ。
【0105】(19)命令パイプラインをそなえたマイ
クロプロセッサを動作させる方法であって、複数の生起
の各々がデータフェッチ命令に対する対応する複数の実
際のターゲットデータアドレスを生じるような、複数の
生起にわたって命令パイプラインでデータフェッチ命令
を受信し、複数の生起の中の第一の生起に応答して、マ
イクロプロセッサ上のロードターゲットバッファに、デ
ータフェッチ命令に対応するエントリを形成し、複数の
生起に応答して、データフェッチ命令に対する対応する
複数の実際のターゲットデータアドレスに基づいて、タ
ーゲットデータアドレスの予測をエントリの中で符号化
する、ステップからなり、予測が第一の予測型と第二の
予測型とから選択され、第一の予測型はループモードで
あり、ループモードでは複数の実際のターゲットデータ
アドレスがループ系列を形成し、ループ系列は開始ルー
プターゲットデータアドレスをそなえ、終了ループター
ゲットデータアドレスに移り、開始ループターゲットデ
ータアドレスに戻ることにより繰り返し、そして第二の
予測型はストライドモードであり、ストライドモードで
は複数の実際のターゲットデータアドレスが開始ストラ
イドターゲットデータアドレスから多数の付加的な相次
ぐアドレスに移り、相次ぐターケットアドレスの各々の
ターゲットデータアドレスはそれ自身と直前のターゲッ
トデータアドレスとの間に共通の距離をそなえている、
マイクロプロセッサ動作方法。
【0106】(20)複数のエントリ(56)をそな
えたロードターゲット回路(56)。ロードターゲット
回路の中の複数のエントリの各々には、行をデータフェ
ッチ命令に対応させるための値(ADDRESS TA
G)が含まれる。更に、各ロードターゲット回路行には
複数のポインタ(POINTER A,POINTER
B,POINTER C)も含まれる。複数のポイン
タの各々は、データフェッチ命令の生起に対応するター
ゲットデータアドレスを記憶するためのものである。
【図面の簡単な説明】
【図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エ
ントリに応答して動作する方法を示す図である。
【符号の説明】
12 マイクロプロセッサ 38 命令パイプライン 56 ロードターゲットバッファ 56 エントリ ADDRESS TAG アドレスタグ CONTROL コントロール NEXT POINTER ネクストポインタ POINTER ポインタ STRIDE LENGTH ストライド長さ STRIDE THRESHOLD ストライド閾値

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 ロードターゲット回路であって、 複数のエントリを具備し、前記複数のエントリの各々
    が、 行をデータフェッチ命令に対応させるための値と、 複数のポインタであって、複数のポインタの各々がデー
    タフェッチ命令の生起に対応するターゲットデータアド
    レスを記憶するためのものである、複数のポインタと、 を具備する、ロードターゲット回路。
  2. 【請求項2】 命令パイプラインをそなえたマイクロプ
    ロセッサを動作させる方法であって、 複数の生起の各々がテータフェッチ命令に対する対応す
    る複数の実際のターゲットデータアトルスを生じるよう
    な、複数の生起にわたって命令パイプラインでデータフ
    ェッチ命令を受信するステップと、 複数の生起の中の第一の生起に応答して、マイクロプロ
    セッサ上のロードターゲットバッファに、データフェッ
    チ命令に対応するエントリを形成するステップと、 複数の生起に応答して、データフェッチ命令に対する対
    応する複数の実際のターゲットデータアドレスに基づい
    て、ターゲットデータアドレスの予測をエントリの中で
    符号化するステップと、 を含み、 予測が第一の予測型と第二の予測型とから選択され、 第一の予測型はループモードであり、該ループモードで
    は複数の実際のターゲットデータアドレスがループ系列
    を形成し、該ループ系列は開始ループターゲットデータ
    アドレスをそなえ、終了ループターゲットデータアドレ
    スに移り、開始ループターゲットデータアドレスに戻る
    ことにより繰り返し、 第二の予測型はストライドモードであり、該ストライド
    モードでは複数の実際のターゲットデータアドレスが開
    始ストライドターゲットデータアドレスから多数の付加
    的な相次ぐアドレスに移り、相次ぐターケットアドレス
    の各々のターゲットデータアドレスはそれ自身と直前の
    ターゲットデータアドレスとの間に共通の距離をそなえ
    ている、 マイクロプロセッサ動作方法。
JP03191698A 1996-12-31 1998-01-05 ループとストライドの一方または両方の予測を行うロードターゲットバッファを具現するマイクロプロセッサ回路、システム、および方法 Expired - Fee Related JP3830651B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US3413196P 1996-12-31 1996-12-31
US034131 1996-12-31

Publications (2)

Publication Number Publication Date
JPH10207706A true JPH10207706A (ja) 1998-08-07
JP3830651B2 JP3830651B2 (ja) 2006-10-04

Family

ID=21874504

Family Applications (1)

Application Number Title Priority Date Filing Date
JP03191698A Expired - Fee Related JP3830651B2 (ja) 1996-12-31 1998-01-05 ループとストライドの一方または両方の予測を行うロードターゲットバッファを具現するマイクロプロセッサ回路、システム、および方法

Country Status (3)

Country Link
US (1) US5953512A (ja)
EP (1) EP0855644B1 (ja)
JP (1) JP3830651B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7020749B2 (en) 2003-03-12 2006-03-28 Kabushiki Kaisha Toshiba Signal processor, prefetch instruction method and prefetch instruction program

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3175675B2 (ja) * 1997-12-04 2001-06-11 日本電気株式会社 プリフェッチ制御装置
US6430680B1 (en) * 1998-03-31 2002-08-06 International Business Machines Corporation Processor and method of prefetching data based upon a detected stride
JP3439350B2 (ja) * 1998-10-02 2003-08-25 Necエレクトロニクス株式会社 キャッシュ・メモリ制御方法及びキャッシュ・メモリ制御装置
US6728839B1 (en) * 1998-10-28 2004-04-27 Cisco Technology, Inc. Attribute based memory pre-fetching technique
US7889052B2 (en) 2001-07-10 2011-02-15 Xatra Fund Mx, Llc Authorizing payment subsequent to RF transactions
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
US6529983B1 (en) 1999-11-03 2003-03-04 Cisco Technology, Inc. Group and virtual locking mechanism for inter processor synchronization
US6470427B1 (en) 1999-11-09 2002-10-22 International Business Machines Corporation Programmable agent and method for managing prefetch queues
US7172112B2 (en) 2000-01-21 2007-02-06 American Express Travel Related Services Company, Inc. Public/private dual card system and method
US8429041B2 (en) 2003-05-09 2013-04-23 American Express Travel Related Services Company, Inc. Systems and methods for managing account information lifecycles
US8543423B2 (en) 2002-07-16 2013-09-24 American Express Travel Related Services Company, Inc. Method and apparatus for enrolling with multiple transaction environments
US6775765B1 (en) * 2000-02-07 2004-08-10 Freescale Semiconductor, Inc. Data processing system having instruction folding and method thereof
AU2001243473A1 (en) 2000-03-07 2001-09-17 American Express Travel Related Services Company, Inc. System for facilitating a transaction
US6505269B1 (en) 2000-05-16 2003-01-07 Cisco Technology, Inc. Dynamic addressing mapping to eliminate memory resource contention in a symmetric multiprocessor system
US6738836B1 (en) * 2000-08-31 2004-05-18 Hewlett-Packard Development Company, L.P. Scalable efficient I/O port protocol
US7725427B2 (en) 2001-05-25 2010-05-25 Fred Bishop Recurrent billing maintenance with radio frequency payment devices
US7650314B1 (en) 2001-05-25 2010-01-19 American Express Travel Related Services Company, Inc. System and method for securing a recurrent billing transaction
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
US7762457B2 (en) 2001-07-10 2010-07-27 American Express Travel Related Services Company, Inc. System and method for dynamic fob synchronization and personalization
US7303120B2 (en) 2001-07-10 2007-12-04 American Express Travel Related Services Company, Inc. System for biometric security using a FOB
US7668750B2 (en) 2001-07-10 2010-02-23 David S Bonalle Securing RF transactions using a transactions counter
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
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
US8548927B2 (en) 2001-07-10 2013-10-01 Xatra Fund Mx, Llc Biometric registration for facilitating an RF transaction
US7746215B1 (en) 2001-07-10 2010-06-29 Fred Bishop RF transactions using a wireless reader grid
US7705732B2 (en) 2001-07-10 2010-04-27 Fred Bishop Authenticating an RF transaction using a transaction counter
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
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
US8294552B2 (en) 2001-07-10 2012-10-23 Xatra Fund Mx, Llc Facial scan biometrics on a payment device
US8960535B2 (en) 2001-07-10 2015-02-24 Iii Holdings 1, Llc Method and system for resource management and evaluation
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
US8635131B1 (en) 2001-07-10 2014-01-21 American Express Travel Related Services Company, Inc. System and method for managing a transaction protocol
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
US9024719B1 (en) 2001-07-10 2015-05-05 Xatra Fund Mx, Llc RF transaction system and method for storing user personal data
US8279042B2 (en) 2001-07-10 2012-10-02 Xatra Fund Mx, Llc Iris scan biometrics on a payment device
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
US7503480B2 (en) 2001-07-10 2009-03-17 American Express Travel Related Services Company, Inc. Method and system for tracking user performance
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
US7493288B2 (en) 2001-07-10 2009-02-17 Xatra Fund Mx, Llc RF payment via a mobile device
US9031880B2 (en) 2001-07-10 2015-05-12 Iii Holdings 1, Llc Systems and methods for non-traditional payment using biometric data
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
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
US20030204840A1 (en) * 2002-04-30 2003-10-30 Youfeng Wu Apparatus and method for one-pass profiling to concurrently generate a frequency profile and a stride profile to enable data prefetching in irregular programs
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
US7017028B2 (en) * 2003-03-14 2006-03-21 International Business Machines Corporation Apparatus and method for updating pointers for indirect and parallel register access
US20050223172A1 (en) * 2004-03-31 2005-10-06 Ulrich Bortfeld Instruction-word addressable L0 instruction cache
US7318550B2 (en) 2004-07-01 2008-01-15 American Express Travel Related Services Company, Inc. Biometric safeguard method for use with a smartcard
US20060031708A1 (en) * 2004-08-04 2006-02-09 Desai Kiran R Method and apparatus for correcting errors in a cache array
US7426631B2 (en) * 2005-02-02 2008-09-16 International Business Machines Corporation Methods and systems for storing branch information in an address table of a processor
US9164936B2 (en) * 2012-12-31 2015-10-20 Silicon Laboratories Inc. System and method for regulating direct memory access descriptor among multiple execution paths by using a link to define order of executions
US9047173B2 (en) * 2013-02-21 2015-06-02 Advanced Micro Devices, Inc. Tracking and eliminating bad prefetches generated by a stride prefetcher
US9507600B2 (en) * 2014-01-27 2016-11-29 Texas Instruments Deutschland Gmbh Processor loop buffer
GB2572954B (en) * 2018-04-16 2020-12-30 Advanced Risc Mach Ltd An apparatus and method for prefetching data items

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1991004536A1 (en) * 1989-09-20 1991-04-04 Dolphin Server Technology A/S Instruction cache architecture for parallel issuing of multiple instructions
US5357618A (en) * 1991-04-15 1994-10-18 International Business Machines Corporation Cache prefetch and bypass using stride registers
US5434985A (en) * 1992-08-11 1995-07-18 International Business Machines Corporation Simultaneous prediction of multiple branches for superscalar processing
US5761706A (en) * 1994-11-01 1998-06-02 Cray Research, Inc. Stream buffers for high-performance computer memory system
US5694568A (en) * 1995-07-27 1997-12-02 Board Of Trustees Of The University Of Illinois Prefetch system applicable to complex memory access schemes
US5752037A (en) * 1996-04-26 1998-05-12 Hewlett-Packard Company Method of prefetching data for references with multiple stride directions
US5778435A (en) * 1996-05-30 1998-07-07 Lucent Technologies, Inc. History-based prefetch cache including a time queue
SE506757C2 (sv) * 1996-07-02 1998-02-09 Ericsson Telefon Ab L M Säkringsanordning för en portabel batteridriven elektrisk apparat

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7020749B2 (en) 2003-03-12 2006-03-28 Kabushiki Kaisha Toshiba Signal processor, prefetch instruction method and prefetch instruction program

Also Published As

Publication number Publication date
EP0855644B1 (en) 2011-08-17
EP0855644A2 (en) 1998-07-29
US5953512A (en) 1999-09-14
EP0855644A3 (en) 2000-05-17
JP3830651B2 (ja) 2006-10-04

Similar Documents

Publication Publication Date Title
JP3830651B2 (ja) ループとストライドの一方または両方の予測を行うロードターゲットバッファを具現するマイクロプロセッサ回路、システム、および方法
JPH10198561A (ja) プリフェッチの望ましさに関連するエントリのあるロードターゲットバッファを具現するマイクロプロセッサ回路、システム、および方法
JP3852475B2 (ja) コンピュータシステム
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
JP2889955B2 (ja) 分岐予測の方法とそのための装置
US6401192B1 (en) Apparatus for software initiated prefetch and method therefor
US7774531B1 (en) Allocating processor resources during speculative execution using a temporal ordering policy
KR20050013544A (ko) 로드 동작들의 추론적 결과들을 레지스터 값들에링크시키는 시스템 및 방법
KR20040111566A (ko) 로드/저장 동작들을 바이패스하기 위하여 추론적 소스오퍼랜드를 사용하는 시스템 및 방법
KR20020097149A (ko) 종속성 체인을 발행 또는 재발행할 수 있는 스케줄러
JP3681647B2 (ja) キャッシュメモリシステム装置
KR19990072272A (ko) 로드/로드검출및재정렬방법

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041227

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051209

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20060309

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20060314

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060609

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060704

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060712

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20090721

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100721

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110721

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110721

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120721

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120721

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130721

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees