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
Links
- 230000004044 response Effects 0.000 claims abstract description 18
- 238000000034 method Methods 0.000 claims abstract description 12
- 230000015654 memory Effects 0.000 abstract description 34
- 238000004904 shortening Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 4
- 239000013256 coordination polymer Substances 0.000 description 2
- 101150078808 LAC11 gene Proteins 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003071 parasitic effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction 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
ける実効待ち時間を短縮するための方法及び装置を提供
することにある。 【構成】 ヒットしたアドレスに応答して少なくとも1
つのキャッシュ出力レコードを出力する多段式パイプラ
イン・キャッシュで、出力レコードを出さないLクロッ
クサイクルのアイドル期間後にレコードを出力するパイ
プライン・キャッシュと、分岐目標キャッシュ(BT
C)であってそこでヒットした非逐次レコードアドレス
に応答してアイドル期間中に少なくとも1つのレコード
を出力するためのBTCとを具備した非逐次レコード・
アクセス用の短い実効待ち時間を有するキャッシュを用
いる。
Description
用するデータ処理システムに関し、より詳しく、キャッ
シュの非逐次アクセスの実効待ち時間を短縮する技術に
関する。
令またはデータにプロセッサがアクセスするのに必要な
実効時間を短くするために様々な形で使用される。キャ
ッシュの理論は、大容量の比較的遅い主メモリと共に、
非常に速いメモリの小さい部分をキャッシュとして使用
することによって、コンピュータシステムはより高い処
理速度を達成することができるというものである。キャ
ッシュメモリは、動作上、データ処理装置と主メモリと
の間に置かれる。プロセッサは、主メモリにアクセスす
る必要があるとき、まずキャッシュメモリを検索して、
必要とする情報がキャッシュで利用可能可能かどうかを
判断する。データ及びまたは命令を主メモリから取り出
すときは、それらの情報は、主メモリの連続した記憶場
所から取り出される情報ブロックの一部(キャッシュラ
インとして知られる)としてキャッシュに格納される。
その後同じアドレスへのメモリアクセスを行うときは、
プロセッサは、主メモリよりむしろ高速キャッシュメモ
リとやり取りする。統計的には、情報を主メモリの特定
のブロックにアクセスして取り出したときは、次のアク
セスではその同じブロックから情報を呼び出すことにな
る確立が非常に高い。このメモリー参照の局所性という
性質があるために、平均メモリ・アクセスタイムは大幅
に短縮される。
主要な目標が2つのある。第1には、キャッシュ・サイ
ズは、キャッシュミスの場合のオフチップメモリ・アク
セスが最小限となるように、十分大きいことが望まし
い。第2には、プロセッサが高速化するにつれて、シス
テム全体の性能が遅くならないように命令及びデータを
プロセッサへリターンすることができるよう、キャッシ
ュを十分高速に設計することが特に重要になる。不都合
なことに、キャッシュメモリは、大きくなるほど、寄生
キャパシタンスの増加のために遅くなる。
従来多くの技術が用いられている。キャッシュをあるタ
イプのデータ専用にすることによって、キャッシュに要
求される相対的なサイズを小さくすることができる。例
えば、多くのプロセッサには、命令キャッシュとデータ
キャッシュが別個に組み込まれている。さらに、命令キ
ャッシュ用のアクセスのパターンは通常逐次式であるた
め、ヒット/ミス比が比較的高い。従って、命令を検索
するのにオフチップにアクセスする必要が少なくなり、
性能が高くなる。
が関与する。キャッシュの待ち時間は、キャッシュに対
するアドレスの呈示と要求されたデータのキャッシュか
らの受取りとの間の遅延時間(通常プロセッサ・サイク
ルで測定される)である。キャッシュのスループット
は、ある一定時間で実行することができるメモリアクセ
ス動作の回数の尺度である。待ち時間中は、キャッシュ
は、アドレスに応答してキャッシュからデータがリター
ンされないアイドル期間を持っていると見なすことがで
きる。アイドル期間の持続時間Lは、待ち時間より1サ
イクル短い。
り法を用いてスループットを高くすることができるとい
うことは、当技術分野においては周知である。カリフォ
ルニア州サンタクララのインテル社(Intel Co
rporation ofSanta Clara,
California)のIntel i960CATM
及びi960CFTMプロセッサは、パイプライン・メモ
リシステムをサポートするプロセッサの例である。特
に、命令キャッシュは、例えば2段パイプライン・キャ
ッシュとして実施することが可能である。パイプライン
の第1段においては、命令アドレス(命令ポインタ)が
キャッシュのタグアレイに呈示される。その結果は1サ
イクル間ラッチされ、第2段においては、ヒットの場合
はキャッシュの命令アレイラインにアクセスし、キャッ
シュミスの場合はメモリにアクセスすることによりメモ
リアクセスが続けられる。言い換えると、例えば命令ア
ドレスをサイクル1で呈示すると、キャッシュはサイク
ル2では待ち状態を取り、命令アドレスがキャッシュで
ヒットすれば、その命令がサイクル3でリターンされ
る。
間は2サイクルである。しかしながら、実効待ち時間
は、アイドル・サイクルの間に後続の逐次アドレスから
命令を先取りすることによって1サイクル短縮すること
ができる。サイクル2においては、命令シーケンサ(プ
ログラムカウンタ)がフェッチすべき次の命令を指示す
るための命令ポインタをインクリメントし、そのポイン
タ・アドレスをキャッシュに呈示する。その結果、サイ
クル1で呈示されたアドレスで見付かった命令がサイク
ル3でリターンされ、次の命令はサイクル4でリターン
される。このようにして、キャッシュのスループット
は、1サイクルおきに1命令から1サイクルごとに1命
令へ100パーセントの増加が達成されている。
ュの段数はシステムの要求に対応して広い範囲を取り得
るということは理解できよう。さらに、当業者ならば、
命令ポインタが各パイプライン段の間にインクリメント
される数は、プロセッサがスーパースカラ型(1サイク
ルにつき複数の命令を出す)であるかどうか、とりわけ
パイプライン段数によって変化するということは理解で
きよう。唯一必要なのは、前のサイクルでフェッチされ
た最後の命令の直後の命令を指示するように命令ポイン
タをインクリメントすることである。
次先取りする方法を用いると、命令スループットを比較
的高く保つことが可能である。しかしながら、非逐次メ
モリアクセスになると、パイプライン・キャッシュは性
能的な不利を被る。非逐次アクセスには、命令フローの
変化の中でも、とりわけ分岐コール(呼出し)及び割込
みなどがある。上に述べたように、命令シーケンサは、
命令ポインタを逐次インクリメントすることによって命
令を先取りさせる。しかしながら、分岐命令に遭遇する
と、命令フローは、その分岐命令によって指定された目
標アドレスへ転向されなければならない。プロセッサ
は、分岐命令を解読して分岐命令に遭遇したことを検知
し、命令フローを継続する分岐目標アドレスを決定する
ために多くのサイクル数を必要とする。この期間中に、
パイプライン・キャッシュは、分岐命令の直後の逐次命
令フロー中にある先取りされた命令をリターンする。分
岐が検出された後は、これらの先取りされた命令は、洗
い流す、すなわち実行せずにパイプラインから排出しな
ければならず、かつ命令フローを分岐目標アドレスへ転
向しなければならない。
シュに呈示されると、そのアドレスにある命令がパイプ
ライン・キャッシュの待ち時間に等しい期間後にリター
ンされる。典型的なコンピュータプログラムにおいて
は、おおよそ5命令毎に1つの割合で分岐命令が発生す
るので、この遅延は、命令スループットを大きく低下さ
せる。このスループットの低下は、各待ち時間サイクル
が1命令だけではなく多数の命令の遅延を表すスーパー
スカラ・マシンにおいては一層ひどくなる。
アクセスによって生じる実効待ち時間を短縮することに
よってパイプライン・キャッシュの性能を向上させるこ
とが要望されている。
発明は、非逐次メモリアクセスにおける実効待ち時間を
短縮するための方法及び装置を提供するものである。本
発明のキャッシュは、パイプライン・キャッシュでのレ
コード・アドレスのヒットに応答して少なくとも1つの
キャッシュ出力レコードが得られる多段式パイプライン
・キャッシュを有する。このパイプライン・キャッシュ
は、出力レコードを全く出さないLクロックサイクルの
アイドル期間後にレコードを出力する。本発明は、分岐
目標キャッシュ(BTC)でヒットした非逐次レコード
・アドレスに応答してアイドル期間中に少なくとも1つ
のレコードを出すBTCを設けることによってパイプラ
イン・キャッシュの実効待ち時間を短縮するものであ
る。このキャッシュは、さらに、アイドル期間に先行す
るゼロサイクルの間に非逐次レコード・アドレス(A)
及びルックアヘッド・アドレス(A+(L×W)、Wは
レコードが出されるイシュー幅を示す)をパイプライン
・キャッシュに供給するルックアヘッド回路を有する。
パイプライン・キャッシュは、それぞれ、パイプライン
・キャッシュでヒットした非逐次レコード・アドレス及
びルックアヘッド・アドレスに応答して、アイドル期間
の後にルックアヘッド・アドレスに応じてルックアヘッ
ド・レコード及び非逐次レコードを出力する。非逐次レ
コードがBTCでキャッシュミスになると、マルチプレ
クサが、パイプライン・キャッシュ中から出力として非
逐次レコードを選択する。非逐次アドレスがBTCでヒ
ットしすると、マルチプレクサはルックアヘッド・レコ
ードを出力として選択する。
タグヒット論理装置が十分に速い場合、非逐次アドレス
がBTCでヒットすると、ルックアヘッド回路はそのゼ
ロサイクル中にルックアヘッド・アドレスのみをパイプ
ライン・キャッシュに供給する。その場合、パイプライ
ン・キャッシュは、パイプライン・キャッシュでヒット
したルックアヘッド・アドレスに応答して、アイドル期
間の後にルックアヘッド・アドレスからルックアヘッド
・レコードを出力する。一方、非逐次アドレスがBTC
でキャッシュミスを起こすと、ルックアヘッド回路は、
そのゼロサイクル中に非逐次レコード・アドレスをパイ
プライン・キャッシュに供給する。パイプライン・キャ
ッシュでヒットした非逐次アドレスに応答して、パイプ
ライン・キャッシュは、アイドル期間の後にで非逐次レ
コードを出力する。
ドレスがBTCでヒットすると、ルックアヘッド回路
は、そのゼロサイクルの後に、ルックアヘッド・アドレ
スに続いて少なくとも1つの逐次レコード・アドレスを
パイプライン・キャッシュに供給する。しかしながら、
BTCで非逐次アドレスのキャッシュミスが起こると、
ルックアヘッド回路は、そのゼロサイクルの後に、非逐
次アドレスに続いて少なくとも1つの逐次レコードアド
レスをパイプライン・キャッシュに供給する。ルックア
ヘッド回路によって供給された逐次レコード・アドレス
のパイプライン・キャッシュでのヒットに応答して、パ
イプライン・キャッシュは、少なくとも1つのレコード
を供給する。
BTCは、アイドル期間の第1のサイクル中に、非逐次
レコード・アドレスによって指定された非逐次レコード
を出力する。アイドル期間の残りのサイクルにおいて
は、BTCは、非逐次レコード・アドレスに続く逐次レ
コード・アドレスから逐次レコードを出力する。イシュ
ー幅Wを有するスーパースカラ・システムの場合は、B
TCは、アイドル期間の各サイクル中にW個のレコード
を出力する。
シュは、前のサイクル中にBTCによって出された最後
のレコードのレコード・アドレスに続く逐次レコード・
アドレスから少なくとも1つの逐次レコードを出力す
る。しかしながら、BTCがアイドル期間中にレコード
を出力しないと、パイプライン・キャッシュは、パイプ
ライン・キャッシュでヒットした非逐次レコード・アド
レスに応答して、アイドル期間の後に非逐次レコードを
出力する。
ードは命令を表すレコードとする。非逐次レコード・ア
ドレスは、例えば、分岐命令の目標アドレス、割込みハ
ンドラの開始アドレス、あるいはサブルーチンのコール
または戻りアドレス(復帰アドレス)である。
しつつ詳細に説明する。
効待ち時間が短いパイプライン・キャッシュシステムが
得られる。以下の説明においては、本発明の完全な理解
を図るために、詳細な事項が特定的に記載してある。し
かしながら、本発明がこれらの詳細な事項の記載なしで
実施可能なことは当業者にとって明白であろう。また、
その他の場合においては、前記シーケンサ、その他の周
知の素子、装置、プロセス・ステップ等は、本発明が不
明確になるのを避けるため、詳細な記載は省略した。
ュのアーキテクチャを示すブロック図である。プロセッ
サチップ100は、CPUコア102及び本発明のオン
チップ命令キャッシュ104を有する。
8を介してメモリデバイス106に接続されている。当
業者であれば、発明の説明が不必要に複雑になるのを避
けるために、図1ではバスコントローラやデータキャッ
シュのような多数の接続や構成部品が省略されていると
いうことは理解できよう。命令キャッシュ104は、ル
ックアヘッド制御回路110、分岐目標命令キャッシュ
112、パイプライン・キャッシュ114及びマルチプ
レクサ(MUX)116を有する。パイプライン・キャ
ッシュ114は、CPUコア102によって使用される
レコードの一種である命令を記憶する。このキャッシュ
は何段にでもパイプライン化することができる。分岐目
標命令キャッシュ(BTIC)112は、分岐、コー
ル、リターン及びその他の非逐次アクセスのために専用
に用いられる小さな高速キャッシュである。このBTI
Cは、これらの1つの動作から生じるアドレスがプロセ
ッサコア102によって送られたときだけアクティブに
なる。このBTICの目的は、非逐次アクセスのために
パイプライン・キャッシュに生じる待ち時間を埋めるこ
とにある。
は、パイプライン・キャッシュ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
コア102が必要とする命令をアイドル期間中に出力す
る。アイドル期間に続いて、パイプライン・キャッシュ
114は後続の命令を出す(それらがパイプライン・キ
ャッシュ114中にある場合)。一方、BTIC112
でキャッシュミスが起こると、BTIC112によって
は命令が全く与えられず、プロセッサはそのアイドル期
間にわたって立ち往生(機能停止)する。アイドル期間
が終わった後、分岐目標アドレスの命令がパイプライン
・キャッシュ114によってCPUコア102に供給さ
れ、BTIC112に格納される。これはそれらの命令
がパイプライン・キャッシュ114に格納されている場
合である。一方、命令がパイプライン・キャッシュ11
4にない場合は、それらの命令は外部メモリ106から
CPUコア102に供給され、BTIC112及びパイ
プライン・キャッシュ114に格納される。本発明は、
分岐目標アドレスに関連して説明するが、当業者であれ
ば、本発明の動作はサブルーチンコール及び戻りアドレ
ス、割込みハンドラ・アドレス及びその他の非逐次アク
セス・アドレスにも同様に適用であるということは理解
できよう。さらに、本発明は、命令キャッシュばかりで
なく、あらゆる形の情報レコードを保持するキャッシュ
に適用することができる。
図2及び3のタイミング図を参照しつつさらに詳細に説
明する。図2及び3に例示するシステムにおいては、こ
の実施例は、スカラ・プロセッサにおける2段パイプラ
イン・キャッシュであると仮定する(イシュー幅は1に
等しい)。図2に示すように、CPUコア102とキャ
ッシュ104の間では多数の信号がやり取りされる。分
岐信号(能動ハイ)は、CPUコア102が非逐次アク
セスを要求していることを示す。また、CPUコア10
2は、非逐次アクセス、例えば分岐の目標アドレスAを
ルックアヘッド制御装置110及び分岐目標命令キャッ
シュ112に与える。CPU_READY信号は、それ
がハイのとき、CPUが情報を処理することができる状
態にあるということを示し、逆に、CPU_READY
信号がローに落ちたときは、CPUが機能停止しなけれ
ばならないということを示す。
サイクル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のアイドル期間を埋め
る。
は、命令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のルックアヘッド・アドレスを
出し続ける。
ッシュミスが起こった場合、BTIC112は、サイク
ル1にアドレスAからの命令を入れることができない。
その代りに、2サイクルの待ち時間の後、MUX116
は、パイプライン・キャッシュ114の出力から命令I
[A]を選択する(パイプライン・キャッシュでヒット
した場合)。パイプライン・キャッシュ114が命令を
リターンするとき、その命令はCPUコア102に供給
されるばかりでなく、以後におけるメモリアクセスのた
めにBTIC112にも格納される。また、LAC11
0は、サイクル0でキャッシュミスが検出されると、こ
れに応答して、サイクル1でルックアヘッド・アドレス
A+1を繰り返し、その結果、パイプライン・キャッシ
ュ114はアドレスA+1の命令をリターンする(パイ
プライン・キャッシュ114でヒットが起こった場
合)。また、図3には、図2と同様の機能停止の効果も
示されている。
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信号がアサートされる(立ち上
がる)前に論理ハイレベルに達するようにすることによ
り表すことができる。
た場合は、パイプライン・キャッシュ114がBTIC
112の代りにサイクル2でI[A]を出力する動作を
受け持つことになるから、LAC110は分岐目標アド
レスAをパイプライン・キャッシュ114に呈示しさえ
すればよいということが分かる。以後のサイクルでは、
非逐次アクセスがなければ、通常の逐次動作が続けられ
る。
ュ114は何らかのアドレスが呈示されたとき、これに
応答して生じたヒットを記録するものと仮定した。もち
ろん、アドレスがBTIC112でもパイプライン・キ
ャッシュ114でもキャッシュミスになった場合は、プ
ロセッサは所望の命令が主メモリ106からリターンさ
れるまで不定数の待ち状態を経る必要がある。その命令
は、リターンされると同時にパイプライン・キャッシュ
114にもBTIC112にも格納される。
で実施された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ミス(キャッシュミス)の場合
は分岐目標アドレスのみを出力するだけでよい。
クルであり、このことは、パイプライン・キャッシュ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の出力を選択する。
ャッシュミスになると、4サイクル待ち時間のために、
そのアドレスの命令は、サイクル4まではパイプライン
・キャッシュ114によってリターンされない(パイプ
ライン・キャッシュでヒットした場合)。
処理時間を埋めるための非逐次アクセス専用に用いられ
る小さな高速キャッシュを使用する。この性能強化は、
各アイドル・サイクルで、1つの命令だけではなく、多
くの命令を出す機会が失われるスーパースカラ・システ
ムにおいてとりわけ有用である。そのようなアイドル時
間によって通常生じる性能の低下は、1サイクルより長
い待ち時間を有する多段式のパイプライン・キャッシュ
を使用する場合にさらに顕著になる。従って、このよう
なアイドル時間を全て埋めることができる本発明は、従
来技術に対して著しい改善効果をもたらすものである。
明したが、当業者にとって、発明の要旨及び範囲を逸脱
することなく、様々な修正態様及び変更態様が可能なこ
とは明白であろう。特に、上記説明から、本発明は任意
の範囲のイシュー幅を有するスカラのプロセッサでもス
ーパースカラでも動作する任意の段数を有するパイプラ
イン・キャッシュに適用可能であるということは明らか
であろう。
によって生じる実効待ち時間を短縮することによってパ
イプライン・キャッシュの性能を向上させることができ
る。
タシステムを示すブロック図である。
イプライン・キャッシュに適用した場合に、非逐次レコ
ード・アクセスが分岐目標キャッシュでヒットした場合
の一例の動作を説明するためのタイミング図である。
イプライン・キャッシュに適用した場合に、非逐次レコ
ード・アクセスが分岐目標キャッシュでキャッシュミス
を起こした場合の一例の動作を説明するためのタイミン
グ図である。
イプライン・キャッシュに適用した場合に、非逐次レコ
ード・アクセスが分岐目標キャッシュでヒットした場合
の動作を説明するためのタイミング図である。
イプライン・キャッシュに適用した場合に、非逐次レコ
ード・アクセスが分岐目標キャッシュでキャッシュミス
を起こした場合の一例の動作を説明するためのタイミン
グ図である。
4…命令キャッシュ、106…メモリデバイス、108
…メモリバス、110…ルックアヘッド制御回路、11
2…分岐目標命令キャッシュ、114…パイプライン・
キャッシュ、116…マルチプレクサ。
Claims (7)
- 【請求項1】 ヒットしたレコード・アドレスに応答し
て少なくとも1つのキャッシュ出力レコードを出力する
ものであって、レコードを出力しないLクロックサイク
ルのアイドル期間の後に前記少なくとも1つのキャッシ
ュ出力レコードを出力する多段式パイプライン・キャッ
シュと、逐次レコード・アドレスを前記パイプライン・
キャッシュに供給するシーケンサと、非逐次レコードの
非逐次レコード・アドレスを出力するためのプロセッサ
コアと、を有する情報を処理するためのコンピュータシ
ステムでそのシステムにおける非逐次レコード・アクセ
スのための実効待ち時間を短縮するための方法におい
て、 アイドル期間中に、分岐目標キャッシュ(BTC)でヒ
ットした前記非逐次レコード・アドレスに応答してその
BTCから少なくとも1つのレコードを出力するステッ
プ、を具備した方法。 - 【請求項2】 アイドル期間の第1のサイクル中に、B
TCが上記非逐次レコード・アドレスによって指定され
る非逐次レコードを出力するステップと、 アイドル期間の残りのサイクル中に、BTCが前記非逐
次レコード・アドレスに引き続く逐次レコード・アドレ
スから逐次レコードを出力するステップと、を具備した
請求項1記載の方法。 - 【請求項3】 上記コンピュータシステムがスーパース
カラ・システムであって、Wがそのシステムのイシュー
幅であり、上記少なくとも1つのレコードを出力するス
テップが、BTCが上記アイドル期間の各サイクル中に
W個のレコードを同時に出力するステップよりなる請求
項1記載の方法。 - 【請求項4】 上記コンピュータシステムがスーパース
カラ・システムであり、Wがシステムのイシュー幅であ
り、上記少なくとも1つのレコードを出力するステップ
が、 上記アイドル期間の第1のサイクル中にBTCが上記非
逐次レコード・アドレスによって指定される非逐次レコ
ードを出力するステップと、 上記アイドル期間の第1のサイクル中にBTCが上記非
逐次レコード・アドレスに続いて逐次レコード・アドレ
スからW−1個の逐次レコードを同時に出力するステッ
プと、 上記アイドル期間の残りのサイクル中に、BTCが前の
サイクルに出力された最後のレコードのレコード・アド
レスの次の逐次レコード・アドレスから各サイクル中に
W個の逐次レコードを出力するステップとを具備する請
求項1の方法。 - 【請求項5】 さらに、上記アイドル期間の後に、上記
パイプライン・キャッシュが、前のサイクルにおいてB
TCによりアイドル期間中に出力された最後のレコード
のレコード・アドレスに続く逐次レコード・アドレスか
ら少なくとも1つの逐次レコードを出力するステップを
具備した請求項1記載の方法。 - 【請求項6】 情報を処理するためのコンピュータシス
テムにおける非逐次レコード・アクセス用の短い実効待
ち時間を有するキャッシュにおいて、 ヒットしたレコード・アドレスに応答して少なくとも1
つのキャッシュ出力レコードを出力するものであって、
レコードを出力しないクロックサイクルのアイドル期間
後に出力する多段式パイプライン・キャッシュと、 ヒットした非逐次レコードアドレスに応答してアイドル
期間中に少なくとも1つのレコードを出力する分岐目標
キャッシュ(BTC)と、を具備したキャッシュ。 - 【請求項7】 非逐次レコード・アクセスのための短い
実効待ち時間を有するコンピュータシステムにおいて、 情報を処理するためのプロセッサと、 上記プロセッサに接続されたメモリデバイスと、 上記プロセッサに接続されたキャッシュで、 ヒットしたレコード・アドレスに応答して少なくとも1
つのキャッシュ出力レコードを出力するものであって、
レコードを出力しないLクロックサイクルのアイドル期
間後に出力する多段式パイプライン・キャッシュと、 分岐目標キャッシュ(BTC)であって、そこでヒット
した非逐次レコードアドレスに応答してアイドル期間中
に少なくとも1つのレコードを出力するBTCと、を有
するキャッシュと、を具備したコンピュータシステム。
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)
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)
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 |
-
1994
- 1994-06-30 US US08/269,650 patent/US5561782A/en not_active Expired - Fee Related
- 1994-11-23 TW TW083110903A patent/TW280880B/zh active
-
1995
- 1995-04-14 KR KR1019950008810A patent/KR100252569B1/ko active IP Right Grant
- 1995-06-29 JP JP18505495A patent/JP3732555B2/ja not_active Expired - Fee Related
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 |