JP3425158B2 - マルチバッファデータキャッシュを具えているコンピュータシステム - Google Patents

マルチバッファデータキャッシュを具えているコンピュータシステム

Info

Publication number
JP3425158B2
JP3425158B2 JP00383592A JP383592A JP3425158B2 JP 3425158 B2 JP3425158 B2 JP 3425158B2 JP 00383592 A JP00383592 A JP 00383592A JP 383592 A JP383592 A JP 383592A JP 3425158 B2 JP3425158 B2 JP 3425158B2
Authority
JP
Japan
Prior art keywords
data
buffer
cache
computer system
storing
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.)
Expired - Fee Related
Application number
JP00383592A
Other languages
English (en)
Other versions
JPH04303248A (ja
Inventor
ハン チー チー
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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips NV
Koninklijke Philips Electronics NV
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 Koninklijke Philips NV, Koninklijke Philips Electronics NV filed Critical Koninklijke Philips NV
Publication of JPH04303248A publication Critical patent/JPH04303248A/ja
Application granted granted Critical
Publication of JP3425158B2 publication Critical patent/JP3425158B2/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
    • 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/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • 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 or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • 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

Landscapes

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、電子コンピュータシス
テムに関するものである。特に本発明は、比較的高速の
プロセッサと、比較的低速のメモリとの間でデータを効
果的に交換できるようにするためのコンピュータアーキ
テクチャに関するものである。
【0002】
【従来の技術】集積回路技術、及びコンピュータアーキ
テクチャにおける急速な進歩によって、比較的高速の処
理ユニットと、比較的低速のメモリとの間の”メモリ参
照ディレイギャップ”が増大するようになった。最大処
理能力100MIPS の高性能プロセッサチップを、商用製品
として入手することができる。処理ユニットととしてこ
れらのプロセッサチップを使用しているマルチプロセッ
サシステムも、実現することができる。しかし、これら
の高性能システムがピークスピードでランするのに必要
なメモリシステムは、かなり複雑又はかなり高価なシス
テムとなり、構成が困難であった。結果として、多くの
現行の高性能コンピュータシステムの性能のボトルネッ
クは、これらの処理ユニットのスピードではなく、むし
ろメモリシステムの効率である。
【0003】高速処理ユニットと、低速メモリとの間の
増大する大きなメモリ参照ディレイギャップの問題を克
服するために、従来技術でも使用されているキャッシュ
メモリを使用する。キャッシュメモリは、コンピュータ
システムの中央処理ユニットとメインメモリとの間の、
小型高速バッファメモリである。キャッシュメモリの主
な目的は、高速技術を用いての完全な主記憶装置を構成
するための関連費用を費やさずに、高速データ/命令ア
クセスを達成することにある。このことは、近い将来キ
ャッシュで参照されることが期待されるデータ/命令を
保持することによって達成される。現行のキャッシュ設
計において、命令キャッシュは常に、実行及び最適化に
関し、データキャッシュよりも高い優先順位が与えられ
る。極めて限られたチップ領域を利用することさえでき
るならば、この領域を使用し命令キャッシュを実現でき
る。命令キャッシュを実現後、更にスペースを使用する
ことができるならば、しばしば、データキャッシュをプ
ロセッサチップに配置する。これは、現在段階での命令
参照特性及びデータ参照特性の取り決めと、命令及びデ
ータの現行のキャッシュモデルでの正確性によるもので
ある。
【0004】命令参照の参照特性が強いシーケンシャル
であるため、従来技術では、”キャッシュプリフェッチ
ング(cashe prefetching )”として知られている技術
を用いる。この技術では、参照が実際に必要となる以前
に、キャッシュメモリで参照が行われる。先取り(プリ
フェッチング)が正しいならば、メモリ参照ディレイタ
イムが、プログラムの実行と(部分的に、又は完全に)
オーバーラップする。分岐命令、又はジャンプ命令のた
めに、命令参照がシーケンシャルでない場合、従来技術
では”ブランチターゲット予測(branch target predic
tion)”として知られる技術が用いられ、 どのようにし
てプログラムが実行されるべきかを推測する。キャッシ
ュプリフェッチング技術と相俟って、推測が正しいなら
ば、キャッシュミスの回数を低減させることができる。
更に、”ブランチターゲットバッファ又はキャッシュ"
を用い、ブランチターゲットを一方のバッファ/キャッ
シュに配置するとともに、非ブランチ参照を他方のバッ
ファ/キャッシュに配置することによって、キャッシュ
ヒットレシオを改善することができる。結果的に、処理
ユニットの管理するキャッシュミスの回数を低減させる
ことができ、優れた命令キャッシュ性能を達成すること
ができる。ここで使用されている”キャッシュヒットレ
シオ”を、処理ユニットが要求するデータ項目がキャッ
シュメモリ内に見いだされる確率と定義し、”キャッシ
ュミスペナリー(penally )”を、キャッシュミスが発
生する時に、処理ユニットが要求データ項目の到着を待
たなければならない時間と定義する。
【0005】1960年代にキャッシュが導入されて以来、
キャッシュヒットレシオの改善及びバス通信量の低減の
ために、キャッシュ区分化技術及びマルチバッファキャ
ッシュ技術がしばしば使用されている。最も一般的に使
用される従来のキャッシュ区分化技術としては以下のも
のがある: ・データキャッシュVS. 命令キャッシュ:キャッシュ空
間を、互いに排他的な2個の区分に分割し、その一方を
命令記憶のためのものとし、他方をデータ記憶のための
ものとする。 ・リアルタイムシステムのためのキャッシュ区分化:キ
ャッシュ空間を、幾つかの区分に分割し、タスクがラン
する度に、タスクによってただ1個の区分だけが割り当
てられ、使用される。 ・ブランチターゲットキャッシュの付加:ブランチター
ゲット命令のみを記憶するのに使用される独立バッファ
/キャッシュを、現存のキャッシュに付加する。 ・プリフェッチバッファの付加:シーケンシャルに先取
りされる命令のみを記憶するのに使用される独立バッフ
ァを、現存のキャッシュに付加する。 ・ビクティムキャッシュ又はミスキャッシュの付加:キ
ャッシュからの置換データを一時的にセーブするのに使
用される独立バッファ/キャッシュを、現存のキャッシ
ュとメインメモリとの間に付加する。
【0006】従来の技術では、一般的にデータ参照特性
を”ランダム”なものとしており、従来のデータキャッ
シュ設計に関しては正確なモデルが存在しない。結果的
に、命令キャッシュ性能を改善することのできるこれら
のキャッシング技術は、データキャッシュに応用する場
合には非効果的である。これらの技術はすべて、データ
キャッシュの設計に関して有効なものではない。第1の
技術(データキャッシュVS. 命令キャッシュ)は、キャ
ッシュのデータ参照からの命令参照の妨害を回避するた
めのものであり、第2の技術(リアルタイムシステムの
ためのキャッシュ区分化)は、一方のタスクの命令及び
データ参照の、他方のタスクの命令及びデータ参照から
の妨害を回避するためのものである。しかし、予測する
ことのできないデータ参照特性が依然として残る。第3
の技術(ブランチターゲットキャッシュの付加)を、デ
ータキャッシュに適用することはできない。その理由
は、データ参照にブランチターゲットが存在しないから
である。第4の技術(プリフェッチバッファの付加)
は、データキャッシュ性能を改善するのに特に有効とは
いえない。その理由は、データの参照特性が、シーケン
シャルというよりはむしろ、多少ランダムだからであ
る。データ参照のシーケンシャルな先取りによって、し
ばしばデータキャッシュ性能が改善されず、低下する。
最後の技術(ビクティムキャッシュ又はミスキャッシュ
の付加)を用いて、更に関連性(associati-vity)をキ
ャッシュに加えることによって、データキャッシュ性能
をわずかに改善させることができる。
【0007】
【発明が解決しようとする課題】しかし、依然として予
測することのできないデータ参照特性の問題を解決する
ことができない。
【0008】キャッシュメモリバッファ及びシステムの
編成及び構成に関しては、”High-Speed Memory Syste
m",Pohm and Agrawal,Reston Publishing Company (19
83)及びスミス( A.J.Smith ) による"Cash Memories"
、コンピューティング サーベイズ、ボリューム14、
ナンバ3、1982年9月、pp.473−530において更に議論
されている。これらの論文を、従来技術の参考として、
ここに引用する。
【0009】キャッシュプリフェッチング技術は、命令
キャッシュの場合と比べて、データキャッシュの場合に
は、相対的にさほど有効なものではない。しばしば、実
際にキャッシュプリフェッチング技術によって、機械性
能が低下してしまう。このことは主に、キャッシュ汚染
及びバス回線争奪の問題に帰する。ここで、”キャッシ
ュ汚染”とは、データ又は命令がキャッシュに取り込ま
れるが、データ又は命令がキャッシュ内に存在する間に
参照されない場合に関するものである。”バス回線争
奪”とは、バスが同時に作用することができるリクエス
トよりも、データバスを使用しようとするリクエストの
方が多い場合である。事実上通常シーケンシャルな命令
参照の特性と比較して、データ参照の全体的な特性は多
少ランダムである。従来技術では、命令の参照特性と比
較して、データの参照特性がより特定困難であるため、
命令キャッシュプリフェッチングよりも、データキャッ
シュプリフェッチングにおいて、より深刻にキャッシュ
汚染が発生する。キャッシュ空間は、先取りされた非参
照データを記憶するのに不要であるばかりでなく、すぐ
に参照されるキャッシュ内のデータを、非参照データで
置き換える。非参照データの取り込みも、バス通信量に
含まれる。バス帯域幅のリソースが限られているシステ
ムにおいては、バス回線争奪が発生し、機械性能が更に
低下し得る。バスが非参照データを先取りするのに忙し
い場合、バスを使用するための他のリクエスト(例え
ば、命令先取り)をディレイさせる。このことは、処理
速度が極めて速いものの、そのバス帯域幅がバスの物理
的制約、例えばチップの総ピン数によって制限されてい
る高性能プロセッサチップにおいてよく発生する。ブラ
ンチ手法予測、及びブランチターゲットバッファ/キャ
ッシュを、データキャッシュに適用することはできな
い。従来のデータキャッシュ設計では、データ参照を、
そのシーケンシャルな参照特性に従って、色々な種類に
分割していない。データ参照では、命令参照におけるシ
ーケンシャルな参照からのブランチ参照の区別をしてい
ない。このため、現在のデータキャッシュ設計の性能
は、命令キャッシュ設計の性能よりもかなり劣ってい
る。
【0010】本発明は、データキャッシュの効率を改善
することを目的としている。
【0011】
【課題を解決するための手段】この目的を達成するため
本発明は、処理ユニットと;該処理ユニットによって使
用されるデータを記憶するためのメインメモリと;該メ
インメモリと前記処理ユニットとに接続され、前記メイ
ンメモリから、処理ユニット命令によって参照されるデ
ータを記憶及び/又は先取りするためのデータキャッシ
ュ;とを具えているコンピュータシステムであって、前
記データキャッシュが:前記処理ユニットからのデータ
リクエストを分析し、前記データ参照の局所性の統計的
予測関連性に基づき、前記データリクエストのデータ参
照を複数の個々の群に分類するためのデータリクエスト
分析手段と; 少なくとも2個のデータバッファと;各
データ参照を前記バッファのいづれか1個に割り当て、
前記統計的予測関連性に基づき、キャッシュ性能を最適
なものとするための手段とを具えていることを特徴とす
る。リクエストを分析する手段によって、(スタックデ
ータ、又はグローバル変数、又はアレイエレメント、又
は直接アドレス指定されたデータなどの)他の参照局所
性を有する命令から生じるデータ項目を、時間的局所性
又は空間的局所性などの参照局所性に従って、他のデー
タバッファに配置する。この参照局所性は、データ項目
が要求される際に、データリクエストを分析する手段に
よって動的に予測される。このようにして、プログラム
の他の部分からアクセスされる際に、如何に参照局所性
を予測するかに基づき、1データ項目を種々のバッファ
に配置することができる。データバッファ内のデータの
保持、データサイズ、及びストラテジの先取りを、各デ
ータバッファ毎に独立に最適なものとし、例えば、予測
することのできない1タイプの参照特性によって他のデ
ータバッファが汚染されたり、有効なデータ項目が他の
データバッファから取り除かれたりしないようにしてい
る。
【0012】本発明の一例では、統計的関連性に基づ
き、前記個々の群が、参照特性の比較的強い時間的局所
性を有していると予測されるS参照データ群を具え;前
記個々の群が、参照特性の比較的弱い時間的局所性と、
参照特性の比較的強い空間的局所性とを有していると予
測されるP参照データ群も具え;前記データバッファと
して、S参照データを記憶するためのSバッファと、P
参照データを記憶するとともに、先取りするためのPバ
ッファとを設けることを特徴とする。
【0013】アドレス指定方式及びアドレス計算に用い
られるレジスタに従って、データ参照を2種類の、いわ
ゆるS参照とP参照とに分割する。メインメモリからの
データ参照をキャッシュに記憶する。このキャッシュ
は、それぞれ1種のデータ参照を処理するのに最適化さ
れ、使用される2個のバッファ、SバッファとPバッフ
ァとを具えている。SバッファをS参照にとって最適な
ものとし、PバッファをP参照にとって最適なものとす
る。これら2種類の参照の各々が、他方の参照タイプに
よって共有されない、それ自体識別し得る固有の特徴を
有している。S参照の場合ではなく、P参照の場合に、
参照されるデータに対する近傍データを先取りすること
によって、最適化を行う。命令キャッシングに関して説
明するが、他の種類のメインテナンスストラテジを、S
バッファ又はPバッファに対して用いることもできる。
このようにマルチバッファデータキャッシュを用いて、
キャッシュの性能をかなり改善することができる。
【0014】現在のキャッシュ設計において、プログラ
ム参照特性は、しばしば参照の局所性との関連で説明さ
れる。2種類の局所性、すなわち”時間的局所性”(す
なわち、時間に関する局所性)と、”空間的局所性”
(すなわち、空間に関する局所性)とがある。短いタイ
ムピリオドにわたって、参照プログラムによって行われ
るメモリ参照は、アドレス空間にわたって一様に分散さ
れていない。その代わりに、参照は、しばしば小さなク
ラスタに発生する。すなわち、ワーキングセットの参照
である。第1のタイプの局所性、すなわち、時間的局所
性とは、現在使用されている情報が近い将来再び使用さ
れる可能性があるということである。これは、ほとんど
の従来キャッシュの基本的原理である。すなわち、たい
ていのプログラムは、プログラム実行中に2回以上、デ
ータ又はコードの使用を試みる。この種の参照特性は、
プログラムループ中に見いだすことができる。このプロ
グラムループでは、データ参照と命令参照の両方が、各
ループ毎に、又はプログラム実行中に数回コールされる
サブルーチンにおいて、繰り返し使用される。
【0015】通常、アドレス空間は、この空間の多数の
個々の連続セグメントに分類され、ほんのわずかのセグ
メントが同時に繰り返し参照される。第2のタイプの局
所性である、空間的局所性は、近い将来のプログラム参
照位置が、現在の参照位置付近に存在する傾向にあると
いうことを暗に示すものである。このタイプの参照特性
は、多くの場合にシーケンシャルな順番で命令が実行さ
れる科学的なプログラムにおいては一般的なものであ
り、通常メモリ内で連続なアレイエレメントのシーケン
スをアクセスする。
【0016】キャッシュ内及び容易に入手することので
きる現在の参照位置(空間的位置)付近の情報ととも
に、これらの時間的及び空間的局所性を用い、本発明
は、プロセッサが現在処理している(時間的位置の)情
報を保持しょうとするものである。しかしながら、この
設計原理が命令キャッシュにおいては良好に作動する
が、データキャッシュにおいては良好に作動しないとい
うことは、一般的了解事項である。このことは、命令と
データとの間の参照特性が著しく相違することに起因す
るものである。命令参照特性が強いシーケンシャルな参
照特性を有するとともに、高い予測可能性を有するもの
の、従来技術では、データ参照特性がランダムであり、
命令参照よりも予測可能性がかなり低い。管理スキーマ
の現在のキャッシュモデルの多くが、主に命令キャッシ
ュのために設計されたものであるため、データキャッシ
ュに応用する場合に、これらのスキーマ及び制御メカニ
ズムがさほど有効でないということは、驚くべきことで
はない。しかし、注意深い研究を行うことによって、デ
ータ参照特性が実際には見た目ほどランダムなものでは
ないことが示された。実際、データ参照特性は、S参照
とP参照との組み合わせであり、これら2タイプの参照
は、それぞれ予測可能性の高いものである。第1のタイ
プのデータ参照であるP参照は、主にポインタを用いた
データアレイエレメントのアクセスによるものである。
P参照は、命令のシーケンシャルな参照特性と類似す
る、強いシーケンシャルの参照特性を有する。このた
め、このタイプのデータの次の参照を、高い確率で予測
することができる。すなわち、前方向(又は、おそらく
は後方向)の参照の強い空間的局所性を有しているとい
うことである。しかし、P参照の有効範囲は通常極めて
短く、通常、数命令であり、その参照周波数は極めて低
い。このことは、P参照の時間的局所性が極めて弱いと
いうことを示している。
【0017】第2のタイプのデータ参照であるS参照
は、主にスタック変数及びグローバルスカラー変数のア
クセスによるものである。通常、このタイプの参照は、
有効範囲周期の間にしばしば参照される。このようにし
て、このタイプの参照では、参照特性の時間的局所性が
強いことがわかる。しかし、S参照の空間的局所性は極
めて弱い。その理由は、そのアクセスパターンがほぼラ
ンダムだからである。
【0018】アドレス指定方式、及び命令符号化の間の
アドレス計算に用いられるレジスタを調べることによっ
て、ランタイムにおいて、データ参照がS参照である
か、P参照であるかを極めて正確に推測することができ
る。このことは、間接アドレス指定方式を使用する参照
のみをP参照とし、数個のレジスタを特定目的のために
設計しているからである。例えば、直接アドレス指定方
式を用いる参照をS参照とすることが好ましい。スタッ
クポインタレジスタを用いる間接参照とは、多くの場合
局所的なスタック変数である。
【0019】データ参照をS参照とP参照とに分割する
ことによって、これら2タイプのデータ参照それぞれの
局所性を更に正確に記述することができる。このデータ
参照モデルに基づき、本発明によるコンピュータシステ
ムは、S参照データの先取り及び記憶に最適なSバッフ
ァと、P参照データの先取り及び記憶に最適なPバッフ
ァとを有するデータキャッシュを具えている。このデー
タキャッシュは、アドレス指定方式を分析するための制
御ユニットと、命令符号化の間のアドレス計算に用いら
れるレジスタとを具え、参照データがS参照であるかP
参照であるかを決定する。
【0020】
【実施例】以下図面を参照して実施例を説明するに、図
1は本発明によるマルチバッファデータキャッシュを示
す図である。このキャッシュは、処理ユニット10が参照
するデータをメインメモリ20から取り込む。従来の技術
において通例ことであるが、処理ユニット10は、命令を
符号化し、包含されるデータ参照のタイプを決定する符
号化ユニット30と;間接モードデータアドレス指定方式
に用いられるレジスタ;とを具えている。
【0021】マルチバッファデータキャッシュ100 を、
メインメモリ20と処理ユニット10との間に接続する。マ
ルチバッファデータキャッシュ100 は、Sバッファ40
と、Pバッファ50と、制御ユニット60とを具えている。
制御ユニット60は、データの流れを統制し、Pバッファ
50とSバッファ40とが各々、それ自体識別し得る固有の
特徴及び制御スキーマを具え、1タイプのデータ参照を
最適にできるようにしている:すなわち、Sバッファ40
を用いてS参照を処理し、Pバッファ50を用いてP参照
を処理する。その他の点で、バッファは、従来技術と同
様に構成され、接続される。
【0022】ある命令においてデータ参照が見いだされ
る時はいつでも、そのアドレス指定方式と、演算をアド
レス指定するのに用いられるレジスタとが、符号化ユニ
ット30によって決定され、制御ユニット60に送られる。
制御ユニット60は、S参照とするか、P参照とするかを
決定する。このことは、制御ユニットロジックに組み込
まれている所定のルールに従って行われる。例えば、間
接アドレス指定方式を使用し、アドレス計算にスタック
ポインタレジスタを使用する参照を、S参照とする。デ
ータ参照を行う際に、2個のバッファの各々をチェック
し、キャッシュミス又はキャッシュヒットが存在するか
どうかを判断する。
【0023】主に、Sバッファ40はS参照を記憶するの
に用いられる。S参照の参照優先順位が強いシーケンシ
ャルではないので、シーケンシャルな先取りは用いられ
ない。このことは、データ先取りによって発生する重大
なキャッシュ汚染により、性能が向上せず、性能が低下
してしまうからである。このことは、Sバッファのサイ
ズが小さい場合には特に顕著である。S参照にSバッフ
ァキャッシュヒットが存在する場合、キャッシュの内容
に変更はない。P参照に、Sバッファキャッシュヒット
が存在する場合、キャッシュの内容に変更はない。S参
照にキャッシュミスが存在する場合、このキャッシュミ
スに対応するキャッシュブロックが、メインメモリから
Sバッファへと取り込まれる。
【0024】主に、Pバッファ50はP参照を記憶するの
に用いられる。P参照の参照優先順位が強いシーケンシ
ャルであるため、Pバッファでは、シーケンシャルな先
取りが用いられる。P参照にPバッファキャッシュヒッ
トが存在する場合、キャッシュの内容に変更はない。S
参照にPバッファキャッシュヒットが存在する場合、こ
のS参照に対応するキャッシュブロックが、Pバッファ
からSバッファへと転送される。ブロック転送の後、現
在のS参照を包含しているPバッファのキャッシュブロ
ックを空(empty )とマークする。P参照にキャッシュ
ミスが存在する場合、このキャッシュミスに対応するキ
ャッシュブロックが、メインメモリからPバッファへと
取り込まれる。すべての取り込まれたデータを、Pバッ
ファに配置する。通常の先取りと同様に、先取りスキー
マを用いることができる。
【0025】本発明を2個のバッファキャッシュについ
て説明したが、2個に限定されるものではない。Pバッ
ファ及びSバッファに加えて、付加的なキャッシュバッ
ファを設け、特定のデータ取り込み及び記憶特性を、固
有の特性を有する他の実質的に同一なデータ参照タイプ
に対して最適なものとすることができる。
【図面の簡単な説明】
【図1】本発明によるデータキャッシュを具えているコ
ンピュータシステムを示す図である。
【符号の説明】
10 処理ユニット 20 メインメモリ 30 符号化ユニット 40 Sバッファ 50 Pバッファ 60 制御ユニット 100 マルチバッファデータキャッシュ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 チー ハン チー アメリカ合衆国 ニューヨーク州 10652 クロトン−オン−ハドソン ア ンバーランド アパートメント 21エイ (56)参考文献 特開 平2−81241(JP,A) 特開 昭63−8851(JP,A) 特開 平1−251247(JP,A) 特開 昭60−205752(JP,A) 特開 昭58−91570(JP,A) 特開 昭63−98749(JP,A) 特開 昭53−134335(JP,A) 特開 平2−10450(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 12/08

Claims (10)

    (57)【特許請求の範囲】
  1. 【請求項1】 処理ユニットと; 該処理ユニットによって使用されるデータを記憶するた
    めのメインメモリと; 該メインメモリと前記処理ユニットとに接続され、前記
    メインメモリから、処理ユニット命令によって参照され
    るデータを記憶及び/又は先取りするためのデータキャ
    ッシュ;とを具えているコンピュータシステムであっ
    て、 前記データキャッシュが: 前記処理ユニットからのデータリクエストを分析し、前
    記データ参照の局所性の統計的予測関連性に基づき、前
    記データリクエストのデータ参照を複数の個々の群に分
    類するためのデータリクエスト分析手段と; 少なくとも2個のデータバッファと; 各データ参照を前記バッファのいづれか1個に割り当
    て、前記統計的予測関連性に基づき、キャッシュ性能を
    最適なものとするための手段と;を具えており、 前記統計的予測関連性に基づく前記複数の個々の群は、
    比較的強い時間的局所性の参照特性を持つものと予測さ
    れるS参照のデータ群と、比較的弱い時間的局所性の参
    照特性を持ち、かつ、比較的強い空間的局所性の参照特
    性を持つものと予測されるP参照のデータ群とを含み、 前記データバッファのうちには、S参照データを格納す
    るSバッファと、P参照データを格納/先取りするPバッ
    ファがあり、 前記データキャッシュは、さらに、 前記SバッファのなかでS参照に対するキャッシュミスが
    発生した場合に、前記Sバッファ用の新たなキャッシュ
    ブロックをフェッチし、前記PバッファのなかでP参照に
    対するキャッシュミスが発生した場合に、前記Pバッフ
    ァ用の新たなキャッシュブロックをフェッチし、前記P
    バッファのなかでS参照に対するキャッシュヒットが発
    生した場合に、キャッシュブロックを前記Pバッファか
    ら前記Sバッファに転送する手段をも含む、 ことを特徴とするコンピュータシステム。
  2. 【請求項2】 前記データリクエスト分析手段が、スタ
    ックデータのデータリクエストを識別するとともに、前
    記Sバッファを介して、このようにして識別されたデー
    タを記憶するためのデータリクエスト識別手段を具えて
    いることを特徴とする請求項1に記載のコンピュータシ
    ステム。
  3. 【請求項3】 前記データリクエスト分析手段が、グロ
    ーバル変数のデータリクエストを識別するとともに、前
    記Sバッファを介して、このようにして識別されたデー
    タを記憶するためのデータリクエスト識別手段を具えて
    いることを特徴とする請求項1または2に記載のコンピ
    ュータシステム。
  4. 【請求項4】 前記データリクエスト分析手段が、アレ
    イエレメントデータのデータリクエストを識別するとと
    もに、前記Pバッファを介して、前記識別されたデータ
    を先取り及び/又は記憶するためのデータリクエスト識
    別手段を具えていることを特徴とする請求項1〜3のい
    ずれか1項に記載のコンピュータシステム。
  5. 【請求項5】 前記データリクエスト分析手段が、直接
    アドレス指定方式を用いてデータリクエストを識別する
    とともに、Sバッファを介して、前記識別されたデータ
    を記憶するためのデータリクエスト識別手段を具えてい
    ることを特徴とする請求項1〜4のいずれか1項に記載
    のコンピュータシステム。
  6. 【請求項6】 前記処理ユニットがスタックポインタレ
    ジスタを具え、且つ前記データリクエスト識別手段が、
    スタックレジスタに基づき間接アドレス指定方式を用い
    て、データリクエストを識別するとともに、Sバッファ
    を介して前記識別されたデータを記憶するための手段を
    具えていることを特徴とする請求項1〜5のいずれか一
    に記載のコンピュータシステム。
  7. 【請求項7】 前記データリクエスト分析手段が、前記
    データを要求するプロセッサ命令を符号化するための手
    段を具えていることを特徴とする請求項1〜6のいずれ
    か一項に記載のコンピュータシステム。
  8. 【請求項8】 要求されるデータがキャッシュに存在す
    るかどうかを決定し、キャッシュミス又はS参照データ
    が存在する場合に、前記キャッシュミスに対応するデー
    タのキャッシュブロックを、前記メインメモリからSバ
    ッファに取り込むためのキャッシュ制御手段を更に具え
    ていることを特徴とする請求項1〜7のいずれか一項
    記載のコンピュータシステム。
  9. 【請求項9】 要求されるデータがPバッファに存在す
    るかどうかを決定し、S参照データにPバッファキャッ
    シュヒットが存在する場合、先ず第1に前記キャッシュ
    ヒットに対応するデータのキャッシュブロックを、Pバ
    ッファからSバッファへと転送し、次にPバッファ内の
    キャッシュブロックをとマークするためのキャッシュ
    制御手段を更に具えていることを特徴とする請求項1〜
    8のいずれか一項に記載のコンピュータシステム。
  10. 【請求項10】 プロセッサと、メインメモリと、複数
    のキャッシュブロックを持つデータキャッシュとを持つ
    コンピュータシステムにおけるデータオペランドを処理
    する方法であって、 第1の複数のキャッシュブロックを、強い時間局所性を
    持つ複数のオペランドを格納するためのSバッファとし
    て、および、強い空間局所性を持つ複数のオペランドを
    格納するためのPバッファとして、割り振るステップ
    と、 命令で参照されるオペランドを検知し、使用されるレジ
    スタとアドレシングモードとを決定するステップと、 参照されたオペランドを、前記決定されたアドレシング
    モードとレジスタとによって、前記Sバッファに相当す
    るS参照として、或いは、前記Pバッファに相当するP参
    照として分類するステップと、 前記参照されたオペランドの存在のために前記Sバッフ
    ァと前記Pバッファとを検査するステップと、 参照されたオペランドが前記Pバッファおよび前記Sバッ
    ファのなかに存在しない場合に、前記メインメモリから
    前記参照されたオペランドをフェッチし、それぞれの前
    記バッファの中に前記フェッチした参照を格納するステ
    ップと、 (i)前記参照されたオペランドが、前記Sバッファ、或い
    は前記Pバッファの中に存在するS参照である場合、およ
    び、(ii)前記参照されたオペランドが、前記Pバッフ
    ァのなかのP参照である場合に、前記Sバッファおよび前
    記Pバッファを変えないステップと、 参照されたオペランドが、前記Pバッファのなかに存在
    するS参照である場合に、前記S参照に相当する前記キャ
    ッシュブロックを、前記Pバッファから前記Sバッファへ
    転送し、転送された後の前記キャッシュブロックに空と
    マークするステップと、 前記Sバッファではなく前記Pバッファのためのオペラン
    ドを順次にフェッチするステップと、 を含むことを特徴とするデータオペランドを処理する方
    法。
JP00383592A 1991-01-15 1992-01-13 マルチバッファデータキャッシュを具えているコンピュータシステム Expired - Fee Related JP3425158B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US64123691A 1991-01-15 1991-01-15
US07/641236 1991-01-15

Publications (2)

Publication Number Publication Date
JPH04303248A JPH04303248A (ja) 1992-10-27
JP3425158B2 true JP3425158B2 (ja) 2003-07-07

Family

ID=24571535

Family Applications (1)

Application Number Title Priority Date Filing Date
JP00383592A Expired - Fee Related JP3425158B2 (ja) 1991-01-15 1992-01-13 マルチバッファデータキャッシュを具えているコンピュータシステム

Country Status (4)

Country Link
US (1) US5822757A (ja)
EP (1) EP0496439B1 (ja)
JP (1) JP3425158B2 (ja)
DE (1) DE69224084T2 (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06180669A (ja) * 1992-12-14 1994-06-28 Nec Niigata Ltd キャッシュシステム
US5848432A (en) * 1993-08-05 1998-12-08 Hitachi, Ltd. Data processor with variable types of cache memories
JPH0895857A (ja) * 1994-09-29 1996-04-12 Shikoku Nippon Denki Software Kk 入出力キャッシュ
US5732242A (en) 1995-03-24 1998-03-24 Silicon Graphics, Inc. Consistently specifying way destinations through prefetching hints
DE19713178A1 (de) * 1997-03-27 1998-10-01 Siemens Ag Schaltungsanordnung mit einem Prozessor und einem Datenspeicher
US7103794B2 (en) * 1998-06-08 2006-09-05 Cacheflow, Inc. Network object cache engine
US6122708A (en) * 1997-08-15 2000-09-19 Hewlett-Packard Company Data cache for use with streaming data
US6393526B1 (en) 1997-10-28 2002-05-21 Cache Plan, Inc. Shared cache parsing and pre-fetch
US6151662A (en) * 1997-12-02 2000-11-21 Advanced Micro Devices, Inc. Data transaction typing for improved caching and prefetching characteristics
US6202129B1 (en) * 1998-03-31 2001-03-13 Intel Corporation Shared cache structure for temporal and non-temporal information using indicative bits
US6401193B1 (en) 1998-10-26 2002-06-04 Infineon Technologies North America Corp. Dynamic data prefetching based on program counter and addressing mode
TW448360B (en) * 1998-11-25 2001-08-01 Fujitsu Siemens Computers Gmbh Cache-memory device
US6378042B1 (en) * 1999-08-11 2002-04-23 Fast-Chip, Inc. Caching associative memory
AU7728300A (en) * 1999-11-22 2001-06-04 Ericsson Inc. Buffer memories, methods and systems for buffering having seperate buffer memories for each of a plurality of tasks
JP2001273137A (ja) * 2000-03-28 2001-10-05 Toshiba Corp マイクロプロセッサ
US6668307B1 (en) * 2000-09-29 2003-12-23 Sun Microsystems, Inc. System and method for a software controlled cache
US6598124B1 (en) * 2000-09-29 2003-07-22 Sun Microsystems, Inc. System and method for identifying streaming-data
US6578111B1 (en) * 2000-09-29 2003-06-10 Sun Microsystems, Inc. Cache memory system and method for managing streaming-data
JP4116413B2 (ja) * 2002-12-11 2008-07-09 株式会社日立製作所 プリフェッチアプライアンスサーバ
US7284014B2 (en) 2003-04-07 2007-10-16 Hitachi, Ltd. Pre-fetch computer system
JPWO2006109421A1 (ja) 2005-04-08 2008-10-16 松下電器産業株式会社 キャッシュメモリ
GB2425030A (en) * 2005-04-09 2006-10-11 Tenomichi Ltd Managed network render targets for routing graphical information
JP2008257508A (ja) * 2007-04-05 2008-10-23 Nec Electronics Corp キャッシュ制御方法およびキャッシュ装置並びにマイクロコンピュータ
US8312219B2 (en) * 2009-03-02 2012-11-13 International Business Machines Corporation Hybrid caching techniques and garbage collection using hybrid caching techniques
CN102141905B (zh) * 2010-01-29 2015-02-25 上海芯豪微电子有限公司 一种处理器体系结构
US10114750B2 (en) 2012-01-23 2018-10-30 Qualcomm Incorporated Preventing the displacement of high temporal locality of reference data fill buffers
US10552329B2 (en) * 2014-12-23 2020-02-04 Prophetstor Data Services, Inc. SSD caching system for hybrid storage
US9772824B2 (en) 2015-03-25 2017-09-26 International Business Machines Corporation Program structure-based blocking
KR20160148952A (ko) * 2015-06-17 2016-12-27 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4437149A (en) * 1980-11-17 1984-03-13 International Business Machines Corporation Cache memory architecture with decoding
JPS5891570A (ja) * 1981-11-27 1983-05-31 Nec Corp 情報処理システム
US4594659A (en) * 1982-10-13 1986-06-10 Honeywell Information Systems Inc. Method and apparatus for prefetching instructions for a central execution pipeline unit
WO1984002799A1 (en) * 1982-12-30 1984-07-19 Ibm A hierarchical memory system including separate cache memories for storing data and instructions
US4701844A (en) * 1984-03-30 1987-10-20 Motorola Computer Systems, Inc. Dual cache for independent prefetch and execution units
CA1279731C (en) * 1986-06-27 1991-01-29 Ruby Bei-Loh Lee Cache memory with variable fetch and replacement schemes
US4928239A (en) * 1986-06-27 1990-05-22 Hewlett-Packard Company Cache memory with variable fetch and replacement schemes
US4853846A (en) * 1986-07-29 1989-08-01 Intel Corporation Bus expander with logic for virtualizing single cache control into dual channels with separate directories and prefetch for different processors
US4980823A (en) * 1987-06-22 1990-12-25 International Business Machines Corporation Sequential prefetching with deconfirmation
US4926323A (en) * 1988-03-03 1990-05-15 Advanced Micro Devices, Inc. Streamlined instruction processor

Also Published As

Publication number Publication date
EP0496439A3 (en) 1993-07-21
EP0496439A2 (en) 1992-07-29
JPH04303248A (ja) 1992-10-27
DE69224084T2 (de) 1998-07-23
US5822757A (en) 1998-10-13
EP0496439B1 (en) 1998-01-21
DE69224084D1 (de) 1998-02-26

Similar Documents

Publication Publication Date Title
JP3425158B2 (ja) マルチバッファデータキャッシュを具えているコンピュータシステム
US11693791B2 (en) Victim cache that supports draining write-miss entries
US7975108B1 (en) Request tracking data prefetcher apparatus
US8074026B2 (en) Scatter-gather intelligent memory architecture for unstructured streaming data on multiprocessor systems
US6496902B1 (en) Vector and scalar data cache for a vector multiprocessor
US5694568A (en) Prefetch system applicable to complex memory access schemes
US7908439B2 (en) Method and apparatus for efficient replacement algorithm for pre-fetcher oriented data cache
US7073030B2 (en) Method and apparatus providing non level one information caching using prefetch to increase a hit ratio
WO1996041250A2 (en) System and method for processing multiple requests and out of order returns
JPS63150731A (ja) コンピュータシステムおよびその実行方法
US5784711A (en) Data cache prefetching under control of instruction cache
US6959363B2 (en) Cache memory operation
JP2001249846A (ja) キャッシュメモリ装置及びデータ処理システム
JP3095831B2 (ja) 計算機の作動方法及び計算機
JPS6240553A (ja) バツフアメモリブロツク先取り方式

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees