JPH0830454A - 非逐次アクセスの実効待ち時間が短いパイプライン・キャッシュシステム - Google Patents

非逐次アクセスの実効待ち時間が短いパイプライン・キャッシュシステム

Info

Publication number
JPH0830454A
JPH0830454A JP7185054A JP18505495A JPH0830454A JP H0830454 A JPH0830454 A JP H0830454A JP 7185054 A JP7185054 A JP 7185054A JP 18505495 A JP18505495 A JP 18505495A JP H0830454 A JPH0830454 A JP H0830454A
Authority
JP
Japan
Prior art keywords
cache
record
sequential
address
idle period
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
JP7185054A
Other languages
English (en)
Other versions
JP3732555B2 (ja
Inventor
Dennis O'connor
デニス・オーコナー
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JPH0830454A publication Critical patent/JPH0830454A/ja
Application granted granted Critical
Publication of JP3732555B2 publication Critical patent/JP3732555B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (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)【要約】 【目的】 本発明の目的は、非逐次メモリアクセスにお
ける実効待ち時間を短縮するための方法及び装置を提供
することにある。 【構成】 ヒットしたアドレスに応答して少なくとも1
つのキャッシュ出力レコードを出力する多段式パイプラ
イン・キャッシュで、出力レコードを出さないLクロッ
クサイクルのアイドル期間後にレコードを出力するパイ
プライン・キャッシュと、分岐目標キャッシュ(BT
C)であってそこでヒットした非逐次レコードアドレス
に応答してアイドル期間中に少なくとも1つのレコード
を出力するためのBTCとを具備した非逐次レコード・
アクセス用の短い実効待ち時間を有するキャッシュを用
いる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、キャッシュメモリを使
用するデータ処理システムに関し、より詳しく、キャッ
シュの非逐次アクセスの実効待ち時間を短縮する技術に
関する。
【0002】
【従来の技術】キャッシュは、主メモリに記憶された命
令またはデータにプロセッサがアクセスするのに必要な
実効時間を短くするために様々な形で使用される。キャ
ッシュの理論は、大容量の比較的遅い主メモリと共に、
非常に速いメモリの小さい部分をキャッシュとして使用
することによって、コンピュータシステムはより高い処
理速度を達成することができるというものである。キャ
ッシュメモリは、動作上、データ処理装置と主メモリと
の間に置かれる。プロセッサは、主メモリにアクセスす
る必要があるとき、まずキャッシュメモリを検索して、
必要とする情報がキャッシュで利用可能可能かどうかを
判断する。データ及びまたは命令を主メモリから取り出
すときは、それらの情報は、主メモリの連続した記憶場
所から取り出される情報ブロックの一部(キャッシュラ
インとして知られる)としてキャッシュに格納される。
その後同じアドレスへのメモリアクセスを行うときは、
プロセッサは、主メモリよりむしろ高速キャッシュメモ
リとやり取りする。統計的には、情報を主メモリの特定
のブロックにアクセスして取り出したときは、次のアク
セスではその同じブロックから情報を呼び出すことにな
る確立が非常に高い。このメモリー参照の局所性という
性質があるために、平均メモリ・アクセスタイムは大幅
に短縮される。
【0003】キャッシュの設計には、互いに相容れない
主要な目標が2つのある。第1には、キャッシュ・サイ
ズは、キャッシュミスの場合のオフチップメモリ・アク
セスが最小限となるように、十分大きいことが望まし
い。第2には、プロセッサが高速化するにつれて、シス
テム全体の性能が遅くならないように命令及びデータを
プロセッサへリターンすることができるよう、キャッシ
ュを十分高速に設計することが特に重要になる。不都合
なことに、キャッシュメモリは、大きくなるほど、寄生
キャパシタンスの増加のために遅くなる。
【0004】これらの2つの目標を調和させるために、
従来多くの技術が用いられている。キャッシュをあるタ
イプのデータ専用にすることによって、キャッシュに要
求される相対的なサイズを小さくすることができる。例
えば、多くのプロセッサには、命令キャッシュとデータ
キャッシュが別個に組み込まれている。さらに、命令キ
ャッシュ用のアクセスのパターンは通常逐次式であるた
め、ヒット/ミス比が比較的高い。従って、命令を検索
するのにオフチップにアクセスする必要が少なくなり、
性能が高くなる。
【0005】キャッシュの速度の大きさには2つの要素
が関与する。キャッシュの待ち時間は、キャッシュに対
するアドレスの呈示と要求されたデータのキャッシュか
らの受取りとの間の遅延時間(通常プロセッサ・サイク
ルで測定される)である。キャッシュのスループット
は、ある一定時間で実行することができるメモリアクセ
ス動作の回数の尺度である。待ち時間中は、キャッシュ
は、アドレスに応答してキャッシュからデータがリター
ンされないアイドル期間を持っていると見なすことがで
きる。アイドル期間の持続時間Lは、待ち時間より1サ
イクル短い。
【0006】パイプライン・メモリシステムでは、先取
り法を用いてスループットを高くすることができるとい
うことは、当技術分野においては周知である。カリフォ
ルニア州サンタクララのインテル社(Intel Co
rporation ofSanta Clara,
California)のIntel i960CATM
及びi960CFTMプロセッサは、パイプライン・メモ
リシステムをサポートするプロセッサの例である。特
に、命令キャッシュは、例えば2段パイプライン・キャ
ッシュとして実施することが可能である。パイプライン
の第1段においては、命令アドレス(命令ポインタ)が
キャッシュのタグアレイに呈示される。その結果は1サ
イクル間ラッチされ、第2段においては、ヒットの場合
はキャッシュの命令アレイラインにアクセスし、キャッ
シュミスの場合はメモリにアクセスすることによりメモ
リアクセスが続けられる。言い換えると、例えば命令ア
ドレスをサイクル1で呈示すると、キャッシュはサイク
ル2では待ち状態を取り、命令アドレスがキャッシュで
ヒットすれば、その命令がサイクル3でリターンされ
る。
【0007】上記のパイプライン・キャッシュの待ち時
間は2サイクルである。しかしながら、実効待ち時間
は、アイドル・サイクルの間に後続の逐次アドレスから
命令を先取りすることによって1サイクル短縮すること
ができる。サイクル2においては、命令シーケンサ(プ
ログラムカウンタ)がフェッチすべき次の命令を指示す
るための命令ポインタをインクリメントし、そのポイン
タ・アドレスをキャッシュに呈示する。その結果、サイ
クル1で呈示されたアドレスで見付かった命令がサイク
ル3でリターンされ、次の命令はサイクル4でリターン
される。このようにして、キャッシュのスループット
は、1サイクルおきに1命令から1サイクルごとに1命
令へ100パーセントの増加が達成されている。
【0008】当業者であれば、パイプライン・キャッシ
ュの段数はシステムの要求に対応して広い範囲を取り得
るということは理解できよう。さらに、当業者ならば、
命令ポインタが各パイプライン段の間にインクリメント
される数は、プロセッサがスーパースカラ型(1サイク
ルにつき複数の命令を出す)であるかどうか、とりわけ
パイプライン段数によって変化するということは理解で
きよう。唯一必要なのは、前のサイクルでフェッチされ
た最後の命令の直後の命令を指示するように命令ポイン
タをインクリメントすることである。
【0009】パイプライン・キャッシュからの命令を逐
次先取りする方法を用いると、命令スループットを比較
的高く保つことが可能である。しかしながら、非逐次メ
モリアクセスになると、パイプライン・キャッシュは性
能的な不利を被る。非逐次アクセスには、命令フローの
変化の中でも、とりわけ分岐コール(呼出し)及び割込
みなどがある。上に述べたように、命令シーケンサは、
命令ポインタを逐次インクリメントすることによって命
令を先取りさせる。しかしながら、分岐命令に遭遇する
と、命令フローは、その分岐命令によって指定された目
標アドレスへ転向されなければならない。プロセッサ
は、分岐命令を解読して分岐命令に遭遇したことを検知
し、命令フローを継続する分岐目標アドレスを決定する
ために多くのサイクル数を必要とする。この期間中に、
パイプライン・キャッシュは、分岐命令の直後の逐次命
令フロー中にある先取りされた命令をリターンする。分
岐が検出された後は、これらの先取りされた命令は、洗
い流す、すなわち実行せずにパイプラインから排出しな
ければならず、かつ命令フローを分岐目標アドレスへ転
向しなければならない。
【0010】分岐目標アドレスがパイプライン・キャッ
シュに呈示されると、そのアドレスにある命令がパイプ
ライン・キャッシュの待ち時間に等しい期間後にリター
ンされる。典型的なコンピュータプログラムにおいて
は、おおよそ5命令毎に1つの割合で分岐命令が発生す
るので、この遅延は、命令スループットを大きく低下さ
せる。このスループットの低下は、各待ち時間サイクル
が1命令だけではなく多数の命令の遅延を表すスーパー
スカラ・マシンにおいては一層ひどくなる。
【0011】
【発明が解決しようとする課題】従って、非逐次メモリ
アクセスによって生じる実効待ち時間を短縮することに
よってパイプライン・キャッシュの性能を向上させるこ
とが要望されている。
【0012】
【課題を解決するための手段】上記目的達成のため、本
発明は、非逐次メモリアクセスにおける実効待ち時間を
短縮するための方法及び装置を提供するものである。本
発明のキャッシュは、パイプライン・キャッシュでのレ
コード・アドレスのヒットに応答して少なくとも1つの
キャッシュ出力レコードが得られる多段式パイプライン
・キャッシュを有する。このパイプライン・キャッシュ
は、出力レコードを全く出さないLクロックサイクルの
アイドル期間後にレコードを出力する。本発明は、分岐
目標キャッシュ(BTC)でヒットした非逐次レコード
・アドレスに応答してアイドル期間中に少なくとも1つ
のレコードを出すBTCを設けることによってパイプラ
イン・キャッシュの実効待ち時間を短縮するものであ
る。このキャッシュは、さらに、アイドル期間に先行す
るゼロサイクルの間に非逐次レコード・アドレス(A)
及びルックアヘッド・アドレス(A+(L×W)、Wは
レコードが出されるイシュー幅を示す)をパイプライン
・キャッシュに供給するルックアヘッド回路を有する。
パイプライン・キャッシュは、それぞれ、パイプライン
・キャッシュでヒットした非逐次レコード・アドレス及
びルックアヘッド・アドレスに応答して、アイドル期間
の後にルックアヘッド・アドレスに応じてルックアヘッ
ド・レコード及び非逐次レコードを出力する。非逐次レ
コードがBTCでキャッシュミスになると、マルチプレ
クサが、パイプライン・キャッシュ中から出力として非
逐次レコードを選択する。非逐次アドレスがBTCでヒ
ットしすると、マルチプレクサはルックアヘッド・レコ
ードを出力として選択する。
【0013】もう一つの実施態様においては、BTCの
タグヒット論理装置が十分に速い場合、非逐次アドレス
がBTCでヒットすると、ルックアヘッド回路はそのゼ
ロサイクル中にルックアヘッド・アドレスのみをパイプ
ライン・キャッシュに供給する。その場合、パイプライ
ン・キャッシュは、パイプライン・キャッシュでヒット
したルックアヘッド・アドレスに応答して、アイドル期
間の後にルックアヘッド・アドレスからルックアヘッド
・レコードを出力する。一方、非逐次アドレスがBTC
でキャッシュミスを起こすと、ルックアヘッド回路は、
そのゼロサイクル中に非逐次レコード・アドレスをパイ
プライン・キャッシュに供給する。パイプライン・キャ
ッシュでヒットした非逐次アドレスに応答して、パイプ
ライン・キャッシュは、アイドル期間の後にで非逐次レ
コードを出力する。
【0014】上記のどちらの態様においても、非逐次ア
ドレスがBTCでヒットすると、ルックアヘッド回路
は、そのゼロサイクルの後に、ルックアヘッド・アドレ
スに続いて少なくとも1つの逐次レコード・アドレスを
パイプライン・キャッシュに供給する。しかしながら、
BTCで非逐次アドレスのキャッシュミスが起こると、
ルックアヘッド回路は、そのゼロサイクルの後に、非逐
次アドレスに続いて少なくとも1つの逐次レコードアド
レスをパイプライン・キャッシュに供給する。ルックア
ヘッド回路によって供給された逐次レコード・アドレス
のパイプライン・キャッシュでのヒットに応答して、パ
イプライン・キャッシュは、少なくとも1つのレコード
を供給する。
【0015】マルチサイクル・アイドル期間の場合は、
BTCは、アイドル期間の第1のサイクル中に、非逐次
レコード・アドレスによって指定された非逐次レコード
を出力する。アイドル期間の残りのサイクルにおいて
は、BTCは、非逐次レコード・アドレスに続く逐次レ
コード・アドレスから逐次レコードを出力する。イシュ
ー幅Wを有するスーパースカラ・システムの場合は、B
TCは、アイドル期間の各サイクル中にW個のレコード
を出力する。
【0016】アイドル期間の後、パイプライン・キャッ
シュは、前のサイクル中にBTCによって出された最後
のレコードのレコード・アドレスに続く逐次レコード・
アドレスから少なくとも1つの逐次レコードを出力す
る。しかしながら、BTCがアイドル期間中にレコード
を出力しないと、パイプライン・キャッシュは、パイプ
ライン・キャッシュでヒットした非逐次レコード・アド
レスに応答して、アイドル期間の後に非逐次レコードを
出力する。
【0017】好ましくは、キャッシュに記憶されるレコ
ードは命令を表すレコードとする。非逐次レコード・ア
ドレスは、例えば、分岐命令の目標アドレス、割込みハ
ンドラの開始アドレス、あるいはサブルーチンのコール
または戻りアドレス(復帰アドレス)である。
【0018】以下、本発明を実施例について図面を参照
しつつ詳細に説明する。
【0019】
【実施例】本発明によれば、非逐次アクセスにおける実
効待ち時間が短いパイプライン・キャッシュシステムが
得られる。以下の説明においては、本発明の完全な理解
を図るために、詳細な事項が特定的に記載してある。し
かしながら、本発明がこれらの詳細な事項の記載なしで
実施可能なことは当業者にとって明白であろう。また、
その他の場合においては、前記シーケンサ、その他の周
知の素子、装置、プロセス・ステップ等は、本発明が不
明確になるのを避けるため、詳細な記載は省略した。
【0020】図1は、本発明のパイプライン・キャッシ
ュのアーキテクチャを示すブロック図である。プロセッ
サチップ100は、CPUコア102及び本発明のオン
チップ命令キャッシュ104を有する。
【0021】命令キャッシュ104は、メモリバス10
8を介してメモリデバイス106に接続されている。当
業者であれば、発明の説明が不必要に複雑になるのを避
けるために、図1ではバスコントローラやデータキャッ
シュのような多数の接続や構成部品が省略されていると
いうことは理解できよう。命令キャッシュ104は、ル
ックアヘッド制御回路110、分岐目標命令キャッシュ
112、パイプライン・キャッシュ114及びマルチプ
レクサ(MUX)116を有する。パイプライン・キャ
ッシュ114は、CPUコア102によって使用される
レコードの一種である命令を記憶する。このキャッシュ
は何段にでもパイプライン化することができる。分岐目
標命令キャッシュ(BTIC)112は、分岐、コー
ル、リターン及びその他の非逐次アクセスのために専用
に用いられる小さな高速キャッシュである。このBTI
Cは、これらの1つの動作から生じるアドレスがプロセ
ッサコア102によって送られたときだけアクティブに
なる。このBTICの目的は、非逐次アクセスのために
パイプライン・キャッシュに生じる待ち時間を埋めるこ
とにある。
【0022】ルックアヘッド制御(LAC)回路110
は、パイプライン・キャッシュ114に与えるアドレス
を制御する。CPUコア102は、非逐次アクセスを実
行しようとするとき、アドレスを命令キャッシュ104
に呈示する。他のサイクル中に、アイドル期間中にCP
Uコア102により消費された命令語の数だけ前回の命
令ポインタをインクリメントして、前記キャッシュに対
するアドレスがLAC110から生成される(ワード・
バイ・ワードアドレス指定であると仮定した場合)。非
逐次アクセスに遭遇すると、CPUコア102からのブ
ランチ・アドレスがBTIC112に与えられて、分岐
目標アドレスの命令がBTIC112に格納されている
かどうかの判断が行われる。同時に、ルックアヘッド制
御装置110は、分岐目標アドレスAとルックアヘッド
・アドレスA+Nを共にパイプライン・キャッシュ11
4に与える。数Nは、CPUコア102がアイドル期間
中に消費する命令の数によって決まる。例えば、パイプ
ライン・キャッシュ114が2サイクルの待ち時間(す
なわち、アイドル期間L=1サイクル)で、CPUコア
102がイシュー幅(issue width )Wが3のスーパー
スカラ・プロセッサであるとすると、ルックアヘッド装
置110はN=3命令だけ先取りする。一般に、アイド
ル期間中にBTIC112によってCPUコア102に
与えられる「充填(fill-in )」命令の数Nは、次式に
従って計算される。N=L×W
【0023】BTIC112は、ヒットすると、CPU
コア102が必要とする命令をアイドル期間中に出力す
る。アイドル期間に続いて、パイプライン・キャッシュ
114は後続の命令を出す(それらがパイプライン・キ
ャッシュ114中にある場合)。一方、BTIC112
でキャッシュミスが起こると、BTIC112によって
は命令が全く与えられず、プロセッサはそのアイドル期
間にわたって立ち往生(機能停止)する。アイドル期間
が終わった後、分岐目標アドレスの命令がパイプライン
・キャッシュ114によってCPUコア102に供給さ
れ、BTIC112に格納される。これはそれらの命令
がパイプライン・キャッシュ114に格納されている場
合である。一方、命令がパイプライン・キャッシュ11
4にない場合は、それらの命令は外部メモリ106から
CPUコア102に供給され、BTIC112及びパイ
プライン・キャッシュ114に格納される。本発明は、
分岐目標アドレスに関連して説明するが、当業者であれ
ば、本発明の動作はサブルーチンコール及び戻りアドレ
ス、割込みハンドラ・アドレス及びその他の非逐次アク
セス・アドレスにも同様に適用であるということは理解
できよう。さらに、本発明は、命令キャッシュばかりで
なく、あらゆる形の情報レコードを保持するキャッシュ
に適用することができる。
【0024】以下、本発明の命令キャッシュの動作を、
図2及び3のタイミング図を参照しつつさらに詳細に説
明する。図2及び3に例示するシステムにおいては、こ
の実施例は、スカラ・プロセッサにおける2段パイプラ
イン・キャッシュであると仮定する(イシュー幅は1に
等しい)。図2に示すように、CPUコア102とキャ
ッシュ104の間では多数の信号がやり取りされる。分
岐信号(能動ハイ)は、CPUコア102が非逐次アク
セスを要求していることを示す。また、CPUコア10
2は、非逐次アクセス、例えば分岐の目標アドレスAを
ルックアヘッド制御装置110及び分岐目標命令キャッ
シュ112に与える。CPU_READY信号は、それ
がハイのとき、CPUが情報を処理することができる状
態にあるということを示し、逆に、CPU_READY
信号がローに落ちたときは、CPUが機能停止しなけれ
ばならないということを示す。
【0025】図2に示すように、CPUコア102は、
サイクル0で分岐目標アドレスAを出している。パイプ
ライン・キャッシュ114は2サイクルの待ち時間を呈
するので、ルックアヘッド制御回路110は、アドレス
A及びルックアヘッド・アドレスA+N=A+(L×
W)=A+(1×1)=A+1(LAC_OUT)を出
す。図2の例においては、サイクル0におけるハイのB
TIC_HIT線によって示されるように、アドレスA
がBTIC112でヒットする。BTIC112は比較
的高速のパイプライン・キャッシュであるため、サイク
ル1でアドレスAの命令I[A]をリターンする。この
ようにして、BTIC112は、サイクル1においてパ
イプライン・キャッシュ114のアイドル期間を埋め
る。
【0026】BTICヒットに応答して、MUX116
は、命令I[A]を選択し、CPUコア102へ出力す
る(MUX_OUT)。パイプライン・キャッシュ11
4はデュアルポートであるため、2つのアドレスを与え
られると、2つの対応する命令を出力することができる
ようになっている。この例の場合、サイクル2におい
て、パイプライン・キャッシュ114(PC_OUT)
は、LAC110によりサイクル0で呈示されたアドレ
スに応答して、2サイクルの待ち時間後にアドレスA及
びA+1の命令をリターンする。サイクル2において
は、前のサイクルでBTICヒットが検出されているの
で、MUX116は、パイプライン・キャッシュ114
の出力からアドレスA+1の命令のみを選択する。サイ
クル0の後の各サイクルについてはこの例の場合、CP
Uコア102は他に分岐目標アドレスを呈示していな
い。このように、これら後続のサイクルにおいては、L
AC110は、通常のように動作して、A+2、A+3
等の逐次ルックアヘッド・アドレスを出力する。通常の
2サイクルの待ち時間の後、パイプライン・キャッシュ
114は、LAC110によってアドレスA+2を呈示
されてからそのアドレスの命令を出力する(パイプライ
ン・キャッシュ114でヒットした場合)。命令が通常
のように逐次処理される間は、MUX116は、パイプ
ライン・キャッシュ114の出力を選択して、命令をC
PUコア102に供給する。ここで、CPU_READ
Yの線がローになって、CPU機能停止を示しているこ
とが図から分かる。この場合、CPUコア102は命令
処理を延期しなければならない。このようにして、パイ
プライン・キャッシュ114は、アドレスA+2の命令
の出力を続け、LAC110は、サイクル4で機能停止
が解除されるまでA+3のルックアヘッド・アドレスを
出し続ける。
【0027】図3は、BTICミスの場合を示す。キャ
ッシュミスが起こった場合、BTIC112は、サイク
ル1にアドレスAからの命令を入れることができない。
その代りに、2サイクルの待ち時間の後、MUX116
は、パイプライン・キャッシュ114の出力から命令I
[A]を選択する(パイプライン・キャッシュでヒット
した場合)。パイプライン・キャッシュ114が命令を
リターンするとき、その命令はCPUコア102に供給
されるばかりでなく、以後におけるメモリアクセスのた
めにBTIC112にも格納される。また、LAC11
0は、サイクル0でキャッシュミスが検出されると、こ
れに応答して、サイクル1でルックアヘッド・アドレス
A+1を繰り返し、その結果、パイプライン・キャッシ
ュ114はアドレスA+1の命令をリターンする(パイ
プライン・キャッシュ114でヒットが起こった場
合)。また、図3には、図2と同様の機能停止の効果も
示されている。
【0028】もう一つの実施例においては、BTIC1
12のタグヒット論理装置は、ルックアヘッド制御11
0の動作を変えるのに十分な速度で反応することができ
る。例えば、図2においては、LAC110は、パイプ
ライン・キャッシュ114に分岐目標アドレスA及びル
ックアヘッド・アドレスA+1を共に出力しなければな
らない。サイクル0では、LAC110は、BTICで
ヒットが生じるか(パイプライン・キャッシュはI[A
+1]のみ出力すればよい)、キャッシュミスが起こる
か(この場合パイプライン・キャッシュ114はI
[A]とI[A+1]を共に出力する必要がある)が不
確かである。しかしながら、BTIC112がルックア
ヘッド制御回路110にサイクル0でのヒットを通知す
るのに十分速ければ、LAC110は、分岐アドレスと
ルックアヘッド・アドレスを両方とも出力すべきかどう
か、あるいはルックアヘッド・アドレスだけ出力すべき
かを決定することができるはずである。ヒットの場合
は、I[A]がBTIC112中にあることが分かり、
従ってアドレスAをパイプライン・キャッシュ114に
呈示する必要がない。そして、LAC110は、ルック
アヘッド・アドレスA+1のみをパイプライン・キャッ
シュ114に呈示する。このような高速のBTICは、
例えば、図2において、BTIC_HIT信号を左へ移
動させ、LAC_OUT信号がアサートされる(立ち上
がる)前に論理ハイレベルに達するようにすることによ
り表すことができる。
【0029】同様にBTICでキャッシュミスが起こっ
た場合は、パイプライン・キャッシュ114がBTIC
112の代りにサイクル2でI[A]を出力する動作を
受け持つことになるから、LAC110は分岐目標アド
レスAをパイプライン・キャッシュ114に呈示しさえ
すればよいということが分かる。以後のサイクルでは、
非逐次アクセスがなければ、通常の逐次動作が続けられ
る。
【0030】以上の説明では、パイプライン・キャッシ
ュ114は何らかのアドレスが呈示されたとき、これに
応答して生じたヒットを記録するものと仮定した。もち
ろん、アドレスがBTIC112でもパイプライン・キ
ャッシュ114でもキャッシュミスになった場合は、プ
ロセッサは所望の命令が主メモリ106からリターンさ
れるまで不定数の待ち状態を経る必要がある。その命令
は、リターンされると同時にパイプライン・キャッシュ
114にもBTIC112にも格納される。
【0031】図4及び5は、スカラ・プロセッサ100
で実施された4段パイプライン・キャッシュ114(ア
イドル時間=3サイクル)の場合のBTICのヒットと
BTICのキャッシュミスの結果をそれぞれ示すタイミ
ング図である。サイクル0においては、ルックアヘッド
制御回路110が分岐目標アドレスA及びルックアヘッ
ド・アドレスA+N(ただしN=3)をパイプライン・
キャッシュ114に呈示する。ルックアヘッド・アドレ
スA+3=A+(L×W)=A+(3×1)(スカラ・
プロセッサの場合)=A+3。あるいは、図2と3に関
連して説明したしように、LAC110がルックアヘッ
ド・アドレスをパイプライン・キャッシュ114へ出力
する前にヒットかキャッシュミスかをルックアヘッド制
御回路110に示すことができるほどBTICのタグヒ
ット論理装置が十分高速であれば、ルックアヘッド制御
回路110はBTICヒットの場合はルックアヘッド・
アドレスのみ、BTICミス(キャッシュミス)の場合
は分岐目標アドレスのみを出力するだけでよい。
【0032】この例においては、アイドル期間は3サイ
クルであり、このことは、パイプライン・キャッシュ1
14は、サイクル0で呈示されたアドレスに応答してサ
イクル1、2または3中に命令をリターンするというこ
とを行わないということを意味する。パイプライン・キ
ャッシュ114の性能は、このアイドル期間にBTIC
112によって供給される命令を充填することによって
強化することができる。この場合、BTICヒットが起
こると、BTIC112は、CPUコア102から受け
取った分岐目標アドレスに応答してサイクル1、2と3
中に命令I[A]、I[A+1]とI[A+2]をそれ
ぞれ出力する。マルチプレクサ116は、BTICヒッ
トが起こった場合の3サイクルのアイドル期間中はBT
IC112の命令出力を選択する。アイドル期間が経過
した後は、マルチプレクサ116はパイプライン・キャ
ッシュ114の出力を選択する。
【0033】分岐目標アドレスAがBTIC112でキ
ャッシュミスになると、4サイクル待ち時間のために、
そのアドレスの命令は、サイクル4まではパイプライン
・キャッシュ114によってリターンされない(パイプ
ライン・キャッシュでヒットした場合)。
【0034】本発明は、通常アイドル期間になるような
処理時間を埋めるための非逐次アクセス専用に用いられ
る小さな高速キャッシュを使用する。この性能強化は、
各アイドル・サイクルで、1つの命令だけではなく、多
くの命令を出す機会が失われるスーパースカラ・システ
ムにおいてとりわけ有用である。そのようなアイドル時
間によって通常生じる性能の低下は、1サイクルより長
い待ち時間を有する多段式のパイプライン・キャッシュ
を使用する場合にさらに顕著になる。従って、このよう
なアイドル時間を全て埋めることができる本発明は、従
来技術に対して著しい改善効果をもたらすものである。
【0035】以上、本発明を特定実施例により詳細に説
明したが、当業者にとって、発明の要旨及び範囲を逸脱
することなく、様々な修正態様及び変更態様が可能なこ
とは明白であろう。特に、上記説明から、本発明は任意
の範囲のイシュー幅を有するスカラのプロセッサでもス
ーパースカラでも動作する任意の段数を有するパイプラ
イン・キャッシュに適用可能であるということは明らか
であろう。
【0036】
【発明の効果】本発明によれば、非逐次メモリアクセス
によって生じる実効待ち時間を短縮することによってパ
イプライン・キャッシュの性能を向上させることができ
る。
【図面の簡単な説明】
【図1】 本発明のキャッシュを組み込んだコンピュー
タシステムを示すブロック図である。
【図2】 本発明をスカラ・プロセッサにおける2段パ
イプライン・キャッシュに適用した場合に、非逐次レコ
ード・アクセスが分岐目標キャッシュでヒットした場合
の一例の動作を説明するためのタイミング図である。
【図3】 本発明をスカラ・プロセッサにおける2段パ
イプライン・キャッシュに適用した場合に、非逐次レコ
ード・アクセスが分岐目標キャッシュでキャッシュミス
を起こした場合の一例の動作を説明するためのタイミン
グ図である。
【図4】 本発明をスカラ・プロセッサにおける4段パ
イプライン・キャッシュに適用した場合に、非逐次レコ
ード・アクセスが分岐目標キャッシュでヒットした場合
の動作を説明するためのタイミング図である。
【図5】 本発明をスカラ・プロセッサにおける4段パ
イプライン・キャッシュに適用した場合に、非逐次レコ
ード・アクセスが分岐目標キャッシュでキャッシュミス
を起こした場合の一例の動作を説明するためのタイミン
グ図である。
【符号の説明】
100…プロセッサチップ、102…CPUコア、10
4…命令キャッシュ、106…メモリデバイス、108
…メモリバス、110…ルックアヘッド制御回路、11
2…分岐目標命令キャッシュ、114…パイプライン・
キャッシュ、116…マルチプレクサ。

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 ヒットしたレコード・アドレスに応答し
    て少なくとも1つのキャッシュ出力レコードを出力する
    ものであって、レコードを出力しないLクロックサイク
    ルのアイドル期間の後に前記少なくとも1つのキャッシ
    ュ出力レコードを出力する多段式パイプライン・キャッ
    シュと、逐次レコード・アドレスを前記パイプライン・
    キャッシュに供給するシーケンサと、非逐次レコードの
    非逐次レコード・アドレスを出力するためのプロセッサ
    コアと、を有する情報を処理するためのコンピュータシ
    ステムでそのシステムにおける非逐次レコード・アクセ
    スのための実効待ち時間を短縮するための方法におい
    て、 アイドル期間中に、分岐目標キャッシュ(BTC)でヒ
    ットした前記非逐次レコード・アドレスに応答してその
    BTCから少なくとも1つのレコードを出力するステッ
    プ、を具備した方法。
  2. 【請求項2】 アイドル期間の第1のサイクル中に、B
    TCが上記非逐次レコード・アドレスによって指定され
    る非逐次レコードを出力するステップと、 アイドル期間の残りのサイクル中に、BTCが前記非逐
    次レコード・アドレスに引き続く逐次レコード・アドレ
    スから逐次レコードを出力するステップと、を具備した
    請求項1記載の方法。
  3. 【請求項3】 上記コンピュータシステムがスーパース
    カラ・システムであって、Wがそのシステムのイシュー
    幅であり、上記少なくとも1つのレコードを出力するス
    テップが、BTCが上記アイドル期間の各サイクル中に
    W個のレコードを同時に出力するステップよりなる請求
    項1記載の方法。
  4. 【請求項4】 上記コンピュータシステムがスーパース
    カラ・システムであり、Wがシステムのイシュー幅であ
    り、上記少なくとも1つのレコードを出力するステップ
    が、 上記アイドル期間の第1のサイクル中にBTCが上記非
    逐次レコード・アドレスによって指定される非逐次レコ
    ードを出力するステップと、 上記アイドル期間の第1のサイクル中にBTCが上記非
    逐次レコード・アドレスに続いて逐次レコード・アドレ
    スからW−1個の逐次レコードを同時に出力するステッ
    プと、 上記アイドル期間の残りのサイクル中に、BTCが前の
    サイクルに出力された最後のレコードのレコード・アド
    レスの次の逐次レコード・アドレスから各サイクル中に
    W個の逐次レコードを出力するステップとを具備する請
    求項1の方法。
  5. 【請求項5】 さらに、上記アイドル期間の後に、上記
    パイプライン・キャッシュが、前のサイクルにおいてB
    TCによりアイドル期間中に出力された最後のレコード
    のレコード・アドレスに続く逐次レコード・アドレスか
    ら少なくとも1つの逐次レコードを出力するステップを
    具備した請求項1記載の方法。
  6. 【請求項6】 情報を処理するためのコンピュータシス
    テムにおける非逐次レコード・アクセス用の短い実効待
    ち時間を有するキャッシュにおいて、 ヒットしたレコード・アドレスに応答して少なくとも1
    つのキャッシュ出力レコードを出力するものであって、
    レコードを出力しないクロックサイクルのアイドル期間
    後に出力する多段式パイプライン・キャッシュと、 ヒットした非逐次レコードアドレスに応答してアイドル
    期間中に少なくとも1つのレコードを出力する分岐目標
    キャッシュ(BTC)と、を具備したキャッシュ。
  7. 【請求項7】 非逐次レコード・アクセスのための短い
    実効待ち時間を有するコンピュータシステムにおいて、 情報を処理するためのプロセッサと、 上記プロセッサに接続されたメモリデバイスと、 上記プロセッサに接続されたキャッシュで、 ヒットしたレコード・アドレスに応答して少なくとも1
    つのキャッシュ出力レコードを出力するものであって、
    レコードを出力しないLクロックサイクルのアイドル期
    間後に出力する多段式パイプライン・キャッシュと、 分岐目標キャッシュ(BTC)であって、そこでヒット
    した非逐次レコードアドレスに応答してアイドル期間中
    に少なくとも1つのレコードを出力するBTCと、を有
    するキャッシュと、を具備したコンピュータシステム。
JP18505495A 1994-06-30 1995-06-29 非逐次アクセスの実効待ち時間が短いパイプライン・キャッシュシステム Expired - Fee Related JP3732555B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/269,650 US5561782A (en) 1994-06-30 1994-06-30 Pipelined cache system having low effective latency for nonsequential accesses
US269650 2002-10-11

Publications (2)

Publication Number Publication Date
JPH0830454A true JPH0830454A (ja) 1996-02-02
JP3732555B2 JP3732555B2 (ja) 2006-01-05

Family

ID=23028115

Family Applications (1)

Application Number Title Priority Date Filing Date
JP18505495A Expired - Fee Related JP3732555B2 (ja) 1994-06-30 1995-06-29 非逐次アクセスの実効待ち時間が短いパイプライン・キャッシュシステム

Country Status (4)

Country Link
US (1) US5561782A (ja)
JP (1) JP3732555B2 (ja)
KR (1) KR100252569B1 (ja)
TW (1) TW280880B (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6021471A (en) * 1994-11-15 2000-02-01 Advanced Micro Devices, Inc. Multiple level cache control system with address and data pipelines
US5860096A (en) * 1994-10-17 1999-01-12 Hewlett-Packard Company Multi-level instruction cache for a computer
US5740412A (en) * 1996-05-06 1998-04-14 International Business Machines Corporation Set-select multiplexer with an array built-in self-test feature
US5778435A (en) * 1996-05-30 1998-07-07 Lucent Technologies, Inc. History-based prefetch cache including a time queue
KR100255510B1 (ko) * 1997-05-09 2000-05-01 김영환 원포트램셀구조로이루어진캐시데이터램
US6199154B1 (en) * 1997-11-17 2001-03-06 Advanced Micro Devices, Inc. Selecting cache to fetch in multi-level cache system based on fetch address source and pre-fetching additional data to the cache for future access
KR100987832B1 (ko) 2004-08-17 2010-10-13 엔비디아 코포레이션 캐시 메모리에 연결된 메모리로의 다양한 액세스 유형의예측을 관리하는 시스템, 장치 및 방법
US7461211B2 (en) * 2004-08-17 2008-12-02 Nvidia Corporation System, apparatus and method for generating nonsequential predictions to access a memory
JP2008257508A (ja) * 2007-04-05 2008-10-23 Nec Electronics Corp キャッシュ制御方法およびキャッシュ装置並びにマイクロコンピュータ
US9317293B2 (en) * 2012-11-28 2016-04-19 Qualcomm Incorporated Establishing a branch target instruction cache (BTIC) entry for subroutine returns to reduce execution pipeline bubbles, and related systems, methods, and computer-readable media
US9021210B2 (en) 2013-02-12 2015-04-28 International Business Machines Corporation Cache prefetching based on non-sequential lagging cache affinity

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60168238A (ja) * 1984-02-10 1985-08-31 Hitachi Ltd パイプラインデータ処理装置
JPS6393038A (ja) * 1986-10-07 1988-04-23 Mitsubishi Electric Corp 計算機
US4926323A (en) * 1988-03-03 1990-05-15 Advanced Micro Devices, Inc. Streamlined instruction processor
US5136697A (en) * 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5283873A (en) * 1990-06-29 1994-02-01 Digital Equipment Corporation Next line prediction apparatus for a pipelined computed system
US5337415A (en) * 1992-12-04 1994-08-09 Hewlett-Packard Company Predecoding instructions for supercalar dependency indicating simultaneous execution for increased operating frequency

Also Published As

Publication number Publication date
TW280880B (ja) 1996-07-11
KR960002008A (ko) 1996-01-26
US5561782A (en) 1996-10-01
KR100252569B1 (ko) 2000-04-15
JP3732555B2 (ja) 2006-01-05

Similar Documents

Publication Publication Date Title
KR100277818B1 (ko) 컴퓨터 시스템의 데이터 처리 속도를 증가시키는 방법
US5499355A (en) Prefetching into a cache to minimize main memory access time and cache size in a computer system
US6226722B1 (en) Integrated level two cache and controller with multiple ports, L1 bypass and concurrent accessing
US5265236A (en) Method and apparatus for increasing the speed of memory access in a virtual memory system having fast page mode
US5027270A (en) Processor controlled interface with instruction streaming
US6526471B1 (en) Method and apparatus for a high-speed memory subsystem
US6185660B1 (en) Pending access queue for providing data to a target register during an intermediate pipeline phase after a computer cache miss
EP0795820B1 (en) Combined prefetch buffer and instructions cache memory system and method for providing instructions to a central processing unit utilizing said system.
US7536530B2 (en) Method and apparatus for determining a dynamic random access memory page management implementation
EP0457403A2 (en) Multilevel instruction cache, method for using said cache, method for compiling instructions for said cache and micro computer system using such a cache
JP3516963B2 (ja) メモリアクセス制御装置
JPH10232827A (ja) 先取りキャッシュ書戻しの方法と装置
EP1029280B1 (en) Cache memory operation
JPH10283203A (ja) マルチスレッド・プロセッサにおけるスレッド切換え待ち時間を減少させる方法および装置
JPH10124314A (ja) データプロセッサ及びデータ処理システム
CA2283044A1 (en) An apparatus for software initiated prefetch and method therefor
KR100386638B1 (ko) 외부메모리로의액세스요청을파이프라이닝하는마이크로프로세서
US20080140934A1 (en) Store-Through L2 Cache Mode
US6658534B1 (en) Mechanism to reduce instruction cache miss penalties and methods therefor
JP3732555B2 (ja) 非逐次アクセスの実効待ち時間が短いパイプライン・キャッシュシステム
JPH0836491A (ja) パイプライン・ストア命令を実行する装置及びその方法
US5367657A (en) Method and apparatus for efficient read prefetching of instruction code data in computer memory subsystems
US6654873B2 (en) Processor apparatus and integrated circuit employing prefetching and predecoding
US5835746A (en) Method and apparatus for fetching and issuing dual-word or multiple instructions in a data processing system
US5898815A (en) I/O bus interface recovery counter dependent upon minimum bus clocks to prevent overrun and ratio of execution core clock frequency to system bus clock frequency

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050124

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050201

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050502

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050510

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050728

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051013

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

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20091021

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20101021

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20101021

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20111021

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20121021

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20131021

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees