(57)【要約】【課題】プラットフォームマシンのプロセッサリソース々を、ターゲットマシンの状況に応じて、ターゲットマシンの各種プロセッサとして柔軟に利用する。【解決手段】論理プロセッサを含むターゲットマシンをエミュレートするプラットフォームマシン３００を備えるエミュレーション装置を用いる。プラットフォームマシン３００は、予備プロセッサを含む物理プロセッサ３１１と診断プロセッサ３４０とを備える。診断プロセッサ３４０は、物理プロセッサ３１１と論理プロセッサとを関連付けたテーブルを参照し、エミュレートのために物理プロセッサ３１１を論理プロセッサの機能に割り付けて動作させる。そして、ターゲットマシンとして稼動中の物理プロセッサ３１１の一つが障害により縮退した場合、縮退したプロセッサの割り付けられた論理プロセッサの種類に関わらず、テーブル内容を更新し、縮退したプロセッサの代替として予備プロセッサを組み込む。【選択図】図１
2008040540.tif 000002
【特許請求の範囲】
【請求項１】
複数の論理プロセッサを有するターゲットマシンをエミュレートするプラットフォームマシンを具備し、
前記プラットフォームマシンは、
予備プロセッサを含む複数の物理プロセッサと、
前記予備プロセッサを含む前記複数の物理プロセッサと前記複数の論理プロセッサとを関連付けたテーブルを参照して、前記エミュレートのために、前記複数の物理プロセッサを、前記複数の論理プロセッサの機能に割り付けて動作させる診断プロセッサと
を備え、
前記診断プロセッサは、前記ターゲットマシンとして稼動中の前記複数の物理プロセッサの一つが障害により縮退した場合、前記縮退したプロセッサの割り付けられた論理プロセッサの種類に関わらず、前記テーブルの内容を更新して、前記縮退したプロセッサの代替として前記予備プロセッサを組み込む
エミュレーション装置。
【請求項２】
請求項１に記載のエミュレーション装置において、
前記診断プロセッサは、前記複数の物理プロセッサの一つが障害により縮退した場合、前記テーブルにおいて、前記予備プロセッサのプロセッサ番号を読み替えて、前記縮退したプロセッサの替わりに割り当てる
エミュレーション装置。
【請求項３】
請求項１に記載のエミュレーション装置において、
前記診断プロセッサは、
前記複数の論理プロセッサが複数の区画に分割されているとき、前記予備プロセッサを除く前記複数の物理プロセッサを前記複数の区画に分割して割り付け、前記予備プロセッサを前記複数の区画に共通のプロセッサリソースとし、
前記複数の区画の一つに属する前記複数の物理プロセッサの一つが障害により縮退した場合、前記テーブルの内容を更新して、前記予備プロセッサを前記縮退したプロセッサの代替として組み込む
エミュレーション装置。
【請求項４】
請求項１に記載のエミュレーション装置において、
前記複数の論理プロセッサは、Ｉ／Ｏプロセッサを含み、
前記診断プロセッサは、
前記複数の物理プロセッサのうちの前記Ｉ／Ｏプロセッサに割り付けられたＩ／Ｏ用物理プロセッサの障害を検出したとき、前記Ｉ／Ｏプロセッサの動作を停止した後、前記テーブルの内容を更新して、前記予備プロセッサを前記Ｉ／Ｏ用物理プロセッサに割り付け、前記Ｉ／Ｏプロセッサのファームウェアを再起動して、前記障害からの復旧を実現する
エミュレーション装置。
【請求項５】
請求項１に記載のエミュレーション装置において、
前記複数の論理プロセッサは、演算プロセッサを含み、
前記診断プロセッサは、
前記複数の物理プロセッサのうちの前記演算プロセッサに割り付けられた演算用物理プロセッサの障害を検出したとき、前記演算プロセッサの動作を停止した後、前記テーブルの内容を更新して、前記予備プロセッサを前記演算用物理プロセッサに割り付け、前記演算プロセッサのファームウェアを再起動して、前記障害からの復旧を実現する
エミュレーション装置。
【請求項６】
複数の論理プロセッサを有するターゲットマシンをプラットフォームマシンを具備するエミュレーション装置でエミュレートするエミュレーション方法であって、
ここで、前記プラットフォームマシンは、
予備プロセッサを含む複数の物理プロセッサと、
診断プロセッサと
を備え、
前記エミュレーション方法は、
（ａ）診断プロセッサが、前記予備プロセッサを含む前記複数の物理プロセッサと前記複数の論理プロセッサとを関連付けたテーブルを参照して、前記エミュレートのために、前記複数の物理プロセッサを、前記複数の論理プロセッサの機能に割り付けて動作させるステップと、
（ｂ）前記診断プロセッサが、前記ターゲットマシンとして稼動中の前記複数の物理プロセッサの一つが障害により縮退した場合、前記縮退したプロセッサの割り付けられた論理プロセッサの種類に関わらず、前記テーブルの内容を更新して、前記縮退したプロセッサの代替として前記予備プロセッサを組み込むステップと
を具備する
エミュレーション方法。
【請求項７】
請求項６に記載のエミュレーション方法において、
前記（ｂ）ステップは、
（ｂ１）前記診断プロセッサが、前記複数の物理プロセッサの一つが障害により縮退した場合、前記テーブルにおいて、前記予備プロセッサのプロセッサ番号を読み替えて、前記縮退したプロセッサの替わりに割り当てるステップを備える
エミュレーション方法。
【請求項８】
請求項６に記載のエミュレーション方法において、
前記（ａ）ステップは、
（ａ１）前記診断プロセッサが、前記複数の論理プロセッサが複数の区画に分割されているとき、前記予備プロセッサを除く前記複数の物理プロセッサを前記複数の区画に分割して割り付け、前記予備プロセッサを前記複数の区画に共通のプロセッサリソースとするステップを備え、
前記（ｂ）ステップは、
（ｂ２）前記診断プロセッサが、前記複数の区画の一つに属する前記複数の物理プロセッサの一つが障害により縮退した場合、前記テーブルの内容を更新して、前記予備プロセッサを前記縮退したプロセッサの代替として組み込むステップを備える
エミュレーション方法。
【請求項９】
請求項６に記載のエミュレーション方法において、
前記複数の論理プロセッサは、Ｉ／Ｏプロセッサを含み、
前記（ｂ）ステップは、
（ｂ３）前記診断プロセッサが、前記複数の物理プロセッサのうちの前記Ｉ／Ｏプロセッサに割り付けられたＩ／Ｏ用物理プロセッサの障害を検出したとき、前記Ｉ／Ｏプロセッサの動作を停止した後、前記テーブルの内容を更新して、前記予備プロセッサを前記Ｉ／Ｏ用物理プロセッサに割り付け、前記Ｉ／Ｏプロセッサのファームウェアを再起動して、前記障害からの復旧を実現するステップを備える
エミュレーション方法。
【請求項１０】
請求項６に記載のエミュレーション方法において、
前記複数の論理プロセッサは、演算プロセッサを含み、
前記（ｂ）ステップは、
（ｂ４）前記診断プロセッサが、前記複数の物理プロセッサのうちの前記演算プロセッサに割り付けられた演算用物理プロセッサの障害を検出したとき、前記演算プロセッサの動作を停止した後、前記テーブルの内容を更新して、前記予備プロセッサを前記演算用物理プロセッサに割り付け、前記演算プロセッサのファームウェアを再起動して、前記障害からの復旧を実現するステップを備える
エミュレーション方法。
【請求項１１】
複数の論理プロセッサを有するターゲットマシンをプラットフォームマシンを具備するエミュレーション装置でエミュレートするエミュレーション方法をコンピュータに実行させるプログラムであって、
ここで、前記プラットフォームマシンは、
予備プロセッサを含む複数の物理プロセッサと、
診断プロセッサと
を備え、
前記プログラムは、
（ａ）診断プロセッサが、前記予備プロセッサを含む前記複数の物理プロセッサと前記複数の論理プロセッサとを関連付けたテーブルを参照して、前記エミュレートのために、前記複数の物理プロセッサを、前記複数の論理プロセッサの機能に割り付けて動作させるステップと、
（ｂ）前記診断プロセッサが、前記ターゲットマシンとして稼動中の前記複数の物理プロセッサの一つが障害により縮退した場合、前記縮退したプロセッサの割り付けられた論理プロセッサの種類に関わらず、前記テーブルの内容を更新して、前記縮退したプロセッサの代替として前記予備プロセッサを組み込むステップと
を具備するエミュレーション方法をコンピュータに実行させるプログラム。
【請求項１２】
請求項１１に記載のプログラムにおいて、
前記（ｂ）ステップは、
（ｂ１）前記診断プロセッサが、前記複数の物理プロセッサの一つが障害により縮退した場合、前記テーブルにおいて、前記予備プロセッサのプロセッサ番号を読み替えて、前記縮退したプロセッサの替わりに割り当てるステップを備える
プログラム。
【請求項１３】
請求項１１に記載のプログラムにおいて、
前記（ａ）ステップは、
（ａ１）前記診断プロセッサが、前記複数の論理プロセッサが複数の区画に分割されているとき、前記予備プロセッサを除く前記複数の物理プロセッサを前記複数の区画に分割して割り付け、前記予備プロセッサを前記複数の区画に共通のプロセッサリソースとするステップを備え、
前記（ｂ）ステップは、
（ｂ２）前記診断プロセッサが、前記複数の区画の一つに属する前記複数の物理プロセッサの一つが障害により縮退した場合、前記テーブルの内容を更新して、前記予備プロセッサを前記縮退したプロセッサの代替として組み込むステップを備える
プログラム。
【請求項１４】
請求項１１に記載のプログラムにおいて、
前記複数の論理プロセッサは、Ｉ／Ｏプロセッサを含み、
前記（ｂ）ステップは、
（ｂ３）前記診断プロセッサが、前記複数の物理プロセッサのうちの前記Ｉ／Ｏプロセッサに割り付けられたＩ／Ｏ用物理プロセッサの障害を検出したとき、前記Ｉ／Ｏプロセッサの動作を停止した後、前記テーブルの内容を更新して、前記予備プロセッサを前記Ｉ／Ｏ用物理プロセッサに割り付け、前記Ｉ／Ｏプロセッサのファームウェアを再起動して、前記障害からの復旧を実現するステップを備える
プログラム。
【請求項１５】
請求項１１に記載のプログラムにおいて、
前記複数の論理プロセッサは、演算プロセッサを含み、
前記（ｂ）ステップは、
（ｂ４）前記診断プロセッサが、前記複数の物理プロセッサのうちの前記演算プロセッサに割り付けられた演算用物理プロセッサの障害を検出したとき、前記演算プロセッサの動作を停止した後、前記テーブルの内容を更新して、前記予備プロセッサを前記演算用物理プロセッサに割り付け、前記演算プロセッサのファームウェアを再起動して、前記障害からの復旧を実現するステップを備える
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エミュレーション装置及びエミュレーション方法に関し、特に、プラットフォームマシン上にターゲットマシンをエミュレーションするエミュレーション装置及びエミュレーション方法に関する。
【背景技術】
【０００２】
エミュレーション機能を有するプラットフォームマシン（エミュレーション装置）が知られている。図１４は、エミュレーションが実現しようとしているコンピュータシステム（以下、「ターゲットマシン」ともいう）の構成を示すブロック図である。ターゲットマシン１００は、中央処理装置１０１及び複数のＩ／Ｏプロセッサ１５０−１〜１５０−ｍを具備する。中央処理装置１０１は、複数のＣＰＵボード１１０−１〜１１０−ｎ（ｎは２以上の自然数）、クロスバ１３０、診断プロセッサ１４０を搭載する。
【０００３】
診断プロセッサ１４０は、プラットフォームマシン（図示されず）上に実装されたマネジメントボードである。プラットフォームマシンの電源オン／オフ、プラットフォームマシンのＣＰＵボードやクロスバなどのＦＲＵ（Ｆｉｅｌｄ−Ｒｅｐｌａｃｅａｂｌｅ  Ｕｎｉｔｓ；現場交換可能ユニット）及びそのサブコンポーネント毎の構成の制御、障害の検出並びにログ採取・保存などの機能を有する。診断プロセッサ１４０は、外部の運用端末１７０に接続されている。オペレータは、運用端末１７０経由で、中央処理装置１０１の立ち上げ・立ち下げ、構成変更、障害時のログ採取などの運用操作を実施することができる。
【０００４】
ＣＰＵボード１１０−ｉ（ｉ＝１〜ｎ）の各々は、演算プロセッサ１１１−１〜１１１−４、メモリ１１６及びコントローラ１１５を備える。コントローラ１１５は、バスを介して演算プロセッサ１１１−１〜１１１−４及びメモリ１１６に接続されている。
【０００５】
クロスバ１３０は、複数のＣＰＵボード１１０−１〜１１０−ｎと複数のＩ／Ｏプロセッサ１５０−１〜１５０−ｍとを接続している。すなわち、中央処理装置１０１は、クロスバ１３０を介して、複クロスバ１３０数のＩ／Ｏプロセッサ１５０−１〜１５０−ｍに接続されている。Ｉ／Ｏプロセッサ１５０−ｊ（ｊ＝１〜ｍ）は、複数の入出力チャネルを搭載している。
【０００６】
本ターゲットマシン１００は、この構成において、演算プロセッサの一部（例示：演算プロセッサ１１１）を予備プロセッサとして予約しておく。それにより、他の演算プロセッサ（例示：１１２〜１１４）が障害にて縮退した際、当該予備プロセッサを代替として演算プロセッサに組み込む機能を提供する。
【０００７】
従来技術においては、このようなターゲットマシン１００を図２１に示すような構成のプラットフォームマシン２００（エミュレーション装置）上で実現していた。図２１は、プラットフォームマシンの構成を示すブロック図である。プラットフォームマシン２００は、中央処理装置２０１を具備する。中央処理装置２０１は、複数のＣＰＵボード２１０−１〜２１０−ｎ、クロスバ２３０、診断プロセッサ２４０、入出力チャネル２５０−１〜２５０−ｎを搭載する。図１４のターゲットマシン１００は、クロスバに１３０接続されたＩ／Ｏプロセッサ１５０がＯＳから渡されたチャネルプログラムを解析・実行し、入出力チャネルを制御している。一方、図２１のプラットフォームマシン２００は、クロスバ２３０に直接入出力チャネル２５０−１〜２５０−ｍが接続されている。
【０００８】
ＣＰＵボード２１０−ｉ（ｉ＝１〜ｎ）の各々は、プロセッサ２１１−１〜２１１−４、メモリ２１６及びコントローラ２１５を備える。コントローラ２１５は、バスを介してプロセッサ２１１−１〜２１１−４及びメモリ２１６に接続されている。
【０００９】
ここで、図２１のプロセッサ２１１−１〜２１１−４と、図１４の演算プロセッサ１１１−１〜１１１−４、Ｉ／Ｏプロセッサ１５０とは一般にそれぞれ異なる命令セットアーキテクチャをもつプロセッサである。そのため、プラットフォームマシン２００上でターゲットマシン１００の演算プロセッサ１１１−１〜１１１−４、Ｉ／Ｏプロセッサ１５０の機能を実現するためにエミュレーション技術を導入している。
【００１０】
従来技術において、ターゲットマシンは、エミュレーション層の階層構造によって実現されている。図１５は、プラットフォームマシンにおけるハードウェアとソフトウェアとの関係を示す概念図である。その階層構造は、ハードウェア層１０、ファームウェア層２０及びソフトウェア層３０を備える。一番下の階層であるハードウェア層１０は、プラットフォームマシン２００の実プロセッサ（物理プロセッサ）２１１を有している。エミュレーション機能は、ファームウェア層２０の演算プロセッサエミュレーション層２２において、この物理プロセッサ２１１の上にファームウェアとして実装される。ファームウェア層２０は、さらに幾つかの階層に分けることができる。リソースマッピング層２１は、個々の物理プロセッサ２１１をターゲットマシン１００上の演算プロセッサ１１１とＩ／Ｏプロセッサ１５０のいずれかにマッピングする。
【００１１】
このマッピングの結果、例えば、図１６に示したような対応関係が定義される。図１６は、ターゲットマシンの演算プロセッサ及びＩ／Ｏプロセッサと、プラットフォームマシンのプロセッサとの対応関係の一例を示す概念図である。この例において、プラットフォームマシン２００に実装された０番、１番、２番、及び３番のプロセッサ２１１は、それぞれターゲットマシン１００のＩ／Ｏプロセッサ１５０の０番、演算プロセッサ１１１の予備プロセッサ、演算プロセッサ２番、及び演算プロセッサ３番として定義される。ここで、このマッピング操作では、演算プロセッサ１１１とＩ／Ｏプロセッサ１５０のいずれかへの機能の割付のみ行われ、プロセッサ番号の読み替えは行われないことに留意する必要がある。このようなマッピングは、リソースマッピングテーブルとして例示されるテーブルによって実現することができる。図１７は、そのリソースマッピングテーブルの一例を示す表である。このリソースマッピングテーブルには、個々の物理プロセッサ２１１の番号（「物理Ｐｒｏｃ＃」と表記）ごとに、論理プロセッサの機能（「論理Ｐｒｏｃ＃」と表記）が割り付けられている。論理プロセッサの機能として、演算プロセッサ（「ＥＰ」と表記）、Ｉ／Ｏプロセッサ（「ＩＯＰ」と表記）、その他未使用のプロセッサ（「未定義」と表記）が定義されている。そのほか、予備プロセッサ（「状態」が「予備」と表記）として割り付ける演算プロセッサの番号も記載できる。このリソースマッピングテーブルの情報は、ターゲットマシン１００のシステム構成情報として診断プロセッサ２４０が予め保持している情報に基づいて、システム運用中はエミュレーションファームウェアからアクセス可能なメモリ上に展開されるものである。すなわち、診断プロセッサ２４０は、このリソースマッピングテーブルを予め保持し、このマッピング操作を行っている。
【００１２】
図１５を参照して、リソースマッピング層２１でのマッピングの結果、個々の物理プロセッサ２１１の機能が決定されると、演算プロセッサ１１１として割り付けられた物理プロセッサ２１１上では演算プロセッサ１１１のエミュレーションを実現するファームウェアが動作する。その結果として実現された演算プロセッサ１１１により、ソフトウェア層３０においてターゲットマシン１００のオペレーティングシステム（ＯＳ）３１、さらにはその上でミドルウェア３２やアプリケーション３３が動作する。Ｉ／Ｏプロセッサ１５０上ではＩ／Ｏプロセッサ１５０のエミュレーションを実現するファームウェアおよびチャネルを制御するためのデバイスドライバが搭載される。その結果としてターゲットマシン１００のＩ／Ｏプロセッサ機能が実現する。
【００１３】
従来技術によるターゲットマシン上で実現される予備の演算プロセッサ機能について動作の概要を説明する。図１８は、ターゲットマシン上における予備の演算プロセッサ機能について動作の概要の一例を示す概念図である。ここでは、例として、プラットフォームマシン２００上の物理プロセッサ２１１の２番で障害発生した場合を考える。診断プロセッサ２４０がプロセッサ障害を検出し物理プロセッサ２番を縮退すると、その結果としてターゲットマシン１００上の演算プロセッサ１１１の２番が縮退する。プロセッサの縮退は、診断プロセッサ２４０から演算プロセッサエミュレーション層のファームウェアを経由してターゲットマシン１００のＯＳへ通知される。プロセッサの縮退の通知を受けたＯＳは、予備の演算プロセッサ１１１の組み込みを試みる。組み込みに成功すれば、最終的に故障した演算プロセッサ１１１の２番の代わりに演算プロセッサ１１１の１番が組み込まれ、運用を継続することができる。
【００１４】
図１９は、演算プロセッサでの障害発生後に縮退に至るまでの動作を示すフローチャートである。
診断プロセッサ２４０は、プラットフォームマシン２００上の物理プロセッサ２１１での障害の発生を、ターゲットマシン１００上での演算プロセッサ１１１の障害として検出する（Ｓ７１）。ファームウェア及び診断プロセッサ２４０は、障害の内容から継続運用可能か否かを判断する（Ｓ７２）。診断プロセッサ２４０は、継続運用不可能であれば（Ｓ７２：Ｎｏ）、そのまま重障害としてシステムダウンさせる（Ｓ７７）。診断プロセッサ２４０は、継続運用可能であれば（Ｓ７２：Ｙｅｓ）、まず他の演算プロセッサに対して当該の演算プロセッサ１１１で障害が発生したことを通知する（Ｓ７３）。これを受けた他の演算プロセッサ１１１は、実行途中のプロセッサ間通信など、当該プロセッサ１１１に対するインターフェースを異常終了させる（Ｓ７４）。その後、診断プロセッサ２４０は、当該プロセッサ１１１の動作を停止させ、ターゲットマシン１００のＯＳから縮退させることによって（Ｓ７５）、システムの運用を継続する（Ｓ７６）。
【００１５】
ターゲットマシンにおいては、Ｉ／Ｏプロセッサの予備機能は実現されていない。図１４に示すように、Ｉ／Ｏプロセッサには物理的に入出力チャネルのケーブルが接続されており、演算プロセッサのように予備のＩ／Ｏプロセッサで代替することはできない。
【００１６】
図２０は、Ｉ／Ｏプロセッサで障害が発生した場合の障害処理動作の一例を示すフローチャートである。
診断プロセッサ２４０は、プラットフォームマシン２００上の物理プロセッサ２１１での障害の発生を、ターゲットマシン１００上でのＩ／Ｏプロセッサ１５０の障害として検出する（Ｓ８１）。ファームウェア及び診断プロセッサ２４０は、障害の内容から継続運用可能かどうかを判断する（Ｓ８２）。診断プロセッサ２４０は、継続運用不可能であれば（Ｓ８２：Ｎｏ）、そのまま重障害としてシステムダウンさせる（Ｓ９０）。診断プロセッサ２４０は、継続運用可能であれば（Ｓ８２：Ｙｅｓ）、まず各演算プロセッサ１１１に対し当該Ｉ／Ｏプロセッサ１５０にて障害が発生したことを通知する（Ｓ８３）。これを受けた演算プロセッサ１１１は、必要に応じて実行途中の入出力動作を異常終了させ、それをＯＳに通知する（Ｓ８４）。その後、診断プロセッサ２４０は、当該のＩ／Ｏプロセッサ１５０の動作を停止させ（Ｓ８５）、Ｉ／Ｏプロセッサ１５０のエミュレーションファームウェアの再起動を試みる（Ｓ８６）。診断プロセッサ２４０は、この再起動により、当該Ｉ／Ｏプロセッサ１５０および配下の入出力チャネルの再初期化を行い、成功した場合（Ｓ８７：Ｙｅｓ）、そのままＩ／Ｏプロセッサ１５０を継続運用する（Ｓ８９）。失敗した場合（Ｓ８７：Ｎｏ）、障害Ｉ／Ｏプロセッサ１５０を縮退させて（Ｓ８８）、運用を継続する（Ｓ８９）。
【００１７】
しかし、従来のエミュレーション装置（エミュレーションを実行するプラットフォームマシン）には、次のような課題がある。
【００１８】
第１の課題は、ターゲットマシン１００上のＩ／Ｏプロセッサ１５０のプロセッサ番号とプラットフォームマシン２００上の物理プロセッサ２１１の番号及び入出力チャネル番号とが一意に固定されているため、Ｉ／Ｏプロセッサ１５０の障害時に予備プロセッサなどで代替することができないということである。
【００１９】
第２の課題は、プラットフォームマシン２００上の物理プロセッサ２１１を予めターゲットマシン１００上の演算プロセッサ１１１又はＩ／Ｏプロセッサ１５０の何れかに割り付けているため、ターゲットマシン１００上の予備の演算プロセッサ１１１をＩ／Ｏプロセッサ１５０の障害時に予備のＩ／Ｏプロセッサとして転用できないということである。
【００２０】
第３の課題は、プラットフォームマシン２００上のプロセッサ２１１の番号とターゲットマシン１００上のプロセッサ１１１、１５０の番号とが１対１で対応するため、プラットフォームマシン２００に多数のプロセッサ２１１が実装されていたとしてもターゲットマシン１００の仕様上の上限を超えてプロセッサ２１１を利用することができないということである。
【００２１】
特開２００５−２１６１５１号公報に資源運用管理システム及び資源運用管理方法が開示されている。この資源運用管理システムは、情報処理装置と、前記情報処理装置と通信ネットワークを介して通信可能に接続し前記情報処理装置から送信されるデータの書き込み／読み出し要求に応じて記憶デバイスに対するデータの書き込み／読み出しを行うストレージ装置と、を含むストレージシステムにおける実資源の運用を管理する。前記実資源を割り当てることにより仮想資源を設定する仮想資源管理部と、前記実資源の稼働状態を管理する実資源管理部と、を有する。前記仮想資源管理部は、前記実資源の稼働状態に応じて前記設定を変更する。
【００２２】
特開２００３−３１６６４６号公報に画像形成装置及びメモリ管理方法が開示されている。この画像形成装置は、画像形成処理を行うアプリケーションのプロセスと、画像形成処理で利用されるハードウェア資源の管理を行うコントロールサービスのプロセスとにメモリをマップする。前記メモリ上に、前記プロセスによって直接マップ可能な直接マップ領域を少なくとも獲得する領域獲得手段と、前記直接マップ領域の物理アドレスと、仮想メモリ領域上に含まれる直接マップ領域用の仮想アドレスとを対応付けたアドレス変換手段とを有する。
【００２３】
特開２００５−１９６６０２号公報に無共有型データベース管理システムにおけるシステム構成変更方法が開示されている。これは、複数のＣＰＵリソースと、ストレージと、これらを接続するネットワークを含み、前記複数のＣＰＵリソースの少なくとも一部はデータベース探索プログラムが稼動することによりそれぞれ互いに素な処理対象データの処理を行うデータベースサーバとして機能する無共有型データベース管理システムにおけるシステム構成変更方法である。データベースの表へのアクセス処理を行わず、データのソート及びマージを専用に行うサーバを前記無共有型データベース管理システムに追加するステップ、ストレージＩ／Ｏリソースの追加を行うか否か判断するステップ、追加を行うと判断した場合に、前記データのソート及びマージを専用に行うサーバを通常のデータベースの表へのアクセスを行うサーバに変換するステップ、及び前記データベースサーバの処理付加が低いときにデータ再配置を行うステップを含む。
【００２４】
特開２００５−２２２１２３号公報に計算機システム、管理装置、ストレージ装置及びコンピュータ装置が開示されている。この計算機システムは、アプリケーションソフトウェアが動作するサーバ装置と、前記サーバ装置の動作に必要なデータを記憶するストレージ装置と、を備える。
前記サーバ装置は、ＣＰＵ、メモリ及びＩ／Ｏアダプタを含む計算資源と、前記計算資源を論理的に分割し、独立した仮想計算機として動作させる第１ハイパーバイザと、を有する。前記ストレージ装置は、ＣＰＵ、ディスクキャッシュ、Ｉ／Ｏアダプタ及び物理ディスクを含むストレージ資源と、前記ストレージ資源を論理的に分割し、独立した仮想ストレージ装置として動作させる第２ハイパーバイザと、を有する。前記ストレージ装置は、更に、前記サーバ装置に備わる計算資源を管理するサーバ資源管理テーブルと、前記ストレージ装置に備わるストレージ資源を管理するストレージ資源管理テーブルと、前記仮想計算機と前記仮想ストレージ装置との対応関係を管理する仮想ディスク管理テーブルと、を有する管理部を備える。前記第１ハイパーバイザは、前記サーバ資源管理テーブルの設定に基づいて前記計算資源を論理的に分割する。前記第２ハイパーバイザは、前記ストレージ資源管理テーブルの設定に基づいて前記ストレージ資源を論理的に分割する。
【００２５】
特開２００５−３０９５５３号公報に計算機が開示されている。この計算機は、。
ＣＰＵと、主記憶と、Ｉ／Ｏデバイスを接続するＩ／Ｏバスと、Ｉ／Ｏバスを制御するＩ／Ｏ制御部とを含む物理計算機を複数の論理区画に分割し、各論理区画上でそれぞれＯＳを動作させ、各論理区画に対する物理計算機の資源の割当を制御するファームウェアと、を備える。前記ファームウェアからの指令に基づいて前記Ｉ／Ｏデバイスと複数の論理区画の対応関係を設定するＩ／Ｏデバイス割り当て部と、前記Ｉ／Ｏデバイスからの処理要求を受け付ける処理要求受付部と、前記受け付けた処理要求を、前記Ｉ／Ｏデバイス割り当て部に設定された複数の論理区画へそれぞれ並列的に発行する並列処理発行部と、を備える。
【００２６】
【特許文献１】特開２００５−２１６１５１号公報
【特許文献２】特開２００３−３１６６４６号公報
【特許文献３】特開２００５−１９６６０２号公報
【特許文献４】特開２００５−２２２１２３号公報
【特許文献５】特開２００５−３０９５５３号公報
【発明の開示】
【発明が解決しようとする課題】
【００２７】
本発明の目的は、プラットフォームマシンの複数のプロセッサリソースの各々を、より有効に活用することが可能なエミュレーション装置及びエミュレーション方法を提供することにある。
【００２８】
本発明の他の目的は、プラットフォームマシンの複数のプロセッサリソースの各々を、ターゲットマシンの状況に応じて、ターゲットマシンの各種プロセッサとして柔軟に利用することが可能なエミュレーション装置及びエミュレーション方法を提供することにある。
【００２９】
本発明の更に他の目的は、一台のプラットフォームマシン上で複数のターゲットマシンを同時動作させることが可能なエミュレーション装置及びエミュレーション方法を提供することにある。
【課題を解決するための手段】
【００３０】
以下に、発明を実施するための最良の形態で使用される番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、特許請求の範囲の記載と発明を実施するための最良の形態との対応関係を明らかにするために括弧付きで付加されたものである。ただし、それらの番号・符号を、特許請求の範囲に記載されている発明の技術的範囲の解釈に用いてはならない。
【００３１】
上記課題を解決するために、本発明のエミュレーション装置は、複数の論理プロセッサ（１１１、１５０）を有するターゲットマシン（１００）をエミュレートするプラットフォームマシン（３００）を具備する。プラットフォームマシン（３００）は、予備プロセッサを含む複数の物理プロセッサ（３１１）と、予備プロセッサを含む複数の物理プロセッサ（３１１）と複数の論理プロセッサ（１１１、１５１）とを関連付けたテーブルを参照して、エミュレートのために、複数の物理プロセッサ（３１１）を、複数の論理プロセッサ（１１１、１５１）の機能に割り付けて動作させる診断プロセッサ（３４０）とを備える。診断プロセッサ（３４０）は、ターゲットマシン（１００）として稼動中の複数の物理プロセッサ（３１１）の一つが障害により縮退した場合、縮退したプロセッサの割り付けられた論理プロセッサの種類に関わらず、テーブルの内容を更新して、縮退したプロセッサの代替として予備プロセッサを組み込む。
【００３２】
上記のエミュレーション装置において、診断プロセッサ（３４０）は、複数の物理プロセッサ（３１１）の一つが障害により縮退した場合、テーブルにおいて、予備プロセッサのプロセッサ番号を読み替えて、縮退したプロセッサの替わりに割り当てる。
【００３３】
上記のエミュレーション装置において、診断プロセッサ（３４０）は、複数の論理プロセッサ（１１１、１５０）が複数の区画に分割されているとき、予備プロセッサを除く複数の物理プロセッサ（３１１）を複数の区画に分割して割り付け、予備プロセッサを複数の区画に共通のプロセッサリソースとする。そして、複数の区画の一つに属する複数の物理プロセッサ（３１１）の一つが障害により縮退した場合、テーブルの内容を更新して、予備プロセッサを縮退したプロセッサの代替として組み込む。
【００３４】
上記のエミュレーション装置において、複数の論理プロセッサ（１１１、１５１）は、Ｉ／Ｏプロセッサ（１５１）を含む。診断プロセッサ（３４０）は、複数の物理プロセッサ（３１１）のうちのＩ／Ｏプロセッサ（１５１）に割り付けられたＩ／Ｏ用物理プロセッサ（３１１）の障害を検出したとき、Ｉ／Ｏプロセッサ（１５１）の動作を停止した後、テーブルの内容を更新して、予備プロセッサをＩ／Ｏ用物理プロセッサ（３１１）に割り付け、Ｉ／Ｏプロセッサ（１５１）のファームウェアを再起動して、障害からの復旧を実現する。
【００３５】
上記のエミュレーション装置において、複数の論理プロセッサ（１１１、１５１）は、演算プロセッサ（１１１）を含む。診断プロセッサ（３４０）は、複数の物理プロセッサ（３１１）のうちの演算プロセッサ（１１１）に割り付けられた演算用物理プロセッサ（３１１）の障害を検出したとき、演算プロセッサ（１１１）の動作を停止した後、テーブルの内容を更新して、予備プロセッサを演算用物理プロセッサ（３１１）に割り付け、演算プロセッサ（１１１）のファームウェアを再起動して、障害からの復旧を実現する。
【００３６】
上記課題を解決するために、本発明のエミュレーション方法は、複数の論理プロセッサ（１１１、１５０）を有するターゲットマシン（１００）をプラットフォームマシン（３００）を具備するエミュレーション装置でエミュレートするエミュレーション方法である。ここで、プラットフォームマシン（３００）は、予備プロセッサを含む複数の物理プロセッサ（３１１）と、診断プロセッサ（３４０）とを備える。エミュレーション方法は、（ａ）診断プロセッサ（３４０）が、予備プロセッサを含む複数の物理プロセッサ（３１１）と複数の論理プロセッサ（１１１、１５１）とを関連付けたテーブルを参照して、エミュレートのために、複数の物理プロセッサ（３１１）を、複数の論理プロセッサ（１１１、１５１）の機能に割り付けて動作させるステップと；（ｂ）診断プロセッサ（３４０）が、ターゲットマシン（１００）として稼動中の複数の物理プロセッサ（３１１）の一つが障害により縮退した場合、テーブルの内容を更新して、縮退したプロセッサの代替として予備プロセッサを組み込むステップとを具備する。
【００３７】
上記のエミュレーション方法において、（ｂ）ステップは、（ｂ１）診断プロセッサ（３４０）が、複数の物理プロセッサ（３１１）の一つが障害により縮退した場合、テーブルにおいて、予備プロセッサのプロセッサ番号を読み替えて、縮退したプロセッサの替わりに割り当てるステップを備える。
【００３８】
上記のエミュレーション方法において、（ａ）ステップは、（ａ１）診断プロセッサ（３４０）が、複数の論理プロセッサ（１１１、１５０）が複数の区画に分割されているとき、予備プロセッサを除く複数の物理プロセッサ（３１１）を複数の区画に分割して割り付け、予備プロセッサを複数の区画に共通のプロセッサリソースとするステップを備える。（ｂ）ステップは、（ｂ２）診断プロセッサ（３４０）が、複数の区画の一つに属する複数の物理プロセッサ（３１１）の一つが障害により縮退した場合、テーブルの内容を更新して、予備プロセッサを縮退したプロセッサの代替として組み込むステップを備える。
【００３９】
上記のエミュレーション方法において、複数の論理プロセッサ（１１１、１５１）は、Ｉ／Ｏプロセッサ（１５１）を含む。（ｂ）ステップは、（ｂ３）診断プロセッサ（３４０）が、複数の物理プロセッサ（３１１）のうちのＩ／Ｏプロセッサ（１５１）に割り付けられたＩ／Ｏ用物理プロセッサ（３１１）の障害を検出したとき、Ｉ／Ｏプロセッサ（１５１）の動作を停止した後、テーブルの内容を更新して、予備プロセッサをＩ／Ｏ用物理プロセッサ（３１１）に割り付け、Ｉ／Ｏプロセッサ（１５１）のファームウェアを再起動して、障害からの復旧を実現するステップを備える。
【００４０】
上記のエミュレーション方法において、複数の論理プロセッサ（１１１、１５１）は、演算プロセッサ（１１１）を含む。（ｂ）ステップは、（ｂ４）診断プロセッサ（３４０）が、複数の物理プロセッサ（３１１）のうちの演算プロセッサ（１１１）に割り付けられた演算用物理プロセッサ（３１１）の障害を検出したとき、演算プロセッサ（１１１）の動作を停止した後、テーブルの内容を更新して、予備プロセッサを演算用物理プロセッサ（３１１）に割り付け、演算プロセッサ（１１１）のファームウェアを再起動して、障害からの復旧を実現するステップを備える。
【００４１】
上記課題を解決するために、本発明のプログラムは、複数の論理プロセッサ（１１１、１５０）を有するターゲットマシン（１００）をプラットフォームマシン（３００）を具備するエミュレーション装置でエミュレートするエミュレーション方法をコンピュータに実行させるプログラムである。ここで、プラットフォームマシン（３００）は、予備プロセッサを含む複数の物理プロセッサ（３１１）と、診断プロセッサ（３４０）とを備える。エミュレーション方法は、（ａ）診断プロセッサ（３４０）が、予備プロセッサを含む複数の物理プロセッサ（３１１）と複数の論理プロセッサ（１１１、１５１）とを関連付けたテーブルを参照して、エミュレートのために、複数の物理プロセッサ（３１１）を、複数の論理プロセッサ（１１１、１５１）の機能に割り付けて動作させるステップと；（ｂ）診断プロセッサ（３４０）が、ターゲットマシン（１００）として稼動中の複数の物理プロセッサ（３１１）の一つが障害により縮退した場合、テーブルの内容を更新して、縮退したプロセッサの代替として予備プロセッサを組み込むステップとを具備するエミュレーション方法をコンピュータに実行させる。
【００４２】
上記のプログラムにおいて、（ｂ）ステップは、（ｂ１）診断プロセッサ（３４０）が、複数の物理プロセッサ（３１１）の一つが障害により縮退した場合、テーブルにおいて、予備プロセッサのプロセッサ番号を読み替えて、縮退したプロセッサの替わりに割り当てるステップを備える。
【００４３】
上記のプログラムにおいて、（ａ）ステップは、（ａ１）診断プロセッサ（３４０）が、複数の論理プロセッサ（１１１、１５０）が複数の区画に分割されているとき、予備プロセッサを除く複数の物理プロセッサ（３１１）を複数の区画に分割して割り付け、予備プロセッサを複数の区画に共通のプロセッサリソースとするステップを備える。（ｂ）ステップは、（ｂ２）診断プロセッサ（３４０）が、複数の区画の一つに属する複数の物理プロセッサ（３１１）の一つが障害により縮退した場合、テーブルの内容を更新して、予備プロセッサを縮退したプロセッサの代替として組み込むステップを備える。
【００４４】
上記のプログラムにおいて、複数の論理プロセッサ（１１１、１５１）は、Ｉ／Ｏプロセッサ（１５１）を含む。（ｂ）ステップは、（ｂ３）診断プロセッサ（３４０）が、複数の物理プロセッサ（３１１）のうちのＩ／Ｏプロセッサ（１５１）に割り付けられたＩ／Ｏ用物理プロセッサ（３１１）の障害を検出したとき、Ｉ／Ｏプロセッサ（１５１）の動作を停止した後、テーブルの内容を更新して、予備プロセッサをＩ／Ｏ用物理プロセッサ（３１１）に割り付け、Ｉ／Ｏプロセッサ（１５１）のファームウェアを再起動して、障害からの復旧を実現するステップを備える。
【００４５】
上記のプログラムにおいて、複数の論理プロセッサ（１１１、１５１）は、演算プロセッサ（１１１）を含む。（ｂ）ステップは、（ｂ４）診断プロセッサ（３４０）が、複数の物理プロセッサ（３１１）のうちの演算プロセッサ（１１１）に割り付けられた演算用物理プロセッサ（３１１）の障害を検出したとき、演算プロセッサ（１１１）の動作を停止した後、テーブルの内容を更新して、予備プロセッサを演算用物理プロセッサ（３１１）に割り付け、演算プロセッサ（１１１）のファームウェアを再起動して、障害からの復旧を実現するステップを備える。
【発明の効果】
【００４６】
本発明により、プラットフォームマシンの複数のプロセッサリソースの各々を、より有効に活用することができる。プラットフォームマシンの複数のプロセッサリソースの各々を、ターゲットマシンの状況に応じて、ターゲットマシンの各種プロセッサとして柔軟に利用することができる。一台のプラットフォームマシン上で複数のターゲットマシンを同時動作させることができる。
【発明を実施するための最良の形態】
【００４７】
以下、本発明のエミュレーション装置の実施の形態に関して、添付図面を参照して説明する。エミュレーション装置は、コンピュータシステム（情報処理装置）である。ここでは、プラットフォームマシン３００を搭載した情報処理装置を例にして説明する。なお、プラットフォームマシン３００が実現しようとしているターゲットマシンは図１４に示すターゲットマシン１００である。
【００４８】
図１は、本発明のエミュレーション装置に含まれるプラットフォームマシンの実施の形態の構成を示すブロック図である。プラットフォームマシン３００は、中央処理装置３０１を具備する。中央処理装置３０１は、複数のＣＰＵボード３１０−１〜３１０−ｎ、クロスバ３３０、診断プロセッサ３４０、入出力チャネル３５０−１〜３５０−ｎを搭載する。プラットフォームマシン３００は、クロスバ２３０に直接入出力チャネル３５０−１〜３５０−ｍが接続されている。
【００４９】
ＣＰＵボード３１０−ｉ（ｉ＝１〜ｎ）の各々は、プロセッサ３１１−１〜３１１−４、メモリ３１６及びコントローラ３１５を備える。コントローラ３１５は、バスを介して演算プロセッサ３１１−１〜３１１−４及びメモリ３１６に接続されている。クロスバ３３０は、複数のＣＰＵボード３１０−１〜３１０−ｎと複数の入出力チャネル３５０−１〜３５０−ｍを接続している。
【００５０】
診断プロセッサ３４０は、プラットフォームマシン（図示されず）上に実装されたマネジメントボードである。プラットフォームマシンの電源オン／オフ、プラットフォームマシンのＣＰＵボードやクロスバなどのＦＲＵ（Ｆｉｅｌｄ−Ｒｅｐｌａｃｅａｂｌｅ  Ｕｎｉｔｓ；現場交換可能ユニット）及びそのサブコンポーネント毎の構成の制御、障害の検出並びにログ採取・保存などの機能を有する。診断プロセッサ３４０は、外部の運用端末３７０に接続されている。オペレータは、運用端末３７０経由で、中央処理装置１０１の立ち上げ・立ち下げ、構成変更、障害時のログ採取などの運用操作を実施することができる。
【００５１】
図３は、本発明におけるターゲットマシンの演算プロセッサ及びＩ／Ｏプロセッサと、プラットフォームマシンのプロセッサとの対応関係の一例を示す概念図である。この図は、エミュレーション装置としてのプラットフォームマシン３００の動作原理を示している。図において、一番下に表示されたプラットフォームマシン上にはプロセッサリソースとして（ｍ＋１）個の物理プロセッサ３１１が搭載可能である。一般にこの数（ｍ＋１）はターゲットマシン１００が利用できるプロセッサ数より大きい。本実施の形態では、物理プロセッサ３１１として０番から８番まで９個のプロセッサが搭載されているものとして説明する。
【００５２】
プラットフォームマシン３００の各物理プロセッサ３１１の０番〜７番は、プラットフォームマシン３００上で実現される複数のターゲットマシン１００の各々の仮想プロセッサ４１０としてそれぞれ割り付けられる。この図では、ターゲットマシン１００として区画０（１００ａ−０）と区画ｎ（１００ａ−ｎ）の二つを同時に立ち上げ、それぞれに４個ずつのプロセッサ３１１を仮想プロセッサ４１０として割り付けた例を示している。最後のプロセッサ８番は、後述する予備プロセッサである。
【００５３】
さらに、このようにして各区画１００ａ（区画０と区画ｎ）に割り付けた仮想プロセッサ４１０は、従来技術による仕組みと同様に、各区画内の演算プロセッサ１１１及びＩ／Ｏプロセッサ１５０へ割り付けられる。
【００５４】
図２は、プラットフォームマシンにおけるハードウェアとソフトウェアとの関係を示す概念図である。その階層構造は、ハードウェア層５０、ファームウェア層６０及びソフトウェア層７０を備える。ハードウェア層５０は、プラットフォームマシン３００の実プロセッサ（物理プロセッサ）３１１を有している。エミュレーション機能は、ファームウェア層６０の演算プロセッサエミュレーション層６３において、この物理プロセッサ３１１の上にファームウェアとして実装される。ファームウェア層６０は、さらに幾つかの階層に分けることができる。リソースマッピング層６２は、個々の物理プロセッサ３１１をターゲットマシン１００（各区画１００ａ）上の演算プロセッサ１１１とＩ／Ｏプロセッサ１５０のいずれかにマッピングする。
【００５５】
本実施の形態におけるファームウェア層６０は、従来技術と比較して、物理プロセッサ３１１のハードウェア層５０の上に、物理プロセッサ３１１のターゲットマシン１００の区画１００ａへの割り付けと、プロセッサ番号の読み替えを行う仮想化層６１が挿入されている。この仮想化層６１上のリソースマッピング層６２から上の実装は、従来技術によるプラットフォームマシン（エミュレーション装置）と同等である。
【００５６】
仮想化層６１におけるプロセッサ３１１の区画１００ａへの割り付けとプロセッサ番号の読替えは、仮想化テーブルとして例示されるテーブルによって実現することができる。図５は、仮想化テーブルの一例を示す表である。このテーブルに記載される情報は、ターゲットマシン１００のシステム構成情報として診断プロセッサ３４０が予め保持している情報に基づいて、エミュレーションファームウェアが参照可能なメモリ領域に展開されたものである。すなわち、診断プロセッサ３４０は、仮想化テーブルを予め保持し、このマッピング操作を行って。
【００５７】
この仮想化テーブルにおいて、個々のごとに、左端の列にはプラットフォームマシン３００上の物理プロセッサ３１１の番号（「物理Ｐｒｏｃ＃」と表記）が記載されている。その右側の列は、各々の物理プロセッサ３１１毎にプロセッサの状態（「状態」と表記）が記載されている。本実施の形態において、プロセッサ３１１の状態は予備プロセッサとして予約していることを示す“予備”、縮退して予備プロセッサに切り替わっていることを示す“縮退”（図示されず）、その他の状態である“−”の３種類の状態を定義している。
【００５８】
その右側の列には各物理プロセッサ３１１を割り付けるターゲットマシン１００の区画１００ａの番号（「区画」と表記）が記載されている。何れの区画にも割り付けられていないプロセッサは“未定義”と表記されている。予備プロセッサは初期状態では何れの区画にも割り付けられておらず、“未定義”と記載されている。
【００５９】
一番右側の列は、物理プロセッサ３１１をターゲットマシン１００の各区画１００ａに割り付けた後の区画内の仮想的なプロセッサ番号４１０（「仮想Ｐｒｏｃ＃」と表記）が記載されている。何れの区画１００ａにも割り付けられていないプロセッサ３１１は“未定義”と表記されている。また、予備プロセッサは初期状態ではいずれの区画１００ａにも割り付けられておらず、“未定義”と記載されている。
【００６０】
リソースマッピング層６２における仮想プロセッサ４１０の番号（「仮想Ｐｒｏｃ＃」）からターゲットマシン１００上の論理プロセッサ番号（「論理Ｐｒｏｃ＃」）への割り付けは、リソースマッピングテーブルとして例示されるテーブルによって実現することができる。図４は、そのリソースマッピングテーブルの一例を示す表である。このリソースマッピングテーブルに記載される情報は、従来技術においてプラットフォームマシン２００上の物理プロセッサからターゲットマシン１００上の論理プロセッサへの割り付けに用いられるテーブルと同等である。すなわち、診断プロセッサ３４０は、このリソースマッピングテーブルを予め保持しし、このマッピング操作を行っている。ただし、変換元のプロセッサが、従来技術では物理プロセッサ２１１だったものが、本実施の形態においては仮想化テーブルによって区画１００ａに割り付けられた後の仮想プロセッサ番号（「仮想Ｐｒｏｃ＃」）による点が異なる。この仮想プロセッサ番号は、図５の仮想プロセッサ番号と対応している。すなわち、テーブルの左端の列には当該区画１００ａにおいて仮想化されたプロセッサ番号（「仮想Ｐｒｏｃ＃」）が記載され、各々のプロセッサ番号ごとにその右側の列にはプロセッサの状態定義として予備プロセッサであることを示す“予備”もしくはそれ以外の“−”のいずれかが記載される。右端の列は当該プロセッサが演算プロセッサ１１１として定義されている場合は“ＥＰ”、Ｉ／Ｏプロセッサ１５０として定義されている場合は“ＩＯＰ”、それ以外の場合は“未定義”と記載される。
【００６１】
ただし、リソースマッピングテーブルは、同時に複数のターゲットマシン１００の区画１００ａを定義する場合、区画毎に用意する必要がある。
【００６２】
言うまでもなく、これらリソースマッピングテーブル及び仮想化テーブルの各々の図及び説明に記載された状態や番号等は説明の便宜上“予備”や“未定義”と表記しているだけである。すなわち、メモリ上に展開された実体がこのとおりの形式で格納されている必然性はなく、また本実施の形態の記載のテーブルの格納場所および格納形式が本発明の有効性に対しては何の影響も及ぼさないことは自明である。
【００６３】
なお、図２記載の演算プロセッサエミュレーション層及びデバイスドライバ、Ｉ／Ｏプロセッサエミュレーション層を含む上位の階層の実装形態については当業者にとって良く知られており、また本発明と直接関係しないのでこれ以上の詳細な説明は省略する。
【００６４】
次に、本発明のエミュレーション装置に含まれるプラットフォームマシンの実施の形態の動作について説明する。ここでは、本実施の形態の動作の一例としてプラットフォームマシンのプロセッサ３１１の０番で障害が発生した場合を考える。図６は、本発明のプラットフォームマシンの実施の形態の動作の概要の一例を示す概念図である。
【００６５】
プラットフォームマシン３００のプロセッサ３１１の０番は、図５の仮想化テーブルを参照して、区画０のターゲットマシン１００上の仮想プロセッサ０番に割り付けられている。更に、図４のリソースマッピングテーブルを参照して、仮想プロセッサ０番は、区画０のＩ／Ｏプロセッサ１５０の０番に割り付けられている。従って、図６に示すように、プラットフォームマシン３００のプロセッサ３１１の０番の障害は、区画０のターゲットマシン１００上のＩ／Ｏプロセッサ１５０の０番の障害として検出される。
【００６６】
図７は、本発明のプラットフォームマシンの実施の形態の動作の一例を示すフローチャートである。ここでは、Ｉ／Ｏプロセッサ１５０の０番の障害が検出された後の動作を図７を参照しながら説明する。
診断プロセッサ３４０は、プラットフォームマシン３００のプロセッサ３１１の０番の障害を、区画０のターゲットマシン１００上で障害がＩ／Ｏプロセッサ１５０の０番（以下「該当Ｉ／Ｏプロセッサ１５０）に発生したことを検出する（Ｓ０１）。ファームウェア及び診断プロセッサ３４０は、障害の内容から継続運用可能なものであるか否かを判定する（Ｓ０２）。診断プロセッサ３４０は、継続運用不可能と判定すれば（Ｓ０２：Ｎｏ）、そのまま重障害としてシステムダウンさせる（Ｓ１１）。診断プロセッサ３４０は、継続運用可能と判定すれば（Ｓ０２：Ｙｅｓ）、まず同一区画１００ａ内の各演算プロセッサ１１１に対して該当Ｉ／Ｏプロセッサ１５０の障害を通知する（Ｓ０３）。これを受けた演算プロセッサ１１１は、必要に応じ実行途中の入出力動作を異常終了させ、それをＯＳに通知する（Ｓ０４）。診断プロセッサ３４０は、その後、該当Ｉ／Ｏプロセッサ１５０の動作を停止させ（Ｓ０５）、その後に該当Ｉ／Ｏプロセッサ１５０の予備プロセッサへの切り替えを試みる（Ｓ０６）。
【００６７】
図８は、予備プロセッサへの切り替え操作を示すフローチャートである。診断プロセッサ３４０は、予備プロセッサへの切り替えを指示されると（Ｓ２１）、仮想化テーブル（図５）を参照して障害が発生したプロセッサのエントリ（以下「障害エントリ」）を特定し、その障害エントリの「状態」列の値を“縮退”に変更する（Ｓ２２）。診断プロセッサ３４０は、その後、「状態」列の値が“予備”であるエントリ（以下「予備エントリ」）を検索して予備プロセッサを特定する。そして、その予備エントリの「区画」列と「仮想Ｐｒｏｃ＃」列に、障害エントリの「区画」列と「仮想Ｐｒｏｃ＃」列の値を転写する（Ｓ２３）。この操作の結果、仮想化テーブルは、図５に示す初期状態から、図１０に示す内容に変更される。すなわち、図１０は、図８の動作により更新された仮想テーブル化を示している。
【００６８】
図７を参照して、診断プロセッサ３４０は、予備プロセッサへの切り替え完了後（Ｓ０６）、障害が発生した該当Ｉ／Ｏプロセッサ１５０のファームウェアの再起動を試みる（Ｓ０７）。ターゲットマシン１００上では、再起動を試みるプロセッサは障害を起こした該当Ｉ／Ｏプロセッサ１５０と同じプロセッサ番号である。しかし、リソースマッピングテーブル（図４）及び仮想化テーブル（図１０）を辿ると、区画０の該当Ｉ／Ｏプロセッサ１５０の０番が物理プロセッサ３１１の８番に割り付けられていることがわかる。それは、仮想化テーブル上区画０の仮想プロセッサ０番のエントリは２つ存在するが、物理プロセッサ０番のエントリは“縮退”状態のため、もう一つの物理プロセッサ８番が選択されるからである。そのため、診断プロセッサ３４０は、該当Ｉ／Ｏプロセッサ１５０のファームウェアを物理プロセッサ３１１の８番の上で起動する。
【００６９】
このようにして再起動に成功した場合（Ｓ０８：Ｙｅｓ）、該当Ｉ／Ｏプロセッサ１５０は再び区画０のターゲットマシン１００に組み込まれて継続運用される。何らかの理由で再起動に失敗した場合（Ｓ０８：Ｎｏ）、ターゲットマシン１００から該当Ｉ／Ｏプロセッサ１５０を縮退させて（Ｓ０９）、システムの運用を継続する（Ｓ１０）。
【００７０】
次に、このようにして予備プロセッサに切り替えた後に該当Ｉ／Ｏプロセッサ１５０を元の物理プロセッサ３１１へ切り戻す（元の状態に戻す）手順を説明する。
なお、一度、障害で予備プロセッサに切り替えたプロセッサを元に戻すためには、障害が発生したプロセッサを交換修理する必要がある。修理交換の手順としては、一度システムの運用を停止してオフラインで交換する方法や、ホットプラグ機能を備えたプラットフォームマシンであれば運用中にオンライン交換する方法等の従来知られた方法を用いることが出来る。ただし、本発明の範囲を超えるためここでは詳細には説明しない。
【００７１】
図１２は、切り替えられた予備プロセッサを元の物理プロセッサへ切り戻す動作を示すフローチャートである。切り戻し動作を実行するにあたり、事前にターゲットマシン１００上のＯＳからは該当Ｉ／Ｏプロセッサ１５０（＝予備プロセッサ）をオフライン状態にして動作を停止しておく必要がある。また、本実施の形態においては、切り戻し動作を実施する主体は運用端末３７０を操作するオペレータである。オペレータは、運用端末３７０を介して診断プロセッサ３４０に該当Ｉ／Ｏプロセッサ１５０の切り戻しを指示する（Ｓ４１）。診断プロセッサ３４０は、該当Ｉ／Ｏプロセッサ１５０がオフライン状態かどうかを確認する（Ｓ４２）。オフライン状態でない場合（Ｓ４２：Ｎｏ）、切り戻し動作を実施せず動作を終了する。該当I／Oプロセッサ１５０がオフライン状態である場合（Ｓ４２：Ｙｅｓ）、該当Ｉ／Ｏプロセッサ１５０（＝予備プロセッサ）を元の物理プロセッサに戻す動作を開始する（Ｓ４３）。この動作の詳細は図９に示す。
【００７２】
図９は、図１２における予備プロセッサを元の状態に戻す動作を示すフローチャートである。
該当Ｉ／Ｏプロセッサ１５０がオフライン状態である場合（Ｓ４２：Ｙｅｓ）、予備プロセッサを元の物理プロセッサに戻す動作を開始する（Ｓ３１）。まず、診断プロセッサ３７０は、仮想化テーブルを参照して切り戻したいプロセッサ（最初に障害が発生した物理プロセッサ：図１０の場合では、「物理Ｐｒｏｃ＃」０番）の「状態」欄を“縮退”から通常状態“−”へ戻す（Ｓ３２）。診断プロセッサ３７０は、仮想化テーブル中の状態欄が“予備”のエントリの「区画」欄と「仮想Ｐｒｏｃ＃」欄の値を“未定義”に変更する（Ｓ３３）。
【００７３】
以上で該当Ｉ／Ｏプロセッサの切り戻し動作は完了する（Ｓ７４）。しかし、この時点ではまだ該当Ｉ／Ｏプロセッサ１５０はオフライン状態なので、この後にオペレータ操作により該当Ｉ／Ｏプロセッサ１５０の組み込みが行われなければならない。この組み込み操作により該当Ｉ／Ｏプロセッサ１５０をＯＳに組み込む際にファームウェアが元の物理プロセッサ３１１の０番上で起動され、ターゲットマシン１００の状態は該当Ｉ／Ｏプロセッサ１５０の障害が発生する前の状態に戻る。
【００７４】
続いて、ターゲットマシン１００上で演算プロセッサ１１１で障害が発生した場合の予備プロセッサへの切り替え手順を説明する。
【００７５】
演算プロセッサ１１１に関しては、従来技術による予備演算プロセッサの実現方法からも明らかなように、図４のリソースマッピングテーブルにて予備の演算プロセッサを定義することによりリソースマッピング層６２から上の階層での操作だけで、従来どおりの予備機能を実現することは可能である。しかし、従来技術では予備演算プロセッサとして割り付けた物理プロセッサは特定区画の演算プロセッサの代替としてしか利用することは出来ない。従って、プロセッサリソースの有効活用の観点からも本実施の形態にて以下に示すような方法で実現する方がより好ましいことは明らかである。
【００７６】
図１３は、本発明のプラットフォームマシンの実施の形態の動作の他の一例を示すフローチャートである。ここでは、演プラットフォームマシン３００上で物理プロセッサ障害が発生した場合の予備プロセッサへの切り替え手順を説明する。
診断プロセッサ３４０が、その物理プロセッサ障害について仮想化テーブル、リソースマッピングテーブルを参照して対応する論理プロセッサを特定し、ある区画１００ａのターゲットマシン１００上で障害が一つの演算プロセッサ１１１（以下「該当演算プロセッサ１１１」）に発生したことを検出する（Ｓ５１）。診断プロセッサ３４０は、障害の内容から当該区画１００ａの継続運用が可能か否かを判断する（Ｓ５２）。継続運用が不可能な場合（Ｓ５２：Ｎｏ）、そのまま重障害としてシステムダウンさせる（Ｓ６１）。継続運用が可能な場合（Ｓ５２：Ｙｅｓ）、同一区画内の他の演算プロセッサ１１１に対し該当演算プロセッサ１１１の障害を通知する（Ｓ５３）。これを受けた他の演算プロセッサ１１１は、該当演算プロセッサ１１１に対する実行途中のプロセッサ間通信などの待ち合わせを異常終了させて運用を継続する（Ｓ５４）。その後、診断プロセッサ３４０は、該当演算プロセッサ１１１の動作を停止させ（Ｓ５５）、該当演算プロセッサ１１１に対応する物理プロセッサ３１１を予備プロセッサへ切り替えることを試みる（Ｓ５６）。ここで予備プロセッサへの切り替え操作は、先に説明した該当Ｉ／Ｏプロセッサ１５０の切り替えの場合と同様に、図８のフローチャートにて示した手順にて実行される。
【００７７】
図８を参照して、診断プロセッサ３４０は、予備プロセッサへの切り替えを指示されると（Ｓ２１）、仮想化テーブル（図５）を参照して障害が発生したプロセッサのエントリ（以下「障害エントリ」）を特定し、その障害エントリの「状態」列の値を“縮退”に変更する（Ｓ２２）。診断プロセッサ３４０は、その後、「状態」列の値が“予備”であるエントリ（以下「予備エントリ」）を検索して予備プロセッサを特定する。そして、その予備エントリの「区画」列と「仮想Ｐｒｏｃ＃」列に、障害エントリの「区画」列と「仮想Ｐｒｏｃ＃」列の値を転写する（Ｓ２３）。この操作の結果、仮想化テーブルは、図５に示す初期状態から、図１１に示す内容に変更される。すなわち、図１１は、図８の動作により更新された仮想テーブル化を示している。
【００７８】
図１３を参照して、その後、診断プロセッサ３４０は、障害が発生した演算プロセッサのファームウェアを再起動することを試みる（Ｓ５７）。この時点で該当演算プロセッサ１１１に対応付けられた物理プロセッサ３１１は仮想化テーブル（図５）にて予め予備プロセッサに定義された物理プロセッサ３１１へ切り替わっている。そのため、演算プロセッサ１１１のファームウェアは新しく定義しなおされた物理プロセッサ３１１上で起動する。そしてファームウェアの再起動が成功した場合（Ｓ５８：Ｙｅｓ）、該当演算プロセッサ１１１は再度ターゲットマシン上に組み込んで継続運用が可能になる。ファームウェアの再起動が何らかの理由で失敗した場合（Ｓ５８：Ｎｏ）、ターゲットマシン１００上から演算プロセッサ１１１を縮退させて（Ｓ５９）、運用を継続する（Ｓ６０）。
【００７９】
このようにして演算プロセッサ１１１を予備プロセッサへ切り替えることが出来る。なお、このようにして演算プロセッサ１１１が予備プロセッサへ切り替えられた状態を、元の状態に切り戻す手順は、図１２を参照して説明したＩ／Ｏプロセッサ１５０の切り戻し手順と同様の方法で実施できる。
【００８０】
本発明では、仮想化テーブルの機能により、予備プロセッサを、任意のターゲットマシン１００上で演算プロセッサ及びＩ／Ｏプロセッサの何れにも利用出来るように定義している。それにより、予備プロセッサを演算プロセッサとＩ／Ｏプロセッサの何れにも代替できることが可能となる。
【００８１】
また、本発明では、仮想化テーブルの機能により、予め予備プロセッサとして定義したプロセッサを任意のターゲットマシンのＩ／Ｏプロセッサとして利用できるようにしている。それにより、従来技術で実現されていなかった予備Ｉ／Ｏプロセッサ機能が提供できる。
【００８２】
更に本発明では、仮想化テーブルの機能により、プラットフォームマシンのプロセッサを任意の区画のターゲットマシンに割り付けられるようにしている。それにより、プラットフォームマシンに実装されるプロセッサがターゲットマシンの仕様上の上限を超えた数量実装されている場合でも、プラットフォームマシンのプロセッサを複数の区画のターゲットマシンに割り付けて同時動作させることによりプロセッサリソースの有効活用を図ることが出来る。
【００８３】
なお、上記実施の形態において、リソースマッピングテーブル及び仮想化テーブルを別個のテーブルとしている。しかし、高速化などを目的としてこれらを一つのテーブルにまとめ、ターゲットマシン上の論理プロセッサ番号からプラットフォームマシン上の物理プロセッサ番号を一度のテーブル参照で変換できるようにしても良い。また、論理プロセッサ番号から物理プロセッサ番号もしくは物理プロセッサ番号から論理プロセッサ番号へ双方向の変換を高速に行うために、本実施の形態に記載のテーブルの逆引きテーブルを設けることも有効である。
【００８４】
また、上記実施の形態の仮想化テーブルの機能拡張として、「状態」行に定義する“予備”状態を拡張して当該予備プロセッサが何れの区画に対する予備プロセッサであるかを定義することもできる。例えばある物理プロセッサを区画０と区画１に対する予備プロセッサとして定義した場合、区画２で発生したプロセッサ障害に対しては予備の代替を行わないようにすることが可能である。
【００８５】
同様に、上記実施の形態の仮想化テーブルの機能拡張として、「状態」行に定義する“予備”状態を拡張して当該予備プロセッサがターゲットマシン上の何れの機能に割り付けられ得るかを定義することも出来る。例えばある物理プロセッサをＩ／Ｏプロセッサに対する予備プロセッサとして定義した場合、演算プロセッサ障害に対しては仮想化層での予備の代替を行わないようにすることが可能である。
【００８６】
さらに、上記実施の形態の仮想化テーブルの機能拡張として、予備プロセッサを複数個定義することも可能である。ある論理プロセッサ（演算プロセッサ及びＩ／Ｏプロセッサのいずれか）の障害で予備プロセッサへの代替を行うにあたり仮想化テーブルを参照した時に複数の予備プロセッサの定義が見つかった場合、（１）定義された予備プロセッサのうち代替可能な最小番の物理プロセッサで代替する、（２）定義された予備プロセッサのうち、障害プロセッサと同一のＣＰＵボード上に定義された予備プロセッサが代替可能であれば、その予備プロセッサで優先的に代替する（この方法は予備への代替前後でＣＰＵボードごとの負荷バランスやメモリレイテンシが変わることを抑えられるのでシステム性能への影響を小さくしたい場合に有効である）、（３）定義された予備プロセッサのうち、障害プロセッサと異なるＣＰＵボード上に定義された予備プロセッサが代替可能であれば、その予備プロセッサで優先的に代替する（この方法は予備への切り替え後の継続運用中に障害プロセッサをオンラインで交換修理する場合を想定して交換時のシステムへの影響を小さくしたい場合に有効である）、などの優先順位付けに従って代替すべきプロセッサを決定することができる。
【００８７】
これらの複数の機能拡張を組み合わせて同時に実施することも可能である。
【００８８】
以上示したように、本発明は、プラットフォームマシンとは異なるアーキテクチャから構成されるターゲットマシンをプラットフォーム上のエミュレーションファームウェアによって実現するエミュレーション装置である。そして、このエミュレーション装置は、ターゲットマシンはプラットフォームマシンのプロセッサをリソースマッピングテーブルおよび仮想化テーブルによって演算プロセッサまたはＩ／Ｏプロセッサのいずれかの機能に割り付けて動作させる。このとき、プラットフォームマシン上のプロセッサを複数の区画に分割・割付を行う。加えて、各区画に共通のプロセッサリソースとして予備プロセッサを備えている。そして、ターゲットマシンとして稼動中の演算プロセッサもしくはＩ／Ｏプロセッサにて障害が発生し当該プロセッサが縮退した場合、縮退したプロセッサが演算プロセッサとＩ／Ｏプロセッサの何れであったかによらず、当該予備プロセッサを縮退したプロセッサの代替として組み込む機能を実装
している。
【００８９】
図６および図７において、Ｉ／Ｏプロセッサ障害を検出した際に診断プロセッサは、当該プロセッサの動作を停止した後、仮想化テーブルの内容を更新することによりターゲットマシン上のＩ／Ｏプロセッサに割り付けられたプラットフォームマシン上の物理プロセッサを変更する。その後、新たに割り付けられたＩ／Ｏプロセッサのファームウェアを再起動する。それにより、ターゲットマシン上で障害を起こしたＩ／Ｏプロセッサを再組み込み可能にして障害からの復旧を実現する。
【００９０】
同様に、図１３において、演算プロセッサ障害を検出した際に診断プロセッサは、当該プロセッサの動作を停止した後仮想化テーブルの内容を更新することによりターゲットマシン上の演算プロセッサに割り付けられたプラットフォームマシン上の物理プロセッサを変更する。その後、新たに割り付けられた演算プロセッサのファームウェアを再起動する。それにより、ターゲットマシン上で障害を起こした演算プロセッサを再組み込み可能にして障害からの復旧を実現する。
【００９１】
このように、本発明では、仮想化テーブルの機能により予備プロセッサとして予約したプラットフォームマシン上の物理プロセッサをターゲットマシン上の演算プロセッサもしくはＩ／Ｏプロセッサに任意に割り付けられるようにしているので、プロセッサが障害により縮退してもターゲットマシン上では障害プロセッサを再度組み込んで障害状態から復旧させることができる。
【００９２】
また、本発明は、仮想化テーブルの機能によりプラットフォームマシンがターゲットマシンの仕様上の上限を超えたプロセッサリソースを実装している場合でも、複数のターゲットマシン環境を同時に複数稼動させる機能を提供できるため、ターゲットマシンのオペレーティングシステムやアプリケーションに諸元の拡張などの改造を施すことなく、プラットフォームマシンのリソースを有効に活用することができる。
【００９３】
本発明は上記実施の形態に限定されず、本発明の技術思想の範囲内において、実施の形態は適宜変形又は変更され得ることは明らかである。
【図面の簡単な説明】
【００９４】
【図１】図１は、本発明のエミュレーション装置に含まれるプラットフォームマシンの実施の形態の構成を示すブロック図である。
【図２】図２は、プラットフォームマシンにおけるハードウェアとソフトウェアとの関係を示す概念図である。
【図３】図３は、本発明におけるターゲットマシンのプロセッとプラットフォームマシンのプロセッサとの対応関係の一例を示す概念図である。
【図４】図４は、そのリソースマッピングテーブルの一例を示す表である。
【図５】図５は、仮想化テーブルの一例を示す表である。
【図６】図６は、本発明のプラットフォームマシンの実施の形態の動作の概要の一例を示す概念図である。
【図７】図７は、本発明のプラットフォームマシンの実施の形態の動作の一例を示すフローチャートである。
【図８】図８は、予備プロセッサへの切り替え操作を示すフローチャートである。
【図９】図９は、図１２における予備プロセッサを元の状態に戻す動作を示すフローチャートである。
【図１０】図１０は、図７の動作途中における図８の動作により更新された仮想テーブル化を示している。
【図１１】図１１は、図１３の動作途中における図８の動作により更新された仮想テーブル化を示している。
【図１２】図１２は、切り替えられた予備プロセッサを元の物理プロセッサへ切り戻す動作を示すフローチャートである。
【図１３】図１３は、本発明のプラットフォームマシンの実施の形態の動作の他の一例を示すフローチャートである。
【図１４】図１４は、ターゲットマシンの構成を示すブロック図である。
【図１５】図１５は、プラットフォームマシンにおけるハードウェアとソフトウェアとの関係を示す概念図である。
【図１６】図１６は、ターゲットマシンのプロセッとプラットフォームマシンのプロセッサとの対応関係の一例を示す概念図である。
【図１７】図１７は、そのリソースマッピングテーブルの一例を示す表である。
【図１８】図１８は、ターゲットマシン上における予備の演算プロセッサ機能について動作の概要の一例を示す概念図である。
【図１９】図１９は、演算プロセッサでの障害発生後に縮退に至るまでの動作を示すフローチャートである。
【図２０】図２０は、Ｉ／Ｏプロセッサで障害が発生した場合の障害処理動作の一例を示すフローチャートである。
【図２１】図２１は、プラットフォームマシンの構成を示すブロック図である。
【符号の説明】
【００９５】
１００    ターゲットマシン
１０１、２０１、３０１    中央処理装置
１１０、１１０−１〜１１０−ｎ、２１０、２１０−１〜２１０−ｎ、３１０、３１０−１〜３１０−ｎ    ＣＰＵボード
１１１、１１１−１〜１１１−４    演算プロセッサ
２１１、２１１−１〜２１１−４、３１１、３１１−１〜３１１−４    プロセッサ
４１０    仮想プロセッサ
１１５、２１５、３１５    コントローラ
１１６、２１６、３１６    メモリ
１３０、２３０、３３０    クロスバ
１４０、２４０、３４０    診断プロセッサ
１５０    Ｉ／Ｏプロセッサ
１５１、１５１−１〜１５１−ｍ、２５１、２５１−１〜２５１−ｍ、３５１、３５１−１〜３５１−ｍ    入出力チャンネル
１７０、２７０、３７０    運用端末
２００、３００    プラットフォームマシン
１０、５０    ハードウェア層
２０、６０    ファームウェア層
２１、６３    演算プロセッサエミュレーション層
２２、６２    リソースマッピング層
６１    仮想化層
３０、７０    ソフトウェア層
３１、７１    オペレーティングシステム
３２、７２    ミドルウェア
３３、７３    アプリケーション
【図１】
2008040540.tif 000003
【図２】
2008040540.tif 000004
【図３】
2008040540.tif 000005
【図４】
2008040540.tif 000006
【図５】
2008040540.tif 000007
【図６】
2008040540.tif 000008
【図７】
2008040540.tif 000009
【図８】
2008040540.tif 000010
【図９】
2008040540.tif 000011
【図１０】
2008040540.tif 000012
【図１１】
2008040540.tif 000013
【図１２】
2008040540.tif 000014
【図１３】
2008040540.tif 000015
【図１４】
2008040540.tif 000016
【図１５】
2008040540.tif 000017
【図１６】
2008040540.tif 000018
【図１７】
2008040540.tif 000019
【図１８】
2008040540.tif 000020
【図１９】
2008040540.tif 000021
【図２０】
2008040540.tif 000022
【図２１】
2008040540.tif 000023