(57)【特許請求の範囲】
【請求項１】
ホストコンピュータと記憶装置との間のデータ入出力を制御する記憶制御装置であって、
前記記憶制御装置の構成情報及びプログラム製品の設定情報を含む共有制御情報を記憶する共有メモリと、
複数のマイクロプロセッサと、
前記各マイクロプロセッサにそれぞれ対応して設けられるローカルメモリであって、前記共有メモリに記憶される前記共有制御情報のうち少なくとも一部がローカル制御情報としてコピーされる各ローカルメモリと、
前記各マイクロプロセッサのうちの一つのマイクロプロセッサから他の前記各マイクロプロセッサに、または、特定の一つまたは複数の前記マイクロプロセッサに、向けて送信されるパージメッセージであって、前記ローカルメモリに記憶されている前記ローカル制御情報が無効である旨を通知するためのパージメッセージを記憶するパージメッセージ記憶部と、
前記各ローカルメモリの前記各マイクロプロセッサによる制御情報の更新回数と前記共有制御情報の前記各マイクロプロセッサによる更新回数とに基づいて、前記各ローカル制御情報が前記共有制御情報に同期しているか否かを管理するための制御情報同期管理部と、
を備え、
前記各マイクロプロセッサは、
前記各ローカルメモリの前記各マイクロプロセッサによる制御情報の更新回数が前記共有制御情報の前記各マイクロプロセッサによる更新回数以上の場合、前記各ローカル制御情報が前記共有制御情報に同期していると判定し、対応する前記各ローカルメモリから前記ローカル制御情報を使用し、
前記各ローカルメモリの前記各マイクロプロセッサによる制御情報の更新回数が前記共有制御情報の前記各マイクロプロセッサによる更新回数未満の場合、前記各ローカル制御情報が前記共有制御情報に同期していないと判定し、前記共有メモリ内の前記共有制御情報を使用し、
前記共有制御情報を更新する場合に、前記パージメッセージを作成して前記パージメッセージ記憶部に記憶させ、さらに、前記共有メモリ内の共有制御情報への一連の更新が完了した場合、前記共有制御情報の更新と非同期で、前記パージメッセージ記憶部に記憶された前記パージメッセージを統合し、当該統合したパージメッセージを送信させるようになっており、
複数のマイクロプロセッサパッケージを備え、前記各マイクロプロセッサパッケージは、少なくとも一つの前記マイクロプロセッサと、少なくとも一つの前記ローカルメモリと、少なくとも一つの前記パージメッセージ記憶部とを備えており、
前記各マイクロプロセッサパッケージと前記共有メモリとは、スイッチを介して接続されており、
前記共有メモリには、前記共有制御情報に加えて、前記共有制御情報の更新状態を管理するための共有制御情報更新管理部が設けられており、
前記各ローカルメモリには、前記ローカル制御情報及び前記パージメッセージ記憶部に加えて、ローカル制御情報の更新状態を管理するためのローカル更新管理部と、前記共有制御情報更新管理部で管理されている前記更新状態を示す値のコピーを記憶する更新値記憶部とが記憶されており、
前記共有制御情報更新管理部は、前記各マイクロプロセッサパッケージ内の前記各マイクロプロセッサを識別するためのマイクロプロセッサ識別情報と、前記各マイクロプロセッサにより更新された回数を示すカウンタ値とを対応付けて管理しており、さらに、前記マイクロプロセッサにより前記共有制御情報が更新される場合に、更新元のマイクロプロセッサによって当該更新元のマイクロプロセッサに対応する前記カウンタ値が更新されるようになっており、
前記各ローカル更新管理部も、前記各マイクロプロセッサ識別情報毎に前記カウンタ値を対応付けて管理しており、さらに、前記各ローカル更新管理部に対応する前記各マイクロプロセッサが前記ローカル制御情報を更新する場合に、その対応する前記マイクロプロセッサに関連するカウンタ値が更新されるようになっており、さらに、前記対応する前記マイクロプロセッサ以外の他の前記マイクロプロセッサに関連する前記パージメッセージに基づいて、前記他の前記マイクロプロセッサに対応するカウンタ値が更新されるようになっており、
前記各更新値記憶部に対応する前記各マイクロプロセッサが前記共有メモリ内の前記共有制御情報にアクセスした場合に、前記共有制御情報更新管理部で管理されている前記各カウンタ値が取得されて、それら取得された前記各カウンタ値が前記更新値記憶部に上書きで記憶されるようになっており、
前記共有メモリは、前記各マイクロプロセッサが前記各ローカルメモリにコピー可能な情報を記憶するための共有キャッシュ領域と、前記各マイクロプロセッサのうちオーナーとして設定されるオーナーマイクロプロセッサのみが、前記オーナーマイクロプロセッサ内の前記ローカルメモリにコピー可能であり、かつ、前記オーナーマイクロプロセッサ以外の他のマイクロプロセッサはコピーできない情報を記憶するための排他キャッシュ領域と、前記各マイクロプロセッサのいずれもが前記各ローカルメモリにコピーできない情報を記憶するための非キャッシュ領域と、を備えており、
前記共有キャッシュ領域には、比較的更新頻度が少ないが複数のマイクロプロセッサから比較的高頻度でアクセスされ得る第１情報が記憶されるようになっており、
前記排他キャッシュ領域には、前記オーナーマイクロプロセッサが比較的高頻度に参照または更新する第２情報が記憶されるようになっており、
前記非キャッシュ領域には、複数のマイクロプロセッサから比較的高頻度で参照または更新される第３情報が記憶されるようになっており、
前記各マイクロプロセッサは、
前記共有キャッシュ領域に記憶されている情報を更新した場合には、前記更新のたびに前記パージメッセージを作成して前記パージメッセージ記憶部に記憶させ、一連の更新処理が完了した後で、前記パージメッセージ記憶部に記憶された前記各パージメッセージを他の各マイクロプロセッサにそれぞれ送信し、
前記排他キャッシュ領域に記憶されている情報を更新する場合において、自分が前記オーナーマイクロプロセッサである場合は、前記パージメッセージを作成せず、自分が前記オーナーマイクロプロセッサ以外の他のマイクロプロセッサである場合は、更新のたびに前記パージメッセージを作成して前記パージメッセージ記憶部に記憶させ、一連の更新処理が完了した後で、前記パージメッセージ記憶部に記憶された前記各パージメッセージを前記オーナーマイクロプロセッサのみに送信し、
前記非キャッシュ領域に記憶されている情報を更新した場合には、前記パージメッセージを作成しないようになっており、
さらに、前記各マイクロプロセッサは、前記共有制御情報のうち同一箇所の更新、または、連続する箇所の更新、または、重複する箇所の更新がされた場合には、複数の更新を統合するようにして前記パージメッセージを送信させるようになっている、
記憶制御装置。
【請求項２】
ホストコンピュータと記憶装置との間のデータ入出力を制御する記憶制御装置であって、
前記記憶制御装置の構成情報及びプログラム製品の設定情報を含む共有制御情報を記憶する共有メモリと、
複数のマイクロプロセッサと、
前記各マイクロプロセッサにそれぞれ対応して設けられるローカルメモリであって、前記共有メモリに記憶される前記共有制御情報のうち少なくとも一部がローカル制御情報としてコピーされる各ローカルメモリと、
前記各マイクロプロセッサのうちの一つのマイクロプロセッサから他の前記各マイクロプロセッサに、または、特定の一つまたは複数の前記マイクロプロセッサに、向けて送信されるパージメッセージであって、前記ローカルメモリに記憶されている前記ローカル制御情報が無効である旨を通知するためのパージメッセージを記憶するパージメッセージ記憶部と、
前記各ローカルメモリの前記各マイクロプロセッサによる制御情報の更新回数と前記共有制御情報の前記各マイクロプロセッサによる更新回数とに基づいて、前記各ローカル制御情報が前記共有制御情報に同期しているか否かを管理するための制御情報同期管理部と、
を備え、
前記各マイクロプロセッサは、
前記各ローカルメモリの前記各マイクロプロセッサによる制御情報の更新回数が前記共有制御情報の前記各マイクロプロセッサによる更新回数以上の場合、前記各ローカル制御情報が前記共有制御情報に同期していると判定し、対応する前記各ローカルメモリから前記ローカル制御情報を使用し、
前記各ローカルメモリの前記各マイクロプロセッサによる制御情報の更新回数が前記共有制御情報の前記各マイクロプロセッサによる更新回数未満の場合、前記各ローカル制御情報が前記共有制御情報に同期していないと判定し、前記共有メモリ内の前記共有制御情報を使用し、
前記共有制御情報を更新する場合に、前記パージメッセージを作成して前記パージメッセージ記憶部に記憶させ、さらに、前記共有メモリ内の共有制御情報への一連の更新が完了した場合、前記共有制御情報の更新と非同期で、前記パージメッセージ記憶部に記憶された前記パージメッセージを統合し、当該統合したパージメッセージを送信させるようになっており、
前記共有メモリは、
前記各マイクロプロセッサが前記各ローカルメモリにコピー可能な情報を記憶するための共有キャッシュ領域と、
前記各マイクロプロセッサのうちオーナーとして設定されるオーナーマイクロプロセッサのみが、前記オーナーマイクロプロセッサ内の前記ローカルメモリにコピー可能であり、かつ、前記オーナーマイクロプロセッサ以外の他のマイクロプロセッサはコピーできない情報を記憶するための排他キャッシュ領域と、
を備えている、
記憶制御装置。
【請求項３】
ホストコンピュータと記憶装置との間のデータ入出力を制御する記憶制御装置であって、
前記記憶制御装置の構成情報及びプログラム製品の設定情報を含む共有制御情報を記憶する共有メモリと、
複数のマイクロプロセッサと、
前記各マイクロプロセッサにそれぞれ対応して設けられるローカルメモリであって、前記共有メモリに記憶される前記共有制御情報のうち少なくとも一部がローカル制御情報としてコピーされる各ローカルメモリと、
前記各マイクロプロセッサのうちの一つのマイクロプロセッサから他の前記各マイクロプロセッサに、または、特定の一つまたは複数の前記マイクロプロセッサに、向けて送信されるパージメッセージであって、前記ローカルメモリに記憶されている前記ローカル制御情報が無効である旨を通知するためのパージメッセージを記憶するパージメッセージ記憶部と、
前記各ローカルメモリの前記各マイクロプロセッサによる制御情報の更新回数と前記共有制御情報の前記各マイクロプロセッサによる更新回数とに基づいて、前記各ローカル制御情報が前記共有制御情報に同期しているか否かを管理するための制御情報同期管理部と、
を備え、
前記各マイクロプロセッサは、
前記各ローカルメモリの前記各マイクロプロセッサによる制御情報の更新回数が前記共有制御情報の前記各マイクロプロセッサによる更新回数以上の場合、前記各ローカル制御情報が前記共有制御情報に同期していると判定し、対応する前記各ローカルメモリから前記ローカル制御情報を使用し、
前記各ローカルメモリの前記各マイクロプロセッサによる制御情報の更新回数が前記共有制御情報の前記各マイクロプロセッサによる更新回数未満の場合、前記各ローカル制御情報が前記共有制御情報に同期していないと判定し、前記共有メモリ内の前記共有制御情報を使用し、
前記共有制御情報を更新する場合に、前記パージメッセージを作成して前記パージメッセージ記憶部に記憶させ、さらに、前記共有メモリ内の共有制御情報への一連の更新が完了した場合、前記共有制御情報の更新と非同期で、前記パージメッセージ記憶部に記憶された前記パージメッセージを統合し、当該統合したパージメッセージを送信させるようになっており、
前記共有メモリは、
前記各マイクロプロセッサが前記各ローカルメモリにコピー可能な情報を記憶するための共有キャッシュ領域と、
前記各マイクロプロセッサのいずれもが前記各ローカルメモリにコピーできない情報を記憶するための非キャッシュ領域と、
を備えている、
記憶制御装置。
【請求項４】
ホストコンピュータと記憶装置との間のデータ入出力を制御する記憶制御装置であって、
前記記憶制御装置の構成情報及びプログラム製品の設定情報を含む共有制御情報を記憶する共有メモリと、
複数のマイクロプロセッサと、
前記各マイクロプロセッサにそれぞれ対応して設けられるローカルメモリであって、前記共有メモリに記憶される前記共有制御情報のうち少なくとも一部がローカル制御情報としてコピーされる各ローカルメモリと、
前記各マイクロプロセッサのうちの一つのマイクロプロセッサから他の前記各マイクロプロセッサに、または、特定の一つまたは複数の前記マイクロプロセッサに、向けて送信されるパージメッセージであって、前記ローカルメモリに記憶されている前記ローカル制御情報が無効である旨を通知するためのパージメッセージを記憶するパージメッセージ記憶部と、
前記各ローカルメモリの前記各マイクロプロセッサによる制御情報の更新回数と前記共有制御情報の前記各マイクロプロセッサによる更新回数とに基づいて、前記各ローカル制御情報が前記共有制御情報に同期しているか否かを管理するための制御情報同期管理部と、
を備え、
前記各マイクロプロセッサは、
前記各ローカルメモリの前記各マイクロプロセッサによる制御情報の更新回数が前記共有制御情報の前記各マイクロプロセッサによる更新回数以上の場合、前記各ローカル制御情報が前記共有制御情報に同期していると判定し、対応する前記各ローカルメモリから前記ローカル制御情報を使用し、
前記各ローカルメモリの前記各マイクロプロセッサによる制御情報の更新回数が前記共有制御情報の前記各マイクロプロセッサによる更新回数未満の場合、前記各ローカル制御情報が前記共有制御情報に同期していないと判定し、前記共有メモリ内の前記共有制御情報を使用し、
前記共有制御情報を更新する場合に、前記パージメッセージを作成して前記パージメッセージ記憶部に記憶させ、さらに、前記共有メモリ内の共有制御情報への一連の更新が完了した場合、前記共有制御情報の更新と非同期で、前記パージメッセージ記憶部に記憶された前記パージメッセージを統合し、当該統合したパージメッセージを送信させるようになっており、
前記共有メモリは、
前記各マイクロプロセッサのうちオーナーとして設定されるオーナーマイクロプロセッサのみが、前記オーナーマイクロプロセッサ内の前記ローカルメモリにコピー可能であり、かつ、前記オーナーマイクロプロセッサ以外の他のマイクロプロセッサはコピーできない情報を記憶するための排他キャッシュ領域と、
前記各マイクロプロセッサのいずれもが前記各ローカルメモリにコピーできない情報を記憶するための非キャッシュ領域と、
を備えている、
記憶制御装置。
【請求項５】
ホストコンピュータと記憶装置との間のデータ入出力を制御する記憶制御装置であって、
前記記憶制御装置の構成情報及びプログラム製品の設定情報を含む共有制御情報を記憶する共有メモリと、
複数のマイクロプロセッサと、
前記各マイクロプロセッサにそれぞれ対応して設けられるローカルメモリであって、前記共有メモリに記憶される前記共有制御情報のうち少なくとも一部がローカル制御情報としてコピーされる各ローカルメモリと、
前記各マイクロプロセッサのうちの一つのマイクロプロセッサから他の前記各マイクロプロセッサに、または、特定の一つまたは複数の前記マイクロプロセッサに、向けて送信されるパージメッセージであって、前記ローカルメモリに記憶されている前記ローカル制御情報が無効である旨を通知するためのパージメッセージを記憶するパージメッセージ記憶部と、
前記各ローカルメモリの前記各マイクロプロセッサによる制御情報の更新回数と前記共有制御情報の前記各マイクロプロセッサによる更新回数とに基づいて、前記各ローカル制御情報が前記共有制御情報に同期しているか否かを管理するための制御情報同期管理部と、
を備え、
前記各マイクロプロセッサは、
前記各ローカルメモリの前記各マイクロプロセッサによる制御情報の更新回数が前記共有制御情報の前記各マイクロプロセッサによる更新回数以上の場合、前記各ローカル制御情報が前記共有制御情報に同期していると判定し、対応する前記各ローカルメモリから前記ローカル制御情報を使用し、
前記各ローカルメモリの前記各マイクロプロセッサによる制御情報の更新回数が前記共有制御情報の前記各マイクロプロセッサによる更新回数未満の場合、前記各ローカル制御情報が前記共有制御情報に同期していないと判定し、前記共有メモリ内の前記共有制御情報を使用し、
前記共有制御情報を更新する場合に、前記パージメッセージを作成して前記パージメッセージ記憶部に記憶させ、さらに、前記共有メモリ内の共有制御情報への一連の更新が完了した場合、前記共有制御情報の更新と非同期で、前記パージメッセージ記憶部に記憶された前記パージメッセージを統合し、当該統合したパージメッセージを送信させるようになっており、
前記共有メモリは、
前記各マイクロプロセッサが前記各ローカルメモリにコピー可能な情報を記憶するための共有キャッシュ領域と、
前記各マイクロプロセッサのうちオーナーとして設定されるオーナーマイクロプロセッサのみが、前記オーナーマイクロプロセッサ内の前記ローカルメモリにコピー可能であり、かつ、前記オーナーマイクロプロセッサ以外の他のマイクロプロセッサはコピーできない情報を記憶するための排他キャッシュ領域と、
前記各マイクロプロセッサのいずれもが前記各ローカルメモリにコピーできない情報を記憶するための非キャッシュ領域と、
を備えている、
記憶制御装置。
【請求項６】
前記共有キャッシュ領域には、比較的更新頻度が少ないが複数のマイクロプロセッサから比較的高頻度でアクセスされ得る第１情報が記憶されるようになっており、
前記排他キャッシュ領域には、前記オーナーマイクロプロセッサが比較的高頻度に参照または更新する第２情報が記憶されるようになっており、
前記非キャッシュ領域には、複数のマイクロプロセッサから比較的高頻度で参照または更新される第３情報が記憶されるようになっている、
請求項５に記載の記憶制御装置。
【請求項７】
前記各マイクロプロセッサは、
前記共有キャッシュ領域に記憶されている情報を更新した場合には、前記更新のたびに前記パージメッセージを作成して前記パージメッセージ記憶部に記憶させ、一連の更新処理が完了した後で、前記パージメッセージ記憶部に記憶された前記各パージメッセージを他の各マイクロプロセッサにそれぞれ送信し、
前記排他キャッシュ領域に記憶されている情報を更新する場合において、自分が前記オーナーマイクロプロセッサである場合は、前記パージメッセージを作成せず、自分が前記オーナーマイクロプロセッサ以外の他のマイクロプロセッサである場合は、更新のたびに前記パージメッセージを作成して前記パージメッセージ記憶部に記憶させ、一連の更新処理が完了した後で、前記パージメッセージ記憶部に記憶された前記各パージメッセージを前記オーナーマイクロプロセッサのみに送信し、
前記非キャッシュ領域に記憶されている情報を更新した場合には、前記パージメッセージを作成しないようになっている、
請求項５または請求項６のいずれかに記載の記憶制御装置。
【請求項８】
前記各マイクロプロセッサは、前記制御情報同期管理部に基づいて前記各ローカル制御情報が前記共有制御情報に同期していると判定される場合は、対応する前記各ローカルメモリから前記ローカル制御情報を使用し、前記制御情報同期管理部に基づいて前記各ローカル制御情報が前記共有制御情報に同期していないと判定される場合は、前記共有メモリ内の前記共有制御情報を使用する、
請求項１〜７のいずれかに記載の記憶制御装置。
【請求項９】
前記共有メモリには、前記共有制御情報に加えて、前記共有制御情報の更新状態を管理するための共有制御情報更新管理部が設けられており、
前記各ローカルメモリには、前記ローカル制御情報及び前記パージメッセージ記憶部に加えて、ローカル制御情報の更新状態を管理するためのローカル更新管理部と、前記共有制御情報更新管理部で管理されている前記更新状態を示す値のコピーを記憶する更新値記憶部とが記憶されており、
前記制御情報同期管理部は、前記共有制御情報更新管理部と、前記各ローカル更新管理部と、前記各更新値管理部とを備えて構成される、
請求項１〜７のいずれかに記載の記憶制御装置。
【請求項１０】
前記共有制御情報更新管理部は、前記各マイクロプロセッサパッケージ内の前記各マイクロプロセッサを識別するためのマイクロプロセッサ識別情報と、前記各マイクロプロセッサにより更新された回数を示すカウンタ値とを対応付けて管理しており、さらに、前記マイクロプロセッサにより前記共有制御情報が更新される場合に、更新元のマイクロプロセッサによって当該更新元のマイクロプロセッサに対応する前記カウンタ値が更新されるようになっており、
前記各ローカル更新管理部も、前記各マイクロプロセッサ識別情報毎に前記カウンタ値を対応付けて管理しており、さらに、前記各ローカル更新管理部に対応する前記各マイクロプロセッサが前記ローカル制御情報を更新する場合に、その対応する前記マイクロプロセッサに関連するカウンタ値が更新されるようになっており、さらに、前記対応する前記マイクロプロセッサ以外の他の前記マイクロプロセッサに関連する前記パージメッセージに基づいて、前記他の前記マイクロプロセッサに対応するカウンタ値が更新されるようになっている、
請求項９に記載の記憶制御装置。
【請求項１１】
前記各更新値記憶部に対応する前記各マイクロプロセッサが前記共有メモリ内の前記共有制御情報にアクセスした場合に、前記共有制御情報更新管理部で管理されている前記各カウンタ値が取得されて、それら取得された前記各カウンタ値が前記更新値記憶部に上書きで記憶されるようになっている、
請求項１０に記載の記憶制御装置。
【請求項１２】
前記各マイクロプロセッサは、前記共有制御情報のうち同一箇所の更新、または、連続する箇所の更新、または、重複する箇所の更新がされた場合に、複数の更新を統合するようにして前記パージメッセージを送信させる、
請求項１〜７のいずれかに記載の記憶制御装置。
【請求項１３】
前記各マイクロプロセッサは、
他の各マイクロプロセッサが正常に監視しているか否かを監視しており、
いずれかのマイクロプロセッサで障害が発生した場合には、前記共有制御情報更新管理部で管理されている各カウント値を取得して前記更新値記憶部に上書きで記憶し、
前記障害の発生した前記マイクロプロセッサについて、前記ローカル更新管理部で管理されているカウント値と前記更新値管理部に記憶されているカウント値と異なるか否かを判定し、
前記ローカル更新管理部で管理されているカウント値と前記更新値管理部に記憶されているカウント値とが異なる場合、前記ローカル更新管理部で管理されている前記障害の発生した前記マイクロプロセッサの前記カウント値を、前記更新値管理部内の対応するカウント値で上書きし、
前記ローカルメモリにコピーされているローカル制御情報をクリアさせる、
請求項１〜７のいずれかに記載の記憶制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶制御装置及び記憶制御装置の制御方法に関する。
【背景技術】
【０００２】
記憶制御装置は、ハードディスクドライブのような記憶装置を複数用いて、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）に基づく記憶領域をホストコンピュータに提供する。記憶制御装置は、複数のマイクロプロセッサを備えている。各マイクロプロセッサは、共有メモリに記憶されているデータを共有する。マイクロプロセッサが共有メモリに直接アクセスしてデータを使用すると、処理時間がかかる。そこで、共有されるデータの一部を、マイクロプロセッサの近傍に配置されるローカルメモリにコピーして使用する構成が提案されている。
【０００３】
【特許文献１】ＪＰ−Ａ−２００６−２８５７７８
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来技術では、いずれかのマイクロプロセッサが共有メモリ内のデータを更新した場合に、他のローカルメモリにコピーされているデータ（つまり、他のローカルメモリにキャッシュされているデータ）を破棄させる必要がある。大元のデータである共有メモリ内のデータが変更された場合、各ローカルメモリにコピーされているデータは古くなり、使用できないためである。
【０００５】
そこで、共有メモリ内のデータが更新された場合、そのデータ更新を行ったマイクロプロセッサから他の各マイクロプロセッサに向けて、ローカルメモリに記憶されたデータが使用できない旨を通知する。この通知を、ここではパージメッセージと呼ぶ。パージメッセージを受け取った他のマイクロプロセッサは、ローカルメモリにコピーされているデータが古くて使えないことを知る。従って、他のプロセッサは、共有メモリにアクセスして新しいデータを読出し、ローカルメモリに記憶させる。
【０００６】
各マイクロプロセッサが比較的高頻度で共有メモリ内のデータを更新すると、各マイクロプロセッサ間で多数のパージメッセージが交換される。従って、パージメッセージを作成したり、パージメッセージを送信したり、パージメッセージに基づいてローカルメモリ内のデータを破棄したり等の処理が多数行われる。
【０００７】
つまり、従来技術では、各マイクロプロセッサ間で多数のパージメッセージが通信されるため、パージメッセージ関連の処理がボトルネックになり易い。そのため、記憶制御装置の処理性能を向上させるのが難しいという問題がある。
【０００８】
そこで、本発明の目的は、複数のマイクロプロセッサ間で通信されるパージメッセージの量を低減することにより、処理性能を向上できるようにした記憶制御装置及び記憶制御装置の制御方法を提供することにある。本発明の他の目的は、共有メモリに記憶される情報を複数種類に分類し、各情報の性質に応じてパージメッセージの送信を制御することにより、処理性能を向上できるようにした記憶制御装置及び記憶制御装置の制御方法を提供することにある。本発明の他の目的は、後述する実施形態の記載から明らかになるであろう。
【課題を解決するための手段】
【０００９】
上記課題を解決すべく、本発明の第１観点に従う記憶制御装置は、ホストコンピュータと記憶装置との間のデータ入出力を制御する記憶制御装置であって、共有制御情報を記憶する共有メモリと、複数のマイクロプロセッサと、各マイクロプロセッサにそれぞれ対応して設けられるローカルメモリであって、共有メモリに記憶される共有制御情報のうち少なくとも一部がローカル制御情報としてコピーされる各ローカルメモリと、各マイクロプロセッサのうちの一つのマイクロプロセッサから他の各マイクロプロセッサに、または、特定の一つまたは複数のマイクロプロセッサに、向けて送信されるパージメッセージであって、ローカルメモリに記憶されているローカル制御情報が無効である旨を通知するためのパージメッセージを記憶するパージメッセージ記憶部と、各ローカル制御情報が共有制御情報に同期しているか否かを管理するための制御情報同期管理部と、を備え、各マイクロプロセッサは、共有制御情報を更新する場合に、パージメッセージを作成してパージメッセージ記憶部に記憶させ、さらに、共有制御情報の更新と非同期で、パージメッセージ記憶部に記憶されたパージメッセージを送信させる。
【００１０】
第２観点では、第１観点において、複数のマイクロプロセッサパッケージを備え、各マイクロプロセッサパッケージは、少なくとも一つのマイクロプロセッサと、少なくとも一つのローカルメモリと、少なくとも一つのパージメッセージ記憶部とを備えており、各マイクロプロセッサパッケージと共有メモリとは、スイッチを介して接続されており、
共有メモリには、共有制御情報に加えて、共有制御情報の更新状態を管理するための共有制御情報更新管理部が設けられており、
各ローカルメモリには、ローカル制御情報及びパージメッセージ記憶部に加えて、ローカル制御情報の更新状態を管理するためのローカル更新管理部と、共有制御情報更新管理部で管理されている更新状態を示す値のコピーを記憶する更新値記憶部とが記憶されており、
共有制御情報更新管理部は、各マイクロプロセッサパッケージ内の各マイクロプロセッサを識別するためのマイクロプロセッサ識別情報と、各マイクロプロセッサにより更新された回数を示すカウンタ値とを対応付けて管理しており、さらに、マイクロプロセッサにより共有制御情報が更新される場合に、更新元のマイクロプロセッサによって当該更新元のマイクロプロセッサに対応するカウンタ値が更新されるようになっており、
各ローカル更新管理部も、各マイクロプロセッサ識別情報毎にカウンタ値を対応付けて管理しており、さらに、各ローカル更新管理部に対応する各マイクロプロセッサがローカル制御情報を更新する場合に、その対応するマイクロプロセッサに関連するカウンタ値が更新されるようになっており、さらに、対応するマイクロプロセッサ以外の他のマイクロプロセッサに関連するパージメッセージに基づいて、他のマイクロプロセッサに対応するカウンタ値が更新されるようになっており、
各更新値記憶部に対応する各マイクロプロセッサが共有メモリ内の共有制御情報にアクセスした場合に、共有制御情報更新管理部で管理されている各カウンタ値が取得されて、それら取得された各カウンタ値が更新値記憶部に上書きで記憶されるようになっており、
共有メモリは、各マイクロプロセッサが各ローカルメモリにコピー可能な情報を記憶するための共有キャッシュ領域と、各マイクロプロセッサのうちオーナーとして設定されるオーナーマイクロプロセッサのみが、オーナーマイクロプロセッサ内のローカルメモリにコピー可能であり、かつ、オーナーマイクロプロセッサ以外の他のマイクロプロセッサはコピーできない情報を記憶するための排他キャッシュ領域と、各マイクロプロセッサのいずれもが各ローカルメモリにコピーできない情報を記憶するための非キャッシュ領域と、を備えており、
共有キャッシュ領域には、比較的更新頻度が少ないが複数のマイクロプロセッサから比較的高頻度でアクセスされ得る第１情報が記憶されるようになっており、
排他キャッシュ領域には、オーナーマイクロプロセッサが比較的高頻度に参照または更新する第２情報が記憶されるようになっており、
非キャッシュ領域には、複数のマイクロプロセッサから比較的高頻度で参照または更新される第３情報が記憶されるようになっており、
各マイクロプロセッサは、
共有キャッシュ領域に記憶されている情報を更新した場合には、更新のたびにパージメッセージを作成してパージメッセージ記憶部に記憶させ、一連の更新処理が完了した後で、パージメッセージ記憶部に記憶された各パージメッセージを他の各マイクロプロセッサにそれぞれ送信し、
排他キャッシュ領域に記憶されている情報を更新する場合において、自分がオーナーマイクロプロセッサである場合は、パージメッセージを作成せず、自分がオーナーマイクロプロセッサ以外の他のマイクロプロセッサである場合は、更新のたびにパージメッセージを作成してパージメッセージ記憶部に記憶させ、一連の更新処理が完了した後で、パージメッセージ記憶部に記憶された各パージメッセージをオーナーマイクロプロセッサのみに送信し、
非キャッシュ領域に記憶されている情報を更新した場合には、パージメッセージを作成しないようになっており、
さらに、各マイクロプロセッサは、共有制御情報のうち同一箇所の更新、または、連続する箇所の更新、または、重複する箇所の更新がされた場合には、複数の更新を統合するようにしてパージメッセージを送信させるようになっている。
【００１１】
第３観点では、第１観点において、各マイクロプロセッサは、制御情報同期管理部に基づいて各ローカル制御情報が共有制御情報に同期していると判定される場合は、対応する各ローカルメモリからローカル制御情報を使用し、制御情報同期管理部に基づいて各ローカル制御情報が共有制御情報に同期していないと判定される場合は、共有メモリ内の共有制御情報を使用する。
【００１２】
第４観点では、第１観点において、共有メモリには、共有制御情報に加えて、共有制御情報の更新状態を管理するための共有制御情報更新管理部が設けられており、各ローカルメモリには、ローカル制御情報及びパージメッセージ記憶部に加えて、ローカル制御情報の更新状態を管理するためのローカル更新管理部と、共有制御情報更新管理部で管理されている更新状態を示す値のコピーを記憶する更新値記憶部とが記憶されており、制御情報同期管理部は、共有制御情報更新管理部と、各ローカル更新管理部と、各更新値管理部とを備えて構成される。
【００１３】
第５観点では、第４観点において、共有制御情報更新管理部は、各マイクロプロセッサパッケージ内の各マイクロプロセッサを識別するためのマイクロプロセッサ識別情報と、各マイクロプロセッサにより更新された回数を示すカウンタ値とを対応付けて管理しており、さらに、マイクロプロセッサにより共有制御情報が更新される場合に、更新元のマイクロプロセッサによって当該更新元のマイクロプロセッサに対応するカウンタ値が更新されるようになっており、各ローカル更新管理部も、各マイクロプロセッサ識別情報毎にカウンタ値を対応付けて管理しており、さらに、各ローカル更新管理部に対応する各マイクロプロセッサがローカル制御情報を更新する場合に、その対応するマイクロプロセッサに関連するカウンタ値が更新されるようになっており、さらに、対応するマイクロプロセッサ以外の他のマイクロプロセッサに関連するパージメッセージに基づいて、他のマイクロプロセッサに対応するカウンタ値が更新されるようになっている。
【００１４】
第６観点では、第５観点において、各更新値記憶部に対応する各マイクロプロセッサが共有メモリ内の共有制御情報にアクセスした場合に、共有制御情報更新管理部で管理されている各カウンタ値が取得されて、それら取得された各カウンタ値が更新値記憶部に上書きで記憶されるようになっている。
【００１５】
第７観点では、第１観点において、共有メモリは、  各マイクロプロセッサが各ローカルメモリにコピー可能な情報を記憶するための共有キャッシュ領域と、各マイクロプロセッサのうちオーナーとして設定されるオーナーマイクロプロセッサのみが、オーナーマイクロプロセッサ内のローカルメモリにコピー可能であり、かつ、オーナーマイクロプロセッサ以外の他のマイクロプロセッサはコピーできない情報を記憶するための排他キャッシュ領域と、を備えている。
【００１６】
第８観点では、第１観点において、共有メモリは、各マイクロプロセッサが各ローカルメモリにコピー可能な情報を記憶するための共有キャッシュ領域と、各マイクロプロセッサのいずれもが各ローカルメモリにコピーできない情報を記憶するための非キャッシュ領域と、を備えている。
【００１７】
第９観点では、第１観点において、共有メモリは、各マイクロプロセッサのうちオーナーとして設定されるオーナーマイクロプロセッサのみが、オーナーマイクロプロセッサ内のローカルメモリにコピー可能であり、かつ、オーナーマイクロプロセッサ以外の他のマイクロプロセッサはコピーできない情報を記憶するための排他キャッシュ領域と、各マイクロプロセッサのいずれもが各ローカルメモリにコピーできない情報を記憶するための非キャッシュ領域と、を備えている。
【００１８】
第１０観点では、第１観点において、共有メモリは、各マイクロプロセッサが各ローカルメモリにコピー可能な情報を記憶するための共有キャッシュ領域と、各マイクロプロセッサのうちオーナーとして設定されるオーナーマイクロプロセッサのみが、オーナーマイクロプロセッサ内のローカルメモリにコピー可能であり、かつ、オーナーマイクロプロセッサ以外の他のマイクロプロセッサはコピーできない情報を記憶するための排他キャッシュ領域と、各マイクロプロセッサのいずれもが各ローカルメモリにコピーできない情報を記憶するための非キャッシュ領域と、を備えている。
【００１９】
第１１観点では、第１０観点において、共有キャッシュ領域には、比較的更新頻度が少ないが複数のマイクロプロセッサから比較的高頻度でアクセスされ得る第１情報が記憶されるようになっており、排他キャッシュ領域には、オーナーマイクロプロセッサが比較的高頻度に参照または更新する第２情報が記憶されるようになっており、非キャッシュ領域には、複数のマイクロプロセッサから比較的高頻度で参照または更新される第３情報が記憶されるようになっている。
【００２０】
第１２観点では、第１０または第１１観点のいずれかにおいて、各マイクロプロセッサは、共有キャッシュ領域に記憶されている情報を更新した場合には、更新のたびにパージメッセージを作成してパージメッセージ記憶部に記憶させ、一連の更新処理が完了した後で、パージメッセージ記憶部に記憶された各パージメッセージを他の各マイクロプロセッサにそれぞれ送信し、排他キャッシュ領域に記憶されている情報を更新する場合において、自分がオーナーマイクロプロセッサである場合は、パージメッセージを作成せず、自分がオーナーマイクロプロセッサ以外の他のマイクロプロセッサである場合は、更新のたびにパージメッセージを作成してパージメッセージ記憶部に記憶させ、一連の更新処理が完了した後で、パージメッセージ記憶部に記憶された各パージメッセージをオーナーマイクロプロセッサのみに送信し、非キャッシュ領域に記憶されている情報を更新した場合には、パージメッセージを作成しないようになっている。
【００２１】
第１３観点では、第１観点において、各マイクロプロセッサは、共有制御情報のうち同一箇所の更新、または、連続する箇所の更新、または、重複する箇所の更新がされた場合に、複数の更新を統合するようにしてパージメッセージを送信させる。
【００２２】
第１４観点では、第１観点において、各マイクロプロセッサは、他の各マイクロプロセッサが正常に監視しているか否かを監視しており、いずれかのマイクロプロセッサで障害が発生した場合には、共有制御情報更新管理部で管理されている各カウント値を取得して更新値記憶部に上書きで記憶し、障害の発生したマイクロプロセッサについて、ローカル更新管理部で管理されているカウント値と更新値管理部に記憶されているカウント値と異なるか否かを判定し、ローカル更新管理部で管理されているカウント値と更新値管理部に記憶されているカウント値とが異なる場合、ローカル更新管理部で管理されている障害の発生したマイクロプロセッサのカウント値を、更新値管理部内の対応するカウント値で上書きし、ローカルメモリにコピーされているローカル制御情報をクリアさせる。
【００２３】
第１５観点に従う記憶制御装置の制御方法は、共有制御情報を記憶する共有メモリと、複数のマイクロプロセッサと、各マイクロプロセッサにそれぞれ対応して設けられるローカルメモリとを備える記憶制御装置の制御方法であって、各ローカルメモリには、共有メモリに記憶される共有制御情報のうち少なくとも一部がローカル制御情報としてコピーされており、共有制御情報を更新する場合には、更新元のマイクロプロセッサに対応するローカルメモリ以外の他の各ローカルメモリに記憶されているローカル制御情報が無効であることを示すパージメッセージを作成して保存し、共有制御情報を更新する一連の処理が完了した場合に、保存されているパージメッセージを他の各ローカルメモリに対応する各マイクロプロセッサに送信し、パージメッセージを受信した他の各マイクロプロセッサは、無効とされた箇所の情報を使用する場合に、共有メモリにアクセスして取得するようになっている。
【００２４】
さらに、本発明の観点は明示された以外に種々組み合わせることも可能であり、そのような組合せは本発明の範囲に含まれる。
【図面の簡単な説明】
【００２５】
【図１】本発明の実施形態を示す概念図である。
【図２】記憶制御装置のブロック図である。
【図３】ローカルメモリ及び共有メモリの構成を模式的に示す図である。
【図４】パージバッファの構成を示す図である。
【図５】パージメッセージを統合する様子を示す図である。
【図６】各更新クロックの関係を示す図である。
【図７】クロックの大小を判定する方法を示す図である。
【図８】パージメッセージの作成及び送信を示すフローチャートである。
【図９】第２実施例に係る記憶制御装置の要部を示すブロック図である。
【図１０】キャッシュ属性管理テーブルを示す図である。
【図１１】共有メモリに記憶されるデータの例を示す図である。
【図１２】共有メモリにデータを書き込む処理を示すフローチャートである。
【図１３】図１２に続くフローチャートである。
【図１４】パージメッセージを送信する処理を示すフローチャートである。
【図１５】共有メモリからデータを読み出す処理を示すフローチャートである。
【図１６】第３実施例に係る記憶制御装置で実行される、マイクロプロセッサに障害が発生した場合の処理を示すフローチャートである。
【図１７】障害から回復したマイクロプロセッサによって実行される処理を示すフローチャートである。
【図１８】第４実施例に係る記憶制御装置の要部を示すフローチャートである。
【符号の説明】
【００２６】
１：記憶制御装置
３：マイクロプロセッサパッケージ
４：共有メモリ
５：スイッチ
６：マイクロプロセッサ
７：ローカルメモリ
８Ａ：共有キャッシュ領域
８Ｂ：排他キャッシュ領域
８Ｃ：非キャッシュ領域
１０：記憶制御装置
１１０：フロントエンドパッケージ
１２０：マイクロプロセッサパッケージ
１２１：マイクロプロセッサ
１２２：ローカルメモリ
１３０：メモリパッケージ
１３１：共有メモリ
１４０：バックエンドパッケージ
１５１：記憶装置
【発明を実施するための最良の形態】
【００２７】
図１は、本発明の実施形態の概要を示す説明図である。図１に示す構成は、本発明の範囲を限定するものではなく、図１に示す構成以外の構成も本発明の範囲に含まれる。本実施形態に係る記憶制御装置１は、ホストコンピュータ（以下、「ホスト」と略記）２に接続されている。ホスト２としては、例えば、サーバコンピュータ、メインフレームコンピュータ、エンジニアリングワークステーション、パーソナルコンピュータ等のコンピュータ装置を挙げることができる。
【００２８】
図１は、記憶制御装置１の要部を示している。記憶制御装置１は、複数のマイクロプロセッサパッケージ３と、共有メモリ４と、スイッチ５とを備える。その他、後述する実施例に示すように、記憶制御装置１は、複数の記憶装置１５１を備えることもできる。
【００２９】
図１では、２つのマイクロプロセッサパッケージ３を示すが、３個以上のマイクロプロセッサを設けることもできる。各マイクロプロセッサパッケージ３は、例えば、マイクロプロセッサ６と、ローカルメモリ７とを備える。
【００３０】
マイクロプロセッサ６は、ホスト２からのコマンドを解釈して所定の処理を実行し、その処理結果をホスト２に返す。ローカルメモリ７は、例えば、ローカル制御情報７Ａと、パージバッファ７Ｂと、ローカルメモリ更新管理部７Ｃと、共有メモリ更新値記憶部７Ｄとを備えている。図面では、ローカルメモリを「ＬＭ」と、共有メモリを「ＳＭ」と略して表示している。なお、実施例においても、ローカルメモリをＬＭ、共有メモリをＳＭと略記する場合がある。
【００３１】
ローカル制御情報７Ａは、共有メモリ４に記憶されている制御情報の一部である。制御情報として、例えば、論理ボリュームを識別するための番号、ＲＡＩＤ構成を管理するための情報、ジョブを管理するための情報等のように、コマンド処理及び／または記憶制御装置１の制御等に必要な情報を挙げることができる。
【００３２】
パージバッファ７Ｂは、パージメッセージを記憶するための記憶領域である。本実施形態におけるパージメッセージには、複数の役割がある。一つの役割は、ローカルメモリ７に記憶されているローカル制御情報７Ａが無効である旨を通知することである。この場合、パージメッセージとは、ローカルメモリ７にキャッシュされているローカル制御情報７Ａのパージを要求するためのメッセージである。
【００３３】
他の役割は、マイクロプロセッサ６によって共有メモリ４内の制御情報が更新された回数（カウンタ値）を、他のマイクロプロセッサ６に通知することである。この場合、パージメッセージは、更新通知用メッセージとなる。パージメッセージ内の所定ビットを設定することにより、パージ要求メッセージまたは更新通知用メッセージのいずれか一方の役割を与えることができる。
【００３４】
各マイクロプロセッサ６が共有メモリ４内の制御情報を更新する度に、パージ要求のためのパージメッセージが作成されて、パージバッファ７Ｂに記憶される。なお、同一の領域、または、連続する領域について更新されたような場合、複数の更新を一つのパージメッセージにまとめる。
【００３５】
共有メモリ４内の制御情報に関する一連の更新が完了すると、更新通知用のパージメッセージが作成されてパージバッファ７Ｂに記憶される。更新通知用のパージメッセージがパージバッファ７Ｂに記憶された後、他のマイクロプロセッサ６に向けて、パージバッファ７Ｂ内の各パージメッセージが送信される。
【００３６】
ＬＭ更新管理部７Ｃは、マイクロプロセッサ６による制御情報の更新状態を管理するための管理部である。ＬＭ更新管理部７Ｃは、各マイクロプロセッサ６毎に、その更新回数（カウンタ値）を管理する。例えば、マイクロプロセッサ６（＃０）が共有メモリ４内の制御情報を更新した場合、ＬＭ更新管理部７Ｃは、マイクロプロセッサ６（＃０）のカウンタ値を「１」に設定する。さらに、マイクロプロセッサ６（＃０）が共有メモリ４内の制御情報を更新した場合、カウンタ値は「２」に変更される。
【００３７】
図１中右側に示す別のマイクロプロセッサ６（＃１）が共有メモリ４内の制御情報を更新した場合、その更新の事実は上述のパージメッセージを介して通知される。マイクロプロセッサ６（＃０）は、マイクロプロセッサ６（＃１）から更新通知用メッセージとしてのパージメッセージを受領すると、ＬＭ更新管理部７Ｃ内のマイクロプロセッサ６（＃１）のカウント値を更新させる。
【００３８】
ＳＭ更新値記憶部７Ｄには、所定のタイミングで、共有メモリ４内のＳＭ更新管理部９で管理されている各マイクロプロセッサ６のカウント値がコピーされる。所定のタイミングとしては、マイクロプロセッサ６が共有メモリ４にアクセスする場合を挙げることができる。例えば、ローカル制御情報７Ａに含まれていない他の制御情報を使用する場合、マイクロプロセッサ６は、共有メモリ４にアクセスして所望の制御情報を取得する。その際に、ＳＭ更新管理部９で管理されている各カウント値が読み出されて、ＳＭ更新値記憶部７Ｄに記憶される。
【００３９】
共有メモリ４は、スイッチ５を介して各マイクロプロセッサパッケージ３に接続されている。共有メモリ４は、制御情報記憶領域８と、ＳＭ更新管理部９とを備える。制御情報記憶領域８は、制御情報を記憶するための領域である。制御情報記憶領域８に記憶される制御情報は、各マイクロプロセッサ６により共有される。
【００４０】
制御情報記憶領域８には、共有キャッシュ領域８Ａと、排他キャッシュ領域８Ｂと、非キャッシュ領域８Ｃとが含まれている。共有キャッシュ領域８Ａには、各マイクロプロセッサ６によって共有され、かつ、各マイクロプロセッサ６によりキャッシュされる第１制御情報Ｄ１が記憶される。排他キャッシュ領域８Ｂには、オーナーとなる特定のマイクロプロセッサ６のみがキャッシュでき、他のマイクロプロセッサ６はキャッシュすることのできない第２制御情報Ｄ２が記憶される。非キャッシュ領域８Ｃには、いずれのマイクロプロセッサ６もキャッシュすることのできない第３制御情報Ｄ３が記憶される。
【００４１】
第１制御情報Ｄ１としては、例えば、記憶制御装置１の構成を管理する情報、プログラム製品の設定情報等のように、更新頻度が比較的少なく、かつ、複数のマイクロプロセッサ６から比較的高頻度で参照され得る情報が該当する。
【００４２】
第２制御情報Ｄ２としては、例えば、論理ボリュームを管理する情報、リモートコピーの差分データを管理する情報等のように、特定のマイクロプロセッサ６が比較的高頻度で更新するような情報が該当する。ここでは、その特定のマイクロプロセッサをオーナーマイクロプロセッサと呼ぶ。オーナーマイクロプロセッサ以外のマイクロプロセッサを、非オーナーマイクロプロセッサ、または、その他のマイクロプロセッサと呼ぶ。理解のために、オーナーマイクロプロセッサを６（＃０）とし、その他のマイクロプロセッサを６（＃１）とする。
【００４３】
第３制御情報Ｄ３としては、例えば、記憶制御装置１内で実行される各種ジョブを管理する情報、障害に関する情報等のように、更新頻度が比較的少ない情報が該当する。但し、第１−第３制御情報の例は、上記に限られない。記憶制御装置１の制御方式等に応じて変化し得る。
【００４４】
本実施形態では、制御情報の使われ方等に基づいて制御情報を複数種類に分類し、制御用の属性を与えて共有メモリ４に記憶させる。共有キャッシュ領域８Ａ内の第１制御情報Ｄ１は、各マイクロプロセッサ６がキャッシュ可能である。各マイクロプロセッサ６は、第１制御情報Ｄ１について対等であり、各マイクロプロセッサ６は、第１制御情報Ｄ１をそれぞれのローカルメモリ７にコピーして使用する。各マイクロプロセッサ６が第１制御情報Ｄ１をローカルメモリ７にコピーして使用するため（つまり、第１制御情報Ｄ１をキャッシュするため）、各マイクロプロセッサ６間でパージメッセージが交換される。
【００４５】
排他キャッシュ領域８Ｂ内の第２制御情報Ｄ２は、オーナーマイクロプロセッサ６（＃０）のみがローカルメモリ７にコピー可能であり（つまり、オーナーマイクロプロセッサ６（＃０）のみがキャッシュ可能であり）、その他のマイクロプロセッサ６（＃１）は第２制御情報Ｄ２をローカルメモリ７にコピーすることはできない。第２制御情報Ｄ２の使用を希望するその他のマイクロプロセッサ６（＃１）は、共有メモリ４にアクセスすることにより、第２制御情報Ｄ２を使用する。
【００４６】
第２制御情報Ｄ２をローカルメモリ７にコピーできるのはオーナーマイクロプロセッサ６（＃０）だけであるから、オーナーマイクロプロセッサ６（＃０）は、共有メモリ４内の第２制御情報Ｄ２を更新した場合でも、その他のマイクロプロセッサ６（＃１）にパージメッセージを送信する必要はない。その他のマイクロプロセッサ６（＃１）が共有メモリ４内の第２制御情報Ｄ２を更新した場合、その他のマイクロプロセッサ６（＃１）からオーナーマイクロプロセッサ６（＃０）にパージメッセージが送信される。
【００４７】
非キャッシュ領域８Ｃ内の第３制御情報Ｄ３は、いずれのマイクロプロセッサ６もローカルメモリ７にコピーすることができない。各マイクロプロセッサ６は、第３制御情報Ｄ３を必要とする場合、共有メモリ４に直接アクセスして使用する。従って、第３制御情報Ｄ３については、各マイクロプロセッサ６間でパージメッセージは交換されない。
【００４８】
ＳＭ更新管理部９は、各マイクロプロセッサ６によって共有メモリ４内の各制御情報Ｄ１，Ｄ２が更新された回数を管理する。非キャッシュ領域８Ｃ内の第３制御情報Ｄ３については、更新回数を管理する必要はないが、管理してもよい。
【００４９】
ＳＭ更新管理部９は、各マイクロプロセッサ６を識別するためのマイクロプロセッサ番号（ＭＰ＃）と、各マイクロプロセッサ６による更新回数（ＣＯＵＮＴ）とを対応付けて管理する。なお、各ＬＭ更新管理部７Ｃ及び各ＳＭ更新値記憶部７Ｄも、マイクロプロセッサ番号と更新回数とを対応付けて管理する。つまり、７Ｃ，７Ｄ，９は、それぞれ同一の配列を有する。しかし、更新回数が更新されるタイミング等が異なる。ここでは、更新回数をカウンタ値とも呼ぶ。
【００５０】
第１制御情報Ｄ１に着目して、パージ制御を説明する。以下、ローカルメモリ７，パージバッファ７Ｂ、ＬＭ更新管理部７Ｃ、ＳＭ更新値記憶部７Ｄに、（＃０）または（＃１）を添えることにより、一方のマイクロプロセッサ６（＃０）側の構成であるのか、それとも他方のマイクロプロセッサ６（＃１）側の構成であるのかを区別する。
【００５１】
一方のマイクロプロセッサ６（＃０）が共有メモリ４内の第１制御情報Ｄ１を更新すると、一方のマイクロプロセッサ６（＃０）に対応するＬＭ更新管理部７Ｃ（＃０）において、一方のマイクロプロセッサ６（＃０）のカウンタ値が１つインクリメントされる。さらに、一方のマイクロプロセッサ（＃０）による第１制御情報Ｄ１の更新について、パージ要求用のパージメッセージが作成される。作成されたパージ要求用のパージメッセージは、パージバッファ７Ｂ（＃０）に記憶される。
【００５２】
さらに、一方のマイクロプロセッサ６（＃０）が共有メモリ４内の第１制御情報Ｄ１を更新する場合、一方のマイクロプロセッサ６（＃０）は、ＳＭ更新管理部９内の一方のマイクロプロセッサ６（＃０）のカウンタ値を１つインクリメントさせる。
【００５３】
一方のマイクロプロセッサ６（＃０）は、例えば、ホスト２からのコマンドに対応して、共有メモリ４内の第１制御情報Ｄ１を複数回更新する。複数の更新のそれぞれについて、パージ要求用のパージメッセージが作成され、保存される。なお、一つにまとめることができる場合、複数のパージメッセージが一つのパージメッセージに統合される。
【００５４】
一連の更新が完了すると、更新通知用のパージメッセージが作成される。その更新通知用のパージメッセージには、ＬＭ更新管理部７Ｃ（＃０）に記憶されている、一方のマイクロプロセッサ６（＃０）のマイクロプロセッサ番号及びカウンタ値が含まれる。
【００５５】
更新通知用のパージメッセージがパージバッファ７Ｂ（＃０）に記憶されて、所定の契機が訪れると、パージバッファ７Ｂ（＃０）に記憶された各パージ要求用のパージメッセージと一つの更新通知用パージメッセージとが、他方のマイクロプロセッサ６（＃１）に送信される。パージメッセージを送信する契機としては、例えば、共有メモリ４内の制御情報への一連の更新が完了し、プログラムが明示的にコールした場合、または、パージバッファ７Ｂに保存されるパージメッセージの数が予め設定される上限値に達した場合等が挙げられる。
【００５６】
他方のマイクロプロセッサ６（＃１）は、一方のマイクロプロセッサ６（＃０）からパージメッセージを受領すると、パージ要求用のパージメッセージに基づいて、ローカルメモリ７（＃１）内に記憶されている第１制御情報Ｄ１を無効とする。
【００５７】
さらに、他方のマイクロプロセッサ６（＃１）は、一方のマイクロプロセッサ６（＃０）から受信した更新通知用パージメッセージに基づいて、ＬＭ更新管理部７Ｃ（＃１）内の、一方のマイクロプロセッサ６（＃０）のカウンタ値を更新させる。
【００５８】
このように、更新元のマイクロプロセッサ６（＃０）が共有メモリ４内の制御情報を更新する場合、更新元のマイクロプロセッサ６（＃０）に関するカウンタ値は、更新元のマイクロプロセッサ６（＃０）側のＬＭ更新管理部７Ｃ（＃０）とＳＭ更新管理部９との両方で、ほぼ同時期に更新される。
【００５９】
更新元のマイクロプロセッサ６（＃０）以外の他のマイクロプロセッサ６（＃１）では、更新元マイクロプロセッサ６（＃０）から受信する更新通知用パージメッセージに基づいて、ＬＭ更新管理部７Ｃ（＃１）内の更新元マイクロプロセッサ６（＃０）のカウンタ値を更新させる。
【００６０】
ＳＭ更新値記憶部７Ｄには、マイクロプロセッサ６が共有メモリ４にアクセスした場合にＳＭ更新管理部９から読み出される各カウンタ値がコピーされる。上述の通り、更新元マイクロプロセッサ６（＃０）に関するＳＭ更新管理部９内のカウンタ値は、更新元マイクロプロセッサ６（＃０）による更新処理に同期して更新される。
【００６１】
従って、更新元マイクロプロセッサ６（＃０）以外の他のマイクロプロセッサ６（＃１）は、ＳＭ更新値記憶部７Ｄ（＃１）内の全カウンタ値とＬＭ更新値管理部７Ｃ（＃１）内の全カウンタ値とを比較することにより、ローカルメモリ７（＃１）内に記憶されている第１制御情報Ｄ１が有効であるか否かを判定できる。ここで、共有メモリ４とＳＭ更新値記憶部７Ｄとの区別を明らかにするために、ＳＭ更新値をターゲット（ＴＧＴ）と示す場合がある。
【００６２】
ＬＭ更新管理部７Ｃ（＃１）内の全カウンタ値ＣＯＵＮＴ（ＬＭ＃１）がＳＭ更新値記憶部７Ｄ（＃１）内の全カウンタＣＯＵＮＴ（ＴＧＴ＃１）値と等しいか、あるいは、それよりも大きい場合（ＣＯＵＮＴ（ＬＭ＃１）≧ＣＯＵＮＴ（ＴＧＴ＃１））、ローカルメモリ７（＃１）に記憶されている第１制御情報Ｄ１は、有効であると判定できる。
【００６３】
逆に、ＣＯＵＮＴ（ＬＭ＃１）＜ＣＯＵＮＴ（ＴＧＴ＃１）の場合、更新元マイクロプロセッサ６（＃０）から未だ届いていないパージメッセージが存在すると判断できる。従って、この場合、ローカルメモリ７（＃１）内に記憶されている第１制御情報Ｄ１は古くなっている可能性があり、使用することはできない。
【００６４】
共有キャッシュ領域８Ａに記憶される第１制御情報Ｄ１についてパージ制御の動作を述べたが、排他キャッシュ領域８Ｂに記憶される第２制御情報Ｄ２についても、同様に理解できる。
【００６５】
但し、第２制御情報Ｄ２の場合、オーナーマイクロプロセッサ６（＃０）のみがキャッシュ可能である。従って、オーナーマイクロプロセッサ６（＃０）が共有メモリ４内の第２制御情報Ｄ２を更新した場合でも、その他のマイクロプロセッサ６（＃１）にパージ要求用パージメッセージを送信する必要はない。つまり、オーナーマイクロプロセッサ６（＃０）は、第２制御情報Ｄ２に関するパージメッセージを作成したり、それを保存したりする必要はない。
【００６６】
その他のマイクロプロセッサ６（＃１）は、共有メモリ４内の第２制御情報Ｄ２に直接アクセスして更新することができる。第２制御情報Ｄ２は、オーナーマイクロプロセッサ６（＃０）のローカルメモリ７（＃０）にコピーされている。従って、その他のマイクロプロセッサ６（＃１）が第２制御情報Ｄ２を更新した場合、その他のマイクロプロセッサ６（＃１）からオーナーマイクロプロセッサ（＃０）に向けて、パージ要求用パージメッセージを送信する。
【００６７】
このように構成される本実施形態によれば、以下の効果を奏する。第１に、本実施形態では、共有メモリ４内の制御情報への一連の更新が完了した後で、パージ要求用パージメッセージを各マイクロプロセッサ６間で送受信させる。従って、パージ要求用パージメッセージの通信頻度を少なくでき、パージ処理に要する負荷を低減できる。この結果、マイクロプロセッサ６の演算資源等をホスト２からのコマンドを処理するために用いることができ、記憶制御装置１の処理性能を高めることができる。
【００６８】
第２に、本実施形態では、制御情報の同一箇所または連続する箇所が更新された場合、それら複数の更新を一つのパージ要求用パージメッセージにまとめる。従って、パージ要求用パージメッセージの通信頻度を低減でき、記憶制御装置１の処理性能を高めることができる。
【００６９】
第３に、本実施形態では、ＬＭ更新管理部７Ｃ内のカウンタ値とＳＭ更新値記憶部７Ｄ内のカウント値とを比較することにより、ローカルメモリ７にキャッシュされている制御情報の有効性を判断できる。従って、古い制御情報を誤って使用することを防止し、記憶制御装置の動作の一貫性を保つことができる。
【００７０】
第４に、本実施形態では、共有メモリ４に記憶される制御情報の属性として、共有キャッシュと、排他キャッシュ及び非キャッシュとを用意しており、それら属性に応じてパージ制御を行う。従って、パージメッセージの作成及び送信に関する処理を少なくすることができ、各マイクロプロセッサ６の演算資源等をより一層有効に利用できる。以下、本実施形態についてさらに詳細に説明する。
【実施例１】
【００７１】
図２は、記憶制御装置１０を含む情報処理システムの全体を示す。本実施例では、制御情報を分類しない場合について述べる。先に図１との対応関係を説明する。記憶制御装置１０は記憶制御装置１に、ホスト３０はホスト２に、共有メモリ１３１は共有メモリ４に、マイクロプロセッサ１２１はマイクロプロセッサ６に、ローカルメモリ１２２はローカルメモリ７に、対応する。図３に示す制御情報Ｄ１０Ｌは制御情報７Ａに、図３に示すパージバッファＴ１０はパージバッファ７Ｂに、図３に示すＬＭ更新クロックＴ１１はＬＭ更新管理部７Ｃに、図３に示すターゲット更新クロックＴ１２はＳＭ更新値記憶部７Ｄに、図３に示すＳＭ更新クロックＴ１３は、ＳＭ更新管理部９に、対応する。図９の第１制御情報Ｄ１１は第１制御情報Ｄ１に、図９の第２制御情報Ｄ１２は第２制御情報Ｄ２に、図９の第３制御情報Ｄ１３は第３制御情報Ｄ３に、対応する。
【００７２】
記憶制御装置１０は、例えば、フロントエンドパッケージ１１０（図中、ＦＥＰＫ１１０）と、マイクロプロセッサパッケージ１２０（図中、ＭＰＰＫ１２０）と、メモリパッケージ１３０（図中、メモリＰＫ１３０）と、バックエンドパッケージ１４０（図中、ＢＥＰＫ１４０）と、スイッチ１６０と、サービスプロセッサ１７０（図中、ＳＶＰ１７０）とを備える。
【００７３】
フロントエンドパッケージ１１０は、ホスト３０との通信を担当するための制御基板である。フロントエンドパッケージ１１０は、複数の通信ポート１１１を備える。通信ポート１１１は、通信ネットワーク４１を介してホスト３０に接続される。通信ネットワーク４１としては、例えば、ＦＣ＿ＳＡＮ（Fibre Channel_Storage Area Network）やＩＰ＿ＳＡＮ（Internet Protocol_SAN）を用いることができる。
【００７４】
ＦＣ＿ＳＡＮの場合、ホスト３０とフロントエンドパッケージ１１０とは、ファイバチャネルプロトコルに従ってデータ通信を行う。ホスト３０がメインフレームの場合は、例えば、FICON（Fibre Connection：登録商標）、ESCON（Enterprise System Connection：登録商標）、ACONARC（Advanced Connection Architecture：登録商標）、FIBARC（Fibre Connection Architecture：登録商標）等の通信プロトコルに従って、データ通信が行われる。ＩＰ＿ＳＡＮの場合、ホスト３０とフロントエンドパッケージ１１０とは、ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）等のプロトコルに従って、データ通信を行う。
【００７５】
バックエンドパッケージ１４０は、記憶装置１５１との通信を担当するための制御基板である。バックエンドパッケージ１４０は、複数の通信ポート１４１を備えており、各通信ポート１４１は各記憶装置１５１に接続されている。
【００７６】
メモリパッケージ１３０は、共有メモリ領域１３１と、キャッシュメモリ領域１３２とを備える。共有メモリ領域１３１には、例えば、ホスト３０から受信したコマンドや制御用の各種情報等が記憶される。キャッシュメモリ領域１３２には、例えば、ユーザデータやキャッシュメモリ領域１３２を管理するためのテーブル等が記憶される。以下の説明では、キャッシュメモリ領域１３２をキャッシュメモリ１３２と呼ぶ。
【００７７】
マイクロプロセッサパッケージ１２０は、モジュール１００の動作を制御するための制御基板である。マイクロプロセッサパッケージ１２０は、マイクロプロセッサ１２１とローカルメモリ１２２とを備える。
【００７８】
マイクロプロセッサパッケージ１２０は、ホスト３０から発行されたコマンドを実行し、その実行結果をホスト３０に送信する。フロントエンドパッケージ１１０がリードコマンドを受信した場合、マイクロプロセッサパッケージ１２０は、要求されたデータをキャッシュメモリ１３２または記憶装置１５１から取得し、ホスト３０に送信させる。
【００７９】
フロントエンドパッケージ１１０がライトコマンドを受信した場合、マイクロプロセッサパッケージ１２０は、ライトデータをキャッシュメモリ１３２に書き込み、ホスト３０に処理完了を通知する。キャッシュメモリ１３２に書き込まれたデータは、その後、記憶装置１５１に書き込まれる。マイクロプロセッサパッケージ１２０の構成については、図３でさらに詳述する。
【００８０】
記憶装置１５１は、ハードディスクドライブまたはフラッシュメモリデバイス等の記憶装置から構成される。複数の記憶装置１５１を一つのグループ１５０にまとめることができる。このグループ１５０は、例えば、ＲＡＩＤグループまたはパリティグループと呼ばれる。そして、グループ化された記憶領域には、一つまたは複数の論理ボリューム１５２が形成される。
【００８１】
記憶装置１５１としては、例えば、ハードディスクデバイス、半導体メモリデバイス、光ディスクデバイス、光磁気ディスクデバイス、磁気テープデバイス、フレキシブルディスクデバイス等のデータを読み書き可能な種々のデバイスを利用可能である。
【００８２】
記憶装置１５１としてハードディスクデバイスを用いる場合、例えば、ＦＣ（Fibre
Channel）ディスク、ＳＣＳＩ（Small Computer System Interface）ディスク、ＳＡＴＡディスク、ＡＴＡ（AT Attachment）ディスク、ＳＡＳ（Serial Attached SCSI）ディスク等を用いることができる。
【００８３】
記憶装置１５１として半導体メモリデバイスを用いる場合、例えば、フラッシュメモリ、ＦｅＲＡＭ（Ferroelectric Random Access Memory）、ＭＲＡＭ（Magnetoresistive Random Access Memory）、相変化メモリ（Ovonic Unified Memory）、ＲＲＡＭ（Resistance RAM）」等の種々のメモリデバイスを利用可能である。なお、記憶デバイスの種類は、上記のものに限定されず、将来製品化される他の種類の記憶デバイスを利用することもできるであろう。
【００８４】
スイッチ１６０は、各パッケージ１１０，１２０，１３０，１４０を接続するための回路である。フロントエンドパッケージ１１０、バックエンドパッケージ１４０、マイクロプロセッサパッケージ１３０は、スイッチ１６０を介して、メモリパッケージ１３０にアクセスする。
【００８５】
ＳＶＰ１７０は、記憶制御装置１０内の各種情報を収集して管理端末２０に提供したり、管理端末２０から入力された設定値等を共有メモリ１３１に記憶させたりするための制御回路である。ＳＶＰ１７０は、例えば、ＬＡＮ（Local Area Network）等の通信ネットワーク４２を介して、管理端末２０に接続されている。
【００８６】
図３は、マイクロプロセッサパッケージ１２０の構成を模式的に示す図である。ローカルメモリ１２２には、制御情報Ｄ１０Ｌと、パージバッファＴ１０と、ＬＭ更新クロックＴ１１と、ターゲット更新クロックＴ１２とが記憶される。
【００８７】
制御情報Ｄ１０Ｌは、共有メモリ１３１内の制御情報Ｄ１０の一部をコピーしたものである。パージバッファＴ１０は、パージメッセージを記憶するものである。パージメッセージについては、図４で後述する。ＬＭ更新クロックＴ１１は、マイクロプロセッサ１２１による更新をローカルメモリ側で管理するためのものである。ターゲット更新クロックＴ１２には、所定のタイミングで、共有メモリ１３１内のＳＭ更新クロックＴ１３の各カウンタ値がコピーされる。
【００８８】
共有メモリ１３１には、制御情報記憶領域１３１０とＳＭ更新クロックＴ１３とが設けられる。制御情報記憶領域１３１０には、制御情報Ｄ１０が記憶される。ＳＭ更新クロックＴ１３は、各マイクロプロセッサ１２１により更新された回数を示すカウンタ値を、各マイクロプロセッサ１２１を識別するためのマイクロプロセッサ番号毎にそれぞれ管理している。各ＬＭ更新クロックＴ１１及び各ターゲット更新クロックＴ１２も、マイクロプロセッサ番号とカウンタ値とを対応付けて管理する。つまり、各更新クロックＴ１１，Ｔ１２，Ｔ１３は、同一の構造を有する。
【００８９】
図４は、パージバッファの構成を示す図である。パージバッファＴ１０は、例えば、メッセージタイプ欄Ｃ１００と、第１データ欄Ｃ１０１と、第２データ欄Ｃ１０２とを備えている。
【００９０】
メッセージタイプ欄Ｃ１００には、パージメッセージが、パージ要求用メッセージであるか、それとも、更新通知用メッセージであるかを示すタイプが格納される。メッセージタイプ０は、パージ要求用パージメッセージであることを示す。
【００９１】
パージ要求用パージメッセージの場合、第１データ欄Ｃ１０１には、更新されたデータのサイズが格納される。例えば、データサイズとしてライン数が設定される。１ラインは、例えば６４バイトである。パージ要求用パージメッセージの場合、第２データ欄Ｃ１０２には、共有メモリ１３１内の記憶先アドレス（開始アドレス）が格納される。つまり、パージ要求用パージメッセージを用いれば、第２データ欄Ｃ１０２で示される開始アドレスから、第１データ欄Ｃ１０１で示されるサイズまでのデータ（制御情報Ｄ１０）が更新された事がわかる。
【００９２】
メッセージタイプ１は、更新通知用パージメッセージであることを示す。更新通知用パージメッセージの場合、第１データ欄Ｃ１０１には、その更新通知用パージメッセージを発行する発行元マイクロプロセッサ１２１のマイクロプロセッサ番号（ＭＰ＃）が格納される。第２データ欄Ｃ１０２には、発行元マイクロプロセッサ１２１側で管理されているＬＭ更新クロックＴ１１内の各カウンタ値のうち、発行元マイクロプロセッサ１２１のカウンタ値が格納される。
【００９３】
更新元（後の発行元）マイクロプロセッサ１２１が共有メモリ１３１内の制御情報を更新するたびに、メッセージタイプ０のパージメッセージが作成されて、パージバッファＴ１０に登録される。一連の更新が完了すると、メッセージタイプ１のパージメッセージが作成されて、パージバッファＴ１０に登録される。
【００９４】
図５は、複数のパージ要求用パージメッセージを一つのパージメッセージに統合する様子を示す図である。一方のパージメッセージＭＳＧ１の更新箇所と他方のパージメッセージＭＳＧ２の更新箇所とが、同一、または、連続、または、重複する場合、それらパージメッセージＭＳＧ１，２を一つのパージメッセージＭＳＧ３に統合して、パージバッファＴ１０に記憶させる。これにより、パージメッセージの数を低減して、パージメッセージの通信頻度を少なくできる。
【００９５】
図６は、ＬＭ更新クロックＴ１１とターゲット更新クロックＴ１２及びＳＭ更新クロックＴ１３の関係を示す図である。ＬＭ更新クロックＴ１１には、各マイクロプロセッサパッケージ１２０側で管理される各カウンタ値が記憶される。
【００９６】
ＬＭ更新クロックＴ１１を管理するマイクロプロセッサ１２１のカウンタ値は、そのマイクロプロセッサ１２１による制御情報Ｄ１０の更新とリアルタイムで更新される。例えば、マイクロプロセッサ１２１（＃０）の管理するＬＭ更新クロックＴ１１の場合、マイクロプロセッサ１２１（＃０）のカウンタ値は、更新処理とほぼ同時にＬＭ更新クロックＴ１１に記録される。他のマイクロプロセッサ１２１（＃１−＃３）の各カウンタ値は、他のマイクロプロセッサ１２１（＃１−＃３）から発行される更新通知用パージメッセージに基づいて更新される。
【００９７】
なお、図２，図７等ではマイクロプロセッサ１２１を２個示し、図４ではマイクロプロセッサ１２１が少なくとも８個ある場合を示し、図６ではマイクロプロセッサ１２１が４個ある場合を示しているが、説明の便宜上の例示に過ぎない。本発明は、複数のマイクロプロセッサ１２１が共有メモリ１３１を共有する構成の場合に有用である。混乱を避けるために、第１実施例では、マイクロプロセッサ１２１が２個の場合を中心に述べる。
【００９８】
図６に示すターゲット更新クロックＴ１２は、上述の通り、ＳＭ更新クロックＴ１３のコピーである。例えば、マイクロプロセッサ１２１が、ローカルメモリ７にキャッシュされている制御情報Ｄ１０Ｌ以外の制御情報を使用する場合（キャッシュミス時）、マイクロプロセッサ１２１は共有メモリ１３１内の制御情報Ｄ１０にアクセスする。マイクロプロセッサ１２１が共有メモリ１３１にアクセスした場合に、共有メモリ１３１内のＳＭ更新クロックＴ１３の各カウント値が読み出されて、ターゲット更新クロックＴ１２にコピーされる。
【００９９】
図６に示すＳＭ更新クロックＴ１３は、各マイクロプロセッサ１２１による制御情報Ｄ１０の更新回数を管理する。上述の通り、更新元マイクロプロセッサ１２１で管理されているＬＭ更新クロックＴ１１内の更新元マイクロプロセッサ１２１のカウンタ値と、ＳＭ更新クロックＴ１３内の更新元マイクロプロセッサ１２１のカウンタ値とは、ほぼ同時期に更新される。そして、他の各マイクロプロセッサ１２１が共有メモリ１３１にアクセスした場合、ＳＭ更新管理クロックＴ１３内の各カウンタ値が、他の各マイクロプロセッサ１２１で管理されているターゲット更新クロックＴ１２にコピーされる。
【０１００】
図７は、更新クロックの大小を判定する方法を模式的に示す図である。上述の通り、各更新クロックＴ１１，Ｔ１２，Ｔ１３は、マイクロプロセッサ番号とカウンタ値とを対応付ける、同一構造を有する。そして、ＬＭ更新クロックＴ１１に記憶されている各カウンタ値と、ターゲット更新クロックＴ１２に記憶されている各カウンタ値との大小関係に基づいて、ローカルメモリ１２２にコピーされている制御情報Ｄ１０Ｌが有効であるか否かが判定される。
【０１０１】
各更新クロックの大小関係は、次のように判定される。図７に示す更新クロックＣ１−Ｃ３を例に挙げて説明する。更新クロックＣ１と更新クロックＣ２との関係のように、更新クロックＣ２の各カウンタ値が更新クロックＣ１の対応する各カウンタ値以上の場合に、Ｃ２≧Ｃ１であると判定する。なお、同一マイクロプロセッサ番号について、カウンタ値の大小を比較する。
【０１０２】
同様に、更新クロックＣ１と更新クロックＣ３との関係に着目すると、更新クロックＣ３の各カウンタ値は、更新クロックＣ１の対応する各カウンタ値以上であるため、Ｃ３≧Ｃ１と判定される。
【０１０３】
更新クロックＣ２と更新クロックＣ３の関係に着目すると、マイクロプロセッサ番号＃０の場合、更新クロックＣ２のカウンタ値の方が更新クロックＣ３の対応するカウンタ値よりも大きい。しかし、別のマイクロプロセッサ番号＃１の場合、更新クロックＣ２のカウンタ値は、更新クロックＣ３の対応するカウンタ値よりも小さい。従って、更新クロックＣ２と更新クロックＣ３の関係は、不定であり、いずれが大でいずれが小であるか区別することはできない。
【０１０４】
図８は、パージ制御の動作を示すフローチャートである。共有メモリ１３１のアドレスＸには、制御情報Ｄ１０の一部としてのデータ”０”が記憶されている（Ｓ１０）。マイクロプロセッサ１２１（＃０）は、共有メモリ１３１のアドレスＸからデータ”０”を読み出す（Ｓ１１）。読み出されたデータ”０”は、ローカルメモリ１２２（＃０）に記憶される。
【０１０５】
この時点における、ＬＭ更新クロック（ＬＭ−ＣＬＫ）Ｔ１１（＃０）の値は、（０，０）である。先の”０”は、マイクロプロセッサ１２１（＃０）のカウンタ値であり、後の”０”は、マイクロプロセッサ１２１（＃１）のカウンタ値である。ターゲット更新クロック（ＴＧＴ−ＣＬＫ）Ｔ１２（＃０）の値も（０，０）である。
【０１０６】
マイクロプロセッサ１２１（＃０）が再びアドレスＸのデータを参照しようとする場合には、ローカルメモリ１２２（＃０）にキャッシュされているデータ”０”が使用される（Ｓ１２）。ＬＭ更新クロックのカウンタ値とターゲット更新クロックのカウンタ値とを比較すると、ＬＭ−ＣＬＫ≧ＴＧＴ−ＣＬＫの関係が成り立つため、ローカルメモリ１２２（＃０）に記憶されているデータ”０”を使用できる。
【０１０７】
別のマイクロプロセッサ１２１（＃１）がアドレスＸにデータ”８”を書き込む場合を説明する（Ｓ１３）。その更新元マイクロプロセッサ１２１（＃１）が管理するＬＭ更新クロックＴ１１（＃１）内の更新元マイクロプロセッサ１２１（＃１）のカウンタ値は、１つだけインクリメントされる。従って、ＬＭ−ＣＬＫ（ＬＭ更新クロック）は、（０，０）から（０，１）に変化する。共有メモリ１３１内のＳＭ更新クロック（ＳＭ−ＣＬＫ）Ｔ１３のカウンタ値も、（０，０）から（０，１）に変化する（Ｓ１４）。
【０１０８】
マイクロプロセッサ１２１（＃０）が共有メモリ１３１の別アドレスＹから制御情報Ｄ１０の一部としてのデータを読み出す場合（Ｓ１５）、マイクロプロセッサ１２１（＃０）は、ＳＭ更新クロックＴ１３の各カウンタ値（０，１）も取得する。これにより、マイクロプロセッサ１２１（＃０）が管理しているターゲット更新クロックＴ１３のカウンタ値は、（０，０）から（０，１）に変化する（Ｓ１６）。
【０１０９】
別のマイクロプロセッサ１２１（＃１）が共有メモリ１３１のアドレスＸにデータ”１０”を書き込む場合を説明する（Ｓ１７）。その更新元マイクロプロセッサ１２１が管理しているＬＭ更新クロックＴ１１（＃１）のカウンタ値は、（０，１）から（０，２）に変化する。２回目の更新だからである。更新元マイクロプロセッサ１２１（＃１）がアドレスＸにデータ”１０”を書き込む際に、ＳＭ更新クロックＴ１３のカウンタ値は（０，１）から（０，２）に更新される（Ｓ１８）。なお、ターゲット更新クロックＴ１３（＃１）のカウンタ値は、（０，０）のまま変化していない。
【０１１０】
マイクロプロセッサ１２１（＃０）が、アドレスＸのデータを再び参照しようとする場合、ローカルメモリ１２２（＃０）にキャッシュされているデータ”０”が有効であるか否か（最新であるか否か）を判定する。マイクロプロセッサ１２１（＃０）は、ＬＭ更新クロックＴ１１（＃０）のカウンタ値（０，０）とターゲット更新クロックＴ１３（＃０）のカウンタ値（０，１）とを比較する。
【０１１１】
ＬＭ更新クロックＴ１１（＃０）のカウンタ値（０，０）は、ターゲット更新クロックＴ１３（＃０）のカウンタ値（０，１）よりも小さいため、ローカルメモリ１２２（＃０）にキャッシュされているデータ”０”は古くて使用できないと判定される。つまり、別のマイクロプロセッサ１２１（＃１）による更新を示すパージメッセージがマイクロプロセッサ１２１（＃０）に届いていないと判断される。
【０１１２】
そこで、マイクロプロセッサ１２１（＃０）は、共有メモリ１３１にアクセスして、アドレスＸから最新データ”１０”を読み出す（Ｓ１９）。読み出された最新データ”１０”は、ローカルメモリ１２２（＃０）に記憶される。マイクロプロセッサ１２１（＃０）が共有メモリ１３１のアドレスＸからデータ”１０”を読み出す際に、ＳＭ更新クロックＴ１３のカウンタ値（０，２）も読み出される。これにより、マイクロプロセッサ１２１（＃０）が管理しているターゲット更新クロックＴ１３（＃０）のカウンタ値は、（０，１）から（０，２）に更新される（Ｓ２０）。
【０１１３】
別のマイクロプロセッサ１２１（＃１）は、一連の更新処理（Ｓ１３，Ｓ１７）が完了すると、更新通知用パージメッセージを作成してパージバッファＴ１０（＃１）に登録する。その後、パージバッファＴ１０（＃１）に登録された全てのパージメッセージを、マイクロプロセッサ１２１（＃０）に送信する（Ｓ２１）。マイクロプロセッサ１２１（＃１）は、共有メモリ１３１内のデータを２回更新しているが（Ｓ１３，Ｓ１７）、最終的に１つのパージ要求用パージメッセージに統合される（Type=0,line=1,adr=X）。
【０１１４】
マイクロプロセッサ１２１（＃０）は、マイクロプロセッサ１２１（＃１）からのパージメッセージに基づいて、ＬＭ更新クロックＴ１１（＃０）のカウンタ値を（０，０）から（０，２）に更新させる（Ｓ２２）。
【０１１５】
本実施例によれば、共有メモリ１３１内の制御情報Ｄ１０への一連の更新が完了した後で、パージ要求用パージメッセージを発行させる。従って、パージ要求用パージメッセージの通信頻度を少なくでき、パージ処理に要する負荷を低減できる。この結果、記憶制御装置１０の処理性能を高めることができる。
【０１１６】
本実施例では、制御情報への複数回の更新を一つのパージ要求用パージメッセージに統合させる。従って、パージ要求用パージメッセージの通信頻度を低減でき、記憶制御装置１０の処理性能を高めることができる。
【０１１７】
本実施例では、ＬＭ更新クロックＴ１１のカウンタ値とターゲット更新クロックＴ１２のカウント値とを比較することにより、ローカルメモリ１２２にキャッシュされている制御情報Ｄ１０Ｌの有効性を判断できる。従って、古い制御情報を誤って使用することを防止し、記憶制御装置の動作の一貫性を高めることができる。
【実施例２】
【０１１８】
図９−図１５に基づいて第２実施例を説明する。本実施例を含む以下の各実施例は、第１実施例の変形例に相当する。従って、以下の各実施例では、第１実施例との相違点を中心に説明する。本実施例では、制御情報を、その技術的性質に基づいて複数種類に分類し、それぞれの種類に適した制御を実行する。つまり、本実施例では、制御情報に所定のキャッシュ属性を設定して管理する。
【０１１９】
図９は、本実施例による記憶制御装置１０の要部を示す図である。本実施例の共有メモリ１３１に着目すると、制御情報記憶領域１３１０には、さらに３つの領域１３１１，１３１２，１３１３が設定されている。
【０１２０】
第１の領域１３１１は、共有キャッシュ領域である。共有キャッシュ領域１３１１には、第１制御情報Ｄ１１が記憶される。第１制御情報Ｄ１１は、各マイクロプロセッサ１２１によって共有され、各ローカルメモリ１２２にそれぞれキャッシュされる。
【０１２１】
図１１に示すように、第１制御情報Ｄ１１としては、例えば、記憶制御装置１０の構成を管理する情報Ｄ１１０、プログラム製品の設定情報Ｄ１１１等のように、更新頻度が比較的少なく、かつ、複数のマイクロプロセッサ１２１から比較的高頻度で参照され得る情報が該当する。
【０１２２】
第２の領域１３１２は、排他キャッシュ領域である。排他キャッシュ領域１３１２には、第２制御情報Ｄ１２が記憶される。第２制御情報Ｄ１２は、オーナーとなる特定のマイクロプロセッサ１２１のみがキャッシュでき、他のマイクロプロセッサ１２１はキャッシュすることができない。他のマイクロプロセッサ１２１は、共有メモリ１３１に直接アクセスして第２制御情報Ｄ１２を使用する。
【０１２３】
図中では、一つの排他キャッシュ領域１３１２のみを示すが、排他キャッシュ領域１３１２は、各マイクロプロセッサ１２１毎に設けることもできる。つまり、各マイクロプロセッサ１２１がオーナーとなる排他キャッシュ領域をそれぞれ設定できる。
【０１２４】
第２制御情報Ｄ１２としては、図１１に示すように、例えば、論理ボリューム１５２を管理する情報Ｄ１２０、リモートコピーの差分データを管理する情報Ｄ１２１等のように、特定のマイクロプロセッサ１２１が比較的高頻度で更新する情報が該当する。
【０１２５】
第３の領域１３１３は、非キャッシュ領域である。非キャッシュ領域１３１３には、第３制御情報Ｄ１３が記憶される。第３制御情報Ｄ１３は、いずれのマイクロプロセッサ１２１もキャッシュできない。
【０１２６】
第３制御情報Ｄ１３としては、図１１に示すように、例えば、記憶制御装置１０内で実行される各種ジョブを管理する情報Ｄ１３０、障害に関する管理情報等Ｄ１３１のように、更新頻度が比較的少ない情報が該当する。但し、第１−第３制御情報の例は、上記に限られない。
【０１２７】
上述のキャッシュ属性（共有キャッシュ、排他キャッシュ、非キャッシュ）は、キャッシュ属性管理テーブルＴ１４によって管理される。キャッシュ属性管理テーブルＴ１４は、共有メモリ１３１に記憶されている。各ローカルメモリ１２２には、共有メモリ１３１に記憶されたキャッシュ属性管理テーブルＴ１４のコピーが設けられる。
【０１２８】
図１０の上部は、キャッシュ属性管理テーブルＴ１４を示す図である。キャッシュ属性管理テーブルＴ１４は、例えば、ＳＭアドレス（共有メモリ）の上位を示す欄Ｃ１４０と、エリア属性欄Ｃ１４１とを備える。図１０の下部は、エリア属性の関係を模式的に示す図である。
【０１２９】
本実施例では、ＳＭアドレスの上位ビット毎にＳＭのキャッシュ属性を設定するようになっている。図１０に示す例では、ＳＭアドレスを３２ビットとすると、0x00000000-0x0001FFFFが非キャッシュ、0x00020000-0x0002FFFFが共有キャッシュ、0x00030000-0x0003FFFFが排他キャッシュ（オーナーＭＰは＃０）となる。共有メモリ１３１にリードまたはライトする場合、図１０上部に示すテーブルＴ１４を参照して、アクセスしようとするアドレスのエリア属性を判断する。各制御情報Ｄ１１，Ｄ１２，Ｄ１３は、ひとかたまりずつの連続領域として存在するのではなく、テーブルＴ１４で決定されているアドレス範囲ごとに自由に設定できる。
【０１３０】
共有キャッシュの属性を有する第１制御情報Ｄ１１は、複数のマイクロプロセッサ１２１によりキャッシュされる。排他キャッシュの属性を有する第２制御情報Ｄ１２の場合、オーナーマイクロプロセッサは第２制御情報Ｄ１２をキャッシュ可能であるが、オーナーマイクロプロセッサ以外の他のマイクロプロセッサは、第２制御情報Ｄ１２をキャッシュすることができない。非キャッシュの属性を有する第３制御情報Ｄ１３は、いずれのマイクロプロセッサ１２１もキャッシュすることができない。
【０１３１】
キャッシュの可否とパージメッセージの送信可否とは密接に関係する。第１制御情報Ｄ１１は、全てのマイクロプロセッサ１２１にキャッシュが許可されている。各マイクロプロセッサ１２１は、共有メモリ１３１内の第１制御情報Ｄ１１を更新すると、パージメッセージを作成し、所定の時点で他の各マイクロプロセッサ１２１に送信する。
【０１３２】
排他キャッシュの場合を説明する。オーナーマイクロプロセッサは、共有メモリ１３１内の第２制御情報Ｄ１２を更新した場合でも、パージメッセージを作成したり、パージメッセージを他の各マイクロプロセッサに送信したりする必要はない。第２制御情報Ｄ１２をキャッシュできるのは、オーナーマイクロプロセッサのみだからである。
【０１３３】
これに対し、オーナーマイクロプロセッサ以外の他のマイクロプロセッサ１２１が共有メモリ１３１内の第２制御情報Ｄ１２を更新した場合、他のマイクロプロセッサ１２１はパージメッセージを作成して、オーナーマイクロプロセッサにのみ送信する。オーナーマイクロプロセッサは、共有メモリ１３１内の第２制御情報Ｄ１２をローカルメモリ１２２にコピーして使用しているためである。
【０１３４】
非キャッシュの場合を説明する。各マイクロプロセッサ１２１は、非キャッシュの属性を有する第３制御情報Ｄ１３をローカルメモリ１２２にコピーして使用することができないようになっている。従って、共有メモリ１３１内の第３制御情報Ｄ１３が更新された場合でも、パージメッセージを作成して送信する必要はない。
【０１３５】
図１２は、共有メモリ１３１にデータ（制御情報）を書き込む場合の処理を示すフローチャートである。マイクロプロセッサ１２１は、ライトアドレスに基づいてキャッシュ属性管理テーブルＴ１４を参照する（Ｓ５１）。共有メモリ１３１内のデータを更新しようとするマイクロプロセッサを、更新元マイクロプロセッサと呼ぶ。
【０１３６】
マイクロプロセッサ１２１は、ライトアクセスが共有キャッシュ領域１３１１に含まれるか否かを判定する（Ｓ５２）。共有キャッシュ領域１３１１への書込みである場合（S52:YES）、つまり、第１制御情報Ｄ１１を更新する場合、マイクロプロセッサ１２１は、自分の管理しているＬＭ更新クロックＴ１１内の対応するカウンタ値を１つインクリメントさせる（Ｓ５３）。即ち、更新元のマイクロプロセッサ１２１は、更新元マイクロプロセッサ１２１が管理するＬＭ更新クロックＴ１１内の更新元マイクロプロセッサ１２１のカウンタ値を１つ増加させる。
【０１３７】
さらに、更新元マイクロプロセッサ１２１は、更新元マイクロプロセッサ１２１が管理しているパージバッファＴ１０にライトアクセス及びライトデータのサイズを登録する（Ｓ５４）。
【０１３８】
更新元マイクロプロセッサ１２１は、共有メモリ１３１に新しいデータを書込み（Ｓ５５）、ＳＭ更新クロックＴ１３内の更新元マイクロプロセッサ１２１のカウンタ値を１つインクリメントさせる（Ｓ５６）。
【０１３９】
更新元マイクロプロセッサ１２１は、更新対象のデータ（更新対象の制御情報Ｄ１１）がローカルメモリ１２２にコピーされているか否かを判定する（Ｓ５７）。更新対象データがローカルメモリ１２２にコピーされている場合（S57:YES）、つまり、キャッシュヒットの場合（S57:YES）、更新元マイクロプロセッサ１２１は、ローカルメモリ１２２にコピーされている制御情報を更新させる（Ｓ５８）。
【０１４０】
キャッシュミスの場合（S57:NO）、本処理を終了する。なお、キャッシュミス時に、共有メモリ１３１内で更新された制御情報Ｄ１１を読み出して、ローカルメモリ１２２にコピーさせる構成でもよい。その場合、更新元マイクロプロセッサ１２１が管理しているターゲット更新クロックＴ１２のカウンタ値は、ＳＭ更新クロックＴ１３のカウンタ値で更新される。
【０１４１】
そのライトアドレスが共有キャッシュ領域内に存在しない場合（S52:NO）、更新元マイクロプロセッサ１２１は、そのライトアドレスが更新元マイクロプロセッサ１２１がオーナーである排他キャッシュ領域１３１２内に存在するか否かを判定する（Ｓ５９）。
【０１４２】
更新元マイクロプロセッサ１２１がオーナーである排他キャッシュ領域１３１２内の第２制御情報Ｄ１２を更新する場合（S59:YES）、パージメッセージを作成したり保存したりする必要はない。そこで、Ｓ５３，Ｓ５４をスキップしてＳ５５に移る。
【０１４３】
そのライトアドレスが、更新元マイクロプロセッサ１２１がオーナーである排他キャッシュ領域１３１２内に存在しない場合（S59:NO）、更新元マイクロプロセッサ１２１は、そのライトアドレスが更新元マイクロプロセッサ１２１がオーナーではない排他キャッシュ領域内に存在するか否かを判定する（Ｓ６０）。
【０１４４】
更新元マイクロプロセッサ１２１がオーナーではない排他キャッシュ領域内の第２制御情報Ｄ１２を更新する場合（S60:YES）、更新元マイクロプロセッサ１２１は、「オーナーマイクロプロセッサ以外の他のマイクロプロセッサ」となる。
【０１４５】
更新元マイクロプロセッサ１２１は、更新元マイクロプロセッサ１２１が管理しているＬＭ更新クロックＴ１１内の更新元マイクロプロセッサ１２１のカウンタ値を１つインクリメントさせる（Ｓ６１）。さらに、更新元マイクロプロセッサ１２１は、パージバッファＴ１０に、ライトアドレス及びライトデータのサイズを登録する（Ｓ６２）。
【０１４６】
更新元マイクロプロセッサ１２１は、共有メモリ１３１内の第２制御情報Ｄ１２を更新し（Ｓ６３）、ＳＭ更新クロックＴ１３内の更新元マイクロプロセッサ１２１のカウンタ値を１つインクリメントさせる（Ｓ６４）。
【０１４７】
そのライトアドレスが、更新元マイクロプロセッサ１２１がオーナーマイクロプロセッサではない排他キャッシュ領域内にも存在しない場合（S60:NO）、そのライトアドレスは、非キャッシュ領域１３１３内に存在する。従って、更新元マイクロプロセッサ１２１は、Ｓ６１，Ｓ６２をスキップしてＳ６３に移る。非キャッシュ領域１３１３に属する第３制御情報Ｄ１３は、いずれのマイクロプロセッサ１２１もキャッシュできないため、パージメッセージを作成したり保存したりする必要はない。
【０１４８】
図１４は、パージメッセージを他のマイクロプロセッサ１２１に送信する処理を示すフローチャートである。ここでは、パージメッセージを送信するマイクロプロセッサを発行元マイクロプロセッサと呼ぶ。
【０１４９】
発行元マイクロプロセッサ１２１は、パージメッセージの送信契機が到来したか否かを判定する（Ｓ７０）。例えば、共有メモリ１３内に記憶されている制御情報について一連の更新が全て完了した場合に、その更新に関するプログラムからの明示的な指示によって、パージメッセージが送信される。または、例えば、パージバッファＴ１０に保存されたパージメッセージ数が所定の上限値に達した場合に、パージメッセージが送信される。その他の送信契機を採用してもよい。
【０１５０】
送信契機が到来すると（S70:YES）、発行元マイクロプロセッサ１２１は、更新通知用パージメッセージを作成する（Ｓ７１）。つまり、発行元マイクロプロセッサ１２１は、パージバッファＴ１０に、発行元マイクロプロセッサ１２１のマイクロプロセッサ番号と、ＬＭ更新クロックＴ１１内の発行元マイクロプロセッサ１２１のカウンタ値とを、登録する（Ｓ７１）。
【０１５１】
そして、発行元マイクロプロセッサ１２１は、パージバッファＴ１０内の各パージメッセージを、他の各マイクロプロセッサ１２１に向けて送信する（Ｓ７２）。但し、第２制御情報Ｄ１２に関するパージメッセージの場合、発行元マイクロプロセッサ１２１が、オーナーマイクロプロセッサ以外の他のマイクロプロセッサのときは、オーナーマイクロプロセッサにのみパージメッセージを送信する。
【０１５２】
図１５は、共有メモリ１３１内からデータ（制御情報）を読み出す場合の処理を示すフローチャートである。データを読み出すマイクロプロセッサを、ここでは、読み出し元マイクロプロセッサと呼ぶ。
【０１５３】
読み出し元マイクロプロセッサ１２１は、リードアドレスに基づいてキャッシュ属性管理テーブルＴ１４を参照する（Ｓ１００）。読み出し元マイクロプロセッサ１２１は、そのリードアドレスが共有キャッシュ領域１３１１または排他キャッシュ領域（オーナー）のいずれかに存在するか否かを判定する（Ｓ１０１）。
【０１５４】
ここで、排他キャッシュ領域（オーナー）とは、マイクロプロセッサがオーナーである排他キャッシュ領域であることを示す。これに対し、排他キャッシュ領域（その他）とは、マイクロプロセッサがオーナーでは無い排他キャッシュ領域であることを示す。
【０１５５】
リードアドレスが共有キャッシュ領域１３１１または排他キャッシュ領域（オーナー）１３１２のいずれかに含まれる場合（S101:YES）、読み出し元マイクロプロセッサ１２１は、他の各マイクロプロセッサ１２１からのパージメッセージが届いているか否かを確認する（Ｓ１０２）。
【０１５６】
読み出し元マイクロプロセッサ１２１は、パージメッセージに基づいて、ローカルメモリ１２２内のキャッシュデータ（ローカルメモリ１２２内にコピーされた制御情報）の一部または全部を無効にする（Ｓ１０３）。
【０１５７】
さらに、読み出し元マイクロプロセッサ１２１は、他の各マイクロプロセッサ１２１から届けられた更新通知用パージメッセージに基づいて、ＬＭ更新クロックＴ１１内のカウンタ値を更新させる（Ｓ１０４）。
【０１５８】
読み出し元マイクロプロセッサ１２１は、ＬＭ更新クロックＴ１１内の各カウンタ値がターゲット更新クロックＴ１２内の対応する各カウンタ値以上であるか否かを判定する（Ｓ１０５）。ＬＭ更新クロックＴ１１≧ターゲット更新クロックＴ１２の場合（S105:YES）、ローカルメモリ１２２にコピーされている制御情報は有効であると判断される。
【０１５９】
読み出し元マイクロプロセッサ１２１は、ローカルメモリ１２２内に所望のデータが存在するか否かを確認する（Ｓ１０６）。所望のデータがローカルメモリ１２２内に存在する場合（S106:YES）、そのデータは有効であるから、読み出し元マイクロプロセッサ１２１は、ローカルメモリ１２２から所望のデータを読み出して使用する（Ｓ１０７）。
【０１６０】
ＬＭ更新クロックＴ１１＜ターゲット更新クロックＴ１２の場合（S105:NO）、または、有効とされたデータがローカルメモリ１２２に記憶されていなかった場合（S106:NO）のいずれかの場合、Ｓ１０８に移る。
【０１６１】
読み出し元マイクロプロセッサ１２１は、ローカルメモリ１２２に記憶領域を確保し（Ｓ１０８）、所望のデータを共有メモリ１３１から読み出して使用する（Ｓ１０９）。読み出し元マイクロプロセッサ１２１は、ＳＭ更新クロックＴ１３の各カウンタ値を取得し、それらのカウンタ値でターゲット更新クロックＴ１２内の各カウンタ値を更新させる（Ｓ１１０）。
【０１６２】
なお、リードアドレスが排他キャッシュ領域（その他）または非キャッシュ領域に存在する場合（S101:NO）、Ｓ１０９に移って、共有メモリ１３１から所望のデータを直接読み出す。
【０１６３】
このように構成される本実施例も第１実施例と同様の効果を奏する。さらに本実施例では、共有メモリ１３１内に記憶される制御情報の属性として、共有キャッシュと、排他キャッシュ及び非キャッシュとを用意し、それら属性に応じてパージ制御を行う。従って、パージメッセージの作成及び送信に関する処理を少なくでき、各マイクロプロセッサ１２１の演算資源等をより一層有効に利用できる。
【実施例３】
【０１６４】
図１６，図１７に基づいて第３実施例を説明する。本実施例では、マイクロプロセッサ１２１に障害が発生した場合の対応方法を説明する。上述の通り、本発明は、パージメッセージの通信量を低減するべく、共有メモリ１３１内の制御情報の更新時期とパージメッセージの送信時期とを異ならせている。
【０１６５】
従って、例えば、何らかの障害がマイクロプロセッサ１２１に生じた場合、通知すべきパージメッセージが各マイクロプロセッサ１２１に通知されることなく、マイクロプロセッサ１２１が機能を停止する可能性がある。
【０１６６】
そこで、本実施例では、障害発生時に以下の処理を実行する。障害の発生しているマイクロプロセッサを障害マイクロプロセッサと呼ぶ場合がある。最初に、マイクロプロセッサ１２１は、他の各マイクロプロセッサ１２１の状態をチェックする（Ｓ１２０）。例えば、各マイクロプロセッサ１２１は、自身の状態を所定の記憶領域に書き込む。従って、その所定の記憶領域に書き込まれた値を参照することにより、他の各マイクロプロセッサ１２１の状態を知ることができる。
【０１６７】
マイクロプロセッサ１２１は、障害マイクロプロセッサが検出されたか否かを判定する（Ｓ１２１）。障害マイクロプロセッサが検出された場合（S121:YES）、マイクロプロセッサ１２１は、他の各マイクロプロセッサからのパージメッセージを受信する（Ｓ１２２）。さらに、マイクロプロセッサ１２１は、ＳＭ更新クロックＴ１３のカウンタ値を読み出して、ターゲット更新クロックＴ１２にコピーさせる（Ｓ１２３）。
【０１６８】
マイクロプロセッサ１２１は、障害マイクロプロセッサのカウンタ値について、ＬＭ更新クロックＴ１１内の値とターゲット更新クロックＴ１２内の値とが異なるか否かを判定する（Ｓ１２４）。つまり、マイクロプロセッサ１２１は、ＬＭ更新クロックＴ１１内の障害マイクロプロセッサのカウンタ値とターゲット更新クロックＴ１２内の障害マイクロプロセッサのカウンタ値とが相違するか否かを判定する（Ｓ１２４）。
【０１６９】
ＬＭ更新クロックＴ１１内のカウンタ値とターゲット更新クロックＴ１２内のカウンタ値とが相違する場合（S124:YES）、マイクロプロセッサ１２１は、ＬＭ更新クロックＴ１１内の障害マイクロプロセッサのカウンタ値を、ターゲット更新クロックＴ１２内の障害マイクロプロセッサのカウンタ値で上書きする（Ｓ１２５）。
【０１７０】
ＬＭ更新クロックＴ１１内のカウンタ値とターゲット更新クロックＴ１２内のカウンタ値とが相違する場合（S124:YES）、障害マイクロプロセッサは、送信すべきパージメッセージを送信する前に、停止したと判定されるためである。共有メモリ１３１内の制御情報を書き換える際に、ＳＭ更新クロックＴ１３内のカウンタ値は更新される。従って、障害マイクロプロセッサがパージメッセージの送信前に停止した場合でも、ＳＭ更新クロックＴ１３内のカウンタ値は信頼することができる。
【０１７１】
マイクロプロセッサ１２１は、自身が管理するローカルメモリ１２２内のキャッシュデータ（制御情報のコピーデータ）を全て破棄し、本処理を終了する（Ｓ１２６）。送信すべきパージメッセージを送信するよりも前に、障害マイクロプロセッサが停止したことは判明するが、制御情報のどの部分が更新されたのかを確認できないため、いったんキャッシュデータを全てクリアさせる。
【０１７２】
図１７は、障害マイクロプロセッサが障害から回復した場合の処理を示す。例えば、障害マイクロプロセッサを含むマイクロプロセッサパッケージ１２０が正常なマイクロプロセッサパッケージ１２０に交換された場合に、図１７のフローチャートが実行される。なお、記憶制御装置１０内にマイクロプロセッサパッケージ１２０を追加する場合にも、図１７の処理を応用可能である。
【０１７３】
障害から回復したマイクロプロセッサを、回復済マイクロプロセッサと呼ぶ。回復済マイクロプロセッサ１２１は、ＬＭ更新クロックＴ１１内の回復済マイクロプロセッサのカウンタ値を、ターゲット更新クロックＴ１２内の回復済マイクロプロセッサのカウンタ値で上書きする（Ｓ１３１）。これにより、回復済マイクロプロセッサが管理するＬＭ更新クロックＴ１１内の、回復済マイクロプロセッサのカウンタ値を正しい値に戻すことができる。
【０１７４】
このように構成される本実施例も第１実施例と同様の効果を奏する。さらに、本実施例では、いずれかのマイクロプロセッサ１２１に障害が発生した場合でも適切に対応することができ、記憶制御装置１０の信頼性が向上する。
【実施例４】
【０１７５】
図１８に基づいて第４実施例を説明する。図１８は、本実施例による記憶制御装置の要部を示すブロック図である。本実施例のマイクロプロセッサパッケージ１２０Ａは、パッケージメモリ１２３を備えている。
【０１７６】
マイクロプロセッサパッケージ１２０Ａは、複数のサブパッケージ１２４と、複数のサブパッケージ１２４によって共有されるパッケージメモリ１２３とを備える。各サブパッケージ１２４は、マイクロプロセッサ１２１及びローカルメモリ１２２を備える。
【０１７７】
パッケージメモリ１２３には、制御情報Ｄ１０と、ＬＭ更新クロックＴ１１及びターゲット更新クロックＴ１２が記憶される。パージバッファＴ１０は、各ローカルメモリ１２２内に設けられており、パッケージメモリ１２３内には設けられていない。各マイクロプロセッサ１２１のアクセス局所性を利用してパージメッセージの量を低減させるために、パージバッファＴ１０はローカルメモリ１２２内に設ける。なお、パッケージメモリ１２３としては、比較的高速にアクセス可能なメモリ装置が使用される。
【０１７８】
マイクロプロセッサパッケージ１２０Ａ内の各マイクロプロセッサ１２１は、パッケージメモリ１２３内に記憶されている制御情報を使用する。同一のマイクロプロセッサパッケージ１２０Ａ内に設けられている各マイクロプロセッサ１２１は、同一のパッケージメモリ１２３を共有しているため、マイクロプロセッサパッケージ１２０Ａ内でパージメッセージを交換する必要はない。
【０１７９】
本実施例では、マイクロプロセッサパッケージ１２０Ａ間だけでパージメッセージ通信が行われる。従って、第１実施例よりもパージメッセージの通信頻度及び通信量を少なくすることができる。
なお、本発明は、上述した実施例に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。例えば、各実施例を適宜組み合わせる構成としてもよい。
【図１】
0005198659.tif 000002
【図２】
0005198659.tif 000003
【図３】
0005198659.tif 000004
【図４】
0005198659.tif 000005
【図５】
0005198659.tif 000006
【図６】
0005198659.tif 000007
【図７】
0005198659.tif 000008
【図８】
0005198659.tif 000009
【図９】
0005198659.tif 000010
【図１０】
0005198659.tif 000011
【図１１】
0005198659.tif 000012
【図１２】
0005198659.tif 000013
【図１３】
0005198659.tif 000014
【図１４】
0005198659.tif 000015
【図１５】
0005198659.tif 000016
【図１６】
0005198659.tif 000017
【図１７】
0005198659.tif 000018
【図１８】
0005198659.tif 000019