特許第6960511号(P6960511)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社ソニー・コンピュータエンタテインメントの特許一覧

特許6960511後方互換性のためのなりすましCPUID
<>
  • 特許6960511-後方互換性のためのなりすましCPUID 図000002
  • 特許6960511-後方互換性のためのなりすましCPUID 図000003
  • 特許6960511-後方互換性のためのなりすましCPUID 図000004
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6960511
(24)【登録日】2021年10月13日
(45)【発行日】2021年11月5日
(54)【発明の名称】後方互換性のためのなりすましCPUID
(51)【国際特許分類】
   G06F 9/30 20180101AFI20211025BHJP
   G06F 9/34 20060101ALI20211025BHJP
   G06F 15/78 20060101ALI20211025BHJP
   G06F 9/38 20060101ALI20211025BHJP
【FI】
   G06F9/30 350A
   G06F9/34 330
   G06F15/78 515
   G06F9/38 370C
【請求項の数】21
【全頁数】9
(21)【出願番号】特願2020-181308(P2020-181308)
(22)【出願日】2020年10月29日
(62)【分割の表示】特願2018-538543(P2018-538543)の分割
【原出願日】2017年1月20日
(65)【公開番号】特開2021-22399(P2021-22399A)
(43)【公開日】2021年2月18日
【審査請求日】2020年11月30日
(31)【優先権主張番号】62/286,280
(32)【優先日】2016年1月22日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】310021766
【氏名又は名称】株式会社ソニー・インタラクティブエンタテインメント
(74)【代理人】
【識別番号】100105924
【弁理士】
【氏名又は名称】森下 賢樹
(72)【発明者】
【氏名】サーニー、マーク エヴァン
(72)【発明者】
【氏名】ピルグリム、シモン
【審査官】 井上 宏一
(56)【参考文献】
【文献】 国際公開第2015/083282(WO,A1)
【文献】 国際公開第2015/001615(WO,A1)
【文献】 米国特許出願公開第2011/0231839(US,A1)
【文献】 特開2008−171428(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/30
G06F 9/34
G06F 9/38
G06F 15/78
(57)【特許請求の範囲】
【請求項1】
複数のプロセッサを備えるコンピューティングデバイスであって、
前記複数のプロセッサは、前記コンピューティングデバイス上の特定のプロセッサに関する情報に対するアプリケーションからの呼び出しに、前記アプリケーションが新デバイスのために書かれたものと識別した情報を前記アプリケーションに基づいて報告することが行われない場合に前記コンピューティングデバイス上の前記特定のプロセッサとは異なるプロセッサに関する情報を返すことによって応答するように構成されたプロセッサを含む、コンピューティングデバイス。
【請求項2】
前記異なるプロセッサに関する前記情報が、前記コンピューティングデバイス上の前記特定のプロセッサの特定の機能を、前記コンピューティングデバイスによって実際にサポートされているものとは異なる、と識別する、請求項1に記載のコンピューティングデバイス。
【請求項3】
前記異なるプロセッサに関する前記情報が、前記コンピューティングデバイス上の前記特定のプロセッサの特定の機能を、実際に前記特定の機能が前記コンピューティングデバイス上の前記プロセッサによってサポートされている時に、前記コンピューティングデバイス上の前記プロセッサによってまったくサポートされていない、と識別する、請求項1に記載のコンピューティングデバイス。
【請求項4】
前記複数のプロセッサは、複数のコアを有する中央処理装置(CPU)を含み、前記コンピューティングデバイス上の前記特定のプロセッサは、前記CPUの特定のコアである、請求項1に記載のコンピューティングデバイス。
【請求項5】
前記複数のプロセッサは、キャッシュおよびバスインターフェースに結合された複数のコアを有する中央処理装置(CPU)を含む、請求項1に記載のコンピューティングデバイス。
【請求項6】
前記複数のプロセッサは、キャッシュおよびバスインターフェースに結合された複数の計算ユニットを有するグラフィックス処理装置(GPU)を含む、請求項1に記載のコンピューティングデバイス。
【請求項7】
前記複数のプロセッサは、複数の計算ユニットを有するグラフィックス処理装置(GPU)を含み、前記コンピューティングデバイス上の前記特定のプロセッサは、前記GPUの特定の計算ユニットである、請求項1に記載のコンピューティングデバイス。
【請求項8】
前記複数のプロセッサは、中央処理装置(CPU)およびグラフィックス処理装置(GPU)を含み、前記コンピューティングデバイス上の前記特定のプロセッサは、前記CPUである、請求項1に記載のコンピューティングデバイス。
【請求項9】
前記複数のプロセッサは、中央処理装置(CPU)およびグラフィックス処理装置(GPU)を含み、前記コンピューティングデバイス上の前記特定のプロセッサは、前記GPUである、請求項1に記載のコンピューティングデバイス。
【請求項10】
前記複数のプロセッサは、中央処理装置(CPU)およびグラフィックス処理装置(GPU)を含む、請求項1に記載のコンピューティングデバイス。
【請求項11】
前記複数のプロセッサは、中央処理装置(CPU)、およびデータバスを介して前記CPUに結合されたグラフィックス処理装置(GPU)を含む、請求項1に記載のコンピューティングデバイス。
【請求項12】
前記複数のプロセッサに結合されたメモリをさらに含む、請求項1に記載のコンピューティングデバイス。
【請求項13】
前記異なるプロセッサに関する前記情報が、レガシーデバイス上のプロセッサを識別する、請求項1に記載のコンピューティングデバイス。
【請求項14】
前記異なるプロセッサに関する前記情報を返すことが、前記コンピューティングデバイス上の前記プロセッサのアーキテクチャによってサポートされているオペコードの使用を含む、請求項1に記載のコンピューティングデバイス。
【請求項15】
前記異なるプロセッサに関する前記情報を返すことが、x86アーキテクチャによってサポートされているオペコードの使用を含む、請求項1に記載のコンピューティングデバイス。
【請求項16】
前記異なるプロセッサに関する前記情報を返すことが、CPUID命令の使用を含む、請求項1に記載のコンピューティングデバイス。
【請求項17】
前記コンピューティングデバイス上の前記プロセッサに関連付けられたROMまたはRAMをさらに備え、前記異なるプロセッサに関する前記情報を返すことが、前記コンピューティングデバイス上の前記プロセッサに関連付けられた前記ROMまたはRAMに格納されたマイクロコードの使用を含む、請求項1に記載のコンピューティングデバイス。
【請求項18】
前記コンピューティングデバイスは、前記プロセッサに関連付けられたROMまたはRAMを有するものであり、
前記ROMまたはRAMは、マイクロコードと、プロセッサIDデータの互いに異なる2つのセットを格納するものであり、
前記プロセッサIDデータの第1のセットは、新デバイスアプリケーションのためのものであり、
前記プロセッサIDデータの第2のセットは、レガシーデバイスアプリケーションのためのものであり、
前記異なるプロセッサに関する前記情報を返すことが、前記マイクロコードと、前記プロセッサIDデータの第2のセットを使用することを含む、請求項1に記載のコンピューティングデバイス。
【請求項19】
前記コンピューティングデバイスは、前記プロセッサに関連付けられたROMまたはRAMを有するものであり、
前記ROMまたはRAMは、マイクロコードを格納するものであり、
前記マイクロコードを実行することにより実装される論理は、前記呼び出しの元となるアプリケーションが新デバイスアプリケーションであるか、または、レガシーデバイスアプリケーションであるかにより、いくつかの詳細において異なるような、プロセッサIDデータを返すものであり、
前記異なるプロセッサに関する前記情報を返すことが、前記呼び出しの元となるアプリケーションがレガシーデバイスアプリケーションである場合に、前記マイクロコードを実行することにより、プロセッサIDデータを返すことを含む、請求項1に記載のコンピューティングデバイス。
【請求項20】
前記コンピューティングデバイスは、レガシーデバイスアプリケーションのための1つのIDプログラムと新デバイスアプリケーションのための別のIDプログラムを有するものであり、
前記異なるプロセッサに関する前記情報を返すことが、レガシーデバイスアプリケーションのための1つのIDプログラムを使用することを含む、請求項1に記載のコンピューティングデバイス。
【請求項21】
前記異なるプロセッサに関する前記情報を返すように構成された専用ハードウェアをさらに備える、請求項1に記載のコンピューティングデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
優先権の主張
本出願は、2016年1月22日に出願された、同一出願人の、米国仮出願番号第62/286,280号の優先権の利益を主張し、その内容全体が参照により本明細書に組み込まれる。
【背景技術】
【0002】
コンピュータシステムの新しいバージョン(「新デバイス」)がリリースされる時には、以前のバージョンのシステム(「レガシーデバイス」)のために書かれたアプリケーションが、新デバイス上で完璧に動くことが望ましい。この能力は、しばしば、「レガシーアプリケーション」に対する後方互換性と呼ばれる。新デバイスが、レガシーデバイスのために作られたレガシーアプリケーションを実行することができたとしても、新デバイスは、それでも、それらのアプリケーションを実行した時に後方互換できないかもしれない。新デバイスとレガシーデバイスとのハードウェア構成要素の性能の違いが、新デバイスでの同期エラーの原因となることがある。そのような性能の違いは、たとえば、レガシーデバイスに対する新デバイスの中央処理装置(CPU)の能力の違いから起こることがある。たとえば、新デバイスのCPUがレガシーデバイスのCPUよりも早い場合、新デバイスの別の構成要素によってまだ使用されているデータを、CPUが時期尚早に上書きする場合がある。
【発明の概要】
【0003】
先行技術に関連した弱点は、コンピューティングデバイスが、コンピューティングデバイス上のプロセッサに関する情報に対するアプリケーションからの呼び出しに、コンピューティングデバイス上のプロセッサとは異なるプロセッサに関する情報を返すことによって、応答する方法に関連した本開示の態様によって克服される。
【0004】
本開示の教示は、以下の詳細な説明を、添付図面と併せて考慮することによって、容易に理解することができる。
【図面の簡単な説明】
【0005】
図1】本開示の態様による、後方互換性を実装するための方法を示したフロー図である。
図2図1の方法を実行するための実行可能ソフトウェアをリードオンリーメモリ(ROM)に実装した中央処理装置(CPU)を図示したブロック図である。
図3図2に示した種類のCPUを含むデバイスのブロック図である。
【発明を実施するための形態】
【0006】
以下の詳細な説明は、説明目的のための多くの具体的な詳細を含んでいるが、当業者の誰もが、以下の詳細の多くの変形物と変化物とが本特許請求の発明の範囲に含まれることを理解する。したがって、以下で説明する本発明の例示的な実施形態は、特許請求の発明に対して、一般性を失わずに、制限を課さずに、記載される。
【0007】
導入
レガシーデバイスに対するCPUの動作の違いから起こる問題に対応するために、新デバイスは、レガシーアプリケーションを実行する時に、レガシーデバイスCPUの特定の能力を模倣する場合がある。レガシーデバイスを模倣する能力の重要な機能は、レガシーアプリケーションがあたかもレガシーデバイス上で動いているかのように動作するよう、レガシーアプリケーションをだますことである。多くのアプリケーションが異なるプロセッサ上で実行されるように設計されているため、現代のプロセッサは、しばしば、ソフトウェアアプリケーションがプロセッサの詳細を発見することを可能にするオペコードまたはレジスタを実装している。後方互換性を容易にするために、新デバイス上のプロセッサは、異なるプロセッサの情報が、レガシーアプリケーションからの呼び出しに応答して返されるような方法で、オペコードを実行することができる、またはレジスタ値を提供することができる。異なる情報は、本明細書では、「なりすましプロセッサID」と呼ばれる。なりすましプロセッサIDは、新デバイスの特定の機能を、実際にサポートされているものとは異なる、または実際にサポートされている時にはまったくサポートされていない、のいずれかに選択的に識別する。
【0008】
方法
図1に示すフロー図で図示する方法100は、これがどのように行われるかの一実施例を示している。具体的には、102で示す通り、デバイス上で動いている要求アプリケーション101が、プロセッサIDを、アプリケーションを実行しているプロセッサに要求する。104において、プロセッサは、要求アプリケーション101がレガシーアプリケーションであるかどうか、つまり、もともと以前のバージョンのデバイスのために書かれたものかどうかを判断する。アプリケーションが新デバイスのためまたはレガシーデバイスのために書かれたかどうかをプロセッサが判断することができる、多くの方法がある。1つの方法は、新デバイスのために書かれたすべてのアプリケーションが、ロードした際に、アプリケーションが新デバイスのために書かれたものと識別した情報を、プロセッサに報告するかどうかである。そのような情報が報告されることは、アプリケーションが新デバイスのために書かれたとして識別し、そのような情報が報告されないことは、アプリケーションをレガシーアプリケーションとして識別する。
【0009】
プロセッサによって要求アプリケーション101に戻される情報は、アプリケーション101がレガシーアプリケーションであるかどうか、または新しいアプリケーションかどうか、つまり、デバイス上で動くように書かれたものかどうかに基づいて変化する。要求アプリケーション101が新しいアプリケーションである場合、プロセッサは、106で示す通り、真のプロセッサ情報、たとえば、アプリケーションを実行しているデバイス上のプロセッサに対する正しいプロセッサID103を返す。要求アプリケーション101がレガシーアプリケーションである場合、プロセッサは、108で示す通り、なりすましプロセッサ情報、たとえば、なりすましプロセッサID105を返す。返された情報は、実際はプロセッサによってサポートされている特定の機能がサポートされていないと識別し、またはアプリケーションを実行しているプロセッサがレガシープロセッサであると特定し得る。
【0010】
限定としてではなく一例として、なりすましプロセッサID105を、x86アーキテクチャによってサポートされているオペコードである、変更CPUID命令によって返し得る。CPUIDオペコードを使用することによって、ソフトウェアは、プロセッサの種類と、さまざまなSSE命令セットアーキテクチャの実装などの機能の存在とを判断することができる。x86アーキテクチャでは、CPUIDオペコードは、0FhとA2hとのバイトであり、EAXレジスタ内の、いくつかの場合ではECXレジスタ内の値が、どの情報を返すかを指定する。
【0011】
アセンブリ言語では、CPUID命令はパラメータを使用せず、代わりに、黙示的にEAXレジスタを使用して、一般的にCPUIDリーフと呼ばれる、返される情報の主要カテゴリを判断する。CPUIDをEAX=0を用いて呼び出すアプリケーションは、EAXレジスタにおいて、返答として、CPUがサポートする最大EAX呼び出しパラメータ(リーフ)を受け取り、他のレジスタは、CPUの製造業者を特定するベンダーIDを含む。拡張機能情報を取得するために、CPUIDを、EAXセットのうちの最上位ビットを用いて呼び出してもよい。パラメータを呼び出している最大拡張機能を判断するために、CPUIDを、EAX=80000000hを用いて呼び出してもよい。リーフは、また、サブリーフを有し、それらは、CPUIDを呼び出す前に、ECXレジスタを介して選択される。
【0012】
CPUIDをEAX=1を用いて呼び出すと、CPUのステッピングモデルとモデルとの情報とファミリー情報とをEAXに(CPUのシグネチャとも呼ばれる)、機能フラグをEDXとECXとに、追加機能情報をEBXに、返す。CPUIDをEAX=2を用いて呼び出すと、キャッシュと変換索引バッファ(TLB)との能力を示した記述子のリストを、EAXレジスタとEBXレジスタとECXレジスタとEDXレジスタとに返す。他のEAX値は、プロセッサのシリアル番号、スレッド/コア及びキャッシュトポロジー、拡張機能、プロセッサブランド、L1キャッシュ及びTLB識別子、拡張L2キャッシュ機能、消費電力管理機能識別子、及び仮想アドレスサイズ及び物理アドレスサイズ、などの情報を返す。図1に示した種類のプログラムは、レガシーアプリケーションによって問い合わされた場合、それらのうちの任意またはすべての正しい値に対して異なる値を返してもよい。
【0013】
CPU
図1に示すプロセッサIDなりすまし能力を、新デバイス上で、多くの異なる方法で実装することができる。たとえば、新デバイスは、レガシーアプリケーションからの問い合わせに応答して、なりすましプロセッサID情報を返す特別なマイクロコードを、ROMまたはRAM内に含んでもよい。図2は、マイクロコードがCPUコア202の一部であるROM内に実装されている、CPU200の1つの可能な実装形態を示している。CPUは、1つまたは複数のそのようなコアを含んでもよい。CPUコア202は、共通のレベル2キャッシュ204とバスインターフェース206とを共有してもよい。各コア202は、命令をロードし、格納し、スケジュールし、復号し、実行するための論理ユニット208を、レジスタ210、キャッシュ212、及び命令とデータとのための変換索引バッファ(TLB)214と、共に含んでもよい。
【0014】
図2に示す特定の実施態様では、CPUID命令は、プロセッサIDプログラムと2つの異なるセットのプロセッサIDデータとを含むROM218に格納されたマイクロコード216によって実装されている。データの1つのセット(ID1)は、新デバイスアプリケーションのためであり、他方のセット(ID2)は、レガシーデバイスアプリケーションのためである。
【0015】
代替的な実施態様では、2つの異なるプロセッサIDプログラムがあり得、1つはレガシーアプリケーションのためであり、1つは新デバイスアプリケーションのためである。そのような実施態様では、CPU200は、CPUID命令を実行する時に、それが実行しているアプリケーションがレガシーアプリケーションまたは新デバイスアプリケーションかにより、1つのプログラムまたは他方を選択的に実行してもよい。他の代替的な実施態様では、プロセッサIDプログラムを、特別な専用ハードウェアによって実装してもよく、たとえば、プロセッサID情報を返すことの特定の態様を、ROM218に格納されたマイクロコードではなく、ハードウェア論理によって実装してもよい。他の代替的な実施態様では、マイクロコードを、ROMではなく、ランダムアクセスメモリ(RAM)に格納してもよい。
【0016】
システム
図2に示した種類のCPUを、新デバイスに組み込んでもよい。図3で見られる通り、新デバイス300は、複数のコア202を有するCPU200と、複数の計算ユニット(CU)304を有するGPU302とを含んでもよい。CPU及びGPUは、互いと、またメモリ及びI/Oコントローラ310と、L2キャッシュ204、304と、バスインターフェース206、306、及びフロントサイドバス308とを介して通信してもよい。メモリ及びI/Oコントローラ310は、CPU200と、GPU302と、メモリ312(たとえば、RAM)と、ストレージデバイス314(たとえば、ディスクドライブまたはフラッシュメモリ)と、ビデオカード316と、周辺機器318と、ネットワーク320と、への及びそれらからのデータ転送を、適切に構成されたバス322を介して管理する。
【0017】
デバイス300は、アプリケーション101を、その命令をCPU200とGPU302とで実行することによって実行する。アプリケーション101の一部を、メモリ312にロードしてもよい。1つの特定の実施態様では、CPUID命令は、たとえば、図2に関して上記で説明した通り、プロセッサIDプログラムと2つの異なるセットのプロセッサIDデータとを含むマイクロコードによって実装される。
【0018】
上述した通り、代替的な実施態様では、2つの異なるプロセッサIDプログラムがある場合があり、1つはレガシーアプリケーションのため、1つは新デバイスアプリケーションのためである。そのような実施態様では、CPU200は、CPUID命令を実行する時に、それが実行しているアプリケーションがレガシーアプリケーションまたは新デバイスアプリケーションかにより、1つのプログラムまたは他方を選択的に実行してもよい。他の代替的な実施態様では、シングルプロセッサIDプログラムは、問い合わせをしているプログラムがレガシーアプリケーションまたは新デバイスアプリケーションかにより、いくつかの詳細において異なるプロセッサIDデータを返してもよい。他の代替的な実施態様では、プロセッサIDコード216を、特別な専用ハードウェアによって実装してもよく、たとえば、プロセッサID情報を返すことの特定の態様を、CPUコア202のROM218に格納されたマイクロコードではなく、ハードウェア論理によって実装してもよい。他の代替的な実施態様では、マイクロコードを、ランダムアクセスメモリ(RAM)、たとえばROM内ではなくメインメモリ312内に格納してもよい。
【0019】
なりすましプロセッサ機能情報を返すことは、サポートされていたとしても、レガシーアプリケーションがそれらを使用しようと試みた場合にタイミング問題を引き起こすかもしれない機能をアプリケーションが利用することを防ぐことによって、後方互換性問題の解決を容易にすることができる。
【0020】
上記が本発明の好適な実施形態の完全な説明であるが、さまざまな代替物と変更物と同等物とを使用することが可能である。したがって、本発明の範囲は、上記の説明を参照して決定されるべきでなく、代わりに、添付の特許請求の範囲を、それらの同等物の全範囲と共に参照して決定すべきである。好適であろうとなかろうと、任意の特徴を、好適であろうとなかろうと、任意の他の特徴と、組み合わせてもよい。後続の特許請求の範囲では、不定冠詞「A」または「An」は、特段に明示的に述べない限り、冠詞の後の項目の1つまたは複数の数を述べている。添付の特許請求の範囲は、ミーンズプラスファンクションの限定を含むとして解釈されるものでないが、そのような限定が、「ための手段」という言葉を使用した所与の請求項において明示的に列挙されている場合はその限りでない。具体的な機能を実行する「ための手段」を明示的に述べない請求項内の任意の要素は、35USC§112(f)に述べる「手段」条項または「ステップ」条項として解釈されるものでない。
図1
図2
図3