CPU Test |

The CPU test exercises and verifies a wide range of CPU instructions, at user specified loads. The user selectable sub-categories of the CPU test are:
• | General purpose instructions (x86)
• | Floating Point Unit (FPU) instructions (x87)
• | CPU extension instructions (x86 extensions).
The specific extension instructions may be selected: MMX, 3DNow!, SSE, SSE2, SSE3, SSE4.1, SSE4.2 and SSE4a.
• | Prime number test
• | Maximum heat test
The numbers displayed in the test window for this test represent how many millions of CPU operations have been performed and verified. Each different CPU test is run for half a second. After all tests have been run the cycle count is incremented. The duty cycle and the CPU speed determine how many operations can be processed during the half second period. Note however that if only the Maximum heat test is selected, then the duty cycle is set to 100% and a single cycle is defined to be 1 trillion CPU operations. By default, a CPU test is run on each CPU core. The number of CPU tests running a particular sub-category is shown in the test window in the "Threads" column. The number of CPUs (Packages x cores x threads) that can be tested is up to 256 (where supported by the Operating System). That is, CPUs across multiple "processor groups" can be tested (see Note 2 below). It is possible to raise an error on a user defined CPU temperature threshold being exceeded. It is also possible to automatically stop testing in this scenario. The sub-categories of this test are described below. General purpose instructions This test exercises and verifies correct operation of CPU instructions from the following groups:
• | Integer mathematics (e.g. add, subtract, multiply and divide)
• | Data transfer instructions (e.g. pushing/popping data to/from the stack)
• | Bitwise logical instructions (e.g. bitwise and/or/xor)
• | Shift and rotate instructions (e.g. shift data left x number of bits)
• | Logical instructions (e.g. equals)
• | Control transfer instructions (e.g. jump on x greater than y)
• | String instructions (eg. copy a text string)
Known and random data sets are used to exercise and verify correct operation. On 32-bit systems, 32-bit data sets are used. On 64-bit systems, 64-bit data sets are used. The random numbers are generated regularly to provide a larger data set, as well as ensure that the CPU caches overflow and that this mechanism is tested. Floating Point Unit (FPU) instructions This test exercises and verifies correct operation of CPU instructions from the following groups:
• | Floating Point math (e.g. add, subtract, multiply and divide)
• | Transcendental's (e.g. sine, cosine)
• | Load constants (e.g. load Pi)
Known and random data sets are used to exercise and verify correct operation. On 32-bit systems, 32-bit floating point data sets are used. On 64-bit systems, 64-bit floating point data sets are used. The random numbers are generated regularly to provide a larger data set, as well as ensure that the CPU caches overflow and that this mechanism is tested. Extension instructions (x86 extensions) This test exercises extensions to the x86 CPU instruction set for a variety of applications, such as multimedia.
• | 3DNow!: This test exercises and verifies correct operation of CPU 3DNow! instructions, including a sample of moving 3DNow! registers, adding, subtracting, and multiplying. Known and random data sets are used to exercise and verify correct operation. Data sets are pairs of 32-bit floats (eg. x,y), where x and y are 32-bit floats.
• | MMX: As above, but for MMX instructions. Instructions include moving MMX registers, adding, subtracting, and multiplying. Data set: 64-bit data sets are used.
• | SSE : As above, but for SSE instructions. Instructions include moving SSE registers, adding, subtracting, and multiplying. Data set: groups of 4 x 32-bit floats (e.g. a,b,c,d) where a,b,c and d are 32-bit floats.
• | SSE2: As for the SSE test, but for SSE2 instructions. Data set: pairs of 64-bit floats (e.g. x,y) where x,y are 64-bit floats.
• | SSE3: As for the SSE2 test, but for SSE3 instructions. Data set: pairs of 64-bit floats.
• | SSE4.1: As for the SSE3 test, but for SSE4.1. Instructions include a sample of moving registers and multiplication. Data set: pairs of 64-bit integers.
• | SSE4.2: As for the SSE4.1 test, but for SSE4.2 instructions. Instructions include CRC helper functions. Data set: pairs of 32-bit integers.
• | SSE4a: As for the SSE4.1 test, but for SSE4.a instructions. Instructions include data extraction functions. Data set: pairs of 64-bit unsigned integers.
• | AES: A test using the AES instructions.
Notes:
1. | MMX stand for "Multimedia Extensions".
2. | SSE stand for "Streaming SIMD extensions".
3. | SIMD stands for "Single Instruction Multiple Data."
4. | Tests are only performed if the CPU supports that test. For example, SSE3 tests will only be performed if the CPU supports SSE3.
5. | Known and random data sets are used to exercise and verify correct operation
6. | The random test data is generated regularly to provide a larger data set, as well as ensure that the CPU caches overflow and that this mechanism is tested.
7. | AES stands for Advanced Encryption Standard.
Prime number This test exercises and verifies correct operation of CPU through the use of a prime number generation algorithm. Maximum heat Based on PassMark Software testing of a set of CPU algorithms for different systems, a test has been produced that aims to generate the highest CPU temperature possible by BurnInTest. This test is aimed at checking that the cooling system is capable of doing its job with the system CPU under extreme load, especially when the CPU has been overclocked. Notes: (1) Some CPU operation tests are only supported in the 32-bit version of BurnInTest. These are: 3DNow!, MMX, Push/Pop stack operations, Transcendental's and Load constants. (2) A normal software application only has access to a single "processor group". BurnInTest has been designed to test CPUs across multiple processor groups and hence test more than 64 logical processors. For more information on a "processor groups" see Microsoft's website, an extract is included below: "The 64-bit versions of Windows 7 and Windows Server 2008 R2 support more than 64 logical processors on a single computer. This functionality is not available on 32-bit versions of Windows. Systems with more than one physical processor or systems with physical processors that have multiple cores provide the operating system with multiple logical processors. A logical processor is one logical computing engine from the perspective of the operating system, application or driver. A core is one processor unit, which can consist of one or more logical processors. A physical processor can consist of one or more cores. A physical processor is the same as a processor package, a socket, or a CPU. Support for systems that have more than 64 logical processors is based on the concept of a processor group, which is a static set of up to 64 logical processors that is treated as a single scheduling entity. Processor groups are numbered starting with 0. Systems with fewer than 64 logical processors always have a single group, Group 0."