JPH0452741A - キャッシュメモリ装置 - Google Patents
キャッシュメモリ装置Info
- Publication number
- JPH0452741A JPH0452741A JP2155776A JP15577690A JPH0452741A JP H0452741 A JPH0452741 A JP H0452741A JP 2155776 A JP2155776 A JP 2155776A JP 15577690 A JP15577690 A JP 15577690A JP H0452741 A JPH0452741 A JP H0452741A
- Authority
- JP
- Japan
- Prior art keywords
- cache memory
- data
- address
- memory
- accessed
- 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
- 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
-
- 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/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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
[発明の目的コ
(産業上の利用分野)
本発明はプロセッサと主記憶装置との間にキャッシュメ
モリを設けてメモリアクセスの高速化を図ったキャッシ
ュメモリ装置に関する。
モリを設けてメモリアクセスの高速化を図ったキャッシ
ュメモリ装置に関する。
(従来の技術)
プロセッサと主記憶装置との間に設けられて上記主記憶
装置に記憶されているデータの一部のコピーを保持する
高速・小容量のキャッシュメモリは、上記プロセッサの
サイクルタイムが主記憶装置のアクセスタイムに比較し
て高速である場合、メモリアクセスに対するバッファと
して機能して前記プロセッサの見掛上のアクセスタイム
の短縮化を図る上で非常に大きな役割を果たす。そして
最近では、この種のキャッシュメモリをマイクロプロセ
ッサと共に用いることが常識化しつつあり、VLS I
化技術の発展に伴って上述したキャッシュメモリをプロ
セッサと共にワンチップ化することも種々試みられてい
る。
装置に記憶されているデータの一部のコピーを保持する
高速・小容量のキャッシュメモリは、上記プロセッサの
サイクルタイムが主記憶装置のアクセスタイムに比較し
て高速である場合、メモリアクセスに対するバッファと
して機能して前記プロセッサの見掛上のアクセスタイム
の短縮化を図る上で非常に大きな役割を果たす。そして
最近では、この種のキャッシュメモリをマイクロプロセ
ッサと共に用いることが常識化しつつあり、VLS I
化技術の発展に伴って上述したキャッシュメモリをプロ
セッサと共にワンチップ化することも種々試みられてい
る。
さてキャッシュメモリは、基本的にはプロセッサからの
メモリアクセスを受け、アクセス要求されたデータがキ
ャッシュデータとして保持されているかを調べた上で、
該当データが保持されていないとき、その時点で主記憶
装置からキャッシュメモリへのデータ転送を行っている
。つまり従来のキャッシュメモリ装置では、オンデマイ
ンドの制御により主記憶装置からキャッシュメモリへの
データ転送を行っている。然し乍ら、このような制御方
式は、プロセッサからのメモリアクセスのパターンが局
所的である場合には殆ど問題とならないが、メモリアク
セスが頻繁にあるような場合にはキャッシュメモリの存
在意義が失われると云う不具合がある。
メモリアクセスを受け、アクセス要求されたデータがキ
ャッシュデータとして保持されているかを調べた上で、
該当データが保持されていないとき、その時点で主記憶
装置からキャッシュメモリへのデータ転送を行っている
。つまり従来のキャッシュメモリ装置では、オンデマイ
ンドの制御により主記憶装置からキャッシュメモリへの
データ転送を行っている。然し乍ら、このような制御方
式は、プロセッサからのメモリアクセスのパターンが局
所的である場合には殆ど問題とならないが、メモリアク
セスが頻繁にあるような場合にはキャッシュメモリの存
在意義が失われると云う不具合がある。
即ち、プロセッサにおけるサイクルタイムの短縮化とア
ーキテクチア技術の進歩に伴うプロセッサの処理能力の
向上により、今までスーパーコンピュータで処理されて
いた問題、例えば極めて大きな行列演算処理をマイクロ
プロセッサを用いて処理することが種々試みられるよう
になってきた。
ーキテクチア技術の進歩に伴うプロセッサの処理能力の
向上により、今までスーパーコンピュータで処理されて
いた問題、例えば極めて大きな行列演算処理をマイクロ
プロセッサを用いて処理することが種々試みられるよう
になってきた。
しかしてこの種のキャッシュメモリ容量よりも大きな配
列データをシーケンシャルにアクセスしながら実行され
る上記行列演算処理を取り扱う場合、そのアクセスのた
びにキャッシュミスが発生することが多々生じる。この
場合、キャッシュミスが生じる都度、主記憶装置からキ
ャッシュメモリにデータ転送する必要があるので、その
間、プロセッサは処理の実行を待たされることになるの
で、結局、キャッシュメモリの有効性が低下し、プロセ
ッサでの処理が大幅に遅れる、つまりその処理効率が低
下すると云う不具合が生じる。
列データをシーケンシャルにアクセスしながら実行され
る上記行列演算処理を取り扱う場合、そのアクセスのた
びにキャッシュミスが発生することが多々生じる。この
場合、キャッシュミスが生じる都度、主記憶装置からキ
ャッシュメモリにデータ転送する必要があるので、その
間、プロセッサは処理の実行を待たされることになるの
で、結局、キャッシュメモリの有効性が低下し、プロセ
ッサでの処理が大幅に遅れる、つまりその処理効率が低
下すると云う不具合が生じる。
このような不具合を解消するべく、従来、キャッシュミ
スが発生したとき、アクセスデータを含むデータブロッ
クのみならず、その次のデータブロックのデータまでを
一括して主記憶装置からキャッシュメモリに転送し、次
のメモリアクセスに対処させようとすることが考えられ
ている。然し乍ら、このような手法を採用すると不必要
なデータまで大量にキャッシュメモリに転送することに
なる上、キャッシュメモリの記憶容量が限られている為
、実際に必要とされるデータがキャッシュメモリから不
本意に追い出されてしまうと云う不具合が生じ易かった
。
スが発生したとき、アクセスデータを含むデータブロッ
クのみならず、その次のデータブロックのデータまでを
一括して主記憶装置からキャッシュメモリに転送し、次
のメモリアクセスに対処させようとすることが考えられ
ている。然し乍ら、このような手法を採用すると不必要
なデータまで大量にキャッシュメモリに転送することに
なる上、キャッシュメモリの記憶容量が限られている為
、実際に必要とされるデータがキャッシュメモリから不
本意に追い出されてしまうと云う不具合が生じ易かった
。
(発明が解決しようとする課題)
このように従来のキャッシュメモリ装置にあっては、プ
ロセッサからのメモリアクセスに対してキャッシュミス
が発生した時点でオンデマインドにキャッシュデータの
転送を行っているので、行列演算を実行する場合のよう
に成る関連のある一連のデータを頻繁にメモリアクセス
するような場合にキャッシュミスが生じ易く、キャッシ
ュメモリを設けた意味合いが失われると云う問題があっ
た。またアクセスデータを含むデータブロックと共に、
次のブロックのデータまでを一括してキャッシュ転送す
るような場合、不必要なデータをキャッシュメモリに転
送してしまう上、必要なデータを不本意にキャッシュメ
モリから追い出してしまうと云う不具合が生じ易かった
。
ロセッサからのメモリアクセスに対してキャッシュミス
が発生した時点でオンデマインドにキャッシュデータの
転送を行っているので、行列演算を実行する場合のよう
に成る関連のある一連のデータを頻繁にメモリアクセス
するような場合にキャッシュミスが生じ易く、キャッシ
ュメモリを設けた意味合いが失われると云う問題があっ
た。またアクセスデータを含むデータブロックと共に、
次のブロックのデータまでを一括してキャッシュ転送す
るような場合、不必要なデータをキャッシュメモリに転
送してしまう上、必要なデータを不本意にキャッシュメ
モリから追い出してしまうと云う不具合が生じ易かった
。
本発明はこのような事情を考慮してなされたもので、そ
の目的とするところは、プロセッサが将来にアクセスす
ると予測されるデータを予め効率的にキャッシュメモリ
に転送しておき、これによって頻繁に生じるメモリアク
セスに対するキャッシュミスの発生を抑えることで、プ
ロセッサの処理効率を十分高めることを可能とするキャ
ッシュメモリ装置を提供することにある。
の目的とするところは、プロセッサが将来にアクセスす
ると予測されるデータを予め効率的にキャッシュメモリ
に転送しておき、これによって頻繁に生じるメモリアク
セスに対するキャッシュミスの発生を抑えることで、プ
ロセッサの処理効率を十分高めることを可能とするキャ
ッシュメモリ装置を提供することにある。
[発明の構成]
(課題を解決するための手段)
本発明に係るキャッシュメモリ装置は、プロセッサにキ
ャッシュメモリをアクセスする命令に伴って、キャッシ
ュメモリの先行ロードを指示する命令と指示しない命令
とを準備し、上記先行ロードを指示する命令と共にキャ
ッシュメモリをアクセスする際、先行ロードが指示され
ていることを前記プロセッサからキャッシュメモリに通
知するようにし、 前記キャッシュメモリでは、先行ロードを指示する命令
と共にアクセスされたとき、例えば上記先行ロードを指
示する命令がアクセスするアドレスに基づいて前記プロ
セッサが将来アクセスすると予測されるアドレスを求め
、この予測されたアドレスのデータを前記主記憶装置か
らキャッシュメモリに先行ロードするようにしたことを
特徴とするものである。
ャッシュメモリをアクセスする命令に伴って、キャッシ
ュメモリの先行ロードを指示する命令と指示しない命令
とを準備し、上記先行ロードを指示する命令と共にキャ
ッシュメモリをアクセスする際、先行ロードが指示され
ていることを前記プロセッサからキャッシュメモリに通
知するようにし、 前記キャッシュメモリでは、先行ロードを指示する命令
と共にアクセスされたとき、例えば上記先行ロードを指
示する命令がアクセスするアドレスに基づいて前記プロ
セッサが将来アクセスすると予測されるアドレスを求め
、この予測されたアドレスのデータを前記主記憶装置か
らキャッシュメモリに先行ロードするようにしたことを
特徴とするものである。
またキャッシュメモリに、先行ロードを行うか否かを指
示するモード情報を保持する手段を設け、先行ロードを
指示する命令と共にアクセスされたとき、上記保持され
たモード情報に従って主記憶装置からキャッシュメモリ
への先行ロードを行うか否かを決定するようにしたこと
を特徴とするものである。
示するモード情報を保持する手段を設け、先行ロードを
指示する命令と共にアクセスされたとき、上記保持され
たモード情報に従って主記憶装置からキャッシュメモリ
への先行ロードを行うか否かを決定するようにしたこと
を特徴とするものである。
更にはキャッシュメモリに、先行ロードの対象となるア
ドレス範囲の情報を保持する手段を設け、予測したアド
レスが上記保持されたアドレス範囲内にあるときにだけ
、主記憶装置からキャッシュメモリへの先行ロードを行
うようにしたことを特徴とするものである。
ドレス範囲の情報を保持する手段を設け、予測したアド
レスが上記保持されたアドレス範囲内にあるときにだけ
、主記憶装置からキャッシュメモリへの先行ロードを行
うようにしたことを特徴とするものである。
(作 用)
本発明によれば、プロセッサから先行ロードを指示する
命令が与えられたとき、キャッシュメモリではその命令
から予測されるアドレスのデータを主記憶装置から先行
ロードするので、例えば大きな配列データをシーケンシ
ャルにアクセスするような場合、プロセッサが次にアク
セスすると予想されるアドレスのデータを次々とキャッ
シュメモリに先行ロードしておくことが可能となる。
命令が与えられたとき、キャッシュメモリではその命令
から予測されるアドレスのデータを主記憶装置から先行
ロードするので、例えば大きな配列データをシーケンシ
ャルにアクセスするような場合、プロセッサが次にアク
セスすると予想されるアドレスのデータを次々とキャッ
シュメモリに先行ロードしておくことが可能となる。
従ってプロセッサが実際にそのアドレスのデータが必要
となった時点には常にそのデータをキャッシュメモリに
保持しておくことが可能となる。しかも将来的に必要で
あると予測されるデータだけを効果的にキャッシュメモ
リに予め転送しておくことが可能となる。この結果、キ
ャッシュミスの発生を大幅に低減すること、つまりキャ
ッシュメモリに対するヒツト率を高めることが可能とな
り、キャッシュメモリの機能、およびプロセッサの処理
能力を十分に発揮させることが可能となる。
となった時点には常にそのデータをキャッシュメモリに
保持しておくことが可能となる。しかも将来的に必要で
あると予測されるデータだけを効果的にキャッシュメモ
リに予め転送しておくことが可能となる。この結果、キ
ャッシュミスの発生を大幅に低減すること、つまりキャ
ッシュメモリに対するヒツト率を高めることが可能とな
り、キャッシュメモリの機能、およびプロセッサの処理
能力を十分に発揮させることが可能となる。
(実施例)
以下、図面を参照して本発明の実施例に係るキャッシュ
メモリ装置について説明する。
メモリ装置について説明する。
第1図は実施例装置の概略構成図で、■は入力されたプ
ログラムを実行するプロセッサ、2は各種データを格納
した主記憶装置(メインメモリ)、8は上記プロセッサ
1と主記憶装置2との間に設けられたキャッシュメモリ
である。このキャッシュメモリ3は高速動作する小容量
のメモリ部3aとこのメモリ部3aに対するアクセス動
作等を制御するメモリ制御部3bとからなる。このメモ
リ部3aに前記主記憶装置2に記憶されている各種デー
タの一部が、例えばブロック単位でコピーされて格納さ
れる。
ログラムを実行するプロセッサ、2は各種データを格納
した主記憶装置(メインメモリ)、8は上記プロセッサ
1と主記憶装置2との間に設けられたキャッシュメモリ
である。このキャッシュメモリ3は高速動作する小容量
のメモリ部3aとこのメモリ部3aに対するアクセス動
作等を制御するメモリ制御部3bとからなる。このメモ
リ部3aに前記主記憶装置2に記憶されている各種デー
タの一部が、例えばブロック単位でコピーされて格納さ
れる。
この第1図に示す如く構成されるキャッシュメモリ装置
は、基本的にはプロセッサlがプログラムの実行過程に
おいてメモリアクセス(リード/ライト要求)したとき
、キャッシュメモリ3にて上記メモリアクセスを受けて
動作する。そしてキャッシュメモリ3ではそのメモリ制
御部3bの下で上記プロセッサIがアクセスしたアドレ
スのデータがメモリ部3aに格納されているか否かを調
べ、メモリ部8aに該当データが存在する場合(ヒツト
した場合)、前記プロセッサ1からのアクセス要求に応
えて該当アドレスのデータの読み出し、または該当アド
レスへのデータの書き込みを行う。
は、基本的にはプロセッサlがプログラムの実行過程に
おいてメモリアクセス(リード/ライト要求)したとき
、キャッシュメモリ3にて上記メモリアクセスを受けて
動作する。そしてキャッシュメモリ3ではそのメモリ制
御部3bの下で上記プロセッサIがアクセスしたアドレ
スのデータがメモリ部3aに格納されているか否かを調
べ、メモリ部8aに該当データが存在する場合(ヒツト
した場合)、前記プロセッサ1からのアクセス要求に応
えて該当アドレスのデータの読み出し、または該当アド
レスへのデータの書き込みを行う。
またメモリ部3aに該当データか存在しない場合(キャ
ッシュミスした場合)には、キャッシュメモリ3は主記
憶装置2をアクセスして該当アドレスのデータを、例え
ばそのデータを含むデータブロックを単位として主記憶
装置2からキャッシュメモリ3の前記メモリ部3aに転
送した後、前記プロセッサ1からのメモリアクセスに応
える。
ッシュミスした場合)には、キャッシュメモリ3は主記
憶装置2をアクセスして該当アドレスのデータを、例え
ばそのデータを含むデータブロックを単位として主記憶
装置2からキャッシュメモリ3の前記メモリ部3aに転
送した後、前記プロセッサ1からのメモリアクセスに応
える。
尚、この主記憶装置2からの新たなデータブロックの転
送時には、既にキャッシュメモリ3 (メモリ部3a)
に格納されているデータの一部が、例えば古いものから
順にデータブロック単位で追い出される。
送時には、既にキャッシュメモリ3 (メモリ部3a)
に格納されているデータの一部が、例えば古いものから
順にデータブロック単位で追い出される。
このように構成されたキャッシュメモリ装置にあっては
、プロセッサエからのメモリアクセスに対してキャツシ
ュヒツトした場合には、主記憶装置2を一々アクセスす
るよりも遥かに高速にメモリアクセスを実現し、高速に
データのリード/ライトを行うことが可能となる。また
逆にキャッシュミスした場合には、該当アドレスのデー
タを主記憶装置2から転送した後にメモリアクセスに応
える必要があるので、その間、プロセッサ1での処理実
行が待たされることになる。
、プロセッサエからのメモリアクセスに対してキャツシ
ュヒツトした場合には、主記憶装置2を一々アクセスす
るよりも遥かに高速にメモリアクセスを実現し、高速に
データのリード/ライトを行うことが可能となる。また
逆にキャッシュミスした場合には、該当アドレスのデー
タを主記憶装置2から転送した後にメモリアクセスに応
える必要があるので、その間、プロセッサ1での処理実
行が待たされることになる。
ここでこの実施例装置が特徴とするところは、プロセッ
サlがキャッシュメモリ3をアクセスする命令として、
通常のリード/ライト要求を行う命令に加えて、リード
/ライト要求と同時にキャッシュメモリ8へのデータの
先行ロード指示を行う命令とが準備され、この先行ロー
ドを指示する命令によりキャッシュメモリ3をアクセス
する際、プロセッサlは先行ロードが指示されているこ
とを前記キャッシュメモリ3に対して通知する機能を備
えている点にある。
サlがキャッシュメモリ3をアクセスする命令として、
通常のリード/ライト要求を行う命令に加えて、リード
/ライト要求と同時にキャッシュメモリ8へのデータの
先行ロード指示を行う命令とが準備され、この先行ロー
ドを指示する命令によりキャッシュメモリ3をアクセス
する際、プロセッサlは先行ロードが指示されているこ
とを前記キャッシュメモリ3に対して通知する機能を備
えている点にある。
即ち、プロセッサlにおける機械語コードを生成するコ
ンパイラは、例えばプログラム中で配列データをシーケ
ンシャルにアクセスする部分が見出されたとき、通常の
メモリアクセス命令に代えて、本来のメモリアクセスと
同時にキャッシュデータの先行ロードを指示する命令を
生成する機能を備えている。そしてこの先行ロードを指
示するメモリアクセス命令を用いてキャッシュメモリ3
をアクセスする際、プロセッサ1は先行ロード制御線P
Lをアクティブにし、その旨(先行ロードを指示する命
令であること)をキャッシュメモリ3に通知するものと
なっている。
ンパイラは、例えばプログラム中で配列データをシーケ
ンシャルにアクセスする部分が見出されたとき、通常の
メモリアクセス命令に代えて、本来のメモリアクセスと
同時にキャッシュデータの先行ロードを指示する命令を
生成する機能を備えている。そしてこの先行ロードを指
示するメモリアクセス命令を用いてキャッシュメモリ3
をアクセスする際、プロセッサ1は先行ロード制御線P
Lをアクティブにし、その旨(先行ロードを指示する命
令であること)をキャッシュメモリ3に通知するものと
なっている。
しかしてキャッシュメモリ3では、プロセッサlからの
メモリアクセスを受けたとき、メモリ制御部3bにて前
記先行ロード制御線PLがアクティブになっているか否
かを調べる。そして上述した先行ロードが指示されてい
ない常のリード/ライト命令である場合には、従来装置
と同様にキャッシュ動作し、キャッシュミスした場合に
は該当アドレスのデータを主記憶装置2からキャッシュ
メモリ3に転送して前記メモリアクセスに応える。
メモリアクセスを受けたとき、メモリ制御部3bにて前
記先行ロード制御線PLがアクティブになっているか否
かを調べる。そして上述した先行ロードが指示されてい
ない常のリード/ライト命令である場合には、従来装置
と同様にキャッシュ動作し、キャッシュミスした場合に
は該当アドレスのデータを主記憶装置2からキャッシュ
メモリ3に転送して前記メモリアクセスに応える。
これに対してプロセッサ1から与えられたアクセス要求
が前記先行ロードを指示するり一ド/ライト命令である
場合には、キャッシュメモリ3のメモリ制御部3bは、
先ずその本来の命令であるリード/ライト要求に従って
従来装置と同様にキャッシュ動作する。そしてこの本来
のメモリアクセスに対するキャッシュ動作を実行した後
、或いはこのメモリアクセス動作と並行して前記プロセ
ッサ1から与えられた命令に基づいて前記プロセッサ1
が将来アクセスすると予測されるアドレスのデータを前
記主記憶装置2から先行ロードする。
が前記先行ロードを指示するり一ド/ライト命令である
場合には、キャッシュメモリ3のメモリ制御部3bは、
先ずその本来の命令であるリード/ライト要求に従って
従来装置と同様にキャッシュ動作する。そしてこの本来
のメモリアクセスに対するキャッシュ動作を実行した後
、或いはこのメモリアクセス動作と並行して前記プロセ
ッサ1から与えられた命令に基づいて前記プロセッサ1
が将来アクセスすると予測されるアドレスのデータを前
記主記憶装置2から先行ロードする。
この主記憶装置2からのデータの先行ロードは、例えば
予測されたアドレスのデータを含むデータブロックのデ
ータを1単位として前記メモリ部3aに転送することに
よりなされる。
予測されたアドレスのデータを含むデータブロックのデ
ータを1単位として前記メモリ部3aに転送することに
よりなされる。
このデータの先行ロードについて更に詳しく説明すると
、例えばキャッシュメモリ3のメモリ制御部3bにはデ
ータブロックの先行ロードを制御する為の第2図に示す
ようなレジスタが設けられている。このレジスタは、先
行ロードの指示をインヒビットするビットフィールドI
NH、およびデータブロックの先行ロードを許可するア
ドレス範囲(先頭アドレスと最終アドレス)を特定する
アドレスフィールドとを持つ。尚、この第2図では1つ
のアドレス範囲を指定する先頭アドレスと最終アドレス
のフィールドだけか示されるか、アドレス範囲としては
2つ以上分散して指定するようにすることもできる。こ
の場合には、第1の先頭アドレスと第1の最終アドレス
、第2の先頭アドレスと第2の最終アドレス、・・・・
・・と云うように、個々のアドレス範囲をそれぞれ指定
し得るようなフィールド構成としておけば良い。
、例えばキャッシュメモリ3のメモリ制御部3bにはデ
ータブロックの先行ロードを制御する為の第2図に示す
ようなレジスタが設けられている。このレジスタは、先
行ロードの指示をインヒビットするビットフィールドI
NH、およびデータブロックの先行ロードを許可するア
ドレス範囲(先頭アドレスと最終アドレス)を特定する
アドレスフィールドとを持つ。尚、この第2図では1つ
のアドレス範囲を指定する先頭アドレスと最終アドレス
のフィールドだけか示されるか、アドレス範囲としては
2つ以上分散して指定するようにすることもできる。こ
の場合には、第1の先頭アドレスと第1の最終アドレス
、第2の先頭アドレスと第2の最終アドレス、・・・・
・・と云うように、個々のアドレス範囲をそれぞれ指定
し得るようなフィールド構成としておけば良い。
しかして最も単純な先行ロードすべきアドレスの予測は
、例えばメモリアクセス命令によってアクセスされたア
ドレスのデータか含まれるデータブロックの次のデータ
ブロックを指定するアドレスを予測値とする方式である
。
、例えばメモリアクセス命令によってアクセスされたア
ドレスのデータか含まれるデータブロックの次のデータ
ブロックを指定するアドレスを予測値とする方式である
。
ここで従来考えられていたデータの先行ロードと本質的
に異なる点は、従来装置にあっては、上述したような先
行ロードを指示する命令と先行ロードを指示しない命令
との2種類がなく、−船釣なメモリアクセス命令(本発
明における先行ロードを指示しない命令)が与えられた
ときに無条件にそのアクセスされたアドレスのデータを
含むデータブロックの次のデータブロックを先行ロード
しているのに対し、本発明では上記先行ロードを指示す
る命令が与えられたときにだけ先行ロードの制御を行う
点にある。つまりプロセッサ1からキャッシュメモリ3
に対して先行ロードを指示するメモリアクセス命令を与
えるか、或いは先行ロードを指示しないメモリアクセス
命令を与えるかによってキャッシュメモリ3における先
行ロードを制御するようにしている点で従来考えられて
いた先行ロードの方式とは本質的に異なっている。
に異なる点は、従来装置にあっては、上述したような先
行ロードを指示する命令と先行ロードを指示しない命令
との2種類がなく、−船釣なメモリアクセス命令(本発
明における先行ロードを指示しない命令)が与えられた
ときに無条件にそのアクセスされたアドレスのデータを
含むデータブロックの次のデータブロックを先行ロード
しているのに対し、本発明では上記先行ロードを指示す
る命令が与えられたときにだけ先行ロードの制御を行う
点にある。つまりプロセッサ1からキャッシュメモリ3
に対して先行ロードを指示するメモリアクセス命令を与
えるか、或いは先行ロードを指示しないメモリアクセス
命令を与えるかによってキャッシュメモリ3における先
行ロードを制御するようにしている点で従来考えられて
いた先行ロードの方式とは本質的に異なっている。
しかもこのような先行ロードを指示する命令がプロセッ
サlから与えられたとき、キャッシュメモリ3では、前
述したレジスタに保持されている先行ロード制御の為の
情報を用いて、指示された先行ロードを実行するか否か
をキャツシュメモリ3自体で制御している点を従来考え
られていた先行ロードの方式と全く異にしている。
サlから与えられたとき、キャッシュメモリ3では、前
述したレジスタに保持されている先行ロード制御の為の
情報を用いて、指示された先行ロードを実行するか否か
をキャツシュメモリ3自体で制御している点を従来考え
られていた先行ロードの方式と全く異にしている。
即ち、この実施例装置では、先行ロードを指示する命令
が与えられたとき、先ず前記レジスタのビットフィール
ドINHのインヒビット情報に従い、上記先行ロードを
指示する命令をインヒビットする。そしてその命令がイ
ンヒビットされないとき、次に前記先行ロードを許可す
るアドレス範囲の情報に従い、先行ロードしようとする
データ(データブロック)のアドレスが許可範囲内にあ
るか否かを調べる。このようにしてアクセス要求のあっ
た命令から予測される先行ロードの対象となるアドレス
がレジスタに保持された先行ロード許可アドレス範囲内
にあることが確認されたとき、メモリ制御部3bは主記
憶装置2をアクセスし、その予測されたアドレスのデー
タを含むデータブロックをキャッシュメモリ3に転送し
、前記メモリ部3aに格納する。このような予測アドレ
スに基づく主記憶装置2からのデータブロックのキャッ
シュメモリ3への転送により、プロセッサ1が将来アク
セスすると予測されるアドレスのデータか先行ロードさ
れることになる。
が与えられたとき、先ず前記レジスタのビットフィール
ドINHのインヒビット情報に従い、上記先行ロードを
指示する命令をインヒビットする。そしてその命令がイ
ンヒビットされないとき、次に前記先行ロードを許可す
るアドレス範囲の情報に従い、先行ロードしようとする
データ(データブロック)のアドレスが許可範囲内にあ
るか否かを調べる。このようにしてアクセス要求のあっ
た命令から予測される先行ロードの対象となるアドレス
がレジスタに保持された先行ロード許可アドレス範囲内
にあることが確認されたとき、メモリ制御部3bは主記
憶装置2をアクセスし、その予測されたアドレスのデー
タを含むデータブロックをキャッシュメモリ3に転送し
、前記メモリ部3aに格納する。このような予測アドレ
スに基づく主記憶装置2からのデータブロックのキャッ
シュメモリ3への転送により、プロセッサ1が将来アク
セスすると予測されるアドレスのデータか先行ロードさ
れることになる。
尚、このようなキャッシュメモリ3への主記憶装置2か
らのデータの先行ロードは、基本的にはプロセッサ1に
おける命令の実行とは独立に、換言すればプロセッサ1
ての命令実行と並行して行われる。然し乍ら、キャッシ
ュメモリ3における先行ロードの実行中にプロセッサ1
から次のメモリアクセス命令が与えられ、そのメモリア
クセスがキャッシュミスしたような場合には、例えば上
記先行ロードの処理手続きを中断し、キャッシュミスに
伴う主記憶装置2からのキャッシュメモリ3へのデータ
転送を優先的に処理するようにすることが望ましい。そ
してキャッシュメモリ3としては、多少キャッシュメモ
リ3としての性能が低下するが、前記プロセッサlがキ
ャッシュメモリ3に対してアクセスを行っていない期間
を利用して上述した先行ロードを実行するようにすれば
良い。
らのデータの先行ロードは、基本的にはプロセッサ1に
おける命令の実行とは独立に、換言すればプロセッサ1
ての命令実行と並行して行われる。然し乍ら、キャッシ
ュメモリ3における先行ロードの実行中にプロセッサ1
から次のメモリアクセス命令が与えられ、そのメモリア
クセスがキャッシュミスしたような場合には、例えば上
記先行ロードの処理手続きを中断し、キャッシュミスに
伴う主記憶装置2からのキャッシュメモリ3へのデータ
転送を優先的に処理するようにすることが望ましい。そ
してキャッシュメモリ3としては、多少キャッシュメモ
リ3としての性能が低下するが、前記プロセッサlがキ
ャッシュメモリ3に対してアクセスを行っていない期間
を利用して上述した先行ロードを実行するようにすれば
良い。
しかしキャッシュメモリ3にアクセスポートを2つ設け
ておき、プロセッサ1がキャッシュメモリ3をアクセス
中でも、先に予測されたアドレスのデーブロックの先行
ロードを上記アクセスに並行して行い得るようにしてお
けば、プロセッサ1の処理動作(メモリアクセス動作)
とは全く独立にメモリアクセス命令に基づいて予測した
アドレスのデータブロックの先行ロードを行うことか可
能となる。
ておき、プロセッサ1がキャッシュメモリ3をアクセス
中でも、先に予測されたアドレスのデーブロックの先行
ロードを上記アクセスに並行して行い得るようにしてお
けば、プロセッサ1の処理動作(メモリアクセス動作)
とは全く独立にメモリアクセス命令に基づいて予測した
アドレスのデータブロックの先行ロードを行うことか可
能となる。
但(7、上述したようにキャッシュメモリ3が2つのア
クセスポートを備えている場合であっても、例えばデー
タブロックの先行ロードを実行している期間に新たなキ
ャッシュミスが発生し、これによってデータブロックの
入れ替えか必要となるような場合には、−旦、上記デー
タブロックの先行ロードを待機させ、上記データブロッ
クの入れ替えか終了した後、データブロックの先行ロー
ドを再開することが必要かあることは云うまでもない。
クセスポートを備えている場合であっても、例えばデー
タブロックの先行ロードを実行している期間に新たなキ
ャッシュミスが発生し、これによってデータブロックの
入れ替えか必要となるような場合には、−旦、上記デー
タブロックの先行ロードを待機させ、上記データブロッ
クの入れ替えか終了した後、データブロックの先行ロー
ドを再開することが必要かあることは云うまでもない。
ところで先行ロードするデータのアドレスを予測する方
式として、前述したようにアクセス要求のあったアドレ
スのデータを含むデータブロックの次のデータブロック
のアドレスを予測値として求めることのみならず、例え
ばキャッシュメモリ3にてページ単位で最後にアクセス
したアドレスを保持しておき、このアドレスと新たにア
クセスされたアドレスとの差分を上記新たなアクセスア
ドレスに加えて、これを予測アドレス値とするようにし
ても良い。
式として、前述したようにアクセス要求のあったアドレ
スのデータを含むデータブロックの次のデータブロック
のアドレスを予測値として求めることのみならず、例え
ばキャッシュメモリ3にてページ単位で最後にアクセス
したアドレスを保持しておき、このアドレスと新たにア
クセスされたアドレスとの差分を上記新たなアクセスア
ドレスに加えて、これを予測アドレス値とするようにし
ても良い。
また或いは、メモリアクセスに伴ってデータの先行ロー
ドを行う命令を複数種類設けておき、前述した先行ロー
ド制御線PLを利用してその命令の種類をキャッシュメ
モリ3に通知するようにする。そしてキャッシュメモリ
3では、命令の種類毎にその最後のアクセスアドレスを
保持しておき、これらの各命令の種類毎に新たにアクセ
スされたアドレスとその命令について保持されている最
後のアクセスアドレスとの差分を求め、この差分を新た
なアクセスアドレスに加えて予測アドレスを求めるよう
にしても良い。
ドを行う命令を複数種類設けておき、前述した先行ロー
ド制御線PLを利用してその命令の種類をキャッシュメ
モリ3に通知するようにする。そしてキャッシュメモリ
3では、命令の種類毎にその最後のアクセスアドレスを
保持しておき、これらの各命令の種類毎に新たにアクセ
スされたアドレスとその命令について保持されている最
後のアクセスアドレスとの差分を求め、この差分を新た
なアクセスアドレスに加えて予測アドレスを求めるよう
にしても良い。
つまり先にアクセスされたアドレスと、現在アクセスさ
れたアト1/スとの差分を現アクセスアドレスに加えた
アドレスを予測値としてデータの先行ロードを行うよう
にしても良い。このようにしてプロセッサ1が将来アク
セスすると予測されるアドレスを予測する場合であって
も、前述したようにインヒビットや先行ロード許可領域
のアドレス範囲に対する判定を行った上で先行ロードを
行えば良いことは勿論のことである。
れたアト1/スとの差分を現アクセスアドレスに加えた
アドレスを予測値としてデータの先行ロードを行うよう
にしても良い。このようにしてプロセッサ1が将来アク
セスすると予測されるアドレスを予測する場合であって
も、前述したようにインヒビットや先行ロード許可領域
のアドレス範囲に対する判定を行った上で先行ロードを
行えば良いことは勿論のことである。
かくしてこのように構成された本実施例装置によれば、
例えば第3図にキャッシュメモリ3からプロセッサ1に
次々とデータをロードする場合のシステム的な動作の流
れを示すように、先行ロードを指示する命令を用いてキ
ャッシュメモリ3をアクセスすると、その指示に従って
アクセスされた命令に基づいて予測されたアドレスのデ
ータが次々と先行ロードされる。具体的には、A番地を
アクセスし、キャッシュミスした場合にはA番地のデー
タを主記憶装置2から転送し上記アクセス要求に応えた
後、上記アクセスされたA番地から予測されるB番地の
データの先行ロードが行われる。その後、先行ロードを
指示する命令を用いてB番地かアクセスされると、この
B番地のデータか先行ロードされていることからキャツ
シュヒツトし、B番地のデータがキャッシュメモリ3が
らプロセッサ1に直接的に読み込まれる。このとき、キ
ャッシュメモリ3は上記B番地から次にアクセスされる
と予測されるC番地のデータを主記憶装置2から先行ロ
ードする。このような先行ロードを指示する命令に従い
、次々と先行ロードすべきデータのアドレスを予測し、
その予測アドレスのデータを先行ロードしておくことに
より、実際にプロセッサ1が当該アドレスのデータをア
クセスしたとき、そのアドレスのデータをキャッシュメ
モリ3に保持しておくことが可能となるので、キャッシ
ュミスを招くことなく高速にメモリアクセスに対処する
ことが可能となる。
例えば第3図にキャッシュメモリ3からプロセッサ1に
次々とデータをロードする場合のシステム的な動作の流
れを示すように、先行ロードを指示する命令を用いてキ
ャッシュメモリ3をアクセスすると、その指示に従って
アクセスされた命令に基づいて予測されたアドレスのデ
ータが次々と先行ロードされる。具体的には、A番地を
アクセスし、キャッシュミスした場合にはA番地のデー
タを主記憶装置2から転送し上記アクセス要求に応えた
後、上記アクセスされたA番地から予測されるB番地の
データの先行ロードが行われる。その後、先行ロードを
指示する命令を用いてB番地かアクセスされると、この
B番地のデータか先行ロードされていることからキャツ
シュヒツトし、B番地のデータがキャッシュメモリ3が
らプロセッサ1に直接的に読み込まれる。このとき、キ
ャッシュメモリ3は上記B番地から次にアクセスされる
と予測されるC番地のデータを主記憶装置2から先行ロ
ードする。このような先行ロードを指示する命令に従い
、次々と先行ロードすべきデータのアドレスを予測し、
その予測アドレスのデータを先行ロードしておくことに
より、実際にプロセッサ1が当該アドレスのデータをア
クセスしたとき、そのアドレスのデータをキャッシュメ
モリ3に保持しておくことが可能となるので、キャッシ
ュミスを招くことなく高速にメモリアクセスに対処する
ことが可能となる。
尚、先行ロードを指示する命令を用いてメモリアクセス
がなされたとき、第3図に示すようにD番地がアクセス
され、このD番地から予測されたアドレスが前述した先
行ロード許可領域のアドレス範囲外となった場合には、
当該予測アドレスの先行ロードは行われない。
がなされたとき、第3図に示すようにD番地がアクセス
され、このD番地から予測されたアドレスが前述した先
行ロード許可領域のアドレス範囲外となった場合には、
当該予測アドレスの先行ロードは行われない。
ところでキャッシュメモリ3に予測アドレスのデータを
先行ロードする場合、何等かの形で既にキャッシュメモ
リ3に格納されているデータの一部を追い出すことが必
要である。このデータの追い出しは基本的には、古いデ
ータから順に追い出すことによりなされるが、単純に古
い一データから順に追い出すと不具合が発生することが
ある。
先行ロードする場合、何等かの形で既にキャッシュメモ
リ3に格納されているデータの一部を追い出すことが必
要である。このデータの追い出しは基本的には、古いデ
ータから順に追い出すことによりなされるが、単純に古
い一データから順に追い出すと不具合が発生することが
ある。
例えば通常の配列計算を行うプログラムでは、配列デー
タに対する演算を行うループ内であっても、配列データ
のみならずそれ以外の変数データに対するアクセスが多
々行われる。また上記ループ以外では配列データ以外の
データに対するアクセスが殆どである。従って前述した
データブロックの先行ロードを大規模な配列データに対
して行った場合、上述した配列データ以外のデータを不
本意に次々と追い出してしまうと云う不具合が生じるこ
とが予想される。
タに対する演算を行うループ内であっても、配列データ
のみならずそれ以外の変数データに対するアクセスが多
々行われる。また上記ループ以外では配列データ以外の
データに対するアクセスが殆どである。従って前述した
データブロックの先行ロードを大規模な配列データに対
して行った場合、上述した配列データ以外のデータを不
本意に次々と追い出してしまうと云う不具合が生じるこ
とが予想される。
このような不具合に対処するには、例えばキャッシュメ
モリ3 (メモリ部3a)のメモリ空間を複数の領域に
分割して複数のウェイを構成し、これらのウェイ毎にデ
ータの先行ロードを制御するようにすれば良い。具体的
には、例えばウェイ [0コからウェイ[3]の4つの
ウェイにキャッシュメモリ空間を分割し、その中のウェ
イ[0コからウェイ[2]だけを先行ロードの対象とし
て制限を加えるようにする。このようにして前述した配
列演算に用いられる配列データ゛とそれ以外のデータと
がそれぞれ格納される・キャッシュメモリ3におけるウ
ェイを可能な限り分離する。そして前記配列データはシ
ーケンシャルにアクセスされることが多いと云う性質、
換言すれば1度アクセスされた配列データは、その後、
暫くの間はアクセスされることがないと云う性質に従っ
て、当該配列データに対するアクセスにおいてキャッシ
ュミスが発生した場合や、その配列データを先行ロード
するような場合、その配列に属する別のデータブロック
、特に−旦アクセスされたことのあるデータブロックを
キャッシュメモリ3から追い出すようにすれば良い。
モリ3 (メモリ部3a)のメモリ空間を複数の領域に
分割して複数のウェイを構成し、これらのウェイ毎にデ
ータの先行ロードを制御するようにすれば良い。具体的
には、例えばウェイ [0コからウェイ[3]の4つの
ウェイにキャッシュメモリ空間を分割し、その中のウェ
イ[0コからウェイ[2]だけを先行ロードの対象とし
て制限を加えるようにする。このようにして前述した配
列演算に用いられる配列データ゛とそれ以外のデータと
がそれぞれ格納される・キャッシュメモリ3におけるウ
ェイを可能な限り分離する。そして前記配列データはシ
ーケンシャルにアクセスされることが多いと云う性質、
換言すれば1度アクセスされた配列データは、その後、
暫くの間はアクセスされることがないと云う性質に従っ
て、当該配列データに対するアクセスにおいてキャッシ
ュミスが発生した場合や、その配列データを先行ロード
するような場合、その配列に属する別のデータブロック
、特に−旦アクセスされたことのあるデータブロックを
キャッシュメモリ3から追い出すようにすれば良い。
このようにして先行ロードの対象となるウェイを限定し
て予測アドレスのデータの先行ロードを行うようにすれ
ば、データの先行ロードにより効果が期待される配列デ
ータ以外のデータについては、そのままキャッシュメモ
リ3に残したまま、配列データの間でだけデータの追い
出しと先行ロードとを実行することが可能となる。つま
り必要なデータを不本意にキャッシュメモリ3から追い
出すことなしに、プロセッサ1が将来アクセスすると予
測されるアドレスのデータ(データブロック)を効果的
に先行ロードすることが可能となる。
て予測アドレスのデータの先行ロードを行うようにすれ
ば、データの先行ロードにより効果が期待される配列デ
ータ以外のデータについては、そのままキャッシュメモ
リ3に残したまま、配列データの間でだけデータの追い
出しと先行ロードとを実行することが可能となる。つま
り必要なデータを不本意にキャッシュメモリ3から追い
出すことなしに、プロセッサ1が将来アクセスすると予
測されるアドレスのデータ(データブロック)を効果的
に先行ロードすることが可能となる。
尚、キャッシュメモリ3内に設定するウェイの数、また
その中の先行ロードを許可するウェイの数とそのウェイ
番号はシステム仕様に応じて任意に定めれば良いもので
ある。またデータブロックの先行ロードを行うウェイを
、例えば先行ロードの指示がなされた命令の本来のメモ
リアクセスに対してヒツトしたウェイとして定めたり、
或いは本来のメモリアクセスがキャッシュミスし、その
データブロックがロードされたウェイとして定めること
も可能である。更には上述した如く特定されるウェイの
選択優先度を高め、他のウェイとの兼ね合いに応じて先
行ロードするウェイを決定するようにすることも可能で
ある。
その中の先行ロードを許可するウェイの数とそのウェイ
番号はシステム仕様に応じて任意に定めれば良いもので
ある。またデータブロックの先行ロードを行うウェイを
、例えば先行ロードの指示がなされた命令の本来のメモ
リアクセスに対してヒツトしたウェイとして定めたり、
或いは本来のメモリアクセスがキャッシュミスし、その
データブロックがロードされたウェイとして定めること
も可能である。更には上述した如く特定されるウェイの
選択優先度を高め、他のウェイとの兼ね合いに応じて先
行ロードするウェイを決定するようにすることも可能で
ある。
さて本発明は次のようにして実施することも可能である
。前述した実施例では、プロセッサ1から先行ロードを
指示する命令か与えられたとき、先行ロード制御線PL
を用いてキャッシュメモリ3にその旨を通知するように
したが、将来アクセスすると予測されるデータブロック
のアドレス予測の為の付加情報(予測情報)を前記アク
セス命令と共にキャッシュメモリに与えるようにしても
良い。
。前述した実施例では、プロセッサ1から先行ロードを
指示する命令か与えられたとき、先行ロード制御線PL
を用いてキャッシュメモリ3にその旨を通知するように
したが、将来アクセスすると予測されるデータブロック
のアドレス予測の為の付加情報(予測情報)を前記アク
セス命令と共にキャッシュメモリに与えるようにしても
良い。
例えば第4図に示すように命令コードと共に、その命令
のオペランド情報としてソースレジスタ番号、ポインタ
、オフセット値を予測情報としてキャッシュメモリ3に
与えるようにする。この命令フォーマットは、例えばポ
インタの値をアドレスとしてメモリアクセスを行い、且
つ同時に上記ポインタの値をオフセット値だけ順次イン
クリメントする命令機能を兼ね備える。
のオペランド情報としてソースレジスタ番号、ポインタ
、オフセット値を予測情報としてキャッシュメモリ3に
与えるようにする。この命令フォーマットは、例えばポ
インタの値をアドレスとしてメモリアクセスを行い、且
つ同時に上記ポインタの値をオフセット値だけ順次イン
クリメントする命令機能を兼ね備える。
このような機能を持つ命令は、データブロックの先行ロ
ード機能を備えていなくても有効な命令であり、成る意
味では多くの計算機で一般的にサポートされている命令
形態である。しかしてこのような命令は、スタックアク
セスや配列アクセスが多く、インクリメントされたポイ
ンタの値に対して近いアドレスを、将来プロセッサ1が
アクセスする確率が高い場合に多く用いられる。従って
このような命令を用いて先行ロードを指示し、プロセッ
サ1によりインクリメントされたポインタの値を予測ア
ドレスとすれば、先行ロードするデータのアドレスとし
ての的中率は極めて高くなる。
ード機能を備えていなくても有効な命令であり、成る意
味では多くの計算機で一般的にサポートされている命令
形態である。しかしてこのような命令は、スタックアク
セスや配列アクセスが多く、インクリメントされたポイ
ンタの値に対して近いアドレスを、将来プロセッサ1が
アクセスする確率が高い場合に多く用いられる。従って
このような命令を用いて先行ロードを指示し、プロセッ
サ1によりインクリメントされたポインタの値を予測ア
ドレスとすれば、先行ロードするデータのアドレスとし
ての的中率は極めて高くなる。
尚、このような命令に付属した予測情報を用いる場合に
は、例えば命令のポインタの値により示されるアドレス
にて本来のメモリアクセスを行い、このメモリアクセス
アドレスに前記オフセット値を加えたアドレスを予測ア
ドレスとして先行ロードを行うことのみならず、ポイン
タの値にオフセット値を加えたアドレスにアクセスし、
その上でそのアクセスアドレスに前記オフセット値を更
に加えたアドレスを予測アドレスとして先行ロードを行
うようにしても良い。そして上記オフセット値をキャッ
シュメモリ3に保持し、プロセッサ1では前記アクセス
アドレスに前記ポインタ値を加えたアドレスを次の命令
のアクセスアドレスとして順次設定していくようにする
ことも可能である。
は、例えば命令のポインタの値により示されるアドレス
にて本来のメモリアクセスを行い、このメモリアクセス
アドレスに前記オフセット値を加えたアドレスを予測ア
ドレスとして先行ロードを行うことのみならず、ポイン
タの値にオフセット値を加えたアドレスにアクセスし、
その上でそのアクセスアドレスに前記オフセット値を更
に加えたアドレスを予測アドレスとして先行ロードを行
うようにしても良い。そして上記オフセット値をキャッ
シュメモリ3に保持し、プロセッサ1では前記アクセス
アドレスに前記ポインタ値を加えたアドレスを次の命令
のアクセスアドレスとして順次設定していくようにする
ことも可能である。
このようなアドレス制御を行えば、先行ロードを指示す
る命令をキャッシュメモリ3に与えるだけで、プロセッ
サ1では次々とメモリアクセスのアドレス指定を行い、
キャッシュメモリ3ではそのメモリアクセスに先立って
該当アドレスのデータを次々に先行ロードしてい(こと
が可能となる。
る命令をキャッシュメモリ3に与えるだけで、プロセッ
サ1では次々とメモリアクセスのアドレス指定を行い、
キャッシュメモリ3ではそのメモリアクセスに先立って
該当アドレスのデータを次々に先行ロードしてい(こと
が可能となる。
従って、上述したようにデータブロックの先行ロードを
指示する命令自体を、従来から用いられているポインタ
、オフセット値付きの命令機能を拡張したものとして用
いることにより、従来のオブジェクトプログラムをその
まま用いて前述した先行ロード機能を実現することがで
きる。従って従来システムとのソフトウェアの互換性を
保つ上で非常に有用であると云える。
指示する命令自体を、従来から用いられているポインタ
、オフセット値付きの命令機能を拡張したものとして用
いることにより、従来のオブジェクトプログラムをその
まま用いて前述した先行ロード機能を実現することがで
きる。従って従来システムとのソフトウェアの互換性を
保つ上で非常に有用であると云える。
尚、ソフトウェアの互換性がさほど問題とならないよう
な場合には、前述した命令とは別に先行ロードを行う為
のアドレス情報を生成するためのオペランドを準備して
おくようにすれば良い。
な場合には、前述した命令とは別に先行ロードを行う為
のアドレス情報を生成するためのオペランドを準備して
おくようにすれば良い。
かくして上述した本発明の実施例に示されるように、本
発明によればコンパイラがデータブロックの先行ロード
を実行したほうがメモリアクセスに対する効果が高いと
判断した場合にのみ、プロセッサ1からキャッシュメモ
リ3に対して先行ロードを指示する命令を与え、この先
行ロードを指示する命令が与えられた場合にだけキャッ
シュメモリ3は本来のメモリアクセスのアドレスに基づ
いて予測されるアドレスのデータを先行ロードする。
発明によればコンパイラがデータブロックの先行ロード
を実行したほうがメモリアクセスに対する効果が高いと
判断した場合にのみ、プロセッサ1からキャッシュメモ
リ3に対して先行ロードを指示する命令を与え、この先
行ロードを指示する命令が与えられた場合にだけキャッ
シュメモリ3は本来のメモリアクセスのアドレスに基づ
いて予測されるアドレスのデータを先行ロードする。
従って先行ロードしたデータに対するメモリアクセスの
ヒツト率を十分に高めることが可能となる。しかもプロ
セッサ1が近い将来アクセスすると予測されるアドレス
のデータを含むデータブロックだけを、例えばキャッシ
ュメモリ3のウェイを制限しながらメモリアクセスをト
リガとして先行ロードするので、必要なデータを不本意
に追い出すことなしに、必要なデータ、或いは必要とな
ると予測されるデータだけをキャッシュすることができ
る。故にアクセスアドレスの予測を、例えば前述したポ
インタ値等に基づいて効果的に行えば、キャッシュミス
の発生を殆ど零に抑え、キャッシュメモリ3の効果を十
分に引き出してプロセッサ1での処理効率を効果的に高
めることが可能となる。
ヒツト率を十分に高めることが可能となる。しかもプロ
セッサ1が近い将来アクセスすると予測されるアドレス
のデータを含むデータブロックだけを、例えばキャッシ
ュメモリ3のウェイを制限しながらメモリアクセスをト
リガとして先行ロードするので、必要なデータを不本意
に追い出すことなしに、必要なデータ、或いは必要とな
ると予測されるデータだけをキャッシュすることができ
る。故にアクセスアドレスの予測を、例えば前述したポ
インタ値等に基づいて効果的に行えば、キャッシュミス
の発生を殆ど零に抑え、キャッシュメモリ3の効果を十
分に引き出してプロセッサ1での処理効率を効果的に高
めることが可能となる。
ちなみに従来のように、メモリアクセスがあったとき、
そのアクセスされたアドレスのデータブロックと共に次
のデーブロックまでをその都度−括してキャッシュメモ
リに転送する方式では、不必要なデータや遠い将来にし
か必要としないデータまでが先行ロードされてしまうと
云う問題がある。つまり従来の先行ロード方式は、単に
アクセスされたデータを基準としてキャッシュメモリに
転送するデータの幅を広げているに過ぎないと云える。
そのアクセスされたアドレスのデータブロックと共に次
のデーブロックまでをその都度−括してキャッシュメモ
リに転送する方式では、不必要なデータや遠い将来にし
か必要としないデータまでが先行ロードされてしまうと
云う問題がある。つまり従来の先行ロード方式は、単に
アクセスされたデータを基準としてキャッシュメモリに
転送するデータの幅を広げているに過ぎないと云える。
この結果、不必要なデータの先行ロードに伴い、キャッ
シュメモリ3から必要なデータブロックが追い出されて
しまうことが否めず、キャッシュに対するヒツト率の向
上が期待できないと云う問題がある。しかもデータブロ
ックの先行ロードがキャッシュミスをトリガとして行わ
れるだけなので、例えば−次元の配列データを単位シー
ケンシャルにアクセスするような場合、2データブロツ
クに1回しかその先行ロードが行われないことになる。
シュメモリ3から必要なデータブロックが追い出されて
しまうことが否めず、キャッシュに対するヒツト率の向
上が期待できないと云う問題がある。しかもデータブロ
ックの先行ロードがキャッシュミスをトリガとして行わ
れるだけなので、例えば−次元の配列データを単位シー
ケンシャルにアクセスするような場合、2データブロツ
クに1回しかその先行ロードが行われないことになる。
このことは、キャッシュのヒツト率の向上をさほど望め
ないことを意味する。
ないことを意味する。
この点、本発明にあっては、配列データをシーケンシャ
ルにアクセスするような場合にだけ先行ロードを指示す
る命令を用いてメモリアクセスし、そのメモリアクセス
がヒツトするかキャッシュミスするかに拘らず、アクセ
スされた命令に基づいて予測されるアドレスのデータを
先行ロードするので、そのヒツト率を効果的に高めるこ
とかできると云う実用上多大なる効果が奏せられる。
ルにアクセスするような場合にだけ先行ロードを指示す
る命令を用いてメモリアクセスし、そのメモリアクセス
がヒツトするかキャッシュミスするかに拘らず、アクセ
スされた命令に基づいて予測されるアドレスのデータを
先行ロードするので、そのヒツト率を効果的に高めるこ
とかできると云う実用上多大なる効果が奏せられる。
尚、本発明は上述した実施例に限定されるものではない
。例えばキャッシュメモリ3に設定するインヒビットの
情報は、キャッシュメモリ3の内部状態等に応じて設定
すれば良いものである。また先行ロードを許可するアド
レス範囲についても、例えば主記憶装置2に記憶されて
いるデータのメモリマツプ情報等に応じて定めれば良い
。
。例えばキャッシュメモリ3に設定するインヒビットの
情報は、キャッシュメモリ3の内部状態等に応じて設定
すれば良いものである。また先行ロードを許可するアド
レス範囲についても、例えば主記憶装置2に記憶されて
いるデータのメモリマツプ情報等に応じて定めれば良い
。
またキャッシュブロック単位に先行ロードされたキャッ
シュブロックが実際にアクセスされたか否かを示すフラ
グを設け、成るデータブロックの先行ロードを行う為に
別のデータブロックを追い出す必要がある場合、上記フ
ラグ情報に従ってデータの追い出しを行うデータブロッ
クを決定するようにすることも可能である。また同時に
フラグの足っていないウェイの追い出し優先度を高めて
、どのウェイからデータブロックの追い出しを行うかを
決定するようにすることも可能である。
シュブロックが実際にアクセスされたか否かを示すフラ
グを設け、成るデータブロックの先行ロードを行う為に
別のデータブロックを追い出す必要がある場合、上記フ
ラグ情報に従ってデータの追い出しを行うデータブロッ
クを決定するようにすることも可能である。また同時に
フラグの足っていないウェイの追い出し優先度を高めて
、どのウェイからデータブロックの追い出しを行うかを
決定するようにすることも可能である。
更にはメモリアクセスされたアドレスに基づく先行ロー
ドの対象とするアドレスの予測についても、前述したポ
インタとオフセット値を用いることのみならず、例えば
配列データの構造に基づいて予測決定するようにするこ
とも可能である。その他、本発明はその要旨を逸脱しな
い範囲で種々変形して実施することができる。
ドの対象とするアドレスの予測についても、前述したポ
インタとオフセット値を用いることのみならず、例えば
配列データの構造に基づいて予測決定するようにするこ
とも可能である。その他、本発明はその要旨を逸脱しな
い範囲で種々変形して実施することができる。
[発明の効果コ
以上説明したように本発明によれば、メモリアクセスす
るデータの内容に応じて、先行ロードを指示する命令と
先行ロードを指示しない命令とを使い分け、例えば配列
データをシーケンシャルにアクセスするような場合にの
み、プロセッサが近い将来アクセスすると予測されるア
ドレスのデータをキャッシュメモリに先行ロードする。
るデータの内容に応じて、先行ロードを指示する命令と
先行ロードを指示しない命令とを使い分け、例えば配列
データをシーケンシャルにアクセスするような場合にの
み、プロセッサが近い将来アクセスすると予測されるア
ドレスのデータをキャッシュメモリに先行ロードする。
しかもプロセッサからの先行ロードを指示する命令が与
えられることをトリガとして、そのメモリアクセスがヒ
ツトするかミスするかに拘らず、予測されたアドレスの
データを先行ロードするものとなっている。この結果、
大量の配列データをシーケンシャルにアクセスするよう
な場合であって、シーケンシャルにアクセスされるデー
タを次々とキャッシュメモリに先行ロードしておくこと
が可能となるので、キャッシュミスの発生を抑えてプロ
セッサの処理効率を効果的に高めることが可能となる等
の実用上多大なる効果か奏せられる。
えられることをトリガとして、そのメモリアクセスがヒ
ツトするかミスするかに拘らず、予測されたアドレスの
データを先行ロードするものとなっている。この結果、
大量の配列データをシーケンシャルにアクセスするよう
な場合であって、シーケンシャルにアクセスされるデー
タを次々とキャッシュメモリに先行ロードしておくこと
が可能となるので、キャッシュミスの発生を抑えてプロ
セッサの処理効率を効果的に高めることが可能となる等
の実用上多大なる効果か奏せられる。
図は本発明の一実施例に係るキャッシュメモリ装置につ
いて示すもので、第1図は実施例装置の概略構成図、第
2図は実施例装置のキャッシュメモリに設けられる先行
ロード制御の為のレジス夕格納情報を示す図、第3図は
実施例装置の効果を説明するだめのシステム的な処理の
流れを示す図、第4図は先行ロードするデータブロック
のアドレスを予測する為の予測情報の構成例を示す図で
ある。 1・・・プロセッサ、2・・・主記憶装置、3・・・キ
ャッシュメモリ、3a・・・メモリ部、3b・・・メモ
リ制御部。
いて示すもので、第1図は実施例装置の概略構成図、第
2図は実施例装置のキャッシュメモリに設けられる先行
ロード制御の為のレジス夕格納情報を示す図、第3図は
実施例装置の効果を説明するだめのシステム的な処理の
流れを示す図、第4図は先行ロードするデータブロック
のアドレスを予測する為の予測情報の構成例を示す図で
ある。 1・・・プロセッサ、2・・・主記憶装置、3・・・キ
ャッシュメモリ、3a・・・メモリ部、3b・・・メモ
リ制御部。
Claims (7)
- (1)プロセッサと主記憶装置との間にキャッシュメモ
リを設けてなるキャッシュメモリ装置において、 前記プロセッサは、キャッシュメモリをアクセスする命
令に伴って、キャッシュメモリの先行ロードを指示する
命令と指示しない命令とを持ち、上記先行ロードを指示
する命令と共にキャッシュメモリをアクセスする際、先
行ロードが指示されていることを前記キャッシュメモリ
に通知する手段を備え、 前記キャッシュメモリは、先行ロードを指示する命令と
共にアクセスされたとき、前記プロセッサがアクセスす
ると予測されるアドレスのデータを前記主記憶装置から
キャッシュメモリに先行ロードすることを特徴とするキ
ャッシュメモリ装置。 - (2)キャッシュメモリは、先行ロードを行うか否かを
指示するモード情報を保持する手段を備え、先行ロード
を指示する命令と共にアクセスされたとき、上記保持さ
れたモード情報に従って主記憶装置からキャッシュメモ
リへの先行ロードを行うか否かを決定することを特徴と
する請求項(1)に記載のキャッシュメモリ装置。 - (3)キャッシュメモリは、先行ロードの対象となるア
ドレス範囲の情報を保持する手段を備え、先行ロードを
指示する命令と共にアクセスされたとき、予測したアド
レスが上記保持されたアドレス範囲内にあるときにだけ
、主記憶装置からキャッシュメモリへの先行ロードを行
うことを特徴とする請求項(1)に記載のキャッシュメ
モリ装置。 - (4)主記憶装置からキャッシュメモリに先行ロードす
るデータのアドレスは、プロセッサがアクセスするアド
レスに基づいて予測されることを特徴とする請求項(1
)に記載のキャッシュメモリ装置。 - (5)先行ロードを指示する命令は、そのオペランドに
ポインタとオフセット値を持ち、プロセッサは上記ポイ
ンタにより示されるアドレスにアクセスする際、前記オ
フセット値をキャッシュメモリに通知する手段を備え、
キャッシュメモリは前記命令によりアクセスされたアド
レスに前記オフセット値を加えたアドレスを予測アドレ
スとして先行ロードを行うことを特徴とする請求項(1
)に記載のキャッシュメモリ装置。 - (6)キャッシュメモリは、メモリ領域を分割してなる
複数のウェイを備え、これらのウェイの中の予め定めら
れたウェイに対してのみデータの先行ロードを行うこと
を特徴とする請求項(1)に記載のキャッシュメモリ装
置。 - (7)キャッシュメモリは、先行ロードしたデータがア
クセスされたか否かの情報を保持する手段をキャッシュ
ブロック毎に持ち、この保持情報に従って先行ロードに
伴うデータの追い出しを行うキャッシュブロックを決定
することを特徴とする請求項(1)に記載のキャッシュ
メモリ装置。
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2155776A JPH0452741A (ja) | 1990-06-14 | 1990-06-14 | キャッシュメモリ装置 |
| DE69132018T DE69132018T2 (de) | 1990-06-14 | 1991-06-12 | Rechner mit Vorausholungs-Cache-Speicher |
| EP91305317A EP0463770B1 (en) | 1990-06-14 | 1991-06-12 | Computer with cache pre-load |
| US07/715,932 US5371865A (en) | 1990-06-14 | 1991-06-14 | Computer with main memory and cache memory for employing array data pre-load operation utilizing base-address and offset operand |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2155776A JPH0452741A (ja) | 1990-06-14 | 1990-06-14 | キャッシュメモリ装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH0452741A true JPH0452741A (ja) | 1992-02-20 |
Family
ID=15613158
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2155776A Pending JPH0452741A (ja) | 1990-06-14 | 1990-06-14 | キャッシュメモリ装置 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US5371865A (ja) |
| EP (1) | EP0463770B1 (ja) |
| JP (1) | JPH0452741A (ja) |
| DE (1) | DE69132018T2 (ja) |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5872990A (en) * | 1997-01-07 | 1999-02-16 | International Business Machines Corporation | Reordering of memory reference operations and conflict resolution via rollback in a multiprocessing environment |
| JP2010191754A (ja) * | 2009-02-19 | 2010-09-02 | Mitsubishi Electric Corp | キャッシュ記憶装置 |
| JP2010277180A (ja) * | 2009-05-26 | 2010-12-09 | Fujitsu Semiconductor Ltd | 情報処理システム及びデータ転送方法 |
| US7903885B2 (en) | 2004-11-11 | 2011-03-08 | Panasonic Corporation | Data converting apparatus and method |
| JP2012533811A (ja) * | 2009-07-20 | 2012-12-27 | フリースケール セミコンダクター インコーポレイテッド | プリフェッチ・モジュールを備える信号処理システムおよび集積回路、並びにそのための方法 |
Families Citing this family (19)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP0855647A1 (en) * | 1992-01-06 | 1998-07-29 | Hitachi, Ltd. | Computer for performing data fetch and data prefetch in parallel |
| JPH07271744A (ja) * | 1994-03-31 | 1995-10-20 | Matsushita Electric Ind Co Ltd | 並列計算機 |
| US5592392A (en) * | 1994-11-22 | 1997-01-07 | Mentor Graphics Corporation | Integrated circuit design apparatus with extensible circuit elements |
| US5832533A (en) * | 1995-01-04 | 1998-11-03 | International Business Machines Corporation | Method and system for addressing registers in a data processing unit in an indexed addressing mode |
| US6314561B1 (en) * | 1995-04-12 | 2001-11-06 | International Business Machines Corporation | Intelligent cache management mechanism |
| EP0741356A1 (en) * | 1995-05-05 | 1996-11-06 | Rockwell International Corporation | Cache architecture and method of operation |
| US5943691A (en) * | 1995-12-27 | 1999-08-24 | Sun Microsystems, Inc. | Determination of array padding using collision vectors |
| US5889959A (en) * | 1996-01-05 | 1999-03-30 | Unisys Corporation | Fast write initialization method and system for loading channel adapter microcode |
| US5893142A (en) * | 1996-11-14 | 1999-04-06 | Motorola Inc. | Data processing system having a cache and method therefor |
| US5958068A (en) * | 1997-04-14 | 1999-09-28 | International Business Machines Corporation | Cache array defect functional bypassing using repair mask |
| US6003115A (en) * | 1997-07-29 | 1999-12-14 | Quarterdeck Corporation | Method and apparatus for predictive loading of a cache |
| US6151662A (en) * | 1997-12-02 | 2000-11-21 | Advanced Micro Devices, Inc. | Data transaction typing for improved caching and prefetching characteristics |
| US6240490B1 (en) | 1998-07-20 | 2001-05-29 | International Business Machines Corporation | Comprehensive multilevel cache preloading mechanism in a multiprocessing simulation environment |
| US6742112B1 (en) * | 1999-12-29 | 2004-05-25 | Intel Corporation | Lookahead register value tracking |
| US7000093B2 (en) * | 2001-12-19 | 2006-02-14 | Intel Corporation | Cellular automaton processing microprocessor prefetching data in neighborhood buffer |
| US20050166031A1 (en) * | 2002-04-26 | 2005-07-28 | Holmberg Anders P. | Memory access register file |
| EP1729220A4 (en) * | 2004-03-24 | 2008-12-17 | Panasonic Corp | CACHE MEMORY AND CONTROL PROCEDURE THEREFOR |
| US10114755B2 (en) * | 2013-06-14 | 2018-10-30 | Nvidia Corporation | System, method, and computer program product for warming a cache for a task launch |
| JP6316593B2 (ja) * | 2014-01-07 | 2018-04-25 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB1515376A (en) * | 1975-07-09 | 1978-06-21 | Int Computers Ltd | Data storage systems |
| JPS5263038A (en) * | 1975-10-01 | 1977-05-25 | Hitachi Ltd | Data processing device |
| US4583165A (en) * | 1982-06-30 | 1986-04-15 | International Business Machines Corporation | Apparatus and method for controlling storage access in a multilevel storage system |
| US4888679A (en) * | 1988-01-11 | 1989-12-19 | Digital Equipment Corporation | Method and apparatus using a cache and main memory for both vector processing and scalar processing by prefetching cache blocks including vector data elements |
| US4926323A (en) * | 1988-03-03 | 1990-05-15 | Advanced Micro Devices, Inc. | Streamlined instruction processor |
-
1990
- 1990-06-14 JP JP2155776A patent/JPH0452741A/ja active Pending
-
1991
- 1991-06-12 DE DE69132018T patent/DE69132018T2/de not_active Expired - Fee Related
- 1991-06-12 EP EP91305317A patent/EP0463770B1/en not_active Expired - Lifetime
- 1991-06-14 US US07/715,932 patent/US5371865A/en not_active Expired - Lifetime
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5872990A (en) * | 1997-01-07 | 1999-02-16 | International Business Machines Corporation | Reordering of memory reference operations and conflict resolution via rollback in a multiprocessing environment |
| US7903885B2 (en) | 2004-11-11 | 2011-03-08 | Panasonic Corporation | Data converting apparatus and method |
| JP2010191754A (ja) * | 2009-02-19 | 2010-09-02 | Mitsubishi Electric Corp | キャッシュ記憶装置 |
| JP2010277180A (ja) * | 2009-05-26 | 2010-12-09 | Fujitsu Semiconductor Ltd | 情報処理システム及びデータ転送方法 |
| US8504743B2 (en) | 2009-05-26 | 2013-08-06 | Fujitsu Semiconductor Limited | Information processing system and data transfer method |
| JP2012533811A (ja) * | 2009-07-20 | 2012-12-27 | フリースケール セミコンダクター インコーポレイテッド | プリフェッチ・モジュールを備える信号処理システムおよび集積回路、並びにそのための方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| US5371865A (en) | 1994-12-06 |
| EP0463770A2 (en) | 1992-01-02 |
| EP0463770A3 (en) | 1992-10-07 |
| DE69132018D1 (de) | 2000-04-13 |
| EP0463770B1 (en) | 2000-03-08 |
| DE69132018T2 (de) | 2000-09-14 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH0452741A (ja) | キャッシュメモリ装置 | |
| JP3323212B2 (ja) | データプレフェッチの方法およびその装置 | |
| US7934061B2 (en) | Methods and arrangements to manage on-chip memory to reduce memory latency | |
| US7028159B2 (en) | Processing device with prefetch instructions having indicator bits specifying cache levels for prefetching | |
| RU2212704C2 (ru) | Структура совместно используемого кэша для временных и невременных команд | |
| JP3309425B2 (ja) | キャッシュ制御装置 | |
| US5822757A (en) | Computer system with multi-buffer data cache for prefetching data having different temporal and spatial localities | |
| JP3739491B2 (ja) | プリフェッチ命令を用いるハーバードアーキテクチャキャッシュメモリの調和したソフトウェア制御 | |
| US20090037664A1 (en) | System and method for dynamically selecting the fetch path of data for improving processor performance | |
| US20020116584A1 (en) | Runahead allocation protection (rap) | |
| EP1012723A1 (en) | Cache hierarchy management with locality hints for different cache levels | |
| JPH08278886A (ja) | データ処理システムでの拡張システム管理操作のための方法およびシステム | |
| JP3236287B2 (ja) | マルチプロセッサシステム | |
| US6026471A (en) | Anticipating cache memory loader and method | |
| US11847055B2 (en) | Approach for reducing side effects of computation offload to memory | |
| JP2009093559A (ja) | プロセッサ、情報処理装置、プロセッサのキャッシュ制御方法 | |
| US9645825B2 (en) | Instruction cache with access locking | |
| EP0787326B1 (en) | System and method for processing of memory data and communication system comprising such system | |
| JP4792065B2 (ja) | データ記憶方法 | |
| JPH1055308A (ja) | キャッシュメモリ | |
| EP0482706B1 (en) | Method for intelligent data cache prefetching, and computer for implementing this method | |
| JPS60183652A (ja) | キヤツシユメモリ制御方法 | |
| JP2003177961A (ja) | 情報処理装置及び情報処理ユニット | |
| JPH07210463A (ja) | キャッシュメモリシステム及びデータプロセッサ | |
| JPS6059451A (ja) | コントロ−ルストレ−ジキヤツシユ方式 |