説明

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

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

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

【特許請求の範囲】
【請求項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に記載の装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2013−12196(P2013−12196A)
【公開日】平成25年1月17日(2013.1.17)
【国際特許分類】
【外国語出願】
【出願番号】特願2012−136938(P2012−136938)
【出願日】平成24年6月18日(2012.6.18)
【出願人】(500520743)ザ・ボーイング・カンパニー (773)
【氏名又は名称原語表記】The Boeing Company
【Fターム(参考)】