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

木村啓二

tag: 組み込み

技術解説 2005年2月18日

● マルチプロセッサでキャッシュの一貫性を維持する

 もう少し詳しく見ていきましょう.図1のようなシステムで,マルチプロセッサに対応していないCPUを単に接続するとどうなるかを考えてみます(図3).話を単純にするため,CPUの数は二つ,キャッシュは1次キャッシュのみとし,データの書き込みはライト・スルー方式注1を用いて随時メイン・メモリにデータを書き込むものとします.

 まず,図3(a)の初期状態では,CPU0とCPU1の両方のキャッシュに同じデータAがあります.ここでCPU0がAをA'に更新すると,メイン・メモリ上のデータもA'に更新されます.しかし,更新情報はCPU1のキャッシュまでは伝わらないので,CPU0のキャッシュ,CPU1のキャッシュ,メイン・メモリの3者の間でデータの一貫性(cohe-rence)がとれなくなります(これをcache coherence problemという).

 どのようにすれば,データの一貫性を維持することができるのでしょうか? 一般的には,次のような方法を用います.キャッシュとメモリの間はバスで接続されていると仮定します(図3(b)).すると,データを書き込む場合,その書き込み要求はバスに接続された全要素にブロードキャスト(発信)されることになります.各キャッシュはブロードキャストされた要求を監視(snoop)し,書き込まれるデータが自分のキャッシュにあるものと同一である場合に,そのキャッシュ上のデータが乗っているラインを無効化します.このようにすれば,次のアクセス時にはミス・ヒット処理により,メモリから最新のデータを取得することができ,結果としてキャッシュの一貫性が維持できます(このようなしくみを持つキャッシュをsnoop cacheという).

 なお,ここまでの説明はライト・スルー方式を仮定していましたが,snoop cacheはライト・バック方式注2のキャッシュにも,いくつかの拡張により対応できます(コラム「ライト・バック方式の場合のsnoop cache利用法」を参照).

 これらの,一貫性を維持するための戦略を「cache coherence protocol」と言います.すなわち,マルチプロセッサ対応のCPUとは,cache coherence protocolをサポートしているCPUであると言えます.cache coherence protocolには,ラインが取りうる状態の数に応じていくつかの種類があります.

 注1;ライト・スルー方式とは,CPUがメモリにデータを書き込むときに,キャッシュとメイン・メモリの両方にデータを書き込む方式である.
 注2;ライト・バック方式とは,CPUがメモリにデータを書き込むときに,まずキャッシュのみにデータを書き込んでおき,メイン・メモリには後で書き込む方式である.

f03_01.gif

f03_02.gif
図3  複数のプロセッサを利用したシステム
マルチプロセッサに対応していない(a)の場合,データの書き込み時に各CPUのキャッシュとメイン・メモリの間で,データの一貫性がとれなくなる場合がある.対応している(b)の場合,snoop cacheによって各キャッシュがバスに送出された要求を監視し,必要に応じて自分のデータを無効化することにより,キャッシュの一貫性を維持する.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! 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日