(Translated by https://www.hiragana.jp/)
MESIプロトコル - Wikipedia コンテンツにスキップ

MESIプロトコル

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』
MESIプロトコルの状態じょうたい遷移せんい
MESIプロトコルのアクティビティ

MESIプロトコル別名べつめいイリノイ・プロトコル)とは、マルチプロセッサシステムでメモリキャッシュメモリ同期どうきをとるキャッシュコヒーレンシメモリ一貫いっかんせいのプロトコルであり、ライトバック方式ほうしきのキャッシュでひろ使つかわれている。イリノイ・プロトコルという別名べつめいイリノイ大学だいがくアーバナ・シャンペーンこう開発かいはつされたことに由来ゆらいする。

インテルは、「486プロセッサで以前いぜんから使つかわれていたライトスルーキャッシュにくわえて、より効率こうりつてきなライトバックキャッシュをサポートする」[1]としてPentiumプロセッサでMESIプロトコルを採用さいようした。そのためパーソナルコンピュータでもひろ使つかわれている。

概要がいよう

[編集へんしゅう]

かくキャッシュラインは以下いかの4状態じょうたいのいずれかにある。状態じょうたいはキャッシュラインのタグにふくまれる(2bitあらわされる)。

  • M - Modified(変更へんこう): 当該とうがいキャッシュだけに存在そんざいし、しゅ記憶きおくじょうから変更へんこうされている(dirty)。のCPUがこのキャッシュラインに相当そうとうするしゅ記憶きおくをリードするのを許可きょかするまえに、キャッシュ機構きこうはこのキャッシュラインをいずれかの時点じてんしゅ記憶きおくもどさなければならない。
  • E - Exclusive(排他はいた): 当該とうがいキャッシュだけに存在そんざいするが、しゅ記憶きおくじょう一致いっちしている(clean)。
  • S - Shared(共有きょうゆう): システムないほかのキャッシュにもおなじキャッシュラインが存在そんざいしている(しゅ記憶きおくとも内容ないよう一致いっち)。
  • I - Invalid(無効むこう): このキャッシュラインは無効むこう

任意にんいの2つのキャッシュがあるとき、それぞれの対応たいおうするキャッシュラインがとりうる状態じょうたい組合くみあわせはつぎのようになる。

 M   E   S   I 
 M  × × × チェック
 E  × × × チェック
 S  × × チェック チェック
 I  チェック チェック チェック チェック

動作どうさ

[編集へんしゅう]

典型てんけいてきシステムでは、複数ふくすうのキャッシュがメインメモリの接続せつぞくされたバス共有きょうゆうしている。それぞれのキャッシュにはCPU接続せつぞくされており、それがリード要求ようきゅうやライト要求ようきゅう発行はっこうする。このようなシステムで全体ぜんたいとして共有きょうゆうしているしゅ記憶きおくへのアクセスを最小さいしょうにすることが目的もくてきである。

Invalid状態じょうたい以外いがいのキャッシュラインはリード要求ようきゅうたすことができる。Invalid状態じょうたいのラインにリード要求ようきゅう場合ばあいしゅ記憶きおくから内容ないよう必要ひつようがある(Shared か Exclusive 状態じょうたい遷移せんいする)。

ライト要求ようきゅう実行じっこうできるのは、Modified状態じょうたいかExclusive状態じょうたい場合ばあいのみである。Shared状態じょうたいなら、みをおこなまえにシステムないほかのキャッシュ(の該当がいとうするキャッシュライン)を Invalid 状態じょうたいにしなければならない。これは、通常つうじょうブロードキャスト操作そうさ実行じっこうされ、その操作そうさRead For Ownership (RFO)ぶ。

キャッシュ機構きこうは Modified状態じょうたい以外いがいのキャッシュラインをいつでもてて Invalid状態じょうたいにすることができる。Modified状態じょうたいのラインはかならしゅ記憶きおくもどさなければならない。

Modified状態じょうたいのキャッシュラインをつキャッシュ機構きこうは、バスじょうながれを監視かんしして(バススヌープ)、対応たいおうするしゅ記憶きおくじょう位置いちへのリード要求ようきゅうをインターセプトして、それをさい試行しこう状態じょうたいにする。そして自身じしんつキャッシュラインの内容ないようおも記憶きおくもどし、そのキャッシュラインの状態じょうたいを Shared に遷移せんいさせる。

Shared 状態じょうたいのキャッシュラインをつキャッシュ機構きこうもバススヌープによってのCPUからの無効むこう要求ようきゅうり、対応たいおうするラインをてる(Invalid状態じょうたい遷移せんいさせる)。

Exclusive状態じょうたいのキャッシュラインをつキャッシュ機構きこうもバススヌープでのCPUのトランザクションを監視かんしし、対応たいおうするアドレス範囲はんいへのアクセスがあったら Shared 状態じょうたい遷移せんいさせる。

Modified状態じょうたいとExclusive状態じょうたいは、システムないのそのキャッシュラインの所有しょゆうけんゆうしているため、明確めいかくである。Shared 状態じょうたいはあいまいなところがあり、のCPUのキャッシュが該当がいとうキャッシュラインをてたときに実際じっさいには Exclusive状態じょうたいになるべき場合ばあいがあるが、そのような遷移せんい通常つうじょうおこなわれない(そのためにはブロードキャストが必要ひつようだが、実際じっさい問題もんだいとしてあまり意味いみい)。

そういった意味いみでは Exclusive状態じょうたいというのは若干じゃっかん日和見ひよりみてき最適さいてきである。Shared状態じょうたいのキャッシュラインに変更へんこうくわえる場合ばあい無効むこう要求ようきゅうをブロードキャストする必要ひつようがあると規定きていすることで、Exclusive状態じょうたいのキャッシュラインの更新こうしんはトランザクションを必要ひつようとしないのである。

Read For Ownership

[編集へんしゅう]

Read For Ownership (RFO)キャッシュコヒーレンシプロトコルの操作そうさの1つで、リードと無効むこうブロードキャストをわせたものである。これはあるキャッシュラインにさい、そのキャッシュの当該とうがいキャッシュラインがExclusive状態じょうたいでもModified状態じょうたいでもないときにおこなうもので、つまりそのキャッシュラインはMESIプロトコルではShared状態じょうたいかInvalid状態じょうたいである。この操作そうさによりぜんプロセッサの当該とうがいキャッシュラインはInvalid状態じょうたいへと遷移せんいさせられる。RFOトランザクションはそのメモリアドレスにむことを前提ぜんていとしたリード操作そうさである。したがってこの操作そうさ排他はいたてきである。それによりそのキャッシュにはデータがもたらされ、ぜんプロセッサの当該とうがいキャッシュラインは無効むこうされる。

そののキャッシュプロトコル

[編集へんしゅう]

MSIプロトコル

[編集へんしゅう]

MSIプロトコルはExclusive状態じょうたいたないキャッシュプロトコル。MESIプロトコルでExclusive状態じょうたいとなるような状況じょうきょうでは、Shared状態じょうたいとなる。

Invalid状態じょうたいのキャッシュラインにCPUからリードをおこな場合ばあいのキャッシュの当該とうがいキャッシュラインがModified状態じょうたいでないことを保証ほしょうしなければならないが、その方式ほうしきはアーキテクチャによってことなる。一般いっぱんてき方式ほうしきとしてはリード要求ようきゅうのブロードキャストがないかバススヌーピングかんする。また、キャッシュないかくキャッシュラインを最近さいきんリードしたキャッシュがどれかをしめ情報じょうほう格納かくのうしておく方式ほうしきもある。Modified状態じょうたいのキャッシュラインをべつのキャッシュがっていた場合ばあい、その内容ないようおも記憶きおくもどし、キャッシュライン自体じたいはShared状態じょうたいかInvalid状態じょうたいへと遷移せんいしなければならない。Modified状態じょうたいのキャッシュラインがもどされると、当該とうがいキャッシュラインへはしゅ記憶きおくのShared状態じょうたいのキャッシュから内容ないようみ、Shared状態じょうたいへと遷移せんいする。

ライト要求ようきゅう当該とうがいキャッシュラインがModified状態じょうたいならローカルにキャッシュにむだけでむ。Shared状態じょうたいなら、のキャッシュのShared状態じょうたいのキャッシュラインを無効むこうする必要ひつようがある。これもリードと同様どうようにバススヌーピングなどで実現じつげんする。そのうえでModified状態じょうたい遷移せんいしてローカルにキャッシュにライトをおこなう。Invalid状態じょうたい場合ばあいのキャッシュのShared状態じょうたいとModified状態じょうたいのキャッシュラインを無効むこうしなければならない。べつのキャッシュの当該とうがいキャッシュラインがModified状態じょうたいなら、そのキャッシュラインの内容ないようおも記憶きおくもどすか、ライト要求ようきゅうしたキャッシュにたいして内容ないようおくる。なお、一般いっぱんにCPUのライト要求ようきゅうはせいぜいワード単位たんいまでであり、キャッシュラインは複数ふくすうワードという構成こうせい一般いっぱんてきであるため、Invalid状態じょうたいでのライト要求ようきゅう場合ばあいみのまえ当該とうがいキャッシュライン全体ぜんたいんでおく必要ひつようがある。

任意にんいの2つのキャッシュがあるとき、それぞれの対応たいおうするキャッシュラインがとりうる状態じょうたい組合くみあわせはつぎのようになる。

 M   S   I 
 M  × × チェック
 S  × チェック チェック
 I  チェック チェック チェック

MOSIプロトコル

[編集へんしゅう]

MOSIプロトコルはExclusive状態じょうたいわりに Owned(所有しょゆう)状態じょうたいのあるキャッシュプロトコル。Exclusive状態じょうたいがないため、MSIプロトコルにOwned状態じょうたいくわえたものとたほうがよい(つまりExclusive状態じょうたいはShared状態じょうたい包含ほうがんされている)。

Owned状態じょうたいのキャッシュラインは dirty であり、しゅ記憶きおくへのもどしが必要ひつようである。Modified状態じょうたいのキャッシュラインに相当そうとうするアドレスにのCPUがリード要求ようきゅう発行はっこうしたときに、Owned状態じょうたい遷移せんいする。Owned状態じょうたいのキャッシュラインをつキャッシュ機構きこうは、当該とうがいアドレス範囲はんいへのリード要求ようきゅうたいしてしゅ記憶きおくわりに応答おうとうする。すなわち、そのキャッシュラインはのCPUでは Shared 状態じょうたいとなっている。Owned状態じょうたいでさらに変更へんこうくわえるさいには、のキャッシュのShared状態じょうたい当該とうがいキャッシュラインを無効むこうして自身じしんはModified状態じょうたい遷移せんいするか、のキャッシュに更新こうしん内容ないようおくってShared状態じょうたい維持いじさせる(アーキテクチャによってことなる)。

任意にんいの2つのキャッシュがあるとき、それぞれの対応たいおうするキャッシュラインがとりうる状態じょうたい組合くみあわせはつぎのようになる。

 M   O   S   I 
 M  × × × チェック
 O  × × チェック チェック
 S  × チェック チェック チェック
 I  チェック チェック チェック チェック

MOESIプロトコル

[編集へんしゅう]

MOESIプロトコルはMESIプロトコルに Owned状態じょうたいくわえたキャッシュプロトコル。AMD64採用さいようされている[2]

任意にんいの2つのキャッシュがあるとき、それぞれの対応たいおうするキャッシュラインがとりうる状態じょうたい組合くみあわせはつぎのようになる。

 M   O   E   S   I 
 M  × × × × チェック
 O  × × × チェック チェック
 E  × × × × チェック
 S  × チェック × チェック チェック
 I  チェック チェック チェック チェック チェック

MESIプロトコルにくらべると、dirtyなキャッシュラインをっている状態じょうたいのキャッシュからリード要求ようきゅうがあってもしゅ記憶きおくもど必要ひつようがないというてんすぐれている。わりにOwned状態じょうたいのキャッシュラインはのプロセッサに直接ちょくせつ変更へんこうくわわったデータをおくることができる。これは、キャッシュあいだのやりとりがしゅ記憶きおくとのやりとりよりも高速こうそく場合ばあい有利ゆうりで、たとえばマルチコアCPUでCPUごとにL2キャッシュがある場合ばあいなどが相当そうとうする。

しかし、キャッシュラインが clean場合ばあい、Invalid状態じょうたいのキャッシュがリード要求ようきゅうしたとき応答おうとうするのはしゅ記憶きおくであり、Shared状態じょうたいやExclusive状態じょうたいのキャッシュラインは応答おうとうしない。

関連かんれん項目こうもく

[編集へんしゅう]

脚注きゃくちゅう出典しゅってん

[編集へんしゅう]
  1. ^ IA-32 Intel Architecture Software Developers Manual
  2. ^ AMD64 Architecture Programmer's Manual Vol 2 'System Programming' p.167

外部がいぶリンク

[編集へんしゅう]