(57)【要約】【課題】ハードウェアの動作時間も模擬することが出来るエミュレータを提供する。【解決手段】情報処理装置上で実行されることによって、模擬対象の装置のハードウェア構造を模擬するエミュレータであって、上記ハードウェア構造に含まれた構造部分を模擬する仮想的ハードウェア部分を有し、この仮想的ハードウェア部分が、上記仮想的ハードウェア部分に対応付けられた情報処理装置内の現実のハードウェア部分を駆動させる駆動部と、上記仮想的ハードウェア部分が模擬する構造部分が入力に対して示す応答結果を模擬するために、上記駆動部による現実のハードウェア部分の駆動後に情報処理装置上で実行される応答部とを備える。【選択図】図１
2012168851.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置上で実行されることによって、模擬対象の装置のハードウェア構造を模擬するエミュレータであって、
前記ハードウェア構造に含まれた構造部分を模擬する仮想的ハードウェア部分を有し、この仮想的ハードウェア部分が、
前記仮想的ハードウェア部分に対応付けられた前記情報処理装置内の現実のハードウェア部分を駆動させる駆動部と、
前記仮想的ハードウェア部分が模擬する構造部分が入力に対して示す応答結果を模擬するために前記駆動部による現実のハードウェア部分の駆動後に前記情報処理装置上で実行される応答部と、
を備えたことを特徴とするエミュレータ。
【請求項２】
前記情報処理装置内に存在しているハードウェア部分を探索し、探索で得たハードウェア部分を、前記仮想的ハードウェア部分に対応付ける対応部を備えたことを特徴とする請求項１記載のエミュレータ。
【請求項３】
前記対応部は、前記仮想的ハードウェア部分に対応付けるべきハードウェア部分の優先順位に基づいて、前記探索で得たハードウェア部分を、該優先順位に従って前記仮想的ハードウェア部分に対応付けるものであることを特徴とする請求項２記載のエミュレータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本件開示は、エミュレータに関する。
【背景技術】
【０００２】
近年の技術進歩の加速化に伴って、特に情報処理関連の装置について開発期間の短縮化が求められている。そのため、自社のみで全ての部品を開発して製造する製造方式は減少し、その一方で、複数社で別々に開発して製造した部品やソフトウェアを集めて１つの装置をくみ上げる製造方式が増加している。大規模な装置の場合には、ソフトウェアも細かいソフトウェア部分に分けて開発製造することも多いので、ソフトウェア部分をくみ上げた後のデバッグが重要である。しかし、多くのソフトウェアは、装置のハードウェア上で実行させてみないとデバッグできず、デバッグに掛かる時間の短縮が困難であった。
【０００３】
このデバッグの時間を短縮する方法としては、試作装置を多数用意して同時にデバッグを行うことが考えられるが、試作装置が多いことでコストアップに繋がる恐れがある。しかも、ハードウェアに修正（改版）が生じた場合には多数の試作装置も作り直すことになるので、工数が増加してしまう結果、開発期間の短縮化にならない恐れもある。
【０００４】
そこで、装置全体あるいは一部分についてハードウェアの動作をソフトウェアで模擬する方法が採用されるようになってきている。このようにハードウェアの動作を模擬するソフトウェアは、一般にエミュレータと称される。そして、このエミュレータ等を用いて、特定条件下などでハードウェアの動作を試すことは、一般にシミュレーションと称される。
【０００５】
エミュレータを試作装置として用いて、装置に搭載予定のソフトウェアをそのエミュレータ上で実行させることによって、実際の装置に搭載したときの動作をシミュレートすることが出来る。そして、そのようなシミュレーションの結果を参照することでソフトウェアのデバッグが可能となる。
【０００６】
このようなシミュレーションに関し、効率的なシミュレーションの提案がなされている。この提案では、シミュレーション対象計算機システムが持つメモリ、ハードディスク装置、入出力装置、にそれぞれ相当する実際のハードウェアを用意してシミュレーション実行計算機システムに接続する。また、シミュレーション対象計算機システムが持つＣＰＵ等についてはシミュレーション実行計算機システム内のメモリにモデルを構築する。そして、シミュレーション対象計算機システムのシミュレーションに際しては、用意された実際のハードウェアとメモリに構築されたモデルが用いられる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平６−１８７１９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、実際のハードウェアを用意する上記方法によれば、試作装置を準備する方法と同様な事情でコストアップなどの恐れが生じると考えられる。
【０００９】
一方、エミュレータでソフト的に模擬されているハードウェアは、実際のハードウェアが行う全ての動作を再現することは当然無理である。そこで、一般的には、入力と、その入力に反応した出力との対応を定義したいわば関数としてハードウェア要素が用意される。しかしながら、そのように関数として用意されたハードウェア要素では、実際のハードウェアの動作時に生じる動作時間の経過を模擬することが難しい。特に、実際のハードウェアでは、動作時間は一定の遅延ではなくて、動作状況の違いによってばらつきなどを生じるため、そのようなばらつきなども含めて動作時間の模擬が望まれている。
【００１０】
上記事情に鑑み、本件開示は、ハードウェアの動作時間も模擬することが出来るエミュレータを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するエミュレータは、情報処理装置上で実行されることによって、該情報処理装置とは別の装置のハードウェア構造を模擬する。このエミュレータは、上記ハードウェア構造に含まれた構造部分を模擬する仮想的ハードウェア部分を有している。そして、この仮想的ハードウェア部分は、応答部と駆動部とを備えている。
【００１２】
上記駆動部は、上記仮想的ハードウェア部分に対応付けられた上記情報処理装置内のハードウェア部分を駆動させるものである。
【００１３】
上記応答部は、上記仮想的ハードウェア部分が模擬する構造部分が入力に対して示す応答結果を模擬するために上記駆動部による現実のハードウェア部分の駆動後に上記情報処理装置上で実行されるものである。
【発明の効果】
【００１４】
本件開示によれば、エミュレータでハードウェアの動作時間も模擬することが出来る。
【図面の簡単な説明】
【００１５】
【図１】エミュレータの具体的な第１実施形態を示す図である。
【図２】第２実施形態のエミュレータを実行する情報処理装置を表す構造図である。
【図３】エミュレータが模擬する模擬対象装置の一例に相当するストレージ装置を表す構造図である。
【図４】図３に示すストレージ装置を模擬するエミュレータを表す図である。
【図５】情報処理装置のメモリ上に展開された本体部（仮想ＮＡＳ）を示す図である。
【図６】仮想ＨＤＣの構造を示す図である。
【図７】仮想ＬＡＮボードの構造を示す図である。
【図８】仮想ＮＡＳの起動処理を表すフローチャートである。
【図９】対応表の一例を示す図である。
【図１０】優先表の一例を示す図である。
【図１１】仮想ＨＤＤへのアクセスにおける処理手順を表す図である。
【図１２】仮想ＨＤＤへのアクセス処理のうちリード処理の手順を表したフローチャートである。
【図１３】仮想ＨＤＤへのアクセス処理のうちライト処理の手順を表したフローチャートである。
【図１４】仮想ＬＡＮボードへのアクセスにおける処理手順を表す図である。
【図１５】仮想ハードディスク装置が複数備えられた変形例における仮想ハードディスク装置へのアクセスの処理手順を示す図である。
【発明を実施するための形態】
【００１６】
上記説明したエミュレータに対する具体的な実施形態を、以下図面を参照して説明する。
【００１７】
図１は、エミュレータの具体的な第１実施形態を示す図である。
【００１８】
図１に示すエミュレータ１０は、現実のハードウェア部分２１を有する情報処理装置２０上で実行されることによって、模擬対象の装置のハードウェア構造を仮想的に模擬する。情報処理装置２０上でのエミュレータ１０の実行とは、具体的には、情報処理装置２０のメモリ上にエミュレータ１０が展開されてＣＰＵ等で処理されることである。
【００１９】
エミュレータ１０には、模擬対象の装置のハードウェア構造に含まれた構造部分を模擬する仮想的ハードウェア部分１１が備えられている。そして、仮想的ハードウェア部分１１には応答部１２と駆動部１３が備えられている。
【００２０】
応答部１２は情報処理装置２０上で実行される。そして、仮想的ハードウェア部分１１が模擬する構造部分が入力に対する応答結果を模擬する。このような応答部１２の模擬により、模擬対象の装置における内部動作や外部への応答動作などにおける動作結果が模擬されることとなる。ただし、応答部１２で模擬されるのは結果であって経過は模擬されない。
【００２１】
駆動部１３は、少なくとも１つの仮想的ハードウェア部分１１に備えられているが、全ての仮想的ハードウェア部分１１に備えられているとは限らない。そして、駆動部１３を備えた仮想的ハードウェア部分１１には、情報処理装置２０が有する現実のハードウェア部分２１が対応付けられている。駆動部１３は、仮想的ハードウェア部分１１に対応付けられているハードウェア部分２１を、この仮想的ハードウェア部分１１における応答部１２が実行される場合に応答部１２の実行に先立って駆動させる。逆に言えば、応答部１２は、駆動部１３によるハードウェア部分２１の駆動後に実行される。駆動部１３によるこのような駆動の結果、模擬対象の装置における動作時間が模擬されることとなる。
【００２２】
つまり、図１に示すエミュレータ１０によれば、模擬対象の装置の動作がハードウェアの動作時間も含めて模擬されることとなるので、エミュレータ１０の精度が高い。しかも、エミュレータ１０がハードウェアの動作時間の模擬に用いる現実のハードウェア部分は、このエミュレータ１０を実行する情報処理装置２０のハードウェア部分２１である。従って、ハードウェアの動作時間の模擬用に余計なハードウェアを用意する必要もない。
【００２３】
次に、より具体的な第２実施形態について説明する。
【００２４】
図２は、第２実施形態のエミュレータを実行する情報処理装置を表す構造図である。
【００２５】
図２に示す情報処理装置１００は、現実のハードウェア要素として、ＣＰＵ１１０とノースブリッジ１２０とメモリ１３０とサウスブリッジ１４０とハードディスク装置１５０とＵＡＲＴ（Universal Asynchronous Receiver/Transmitter）１６０とを備えている。
【００２６】
ＣＰＵ１１０とノースブリッジ１２０とサウスブリッジ１４０は互いにオリジナルバス１７０を介して接続されている。一方、ＵＡＲＴ１６０はサウスブリッジ１４０にＰＣＩバス１８０を介して接続されている。
【００２７】
ノースブリッジ１２０にはメモリコントローラとしての機能が内蔵されているので、メモリ１３０はノースブリッジ１２０にバスを介さず直接に接続されている。
【００２８】
また、サウスブリッジ１４０にはハードディスクコントローラ（ＨＤＣ）としての機能が内蔵されているので、ハードディスク装置１５０はサウスブリッジ１４０にバスを介さず直接に接続されている。以下の説明ではサウスブリッジ１４０のことをＨＤＣ１４０と称する場合がある。
【００２９】
エミュレータを実行するホストとして情報処理装置１００が動作する場合には、メモリ１３０上にエミュレータが展開されてＣＰＵ１１０で実行される。このエミュレータは、メモリ１３０上に展開される前はハードディスク装置１５０に格納されている。
【００３０】
ＵＡＲＴ１６０は、パラレルデータとシリアルデータの相互変換を行う装置である。
【００３１】
図３は、エミュレータが模擬する模擬対象装置の一例に相当するストレージ装置を表す構造図である。
【００３２】
ここに示すストレージ装置２００は、ＮＡＳ（network attached storage）と称される種類のストレージ装置である。このＮＡＳは、ネットワークに接続されてネットワークからファイルサーバとして利用される。
【００３３】
ストレージ装置２００は、模擬対象のハードウェア要素として、ＣＰＵ２１０とメモリコントローラ２２０とメモリ２３０とハードディスクコントローラ２４０とハードディスク装置２５０とＬＡＮボード２６０とを備えている。ＣＰＵ２１０とメモリコントローラ２２０とハードディスクコントローラ２４０とＬＡＮボード２６０はＰＣＩバス２７０を介して相互に接続されている。一方、メモリ２３０はメモリコントローラ２２０にバスを介さず直接に接続されている。また、ハードディスク装置２５０はハードディスクコントローラ２４０にバスを介さず直接に接続されている。
【００３４】
ＣＰＵ２１０は、ストレージ装置２００内の各部の動作を統括するものである。
【００３５】
メモリ２３０はＲＡＭやＲＯＭを含んでいる。このメモリ２３０に、ＣＰＵ２１０で実行されるプログラムが展開される。メモリコントローラ２２０はメモリ２３０に対するデータの入出力を制御するものである。
【００３６】
ＬＡＮボード２６０は、ストレージ装置２００をネットワークに接続するものである。
【００３７】
ハードディスク装置２５０は、ネットワークから送られてきたデータを記憶する。ハードディスクコントローラ２４０は、ハードディスク装置２５０に対するデータの入出力を制御するものである。
【００３８】
図４は、図３に示すストレージ装置を模擬するエミュレータを表す図である。
【００３９】
図４に示すエミュレータ３００が、第２実施形態のエミュレータである。このエミュレータ３００は、本体部３２０と起動部３１０を備えている。
【００４０】
本体部３２０は、図２に示す情報処理装置１００のメモリ１３０上に展開されることで、図３に示すストレージ装置２００のハードウェア構造を仮想的に模擬する。一方、起動部３１０は、本体部３２０をメモリ１３０上に展開して起動するものである。なお、以下の説明では、メモリ１３０上に展開された本体部３２０のことを仮想ＮＡＳ３２０と称する場合がある。
【００４１】
起動部３１０は、仮想ハード展開部３１１と実ハード確認部３１２と優先表３１３とを備えている。この起動部３１０の説明は後に回して、先に、メモリ１３０上に展開された本体部３２０について説明する。
【００４２】
図５は、情報処理装置のメモリ上に展開された本体部（仮想ＮＡＳ）を示す図である。
【００４３】
図５に示すように、仮想ＮＡＳ３２０は、情報処理装置１００のメモリ１３０上の一部に展開される。メモリ１３０上に展開された仮想ＮＡＳ３２０は、図３に示すストレージ装置２００のハードウェア構造と同様の仮想的な構造を有している。即ち、仮想ＮＡＳ３２０は、仮想のハードウェア要素として、仮想ＣＰＵ３２１と仮想メモリコントローラ３２２と仮想メモリ３２３を備えている。更に仮想ＮＡＳ３２０は、仮想のハードウェア要素として、仮想ハードディスクコントローラ（仮想ＨＤＣ）３２４と仮想ハードディスク装置３２５と仮想ＬＡＮボード３２６も備えている。
【００４４】
これらの仮想の各ハードウェア要素３２１〜３２６は、図３に示すストレージ装置２００が有する模擬対象の各ハードウェア要素２１０〜２６０を模擬するものである。
【００４５】
仮想ＮＡＳ３２０には対応表３２７も備えられている。この対応表３２７は、仮想ＮＡＳ３２０が備えている仮想の各ハードウェア要素３２１〜３２６と、情報処理装置１００が有する現実のハードウェア要素との対応を示したものである。この対応表３２７は、仮想ＮＡＳ３２０がメモリ１３０上に展開されたときに構築されたものであるが、詳しい説明は、図４に示す起動部３１０の説明と共に後に回す。
【００４６】
以下の説明では、説明の便宜のため、仮想のハードウェア要素、模擬対象のハードウェア要素、および現実のハードウェア要素それぞれを、仮想ハード、対象ハード、および実ハードと省略して称する場合がある。
【００４７】
ここで、仮想のハードウェア要素の構造について、仮想ＨＤＣ３２４と仮想ＬＡＮボード３２６とを例に挙げて説明する。
【００４８】
図６は、仮想ＨＤＣの構造を示す図である。また、図７は、仮想ＬＡＮボードの構造を示す図である。
【００４９】
仮想ＨＤＣ３２４は、実ハード動作指示部４１０と仮想ハード動作実行部４２０とを備えている。また、仮想ＬＡＮボード３２６も、実ハード動作指示部４３０と仮想ハード動作実行部４４０とを備えている。
【００５０】
仮想ハードが模擬する対象ハードは、一般に、データや命令などといった入力を受けて応答を返すものである。仮想ＨＤＣ３２４の仮想ハード動作実行部４２０は、模擬対象のＨＤＣ２４０における入力と応答結果との対応関係を表した一種の関数あるいはルーチンプログラムである。このような仮想ハード動作実行部４２０を情報処理装置１００のＣＰＵ１１０が実行して応答結果を得ることで模擬対象のＨＤＣ２４０における応答が模擬される。同様に、仮想ＬＡＮボード３２６の仮想ハード動作実行部４４０は、模擬対象のＬＡＮボード２６０における入力と応答結果との対応関係を表している。そして、この仮想ハード動作実行部４４０を情報処理装置１００のＣＰＵ１１０が実行して応答結果を得ることで模擬対象のＬＡＮボード２６０における応答が模擬される。このように各仮想ハードが対象ハードの応答を模擬することにより、そのような仮想ハードで構成されたエミュレータは、模擬対象の装置の内部動作や外部への応答を模擬することが出来る。
【００５１】
ところで、関数あるいはルーチンプログラムとしての仮想ハード動作実行部４２０，４４０による応答結果の取得には、模擬対象のＨＤＣ２４０やＬＡＮボード２６０がハードウェアとして動作する動作時間は掛からない。しかし、図５に示す仮想ＮＡＳ３２０がエミュレータとして高精度であるためには、ハードウェアの動作時間も含めた模擬が実現されることが望ましい。特に、実際のハードウェアでは、装置の動作状況などによって動作時間に揺らぎが生じるので、そのような揺らぎが模擬されることが望ましい。
【００５２】
そこで、仮想ＨＤＣ３２４および仮想ＬＡＮボード３２６では、実ハード動作指示部４１０，４３０によって、情報処理装置１００が有している実ハードの動作が情報処理装置１００に指示される。このときの仮想ハードと実ハードとの対応は、上述した対応表に従う。実ハード動作指示部４１０，４３０によるこのような指示により、仮想ＨＤＣ３２４および仮想ＬＡＮボード３２６では、ハードウェアの動作時間も含めた模擬が実現されることになる。そして、このように模擬された動作時間には、情報処理装置１００における動作状況などに応じた揺らぎが生じることが期待できるので、エミュレータとして望ましい動作時間の模擬が実現する。なお、このような実ハード動作指示部は、全ての仮想ハードで必要な訳ではない。例えば、仮想ＣＰＵ３２１や仮想メモリコントローラ３２２や仮想メモリ３２３については、対象ハードの動作時間は、上述した仮想ハード動作実行部が情報処理装置１００のＣＰＵ１１０で実行される時間と同程度と考えてよい。従って、仮想ハード動作実行部が情報処理装置１００のＣＰＵ１１０で実行されるだけで十分に高精度の模擬となる。従って、実ハード動作指示部は、実ハード動作指示部による動作時間の模擬が必要な種類の仮想ハードのみに備えられている。
【００５３】
以下、図４に示すエミュレータ３００の起動部３１０による仮想ＮＡＳの起動について説明する。
【００５４】
図８は、仮想ＮＡＳの起動処理を表すフローチャートである。以下、このフローチャートが表す起動処理を説明するに当たり、図３も適宜に参照する。
【００５５】
図４に示すエミュレータ３００の起動部３１０による本体部（仮想ＮＡＳ）３２０の起動処理が開始されると、まず、仮想ハード展開部３１１によって仮想ＮＡＳの仮想ハードが情報処理装置１００のメモリ１３０上に展開される（ステップＳ１０１）。このとき仮想ハード展開部３１１は、メモリ１３０上に展開される各仮想ハードを、上述した対応表３２７に登録する。
【００５６】
図９は、対応表の一例を示す図である。
【００５７】
図９に示すように、対応表３２７は、仮想ハードウェア４５０と現実のハードウェア４６０とが対応付けられて登録されたものである。図８のステップＳ１０１では、この対応表３２７中の仮想ハードウェア４５０側だけが登録されて現実のハードウェア４６０側は空欄となっている。図９の対応表３２７の例では、１段目に「ＣＰＵ」、２段目に「ＨＤＣ」、３段目に「ＬＡＮ」が登録されている。なお、ハードディスクコントローラはハードディスク装置を動作させる時に動作するものであるので、この対応表３２７ではこれらは区別されない。
【００５８】
図８のステップＳ１０１でこのように仮想ハードが登録されると、次のステップＳ１０２では、そのように登録された仮想ハードのうちの１つを実ハード確認部３１２が選択する。そして、ステップＳ１０３で実ハード確認部３１２は、その選択した仮想ハードの優先表３１３をハードディスク装置１５０から取得する。この優先表３１３は、仮想ハードに対応付けるべき実ハードの優先順位を表している。この優先表３１３は、本体部（仮想ＮＡＳ）３２０の仮想ハードに対応して起動部３１０に当初から組み込まれている。
【００５９】
図１０は、優先表の一例を示す図である。
【００６０】
図１０に示す優先表３１３は、ＬＡＮボードに対応付けられた優先表３１３の例である。この優先表３１３には、ハードウェアの種類として「ＬＡＮ」「ＵＡＲＴ」「ＵＳＢ」が順に記載されている。優先表３１３で上に記載されている種類のハードウェアほど優先順位が高いことを意味している。図１０に示す優先表３１３の例では、上に記載されている種類のハードウェアほどＬＡＮボードに動作内容が似ている。但し、動作内容の似た順が優先順とは限らず、内容は異なっていても動作時間が近い順を優先順としてもよい。
【００６１】
図１０に示すような優先表３１３は、仮想ハードのうち上述した実ハード動作指示部による動作時間の模擬が必要な種類の仮想ハードのみに用意されている。このため、図８のステップＳ１０３で実ハード確認部３１２が優先表３１３を取得できなかった場合には、その後のステップＳ１０４およびステップＳ１０５は省略されてステップＳ１０６へと進む。一方、ステップＳ１０３で実ハード確認部３１２が優先表３１３を取得した場合には、ステップＳ１０４で実ハード確認部３１２が、この優先表３１３の順で実ハードの存在を情報処理装置１００について確認する。この情報処理装置１００は、上述したように、エミュレータを実行するホストとして動作する装置である。実ハードの存在確認の具体的な方法としては、情報処理装置１００でＢＩＯＳなどが装置構成を確認するための仕組みとして情報処理装置１００に元々備わっている機能が利用される。なお、この仕組みの詳細については、本件開示の本旨とは直接には関係しないのでこれ以上の説明は省略する。
【００６２】
ステップＳ１０４で実ハードの存在が確認された場合には、実ハード確認部３１２は実ハードを、この優先表３１３に対応した仮想ハードに対応付けて対応表３２７に登録する（ステップＳ１０５）。
【００６３】
実ハードの存在が確認される情報処理装置は、エミュレータ（本実施形態では仮想ＮＡＳ）を実行するための装置であって、仮想ＮＡＳが模擬する対象の装置（本実施形態ではＮＡＳ）とは一般に別の種類の装置である。しかも、エミュレータの作成時には、このエミュレータを実行する情報処理装置のハードウェア構造は未知であることが多い。このため、以下のような対応部を備えた応用形態が好適である。この対応部は、情報処理装置内に存在しているハードウェア部分を探索する。そして、対応部は、探索で得たハードウェア部分を、エミュレータが有する仮想的ハードウェア部分に、例えば後述する優先順位やその他の対応ルールで対応付ける。このような応用形態によれば、エミュレータを実行する情報処理装置のハードウェア構造が未知であっても、仮想的ハードウェア部分に現実のハードウェア部分を対応付けることが出来る。図４に示す実ハード確認部３１２は、この対応部の一例に相当する。
【００６４】
また、エミュレータを実行する情報処理装置のハードウェア構造には、仮想ハードの種類と同じ種類の実ハードが含まれているとは限らない。このため、以下のような応用形態が更に好適である。この更に好適な応用形態では、上記対応部は、上記仮想的ハードウェア部分に対応付けるべきハードウェア部分の優先順位が与えられていて、上記探索で得たハードウェア部分を、この優先順位に従って上記仮想的ハードウェア部分に対応付ける。
このように優先順位に従って対応付けられることで、仮想的ハードウェア部分には、例え同種のものでなくても、動作時間の模擬に適した現実のハードウェア部分が対応付けられることになる。図１０に示す優先表３１３は、この更に好適な応用形態に言う優先順位の一例を表したものに相当する。また、図４に示す実ハード確認部３１２は、この更に好適な応用形態における対応部の一例にも相当する。
【００６５】
図９に示す対応表３２７には、登録された現実のハードウェア４６０の例が示されている。
【００６６】
対応表３２７の仮想ハードウェア４５０側の１段目に登録されている「ＣＰＵ」には上述した優先表が用意されていないため、現実のハードウェア４６０側の１段目は空欄となっている。
【００６７】
対応表３２７の仮想ハードウェア４５０側の２段目に登録されている「ＨＤＣ（ＨＤＤ）」については、図５に示す情報処理装置１００に同種のハードウェアが実在しているため、現実のハードウェア４６０側の２段目には「ＨＤＣ（ＨＤＤ）」が登録されている。
【００６８】
対応表３２７の仮想ハードウェア４５０側の３段目に登録されている「ＬＡＮ」については、図５に示す情報処理装置１００には同種のハードウェアが存在しないが、図１０に示す優先表３１３で２番目に記載されている「ＵＡＲＴ」は存在している。このため、現実のハードウェア４６０側の３段目には「ＵＡＲＴ」が登録されている。
【００６９】
図８のステップＳ１０２〜ステップＳ１０５で、以上説明したように実ハードの確認と登録が行われると、次にステップＳ１０６に進み、仮想ＮＡＳの全ての仮想ハードについて実ハードの確認と登録が終わったかが確認される。終わっていれば起動処理は終了され、終わっていなければ上述したステップＳ１０２に戻って次の仮想ハードが１つ選択されて実ハードの確認と登録が繰り返される。
【００７０】
以上説明した起動処理の結果、図５に示すように情報処理装置（即ちホスト）１００のメモリ１３０上に仮想ＮＡＳ３２０が展開されて起動される。以下、このように展開された仮想ＮＡＳ３２０の具体的な動作における処理手順について、仮想ＨＤＤ３２５へのアクセスと、仮想ＬＡＮボード３２６へのアクセスを例に挙げて説明する。
【００７１】
図１１は、仮想ＨＤＤへのアクセスにおける処理手順を表す図である。また、図１２は、仮想ＨＤＤへのアクセス処理のうちリード処理の手順を表したフローチャートである。以下、図１１を参照しながら図１２のフローチャートが表すリード処理について説明する。なお、図１２のフローチャートが表すリード処理は、ここでは特に、仮想ＨＤＤに記憶されているＯＳを起動するためのリード処理の例である。
【００７２】
このリード処理は、情報処理装置１００のＣＰＵ１１０がノースブリッジ１２０を介してメモリ１３０内の仮想ＮＡＳ３２０が有する仮想ＣＰＵ３２１にアクセスすることで開始される（図１１に矢印で示す処理手順１および処理手順２）。
【００７３】
このリード処理が開始されると、図１２のステップＳ２０１で、仮想ＮＡＳ３２０の仮想ＣＰＵ３２１が仮想ＨＤＣ３２４にリードコマンドを発行する（図１１の処理手順３）。このリードコマンドは、仮想ハードディスク装置３２５からＯＳを読み取るためのコマンドである。即ち、このリードコマンドは、仮想ハードディスク装置３２５上のセクタ０からセクタｎまでに記憶されているデータ（ＯＳ）の読込みを仮想ＨＤＣ３２４に指示する。なお、図１１の処理手順３などといった仮想ハードの動作は、厳密に言えば情報処理装置１００のＣＰＵ１１０やメモリ１３０による処理動作と言うことになるが、説明が煩雑となるだけであるので、以下、仮想ハードの動作として説明する。
【００７４】
仮想ＮＡＳ３２０の仮想ＨＤＣ３２４は、上記リードコマンドが発行されたことを認識する（図１１の処理手順４）。そして図１２のステップＳ２０２で仮想ＨＤＣ３２４は、ハードウェアの動作時間を模擬するために、情報処理装置１００に対して、情報処理装置１００内の実ハードへのアクセスを指示する。この実ハードへのアクセスは、上記リードコマンドが指示する読込みに相当するアクセスである。このとき、仮想ＨＤＣ３２４は、対応表３２７を参照することで、自分に対応している実ハードがＨＤＣ１４０であることを確認する（図１１の処理手順４’）。そして、その確認したＨＤＣ１４０に対するアクセスを情報処理装置（即ちホスト）１００に指示して処理を委ねる。
【００７５】
情報処理装置１００側では、ＣＰＵ１１０がハードディスクコントローラ１４０経由でハードディスク装置１５０に、セクタ０からセクタｎまでに記憶されているデータの読込みを実行させる（図１１の処理手順５および処理手順６、図１２のステップＳ２０３）。その結果、セクタ０からセクタｎまでのデータがハードディスク装置１５０からＣＰＵ１１０へと読み込まれる（図１１の処理手順７）。但し、このように読み込まれたデータは使用されないデータであるため、仮想ＨＤＣ３２４からの事前の指示に従ってＣＰＵ１１０によって破棄される。そして、ＣＰＵ１１０は、読込み処理の完了を待って仮想ＨＤＣ３２４に処理を返す。なお、一般のパーソナルコンピュータ上で複数のアプリケーションソフトの処理が同時に実行される場合があるのと同様に、この読込み処理も、ホスト上での他の処理と同時に実行される場合がある。このため、この読込み処理に要する処理時間には、ホストの動作状況に応じた揺らぎが生じることとなる。
【００７６】
その後、図１２のステップＳ２０４で仮想ＨＤＣ３２４は、仮想ハードディスク装置３２５にアクセスしてセクタ０からセクタｎまでのデータ（ＯＳ）を読み込む。更に図１２のステップＳ２０５で仮想ＨＤＣ３２４は、仮想ＣＰＵ３２１に対して処理完了を通知する（図１１の処理手順８）。最後に仮想ＣＰＵ３２１は情報処理装置１００のＣＰＵ１１０に処理を返す。
【００７７】
このような処理手順により、仮想ＮＡＳ３２０では、ハードディスクに対するリード処理の動作が、アクセス時間を含めて模擬される。しかも、上述したように、情報処理装置１００が有する現実のハードディスク装置１５０で生じるアクセス時間の揺らぎが反映されるので、模擬されたリード処理の動作はリアルで模擬の精度は高い。
【００７８】
次に、仮想ＨＤＤへのアクセス処理のうちライト処理について以下説明する。
【００７９】
図１３は、仮想ＨＤＤへのアクセス処理のうちライト処理の手順を表したフローチャートである。以下、図１１を参照しながら図１３のフローチャートが表すライト処理について説明する。
【００８０】
このライト処理も、情報処理装置１００のＣＰＵ１１０がノースブリッジ１２０を介してメモリ１３０内の仮想ＮＡＳ３２０が有する仮想ＣＰＵ３２１にアクセスすることで開始される（図１１に矢印で示す処理手順１および処理手順２）。
【００８１】
このライト処理が開始されると、図１３のステップＳ３０１で、仮想ＮＡＳ３２０の仮想ＣＰＵ３２１が仮想ＨＤＣ３２４にライトコマンドを発行する（図１１の処理手順３）。このライトコマンドは、仮想ハードディスク装置３２５にデータを書き込むためのコマンドである。即ち、このライトコマンドは、仮想ハードディスク装置３２５上のセクタｎからセクタｍまでに対するデータの書込みを仮想ＨＤＣ３２４に指示する。
【００８２】
仮想ＮＡＳ３２０の仮想ＨＤＣ３２４は、上記ライトコマンドが発行されたことを認識する（図１１の処理手順４）。そして図１２のステップＳ３０２で仮想ＨＤＣ３２４は、ハードウェアの動作時間を模擬するために、情報処理装置１００に対して、情報処理装置１００内の実ハードへのアクセスを指示する。この実ハードへのアクセスは、上記ライトコマンドが指示する書込みに相当するアクセスである。このときも、仮想ＨＤＣ３２４は、対応表３２７を参照することで、自分に対応している実ハードがＨＤＣ１４０であることを確認する（図１１の処理手順４’）。そして、その確認したＨＤＣ１４０に対するアクセスを情報処理装置１００に指示して処理を委ねる。
【００８３】
情報処理装置（即ちホスト）１００側では、ＣＰＵ１１０がハードディスクコントローラ１４０経由でハードディスク装置１５０に、セクタｎからセクタｍまでの分のデータの書込みを実行させる（図１１の処理手順５と処理手順６、図１３のステップＳ３０３）。但し、仮想ＨＤＣ３２４による事前の指示に基づいて、セクタｎからセクタｍまでのセクタ領域へは書込みは行わず、そのセクタ領域までのシークが行われる。そしてシークの後に、情報処理装置１００が使用していないセクタ領域に対してセクタｎからセクタｍまでの分のデータが書き込まれる。このような使用していないセクタ領域としては、例えば「／ｔｍｐ」などが考えられる。また、セクタｎからセクタｍまでに比較して、使用していないセクタ領域が狭い場合には、その使用していないセクタ領域が繰り返し利用されて、セクタｎからセクタｍまでの分のデータが書き込まれる。なお、シークに要する動作時間の方が、データの書込みに要する動作時間よりもずっと長いので、データの書込みは自体は省略も可能である。データ書込みの完了がハードディスクコントローラ１４０経由でハードディスク装置１５０からＣＰＵ１１０に通知される（図１１の処理手順７）とＣＰＵ１１０は仮想ＨＤＣ３２４に処理を返す。
【００８４】
その後、図１３のステップＳ３０４で仮想ＨＤＣ３２４は、仮想ハードディスク装置３２５にアクセスしてセクタｎからセクタｍまでにデータを書き込む。更に図１３のステップＳ３０５で仮想ＨＤＣ３２４は、仮想ＣＰＵ３２１に対して処理完了を通知する（図１１の処理手順８）。最後に仮想ＣＰＵ３２１は情報処理装置１００のＣＰＵ１１０に処理を返す。
【００８５】
このような処理手順により、仮想ＮＡＳ３２０では、ハードディスクに対するライト処理の動作が、アクセス時間を含めて模擬される。また、リード処理の動作の模擬と同様に、情報処理装置１００が有する現実のハードディスク装置１５０で生じるアクセス時間の揺らぎが反映されるので、模擬されたライト処理の動作もリアルで模擬の精度は高い。
【００８６】
次に、仮想ＬＡＮボード３２６へのアクセスにおける処理手順について説明する。
【００８７】
図１４は、仮想ＬＡＮボードへのアクセスにおける処理手順を表す図である。
【００８８】
仮想ＬＡＮボード３２６へのアクセスも、情報処理装置１００のＣＰＵ１１０がノースブリッジ１２０を介してメモリ１３０内の仮想ＮＡＳ３２０が有する仮想ＣＰＵ３２１にアクセスすることで開始される（図１４に矢印で示す処理手順１および処理手順２）。
【００８９】
仮想ＮＡＳ３２０の仮想ＣＰＵ３２１は仮想ＬＡＮボード３２６に、通信処理を指示するコマンドを発行する（図１４の処理手順３）。
【００９０】
仮想ＮＡＳ３２０の仮想ＬＡＮボード３２６は、上記通信処理のコマンドが発行されたことを認識する。そして仮想ＬＡＮボード３２６は、ハードウェアの動作時間を模擬するために、情報処理装置１００に対して、情報処理装置１００内の実ハードへのアクセスを指示する。このとき、仮想ＬＡＮボード３２６は、対応表３２７を参照することで、自分に対応している実ハードがＵＡＲＴ１６０であることを確認する（図１４の処理手順３’）。そして、その確認したＵＡＲＴ１６０に対するアクセスを情報処理装置（即ちホスト）１００に指示して処理を委ねる。このＵＡＲＴ１６０に対するアクセスは、上記通信処理の指示に相当するアクセスである。
【００９１】
処理を委ねられた情報処理装置１００側では、ＣＰＵ１１０がサウスブリッジ１４０経由でＵＡＲＴ１６０にアクセスして上記通信処理の指示に対応したコマンドをＵＡＲＴ１６０に対して発行する（図１４の処理手順４および処理手順５）。そのようなコマンドの処理が完了するとＵＡＲＴ１６０は完了の通知をＣＰＵ１１０に送る（図１４の処理手順６）。そして、ＣＰＵ１１０は、仮想ＬＡＮボード３２６に処理を返す。
【００９２】
その後、仮想ＬＡＮボード３２６は、上記通信処理のコマンドに対する応答処理を実行する。そして、仮想ＬＡＮボード３２６は、仮想ＣＰＵ３２１に対して処理完了を通知する（図１４の処理手順７）。最後に仮想ＣＰＵ３２１は情報処理装置１００のＣＰＵ１１０に処理を返す。
【００９３】
このような処理手順により、仮想ＮＡＳ３２０では、ＬＡＮボードに対するアクセスの動作が、ＬＡＮボードでの処理時間を含めて模擬される。しかも、上述したように、情報処理装置１００が有する現実のＵＡＲＴ１６０で生じる処理時間の揺らぎが反映されるので、模擬されたアクセスの動作はリアルで模擬の精度は高い。
【００９４】
以上で第２実施形態の説明を終了する。
【００９５】
上記説明した第２実施形態では仮想ハードディスク装置が１つ備えられていたが、仮想ハードディスク装置が複数（一例として２つ）備えられた変形例について以下説明する。但し、この変形例は、仮想ハードディスク装置が複数備えられている点を除いて第２実施形態と同様であるので、以下では相違点について説明して重複説明は省略する。
【００９６】
図１５は、仮想ハードディスク装置が複数備えられた変形例における仮想ハードディスク装置へのアクセスの処理手順を示す図である。
【００９７】
図１５に示すように、この変形例では、仮想ＮＡＳ４７０が複数の仮想ハードディスク装置４７１，４７２を備えているとともに、ホストである情報処理装置１０１も複数のハードディスク装置１５１，１５２を備えている。このため、この変形例における対応表３２７では、各仮想ハードディスク装置４７１，４７２には現実の各ハードディスク装置１５１，１５２が別々に対応付けられている。
【００９８】
仮想ハードディスク装置へのアクセスは、情報処理装置１０１のＣＰＵ１１０がノースブリッジ１２０を介してメモリ１３０内の仮想ＮＡＳ３２０が有する仮想ＣＰＵ３２１にアクセスすることで開始される（図１５に矢印で示す処理手順１および処理手順２）。そして仮想ＮＡＳ３２０の仮想ＣＰＵ３２１が仮想ＨＤＣ３２４にアクセス（リードあるいはライト）のコマンドを発行する（図１５の処理手順３）。このコマンドは、複数の仮想ハードディスク装置４７１，４７２のうち第１の仮想ハードディスク装置４７１に対するアクセスを指示するものとする。
【００９９】
仮想ＮＡＳ３２０の仮想ＨＤＣ３２４は、コマンドが発行されたことを認識する（図１５の処理手順４）。仮想ＨＤＣ３２４は、ハードウェアの動作時間を模擬するために、第１の仮想ハードディスク装置４７１に対応づけられた実ハードが第１のハードディスク装置１５１であることを対応表３２７で確認する（図１５の処理手順４’）。そして、仮想ＨＤＣ３２４は、情報処理装置１０１に対し、第１のハードディスク装置１５１へのアクセスを指示して処理を委ねる。
【０１００】
情報処理装置（即ちホスト）１０１側では、ＣＰＵ１１０がハードディスクコントローラ１４０に、第１のハードディスク装置１５１へのアクセスを指示したコマンドを発行する（図１５の処理手順５）。コマンドの発行を受けたＨＤＣ１４０は、第１のハードディスク装置１５１へのアクセスを実行する。
【０１０１】
この変形例では、第１の仮想ハードディスク装置４７１および第１のハードディスク装置１５１へのアクセスが行われている間に、マルチタスクにて更に第２の仮想ハードディスク装置４７２および第２のハードディスク装置１５２へアクセスが可能である。
【０１０２】
マルチタスクによる第２の仮想ハードディスク装置４７２へアクセスも、情報処理装置１０１のＣＰＵ１１０がノースブリッジ１２０を介してメモリ１３０内の仮想ＮＡＳ３２０が有する仮想ＣＰＵ３２１にアクセスすることで開始される（図１５の処理手順７および処理手順８）。
【０１０３】
そして、第１の仮想ハードディスク装置４７１へのアクセスの処理と同様に、アクセスのコマンド発行（図１５の処理手順９）、コマンド発行の認識（図１５の処理手順１０）、対応表３２７での実ハードの確認（図１５の処理手順１０’）が行われる。
【０１０４】
続いて、情報処理装置１０１に対する第２のハードディスク装置１５２へアクセス指示、ＣＰＵ１１０によるコマンド発行（図１５の処理手順１１）、第２のハードディスク装置１５２へのアクセス（図１５の処理手順１２）が行われる。
【０１０５】
ここで、第１のハードディスク装置１５１へのアクセスと第２のハードディスク装置１５２へのアクセスとのどちらが先に完了するかは、動作状況によって異なる。ここでは、第２のハードディスク装置１５２へのアクセスが先に完了する「追い越し」が生じたものとして説明を続ける。
【０１０６】
アクセスの完了がＨＤＣ１４０経由で第２のハードディスク装置１５２からＣＰＵ１１０に通知される（図１５の処理手順１３）とＣＰＵ１１０は仮想ＨＤＣ３２４に、第２の仮想ハードディスク装置４７２へアクセスを実行させる。そしてアクセスが完了すると仮想ＨＤＣ３２４は仮想ＣＰＵ３２１に対して処理完了を通知する（図１５の処理手順１４および処理手順１５）。さらに仮想ＣＰＵ３２１は、情報処理装置１００のＣＰＵ１１０に処理完了を通知する（図１５の処理手順１６および処理手順１７）。
【０１０７】
一方、第２のハードディスク装置１５２に遅れて第１のハードディスク装置１５１からＣＰＵ１１０にアクセスの完了が通知される（図１５の処理手順１８）とＣＰＵ１１０は仮想ＨＤＣ３２４に、第１の仮想ハードディスク装置４７１へアクセスを実行させる。そしてアクセスが完了すると仮想ＨＤＣ３２４は仮想ＣＰＵ３２１に対して処理完了を通知する（図１５の処理手順１９および処理手順２０）。さらに仮想ＣＰＵ３２１は、情報処理装置１００のＣＰＵ１１０に処理完了を通知する（図１５の処理手順２１および処理手順２２）。
【０１０８】
このように、仮想ハードが実ハードの駆動を指示することにより「追い越し」処理も模擬可能となる。
【符号の説明】
【０１０９】
１０    エミュレータ
２１    現実のハードウェア部分
２０    情報処理装置
１１    仮想的ハードウェア部分
１２    応答部
１３    駆動部
１００，１０１    情報処理装置（ホスト）
１１０    ＣＰＵ
１２０    ノースブリッジ
１３０    メモリ
１４０    サウスブリッジ（ハードディスクコントローラ）
１５０，１５１，１５２    ハードディスク装置
１６０    ＵＡＲＴ
１７０    オリジナルバス
１８０    ＰＣＩバス
２００    ストレージ装置
２１０    ＣＰＵ
２２０    メモリコントローラ
２３０    メモリ
２４０    ハードディスクコントローラ
２５０    ハードディスク装置
２６０    ＬＡＮボード
３００    エミュレータ
３１０    起動部
３２０，４７０    本体部（仮想ＮＡＳ）
３１１    仮想ハード展開部
３１２    実ハード確認部
３１３    優先表
３２１    仮想ＣＰＵ
３２２    仮想メモリコントローラ
３２３    仮想メモリ
３２４    仮想ハードディスクコントローラ
３２５，４７１，４７２    仮想ハードディスク装置
３２６    仮想ＬＡＮボード
３２７    対応表
４１０，４３０    実ハード動作指示部
４２０，４４０    仮想ハード動作実行部
【図１】
2012168851.tif 000003
【図２】
2012168851.tif 000004
【図３】
2012168851.tif 000005
【図４】
2012168851.tif 000006
【図５】
2012168851.tif 000007
【図６】
2012168851.tif 000008
【図７】
2012168851.tif 000009
【図８】
2012168851.tif 000010
【図９】
2012168851.tif 000011
【図１０】
2012168851.tif 000012
【図１１】
2012168851.tif 000013
【図１２】
2012168851.tif 000014
【図１３】
2012168851.tif 000015
【図１４】
2012168851.tif 000016
【図１５】
2012168851.tif 000017