(57)【特許請求の範囲】
【請求項１】
ライトバック・キャッシュをそれぞれ備えた二以上のマイクロプロセッサを含むマルチプロセッサシステムであって、
全ての前記マイクロプロセッサのキャッシュ状態を記憶するルーティング回路と、
前記ルーティング回路に記憶されているタグ情報及び各キャッシュエントリが有効であるか否かを表す有効判別情報を読み出すルーティング情報読み出し手段と、
前記タグ情報及び前記有効判別情報にもとづいて、少なくともいずれかの前記マイクロプロセッサにおけるライトバック・キャッシュ内にキャッシュされている可能性のある実アドレス空間を特定する手段と、
前記特定された実アドレス空間を読み出すダミーリード手段と、を有し、
障害の発生によって前記マイクロプロセッサのいずれかのライトバック・キャッシュにダーティ・ブロックが取り残されてしまった場合に、
障害の発生していない他のマイクロプロセッサにおける前記ルーティング情報読み出し手段が、前記ルーティング回路に記憶されている前記タグ情報及び前記有効判別情報を読み出し、
障害の発生していない他のマイクロプロセッサにおける前記特定する手段が、前記タグ情報及び有効判別情報にもとづいて、障害の発生したマイクロプロセッサのライトバック・キャッシュ内にキャッシュされている可能性のある前記ダーティ・ブロックのアドレス領域を特定し、
障害の発生していない他のマイクロプロセッサにおける前記ダミーリード手段が、前記特定されたアドレス領域をダミーリードすることによって、前記ダーティ・ブロックの掃き出し処理を行う
ことを特徴とするマルチプロセッサシステム。
【請求項２】
請求項１記載のマルチプロセッサシステムが記憶装置を備え、
前記各マイクロプロセッサが、それぞれのマイクロプロセッサにおける演算器からのメモリアクセス情報を格納する仮想アドレスレジスタを備え、
前記各マイクロプロセッサにおける前記ライトバック・キャッシュが、
前記記憶装置のデータの一部をキャッシュとして記憶し、仮想アドレス及び前記記憶装置における実アドレスに関連付けられたタグ情報、各キャッシュエントリが有効であるか否かを表す有効判別情報、及び前記キャッシュ上のデータへのマイクロプロセッサからの更新の有無を表す状態判別情報を記憶するキャッシュ制御部と、
前記キャッシュ制御部のタグ情報と前記仮想アドレスレジスタのタグ情報を比較する比較回路と、
前記比較の結果が不一致の場合、前記記憶装置上の実アドレス空間を指し示すアドレス情報を生成し、前記キャッシュ制御部のタグ情報を前記ルーティング回路に出力する実アドレスレジスタと、
前記キャッシュ上のデータ又は前記記憶装置のデータを一次格納し、前記特定された実アドレス空間の読み出し処理を行うデータレジスタと、を備えた
ことを特徴とするマルチプロセッサシステム。
【請求項３】
前記マイクロプロセッサのいずれかであり障害が発生していないマイクロプロセッサにより、前記特定された実アドレス空間を、前記マイクロプロセッサのいずれかであり障害が発生したマイクロプロセッサから読み出して、前記障害が発生していないマイクロプロセッサにおける前記キャッシュ制御部に記憶させる
ことを特徴とする請求項２記載のマルチプロセッサシステム。
【請求項４】
前記マイクロプロセッサのいずれかであり障害が発生していないマイクロプロセッサにより、前記特定された実アドレス空間を、前記マイクロプロセッサのいずれかであり障害が発生したマイクロプロセッサから読み出して、前記記憶装置に記憶させる
ことを特徴とする請求項２記載のマルチプロセッサシステム。
【請求項５】
前記障害には、前記マイクロプロセッサのハードウェア故障及び前記マイクロプロセッサにおける処理を実行させるためのソフトウェアの処理異常が含まれ、かつ、前記キャッシュ制御部には、前記ハードウェア故障又はソフトウェアの処理異常のいずれの影響も及んでいない
ことを特徴とする請求項２〜４のいずれかに記載のマルチプロセッサシステム。
【請求項６】
マルチプロセッサシステムを構成する、ライトバック・キャッシュを備えたマイクロプロセッサであって、
前記マルチプロセッサシステムにおける全てのマイクロプロセッサのキャッシュ状態を記憶するルーティング回路に記憶されているタグ情報及び各キャッシュエントリが有効であるか否かを表す有効判別情報を読み出すルーティング情報読み出し手段と、
前記タグ情報及び前記有効判別情報にもとづいて、少なくともいずれかの前記マイクロプロセッサにおけるライトバック・キャッシュ内にキャッシュされている可能性のある実アドレス空間を特定する手段と、
前記特定された実アドレス空間を読み出すダミーリード手段と、を備え、
障害の発生によって他のマイクロプロセッサのライトバック・キャッシュにダーティ・ブロックが取り残されてしまった場合に、
障害の発生していない当該マイクロプロセッサにおける前記ルーティング情報読み出し手段が、前記ルーティング回路に記憶されている前記タグ情報及び前記有効ビットを読み出し、
障害の発生していない当該マイクロプロセッサにおける前記特定する手段が、前記タグ情報及び前記有効判別情報にもとづいて、障害の発生した他のマイクロプロセッサのライトバック・キャッシュ内にキャッシュされている可能性のある前記ダーティ・ブロックのアドレス領域を特定し、
障害の発生していない当該マイクロプロセッサにおける前記ダミーリード手段が、前記特定されたアドレス領域をダミーリードすることによって、前記ダーティ・ブロックの掃き出し処理を行う
ことを特徴とするマイクロプロセッサ。
【請求項７】
前記マイクロプロセッサが、当該マイクロプロセッサにおける演算器からのメモリアクセス情報を格納する仮想アドレスレジスタを備え、
前記ライトバック・キャッシュが、
前記マルチプロセッサシステムにおける記憶装置のデータの一部をキャッシュとして記憶し、仮想アドレス及び前記記憶装置における実アドレスに関連付けられたタグ情報、各キャッシュエントリが有効であるか否かを表す有効判別情報、及び前記キャッシュ上のデータへのマイクロプロセッサからの更新の有無を表す状態判別情報を記憶するキャッシュ制御部と、
前記キャッシュ制御部のタグ情報と前記仮想アドレスレジスタのタグ情報を比較する比較回路と、
前記比較の結果が不一致の場合、前記記憶装置上の実アドレス空間を指し示すアドレス情報を生成し、前記キャッシュ制御部のタグ情報を前記ルーティング回路に出力する実アドレスレジスタと、
前記キャッシュ上のデータ又は前記記憶装置のデータを一次格納し、前記特定された実アドレス空間の読み出し処理を行うデータレジスタと、を備えた
ことを特徴とする請求項６記載のマイクロプロセッサ。
【請求項８】
当該マイクロプロセッサにおける前記データレジスタにより、前記特定された実アドレス空間を、障害が発生した他のマイクロプロセッサから読み出して、当該マイクロプロセッサにおけるキャッシュ制御部に記憶させる
ことを特徴とする請求項７記載のマイクロプロセッサ。
【請求項９】
マルチプロセッサシステムを構成する、ライトバック・キャッシュを備えたマイクロプロセッサの障害処理方法であって、
前記マルチプロセッサシステムにおけるルーティング回路に全ての前記マイクロプロセッサのキャッシュ状態を記憶し、
障害の発生によって他のマイクロプロセッサにライトバック・キャッシュのダーティ・ブロックが取り残されてしまった場合に、
前記ルーティング回路に記憶されているタグ情報及び各キャッシュエントリが有効であるか否かを表す有効判別情報を読み出し、
前記タグ情報及び前記有効判別情報にもとづいて、前記他のマイクロプロセッサのライトバック・キャッシュ内にキャッシュされている可能性のある前記ダーティ・ブロックのアドレス領域を特定し、
前記特定されたアドレス領域をダミーリードすることによって、前記ダーティ・ブロックの掃き出し処理を行う
ことを特徴とするマイクロプロセッサの障害処理方法。
【請求項１０】
前記マイクロプロセッサにおける演算器からのメモリアクセス情報を仮想アドレスレジスタに格納し、
前記ライトバック・キャッシュに、前記マルチプロセッサシステムにおける記憶装置のデータの一部をキャッシュとして記憶させるとともに、仮想アドレス及び前記記憶装置における実アドレスに関連付けられたタグ情報、各キャッシュエントリが有効であるか否かを表す有効判別情報、及び前記キャッシュ上のデータへのマイクロプロセッサからの更新の有無を表す状態判別情報を記憶させ、
前記キャッシュ制御部のタグ情報と前記仮想アドレスレジスタのタグ情報を比較し、
前記比較の結果が不一致の場合、前記記憶装置上の実アドレス空間を指し示すアドレス情報を生成し、
前記記憶装置へのアクセスを実行するとともに、前記ルーティング回路に前記キャッシュ制御部のタグ情報を出力し、
前記マルチプロセッサシステムを構成する前記マイクロプロセッサのうちの少なくともいずれかにおいて障害が発生すると、障害が発生していないマイクロプロセッサが、前記ルーティング回路に記憶されているタグ情報を読み出し、
前記タグ情報にもとづいて、前記障害が発生したマイクロプロセッサにおけるライトバック・キャッシュ内にキャッシュされている実アドレス空間を特定し、
前記特定された実アドレス空間の読み出し処理を行う
ことを特徴とする請求項９記載のマイクロプロセッサの障害処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ライトバック・キャッシュを有するマイクロプロセッサで構成されたマルチプロセッサシステムに関する。
【背景技術】
【０００２】
近年、マイクロプロセッサに関する技術の進歩により、メインフレームに採用されていたような複雑なアドレス変換機構やメモリキャッシュなどを実装するマイクロプロセッサが多く登場するようになった。
また、マイクロプロセッサのマルチ・コア化を背景に大規模なマルチプロセッサシステムも構築されるようになった。
【０００３】
一方、マイクロプロセッサを制御するファームウェアは、より多種多様のチップセットで動作することを可能とするため、マイクロプロセッサ本体から独立し抽象化されるようになった。
そして、ＢＩＯＳと呼ばれる制御プログラムがメモリ上に実装され、マイクロプロセッサの命令セットを組み合わせて、プロセッサの初期化や障害処理を実現する方式が一般化している。
【０００４】
例えば、インテル社のＩｔａｎｉｕｍ２プロセッサでは、プロセッサ故障時にＭＣＡ（マシン・チェック・アボート）ハンドラと呼ばれるプログラムコードを実行し、プロセッサで実行していた処理の引き継ぎや資源の開放を行うことで、障害処理を実現している。
【０００５】
このＩｔａｎｉｕｍ２プロセッサでは、ライトバック方式のキャッシュが採用されている。ライトバック方式では、ＣＰＵは書き込み時にはキャッシュにだけ書き込みを行い、キャッシュの内容を書き換える必要が生じたときに、書き換え前にメイン・メモリへキャッシュの内容の書き込みが行われる。
【０００６】
一般的に、Ｉｔａｎｉｕｍ２プロセッサのようなライトバック・キャッシュを有するマイクロプロセッサでは、ＭＣＡハンドラのようなプログラムコード中でキャッシュ掃き出し命令を実行し、ライトバック・キャッシュをクリーンな状態にした後、プロセッサの切り離しを実行する。
【０００７】
しかし、プロセッサのストールに至るような障害が発生して、障害処理ハンドラが動作できない状態で停止した場合には、ダーディ・ブロックがプロセッサのキャッシュ中に取り残されるため、システム全体を再初期化しないとプロセッサの切り離しが行えないという問題があった。
すなわち、従来の技術ではマイクロプロセッサに障害が発生した場合でも、その上で実行される制御プログラムが完全に動作することを前提にしており、特にマイクロプロセッサのストール等、キャッシュ制御部以外に障害が発生し、かつキャッシュの掃き出し処理が実行できない場合の考慮が不十分であった。
【０００８】
ここで、マイクロプロセッサの障害処理に関連する先行技術としては、例えば特許文献１に記載の計算機システムのメモリ障害回復方法、特許文献２に記載のマルチプロセッサシステム、及び特許文献３に記載のファイル制御装置のライトバック制御方式などを挙げることができる。
【０００９】
【特許文献１】特開平０９−０８１４６４号公報
【特許文献２】特開２００５−０１０９９５号公報
【特許文献３】特開昭６３−０４５６５６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
特許文献１に記載の計算機システムのメモリ障害回復方法は、計算機システムにおいて、メモリ障害検出手段がメモリの障害を検出した際、まずメモリ部分閉塞手段により障害ページを閉塞し、更新イメージ出力手段を起動し、更新イメージ出力手段が、トレースキャッシュフラッシュ手段によりメモリ更新トレースキャッシュからメモリで喪失した障害ページのデータのコピーを、仮想記憶手段により二次記憶装置に出力して、障害ページの復旧を行う方法である。
【００１１】
この方法によれば、障害ページを復旧するために、障害が発生したメモリを有する計算機システムにおいて、障害処理を実行する制御プログラムが正しく動くことが必要である。このため、キャッシュ制御部以外に障害が発生して、かつキャッシュの掃き出し処理が実行できない場合に、システム全体を再初期化することなく、障害ページの復旧を行えるものではなかった。
【００１２】
特許文献２に記載のマルチプロセッサシステムは、複数のプロセッサにおいて発生するライトバックの障害処理を行うシステムコントローラを備え、このシステムコントローラが、ダーティヒット信号制御回路と、各プロセッサごとに、システムバスへ発行されたメモリ読み出し命令に対応するキャッシュラインの状態を保持するキャッシュライン状態保持回路を有している。
そして、各プロセッサがダーティ状態で保持しているキャッシュラインが、メモリ読み出し命令を出力したプロセッサと、システムコントローラとに自動的に転送され、インプリシットライトバックで障害が発生した場合に、転送元のプロセッサを停止する構成となっている。
【００１３】
しかしながら、このマルチプロセッサシステムは、ダーディ・ブロックの掃き出しが終わっていないプロセッサに障害が発生した場合に、その掃き出しを完了させて、システム全体を初期化することなく、システムを復旧し得るものではない。
【００１４】
特許文献３に記載のファイル制御装置のライトバック制御方式は、ファイル制御装置において、キャッシュメモリ、キャッシュ制御部、資源管理部に加え、それぞれプロセッサを備えたチャネルインターフェース部及びデバイスインターフェース部を有している。
そして、キャッシュ制御部の障害時に、資源管理部の指示のもと、チャネルインターフェース部又はデバイスインターフェース部に備えられたプロセッサにより、ライトバック処理を代行させる構成となっている。
【００１５】
しかしながら、このライトバック制御装置は、単なるキャッシュ制御部の二重化に関するものであり、これを実現するために複数のマイクロプロセッサを備える構成となっている。また、キャッシュ制御部に障害が発生した場合には、そのキャッシュの中身を掃き出すことはできない。
このため、キャッシュ制御部以外に障害が発生し、かつキャッシュの掃き出し処理が実行できない場合に、適切にキャッシュの掃き出しを完了させて、システム全体を初期化することなく、システムを復旧することに適用することはできない。
【００１６】
本発明は、上記の事情にかんがみなされたものであり、マイクロプロセッサの障害処理におけるキャッシュ掃き出し処理を、障害が発生していない健全なプロセッサにより実行することによって、故障したプロセッサをシステムから安全に切り離すことの可能なマルチプロセッサシステム、マイクロプロセッサ、及びマイクロプロセッサの障害処理方法の提供を目的とする。
【課題を解決するための手段】
【００１７】
上記目的を達成するため、本発明のマルチプロセッサシステムは、ライトバック・キャッシュをそれぞれ備えた二以上のマイクロプロセッサで構成されたマルチプロセッサシステムであって、全てのマイクロプロセッサのキャッシュ状態を記憶するルーティング回路と、ルーティング回路に記憶されているタグ情報を読み出す手段と、タグ情報にもとづいて、少なくともいずれかのマイクロプロセッサにおけるライトバック・キャッシュ内にキャッシュされている実アドレス空間を特定する手段と、特定された実アドレス空間を、障害が発生していない他の健全なマイクロプロセッサにより読み出す手段とを有する構成としてある。
【００１８】
また、本発明のマイクロプロセッサは、マルチプロセッサシステムを構成する、ライトバック・キャッシュを備えたマイクロプロセッサであって、マルチプロセッサシステムにおける全てのマイクロプロセッサのキャッシュ状態を記憶するルーティング回路に記憶されているタグ情報を読み出す手段と、タグ情報にもとづいて、少なくともいずれかのマイクロプロセッサにおけるライトバック・キャッシュ内にキャッシュされている実アドレス空間を特定する手段と、障害が発生した他のマイクロプロセッサにおける、特定された実アドレス空間を、障害が発生していない当該マイクロプロセッサにより読み出す手段とを備えた構成としてある。
【００１９】
また、本発明のマイクロプロセッサの障害処理方法は、マルチプロセッサシステムを構成する、ライトバック・キャッシュを備えたマイクロプロセッサの障害処理方法であって、マルチプロセッサシステムにおけるルーティング回路に全てのマイクロプロセッサのキャッシュ状態を記憶し、ルーティング回路に記憶されているタグ情報を読み出し、タグ情報にもとづいて、マルチプロセッサシステムにおける少なくともいずれかのマイクロプロセッサのライトバック・キャッシュ内にキャッシュされている実アドレス空間を特定し、特定された実アドレス空間を、障害が発生していない他のマイクロプロセッサにより読み出す方法としてある。
【発明の効果】
【００２０】
本発明によれば、マイクロプロセッサのライトバック・キャッシュにダーティ・ブロックが取り残された状態でプロセッサがストールしても、他の健全なプロセッサから障害の発生したプロセッサのキャッシュ掃き出し処理を実行することができ、そのプロセッサの動的な切り離しを行うことができる。
このため、システムの可用性を向上させることが可能となる。
【発明を実施するための最良の形態】
【００２１】
以下、本発明に係るマルチプロセッサシステムの好ましい実施形態について、図面を参照しつつ説明する。
［第一実施形態］
まず、本発明の第一実施形態の構成について、図１を参照して説明する。同図は、本実施形態のマルチプロセッサシステムの構成を示すブロック図である。
【００２２】
図１に示すように、本実施形態のマルチプロセッサシステムにおいて、マイクロプロセッサ１ａ〜１ｄは記憶制御装置２を介して記憶装置３に接続されている。
マイクロプロセッサ１ａ〜１ｄはマルチプロセッサを構成し、障害通知割り込み信号線６を使用して互いに障害の発生を通知する。
【００２３】
この障害には、マイクロプロセッサのハードウェア故障及びマイクロプロセッサにおける処理を実行させるためのソフトウェアの処理異常が含まれる。
ただし、後述するキャッシュ制御部１１には、これらのハードウェア故障又はソフトウェアの処理異常のいずれの影響も及んでいないことを想定している。
【００２４】
マイクロプロセッサ１ａ〜１ｄはメモリバス４を使用して記憶装置３における実アドレス空間３０にアクセスする。
記憶制御装置２におけるルーティング回路２０は、全てのマイクロプロセッサのキャッシュ状態を格納するチップセットである。
【００２５】
このルーティング回路２０は、各マイクロプロセッサが記憶装置３におけるどの実アドレス空間にアクセスしたかを監視し、マイクロプロセッサ１ａ〜１ｄにおけるライトバック・キャッシュ１０（ストアイン・キャッシュとも言う）にキャッシュされているメモリブロック３１の情報（以下、ルーティング情報と称する場合がある）を記憶する。
また、ルーティング回路２０に記憶されているルーティング情報は、ルーティング情報読み出し信号線５を使用して任意のマイクロプロセッサ１ａ〜１ｄにより読み出すことができる。
【００２６】
図２は、本実施形態のマイクロプロセッサにおけるライトバック・キャッシュ１０と、ルーティング回路２０を表したブロック図である。同図は、マイクロプロセッサ１ａのライトバック・キャッシュ１０、仮想アドレスレジスタ１５、及びルーティング情報読み出しレジスタ１６を例示しているが、他のマイクロプロセッサも同様の構成を備えている。
【００２７】
マイクロプロセッサ１ａの演算器からのメモリアクセス（書き込み動作）情報は仮想アドレスレジスタ１５に格納され、仮想アドレス空間の特定のビットに対応付けられたタグ・フィールド、インデックス・フィールド、ライン・フィールドに分解される。
【００２８】
このうちタグ・フィールドとインデックス・フィールドの値は、仮想アドレスレジスタ１５からライトバック・キャッシュ１０に出力され、それぞれ比較回路１２、キャッシュ制御部１１等における処理において使用される。また、ライン・フィールドの値は、無加工（無変換）でライトバック・キャッシュ１０における実アドレスレジスタ１３に出力される。
【００２９】
図２に示す本実施形態のライトバック・キャッシュ１０は、セット連想マッピング方式のキャッシュの構成例である。
ライトバック・キャッシュ１０は、キャッシュ制御部１１、比較回路１２、実アドレスレジスタ１３、及びデータレジスタ１４を備えている。
【００３０】
キャッシュ制御部１１は、記憶装置３のデータの一部を保持し、仮想アドレス及び記憶装置３における実アドレスに関連付けられたタグ情報と、そのキャッシュエントリが有効であるか否かを表す有効ビット（Ｖビット）と、キャッシュ上のデータへのマイクロプロセッサからの更新の有無（ダーティまたはクリーン）を表す状態ビット（Ｓビット）を備える。
【００３１】
なお、キャッシュの作りとして、一般的にプロセッサがメモリへの書き込みを行った時に、メイン・メモリあるいは他のプロセッサのキャッシュにあるメモリ空間を自プロセッサのキャッシュに取り込み更新を行った後、「システムで唯一のメモリ空間を自プロセッサが保持し、更新も行った」ということを明示するために、状態ビットをダーディとする。
【００３２】
一方、プロセッサがメモリへの読み込みしか行っていない状態で、プロセッサにキャッシュされたものの、参照しかしていなければ他のプロセッサが同じ実アドレス空間をキャッシュしても、自プロセッサのキャッシュ内容を他プロセッサのキャッシュに転送する必要はない。このような状態のことをクリーンな状態と言い、状態ビットはクリーンとされる。
【００３３】
ダーティな状態（更新済）をクリーンな状態（更新未）にするためには、自発的（能動的）な方法として、自プロセッサのキャッシュ内容をメイン・メモリ（記憶装置３）に掃き出す方法がある。また、受動的な方法として、他のプロセッサによりそのキャッシュに転送する方法がある。
【００３４】
キャッシュの掃き出し処理は、有効ビットが「有効」でかつ、状態ビットが「ダーティ」のキャッシュについて行われ、有効ビットが「無効」又は状態ビットが「クリーン」のキャッシュについては行われない。
【００３５】
比較回路１２は、キャッシュ制御部１１のタグと仮想アドレスレジスタ１５のタグ・フィールドの値を比較する。
実アドレスレジスタ１３は、キャッシュがミスヒットした場合に、記憶装置３上の実アドレス空間を指し示すアドレス情報を生成する。
【００３６】
また、実アドレスレジスタ１３による出力情報（ミスヒット時）は、メモリバス４を介して記憶制御装置２のルーティング回路２０に送出される。
この出力情報には、図２に示すように、キャッシュ制御部１１におけるものと同一のタグ及びインデックスの値が含まれる。
データレジスタ１４は、キャッシュ１１上のデータまたは記憶装置３のデータを一次格納するバッファである。
【００３７】
ルーティング回路２０は、マイクロプロセッサ１ａ〜１ｄにそれぞれ対応するルーティング情報２１ａ〜２１ｄを記憶するチップセットである。
ルーティング情報２１ａ〜２１ｄは、ライトバック・キャッシュ１０のキャッシュ制御部１１と同じタグ情報と、ルーティングエントリが有効であるか否かを表す有効ビット（Ｖビット）を備える。
【００３８】
ルーティング情報２１ａ〜２１ｄは、ルーティング情報読み出し信号線５を使用して各マイクロプロセッサのルーティング情報読み出しレジスタ１６に接続されており、任意のマイクロプロセッサによりシステム内の全てのマイクロプロセッサのキャッシュ状態を参照することができる。
なお、本実施形態におけるマルチプロセッサシステムは、従来公知のセット連想マッピング方式を適用した例であるが、これに限定されるものではなく、直接マッピング方式や完全連想マッピング方式等の他のマッピング方式に置き換えてもよい。
【００３９】
次に、本実施形態のマルチプロセッサシステムの構成及び動作について、図１及び図２を参照してさらに詳細に説明する。
図１において、本実施形態のマルチプロセッサシステムは４つのマイクロプロセッサ１ａ〜１ｄで運用されているものとし、マイクロプロセッサ１ａで障害が発生して、その障害処理をマイクロプロセッサ１ｂで行う場合を例に説明する。
【００４０】
マイクロプロセッサ１ａは、ライトバック・キャッシュ１０を有しており、記憶装置３への書き込みを行うと、実アドレス空間３０の特定のメモリブロック３１をキャッシュする。
キャッシュされたメモリブロックはダーティ・ブロックと呼ばれ、他のマイクロプロセッサが同じ実アドレス空間へアクセスした場合には、マイクロプロセッサ１ａのキャッシュ上のデータとの間で一致処理を行い、メモリの一貫性（コヒーレンシ）を保つよう動作する。
【００４１】
メモリの一貫性とは、メイン・メモリ（記憶装置３）や個々のプロセッサのキャッシュに散在するメモリの写しのうち、どこか一つに実体が存在し、この実体をメイン・メモリやキャッシュ間で転送しあって、最新の状態を保つ制御のことをいう。
【００４２】
通常、動的切り離し機能を有するマルチプロセッサシステムでは、メモリの一貫性を保つため、マイクロプロセッサの切り離し時にキャッシュの内容をメモリに掃き出す機構を有する。
その一例がマイクロプロセッサのキャッシュ掃き出し命令である。キャッシュ掃き出し命令はマイクロプロセッサの障害処理ハンドラによる処理や、切り離し処理中に、ソフトウェア的に実行される。
【００４３】
例えば、マイクロプロセッサ１ａでプロセッサがストールに至るような障害が発生し、マイクロプロセッサ１ａの障害処理ハンドラが動作できない状態で停止したとする。
この状態で、マイクロプロセッサ１ａを動的にシステムから切り離してしまうと、マイクロプロセッサ１ａのキャッシュに取り残されたダーティ・ブロックはシステムから欠損した状態となり、メモリの一貫性を保つことができない。
そこで、本実施形態により、マイクロプロセッサのライトバック・キャッシュに取り残されたダーティ・ブロックをそのキャッシュから掃き出す手段を提供する。
【００４４】
具体的には、図２に示すように、ルーティング回路２０に設けた全マイクロプロセッサのキャッシュ状態を管理するルーティング情報２１ａ〜２１ｄと、ルーティング回路のタグ情報及び有効ビットを任意のマイクロプロセッサにより読み出すルーティング情報読み出しレジスタ１６と、読み出したタグ情報から任意のマイクロプロセッサのライトバック・キャッシュ内にキャッシュされている実アドレス空間を特定するマイクロプログラムと、キャッシュされた実アドレス空間を障害の発生していない他の健全なマイクロプロセッサにより読み出す（ダミー・リード）手段により、ダーティ・ブロックの掃き出し処理を実現している。
【００４５】
健全なマイクロプロセッサはメモリバス４に対してダミー・リードを発行し、その実体が障害の発生したマイクロプロセッサのキャッシュにあればその障害の発生したマイクロプロセッサのキャッシュから、記憶装置上にあれば記憶装置から読み出し（転送）を行うことができる。
【００４６】
本実施形態では、記憶制御装置２におけるルーティング回路２０のタグ情報から障害の発生したマイクロプロセッサのキャッシュにある情報のみを選択してダミー・リードすることができるため、記憶装置から読み出すことはなく、障害の発生したマイクロプロセッサのキャッシュから読み出しを行うことになる。
【００４７】
また、ダミー・リードによって、データ転送は、障害の発生したマイクロプロセッサのキャッシュ制御部１１→メモリバス４→健全なマイクロプロセッサのキャッシュ制御部１１→健全なマイクロプロセッサの内部レジスタの経路で行われる。
【００４８】
なお、上記マイクロプログラムの格納場所は、特に限定されないため、図２においては示していない。
すなわち、マイクロプログラムの格納場所はプラットフォームに依存する。制御プログラム（ファームウェア）をプロセッサに内蔵しているのであれば、プロセッサ内のＲＡＭやＲＯＭに格納される。また、ハードディスクから読み込んだＯＳの一部としてメイン・メモリ（記憶装置）に格納することもできる。
【００４９】
障害が発生する前、マイクロプロセッサ１ａは以下の手順でメモリアクセスを行う。
まず、マイクロプロセッサ１ａの演算器からのメモリアクセス情報は、仮想アドレスレジスタ１５に格納される。
【００５０】
仮想アドレスレジスタ１５の下位ビットは、ライン・フィールドを構成する。
この下位ビットは、キャッシュライン及び記憶装置３へのメモリアクセスサイズに相当し、このサイズを１つのブロックとしてデータの転送が行われる。
【００５１】
仮想アドレスレジスタ１５の上位ビットは、タグ・フィールドとインデックス・フィールドに分解される。
タグには記憶装置３の実アドレス空間の上位ビットが含まれ、データとともにキャッシュ制御部１１に蓄えられる。
インデックスは、キャッシュ内のオフセットアドレスを示す。メモリのデータを参照する場合には、このインデックスを使ってキャッシュ内のラインにアクセスすることができる。
【００５２】
次に、キャッシュラインに付随するタグが読み出され、比較回路１２により仮想アドレスレジスタ１５のタグ・フィールドの値との比較が行われる。比較の結果、不一致（ミスヒット）の場合には、実アドレスレジスタ１３を経由して記憶装置３へのアクセスが実行され、データの書き込みが行われる。
【００５３】
実アドレスレジスタ１３の上位ビットは、仮想アドレスレジスタ１５のタグ・フィールド及びキャッシュ制御部１１のタグと同様、記憶装置３の実アドレス空間の上位ビットを示し、マイクロプロセッサ１ａのメモリアクセスと同時に、記憶制御回路２のルーティング回路２０中に設けたプロセッサ１ａに対応するルーティング情報２１ａに格納される。
以上のような処理によって、マイクロプロセッサ１ａのキャッシュ制御部１１と記憶制御回路２０のルーティング情報２１ａには、同一のタグ情報およびタグの有効ビット（Ｖビット）が記録される。
【００５４】
次に、マイクロプロセッサ１ａで障害が発生すると、マイクロプロセッサ１ａの障害は、障害通知割り込み信号線６を使用して他の健全なマイクロプロセッサ１ｂに通知される。
マイクロプロセッサ１ｂは、ルーティング情報読み出し信号線５を使用して、故障したマイクロプロセッサ１ａのルーティング情報２１ａを、自己のルーティング情報読み出しレジスタ１６に読み出す。
【００５５】
マイクロプロセッサ１ｂはインデックスを可変しながら、すなわちタグを上から順番にチェックして、ルーティング情報２１ａのタグと有効ビットを検査し、マイクロプロセッサ１ａのキャッシュが実アドレス空間のどのメモリブロックをキャッシュしているかを確認する。
タグ情報にはキャッシュされたメモリブロックの先頭アドレスが含まれており、実アドレス空間は、タグ値とインデックス値、及びメモリブロックサイズにもとづいて、メモリブロックの先頭アドレスからブロックサイズ分のメモリ空間として算出することができる。
【００５６】
マイクロプロセッサ１ｂにおけるデータレジスタ１４をデータ転送路として、上記の手順により算出した実アドレスに対して、ブロックサイズ分の読み出し（ダミー・リード）が実行される。
この処理によってマイクロプロセッサ１ｂと１ａの間でキャッシュの一貫性が保たれ、マイクロプロセッサ１ａのキャッシュに取り残されていたダーティ・ブロックは記憶装置３（実際はマイクロプロセッサ１ｂのキャッシュ）に掃き出されて、クリーンな状態となる。
【００５７】
マイクロプロセッサ１ａは、全てのダーティ・ブロックがキャッシュから掃き出されることによって、システムから安全に切り離すことが可能になる。
なお、マイクロプロセッサの動的切り離し処理については活線挿抜処理等が著名であるが、当該処理は一般的な技術であり、その構成や仕組みは従来のものと同等であるためその説明は省略する。
【００５８】
以上説明したように、本実施形態のマルチプロセッサシステムによれば、マイクロプロセッサにストールなどの障害が発生してライトバック・キャッシュにダーティ・ブロックが取り残され、ＢＩＯＳ等の制御プログラムが動作しない場合でも、キャッシュ制御部に障害が発生していない限り、他の健全なプロセッサにより障害の発生したプロセッサのキャッシュ掃き出し処理を実行することで、そのキャッシュ制御部からダーティ・ブロックを適切に掃き出すことができる。
このため、メモリの一貫を維持しつつ、障害の発生したプロセッサをシステムから安全に切り離すことができ、システムの可用性を向上させることが可能となる。
【００５９】
［第二実施形態］
次に、本発明の第二実施形態について、図３を参照して説明する。同図は、本実施形態のマルチプロセッサシステムの構成を示すブロック図である。
本実施形態は、マルチプロセッサシステムが記憶装置３を二以上有する点で第一実施形態と異なる。その他の点については、第一実施形態と同様であり、本実施形態のマルチプロセッサシステムにおけるマイクロプロセッサの障害処理手順についても第一実施形態と同様のものとすることができる。
【００６０】
すなわち、本実施形態のマルチプロセッサシステムは、図３に示すように、実アドレス空間を複数台の記憶装置３でシェアする構成となっている。
本発明のマイクロプロセッサの障害処理方法は、このようなマルチプロセッサシステムについても、第一実施形態と同様に好適に用いることが可能である。
【００６１】
本発明は、以上の実施形態に限定されるものではなく、本発明の範囲内において、種々の変更実施が可能であることは言うまでもない。
例えば、マイクロプロセッサ１ａではなく、他のマイクロプロセッサ１ｂ〜１ｄに障害が発生し、キャッシュの掃き出し処理をマイクロプロセッサ１ａ又は他のマイクロプロセッサ１ｂ〜１ｄのうち障害の発生していないものが行う構成としたり、キャッシュの方式として直接マッピング方式や完全連想マッピング方式など他の方式を用いるなど適宜変更することが可能である。
【産業上の利用可能性】
【００６２】
本発明は、マルチプロセッサシステムに障害が発生した場合に、システム全体を停止させることなく障害処理を行う必要性の高いマルチプロセッサシステムに好適に利用することが可能である。
【図面の簡単な説明】
【００６３】
【図１】本発明の第一実施形態のマルチプロセッサシステムの構成を示すブロック図である。
【図２】本発明の第一実施形態のマルチプロセッサシステムにおけるマイクロプロセッサとルーティング回路の構成を示すブロック図である。
【図３】本発明の第二実施形態のマルチプロセッサシステムの構成を示すブロック図である。
【符号の説明】
【００６４】
１（１ａ，１ｂ，１ｃ，１ｄ）  マイクロプロセッサ
２  記憶制御装置
３（３−１，３−２，・・・，３−ｎ）  記憶装置
４  メモリバス
５  ルーティング情報読み出し信号線
６  障害通知割り込み信号線
１０  ライトバック・キャッシュ
１１  キャッシュ制御部
１２  比較回路
１３  実アドレスレジスタ
１４  データレジスタ
１５  仮想アドレスレジスタ
１６  ルーティング情報読み出しレジスタ
２０  ルーティング回路
２１（２１ａ，２１ｂ，２１ｃ，２１ｄ）  ルーティング情報
３０  実アドレス空間
３１  メモリブロック
【図１】
0005163061.tif 000002
【図２】
0005163061.tif 000003
【図３】
0005163061.tif 000004