(57)【要約】【課題】  コンピュータ・システム上で実行される仮想化環境に含まれるパーティション・グループから選択された被選択パーティションに対応する消費時間値を取り出す手法を提供する。【解決手段】  仮想化環境はハイパーバイザによって提供される。消費時間値は、被選択パーティションが割り込みの処理に費やした時間の量に対応する。いくつかの仮想ＣＰＵが被選択パーティションに割り当てられている。消費時間値（たとえば、被選択パーティションが割り込みの処理に費やす時間のパーセンテージ）は、１つまたは複数の割り込みしきい値と比較される。この比較によって、そのパーティションが割り込みの処理に費やしている時間がしきい値を超えることが明らかになった場合、被選択パーティションに割り当てられる仮想ＣＰＵの数が増加される。【選択図】  図１
2011521384.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ・システム上で実行される仮想化環境に含まれる複数のパーティションから選択された被選択パーティションに対応する消費時間値を取り出すステップであって、前記消費時間値が、前記被選択パーティションが割り込みの処理に費やした時間の量に対応し、いくつかの仮想ＣＰＵが前記被選択パーティションに割り当てられている、前記取り出すステップと、
前記消費時間値を１つまたは複数の割り込みしきい値と比較するステップと、
前記比較によって、前記消費時間値が前記割り込みしきい値のうちの１つより大きいことが明らかになったことに応答して、前記被選択パーティションに割り当てられる仮想ＣＰＵの数を増加するステップと、
を含む、コンピュータによって実行される方法。
【請求項２】
前記被選択パーティションの１つまたは複数のリソース使用状況を第１の時間間隔で定期的にチェックするステップであって、前記リソース使用状況に基づいて前記被選択パーティションに割り当てられる仮想ＣＰＵの前記数を変更するためにフォールディング・アルゴリズムを実行することを含む、前記定期的にチェックするステップと、
前記取り出すステップと、前記比較するステップと、前記増加するステップとを第２の時間間隔で定期的に実行するステップであって、前記第２の時間間隔が前記第１の時間間隔より小さい、前記定期的に実行するステップと、
をさらに含む、請求項１記載の方法。
【請求項３】
前記リソース使用状況の１つがＣＰＵ使用状況値である、請求項２記載の方法。
【請求項４】
前記増加するステップの前に、前記被選択パーティションに対応する仮想ＣＰＵ資格値および前記被選択パーティションに割り振られた仮想ＣＰＵの現行数を取り出すステップであって、仮想ＣＰＵの前記現行数が前記仮想ＣＰＵ資格値より小さいことに応答してのみ前記増加するステップが実行される、前記取り出すステップ
をさらに含む、請求項１記載の方法。
【請求項５】
前記消費時間値の前記取り出しの前に、セットアップ・プロセス中に前記被選択パーティションに前記仮想ＣＰＵ資格値を割り当てるステップと、
前記仮想ＣＰＵ資格値を不揮発性記憶領域に保管するステップであって、前記仮想ＣＰＵ資格値の前記取り出しが前記不揮発性記憶領域から前記仮想ＣＰＵ資格値を取り出す、前記保管するステップと、
をさらに含む、請求項４記載の方法。
【請求項６】
前記消費時間値をパーセンテージ値に変換するステップであって、前記パーセンテージ値が割り込みを処理する際に前記被選択パーティションによって費やされる時間のパーセンテージを表し、前記割り込みしきい値が１つまたは複数のしきいパーセンテージを含み、前記比較するステップが前記パーセンテージ値を前記しきいパーセンテージと比較する、前記変換するステップ
をさらに含む、請求項１記載の方法。
【請求項７】
前記消費時間値の前記取り出しの前に、前記１つまたは複数の割り込みしきいパーセンテージをユーザから受け取るステップと、
前記受け取った割り込みしきいパーセンテージを不揮発性記憶領域に保管するステップであって、前記消費時間値と前記割り込みしきい値との前記比較の前に、前記保管された割り込みしきいパーセンテージが前記不揮発性記憶領域から取り出される、前記保管するステップと、
をさらに含む、請求項１記載の方法。
【請求項８】
１つまたは複数のプロセッサ（ＣＰＵ）と、
前記ＣＰＵのうちの少なくとも１つによってアクセス可能なメモリと、
前記ＣＰＵのうちの少なくとも１つによってアクセス可能な不揮発性記憶装置と、
仮想化環境を提供するために、前記メモリにロードされ、前記ＣＰＵのうちの少なくとも１つによって実行されるハイパーバイザ・アプリケーションであって、複数のパーティションが前記仮想化環境に含まれ、オペレーティング・システムが前記パーティションのうちの１つまたは複数で実行される、ハイパーバイザ・アプリケーションと、
前記不揮発性記憶装置上に保管された１つまたは複数のデータ・ストアであって、前記１つまたは複数のパーティションに対応する１つまたは複数の割り込みしきい値と、１つまたは複数の仮想ＣＰＵ資格値とを保管する、前記１つまたは複数のデータ・ストアと、
前記仮想化環境に含まれる前記複数のパーティションから選択された被選択パーティションに対応する消費時間値を取り出すステップであって、前記消費時間値が、前記被選択パーティションが割り込みの処理に費やした時間の量に対応し、いくつかの仮想ＣＰＵが前記被選択パーティションに割り当てられている、前記取り出すステップと、
前記データ・ストアに保管された前記割り込みしきい値を取り出すステップと、
前記消費時間値を前記取り出された割り込みしきい値と比較するステップと、
前記比較によって、前記消費時間値が前記割り込みしきい値のうちの１つより大きいことが明らかになったことに応答して、前記被選択パーティションに割り当てられる仮想ＣＰＵの数を増加するステップと、
からなるアクションを実行するために、前記メモリにロードされ、前記オペレーティング・システムのうちの選択された１つによって実行される１組の命令と、
を含む、情報処理システム。
【請求項９】
前記選択されたオペレーティング・システムによって実行される前記１組の命令が、
前記被選択パーティションの１つまたは複数のリソース使用状況を第１の時間間隔で定期的にチェックするステップであって、前記リソース使用状況の１つがＣＰＵ使用状況値であり、前記リソース使用状況に基づいて前記被選択パーティションに割り当てられる仮想ＣＰＵの前記数を変更するためにフォールディング・アルゴリズムを実行することを含む、前記定期的にチェックするステップと、
前記取り出すステップと、前記比較するステップと、前記増加するステップとを第２の時間間隔で定期的に実行するステップであって、前記第２の時間間隔が前記第１の時間間隔より小さい、前記定期的に実行するステップと、
を含む追加のアクションを実行する、請求項８記載の情報処理システム。
【請求項１０】
前記選択されたオペレーティング・システムによって実行される前記１組の命令が、
前記増加するステップの前に、前記被選択パーティションに対応する仮想ＣＰＵ資格値および前記被選択パーティションに割り振られた仮想ＣＰＵの現行数を取り出すステップであって、仮想ＣＰＵの前記現行数が前記仮想ＣＰＵ資格値より小さいことに応答してのみ前記増加するステップが実行される、前記取り出すステップ
を含む追加のアクションを実行する、請求項８記載の情報処理システム。
【請求項１１】
前記選択されたオペレーティング・システムによって実行される前記１組の命令が、
前記消費時間値の前記取り出しの前に、セットアップ・プロセス中に前記被選択パーティションに前記仮想ＣＰＵ資格値を割り当てるステップと、
前記仮想ＣＰＵ資格値を不揮発性記憶領域に保管するステップであって、前記仮想ＣＰＵ資格値の前記取り出しが前記不揮発性記憶領域から前記仮想ＣＰＵ資格値を取り出す、前記保管するステップと、
を含む追加のアクションを実行する、請求項１０記載の情報処理システム。
【請求項１２】
前記選択されたオペレーティング・システムによって実行される前記１組の命令が、
前記消費時間値をパーセンテージ値に変換するステップであって、前記パーセンテージ値が割り込みを処理する際に前記被選択パーティションによって費やされる時間のパーセンテージを表し、前記割り込みしきい値が１つまたは複数のしきいパーセンテージを含み、前記比較するステップが前記パーセンテージ値を前記しきいパーセンテージと比較する、前記変換するステップ
を含む追加のアクションを実行する、請求項８記載の情報処理システム。
【請求項１３】
前記選択されたオペレーティング・システムによって実行される前記１組の命令が、
前記消費時間値の前記取り出しの前に、前記１つまたは複数の割り込みしきいパーセンテージをユーザから受け取るステップと、
前記受け取った割り込みしきいパーセンテージを前記不揮発性記憶装置上の前記データ・ストアの１つに保管するステップと、
を含む追加のアクションを実行する、請求項８記載の情報処理システム。
【請求項１４】
コンピュータ可読媒体に保管されたコンピュータ・プログラムであって、情報処理システムによって実行されたときに、
コンピュータ・システム上で実行される仮想化環境に含まれる複数のパーティションから選択された被選択パーティションに対応する消費時間値を取り出すステップであって、前記消費時間値が、前記被選択パーティションが割り込みの処理に費やした時間の量に対応し、いくつかの仮想ＣＰＵが前記被選択パーティションに割り当てられている、前記取り出すステップと、
前記消費時間値を１つまたは複数の割り込みしきい値と比較するステップと、
前記比較によって、前記消費時間値が前記割り込みしきい値のうちの１つより大きいことが明らかになったことに応答して、前記被選択パーティションに割り当てられる仮想ＣＰＵの数を増加するステップと、
を含むアクションを前記情報処理システムに実行させる機能記述材料を含む、コンピュータ・プログラム。
【請求項１５】
前記被選択パーティションの１つまたは複数のリソース使用状況を第１の時間間隔で定期的にチェックするステップであって、前記リソース使用状況に基づいて前記被選択パーティションに割り当てられる仮想ＣＰＵの前記数を変更するためにフォールディング・アルゴリズムを実行することを含む、前記定期的にチェックするステップと、
前記取り出すステップと、前記比較するステップと、前記増加するステップとを第２の時間間隔で定期的に実行するステップであって、前記第２の時間間隔が前記第１の時間間隔より小さい、前記定期的に実行するステップと、
を含む追加のアクションを前記情報処理システムに実行させる機能記述材料をさらに含む、請求項１４記載のコンピュータ・プログラム。
【請求項１６】
前記リソース使用状況の１つがＣＰＵ使用状況値である、請求項１５記載のコンピュータ・プログラム。
【請求項１７】
前記増加するステップの前に、前記被選択パーティションに対応する仮想ＣＰＵ資格値および前記被選択パーティションに割り振られた仮想ＣＰＵの現行数を取り出すステップであって、仮想ＣＰＵの前記現行数が前記仮想ＣＰＵ資格値より小さいことに応答してのみ前記増加するステップが実行される、前記取り出すステップ
を含む追加のアクションを前記情報処理システムに実行させる機能記述材料をさらに含む、請求項１４記載のコンピュータ・プログラム。
【請求項１８】
前記消費時間値の前記取り出しの前に、セットアップ・プロセス中に前記被選択パーティションに前記仮想ＣＰＵ資格値を割り当てるステップと、
前記仮想ＣＰＵ資格値を不揮発性記憶領域に保管するステップであって、前記仮想ＣＰＵ資格値の前記取り出しが前記不揮発性記憶領域から前記仮想ＣＰＵ資格値を取り出す、前記保管するステップと、
を含む追加のアクションを前記情報処理システムに実行させる機能記述材料をさらに含む、請求項１７記載のコンピュータ・プログラム。
【請求項１９】
前記消費時間値をパーセンテージ値に変換するステップであって、前記パーセンテージ値が割り込みを処理する際に前記被選択パーティションによって費やされる時間のパーセンテージを表し、前記割り込みしきい値が１つまたは複数のしきいパーセンテージを含み、前記比較するステップが前記パーセンテージ値を前記しきいパーセンテージと比較する、前記変換するステップ
を含む追加のアクションを前記情報処理システムに実行させる機能記述材料をさらに含む、請求項１４記載のコンピュータ・プログラム。
【請求項２０】
前記消費時間値の前記取り出しの前に、前記１つまたは複数の割り込みしきいパーセンテージをユーザから受け取るステップと、
前記受け取った割り込みしきいパーセンテージを不揮発性記憶領域に保管するステップであって、前記消費時間値と前記割り込みしきい値との前記比較の前に、前記保管された割り込みしきいパーセンテージが前記不揮発性記憶領域から取り出される、前記保管するステップと、
を含む追加のアクションを前記情報処理システムに実行させる機能記述材料をさらに含む、請求項１４記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は仮想化環境に関する。詳細には、本発明は、仮想化環境における割り込みの処理を最適化するための手法に関する。
【背景技術】
【０００２】
仮想入出力（ＶＩＯ）サーバ・パーティションは、ロジカル・パーティション間で物理装置を共用するためのメカニズムを提供する。これは、特殊サービスを提供するものであり、「一般的な」ロジカル・パーティションと比較すると、固有のコンピューティング要件を有する。ＶＩＯサーバ上での計算は主として外部割り込みによって駆動され、それぞれの割り込みを処理する際の待ち時間を最小限にすることは差し迫った関心事である。ロジカル・パーティションに割り当てられたコンピューティング・リソースの量（処理能力）を増加することによって、サービス時間を短縮することができる。
【０００３】
システム管理者が実際にそのパーティションにより多くの計算能力を割り当てる代わりに、これを実行する他の既存の手段はパーティションの「上限を撤廃する（uncap）」ことである。パーティションの上限を撤廃することにより、そのパーティションの仮想ＣＰＵのそれぞれは潜在的に、完全な物理プロセッサ１つ分までの処理能力を消費することができる。すなわち、１つのパーティションが２つの仮想ＣＰＵを有する場合、上限撤廃モード（uncapped mode）でそのパーティションは物理プロセッサ２つ分までの（しかもそれ以下の）計算能力を消費することができる。それぞれのロジカル・パーティションは「保証（guaranteed）」または「有資格（entitled）」処理能力を要求し、その処理能力はサーバ上の物理プロセッサの総数のうちの（システム管理者が構成した）一部分である。
【０００４】
パーティションの有資格処理能力を満足するのに必要な最小限までロジカル・パーティションの仮想ＣＰＵの数を抑えることには、重大なメリットがある。仮想ＣＰＵの数が少ないと、物理プロセッサ内外で複数の仮想ＣＰＵ（ｖＣＰＵ）をスワップする際のコンテキスト・スイッチ・オーバヘッドが削減される。また、ｖＣＰＵの数が少ないと、ＳＭＰ環境におけるロック競合も少なくなる。ＣＰＵフォールディング（folding）として知られる特徴は、最も少ない数のｖＣＰＵに能力を縮小することにより、このヒューリスティックを実施しようと試みる。ＣＰＵフォールディングは、パーティションが消費する可能性のある使用可能なフリー・サイクルの数を制限することにより、パーティションによって達成可能な最大処理能力を削減するので、ＣＰＵフォールディングの結果、上限撤廃パーティションにおける割り込みサービス待ち時間が増加する可能性がある。たとえば、２つのｖＣＰＵと０．４プロセッサという全割り当て能力を有する上限撤廃パーティションは、ＣＰＵフォールディングがない場合、潜在的に、完全な物理ＣＰＵ２つ分までの処理能力を消費する可能性がある。ＣＰＵフォールディングの結果、０．４の処理能力を有する単一ｖＣＰＵにこのパーティションを縮小する可能性があり、それにより、その最大潜在処理能力を物理ＣＰＵ１つ分に削減することになる。当然のことながら、ＣＰＵフォールディング・メカニズムは、時間の経過につれて使用する仮想プロセッサの数を増加または減少するアルゴリズムを有する。理論的には、これらのアルゴリズムは保守的なものにすることができ、その結果、仮想プロセッサの数は不必要に揺れることはない。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
伝統的なＣＰＵフォールディング・メカニズムの課題は、割り込み処理に必要なものより長い周期性を有するアルゴリズムを使用することである。この２つの要件（割り込みサービス待ち時間の短縮およびｖＣＰＵの数の削減）は、特に割り込みが激しい環境では、互いに対立するものである。
【課題を解決するための手段】
【０００６】
コンピュータ・システム上で実行される仮想化環境に含まれるパーティション・グループから選択された被選択パーティション（selected partition）に対応する消費時間値（time spentvalue）を取り出す手法を使用して、前述の課題が解決されることが発見された。仮想化環境はハイパーバイザによって提供される。消費時間値は、被選択パーティションが割り込みの処理に費やした時間の量に対応する。いくつかの仮想ＣＰＵが被選択パーティションに割り当てられている。消費時間値（たとえば、被選択パーティションが割り込みの処理に費やす時間のパーセンテージ）は、１つまたは複数の割り込みしきい値（interrupt threshold value）と比較される。この比較によって、そのパーティションが割り込みの処理に費やしている時間がしきい値を超えることが明らかになった場合、被選択パーティションに割り当てられる仮想ＣＰＵの数が増加される。
【０００７】
上記は概要であり、したがって、必然的に、単純化、一般化、および詳細の省略を含み、その結果として、当業者であれば、その概要が例示的なものに過ぎず、いかなる制限も意図していないことが分かるであろう。特許請求の範囲のみによって定義される本発明のその他の態様、発明的特徴、および利点は、下記の非制限的な詳細な説明で明らかになるであろう。
【０００８】
次に、以下の図面に関連して、例としてのみ、本発明の好ましい諸実施形態について説明する。
【図面の簡単な説明】
【０００９】
【図１】本明細書に記載されている方法が本発明の好ましい一実施形態により実装可能なデータ処理システムのブロック図である。
【図２】ネットワーク化環境で動作する多種多様な情報処理システム上で本明細書に記載されている方法を実行できることを示すために図１に示されている情報処理システム環境の拡張を示す図である。
【図３】本発明の好ましい一実施形態により仮想入出力サーバ（ＶＩＯＳ：Virtual I/O Server）パーティションを含む仮想化環境を使用するコンピュータ・システムの図である。
【図４】本発明の好ましい一実施形態により処理能力および割り込みパーセンテージしきい値（interrupt percentage threshold）を様々な仮想パーティションに割り当てるためにシステム管理者によって実行されるセットアップ処理を示す流れ図である。
【図５】本発明の好ましい一実施形態により仮想パーティションに割り当てられた仮想ＣＰＵ（ｖＣＰＵ）をフォールディング／アンフォールディング（fold/unfold）するためにオペレーティング・システムによって行われるステップを示す流れ図である。
【図６】本発明の好ましい一実施形態によりパーティションが割り込みの処理に費やしている時間の量を分析するためにオペレーティング・システムによって実行されるルーチンによって実行されるステップを示す流れ図である。
【発明を実施するための形態】
【００１０】
本発明の様々な諸実施形態を徹底的に理解するために、以下の説明および図面には特定の具体的な詳細が示されている。しかし、本発明の様々な諸実施形態を不必要に曖昧にするのを回避するために、以下の開示では、コンピューティングおよびソフトウェア技術に関連する場合が多い特定の周知の詳細は示されていない。さらに、関連技術の当業者であれば、以下に記載する詳細の１つまたは複数がなくても本発明のその他の諸実施形態を実施できることを理解するであろう。最後に、以下の開示ではステップおよびシーケンスに関連して様々な方法が記載されているが、記載自体は本発明の諸実施形態の明確な実装例を提供するためのものであり、ステップおよびステップ・シーケンスは必須または必要なものと解釈すべきではない。その代わりに、以下の説明は、本発明の模範的な一実施形態の詳細な記述を提供するためのものであり、制限的であると解釈すべきではない。
【００１１】
以下の詳細な説明は、一般に、上記の概要に従うものであり、必要に応じて本発明の様々な諸態様および諸実施形態の定義についてさらに説明し展開するものである。このために、この詳細な説明では、まず、本発明の諸実施形態に関連するソフトウェアまたはハードウェアあるいはその両方の技法を実装するのに適した図１のコンピューティング環境を規定する。最新のコンピューティング技法を複数の個別デバイス間で実行できることを強調するために、基本的なコンピューティング環境の拡張として、ネットワーク化環境が図２に示されている。
【００１２】
図１は、本明細書に記載されているコンピューティング動作を実行可能なコンピュータ・システムの単純化した一例である情報処理システム１００を示している。情報処理システム１００は、プロセッサ・インターフェース・バス１１２に結合された１つまたは複数のプロセッサ１１０を含む。プロセッサ・インターフェース・バス１１２は、メモリ・コントローラ・ハブ（ＭＣＨ：Memory Controller Hub）とも呼ばれるノースブリッジ１１５にプロセッサ１１０を接続する。ノースブリッジ１１５は、システム・メモリ１２０に接続され、プロセッサ（複数も可）１１０がシステム・メモリにアクセスするための手段を提供する。グラフィックス・コントローラ１２５もノースブリッジ１１５に接続されている。一実施形態では、ノースブリッジ１１５をグラフィックス・コントローラ１２５に接続するためにＰＣＩエクスプレス・バス１１８が使用されている。グラフィックス・コントローラ１２５はコンピュータ・モニターなどのディスプレイ装置１３０に接続されている。ノースブリッジ１１５およびサウスブリッジ１３５はバス１１９を使用して互いに接続されている。一実施形態では、このバスは、ノースブリッジ１１５とサウスブリッジ１３５との間の各方向に高速でデータを転送するダイレクト・メディア・インターフェース（ＤＭＩ：Direct Media Interface）バスである。他の実施形態では、ノースブリッジとサウスブリッジを接続するために周辺装置相互接続（ＰＣＩ：Peripheral Component Interconnect）バスが使用される。サウスブリッジ１３５は、入出力コントローラ・ハブ（ＩＣＨ：I/O Controller Hub）とも呼ばれ、一般にノースブリッジによって提供される機能より低速で動作する機能を実装するチップである。サウスブリッジ１３５は典型的に、様々なコンポーネントを接続するために使用される様々なバスを提供する。これらのバスとしては、ＰＣＩおよびＰＣＩエクスプレス・バス、ＩＳＡバス、システム管理バス（ＳＭＢｕｓまたはＳＭＢ）、ロー・ピン・カウント（ＬＰＣ：Low Pin Count）バスを含むことができる。ＬＰＣバスは、ブートＲＯＭ１９６などの低帯域幅デバイスと「レガシー（legacy）」入出力装置（「スーパー入出力（super I/O）」チップを使用する）を接続するために使用される場合が多い。「レガシー」入出力装置（１９８）としては、シリアル・ポートおよびパラレル・ポート、キーボード、マウス、フレキシブル・ディスク・コントローラを含むことができる。また、ＬＰＣバスは、サウスブリッジ１３５をトラステッド・プラットフォーム・モジュール（ＴＰＭ：Trusted Platform Module）１９５に接続するために使用される。サウスブリッジ１３５に含まれる場合が多いその他のコンポーネントとしては、直接メモリ・アクセス（ＤＭＡ：Direct Memory Access）コントローラ、プログラマブル割り込みコントローラ（ＰＩＣ：Programmable Interrupt Controller）、バス１８４を使用してサウスブリッジ１３５をハード・ディスクなどの不揮発性記憶装置１８５に接続する記憶装置コントローラを含む。
【００１３】
ＥｘｐｒｅｓｓＣａｒｄ１５５は、ホット・プラグ可能なデバイスを情報処理システムに接続するために使用されるスロットである。ＥｘｐｒｅｓｓＣａｒｄ１５５は、ユニバーサル・シリアル・バス（ＵＳＢ：Universal Serial Bus）とＰＣＩエクスプレス・バスの両方を使用してサウスブリッジ１３５に接続されるので、ＰＣＩエクスプレスとＵＳＢの両方の接続をサポートする。サウスブリッジ１３５は、ＵＳＢに接続するデバイスへのＵＳＢ接続を提供するＵＳＢコントローラ１４０を含む。このようなデバイスとしては、ウェブカム（カメラ）１５０、赤外線（ＩＲ）レシーバ１４８、ワイヤレス・パーソナル・エリア・ネットワーク（ＰＡＮ：personal area network）を可能にするＢｌｕｅｔｏｏｔｈデバイス１４６、キーボードおよびトラックパッド１４４、マウス、取り外し可能不揮発性記憶装置１４５、モデム、ネットワーク・カード、ＩＳＤＮコネクタ、ファックス、プリンタ、ＵＳＢハブ、その他の多くのタイプのＵＳＢ接続デバイスなどのその他の種々雑多なＵＳＢ接続デバイス１４２を含む。取り外し可能不揮発性記憶装置１４５はＵＳＢ接続デバイスとして示されているが、取り外し可能記憶装置１４５はＦｉｒｅｗｉｒｅインターフェースなどの異なるインターフェースを使用して接続することもできる。
【００１４】
ワイヤレス・ローカル・エリア・ネットワーク（ＬＡＮ）デバイス１７５は、ＰＣＩまたはＰＣＩエクスプレス・バス１７２を介してサウスブリッジ１３５に接続されている。ＬＡＮデバイス１７５は典型的に、情報処理システム１００と他のコンピュータ・システムまたはデバイスとの間でワイヤレス通信するために同じプロトコルを使用する無線変調技法のＩＥＥＥ８０２．１１規格の１つを実装する。光学記憶装置１０９は、シリアルＡＴＡ（ＳＡＴＡ）バス１８８を使用してサウスブリッジ１３５に接続されている。シリアルＡＴＡアダプタおよびデバイスは高速シリアル・リンクにより通信する。また、シリアルＡＴＡバスは、サウスブリッジ１３５をハード・ディスなどの他の形式の記憶装置に接続するためにも使用される。サウンド・カードなどのオーディオ回路１６０は、バス１５８を介してサウスブリッジ１３５に接続されている。オーディオ回路１６０は、オーディオ入力および光学デジタル・オーディオ入力ポート１６２、光学デジタル出力およびヘッドホン・ジャック１６４、内部スピーカ１６６、ならびに内部マイクロホン１６８などの機能を提供するために使用される。イーサネット・コントローラ１７０は、ＰＣＩまたはＰＣＩエクスプレス・バスなどのバスを使用してサウスブリッジ１３５に接続されている。イーサネット・コントローラ１７０は、ローカル・エリア・ネットワーク（ＬＡＮ）、インターネット、ならびにその他の公衆および私設コンピュータ・ネットワークなどのコンピュータ・ネットワークと情報処理システム１００を接続するために使用される。
【００１５】
図１は１つの情報処理システムを示しているが、情報処理システムは多くの形を取ることができる。たとえば、情報処理システムは、デスクトップ、サーバ、ポータブル、ラップトップ、ノートブック、あるいはその他のフォーム・ファクタ・コンピュータまたはデータ処理システムの形を取ることができる。加えて、情報処理システムは、携帯情報端末（ＰＤＡ）、ゲーム装置、ＡＴＭマシン、携帯電話装置、通信装置、またはプロセッサおよびメモリを含むその他の装置などのその他のフォーム・ファクタを取ることができる。
【００１６】
セキュリティ機能を提供するために図１に示され、本明細書に記載されているトラステッド・プラットフォーム・モジュール（ＴＰＭ１９５）は、ハードウェア・セキュリティ・モジュール（ＨＳＭ：hardware security module）の一例に過ぎない。したがって、本明細書に記載され請求されているＴＰＭは、「TrustedPlatform Module (TPM) Specification Version 1.2」という題名のトラステッド・コンピューティング・グループ（ＴＣＧ：Trusted ComputingGroups）規格に適合するハードウェア・セキュリティ・デバイスを含むがこれに限定されない任意のタイプのＨＳＭを含む。ＴＰＭは、図２に概略が示されているものなどの任意の数の情報処理システムに取り入れることができるハードウェア・セキュリティ・サブシステムである。
【００１７】
図２は、ネットワーク化環境で動作する多種多様な情報処理システム上で本明細書に記載されている方法を実行できることを示すために図１に示されている情報処理システム環境の拡張を示している。情報処理システムのタイプは、ハンドヘルド・コンピュータ／携帯電話２１０などの小型ハンドヘルド・デバイスから、メインフレーム・コンピュータ２７０などの大型メインフレーム・システムに及ぶ。ハンドヘルド・コンピュータ２１０の例としては、携帯情報端末（ＰＤＡ）、ＭＰ３プレーヤなどのパーソナル・エンターテインメント・デバイス、ポータブル・テレビ、コンパクト・ディスク・プレーヤを含む。情報処理システムの他の例としては、ペンまたはタブレット・コンピュータ２２０、ラップトップまたはノートブック・コンピュータ２３０、ワークステーション２４０、パーソナル・コンピュータ・システム２５０、およびサーバ２６０を含む。図２に個々に示されていないその他のタイプの情報処理システムは情報処理システム２８０によって表されている。図示の通り、様々な情報処理システムは、コンピュータ・ネットワーク２００を使用して一緒にネットワーク化することができる。様々な情報処理システムを相互接続するために使用可能なコンピュータ・ネットワークのタイプとしては、ローカル・エリア・ネットワーク（ＬＡＮ）、ワイヤレス・ローカル・エリア・ネットワーク（ＷＬＡＮ）、インターネット、公衆交換電話網（ＰＳＴＮ：Public Switched Telephone Network）、その他のワイヤレス・ネットワーク、および情報処理システムを相互接続するために使用可能な任意のその他のネットワーク・トポロジを含む。情報処理システムの多くは、ハード・ディスクまたは不揮発性メモリあるいはその両方などの不揮発性データ・ストアを含む。図２に示されている情報処理システムのうちのいくつかは、個別の不揮発性データ・ストアとともに描写されている（サーバ２６０は不揮発性データ・ストア２６５とともに示され、メインフレーム・コンピュータ２７０は不揮発性データ・ストア２７５とともに示され、情報処理システム２８０は不揮発性データ・ストア２８５とともに示されている）。不揮発性データ・ストアは、様々な情報処理システムの外部にあるコンポーネントにすることができ、情報処理システムのうちの１つの内部にある場合もある。加えて、取り外し可能な不揮発性記憶装置１４５は、情報処理システムのＵＳＢポートまたはその他のコネクタに取り外し可能な不揮発性記憶装置１４５に接続するなど、様々な技法を使用して２つまたはそれ以上の情報処理システム間で共用することができる。
【００１８】
図３は、仮想入出力サーバ（ＶＩＯＳ）パーティションを含む仮想化環境を使用するコンピュータ・システムの図である。コンピュータ・システム３００は、いくつかの仮想パーティション（パーティション３７５、３７６、３７７、および３８０）とともに示されている。これらのパーティションは、ハイパーバイザ３０５によって調整される仮想化環境の一部である。これらのパーティションのうちの１つ（パーティション３８０）は、仮想入出力サーバ（ＶＩＯＳ）である特殊パーティションである。暗示されている通り、ＶＩＯＳパーティションは、他のパーティションに関する入出力サービスを提供する。他のパーティションに関する入出力サービスのＶＩＯＳ処理を容易にするために、他のパーティションとＶＩＯＳパーティションとの間に１つまたは複数の通信チャネル（３９１、３９２、および３９３）が確立される。
【００１９】
ネットワーク・アダプタ３１５およびハードウェア・デバイス３２０は、ハイパーバイザ３０５によって管理される様々なインターフェースを使用してコンピュータ・システムに接続する。一実施形態では、ハードウェア・インターフェースの１つでハードウェア（物理）割り込みが行われると、ハイパーバイザは処理のためにその割り込みをＶＩＯＳパーティション３８０に渡す。図示の通り、ネットワーク・アダプタ３１５は、コンピュータ・システムとネットワーク・サーバおよびデバイス３３５との間の通信を容易にするために、コンピュータ・システムをコンピュータ・ネットワーク２００に接続するために使用される。他の実施形態では、このハードウェアは、パーティションの１つで実行されるオペレーティング・システムの１つによって管理（「所有」）される。この実施形態では、入出力割り込みは物理プロセッサ（たとえば、様々なパーティションを実行するプロセッサ）に引き渡される。この実施形態では、入出力割り込みが向けられるパーティションが、その割り込みが行われたときにプロセッサ上で現在実行中である場合、そのパーティションはその割り込みを直接受け取る。これに対して、他のパーティションがプロセッサ上で現在実行中である場合、そのパーティションはハイパーバイザ呼び出しを行い、「注意（never mind）」応答を受け取り、割り込みは正しいパーティションに後で引き渡すためにハイパーバイザ内でキューに入れられる。さらに、いかなるパーティションもプロセッサ上で現在実行中ではない場合、ハイパーバイザはその割り込みをキューに入れ、場合によっては、正しいパーティションがその割り込みを処理できるように正しいパーティションをウェイクアップする。
【００２０】
割り込みを処理し、他のパーティションに入出力サービスを提供する際のその役割のために、ＶＩＯＳパーティション３８０は一般に、他のパーティション３７５、３７６、および３７７より多くの時間を割り込みの処理に費やす。しかし、ＣＰＵフォールディングにより、ＶＩＯＳパーティション（およびハードウェア割り込みの処理に相当な時間を費やす任意の他のパーティション）はその仮想ＣＰＵがフォールディング（削減）されている可能性がある。
【００２１】
パーティションが作成されるときに、システム管理者は、そのパーティションのために「所望の」数の仮想ＣＰＵ（ｖＣＰＵ）を構成し、そのパーティションに特定の有資格処理能力（仮想ＣＰＵ資格値（entitlement value））を割り当てる。ハイパーバイザは、多重プログラミングされた環境でＯＳがプロセス（またはスレッド）をスイッチする方法と類似して、物理プロセッサ内外にｖＣＰＵをスイッチする。したがって、ｖＣＰＵの数を削減すると、システムに関するコンテキスト・スイッチ・オーバヘッドが減少する。パーティションの存続時間の間、ＣＰＵフォールディングは潜在的にキックイン（kick in）し、システム管理者の「所望の」数からシステムが決定した「最適」数にパーティションのｖＣＰＵの数を削減することができる。フォールディング・アルゴリズムは伝統的に、最も少ない数のｖＣＰＵに処理能力を集中することを目指している。仮想ＣＰＵの数を削減することは、ＶＩＯＳパーティション３８０などの割り込みが激しい環境では最良のソリューションではない可能性がある。ＶＩＯＳパーティション３８０のような割り込み集約パーティションに対するＣＰＵフォールディングの影響を相殺するために、オペレーティング・システムは、ｖＣＰＵをアンフォールディングするためのトリガとして、あるパーティションが割り込みの処理に費やす全処理時間のパーセンテージを使用する。割り込みが激しい環境では、これにより、より多くのコンピューティング・リソースを容易に使用可能な状態に保持することにより、特に上限撤廃パーティションについて割り込みサービス待ち時間を短縮する。上限付きパーティションの場合でも、ｖＣＰＵを追加（アンフォールディング）することは、活動停止中で使用可能な物理プロセッサを有するサーバ上で割り込み待ち時間を短縮するのに役立つであろう。使用可能な物理プロセッサがあるときにｖＣＰＵをアンフォールディングすると、異なる物理プロセッサ上での複数の割り込みの並列処理が可能になり、その結果、サービス待ち時間が短縮されるであろう。上限撤廃パーティションの場合、追加の利点として、より多くのｖＣＰＵが追加されると、そのパーティションに関する最大達成可能処理能力が増加する。全体的な使用中時間ではなく、全体的な割り込み処理時間をトリガとして使用することの根本的理由は、計算スレッド（割り込み処理時間ではなく使用中時間に貢献する）は、割り込みに比較して、より多くの「緩和された（relaxed）」応答時間要件を有する傾向があることである。したがって、割り込みバウンドではない環境は、アンフォールディングの恩恵を受ける可能性が低く、あまり積極的にアンフォールディングを行わない可能性がある。
【００２２】
ＩＢＭのＡＩＸ（ＴＭ）オペレーティング・システムなどの多くのオペレーティング・システムは、割り込みの処理に費やされる時間の量のランニング・カウントを保持する。このメトリックは、パーティション（たとえば、パーティション３７５、３７６、３７７、および３８０）が割り込みの処理に費やしたパーティション使用中時間のパーセンテージを計算するためにオペレーティング・システムによって使用される。このパーセンテージが管理者定義の（調整可能な）しきい値を超えると、ｖＣＰＵをアンフォールディングするためのトリガとして使用されるが、ｖＣＰＵの現行数はパーティション作成中に指定された「所望の」数のｖＣＰＵより少ないことが条件である。オペレーティング・システムはその通常動作の一部としてこの情報を維持するので、割り込みの処理に費やされた時間を計算することはかなり安価である。
【００２３】
一実施形態では、フォールディング／アンフォールディングの決定を行うオペレーティング・システムは、ハイパーバイザが本質的にそのパーティション（たとえば、パーティション３７５、３７６、３７７、および３８０）に割り当てられたｖＣＰＵをフォールディング／アンフォールディングするようにハイパーバイザ内で実行されるオペレーティング・システムである。他の実施形態では、個々のパーティションで実行されるオペレーティング・システムは、フォールディング・アルゴリズムを実行し、その結果、フォールディング／アンフォールディングの決定に基づいて、その特定のパーティションにいくつのｖＣＰＵが割り当てられるかを決定する役割を担う。いずれの場合も、本明細書で使用する「オペレーティング・システム」という用語は、オペレーティング・システムがハイパーバイザ内で実行されるかまたは特定のパーティションの１つで実行されるかにかかわらず、１つのパーティションにいくつのｖＣＰＵが割り当てられるかを決定するプロセスを指すために使用される。
【００２４】
この計算は安価であるので、チェック間の時間間隔はかなり積極的に設定することができる。たとえば、ディスパッチャは、新しいスレッドをディスパッチするために呼び出されるたびに消費時間値を計算することができ、潜在的に、その結果、それぞれの割り込みが処理された後でこのメトリックが更新されることになるであろう。換言すれば、パーティションが割り込みの処理に費やす時間の量に基づくアンフォールディングの決定は、オペレーティング・システムにより多くの異なる点で行うことができる。この決定は、固定時間間隔で（たとえば、１０ミリ秒おきに一度）消費時間値を調べることによって行うことができるか、またはこの決定を行う必要性は、新しいスレッド（または活動停止中のスレッド）をディスパッチするためにディスパッチャが呼び出されるなどのイベントによってトリガすることができるであろう。ピンポン効果（ping-pong effect）を回避するために、ｖＣＰＵをフォールディングする決定はあまり積極的に行うことができない。換言すれば、パーティションが割り込みの処理に費やしている時間の量に基づいてｖＣＰＵをアンフォールディングする決定は、パーティション・リソース（たとえば、ＣＰＵ）使用状況に基づいてｖＣＰＵをフォールディングする決定より頻繁に行うことができる。
【００２５】
図４は、処理能力および割り込みパーセンテージしきい値を様々な仮想パーティションに割り当てるためにシステム管理者によって実行されるセットアップ処理を示す流れ図である。処理は４００から始まり、その後、ステップ４１０で仮想環境内でハイパーバイザによって管理されるパーティションがシステム構成データ・ストア４２０から選択される。システム構成データ・ストア４２０は、ハイパーバイザによって管理される任意の仮想入出力サーバ（ＶＩＯＳ）パーティションを含む、様々なパーティションに関する情報を保管するために使用される。システム管理者が被選択パーティションに計算能力を割り当てることを希望するかどうかについて判断が行われる（判断４３０）。システム管理者が被選択パーティションに計算能力を割り当てることを選択した場合、判断４３０は「ｙｅｓ」分岐４３５に分岐し、その後、ステップ４４０でシステム管理者は「有資格」処理能力（「資格値」）を被選択パーティションに割り当てる。一実施形態では、システム管理者は被選択パーティションの「上限を撤廃する」ことを選択することができる。パーティションの上限を撤廃することにより、そのパーティションの仮想ＣＰＵのそれぞれが潜在的に、完全な物理プロセッサ１つ分までの処理能力を消費することができる。すなわち、１つのパーティションが２つの仮想ＣＰＵを有する場合、上限撤廃モードでそのパーティションは物理（実）ＣＰＵ２つ分までの（しかもそれ以下の）計算能力を消費することができる。ステップ４５０で、割り当てられた「資格値」は不揮発性パーティション割り当て能力データ・ストア４６０に保管される。
【００２６】
判断４３０に戻り、システム管理者が被選択パーティションに計算能力を割り当てないと決定した場合、判断４３０はステップ４４０および４５０を迂回して「ｎｏ」分岐４６５に分岐する。システム管理者が他のパーティションを選択するかどうかについて判断が行われる（判断４７０）。システム管理者が他のパーティションを選択することを希望する場合、判断４７０は「ｙｅｓ」分岐４７４に分岐し、その分岐はステップ４１０で次のパーティションを選択するためにループバックする。このループは、システム管理者がもはや追加のパーティションを選択することを希望しなくなるまで継続し、その時点で判断４７０は「ｎｏ」分岐４７６に分岐する。
【００２７】
ステップ４８０で、システム管理者は、１つまたは複数の割り込みパーセンテージしきい値をセットアップして保管する。パーティションが割り込みパーセンテージしきい値のうちの１つに達すると、割り込みの処理により多くの時間を費やしているパーティションが（ステップ４４０で設定された「有資格」ｖＣＰＵ能力の量まで）より多くのｖＣＰＵを有することができるようにするために、そのｖＣＰＵが「アンフォールディング」される。一実施形態では、ｖＣＰＵを「アンフォールディング」するためにそれぞれのパーティションが同じ割り込みパーセンテージしきい値を使用するように、割り込みパーセンテージしきい値はシステム全体で設定される。他の実施形態では、それぞれのパーティションが異なる割り込みパーセンテージしきい値ならびにデフォルト割り込みパーセンテージしきい値（割り込みパーセンテージしきい値が特定のパーティションについてセットアップされていない場合）を有することができるようにするために、それぞれのパーティションを個別に調整することができる。これらの割り込みパーセンテージしきい値は、不揮発性割り込みパーセンテージしきい値データ・ストア４９０に保管される。その後、セットアップ処理は４９５で終了する。
【００２８】
図５は、仮想パーティションに割り当てられた仮想ＣＰＵ（ｖＣＰＵ）をフォールディング／アンフォールディングするためにオペレーティング・システムによって行われるステップを示す流れ図である。処理は５００から始まり、その後、ステップ５１０でハイパーバイザは、パーティション割り当て能力データ・ストア４６０に保管された資格値に基づいて仮想ＣＰＵの割り当てを初期設定する。
【００２９】
定義済みプロセス５１５で、オペレーティング・システムは、パーティションが割り込みの処理に費やす時間の量を定期的にチェックする（定義済みプロセス５１５、処理の詳細については図６および対応する本文を参照）。前に説明した通り、システムによっては、パーティションが割り込みの処理にどのくらいの時間を費やしているかをチェックするために使用されるデータは容易に使用可能であるので、定義済みプロセス５１５はこのような環境では積極的に（たとえば、ステップ５３０〜５８０に示されているｖＣＰＵをフォールディングするために使用される使用状況チェックより頻繁に）実行することができる。
【００３０】
必ずしも定義済みプロセス５１５が実行されるのと同じ時間間隔ではないが、定期的に、ステップ５２０でオペレーティング・システムはパーティションの使用状況をチェックする。パーティションの使用状況がチェックされると、ステップ５３０で、オペレーティング・システムから取り出され、メモリ５４０から読み取られるパーティションのＣＰＵ使用状況メトリックなどの様々なコンピュータ・システム・リソース・メトリックを使用して、仮想ＣＰＵフォールディング／アンフォールディング・アルゴリズムが処理される。フォールディング／アンフォールディング・アルゴリズムの実行に基づいて、所与のパーティションについてより少ない仮想ＣＰＵが必要であるかどうかについて判断が行われる（判断５５０）。より少ないパーティションが必要である場合、判断５５０は「ｙｅｓ」分岐５５５に分岐し、その後、ステップ５６０でそのパーティションに割り当てられる仮想ＣＰＵの数が削減（「フォールディング」）され、この削減値は仮想ＣＰＵをパーティションに割り振るときに使用される仮想ＣＰＵメモリ領域５７５に保管される。
【００３１】
これに対して、フォールディング／アンフォールディング・アルゴリズムに基づいてより少ない仮想ＣＰＵが必要ではない場合、判断５５０は「ｎｏ」分岐５６５に分岐し、その後、より多くの仮想ＣＰＵがそのパーティションによって必要とされ、そのパーティションに割り当てられた仮想ＣＰＵの現行数がそのパーティションの仮想ＣＰＵの「資格値」より小さいかどうかについて判断が行われる（判断５７０）。より多くの仮想ＣＰＵがそのパーティションによって必要とされ、そのパーティションに割り当てられた仮想ＣＰＵの現行数がそのパーティションの仮想ＣＰＵの「資格値」より小さい場合、判断５７０は「ｙｅｓ」分岐５７２に分岐し、その後、ステップ５８０でそのパーティションに割り当てられる仮想ＣＰＵの数が、そのパーティションの資格値より小さいかまたはそれに等しい値まで増加（「アンフォールディング」）される。この増加値は仮想ＣＰＵをパーティションに割り振るときに使用される仮想ＣＰＵメモリ領域５７５に保管される。
【００３２】
これに対して、（ａ）より多くの仮想ＣＰＵがそのパーティションについて必要ではないか、または（ｂ）そのパーティションが使用する資格のある数の仮想ＣＰＵ（たとえば、使用中のｖＣＰＵ＝資格値）をすでに使用しているか、あるいはその両方である場合、判断５７０はステップ５８０を迂回して「ｎｏ」分岐５８５に分岐し、ループバックして、割り込みの処理に費やされるパーティションの時間に関する次の定期チェックまたはパーティションのシステム・リソース使用状況に関する次のチェックを待つ。
【００３３】
図６は、パーティションが割り込みの処理に費やしている時間の量を分析するためにオペレーティング・システムによって実行されるルーチンによって実行されるステップを示す流れ図である。処理は６００から始まり、その後、ステップ６１０でこのパーティションに割り当てられている仮想ＣＰＵの「資格値」がパーティション割り当て能力データ・ストア４６０から取り出される。このパーティションに割り当てられた仮想ＣＰＵの現行数がこのパーティションに割り当てられた仮想ＣＰＵの有資格値に等しいかどうかについて判断が行われる（判断６２０）。このパーティションに割り当てられた仮想ＣＰＵの現行数がこのパーティションの資格値に等しくない（たとえば、現行数が資格値より小さい）場合、このパーティションが割り込みの処理に費やしている時間の量に基づいて追加の仮想ＣＰＵをこのパーティションに割り当てるべきかどうかを判断するために、判断６２０は「ｎｏ」分岐６２５に分岐する。
【００３４】
ステップ６３０で、このパーティションが割り込みの処理に費やしている時間の量（プロセッサ・サイクル、実際のＣＰＵ時間など）についてオペレーティング・システムによって維持されるカウンタであるメモリ領域６４０からこのパーティションによって割り込みの処理に費やされる時間の量が取り出される。ステップ６５０で、時間の量の値はパーセンテージ値（そのパーティションが割り込みの処理に費やしているパーティションの時間のパーセンテージ）に変換される。この計算されたパーセンテージはメモリ領域６６０に保管される。ステップ６７０で、そのパーティションの現行割り込み時間パーセンテージ値は、システム管理者によって確立され、データ・ストア４９０に保管されている時間パーセンテージしきい値と比較される。この比較に基づいて、そのパーティションの現行割り込み時間パーセンテージがしきい値を超えるかどうかについて判断が行われる（判断６８０）。そのパーティションの現行割り込み時間パーセンテージがしきい値を超える場合、判断６８０は「ｙｅｓ」分岐６８５に分岐し、その後、ステップ６９０でそのパーティションに割り当てられる仮想ＣＰＵの数がそのパーティションの資格値より小さいかまたはそれに等しい値まで増加（「アンフォールディング」）される。この増加値は仮想ＣＰＵをパーティションに割り振るときに使用される仮想ＣＰＵメモリ領域５７５に保管される。これに対して、そのパーティションの現行割り込み時間パーセンテージがしきい値を超えない場合、判断６８０はステップ６９０を迂回して「ｎｏ」分岐６９２に分岐する。処理はその後、６９５で呼び出しルーチン（図５を参照）に戻る。
【００３５】
判断６２０に戻り、このパーティションに割り当てられた仮想ＣＰＵの現行数がこのパーティションの資格値に等しい（たとえば、仮想ＣＰＵの現行数が資格値に等しい）場合、判断６２０はステップ６３０〜６９０を迂回して「ｙｅｓ」分岐６９４に分岐する。処理はその後、６９５で呼び出しルーチン（図５を参照）に戻る。
【００３６】
本発明の好ましい諸実施形態の１つは、クライアント・アプリケーションであり、すなわち、たとえば、コンピュータのランダム・アクセス・メモリに常駐する可能性のあるコード・モジュール内の１組の命令（プログラム・コード）またはその他の機能記述材料（functional descriptive material）である。コンピュータによって必要とされるまで、この１組の命令は他のコンピュータ・メモリ内、たとえば、ハード・ディスク内、あるいは光ディスク（最終的にＣＤ  ＲＯＭで使用するためのもの）またはフレキシブル・ディスク（最終的にフレキシブル・ディスク・ドライブで使用するためのもの）などの取り外し可能メモリ内に保管するか、インターネットまたはその他のコンピュータ・ネットワークを介してダウンロードすることができる。したがって、本発明の諸実施形態は、コンピュータ内で使用するためのコンピュータ・プログラム（computer program product）として実装することができる。加えて、記載されている様々な方法はソフトウェアによって選択的に活動化されるかまたは再構成される汎用コンピュータにおいて都合良く実装されるが、当業者であれば、このような方法が必要な方法ステップを実行するために構築されたハードウェア、ファームウェア、またはより専門的な装置で実行できることも認識するであろう。機能記述材料はマシンに機能を付与する情報である。機能記述材料は、コンピュータ・プログラム、命令、ルール、事実、計算可能関数の定義、オブジェクト、およびデータ構造を含むが、これらに限定されない。
【図１】
2011521384.tif 000003
【図２】
2011521384.tif 000004
【図３】
2011521384.tif 000005
【図４】
2011521384.tif 000006
【図５】
2011521384.tif 000007
【図６】
2011521384.tif 000008
【国際調査報告】
2011521384.tif 000009
2011521384.tif 000010