JPH08161226A - データ先読み制御方法,キャッシュ制御装置およびデータ処理装置 - Google Patents
データ先読み制御方法,キャッシュ制御装置およびデータ処理装置Info
- Publication number
- JPH08161226A JPH08161226A JP6307288A JP30728894A JPH08161226A JP H08161226 A JPH08161226 A JP H08161226A JP 6307288 A JP6307288 A JP 6307288A JP 30728894 A JP30728894 A JP 30728894A JP H08161226 A JPH08161226 A JP H08161226A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- address
- load instruction
- data
- load
- 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.)
- Withdrawn
Links
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
(57)【要約】
【目的】キャッシュメモリを使用するシステムにおける
データ先読み制御方法,キャッシュ制御装置およびデー
タ処理装置に関し,キャッシュ・ミスを少なくして命令
の実行性能を向上させることを目的とする。 【構成】ロード命令のアクセス対象となるデータの配置
パターンに応じたタイプによってロード命令の種類を分
け,その種類を命令のオペレーション・コードまたは命
令内のフィールドによって識別できるようにし,ロード
命令が先に発行したロード命令と関係付けられるとき,
先行するロード命令の処理時に,ロード命令の種類に応
じて後続するロード命令のロード・アドレスを予測し,
そのデータをキャッシュメモリに先読みする。
データ先読み制御方法,キャッシュ制御装置およびデー
タ処理装置に関し,キャッシュ・ミスを少なくして命令
の実行性能を向上させることを目的とする。 【構成】ロード命令のアクセス対象となるデータの配置
パターンに応じたタイプによってロード命令の種類を分
け,その種類を命令のオペレーション・コードまたは命
令内のフィールドによって識別できるようにし,ロード
命令が先に発行したロード命令と関係付けられるとき,
先行するロード命令の処理時に,ロード命令の種類に応
じて後続するロード命令のロード・アドレスを予測し,
そのデータをキャッシュメモリに先読みする。
Description
【0001】
【産業上の利用分野】本発明は,キャッシュ・ミスをで
きるだけ少なくするために,ロード命令のタイプに応じ
てデータをキャッシュメモリ内に先読みするデータ先読
み制御方法,キャッシュ制御装置およびデータ処理装置
に関するものである。
きるだけ少なくするために,ロード命令のタイプに応じ
てデータをキャッシュメモリ内に先読みするデータ先読
み制御方法,キャッシュ制御装置およびデータ処理装置
に関するものである。
【0002】計算機システムでは,プロセッサがメモリ
系に比べて,相対的に速くなっていることから,プロセ
ッサにデータを滞りなく供給することがより重要になっ
ている。そのため,高速にアクセスすることのできるキ
ャッシュメモリが多く用いられるようになってきたが,
キャッシュメモリを有効に利用するためには,できるだ
けキャッシュ・ミスが起きないようにする技術が必要と
される。
系に比べて,相対的に速くなっていることから,プロセ
ッサにデータを滞りなく供給することがより重要になっ
ている。そのため,高速にアクセスすることのできるキ
ャッシュメモリが多く用いられるようになってきたが,
キャッシュメモリを有効に利用するためには,できるだ
けキャッシュ・ミスが起きないようにする技術が必要と
される。
【0003】
【従来の技術】計算機において,ロード(load)命
令によりメモリから読み出すデータは,メモリ上にラン
ダムに配置されている場合もあるが,ある定型的なパタ
ーンで配置されている場合もある。特に,プログラムの
ループにより,同じ命令で繰り返し処理するようなデー
タは一定のパターンでメモリ上に配置されていることが
多い。従来,このようなメモリ上におけるデータの配置
パターンによってキャッシュメモリに自動的にデータを
先読みすることは行われていなかった。
令によりメモリから読み出すデータは,メモリ上にラン
ダムに配置されている場合もあるが,ある定型的なパタ
ーンで配置されている場合もある。特に,プログラムの
ループにより,同じ命令で繰り返し処理するようなデー
タは一定のパターンでメモリ上に配置されていることが
多い。従来,このようなメモリ上におけるデータの配置
パターンによってキャッシュメモリに自動的にデータを
先読みすることは行われていなかった。
【0004】
【発明が解決しようとする課題】普通のロード命令で
は,ロード処理が完了するまで次の命令の実行を行うこ
とができないので,キャッシュ・ミスが起きたときに
は,データがメモリからキャッシュに読み出されるまで
の間,命令実行は次に進まなくなり,性能を上げること
はできない。このように,データがメモリからキャッシ
ュメモリに読み出されるまでの間,命令実行が次に進ま
ないことによる性能の低下は,キャッシュ・ミスによる
ペナルティと呼ばれている。例えば,下記の命令群の例
で,命令(4) がキャッシュ・ミスを起こせば命令(5) の
実行は,キャッシュメモリにデータの読み込みが完了す
るまで待たされる。
は,ロード処理が完了するまで次の命令の実行を行うこ
とができないので,キャッシュ・ミスが起きたときに
は,データがメモリからキャッシュに読み出されるまで
の間,命令実行は次に進まなくなり,性能を上げること
はできない。このように,データがメモリからキャッシ
ュメモリに読み出されるまでの間,命令実行が次に進ま
ないことによる性能の低下は,キャッシュ・ミスによる
ペナルティと呼ばれている。例えば,下記の命令群の例
で,命令(4) がキャッシュ・ミスを起こせば命令(5) の
実行は,キャッシュメモリにデータの読み込みが完了す
るまで待たされる。
【0005】命令(1) :add R4,R2,R3 命令(2) :cmp R3,0 命令(3) :bzero LABEL 命令(4) :ld [R3+offset],R1 命令(5) :add R1,R4,R3 ここで,R1〜R4はレジスタ,“add X,Y,Z”は(X
+Y)をZに設定する加算命令,cmpは比較命令,b
zeroは前出の命令の比較結果が等しいときにオペラ
ンドのラベル(LABEL)に分岐する分岐命令,ldは第1
オペランドで指定されたメモリ上(この例ではメモリア
ドレスはレジスタR3の値をベースとしてそれにオフセ
ット(offset)値を加えた値)のデータを第2オペラン
ドへ読み込むロード命令を表している。
+Y)をZに設定する加算命令,cmpは比較命令,b
zeroは前出の命令の比較結果が等しいときにオペラ
ンドのラベル(LABEL)に分岐する分岐命令,ldは第1
オペランドで指定されたメモリ上(この例ではメモリア
ドレスはレジスタR3の値をベースとしてそれにオフセ
ット(offset)値を加えた値)のデータを第2オペラン
ドへ読み込むロード命令を表している。
【0006】ところで,キャッシュ・ミスを起こすこと
が多い場合として,次の2つの状態が挙げられる。 リスト・アクセス(list access) ロードしたデータをベース・アドレスとして,さらにロ
ードを行うアクセスである。
が多い場合として,次の2つの状態が挙げられる。 リスト・アクセス(list access) ロードしたデータをベース・アドレスとして,さらにロ
ードを行うアクセスである。
【0007】ストライド・アクセス(stride
access) ループ内で,小さくないストライドでデータを読み出す
アクセスである。図7にリスト・アクセスとストライド
・アクセスの例を示す。
access) ループ内で,小さくないストライドでデータを読み出す
アクセスである。図7にリスト・アクセスとストライド
・アクセスの例を示す。
【0008】リスト・アクセスは,例えば図7(A)に
示すように,領域A1の先頭から所定のオフセットだけ
離れた位置に,次の領域A2の先頭アドレスが格納さ
れ,領域A2の先頭から同じオフセットだけ離れた位置
に,次の領域A3の先頭アドレスが格納され,…という
ように,データがメモリ上に配置されている場合のアク
セスであって,各領域からアドレスをロード命令で読み
出して,順次,次の領域へアクセスする。
示すように,領域A1の先頭から所定のオフセットだけ
離れた位置に,次の領域A2の先頭アドレスが格納さ
れ,領域A2の先頭から同じオフセットだけ離れた位置
に,次の領域A3の先頭アドレスが格納され,…という
ように,データがメモリ上に配置されている場合のアク
セスであって,各領域からアドレスをロード命令で読み
出して,順次,次の領域へアクセスする。
【0009】また,ストライド・アクセスでは,例えば
図7(B)に示すように,メモリ上に一定のストライド
長で配置されたデータD1,D2,…を,順次,プログ
ラム・ループにより同じロード命令で読み出して処理し
ていく。
図7(B)に示すように,メモリ上に一定のストライド
長で配置されたデータD1,D2,…を,順次,プログ
ラム・ループにより同じロード命令で読み出して処理し
ていく。
【0010】このようなメモリ上のデータ・アクセス
は,比較的多く現れるので,これらのケースにおけるキ
ャッシュ・ミスを削減すれば,命令の実行性能は向上す
る。本発明は上記問題点の解決を図り,アクセスするデ
ータを予測して事前にそのデータをキャッシュメモリに
先読みすることにより,命令の実行性能を向上させるこ
とを目的とする。
は,比較的多く現れるので,これらのケースにおけるキ
ャッシュ・ミスを削減すれば,命令の実行性能は向上す
る。本発明は上記問題点の解決を図り,アクセスするデ
ータを予測して事前にそのデータをキャッシュメモリに
先読みすることにより,命令の実行性能を向上させるこ
とを目的とする。
【0011】
【課題を解決するための手段】図1は本発明の原理説明
図である。図中,10は命令をフェッチして実行する処
理装置(CPU),20は識別情報生成装置,21は命
令中のIDから関係するロード命令の組を識別する内部
idを生成する組の識別情報生成手段,22は命令中の
IDに対応する内部idを記憶するID記憶手段(以
下,ID表という),23は内部idとロード命令の種
類(以下,Typeという)を通知する検索・通知手
段,30はキャッシュ制御装置,31は関係するロード
命令の組ごとに各組における後続するロード命令が使用
する予測アドレス情報を記憶する関係アドレス記憶手段
(以下,RAT表という),32は予測アドレスを生成
する予測アドレス生成手段,33は予測アドレスのオフ
セットを修正するオフセット修正手段,34はキャッシ
ュメモリのアクセス制御を行うキャッシュ制御手段,4
0は高速アクセス可能なキャッシュメモリ,41は命令
およびデータが格納されるメモリ(主記憶装置)を表
す。
図である。図中,10は命令をフェッチして実行する処
理装置(CPU),20は識別情報生成装置,21は命
令中のIDから関係するロード命令の組を識別する内部
idを生成する組の識別情報生成手段,22は命令中の
IDに対応する内部idを記憶するID記憶手段(以
下,ID表という),23は内部idとロード命令の種
類(以下,Typeという)を通知する検索・通知手
段,30はキャッシュ制御装置,31は関係するロード
命令の組ごとに各組における後続するロード命令が使用
する予測アドレス情報を記憶する関係アドレス記憶手段
(以下,RAT表という),32は予測アドレスを生成
する予測アドレス生成手段,33は予測アドレスのオフ
セットを修正するオフセット修正手段,34はキャッシ
ュメモリのアクセス制御を行うキャッシュ制御手段,4
0は高速アクセス可能なキャッシュメモリ,41は命令
およびデータが格納されるメモリ(主記憶装置)を表
す。
【0012】本発明におけるロード命令の命令形式は,
例えば図1(A)に示すようになっており,命令の種類
を示すオペレーション(OP)コードおよび一般のオペ
ランドに加えて,ロード命令のアクセス対象となるデー
タの配置パターンに関係して定められたロード命令の種
類を示すTypeフィールドと,先行するロード命令と
それに関係する後続するロード命令の組を示す識別子が
設定されるIDフィールドとを持つ。なお,Typeフ
ィールドを設ける代わりに,OPコードでロード命令の
Typeを区別するようにしてもよい。
例えば図1(A)に示すようになっており,命令の種類
を示すオペレーション(OP)コードおよび一般のオペ
ランドに加えて,ロード命令のアクセス対象となるデー
タの配置パターンに関係して定められたロード命令の種
類を示すTypeフィールドと,先行するロード命令と
それに関係する後続するロード命令の組を示す識別子が
設定されるIDフィールドとを持つ。なお,Typeフ
ィールドを設ける代わりに,OPコードでロード命令の
Typeを区別するようにしてもよい。
【0013】CPU10は,図1(A)に示すような形
式のロード命令を実行するとき,オペランドで指定され
たアクセス・アドレスを,キャッシュ制御装置30へ送
るとともにTypeフィールドおよびIDフィールドの
値を識別情報生成装置20へ送る。識別情報生成装置2
0における組の識別情報生成手段21は,IDフィール
ドの値をもとに,各ロード命令の組を識別できる識別情
報(以下,これを内部idという)を生成し,ID表2
2に登録する。検索・通知手段23は,組の識別情報生
成手段21によって新たに生成した内部id,またはI
D表22を検索して得た内部idと,Typeとをキャ
ッシュ制御装置30へ送る。
式のロード命令を実行するとき,オペランドで指定され
たアクセス・アドレスを,キャッシュ制御装置30へ送
るとともにTypeフィールドおよびIDフィールドの
値を識別情報生成装置20へ送る。識別情報生成装置2
0における組の識別情報生成手段21は,IDフィール
ドの値をもとに,各ロード命令の組を識別できる識別情
報(以下,これを内部idという)を生成し,ID表2
2に登録する。検索・通知手段23は,組の識別情報生
成手段21によって新たに生成した内部id,またはI
D表22を検索して得た内部idと,Typeとをキャ
ッシュ制御装置30へ送る。
【0014】キャッシュ制御装置30において,予測ア
ドレス生成手段32は,識別情報生成装置20から通知
された内部idとTypeとをもとに,後続する同じ組
のロード命令において使用するアドレスを予測してRA
T(Related Access Table)表31に設定する。
ドレス生成手段32は,識別情報生成装置20から通知
された内部idとTypeとをもとに,後続する同じ組
のロード命令において使用するアドレスを予測してRA
T(Related Access Table)表31に設定する。
【0015】また,キャッシュ制御手段34は,予測ア
ドレス生成手段32によって生成したアドレスのデータ
を,後続するロード命令の実行に先立ってメモリ41か
らキャッシュメモリ40に読み込む。
ドレス生成手段32によって生成したアドレスのデータ
を,後続するロード命令の実行に先立ってメモリ41か
らキャッシュメモリ40に読み込む。
【0016】RAT表31に記憶する予測アドレスは,
ベースとなるアドレスとそのベース・アドレスに加算さ
れるオフセットとからなる。オフセット修正手段33
は,後続するロード命令の実行時にRAT表31が記憶
するオフセットをチェックし,正しいオフセットが設定
されていない場合には正しい値に修正する。
ベースとなるアドレスとそのベース・アドレスに加算さ
れるオフセットとからなる。オフセット修正手段33
は,後続するロード命令の実行時にRAT表31が記憶
するオフセットをチェックし,正しいオフセットが設定
されていない場合には正しい値に修正する。
【0017】
【作用】本発明によれば,予測アドレス生成手段32に
よって後続するロード命令が使用するロード・アドレス
を予測し,そのロード命令の実行に先立ってキャッシュ
制御手段34により,データの先読みを行うので,後続
するロード命令がアクセスするデータのキャッシュメモ
リ40におけるヒット率が上がり,命令の実行性能が向
上する。先行するロード命令と後続するロード命令と
は,ループによって繰り返し実行される同じロード命令
であってもよい。
よって後続するロード命令が使用するロード・アドレス
を予測し,そのロード命令の実行に先立ってキャッシュ
制御手段34により,データの先読みを行うので,後続
するロード命令がアクセスするデータのキャッシュメモ
リ40におけるヒット率が上がり,命令の実行性能が向
上する。先行するロード命令と後続するロード命令と
は,ループによって繰り返し実行される同じロード命令
であってもよい。
【0018】ロード命令内に,関係するロード命令を識
別するためのIDフィールドを設けることにより,コン
パイラ等によって事前に関係するロード命令の組を検出
して実行の最適化を図ることができる。
別するためのIDフィールドを設けることにより,コン
パイラ等によって事前に関係するロード命令の組を検出
して実行の最適化を図ることができる。
【0019】また,オフセット修正手段33により,後
続するロード命令の予測アドレスが正しかったかどうか
を検査し,正しくない場合にはRAT表31におけるオ
フセット値を修正することにより,実際のロード・アド
レスを学習して正しい予測アドレスとすることができ
る。
続するロード命令の予測アドレスが正しかったかどうか
を検査し,正しくない場合にはRAT表31におけるオ
フセット値を修正することにより,実際のロード・アド
レスを学習して正しい予測アドレスとすることができ
る。
【0020】識別情報生成装置20によって,ロード命
令のIDフィールドで指定された識別子を,内部で一意
に識別できる内部idに変更し,その内部idに基づい
てアドレスの予測を行うことにより,プログラム全体の
IDフィールドの識別子の総数が多い場合でも,少ない
メモリまたはレジスタ等で組の識別情報を管理すること
ができる。
令のIDフィールドで指定された識別子を,内部で一意
に識別できる内部idに変更し,その内部idに基づい
てアドレスの予測を行うことにより,プログラム全体の
IDフィールドの識別子の総数が多い場合でも,少ない
メモリまたはレジスタ等で組の識別情報を管理すること
ができる。
【0021】
【実施例】図2は本発明の一実施例のブロック図であ
る。図2において,図1と同符号のものは図1に示すも
のに対応し,11は実行する命令アドレスを保持するプ
ログラム・カウンタ(PC),12は実行する命令のコ
ードを保持する命令バッファ,24はID表22を検索
し既登録の内部idをキャッシュ制御装置30へ通知す
るID検索部,25はロード命令の種類を示すType
を検査し,その検査結果に従ってID表22の検索また
は内部idの生成を指示するType検査部,26はI
Dフィールドの値に対応する内部idを生成する内部i
d生成部,27は生成した内部idをID表22に登録
するID登録部,35は通知された内部idによってR
AT表31を検索するRAT検索部,36はロード命令
の種類を示すTypeを検査するType検査部,37
はロード命令のTypeに従って後に実行するロード命
令の予測アドレスを生成する予測アドレス生成部,38
はRAT表31のオフセットを修正するオフセット修正
部,39はCPU10からのアクセス・アドレスおよび
予測アドレス生成部37が予測したアドレスに従ってメ
モリへのアクセスを行うキャッシュ制御部を表す。
る。図2において,図1と同符号のものは図1に示すも
のに対応し,11は実行する命令アドレスを保持するプ
ログラム・カウンタ(PC),12は実行する命令のコ
ードを保持する命令バッファ,24はID表22を検索
し既登録の内部idをキャッシュ制御装置30へ通知す
るID検索部,25はロード命令の種類を示すType
を検査し,その検査結果に従ってID表22の検索また
は内部idの生成を指示するType検査部,26はI
Dフィールドの値に対応する内部idを生成する内部i
d生成部,27は生成した内部idをID表22に登録
するID登録部,35は通知された内部idによってR
AT表31を検索するRAT検索部,36はロード命令
の種類を示すTypeを検査するType検査部,37
はロード命令のTypeに従って後に実行するロード命
令の予測アドレスを生成する予測アドレス生成部,38
はRAT表31のオフセットを修正するオフセット修正
部,39はCPU10からのアクセス・アドレスおよび
予測アドレス生成部37が予測したアドレスに従ってメ
モリへのアクセスを行うキャッシュ制御部を表す。
【0022】ロード命令には,Typeフィールドが設
けられている。コンパイラにより,例えばリスト・アク
セス,ストライド・アクセス,その他の種類にロード命
令を分類し,それらの命令のTypeフィールドの値を
種類別に設定する。ただし,リスト・アクセスにおける
先行するロード命令のType(これをld1とする)
と,関係する後続ロード命令のType(これをld2
とする)とは別の種類とする。命令のオペレーション・
コードの中に,使用されていない部分があれば,Typ
eフィールドを独立に設ける代わりに,種類毎に異なる
オペレーション・コードを割り当て,種類をオペレーシ
ョン・コード中にエンコードしてもよい。
けられている。コンパイラにより,例えばリスト・アク
セス,ストライド・アクセス,その他の種類にロード命
令を分類し,それらの命令のTypeフィールドの値を
種類別に設定する。ただし,リスト・アクセスにおける
先行するロード命令のType(これをld1とする)
と,関係する後続ロード命令のType(これをld2
とする)とは別の種類とする。命令のオペレーション・
コードの中に,使用されていない部分があれば,Typ
eフィールドを独立に設ける代わりに,種類毎に異なる
オペレーション・コードを割り当て,種類をオペレーシ
ョン・コード中にエンコードしてもよい。
【0023】識別情報生成装置20は,ロード命令の組
を識別するための機構である。組を識別するための簡単
な方法としては,例えば次の方法が考えられる。ロード
命令の各組に内部idを付与する。内部idとして,例
えばld1のロード命令の命令アドレスを使用し,ld
2の命令アドレスから対応するld1の命令アドレスが
索引できるような命令アドレス表をコンパイラが出力す
る。識別情報生成装置20は,ld1のロード命令実行
時には,その命令アドレスを内部idとしてキャッシュ
制御装置30へ送り,ld2のロード命令実行時には,
動的に上記命令アドレス表を引いて,対応するld1の
命令アドレスを求め,それを内部idとしてキャッシュ
制御装置30へ送る。この方法が一つの実現方法である
が,これでは,識別情報生成装置20が動的に参照する
命令アドレス表が大きい場合など,内部idの送出が間
に合わなくなるおそれがある。
を識別するための機構である。組を識別するための簡単
な方法としては,例えば次の方法が考えられる。ロード
命令の各組に内部idを付与する。内部idとして,例
えばld1のロード命令の命令アドレスを使用し,ld
2の命令アドレスから対応するld1の命令アドレスが
索引できるような命令アドレス表をコンパイラが出力す
る。識別情報生成装置20は,ld1のロード命令実行
時には,その命令アドレスを内部idとしてキャッシュ
制御装置30へ送り,ld2のロード命令実行時には,
動的に上記命令アドレス表を引いて,対応するld1の
命令アドレスを求め,それを内部idとしてキャッシュ
制御装置30へ送る。この方法が一つの実現方法である
が,これでは,識別情報生成装置20が動的に参照する
命令アドレス表が大きい場合など,内部idの送出が間
に合わなくなるおそれがある。
【0024】そこで,ロード命令中にMビットのIDフ
ィールドを設け,それを次のように使用する。ある組の
ld1からld2までのパスを,その組のライフ・タイ
ムと考える。コンパイラにより,レジスタ・アロケーシ
ョンの方法と同様の方法によって,ライフ・タイムが重
なる組には,別のIDが割り付けられるように,組のI
Dを決める。必要なIDがIDフィールドの許す値より
大きくなってしまう場合には,最もキャッシュ・ミスを
起こしそうにもない,もしくはld1とld2の距離が
近過ぎて先読みしても効果がなさそうな組を,通常のロ
ード命令として扱う。
ィールドを設け,それを次のように使用する。ある組の
ld1からld2までのパスを,その組のライフ・タイ
ムと考える。コンパイラにより,レジスタ・アロケーシ
ョンの方法と同様の方法によって,ライフ・タイムが重
なる組には,別のIDが割り付けられるように,組のI
Dを決める。必要なIDがIDフィールドの許す値より
大きくなってしまう場合には,最もキャッシュ・ミスを
起こしそうにもない,もしくはld1とld2の距離が
近過ぎて先読みしても効果がなさそうな組を,通常のロ
ード命令として扱う。
【0025】識別情報生成装置20で付与する内部id
として,ld1のロード命令の命令アドレスを使用す
る。そのため,2M 個のエントリを持つ図3(A)に示
すようなID表22を用意する。識別情報生成装置20
は,ld1のロード命令実行時に,CPU10から命令
中のIDフィールドの値iを受け,ID表22の第iエ
ントリにld1の命令アドレスを書き込み,第iエント
リの内容を内部idとして,キャッシュ制御装置30へ
送る。ld2のロード命令実行時には,命令中のIDフ
ィールドの値jから,ID表22の第jエントリの値を
内部idとして,キャッシュ制御装置30へ送る。
として,ld1のロード命令の命令アドレスを使用す
る。そのため,2M 個のエントリを持つ図3(A)に示
すようなID表22を用意する。識別情報生成装置20
は,ld1のロード命令実行時に,CPU10から命令
中のIDフィールドの値iを受け,ID表22の第iエ
ントリにld1の命令アドレスを書き込み,第iエント
リの内容を内部idとして,キャッシュ制御装置30へ
送る。ld2のロード命令実行時には,命令中のIDフ
ィールドの値jから,ID表22の第jエントリの値を
内部idとして,キャッシュ制御装置30へ送る。
【0026】ところで,キャッシュ制御装置30中にす
べてのロード命令の組の情報を保持しておくのは現実的
ではない。そのため,図3(B)に示すようなRAT表
31を設ける。RAT表31は,Nエントリだけの領域
を持ち,そのN個のエントリを,例えばLRU方式で使
い回す。すなわち,RAT表31の各エントリには,そ
のエントリを使用している内部idを記憶するフィール
ドを設け,あるld1のロード命令を実行するときに
は,RAT表31にその内部idを持つエントリがある
かどうかを調べる。あればそれを使用する。なければ最
も昔に使用されたエントリを,この組のために使用する
ことにし,そのエントリの内部idのフィールドを新し
い内部idに書き換える。
べてのロード命令の組の情報を保持しておくのは現実的
ではない。そのため,図3(B)に示すようなRAT表
31を設ける。RAT表31は,Nエントリだけの領域
を持ち,そのN個のエントリを,例えばLRU方式で使
い回す。すなわち,RAT表31の各エントリには,そ
のエントリを使用している内部idを記憶するフィール
ドを設け,あるld1のロード命令を実行するときに
は,RAT表31にその内部idを持つエントリがある
かどうかを調べる。あればそれを使用する。なければ最
も昔に使用されたエントリを,この組のために使用する
ことにし,そのエントリの内部idのフィールドを新し
い内部idに書き換える。
【0027】また,RAT表31には,各内部idごと
にベース・アドレスとオフセットの組からなる予測アド
レスを記憶する。ベース・アドレスのフィールド(ba
seフィールドという)には,先行するロード命令でレ
ジスタに読み出した値が設定される。オフセットのフィ
ールド(offsetフィールドという)は,初期値が
“0”であり,もし,後続するロード命令においてベー
ス・アドレスに加算する実際のオフセットが“0”でな
い場合には,後続するロード命令のオフセットによって
修正される。すなわち,baseフィールドの値と,l
d2の命令のアクセス・アドレスとの差が,offse
tフィールドに設定される。
にベース・アドレスとオフセットの組からなる予測アド
レスを記憶する。ベース・アドレスのフィールド(ba
seフィールドという)には,先行するロード命令でレ
ジスタに読み出した値が設定される。オフセットのフィ
ールド(offsetフィールドという)は,初期値が
“0”であり,もし,後続するロード命令においてベー
ス・アドレスに加算する実際のオフセットが“0”でな
い場合には,後続するロード命令のオフセットによって
修正される。すなわち,baseフィールドの値と,l
d2の命令のアクセス・アドレスとの差が,offse
tフィールドに設定される。
【0028】図4は,本発明が適用されるロード命令を
含む命令コード列の例を示している。図4(A)はリス
ト・アクセスを行う命令コード列の例,図4(B)はス
トライド・アクセスを行う命令コード列の例である。
含む命令コード列の例を示している。図4(A)はリス
ト・アクセスを行う命令コード列の例,図4(B)はス
トライド・アクセスを行う命令コード列の例である。
【0029】Riは第iレジスタ,ldは第1オペラン
ドで指定されたメモリ上のデータを第2オペランドで指
定されたレジスタに読み込むロード命令,“add X,Y,
Z”は(X+Y)をZに設定する加算命令,cmpは比
較命令,blは前出の比較命令において第1オペランド
が第2オペランドの値より小さいときにオペランドで指
定されたラベル位置(LABEL)に分岐する分岐命令,bp
lusは前出の命令における比較結果が正のときにオペ
ランドで指定されたラベル位置に分岐する命令,cal
lは第1オペランドで指定された関数またはサブルーチ
ンを呼び出す命令を表している。
ドで指定されたメモリ上のデータを第2オペランドで指
定されたレジスタに読み込むロード命令,“add X,Y,
Z”は(X+Y)をZに設定する加算命令,cmpは比
較命令,blは前出の比較命令において第1オペランド
が第2オペランドの値より小さいときにオペランドで指
定されたラベル位置(LABEL)に分岐する分岐命令,bp
lusは前出の命令における比較結果が正のときにオペ
ランドで指定されたラベル位置に分岐する命令,cal
lは第1オペランドで指定された関数またはサブルーチ
ンを呼び出す命令を表している。
【0030】ロード命令の種類を示すTypeとして
は,ここではリスト・アクセスにおける先行ロード命
令(例えば図4の命令(11)) と,それに関係する後続
のロード命令(例えば図4の命令(15)) と,ストライ
ド・アクセスのために繰り返し実行されるロード命令
(例えば図4の命令(23))の3つのタイプを考える。
とのタイプはペアになっている。以下の説明では,
のタイプのロード命令をld1,のタイプのロード命
令をld2と表す。
は,ここではリスト・アクセスにおける先行ロード命
令(例えば図4の命令(11)) と,それに関係する後続
のロード命令(例えば図4の命令(15)) と,ストライ
ド・アクセスのために繰り返し実行されるロード命令
(例えば図4の命令(23))の3つのタイプを考える。
とのタイプはペアになっている。以下の説明では,
のタイプのロード命令をld1,のタイプのロード命
令をld2と表す。
【0031】図5は,図2に示す実施例の装置の制御フ
ローを示している。図2に示す識別情報生成装置20
は,図5(A)に示すように,CPU10からロード命
令におけるTypeフィールドとIDフィールドの値を
受け取ると,Type検査部25によってTypeを調
べ,以下の制御を行う。
ローを示している。図2に示す識別情報生成装置20
は,図5(A)に示すように,CPU10からロード命
令におけるTypeフィールドとIDフィールドの値を
受け取ると,Type検査部25によってTypeを調
べ,以下の制御を行う。
【0032】(a) まず,Typeがld1のリスト・ア
クセスまたはストライド・アクセスの場合,内部id生
成部26およびID登録部27により,IDフィールド
の値によって定まるID表22のエントリに,プログラ
ム・カウンタ11から得た命令アドレスを登録する。ま
た,プログラム・カウンタ11から得た命令アドレスを
内部idとして,キャッシュ制御装置30へ送る。
クセスまたはストライド・アクセスの場合,内部id生
成部26およびID登録部27により,IDフィールド
の値によって定まるID表22のエントリに,プログラ
ム・カウンタ11から得た命令アドレスを登録する。ま
た,プログラム・カウンタ11から得た命令アドレスを
内部idとして,キャッシュ制御装置30へ送る。
【0033】(b) Typeがld2のリスト・アクセス
の場合,ID検索部24によって,IDフィールドの値
をもとにID表22を検索し,ID表22の該当エント
リの内容を内部idとしてキャッシュ制御装置30へ送
る。
の場合,ID検索部24によって,IDフィールドの値
をもとにID表22を検索し,ID表22の該当エント
リの内容を内部idとしてキャッシュ制御装置30へ送
る。
【0034】(c) その他の場合,何もしない。 また,図2に示すキャッシュ制御装置30は,特定のT
ypeのロード命令の実行時に,図5(B)に示すよう
な制御を行う。まず,識別情報生成装置20からTyp
eと内部idを受け取り,RAT検索部35により,内
部idでRAT表31を検索する。また,Type検査
部36によってTypeを調べ,Typeに応じて以下
の制御を行う。
ypeのロード命令の実行時に,図5(B)に示すよう
な制御を行う。まず,識別情報生成装置20からTyp
eと内部idを受け取り,RAT検索部35により,内
部idでRAT表31を検索する。また,Type検査
部36によってTypeを調べ,Typeに応じて以下
の制御を行う。
【0035】(a) Typeがld1のリスト・アクセス
の場合,予測アドレス生成部37によって,ロード命令
の結果を,RAT表31の該当する内部idのbase
フィールドに書き込む。さらにその値にoffsetフ
ィールドの値を足したアドレスを予測アドレスとして,
そのアドレスのデータが,キャッシュメモリ40にある
かどうかを調べ,なければキャッシュメモリ40に読み
込む。ただし,不当なアドレスであっても割り込みは上
げない。データがあれば先読みはしない。
の場合,予測アドレス生成部37によって,ロード命令
の結果を,RAT表31の該当する内部idのbase
フィールドに書き込む。さらにその値にoffsetフ
ィールドの値を足したアドレスを予測アドレスとして,
そのアドレスのデータが,キャッシュメモリ40にある
かどうかを調べ,なければキャッシュメモリ40に読み
込む。ただし,不当なアドレスであっても割り込みは上
げない。データがあれば先読みはしない。
【0036】また,ストライド・アクセスの場合には,
RAT表31のbaseフィールドに,そのアクセス・
アドレスを入れ,先読みするアドレスは, (ldのアクセス・アドレス)+RAT[id].offset とする。そして,offsetフィールドには, RAT[id].offset:=(ldのアクセス・アドレス)−RAT[i
d].base のように設定する。ここで,RAT[id].offsetは,該当す
る内部idのoffsetフィールドの値を表し,RAT
[id].baseはbaseフィールドの値を表す。
RAT表31のbaseフィールドに,そのアクセス・
アドレスを入れ,先読みするアドレスは, (ldのアクセス・アドレス)+RAT[id].offset とする。そして,offsetフィールドには, RAT[id].offset:=(ldのアクセス・アドレス)−RAT[i
d].base のように設定する。ここで,RAT[id].offsetは,該当す
る内部idのoffsetフィールドの値を表し,RAT
[id].baseはbaseフィールドの値を表す。
【0037】(b) Typeがld2のリスト・アクセス
の場合,オフセット修正部38によって,CPU10か
ら得たアクセス・アドレスとRAT表31のベース・ア
ドレスとからRAT表31に記憶しているオフセットを
修正する。すなわち,RAT表31の該当する内部id
のoffsetフィールドに,次の値を書き込む。
の場合,オフセット修正部38によって,CPU10か
ら得たアクセス・アドレスとRAT表31のベース・ア
ドレスとからRAT表31に記憶しているオフセットを
修正する。すなわち,RAT表31の該当する内部id
のoffsetフィールドに,次の値を書き込む。
【0038】RAT[id].offset:=(ld2のアクセス・アドレ
ス)−RAT[id].base (c) その他の場合,何もしない。 以上の制御を,図4に示す命令コード列の例に従って詳
述する。
ス)−RAT[id].base (c) その他の場合,何もしない。 以上の制御を,図4に示す命令コード列の例に従って詳
述する。
【0039】図4(A)に示すリスト・アクセスの実行
では,命令(11)で読み出したデータ(レジスタR0に入
っている)を,後続するロード命令(15)で使用してい
る。このとき,命令(15)では,一般にキャッシュ・ミス
が起こりやすい。
では,命令(11)で読み出したデータ(レジスタR0に入
っている)を,後続するロード命令(15)で使用してい
る。このとき,命令(15)では,一般にキャッシュ・ミス
が起こりやすい。
【0040】また,図4(B)に示すストライド・アク
セスの命令コード列は,レジスタR1の値が0になるま
で,命令(21)〜命令(26)を繰り返し実行するループ構造
になっている。命令(21)では,レジスタR1 の値を引数
として,関数funcを呼び出す。関数funcでは,
その結果をレジスタR0に格納するものとする。そし
て,命令(23)では,ループが一周する毎に, 前にアクセ
スしたアドレスをベースとして,それからレジスタR0
の値だけずれたアドレスをアクセスする。このような場
合も,一般に命令(23)でキャッシュ・ミスが起こりやす
い。
セスの命令コード列は,レジスタR1の値が0になるま
で,命令(21)〜命令(26)を繰り返し実行するループ構造
になっている。命令(21)では,レジスタR1 の値を引数
として,関数funcを呼び出す。関数funcでは,
その結果をレジスタR0に格納するものとする。そし
て,命令(23)では,ループが一周する毎に, 前にアクセ
スしたアドレスをベースとして,それからレジスタR0
の値だけずれたアドレスをアクセスする。このような場
合も,一般に命令(23)でキャッシュ・ミスが起こりやす
い。
【0041】本発明では,これらの場合において,ベー
スとなるアドレスをロードしてくる命令(11)またはベー
スとなるアドレスを使用する命令(23)の命令実行時に,
後続する命令(15)や,次のループで実行する命令(23)の
アドレスを,キャッシュ制御装置30において予測し,
そのアドレスのデータをキャッシュメモリ40に事前に
持ってくるようにする。これにより,命令(15)や命令(1
5)の実行において,キャッシュ・ミスによるオーバーヘ
ッドを低減することができるようになる。
スとなるアドレスをロードしてくる命令(11)またはベー
スとなるアドレスを使用する命令(23)の命令実行時に,
後続する命令(15)や,次のループで実行する命令(23)の
アドレスを,キャッシュ制御装置30において予測し,
そのアドレスのデータをキャッシュメモリ40に事前に
持ってくるようにする。これにより,命令(15)や命令(1
5)の実行において,キャッシュ・ミスによるオーバーヘ
ッドを低減することができるようになる。
【0042】以下,リスト・アクセスの場合の例を中心
に説明する。ストライド・アクセスの場合も同様であ
る。 (a) ベース・アドレスをロードしてくる命令(11)(Ty
peがld1の命令)と,それを使用してロードする命
令(15)(Typeがld2の命令)の組をコンパイラに
よって抽出する。コンパイラは,これらの各組毎に一意
のIDを付与する。また,ロード命令中のTypeフィ
ールドにリスト・アクセスのld1およびリスト・アク
セスのld2であることを示す識別情報を設定する。
に説明する。ストライド・アクセスの場合も同様であ
る。 (a) ベース・アドレスをロードしてくる命令(11)(Ty
peがld1の命令)と,それを使用してロードする命
令(15)(Typeがld2の命令)の組をコンパイラに
よって抽出する。コンパイラは,これらの各組毎に一意
のIDを付与する。また,ロード命令中のTypeフィ
ールドにリスト・アクセスのld1およびリスト・アク
セスのld2であることを示す識別情報を設定する。
【0043】(b) 実行時に,識別情報生成装置20は,
ロード命令のIDフィールドの値に対応する組の内部i
d(この例ではTypeがld1の命令アドレス)を求
める。
ロード命令のIDフィールドの値に対応する組の内部i
d(この例ではTypeがld1の命令アドレス)を求
める。
【0044】(c) キャッシュ制御装置30のRAT表3
1には,baseフィールドとoffsetフィールド
とを設け,baseフィールドには,ld1のロード命
令でロードしてきた値を設定する。offsetフィー
ルドには,ベース・アドレスとld2のアクセス・アド
レスとの差を設定する。
1には,baseフィールドとoffsetフィールド
とを設け,baseフィールドには,ld1のロード命
令でロードしてきた値を設定する。offsetフィー
ルドには,ベース・アドレスとld2のアクセス・アド
レスとの差を設定する。
【0045】(d) キャッシュ制御装置30には,ロード
命令の種類を示すTypeと,組を識別する内部idが
ロード命令の実行時に送られてくる。これに対し,キャ
ッシュ制御装置30は,以下の処理を行う。
命令の種類を示すTypeと,組を識別する内部idが
ロード命令の実行時に送られてくる。これに対し,キャ
ッシュ制御装置30は,以下の処理を行う。
【0046】Typeが通常(例えば0)ならば,従
来と同様な動作のみを行う。 Typeがリスト・アクセスのld1の場合には,次
の処理を行う。 (i) 通常のキャッシュ制御の他に,その内部idがRA
T表31内にあるかどうかを調べ,なければRAT表3
1から1エントリ取り出し,内部idフィールドに内部
idを書き込み,offsetフィールドを“0”にす
る。
来と同様な動作のみを行う。 Typeがリスト・アクセスのld1の場合には,次
の処理を行う。 (i) 通常のキャッシュ制御の他に,その内部idがRA
T表31内にあるかどうかを調べ,なければRAT表3
1から1エントリ取り出し,内部idフィールドに内部
idを書き込み,offsetフィールドを“0”にす
る。
【0047】(ii)ロード命令の結果をRAT表31の該
当する内部idのbaseフィールドに書き込む。 (iii) さらに,その値にoffsetフィールドの値を
足したアドレスがキャッシュメモリ40上にあるかどう
かを調べ,なければキャッシュメモリ40上に読み込
む。ただし,不当なアドレスであっても割り込みは上げ
ない。あれば何もしない。
当する内部idのbaseフィールドに書き込む。 (iii) さらに,その値にoffsetフィールドの値を
足したアドレスがキャッシュメモリ40上にあるかどう
かを調べ,なければキャッシュメモリ40上に読み込
む。ただし,不当なアドレスであっても割り込みは上げ
ない。あれば何もしない。
【0048】Typeがリスト・アクセスのld2の
場合には,次の処理を行う。 (i) 通常のキャッシュ制御の他に,RAT表31のその
組の内部idのoffsetフィールドに,次の値を書
き込む。
場合には,次の処理を行う。 (i) 通常のキャッシュ制御の他に,RAT表31のその
組の内部idのoffsetフィールドに,次の値を書
き込む。
【0049】RAT[id].offset:= (ld2のアクセス・アド
レス)−RAT[id].base RAT表31内に,その内部idがなければ書き込まな
い。なお,キャッシュ制御装置30は,Typeがスト
ライド・アクセスの場合には,次の処理を行う。
レス)−RAT[id].base RAT表31内に,その内部idがなければ書き込まな
い。なお,キャッシュ制御装置30は,Typeがスト
ライド・アクセスの場合には,次の処理を行う。
【0050】(i) 通常のキャッシュ制御の他に,その内
部idがRAT表31内にあるかどうかを調べ,なけれ
ばRAT表31から1エントリ取り出し,idフィール
ドに内部idを書き込み,offsetフィールドを
“0”にする。
部idがRAT表31内にあるかどうかを調べ,なけれ
ばRAT表31から1エントリ取り出し,idフィール
ドに内部idを書き込み,offsetフィールドを
“0”にする。
【0051】(ii)アクセス・アドレスをRAT表31の
baseフィールドに書き込む。 (iii) さらに,その値にoffsetフィールドの値を
足したアドレスがキャッシュメモリ40上にあるかどう
かを調べ,なければキャッシュメモリ40上に読み込
む。ただし,不当なアドレスであっても割り込みは上げ
ない。あれば何もしない。
baseフィールドに書き込む。 (iii) さらに,その値にoffsetフィールドの値を
足したアドレスがキャッシュメモリ40上にあるかどう
かを調べ,なければキャッシュメモリ40上に読み込
む。ただし,不当なアドレスであっても割り込みは上げ
ない。あれば何もしない。
【0052】図6の動作例説明図に従って,図4(A)
に示すリスト・アクセスの命令コード列の実行例を説明
する。メモリ41には,各アドレスに図6(A)に示す
ようなデータが格納されていたとする。また,図6
(B)に示すように,実行前の状態がレジスタR0=1
000,offset1=100,offset2=2
00であったとする。offset1およびoffse
t2はレジスタで指定される場合もあるが,ここでは説
明を簡単にするため定数であるとする。命令(11)の実行
前は,RAT表31の該当内部id(x)のbaseフ
ィールドおよびoffsetフィールドは,図6(C)
に示すように,共に“0”である。
に示すリスト・アクセスの命令コード列の実行例を説明
する。メモリ41には,各アドレスに図6(A)に示す
ようなデータが格納されていたとする。また,図6
(B)に示すように,実行前の状態がレジスタR0=1
000,offset1=100,offset2=2
00であったとする。offset1およびoffse
t2はレジスタで指定される場合もあるが,ここでは説
明を簡単にするため定数であるとする。命令(11)の実行
前は,RAT表31の該当内部id(x)のbaseフ
ィールドおよびoffsetフィールドは,図6(C)
に示すように,共に“0”である。
【0053】Typeがld1のロード命令(11)を実行
すると,レジスタR0が1000,offset1が1
00であるので,1100番地のデータ“1500”が
レジスタR0にロードされ,RAT表31は図6(D)
に示すように更新される。すなわち,baseフィール
ドに“1500”が格納される。また,(1500+
0)番地を予測アドレスとして,この番地のデータが,
キャッシュメモリ40に読み込まれる。なお,ここで読
み込まれたデータは,正しいオフセットがまだ設定され
ていないため不用データである。
すると,レジスタR0が1000,offset1が1
00であるので,1100番地のデータ“1500”が
レジスタR0にロードされ,RAT表31は図6(D)
に示すように更新される。すなわち,baseフィール
ドに“1500”が格納される。また,(1500+
0)番地を予測アドレスとして,この番地のデータが,
キャッシュメモリ40に読み込まれる。なお,ここで読
み込まれたデータは,正しいオフセットがまだ設定され
ていないため不用データである。
【0054】命令(12)〜命令(14)の実行の後,命令(15)
が実行されると,(1500+200)番地のデータ
“2000”がレジスタR0にロードされるとともに,
RAT表31のoffsetフィールドに,(1500
+200)−1500(現base値)=200が書き
込まれ,RAT表31は図6(E)に示すように修正さ
れる。
が実行されると,(1500+200)番地のデータ
“2000”がレジスタR0にロードされるとともに,
RAT表31のoffsetフィールドに,(1500
+200)−1500(現base値)=200が書き
込まれ,RAT表31は図6(E)に示すように修正さ
れる。
【0055】次に,例えばレジスタR0の値が“200
0”の状態で,再度,命令(11)が実行されると,(20
00+100)番地のデータ“3000”がレジスタR
0にロードされ,RAT表31のbaseフィールドに
その値“3000”が設定される。また,RAT表31
により予測された(3000+200)番地のデータ
“5000”がキャッシュメモリ40に先読みされる。
0”の状態で,再度,命令(11)が実行されると,(20
00+100)番地のデータ“3000”がレジスタR
0にロードされ,RAT表31のbaseフィールドに
その値“3000”が設定される。また,RAT表31
により予測された(3000+200)番地のデータ
“5000”がキャッシュメモリ40に先読みされる。
【0056】これにより,命令(15)の実行の際には,3
200番地のデータがキャッシュメモリ40に存在する
ので,キャッシュ・ヒットとなり,以後同様なデータの
先読みによってキャッシュ・ミスの発生が抑制されるこ
ととなる。
200番地のデータがキャッシュメモリ40に存在する
ので,キャッシュ・ヒットとなり,以後同様なデータの
先読みによってキャッシュ・ミスの発生が抑制されるこ
ととなる。
【0057】本発明の実施例として,リスト・アクセス
のTypeのld1とld2の命令が違う場合を説明し
たが,リスト・アクセスにおいて,ld1とld2が同
じ命令であることがある。このような場合に対してだ
け,処理をしたいならば,ロード命令にld1とld2
が一致した命令であることを示すフィールドを付けるだ
けで,先読みの処理が可能である。
のTypeのld1とld2の命令が違う場合を説明し
たが,リスト・アクセスにおいて,ld1とld2が同
じ命令であることがある。このような場合に対してだ
け,処理をしたいならば,ロード命令にld1とld2
が一致した命令であることを示すフィールドを付けるだ
けで,先読みの処理が可能である。
【0058】以上のように,本発明は,例えば次のよう
な点が従来技術と異なる。 ロード命令の命令形式にリスト・アクセスやストラ
イド・アクセスなどの種類を表すTypeフィールドが
設けられている。
な点が従来技術と異なる。 ロード命令の命令形式にリスト・アクセスやストラ
イド・アクセスなどの種類を表すTypeフィールドが
設けられている。
【0059】 またはの代わりに,リスト・アクセ
スやストライド・アクセスなどの種類別に命令のオペレ
ーション・コードが割り当てられている。 リスト・アクセスやストライド・アクセスのロード
命令の命令形式に,組となる命令を示すためのIDフィ
ールドが設けられている。
スやストライド・アクセスなどの種類別に命令のオペレ
ーション・コードが割り当てられている。 リスト・アクセスやストライド・アクセスのロード
命令の命令形式に,組となる命令を示すためのIDフィ
ールドが設けられている。
【0060】 組となる命令を示すIDフィールドか
ら一意の内部idを割り当てる機構(識別情報生成装置
20)がある。 キャッシュ制御装置30は,組となる命令を示す内
部idと予測アドレスを求めるためのRAT表31を持
つ。
ら一意の内部idを割り当てる機構(識別情報生成装置
20)がある。 キャッシュ制御装置30は,組となる命令を示す内
部idと予測アドレスを求めるためのRAT表31を持
つ。
【0061】 キャッシュ制御装置30は,組となる
命令を示す内部idと種類を示すTypeとを識別情報
生成装置20から入力し,RAT表31に基づいて予測
したアドレスのデータを先読みする。
命令を示す内部idと種類を示すTypeとを識別情報
生成装置20から入力し,RAT表31に基づいて予測
したアドレスのデータを先読みする。
【0062】 また,キャッシュ制御装置30は,組
となる命令を示す内部idと種類を示すTypeとを識
別情報生成装置20から入力し,RAT表31に基づ
き,予測アドレスを変更する。
となる命令を示す内部idと種類を示すTypeとを識
別情報生成装置20から入力し,RAT表31に基づ
き,予測アドレスを変更する。
【0063】
【発明の効果】以上説明したように,本発明によれば,
ロード命令の種類に応じて,後にアクセスする可能性の
あるデータをキャッシュメモリ上に先読みするので,キ
ャッシュ・ミスを削減し,命令の実行性能を向上させる
ことができる。
ロード命令の種類に応じて,後にアクセスする可能性の
あるデータをキャッシュメモリ上に先読みするので,キ
ャッシュ・ミスを削減し,命令の実行性能を向上させる
ことができる。
【図1】本発明の原理説明図である。
【図2】本発明の一実施例のブロック図である。
【図3】本発明の実施例で用いるID表とRAT表の構
成例を示す図である。
成例を示す図である。
【図4】本発明の実施例を説明するためのリスト・アク
セスとストライド・アクセスの命令コード列の例を示す
図である。
セスとストライド・アクセスの命令コード列の例を示す
図である。
【図5】図2に示す実施例の装置の制御フローを示す図
である。
である。
【図6】本発明の実施例の動作例説明図である。
【図7】リスト・アクセスとストライド・アクセスの例
を示す図である。
を示す図である。
10 CPU 20 識別情報生成装置 21 組の識別情報生成手段 22 ID記憶手段(ID表) 23 検索・通知手段 30 キャッシュ制御装置 31 関係アドレス記憶手段(RAT表) 32 予測アドレス生成手段 33 オフセット修正手段 34 キャッシュ制御手段 40 キャッシュメモリ 41 メモリ
Claims (5)
- 【請求項1】 キャッシュメモリと,キャッシュメモリ
に対するアクセスを制御するキャッシュ制御装置とを備
えたデータ処理装置におけるデータ先読み制御方法にお
いて,ロード命令のアクセス対象となるデータの配置パ
ターンに応じたタイプによってロード命令の種類を分
け,その種類を命令のオペレーション・コードまたは命
令内のフィールドによって識別できるようにし,ロード
命令が先に発行したロード命令と関係付けられるとき,
先行するロード命令の処理時に,前記ロード命令の種類
に応じて後続するロード命令のロード・アドレスを予測
し,そのデータをキャッシュメモリに先読みすることを
特徴とするデータ先読み制御方法。 - 【請求項2】 請求項1記載のデータ先読み制御方法に
おいて,前記先行するロード命令と後続するロード命令
との関係付けを,ロード命令内に設けられた組となる命
令を示す識別子を格納するフィールドによって行うこと
を特徴とするデータ先読み制御方法。 - 【請求項3】 キャッシュメモリに対するアクセスを制
御するキャッシュ制御装置において,関係するロード命
令の組ごとに,各組における後続するロード命令が使用
する予測アドレス情報を記憶する関係アドレス記憶手段
と,関係するロード命令の組を識別する情報と,アクセ
ス対象となるデータの配置パターンに応じた種類を示す
ロード命令のタイプ情報とを入力し,後続する同じ組の
ロード命令において使用するアドレスを予測して前記関
係アドレス記憶手段に設定する予測アドレス生成手段
と,前記予測アドレス生成手段によって生成したアドレ
スのデータを,後続するロード命令の実行に先立ってキ
ャッシュメモリにロードするキャッシュ制御手段とを備
えたことを特徴とするキャッシュ制御装置。 - 【請求項4】 請求項3記載のキャッシュ制御装置にお
いて,前記関係アドレス記憶手段に記憶する予測アドレ
スは,ベースとなるアドレスとそのベース・アドレスに
加算されるオフセットとからなり,後続するロード命令
の実行時に前記関係アドレス記憶手段が記憶するオフセ
ットを修正するオフセット修正手段を備えたことを特徴
とするキャッシュ制御装置。 - 【請求項5】 請求項3または請求項4記載のキャッシ
ュ制御装置を備えたデータ処理装置において,ロード命
令内に含まれるアクセス対象となるデータの配置パター
ンに応じた種類を示すタイプ情報と,先行するロード命
令と後続するロード命令との関係付けを示す識別情報と
をもとに,関係するロード命令の組を識別する情報を生
成する組の識別情報生成手段と,生成された組の識別情
報を記憶する識別情報記憶手段と,ロード命令の実行に
際して前記組の識別情報生成手段が生成した組の識別情
報または前記識別情報記憶手段に記憶している該当する
組の識別情報,およびロード命令の前記タイプ情報を前
記キャッシュ制御装置に通知する手段とを有する識別情
報生成装置を備えたことを特徴とするデータ処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP6307288A JPH08161226A (ja) | 1994-12-12 | 1994-12-12 | データ先読み制御方法,キャッシュ制御装置およびデータ処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP6307288A JPH08161226A (ja) | 1994-12-12 | 1994-12-12 | データ先読み制御方法,キャッシュ制御装置およびデータ処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH08161226A true JPH08161226A (ja) | 1996-06-21 |
Family
ID=17967333
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP6307288A Withdrawn JPH08161226A (ja) | 1994-12-12 | 1994-12-12 | データ先読み制御方法,キャッシュ制御装置およびデータ処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH08161226A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6173392B1 (en) | 1997-04-12 | 2001-01-09 | Nec Corporation | Prefetch controller automatically updating history addresses |
JP2011129103A (ja) * | 2009-12-17 | 2011-06-30 | Intel Corp | バッファを用いて高効率でロード処理を実行する方法および装置 |
JP4751510B2 (ja) * | 1997-12-10 | 2011-08-17 | 株式会社日立製作所 | メモリアクセス最適化方法 |
-
1994
- 1994-12-12 JP JP6307288A patent/JPH08161226A/ja not_active Withdrawn
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6173392B1 (en) | 1997-04-12 | 2001-01-09 | Nec Corporation | Prefetch controller automatically updating history addresses |
JP4751510B2 (ja) * | 1997-12-10 | 2011-08-17 | 株式会社日立製作所 | メモリアクセス最適化方法 |
JP2011129103A (ja) * | 2009-12-17 | 2011-06-30 | Intel Corp | バッファを用いて高効率でロード処理を実行する方法および装置 |
US8452946B2 (en) | 2009-12-17 | 2013-05-28 | Intel Corporation | Methods and apparatuses for efficient load processing using buffers |
US9710391B2 (en) | 2009-12-17 | 2017-07-18 | Intel Corporation | Methods and apparatuses for efficient load processing using buffers |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5377336A (en) | Improved method to prefetch load instruction data | |
US5941981A (en) | System for using a data history table to select among multiple data prefetch algorithms | |
EP0118828B1 (en) | Instruction fetch apparatus and method of operating same | |
US5297281A (en) | Multiple sequence processor system | |
KR100204741B1 (ko) | 제1및 제2캐시 메모리 사용방법 | |
US20080294867A1 (en) | Arithmetic processor, information procesing apparatus and memory access method in arithmetic processor | |
JP5065298B2 (ja) | 効率的なメモリ階層管理 | |
JPH03147022A (ja) | 分岐命令処理装置および処理方法 | |
US6321328B1 (en) | Processor having data buffer for speculative loads | |
US7529889B2 (en) | Data processing apparatus and method for performing a cache lookup in an energy efficient manner | |
US6922753B2 (en) | Cache prefetching | |
US6892280B2 (en) | Multiprocessor system having distributed shared memory and instruction scheduling method used in the same system | |
JP2954178B1 (ja) | 可変式キャッシュ方式 | |
JPH08161226A (ja) | データ先読み制御方法,キャッシュ制御装置およびデータ処理装置 | |
JP2534662B2 (ja) | 命令キヤツシユ制御方法 | |
JPH03175548A (ja) | マイクロプロセッサ及びアドレス制御方式 | |
JP2000347934A (ja) | キャッシュメモリ装置 | |
JPH1185613A (ja) | キャッシュメモリ | |
JP2902847B2 (ja) | 自己変更コード実行方式 | |
JPH11249959A (ja) | キャッシュメモリ制御方法および装置 | |
JP2000194554A (ja) | 演算処理装置 | |
JPH06309225A (ja) | 情報処理装置 | |
JPH10187531A (ja) | キャッシュメモリのプリフェッチ方式 | |
JP2002024088A (ja) | データ処理装置 | |
JPH08212068A (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20020305 |