JPH0651982A - 演算処理装置 - Google Patents
演算処理装置Info
- Publication number
- JPH0651982A JPH0651982A JP4206917A JP20691792A JPH0651982A JP H0651982 A JPH0651982 A JP H0651982A JP 4206917 A JP4206917 A JP 4206917A JP 20691792 A JP20691792 A JP 20691792A JP H0651982 A JPH0651982 A JP H0651982A
- Authority
- JP
- Japan
- Prior art keywords
- arithmetic processing
- address
- processing unit
- data
- instruction
- 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
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
(57)【要約】
【目的】 本発明は、キャッシュメモリを備えた演算処
理装置に関し、キャッシュミス発生時に動作を停止する
演算処理装置の有効利用を図って、キャッシュミスを低
減させる。 【構成】 データキャッシュメモリを備えた演算処理装
置で、データキャッシュミス発生時に、別の命令列 (ハ
ンドラーコード) を実行する制御手段と、該ハンドラー
コードの実行時に使用するシャドウレジスタファイル
と、該演算処理装置内のプログラムカウンタ(PC), キャ
ッシュミスの生起したメモリアクセスのアドレスレジス
タ(MAR),アドレス生成に使用されたベースレジスタ番号
を知る命令,データのプリフェッチを起動する命令, 及
び、中断したプログラムへ戻る命令を備え、上記キャッ
シュミスを起こしたメモリアクセスに使用したレジスタ
番号,実効アドレス, 前回と前前回のアクセスアドレス
の差分を上記シャドウレジスタファイルに記憶し、その
情報を利用して、次のデータアクセスのアドレスを予測
してプリフェッチを行う。
理装置に関し、キャッシュミス発生時に動作を停止する
演算処理装置の有効利用を図って、キャッシュミスを低
減させる。 【構成】 データキャッシュメモリを備えた演算処理装
置で、データキャッシュミス発生時に、別の命令列 (ハ
ンドラーコード) を実行する制御手段と、該ハンドラー
コードの実行時に使用するシャドウレジスタファイル
と、該演算処理装置内のプログラムカウンタ(PC), キャ
ッシュミスの生起したメモリアクセスのアドレスレジス
タ(MAR),アドレス生成に使用されたベースレジスタ番号
を知る命令,データのプリフェッチを起動する命令, 及
び、中断したプログラムへ戻る命令を備え、上記キャッ
シュミスを起こしたメモリアクセスに使用したレジスタ
番号,実効アドレス, 前回と前前回のアクセスアドレス
の差分を上記シャドウレジスタファイルに記憶し、その
情報を利用して、次のデータアクセスのアドレスを予測
してプリフェッチを行う。
Description
【0001】
【産業上の利用分野】本発明は、キャッシュメモリを備
えた演算処理装置に関し、特に、キャッシュミス発生時
に動作を停止する演算処理装置の有効利用を図って、プ
リフェッチアドレスの予測を行い、データのプリフェッ
チ等を行う演算処理装置に関する。
えた演算処理装置に関し、特に、キャッシュミス発生時
に動作を停止する演算処理装置の有効利用を図って、プ
リフェッチアドレスの予測を行い、データのプリフェッ
チ等を行う演算処理装置に関する。
【0002】最近の、半導体技術の進歩により、演算処
理装置のスピードは速くなっているが、メモリ装置のス
ピードは、該演算処理装置のスピードに見合うほど速く
はなっていない。
理装置のスピードは速くなっているが、メモリ装置のス
ピードは、該演算処理装置のスピードに見合うほど速く
はなっていない。
【0003】この問題を解決するために、キャッシュメ
モリ等のように、メモリに階層性を持たせることが行わ
れているが、速度の差は開く一方である。通常の演算処
理装置では、キャッシュミスをした場合、演算処理装置
は動作を停止して、主記憶装置からデータが供給される
のを待つことになる。該キャッシュミス処理の時間 (主
記憶装置にデータを要求してからキャッシュメモリにフ
ィルされる迄の時間) が長いと、該計算機システムの性
能は大きく低下する。
モリ等のように、メモリに階層性を持たせることが行わ
れているが、速度の差は開く一方である。通常の演算処
理装置では、キャッシュミスをした場合、演算処理装置
は動作を停止して、主記憶装置からデータが供給される
のを待つことになる。該キャッシュミス処理の時間 (主
記憶装置にデータを要求してからキャッシュメモリにフ
ィルされる迄の時間) が長いと、該計算機システムの性
能は大きく低下する。
【0004】又、主記憶装置からの転送能力を向上させ
る為に、命令用とデータ用の2つのキャッシュメモリを
備えた計算機システムが多くなってきている。命令をア
クセスする場合、そのアドレス分布の局所性から、1 チ
ップに集積できる範囲内の、比較的小さなキャッシュメ
モリでも、十分なヒット率が得られる。
る為に、命令用とデータ用の2つのキャッシュメモリを
備えた計算機システムが多くなってきている。命令をア
クセスする場合、そのアドレス分布の局所性から、1 チ
ップに集積できる範囲内の、比較的小さなキャッシュメ
モリでも、十分なヒット率が得られる。
【0005】一方、データキャッシュメモリの方は、プ
ログラムの扱うデータ量によって大きく左右され、小量
のキャッシュメモリで、高いヒット率を期待するのは困
難である。
ログラムの扱うデータ量によって大きく左右され、小量
のキャッシュメモリで、高いヒット率を期待するのは困
難である。
【0006】然しながら、データの配列は、主記憶装置
上において、一定の間隔で行われるいることが多い。
又、LIPSといったポインタを多用する特定の高級言語で
記述されたプログラムでは、所定の大きさのブロックデ
ータが、ポインタでリンクされている。
上において、一定の間隔で行われるいることが多い。
又、LIPSといったポインタを多用する特定の高級言語で
記述されたプログラムでは、所定の大きさのブロックデ
ータが、ポインタでリンクされている。
【0007】従って、このような特定の規則的なデータ
に対しては、あるブロックをアクセスした時、次のデー
タブロックのアドレスを予測することができる。又、前
述のように、キャッシュミスが発生すると、計算機シス
テムの演算処理装置は、主記憶装置から該キャッシュミ
スを起こしたアドレスを含むブロックのデータがムーブ
インされるまで、該演算処理装置の動作が停止している
ことに着目すると、この停止期間で、上記次のブロック
のアドレスを予測してプリフェッチを行うことができれ
ば、上記の所定の規則で配列されているデータに対する
ヒット率を向上させることができる。
に対しては、あるブロックをアクセスした時、次のデー
タブロックのアドレスを予測することができる。又、前
述のように、キャッシュミスが発生すると、計算機シス
テムの演算処理装置は、主記憶装置から該キャッシュミ
スを起こしたアドレスを含むブロックのデータがムーブ
インされるまで、該演算処理装置の動作が停止している
ことに着目すると、この停止期間で、上記次のブロック
のアドレスを予測してプリフェッチを行うことができれ
ば、上記の所定の規則で配列されているデータに対する
ヒット率を向上させることができる。
【0008】
【従来の技術】図8は、パイプライン演算の例を示した
図であり、図9は、従来技術の問題点を説明する図であ
る。
図であり、図9は、従来技術の問題点を説明する図であ
る。
【0009】先ず、フェッチステージ(F),デコードステ
ージ(D),実行ステージ(E),メモリステージ(M),ライトス
テージ(W) の5段のパイプラインステージで処理される
演算処理装置を想定する。
ージ(D),実行ステージ(E),メモリステージ(M),ライトス
テージ(W) の5段のパイプラインステージで処理される
演算処理装置を想定する。
【0010】このような演算処理装置では、命令i,i
+1,i+2,〜の各命令が、上記5段のパイプライン
に投入されて処理される。フェッチステージ(F) では、
命令キャッシュメモリをアクセスして命令をフェッチす
る。
+1,i+2,〜の各命令が、上記5段のパイプライン
に投入されて処理される。フェッチステージ(F) では、
命令キャッシュメモリをアクセスして命令をフェッチす
る。
【0011】デコードステージ(D) では、命令のデコー
ドと、レジスタファイルのアクセスを行う。実行ステー
ジ(E) では、該命令が指示する演算の実行を行う。該命
令がロード命令, 又は、ストア命令の場合は、オペラン
ドアドレスの計算を行う。
ドと、レジスタファイルのアクセスを行う。実行ステー
ジ(E) では、該命令が指示する演算の実行を行う。該命
令がロード命令, 又は、ストア命令の場合は、オペラン
ドアドレスの計算を行う。
【0012】メモリステージ(M) では、上記実行ステー
ジ(E) で計算されたオペランドアドレスにより、オペラ
ンドフェッチを行う。命令が演算命令の場合には、無実
行(NOP) 動作となる。
ジ(E) で計算されたオペランドアドレスにより、オペラ
ンドフェッチを行う。命令が演算命令の場合には、無実
行(NOP) 動作となる。
【0013】ライトステージ(W) では、演算結果をレジ
スタファイルに書き込む。
スタファイルに書き込む。
【0014】
【発明が解決しようとする課題】図9に示したように、
命令i+1でキャッシュミスがあった場合は、主記憶装
置からデータがくるまで、演算パイプラインは、Mステ
ージで停止 (パイプライン stall) する。
命令i+1でキャッシュミスがあった場合は、主記憶装
置からデータがくるまで、演算パイプラインは、Mステ
ージで停止 (パイプライン stall) する。
【0015】例えば、100 MHz のクロックで動作してい
る、縮小命令(RISC)型のマイクロプロセッサと、アクセ
スタイムが 100 ns のダイナミックランダムアクセスメ
モリ(DRAM)による主記憶装置を想定すると、該キャッシ
ュミスの処理には、数十クロックが必要となり、若し、
この数十クロックの間に、命令が供給されると、数十命
令が実行できることになる。
る、縮小命令(RISC)型のマイクロプロセッサと、アクセ
スタイムが 100 ns のダイナミックランダムアクセスメ
モリ(DRAM)による主記憶装置を想定すると、該キャッシ
ュミスの処理には、数十クロックが必要となり、若し、
この数十クロックの間に、命令が供給されると、数十命
令が実行できることになる。
【0016】該データキャッシュメモリをアクセスした
場合のミス率の増加の影響を緩和するため、主記憶装置
とキャッシュメモリとの間に2次のキャッシュメモリを
置く計算機システムも増えている。大容量のキャッシュ
メモリを置いても、キャッシュミスをしたときときのペ
ナルティは大きく、その間、演算処理装置は停止してい
ることになる。
場合のミス率の増加の影響を緩和するため、主記憶装置
とキャッシュメモリとの間に2次のキャッシュメモリを
置く計算機システムも増えている。大容量のキャッシュ
メモリを置いても、キャッシュミスをしたときときのペ
ナルティは大きく、その間、演算処理装置は停止してい
ることになる。
【0017】又、従来から、キャッシュメモリアクセス
時のキャッシュミスを減らす方法として、メモリアクセ
スのアドレスを予測する方法や、該キャッシュメモリに
対して、プリフェッチする方法が多く提案されている
が、多くの専用のハードウェア、例えば、アドレス比較
器や、アドレステーブルを必要としコストアップとなる
という問題があった。
時のキャッシュミスを減らす方法として、メモリアクセ
スのアドレスを予測する方法や、該キャッシュメモリに
対して、プリフェッチする方法が多く提案されている
が、多くの専用のハードウェア、例えば、アドレス比較
器や、アドレステーブルを必要としコストアップとなる
という問題があった。
【0018】本発明は上記従来の欠点に鑑み、キャッシ
ュミスをした時に、空いている演算処理装置を利用し
て、別の命令列であるハンドラコードを実行して所定の
処理を実行すること、例えば、次にアクセスするであろ
うデータのアドレスを予測して、データのプリフェッチ
命令を出すことにより、キャッシュミスの確率を減らす
ことができる演算処理装置を提供することを目的とする
ものである。
ュミスをした時に、空いている演算処理装置を利用し
て、別の命令列であるハンドラコードを実行して所定の
処理を実行すること、例えば、次にアクセスするであろ
うデータのアドレスを予測して、データのプリフェッチ
命令を出すことにより、キャッシュミスの確率を減らす
ことができる演算処理装置を提供することを目的とする
ものである。
【0019】
【課題を解決するための手段】図1,図2,図3は、本
発明の原理説明図であり、図1は、キャッシュミスが発
生したとき、別の命令列(ハンドラコード)を起動し、
該ハンドラコードで、シャドウレジスタファイル 5a を
参照して、所定の処理を行う場合を示し、図2は、上記
ハンドラコードによる所定の処理として、プリフェッチ
アドレスを予測し、プリフェッチを行う場合を示し、図
3は、キャッシュミス時のハンドラコードの動作タイム
チャートを示しいる。上記の問題点は下記の如くに構成
した演算処理装置によって解決される。
発明の原理説明図であり、図1は、キャッシュミスが発
生したとき、別の命令列(ハンドラコード)を起動し、
該ハンドラコードで、シャドウレジスタファイル 5a を
参照して、所定の処理を行う場合を示し、図2は、上記
ハンドラコードによる所定の処理として、プリフェッチ
アドレスを予測し、プリフェッチを行う場合を示し、図
3は、キャッシュミス時のハンドラコードの動作タイム
チャートを示しいる。上記の問題点は下記の如くに構成
した演算処理装置によって解決される。
【0020】(1) データキャッシュメモリ 10,11を備え
た演算処理装置で、データキャッシュミス発生時に、別
の命令列 (ハンドラコード) を実行する制御手段 7,22,
23と、該別の命令列 (ハンドラコード) の実行時に使用
するシャドウレジスタファイル 5a と、該演算処理装置
内の特定のレジスタの内容を読み取る命令と、該シャド
ウレジスタファイル 5a に記憶されている内容を読み取
る命令とを備え、 該キャッシュミス発生時に、上記特
定の命令を含む別の命令列 (ハンドラコード)を実行す
るように構成する。
た演算処理装置で、データキャッシュミス発生時に、別
の命令列 (ハンドラコード) を実行する制御手段 7,22,
23と、該別の命令列 (ハンドラコード) の実行時に使用
するシャドウレジスタファイル 5a と、該演算処理装置
内の特定のレジスタの内容を読み取る命令と、該シャド
ウレジスタファイル 5a に記憶されている内容を読み取
る命令とを備え、 該キャッシュミス発生時に、上記特
定の命令を含む別の命令列 (ハンドラコード)を実行す
るように構成する。
【0021】(2) 上記(1) 項に記載の演算処理装置で、
上記別の命令列(ハンドラコード)を記憶する専用の読
み取り専用メモリ 22 を備え、データキャッシュミス時
の、上記別の命令列 (ハンドラコード) の処理の命令シ
ーケンスを、上記専用の読み取り専用メモリ 22 から読
み出して実行するように構成する。
上記別の命令列(ハンドラコード)を記憶する専用の読
み取り専用メモリ 22 を備え、データキャッシュミス時
の、上記別の命令列 (ハンドラコード) の処理の命令シ
ーケンスを、上記専用の読み取り専用メモリ 22 から読
み出して実行するように構成する。
【0022】(3) 上記(1) 項に記載の演算処理装置で、
上記別の命令列(ハンドラコード)を記憶する専用のラ
ンダムアクセスメモリ 23 を備え、データキャッシュミ
ス時の、上記別の命令列 (ハンドラコード) の処理の命
令シーケンスを、上記専用のランダムアクセスメモリ 2
3 から読み出して実行するように構成する。
上記別の命令列(ハンドラコード)を記憶する専用のラ
ンダムアクセスメモリ 23 を備え、データキャッシュミ
ス時の、上記別の命令列 (ハンドラコード) の処理の命
令シーケンスを、上記専用のランダムアクセスメモリ 2
3 から読み出して実行するように構成する。
【0023】(4) 上記(1) 項に記載の演算処理装置で、
上記別の命令列(ハンドラコード)を、命令キャッシュ
メモリ 20,21中に記憶し、該命令キャッシュメモリ 20,
21中の別の命令列(ハンドラコード)をアクセスすると
きに、キャッシュミスが発生しないように、該命令キャ
ッシュメモリ 20,21のタグ部 20 の該当のエントリにキ
ャッシュロックビット 20aを備えるように構成する。
上記別の命令列(ハンドラコード)を、命令キャッシュ
メモリ 20,21中に記憶し、該命令キャッシュメモリ 20,
21中の別の命令列(ハンドラコード)をアクセスすると
きに、キャッシュミスが発生しないように、該命令キャ
ッシュメモリ 20,21のタグ部 20 の該当のエントリにキ
ャッシュロックビット 20aを備えるように構成する。
【0024】(5) 上記(1) 項に記載の演算処理装置で、
上記シャドウレジスタファイル 5aに記憶するレジスタ
番号と,実効アドレスの数を、該演算処理装置が備えて
いるレジスタファイル 5の容量より少なくするように構
成する。
上記シャドウレジスタファイル 5aに記憶するレジスタ
番号と,実効アドレスの数を、該演算処理装置が備えて
いるレジスタファイル 5の容量より少なくするように構
成する。
【0025】(6) データキャッシュメモリ 10,11を備え
た演算処理装置で、データキャッシュミス発生時に、別
の命令列 (ハンドラコード) を実行する制御手段 7,22,
23と、該別の命令列 (ハンドラコード) の実行時に使用
するシャドウレジスタファイル 5a と、該演算処理装置
内の命令アドレスレジスタ, プログラムカウンタ 3,キ
ャッシュミスの生起したメモリアクセスのアドレスレジ
スタ 4, アドレス生成に使用されたベースレジスタ番号
(REG.NO.) を知る命令, データのプリフェッチを起動す
る命令, 及び、中断したプログラムへ戻る命令を備え、
上記キャッシュミスを起こしたメモリアクセスに使用し
たレジスタ番号, 実効アドレス, 前回と前前回のアクセ
スアドレスの差分を上記シャドウレジスタファイル 5a
に記憶し、キャッシュミス発生時に、上記別の命令列
(ハンドラコード) を実行して、上記シャドウレジスタ
ファイル 5a の内容を利用して、次のデータアクセスの
アドレスの予測を行い、データのプリフェッチを行うよ
うに構成する。
た演算処理装置で、データキャッシュミス発生時に、別
の命令列 (ハンドラコード) を実行する制御手段 7,22,
23と、該別の命令列 (ハンドラコード) の実行時に使用
するシャドウレジスタファイル 5a と、該演算処理装置
内の命令アドレスレジスタ, プログラムカウンタ 3,キ
ャッシュミスの生起したメモリアクセスのアドレスレジ
スタ 4, アドレス生成に使用されたベースレジスタ番号
(REG.NO.) を知る命令, データのプリフェッチを起動す
る命令, 及び、中断したプログラムへ戻る命令を備え、
上記キャッシュミスを起こしたメモリアクセスに使用し
たレジスタ番号, 実効アドレス, 前回と前前回のアクセ
スアドレスの差分を上記シャドウレジスタファイル 5a
に記憶し、キャッシュミス発生時に、上記別の命令列
(ハンドラコード) を実行して、上記シャドウレジスタ
ファイル 5a の内容を利用して、次のデータアクセスの
アドレスの予測を行い、データのプリフェッチを行うよ
うに構成する。
【0026】(7) (6) 項に記載の演算処理装置で、上記
別の命令列(ハンドラコード)を実行して、データのプ
リフェッチを行うに際して、該プリフェッチデータを記
憶するバッファ 9を設けて、該バッファ 9にプリフェッ
チデータを記憶するように構成する。
別の命令列(ハンドラコード)を実行して、データのプ
リフェッチを行うに際して、該プリフェッチデータを記
憶するバッファ 9を設けて、該バッファ 9にプリフェッ
チデータを記憶するように構成する。
【0027】(8) (6) 項に記載の演算処理装置で、上記
別の命令列(ハンドラコード)を実行して、データのプ
リフェッチを行うに際して、該アドレス予測を、特定の
ポインタが指示するアドレスとするように構成する。
別の命令列(ハンドラコード)を実行して、データのプ
リフェッチを行うに際して、該アドレス予測を、特定の
ポインタが指示するアドレスとするように構成する。
【0028】(9) (6) 項に記載の演算処理装置で、該演
算処理装置のオペレイティングシステム(OS)が管理して
いるメモリ管理ユニット(アドレス変換バッファ) 13
に、上記プリフェッチのアドレス予測を行うか否かを指
示するビット 13aを設け、該アドレス予測を行うビット
13aがセットされている領域に対するアクセスに対して
アクセス予測によるデータプリフェッチを行うように構
成する。
算処理装置のオペレイティングシステム(OS)が管理して
いるメモリ管理ユニット(アドレス変換バッファ) 13
に、上記プリフェッチのアドレス予測を行うか否かを指
示するビット 13aを設け、該アドレス予測を行うビット
13aがセットされている領域に対するアクセスに対して
アクセス予測によるデータプリフェッチを行うように構
成する。
【0029】(10)仮想データキャッシュメモリ 10a,11a
を備えた演算処理装置で、データキャッシュミス発生時
に、別の命令列 (ハンドラコード) を実行する制御手段
7,22,23と、該別の命令列 (ハンドラコード) の実行時
に使用するシャドウレジスタファイル 5a と、該演算処
理装置内の所定のレジスタ類の内容を知る命令と, 中断
したプログラムへ戻る命令を備え、該シャドウレジスタ
ファイル 5a 内に、仮想アドレスから物理アドレスへ変
換するアドレス変換バッファ 50 を記憶しておき、該デ
ータキャッシュミスが発生したとき、上記別の命令列
(ハンドラコード)を実行する手段 7,22,23で該別の命令
列 (ハンドラコード) を実行し、上記シャドウレジスタ
ファイル 5a 内のアドレス変換バッファ 50 を参照し
て、仮想アドレスから物理アドレスへの変換を行うよう
に構成する。
を備えた演算処理装置で、データキャッシュミス発生時
に、別の命令列 (ハンドラコード) を実行する制御手段
7,22,23と、該別の命令列 (ハンドラコード) の実行時
に使用するシャドウレジスタファイル 5a と、該演算処
理装置内の所定のレジスタ類の内容を知る命令と, 中断
したプログラムへ戻る命令を備え、該シャドウレジスタ
ファイル 5a 内に、仮想アドレスから物理アドレスへ変
換するアドレス変換バッファ 50 を記憶しておき、該デ
ータキャッシュミスが発生したとき、上記別の命令列
(ハンドラコード)を実行する手段 7,22,23で該別の命令
列 (ハンドラコード) を実行し、上記シャドウレジスタ
ファイル 5a 内のアドレス変換バッファ 50 を参照し
て、仮想アドレスから物理アドレスへの変換を行うよう
に構成する。
【0030】
【作用】即ち、本発明においては、パイプラインで制御
され、キャッシュメモリを備えた演算処理装置におい
て、オペランドフェッチにおいて、キャッシュミスが発
生したとき、該演算処理装置が停止することに着目し、
該演算処理装置に、本来備わっているレジスタファイル
の容量を増加させて、シャドウレジスタを構成し、デー
タキャッシュミスが発生したときに、特定のレジスタが
指示する別の命令列(ハンドラコード)を実行 (図3参
照)して、例えば、データアクセスでのキャッシュミス
を低減させる為のプリフェッチ動作を行わせるようにす
る。
され、キャッシュメモリを備えた演算処理装置におい
て、オペランドフェッチにおいて、キャッシュミスが発
生したとき、該演算処理装置が停止することに着目し、
該演算処理装置に、本来備わっているレジスタファイル
の容量を増加させて、シャドウレジスタを構成し、デー
タキャッシュミスが発生したときに、特定のレジスタが
指示する別の命令列(ハンドラコード)を実行 (図3参
照)して、例えば、データアクセスでのキャッシュミス
を低減させる為のプリフェッチ動作を行わせるようにす
る。
【0031】例えば、上記シャドウレジスタファイル
に、キャッシュミスが発生したときの、そのアドレス(M
ARの内容) と、上記パイプラインのMステージにおいて
アドレス計算するときに使用したベースレジスタ,修飾
レジスタの番号を記憶するようにする。
に、キャッシュミスが発生したときの、そのアドレス(M
ARの内容) と、上記パイプラインのMステージにおいて
アドレス計算するときに使用したベースレジスタ,修飾
レジスタの番号を記憶するようにする。
【0032】次に、該キャッシュミスが発生したとき、
前回のキャッシュミスと同じベースレジスタ,修飾レジ
スタから計算されたアドレスでキャッシュミスが発生し
ているか否かをチェックし、若し、そうなら、該シャド
ウレジスタファイルに記憶されているオペランドアドレ
スの差分と、今回のアドレスに前回のアドレスとの差分
が一致したとき、今回のアクセスアドレスにその差分を
加算したアドレスを、将来のデータアクセスのアドレス
と予測して、そのアドレスのブロックデータがキャッシ
ュメモリに存在しなければ、プリフェッチ要求を主記憶
装置に出す。
前回のキャッシュミスと同じベースレジスタ,修飾レジ
スタから計算されたアドレスでキャッシュミスが発生し
ているか否かをチェックし、若し、そうなら、該シャド
ウレジスタファイルに記憶されているオペランドアドレ
スの差分と、今回のアドレスに前回のアドレスとの差分
が一致したとき、今回のアクセスアドレスにその差分を
加算したアドレスを、将来のデータアクセスのアドレス
と予測して、そのアドレスのブロックデータがキャッシ
ュメモリに存在しなければ、プリフェッチ要求を主記憶
装置に出す。
【0033】この方法によって、配列のアクセスによく
現れる一定間隔のメモリアクセスでのキャッシュミスを
削減することができる。又、LIPSといった、ポイン
タを多用する言語で記述されたプログラムにおいては、
複数個のデータブロックをポインタで繋いで使用するこ
とが多いので、次のデータブロックのアドレスを、該ポ
インタの内容を使用することで予測することができる。
現れる一定間隔のメモリアクセスでのキャッシュミスを
削減することができる。又、LIPSといった、ポイン
タを多用する言語で記述されたプログラムにおいては、
複数個のデータブロックをポインタで繋いで使用するこ
とが多いので、次のデータブロックのアドレスを、該ポ
インタの内容を使用することで予測することができる。
【0034】従って、この場合には、上記シャドウレジ
スタファイルに、該プログラムが使用しているポインタ
の内容を記憶することで、次のデータブロックのアドレ
スを予測し、該ポインタの指示するデータブロックをプ
リフェッチしておくことで、データキャッシュミスの発
生を低減させることができる効果がある。
スタファイルに、該プログラムが使用しているポインタ
の内容を記憶することで、次のデータブロックのアドレ
スを予測し、該ポインタの指示するデータブロックをプ
リフェッチしておくことで、データキャッシュミスの発
生を低減させることができる効果がある。
【0035】又、本発明の基本は、キャッシュメモリを
備えた演算処理装置でキャッシュミスが発生したとき、
該キャッシュミスの発生したアドレスのデータを含むデ
ータブロックがキャッシュメモリにムーブインされる迄
の間、該演算処理装置は、その動作を停止していること
に着目して、別の命令列(ハンドラコード)を実行し
て、該演算処理装置が備えている演算器等を使用して、
別の処理を行わせるところにある。
備えた演算処理装置でキャッシュミスが発生したとき、
該キャッシュミスの発生したアドレスのデータを含むデ
ータブロックがキャッシュメモリにムーブインされる迄
の間、該演算処理装置は、その動作を停止していること
に着目して、別の命令列(ハンドラコード)を実行し
て、該演算処理装置が備えている演算器等を使用して、
別の処理を行わせるところにある。
【0036】上記の例は、該別の処理として、プリフェ
ッチを行わせる場合を示したが、これに限定されるもの
ではないことは明らかであり、例えば、仮想キャッシュ
メモリ(論理アドレスで、キャッシュメモリをアクセス
して、データを読み出すことができるキャッシュメモ
リ)を備えた演算処理装置でキャッシュミスが発生した
とき、上記シャドウレジスタファイルに、アドレス変換
バッファ(TLB) を備えておき、該キャッシュミスが発生
したとき、該シャドウレジスタファイルに置かれている
アドレス変換バッファ(TLB) をアクセスして該論理アド
レスから物理アドレスを得て、必要とするデータを得る
ことができるように構成することもできる。
ッチを行わせる場合を示したが、これに限定されるもの
ではないことは明らかであり、例えば、仮想キャッシュ
メモリ(論理アドレスで、キャッシュメモリをアクセス
して、データを読み出すことができるキャッシュメモ
リ)を備えた演算処理装置でキャッシュミスが発生した
とき、上記シャドウレジスタファイルに、アドレス変換
バッファ(TLB) を備えておき、該キャッシュミスが発生
したとき、該シャドウレジスタファイルに置かれている
アドレス変換バッファ(TLB) をアクセスして該論理アド
レスから物理アドレスを得て、必要とするデータを得る
ことができるように構成することもできる。
【0037】従って、本発明によれば、キャッシュミス
を備えた演算処理装置において、特定の読み取り専用メ
モリ(ROM) 等に、別の命令列 (ハンドラコード) を格納
すると共に、レジスタファイルとは別にシャドウレジス
タファイルを設けて、そこに、必要な情報を記憶するよ
うにしておき、キャッシュミスが発生して、該演算処理
装置の動作が停止したとき、該別の命令列 (ハンドラコ
ード) を実行して、例えば、プリフェッチを行うように
したものであり、通常のトラップハンドラとは異なり、
該演算処理装置が本来備えている演算器を使用し、上記
シャドウレジスタに記憶されている情報を使用して、所
定の演算を行うので、少ないハードウェアの追加で、例
えば、一定間隔に配列されているデータのプリフェッチ
を行うことができ、該データ配列に対するメモリアクセ
ス時のキャッシュミス率を削減することができる効果が
ある。
を備えた演算処理装置において、特定の読み取り専用メ
モリ(ROM) 等に、別の命令列 (ハンドラコード) を格納
すると共に、レジスタファイルとは別にシャドウレジス
タファイルを設けて、そこに、必要な情報を記憶するよ
うにしておき、キャッシュミスが発生して、該演算処理
装置の動作が停止したとき、該別の命令列 (ハンドラコ
ード) を実行して、例えば、プリフェッチを行うように
したものであり、通常のトラップハンドラとは異なり、
該演算処理装置が本来備えている演算器を使用し、上記
シャドウレジスタに記憶されている情報を使用して、所
定の演算を行うので、少ないハードウェアの追加で、例
えば、一定間隔に配列されているデータのプリフェッチ
を行うことができ、該データ配列に対するメモリアクセ
ス時のキャッシュミス率を削減することができる効果が
ある。
【0038】
【実施例】以下本発明の実施例を図面によって詳述す
る。前述の図1〜図3は、本発明の原理説明図であり、
図4〜図6は、本発明の一実施例を示した図であって、
図4は、本発明によるプリフェッチ動作を流れ図で示
し、図5は、別の命令列(ハンドラコード)により、一
定間隔に配列されているデータブロック等のプリフェッ
チを行う場合の例を示し、図6は本発明によるアドレス
予測の例を示しており、図7は、本発明の他の実施例を
示した図であって、データ仮想キャッシュメモリを備え
た演算処理装置で、データキャッシュミスを発生したと
きのアドレス変換バッファ(TLB) をアクセスする例を模
式的に示している。
る。前述の図1〜図3は、本発明の原理説明図であり、
図4〜図6は、本発明の一実施例を示した図であって、
図4は、本発明によるプリフェッチ動作を流れ図で示
し、図5は、別の命令列(ハンドラコード)により、一
定間隔に配列されているデータブロック等のプリフェッ
チを行う場合の例を示し、図6は本発明によるアドレス
予測の例を示しており、図7は、本発明の他の実施例を
示した図であって、データ仮想キャッシュメモリを備え
た演算処理装置で、データキャッシュミスを発生したと
きのアドレス変換バッファ(TLB) をアクセスする例を模
式的に示している。
【0039】本発明においては、キャッシュミスを備え
た演算処理装置において、特定の読み取り専用メモリ(R
OM) 12等に、別の命令列 (ハンドラコード) を格納する
と共に、レジスタファイル 5とは別にシャドウレジスタ
ファイル 5a を設けて、そこに、必要な情報を記憶する
ようにしておき、キャッシュミスが発生して、該演算処
理装置の動作が停止したとき、該別の命令列 (ハンドラ
コード) を実行して、例えば、プリフェッチ等を行う手
段が、本発明を実施するのに必要な手段である。尚、全
図を通して同じ符号は同じ対象物を示している。
た演算処理装置において、特定の読み取り専用メモリ(R
OM) 12等に、別の命令列 (ハンドラコード) を格納する
と共に、レジスタファイル 5とは別にシャドウレジスタ
ファイル 5a を設けて、そこに、必要な情報を記憶する
ようにしておき、キャッシュミスが発生して、該演算処
理装置の動作が停止したとき、該別の命令列 (ハンドラ
コード) を実行して、例えば、プリフェッチ等を行う手
段が、本発明を実施するのに必要な手段である。尚、全
図を通して同じ符号は同じ対象物を示している。
【0040】以下、図1〜図3を参照しながら、図4〜
図7によって、本発明の演算処理装置の構成と動作を説
明する。先ず、図1は、キャッシュメモリを備えた演算
処理装置において、キャッシュミスを発生したとき、ハ
ンドラコードを実行する手段を模式的に示しており、説
明の便宜上、情報処理装置内の、本発明の動作に関連す
る部分を中心に示している。
図7によって、本発明の演算処理装置の構成と動作を説
明する。先ず、図1は、キャッシュメモリを備えた演算
処理装置において、キャッシュミスを発生したとき、ハ
ンドラコードを実行する手段を模式的に示しており、説
明の便宜上、情報処理装置内の、本発明の動作に関連す
る部分を中心に示している。
【0041】本発明の演算処理装置では、図1に示され
ているように、従来から備えられている命令キャッシュ
メモリ 2, データキャッシュメモリ 1, レジスタファイ
ル 5, アドレス変換バッファ 13,メモリアドレスレジス
タ(MAR) 4,命令アドレスレジスタ, プログラムカウンタ
(PC) 3, 命令レジスタ 6, 演算部 30 等の外に、ハンド
ラコードのアドレスを保持している ROMベースレジスタ
7, シャドウレジスタファイル 5a,プリフェッチしたデ
ータを保存するバッファ 9等が備えられており、該シャ
ドウレジスタファイル 5a 中に、該ハンドラコードが実
行されたときに参照される各種の情報、例えば、該ハン
ドラコードがデータのプリフェッチを行う場合には、ア
ドレス生成に使用したベースレジスタ番号と、そのベー
スレジスタ番号に対応して、キャッシュミスを起こした
メモリアドレスレジスタ(MAR) の内容, 前回と前々回の
キャッシュミスアドレスとの差分等が保存される。又、
該キャッシュミスの発生により中断したプログラムカウ
ンタ(PC) 3の値や, その他のワーク用の一時記憶の場所
として使用される。
ているように、従来から備えられている命令キャッシュ
メモリ 2, データキャッシュメモリ 1, レジスタファイ
ル 5, アドレス変換バッファ 13,メモリアドレスレジス
タ(MAR) 4,命令アドレスレジスタ, プログラムカウンタ
(PC) 3, 命令レジスタ 6, 演算部 30 等の外に、ハンド
ラコードのアドレスを保持している ROMベースレジスタ
7, シャドウレジスタファイル 5a,プリフェッチしたデ
ータを保存するバッファ 9等が備えられており、該シャ
ドウレジスタファイル 5a 中に、該ハンドラコードが実
行されたときに参照される各種の情報、例えば、該ハン
ドラコードがデータのプリフェッチを行う場合には、ア
ドレス生成に使用したベースレジスタ番号と、そのベー
スレジスタ番号に対応して、キャッシュミスを起こした
メモリアドレスレジスタ(MAR) の内容, 前回と前々回の
キャッシュミスアドレスとの差分等が保存される。又、
該キャッシュミスの発生により中断したプログラムカウ
ンタ(PC) 3の値や, その他のワーク用の一時記憶の場所
として使用される。
【0042】先ず、データキャッシュミスの時には、図
3に示したように、その時点で、パイプラインのF,D,E,
M ステージの処理を中断して、別のシーケンス(f,d,e,w
ステージで示す) を走らせる。このシーケンスは、ハン
ドラコードと呼び、命令キャッシュメモリ 2中にあって
も良いし、該命令キャッシュメモリ 2と並列にアクセス
する読み取り専用メモリ(ROM) 22であってもよいし、図
示されているランダムアクセスメモリ(RAM) 23であって
も良い。
3に示したように、その時点で、パイプラインのF,D,E,
M ステージの処理を中断して、別のシーケンス(f,d,e,w
ステージで示す) を走らせる。このシーケンスは、ハン
ドラコードと呼び、命令キャッシュメモリ 2中にあって
も良いし、該命令キャッシュメモリ 2と並列にアクセス
する読み取り専用メモリ(ROM) 22であってもよいし、図
示されているランダムアクセスメモリ(RAM) 23であって
も良い。
【0043】該命令キャッシュメモリ 2中に、該ハンド
ラコードを置く場合には、該ハンドラコードをアクセス
するときに、キャッシュミスが発生しないように、該命
令キャッシュメモリ 2のタグ部 20 に、キャッシュロッ
クビット 20aを設けて、該命令キャッシュメモリ 2に常
駐できるようにする。
ラコードを置く場合には、該ハンドラコードをアクセス
するときに、キャッシュミスが発生しないように、該命
令キャッシュメモリ 2のタグ部 20 に、キャッシュロッ
クビット 20aを設けて、該命令キャッシュメモリ 2に常
駐できるようにする。
【0044】このシーケンスは、該キャッシュミス処理
時間と同程度の処理時間であることが望ましい。該シー
ケンス終了後、例えば、元のシーケンスの中断された部
分(F,D,E,M) まで実行して、該キャッシュミス処理の終
了を待つように制御する (図3の動作タイムチャート参
照)。もし、キャッシュミス処理に先立って、該ハンド
ラコードが終了した場合には、元のシーケンスが待たさ
れる。
時間と同程度の処理時間であることが望ましい。該シー
ケンス終了後、例えば、元のシーケンスの中断された部
分(F,D,E,M) まで実行して、該キャッシュミス処理の終
了を待つように制御する (図3の動作タイムチャート参
照)。もし、キャッシュミス処理に先立って、該ハンド
ラコードが終了した場合には、元のシーケンスが待たさ
れる。
【0045】この動作は、具体的には、次のように実行
される。即ち、キャッシュミスが検出されると、該キャ
ッシュミスが検出された命令のMステージのプログラム
カウンタ(PC"") 3a {Mステージのプログラムカウンタ
(PC"") 3の値で、再開するとき必要である}を保存し、
本発明の ROMベースレジスタ 7が示す番地を、プログラ
ムカウンタ(PC) 3に設定して、該番地から該ハンドラコ
ードの実行をfステージから開始する。{図3のタイム
チャート参照}本実施例においては、該ハンドラコード
は、前述の命令キャッシュメモリ 2ではなく、図1に示
されている ROM 22 内に記憶されているものとする。こ
のとき、F,D,E,M ステージで実行中であった、元のプロ
グラムの途中の結果は捨てられる。
される。即ち、キャッシュミスが検出されると、該キャ
ッシュミスが検出された命令のMステージのプログラム
カウンタ(PC"") 3a {Mステージのプログラムカウンタ
(PC"") 3の値で、再開するとき必要である}を保存し、
本発明の ROMベースレジスタ 7が示す番地を、プログラ
ムカウンタ(PC) 3に設定して、該番地から該ハンドラコ
ードの実行をfステージから開始する。{図3のタイム
チャート参照}本実施例においては、該ハンドラコード
は、前述の命令キャッシュメモリ 2ではなく、図1に示
されている ROM 22 内に記憶されているものとする。こ
のとき、F,D,E,M ステージで実行中であった、元のプロ
グラムの途中の結果は捨てられる。
【0046】該ハンドラコードの実行中は、通常のプロ
グラムが使用するレジスタファイル5の代わりに、図示
のシャドウレジスタファイル 5a をアクセスする。該ハ
ンドラコード中の終了命令をフェッチしたら、続いて、
上記プログラムカウンタ(PC"") 3a の値から命令のフェ
ッチを行う。
グラムが使用するレジスタファイル5の代わりに、図示
のシャドウレジスタファイル 5a をアクセスする。該ハ
ンドラコード中の終了命令をフェッチしたら、続いて、
上記プログラムカウンタ(PC"") 3a の値から命令のフェ
ッチを行う。
【0047】従って、キャッシュミスを起こした命令は
再実行されると共に、それに続く命令列も再実行され
る。該ハンドラコードが、ユーザから見えるレジスタ類
を使用する場合には、事前に、それらのレジスタの内容
を、上記シャドウレジスタファイル 5a に保存してお
き、該ハンドラコードの処理の終了時に回復させる。
再実行されると共に、それに続く命令列も再実行され
る。該ハンドラコードが、ユーザから見えるレジスタ類
を使用する場合には、事前に、それらのレジスタの内容
を、上記シャドウレジスタファイル 5a に保存してお
き、該ハンドラコードの処理の終了時に回復させる。
【0048】例えば、ハンドラコード内で、条件ジャン
プ命令を使用する場合には、コンディションコード(CC)
を、該シャドウレジスタファイル 5a 内に保存してお
き、該ハンドラコードの処理を終了した時に回復するこ
とが必要である。
プ命令を使用する場合には、コンディションコード(CC)
を、該シャドウレジスタファイル 5a 内に保存してお
き、該ハンドラコードの処理を終了した時に回復するこ
とが必要である。
【0049】該ハンドラコードの終了時に、データキャ
ッシュメモリ 1へのデータフィルが終了していれば、再
実行されるメモリアクセス命令は、今度は、キャッシュ
ミスを起こさずに処理が進む。然し、未だ、該キャッシ
ュミス処理が終了していない場合には、該キャッシュフ
ィルを待つ必要がある。{請求項1〜5に記載の発明に
対応} 次に、図2と、図4とを用いて、上記ハンドラコードが
プリフェッチ処理を行う場合の具体的な動作を説明す
る。この場合、該ハンドラコードでは、オリジナルな命
令セットに加えて、例えば、キャッシュミスを発生させ
たメモリアクセスのアドレス(MAR 4の内容) を知る命令
と、該アドレスを生成するのに使用したレジスタ(例え
ば、ベースレジスタ,修飾レジスタ)の番号(図2中の
レジスタファイル 5の番号)を知る命令,該キャッシュ
ミスによって中断した元のプログラムのプログラムカウ
ンタ(PC"") 3a の内容を知る命令, 該ハンドラコードで
予測したアドレスのデータのプリフェッチを起動する命
令, 該中断した元のプログラム(PC"" 3aが示す番地) へ
戻る命令等を追加しておく必要がある。
ッシュメモリ 1へのデータフィルが終了していれば、再
実行されるメモリアクセス命令は、今度は、キャッシュ
ミスを起こさずに処理が進む。然し、未だ、該キャッシ
ュミス処理が終了していない場合には、該キャッシュフ
ィルを待つ必要がある。{請求項1〜5に記載の発明に
対応} 次に、図2と、図4とを用いて、上記ハンドラコードが
プリフェッチ処理を行う場合の具体的な動作を説明す
る。この場合、該ハンドラコードでは、オリジナルな命
令セットに加えて、例えば、キャッシュミスを発生させ
たメモリアクセスのアドレス(MAR 4の内容) を知る命令
と、該アドレスを生成するのに使用したレジスタ(例え
ば、ベースレジスタ,修飾レジスタ)の番号(図2中の
レジスタファイル 5の番号)を知る命令,該キャッシュ
ミスによって中断した元のプログラムのプログラムカウ
ンタ(PC"") 3a の内容を知る命令, 該ハンドラコードで
予測したアドレスのデータのプリフェッチを起動する命
令, 該中断した元のプログラム(PC"" 3aが示す番地) へ
戻る命令等を追加しておく必要がある。
【0050】該ハンドラコードによるアドレス予測は、
例えば、図4に示した流れ図によって行われる。即ち、
キャッシュミスが発生したとき、そのときのメモリアド
レスレジスタ(MAR) 4 の内容と、該データアクセスのア
ドレス計算に使用されたベースレジスタ, 修飾レジスタ
の番号と、元のプログラムの命令アドレスを指示してい
るプログラムカウンタ(PC"") 3a 等を、本発明のシャド
ウレジスタファイル 5a の所定の位置に記憶するように
する。
例えば、図4に示した流れ図によって行われる。即ち、
キャッシュミスが発生したとき、そのときのメモリアド
レスレジスタ(MAR) 4 の内容と、該データアクセスのア
ドレス計算に使用されたベースレジスタ, 修飾レジスタ
の番号と、元のプログラムの命令アドレスを指示してい
るプログラムカウンタ(PC"") 3a 等を、本発明のシャド
ウレジスタファイル 5a の所定の位置に記憶するように
する。
【0051】該ハンドラコードにおいて、該シャドウレ
ジスタファイル 5a を参照して、上記プログラムカウン
タ(PC), ベースレジスタ番号, メモリアドレスレジスタ
(MAR) の内容、アドレス予測に必要な、前回と前前回の
ベースレジスタのアドレスの差分が“0”かどうかを見
て、“0”であると、該プリフェッチに必要なデータが
登録されていないものと認識して、該シャドウレジスタ
ファイル 5a に、上記メモリアドレスレジスタ(MAR) の
値と、ベースレジスタ番号と、上記差分を記憶する領域
に、例えば、該メモリアドレスレジスタ(MAR) の値を記
憶して、登録処理を行う。{図4の処理ステップ 100,1
01,102参照} 若し、該シャドウレジスタファイル 5a に所望のデータ
が登録されている場合には、前回のキャッシュミスと同
じベースレジスタから計算されたアドレスでキャッシュ
ミスが発生しているかどうかをチェックし、若し、同じ
ベースレジスタが使用されている (該ベースレジスタの
番号で認識される) ならば、前回のベースレジスタが示
すアドレスと今回のベースレジスタが示すアドレスとの
差分を計算し、該計算した差分が“0”であると、アド
レス予測は不可能と認識して、該ハンドラコードの処理
を終了するが、該差分が“0”でなけれは、該シャドウ
レジスタファイル 5a に記憶されている差分 (これは、
前前回と前回のキャッシュミスが発生したときのアドレ
スの差分である) と同じかどうかを見て、差分が同じで
あると、今回のベースレジスタのアドレスに該差分を加
算して、該加算して得られたアドレスを、将来使用され
るデータブロックのアドレスと予測して、該データブロ
ックに対するプリフェッチ命令を発行するが、該差分が
同じでなければ、次のアドレス予測の為に、該差分を該
シャドウレジスタファイル 5a の所定の領域に設定す
る。{図4の処理ステップ 103,104,105,106,107参照} 上記の例では、最初、該差分の領域には、メモリアドレ
スレジスタ(MAR) の内容が設定されているので、当然の
ことながら、この時点では、一致することはないので、
処理ステップ 107によって、前回と今回の差分を設定し
ておくことで、以降においてキャッシュミスが発生した
ときには、処理ステップ 105から処理ステップ 106に移
ることができ、次のメモリアクセスのアドレスを予測す
ることができるようになる。
ジスタファイル 5a を参照して、上記プログラムカウン
タ(PC), ベースレジスタ番号, メモリアドレスレジスタ
(MAR) の内容、アドレス予測に必要な、前回と前前回の
ベースレジスタのアドレスの差分が“0”かどうかを見
て、“0”であると、該プリフェッチに必要なデータが
登録されていないものと認識して、該シャドウレジスタ
ファイル 5a に、上記メモリアドレスレジスタ(MAR) の
値と、ベースレジスタ番号と、上記差分を記憶する領域
に、例えば、該メモリアドレスレジスタ(MAR) の値を記
憶して、登録処理を行う。{図4の処理ステップ 100,1
01,102参照} 若し、該シャドウレジスタファイル 5a に所望のデータ
が登録されている場合には、前回のキャッシュミスと同
じベースレジスタから計算されたアドレスでキャッシュ
ミスが発生しているかどうかをチェックし、若し、同じ
ベースレジスタが使用されている (該ベースレジスタの
番号で認識される) ならば、前回のベースレジスタが示
すアドレスと今回のベースレジスタが示すアドレスとの
差分を計算し、該計算した差分が“0”であると、アド
レス予測は不可能と認識して、該ハンドラコードの処理
を終了するが、該差分が“0”でなけれは、該シャドウ
レジスタファイル 5a に記憶されている差分 (これは、
前前回と前回のキャッシュミスが発生したときのアドレ
スの差分である) と同じかどうかを見て、差分が同じで
あると、今回のベースレジスタのアドレスに該差分を加
算して、該加算して得られたアドレスを、将来使用され
るデータブロックのアドレスと予測して、該データブロ
ックに対するプリフェッチ命令を発行するが、該差分が
同じでなければ、次のアドレス予測の為に、該差分を該
シャドウレジスタファイル 5a の所定の領域に設定す
る。{図4の処理ステップ 103,104,105,106,107参照} 上記の例では、最初、該差分の領域には、メモリアドレ
スレジスタ(MAR) の内容が設定されているので、当然の
ことながら、この時点では、一致することはないので、
処理ステップ 107によって、前回と今回の差分を設定し
ておくことで、以降においてキャッシュミスが発生した
ときには、処理ステップ 105から処理ステップ 106に移
ることができ、次のメモリアクセスのアドレスを予測す
ることができるようになる。
【0052】上記の方法によるアドレス予測は、例え
ば、一定の間隔で配列されているデータに対して有効で
あり、この場合のオペランドフェッチ時のキャッシュミ
スを削減することができる。
ば、一定の間隔で配列されているデータに対して有効で
あり、この場合のオペランドフェッチ時のキャッシュミ
スを削減することができる。
【0053】又、キャッシュミス時に、プリフェッチし
たデータによって、今までヒットしていたデータを、該
データキャッシュメモリ 2から追い出してしまわないよ
うに、例えば、プリフェッチデータ用のバッファ 9を設
けて、当該情報処理装置がデータキャッシュアクセス
と, プリフェッチデータアクセスとを並行して行うよう
に構成することも可能である。{請求項6,7に記載の
発明に対応する} 上記の例では、データの配列が、一定の間隔であるデー
タブロックをプリフェッチする例で説明したが、LISPと
いったポインタを多用する高級言語で記載されたプログ
ラムでは、前述のように、該プログラムで使用するデー
タをポインタでリンクしていることが多い。
たデータによって、今までヒットしていたデータを、該
データキャッシュメモリ 2から追い出してしまわないよ
うに、例えば、プリフェッチデータ用のバッファ 9を設
けて、当該情報処理装置がデータキャッシュアクセス
と, プリフェッチデータアクセスとを並行して行うよう
に構成することも可能である。{請求項6,7に記載の
発明に対応する} 上記の例では、データの配列が、一定の間隔であるデー
タブロックをプリフェッチする例で説明したが、LISPと
いったポインタを多用する高級言語で記載されたプログ
ラムでは、前述のように、該プログラムで使用するデー
タをポインタでリンクしていることが多い。
【0054】従って、このようなプログラムを実行中に
キャッシュミスが発生した場合には、図4の処理ステッ
プ 101で、該シャドウレジスタファイル 5a に、該アド
レス予測に必要なデータが登録されていることが認識で
きたとき、処理ステップ 106a に移って、図示されてい
ないポインタが指示するアドレスを、次にアクセスする
データブロックの先頭アドレスと予測するようにしても
よい。{請求項8に記載の発明に対応する} 上記の実施例においては、例えば、多くの縮小命令型(R
ISC 型) 演算装置では、任意のレジスタがベースレジス
タとして使用できることから、全てのレジスタについ
て、アクセスの情報を、該シャドウレジスタファイル 5
a に記憶する例で説明したが、この方法では、該シャド
ウレジスタファイル 5a の容量が大きくなる問題があ
る。
キャッシュミスが発生した場合には、図4の処理ステッ
プ 101で、該シャドウレジスタファイル 5a に、該アド
レス予測に必要なデータが登録されていることが認識で
きたとき、処理ステップ 106a に移って、図示されてい
ないポインタが指示するアドレスを、次にアクセスする
データブロックの先頭アドレスと予測するようにしても
よい。{請求項8に記載の発明に対応する} 上記の実施例においては、例えば、多くの縮小命令型(R
ISC 型) 演算装置では、任意のレジスタがベースレジス
タとして使用できることから、全てのレジスタについ
て、アクセスの情報を、該シャドウレジスタファイル 5
a に記憶する例で説明したが、この方法では、該シャド
ウレジスタファイル 5a の容量が大きくなる問題があ
る。
【0055】そこで、該シャドウレジスタファイル 5a
に記憶する量を削減する為に、例えば、ベースレジスタ
の番号を、該シャドウレジスタファイル 5a のタグ情報
として同時に記憶しておき、該タグ情報の一致を確認し
てから、アドレスの予測を行うようにしてもよい。{請
求項5に記載の発明に対応する) 次に、図5は、一定の間隔で配列されているデータに対
して、所定の演算を行う場合の、該データの配列の例を
示したものである。
に記憶する量を削減する為に、例えば、ベースレジスタ
の番号を、該シャドウレジスタファイル 5a のタグ情報
として同時に記憶しておき、該タグ情報の一致を確認し
てから、アドレスの予測を行うようにしてもよい。{請
求項5に記載の発明に対応する) 次に、図5は、一定の間隔で配列されているデータに対
して、所定の演算を行う場合の、該データの配列の例を
示したものである。
【0056】例えば、配列A(100,100) は、相対番地が
“0”番地から“100"番地迄の2次元配列のデータを示
している。同様にして、配列B(100,100),配列C(100,1
00)があり、配列A(i,1) =配列B(i,1)*配列C(i,1)
をi=1 〜100 迄行う場合{図5で斜線で示す領域のデー
タ間の演算}を考えると、2次元配列(i,1) のi=1〜
100 が指示するデータは、j方向に、100 番地毎に繰り
返して現れるデータであり、上記一定の間隔で配列され
ているデータであることが分かる。
“0”番地から“100"番地迄の2次元配列のデータを示
している。同様にして、配列B(100,100),配列C(100,1
00)があり、配列A(i,1) =配列B(i,1)*配列C(i,1)
をi=1 〜100 迄行う場合{図5で斜線で示す領域のデー
タ間の演算}を考えると、2次元配列(i,1) のi=1〜
100 が指示するデータは、j方向に、100 番地毎に繰り
返して現れるデータであり、上記一定の間隔で配列され
ているデータであることが分かる。
【0057】このような、一定の間隔で配列されている
データに対しては、図4に示した流れ図によってアドレ
ス予測を行うことができ、該予測されたデータブロック
をプリフェッチしておくことにより、上記の演算に対し
てキャッシュミスの発生を低減させることができる。
データに対しては、図4に示した流れ図によってアドレ
ス予測を行うことができ、該予測されたデータブロック
をプリフェッチしておくことにより、上記の演算に対し
てキャッシュミスの発生を低減させることができる。
【0058】次の図6は、上記一定の間隔で配列されて
いるデータブロックに対して、図4に示した流れ図によ
り、アドレス予測を行った場合の予測結果の例を示して
いる。
いるデータブロックに対して、図4に示した流れ図によ
り、アドレス予測を行った場合の予測結果の例を示して
いる。
【0059】図4の流れ図に従って説明すると、図4の
処理ステップ 100,101,102からも明らかなように、第1
回目では、シャドウレジスタファイル 5a には何も登録
されていないので、アドレス予測はできない。
処理ステップ 100,101,102からも明らかなように、第1
回目では、シャドウレジスタファイル 5a には何も登録
されていないので、アドレス予測はできない。
【0060】該第1回目のアクセスで、処理ステップ 1
02で、キャッシュミスの発生したメモリアドレスレジス
タ(MAR),該メモリアクセスで使用されたベースレジスタ
の番号, 更に、差分データとして、取り合えず、該メモ
リアドレスレジスタ(MAR) の値が、該シャドウレジスタ
ファイル 5a に登録される。
02で、キャッシュミスの発生したメモリアドレスレジス
タ(MAR),該メモリアクセスで使用されたベースレジスタ
の番号, 更に、差分データとして、取り合えず、該メモ
リアドレスレジスタ(MAR) の値が、該シャドウレジスタ
ファイル 5a に登録される。
【0061】然し、第2回目のメモリアクセスでも、未
だ、プリフェッチは行われていないのでキャッシュミス
が発生して、処理ステップ 104における差分が、一致し
ないので、処理ステップ 107に移って、上記2次元配列
データの、例えば、i方向のアドレスの差分、本実施例
では“100"番地が、該シャドウレジスタファイル 5aの
所定の位置に登録される。
だ、プリフェッチは行われていないのでキャッシュミス
が発生して、処理ステップ 104における差分が、一致し
ないので、処理ステップ 107に移って、上記2次元配列
データの、例えば、i方向のアドレスの差分、本実施例
では“100"番地が、該シャドウレジスタファイル 5aの
所定の位置に登録される。
【0062】従って、第3回目のメモリアクセスでは、
上記処理ステップ 105で、前回のアドレスと今回のアド
レスとの差分"100" 番地が、上記シャドウレジスタファ
イル5a の所定の位置に登録されている値と一致がと
れ、次の処理ステップ 106で、アドレス予測を行う、該
予測したアドレスのブロックデータのプリフェッチを行
うことができるようになり、以降、キャッシュミスの発
生は無くなることになる。
上記処理ステップ 105で、前回のアドレスと今回のアド
レスとの差分"100" 番地が、上記シャドウレジスタファ
イル5a の所定の位置に登録されている値と一致がと
れ、次の処理ステップ 106で、アドレス予測を行う、該
予測したアドレスのブロックデータのプリフェッチを行
うことができるようになり、以降、キャッシュミスの発
生は無くなることになる。
【0063】次の図7は、仮想キャッシュメモリを備え
た計算機システムに対して、該キャッシュミスが発生し
たときのハンドラコードでの処理を概念的に示したもの
である。
た計算機システムに対して、該キャッシュミスが発生し
たときのハンドラコードでの処理を概念的に示したもの
である。
【0064】前述のように、仮想データキャッシュメモ
リ(論理アドレスで、キャッシュメモリをアクセスし
て、データを読み出すことができるキャッシュメモリ)
1aを備えた演算処理装置で、上記シャドウレジスタファ
イル 5a に、アドレス変換バッファ(TLB) 50を備えてお
き、該データキャッシュミスが発生したとき、該シャド
ウレジスタファイル 5a に置かれているアドレス変換バ
ッファ(TLB) 50をアクセスして該論理アドレスから物理
アドレスを得て、必要とするデータを得ることができる
ように構成することもできる。このとき、該アドレス変
換バッファ(TLB)50中に変換対が存在しない場合には、
図示されていない主記憶装置中の動的アドレス変換テー
ブル(DATテーブル) を参照して、物理アドレスを得るよ
うにする。
リ(論理アドレスで、キャッシュメモリをアクセスし
て、データを読み出すことができるキャッシュメモリ)
1aを備えた演算処理装置で、上記シャドウレジスタファ
イル 5a に、アドレス変換バッファ(TLB) 50を備えてお
き、該データキャッシュミスが発生したとき、該シャド
ウレジスタファイル 5a に置かれているアドレス変換バ
ッファ(TLB) 50をアクセスして該論理アドレスから物理
アドレスを得て、必要とするデータを得ることができる
ように構成することもできる。このとき、該アドレス変
換バッファ(TLB)50中に変換対が存在しない場合には、
図示されていない主記憶装置中の動的アドレス変換テー
ブル(DATテーブル) を参照して、物理アドレスを得るよ
うにする。
【0065】
【発明の効果】以上、詳細に説明したように、キャッシ
ュメモリを備えた演算処理装置において、キャッシュミ
スが発生したとき、該演算処理装置の動作が停止するこ
とに着目し、該演算処理装置が実行している命令列とは
別のハンドラコードを実行させることにより、例えば、
次お必要とされるであろうデータブロックのアドレス予
測を行い、該予測したデータブロックをプリフェッチす
ることで、メモリアクセス時のキャッシュミス率を低減
させることができる等の効果がある。
ュメモリを備えた演算処理装置において、キャッシュミ
スが発生したとき、該演算処理装置の動作が停止するこ
とに着目し、該演算処理装置が実行している命令列とは
別のハンドラコードを実行させることにより、例えば、
次お必要とされるであろうデータブロックのアドレス予
測を行い、該予測したデータブロックをプリフェッチす
ることで、メモリアクセス時のキャッシュミス率を低減
させることができる等の効果がある。
【図1】本発明の原理説明図(その1)
【図2】本発明の原理説明図(その2)
【図3】本発明の原理説明図(その3)
【図4】本発明の一実施例を示した図(その1)
【図5】本発明の一実施例を示した図(その2)
【図6】本発明の一実施例を示した図(その3)
【図7】本発明の他の一実施例を示した図
【図8】パイプライン演算の例を示した図
【図9】従来技術の問題点を説明する図
1 データキャッシュメモリ 10 タグ部 11 データ部 2 命令キャッシュメモリ 20 タグ部 21 データ部 22 ROM ベースレジスタ 23 ランダム
アクセスメモリ(RAM) 3,3a プログラムカウンタ(PC) 4 メモリア
ドレスレジスタ(MAR) 5 レジスタファイル 5a シャドウ
レジスタファイル 6 命令レジスタ 7 ROM ベー
スレジスタ 9 バッファ 13,50 アドレス
変換バッファ(TLB) 1a, 又は、10a,11a 仮想データキャッシュメモリ
アクセスメモリ(RAM) 3,3a プログラムカウンタ(PC) 4 メモリア
ドレスレジスタ(MAR) 5 レジスタファイル 5a シャドウ
レジスタファイル 6 命令レジスタ 7 ROM ベー
スレジスタ 9 バッファ 13,50 アドレス
変換バッファ(TLB) 1a, 又は、10a,11a 仮想データキャッシュメモリ
Claims (10)
- 【請求項1】データキャッシュメモリ(10,11) を備えた
演算処理装置で、データキャッシュミス発生時に、別の
命令列 (ハンドラコード) を実行する制御手段(7,22,2
3) と、該別の命令列 (ハンドラコード) の実行時に使
用するシャドウレジスタファイル(5a)と、該演算処理装
置内の特定のレジスタの内容を読み取る命令と、該シャ
ドウレジスタファイル(5a)に記憶されている内容を読み
取る命令とを備え、 該キャッシュミス発生時に、上記
特定の命令を含む別の命令列 (ハンドラコード)を実行
することを特徴とする演算処理装置。 - 【請求項2】請求項1に記載の演算処理装置で、上記別
の命令列(ハンドラコード)を記憶する専用の読み取り
専用メモリ(22)を備え、 データキャッシュミス時の、上記別の命令列 (ハンドラ
コード) の処理の命令シーケンスを、上記専用の読み取
り専用メモリ(22)から読み出して実行することを特徴と
する演算処理装置。 - 【請求項3】請求項1に記載の演算処理装置で、上記別
の命令列(ハンドラコード)を記憶する専用のランダム
アクセスメモリ(23)を備え、 データキャッシュミス時の、上記別の命令列 (ハンドラ
コード) の処理の命令シーケンスを、上記専用のランダ
ムアクセスメモリ(23)から読み出して実行することを特
徴とする演算処理装置。 - 【請求項4】請求項1に記載の演算処理装置で、上記別
の命令列(ハンドラコード)を、命令キャッシュメモリ
(20,21) 中に記憶し、該命令キャッシュメモリ(20,21)
中の別の命令列(ハンドラコード)をアクセスするとき
に、キャッシュミスが発生しないように、該命令キャッ
シュメモリ(20,21) のタグ部(20)の該当のエントリにキ
ャッシュロックビット(20a) を備えたことを特徴とする
演算処理装置。 - 【請求項5】請求項1に記載の演算処理装置で、上記シ
ャドウレジスタファイル(5a)に記憶するレジスタ番号
と,実効アドレスの数を、該演算処理装置が備えている
レジスタファイル(5) の容量より少なくしたことを特徴
とする演算処理装置。 - 【請求項6】データキャッシュメモリ(10,11) を備えた
演算処理装置で、データキャッシュミス発生時に、別の
命令列 (ハンドラコード) を実行する制御手段(7,22,2
3) と、該別の命令列 (ハンドラコード) の実行時に使
用するシャドウレジスタファイル(5a)と、該演算処理装
置内のプログラムカウンタ(3),キャッシュミスの生起し
たメモリアクセスのアドレスレジスタ(4),アドレス生成
に使用されたベースレジスタ番号(REG.NO.) を知る命
令, データのプリフェッチを起動する命令, 及び、中断
したプログラムへ戻る命令を備え、上記キャッシュミス
を起こしたメモリアクセスに使用したレジスタ番号, 実
効アドレス, 前回と前前回のアクセスアドレスの差分を
上記シャドウレジスタファイル(5a)に記憶し、 キャッシュミス発生時に、上記別の命令列 (ハンドラコ
ード) を実行して、上記シャドウレジスタファイル(5a)
の内容を利用して、次のデータアクセスのアドレスの予
測を行い、データのプリフェッチを行うことを特徴とす
る演算処理装置。 - 【請求項7】請求項6に記載の演算処理装置で、上記別
の命令列(ハンドラコード)を実行して、データのプリ
フェッチを行うに際して、 該プリフェッチデータを記憶するバッファ(9) を設け
て、該バッファ(9) にプリフェッチデータを記憶するこ
とを特徴とする演算処理装置。 - 【請求項8】請求項6に記載の演算処理装置で、上記別
の命令列(ハンドラコード)を実行して、データのプリ
フェッチを行うに際して、 該アドレス予測を、特定のポインタが指示するアドレス
とすることを特徴とする演算処理装置。 - 【請求項9】請求項6に記載の演算処理装置で、該演算
処理装置のオペレイティングシステム(OS)が管理してい
るメモリ管理ユニット(アドレス変換バッファ)(13)
に、上記プリフェッチのアドレス予測を行うか否かを指
示するビット(13a) を設け、 該アドレス予測を行うビット(13a) がセットされている
領域に対するアクセスに対してアクセス予測によるデー
タプリフェッチを行うことを特徴とする演算処理装置。 - 【請求項10】仮想データキャッシュメモリ(10a,11a)
を備えた演算処理装置で、データキャッシュミス発生時
に、別の命令列 (ハンドラコード) を実行する制御手段
(7,22,23) と、該別の命令列 (ハンドラコード) の実行
時に使用するシャドウレジスタファイル(5a)と、該演算
処理装置内の所定のレジスタ類の内容を知る命令と, 中
断したプログラムへ戻る命令を備え、 該シャドウレジスタファイル(5a)内に、仮想アドレスか
ら物理アドレスへ変換するアドレス変換バッファ(50)を
記憶しておき、 該データキャッシュミスが発生したとき、上記別の命令
列 (ハンドラコード)を実行する手段(7,22,23) で該別
の命令列 (ハンドラーコード) を実行し、上記シャドウ
レジスタファイル(5a)内のアドレス変換バッファ(50)を
参照して、仮想アドレスから物理アドレスへの変換を行
うことを特徴とする演算処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4206917A JPH0651982A (ja) | 1992-08-04 | 1992-08-04 | 演算処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4206917A JPH0651982A (ja) | 1992-08-04 | 1992-08-04 | 演算処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0651982A true JPH0651982A (ja) | 1994-02-25 |
Family
ID=16531224
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP4206917A Withdrawn JPH0651982A (ja) | 1992-08-04 | 1992-08-04 | 演算処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0651982A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6173392B1 (en) | 1997-04-12 | 2001-01-09 | Nec Corporation | Prefetch controller automatically updating history addresses |
JP2006048164A (ja) * | 2004-07-30 | 2006-02-16 | Fujitsu Ltd | 情報処理装置およびソフトウェアプリフェッチ制御方法 |
JPWO2008155812A1 (ja) * | 2007-06-18 | 2010-08-26 | 富士通株式会社 | プロセッサおよびプリフェッチ支援プログラム |
CN113703660A (zh) * | 2020-05-22 | 2021-11-26 | 华为技术有限公司 | 数据预取方法和数据预取装置 |
-
1992
- 1992-08-04 JP JP4206917A patent/JPH0651982A/ja not_active Withdrawn
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6173392B1 (en) | 1997-04-12 | 2001-01-09 | Nec Corporation | Prefetch controller automatically updating history addresses |
JP2006048164A (ja) * | 2004-07-30 | 2006-02-16 | Fujitsu Ltd | 情報処理装置およびソフトウェアプリフェッチ制御方法 |
JP4520790B2 (ja) * | 2004-07-30 | 2010-08-11 | 富士通株式会社 | 情報処理装置およびソフトウェアプリフェッチ制御方法 |
JPWO2008155812A1 (ja) * | 2007-06-18 | 2010-08-26 | 富士通株式会社 | プロセッサおよびプリフェッチ支援プログラム |
JP4643740B2 (ja) * | 2007-06-18 | 2011-03-02 | 富士通株式会社 | プロセッサおよびプリフェッチ支援プログラム |
US8166252B2 (en) | 2007-06-18 | 2012-04-24 | Fujitsu Limited | Processor and prefetch support program |
CN113703660A (zh) * | 2020-05-22 | 2021-11-26 | 华为技术有限公司 | 数据预取方法和数据预取装置 |
CN113703660B (zh) * | 2020-05-22 | 2024-03-19 | 超聚变数字技术有限公司 | 数据预取方法和数据预取装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5694568A (en) | Prefetch system applicable to complex memory access schemes | |
CA1200318A (en) | Central processor | |
JP2565648B2 (ja) | 変換索引バッファのコヒーレンス維持方法及びシステム | |
US6578130B2 (en) | Programmable data prefetch pacing | |
US8140768B2 (en) | Jump starting prefetch streams across page boundaries | |
US5721865A (en) | Information processing apparatus with prefetch control for prefetching data structure from memory through cache memory | |
EP1031919B1 (en) | Method for prefetching structured data | |
US6549985B1 (en) | Method and apparatus for resolving additional load misses and page table walks under orthogonal stalls in a single pipeline processor | |
EP1622007B1 (en) | Information processing apparatus and software pre-fetch control method | |
JP3016575B2 (ja) | 複数キャッシュ・メモリ・アクセス方法 | |
JP3739491B2 (ja) | プリフェッチ命令を用いるハーバードアーキテクチャキャッシュメモリの調和したソフトウェア制御 | |
US6782454B1 (en) | System and method for pre-fetching for pointer linked data structures | |
JP3549079B2 (ja) | キャッシュ制御の命令プリフェッチ方法 | |
US20080046657A1 (en) | System and Method to Efficiently Prefetch and Batch Compiler-Assisted Software Cache Accesses | |
EP0795820A2 (en) | Combination prefetch buffer and instructions cache | |
US6487639B1 (en) | Data cache miss lookaside buffer and method thereof | |
US20070180158A1 (en) | Method for command list ordering after multiple cache misses | |
JP2023531650A (ja) | バイナリ変換を実行するためのシステム及び方法 | |
US5784711A (en) | Data cache prefetching under control of instruction cache | |
US20070180156A1 (en) | Method for completing IO commands after an IO translation miss | |
KR100234647B1 (ko) | 인스트럭션 프리페치 방법 및 데이터 처리 시스템 | |
TW201337572A (zh) | 推測式快取修改技術 | |
CN105389271A (zh) | 用于执行具有最低表查询优先级的硬件预取表查询的系统和方法 | |
US6892280B2 (en) | Multiprocessor system having distributed shared memory and instruction scheduling method used in the same system | |
US6820254B2 (en) | Method and system for optimizing code using an optimizing coprocessor |
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: 19991005 |