アダルト・ヴァイオリン May the force be with you..

2008年7月14日

SN/Xデータキャッシュパッチ

Filed under: Weblog — い~ぐる @ 9:45 AM

本来ならば明日某所で解説を行った後にブログに載せるのだけれど、一日前倒しで掲載して、明日はこのパッチを用いて解説してしまおう。

SN/Xをパイプライン化したときに、制御ハザードは分岐予測で押さえたが、ロード命令に起因する真のデータハザードは対処していなかった。命令実行のステージで、キャッシュを引くことができれば、他の命令と同じタイミングでレジスタ書き込みが行えるので、データハザードを起こさなくなる。

例題では元々メモリへのアクセス頻度が局所的なので、比較的小容量のキャッシュでOKであり、アドレス計算をしたとしても、小容量のキャッシュアクセスは実行ステージで実施しても遅延の問題は少ないだろう。

フルのキャッシュを用意するのは大変なので、分岐予測ユニットを流用して、ストアデータキャッシュとして利用できるようにしておく。

パイプランSN/X データキャッシュパッチ

snxp.patch~snxp4.patchまで、全てターゲットは snx.sfl にしているが、各パッチはインクリメンタリに作成しているので、順を追って差分を読んでいく方が分かりやすいかもしれない。

7/16追記:
受講生のI氏がロード時にもキャッシュ登録して効果があったので、ロード時登録をするデータキャッシュパッチを作成しておいた。(自分のサンプルはメモリデータはすべてストア命令で作っていたので、あまりロード時登録の効果は多くないかと思っていたが、何しろエントリ数が極少なので、十分な効果が得られる)


パイプランSN/X データキャッシュパッチ2

Powered by WordPress