(57)【要約】      （修正有）【課題】ハードウェア抽象化ソフトウェアレイヤを使用することにより、専用ハードウェアシステムの忠実度が高いエミュレーションを実現する方法を提供する。【解決手段】方法は、物理ハードウェアシステムの態様に適合するプロキシ物理ハードウェアシステムを取得し、仮想化システム内で、プロキシ仮想マシンを構築し、仮想化システムを使用して、プロキシ仮想マシン内のプロキシ物理ハードウェアシステムのハードウェア構成要素をエミュレートし、プロキシ仮想マシン内でハードウェア抽象化ソフトウェアレイヤを実行し、仮想化システムのハードウェア抽象化ソフトウェアレイヤにより、メモリマップおよび少なくとも1つのアダプタを使用して、プロキシ物理ハードウェアシステム上のプロキシ仮想マシン内でハードウェアシステムアプリケーションソフトウェアを実行することにより、物理ハードウェアシステムをテストする。【選択図】図７
2020071870.tif 000002
【特許請求の範囲】
【請求項１】
プロキシ仮想マシン（130）内の対応するエミュレートされたプロキシ物理ハードウェアシステム（105）上でハードウェアシステムアプリケーションソフトウェア（136）を実行することにより、物理ハードウェアシステム（102）をテストする方法（700，800，900）であって、
前記物理ハードウェアシステムの態様に適合するプロキシ物理ハードウェアシステム（105）を取得するステップ（701）と、
仮想化システム（110）内で、前記プロキシ物理ハードウェアシステムから前記プロキシ仮想マシンを構築するステップ（703，800）と、
前記仮想化システムを使用して、前記プロキシ仮想マシン内の前記プロキシ物理ハードウェアシステムのハードウェア構成要素（425，431，433，435，437，445，449）をエミュレートするステップ（705，900）と、
前記プロキシ仮想マシン内でハードウェア抽象化ソフトウェアレイヤ（132）を実行するステップ（707）と、
前記仮想化システムの前記ハードウェア抽象化ソフトウェアレイヤにより、前記プロキシ物理ハードウェアシステムによって使用されたメモリ位置を再現するメモリマップ（601）を使用し、前記プロキシ仮想マシンと前記ハードウェアシステムアプリケーションソフトウェアとの間でデータをマッピングする少なくとも1つのアダプタ（134，135）を使用して、前記プロキシ物理ハードウェアシステム上の前記プロキシ仮想マシン内で前記ハードウェアシステムアプリケーションソフトウェアを実行するステップ（709）と、
前記仮想化システムを使用して、前記プロキシ物理ハードウェアシステム上の前記プロキシ仮想マシン内で前記ハードウェアシステムアプリケーションソフトウェアを実行することにより、前記物理ハードウェアシステムをテストするステップ（719）と
を有する方法。
【請求項２】
前記ハードウェア抽象化ソフトウェアレイヤがARINC 653オペレーティングシステムを含む、請求項1に記載の方法。
【請求項３】
前記少なくとも1つのアダプタが、前記ハードウェア抽象化ソフトウェアレイヤ内で実行される第1のアダプタ（134）と、前記プロキシ仮想マシン内で実行される第2のアダプタ（135）とを含む、請求項1に記載の方法。
【請求項４】
前記物理ハードウェアシステムが、複数のライン交換可能ユニットを備えるアビオニクスシステムを含む、請求項1に記載の方法。
【請求項５】
修正物理ハードウェアシステムを生成するために、前記テストに基づいて前記物理ハードウェアシステムを修正するステップ（723）と、
前記修正物理ハードウェアシステムを展開するステップ（727）と
をさらに有する、請求項1に記載の方法。
【請求項６】
前記物理ハードウェアシステムの態様に適合するプロキシ物理ハードウェアシステムを取得する前記ステップが、少なくとも前記物理ハードウェアシステムのプロセッサ（325）と同じプロセッサ（425）を備えるプロキシ物理ハードウェアシステム（105）を取得するステップを含む、請求項1に記載の方法。
【請求項７】
仮想化システム内で、前記プロキシ物理ハードウェアシステムから前記プロキシ仮想マシンを構築する前記ステップが、前記プロキシ物理ハードウェアシステムの少なくとも1つのプロセッサ（425）をエミュレートするステップ（907）を含む、請求項1に記載の方法。
【請求項８】
前記物理ハードウェアシステムの態様に適合するプロキシ物理ハードウェアシステムを取得する前記ステップが、前記物理ハードウェアシステムの仕様にアクセスすることなく進行する、請求項1に記載の方法。
【請求項９】
ビークル物理ハードウェアシステムのユーザを訓練するために、前記仮想化システムを使用して少なくとも1つの前記ビークル物理ハードウェアシステムをシミュレートするステップをさらに有する、請求項1に記載の方法。
【請求項１０】
プロキシ仮想マシン（130）内の対応するエミュレートされたプロキシ物理ハードウェアシステム（105）上でハードウェアシステムアプリケーションソフトウェア（136）を実行することにより、物理ハードウェアシステム（102）をテストするためのシステムであって、
前記物理ハードウェアシステムの態様に適合するプロキシ物理ハードウェアシステム（105）と、
前記プロキシ物理ハードウェアシステムから構築されたプロキシ仮想マシンを含む仮想化システム（110）と
を備え、
前記プロキシ仮想マシンが、前記プロキシ物理ハードウェアシステムのハードウェア構成要素（425，431，433，435，437，445，449）をエミュレートすることと、前記プロキシ物理ハードウェアシステムによって使用されたメモリ位置を再現するメモリマップ（601）を使用し、前記プロキシ仮想マシンと前記ハードウェアシステムアプリケーションソフトウェアとの間でデータをマッピングする少なくとも1つのアダプタ（134，135）を使用して、前記プロキシ仮想マシン内で前記ハードウェアシステムアプリケーションソフトウェアを実行するハードウェア抽象化ソフトウェアレイヤ（132）を実行する（707）こととを行う、
システム。
【請求項１１】
前記ハードウェア抽象化ソフトウェアレイヤがARINC 653オペレーティングシステムを含む、請求項10に記載のシステム。
【請求項１２】
前記少なくとも1つのアダプタが、前記ハードウェア抽象化ソフトウェアレイヤ内で実行される第1のアダプタ（134）と、前記プロキシ仮想マシン内で実行される第2のアダプタ（135）とを含む、請求項10に記載のシステム。
【請求項１３】
前記物理ハードウェアシステムが、複数のライン交換可能ユニットを備えるアビオニクスシステムを含み、および／または
前記プロキシ物理ハードウェアシステム（105）が、少なくとも前記物理ハードウェアシステムのプロセッサ（325）と同じプロセッサ（425）を備え、および／または
前記プロキシ物理ハードウェアシステムから構築された前記プロキシ仮想マシンが、前記プロキシ物理ハードウェアシステムの少なくとも1つのプロセッサ（425）をエミュレートする（907）、
請求項10に記載のシステム。
【請求項１４】
前記仮想化システムを使用する前記物理ハードウェアシステムのテストに基づいて修正された、修正物理ハードウェアシステムをさらに備える、請求項10に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示はモデリングおよび仮想化に関する。詳細には、本開示は、ハードウェア抽象化ソフトウェアレイヤを使用することにより、専用ハードウェアシステムの忠実度が高いエミュレーションを実現する。複雑な電子システムおよびデバイスのエンジニアリング、開発、およびテスト中に、物理ハードウェアおよびその仕様は、リソースが制限される可能性がある。そのため、そのようなシステムの開発に携わる開発者（たとえば、科学者、エンジニア、ソフトウェア開発者、およびテスタ）は、システムおよびデバイスの開発のかなり遅い時期まで、物理ハードウェアにアクセスすることができない。たとえば、多くの場合、ハードウェアシステムの仕様および設計が完了したときと、ハードウェアシステムの最初の初期バージョンが開発およびテストに利用できるときとの間に、かなりの製品開発期間がある。
【背景技術】
【０００２】
物理ハードウェアの仕様の知識があれば、物理ハードウェア自体の利用が限られていることは、仮想化プラットフォームを使用して対処できるときがあり、仮想化プラットフォームは、物理ハードウェアのソフトウェアが実行される組込み型コンピューティングデバイス（たとえば、アビオニクスコンピュータ）であってよい。しかしながら、そのような仮想化プラットフォームを使用するには、実際のアクセスではない場合でも、少なくとも物理ハードウェアの仕様に関する知識が必要である。そのような物理ハードウェア仕様は、仮想化プラットフォームの構築を可能にするために容易に利用できない場合がある。たとえば、ハードウェアサプライヤは、知的財産に関する懸念のため、または単にこの情報を提供する契約上の義務がないため、必要なハードウェアの詳細を提供することに消極的であることが多い。必要なハードウェア情報の公開を交渉することも可能であるが、これには数か月かかる可能性があり、多くの場合、制限的なコストおよびライセンスの考慮事項が伴う。
【発明の概要】
【課題を解決するための手段】
【０００３】
様々な実施態様によれば、プロキシ仮想マシン内の対応するエミュレートされたプロキシ物理ハードウェアシステム上でハードウェアシステムアプリケーションソフトウェアを実行することにより、物理ハードウェアシステムをテストする方法が提示される。方法は、物理ハードウェアシステムの態様に適合するプロキシ物理ハードウェアシステムを取得するステップと、仮想化システム内で、プロキシ物理ハードウェアシステムからプロキシ仮想マシンを構築するステップと、仮想化システムを使用して、プロキシ仮想マシン内のプロキシ物理ハードウェアシステムのハードウェア構成要素をエミュレートするステップと、プロキシ仮想マシン内でハードウェア抽象化ソフトウェアレイヤを実行するステップと、仮想化システムのハードウェア抽象化ソフトウェアレイヤにより、プロキシ物理ハードウェアシステムによって使用されたメモリ位置を再現するメモリマップを使用し、プロキシ仮想マシンとハードウェアシステムアプリケーションソフトウェアとの間でデータをマッピングする少なくとも1つのアダプタを使用して、プロキシ物理ハードウェアシステム上のプロキシ仮想マシン内でハードウェアシステムアプリケーションソフトウェアを実行するステップと、仮想化システムを使用して、プロキシ物理ハードウェアシステム上のプロキシ仮想マシン内でハードウェアシステムアプリケーションソフトウェアを実行することにより、物理ハードウェアシステムをテストするステップとを含む。
【０００４】
上記の実施態様の様々な任意の特徴には、以下が含まれる。ハードウェア抽象化ソフトウェアレイヤは、ARINC 653オペレーティングシステムを含んでよい。少なくとも1つのアダプタは、ハードウェア抽象化ソフトウェアレイヤ内で実行することができる。少なくとも1つのアダプタは、プロキシ仮想マシン内で実行することができる。少なくとも1つのアダプタは、ソフトウェア抽象化レイヤ内で実行される第1のアダプタと、プロキシ仮想マシン内で実行される第2のアダプタとを含んでよい。物理ハードウェアシステムは、複数のライン交換可能ユニットを含むアビオニクスシステムを含んでよい。方法は、修正物理ハードウェアシステムを作成するために、テストに基づいて物理ハードウェアシステムを修正するステップと、修正物理ハードウェアシステムを展開するステップとを含んでよい。物理ハードウェアシステムに適合するプロキシ物理ハードウェアシステムを取得するステップは、少なくとも物理ハードウェアシステムのプロセッサと同じプロセッサを有するプロキシ物理ハードウェアシステムを取得するステップを含んでよい。仮想化システム内で、プロキシ物理ハードウェアシステムからプロキシ仮想マシンを構築するステップは、プロキシ物理ハードウェアシステムの少なくとも1つのプロセッサをエミュレートするステップを含んでよい。物理ハードウェアシステムに適合するプロキシ物理ハードウェアシステムを取得するステップは、物理ハードウェアシステムの仕様にアクセスすることなく進行することができる。方法は、ビークル物理ハードウェアシステムのユーザを訓練するために、仮想化システムを使用して少なくとも1つのビークル物理ハードウェアシステムをシミュレートするステップを含んでよい。
【０００５】
様々な実施態様によれば、プロキシ仮想マシン内の対応するエミュレートされたプロキシ物理ハードウェアシステム上でハードウェアシステムアプリケーションソフトウェアを実行することにより、物理ハードウェアシステムをテストするためのシステムが提示される。システムは、物理ハードウェアシステムの態様に適合するプロキシ物理ハードウェアシステムと、プロキシ物理ハードウェアシステムから構築されたプロキシ仮想マシンを含む仮想化システムとを含み、プロキシ仮想マシンは、プロキシ物理ハードウェアシステムのハードウェア構成要素をエミュレートすることと、プロキシ物理ハードウェアシステムによって使用されたメモリ位置を再現するメモリマップを使用し、プロキシ仮想マシンとハードウェアシステムアプリケーションソフトウェアとの間でデータをマッピングする少なくとも1つのアダプタを使用して、プロキシ仮想マシン内でハードウェアシステムアプリケーションソフトウェアを実行するハードウェア抽象化ソフトウェアレイヤを実行することとを行う。
【０００６】
上記の実施態様の様々な任意の特徴には、以下が含まれる。ハードウェア抽象化ソフトウェアレイヤは、ARINC 653オペレーティングシステムを含んでよい。少なくとも1つのアダプタは、ハードウェア抽象化ソフトウェアレイヤ内で実行することができる。少なくとも1つのアダプタは、プロキシ仮想マシン内で実行することができる。少なくとも1つのアダプタは、ソフトウェア抽象化レイヤ内で実行される第1のアダプタと、プロキシ仮想マシン内で実行される第2のアダプタとを含んでよい。物理ハードウェアシステムは、複数のライン交換可能ユニットを含むアビオニクスシステムを含んでよい。システムは、仮想化システムを使用する物理ハードウェアシステムのテストに基づいて修正された、修正物理ハードウェアシステムを含んでよい。プロキシ物理ハードウェアシステムは、少なくとも物理ハードウェアシステムのプロセッサと同じプロセッサを有することができる。プロキシ物理ハードウェアシステムから構築されたプロキシ仮想マシンは、プロキシ物理ハードウェアシステムの少なくとも1つのプロセッサをエミュレートすることができる。
【０００７】
様々な実施態様によれば、プロキシ仮想マシン内のエミュレートされたプロキシ物理ハードウェアシステムであって、物理ハードウェアシステムに対応するエミュレートされたプロキシ物理ハードウェアシステム上でハードウェアシステムアプリケーションソフトウェアの実行を操作するように人を訓練することにより、物理ハードウェアシステムを操作するように人を訓練する方法が提示される。方法は、物理ハードウェアシステムの態様に適合するプロキシ物理ハードウェアシステムを取得するステップと、仮想化システム内で、プロキシ物理ハードウェアシステムからプロキシ仮想マシンを構築するステップと、仮想化システムを使用して、プロキシ仮想マシン内のプロキシ物理ハードウェアシステムのハードウェア構成要素をエミュレートするステップと、プロキシ仮想マシン内でハードウェア抽象化ソフトウェアレイヤを実行するステップと、仮想化システムのハードウェア抽象化ソフトウェアレイヤにより、プロキシ物理ハードウェアシステムによって使用されたメモリ位置を再現するメモリマップを使用し、プロキシ仮想マシンとハードウェアシステムアプリケーションソフトウェアとの間でデータをマッピングする少なくとも1つのアダプタを使用して、プロキシ物理ハードウェアシステム上のプロキシ仮想マシン内でハードウェアシステムアプリケーションソフトウェアを実行するステップと、仮想化システムを使用して、プロキシ物理ハードウェアシステム上のプロキシ仮想マシン内でハードウェアシステムアプリケーションソフトウェアの実行を操作するように人を訓練することにより、物理ハードウェアシステムを操作するように人を訓練するステップとを含む。
【０００８】
上記の実施態様の様々な任意の特徴には、以下が含まれる。物理ハードウェアシステムは、ビークル物理ハードウェアシステムを含んでよい。ビークルは航空機を含んでよく、仮想化システムはフライトシミュレータを含んでよい。
【０００９】
本明細書に組み込まれ、その一部を構成する添付図面は、本教示を例示し、説明とともに、本開示の原理を説明するのに役立つ。
【図面の簡単な説明】
【００１０】
【図１】本開示の態様による、システムおよびプロセスを実装するための、ハードウェア抽象化ソフトウェアレイヤ内で実行される物理プロキシ間アダプタを有する環境の一例を示すシステムブロック図である。
【図２】本開示の態様による、システムおよびプロセスを実装するための、プロキシ仮想マシンレイヤ内の物理プロキシ間アダプタを有する環境の一例を示すシステムブロック図である。
【図３】本開示の態様による、物理ハードウェアシステムの一例を示すシステムブロック図である。
【図４】本開示の態様による、プロキシ物理ハードウェアシステムの一例を示すシステムブロック図である。
【図５】本開示の態様による、仮想化システムの一例を示すシステムブロック図である。
【図６】本開示の一実施形態による、メモリマップの一例を示す図である。
【図７】プロキシ仮想マシン内の対応するエミュレートされたプロキシ物理ハードウェアシステム上でハードウェアシステムアプリケーションソフトウェアを実行することにより、物理ハードウェアシステムをテストするための例示的なプロセス700のプロセスフロー図である。
【図８】本開示の仮想マシン構築態様による、仮想化システム内で、プロキシ物理ハードウェアシステムからプロキシ仮想マシンを構築するための例示的なプロセスのフロー図である。
【図９】本開示の一実施形態による、プロキシ物理ハードウェアデバイスの構成要素をエミュレートするための例示的なプロセスのプロセスフロー図である。
【発明を実施するための形態】
【００１１】
図の一部の詳細は簡略化されており、厳密な構造の正確性、詳細、およびスケールを維持するためではなく、本教示の理解を容易にするために描かれていることに留意されたい。
【００１２】
ここで、添付図面に示されている開示された例を詳細に参照する。可能な限り、同じかまたは同様の部分を指すために、図面全体を通して同じ参照番号が使用される。以下の説明では、その一部を形成する添付図面を参照し、添付図面では例示として具体的な例が示されている。これらの例は、当業者がそれらを実践することが可能になるように十分詳細に記載され、他の例が利用されてもよく、本開示の範囲から逸脱することなく変更が行われてもよいことを理解されたい。したがって、以下の説明は単なる例示である。
【００１３】
物理ハードウェアをエミュレートし、仮想マシン上で物理ハードウェアソフトウェアアプリケーション（たとえば、実行可能ソフトウェア）を実行する典型的な仮想マシンの構築では、具体的なプラットフォーム用のハードウェアに関する多くの詳細、すなわち、メモリマップ、割込みテーブル、ファームウェアレジスタなどが知られなければならない。しかしながら、（米国メリーランド州アナポリスの、旧ロックウェルコリンズである）Aeronautical Radio，Incorporated（ARINC）653標準アーキテクチャなどのハードウェア抽象化ソフトウェアレイヤは、物理ハードウェアのソフトウェアアプリケーションが実行される基礎的なハードウェアプラットフォームのほとんどの詳細を抽象化する。詳細には、いくつかの実施形態は、たとえばARINC 653によって提供されるハードウェア抽象化ソフトウェアレイヤを利用して、多くの異なるプラットフォームのために働く単一の汎用仮想化プラットフォームを作成する。そのような実施形態は、たとえば、アビオニクスライン交換可能ユニット（LRU）および他の専用ハードウェアデバイスを開発およびテストするために使用されてよい。詳細には、ソフトウェアアプリケーションは、いくつかの実施形態に従って仮想化プラットフォーム上で、時には未修正のバイナリとして実行される場合がある。
【００１４】
ハードウェアアクセスまたはハードウェア仕様アクセスに対する必要性を回避するために、いくつかの実施形態は、エミュレートされたハードウェアの代わりにプロキシ物理ハードウェアを使用する。そのような実施形態では、エミュレートされるべきプロキシハードウェアシステムは、実際のハードウェアシステムの態様に適合するように選択される。そのようなプロキシハードウェアシステムを使用すると、ハードウェアにアクセスしたり、その仕様を把握したりする必要がなくなる。これにより、部分的に、いくつかの実施形態は、物理ハードウェアの詳細のほとんどを知らなくても、ソフトウェアアプリケーションが仮想マシン内で未修正のまま実行されることが可能な汎用仮想化プラットフォームを提供することが可能になる。
【００１５】
実施形態は多くの利点を提供する。たとえば、汎用仮想化プラットフォームを作成すると、複数の仮想プラットフォームの構築を回避することにより、コストの節約が可能になる。別の例として、いくつかの実施形態は、製品開発の非常に早い段階で仮想プラットフォームを提供し、したがって、物理プラットフォームおよびそのソフトウェアアプリケーションの早期の開発およびテストの活動を可能にする。仮想化プラットフォームを早期に使用すると、製品開発の初期段階での設計上の欠陥の発見が可能になる。そのような早期の問題発見により、大幅なコスト削減が実現される。ラボテスト対飛行テストで問題が検出された場合、桁違いのコスト削減を実現することができる。同様に、ラボテストと比較して要件／設計で問題が検出された場合、さらに桁違いのコスト削減を実現することができる。したがって、いくつかの実施形態は、プログラムの要件／設計段階での問題発見を実現し、それにより、2桁のコスト削減が実現されることが可能になる。
【００１６】
さらに、実施形態は、飛行乗務員トレーナおよび保守トレーナなどの高忠実度トレーナを作成するために使用されてもよい。そのような実施形態は、同じ容易さの構築を提供し、プラットフォーム間で再利用し、たとえばトレーナの構築のためにハードウェアをリバースエンジニアリングする必要性を排除する。
【００１７】
要するに、いくつかの実施形態は、汎用仮想マシンおよび仮想化プラットフォームの作成を簡略化する。いくつかの実施形態は、時間のかかるリバースエンジニアリング活動に訴える必要がなく、詳細なハードウェア情報が不明である対応するハードウェアプラットフォーム用の仮想マシンを提供する。いくつかの実施形態は、製品開発サイクルの早い段階でそのような仮想化プラットフォームの開発を可能にする。本明細書では、これらおよび他の利点が詳細に提示される。
【００１８】
図1は、本開示の態様による、システムおよびプロセスを実装するための、ハードウェア抽象化ソフトウェアレイヤ132内で実行される物理プロキシ間アダプタソフトウェア134を有する環境100の一例を示すシステムブロック図を示す。環境100は、物理ハードウェアシステム102、プロキシ物理ハードウェアシステム105、および仮想化システム110を含むことができる。物理ハードウェアシステム102は、1つまたは複数のコンピュータ実装ハードウェア構成要素および1つまたは複数の通信チャネルから構成することができる。たとえば、物理ハードウェアシステム102は、ミッションコンピュータ、ナビゲーションユニット、通信ユニット、エンジン管理ユニット、乗組員インターフェースユニット、脅威検出ユニット、電子対策ユニット、店舗管理ユニット、産業用制御ユニットなどのアビオニクスLRUであり得る。さらに、たとえば、物理ハードウェアシステム102は、上記のアビオニクスユニットの一部またはすべての機能を組み込む1つまたは複数のモジュールから構成された統合アビオニクスユニットであり得る。
【００１９】
図1は既存の物理ハードウェアシステム102として上述されているが、物理ハードウェアシステム102は開発中の新しいシステムであり得るし、したがって、まだ完全に実装または製造されていないことを理解されたい。実装形態では、物理ハードウェアシステム102は、ソフトウェアおよび／またはハードウェアに部分的に実装された事前プロトタイプユニットであり得る。たとえば、物理ハードウェアシステム102は、仮のコンピューティングデバイス（たとえば、ブレッドボードシステム、テストベッドシステム、および／または民生システム）によって実行されるソフトウェアであり得る。
【００２０】
プロキシ物理ハードウェアシステム105は、物理ハードウェアシステム102の態様に適合するように選択される。そのようなプロキシ物理ハードウェアシステム105は、本明細書で提示される様々な基準に従って、物理ハードウェアシステムに適合することができる。プロキシ物理ハードウェアシステム105は、ARINC 653などのソフトウェア抽象化レイヤをサポートすることができる。さらに、プロキシ物理ハードウェアシステム105は、物理ハードウェアシステム102と同じプロセッサおよび入出力タイプを有することができる。さらに、ARINC 653を含むプロキシ物理ハードウェアシステム105の場合、プロキシ物理ハードウェアシステム105は、容易に入手可能なARINC 653ボードサポートパッケージ（BSP）をさらに有することができる。したがって、プロキシ物理ハードウェアシステム105は、少なくともソフトウェア抽象化レイヤをサポートする場合、物理ハードウェアシステム102の態様に適合する。さらなる適合基準は、同じプロセッサタイプを有すること、同じ入出力タイプを有すること、およびBSPを有することのいずれか、または組合せを含んでよい。
【００２１】
具体的な例として、一実施形態は、民生（COTS）シングルボードコンピュータ（SBC）である、アバコシステムズによって提供されるSBC612を利用することができる。SBC612は、PowerPC P4080プロセッサと、物理ハードウェアシステム102のいくつかの実施形態と同様のビルド済みのWind River VxWorks ARINC 653 BSPとを有する。
【００２２】
仮想化システム110は、他のデバイスをエミュレートすることができるハードウェアおよびソフトウェアから構成されたコンピューティングシステムであり得る。実装形態では、仮想化システム110は、プロキシ物理ハードウェアシステム105などの物理ハードウェアシステムをエミュレートする1つまたは複数のプロキシ仮想マシン130、ならびにそれらのハードウェアおよびソフトウェアのインターフェース（たとえば、周辺機器、データリンク、割込み動作、およびタイミング要件）をホストするサーバまたはデスクトップコンピュータなどの1つまたは複数の汎用コンピュータであり得る。さらに、プロキシ仮想マシン130は、ハードウェアシステムアプリケーションソフトウェア136（たとえば、パーティション内で実行されるソフトウェア実行可能ファイル）、すなわち、物理ハードウェアシステム102によって実行されるハードウェアシステムアプリケーションソフトウェアの正確なまたは実質的に正確なコピー（たとえば、イメージ）を実行する。実装形態では、仮想化システム110は、たとえば、ハイパーバイザまたは仮想マシンモニタソフトウェアを含むことができる。たとえば、仮想化システム110は、ハードウェア仮想化を実行するオープンソースソフトウェアアプリケーションである、QUICK EMULATOR（「QEMU」）を使用することができる。
【００２３】
プロキシ仮想マシン130は、仮想化システム110内のプロキシ物理ハードウェアシステム105のエミュレーションであり得る。仮想マシン130を作成するための情報は、プロキシ物理ハードウェアシステム105から、かつハードウェアシステムアプリケーションソフトウェア136およびプロキシ物理ハードウェアシステム105を記述するドキュメンテーション147から取得することができる。たとえば、ハードウェアシステムアプリケーションソフトウェア136は、物理ハードウェアシステム102（たとえば、アビオニクスLRU）用のアプリケーションコードであり得る。ハードウェアシステムアプリケーションソフトウェア136は、物理ハードウェアシステム102に含まれるハードウェア構成要素および通信リンクのソースコード（たとえば、アプリケーションロジック）、インターフェースコード（たとえば、タイミングおよびフォーマッティング）、ならびに／または割込みロジックも含むことができる。プロキシオペレーティングシステム、ハードウェア抽象化ソフトウェアレイヤ、BSP、デバイスドライバ、およびブートローダ145は、プロキシ物理ハードウェアシステム上の同様の機能を置き換える。物理プロキシ間アダプタソフトウェア134は、ハードウェアシステムアプリケーションソフトウェア136を修正せずにこの交換を遂行するために使用される。プロキシハードウェアシステムドキュメンテーション147は、プロキシ物理ハードウェアシステム105のハードウェア構成要素および通信リンクの動作要件および動作詳細を定義する情報であり得る。たとえば、ドキュメンテーション147は、技術仕様および基盤ソフトウェアであり得る。任意の利用可能な物理ハードウェアシステムドキュメンテーション149も、プロキシ仮想マシンの構築に有用であり得る。しかしながら、ドキュメンテーション149は、範囲が限られているか、またはプロキシ仮想マシンのシナリオでは利用できないことが多い。
【００２４】
ハードウェア抽象化ソフトウェアレイヤ132は、プロキシ物理ハードウェアシステム105上で見られるハードウェア抽象化ソフトウェアレイヤ153と同一または同様である。図1に示されたように、物理プロキシ間アダプタソフトウェア134は、プロキシ仮想マシン130の、ARINC 653であってよいハードウェア抽象化ソフトウェアレイヤ132内で実行される。物理プロキシ間アダプタソフトウェア134は、プロキシ物理ハードウェアシステム105と比べて、物理ハードウェアシステム102の違いに適応する。詳細には、物理プロキシ間アダプタソフトウェア134は、ハードウェアシステムアプリケーションソフトウェア136とプロキシ仮想マシン130との間で入出力データをマッピングする。ハードウェア抽象化ソフトウェアレイヤ132がARINC 653オペレーティングシステムである実施形態の場合、物理プロキシ間アダプタソフトウェア134は、ハードウェアシステムアプリケーションソフトウェア136から生成および受信される内部ARINC 653入出力メッセージを、プロキシ仮想マシン130内の仮想入出力にマッピングすることができる。
【００２５】
プロキシ仮想マシン130は、その製造前、製造中、および製造後の物理ハードウェアシステム102のエンジニアリング、開発、およびテストに使用することができる。たとえば、物理ハードウェアシステム102の実際の製造より前に、プロキシ物理ハードウェアシステム105は、物理ハードウェアシステム102に実装されることが予想される試作品ソフトウェアを開発およびデバッグするために、プロキシ仮想マシン130によってエミュレートされてよい。そのため、ハードウェアおよびソフトウェアの開発およびテストは、並行して行うことができる。さらに、物理ハードウェアシステム102の開発中、利用可能な物理ハードウェアユニットがあってもわずかな場合、開発者は代わりにプロキシ仮想マシン130を用いて作業することができる。プロキシ仮想マシン130は物理ハードウェアシステム102と実質的に適合するので、物理ハードウェアシステム102の開発および製造に携わる各開発者は、それぞれのワークステーション（たとえば、それぞれの仮想化システム110）においてプロキシ仮想マシン130のコピーを実装することができる。プロキシ仮想マシン130によって提供される高忠実度エミュレーションにより、問題を早期に発見することができ、開発中のコストが大幅に節約される。プロキシ仮想マシン130に実装された更新プログラムコード151は、利用可能な場合、開発速度を高めるために、物理ハードウェアシステム102にフィードバックすることができる。さらに、物理ハードウェアシステム102が配置された後、プロキシ仮想マシン130は、物理ハードウェアシステム102をサポート、テスト、および更新するために使用することができる。たとえば、航空機事故調査では、航空機で使用されるソフトウェアの特定のビルドを（たとえば、ハードウェアシステムアプリケーションソフトウェア136として）イメージ化し、仮想化システム110を使用してプロキシ仮想マシン130内で実行することができる。さらに、プロキシ仮想マシン130は、たとえば、フライトシミュレーションシステム内のトレーナに使用されてよい。
【００２６】
図2は、本開示の態様による、システムおよびプロセスを実装するための、プロキシ仮想マシン130のレイヤ内で実行される物理プロキシ間アダプタソフトウェア135を有する環境101の一例を示すシステムブロック図を示す。図1の物理プロキシ間アダプタソフトウェア134と同様に、図2の物理プロキシ間アダプタソフトウェア135は、プロキシ物理ハードウェアシステム105と比べて、物理ハードウェアシステム102の違いに適応する。図1のプロキシアダプタソフトウェア134と同様に、プロキシアダプタソフトウェア135は、ハードウェアシステムアプリケーションソフトウェア136とプロキシ仮想マシン130との間で入出力データをマッピングする。プロキシアダプタソフトウェア135はプロキシ仮想マシン130の仮想化レイヤに実装されているので、アダプタは、ハードウェア抽象化ソフトウェアレイヤ132内のプロキシアダプタソフトウェア134では可能でない、オペレーティングシステムおよびハードウェア動作の違いに対処するために使用することができる。そのような違いには、メッセージフォーマットの違い、たとえば、メッセージフィールドの配置および／または内容、コードセクションの置換およびスタブ、同等のエミュレートされたハードウェアデバイスへのハードウェアデバイスアクセスの経路変更、タイマなどを含んでよい。これは、プロキシハードウェアシステム105上で未修正のまま、または限定された修正で実行するハードウェアシステムアプリケーションソフトウェア136を取得するために、物理ハードウェアシステム102とプロキシハードウェアシステム105との間の違いを、物理ハードウェアおよび可能なハードウェア抽象化ソフトウェアレイヤおよびOSの違いと整合するように実行されてよい。
【００２７】
物理プロキシ間アダプタソフトウェア135は、様々な形態を取ることができる。一例として、それは、ドライバソフトウェアが入出力データを送信するために対話する仮想化レイヤ内のダミーハードウェアデバイスがあってよい。別の例として、エミュレートされた命令の実行を監視して、入出力がいつ試行されるかを判断し、次いで、それらの呼出しをインターセプトし、それらに仮想マシンの仮想入出力を送出し、適切な応答を生成して、送信／受信に成功したアプリケーションレイヤソフトウェアを満足させる。
【００２８】
いくつかの実施形態は、図1を参照して図示および記載されたハードウェア抽象化ソフトウェアレイヤ132内で実行される物理プロキシ間アダプタソフトウェア134と、図2を参照して図示および記載されたプロキシ仮想マシン130のレイヤ内で実行される物理プロキシ間アダプタソフトウェア135の両方を含んでよいことに留意されたい。そのような実施形態では、ハードウェア抽象化ソフトウェアレイヤ132内で実行される物理プロキシ間アダプタソフトウェア134は、入出力メッセージをマッピングすることができ、プロキシ仮想マシン130のレイヤ内で実行される物理プロキシ間アダプタソフトウェア135は、図2を参照して上述されたように、異なるハードウェア抽象化ソフトウェアレイヤ132向けのメッセージを変換することができる。
【００２９】
図3は、本開示の態様による、物理ハードウェアシステム102の一例を示すシステムブロック図を示す。物理ハードウェアシステム102は、前述されたものと同じかまたは同様であり得る。
【００３０】
物理ハードウェアシステム102は、そこにインストールされたコンピュータプログラム命令を実行することが可能な汎用および／または専用のハードウェア（たとえば、パーソナルコンピュータ、サーバ、特定用途向けコンピューティングデバイスなど）を含む任意のタイプのコンピューティングシステムを備えることができる。物理ハードウェアシステム102は、様々な可能な同等のコンピューティングデバイスの単なる代表であることを理解されたい。この点で、実施形態では、物理ハードウェアシステム102によって提供される機能は、様々なアプリケーション（たとえば、産業用制御および／または自動化）に使用される汎用および／または専用のハードウェアおよび／またはコンピュータプログラム命令の任意の組合せであり得る。実装形態では、物理ハードウェアシステム102は、アビオニクスLRUなどの専用デバイスであり得る。
【００３１】
物理ハードウェアシステム102は、1つまたは複数のプロセッサ325、1つまたは複数のメモリデバイス331、1つまたは複数のストレージデバイス333（たとえば、メモリデバイス、またはストレージシステム）、1つまたは複数の入出力デバイス335（I／Oデバイス）、および1つまたは複数のネットワークインターフェース337（たとえば、ネットワークインターフェースデバイス）を含む、様々な構成要素から構成することができる。プロセッサ325は、マイクロプロセッサ、マイクロチップ、および／または特定用途向け集積回路を含むことができる。メモリデバイス331は、プログラム命令の実行中に利用されるランダムアクセスメモリ（RAM）およびキャッシュメモリなどのローカルストレージのうちの1つまたは複数を含むことができる。ストレージデバイス333は、情報およびプログラム命令を記憶するコンピュータ可読の不揮発性ハードウェアデバイスを備えることができる。たとえば、ストレージデバイス333は、1つまたは複数のフラッシュドライブ、不揮発性メモリ、および／またはハードディスクドライブであり得る。入出力デバイス335は、個人が物理ハードウェアシステム102と対話することを可能にする任意のデバイス（たとえば、ユーザインターフェース）、および／または物理ハードウェアシステム102が、任意のタイプの通信リンクを使用して、1つもしくは複数の他のコンピューティングデバイスと通信することを可能にする任意のデバイスを含むことができる。入出力デバイス335は、たとえば、タッチスクリーンディスプレイ、ポインタデバイス、キーボードなどであり得る。ネットワークインターフェース337は、システム通信バス341などのネットワーク通信リンクを介して、データを送受信するように構成された任意のトランシーバデバイスを含むことができる。
【００３２】
さらに、物理ハードウェアシステム102は、プロセッサ325、メモリデバイス331、ストレージデバイス333、入出力デバイス335、およびネットワークインターフェースデバイス337が通信することができる、1つまたは複数の通信チャネル345（たとえば、データバス）を含むことができる。さらに、物理ハードウェアシステム102は、優先レベルがその割込みに割り当てられることを可能にすることを含む、プロセッサ325、メモリデバイス331、ストレージデバイス333、入出力デバイス335、および／またはネットワークインターフェースデバイス337の通信チャネル345への通信を管理するために使用されるプログラム可能デバイスであり得る、割込みコントローラ349を含むことができる。
【００３３】
プロセッサ325は、メモリデバイス331および／またはストレージデバイス333に記憶され得るコンピュータプログラム命令（たとえば、オペレーティングシステムおよび／またはアプリケーションプログラム）を実行する。たとえば、1つまたは複数のプロセッサ325は、ブートローダ355およびハードウェアシステムアプリケーションソフトウェア136のプログラム命令を実行することができる。ブートローダ355は、そのオペレーティングシステムをロードすることにより、物理ハードウェアシステム102の動作を開始するプログラム命令を備えることができる。ハードウェアシステムアプリケーションソフトウェア136は、アプリケーション固有のプログラム命令（たとえば、アビオニクスソフトウェア）を含むことができる。
【００３４】
図4は、本開示の態様による、プロキシ物理ハードウェアシステム105の一例を示すシステムブロック図を示す。プロキシ物理ハードウェアシステム105は、指定された基準に従って、物理ハードウェアシステム、たとえば物理ハードウェアシステム102の態様に適合するように選択される。そのような基準には、同じ（または同様の）ハードウェア抽象化ソフトウェアレイヤ153をサポートすること、同じプロセッサタイプを有すること、同じ入出力タイプを有すること、ならびにBSP、デバイスドライバ、およびブートローダを有することのいずれか、または組合せが含まれてよい。したがって、プロキシ物理ハードウェアシステム105は、物理ハードウェアシステム102のプロセッサ325と同じであってよい1つまたは複数のプロセッサ425、（メモリデバイス331と同じであっても異なっていてもよい）1つまたは複数のメモリデバイス431、（ストレージデバイス333と同じであっても異なっていてもよい）1つまたは複数のストレージデバイス433、（入出力デバイス335と同じであっても異なっていてもよい）1つまたは複数の入出力デバイス435、および（ネットワークインターフェースデバイス337と同じであっても異なっていてもよい）1つまたは複数のネットワークインターフェースデバイス437を含む。物理ハードウェアシステム102におけるように、プロキシ物理ハードウェアシステム105は、（通信チャネル345と同じであっても異なっていてもよい）1つまたは複数の通信チャネル445、（割込みコントローラ349と同じであっても異なっていてもよい）割込みコントローラ449、および（ブートローダ355と同じであっても異なっていてもよい）ブートローダ455を含むことができる。本明細書で使用されるように、プロセッサ425、メモリデバイス431、ストレージデバイス433、入出力デバイス435、ネットワークインターフェースデバイス437、通信チャネル445、および割込みコントローラ449は、ハードウェア構成要素の例である。物理ハードウェアシステム102のハードウェアシステムアプリケーションソフトウェア136に対していくつかの修正を行うと、ハードウェアシステムアプリケーションソフトウェア136は、プロキシ物理ハードウェアシステム105上で実行されてよい。プロキシ物理ハードウェアシステム105は、仮想化システム（たとえば、仮想化システム110）を使用して仮想ハードウェア（たとえば、プロキシ仮想マシン130）によってエミュレートされ得るハードウェアを含むように選択される。プロキシ物理ハードウェアシステム105の選択およびプロキシ仮想マシン130の作成は、本開示の態様による、ハードウェアシステムアプリケーションソフトウェア136にほとんどまたは全く修正を加えることなく、プロキシ仮想マシン130上でのハードウェアシステムアプリケーションソフトウェア136の実行をサポートするために行われる。
【００３５】
図5は、上述されたもの（たとえば、図1および／または図2の仮想化システム110）と同じかまたは同様であり得る、仮想化システム110の一例を示すシステムブロック図を示す。仮想化システム110は、本明細書で開示されたプロセスおよび機能を実行するハードウェアおよびソフトウェアを含む。仮想化システム110は、そこにインストールされたコンピュータプログラム命令を実行して開示された技法を実行することが可能な汎用および／または専用のハードウェアの組合せを含む、任意のタイプのコンピューティングシステムを備えることができる。
【００３６】
仮想化システム110は、コンピューティングデバイス503、入出力（input／output）デバイス513、およびストレージデバイス515を含む。入出力デバイス513は、個人がコンピューティングデバイス503と対話することを可能にする任意のデバイス（たとえば、ユーザインターフェース）、および／またはコンピューティングデバイス503が、任意のタイプの通信リンクを使用して、1つもしくは複数の他のコンピューティングデバイスと通信することを可能にする任意のデバイスを含むことができる。入出力デバイス513は、たとえば、タッチスクリーンディスプレイ、ポインタデバイス、キーボードなどであり得る。
【００３７】
ストレージデバイス515は、情報およびプログラム命令を記憶するコンピュータ可読の不揮発性ハードウェアストレージデバイスを備えることができる。たとえば、ストレージデバイス515は、1つまたは複数のフラッシュドライブおよび／またはハードディスクドライブであり得る。本開示の態様によれば、ストレージデバイス515は、ハードウェアシステムプログラムコード（たとえば、ハードウェアシステムアプリケーションソフトウェア136）、プロキシ物理ハードウェアシステム105の1つまたは複数のメモリマップ519、割込みロジック521、およびデバイスライブラリ523を記憶することができる。ハードウェアシステムアプリケーションソフトウェア136は、物理ハードウェアシステム（たとえば、物理ハードウェアシステム102）のアプリケーションソフトウェアであり得る。実装形態では、プログラムコードは、物理ハードウェアシステム102のプログラムコードを実質的にミラーリングする。メモリマップ519は、メモリインターフェースの観点から物理ハードウェアシステムの構成要素間の接続を記述する。実装形態では、メモリマップ519は、プロキシハードウェアシステム105のメモリデバイス431内のハードウェア構成要素のメモリブロックの位置を定義する情報を備える。たとえば、メモリマップ519は、プロキシ物理ハードウェアシステム105のハードウェア構成要素のメモリレジスタについての情報の位置を、開始メモリアドレスからのオフセットとして表すことができる。割込みロジック521は、以下で詳述されるように、物理ハードウェアシステムの割込み機能を記述する情報であり得る。デバイスライブラリ523は、将来の使用のために以前に作成および記憶されている可能性がある1つまたは複数の物理ハードウェアシステム（たとえば、プロキシ物理ハードウェアシステム105）のエミュレーションを記述するコンピュータ可読の情報および命令のリポジトリであり得る。
【００３８】
実施形態では、コンピューティングデバイス503は、1つまたは複数のプロセッサ539（たとえば、マイクロプロセッサ、マイクロチップ、または特定用途向け集積回路）、1つまたは複数のメモリデバイス541（たとえば、RAM、読取り専用メモリ（ROM））、1つまたは複数の入出力インターフェース543、および1つまたは複数のネットワークインターフェースデバイス545を含む。メモリデバイス541は、プログラム命令の実行中に利用されるローカルメモリ（たとえば、ランダムアクセスメモリおよびキャッシュメモリ）を含むことができる。さらに、コンピューティングデバイス503は、それによって入出力デバイス513およびストレージデバイス515と通信する、少なくとも1つの通信チャネル544（たとえば、データバス）を含む。プロセッサ539は、メモリデバイス541および／またはストレージデバイス515に記憶され得るコンピュータプログラム命令（たとえば、オペレーティングシステムおよび／またはアプリケーションプログラム）を実行する。
【００３９】
プロセッサ539は、仮想化アプリケーション551（たとえば、QEMU）ならびにトレーナ、テスト、および／または評価ソフトウェア555のコンピュータプログラム命令を実行することもできる。仮想化アプリケーション551は、前述されたものと同じかまたは同様であり得る。たとえば、仮想化アプリケーション551は、ハイパーバイザまたは仮想マシンモニタソフトウェアを含むことができる。本開示の態様によれば、仮想化アプリケーション551は、プログラムコード517、メモリマップ519、割込みロジック521、および／またはデバイスライブラリ523を使用して、仮想マシン（たとえば、プロキシ仮想マシン130）を提供することができる。
【００４０】
トレーナ、テスト、および／または評価ソフトウェア555は、ソフトウェアをテスト、評価、および／または検証するように構成されたコンピュータ可読の命令および情報を含むアプリケーションまたはプログラムであり得る。たとえば、トレーナ、テスト、および／または評価ソフトウェア555は、所定のシナリオに応答して予想されるようにハードウェアデバイスのプログラムコードが動作することを検証するテストルーチンを実行することができる。さらに、トレーナ、テスト、および／または評価ソフトウェア555は、悪意のあるソフトウェアの攻撃ベクトルをテストするサイバーセキュリティルーチンを実行することができる。たとえば、トレーナ、テスト、および／または評価ソフトウェア555は、命令を実行して侵害されたシステムの観察および分析を可能にするように、仮想マシンの完全な状態（レジスタ、メモリ、ハードウェア状態など）を記録することができる。トレーナ、テスト、および／または評価ソフトウェア555は、物理ハードウェアシステム102のユーザ（たとえば、航空機乗務員またはメンテナンストレーナ）にトレーナを提供するために使用することができる。
【００４１】
コンピューティングデバイス503は、本明細書に記載されたプロセスを実行することができる様々な可能な同等のコンピューティングデバイスの代表であることに留意されたい。この点で、実施形態では、コンピューティングデバイス503によって提供される機能は、汎用および／または専用のハードウェアおよび／またはコンピュータプログラム命令の任意の組合せであり得る。開示された実施形態では、プログラム命令およびハードウェアは、それぞれ、標準的なプログラミングおよびエンジニアリング技法を使用して作成することができる。
【００４２】
図6は、本開示の実装形態による、仮想化システムのメモリマップ601およびアドレス空間602の一例を示す。メモリマップ601は、物理ハードウェアシステム（たとえば、プロキシ物理ハードウェアシステム105）のハードウェア構成要素603のメモリアドレスと、仮想化システム（たとえば、仮想化システム110）のメモリ位置605（たとえば、メモリデバイス541のメモリブロック）とを関連付ける。メモリマップ601を備える情報は、プロキシ物理ハードウェアシステム105のドキュメンテーション（たとえば、ドキュメンテーション147）から取り出すことができる。仮想化マシン（たとえば、プロキシ仮想マシン130）用のアドレス空間602は、メモリマップ601に基づいて生成されたメモリ構成体であり得る。たとえば、アドレス空間602は、仮想化システム内でエミュレートされた構成要素（たとえば、プロキシ物理ハードウェアシステム105の構成要素）の位置に対応するレジスタメモリのアドレスおよび範囲を含むことができる。実装形態では、メモリマップに通常見られる3種類のメモリ、すなわち、揮発性メモリ（たとえば、RAM）、不揮発性メモリ（たとえば、フラッシュ）、およびメモリマップされた入出力が存在してよい。揮発性メモリは、たとえば、ソフトウェア実行中に情報を検索および記憶するために使用することができる。不揮発性メモリ（たとえば、NVメモリ）は、たとえば、実行用のソフトウェア命令および構成情報を記憶するために使用することができる。メモリマップされた入出力は、ハードウェア構成要素間で情報を交換するために使用することができ、それにより、ハードウェア構成要素の動作および応答が不正になる可能性がある。
【００４３】
図7〜図9のフロー図は、本開示と一致する様々な実装形態によるシステム、方法、およびコンピュータプログラム製品の可能な実装形態の機能および動作の例を示す。図7〜図9のフロー図の各ブロックは、図示された機能および動作を実装するための1つまたは複数のコンピュータ実行可能命令を含む、モジュール、セグメント、またはプログラム命令の一部を表すことができる。いくつかの代替の実装形態では、フロー図の特定のブロックに示された機能および／または動作は、図7〜図9に示された順序以外で行われる可能性がある。たとえば、関与する機能に応じて、連続して示された2つのブロックは、実質的に同時に実行することができるか、または時には逆の順序で実行することができる。フロー図の各ブロックおよびブロック内のブロックの組合せは、指定された機能もしくは行為を実行する専用ハードウェアベースのシステム、または専用ハードウェアとコンピュータ命令の組合せによって、またはそれを使用して実装できることにも留意されたい。
【００４４】
図7は、プロキシ仮想マシン内の対応するエミュレートされたプロキシ物理ハードウェアシステム上でハードウェアシステムアプリケーションソフトウェアを実行することにより、物理ハードウェアシステムをテストするための例示的なプロセス700のプロセスフロー図を示す。ブロック701は、仕様および／またはアクセスが時々利用できないかまたは制限されている物理ハードウェアシステム（たとえば、物理ハードウェアシステム102）の態様に適合するプロキシ物理ハードウェアシステム（たとえば、プロキシ物理ハードウェアシステム105）を取得することを含む。ブロック703は、たとえば、図8を参照して以下に図示および記載されるように、仮想化ソフトウェア（たとえば、仮想化アプリケーション551）を実行する仮想化システム（たとえば、コンピューティングデバイス503）を使用して、プロキシ物理ハードウェアシステム（たとえば、プロキシ物理ハードウェアシステム105）から仮想マシン（たとえば、プロキシ仮想マシン130）を構築することを含む。たとえば、ユーザ（たとえば、開発者）は、仮想化システム110上の物理ハードウェアシステム102からプログラムコード（たとえば、ハードウェアシステムアプリケーションソフトウェア136）を実行することができる。ブロック705は、たとえば、図9に関して以下に図示および記載されるように、703において構築された仮想マシン内のプロキシ物理ハードウェアシステムのハードウェア構成要素をエミュレートすることを含む。703において構築された仮想マシンおよび／または705においてエミュレートされたハードウェア構成要素は、他の実装形態（たとえば、ハードウェア構成要素のうちの1つまたは複数を含む他の仮想マシン）における将来の参照および使用のために（たとえば、デバイスライブラリ523に）記憶することができる。ブロック707は、プロキシ仮想マシン内でARINC 653などのハードウェア抽象化ソフトウェアレイヤを実行することを含む。
【００４５】
ブロック709は、705においてエミュレートされたハードウェア構成要素を使用して、703において構築されたプロキシ仮想マシン内でハードウェアシステムアプリケーションソフトウェアを実行することを含む。実行することは、711において、プロキシ物理ハードウェアシステムによって使用されたメモリ位置を再現するメモリマップを使用することを含むことができる。これは、プロキシ物理ハードウェアシステムおよび／またはエミュレートされたハードウェア構成要素のアドレス空間を適合させるために、メモリマップ（たとえば、メモリマップ601）を使用して仮想化マシン（たとえば、プロキシ仮想マシン130）のアドレス空間を構成することを含んでよい。709の実行は、メモリマップを使用して711において構成されたメモリ位置を登録することにより、仮想マシンおよび／またはエミュレートされたハードウェア構成要素の間で情報を交換することも含むことができる。たとえば、物理ハードウェアシステムおよびハードウェア構成要素のメモリレジスタ用のメモリのアドレスおよび範囲が仮想マシンに登録され、仮想マシンおよびエミュレートされたハードウェア構成要素のために見つかった各メモリレジスタの機能を実装するために使用することができる。そうすることにより、仮想マシンおよびエミュレートされたハードウェア構成要素は、物理ハードウェアシステムのハードウェア構成要素と同じ方式で情報を読み書きすることにより、仮想マシンのメモリ構成体を介して通信することができる。709の実行は、715において、プロキシ仮想マシンとハードウェアシステムアプリケーションソフトウェアとの間でデータをマッピングする少なくとも1つのアダプタを使用することも含むことができる。そのようなマッピングは、物理プロキシ間アダプタソフトウェア（たとえば、物理プロキシ間アダプタソフトウェア134および／または物理プロキシ間アダプタソフトウェア135）を使用して実行されてよい。そのような物理プロキシ間アダプタソフトウェアは、図1を参照して上記で図示および記載されたように、ハードウェア抽象化ソフトウェアレイヤ内で実行して、入出力メッセージをマッピングすることができる。代替または追加として、そのような物理プロキシ間アダプタソフトウェアは、図2を参照して上記で図示および記載されたように、プロキシ仮想マシン内で実行して、異なるハードウェア抽象化ソフトウェアレイヤ向けのメッセージを変換することができる。
【００４６】
ブロック719は、仮想化システムを使用して物理ハードウェアシステムをテストすることを含む。より詳細には、仮想化システムは、仮想マシンを使用して物理ハードウェアシステム102および／またはハードウェア構成要素のテスト（たとえば、テストおよび評価）を実行する。テストおよび評価は、ソフトウェアデバッグ、運用テスト、統合テスト、サイバーセキュリティテストなどを含むことができる。ブロック723は、719において実行されたテストおよび評価に基づいて、ハードウェアシステムアプリケーションソフトウェアおよび／または物理ハードウェアシステム102のうちの少なくとも1つを開発者が修正することを含む。ブロック727は、ハードウェアシステムアプリケーションソフトウェアおよび／または物理ハードウェアシステムの修正を展開することを含む。たとえば、修正されたソフトウェアは、物理ハードウェアシステムの配置された製造ユニットに展開することができる。さらに、ハードウェアおよび／またはソフトウェアの修正は、物理ハードウェアのシミュレーション、試作品ユニット、またはプロトタイプの設計にフィードバックすることができる。
【００４７】
図8は、本開示の仮想マシン構築態様による、仮想化システム内で、プロキシ物理ハードウェアシステムからプロキシ仮想マシンを構築するための例示的なプロセス800のフロー図を示す。ブロック803は、エミュレートされるべきプロキシ物理ハードウェアシステム（たとえば、プロキシ物理ハードウェアシステム105）のハードウェア情報を収集することを含む。情報は開発者によって収集されてよい。803において収集される情報は、ハードウェア構成要素の仕様、およびメモリレジスタの構成、ハードウェアブロック図、物理ハードウェアシステムのシステムアーキテクチャ、メモリマップ、割込み接続、ボードサポートパッケージなどを記述する機能説明を含むことができる。さらに、開発者は、プロキシ物理ハードウェアシステムのソフトウェアに関する情報を収集することができる。いくつかの実装形態では、ソフトウェア情報を収集することは、物理ハードウェアシステムに記憶されたコードを逆コンパイルまたは逆アセンブルすることを含む。
【００４８】
ブロック807は、803において収集された情報に基づいて、エミュレートするべきプロキシ物理ハードウェアシステムの構成要素を決定することを含む。実装形態では、開発者は、システムメモリマップ上に表示されず、したがって、ソフトウェアから直接アクセスできず、必ずしもエミュレーションを必要としない、プロキシ物理ハードウェアシステムのハードウェア構成要素を識別する。たとえば、物理ハードウェアシステムのメモリマップ（たとえば、メモリマップ601）によって表示されないキャッシュメモリまたはブリッジは、エミュレートされなくてよい。
【００４９】
ブロック811は、本明細書に前述された方式（たとえば、図6）と同じかまたは同様の方式で、803において収集された情報を使用して、807において決定された構成要素のメモリマップを開発者が決定することを含む。メモリマップは、プロキシ物理ハードウェアシステムの構成要素、およびプロキシ物理ハードウェアシステムのメモリ内のそれらの対応する位置を示す。メモリマップを分析することは、プロキシ物理ハードウェアシステムのメモリデバイスおよび／またはストレージデバイス、プロキシ物理ハードウェアシステムのハードウェアデバイス（たとえば、入出力コントローラ、タイマ、ブリッジ、割込みコントローラ、ブロックデバイス、制御レジスタなど）を識別することを含むことができる。
【００５０】
ブロック815は、仮想化ソフトウェア（たとえば、仮想化アプリケーション551）を使用して、807において決定された構成要素のエミュレーションを生成することを含む。ブロック819は、811において決定されたメモリマップに対応するメモリ位置に（ブロック815ごとに）エミュレートされた構成要素を登録することを含む。たとえば、開発者は、図6に関して本明細書に前述されたように、プロキシ物理ハードウェアシステムを表す仮想マシン（たとえば、プロキシ仮想マシン130）に領域（たとえば、メモリ空間605）を分配し、エミュレートされた構成要素を領域内の（たとえば、アドレス空間602内の）ブロックに割り当てることができる。
【００５１】
ブロック823は、803において収集された情報を使用して、プロキシ物理ハードウェアシステムの割込み設計を開発者が決定することを含む。たとえば、開発者は、割込みを使用するハードウェア構成要素を識別し、ハードウェア構成要素と割込みコントローラと間の割込み接続を決定する。さらに、入出力コントローラと割込みコントローラとの間の配線を示すハードウェア概略図は、概略図内でトレースされる割込みラインを他のハードウェア構成要素にトレースすることにより、仮想マシンへの割込み接続を確立するために使用することができる。代替として、割込み接続を決定するために、プロキシ物理ハードウェアシステム105用のボードサポートパッケージまたはデバイスドライバ内のソフトウェアを使用することができる。そうすることにより、プロキシ物理ハードウェアシステムの様々な構成要素向けの割込みの識別が可能になる。ブロック827は、仮想マシン構成要素（ブロック815）の入出力をエミュレートされた入出力コントローラに開発者がリンクすることを含む。一例として、仮想マシン内のイーサネット（登録商標）コントローラは、仮想ネットワークインターフェースカード（NIC）（たとえば、TAPデバイスなど）に接続することができる。
【００５２】
図9は、本開示の一実施形態による、仮想化システムを使用して、プロキシ仮想マシン内のプロキシ物理ハードウェアシステムのハードウェア構成要素をエミュレートするためのプロセス（900）のフロー図である。ブロック901は、エミュレートされるべきプロキシ物理ハードウェアシステム（たとえば、プロキシ物理ハードウェアシステム105）のハードウェア情報を開発者が収集することを含む。情報は、本明細書に前述されたもの（たとえば、図8、803）と同じかまたは同様であり得る。ブロック903は、901において収集された情報に基づいて、プロキシハードウェアシステム機能を開発者が分析することを含む。たとえば、開発者は、ドキュメンテーション（たとえば、ドキュメンテーション147）を分析し、ハードウェアレジスタ、割込み機能、（たとえば、仮想マシンの仮想タイマを使用する）遅延応答、および外部仮想マシンの接続（仮想NIC、仮想ARINC 429など）を識別することができる。
【００５３】
ブロック907は、仮想マシン内で、メモリアクセスに応答してハードウェア構成要素の動作をエミュレートすることを含む。そのようなエミュレーションは、たとえば、仮想化システムのプロセッサがプロキシ仮想マシンのプロセッサと異なる場合、プロキシ物理ハードウェアシステムのプロセッサをエミュレートすることを含んでよい。ブロック911は、ハードウェア構成要素の割込み動作を仮想マシンがエミュレートすることを含む。ブロック915は、ハードウェア構成要素の遅延応答動作をエミュレートすることを含む。たとえば、ハードウェア構成要素レジスタへのメモリアクセスにより、デバイスレジスタが修正されて、指定された動作が発生したり、ハードウェア構成要素に割込みが通知されて、アクティビティが発生したりする場合がある。イーサネットコントローラによる送信のいくつかのケースでは、イーサネット上の送信用のパケットは、メモリ位置にそれを書き込むことによって送信用にキューイングされてよい。そうすることにより、システムソフトウェアによってイーサネットコントローラへの割込みがトリガされて、仮想マシンからイーサネットパケットが送信されるようになる場合がある。イーサネット受信のいくつかのケースでは、パケットは外部デバイス、たとえば仮想NICから仮想マシンに到達し、このパケットは内部キューに記憶され、次いで、場合によっては、このパケットは、イーサネットコントローラの内部メモリからシステムRAMにイーサネットパケットを転送するために、ダイレクトメモリアクセスエンジンを使用してシステムRAMに転送され、転送が完了した後、イーサネットパケットが到達し、システムメモリ内で利用可能であることをシステムソフトウェアに知らせるために、イーサネットコントローラから割込みが通知される。たとえば、遅延応答は、シリアルデータの速度を変更することにより、インターフェース上の所与のボーレートをエミュレートすることができる。ブロック919は、エミュレートされた構成要素を外部デバイスのエミュレーションにリンクすることを含む。すなわち、ブロック919は、プロキシ物理ハードウェアシステムの外部の1つまたは複数のエミュレートされたデバイスに仮想マシンをリンクすることを含む。たとえば、エミュレートされたデバイスの外部入出力と、プロキシ物理ハードウェアシステム内でハードウェア構成要素が通信することができるネットワークデバイスのエミュレーションとの間にリンクを作成されてよい。ブロック921は、プロキシ仮想マシンの動作を物理ハードウェアシステムの動作と比較することを含む。物理ハードウェアシステムアプリケーションソフトウェアの実行の成功は、プロキシ仮想マシン、およびプロキシ仮想マシンレイヤ、ハードウェア抽象化ソフトウェアレイヤ、または両方に位置する物理プロキシ間アダプタソフトウェアの成功の良い尺度である。
【００５４】
さらに、本開示は以下の項による例を含む。
【００５５】
項1．プロキシ仮想マシン内の対応するエミュレートされたプロキシ物理ハードウェアシステム上でハードウェアシステムアプリケーションソフトウェアを実行することにより、物理ハードウェアシステムをテストする方法であって、物理ハードウェアシステムの態様に適合するプロキシ物理ハードウェアシステムを取得するステップと、仮想化システム内で、プロキシ物理ハードウェアシステムからプロキシ仮想マシンを構築するステップと、仮想化システムを使用して、プロキシ仮想マシン内のプロキシ物理ハードウェアシステムのハードウェア構成要素をエミュレートするステップと、プロキシ仮想マシン内でハードウェア抽象化ソフトウェアレイヤを実行するステップと、仮想化システムのハードウェア抽象化ソフトウェアレイヤにより、プロキシ物理ハードウェアシステムによって使用されたメモリ位置を再現するメモリマップを使用し、プロキシ仮想マシンとハードウェアシステムアプリケーションソフトウェアとの間でデータをマッピングする少なくとも1つのアダプタを使用して、プロキシ物理ハードウェアシステム上のプロキシ仮想マシン内でハードウェアシステムアプリケーションソフトウェアを実行するステップと、仮想化システムを使用して、プロキシ物理ハードウェアシステム上のプロキシ仮想マシン内でハードウェアシステムアプリケーションソフトウェアを実行することにより、物理ハードウェアシステムをテストするステップとを有する方法。
【００５６】
項2．ハードウェア抽象化ソフトウェアレイヤがARINC 653オペレーティングシステムを含む、項1に記載の方法。
【００５７】
項3．少なくとも1つのアダプタがハードウェア抽象化ソフトウェアレイヤ内で実行される、項1に記載の方法。
【００５８】
項4．少なくとも1つのアダプタがプロキシ仮想マシン内で実行される、項1に記載の方法。
【００５９】
項5．少なくとも1つのアダプタが、ソフトウェア抽象化レイヤ内で実行される第1のアダプタと、プロキシ仮想マシン内で実行される第2のアダプタとを含む、項1に記載の方法。
【００６０】
項6．物理ハードウェアシステムが、複数のライン交換可能ユニットを備えるアビオニクスシステムを含む、項1に記載の方法。
【００６１】
項7．修正物理ハードウェアシステムを作成するために、テストに基づいて物理ハードウェアシステムを修正するステップと、修正物理ハードウェアシステムを展開するステップとをさらに有する、項1に記載の方法。
【００６２】
項8．物理ハードウェアシステムに適合するプロキシ物理ハードウェアシステムを取得するステップが、少なくとも物理ハードウェアシステムのプロセッサと同じプロセッサを有するプロキシ物理ハードウェアシステムを取得するステップを含む、項1に記載の方法。
【００６３】
項9．仮想化システム内で、プロキシ物理ハードウェアシステムからプロキシ仮想マシンを構築するステップが、プロキシ物理ハードウェアシステムの少なくとも1つのプロセッサをエミュレートするステップを含む、項1に記載の方法。
【００６４】
項10．物理ハードウェアシステムに適合するプロキシ物理ハードウェアシステムを取得するステップが、物理ハードウェアシステムの仕様にアクセスすることなく進行する、項1に記載の方法。
【００６５】
項11．ビークル物理ハードウェアシステムのユーザを訓練するために、仮想化システムを使用して少なくとも1つのビークル物理ハードウェアシステムをシミュレートするステップをさらに有する、項1に記載の方法。
【００６６】
項12．プロキシ仮想マシン内の対応するエミュレートされたプロキシ物理ハードウェアシステム上でハードウェアシステムアプリケーションソフトウェアを実行することにより、物理ハードウェアシステムをテストするためのシステムであって、物理ハードウェアシステムの態様に適合するプロキシ物理ハードウェアシステムと、プロキシ物理ハードウェアシステムから構築されたプロキシ仮想マシンを含む仮想化システムとを備え、プロキシ仮想マシンは、プロキシ物理ハードウェアシステムのハードウェア構成要素をエミュレートすることと、プロキシ物理ハードウェアシステムによって使用されたメモリ位置を再現するメモリマップを使用し、プロキシ仮想マシンとハードウェアシステムアプリケーションソフトウェアとの間でデータをマッピングする少なくとも1つのアダプタを使用して、プロキシ仮想マシン内でハードウェアシステムアプリケーションソフトウェアを実行するハードウェア抽象化ソフトウェアレイヤを実行することとを行う、システム。
【００６７】
項13．ハードウェア抽象化ソフトウェアレイヤがARINC 653オペレーティングシステムを含む、項12に記載のシステム。
【００６８】
項14．少なくとも1つのアダプタがハードウェア抽象化ソフトウェアレイヤ内で実行される、項12に記載のシステム。
【００６９】
項15．少なくとも1つのアダプタがプロキシ仮想マシン内で実行される、項12に記載のシステム。
【００７０】
項16．少なくとも1つのアダプタが、ソフトウェア抽象化レイヤ内で実行される第1のアダプタと、プロキシ仮想マシン内で実行される第2のアダプタとを含む、項12に記載のシステム。
【００７１】
項17．物理ハードウェアシステムが、複数のライン交換可能ユニットを備えるアビオニクスシステムを含む、項12に記載のシステム。
【００７２】
項18．仮想化システムを使用する物理ハードウェアシステムのテストに基づいて修正された、修正物理ハードウェアシステムをさらに備える、項12に記載のシステム。
【００７３】
項19．プロキシ物理ハードウェアシステムが、少なくとも物理ハードウェアシステムのプロセッサと同じプロセッサを備える、項12に記載のシステム。
【００７４】
項20．プロキシ物理ハードウェアシステムから構築されたプロキシ仮想マシンが、プロキシ物理ハードウェアシステムの少なくとも1つのプロセッサをエミュレートする、項12に記載のシステム。
【００７５】
項21．プロキシ仮想マシン内のエミュレートされたプロキシ物理ハードウェアシステムであって、物理ハードウェアシステムに対応するエミュレートされたプロキシ物理ハードウェアシステム上でハードウェアシステムアプリケーションソフトウェアの実行を操作するように人を訓練することにより、物理ハードウェアシステムを操作するように人を訓練する方法であって、物理ハードウェアシステムの態様に適合するプロキシ物理ハードウェアシステムを取得するステップと、仮想化システム内で、プロキシ物理ハードウェアシステムからプロキシ仮想マシンを構築するステップと、仮想化システムを使用して、プロキシ仮想マシン内のプロキシ物理ハードウェアシステムのハードウェア構成要素をエミュレートするステップと、プロキシ仮想マシン内でハードウェア抽象化ソフトウェアレイヤを実行するステップと、仮想化システムのハードウェア抽象化ソフトウェアレイヤにより、プロキシ物理ハードウェアシステムによって使用されたメモリ位置を再現するメモリマップを使用し、プロキシ仮想マシンとハードウェアシステムアプリケーションソフトウェアとの間でデータをマッピングする少なくとも1つのアダプタを使用して、プロキシ物理ハードウェアシステム上のプロキシ仮想マシン内でハードウェアシステムアプリケーションソフトウェアを実行するステップと、仮想化システムを使用して、プロキシ物理ハードウェアシステム上のプロキシ仮想マシン内でハードウェアシステムアプリケーションソフトウェアの実行を操作するように人を訓練することにより、物理ハードウェアシステムを操作するように人を訓練するステップとを有する方法。
【００７６】
項22．物理ハードウェアシステムがビークル物理ハードウェアシステムを含む、項21に記載の方法。
【００７７】
項23．ビークルが航空機を含み、仮想化システムがフライトシミュレータを含む、項22に記載の方法。
【００７８】
本開示は、本出願に記載された特定の実施形態に関して限定されるものではなく、これらの実施形態は、様々な態様の例示として意図されている。当業者には明らかなように、その趣旨および範囲から逸脱することなく、多くの修正および変更を行うことができる。本明細書に列挙されたものに加えて、本開示の範囲内の機能的に等価な方法および装置は、前述の説明から当業者には明らかであろう。そのような修正および変更は、添付の特許請求の範囲内に入るものである。本開示は、添付の特許請求の範囲が権利を与えられる均等物の全範囲とともに、そのような特許請求の範囲の条件によってのみ制限されるものである。本明細書で使用される用語は特定の実施形態のみを記載することを目的としており、限定するものではないことも理解されるべきである。
【００７９】
本明細書における実質的に任意の複数形および／または単数形の用語の使用に関して、当業者は、文脈および／または用途に適切であるように、複数形から単数形および／または単数形から複数形に変換することができる。明確にするために、本明細書では、様々な単数形／複数形の置換が明示的に記載される場合がある。
【００８０】
一般に、本明細書、特に添付の特許請求の範囲（たとえば、添付の特許請求の範囲の本文）で使用される用語は、一般に「オープン」用語として意図されること（たとえば、「含んでいる」という用語は「含んでいるが限定されない」として解釈されるべきであり、「有する」という用語は「少なくとも有する」として解釈されるべきであり、「含む」という用語は「含むが限定されない」として解釈されるべきである、など）を当業者なら理解されよう。特定の数の導入された請求項の列挙が意図される場合、そのような意図は請求項に明示的に列挙され、そのような列挙がない場合、そのような意図は存在しないことは、当業者ならさらに理解されよう。たとえば、理解を助けるために、添付の特許請求の範囲は、請求項の列挙を導入するための「少なくとも1つ」および「1つまたは複数」の導入フレーズの使用を含む場合がある。しかしながら、そのようなフレーズの使用は、不定冠詞「a」または「an」による請求項の列挙の導入が、そのような導入された請求項の列挙を含む任意の特定の請求項を、同じ請求項が、「1つまたは複数」または「少なくとも1つ」の導入フレーズ、および「a」または「an」などの不定冠詞（たとえば、「a」および／または「an」は、「少なくとも1つ」または「1つまたは複数」を意味するように解釈されるできである）を含むときでも、そのような列挙を1つだけ含む実施形態に限定することを意味すると解釈されるべきではなく、請求項の列挙を導入するために使用される定冠詞の使用についても同じことが当てはまる。さらに、特定の数の導入された請求項の列挙が明示的に列挙された場合でも、当業者は、そのような列挙が少なくとも列挙された数を意味するように解釈されるべきことを認識されよう（たとえば、他の修飾子がない「2つの列挙」の最小限の列挙は、少なくとも2つの列挙、または2つ以上の列挙を意味する）。さらに、「A、B、およびCのうちの少なくとも1つなど」に類似する慣例が使用されるような場合、一般に、そのような構造は、当業者が慣例を理解するという意味で意図される（たとえば、「A、B、およびCのうちの少なくとも1つを有するシステム」は、Aのみ、Bのみ、Cのみ、AおよびBを一緒に、AおよびCを一緒に、BおよびCを一緒に、ならびに／またはA、B、およびCを一緒に有するシステムなどを含むが、それらに限定されない）。「A、B、またはCのうちの少なくとも1つなど」に類似する慣例が使用されるような場合、一般に、そのような構造は、当業者が慣例を理解するという意味で意図される（たとえば、「A、B、またはCのうちの少なくとも1つを有するシステム」は、Aのみ、Bのみ、Cのみ、AおよびBを一緒に、AおよびCを一緒に、BおよびCを一緒に、ならびに／またはA、B、およびCを一緒に有するシステムなどを含むが、それらに限定されない）。さらに、説明、特許請求の範囲、または図面のいずれにせよ、2つ以上の代替用語を提示する事実上任意の分離語および／またはフレーズは、用語のうちの1つ、用語のうちのいずれか、または両方の用語を含む可能性を考察するように理解されるべきことは、当業者ならさらに理解されよう。たとえば、「AまたはB」というフレーズは、「A」または「B」または「AおよびB」の可能性を含むように理解される。加えて、本開��の特徴または態様がマーカッシュグループに関して記載されている場合、当業者は、マーカッシュグループの任意の個々のメンバまたはメンバのサブグループに関しても本開示がそれによって記載されることを認識されよう。
【００８１】
様々な態様および実施形態が本明細書で開示されたが、他の態様および実施形態が当業者には明らかであろう。本明細書で開示された様々な態様および実施形態は、例示を目的とするものであり、限定するものではなく、真の範囲および趣旨は添付の特許請求の範囲によって示される。
【符号の説明】
【００８２】
100  環境
101  環境
102  物理ハードウェアシステム
105  プロキシ物理ハードウェアシステム
110  仮想化システム
130  プロキシ仮想マシン
132  ハードウェア抽象化ソフトウェアレイヤ
134  物理プロキシ間アダプタソフトウェア
135  物理プロキシ間アダプタソフトウェア
136  ハードウェアシステムアプリケーションソフトウェア
145  プロキシオペレーティングシステム、ハードウェア抽象化ソフトウェアレイヤ、BSP、デバイスドライバ、およびブートローダ
147  プロキシハードウェアシステムドキュメンテーション
149  物理ハードウェアシステムドキュメンテーション
151  更新プログラムコード
153  ハードウェア抽象化ソフトウェアレイヤ
325  プロセッサ
331  メモリデバイス
333  ストレージデバイス
335  入出力デバイス
337  ネットワークインターフェース
341  システム通信バス
345  通信チャネル
349  割込みコントローラ
355  ブートローダ
425  プロセッサ
431  メモリデバイス
433  ストレージデバイス
435  入出力デバイス
437  ネットワークインターフェース
445  通信チャネル
449  割込みコントローラ
455  ブートローダ
503  コンピューティングデバイス
513  入出力デバイス
515  ストレージデバイス
517  プログラムコード
519  メモリマップ
521  割込みロジック
523  デバイスライブラリ
539  プロセッサ
541  メモリデバイス
543  入出力インターフェース
544  通信チャネル
545  ネットワークインターフェースデバイス
551  仮想化アプリケーション
555  トレーナ、テスト、および／または評価ソフトウェア
601  メモリマップ
602  アドレス空間
603  ハードウェア構成要素
605  メモリ位置、メモリ空間
【図１】
2020071870.tif 000003
【図２】
2020071870.tif 000004
【図３】
2020071870.tif 000005
【図４】
2020071870.tif 000006
【図５】
2020071870.tif 000007
【図６】
2020071870.tif 000008
【図７】
2020071870.tif 000009
【図８】
2020071870.tif 000010
【図９】
2020071870.tif 000011
【外国語明細書】
2020071870000001.pdf