(57)【特許請求の範囲】
【請求項１】
コンピューティングデバイスにおいて、前記コンピューティングデバイス上のプロセッサに関する情報に対するアプリケーションからの呼び出しに、前記アプリケーションが新デバイスのために書かれたものと識別した情報を前記アプリケーションに基づいて報告することが行われない場合に前記コンピューティングデバイス上の前記プロセッサとは異なるプロセッサに関する情報を返すことによって応答すること、
を備える、方法。
【請求項２】
前記異なるプロセッサに関する前記情報が、前記コンピューティングデバイス上の前記プロセッサの特定の機能を、前記コンピューティングデバイスによって実際にサポートされているものとは異なる、と識別する、請求項１に記載の方法。
【請求項３】
前記異なるプロセッサに関する前記情報が、前記コンピューティングデバイス上の前記プロセッサの特定の機能を、実際に前記特定の機能が前記コンピューティングデバイス上の前記プロセッサによってサポートされている時に、前記コンピューティングデバイス上の前記プロセッサによってまったくサポートされていない、と識別する、請求項１に記載の方法。
【請求項４】
前記異なるプロセッサに関する前記情報が、レガシーデバイス上のプロセッサを識別する、請求項１に記載の方法。
【請求項５】
前記異なるプロセッサに関する前記情報を返すことが、前記コンピューティングデバイス上の前記プロセッサのアーキテクチャによってサポートされているオペコードの使用を含む、請求項１に記載の方法。
【請求項６】
前記異なるプロセッサに関する前記情報を返すことが、ｘ８６アーキテクチャによってサポートされているオペコードの使用を含む、請求項１に記載の方法。
【請求項７】
前記異なるプロセッサに関する前記情報を返すことが、ＣＰＵＩＤ命令の使用を含む、請求項１に記載の方法。
【請求項８】
前記異なるプロセッサに関する前記情報を返すことが、前記コンピューティングデバイス上の前記プロセッサに関連付けられたＲＯＭまたはＲＡＭに格納されたマイクロコードの使用を含む、請求項１に記載の方法。
【請求項９】
前記コンピューティングデバイスは、前記プロセッサに関連付けられたＲＯＭまたはＲＡＭを有するものであり、
前記ＲＯＭまたはＲＡＭは、マイクロコードと、プロセッサＩＤデータの互いに異なる２つのセットを格納するものであり、
前記プロセッサＩＤデータの第１のセットは、新デバイスアプリケーションのためのものであり、
前記プロセッサＩＤデータの第２のセットは、レガシーデバイスアプリケーションのためのものであり、
前記方法における、前記異なるプロセッサに関する前記情報を返すことが、前記マイクロコードと、前記プロセッサＩＤデータの第２のセットを使用することを含む、請求項１に記載の方法。
【請求項１０】
前記コンピューティングデバイスは、前記プロセッサに関連付けられたＲＯＭまたはＲＡＭを有するものであり、
前記ＲＯＭまたはＲＡＭは、マイクロコードを格納するものであり、
前記マイクロコードを実行することにより実装される論理は、前記呼び出しの元となるアプリケーションが新デバイスアプリケーションであるか、または、レガシーデバイスアプリケーションであるかにより、いくつかの詳細において異なるような、プロセッサＩＤデータを返すものであり、
前記方法における、前記異なるプロセッサに関する前記情報を返すことが、前記呼び出しの元となるアプリケーションがレガシーデバイスアプリケーションである場合に、前記マイクロコードを実行することにより、プロセッサＩＤデータを返すことを含む、請求項１に記載の方法。
【請求項１１】
前記コンピューティングデバイスは、レガシーデバイスアプリケーションのための１つのＩＤプログラムと新デバイスアプリケーションのための別のＩＤプログラムを有するものであり、
前記方法における、前記異なるプロセッサに関する前記情報を返すことが、レガシーデバイスアプリケーションのための１つのＩＤプログラムを使用することを含む、請求項１に記載の方法。
【請求項１２】
前記異なるプロセッサに関する前記情報を返すことが、専用ハードウェアの使用を含む、請求項１に記載の方法。
【請求項１３】
プロセッサであって、前記プロセッサに関する情報に対するアプリケーションからの呼び出しに、前記アプリケーションが新デバイスのために書かれたものと識別した情報を前記アプリケーションに基づいて報告することが行われない場合に異なるプロセッサに関する情報を返すことによって応答するように構成された前記プロセッサ、
を備える、コンピューティングデバイス。
【請求項１４】
前記異なるプロセッサに関する前記情報が、前記コンピューティングデバイス上の前記プロセッサの特定の機能を、前記コンピューティングデバイスによって実際にサポートされているものとは異なる、と識別する、請求項１３に記載のコンピューティングデバイス。
【請求項１５】
前記異なるプロセッサに関する前記情報が、前記コンピューティングデバイス上の前記プロセッサの特定の機能を、実際に前記特定の機能が前記コンピューティングデバイス上の前記プロセッサによってサポートされている時に、前記コンピューティングデバイス上の前記プロセッサによってまったくサポートされていない、と識別する、請求項１３に記載のコンピューティングデバイス。
【請求項１６】
前記異なるプロセッサに関する前記情報が、レガシーデバイス上のプロセッサを識別する、請求項１３に記載のコンピューティングデバイス。
【請求項１７】
前記異なるプロセッサに関する前記情報を返すことが、前記コンピューティングデバイス上の前記プロセッサのアーキテクチャによってサポートされているオペコードの使用を含む、請求項１３に記載のコンピューティングデバイス。
【請求項１８】
前記異なるプロセッサに関する前記情報を返すことが、ｘ８６アーキテクチャによってサポートされているオペコードの使用を含む、請求項１３に記載のコンピューティングデバイス。
【請求項１９】
前記異なるプロセッサに関する前記情報を返すことが、ＣＰＵＩＤ命令の使用を含む、請求項１３に記載のコンピューティングデバイス。
【請求項２０】
前記コンピューティングデバイス上の前記プロセッサに関連付けられたＲＯＭまたはＲＡＭをさらに備え、前記異なるプロセッサに関する前記情報を返すことが、前記コンピューティングデバイス上の前記プロセッサに関連付けられた前記ＲＯＭまたはＲＡＭに格納されたマイクロコードの使用を含む、請求項１３に記載のコンピューティングデバイス。
【請求項２１】
前記コンピューティングデバイスは、前記プロセッサに関連付けられたＲＯＭまたはＲＡＭを有するものであり、
前記ＲＯＭまたはＲＡＭは、マイクロコードと、プロセッサＩＤデータの互いに異なる２つのセットを格納するものであり、
前記プロセッサＩＤデータの第１のセットは、新デバイスアプリケーションのためのものであり、
前記プロセッサＩＤデータの第２のセットは、レガシーデバイスアプリケーションのためのものであり、
前記異なるプロセッサに関する前記情報を返すことが、前記マイクロコードと、前記プロセッサＩＤデータの第２のセットを使用することを含む、請求項１３に記載のコンピューティングデバイス。
【請求項２２】
前記コンピューティングデバイスは、前記プロセッサに関連付けられたＲＯＭまたはＲＡＭを有するものであり、
前記ＲＯＭまたはＲＡＭは、マイクロコードを格納するものであり、
前記マイクロコードを実行することにより実装される論理は、前記呼び出しの元となるアプリケーションが新デバイスアプリケーションであるか、または、レガシーデバイスアプリケーションであるかにより、いくつかの詳細において異なるような、プロセッサＩＤデータを返すものであり、
前記異なるプロセッサに関する前記情報を返すことが、前記呼び出しの元となるアプリケーションがレガシーデバイスアプリケーションである場合に、前記マイクロコードを実行することにより、プロセッサＩＤデータを返すことを含む、請求項１３に記載のコンピューティングデバイス。
【請求項２３】
前記コンピューティングデバイスは、レガシーデバイスアプリケーションのための１つのＩＤプログラムと新デバイスアプリケーションのための別のＩＤプログラムを有するものであり、
前記異なるプロセッサに関する前記情報を返すことが、レガシーデバイスアプリケーションのための１つのＩＤプログラムを使用することを含む、請求項１３に記載のコンピューティングデバイス。
【請求項２４】
前記異なるプロセッサに関する前記情報を返すように構成された専用ハードウェアをさらに備える、請求項１３に記載のコンピューティングデバイス。
【請求項２５】
実行された時に、コンピューティングデバイスに、コンピューティングデバイス上のプロセッサに関する情報に対するアプリケーションからの呼び出しに、前記アプリケーションが新デバイスのために書かれたものと識別した情報を前記アプリケーションに基づいて報告することが行われない場合に前記コンピューティングデバイス上の前記プロセッサとは異なるプロセッサに関する情報を返すことによって応答させるように構成された実行可能命令を内部に具現化して有する、非一時的なコンピュータ可読媒体。
【請求項２６】
前記異なるプロセッサに関する前記情報が、前記コンピューティングデバイス上の前記プロセッサの特定の機能を、前記コンピューティングデバイスによって実際にサポートされているものとは異なる、と識別する、請求項２５に記載の非一時的なコンピュータ可読媒体。
【請求項２７】
前記異なるプロセッサに関する前記情報が、前記コンピューティングデバイス上の前記プロセッサの特定の機能を、実際に前記特定の機能が前記コンピューティングデバイス上の前記プロセッサによってサポートされている時に、前記コンピューティングデバイス上の前記プロセッサによってまったくサポートされていない、と識別する、請求項２５に記載の非一時的なコンピュータ可読媒体。
【請求項２８】
前記異なるプロセッサに関する前記情報が、レガシーデバイス上のプロセッサを識別する、請求項２５に記載の非一時的なコンピュータ可読媒体。
【請求項２９】
前記異なるプロセッサに関する前記情報を返すことが、前記コンピューティングデバイス上の前記プロセッサのアーキテクチャによってサポートされているオペコードの使用を含む、請求項２５に記載の非一時的なコンピュータ可読媒体。
【請求項３０】
前記異なるプロセッサに関する前記情報を返すことが、ｘ８６アーキテクチャによってサポートされているオペコードの使用を含む、請求項２５に記載の非一時的なコンピュータ可読媒体。
【請求項３１】
前記異なるプロセッサに関する前記情報を返すことが、ＣＰＵＩＤ命令の使用を含む、請求項２５に記載の非一時的なコンピュータ可読媒体。
【請求項３２】
前記異なるプロセッサに関する前記情報を返すことが、前記コンピューティングデバイス上の前記プロセッサに関連付けられたＲＯＭまたはＲＡＭに格納されたマイクロコードの使用を含む、請求項２５に記載の非一時的なコンピュータ可読媒体。
【請求項３３】
前記コンピューティングデバイスは、前記プロセッサに関連付けられたＲＯＭまたはＲＡＭを有するものであり、
前記ＲＯＭまたはＲＡＭは、マイクロコードと、プロセッサＩＤデータの互いに異なる２つのセットを格納するものであり、
前記プロセッサＩＤデータの第１のセットは、新デバイスアプリケーションのためのものであり、
前記プロセッサＩＤデータの第２のセットは、レガシーデバイスアプリケーションのためのものであり、
前記異なるプロセッサに関する前記情報を返すことが、前記マイクロコードと、前記プロセッサＩＤデータの第２のセットを使用することを含む、請求項２５に記載の非一時的なコンピュータ可読媒体。
【請求項３４】
前記コンピューティングデバイスは、前記プロセッサに関連付けられたＲＯＭまたはＲＡＭを有するものであり、
前記ＲＯＭまたはＲＡＭは、マイクロコードを格納するものであり、
前記マイクロコードを実行することにより実装される論理は、前記呼び出しの元となるアプリケーションが新デバイスアプリケーションであるか、または、レガシーデバイスアプリケーションであるかにより、いくつかの詳細において異なるような、プロセッサＩＤデータを返すものであり、
前記異なるプロセッサに関する前記情報を返すことが、前記呼び出しの元となるアプリケーションがレガシーデバイスアプリケーションである場合に、前記マイクロコードを実行することにより、プロセッサＩＤデータを返すことを含む、請求項２５に記載の非一時的なコンピュータ可読媒体。
【請求項３５】
前記コンピューティングデバイスは、レガシーデバイスアプリケーションのための１つのＩＤプログラムと新デバイスアプリケーションのための別のＩＤプログラムを有するものであり、
前記異なるプロセッサに関する前記情報を返すことが、レガシーデバイスアプリケーションのための１つのＩＤプログラムを使用することを含む、請求項２５に記載の非一時的なコンピュータ可読媒体。
【請求項３６】
前記異なるプロセッサに関する前記情報を返すことが、専用ハードウェアの使用を含む、請求項２５に記載の非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権の主張
本出願は、２０１６年１月２２日に出願された、同一出願人の、米国仮出願番号第６２／２８６，２８０号の優先権の利益を主張し、その内容全体が参照により本明細書に組み込まれる。
【背景技術】
【０００２】
コンピュータシステムの新しいバージョン（「新デバイス」）がリリースされる時には、以前のバージョンのシステム（「レガシーデバイス」）のために書かれたアプリケーションが、新デバイス上で完璧に動くことが望ましい。この能力は、しばしば、「レガシーアプリケーション」に対する後方互換性と呼ばれる。新デバイスが、レガシーデバイスのために作られたレガシーアプリケーションを実行することができたとしても、新デバイスは、それでも、それらのアプリケーションを実行した時に後方互換できないかもしれない。新デバイスとレガシーデバイスとのハードウェア構成要素の性能の違いが、新デバイスでの同期エラーの原因となることがある。そのような性能の違いは、たとえば、レガシーデバイスに対する新デバイスの中央処理装置（ＣＰＵ）の能力の違いから起こることがある。たとえば、新デバイスのＣＰＵがレガシーデバイスのＣＰＵよりも早い場合、新デバイスの別の構成要素によってまだ使用されているデータを、ＣＰＵが時期尚早に上書きする場合がある。
【発明の概要】
【０００３】
先行技術に関連した弱点は、コンピューティングデバイスが、コンピューティングデバイス上のプロセッサに関する情報に対するアプリケーションからの呼び出しに、コンピューティングデバイス上のプロセッサとは異なるプロセッサに関する情報を返すことによって、応答する方法に関連した本開示の態様によって克服される。
【０００４】
本開示の教示は、以下の詳細な説明を、添付図面と併せて考慮することによって、容易に理解することができる。
【図面の簡単な説明】
【０００５】
【図１】本開示の態様による、後方互換性を実装するための方法を示したフロー図である。
【図２】図１の方法を実行するための実行可能ソフトウェアをリードオンリーメモリ（ＲＯＭ）に実装した中央処理装置（ＣＰＵ）を図示したブロック図である。
【図３】図２に示した種類のＣＰＵを含むデバイスのブロック図である。
【発明を実施するための形態】
【０００６】
以下の詳細な説明は、説明目的のための多くの具体的な詳細を含んでいるが、当業者の誰もが、以下の詳細の多くの変形物と変化物とが本特許請求の発明の範囲に含まれることを理解する。したがって、以下で説明する本発明の例示的な実施形態は、特許請求の発明に対して、一般性を失わずに、制限を課さずに、記載される。
【０００７】
導入
レガシーデバイスに対するＣＰＵの動作の違いから起こる問題に対応するために、新デバイスは、レガシーアプリケーションを実行する時に、レガシーデバイスＣＰＵの特定の能力を模倣する場合がある。レガシーデバイスを模倣する能力の重要な機能は、レガシーアプリケーションがあたかもレガシーデバイス上で動いているかのように動作するよう、レガシーアプリケーションをだますことである。多くのアプリケーションが異なるプロセッサ上で実行されるように設計されているため、現代のプロセッサは、しばしば、ソフトウェアアプリケーションがプロセッサの詳細を発見することを可能にするオペコードまたはレジスタを実装している。後方互換性を容易にするために、新デバイス上のプロセッサは、異なるプロセッサの情報が、レガシーアプリケーションからの呼び出しに応答して返されるような方法で、オペコードを実行することができる、またはレジスタ値を提供することができる。異なる情報は、本明細書では、「なりすましプロセッサＩＤ」と呼ばれる。なりすましプロセッサＩＤは、新デバイスの特定の機能を、実際にサポートされているものとは異なる、または実際にサポートされている時にはまったくサポートされていない、のいずれかに選択的に識別する。
【０００８】
方法
図１に示すフロー図で図示する方法１００は、これがどのように行われるかの一実施例を示している。具体的には、１０２で示す通り、デバイス上で動いている要求アプリケーション１０１が、プロセッサＩＤを、アプリケーションを実行しているプロセッサに要求する。１０４において、プロセッサは、要求アプリケーション１０１がレガシーアプリケーションであるかどうか、つまり、もともと以前のバージョンのデバイスのために書かれたものかどうかを判断する。アプリケーションが新デバイスのためまたはレガシーデバイスのために書かれたかどうかをプロセッサが判断することができる、多くの方法がある。１つの方法は、新デバイスのために書かれたすべてのアプリケーションが、ロードした際に、アプリケーションが新デバイスのために書かれたものと識別した情報を、プロセッサに報告するかどうかである。そのような情報が報告されることは、アプリケーションが新デバイスのために書かれたとして識別し、そのような情報が報告されないことは、アプリケーションをレガシーアプリケーションとして識別する。
【０００９】
プロセッサによって要求アプリケーション１０１に戻される情報は、アプリケーション１０１がレガシーアプリケーションであるかどうか、または新しいアプリケーションかどうか、つまり、デバイス上で動くように書かれたものかどうかに基づいて変化する。要求アプリケーション１０１が新しいアプリケーションである場合、プロセッサは、１０６で示す通り、真のプロセッサ情報、たとえば、アプリケーションを実行しているデバイス上のプロセッサに対する正しいプロセッサＩＤ１０３を返す。要求アプリケーション１０１がレガシーアプリケーションである場合、プロセッサは、１０８で示す通り、なりすましプロセッサ情報、たとえば、なりすましプロセッサＩＤ１０５を返す。返された情報は、実際はプロセッサによってサポートされている特定の機能がサポートされていないと識別し、またはアプリケーションを実行しているプロセッサがレガシープロセッサであると特定し得る。
【００１０】
限定としてではなく一例として、なりすましプロセッサＩＤ１０５を、ｘ８６アーキテクチャによってサポートされているオペコードである、変更ＣＰＵＩＤ命令によって返し得る。ＣＰＵＩＤオペコードを使用することによって、ソフトウェアは、プロセッサの種類と、さまざまなＳＳＥ命令セットアーキテクチャの実装などの機能の存在とを判断することができる。ｘ８６アーキテクチャでは、ＣＰＵＩＤオペコードは、０ＦｈとＡ２ｈとのバイトであり、ＥＡＸレジスタ内の、いくつかの場合ではＥＣＸレジスタ内の値が、どの情報を返すかを指定する。
【００１１】
アセンブリ言語では、ＣＰＵＩＤ命令はパラメータを使用せず、代わりに、黙示的にＥＡＸレジスタを使用して、一般的にＣＰＵＩＤリーフと呼ばれる、返される情報の主要カテゴリを判断する。ＣＰＵＩＤをＥＡＸ＝０を用いて呼び出すアプリケーションは、ＥＡＸレジスタにおいて、返答として、ＣＰＵがサポートする最大ＥＡＸ呼び出しパラメータ（リーフ）を受け取り、他のレジスタは、ＣＰＵの製造業者を特定するベンダーＩＤを含む。拡張機能情報を取得するために、ＣＰＵＩＤを、ＥＡＸセットのうちの最上位ビットを用いて呼び出してもよい。パラメータを呼び出している最大拡張機能を判断するために、ＣＰＵＩＤを、ＥＡＸ＝８０００００００ｈを用いて呼び出してもよい。リーフは、また、サブリーフを有し、それらは、ＣＰＵＩＤを呼び出す前に、ＥＣＸレジスタを介して選択される。
【００１２】
ＣＰＵＩＤをＥＡＸ＝１を用いて呼び出すと、ＣＰＵのステッピングモデルとモデルとの情報とファミリー情報とをＥＡＸに（ＣＰＵのシグネチャとも呼ばれる）、機能フラグをＥＤＸとＥＣＸとに、追加機能情報をＥＢＸに、返す。ＣＰＵＩＤをＥＡＸ＝２を用いて呼び出すと、キャッシュと変換索引バッファ（ＴＬＢ）との能力を示した記述子のリストを、ＥＡＸレジスタとＥＢＸレジスタとＥＣＸレジスタとＥＤＸレジスタとに返す。他のＥＡＸ値は、プロセッサのシリアル番号、スレッド／コア及びキャッシュトポロジー、拡張機能、プロセッサブランド、Ｌ１キャッシュ及びＴＬＢ識別子、拡張Ｌ２キャッシュ機能、消費電力管理機能識別子、及び仮想アドレスサイズ及び物理アドレスサイズ、などの情報を返す。図１に示した種類のプログラムは、レガシーアプリケーションによって問い合わされた場合、それらのうちの任意またはすべての正しい値に対して異なる値を返してもよい。
【００１３】
ＣＰＵ
図１に示すプロセッサＩＤなりすまし能力を、新デバイス上で、多くの異なる方法で実装することができる。たとえば、新デバイスは、レガシーアプリケーションからの問い合わせに応答して、なりすましプロセッサＩＤ情報を返す特別なマイクロコードを、ＲＯＭまたはＲＡＭ内に含んでもよい。図２は、マイクロコードがＣＰＵコア２０２の一部であるＲＯＭ内に実装されている、ＣＰＵ２００の１つの可能な実装形態を示している。ＣＰＵは、１つまたは複数のそのようなコアを含んでもよい。ＣＰＵコア２０２は、共通のレベル２キャッシュ２０４とバスインターフェース２０６とを共有してもよい。各コア２０２は、命令をロードし、格納し、スケジュールし、復号し、実行するための論理ユニット２０８を、レジスタ２１０、キャッシュ２１２、及び命令とデータとのための変換索引バッファ（ＴＬＢ）２１４と、共に含んでもよい。
【００１４】
図２に示す特定の実施態様では、ＣＰＵＩＤ命令は、プロセッサＩＤプログラムと２つの異なるセットのプロセッサＩＤデータとを含むＲＯＭ２１８に格納されたマイクロコード２１６によって実装されている。データの１つのセット（ＩＤ１）は、新デバイスアプリケーションのためであり、他方のセット（ＩＤ２）は、レガシーデバイスアプリケーションのためである。
【００１５】
代替的な実施態様では、２つの異なるプロセッサＩＤプログラムがあり得、１つはレガシーアプリケーションのためであり、１つは新デバイスアプリケーションのためである。そのような実施態様では、ＣＰＵ２００は、ＣＰＵＩＤ命令を実行する時に、それが実行しているアプリケーションがレガシーアプリケーションまたは新デバイスアプリケーションかにより、１つのプログラムまたは他方を選択的に実行してもよい。他の代替的な実施態様では、プロセッサＩＤプログラムを、特別な専用ハードウェアによって実装してもよく、たとえば、プロセッサＩＤ情報を返すことの特定の態様を、ＲＯＭ２１８に格納されたマイクロコードではなく、ハードウェア論理によって実装してもよい。他の代替的な実施態様では、マイクロコードを、ＲＯＭではなく、ランダムアクセスメモリ（ＲＡＭ）に格納してもよい。
【００１６】
システム
図２に示した種類のＣＰＵを、新デバイスに組み込んでもよい。図３で見られる通り、新デバイス３００は、複数のコア２０２を有するＣＰＵ２００と、複数の計算ユニット（ＣＵ）３０４を有するＧＰＵ３０２とを含んでもよい。ＣＰＵ及びＧＰＵは、互いと、またメモリ及びＩ／Ｏコントローラ３１０と、Ｌ２キャッシュ２０４、３０４と、バスインターフェース２０６、３０６、及びフロントサイドバス３０８とを介して通信してもよい。メモリ及びＩ／Ｏコントローラ３１０は、ＣＰＵ２００と、ＧＰＵ３０２と、メモリ３１２（たとえば、ＲＡＭ）と、ストレージデバイス３１４（たとえば、ディスクドライブまたはフラッシュメモリ）と、ビデオカード３１６と、周辺機器３１８と、ネットワーク３２０と、への及びそれらからのデータ転送を、適切に構成されたバス３２２を介して管理する。
【００１７】
デバイス３００は、アプリケーション１０１を、その命令をＣＰＵ２００とＧＰＵ３０２とで実行することによって実行する。アプリケーション１０１の一部を、メモリ３１２にロードしてもよい。１つの特定の実施態様では、ＣＰＵＩＤ命令は、たとえば、図２に関して上記で説明した通り、プロセッサＩＤプログラムと２つの異なるセットのプロセッサＩＤデータとを含むマイクロコードによって実装される。
【００１８】
上述した通り、代替的な実施態様では、２つの異なるプロセッサＩＤプログラムがある場合があり、１つはレガシーアプリケーションのため、１つは新デバイスアプリケーションのためである。そのような実施態様では、ＣＰＵ２００は、ＣＰＵＩＤ命令を実行する時に、それが実行しているアプリケーションがレガシーアプリケーションまたは新デバイスアプリケーションかにより、１つのプログラムまたは他方を選択的に実行してもよい。他の代替的な実施態様では、シングルプロセッサＩＤプログラムは、問い合わせをしているプログラムがレガシーアプリケーションまたは新デバイスアプリケーションかにより、いくつかの詳細において異なるプロセッサＩＤデータを返してもよい。他の代替的な実施態様では、プロセッサＩＤコード２１６を、特別な専用ハードウェアによって実装してもよく、たとえば、プロセッサＩＤ情報を返すことの特定の態様を、ＣＰＵコア２０２のＲＯＭ２１８に格納されたマイクロコードではなく、ハードウェア論理によって実装してもよい。他の代替的な実施態様では、マイクロコードを、ランダムアクセスメモリ（ＲＡＭ）、たとえばＲＯＭ内ではなくメインメモリ３１２内に格納してもよい。
【００１９】
なりすましプロセッサ機能情報を返すことは、サポートされていたとしても、レガシーアプリケーションがそれらを使用しようと試みた場合にタイミング問題を引き起こすかもしれない機能をアプリケーションが利用することを防ぐことによって、後方互換性問題の解決を容易にすることができる。
【００２０】
上記が本発明の好適な実施形態の完全な説明であるが、さまざまな代替物と変更物と同等物とを使用することが可能である。したがって、本発明の範囲は、上記の説明を参照して決定されるべきでなく、代わりに、添付の特許請求の範囲を、それらの同等物の全範囲と共に参照して決定すべきである。好適であろうとなかろうと、任意の特徴を、好適であろうとなかろうと、任意の他の特徴と、組み合わせてもよい。後続の特許請求の範囲では、不定冠詞「Ａ」または「Ａｎ」は、特段に明示的に述べない限り、冠詞の後の項目の１つまたは複数の数を述べている。添付の特許請求の範囲は、ミーンズプラスファンクションの限定を含むとして解釈されるものでないが、そのような限定が、「ための手段」という言葉を使用した所与の請求項において明示的に列挙されている場合はその限りでない。具体的な機能を実行する「ための手段」を明示的に述べない請求項内の任意の要素は、３５ＵＳＣ§１１２（ｆ）に述べる「手段」条項または「ステップ」条項として解釈されるものでない。
【図１】
0006788017.tif 000002
【図２】
0006788017.tif 000003
【図３】
0006788017.tif 000004