[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

12. スヌープキャッシュ

シミュレータのサンプルとして提供されているisis_sncache_illinois は、複数のR3081プロセッサを共有バスで結合した、バス結合型並列計算機シ ミュレータである。illinoisプロトコルによるスヌープキャッシュを持つ。こ こではスヌープキャッシュの実装について述べる。

12.1 シミュレータの構造  
12.2 cache_line_illinoisクラス  
12.3 bus_packet_sharedクラス  
12.4 bus_port_sharedクラス  
12.5 cache_controller_localクラス  
12.6 cache_controller_sharedクラス  
12.7 cache_controllerクラス  
12.8 snoop_cache_elementクラス  
12.9 snoop_cacheクラス  


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

12.1 シミュレータの構造

シミュレータisis_sncache_illinoisは、以下のクラスを用いて実装さ れている。

cache_line_illinoisクラス
Illinoisプロトコル用のキャッシュのキャッシュラインを表すクラス。 cache_line_baseクラスの派生クラスである。

bus_packet_sharedクラス
bus_packet_baseクラスの派生クラスで、キャッシュ一致プロトコル用 のバスパケットを表すパケットクラスである。

bus_port_sharedクラス
bus_port_baseクラスの派生クラスで、キャッシュ一致プロトコル用の バスポートを表すポートクラスである。bus_packet_sharedクラスへの インタフェース的な役割を果たす。

cache_controller_localクラス
Illinoisプロトコルによるスヌープキャッシュコントローラ内の、プロセッサ 側のバスコントローラを表すクラスである。プロセッサ側のバスを監視し、要 求に応じてキャッシュや共有バスコントローラの状態を変化させる。共有バス コントローラによって状態が変化する場合もある。クロック入力による同期動 作を行うが、synchronous_unitクラスの派生クラスではない。

cache_controller_sharedクラス
Illinoisプロトコルによるスヌープキャッシュコントローラ内の、共有バス側 のバスコントローラを表すクラスである。共有バス側のバスを監視し、要求に 応じてキャッシュやローカルバスコントローラの状態を変化させる。クロック 入力による同期動作を行うが、synchronous_unitクラスの派生クラス ではない。

cache_controllerクラス
上記のローカルバスコントローラと共有バスコントローラを内包する、キャッ シュコントローラ全体を表すクラスである。キャッシュそのものは内包しない。 synchronous_unitの派生クラスである。 set_associative_cache クラスのオブジェクト、ローカルバスと共有 バスを接続することで動作可能になる。

snoop_cache_elementクラス
スヌープキャッシュを持つプロセシングエレメントを表すクラスである。

snoop_cacheクラス
上記のプロセシングエレメントを複数、共有バスと共有メモリを持つ並列計算 機である。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

12.2 cache_line_illinoisクラス

Illinoisプロトコル用のキャッシュラインを表すクラス。 cache_line_baseクラスの派生クラスである。キャッシュラインの状態 はINVALID, CE(Clean Exclusive), CS(Clean Shared), D(Dirty)の4状態であ る。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

12.3 bus_packet_sharedクラス

bus_packet_baseクラスの派生クラスで、キャッシュ一致プロトコル用 のバスパケットを表すパケットクラスである。一部のキャッシュ一致プロトコ ル用のパケット以外はbus_packetクラスとまったく同一のパケットを 使用する。See section bus_packet class.

追加されているパケットを以下に示す。

INV_REQ
キャッシュラインを無効化する要求パケット。

LINE_COPY_REQ
LINE_COPY_ACK
キャッシュラインのコピーの要求パケットと応答パケット。

LINE_MOVE_REQ
LINE_MOVE_ACK
キャッシュラインの移動の要求パケットと応答パケット。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

12.4 bus_port_sharedクラス

bus_port_baseクラスの派生クラスで、Illinoisプロトコル用のバスポー トを表すポートクラスである。bus_packet_illinoisクラスへのインタ フェース的な役割を果たす。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

12.5 cache_controller_localクラス


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

12.6 cache_controller_sharedクラス


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

12.7 cache_controllerクラス

ローカルバスコントローラクラスcache_controller_localのオブジェ クトと共有バスコントローラクラスcache_controller_sharedのオブジェ クトを内包する、キャッシュコントローラ全体を表すクラスである。キャッシュ そのものは内包しない。synchronous_unitの派生クラスである。 set_associative_cacheクラスのオブジェクト、ローカルバスと共有バ スを接続することで動作可能になる。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

12.8 snoop_cache_elementクラス

スヌープキャッシュを持つプロセシングエレメントを表すクラスである。 r3081_processing_elementクラスの派生クラスで、スヌープキャッシュ コントローラを追加した以外の変更点はない。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

12.9 snoop_cacheクラス

snoop_cache_elementクラスのプロセシングエレメントを複数、共有バ スと共有メモリを持つ並列計算機である。


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Masaki WAKABAYASHI on September, 3 2003 using texi2html