JPH0721085A - メモリとi/o装置の間で転送されるデータをキャッシュするためのストリーミングキャッシュおよびその方法 - Google Patents

メモリとi/o装置の間で転送されるデータをキャッシュするためのストリーミングキャッシュおよびその方法

Info

Publication number
JPH0721085A
JPH0721085A JP6072938A JP7293894A JPH0721085A JP H0721085 A JPH0721085 A JP H0721085A JP 6072938 A JP6072938 A JP 6072938A JP 7293894 A JP7293894 A JP 7293894A JP H0721085 A JPH0721085 A JP H0721085A
Authority
JP
Japan
Prior art keywords
cache
data
memory
cache line
array
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP6072938A
Other languages
English (en)
Inventor
Juay K Tan
ジェイ・ケイ・タン
Robert W Kwong
ロバート・ダブリュ・ウォン
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 JPH0721085A publication Critical patent/JPH0721085A/ja
Pending legal-status Critical Current

Links

Classifications

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

Landscapes

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

Abstract

(57)【要約】 (修正有) 【目的】 I/Oバスのデータ転送帯域幅を広くするた
めのI/Oストリーミングキャッシュを得る。 【構成】 I/Oストリーミングキャッシュは1つのデ
ータアレイと、親タグアレイ(TA)32と、1つの子
TA34と、制御回路とを備える。データアレイは、読
出し動作中にプリフェッチされるデータと、書込み動作
中に書込まれるデータを蓄積するためキャッシュライン
35を備えラインは少なくとも2つのキャッシュライン
セグメント(CS)を有する。親TAは、対応するキャ
ッシュラインによりマップされているメモリページを記
述するために、いくつかの親タグエントリを備える。子
TAは、対応するCSに蓄積されているデータブロック
を記述するために、いくつかの子タグエントリを備え
る。各CSに1つの子タグエントリが設けられる。制御
回路は、データアレイと、親TAおよび子TAを用い
て、I/O装置によりメモリに対するデータの読出しと
書込み動作に対する応答を制御する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はコンピュータ装置の分野
に関するものであり、とくに、マイクロプロセッサ装置
のメモリと入力/出力(I/O)装置との間のデータ転
送に関するものである。更に詳しく言えば、本発明は各
転送が大量の順次データを含むようなデータ転送に関す
るものである。
【0002】
【従来の技術】従来、コンピュータ装置のメモリと入力
/出力(I/O)装置との間のデータ転送は次の3つの
やり方のうちの1つにより行われている。 1.プログラム制御I/O。この場合には、メモリと入
力/出力(I/O)装置との間の全てのデータ転送は中
央処理装置(CPU)、更に正確に言えば、CPUによ
り実行されるプログラムにより完全に制御される。 2.割り込みI/O。この場合には、メモリと入力/出
力(I/O)装置との間の全てのデータ転送はI/O装
置からの割り込みによって開始される。それに応じて、
CPUは現在実施しているものを延期し、割り込んでき
たI/O装置の要求に専念する。 3.ダイレクトメモリアクセス(DMA)。この場合に
は、メモリと入力/出力(I/O)装置との間の全ての
データ転送はCPUを含むこと無しに行われる。
【0003】DMA手法はメモリとI/O装置の間でデ
ータを移動させるはるかに速いやり方である。典型的に
は、DMA制御器が採用される。I/O装置の要求に応
じて、DMA制御器はシステムバスを制御するために調
停器を介してCPUと競う。システムバスを制御できた
ら、DMA制御器はデータをメモリと、要求しているI
/O装置との間でデータを転送させる。DMA制御器は
データの実際の転送に関与する場合もあり、関与しない
場合もある。DMA制御器がデータの実際の転送に関与
するとすると、通常データは先入れ先出し(FIFO)
を原則として転送される。いいかえると、データがDM
A制御器からI/O装置(メモリ)へ再び送られている
間、メモリ(I/O装置)は待つ。ある種のDMA制御
器はメモリ(I/O装置)からの次のデータ転送をI/
O装置(メモリ)への前のデータの再送信と平行に行う
ことができるが、次のデータは前のデータに続いていな
ければならない。多数のI/O装置によるデータの同時
転送を支援するために、DMA制御器内部で論理がされ
る。システム性能の観点からはメモリとI/O装置の間
で転送されるI/Oデータをキャッシュすることが望ま
しいが、データコヒーレンスを維持することが複雑であ
るから、通常データがキャッシュされる場合のメモリと
CPUの間のデータ転送とは異なって、I/Oデータは
通常キャッシュされない。キャッシュされたデータおよ
びキャッシュされないI/Oデータが古くならないこと
を確保するために、ある種の基本的なキャッシュコヒー
レンスメカニズムへ結合されているライトスルー中央キ
ャッシュのみ、またはライトバック中央キャッシュのみ
が採用される。
【0004】1990年4月12日に出願され、本願出
願人へ譲渡された米国特許出願07/508,979お
よび07/508,939には、I/Oキャッシュおよ
び相補的に組合わされたハードウェアおよびソフトウェ
アキャッシュコヒーレンスメカニズムが開示されてい
る。この開示されているI/Oキャッシュおよび相補的
なキャッシュコヒーレンスメカニズムの下においては、
I/O装置が少なくとも3つのクラスへ分類される。ク
ラス1装置の場合には、オペレーティングシステムは独
特のメモリページセットをそれらのI/O装置へダイナ
ミックに割り当てる。I/Oキャッシュはそれらの独特
のメモリページセットを対応する独特なI/Oキャッシ
ュラインセットへ、1メモリページごとに1つのI/O
キャッシュラインずつ、マップする。クラス2装置の場
合には、オペレーティングシステムはそれらの独特のメ
モリページセットをそれらのI/O装置へ統計的に割り
当てる。I/Oキャッシュはそれらの独特のメモリペー
ジセットを、所定数のI/Oキャッシュラインを有する
対応する独特なI/Oキャッシュラインセットへマップ
する。クラス3装置の場合には、オペレーティングシス
テムは割り当てられているメモリページをキャッシュ可
能でないものとしてマークすることにより、I/Oキャ
ッシュをバイパスする。
【0005】マルチプロセッサ装置の技術が改良され続
けているから、自身の専用キャッシュを有するますます
多くのI/O装置およびプロセッサが単一のマルチプロ
セッサ装置に組み込まれる。I/Oデータをメモリから
フェッチし、種々の専用キャッシュにおいてコヒーレン
スを維持するための固有の待ち時間のために、I/O装
置をI/Oキャッシュへ結合するI/Oバスは、その最
高データ転送帯域幅性能以下で動作する傾向がある。最
高データ転送帯域幅性能の近くで動作するこの性能は、
より遅いI/Oバスに対してはとくに望ましく、とく
に、大量の順次データの流れを転送する場合には望まし
い。
【0006】1991年10月17日に出願され、本願
出願へ譲渡された米国特許出願07/778,507に
おいては、スループットが向上されたDMA制御器が開
示されている。開示されているDMA制御器はバッファ
制御回路と、2つのバッファと、2つの対応するバッフ
ァタグと、2つの対応する有効/汚染ビットグループ
と、I/O装置インタフェースおよびシステムバスイン
タフェースとを備える。I/OインタフェースはI/O
装置から読出し動作と書込み動作を受け、システムバス
インタフェースはデータバイトをメモリから取り出し、
メモリへ書込む。読出し動作中は、2つのバッファがプ
リフェッチされたデータを含めて取り出されたデータを
蓄積する。書込み動作中は、2つのバッファはメモリへ
書き込むべきデータを蓄積する。2つの対応するバッフ
ァタグは、2つのバッファに蓄積されているデータバイ
トに関連するメモリアドレスを識別する。2つの対応す
る有効/汚染ビットグループは2つのバッファに蓄積さ
れているデータバイトが有効/汚染であるかどうかを識
別する。バッファ制御回路はデータ読出し動作とデータ
書込み動作を制御する。読出し動作中は、バッファ制御
回路は読出されているデータバイトがバッファの1つに
有効に蓄積されているかどうか、またはそれらのデータ
バイトをメモリから取り出す必要があるかどうかを判定
する。バッファ制御回路は、データバイトをプリフェッ
チするかどうか、および取り出され/プリフェッチされ
たデータバイトをどこに蓄積するかも判定する。書込み
動作中は、バッファ制御回路は書込まれるデータバイト
をどこに蓄積するか、および汚染データバイトをいつメ
モリへ蓄積するかを判定する。スループットが向上した
結果として、より高いデータ転送帯域幅レートがI/O
バスにおいて維持される。しかし、従来のDMA制御器
と同様に、多数のI/O装置による同時データ転送を指
示するために、指示される各I/O装置に対してDMA
制御器内でバッファやバッファタグ等を多数用意せねば
ならない。
【0007】
【発明が解決しようとする課題】本発明はI/Oデータ
をキャッシュするために、とくに、大量の順次データの
流れを転送する時に、大量の複製されたハードウェア資
源を必要とすること無しに、メモリとI/O装置の間の
I/Oデータ転送レートを一層向上するI/Oストリー
ミングキャッシュを提供するものである。以下の説明か
ら明らかになるであろうが、本発明はマルチプロセッサ
装置、とくにマルチプロセッサをベースとするマルチプ
ロセッサ装置へとくに応用される。
【0008】
【課題を解決するための手段】本発明の下においては、
マルチプロセッサ装置へI/Oストリーミングキャッシ
ュを用意することにより、その装置内のI/Oバスに対
してより広いデータ転送帯域幅が達成される利点があ
る。I/Oストリーミングキャッシュは少なくとも1つ
のデータアレイと、親タグアレイと、少なくとも1つの
子タグアレイと、制御回路とを備える。データアレイは
いくつかのキャッシュラインを備える。各キャッシュラ
インは少なくとも2つのキャッシュラインセグメントを
備える。親タグアレイはいくつかの親タグエントリを備
える。各キャッシュラインセグメントに1つの親タグエ
ントリが設けられる。各親タグエントリはメモリページ
アドレスと、対応するキャッシュラインのメモリページ
アクセスモード指示器とを備える。子タグアレイはいく
つかの子タグエントリを備える。各キャッシュラインセ
グメントに1つの子タグエントリが設けられる。各子タ
グエントリはデータブロックアドレスと、オフセット
と、バイトカウントと、対応するキャッシュラインセグ
メントのデータ妥当性指示器とを備える。各親タグエン
トリは、その対応するキャッシュラインのキャッシュラ
インセグメントの子タグエントリに対する親である。
【0009】読出し動作中は、I/Oキャッシュライン
セグメントは、プリフェッチされたデータを含めて、取
り出されたデータを蓄積する。書込み動作中は、I/O
キャッシュラインセグメントはメモリへ書込むべきデー
タを蓄積する。親タグエントリは、対応する子タグエン
トリと共に、種々のキャッシュラインのキャッシュライ
ンセグメントに蓄積されているデータブロックに関連す
るメモリアドレスを識別する。妥当性指示器は、キャッ
シュラインセグメントに蓄積されているデータブロック
が妥当か/汚染かを判定する。制御回路はI/O装置に
よるメモリに対するデータ読出し動作およびデータ書込
み動作に対する応答を制御する。読出し動作中は、読出
されているデータブロックがキャッシュラインセグメン
トの1つに有効に蓄積されているかどうか、およびそれ
らのデータブロックをメモリから取り出す必要があるか
どうかを制御回路が判定する。データブロックをプリフ
ェッチするかどうか、取り出されあるいはプリフェッチ
されたデータブロックをどこに蓄積するかも制御回路は
決定する。書込み動作中は、書込まれているデータブロ
ックをどこに蓄積するか、汚染データバイトをいつメモ
リへ書込むかを制御回路が決定する。
【0010】
【実施例】この明細書においては、コンピュータ装置に
ついて説明する。以下の説明においては、本発明を完全
に理解できるようにするために、特定の数、特定の材
料、および特定の構成などのような特定の詳細を述べ
る。しかし、本発明はそのような特定の詳細なしで実施
できることが当業者には明らかであろう。他の場合に
は、本発明を不必要にあいまいにしないようにするため
に、周知の装置は線図で、またはブロック図の態様で示
す。
【0011】まず、本発明の教示を含むマルチプロセッ
サ装置を示すブロック図が示されている図1を参照す
る。このマルチプロセッサ装置10は、システムバスへ
結合されるいくつかのプロセッサ12* を備える。各プ
ロセッサはそれ自身の専用キャッシュを有する。マルチ
プロセッサ装置10はメモリ(図示せず)と、システム
制御器16と、本発明の教示を含むI/O制御器18と
を更に備える。2つの制御器16、18は相互に結合さ
れるとともに、システムバス14へ結合される。I/O
制御器18は種々の動作速度を持ついくつかのI/Oバ
ス20* へも結合される。それに応じてI/O装置22
* はI/Oバス20* へ結合される。I/O制御器18
については、残りの図を参照して更に詳しく説明する。
プロセッサ12* と、システムバス14と、システム制
御器16と、I/Oバス20* と、I/O装置22*
はほとんどのコンピュータ装置において見出される広い
範囲のそれらの素子を表すことを意図するものである。
それらの素子の構成および機能は周知であるからこれ以
上は説明しない。また、専用のキャッシュとI/Oバス
をいくつか有するマルチプロセッサ装置の例について、
以下の説明を基にして、本発明を説明するが、零または
複数の中央キャッシュおよび1つまたは複数のI/O装
置を有するマルチプロセッサ装置またはユニプロセッサ
装置において実施できることがわかるであろう。
【0012】次に、図1のI/O制御器を更に詳しく示
す図2を参照する。I/O制御器18はI/Oメモリ管
理器(IOMMU)27と、I/Oキャッシュ28と、
本発明のI/Oストリーミングキャッシュ30とを備え
る。2つのI/Oキャッシュ28、30は互いに結合さ
れると共に、IOMMU27へ結合される。また、I/
Oキャッシュ28はシステムバスと、より高速のI/O
バス20aとへ結合され、I/Oストリーミングキャッ
シュ30はより低速のI/Oバス20bへ結合される。
IOMMU27はシステムバスへも結合される。I/O
ストリーミングキャッシュ30については以下に更に詳
しく説明する。IOMMU27はほとんどのコンピュー
タ装置において見出される広い範囲のメモリ管理器を表
すことを意図するものである。それの構成および機能は
周知であるからこれ以上説明しない。I/Oキャッシュ
28は、米国特許出願07/508,979および07
/508,939に記載されているI/Oキャッシュを
含む種々のやり方で実現でいるが、それに限定されるも
のではない。更に、以下の説明を基にして、I/Oキャ
ッシュを有するマルチプロセッサ装置の例について説明
するが、本発明はI/Oキャッシュを有し、またはI/
Oキャッシュを有しない装置で実施できることが分かる
であろう。
【0013】次に、本発明のストリーミングキャッシュ
を更に詳しく示す2つのブロック図が示されている図
3、図4を参照する。I/Oストリーミングキャッシュ
30は少なくとも1つのキャッシュデータアレイ36
と、親タグアレイ32と、少なくとも1つの子タグアレ
イ34と、制御回路(図示せず)とを備える。キャッシ
ュデータアレイ36はいくつかのキャッシュライン35
* を備える。読出し動作中にメモリから取り出され、か
つプリフェッチされたデータを蓄積し、書込み動作中に
メモリへ書込まれるデータを蓄積するために、各キャッ
シュラインは少なくとも2つのキャッシュラインセグメ
ント37* を有する。各キャッシュライン35* は、種
々の周知のキャッシュマッピングのやり方の1つでメモ
リのメモリページへマップされる。また、キャッシュラ
インおよびキャッシュラインセグメントは種々の周知の
置換のやり方の1つで割り当てられる。親タグアレイ3
2は、キャッシュライン35* の1つを記述するため
に、いくつかの親タグエントリ31* を備える。各キャ
ッシュライン35* ごとに1つの親タグエントリが設け
られる。子タグアレイ34はキャッシュラインセグメン
ト37* の1つを記述するために、いくつかの子タグエ
ントリ33* を備える。各キャッシュラインセグメント
37* ごとに1つの子タグエントリ33* が設けられ
る。各親タグエントリ31* は子タグエントリ33*
対する親である。その子タグエントリ33* はそれの対
応するキャッシュライン35* のキャッシュラインセグ
メント37* の子タグエントリである。制御回路は読出
し動作中および書込み動作中にそれらのアレイ32〜3
6へのアクセスを制御するための制御論理を備える。
【0014】一実施例においては、I/Oストリーミン
グキャッシュ30は1つのデータアレイ36と、1つの
子タグアレイ34と、制御回路とを備える。データアレ
イ36は16のキャッシュライン35* を備える。各キ
ャッシュライン35* は2つの64バイトのキャッシュ
ラインセグメント37* を備える。キャッシュライン3
* はメモリのメモリページへ、メモリページごとに1
つのキャッシュライン35* ずつ、完全に関連するやり
方でマップされる。キャッシュライン35* は最長時間
未使用(LRU)置換法を用いて割り当てられ、キャッ
シュライン内のキャッシュラインセグメント37*
「ピンポン」のようなやり方で割り当てられる。親タグ
アレイ32は、16のキャッシュライン35* の各1つ
に1つ、合計16の親タグエントリ31* を備える。子
タグアレイ34は、32の64バイトのキャッシュライ
ンセグメント37* の各1つに1つの子タグエントリ3
*、合計32の子タグエントリ33* を備える。各キ
ャッシュライン35* は2つのキャッシュラインセグメ
ント37* を備える。各親タグエントリ31* は2つの
子タグエントリ33* に対する親である。
【0015】次に、本発明の親タグエントリおよび子タ
グエントリの詳細を示す2つのブロック図が示されてい
る図5a、図5bを参照する。図5aに示すように、各
親タグエントリ31* は、対応するキャッシュラインへ
マップされている現在のメモリページを識別するメモリ
ページアドレスと、そのマップされているメモリページ
からデータが取り出されまたはプリフェッチされている
か、またはそのメモリページへデータが書込まれている
かを示すメモリページアクセスモード指示器とを備え
る。各親タグエントリ31* は、メモリページサイズを
指示することにより種々のメモリページサイズをサポー
トすることを許すページサイズ指示器を備えることが好
ましい。図5bに示すように、各子タグエントリ33*
は、対応するキャッシュラインセグメントに蓄積されて
いる現在マップされるメモリページのデータブロックを
識別するデータブロックアドレスと、対応するキャッシ
ュラインに現在蓄積されているデータが有効であるか否
かを指示する妥当性指示器とを備える。各子タグエント
リ33* は、スタートバイトのためにキャッシュライン
セグメントへのオフセットを指示するオフセット指示器
と、対応するキャッシュラインセグメントに現在蓄積さ
れているその数のバイトのためのバイトカウントとを更
に備える。
【0016】次に、メモリ中のデータを本発明のI/O
ストリーミングキャッシュを用いてI/O装置により読
出す方法を示すブロック図が示されている図6を参照す
る。図示のように、読出し動作中は、最初に、I/Oス
トリーミングキャッシュの制御回路はキャッシュ読出し
ヒットが存在するかどうかを判定する、ステップ44。
親タグエントリのメモリページアドレスとのアドレス一
致が存在し、一致した親タグエントリのメモリページア
クセスモードが「読出し」であり、アドレスおよびアク
セスモードが一致している親タグエントリに属する子タ
グエントリのデータブロックアドレスの1つとのアドレ
ス一致が存在し、かつアドレスされ、一致させられた子
タグエントリの妥当性指示器が蓄積されているデータが
有効であることを指示するならば、キャッシュ読出しヒ
ットが存在する。
【0017】キャッシュ読出しヒットが存在するなら
ば、キャッシュ読出しヒットを生じているキャッシュラ
インセグメントに蓄積されているデータブロックをI/
O装置へ直ちに戻し、戻されているデータブロックに対
して所定の関係を持つデータブロックをプリフェッチ
し、キャッシュラインヒットのキャッシュラインセグメ
ントの1つに蓄積され、データブロックアドレスおよび
対応する子タグエントリの妥当性指示器をそれに従って
更新する、ステップ46。一実施例においては、プリフ
ェッチされたデータブロックは現在読出されているデー
タブロックに続く2番目のデータブロックである。現在
読出されているデータブロックの前のデータブロックが
読出された時に、現在読出されているデータブロックに
続く最初のデータブロックがプリフェッチされる。
【0018】現在の読出しアクセスがキャッシュ読出し
ミスとなると、制御回路は、親タグエントリとのアドレ
スおよびアクセスモード一致の結果を用いて、少なくと
も1つの親タグヒットが存在するかどうかを更に判定す
る、ステップ48。親タグヒットが存在するものとする
と、制御回路は再実行要求とブロッキング要求をI/O
バスに対して出して、読出し要求を再び試みさせるが、
一時的にブロックさせる、ステップ54。再実行要求お
よびブロッキング要求を出すと、制御回路は読出されて
いるデータブロックと、現在アクセスされているデータ
ブロックに対して所定の関係を持つ所定数のデータブロ
ックとを、メモリからフェッチ/プリフェッチさせ、割
り当てられたキャッシュラインのキャッシュラインセグ
メントに蓄積させ、対応する子タグエントリを適切なア
ドレスおよび妥当性指示器で更新させる、ステップ5
6。それから、制御回路はブロック解除要求をI/Oバ
スへ出してブロックされている読出し要求を解放する、
ステップ58。その結果、読出し要求が再び試みられ、
その結果としてキャッシュ読出しヒットと、読出されて
いるデータブロックの読出しI/O装置への復帰と、別
のデータブロックのプリフェッチとなる、ステップ44
〜46。一実施例においては、1つのデータブロックを
プリフェッチする。プリフェッチされたデータブロック
は、現在読出され、および現在フェッチされているデー
タブロックに続く最初のデータブロックである。また、
本発明を、要求の実行を一時的に停止し、それに続いて
要求の実行を再開するために、再実行要求と、ブロック
要求およびブロック解除要求を用いる制御回路について
説明するが、本発明は要求の実行を停止し、および再開
する別の等しいやり方で実施できることがわかるであろ
う。
【0019】現在の読出しアクセスが親タグヒットがな
くてキャッシュ読出しミスとなったとすると、制御回路
は、少なくともページヒットが存在するかどうか、メモ
リページヒットのアクセスモードが「書込み」であるか
どうかを、親タグエントリに対するタグ一致の結果を用
いて更に判定する、ステップ60。メモリページヒット
が存在するが、メモリページが書込まれていたとする
と、メモリページヒットを現在マッピングしているキャ
ッシュラインのキャッシュラインセグメント中に排出さ
れていない汚染ビットが存在するかどうかを、制御回路
は更に判定する。キャッシュラインヒットのキャッシュ
ラインセグメント中に排出されていない汚染バイトが存
在するものとすると、制御回路はそれらの汚染バイトを
排出させ、対応する子タグエントリを更新させる、ステ
ップ64。排出されていない汚染バイトが存在しないと
判定した時、または排出されていない汚染バイトをフラ
ッシュした時は、制御回路は親タグエントリのアクセス
モードを更新し、ステップ54〜58を、それからステ
ップ44〜46を先に述べたように実行させる。
【0020】現在読出されているアクセスが親タグヒッ
トがなく、かつページヒットさえもなくキャッシュ読出
しミスになったとすると、制御回路はページマッピング
を検査する、ステップ50。制御回路はIOMMUを検
査して、メモリページがマップされたことを確認する。
メモリページがマップされないとすると、制御回路はI
OMMUがマップされたメモリページを持つことを要求
する。マッピングの有効性を確認すると、制御回路はキ
ャッシュラインを割り当てさせ、対応する親タグエント
リをそれに従って更新する、ステップ52。キャッシュ
ラインの1つの割り当ては、割り当てられているキャッ
シュラインの内容を、マップされたメモリページのアク
セスモードと、キャッシュラインセグメントに蓄積され
ている任意のデータが有効であるかどうかに応じて、フ
ラッシングすることまたは無効にすることを含むことが
できる。キャッシュラインの内容をフラッシングまたは
無効にすることについては、以下に更に詳しく説明す
る。
【0021】次に、本発明のI/Oストリーミングキャ
ッシュを用いるI/O装置によりデータをメモリへ書込
む方法を示すブロック図が示されている図7を参照す
る。図示のように、書込み動作中は、最初に、I/Oス
トリーミングキャッシュの制御回路がキャッシュ書込み
ヒットが存在するかどうかを判定する、ステップ68。
同様に、親タグエントリのメモリページアドレスとの一
致が存在し、アドレスが一致した親タグエントリのメモ
リページアクセスモードが「書込み」であり、アドレス
およびアクセスモードが一致している親タグエントリの
子タグエントリのデータブロックアドレスの1つとのア
ドレス一致が存在し、アドレスされ、一致させられた子
タグエントリの妥当性指示器が蓄積されているデータが
有効であることを指示し、かつアドレスされ、一致させ
られた子タグエントリのオフセットおよびバイトカウン
トを基にした次の場所一致が存在するならば、キャッシ
ュ書込みヒットが存在する。
【0022】キャッシュ書込みヒットが存在するなら
ば、キャッシュ書込みヒットを生ずるキャッシュライン
セグメントの適切な場所にデータを書込む、ステップ7
0。また、対応する子タグエントリのオフセットおよび
バイトカウントをそれに従って適切に更新する、ステッ
プ70。
【0023】現在の書込みアクセスがキャッシュ書込み
ミスとなると、制御回路は、親タグエントリに対するア
ドレスおよびアクセスモード一致の結果を用いて、少な
くとも親タグヒットが存在するかどうかを更に判定す
る、ステップ72。親タグヒットが存在するならば、制
御回路はメモリページヒットをマッピングするキャッシ
ュラインをフラッシュさせ、汚染バイトをキャッシュラ
インセグメントへ排出させる、ステップ76。それか
ら、キャッシュラインセグメントの1つを選択し、選択
されたキャッシュラインセグメントの適切な場所にデー
タを書込む、ステップ70。また、対応する子タグエン
トリのオフセットおよびバイトカウントをそれに従って
更新する、ステップ70。
【0024】現在の書込みアクセスが親タグヒット無し
でキャッシュ読出しをミスすると、制御回路は、親ペー
ジヒットが存在するかどうか、メモリページヒットのア
クセスモードが「読出し」であるかどうかを更に判定す
る。ページヒットは存在するが、メモリページヒットが
読出しであるとすると、制御回路はページに書込み可能
であることをIOMMUで有効にする、ステップ78。
各種の周知のやり方の任意の1つを基にして、メモリペ
ージを書込み可能であると、または読出し専用と示すこ
とができる。ページが書込み可能でないとすると、制御
回路は例外条件を生じさせ、書込み要求を打ち切らせ
る。他方、メモリページが書込み可能であることを確認
すると、先に説明したようにステップ70を実行させる
前に、制御回路は親タグエントリのアクセスモードと子
タグエントリのVFLAGsを更新させて、データを無
効にする、ステップ80。
【0025】現在読出されているアクセスが親タグヒッ
トがなく、かつページヒットさえもなく、キャッシュ書
込みミスになったとすると、制御回路は先に述べたよう
にページが書込み可能であることをIOMMUで検査す
る、ステップ82。ページヒットが書込み可能であるこ
とを確認すると、制御回路はキャッシュラインの1つを
割り当て、任意の汚染データを条件付きでフラッシング
し、または、必要があれば割り当てられているキャッシ
ュラインのキャッシュラインセグメント中の任意の有効
データを無効にし、先に説明したようにステップ70を
実行させる前に、対応する親タグエントリと子タグエン
トリをそれに従って更新する、ステップ84。
【0026】ここで図6と図7を参照すると、先に説明
したように、種々の条件、たとえば、ステップ64、8
0および84の下においては、キャッシュラインのキャ
ッシュラインセグメント中の汚染データまたは有効デー
タをフラッシュまたは無効にすべきである。フラッシン
グまたは無効化は、フラッシング/無効化アドレスレジ
スタの使用を含む、周知のやり方のうちの任意の1つで
実現できる。しかし、それはフラッシング/無効化アド
レスレジスタの使用に限定されるものではない。フラッ
シング/無効化アドレスレジスタのやり方の下において
は、フラッシングまたは無効化をメモリページアドレス
をフラッシング/無効化アドレスレジスタに書込むこと
によりトリガする。親タグエントリ中のメモリページア
ドレスがフラッシング/無効化アドレスレジスタ中のメ
モリページアドレスに一致し、親タグエントリ中のアク
セスモードが「書込み」であるとすると、対応するキャ
ッシュラインのキャッシュラインセグメントに蓄積され
ている汚染バイトを排出させる。他方、親タグエントリ
中のメモリページアドレスがフラッシング/無効化アド
レスレジスタ中のメモリページアドレスに一致し、親タ
グエントリ中のアクセスモードが「読出し」であるとす
ると、対応するキャッシュラインのキャッシュラインセ
グメント中の有効データを無効にする。
【0027】また、本発明のI/Oストリーミングキャ
ッシュを用いてI/Oデータを読出し、および書込むた
めの、図6と図7に示されている方法のステップを、多
数のI/Oポートを有するI/O装置により使用して、
メモリ中の多数のデータの流れを同時にアクセスでき
る。
【図面の簡単な説明】
【図1】 本発明の教示に含まれるマルチプロセッサの
例を示す。
【図2】 図1のI/O制御器を更に詳しく示す。
【図3】 本発明のI/Oストリーミングキャッシュを
詳細に示す。
【図4】 本発明のI/Oストリーミングキャッシュを
詳細に示す。
【図5】 本発明のI/Oストリーミングキャッシュの
親キャッシュタグと子キャッシュタグを詳しく示す。
【図6】 メモリ中のデータを本発明のI/Oストリー
ミングキャッシュを用いてI/O装置により読出す方法
を示す。
【図7】 本発明のI/Oストリーミングキャッシュを
用いてI/O装置によりデータをメモリへ書込む方法を
示す。
【符号の説明】
10…マルチプロセッサ装置、12…プロセッサ、14
…システムバス、16…システム制御器、18…I/O
制御器、20…I/Oバス、22…I/O装置、27…
I/Oメモリ管理器、28…I/Oキャッシュ、30…
I/Oストリーミングキャッシュ、32…親タグアレ
イ、34…子タグアレイ、35…キャッシュライン、3
6…キャッシュデータアレイ、37…キャッシュライン
セグメント。
フロントページの続き (72)発明者 ロバート・ダブリュ・ウォン アメリカ合衆国 94024 カリフォルニア 州・ロス アルトス・ロシータ アヴェニ ュ・466

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 メモリと、このメモリへ結合される入力
    /出力(I/O)バスと、このI/Oバスへ結合される
    複数のI/O装置とを備えているコンピュータ装置の読
    出し書込み動作中にメモリとI/O装置との間で転送さ
    れるデータをキャッシュするストリーミングキャッシュ
    において、 a) 読出しおよび書込み動作中前記メモリとI/O装
    置との間を転送させる前記データであって、読出し動作
    中にメモリから前記I/O装置へ転送されることを予測
    してプリフェッチされたデータを含むデータをキャッシ
    ュする、それぞれが少なくとも二つのキャッシュライン
    セグメントを有し、かつそれぞれがメモリページごとに
    割り当てられるキャッシュラインを複数有する少なくと
    も一つのキャッシュデータアレイを有するキャッシュデ
    ータアレイ手段と、 b) 1キャッシュラインに1親キャッシュタグエント
    リというように前記キャッシュラインに対応した複数の
    親キャッシュタグエントリを備えた親キャッシュタグア
    レイを含み、それぞれの親キャッシュタグエントリがそ
    れぞれ対応するキャッシュラインのキャッシュラインセ
    グメントでキャッシュされるデータの共通の属性を記述
    するようになっていて、前記キャッシュラインでキャッ
    シュされたデータを記述する第1のキャッシュタグアレ
    イ手段と、 c) 1キャッシュラインセグメントに1子キャッシュ
    タグエントリというように前記キャッシュラインセグメ
    ントに対応した複数の子キャッシュタグエントリを備え
    た子キャッシュタグアレイを含み、前記子キャッシュタ
    グエントリがそれぞれ対応するキャッシュラインセグメ
    ントでキャッシュされたデータの独特の属性を記述する
    ようになっていて、前記キャッシュラインセグメントで
    キャッシュされたデータを記述する第2のキャッシュタ
    グアレイ手段と、 d) 前記I/Oバス、前記キャッシュデータアレイ手
    段、前記第1のキャッシュタグアレイ手段、および第2
    のキャッシュタグアレイ手段とに結合され、少なくとも
    一つのキャッシュデータアレイ、および親・子キャッシ
    ュタグアレイを用いて、前記I/O装置によるメモリに
    対する読取り、書込み動作に応答する制御手段と、 を有することを特徴とするストリーミングキャッシュ。
  2. 【請求項2】 メモリと、このメモリへ結合される入力
    /出力(I/O)バスと、このI/Oバスへ結合される
    複数のI/O装置とを備えているコンピュータ装置の読
    出し書込み動作中にメモリとI/O装置との間で転送さ
    れるデータをキャッシュする方法において、 a) それぞれが少なくとも二つのキャッシュラインセ
    グメントを有し、かつそれぞれがメモリページごとに割
    り当てられるキャッシュラインを複数有する少なくとも
    一つのキャッシュデータアレイを有するキャッシュデー
    タアレイで、読出しおよび書込み動作中に前記メモリと
    I/O装置との間を転送させる前記データであって、読
    出し動作中にメモリから前記I/O装置へ転送されるこ
    とを予測してプリフェッチされたデータを含むデータを
    キャッシュする過程と、 b) それぞれの親キャッシュタグエントリがそれぞれ
    対応するキャッシュラインのキャッシュラインセグメン
    トでキャッシュされるデータの共通の属性を記述するよ
    うになっていて、1キャッシュラインに1親キャッシュ
    タグエントリというように前記キャッシュラインに対応
    した複数の親キャッシュタグエントリを備えた親キャッ
    シュタグアレイを有する前記キャッシュラインでキャッ
    シュされたデータを記述する過程と、 c) それぞれの子キャッシュタグエントリがそれぞれ
    対応するキャッシュラインセグメントでキャッシュされ
    たデータの独特の属性を記述するようになっていて、1
    キャッシュラインセグメントに1子キャッシュタグエン
    トリというように前記キャッシュラインセグメントに対
    応した複数の子キャッシュタグエントリを備えた子キャ
    ッシュタグアレイを有する前記キャッシュラインセグメ
    ントでキャッシュされたデータを記述する過程と、 d) 少なくとも一つのキャッシュデータアレイ、およ
    び親・子キャッシュタグアレイを用いて、前記I/O装
    置によるメモリに対する読取り、書込み動作に応答する
    過程と、 を有することを特徴とする方法。
JP6072938A 1993-03-18 1994-03-18 メモリとi/o装置の間で転送されるデータをキャッシュするためのストリーミングキャッシュおよびその方法 Pending JPH0721085A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/033,502 US5551000A (en) 1993-03-18 1993-03-18 I/O cache with dual tag arrays
US033502 1993-03-18

Publications (1)

Publication Number Publication Date
JPH0721085A true JPH0721085A (ja) 1995-01-24

Family

ID=21870765

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6072938A Pending JPH0721085A (ja) 1993-03-18 1994-03-18 メモリとi/o装置の間で転送されるデータをキャッシュするためのストリーミングキャッシュおよびその方法

Country Status (2)

Country Link
US (1) US5551000A (ja)
JP (1) JPH0721085A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6329735B1 (en) 1999-04-30 2001-12-11 Mitsubishi Denki Kabushiki Kaisha Commutator motor
US6465927B2 (en) 2000-10-31 2002-10-15 Mabuchi Motor Co., Ltd. Miniature electric motor
US6507132B2 (en) 2000-11-08 2003-01-14 Mitsubishi Denki Kabushiki Kaisha Commutator motor with a vibration-isolating member around shaft

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5860105A (en) * 1995-11-13 1999-01-12 National Semiconductor Corporation NDIRTY cache line lookahead
US6223266B1 (en) * 1997-08-20 2001-04-24 Cypress Semiconductor Corp. System and method for interfacing an input/output system memory to a host computer system memory
US7035981B1 (en) * 1998-12-22 2006-04-25 Hewlett-Packard Development Company, L.P. Asynchronous input/output cache having reduced latency
US6370614B1 (en) * 1999-01-26 2002-04-09 Motive Power, Inc. I/O cache with user configurable preload
US6463509B1 (en) 1999-01-26 2002-10-08 Motive Power, Inc. Preloading data in a cache memory according to user-specified preload criteria
TW451139B (en) * 1999-12-03 2001-08-21 Compal Electronics Inc A cache memory system
US7702800B2 (en) 2000-12-18 2010-04-20 International Business Machines Corporation Detecting and handling affinity breaks in web applications
US6823360B2 (en) * 2000-12-18 2004-11-23 International Business Machines Corp. Cofetching in a command cache
US6877025B2 (en) * 2000-12-18 2005-04-05 International Business Machines Corp. Integrated JSP and command cache for web applications with dynamic content
US6807606B2 (en) 2000-12-18 2004-10-19 International Business Machines Corp. Distributed execution coordination for web caching with dynamic content
US20020111992A1 (en) * 2000-12-18 2002-08-15 Copeland George P. JSP composition in a cache for web applications with dynamic content
US20020188805A1 (en) * 2001-06-05 2002-12-12 Sailesh Kottapalli Mechanism for implementing cache line fills
US7716424B2 (en) * 2004-11-16 2010-05-11 International Business Machines Corporation Victim prefetching in a cache hierarchy
US8650342B2 (en) * 2006-10-23 2014-02-11 Dell Products L.P. System and method for distributed address translation in virtualized information handling systems
US11983538B2 (en) 2022-04-18 2024-05-14 Cadence Design Systems, Inc. Load-store unit dual tags and replays
CN117971725A (zh) * 2024-03-29 2024-05-03 北京象帝先计算技术有限公司 主设备、缓存器、集成电路系统、电子组件及设备、预取方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4075686A (en) * 1976-12-30 1978-02-21 Honeywell Information Systems Inc. Input/output cache system including bypass capability
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
US5161219A (en) * 1989-01-13 1992-11-03 International Business Machines Corporation Computer system with input/output cache
EP0377970B1 (en) * 1989-01-13 1995-08-16 International Business Machines Corporation I/O caching
US5287482A (en) * 1989-01-13 1994-02-15 International Business Machines Corporation Input/output cache
US5247648A (en) * 1990-04-12 1993-09-21 Sun Microsystems, Inc. Maintaining data coherency between a central cache, an I/O cache and a memory
US5263142A (en) * 1990-04-12 1993-11-16 Sun Microsystems, Inc. Input/output cache with mapped pages allocated for caching direct (virtual) memory access input/output data based on type of I/O devices
US5247653A (en) * 1990-08-17 1993-09-21 Seagate Technology, Inc. Adaptive segment control and method for simulating a multi-segment cache
US5319766A (en) * 1992-04-24 1994-06-07 Digital Equipment Corporation Duplicate tag store for a processor having primary and backup cache memories in a multiprocessor computer system
US5353426A (en) * 1992-04-29 1994-10-04 Sun Microsystems, Inc. Cache miss buffer adapted to satisfy read requests to portions of a cache fill in progress without waiting for the cache fill to complete
US5410669A (en) * 1993-04-05 1995-04-25 Motorola, Inc. Data processor having a cache memory capable of being used as a linear ram bank

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6329735B1 (en) 1999-04-30 2001-12-11 Mitsubishi Denki Kabushiki Kaisha Commutator motor
US6465927B2 (en) 2000-10-31 2002-10-15 Mabuchi Motor Co., Ltd. Miniature electric motor
US6507132B2 (en) 2000-11-08 2003-01-14 Mitsubishi Denki Kabushiki Kaisha Commutator motor with a vibration-isolating member around shaft

Also Published As

Publication number Publication date
US5551000A (en) 1996-08-27

Similar Documents

Publication Publication Date Title
US5715428A (en) Apparatus for maintaining multilevel cache hierarchy coherency in a multiprocessor computer system
JP2022534892A (ja) 書き込みミスエントリのドレインをサポートする犠牲キャッシュ
US6725337B1 (en) Method and system for speculatively invalidating lines in a cache
US6085291A (en) System and method for selectively controlling fetching and prefetching of data to a processor
US6105111A (en) Method and apparatus for providing a cache management technique
US5664147A (en) System and method that progressively prefetches additional lines to a distributed stream buffer as the sequentiality of the memory accessing is demonstrated
US5359723A (en) Cache memory hierarchy having a large write through first level that allocates for CPU read misses only and a small write back second level that allocates for CPU write misses only
US5778422A (en) Data processing system memory controller that selectively caches data associated with write requests
US5915262A (en) Cache system and method using tagged cache lines for matching cache strategy to I/O application
JP3577331B2 (ja) キャッシュメモリシステムおよびマイクロプロセッサ内の命令を操作するための方法
US6546462B1 (en) CLFLUSH micro-architectural implementation method and system
US7669009B2 (en) Method and apparatus for run-ahead victim selection to reduce undesirable replacement behavior in inclusive caches
JPH0721085A (ja) メモリとi/o装置の間で転送されるデータをキャッシュするためのストリーミングキャッシュおよびその方法
JPH09259036A (ja) ライトバックキャッシュおよびライトバックキャッシュ内で整合性を維持する方法
JP2000250813A (ja) I/oキャッシュ・メモリにおけるデータ管理方法
US12038840B2 (en) Multi-level cache security
JP2006517040A (ja) キャッシュラインサイズが異なる第一レベルキャッシュと第二レベルキャッシュを備えたマイクロプロセッサ
JPH10301849A (ja) キャッシュ・コヒーレンシを維持する方法及び装置
JPH11506852A (ja) 多数のバスマスタと共用レベル2キャッシュとを備える多レベルキャッシュシステムでのキャッシュスヌーピングオーバーヘッドの低減
US11816032B2 (en) Cache size change
US8621152B1 (en) Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access
US5987544A (en) System interface protocol with optional module cache
US20060179173A1 (en) Method and system for cache utilization by prefetching for multiple DMA reads
JPH06318174A (ja) キャッシュ・メモリ・システム及び主メモリに記憶されているデータのサブセットをキャッシュする方法
KR100322223B1 (ko) 대기행렬및스누프테이블을갖는메모리제어기

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20041202

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041221

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050621