JPH1055307A - コンピュータ・システム - Google Patents
コンピュータ・システムInfo
- Publication number
- JPH1055307A JPH1055307A JP9095754A JP9575497A JPH1055307A JP H1055307 A JPH1055307 A JP H1055307A JP 9095754 A JP9095754 A JP 9095754A JP 9575497 A JP9575497 A JP 9575497A JP H1055307 A JPH1055307 A JP H1055307A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- request
- prefetch
- cpu
- 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
- 230000004044 response Effects 0.000 claims abstract description 9
- 230000001174 ascending effect Effects 0.000 claims description 7
- 238000000034 method Methods 0.000 claims description 7
- 230000006870 function Effects 0.000 abstract description 9
- 238000012546 transfer Methods 0.000 abstract description 9
- 238000012545 processing Methods 0.000 description 28
- 238000010586 diagram Methods 0.000 description 9
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000002411 adverse Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 239000013256 coordination polymer Substances 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 239000012925 reference material Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
(57)【要約】
【課題】多様なソフトウェア環境用に最適化されたプリ
フェッチ機能を持つキャッシュ・メモリ・システムを提
供する。 【解決手段】CPU、主メモリ、キャッシュ・メモリ、
およびキャッシュ・コントローラを組み込んだコンピュ
ータ・システムを提供する。CPUは、CPU要求が命
令要求であるかデータ要求であるかを示す制御信号と、
要求がメモリからの情報取り出しであるかメモリへの情
報格納であるかを示す第2のCPU制御信号を生成す
る。キャッシュ・コントローラには、CPUからの要求
のタイプに応答して、主メモリからキャッシュ・メモリ
にプリフェッチされるデータ量を判断するプリフェッチ
論理回路が組み込まれる。
フェッチ機能を持つキャッシュ・メモリ・システムを提
供する。 【解決手段】CPU、主メモリ、キャッシュ・メモリ、
およびキャッシュ・コントローラを組み込んだコンピュ
ータ・システムを提供する。CPUは、CPU要求が命
令要求であるかデータ要求であるかを示す制御信号と、
要求がメモリからの情報取り出しであるかメモリへの情
報格納であるかを示す第2のCPU制御信号を生成す
る。キャッシュ・コントローラには、CPUからの要求
のタイプに応答して、主メモリからキャッシュ・メモリ
にプリフェッチされるデータ量を判断するプリフェッチ
論理回路が組み込まれる。
Description
【0001】
【発明の属する技術分野】本発明は概してコンピュータ
・システムに関し、詳細にはデータ・キャッシング機能
を持つコンピュータ・システムに関する。
・システムに関し、詳細にはデータ・キャッシング機能
を持つコンピュータ・システムに関する。
【0002】
【従来の技術】コンピュータ・システムの中央処理装置
(CPU)がメモリに格納されている情報にアクセスす
るときに必要な時間を短縮するために、システムに何ら
かの形態のキャッシュ・メモリを使用することが増加し
ている。当分野に知識を持つ当業者にはよく知られてい
るように、キャッシュ・メモリは高速メモリ・デバイス
であり、主メモリ内にあるアクセス頻度が非常に高い命
令およびデータのコピーを格納するために使用する。I
ntel Pentium、Pentium Pro、
IBM PowerPC、または類似のプロセッサを使
用する現代のコンピュータには、通常は内部のレベル1
(L1)キャッシュが組み込まれている。当分野で周知
のように、L1キャッシュ・メモリはCPUの内部にあ
り、内部バスを介してアクセスできる。さらに、システ
ム・パフォーマンスを一層高めるために、外部の第2レ
ベル(L2)キャッシュも利用するコンピュータ・シス
テムの数が増加している。L2キャッシュは、概してL
1キャッシュよりもサイズが大きく、CPUとシステム
・メモリとの間に位置する。したがって、L2キャッシ
ュには、外部処理バスを介してCPUからアクセスでき
る。
(CPU)がメモリに格納されている情報にアクセスす
るときに必要な時間を短縮するために、システムに何ら
かの形態のキャッシュ・メモリを使用することが増加し
ている。当分野に知識を持つ当業者にはよく知られてい
るように、キャッシュ・メモリは高速メモリ・デバイス
であり、主メモリ内にあるアクセス頻度が非常に高い命
令およびデータのコピーを格納するために使用する。I
ntel Pentium、Pentium Pro、
IBM PowerPC、または類似のプロセッサを使
用する現代のコンピュータには、通常は内部のレベル1
(L1)キャッシュが組み込まれている。当分野で周知
のように、L1キャッシュ・メモリはCPUの内部にあ
り、内部バスを介してアクセスできる。さらに、システ
ム・パフォーマンスを一層高めるために、外部の第2レ
ベル(L2)キャッシュも利用するコンピュータ・シス
テムの数が増加している。L2キャッシュは、概してL
1キャッシュよりもサイズが大きく、CPUとシステム
・メモリとの間に位置する。したがって、L2キャッシ
ュには、外部処理バスを介してCPUからアクセスでき
る。
【0003】システム・パフォーマンスをさらに高める
ために、多数の従来システムにはプリフェッチ機能が設
計されており、この機能によってメモリ・コントローラ
は、CPUからの明示的な情報の要求なしにこれらの情
報をロードできる。このように提供されているプリフェ
ッチ機能は、CPUが、プリフェッチされた情報に対し
て、これが要求されたとき、システム・メモリ速度より
もはるかに高速なキャッシュ・メモリ速度でアクセスで
きることを前提としている。しかし従来のプリフェッチ
手法は、所定のキャッシュ・ライン数に従ってCPUに
情報をロードする。すなわち、CPUがキャッシュ・コ
ントローラに対してデータを要求すると、キャッシュ・
コントローラは、要求されたデータに加えて、所定のバ
イト数(たとえば、32バイトのキャッシュ・ライン)
分のデータをシステム・メモリからプリフェッチし、C
PUからのアクセスの可能性に備えてこれらのデータを
キャッシュ・メモリ内で使用可能にする。しかし、所定
のデータ・バイト数のキャッシングは、ソフトウェア制
御のアドレス指定パターンのバリエーションを考慮せ
ず、その結果不要なデータがプリフェッチされる可能性
がある。さらにプリフェッチによって全体的なメモリ使
用率が増加するので、メモリからの不要な情報のキャッ
シングは、一部の環境では実際にシステム・パフォーマ
ンスに悪影響を及ぼす可能性がある。たとえばある環境
では、システム・メモリからの命令コードのプリフェッ
チが全体的なシステム・パフォーマンスを高める一方
で、データのプリフェッチがシステム・パフォーマンス
を低下させる可能性がある。また別の環境では、逆の結
果が生じることもある。すなわち、データのプリフェッ
チがパフォーマンスを高め、命令コードのプリフェッチ
がシステム・パフォーマンスに悪影響を及ぼす可能性が
ある。
ために、多数の従来システムにはプリフェッチ機能が設
計されており、この機能によってメモリ・コントローラ
は、CPUからの明示的な情報の要求なしにこれらの情
報をロードできる。このように提供されているプリフェ
ッチ機能は、CPUが、プリフェッチされた情報に対し
て、これが要求されたとき、システム・メモリ速度より
もはるかに高速なキャッシュ・メモリ速度でアクセスで
きることを前提としている。しかし従来のプリフェッチ
手法は、所定のキャッシュ・ライン数に従ってCPUに
情報をロードする。すなわち、CPUがキャッシュ・コ
ントローラに対してデータを要求すると、キャッシュ・
コントローラは、要求されたデータに加えて、所定のバ
イト数(たとえば、32バイトのキャッシュ・ライン)
分のデータをシステム・メモリからプリフェッチし、C
PUからのアクセスの可能性に備えてこれらのデータを
キャッシュ・メモリ内で使用可能にする。しかし、所定
のデータ・バイト数のキャッシングは、ソフトウェア制
御のアドレス指定パターンのバリエーションを考慮せ
ず、その結果不要なデータがプリフェッチされる可能性
がある。さらにプリフェッチによって全体的なメモリ使
用率が増加するので、メモリからの不要な情報のキャッ
シングは、一部の環境では実際にシステム・パフォーマ
ンスに悪影響を及ぼす可能性がある。たとえばある環境
では、システム・メモリからの命令コードのプリフェッ
チが全体的なシステム・パフォーマンスを高める一方
で、データのプリフェッチがシステム・パフォーマンス
を低下させる可能性がある。また別の環境では、逆の結
果が生じることもある。すなわち、データのプリフェッ
チがパフォーマンスを高め、命令コードのプリフェッチ
がシステム・パフォーマンスに悪影響を及ぼす可能性が
ある。
【0004】
【発明が解決しようとする課題】したがって、多様なソ
フトウェア環境用に最適化されたプリフェッチ機能を備
えたキャッシュ・メモリ・システムが必要である。
フトウェア環境用に最適化されたプリフェッチ機能を備
えたキャッシュ・メモリ・システムが必要である。
【0005】
【課題を解決するための手段】簡単に述べると、本発明
に従い、CPU、主メモリ、キャッシュ・メモリ、およ
びキャッシュ・コントローラをコンピュータ・システム
に組み込む。CPUは、CPU要求が命令に対する要求
であるかデータに対する要求であるかを示す制御信号
と、要求がメモリからの情報の取り出しであるかメモリ
への情報の格納であるかを示す、第2のCPU制御信号
を生成する。キャッシュ・コントローラには、CPUか
らの要求のタイプに応答し、主メモリからキャッシュ・
メモリにプリフェッチされるデータ量を判断するプリフ
ェッチ論理回路を組み込む。
に従い、CPU、主メモリ、キャッシュ・メモリ、およ
びキャッシュ・コントローラをコンピュータ・システム
に組み込む。CPUは、CPU要求が命令に対する要求
であるかデータに対する要求であるかを示す制御信号
と、要求がメモリからの情報の取り出しであるかメモリ
への情報の格納であるかを示す、第2のCPU制御信号
を生成する。キャッシュ・コントローラには、CPUか
らの要求のタイプに応答し、主メモリからキャッシュ・
メモリにプリフェッチされるデータ量を判断するプリフ
ェッチ論理回路を組み込む。
【0006】
【発明の実施の形態】図1では、本発明を組み込んだ典
型的なコンピュータ・システム100のブロック図を示
す。コンピュータ・システム100は、IBM Per
sonalComputerなどのパーソナル・コンピ
ュータ・システムを含むことができる。コンピュータ・
システム100は、独立型ワークステーションとして作
動することが可能であり、あるいは、大規模なコンピュ
ータ・ネットワークの一部として、クライアント・ステ
ーションまたはサーバ・ステーションとして作動するこ
とが可能である。
型的なコンピュータ・システム100のブロック図を示
す。コンピュータ・システム100は、IBM Per
sonalComputerなどのパーソナル・コンピ
ュータ・システムを含むことができる。コンピュータ・
システム100は、独立型ワークステーションとして作
動することが可能であり、あるいは、大規模なコンピュ
ータ・ネットワークの一部として、クライアント・ステ
ーションまたはサーバ・ステーションとして作動するこ
とが可能である。
【0007】コンピュータ・システム100は、2つの
処理系を含む。1つは、オペレーティング・システムお
よびアプリケーションによって指定される機能などの、
高レベルの処理機能を実行するホスト処理系110であ
り、もう1つは、コンピュータ・システム100に対す
る記憶媒体インタフェースまたは通信インタフェースの
提供などの、周辺機能を実行するローカル処理系120
である。ホスト処理系110およびローカル処理系12
0は、入出力(I/O)拡張バス130を介して相互に
結合される。I/O拡張バス130は、多数の適切なI
/O拡張バス・プロトコルのいずれかに準拠する。これ
らのI/O拡張バス・プロトコルは、I/O拡張バス1
30上のデータ・ブロック転送などの指定された機能を
実行するために、ローカル・インタフェース・コントロ
ーラがバスを制御できるようにする。このようなバス・
プロトコルの例には、参考資料として本文に記述されて
いる、PCIまたはMicroChannelの仕様で
定義されたものが含まれる。
処理系を含む。1つは、オペレーティング・システムお
よびアプリケーションによって指定される機能などの、
高レベルの処理機能を実行するホスト処理系110であ
り、もう1つは、コンピュータ・システム100に対す
る記憶媒体インタフェースまたは通信インタフェースの
提供などの、周辺機能を実行するローカル処理系120
である。ホスト処理系110およびローカル処理系12
0は、入出力(I/O)拡張バス130を介して相互に
結合される。I/O拡張バス130は、多数の適切なI
/O拡張バス・プロトコルのいずれかに準拠する。これ
らのI/O拡張バス・プロトコルは、I/O拡張バス1
30上のデータ・ブロック転送などの指定された機能を
実行するために、ローカル・インタフェース・コントロ
ーラがバスを制御できるようにする。このようなバス・
プロトコルの例には、参考資料として本文に記述されて
いる、PCIまたはMicroChannelの仕様で
定義されたものが含まれる。
【0008】ホスト処理系110は、単一の中央処理装
置103を含むことがあり、あるいはマルチプロセッシ
ング・システムでは、コンピュータ・システム100の
機能全体を制御する複数の中央処理装置を含むこともで
きる。中央処理装置103は、Intel(登録商標)
Corporationが提供するPentiumP
rocessor(登録商標)、あるいはIBM(登録
商標) Corporationが提供するPower
PC(登録商標)プロセッサなどの、多くの市販中央処
理装置のいずれかにできる。周知のように、中央処理装
置103は、初めに読み取り専用メモリ(ROM)10
1に格納されているファームウェア命令を実行すること
によって作動する。基本入出力システムまたはBIOS
とも呼ばれるファームウェア命令は、接続装置を検出す
るための命令と、電源オン自己試験(POST)用の命
令を含むことができる。一般にファームウェア命令が完
了すると、中央処理装置103は、ローカル系記憶装置
114からシステム・メモリ107にOSをロードする
ことによって、オペレーティング・システム命令を実行
する。中央処理装置103、ROM101、およびシス
テム・メモリ107の間のデータ転送は、メモリ・コン
トローラ109によって制御される。一方、ホスト処理
系110とI/O拡張バス130の間のデータ転送は、
I/Oブリッジ・インタフェース111によって制御さ
れる。I/Oブリッジ・インタフェース111は、メモ
リ・コントローラ109、外部キャッシュ・コントロー
ラ106を介した中央処理装置103、およびI/O拡
張バス130の間をインタフェースするように設計され
ている。中央処理装置103は、適切なI/Oバス・ブ
リッジのI/Oブリッジ・インタフェース111を介し
てI/O拡張バス130とインタフェースし、その結果
としてローカル処理系とインタフェースする。
置103を含むことがあり、あるいはマルチプロセッシ
ング・システムでは、コンピュータ・システム100の
機能全体を制御する複数の中央処理装置を含むこともで
きる。中央処理装置103は、Intel(登録商標)
Corporationが提供するPentiumP
rocessor(登録商標)、あるいはIBM(登録
商標) Corporationが提供するPower
PC(登録商標)プロセッサなどの、多くの市販中央処
理装置のいずれかにできる。周知のように、中央処理装
置103は、初めに読み取り専用メモリ(ROM)10
1に格納されているファームウェア命令を実行すること
によって作動する。基本入出力システムまたはBIOS
とも呼ばれるファームウェア命令は、接続装置を検出す
るための命令と、電源オン自己試験(POST)用の命
令を含むことができる。一般にファームウェア命令が完
了すると、中央処理装置103は、ローカル系記憶装置
114からシステム・メモリ107にOSをロードする
ことによって、オペレーティング・システム命令を実行
する。中央処理装置103、ROM101、およびシス
テム・メモリ107の間のデータ転送は、メモリ・コン
トローラ109によって制御される。一方、ホスト処理
系110とI/O拡張バス130の間のデータ転送は、
I/Oブリッジ・インタフェース111によって制御さ
れる。I/Oブリッジ・インタフェース111は、メモ
リ・コントローラ109、外部キャッシュ・コントロー
ラ106を介した中央処理装置103、およびI/O拡
張バス130の間をインタフェースするように設計され
ている。中央処理装置103は、適切なI/Oバス・ブ
リッジのI/Oブリッジ・インタフェース111を介し
てI/O拡張バス130とインタフェースし、その結果
としてローカル処理系とインタフェースする。
【0009】プロセッサのパフォーマンスを高めるため
に、中央処理装置103に内部キャッシュ(L1キャッ
シュ)104およびオプションの外部キャッシュ(L2
キャッシュ)105を組み込み、最後に使用されたデー
タおよび命令を格納してシステム・メモリ・アクセス・
サイクルが長くなるのを未然に防ぐことができる。一般
にキャッシュ・メモリは、中央処理装置103に隣接し
て配置される高速スタティック・ランダム・アクセス・
メモリ(SRAM)を含む。L1キャッシュおよびL2
キャッシュへのデータ転送、およびそれらからのデータ
転送は、本発明に従ってキャッシュ・プリフェッチ機能
を組み込んだキャッシュ・コントローラ106によって
制御される。キャッシュ・コントローラ106は、CP
Uバス108を介してCPUとインタフェースする。C
PUバス108は、データ・バス、アドレス・バス、お
よび制御バスを含む。キャッシュ・コントローラ106
は、命令とデータの格納およびフェッチを、キャッシュ
・ラインと呼ばれるデータ・バス幅の整数倍のビット単
位で行う。
に、中央処理装置103に内部キャッシュ(L1キャッ
シュ)104およびオプションの外部キャッシュ(L2
キャッシュ)105を組み込み、最後に使用されたデー
タおよび命令を格納してシステム・メモリ・アクセス・
サイクルが長くなるのを未然に防ぐことができる。一般
にキャッシュ・メモリは、中央処理装置103に隣接し
て配置される高速スタティック・ランダム・アクセス・
メモリ(SRAM)を含む。L1キャッシュおよびL2
キャッシュへのデータ転送、およびそれらからのデータ
転送は、本発明に従ってキャッシュ・プリフェッチ機能
を組み込んだキャッシュ・コントローラ106によって
制御される。キャッシュ・コントローラ106は、CP
Uバス108を介してCPUとインタフェースする。C
PUバス108は、データ・バス、アドレス・バス、お
よび制御バスを含む。キャッシュ・コントローラ106
は、命令とデータの格納およびフェッチを、キャッシュ
・ラインと呼ばれるデータ・バス幅の整数倍のビット単
位で行う。
【0010】プログラムがCPUによって実行されると
き、CPUは、システム・メモリ107からのデータお
よび命令の転送に関連する要求を多数生成する。これら
の要求は、命令要求またはデータ要求である。さらに要
求のタイプに応じて、これらの要求は、システム・メモ
リ107からの情報の取り出し、すなわち読み取り、あ
るいはシステム・メモリ107への情報の格納、すなわ
ち書き込みを行う。したがってCPUは、要求のタイ
プ、すなわち命令要求またはデータ要求を示す要求タイ
プ信号、およびこれに加えて転送の方向、すなわち読み
取りまたは書き込みを示す第2制御信号を生成する。つ
まりCPUは、CPU制御バス上で適切な信号を起動す
ることによって、要求のタイプと転送の方向を通知す
る。
き、CPUは、システム・メモリ107からのデータお
よび命令の転送に関連する要求を多数生成する。これら
の要求は、命令要求またはデータ要求である。さらに要
求のタイプに応じて、これらの要求は、システム・メモ
リ107からの情報の取り出し、すなわち読み取り、あ
るいはシステム・メモリ107への情報の格納、すなわ
ち書き込みを行う。したがってCPUは、要求のタイ
プ、すなわち命令要求またはデータ要求を示す要求タイ
プ信号、およびこれに加えて転送の方向、すなわち読み
取りまたは書き込みを示す第2制御信号を生成する。つ
まりCPUは、CPU制御バス上で適切な信号を起動す
ることによって、要求のタイプと転送の方向を通知す
る。
【0011】ローカル処理系120では、多様な周辺装
置115に結合される小型コンピュータ用周辺機器イン
タフェース(SCSI)コントローラなどの、複数のロ
ーカル・インタフェース・コントローラ113を、コン
ピュータ・システム100に組み込むことができる。そ
のような周辺装置として、記憶装置、通信装置、印刷装
置、ネットワーキング装置、イメージ処理装置などを追
加し、システムの機能性および特徴を補強することがで
きる。たとえば、Fast Wide SCSIローカ
ル・インタフェース・コントローラを持ち、Redun
dant Array of Inexpensive
Drives(RAID)を記憶装置とするコンピュ
ータ・システム100を、サーバ・ステーションとして
利用できる。
置115に結合される小型コンピュータ用周辺機器イン
タフェース(SCSI)コントローラなどの、複数のロ
ーカル・インタフェース・コントローラ113を、コン
ピュータ・システム100に組み込むことができる。そ
のような周辺装置として、記憶装置、通信装置、印刷装
置、ネットワーキング装置、イメージ処理装置などを追
加し、システムの機能性および特徴を補強することがで
きる。たとえば、Fast Wide SCSIローカ
ル・インタフェース・コントローラを持ち、Redun
dant Array of Inexpensive
Drives(RAID)を記憶装置とするコンピュ
ータ・システム100を、サーバ・ステーションとして
利用できる。
【0012】当分野に並みの知識を持つ当業者は、前記
のホスト処理系110およびローカル処理系120が単
なる典型的な例であり、アプリケーションに応じてこれ
らの処理系の機能要件を実現するように、ユニプロセッ
シングまたはマルチ・プロセッシングの多様なシステム
・アーキテクチャを設計できることをよく理解するであ
ろう。
のホスト処理系110およびローカル処理系120が単
なる典型的な例であり、アプリケーションに応じてこれ
らの処理系の機能要件を実現するように、ユニプロセッ
シングまたはマルチ・プロセッシングの多様なシステム
・アーキテクチャを設計できることをよく理解するであ
ろう。
【0013】図2では、本発明に従った図1のキャッシ
ュ・コントローラ106のブロック図を示す。キャッシ
ュ・コントローラ106は、キャッシュ・コントローラ
106のオペレーション全体を制御するコントローラ論
理回路201を含む。コントローラ論理回路201は、
CPUバス、アドレス、および制御バスに応答し、(図
1に示す)システム・メモリ107とキャッシュ・メモ
リ105を読み書きするためのアドレス信号と制御信号
を生成する論理回路が組み込まれている。またコントロ
ーラ論理回路201には、キャッシュ・ヒットとキャッ
シュ・ミスを判断するための論理回路とタグ・レジスタ
202が組み込まれている。キャッシュ・ヒットは、デ
ータまたは命令に対するCPU要求がキャッシュ・メモ
リ内に見つかったときに発生する。一方キャッシュ・ミ
スは、キャッシュ・メモリ内にそのようなデータが見つ
からないときに発生する。高速キャッシュ・メモリ10
5は、周知のキャッシュ・インタフェース・バス211
を介してキャッシュ・コントローラ106に結合され、
キャッシュ・データは、このバス211上を転送され
る。
ュ・コントローラ106のブロック図を示す。キャッシ
ュ・コントローラ106は、キャッシュ・コントローラ
106のオペレーション全体を制御するコントローラ論
理回路201を含む。コントローラ論理回路201は、
CPUバス、アドレス、および制御バスに応答し、(図
1に示す)システム・メモリ107とキャッシュ・メモ
リ105を読み書きするためのアドレス信号と制御信号
を生成する論理回路が組み込まれている。またコントロ
ーラ論理回路201には、キャッシュ・ヒットとキャッ
シュ・ミスを判断するための論理回路とタグ・レジスタ
202が組み込まれている。キャッシュ・ヒットは、デ
ータまたは命令に対するCPU要求がキャッシュ・メモ
リ内に見つかったときに発生する。一方キャッシュ・ミ
スは、キャッシュ・メモリ内にそのようなデータが見つ
からないときに発生する。高速キャッシュ・メモリ10
5は、周知のキャッシュ・インタフェース・バス211
を介してキャッシュ・コントローラ106に結合され、
キャッシュ・データは、このバス211上を転送され
る。
【0014】キャッシュ・コントローラ106には、プ
リフェッチ論理回路203に加えて、本発明に従ってプ
リフェッチ機能を制御する多数のレジスタが組み込まれ
ている。後に詳述するように、プログラム可能プリフェ
ッチ制御レジスタ207は、多数のプリフェッチ制御レ
ジスタ・フィールドを使用して、キャッシュ・コントロ
ーラ106が命令フェッチ、データ読み取り、およびデ
ータ書き込みに対して行うプリフェッチの量を個別に制
御する。プリフェッチ制御レジスタ207は、各プリフ
ェッチ制御レジスタ・フィールドにプログラム可能な値
を保存するために、ソフトウェアを制御することによっ
てアドレス指定できる。多数のプリフェッチ待ち行列レ
ジスタを含むプリフェッチ要求待ち行列レジスタ・セッ
ト209は、キャッシュ・コントローラ106によって
まだ処理されていない、プリフェッチを待っている多数
のCPU要求を格納する。キャッシュ・コントローラに
よってプログラムされるプリフェッチ・ワーク・レジス
タ208は、現在実行中のプリフェッチ要求に関連付け
られた情報を格納する。
リフェッチ論理回路203に加えて、本発明に従ってプ
リフェッチ機能を制御する多数のレジスタが組み込まれ
ている。後に詳述するように、プログラム可能プリフェ
ッチ制御レジスタ207は、多数のプリフェッチ制御レ
ジスタ・フィールドを使用して、キャッシュ・コントロ
ーラ106が命令フェッチ、データ読み取り、およびデ
ータ書き込みに対して行うプリフェッチの量を個別に制
御する。プリフェッチ制御レジスタ207は、各プリフ
ェッチ制御レジスタ・フィールドにプログラム可能な値
を保存するために、ソフトウェアを制御することによっ
てアドレス指定できる。多数のプリフェッチ待ち行列レ
ジスタを含むプリフェッチ要求待ち行列レジスタ・セッ
ト209は、キャッシュ・コントローラ106によって
まだ処理されていない、プリフェッチを待っている多数
のCPU要求を格納する。キャッシュ・コントローラに
よってプログラムされるプリフェッチ・ワーク・レジス
タ208は、現在実行中のプリフェッチ要求に関連付け
られた情報を格納する。
【0015】図3では、プリフェッチ制御レジスタ20
7の図を示す。プリフェッチ制御レジスタは、3つのプ
リフェッチ制御レジスタ・フィールドを含む。すなわ
ち、命令プリフェッチ・フィールド301、データ読み
取りプリフェッチ・フィールド302、およびデータ書
き込みプリフェッチ・フィールド303である。特定の
インプリメンテーションに応じて、プリフェッチ制御レ
ジスタ207の各フィールドは、プリフェッチされるキ
ャッシュ・ライン数を示すプログラム可能な値を表す多
数のビットから構成される。命令プリフェッチ・フィー
ルド301は、CPUが命令のフェッチ要求を通知した
ときにプリフェッチされるキャッシュ・ライン数を表す
値を格納する。同様に、データ読み取りプリフェッチ・
フィールド302は、CPUがデータ読み取り要求を通
知したときにプリフェッチされるキャッシュ・ライン数
を表す値を格納する。最後に、データ書き込みプリフェ
ッチ・フィールド303は、CPUがデータ書き込み要
求を通知したときにプリフェッチされるキャッシュ・ラ
イン数を表す値を格納する。
7の図を示す。プリフェッチ制御レジスタは、3つのプ
リフェッチ制御レジスタ・フィールドを含む。すなわ
ち、命令プリフェッチ・フィールド301、データ読み
取りプリフェッチ・フィールド302、およびデータ書
き込みプリフェッチ・フィールド303である。特定の
インプリメンテーションに応じて、プリフェッチ制御レ
ジスタ207の各フィールドは、プリフェッチされるキ
ャッシュ・ライン数を示すプログラム可能な値を表す多
数のビットから構成される。命令プリフェッチ・フィー
ルド301は、CPUが命令のフェッチ要求を通知した
ときにプリフェッチされるキャッシュ・ライン数を表す
値を格納する。同様に、データ読み取りプリフェッチ・
フィールド302は、CPUがデータ読み取り要求を通
知したときにプリフェッチされるキャッシュ・ライン数
を表す値を格納する。最後に、データ書き込みプリフェ
ッチ・フィールド303は、CPUがデータ書き込み要
求を通知したときにプリフェッチされるキャッシュ・ラ
イン数を表す値を格納する。
【0016】図4では、プリフェッチ要求待ち行列レジ
スタ・セット209の典型的な例の図を示す。プリフェ
ッチ要求待ち行列レジスタ・セット209は、未処理要
求のアドレスとCPU要求タイプを格納する多数のレジ
スタ・エレメント410を含む。キャッシュ・コントロ
ーラは、未処理のプリフェッチ要求に関連する情報を各
レジスタ・エレメント410に格納する。各エレメント
410は、アドレス・フィールド(401)およびタイ
プ・フィールド(402)という2つのレジスタ・フィ
ールドを含む。アドレス・フィールドは、プリフェッチ
が実行されるプロセッサ要求のメモリ・アドレスであ
る。タイプ・フィールドは、CPU要求および転送タイ
プ信号に基づいてキャッシュ・コントローラが生成する
ものであり、プリフェッチが実行される要求が命令フェ
ッチであるか、データ読み取りであるか、あるいはデー
タ書き込みであるかを示すために使用される。
スタ・セット209の典型的な例の図を示す。プリフェ
ッチ要求待ち行列レジスタ・セット209は、未処理要
求のアドレスとCPU要求タイプを格納する多数のレジ
スタ・エレメント410を含む。キャッシュ・コントロ
ーラは、未処理のプリフェッチ要求に関連する情報を各
レジスタ・エレメント410に格納する。各エレメント
410は、アドレス・フィールド(401)およびタイ
プ・フィールド(402)という2つのレジスタ・フィ
ールドを含む。アドレス・フィールドは、プリフェッチ
が実行されるプロセッサ要求のメモリ・アドレスであ
る。タイプ・フィールドは、CPU要求および転送タイ
プ信号に基づいてキャッシュ・コントローラが生成する
ものであり、プリフェッチが実行される要求が命令フェ
ッチであるか、データ読み取りであるか、あるいはデー
タ書き込みであるかを示すために使用される。
【0017】図5では、プリフェッチ・ワーク・レジス
タ(PWR)208の典型的な例の図を示す。プリフェ
ッチ・ワーク・レジスタ208は、アドレス・フィール
ド(501)、方向フィールド(502)、およびカウ
ント・フィールド(503)という3つのフィールドか
ら構成される。プリフェッチ・オペレーションが実行さ
れるときに、キャッシュ・コントローラ106は、現行
のプリフェッチ・オペレーションを実行するために必要
な情報をプリフェッチ・ワーク・レジスタ208にロー
ドする。アドレス・フィールド501には、プリフェッ
チ要求待ち行列エレメント410のアドレス・フィール
ド401から最初に受信したメモリ・アドレスがロード
され、プリフェッチされるキャッシュ・ラインのメモリ
・アドレスを判断するために使用される。方向フィール
ド502は、システム・メモリ107から順次プリフェ
ッチするキャッシュ・ラインを、昇順でプリフェッチす
るか、降順でプリフェッチするかを判断するために使用
される。プリフェッチ論理回路203が昇順でプリフェ
ッチしているときは、プリフェッチされるすべてのキャ
ッシュ・ラインが、アドレス・フィールド501に含ま
れるメモリ・アドレスより高位のメモリ・アドレスを持
つ。プリフェッチャが降順でプリフェッチしているとき
は、プリフェッチされるすべてのキャッシュ・ライン
が、アドレス・フィールド501に含まれるメモリ・ア
ドレスより低位のメモリ・アドレスを持つ。カウント・
フィールド503は、プリフェッチするキャッシュ・ラ
イン数を指定するために使用される。
タ(PWR)208の典型的な例の図を示す。プリフェ
ッチ・ワーク・レジスタ208は、アドレス・フィール
ド(501)、方向フィールド(502)、およびカウ
ント・フィールド(503)という3つのフィールドか
ら構成される。プリフェッチ・オペレーションが実行さ
れるときに、キャッシュ・コントローラ106は、現行
のプリフェッチ・オペレーションを実行するために必要
な情報をプリフェッチ・ワーク・レジスタ208にロー
ドする。アドレス・フィールド501には、プリフェッ
チ要求待ち行列エレメント410のアドレス・フィール
ド401から最初に受信したメモリ・アドレスがロード
され、プリフェッチされるキャッシュ・ラインのメモリ
・アドレスを判断するために使用される。方向フィール
ド502は、システム・メモリ107から順次プリフェ
ッチするキャッシュ・ラインを、昇順でプリフェッチす
るか、降順でプリフェッチするかを判断するために使用
される。プリフェッチ論理回路203が昇順でプリフェ
ッチしているときは、プリフェッチされるすべてのキャ
ッシュ・ラインが、アドレス・フィールド501に含ま
れるメモリ・アドレスより高位のメモリ・アドレスを持
つ。プリフェッチャが降順でプリフェッチしているとき
は、プリフェッチされるすべてのキャッシュ・ライン
が、アドレス・フィールド501に含まれるメモリ・ア
ドレスより低位のメモリ・アドレスを持つ。カウント・
フィールド503は、プリフェッチするキャッシュ・ラ
イン数を指定するために使用される。
【0018】図6では、本発明を実現するために実行す
る手順の操作のフロー・チャートを示す。ブロック60
1では、キャッシュ・コントローラ106がCPUから
の要求を受信する。ブロック603では、要求がキャッ
シング可能であるか、キャッシング不可能であるかに関
する判断が行われる。キャッシング不可能な場合は、キ
ャッシュ・コントローラは要求を無視してこれをシステ
ム・メモリ107に渡す。ブロック605では、キャッ
シュ・コントローラ106が、キャッシュ・タグ・レジ
スタ202を検証することによって、要求がキャッシュ
・ヒットであるかキャッシュ・ミスであるかを判断す
る。要求がキャッシュ・ヒットとして判断された場合
に、ブロック607でキャッシュ・コントローラは、制
御バス信号を検査することによって、要求が読み取り要
求であるか書き込み要求であるかを判断する。読み取り
要求の場合は、キャッシュ・コントローラ106が命令
またはデータをキャッシュからフェッチし、キャッシュ
・ラインをCPUに提供する(ブロック609)。書き
込み要求の場合は、キャッシュ・コントローラがCPU
からデータを受信し、これをキャッシュに書き込み、所
定のキャッシュ統一プロトコルに従ってレジスタ202
を更新する(ブロック611)。キャッシュ・ミスが発
生した場合は、キャッシュ統一プロトコルに従ってキャ
ッシュ・ミスが処理される(ブロック623)。このと
きにキャッシュ・コントローラ106は、プリフェッチ
要求待ち行列エレメント410を作成する(ブロック6
13)。プリフェッチ要求待ち行列エレメント410が
作成された後に、ブロック615で、待ち行列エレメン
トの数が所定の数を超過しているか否かが判断される。
すなわち、プリフェッチ待ち行列がいっぱいであるか否
かが判断される。プリフェッチ待ち行列がいっぱいであ
る場合は、待ち行列の最初のエレメント、すなわち最も
古い未処理の要求が、その待ち行列から削除される。こ
の段階に到達したとき、または待ち行列がいっぱいでな
い場合は、プリフェッチ要求エレメントが待ち行列に配
置される。
る手順の操作のフロー・チャートを示す。ブロック60
1では、キャッシュ・コントローラ106がCPUから
の要求を受信する。ブロック603では、要求がキャッ
シング可能であるか、キャッシング不可能であるかに関
する判断が行われる。キャッシング不可能な場合は、キ
ャッシュ・コントローラは要求を無視してこれをシステ
ム・メモリ107に渡す。ブロック605では、キャッ
シュ・コントローラ106が、キャッシュ・タグ・レジ
スタ202を検証することによって、要求がキャッシュ
・ヒットであるかキャッシュ・ミスであるかを判断す
る。要求がキャッシュ・ヒットとして判断された場合
に、ブロック607でキャッシュ・コントローラは、制
御バス信号を検査することによって、要求が読み取り要
求であるか書き込み要求であるかを判断する。読み取り
要求の場合は、キャッシュ・コントローラ106が命令
またはデータをキャッシュからフェッチし、キャッシュ
・ラインをCPUに提供する(ブロック609)。書き
込み要求の場合は、キャッシュ・コントローラがCPU
からデータを受信し、これをキャッシュに書き込み、所
定のキャッシュ統一プロトコルに従ってレジスタ202
を更新する(ブロック611)。キャッシュ・ミスが発
生した場合は、キャッシュ統一プロトコルに従ってキャ
ッシュ・ミスが処理される(ブロック623)。このと
きにキャッシュ・コントローラ106は、プリフェッチ
要求待ち行列エレメント410を作成する(ブロック6
13)。プリフェッチ要求待ち行列エレメント410が
作成された後に、ブロック615で、待ち行列エレメン
トの数が所定の数を超過しているか否かが判断される。
すなわち、プリフェッチ待ち行列がいっぱいであるか否
かが判断される。プリフェッチ待ち行列がいっぱいであ
る場合は、待ち行列の最初のエレメント、すなわち最も
古い未処理の要求が、その待ち行列から削除される。こ
の段階に到達したとき、または待ち行列がいっぱいでな
い場合は、プリフェッチ要求エレメントが待ち行列に配
置される。
【0019】図7では、プリフェッチ論理回路203に
よって実行される手順の典型的な操作のフロー・チャー
トを示す。プリフェッチ論理回路203は、プリフェッ
チ要求待ち行列の内容を継続的にチェックする(ブロッ
ク701)。待ち行列が空でない場合は、プリフェッチ
論理回路203が最初の要求をプリフェッチ要求待ち行
列から削除する(ブロック705)。次にプリフェッチ
論理回路203は、プリフェッチ・ワーク・レジスタ2
08のアドレス部に、待ち行列エレメントのアドレス・
フィールド401に含まれているアドレスをロードする
(ブロック707)。ブロック709でプリフェッチ論
理回路は、タイプ・フィールド402に含まれる要求タ
イプに基づいて、要求が読み取り要求であるか書き込み
要求であるかを判断する。書き込み要求の場合は、プリ
フェッチ論理回路203が、降順方向を表す値を方向フ
ィールド502に設定する(ブロック711)。逆に読
み取り要求の場合は、プリフェッチ論理回路203が、
昇順方向を表す値を方向フィールド502に設定する
(ブロック713)。ブロック715では、CPU要求
が命令フェッチ用であるか否かに関する判断が行われ
る。命令フェッチ用の場合は、ワーク・レジスタのカウ
ント・フィールド503が、プリフェッチ制御レジスタ
207の命令プリフェッチ・フィールド301に含まれ
る値と同じに設定される。命令用フェッチでない場合
は、ブロック719で、プリフェッチ論理回路203
は、要求がデータ読み取り要求であるか否かを判断す
る。データ読み取り要求の場合は、ワーク・レジスタの
カウント・フィールド503が、プリフェッチ制御レジ
スタ207のデータ読み取りプリフェッチ・フィールド
302に含まれる値と同じに設定される(ブロック72
1)。データ読み取り要求でない場合は、要求がデータ
書き込み要求であることが推定され、ワーク・レジスタ
のカウント・フィールド503は、プリフェッチ制御レ
ジスタ207のデータ書き込みフィールド303に含ま
れる値と同じに設定される(ブロック723)。次にプ
リフェッチ論理回路203は、カウント・フィールド5
03にロードされる値に基づいて、アドレス・フィール
ド501で示される開始アドレスから、方向フィールド
502で示される方向に、システム・メモリから多数の
キャッシュ・ラインのプリフェッチを開始する(ブロッ
ク725)。現行のプリフェッチ操作が完了すると、フ
ロー・チャートはブロック701に戻り、他の未処理の
プリフェッチ要求を処理する必要があるか否かが判断さ
れる。
よって実行される手順の典型的な操作のフロー・チャー
トを示す。プリフェッチ論理回路203は、プリフェッ
チ要求待ち行列の内容を継続的にチェックする(ブロッ
ク701)。待ち行列が空でない場合は、プリフェッチ
論理回路203が最初の要求をプリフェッチ要求待ち行
列から削除する(ブロック705)。次にプリフェッチ
論理回路203は、プリフェッチ・ワーク・レジスタ2
08のアドレス部に、待ち行列エレメントのアドレス・
フィールド401に含まれているアドレスをロードする
(ブロック707)。ブロック709でプリフェッチ論
理回路は、タイプ・フィールド402に含まれる要求タ
イプに基づいて、要求が読み取り要求であるか書き込み
要求であるかを判断する。書き込み要求の場合は、プリ
フェッチ論理回路203が、降順方向を表す値を方向フ
ィールド502に設定する(ブロック711)。逆に読
み取り要求の場合は、プリフェッチ論理回路203が、
昇順方向を表す値を方向フィールド502に設定する
(ブロック713)。ブロック715では、CPU要求
が命令フェッチ用であるか否かに関する判断が行われ
る。命令フェッチ用の場合は、ワーク・レジスタのカウ
ント・フィールド503が、プリフェッチ制御レジスタ
207の命令プリフェッチ・フィールド301に含まれ
る値と同じに設定される。命令用フェッチでない場合
は、ブロック719で、プリフェッチ論理回路203
は、要求がデータ読み取り要求であるか否かを判断す
る。データ読み取り要求の場合は、ワーク・レジスタの
カウント・フィールド503が、プリフェッチ制御レジ
スタ207のデータ読み取りプリフェッチ・フィールド
302に含まれる値と同じに設定される(ブロック72
1)。データ読み取り要求でない場合は、要求がデータ
書き込み要求であることが推定され、ワーク・レジスタ
のカウント・フィールド503は、プリフェッチ制御レ
ジスタ207のデータ書き込みフィールド303に含ま
れる値と同じに設定される(ブロック723)。次にプ
リフェッチ論理回路203は、カウント・フィールド5
03にロードされる値に基づいて、アドレス・フィール
ド501で示される開始アドレスから、方向フィールド
502で示される方向に、システム・メモリから多数の
キャッシュ・ラインのプリフェッチを開始する(ブロッ
ク725)。現行のプリフェッチ操作が完了すると、フ
ロー・チャートはブロック701に戻り、他の未処理の
プリフェッチ要求を処理する必要があるか否かが判断さ
れる。
【0020】まとめとして、本発明の構成に関して以下
の事項を開示する。
の事項を開示する。
【0021】(1)コンピュータ・システムであって、
(a)主メモリと、(b)情報の要求が命令の要求であ
るかデータの要求であるかを示す第1のCPU制御信号
を生成し、要求がメモリからの情報の取り出しであるか
メモリへの情報の格納であるかを示す第2のCPU制御
信号を生成する、CPUと、(c)キャッシュ・メモリ
を有するキャッシュ・メモリ・システムと、(d)前記
第1のCPU信号と前記第2のCPU信号に応答して、
前記主メモリから前記キャッシュ・メモリにプリフェッ
チされるデータ量を判断するプリフェッチ論理回路を有
し、前記キャッシュ・メモリに結合されるキャッシュ・
コントローラと、を有するコンピュータ・システム。 (2)前記キャッシュ・メモリ・システムが階層化され
たキャッシュ・システムを含み、前記キャッシュ・メモ
リが、第1の高位のキャッシュ・メモリおよび第2の低
位のキャッシュ・メモリを含む、(1)に記載のコンピ
ュータ・システム。 (3)前記キャッシュ・コントローラが、プリフェッチ
されるプログラム可能命令バイト数を表す値を格納する
プログラム可能プリフェッチ制御レジスタを含む、
(1)に記載のコンピュータ・システム。 (4)前記キャッシュ・コントローラが、前記プログラ
ム可能プリフェッチ制御レジスタに格納されている前記
命令バイト数をプリフェッチするための命令要求を示
す、前記第1のCPU制御信号に応答する、(3)に記
載のコンピュータ・システム。 (5)前記第1のCPU制御信号がデータ要求を示し、
前記第2のCPU制御信号が、前記データ要求が前記主
メモリからの情報取り出しであることを示しているとき
に、プリフェッチされるプログラム可能データ・バイト
数を表す値を格納するプログラム可能プリフェッチ制御
レジスタを前記キャッシュ・コントローラが含む、
(1)に記載のコンピュータ・システム。 (6)前記キャッシュ・コントローラが、データ要求を
示す前記第1のCPU制御信号、および前記主メモリか
ら情報を取り出すためのデータ要求を示す前記第2のC
PU制御信号に応答し、前記プログラム可能プリフェッ
チ制御レジスタに格納されている前記データ・バイト数
をプリフェッチする、(5)に記載のコンピュータ・シ
ステム。 (7)前記第1のCPU制御信号がデータ要求を示し、
前記第2のCPU制御信号が、前記データ要求が前記主
メモリへの情報格納であることを示しているときに、プ
リフェッチされるプログラム可能データ・バイト数を表
す値を格納するプログラム可能プリフェッチ制御レジス
タを前記キャッシュ・コントローラが含む、(1)に記
載のコンピュータ・システム。 (8)前記キャッシュ・コントローラが、データ要求を
示す前記第1のCPU制御信号、および前記主メモリに
情報を格納するためのデータ要求を示す前記第2のCP
U制御信号に応答し、前記プログラム可能プリフェッチ
制御レジスタに格納されている前記データ・バイト数を
プリフェッチする、(7)に記載のコンピュータ・シス
テム。 (9)前記キャッシュ・コントローラが、プリフェッチ
を待つ多数のCPU要求を格納する多数のプリフェッチ
待ち行列レジスタを持つプリフェッチ待ち行列レジスタ
・セットを含む、(1)に記載のコンピュータ・システ
ム。 (10)各前記プリフェッチ待ち行列レジスタが、CP
U要求のアドレスを格納する第1のレジスタ・フィール
ド、ならびに前記第1のCPU制御信号および前記第2
のCPU制御信号に基づいて要求タイプを格納する第2
のフィールドを含む、(9)に記載のコンピュータ・シ
ステム。 (11)前記キャッシュ・コントローラが、前記要求タ
イプに応答して前記主メモリからのプリフェッチが昇順
であるか降順であるかを判断する方向論理回路を含む、
(10)に記載のコンピュータ・システム。 (12)前記要求タイプが前記主メモリから情報を取り
出すためのデータ要求または命令要求を示しているとき
は、前記キャッシュ・コントローラが前記主メモリから
昇順で情報をプリフェッチし、前記要求タイプが前記主
メモリに情報を格納するためのデータ要求を示している
ときは、前記キャッシュ・コントローラが主メモリから
情報を降順でプリフェッチする、(11)に記載のコン
ピュータ・システム。
(a)主メモリと、(b)情報の要求が命令の要求であ
るかデータの要求であるかを示す第1のCPU制御信号
を生成し、要求がメモリからの情報の取り出しであるか
メモリへの情報の格納であるかを示す第2のCPU制御
信号を生成する、CPUと、(c)キャッシュ・メモリ
を有するキャッシュ・メモリ・システムと、(d)前記
第1のCPU信号と前記第2のCPU信号に応答して、
前記主メモリから前記キャッシュ・メモリにプリフェッ
チされるデータ量を判断するプリフェッチ論理回路を有
し、前記キャッシュ・メモリに結合されるキャッシュ・
コントローラと、を有するコンピュータ・システム。 (2)前記キャッシュ・メモリ・システムが階層化され
たキャッシュ・システムを含み、前記キャッシュ・メモ
リが、第1の高位のキャッシュ・メモリおよび第2の低
位のキャッシュ・メモリを含む、(1)に記載のコンピ
ュータ・システム。 (3)前記キャッシュ・コントローラが、プリフェッチ
されるプログラム可能命令バイト数を表す値を格納する
プログラム可能プリフェッチ制御レジスタを含む、
(1)に記載のコンピュータ・システム。 (4)前記キャッシュ・コントローラが、前記プログラ
ム可能プリフェッチ制御レジスタに格納されている前記
命令バイト数をプリフェッチするための命令要求を示
す、前記第1のCPU制御信号に応答する、(3)に記
載のコンピュータ・システム。 (5)前記第1のCPU制御信号がデータ要求を示し、
前記第2のCPU制御信号が、前記データ要求が前記主
メモリからの情報取り出しであることを示しているとき
に、プリフェッチされるプログラム可能データ・バイト
数を表す値を格納するプログラム可能プリフェッチ制御
レジスタを前記キャッシュ・コントローラが含む、
(1)に記載のコンピュータ・システム。 (6)前記キャッシュ・コントローラが、データ要求を
示す前記第1のCPU制御信号、および前記主メモリか
ら情報を取り出すためのデータ要求を示す前記第2のC
PU制御信号に応答し、前記プログラム可能プリフェッ
チ制御レジスタに格納されている前記データ・バイト数
をプリフェッチする、(5)に記載のコンピュータ・シ
ステム。 (7)前記第1のCPU制御信号がデータ要求を示し、
前記第2のCPU制御信号が、前記データ要求が前記主
メモリへの情報格納であることを示しているときに、プ
リフェッチされるプログラム可能データ・バイト数を表
す値を格納するプログラム可能プリフェッチ制御レジス
タを前記キャッシュ・コントローラが含む、(1)に記
載のコンピュータ・システム。 (8)前記キャッシュ・コントローラが、データ要求を
示す前記第1のCPU制御信号、および前記主メモリに
情報を格納するためのデータ要求を示す前記第2のCP
U制御信号に応答し、前記プログラム可能プリフェッチ
制御レジスタに格納されている前記データ・バイト数を
プリフェッチする、(7)に記載のコンピュータ・シス
テム。 (9)前記キャッシュ・コントローラが、プリフェッチ
を待つ多数のCPU要求を格納する多数のプリフェッチ
待ち行列レジスタを持つプリフェッチ待ち行列レジスタ
・セットを含む、(1)に記載のコンピュータ・システ
ム。 (10)各前記プリフェッチ待ち行列レジスタが、CP
U要求のアドレスを格納する第1のレジスタ・フィール
ド、ならびに前記第1のCPU制御信号および前記第2
のCPU制御信号に基づいて要求タイプを格納する第2
のフィールドを含む、(9)に記載のコンピュータ・シ
ステム。 (11)前記キャッシュ・コントローラが、前記要求タ
イプに応答して前記主メモリからのプリフェッチが昇順
であるか降順であるかを判断する方向論理回路を含む、
(10)に記載のコンピュータ・システム。 (12)前記要求タイプが前記主メモリから情報を取り
出すためのデータ要求または命令要求を示しているとき
は、前記キャッシュ・コントローラが前記主メモリから
昇順で情報をプリフェッチし、前記要求タイプが前記主
メモリに情報を格納するためのデータ要求を示している
ときは、前記キャッシュ・コントローラが主メモリから
情報を降順でプリフェッチする、(11)に記載のコン
ピュータ・システム。
【図1】本発明に従ってキャッシュ・コントローラを内
蔵しているコンピュータ・システムのブロック図であ
る。
蔵しているコンピュータ・システムのブロック図であ
る。
【図2】本発明に従ったキャッシュ・コントローラのブ
ロック図である。
ロック図である。
【図3】図2のキャッシュ・コントローラに内蔵されて
いるプリフェッチ制御レジスタ(PCR)を示す図であ
る。
いるプリフェッチ制御レジスタ(PCR)を示す図であ
る。
【図4】図2のキャッシュ・コントローラに内蔵されて
いるプリフェッチ要求待ち行列レジスタを示す図であ
る。
いるプリフェッチ要求待ち行列レジスタを示す図であ
る。
【図5】図2のキャッシュ・コントローラに内蔵されて
いるプリフェッチ・ワーク・レジスタ(PWR)を示す
図である。
いるプリフェッチ・ワーク・レジスタ(PWR)を示す
図である。
【図6】本発明を実現するために実行する手順の操作の
フロー・チャートである。
フロー・チャートである。
【図7】本発明に従ったプリフェッチ論理回路によって
実行される手順の典型的な操作のフロー・チャートであ
る。
実行される手順の典型的な操作のフロー・チャートであ
る。
100 コンピュータ・システム 108 CPUバス 110 ホスト処理系 120 ローカル処理系 209 プリフェッチ要求待ち行列レジスタ・セット 211 キャッシュ・インタフェース・バス 410 プリフェッチ要求待ち行列エレメント
───────────────────────────────────────────────────── フロントページの続き (72)発明者 エドワード・ロバート・バンダースライス アメリカ合衆国33486、フロリダ州ボカラ トン、サウスウェスト・サーティーンス・ ストリート 1339
Claims (12)
- 【請求項1】コンピュータ・システムであって、(a)
主メモリと、(b)情報の要求が命令の要求であるかデ
ータの要求であるかを示す第1のCPU制御信号を生成
し、要求がメモリからの情報の取り出しであるかメモリ
への情報の格納であるかを示す第2のCPU制御信号を
生成する、CPUと、(c)キャッシュ・メモリを有す
るキャッシュ・メモリ・システムと、(d)前記第1の
CPU信号と前記第2のCPU信号に応答して、前記主
メモリから前記キャッシュ・メモリにプリフェッチされ
るデータ量を判断するプリフェッチ論理回路を有し、前
記キャッシュ・メモリに結合されるキャッシュ・コント
ローラと、を有するコンピュータ・システム。 - 【請求項2】前記キャッシュ・メモリ・システムが階層
化されたキャッシュ・システムを含み、前記キャッシュ
・メモリが、第1の高位のキャッシュ・メモリおよび第
2の低位のキャッシュ・メモリを含む、請求項1に記載
のコンピュータ・システム。 - 【請求項3】前記キャッシュ・コントローラが、プリフ
ェッチされるプログラム可能命令バイト数を表す値を格
納するプログラム可能プリフェッチ制御レジスタを含
む、請求項1に記載のコンピュータ・システム。 - 【請求項4】前記キャッシュ・コントローラが、前記プ
ログラム可能プリフェッチ制御レジスタに格納されてい
る前記命令バイト数をプリフェッチするための命令要求
を示す、前記第1のCPU制御信号に応答する、請求項
3に記載のコンピュータ・システム。 - 【請求項5】前記第1のCPU制御信号がデータ要求を
示し、前記第2のCPU制御信号が、前記データ要求が
前記主メモリからの情報取り出しであることを示してい
るときに、プリフェッチされるプログラム可能データ・
バイト数を表す値を格納するプログラム可能プリフェッ
チ制御レジスタを前記キャッシュ・コントローラが含
む、請求項1に記載のコンピュータ・システム。 - 【請求項6】前記キャッシュ・コントローラが、データ
要求を示す前記第1のCPU制御信号、および前記主メ
モリから情報を取り出すためのデータ要求を示す前記第
2のCPU制御信号に応答し、前記プログラム可能プリ
フェッチ制御レジスタに格納されている前記データ・バ
イト数をプリフェッチする、請求項5に記載のコンピュ
ータ・システム。 - 【請求項7】前記第1のCPU制御信号がデータ要求を
示し、前記第2のCPU制御信号が、前記データ要求が
前記主メモリへの情報格納であることを示しているとき
に、プリフェッチされるプログラム可能データ・バイト
数を表す値を格納するプログラム可能プリフェッチ制御
レジスタを前記キャッシュ・コントローラが含む、請求
項1に記載のコンピュータ・システム。 - 【請求項8】前記キャッシュ・コントローラが、データ
要求を示す前記第1のCPU制御信号、および前記主メ
モリに情報を格納するためのデータ要求を示す前記第2
のCPU制御信号に応答し、前記プログラム可能プリフ
ェッチ制御レジスタに格納されている前記データ・バイ
ト数をプリフェッチする、請求項7に記載のコンピュー
タ・システム。 - 【請求項9】前記キャッシュ・コントローラが、プリフ
ェッチを待つ多数のCPU要求を格納する多数のプリフ
ェッチ待ち行列レジスタを持つプリフェッチ待ち行列レ
ジスタ・セットを含む、請求項1に記載のコンピュータ
・システム。 - 【請求項10】各前記プリフェッチ待ち行列レジスタ
が、CPU要求のアドレスを格納する第1のレジスタ・
フィールド、ならびに前記第1のCPU制御信号および
前記第2のCPU制御信号に基づいて要求タイプを格納
する第2のフィールドを含む、請求項9に記載のコンピ
ュータ・システム。 - 【請求項11】前記キャッシュ・コントローラが、前記
要求タイプに応答して前記主メモリからのプリフェッチ
が昇順であるか降順であるかを判断する方向論理回路を
含む、請求項10に記載のコンピュータ・システム。 - 【請求項12】前記要求タイプが前記主メモリから情報
を取り出すためのデータ要求または命令要求を示してい
るときは、前記キャッシュ・コントローラが前記主メモ
リから昇順で情報をプリフェッチし、前記要求タイプが
前記主メモリに情報を格納するためのデータ要求を示し
ているときは、前記キャッシュ・コントローラが主メモ
リから情報を降順でプリフェッチする、請求項11に記
載のコンピュータ・システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/636,112 US5802569A (en) | 1996-04-22 | 1996-04-22 | Computer system having cache prefetching amount based on CPU request types |
US08/636112 | 1996-04-22 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH1055307A true JPH1055307A (ja) | 1998-02-24 |
Family
ID=24550492
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP9095754A Pending JPH1055307A (ja) | 1996-04-22 | 1997-04-14 | コンピュータ・システム |
Country Status (6)
Country | Link |
---|---|
US (1) | US5802569A (ja) |
EP (1) | EP0803817B1 (ja) |
JP (1) | JPH1055307A (ja) |
AT (1) | ATE211837T1 (ja) |
DE (1) | DE69709483T2 (ja) |
ES (1) | ES2169319T3 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005524171A (ja) * | 2002-05-01 | 2005-08-11 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | メモリ領域ベースのプリフェッチング |
JP2007500402A (ja) * | 2003-05-07 | 2007-01-11 | フリースケール セミコンダクター インコーポレイテッド | 周辺装置アクセス保護付きデータ処理システム |
JP2007500897A (ja) * | 2003-07-31 | 2007-01-18 | フリースケール セミコンダクター インコーポレイテッド | データ処理システムにおけるプリフェッチ制御 |
JP2008059057A (ja) * | 2006-08-29 | 2008-03-13 | Hitachi Ltd | 計算機システム及びプロセッサの制御方法 |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6421715B1 (en) * | 1997-06-11 | 2002-07-16 | Oracle Corporation | System and method for generating and transmitting a command in response to a request for additional data and data described in the request |
US6085263A (en) * | 1997-10-24 | 2000-07-04 | Compaq Computer Corp. | Method and apparatus for employing commit-signals and prefetching to maintain inter-reference ordering in a high-performance I/O processor |
JP3289661B2 (ja) * | 1997-11-07 | 2002-06-10 | 日本電気株式会社 | キャッシュメモリシステム |
US7089331B1 (en) * | 1998-05-29 | 2006-08-08 | Oracle International Corporation | Method and mechanism for reducing client-side memory footprint of transmitted data |
US6728839B1 (en) * | 1998-10-28 | 2004-04-27 | Cisco Technology, Inc. | Attribute based memory pre-fetching technique |
US8225002B2 (en) * | 1999-01-22 | 2012-07-17 | Network Disk, Inc. | Data storage and data sharing in a network of heterogeneous computers |
US7089367B1 (en) * | 1999-08-11 | 2006-08-08 | Intel Corporation | Reducing memory access latencies from a bus using pre-fetching and caching |
US6470427B1 (en) * | 1999-11-09 | 2002-10-22 | International Business Machines Corporation | Programmable agent and method for managing prefetch queues |
TW449695B (en) * | 1999-11-26 | 2001-08-11 | Via Tech Inc | PCI data reading system for using reading requirement pipe and its method |
US7389284B1 (en) | 2000-02-29 | 2008-06-17 | Oracle International Corporation | Method and mechanism for efficient processing of remote-mapped queries |
US6701387B1 (en) | 2000-08-31 | 2004-03-02 | Hewlett-Packard Development Company, L.P. | Adaptive data fetch prediction algorithm |
US6795878B2 (en) * | 2000-12-11 | 2004-09-21 | International Business Machines Corporation | Verifying cumulative ordering of memory instructions |
US7103590B1 (en) | 2001-08-24 | 2006-09-05 | Oracle International Corporation | Method and system for pipelined database table functions |
US7610351B1 (en) | 2002-05-10 | 2009-10-27 | Oracle International Corporation | Method and mechanism for pipelined prefetching |
US6973457B1 (en) | 2002-05-10 | 2005-12-06 | Oracle International Corporation | Method and system for scrollable cursors |
US7167954B2 (en) * | 2002-09-09 | 2007-01-23 | Broadcom Corporation | System and method for caching |
US7370153B1 (en) * | 2004-08-06 | 2008-05-06 | Nvidia Corporation | System and method of pre-fetching using an extended data structure including required data and a pre-fetch flag |
US7526604B1 (en) | 2004-08-09 | 2009-04-28 | Nvidia Corporation | Command queueing speculative write prefetch |
KR20060116916A (ko) * | 2005-05-11 | 2006-11-16 | 삼성전자주식회사 | 텍스쳐 캐쉬 및 이를 구비한 3차원 그래픽 시스템, 그리고그것의 제어 방법 |
KR100648293B1 (ko) * | 2005-08-09 | 2006-11-23 | 삼성전자주식회사 | 그래픽 시스템 및 그것의 그래픽 처리 방법 |
US7502913B2 (en) | 2006-06-16 | 2009-03-10 | Microsoft Corporation | Switch prefetch in a multicore computer chip |
US20100010965A1 (en) * | 2008-07-08 | 2010-01-14 | International Business Machines Corporation | Query Management Systems |
US9361955B2 (en) | 2010-01-28 | 2016-06-07 | Hewlett Packard Enterprise Development Lp | Memory access methods and apparatus |
US20140173170A1 (en) * | 2012-12-14 | 2014-06-19 | Hewlett-Packard Development Company, L.P. | Multiple subarray memory access |
US11061853B2 (en) | 2015-12-08 | 2021-07-13 | Via Alliance Semiconductor Co., Ltd. | Processor with memory controller including dynamically programmable functional unit |
US10268586B2 (en) | 2015-12-08 | 2019-04-23 | Via Alliance Semiconductor Co., Ltd. | Processor with programmable prefetcher operable to generate at least one prefetch address based on load requests |
US10642617B2 (en) | 2015-12-08 | 2020-05-05 | Via Alliance Semiconductor Co., Ltd. | Processor with an expandable instruction set architecture for dynamically configuring execution resources |
US10452395B2 (en) | 2016-07-20 | 2019-10-22 | International Business Machines Corporation | Instruction to query cache residency |
US10521350B2 (en) | 2016-07-20 | 2019-12-31 | International Business Machines Corporation | Determining the effectiveness of prefetch instructions |
US10621095B2 (en) | 2016-07-20 | 2020-04-14 | International Business Machines Corporation | Processing data based on cache residency |
US10169239B2 (en) * | 2016-07-20 | 2019-01-01 | International Business Machines Corporation | Managing a prefetch queue based on priority indications of prefetch requests |
US10452551B2 (en) * | 2016-12-12 | 2019-10-22 | Intel Corporation | Programmable memory prefetcher for prefetching multiple cache lines based on data in a prefetch engine control register |
US11157285B2 (en) * | 2020-02-06 | 2021-10-26 | International Business Machines Corporation | Dynamic modification of instructions that do not modify the architectural state of a processor |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3898624A (en) * | 1973-06-14 | 1975-08-05 | Amdahl Corp | Data processing system with variable prefetch and replacement algorithms |
US4489378A (en) * | 1981-06-05 | 1984-12-18 | International Business Machines Corporation | Automatic adjustment of the quantity of prefetch data in a disk cache operation |
US4928239A (en) * | 1986-06-27 | 1990-05-22 | Hewlett-Packard Company | Cache memory with variable fetch and replacement schemes |
US4882642A (en) * | 1987-07-02 | 1989-11-21 | International Business Machines Corporation | Sequentially processing data in a cached data storage system |
US4994962A (en) * | 1988-10-28 | 1991-02-19 | Apollo Computer Inc. | Variable length cache fill |
US5146578A (en) * | 1989-05-01 | 1992-09-08 | Zenith Data Systems Corporation | Method of varying the amount of data prefetched to a cache memory in dependence on the history of data requests |
US5133060A (en) * | 1989-06-05 | 1992-07-21 | Compuadd Corporation | Disk controller includes cache memory and a local processor which limits data transfers from memory to cache in accordance with a maximum look ahead parameter |
EP0463874A2 (en) * | 1990-06-29 | 1992-01-02 | Digital Equipment Corporation | Cache arrangement for file system in digital data processing system |
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 |
US5361391A (en) * | 1992-06-22 | 1994-11-01 | Sun Microsystems, Inc. | Intelligent cache memory and prefetch method based on CPU data fetching characteristics |
US5588128A (en) * | 1993-04-02 | 1996-12-24 | Vlsi Technology, Inc. | Dynamic direction look ahead read buffer |
US5550998A (en) * | 1993-06-14 | 1996-08-27 | Storage Technology Corporation | Pre-seeking process for enhancing reading and writing performance in a mass storage system having multiple individual disk drives |
-
1996
- 1996-04-22 US US08/636,112 patent/US5802569A/en not_active Expired - Fee Related
-
1997
- 1997-03-24 DE DE69709483T patent/DE69709483T2/de not_active Expired - Lifetime
- 1997-03-24 ES ES97301963T patent/ES2169319T3/es not_active Expired - Lifetime
- 1997-03-24 AT AT97301963T patent/ATE211837T1/de not_active IP Right Cessation
- 1997-03-24 EP EP97301963A patent/EP0803817B1/en not_active Expired - Lifetime
- 1997-04-14 JP JP9095754A patent/JPH1055307A/ja active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005524171A (ja) * | 2002-05-01 | 2005-08-11 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | メモリ領域ベースのプリフェッチング |
JP2007500402A (ja) * | 2003-05-07 | 2007-01-11 | フリースケール セミコンダクター インコーポレイテッド | 周辺装置アクセス保護付きデータ処理システム |
JP2007500897A (ja) * | 2003-07-31 | 2007-01-18 | フリースケール セミコンダクター インコーポレイテッド | データ処理システムにおけるプリフェッチ制御 |
JP4875981B2 (ja) * | 2003-07-31 | 2012-02-15 | フリースケール セミコンダクター インコーポレイテッド | データ処理システムにおけるプリフェッチ制御 |
JP2008059057A (ja) * | 2006-08-29 | 2008-03-13 | Hitachi Ltd | 計算機システム及びプロセッサの制御方法 |
Also Published As
Publication number | Publication date |
---|---|
US5802569A (en) | 1998-09-01 |
EP0803817A1 (en) | 1997-10-29 |
ATE211837T1 (de) | 2002-01-15 |
DE69709483D1 (de) | 2002-02-14 |
ES2169319T3 (es) | 2002-07-01 |
DE69709483T2 (de) | 2002-09-19 |
EP0803817B1 (en) | 2002-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH1055307A (ja) | コンピュータ・システム | |
US7966450B2 (en) | Non-volatile hard disk drive cache system and method | |
US5499355A (en) | Prefetching into a cache to minimize main memory access time and cache size in a computer system | |
US20090132750A1 (en) | Cache memory system | |
US6131155A (en) | Programmer-visible uncached load/store unit having burst capability | |
US5958040A (en) | Adaptive stream buffers | |
US5265236A (en) | Method and apparatus for increasing the speed of memory access in a virtual memory system having fast page mode | |
JPH06243039A (ja) | キャッシュメモリシステムおよびマイクロプロセッサ内の命令を操作するための方法 | |
JP3609552B2 (ja) | キャッシュ不可能な反復オペレーション命令を有する中央処理装置及びコンピュータ・システム | |
US5729713A (en) | Data processing with first level cache bypassing after a data transfer becomes excessively long | |
US6438672B1 (en) | Memory aliasing method and apparatus | |
JPH08185355A (ja) | データメモリおよびその動作方法 | |
US5161219A (en) | Computer system with input/output cache | |
US6658537B2 (en) | DMA driven processor cache | |
US5287512A (en) | Computer memory system and method for cleaning data elements | |
JPH10307754A (ja) | システム・バスに対するキャッシュ操作の要求ベースの発行方法及び装置 | |
US5926841A (en) | Segment descriptor cache for a processor | |
JP2000242556A (ja) | 仮想インデックス仮想タグデータキャッシュ用に最適化されたハードウエアクリーニング機能 | |
WO1997034229A9 (en) | Segment descriptor cache for a processor | |
JPH06202951A (ja) | キャッシュ・メモリ・システム | |
KR960007833B1 (ko) | 고속 페이지 모드 선택을 위한 방법 및 장치 | |
JPH10333986A (ja) | プロセス・バスに対するキャッシュ操作の要求ベースの発行方法及び装置 | |
US5765190A (en) | Cache memory in a data processing system | |
US6192449B1 (en) | Apparatus and method for optimizing performance of a cache memory in a data processing system | |
US7055005B2 (en) | Methods and apparatus used to retrieve data from memory into a RAM controller before such data is requested |