P4-PCやXeon-PCてPMG4より速いんですか?その6

このエントリーをはてなブックマークに追加
707687>MACオタさん
>>690
> データの局所性という話わ,プログラムの構造によるのであって,キャッシュ
> ラインのサイズとわ関係ないす。というかキャッシュ上にデータがありさえ
> すればハードウェアわ高速に動くのであって,局所的に集中していないとキャ
> ッシュがうまく動作しないのわ,単にキャッシュのセット数が少ないからす。

違う。ここははっきりと違う、と言い切るよ。

キャッシュは、メモリアクセスの時間局所性(Time locality)と空間局所性(spatial locality)の 2 つの性質に基づいて高速化を狙うもの。
時間局所性とは「アクセスがあったデータは、近いうちにまたアクセスされる」とう統計的性質、空間局所性は「アクセスがあったデータの近傍のデータは、
近いうちにアクセスされる」という統計的性質。
キャッシュラインのサイズとデータの局所性が関係ないと考えるなら、それは空間局所性のことを忘れているから。

キャッシュの associativity(セット数のことね) は line size とある程度独立している。
例えば、full associative で line size が 1 ワードのキャッシュシステムを考えてみよう。タグの検索に掛かるは 2〜4way と変わらないとする。
これは MAC オタさんの理想のキャッシュシステムということになる。でも、このシステムと きちんと line size を見積もった 4〜8way associative
の cache を比べるてどちらが速いと思う?

だいたいプログラムの構造・性質によって動作が読みきれるのであれば、時間局所性すら使う必要はないでしょ?
ならキャッシュは要らない。プリロード命令と scrratch pad があればいい。
しかし現実に、OS でも DB でも サーバーアプリでも、メモリアクセスは読みきれない。HPC 分野のアプリですら完全には読み切れないの。
# 余談だけど、同一容量のキャッシュでもセット数が多くなるに従ってしょう消費電力は多くなるよ。

> 一度に64byte読み込めば高速という話わ,プリフェッチ命令でカバーすべき
> で,本質的な理由わトランジスタ数の制約によると思われるす。
例えば、木構造データの探索時にプリフェッチ命令をどのように入れる?
あるいは OS のカーネルがプロセス構造体へアクセスするときに、どのようなキャッシュ最適化がある?