(57)【要約】  情報処理装置（１）は、それぞれ複数のメモリ（５）と、複数のメモリ（５）を管理するメモリコントローラ（１５）とを備える複数の処理部（３）と、情報処理装置（１）の起動の際に、複数の処理部（３）の正常性をチェックする正常性チェック部（１３１）と、複数の処理部のうち故障している処理部を検出する故障検出部（１３３）と、故障している処理部を縮退させる縮退部（１３５）と、複数のメモリが、該複数のメモリを組み合わせた冗長構成で使用されているか否かを判定する冗長化判定部（１３７）と、複数のメモリが冗長構成で使用されていると判定された場合に、複数のメモリの冗長構成を解除するか否かを判定する冗長化解除判定部（１３９）と、複数のメモリの冗長構成を解除すると判定された場合に、複数の処理部のうちの正常な処理部（３）の複数のメモリの冗長構成を解除する冗長化解除部（１４１）と、を有する。
2013069136.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置であって、
それぞれ複数のメモリと、前記複数のメモリを管理するメモリコントローラとを備える複数の処理部と、
前記情報処理装置の起動の際に、前記複数の処理部の正常性をチェックする正常性チェック部と、
前記正常性チェック部によるチェック結果に基づいて、前記複数の処理部のうち故障している処理部を検出する故障検出部と、
前記故障している処理部を縮退させる縮退部と、
前記複数のメモリが、該複数のメモリを組み合わせた冗長構成で使用されているか否かを判定する冗長化判定部と、
前記冗長化判定部によって前記複数のメモリが前記冗長構成で使用されていると判定された場合に、前記複数のメモリの前記冗長構成を解除するか否かを判定する冗長化解除判定部と、
冗長化解除判定部によって前記複数のメモリの前記冗長構成を解除すると判定された場合に、前記複数の処理部のうちの正常な処理部の前記複数のメモリの前記冗長構成を解除する冗長化解除部と、を有する
ことを特徴とする情報処理装置。
【請求項２】
前記冗長化解除判定部は、前記複数のメモリの前記冗長構成を解除するか否かを指定する冗長化解除情報に基づいて前記判定を行なうことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
メモリ容量の調整を行なうか否かを判定する容量調整判定部と、
前記容量調整判定部によって前記メモリ容量の調整を行なうと判定された場合に、前記処理部の縮退前の前記冗長構成において利用可能な実効メモリ容量と、前記処理部の縮退後に利用可能なメモリ容量とを算出するメモリ容量算出部と、
前記処理部の縮退前の前記冗長構成において利用可能な前記実効メモリ容量に近くなるように、前記処理部の縮退後に利用可能な前記メモリ容量を調整する調整部と、
を更に有することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記容量調整判定部は、前記メモリ容量の調整を行なうか否かを指定する容量調整情報に基づいて前記判定を行なうことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記調整部は、前記複数のメモリの一部を使用不可に設定することにより利用可能なメモリ容量を削減することを特徴とする請求項３または４のいずれか１項に記載の情報処理装置。
【請求項６】
それぞれ複数のメモリと、前記複数のメモリを管理するメモリコントローラとを備える複数の処理部を有する情報処理装置における情報処理方法であって、
前記情報処理装置の起動の際に、前記複数の処理部の正常性をチェックし、
前記チェックに基づいて、前記複数の処理部のうち故障している処理部を検出し、
前記故障している処理部を縮退させ、
前記複数のメモリが、該複数のメモリを組み合わせた冗長構成で使用されているか否かを判定し、
前記複数のメモリが前記冗長構成で使用されていると判定された場合に、前記複数のメモリの前記冗長構成を解除するか否かを判定し、
前記複数のメモリの前記冗長構成を解除すると判定された場合に、前記複数の処理部のうちの正常な処理部の前記複数のメモリの前記冗長構成を解除する
ことを特徴とする情報処理方法。
【請求項７】
前記複数のメモリの前記冗長構成を解除するか否かの判定は、前記複数のメモリの前記冗長構成を解除するか否かを指定する冗長化解除情報に基づいて行なうことを特徴とする請求項６に記載の情報処理方法。
【請求項８】
メモリ容量の調整を行なうか否かを判定し、
前記メモリ容量の調整を行なうと判定された場合に、前記処理部の縮退前の前記冗長構成において利用可能な実効メモリ容量と、前記処理部の縮退後に利用可能なメモリ容量とを算出し、
前記処理部の縮退前の前記冗長構成において利用可能な前記実効メモリ容量に近くなるように、前記処理部の縮退後に利用可能な前記メモリ容量を調整する
ことを特徴とする請求項６または７に記載の情報処理方法。
【請求項９】
前記容量調整を行なうか否かの判定は、前記メモリ容量の調整を行なうか否かを指定する容量調整情報に基づいて行なうことを特徴とする請求項８に記載の情報処理方法。
【請求項１０】
前記メモリ容量の調整は、前記複数のメモリの一部を使用不可に設定することにより利用可能なメモリ容量を削減することを特徴とする請求項８または９のいずれか１項に記載の情報処理方法。
【請求項１１】
それぞれ複数のメモリと、前記複数のメモリを管理するメモリコントローラとを備える複数の処理部を有する情報処理装置において実行されたときに、前記情報処理装置を、
前記情報処理装置の起動の際に、前記複数の処理部の正常性をチェックする正常性チェック部と、
前記正常性チェック部によるチェック結果に基づいて、前記複数の処理部のうち故障している処理部を検出する故障検出部と、
前記故障している処理部を縮退させる縮退部と、
前記複数のメモリが、該複数のメモリを組み合わせた冗長構成で使用されているか否かを判定する冗長化判定部と、
前記冗長化判定部によって前記複数のメモリが前記冗長構成で使用されていると判定された場合に、前記複数のメモリの前記冗長構成を解除するか否かを判定する冗長化解除判定部と、
冗長化解除判定部によって前記複数のメモリの前記冗長構成を解除すると判定された場合に、前記複数の処理部のうちの正常な処理部の前記複数のメモリの前記冗長構成を解除する冗長化解除部と、
して機能させることを特徴とする情報処理プログラム。
【請求項１２】
前記冗長化解除判定部は、前記複数のメモリの前記冗長構成を解除するか否かを指定する冗長化解除情報に基づいて前記判定を行なうことを特徴とする請求項１１に記載の情報処理プログラム。
【請求項１３】
前記情報処理装置において実行されたときに、前記情報処理装置を、
メモリ容量の調整を行なうか否かを判定する容量調整判定部と、
前記容量調整判定部によって前記メモリ容量の調整を行なうと判定された場合に、前記処理部の縮退前の前記冗長構成において利用可能な実効メモリ容量と、前記処理部の縮退後に利用可能なメモリ容量とを算出するメモリ容量算出部と、
前記処理部の縮退前の前記冗長構成において利用可能な前記実効メモリ容量に近くなるように、前記処理部の縮退後に利用可能な前記メモリ容量を調整する調整部と、
して更に機能させることを特徴とする請求項１１または１２に記載の情報処理プログラム。
【請求項１４】
前記容量調整判定部は、前記メモリ容量の調整を行なうか否かを指定する容量調整情報に基づいて前記判定を行なうことを特徴とする請求項１３に記載の情報処理プログラム。
【請求項１５】
前記調整部は、前記複数のメモリの一部を使用不可に設定することにより利用可能なメモリ容量を削減することを特徴とする請求項１３または１４のいずれか１項に記載の情報処理プログラム。
【請求項１６】
それぞれ複数のメモリと、前記複数のメモリを管理するメモリコントローラとを備える複数の処理部を有する情報処理装置において、前記情報処理装置を、
前記情報処理装置の起動の際に、前記複数の処理部の正常性をチェックする正常性チェック部と、
前記正常性チェック部によるチェック結果に基づいて、前記複数の処理部のうち故障している処理部を検出する故障検出部と、
前記故障している処理部を縮退させる縮退部と、
前記複数のメモリが、該複数のメモリを組み合わせた冗長構成で使用されているか否かを判定する冗長化判定部と、
前記冗長化判定部によって前記複数のメモリが前記冗長構成で使用されていると判定された場合に、前記複数のメモリの前記冗長構成を解除するか否かを判定する冗長化解除判定部と、
冗長化解除判定部によって前記複数のメモリの前記冗長構成を解除すると判定された場合に、前記複数の処理部のうちの正常な処理部の前記複数のメモリの前記冗長構成を解除する冗長化解除部と、
して機能させる情報処理プログラムを記録したことを特徴とするコンピュータ読取可能な記録媒体。
【請求項１７】
前記冗長化解除判定部は、前記複数のメモリの前記冗長構成を解除するか否かを指定する冗長化解除情報に基づいて前記判定を行なうことを特徴とする請求項１６に記載のコンピュータ読取可能な記録媒体。
【請求項１８】
前記情報処理プログラムは、前記情報処理装置を、
メモリ容量の調整を行なうか否かを判定する容量調整判定部と、
前記容量調整判定部によって前記メモリ容量の調整を行なうと判定された場合に、前記処理部の縮退前の前記冗長構成において利用可能な実効メモリ容量と、前記処理部の縮退後に利用可能なメモリ容量とを算出するメモリ容量算出部と、
前記処理部の縮退前の前記冗長構成において利用可能な前記実効メモリ容量に近くなるように、前記処理部の縮退後に利用可能な前記メモリ容量を調整する調整部と、
して更に機能させることを特徴とする請求項１６または１７に記載のコンピュータ読取可能な記録媒体。
【請求項１９】
前記容量調整判定部は、前記メモリ容量の調整を行なうか否かを指定する容量調整情報に基づいて前記判定を行なうことを特徴とする請求項１８に記載のコンピュータ読取可能な記録媒体。
【請求項２０】
前記調整部は、前記複数のメモリの一部を使用不可に設定することにより利用可能なメモリ容量を削減することを特徴とする請求項１８または１９のいずれか１項に記載のコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、情報処理装置、情報処理方法および情報処理プログラム、および同プログラムを記録した記録媒体に関する。
【背景技術】
【０００２】
高い信頼性を要求される計算機システムにおいては、中央処理装置（central processing unit；ＣＰＵ）やメモリ、ディスクを冗長化することで、システムダウンを回避している。このようなシステムにおいては、システムに故障が生じた場合、故障部分を切り離し（このような切り離しを「縮退」を呼ぶ）、システムを再起動して、業務処理を再開する。例えば、ＣＰＵやメモリに故障が生じた場合、故障したＣＰＵやメモリが縮退される。【０００３】
特に故障発生率の高いディスクやメモリは、冗長化が不可欠である。
冗長化の一手法として、二重化（メモリミラー）が可能なメモリが知られている。このようなメモリでは二重化しない場合には、２倍のメモリ容量を利用できる。
また、メモリの故障時にメモリ容量の減少量を削減できる方法も知られている。
さらに、近年、ＣＰＵにメモリコントローラを内蔵する技術が提案されており、メモリコントローラを内蔵したＣＰＵが普及してきた。【０００４】
このようなＣＰＵは、メモリコントローラとＣＰＵとを共通バスで接続した従来の構成に比べ、バスネックによる性能低下を回避できる。このようなＣＰＵは、従来メインフレームやＵＮＩＸ（登録商標）計算機で採用されていた高価なクロスバスイッチを介してメモリとＣＰＵを接続する方式と同等なメモリ性能を、安価に提供することができる。このため、低価格のＰＣサーバを中心に利用が広まっている。【０００５】
このようなＣＰＵに内蔵されたメモリコントローラは、上記のメモリの二重化機能も実装している。このため、ＣＰＵ内蔵メモリコントローラのこの二重化機能が、高信頼性を要求されるシステムにも利用されることが多くなっている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開昭５７−０７４８９８号公報
【特許文献２】特開平１１−３１２１２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
メモリコントローラ内蔵マルチＣＰＵシステムにおいては、ＣＰＵに接続されたメモリは、当該ＣＰＵを経由しないと読み書きすることができない。このため、このＣＰＵが縮退すると、当該ＣＰＵ配下のメモリも他のＣＰＵからアクセスできなくなるため、配下のメモリも同時に縮退してしまうことになる。
なお、一般に、データベース等のアプリケーションは、処理の高速化のためにメモリにデータの一部を展開したり、索引を配置するので、メモリの縮退で一定量のメモリを確保できなくなると、性能が大幅に低下する。最悪の場合には、アプリケーションの起動に失敗してしまう。【０００８】
また、近年、普及の進んでいる仮想化技術においても、仮想化されたゲストＯＳ（operating system）単位で一定量のメモリが必要であり、メモリが縮退すると、稼働可能なゲストＯＳ数が減ってしまう。例えば、Ｗｅｂ／アプリケーション（ＡＰ）／データベース（ＤＢ）の３階層からなるシステムを複数ゲストＯＳで構成する場合には、メモリが縮退すると、必要なゲストＯＳが起動できず、システムを稼働できなくなる。同様に、クライアント仮想化による仮想ＰＣでは、必要な数のＰＣを稼働できず、業務に支障をきたす可能性がある。【０００９】
例えば、上述したメモリ二重化手法では、ＣＰＵの故障によりメモリを二重化すべきか否かを判断できないため、メモリの減少を補填することはできない。
一般的な計算機システムは、システムの信頼性を向上させるために、メモリの冗長化機能、ならびに、ＣＰＵ単位の切り離しと自動再起動機能を備えている。しかし、単純にＣＰＵを切り離してしまうと、そのＣＰＵ配下のメモリも同時に切り離されるため、利用可能なメモリ量が減少してしまう。【００１０】
また、ＣＰＵの故障時のメモリの縮退を補填するために、単純にメモリの冗長化を解除すると、使用可能なメモリが大幅に増加してしまうこともある。このように利用可能なメモリが大幅に増加すると、メモリ管理テーブル等が肥大化してしまう。ＯＳやアプリケーションによっては、システムが復旧した後も、この肥大化した設定が残ってしまうため、利用可能なメモリ領域が減少し、アプリケーションが起動できなくなることがある。最悪の場合、ＯＳやアプリケーションの再インストールが必要となってしまう。【００１１】
例えば上述した手法は、メモリの故障時にメモリ容量の減少量を削減させるが、二重化の解除時のようにメモリ容量が増加する場合の解決策は何ら存在しない。
１つの側面では、本発明は、ＣＰＵの縮退によりメモリも縮退されてしまった場合にも、ＯＳやデータベース等のアプリケーションが利用可能なメモリ容量を、ＣＰＵ縮退前の二重化された実効メモリ容量に近づけることを目的とする。
【課題を解決するための手段】
【００１２】
このため、本開示の情報処理装置は、それぞれ複数のメモリと、前記複数のメモリを管理するメモリコントローラとを備える複数の処理部と、前記情報処理装置の起動の際に、前記複数の処理部の正常性をチェックする正常性チェック部と、前記正常性チェック部によるチェック結果に基づいて、前記複数の処理部のうち故障している処理部を検出する故障検出部と、前記故障している処理部を縮退させる縮退部と、前記複数のメモリが、該複数のメモリを組み合わせた冗長構成で使用されているか否かを判定する冗長化判定部と、前記冗長化判定部によって前記複数のメモリが前記冗長構成で使用されていると判定された場合に、前記複数のメモリの前記冗長構成を解除するか否かを判定する冗長化解除判定部と、冗長化解除判定部によって前記複数のメモリの前記冗長構成を解除すると判定された場合に、前記複数の処理部のうちの正常な処理部の前記複数のメモリの前記冗長構成を解除する冗長化解除部と、を有する。【００１３】
また、本開示の情報処理方法は、それぞれ複数のメモリと、前記メモリを管理するメモリコントローラとを有し、前記メモリを冗長化する冗長化機能を備える複数の処理部を有する情報処理装置における情報処理方法であって、前記情報処理装置の起動の際に、前記複数の処理部の正常性をチェックし、前記チェックに基づいて、前記複数の処理部のうち故障している処理部を検出し、前記故障している処理部を縮退させ、前記複数のメモリが、該複数のメモリを組み合わせた冗長構成で使用されているか否かを判定し、前記複数のメモリが前記冗長構成で使用されていると判定された場合に、前記複数のメモリの前記冗長構成を解除するか否かを判定し、前記複数のメモリの前記冗長構成を解除すると判定された場合に、前記複数の処理部のうちの正常な処理部の前記複数のメモリの前記冗長構成を解除する。【００１４】
また、本開示の情報処理プログラムは、それぞれ複数のメモリと、前記メモリを管理するメモリコントローラとを有し、前記メモリを冗長化する冗長化機能を備える複数の処理部を有する情報処理装置において実行されたときに、前記情報処理装置を、前記情報処理装置の起動の際に、前記複数の処理部の正常性をチェックする正常性チェック部と、前記正常性チェック部によるチェック結果に基づいて、前記複数の処理部のうち故障している処理部を検出する故障検出部と、前記故障している処理部を縮退させる縮退部と、前記複数のメモリが、該複数のメモリを組み合わせた冗長構成で使用されているか否かを判定する冗長化判定部と、前記冗長化判定部によって前記複数のメモリが前記冗長構成で使用されていると判定された場合に、前記複数のメモリの前記冗長構成を解除するか否かを判定する冗長化解除判定部と、冗長化解除判定部によって前記複数のメモリの前記冗長構成を解除すると判定された場合に、前記複数の処理部のうちの正常な処理部の前記複数のメモリの前記冗長構成を解除する冗長化解除部と、して機能させる。【００１５】
また、本開示のコンピュータ読取可能な記録媒体は、それぞれ複数のメモリと、前記メモリを管理するメモリコントローラとを有し、前記メモリを冗長化する冗長化機能を備える複数の処理部を有する情報処理装置において、前記情報処理装置を、前記情報処理装置の起動の際に、前記複数の処理部の正常性をチェックする正常性チェック部と、前記正常性チェック部によるチェック結果に基づいて、前記複数の処理部のうち故障している処理部を検出する故障検出部と、前記故障している処理部を縮退させる縮退部と、前記複数のメモリが、該複数のメモリを組み合わせた冗長構成で使用されているか否かを判定する冗長化判定部と、前記冗長化判定部によって前記複数のメモリが前記冗長構成で使用されていると判定された場合に、前記複数のメモリの前記冗長構成を解除するか否かを判定する冗長化解除判定部と、冗長化解除判定部によって前記複数のメモリの前記冗長構成を解除すると判定された場合に、前記複数の処理部のうちの正常な処理部の前記複数のメモリの前記冗長構成を解除する冗長化解除部と、して機能させる情報処理プログラムを記録している。
【発明の効果】
【００１６】
１実施態様によれば、処理部の縮退によりメモリも縮退されてしまった場合にも、メモリの冗長化を解除して、利用可能なメモリ容量を増やすことができる。
【図面の簡単な説明】
【００１７】
【図１】実施形態の一例としてのマルチプロセッサ情報処理システムのハードウェア構成を示す模式図である。
【図２】実施形態の一例としての実施形態の一例としてのマルチプロセッサ情報処理システムの機能構成を示す模式図である。
【図３】実施形態の一例としてのＣＰＵのハードウェア構成を示す模式図である。
【図４】実施形態の一例としてのメモリミラー指定テーブルの構造を示す図である。
【図５】実施形態の一例としてのＣＰＵ／メモリ構成テーブルの構造を示す図である。
【図６】実施形態の一例としての、メモリ容量の調整のない場合の再起動時の動作の概要を示すフローチャートである。
【図７】実施形態の一例としての、メモリ容量の調整を行なう場合の再起動時の動作の概要を示すフローチャートである。
【図８】実施形態の一例としてのマルチプロセッサ情報処理システムの再起動（または起動）時のＢＭＣおよび各ＣＰＵのそれぞれの動作を示すタイムチャートである。
【図９】実施形態の一例としてのマルチプロセッサ情報処理システムのＢＭＣの動作を示すフローチャートである。
【図１０】実施形態の一例としてのマルチプロセッサ情報処理システムの各ＣＰＵの正常性チェックにおける動作を示すフローチャートである。
【図１１】実施形態の一例としてのマルチプロセッサ情報処理システムの各メモリ構成の変更時の動作を示すフローチャートである。
【図１２】２ＣＰＵ構成のマルチプロセッサ情報処理システムの正常動作時の模式構成図である。
【図１３】図１２の状態でのメモリ二重化指定テーブルを例示する図である。
【図１４】図１２の状態でのＣＰＵ／メモリ構成テーブルを例示する図である。
【図１５】ＣＰＵの故障時のマルチプロセッサ情報処理システムの模式構成図である。
【図１６】図１５の状態でのＣＰＵ／メモリ構成テーブルを例示する図である。
【図１７】ＣＰＵの縮退後のマルチプロセッサ情報処理システムの模式構成図である。
【図１８】４ＣＰＵ構成のマルチプロセッサ情報処理システムの正常動作時の模式構成図である。
【図１９】図１８の状態でのメモリ二重化指定テーブルを例示する図である。
【図２０】図１８の状態でのＣＰＵ／メモリ構成テーブルを例示する図である。
【図２１】ＣＰＵの故障時のマルチプロセッサ情報処理システムの模式構成図である。
【図２２】図２１の状態でのＣＰＵ／メモリ構成テーブルを例示する図である。
【図２３】ＣＰＵおよびメモリの縮退後のマルチプロセッサ情報処理システムの模式構成図である。
【発明を実施するための形態】
【００１８】
以下、図面を参照して本発明の実施の形態を説明する。
［Ａ．システム構成］
図１は、実施形態の一例としてのマルチプロセッサ情報処理システム（情報処理装置）１のハードウェア構成を示す模式図である。
このマルチプロセッサ情報処理システム１は、複数のＣＰＵ（処理部）３を有するマルチプロセッサ情報処理システムである。このマルチプロセッサ情報処理システム１は、冗長化機能として、メモリを二重化して使用するメモリの二重化（メモリの冗長化、ミラー化）機能を備えると共に、ＣＰＵ３の故障時にそのＣＰＵ３を個別に切り離す（縮退させる）ことが可能である。
【００１９】
このマルチプロセッサ情報処理システム１は、さまざまな構成を取ることができ、例えば、図１中、点線で囲んだ部分は４ＣＰＵ構成、破線で囲んだ部分は２ＣＰＵ構成であり、２ＣＰＵ構成、４ＣＰＵ構成のいずれも取ることができる。
本マルチプロセッサ情報処理システム１は、ＣＰＵ３−０〜３−３、ＤＩＭＭ（Dual Inline Memory Module）（メモリ）５−０００〜５−３１２、入出力ハブ（Input/output hub：ＩＯＨ）７−０，７−１、ＩＣＨ（I/O Controller Hub）９−０，９−１を備える。また、本マルチプロセッサ情報処理システム１は、ＢＩＯＳ（Basic Input/Output System）フラッシュ１１、およびＢＭＣ（Baseboard Management Controller）１３も備え、これらは、ＣＰＵの個数にかかわらず１つずつ設けられている。
【００２０】
なお、以下、ＣＰＵを示す符号としては、複数のＣＰＵのうち１つを特定する必要があるときには符号３−０〜３−３を用いるが、任意のＣＰＵを指すときには符号３を用いる。
また、以下、ＤＩＭＭを示す符号としては、複数のＤＩＭＭのうち１つを特定する必要があるときには符号５−０００〜５−３１２を用いるが、任意のＤＩＭＭを指すときには符号５を用いる。
【００２１】
また、以下、ＩＯＨを示す符号としては、複数のＩＯＨのうち１つを特定する必要があるときには符号７−０，７−１を用いるが、任意のＩＯＨを指すときには符号７を用いる。
また、以下、ＩＣＨを示す符号としては、複数のＩＣＨのうち１つを特定する必要があるときには符号９−０，９−１を用いるが、任意のＩＣＨを指すときには符号９を用いる。
【００２２】
ＣＰＵ３は、プログラムを実行することにより各種処理を実現する装置であり、ＤＩＭＭ５を管理する後述のメモリコントローラ１５（図３参照）を内蔵している。このメモリコントーラ１５は、ＤＩＭＭ５の二重化に対応している。
ＤＩＭＭ５は、複数のＤＲＡＭチップをプリント基板上に搭載したメモリモジュールである。これらＤＩＭＭ５へのアクセス等は、ＣＰＵ３に内蔵されている後述のメモリコントローラ１５によって制御される。
【００２３】
なお、ＤＩＭＭ５のうち、破線で図示されているＤＩＭＭ５−００３，５−０１３，５−１０３，５−１１３，５−２０３，５−２１３，５−３０３，５−３１３は、スロットが存在するがスロットにＤＩＭＭが実装されていないものを示す。
ＩＯＨ７は、後述するＩＣＨ９とＣＰＵ３との間のデータの交換を行なうチップセットである。ＩＯＨ７には公知のＩＯＨを用いることができる。
【００２４】
ＩＣＨ９は、入出力を制御するチップセットであり、公知のＩＣＨを用いることができる。
ＢＩＯＳフラッシュ１１は、マルチプロセッサ情報処理システム１の起動または再起動時に読み込まれるＢＩＯＳプログラムやデータを記憶するメモリである。ＢＩＯＳフラッシュ１１は、起動または再起動時に後述するＢＭＣ１３によって読み込まれるメモリミラー指定テーブル１７やＣＰＵ／メモリ構成テーブル１９を記憶している。これらメモリミラー指定テーブル１７やＣＰＵ／メモリ構成テーブル１９については後述する。
【００２５】
ＢＭＣ１３は、マルチプロセッサ情報処理システム１のシステムボードを管理するコントローラである。通常、ＣＰＵ３、ＤＩＭＭ５等のハードウェアの監視、リモートコントロール、ハードウェアイベントの記録などを行なう。ＢＭＣ１３は、ＩＰＭＩ（Intelligent Platform Management Interface）によって標準仕様が規定されている。
このマルチプロセッサ情報処理システム１では、複数のメモリを組み合わせた冗長構成を設定することができ、例えば、メモリの二重化（メモリミラー）を設定することができる。例えば、メモリの二重化を設定する場合、同一のＣＰＵ３に接続された２つのＤＩＭＭ５の対が形成され、二重化が行なわれる。例えば、ＤＩＭＭ５−０００とＤＩＭＭ５−０１０とが、ＤＩＭＭ５−００１とＤＩＭＭ５−０１１とが、ＤＩＭＭ５−００２とＤＩＭＭ５−０１２とが、それぞれ二重化され、１つのＤＩＭＭとして機能する。また、ＤＩＭＭ５−１００とＤＩＭＭ５−１１０とが、ＤＩＭＭ５−１０１とＤＩＭＭ５−１１１とが、ＤＩＭＭ５−１０２とＤＩＭＭ５−１１２とが、それぞれ二重化され、１つのＤＩＭＭとして機能する。また、ＤＩＭＭ５−２００とＤＩＭＭ５−２１０とが、ＤＩＭＭ５−２０１とＤＩＭＭ５−２１１とが、ＤＩＭＭ５−２０２とＤＩＭＭ５−２１２とが、それぞれ二重化され、１つのＤＩＭＭとして機能する。また、ＤＩＭＭ５−３００とＤＩＭＭ５−３１０とが、ＤＩＭＭ５−３０１とＤＩＭＭ５−３１１とが、ＤＩＭＭ５−３０２とＤＩＭＭ５−３１２とが、それぞれ二重化され、１つのＤＩＭＭとして機能する。
【００２６】
このような二重化機能を備えたマルチプロセッサ情報処理システム１では、メモリ二重化指定テーブル１７とＣＰＵ／メモリ構成テーブル１９とが、起動または再起動時に読み込まれ、変更があればＰＯＳＴの実行後にＢＩＯＳフラッシュ１１に格納される。これと同時に、メモリ二重化指定テーブル１７とＣＰＵ／メモリ構成テーブル１９とのコピーが、各ＣＰＵ３のメモリコントローラ１５にも格納される。
【００２７】
各ＣＰＵ３のメモリコントローラ１５は、ＣＰＵ３の後述する処理コア２１やキャッシュメモリ２３（図３参照）、あるいは他のＣＰＵ３やＩＯＨ７の要求に従って、メモリアクセスを実施する。
メモリ二重化が設定されていない場合には、後述するＣＰＵ／メモリ構成テーブル１９内の存在フラグ４３、正常フラグ４５および使用フラグ４９に、例えば「１」が設定されているＤＩＭＭ５が使用され、読み出しまたは書き込みが行なわれる。例えば、ＤＩＭＭ５−０００、ＤＩＭＭ５−００１…、ＤＩＭＭ５−０１０、ＤＩＭＭ５−０１１…の順で、読み出しまたは書き込みが行なわれる。
【００２８】
メモリ二重化が指定されている場合は、書き込みが、ＤＩＭＭ５−０００、ＤＩＭＭ５−００１…に行なわれるのと同時に、ＤＩＭＭ５−０１０、ＤＩＭＭ５−０１１…にも行なわれ、二重化されているＤＩＭＭ５の各々に同時に行なわれる。読み出しも同様に、二重化されているＤＩＭＭ５の各々に同時に行なわれる。ＤＩＭＭ５に実際に書き込まれるデータにはＥＣＣチェックコードが付加されており、二重化されているＤＩＭＭ５の各々から読み出したデータのうち、ＥＣＣチェックで正常な方のデータが使用される。
【００２９】
図２は、実施形態の一例としての実施形態の一例としてのマルチプロセッサ情報処理システム１の機能構成を示す模式図である。
マルチプロセッサ情報処理システム１は、正常性チェック実行部（正常性チェック部）１３１、故障検出部（故障検出部）１３３、ＣＰＵ縮退部（縮退部）１３５、二重化判定部（冗長化判定部）１３７、二重化解除判定部（冗長化解除判定部）１３９、二重化解除部（冗長化解除部）１４１、メモリ容量調整判定部（容量調整判定部）１４３、メモリ容量算出部（容量算出部）１４５、および使用メモリ削減部（調整部）１４７を有する。
【００３０】
正常性チェック実行部１３１は、ＣＰＵ３およびＤＩＭＭ５に対して、ＣＰＵ３およびＤＩＭＭ５のパワーオンセルフテスト（power on self test：ＰＯＳＴ）を実行させる。そして、ＣＰＵ３およびＤＩＭＭ５からＰＯＳＴの実行結果を受け取る。
故障検出部１３３は、正常性チェック実行部１３１による結果に基づいて、ＣＰＵ３およびＤＩＭＭ５が正常に動作しているかどうかを判定する。すなわち、ＣＰＵ３およびＤＩＭＭ５からＰＯＳＴの正常終了が報告された場合、故障検出部１３３は、ＣＰＵ３およびＤＩＭＭ５が正常に動作していると判断する。ＣＰＵ３およびＤＩＭＭ５から応答がないか、ＰＯＳＴの異常終了が報告された場合、故障検出部１３３は、ＣＰＵ３およびＤＩＭＭ５が故障していると判断する。
【００３１】
ＣＰＵ縮退部１３５は、故障検出部１３３によって故障が検出されたＣＰＵ３を切り離す（縮退させる）。また、ＣＰＵ縮退部１３５は、故障が検出されたＤＩＭＭ５も切り離すと共に、縮退させたＣＰＵ３の配下のＤＩＭＭ５も縮退させる。なお、縮退は、ＣＰＵ３またはＤＩＭＭ５への電源供給を遮断する、ＣＰＵ３またはＤＩＭＭ５へのバスを切断するなど、公知の縮退手法を使用して行なうことができる。
【００３２】
二重化判定部１３７は、ＤＩＭＭ５が二重化されているかどうかを判定する。二重化判定部１３７は、例えば、後述するメモリミラー指定テーブル１７のメモリ二重化フラグ３１に値「１」が設定されている場合、ＤＩＭＭ５が二重化されていると判定する。
二重化解除判定部１３９は、ＤＩＭＭ５が二重化されている場合に、ＤＩＭＭ５の二重化を解除するかどうかを判定する。二重化解除判定部１３９は、例えば、後述するメモリミラー指定テーブル１７のＣＰＵ縮退時メモリ二重化解除フラグ３３に値「１」が設定されている場合、ＤＩＭＭ５が二重化されていると判定する。
【００３３】
二重化解除部１４１は、ＤＩＭＭ５の二重化を解除する。二重化解除部１４１は、例えば、後述するメモリミラー指定テーブル１７のメモリ二重化フラグ３１に値「０」を設定すると共に、ＣＰＵ／メモリ構成テーブル１９のメモリ二重化フラグ４７にも値「０」を設定することで、メモリの二重化を解除する。
メモリ容量調整判定部１４３は、故障したＣＰＵ３の縮退によりＤＩＭＭ５の二重化を解除する際に、ＣＰＵ３の縮退前と縮退後で、利用可能なメモリ容量との値が近くなるように調整（メモリ容量の調整）を行なうかどうかを判定する。メモリ容量調整判定部１４３は、例えば、後述するメモリミラー指定テーブル１７のＣＰＵ縮退時メモリ二重化解除フラグ３３に値「１」が設定されている場合、メモリ容量の調整を行なうと判定する。
【００３４】
メモリ容量算出部１４５は、ＣＰＵ３を縮退させる前の二重化された状態で利用可能なメモリ容量（実効メモリ容量）と、ＣＰＵ３を縮退させ、ＤＩＭＭ５の二重化を解除した後のメモリ容量とを算出する。メモリ容量算出部１４５は、後述するＣＰＵ／メモリ構成テーブル１９の存在フラグ４３の値が「１」であるＤＩＭＭ５の容量の合計（Ｍａ）と、ＣＰＵ／メモリ構成テーブル１９の正常フラグ４５の値が「１」であるＤＩＭＭ５の容量の合計（Ｍｎ）とを計算する。
【００３５】
使用メモリ削減部１４７は、ＣＰＵ３を縮退させ、ＤＩＭＭ５の二重化を解除した後の利用可能なメモリ容量が、ＣＰＵ３を縮退させる前の二重化された状態で利用可能なメモリ容量に近くなるように、ＤＩＭＭ５の一部を縮退させる。使用メモリ削減部１４７は、メモリ容量算出部１４５が算出した、ＭａとＭｎとの間にＭａ／２≧Ｍｎが成立するまで、正常なＣＰＵ３に接続している正常なＤＩＭＭ５の使用フラグ４９の値を、１つづつ「０」に設定することで、メモリ容量の調整を行なう。
【００３６】
なお、Ｍａを２で割るのは、メモリ二重化時には、利用可能な実効メモリ容量が搭載メモリ総容量の１／２となるためである。
図３は、実施形態の一例としてのＣＰＵ３のハードウェア構成を示す模式図である。
ＣＰＵ３は、メモリコントローラ１５、処理コア２１、キャッシュメモリ２３を有する。
【００３７】
メモリコントローラ１５は、ＤＩＭＭ５へのアクセス、ＤＩＭＭ５の二重化等を制御するコントローラである。
処理コア２１は、ＣＰＵ３における各種の処理を行なう回路である。図３には処理コア２１が１つしか図示されていないが、処理コア２１は複数存在していてもよい。
キャッシュメモリ２３は、処理コア２１とＤＩＭＭ５との間でやり取りされるデータを一時的に記憶しておくための記憶領域であり、Ｌ１キャッシュ、Ｌ２キャッシュなどである。
【００３８】
メモリコントローラ１５は、ＤＩＭＭ５の構成ならびに二重化を管理するために、メモリコントローラ１５内部に、メモリミラー指定テーブル１７と、ＣＰＵ／メモリ構成テーブル１９とを有する。これらのメモリミラー指定テーブル１７と、ＣＰＵ／メモリ構成テーブル１９とは、ＢＩＯＳフラッシュ１１に記憶されており、システム１の起動／再起動時にＢＩＯＳフラッシュ１１から読み出されてＣＰＵ３のメモリコントローラ１５にコピーが格納される。
【００３９】
図４は、実施形態の一例としてのメモリミラー指定テーブル１７の構造を示す図である。
メモリミラー指定テーブル１７は、各ＣＰＵ３について、メモリの二重化に関する設定を記憶するテーブルである。メモリミラー指定テーブル１７は、メモリ二重化フラグ３１と、ＣＰＵ縮退時メモリ二重化解除フラグ（冗長化解除情報）３３と、メモリ二重化解除時の容量調整フラグ（容量調整情報）３５とを有する。
【００４０】
メモリ二重化フラグ３１は、各ＣＰＵ３について、配下のメモリの二重化を行なうかどうかを指定するフラグである。例えば、メモリ二重化フラグ３１に値「１」がセットされている場合、当該ＣＰＵ３の配下のＤＩＭＭ５のメモリの二重化が行なわれる。値「０」がセットされている場合には、配下のＤＩＭＭ５のメモリの二重化が行なわれない。このフラグは、二重化判定部１３７によって、メモリ二重化の有無を判定するために使用される。
【００４１】
ＣＰＵ縮退時メモリ二重化解除フラグ３３は、各ＣＰＵ３について、メモリ二重化が設定されている場合に、ＣＰＵ３の縮退時に、二重化解除部１４１によってメモリ二重化を解除するかどうかを指定するフラグである。例えば、ＣＰＵ縮退時メモリ二重化解除フラグ３３に値「１」がセットされている場合、二重化解除部１４１は、ＣＰＵ３の縮退時にメモリ二重化を解除する。値「０」がセットされている場合には、二重化解除部１４１は、メモリ二重化を解除しない。
【００４２】
メモリ二重化解除時の容量調整フラグ３５は、各ＤＩＭＭ５について、メモリ二重化を解除する際に、使用メモリ削減部１４７によってメモリ容量の調整を行なうかどうかを指定するフラグである。メモリ二重化解除時の容量調整フラグ３５に値「１」がセットされている場合、使用メモリ削減部１４７は、ＤＩＭＭ５の一部を縮退させることによって、メモリ容量を調整する。メモリ二重化解除時の容量調整フラグ３５に値「０」がセットされている場合、使用メモリ削減部１４７はメモリ容量の調整を行なわない。
【００４３】
なお、メモリ二重化フラグ３１、ＣＰＵ縮退時メモリ二重化解除フラグ３３、およびメモリ二重化解除時の容量調整フラグ３５の値は、工場出荷時に設定されユーザが後から変更しても、システム１によって自動的に設定されてもよい。
図５は、実施形態の一例としてのＣＰＵ／メモリ構成テーブル１９の構造を示す図である。
【００４４】
ＣＰＵ／メモリ構成テーブル１９は、ＣＰＵ３、各ＤＩＭＭ５について、ハードウェア構成を記憶するテーブルである。ＣＰＵ／メモリ構成テーブル１９は、部品フィールド４１、存在フラグ４３、正常フラグ４５、メモリ二重化フラグ４７、および使用フラグ４９を有する。
部品フィールド４１は、ＣＰＵ３またはＤＩＭＭ５のスロットを示す識別子であり、例えば、ＣＰＵ３またはＤＩＭＭ５のスロットを示す英数字の識別子が記憶される。
【００４５】
存在フラグ４３は、部品フィールド４１に記載したＣＰＵ３またはＤＩＭＭ５のスロットに、部品（ＣＰＵ３またはＤＩＭＭ５）が実装されているかどうかを示すフラグである。例えば、存在フラグ４３に値「１」がセットされている場合、当該スロットに部品（ＣＰＵ３またはＤＩＭＭ５）が実装されている。存在フラグ４３に値「０」がセットされている場合、当該スロットに部品（ＣＰＵ３またはＤＩＭＭ５）が実装されていない。
【００４６】
正常フラグ４５は、スロットに実装されている部品について、その部品（ＣＰＵ３またはＤＩＭＭ５）のＰＯＳＴが正常終了したかどうかを示す。例えば、正常フラグ４５に値「１」がセットされている場合、当該部品のＰＯＳＴが正常終了したことを示す。値「０」がセットされている場合、ＰＯＳＴが異常終了し、マルチプロセッサ処理システム１の起動時に、当該部品に何らかの異常があったことを示す。なお、ＰＯＳＴは、マルチプロセッサ処理システム１の起動時に、前述のＢＭＣ１３によって実行される。
【００４７】
メモリ二重化フラグ４７は、部品がＣＰＵ３の場合に使用されるフラグであり、当該ＣＰＵ３について、配下のＤＩＭＭ５のメモリ二重化を行なうかどうかを示す。なお、このフラグには、前述のメモリミラー指定テーブル１７のメモリ二重化フラグ３１の値がコピーされる。前述のように、例えば、メモリ二重化フラグ４７に値「１」がセットされている場合、当該ＣＰＵ３の配下のＤＩＭＭ５のメモリの二重化が行なわれる。値「０」がセットされている場合には、配下のＤＩＭＭ５のメモリの二重化が行なわれない。
【００４８】
使用フラグ４９は、部品がＤＩＭＭ５の場合に使用されるフラグであり、当該ＤＩＭＭ５を使用するかどうかを示すフラグである。異常が検出されたＣＰＵ３の縮退時に、二重化解除部１４１がＤＩＭＭ５の二重化を解除すると、ＣＰＵ３の縮退前よりも利用可能なメモリ容量が増大してしまう場合がある。このような場合に、ＣＰＵ３の縮退前後で利用可能なメモリ容量をできるだけ近づけるために、使用メモリ削減部１４７は、一部のＤＩＭＭ５を縮退させる。その際、使用メモリ削減部１４７は、縮退させるＤＩＭＭ５の使用フラグ４９に、例えば値「０」を設定する。使用メモリ削減部１４７は、使用するＤＩＭＭ５については、対応する使用フラグ４９の値を変更せず、例えば値「１」が設定されたままとする。
【００４９】
なお、図５には、テーブルの各フラグに値が実際に設定されている例が図示されている。
なお、部品フィールド４１、存在フラグ４３、正常フラグ４５、メモリ二重化フラグ４７、および使用フラグ４９の値は、工場出荷時に設定されユーザが後から変更しても、システム１によって自動的に設定されてもよい。
［Ｂ．システム動作］
以下、図面を参照して、マルチプロセッサ情報処理システム１の動作を説明する。
【００５０】
図６は、実施形態の一例としての、メモリ容量の調整のない場合の再起動時の動作の概要を示すフローチャートである。
ステップＡ１１において、マルチプロセッサ情報処理システム１が再起動される。この図ではシステム１が、例えば、自動再起動（Automatic Server Reset and Restart：ＡＳＲ＆Ｒ）機能により再起動される。
【００５１】
ステップＡ１３において、正常性チェック実行部１３１は、マルチプロセッサ情報処理システム１のＰＯＳＴを実行する。
ステップＡ１５において、故障検出部１３３は、マルチプロセッサ情報処理システム１の全ＣＰＵ３に対して、ＣＰＵ３の故障の有無をチェックさせる（正常性チェック）。
ステップＡ１７において、故障検出部１３３は、ＣＰＵ３のうち、故障しているものが存在するかどうかを判定する。
【００５２】
全てのＣＰＵ３が正常な場合（ステップＡ１７のＮｏルート参照）、後述するステップＡ３３に移動する。一方、ＣＰＵ３のうち、故障しているものが存在する場合（ステップＡ１７のＹｅｓルート参照）、ステップＡ１９において、ＣＰＵ縮退部１３５は、故障しているＣＰＵ３を縮退させて、マルチプロセッサ情報処理システム１から切り離す。この結果、縮退させたＣＰＵ３の配下のＤＩＭＭ５も切り離される（縮退される）。
【００５３】
次に、ステップＡ２１において、二重化判定部１３７は、ＤＩＭＭ５の二重化が設定されているかどうかを判定する。この判定は、二重化判定部１３７が、前述のメモリミラー指定テーブル１７のメモリ二重化フラグ３１の値を読み出すことによって行なう。つまり、前述のメモリミラー指定テーブル１７のメモリ二重化フラグ３１に値「１」が設定されている場合、二重化判定部１３７は、メモリの二重化の設定が行なわれていると判定する。
【００５４】
ステップＡ２１において、ＤＩＭＭ５の二重化が設定されていないと判定された場合（ステップＡ２１のＮｏルート参照）、後述するステップＡ３３に移動する。一方、ステップＡ２１でメモリの二重化が設定されていると判定された場合（ステップＡ２１のＹｅｓルート）、ステップＡ２３において、二重化解除判定部１３９は、ＣＰＵ３の縮退時にメモリの二重化の解除が設定されているかどうかを判定する。この判定は、前述のメモリミラー指定テーブル１７のＣＰＵ縮退時メモリ二重化解除フラグ３３の値を読み出すことによって行なう。つまり、前述のメモリミラー指定テーブル１７のＣＰＵ縮退時メモリ二重化解除フラグ３３に値「１」が設定されている場合、二重化解除判定部１３９は、メモリの二重化の設定が行なわれていると判定する。
【００５５】
ステップＡ２３において、ＣＰＵ３の縮退時にメモリの二重化の解除が設定されていないと判定された場合（ステップＡ２３のＮｏルート参照）、後述するステップＡ３３に移動する。一方、ステップＡ２３でＣＰＵ３の縮退時にメモリの二重化の解除が設定されていると判定された場合（ステップＡ２３のＹｅｓルート参照）、ステップＡ２５において、二重化解除部１４１は、メモリの二重化を解除する。
【００５６】
最後に、ＢＭＣ１３は、ステップＡ３３においてＯＳを起動させる。
次に、図７を参照して、メモリ容量の調整のない場合の図１のマルチプロセッサ情報処理システム１における情報処理方法を示す。
図７は、実施形態の一例としての、メモリ容量の調整を行なう場合の再起動時の動作の概要を示すフローチャートである。
【００５７】
ステップＡ１１において、マルチプロセッサ情報処理システム１が再起動される。この図ではシステム１が、例えば、自動再起動（ＡＳＲ＆Ｒ）機能により再起動される。
ステップＡ１３において、正常性チェック実行部１３１は、マルチプロセッサ情報処理システム１のＰＯＳＴを実行する。
ステップＡ１５において、故障検出部１３３は、マルチプロセッサ情報処理システム１の全ＣＰＵに対して、ＣＰＵ３の故障の有無をチェックさせる（正常性チェック）。
【００５８】
ステップＡ１７において、故障検出部１３３は、ＣＰＵ３のうち、故障しているものが存在するかどうかを判定する。
全てのＣＰＵ３が正常な場合（ステップＡ１７のＮｏルート参照）、後述するステップＡ３３に移動する。一方、ＣＰＵ３のうち、故障しているものが存在する場合（ステップＡ１７のＹｅｓルート参照）、ステップＡ１９において、ＣＰＵ縮退部１３５は、故障しているＣＰＵ３を縮退させて、マルチプロセッサ情報処理システム１から切り離す。この結果、縮退させたＣＰＵ３の配下のＤＩＭＭ５も切り離される（縮退される）。
【００５９】
次に、ステップＡ２１において、二重化判定部１３７は、ＤＩＭＭ５の二重化が設定されているかどうかを判定する。この判定は、二重化判定部１３７が、前述のメモリミラー指定テーブル１７のメモリ二重化フラグ３１の値を読み出すことによって行なう。つまり、前述のメモリミラー指定テーブル１７のメモリ二重化フラグ３１に値「１」が設定されている場合、二重化判定部１３７は、メモリの二重化の設定が行なわれていると判定する。
【００６０】
ステップＡ２１において、ＤＩＭＭ５の二重化が設定されていないと判定された場合（ステップＡ２１のＮｏルート参照）、後述するステップＡ３３に移動する。一方、ステップＡ２１でメモリの二重化が設定されていると判定された場合（ステップＡ２１のＹｅｓルート）、ステップＡ２３において、二重化解除判定部１３９は、ＣＰＵ３の縮退時にメモリの二重化の解除が設定されているかどうかを判定する。この判定は、前述のメモリミラー指定テーブル１７のＣＰＵ縮退時メモリ二重化解除フラグ３３の値を読み出すことによって行なう。つまり、前述のメモリミラー指定テーブル１７のＣＰＵ縮退時メモリ二重化解除フラグ３３に値「１」が設定されている場合、二重化解除判定部１３９は、メモリの二重化の設定が行なわれていると判定する。
【００６１】
ステップＡ２３において、ＣＰＵ３の縮退時にメモリの二重化の解除が設定されていないと判定された場合（ステップＡ２３のＮｏルート参照）、後述するステップＡ３３に移動する。一方、ステップＡ２３でＣＰＵ３の縮退時にメモリの二重化の解除が設定されていると判定された場合（ステップＡ２３のＹｅｓルート参照）、ステップＡ２５において、二重化解除部１４１は、メモリの二重化を解除する。
【００６２】
次に、ステップＡ２７において、メモリ容量調整判定部１４３は、メモリ容量の調整を行なうかどうかを判定する。この判定は、前述のメモリミラー指定テーブル１７のメモリ二重化解除時の容量調整フラグ３５の値を読み出すことによって行なう。つまり、前述のメモリミラー指定テーブル１７のメモリ二重化解除時の容量調整フラグ３５に値「１」が設定されている場合、二重化解除判定部１３９は、メモリの二重化の設定が行なわれていると判定する。
【００６３】
ステップＡ２７でメモリ容量の調整を行なわないと判定された場合（ステップＡ２７のＮｏルート参照）、後述するステップＡ３３に移動する。一方、ステップＡ２７でメモリ容量の調整を行なうと判定された場合（ステップＡ２７のＹｅｓルート参照）、ステップＡ２９において、メモリ容量算出部１４５は、縮退前の二重化された実効メモリ容量と縮退後の二重化を解除したメモリ容量とを算出して比較する。
【００６４】
縮退後の二重化を解除したメモリ容量が、縮退前の二重化された実効メモリ容量以下の場合（ステップＡ２９のＮｏルート参照）、後述するステップＡ３３に移動する。
一方、縮退前の二重化された実効メモリ容量よりも縮退後の二重化を解除したメモリ容量のほうが大きい場合（ステップＡ２９のＹｅｓルート参照）、ステップＡ３１において、使用メモリ削減部１４７は、一部のＤＩＭＭ５を縮退させて、縮退前の二重化された実効メモリ容量と縮退後の二重化を解除したメモリ容量とが等しくなるように調整する。その際、使用メモリ削減部１４７は、不使用に設定するＤＩＭＭ５の使用フラグ４９に、例えば値「０」を設定する。
【００６５】
最後に、ＢＭＣ１３は、ステップＡ３３においてＯＳを起動させる。
以下、図８〜１１を参照して、図６，７に示した処理の詳細を説明する。
図８は、実施形態の一例としてのマルチプロセッサ情報処理システム１の再起動（または起動）時のＢＭＣ１３および各ＣＰＵ３のそれぞれの動作を示すタイムチャートである。
【００６６】
図８の左端の列はＢＭＣ１３の処理を示す。その右隣の列はＣＰＵ０（本例ではＣＰＵ３−０）の処理を、右端の列はＣＰＵｎ（ｎは１以上の整数、２ＣＰＵシステムではｎ＝１、４ＣＰＵシステムではｎ＝３）の処理をそれぞれ示す。
マルチプロセッサ情報処理システム１の電源投入が行なわれると、まず、ステップＢ１３において、ＢＭＣ１３が、ＢＩＯＳフラッシュ１１に格納されている構成情報を読み込む。この構成情報には、ＣＰＵ３およびＤＩＭＭ５に関する情報のほか、Ｉ／Ｏを含むハードウェアに関する情報が格納されている。
【００６７】
ステップＢ１５−１において、ＢＭＣ１３は、実装されているＣＰＵ３のうち最若番のＣＰＵ３（本例ではＣＰＵ３−０）に対して、ＰＯＳＴの実行を指示する。
この指示に対し、ステップＣ１１−１において、ＣＰＵ３−０は、ＣＰＵ３−０内の各ブロック（例えば、図２の処理コア５や処理コア２１）の機能をテストし、ＣＰＵ３−０が正常であるかどうかを確認する。
【００６８】
また、ＢＭＣ１３は、実装されている次のＣＰＵに対して、順次ＰＯＳＴの実行を指示し、同様にして、全てのＣＰＵ（ＣＰＵ０〜ＣＰＵｎ）にＰＯＳＴの実行を指示する（ステップＢ１５−ｎ）。
ＣＰＵ０（例えば、ＣＰＵ３−０）のＰＯＳＴで異常が検出された場合、ＣＰＵ０は、異常である旨をＢＭＣ１３に応答する。故障検出部１３３は、ＣＰＵ０から異常応答が返された場合やＣＰＵ０から応答のない場合、ＣＰＵ０が異常であると判断する。故障検出部１３３は、ＣＰＵ／メモリ構成テーブル１９のＣＰＵ０の正常フラグを「０」に変更すると共に、そのＣＰＵ０に属するＤＩＭＭ５（例えば、ＤＩＭＭ５−０００〜５−０１２）の正常フラグも「０」に変更する。
【００６９】
ＣＰＵ０が正常であった場合は、ＣＰＵ０は、ＣＰＵ０の配下の各ＤＩＭＭ５について、書き込みデータと読み出しデータの比較、ＥＣＣ等のエラー情報の有無のチェックなどのテストを行なう。ＤＩＭＭ５のいずれかで異常が検出された場合、当該ＤＩＭＭ５の正常フラグを「０」に修正する。ここでは、他のＣＰＵ３の正常性がまだ確認されていないので、ＤＩＭＭ５のテストは、テスト対象のＣＰＵ０に接続された配下のＤＩＭＭ５のみに対して行なう。
【００７０】
また、ＰＯＳＴが正常終了した次のＣＰＵも、配下のＤＩＭＭ５に対して、順次ＰＯＳＴを実行する。同様にして全ＣＰＵ（ＣＰＵ０〜ＣＰＵｎ）について、その配下のＤＩＭＭ５のＰＯＳＴを実行する（ステップＣ１１−ｎ）。
すべてのＣＰＵのＰＯＳＴが終了すると、ステップＢ２５−１において、ＢＭＣ１３はＣＰＵ／メモリ構成テーブル１９を再度参照して、正常な最若番のＣＰＵ０に対してメモリ設定の開始を指示する。
【００７１】
この指示に対し、ステップＤ１１−１において、ＣＰＵ０は、メモリ二重化指定テーブルと全ＣＰＵ分のＣＰＵ／メモリ構成テーブル１９とを再度読み込んで、メモリの設定を開始する。
メモリ二重化フラグ３１の値が「０」の場合、またはＣＰＵ縮退時メモリ二重化解除フラグ３３の値が「０」の場合には、メモリ容量の調整は不要であるため、ＣＰＵ／メモリ構成テーブル１９をＣＰＵ内部のメモリコントローラ１５にコピーして終了する。このとき、メモリ二重化フラグ３１の値が「１」であれば、メモリの二重化設定も行なう。
【００７２】
メモリ二重化フラグ３１の値が「１」で、かつＣＰＵ縮退時メモリ二重化解除フラグ３３の値が「１」の場合、メモリ容量算出部１４５は、ＣＰＵ／メモリ構成テーブル１９の存在フラグ４３の値が「１」であるＤＩＭＭ５の容量の合計（Ｍａ）と、正常フラグ４５の値が「１」であるＤＩＭＭ５の容量の合計（Ｍｎ）とを計算し、両者を比較する。Ｍａ／２＝Ｍｎであれば、ＢＭＣ１３は、メモリ二重化フラグ３１を「０」に修正する。そして、ＢＭＣ１３は、メモリ二重化指定テーブル１７とＣＰＵ／メモリ構成テーブル１９とをＣＰＵ内部のメモリコントローラ１５にコピーすると共に、ＢＩＯＳフラッシュ１１にも書き込む。
【００７３】
Ｍａ／２＜Ｍｎの場合、使用メモリ削減部１４７は、正常なＣＰＵ３に接続している正常なＤＩＭＭ５の使用フラグ４９の値を、１つづつ「０」に設定し、Ｍａ／２≧Ｍｎとなるまで使用するＤＩＭＭ５を減らすように、ＣＰＵ／メモリ構成テーブル１９を変更する。
次に、ＢＭＣ１３は、次のＣＰＵに対して、順次メモリ設定の開始を指示し、同様にして、全てのＣＰＵ（ＣＰＵ０〜ＣＰＵｎ）にメモリ設定の開始を指示する（ステップＢ２５−ｎ）。
【００７４】
しかし、全ＣＰＵのメモリの設定およびＣＰＵ／メモリ構成テーブル１９の修正は、ステップＤ１１−１において、ＣＰＵ０によって既に行なわれているので、実際にはＣＰＵ／メモリ構成テーブル１９の修正は行なわれない。
最後に、ステップＢ２７において、ＢＭＣ１３はＯＳの起動を指示する。
次に、フローチャートを参照して、マルチプロセッサ情報処理システム１の各構成要素の動作を詳細に説明する。
【００７５】
図９は、実施形態の一例としてのマルチプロセッサ情報処理システム１のＢＭＣ１３の動作を示すフローチャートである。
まず、ステップＢ１１において、マルチプロセッサ情報処理システム１が起動または再起動される。
次に、ステップＢ１３（前述の図８のステップＢ１３に対応）において、ＢＭＣ１３は、ＢＩＯＳフラッシュ１１から、メモリミラー指定テーブル１７およびＣＰＵ／メモリ構成テーブル１９を読み出す。これにより、ＢＭＣ１３は、マルチプロセッサ情報処理システム１に搭載されているＣＰＵ３、ＤＩＭＭ５の個数を認識する。
【００７６】
次に、ステップＢ１５（前述の図８のステップＢ１５−１、Ｂ１５−ｎに対応）において、正常性チェック実行部１３１は、最若番ＣＰＵ３（本例ではＣＰＵ３−０）から順次、ＣＰＵの正常性チェック処理の実行を指示する。この処理の詳細については、図１０を参照して後述する。
次に、ステップＢ１７において、故障検出部１３３は、ＣＰＵの正常性チェック処理の実行を指示したＣＰＵ３から応答があったかどうかを判定する。
【００７７】
ステップＢ１７においてＣＰＵ３から応答があった場合（ステップＢ１７のＹｅｓルート参照）、ステップＢ１９において、故障検出部１３３は、ＣＰＵ３から受信した応答に基づいて、ＰＯＳＴが正常終了したかどうかを判定する。
ステップＢ１７においてＣＰＵ３から応答のない場合（ステップＢ１７のＮｏルート参照）、またはステップＢ１９においてＣＰＵ３のＰＯＳＴが異常終了した場合（ステップＢ１９のＮｏルート参照）、ステップＢ２１において、ＣＰＵ縮退部１３５は、応答を返さなかったか異常応答を返したＣＰＵ３を縮退させる（切り離す）。ＣＰＵ縮退部１３５は、ＣＰＵ／メモリ構成テーブル１９の当該ＣＰＵ３とＤＩＭＭ５の正常フラグ４５に「０」（異常）を書き込む。
【００７８】
ステップＢ１９において、ＣＰＵのＰＯＳＴが正常終了した場合（ステップＢ１９のＹｅｓルート参照）、ステップＢ２３において、正常性チェック実行部１３１は、全ＣＰＵ３について正常性チェックを終了したかどうかを判定する。
まだ正常性チェックが終了していないＣＰＵ３が存在する場合（ステップＢ２３のＮｏルート参照）、ＢＭＣ１３は、ステップＢ１５に戻る。
【００７９】
全てのＣＰＵ３の正常性チェックが終了した場合（ステップＢ２３のＹｅｓルート参照）、ステップＢ２５（前述の図８のステップＢ２５−１、Ｂ２５−ｎに対応）において、正常性チェック実行部１３１は、正常な最若番ＣＰＵ３から、メモリ設定処理の実行を指示する。この処理の詳細については、図１１を参照して後述する。
最後に、ステップＢ２７（前述の図８のステップＢ２７に対応）において、ＢＭＣ１３はＯＳの起動を指示する。
【００８０】
図１０は、実施形態の一例としてのマルチプロセッサ情報処理システム１の各ＣＰＵ３の正常性チェックにおける動作を示すフローチャートである。この処理は、前述の図８のステップＢ１５−１、Ｂ１５−ｎおよび図９のステップＢ１５において実行される処理である。
まず、ステップＣ１３において、ＣＰＵ３は、ＢＩＯＳフラッシュ１１から、メモリミラー指定テーブル１７およびＣＰＵ／メモリ構成テーブル１９を読み出す。
【００８１】
次に、ステップＣ１５において、ＣＰＵ３は、自ＣＰＵ３内の正常性チェックを実行する。
次に、ステップＣ１７において、ＣＰＵ３は、ステップＣ１５において異常が検出されたかどうかを判定する。
ＣＰＵ３の異常が検出された場合（ステップＣ１７のＹｅｓルート参照）、ステップＣ２１において、ＣＰＵ３は、ＣＰＵ３の異常をＢＭＣ１３に報告する。
【００８２】
ＣＰＵ３の異常が検出されない場合（ステップＣ１７のＮｏルート参照）、ステップＣ１９において、ＣＰＵ３は、配下のＤＩＭＭ５の正常性をチェックして、ＣＰＵ／メモリ構成テーブル１９を修正する。詳細には、ＤＩＭＭ５が正常である場合、メモリ構成テーブル１９の当該ＤＩＭＭ５の正常フラグ４５の値を「１」に設定する。ＤＩＭＭ５の以上が検出された場合、メモリ構成テーブル１９の当該ＤＩＭＭ５の正常フラグ４５の値を「０」に設定する。
【００８３】
次にステップＣ２３において、ＣＰＵ３は、ＣＰＵ３が正常であることをＢＭＣ１３に報告する。
図１１は、実施形態の一例としてのマルチプロセッサ情報処理システム１の各メモリ構成時の変更時の動作を示すフローチャートである。この処理は、前述の図８のステップＢ２５−１、Ｂ２５−ｎおよび図９のステップＢ２５において実行される処理である。
【００８４】
まず、ステップＤ１３において、ＣＰＵ３は、ＢＩＯＳフラッシュ１１から、メモリミラー指定テーブル１７およびＣＰＵ／メモリ構成テーブル１９を読み出す。
次に、ステップＤ１５において、当該ＣＰＵ３は、自ＣＰＵ３が縮退しているかどうかを判定する。この判定は、例えば、図１０を参照して前述したＣＰＵ３の正常性チェックの結果等から判定することができる。
【００８５】
ＣＰＵ３が縮退していない場合（ステップＤ１５のＮｏルート参照）、ステップＤ３１に移動する。一方、ＣＰＵ３が縮退している場合（ステップＤ１５のＹｅｓルート参照）、ステップＤ１７において、二重化判定部１３７は、ＤＩＭＭ５が二重化（ミラー化）されているかどうかを判定する。この判定は、例えば、前述のメモリミラー指定テーブル１７のメモリ二重化フラグ３１の値が「１」に設定されているかどうかを確認することによって行なう。
【００８６】
ＤＩＭＭ５がミラー化されていない場合（ステップＤ１７のＮｏルート参照）、ステップＤ３１に移動する。一方、ＤＩＭＭ５がミラー化されている場合（ステップＤ１７のＹｅｓルート参照）、ステップＤ１９において、二重化解除判定部１３９は、ＣＰＵ縮退時にメモリ二重化を解除するように指定されているかどうかを判定する。この判定は、例えば、前述のメモリミラー指定テーブル１７のＣＰＵ縮退時メモリ二重化解除フラグ３３の値が「１」に設定されているかどうかを確認することによって行なう。
【００８７】
ＣＰＵ縮退時にメモリ二重化を解除するように指定されていない場合（ステップＤ１９のＮｏルート参照）、ステップＤ３１に移動する。一方、ＣＰＵ縮退時にメモリ二重化を解除するように指定されている場合（ステップＤ１９のＹｅｓルート参照）、ステップＤ２１において、二重化解除部１４１は、ステップＤ１９においてミラーを解除する。詳細には、ＣＰＵ／メモリ構成テーブル１９のメモリ二重化フラグ３１を「０」に設定する。
【００８８】
次に、ステップＤ２３において、メモリ容量調整判定部１４３は、メモリミラーの解除時にメモリの容量調整を行なうかどうかを判定する。この判定は、例えば、前述のメモリミラー指定テーブル１７のメモリ二重化解除時の容量調整フラグ３５の値が「１」に設定されているかどうかを確認することによって行なう。
メモリミラーの解除時にメモリの容量調整を行なわない場合（ステップＤ２３のＮｏルート参照）、ステップＤ３１に移動する。
【００８９】
一方、メモリミラーの解除時にメモリの容量調整を行なう場合（ステップＤ２３のＹｅｓルート参照）、ステップＤ２５において、メモリ容量算出部１４５は、ＣＰＵ／メモリ構成テーブル１９の存在フラグ４３の値が「１」であるＤＩＭＭ５の合計容量（Ｍａ）と、メモリ構成テーブル１９の正常フラグ４５の値が「１」であるＤＩＭＭ５の合計容量（Ｍｎ）とを計算する。
【００９０】
次に、ステップＤ２７において、使用メモリ削減部１４７は、ステップＤ２５で求めたＭａを２で割った値（Ｍａ／２）と、Ｍｎとを比較する。なお、Ｍａを２で割る理由は、前述のように、メモリ二重化時には、利用可能な実効メモリ容量が搭載メモリ総容量の１／２となるためである。
ステップＤ２７においてＭa／２≧Ｍｎの場合（ステップＤ２７のＹｅｓルート参照）、使用メモリ削減部１４７は、ステップＤ３１に移動する。
【００９１】
ステップＤ２７においてＭａ／２≧Ｍｎではない場合（ステップＤ２７のＮｏルート参照）、ステップＤ２９において、ＢＭＣ１３は、正常なＣＰＵ３に接続している正常なＤＩＭＭ５の使用フラグを１つづつ「０」に設定してＭａ／２≧Ｍｎとなるまで使用するＤＩＭＭ５を減らすように、ＣＰＵ／メモリ構成テーブル１９を修正する。詳細には、使用しないＤＩＭＭ５に対して、そのＤＩＭＭ５のＣＰＵ／メモリ構成テーブル１９の使用フラグ４９に値「１」をセットする。
【００９２】
最後に、ステップＤ３１において、ＣＰＵ３はＢＭＣ１３に応答する。なお、その際に、メモリ二重化指定テーブル１７とＣＰＵ／メモリ構成テーブル１９とがＣＰＵ３内部のメモリコントローラ１５にコピーされると共に、ＢＩＯＳフラッシュ１１にも書き込まれてもよい。
また、メモリコントローラ１５および／またはＢＩＯＳフラッシュ１１へのメモリ二重化指定テーブル１７とＣＰＵ／メモリ構成テーブル１９の更新が、各ステップまたは他の適したタイミングで行なわれてもよい。
【００９３】
以下、図１２〜図２３を参照して、実施形態の一例としてのマルチプロセッサ情報処理システム１の例を詳細に説明する。
まず、最小の構成である２ＣＰＵ構成のマルチプロセッサ情報処理システム１について図１２〜図１７を参照して説明する。
図１２は、２ＣＰＵ構成のマルチプロセッサ情報処理システム１の正常動作時の模式構成図である。図１３は、図１２の状態でのメモリ二重化指定テーブル１７の例を、図１４は、ＣＰＵ／メモリ構成テーブル１９の例を示す。
【００９４】
なお、以下、既述の符号と同一の符号は、同一もしくは略同一の部分を示しているので、その説明は省略する。
このマルチプロセッサ情報処理システム１においては、ＢＩＯＳフラッシュ１１に記憶されている図１３のメモリ二重化指定テーブル１７のメモリ二重化フラグ３１に値「１」が設定されている。このため、図１４のＣＰＵ／メモリ構成テーブル１９に登録されているＤＩＭＭ５の間で、図１２に示すようにメモリの二重化が設定されている。このとき、同一のＣＰＵ３に接続された２つのＤＩＭＭ５の対が形成され、二重化が行なわれる。例えば、正常時には、例えば、ＤＩＭＭ５−０００とＤＩＭＭ５−０１０とが、ＤＩＭＭ５−００１とＤＩＭＭ５−０１１とが、ＤＩＭＭ５−００２とＤＩＭＭ５−０１２とが、それぞれ二重化され、１つのＤＩＭＭとして機能する。また、ＤＩＭＭ５−１００とＤＩＭＭ５−１１０とが、ＤＩＭＭ５−１０１とＤＩＭＭ５−１１１とが、ＤＩＭＭ５−１０２とＤＩＭＭ５−１１２とが、それぞれ二重化され、１つのＤＩＭＭとして機能する。
【００９５】
このマルチプロセッサ情報処理システム１における実効メモリ容量は、搭載総メモリ容量の１／２（すなわち、ＤＩＭＭ６枚分）である。
メモリ二重化指定テーブル１７とＣＰＵ／メモリ構成テーブル１９とは、セルフテスト（ＰＯＳＴ）の実行後にＢＩＯＳフラッシュ１１に格納されると共に、各ＣＰＵ３のメモリコントローラ１５にもコピーが格納される。
【００９６】
ここで、図１２に示す例においてＣＰＵ３−１が故障する場合を考える。ＣＰＵ３−１の故障時にＯＳが停止するので、自動再起動（ＡＳＲ＆Ｒ）機能により、一定時間後に情報処理システム１が自動的に再起動される。
ＣＰＵ３−１の固定故障（固定配線の故障など）の場合には、情報処理システム１の再起動後に実行されるＰＯＳＴにおいても、ＣＰＵ３−１の同じ故障が検出され、図１５に示すように、ＣＰＵ縮退部１３５はＣＰＵ３−１を切り離す（縮退させる）。
【００９７】
その際、二重化判定部１３７は、情報処理システム１の起動中にメモリ二重化指定テーブル１７を参照して、ＣＰＵ縮退時のメモリ二重化解除フラグ３３に値「１」が設定されているかを判定する。このフラグに値「１」が設定されている場合、メモリの二重化を解除するために、二重化解除部１４１は、ＣＰＵ／メモリ構成テーブル１９のメモリ二重化フラグ４７の値を、図１６に示すように修正する。詳細には、ＣＰＵ０のメモリ二重化フラグ４７の値を「１」から「０」に変更する。
【００９８】
そして、マルチプロセッサ情報処理システム１が、図１７に示す状態で起動される。詳細には、ＤＩＭＭ５−０００〜０１２のメモリの二重化（メモリミラー）が解除され、メモリの実効容量がＤＩＭＭ６枚分となり、ＣＰＵ縮退前の実効容量（ＤＩＭＭ６枚）と等しくなる。
次に、図１８〜図２３を参照して、４ＣＰＵ構成の場合について説明する。
【００９９】
図１８は、４ＣＰＵ構成のマルチプロセッサ情報処理システム１の正常動作時の模式構成図である。図１９は、図１８の状態でのメモリ二重化指定テーブル１７の例を、図２０は、ＣＰＵ／メモリ構成テーブル１９の例を示す。
このマルチプロセッサ情報処理システム１においては、ＢＩＯＳフラッシュ１１に記憶されている図１９のメモリ二重化指定テーブル１７のメモリ二重化フラグ３１に値「１」が設定されている。このため、図２０のＣＰＵ／メモリ構成テーブル１９に登録されているＤＩＭＭ５の間で、図１８に示すようにメモリの二重化が設定されている。そして、正常時には、例えば、ＤＩＭＭ５−０００とＤＩＭＭ５−０１０とが、ＤＩＭＭ５−００１とＤＩＭＭ５−０１１とが、ＤＩＭＭ５−００２とＤＩＭＭ５−０１２とが、それぞれ二重化され、１つのＤＩＭＭとして機能する。また、ＤＩＭＭ５−１００とＤＩＭＭ５−１１０とが、ＤＩＭＭ５−１０１とＤＩＭＭ５−１１１とが、ＤＩＭＭ５−１０２とＤＩＭＭ５−１１２とが、それぞれ二重化され、１つのＤＩＭＭとして機能する。また、ＤＩＭＭ５−２００とＤＩＭＭ５−２１０とが、ＤＩＭＭ５−２０１とＤＩＭＭ５−２１１とが、ＤＩＭＭ５−２０２とＤＩＭＭ５−２１２とが、それぞれ二重化され、１つのＤＩＭＭとして機能する。また、ＤＩＭＭ５−３００とＤＩＭＭ５−３１０とが、ＤＩＭＭ５−３０１とＤＩＭＭ５−３１１とが、ＤＩＭＭ５−３０２とＤＩＭＭ５−３１２とが、それぞれ二重化され、１つのＤＩＭＭとして機能する。
【０１００】
このマルチプロセッサ情報処理システム１における実効メモリ容量は、搭載総メモリ容量の１／２（すなわち、ＤＩＭＭ１２枚分）である。
メモリ二重化指定テーブル１７とＣＰＵ／メモリ構成テーブル１９とは、セルフテスト（ＰＯＳＴ）の実行後にＢＩＯＳフラッシュ１１に格納されると共に、各ＣＰＵ３のメモリコントローラ１５にもコピーが格納される。
【０１０１】
ここで、図１８に示す例においてＣＰＵ３−３が故障する場合を考える。ＣＰＵ３−３の故障時にＯＳが停止するので、ＡＳＲ＆Ｒ機能により、一定時間後に情報処理システム１が自動的に再起動される。
ＣＰＵ３−３の固定故障（固定配線の故障など）の場合には、情報処理システム１の再起動後に実行されるＰＯＳＴにおいても、ＣＰＵ３−３の同じ故障が検出され、図２１に示すように、ＣＰＵ縮退部１３５はＣＰＵ３−３を切り離す（縮退させる）。
【０１０２】
その際、二重化判定部１３７は、情報処理システム１の起動中にメモリ二重化指定テーブル１７を参照して、ＣＰＵ縮退時のメモリ二重化解除フラグ３３に値「１」が設定されているかを判定する。このフラグに値「１」が設定されている場合、メモリの二重化を解除するために、二重化解除部１４１は、ＣＰＵ／メモリ構成テーブル１９のメモリ二重化フラグ４７の値のメモリ二重化フラグ４７の値を、図２２に示すように修正する。詳細には、ＣＰＵ０、ＣＰＵ１、ＣＰＵ２のメモリ二重化フラグ４７の値を「１」から「０」に変更する。
【０１０３】
しかし、縮退前の構成と比較すると、メモリの二重化が解除されたため、ＣＰＵ３−０〜３−２に接続されたＤＩＭＭ５（１８枚）の容量となり、ＣＰＵ３−３の縮退前のＤＩＭＭ１２枚よりも実効メモリ容量が増加してしまう。
そこで、メモリ容量調整判定部１４３は、メモリ二重化指定テーブル１７のメモリ二重化解除後の容量調整フラグ３５に値「１」が設定されているかを判定する。このフラグに値「１」が設定されている場合、使用メモリ削減部１４７は、縮退前の二重化された実効メモリ容量と縮退後の二重化を解除したメモリ容量とが近づくように、ＤＩＭＭ５の一部を縮退させる。
【０１０４】
例えば、使用メモリ削減部１４７は、最若番のＣＰＵ３から順に、番号が最大のＤＩＭＭ５、次にこれとミラーを形成していたＤＩＭＭ５、番号が次に大きなＤＩＭＭ５…の順で、ＤＩＭＭ５を縮退させる。例えば、使用メモリ削減部１４７は、ＣＰＵ３−０の５−０１２、ＣＰＵ３−１のＤＩＭＭ５−１１２、ＣＰＵ３−２のＤＩＭＭ５−２１２を選択する。次に、これらとミラーを形成していたＣＰＵ３−０のＤＩＭＭ５−００２、ＣＰＵ３−１の５−ＤＩＭＭ１０２、ＣＰＵ３−２のＤＩＭＭ５−２０２を選択する。そして、使用メモリ削減部１４７は、図２２に示すように、ＤＩＭＭ５−０１２、５−１０２、５−１１２、５−２０２、５−２１２の対応する使用フラグ４９の値を「１」から「０」に変更する。
【０１０５】
この例では、マルチプロセッサ情報処理システム１が、図２３に示す状態で起動される。詳細には、ＤＩＭＭ５−０００〜３１２のメモリの二重化（メモリミラー）が解除されると共に、ＤＩＭＭ５−００２、５−０１２、５−１０２、５−１１２、５−２０２、５−２１２が縮退される。つまり、ＣＰＵ０〜２に接続されたＤＩＭＭ５のうち、各２枚づつ、計６枚の使用を無効に設定する。
【０１０６】
このように使用を制限することで、メモリの実効容量がＤＩＭＭ１２枚分となり、ＣＰＵ縮退前の実効容量（ＤＩＭＭ１２枚）と等しくなる。
このように搭載されている個々のＤＩＭＭ５の有効／無効を指定することによって、メモリの実効容量を縮退前の容量と一致させることができる。
このように、上述の実施形態の一例においては、ＣＰＵ３の縮退によりＤＩＭＭ５も縮退されてしまった場合にも、メモリの二重化を解除して、利用可能なメモリ容量を増やすことができる。
【０１０７】
また、メモリの二重化を解除することにより、メモリの実効容量を、ＣＰＵ故障前のメモリ容量に近づけることができる。
また、情報処理システム１において利用可能なメモリ容量をＣＰＵ３の縮退の前後、あるいはＣＰＵ３の縮退からの復旧の前後で大幅に変化しないようにできるため、アプリケーションの動作を継続させ、性能を維持することが可能となる。
［Ｃ．その他］
上記の実施形態の例においては、情報処理システム１のＢＭＣ１３またはＣＰＵ３が、情報処理プログラムを実行することにより、これらの正常性チェック実行部１３１、故障検出部１３３、ＣＰＵ縮退部１３５、二重化判定部１３７、二重化解除判定部１３９、二重化解除部１４１、メモリ容量調整判定部１４３、メモリ容量算出部１４５、および使用メモリ削減部１４７として機能するようになっている。
【０１０８】
なお、これらの正常性チェック実行部１３１、故障検出部１３３、ＣＰＵ縮退部１３５、二重化判定部１３７、二重化解除判定部１３９、二重化解除部１４１、メモリ容量調整判定部１４３、メモリ容量算出部１４５、および使用メモリ削減部１４７としての機能を実現するためのプログラム（情報処理プログラム）は、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ等），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ  ＤＶＤ等），ブルーレイディスク，磁気ディスク，光ディスク，光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供するようにしてもよい。
【０１０９】
正常性チェック実行部１３１、故障検出部１３３、ＣＰＵ縮退部１３５、二重化判定部１３７、二重化解除判定部１３９、二重化解除部１４１、メモリ容量調整判定部１４３、メモリ容量算出部１４５、および使用メモリ削減部１４７としての機能を実現する際には、内部記憶装置（ＢＩＯＳフラッシュ１１やＲＯＭ）に格納されたプログラムがコンピュータのプロセッサ（本実施形態では情報処理システム１のＢＭＣ１３やＣＰＵ３）によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行するようにしてもよい。
【０１１０】
なお、本実施形態において、コンピュータとは、ハードウェアとオペレーティングシステムとを含む概念であり、オペレーティングシステムの制御の下で動作するハードウェアを意味している。又、オペレーティングシステムが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウェアは、少なくとも、ＣＰＵ等のプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取るための手段とをそなえており、本実施形態においては、情報処理システム１がコンピュータとしての機能を有しているのである。
【０１１１】
本開示の一実施形態について説明したが、開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。
例えば、上記の実施形態の例においては、上記の実施形態を、２ＣＰＵ構成または４ＣＰＵ構成の情報処理システムを例に採り上げて説明したが、ＣＰＵの個数は、２以上であれば任意の数でもよい。しかし、ＣＰＵの個数は一般的には２の倍数（すなわち、２のべき乗）であることが一般的であるが、どのような数でもよい。
【０１１２】
また、上記の実施形態の例においては、メモリがＤＩＭＭである場合を例に採り上げて説明したが、メモリは、二重化が可能なものであれば、ＤＩＭＭ以外のどのようなメモリであってもよい。
また、上記の実施形態の例においては、ＤＩＭＭの容量が全て等しい場合について説明したが、上記の実施形態は、ＤＩＭＭの容量が異なるシステムにも適用することができる。
【０１１３】
また、上記の実施形態の例においては、使用メモリ削減部１４７が、最若番のＣＰＵから順に、番号が最大のＤＩＭＭとこれとミラーを形成していたＤＩＭＭ…順で、ＤＩＭＭを縮退させたが、別の選択アルゴリズムを使用して、縮退するＤＩＭＭを選択してもよい。
また、上記の実施形態の例においては、ＣＰＵの構成とメモリの構成とを１つのＣＰＵ／メモリ構成テーブル１９にて管理しているが、ＣＰＵ構成テーブルとメモリ構成テーブルとを別個に備えてもよい。
【０１１４】
更に、上記の実施形態の例においては、冗長化の一例として、メモリの二重化（メモリミラー）を例に採り上げて説明したが、上記の手法は、他のどのような冗長化方式にも適用することができる。
【符号の説明】
【０１１５】
１      マルチプロセッサ情報処理システム（情報処理装置）
３      ＣＰＵ（処理部）
５      ＤＩＭＭ（メモリ）
３３    ＣＰＵ縮退時メモリ二重化解除フラグ（冗長化解除情報）
３５    メモリ二重化解除時の容量調整フラグ（容量調整情報）
１３１  正常性チェック実行部（正常性チェック部）
１３３  故障検出部（故障検出部）
１３５  ＣＰＵ縮退部（縮退部）
１３７  二重化判定部（冗長化判定部）
１３９  二重化解除判定部（冗長化解除判定部）
１４１  二重化解除部（冗長化解除部）
１４３  メモリ容量調整判定部（容量調整判定部）
１４５  メモリ容量算出部（容量算出部）
１４７  使用メモリ削減部（調整部）
【図１】
2013069136.tif 000003
【図２】
2013069136.tif 000004
【図３】
2013069136.tif 000005
【図４】
2013069136.tif 000006
【図５】
2013069136.tif 000007
【図６】
2013069136.tif 000008
【図７】
2013069136.tif 000009
【図８】
2013069136.tif 000010
【図９】
2013069136.tif 000011
【図１０】
2013069136.tif 000012
【図１１】
2013069136.tif 000013
【図１２】
2013069136.tif 000014
【図１３】
2013069136.tif 000015
【図１４】
2013069136.tif 000016
【図１５】
2013069136.tif 000017
【図１６】
2013069136.tif 000018
【図１７】
2013069136.tif 000019
【図１８】
2013069136.tif 000020
【図１９】
2013069136.tif 000021
【図２０】
2013069136.tif 000022
【図２１】
2013069136.tif 000023
【図２２】
2013069136.tif 000024
【図２３】
2013069136.tif 000025
【手続補正書】
【提出日】平成26年6月11日(2014.6.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
情報処理装置であって、
それぞれ複数のメモリと、前記複数のメモリを管理するメモリコントローラとを備える複数の処理部と、
前記情報処理装置の起動の際に、前記複数の処理部の正常性をチェックする正常性チェック部と、
前記正常性チェック部によるチェック結果に基づいて、前記複数の処理部のうち故障している処理部を検出する故障検出部と、
前記故障している処理部を縮退させる縮退部と、
前記複数のメモリが、該複数のメモリを組み合わせた冗長構成で使用されているか否かを判定する冗長化判定部と、
前記冗長化判定部によって前記複数のメモリが前記冗長構成で使用されていると判定された場合に、前記複数のメモリの前記冗長構成を解除するか否かを判定する冗長化解除判定部と、
冗長化解除判定部によって前記複数のメモリの前記冗長構成を解除すると判定された場合に、前記複数の処理部のうちの正常な処理部の前記複数のメモリの前記冗長構成を解除する冗長化解除部と、を有する
ことを特徴とする情報処理装置。
【請求項２】
前記冗長化解除判定部は、前記複数のメモリの前記冗長構成を解除するか否かを指定する冗長化解除情報に基づいて前記判定を行なうことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
メモリ容量の調整を行なうか否かを判定する容量調整判定部と、
前記容量調整判定部によって前記メモリ容量の調整を行なうと判定された場合に、前記処理部の縮退前の前記冗長構成において利用可能な実効メモリ容量と、前記処理部の縮退後に利用可能なメモリ容量とを算出するメモリ容量算出部と、
前記処理部の縮退前の前記冗長構成において利用可能な前記実効メモリ容量に近くなるように、前記処理部の縮退後に利用可能な前記メモリ容量を調整する調整部と、
を更に有することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記容量調整判定部は、前記メモリ容量の調整を行なうか否かを指定する容量調整情報に基づいて前記判定を行なうことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記調整部は、前記複数のメモリの一部を使用不可に設定することにより利用可能なメモリ容量を削減することを特徴とする請求項３または４のいずれか１項に記載の情報処理装置。
【請求項６】
それぞれ複数のメモリと、前記複数のメモリを管理するメモリコントローラとを備える複数の処理部を有する情報処理装置における情報処理方法であって、
前記情報処理装置の起動の際に、前記複数の処理部の正常性をチェックし、
前記チェックに基づいて、前記複数の処理部のうち故障している処理部を検出し、
前記故障している処理部を縮退させ、
前記複数のメモリが、該複数のメモリを組み合わせた冗長構成で使用されているか否かを判定し、
前記複数のメモリが前記冗長構成で使用されていると判定された場合に、前記複数のメモリの前記冗長構成を解除するか否かを判定し、
前記複数のメモリの前記冗長構成を解除すると判定された場合に、前記複数の処理部のうちの正常な処理部の前記複数のメモリの前記冗長構成を解除する
ことを特徴とする情報処理方法。
【請求項７】
それぞれ複数のメモリと、前記複数のメモリを管理するメモリコントローラとを備える複数の処理部を有する情報処理装置において実行されたときに、前記情報処理装置を、
前記情報処理装置の起動の際に、前記複数の処理部の正常性をチェックする正常性チェック部と、
前記正常性チェック部によるチェック結果に基づいて、前記複数の処理部のうち故障している処理部を検出する故障検出部と、
前記故障している処理部を縮退させる縮退部と、
前記複数のメモリが、該複数のメモリを組み合わせた冗長構成で使用されているか否かを判定する冗長化判定部と、
前記冗長化判定部によって前記複数のメモリが前記冗長構成で使用されていると判定された場合に、前記複数のメモリの前記冗長構成を解除するか否かを判定する冗長化解除判定部と、
冗長化解除判定部によって前記複数のメモリの前記冗長構成を解除すると判定された場合に、前記複数の処理部のうちの正常な処理部の前記複数のメモリの前記冗長構成を解除する冗長化解除部と、
して機能させることを特徴とする情報処理プログラム。
【請求項８】
それぞれ複数のメモリと、前記複数のメモリを管理するメモリコントローラとを備える複数の処理部を有する情報処理装置において、前記情報処理装置を、
前記情報処理装置の起動の際に、前記複数の処理部の正常性をチェックする正常性チェック部と、
前記正常性チェック部によるチェック結果に基づいて、前記複数の処理部のうち故障している処理部を検出する故障検出部と、
前記故障している処理部を縮退させる縮退部と、
前記複数のメモリが、該複数のメモリを組み合わせた冗長構成で使用されているか否かを判定する冗長化判定部と、
前記冗長化判定部によって前記複数のメモリが前記冗長構成で使用されていると判定された場合に、前記複数のメモリの前記冗長構成を解除するか否かを判定する冗長化解除判定部と、
冗長化解除判定部によって前記複数のメモリの前記冗長構成を解除すると判定された場合に、前記複数の処理部のうちの正常な処理部の前記複数のメモリの前記冗長構成を解除する冗長化解除部と、
して機能させる情報処理プログラムを記録したことを特徴とするコンピュータ読取可能な記録媒体。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１１４
【補正方法】変更
【補正の内容】
【０１１４】
更に、上記の実施形態の例においては、冗長化の一例として、メモリの二重化（メモリミラー）を例に採り上げて説明したが、上記の手法は、他のどのような冗長化方式にも適用することができる。
［Ｄ．付記］
以上の実施形態に関し、さらに以下の付記を開示する。
（付記１）
情報処理装置であって、
それぞれ複数のメモリと、前記複数のメモリを管理するメモリコントローラとを備える複数の処理部と、
前記情報処理装置の起動の際に、前記複数の処理部の正常性をチェックする正常性チェック部と、
前記正常性チェック部によるチェック結果に基づいて、前記複数の処理部のうち故障している処理部を検出する故障検出部と、
前記故障している処理部を縮退させる縮退部と、
前記複数のメモリが、該複数のメモリを組み合わせた冗長構成で使用されているか否かを判定する冗長化判定部と、
前記冗長化判定部によって前記複数のメモリが前記冗長構成で使用されていると判定された場合に、前記複数のメモリの前記冗長構成を解除するか否かを判定する冗長化解除判定部と、
冗長化解除判定部によって前記複数のメモリの前記冗長構成を解除すると判定された場合に、前記複数の処理部のうちの正常な処理部の前記複数のメモリの前記冗長構成を解除する冗長化解除部と、を有する
ことを特徴とする情報処理装置。
（付記２）
前記冗長化解除判定部は、前記複数のメモリの前記冗長構成を解除するか否かを指定する冗長化解除情報に基づいて前記判定を行なうことを特徴とする付記１に記載の情報処理装置。
（付記３）
メモリ容量の調整を行なうか否かを判定する容量調整判定部と、
前記容量調整判定部によって前記メモリ容量の調整を行なうと判定された場合に、前記処理部の縮退前の前記冗長構成において利用可能な実効メモリ容量と、前記処理部の縮退後に利用可能なメモリ容量とを算出するメモリ容量算出部と、
前記処理部の縮退前の前記冗長構成において利用可能な前記実効メモリ容量に近くなるように、前記処理部の縮退後に利用可能な前記メモリ容量を調整する調整部と、
を更に有することを特徴とする付記１または２に記載の情報処理装置。
（付記４）
前記容量調整判定部は、前記メモリ容量の調整を行なうか否かを指定する容量調整情報に基づいて前記判定を行なうことを特徴とする付記３に記載の情報処理装置。
（付記５）
前記調整部は、前記複数のメモリの一部を使用不可に設定することにより利用可能なメモリ容量を削減することを特徴とする付記３または４のいずれか１項に記載の情報処理装置。
（付記６）
それぞれ複数のメモリと、前記複数のメモリを管理するメモリコントローラとを備える複数の処理部を有する情報処理装置における情報処理方法であって、
前記情報処理装置の起動の際に、前記複数の処理部の正常性をチェックし、
前記チェックに基づいて、前記複数の処理部のうち故障している処理部を検出し、
前記故障している処理部を縮退させ、
前記複数のメモリが、該複数のメモリを組み合わせた冗長構成で使用されているか否かを判定し、
前記複数のメモリが前記冗長構成で使用されていると判定された場合に、前記複数のメモリの前記冗長構成を解除するか否かを判定し、
前記複数のメモリの前記冗長構成を解除すると判定された場合に、前記複数の処理部のうちの正常な処理部の前記複数のメモリの前記冗長構成を解除する
ことを特徴とする情報処理方法。
（付記７）
前記複数のメモリの前記冗長構成を解除するか否かの判定は、前記複数のメモリの前記冗長構成を解除するか否かを指定する冗長化解除情報に基づいて行なうことを特徴とする付記６に記載の情報処理方法。
（付記８）
メモリ容量の調整を行なうか否かを判定し、
前記メモリ容量の調整を行なうと判定された場合に、前記処理部の縮退前の前記冗長構成において利用可能な実効メモリ容量と、前記処理部の縮退後に利用可能なメモリ容量とを算出し、
前記処理部の縮退前の前記冗長構成において利用可能な前記実効メモリ容量に近くなるように、前記処理部の縮退後に利用可能な前記メモリ容量を調整する
ことを特徴とする付記６または７に記載の情報処理方法。
（付記９）
前記容量調整を行なうか否かの判定は、前記メモリ容量の調整を行なうか否かを指定する容量調整情報に基づいて行なうことを特徴とする付記８に記載の情報処理方法。
（付記１０）
前記メモリ容量の調整は、前記複数のメモリの一部を使用不可に設定することにより利用可能なメモリ容量を削減することを特徴とする付記８または９のいずれか１項に記載の情報処理方法。
（付記１１）
それぞれ複数のメモリと、前記複数のメモリを管理するメモリコントローラとを備える複数の処理部を有する情報処理装置において実行されたときに、前記情報処理装置を、
前記情報処理装置の起動の際に、前記複数の処理部の正常性をチェックする正常性チェック部と、
前記正常性チェック部によるチェック結果に基づいて、前記複数の処理部のうち故障している処理部を検出する故障検出部と、
前記故障している処理部を縮退させる縮退部と、
前記複数のメモリが、該複数のメモリを組み合わせた冗長構成で使用されているか否かを判定する冗長化判定部と、
前記冗長化判定部によって前記複数のメモリが前記冗長構成で使用されていると判定された場合に、前記複数のメモリの前記冗長構成を解除するか否かを判定する冗長化解除判定部と、
冗長化解除判定部によって前記複数のメモリの前記冗長構成を解除すると判定された場合に、前記複数の処理部のうちの正常な処理部の前記複数のメモリの前記冗長構成を解除する冗長化解除部と、
して機能させることを特徴とする情報処理プログラム。
（付記１２）
前記冗長化解除判定部は、前記複数のメモリの前記冗長構成を解除するか否かを指定する冗長化解除情報に基づいて前記判定を行なうことを特徴とする付記１１に記載の情報処理プログラム。
（付記１３）
前記情報処理装置において実行されたときに、前記情報処理装置を、
メモリ容量の調整を行なうか否かを判定する容量調整判定部と、
前記容量調整判定部によって前記メモリ容量の調整を行なうと判定された場合に、前記処理部の縮退前の前記冗長構成において利用可能な実効メモリ容量と、前記処理部の縮退後に利用可能なメモリ容量とを算出するメモリ容量算出部と、
前記処理部の縮退前の前記冗長構成において利用可能な前記実効メモリ容量に近くなるように、前記処理部の縮退後に利用可能な前記メモリ容量を調整する調整部と、
して更に機能させることを特徴とする付記１１または１２に記載の情報処理プログラム。
（付記１４）
前記容量調整判定部は、前記メモリ容量の調整を行なうか否かを指定する容量調整情報に基づいて前記判定を行なうことを特徴とする付記１３に記載の情報処理プログラム。
（付記１５）
前記調整部は、前記複数のメモリの一部を使用不可に設定することにより利用可能なメモリ容量を削減することを特徴とする付記１３または１４のいずれか１項に記載の情報処理プログラム。
（付記１６）
それぞれ複数のメモリと、前記複数のメモリを管理するメモリコントローラとを備える複数の処理部を有する情報処理装置において、前記情報処理装置を、
前記情報処理装置の起動の際に、前記複数の処理部の正常性をチェックする正常性チェック部と、
前記正常性チェック部によるチェック結果に基づいて、前記複数の処理部のうち故障している処理部を検出する故障検出部と、
前記故障している処理部を縮退させる縮退部と、
前記複数のメモリが、該複数のメモリを組み合わせた冗長構成で使用されているか否かを判定する冗長化判定部と、
前記冗長化判定部によって前記複数のメモリが前記冗長構成で使用されていると判定された場合に、前記複数のメモリの前記冗長構成を解除するか否かを判定する冗長化解除判定部と、
冗長化解除判定部によって前記複数のメモリの前記冗長構成を解除すると判定された場合に、前記複数の処理部のうちの正常な処理部の前記複数のメモリの前記冗長構成を解除する冗長化解除部と、
して機能させる情報処理プログラムを記録したことを特徴とするコンピュータ読取可能な記録媒体。
（付記１７）
前記冗長化解除判定部は、前記複数のメモリの前記冗長構成を解除するか否かを指定する冗長化解除情報に基づいて前記判定を行なうことを特徴とする付記１６に記載のコンピュータ読取可能な記録媒体。
（付記１８）
前記情報処理プログラムは、前記情報処理装置を、
メモリ容量の調整を行なうか否かを判定する容量調整判定部と、
前記容量調整判定部によって前記メモリ容量の調整を行なうと判定された場合に、前記処理部の縮退前の前記冗長構成において利用可能な実効メモリ容量と、前記処理部の縮退後に利用可能なメモリ容量とを算出するメモリ容量算出部と、
前記処理部の縮退前の前記冗長構成において利用可能な前記実効メモリ容量に近くなるように、前記処理部の縮退後に利用可能な前記メモリ容量を調整する調整部と、
して更に機能させることを特徴とする付記１６または１７に記載のコンピュータ読取可能な記録媒体。
（付記１９）
前記容量調整判定部は、前記メモリ容量の調整を行なうか否かを指定する容量調整情報に基づいて前記判定を行なうことを特徴とする付記１８に記載のコンピュータ読取可能な記録媒体。
（付記２０）
前記調整部は、前記複数のメモリの一部を使用不可に設定することにより利用可能なメモリ容量を削減することを特徴とする付記１８または１９のいずれか１項に記載のコンピュータ読取可能な記録媒体。
【国際調査報告】
2013069136.tif 000026
2013069136.tif 000027
2013069136.tif 000028
2013069136.tif 000029