(57)【要約】【課題】キャッシュメモリに発生した障害の位置を特定し、その障害が影響する区画を限定するようにし、その障害の波及範囲を極力狭くする。【解決手段】任意のプロセッサからの要求によりキャッシュを索引するとき要求元のプロセッサに割り当てられていないコンパートメントのヒット判定を抑止するアドレス比較回路５９と、キャッシュへデータを登録するときコンパートメント指示回路５２が保持する構成情報に従って要求元のプロセッサに割り当てられたコンパートメントを選択するリプレースエントリ生成回路５５と、キャッシュ索引時に訂正不可能な障害を検出したときそのコンパートメント番号を通知する障害検出回路５８と、前記障害検出回路からの通知に基づいて前記障害が影響する区画を特定し前記構成情報を更新して前記コンパートメント指示回路へ通知し障害処理を行う共有キャッシュ制御部５１とを有する。【選択図】　　　図１
2004062377.tif 000002
【特許請求の範囲】
【請求項１】
複数のコンパートメントを有し複数のプロセッサに共有された共有キャッシュメモリにおいて、各プロセッサごとに利用可能なコンパートメントをあらかじめ割り当て、任意の複数の区画に分かれたプロセッサから前記共有キャッシュメモリを共有する場合、キャッシュ索引時に訂正不可能な障害を検出したとき、前記障害が影響する区画を特定し、その障害を処理する手段を具備することを特徴とする共有キャッシュメモリ障害処理方式。
【請求項２】
複数のコンパートメントを有し複数のプロセッサに共有された共有キャッシュメモリにおいて、それぞれのプロセッサにどのコンパートメントを割り当てるかを示す構成情報を保持するコンパートメント指示回路と、任意のプロセッサからの要求によりキャッシュを索引するとき要求元のプロセッサに割り当てられていないコンパートメントのヒット判定を抑止するアドレス比較回路と、キャッシュへデータを登録するとき前記コンパートメント指示回路が保持する構成情報に従って要求元のプロセッサに割り当てられたコンパートメントを選択するリプレースエントリ生成回路と、キャッシュ索引時に訂正不可能な障害を検出したときそのコンパートメント番号を通知する障害検出回路と、前記障害検出回路からの通知に基づいて前記障害が影響する区画を特定し前記構成情報を更新して前記コンパートメント指示回路へ通知し障害処理を行う共有キャッシュ制御部とを有することを特徴とする共有キャッシュメモリ障害処理方式。
【請求項３】
請求項２記載の共有キャッシュメモリ障害処理方式において、前記コンパートメント指示回路は、キャッシュのコンパートメント数に等しいビット幅および前記キャッシュに接続されるプロセッサ数に等しいワード数を含むレジスタ群を備え、前記共有キャッシュ制御部から前記構成情報を得てそれを保持し、さらに前記共有キャッシュ制御部からプロセッサＩＤ信号を得てコンパートメント割当情報を生成し、それを前記アドレス比較回路および前記リプレースエントリ生成回路へ通知することを特徴とする共有キャッシュメモリ障害処理方式。
【請求項４】
複数のコンパートメントを有し複数のプロセッサに共有された共有キャッシュメモリにおいて、キャッシュに発生した障害の回数をコンパートメントごとに保持する障害履歴レジスタと、キャッシュへデータを登録するとき前記障害履歴レジスタの情報を参照してデータを登録するコンパートメントを決定しキャッシュに指示するリプレースエントリ指示回路と、キャッシュ索引時に訂正不可能な障害を検出したときそのコンパートメント番号を共有キャッシュ制御部に通知する障害検出回路と、任意のプロセッサからの要求によりキャッシュにアクセスした際にミスヒットによりデータを登録する場合には前記障害履歴レジスタの情報を参照し障害履歴を持たないコンパートメントを選択することを前記リプレースエントリ指示回路に指示する共有キャッシュ制御部とを有することを特徴とする共有キャッシュメモリ障害処理方式。
【請求項５】
請求項４記載の共有キャッシュメモリ障害処理方式において、前記障害履歴レジスタは、キャッシュのコンパートメント数に等しいワード数および管理すべき障害回数を保持可能なビット幅を含むレジスタ群を備え、前記共有キャッシュ制御部が送出する障害情報を障害履歴情報としてコンパートメントごとに保持し、それを前記リプレースエントリ生成回路および前記共有キャッシュ制御部へ送出することを特徴とする共有キャッシュメモリ障害処理方式。
【請求項６】
請求項２，３，４，または５記載の共有キャッシュメモリ障害処理方式において、前記共有キャッシュ制御部は、前記障害検出回路から受信した障害情報を診断プロセッサに通知し、前記診断プロセッサの診断結果に基づいてその障害の処理を実行することを特徴とする共有キャッシュメモリ障害処理方式。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は共有キャッシュメモリ障害処理方式に関し、特に複数のプロセッサから共有されているキャッシュメモリに発生した障害が影響する範囲を限定しながらシステム運用を継続させる共有キャッシュメモリ障害処理方式に関する。
【０００２】
【従来の技術】
図７は、共有キャッシュメモリを備えるコンピュータシステムの例を示す説明図である。同図において、共有キャッシュユニット２１及び２２は同等の構成からなる共有キャッシュであり、それぞれプロセッサ１１，１２及び１３，１４に共有されている。また他方で、共有キャッシュユニット２１，２２はシステムバス３１を介して主記憶４１に接続される。
【０００３】
昨今、このようなシステムにおいて、プロセッサや主記憶などのリソースを複数の区画に論理的に分割し、それぞれを独立したシステムとして運用する事が可能である。この場合、各区画に属するプロセッサからのメモリアクセスはプロセッサから送出される時点で区画に割り当てられたメモリ領域の先頭アドレスをオフセット値として加算されることにより、ソフトウェアは他の区画の存在を意識することなく命令を実行することが出来るようになっている。
【０００４】
しかしながら、各区画毎の信頼性を考えるとき、図を参照しても判るように複数の区画で共有されるユニット、例えば共有キャッシュユニット２１は区画１と区画２の単一故障点（ＳＰＯＦ：Ｓｉｎｇｌｅ　Ｐｏｉｎｔ　Ｏｆ　Ｆａｉｌｕｒｅ）であり、キャッシュメモリの故障によって２つの区画がシステムダウンに至るという問題がある。
【０００５】
【発明が解決しようとする課題】
上記のように、従来の共有キャッシュメモリを備えたコンピュータシステムでは、複数の区画から共用されているキャッシュメモリに障害が発生した場合に、それが訂正不可能な障害であれば、それぞれの区画がシステムダウンすることになるという欠点がある。
【０００６】
本発明の目的は、上記のような問題点を改善するために、キャッシュメモリに発生した障害位置を特定し、その障害が影響する区画を限定するようにし、その障害の波及範囲を極力狭くすることができる共有キャッシュメモリ障害処理方式を提供することにある。
【０００７】
【課題を解決するための手段】
本発明の共有キャッシュメモリ障害処理方式は、複数のコンパートメントを有し複数のプロセッサに共有された共有キャッシュメモリにおいて、各プロセッサごとに利用可能なコンパートメントをあらかじめ割り当て、任意の複数の区画に分かれたプロセッサから前記共有キャッシュメモリを共有する場合、キャッシュ索引時に訂正不可能な障害を検出したとき、前記障害が影響する区画を特定し、その障害を処理する手段を具備することを特徴とする。
【０００８】
また、本発明の共有キャッシュメモリ障害処理方式は、複数のコンパートメントを有し複数のプロセッサに共有された共有キャッシュメモリにおいて、それぞれのプロセッサにどのコンパートメントを割り当てるかを示す構成情報を保持するコンパートメント指示回路と、任意のプロセッサからの要求によりキャッシュを索引するとき要求元のプロセッサに割り当てられていないコンパートメントのヒット判定を抑止するアドレス比較回路と、キャッシュへデータを登録するとき前記コンパートメント指示回路が保持する構成情報に従って要求元のプロセッサに割り当てられたコンパートメントを選択するリプレースエントリ生成回路と、キャッシュ索引時に訂正不可能な障害を検出したときそのコンパートメント番号を通知する障害検出回路と、前記障害検出回路からの通知に基づいて前記障害が影響する区画を特定し前記構成情報を更新して前記コンパートメント指示回路へ通知し障害処理を行う共有キャッシュ制御部とを有することを特徴とする。
【０００９】
さらに、上記の共有キャッシュメモリ障害処理方式において、前記コンパートメント指示回路は、キャッシュのコンパートメント数に等しいビット幅および前記キャッシュに接続されるプロセッサ数に等しいワード数を含むレジスタ群を備え、前記共有キャッシュ制御部から前記構成情報を得てそれを保持し、さらに前記共有キャッシュ制御部からプロセッサＩＤ信号を得てコンパートメント割当情報を生成し、それを前記アドレス比較回路および前記リプレースエントリ生成回路へ通知することを特徴とする。
【００１０】
また、本発明の共有キャッシュメモリ障害処理方式は、複数のコンパートメントを有し複数のプロセッサに共有された共有キャッシュメモリにおいて、キャッシュに発生した障害の回数をコンパートメントごとに保持する障害履歴レジスタと、キャッシュへデータを登録するとき前記障害履歴レジスタの情報を参照してデータを登録するコンパートメントを決定しキャッシュに指示するリプレースエントリ指示回路と、キャッシュ索引時に訂正不可能な障害を検出したときそのコンパートメント番号を共有キャッシュ制御部に通知する障害検出回路と、任意のプロセッサからの要求によりキャッシュにアクセスした際にミスヒットによりデータを登録する場合には前記障害履歴レジスタの情報を参照し障害履歴を持たないコンパートメントを選択することを前記リプレースエントリ指示回路に指示する共有キャッシュ制御部とを有することを特徴とする。
【００１１】
さらに、上記の共有キャッシュメモリ障害処理方式において、前記障害履歴レジスタは、キャッシュのコンパートメント数に等しいワード数および管理すべき障害回数を保持可能なビット幅を含むレジスタ群を備え、前記共有キャッシュ制御部が送出する障害情報を障害履歴情報としてコンパートメントごとに保持し、それを前記リプレースエントリ生成回路および前記共有キャッシュ制御部へ送出することを特徴とする。
【００１２】
さらに、本発明の共有キャッシュメモリ障害処理方式において、前記共有キャッシュ制御部は、前記障害検出回路から受信した障害情報を診断プロセッサに通知し、前記診断プロセッサの診断結果に基づいてその障害の処理を実行することを特徴とする。
【００１３】
すなわち、本発明によるキャッシュメモリは、複数のコンパートメントからなるセットアソシアティブ方式の共有キャッシュであって、キャッシュを共有するプロセッサ毎に利用可能なコンパートメントを予め割り当てることができる。これにより共有キャッシュを複数の区画に分かれたプロセッサから共有する場合、キャッシュで訂正不能な障害が発生した際のシステムダウンに至る区画を特定し、障害の波及範囲を限定することができる。
【００１４】
また、本発明による共有キャッシュメモリは、コンパートメント毎に当該コンパートメントの障害履歴を保持する障害履歴レジスタを備えることにより、キャッシュコンパートメントの障害履歴を管理すると共に、キャッシュミスヒットに伴うリプレースエントリを決定する際に障害履歴をもつコンパートメントへの登録を抑止することができる。
【００１５】
さらに、障害の履歴を管理することにより、キャッシュメモリで障害を検出した際に障害履歴レジスタを参照し、当該コンパートメントで繰り返し障害が発生していることが判明した場合は、キャッシュメモリの動作を停止し、システムダウンに移行することが可能である。
【００１６】
本発明は、特にコンピュータシステムを複数の論理区画に分割して各々の区画で独立してオペレーティングシステムを稼動させうるシステムについて、複数の区画からキャッシュメモリを共有する場合において有効であり、キャッシュで訂正不能な障害が発生した区画を特定し、障害の波及範囲を限定すると共に、他の区画の動作には影響を与えず運用を継続することができる。
【００１７】
【発明の実施の形態】
以下、本発明について図面を参照しながら説明する。
【００１８】
図１は本発明の実施の第一の形態を示すブロック図である。同図において、本発明による共有キャッシュメモリ障害処理方式は、複数のコンパートメントを有し複数のプロセッサ１１および１２に共有された共有キャッシュユニット２１において、それぞれのプロセッサにどのコンパートメントを割り当てるかを示す構成情報を保持するコンパートメント指示回路５２と、任意のプロセッサからの要求によりキャッシュを索引するとき要求元のプロセッサに割り当てられていないコンパートメントのヒット判定を抑止するアドレス比較回路５９と、キャッシュへデータを登録するとき前記コンパートメント指示回路が保持する構成情報に従って要求元のプロセッサに割り当てられたコンパートメントを選択するリプレースエントリ生成回路５５と、キャッシュ索引時に訂正不可能な障害を検出したときそのコンパートメント番号を通知する障害検出回路５８と、前記障害検出回路からの通知に基づいて前記障害が影響する区画を特定し前記構成情報を更新して前記コンパートメント指示回路へ通知し障害処理を行う共有キャッシュ制御部５１とを有する。
【００１９】
すなわち、プロセッサ１１，１２の各々にどのキャッシュコンパートメントを割り当てるかを示す構成情報がコンパートメント指示回路５２に保持される。プロセッサ１１ないし１２からの要求によりキャッシュを索引する際に、アドレス比較回路５９は要求元のプロセッサに割り当てられていないキャッシュコンパートメントのヒットを判定を抑止する。
【００２０】
また、キャッシュへデータ登録する際には、リプレースエントリ生成回路５５は要求元のプロセッサに割り当てられたキャッシュコンパートメントの中から登録すべきコンパートメントを選択する。これにより、コンパートメント指示回路５２が保持する構成情報に従ってプロセッサ毎に利用可能なキャッシュコンパートメントを任意に割り当てることが可能となる。
【００２１】
また、キャッシュ索引時に障害検出回路５８により訂正不可能なエラーを検出すると、共有キャッシュ制御部５１は診断プロセッサへエラー報告と共に要求元のプロセッサ番号を通知する。これにより診断プロセッサは障害の影響を受ける区画を特定し、当該区画をシステムダウンさせる。
【００２２】
図１を参照すると、共有キャッシュ制御部５１は、プロセッサ１１，１２及びシステムバス３１に接続されるとともに、共有キャッシュユニット２１内の制御機能を有する。
【００２３】
コンパートメント指示回路５２は、共有キャッシュ制御部５１，リプレースエントリ回路５５，アドレス比較回路５９に接続され、キャッシュ索引の際に索引要求元に対してどのキャッシュコンパートメントが割り当てられており有効かを示す情報を出力する。
【００２４】
ＬＲＵメモリ５３は、キャッシュのＬＲＵ（Ｌｅａｓｔ　Ｒｅｃｅｎｔｌｙ　Ｕｓｅｄ）制御に用いるメモリで、キャッシュのライン毎に１ｂｉｔの情報を保持する。
【００２５】
アドレス生成部５４は、共有キャッシュ制御部５１からキャッシュ索引アドレスを入力して保持し、そのアドレスの一部をキャッシュ索引アドレス及びキーとして出力する。
【００２６】
リプレースエントリ生成回路５５は、共有キャッシュ制御部５１，コンパートメント指示回路５２，ＬＲＵメモリ５３に接続され、キャッシュへのデータ登録時に登録すべきキャッシュコンパートメントを決定し、キャッシュアドレスアレイ（ＡＡ）５６及びキャッシュデータアレイ（ＤＡ）５７に対して、決定したコンパートメントへの書き込み指示を出力する。
【００２７】
上記の共有キャッシュは、２ウェイセットアソシアティブ方式のストアインキャッシュあって、キャッシュのキーアドレスを格納するキャッシュＡＡ５６及びデータブロックを格納するキャッシュＤＡ５７は、それぞれ２つのコンパートメントからなるメモリアレイを構成する。
【００２８】
アドレス比較回路５９はキャッシュＡＡ５６，コンパートメント指示回路５２，アドレス生成部５４から信号を入力し、キャッシュヒット判定を行い、判定結果を出力する。
【００２９】
データセレクタ６０は、アドレス比較回路５９からの出力を受け取り、キャッシュＤＡ５７から読み出したデータのうちいずれかのコンパートメントからの出力を選択し、出力する。
【００３０】
障害検出回路５８は、キャッシュＡＡ５６及びキャッシュＤＡ５７から読み出した値のパリティチェックを行い、エラーを検出した場合にそのコンパートメントの番号を共有キャッシュ制御部５１へ出力する。
【００３１】
図２は、コンパートメント指示回路５２及びリプレースエントリ生成回路５５の例を示す構成図である。
【００３２】
図２において、コンパートメント指示回路５２は、２ビット幅のレジスタの２ワードからなるレジスタ群により構成される。ここでレジスタのビット幅はキャッシュのコンパートメント数に等しく、ワード数は共有キャッシュユニット２１に直接接続されるプロセッサ数に等しい。これらのレジスタ群は、共有キャッシュ制御部５１より入力されるキャッシュコンパートメント毎の割り当て構成情報を保持する。
【００３３】
また、コンパートメント指示回路５２は、共有キャッシュ制御部５１からレジスタの各ワードに対応する２本の要求元ＩＤ信号が入力され、レジスタ群の各ビット単位に要求元ＩＤ信号が”１”のワードに格納される値の論理和が出力され、コンパートメントの割り当て情報としてリプレースエントリ生成回路５５とアドレス比較回路５９へ分配される。
【００３４】
さらに、図２を参照すると、リプレースエントリ回路５５は、単純な組み合わせ回路により実現される。図３に、この組み合わせ回路の真理値を示す。
【００３５】
次に、上記の共有キャッシュメモリの動作について説明する。
【００３６】
（１−１）共有キャッシュメモリの初期化
システムの立ち上げ時、共有キャッシュメモリの初期化動作を行う場合には、通常キャッシュメモリの初期化時に行われるようなキャッシュＡＡ５６及びキャッシュＤＡ５７，ＬＲＵメモリ５３のクリア動作に加えて、コンパートメント指示回路５２への初期設定が行われる。
【００３７】
コンパートメント指示回路５２は、図２に既述したように、共有キャッシュメモリに接続される各プロセッサと共有キャッシュメモリの各コンパートメントの対応付けの情報を格納するレジスタから構成されており、この設定情報は外部の診断プロセッサからの制御により設定される。
【００３８】
図２では、設定の一例としてプロセッサ１１に共有キャッシュメモリのコンパートメント０，プロセッサ１２に共有キャッシュメモリのコンパートメント１が割り付けられている例を図示した。
【００３９】
（１−２）キャッシュメモリからの読み出し
続いて、プロセッサ１１及び１２から共有キャッシュメモリを読み出す場合の動作を説明すると、まずプロセッサからの読み出し要求は共有キャッシュ制御部５１へ送られ、共有キャッシュ制御部５１が共有キャッシュメモリの読み出しを開始する。
【００４０】
共有キャッシュ制御部５１は読み出し要求元のプロセッサ番号に該当するＩＤ信号をコンパートメント指示回路５２に送出し、当該プロセッサに割り当てられた共有キャッシュのコンパートメント割り当て情報を得る。
【００４１】
一方で、共有キャッシュ制御部５１から読み出しアドレスがアドレス生成部５４へ送られ、キャッシュＡＡ５６及びキャッシュＤＡ５７の索引アドレスを得て各々のメモリアレイを索引するとともに、索引キーをアドレス比較回路５９へ渡す。
【００４２】
アドレス比較回路５９では、キャッシュＡＡ５６とアドレス生成部５４から得た索引キーを比較し、キャッシュメモリのヒット判定を行うが、この時コンパートメント指示回路５２からのコンパートメント割り当て情報により、読み出し要求元のプロセッサに割り当てられていないコンパートメントのヒット判定をマスクする。データセレクタ６０では、このヒット判定結果を得てキャッシュＤＡ５７出力のデータのうち何れかを選択して共有キャッシュ制御部５１へ渡す。
【００４３】
この時、キャッシュヒットした場合は、共有キャッシュ制御部は取り出したデータをプロセッサへ送出して一連の動作が完了するが、キャッシュミスした場合はさらに主記憶４１からのデータの取り出しを伴う。
【００４４】
まず、アドレス比較回路５９からキャッシュミスヒットの通知を受け取った共有キャッシュ制御部は、システムバス３１へ要求アドレスの読み出し要求を送出する。
【００４５】
続いて、ＬＲＵメモリ５３は所定の論理に従ってリプレースすべきキャッシュコンパートメントを決定するが、この情報はリプレースエントリ生成回路５５においてコンパートメント指示回路５２から得られるコンパートメント割り当て情報によってマスクされ、要求元のプロセッサに割り当てられたコンパートメントの中から一つのコンパートメントを得る。
【００４６】
共有キャッシュ制御部は、キャッシュＡＡ５６及びキャッシュＤＡ５７から当該コンパートメントのデータを読み出し、当該データが更新されていれば（キャッシュ中に”ダーティ”ブロックとして登録されていれば）システムバス３１を経由して当該データを主記憶へ書き戻すことでリプレース動作が完了する。
【００４７】
続いてシステムバス３１への読み出し要求に応じて主記憶４１または他の共有キャッシュが応答を返してくるので、共有キャッシュ制御部５１は当該要求アドレス及びデータをキャッシュＡＡ５６及びキャッシュＤＡ５７の予め決定されたコンパートメントへ書き込むと同時に要求元のプロセッサへ送出する。
【００４８】
（１−３）キャッシュメモリへの書き込み
次に、プロセッサ１１及び１２から共有キャッシュメモリへの書き込み動作を説明すると、まずプロセッサからの書き込み要求では、読み出しの場合と同様に共有キャッシュメモリの索引が行われる。
【００４９】
キャッシュヒットした場合は、共有キャッシュ制御部５１からキャッシュＡＡ５６及びキャッシュＤＡ５７の当該エントリへ要求アドレスの書き込み、ＬＲＵメモリ５３の更新が行われて書き込み動作が完了する。
【００５０】
キャッシュミスした場合は、読み出し時のミスヒットと同様にまず主記憶ないし他の共有キャッシュメモリから当該共有キャッシュメモリへのデータの登録と、必要に応じてキャッシュのリプレース動作が行われた後、キャッシュヒットした場合と同様に共有キャッシュメモリへの書き込みが行われ、動作が完了する。
【００５１】
（１−４）バススヌープ動作
上記に説明したキャッシュの読み出し・書き込み動作の他、上記の共有キャッシュメモリの構成ではバススヌープによるキャッシュの索引及びデータの掃き出し・更新動作が必要となる。個々の索引動作・掃き出し動作・更新動作については、これまでの説明にて記述した動作と同様であるので、ここでは繰り返して説明は行わない。
【００５２】
（１−５）キャッシュ障害発生時の動作
プロセッサ１１ないし１２からの読み出し要求や、キャッシュミス時のリプレース動作に伴う読み出し動作において、障害検出回路５８が障害を検出した場合、共有キャッシュ制御部５１は共有キャッシュメモリの読み出し動作を中断して共有キャッシュユニット２１の動作を一次保留（ＨＯＬＤ）し、障害が発生したことを外部の診断プロセッサへ通知して以後の障害処理を委ねる。
【００５３】
診断プロセッサでは、キャッシュメモリの訂正不能障害の通知を受け取ると、共有キャッシュ制御部５１を介して障害コンパートメントの番号とプロセッサとキャッシュコンパートメントの割り当て情報を取り出し、障害が波及する論理区画を特定した後、当該論理区画をシステムダウンさせる処理を開始する。
【００５４】
一方で、当該の共有キャッシュメモリに障害が波及しない論理区画が含まれている場合は、コンパートメント指示回路５２の設定情報を更新して障害が発生した論理区画からのアクセスを抑止した後、共有キャッシュユニットの保留（ＨＯＬＤ）を解除し、運用を再開する。
【００５５】
図４は本発明の実施の第二の形態を示すブロック図である。同図において、本発明による共有キャッシュメモリ障害処理方式は、複数のコンパートメントを有し複数のプロセッサ１１および１２に共有された共有キャッシュユニット２１ａにおいて、キャッシュに発生した障害の回数をコンパートメントごとに保持する障害履歴レジスタ６２と、キャッシュへデータを登録するとき前記障害履歴レジスタの情報を参照してデータを登録するコンパートメントを決定しキャッシュに指示するリプレースエントリ指示回路６５と、キャッシュ索引時に訂正不可能な障害を検出したときそのコンパートメント番号を共有キャッシュ制御部に通知する障害検出回路６８と、任意のプロセッサからの要求によりキャッシュにアクセスした際にミスヒットによりデータを登録する場合には前記障害履歴レジスタの情報を参照し障害履歴を持たないコンパートメントを選択することを前記リプレースエントリ指示回路に指示する共有キャッシュ制御部６１とを有する。
【００５６】
すなわち、タグを格納するキャッシュアドレスアレイ（ＡＡ）６６およびデータを格納するキャッシュデータアレイ（ＤＡ）６７の障害が発生した回数を示す値をキャッシュコンパートメント毎に保持するレジスタが障害履歴レジスタ６２である。障害履歴レジスタ６２はキャッシュコンパートメント毎に複数ビットの情報を持ち、その各々をＯＲした情報が障害履歴として出力される。
【００５７】
プロセッサ１１または１２からの要求でキャッシュミスヒットによりキャッシュへデータ登録する際には、リプレースエントリ生成回路６５が障害が発生した履歴を持たないキャッシュコンパートメントの中から登録すべきコンパートメントを選択する。これにより、障害履歴を持つコンパートメントへの新規の登録を抑止し、実際に障害が発生したキャッシュラインが上書きされて再利用されることがないようにできる。
【００５８】
図４を参照すると、共有キャッシュ制御部６１はプロセッサ１１，１２及びシステムバス３１に接続されるとともに、共有キャッシュユニット２１ａ内の制御機能を有する。
【００５９】
障害履歴レジスタ６２は、共有キャッシュ制御部６１およびリプレースエントリ生成回路６５に接続され、タグを格納するキャッシュアドレスアレイ（ＡＡ）６６およびデータを格納するキャッシュデータアレイ（ＤＡ）６７の障害が発生した回数を示す値をキャッシュコンパートメント毎に保持する。
【００６０】
ＬＲＵメモリ６３は、キャッシュのＬＲＵ（Ｌｅａｓｔ　Ｒｅｃｅｎｔｌｙ　Ｕｓｅｄ）制御に用いるメモリで、キャッシュのライン毎に１ｂｉｔの情報を保持する。
【００６１】
アドレス生成部６４は、共有キャッシュ制御部６１からキャッシュ索引アドレスを入力して保持し、そのアドレスの一部をキャッシュ索引アドレス及びキーとして出力する。
【００６２】
リプレースエントリ生成回路６５は、共有キャッシュ制御部６１，障害履歴レジスタ６２，ＬＲＵメモリ６３に接続され、キャッシュへのデータ登録時に登録すべきキャッシュコンパートメントを決定し、キャッシュアドレスアレイ（ＡＡ）６６及びキャッシュデータアレイ（ＤＡ）６７に対して、決定したコンパートメントへの書き込み指示を出力する。
【００６３】
上記の共有キャッシュは、２ウェイセットアソシアティブ方式のストアインキャッシュであって、キャッシュＡＡ６６及びキャッシュＤＡ６７はそれぞれ２つのコンパートメントからなるメモリアレイを構成する。
【００６４】
アドレス比較回路６９は、キャッシュＡＡ６６及びアドレス生成部６４から信号を入力し、キャッシュヒット判定を行い、判定結果を出力する。この時、ヒット判定結果は障害履歴レジスタ６２が格納する障害履歴情報に影響されず、障害履歴が残っているコンパートメントであってもキーが一致した場合はキャッシュヒットとして判定結果を出力する。
【００６５】
データセレクタ７０は、アドレス比較回路６９からの出力を受け取り、キャッシュＤＡ６７から読み出したデータのうちいずれかのコンパートメントからの出力を選択し出力する。
【００６６】
障害検出回路６８は、キャッシュＡＡ６６及びキャッシュＤＡ６７から読み出した値のパリティチェックを行い、エラーを検出した場合にそのコンパートメントの番号を共有キャッシュ制御部６１へ出力する。
【００６７】
図５は、障害履歴レジスタ６２及びリプレースエントリ生成回路６５の例を示す構成図である。
【００６８】
同図において、障害履歴レジスタ６２は、２ビット幅のレジスタの２ワードからなるレジスタ群により構成される。ここでレジスタのワード数はキャッシュのコンパートメント数に等しく、ビット幅は管理すべき障害履歴の回数表示が可能な幅が必要である。これらのレジスタ群は、共有キャッシュ制御部６１よりセットされるキャッシュコンパートメント毎の障害履歴情報を保持する。保持される情報の全ては、共有キャッシュ制御部６１及びリプレースエントリ生成回路６５へ分配される。
【００６９】
さらに、リプレースエントリ回路６５は、同図に示すように単純な組み合わせ回路により実現される。図６に、この組み合わせ回路の真理値を示す。
【００７０】
次に、上記の共有キャッシュメモリの動作について説明する。
【００７１】
（２−１）共有キャッシュメモリの初期化
システムの立ち上げ時、共有キャッシュメモリの初期化動作を行う場合には、通常キャッシュメモリの初期化時に行われるようなキャッシュＡＡ６６及びキャッシュＤＡ６７，ＬＲＵメモリ６３のクリア動作に加えて、障害履歴レジスタ６２への初期設定が行われる。
【００７２】
障害履歴レジスタ６２は、図５に示したように、共有キャッシュメモリの各コンパートメント毎の障害履歴情報を格納するレジスタから構成されており、この履歴情報はシステム運用中に障害が発生した際に共有キャッシュ制御部６１により書き換えられる。ここでは、システム動作中の一状態を示すため、適当な値を選んで図中に表示してある。
【００７３】
（２−２）キャッシュメモリからの読み出し
続いて、プロセッサ１１及び１２から共有キャッシュメモリを読み出す場合の動作を説明すると、まずプロセッサからの読み出し要求は共有キャッシュ制御部６１へ送られ、共有キャッシュ制御部６１が共有キャッシュメモリの読み出しを開始する。
【００７４】
すなわち、共有キャッシュ制御部６１から読み出しアドレスがアドレス生成部６４へ送られ、キャッシュＡＡ６６及びキャッシュＤＡ６７の索引アドレスを得て各々のメモリアレイを索引するとともに、索引キーをアドレス比較回路６９へ渡す。
【００７５】
アドレス比較回路６９では、キャッシュＡＡ６６とアドレス生成部６４から得た索引キーを比較し、キャッシュメモリのヒット判定を行う。データセレクタ７０では、このヒット判定結果を得てキャッシュＤＡ６７出力のデータのうち何れかを選択して共有キャッシュ制御部６１へ渡す。
【００７６】
この時、キャッシュヒットした場合は、共有キャッシュ制御部は取り出したデータをプロセッサへ送出して一連の動作が完了するが、キャッシュミスした場合はさらに主記憶４１からのデータの取り出しを伴う。
【００７７】
まず、アドレス比較回路６９からキャッシュミスヒットの通知を受け取った共有キャッシュ制御部６１は、システムバス３１へ要求アドレスの読み出し要求を送出する。
【００７８】
続いて、ＬＲＵメモリ６３に格納されるＬＲＵ情報により所定の論理に従ってリプレースすべきキャッシュコンパートメントを決定するが、この情報はリプレースエントリ生成回路６５において障害履歴レジスタ６２から得られる障害履歴情報によってマスクされ、障害履歴を持たないコンパートメントの中から新規の登録を行うべきコンパートメント番号を得る。
【００７９】
共有キャッシュ制御部６１は、キャッシュＡＡ６６及びキャッシュＤＡ６７から当該コンパートメントのデータを読み出し、当該データが更新されていれば（キャッシュ中に”ダーティ”ブロックとして登録されていれば）システムバス３１を経由して当該データを主記憶４１へ書き戻すことでリプレース動作が完了する。
【００８０】
続いて、システムバス３１への読み出し要求に応じて主記憶４１または他の共有キャッシュメモリが応答を返してくるので、共有キャッシュ制御部６１は当該要求アドレス及びデータをキャッシュＡＡ６６及びキャッシュＤＡ６７の予め決定されたコンパートメントへ書き込むと同時に要求元のプロセッサへ送出して一連の動作を完了する。
【００８１】
（２−３）キャッシュメモリへの書き込み
次に、プロセッサ１１及び１２から共有キャッシュメモリへの書き込み動作を説明すると、まずプロセッサからの書き込み要求では、読み出しの場合と同様に共有キャッシュメモリの索引が行われる。
【００８２】
キャッシュヒットした場合は、共有キャッシュ制御部６１からキャッシュＡＡ６６及びキャッシュＤＡ６７の当該エントリへ要求アドレスの書き込み、ＬＲＵメモリ６３の更新が行われて書き込み動作が完了する。
【００８３】
キャッシュミスした場合は、読み出し時のミスヒットと同様に、まず主記憶４１もしくは他の共有キャッシュメモリから当該共有キャッシュメモリへのデータの登録と、必要に応じてキャッシュのリプレース動作が行われた後、キャッシュヒットした場合と同様に共有キャッシュメモリへの書き込みが行われ、動作が完了する。
【００８４】
（２−４）バススヌープ動作
上記に説明したキャッシュの読み出し・書き込み動作の他、上記の共有キャッシュメモリの構成ではバススヌープによるキャッシュの索引及びデータの掃き出し・更新動作が必要となる。個々の索引動作・掃き出し動作・更新動作については、これまでの説明にて記述した動作と同様であるので、ここでは繰り返して説明は行わない。
【００８５】
（２−５）キャッシュ障害発生時の動作
プロセッサ１１や１２からの読み出し要求において、障害検出回路６８が障害を検出した場合、共有キャッシュ制御部６１は読み出したデータを破壊された（ＰＯＩＳＯＮＥＤ）データとして要求元のプロセッサへ送出する。破壊されたデータを受け取ったプロセッサは、処理の継続が不可能と判断して当該プロセッサを含む区画をシステムダウンさせるなどの処理を開始するが、このプロセスについては本発明の説明の範囲を超えるので詳しくは言及しない。
【００８６】
続いて、共有キャッシュ制御部６１は障害履歴レジスタ６２の値を読み出し、障害が発生したコンパートメントに対応するワードの値を＋１加算して再び障害履歴レジスタ６２へ書き戻すことで、以後のキャッシュリプレース動作等で新規に当該コンパートメントにデータが登録されることがないようにする。
【００８７】
この時、読み出した障害履歴情報の値が規定値（ここでは”１１”とする）であった場合は、同一コンパートメントでの障害が規定回数以上繰り返されたと判断して、共有キャッシュユニット２１の動作を保留（ＨＯＬＤ）し、繰り返し障害が発生したことを外部の診断プロセッサ（図示せず）へ通知して以後の障害処理を委ねる。
【００８８】
診断プロセッサは通知を受け取ると、全ての区画を含むシステムをダウンさせるなどの障害処理を実行する。
【００８９】
読み出した障害履歴情報の値が規定値を超えていなかった場合は、共有キャッシュ制御部６１はさらにキャッシュＡＡ６６の障害が発生したラインをフラッシュし、破壊されたデータを破棄する。
【００９０】
また、キャッシュミス時のリプレース動作や書き込みに伴う読み出し動作時に障害を検出した場合は、上記の読み出しの場合と同様の手段でプロセッサに障害を通知することが出来ないので、共有キャッシュ制御部６１はキャッシュアクセスに使用されたアドレスから当該アドレスに対応する区画を特定しようと試みる。
【００９１】
上記の共有キャッシュメモリのように、複数の区画を同時に稼働させる場合では、主記憶アドレスを各区画毎に割り当てた上でプロセッサからの主記憶アクセスは各区画毎のオフセット値を加算することで行われる。このオフセット値の加算はプロセッサ内部で行われることを想定しており、これにより各区画のソフトウェアは他の区画の存在を意識することなく実行することが可能となっている。従って障害を検出したときのアドレスが分かれば、対応する区画を特定することは可能である。
【００９２】
区画の特定に成功した場合は、共有キャッシュ制御部は当該区画に属するプロセッサのいずれかへ割り込み等の手段を用いて障害を通知する。通知を受け取ったプロセッサは、処理の継続が不可能と判断して当該区画をシステムダウンさせるなどの処理を開始する。
【００９３】
万一区画の特定が出来なかった場合、共有キャッシュ制御部６１は全区画を含むシステム全体の運用継続が不可能と判断して共有キャッシュユニット２１の動作を保留（ＨＯＬＤ）し、致命的な障害が発生したことを外部の診断プロセッサへ通知して以後の障害処理を委ねる。
【００９４】
さらに区画の特定に成功した場合は、前述の読み出しの場合と同様、以後の障害履歴レジスタ６２の更新およびキャッシュラインのフラッシュ動作が行われて一連の障害時の動作を完了する。
【００９５】
上記のように、キャッシュメモリの障害が発生してプロセッサへの通知，障害履歴レジスタの更新，および当該キャッシュラインのフラッシュが完了した後は、共有キャッシュユニット２１は直ちに運用を継続して後続のメモリアクセス要求やバススヌープ動作を実行することが可能となる。従って障害が波及しない区画では、障害の影響を受けることなく運用を継続することが可能である。
【００９６】
また、障害履歴により障害が発生したコンパートメントへの登録が抑止された後も、当該コンパートメントの障害が発生したライン以外の既に登録済みのライン（健全なデータ）からの読み出し・書き込みを行うことは可能である。キャッシュの障害時に一般に行われているようなコンパートメント縮退方式に比べると、本発明では縮退操作に伴うキャッシュの掃き出し処理が不要であり、障害処理手順が簡略化されている。
【００９７】
なお、上記の実施の形態では、共有キャッシュメモリの構成を２ウェイセットアソシアティブ方式としたが、これをさらに多くのコンパートメントから構成することもできる。例えば、４ウェイセットアソシアティブ構成にする場合、ＬＲＵメモリにキャッシュの各ライン毎６ビットの情報を付与する必要があり、リプレースエントリ生成回路もより複雑な構成となるが、上記と同様の動作にて実現可能である。
【００９８】
さらに、上記においては、障害検出回路はパリティ検出回路であったが、今日ミッションクリティカル用途のコンピュータシステムで通常用いられているようにＥＣＣ（エラー訂正コード）による障害検出・訂正を行う事も可能である。
【００９９】
また、本発明は、共有キャッシュに接続されるプロセッサやバスの数に依存することなく実現可能である。
【０１００】
【発明の効果】
以上、詳細に説明したように、本発明によれば、共有キャッシュメモリにおいて訂正不可能な障害を検出した場合に、その障害が発生したキャッシュラインを利用している論理区画を容易に特定することができるので、障害を他の論理区画の動作に波及させることなく当該の区画のみに閉じた障害処理、例えばシステムダウンを行わせることが可能となる。
【０１０１】
さらに、キャッシュメモリは障害が発生した後も運用を継続することが可能であり、障害が波及する区画を除く他の区画に対しては影響を与えることなくシステムの運用を継続することができる。
【図面の簡単な説明】
【図１】本発明の実施の第一の形態を示すブロック図。
【図２】図１の主要部を示す構成図。
【図３】リプレースエントリ生成回路５５の真理値を示す説明図。
【図４】本発明の実施の第二の形態を示すブロック図。
【図５】図４の主要部を示す構成図。
【図６】リプレースエントリ生成回路６５の真理値を示す説明図。
【図７】本発明の従来例を示す説明図。
【符号の説明】
１１，１２，１３，１４　　プロセッサ
２１，２１ａ，２２　　共有キャッシュユニット
３１　　システムバス
４１　　主記憶
５１，６１　　共有キャッシュ制御部
５２　　コンパートメント指示回路
５３，６３　　ＬＲＵメモリ
５４，６４　　アドレス生成部
５５，６５　　リプレースエントリ生成回路
５６，６６　　キャッシュＡＡ
５７，６７　　キャッシュＤＡ
５８，６８　　障害検出回路
５９，６９　　アドレス比較回路
６０，７０　　データセレクタ
６２　　障害履歴レジスタ
【図１】
2004062377.tif 000003
【図２】
2004062377.tif 000004
【図３】
2004062377.tif 000005
【図４】
2004062377.tif 000006
【図５】
2004062377.tif 000007
【図６】
2004062377.tif 000008
【図７】
2004062377.tif 000009