今さら聞けないマルチプロセッサの基礎教えます ――キャッシュの共有,割り込みの共有,OSによる制御

木村啓二

tag: 組み込み

技術解説 2005年2月18日

● キャッシュの利用にも注意が必要

 キャッシュの利用についても,単一プロセッサにおけるプログラム開発以上の注意が必要となります.基本的に,キャッシュに乗ったデータはなるべく長い間使い回すこと,むだなキャッシュ間データ転送を行わないこと,の2点を考慮します.ここでは具体例として,キャッシュ間データ転送について説明します.

 図7では,CPU0のみが扱うデータAとCPU1のみが扱うデータBが,同一ライン上に配置されています.これらのデータA,Bが両プロセッサのキャッシュにあるとき,CPU0がAを修正すると,(データの共有情報はライン単位で管理されているので)CPU1のキャッシュ上のA,Bが配置されているラインは無効化されることになります.すなわち,後でCPU1がBにアクセスしようとするとむだなミス・ヒットが起こり,結果としてむだなデータ転送が生じることになります.CPU1がBを修正するときも同様のことが起こります.

 このように,本来,共有していないデータをキャッシュ上の同一ラインで共有してしまう状況を「false sharing」と言います.これを避けるためには,複数のCPUで共有していないデータを別々のラインに配置するようにします 注6

 このほか,マルチプロセッサ・システムのプログラミング開発では,デッドロックなど,プロセッサ間の待ち合わせ(同期)に関係することにも注意する必要があります(4)

 なお,マルチプロセッサ・システムについてさらに詳しく勉強する場合は,参考文献(4),(5)を参照するとよいでしょう.

 注6;具体的な手法として,隣り合って配置されたデータが共有されていない場合,それらのデータの間にダミーのデータ(pad)を挿入して,キャッシュ上では別々のラインに配置されるようにする「padding」という手法がある.

f07_01.gif
図7 false sharingの例
AとBは同一ライン上に配置されているが,それぞれCPU0,CPU1からのみアクセスされるデータである.CPU0がAを修正すると,本来,関係ないはずのCPU1のキャッシュのBまで無効化されてしまう.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日