JPH08221272A - 命令キャッシュに命令をロードする方法 - Google Patents

命令キャッシュに命令をロードする方法

Info

Publication number
JPH08221272A
JPH08221272A JP7319822A JP31982295A JPH08221272A JP H08221272 A JPH08221272 A JP H08221272A JP 7319822 A JP7319822 A JP 7319822A JP 31982295 A JP31982295 A JP 31982295A JP H08221272 A JPH08221272 A JP H08221272A
Authority
JP
Japan
Prior art keywords
instruction
branch
address
data processor
fetch
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP7319822A
Other languages
English (en)
Inventor
Bradley Burgess
ブラドレー・バージェス
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.)
Motorola Solutions Inc
Original Assignee
Motorola 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 Motorola Inc filed Critical Motorola Inc
Publication of JPH08221272A publication Critical patent/JPH08221272A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/3846Speculative instruction execution using static prediction, e.g. branch taken strategy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch

Landscapes

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

Abstract

(57)【要約】 【課題】 遅れを生じることなくデータ・プロセッサの
命令キャッシュに命令をロードする方法を提供する。 【解決手段】 特定の命令ブロックをハーバード・アー
キテクチャ・データ・プロセッサ(10)の命令キャッ
シュ(14)にロードする方法では、ループ内の分岐命
令を連続的に誤って予測する場合が考えられる。分岐命
令の分岐条件は、実行すると連続取り込みアドレスを出
力する結果が得られる命令によって判断される。しかし
ながら、命令の結果は、分岐命令が実行開始されるまで
は得られない。したがって、データ・プロセッサは、分
岐命令を推論的に実行または予測する。この場合、分岐
命令は、前述の特定の命令ブロックに分岐することを予
測する。次に、データ・プロセッサはその命令キャッシ
ュに命令をロードする。後に、データ・プロセッサが分
岐命令を誤って予測していたことが判明されると、ルー
プの先頭に戻って再度繰り返す。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、一般的にデジタル計算
システムに関し、更に特定すれば命令キャッシュに関す
るものである。
【0002】
【従来の技術】メモリ・キャッシュは、処理能力上の理
由からデータ処理システムに内蔵されている記憶システ
ムである。メモリ・キャッシュは、典型的にシステムの
データ・プロセッサのような、選択されたサブシステム
が用いるために、データ処理システムのメイン・メモリ
の内容の部分集合を記憶するものである。メモリ・キャ
ッシュは、いくつかの理由により、メイン・メモリより
も高速に、データをデータ・プロセッサに供給すること
ができる。第1に、メモリ・キャッシュはメイン・メモ
リ・システムよりも高級なメモリ回路で構成されること
が多いからである。これらの回路は、単にメイン・メモ
リよりも高いクロック・レートで動作できるというだけ
である。また、データ・プロセッサとメモリ・キャッシ
ュとの間には専用バスがあるので、データ・プロセッサ
とメモリ・キャッシュとの間の帯域は、データ・プロセ
ッサとメイン・メモリとの間の帯域よりも広くなる。最
後に、メモリ・キャッシュは、それがデータを提供する
サブシステムと同一集積回路上に物理的に配置されるか
らである。この場合、メモリ・キャッシュはより高速な
回路で構成され、しかもメモリ・キャッシュとデータ・
プロセッサとの間に専用バスが設けられている訳であ
る。
【0003】メモリ・キャッシュは、更に、それらが記
憶する情報のタイプによって区別される場合もある。統
一キャッシュは、全てのタイプの情報を単一構造で記憶
する。命令キャッシュは、データ・プロセッサによって
実行される、または実行される予定の命令のみを記憶す
る。データ・キャッシュは、データ・プロセッサによっ
て用いられる、または用いられる予定のデータのみを記
憶する。命令キャッシュとデータ・キャッシュとを内蔵
するデータ処理システムのことを、「ハーバード・アー
キテクチャ(Harvard architecture)」を有すると呼んで
いる。
【0004】
【発明が解決しようとする課題】ハーバード・アーキテ
クチャを有するデータ・プロセッサには少なくとも1つ
の欠点がある。これらのデータ・プロセッサは、個々の
データ・ブロックをそれらのデータ・キャッシュにロー
ドしながら、個々の命令をそれらの命令キャッシュにロ
ードするという機能に欠けている。代わりに、ハーバー
ド・アーキテクチャを有するデータ・プロセッサは、次
に実行すべき命令はどれであるかを判断した際の副産物
として、命令をその命令キャッシュにロードする。デー
タ・プロセッサは、個々の命令を実行する直前に、各命
令をその命令キャッシュにロードする。結果的に、各命
令または命令群が実行される前に、データ・プロセッサ
がデータ処理システムのメイン・メモリ・サブシステム
から当該命令を取り込む間、短い遅れが生じることがあ
る。
【0005】
【課題を解決するための手段】本発明は、データ・プロ
セッサの命令キャッシュに命令をロードする方法を提供
する。この方法は、データ・プロセッサ内の第1命令を
取り込み、該第1命令を実行して結果を発生する第1取
り込み段階と、前記データ・プロセッサ内の分岐命令を
取り込み、前記結果が第1値に等しい場合前記分岐命令
は連続−取り込み−アドレスを発生し、前記結果が第2
値に等しい場合前記分岐命令は第1分岐−実行−取り込
み−アドレスを発生し、前記結果が分からない場合、前
記分岐命令は前記第1分岐−実行−取り込み−アドレス
を推論的に発生する第2取り込み段階と、前記第1分岐
−実行−取り込み−アドレスに応答して、前記データ・
プロセッサの命令キャッシュに命令をロードする、第1
ロード段階と、前記第1命令を実行し、該第1命令が第
1値を発生する、第1実行段階と、前記分岐命令を実行
し、該分岐命令が連続−取り込み−アドレスを発生す
る、第2実行段階と、第2分岐−実行−取り込み−アド
レスを発生する段階と、前記分岐命令を取り込み、前記
結果が第1値に等しい場合前記分岐命令は連続−取り込
み−アドレスを発生し、前記結果が第2値に等しい場合
前記分岐命令は前記第2分岐−実行−取り込み−アドレ
スを発生し、前記結果が分からない場合前記分岐命令は
推論的に前記第2分岐−実行−取り込み−アドレスを発
生する、第4取り込み段階と、前記第2分岐−実行−取
り込み−アドレスに応答して、命令を命令キャッシュに
ロードする第2ロード段階と、前記第1命令を実行し、
該第1命令が前記第1値を発生する、第3実行段階と、
前記分岐命令を実行し、該分岐命令が連続−取り込み−
アドレスを発生する、第4実行段階とから成る。
【0006】本発明の特徴および利点は、添付図面と関
連付けて記載された以下の詳細な説明から、より明確に
理解されよう。図面中、同様の参照番号は同様の対応す
る部分を示すものとする。
【0007】
【実施例】図1は本発明と共に用いるデータ・プロセッ
サ10のブロック図を示す。データ・プロセッサ10
は、別個の命令キャッシュとデータ・キャッシュとを内
蔵している。他の「ハーバード・アーキテクチャ」型デ
ータ・プロセッサと同様、データ・プロセッサ10は、
それが命令を実行すべきであると判断した場合、命令を
そのデータ・キャッシュにロードする。通常、データ・
プロセッサ10は、ある特定の命令を完了した後、次に
続く命令を実行する。データ・プロセッサ10は、メイ
ン・メモリ内の特定の命令のアドレスに変位(displacem
ent)を加算することによって、次の連続命令を決定す
る。ある状況では、データ・プロセッサ10は非連続命
令を実行することもある。データ・プロセッサ10が非
連続命令を実行するのは、ある条件の下で分岐命令を実
行した後、割り込みを受けた後、ある命令が例外を発生
した後、等である。本発明によれば、データ・プロセッ
サ10は、1ブロックの命令を必要とする前に、それを
命令キャッシュにロードするように、データ・プロセッ
サ10をプログラムすることができる。これによって、
データ・プロセッサ10は、例えば、時間を重視するデ
ジタル信号処理(「DSP」)ルーチンのために、1ブロ
ックの命令が命令キャッシュに存在することを保証する
ことができる。
【0008】引き続き図1を参照して、バス・インター
フェース・ユニット(以後BIUと記載する)12は、
データ・プロセッサ10とデータ処理システムの残りの
部分(図示せず)との間のデータの流れを制御する。B
IU12は、命令キャッシュ14とデータ・キャッシュ
16とに接続されている。命令キャッシュ14は、命令
ストリームをシーケンサ・ユニット18に供給する。シ
ーケンサ・ユニット18は個々の命令を適切な実行ユニ
ットに送出する。データ・プロセッサ10は、分岐ユニ
ット20、固定小数点実行ユニットA22、固定小数点
実行ユニットB24、複雑固定小数点実行ユニット2
6、ロード/記憶実行ユニット28、および浮動小数点
実行ユニット30を有する。固定小数点実行ユニットA
22、固定小数点実行ユニットB24、複雑固定小数点
実行ユニット26、およびロード/記憶実行ユニット2
8は、汎用アーキテクチャ・レジスタ・ファイル32
(GPRsと表記されており、以後GPRファイルと呼
ぶ)、および第1再命名バッファ(rename buffer)34
に対して、それぞれの結果の読み出しおよび書き込みを
行う。浮動小数点実行ユニット30およびロード/記憶
実行ユニット28は、浮動小数点アーキテクチャ・レジ
スタ・ファイル36(FPRsと表記されており、以後
FPRファイルと呼ぶ)および第2再命名バッファ38
に対して、それらの結果の読み出しおよび書き込みを行
う。
【0009】ここに開示する本発明を用いないデータ・
プロセッサ10の動作は当技術では公知である。一般的
に、データ・プロセッサ10は縮小命令セット・コンピ
ュータ(「RISC」)である。データ・プロセッサ1
0は、各命令を一連の小さな段階に分けることによっ
て、高い処理能力を達成する。小さな段階の各々は他の
命令の段階と時間的に重複してもよい。このように処理
能力を高める戦略は、「パイプライン方式」として知ら
れている。図示した実施例では、各命令は5つの個別段
階、即ち、取り込み(fetch)、発行(dispatch)、実行(ex
ecute)、ライトバック(write-back)、および完了(compl
etion)に分解される。
【0010】取り込み段階の間、命令キャッシュ14内
のメモリ管理回路(図示せず)は、シーケンサ・ユニッ
ト18と分岐ユニット20によって識別されたメモリ・
アドレス(取り込みアドレス)から始まる1つ以上の命
令を取り出す。シーケンサ・ユニット18および分岐ユ
ニット20は、あるデータ・レジスタおよび命令自体の
内容から、プログラムされたどの連続命令(sequence of
programmed instructions)が適切であるか判断する。
命令キャッシュ14はこのプログラムされた連続命令を
シーケンサ・ユニット18に供給する。命令キャッシュ
14が必要な命令を含んでいない場合、データ・プロセ
ッサ10外部のメイン・メモリ・システム(図示せず)
からかかる命令を取り込む。
【0011】発行段階の間、シーケンサ・ユニット18
は前述のプログラムされた連続命令の個々の命令を、種
々の実行ユニット20,22,24,26,28,30
に発行する。また、シーケンサ・ユニット18は、各命
令から結果が得られる場合にそれを一時的に記憶する、
再命名バッファ34または38のいずれかにエントリを
確保する。再命名バッファはいずれも先入れ先出し(F
IFO)キューである。
【0012】実行段階の間、個々の実行ユニットはそれ
自体のプログラムされた命令を実行する。実行ユニット
の各々は、特定の命令クラスに属する1つ以上の命令を
実行する。各実行ユニットの特定の命令クラスは、実行
ユニットの名前によって指示される。例えば、固定小数
点実行ユニットA,Bは、固定小数点表記で表されたオ
ペランド上で、加算、減算、論理積、論理和、排他的論
理和のような単純な数学的演算を行う。複雑固定小数点
実行ユニット26は、固定小数点表記で表されたオペラ
ンド上で、乗算や除算のようなより複雑な数学的演算を
行う。浮動小数点実行ユニット30は、浮動小数点表記
で表されたオペランド上で、乗算や除算のような数学的
演算を行う。
【0013】固定小数点実行ユニットA,Bおよび複雑
固定小数点実行ユニット26は、それらの演算結果を、
第1再命名バッファ34内の指定されたエントリに戻
す。結果を発生した命令に先立つ全ての命令がそれらの
GPRファイル・エントリを更新したとき、第1再命名
バッファ34は周期的に、第1再命名バッファ34から
のエントリを用いて、GPRファイル32のエントリを
更新する。シーケンサ・ユニット18は再順序バッファ
39(reorder buffer)を維持してこの更新を調整する。
再順序バッファ39は、プログラムされた命令ストリー
ムの一部をその元の順序で記憶するFIFOキューであ
る。シーケンサ・ユニット18は、再順序バッファ39
内で最も古い命令が完了するまで待機する。次に、シー
ケンサ・ユニット18は、当該命令に割り当てられた再
命名バッファ・エントリに記憶されている結果を用い
て、アーキテクチャ・レジスタ(architectural registe
r)を更新する。また、シーケンサ・ユニット18は再順
序バッファ39内の命令のエントリを無効にし、後の命
令のための余裕を作る。第1再命名バッファ34および
GPRファイル32の双方は、固定小数点実行ユニット
A,Bおよび複雑固定小数点ユニット26に、オペラン
ドを供給することができる。
【0014】浮動小数点実行ユニット30は、その処理
結果を第2再命名バッファ38内の指定されたエントリ
に戻す。第2再命名バッファ38は、結果を発生した命
令に先立つ全ての命令がそれらのFPRファイル・エン
トリを更新したとき、第2再命名バッファ38内のFP
Rファイル36のエントリを周期的に更新する。シーケ
ンサ・ユニット18はこの更新の調整も行う。第2再命
名バッファ38およびFPRファイル36の双方は、浮
動小数点実行ユニット30にオペランドを供給する。
【0015】ロード/記憶実行部28は、GPRファイ
ル32またはFPRファイル36に記憶されているデー
タを、完了時に読み出し、選択されたデータをデータ・
キャッシュ16に書き込む。このデータは、開示される
発明には関連がないが、データ・プロセッサ10の動作
特性に応じて、外部メモリ・システム(図示せず)に書
き込むこともできる。逆に、ロード/記憶実行ユニット
28は、データ・キャッシュ16に記憶されているデー
タを読み出し、読み出したデータを第1再命名バッファ
34または第2再命名バッファ38に書き込む。データ
・キャッシュ16が要求されたデータを含んでいない場
合、BIU12を通じて、データ・プロセッサ10外部
のメイン・メモリ・システムからそれを取り込む。
【0016】ライトバック段階の間、各実行ユニット
は、その結果があれば、確保した再命名バッファのエン
トリに書き込む。シーケンサ・ユニット18は、どの命
令が適切なアーキテクチャ・レジスタ(architectural r
egister)を更新できるのかを次の段階で判定する。
【0017】完了段階の間、シーケンサ・ユニット18
は、特定の1つあるいは複数の命令に先立つ各命令がア
ーキテクチャ・レジスタ・ファイルを更新した後、再命
名バッファ内に記憶されている当該特定の1つあるいは
複数の命令の結果を用いて、アーキテクチャ・レジスタ
・ファイルを更新する。
【0018】一般的に、各命令段階は1機械クロック・
サイクルを要する。しかしながら、命令の中には実行に
1クロック・サイクル以上を必要とするものもあれば、
5段階全てを必要としないものもある。また、種々の命
令が完了するのにかかる時間の長さ(range)により、個
々の命令のライトバック段階と完了段階との間に遅れが
生じることもある。
【0019】開示された本発明を用いたデータ・プロセ
ッサ10の動作について、図2および図3と関連付けて
以下に説明する。
【0020】データ・プロセッサ10も静止分岐予測方
法論(static branch prediction methodology)を用い
て、種々の実行ユニット20,22,24,26,2
8,30への命令の一定供給を保証している。静止分岐
予測方法論によれば、データ・プロセッサ10が、分岐
命令の基準となる条件を未だ判定していない場合、分岐
命令自体の1つ以上のビットに応じて、分岐を行うこと
あるいは分岐を行わないことを保証する。データ・プロ
セッサ10は、次に、当該分岐命令の基準となる条件を
実際に計算する前に、分岐先アドレスまたは分岐しない
場合のアドレスの内、適切な方のアドレスの命令を取り
込む。その後、データ・プロセッサ10は条件を計算
し、予測が間違っていた場合、以前に選択しなかった取
り込みアドレスに戻る。そうでなければ、データ・プロ
セッサ10は、予測された経路に沿って、命令の実行を
継続する。プログラムをコンパイルする際、各分岐命令
が実行されたとき、分岐される可能性が高いかあるいは
分岐されない可能性が高いかに関する統計に応じて、各
分岐命令が分岐される、または分岐されないと予測す
る。命令自体の中にある1つ以上のビットが、データ・
プロセッサ10に、分岐命令を実行すべきか否かを指示
する。
【0021】図2は、本発明による一連の命令を、表形
式で表したものである。図2に示した命令は2つの機能
を行う。先ず、これらの命令は種々のレジスタに、命令
キャッシュ14に所望の命令ブロックをプリロードする
のに必要な定数をロードする。2番目に、これらの命令
は、データ・プロセッサ10がキャッシュ・ライン(cac
he line)を命令キャッシュ14にプリロードするルーチ
ン(「ループ」と表記されている)を実行する度に、こ
の「ループ」ルーチンを実行する。キャッシュ・ライン
は、データ・プロセッサ10とそのメモリ・システムと
の間の標準サイズのデータ転送のことである。図2に示
した命令は、PowerPCTMの命令セットの要素である(Pow
erPCは、International Business Machines Corporatio
nの商標である)。しかしながら、当業者は、本明細書
の記載と組み合わせることによって、PowerPCの命令を
他のデータ・プロセッサの命令に変換することができよ
う。
【0022】引き続き図2を参照する。データ・プロセ
ッサ10は、最初に、ルーチン「ループ」を実行するた
めに準備される。命令キャッシュ14およびデータ・キ
ャッシュ16内の属性ビットを変更することによって、
所望の命令のみをデータ・プロセッサ10(図示せず)
内にキャッシュ可能にする。メイン・メモリ内の他の全
アドレス空間は、「キャッシュ不可」と定義される。必
要な命令ロード動作の数Nをカウンタ・レジスタ「ctr」
に記憶する。命令ロード動作の数Nは、命令キャッシュ
14にプリロード(preload)される命令数を、標準メモ
リ・アクセスの数で除算したものに等しい。データ・プ
ロセッサ10は、次にルーチン「ループ」をN回実行す
る。図示の例では、上述のようにプリロードされる32
ビット命令の数は2,048個、メモリ・アクセスの標
準サイズは32バイトなので、Nは256に等しい。プ
リロードすべき最初の命令LOAD_BLOCKのアドレスを、リ
ンク・レジスタ「lr」に記憶する。リンク・レジスタ
は、メイン・メモリから取り込む次の命令へのポインタ
として機能する。
【0023】次に、命令キャッシュ14へこれ以上ロー
ドさせないための定数を、汎用レジスタr3に記憶する。
定数HIDO_VALUEは最終的に特殊目的レジスタHIDOに移動
され、ルーチン「ループ」がN回実行された後に、全て
の命令キャッシュ動作を保護する。汎用レジスタr2に非
ゼロ値をロードする。最後に、命令同期動作を用いるこ
とによってルーチン「ループ」に分岐する前に、全ての
命令を完了させる。
【0024】データ・プロセッサ10は、ルーチン「ル
ープ」をN回実行することによって、N本のキャッシュ
・ラインを命令キャッシュ14にプリロードする。デー
タ・プロセッサ10は、図示したルーチンを実行するN
回の各々において、現在の命令ポインタに、メモリ・ア
クセスの標準サイズをバイトで表した数を加算すること
によって、次の命令ロード動作のアドレスを計算する。
次に、データ・プロセッサ10は長ラテンシー命令(lon
g latency instruction)を実行し、その結果が以後の
分岐命令の基準となる。この場合、長ラテンシー命令の
結果がゼロに等しい場合、分岐命令はリンク・レジスタ
の内容(ポインタ)に分岐する。それ以外の場合、分岐
命令は連続取り込みアドレスを出力する。
【0025】長ラテンシー命令即ち整数除算命令は分岐
命令が開始された後に完了し、その結果は常に真即ち非
ゼロである。分岐命令は、それが基準とする条件が未知
の場合、分岐すべき(「+」)ものと静的に予測するよ
うにコード化されている。構造上、長ラテンシー命令の
結果は、分岐命令が実行される前では、全く知ることが
できない。したがって、データ・プロセッサ10は常
に、リンク・レジスタの内容によってインデクスされ
る、8個の命令をプリロードする。
【0026】最終的に、データ・プロセッサ10は、長
ラテンシー命令を完了し、リンク・レジスタの内容に分
岐すべきでなかったと判断する。次に、データ・プロセ
ッサ10は、分岐命令直後の命令から、命令を実行し続
ける。ここでは、移動(move-to)命令が、予測し損ねた
分岐命令の後に来る。移動命令は、次のポインタ値をリ
ンク・レジスタにロードする。最後に、データ・プロセ
ッサ10は、条件レジスタの内容を減数し、その値をゼ
ロと比較し、ルーチン「ループ」をN回実行していない
場合、ルーチン「ループ」の最初に戻る。データ・プロ
セッサ10は、ルーチン「ループ」をN回実行した後、
このルーチンから抜け出す。
【0027】ルーチン「ループ」をN回実行した後、デ
ータ・プロセッサ10は命令キャッシュ14をロック
し、プリロードされた命令が不用意に上書きされるのを
防ぐ。次に、データ・キャッシュ16内の属性ビットを
変更し、新たなデータをデータ・キャッシュ16(図示
せず)にキャッシュできるようにする。
【0028】図3は、図2に示した一連の命令の一部を
実行する、図1に示したデータ・プロセッサ10の第1
タイミング図を示す。図3は、周期的クロック信号CLOC
Kに関連付けて、ルーチン「ループ」を2回繰り返す模
様を表わしている。上述のように、長ラテンシー除算命
令divw.は、次の分岐命令beqlr+が開始した後に終了す
る。図示の実施例では、データ・プロセッサ10は整数
除算命令を実行するには、20サイクル以上を必要とす
る。しかしながら、5番目のクロック・サイクルにおい
て、データ・プロセッサ10は推論的に(speculativel
y)分岐し、リンク・レジスタの内容によってインデクス
された命令をプリロードし始める。分岐命令beqlr+は、
長ラテンシー命令の完了に続くクロック・サイクルにお
いて、訂正された取り込みアドレスを最終的に発生す
る。次に、命令キャッシュ14がキャッシュ・ラインの
プリロードを終了するとすぐに、データ・プロセッサ1
0は移動命令および2番目の分岐命令を実行する。デー
タ・プロセッサ10の実施例には、プリロードされる命
令を受け取るとすぐにそれらを実行するものもある。し
たがって、図3は、これらプリロードされた命令を実行
する、プリロード・キャッシュ・ライン動作と移動動作
との間での垂直切り(vertical break)を図示したものの
である。これらの同一データ・プロセッサは、しかしな
がら、分岐命令beqlr+が予測したように完了するまで
は、推論的に取り込んだ命令の結果を種々のアーキテク
チャ・レジスタには引き渡さない。
【0029】以上本発明を具体的な実施例を参照しなが
ら説明したが、それ以外の変更や改善も当業者には想起
されよう。例えば、開示された命令は、複雑命令セット
・コンピュータ(「CISC:complex instruction set
computer」)として従来分類されていたデータ・プロ
セッサにも組み込むことができ、更に1クロック・サイ
クル当たり2つ以上の命令を発行可能なデータ・プロセ
ッサにも組み込むことができる。また、開示された発明
は、上述の静的分岐予測方法論の代わりに、動的分岐予
測方法論を用いて実施することもできる。一例として、
PowerPC 620TMマイクロプロセッサは、その分岐履歴表
を選択的に更新しながら、動的に分岐命令を予測するこ
とができる(PowerPC 620は、International Business
MachinesCorporationの商標である)。
【0030】かかる方法論では、分岐履歴表を訂正し不
正確な予測を反映しなければ、予測が固定化されること
になる。したがって、本発明は、特許請求の範囲に規定
された本発明の精神および範囲から逸脱しないかかる変
更を全て含むものと理解すべきである。
【図面の簡単な説明】
【図1】本発明によるデータ・プロセッサのブロック
図。
【図2】本発明による一連の命令を表形式で示す図。
【図3】図2に示した一連の命令の一部を実行する、図
1に描いたデータ・プロセッサの第1タイミング図。
【符号の説明】
10 データ・プロセッサ 12 バス・インターフェース・ユニット 14 命令キャッシュ 16 データ・キャッシュ 18 シーケンサ・ユニット 20 分岐ユニット A22 固定小数点実行ユニット B24 固定小数点実行ユニット 26 複雑固定小数点実行ユニット 28 ロード/記憶実行ユニット 30 浮動小数点実行ユニット 32 汎用アーキテクチャ・レジスタ・ファイル 34 第1再命名バッファ 36 浮動小数点アーキテクチャ・レジスタ・ファイル 38 第2再命名バッファ38 39 再順序バッファ39

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】データ・プロセッサの命令キャッシュに命
    令をロードする方法であって:データ・プロセッサ内の
    第1命令を取り込み、該第1命令を実行して結果を発生
    する第1取り込み段階;前記データ・プロセッサ内の分
    岐命令を取り込み、前記結果が第1値に等しい場合前記
    分岐命令は連続−取り込み−アドレスを発生し、前記結
    果が第2値に等しい場合前記分岐命令は第1分岐−実行
    −取り込み−アドレスを発生し、前記結果が分からない
    場合、前記分岐命令は前記第1分岐−実行−取り込み−
    アドレスを推論的に発生する第2取り込み段階;前記第
    1分岐−実行−取り込み−アドレスに応答して、前記デ
    ータ・プロセッサの命令キャッシュに命令をロードす
    る、第1ロード段階;前記第1命令を実行し、該第1命
    令が第1値を発生する、第1実行段階;前記分岐命令を
    実行し、該分岐命令が連続−取り込み−アドレスを発生
    する、第2実行段階;第2分岐−実行−取り込み−アド
    レスを発生する段階;前記第1命令を取り込む第3取り
    込み段階;前記分岐命令を取り込み、前記結果が第1値
    に等しい場合前記分岐命令は前記連続−取り込み−アド
    レスを発生し、前記結果が第2値に等しい場合前記分岐
    命令は前記第2分岐−実行−取り込み−アドレスを発生
    し、前記結果が分からない場合前記分岐命令は推論的に
    前記第2分岐−実行−取り込み−アドレスを発生する、
    第4取り込み段階;前記第2分岐−実行−取り込み−ア
    ドレスに応答して、命令を前記命令キャッシュにロード
    する第2ロード段階;前記第1命令を実行し、該第1命
    令が前記第1値を発生する、第3実行段階;および前記
    分岐命令を実行し、該分岐命令が前記連続−取り込み−
    アドレスを発生する、第4実行段階;から成ることを特
    徴とする方法。
  2. 【請求項2】データ・プロセッサの命令キャッシュに命
    令をロードする方法であって、該方法は1つのルーチン
    を繰り返し実行し、該ルーチンは:ポインタを増分する
    段階;長ラテンシー命令を実行し、結果を発生する段
    階;および分岐命令を推論的に実行し、前記分岐命令は
    前記結果に応答して、取り込みアドレスを発生し、前記
    分岐命令は前記結果の第1値に応答して、連続−取り込
    み−アドレスを発生し、前記分岐命令は前記結果の第2
    値および前記ポインタに応答して、分岐−実行−取り込
    み−アドレスを発生し、前記分岐命令は前記結果が分か
    らない間前記分岐−実行−取り込み−アドレスを発生す
    る段階;から成ることを特徴とする方法。
  3. 【請求項3】データ・プロセッサの命令キャッシュに命
    令をロードする方法であって、該方法は1つのルーチン
    を繰り返し実行し、該ルーチンは:データ・プロセッサ
    に第1命令を取り込む第1取り込み段階であって、前記
    第1命令は連続−取り込み−アドレスによってインデク
    スされており、実行されたとき、第1値を含む結果を発
    生する前記第1命令を取り込む段階;前記データ・プロ
    セッサに第1分岐命令を取り込む第2取り込み段階であ
    って、前記結果が前記第1値に等しい場合前記第1分岐
    命令は前記連続−取り込み−アドレスを発生し、前記結
    果が第2値に等しい場合前記第1分岐命令は分岐−実行
    −取り込み−アドレスを発生し、前記結果が分からない
    場合前記第1分岐命令は推論的に前記分岐−実行−取り
    込み−アドレスを発生する、第2取り込み段階;前記分
    岐−実行−取り込み−アドレスに応答して、前記データ
    ・プロセッサの命令キャッシュに命令をロードする、第
    1ロード段階;および前記分岐−実行−取り込み−アド
    レスを発生する段階;から成ることを特徴とする方法。
JP7319822A 1994-11-25 1995-11-15 命令キャッシュに命令をロードする方法 Pending JPH08221272A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/345,043 US5642493A (en) 1994-11-25 1994-11-25 Method of loading instructions into an instruction cache by repetitively using a routine containing a mispredicted branch instruction
US345043 1999-06-30

Publications (1)

Publication Number Publication Date
JPH08221272A true JPH08221272A (ja) 1996-08-30

Family

ID=23353224

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7319822A Pending JPH08221272A (ja) 1994-11-25 1995-11-15 命令キャッシュに命令をロードする方法

Country Status (5)

Country Link
US (1) US5642493A (ja)
EP (1) EP0714061A3 (ja)
JP (1) JPH08221272A (ja)
KR (1) KR960018911A (ja)
CN (1) CN1151047A (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5881277A (en) * 1996-06-13 1999-03-09 Texas Instruments Incorporated Pipelined microprocessor with branch misprediction cache circuits, systems and methods
JP3570855B2 (ja) * 1997-05-29 2004-09-29 株式会社日立製作所 分岐予測装置
US6141732A (en) * 1998-03-24 2000-10-31 Novell, Inc. Burst-loading of instructions into processor cache by execution of linked jump instructions embedded in cache line size blocks
US6971000B1 (en) * 2000-04-13 2005-11-29 International Business Machines Corporation Use of software hint for branch prediction in the absence of hint bit in the branch instruction
US6564298B2 (en) * 2000-12-22 2003-05-13 Intel Corporation Front end system having multiple decoding modes
US7681188B1 (en) * 2005-04-29 2010-03-16 Sun Microsystems, Inc. Locked prefetch scheduling in general cyclic regions
JP4882625B2 (ja) * 2005-12-26 2012-02-22 株式会社デンソー マイクロコンピュータ
US8438003B2 (en) * 2007-04-12 2013-05-07 Cadence Design Systems, Inc. Methods for improved simulation of integrated circuit designs
US8131982B2 (en) * 2008-06-13 2012-03-06 International Business Machines Corporation Branch prediction instructions having mask values involving unloading and loading branch history data
US10338923B2 (en) * 2009-05-05 2019-07-02 International Business Machines Corporation Branch prediction path wrong guess instruction
US8521999B2 (en) * 2010-03-11 2013-08-27 International Business Machines Corporation Executing touchBHT instruction to pre-fetch information to prediction mechanism for branch with taken history
CN103377034B (zh) * 2012-04-12 2016-06-08 无锡江南计算技术研究所 指令预送方法及装置、指令管理系统、运算核心
CN103377033B (zh) * 2012-04-12 2016-01-13 无锡江南计算技术研究所 运算核心及其指令管理方法
CN103377085B (zh) * 2012-04-12 2017-04-19 无锡江南计算技术研究所 指令管理方法及装置、指令管理系统、运算核心

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5487156A (en) * 1989-12-15 1996-01-23 Popescu; Valeri Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched
US5230068A (en) * 1990-02-26 1993-07-20 Nexgen Microsystems Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence
US5511172A (en) * 1991-11-15 1996-04-23 Matsushita Electric Co. Ind, Ltd. Speculative execution processor
AU3776793A (en) * 1992-02-27 1993-09-13 Intel Corporation Dynamic flow instruction cache memory
US5421020A (en) * 1993-01-08 1995-05-30 International Business Machines Corporation Counter register implementation for speculative execution of branch on count instructions
US5454117A (en) * 1993-08-25 1995-09-26 Nexgen, Inc. Configurable branch prediction for a processor performing speculative execution

Also Published As

Publication number Publication date
EP0714061A3 (en) 1997-10-29
US5642493A (en) 1997-06-24
EP0714061A2 (en) 1996-05-29
CN1151047A (zh) 1997-06-04
KR960018911A (ko) 1996-06-17

Similar Documents

Publication Publication Date Title
US5500943A (en) Data processor with rename buffer and FIFO buffer for in-order instruction completion
US6145049A (en) Method and apparatus for providing fast switching between floating point and multimedia instructions using any combination of a first register file set and a second register file set
US5142631A (en) System for queuing individual read or write mask and generating respective composite mask for controlling access to general purpose register
US5592634A (en) Zero-cycle multi-state branch cache prediction data processing system and method thereof
US4701844A (en) Dual cache for independent prefetch and execution units
US5805877A (en) Data processor with branch target address cache and method of operation
US5530825A (en) Data processor with branch target address cache and method of operation
US6073215A (en) Data processing system having a data prefetch mechanism and method therefor
US6119203A (en) Mechanism for sharing data cache resources between data prefetch operations and normal load/store operations in a data processing system
JP3871883B2 (ja) 間接分岐ターゲットを計算するための方法
US5860107A (en) Processor and method for store gathering through merged store operations
US7203827B2 (en) Link and fall-through address formation using a program counter portion selected by a specific branch address bit
US5761723A (en) Data processor with branch prediction and method of operation
US6671762B1 (en) System and method of saving and restoring registers in a data processing system
JPS63193230A (ja) 高性能マイクロプロセッサ集積回路とメモリ参照を行なう方法
US5263153A (en) Monitoring control flow in a microprocessor
IE940855A1 (en) Data processor with speculative instruction fetching and¹method of operation
GB2200484A (en) Detecting and handling memory-mapped i/o by a pipelined computer
US5621896A (en) Data processor with unified store queue permitting hit under miss memory accesses
US5502827A (en) Pipelined data processor for floating point and integer operation with exception handling
JPH08221272A (ja) 命令キャッシュに命令をロードする方法
US20050155025A1 (en) Autonomic method and apparatus for local program code reorganization using branch count per instruction hardware
US6212539B1 (en) Methods and apparatus for handling and storing bi-endian words in a floating-point processor
US5613081A (en) Method of operating a data processor with rapid address comparison for data forwarding
US6978361B2 (en) Effectively infinite branch prediction table mechanism