【手続補正書】
【提出日】平成26年11月20日(2014.11.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
オリジナル仮想マシンから１つまたは複数のクローン仮想マシンに分岐させて分岐する状態を考察するためのコンピュータに実装される方法であって、
前記オリジナル仮想マシン上の実行用のアプリケーションコードを受け取るステップであって、前記アプリケーションコードは、前記仮想マシンの２つまたはそれ以上の可能な状態をもたらす少なくとも１つの分岐を含む、ステップと、
前記受け取ったアプリケーションコードを含む前記オリジナル仮想マシンを実行するステップと、
前記アプリケーションが複数の可能な状態に分岐するであろう場所を示す情報を、前記アプリケーションコードから得ることにより、前記仮想マシンの２つまたはそれ以上の可能な状態をもたらす前記オリジナル仮想マシン上で稼働する前記アプリケーションコード内の分岐を識別するステップと、
１つまたは複数のクローン仮想マシンを作成するステップであって、前記クローン仮想マシンは、前記オリジナル仮想マシンの現在の状態を複製し、次に、それぞれが前記分岐の１つの経路を処理して、作成された当該クローン仮想マシンにおける後続の状態を探索する、ステップと、
前記識別された分岐の異なる経路を実行するために、各クローン仮想マシンをセットアップするステップと、
前記識別された分岐の少なくとも２つの経路を並列して探索するために、前記オリジナル仮想マシンおよびクローン化仮想マシンを実行するステップと、
前記クローン化仮想マシンから少なくとも１つの実行結果を受け取るステップを含み、
前述のステップが少なくとも１つのプロセッサにより実行される、方法。 
【請求項２】
前記アプリケーションコードを受け取るステップが、前記マシンの前記状態を変化させ、かつ、ランタイムで評価される条件に基づく分岐を含む、アプリケーションコードを受け取るステップを含む、請求項１に記載の方法。
【請求項３】
前記オリジナル仮想マシンを実行するステップが、同じ物理リソースを共有する複数の仮想マシンの実行を指示するハイパーバイザを含む、請求項１に記載の方法。
【請求項４】
前記オリジナル仮想マシンを実行するステップが、所定の閾値を超えて前記仮想マシンを変化させる可能性がある分岐が識別されるまで前記オリジナル仮想マシンを実行するステップと、前記クローン化仮想マシンが、前記オリジナル仮想マシンインスタンスの外部の任意のリソースに影響を与えることになるかどうかを判定するステップと、を含む、請求項１に記載の方法。
【請求項５】
前記分岐を識別するステップが、コード解析ツールを使用して前記分岐を自動的に識別するステップを含む、請求項１に記載の方法。
【請求項６】
前記分岐を識別するステップが、２つまたはそれ以上の分岐経路を識別するアプリケーションプログラミングインターフェース（ＡＰＩ）の起動を受け取るステップであって、前記起動によりシステムが前記仮想マシンをクローン化し、かつ、前記経路を並列して実行することが可能である、ステップを含む、請求項１に記載の方法。
【請求項７】
クローン仮想マシンを作成するステップが、仮想ハードウェアを識別する１つまたは複数の仮想マシン仕様をセットアップするステップと、前記オリジナル仮想マシンのメモリの状態をコピーするステップと、前記オリジナル仮想マシンにアタッチされた１つまたは複数のディスクをコピーするステップとを含む、請求項１に記載の方法。
【請求項８】
前記クローン仮想マシンを作成するステップが、前記オリジナル仮想マシンの実行を中断するステップと、前記仮想マシンに関連する１つまたは複数の物理マシンファイルをコピーするステップとを含む、請求項１に記載の方法。
【請求項９】
各クローンをセットアップするステップが、各クローンがどの経路を探索する責任があるのかについての情報を用いて前記クローンをセットアップするステップと、次に、前記クローンおよびオリジナル仮想マシンそれぞれにその割り当てられた経路を探索させるために、クローンおよびオリジナル仮想マシンそれぞれを実行するステップとを含む、請求項１に記載の方法。
【請求項１０】
各クローンをセットアップするステップが、前記クローン仮想マシンが実行するであろうソフトウェアコードを識別するステップと、前記クローン仮想マシンの命令ポインタ及びレジスタの状態を、特定の場所に設定するステップとを含む、請求項１に記載の方法。
【請求項１１】
少なくとも１つの実行結果を受け取るステップが、前記クローン化仮想マシンが到達した状態の標示を受け取るステップを含む、請求項１に記載の方法。
【請求項１２】
仮想マシンの分岐および並列実行のためのコンピュータシステムであって、
以下のコンポーネント内で具現化されるソフトウェア命令を実行するべく構成されるプロセッサおよびメモリと、
２つまたはそれ以上の仮想マシンに物理コンピュータ装置のリソースを割り当て、かつ、仮想マシンをクローン化するためのサポートを提供するハイパーバイザコンポーネントと、
物理マシン上でのリソース使用と、オリジナル仮想マシンおよびクローン化仮想マシンを含む２つまたはそれ以上の仮想マシン間のリソース分離と、のスケジューリングを提供するスケジューリングコンポーネントと、
２つまたはそれ以上の仮想マシン間に１つまたは複数の通信のチャネルを提供するＶＭ通信コンポーネントと、
１つまたは複数のクローン仮想マシンにおいて後続の状態を評価するために、ソフトウェアコードを実行するオリジナル仮想マシンを分岐させるための候補である、現在の状態と、前記ソフトウェアコードの１つまたは複数の前記後続の状態を識別する、分岐識別コンポーネントと、
状態情報を前記オリジナル仮想マシンからコピーして、同様の状態を有する１つまたは複数のクローン仮想マシンを作成する、状態クローニングコンポーネントと、
各作成された前記クローン仮想マシンを開始させ、かつ、各クローンが追跡する実行の分岐を識別することにより、前記分岐を実行するＶＭ分岐コンポーネントと、
各クローン仮想マシンおよび前記オリジナル仮想マシンの動作を調整して、不要な分岐の廃棄または分岐結果の統合を可能にするクローン調整コンポーネントと、
各仮想マシンが生成する結果を処理し、その結果を前記クローン調整コンポーネントに提供する結果処理コンポーネントと
を備える、システム。
【請求項１３】
前記ＶＭ通信コンポーネントが、前記オリジナル仮想マシンから調整情報を受け取り、調整命令を１つまたは複数のクローン仮想マシンに提供する、請求項１２に記載のシステム。
【請求項１４】
前記分岐識別コンポーネントは、前記ソフトウェアコードを解析することにより前記ハイパーバイザを介して潜在的な分岐を自動的に識別する、請求項１２に記載のシステム。
【請求項１５】
状態クローニングコンポーネントは、各クローンが追跡するであろう分岐する状態を探索に使用される前記オリジナル仮想マシンの前記状態情報のサブセットを選択し、前記選択したサブセットを複製する、請求項１２に記載のシステム。
【請求項１６】
前記ＶＭ分岐コンポーネントは、各クローン仮想マシンに、自身が考察する分岐を知らせ、次に、各仮想マシンに前記分岐状態の探索を実行させる、請求項１２に記載のシステム。
【請求項１７】
前記クローン調整コンポーネントは、各クローン仮想マシンの結果を考察し、前記状態の探索が完了した後に、前記オリジナル仮想マシンに実行を戻す、請求項１２に記載のシステム。
【請求項１８】
前記結果処理コンポーネントは、状態変化情報を前記オリジナル仮想マシンに複製するために、各クローン仮想マシンの前記状態変化情報をキャプチャする、請求項１２に記載のシステム。