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

木村啓二

tag: 組み込み

技術解説 2005年2月18日

●○● Column ●○●
◆ライト・バック方式の場合のsnoop cashe利用法◆

 ライト・バック方式の場合のsnoop cacheの利用法を,図A-1を使って説明します.

 図A-1のキャッシュには,通常のライン情報(データが有効かどうか,データが修正されているかどうか)のほかに,データがほかのキャッシュと共有されているかどうかを表す情報が付加されています.この図の場合,はじめはCPU0とCPU1の両方のキャッシュに同じデータ「A」が共有されているので,両キャッシュとも該当するラインは「共有」の状態となっています.ここで,CPU0はAをA'に更新すると同時に,「Aを更新した」という情報をバスに流し,同時にラインの共有状態を取り下げます.CPU1のキャッシュはバスを監視しており,Aが更新されたことを検知して,自分の持っているAの乗っているラインを無効化し,かつラインの共有状態を取り下げます.

 次にCPU1がAを読み出します.これはミス・ヒットとなるので,Aの読み出し要求がバスに送出されます.CPU0はA'のラインが修正済みかつ共有ではないという状態を示していることから最新のデータA'を持っていることになり,このA'の乗っているラインをCPU1のキャッシュに転送します.

 このように,ライト・バック方式のキャッシュでsnoop cacheを構成する場合は,バスに対する処理要求(バス・トランザクション)として,通常の読み出し/書き込み要求のほかに,更新などの要求が加わります.また,キャッシュの制御に対しても,有効,修正のほかに,共有などの状態が各ラインに付加されます.これらのラインの状態が,通常のCPUからの読み出し/書き込み要求や,監視しているバスに送出された要求に応じて遷移していきます.これらのバス・トランザクションと状態遷移によって,キャッシュの一貫性を維持します.

f11_01.gif
図A-1 ライト・バック方式のキャッシュにおけるsnoop cacheのようす
複数のキャッシュで同一のデータが共有されている場合,CPU0のキャッシュ上のデータを修正すると,バスにデータの更新要求が流れる.データを共有しているCPU1のキャッシュは更新要求を検出し,自分のデータを無効化する.無効化されたデータをCPU1が読む場合,最新情報を持つCPU0のキャッシュからデータが転送される.

組み込みキャッチアップ

お知らせ 一覧を見る

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