あそびばLinux

Linux関連を中心に

cache bounce

キャッシュバウンスなる物を始めて知ったのでメモ。

情報系の学生さんなら講義で学ぶのだろうか。

 

cache line bouncing

http://arighi.blogspot.jp/2008/12/cacheline-bouncing.html

 

マルチプロセッサ環境(各プロセッサ毎にキャッシュ有)でマルチスレッドなプログラムを想定

・変数A、変数BはそれぞれスレッドA,Bでのみ使用される

・スレッドAはプロセッサAで動作、スレッドBはプロセッサBで動作

 

という上記の条件において変数A,Bが同一のキャッシュライン内に格納されてしまった場合、プロセッサA,B間のキャッシュコヒーレンスを保つためのプロトコル動作が大きなオーバーヘッドになり、結果としてパフォーマンスが低下する。

・・・という事らしい。

 

対策としてはキャッシュラインのサイズを考慮に入れて、適当なpadding用データを挿入する事で同一のキャッシュラインに格納される事を防いでいる模様。

 

こういった問題を体系的に学んでいない身としてはこういう問題は非常に面白い。

もっと技術情報収集のアンテナをもっと高くしたいなぁ。