JP3085267B2 - メモリアクセス高速化装置 - Google Patents
メモリアクセス高速化装置Info
- Publication number
- JP3085267B2 JP3085267B2 JP09326692A JP32669297A JP3085267B2 JP 3085267 B2 JP3085267 B2 JP 3085267B2 JP 09326692 A JP09326692 A JP 09326692A JP 32669297 A JP32669297 A JP 32669297A JP 3085267 B2 JP3085267 B2 JP 3085267B2
- Authority
- JP
- Japan
- Prior art keywords
- memory
- access
- address
- buffer
- memory access
- 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.)
- Expired - Lifetime
Links
- 230000015654 memory Effects 0.000 title claims description 85
- 230000001133 acceleration Effects 0.000 title 1
- 239000000872 buffer Substances 0.000 claims description 26
- 239000012536 storage buffer Substances 0.000 claims description 2
- 238000000034 method Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 10
- 230000000694 effects Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 230000010365 information processing Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000004069 differentiation Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
Landscapes
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
【0001】
【発明の属する技術分野】本発明はメモリアクセス高速
化方法および装置に関し、特に主メモリとキャッシュメ
モリとの間のアクセス速度のギャップを改善してシステ
ム処理性能を向上させるメモリアクセス高速化方法およ
び装置に関する。
化方法および装置に関し、特に主メモリとキャッシュメ
モリとの間のアクセス速度のギャップを改善してシステ
ム処理性能を向上させるメモリアクセス高速化方法およ
び装置に関する。
【0002】
【従来の技術】近年、LSIの集積度向上および高速化
の要求の高まりにより、情報処理装置にキャッシュメモ
リを利用する技術は一般的になっている。キャッシュメ
モリの原理はアクセスのアドレスの局所性を利用して主
記憶の写しを高速かつ小容量のバッファメモリに蓄え、
疑似的に主記憶アクセス速度を向上させることにある。
の要求の高まりにより、情報処理装置にキャッシュメモ
リを利用する技術は一般的になっている。キャッシュメ
モリの原理はアクセスのアドレスの局所性を利用して主
記憶の写しを高速かつ小容量のバッファメモリに蓄え、
疑似的に主記憶アクセス速度を向上させることにある。
【0003】一方で、CPUのマシンクロックの高速化
に伴って、主記憶装置のアクセス遅延が相対的に大きく
見えるようになりつつあるという問題がある。つまり、
キャッシュメモリにヒットしている間は問題ないが、ひ
とたびキャッシュミスが発生するとデータ取得の遅延が
大きく、性能向上の壁になっていた。
に伴って、主記憶装置のアクセス遅延が相対的に大きく
見えるようになりつつあるという問題がある。つまり、
キャッシュメモリにヒットしている間は問題ないが、ひ
とたびキャッシュミスが発生するとデータ取得の遅延が
大きく、性能向上の壁になっていた。
【0004】また、High Performance
Computing(以下、HPCという。)領域で
は、参照するデータが離散的で、かつ主記憶全体に及ぶ
大量のデータを扱う。このような用途では、主記憶から
読み出したデータを再利用する前に、キャッシュに蓄え
られたデータが他のデータで置き換えられてしまい、ア
クセスのローカリティがあることが前提となっているキ
ャッシュメモリの効果が出にくいという問題点がある。
Computing(以下、HPCという。)領域で
は、参照するデータが離散的で、かつ主記憶全体に及ぶ
大量のデータを扱う。このような用途では、主記憶から
読み出したデータを再利用する前に、キャッシュに蓄え
られたデータが他のデータで置き換えられてしまい、ア
クセスのローカリティがあることが前提となっているキ
ャッシュメモリの効果が出にくいという問題点がある。
【0005】上記のように従来のキャッシュメモリはい
ずれもリクエストを受け取った時点から受動的に動作す
るものであり、キャッシュミスの頻度を減らすことはで
きても無くすことは不可能であった。しかしながら、次
に発生するリクエストを予測できれば、あらかじめ主記
憶装置に対してリクエストを出しておき、キャッシュミ
スによる性能低下を隠すことが可能になる。さらに、キ
ャッシュミスが目立たなくなることにより、従来大きな
面積を占めていたキャッシュの容量を減らすことが可能
になり、マシンクロックの向上およびLSIの面積縮小
にも役立つことになる。
ずれもリクエストを受け取った時点から受動的に動作す
るものであり、キャッシュミスの頻度を減らすことはで
きても無くすことは不可能であった。しかしながら、次
に発生するリクエストを予測できれば、あらかじめ主記
憶装置に対してリクエストを出しておき、キャッシュミ
スによる性能低下を隠すことが可能になる。さらに、キ
ャッシュミスが目立たなくなることにより、従来大きな
面積を占めていたキャッシュの容量を減らすことが可能
になり、マシンクロックの向上およびLSIの面積縮小
にも役立つことになる。
【0006】このような発想に基づいて従来から改善や
工夫が重ねられている。たとえば、特開平6−5198
2号公報では、キャッシュミス中に停止している演算処
理装置を使って、キャッシュミスアドレスから次のアク
セスアドレスを予測する技術について述べられている。
工夫が重ねられている。たとえば、特開平6−5198
2号公報では、キャッシュミス中に停止している演算処
理装置を使って、キャッシュミスアドレスから次のアク
セスアドレスを予測する技術について述べられている。
【0007】この発明のアクセスアドレスの予測は、キ
ャッシュミス時に実行されるハンドラコードを変更する
ことによって様々なシステムに柔軟に対応できるという
利点があるものの、主記憶からデータが戻ってくる時間
内に上記ハンドラコードの実行を完了しなければ、却っ
て処理時間が長くなるいう欠点も伴わせ持つ。
ャッシュミス時に実行されるハンドラコードを変更する
ことによって様々なシステムに柔軟に対応できるという
利点があるものの、主記憶からデータが戻ってくる時間
内に上記ハンドラコードの実行を完了しなければ、却っ
て処理時間が長くなるいう欠点も伴わせ持つ。
【0008】また、最近のキャッシュメモリシステムで
は、ノンブロッキングキャッシュの採用により、キャッ
シュミスによる演算処理装置の空き時間そのものを減ら
す技術が普及してきており、本発明に述べられているよ
うな演算処理装置の空き時間を必ずしも確保できないと
いう問題もある。
は、ノンブロッキングキャッシュの採用により、キャッ
シュミスによる演算処理装置の空き時間そのものを減ら
す技術が普及してきており、本発明に述べられているよ
うな演算処理装置の空き時間を必ずしも確保できないと
いう問題もある。
【0009】また、特開平4−52741号公報では、
予想されるアドレスのデータを命令により予めキャッシ
ュメモリにロードする技術が説明されている。この発明
では、プログラムによって予め必要なアドレスのデータ
ロードを指示できるので、的確にプログラムすることに
よりキャッシュミスを隠蔽することができ、無駄なキャ
ッシュロードを無くすことができる利点がある。反面、
プログラムを解析し、予想されるアドレスを明示的にキ
ャッシュロードするよう指示する必要があるので、プロ
グラムのチューニングに手間がかかるという欠点を伴わ
せ持つ。
予想されるアドレスのデータを命令により予めキャッシ
ュメモリにロードする技術が説明されている。この発明
では、プログラムによって予め必要なアドレスのデータ
ロードを指示できるので、的確にプログラムすることに
よりキャッシュミスを隠蔽することができ、無駄なキャ
ッシュロードを無くすことができる利点がある。反面、
プログラムを解析し、予想されるアドレスを明示的にキ
ャッシュロードするよう指示する必要があるので、プロ
グラムのチューニングに手間がかかるという欠点を伴わ
せ持つ。
【0010】また、特開平3−292548号公報で
は、キャッシュミスに伴い、連続するキャッシュブロッ
クがキャッシュに登録されているかどうかを検査し、登
録されていなければ予めキャッシュにロードする技術に
ついて説明されている。この発明は、非常に単純な構造
で既存のシステムにも導入しやすい利点がある反面、キ
ャッシュミスしたブロックに連続するブロックが使用さ
れる保証が無いばかりか、追い出されたキャッシュブロ
ックにアクセスがある場合には却って性能を低下させる
恐れがある。
は、キャッシュミスに伴い、連続するキャッシュブロッ
クがキャッシュに登録されているかどうかを検査し、登
録されていなければ予めキャッシュにロードする技術に
ついて説明されている。この発明は、非常に単純な構造
で既存のシステムにも導入しやすい利点がある反面、キ
ャッシュミスしたブロックに連続するブロックが使用さ
れる保証が無いばかりか、追い出されたキャッシュブロ
ックにアクセスがある場合には却って性能を低下させる
恐れがある。
【0011】
【発明が解決しようとする課題】上記のような従来のメ
モリアクセスの方式は、予想されるデータを予め主記憶
から読み出しておく点については共通だが、その実現方
法は、プログラムの書き換えを要する,副作用が大きい
等,導入にあたって困難な点が少なくない。さらに、キ
ャッシュメモリを含めたプロセッサ全体に何らかの手を
加えなければならない点が挙げられる。
モリアクセスの方式は、予想されるデータを予め主記憶
から読み出しておく点については共通だが、その実現方
法は、プログラムの書き換えを要する,副作用が大きい
等,導入にあたって困難な点が少なくない。さらに、キ
ャッシュメモリを含めたプロセッサ全体に何らかの手を
加えなければならない点が挙げられる。
【0012】近年のHPCの分野では、プロセッサから
新規にシステムを開発するよりは、既存のマイクロプロ
セッサを利用してシステムを構築する例が多くなった。
これは、マイクロプロセッサの性能が専用プロセッサに
比べて遜色が無くなったこと、コストパフォーマンスが
優れていること等によるが、HPC分野向けにハードウ
ェアのチューニングを施すことが難しくなることも意味
している。
新規にシステムを開発するよりは、既存のマイクロプロ
セッサを利用してシステムを構築する例が多くなった。
これは、マイクロプロセッサの性能が専用プロセッサに
比べて遜色が無くなったこと、コストパフォーマンスが
優れていること等によるが、HPC分野向けにハードウ
ェアのチューニングを施すことが難しくなることも意味
している。
【0013】本発明の目的は、上記のような点に配慮
し、プログラムの書き替えが不要で、副作用が少なく、
かつ既存のマイクロプロセッサにも応用できるようなメ
モリアクセス高速化方法および装置を提供することにあ
る。
し、プログラムの書き替えが不要で、副作用が少なく、
かつ既存のマイクロプロセッサにも応用できるようなメ
モリアクセス高速化方法および装置を提供することにあ
る。
【0014】
【0015】
【0016】
【課題を解決するための手段】本発明のメモリアクセス
高速化装置は、過去のメモリアクセスのアドレス履歴を
保持する第一のバッファと、メモリアクセスの際にその
アドレスと前記第一のバッファに保持されたアドレス履
歴の一部もしくは全部との間の距離を計算する手段と、
前記第一のバッファに記憶されたアドレスとそれ以前の
一個以上のアドレスとの距離および一致回数を保持する
第二のバッファと、新たなメモリアクセスに際しそのア
ドレスと前記第一のバッファに記憶された過去のメモリ
アクセスのアドレスの一つとの距離が前記第二のバッフ
ァに保持されている過去のメモリアクセスに対応した距
離の少なくとも一つと一致する場合にはそのアクセスの
組み合わせに対応する一致回数を記憶する手段と、前記
一致回数があらかじめ定めた回数に達したときに前記距
離で連続したアクセスを発行する手段とを有して構成さ
れる。
高速化装置は、過去のメモリアクセスのアドレス履歴を
保持する第一のバッファと、メモリアクセスの際にその
アドレスと前記第一のバッファに保持されたアドレス履
歴の一部もしくは全部との間の距離を計算する手段と、
前記第一のバッファに記憶されたアドレスとそれ以前の
一個以上のアドレスとの距離および一致回数を保持する
第二のバッファと、新たなメモリアクセスに際しそのア
ドレスと前記第一のバッファに記憶された過去のメモリ
アクセスのアドレスの一つとの距離が前記第二のバッフ
ァに保持されている過去のメモリアクセスに対応した距
離の少なくとも一つと一致する場合にはそのアクセスの
組み合わせに対応する一致回数を記憶する手段と、前記
一致回数があらかじめ定めた回数に達したときに前記距
離で連続したアクセスを発行する手段とを有して構成さ
れる。
【0017】さらに、本発明のメモリアクセス高速化装
置において、連続してアクセスしたデータが使用されな
いときには前記連続したアクセスを停止する手段を備え
る。
置において、連続してアクセスしたデータが使用されな
いときには前記連続したアクセスを停止する手段を備え
る。
【0018】さらに、本発明のメモリアクセス高速化装
置は、連続してアクセスしたデータを一時記憶バッファ
に格納しキャッシュメモリには直接格納しないようにし
て構成される。
置は、連続してアクセスしたデータを一時記憶バッファ
に格納しキャッシュメモリには直接格納しないようにし
て構成される。
【0019】さらに、本発明のメモリアクセス高速化装
置において、前記連続したアクセスの際に例外が発生し
ても前記例外を無視する手段を備える。
置において、前記連続したアクセスの際に例外が発生し
ても前記例外を無視する手段を備える。
【0020】すなわち、本発明は、主記憶上のデータを
等間隔でアクセスする際に、予測されるデータを予めバ
ッファに読み出す手段を提供する。主記憶上データを等
間隔でアクセスするベクトル的な処理は、科学技術演算
では頻繁に登場する。しかしながら、オペランドアクセ
スは勿論、等間隔のデータアクセスが連続して出るわけ
ではないので、様々な雑音の中から繰り返し同じ間隔で
出力されるアドレスの規則性を高精度で抽出している。
等間隔でアクセスする際に、予測されるデータを予めバ
ッファに読み出す手段を提供する。主記憶上データを等
間隔でアクセスするベクトル的な処理は、科学技術演算
では頻繁に登場する。しかしながら、オペランドアクセ
スは勿論、等間隔のデータアクセスが連続して出るわけ
ではないので、様々な雑音の中から繰り返し同じ間隔で
出力されるアドレスの規則性を高精度で抽出している。
【0021】
【発明の実施の形態】以下、本発明について図面を参照
しながら説明する。
しながら説明する。
【0022】図1は、本発明の原理を示すブロック図で
ある。同図において、本発明によるメモリアクセス高速
化装置は、過去4つ分のメモリアクセスについて、アク
セスアドレスの規則性を調べている。レジスタD9,E
9,F9,G9は、請求項3の第一のバッファに相当
し、過去のメモリアクセスアドレスを記憶する。本例で
は、メモリアクセスの度に、レジスタD9,E9,F
9,G9がストローブされているため、常に、レジスタ
D9には1個前、レジスタE9には2個前のアクセスア
ドレスが格納されている。
ある。同図において、本発明によるメモリアクセス高速
化装置は、過去4つ分のメモリアクセスについて、アク
セスアドレスの規則性を調べている。レジスタD9,E
9,F9,G9は、請求項3の第一のバッファに相当
し、過去のメモリアクセスアドレスを記憶する。本例で
は、メモリアクセスの度に、レジスタD9,E9,F
9,G9がストローブされているため、常に、レジスタ
D9には1個前、レジスタE9には2個前のアクセスア
ドレスが格納されている。
【0023】新たなメモリアクセスが発生すると、その
メモリアクセスのアドレスと、レジスタD9,E9,F
9,G9、即ち過去のメモリアクセスアドレスとの差
(距離)が、減算器D,E,F,Gによって計算され
る。計算結果は、請求項3の第二のバッファの一部に相
当するレジスタD0,D1,D2,D3に格納されると
共に、過去のメモリアクセス時に計算された距離とも比
較される。
メモリアクセスのアドレスと、レジスタD9,E9,F
9,G9、即ち過去のメモリアクセスアドレスとの差
(距離)が、減算器D,E,F,Gによって計算され
る。計算結果は、請求項3の第二のバッファの一部に相
当するレジスタD0,D1,D2,D3に格納されると
共に、過去のメモリアクセス時に計算された距離とも比
較される。
【0024】例えば、レジスタD9と今回のメモリアク
セスアドレスの距離は、レジスタD0,D1,D2,D
3に格納されている前々回のメモリアクセスの際に計算
された距離と比較される。一致する距離があれば、今回
と前回,前回と前々回のアクセスで等間隔にメモりアク
セスしていることになり、更に次回も同じ間隔でメモリ
をアクセスする確率が高いことが予測される。
セスアドレスの距離は、レジスタD0,D1,D2,D
3に格納されている前々回のメモリアクセスの際に計算
された距離と比較される。一致する距離があれば、今回
と前回,前回と前々回のアクセスで等間隔にメモりアク
セスしていることになり、更に次回も同じ間隔でメモリ
をアクセスする確率が高いことが予測される。
【0025】距離の一致が検出された場合は、一致回数
バッファのカウント値が+1され、対応するバッファに
記憶される。図2に示す演算器−0,1,2,3がこの
機能を実現している。
バッファのカウント値が+1され、対応するバッファに
記憶される。図2に示す演算器−0,1,2,3がこの
機能を実現している。
【0026】図3は演算器−0の動作を示す説明図であ
る。同図において、演算器−0には、比較器C0,C
1,C2,C3の比較結果が入力されている。メモリア
クセスアドレスの距離が一致しなかった場合には、比較
器の出力が’0’となる。この結果、演算器−0からは
値’1’が出力され、レジスタD4にセットされる。す
なわち、バッファに記録されている限りでは、同じメモ
リアクセスアドレスの距離でアクセスしたことは無いこ
とを意味する。
る。同図において、演算器−0には、比較器C0,C
1,C2,C3の比較結果が入力されている。メモリア
クセスアドレスの距離が一致しなかった場合には、比較
器の出力が’0’となる。この結果、演算器−0からは
値’1’が出力され、レジスタD4にセットされる。す
なわち、バッファに記録されている限りでは、同じメモ
リアクセスアドレスの距離でアクセスしたことは無いこ
とを意味する。
【0027】メモリアクセスアドレスの距離が一致する
と、比較器の出力が’1’となる。例えば、比較器C0
でメモリアクセスアドレスの距離が一致すると、レジス
タD4にセットされた一致回数バッファのカウント値が
+1され、結果はレジスタD4にセットされる。もとの
レジスタD4の値は、レジスタE4にコピーされる。
と、比較器の出力が’1’となる。例えば、比較器C0
でメモリアクセスアドレスの距離が一致すると、レジス
タD4にセットされた一致回数バッファのカウント値が
+1され、結果はレジスタD4にセットされる。もとの
レジスタD4の値は、レジスタE4にコピーされる。
【0028】この一致回数の値が予め定められた回数を
超えると、図示しない回路により、連続したメモリアク
セス要求が発行される。
超えると、図示しない回路により、連続したメモリアク
セス要求が発行される。
【0029】レジスタD0,D1,D2,D3の内容
は、最新のメモリアクセスアドレスの距離が格納される
のと同時に、レジスタE0,E1,E2,E3にコピー
される。同時に、レジスタE0,E1,E2,E3の値
は、レジスタF0,F1,F2,F3にコピーされる。
レジスタF0,F1,F2,F3,G0,G1,G2,
G3についても同様である。
は、最新のメモリアクセスアドレスの距離が格納される
のと同時に、レジスタE0,E1,E2,E3にコピー
される。同時に、レジスタE0,E1,E2,E3の値
は、レジスタF0,F1,F2,F3にコピーされる。
レジスタF0,F1,F2,F3,G0,G1,G2,
G3についても同様である。
【0030】以上の動作により、常にレジスタD0,D
1,D2,D3にはレジスタD9に対応したメモリアク
セスアドレスの距離が常に格納されている。レジスタE
0,E1,E2,E3,F0,F1,F2,F3,G
0,G1,G2,G3についても同様である。
1,D2,D3にはレジスタD9に対応したメモリアク
セスアドレスの距離が常に格納されている。レジスタE
0,E1,E2,E3,F0,F1,F2,F3,G
0,G1,G2,G3についても同様である。
【0031】図4(a)は、二次元配列の内容を累算し
て一次配列に変換する単純なプログラムの例である。プ
ログラムは2重のD0ループから構成されており、内周
のループでは、B(J,I)のJが1から10までの範
囲が累算され、A(I)に代入される。
て一次配列に変換する単純なプログラムの例である。プ
ログラムは2重のD0ループから構成されており、内周
のループでは、B(J,I)のJが1から10までの範
囲が累算され、A(I)に代入される。
【0032】このプログラムをアセンブリ言語に置き換
えると、図4(b)のようになる。ループの最内周はL
ABEL2からENDまでであるが、この間に主記憶装
置からレジスタへのロード命令が式(1)から式(4)
までの4回出現する。式(1),式(2),式(4)
は、ループ最内周で主記憶装置上のアドレスは変化しな
いが、式(3)のアドレスは、毎回変化する。
えると、図4(b)のようになる。ループの最内周はL
ABEL2からENDまでであるが、この間に主記憶装
置からレジスタへのロード命令が式(1)から式(4)
までの4回出現する。式(1),式(2),式(4)
は、ループ最内周で主記憶装置上のアドレスは変化しな
いが、式(3)のアドレスは、毎回変化する。
【0033】2次元配列の場合、主記憶上のアドレス
は、一般的に図5のようになる。すなわち、B(1,
1)に続くアドレスはB(1,2)になり、配列の1要
素を8Byteとすると、B(2,1)はB(1,1)
から10x8Byte離れた場所になる。図4に示した
プログラムでは、配列B(I,J)のアクセス順序は図
5の黒色の位置になり、ループを廻る毎に80Byte
離れたアドレスをアクセスすることになる。
は、一般的に図5のようになる。すなわち、B(1,
1)に続くアドレスはB(1,2)になり、配列の1要
素を8Byteとすると、B(2,1)はB(1,1)
から10x8Byte離れた場所になる。図4に示した
プログラムでは、配列B(I,J)のアクセス順序は図
5の黒色の位置になり、ループを廻る毎に80Byte
離れたアドレスをアクセスすることになる。
【0034】図6は最内周のループを廻る度に、図1お
よび図2のレジスタ値がどのように変化するかを示した
ものである。変数が格納されている主記憶上のアドレス
は、Iの主記憶上のアドレスを0番地,Jの主記憶上の
アドレスを8番地,A(I)の開始アドレスを100番
地,B(J,I)の開始アドレスを200番地と仮定す
る。
よび図2のレジスタ値がどのように変化するかを示した
ものである。変数が格納されている主記憶上のアドレス
は、Iの主記憶上のアドレスを0番地,Jの主記憶上の
アドレスを8番地,A(I)の開始アドレスを100番
地,B(J,I)の開始アドレスを200番地と仮定す
る。
【0035】ループの1回目(図6(a)参照)では、
バッファに履歴が記録されていないため、特別な動作は
行わない。ループの2回目(図6(b)参照)になる
と、前回のループの履歴が残っているため、1回目のル
ープとは若干動作が異なる。B(1,1)のアドレス
(200番地)に続いて、A(1)のアドレス(100
番地)、Iのアドレス(0番地)が100番地飛びでア
クセスされたため、距離−100で3回目の連続アクセ
スがあったことが記録されている。このように、必ずし
も規則的なアクセスでなくても、アドレスのアクセス間
隔が等しくなると、等間隔のアクセスとして、バッファ
上に記録が残る。
バッファに履歴が記録されていないため、特別な動作は
行わない。ループの2回目(図6(b)参照)になる
と、前回のループの履歴が残っているため、1回目のル
ープとは若干動作が異なる。B(1,1)のアドレス
(200番地)に続いて、A(1)のアドレス(100
番地)、Iのアドレス(0番地)が100番地飛びでア
クセスされたため、距離−100で3回目の連続アクセ
スがあったことが記録されている。このように、必ずし
も規則的なアクセスでなくても、アドレスのアクセス間
隔が等しくなると、等間隔のアクセスとして、バッファ
上に記録が残る。
【0036】ループの3回目(図6(c)参照)では、
ループ毎に等間隔でアクセスを繰り返しているB(J,
I)が、等間隔のアクセスとして、レジスタ上に記録さ
れている。1回目のループでは200番地,2回目のル
ープでは280番地,3回目のループでは360番地
と、80番地間隔で規則的なアクセスをしている。ルー
プの4回目(図6(d)参照)になると、一致を検出し
たカウント値が3を示し、次も同じ間隔でアクセスを繰
り返すことが予測される。
ループ毎に等間隔でアクセスを繰り返しているB(J,
I)が、等間隔のアクセスとして、レジスタ上に記録さ
れている。1回目のループでは200番地,2回目のル
ープでは280番地,3回目のループでは360番地
と、80番地間隔で規則的なアクセスをしている。ルー
プの4回目(図6(d)参照)になると、一致を検出し
たカウント値が3を示し、次も同じ間隔でアクセスを繰
り返すことが予測される。
【0037】プロセッサから出力されるアドレスを監視
する限り、等距離で出るリクエストは4回に1回とな
り、単純な回路では、B(I,J)のアドレスの規則性
を見極めることは難しい。本発明のメモリアクセス高速
化方式を採用すれば、このようなケースでも、アクセス
アドレスの規則性から、次にアクセスするアドレスの規
則性を見極めることができる。
する限り、等距離で出るリクエストは4回に1回とな
り、単純な回路では、B(I,J)のアドレスの規則性
を見極めることは難しい。本発明のメモリアクセス高速
化方式を採用すれば、このようなケースでも、アクセス
アドレスの規則性から、次にアクセスするアドレスの規
則性を見極めることができる。
【0038】図7は、本発明のメモリアクセス高速化方
式を採用した情報処理装置の例を示すブロック図であ
る。同図において、プロセッサ1はキャッシュメモリ2
の制御機能を内蔵しているため、外部回路によってキャ
ッシュの内容を書き換えることはできないと仮定した。
このため。アクセスの規則性をもとに、主記憶装置4か
ら先行して読み出したデータは、バッファメモリ3と呼
ばれる一時記憶装置に格納される。
式を採用した情報処理装置の例を示すブロック図であ
る。同図において、プロセッサ1はキャッシュメモリ2
の制御機能を内蔵しているため、外部回路によってキャ
ッシュの内容を書き換えることはできないと仮定した。
このため。アクセスの規則性をもとに、主記憶装置4か
ら先行して読み出したデータは、バッファメモリ3と呼
ばれる一時記憶装置に格納される。
【0039】前記キャッシュメモリ2のミスが発生する
と、バッファメモリ3内に該当するデータがあるか検索
し、データがバッファメモリ内に存在する場合、主記憶
装置4からデータを読み出すことなくバッファメモリ3
からキャッシュメモリにデータを転送する。主記憶装置
からのデータ読み出しは、一般的にかなり長い時間を要
するため、予めバッファメモリにデータを読み出してお
く本方式は、高速化の効果がある。
と、バッファメモリ3内に該当するデータがあるか検索
し、データがバッファメモリ内に存在する場合、主記憶
装置4からデータを読み出すことなくバッファメモリ3
からキャッシュメモリにデータを転送する。主記憶装置
からのデータ読み出しは、一般的にかなり長い時間を要
するため、予めバッファメモリにデータを読み出してお
く本方式は、高速化の効果がある。
【0040】プロセッサ1とキャッシュメモリ2の間の
バスは、図1の回路に相当するアドレス監視回路5によ
って監視されている。監視しているアドレスに規則性が
検出されたときには、リクエスト生成回路6によって主
記憶装置4の先行読み出し要求が生成される。
バスは、図1の回路に相当するアドレス監視回路5によ
って監視されている。監視しているアドレスに規則性が
検出されたときには、リクエスト生成回路6によって主
記憶装置4の先行読み出し要求が生成される。
【0041】先行して読み出されたデータが一定期間使
用されない場合は、アクセス規則性の予測が外れたもの
と判断し、リクエスト中止回路7によってリクエストの
生成を中断するが、予測に基づいて主記憶装置から読み
出したデータが実際にプロセッサによって使われている
時には、引き続きリクエストの生成を継続する。
用されない場合は、アクセス規則性の予測が外れたもの
と判断し、リクエスト中止回路7によってリクエストの
生成を中断するが、予測に基づいて主記憶装置から読み
出したデータが実際にプロセッサによって使われている
時には、引き続きリクエストの生成を継続する。
【0042】アクセス規則性の予測に基づき、主記憶装
置に出されたリクエストが例外を発生することも考えら
れる。プロセッサからのリクエストに伴う記憶アクセス
例外であれば、プロセッサに割り込みをかけて例外処理
を行う必要があるが、アクセス規則性の予測に基づいて
主記憶装置に出力されたリクエストの場合は例外を発生
してはならない。このように、リクエスト元に応じて記
憶アクセス例外を抑止する回路がメモリ例外無効化回路
8である。
置に出されたリクエストが例外を発生することも考えら
れる。プロセッサからのリクエストに伴う記憶アクセス
例外であれば、プロセッサに割り込みをかけて例外処理
を行う必要があるが、アクセス規則性の予測に基づいて
主記憶装置に出力されたリクエストの場合は例外を発生
してはならない。このように、リクエスト元に応じて記
憶アクセス例外を抑止する回路がメモリ例外無効化回路
8である。
【0043】
【発明の効果】本発明によれば、メモリアクセスのアド
レスを高精度で予測することができるので、キャッシュ
メモリに格納できないような大規模なデータを扱うプロ
グラムでも、キャッシュのヒット率の低下を気にするこ
となく、MPUの性能をフルに引き出すことができる。
レスを高精度で予測することができるので、キャッシュ
メモリに格納できないような大規模なデータを扱うプロ
グラムでも、キャッシュのヒット率の低下を気にするこ
となく、MPUの性能をフルに引き出すことができる。
【0044】すなわち、大規模データを扱うプログラム
では、配列上のデータをある規則(距離)に従って連続
アクセスするケースが多い。連続アクセスのアクセス間
隔は、ソフトウェアを書き換えれば容易に知ることがで
きるが、市販のMPU上で動作する流通アプリケーショ
ンを移植する際、マシン固有のチューニングを施すのは
容易なことではない。ソフトウェアチューニング無し
に、同じMPUを使う他社のマシンよりも高い性能が出
せれば、差別化の強力な手段となりうる。本発明は、こ
のような差別化の難しい、市販MPUを使ったシステム
で大きな効果を期待することができる。
では、配列上のデータをある規則(距離)に従って連続
アクセスするケースが多い。連続アクセスのアクセス間
隔は、ソフトウェアを書き換えれば容易に知ることがで
きるが、市販のMPU上で動作する流通アプリケーショ
ンを移植する際、マシン固有のチューニングを施すのは
容易なことではない。ソフトウェアチューニング無し
に、同じMPUを使う他社のマシンよりも高い性能が出
せれば、差別化の強力な手段となりうる。本発明は、こ
のような差別化の難しい、市販MPUを使ったシステム
で大きな効果を期待することができる。
【図1】本発明の実施の一形態を示すブロック図。
【図2】本発明の実施の一形態を示すブロック図(つづ
き)。
き)。
【図3】演算器の論理を示す説明図。
【図4】アプリケーションプログラムの例を示す説明
図。
図。
【図5】2次元配列の処理動作を示す説明図。
【図6】本発明の動作例を示す説明図。
【図7】本発明を適用した情報処理装置の例を示すブロ
ック図。
ック図。
1 プロセッサ 2 キャッシュメモリ 3 バッファメモリ 4 主記憶装置 5 アドレス監視回路 6 リクエスト生成回路 7 リクエスト中止回路 8 メモリ例外無効化回路 C0〜C9,CA〜CF 比較器 D0〜D9,E0〜E9,F0〜F9,G0〜G9
レジスタ
レジスタ
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平3−63852(JP,A) 特開 平6−314241(JP,A) 特開 昭53−134335(JP,A) 特開 平4−369061(JP,A) 特開 平6−51982(JP,A) 特開 平8−161226(JP,A) 特開 平7−64862(JP,A) 特開 平6−342403(JP,A) 特開 平5−181748(JP,A) 特開 平8−212054(JP,A) 特開 平6−28180(JP,A) 特開 平3−102443(JP,A) 特開 平2−18645(JP,A) 特表 平7−506921(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 12/08 - 12/12 G06F 9/38 G06F 17/16 G06T 1/60
Claims (4)
- 【請求項1】 過去のメモリアクセスのアドレス履歴を
保持する第一のバッファと、メモリアクセスの際にその
アドレスと前記第一のバッファに保持されたアドレス履
歴の一部もしくは全部との間の距離を計算する手段と、
前記第一のバッファに記憶されたアドレスとそれ以前の
一個以上のアドレスとの距離および一致回数を保持する
第二のバッファと、新たなメモリアクセスに際しそのア
ドレスと前記第一のバッファに記憶された過去のメモリ
アクセスのアドレスの一つとの距離が前記第二のバッフ
ァに保持されている過去のメモリアクセスに対応した距
離の少なくとも一つと一致する場合にはそのアクセスの
組み合わせに対応する一致回数を記憶する手段と、前記
一致回数があらかじめ定めた回数に達したときに前記距
離で連続したアクセスを発行する手段とを有することを
特徴とするメモリアクセス高速化装置。 - 【請求項2】 請求項1記載のメモリアクセス高速化装
置において、連続してアクセスしたデータが使用されな
いときには前記連続したアクセスを停止する手段を備え
ることを特徴とするメモリアクセス高速化装置。 - 【請求項3】 請求項1または2記載のメモリアクセス
高速化装置において、連続してアクセスしたデータを一
時記憶バッファに格納しキャッシュメモリには直接格納
しないことを特徴とするメモリアクセス高速化装置。 - 【請求項4】 請求項1または2または3記載のメモリ
アクセス高速化装置において、連続したアクセスの際に
例外が発生しても前記例外を無視する手段を備えること
を特徴とするメモリアクセス高速化装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP09326692A JP3085267B2 (ja) | 1997-11-27 | 1997-11-27 | メモリアクセス高速化装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP09326692A JP3085267B2 (ja) | 1997-11-27 | 1997-11-27 | メモリアクセス高速化装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH11161489A JPH11161489A (ja) | 1999-06-18 |
| JP3085267B2 true JP3085267B2 (ja) | 2000-09-04 |
Family
ID=18190605
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP09326692A Expired - Lifetime JP3085267B2 (ja) | 1997-11-27 | 1997-11-27 | メモリアクセス高速化装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3085267B2 (ja) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP3175675B2 (ja) | 1997-12-04 | 2001-06-11 | 日本電気株式会社 | プリフェッチ制御装置 |
| WO2007099582A1 (ja) | 2006-02-28 | 2007-09-07 | Fujitsu Limited | プリフェッチ制御装置 |
| JP6468100B2 (ja) * | 2015-07-03 | 2019-02-13 | 富士通株式会社 | メモリシステム、メモリ制御方法及びプログラム |
-
1997
- 1997-11-27 JP JP09326692A patent/JP3085267B2/ja not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| JPH11161489A (ja) | 1999-06-18 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5446876A (en) | Hardware mechanism for instruction/data address tracing | |
| JP2505086B2 (ja) | アドレス生成機構及びデ―タの事前取り出し方法 | |
| US7506105B2 (en) | Prefetching using hashed program counter | |
| EP1031919B1 (en) | Method for prefetching structured data | |
| JP3739491B2 (ja) | プリフェッチ命令を用いるハーバードアーキテクチャキャッシュメモリの調和したソフトウェア制御 | |
| JP3425158B2 (ja) | マルチバッファデータキャッシュを具えているコンピュータシステム | |
| US7640420B2 (en) | Pre-fetch apparatus | |
| US20060248279A1 (en) | Prefetching across a page boundary | |
| CN109461113B (zh) | 一种面向数据结构的图形处理器数据预取方法及装置 | |
| US20060248280A1 (en) | Prefetch address generation implementing multiple confidence levels | |
| US5822788A (en) | Mechanism for prefetching targets of memory de-reference operations in a high-performance processor | |
| US9235523B2 (en) | Data processing apparatus and control method thereof | |
| US9971695B2 (en) | Apparatus and method for consolidating memory access prediction information to prefetch cache memory data | |
| JP2575598B2 (ja) | マルチプロセッサ・コンピュータ・システムのシステム・メモリの並行性を増大する方法およびシステム | |
| JP2001290706A (ja) | Tlbキャッシュのためのプリフェッチ | |
| US20030088863A1 (en) | Method and apparatus for selecting references for prefetching in an optimizing compiler | |
| JP2017191503A (ja) | 演算処理装置、および演算処理装置の制御方法 | |
| CN110291507B (zh) | 用于提供对存储器系统的加速访问的方法和装置 | |
| JP3085267B2 (ja) | メモリアクセス高速化装置 | |
| US6772321B2 (en) | Method and apparatus for using an assist processor and value speculation to facilitate prefetching for a primary processor | |
| US20030154342A1 (en) | Evaluation and optimisation of code | |
| US12360907B2 (en) | Region pattern-matching hardware prefetcher | |
| CN114116537B (zh) | 一种地址与指令缓存自适应融合的方法及装置 | |
| US7437504B2 (en) | Reading a storage medium | |
| JP2783285B2 (ja) | 情報処理装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20000606 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20070707 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080707 Year of fee payment: 8 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090707 Year of fee payment: 9 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100707 Year of fee payment: 10 |