(57)【特許請求の範囲】
【請求項１】
それぞれがＴＬＢ（Translation Lookaside Buffer）を有する複数の処理部と、
前記複数の処理部のうちの前記ＴＬＢの情報が採取される処理部の指定と前記ＴＬＢの情報が採取されるタイミングの指定とを取得する手段と、
前記ＴＬＢに含まれ、情報が登録されたエントリをロックし、登録済みの情報の書き換えを抑止する手段と、
前記ロックされたエントリを通じてアクセスされるメモリ上に前記ＴＬＢの情報を採取するＴＬＢ採取命令を登録する手段と、
前記指定のタイミングにおいて前記指定の処理部から前記ＴＬＢの情報を採取する手段と、
を備える情報処理装置。
【請求項２】
それぞれがＴＬＢ（Translation Lookaside Buffer）を有する複数の処理部と、
前記複数の処理部のうちの前記ＴＬＢの情報が採取される処理部の指定と前記ＴＬＢの情報が採取されるタイミングの指定とを取得する取得手段と、
前記指定のタイミングにおいて前記指定の処理部から前記ＴＬＢの情報を採取する手段と、
前記ＴＬＢの情報が採取されるタイミングとして、前記処理部の停止が指定されている場合、前記ＴＬＢの情報を採取した後に当該処理部を停止させる手段と、
を備える情報処理装置。
【請求項３】
前記取得手段は、前記ＴＬＢの情報が採取される複数の処理部の指定を取得する
請求項２に記載の情報処理装置。
【請求項４】
それぞれがＴＬＢ（Translation Lookaside Buffer）を有する複数の処理部を備えるコンピュータが、
前記複数の処理部のうちの前記ＴＬＢの情報が採取される処理部の指定と前記ＴＬＢの情報が採取されるタイミングの指定とを取得するステップと、
前記ＴＬＢに含まれ、情報が登録されたエントリをロックし、登録済みの情報の書き換
えを抑止するステップと、
前記ロックされたＴＬＢのエントリを通じてアクセスされるメモリ上に前記ＴＬＢの情報を採取するＴＬＢ採取命令を登録するステップと、
前記指定のタイミングにおいて前記指定の処理部から前記ＴＬＢの情報を採取するステップと、
を実行する情報処理方法。
【請求項５】
それぞれがＴＬＢ（Translation Lookaside Buffer）を有する複数の処理部を備えるコンピュータが、
前記複数の処理部のうちの前記ＴＬＢの情報が採取される処理部の指定と前記ＴＬＢの情報が採取されるタイミングの指定とを取得する取得ステップと、
前記指定のタイミングにおいて前記指定の処理部から前記ＴＬＢの情報を採取するステップと、
前記ＴＬＢの情報が採取されるタイミングとして、前記処理部の停止が指定されている場合、前記ＴＬＢの情報を採取した後に当該処理部を停止させるステップと、
を実行する情報処理方法。
【請求項６】
前記取得ステップにおいて、前記ＴＬＢの情報が採取される複数の処理部の指定を取得する
請求項５に記載の情報処理方法。
【請求項７】
それぞれがＴＬＢ（Translation Lookaside Buffer）を有する複数の処理部を備えるコンピュータに、
前記複数の処理部のうちの前記ＴＬＢの情報が採取される処理部の指定と前記ＴＬＢの情報が採取されるタイミングの指定とを取得するステップと、
前記ＴＬＢに含まれ、情報が登録されたエントリをロックし、登録済みの情報の書き換えを抑止するステップと、
前記ロックされたＴＬＢのエントリを通じてアクセスされるメモリ上に前記ＴＬＢの情報を採取するＴＬＢ採取命令を登録するステップと、
前記指定のタイミングにおいて前記指定の処理部から前記ＴＬＢの情報を採取するステップと、
を実行させるためのプログラム。
【請求項８】
それぞれがＴＬＢ（Translation Lookaside Buffer）を有する複数の処理部を備えるコンピュータに、
前記複数の処理部のうちの前記ＴＬＢの情報が採取される処理部の指定と前記ＴＬＢの情報が採取されるタイミングの指定とを取得する取得ステップと、
前記指定のタイミングにおいて前記指定の処理部から前記ＴＬＢの情報を採取するステップと、
前記ＴＬＢの情報が採取されるタイミングとして、前記処理部の停止が指定されている場合、前記ＴＬＢの情報を採取した後に当該処理部を停止させるステップと、
を実行させるためのプログラム。
【請求項９】
前記取得ステップにおいて、前記ＴＬＢの情報が採取される複数の処理部の指定を取得する
請求項８に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＴＬＢ(Translation Lookaside Buffer)に登録されている情報の採取技術に関するものである。
【背景技術】
【０００２】
コンピュータには、ＴＬＢ(Translation Lookaside Buffer)が実装されているものがある。例えば、オペレーティングシステムが各仮想空間の論理アドレスに対応する物理アドレス、あるいはマップサイズなどのアドレス変換情報をハードウェアに通知するために、ＴＬＢに情報を設定する。【０００３】
ＴＬＢは、コンピュータのＣＰＵ（Central Processing Unit）内に存在し、仮想アドレスから物理アドレスへの変換の高速化を図るためのものである。ＴＬＢには固定個のエントリがあり、オペレーティングシステムがＴＬＢの各エントリに仮想アドレスから物理アドレスに変換するための情報を登録する。【０００４】
ＣＰＵが命令を実行中に仮想アドレスへのアクセスが発生すると、ＣＰＵはオペレーティングシステムがＴＬＢに登録した情報を検索する。通常、検索キーとして仮想アドレスが使用され、検索結果として仮想アドレスに対応する物理アドレスが返される。仮想アドレスに対応する情報がＴＬＢ上にある場合は、アドレス変換は非常に迅速に行われ、ＣＰＵはＴＬＢから取得した物理アドレスを使ってメモリにアクセスする。仮想アドレスに対応する情報がＴＬＢ上にない場合は、ＣＰＵがトラップ（割り込み）を発生させて、ＴＬＢ上に情報がなかったことをオペレーティングシステムに通知する。トラップを受けたオペレーティングシステムが仮想アドレスに対応する情報をＴＬＢに登録して命令を再実行する。命令を再実行する時には、ＴＬＢ上に仮想アドレスに対応する情報が登録されているため、ＣＰＵは仮想アドレスに対応する情報を用いてメモリへアクセスすることができる。【０００５】
オペレーティングシステムの障害などにより、ＴＬＢへの情報登録が正常に行われなくなった場合、ＣＰＵは想定外の物理アドレスへアクセスを行うことになる。想定外の物理アドレスへのアクセスにより、コンピュータの誤動作やデータ破壊などの重大な問題が発生する可能性がある。実際にオペレーティングシステムの障害によるＴＬＢエントリの誤登録が発生し、さらに、システムのハングアップ、あるいはプログラムの誤動作が発生した事例がある。そのため、各ＣＰＵのＴＬＢに登録されている情報を確認する手段、あるいは、オペレーティングシステムのＴＬＢに関する処理が正しく動作しているかどうかを確認する手段が望まれている。【０００６】
従来から、オペレーティングシステムの障害などのトラブルの原因を調査するための情報採取および、動作確認（リグレッションテスト）を目的として、ツールが用意されている。例えば、コンピュータの管理者は、コンピュータを管理するファームウェア(Service Processor)において、動作確認のコマンドなどのツールを実行すればよい。動作確認のコマンドの実行に際し、コンピュータの管理者は、動作確認の対象であるＣＰＵなどを指定する。動作確認のコマンド実行により、コンピュータの管理者は、指定したＣＰＵのＴＬＢに登録されている情報を取得することができる。例えば、UltraSPARCプロセッサを搭載したシステムの場合には、ファームウェアに用意された動作確認用のコマンドの起動により、ファームウェアは、ＴＬＢ情報を採取するＡＳＩ(Address Space Identifiers)命令を実行する。ＴＬＢ情報を採取するＡＳＩ命令により、ファームウェアは、ＴＬＢに登録されている情報を取得し、コンピュータの管理者に表示する。ＴＬＢに登録されている情報を採取するＡＳＩ命令の詳細は、UltraSPARCプロセッサのマニュアル(UltraSPARC User's Manual Revision 2, July 1997)の６章に記載されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特表２００７−５００４０１号公報
【特許文献２】特開昭６３−２７３１４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
近年、コンピュータに搭載されるＣＰＵには、単一のプロセッサパッケージ内に複数のコアを追加していくというアプローチが採用されることが多い。こうしたＣＰＵのマルチコア化は、ＣＰＵのパフォーマンスを向上させるための技術として認識され、その採用が急速に進んでいる。最近では、マルチスレッド技術と組み合わせたマルチコア化も進んでおり、論理ＣＰＵの数が５１２個以上の大規模サーバも登場している。なお、論理ＣＰＵとは、オペレーティングシステムがスレッドを割り当てるＣＰＵとそのスレッドのレジスタ群とを含む仮想的なプログラム実行環境と考えることができる。論理ＣＰＵを含むコンピュータシステムでは、オペレーティングシステムは、スレッドに割り当てるプログラム実行環境として、物理的なハードウェア資源である物理ＣＰＵの代わりに論理ＣＰＵを認識する。したがって、ＴＬＢも論理ＣＰＵごとに用意されることになる。【０００９】
さらに、ＴＬＢに登録できる情報の量が年々増加し、最近では論理ＣＰＵごとに合計４０００エントリ以上のアドレス変換情報を保持できるようになっている。このため、例えばコンピュータのファームウェア(Service Processor)のコマンドなどのツールで、論理ＣＰＵを５１２個搭載したコンピュータ対して、すべての論理ＣＰＵのＴＬＢに登録されている情報を採取する場合には、コンピュータの管理者は論理ＣＰＵを指定してツールを繰り返し（５１２回）実行しなければならない。その上、採取する情報は、２００万エントリ以上のアドレス変換情報となり、データ量が膨大となる。したがって情報を採取するのに非常に時間と手間がかかるという問題がある。【００１０】
さらに、オペレーティングシステムの障害などのトラブルの原因を調査するためにＴＬＢに登録されている情報を採取する場合は、通常、異常が発生した特定のＣＰＵのＴＬＢに登録されている情報を採取すればよい。なお、特定のＣＰＵとは、論理ＣＰＵの仕組みを有するシステムにおいては論理ＣＰＵをいい、論理ＣＰＵの仕組みがないシステムにおいては、例えば、マルチコアのＣＰＵ中の１つのコアなどをいう。また、マルチコアのＣＰＵ中の１つのコアを物理ＣＰＵともいう。
【００１１】
しかしながら、コンピュータのファームウェア(Service Processor)のコマンドなどの外部ツールで情報を採取する場合は、どの論理ＣＰＵ、あるいはどの物理ＣＰＵで異常が発生しているか特定できないことが多い。どの論理ＣＰＵ、あるいは物理ＣＰＵで異常が発生しているか特定できない場合、コンピュータの管理者はすべての論理ＣＰＵ、あるいはすべての物理ＣＰＵのＴＬＢに登録されている情報を採取することもあり得る。したがって、コンピュータのファームウェアなどの外部ツールによる情報採取は、採取するデータ量の増加および採取する処理時間の増加の要因となっている。【００１２】
開示の技術の一側面は、ＴＬＢに関連する情報処理装置の障害などのトラブルの原因を調査するための情報採取および、動作確認(リグレッションテスト)を効果的に支援するものである。
【課題を解決するための手段】
【００１３】
上記課題を解決するための一側面として、情報処理装置が例示される。本情報処理装置は、それぞれがＴＬＢ（Translation Lookaside Buffer）を有する複数の処理部と、複数の処理部のうちのＴＬＢの情報が採取される処理部の指定とＴＬＢの情報が採取されるタイミングの指定とを取得する手段と、指定のタイミングにおいて指定の処理部からＴＬＢの情報を採取する手段と、を備える。
【発明の効果】
【００１４】
本情報処理装置によれば、ＴＬＢに関連する情報処理装置の障害などのトラブルの原因を調査するための情報採取および、動作確認(リグレッションテスト)を効果的に支援することができる。
【図面の簡単な説明】
【００１５】
【図１】実施例１の情報処理装置のハードウェアと機能の関連を示すブロック図である。
【図２】オペレーティングシステムの機能の詳細例を示す図である。
【図３】比較例となるシステムの処理のフローチャートである。
【図４】実施例１でのブートから停止までの処理を示すフローチャートである。
【図５】緊急停止の処理を例示する図である。
【図６】ＴＬＢ採取処理の詳細例を示す図である。
【図７】実施例２に係る情報処理装置の動作を例示するフローチャートである。
【図８】スイッチをシステム管理者が押した時の処理を例示するフローチャートである。
【図９】ＴＬＢのエントリをロックする処理を例示するフローチャートである。
【発明を実施するための形態】
【００１６】
以下、図面を参照して一実施形態に係る情報処理装置について説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成には限定されない。
【実施例１】
【００１７】
図１から図６の図面を参照して、実施例１に係る情報処理装置１を説明する。図１は、情報処理装置１のハードウェアと機能の関連を示すブロック図である。情報処理装置１は、オペレーティングシステム１１、ファームウェア１２(Service Processor)、装置に備え付けられたスイッチ１３、ディスク１４、ＣＰＵ１５、メモリ１６を備える。【００１８】
実施例１の情報処理装置１では、ＣＰＵ１５は、例えば、複数の仮想ＣＰＵを含む。ここで、仮想ＣＰＵとは、オペレーティングシステム１１から見た、プログラムを実行するためのプロセッサとプログラムの実行状態を保持するレジスタ群との組み合わせを含む仮想的な装置をいう。ここで、「仮想的な」という意味は、実際に存在するハードウェア、すなわち、物理的に存在するレジスタ群を含む物理ＣＰＵによるプログラム実行環境よりも多くのプログラム実行環境（すなわちプロセッサとレジスタ群との組み合わせ）を提供できるという意味を含む。仮想ＣＰＵは、例えば、現在ＣＰＵ１５のいずれかの物理ＣＰＵで処理中のプログラムの状態を示す第１のレジスタ群の値をメモリ１６に保存し、一方、メモリ１６に保存しておいた第２のレジスタ群の値を物理ＣＰＵのレジスタ群に書き戻す。このようなレジスタ群の値の入れ替え機能を設けることで、ＣＰＵ１５は、オペレーティングシステム１１に対して、複数の仮想ＣＰＵを提供する。【００１９】
ただし、仮想ＣＰＵに代えて、ＣＰＵ１５が、複数の物理ＣＰＵ（プロセッサコア、コア、あるいは物理プロセッサともいう）、すなわち、物理的ハードウェアとしてプログラムを実行する装置を提供するものであってもよい。いずれにしても、実施例１において、情報処理装置１のＣＰＵ１５は、オペレーティングシステム１１から見た場合に、プログラム実行のための実行環境を複数有しているものとする。仮想ＣＰＵまたは物理ＣＰＵが処理部に相当する。【００２０】
また、ＣＰＵ１５の複数の仮想ＣＰＵ（あるいは、物理ＣＰＵ）のそれぞれは、ＴＬＢを有する。以下、ＣＰＵ１５という場合には、複数の仮想ＣＰＵあるいは複数の物理ＣＰＵを含むシステムをいう。また、ＣＰＵ１５に含まれる仮想ＣＰＵとは、ＣＰＵ１５がオペレーティングシステム１１に提供する個々のプログラム実行環境をいう。また、ＣＰＵ１５に含まれる物理ＣＰＵとは、ＣＰＵ１５内の個々のプロセッサコアをいう。【００２１】
さらに、ＣＰＵ１５内の個々の仮想ＣＰＵは、ＣＰＵ番号で特定される。また、ＣＰＵ１５が仮想ＣＰＵの仕組みを有していない場合、ＣＰＵ１５は、オペレーティングシステム１１に対して、プログラム実行環境として、個々の物理ＣＰＵを提供する。個々の物理ＣＰＵも、ＣＰＵ番号で特定される。すなわち、実施例１でＣＰＵ番号という場合、仮想ＣＰＵが提供される環境では、仮想ＣＰＵを特定する番号のことである。また、仮想ＣＰＵが提供されない環境では、実施例１でいうＣＰＵ番号は、物理ＣＰＵを特定する番号のことである。【００２２】
メモリ１６は、ＣＰＵ１５で実行されるコンピュータプログラムのコード、あるいはデータを保持する。メモリ１６が保持するデータには、ＣＰＵ１５で仮想ＣＰＵの割り当て待ちになっているコンピュータプログラムの実行状態を示すレジスタ群の値、コンピュータプログラムの実行によってＣＰＵ１５が処理するデータなどが含まれる。ＣＰＵ１５は、ＴＬＢを用いて、仮想アドレスを物理アドレスに変換し、メモリ１６にアクセスする。メモリ１６は、揮発性のＤＲＡＭ（Dynamic Random Access Memory）と、不揮発性のＲＯＭ（Read Only Memory）とを含む。メモリ１６は、主記憶装置とも呼ばれる。【００２３】
ディスク１４は、外部記憶装置とも呼ばれる。ディスク１４は、メモリ１６に展開されるコンピュータプログラム、データ等を保存する。外部記憶装置と呼ばれるのは、ＣＰＵ１５から見て、メモリ１６よりもアクセスに時間が長くかかる意味を含む。ただし、ディスク１４は、電源が停止されても、記憶していた情報を維持する。ディスク１４は、ハードディスク装置、可搬型記憶装置の入出力装置、ＳＳＤ（Solid State Drive）等を含む。また、可搬型記憶装置は、ＣＤ（Compact Disc）、ＤＶＤ（Digital Versatile Disc）、ＢＤ（Blu-ray Disc）等の駆動装置、あるいは、メモリカードの入出力装置を含む。【００２４】
オペレーティングシステム１１は、ＣＰＵ１５で稼働し、ＣＰＵ１５、メモリ１６、およびディスク１４等の情報処理装置１のハードウェアを制御し、ＣＰＵ１５で実行されるコンピュータプログラムに情報処理装置１の資源を提供する。この場合のコンピュータプログラムは、オペレーティングシステム１１のようなシステムプログラムと区別する意味で、ユーザプログラム、あるいは、アプリケーションプログラムと呼ばれる。【００２５】
ファームウェア(Service Processor、以下単にファームウェア１２という)は、情報処理装置１を制御し、管理する機能を提供する。ファームウェア１２は、図示しない専用線でＣＰＵ１５と接続され、ＣＰＵ１５に所定のコマンドを入力し、コマンドに対する応答を受信する。例えば、ファームウェア１２は、ＣＰＵ１５の現在の状態を取得するためのＡＳＩ命令を入力し、ＣＰＵ１５の現在の状態を取得し、ＣＰＵ１５の実行状態を診断する。【００２６】
スイッチ１３は、ユーザ操作を受け付け、ユーザ操作を受け付けたことをオペレーティングシステム１１に通知する。スイッチ１３からのオペレーティングシステム１１への通知は、例えば、割り込みというイベントの発生を通じて行われる。割り込みが発生すると、オペレーティングシステム１１は、予め定められた優先順位にしたがって、ＣＰＵ１５から、割り込みの発生を受け取る。したがって、スイッチ１３は、ユーザ、例えば、情報処理装置１のシステム管理者からオペレーティングシステム１１への緊急の通知機構として用いることができる。【００２７】
なお、割り込みそのものは、例えば、ファームウェア１２からＣＰＵ１５への要求として発生させてもよい。すなわち、システム管理者がスイッチ１３を押すと、まず、ファームウェア１２は、スイッチ１３が押されたことを検知する。そして、ファームウェア１２がＣＰＵ１５を通じてオペレーティングシステム１１にスイッチ１３が押されたことを割り込みによって通知するようにしてもよい。また、ファームウェア１２からオペレーティングシステム１１への割り込みは、情報処理装置１のファームウェア１２のコマンドを実行によっても、発生する。例えば、システム管理者あるいはファームウェア上のプログラムがＣＰＵ１５を診断するファームウェア１２のコマンドを実行すると、ファームウェア１２がＣＰＵ１５に対応する情報、例えば、ＡＳＩ命令等を割り込みによって通知する。【００２８】
標準出力１７は、オペレーティングシステム１１が用意している情報の仮想的な出力先である。オペレーティングシステム１１は、例えば、標準出力として端末を想定する。端末はコンソールとも呼ばれる。また、標準出力は、リダイレクションと呼ばれる切替機能によって、ハードディスク装置などの外部記憶装置に切替可能となっていることが多い。【００２９】
＜オペレーティングシステム１１の機能＞
オペレーティングシステム１１は、例えば、ファイル管理機能、メモリ管理機能、プロセス管理機能等を有する。オペレーティングシステム１１は、情報処理装置１からの通知(割り込み)を受信すると、所定の処理を実行する。例えば、オペレーティングシステム１１は、ＣＰＵ１５のハードウェアを通じて、緊急停止の要求を受け付け、緊急停止する。また、実施例１では、例えば、オペレーティングシステム１１は、予めシステム管理者が設定ファイル２３１に指定した仮想ＣＰＵまたは物理ＣＰＵのＴＬＢに登録されている情報を、システム管理者が設定ファイル２３１に指定しておいた出力先へ格納してシステムを再起動する。【００３０】
図２に、オペレーティングシステム１１の機能の詳細例を示す。図２に示すようにオペレーティングシステム１１は割り込み処理部２１、パニック処理部２２、ＴＬＢ情報採取部２３を備える。【００３１】
割り込み処理部２１は、ＣＰＵ１５が割り込みを受信すると、ＣＰＩＵ１５から割り込みが発生したことの通知を受信する。例えば、割り込み処理部２１は、ＣＰＵ１５の割り込みベクタに設定されたアドレスに格納されたハンドラと呼ばれるプログラムを実行するＣＰＵ１５として例示できる。割り込み処理部２１は、割り込みの種類に応じた処理を実行する。【００３２】
パニック処理部２２は、ＣＰＵ１５からオペレーティングシステム１１に対して、割り込み処理部２１を通じて、緊急停止が要求されたときに起動される。緊急停止は、パニックとも呼ばれる。緊急停止が要求されると、パニック処理部２２は、緊急停止に関連する処理を実行する。【００３３】
例えば、図２に示すように、パニック処理部２２は、表示／記録部２２１、ファイル同期処理部２２２、カーネルダンプ処理部２２３、再起動部２２４を有する。ＣＰＵ１５は、オペレーティングシステム１１に含まれるコンピュータプログラムを実行し、パニック処理部２２、例えば、表示／記録部２２１、ファイル同期処理部２２２、カーネルダンプ処理部２２３、再起動部２２４として機能する。【００３４】
表示／記録部２２１は、例えば、緊急停止に伴ってシステム管理者、あるいは、ユーザに通知されるメッセージを標準出力に出力し、図示しない端末に表示し、または、ディスク１４上のファイルなどに記録する。ユーザに通知されるメッセージには、緊急停止が要求される理由・原因を示すコードまたはメッセージ、理由・原因の発生した情報処理装置１の関連箇所、例えばハードウェア等を示す情報などが含まれる。【００３５】
ファイル同期部２２２は、ディスク１４に書き込まれるデータで、図示しないキャッシュメモリにキャッシュされたままディスク１４に書き込まれていないデータをディスク１４に書き込む。【００３６】
カーネルダンプ処理部２２３は、緊急停止に関連するメモリ１６の内容を標準出力に出力し、図示しない端末に表示し、または、ディスク１４上のファイルなどに記録する。【００３７】
再起動部２２４は、緊急停止完了後、例えば、システム管理者の指示を待ち、オペレーティングシステム１１を再起動する。【００３８】
ＴＬＢ情報採取部２３は、システム管理者の指定を取得し、取得した指定にしたがって、ＣＰＵ１５内のＴＬＢに関連する情報を採取する。ＴＬＢ情報採取部２３がＴＬＢの情報を採取する手段に相当する。【００３９】
ＴＬＢ情報採取部２３にはＴＬＢ情報採取設定ファイル（以下、単に設定ファイル２３１）が備えられている。システム管理者は、ＴＬＢ情報取得の対象となるタイミング、ＴＬＢ情報取得の対象となる仮想ＣＰＵ、ＴＬＢ情報取得の対象となる物理ＣＰＵ、取得したＴＬＢ情報の出力先などを設定ファイル２３１に指定する。設定ファイル２３１は、例えば、ディスク１４上のファイル、ディスク１４のファイルからメモリ１６上にロードされたテーブル等である。ＣＰＵ１５は、設定ファイル２３１の情報を読み出すコンピュータプログラムを実行し、前記ＴＬＢの情報が採取される処理部の指定と前記ＴＬＢの情報が採取されるタイミングの指定とを取得する手段として機能する。【００４０】
＜設定ファイル２３１の記述例＞
（１）採取タイミングの指定
ＴＬＢに登録されている情報を採取するタイミングを指定する場合は、予めシステム管理者が設定ファイル２３１に以下のように記述しておく。【００４１】
（１−１）オペレーティングシステム１１が緊急停止(パニック)した時；
パニック発生時にtlb-dump-cpuで指定されたＣＰＵのＴＬＢに登録されている情報を採取する場合の設定例を次に示す。
tlb-dump-timing ="panic";【００４２】
（１−２）ブート処理中のカーネル初期化時、すなわちまだ端末が使用できない状態；
ブート処理中のカーネル初期化時にtlb-dump-cpuで指定されたＣＰＵ（仮想ＣＰＵ、あるいは物理ＣＰＵ）のＴＬＢに登録されている情報を採取する場合の設定例を次に示す。
tlb-dump-timing="kernel-init";【００４３】
（２）ＴＬＢを採取する対象のＣＰＵの指定；
ＴＬＢに登録されている情報を採取する対象のＣＰＵ（仮想ＣＰＵ、あるいは物理ＣＰＵ）を指定する場合は、予めシステム管理者が設定ファイル２３１に以下のように記述しておく。【００４４】
（２−１）何らかの異常が発生して緊急停止したＣＰＵの指定：
緊急停止した仮想ＣＰＵまたは物理ＣＰＵのＴＬＢに登録されている情報を採取する場合の設定例は次の通りである。なお、仮想ＣＰＵまたは物理ＣＰＵが緊急停止する場合には、緊急停止する仮想ＣＰＵまたは物理ＣＰＵからオペレーティングシステム１１に緊急停止を要求する。したがって、オペレーティングシステム１１は、緊急停止した仮想ＣＰＵまたは物理ＣＰＵを認識している。
tlb-dump-cpu ="panic";【００４５】
（２−２）ＣＰＵ番号によるＣＰＵの指定(複数指定可能)；
システム管理者がＴＬＢの情報が採取される仮想ＣＰＵまたは物理ＣＰＵを指定したい場合に、以下の指定がなされる。例えば、ＣＰＵ番号が０と２の２つのＣＰＵのＴＬＢに登録されている情報を採取する場合の設定例は次の通りである。
tlb-dump-cpu ="0,2";【００４６】
（２−３）ＣＰＵ１５に搭載されているすべての仮想ＣＰＵまたは物理ＣＰＵ；
ＣＰＵ１５に搭載されているすべての仮想ＣＰＵまたは物理ＣＰＵのＴＬＢに登録されている情報を採取する場合の設定例は次の通りである。
tlb-dump-cpu ="all";【００４７】
（２−４）対象ＣＰＵの指定なし(ＴＬＢに登録されている情報を採取しない)；
ＴＬＢに登録されている情報を採取しない場合の設定例は、以下の通りである。
tlb-dump-cpu ="none";【００４８】
（３）ＴＬＢに登録されている情報の出力先を指定する場合は、予めシステム管理者が設定ファイル２３１に以下のように記述しておく。【００４９】
（３−１）ファイル
ＴＬＢに登録されている情報をファイル名 /work/tlb-dump.txtのファイルに出力する場合の設定例は、以下の通りである。
tlb-dump-output ="/work/tlb-dump.txt";【００５０】
（３−２）クラッシュダンプ ファイル；
情報処理装置１を緊急停止させてメモリダンプを採取するファイルへ、ＴＬＢの情報を出力する例は、以下の通りである。以下の指定により、ＣＰＵ１５は、情報処理装置１を緊急停止させた時にＴＬＢに登録されている情報をメモリダンプの一部として採取し、情報処理装置１、すなわち、オペレーティングシステム１１を再起動する。
tlb-dump-output ="crash-dump";【００５１】
（３−３）ライブダンプ (システムを稼動したままメモリダンプを採取)
情報処理装置１の稼働中にTLBに登録されている情報をメモリダンプの一部として採取し、情報処理装置１の運用を継続する場合の設定例は以下の通りである。
tlb-dump-output ="live-dump";【００５２】
（３−４）端末(コンソールともいう)；
ＴＬＢに登録されている情報をコンソールに出力する場合の設定例は以下の通りである。
tlb-dump-output ="console";【００５３】
＜比較例に係るシステムでの処理のフローチャート＞
図３に実施例１の比較例となるシステムの処理のフローチャートを例示する。比較例のシステムの構成は、図１の場合と同様であると仮定する。ただし、図３で示される処理は、ファームウェア１２上のツールの処理として例示できる。また、図１と同様に、ＣＰＵ１５内では、複数の仮想ＣＰＵあるいは物理ＣＰＵが利用可能であると仮定する。【００５４】
比較例のツールは、システム内の指定した単一の仮想ＣＰＵまたは物理ＣＰＵからＴＬＢ情報を採取する。そのため、全てのＣＰＵからＴＬＢの情報を採取する場合には、図３の処理のように、システムの仮想ＣＰＵ数、あるいは物理ＣＰＵ数分だけユーザがＴＬＢの取得コマンドを繰り返し実行する。なお、ユーザが繰り返しＴＬＢ採取コマンドを繰り返す代わりに、ファームウェア１２上のプログラムが、繰り返しＴＬＢ採取コマンドを発行するようにしても、手順は図３と同様である。【００５５】
図３の処理では、まず、ユーザが例えば、端末からファームウェア１２（(Service Processor）等を通じて、オペレーティングシステム１１を一時停止する（Ｃ１１）。【００５６】
次に、ユーザは、システムに搭載されているすべてのＣＰＵ（仮想ＣＰＵまたは物理ＣＰＵ）からＴＬＢに登録されている情報を採取したか否かを判定する（Ｃ１２）。【００５７】
システムに搭載されているすべてのＣＰＵ（仮想ＣＰＵまたは物理ＣＰＵ）からＴＬＢに登録されている情報を採取していない場合、ユーザは、ファームウェア１２上でＴＬＢ採取コマンド実行する。すると、ファームウェア１２から、システムのＣＰＵ１５に、ＴＬＢ採取対象のＣＰＵ番号と、ＴＬＢ情報採取要求とが通知される。ＣＰＵ１５は、指定されたＣＰＵ番号で特定される仮想ＣＰＵまたは物理ＣＰＵからＴＬＢ情報を採取する。そして、ファームウェア１２は、ＣＰＵ１５から、採取されたＴＬＢ情報を受け取る。そして、ファームウェア１２は、採取されたＴＬＢ情報を標準出力１７に表示する（Ｃ１３）。【００５８】
システムに搭載されているすべてのＣＰＵ（仮想ＣＰＵまたは物理ＣＰＵ）からＴＬＢに登録されている情報を採取した場合、ユーザは、ＣＰＵ１５でオペレーティングシステム１１を再開する。【００５９】
＜情報処理装置１の処理のフローチャート＞
図４および図５に実施例１に係る情報処理装置１でのＴＬＢ情報を採取する処理のフローチャートを示す。上述のように、情報処理装置１では予め設定ファイル２３１にtlb-dump-cpu ="all"等のように、対象とする仮想ＣＰＵ（仮想ＣＰＵの仕組みがない場合には、物理ＣＰＵ）のＣＰＵ番号を記述しておく。すると、オペレーティングシステム１１内の情報採取部２３の処理によって、システム管理者は、指定した仮想ＣＰＵまたは物理ＣＰＵからＴＬＢ情報を採取することができる。【００６０】
なお、例えば、UltraSPARCプロセッサを搭載したシステムの場合、情報採取部２３の処理を実行しているＣＰＵと採取対象のＣＰＵが一致する場合は、情報採取部２３が、ＴＬＢ情報を採取するＡＳＩ命令を実行する。ＴＬＢ情報を採取するＡＳＩ命令がＴＬＢ採取命令に相当する。なお、UltraSPARCプロセッサ以外のプロセッサの場合には、それぞれのプロセッサで用意されているＴＬＢ採取命令を実行すればよい。【００６１】
また、情報採取部２３の処理を実行しているＣＰＵと採取対象のＣＰＵが一致しない場合は、情報採取部２３が、他のＣＰＵに割り込みを送信するＡＳＩ命令を実行して、採取対象のＣＰＵでＴＬＢ情報を採取するＡＳＩ命令を実行するよう指示する。他のＣＰＵに割り込みを送信するＡＳＩ命令の詳細は、UltraSPARCプロセッサのマニュアル(UltraSPARC User's Manual Revision 2, July 1997)の９章に記載されている。他のＣＰＵに割り込みを送信する命令は、ＣＰＵ間通信命令、あるいは、クロスコールなどとも呼ばれる。したがって、UltraSPARCプロセッサ以外のプロセッサにおいては、それぞれのプロセッサで用意されているＣＰＵ間通信命令を利用すればよい。【００６２】
図４は、実施例１に係る情報処理装置１でのオペレーティングシステム１１のブートから停止までの処理を示すフローチャートである。この処理では、ＣＰＵ１５のいずれかの仮想ＣＰＵ（仮想ＣＰＵの仕組みがない場合には、物理ＣＰＵ）がオペレーティングシステム１１の処理（プロセス、スレッドともいう）を実行すると仮定する。また、ＴＬＢ取得の対象となる仮想ＣＰＵ（仮想ＣＰＵの仕組みがない場合には、物理ＣＰＵ）は、オペレーティングシステム１１の処理を実行している仮想ＣＰＵ（仮想ＣＰＵの仕組みがない場合には、物理ＣＰＵ）であってもよいし、他の仮想ＣＰＵ（仮想ＣＰＵの仕組みがない場合には、物理ＣＰＵ）であってもよい。ただし、以下の説明では、単にＣＰＵ１５がオペレーティングシステム１１の処理を実行するものとして説明する。【００６３】
まず、システム管理者による起動の指示により、情報処理装置１は、ブート処理を開始する（Ｋ１）。なお、起動指示は、例えば、ファームウェア１２を通じてＣＰＵ１５に通知される。すると、ブート処理の開始後、ＣＰＵ１５は、ＴＬＢ採取の指定があるか否かを判定する（Ｋ２）。Ｋ２の判定は、ブート処理中のＣＰＵ１５が設定ファイル２３１にアクセス可能になったときに設定ファイル２３１を読むことによって行えばよい。ただし、設定ファイル２３１の設定内容をブート用のディスクに保持することによって、ブート処理時にＣＰＵ１５が設定ファイル２３１の設定内容を読むようにしてもよい。ここで、ＴＬＢ採取の指定とは、ブート処理中のカーネル初期化時のＴＬＢ採取の指定、すなわち、tlb-dump-timing =" kernel-init "である。【００６４】
ＴＬＢ採取の指定があると、ＣＰＵ１５は、ＴＬＢ採取処理を実行する（Ｋ３）。Ｋ３では、ＣＰＵ１５は、ＴＬＢ採取部２３として、オペレーティングシステム１１に含まれるコンピュータプログラムを実行する。【００６５】
次に、ＣＰＵ１５は、割り込み待ちの状態となる（Ｋ４）。なお、ＴＬＢ採取の指定がない場合も、ＣＰＵ１５は、割り込み待ちの状態となる。そして、ＣＰＵ１５に割り込みが発生すると、割り込みの種類に応じて、ハンドラが起動され、割り込みの種類に応じた処理が実行される。【００６６】
例えば、割り込みが緊急停止を指示するものであった場合（Ｋ５でＹＥＳの場合）、ＣＰＵ１５は、緊急停止の処理を実行する（Ｋ６）。そして、ＣＰＵ１５は、処理を終了する。【００６７】
また、割り込みが緊急停止でなく（Ｋ５でＮＯの場合）、システム停止であった場合（Ｋ７でＹＥＳの場合）、ＣＰＵ１５は、ＴＬＢ採取の指定があるか否かを判定する（Ｋ９）。ここで、ＴＬＢ採取の指定とは、システム停止時のＴＬＢ採取の指定である。ＴＬＢ採取の指定があると、ＣＰＵ１５は、ＴＬＢ採取処理を実行する（Ｋ１０）。そして、ＣＰＵ１５は、処理を終了する。なお、Ｋ９の判定は、ＣＰＵ１５が設定ファイル２３１を読むことによって行えばよい。【００６８】
また、割り込みが緊急停止でなく、システム停止でもない場合（Ｋ７でＮＯの場合）、ＣＰＵ１５は、その他の処理を実行する（Ｋ８）。その後、ＣＰＵ１５のオペレーティングシステム１１を実行するプロセス（スレッド）は、割り込み待ちとなる（Ｋ４）。【００６９】
図５に、緊急停止の処理（図４のＫ６の詳細）を例示する。ＣＰＵ１５は、オペレーティングシステム１１に含まれるプログラムにより、図５に示す処理を実行する。この処理では、まず、ＣＰＵ１５は、ＴＬＢ採取の指定があるか否かを判定する（Ｋ６１）。Ｋ６１の判定は、ＣＰＵ１５が設定ファイル２３１を読むことによって行えばよい。ここで、ＴＬＢ採取の指定とは、緊急停止時のＴＬＢ採取の指定、すなわち、tlb-dump-timing ="panic"である。そして、ＴＬＢ採取の指定がある場合、ＣＰＵ１５は、ＴＬＢ採取処理を実行する（Ｋ６２）。次に、ＣＰＵ１５は、パニック処理部２２の処理を実行する（Ｋ６３）。パニック処理部２２の処理とは、例えば、図２に示した表示／記録部２２１、ファイル同期処理部２２２、カーネルダンプ処理部２２３、再起動部２２４等の処理をいう。【００７０】
図６に、ＴＬＢ採取処理の詳細例を示す。ＴＬＢ採取処理は、例えば、図４のＫ３、Ｋ１０、図５のＫ６２の処理の詳細である。ＣＰＵ１５は、オペレーティングシステム１１に含まれるプログラムを実行し、ＴＬＢ情報採取部２３として機能する。そこで、図６では、ＴＬＢ情報採取部２３が処理を実行するものとして説明する。【００７１】
図６の処理では、ＴＬＢ情報採取部２３は、設定ファイル２３１から、パラメータtlb-dump-cpuおよびtlb-dump-outputに指定された値を読み出す。そして、ＴＬＢ情報採取部２３は、パラメータtlb-dump-cpuおよびtlb-dump-outputに指定された値を判定し、指定された値に応じた処理を実行する。【００７２】
例えば、パラメータtlb-dump-cpuの指定値が"panic"であった場合（Ｓ１２でＹＥＳの場合）、ＴＬＢ情報採取部２３は、パニックが発生した仮想ＣＰＵ（仮想ＣＰＵの仕組みがない場合には、物理ＣＰＵ）からＴＬＢ情報を採取し、メモリ１６上に一時格納する（Ｓ１３）。【００７３】
また、パラメータtlb-dump-cpuの指定値がＣＰＵ番号であった場合（Ｓ１２でＮＯであって、かつ、Ｓ１４でＹＥＳの場合）、ＴＬＢ情報採取部２３は、指定されたＣＰＵ番号の仮想ＣＰＵ（仮想ＣＰＵの仕組みがない場合には、物理ＣＰＵ）からＴＬＢ情報を採取し、メモリ１６上に一時格納する（Ｓ１５）。【００７４】
また、パラメータtlb-dump-cpuの指定値が"all"であった場合（Ｓ１２、Ｓ１４でＮＯであって、かつ、Ｓ１６でＹＥＳの場合）、ＴＬＢ情報採取部２３は、ＣＰＵ１５内のすべての仮想ＣＰＵ（仮想ＣＰＵの仕組みがない場合には、すべての物理ＣＰＵ）からＴＬＢ情報を採取し、メモリ１６上に一時格納する（Ｓ１７）。【００７５】
また、パラメータtlb-dump-cpuの指定値が"none"であった場合（Ｓ１２、Ｓ１４、Ｓ１６でＮＯの場合）、ＴＬＢ情報採取部２３は、ＴＬＢ採取処理を実行しない（Ｓ１９）。【００７６】
そして、例えば、パラメータtlb-dump-outputの指定値が"ファイル名"であった場合（Ｓ２１でＹＥＳの場合）、ＴＬＢ情報採取部２３は、メモリ１６上に一時格納しておいた採取済みのＴＬＢ情報をファイル名で指定されたディスク１４上のファイルに出力する（Ｓ２２）。【００７７】
また、例えば、パラメータtlb-dump-outputの指定値が"crash-dump"であった場合（Ｓ
２１でＮＯであって、かつ、Ｓ２３でＹＥＳの場合）、ＴＬＢ情報採取部２３は、メモリ１６上に一時格納しておいた採取済みのＴＬＢ情報をシステム緊急停止時のメモリダンプ情報とともに標準出力１７に出力する（Ｓ２４）。Ｓ２４の場合、ＣＰＵ１５は、緊急停止することになる。
【００７８】
また、例えば、パラメータtlb-dump-outputの指定値が"live-dump"であった場合（Ｓ２１、Ｓ２３でＮＯであって、かつ、Ｓ２５でＹＥＳの場合）、ＴＬＢ情報採取部２３は、メモリ１６上に一時格納しておいた採取済みのＴＬＢ情報をシステム緊急停止なしの通常運用時のメモリダンプ情報とともに標準出力１７に出力する（Ｓ２６）。Ｓ２６の場合、ＣＰＵ１５は、オペレーティングシステム１１による処理を継続することになる。
【００７９】
また、例えば、パラメータtlb-dump-outputの指定値が"console"であった場合（Ｓ２１、Ｓ２３、Ｓ２５でＮＯの場合）、ＴＬＢ情報採取部２３は、メモリ１６上に一時格納しておいた採取済みのＴＬＢ情報をそのまま標準出力に出力する（Ｓ２８）。
【００８０】
以上述べたように、実施例１では、オペレーティングシステム１１内に設けられたＴＬＢ情報採取部２３が設定ファイル２３１に指定された仮想ＣＰＵまたは物理ＣＰＵのＴＬＢに登録されている情報を指定のタイミングで採取する。設定ファイル２３１でのタイミングの指定は、例えば、ブート時、緊急停止時、システム停止時等を含む。また、設定ファイル２３１での仮想ＣＰＵまたは物理ＣＰＵの指定は、例えば、ＣＰＵ番号による指定、緊急停止した仮想ＣＰＵ、物理の指定、全ＣＰＵ指定等を含む。さらに、ＴＬＢ情報採取部２３は採取した情報を設定ファイル２３１に指定された出力先へ格納する。したがって、実施例１の情報処理装置１は、オペレーティングシステム１１の障害など、トラブルの原因を調査するための情報採取および、動作確認(リグレッションテスト)を目的として、ＣＰＵ１５に含まれる仮想ＣＰＵあるいは物理ＣＰＵのＴＬＢに登録されている情報を採取することができる。ＴＬＢ情報の採取に際して、ＣＰＵ１５は、調査するトラブルや動作確認に有効であるとシステム管理者が考える情報の指定を受けることができる。そして、ＣＰＵ１５は、指定を受けた情報を選別して取得することができる。【００８１】
例えば、論理ＣＰＵを５１２個搭載した情報処理装置でシステムの緊急停止(パニック)が発生した場合を想定する。比較例の方法では、システム管理者は、ツールを繰り返し(５１２回)実行し、すべてのＣＰＵのＴＬＢに登録されている合計２００万以上のアドレス変換情報を採取する。【００８２】
一方、実施例１の情報処理装置１では、図６に示したように、システム管理者は、指定した特定の仮想ＣＰＵまたは物理ＣＰＵのＴＬＢ情報を取得できる。また、情報処理装置１では、システム管理者は、緊急停止（パニック）の原因となった仮想ＣＰＵまたは物理ＣＰＵのＴＬＢに登録されている情報を採取できる。このため、情報処理装置１では、比較例の場合よりも、採取するデータ量と採取にかかる時間を大幅に削減することができる。【００８３】
そして、図４、図５に示したように、報処理装置１では、システム管理者が指定した特定のタイミングでＴＬＢ情報を取得できる。なお、情報取得のタイミングは、図４に示した、ブート時、システム停止時、緊急停止時に限定されることはなく、その他の処理（図４のＫ８）において、情報を取得してもよい。【００８４】
さらに、何らかの異常が発生してシステムを緊急停止した場合、システム管理者は、ファームウェア１２でコマンドを実行するためにオペレーティングシステム１１を一時停止しなくてもよい。情報処理装置１では、システム管理者は、ＴＬＢに登録されている情報を採取するように、予め設定ファイル２３１に設定できる。そのため、システム管理者は、緊急停止時にも、容易にＴＬＢに登録されている情報を採取できる。
【実施例２】
【００８５】
図７を参照して実施例２に係る情報処理装置１の処理を説明する。上記実施例１では、システム管理者が指定したタイミングで、指定された仮想ＣＰＵまたは物理ＣＰＵのＴＬＢ情報を採取する処理例を示した。実施例２では、パニックが発生した時に、システム管理者指定の仮想ＣＰＵまたは物理ＣＰＵのＴＬＢ情報を採取する処理例を説明する。実施例２の他の構成および作用は、実施例１の場合と同様である。そこで、実施例１と同一の構成要素については、その説明を省略する。また、実施例１の図面は、実施例２おいても、そのまま適用できるものとして、以下の説明がなされる。【００８６】
図７は、実施例２に係る情報処理装置１の動作を例示するフローチャートである。実施例２では、予め設定ファイル２３１でtlb-dump-cpu ="0, 2"、tlb-dump-output ="crash-dump"を指定しておいた場合に、何らかの異常が発生して緊急停止(パニック)する際の処理を説明する。すなわち、緊急停止時に、ＣＰＵ番号０とＣＰＵ番号２の仮想ＣＰＵ（仮想ＣＰＵの仕組みがない場合には、物理ＣＰＵ）のＴＬＢに登録されている情報、およびメモリダンプが採取される。【００８７】
例えば、オペレーティングシステム１１が異常を検出すると、情報処理装置１の緊急停止(パニック)を実行する。実施例２では、情報処理装置１の緊急停止前に、オペレーティングシステム１１を実行する仮想ＣＰＵ（または物理ＣＰＵ）は、ＴＬＢ情報採取部２３を呼び出す。上記実施例１と同様、実施例２においても、ＣＰＵ１５内のいずれかの仮想ＣＰＵ（または物理ＣＰＵ）がプログラムを実行する場合に、単にＣＰＵ１５がプログラムを実行するという。すなわち、ＣＰＵ１５は、ＴＬＢ情報採取部２３として、オペレーティングシステム１１に含まれるプログラムを実行する。以下、図７の処理の実行主体がＴＬＢ情報採取部２３であるとして、処理を説明する。【００８８】
図７の処理では、オペレーティングシステム１１の稼働中、オペレーティングシステム１１が情報処理装置１の何らかの異常、例えば、ハードウェアの異常等を検出する。情報処理装置１の異常は、例えば、ハードウェアのトラップという処理によって検出される。すると、オペレーティングシステム１１を実行中の仮想ＣＰＵ（または物理ＣＰＵ）において、それぞれのトラップに対応する割り込みベクタに設定されたハンドラが起動される。そして、ハンドラは、オペレーティングシステム１１の緊急停止を要求する（Ｓ３１）。
【００８９】
オペレーティングシステム１１は、緊急停止の要求が発生すると、ＴＬＢ情報採取部２３を呼び出す（Ｓ３２）。例えば、Ｓ３２の処理は、ハンドラの中で実行するようにしてもよい。【００９０】
すると、ＴＬＢ情報採取部２３は、ＴＬＢ情報採取設定ファイル２３１から以下の情報を読み取る（Ｓ３３）。すなわち、tlb-dump-cpu ="0, 2"；tlb-dump-output ="crash-dump"；Ｓ３３によって、ＴＬＢ情報採取部２３は、処理対象の仮想ＣＰＵ（または物理ＣＰＵ）を指定するＣＰＵ番号と、採取したＴＬＢ情報の出力先を認識する。【００９１】
次に、ＴＬＢ情報採取部２３は、すべての採取対象の仮想ＣＰＵ（または物理ＣＰＵ）からＴＬＢに登録されている情報を採取したか否かを判定する（Ｓ３４）。【００９２】
すべての採取対象の仮想ＣＰＵ（または物理ＣＰＵ）からＴＬＢに登録されている情報を採取していない場合、ＴＬＢ情報採取部２３は、ＴＬＢ情報採取部２３の処理を実行している仮想ＣＰＵ（仮想ＣＰＵの仕組みがない場合には、物理ＣＰＵ）と、ＴＬＢ情報を採取する対象の仮想ＣＰＵ（仮想ＣＰＵの仕組みがない場合には、物理ＣＰＵ）とが一致するか否かを判定する（Ｓ３５）。【００９３】
Ｓ３５の判定で、一致しないと判定された場合、ＴＬＢ情報採取部２３は、ＴＬＢ情報を採取する対象の仮想ＣＰＵ（仮想ＣＰＵの仕組みがない場合には、物理ＣＰＵ）へＴＬＢ情報を採取するＡＳＩ命令を実行するように、指示する。そして、指示の結果、採取された情報をメモリ上に格納する。Ｓ３６で、１つの仮想ＣＰＵ（または物理ＣＰＵ）から他の仮想ＣＰＵ（または物理ＣＰＵ）に命令を指示する処理は、例えば、ＣＰＵ間で割り込みを通知することでなされる。ＣＰＵ間の割り込みは、クロスコールとも呼ばれる。ＣＰＵ間の割り込みを受けた他の仮想ＣＰＵ（または物理ＣＰＵ）では、通常の割り込みと同様に、ハンドラに制御が移動する。そして、ＣＰＵ間の割り込みに対応する所定の処理、例えば、ハンドラ実行中の仮想ＣＰＵ（または物理ＣＰＵ）のＴＬＢに登録された情報の採取がなされる。さらに、採取された情報は、メモリ１６上の所定の領域、例えば、複数の仮想ＣＰＵ間の共有メモリに格納され、ＴＬＢ情報採取部２３実行中の仮想ＣＰＵ（または物理ＣＰＵ）に引き渡される。ＴＬＢ情報採取部２３実行中の仮想ＣＰＵ（または物理ＣＰＵ）は、ＡＳＩ命令の実行を指示した仮想ＣＰＵ（または物理ＣＰＵ）によって採取された情報取得し、メモリ１４に一時的に格納する（Ｓ３６）。【００９４】
Ｓ３５の判定で、一致すると判定された場合、ＴＬＢ情報採取部２３は、ＴＬＢ情報採取部２３実行中の仮想ＣＰＵ（または物理ＣＰＵ）において、ＴＬＢ情報を採取するＡＳＩ命令を実行する。そして、ＴＬＢ情報採取部２３は、採取した情報をメモリ１４に一時的に格納する（Ｓ３７）。そして、ＴＬＢ情報採取部２３は、制御をＳ３４に戻す。【００９５】
すべての採取対象の仮想ＣＰＵ（または物理ＣＰＵ）からＴＬＢに登録されている情報を採取すると、ＴＬＢ情報採取部２３は、制御をＳ３８に進める。すると、パニック処理部２２の処理、例えば、パニックメッセージの表示／記憶部２２１による処理、ファイルシステムの同期処理部２２２による処理、カーネルダンプ処理部２２３による処理が実行される。実施例２では、カーネルダンプ処理部２２３の出力先に、ＴＬＢ情報採取部２３が採取したＴＬＢの情報が出力される。そして、再起動部２２４が情報処理装置１の再起動を行う（Ｓ３８）。【００９６】
以上述べたように、実施例２のＴＬＢ情報採取部２３は、ＴＬＢ情報採取設定ファイル２３１の設定にしたがい、ＣＰＵ番号が０と２である仮想ＣＰＵ（または物理ＣＰＵ）からＴＬＢに登録されている情報を採取し、メモリ上に格納する。その後、システムの緊急停止(パニック)が実行され、採取したＴＬＢ情報はクラッシュダンプとしてダンプファイルに出力される。【００９７】
なお、実施例２では、緊急停止時に、ＴＬＢ情報を取得する例を示したが、実施例１の図４、図５に示した処理を実行することにより、システム管理者が指定したタイミングでＴＬＢ採取処理を実行することもできる。【００９８】
すなわち、実施例２の情報処理装置１によれば、システム管理者が指定したタイミング、例えば、緊急停止時に、指定した仮想ＣＰＵまたは物理ＣＰＵからＴＬＢ情報を採取することができる。そして、システム管理者が指定した出力先に採取したＴＬＢ情報を出力することができる。
【実施例３】
【００９９】
図８を参照して実施例３に係る情報処理装置１の処理を説明する。上記実施例１では、システム管理者が指定したタイミングで、指定された仮想ＣＰＵまたは物理ＣＰＵのＴＬＢ情報を取得する処理例を示した。実施例２では、パニックが発生した時に、システム管理者指定の仮想ＣＰＵまたは物理ＣＰＵのＴＬＢ情報を採取する処理例を説明した。一方、実施例３では、システム管理者が情報処理装置１に備え付けられたスイッチ１３を押した時に、ＴＬＢ情報を取得する処理例を説明する。実施例３の他の構成および作用は、実施例１、または実施例２の場合と同様である。そこで、実施例１、または実施例２と同一の構成要素については、その説明を省略する。また、実施例１、実施例２の図面は、実施例３おいても、そのまま適用できるものとして、以下の説明がなされる。【０１００】
図８は、情報処理装置１に備え付けられたスイッチ１３をシステム管理者が押した時の処理を例示するフローチャートである。なお、図８は、例えば、予め設定ファイル２３１でtlb-dump-cpu ="all"、tlb-dump-output ="crash-dump"を指定しておいた場合を想定する。ただし、情報処理装置１のＴＬＢ採取処理は、tlb-dump-cpu ="all"、tlb-dump-output ="crash-dump"に限定される訳ではなく、他の設定でも同様に、実施例３の処理を適用できる。【０１０１】
まず、情報処理装置１に設けられたスイッチ１３が押下されると、ファームウェア１２がＣＰＵ１５（オペレーティングシステム１１に割り当てられた仮想ＣＰＵまたは物理ＣＰＵ）に割り込みを通知する。ＣＰＵ１５が割り込みを受信すると、割り込みベクタを通じて、割り込みに対応するハンドラが起動され、オペレーティングシステム１１は、割り込みを受信する（Ｓ４１）。【０１０２】
オペレーティングシステム１１がスイッチ１３の押下に対応する割り込みを受信すると、ＴＬＢ情報採取取得部２３を呼び出す（Ｓ４２）。【０１０３】
ＴＬＢ情報採取取得部２３は、設定ファイル２３１から、以下の情報を読み取る（Ｓ４３）。すなわち、tlb-dump-cpu =" all "；tlb-dump-output ="crash-dump"；Ｓ４３によって、ＴＬＢ情報採取部２３は、処理対象の仮想ＣＰＵ（または物理ＣＰＵ）を指定するＣＰＵ番号と、採取したＴＬＢ情報の出力先を認識する。Ｓ４３−Ｓ４８の処理は、図７でのＳ３３−Ｓ３８の処理と同様であるので、その説明を省略する。ただし、図８では、すべての仮想ＣＰＵまたは物理ＣＰＵのＴＬＢに登録された情報が採取される。【０１０４】
以上述べたように、情報処理装置１に備え付けられたスイッチ１３が押下されると、ＴＬＢ情報採取部２３は設定ファイル２３１の指定にしたがって、指定の仮想ＣＰＵまたは物理ＣＰＵからＴＬＢに登録されている情報を採取し、指定の出力先に出力する。したがって、情報処理装置１は、実施例３の手順によっても、指定のタイミングで、指定の対象からＴＬＢ情報を採取し、システム管理者に提供できる。【０１０５】
例えば、何らかの異常が発生してシステムがハングアップして該当システムにログインできない場合や、コマンド操作を行うための端末が使用できない場合は、各ＣＰＵ（仮想ＣＰＵまたは物理ＣＰＵ）のＴＬＢに登録されている情報を出力するためのツールを実行することができない場合も生じえる。したがって、各ＣＰＵのＴＬＢに登録されている情報を採取することができないため、オペレーティングシステム１１の障害などのトラブルの原因を調査できないこともある。【０１０６】
実施例３の処理によれば、ＴＬＢ情報採取部２３は、コンピュータの管理者がスイッチ１３を通じて指定したタイミングで、予めコンピュータの管理者が指定したＣＰＵのＴＬＢに登録されている情報を自動的に採取して、システム管理者が指定した出力先に格納する。また、情報処理装置１がハングアップしてログインできない場合や、コマンド操作を行うための端末が使用できない場合でも、トラブルの原因を調査するための情報採取および情報処理装置１の復旧処理を速やかに実施することが可能となる。
【実施例４】
【０１０７】
上記実施例１−３では、システム管理者が指定したタイミングで、指定された仮想ＣＰＵまたは物理ＣＰＵのＴＬＢ情報を取得する処理例を示した。実施例４では、ＴＬＢ情報の取得に際して、実行されるＡＳＩ命令が格納された物理アドレスを得るためのＴＬＢのエントリをロックする処理例を説明する。実施例４の他の構成および作用は、実施例１の場合と同様である。そこで、実施例１−３と同一の構成要素については、その説明を省略する。また、実施例１−３の図面は、実施例４おいても、そのまま適用できるものとして、以下の説明がなされる。【０１０８】
オペレーティングシステム１１の稼働中は、各ＣＰＵ（仮想ＣＰＵあるいは物理ＣＰＵ）のＴＬＢに登録されている情報が頻繁に更新される。トラブルの原因調査や動作確認を目的として、ファームウェア１２のコマンドなどの外部ツールでＴＬＢの情報を採取する場合は、情報採取処理中にＴＬＢに登録されている情報が更新されてしまう場合がある。すると、採取した情報と、問題が生じたときにＴＬＢに登録されていた情報、あるいは、システム管理者が指定したタイミングにおいてＴＬＢに登録されていた情報とが一致しない場合が生じえる。そして、情報が一致しない結果、問題の解析に不都合が生じることもある。そのような不都合の発生を抑制するため、例えば、オペレーティングシステム１１を一時的に停止することも考えられる。しかし、オペレーティングシステム１１を一時的に停止する処理によっても、各ＣＰＵ（仮想ＣＰＵあるいは物理ＣＰＵ）のＴＬＢに登録されている情報を更新してしまう可能性がある。【０１０９】
図９は、ＴＬＢ情報採取部２３の命令コードとデータ域を配置するメモリ領域に対応するＴＬＢのエントリをロックする処理を例示するフローチャートである。例えば、UltraSPARCプロセッサを搭載したシステムの場合は、ＴＬＢにロックビットが設けられている。そこで、実施例４の情報処理装置１は、ＴＬＢ情報採取部２３の命令コード（ＡＳＩ命令）とデータ域をメモリ上に配置する際、配置されるメモリ上のアドレスに対応するＴＬＢエントリが削除されないようにロックビットを設定する。ロックビットが設定されたＴＬＢエントリは、書き換え禁止となり、ＴＬＢエントリの情報が維持される。
【０１１０】
なお、ＴＬＢエントリをロックして、ロックしたＴＬＢエントリを使用する代わりに、予めロックされているＴＬＢエントリに対応するメモリ領域に、ＴＬＢ情報採取部２３の命令コード（ＡＳＩ命令）とデータ域を配置してもよい。また、予めＴＬＢに登録（ロック）されている仮想アドレスに対応する実アドレスのメモリ上に命令コード（ＡＳＩ命令）とデータ域を配置してもよい。要するに、実施例４の処理は、ＴＬＢ情報の採取のための命令コード（ＡＳＩ命令）実行に伴う副作用によって、ＴＬＢエントリの情報が更新されることを抑制するものである。【０１１１】
図９の処理は、例えば、オペレーティングシステム１１のブートのときに、オペレーティングシステム１１を起動する仮想ＣＰＵまたは物理ＣＰＵが実行するようにすればよい。以下、図９の処理は、ＣＰＵ１５が実行するものとして説明する。【０１１２】
図９の処理では、まず、ＣＰＵ１５は、ＴＬＢ情報採取部２３を配置するための仮想メモリ領域を確保する（Ｓ１）。【０１１３】
次に、ＣＰＵ１５は、仮想メモリ領域に対応する物理メモリ領域を確保する（Ｓ２）。【０１１４】
次に、ＣＰＵ１５は、論理／物理アドレス変換情報を作成し、ロックビットを設定して、ＴＬＢに登録する（Ｓ３）。ＣＰＵ１５は、情報が登録されたエントリをロックし、登録済みの情報の書き換えを抑止する手段として、Ｓ３の処理を実行する。【０１１５】
そして、ＣＰＵ１５は、ＴＬＢ情報採取部２３に対応するオペレーティングシステム１１のプログラムと、採取した情報の格納先をロックされたＴＬＢに対応するメモリ１４上に配置する（Ｓ４）。ＣＰＵ１５は、ＴＬＢアクセス命令を登録する手段として、Ｓ４の処理を実行する。【０１１６】
以上の処理により、ＴＬＢ情報採取部２３の実行によるＴＬＢ情報を採取するＡＳＩ命令の発行に伴うＴＬＢエントリの削除、あるいは、更新を抑制できる。すなわち、情報採取部２３の処理を実行することによるＴＬＢに登録されている情報を更新することが抑制される。したがって、システム管理者が所望するタイミングで所望するＴＬＢエントリに登録されていた情報を取得できる可能性が高まる。【０１１７】
ＴＬＢのエントリをロックする方法（ロックビット）の詳細は、UltraSPARCプロセッサのマニュアル(UltraSPARC User's Manual Revision 2, July 1997)の６章に記載されている。ただし、UltraSPARCプロセッサ以外のプロセッサにおいても、それぞれのプロセッサのアーキテクチャにしたがって、ＴＬＢのエントリをロックする機能が提供される。したがって、実施例４の処理は、UltraSPARCプロセッサ以外のプロセッサにおいても、同様の手順で適用可能である。【０１１８】
実施例４の情報処理装置１ではオペレーティングシステム１１を稼働させたまま、ＣＰＵのＴＬＢに登録されている情報を採取・保存することができる。従来の方法ではＴＬＢに登録されている情報の更新を防ぐためにオペレーティングシステムを一時停止する必要があり、その停止処理によってもＴＬＢに登録されている情報を更新してしまう可能性があった。しかし、実施例４の情報処理装置１では、ＴＬＢ情報採取処理の命令コードとデータ域をメモリ上に配置する際、対応するアドレス変換情報がＴＬＢから削除されないようにロックするか、予めＴＬＢに登録（ロック）されている仮想アドレス上に配置しておく。このため、命令コードを実行することでＴＬＢに登録されている情報を更新することが抑制される。したがって、ＴＬＢ採取のために、オペレーティングシステム１１を停止しなくても、トラブルの原因調査や動作確認に必要な情報を採取することができるようになる。
《コンピュータが読み取り可能な記録媒体》
コンピュータその他の機械、装置（以下、コンピュータ等）に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。【０１１９】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ、ＤＶＤ、ＢＤ（Blu-ray Disc）、ＤＡＴ（Digital Audio Tape）、８ｍｍテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスクやＲＯＭ等がある。
【符号の説明】
【０１２０】
１  情報処理装置
１１  オペレーティングシステム
１２  ファームウェア
１３  スイッチ
１４  ディスク
１５  ＣＰＵ
１６  メモリ
１７  標準出力
２１  割り込み処理部
２２  パニック処理部
２３  ＴＬＢ情報採取部
２３１  ＴＬＢ情報採取用設定ファイル
【図１】
0005423871.tif 000002
【図２】
0005423871.tif 000003
【図３】
0005423871.tif 000004
【図４】
0005423871.tif 000005
【図５】
0005423871.tif 000006
【図６】
0005423871.tif 000007
【図７】
0005423871.tif 000008
【図８】
0005423871.tif 000009
【図９】
0005423871.tif 000010