JP6949857B2 - タイミングを中断させるモードにおけるソフトウェアの後方互換性テスト - Google Patents

タイミングを中断させるモードにおけるソフトウェアの後方互換性テスト Download PDF

Info

Publication number
JP6949857B2
JP6949857B2 JP2018543003A JP2018543003A JP6949857B2 JP 6949857 B2 JP6949857 B2 JP 6949857B2 JP 2018543003 A JP2018543003 A JP 2018543003A JP 2018543003 A JP2018543003 A JP 2018543003A JP 6949857 B2 JP6949857 B2 JP 6949857B2
Authority
JP
Japan
Prior art keywords
processors
timing
test mode
application
cpu
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018543003A
Other languages
English (en)
Other versions
JP2020502595A (ja
Inventor
エヴァン サーニー、マーク
エヴァン サーニー、マーク
シンプソン、デイヴィッド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment LLC
Original Assignee
Sony Interactive Entertainment LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Interactive Entertainment LLC filed Critical Sony Interactive Entertainment LLC
Publication of JP2020502595A publication Critical patent/JP2020502595A/ja
Priority to JP2020046529A priority Critical patent/JP6903187B2/ja
Application granted granted Critical
Publication of JP6949857B2 publication Critical patent/JP6949857B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)

Description

本出願は、本発明の譲受人に譲渡された、2015年11月02日に出願された米国非仮出願第14/930,408号の優先権の利益を主張し、その内容全体が参照により本明細書に組み込まれる。
本開示の態様は、コンピュータシステム上でのコンピュータアプリケーションの実行に関する。特に、本開示の態様は、コンピュータシステムの旧バージョン向けのアプリケーション/タイトルに後方互換性を提供するシステムまたは方法に関する。
現代のコンピュータシステムは、異なるコンピューティングタスクのためにいくつかの異なるプロセッサを使用することがよくある。例えば、現在のコンピュータは、いくつかの中央処理装置(CPU)に加えて、グラフィックスパイプラインにおけるある計算タスク専用のグラフィック処理ユニット(GPU)、またはオーディオ用のデジタル信号処理専用のユニットを有することがあり、その全てが、潜在的に、他のユニットも含み得る高速処理ユニット(APU)の一部である。これらのプロセッサは、APUの内部にあるか、またはコンピュータのマザーボード上に外部的に位置し得るバスを使用して多様な種類のメモリに接続される。
アプリケーションのセットがビデオゲームコンソールまたはスマートフォン(「レガシーデバイス」)などのコンピュータシステムのために作成されていることは一般的であり、コンピュータシステムの変化形、またはより高度なバージョン(「新規デバイス」)がリリースされるとき、レガシーデバイスのアプリケーションが、再コンパイル、または新規デバイスの特性を考慮したいかなる修正もなしに、新規デバイス上で完全に動作することが望ましい。そのハードウェアアーキテクチャ、ファームウェア、及びオペレーティングシステムに含まれる新規デバイスのこの態様は、「後方互換性」と呼ばれることがよくある。
後方互換性は、しばしばバイナリ互換性を通じて達成され、そこでは、新規デバイスが、レガシーデバイス用に作成されたプログラムを実行することが可能である。一方、デバイスのカテゴリのリアルタイム動作が、その動作に重要であるとき、ビデオゲームコンソールまたはスマートフォンの場合と同様に、新規デバイスの動作速度の著しい差異によって、それがレガシーデバイスに対して後方互換性を有することができない場合がある。新規デバイスが、レガシーデバイスよりも低い性能のものである場合、後方互換を妨げる問題が発生し得る。これは、レガシーデバイスと比較したときに、新規デバイスがより高い性能のものであるか、または異なる性能特性を有する場合にも当てはまる。
このような状況の中で、本開示の態様が生じる。
本開示の教示は、添付図面と併せて以下の詳細な説明を考察することによって容易に理解され得る。
本開示の態様による、後方互換モードで動作するように構成され得る中央処理装置(CPU)コアの例を示すブロック図である。 本開示の態様による、CPUのための可能なマルチコアアーキテクチャの例を示すブロック図である。 本開示の態様による、後方互換モードで動作するように構成されるCPUを有するデバイスのブロック図である。 「スキュー」の概念を示すタイミング図である。 本開示の態様による、タイミングテストモードにおけるデバイスの動作を示すフロー図である。
序論
新規デバイスのCPUが、レガシーデバイスとバイナリ互換性を有する(即ち、レガシーデバイス用に作成されたプログラムを実行可能である)場合であっても、新規デバイスのCPUとレガシーデバイスのCPUとの性能特性の差異が、レガシーアプリケーションにおいてエラーを引き起こすことがあり、結果として、新規デバイスは、後方互換性を有しないこととなる。
新規デバイスのCPUが、レガシーデバイスのCPUよりも低い性能を有する場合、レガシーアプリケーションにおける多くのエラーは、表示タイミング、オーディオストリームアウトなどによって課されるリアルタイムデッドラインを満たすことができないことに起因して起こり得る。新規デバイスのCPUが、レガシーデバイスのCPUよりも実質的に高い性能を有する場合、レガシーアプリケーションにおける多くのエラーは、そのような高速動作のテストされていない結果に起因して起こり得る。例えば、生産者−消費者モデルにおいて、データの消費者(例えば、CPU)が当初の予想よりも高速で動作する場合、消費者は、データ生産者(例えば、コンピュータの何らかの他のコンポーネント)がそれを利用可能にする前に、データにアクセスしようとすることがある。あるいは、データの生産者(例えば、CPU)が、当初の予想よりも高速で動作する場合、データ消費者(例えば、コンピュータの何らかの他のコンポーネント)によってまだ使用されているデータを、生産者が上書きすることがある。
さらに、CPUによるコードの実行速度は、実行されている特定のコードの特性に依存するため、レガシーデバイスに対する新規デバイスのCPUの性能向上度が、実行されている特定のコードに依存する可能性がある。これは、上述した生産者−消費者モデルにおける問題につながりことがあり、その場合に生産者及び消費者の双方がCPUであるが、レガシーハードウェア上で遭遇しない相対速度でレガシーアプリケーションのコードを実行している。
実施形態
本開示の態様は、デバイス用に書かれたアプリケーションが、(第1のデバイス用に書かれたプログラムが第2のデバイス上で実行するという点において)バイナリ互換性があるが(第1のデバイス用に書かれたプログラムが第2のデバイス上で異なるレートで実行し、したがって動作中にエラーが生じ得るという点において)異なるタイミング特性を有する第2のデバイス上で動作しているときに、高度な後方互換性を有することを可能にし得る、コンピュータシステム及び方法を説明する。第2のデバイスは、潜在的に第1のデバイスの変化形またはより高度なバージョンであり、第2のデバイスの特徴及びケイパビリティが第1のデバイスにより近づく「後方互換モード」で、潜在的に構成され得る。
本開示の実施態様では、タイミングテストモードは、第1のデバイスのために作成される。このモードは、デバイス上では見つからない(または典型的に見つからない)タイミングを作成し、その結果、アプリケーションがこのモードで動作するときに、ハードウェアコンポーネント(CPU、GPU、オーディオ及びビデオハードウェアなど)間、またはソフトウェアコンポーネント(アプリケーション処理、もしくはOS処理など)間の同期のエラーが、デバイス上において可能ではない、または一般的でないやり方で、通常動作中に発生する。これらの同期におけるエラーが一度検出されると、アプリケーションソフトウェアは、それらを除去し、または緩和するように修正され、アプリケーションが第2のデバイス上で異なるタイミング特性で適切に実行する可能性を増加させる。即ち、アプリケーションは、第1のデバイスに対してより高度な後方互換性を第2のデバイス上で有することとなる。第2のデバイスのケイパビリティが既知でない場合がある(例えば、それが、まだ存在していない将来のデバイスである場合がある)ため、タイミングテストモードにおいて利用可能なタイミングに大きな多様性を有することは有益である。
本開示の実施態様では、タイミングテストモードにおいて、オペレーティングシステムは、ある状態で(例えば、デバイスの通常動作では見つからない特定の動作周波数で)ハードウェアを構成してもよい。さらに、タイミングテストモードにおいて、オペレーティングシステムは、アプリケーションが動作している時にハードウェア構成を変更してもよく、またはアプリケーションが動作している時に多様な処理(例えば、システムリソースについて計算する、もしくはアプリケーション処理を先取りするプロセス)を実行してもよい。
本開示の実施態様では、テストは、デバイスとは異なるハードウェア上で実行されてもよい。例えば、消費者デバイスよりも大きな動作範囲で動作するように選択されたICを使用することによって、テストモードが消費者デバイス上で利用できないこととなる。
図1は、CPUコア100の一般化されたアーキテクチャを示す。CPUコア100は、典型的には、分岐がとられるか否かを予測しようとし、さらに(分岐が取られる場合に)分岐の行先アドレスを予測しようとする、分岐予測ユニット102を含む。これらの予測が正確である限り、投機的に実行されたコードの効率が上昇することとなり、したがって、より正確性の高い分岐予測が極めて望ましい。分岐予測ユニット102は、サブルーチンからの復帰アドレスを追跡する復帰アドレススタック104、間接分岐の行先を追跡する間接ターゲットアレイ106、ならびにそれらの結果となるアドレスをより正確に予測するために分岐の過去の履歴を追跡する分岐ターゲットバッファ108及びその関連予測ロジックなどの高度に専門化されたサブユニットを含み得る。
CPUコア100は、典型的には、命令フェッチ及び復号ユニット110を含み、命令フェッチ及び復号ユニット110は、命令フェッチユニット112、命令バイトバッファ114、及び命令復号ユニット116を含む。CPUコア100は、さらに典型的には、いくつかの命令関連キャッシュ及び命令変換索引バッファ(ITLB)120を含む。これらは、ページテーブルエントリ、ページディレクトリエントリなどの物理アドレス変換情報に仮想アドレスをキャッシュするITLBキャッシュ階層124を含み得る。この情報は、命令の仮想アドレスを物理アドレスへと変換するために使用され、それによって、命令フェッチユニット112が、キャッシュ階層から命令をロードすることができる。限定ではなく例として、プログラム命令は、コア内に存在するレベル1命令キャッシュ(L1 Iキャッシュ)122、及びCPUコア100の外部の他のキャッシュレベル176を含むキャッシュ階層に従ってキャッシュされてもよい。命令の物理アドレスを使用して、これらのキャッシュは、まずプログラム命令について検索される。命令が見つからない場合、それらは、システムメモリ101からロードされる。アーキテクチャによっては、後述するように、復号済み命令を含むマイクロオペキャッシュ126も存在し得る。
プログラム命令が一旦フェッチされると、それらは、典型的には、命令フェッチ及び復号ユニット110による処理を待機する命令バイトバッファ114内に配置される。復号は、非常に複雑なプロセスであり得る。各サイクルで複数の命令を復号することは困難であり、1サイクル内に復号され得る命令の数を制限する、命令の整列または命令の種類についての制限が存在し得る。復号済み命令が、アーキテクチャによっては、マイクロオペキャッシュ126内に配置され得る(1つは、新規のCPU上に存在する場合)。したがって、復号段階は、プログラム命令の後ほどの使用のためにバイパスされ得る。
復号済み命令は、典型的には、ディスパッチ及びスケジューリング130のための他のユニットに渡される。これらのユニットは、リタイアキュー132を使用して、CPUパイプラインのリマインダ全体を通して命令の状態を追跡し得る。さらに、多くのCPUアーキテクチャにおいて利用可能な汎用及びSIMDレジスタの数が制限されることに起因して、レジスタリネーミングが実行されてもよく、そこでは、論理(アーキテクチャともいう)レジスタが、実行されている命令のストリームにおいて遭遇されるため、物理レジスタ140が、それらを表すために割り当てられる。物理レジスタ140は、単一命令複数データ(SIMD)レジスタバンク142及び汎用(GP)レジスタバンク144を含んでもよく、それは、特定のCPUアーキテクチャ上で利用可能な論理レジスタの数よりもかなり大きなサイズであってもよく、その結果、性能が相当に向上され得る。レジスタリネーミング134が実行された後、命令は、典型的には、スケジューリングキュー136に配置され、スケジューリングキュー136から、いくつかの命令が、実行ユニット150による実行のために(依存性に基づいて)各サイクルで選択され得る。
実行ユニット150は、典型的には、SIMDレジスタバンク142に含まれる128ビットまたはそれ以上のSIMDレジスタに含まれる複数のデータフィールド上でいくつかの並列演算を実行するSIMDパイプ152と、GPレジスタバンク144に含まれるGPR上でいくつかの論理、算術、及び種々の演算を実行する算術論理演算ユニット(ALU)154と、メモリが記憶されまたはロードされるべきアドレスを計算するアドレス生成ユニット(AGU)156と、を含む。実行ユニットの各種類の複数のインスタンスが存在してもよく、インスタンスは、異なるケイパビリティを有してもよく、例えば、特定のSIMDパイプ152は、浮動小数点加算動作ではなく浮動小数点乗算動作を実行することが可能であってもよい。
ストア及びロードは、典型的には、ストアキュー162及びロードキュー164にバッファされ、それによって、多くのメモリ動作が、並列で実行され得る。メモリ動作を支援するために、CPUコア100は、通常いくつかのデータ関連キャッシュ及びデータ変換索引バッファ(DTLB)170を含む。DTLBキャッシュ階層172は、仮想アドレスを、ページテーブルエントリ、ページディレクトリエントリなどの物理アドレス変換にキャッシュする。この情報は、メモリ動作の仮想アドレスを物理アドレスに変換するために使用され、それによって、データはシステムメモリに記憶され、またはシステムメモリからロードされ得る。データは、典型的には、コア内に存在するレベル1データキャッシュ(L1 Dキャッシュ)174、及びコア100の外部にある他のキャッシュレベル176にキャッシュされる。
開示のある態様によれば、CPUは、複数のコアを含み得る。限定ではなく例として、図2は、本開示の態様と併せて使用され得る、可能なマルチコアCPU200の例を示す。具体的には、CPU200のアーキテクチャは、M個のクラスタ201−1、...201−Mを含んでもよく、Mは、0より大きい整数である。各クラスタは、N個のコア202−1、202−2、...202−Nを有してもよく、Nは、1より大きい整数である。本開示の態様は、異なるクラスタが異なる数のコアを有する実施態様を含む。各コアは、1つまたは複数の対応する専用ローカルキャッシュ(例えば、L1命令、L1データ、またはL2キャッシュ)を含み得る。ローカルキャッシュのそれぞれは、いかなる他のコアとも共有されないという意味で、特定の対応するコア専用であり得る。各クラスタは、また、対応するクラスタ内のコア間で共有され得るクラスタレベルキャッシュ203−1、...203−Mを含み得る。いくつかの実施態様では、クラスタレベルキャッシュは、異なるキャッシュに関連付けられたコアによって共有されない。さらに、CPU200は、1つまたは複数の上位レベルキャッシュ204を含んでもよく、上位レベルキャッシュ204は、クラスタ間で共有され得る。クラスタ内のコア間の通信を容易にするために、クラスタ201−1、...202−Mは、コアのそれぞれ及びクラスタ用のクラスタレベルキャッシュに連結される、対応するローカルバス205−1、...205−Mを含み得る。同様に、クラスタ間の通信を容易にするために、CPU200は、クラスタ201−1、...201−M、及び上位レベルキャッシュ204に連結される、1つまたは複数の上位レベルバス206を含み得る。いくつかの実施態様では、上位レベルバス206は、また、他のデバイス、例えば、GPU、メモリ、またはメモリコントローラに連結され得る。さらに他の実施態様では、上位レベルバス206は、システム内の様々なデバイスに接続されるデバイスレベルバスに接続され得る。さらに他の実施態様では、上位レベルバス206は、クラスタ201−1、...201−Mを上位レベルキャッシュ204に連結し得る。デバイスレベルバス208は、上位レベルキャッシュ204を他のデバイス、例えば、GPU、メモリ、またはメモリコントローラに連結し得る。限定ではなく例として、このようなデバイスレベルバス208を有する実施態様は、例えば、上位レベルキャッシュ204が、全CPUコア用のL3であるがGPU使用のためではない場合に生じ得る。
CPU200において、OS処理は、あるコア、またはコアのあるサブセット上で主に発生し得る。同様に、アプリケーションレベルの処理は、特定のコア、またはコアのサブセット上で主に発生し得る。個々のアプリケーションスレッドは、あるコア、またはコアのあるサブセット上で動作するようにアプリケーションによって指定され得る。キャッシュ及びバスが共有されているため、所与のアプリケーションスレッドによる処理速度は、所与のアプリケーションスレッドと同一のクラスタ内で動作している他のスレッド(例えば、アプリケーションスレッド、またはOSスレッド)によって発生している処理に依存して変化し得る。CPU200の詳細に依存して、コアは、一度にただ1つのスレッドのみを実行することが可能であってもよく、または複数のスレッドを同時に実行すること(「ハイパースレッディング」)が可能であってもよい。ハイパースレッド型CPUの場合、アプリケーションは、また、どのスレッドが、他のどのスレッドと同時に実行され得るかを指定し得る。スレッドの性能は、同一コアによって実行されているいずれかの他のスレッドによって実行される、特定の処理によって影響を受ける。
ここで図3を参照すると、本開示の態様に従って動作するように構成されるデバイス300の例示的な例が示されている。本開示の態様によれば、デバイス300は、組み込み型システム、モバイルフォン、パーソナルコンピュータ、タブレットコンピュータ、ポータブルゲームデバイス、ワークステーション、ゲームコンソールなどであり得る。
デバイス300は、概して、図1に示し上述した種類の1つまたは複数のCPUコア323を含み得る中央処理装置(CPU)320を含む。CPU320は、図2のCPU200に示したような構成で、複数のそのようなコア323、及び1つまたは複数のキャッシュ325を含み得る。限定ではなく例として、CPU320は、単一チップ上にCPU320及びグラフィック処理ユニット(GPU)330を含む高速処理ユニット(APU)310の一部であってもよい。代替的な実施態様では、CPU320及びGPU330は、別々のチップ上の別々のハードウェアコンポーネントとして実装されてもよい。GPU330は、また、2つ以上のコア332及び2つ以上のキャッシュ334、ならびに(いくつかの実施態様では)コア及びキャッシュ及びシステムの他のコンポーネント間の通信を容易にするための1つまたは複数のバスを含み得る。バスは、APU310用の内部バス317、及び外部データバス390を含み得る。
デバイス300は、また、メモリ340を含み得る。メモリ340は、任意で、CPU320及びGPU330にアクセス可能なメインメモリユニットを含み得る。CPU320及びGPU330は、それぞれ1つまたは複数のプロセッサコア、例えば、単一コア、2つのコア、4つのコア、8つのコア、またはそれ以上を含み得る。CPU320及びGPU330は、外部データバス390を使用して1つまたは複数のメモリユニットにアクセスするように構成されてもよく、いくつかの実施態様では、2つ以上の異なるバスを含むことがデバイス300には有用であり得る。
メモリ340は、アドレス可能なメモリ、例えば、RAM、DRAMなどを提供する集積回路の形態の1つまたは複数のメモリユニットを含み得る。メモリは、レガシーCPU上の実行用に当初作成されたアプリケーションを動作させる際、デバイス300をタイミングテストモードで動作させることを判断するための実行時に、図5の方法のような方法を実施するように構成される実行可能命令を含み得る。さらに、メモリ340は、グラフィックリソースを一時的に記憶するための専用グラフィックメモリと、グラフィックバッファと、グラフィックレンダリングパイプライン用のグラフィックデータと、を含み得る。
CPU320は、CPUコードを実行するように構成されてもよく、CPUコードは、オペレーティングシステム(OS)321、またはアプリケーション322(例えば、ビデオゲーム)を含み得る。オペレーティングシステムは、ソフトウェア(例えば、アプリケーション322)からの入力/出力(I/O)リクエストを管理し、それらをCPU320、GPU330、またはデバイス300の他のコンポーネントのためのデータ処理命令に変換するカーネルを含み得る。OS321は、また、ファームウェアを含んでもよく、ファームウェアは、不揮発性メモリに記憶され得る。OS321は、以下の詳細で説明するように、CPU320をタイミングテストモードで動作させることの、ある特徴を実装するように構成され得る。CPUコードは、アプリケーション322の状態に基づいて、GPU330によって実装されるプログラムへのドローコマンドまたはドローコールを発行するためのグラフィックアプリケーションプログラミングインタフェース(API)324を含み得る。CPUコードは、また、物理的シミュレーション及び他の機能を実装し得る。OS321、アプリケーション322、またはAPI324のうちの1つまたは複数のためのコードの一部は、メモリ340、CPU内部もしくは外部のキャッシュ、またはCPU320にアクセス可能な大容量記憶デバイスに記憶され得る。
デバイス300は、メモリコントローラ315を含み得る。メモリコントローラ315は、メモリ340に向かう、またはメモリ340から来るデータの流れを管理するデジタル回路であってもよい。限定ではなく例として、メモリコントローラは、図3に示される例のように、APU310の不可欠な部分であってもよく、または別々のハードウェアコンポーネントであってもよい。
デバイス300は、また、周知のサポート機能350を含んでもよく、サポート機能350は、例えばバス390を介して、システムの他のコンポーネントと通信し得る。このようなサポート機能は、入力/出力(I/O)エレメント352と、CPU320、GPU330、及びメモリ340それぞれのための別々のクロックを含み得る1つまたは複数のクロック356と、CPU320及びGPU330の外部にあり得る1つまたは複数レベルのキャッシュ358とを含んでもよいが、これらに限定されない。デバイス300は、任意で、プログラム及び/またはデータを記憶するための、ディスクドライブ、CD−ROMドライブ、フラッシュメモリ、テープドライブ、ブルーレイドライブなどの大容量記憶デバイス360を含んでもよい。1つの例では、大容量記憶デバイス360は、レガシーCPUを有するシステム上で動作するように当初設計されたレガシーアプリケーションを含む、コンピュータ可読媒体362を受け入れ得る。代替的には、レガシーアプリケーション362(またはその一部)は、メモリ340に記憶されてもよく、またはキャッシュ358に一部記憶されてもよい。
デバイス300は、また、GPU330によって準備されたレンダリングされたグラフィック382をユーザに提示するためのディスプレイユニット380を含み得る。デバイス300は、また、システム100とユーザ間のインタラクションを容易にするためのユーザインタフェースユニット370を含み得る。ディスプレイユニット380は、フラットパネルディスプレイ、陰極線管(CRT)スクリーン、タッチスクリーン、ヘッドマウントディスプレイ(HMD)、またはテキスト、数字、グラフィカルシンボル、もしくは画像を表示可能な他のデバイスの形態であってもよい。ディスプレイ380は、本明細書で説明する多様な技術に従って処理されるレンダリングされたグラフィック382を表示し得る。ユーザインタフェース370は、キーボード、マウス、ジョイスティック、ライトペン、ゲームコントローラ、タッチスクリーン、及び/またはグラフィカルユーザインタフェース(GUI)と併せて使用され得る他のデバイスなどの、1つまたは複数の周辺機器を含み得る。ある実施態様では、アプリケーション322の状態及びグラフィックの元となるコンテンツは、例えば、アプリケーション322が、ビデオゲームまたは他のグラフィック集中型アプリケーションを含む場合の、ユーザインタフェース370を通じたユーザ入力によって少なくとも部分的に判断されてもよい。
デバイス300は、また、デバイスがネットワークを介して他のデバイスと通信することを可能にするためのネットワークインタフェース372を含み得る。ネットワークは、例えば、ローカルエリアネットワーク(LAN)、インターネットなどの広域ネットワーク、Bluetooth(登録商標)ネットワークなどのパーソナルエリアネットワーク、または他の種類のネットワークであってもよい。図示及び説明したコンポーネントのうちの多様なものが、ハードウェア、ソフトウェア、もしくはファームウェア、またはそれらのうち2つ以上のある組み合わせで実装されてもよい。
本開示の態様は、レガシーシステム用に書かれたプログラムを、より強力な、または異なる構成の新規システム上で動作させる際にタイミングの差異の結果として生じる、後方互換での問題を克服する。タイミングテストモードでデバイス300を動作させることによって、開発者は、レガシーシステム用に書かれたソフトウェアが、新規システム上で動作される際どのように実行するかを判断することができる。
本開示の態様によれば、デバイス300は、タイミングテストモードで動作するように構成され得る。このような動作モードの有用性を理解するために、図4のタイミング図を考察する。図4において、アプリケーションの動作時に、異なるコンピューティングエレメント(例えば、CPUコア)A、B、C、Dは、平行四辺形A...A、B...B、C...C、D...Dによって示される異なるタスクを実行し得る。あるタスクが、他のタスクによって消費されるためのデータを生成する必要があり、他のタスクは、必要なデータが生成されるまで、作業を開始することができない。例えば、タスクAは、タスクAによって生成されるデータを必要とし、タスクBは、タスクA及びBによって生成されるデータを必要とすると仮定する。適切な動作を確実にするために、典型的には、アプリケーションは、タスク間でセマフォまたは他の同期戦略を用いるものとし、例えば、タスクBの実行開始に先立って、(タスクBに必要なソースデータを生成する)タスクA及びBが完了に至るまで実行されたことをチェックすべきである。さらに、図4に示されるタイミングは、レガシーデバイス上で実装されるものとしてこれらのタスクのタイミングを表していると仮定する。タイミングは、新規デバイス(例えば、コアBにおいてより強力な処理ケイパビリティを有するもの)上で異なっていてもよく、その結果、タスクAがタスクBによって必要なデータを生成する前に、タスクBが終了することがある。異なるプロセッサ上のタスクの相対的なタイミングのシフトは、本明細書において「スキュー」と呼ばれる。このようなスキューは、新規デバイス上でのみ出現する、または新規デバイス上で出現頻度が増加する、アプリケーション中のソフトウェアエラーをさらけ出し得る。例えば、レガシーデバイス上で、タスクAがタスクBの前に終了することが保証された場合、タスクAがタスクBの前に終了することを確保する同期コードは決してテストされることはなく、同期コードが、不適切に実装された場合、このことは、新規デバイス上でのアプリケーション動作時にしか分からないこととなる可能性がある。例えば、タスクAがタスクBによって必要とされるデータを生成する前にタスクBが実行を開始し、潜在的にアプリケーション中の致命的なエラーにつながる可能性がある。さらに、新規デバイス上で動作させるために書かれたアプリケーションが、より能力の低いレガシーデバイス上で動作されるときに、類似の問題が生じ得る。これらの問題に対処するために、300などのデバイスは、タイミングテストモードで動作され得る。タイミングテストモードでは、スキューが、例えばCPUスレッド間、またはCPU320及びGPU330間、またはGPU330上で動作しているプロセス間、またはこれらのいずれかとリアルタイムクロックとの間で、計画的に作成され得る。このモードでのテストは、アプリケーションが将来のハードウェア上で適切に動作する可能性を増大させ得る。
本開示の態様によれば、タイミングテストモードにおいて、CPUコアは、デバイスの通常動作用とは異なる(より高い、またはより低い)周波数で動作されるように構成され、または、OS321は、CPUコアの周波数を絶えずもしくは時折、修正し得る。これは、CPUコアが全て互いに対して同一の周波数で動作するやり方で、またはCPUコアが互いとは異なる周波数で動作するやり方で、またはいくつかがある周波数で動作し、その他が別の周波数で動作し得るやり方で、行われてもよい。
限定ではなく例として、レガシーデバイス上に、消費者デバイス上その典型的な動作モードにおいて1GHzで動作する4つのコアが存在する場合に、タイミングテストモードでは、連続する10秒の期間中、コアは、800MHzで動作するようにランダムに選択され得る。その結果、選択されたコア上で動作しているプロセスは、より低速で動作し、選択されたコアにより準備されるデータを、そのデータが完全に準備できる前に他のコアが使用しようとするときに、そのコアと他のコアとの間の同期ロジックにおいて起こり得るエラーをさらけ出す。
現在の開示の態様では、タイミングテストモードにおいて、CPUコアに含まれないキャッシュのクロックレートは、それらの通常動作周波数とは異なる(より高い、もしくはより低い)周波数、またはCPUコアの通常動作周波数とは異なる周波数で動作するように構成され得る。そのようなやり方で構成され得る複数のキャッシュが存在する場合、それらは、互いに対して同じレートで、互いに対して異なる周波数で、または、いくつかはある周波数でその他は別の周波数で、動作するように構成され得る。
現在の開示の態様では、タイミングテストモードにおいて、CPUリソースは、アプリケーションコードの実行タイミングに影響を与えるようなやり方で制限されるように構成され得る。キュー、例えば、ストア及びロードキュー、リタイアキュー、及びスケジューリングキューは、サイズが減少されるように構成され得る(例えば、リソースの使用可能部分が制限され得る)。L1 Iキャッシュ及びDキャッシュ、ITLB及びDTLBキャッシュ階層、ならびに上位レベルキャッシュなどのキャッシュは、サイズが減少されてもよい(例えば、完全なアソシアティブキャッシュに記憶され得る値の数は減少されてもよく、またはウェイの数が制限されたキャッシュについて利用可能なバンクカウントもしくはウェイカウントが減少されてもよい)。ALU、AGU、またはSIMDパイプ上で動作している全ての命令または特定の命令の実行レートが、減少されてもよい(例えば、レイテンシが増加し、及び/またはスループットが減少する)。
現在の開示の態様では、タイミングテストモードにおいて、OSは、アプリケーションスレッドを一時的に先取り(一時停止)し得る。限定ではなく例として、個々のアプリケーションスレッドが先取りされてもよく、または複数のスレッドが同時に先取りされてもよく、または全スレッドが同時に先取りされてもよい。先取りタイミングは、ランダムであってもよく、系統的であってもよい。先取りの数及びその長さは、リアルタイムデッドライン(表示タイミングまたはオーディオストリームアウトなどのための)が、アプリケーションによって満たされ得る可能性を増大させるように調整され得る。
現在の開示の態様では、タイミングテストモードにおいて、OSがアプリケーションによってリクエストされる処理(例えば、アロケーションなどのサービス)を実行するとき、または、OSがアプリケーションリクエストから独立した処理(ハードウェア割り込みのサービス提供)を実行するときに、OSによってかかる時間及びOSによって使用されるプロセッサ(例えば、CPUコア)は、デバイスの動作の通常モードにおいてかかる時間及び使用されるCPUコアとは異なり得る。限定ではなく例として、メモリアロケーションを実行するためにOSによってかかる時間が増加し、またはOSが、デバイスの通常動作時にアプリケーションによって排他的に使用されるCPUコアを使用して、ハードウェア割り込みをサービス提供し得る。
現在の開示の態様では、タイミングテストモードにおいて、アプリケーションスレッドは、アプリケーションによって指定されるものとは異なるCPUコア上で実行され得る。限定ではなく例として、それぞれが2つのコアを有する2つのクラスタ(クラスタ「A」及びクラスタ「B」)を有するシステムにおいて、クラスタAのコア0上での実行用に指定された全てのスレッドが、代わりにクラスタBのコア0上で実行され、クラスタBのコア0上での実行用に指定された全てのスレッドが、代わりにクラスタAのコア0上で実行され得る。その結果、クラスタ上位レベルキャッシュをデバイスの通常動作時とは異なるスレッドと共有することによって、スレッド処理の実行タイミングが異なることとなる。
現在の開示の態様では、タイミングテストモードにおいて、OS321は、ランダムにまたは系統的に、CPUキャッシュを書き戻しもしくは無効化してもよく、または命令及びデータTLBを無効化してもよい。限定ではなく例として、OSは、全てのCPUコアのキャッシュ階層をランダムに無効化及び書き戻しし得る。その結果、無効化及び書き戻し中のスレッド実行における遅延、及びキャッシュ階層において通常見つかるスレッドリクエストデータとしての遅延をもたらし、その結果、デバイスの通常動作中に遭遇しないタイミングをもたらす。
現在の開示の態様では、タイミングテストモードにおいて、別々の構成可能な周波数でのGPU及び任意のGPUサブユニットが、デバイスの通常動作とは異なる周波数で動作するように構成され、またはOSが、GPU及びその別々に構成可能なサブユニットのうちのいずれかの周波数を絶えずもしくは時折修正し得る。
さらに、L1 Iキャッシュ及びDキャッシュ、ITLB及びDTLBキャッシュ階層、ならびに上位レベルキャッシュなどの1つまたは複数のキャッシュの他の動作が、タイミングテストモードにおいてタイミングを中断させるようにして修正され得る。キャッシュ動作修正のこのような変更の1つの非限定的な例は、特定のキャッシュが排他的であるか、または包括的であるかを変更することである。通常モードにおいて包括的であるキャッシュは、タイミングテストモードにおいて排他的であるように構成されてもよく、またはその逆も同様である。
キャッシュ動作修正の別の非限定的な例は、キャッシュルックアップ動作を伴う。タイミングテストモードにおいて、キャッシュルックアップは、通常モードとは異なるようにして行われ得る。新規なハードウェアが、キャッシュルックアップ前に仮想アドレスから物理アドレスへ変換し、古いハードウェアがそうでない場合、ある新規なプロセッサハードウェアについてのメモリアクセスは、古いハードウェアと比較して実際には減速され得る。物理アドレスによって記憶されるキャッシュエントリの場合、マルチコアCPUキャッシュ325について通常行われるのと同様に、仮想アドレスは、常に、(例えば、L1及びL2において)キャッシュルックアップを実行する前に物理アドレスに変換される。常にいかなるキャッシュルックアップを実行する前にも仮想アドレスを物理アドレスに変換することによって、特定のメモリ位置に書き込むコアが、その位置に書き込まないように他のコアに通知することが可能となる。対称的に、仮想アドレスに従って記憶されたキャッシュエントリ(例えば、GPUキャッシュ334)についてのキャッシュルックアップは、アドレスを変換する必要なしに実行され得る。アドレス変換が、キャッシュミスの場合、即ち、エントリがキャッシュ内になく、メモリ340内がルックアップされなければならない場合にしか実行される必要がないために、これはより高速である。例えば、古いGPUハードウェアが、仮想アドレスによってキャッシュエントリを記憶し、新規なGPUハードウェアが、物理アドレスによってキャッシュエントリを記憶している場合に、キャッシュ動作間の差異によって、新規なハードウェアにおいて5〜1000サイクルの遅延がもたらされ得る。キャッシュルックアップ動作の差異から生じるエラーについてアプリケーション322をテストするために、タイミングテストモードにおいて、1つまたは複数のキャッシュ(例えば、GPUキャッシュ334)についてのキャッシング及びキャッシュルックアップ動作が、仮想アドレスに基づくことから物理アドレスに基づくことへと変更されてもよく、またはその逆も同様である。
動作修正のさらに別の非限定的な例は、タイミングテストモードにおけるIキャッシュのプリフェッチ機能を、通常モードにおいて有効なこのような機能を有する1つまたは複数のIキャッシュについて、無効にすることである。
現在の開示の態様では、タイミングテストモードにおいて、タイミングテストモードにおいて、OSは、GPUファームウェアが存在している場合、それをデバイスの通常動作とは異なるタイミングを有するファームウェアと置換し得る。限定ではなく例として、タイミングテストモードにおいて、ファームウェアは、処理される各オブジェクトについてのより高いオーバヘッドを有するファームウェアによって、または同時に処理され得るオブジェクトのより低いカウントをサポートするファームウェアによって、置換することができ、その結果、デバイスの通常動作中に遭遇されないタイミングを生じる。
現在の開示の態様では、タイミングテストモードにおいて、GPUリソースは、アプリケーションリクエストの処理タイミングに影響を与えるようなやり方で制限されるように構成され得る。GPUキャッシュ334は、サイズが減少されてもよい(例えば、完全なアソシアティブキャッシュに記憶され得る値の数が減少されてもよく、またはウェイの数が制限されたキャッシュについて利用可能なバンクカウントもしくはウェイカウントが減少されてもよい)。GPUコア332上で動作している全ての命令または特定の命令の実行レートが、減少されてもよい(例えば、レイテンシが増加し、及び/またはスループットが減少する)。
現在の開示の態様では、タイミングテストモードにおいて、OS321は、アプリケーション322がその処理のために利用可能な残りのリソースを減少させる処理を実行するようにGPU330にリクエストし得る。これらのリクエストは、そのタイミングがランダムまたは系統的のいずれかであり得る。限定ではなく例として、OS321は、より優先度の高いグラフィカルオブジェクトのレンダリングをリクエストしてもよく、またはより優先度の低いアプリケーションレンダリングまたは他の計算に取って替え得るシェーダを計算してもよい。または、OS321は、その処理が特定のGPUコア332上で発生するように要求してもよく、それによってそれらのGPUコア上で発生しているように指定されるアプリケーション処理に不均一に影響を与え得る。
現在の開示の態様では、タイミングテストモードにおいて、OS321は、GPU330がそのキャッシュを書き戻しもしくは無効化し、または命令及びデータTLBを無効化するように、ランダムに、または系統的に要求し得る。
本開示の態様によれば、APU310は、内部バス317のための内部クロック316を含み得る。内部クロック316は、本明細書において「内部バスクロック」と呼ばれる特定のクロックレートまたはレートのセットで動作する。内部バス317は、メモリコントローラ315に接続し、メモリコントローラ315は、外部メモリ340に接続される。メモリコントローラ315からメモリ340への通信は、本明細書で「メモリクロック」と呼ばれる別の特定のクロックレートで発生し得る。
本開示の態様によれば、デバイス300が、タイミングテストモードで動作するとき、メモリクロック及び/もしくは内部バスクロックは、デバイスの通常動作中にそれらが動作するのとは異なる(例えば、より高い、もしくはより低い)周波数で動作するように構成されてもよく、またはOS321が、メモリクロック及び/もしくは内部バスクロックの周波数を絶えずもしくは時折修正し得る。
現在の開示の態様では、タイミングテストモードにおいて、メモリコントローラ315は、外部メモリから適切にデータを読み出す、メモリコントローラによって実行される一定種類のメモリアクセスのレイテンシを増加させる、またはデバイスの通常動作中に使用される優先順位とは異なる、様々な種類のメモリアクセス間の優先順位を使用するための偶発故障をシミュレートするように構成され得る。OS321は、タイミングテストモードにおいてこれらの構成を絶えずまたは時折修正し得る。
本開示の態様によれば、タイミングテストモードにおいて、アドレスラインが変更される、例えば、通常1つのアドレスライン上に配置される信号が、別のアドレスライン上に配置される信号と交換され得るように、メモリコントローラ315が構成されてもよい。限定ではなく例として、アドレスラインAが、列情報を外部メモリ315に送信するために使用され、アドレスラインBが、行情報を外部メモリ340に送信するために使用され、タイミングテストモードにおいて、アドレスラインA及びBに送信された信号が交換された場合、結果は、デバイスの通常動作中に見つかるものとは非常に異なるタイミングであることとなる。
上述のようにハードウェアを構成すること及び動作を実行すること(例えば、異なる周波数で動作するようにCPUコアを構成すること)は、同期ロジック内のエラーをさらけ出し得るが、デバイスのリアルタイム動作が重要である場合、タイミングテストモード自体が、例えば、ビデオゲームコンソールの場合に、動作中のエラー、低速CPUコアが表示タイミング、オーディオストリームアウトなどによって課されるリアルタイムデッドラインを満たすことができないことに起因するエラーを引き起こし得る。本開示の態様によれば、タイミングテストモードにおいて、デバイス300は、標準動作速度よりも高速で動作され得る。非限定的な例として、標準動作速度よりも高速とは、標準動作速度よりも約5%〜約30%高速であることであってもよい。限定ではなく例として、タイミングテストモードにおいて、CPUのクロック、CPUキャッシュ、GPU、内部バス、及びメモリは、デバイスの標準動作周波数(または標準動作周波数範囲)よりも高い周波数に設定されてもよい。大量生産されたバージョンのデバイス300は、上記標準動作周波数でのクロックの設定を排除するようなやり方で構成され得るため、特別に設計されたハードウェア、例えば、対応する大量生産デバイスよりも高速のメモリチップを使用するハードウェア、または平均よりも高速動作を可能にするシステムオンチップ(SoC)の生産ランの一部を使用するハードウェア、または大量生産デバイス上で使用されるものよりもハイスペックのマザーボード、電源、及び冷却システムを使用するハードウェアが作成される必要がある場合がある。
限定ではなく例として、特別に設計されたハードウェアが、大量生産デバイスよりも高速のCPU動作を可能にする場合、かつ大量生産デバイス上に、その典型的な動作モードにおいて1GHzで動作する4つのコアが存在する場合、特別に設計されたハードウェア上のタイミングテストモードにおいて、連続的な10秒の期間中、3つのコアが1.2GHzで動作するように選択され、残りのコアが1GHzで動作し得る。その結果、選択されたコア上で動作する処理は、他のコアよりも低速で動作することとなり、同期ロジックにおいて起こり得るエラーをさらけ出すが、それらが大量生産デバイス上で動作するのと少なくとも同じくらいの速さで全てのコアが動作する前の例とは異なり、(例えば、表示タイミングについての)リアルタイムデッドラインは満たされることができ、タイミングテストモード自体が、動作中のエラーを引き起こすおそれはない。
限定ではなく例として、特別に設計されたハードウェアが、大量生産デバイスよりも高速のCPU動作を可能にする場合、かつ大量生産デバイス上に、その典型的な動作モードにおいて1GHzで動作する4つのコアが存在する場合、特別に設計されたハードウェア上のタイミングテストモードにおいて、全てのコアが1.2GHzで動作するように選択されてもよく、OS321が、CPUキャッシュをランダムに書き戻し及び無効化し得る。キャッシュ書き戻し及び無効化に起因する低速化の度合いが、高いCPU周波数に起因する高速化よりも小さい場合、上記のようにリアルタイムデッドラインは満たされることができ、タイミングテストモード自体が動作中のエラーを引き起こすおそれはない。言い換えると、タイミングテストモードは、キャッシュ動作を介してスキューを誘発することがあり、同期エラーについてのテストは、デバイス動作全体がより低速になり、したがってエラーが起こりがちになるという懸念なしに実行され得る。
アプリケーションエラーがタイミングテストモードで明らかにされ得る、いくつかのやり方がある。1つの実施態様によれば、特別に設計されたハードウェアは、デバイス300によって実行される1サイクル(IPC)当たりの命令数を判断するように構成される回路を含み得る。OS321は、IPCの変化を監視して、アプリケーション中のエラーについてテストし得る。OSは、IPCの著しい変動を、タイミングテストモードにおけるデバイスの動作に対する特定の修正に相互に関連付け得る。
本開示の態様によれば、コンピュータデバイスは、タイミングテストモードで動作し得る。限定ではなく例として、デバイス300のようなコンピュータシステムは、図5に示し以下で説明する方法500に類似のやり方で、そのようなタイミングテストモードを実装するように構成されるオペレーティングシステム321のようなオペレーティングシステムを有し得る。
501において示されるように、方法が開始する。510において、システムがタイミングテストモードで動作するかどうかが判断される。これが行われ得るいくつかのやり方がある。限定ではなく例として、オペレーティングシステム321は、ディスプレイ380上のレンダリングされたグラフィック382を介して、タイミングテストモードに入るかどうかを判断するようにユーザに促してもよい。ユーザは、ユーザインタフェース370を介して適切な命令を入力してもよい。システムが、タイミングテストモードで動作すべきではないと判断される場合、システムは、520において示されるように通常の状態で動作し得る。システムが、タイミングテストモードで動作すべきであると判断される場合、デバイスは、530において示されるようにタイミングテストモードでの動作に設定され得る。タイミングテストモードで動作するようにデバイスをセットアップすることは、概して、デバイス用のオペレーティングシステム(例えば、OS321)が、ハードウェア状態をセットアップすること、ファームウェアをロードすること、及びタイミングテストモード固有の設定を実装するための他の動作を実行することを伴い得る。
デバイス300は、多数の可能なやり方のうちのいずれかで、タイミングテストモードで動作するように設定され得る。限定ではなく例として、いくつかの実施態様では、デバイスは、外部的に、例えば、ネットワーク(例えば、ローカルエリアネットワーク(LAN))を介して構成され得る。別の非限定的な例では、デバイスは、オペレーティングシステムによって生成されるメニューの使用、及びユーザインタフェースからの入力を通じて内部的に構成され得る。他の非限定的な例では、デバイスは、デバイスハードウェアの物理的構成を通じて、例えば、デバイス上の1つまたは複数のデュアルインラインパッケージ(DIP)スイッチの位置を手動で設定することによって、タイミングテストモードで動作するようにセットアップされ得る。デバイスファームウェア(例えば、ROMに記憶される)は、次いで、例えば、デバイスが電力供給された時にDIPスイッチの設定を読み出し得る。この後者の実施態様は、例えば、デバイスが大量生産されたバージョンのデバイスよりもむしろ特別に設計されたハードウェアである場合において有用であり得る。このような場合、スイッチは、便宜上、デバイスハードウェアが入っているボックスまたはケースの外側に位置されてもよい。
デバイスが、一旦タイミングテストモードでの動作に設定されると、540において示されるように、デバイスは、タイミングテストモードでアプリケーションを動作させ得る。タイミングテストモードでのシステムの動作が通常デバイス動作とは異なり得る、いくつかのやり方がある。
限定ではなく例として、アプリケーション322が動作している間、OS321は、アプリケーションをタイミングテストで動作させている間、以下のうちの1つまたは複数を行い得る。
〇 542において示されるように、リアルタイムでハードウェア設定を修正する。
〇 544において示されるように、タイミングを中断させるようにして、デバイス300の様々なハードウェアコンポーネントにコマンドを送信する。
〇 546において示されるように、例えば、アプリケーションからリソースを取り去ること、アプリケーションを一時停止させること、またはアプリケーションとリソース競合することによって、アプリケーション322と干渉するプログラムを動作させる。
〇 548において示されるように、タイミングを中断させるようにして、タイミングテストモードでのOS321の機能性を変更する。
550において示されるように、一旦アプリケーション322がデバイス300でタイミングテストモードで動作していると、アプリケーションはエラーについてテストされ得る。このようなテストは、アプリケーションが機能停止したかどうか、エラーが発生したかどうか、またはデバイスが通常動作するときには発生しない異常な結果(例えば、著しいIPC変動)を生成したかどうかを判断することを含み得るが、これらに限定されない。
542において設定を修正する例として、図2に示す種類のプロセッサアーキテクチャでは、2つ以上のCPUコアが、異なる周波数で動作してもよく、それは、消費者デバイスの通常動作周波数よりも高い周波数であってもよい。同様に、デバイス内の2つ以上のキャッシュは、タイミングテストモードにおいて異なる周波数で動作してもよい。さらに、コア及びキャッシュの異なる組み合わせが、異なる周波数で動作してもよい。
他の実施形態では、CPUリソースは、デバイスがタイミングテストモードで動作するときに減少され得る。そのようなCPUリソース減少の例は、ストアキュー、ロードキュー、またはキャッシュ(例えば、L1もしくはそれ以上、Iキャッシュ、Dキャッシュ、ITLB、またはDTLB)のサイズを減少させることを含むが、これらに限定されない。他の例は、ALU、AGU、SIMDパイプ、または特定の命令の実行レートを減少させることを含むが、これらに限定されない。さらに、1つまたは複数の個々のコアまたはアプリケーションスレッドが、ランダムに、または系統的に先取りされ得る。追加的な例は、OS機能性の使用時にタイミングを遅延、もしくは加速、もしくは変更すること、OSによるコアの使用を変更すること、仮想コア割り当てを物理コア割り当て(例えば、クラスタ間競合)に変更すること、他の非対称性を活用すること、またはキャッシュ及び/もしくはTLBを書き戻しもしくは無効化することを含む。
他の実施態様では、542において設定を修正することが、GPU330の機能を変更することを含み得る。このような変更の例は、GPUコア332を異なる周波数で動作させること、GPUコアのうちの1つまたは複数を消費者デバイス用の通常とは異なる周波数で動作させること、デバイス300の通常動作とは異なるタイミングを有するファームウェアとGPUファームウェアを置換することを含む。GPUコア332のうちの1つまたは複数は、デバイスの通常動作モードのために使用されるものよりも高い、または低い周波数で選択的に動作するように構成され得る。他の例は、GPUファームウェアを中断させること(例えば、オブジェクト処理を中断させること)、及びキャッシュサイズまたは実行レートなどの減少されたGPUリソースを減少させることを含む。
他の実施態様では、デバイスをタイミングテストモードで動作させている時に、例えば、ランダム計算スレッドを介してウェーブフロントカウントを変更すること、グラフィックをランダムに先取りすること、またはキャッシュ及び/もしくはTLBを書き戻しもしくは無効化することによって、GPU処理が変更されてもよい。
544においてタイミングを中断させるようにしてコマンドをハードウェアコンポーネントに送信する例は、メモリ340またはメモリコントローラ315の機能を変更することを含む。メモリまたはメモリコントローラ機能のこのような変更の例は、様々なチャネルカウントまたは行ブレイクをシミュレートするために、メモリクロック及び/又は内部バスクロックを異なる周波数で動作させること、ノイズをメモリ動作に挿入すること、レイテンシをメモリ動作に加えること、メモリ動作の優先度を変更すること、並びに行及び/または列チャネルビットを変更することを含むがこれらに限定されない。
本開示の態様は、ソフトウェア開発者が、以前のバージョンのデバイス上での新規アプリケーションの性能を試行することを可能にする。より具体的には、本開示の態様は、開発者が、アプリケーションについてのタイミングの中断の影響を探ることを可能にする。
上記は、本発明の好ましい実施形態の完全な説明であるが、多様な代替物、修正物、及び均等物を使用することが可能である。したがって、本発明の範囲は、上記説明を参照することなく判断されるべきであるが、その代わりに、添付の特許請求の範囲を、その均等物の全範囲とともに参照して判断されるべきである。本明細書で説明されたいかなる特徴も、好ましいか否かに関わらず、本明細書で説明されたいかなる他の特徴とも、好ましいか否かに関わらず組み合わされてもよい。続く特許請求の範囲において、不定冠詞「A」または「An」は、そうでないと明示的に述べられている場合を除いて、冠詞に続く品目のうちの1つまたは複数の量をいう。本明細書で使用されるように、代替物における要素のリストにおいて、用語「or(または)」は、そうでないと明示的に述べられている場合を除いて、包含的な意味、例えば、「XまたはY」は、X単独、Y単独、またはX及びYの両方を含むものとして使用される。代替物として列挙された2つ以上の要素は、互いに結合されてもよい。添付の特許請求の範囲は、そのような限定が句「means for」を使用して所与の請求項において明示的に列挙されない限り、ミーンズプラスファンクションの限定を含むものとして解釈されるべきでない。

Claims (140)

  1. 1つまたは複数のプロセッサと、
    前記1つまたは複数のプロセッサに連結されるメモリと、
    前記1つまたは複数のプロセッサの少なくともサブセット上で動作するように構成される、前記メモリに記憶されたオペレーティングシステム(OS)と、を備えるデバイスであって、前記オペレーティングシステムが、通常モードまたはタイミングテストモードで選択的に動作するように構成され、前記タイミングテストモードにおいて、前記1つまたは複数のプロセッサでアプリケーションを動作させ、前記デバイスが前記タイミングテストモードで動作中の前記デバイスのハードウェアコンポーネントおよび/またはソフトウェアコンポーネントの同期のエラーについて前記アプリケーションをテストしている間に、前記デバイスが、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成され、前記処理のタイミングをシフトさせる前記タイミングテストモードは、スキューを前記アプリケーションの前記処理において誘発することによって前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、デバイス。
  2. 前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサ上でアプリケーションを動作させている間に、前記デバイスの1つまたは複数のハードウェア設定をリアルタイムで修正することにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  3. 前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサ上でアプリケーションを動作させている間に、タイミングをシフトさせるようにして前記デバイスの1つまたは複数のハードウェアコンポーネントにコマンドを送信することにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  4. 前記1つまたは複数のプロセッサが、1つまたは複数の中央処理装置(CPU)コアを含み、前記タイミングテストモードにおいて、前記1つまたは複数のCPUコアの少なくともサブセットが、前記通常モードにおける前記1つまたは複数のCPUコアについての標準動作周波数とは異なる、1つまたは複数の周波数で動作するように構成される、請求項1に記載のデバイス。
  5. 前記1つまたは複数のCPUコアの前記少なくともサブセットが、前記通常モードにおける前記1つまたは複数のCPUコアについての標準動作周波数とは異なる、1つまたは複数の周波数で一度動作するように構成される、請求項4に記載のデバイス。
  6. 前記タイミングテストモードにおいて、前記OSが、前記1つまたは複数のCPUコアの前記少なくともサブセット内の特定のCPUコアの動作周波数を修正する、請求項4に記載のデバイス。
  7. 前記タイミングテストモードにおいて、前記1つまたは複数のCPUコアの前記少なくともサブセットが、同一周波数で動作するように構成される、請求項4に記載のデバイス。
  8. 前記タイミングテストモードにおいて、前記1つまたは複数のCPUコアの前記少なくともサブセットが、異なる周波数で動作するように構成される、請求項4に記載のデバイス。
  9. 前記タイミングテストモードにおいて、前記1つまたは複数のCPUコアの前記少なくともサブセット内の1つまたは複数の所与のCPUコアが、1つの周波数で動作するように構成され、前記1つまたは複数のCPUコアの前記少なくともサブセット内の1つまたは複数の他のCPUコアが、別の周波数で動作するように構成される、請求項4に記載のデバイス。
  10. 前記1つまたは複数のCPUコアの前記少なくともサブセット内の前記CPUコアのうちの1つまたは複数が、前記通常モードにおける前記1つまたは複数のCPUコアについての標準動作周波数よりも高い、1つまたは複数の周波数で動作するように構成される、請求項4に記載のデバイス。
  11. 前記1つまたは複数のCPUコアの前記少なくともサブセット内の前記CPUコアのうちの1つまたは複数が、前記通常モードにおける前記1つまたは複数のCPUコアについての標準動作周波数よりも低い、1つまたは複数の周波数で動作するように構成される、請求項4に記載のデバイス。
  12. 前記1つまたは複数のプロセッサに連結される1つまたは複数のキャッシュをさらに備え、前記タイミングテストモードにおいて、前記1つまたは複数のキャッシュの少なくともサブセットが、前記通常モードにおける前記1つまたは複数のキャッシュについての標準動作周波数とは異なる、1つまたは複数の周波数で動作するように構成される、請求項1に記載のデバイス。
  13. 前記1つまたは複数のキャッシュの前記少なくともサブセットが、前記通常モードにおける前記1つまたは複数のキャッシュについての標準動作周波数とは異なる、1つまたは複数の周波数で一度動作するように構成される、請求項12に記載のデバイス。
  14. 前記タイミングテストモードにおいて、前記OSが、前記1つまたは複数のキャッシュの前記少なくともサブセット内のキャッシュの動作周波数を修正する、請求項12に記載のデバイス。
  15. 前記タイミングテストモードにおいて、前記1つまたは複数のキャッシュの前記少なくともサブセットが、同一周波数で動作するように構成される、請求項12に記載のデバイス。
  16. 前記タイミングテストモードにおいて、前記1つまたは複数のキャッシュの前記少なくともサブセットが、異なる周波数で動作するように構成される、請求項12に記載のデバイス。
  17. 前記タイミングテストモードにおいて、前記1つまたは複数のキャッシュの前記少なくともサブセット内の少なくとも1つのキャッシュが、1つの周波数で動作するように構成され、前記1つまたは複数のキャッシュの前記少なくともサブセット内の1つまたは複数の他のキャッシュが、別の周波数で動作するように構成される、請求項12に記載のデバイス。
  18. 前記1つまたは複数のキャッシュの前記少なくともサブセット内の前記キャッシュのうちの1つまたは複数が、前記通常モードにおける前記1つまたは複数のキャッシュについての標準動作周波数よりも高い、1つまたは複数の周波数で動作するように構成される、請求項12に記載のデバイス。
  19. 前記1つまたは複数のキャッシュの前記少なくともサブセット内の前記キャッシュのうちの1つまたは複数が、前記通常モードにおける前記1つまたは複数のキャッシュについての標準動作周波数よりも低い、1つまたは複数の周波数で動作するように構成される、請求項12に記載のデバイス。
  20. 前記1つまたは複数のプロセッサに連結される1つまたは複数のキャッシュをさらに備え、前記タイミングテストモードにおいて、前記1つまたは複数のキャッシュの少なくともサブセットが、前記通常モードにおける前記1つまたは複数のキャッシュについての利用可能ウェイカウントとは異なる利用可能ウェイカウントで動作するように構成される、請求項1に記載のデバイス。
  21. 前記1つまたは複数のプロセッサに連結される1つまたは複数のキャッシュをさらに備え、前記タイミングテストモードにおいて、前記1つまたは複数のキャッシュの少なくともサブセットが、前記通常モードにおける前記1つまたは複数のキャッシュについての利用可能バンクカウントとは異なる利用可能バンクカウントで動作するように構成される、請求項1に記載のデバイス。
  22. 前記1つまたは複数のプロセッサに連結される1つまたは複数のキャッシュをさらに備え、前記通常モードにおいて包括的キャッシュとして動作するように構成される前記1つまたは複数のキャッシュの少なくともサブセットが、前記タイミングテストモードにおいて排他的キャッシュとして動作するように再構成される、請求項1に記載のデバイス。
  23. 前記1つまたは複数のプロセッサに連結される1つまたは複数のキャッシュをさらに備え、前記通常モードにおいて排他的キャッシュとして動作するように構成される前記1つまたは複数のキャッシュの少なくともサブセットが、前記タイミングテストモードにおいて包括的キャッシュとして動作するように再構成される、請求項1に記載のデバイス。
  24. 前記1つまたは複数のプロセッサに連結される1つまたは複数のキャッシュをさらに備え、前記通常モードにおける仮想アドレスに基づく、前記1つまたは複数のキャッシュの少なくともサブセットに対するキャッシング及びキャッシュルックアップ動作が、前記タイミングテストモードにおける仮想アドレスに基づくキャッシング及びキャッシュルックアップ動作へと変更される、請求項1に記載のデバイス。
  25. 前記1つまたは複数のプロセッサに連結される1つまたは複数の命令キャッシュをさらに備え、前記通常モードにおいて有効にされる、前記1つまたは複数の命令キャッシュの少なくともサブセットについてのプリフェッチ機能が、前記タイミングテストモードにおいて無効にされる、請求項1に記載のデバイス。
  26. 前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサ上でアプリケーションを動作させている間に、前記アプリケーションと干渉する1つまたは複数のプログラムを動作させることにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  27. 前記1つまたは複数のプログラムが、前記アプリケーションからリソースを取り去る、請求項22に記載のデバイス。
  28. 前記1つまたは複数のプログラムが、前記アプリケーションを一時停止させる、請求項22に記載のデバイス。
  29. 前記1つまたは複数のプログラムが、リソースを前記アプリケーションと競合する、請求項22に記載のデバイス。
  30. 前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサ上でアプリケーションを動作させている間に、タイミングをシフトさせるようにして前記オペレーティングシステムの機能性を変更することにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  31. 前記1つまたは複数のプロセッサが、中央処理装置(CPU)を含み、前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサ上でアプリケーションを動作させている間に、前記アプリケーションを動作させるのに利用可能な前記CPUのリソースを減少させることにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  32. 前記アプリケーションを動作させるのに利用可能な前記CPUのリソースを減少させることが、キューのサイズを減少させることを含む、請求項31に記載のデバイス。
  33. 前記アプリケーションを動作させるのに利用可能な前記CPUのリソースを減少させることが、ストアキューのサイズを減少させることを含む、請求項32に記載のデバイス。
  34. 前記アプリケーションを動作させるのに利用可能な前記CPUのリソースを減少させることが、ロードキューのサイズを減少させることを含む、請求項32に記載のデバイス。
  35. 前記アプリケーションを動作させるのに利用可能な前記CPUのリソースを減少させることが、スケジューリングキューのサイズを減少させることを含む、請求項32に記載のデバイス。
  36. 前記アプリケーションを動作させるのに利用可能な前記CPUのリソースを減少させることが、リタイアキューのサイズを減少させることを含む、請求項32に記載のデバイス。
  37. 前記アプリケーションを動作させるのに利用可能な前記CPUのリソースを減少させることが、キャッシュのサイズを減少させることを含む、請求項31に記載のデバイス。
  38. 前記アプリケーションを動作させるのに利用可能な前記CPUのリソースを減少させることが、レベル1命令キャッシュのサイズを減少させることを含む、請求項37に記載のデバイス。
  39. 前記アプリケーションを動作させるのに利用可能な前記CPUのリソースを減少させることが、レベル1データキャッシュのサイズを減少させることを含む、請求項37に記載のデバイス。
  40. 前記アプリケーションを動作させるのに利用可能な前記CPUのリソースを減少させることが、上位レベルキャッシュのサイズを減少させることを含む、請求項37に記載のデバイス。
  41. 前記アプリケーションを動作させるのに利用可能な前記CPUのリソースを減少させることが、テーブル索引バッファ(TLB)のサイズを減少させることを含む、請求項31に記載のデバイス。
  42. 前記アプリケーションを動作させるのに利用可能な前記CPUのリソースを減少させることが、命令変換索引バッファ(ITLB)のサイズを減少させることを含む、請求項41に記載のデバイス。
  43. 前記アプリケーションを動作させるのに利用可能な前記CPUのリソースを減少させることが、データ変換索引バッファ(DTLB)のサイズを減少させることを含む、請求項41に記載のデバイス。
  44. 前記アプリケーションを動作させるのに利用可能な前記CPUのリソースを減少させることが、1つまたは複数の命令パイプの実行レートを減少させることを含む、請求項31に記載のデバイス。
  45. 前記アプリケーションを動作させるのに利用可能な前記CPUのリソースを減少させることが、1つまたは複数の命令の実行レートを減少させることを含む、請求項31に記載のデバイス。
  46. 前記アプリケーションを動作させるのに利用可能な前記CPUのリソースを減少させることが、前記CPUによって実行される全ての命令の実行レートを減少させることを含む、請求項31に記載のデバイス。
  47. 前記CPUが、演算論理ユニット(ALU)を含み、前記アプリケーションを動作させるのに利用可能な前記CPUのリソースを減少させることが、前記ALUによって実行される1つまたは複数の特定の命令の実行レートを減少させることを含む、請求項31に記載のデバイス。
  48. 前記CPUが、演算論理ユニット(ALU)を含み、前記アプリケーションを動作させるのに利用可能な前記CPUのリソースを減少させることが、前記ALUによって実行される全ての命令の実行レートを減少させることを含む、請求項31に記載のデバイス。
  49. 前記CPUが、アドレス生成ユニット(AGU)を含み、前記アプリケーションを動作させるのに利用可能な前記CPUのリソースを減少させることが、前記AGUによって実行される1つまたは複数の特定の命令の実行レートを減少させることを含む、請求項31に記載のデバイス。
  50. 前記CPUが、アドレス生成ユニット(AGU)を含み、前記アプリケーションを動作させるのに利用可能な前記CPUのリソースを減少させることが、前記AGUによって実行される全ての命令の実行レートを減少させることを含む、請求項31に記載のデバイス。
  51. 前記CPUが、単一命令複数データ(SIMD)ユニットを含み、前記アプリケーションを動作させるのに利用可能な前記CPUのリソースを減少させることが、前記SIMDユニットによって実行される1つまたは複数の特定の命令の実行レートを減少させることを含む、請求項31に記載のデバイス。
  52. 前記CPUが、単一命令複数データ(SIMD)ユニットを含み、前記アプリケーションを動作させるのに利用可能な前記CPUのリソースを減少させることが、前記SIMDユニットによって実行される全ての命令の実行レートを減少させることを含む、請求項31に記載のデバイス。
  53. 前記CPUが、1つまたは複数のプロセッサコアを含み、前記アプリケーションを動作させるのに利用可能な前記CPUのリソースを減少させることが、前記1つまたは複数のプロセッサコアのうちの1つまたは複数の個々のプロセッサコアを先取りすることを含む、請求項31に記載のデバイス。
  54. 前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサ上でアプリケーションを動作させている間に、1つまたは複数のアプリケーションスレッドを一時停止させることにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  55. 前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサ上でアプリケーションを動作させている間に、複数のアプリケーションスレッドを一時停止させることにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  56. 前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサ上でアプリケーションを動作させている間に、全てのアプリケーションスレッドを一時停止させることにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  57. 前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサ上でアプリケーションを動作させている間に、1つまたは複数のアプリケーションスレッドの一時停止のタイミングをランダムに決定することにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  58. 前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサ上でアプリケーションを動作させている間に、1つまたは複数のアプリケーションスレッドの一時停止のタイミングを系統的に決定することにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  59. 前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサ上でアプリケーションを動作させている間に、前記OSの機能性使用時に導入されるタイミングを遅延することにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  60. 前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサ上でアプリケーションを動作させている間に、前記OSの機能性使用時に導入されるタイミングを加速することにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  61. 前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサ上でアプリケーションを動作させている間に、前記OSの機能性使用時に導入されるタイミングを変更することにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  62. タイミングテストモードにおいて、前記OSが、前記アプリケーションによるリクエストとして処理を実行するとき、前記処理を実行するために前記OS及び前記OSによって使用される前記1つまたは複数のプロセッサのうちの特定のプロセッサによってかかる時間が、前記通常モードでの動作中に前記処理を実行するために前記OS及び前記特定のプロセッサによってかかる時間とは異なる、請求項1に記載のデバイス。
  63. タイミングテストモードにおいて、前記OSが、前記アプリケーションからのリクエストから独立して処理を実行するとき、前記処理を実行するために前記OS及び前記OSによって使用される前記1つまたは複数のプロセッサのうちの特定のプロセッサによってかかる時間が、前記通常モードで前記処理を実行するために前記OS及び前記特定のプロセッサによってかかる時間とは異なる、請求項1に記載のデバイス。
  64. 前記1つまたは複数のプロセッサが、中央処理装置(CPU)を含み、前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサでアプリケーションを動作させている間に、前記CPUの1つまたは複数のキャッシュ及び/または変換索引バッファを書き戻しすること、または無効化することにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  65. 前記1つまたは複数のプロセッサが、中央処理装置(CPU)を含み、前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサでアプリケーションを動作させている間に、前記CPUの1つまたは複数のキャッシュを書き戻しすることにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  66. 前記1つまたは複数のプロセッサが、中央処理装置(CPU)を含み、前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサでアプリケーションを動作させている間に、前記CPUの1つまたは複数のキャッシュを無効化することにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  67. 前記1つまたは複数のプロセッサが、中央処理装置(CPU)を含み、前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサでアプリケーションを動作させている間に、前記CPUの1つまたは複数の変換索引バッファを書き戻しすることにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  68. 前記1つまたは複数のプロセッサが、中央処理装置(CPU)を含み、前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサでアプリケーションを動作させている間に、前記CPUの1つまたは複数の変換索引バッファを無効化することにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  69. 前記1つまたは複数のプロセッサが、中央処理装置(CPU)を含み、前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサでアプリケーションを動作させている間に、前記CPUの1つまたは複数の命令変換索引バッファ(ITLB)を書き戻しすることにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  70. 前記1つまたは複数のプロセッサが、中央処理装置(CPU)を含み、前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサでアプリケーションを動作させている間に、前記CPUの1つまたは複数の命令変換索引バッファ(ITLB)を無効化することにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  71. 前記1つまたは複数のプロセッサが、中央処理装置(CPU)を含み、前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサでアプリケーションを動作させている間に、前記CPUの1つまたは複数のデータ変換索引バッファ(DTLB)を書き戻しすることにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  72. 前記1つまたは複数のプロセッサが、中央処理装置(CPU)を含み、前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサでアプリケーションを動作させている間に、前記CPUの1つまたは複数のデータ変換索引バッファ(DTLB)を無効化することにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  73. 前記1つまたは複数のプロセッサが、複数のプロセッサコアを含み、前記タイミングテストモードにおいて、前記デバイスが、前記アプリケーションによって指定されたもの以外の前記複数のプロセッサコアのうちのプロセッサコア上で前記アプリケーションのスレッドを実行するように構成される、請求項1に記載のデバイス。
  74. 前記1つまたは複数のプロセッサが、上位レベルキャッシュを共有する2つ以上のクラスタを有し各クラスタがクラスタレベルキャッシュに連結される1つまたは複数のコアを含む、中央処理装置(CPU)を含み、前記タイミングテストモードにおいて、前記デバイスが、スレッドが通常モードに割り当てられるクラスタとは異なるクラスタ内のコアに、アプリケーションの前記スレッドを再割り当てするように構成される、請求項1に記載のデバイス。
  75. 前記1つまたは複数のプロセッサ及び前記メモリに連結される1つまたは複数のバスをさらに備え、前記タイミングテストモードにおいて、前記1つまたは複数のバスの少なくともサブセットが、前記通常モードにおける前記1つまたは複数のバスについての標準動作周波数とは異なる、1つまたは複数の周波数で動作するように構成される、請求項1に記載のデバイス。
  76. 前記1つまたは複数のプロセッサ及び前記メモリに連結される1つまたは複数のバスをさらに備え、前記タイミングテストモードにおいて、前記1つまたは複数のバスの少なくともサブセットが、前記通常モードにおける前記1つまたは複数のバスについての標準動作周波数よりも高い、1つまたは複数の周波数で動作するように構成される、請求項1に記載のデバイス。
  77. 前記1つまたは複数のプロセッサ及び前記メモリに連結される1つまたは複数のバスをさらに備え、前記タイミングテストモードにおいて、前記1つまたは複数のバスの少なくともサブセットが、前記通常モードにおける前記1つまたは複数のバスについての標準動作周波数よりも低い、1つまたは複数の周波数で動作するように構成される、請求項1に記載のデバイス。
  78. 前記1つまたは複数のプロセッサが、1つまたは複数のGPUコアを有するグラフィック処理ユニットを含み、前記タイミングテストモードにおいて、前記1つまたは複数のGPUコアの少なくともサブセットが、前記通常モードにおける前記1つまたは複数のGPUコアについての標準動作周波数とは異なる、1つまたは複数の周波数で動作するように構成される、請求項1に記載のデバイス。
  79. 前記タイミングテストモードにおいて、前記1つまたは複数のGPUコアの前記少なくともサブセットが、同一周波数で動作するように構成される、請求項78に記載のデバイス。
  80. 前記タイミングテストモードにおいて、前記1つまたは複数のGPUコアの前記少なくともサブセットが、異なる周波数で動作するように構成される、請求項78に記載のデバイス。
  81. 前記タイミングテストモードにおいて、前記1つまたは複数のGPUコアの前記少なくともサブセット内の少なくとも1つのGPUコアが、1つの周波数で動作するように構成され、前記1つまたは複数のGPUコアの前記少なくともサブセット内の1つまたは複数の他のGPUコアが、別の周波数で動作するように構成される、請求項78に記載のデバイス。
  82. 前記1つまたは複数のGPUコアの前記少なくともサブセット内の前記GPUコアのうちの1つまたは複数が、前記通常モードにおける前記1つまたは複数のGPUコアについての標準動作周波数よりも高い、1つまたは複数の周波数で動作するように構成される、請求項78に記載のデバイス。
  83. 前記1つまたは複数のGPUコアの前記少なくともサブセット内の前記GPUコアのうちの1つまたは複数が、前記通常モードにおける前記1つまたは複数のGPUコアについての標準動作周波数よりも低い、1つまたは複数の周波数で動作するように構成される、請求項78に記載のデバイス。
  84. 前記1つまたは複数のプロセッサが、グラフィック処理ユニット(GPU)を含み、前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサ上でアプリケーションを動作させている間に、前記GPUの機能を変更することにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  85. 前記GPUの機能を変更することが、GPUファームウェアを前記デバイスの通常動作とは異なるタイミングを有するファームウェアと置換することを含む、請求項84に記載のデバイス。
  86. 前記GPUの機能を変更することが、オブジェクト処理を中断することを含む、請求項84に記載のデバイス。
  87. 前記タイミングテストモードにおいて、前記オペレーティングシステムが、前記GPUの前記タイミングをシフトする処理を実行するように前記GPUにリクエストする、請求項84に記載のデバイス。
  88. 前記1つまたは複数のプロセッサが、グラフィック処理ユニット(GPU)を含み、前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサ上でアプリケーションを動作させている間に、GPUリソースを減少させることにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  89. GPUリソースを減少させることが、GPUキャッシュのサイズを減少させることを含む、請求項88に記載のデバイス。
  90. GPUリソースを減少させることが、前記GPUの変換索引バッファのサイズを減少させることを含む、請求項88に記載のデバイス。
  91. GPUリソースを減少させることが、前記GPUの命令変換索引バッファ(ITLB)のサイズを減少させることを含む、請求項88に記載のデバイス。
  92. GPUリソースを減少させることが、前記GPUのデータ変換索引バッファ(DTLB)のサイズを減少させることを含む、請求項88に記載のデバイス。
  93. GPUリソースを減少させることが、1つまたは複数の命令の実行レートを減少させることを含む、請求項88に記載のデバイス。
  94. GPUリソースを減少させることが、命令パイプの実行レートを減少させることを含む、請求項88に記載のデバイス。
  95. GPUリソースを減少させることが、1つまたは複数の特定のGPU命令の実行レートを減少させることを含む、請求項88に記載のデバイス。
  96. GPUリソースを減少させることが、前記GPUによって実行される全ての命令の実行レートを減少させることを含む、請求項88に記載のデバイス。
  97. 前記1つまたは複数のプロセッサが、グラフィック処理ユニット(GPU)を含み、前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサでアプリケーションを動作させている間に、前記GPUの1つまたは複数のキャッシュ及び/または変換索引バッファを書き戻しすること、または無効化することにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  98. 前記1つまたは複数のプロセッサが、グラフィック処理ユニット(GPU)を含み、前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサでアプリケーションを動作させている間に、前記GPUの1つまたは複数のキャッシュを書き戻しすることにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  99. 前記1つまたは複数のプロセッサが、グラフィック処理ユニット(GPU)を含み、前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサでアプリケーションを動作させている間に、前記GPUの1つまたは複数のキャッシュを無効化することにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  100. 前記1つまたは複数のプロセッサが、グラフィック処理ユニット(GPU)を含み、前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサでアプリケーションを動作させている間に、前記GPUの1つまたは複数の命令変換索引バッファ(ITLB)を書き戻しすることにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  101. 前記1つまたは複数のプロセッサが、グラフィック処理ユニット(GPU)を含み、前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサでアプリケーションを動作させている間に、前記GPUの1つまたは複数の命令変換索引バッファ(ITLB)を無効化することにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  102. 前記1つまたは複数のプロセッサが、グラフィック処理ユニット(GPU)を含み、前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサでアプリケーションを動作させている間に、前記GPUの1つまたは複数のデータ変換索引バッファ(DTLB)を書き戻しすることにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  103. 前記1つまたは複数のプロセッサが、グラフィック処理ユニット(GPU)を含み、前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサでアプリケーションを動作させている間に、前記GPUの1つまたは複数のデータ変換索引バッファ(DTLB)を無効化することにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  104. 前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサ上でアプリケーションを動作させている間に、前記メモリの機能を変更することにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  105. 前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサ上でアプリケーションを動作させている間に、1つまたは複数のメモリ動作にレイテンシを加えることにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  106. 前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサ上でアプリケーションを動作させている間に、1つまたは複数のメモリ動作の優先度を変更することにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  107. 前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサ上でアプリケーションを動作させている間に、前記通常モードで1つのアドレスラインに配置される信号を別のアドレスラインに配置される信号と交換することにより、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、請求項1に記載のデバイス。
  108. 前記タイミングテストモードにおいて、前記メモリが、前記通常モードにおける前記メモリについての標準動作周波数とは異なる、1つまたは複数の周波数で動作するように構成される、請求項1に記載のデバイス。
  109. 前記タイミングテストモードにおいて、前記メモリが、前記通常モードにおける前記メモリについての標準動作周波数よりも高い、1つまたは複数の周波数で動作するように構成される、請求項1に記載のデバイス。
  110. 前記タイミングテストモードにおいて、前記メモリが、前記通常モードにおける前記メモリについての標準動作周波数よりも低い、1つまたは複数の周波数で動作するように構成される、請求項1に記載のデバイス。
  111. 前記タイミングテストモードにおいて、メモリクロックが、前記通常モードにおける前記メモリクロックについての標準動作周波数とは異なる周波数で動作するように構成される、請求項1に記載のデバイス。
  112. 前記タイミングテストモードにおいて、メモリクロックが、前記通常モードにおける前記メモリクロックについての標準動作周波数よりも高い周波数で動作するように構成される、請求項1に記載のデバイス。
  113. 前記タイミングテストモードにおいて、メモリクロックが、前記通常モードにおける前記メモリクロックについての標準動作周波数よりも低い周波数で動作するように構成される、請求項1に記載のデバイス。
  114. 前記タイミングテストモードにおいて、バスクロックが、前記通常モードにおける前記バスクロックについての標準動作周波数とは異なる周波数で動作するように構成される、請求項1に記載のデバイス。
  115. 前記タイミングテストモードにおいて、バスクロックが、前記通常モードにおける前記バスクロックについての標準動作周波数よりも高い周波数で動作するように構成される、請求項1に記載のデバイス。
  116. 前記タイミングテストモードにおいて、バスクロックが、前記通常モードにおける前記バスクロックについての標準動作周波数よりも低い周波数で動作するように構成される、請求項1に記載のデバイス。
  117. 前記タイミングテストモードにおいて、前記オペレーティングシステムが、メモリクロックの周波数を修正する、請求項1に記載のデバイス。
  118. 前記タイミングテストモードにおいて、前記オペレーティングシステムが、内部バスクロックの周波数を修正する、請求項1に記載のデバイス。
  119. 前記メモリ及び前記1つまたは複数のプロセッサのうちの少なくとも1つに連結されるメモリコントローラをさらに備える、請求項1に記載のデバイス。
  120. 前記タイミングテストモードにおいて、前記メモリコントローラが、前記メモリからの適切なデータ読み出しの1つまたは複数の失敗をシミュレートするように構成される、請求項119に記載のデバイス。
  121. 前記タイミングテストモードにおいて、前記メモリコントローラが、前記メモリコントローラによって実行される1つまたは複数の読み出しのレイテンシを増加させるように構成される、請求項119に記載のデバイス。
  122. 前記タイミングテストモードにおいて、前記メモリコントローラが、前記デバイスを前記通常モードで動作させる際に使用される優先順位とは異なる、様々な種類の読み出し間の優先順位を使用するように構成される、請求項119に記載のデバイス。
  123. 前記タイミングテストモードにおいて、前記メモリコントローラが、アドレスラインを交換するように構成される、請求項119に記載のデバイス。
  124. 1つまたは複数のプロセッサと、
    前記1つまたは複数のプロセッサに連結されるメモリと、を備えるデバイスであって、
    前記デバイスが、通常モードまたはタイミングテストモードで選択的に動作するように構成され、前記タイミングテストモードにおいて、前記1つまたは複数のプロセッサでアプリケーションを動作させ、前記デバイスが前記タイミングテストモードで動作中の前記デバイスのハードウェアコンポーネントおよび/またはソフトウェアコンポーネントの同期のエラーについて前記アプリケーションをテストしている間に、前記デバイスが、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成され、前記処理のタイミングをシフトさせる前記タイミングテストモードは、スキューを前記アプリケーションの前記処理において誘発することによって前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、前記デバイス。
  125. 前記1つまたは複数のプロセッサが、1つまたは複数のCPUコアを有する中央処理装置(CPU)を含み、前記1つまたは複数のCPUコアの少なくともサブセットが、前記通常モードにおける前記1つまたは複数のCPUコアについての標準動作周波数とは異なる、1つまたは複数の周波数で一度動作するように構成される、請求項124に記載のデバイス。
  126. 前記1つまたは複数のプロセッサが、1つまたは複数のCPUコアを有する中央処理装置(CPU)を含み、前記1つまたは複数のCPUコアの少なくともサブセットが、前記通常モードにおける前記1つまたは複数のCPUコアについての標準動作周波数よりも高い、1つまたは複数の周波数で一度動作するように構成される、請求項124に記載のデバイス。
  127. 前記1つまたは複数のプロセッサが、1つまたは複数のCPUコアを有する中央処理装置(CPU)を含み、前記1つまたは複数のCPUコアの少なくともサブセットが、前記通常モードにおける前記1つまたは複数のCPUコアについての標準動作周波数よりも低い、1つまたは複数の周波数で一度動作するように構成される、請求項124に記載のデバイス。
  128. 1つまたは複数のキャッシュをさらに備え、前記1つまたは複数のキャッシュの少なくともサブセットが、前記通常モードにおける前記1つまたは複数のキャッシュについての標準動作周波数とは異なる、1つまたは複数の周波数で一度動作するように構成される、請求項124に記載のデバイス。
  129. 1つまたは複数のキャッシュをさらに備え、前記1つまたは複数のキャッシュの少なくともサブセットが、前記通常モードにおける前記1つまたは複数のキャッシュについての標準動作周波数よりも高い、1つまたは複数の周波数で一度動作するように構成される、請求項124に記載のデバイス。
  130. 1つまたは複数のバスをさらに備え、前記1つまたは複数のバスの少なくともサブセットが、前記通常モードにおける前記1つまたは複数のバスについての標準動作周波数よりも高い、1つまたは複数の周波数で動作するように構成される、請求項124に記載のデバイス。
  131. 1つまたは複数のキャッシュをさらに備え、前記1つまたは複数のキャッシュの少なくともサブセットが、前記通常モードにおける前記1つまたは複数のキャッシュについての標準動作周波数よりも低い、1つまたは複数の周波数で一度動作するように構成される、請求項124に記載のデバイス。
  132. 1つまたは複数のバスをさらに備え、前記1つまたは複数のバスの少なくともサブセットが、前記通常モードにおける前記1つまたは複数のバスについての標準動作周波数とは異なる、1つまたは複数の周波数で動作するように構成される、請求項124に記載のデバイス。
  133. 1つまたは複数のバスをさらに備え、前記1つまたは複数のバスの少なくともサブセットが、前記通常モードにおける前記1つまたは複数のバスについての標準動作周波数よりも低い、1つまたは複数の周波数で動作するように構成される、請求項124に記載のデバイス。
  134. 前記メモリが、前記通常モードにおける前記メモリについての標準動作周波数とは異なる、1つまたは複数の周波数で動作するように構成される、請求項124に記載のデバイス。
  135. 前記メモリが、前記通常モードにおける前記メモリについての標準動作周波数よりも高い、1つまたは複数の周波数で動作するように構成される、請求項124に記載のデバイス。
  136. 前記メモリが、前記通常モードにおける前記メモリについての標準動作周波数よりも低い、1つまたは複数の周波数で動作するように構成される、請求項124に記載のデバイス。
  137. 前記デバイスによって実行される1サイクル当たりの命令数を判断するように構成される、1つまたは複数の回路をさらに備える、請求項124に記載のデバイス。
  138. 前記タイミングテストモードにおいて、前記デバイスが、IPCの変動を監視することによって、前記デバイスが前記タイミングテストモードで動作している間に、エラーについて前記アプリケーションをテストする、請求項124に記載のデバイス。
  139. 1つまたは複数のプロセッサと、前記1つまたは複数のプロセッサに連結されるメモリとを有するデバイスにおける方法であって、
    前記デバイスをタイミングテストモードで動作させることであって、前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサでアプリケーションを動作させている間に、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成され、前記処理のタイミングをシフトさせる前記タイミングテストモードは、スキューを前記アプリケーションの前記処理において誘発することによって前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、前記動作させることと、
    前記デバイスが前記タイミングテストモードで動作している間に、前記デバイスのハードウェアコンポーネントおよび/またはソフトウェアコンポーネントの同期のエラーについて前記アプリケーションをテストすることと、を含む、前記方法。
  140. 具現化されたコンピュータ可読実行可能命令を有する非一時的コンピュータ可読媒体であって、前記命令が、1つまたは複数のプロセッサ及びメモリを有するデバイスに前記命令の実行時に方法を実施させるように構成され、前記方法が、
    前記デバイスをタイミングテストモードで動作させることであって、前記タイミングテストモードにおいて、前記デバイスが、前記1つまたは複数のプロセッサでアプリケーションを動作させている間に、前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成され、前記処理のタイミングをシフトさせる前記タイミングテストモードは、スキューを前記アプリケーションの前記処理において誘発することによって前記1つまたは複数のプロセッサ上で行われる処理のタイミングをシフトさせるように構成される、前記動作させることと、
    前記デバイスが前記タイミングテストモードで動作している間に、前記デバイスのハードウェアコンポーネントおよび/またはソフトウェアコンポーネントの同期のエラーについて前記アプリケーションをテストすることと、を含む、前記非一時的コンピュータ可読媒体。
JP2018543003A 2015-11-02 2016-10-31 タイミングを中断させるモードにおけるソフトウェアの後方互換性テスト Active JP6949857B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2020046529A JP6903187B2 (ja) 2015-11-02 2020-03-17 タイミングを中断させるモードにおけるソフトウェアの後方互換性テスト

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/930,408 2015-11-02
US14/930,408 US9892024B2 (en) 2015-11-02 2015-11-02 Backward compatibility testing of software in a mode that disrupts timing
PCT/US2016/059751 WO2017079089A1 (en) 2015-11-02 2016-10-31 Backward compatibility testing of software in a mode that disrupts timing

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2020046529A Division JP6903187B2 (ja) 2015-11-02 2020-03-17 タイミングを中断させるモードにおけるソフトウェアの後方互換性テスト

Publications (2)

Publication Number Publication Date
JP2020502595A JP2020502595A (ja) 2020-01-23
JP6949857B2 true JP6949857B2 (ja) 2021-10-13

Family

ID=58635476

Family Applications (4)

Application Number Title Priority Date Filing Date
JP2018543003A Active JP6949857B2 (ja) 2015-11-02 2016-10-31 タイミングを中断させるモードにおけるソフトウェアの後方互換性テスト
JP2020046529A Active JP6903187B2 (ja) 2015-11-02 2020-03-17 タイミングを中断させるモードにおけるソフトウェアの後方互換性テスト
JP2021103179A Active JP7269282B2 (ja) 2015-11-02 2021-06-22 タイミングを中断させるモードにおけるソフトウェアの後方互換性テスト
JP2023069897A Pending JP2023093646A (ja) 2015-11-02 2023-04-21 タイミングを中断させるモードにおけるソフトウェアの後方互換性テスト

Family Applications After (3)

Application Number Title Priority Date Filing Date
JP2020046529A Active JP6903187B2 (ja) 2015-11-02 2020-03-17 タイミングを中断させるモードにおけるソフトウェアの後方互換性テスト
JP2021103179A Active JP7269282B2 (ja) 2015-11-02 2021-06-22 タイミングを中断させるモードにおけるソフトウェアの後方互換性テスト
JP2023069897A Pending JP2023093646A (ja) 2015-11-02 2023-04-21 タイミングを中断させるモードにおけるソフトウェアの後方互換性テスト

Country Status (5)

Country Link
US (3) US9892024B2 (ja)
EP (3) EP3686741A1 (ja)
JP (4) JP6949857B2 (ja)
CN (3) CN108369552B (ja)
WO (1) WO2017079089A1 (ja)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9710881B2 (en) 2014-04-05 2017-07-18 Sony Interactive Entertainment America Llc Varying effective resolution by screen location by altering rasterization parameters
US9495790B2 (en) 2014-04-05 2016-11-15 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping to non-orthonormal grid
US9836816B2 (en) 2014-04-05 2017-12-05 Sony Interactive Entertainment America Llc Varying effective resolution by screen location in graphics processing by approximating projection of vertices onto curved viewport
US11302054B2 (en) 2014-04-05 2022-04-12 Sony Interactive Entertainment Europe Limited Varying effective resolution by screen location by changing active color sample count within multiple render targets
US9652882B2 (en) 2014-04-05 2017-05-16 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location
US10068311B2 (en) 2014-04-05 2018-09-04 Sony Interacive Entertainment LLC Varying effective resolution by screen location by changing active color sample count within multiple render targets
US10783696B2 (en) 2014-04-05 2020-09-22 Sony Interactive Entertainment LLC Gradient adjustment for texture mapping to non-orthonormal grid
US9865074B2 (en) 2014-04-05 2018-01-09 Sony Interactive Entertainment America Llc Method for efficient construction of high resolution display buffers
US9760113B2 (en) 2015-02-20 2017-09-12 Sony Interactive Entertainment America Llc Backward compatibility through use of spoof clock and fine grain frequency control
US10235219B2 (en) 2015-07-27 2019-03-19 Sony Interactive Entertainment America Llc Backward compatibility by algorithm matching, disabling features, or throttling performance
US11403099B2 (en) 2015-07-27 2022-08-02 Sony Interactive Entertainment LLC Backward compatibility by restriction of hardware resources
US9892024B2 (en) 2015-11-02 2018-02-13 Sony Interactive Entertainment America Llc Backward compatibility testing of software in a mode that disrupts timing
US10915333B2 (en) * 2016-03-30 2021-02-09 Sony Interactive Entertainment Inc. Deriving application-specific operating parameters for backwards compatiblity
US10303488B2 (en) * 2016-03-30 2019-05-28 Sony Interactive Entertainment Inc. Real-time adjustment of application-specific operating parameters for backwards compatibility
US10275239B2 (en) * 2016-03-30 2019-04-30 Sony Interactive Entertainment Inc. Deriving application-specific operating parameters for backwards compatiblity
US10574544B2 (en) * 2017-01-04 2020-02-25 International Business Machines Corporation Method of certifying resiliency and recoverability level of services based on gaming mode chaosing
US10891219B1 (en) * 2017-08-07 2021-01-12 Electronic Arts Inc. Code failure prediction system
US10949325B1 (en) 2017-08-18 2021-03-16 Electronic Arts Inc. Automated cross-session video game testing
US10620937B1 (en) 2018-06-01 2020-04-14 Appian Corporation Automated backward-compatible function updates
US11263114B2 (en) * 2019-09-24 2022-03-01 International Business Machines Corporation Method and technique to find timing window problems
US11163592B2 (en) * 2020-01-10 2021-11-02 International Business Machines Corporation Generation of benchmarks of applications based on performance traces
US11138094B2 (en) 2020-01-10 2021-10-05 International Business Machines Corporation Creation of minimal working examples and environments for troubleshooting code issues
US11179644B2 (en) 2020-03-30 2021-11-23 Electronic Arts Inc. Videogame telemetry data and game asset tracker for session recordings
US11446570B2 (en) 2020-05-08 2022-09-20 Electronic Arts Inc. Automated test multiplexing system
US11321806B2 (en) 2020-07-22 2022-05-03 Samsung Electronics Co., Ltd. Enhanced early coverage discard using opportunistic bypassing and dynamic queue resizing
CN113704101A (zh) * 2021-08-23 2021-11-26 辽宁振兴银行股份有限公司 一种基于网关异步复制的分布式系统兼容测试方法

Family Cites Families (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4947366A (en) * 1987-10-02 1990-08-07 Advanced Micro Devices, Inc. Input/output controller incorporating address mapped input/output windows and read ahead/write behind capabilities
WO1994009432A1 (de) * 1992-10-15 1994-04-28 Siemens Aktiengesellschaft Verfahren zur durchfürhung mindestens eines tests an mindestens einem von auf einem rechner parallel ablauffähigen objekten eines objektorientierten programmes
US5790838A (en) * 1996-08-20 1998-08-04 International Business Machines Corporation Pipelined memory interface and method for using the same
JPH10171676A (ja) * 1996-12-10 1998-06-26 Toshiba Corp マイクロプロセッサのテスト容易化回路
US6094729A (en) * 1997-04-08 2000-07-25 Advanced Micro Devices, Inc. Debug interface including a compact trace record storage
US5940858A (en) * 1997-05-30 1999-08-17 National Semiconductor Corporation Cache circuit with programmable sizing and method of operation
FR2764716B1 (fr) * 1997-06-13 2001-08-17 Bull Cp8 Procede de modification de sequences de code et dispositif associe
US6289472B1 (en) 1997-08-07 2001-09-11 Texas Instruments Incorporated Method and test system for testing under a plurality of test modes
US6138225A (en) * 1997-12-24 2000-10-24 Intel Corporation Address translation system having first and second translation look aside buffers
JP2000293398A (ja) * 1999-04-06 2000-10-20 Hitachi Ltd 内蔵周辺機能モジュールのクロック制御回路を持つプロセッサ
US6363471B1 (en) * 2000-01-03 2002-03-26 Advanced Micro Devices, Inc. Mechanism for handling 16-bit addressing in a processor
US6622298B1 (en) * 2000-02-03 2003-09-16 Xilinx, Inc. Method and apparatus for testing software having a user interface
JP2001306341A (ja) * 2000-04-26 2001-11-02 Mitsubishi Electric Corp コンピュータシステムおよびコンピュータ読み取り可能な記録媒体
US6718294B1 (en) * 2000-05-16 2004-04-06 Mindspeed Technologies, Inc. System and method for synchronized control of system simulators with multiple processor cores
US7054272B1 (en) 2000-07-11 2006-05-30 Ciena Corporation Upper layer network device including a physical layer test port
JP4115676B2 (ja) * 2001-03-16 2008-07-09 株式会社東芝 半導体記憶装置
DE10132159B4 (de) * 2001-07-03 2004-03-11 Infineon Technologies Ag Verfahren und Vorrichtung zum gleichzeitigen Testen einer Mehrzahl von integrierten Schaltungen
US7046245B2 (en) 2001-10-10 2006-05-16 Sony Computer Entertainment America Inc. System and method for environment mapping
US7081893B2 (en) 2001-10-10 2006-07-25 Sony Computer Entertainment America Inc. System and method for point pushing to render polygons in environments with changing levels of detail
US7103757B1 (en) * 2002-10-22 2006-09-05 Lsi Logic Corporation System, circuit, and method for adjusting the prefetch instruction rate of a prefetch unit
US6895530B2 (en) * 2003-01-24 2005-05-17 Freescale Semiconductor, Inc. Method and apparatus for controlling a data processing system during debug
US7055006B1 (en) * 2003-04-30 2006-05-30 Advanced Micro Devices, Inc. System and method for blocking cache use during debugging
WO2005041039A1 (en) * 2003-10-24 2005-05-06 Electronic Arts Inc. System and method for testing human interactive applications and devices
US7360129B2 (en) * 2003-12-30 2008-04-15 Broadcom Corporation Simultaneous switch test mode
JP4279751B2 (ja) * 2004-08-23 2009-06-17 株式会社アドバンテスト デバイスの試験装置及び試験方法
EP1653331B8 (en) * 2004-10-29 2012-03-14 ST-Ericsson SA An apparatus and method for entering and exiting low power mode
US20060248247A1 (en) * 2005-04-29 2006-11-02 Mtekvision Co., Ltd. Apparatus and method for controlling access to a memory
US20060253749A1 (en) 2005-05-09 2006-11-09 International Business Machines Corporation Real-time memory verification in a high-availability system
US7409570B2 (en) * 2005-05-10 2008-08-05 Sony Computer Entertainment Inc. Multiprocessor system for decrypting and resuming execution of an executing program after transferring the program code between two processors via a shared main memory upon occurrence of predetermined condition
TW200801550A (en) * 2006-01-06 2008-01-01 Koninkl Philips Electronics Nv IC testing methods and apparatus
US7739470B1 (en) * 2006-10-20 2010-06-15 Emc Corporation Limit algorithm using queue depth to control application performance
US8149242B2 (en) 2006-11-10 2012-04-03 Sony Computer Entertainment Inc. Graphics processing apparatus, graphics library module and graphics processing method
WO2008126471A1 (ja) * 2007-04-06 2008-10-23 Nec Corporation 半導体集積回路およびその試験方法
US8326816B2 (en) * 2010-05-06 2012-12-04 Oracle International Corporation Fine grain synchronization for database replay
US7809985B2 (en) * 2007-09-28 2010-10-05 Microsoft Corporation Offline hardware diagnostic environment
US7770140B2 (en) * 2008-02-05 2010-08-03 International Business Machines Corporation Method and apparatus for evaluating integrated circuit design model performance using basic block vectors and fly-by vectors including microarchitecture dependent information
JP5623088B2 (ja) * 2010-01-28 2014-11-12 ピーエスフォー ルクスコ エスエイアールエルPS4 Luxco S.a.r.l. 半導体装置及びそのテスト方法並びにシステム
US8381144B2 (en) 2010-03-03 2013-02-19 Qualcomm Incorporated System and method of test mode gate operation
US8339810B2 (en) * 2010-03-12 2012-12-25 Illinois Tool Works Inc. Wide input voltage power supply
US8797332B2 (en) 2010-12-15 2014-08-05 Ati Technologies Ulc Device discovery and topology reporting in a combined CPU/GPU architecture system
CN103430155B (zh) * 2011-01-17 2015-11-25 明导公司 具有与模式无关的测试访问机制的测试调度
US9201677B2 (en) * 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
US8862861B2 (en) 2011-05-13 2014-10-14 Oracle International Corporation Suppressing branch prediction information update by branch instructions in incorrect speculative execution path
US8560819B2 (en) * 2011-05-31 2013-10-15 Oracle International Corporation Software execution using multiple initialization modes
US8874848B2 (en) * 2011-09-30 2014-10-28 Net App, Inc. Intelligence for controlling virtual storage appliance storage allocation
US9355017B2 (en) * 2012-01-06 2016-05-31 Iii Holdings 4, Llc Automated error checking system for a software application and method therefor
WO2013132741A1 (ja) * 2012-03-06 2013-09-12 パナソニック株式会社 マルチプロセッサシステム
US9483268B2 (en) 2012-03-16 2016-11-01 International Business Machines Corporation Hardware based run-time instrumentation facility for managed run-times
US8930636B2 (en) 2012-07-20 2015-01-06 Nvidia Corporation Relaxed coherency between different caches
US9086838B2 (en) * 2012-09-03 2015-07-21 Nvidia Corporation Synchronous media display through automatic hardware profiles across multiple display units
US20140089699A1 (en) * 2012-09-27 2014-03-27 Advanced Micro Devices Power management system and method for a processor
US20140281398A1 (en) * 2013-03-16 2014-09-18 William C. Rash Instruction emulation processors, methods, and systems
US9703562B2 (en) * 2013-03-16 2017-07-11 Intel Corporation Instruction emulation processors, methods, and systems
US10134102B2 (en) 2013-06-10 2018-11-20 Sony Interactive Entertainment Inc. Graphics processing hardware for using compute shaders as front end for vertex shaders
US10096079B2 (en) 2013-06-10 2018-10-09 Sony Interactive Entertainment Inc. Fragment shaders perform vertex shader computations
US10102603B2 (en) 2013-06-10 2018-10-16 Sony Interactive Entertainment Inc. Scheme for compressing vertex shader output parameters
US10176621B2 (en) 2013-06-10 2019-01-08 Sony Interactive Entertainment Inc. Using compute shaders as front end for vertex shaders
US9251081B2 (en) * 2013-08-01 2016-02-02 Advanced Micro Devices, Inc. Management of caches
US9218261B2 (en) * 2013-09-18 2015-12-22 Bank Of America Corporation Test case execution
US9330792B2 (en) * 2014-02-26 2016-05-03 Advantest Corporation Testing memory devices with distributed processing operations
US9495790B2 (en) 2014-04-05 2016-11-15 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping to non-orthonormal grid
US10438312B2 (en) 2014-04-05 2019-10-08 Sony Interactive Entertainment LLC Method for efficient re-rendering objects to vary viewports and under varying rendering and rasterization parameters
US9652882B2 (en) 2014-04-05 2017-05-16 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location
US9710881B2 (en) 2014-04-05 2017-07-18 Sony Interactive Entertainment America Llc Varying effective resolution by screen location by altering rasterization parameters
US9836816B2 (en) 2014-04-05 2017-12-05 Sony Interactive Entertainment America Llc Varying effective resolution by screen location in graphics processing by approximating projection of vertices onto curved viewport
US9530174B2 (en) * 2014-05-30 2016-12-27 Apple Inc. Selective GPU throttling
JP6372297B2 (ja) * 2014-10-16 2018-08-15 富士通株式会社 情報処理装置および情報処理装置の制御方法
US9396100B2 (en) * 2014-12-05 2016-07-19 International Business Machines Corporation Software testing optimizer
US9760113B2 (en) 2015-02-20 2017-09-12 Sony Interactive Entertainment America Llc Backward compatibility through use of spoof clock and fine grain frequency control
US10235219B2 (en) 2015-07-27 2019-03-19 Sony Interactive Entertainment America Llc Backward compatibility by algorithm matching, disabling features, or throttling performance
US9892024B2 (en) 2015-11-02 2018-02-13 Sony Interactive Entertainment America Llc Backward compatibility testing of software in a mode that disrupts timing
US10353821B2 (en) * 2016-06-22 2019-07-16 International Business Machines Corporation System, method, and recording medium for common memory programming

Also Published As

Publication number Publication date
US20210311856A1 (en) 2021-10-07
EP3371704A4 (en) 2019-07-31
CN111881013B (zh) 2024-04-23
JP7269282B2 (ja) 2023-05-08
US20170123961A1 (en) 2017-05-04
JP2020502595A (ja) 2020-01-23
JP2020113302A (ja) 2020-07-27
CN115794598A (zh) 2023-03-14
JP6903187B2 (ja) 2021-07-14
CN108369552B (zh) 2022-08-16
JP2021152956A (ja) 2021-09-30
CN108369552A (zh) 2018-08-03
EP3371704A1 (en) 2018-09-12
US9892024B2 (en) 2018-02-13
JP2023093646A (ja) 2023-07-04
WO2017079089A1 (en) 2017-05-11
US20180246802A1 (en) 2018-08-30
EP3686741A1 (en) 2020-07-29
US11907105B2 (en) 2024-02-20
US11042470B2 (en) 2021-06-22
EP3371704B1 (en) 2021-06-23
EP3920032A1 (en) 2021-12-08
CN111881013A (zh) 2020-11-03

Similar Documents

Publication Publication Date Title
JP6903187B2 (ja) タイミングを中断させるモードにおけるソフトウェアの後方互換性テスト
JP7284199B2 (ja) アルゴリズム整合、機能無効化、または性能制限による後方互換性
US11853763B2 (en) Backward compatibility by restriction of hardware resources
JP4170218B2 (ja) キャッシュミスに応答してタスクを切り替えることによってキャッシュベース埋め込みプロセッサのスループットを改善する方法および装置
JP2005284749A (ja) 並列処理コンピュータ
TW201331836A (zh) 推理執行和回復
KR20190011317A (ko) 가상 벡터 레지스터 파일을 사용하기 위한 시스템 및 방법
JP2020115390A (ja) 後方互換性のためのアプリケーション固有動作パラメータのリアルタイム調整
US8490071B2 (en) Shared prefetching to reduce execution skew in multi-threaded systems
US20130246670A1 (en) Information processing system
JP2023500604A (ja) スレッドを格納するためのシャドウラッチ構成レジスタファイル内のシャドウラッチ

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181113

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20181113

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190517

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190531

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191129

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200625

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200901

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201201

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210601

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210811

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210831

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210922

R150 Certificate of patent or registration of utility model

Ref document number: 6949857

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150