JPH04102948A - データ処理システム及び方法 - Google Patents
データ処理システム及び方法Info
- Publication number
- JPH04102948A JPH04102948A JP2408247A JP40824790A JPH04102948A JP H04102948 A JPH04102948 A JP H04102948A JP 2408247 A JP2408247 A JP 2408247A JP 40824790 A JP40824790 A JP 40824790A JP H04102948 A JPH04102948 A JP H04102948A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- input
- line
- register
- main memory
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
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)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
[0001]
本発明は一般に、大きなダイレクトマツプキャッシュを
有するシステムにおける、プログラムされた入力/出力
(PIlo)、及び入力/出力(Ilo)のポール(p
ol l ing)を改善するためのシステム及びその
方法に関する。さらに詳しく言えば、本発明は系統キャ
ッシュマネジメントインストラクションを使用すること
を必要としないようなシステム及び方法に関する。さら
に詳しくいえば、本発明は、ダイレクトマツプキャッシ
ュを使用するシステム及び方法であり、多数のキャッシ
ュラインを有し、インストラクション回数に関係して高
いキャッシュミスペナルティ−を与えるものである。ダ
イレクトメモリアクセスI10は有していない。 [0002]
有するシステムにおける、プログラムされた入力/出力
(PIlo)、及び入力/出力(Ilo)のポール(p
ol l ing)を改善するためのシステム及びその
方法に関する。さらに詳しく言えば、本発明は系統キャ
ッシュマネジメントインストラクションを使用すること
を必要としないようなシステム及び方法に関する。さら
に詳しくいえば、本発明は、ダイレクトマツプキャッシ
ュを使用するシステム及び方法であり、多数のキャッシ
ュラインを有し、インストラクション回数に関係して高
いキャッシュミスペナルティ−を与えるものである。ダ
イレクトメモリアクセスI10は有していない。 [0002]
コンピュータシステム内で工/○動作を実行するための
幾つかの方法がある。 度々好まれる方法の1つは、「メモリマツプ」■10と
呼ばれるものである。この[メモリマツプJ 工10に
おいてI10デバイスレジスタは、メインメモリと同一
の物理アドレス空間に現れ、それは普通のロード/スト
アインストラクションを通じてアクセスされる。メモリ
マツプI10デバイスは一般に、物理メモリアドレスを
デコードし、そうして特定の範囲内のアドレスに応答す
る。 [0003] データキャッシュを有するプロセッサにおいて、このア
プローチを備えるものの1つの問題はキャッシュのゴー
ルであり、それはメインメモリへの参照を抑圧し、I1
0デバイスレジスタにアクセスするためにイ吏用された
インストラクションのゴールと衝突する。このI10デ
バイスレジスタは、全てのロードあるいはストアインス
トラクションのために■/○アクセスを引き起こすもの
である。この問題を明示する他の方法は、I10デバイ
スレジスタをポーリングしているソフトウエアカ飄ポー
ルされたアドレスがデータキャッシュ内で有効でないこ
と、またはそのソフトウェアがアクチュアルレジスタ値
を見ないであろうということを、保証しなくてはならな
いということである。 [0004] この問題を処理するための一般的な方法は、次のような
ものである。 I10デバイスレジスタのための物理アドレス空間の非
キュッシュ領域。そのキャッシュはディスエイプルされ
ている。 [0005] 特別のキャッシュラインを無効にするようI10ソフト
ウェアが要求を行うことが出来る、系統キャッシュマネ
ジメント。ライトバックが可能である。 ダイレクトマツプキャッシュで利用するインダイレクト
キャッシュマネジメントインストラクション。ソフトウ
ェアは物理アドレス空間の領域への参照を行う。この物
理アドレス空間は、「マネジ」されているキャッシュラ
インと衝突することが分かっており、このようにしてそ
のラインは無効にされる。この他の領域は、「保持」領
域と呼ばれるが、普通のメモリのために独立して使用さ
れることが出来る。 [0006] プロセッサ設計における今日の動向は、いくつかのシス
テムパラメーターを変化させている。キャッシュライン
がますます大きくなっているのである。次世代システム
は、256バイトの第2レベルキヤツシユラインを有し
ているかもしれない。これはライトスルーキャッシュよ
りむしろライトバックを使用することを示している。メ
モリ待ち時間がインストラクションの割合に関連して大
きくなりつつある。次世代システムでのキャッシュリフ
ィール時間は、200インストラクシヨンサイクルと同
じイ立かかるかもしれない。 [0007] これらの変化は、メモリマツプI10問題を処理する従
来手段での実行に影響を与える。キャッシュされていな
いアドレスを使用すれば簡単であるが、I10インスト
ラクションの度にキャッシュミスが発生するので、プロ
グラムされたT/○データ転送のためのバンド幅カミメ
モリシステムバンド幅のほんの一部にまで減少してしま
う。この部分は標準のバンド幅の1/32であるかもし
れない。 [0008] 系統キャッシュマネジメントインストラクションは、キ
ャッシュラインの処理を正確に制御することが出来るカ
ミ中央処理装置(CPU)及びキャッシュの遂行にいく
つかの付加的な複雑な問題を作り出してしまう。系統キ
ャッシュマネジメントは大きな待ち時間を被る。なぜな
ら一般に、T/○レジスタへの各参照のために、保持領
域への参照を必要とするからである。このように、系統
キャッシュマネジメントは、I10参照ごとに2つのキ
ャッシュミスとりフィールを必要とする。キャッシュラ
インと同じ幅の、工/○デバイスのデータバッファレジ
スタを作ることにより、PI/○データ転送をよりよく
行うことが出来る。この時メモリシステムバンド幅のほ
ぼ半分カミデータ転送に利用可能となりζ残りの半分は
、保持領域からのりフィールのために使用される。この
記述から明らかなように、次世代コンピュータシステム
で使用するためには、メモリマツプ■/○を処理する従
来の手段が改善されることが必要である。 [0009]
幾つかの方法がある。 度々好まれる方法の1つは、「メモリマツプ」■10と
呼ばれるものである。この[メモリマツプJ 工10に
おいてI10デバイスレジスタは、メインメモリと同一
の物理アドレス空間に現れ、それは普通のロード/スト
アインストラクションを通じてアクセスされる。メモリ
マツプI10デバイスは一般に、物理メモリアドレスを
デコードし、そうして特定の範囲内のアドレスに応答す
る。 [0003] データキャッシュを有するプロセッサにおいて、このア
プローチを備えるものの1つの問題はキャッシュのゴー
ルであり、それはメインメモリへの参照を抑圧し、I1
0デバイスレジスタにアクセスするためにイ吏用された
インストラクションのゴールと衝突する。このI10デ
バイスレジスタは、全てのロードあるいはストアインス
トラクションのために■/○アクセスを引き起こすもの
である。この問題を明示する他の方法は、I10デバイ
スレジスタをポーリングしているソフトウエアカ飄ポー
ルされたアドレスがデータキャッシュ内で有効でないこ
と、またはそのソフトウェアがアクチュアルレジスタ値
を見ないであろうということを、保証しなくてはならな
いということである。 [0004] この問題を処理するための一般的な方法は、次のような
ものである。 I10デバイスレジスタのための物理アドレス空間の非
キュッシュ領域。そのキャッシュはディスエイプルされ
ている。 [0005] 特別のキャッシュラインを無効にするようI10ソフト
ウェアが要求を行うことが出来る、系統キャッシュマネ
ジメント。ライトバックが可能である。 ダイレクトマツプキャッシュで利用するインダイレクト
キャッシュマネジメントインストラクション。ソフトウ
ェアは物理アドレス空間の領域への参照を行う。この物
理アドレス空間は、「マネジ」されているキャッシュラ
インと衝突することが分かっており、このようにしてそ
のラインは無効にされる。この他の領域は、「保持」領
域と呼ばれるが、普通のメモリのために独立して使用さ
れることが出来る。 [0006] プロセッサ設計における今日の動向は、いくつかのシス
テムパラメーターを変化させている。キャッシュライン
がますます大きくなっているのである。次世代システム
は、256バイトの第2レベルキヤツシユラインを有し
ているかもしれない。これはライトスルーキャッシュよ
りむしろライトバックを使用することを示している。メ
モリ待ち時間がインストラクションの割合に関連して大
きくなりつつある。次世代システムでのキャッシュリフ
ィール時間は、200インストラクシヨンサイクルと同
じイ立かかるかもしれない。 [0007] これらの変化は、メモリマツプI10問題を処理する従
来手段での実行に影響を与える。キャッシュされていな
いアドレスを使用すれば簡単であるが、I10インスト
ラクションの度にキャッシュミスが発生するので、プロ
グラムされたT/○データ転送のためのバンド幅カミメ
モリシステムバンド幅のほんの一部にまで減少してしま
う。この部分は標準のバンド幅の1/32であるかもし
れない。 [0008] 系統キャッシュマネジメントインストラクションは、キ
ャッシュラインの処理を正確に制御することが出来るカ
ミ中央処理装置(CPU)及びキャッシュの遂行にいく
つかの付加的な複雑な問題を作り出してしまう。系統キ
ャッシュマネジメントは大きな待ち時間を被る。なぜな
ら一般に、T/○レジスタへの各参照のために、保持領
域への参照を必要とするからである。このように、系統
キャッシュマネジメントは、I10参照ごとに2つのキ
ャッシュミスとりフィールを必要とする。キャッシュラ
インと同じ幅の、工/○デバイスのデータバッファレジ
スタを作ることにより、PI/○データ転送をよりよく
行うことが出来る。この時メモリシステムバンド幅のほ
ぼ半分カミデータ転送に利用可能となりζ残りの半分は
、保持領域からのりフィールのために使用される。この
記述から明らかなように、次世代コンピュータシステム
で使用するためには、メモリマツプ■/○を処理する従
来の手段が改善されることが必要である。 [0009]
大きなダイレクトマツプキャッシュを通じてI10デバ
イスへアクセスする本発明によるシステムは、中央処理
装置、メインメモリ、少なくとも1つの入力/出力デバ
イス、中央処理装置とメインメモリ及び中央処理装置と
少なくとも1つの入力/出力デバイスの間に結合されて
いるダイレクトマツプキャッシュを有する。少なくとも
1つの入力/出力デバイスは、少なくとも1つのレジス
タを持っており、少なくとも1つのレジスタは、ダイレ
クトマツプキャッシュ内で衝突するよう選択されている
第1及び第2アドレスを用いてアドレス指定可能である
。 本明細書で使用する「衝突」という言葉は、2つのアド
レスが共にキャッシュ内の同一のワードにマツプされる
ことを意味している。このキャッシュは、両方のメモリ
記憶場所の内容を同一のワードに同時に含むことは出来
ない。ダイレクトマツプキャッシュ、メインメモリ、及
び少なくとも1つの入力/出力デバイスは共通の形態を
しているアドレスにより、アドレス指定が可能である。 中央処理装置は入力/出力プログラムの制御下で動作可
能である。この入力/出カブログラムは、少なくとも1
つの入力/出力デバイスを、ダイレクトマツプキャッシ
ュ内で衝突するよう選択された第1及び第2アドレスを
用いて、交替する様式で、アドレス指定するためのもの
である。これにより、各キャッシュミスは入力/出力デ
バイスのレジスタから満たされ、有用な情報を運搬する
ことが可能であり、一方、キャッシュ内に記憶された値
が「古い」ものでないことを保証している。 [0010] 本発明による大きなダイレクトマツプキャッシュを通じ
てI10デバイスへアクセスするための方法は、ダイレ
クトマツプキャッシュのアドレス指定、メインメモリ及
び、共通の形態を有するアドレスを持っているような、
少なくとも1つの入力/出力デバイスを含む。少なくと
も1つの入力/出力デバイスは、少なくも1つのレジス
タを有している。そのレジスタは、ダイレクトマツプキ
ャッシュ内で衝突するよう選択された第1及び第2アド
レス用いて、交替する様式でアドレス指定されるもので
ある。 [0011]
イスへアクセスする本発明によるシステムは、中央処理
装置、メインメモリ、少なくとも1つの入力/出力デバ
イス、中央処理装置とメインメモリ及び中央処理装置と
少なくとも1つの入力/出力デバイスの間に結合されて
いるダイレクトマツプキャッシュを有する。少なくとも
1つの入力/出力デバイスは、少なくとも1つのレジス
タを持っており、少なくとも1つのレジスタは、ダイレ
クトマツプキャッシュ内で衝突するよう選択されている
第1及び第2アドレスを用いてアドレス指定可能である
。 本明細書で使用する「衝突」という言葉は、2つのアド
レスが共にキャッシュ内の同一のワードにマツプされる
ことを意味している。このキャッシュは、両方のメモリ
記憶場所の内容を同一のワードに同時に含むことは出来
ない。ダイレクトマツプキャッシュ、メインメモリ、及
び少なくとも1つの入力/出力デバイスは共通の形態を
しているアドレスにより、アドレス指定が可能である。 中央処理装置は入力/出力プログラムの制御下で動作可
能である。この入力/出カブログラムは、少なくとも1
つの入力/出力デバイスを、ダイレクトマツプキャッシ
ュ内で衝突するよう選択された第1及び第2アドレスを
用いて、交替する様式で、アドレス指定するためのもの
である。これにより、各キャッシュミスは入力/出力デ
バイスのレジスタから満たされ、有用な情報を運搬する
ことが可能であり、一方、キャッシュ内に記憶された値
が「古い」ものでないことを保証している。 [0010] 本発明による大きなダイレクトマツプキャッシュを通じ
てI10デバイスへアクセスするための方法は、ダイレ
クトマツプキャッシュのアドレス指定、メインメモリ及
び、共通の形態を有するアドレスを持っているような、
少なくとも1つの入力/出力デバイスを含む。少なくと
も1つの入力/出力デバイスは、少なくも1つのレジス
タを有している。そのレジスタは、ダイレクトマツプキ
ャッシュ内で衝突するよう選択された第1及び第2アド
レス用いて、交替する様式でアドレス指定されるもので
ある。 [0011]
図、特に図1を参照すると、そこには本発明を使用する
システム10が示されている。システム10は、アドレ
スバス16及びデータバス18によりダイレクトマツプ
キャッシュ14に結合されているCPU12を含む。キ
ャッシュ14は、アドレスバス24及びデータバス26
により第2レベルキヤツシユ22に結合されている第2
レベルキヤツシユ22を含む。キャッシュ14は、第ル
ベルキャッシュ、あるいは2つ以上のキュッシュレベル
を用いてインプリメントされることが出来る。キャッシ
ュ14の第2レベルキヤツシユ22は、アドレスバス3
2及びデータバス34によりアドレスバス28及びデー
タバス30に結合されている。アドレスバス28及びデ
ータバス30は、アドレスバス40とデータバス42、
アドレスバス44とデータバス46により、メモリ36
、I10デバイス41に、それぞれ結合されている。シ
ステム10において、CPU12とキャッシュ14との
間のアクセスタイム遅延は、キャッシュ14とメモリ3
6との間のアクセスタイム遅延よりもかなり小さいもの
である。例えば、第ルベルキャッシュ上での連続アクセ
スあるいは「ヒツト」には、1サイクルかかる。第ルベ
ルミス及び第2レベルヒツトには10サイクルかかるで
あろう。メモリ36へのアクセスを必要とする第2レベ
ルミスには、100〜200サイクルかがるであろう。 これらの比を、2ナノ秒のオーダーの1サイクルタイム
と仮定する。標準サイクルタイムが降下した場合、1
: 1.0 : 100の比は、例えば1 : 30
: 1000に増加する。フロートポイント装置(fl
oating point unit)48は、バス4
9によってCPU12に結合されている。 [0012] 実際にはシステム10は「集積」プロセッサで、つまり
CPU12、フロートポイント装置48及び第2レベル
キヤツシユ22が単一の集積回路チップ21上に共に与
えられているもので、インプリメントされる。エミッタ
結合論理回路(ECL)あるいは、ガリウムアセニド(
GaAS)セミコンダクタ集積回路といった、高速技術
でこれを行うと、これは非常に小さなサイクルタイムを
与える。つまり、とても早いコンピュータを提供する。 不幸にも、メインメモリへのアクセス待ち時間をこれと
比例して減少させることは困難である。それ故、無駄な
インストラクションサイクルの数に関連して、相対的な
キャッシュミスのコストカミ漸次悪くなっていくのであ
る。1970年代末期において、キャッシュミスはおよ
そ1インストラクション時間を無1駄にしていた。今日
の技術においてそれは、およそ10インストラクション
時間を無1駄にしている。近い未来においてキャッシュ
ミスは、100〜1000インストラクシヨン時間を要
すると予想することが出来る。 [0013] この損失をある程度隠してしまうため、システム10は
CPUチップ12とメインメモリ36との間に、大きな
第2キヤツシユ22を使用する。第2レベルキヤツシユ
22ならば、高価な技術を作り出すよりも費用が充分に
少なくて済むので、CPU12からキャッシュ22への
アクセスタイムは理に叶ったものとなる。第2レベルキ
ヤツシユライン50 (図3)は充分大きなものとする
ことが出来、もし第2キヤツシユ22もかなり高いヒツ
ト率を有するのに充分大きければ、メインメモリ36か
らの実効的なバンド幅はCPU12の要求を満足させる
のに十分である。 [0014] キャッシュが大きくなるにつれて、それ程大きくない連
想キャッシュよりはむしろ大きなダイレクトマツプキャ
ッシュ20及び22を使用することによってコストパフ
ォーマンスがよくなる、ということが研究により明らか
になった。連想キャッシュからのヒツト率が増大するこ
とは重要でないカミキャッ・シュアクセスタイムにおけ
る増加は重要である。 [0015] キャッシュ20及び22を早くするためには、余計な複
雑さを回避することが望まれる。複雑さの原因の1つは
、キャッシュの内容とデータのアクチュアル値との間の
一貫性の保持の必要性ということにある。マルチプロセ
ッサシステムにおいて、それに含まれる複数のキャッシ
ュはいくらかの一貫性が保たれなくてはならない。しか
しながら、ユニプロセッサを構成することを好むことに
は多くの理由がある。ユニプロセッサにおいては、幾つ
かのCPUのキャッシュ間で一貫性が保持される必要は
ない。しかしながら、もしシステムカ飄メそりセルとし
て現れるI10デバイス41、つまり、キャッシュ14
を通じてCPUによって書き込まれることなくそれらの
値を変化させることが出来るようなメモリセル、を含む
場合には、キャッシュの一貫性が保たれることがまだ必
要である。もしハードウェアが余計な複雑さを持たなけ
れば、システム10の価格及び/または性能は改善され
るであろう。 [0016] システム10において、■10インターフェイス38は
物理メモリアドレスをデコードし、そうして少なくとも
1つのレジスタ39で使用している特定レンジ内のアド
レスに応答する。各I10デバイスレジスタ39は、デ
ータキャッシュ14内で衝突するよう選択された2つの
別々の物理アドレスのうちの1つに応答する。■10ソ
フトウェアは、デバイスレジスタアドレスと従来システ
ムのものと同一の保持・領域アドレスとの間で交替する
代わりに、レジスタ39のための2つのアドレス間で交
替する。これは、全てのキャッシュ14リフイールある
いはライトバック動作が、問題のデバイスレジスタ39
を参照するという意味で「有用」である。このアプロー
チは、インストラクションアーキテクチャを変化するこ
となく機能するものであり、インプリメントしたりプロ
グラムを組むのが容易である。ポール(リード及びライ
ト)は、たった1つのキャッシュ・リフィール待ち時間
しか必要としない。PI10リード転送は、完全なメモ
リシステムバンド幅で続行する[0017] この方法に対応するよう、I10インターフェイス38
を改造することは難しくない。なぜなら、ダイレクトマ
ップキュッシュ14はサイズのベキ乗だからである。キ
ャッシュ14サイズの2を基本とした対数より高い数字
の少なくとも1つのビットで異なるようないづれかのア
ドレスの組は衝突するであろう。I10インターフェイ
ス38はこの結果を作るため、そのようなアドレスビッ
ト、物理アドレス空間内のI10領域のより高いオーダ
ービットのようなものを無視する。もし無視すべきピッ
I・が注意して選択された場合には、インターフェイス
ハードウェア38あるいはI10ソフトウェアはいづれ
もアクチュアルキャッシュ14サイズを認識する必要は
ない。 [0018] 図2は、この型のアドレス指定をインプリメンI・する
ための、ハードウェアの1つの形態を示している。アド
レス認識器45は、バス47により、アドレスバス28
に接続される。アドレスバス28上のアドレスは、コン
パレータ49に与えられる。 それらのアドレスは、コンパレータ49において、レジ
スタ39のアドレスを表す一定値bbbXbbbbbと
比較される。ここで値rXlビットは、「ドントケア」
値を表しているもので、アドレス内のそれは無視される
。コンパレータ49の出力は、コントロール入力として
、レジスタ39をイネイブルするために接続される。こ
のことは、アドレスバス28上の2つの異なるアドレス
がレジスタ39を選択し、そうしてデージバス30上の
データがレジスタ39を経由して、■/○デバイス41
に与えられるであろうということを意味する。単一のレ
ジスタ39は本発明に適切なものである力板レジスタ3
9はまた、バッファメモリの形態をした多数のレジスタ
としてインプリメントされることも出来るので、単一の
I10デバイス41のために何回でも繰り返されること
が可能である。 [0019] 図3は、システム10で使用されているメモリアドレス
フォーマット52、図4はキャッシュ14のライン50
がどのようにしてシステム10内のメインメモリ内36
内にマツプされるかということを示している。メモリア
ドレスフォーマット52は、12ビツトタグフイールド
54.12ビットライン番号フィールド56、及び8ビ
ツトバイトオフセツトフイールド58を有している。図
示したように、O〜4095の番号が付けられているキ
ャッシュライン50は、O〜4095の番号が付けられ
たメインメモリラインにマツプされ、キャッシュライン
50の4096〜8192はメインメモリ4096〜8
192にマツプされ、 ・等、そのようにそれらの
タグ62依存している。ライン50及びライン60は、
256バイトラインであり、8ビツトバイトオフセツト
フイールド58を必要とする。4096・ラインキャッ
シュ14は12ビットライン番号フィールド56を必要
とする。このメモリアドレスフォーマットは、本発明の
実施例を示しているが、他の様々な幅のメモリアドレス
フォーマットを使用することも出来る[00201 システム10内におけるI101004つの場合を考え
ることにより、本発明を更に深く理解することが出来る
。つまり、状態レジスタのリード、状態レジスタのライ
ト、データ入力PI/○転送の実行、及びデータ出力P
I10転送の実行である。以下の説明においてそれらの
例は、Cプログラミング言語コードで与えられている。 本発明は、勿論、適当なプログラミング言語であればい
づれを用いても実行可能である。 [0021] 図5及び図6は、ダイレクトマツプライトパックキャッ
シュの動作の背景を与えるものであり、PI10動作が
どのようにキャッシュ動作に依存するかということを理
解するのに有用である。図5はライトバックを使用する
ダイレクトマツプキャッシュ14からのリード動作の段
階を示すフローチャートである。CPU12によって与
えられたアドレス52からのライン番号56及びタグ5
4は、キャッシュ14から適切なライン50を選択する
ために段階70で使用される。リードされるべきアドレ
スのタグはキャッシュ14内で見つけられたタグ62と
段階72において比較される。もし段階74においてそ
れらが一致していれば、キャッシュ14の特定ライン5
0からのバイトを78において選択するため、キャッシ
ュ14からのライン番号56は段階76においてバイト
オフセット58とともに使用される。もしそれらのタグ
が74において一致していなければ、80において「ダ
ーティ−」ライン50かどうかがテス1− gれる。ダ
ーティ−ラインはキャッシュ14内のラインであり、そ
のラインの値はCPU12からのライン動作により変調
されており、その新しい値はまだメインメモリ36内で
更新されていないものである。ライン50がダーティ−
である場合には、そのラインは82においてメモリ36
に書き込まれる。ライン50がダーティ−ではない場合
あるいはそのラインがメモリに書かれた後に、ライン6
0を84においてメモリ36から手に入れる。ライン6
0及びタグ62は、86においてキャッシュ14に記憶
される。キャッシュ14からのライン番号56及びバイ
トオフセット58はその後、ライン50からのバイトを
選択するために78において前と同様に使用される。そ
の選択されたバイトはその後、88において、プロセッ
サ12に復帰される。 [0022] 単一の工/○インターフェイス38がレジスタ39をリ
ードしている時、I10ソフトウェアは以下ことを実行
している。 Int regaddr; int value; value = regaddr O;regaddr
= XOR(regaddr、 COLLIDEMA
SK) ;[0023] ここでC0LL王DEMASKとは1−ビットを有する
ビットマスクであり、■/○インターフェイス38は、
物理アドレスビット、及びほかの場所の0ビツトを無視
する。■10ソフトウェアはこのように、インターフェ
イス38の2つのビュー間で交替し、他の幾つかの動作
がキャッシュライン50を要求するまで、余計なキャッ
シュリフィールを決して要求しない。 [0024] 単一の動作で安全に読まれるような幾つかのレジスタを
読んでいる時、I10ソフトウェアは以下の動作を実行
する。 valueO= regaddr O;valuel
= regaddr 1 ;value2 = reg
addr 2 ;regaddr = XOR(reg
addr、 COLLIIDEMASK) ;[002
5] これは3つのリードのために、たった1つのキャッシュ
リフィールしか必要としない。ここでキャッシュされて
いない機構を使用すると、3つのりフィールが必要とな
る。 [0026] 図6に示すようにライトバックを使用するダイレクトマ
ツプキャッシュ14上のライト動作は同様のものである
。ライン番号56帯びタグ54は段階90において、キ
ャッシュ14からの適当なライン50を選択するために
使用される。書き込まれるべきアドレスのタグは、キャ
ッシュ14で見つけられたタグ62と92において比較
される。もしそれらのタグが94において一致した場合
、バイトオフセット58とともに、95で書かれるべき
データのために、98においてライン50へ新しいバイ
トを挿入するため、ライン50が96において選択され
る。もしタグが94において一致しなかった場合、ダー
ティ−ライン50か100でテストされる。もしライン
50がダーティ−である場合には、そのラインは102
においてメモリ36に書き込まれる。ライン50がダー
ティ−ではない場合あるいはそのラインがメモリに書き
込まれた後に、ライン60を104においてメモリ36
から手に入れる。キャッシュ60及びタグ62は106
においてキャッシュ14内に記憶される。キャッシュ1
4からのライン番号56及びバイトオフセット値はその
後、98においてライン50上のデータをライトし、前
と同様にライン60及びタグ62をキャッシュ14内に
記憶するために使用される。 [0027] I10ソフトウェアがシステム10内の工10デバイス
レジスタ39に書き込んでいる時は、以下を実行する。 regaddr O= value; regaddr = XOR(regaddr、 CO
LLIDEMASK) ;value = regad
dr O;[0028] キャッシュ14はライトスルーではないので、ラインが
キャッシュ14の外に書き出されるためには第2の参照
が必要である。普通のキャッシュ機構を使用しておす、
キャッシュラインがレジスタ39より幅広いので、キャ
ッシュシステムはそれを書き込む前に各キャッシュライ
ン50を読むことを強要するであろう、ということがそ
の理由である。この結果、系統キャッシュマネジメント
を用いて必要となるであろう待ち時間の2倍となってし
まう。しかしながら、このレジスタ39への次のライト
アクセスはおそらく、付加的なりフィールを必要とせず
に進むであろうことに注意してもらいたい。なぜなら第
2の参照はキャッシュ14内で有効な対応アドレスに帰
着するだろうからである。もしこの■10インターフェ
イス38への次のアクセスがリード参照で、デバイスレ
ジスタ39の内容がその間に変わった場合には、アドレ
スをもう一度交替することが必要である。リードケース
である時、もし同一のキャッシュライン50を共有する
幾つかのレジスタを、安全に一度に書くことが可能であ
る場合には、アドレス交替は延長され、こうしてそのオ
ーバーヘッドを償却するであろう。 [0029] PI/○リードデータ転送の例は、ディスクコントロー
ラからバッファを読むというものである。従来のPI/
○設計においては、デバイスのデータバッファレジスタ
は、■ワード幅である。性能を最も高くするため、本発
明ではキャッシュライン50と同じ幅であるものを使用
する代わりにバッファレジスタを使用する。このバッフ
ァレジスタはN隣接レジスタとして取り扱われることが
可能である。ここでN=ニラインサイズ/ワードサイズ
ことである。ディスクバッファを転送するため、以下の
ものを書いた。 [0030] int buffer BUFFR3IZE ;1in
ewards = LINESIZE/WORDSIZ
E;for (i = 0; j < l
ineewards; j十十)for (j
= 0. j < linewords;
j十十)buffer i十j = rega
ddr j ;regaddr = XOR(re
gadde、 CLLIDEMASK) ;【003月 全ての内部ループ(個々の繰り返しではない)の各事例
ごとに、内部ループは1つのキャッシュリフィールを必
要とし、そうしてデバイスからメモリバッファへデータ
の1つのラインを転送する。少なくとも第2レベルキヤ
ツシユ22において、バッファがデバイスレジスタと衝
突しないことを確実にするよう努めるべきである。全て
のキャッシュリフィールは有用なデータに対するものな
ので、転送は多かれ少なかれ利用可能な全バンド幅で続
行する。 [0032] ディスクバッファに書くような、PI10ライトデータ
転送は以下のことを実行する。 int buffer BUFER3IZE ;
1inewords = LINESIZE/WORD
SIZE;for (i = O; i <
BUFFR3IZE; i += line
words)for (j = 0; j < lin
ewords;針子)regaddr J =
buffer i+j ;regaddr =
XOR(regaddr、 COLLIDEMASK)
;dummy = reggdr O; /* cause ”dirty m1ss” on
1ast 1ine */[0033] ダーティ−ミスは、キャッシュの現在の内容によっては
満たされることが出来ないようなキャッシュ14への参
照のことであり、メンメモリからかってフツチされた参
照ワードを保持するために使用されるであろうラインが
、現在ダーティ−となっている。即ちそのラインは、現
在の参照に必要な値を保持するためにそのラインを使用
することが可能となる前に、メインメモリ36へライト
バックされなくてはならない値を含むのである。キャッ
シュシステムは、新しいキャッシュライン50それぞれ
への最初のライトでリフィールを行うであろうから、こ
の方法で行われたライト転送はデバイス41からレジス
タ39への無用なリードを行うことにより、メモリ幅の
およそ半分は「無駄」になっている。これは、無駄なリ
ードを有していない系統キャッシュマネジメンI・命令
で得られる性能よりも悪い力板ライトすれたラインごと
に2つの無駄なリードを有している保持領域方法で得ら
れたものよりは良い。また、これらのキャッシュリフィ
ールリードが問題を起こさないようにデバイスのデータ
バッファレジスタを設計しなくてはならないことにも注
意すべきである。このような問題は、いくつかの設計デ
バイスレジスタにおける実行から発生するものであり、
リード参照はサイド・効果、つまりレジスタの読み出し
により単なる値の復帰以外にいくつかのアクションを引
き起こすことを有する。ある場合、サイド・効果は設計
が貧弱なことに起因しており、それは例えば、レジスタ
からリードした時にそれによってデバイスが物理動作を
開始してしまうといったものである。しかしながら、全
バッファ上の「ウィンドウ」として1つのデータのレジ
スタを使用するというアプローチが度々使用される。 レジスタがリードする度に、それは自動的にバッファへ
ステップごとに進む。リード転送の場合は、レジスタか
らのリードの正確な数を、正確な順番で正確にアレンジ
するので問題はない。ライト転送の場合、我々はライト
の正確な数を正確に行っている力板キャッシュもまた各
々のダーティ−ミスでリフィールリードを実行している
であろう。それゆえライト参照とは異なり、リード参照
が存在するバッファメモリにそれを「ステップごとに進
め」ないよう、ライトバッファレジスタを設計しなくて
はならないのである。
システム10が示されている。システム10は、アドレ
スバス16及びデータバス18によりダイレクトマツプ
キャッシュ14に結合されているCPU12を含む。キ
ャッシュ14は、アドレスバス24及びデータバス26
により第2レベルキヤツシユ22に結合されている第2
レベルキヤツシユ22を含む。キャッシュ14は、第ル
ベルキャッシュ、あるいは2つ以上のキュッシュレベル
を用いてインプリメントされることが出来る。キャッシ
ュ14の第2レベルキヤツシユ22は、アドレスバス3
2及びデータバス34によりアドレスバス28及びデー
タバス30に結合されている。アドレスバス28及びデ
ータバス30は、アドレスバス40とデータバス42、
アドレスバス44とデータバス46により、メモリ36
、I10デバイス41に、それぞれ結合されている。シ
ステム10において、CPU12とキャッシュ14との
間のアクセスタイム遅延は、キャッシュ14とメモリ3
6との間のアクセスタイム遅延よりもかなり小さいもの
である。例えば、第ルベルキャッシュ上での連続アクセ
スあるいは「ヒツト」には、1サイクルかかる。第ルベ
ルミス及び第2レベルヒツトには10サイクルかかるで
あろう。メモリ36へのアクセスを必要とする第2レベ
ルミスには、100〜200サイクルかがるであろう。 これらの比を、2ナノ秒のオーダーの1サイクルタイム
と仮定する。標準サイクルタイムが降下した場合、1
: 1.0 : 100の比は、例えば1 : 30
: 1000に増加する。フロートポイント装置(fl
oating point unit)48は、バス4
9によってCPU12に結合されている。 [0012] 実際にはシステム10は「集積」プロセッサで、つまり
CPU12、フロートポイント装置48及び第2レベル
キヤツシユ22が単一の集積回路チップ21上に共に与
えられているもので、インプリメントされる。エミッタ
結合論理回路(ECL)あるいは、ガリウムアセニド(
GaAS)セミコンダクタ集積回路といった、高速技術
でこれを行うと、これは非常に小さなサイクルタイムを
与える。つまり、とても早いコンピュータを提供する。 不幸にも、メインメモリへのアクセス待ち時間をこれと
比例して減少させることは困難である。それ故、無駄な
インストラクションサイクルの数に関連して、相対的な
キャッシュミスのコストカミ漸次悪くなっていくのであ
る。1970年代末期において、キャッシュミスはおよ
そ1インストラクション時間を無1駄にしていた。今日
の技術においてそれは、およそ10インストラクション
時間を無1駄にしている。近い未来においてキャッシュ
ミスは、100〜1000インストラクシヨン時間を要
すると予想することが出来る。 [0013] この損失をある程度隠してしまうため、システム10は
CPUチップ12とメインメモリ36との間に、大きな
第2キヤツシユ22を使用する。第2レベルキヤツシユ
22ならば、高価な技術を作り出すよりも費用が充分に
少なくて済むので、CPU12からキャッシュ22への
アクセスタイムは理に叶ったものとなる。第2レベルキ
ヤツシユライン50 (図3)は充分大きなものとする
ことが出来、もし第2キヤツシユ22もかなり高いヒツ
ト率を有するのに充分大きければ、メインメモリ36か
らの実効的なバンド幅はCPU12の要求を満足させる
のに十分である。 [0014] キャッシュが大きくなるにつれて、それ程大きくない連
想キャッシュよりはむしろ大きなダイレクトマツプキャ
ッシュ20及び22を使用することによってコストパフ
ォーマンスがよくなる、ということが研究により明らか
になった。連想キャッシュからのヒツト率が増大するこ
とは重要でないカミキャッ・シュアクセスタイムにおけ
る増加は重要である。 [0015] キャッシュ20及び22を早くするためには、余計な複
雑さを回避することが望まれる。複雑さの原因の1つは
、キャッシュの内容とデータのアクチュアル値との間の
一貫性の保持の必要性ということにある。マルチプロセ
ッサシステムにおいて、それに含まれる複数のキャッシ
ュはいくらかの一貫性が保たれなくてはならない。しか
しながら、ユニプロセッサを構成することを好むことに
は多くの理由がある。ユニプロセッサにおいては、幾つ
かのCPUのキャッシュ間で一貫性が保持される必要は
ない。しかしながら、もしシステムカ飄メそりセルとし
て現れるI10デバイス41、つまり、キャッシュ14
を通じてCPUによって書き込まれることなくそれらの
値を変化させることが出来るようなメモリセル、を含む
場合には、キャッシュの一貫性が保たれることがまだ必
要である。もしハードウェアが余計な複雑さを持たなけ
れば、システム10の価格及び/または性能は改善され
るであろう。 [0016] システム10において、■10インターフェイス38は
物理メモリアドレスをデコードし、そうして少なくとも
1つのレジスタ39で使用している特定レンジ内のアド
レスに応答する。各I10デバイスレジスタ39は、デ
ータキャッシュ14内で衝突するよう選択された2つの
別々の物理アドレスのうちの1つに応答する。■10ソ
フトウェアは、デバイスレジスタアドレスと従来システ
ムのものと同一の保持・領域アドレスとの間で交替する
代わりに、レジスタ39のための2つのアドレス間で交
替する。これは、全てのキャッシュ14リフイールある
いはライトバック動作が、問題のデバイスレジスタ39
を参照するという意味で「有用」である。このアプロー
チは、インストラクションアーキテクチャを変化するこ
となく機能するものであり、インプリメントしたりプロ
グラムを組むのが容易である。ポール(リード及びライ
ト)は、たった1つのキャッシュ・リフィール待ち時間
しか必要としない。PI10リード転送は、完全なメモ
リシステムバンド幅で続行する[0017] この方法に対応するよう、I10インターフェイス38
を改造することは難しくない。なぜなら、ダイレクトマ
ップキュッシュ14はサイズのベキ乗だからである。キ
ャッシュ14サイズの2を基本とした対数より高い数字
の少なくとも1つのビットで異なるようないづれかのア
ドレスの組は衝突するであろう。I10インターフェイ
ス38はこの結果を作るため、そのようなアドレスビッ
ト、物理アドレス空間内のI10領域のより高いオーダ
ービットのようなものを無視する。もし無視すべきピッ
I・が注意して選択された場合には、インターフェイス
ハードウェア38あるいはI10ソフトウェアはいづれ
もアクチュアルキャッシュ14サイズを認識する必要は
ない。 [0018] 図2は、この型のアドレス指定をインプリメンI・する
ための、ハードウェアの1つの形態を示している。アド
レス認識器45は、バス47により、アドレスバス28
に接続される。アドレスバス28上のアドレスは、コン
パレータ49に与えられる。 それらのアドレスは、コンパレータ49において、レジ
スタ39のアドレスを表す一定値bbbXbbbbbと
比較される。ここで値rXlビットは、「ドントケア」
値を表しているもので、アドレス内のそれは無視される
。コンパレータ49の出力は、コントロール入力として
、レジスタ39をイネイブルするために接続される。こ
のことは、アドレスバス28上の2つの異なるアドレス
がレジスタ39を選択し、そうしてデージバス30上の
データがレジスタ39を経由して、■/○デバイス41
に与えられるであろうということを意味する。単一のレ
ジスタ39は本発明に適切なものである力板レジスタ3
9はまた、バッファメモリの形態をした多数のレジスタ
としてインプリメントされることも出来るので、単一の
I10デバイス41のために何回でも繰り返されること
が可能である。 [0019] 図3は、システム10で使用されているメモリアドレス
フォーマット52、図4はキャッシュ14のライン50
がどのようにしてシステム10内のメインメモリ内36
内にマツプされるかということを示している。メモリア
ドレスフォーマット52は、12ビツトタグフイールド
54.12ビットライン番号フィールド56、及び8ビ
ツトバイトオフセツトフイールド58を有している。図
示したように、O〜4095の番号が付けられているキ
ャッシュライン50は、O〜4095の番号が付けられ
たメインメモリラインにマツプされ、キャッシュライン
50の4096〜8192はメインメモリ4096〜8
192にマツプされ、 ・等、そのようにそれらの
タグ62依存している。ライン50及びライン60は、
256バイトラインであり、8ビツトバイトオフセツト
フイールド58を必要とする。4096・ラインキャッ
シュ14は12ビットライン番号フィールド56を必要
とする。このメモリアドレスフォーマットは、本発明の
実施例を示しているが、他の様々な幅のメモリアドレス
フォーマットを使用することも出来る[00201 システム10内におけるI101004つの場合を考え
ることにより、本発明を更に深く理解することが出来る
。つまり、状態レジスタのリード、状態レジスタのライ
ト、データ入力PI/○転送の実行、及びデータ出力P
I10転送の実行である。以下の説明においてそれらの
例は、Cプログラミング言語コードで与えられている。 本発明は、勿論、適当なプログラミング言語であればい
づれを用いても実行可能である。 [0021] 図5及び図6は、ダイレクトマツプライトパックキャッ
シュの動作の背景を与えるものであり、PI10動作が
どのようにキャッシュ動作に依存するかということを理
解するのに有用である。図5はライトバックを使用する
ダイレクトマツプキャッシュ14からのリード動作の段
階を示すフローチャートである。CPU12によって与
えられたアドレス52からのライン番号56及びタグ5
4は、キャッシュ14から適切なライン50を選択する
ために段階70で使用される。リードされるべきアドレ
スのタグはキャッシュ14内で見つけられたタグ62と
段階72において比較される。もし段階74においてそ
れらが一致していれば、キャッシュ14の特定ライン5
0からのバイトを78において選択するため、キャッシ
ュ14からのライン番号56は段階76においてバイト
オフセット58とともに使用される。もしそれらのタグ
が74において一致していなければ、80において「ダ
ーティ−」ライン50かどうかがテス1− gれる。ダ
ーティ−ラインはキャッシュ14内のラインであり、そ
のラインの値はCPU12からのライン動作により変調
されており、その新しい値はまだメインメモリ36内で
更新されていないものである。ライン50がダーティ−
である場合には、そのラインは82においてメモリ36
に書き込まれる。ライン50がダーティ−ではない場合
あるいはそのラインがメモリに書かれた後に、ライン6
0を84においてメモリ36から手に入れる。ライン6
0及びタグ62は、86においてキャッシュ14に記憶
される。キャッシュ14からのライン番号56及びバイ
トオフセット58はその後、ライン50からのバイトを
選択するために78において前と同様に使用される。そ
の選択されたバイトはその後、88において、プロセッ
サ12に復帰される。 [0022] 単一の工/○インターフェイス38がレジスタ39をリ
ードしている時、I10ソフトウェアは以下ことを実行
している。 Int regaddr; int value; value = regaddr O;regaddr
= XOR(regaddr、 COLLIDEMA
SK) ;[0023] ここでC0LL王DEMASKとは1−ビットを有する
ビットマスクであり、■/○インターフェイス38は、
物理アドレスビット、及びほかの場所の0ビツトを無視
する。■10ソフトウェアはこのように、インターフェ
イス38の2つのビュー間で交替し、他の幾つかの動作
がキャッシュライン50を要求するまで、余計なキャッ
シュリフィールを決して要求しない。 [0024] 単一の動作で安全に読まれるような幾つかのレジスタを
読んでいる時、I10ソフトウェアは以下の動作を実行
する。 valueO= regaddr O;valuel
= regaddr 1 ;value2 = reg
addr 2 ;regaddr = XOR(reg
addr、 COLLIIDEMASK) ;[002
5] これは3つのリードのために、たった1つのキャッシュ
リフィールしか必要としない。ここでキャッシュされて
いない機構を使用すると、3つのりフィールが必要とな
る。 [0026] 図6に示すようにライトバックを使用するダイレクトマ
ツプキャッシュ14上のライト動作は同様のものである
。ライン番号56帯びタグ54は段階90において、キ
ャッシュ14からの適当なライン50を選択するために
使用される。書き込まれるべきアドレスのタグは、キャ
ッシュ14で見つけられたタグ62と92において比較
される。もしそれらのタグが94において一致した場合
、バイトオフセット58とともに、95で書かれるべき
データのために、98においてライン50へ新しいバイ
トを挿入するため、ライン50が96において選択され
る。もしタグが94において一致しなかった場合、ダー
ティ−ライン50か100でテストされる。もしライン
50がダーティ−である場合には、そのラインは102
においてメモリ36に書き込まれる。ライン50がダー
ティ−ではない場合あるいはそのラインがメモリに書き
込まれた後に、ライン60を104においてメモリ36
から手に入れる。キャッシュ60及びタグ62は106
においてキャッシュ14内に記憶される。キャッシュ1
4からのライン番号56及びバイトオフセット値はその
後、98においてライン50上のデータをライトし、前
と同様にライン60及びタグ62をキャッシュ14内に
記憶するために使用される。 [0027] I10ソフトウェアがシステム10内の工10デバイス
レジスタ39に書き込んでいる時は、以下を実行する。 regaddr O= value; regaddr = XOR(regaddr、 CO
LLIDEMASK) ;value = regad
dr O;[0028] キャッシュ14はライトスルーではないので、ラインが
キャッシュ14の外に書き出されるためには第2の参照
が必要である。普通のキャッシュ機構を使用しておす、
キャッシュラインがレジスタ39より幅広いので、キャ
ッシュシステムはそれを書き込む前に各キャッシュライ
ン50を読むことを強要するであろう、ということがそ
の理由である。この結果、系統キャッシュマネジメント
を用いて必要となるであろう待ち時間の2倍となってし
まう。しかしながら、このレジスタ39への次のライト
アクセスはおそらく、付加的なりフィールを必要とせず
に進むであろうことに注意してもらいたい。なぜなら第
2の参照はキャッシュ14内で有効な対応アドレスに帰
着するだろうからである。もしこの■10インターフェ
イス38への次のアクセスがリード参照で、デバイスレ
ジスタ39の内容がその間に変わった場合には、アドレ
スをもう一度交替することが必要である。リードケース
である時、もし同一のキャッシュライン50を共有する
幾つかのレジスタを、安全に一度に書くことが可能であ
る場合には、アドレス交替は延長され、こうしてそのオ
ーバーヘッドを償却するであろう。 [0029] PI/○リードデータ転送の例は、ディスクコントロー
ラからバッファを読むというものである。従来のPI/
○設計においては、デバイスのデータバッファレジスタ
は、■ワード幅である。性能を最も高くするため、本発
明ではキャッシュライン50と同じ幅であるものを使用
する代わりにバッファレジスタを使用する。このバッフ
ァレジスタはN隣接レジスタとして取り扱われることが
可能である。ここでN=ニラインサイズ/ワードサイズ
ことである。ディスクバッファを転送するため、以下の
ものを書いた。 [0030] int buffer BUFFR3IZE ;1in
ewards = LINESIZE/WORDSIZ
E;for (i = 0; j < l
ineewards; j十十)for (j
= 0. j < linewords;
j十十)buffer i十j = rega
ddr j ;regaddr = XOR(re
gadde、 CLLIDEMASK) ;【003月 全ての内部ループ(個々の繰り返しではない)の各事例
ごとに、内部ループは1つのキャッシュリフィールを必
要とし、そうしてデバイスからメモリバッファへデータ
の1つのラインを転送する。少なくとも第2レベルキヤ
ツシユ22において、バッファがデバイスレジスタと衝
突しないことを確実にするよう努めるべきである。全て
のキャッシュリフィールは有用なデータに対するものな
ので、転送は多かれ少なかれ利用可能な全バンド幅で続
行する。 [0032] ディスクバッファに書くような、PI10ライトデータ
転送は以下のことを実行する。 int buffer BUFER3IZE ;
1inewords = LINESIZE/WORD
SIZE;for (i = O; i <
BUFFR3IZE; i += line
words)for (j = 0; j < lin
ewords;針子)regaddr J =
buffer i+j ;regaddr =
XOR(regaddr、 COLLIDEMASK)
;dummy = reggdr O; /* cause ”dirty m1ss” on
1ast 1ine */[0033] ダーティ−ミスは、キャッシュの現在の内容によっては
満たされることが出来ないようなキャッシュ14への参
照のことであり、メンメモリからかってフツチされた参
照ワードを保持するために使用されるであろうラインが
、現在ダーティ−となっている。即ちそのラインは、現
在の参照に必要な値を保持するためにそのラインを使用
することが可能となる前に、メインメモリ36へライト
バックされなくてはならない値を含むのである。キャッ
シュシステムは、新しいキャッシュライン50それぞれ
への最初のライトでリフィールを行うであろうから、こ
の方法で行われたライト転送はデバイス41からレジス
タ39への無用なリードを行うことにより、メモリ幅の
およそ半分は「無駄」になっている。これは、無駄なリ
ードを有していない系統キャッシュマネジメンI・命令
で得られる性能よりも悪い力板ライトすれたラインごと
に2つの無駄なリードを有している保持領域方法で得ら
れたものよりは良い。また、これらのキャッシュリフィ
ールリードが問題を起こさないようにデバイスのデータ
バッファレジスタを設計しなくてはならないことにも注
意すべきである。このような問題は、いくつかの設計デ
バイスレジスタにおける実行から発生するものであり、
リード参照はサイド・効果、つまりレジスタの読み出し
により単なる値の復帰以外にいくつかのアクションを引
き起こすことを有する。ある場合、サイド・効果は設計
が貧弱なことに起因しており、それは例えば、レジスタ
からリードした時にそれによってデバイスが物理動作を
開始してしまうといったものである。しかしながら、全
バッファ上の「ウィンドウ」として1つのデータのレジ
スタを使用するというアプローチが度々使用される。 レジスタがリードする度に、それは自動的にバッファへ
ステップごとに進む。リード転送の場合は、レジスタか
らのリードの正確な数を、正確な順番で正確にアレンジ
するので問題はない。ライト転送の場合、我々はライト
の正確な数を正確に行っている力板キャッシュもまた各
々のダーティ−ミスでリフィールリードを実行している
であろう。それゆえライト参照とは異なり、リード参照
が存在するバッファメモリにそれを「ステップごとに進
め」ないよう、ライトバッファレジスタを設計しなくて
はならないのである。
【図1】
本発明によるシステムのブロック図。
【図2】
図1のシステムの部分の、より詳細なブロック図。
【図3】
図1及び図2のシステムのためのメモリアドレスフォー
マット図。
マット図。
【図4】
図1及び図2に示したシステムを使用している本発明に
よる方法の部分の実行を示す流れ図。
よる方法の部分の実行を示す流れ図。
【図5】
図1及び図2のシステムを用いた、本発明の方法の実施
例の実行を示す流れ図
例の実行を示す流れ図
【図6】
図1及び図2のシステムを用いた、本発明の方法の代替
例の実行を示す流れ図システム アドレスバス データパス ダイレクトマツプキャッシュ 第2レベルキヤツシユ 第2レベルキヤツシユ アドレスノくス データパス アドレスバス データパス アドレスバス データパス アドレスバス データパス アドレスバス データパス ノくス I10インタフェース アドレス
例の実行を示す流れ図システム アドレスバス データパス ダイレクトマツプキャッシュ 第2レベルキヤツシユ 第2レベルキヤツシユ アドレスノくス データパス アドレスバス データパス アドレスバス データパス アドレスバス データパス アドレスバス データパス ノくス I10インタフェース アドレス
【図1】
図面
【図3】
Claims (2)
- 【請求項1】データ処理システムにおいて、該データ処
理システムは、中央処理装置、メインメモリ、少なくと
も1つの入力/出力デバイス、前記中央処理装置と前記
メインメモリの間及び前記中央処理装置と前記少なくと
も1つの入力/出力デバイスの間に結合されたダイレク
トマップキャッシュを備え、前記少なくとも1つの入力
/出力デバイスは、第1アドレス及び第2アドレスによ
ってアドレス指定可能であるような少なくとも1つのレ
ジスタを有しており、前記第1アドレス及び第2アドレ
スは、前記ダイレクトマップキャッシュ内で衝突するよ
う選択されており、前記メインメモリ及び前記少なくと
も1つの入力/出力デバイスは、共通の形態を有するア
ドレスによってアドレス指定可能であり、前記中央処理
装置は、入力/出力プログラムの制御下で動作可能であ
って、その入力/出力プログラムは、前記少なくとも1
つの入力/出力デバイスを、交替する様式で、前記ダイ
レクトマップキャッシュ内で衝突するよう選択された第
1及び第2アドレスを用いて、アドレス指定するもので
あることを特徴とするデータ処理システム。 - 【請求項2】データ処理方法において、該データ処理方
法は、中央処理装置を含むデータ処理システム、メイン
メモリ、少なくとも1つの入力/出力デバイス、前記中
央処理装置と前記メインメモリの間及び前記中央処理装
置と前記少なくとも1つの入力/出力デバイスの間に結
合されたダイレクトマップキャッシュを与えることを備
え、その際、前記少なくとも1つの入力/出力デバイス
は、ダイレクトマップキャッシュ内で衝突するよう選択
された第1及び第2アドレスによってアドレス指定可能
であるような、少なくとも1つのレジスタを有しており
、 前記ダイレクトマップキャッシュ、前記メインメモリ、
及び共通の形態を持つアドレスを有しているような前記
少なくとも1つの入力/出力デバイスをアドレス指定し
、 少なくとも1つの入力/出力デバイスの少なくとも1つ
のレジスタを、交替する様式で、ダイレクトマップキャ
ッシュで衝突するよう選択された第1及び第2アドレス
を用いて、アドレス指定することを特徴とするデータ処
理方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US07/459,445 US5253353A (en) | 1990-01-02 | 1990-01-02 | System and method for efficiently supporting access to I/O devices through large direct-mapped data caches |
| US459445 | 1990-01-02 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH04102948A true JPH04102948A (ja) | 1992-04-03 |
Family
ID=23824801
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2408247A Pending JPH04102948A (ja) | 1990-01-02 | 1990-12-27 | データ処理システム及び方法 |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US5253353A (ja) |
| EP (1) | EP0436305B1 (ja) |
| JP (1) | JPH04102948A (ja) |
| KR (1) | KR910014816A (ja) |
| DE (1) | DE69027919T2 (ja) |
Families Citing this family (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CA2044689A1 (en) * | 1990-06-15 | 1991-12-16 | Roger E. Tipley | Multilevel inclusion in multilevel cache hierarchies |
| US5359723A (en) * | 1991-12-16 | 1994-10-25 | Intel Corporation | 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 |
| DE4410060B4 (de) * | 1993-04-08 | 2006-02-09 | Hewlett-Packard Development Co., L.P., Houston | Übersetzungsvorrichtung zum Umsetzen einer virtuellen Speicheradresse in eine physikalische Speicheradresse |
| US5636365A (en) * | 1993-10-05 | 1997-06-03 | Nec Corporation | Hierarchical buffer memories for selectively controlling data coherence including coherence control request means |
| JPH07210537A (ja) * | 1993-12-10 | 1995-08-11 | Advanced Micro Devicds Inc | コンピュータシステム |
| US5826052A (en) * | 1994-04-29 | 1998-10-20 | Advanced Micro Devices, Inc. | Method and apparatus for concurrent access to multiple physical caches |
| US5905997A (en) * | 1994-04-29 | 1999-05-18 | Amd Inc. | Set-associative cache memory utilizing a single bank of physical memory |
| DE69529250T2 (de) * | 1994-07-01 | 2003-10-30 | Sun Microsystems, Inc. | Rechnersystem mit einem multiplexierten Adressenbus und Pipeline-Schreiboperationen |
| JP3127796B2 (ja) * | 1994-10-07 | 2001-01-29 | 松下電器産業株式会社 | 情報記録再生装置 |
| US5611074A (en) * | 1994-12-14 | 1997-03-11 | International Business Machines Corporation | Efficient polling technique using cache coherent protocol |
| US5687329A (en) * | 1995-09-29 | 1997-11-11 | International Business Machines Corporation | Information handling system including a data bus management unit, an address management unit for isolating processor buses from I/O and memory |
| US6122711A (en) | 1997-01-07 | 2000-09-19 | Unisys Corporation | Method of and apparatus for store-in second level cache flush |
| US6324598B1 (en) | 1999-01-11 | 2001-11-27 | Oak Technology | Software enlarged tag register and method thereof for noting the completion of a DMA transfer within a chain of DMA transfers |
| EP1111511B1 (en) * | 1999-12-06 | 2017-09-27 | Texas Instruments France | Cache with multiple fill modes |
| SE517705C2 (sv) * | 1999-12-08 | 2002-07-09 | Axis Ab | I/O Metod och anordning för optiska lagringsmedia |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4802085A (en) * | 1987-01-22 | 1989-01-31 | National Semiconductor Corporation | Apparatus and method for detecting and handling memory-mapped I/O by a pipelined microprocessor |
-
1990
- 1990-01-02 US US07/459,445 patent/US5253353A/en not_active Expired - Lifetime
- 1990-11-30 EP EP90313057A patent/EP0436305B1/en not_active Expired - Lifetime
- 1990-11-30 DE DE69027919T patent/DE69027919T2/de not_active Expired - Fee Related
- 1990-12-27 JP JP2408247A patent/JPH04102948A/ja active Pending
- 1990-12-31 KR KR1019900023045A patent/KR910014816A/ko not_active Withdrawn
Also Published As
| Publication number | Publication date |
|---|---|
| EP0436305B1 (en) | 1996-07-24 |
| EP0436305A2 (en) | 1991-07-10 |
| DE69027919D1 (de) | 1996-08-29 |
| US5253353A (en) | 1993-10-12 |
| EP0436305A3 (en) | 1992-07-29 |
| KR910014816A (ko) | 1991-08-31 |
| DE69027919T2 (de) | 1997-02-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12061562B2 (en) | Computer memory expansion device and method of operation | |
| US5715428A (en) | Apparatus for maintaining multilevel cache hierarchy coherency in a multiprocessor computer system | |
| US5900011A (en) | Integrated processor/memory device with victim data cache | |
| US10078590B2 (en) | Technique to share information among different cache coherency domains | |
| US5561779A (en) | Processor board having a second level writeback cache system and a third level writethrough cache system which stores exclusive state information for use in a multiprocessor computer system | |
| US6904499B2 (en) | Controlling cache memory in external chipset using processor | |
| US4959777A (en) | Write-shared cache circuit for multiprocessor system | |
| US7975108B1 (en) | Request tracking data prefetcher apparatus | |
| US5157774A (en) | System for fast selection of non-cacheable address ranges using programmed array logic | |
| JP3289661B2 (ja) | キャッシュメモリシステム | |
| US6199142B1 (en) | Processor/memory device with integrated CPU, main memory, and full width cache and associated method | |
| JPH05210585A (ja) | キャッシュ管理システム | |
| US7228389B2 (en) | System and method for maintaining cache coherency in a shared memory system | |
| US6915396B2 (en) | Fast priority determination circuit with rotating priority | |
| JPH04102948A (ja) | データ処理システム及び方法 | |
| US5829027A (en) | Removable processor board having first, second and third level cache system for use in a multiprocessor computer system | |
| US6412047B2 (en) | Coherency protocol | |
| US7404047B2 (en) | Method and apparatus to improve multi-CPU system performance for accesses to memory | |
| US5420994A (en) | Method for reading a multiple byte data element in a memory system with at least one cache and a main memory | |
| JPH06318174A (ja) | キャッシュ・メモリ・システム及び主メモリに記憶されているデータのサブセットをキャッシュする方法 | |
| US6976130B2 (en) | Cache controller unit architecture and applied method | |
| JPH0282330A (ja) | ムーブアウト・システム | |
| US5835945A (en) | Memory system with write buffer, prefetch and internal caches | |
| US5434990A (en) | Method for serially or concurrently addressing n individually addressable memories each having an address latch and data latch | |
| JP3187465B2 (ja) | コンピューターメモリオープンページバイアス法とその装置 |