JP2013012196A - ハードウェア抽象化を用いたソフトウェアアプリケーション実行の方法と装置 - Google Patents

ハードウェア抽象化を用いたソフトウェアアプリケーション実行の方法と装置 Download PDF

Info

Publication number
JP2013012196A
JP2013012196A JP2012136938A JP2012136938A JP2013012196A JP 2013012196 A JP2013012196 A JP 2013012196A JP 2012136938 A JP2012136938 A JP 2012136938A JP 2012136938 A JP2012136938 A JP 2012136938A JP 2013012196 A JP2013012196 A JP 2013012196A
Authority
JP
Japan
Prior art keywords
software application
hardware platform
hardware component
hardware
hdl
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2012136938A
Other languages
English (en)
Other versions
JP5976409B2 (ja
JP2013012196A5 (ja
Inventor
Jonathan Nicholas Hotra
ジョナサン ニコラス ホトラ,
Eugene Turner Donald
ドナルド ユージン ターナー,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Boeing Co
Original Assignee
Boeing Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Boeing Co filed Critical Boeing Co
Publication of JP2013012196A publication Critical patent/JP2013012196A/ja
Publication of JP2013012196A5 publication Critical patent/JP2013012196A5/ja
Application granted granted Critical
Publication of JP5976409B2 publication Critical patent/JP5976409B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45566Nested virtual machines

Abstract

【課題】ハードウェア抽象化を用いたソフトウェアアプリケーションを実行するための方法と装置を提供する。
【解決手段】ターゲットハードウェアプラットフォーム215のハードウェア記述言語(HDL)の記述が決定される。プログラマブルハードウェアコンポーネントは、HDL記述に基づいてターゲットハードウェアプラットフォーム215と機能的に等価に構成される。ソフトウェアアプリケーション210は、構成されたプログラマブルハードウェアコンポーネントを用いて、例えばVM205内のソフトウェアアプリケーションを実行することにより実行され、次いで、VM205は、構成されたプログラマブルハードウェアコンポーネントにより実行される。
【選択図】図2

Description

本発明は、概して、ハードウェア抽象化を用いたソフトウェアアプリケーションのための方法と装置に関する。詳しく述べると、本発明は、概して既存のソフトウェアの再利用に関し、具体的にはハードウェア抽象化を用いたソフトウェアアプリケーション(例えば、認証されたソフトウェアアプリケーション)を実行するための方法と装置に関する。
既存のソフトウェアアプリケーションは、時間をかけて書き込まれた何千億ものソースコードの行に関連付けられている。このようなソースコードは、通常、特定の物理的なハードウェアプラットフォームにより実行可能なオブジェクトコードに変換される(例えば、コンパイルされる)。物理的なハードウェアデバイスは、最後には旧式となる。このようにハードウェアが旧式になってしまったら、元の設計に所望の機能性が残っているとしても、特定のハードウェアプラットフォームを取得することはもはや現実的でない。システムの生産者は、一般に、ハードウェアの製造者がハードウェアチップの生産中止を決定する時期をコントロールすることはできない。したがって、ターゲットハードウェアプラットフォームが旧式となったとき、特にソフトウェアアプリケーションのソースコードがもはや利用できない場合、従来のソフトウェア開発及び納品方法を用いて、特定のハードウェアプラットフォームに関連付けられたソフトウェアアプリケーションを再実装(例えば、再書込み)しなければならない場合がある。
さらに、幾つかのソフトウェアアプリケーションは、ミッションクリティカルな意味で、ソフトウェアアプリケーションの使用に先立ってターゲットハードウェアプラットフォームについて認証されなければならない。新規のハードウェアプラットフォーム上でこのようなソフトウェアの認証を行うことは、何の機能的価値も追加しないのに、使用のためにソフトウェアを納品するプロセスに有意な遅延及び/又はコストを生じさせる。
一態様では、ターゲットハードウェアプラットフォームにより実行されることが認証されたソフトウェアアプリケーションの実行に使用される方法が提供される。この方法は、ターゲットハードウェアプラットフォームのハードウェア記述言語(HDL)の記述を決定することを含む。ハードウェアコンポーネントは、HDL記述に基づいてターゲットハードウェアプラットフォームと機能的に等価に構成される。ソフトウェアアプリケーションは、そのように構成されたハードウェアコンポーネントを用いて実行される。
別の態様では、仮想マシン(VM)を用いたソフトウェアアプリケーションの実行に使用されるデバイスが提供される。このデバイスは、記憶装置と、記憶装置に連結されたプログラマブルハードウェアコンポーネントとを含んでいる。記憶装置は、仮想マシン(VM)とソフトウェアアプリケーションとを記憶するように構成されている。プログラマブルハードウェアコンポーネントは、ターゲットハードウェアプラットフォームのハードウェア記述言語(HDL)の記述に基づいてプログラムされている。プログラマブルハードウェアコンポーネントはソフトウェアアプリケーションを実行するようにプログラムされており、このソフトウェアアプリケーションは、ターゲットハードウェアプラットフォーム及びHDL記述の少なくとも一方により実行されることについて認証されている。
また別の態様では、仮想マシン(VM)を用いたソフトウェアアプリケーションの実行に使用される方法が提供される。この方法は、VMの実行のためのターゲットハードウェアプラットフォームを選択することを含む。ターゲットハードウェアプラットフォームのハードウェア記述言語(HDL)の記述が決定される。プログラマブルハードウェアコンポーネントはHDL記述に基づいてプログラムされており、VMは、プログラムされたプログラマブルハードウェアコンポーネントを用いて実行される。
例示的なコンピューティング装置のブロック図である。 仮想マシンを用いたソフトウェアアプリケーションの実行に使用可能なコンピューティング装置の例示的な構成を示すブロック図である。 VMを用いたソフトウェアアプリケーションの実行に使用される例示的方法のフロー図である。 ホストオペレーティングシステムにより実行される第2の仮想マシンを用いてソフトウェアアプリケーションに機能性を追加するために使用可能なコンピューティング装置の例示的な構成を示すブロック図である。 ネイティブ仮想化レイヤにより実行される第2の仮想マシンを用いてソフトウェアアプリケーションに機能性を追加するために使用可能なコンピューティング装置の例示的な構成を示すブロック図である。 仮想マシンを実行するホストOSにより実行される第2のソフトウェアアプリケーションを用いて仮想マシンにより実行されるソフトウェアアプリケーションに機能性を追加するために使用可能なコンピューティング装置の例示的な構成を示すブロック図である。
本明細書に提供される実施形態は、ハードウェア記述言語(HDL)及び仮想化により提供されるハードウェア抽象化を利用することにより、新規のハードウェアプラットフォーム上でレガシーソフトウェアを再利用することを容易にする。具体的には、ハードウェアプラットフォームのハードウェア記述言語(HDL)による記述及び仮想化を使用して、特定のプラットフォームの使用可能期間より長い延長された期間(例えば、数十年間)にわたって使用出来るハードウェア及びソフトウェアを実現することができる。このような実施形態により、さらに、ソフトウェアのソースコードが既に利用不能となったときでも、及び/又は新規のハードウェアプラットフォームに関してソフトウェアを認証するために費用をかけず、ソフトウェアを継続使用することが可能になる。
図1は、例示的なコンピューティング装置100のブロック図である。このような例示的実施形態では、コンピューティング装置100は、プロセッサユニット104、メモリ素子106、固定記憶域108、通信ユニット110、入出力(I/O)ユニット112、及びディスプレイ114のような表示インターフェースの間で通信を行う通信ファブリック102を含んでいる。これに加えて、又はこれに代えて、表示インターフェースは、音響装置(図示しない)及び/又はユーザに情報を提供できる任意の装置を含むことができる。
プロセッサユニット104は、メモリ素子106にローディング可能なソフトウェアのための命令を実行する。プロセッサユニット104は、特定の実装態様に応じて、一又は複数のプロセッサの組とすることができるか、或いは複数のプロセッサコアを含むことができる。さらに、プロセッサユニット104は、単一のチップ上に主要プロセッサと共に二次プロセッサが存在する一又は複数の異種プロセッサシステムを使用して実施されてもよい。別の実施形態では、プロセッサユニット104は、同種のプロセッサを複数個含む同種プロセッサシステムである。
メモリ素子106及び固定記憶域108は、記憶装置の例である。本明細書で使用する場合、記憶装置は、一時的に及び/又は恒久的に情報を保存することができる何らかのハードウェア部分である。メモリ素子106は、例えば、限定しないが、ランダムアクセスメモリ、及び/又は他のいずれかの適切な揮発性又は非揮発性の記憶装置とすることができる。固定記憶域108は、特定の実装態様に応じて種々の形態をとることができ、且つ一又は複数のコンポーネント又は素子を含むことができる。例えば、固定記憶域108は、ハードドライブ、フラッシュメモリ、書換え形光ディスク、書換え可能磁気テープ、及び/又はそれらの何らかの組み合わせである。固定記憶域108によって使用される媒体は、取り外し可能なものでもよい。例えば、限定しないが、取り外し可能なハードドライブを固定記憶域108に使用することができる。
メモリ素子106及び/又は固定記憶域108のような記憶装置は、本明細書に記載のプロセスに使用できるデータを保存することができる。例えば、記憶装置は、仮想マシン、及び/又はその他のソフトウェアアプリケーション、及び/又は本明細書に記載の方法に使用するのに適切な他のいずれかの情報といった、一又は複数のソフトウェアアプリケーション(例えば、ソースコード及び/又はコンピュータで実行可能な命令を含む)を保存することができる。
このような実施形態では、通信ユニット110が他のコンピューティング装置又はシステムとの通信を行う。例示的な実施形態では、通信ユニット110は、一又は複数のネットワークインターフェースカードを含む。通信ユニット110は、物理的通信リンク及び/又は無線通信リンクを介して通信することができる。
入出力ユニット112は、コンピューティング装置100に接続される他のデバイスとのデータの入出力を可能にする。例えば、限定しないが、入出力ユニット112は、ユーザ入力デバイス(例えばキーボード及び/又はマウス)によるユーザ入力のための接続部となる。さらに、入出力ユニット112は、プリンタに出力を送ることができる。ディスプレイ114は、ユーザに対して情報を表示する機構を提供する。例えば、ディスプレイ114のような表示インターフェースは、本明細書に記載されるようなグラフィカルユーザインターフェースを表示することができる。
オペレーティングシステム及びアプリケーション又はプログラムのための命令は、固定記憶域108にローディングされる。このような命令は、メモリ素子106にローディングされて、プロセッサユニット104によって実行される。メモリ(例えばメモリ素子106)に位置させることができるコンピュータで実施可能な命令及び/又はコンピュータで実行可能な命令を使用して、プロセッサユニット104により様々な実施形態のプロセスを実行することができる。このような命令はプログラムコード(例えば、オブジェクトコード及び/又はソースコード)と呼ばれ、プロセッサユニット104に含まれる一のプロセッサによって読み取られ、実行される。種々の実施形態において、プログラムコードは、物理的な又は有形の様々なコンピュータ読み取り可能媒体(例えば、メモリ素子106又は固定記憶域108)上に具現化される。
プログラムコード116は、選択的に取り外し可能な一又は複数の記憶装置(例えば、メモリ素子106、固定記憶域108、及び/又はコンピュータで読み取り可能な媒体118)上に機能的な形態で位置させることができ、コンピューティング装置100上にローディング又は転送されてプロセッサユニット104により実行される。プログラムコード106及びコンピュータで読み取り可能な媒体118は、このような実施例においてコンピュータプログラム製品120を形成する。一実施例では、コンピュータで読み取り可能な媒体118は、例えば、記憶装置(例えば、固定記憶域108の一部であるハードドライブ)上への転送のために、ドライブ又は固定記憶域108の一部である他のデバイスに挿入又は配置される光ディスク又は磁気ディスクのような有形の形態をとることができる。有形の形態では、コンピュータで読み取り可能な媒体118は、コンピューティング装置100に接続されるハードドライブ、サムドライブ、又はフラッシュメモリの形態をとることもできる。コンピュータで読み取り可能な媒体118の有形形態は、コンピュータで記録可能な記憶媒体とも呼ばれる。場合によっては、コンピュータで読み取り可能な媒体118は取り外し可能でなくともよい。
別の構成では、プログラムコード116は、通信装置110への通信リンクを介して、及び/又は入出力ユニット112への接続を介して、コンピュータで読み取り可能な媒体118からコンピューティング装置100へ転送可能である。このような実施例では、通信リンク及び/又は接続は物理的なものでもよく、無線でもよい。コンピュータで読み取り可能な媒体は、通信リンク又はプログラムコードを含む無線送信といった非有形媒体の形態をとることもできる。
幾つかの例示的実施形態では、プログラムコード116は、コンピューティング装置100内部での使用のために、ネットワークを介して、別のコンピューティング装置又はコンピュータシステムから固定記憶域108へとダウンロードすることができる。例えば、サーバコンピューティング装置内でコンピュータ読み取り可能記憶媒体に保存されているプログラムコードは、ネットワークを介してサーバからコンピューティング装置100にダウンロード可能である。プログラムコード116を供給するコンピューティング装置は、サーバコンピュータ、ワークステーション、クライアントコンピュータ、又はプログラムコード116を保存及び転送できるその他何らかのデバイスとすることができる。
プログラムコード116は、機能的に関連するコンピュータで実行可能な複数のコンポーネントに編成することができる。例えば、プログラムコード116は、仮想マシン、ソフトウェアアプリケーション、ハイパーバイザー、及び/又は本明細書に記載の方法に適した任意のコンポーネントを含むことができる。各コンポーネントは、プロセッサユニット104により実行されると、プロセッサユニット104に、本明細書に記載される一又は複数の工程を実行させるコンピュータで実行可能な命令を含むことができる。
コンピューティング装置100について本明細書で例示した種々のコンポーネントは、種々の実施形態が実施される方法をアーキテクチャ的に限定するものではない。種々の例示的な実施形態を、コンピューティング装置100について例示されたコンポーネントに追加の又はそれらコンポーネントに代わるコンポーネントを含むコンピュータシステムにおいて実施することができる。例えば、図1に示す他のコンポーネントを、図示されたものから変更することができる。
一実施例として、コンピューティング装置100に含まれる記憶装置は、データを保存できる任意のハードウェア装置である。メモリ素子106、固定記憶域108、及びコンピュータで読み取り可能な媒体118は、有形形態の記憶装置の例である。
別の実施例では、バスシステムを使用して通信ファブリック102を実施することができ、このようなバスシステムには、システムバス又は入出力バスといった一又は複数のバスが含まれる。言うまでもなく、バスシステムは、バスシステムに取り付けられた種々のコンポーネント又はデバイスの間でデータ伝送を行う任意の適切な種類のアーキテクチャを使用して実施することができる。加えて、ネットワークインターフェースは、モデム又はネットワークアダプタといった、データの送受信に使用される一又は複数のデバイスを含むことができる。さらに、メモリは、例えば、限定しないが、メモリ素子106、又は通信ファブリック102中に存在するメモリコントローラハブ及びインターフェースに見られるようなキャッシュとすることができる。
図2は、仮想マシン(VM)を用いたソフトウェアアプリケーションの実行に使用可能なコンピューティング装置(例えば、コンピューティング装置100)の例示的な構成200を示すブロック図である。図3は、VM205を用いたソフトウェアアプリケーションの実行に使用される例示的方法のフロー図である。
図2及び3に示すように、例示的な実施形態において、VM、及び/又はオリジナルソフトウェアアプリケーション210を実行するためにターゲットハードウェアプラットフォームが選択される(305)。例えば、ターゲットハードウェアプラットフォームは、現在その上でソフトウェアアプリケーション210が直接実行されるハードウェアプラットフォーム、及び/又は現在その上でVM205によってソフトウェアアプリケーション210が実行されるハードウェアである。これに加えて、又はこれとは別の構成として、ターゲットハードウェアプラットフォームは、その上でVM205を実行したいと考えるハードウェアプラットフォームとすることができる。幾つかの実施形態では、ターゲットハードウェアプラットフォームは、命令セットアーキテクチャ(ISA)、及び/又はISAを実装するマイクロアーキテクチャに関連付けられる。
ターゲットハードウェアプラットフォームのハードウェア記述言語(HDL)の記述が決定される(310)。例えば、HDL記述は、ターゲットハードウェアプラットフォームの供給業者(例えば、製造者)から取得され、ターゲットハードウェアプラットフォームのサンプルに基づいて作成される、及び/又は新規のハードウェアプラットフォームの所望の動作に基づいて作成される。HDL記述は、ターゲットハードウェアプラットフォーム(例えば、マイクロアーキテクチャ)の抽象化と理解することができる。
HDL記述に基づいて、プログラマブルハードウェアコンポーネント及び/又はプロセッサのようなハードウェアコンポーネントが構成される(例えば、プログラムされる及び/又は作成される)(315)。例えば、プログラマブルハードウェアコンポーネントは、限定しないが、プログラマブルロジックデバイス(PLD)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックアレイ(PLA)、及び/又は再構成可能なデジタル回路の作成に使用できる任意のデバイスを含むことができる。プログラマブルハードウェアコンポーネントは、HDL記述に基づいてプログラムすることができる。これに追加して、又はこれとは別の構成として、HDL記述に基づいて、プロセッサ、例えば特定用途向け集積回路(ASIC)を作成することができる。構成されたハードウェアコンポーネントはHDLハードウェアプラットフォーム215と呼ばれる。
例示的な実施形態では、HDL記述に基づいてハードウェアコンポーネントを構成すること(315)には、HDL記述によって記載されたターゲットハードウェアプラットフォームに少なくとも部分的に機能的に等価なハードウェアコンポーネントを構成することが含まれ、これにより、ターゲットハードウェアプラットフォームによって実行されることに関するソフトウェアアプリケーション210の認証が、HDLハードウェアプラットフォーム215によるソフトウェアアプリケーション210の実行に適用可能となる。
ターゲットハードウェアプラットフォームと機能的に等価であることに加えて、HDLハードウェアプラットフォーム215は、ターゲットハードウェアプラットフォームに含まれない機能を含むことができる。幾つかの実施形態では、ハードウェアコンポーネントは、エミュレーションを加速させ、このような加速がHDLハードウェアプラットフォーム215に含まれるように構成される(315)。エミュレーションの加速は、仮想プラットフォームソフトウェア開発設計に有益であり、この場合仮想プラットフォームは基礎となるハードウェアの抽象化を表す。例えば、仮想プラットフォームは、組み込みシステム用のソフトウェアを開発するために使用することができる。従来の仮想プラットフォームの実行速度は、基礎となるハードウェアより有意に低く(例えば10%未満の速度)、一般にソフトウェアの開発プロセスを長期化させる。
幾つかの実施形態では、コアプロセッサに追加アセンブリ命令を加えることにより、HDLハードウェアプラットフォーム215にエミュレーション加速器が追加される。一実施例では、ターゲットハードウェアプラットフォームに対応するアセンブリ命令(例えば、「ADDイミディエト(「addi」)」命令)が、ソフトウェア機能において実施される。従来のエミュレーションでは、ソフトウェア機能は第2のハードウェアプラットフォームのためにコンパイルされる。エミュレーションの加速を達成するために、ソフトウェア機能のロジックをHDL記述におけるアセンブリ命令(例えば、「thp_addi」)として実施することができる。したがって、ハードウェアコンポーネントを構成すること(315)により、HDLハードウェアプラットフォーム215にアセンブリ命令の実施が含まれる。例示的な実施形態では、HDL記述に含まれるエミュレーションの加速は、HDL記述自体に含まれるレジスタ及び状態情報を処理する。割り込み及びソフトウェア障害も、HDL記述に含まれるロジックによって調整される。さらに、HDLハードウェアプラットフォーム215内のリソースが限られている場合、物理的メモリ及びスタックをHDLハードウェアプラットフォーム215とは別に配置することができ、エミュレートされたプロセッサのメモリ管理ユニットをHDL記述に含めることができる。
幾つかの実施形態では、エミュレーション加速器に、エミュレーションの読み取り−デコード−実行法(Read−Decode−Execute emulation method)が使用される。すべての仮想化及びエミュレーションがHDL記述中に持ち込まれるわけではなく、幾つかの実施形態では、プロセッサのエミュレーションだけがHDL記述において実施され、I/O装置のような他のフィーチャはHDL記述から省かれる。
ソフトウェアアプリケーション210は、HDLハードウェアプラットフォーム215を用いて実行される。例示的実施形態では、VM205はHDLハードウェアプラットフォーム215を用いて実行され(320)、ソフトウェアアプリケーション210は、VM205を用いて実行される(325)。具体的には、VM205は、HDLハードウェアプラットフォーム215によって直接実行されるホストオペレーティングシステム(OS)220により実行可能である。ホストOS220は、VM205の仮想化レイヤ225を実行し、仮想化レイヤ225はゲストOS230(ホストOSと同じでも異なってもよい)を実行する。次いで、ゲストOS230は、ソフトウェアアプリケーション210を実行する。
仮想化レイヤ225及び/又はVM205は、ゲスト230に対し、「仮想化された」ハードウェアと呼ばれるHDLハードウェアプラットフォーム215の抽象化を提供する。仮想化されたハードウェアは、コンピューティング装置100(図1に示す)に含まれる任意のコンポーネント、例えばプロセッサユニット104、及びメモリ106の抽象化を含むことができる。
幾つかの実施形態では、HDLハードウェアプラットフォーム215は、複数の入出力(I/O)装置235(例えば、図1に示す入出力ユニット112により提供される)を含み、これらの入出力装置は、センサ、ユーザ入力装置、被制御デバイス(例えばモータ)、並びに/或いは、コンピューティング装置100(図1)への入力提供及び/又は同装置100からの出力の受領を行うことができるその他任意のデバイスといったデバイスとの相互作用を容易にする。I/O装置235は、例えば、直列の通信ポート及び/又は並列の通信ポートを含むことができる。
ホストOS220は、I/O装置235にアクセスするためにホストOS220により実行されるソフトウェアが使用できるI/O装置ドライバ240を含む。例示的な実施形態では、仮想レイヤ225は、I/O装置ドライバ240を介してI/O装置235に対応する、又は同装置235に「対応して位置する(map to)」仮想I/O装置245を提供する。したがって、仮想レイヤ225は、VM205に対してI/O装置235を抽象化している。ホストOS220と同様に、ゲストOS230は、ゲストOS230により実行されて仮想I/O装置245にアクセスするソフトウェアによって使用されるI/O装置ドライバ250を含む。幾つかの実施形態では、様々な種類のI/O装置が互いに対応して位置している。例えば、仮想ユニバーサルシリアルバス(USB)デバイスを物理的なイーサネット(登録商標)デバイスに対応させて位置づけて、仮想レイヤ225内において翻訳を起こすことができる。
特に、VM205は、仮想レイヤ225により提供される仮想化されたハードウェアにしかアクセスしないので、VM205、及びVM205によって実行されるソフトウェア(例えば、ゲストOS230、及び/又はソフトウェアアプリケーション210)は、仮想レイヤ225の下に位置する物理的ハードウェアに対する変更から絶縁される(例えば、そのような変更の影響を受けない)。例示的な実施形態では、ターゲットハードウェアプラットフォームは第1のハードウェアプラットフォームと考えられ、ソフトウェアアプリケーション210は、第1のハードウェアプラットフォームとは異なる第2のハードウェアプラットフォームに(例えば実行可能に)関連付けられる。VM205は、ソフトウェアアプリケーション210に対し、第2のハードウェアプラットフォームをエミュレートする仮想ハードウェアプラットフォームを提供するように構成される。したがって、ゲストOS230及び/又はソフトウェアアプリケーション210に関連付けられたソースコードが、利用不能であるか、又は新規のハードウェアプラットフォームによる実行に合わせて修正することが実行不能である場合も、このようなソフトウェアはVM205によって実行可能である。
例示的な実施形態では、ソフトウェアアプリケーション210は、ターゲットハードウェアプラットフォームによって、及び/又はターゲットハードウェアプラットフォームを記述するHDL記述に基づいて構成された一又は複数のデバイス(例えば、別のHDLハードウェアプラットフォーム215)によって実行されることについて承認されている。例えば、ソフトウェアアプリケーション210の包括的な評価及び/又は確認試験は、ターゲットハードウェアプラットフォームにより実行されるソフトウェアアプリケーション210を用いて問題なく完了している。このような実施形態では、ターゲットハードウェアプラットフォームによる実行に関するソフトウェアアプリケーション210の認証は、HDLハードウェアプラットフォーム215によるソフトウェアアプリケーションの実行に適用可能である。したがって、認証プロセスに関する少なくとも何らかの努力(例えば、評価、及び/又は確認試験)を省くことができる。
幾つかの実施形態では、方法300は繰り返し実行される。考えられる一の状況では、HDL記述に基づいて構成された(315)ハードウェアコンポーネントが利用不能となる場合がある。例えば、ハードウェアコンポーネントの供給業者(例えば、製造者)が、そのハードウェアコンポーネントの製造を中止するかもしれない。そのような状況では、元々構成されていたハードウェアコンポーネント、又は最初のハードウェアコンポーネントは、最初のハードウェア仕様に関連付けられており、ソフトウェアアプリケーション210の実行を、第2のハードウェア仕様に関連付けられた代替えのハードウェアコンポーネント、又は第2のハードウェアコンポーネントによって実行することが望ましい。例えば、第2のハードウェアコンポーネントは、第1のハードウェアコンポーネントの改訂とすることができるか、又は第1のハードウェアコンポーネントとは無関係のものとすることができる。
このような実施形態では、ターゲットハードウェアプラットフォームのHDL記述が既に決定されている(310)ので、上述のように、第2のハードウェアコンポーネントをHDL記述に基づいて構成して第2のHDLハードウェアプラットフォーム215を作成する(315)ことで、第2のハードウェアコンポーネントとのソフトウェアアプリケーション210の互換性が達成される。例示的な実施形態では、第1のハードウェアコンポーネントの構成(315)に使用したものと同じHDL記述に基づいて第2のハードウェアコンポーネントを構成すること(315)により、第2のハードウェアコンポーネントが第1のハードウェアコンポーネントと機能的に等価なものになる。したがって、上述のように、ソフトウェアアプリケーション210が第1のハードウェアコンポーネントによる実行について認証されている場合、第2のハードウェアコンポーネントを第1のハードウェアコンポーネントと機能的に等価に構成する(315)ことにより、この認証は、第2のハードウェアコンポーネントによるソフトウェアアプリケーション210の実行にも適用可能となる。
このような状況では、第1のハードウェアコンポーネントは、VM205の第1のインスタンスを実行し、これによりソフトウェアアプリケーション210の第1のインスタンスが実行されると考えられる。上述のように構成された(315)第2のハードウェアコンポーネントの場合、第2のハードウェアコンポーネントを用いてVM205の第2のインスタンスが実行され(320)、このVM205の第2のインスタンスを用いてソフトウェアアプリケーション210の第2のインスタンスが実行される(325)。
幾つかの実施形態では、ソフトウェアアプリケーション210に含まれていない機能性が、ソフトウェアアプリケーション210を直接修正することなく追加される。図4は、ソフトウェアアプリケーション210に機能性を追加するために使用可能なコンピューティング装置の例示的な構成400を示すブロック図であり、これは、ホストオペレーティングシステム220により実行される第2の仮想マシン410を用いて第1のVM405によって実行される。
図4に示される実施形態では、第1のVM405が、上述のように、オリジナルソフトウェアアプリケーション210を実行する。ソフトウェアアプリケーション210の動作は、第1の仮想レイヤ420によって第1のVM405に提供される第1の仮想I/O装置415により実行される。第1の仮想レイヤ420はホストOS425によって実行され、ホストOS425は第2の仮想レイヤ430の実行も行う。第2の仮想レイヤ430は、第2のVM410に対し、第1の仮想I/O装置415に対応して位置する第2の仮想I/O装置435を提供し、第2のVM410はI/O装置ドライバ440を介して第2の仮想I/O装置435にアクセスする。
第2のソフトウェアアプリケーション445は、第2のVM410によって実行されて、オリジナルソフトウェアアプリケーション210には含まれていない追加の機能性を提供する。このような追加の機能性の少なくとも一部は、第1の仮想I/O装置415及び第2の仮想I/O装置435を用いてオリジナルソフトウェアアプリケーション210と第2のソフトウェアアプリケーション445との間でのデータの経路指定を行うことにより有効となる。例示的な実施形態では、第2のソフトウェアアプリケーション445は、ソフトウェアアプリケーション210からデータ(例えば、コマンド及び/又はリクエスト)を受け取り、第2のソフトウェアアプリケーション445に実装された要件及び/又は規則に基づいてこのようなデータに応答する。例えば、ソフトウェアアプリケーション210は、被制御デバイスのためのコマンドを第1の仮想I/O装置415に伝送することができる。このようなコマンドは、第1の仮想I/O装置415により、第2の仮想I/O装置435を介して、第2のソフトウェアアプリケーション445に経路指定される。第2のソフトウェアアプリケーション445は、元の宛先(例えば、被制御デバイス)にこのコマンドを渡すことができるか、第2のソフトウェアアプリケーション445に実装された要件及び/又は規則に基づいてこのコマンドを修正及び/又はブロックすることができる。さらに、第2のソフトウェアアプリケーション445は、このような要件及び規則に基づいて、第2の仮想I/O装置435及び第1の仮想I/O装置415を介してオリジナルソフトウェアアプリケーション210に応答を伝送することができる。
幾つかの実施形態では、追加の機能性は、仮想化の第2のレイヤによってサポートされる。図5は、ソフトウェアアプリケーション210に機能性を追加するために使用可能なコンピューティング装置の例示的な構成500を示すブロック図であり、これは、第2のネイティブVM515を用いて第1のネイティブVM510内部において第1のVM505によって実行される。
例示的実施形態では、第1のネイティブVM510及び第2のネイティブ515は、HDLハードウェアプラットフォーム525によって直接実行される(たとえば、OSを仲介させることなく)ネイティブ仮想化レイヤ520により提供される仮想化されたハードウェアにアクセスする。例えば、ネイティブ仮想化レイヤ520は、第1のネイティブVM510に第1の仮想I/O装置530を、第2のネイティブVM515には仮想I/O装置530に対応して位置する第2の仮想I/O装置535を、それぞれ提供する。したがって、コマンド及び/又はリクエストといったデータが、オリジナルソフトウェアアプリケーション210から、第2のネイティブVM515により実行される第2のソフトウェアアプリケーション540に経路指定され、図4を参照して上述したように、機能性が拡張される。ネイティブ仮想レイヤ520により実行されるネイティブVM510、515を使用することで、ソフトウェアアプリケーション210、540とHDLハードウェアプラットフォーム525との間の抽象化レベルを取り除くことにより、システム性能が容易に向上する。
幾つかの実施形態では、追加の機能性は、ホストOS内で直接実行するソフトウェアによってサポートされる。図6は、ソフトウェアアプリケーション210に機能性を追加するために使用可能なコンピューティング装置の例示的な構成600を示すブロック図であり、これは、VM605も実行するホストOS615により実行される第2のソフトウェアアプリケーション610を用いてVM605によって実行される。例示的な実施形態では、ホストOS615はVM605に仮想レイヤ620を提供する。仮想レイヤ620は仮想I/O装置625を含み、この装置625により、ソフトウェアアプリケーション210はコマンド及び/又はリクエストといったデータの伝送を行う。第2のソフトウェアアプリケーション610は、図4を参照して上述したように第2のソフトウェアアプリケーション610によってオリジナルソフトウェアアプリケーション210の機能性が拡張されるように、仮想I/O装置625と直接通信する。
図1〜6及び詳細な説明に示すように、仮想マシン(VM)205を用いたソフトウェアアプリケーション210の実行に使用される方法が開示される。この方法は、VM205を実行するためのターゲットハードウェアプラットフォーム215を選択すること、ターゲットハードウェアプラットフォームのハードウェア記述言語(HDL)の記述を決定すること、HDL記述に基づいてプログラマブルハードウェアコンポーネントをプログラムすること(315)、並びに、プログラムされたプログラマブルハードウェアコンポーネント315を使用してVM205を実行することを含む。一変形例では、この方法は、プログラムされたプログラマブルハードウェアコンポーネント315により実行されるVM205を用いてソフトウェアアプリケーション210を実行することを含み、この場合、ソフトウェアアプリケーション210はターゲットハードウェアプラットフォーム215上で実行されることについて認証されており、HDL記述に基づいてプログラマブルハードウェアコンポーネントをプログラムすることが、プログラマブルハードウェアコンポーネント315を、ターゲットハードウェアプラットフォーム215と機能的に等価に構成することを含み、且つターゲットハードウェアプラットフォーム215によって実行されることについてのソフトウェアアプリケーション210の認証がが、プログラムされたプログラマブルハードウェアコンポーネント315によるソフトウェアアプリケーション210の実行に適用可能である。一変形例では、ターゲットハードウェアプラットフォーム215を選択することが、その上でVM205によりソフトウェアアプリケーション210が現在実行されているハードウェアプラットフォームを選択することを含む。一変形例では、ターゲットハードウェアプラットフォーム215を選択することは、その上でVM205を実行したいと考えるハードウェアプラットフォームを含む。
また別の変形例では、VM205を実行することは、第1のハードウェア使用に関連付けられた第1のプログラマブルハードウェアコンポーネントを用いてVM205の第1のインスタンスを実行することを含み、前記方法は、さらに、HDL記述に基づいて、第2のハードウェア仕様に関連付けられた第2のプログラマブルハードウェアコンポーネントをプログラムすること、並びに第2のプログラマブルハードウェアコンポーネントを用いてVM205の第2のインスタンスを実行することを含む。
また別の変形例では、HDL記述に基づいて第2のプログラマブルハードウェアコンポーネント215をプログラムすることが、第2のプログラマブルハードウェアコンポーネント215を、第1のプログラマブルハードウェアコンポーネントと機能的に等価に構成することを含み、この場合、ソフトウェアアプリケーション210は第1のプログラマブルハードウェアコンポーネント315上で実行されることについて認証されており、第1のプログラマブルハードウェアコンポーネント315と機能的に等価に第2のプログラマブルハードウェアコンポーネント315を構成することにより、第1のプログラマブルハードウェアコンポーネント315による実行に関するソフトウェアアプリケーション210の認証が、第2のプログラマブルハードウェアコンポーネント215によるソフトウェアアプリケーション210の実行に適用可能となる。また別の変形例では、本方法は、さらに、VM205の第1のインスタンスを使用してソフトウェアアプリケーション210の第1のインスタンスを実行すること、並びにVM205の第2のインスタンスを使用してソフトウェアアプリケーション210の第2のインスタンスを実行することを含み、この場合、ソフトウェアアプリケーション210はHDL記述により記述されたターゲットハードウェアプラットフォーム215上で実行されることについて認証されている。
上述した種々の有利な実施形態の説明は、例示及び説明を目的とするものであり、完全な説明であること、又はこれらの実施形態を開示された形態に限定することを意図していない。当業者には、多数の修正例及び変形例が明らかであろう。さらに、種々の有利な実施形態は、他の有利な実施形態とは異なる利点を提供する。選択された一又は複数の実施形態は、実施形態の原理と、実用的な用途とを最もよく説明するために、並びに、考慮される特定の用途に適した様々な修正点と共に種々の実施形態の開示内容を当業者が理解できるように、選ばれて説明されている。
本明細書では、ベストモードを含む種々の実施形態を開示するため、任意のデバイス又はシステムの作成及び使用と、包含された任意の方法の実行を含めて、当業者がこれらの実施形態を実行できるように、実施例を使用した。特許性を有する範囲は、特許請求の範囲によって規定され、当業者であれば想起できる他の実施例を含みうる。そのような他の実施例は、請求の範囲の記載内容と異ならない構造要素を有するのであれば、又は請求の範囲の記載内容との有意な差異を有さない等価な構造要素を含むのであれば、特許請求の範囲に含まれる。

Claims (10)

  1. ターゲットハードウェアプラットフォームにより実行される(305)ソフトウェアアプリケーション(210)の実行に使用される方法であって、
    ターゲットハードウェアプラットフォームのハードウェア記述言語(HDL)の記述を決定すること(310)、
    HDL記述に基づいてターゲットハードウェアプラットフォーム(305)と機能的に等価にプログラマブルハードウェアコンポーネント(315)を構成すること(315)、並びに
    構成されたプログラマブルハードウェアコンポーネント(315)を使用してソフトウェアアプリケーション(210)を実行すること(315)
    を含む方法。
  2. ソフトウェアアプリケーション(210)の実行が、
    構成されたハードウェアコンポーネントを使用して仮想マシン(VM)(205)を実行すること(320)、並びに
    VM(205)を使用してソフトウェアアプリケーション(210)を実行すること(325)
    を含み、
    ターゲットハードウェアプラットフォーム(215)が第1のハードウェアプラットフォーム(215)であり、
    ソフトウェアアプリケーション(210)が第2のハードウェアプラットフォームに関連付けられており、且つ
    第2のハードウェアプラットフォームをエミュレートする仮想ハードウェアプラットフォームを提供するように、VM(205)を構成する、
    請求項1に記載の方法。
  3. ソフトウェアアプリケーション(210)が第1のソフトウェアアプリケーション(210)であって、前記方法が、さらに、
    構成されたプログラマブルハードウェアコンポーネント(315)を用いて第2のソフトウェアアプリケーション(445、610)を実行することであって、第2のソフトウェアアプリケーション(445、610)が、第1のソフトウェアアプリケーション(210)には含まれていない追加の機能性を含むこと、並びに
    第1のソフトウェアアプリケーション(210)から第2のソフトウェアアプリケーション(445、610)へとデータを経路指定することであって、データがリクエスト及びコマンドの少なくとも一方を含むこと
    を含む、請求項1又は2に記載の方法。
  4. プログラマブルハードウェアコンポーネントを構成すること(315)が、プログラマブルハードウェアコンポーネントをプログラムすること(315)である、請求項1ないし3のいずれか一項に記載の方法。
  5. さらに、HDL記述にエミュレーションの加速を含めることを含み、エミュレーションの加速が、ターゲットハードウェアプラットフォーム(215)に対応する少なくとも一つのアセンブリ命令の実施を含む、請求項1ないし4のいずれか一項に記載の方法。
  6. 仮想マシン(VM)(205)を用いたソフトウェアアプリケーション(210)の実行に使用される装置であって、
    仮想マシン(VM)(205)とソフトウェアアプリケーション(210)とを記憶するように構成されている記憶装置、及び
    前記記憶装置に連結されたプログラマブルハードウェアコンポーネント(315)であって、ターゲットハードウェアプラットフォーム(215)のハードウェア記述言語(HDL)記述に基づいてプログラムされており、且つソフトウェアアプリケーション(210)を実行するようにプログラムされているプログラマブルハードウェアコンポーネント(315)
    を備えており、ソフトウェアアプリケーション(210)が、ターゲットハードウェアプラットフォーム(215)及びHDL記述の少なくとも一方により実行されることについて認証されている、装置。
  7. 前記プログラマブルハードウェアコンポーネント(315)がターゲットハードウェアプラットフォームと機能的に等価である、請求項6に記載の装置。
  8. 前記プログラマブルハードウェアコンポーネント(315)が、VM(205)を用いてソフトウェアアプリケーション(210)を実行するようにプログラムされている、請求項6に記載の装置。
  9. 前記プログラマブルハードウェアコンポーネント(315)がターゲットハードウェアプラットフォームのHDL記述に基づいてプログラムされており、ソフトウェアアプリケーション(210)は、前記HDL記述によって実行されることについて認証されており、且つこの認証が前記プログラマブルハードウェアコンポーネント(315)によるソフトウェアアプリケーション(210)の実行に適用可能である、請求項6に記載の装置。
  10. 前記プログラマブルハードウェアコンポーネント(315)がHDL記述に基づいてプログラムされており、ソフトウェアアプリケーション(210)は、前記HDL記述によって実行されることについて認証されており、且つこの認証が前記プログラマブルハードウェアコンポーネント(315)によるソフトウェアアプリケーション(210)の実行に適用可能である、請求項6に記載の装置。
JP2012136938A 2011-06-28 2012-06-18 ハードウェア抽象化を用いたソフトウェアアプリケーション実行の方法と装置 Active JP5976409B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/170,601 2011-06-28
US13/170,601 US8966478B2 (en) 2011-06-28 2011-06-28 Methods and systems for executing software applications using hardware abstraction

Publications (3)

Publication Number Publication Date
JP2013012196A true JP2013012196A (ja) 2013-01-17
JP2013012196A5 JP2013012196A5 (ja) 2015-08-06
JP5976409B2 JP5976409B2 (ja) 2016-08-23

Family

ID=46603561

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012136938A Active JP5976409B2 (ja) 2011-06-28 2012-06-18 ハードウェア抽象化を用いたソフトウェアアプリケーション実行の方法と装置

Country Status (6)

Country Link
US (1) US8966478B2 (ja)
EP (1) EP2541403B1 (ja)
JP (1) JP5976409B2 (ja)
CN (1) CN102915236B (ja)
AU (1) AU2012203277B2 (ja)
CA (1) CA2780567C (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017228191A (ja) * 2016-06-24 2017-12-28 コニカミノルタ株式会社 画像処理装置、デバッグ支援方法およびデバッグ支援プログラム
JP2020071870A (ja) * 2018-10-31 2020-05-07 ザ・ボーイング・カンパニーThe Boeing Company ハードウェア抽象化ソフトウェアレイヤを使用するシステムのための汎用仮想化プラットフォーム

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9372770B2 (en) * 2012-06-04 2016-06-21 Karthick Gururaj Hardware platform validation
US8762916B1 (en) * 2013-02-25 2014-06-24 Xilinx, Inc. Automatic generation of a data transfer network
WO2014189529A1 (en) * 2013-05-24 2014-11-27 Empire Technology Development, Llc Datacenter application packages with hardware accelerators
US9075624B2 (en) 2013-06-24 2015-07-07 Xilinx, Inc. Compilation of system designs
US9323576B2 (en) 2014-02-04 2016-04-26 The Boeing Company Removal of idle time in virtual machine operation
US20150295793A1 (en) * 2014-04-10 2015-10-15 International Business Machines Corporation High-performance computing evaluation
US10108445B2 (en) 2014-09-22 2018-10-23 The Boeing Company Parallelization in virtual machine operation
US10210323B2 (en) 2016-05-06 2019-02-19 The Boeing Company Information assurance system for secure program execution
US20190303344A1 (en) * 2016-12-23 2019-10-03 Intel Corporation Virtual channels for hardware acceleration
CN110399204A (zh) * 2019-07-26 2019-11-01 苏州浪潮智能科技有限公司 一种kvm的内存配置方法、装置、设备及可读存储介质
EP3961389A1 (en) * 2020-08-26 2022-03-02 The Boeing Company Virtual machine for developing and testing target code for hardware designs
JP7454518B2 (ja) 2021-02-16 2024-03-22 株式会社リケン ノイズ対策用環状磁性体及びノイズ対策用部材

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004535615A (ja) * 2001-03-08 2004-11-25 インターナショナル・ビジネス・マシーンズ・コーポレーション 区分処理環境における共有i/o
US20090083734A1 (en) * 2007-09-26 2009-03-26 Hotra Jonathan N Methods and systems for preserving certified software through virtualization
JP2010503115A (ja) * 2006-09-22 2010-01-28 インテル コーポレイション 仮想マシン環境におけるゲスト間での情報の共有
JP2011070663A (ja) * 2009-09-22 2011-04-07 Internatl Business Mach Corp <Ibm> コンピュータ・システムにおける入れ子式仮想化の性能改善

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0731945B1 (en) 1993-12-01 2000-05-17 Marathon Technologies Corporation Fault resilient/fault tolerant computing
US6253224B1 (en) 1998-03-24 2001-06-26 International Business Machines Corporation Method and system for providing a hardware machine function in a protected virtual machine
US6178391B1 (en) 1998-04-15 2001-01-23 Rockwell Collins, Inc. Method for partitioning an integrated ground air traffic management communications system
US6496847B1 (en) * 1998-05-15 2002-12-17 Vmware, Inc. System and method for virtualizing computer systems
US6397242B1 (en) * 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
US6332215B1 (en) * 1998-12-08 2001-12-18 Nazomi Communications, Inc. Java virtual machine hardware for RISC and CISC processors
US6253135B1 (en) 2000-02-10 2001-06-26 International Business Machines Corporation Power window regulator for automobiles
US6895501B1 (en) 2000-03-13 2005-05-17 Wrq, Inc. Method and apparatus for distributing, interpreting, and storing heterogeneous certificates in a homogenous public key infrastructure
US6658591B1 (en) 2000-06-08 2003-12-02 International Business Machines Corporation Recovery from data fetch errors in hypervisor code
US6877158B1 (en) 2000-06-08 2005-04-05 International Business Machines Corporation Logical partitioning via hypervisor mediated address translation
US7003771B1 (en) 2000-06-08 2006-02-21 International Business Machines Corporation Logically partitioned processing system having hypervisor for creating a new translation table in response to OS request to directly access the non-assignable resource
US6629162B1 (en) 2000-06-08 2003-09-30 International Business Machines Corporation System, method, and product in a logically partitioned system for prohibiting I/O adapters from accessing memory assigned to other partitions during DMA
US6820207B2 (en) 2001-03-01 2004-11-16 International Business Machines Corporation Method for rebooting only a specific logical partition in a data processing system as per a request for reboot
US6876864B1 (en) 2001-03-15 2005-04-05 Vanu, Inc. Software-defined wireless communication device
US7272831B2 (en) 2001-03-30 2007-09-18 Intel Corporation Method and apparatus for constructing host processor soft devices independent of the host processor operating system
JP2002351854A (ja) 2001-05-30 2002-12-06 Omron Corp プログラム実行装置および携帯型情報処理装置
US6792514B2 (en) 2001-06-14 2004-09-14 International Business Machines Corporation Method, system and computer program product to stress and test logical partition isolation features
US7076416B2 (en) * 2001-08-20 2006-07-11 Sun Microsystems, Inc. Method and apparatus for evaluating logic states of design nodes for cycle-based simulation
US6883116B2 (en) 2001-09-27 2005-04-19 International Business Machines Corporation Method and apparatus for verifying hardware implementation of a processor architecture in a logically partitioned data processing system
US6925466B2 (en) 2002-03-22 2005-08-02 Sun Microsystems, Inc. Asynchronous protocol framework
US6928344B2 (en) 2002-03-25 2005-08-09 Sun Microsystems, Inc. Vehicle mode manager
US7178049B2 (en) 2002-04-24 2007-02-13 Medius, Inc. Method for multi-tasking multiple Java virtual machines in a secure environment
US7174545B2 (en) 2003-04-08 2007-02-06 The Boeing Company Apparatus and method for producing display application software for embedded systems
US7175136B2 (en) 2003-04-16 2007-02-13 The Boeing Company Method and apparatus for detecting conditions conducive to ice formation
US7130949B2 (en) 2003-05-12 2006-10-31 International Business Machines Corporation Managing input/output interruptions in non-dedicated interruption hardware environments
US20050086587A1 (en) * 2003-05-14 2005-04-21 Balz Christopher M. System and method for presenting computerized interactive forms to respondents using a client-server-systems technology based on web standards
US20070038867A1 (en) * 2003-06-02 2007-02-15 Verbauwhede Ingrid M System for biometric signal processing with hardware and software acceleration
US6851649B1 (en) 2003-08-14 2005-02-08 The Boeing Company Methods and systems for controlling wheel brakes on aircraft and other vehicles
WO2005036367A2 (en) 2003-10-08 2005-04-21 Unisys Corporation Virtual data center that allocates and manages system resources across multiple nodes
US9280473B2 (en) * 2004-12-02 2016-03-08 Intel Corporation Method and apparatus for accessing physical memory from a CPU or processing element in a high performance manner
US7921425B2 (en) 2005-03-14 2011-04-05 Cisco Technology, Inc. Techniques for allocating computing resources to applications in an embedded system
US7607129B2 (en) 2005-04-07 2009-10-20 International Business Machines Corporation Method and apparatus for using virtual machine technology for managing parallel communicating applications
US7561531B2 (en) * 2005-04-19 2009-07-14 Intel Corporation Apparatus and method having a virtual bridge to route data frames
US7562349B2 (en) * 2005-04-25 2009-07-14 Sap Ag Version adaptation interface for integration of different virtual machines
US9785485B2 (en) * 2005-07-27 2017-10-10 Intel Corporation Virtualization event processing in a layered virtualization architecture
US7272681B2 (en) 2005-08-05 2007-09-18 Raytheon Company System having parallel data processors which generate redundant effector date to detect errors
US8327353B2 (en) * 2005-08-30 2012-12-04 Microsoft Corporation Hierarchical virtualization with a multi-level virtualization mechanism
US8230153B2 (en) 2006-01-20 2012-07-24 Broadcom Corporation Method and system for HBA assisted storage virtualization
US8249853B2 (en) 2006-03-31 2012-08-21 Intel Corporation Exposing device features in partitioned environment
US7958506B2 (en) 2006-06-22 2011-06-07 Intel Corporation Time sliced interrupt processing on virtualized platform
US7346909B1 (en) 2006-08-28 2008-03-18 Intel Corporation Network-like communication and stack synchronization for different virtual machines on the same physical device
JP4847272B2 (ja) 2006-10-18 2011-12-28 株式会社日立製作所 論理区画ごとに電源を管理する計算機システム、ストレージ装置及びそれらの制御方法
JP4249779B2 (ja) 2006-12-25 2009-04-08 株式会社東芝 デバイス制御装置
JP5100133B2 (ja) 2007-01-19 2012-12-19 株式会社東芝 情報処理装置
US8234624B2 (en) * 2007-01-25 2012-07-31 International Business Machines Corporation System and method for developing embedded software in-situ
US8554981B2 (en) 2007-02-02 2013-10-08 Vmware, Inc. High availability virtual machine cluster
US20080196043A1 (en) 2007-02-08 2008-08-14 David Feinleib System and method for host and virtual machine administration
US7813912B1 (en) * 2007-02-14 2010-10-12 Xilinx, Inc. Profiling a hardware system generated by compiling a high level language onto a programmable logic device
US7739554B2 (en) 2007-02-28 2010-06-15 Red Hat, Inc. Method and system for automatic resolution and dispatching subscription service
US8407696B2 (en) 2007-06-04 2013-03-26 International Business Machines Corporation Method for delivering, testing, and applying software patches or other changes to a conventionally installed application in virtual application containers
US9098698B2 (en) * 2008-09-12 2015-08-04 George Mason Research Foundation, Inc. Methods and apparatus for application isolation
US8054832B1 (en) * 2008-12-30 2011-11-08 Juniper Networks, Inc. Methods and apparatus for routing between virtual resources based on a routing location policy
US8484639B2 (en) * 2011-04-05 2013-07-09 International Business Machines Corporation Fine-grained cloud management control using nested virtualization

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004535615A (ja) * 2001-03-08 2004-11-25 インターナショナル・ビジネス・マシーンズ・コーポレーション 区分処理環境における共有i/o
JP2010503115A (ja) * 2006-09-22 2010-01-28 インテル コーポレイション 仮想マシン環境におけるゲスト間での情報の共有
US20090083734A1 (en) * 2007-09-26 2009-03-26 Hotra Jonathan N Methods and systems for preserving certified software through virtualization
JP2011070663A (ja) * 2009-09-22 2011-04-07 Internatl Business Mach Corp <Ibm> コンピュータ・システムにおける入れ子式仮想化の性能改善

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017228191A (ja) * 2016-06-24 2017-12-28 コニカミノルタ株式会社 画像処理装置、デバッグ支援方法およびデバッグ支援プログラム
US10412251B2 (en) 2016-06-24 2019-09-10 Konica Minolta, Inc. Image processing apparatus for debugging a hardware emulation process
JP2020071870A (ja) * 2018-10-31 2020-05-07 ザ・ボーイング・カンパニーThe Boeing Company ハードウェア抽象化ソフトウェアレイヤを使用するシステムのための汎用仮想化プラットフォーム

Also Published As

Publication number Publication date
JP5976409B2 (ja) 2016-08-23
EP2541403B1 (en) 2020-11-18
EP2541403A1 (en) 2013-01-02
CN102915236A (zh) 2013-02-06
CN102915236B (zh) 2017-07-28
US20130007730A1 (en) 2013-01-03
CA2780567A1 (en) 2012-12-28
AU2012203277B2 (en) 2016-12-01
US8966478B2 (en) 2015-02-24
CA2780567C (en) 2018-05-29
AU2012203277A1 (en) 2013-01-17

Similar Documents

Publication Publication Date Title
JP5976409B2 (ja) ハードウェア抽象化を用いたソフトウェアアプリケーション実行の方法と装置
JP6864749B2 (ja) 仮想マシンインスタンスと顧客プログラマブル論理回路との間の中間ホスト集積回路
CN109154888B (zh) 配备协调器的超融合系统
KR101031409B1 (ko) 동적으로 가상 머신을 생성하기 위한 방법, 제조물품 및 시스템
RU2412468C2 (ru) Системы и способы многоуровневой обработки перехватов в виртуальной машинной среде
JP4610307B2 (ja) 実際のハードウェアベースのデバイスおよび理想化されたハードウェアベースのデバイスにおけるバイモーダルデバイス仮想化のためのシステムおよび方法
KR20060047766A (ko) 가상 기계 환경에서 에뮬레이트된 장치들을 개발하기 위한시스템 및 방법
JP5446157B2 (ja) 情報処理装置、情報処理方法および情報処理プログラム
JPWO2017034008A1 (ja) ハイパーバイザーを有するシステム
US8601250B2 (en) Control over loading of device drivers for an individual instance of a PCI device
CN102207896A (zh) 虚拟机崩溃文件生成技术
US10445126B2 (en) Preloading enhanced application startup
US11327738B2 (en) Software and firmware updates in a combined single pane of glass interface
WO2014174580A1 (ja) 情報処理装置、方法、及びプログラム
CN113826072B (zh) 系统管理模式中的代码更新
US10534732B2 (en) Exposing memory-mapped IO devices to drivers by emulating PCI bus and PCI device configuration space
US9501591B2 (en) Dynamically modifiable component model
JP7410268B2 (ja) コンテナ・ベースの仮想化システムに関する方法
JP5819350B2 (ja) 計算機システム及び起動方法
US20180181420A1 (en) Device-agnostic driver for virtual machines
Rothman et al. Harnessing the UEFI Shell: Moving the platform beyond DOS
US9652260B2 (en) Scriptable hierarchical emulation engine
US20210311766A1 (en) Validation and pre-check of combined software/firmware updates
US20170364365A1 (en) Multiprocessor initialization via firmware configuration
US11055115B1 (en) Virtual machine conversion in distributed system of remote desktops

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150617

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150617

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160530

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160621

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160720

R150 Certificate of patent or registration of utility model

Ref document number: 5976409

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250