【事件の表示】
　特願２００８−５１９６８４「命令群トラッピングによってＯＳコンテキスト切替を最適化するシステム及び方法」拒絶査定不服審判事件〔平成１９年　１月１１日国際公開、ＷＯ２００７／００５８１９、平成２０年１２月１１日国内公表、特表２００８−５４５２０５〕について、次のとおり審決する。
【結　論】
　本件審判の請求は、成り立たない。
【理　由】
１．手続の経緯
　本願は、２００６年６月２９日（パリ条約による優先権主張外国庁受理２００５年７月１日、米国）を国際出願日とする出願であって、平成２２年８月６日付けで拒絶理由通知がなされ、同年１１月９日付けで意見書が提出されるとともに手続補正がなされ、平成２３年３月９日付けで最後の拒絶理由通知がなされ、同年７月２１日付けで意見書が提出されるとともに手続補正がなされたが、同年９月２０日付けで平成２３年７月２１日付けの手続補正が却下されるとともに拒絶査定がなされ、これに対し、平成２４年１月２７日付けで拒絶査定不服審判の請求がなされるとともに手続補正がなされ、同年６月１２日付けで審査官による前置報告がなされ、同年８月２９日付けで当審より審尋がなされ、同年１２月４日付けで回答書が提出されたものである。
　
　
２．本願発明
　本願の請求項９に係る発明は、平成２４年１月２７日付の手続補正書により補正された特許請求の範囲の請求項９に記載されたとおりの次のものと認める。（以下、「本願発明」という。）
　
「コンピュータによって実行される方法であって：　
　仮想化技術を実現する計算プラットホーム内の第１の仮想機械が該プラットホーム上のプロセッサ内の選択されたレジスタセットを使用するとき、そのことを前記プロセッサによって特定する特定段階であり、該選択されたレジスタセットの使用を指し示す該第１の仮想機械における事象をトラップする段階と、該選択されたレジスタセットが該第１の仮想機械によって使用されることを指し示すようにビットフィールドを設定する段階とを有する特定段階；
　前記プロセッサ上で動作する仮想機械モニタ（ＶＭＭ）によって、対応する選択されたレジスタセットに対して前記ビットフィールドが設定されているかを決定する決定段階；
及び
　前記選択されたレジスタセットが前記第１の仮想機械によって使用されていると特定されたとき、前記第１の仮想機械から第２の仮想機械にプロセッサコンテキストを切り替えることに先立って、前記仮想機械モニタによって前記第１の仮想機械に対して前記選択されたレジスタセットのコンテキストを保存する保存段階；
　を有する方法。」
　
　
３．引用文献
（引用文献１）
　原査定の拒絶の理由に引用され、本願優先日前に頒布された国際公開第２００４／０６１６５９号（以下、「引用文献１」という。）には、図面とともに次の事項が記載されている。（下線は、当審において付与したものである。なお、日本語訳として、パテントファミリーである特表２００６−５１０１２０号公報の対応する記載を用いたため、段落番号は異なるものとなっている。）
　
Ａ１．「[0017] 
FIG. 1 illustrates one embodiment of a virtual-machine environment 100, in which the present invention may operate. In this embodiment, a physical machine 110 comprises a computing platform, which may be capable, for example, of executing a standard operating system (OS) or a virtual-machine monitor (VMM), such as a VMM 125. The VMM 125, though typically implemented in software, may emulate and export a machine interface to higher-level software. Such higher level software may comprise a standard or real-time OS, may be a highly stripped down operating environment with limited OS functionality, may not include traditional OS facilities, and the like.
（・・・中略・・・）
[0021] The VMM 125 presents to other software (i.e., guest software) the abstraction of one or more virtual machines (VMs), which may provide the same or different abstractions to the various guests. FIG. 1 shows three VMs, 132, 142 and 152. The guest software running on each VM may include a guest OS such as a guest OS 134, 144 or 154 and various guest software applications 136, 146 and 156. 
Each of the guest OSs 134, 144 and 154 expects to access physical resources (e.g., processor 112 registers, memory 120 and I/O devices) within the VMs 132, 142 and 152 on which the guest OS 134, 144 or 154 is running and to handle various events including interrupts generated by system devices during the operation of the VMs 132, 142 and 152
[0022] 
The processor 112 controls the operation of the VMs 132, 142 and 152 in accordance with data stored in VMCS 122. VMCS 122 may be stored in memory 120 (as shown in FIG. 1), within the processor 112, in any other location or in any combination of storage locations. The VMCS 122 provides storage for machine state of the VMM 125 and guest software. Additionally, it may include indicators to limit or otherwise control operation of a VM and to control transitions between a VM and the VMM 125. The VMCS 122 is accessible by the VMM 125. The VMCS need not be a contiguous area of memory or storage.
[0023] A transition from the VMM 125 to guest software is called a VM entry.
A transition from guest software to the VMM 120 is called a VM exit. Collectively, VM entries and VM exits are referred to as VM transitions. In an embodiment, a VMM 125 may initiate a VM entry by executing a particular instruction to cause the VM entry. In an embodiment, VM exits may be explicitly requested by the VM (e.g., by executing a special instruction to generate the VM exit). In some embodiments, the VM does not directly request a transition, but rather some event (e.g., protection fault, interrupt, and the like) or VM executed instruction requires a VM exit as determined by controls in the VMCS 122 or the architecture of the virtual machine system (e.g., if a particular control bit is set in the VMCS, then executions of the I#VLPG instruction cause VM exits; all occurrences of a non-maskable interrupts cause VM exits). 
[0024] During VM transitions, the processor 112 may act on various elements of machine state. As one of ordinary skill in the art appreciates, machine state can be associated with a variety of architectural components in, for example, the processor(s), I/O devices, chipset, etc. 
Accordingly, descriptions of various embodiments of the present invention use the phrase 
machine state
 within its conventional meaning augmented by some components not traditionally viewed as architectural. Thus, machine state can include general purpose and floating-point registers (e.g., in the Instruction Set Architecture (ISA) of Intel's Pentium IV referred to as IA-32 ISA, EAX, EDX, ST3, and the like), control registers (e.g., in the IA-32 ISA, CR0, CR3, and the like), instruction pointers (e.g., in the IA-32 ISA, EIP), processing flags (e.g., in the IA-32 ISA, EFLAGS, and the like), model-specific registers (MSRs) (e.g., in the IA-32 ISA, DEBUGCTL, MTRRs, TSC, and the like), segment registers (e.g. in the IA-32 ISA, CS, SS, TR, and the like which include selector, base, limit, and AR byte fields), additional internal (architectural or non-architectural) machine state (e.g., sleep state, interruptibility information, state-machine state), memory management related state (e.g., PDPTRs, translation look aside buffer (TLB) contents), chipset registers, I/O device state, and others.
[0025] 
The VM system 100 provides a flexible architecture for implementing mechanisms that are used when managing the loading and/or storing of machine state during transitions (e.g., entries and exits) between guest VMs (e.g., 132, 142, and 152) and a host VMM 125.
（日本語訳：「【００１０】
　
図１は、本発明が動作し得るバーチャルマシン環境100の実施例を示している。この実施例では、物理マシン110は、例えば標準的なオペレーティングシステム(OS)又はVMM125のようなバーチャルマシンモニタ(VMM:virtual-machine  monitor)を実行可能なコンピュータプラットフォームを有する。VMM125は一般的にはソフトウェアで実装されるが、上位レベルのソフトウェアに対してマシンインタフェースをエミュレート及びエクスポートしてもよい。このような上位レベルのソフトウェアは、標準的又はリアルタイムのOSを有してもよく、限られたOS機能を備えてかなり除去された動作環境でもよく、従来のOS機能を有してなくてもよい。
（・・・中略・・・）
【００１４】
　VMM125は、他のソフトウェア(すなわち、“ゲスト”ソフトウェア)に１つ以上のバーチャルマシン(VM)の抽象化を提示し、その１つ以上のバーチャルマシンは、多様なゲストに同一の又は異なる抽象化を提供してもよい。図１は３つのVM132、142、152を示している。各VMで動作するゲストソフトウェアは、ゲストOS134、144又は154のようなゲストOSと、多様なゲストソフトウェアアプリケーション136、146、156を有してもよい。
ゲストOS134、144、154のそれぞれは、ゲストOS134、144又は154が動作するVM132、142、152内の物理リソース(例えば、プロセッサ112のレジスタ、メモリ120及びI/Oデバイス)にアクセスし、VM132、142、152の動作中にシステムデバイスにより生成された割込みを含む多様なイベントを処理することになっている。
【００１５】
　
プロセッサ112は、VMCS122に格納されたデータに従ってVM132、142、152の動作を制御する。
VMCS122は、VMM125及びゲストソフトウェアのマシン状態の記憶装置を提供する。更に、VMの動作を制限又は制御し、VMとVMM125との間の移行を制御するインジケータを有してもよい。VMCS122はVMM125によりアクセス可能である。
【００１６】
　VMM125からゲストソフトウェアへの移行は“VMエントリー(VM  entry)”と呼ばれる。ゲストソフトウェアからVMM120への移行は“VMエグジット(VM  exit)”と呼ばれる。VMエントリーとVMエグジットとを併せて“VM移行”と呼ばれる。一実施例では、VMM125は、VMエントリーをもたらす特定の命令を実行することにより、VMエントリーを開始してもよい。一実施例では、(例えばVMエグジットを生成する特別の命令を実行することにより)VMエグジットはVMにより明示的に要求されてもよい。ある実施例では、VMは直接的に移行を要求せずに、VMCS122の制御又はバーチャルマシンシステムのアーキテクチャにより決められた通り、何らかのイベント(例えばプロテクションの障害、割込み等)又はVM実行の命令がVMエグジットを要求する(例えば、特定の制御ビットがVMCSに設定されている場合に、INVLPG命令の実行がVMエグジットをもたらす；マスク不可能な割込みの全ての発生がVMエグジットをもたらす)。
【００１７】
　VM移行中に、プロセッサ112はマシン状態の多様な要素で動作してもよい。当業者にわかるように、マシン状態は、例えば、プロセッサ、I/Oデバイス、チップセット等の多様なアーキテクチャ上の構成要素に関連してもよい。従って、本発明の多様な実施例の説明は、従来ではアーキテクチャ上としてみなされないいくつかの構成要素により補われた従来の意味で、“マシン状態”という語句を使用する。従って、マシン状態
は、汎用レジスタ及び浮動小数点レジスタ(例えば、IA-32ISA、EAX、EDX、ST3等と呼ばれるIntelのPentium（登録商標）IVの命令セットアーキテクチャ(ISA:Instruction  Set  Architecture))、(例えば、IA-32ISA、CR0、CR3等の)制御レジスタ、(例えば、IA-32ISA、EFLAGS等の)処理フラグ、(例えば、IA-32ISA、DEBUGCTL、MTRR、TSC等の)モデル特有のレジスタ(MSR:model-specific  register)、(例えば、セレクタとベースとリミットとARバイトフィールドとを含むIA-32ISA、CS、SS、TR等の)セグメントレジスタ、更なる内部(アーキテクチャ上又は非アーキテクチャ上)マシン状態(例えば、スリープ状態、割込み可能情報、状態機械の状態)、メモリ管理に関する状態(例えば、PDPTR、変換索引バッファ(TLB:translation  look  aside  buffer)の内容)、チップセットのレジスタ、I/Oデバイス状態等を有してもよい。
【００１８】
　
VMシステム100は、ゲストVM(例えば、132、142、152)とホストVMM125との間での移行(例えば、エントリー及びエグジット)中にマシン状態のロード及び／又は格納を管理する際に使用される機構を実装する柔軟なアーキテクチャを提供する。
　
Ａ２．「[0036] 
In one embodiment, the VMCS includes two sets of control bits that are under the control of the VMM. These control bits are referred to as VM-entry controls and VM-exit controls. The VM-entry controls inform the processor what VMM machine state should be stored and what VM machine state should be loaded during a VM entry. The VM-exit controls inform the processor what VM machine state should be stored and what VMM machine state should be loaded during a VM exit.
（・・・中略・・・）
[0039] 
At a VM entry, if the VMM has set the 
store- VMM-DR7
 bit in the VM- entry controls (bit number 0), then the processor will store the current value of the DR7 register. In one embodiment, the value of the DR7 register is stored into the VMCS. Conversely, if the 
store- VMM-DR7
 bit in the VM-entry controls is cleared, then the processor does not store the DR7 register value. The 
store- VMM-CR3
 and 
store- VMM-CR4
 VM-entry control bits (e.g., bit numbers 1 and 2, respectively) behave in a similar fashion.
[0040] Likewise, if the VMM has set the load-guest-DR7 VM-entry control bit
(e.g., bit number 4), then the processor will load the DR7 register. In an embodiment, the value loaded is included in the guest VM's DR7 field in the VMCS. If the load-guest- DR7 VM-entry control bit is cleared, then the processor does not load the DR7 register. Again, the load-guest-CR3 and load-guest-CR4 control bits (e.g., bit numbers 4 and 5, respectively) behave in an analogous manner. The VM-exit control bits work in similar ways for controlling the storing of guest VM machine state and the loading of host VMM machine state at VM exit.
[0041] In this example, the VM-entry and VM-exit controls do not control the same elements of machine state; since the VM-entry controls include bits representing DR7 and the VM-exit controls do not. However, as one of ordinary skill in the art readily appreciates, the VM-entry and VM-exit controls can control the same elements of machine state and such representations are intended to fall within the scope of various embodiments for the present invention. Additionally, the particular selection of machine state represented in this example should not be viewed as limiting.」
（日本語訳：「【００２９】
　
一実施例において、VMCSは、VMMの制御のもとにある２つのセットの制御ビットを有する。これらの制御ビットは、VMエントリー制御及びVMエグジット制御と呼ばれる。VMエントリー制御は、どのVMMマシン状態が格納されるべきか、どのVMマシン状態がVMエントリー中にロードされるべきかをプロセッサに通知する。VMエグジット制御は、どのVMマシン状態が格納されるべきか、どのVMMマシン状態がVMエグジット中にロードされるべきかをプロセッサに通知する。
（・・・中略・・・）
【００３４】
　
VMエントリーにおいて、VMMがVMエントリー制御(ビット数0)に“store-VMM-DR7”ビットを設定した場合、プロセッサは、DR7レジスタの現在の値を格納する。一実施例では、DR7レジスタの値はVMCSに格納される。逆に、VMエントリー制御の“store-VMM-DR7”ビットがクリアされると、プロセッサはDR7レジスタ値を格納しない。“store-VMM-CR3”及び“store-VMM-CR4”のVMエントリー制御ビット(例えば、それぞれビット数1及び2)も同様に動作する。
【００３５】
　同様に、VMMが“load-guest-DR7”のVMエントリー制御ビット(例えばビット数4)を設定した場合、プロセッサはDR7レジスタをロードする。一実施例では、ロードされる値は、VMCSのゲストVMのDR7フィールドに含まれる。“load-guest-DR7”のVMエントリー制御ビットがクリアされると、プロセッサはDR7レジスタをロードしない。この場合も同様に、“load-guest-CR3”及び“load-guest-CR4”の制御ビット(例えば、それぞれビット数4及び5)も同様に動作する。VMエグジット制御ビットは、VMエグジットでゲストVMマシン状態の格納とホストVMMマシン状態のロードとを制御するように同様に動作する。
【００３６】
　この例では、VMエントリー制御はDR7を表すビットを有するが、VMエグジット制御は有さないため、VMエントリー制御及びVMエグジット制御はマシン状態の同じ要素を制御しない。しかし、当業者に容易にわかるように、VMエントリー制御及びVMエグジット制御はマシン状態の同じ要素を制御することができ、その内容も本発明の多様な実施例の範囲内にあることを意図する。更に、この例で表されたマシン状態の特定の選択は限定としてみなされるべきではない。」）
　
　
（ア）Ａ１．，Ａ２．の記載から、引用文献１には「コンピュータによって実行される方法」が記載されていることは明らかである。
　
（イ）Ａ１．には「物理マシン110は、例えば標準的なオペレーティングシステム(OS)又はVMM125のようなバーチャルマシンモニタ(VMM:virtual-machine  monitor)を実行可能なコンピュータプラットフォームを有する」ことが記載されている。また、Ａ１．の「ゲストOS134、144、154のそれぞれは、ゲストOS134、144又は154が動作するVM132、142、152内の物理リソース(例えば、プロセッサ112のレジスタ、メモリ120及びI/Oデバイス)にアクセスし」との記載から、VMすなわちゲストVM（バーチャルマシン）のレジスタを使用することが読み取れる。さらに、レジスタには、汎用レジスタ及び浮動小数点レジスタ等があるとされていることから、引用文献１には、実質的に、「バーチャルマシン環境を実現するコンピュータプラットフォーム内の第１のゲストVM（バーチャルマシン）が該プラットフォーム上のプロセッサの浮動小数点レジスタを使用すること」が記載されているといえる。
　
（ウ）Ａ２．には「VMCSは、VMMの制御のもとにある２つのセットの制御ビットを有する。これらの制御ビットは、VMエントリー制御及びVMエグジット制御と呼ばれる。VMエントリー制御は、どのVMMマシン状態が格納されるべきか、どのVMマシン状態がVMエントリー中にロードされるべきかをプロセッサに通知する。」と記載されている。ここで、「どのVMMマシン状態が格納されるべきか」とは、VMMマシン状態に対応する制御ビットが設定されているかを決定することにほかならない。また、VMMはプロセッサ上で動作するものであることから、引用文献１には、「プロセッサ上で動作するVMMによって、対応するマシン状態に対して制御ビットが設定されているかを決定する段階」が記載されているといえる。
　
（エ）Ａ１．には、ゲストVM(例えば、132、142、152)とホストVMM125との間での移行(例えば、エントリー及びエグジット)中にマシン状態のロード及び／又は格納を管理すること、及び、マシン状態には、浮動小数点レジスタ（の状態）が含まれることが記載されている。ここで、VMM は、ゲストVM を切り替えるためのものであることから、引用文献１には、実質的に、「前記プロセッサ上で動作するVMMによって、前記第１のゲストVMから第２のゲストVMにマシン状態を切り替えることに先立って、前記仮想機械モニタによって前記第１のゲストVMに対して浮動小数点レジスタの状態を格納する段階」が記載されているといえる。
　
　上記（ア）〜（エ）より、引用文献１には次の発明が記載されているといえる。（以下、「引用文献１記載の発明」という。）
「コンピュータによって実行される方法であって：
　バーチャルマシン環境を実現するコンピュータプラットフォーム内の第１のゲストVM（バーチャルマシン）が該プラットフォーム上のプロセッサの浮動小数点レジスタを使用する段階；
　前記プロセッサ上で動作するVMM（バーチャルマシンモニタ）によって、対応するマシン状態に対して制御ビットが設定されているかを決定する段階；
及び
　前記プロセッサ上で動作するVMMによって、前記第１のゲストVMから第２のゲストVMにマシン状態を切り替えることに先立って、前記VMMによって前記第１のゲストVMに対してマシン状態を格納する段階；
　を有する方法。」
　
　
（引用文献２）
　原査定の拒絶の理由に引用され、本願優先日前に頒布された特開平８−８７４２０号公報（以下、「引用文献２」という。）には、図面とともに次の事項が記載されている。（下線は、当審において付与したものである。）
　
Ｂ１．「【００２４】マイクロカーネル・システム１１５は、その主な責任として、フレームワーク内で命令を実行する制御点を提供する。
マイクロカーネル１２０内の制御点は、仮想環境で実行されるスレッドである。マイクロカーネル１２０によって提供される仮想環境は、カーネルによって提供されるエミュレート済み命令（システム・トラップ）分だけ増加した、ユーザ空間がアクセス可能なすべてのハードウェア命令を実行する仮想プロセッサから構成され、この仮想プロセッサは、１組の仮想化レジスタと、本来はマシンの物理メモリと同様に応答する何らかの仮想メモリとにアクセスする。他のすべてのハードウェア資源は、メモリ・アクセスとエミュレート済み命令との特殊な組合せによってのみアクセス可能である。当然のことながら、スレッドによって表される命令を実際に実行するのは、物理プロセッサである。
（・・・中略・・・）
【００２７】しかし、ＰｏｗｅｒＰＣプロセッサにマイクロカーネル１２０を適合させる場合、いくつかの問題がある。
マイクロカーネル１２０は、システム上で実行中のタスクのスレッドをスケジューリングする間に、プロセッサ上で現在実行中のスレッドのコンテキストを保管し、その実行の開始が必要なスレッドのコンテキストを復元しなければならない。プログラムのコンテキストは、そのプログラムが実行される環境（たとえば、特権や再配置）である。このコンテキストは、所与のシステム・レジスタの内容と、アドレス変換テーブルとによって制御される。ＰｏｗｅｒＰＣプロセッサの浮動小数点ハードウェアは、３２個の６４ビット長の浮動小数点レジスタと、１つの３２ビットの浮動小数点状況／制御レジスタとを含むので、スレッドが作成されたときにそのコンテキスト用としてスレッドがハードウェア全体を想定することは非常に非効率的である。このような手法の結果、スレッドが浮動小数点機能を必要としないときでも高価なコンテキスト切替が行われる。
　
Ｂ２．「【００３３】障害または割込みが発生して第１のセッションを終了すると（コンテキスト切替時）、スレッドがプロセッサ内での実行から除去され、固定小数点レジスタの内容がスレッドのプロセス制御ブロックに格納される。
浮動小数点コンテキストなしの表示が格納されたことに応答して、プロセッサ内の複数の浮動小数点レジスタの内容はスレッドのプロセス制御ブロックに格納されない。これにより、システム全体のパフォーマンスが大幅に改善される。
【００３４】
その後、同一プロセッサ内または代替プロセッサ内で第２の発生セッション中にスレッドの実行が復元されると、浮動小数点コンテキスト表示の状態を判定するためにプロセス制御ブロックの内容が検査される。この表示はスレッドが浮動小数点コンテキストを持っていないというものなので、複数の固定小数点レジスタを使用してプロセッサ内のスレッドによって固定小数点演算だけが実行される。したがって、プロセッサの浮動小数点レジスタにロードする値をスレッドのプロセス制御ブロックからコピーして戻そうという試みは行われない。これにより、システム全体のパフォーマンスが大幅に改善される。
【００３５】スレッドによって実行中の一連のプログラム命令が第２のセッション中に浮動小数点命令の実行を試みる場合は、浮動小数点例外ハンドラが呼び出される。
【００３６】例外ハンドラは、浮動小数点コンテキストがそのスレッドに使用可能であるという代替表示をプロセッサのマシン状態レジスタに格納する。これにより、スレッドは浮動小数点演算を実行できるようになる。次にスレッドは、プロセッサ内で浮動小数点命令の実行を再開する。
【００３７】別の障害または割込みが発生して、プロセッサ内でのスレッドの実行が強制的に終了すると（コンテキスト切替時）、スレッドがプロセッサから除去され、第２のセッションを終了する。この時点で、浮動小数点演算が可能であるというマシン状態レジスタ内の代替表示に応答して、プロセッサ内の複数の固定小数点レジスタと複数の浮動小数点レジスタの両方の内容が、スレッドのプロセス制御ブロックに格納される。プロセッサのマシン状態レジスタの代替表示もスレッドのプロセス制御ブロックにコピーされる。したがって、プロセッサ内でのスレッドの実行セッションが終了すると、浮動小数点演算を実行中のスレッドについてのみ、浮動小数点レジスタがコピーされる。」
　
Ｂ３．「【００５５】前述の特許出願は、アーキテクチャ・モデル、タスク、スレッド、ポート、プロセス間通信、マイクロカーネル１２０の諸機能を含む、マイクロカーネル・システム１１５の詳細説明を示している。マイクロカーネル１２０によって提供される仮想環境は、カーネルによって提供されるエミュレート済み命令（システム・トラップ）分だけ増加した、ユーザ空間がアクセス可能なすべてのハードウェア命令を実行する仮想プロセッサから構成され、この仮想プロセッサは、１組の仮想化レジスタと、本来はマシンの物理メモリと同様に応答する何らかの仮想メモリとにアクセスする。他のすべてのハードウェア資源は、メモリ・アクセスとエミュレート済み命令との特殊な組合せによってのみアクセス可能である。当然のことながら、スレッドによって表される命令を実際に実行するのは、物理プロセッサである。」
　
Ｂ４．「【０１００】マイクロカーネル情報
遅延コンテキスト復元方式
浮動小数点演算の実行が必要にならない限り、いずれのユーザ・レベル・スレッドにも浮動小数点ハードウェア・レジスタ・セットが示されない。したがって、いずれの非浮動小数点スレッドについても、コンテキストは浮動小数点ハードウェア状態を含まない。これにより、各コンテキスト切替時に処理される情報の量が効果的に低減される。
【０１０１】３２ビットのＰｏｗｅｒＰＣプロセッサ・インプリメンテーションには、３２個の６４ビット浮動小数点レジスタと、１つの３２ビット浮動小数点状況／制御レジスタが存在する。これらのレジスタにより、スレッドが使用しない場合でもコンテキスト切替時に保管され復元されるはずの情報が最高２６０バイトまで追加される。
【０１０２】
スレッドが作成されると、そのＰＣＢとしてアドレス指定されたコンテキスト保管域がそのスレッドに与えられる。ＰＣＢは、整数コンテキスト保管域と浮動小数点コンテキスト保管域から構成される。作成され、実行のスケジューリングが行われたスレッドは、そのｐｃｂによってアドレス指定された浮動小数点保管域を持っていない。スレッドのＭＳＲ（マシン状態レジスタ）には、そのスレッドが浮動小数点ハードウェアを使用できることを示すためのビットが用意されている。このビットは最初にゼロに設定される。
【０１０３】
スレッド実行の過程では、スレッドが浮動小数点命令を実行しようという試みの最初のインスタンスで、浮動小数点使用不能例外が発生する。次に、これにより、マイクロカーネルの浮動小数点例外ハンドラが呼び出される。この例外ハンドラの機能は、それを必要としたスレッドが浮動小数点を使用できるようにすることである。この例外ハンドラは、スレッドの浮動小数点レジスタを保管するための空間を動的に割り振り、レジスタを初期設定し、そのマシン状態レジスタ（ＭＳＲ）の浮動小数点使用可能ビットを１に設定してオンにする。
【０１０４】
浮動小数点コンテキストを獲得すると、スレッドは、その存続期間の残りの期間中、そのコンテキストを持ち続ける。図８の流れ図は、ＰｏｗｅｒＰＣ例外ハンドラ１９０の一部である浮動小数点例外ハンドラ１９２を示している。
【０１０５】図８の流れ図は、スレッドのプロセス制御ブロック（ｐｃｂ）に浮動小数点コンテキストを表示せずに、メモリ１０２内にスレッドを作成することから開始する。本発明によれば、この操作により、障害または割込み後にその実行が終了したときに、スレッドが実行されていたプロセッサ１１０の浮動小数点レジスタのコピーが防止される。
【０１０６】第１の発生セッション中に実行している間、プロセッサ１１０の複数の固定小数点レジスタを使用して、プロセッサ内のスレッドによって固定小数点（整数）演算だけが実行される。
【０１０７】障害または割込みが発生して第１のセッションを終了すると（コンテキスト切替時間）、スレッドがプロセッサ１１０内での実行から除去され、固定小数点レジスタの内容がスレッドのプロセス制御ブロックに格納される。プロセッサ内の現在の浮動小数点コンテキストの状態を含む、プロセッサのマシン状態レジスタ（ＭＳＲ）の内容は、スレッドのプロセス制御ブロックに格納される。浮動小数点コンテキストなしの表示が格納されたことに応答して、プロセッサ内の複数の浮動小数点レジスタの内容はスレッドのプロセス制御ブロックに格納されない。これにより、システム全体のパフォーマンスが大幅に改善される。
【０１０８】その後、同一プロセッサ１１０内または代替プロセッサ１１２内で第２の発生セッション中にスレッドの実行が復元されると、浮動小数点コンテキスト表示の状態を判定するためにプロセス制御ブロックの内容が検査される。この表示はスレッドが浮動小数点コンテキストを持っていないというものなので、複数の固定小数点レジスタを使用してプロセッサ内のスレッドによって固定小数点演算だけが実行される。したがって、プロセッサの浮動小数点レジスタにロードする値をスレッドのプロセス制御ブロックからコピーして戻そうという試みは行われない。これにより、システム全体のパフォーマンスが大幅に改善される。
【０１０９】スレッドが浮動小数点コンテキストを持っていないという表示は、スレッドのプロセス制御ブロックからプロセッサのマシン状態レジスタにコピーして戻される。スレッドによって実行中の一連のプログラム命令が第２のセッション中に浮動小数点命令の実行を試みる場合は、プロセッサによって浮動小数点例外ハンドラ１９２が呼び出される（命令はマイクロカーネル１２０によってトラップされる）。
【０１１０】例外ハンドラ１９２は、浮動小数点コンテキストがそのスレッドに使用可能であるという代替表示をプロセッサのマシン状態レジスタに格納する。これにより、スレッドは浮動小数点演算を実行できるようになる。次にスレッドは、浮動小数点命令の実行を再開する。
【０１１１】
別の障害または割込みが発生して、プロセッサ内でのスレッドの実行が強制的に終了すると（コンテキスト切替時間）、スレッドがプロセッサから除去され、第２のセッションを終了する。この時点で、浮動小数点演算が可能であるという代替表示に応答して、プロセッサ内の複数の固定小数点レジスタと複数の浮動小数点レジスタの両方の内容が、スレッドのプロセス制御ブロックに格納される。したがって、プロセッサ内でのスレッドの実行セッションが終了すると、浮動小数点演算を実行中のスレッドについてのみ、浮動小数点レジスタがコピーされる。浮動小数点コンテキスト状況を含む、マシン状態レジスタはスレッドのプロセス制御ブロックにコピーされる。
【０１１２】その後、同一プロセッサ１１０内または代替プロセッサ１１２内で第３の発生セッション中にスレッドの実行が復元されると、浮動小数点コンテキスト表示の状態を判定するためにプロセス制御ブロックの内容が検査される。この表示はスレッドが浮動小数点コンテキストを持っているというものなので、複数の浮動小数点レジスタと固定小数点レジスタを使用して、プロセッサ内のスレッドにより、浮動小数点演算と固定小数点演算の両方が実行される。したがって、マイクロカーネル１２０は、プロセッサの固定小数点レジスタにロードする値に加え、プロセッサの浮動小数点レジスタにロードする値をスレッドのプロセス制御ブロックからコピーする。スレッドが浮動小数点コンテキストを持っているという表示は、スレッドのプロセス制御ブロックからプロセッサのマシン状態レジスタにコピーされる。したがって、プロセッサ内でのスレッドの実行を復元すると、浮動小数点演算を実行中のスレッドについてのみ、そのプロセス制御ブロックから値がコピーされてプロセッサの浮動小数点レジスタにロードされる。」
　
　
４．対比
（ア）引用文献１記載の発明における「バーチャルマシン環境を実現するコンピュータプラットフォーム」、「第１のゲストVM（バーチャルマシン）」は、本願発明における「仮想化技術を実現する計算プラットホーム」、「第１の仮想機械」に相当する。
　また、引用文献１記載の発明における「浮動小数点レジスタ」と、本願発明における「選択されたレジスタセット」とは、「選択的に使用されるレジスタセット」という点で共通するものである。
　よって、引用文献１記載の発明における「バーチャルマシン環境を実現するコンピュータプラットフォーム内の第１のゲストVM（バーチャルマシン）が該プラットフォーム上のプロセッサの浮動小数点レジスタを使用する段階」と、本願発明における「仮想化技術を実現する計算プラットホーム内の第１の仮想機械が該プラットホーム上のプロセッサ内の選択されたレジスタセットを使用するとき、そのことを前記プロセッサによって特定する特定段階であり、該選択されたレジスタセットの使用を指し示す該第１の仮想機械における事象をトラップする段階と、該選択されたレジスタセットが該第１の仮想機械によって使用されることを指し示すようにビットフィールドを設定する段階とを有する特定段階」とは、「仮想化技術を実現する計算プラットホーム内の第１の仮想機械が該プラットホーム上のプロセッサ内の選択的に使用されるレジスタセットを使用する段階」である点で共通するものである。
　
（イ）引用文献１記載の発明における「VMM（バーチャルマシンモニタ）」、は、本願発明における「仮想機械モニタ（ＶＭＭ）」に相当する。
　
（ウ）引用文献１記載の発明における「マシン状態」は、本願発明における「プロセッサコンテキスト」に相当するものである。
　
（エ）本願発明の「選択されたレジスタセットが該第１の仮想機械によって使用されることを指し示すようにビットフィールドを設定する」の記載から、本願発明における「ビットフィールドを設定する」ことは、「ビットフィールドの（特定の）ビットを設定する」ことを指していることは明らかである。このことを前提にすると、引用文献１記載の発明における「制御ビット」と、本願発明における「ビットフィールド」とは、「プロセッサコンテキスト（「VMマシン状態」）の特定の部分が格納されるべきかを表すビット」という点で共通するものである。
　
（オ）引用文献１記載の発明における「ゲストVMに対してマシン状態を格納する段階」と、本願発明における「仮想機械に対して前記選択されたレジスタセットのコンテキストを保存する保存段階」とは、「仮想機械に対してプロセッサのコンテキストの一部を保存する保存段階」という点で共通するものである。
　
　上記（ア）〜（オ）より、引用文献１記載の発明と本願発明とは、以下の点で一致し、相違する。
　
（一致点）
　コンピュータによって実行される方法であって：
　仮想化技術を実現する計算プラットホーム内の第１の仮想機械が該プラットホーム上のプロセッサ内の選択的に使用されるレジスタセットを使用する段階；
　前記プロセッサ上で動作する仮想機械モニタ（ＶＭＭ）によって、プロセッサコンテキストの特定の部分が格納されるべきかを表すビットが設定されているかを決定する段階；
及び
　前記プロセッサ上で動作する仮想機械モニタ（ＶＭＭ）によって、前記第１の仮想機械から第２の仮想機械にプロセッサコンテキストを切り替えることに先立って、前記仮想機械モニタによって仮想機械に対してプロセッサのコンテキストの一部を保存する保存段階；
　を有する方法。
　
（相違点）
（相違点１）本願発明が「第1の仮想機械が該プラットホーム上のプロセッサ内の選択されたレジスタセットを使用するとき、そのことを前記プロセッサによって特定する特定段階であり、該選択されたレジスタセットの使用を指し示す該第１の仮想機械における事象をトラップする段階と、該選択されたレジスタセットが該第１の仮想機械によって使用されることを指し示すようにビットフィールドを設定する段階とを有する特定段階」を有しているのに対して、引用文献１記載の発明ではそのような構成になっていない点。
　
（相違点２）「仮想機械モニタ（ＶＭＭ）」について、本願発明では、「対応する選択されたレジスタセットに対して前記ビットフィールドが設定されているかを決定する決定段階」を有しているのに対して、引用文献１記載の発明ではそのような構成になっていない点。
　
（相違点３）「仮想機械に対してプロセッサのコンテキストの一部を保存する保存段階」について、本願発明が「選択されたレジスタセットのコンテキストを保存する」のに対して、引用文献１記載の発明ではそのようになっていない点。
　
５．判断
（相違点１について）
　引用文献２には、スレッド実行の過程で、スレッドが浮動小数点命令を実行しようとすると浮動小数点使用不能例外が発生し、スレッドの浮動小数点レジスタを保管するための空間を割り振り、浮動小数点使用可能ビットを１に設定してオンにすること、及び、コンテキスト切替の際に、浮動小数点使用が可能であるという表示に応答して、浮動小数点レジスタの内容が、格納されることが記載されている。
　引用文献１記載の発明及び上記引用文献２記載の技術は、ともにコンテキストの切替に関するものであることから、引用文献１記載の発明に上記引用文献２記載の技術を適用して、第１の仮想機械が浮動小数点レジスタを使用するとき、そのことを特定する特定段階であり、該浮動小数点レジスタの使用を指し示す浮動小数点使用不能例外が発生する段階と、該浮動小数点レジスタが該第１の仮想機械によって使用されることを指し示すように浮動小数点使用可能ビットを設定する段階とを有する特定段階、を有するよう構成することは、当業者が容易に想到し得ることである。
　したがって、相違点１は格別のものではない。
　
（相違点２，３について）
　上記（相違点１について）で示したように、前記引用文献２には、スレッド実行の過程で、スレッドが浮動小数点命令を実行しようとすると浮動小数点使用不能例外が発生し、スレッドの浮動小数点レジスタを保管するための空間を割り振り、浮動小数点使用可能ビットを１に設定してオンにすること、及び、コンテキスト切替の際に、浮動小数点使用が可能であるという表示に応答して、浮動小数点レジスタの内容が、格納されることが記載されている。
　そして、（相違点１について）で検討したような、
第１の仮想機械が浮動小数点レジスタを使用するとき、そのことを特定する特定段階であり、該浮動小数点レジスタの使用を指し示す浮動小数点使用不能例外が発生する段階と、該浮動小数点レジスタが該第１の仮想機械によって使用されることを指し示すように浮動小数点使用可能ビットを設定する段階とを有する特定段階、
を有するような構成をとった場合、この構成と対になる構成である、
浮動小数点使用可能ビットが設定されている場合、コンテキスト切替の際に、浮動小数点使用が可能であるという表示に応答して、浮動小数点レジスタの内容が、格納される段階、
を有するよう構成することは、当業者であれば当然なし得ることである。
　したがって、相違点２，３は格別のものではない。
　
（本願発明の作用効果について）
　そして、本願発明の構成によってもたらされる効果も、引用文献１記載の発明及び引用文献２に記載の技術から当業者が容易に予測することができる程度のものであって、格別のものとはいえない。
　
　
６．むすび
　以上のとおり、本願発明は、引用文献１記載の発明及び引用文献２に記載の技術に基いて、当業者が容易に発明をすることができたものであるから、特許法第２９条第２項の規定により特許を受けることができない。
　したがって、本願は、他の請求項について検討するまでもなく、拒絶されるべきものである。
　よって、結論のとおり審決する。