【手続補正書】
【提出日】平成28年2月10日(2016.2.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プログラマブルグラフィックスプロセッサによる実行のための命令が、前記プログラマブルグラフィックスプロセッサおよびプログラマブルプロセッサによってアクセス可能な共有変数データに対するメモリ動作を含むかどうかを決定することと、
前記メモリ動作の後に第１の同期動作および第２の同期動作を含むように前記命令を修正することと、ここにおいて、前記第１および第２の同期動作は、メモリコヒーレンシ動作を各々備え、前記第１の同期動作はストアウィズリリース動作であり、前記第２の同期動作はロードウィズアクワイア動作である、
前記メモリ動作を実行することと、
前記第１の同期動作を実行することと、
前記第２の同期動作を実行することと
を備える、方法。
【請求項２】
前記第１の同期動作を実行することは、
前記プログラマブルグラフィックスプロセッサを用いて、前記共有変数データに関連するキャッシュラインをフラッシュすることと、
任意の前のストアが完了するのを待つことと
をさらに備える、請求項１に記載の方法。
【請求項３】
前記第２の同期動作を実行することは、
前記プログラマブルグラフィックスプロセッサを用いて、前記共有変数データに関連するキャッシュラインを無効にすることと、
前記プログラマブルグラフィックスプロセッサを用いて、前記共有変数データに関連する前記キャッシュラインを充填することと、
前記プログラマブルグラフィックスプロセッサを用いて、前記第２の同期動作が実行を完了するまで、後続の命令が発行されるのを防ぐことと
をさらに備える、請求項１に記載の方法。
【請求項４】
前記プログラマブルグラフィックスプロセッサを用いて、前記プログラマブルプロセッサのキャッシュをスヌープすることと、
前記プログラマブルグラフィックスプロセッサを用いて、前記共有変数データの更新された値に関連するキャッシュヒットを検出することと、
前記プログラマブルグラフィックスプロセッサを用いて、前記共有変数データに関連する前記キャッシュヒットを検出したことに応答して、前記共有変数データの前記更新された値を前記プログラマブルグラフィックスプロセッサのキャッシュに書き込むことと
をさらに備える、請求項３に記載の方法。
【請求項５】
前記第１の同期動作を実行することが、
前記プログラマブルグラフィックスプロセッサの第１のキャッシュよりも高いレベルを有する高レベルキャッシュ、システムメモリ、前記プログラマブルプロセッサのキャッシュ、および前記プログラマブルグラフィックスプロセッサの前記第１のキャッシュのうちの１つに前記共有変数データを書き込むこと
をさらに備える、請求項１に記載の方法。
【請求項６】
前記プログラマブルプロセッサが中央処理ユニット（ＣＰＵ）を備える、請求項１に記載の方法。
【請求項７】
前記プログラマブルプロセッサのすべてのキャッシュラインおよび前記プログラマブルグラフィックスプロセッサのすべてのキャッシュラインが共有され、
前記第１の同期動作を実行することが、前記プログラマブルプロセッサの前記キャッシュラインのすべてをフラッシュすることをさらに備え、
前記第２の同期動作を実行することが、前記プログラマブルグラフィックスプロセッサの前記キャッシュラインのすべてを無効にすることをさらに備える、請求項１に記載の方法。
【請求項８】
前記プログラマブルプロセッサのすべてのキャッシュラインの１サブセットが共有され、前記プログラマブルグラフィックスプロセッサのすべてのキャッシュラインの１サブセットが共有され、
前記第１の同期動作を実行することが、前記プログラマブルプロセッサの前記キャッシュラインの前記共有サブセットのみをフラッシュすることをさらに備え、
前記第２の同期動作を実行することが、前記プログラマブルグラフィックスプロセッサの前記キャッシュラインの前記共有サブセットのみを無効にすることをさらに備える、請求項１に記載の方法。
【請求項９】
前記プログラマブルプロセッサの前記キャッシュラインの前記共有サブセットの少なくとも１つの共有ラインが第１の共有可能性属性によって示され、
前記プログラマブルグラフィックスプロセッサの前記キャッシュラインの前記共有サブセットの各共有ラインが第２の共有可能性属性によって示される、
請求項８に記載の方法。
【請求項１０】
キャッシュフィル動作を実行することと、
前記キャッシュフィル動作を実行したことに応答して、ページテーブルから前記第１の共有可能性属性および前記第２の共有可能性属性のうちの少なくとも１つを読み取ることと
をさらに備える、請求項９に記載の方法。
【請求項１１】
コンパイラが、ロード命令およびストア命令のうちの少なくとも１つを発行することをさらに備え、ここにおいて、前記ロード命令および前記ストア命令のうちの前記少なくとも１つが前記第１の共有可能性属性および前記第２の共有可能性属性のうちの前記少なくとも１つを示す、請求項９に記載の方法。
【請求項１２】
前記ロード命令が共有ロード命令を備え、前記ストア命令が共有ストア命令を備える、請求項１１に記載の方法。
【請求項１３】
前記第１の共有可能性属性および前記第２の共有可能性属性のうちの少なくとも１つを示す複数のアドレスポインタの１つまたは複数のビットを読み取ることをさらに備える、請求項９に記載の方法。
【請求項１４】
前記第１の共有可能性属性および前記第２の共有可能性属性のうちの少なくとも１つは、前記プログラマブルプロセッサに関連するキャッシュおよび前記プログラマブルグラフィックスプロセッサに関連するキャッシュのうちの少なくとも１つが非共有状態にあることを示し、前記方法は、
前記プログラマブルプロセッサに関連する前記キャッシュおよび前記プログラマブルグラフィックスプロセッサに関連する前記キャッシュのうちの少なくとも１つに対してキャッシュ動作を実行することと、
前記キャッシュ動作を実行したことに応答して、前記プログラマブルプロセッサに関連する前記キャッシュおよび前記プログラマブルグラフィックスプロセッサに関連する前記キャッシュのうちの少なくとも１つが共有状態にあることを示すように、前記第１の共有可能性属性および前記第２の共有可能性属性のうちの前記少なくとも１つを変更することと
をさらに備える、請求項９に記載の方法。
【請求項１５】
前記第１の共有可能性属性および前記第２の共有可能性属性のうちの少なくとも１つは、前記プログラマブルプロセッサに関連するキャッシュおよび前記プログラマブルグラフィックスプロセッサに関連するキャッシュのうちの少なくとも１つが共有状態にあることを示し、前記方法は、
前記プログラマブルプロセッサに関連する前記キャッシュおよび前記プログラマブルグラフィックスプロセッサに関連する前記キャッシュのうちの少なくとも１つに対してキャッシュ動作を実行することと、
前記キャッシュ動作を実行したことに応答して、前記プログラマブルプロセッサに関連する前記キャッシュおよび前記プログラマブルグラフィックスプロセッサに関連する前記キャッシュのうちの少なくとも１つが、非共有共有状態にあることを示すように、前記第１の共有可能性属性および前記第２の共有可能性属性のうちの前記少なくとも１つを変更することと
をさらに備える、請求項９に記載の方法。
【請求項１６】
前記プログラマブルプロセッサに関連するキャッシュおよび前記プログラマブルグラフィックスプロセッサに関連するキャッシュのうちの少なくとも１つのアドレス領域を判断するために、アドレスが記憶された１つまたは複数のレジスタを前記プログラマブルプロセッサに関連する前記キャッシュおよび前記プログラマブルグラフィックスプロセッサに関連する前記キャッシュのうちの前記少なくとも１つのアドレスと比較することと、
前記アドレス領域が共有されているか共有されていないかを判断することと
をさらに備える、請求項１に記載の方法。
【請求項１７】
前記プログラマブルプロセッサに関連するキャッシュおよび前記プログラマブルグラフィックスプロセッサに関連するキャッシュのうちの少なくとも１つのダーティーバイトを判断することと、
キャッシュエビクションおよびキャッシュフラッシュのうちの少なくとも１つを実行することと、
前記キャッシュエビクションおよび前記キャッシュフラッシュのうちの前記少なくとも１つ中に前記ダーティーバイトのみをキャッシュまたはシステムメモリに書き込むこととをさらに備える、請求項１に記載の方法。
【請求項１８】
前記第１の同期動作を実行することが、
割込みを受信すること、レジスタ読取り、レジスタ書込み、およびプログラマブル遅延のうちの少なくとも１つに応答して、キャッシュをフラッシュすること
をさらに備える、請求項１に記載の方法。
【請求項１９】
前記第１の同期動作を実行することが、
キャッシュプレッシャ、タイムアウト、および明示的ソフトウェアキャッシュメンテナンスのうちの少なくとも１つに応答して、キャッシュをフラッシュすること
をさらに備える、請求項１に記載の方法。
【請求項２０】
前記プログラマブルプロセッサに関連するキャッシュおよび前記プログラマブルグラフィックスプロセッサに関連するキャッシュのうちの少なくとも１つが仮想的にタグ付けされる、請求項１に記載の方法。
【請求項２１】
前記第１の同期動作を実行することが、キャッシュに記憶された仮想アドレスを物理アドレスに変換することと、
前記物理アドレスに基づいて、前記仮想アドレスを前記物理アドレスに変換した後に、前記キャッシュのキャッシュラインをフラッシュすることと
をさらに備える、請求項１に記載の方法。
【請求項２２】
前記第２の同期動作を実行することが、キャッシュに記憶された仮想アドレスを物理アドレスに変換することと、
前記物理アドレスに基づいて、前記仮想アドレスを前記物理アドレスに変換した後に、前記キャッシュのキャッシュラインを無効にすることと
をさらに備える、請求項１に記載の方法。
【請求項２３】
プログラマブルグラフィックスプロセッサによる実行のための命令が、前記プログラマブルグラフィックスプロセッサおよびプログラマブルプロセッサによってアクセス可能な共有変数データに対するメモリ動作を含むかどうかを決定するためのハードウェア手段と、
前記メモリ動作の後に第１の同期動作および第２の同期動作を含むように前記命令を修正するためのハードウェア手段と、ここにおいて、前記第１および第２の同期動作は、メモリコヒーレンシ動作を各々備え、前記第１の同期動作はストアウィズリリース動作であり、前記第２の同期動作はロードウィズアクワイア動作である、
前記メモリ動作を実行するためのハードウェア手段と、
前記第１の同期動作を実行するためのハードウェア手段と、
前記第２の同期動作を実行するためのハードウェア手段と
を備える、装置。
【請求項２４】
前記第１の同期動作を実行するための前記ハードウェア手段は、
前記共有変数データに関連するキャッシュラインをフラッシュするための手段と、
任意の前のストアが完了するのを待つための手段と
をさらに備える、請求項２３に記載の装置。
【請求項２５】
前記第２の同期動作を実行するための前記ハードウェア手段は、
前記共有変数データに関連するキャッシュラインを無効にするための手段と、
前記共有変数データに関連する前記キャッシュラインを充填するための手段と、
前記第２の同期動作が実行を完了するまで、後続の命令が発行されるのを防ぐための手段と
をさらに備える、請求項２３に記載の装置。
【請求項２６】
前記プログラマブルプロセッサのキャッシュをスヌープするための手段と、
前記共有変数データの更新された値に関連するキャッシュヒットを検出するための手段と、
前記共有変数データに関連する前記キャッシュヒットを検出したことに応答して、前記共有変数データの前記更新された値を前記プログラマブルグラフィックスプロセッサのキャッシュに書き込むための手段と
をさらに備える、請求項２５に記載の装置。
【請求項２７】
プログラマブルプロセッサと、
プログラマブルグラフィックスプロセッサと
を備える装置であって、前記装置が、
前記プログラマブルグラフィックスプロセッサによる実行のための命令が、前記プログラマブルグラフィックスプロセッサおよび前記プログラマブルプロセッサによってアクセス可能な共有変数データに対するメモリ動作を含むかどうかを決定することと、
前記メモリ動作の後に第１の同期動作および第２の同期動作を含むように前記命令を修正することと、ここにおいて、前記第１および第２の同期動作は、メモリコヒーレンシ動作を各々備え、前記第１の同期動作はストアウィズリリース動作であり、前記第２の同期動作はロードウィズアクワイア動作である、
前記メモリ動作を実行することと、
前記第１の同期動作を実行することと、
前記第２の同期動作を実行することと
を行うように構成される、装置。
【請求項２８】
前記第１の同期動作を実行するために、前記装置が、
前記プログラマブルグラフィックスプロセッサを用いて、前記共有変数データに関連するキャッシュラインをフラッシュすることと、
任意の前のストアが完了するのを待つことと
を行うようにさらに構成された、請求項２７に記載の装置。
【請求項２９】
前記第２の同期動作を実行するために、前記装置は、
前記プログラマブルグラフィックスプロセッサを用いて、前記共有変数データに関連するキャッシュラインを無効にすることと、
前記プログラマブルグラフィックスプロセッサを用いて、前記共有変数データに関連する前記キャッシュラインを充填することと、
前記プログラマブルグラフィックスプロセッサを用いて、前記第２の同期動作が実行を完了するまで、後続の命令が発行されるのを防ぐことと
を行うようにさらに構成された、請求項２７に記載の装置。
【請求項３０】
前記装置が、
前記プログラマブルグラフィックスプロセッサを用いて、前記プログラマブルプロセッサのキャッシュをスヌープすることと、
前記プログラマブルグラフィックスプロセッサを用いて、前記共有変数データの更新された値に関連するキャッシュヒットを検出することと、
前記プログラマブルグラフィックスプロセッサを用いて、前記共有変数データに関連する前記キャッシュヒットを検出したことに応答して、前記共有変数データの前記更新された値を前記プログラマブルグラフィックスプロセッサのキャッシュに書き込むことと
を行うようにさらに構成された、請求項２９に記載の装置。
【請求項３１】
前記第１の同期動作を実行するために、前記装置が、
前記プログラマブルグラフィックスプロセッサの第１のキャッシュよりも高いレベルを有する高レベルキャッシュ、システムメモリ、前記プログラマブルプロセッサのキャッシュ、および前記プログラマブルグラフィックスプロセッサの前記第１のキャッシュのうちの１つに前記共有変数データを書き込むこと
を行うようにさらに構成された、請求項２７に記載の装置。
【請求項３２】
前記プログラマブルプロセッサが中央処理ユニット（ＣＰＵ）を備える、請求項２７に記載の装置。
【請求項３３】
前記プログラマブルプロセッサのすべてのキャッシュライおよび前記プログラマブルグラフィックスプロセッサのすべてのキャッシュラインが共有され、
前記第１の同期動作を実行するために、前記装置が、前記プログラマブルプロセッサの前記キャッシュラインのすべてをフラッシュするようにさらに構成され、
前記第２の同期動作を実行するために、前記装置が、前記プログラマブルグラフィックスプロセッサの前記キャッシュラインのすべてを無効にするようにさらに構成された、請求項２７に記載の装置。
【請求項３４】
前記プログラマブルプロセッサのすべてのキャッシュラインの１サブセットが共有され、前記プログラマブルグラフィックスプロセッサのすべてのキャッシュライン１サブセットが共有され、
ここにおいて、前記第１の同期動作を実行するために、前記装置が、前記プログラマブルプロセッサの前記キャッシュラインの前記共有サブセットのみをフラッシュするようにさらに構成され、
ここにおいて、前記第２の同期動作を実行するために、前記装置が、前記プログラマブルグラフィックスプロセッサの前記キャッシュラインの前記共有サブセットのみを無効にするようにさらに構成された、
請求項２７に記載の装置。
【請求項３５】
前記プログラマブルプロセッサの前記キャッシュラインの前記共有サブセットの少なくとも１つの共有ラインが第１の共有可能性属性によって示され、
前記プログラマブルグラフィックスプロセッサの前記キャッシュラインの前記共有サブセットの各共有ラインが第２の共有可能性属性によって示される、
請求項３４に記載の装置。
【請求項３６】
前記装置が、
キャッシュフィル動作を実行することと、
前記キャッシュフィル動作を実行したことに応答して、ページテーブルから前記第１の共有可能性属性および前記第２の共有可能性属性のうちの少なくとも１つを読み取ることと
を行うようにさらに構成された、請求項３５に記載の装置。
【請求項３７】
前記装置は、
コンパイラが、ロード命令およびストア命令のうちの少なくとも１つを発行することを行うようにさらに構成され、前記ロード命令および前記ストア命令のうちの前記少なくとも１つが前記第１の共有可能性属性および前記第２の共有可能性属性のうちの前記少なくとも１つを示す、請求項３５に記載の装置。
【請求項３８】
前記ロード命令が共有ロード命令を備え、前記ストア命令が共有ストア命令を備える、請求項３７に記載の装置。
【請求項３９】
前記装置が、前記第１の共有可能性属性および前記第２の共有可能性属性のうちの少なくとも１つを示す複数のアドレスポインタの１つまたは複数のビットを読み取ることを行うようにさらに構成された、請求項３５に記載の装置。
【請求項４０】
前記第１の共有可能性属性および前記第２の共有可能性属性のうちの少なくとも１つは、前記プログラマブルプロセッサに関連するキャッシュおよび前記プログラマブルグラフィックスプロセッサに関連するキャッシュのうちの少なくとも１つが非共有状態にあることを示し、前記装置は、
前記プログラマブルプロセッサに関連する前記キャッシュおよび前記プログラマブルグラフィックスプロセッサに関連する前記キャッシュのうちの少なくとも１つに対してキャッシュ動作を実行することと、
前記キャッシュ動作を実行したことに応答して、前記プログラマブルプロセッサに関連する前記キャッシュおよび前記プログラマブルグラフィックスプロセッサに関連する前記キャッシュのうちの少なくとも１つが共有状態にあることを示すように、前記第１の共有可能性属性および前記第２の共有可能性属性のうちの前記少なくとも１つを変更することと
を行うようにさらに構成された、請求項３５に記載の装置。
【請求項４１】
前記第１の共有可能性属性および前記第２の共有可能性属性のうちの少なくとも１つは、前記プログラマブルプロセッサに関連するキャッシュおよび前記プログラマブルグラフィックスプロセッサに関連するキャッシュのうちの少なくとも１つが共有状態にあることを示し、前記装置は、
前記プログラマブルプロセッサに関連する前記キャッシュおよび前記プログラマブルグラフィックスプロセッサに関連する前記キャッシュのうちの少なくとも１つに対してキャッシュ動作を実行することと、
前記キャッシュ動作を実行したことに応答して、前記プログラマブルプロセッサに関連する前記キャッシュおよび前記プログラマブルグラフィックスプロセッサに関連する前記キャッシュのうちの少なくとも１つが非共有共有状態にあることを示すように、前記第１の共有可能性属性および前記第２の共有可能性属性のうちの前記少なくとも１つを変更することと
を行うようにさらに構成された、請求項３５に記載の装置。
【請求項４２】
前記装置は、
前記プログラマブルプロセッサに関連するキャッシュおよび前記プログラマブルグラフィックスプロセッサに関連するキャッシュのうちの少なくとも１つのアドレス領域を判断するために、アドレスが記憶された１つまたは複数のレジスタを前記プログラマブルプロセッサに関連する前記キャッシュおよび前記プログラマブルグラフィックスプロセッサに関連する前記キャッシュのうちの前記少なくとも１つのアドレスと比較することと、
前記アドレス領域が共有されているか共有されていないかを判断することと
を行うようにさらに構成された、請求項２７に記載の装置。
【請求項４３】
前記装置が、
前記プログラマブルプロセッサに関連するキャッシュおよび前記プログラマブルグラフィックスプロセッサに関連するキャッシュのうちの少なくとも１つのダーティーバイトを判断することと、
キャッシュエビクションおよびキャッシュフラッシュのうちの少なくとも１つを実行することと、
前記キャッシュエビクションおよび前記キャッシュフラッシュのうちの前記少なくとも１つ中に前記ダーティーバイトのみをキャッシュまたはシステムメモリに書き込むこととを行うようにさらに構成された、請求項２７に記載の装置。
【請求項４４】
第１の同期動作を実行するために、前記装置が、
割込みを受信すること、レジスタ読取り、レジスタ書込み、およびプログラマブル遅延のうちの少なくとも１つに応答して、キャッシュをフラッシュすること
を行うようにさらに構成された、請求項２７に記載の装置。
【請求項４５】
前記第１の同期動作を実行するために、前記装置が、
キャッシュプレッシャ、タイムアウト、および明示的ソフトウェアキャッシュメンテナンスのうちの少なくとも１つに応答して、キャッシュをフラッシュすること
を行うようにさらに構成された、請求項２７に記載の装置。
【請求項４６】
前記プログラマブルプロセッサに関連するキャッシュおよび前記プログラマブルグラフィックスプロセッサに関連するキャッシュのうちの少なくとも１つが仮想的にタグ付けされる、請求項２７に記載の装置。
【請求項４７】
前記第１の同期動作を実行するために、前記装置が、
キャッシュに記憶された仮想アドレスを物理アドレスに変換することと、
前記物理アドレスに基づいて、前記仮想アドレスを前記物理アドレスに変換した後に、前記キャッシュのキャッシュラインをフラッシュすることと
を行うようにさらに構成された、請求項２７に記載の装置。
【請求項４８】
前記第２の同期動作を実行するために、前記装置が、キャッシュに記憶された仮想アドレスを物理アドレスに変換することと、
前記物理アドレスに基づいて、前記仮想アドレスを前記物理アドレスに変換した後に、前記キャッシュのキャッシュラインを無効にすることと
を行うようにさらに構成された、請求項２７に記載の装置。
【請求項４９】
実行されたとき、１つまたは複数のプロセッサに、
プログラマブルグラフィックスプロセッサによる実行のための命令が、前記プログラマブルグラフィックスプロセッサおよびプログラマブルプロセッサによってアクセス可能な共有変数データに対するメモリ動作を含むかどうかを決定することと、
前記メモリ動作の後に第１の同期動作および第２の同期動作を含むように前記命令を修正することと、ここにおいて、前記第１および第２の同期動作は、メモリコヒーレンシ動作を各々備え、前記第１の同期動作はストアウィズリリース動作であり、前記第２の同期動作はロードウィズアクワイア動作である、
前記メモリ動作を実行することと、
前記第１の同期動作を実行することと、
前記第２の同期動作を実行することと
を行わせる命令を記憶した、非一時的コンピュータ可読記憶媒体。
【請求項５０】
前記１つまたは複数のプロセッサに前記第１の同期動作を実行させる前記命令は、実行されたとき、前記１つまたは複数のプロセッサに、
前記プログラマブルグラフィックスプロセッサを用いて、前記共有変数データに関連するキャッシュラインをフラッシュすることと、
任意の前のストアが完了するのを待つことと
を行わせる命令をさらに備える、請求項４９に記載の非一時的コンピュータ可読記憶媒体。
【請求項５１】
前記１つまたは複数のプロセッサに前記第２の同期動作を実行させる前記命令は、実行されたとき、前記１つまたは複数のプロセッサに、
前記プログラマブルグラフィックスプロセッサを用いて、前記共有変数データに関連するキャッシュラインを無効にすることと、
前記プログラマブルグラフィックスプロセッサを用いて、前記共有変数データに関連する前記キャッシュラインを充填することと、
前記プログラマブルグラフィックスプロセッサを用いて、前記第２の同期動作が実行を完了するまで、後続の命令が発行されるのを防ぐことと
を行わせる命令を備える、請求項４９に記載の非一時的コンピュータ可読記憶媒体。
【請求項５２】
実行されたとき、前記１つまたは複数のプロセッサに、
前記プログラマブルグラフィックスプロセッサを用いて、前記プログラマブルプロセッサのキャッシュをスヌープすることと、
前記プログラマブルグラフィックスプロセッサを用いて、前記共有変数データの更新された値に関連するキャッシュヒットを検出することと、
前記プログラマブルグラフィックスプロセッサを用いて、前記共有変数データに関連する前記キャッシュヒットを検出したことに応答して、前記共有変数データの前記更新された値を前記プログラマブルグラフィックスプロセッサのキャッシュに書き込むことと
を行わせる命令をさらに備える、請求項４９に記載の非一時的コンピュータ可読記憶媒体。