JPH1091437A - 命令とデータの先取りを最適化するためのハードウェア機構 - Google Patents

命令とデータの先取りを最適化するためのハードウェア機構

Info

Publication number
JPH1091437A
JPH1091437A JP9125896A JP12589697A JPH1091437A JP H1091437 A JPH1091437 A JP H1091437A JP 9125896 A JP9125896 A JP 9125896A JP 12589697 A JP12589697 A JP 12589697A JP H1091437 A JPH1091437 A JP H1091437A
Authority
JP
Japan
Prior art keywords
information
prefetch
instruction
cache
processor
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
JP9125896A
Other languages
English (en)
Other versions
JP3718319B2 (ja
Inventor
David R Emberson
デイヴィッド・アール・エンバーソン
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems 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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH1091437A publication Critical patent/JPH1091437A/ja
Application granted granted Critical
Publication of JP3718319B2 publication Critical patent/JP3718319B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Abstract

(57)【要約】 【課題】 スラッシングを回避すること。 【手段】 上書きされた行38は先取り犠牲バッファ5
4に記憶される。CPU14は、キャッシュ・ミスを経
験すると、バッファ54をアクセスし、先取り犠牲情報
に関する情報を検索する。先取り実行ユニット52は追
加のフィールドの値を修正し、修正された拡張先取り命
令を先取り命令バッファ50に記憶する。CPU14
は、犠牲にされた行38に対する先取り命令を次回に実
行するとき、修正された拡張先取り命令の新たな値が先
取り情報の記憶場所及びそのサイズ・インクリメントを
命じる。拡張先取り命令を連続的に修正することで、ス
ラッシングを除去する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、キャッシュ・メ
モリに関するもので、特に、キャッシュ・メモリへ先取
りされたデータ又は命令によって生じるスラッシング
(thrashing)を回避するためのハードウェア
機構に関する。
【0002】
【従来の技術】コンピュータ産業において、開発者は前
の世代の製品よりも動作速度が速いコンピュータを設計
するよう働く。処理チップの速度が上がるにつれ、プロ
セッサの速度と主記憶装置へのアクセス速度との間の格
差も大きくなる。この格差は記憶待ち(memory
latency)と呼ばれる。つまり、命令又はデータ
を主記憶装置から検索するよりも高速で、プロセッサは
命令を実行することができる。記憶待ちの結果、主記憶
装置から移送されるべきデータ又は命令を待つ間、プロ
セッサはアイドル状態にある。したがって、高速プロセ
ッサの効率はデッド時間によって大幅に低減される。
【0003】次世代のCPUは3ナノ秒のオーダーの極
めて速いクロック速度で動作することになろう。しか
し、主記憶装置のクロック速度は50ナノ秒までは高ま
ると予測されるにすぎない。つまり、次世代コンピュー
タの記憶待ちは15:1という比よりも大きくなると予
測される。
【0004】記憶待ちを回避するために、使用頻度の高
いデータ又は命令(情報)は、主記憶装置よりもプロセ
ッサの近くにあるキャッシュ・メモリに記憶される。開
発者は、プログラムの実行期間に直ぐに必要とされると
予測される情報を主記憶装置から検索するために、命令
ストリームのコードに含まれる(nestled)先取
り命令を使うことが多い。先取り情報はキャッシュに記
憶されてプロセッサに使用される。
【0005】しかしながら、キャッシュに記憶された情
報は、その後に検索される他の情報によって上書きされ
ることが多い。上書きされた情報へのアクセスが必要な
とき、プロセッサはキャッシュ・ミス(cache m
iss)を経験する。上書きされた情報は主記憶装置か
ら再び検索されなければならず、プログラムの実行速度
を下げる。この速度低下はキャッシュ・ミス・ペナルテ
ィと呼ばれる。
【0006】キャッシュ・ミスを説明すると、図1は主
記憶装置10がキャッシュ・セット12及びCPU(プ
ロセッサ)14と通信する。情報を記憶する行1400
がCPUによって要求され、主記憶装置10から検索さ
れ、キャッシュ・セット12のオフセット400に記憶
される。その後、どこかの時点に、CPU14は主記憶
装置10から行2400を検索し、それをキャッシュ・
セット12のオフセット400にマッピングする。つま
り、行2400は以前に記憶されていた行1400を上
書きしたことになる。CPU14は、行1400を探索
するとき、行1400を発見しない。CPUは主記憶装
置10から行1400を再び検索しなければならない。
したがって、ミス・ペナルティは、キャッシュが以前に
記憶した行を含んでいなかったが故に引き起こされる。
【0007】上記の状況においては、ミス・ペナルティ
が生じる毎に、プログラムの実行速度は下がる。行14
00及び行2400を必要とする頻度が高いとき、ミス
・ペナルティは特に面倒である。反復される犠牲を伴う
「ピンポン」的な状態は、スラッシング(thrash
ing)として知られる極めて望ましくない状態を生じ
る。
【0008】図1に戻ると、スラッシングを説明するた
めに、CPU14は2つの行1400及び2400を規
則的に必要とするとする。先取り命令が実行コードの部
分である場合、高価な処理帯域幅は、先取り命令を実行
するので有効には使用されないが、こうしたことはキャ
ッシュ・ミスがなければ無視されたであろう。複合ミス
・ペナルティがCPUのパフォーマンスを支配すると
き、高速マイクロプロセッサの能力は最適化されない
し、実現されることもない。
【0009】スラッシングの問題を除去しようとする努
力の中で、多くの異なる形式のキャッシュ構造が紹介さ
れた。例えば、1つの広く普及した解は、図1の1組
(1セット)のキャッシュの代わりに、「複数組(複数
セット)のキャッシュ」を使用することである。図2は
2組のキャッシュを示している。キャッシュ・セット1
2とキャッシュ・セット16とは情報を記憶するオフセ
ット位置400を有する。つまり、行1400及び行2
400はキャッシュに同時に記憶され、これらの行のい
ずれか一方に対する交互の要求はスラッシングを起こさ
ない。複数組のキャッシュの実際的な利益は、実行され
るプログラムに依存する。しかし、一組のキャッシュよ
りも複数組のキャッシュの方が進歩していても、ミス・
ペナルティに対するパフォーマンス・コストは、CPU
の処理速度が上がるにつれて上昇し続ける。
【0010】データと命令に対して別々のキャッシュが
存在するハーバード(Harvard)アーキテクチャ
においては、スラッシングはデータが命令と拮抗する
(thrash)程度以上に低減される。
【0011】時間に先立ってCPUの要求を予測しよう
とする種々の機構が存在する。例えば、ハーバード・ア
ーキテクチャのデータ・キャッシュを先取りするデータ
先取り命令を実行する能力が、SPARC(R)バージ
ョン9アーキテクチャに組み込まれている。しかし、先
取り命令は不変であって固定サイズであり、他の融通の
きく特性を提供しない。
【0012】1995年7月7日に出願された「先取り
命令を用いたハーバード・アーキテクチャ・キャッシュ
の同調可能なソフトウェア制御」という名称の米国特許
出願第08/499312号、及び、同日に出願された
「先取り制御と協働するメモリ管理ユニット」という名
称の米国特許出願第08/499364号は、スラッシ
ングを最小化するためのアーキテクチャ及びソフトウェ
ア先取り制御を開示している。これらの米国特許出願の
記載内容は本明細書に援用される。
【0013】
【発明が解決しようとする課題】典型的な命令ストリー
ムの先取り命令は不変で固定サイズの先取りを提供する
にすぎないので、スラッシングを回避するために先取り
命令の特性を操作するためのハードウェア機構が望まれ
ている。
【0014】
【課題を解決するための手段】この発明は、スラッシン
グを最小にするためのハードウェア構成を含む。この発
明によると、コンピュータは、主記憶装置、プロセッサ
及びキャッシュを有するのに加えて、先取り命令バッフ
ァ及びそれに関連する先取り実行ユニット、先取り犠牲
バッファを有する。
【0015】典型的には、先取り命令は、コンピュータ
上で実行されているアプリケーションの命令ストリーム
に埋め込まれている。通常、こうした先取り命令はアド
レス・フィールドを有する。先取り命令の実行中には、
この発明の先取り実行ユニットは、拡張(augmen
ted)先取り命令を生成するために、初期デフォルト
設定を有する追加のフィールドを発生する。例えば、こ
の追加のフィールドはキャッシュ・セット番号、サイズ
・インクリメント及び/又は情報形式(データ又は命
令)に対するものである。
【0016】先取り実行ユニットは、特定のキャッシュ
・ミスの履歴のアカウンティング(accountin
g)に依存することによって先取り処理を最適化するよ
う動作する。キャッシュ・ミスを記録するために、犠牲
にされた(上書きされた)行及び/又は先取りタグが先
取り犠牲バッファに記憶される。プロセッサがキャッシ
ュ・ミスを経験すると、プロセッサは先取り犠牲バッフ
ァをアクセスし、先取り犠牲情報に関する情報を検索す
る。そこで、先取り実行ユニットは追加のフィールドの
値を修正し、修正された拡張先取り命令を先取り命令バ
ッファに記憶する。次回にプロセッサが犠牲にされた行
に対する先取り命令を実行するとき、修正された拡張先
取り命令はどこに先取り命令が記憶されており、どのサ
イズ・インクリメントを有するかを指示する。拡張先取
り命令を連続的に修正することにより、結局はスラッシ
ングを除去することができる。
【0017】
【発明の実施の形態】典型的には、プログラマは高水準
プログラミング言語でソフトウェアをプログラムする。
図3において、高水準プログラム20は、先取り命令2
4を実行可能コードに挿入するためにコンパイラ22に
よって動作される。アドレス・フィールド<Adr>2
8を有する先取り命令を含む機械コード26はプロセッ
サによって処理される。アドレス・フィールドに含まれ
る主記憶装置10での情報の記憶場所は静的である。
【0018】この発明は、セット番号やサイズ・インク
リメントのような可変の特性を持つように、静的な先取
り命令を拡張するもので、以下、その実施の形態をハー
ドウェア要素の組み合わせとして説明する。ソフトウェ
ア要素又はアーキテクチャ要素でも、この発明を実施す
ることは可能である。
【0019】図4において、CPU14は、アドレス・
フィールドを有する先取り命令を含む命令ストリームを
受け取る。先取り命令を受け取ると、CPUは当該特定
の命令を先取り命令バッファ50において探索する。そ
の特定の先取り命令が先取り命令バッファ50にないと
き、先取り実行ユニット52は可変のフィールドを有す
るように当該先取り命令を拡張する。典型的には、先取
り実行ユニット52はCPUの一部分であり、CPUの
実行ユニットの1つである。図4においては、説明のた
めに先取り実行ユニット52は別個に図示されている。
例えば、2進のフィールドは PREFETCH<Addr Translation Info><I/D Bi
t><Set ♯><Size> のように構成される。
【0020】先取り命令は、拡張されると、初期フィー
ルド値設定と共に先取り命令バッファ50に記憶され
る。これらのフィールドに対する初期値は先取り実行ユ
ニット52によって発生される。I/Dビットの初期設
定は情報がデータであるか命令であるかに依存する。図
4においては、データ・キャッシュ30は複数のセット
32、34、36を有する。命令キャッシュ40は複数
のセット42、44、46を有する。
【0021】例えば、キャッシュ・セット番号フィール
ドに対する初期設定は、以前に記憶された行を上書きし
ないように、一連の先取り命令に対して逐次的である。
サイズ・フィールドの設定は実行されているプログラム
の形式、例えば、データ・フィールドが大きいか小さい
かに依存する。
【0022】初期フィールド設定は、プロセッサ上で実
行されている特定のアプリケーションに基づいて、スラ
ッシングを回避するための能力を最適化するよう調整さ
れる。しかし、キャッシュ・ミスが存在すると、拡張先
取り命令の設定は修正されなければならず、これについ
ては後述する。
【0023】キャッシュに記憶されたラインを追い出す
先取り命令が実行されると、犠牲となる行38(D−セ
ットN36の行400−600)は先取り犠牲バッファ
54に記憶される。CPU即ちプロセッサ14によるプ
ログラムの実行中に、犠牲にされた行38に関するキャ
ッシュ・ミスが次回に存在すると、プロセッサは犠牲に
された行に関する情報を先取り犠牲バッファから検索す
る。例えば、実際の犠牲にされた行は、先取りタグと共
に先取り犠牲バッファに記憶される。代わりに、先取り
タグのみを記憶するようにしてもよい。先取りタグは先
取り命令バッファ50に記憶された拡張先取り命令をマ
ッピングするものである。そこで、先取り実行ユニット
52はフィールド値を変更することによって拡張先取り
命令を修正する。
【0024】先取り命令バッファ50においては、拡張
先取り命令に対して行われた修正のレコードが維持され
る。例えば、セット番号のレコードが維持されるので、
次回の修正においてセット・カウンタはセット番号フィ
ールドに含まれる値にインクリメントを加えることがで
きる。
【0025】次に、この発明の高水準のフローチャート
を示す図5について説明する。先取り命令を含む命令ス
トリーム26(図3参照)がCPU14によって処理さ
れる。先取り命令28が命令ストリーム26の一部分で
あるとき、先取り実行ユニット52は、判定ステップ6
0において、当該先取り命令に対するエントリが先取り
命令バッファ50に既に存在するかどうかを決定する。
既に存在するならば、実行中のプログラムはステップ6
2において実行される。当該プログラム命令に対するエ
ントリがプログラム命令バッファ50に存在しないと
き、ステップ64において、先取り実行ユニット52は
先取り命令を追加のフィールドで拡張する。前述のとお
り、フィールドが追加され、先取り命令はデータ/命令
フィールド、セット番号フィールド及びサイズ・フィー
ルドを含むことになる。
【0026】新たなフィールドには初期値が割り当てら
れる。割り当てられる初期セット番号は、以前に処理さ
れた先取り命令に割り当てられたセット番号に依存す
る。例えば、最初に処理された先取り命令のセット番号
フィールドにセット番号D−セット1の値が割り当てら
れているとすると、次に処理される先取り命令のセット
番号フィールドにはセット番号D−セット2の値が割り
当てられる。サイズ・インクリメントの初期値はアドレ
ス・フィールドによって与えられる値と等価である。
【0027】新たなフィールドに初期値が割り当てられ
ると、拡張先取り命令はステップ66において先取り命
令バッファ50に記憶される。先取り命令を拡張するス
テップが行われている期間又は行われた後、プログラム
はステップ62において実行される。
【0028】ステップ62におけるプログラムの実行中
に、ステップ68でキャッシュ・ミスがないと判定され
ると、ステップ62でのプログラムの実行が継続され
る。しかし、キャッシュ・ミスが存在すると、それに関
連する拡張先取り命令を調整してスラッシングを回避し
なければならない。この場合、ステップ70において、
プロセッサは、犠牲にされたデータ又は命令そのもの及
び/又は先取りタグを先取り犠牲バッファ54から検索
し、最初にデータ・キャッシュ30又は命令キャッシュ
40へのデータ又は命令の記憶の原因となった先取り命
令を識別する。ステップ72において、実際の拡張先取
り命令が検索され、前述のようにフィールドが変更され
る。
【0029】ステップ74において修正の処理が行われ
る。修正されると、拡張先取り命令はステップ66にお
いて先取り命令バッファ50に記憶される。したがっ
て、次回に命令ストリームが先取り命令を含むとき、修
正された拡張先取り命令が先取り命令バッファ50から
アクセスされて実行される。修正を最適化することによ
り、拡張先取り命令の反復修正は不要なスラッシングと
いう状況を最終的に回避する。
【0030】図6は、図5に示すフローチャートに追加
されるステップを示すフローチャートである。前述のと
おり、ステップ76でプログラムが実行を開始すると、
CPU14はステップ78において命令を主記憶装置1
0から要求する。ステップ80において、命令が先取り
命令でないと判定されれば、該命令はステップ82にお
いて単に実行されるだけである。ステップ84において
キャッシュ・ミスが発生していないと判定されれば、プ
ログラムは進行し、CPU14はステップ78において
命令を再び主記憶装置から要求する。しかし、ステップ
84においてキャッシュ・ミスが発生していると判定さ
れれば、失われたキャッシュ行は先取り犠牲バッファ5
4に存在するかどうかが質問される。失われたキャッシ
ュ行が先取り犠牲バッファ54に存在しないとステップ
86において判定されると、処理はステップ78で再開
されなければならない。つまり、データ又は命令を主記
憶装置から検索しなければならない。
【0031】失われたキャッシュ行が先取り犠牲バッフ
ァ54に存在するならば、次のステップは、失われたキ
ャッシュ行の記憶の原因となった先取り命令のセット番
号が以前に修正されたかどうかをステップ88において
質問することである。この質問に対する回答は、セット
番号がインクリメントされるかどうか、及び、主記憶装
置から検索されたデータ又は命令のサイズを縮小(又
は、状況に応じてはインクリメント)すべきかどうかを
決定する。セット番号が修正されたかどうかを指示する
ビットが先取り命令バッファに存在する。該ビットはそ
れぞれの先取り命令毎に最初はゼロにセットされる。先
取り命令が修正されると、該ビットは1にセットされ
る。したがって、特定の先取り命令が修正されたことの
レコードが先取り命令バッファに存在することになる。
その代わりに、修正レコードは、キャッシュ・セットの
数までカウントアップしてから何個のセットの修正が行
われたかの指示を与える複数ビットであってもよい。
【0032】特定の先取り命令が修正され、利用可能な
それぞれのセット番号が使用された(ステップ74a)
がキャッシュ・ミスが発生している場合には、サイズ・
フィールドの値が修正される(ステップ74b)。即
ち、それぞれのセット番号が使用された場合、別の犠牲
情報を作るために、サイズ・フィールドが修正される。
拡張先取り命令のフィールドの値を修正することによっ
て、次回に先取り命令が実行されるとき、先取り命令は
犠牲にされたキャッシュ行を上書きしない。こうしてス
ラッシングが回避される。最後に、ステップ90におい
て、犠牲にされた行が先取り犠牲バッファからフラッシ
ュ(flush)される。この行は犠牲情報ではないか
らである。
【0033】図6の左側においては、ステップ80で命
令が先取り命令であると判定された場合、ステップ60
で、CPUは先取り命令バッファ50において先取り命
令を探索する。ステップ60において先取り命令が先取
り命令バッファに存在しないと判定されたとき、ステッ
プ64において、先取り命令バッファでのエントリが作
られる。先取り命令はステップ92において実行され
る。先取り命令によって犠牲にされたキャッシュ行はス
テップ94において先取り犠牲バッファ54に置かれ
る。その代わりに、先取り命令が主記憶装置から検索さ
れ、当該先取り命令に対応するエントリが先取り命令バ
ッファ50にある場合(ステップ60)、セット番号と
サイズとの値が先取り命令バッファ50から検索され、
これらの値は、ステップ96において、(デフォルト値
を挿入する代わりに)拡張先取り命令のセット番号とサ
イズのフィールドに挿入される。この修正された先取り
命令はステップ92において実行される。当該先取り命
令がキャッシュ行を犠牲にするならば、犠牲にされた行
は先取り犠牲バッファ54に記憶される。
【図面の簡単な説明】
【図1】公知の一組のキャッシュを示す。
【図2】公知の複数組のキャッシュを示す。
【図3】高水準プログラムと命令を挿入するコンパイラ
と該命令を含む機械コードとの間の関係を示す。
【図4】この発明のプログラム命令が実行されるハーバ
ード・アーキテクチャ・システムを示す。
【図5】この発明を実行するためのステップを示すフロ
ーチャートである。
【図6】この発明を実行するための追加のステップを示
すフローチャートである。
【符号の説明】
10:主記憶装置、 12、16:キャッシュ・セッ
ト、14:CPU、20:プログラム、 22:コンパ
イラ、 24:先取り命令、26:機械コード、 3
0:データ・キャッシュ、 40:命令キャッシュ、5
0:先取り命令バッファ、 52:先取り実行ユニッ
ト、54:先取り犠牲バッファ
───────────────────────────────────────────────────── フロントページの続き (71)出願人 597004720 2550 Garcia Avenue,MS PAL1−521,Mountain V iew,California 94043− 1100,United States of America (72)発明者 デイヴィッド・アール・エンバーソン アメリカ合衆国カリフォルニア州95060, サンタ・クルズ,ムーア・クリーク・ロー ド 300

Claims (30)

    【特許請求の範囲】
  1. 【請求項1】 主記憶装置と、該主記憶装置と通信し且
    つ先取り命令を含む命令ストリームを受け取って実行す
    るよう構成されたプロセッサと、該プロセッサと通信す
    るキャッシュとを有し、該キャッシュが、可変のインク
    リメント情報を収容するよう構成されたキャッシュ・セ
    ット番号によって識別可能な複数のキャッシュ・セット
    を含むコンピュータ装置であって、 前記プロセッサと通信し、前記先取り命令にフィールド
    を提供し、該フィールドに初期デフォルト値を提供して
    拡張先取り命令を発生するための先取り実行ユニット
    と、 前記先取り実行ユニットと通信し、前記先取り命令の実
    行時の検索のために前記拡張先取り命令を記憶するため
    の先取り命令バッファと、を具備するコンピュータ装
    置。
  2. 【請求項2】 1つの前記フィールドがキャッシュ・セ
    ット番号に関連する値を収容するものである、請求項1
    記載のコンピュータ装置。
  3. 【請求項3】 1つの前記フィールドが先取りサイズ・
    インクリメントと関連する値を収容するものである、請
    求項1記載のコンピュータ装置。
  4. 【請求項4】 前記キャッシュが、データである情報の
    ためのキャッシュ・セットと命令である情報のためのキ
    ャッシュ・セットとの異なるキャッシュ・セットを含
    み、1つの前記フィールドが前記情報がデータであるか
    命令であるかに関連する値を含むためのものである、請
    求項1記載のコンピュータ装置。
  5. 【請求項5】 前記プロセッサが、第1の拡張先取り命
    令を実行して第1の情報を主記憶装置から検索し、前記
    キャッシュ・セットのうちの1つに記憶させると共に、
    第2の拡張先取り命令を実行して第2の情報を主記憶装
    置から検索し、前記第2の情報で前記第1の情報を上書
    きするように前記キャッシュ・セットのうちの1つに記
    憶させ、もって第1の先取り犠牲情報を発生するように
    した請求項1記載のコンピュータ装置であって、 前記先取り実行ユニットと通信し、前記第1の先取り犠
    牲情報に関連した情報を記憶するための先取り犠牲バッ
    ファをさらに備えるコンピュータ装置。
  6. 【請求項6】 前記第1の先取り犠牲情報が先取りタグ
    によって識別可能である、請求項5記載のコンピュータ
    装置。
  7. 【請求項7】 前記先取り犠牲バッファが前記先取りタ
    グを記憶する、請求項6記載のコンピュータ装置。
  8. 【請求項8】 前記先取り犠牲バッファが前記先取り犠
    牲情報を記憶する、請求項5記載のコンピュータ装置。
  9. 【請求項9】 前記プロセッサは、前記第2の情報によ
    って既に上書きされた前記第1の情報を検索するために
    前記キャッシュにアクセスした後、前記先取り犠牲バッ
    ファにアクセスし、前記第1の先取り犠牲情報に関連し
    た情報を検索するよう構成されている、請求項5記載の
    コンピュータ装置。
  10. 【請求項10】 前記先取り実行ユニットが、前記先取
    り犠牲情報に関連した情報を受け取って、前記第1の拡
    張先取り命令のフィールドに関連した値を修正し、該値
    を前記先取り命令バッファに記憶する、請求項5記載の
    コンピュータ装置。
  11. 【請求項11】 主記憶装置と、該主記憶装置と通信し
    且つ先取り命令を含む命令ストリームを受け取って実行
    するよう構成されたプロセッサと、該プロセッサと通信
    するキャッシュとを有し、該キャッシュが、可変のイン
    クリメント情報を収容するよう構成されたキャッシュ・
    セット番号によって識別可能な複数のキャッシュ・セッ
    トを含むコンピュータ装置であって、 前記プロセッサと通信し、前記先取り命令にフィールド
    を提供するための手段と、 前記プロセッサと通信し、前記フィールドに初期デフォ
    ルト値を提供して拡張先取り命令を発生するための手段
    と、 前記プロセッサと通信し、前記先取り命令の実行時の検
    索のために前記拡張先取り命令を記憶するための手段
    と、を具備するコンピュータ装置。
  12. 【請求項12】 1つの前記フィールドがキャッシュ・
    セット番号に関連する値を収容するものである、請求項
    11記載のコンピュータ装置。
  13. 【請求項13】 1つの前記フィールドが先取りサイズ
    ・インクリメントに関連する値を収容するものである、
    請求項11記載のコンピュータ装置。
  14. 【請求項14】 前記キャッシュが、データである情報
    のためのキャッシュ・セットと命令である情報のための
    キャッシュ・セットとの異なるキャッシュ・セットを含
    み、1つの前記フィールドが前記情報がデータであるか
    命令であるかに関連する値を含むためのものである、請
    求項11記載のコンピュータ装置。
  15. 【請求項15】 前記プロセッサが、第1の拡張先取り
    命令を実行して第1の情報を主記憶装置から検索し、前
    記キャッシュ・セットのうちの1つに記憶させると共
    に、第2の拡張先取り命令を実行して第2の情報を主記
    憶装置から検索し、前記第2の情報で前記第1の情報を
    上書きするように前記キャッシュ・セットのうちの1つ
    に記憶させ、もって第1の先取り犠牲情報を発生するよ
    うにした請求項11記載のコンピュータ装置であって、 前記プロセッサと通信し、前記第1の先取り犠牲情報に
    関連した情報を記憶するための手段をさらに備えるコン
    ピュータ装置。
  16. 【請求項16】 主記憶装置と、該主記憶装置と通信し
    且つ先取り命令を含む命令ストリームを受け取って実行
    するよう構成されたプロセッサと、該プロセッサと通信
    するキャッシュとを有し、該キャッシュが、可変のイン
    クリメント情報を収容するよう構成されたキャッシュ・
    セット番号によって識別可能な複数のキャッシュ・セッ
    トを含むコンピュータ装置上で動作する方法であって、 先取り命令にフィールドを提供するステップと、 前記フィールドに初期デフォルト値を提供して拡張先取
    り命令を発生するステップと、 前記先取り命令の実行時の検索のために前記拡張先取り
    命令を記憶するステップと、を具備する方法。
  17. 【請求項17】 1つの前記フィールドがキャッシュ・
    セット番号に関連する値を収容するものである、請求項
    16記載の方法。
  18. 【請求項18】 1つの前記フィールドが先取りサイズ
    ・インクリメントと関連する値を収容するものである、
    請求項16記載の方法。
  19. 【請求項19】 前記キャッシュが、データである情報
    のためのキャッシュ・セットと命令である情報のための
    キャッシュ・セットとの異なるキャッシュ・セットを含
    み、1つの前記フィールドが前記情報がデータであるか
    命令であるかに関連する値を含むためのものである、請
    求項16記載の方法。
  20. 【請求項20】 前記プロセッサが、第1の拡張先取り
    命令を実行して第1の情報を主記憶装置から検索し、前
    記キャッシュ・セットのうちの1つに記憶させると共
    に、第2の拡張先取り命令を実行して第2の情報を主記
    憶装置から検索し、前記第2の情報で前記第1の情報を
    上書きするように前記キャッシュ・セットのうちの1つ
    に記憶させ、もって第1の先取り犠牲情報を発生するよ
    うにした、請求項16記載の方法であって、 前記第1の先取り犠牲情報に関連した情報を記憶するス
    テップをさらに備える方法。
  21. 【請求項21】 主記憶装置と、該主記憶装置と通信し
    且つ先取り命令を含む命令ストリームを受け取って実行
    するよう構成されたプロセッサと、該プロセッサと通信
    するキャッシュとを有し、該キャッシュが、可変のイン
    クリメント情報を収容するよう構成されたキャッシュ・
    セット番号によって識別可能な複数のキャッシュ・セッ
    トを含むコンピュータ装置と結合して動作する先取り命
    令最適化デバイスであって、 前記プロセッサと通信し、前記先取り命令にフィールド
    を提供し、該フィールドに初期デフォルト値を提供して
    拡張先取り命令を発生するための先取り実行ユニット
    と、 前記先取り実行ユニットと通信し、前記先取り命令の実
    行時の検索のために前記拡張先取り命令を記憶するため
    の先取り命令バッファと、 を具備する最適化デバイス。
  22. 【請求項22】 1つの前記フィールドがキャッシュ・
    セット番号に関連する値を収容するものである、請求項
    21記載の最適化デバイス。
  23. 【請求項23】 1つの前記フィールドが先取りサイズ
    ・インクリメントと関連する値を収容するものである、
    請求項21記載の最適化デバイス。
  24. 【請求項24】 前記キャッシュが、データである情報
    のためのキャッシュ・セットと命令である情報のための
    キャッシュ・セットとの異なるキャッシュ・セットを含
    み、1つの前記フィールドが前記情報がデータであるか
    命令であるかに関連する値を含むためのものである、請
    求項21記載の最適化デバイス。
  25. 【請求項25】 前記プロセッサが、第1の拡張先取り
    命令を実行して第1の情報を主記憶装置から検索し、前
    記キャッシュ・セットのうちの1つに記憶させると共
    に、第2の拡張先取り命令を実行して第2の情報を主記
    憶装置から検索し、前記第2の情報で前記第1の情報を
    上書きするように前記キャッシュ・セットのうちの1つ
    に記憶させ、もって第1の先取り犠牲情報を発生するよ
    うに構成されている、請求項21記載の最適化デバイス
    であって、 前記先取り実行ユニットと通信し、前記第1の先取り犠
    牲情報に関連した情報を記憶するための先取り犠牲バッ
    ファをさらに備える最適化デバイス。
  26. 【請求項26】 前記第1の先取り犠牲情報が先取りタ
    グによって識別可能である、請求項25記載の最適化デ
    バイス。
  27. 【請求項27】 前記先取り犠牲バッファが前記先取り
    タグを記憶する、請求項26記載の最適化デバイス。
  28. 【請求項28】 前記先取り犠牲バッファが前記先取り
    犠牲情報を記憶する、請求項25記載の最適化デバイ
    ス。
  29. 【請求項29】 前記第2の情報によって既に上書きさ
    れた前記第1の情報を検索するために前記プロセッサが
    前記キャッシュにアクセスした後、前記プロセッサが前
    記第1の先取り犠牲情報に関連した情報を検索するよう
    に、前記先取り犠牲バッファが前記プロセッサによって
    アクセスされるよう構成されている、請求項25記載の
    最適化デバイス。
  30. 【請求項30】 前記先取り実行ユニットが、前記先取
    り犠牲情報に関連した情報を受け取って、前記第1の拡
    張先取り命令のフィールドに関連した値を修正し、該値
    を前記先取り命令バッファに記憶する、請求項25記載
    の最適化デバイス。
JP12589697A 1996-05-15 1997-05-15 命令とデータの先取りを最適化するためのハードウェア機構 Expired - Lifetime JP3718319B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US648533 1996-05-15
US08/648,533 US5761468A (en) 1996-05-15 1996-05-15 Hardware mechanism for optimizing instruction and data prefetching by forming augmented prefetch instructions

Publications (2)

Publication Number Publication Date
JPH1091437A true JPH1091437A (ja) 1998-04-10
JP3718319B2 JP3718319B2 (ja) 2005-11-24

Family

ID=24601175

Family Applications (1)

Application Number Title Priority Date Filing Date
JP12589697A Expired - Lifetime JP3718319B2 (ja) 1996-05-15 1997-05-15 命令とデータの先取りを最適化するためのハードウェア機構

Country Status (4)

Country Link
US (1) US5761468A (ja)
EP (1) EP0810517B1 (ja)
JP (1) JP3718319B2 (ja)
DE (1) DE69719239T2 (ja)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7835989B1 (en) 1992-12-09 2010-11-16 Discovery Communications, Inc. Electronic book alternative delivery systems
AU692428B2 (en) 1992-12-09 1998-06-11 Sedna Patent Services, Llc Set top terminal for cable television delivery systems
US7509270B1 (en) 1992-12-09 2009-03-24 Discovery Communications, Inc. Electronic Book having electronic commerce features
US7849393B1 (en) 1992-12-09 2010-12-07 Discovery Communications, Inc. Electronic book connection to world watch live
US8073695B1 (en) 1992-12-09 2011-12-06 Adrea, LLC Electronic book with voice emulation features
US7861166B1 (en) 1993-12-02 2010-12-28 Discovery Patent Holding, Llc Resizing document pages to fit available hardware screens
US8095949B1 (en) 1993-12-02 2012-01-10 Adrea, LLC Electronic book with restricted access features
US9053640B1 (en) 1993-12-02 2015-06-09 Adrea, LLC Interactive electronic book
US7865567B1 (en) * 1993-12-02 2011-01-04 Discovery Patent Holdings, Llc Virtual on-demand electronic book
EP0752645B1 (en) * 1995-07-07 2017-11-22 Oracle America, Inc. Tunable software control of Harvard architecture cache memories using prefetch instructions
EP0752644A3 (en) * 1995-07-07 2001-08-22 Sun Microsystems, Inc. Memory management unit incorporating prefetch control
US6173368B1 (en) * 1995-12-18 2001-01-09 Texas Instruments Incorporated Class categorized storage circuit for storing non-cacheable data until receipt of a corresponding terminate signal
US5854934A (en) * 1996-08-23 1998-12-29 Hewlett-Packard Company Optimizing compiler having data cache prefetch spreading
US6041393A (en) * 1996-08-23 2000-03-21 Hewlett-Packard Co. Array padding for higher memory throughput in the presence of dirty misses
US6047363A (en) * 1997-10-14 2000-04-04 Advanced Micro Devices, Inc. Prefetching data using profile of cache misses from earlier code executions
US6202126B1 (en) * 1997-10-24 2001-03-13 Compaq Computer Corporation Victimization of clean data blocks
US5941981A (en) * 1997-11-03 1999-08-24 Advanced Micro Devices, Inc. System for using a data history table to select among multiple data prefetch algorithms
US5964867A (en) * 1997-11-26 1999-10-12 Digital Equipment Corporation Method for inserting memory prefetch operations based on measured latencies in a program optimizer
US5944815A (en) * 1998-01-12 1999-08-31 Advanced Micro Devices, Inc. Microprocessor configured to execute a prefetch instruction including an access count field defining an expected number of access
US6453389B1 (en) * 1999-06-25 2002-09-17 Hewlett-Packard Company Optimizing computer performance by using data compression principles to minimize a loss function
US6651088B1 (en) * 1999-07-20 2003-11-18 Hewlett-Packard Development Company, L.P. Method for reducing coherent misses in shared-memory multiprocessors utilizing lock-binding prefetchs
US6675374B2 (en) 1999-10-12 2004-01-06 Hewlett-Packard Development Company, L.P. Insertion of prefetch instructions into computer program code
US6799263B1 (en) * 1999-10-28 2004-09-28 Hewlett-Packard Development Company, L.P. Prefetch instruction for an unpredicted path including a flush field for indicating whether earlier prefetches are to be discarded and whether in-progress prefetches are to be aborted
US6460115B1 (en) * 1999-11-08 2002-10-01 International Business Machines Corporation System and method for prefetching data to multiple levels of cache including selectively using a software hint to override a hardware prefetch mechanism
US6574712B1 (en) * 1999-11-08 2003-06-03 International Business Machines Corporation Software prefetch system and method for predetermining amount of streamed data
US6687807B1 (en) * 2000-04-18 2004-02-03 Sun Microystems, Inc. Method for apparatus for prefetching linked data structures
US7366932B2 (en) * 2002-10-30 2008-04-29 Stmicroelectronics, Inc. Method and apparatus to adapt the clock rate of a programmable coprocessor for optimal performance and power dissipation
US7334088B2 (en) * 2002-12-20 2008-02-19 International Business Machines Corporation Page descriptors for prefetching and memory management
US7636815B1 (en) 2003-04-09 2009-12-22 Klaiber Alexander C System and method for handling direct memory accesses
US8751753B1 (en) 2003-04-09 2014-06-10 Guillermo J. Rozas Coherence de-coupling buffer
US8386648B1 (en) 2003-06-26 2013-02-26 Nvidia Corporation Hardware support system for accelerated disk I/O
US8683132B1 (en) * 2003-09-29 2014-03-25 Nvidia Corporation Memory controller for sequentially prefetching data for a processor of a computer system
US8356142B1 (en) 2003-11-12 2013-01-15 Nvidia Corporation Memory controller for non-sequentially prefetching data for a processor of a computer system
US8700808B2 (en) * 2003-12-01 2014-04-15 Nvidia Corporation Hardware support system for accelerated disk I/O
US8356143B1 (en) 2004-10-22 2013-01-15 NVIDIA Corporatin Prefetch mechanism for bus master memory access
US7971002B1 (en) 2005-04-07 2011-06-28 Guillermo Rozas Maintaining instruction coherency in a translation-based computer system architecture
US8356128B2 (en) * 2008-09-16 2013-01-15 Nvidia Corporation Method and system of reducing latencies associated with resource allocation by using multiple arbiters
US8370552B2 (en) * 2008-10-14 2013-02-05 Nvidia Corporation Priority based bus arbiters avoiding deadlock and starvation on buses that support retrying of transactions
US8698823B2 (en) * 2009-04-08 2014-04-15 Nvidia Corporation System and method for deadlock-free pipelining
US9569385B2 (en) 2013-09-09 2017-02-14 Nvidia Corporation Memory transaction ordering
US11586440B2 (en) * 2021-06-01 2023-02-21 International Business Machines Corporation Link stack based instruction prefetch augmentation

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5687282A (en) * 1979-12-14 1981-07-15 Nec Corp Data processor
CA1174370A (en) * 1980-05-19 1984-09-11 Hidekazu Matsumoto Data processing unit with pipelined operands
US4583165A (en) * 1982-06-30 1986-04-15 International Business Machines Corporation Apparatus and method for controlling storage access in a multilevel storage system
US4551799A (en) * 1983-02-28 1985-11-05 Honeywell Information Systems Inc. Verification of real page numbers of stack stored prefetched instructions from instruction cache
US5095424A (en) * 1986-10-17 1992-03-10 Amdahl Corporation Computer system architecture implementing split instruction and operand cache line-pair-state management
US5168560A (en) * 1987-05-29 1992-12-01 Amdahl Corporation Microprocessor system private split cache tag stores with the system tag store having a different validity bit for the same data line
US5307477A (en) * 1989-12-01 1994-04-26 Mips Computer Systems, Inc. Two-level cache memory system
US5261066A (en) * 1990-03-27 1993-11-09 Digital Equipment Corporation Data processing system and method with small fully-associative cache and prefetch buffers
US5317718A (en) * 1990-03-27 1994-05-31 Digital Equipment Corporation Data processing system and method with prefetch buffers
US5305389A (en) * 1991-08-30 1994-04-19 Digital Equipment Corporation Predictive cache system
US5367656A (en) * 1992-03-13 1994-11-22 Bull Hn Information Systems Inc. Controlling cache predictive prefetching based on cache hit ratio trend
US5410653A (en) * 1992-06-16 1995-04-25 International Business Machines Corporation Asynchronous read-ahead disk caching using multiple disk I/O processes and dynamically variable prefetch length
US5537573A (en) * 1993-05-28 1996-07-16 Rambus, Inc. Cache system and method for prefetching of data
US5603004A (en) * 1994-02-14 1997-02-11 Hewlett-Packard Company Method for decreasing time penalty resulting from a cache miss in a multi-level cache system
US5581720A (en) * 1994-04-15 1996-12-03 David Sarnoff Research Center, Inc. Apparatus and method for updating information in a microcode instruction
US5551001A (en) * 1994-06-29 1996-08-27 Exponential Technology, Inc. Master-slave cache system for instruction and data cache memories
US5623608A (en) * 1994-11-14 1997-04-22 International Business Machines Corporation Method and apparatus for adaptive circular predictive buffer management
EP0752644A3 (en) * 1995-07-07 2001-08-22 Sun Microsystems, Inc. Memory management unit incorporating prefetch control

Also Published As

Publication number Publication date
JP3718319B2 (ja) 2005-11-24
EP0810517A3 (en) 1999-11-10
EP0810517B1 (en) 2003-02-26
EP0810517A2 (en) 1997-12-03
DE69719239D1 (de) 2003-04-03
US5761468A (en) 1998-06-02
DE69719239T2 (de) 2003-10-30

Similar Documents

Publication Publication Date Title
JPH1091437A (ja) 命令とデータの先取りを最適化するためのハードウェア機構
JP3739491B2 (ja) プリフェッチ命令を用いるハーバードアーキテクチャキャッシュメモリの調和したソフトウェア制御
US6131155A (en) Programmer-visible uncached load/store unit having burst capability
US6119218A (en) Method and apparatus for prefetching data in a computer system
US6401192B1 (en) Apparatus for software initiated prefetch and method therefor
JP3516963B2 (ja) メモリアクセス制御装置
JP3518770B2 (ja) 命令をその少なくとも1つの実行装置へ迅速にディスパッチする方法および装置
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
US6487639B1 (en) Data cache miss lookaside buffer and method thereof
JPH09128293A (ja) 情報処理装置
US8171266B2 (en) Look-ahead load pre-fetch in a processor
JPH0588888A (ja) アドレス生成機構及びデータの事前取り出し方法
JPS63150731A (ja) コンピュータシステムおよびその実行方法
US20080184010A1 (en) Method and apparatus for controlling instruction cache prefetch
US6922753B2 (en) Cache prefetching
JP2006516168A (ja) ストライド予測テーブルにアドレスするためにキャッシュミスパターンを使用する方法
US7162588B2 (en) Processor prefetch to match memory bus protocol characteristics
US6823430B2 (en) Directoryless L0 cache for stall reduction
KR0146059B1 (ko) 미참조 선인출 캐쉬를 이용한 명령어 선인출 방법 및 그 회로
US20050198439A1 (en) Cache memory prefetcher
US6772321B2 (en) Method and apparatus for using an assist processor and value speculation to facilitate prefetching for a primary processor
US5715425A (en) Apparatus and method for prefetching data into an external cache
US7191430B2 (en) Providing instruction execution hints to a processor using break instructions
Struik et al. Combined hardware/software solution for stream prefetching in multimedia applications
JP2786886B2 (ja) プリフェッチ制御方法およびプリフェッチ制御装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040402

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050802

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050902

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20090909

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100909

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100909

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110909

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120909

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130909

Year of fee payment: 8

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term