CN108369552A - 以扰乱时序的模式进行的软件向后兼容性测试 - Google Patents

以扰乱时序的模式进行的软件向后兼容性测试 Download PDF

Info

Publication number
CN108369552A
CN108369552A CN201680070684.XA CN201680070684A CN108369552A CN 108369552 A CN108369552 A CN 108369552A CN 201680070684 A CN201680070684 A CN 201680070684A CN 108369552 A CN108369552 A CN 108369552A
Authority
CN
China
Prior art keywords
processors
test pattern
under
timing sequence
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.)
Granted
Application number
CN201680070684.XA
Other languages
English (en)
Other versions
CN108369552B (zh
Inventor
M.E.塞尔尼
D.辛普森
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
Priority to CN202210937412.2A priority Critical patent/CN115794598A/zh
Priority to CN202010187251.0A priority patent/CN111881013B/zh
Publication of CN108369552A publication Critical patent/CN108369552A/zh
Application granted granted Critical
Publication of CN108369552B publication Critical patent/CN108369552B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Abstract

装置可在时序测试模式下运行,在所述时序测试模式下,所述装置被配置来在用一个或多个处理器运行应用程序时,扰乱所述一个或多个处理器上发生的处理的时序。所述应用程序可在所述装置正在所述时序测试模式下运行时测试错误。

Description

以扰乱时序的模式进行的软件向后兼容性测试
本申请要求2015年11月02日提交的共同转让的美国非临时申请号14/930,408的优先权权益,所述申请的全部内容以引用的方式并入本文。
技术领域
本公开的各方面涉及在计算机系统上执行计算机应用程序。具体地说,本公开的各方面涉及一种为针对计算机系统的较旧版本所设计的应用程序/标题提供向后兼容性的系统或方法。
背景技术
现代计算机系统经常针对不同计算任务使用若干不同处理器。例如,除若干中央处理单元(CPU)之外,现代计算机还可具有专用于图形管线中的某些计算任务的图形处理单元(GPU),或专用于针对音频的数字信号处理的单元,所有这些单元潜在地是加速处理单元(APU)的一部分,所述APU也可包含其他单元。使用可在APU内部或在外部位于计算机的母板上的总线将这些处理器连接到各种类型的存储器。
通常针对诸如视频游戏控制台或智能手机(“旧版装置”)的计算机系统创建一组应用程序,并且当发布计算机系统的变体或更先进版本(“新装置”)时,希望旧版装置的应用程序在新装置上完美地运行,而不需要考虑到新装置的属性而进行的重新编译或任何修改。如新装置的硬件体系结构、固件和操作系统中所包含,新装置的这个方面经常被称为“向后兼容性”。
向后兼容性经常通过二进制兼容性来实现,其中新装置能够执行针对旧版装置创建的程序。然而,当这种装置类别的实时行为对于它们的操作很重要时,如就视频游戏控制台或智能手机而言,新装置的操作速度的显著差别可能使其不能相对于旧版装置向后兼容。如果新装置具有比旧版装置低的性能,那么阻止向后兼容性的问题可能出现;如果新装置具有更高的性能或与旧版装置相比具有不同的性能特性,也是这样。
本公开的各个方面正是在此背景下产生。
附图说明
通过结合附图考虑以下详述,可以轻易地理解本公开的教义,在附图中:
图1是示出根据本公开的各方面的中央处理单元(CPU)核心的一个实例的框图,所述CPU核心可被配置来以向后兼容模式操作。
图2是示出根据本公开的各方面的CPU的可能多核心体系结构的一个实例的框图。
图3是根据本公开的各方面的具有被配置来以向后兼容模式操作的CPU的装置的框图。
图4是示出“偏斜(skew)”的概念的时序图。
图5是示出根据本公开的各方面的装置以时序测试模式操作的流程图。
引言
即使新装置的CPU与旧版装置二进制兼容(即,能够执行针对旧版装置创建的程序),新装置的CPU与旧版装置的CPU之间的性能特性的差别仍可能导致旧版应用程序中的错误,因此新装置将不是向后兼容的。
如果新装置的CPU具有比旧版装置的CPU低的性能,那么旧版应用程序中的许多错误可能由于不能满足由显示时序、音频流式输出等强加的实时期限而产生。如果新装置的CPU具有实质上比旧版装置的CPU高的性能,那么旧版应用程序中的许多错误可能由于这种高速操作的未测试结果而产生。例如,在生产者-消费者模型中,如果数据消费者(例如,CPU)以比初始预期高的速度操作,那么它可能试图在数据生产者(例如,计算机的一些其他组件)使数据可用之前访问数据。另选地,如果数据生产者(例如,CPU)以比初始预期高的速度操作,那么它可能覆写数据消费者(例如,计算机的一些其他组件)仍在使用的数据。
另外,由于CPU执行代码的速度取决于被执行的特定代码的特性,因此可能的是,新装置的CPU的性能相对于旧版装置增加的程度将取决于被执行的特定代码。这可导致上述生产者-消费者模型中的问题,其中生产者和消费者都是CPU,但是以在旧版硬件上没有遇到的相对速度执行旧版应用程序的代码。
具体实施方式
本公开的各方面描述计算机系统和方法,所述计算机系统和方法可允许针对装置编写的应用程序在第二装置上运行时具有更高程度的向后兼容性,所述第二装置二进制兼容(因为针对第一装置编写的程序将在第二装置上运行)但是具有不同的时序特性(因为针对第一装置编写的程序将在第二装置上以不同速率执行,因此可能产生操作中的错误)。第二装置可潜在地是第一装置的变体或更先进版本,并且可以潜在地以“向后兼容模式”来配置,其中第二装置的特征和能力更紧密地近似第一装置的特征和能力。
在本公开的实现方式中,为第一装置创建时序测试模式。这个模式创建了在装置上未发现(或通常未发现)的时序,结果是,当应用程序以这个模式运行时,各硬件组件(诸如CPU、GPU、音频和视频硬件)之间或各软件组件(诸如应用程序处理或OS处理)之间的同步中的错误以在正常操作期间装置上不可能或不常见的方式出现。一旦检测到这些同步中的错误,就可修复应用程序软件以消除或减轻这些错误,从而增加应用程序将在具有不同时序特性的第二装置上适当执行的可能性,即,相对于第一装置,应用程序在第二装置上将具有更高程度的向后兼容性。由于可能未知第二装置的能力(例如,其可能是尚不存在的未来装置),因此有益的是,在时序测试模式中的可用时序具有很大变化。
在本公开的实现方式中,在时序测试模式下,操作系统可以特定状态(例如,以在装置的正常操作中未发现的特定操作频率)配置硬件。另外,在时序测试模式下,操作系统可在应用程序正在运行时更改硬件配置或在应用程序正在运行时执行各种处理(例如,竞争系统资源或先占应用程序处理的进程)。
在本公开的实现方式中,所述测试可对不同于装置的硬件执行。例如,使用选定来以比消费者装置大的操作范围运行的IC将允许在消费者装置上不可用的测试模式。
图1示出CPU核心100的一般化体系结构。CPU核心100通常包括分支预测单元102,所述分支预测单元102试图预测分支是否将被采用,并且还试图(在所述分支被采用的情况下)预测所述分支的目的地址。在这些预测是正确的情况下,推测地执行的代码的效率将增加;因此高度准确的分支预测是极度需要的。分支预测单元102可包括高度专门化的子单元,诸如追踪来自子例程的返回地址的返回地址堆栈104、追踪间接分支的目的地的间接目标阵列106,以及追踪分支的过去历史以便更准确地预测分支的所得地址的分支目标缓冲器108和其相关联预测逻辑。
CPU核心100通常包括指令提取和解码单元110,所述指令提取和解码单元110包括指令提取单元112、指令字节缓冲器114和指令解码单元116。CPU核心100通常还包括若干指令相关的高速缓存和指令转换后备缓冲器(ITLB)120。这些可包括ITLB高速缓存分级结构124,所述ITLB高速缓存分级结构124将虚拟地址高速缓存到诸如页面表条目、页面目录条目等物理地址转换信息。使用这个信息来将指令的虚拟地址变换成物理地址,使得指令提取单元112可从高速缓存分级结构加载指令。以举例而不是限制的方式,可根据高速缓存分级结构来高速缓存程序指令,所述高速缓存分级结构包括驻留在核心中的1级指令高速缓存(L1I-高速缓存)122以及在CPU核心100外部的其他高速缓存级别176;使用指令的物理地址,首先针对程序指令搜索这些高速缓存。如果未找到指令,那么从系统存储器101加载指令。取决于体系结构,还可存在如下文所述的包含已解码指令的微操作(micro-op)高速缓存126。
一旦提取了程序指令,通常将指令放在指令字节缓冲器114中,等待由指令提取和解码单元110处理。解码可以是非常复杂的过程;难以每个循环解码多个指令,并且可能存在对指令对准或指令类型的限制,这限制了一个循环中可解码多少个指令。取决于体系结构,可将已解码指令放在微操作高速缓存126中(如果在新CPU上存在微操作高速缓存),使得可绕过解码阶段以便随后使用程序指令。
通常将已解码指令传送到其他用于分派和调度的单元130。这些单元可以使用停用队列132来追踪遍及CPU管线剩余部分的指令的状态。并且,由于在许多CPU体系结构上可用的通用和SIMD寄存器的数量有限,因此可执行寄存器重命名,其中当在被执行的指令流中遇到逻辑(也称为体系结构的)寄存器时,指派物理寄存器140来表示它们。物理寄存器140可包括单指令多数据(SIMD)寄存器组142和通用(GP)寄存器组144,其大小可以远大于在特定CPU体系结构上可用的逻辑寄存器的数量,因此性能可以得到显著增加。在执行寄存器重命名134后,通常将指令放在调度队列136中,每个循环可从调度队列136选择若干指令(基于依赖性)来由执行单元150执行。
执行单元150通常包括:SIMD管152,其对SIMD寄存器组142中所包含的128位或更宽SIMD寄存器中所包含的多个数据字段执行若干并行操作;算术和逻辑单元(ALU)154,其对GP寄存器组144中所包含的GPR执行若干逻辑运算、算术运算和混杂运算;以及地址生成单元(AGU)156,其计算地址,存储器应从所述地址进行存储或加载。每个类型的执行单元可存在多个实例,并且所述实例可具有不同能力,例如特定SIMD管152可能够执行浮点乘法运算但是不能执行浮点加法运算。
存储和加载通常在存储队列162和加载队列164中进行缓冲,使得许多存储操作可并行执行。为帮助存储器操作,CPU核心100通常包括若干数据相关的高速缓存和数据转换后备缓冲器(DTLB)170。DTLB高速缓存分级结构172将虚拟地址高速缓存到诸如页面表条目、页面目录条目等物理地址转换;使用这个信息来将存储器操作的虚拟地址变换成物理地址,使得可以从系统存储器存储或加载数据。数据通常被高速缓存在驻留在核心中的1级数据高速缓存(L1D-高速缓存)174以及在核心100外部的其他高速缓存级别176中。
根据本公开的某些方面,CPU可包括多个核心。以举例而不是限制的方式,图2示出可结合本公开的各方面使用的可能多核心CPU200的实例。具体来说,CPU 200的体系结构可包括M个集群201-1、……、201-M,其中M是大于零的整数。每个集群可具有N个核心202-1、202-2、……、202-N,其中N是大于1的整数。本公开的各方面包括其中不同集群具有不同数目的核心的实现方式。每个核心可包括一个或多个对应的专用本地高速缓存(例如,L1指令、L1数据或L2高速缓存)。本地高速缓存中的每一者都可专用于特定对应的核心,因为不与任何其他核心共享。每个集群还可包括可在对应集群中的各核心之间共享的集群级别高速缓存203-1、……、203-M。在一些实现方式中,集群级别高速缓存不被与不同高速缓存相关联的核心共享。此外,CPU 200还可包括可在各集群之间共享的一个或多个更高级别高速缓存204。为促进集群中的各核心之间的通信,集群201-1、……、202-M可包括耦合到核心中的每一者和用于集群的集群级别高速缓存的对应本地总线205-1、……、205-M。同样地,为促进各集群之间的通信,CPU 200可包括耦合到集群201-1、……、201-M以及更高级别高速缓存204的一个或多个更高级别总线206。在一些实现方式中,更高级别总线206也可耦合到其他装置,例如,GPU、存储器或存储器控制器。在其他实现方式中,更高级别总线206可连接到装置级别总线,所述装置级别总线连接到系统内的不同装置。在其他实现方式中,更高级别总线206可将集群201-1、……、201-M耦合到更高级别高速缓存204,而装置级别总线208可将更高级别高速缓存204耦合到其他装置,例如,GPU、存储器或存储器控制器。以举例而不是限制的方式,可产生具有这种装置级别总线208的实现方式,例如,其中更高级别高速缓存204针对所有CPU核心是L3,但是不对GPU使用。
在CPU 200中,OS处理可主要发生在某个核心或核心的某个子集上。类似地,应用程序级别处理可主要发生在某个核心或核心的子集上。个别应用程序线程可由应用程序指定以在某个核心或核心的某个子集上运行。由于共享高速缓存和总线,因此给定应用程序线程的处理速度可取决于在与给定应用程序线程相同集群中运行的其他线程(例如,应用程序线程或OS线程)发生的处理而变化。取决于CPU200的特异性,核心可能够一次仅执行一个线程,或可能够同时执行多个线程(“超线程(hyperthreading)”)。就超线程CPU而言,应用程序也可指定哪些线程可与哪些其他线程同时执行。线程的性能受同一核心正在执行的任何其他线程所执行的特定处理的影响。
现在转到图3,示出被配置来根据本公开的各方面操作的装置300的说明性实例。根据本公开的各方面,装置300可以是嵌入式系统、手机、个人计算机、平板计算机、便携式游戏装置、工作站、游戏控制台等。
装置300通常包括中央处理单元(CPU)320,所述CPU 320可包括图1所示并且上文所述类型的一个或多个CPU核心323。CPU 320可包括呈像图2的CPU 200中所示配置的配置的多个这类核心323和一个或多个高速缓存325。以举例而不是限制的方式,CPU 320可以是加速处理单元(APU)310的一部分,所述APU 310包括CPU 320和在单个芯片上的图形处理单元(GPU)330。在替代实现方式中,CPU320和GPU 330可实现为独立芯片上的独立硬件组件。GPU 330还可包括两个或更多个核心332和两个或更多个高速缓存334以及(在一些实现方式中)一个或多个总线,所述一个或多个总线用于促进各核心和各高速缓存以及系统的其他组件之间的通信。所述总线可包括用于APU 310的内部总线317以及外部数据总线390。
装置300还可包括存储器340。存储器340可任选地包括可供CPU 320和GPU 330访问的主存储器单元。CPU 320和GPU 330可各自包括一个或多个处理器核心,例如,单个核心、两个核心、四个核心、八个核心或更多个核心。CPU 320和GPU 330可被配置来使用外部数据总线390访问一个或多个存储器单元,并且在一些实现方式中,可能有用的是,装置300包括两个或更多个不同总线。
存储器340可包括呈集成电路形式的一个或多个存储器单元,所述集成电路提供可寻址存储器,例如,RAM、DRAM等。存储器可包含可执行指令,所述可执行指令被配置来在执行时实现图5的方法以便确定当运行初始针对在旧版CPU上执行所创建的应用程序时,以时序测试模式操作装置300。另外,存储器340可包括专用图形存储器,用于暂时存储图形资源、图形缓冲器和用于图形渲染管线的其他图形数据。
CPU 320可被配置来执行CPU代码,所述代码可包括操作系统(OS)321或应用程序322(例如,视频游戏)。操作系统可包括内核(kernel),所述内核管理来自软件(例如,应用程序322)的输入/输出(I/O)请求并将它们转换成用于CPU 320、GPU 330或装置300的其他组件的数据处理指令。OS 321还可包括可存储于非易失性存储器中的固件。OS 321可被配置来实现以时序测试模式操作CPU 320的某些特征,如下所详述。CPU代码可包括图形应用程序编程接口(API)324,所述API 324用于基于应用程序322的状态向由GPU 330实现的程序发出绘制命令或绘制调用。CPU代码还可实现物理模拟和其他功能。所述代码的用于OS321、应用程序322或API 324中的一个或多个的部分可存储在存储器340中、在CPU内部或外部的高速缓存中或可供CPU 320访问的大容量存储装置中。
装置300可包括存储器控制器315。存储器控制器315可以是管理来往于存储器340的数据流的数字电路。以举例而不是限制的方式,存储器控制器可以是APU 310的集成部分,如图3所示实例,或可以是独立硬件组件。
装置300还可包括众所周知的支持功能350,所述支持功能350可(例如)通过总线390与系统的其他组件通信。此类支持功能可包括但不限于输入/输出(I/O)元件352、可包括分别用于CPU 320、GPU 330和存储器340的单独时钟的一个或多个时钟356,以及可在CPU320和GPU 330外部的一个或多个级别的高速缓存358。装置300可任选地包括大容量存储装置360,诸如磁盘驱动器、CD-ROM驱动器、闪存存储器、磁带驱动器、蓝光驱动器等等,以便存储程序和/或数据。在一个实例中,大容量存储装置360可接收计算机可读介质362,所述计算机可读介质362包含被初始设计来在具有旧版CPU的系统上运行的旧版应用程序。另选地,旧版应用程序362(或其部分)可存储在存储器340中或部分地存储在高速缓存358中。
装置300还可包括显示单元380,用来向用户呈现由GPU 330准备的渲染图形382。装置300还可包括用户界面单元370,用来促进系统100与用户之间的交互。显示单元380可以呈以下形式:平板显示器、阴极射线管(CRT)屏幕、触摸屏、头戴式显示器(HMD)或可显示文本、数字、图形符号或图像的其他装置。显示器380可显示根据本文所述的各种技术进行处理的渲染图形382。用户界面370可包含一个或多个外围装置,诸如键盘、鼠标、操纵杆、光笔、游戏控制器、触摸屏和/或可以结合图形用户界面(GUI)使用的其他装置。在某些实现方式中,应用程序322的状态和图形的基本内容可至少部分由通过用户界面370的用户输入来确定,例如,在应用程序322包括视频游戏或其他图形密集应用程序的情况下。
装置300还可包括网络接口372,用来使所述装置能够通过网络与其他装置通信。所述网络可以是(例如)局域网(LAN)、广域网(诸如因特网)、个人局域网(诸如蓝牙网络)或其他类型的网络。所示和所述的组件中的各个组件可在硬件、软件或固件或这些中的两个或更多个的某种组合中实现。
本公开的各方面克服了由于针对旧版系统编写的程序在更强大或不同配置的新系统上运行时的时序差别而产生的向后兼容性问题。通过以时序测试模式运行装置300,开发人员可确定针对旧版系统编写的软件在新系统上操作时如何执行。
根据本公开的各方面,装置300可被配置来以时序测试模式操作。为了解这种操作模式的有用性,考虑图4的时序图。在图4中,当运行应用程序时,不同的计算元件(例如,CPU核心)A、B、C、D可运行由平行四边形A1…A4、B1…B4、C1…C4、D1…D4指示的不同任务。某些任务需要产生数据以供其他任务消费,在所需数据产生以前,所述其他任务不能开始工作。例如,假设任务A2需要任务A1产生的数据,而任务B2需要任务A1和B1产生的数据。为确保正确操作,通常应用程序将在各任务之间使用信号量或其他同步策略,例如在开始执行任务B2之前,应检查任务A1和B1(产生任务B2所需源数据)已经运行完成。进一步假设图4所示时序表示在旧版装置上实现这些任务时的时序。时序在新装置(例如,具有核心B中更强大处理能力的装置)上可能不同,因此任务B1可能在任务A1已经产生任务B2所需数据之前就结束。在不同处理器上的任务的相对时序的偏移在本文中被称为“偏斜”。这类偏斜可暴露将仅在新装置上出现或在新装置上以增加的频率出现的应用程式中的软件错误。例如,如果在旧版装置上,任务A1保证在任务B2之前结束,那么确保任务A1在任务B2之前结束的同步码可能永远不被测试,并且如果同步码未适当实现,那么可能的是,这将只有在新装置上运行应用程序时才被知晓,例如,任务B2可能在任务A1产生任务B2所需数据之前就开始执行,从而可能导致应用程序中的严重错误。此外,当被编写以用于在新装置上运行的应用程序在性能较差的旧版装置上运行时,可产生类似问题。为解决这些问题,装置(诸如300)可以时序测试模式运行,在所述时序测试模式中可有意创建偏斜,例如,在各CPU线程之间,或在CPU 320与GPU 330之间,或在GPU 330上运行的各进程之间,或在这些中的任一者与实时时钟之间。以这种模式测试可增加应用程序将在未来硬件上适当运行的可能性。
根据本公开的各方面,在时序测试模式下,CPU核心可被配置来以与对于装置的正常操作来说不同的频率(更高或更低)运行,或者OS 321可连续地或偶尔修改CPU核心的频率。这可以以下方式来实现:CPU核心全部以彼此相同的频率运行的方式,或CPU核心以彼此不同的频率运行的方式,或一些CPU核心以某个频率运行而其他CPU核心以另一频率运行的方式。
以举例而不是限制的方式,如果在旧版装置上有四个在消费者装置上在其典型操作模式下以1GHz运行的核心,那么在时序测试模式下,在连续的十秒周期期间,可随机选择一个核心来以800MHz运行。因此,在选定核心上运行的进程将运行地更慢,从而暴露所述核心与其他核心之间的同步逻辑中可能的错误,这是因为其他核心可能试图在由选定核心准备的数据完全准备好之前使用所述数据。
在本公开的各方面中,在时序测试模式下,不包含在CPU核心中的高速缓存的时钟速率可被配置来以与其正常操作频率不同的(更高或更低)频率或与CPU核心的正常操作频率不同的频率运行。如果存在可能是以这种方式配置的多个高速缓存,那么它们可被配置来以彼此相同的速率、以彼此不同的速率运行或一些可能以某个频率运行而其他以另一频率运行。
在本公开的各方面中,在时序测试模式下,CPU资源可被配置成以影响应用程序代码的执行时序的方式受限。队列(例如,存储和加载队列、停用队列和调度队列)可被配置成在大小方面减小(例如,资源的可用部分可受到限制)。高速缓存(诸如L1I-高速缓存和D-高速缓存、ITLB和DTLB高速缓存分级结构以及更高级别高速缓存)可在大小方面减小(例如,可减小可存储于完全相关联高速缓存中的值数目(the number of values),或针对具有有限数目的方式的高速缓存,可减小可用组计数(bank count)或方式计数(way count))。可减小在ALU、AGU或SIMD管上运行的所有指令或特定指令的执行速率(例如,时延增加和/或吞吐量降低)。
在本公开的各方面中,在时序测试模式下,OS可暂时先占(暂停)应用程序线程。以举例而不是限制的方式,可先占个别应用程序线程,或可同时先占多个线程,或可同时先占所有线程;先占的时序可以是随机的或有条理的;先占的数目及其长度可被调节,以便增加可由应用程序满足实时期限(例如针对显示时序或音频流式输出)的可能性。
在本公开的各方面中,在时序测试模式下,当OS执行应用程序所请求的处理(例如,服务(诸如分配))时,或当OS与应用程序请求无关地执行处理(例如,为硬件中断提供服务)时,OS所花费的时间和OS使用的处理器(例如,CPU核心)可能与装置的正常操作模式中所花费的时间和使用的CPU核心不同。以举例而不是限制的方式,可增加OS用来执行存储器分配所花费的时间,或OS可使用在装置正常操作下由应用程序专用的CPU核心来为硬件中断提供服务。
在本公开的各方面中,在时序测试模式下,应用程序线程可在与应用程序所指定的CPU核心不同的CPU核心上执行。以举例而不是限制的方式,在具有各自有两个核心的两个集群(集群“A”和集群“B”)的系统中,指定在集群A的核心0上执行的所有线程可相反地在集群B的核心0上执行,而指定在集群B的核心0上执行的所有线程可相反地在集群A的核心0上执行,从而导致与装置的正常操作下相比,线程处理的执行时序不同,这是由于与不同的线程共享集群高级别高速缓存所致。
在本公开的各方面中,在时序测试模式下,OS 321可随机地或有条理地回写或使CPU高速缓存无效,或使指令和数据TLB无效。以举例而不是限制的方式,OS可随机地回写并使所有CPU核心的高速缓存分层结构无效,从而导致失效和回写期间线程执行的延迟以及在线程请求通常在高速缓存分级结构中找到的数据时的延迟,从而导致装置的正常操作期间没有遇到的时序。
在本公开的各方面中,在时序测试模式下,GPU和具有可单独配置频率的任何GPU子单元可被配置来以与装置的正常操作不同的频率运行,或者OS可连续地或偶尔修改GPU以及其可单独配置子单元中的任一者的频率。
另外,一个或多个高速缓存(诸如L1I-高速缓存和D-高速缓存、ITLB和DTLB高速缓存分级结构以及更高级别高速缓存)的其他行为可以在时序测试模式下扰乱时序的方式来修改。高速缓存行为修改中的这种改变的一个非限制性实例将是改变特定高速缓存是否为独占式的或为内含式的。在正常模式下为内含式的高速缓存可被配置成在时序测试模式下为独占式的,反之亦然。
高速缓存行为修改的另一非限制性实例涉及高速缓存查找行为。在时序测试模式下,高速缓存查找可以与正常模式下不同的方式来实现。在较新硬件在高速缓存查找之前从虚拟地址转换为物理地址而较旧硬件则没有的情况下,与较旧处理器硬件相比,某些较新处理器硬件的存储器访问可实际上减慢。对于通过物理地址存储的高速缓存条目,如通常针对多核心CPU高速缓存325所实现,在执行高速缓存查找(例如,在L1和L2中)之前,虚拟地址始终被转换为物理地址。在执行任何高速缓存查找之前始终将虚拟地址转换为物理地址允许写入特定存储器位置的核心通知其他核心不写入所述位置。相比而言,可执行针对根据虚拟地址所存储的高速缓存条目进行的高速缓存查找(例如,对于GPU高速缓存334来说)而无需转换地址。这是更快的,因为只有在高速缓存未命中的情况下才需要执行地址转换,即,条目不在高速缓存中并且必须在存储器340中查找。例如,在较旧GPU硬件通过虚拟地址存储高速缓存条目而较新GPU硬件通过物理地址存储高速缓存条目的情况下,高速缓存行为之间的差别可在较新硬件中引入5至1000个周期的延迟。为针对由高速缓存查找行为的差别造成的错误而测试应用程序322,在时序测试模式下,针对一个或多个高速缓存(例如,GPU高速缓存334)进行的高速缓存行为和高速缓存查找行为可从基于虚拟地址变为基于物理地址,反之亦然。
行为修改的另一非限制性实例将是,对于在正常模式下启用I-高速缓存预提取功能的一个或多个I-高速缓存,在时序测试模式下禁用这种功能。
在本公开的各方面中,在时序测试模式下,在时序测试模式下,OS可用具有与装置的正常操作不同时序的固件来替换GPU固件(若存在)。以举例而不是限制的方式,在时序测试模式下,固件可被对于每个所处理对象具有更高开销的固件,或被支持可同时加以处理的较低对象计数的固件来替换,从而导致装置的正常操作期间没有遇到的时序。
在本公开的各方面中,在时序测试模式下,GPU资源可被配置成以影响应用程序请求的处理时序的方式受限。GPU高速缓存334可在大小方面减小(例如,可减小可存储于完全相关联高速缓存中的值数目,或针对具有有限数目的方式的高速缓存,可减小可用组计数或方式计数)。可减小在GPU核心332上运行的所有指令或特定指令的执行速率(例如,时延增加和/或吞吐量降低)。
在本公开的各方面中,在时序测试模式下,OS 321可请求GPU330执行减少应用程序322可用于其处理的所述剩余资源的处理。这些请求在其时序上可以是随机的或有条理的。以举例而不是限制的方式,OS 321可请求更高优先级来渲染图形对象或计算着色器,这可取代较低优先级的应用程序渲染或其他计算,或者OS 321可请求其处理发生在特定GPU核心332上并由此不当地影响指定正在那些GPU核心上发生的应用程序处理。
在本公开的各方面中,在时序测试模式下,OS 321可随机地或有条理地请求GPU330回写或使其高速缓存无效,或使其指令和数据TLB无效。
根据本公开的各方面,APU 310可包括用于内部总线317的内部时钟316,所述内部总线317以本文中被称为“内部总线时钟”的特定时钟速率或速率组操作。内部总线317连接到存储器控制器315,所述存储器控制器315继而连接到外部存储器340。从存储器控制器315到存储器340的通信可以本文中被称为“存储器时钟”的另一特定时钟速率发生。
根据本公开的各方面,当装置300以时序测试模式操作时,存储器时钟和/或内部总线时钟可被配置来以与它们在装置的正常操作期间不同的(更高或更低)频率运行,或者OS 321可连续地或偶尔修改存储器时钟和/或内部总线时钟的频率。
在本公开的各方面中,在时序测试模式下,存储器控制器315可被配置来模拟以下各项:从外部存储器适当读取数据的随机故障;增加由存储器控制器执行的某些类型的存储器访问的时延;或在各种类型的存储器访问之间使用与装置的正常操作期间使用的优先级次序不同的优先级次序。OS 321可在时序测试模式下连续地或偶尔修改这些配置。
根据本公开的各方面,在时序测试模式下,存储器控制器315可被配置使得地址线被置换,例如,可将通常放在一条地址线上的信号用放在另一地址线上的信号交换。以举例而不是限制的方式,如果地址线A用于向外部存储器315发送列信息,而地址线B用于向外部存储器340发送行信息,并且在时序测试模式下发送到地址线A和B的信号被交换,那么结果将是,时序与装置的正常操作期间发现的时序迥然不同。
如上所述地配置硬件和执行操作(例如,将CPU核心配置成以不同的频率运行),可暴露同步逻辑中的错误,但是如果装置的实时行为是重要的,那么时序测试模式本身可导致操作中的错误,例如,就视频游戏控制台而言,由于较低速度CPU核心不能满足由显示时序、音频流式输出等所强加的实时期限而导致的错误。根据本公开的各方面,在时序测试模式下,装置300可以比标准操作速度高的速度运行。以非限制性实例的方式,比标准操作速度高的速度可以是比标准操作速度高大约5%至大约30%。以举例而不是限制的方式,在时序测试模式下,CPU、CPU高速缓存、GPU、内部总线和存储器的时钟可设置成比装置的标准操作频率(或标准操作频率范围)高的频率。由于装置300的大规模生产版本可以避免将时钟设置在高于标准操作频率的方式来构造,因此可能需要创建专门设计的硬件,例如使用比对应大规模生产装置高的速度的存储器芯片的硬件,或使用片上系统(SoC)的制造运行的允许比平均高的速度操作的部分的硬件,或使用比大规模生产装置上所使用的更高规格的母板、电源供应和冷却系统的硬件。
以举例而不是限制的方式,如果专门设计的硬件允许CPU的操作速度比大规模生产的装置的高,并且如果在大规模生产的装置上有四个在其典型操作模式下以1GHz运行的核心,那么在时序测试模式下在专门设计的硬件上,在连续的十秒周期期间,可选择三个核心以1.2GHz运行,而剩余的核心可以1GHz运行。因此,在选定核心上运行的处理将比在其他核心上运行得更慢,从而暴露同步逻辑中可能的错误,但是不像所有核心运行得至少与它们在大规模生产的装置上一样快的先前实例,可满足实时期限(例如,用于显示时序),并且时序测试模式本身不太可能导致操作中的错误。
以举例而不是限制的方式,如果专门设计的硬件允许CPU的操作速度比大规模生产的装置的高,并且如果在大规模生产的装置上有四个在其典型操作模式下以1GHz运行的核心,那么在时序测试模式下在专门设计的硬件上,可选择所有核心以1.2GHz运行,并且OS321可随机地回写并使CPU高速缓存无效。如果由于高速缓存回写和失效导致的减速程度小于由于更高CPU频率导致的加速,那么如上,可满足实时期限,并且时序测试模式本身不太可能导致操作中的错误,换言之,时序测试模式可通过高速缓存操作引入偏斜,并且可执行针对同步错误进行的测试而无需担心装置的总体操作将减慢并因此更易于出错。
存在可在时序测试模式下显示应用程序错误的若干方式。根据一个实现方式,专门设计的硬件可包括被配置来确定由装置300执行的每循环指令(IPC)数目的电路。OS 321可监视IPC中的改变以测试应用程序中的错误。在时序测试模式下,OS可将IPC中的显著变化与对装置操作的特定修改关联起来。
根据本公开的各方面,计算机装置可以时序测试模式操作。以举例而不是限制的方式,计算机系统(如装置300)可具有操作系统(如操作系统321),所述操作系统321被配置来以类似于图5所示并且下文论述的方法500的方式实现这种测试模式。
如501所示,所述方法开始。在510处,确定系统是否将以时序测试模式运行。存在可实现此举的若干方式。以举例而不是限制的方式,操作系统321可通过显示器380上的渲染图形382来提示用户确定是否进入时序测试模式,并且用户可通过用户界面370输入适当指令。如果确定系统不应以时序测试模式操作,那么系统可正常运行,如520所示。如果确定系统应以时序测试模式操作,那么可将装置设置成以时序测试模式运行,如530所示。将装置设置成以时序测试模式运行可通常涉及装置的操作系统(例如,OS 321)设置硬件状态、加载固件和执行其他操作,以便实现特定于时序测试模式的设置。
可以大量可能方式中的任一种将装置300设置成以时序测试模式运行。以举例而不是限制的方式,在一些实现方式中,可通过(例如)网络(例如,局域网(LAN))在外部配置装置。在另一非限制性实例中,可通过使用由操作系统生成的菜单和来自用户界面的输入来在内部配置装置。在其他非限制性实例中,可通过对装置硬件的物理配置,例如,通过手动设置一个或多个双列直插式封装(DIP)开关在装置上的位置,将装置设置成以时序测试模式运行。装置固件(例如,存储在ROM中)可然后(例如)在装置通电时读取DIP开关的设置。例如,在装置是专门设计的硬件而不是装置的大规模生产版本的情况下,后一种实现方式可能是有用的。在这类情况下,方便起见,开关可位于包含装置硬件的盒子或箱子外部。
一旦装置设置成以时序测试模式运行,那么装置可以时序测试模式运行应用程序,如540所示。存在若干方式可使系统在时序测试模式下的操作不同于正常装置操作。
以举例而不是限制的方式,虽然应用程序322正在运行,但是OS 321可在以时序测试运行应用程序的同时执行以下各项中的一者或多者:
○实时修改硬件设置,如542所示;
○以扰乱时序的方式向装置300的各种硬件组件发送命令,如544所示;
○运行干扰应用程序322的程序,例如,通过从应用程序夺取资源,暂停应用程序或与应用程序竞争资源,如546所示。
○在时序测试模式下以扰乱时序的方式更改OS 321的功能,如548所示。
一旦应用程序322在装置300处于时序测试模式的情况下运行,应用程序就可针对错误进行测试,如550所示。这种测试可包括但不限于:确定应用程序是否停止、生成错误或产生装置正常运行时不会出现的异常结果(例如,显著IPC变化)。
作为542处修改设置的实例,在图2所示类型的处理器体系结构中,两个或更多个CPU核心可以不同频率运行,所述频率可以是比消费者装置的正常操作频率高的频率。类似地,装置内的两个或更多个高速缓存可在时序测试模式下以不同频率运行。此外,核心和高速缓存的不同组合可以不同频率运行。
在其他实施方案中,当装置以时序测试模式操作时,CPU资源可减少。这种CPU资源减少的实例包括但不限于减小存储队列、加载队列或高速缓存(例如,L1或更高级别,I-高速缓存,D-高速缓存,ITLB或DTLB)的大小。其他实例包括但不限于减小ALU、AGU、SIMD管或特定指令的执行速率。另外,可随机地或有条理地先占一个或多个个别核心或应用程序线程。附加实例包括在使用OS功能时延迟或加速或改变时序、改变OS对核心的使用、更改虚拟到物理核心指派(例如集群间竞争)、利用其它不对称或者回写或使高速缓存和/或TLB无效。
在其他实现方式中,542处修改设置可包括更改GPU 330的功能。这类更改的实例包括以不同频率运行GPU核心332、以与消费者装置正常不同的频率运行GPU核心中的一个或多个、用具有与装置300的正常操作不同时序的固件替换GPU固件。GPU核心332中的一个或多个可被配置来以比装置的正常操作模式所使用的频率高或低的频率选择性地操作。其他实例包括扰乱GPU固件(例如,扰乱对象处理),和减少诸如高速缓存大小或执行速率的GPU资源减少。
在其他实现方式中,当以时序测试模式运行装置时可更改GPU处理,例如通过经由随机计算线程改变波前计数、随机先占图形或者通过回写或使高速缓存和/或TLB无效。
544处以扰乱时序的方式向硬件组件发送命令的实例包括更改存储器340或存储器控制器315的功能。存储器或存储器控制器功能的这种改变的实例包括但不限于:以不同频率运行存储器时钟和/或内部总线时钟、将噪音插入存储器操作,向存储器操作添加时延、改变存储器操作的优先级以及改变行和/或列信道位,以便模拟不同信道计数或断行。
本公开的各方面允许软件开发人员测试装置的先前版本上的新应用程序的性能。更具体来说,本公开的各方面允许开发人员探查时序扰乱对应用程序的影响。
虽然以上是对本发明的优选实施方案的完整描述,但是可以使用各种替代、修改和等效物。因此,本发明的范围不应参考以上描述来确定,而是应参考随附权利要求书以及其完整的等效物范围来确定。本文所述的任何特征(不论优选与否)可与本文所述的任何其他特征组合(不论优选与否)。在以下权利要求书中,不定冠词“一个”或“一种”是指冠词后的一个或多个项的量,除非另外明确说明。如本文所用,在替代例中的一列元件中,术语“或”用作包括含义,例如,“X或Y”只涵盖X、只涵盖Y或涵盖X和Y两者一起,除非另外明确说明。作为替代例列出的两个或更多个元件可组合在一起。随附权利要求书不应被解释为包括装置加功能限制,除非在给定权利要求中使用短语“用于……的装置”明确陈述了这种限制。

Claims (140)

1.一种装置,其包括:
一个或多个处理器;
存储器,其耦合到所述一个或多个处理器;以及
操作系统(OS),其存储在所述存储器中,被配置来在所述一个或多个处理器中的至少一个子集上运行,其中所述操作系统被配置来选择性地以正常模式或时序测试模式运行,其中在所述时序测试模式下,所述装置被配置来在用所述一个或多个处理器运行应用程序时,扰乱所述一个或多个处理器上发生的处理的时序,并且在所述装置正在所述时序测试模式下运行时测试所述应用程序的错误。
2.如权利要求1所述的装置,其中在所述时序测试模式下,所述装置被配置来在所述一个或多个处理器上运行应用程序时,通过实时修改所述装置的一个或多个硬件设置来扰乱所述一个或多个处理器上发生的处理的时序。
3.如权利要求1所述的装置,其中在所述时序测试模式下,所述装置被配置来在所述一个或多个处理器上运行应用程序时,通过以扰乱时序的方式向所述装置的一个或多个硬件组件发送命令来扰乱所述一个或多个处理器上发生的处理的时序。
4.如权利要求1所述的装置,其中所述一个或多个处理器包括一个或多个中央处理器单元(CPU)核心,其中在所述时序测试模式下,所述一个或多个CPU核心的至少一个子集被配置来以与所述一个或多个CPU核心在正常模式下的标准操作频率不同的一个或多个频率操作。
5.如权利要求4所述的装置,其中所述一个或多个CPU核心的所述至少一个子集被配置一次来以与所述一个或多个CPU核心在正常模式下的标准操作频率不同的一个或多个频率操作。
6.如权利要求4所述的装置,其中,在所述时序测试模式下,所述OS修改所述一个或多个CPU核心的所述至少一个子集中的特定CPU核心的操作频率。
7.如权利要求4所述的装置,其中在所述时序测试模式下,所述一个或多个CPU核心的所述至少一个子集被配置来以相同频率操作。
8.如权利要求4所述的装置,其中在所述时序测试模式下,所述一个或多个CPU核心的所述至少一个子集被配置来以不同频率操作。
9.如权利要求4所述的装置,其中在所述时序测试模式下,所述一个或多个CPU核心的所述至少一个子集中的一个或多个给定CPU核心被配置来以一个频率操作,而所述一个或多个CPU核心的所述至少一个子集中的一个或多个其他CPU核心被配置来以另一频率操作。
10.如权利要求4所述的装置,其中所述一个或多个CPU核心的所述至少一个子集中的所述CPU核心中的一个或多个被配置来以比所述一个或多个CPU核心在正常模式下的标准操作频率高的一个或多个频率操作。
11.如权利要求4所述的装置,其中所述一个或多个CPU核心的所述至少一个子集中的所述CPU核心中的一个或多个被配置来以比所述一个或多个CPU核心在正常模式下的标准操作频率低的一个或多个频率操作。
12.如权利要求1所述的装置,其还包括耦合到所述一个或多个处理器的一个或多个高速缓存,其中在所述时序测试模式下,所述一个或多个高速缓存的至少一个子集被配置来以与所述一个或多个高速缓存在正常模式下的标准操作频率不同的一个或多个频率操作。
13.如权利要求12所述的装置,其中所述一个或多个高速缓存的所述至少一个子集被配置一次来以与所述一个或多个高速缓存在正常模式下的标准操作频率不同的一个或多个频率操作。
14.如权利要求12所述的装置,其中,在所述时序测试模式下,所述OS修改所述一个或多个高速缓存的所述至少一个子集中的高速缓存的操作频率。
15.如权利要求12所述的装置,其中在所述时序测试模式下,所述一个或多个高速缓存的所述至少一个子集被配置来以相同频率操作。
16.如权利要求12所述的装置,其中在所述时序测试模式下,所述一个或多个高速缓存的所述至少一个子集被配置来以不同频率操作。
17.如权利要求12所述的装置,其中在所述时序测试模式下,所述一个或多个高速缓存的所述至少一个子集中的至少一个高速缓存被配置来以一个频率操作,而所述一个或多个高速缓存的所述至少一个子集中的一个或多个其他高速缓存被配置来以另一频率操作。
18.如权利要求12所述的装置,其中所述一个或多个高速缓存的所述至少一个子集中的所述高速缓存中的一个或多个被配置来以比所述一个或多个高速缓存在正常模式下的标准操作频率高的一个或多个频率操作。
19.如权利要求12所述的装置,其中所述一个或多个高速缓存的所述至少一个子集中的所述高速缓存中的一个或多个被配置来以比所述一个或多个高速缓存在正常模式下的标准操作频率低的一个或多个频率操作。
20.如权利要求1所述的装置,其还包括耦合到所述一个或多个处理器的一个或多个高速缓存,其中在所述时序测试模式下,所述一个或多个高速缓存的至少一个子集被配置来以与所述一个或多个高速缓存在正常模式下的可用方式计数不同的可用方式计数操作。
21.如权利要求1所述的装置,其还包括耦合到所述一个或多个处理器的一个或多个高速缓存,其中在所述时序测试模式下,所述一个或多个高速缓存的至少一个子集被配置来以与所述一个或多个高速缓存在正常模式下的可用组计数不同的可用组计数操作。
22.如权利要求1所述的装置,其还包括耦合到所述一个或多个处理器的一个或多个高速缓存,其中被配置来在正常模式下作为内含式高速缓存操作的所述一个或多个高速缓存的至少一个子集被重新配置来在所述时序测试模式下作为独占式高速缓存操作。
23.如权利要求1所述的装置,其还包括耦合到所述一个或多个处理器的一个或多个高速缓存,其中被配置来在正常模式下作为内含式高速缓存操作的所述一个或多个高速缓存的至少一个子集被重新配置来在所述时序测试模式下作为独占式高速缓存操作。
24.如权利要求1所述的装置,其还包括耦合到所述一个或多个处理器的一个或多个高速缓存,其中所述一个或多个高速缓存的至少一个子集的在正常模式下基于虚拟地址的高速缓存和高速缓存查找行为被改变成在所述时序测试模式下基于虚拟地址的高速缓存和高速缓存查找行为。
25.如权利要求1所述的装置,其还包括耦合到所述一个或多个处理器的一个或多个指令高速缓存,其中所述一个或多个指令高速缓存的至少一个子集的在正常模式下被启用的预提取功能在所述时序测试模式下被禁用。
26.如权利要求1所述的装置,其中在所述时序测试模式下,所述装置被配置来在所述一个或多个处理器上运行应用程序时,通过运行干扰所述应用程序的一个或多个程序来扰乱所述一个或多个处理器上发生的处理的时序。
27.如权利要求22所述的装置,其中所述一个或多个程序从所述应用程序夺取资源。
28.如权利要求22所述的装置,其中所述一个或多个程序暂停所述应用程序。
29.如权利要求22所述的装置,其中所述一个或多个程序与所述应用程序竞争资源。
30.如权利要求1所述的装置,其中在所述时序测试模式下,所述装置被配置来在所述一个或多个处理器上运行应用程序时,通过以扰乱时序的方式更改所述操作系统的功能来扰乱所述一个或多个处理器上发生的处理的时序。
31.如权利要求1所述的装置,其中所述一个或多个处理器包括中央处理单元(CPU),其中,在所述时序测试模式下,所述装置被配置来在所述一个或多个处理器上运行应用程序时,通过减少可用于运行所述应用程序的所述CPU的资源来扰乱所述一个或多个处理器上发生的处理的时序。
32.如权利要求31所述的装置,其中减少可用于运行所述应用程序的所述CPU的资源包括减小队列的大小。
33.如权利要求32所述的装置,其中减少可用于运行所述应用程序的所述CPU的资源包括减小存储队列的大小。
34.如权利要求32所述的装置,其中减少可用于运行所述应用程序的所述CPU的资源包括减小加载队列的大小。
35.如权利要求32所述的装置,其中减少可用于运行所述应用程序的所述CPU的资源包括减小调度队列的大小。
36.如权利要求32所述的装置,其中减少可用于运行所述应用程序的所述CPU的资源包括减小停用队列的大小。
37.如权利要求31所述的装置,其中减少可用于运行所述应用程序的所述CPU的资源包括减小高速缓存的大小。
38.如权利要求37所述的装置,其中减少可用于运行所述应用程序的所述CPU的资源包括减小1级指令高速缓存的大小。
39.如权利要求37所述的装置,其中减少可用于运行所述应用程序的所述CPU的资源包括减小1级数据高速缓存的大小。
40.如权利要求37所述的装置,其中减少可用于运行所述应用程序的所述CPU的资源包括减小更高级别高速缓存的大小。
41.如权利要求31所述的装置,其中减少可用于运行所述应用程序的所述CPU的资源包括减小表后备缓冲器(TLB)的大小。
42.如权利要求41所述的装置,其中减少可用于运行所述应用程序的所述CPU的资源包括减小指令转换后备缓冲器(ITLB)的大小。
43.如权利要求41所述的装置,其中减少可用于运行所述应用程序的所述CPU的资源包括减小数据转换后备缓冲器(DTLB)的大小。
44.如权利要求31所述的装置,其中减少可用于运行所述应用程序的所述CPU的资源包括减小一个或多个指令管的执行速率。
45.如权利要求31所述的装置,其中减少可用于运行所述应用程序的所述CPU的资源包括减小一个或多个特定指令的执行速率。
46.如权利要求31所述的装置,其中减少可用于运行所述应用程序的所述CPU的资源包括减小由所述CPU执行的所有指令的执行速率。
47.如权利要求31所述的装置,其中所述CPU包括算术逻辑单元(ALU),其中减少可用于运行所述应用程序的所述CPU的资源包括减小由所述ALU执行的一个或多个特定指令的执行速率。
48.如权利要求31所述的装置,其中所述CPU包括算术逻辑单元(ALU),其中减少可用于运行所述应用程序的所述CPU的资源包括减小由所述ALU执行的所有指令的执行速率。
49.如权利要求31所述的装置,其中所述CPU包括地址生成单元(AGU),其中减少可用于运行所述应用程序的所述CPU的资源包括减小由所述AGU执行的一个或多个特定指令的执行速率。
50.如权利要求31所述的装置,其中所述CPU包括地址生成单元(AGU),其中减少可用于运行所述应用程序的所述CPU的资源包括减小由所述AGU执行的所有指令的执行速率。
51.如权利要求31所述的装置,其中所述CPU包括单指令多数据(SIMD)单元,其中减少可用于运行所述应用程序的所述CPU的资源包括减小由所述SIMD单元执行的一个或多个特定指令的执行速率。
52.如权利要求31所述的装置,其中所述CPU包括单指令多数据(SIMD)单元,其中减少可用于运行所述应用程序的所述CPU的资源包括减小由所述SIMD单元执行的所有指令的执行速率。
53.如权利要求31所述的装置,其中所述CPU包括一个或多个处理器核心,其中减小可用于运行所述应用程序的所述CPU的资源包括先占所述一个或多个处理器核心的一个或多个个别处理器核心。
54.如权利要求1所述的装置,其中,在所述时序测试模式下,所述装置被配置来在所述一个或多个处理器上运行应用程序时,通过暂停一个或多个应用程序线程来扰乱所述一个或多个处理器上发生的处理的时序。
55.如权利要求1所述的装置,其中,在所述时序测试模式下,所述装置被配置来在所述一个或多个处理器上运行应用程序时,通过暂停多个应用程序线程来扰乱所述一个或多个处理器上发生的处理的时序。
56.如权利要求1所述的装置,其中,在所述时序测试模式下,所述装置被配置来在所述一个或多个处理器上运行应用程序时,通过暂停所有应用程序线程来扰乱所述一个或多个处理器上发生的处理的时序。
57.如权利要求1所述的装置,其中,在所述时序测试模式下,所述装置被配置来在所述一个或多个处理器上运行应用程序时,通过随机地对一个或多个应用程序线程的暂停进行时序的选择来扰乱所述一个或多个处理器上发生的处理的时序。
58.如权利要求1所述的装置,其中,在所述时序测试模式下,所述装置被配置来在所述一个或多个处理器上运行应用程序时,通过有条理地对一个或多个应用程序线程的暂停进行时序的选择来扰乱所述一个或多个处理器上发生的处理的时序。
59.如权利要求1所述的装置,其中,在所述时序测试模式下,所述装置被配置来在所述一个或多个处理器上运行应用程序时,通过延迟在使用所述OS的功能时引入的时序来扰乱所述一个或多个处理器上发生的处理的时序。
60.如权利要求1所述的装置,其中,在所述时序测试模式下,所述装置被配置来在所述一个或多个处理器上运行应用程序时,通过加速在使用所述OS的功能时引入的时序来扰乱所述一个或多个处理器上发生的处理的时序。
61.如权利要求1所述的装置,其中,在所述时序测试模式下,所述装置被配置来在所述一个或多个处理器上运行应用程序时,通过改变在使用所述OS的功能时引入的时序来扰乱所述一个或多个处理器上发生的处理的时序。
62.如权利要求1所述的装置,其中,在时序测试模式下,当所述OS执行所述应用程序所请求的处理时,由所述OS所花费的时间和所述OS用于执行所述处理的所述一个或多个处理器中的特定处理器与在正常模式下的操作期间由所述OS所花费的时间和用于执行所述处理的所述特定处理器不同。
63.如权利要求1所述的装置,其中,在时序测试模式下,当所述OS与来自所述应用程序的请求无关地执行处理时,由所述OS所花费的时间和所述OS用于执行所述处理的所述一个或多个处理器中的特定处理器与在正常模式下由所述OS所花费的时间和用于执行所述处理的所述特定处理器不同。
64.如权利要求1所述的装置,其中所述一个或多个处理器包括中央处理单元(CPU),并且其中在所述时序测试模式下,所述装置被配置来在用所述一个或多个处理器运行应用程序时,通过回写或使所述CPU的一个或多个高速缓存和/或转换后备缓冲器无效来扰乱所述一个或多个处理器上发生的处理的时序。
65.如权利要求1所述的装置,其中所述一个或多个处理器包括中央处理单元(CPU),并且其中在所述时序测试模式下,所述装置被配置来在用所述一个或多个处理器运行应用程序时,通过回写所述CPU的一个或多个高速缓存来扰乱所述一个或多个处理器上发生的处理的时序。
66.如权利要求1所述的装置,其中所述一个或多个处理器包括中央处理单元(CPU),并且其中在所述时序测试模式下,所述装置被配置来在用所述一个或多个处理器运行应用程序时,通过使所述CPU的一个或多个高速缓存无效来扰乱所述一个或多个处理器上发生的处理的时序。
67.如权利要求1所述的装置,其中所述一个或多个处理器包括中央处理单元(CPU),并且其中在所述时序测试模式下,所述装置被配置来在用所述一个或多个处理器运行应用程序时,通过回写所述CPU的一个或多个转换后备缓冲器来扰乱所述一个或多个处理器上发生的处理的时序。
68.如权利要求1所述的装置,其中所述一个或多个处理器包括中央处理单元(CPU),并且其中在所述时序测试模式下,所述装置被配置来在用所述一个或多个处理器运行应用程序时,通过使所述CPU的一个或多个转换后备缓冲器无效来扰乱所述一个或多个处理器上发生的处理的时序。
69.如权利要求1所述的装置,其中所述一个或多个处理器包括中央处理单元(CPU),并且其中在所述时序测试模式下,所述装置被配置来在用所述一个或多个处理器运行应用程序时,通过回写所述CPU的一个或多个指令转换后备缓冲器(ITLB)来扰乱所述一个或多个处理器上发生的处理的时序。
70.如权利要求1所述的装置,其中所述一个或多个处理器包括中央处理单元(CPU),并且其中在所述时序测试模式下,所述装置被配置来在用所述一个或多个处理器运行应用程序时,通过使所述CPU的一个或多个指令转换后备缓冲器(ITLB)无效来扰乱所述一个或多个处理器上发生的处理的时序。
71.如权利要求1所述的装置,其中所述一个或多个处理器包括中央处理单元(CPU),并且其中在所述时序测试模式下,所述装置被配置来在用所述一个或多个处理器运行应用程序时,通过回写所述CPU的一个或多个数据转换后备缓冲器(DTLB)来扰乱所述一个或多个处理器上发生的处理的时序。
72.如权利要求1所述的装置,其中所述一个或多个处理器包括中央处理单元(CPU),并且其中在所述时序测试模式下,所述装置被配置来在用所述一个或多个处理器运行应用程序时,通过使所述CPU的一个或多个数据转换后备缓冲器(DTLB)无效来扰乱所述一个或多个处理器上发生的处理的时序。
73.如权利要求1所述的装置,其中所述一个或多个处理器包括多个处理器核心,其中在所述时序测试模式下,所述装置被配置来在所述多个处理器核心中的除了由所述应用程序指定的处理器核心以外的一个处理器核心上执行所述应用程序的线程。
74.如权利要求1所述的装置,其中所述一个或多个处理器包括具有两个或更多个集群的中央处理单元(CPU),所述集群共享更高级别高速缓存,每个集群包含耦合到集群级别高速缓存的一个或多个核心,其中,在所述时序测试模式下,所述装置被配置来将所述应用程序的线程重新指派给与正常模式下所述线程被指派的集群不同的集群中的核心。
75.如权利要求1所述的装置,其还包括耦合到所述一个或多个处理器和所述存储器的一个或多个总线,其中在所述时序测试模式下,所述一个或多个总线的至少一个子集被配置来以与所述一个或多个总线在正常模式下的标准操作频率不同的一个或多个频率操作。
76.如权利要求1所述的装置,其还包括耦合到所述一个或多个处理器和所述存储器的一个或多个总线,其中在所述时序测试模式下,所述一个或多个总线的至少一个子集被配置来以比所述一个或多个总线在正常模式下的标准操作频率高的一个或多个频率操作。
77.如权利要求1所述的装置,其还包括耦合到所述一个或多个处理器和所述存储器的一个或多个总线,其中在所述时序测试模式下,所述一个或多个总线的至少一个子集被配置来以比所述一个或多个总线在正常模式下的标准操作频率低的一个或多个频率操作。
78.如权利要求1所述的装置,其中所述一个或多个处理器包括具有一个或多个GPU核心的图形处理器单元,其中在所述时序测试模式下,所述一个或多个GPU核心的至少一个子集被配置来以与所述一个或多个GPU核心在正常模式下的标准操作频率不同的一个或多个频率操作。
79.如权利要求78所述的装置,其中在所述时序测试模式下,所述一个或多个GPU核心的所述至少一个子集被配置来以相同频率操作。
80.如权利要求78所述的装置,其中在所述时序测试模式下,所述一个或多个GPU核心的所述至少一个子集被配置来以不同频率操作。
81.如权利要求78所述的装置,其中在所述时序测试模式下,所述一个或多个GPU核心的所述至少一个子集中的至少一个GPU核心被配置来以一个频率操作,而所述一个或多个GPU核心的所述至少一个子集中的一个或多个其他GPU核心被配置来以另一频率操作。
82.如权利要求78所述的装置,其中所述一个或多个GPU核心的所述至少一个子集中的所述GPU核心中的一个或多个被配置来以比所述一个或多个GPU核心在正常模式下的标准操作频率高的一个或多个频率操作。
83.如权利要求78所述的装置,其中所述一个或多个GPU核心的所述至少一个子集中的所述GPU核心中的一个或多个被配置来以比所述一个或多个GPU核心在正常模式下的标准操作频率低的一个或多个频率操作。
84.如权利要求1所述的装置,其中所述一个或多个处理器包括图形处理单元(GPU),其中,在所述时序测试模式下,所述装置被配置来在所述一个或多个处理器上运行应用程序时,通过更改所述GPU的功能来扰乱所述一个或多个处理器上发生的处理的时序。
85.如权利要求84所述的装置,其中更改所述GPU的功能包括用具有与所述装置的正常操作不同的时序的固件替换GPU固件。
86.如权利要求84所述的装置,其中更改所述GPU的功能包括扰乱对象处理。
87.如权利要求84所述的装置,其中在所述时序测试模式下,所述操作系统请求所述GPU执行扰乱所述GPU的时序的处理。
88.如权利要求1所述的装置,其中所述一个或多个处理器包括图形处理单元(GPU),其中,在所述时序测试模式下,所述装置被配置来在所述一个或多个处理器上运行应用程序时,通过减少GPU资源来扰乱所述一个或多个处理器上发生的处理的时序。
89.如权利要求88所述的装置,其中减少GPU资源包括减小GPU高速缓存的大小。
90.如权利要求88所述的装置,其中减少GPU资源包括减小所述GPU的转换后备缓冲器的大小。
91.如权利要求88所述的装置,其中减少GPU资源包括减小所述GPU的指令转换后备缓冲器(ITLB)的大小。
92.如权利要求88所述的装置,其中减少GPU资源包括减小所述GPU的数据转换后备缓冲器(DTLB)的大小。
93.如权利要求88所述的装置,其中减少GPU资源包括减小一个或多个指令的执行速率。
94.如权利要求88所述的装置,其中减少GPU资源包括减小指令管的执行速率。
95.如权利要求88所述的装置,其中减少GPU资源包括减小一个或多个特定GPU指令的执行速率。
96.如权利要求88所述的装置,其中减少GPU资源包括减小由所述GPU执行的所有指令的执行速率。
97.如权利要求1所述的装置,其中所述一个或多个处理器包括图形处理单元(GPU),并且其中在所述时序测试模式下,所述装置被配置来在用所述一个或多个处理器运行应用程序时,通过回写或使所述GPU的一个或多个高速缓存和/或转换后备缓冲器无效来扰乱所述一个或多个处理器上发生的处理的时序。
98.如权利要求1所述的装置,其中所述一个或多个处理器包括图形处理单元(GPU),并且其中在所述时序测试模式下,所述装置被配置来在用所述一个或多个处理器运行应用程序时,通过回写所述GPU的一个或多个高速缓存来扰乱所述一个或多个处理器上发生的处理的时序。
99.如权利要求1所述的装置,其中所述一个或多个处理器包括图形处理单元(GPU),并且其中在所述时序测试模式下,所述装置被配置来在用所述一个或多个处理器运行应用程序时,通过使所述GPU的一个或多个高速缓存无效来扰乱所述一个或多个处理器上发生的处理的时序。
100.如权利要求1所述的装置,其中所述一个或多个处理器包括图形处理单元(GPU),并且其中在所述时序测试模式下,所述装置被配置来在用所述一个或多个处理器运行应用程序时,通过回写所述GPU的一个或多个指令转换后备缓冲器(ITLB)来扰乱所述一个或多个处理器上发生的处理的时序。
101.如权利要求1所述的装置,其中所述一个或多个处理器包括图形处理单元(GPU),并且其中在所述时序测试模式下,所述装置被配置来在用所述一个或多个处理器运行应用程序时,通过使所述GPU的一个或多个指令转换后备缓冲器(ITLB)无效来扰乱所述一个或多个处理器上发生的处理的时序。
102.如权利要求1所述的装置,其中所述一个或多个处理器包括图形处理单元(GPU),并且其中在所述时序测试模式下,所述装置被配置来在用所述一个或多个处理器运行应用程序时,通过回写所述GPU的一个或多个数据转换后备缓冲器(DTLB)来扰乱所述一个或多个处理器上发生的处理的时序。
103.如权利要求1所述的装置,其中所述一个或多个处理器包括图形处理单元(GPU),并且其中在所述时序测试模式下,所述装置被配置来在用所述一个或多个处理器运行应用程序时,通过使所述GPU的一个或多个数据转换后备缓冲器(DTLB)无效来扰乱所述一个或多个处理器上发生的处理的时序。
104.如权利要求1所述的装置,其中,在所述时序测试模式下,所述装置被配置来在所述一个或多个处理器上运行应用程序时,通过更改所述存储器的功能来扰乱所述一个或多个处理器上发生的处理的时序。
105.如权利要求1所述的装置,其中,在所述时序测试模式下,所述装置被配置来在所述一个或多个处理器上运行应用程序时,通过向一个或多个存储器操作添加时延来扰乱所述一个或多个处理器上发生的处理的时序。
106.如权利要求1所述的装置,其中,在所述时序测试模式下,所述装置被配置来在所述一个或多个处理器上运行应用程序时,通过改变一个或多个存储器操作的优先级来扰乱所述一个或多个处理器上发生的处理的时序。
107.如权利要求1所述的装置,其中,在所述时序测试模式下,所述装置被配置来在所述一个或多个处理器上运行应用程序时,通过将正常模式下放在一条地址线上的信号用放在另一地址线上的信号交换来扰乱所述一个或多个处理器上发生的处理的时序。
108.如权利要求1所述的装置,其中在所述时序测试模式下,所述存储器被配置来以与所述存储器在正常模式下的标准操作频率不同的一个或多个频率操作。
109.如权利要求1所述的装置,其中在所述时序测试模式下,所述存储器被配置来以比所述存储器在正常模式下的标准操作频率高的一个或多个频率操作。
110.如权利要求1所述的装置,其中在所述时序测试模式下,所述存储器被配置来以比所述存储器在正常模式下的标准操作频率低的一个或多个频率操作。
111.如权利要求1所述的装置,其中在所述时序测试模式下,存储器时钟被配置来以与所述存储器时钟在正常模式下的标准操作频率不同的频率运行。
112.如权利要求1所述的装置,其中在所述时序测试模式下,存储器时钟被配置来以比所述存储器时钟在正常模式下的标准操作频率高的频率运行。
113.如权利要求1所述的装置,其中在所述时序测试模式下,存储器时钟被配置来以比所述存储器时钟在正常模式下的标准操作频率低的频率运行。
114.如权利要求1所述的装置,其中在所述时序测试模式下,总线时钟被配置来以与所述存储器时钟在正常模式下的标准操作频率不同的频率运行。
115.如权利要求1所述的装置,其中在所述时序测试模式下,总线时钟被配置来以比所述存储器时钟在正常模式下的标准操作频率高的频率运行。
116.如权利要求1所述的装置,其中在所述时序测试模式下,总线时钟被配置来以比所述存储器时钟在正常模式下的标准操作频率低的频率运行。
117.如权利要求1所述的装置,其中在所述时序测试模式下,所述操作系统修改存储器时钟的频率。
118.如权利要求1所述的装置,其中在所述时序测试模式下,所述操作系统修改内部总线时钟的频率。
119.如权利要求1所述的装置,其还包括耦合到所述存储器和所述一个或多个处理器中的至少一者的存储器控制器。
120.如权利要求119所述的装置,其中,在所述时序测试模式下,所述存储器控制器被配置来模拟从所述存储器适当读取数据的一个或多个故障。
121.如权利要求119所述的装置,其中,在所述时序测试模式下,所述存储器控制器被配置来增加由所述存储器控制器执行的一个或多个读取的时延。
122.如权利要求119所述的装置,其中,在所述时序测试模式下,所述存储器控制器被配置来在各种类型的读取之间使用与在正常模式下运行所述装置时使用的优先级次序不同的优先级次序。
123.如权利要求119所述的装置,其中在所述时序测试模式下,所述存储器控制器被配置来置换地址线。
124.一种装置,其包括:
一个或多个处理器;
存储器,其耦合到所述一个或多个处理器;并且
其中所述装置被配置来选择性地以正常模式或时序测试模式运行,其中在时序测试模式下,所述装置被配置来在用所述一个或多个处理器运行应用程序时,扰乱所述一个或多个处理器上发生的处理的时序,并且在所述装置在所述时序测试模式下运行时测试所述应用程序的错误。
125.如权利要求124所述的装置,其中所述一个或多个处理器包括具有一个或多个CPU核心的中央处理器单元(CPU),其中所述一个或多个CPU核心的至少一个子集被配置来以与所述一个或多个CPU核心在正常模式下的标准操作频率不同的一个或多个频率操作。
126.如权利要求124所述的装置,其中所述一个或多个处理器包括具有一个或多个CPU核心的中央处理器单元(CPU),其中所述一个或多个CPU核心的至少一个子集被配置来以比所述一个或多个CPU核心在正常模式下的标准操作频率高的一个或多个频率操作。
127.如权利要求124所述的装置,其中所述一个或多个处理器包括具有一个或多个CPU核心的中央处理器单元(CPU),其中所述一个或多个CPU核心的至少一个子集被配置来以比所述一个或多个CPU核心在正常模式下的标准操作频率低的一个或多个频率操作。
128.如权利要求124所述的装置,其还包括一个或多个高速缓存,其中所述一个或多个高速缓存的至少一个子集被配置一次来以与所述一个或多个高速缓存在正常模式下的标准操作频率不同的一个或多个频率操作。
129.如权利要求124所述的装置,其还包括一个或多个高速缓存,其中所述一个或多个高速缓存的至少一个子集被配置一次来以比所述一个或多个高速缓存在正常模式下的标准操作频率高的一个或多个频率操作。
130.如权利要求124所述的装置,其还包括一个或多个总线,其中所述一个或多个总线的至少一个子集被配置来以比所述一个或多个总线在正常模式下的标准操作频率高的一个或多个频率操作。
131.如权利要求124所述的装置,其还包括一个或多个高速缓存,其中所述一个或多个高速缓存的至少一个子集被配置一次来以比所述一个或多个高速缓存在正常模式下的标准操作频率低的一个或多个频率操作。
132.如权利要求124所述的装置,其还包括一个或多个总线,其中所述一个或多个总线的至少一个子集被配置来以与所述一个或多个总线在正常模式下的标准操作频率不同的一个或多个频率操作。
133.如权利要求124所述的装置,其还包括一个或多个总线,其中所述一个或多个总线的至少一个子集被配置来以比所述一个或多个总线在正常模式下的标准操作频率低的一个或多个频率操作。
134.如权利要求124所述的装置,其中所述存储器被配置来以与所述存储器在正常模式下的标准操作频率不同的一个或多个频率操作。
135.如权利要求124所述的装置,其中所述存储器被配置来以比所述存储器在正常模式下的标准操作频率高的一个或多个频率操作。
136.如权利要求124所述的装置,其中所述存储器被配置来以比所述存储器在正常模式下的标准操作频率低的一个或多个频率操作。
137.如权利要求124所述的装置,其还包括被配置来确定由所述装置执行的每循环指令数目的一个或多个电路。
138.如权利要求124所述的装置,其中在所述时序测试模式下,所述装置在所述装置正在所述时序测试模式下运行时通过监视IPC的变化来测试所述应用程序的错误。
139.在具有一个或多个处理器以及耦合到所述一个或多个处理器的存储器的装置中,一种方法,其包括:
以时序测试模式运行所述装置,其中在所述时序测试模式下,所述装置被配置来在用所述一个或多个处理器运行应用程序时,扰乱所述一个或多个处理器上发生的处理的时序;并且
在所述装置正在所述时序测试模式下运行时测试所述应用程序的错误。
140.一种非暂时性计算机可读介质,其具有在其中体现的计算机可读可执行指令,所述指令被配置来使具有处理器和存储器的装置在执行所述指令时实现方法,所述方法包括:
以时序测试模式运行所述装置,其中在所述时序测试模式下,所述装置被配置来在用所述一个或多个处理器运行应用程序时,扰乱所述一个或多个处理器上发生的处理的时序;并且
在所述装置正在所述时序测试模式下运行时测试所述应用程序的错误。
CN201680070684.XA 2015-11-02 2016-10-31 以扰乱时序的模式进行的软件向后兼容性测试 Active CN108369552B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210937412.2A CN115794598A (zh) 2015-11-02 2016-10-31 以扰乱时序的模式进行的软件向后兼容性测试
CN202010187251.0A CN111881013B (zh) 2015-11-02 2016-10-31 以扰乱时序的模式进行的软件向后兼容性测试

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 (2)

Application Number Title Priority Date Filing Date
CN202210937412.2A Division CN115794598A (zh) 2015-11-02 2016-10-31 以扰乱时序的模式进行的软件向后兼容性测试
CN202010187251.0A Division CN111881013B (zh) 2015-11-02 2016-10-31 以扰乱时序的模式进行的软件向后兼容性测试

Publications (2)

Publication Number Publication Date
CN108369552A true CN108369552A (zh) 2018-08-03
CN108369552B CN108369552B (zh) 2022-08-16

Family

ID=58635476

Family Applications (3)

Application Number Title Priority Date Filing Date
CN202210937412.2A Pending CN115794598A (zh) 2015-11-02 2016-10-31 以扰乱时序的模式进行的软件向后兼容性测试
CN201680070684.XA Active CN108369552B (zh) 2015-11-02 2016-10-31 以扰乱时序的模式进行的软件向后兼容性测试
CN202010187251.0A Active CN111881013B (zh) 2015-11-02 2016-10-31 以扰乱时序的模式进行的软件向后兼容性测试

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202210937412.2A Pending CN115794598A (zh) 2015-11-02 2016-10-31 以扰乱时序的模式进行的软件向后兼容性测试

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202010187251.0A Active CN111881013B (zh) 2015-11-02 2016-10-31 以扰乱时序的模式进行的软件向后兼容性测试

Country Status (5)

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

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9865074B2 (en) 2014-04-05 2018-01-09 Sony Interactive Entertainment America Llc Method for efficient construction of high resolution display buffers
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
US9495790B2 (en) 2014-04-05 2016-11-15 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping to non-orthonormal grid
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
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
US10275239B2 (en) * 2016-03-30 2019-04-30 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
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
CN113704101B (zh) * 2021-08-23 2024-06-14 辽宁振兴银行股份有限公司 一种基于网关异步复制的分布式系统兼容测试方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101091147A (zh) * 2005-05-10 2007-12-19 索尼计算机娱乐公司 计算系统中功率管理的方法和设备
US20090003424A1 (en) * 2006-01-06 2009-01-01 Nxp B.V. Ic Testing Methods and Apparatus
US20090089616A1 (en) * 2007-09-28 2009-04-02 Microsoft Corporation Offline hardware diagnostic environment
US20140025891A1 (en) * 2012-07-20 2014-01-23 Joel James McCormack Relaxed coherency between different caches
US20150039833A1 (en) * 2013-08-01 2015-02-05 Advanced Micro Devices, Inc. Management of caches

Family Cites Families (67)

* 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
US6370589B1 (en) * 1992-10-15 2002-04-09 Siemens Aktiengesellschaft Process for performing at least one test on at least one of the objects of an object-oriented program capable of running in parallel on a computer
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
EP1442390B1 (en) 2001-10-10 2017-09-13 Sony Computer Entertainment America LLC 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
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
US8248073B2 (en) * 2007-04-06 2012-08-21 Nec Corporation Semiconductor integrated circuit and testing method therefor
US8326816B2 (en) * 2010-05-06 2012-12-04 Oracle International Corporation Fine grain synchronization for database replay
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
WO2012150970A1 (en) * 2011-01-17 2012-11-08 Mentor Graphics Corporation Test scheduling with pattern-independent test access mechanism
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
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
US9703562B2 (en) * 2013-03-16 2017-07-11 Intel Corporation Instruction emulation processors, methods, and systems
US20140281398A1 (en) * 2013-03-16 2014-09-18 William C. Rash 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
US10102603B2 (en) 2013-06-10 2018-10-16 Sony Interactive Entertainment Inc. Scheme for compressing vertex shader output parameters
US10096079B2 (en) 2013-06-10 2018-10-09 Sony Interactive Entertainment Inc. Fragment shaders perform vertex shader computations
US10176621B2 (en) 2013-06-10 2019-01-08 Sony Interactive Entertainment Inc. Using compute shaders as front end for vertex shaders
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
US9710881B2 (en) 2014-04-05 2017-07-18 Sony Interactive Entertainment America Llc Varying effective resolution by screen location by altering rasterization parameters
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
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
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
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101091147A (zh) * 2005-05-10 2007-12-19 索尼计算机娱乐公司 计算系统中功率管理的方法和设备
US20090003424A1 (en) * 2006-01-06 2009-01-01 Nxp B.V. Ic Testing Methods and Apparatus
US20090089616A1 (en) * 2007-09-28 2009-04-02 Microsoft Corporation Offline hardware diagnostic environment
US20140025891A1 (en) * 2012-07-20 2014-01-23 Joel James McCormack Relaxed coherency between different caches
US20150039833A1 (en) * 2013-08-01 2015-02-05 Advanced Micro Devices, Inc. Management of caches

Also Published As

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

Similar Documents

Publication Publication Date Title
CN108369552A (zh) 以扰乱时序的模式进行的软件向后兼容性测试
Li et al. A framework for memory oversubscription management in graphics processing units
CN110865968B (zh) 多核处理装置及其内核之间数据传输方法
EP2542973B1 (en) Gpu support for garbage collection
KR101614867B1 (ko) 데이터 스트림에 대한 저장 인식 프리페치
US20070294693A1 (en) Scheduling thread execution among a plurality of processors based on evaluation of memory access data
EP2282264A1 (en) Scheduling and communication in computing systems
US20080141268A1 (en) Utility function execution using scout threads
CN103218309A (zh) 多级指令高速缓存预取
KR20090117700A (ko) 프로세서 성능 모니터링
US8490071B2 (en) Shared prefetching to reduce execution skew in multi-threaded systems
Li et al. Virtual-Cache: A cache-line borrowing technique for efficient GPU cache architectures
Pinto et al. A highly efficient, thread-safe software cache implementation for tightly-coupled multicore clusters
Zhang et al. Re-Cache: Mitigating cache contention by exploiting locality characteristics with reconfigurable memory hierarchy for GPGPUs
Vijaykumar Enhancing Programmability, Portability, and Performance with Rich Cross-layer Abstractions
Suscheuski et al. Architectural Design Pattern Entity-Component-System
Hao Architectural Techniques to Enhance the Efficiency of Accelerator-Centric Architectures
Tomoutzoglou Hardware-assisted workload dispatching in heterogeneous dataflow architectures.

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant