【コラム】
MSIプロトコルやMOSIプロトコルでは、メモリから読まれたままの状態のキャッシュラインはShared状態であるが、このキャッシュラインに書き込みを行う場合は、他のプロセサのキャッシュにも同じキャッシュラインが存在する可能性があるので、書き込み前にスヌープして無効化を行う必要がある。
しかし、一般的には各プロセサは別々の仕事をしている場合が多く、複数のプロセサが同時並行的に同じデータを使うことは比較的頻度が低いので、この無効化は無駄な操作になる場合が多い。
この無駄を省こうというのがMESIプロトコル(メシと発音する)である。MESIプロトコルでは、Modified、Shared、Invalidに加えてExclusiveという状態を設ける。このExclusive状態は、メモリから読んだままで変更されておらず、かつ、他のプロセサのキャッシュには同じアドレスのキャッシュラインは存在していないという状態である。
ストア命令による書き込みの場合、そのアドレスのキャッシュラインがExclusive状態であれば他のプロセサのキャッシュに存在しないことが保証されているので、スヌープ、無効化を省いてキャッシュへの書き込みを行うことができ、効率が良い。
MESIプロトコルでは、キャッシュをミスしたメモリアクセスはスヌープを行い、他のプロセサにそのアドレスのキャッシュラインが存在しない場合は、メインメモリにアクセスしてデータを得る。この場合、他のプロセサのキャッシュにはそのアドレスのキャッシュラインは存在しないので、その状態はExclusiveとする。
一方、他のプロセサのキャッシュに目的のアドレスのキャッシュラインが存在する場合は、それがModified状態のキャッシュラインである場合は、前出の図9.6に示したMSIプロトコルの場合と同様に、Modifiedのキャッシュラインをメインメモリに書きだし、メモリ経由で書きかえられたデータを受け取る。そして、ModifiedのキャッシュラインはShared状態に変更する。また、データを得たプロセサのキャッシュラインも、他のプロセサのキャッシュに同じアドレスのキャッシュラインが存在するので、Shared状態とする。
キャッシュミスのスヌープで他のプロセサにExclusive、あるいはSharedのキャッシュラインがあることが判明した場合は、メインメモリからデータを読みキャッシュミスしたプロセサのキャッシュに書き込む。この場合、同じアドレスのキャッシュラインが複数のプロセサのキャッシュに存在することになるので、Exclusiveであったキャッシュラインの状態はSharedに変更し、新たにメモリから同じデータを読み込んだプロセサのキャッシュラインもShared状態とする。
MOSIプロトコルの場合は、プロセサのキャッシュ間で直接データ転送を行う制御機構が必要となるが、MSI、あるいは、MESIプロトコルを使用する場合は、メインメモリへの書きだしの終了をアクセス元のプロセサに連絡する必要はあるが、メモリアクセスは通常の書き込みと読み出しで済み、キャッシュライン間転送のような特別な機構が要らないというメリットがある。
| ビールの"のど越し"感にはホップの香りが重要 - サッポロビールが発見 [09:00 5/18] |
| Linux Mint 15登場迫る [08:00 5/18] |
| 米Google、量子コンピュータ施設を開設 - 機械学習の研究に活用 [05:50 5/18] |
| 産総研など、夏季と冬季で太陽光を自動調節する省エネ調光シートを開発 [19:37 5/17] |
| 4連続の大規模な太陽フレア発生 [19:08 5/17] |
|
「Blink(チカチカしている)」ってどんな意味?【知っているとちょっとカッコいい英語のコネタ】 [09:00 5/19] ライフ |
|
住宅用消火器の扱い方、正しくないものは?【住まいの毎日クイズ】 [09:00 5/19] 住まい・インテリア |
|
(合コンで)「彼女いない歴何年?」【女性の恋愛心理】 [09:00 5/19] 恋愛・結婚 |
|
ホンダのハイブリッド専用車「インサイト」が3度目のマイナーチェンジで装備をアップデート [08:03 5/19] ライフ |
|
[AKB48]第5回総選挙21日投票スタート 熱戦の歴史を振り返る [08:00 5/19] エンタメ |