(57)【要約】【課題】起動時に装置内の障害を検出するプログラムの処理を高速化することおよび装置内の障害を検出する可能性を高めることができる情報処理装置を提供する。【解決手段】情報処理装置を、演算処理装置と、主記憶装置と、主記憶装置の診断および演算処理装置によってアクセスされる装置の診断を実行するためのプログラムを記憶する補助記憶装置と、を備え、演算処理装置は、補助記憶装置に格納されたプログラムを実行することにより、主記憶装置の診断後に、プログラムを主記憶装置で実行できるか否かを判断し、プログラムを主記憶装置で実行できる場合には、主記憶装置上でプログラムを実行し、プログラムを主記憶装置で実行できない場合には、補助記憶装置上でプログラムを実行する情報処理装置とする。【選択図】図４
2017122997.tif 000002
【特許請求の範囲】
【請求項１】
演算処理装置と、
主記憶装置と、
前記主記憶装置の診断および前記演算処理装置によってアクセスされる装置の診断を実行するためのプログラムを記憶する補助記憶装置と、
を備え、
前記演算処理装置は、前記補助記憶装置に記憶された前記プログラムを実行することにより、前記主記憶装置の診断後に、前記プログラムを前記主記憶装置で実行できるか否かを判断し、前記プログラムを前記主記憶装置で実行できる場合には、前記主記憶装置上で前記プログラムを実行し、前記プログラムを前記主記憶装置で実行できない場合には、前記補助記憶装置上で前記プログラムを実行する
情報処理装置。
【請求項２】
前記演算処理装置と接続されるインターフェース回路をさらに備え、
前記主記憶装置は前記演算処理装置の内部の制御回路に接続され、
前記補助記憶装置は、前記インターフェース回路を介して前記制御回路に接続される
請求項１に記載の情報処理装置。
【請求項３】
前記主記憶装置は複数の記憶領域を有し、
前記演算処理装置は、前記複数の記憶領域の少なくとも１つの記憶領域に前記プログラムを格納可能である場合に、前記プログラムを前記主記憶装置で実行できると判断し、前記プログラムを前記少なくとも１つの記憶領域に転送する、請求項１または２に記載の情報処理装置。
【請求項４】
前記演算処理装置は、前記主記憶装置の前記複数の記憶領域のうち物理的に連続した複数の記憶領域に前記プログラムを格納可能である場合に、前記プログラムを前記主記憶装置で実行できると判断し、前記プログラムを前記物理的に連続した複数の記憶領域に転送する、請求項１から３のいずれか１項に記載の情報処理装置。
【請求項５】
演算処理装置に、
補助記憶装置に記憶された主記憶装置の診断および前記演算処理装置によってアクセスされる装置の診断を実行するためのプログラムを実行させ、
前記主記憶装置の診断後に、前記プログラムを前記主記憶装置で実行できるか否かを判断させ、
前記プログラムを前記主記憶装置で実行できる場合には、前記主記憶装置上で前記プログラムを実行させ、前記プログラムを前記主記憶装置で実行できない場合には、前記補助記憶装置上で前記プログラムを実行させる
演算処理装置の制御方法。
【請求項６】
演算処理装置に、
補助記憶装置に記憶された主記憶装置の診断および演算処理装置によってアクセスされる装置の診断を実行するためのプログラムを実行する処理と、
前記主記憶装置の診断後に、前記プログラムを前記主記憶装置で実行できるか否かを判断する処理と、
前記プログラムを前記主記憶装置で実行できる場合には、前記主記憶装置上で前記プログラムを実行し、前記プログラムを前記主記憶装置で実行できない場合には、前記補助記憶装置上で前記プログラムを実行する処理
を実行させる演算処理装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本件開示の技術は、情報処理装置、演算処理装置の制御方法および演算処理装置の制御プログラムに関する。
【背景技術】
【０００２】
コンピュータでは、Central Processing Unit（ＣＰＵ）によって、コンピュータの起
動時にPower On Self-Test（ＰＯＳＴ）と呼ばれる、コンピュータ内のハードウェアの初期化および診断を行うプログラムが実行される。
【０００３】
ＰＯＳＴの命令コードはコンピュータの補助記憶装置であるRead Only Memory（ＲＯＭ）にあらかじめ格納されており、コンピュータの電源が投入されると、ＣＰＵによってＲＯＭに格納されているＰＯＳＴの命令コードの実行が開始される。そして、ＲＯＭ上の命令コードが実行されることでＰＯＳＴの処理が実行される（例えば、特許文献１、２）。
【０００４】
あるいは、ＰＯＳＴによる主記憶装置の診断が正常に終了して主記憶装置が使用可能になった段階で、ＰＯＳＴによってＰＯＳＴの命令コードがＲＯＭから主記憶装置に転送される場合もある。この場合、命令コードが主記憶装置に転送された後は、主記憶装置上の命令コードが実行されることでＰＯＳＴの処理が実行される。また、ＰＯＳＴによる主記憶装置の診断が異常終了した場合は、ＰＯＳＴによりコンピュータが停止される（例えば、特許文献３）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−０９６０１２号公報
【特許文献２】特開平７−１６８７６８号公報
【特許文献３】特開平５−２６５７６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
コンピュータの電源投入からユーザが利用可能になるまでの期間を短縮する上では、ＰＯＳＴの処理を高速化することが望ましい。また、多数のコンピュータが相互に接続されている大規模システムの運用においては、コンピュータの安定した稼動と停止時間の短縮が重要である。このような高信頼性を要求するシステムでは、コンピュータの起動時にコンピュータ内のハードウェア故障をできるだけ多く検出し、検出結果を保守交換の実施や予防保守の判断材料とすることが望まれる。
【０００７】
しかしながら、上記の技術を用いてＰＯＳＴの処理をＲＯＭ上の命令実行で行う場合、ＰＯＳＴの処理を高速化することが難しい。また、上記の技術を用いて主記憶装置が正常に使用可能になった段階でＰＯＳＴの命令コードがＲＯＭから主記憶装置に転送される場合、主記憶装置の診断が異常終了すると後続の診断が実施されない。この結果、後続の診断の対称であるハードウェアに故障が発生している場合、当該故障が検出されないままコンピュータが停止される。
【０００８】
本件開示の技術は、上記の事情に鑑み、起動時に装置内の障害を検出するプログラムの処理を高速化することおよび装置内の障害を検出する可能性を高めることができる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本件開示の情報処理装置は、１つの側面では、演算処理装置と、主記憶装置と、主記憶装置の診断および演算処理装置によってアクセスされる装置の診断を実行するためのプログラムを記憶する補助記憶装置と、を備え、演算処理装置は、補助記憶装置に記憶されたプログラムを実行することにより、主記憶装置の診断後に、プログラムを主記憶装置で実行できるか否かを判断し、プログラムを主記憶装置で実行できる場合には、主記憶装置上でプログラムを実行し、プログラムを主記憶装置で実行できない場合には、補助記憶装置上でプログラムを実行する。
【発明の効果】
【００１０】
本件開示の技術によれば、起動時に装置内の障害を検出するプログラムの処理を高速化することおよび装置内の障害を検出する可能性を高めることができる情報処理装置を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、一実施形態におけるコンピュータの構成を例示する構成図である。
【図２】図２は、一実施形態においてコンピュータにおいて実行される処理のフローチャートである。
【図３】図３は、一実施形態においてコンピュータにおいて実行される処理のフローチャートである。
【図４】図４は、一実施形態においてコンピュータにおいて実行される処理のフローチャートである。
【図５】図５は、一実施形態におけるコンピュータの構成を例示する構成図である。
【図６】図６は、一実施形態におけるメモリ診断結果の管理テーブルを例示する図である。
【発明を実施するための形態】
【００１２】
以下、本件開示の技術に係る実施形態について図面を参照しながら説明する。なお、以下の詳細な説明は例示的なものであり、実施形態の構成を限定するものではない。
【００１３】
（第１の実施形態）
第１の実施形態における情報処理装置の一例としてのコンピュータ１について説明する。図１の構成図に例示するように、本実施形態に係るコンピュータ１は、ＣＰＵ＃０  １０、ＣＰＵ＃１  ２０、ＣＰＵ＃２  ３０、ＣＰＵ＃３  ４０、メモリコントローラ＃０
１１、メモリコントローラ＃１  ２１、メモリコントローラ＃２  ３１、メモリコントローラ＃３  ４１、Dual Inline Memory Module（ＤＩＭＭ）＃０  １２、ＤＩＭＭ＃１
２２、ＤＩＭＭ＃２  ３２、ＤＩＭＭ＃３  ４２、Input/Output（Ｉ／Ｏ）ハブ５０を有する。なお、ＣＰＵ＃０  １０、ＣＰＵ＃１  ２０、ＣＰＵ＃２  ３０、ＣＰＵ＃３  ４０が、演算処理装置の一例に相当する。また、メモリコントローラ＃０  １１とメモリコントローラ＃０  １１に接続されているＤＩＭＭ＃０  １２の組み合わせが、主記憶装置の一例に相当する。
【００１４】
Ｉ／Ｏハブ５０は、コンピュータ１内の各ハードウェアと主記憶装置とを接続する。すなわち、図１の例では、ＣＰＵ＃０は、ＤＩＭＭ＃０と直接接続される。ここで、直接接続とは、例えば、ＣＰＵ＃０内部の制御回路にＤＩＭＭ＃０が接続されることをいう。一方、ＣＰＵ＃０は、インターコネクトおよびＣＰＵ＃１からＣＰＵ＃３などを介して、ＣＰＵ＃１からＣＰＵ＃３などにそれぞれ直接接続されるＤＩＭＭ＃１からＤＩＭＭ＃３などに接続される。逆に、ＣＰＵ＃１からＣＰＵ＃３などに対してはインターコネクトおよびＣＰＵ＃０を介してＤＩＭＭ＃０に接続される。また、ＣＰＵ＃０からＣＰＵ＃３など
に対しては、インターコネクトにより、Ｉ／Ｏハブ５０に接続され、Ｉ／Ｏハブ５０を介してＲＯＭ８０およびＳＲＡＭ９０に接続される。
【００１５】
したがって、ハードウェアの一例としては、図１に示すように、Hard Dick Drive（Ｈ
ＤＤ）６０、７０、ＲＯＭ８０、Static Random Access Memory（ＳＲＡＭ）９０が挙げ
られる。Ｉ／Ｏハブ５０はPeripheral Component Interconnect（ＰＣＩ）ルートポート
５１を有し、ＰＣＩルートポート５１とＨＤＤコントローラ１００とが接続される。Ｉ／Ｏハブ５０とＨＤＤ６０、７０とは、ＰＣＩルートポート５１およびＨＤＤコントローラ１００を経由して互いに接続される。
【００１６】
以上のように、本実施形態では、Ｉ／Ｏハブ５０が主記憶装置とその外部との境界の役割を果たしていると考えることができる。ＲＯＭ８０には、ＰＯＳＴの命令コードとＰＯＳＴの処理で使用される読み出しデータが記憶される。また、ＳＲＡＭ９０には、ＰＯＳＴの処理で使用される読み書きデータが記憶される。なお、ＲＯＭ８０が、補助記憶装置の一例に相当する。
【００１７】
上述のように、ＣＰＵ＃０  １０〜ＣＰＵ＃３  ４０の間と、ＣＰＵ＃０  １０〜ＣＰＵ＃３  ４０とＩ／Ｏハブ５０との間は、それぞれ専用のインターコネクトにより接続される。ＣＰＵ＃０  １０〜ＣＰＵ＃３  ４０やＩ／Ｏハブ５０に接続されているハードウェアからのＤＩＭＭ＃０  １２〜ＤＩＭＭ＃３  ４２へのアクセスは、インターコネクトを経由して行われる。ＣＰＵ＃０  １０〜ＣＰＵ＃３  ４０は、インターコネクトを経由してＩ／Ｏハブ５０からのアクセスを受け付け、アドレスバスからＤＩＭＭ＃０  １２〜ＤＩＭＭ＃３  ４２のアドレス空間にアクセスする。
【００１８】
次に、図２〜４を参照しながら、本実施形態の一例として、ＣＰＵ＃０  １０が実行する処理とＰＯＳＴの処理において使用されるデータの格納例について説明する。図２、３は、コンピュータ１が起動される場合に、起動時にコンピュータ１において実行される処理のフローチャートを例示する。なお、図２の「１」は、図３の「１」に接続する。本実施形態では、コンピュータ１の電源がオンにされると、ＣＰＵ＃０  １０が図２に示すフローチャートの処理を開始する。
【００１９】
なお、以下の説明において、「ＰＯＳＴ命令コード」は、ＰＯＳＴの処理を実行するための命令コードであり、「ＰＯＳＴ  ｒｏデータ」は、ＰＯＳＴの処理における読み出し専用のデータ、「ＰＯＳＴ  ｒｗデータ」は、ＰＯＳＴの処理における読み書き用のデータをそれぞれ意味する。
【００２０】
ＯＰ１０１において、ＣＰＵ＃０  １０は、ＲＯＭ８０に記憶されているＰＯＳＴ命令コードの実行を開始する。なお、命令コードの実行時におけるＰＯＳＴの処理の読み出し用データはＲＯＭ８０に記憶されている。また、命令コードの実行時におけるＰＯＳＴの処理の読み書き用データはＳＲＡＭ９０に記憶される。次いで、ＣＰＵ＃０  １０は、処理をＯＰ１０２に進める。
【００２１】
ＯＰ１０２において、ＣＰＵ＃０  １０は、ＲＯＭ８０上でＰＯＳＴ命令コードに従ってコンピュータ１の主記憶装置の初期化および診断を実行する。具体的には、ＣＰＵ＃０
１０は、メモリコントローラ＃０  １１〜メモリコントローラ＃３  ４１の初期化および診断を実行する。このときＣＰＵ＃０  １０は、各メモリコントローラのレジスタを初期化したり、各メモリコントローラに異常がないかを診断したりする。また、ＣＰＵ＃０
１０は、各メモリコントローラの診断後にＤＩＭＭ＃０  １２〜ＤＩＭＭ＃３  ４２の初期化および診断を実行する。なお、ＣＰＵ＃０  １０がＲＯＭ８０上のＰＯＳＴ命令コードを実行する場合のＣＰＵ＃０  １０の動作は、ＣＰＵ＃０  １０がＤＩＭＭ＃０  １
２上のＰＯＳＴ命令コードを実行する場合の動作と同様である。すなわち、ＣＰＵ＃０  １０が使用するプログラムカウンタの指すアドレスがＤＩＭＭ上のアドレスであるかＲＯＭ上のアドレスであるかの違いがあるが、その他のＣＰＵ＃０  １０の動作は上記２つの場合と同様である。
【００２２】
ここで、図４〜６を参照しながら、ＯＰ１０２においてＣＰＵ＃０  １０が実行するＤＩＭＭ＃０  １２〜ＤＩＭＭ＃３  ４２に対する初期化および診断の処理の詳細について説明する。ＯＰ１０２における処理の一例として、ＣＰＵ＃０  １０は、ＤＩＭＭ＃０  １２〜ＤＩＭＭ＃３  ４２に対する診断の結果を記憶する管理テーブルをＳＲＡＭ９０のＰＯＳＴ  ｒｗデータ領域に作成する。
【００２３】
本実施形態では、ＤＩＭＭ＃０  １２〜ＤＩＭＭ＃３  ４２の記憶領域が、それぞれ４つの管理領域に分割されて管理されているものと想定する。このため、ＳＲＡＭ９０に作成される管理テーブルでは、例えばＤＩＭＭ＃０  １２の管理領域が、ＤＩＭＭ＃０−０、ＤＩＭＭ＃０−１、ＤＩＭＭ＃０−２、ＤＩＭＭ＃０−３の４つに分かれている。なお、各管理領域のサイズは同じであると想定する。また、各ＤＩＭＭの管理領域を規定する場合、例えば所定のバイト単位でＤＩＭＭの記憶領域を分割し、分割された各記憶領域を管理領域としてもよい。あるいは、バイト単位ではなく、ＤＩＭＭに接続されるメモリコントローラ単位やメモリモジュール単位など、バイト数で区切るよりも規模の大きい単位を用いて管理領域を規定してもよい。
【００２４】
本実施形態では、管理テーブルにおいて、複数の管理領域が物理的に連続した記憶領域であるか否かを示すため、以下の式（１）に示すように各管理領域の先頭アドレスを管理領域のサイズで除算した値が「物理アドレスインデックス」として記憶されている。
（物理アドレスインデックス）＝（管理領域の先頭の物理アドレス）／（管理領域のサイズ）・・・（１）
なお、本実施形態では、管理テーブルにおいて、物理アドレスインデックスの値が小さい順に管理領域が整列されている。また、物理アドレスインデックスの番号が連続することは、それら物理アドレスインデックスに対応する管理領域が物理的に連続していることを意味する。なお、上記の式（１）により求まる物理アドレスインデックスを用いる方法は、管理領域が物理的に連続であることを示す方法の一例である。したがって、他の方法を用いて管理領域の物理的な連続性を示してもよい。
【００２５】
ＣＰＵ＃０  １０は、ＰＯＳＴ命令コードに従って、ＤＩＭＭ＃０  １２〜ＤＩＭＭ＃３  ４２の管理領域ごとにメモリ診断を実行する。そして、ＣＰＵ＃０  １０は、各メモリ診断の結果を管理テーブルの「メモリ診断結果」の各欄に記憶する。なお、ＣＰＵ＃０
１０は、メモリコントローラ＃０  １１〜メモリコントローラ＃３  ４１の診断を実行したときに、いずれかのメモリコントローラを異常と診断した場合は、当該メモリコントローラに接続されているＤＩＭＭの各管理領域のメモリ診断結果を「異常」として管理テーブルに記憶する。
【００２６】
例えば、図６の管理テーブルの場合、ＣＰＵ＃０  １０は、メモリコントローラ＃０  １１を異常と診断したため、管理テーブルのＤＩＭＭ＃０  １２の各管理領域ＤＩＭＭ＃０−０〜ＤＩＭＭ＃０−３に対する「メモリ診断結果」に「異常」を記憶する。なお、図６の管理テーブルの場合、ＣＰＵ＃０  １０は、ＤＩＭＭ＃１  ２２の管理領域ＤＩＭＭ＃１−０、＃１−１、＃１−２、ＤＩＭＭ＃２  ３２の管理領域ＤＩＭＭ＃２−１、＃２−２、＃２−３についても「メモリ診断結果」に「異常」を記憶する。これは、例えばＣＰＵ＃０  １０が、これらの管理領域内に故障した領域が存在すると診断した場合などが考えられる。
【００２７】
ＣＰＵ＃０  １０は、上記のように、ＤＩＭＭ＃０  １２〜ＤＩＭＭ＃３  ４２の管理領域ごとのメモリ診断結果を管理テーブルに記憶する。次いで、ＣＰＵ＃０  １０は、処理をＯＰ２００に進める。図４に、ＯＰ２００のサブルーチンの処理を示す。
【００２８】
ＯＰ２０１において、ＣＰＵ＃０  １０は、未実行のＰＯＳＴ命令コード、ＰＯＳＴ  ｒｏデータ、ＰＯＳＴ  ｒｗデータを合計したサイズ（以下「ＰＯＳＴコードサイズ」と称する）を算出する。
【００２９】
以下の処理において、ＣＰＵ＃０  １０は、算出したＰＯＳＴコードサイズの値に基づいて、ＰＯＳＴ命令コード、ＰＯＳＴ  ｒｏデータ、ＰＯＳＴ  ｒｗデータが管理領域に格納可能か否かを判定する。まず、ＣＰＵ＃０  １０は、管理テーブルを参照し、物理アドレスインデックスの値が小さい管理領域から、すなわち図６の例では管理領域ＤＩＭＭ＃０−０から「メモリ診断結果」を確認する。図６に示す例では、ＣＰＵ＃０  １０は、物理アドレスインデックスの値が０である管理領域の特定から開始する。そして、ＣＰＵ＃０  １０は、特定した管理領域の「メモリ診断結果」が「正常」であるか否かを判定する（ＯＰ２０２）。ＣＰＵ＃０  １０は、当該管理領域の「メモリ診断結果」が「正常」であると判定した場合は（ＯＰ２０２：Ｙｅｓ）、処理をＯＰ２０３に進める。一方、ＣＰＵ＃０  １０は、当該管理領域の「メモリ診断結果」が「正常」でないと判定した場合は（ＯＰ２０２：Ｎｏ）、処理をＯＰ２０４に進める。
【００３０】
ＯＰ２０３において、ＣＰＵ＃０  １０は、ＰＯＳＴコードが管理領域に収まるか否かを判定する。具体的には、ＣＰＵ＃０  １０は、（ＰＯＳＴコードサイズ）／（１つの管理領域のサイズ）で求まる値に応じて「物理アドレスインデックス」が連続する管理領域の「メモリ診断結果」が「正常」であるか否かを判定する。なお、ＣＰＵ＃０  １０は、（ＰＯＳＴコードサイズ）／（１つの管理領域のサイズ）で求まる値を、小数点以下を切り上げた値にして用いる。ＣＰＵ＃０  １０は、ＯＰ２０２の結果に基づいて、当該値の数だけ連続する管理領域の「メモリ診断結果」が「正常」であると判定した場合は（ＯＰ２０３：Ｙｅｓ）、本サブルーチンの処理を終了して処理をＯＰ１０３に進める。一方、ＣＰＵ＃０  １０は、（ＰＯＳＴコードサイズ）／（１つの管理領域のサイズ）で求まる値の小数点以下を切り上げた値の数だけ連続する管理領域の「メモリ診断結果」が「正常」でない場合は（ＯＰ２０３：Ｎｏ）、処理をＯＰ２０４に進める。
【００３１】
ＯＰ２０４では、ＣＰＵ＃０  １０は、ＯＰ２０２の処理の対象となる管理領域の「物理アドレスインデックス」が最大値、すなわち末尾であるか否かを判定する。「物理アドレスインデックス」が末尾である場合は（ＯＰ２０４：Ｙｅｓ）、ＣＰＵ＃０  １０は、ＯＰ２０２の処理を行っていない管理領域はないとみなして、本サブルーチンの処理を終了して処理をＯＰ１０３に進める。一方、「物理アドレスインデックス」が末尾に達していない場合は（ＯＰ２０４：Ｎｏ）、ＣＰＵ＃０  １０は、現在ＯＰ２０２の処理の対象である管理領域の「物理アドレスインデックス」に１を加算して（ＯＰ２０５）、処理をＯＰ２０２に戻す。
【００３２】
例えば、図６に示す管理テーブルの場合、ＤＩＭＭ＃１  ２２の管理領域ＤＩＭＭ＃１−３、ＤＩＭＭ＃２  ３２の管理領域ＤＩＭＭ＃２−０、ＤＩＭＭ＃３  ４２の管理領域ＤＩＭＭ＃３−０、＃３−１、＃３−２、＃３−３が「メモリ診断結果」が「正常」である。よって、上記の処理により、ＰＯＳＴコードが１つの管理領域に収まる場合は、ＣＰＵ＃０  １０は、ＯＰ２０２において管理領域ＤＩＭＭ＃１−３の「メモリ診断結果」が「正常」であると判定する。次いで、ＯＰ２０３において、ＣＰＵ＃０  １０はＰＯＳＴコードは管理領域ＤＩＭＭ＃１−３に収まると判定し（ＯＰ２０３：Ｙｅｓ）、本サブルーチンの処理を終了する。この結果、本実施形態では、管理領域ＤＩＭＭ＃１−３が、ＰＯＳＴ命令コード、ＰＯＳＴ  ｒｏデータ、ＰＯＳＴ  ｒｗデータの格納に利用可能な領
域とみなされる。
【００３３】
このように、ＰＯＳＴコードが１つの管理領域に収まる場合は、ＰＯＳＴ命令コード、ＰＯＳＴ  ｒｏデータ、ＰＯＳＴ  ｒｗデータを１つの管理領域にまとめて格納することができる。このため、上記の管理領域の診断において、いずれかの管理領域が正常であることが検出できればよく、他の管理領域の物理的な連続性を判断する処理を省くことで上記の診断処理がより簡略化される。
【００３４】
別の例として、管理テーブルが図６に示す状態であり、（ＰＯＳＴコードサイズ）／（１つの管理領域のサイズ）の小数点以下を切り上げた値が４である場合を想定する。このとき、ＣＰＵ＃０  １０は、上記の処理を繰り返すことで、管理領域ＤＩＭＭ＃３−０〜＃３−２に対してはＯＰ２０２〜ＯＰ２０５の処理を繰り返す。そして、ＣＰＵ＃０  １０は、管理領域ＤＩＭＭ＃３−３に対しては、ＯＰ２０２においてＤＩＭＭ＃３−４の「メモリ診断結果」が「正常」であると判定する（ＯＰ２０２：Ｙｅｓ）。さらに、ＣＰＵ＃０  １０は、ＯＰ２０３においてＰＯＳＴコードが４つの連続する管理領域ＤＩＭＭ＃３−０〜＃３−３に収まると判定し（ＯＰ２０３：Ｎｏ）、本サブルーチンの処理を終了して処理をＯＰ１０３に進める。この結果、本実施形態では、管理領域ＤＩＭＭ＃３−０〜＃３−３が、ＰＯＳＴ命令コード、ＰＯＳＴ  ｒｏデータ、ＰＯＳＴ  ｒｗデータの格納に利用可能な領域とみなされる。
【００３５】
このように、ＰＯＳＴコードが１つの管理領域に収まらない場合は、上記の管理領域の診断において異常と診断される管理領域が存在する場合であってもＰＯＳＴ命令コード、ＰＯＳＴ  ｒｏデータ、ＰＯＳＴ  ｒｗデータを格納可能な物理的に連続である管理領域が存在するか否かを確認できる。このため、従来に比べて、ＰＯＳＴ命令コードの処理を主記憶装置で実行できる可能性が高まる。
【００３６】
ＯＰ１０３では、上記のＯＰ２００のサブルーチンの処理によって、ＰＯＳＴ命令コード、ＰＯＳＴ  ｒｏデータ、ＰＯＳＴ  ｒｗデータの格納に利用可能な領域が検出されたとき（ＯＰ１０３：Ｙｅｓ）、ＣＰＵ＃０  １０は、処理をＯＰ１０４に進める。また、ＰＯＳＴ命令コード、ＰＯＳＴ  ｒｏデータ、ＰＯＳＴ  ｒｗデータの格納に利用可能な領域が検出されなかった場合は（ＯＰ１０３：Ｎｏ）、ＣＰＵ＃０  １０は、処理をＯＰ１０５に進める。
【００３７】
ＯＰ１０４では、ＣＰＵ＃０  １０は、ＲＯＭ８０に記憶されているＰＯＳＴ命令コードおよびＰＯＳＴ  ｒｏデータ、ＳＲＡＭ９０に記憶されているＰＯＳＴ  ｒｗデータをそれぞれＯＰ１０３において検出された領域に転送する。次いで、ＣＰＵ＃０  １０は処理をＯＰ１０６に進める。ＯＰ１０４の処理により、例えば図５に示すように、ＰＯＳＴ命令コード、ＰＯＳＴ  ｒｏデータ、ＰＯＳＴ  ｒｗデータがＤＩＭＭ＃３  ４２に格納される。ＯＰ１０６では、ＣＰＵ＃０  １０は、主記憶装置上でＰＯＳＴ命令コードを実行する。図６に示す例の場合、ＣＰＵ＃０  １０は、ＤＩＭＭ＃３  ４２の管理領域ＤＩＭＭ＃３−０〜＃３−３に転送されたＰＯＳＴ命令レコード、ＰＯＳＴ  ｒｏデータ、ＰＯＳＴ  ｒｗデータを用いてＤＩＭＭ＃３  ４２上でＰＯＳＴ命令コードを実行する。
【００３８】
一方、ＯＰ１０５では、ＣＰＵ＃０  １０は、ＲＯＭ８０に記憶されているＰＯＳＴ命令コードおよびＰＯＳＴ  ｒｏデータ、ＳＲＡＭ９０に記憶されているＰＯＳＴ  ｒｗデータを用いてＲＯＭ８０上でＰＯＳＴ命令コードを実行する。ＯＰ１０５またはＯＰ１０６において、ＣＰＵ＃０  １０は、ＰＯＳＴ命令コードを実行し、実行したＰＯＳＴ命令コードの処理に従ってコンピュータ１内のハードウェアの初期化および診断を実行する（ＯＰ１０７）。
【００３９】
本実施形態では、ＯＰ１０３、ＯＰ１０４の処理により、ＰＯＳＴ命令コードがＤＩＭＭ上で実行されるため、従来のようにＲＯＭ上でＰＯＳＴ命令コードが実行される場合に比べて、インターコネクトおよびＩＯハブ５０を介さないので、処理が高速化される。また、従来では、ＰＯＳＴ命令コード、ＰＯＳＴ  ｒｏデータ、ＰＯＳＴ  ｒｗデータを格納可能な正常な領域がＤＩＭＭ内に存在する場合でもＤＩＭＭの一部の領域が異常と診断されるとＤＩＭＭ自体が異常と診断される。また、ＤＩＭＭ自体が異常と診断されてコンピュータが停止される結果、後続のＰＯＳＴの処理で実行される予定のハードウェアの診断が実行されない可能性がある。一方、本実施形態では、ＤＩＭＭの一部の領域が異常と診断されても、ＰＯＳＴ命令コード、ＰＯＳＴ  ｒｏデータ、ＰＯＳＴ  ｒｗデータを格納可能な正常な領域が検出されれば、当該領域にデータが転送される。したがって、ＲＯＭ上でＰＯＳＴの処理が実行される場合に比べて処理が高速化されるとともに、主記憶装置の一部の領域が異常と診断される場合でも引き続きハードウェアの診断が実行される。
【００４０】
ＯＰ１０８において、ＣＰＵ＃０  １０は、ＯＰ１０７で実行したハードウェアの診断の結果が異常であるか否かを判定する。当該ハードウェアの診断の結果が異常である場合（ＯＰ１０８：Ｙｅｓ）、ＣＰＵ＃０  １０は、処理をＯＰ１０９に進める。一方、当該ハードウェアの診断の結果が正常である場合（ＯＰ１０８：Ｎｏ）、ＣＰＵ＃０  １０は処理をＯＰ１１１に進める。
【００４１】
ＯＰ１０９において、ＣＰＵ＃０  １０は、ＯＰ１０７におけるハードウェアの診断において検出された異常を通知する。例えば、ＣＰＵ＃０  １０は、当該通知として、コンピュータ１のディスプレイ（図示せず）に通知メッセージや検出された異常の詳細を表示する。次いで、ＣＰＵ＃０  １０は、処理をＯＰ１１０に進める。ＯＰ１１０において、ＣＰＵ＃０  １０は、ＯＰ１０７におけるハードウェアの診断の結果、ハードウェアに異常が発生しているとみなし、コンピュータ１の動作を停止する。そして、ＣＰＵ＃０  １０は、本フローチャートの処理を終了する。
【００４２】
ＯＰ１１１においては、ＣＰＵ＃０  １０は、ＤＩＭＭ上でＰＯＳＴ命令コードの実行を継続し、ＯＰ１０５またはＯＰ１０６において実行したＰＯＳＴ命令コードの後続のＰＯＳＴ命令コードを実行する。
【００４３】
本実施形態では、上記のフローチャートの処理が実行されることで、主記憶装置の診断時に主記憶装置内の各管理領域が正常であるか否かが判定され、正常であると判定された領域にＰＯＳＴ命令コードなどのデータが転送される。この結果、主記憶装置以外のハードウェアの診断を行うプログラムであるＰＯＳＴ命令コードを主記憶装置上で実行できるため、ＲＯＭ上で実行する場合に比べて処理が高速化される。また、主記憶装置内に異常と診断される管理領域が存在する場合でもＰＯＳＴ命令コードなどのデータを格納可能な正常な領域が検出されれば当該領域に当該データが転送される。この結果、主記憶装置内に異常と診断される管理領域が存在しても、後続のＰＯＳＴ命令コードが実行されることで、主記憶装置以外のハードウェアの初期化および診断が実行される。
【００４４】
以上が本実施形態に関する説明であるが、上記の情報処理装置などの構成や処理は、上記の実施形態に限定されるものではなく、本発明の技術的思想と同一性を失わない範囲内において種々の変更が可能である。例えば、上記の説明によれば、図５に例示するように、ＤＩＭＭ＃３  ４２すなわち主記憶装置内の管理領域に、ＰＯＳＴ命令コード、ＰＯＳＴ  ｒｏデータ、ＰＯＳＴ  ｒｗデータが格納される。しかし、少なくともＰＯＳＴ命令コードが主記憶装置内の管理領域に格納されれば、ＲＯＭ上で実行する場合に比べてＰＯＳＴの処理を高速化することができる。したがって、上記の実施形態において、ＰＯＳＴコードサイズをＰＯＳＴ命令コードのサイズとして処理が行われてもよい。
【００４５】
なお、上記の例では、ＰＯＳＴ命令コード、ＰＯＳＴ  ｒｏデータ、ＰＯＳＴ  ｒｗデータをまとめて１つあるいは物理的に連続である管理領域に格納する場合を想定している。ただし、ＰＯＳＴ命令コード、ＰＯＳＴ  ｒｏデータ、ＰＯＳＴ  ｒｗデータのそれぞれを別の１つあるいは物理的に連続である管理領域に格納できるか否かを判定してもよい。この場合、ＰＯＳＴ命令コード、ＰＯＳＴ  ｒｏデータ、ＰＯＳＴ  ｒｗデータが、それぞれ異なる管理領域に格納される可能性がある。そこで、ＰＯＳＴ命令コードにＰＯＳＴ  ｒｏデータおよびＰＯＳＴ  ｒｗデータが格納されている管理領域の先頭アドレスが渡されるようにすればよい。
【００４６】
また、上記の例では、ＣＰＵ＃０  １０が図２〜４に示すフローチャートの処理を開始するが、ＣＰＵ＃０  １０の代わりに他のＣＰＵが当該処理を開始してもよい。さらに、各ＣＰＵ＃０  １０〜ＣＰＵ＃３  ４０が、自ＣＰＵに直接接続されているＤＩＭＭ＃０
１２〜ＤＩＭＭ＃３  ４２に対して上記のフローチャートに従ってＰＯＳＴ命令コード、ＰＯＳＴ  ｒｏデータ、ＰＯＳＴ  ｒｗデータを格納可能な領域が存在するか否かを判定してもよい。
【００４７】
また、上記の実施形態において、ＣＰＵは、単一のプロセッサに限定される訳ではなく、マルチプロセッサ構成であってもよい。また、単一のソケットで接続される単一のＣＰＵがマルチコア構成であってもよい。上記各部の少なくとも一部の処理がDigital Signal
Processor（ＤＳＰ）、Graphics Processing Unit（ＧＰＵ）、数値演算プロセッサ、ベクトルプロセッサ、画像処理プロセッサ等の専用プロセッサ、Application Specific Integrated Circuit（ＡＳＩＣ）などによって提供されてもよい。また、上記各部の少なく
とも一部が、Field-Programmable Gate Array（ＦＰＧＡ）などの専用Large Scale Integration（ＬＳＩ）、その他のデジタル回路であってもよい。また、上記各部の少なくとも一部にアナログ回路が含まれてもよい。
【００４８】
＜コンピュータが読み取り可能な記録媒体＞
コンピュータその他の機械、装置（以下、コンピュータ等）に上記情報処理装置の設定を行うための管理ツール、ＯＳその他を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
【００４９】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ、ＤＶＤ、ブルーレイディスク、ＤＡＴ、８ｍｍテープ、フラッシュメモリ等のメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスクやＲＯＭ等がある。
【００５０】
以上の実施形態に関し、さらに以下の付記を開示する。
【００５１】
（付記１）
演算処理装置と、
主記憶装置と、
前記主記憶装置の診断および前記演算処理装置によってアクセスされる装置の診断を実行するためのプログラムを記憶する補助記憶装置と、
を備え、
前記演算処理装置は、前記補助記憶装置に記憶された前記プログラムを実行することにより、前記主記憶装置の診断後に、前記プログラムを前記主記憶装置で実行できるか否か
を判断し、前記プログラムを前記主記憶装置で実行できる場合には、前記主記憶装置上で前記プログラムを実行し、前記プログラムを前記主記憶装置で実行できない場合には、前記補助記憶装置上で前記プログラムを実行する
情報処理装置。
【００５２】
（付記２）
前記演算処理装置と接続されるインターフェース回路をさらに備え、
前記主記憶装置は前記演算処理装置の内部の制御回路に接続され、
前記補助記憶装置は、前記インターフェース回路を介して前記制御回路に接続される
付記１に記載の情報処理装置。
【００５３】
（付記３）
前記主記憶装置は複数の記憶領域を有し、
前記演算処理装置は、前記複数の記憶領域の少なくとも１つの記憶領域に前記プログラムを格納可能である場合に、前記プログラムを前記主記憶装置で実行できると判断し、前記プログラムを前記少なくとも１つの記憶領域に転送する、
付記１または２に記載の情報処理装置。
【００５４】
（付記４）
前記演算処理装置は、前記主記憶装置の前記複数の記憶領域のうち物理的に連続した複数の記憶領域に前記プログラムを格納可能である場合に、前記プログラムを前記主記憶装置で実行できると判断し、前記プログラムを前記物理的に連続した複数の記憶領域に転送する、付記１から３のいずれか１つに記載の情報処理装置。
【００５５】
（付記５）
演算処理装置に、
補助記憶装置に記憶された主記憶装置の診断および前記演算処理装置によってアクセスされる装置の診断を実行するためのプログラムを実行させ、
前記主記憶装置の診断後に、前記プログラムを前記主記憶装置で実行できるか否かを判断させ、
前記プログラムを前記主記憶装置で実行できる場合には、前記主記憶装置上で前記プログラムを実行させ、前記プログラムを前記主記憶装置で実行できない場合には、前記補助記憶装置上で前記プログラムを実行させる
演算処理装置の制御方法。
【００５６】
（付記６）
前記演算処理装置はインターフェース回路と接続され、
前記主記憶装置は前記演算処理装置の内部の制御回路に接続され、
前記補助記憶装置は、前記インターフェース回路を介して前記制御回路に接続される
付記５に記載の演算処理装置の制御方法。
【００５７】
（付記７）
前記主記憶装置は複数の記憶領域を有し、
前記演算処理装置に、前記複数の記憶領域の少なくとも１つの記憶領域に前記プログラムを格納可能である場合に、前記プログラムを前記主記憶装置で実行できると判断させ、前記プログラムを前記少なくとも１つの記憶領域に転送させる、
付記５または６に記載の演算処理装置の制御方法。
【００５８】
（付記８）
前記演算処理装置に、前記主記憶装置の前記複数の記憶領域のうち物理的に連続した複
数の記憶領域に前記プログラムを格納可能である場合に、前記プログラムを前記主記憶装置で実行できると判断させ、前記プログラムを前記物理的に連続した複数の記憶領域に転送させる、付記５から７のいずれか１つに記載の演算処理装置の制御方法。
【００５９】
（付記９）
演算処理装置に、
補助記憶装置に記憶された主記憶装置の診断および演算処理装置によってアクセスされる装置の診断を実行するためのプログラムを実行する処理と、
前記主記憶装置の診断後に、前記プログラムを前記主記憶装置で実行できるか否かを判断する処理と、
前記プログラムを前記主記憶装置で実行できる場合には、前記主記憶装置上で前記プログラムを実行し、前記プログラムを前記主記憶装置で実行できない場合には、前記補助記憶装置上で前記プログラムを実行する処理
を実行させる演算処理装置の制御プログラム。
【００６０】
（付記１０）
前記演算処理装置はインターフェース回路と接続され、
前記主記憶装置は前記演算処理装置の内部の制御回路に接続され、
前記補助記憶装置は、前記インターフェース回路を介して前記制御回路に接続される
付記１０に記載の演算処理装置の制御プログラム。
【００６１】
（付記１１）
前記主記憶装置は複数の記憶領域を有し、
前記演算処理装置に、前記複数の記憶領域の少なくとも１つの記憶領域に前記プログラムを格納可能である場合に、前記プログラムを前記主記憶装置で実行できると判断し、前記プログラムを前記少なくとも１つの記憶領域に転送する処理を実行させる
付記９または１０に記載の演算処理装置の制御プログラム。
【００６２】
（付記１２）
前記演算処理装置に、前記主記憶装置の前記複数の記憶領域のうち物理的に連続した複数の記憶領域に前記プログラムを格納可能である場合に、前記プログラムを前記主記憶装置で実行できると判断し、前記プログラムを前記物理的に連続した複数の記憶領域に転送する処理を実行させる、付記９から１１のいずれか１つに記載の演算処理装置の制御プログラム。
【符号の説明】
【００６３】
１    コンピュータ
１０、２０、３０、４０    ＣＰＵ
１１、２１、３１、４１    メモリコントローラ
１２、２２、３２、４２    ＤＩＭＭ
８０    ＲＯＭ
９０    ＳＲＡＭ
【図１】
2017122997.tif 000003
【図２】
2017122997.tif 000004
【図３】
2017122997.tif 000005
【図４】
2017122997.tif 000006
【図５】
2017122997.tif 000007
【図６】
2017122997.tif 000008