Home  |  News  |  Reviews  | About Search :  HardWare.fr 



MiscellaneousStorageGraphics CardsMotherboardsProcessors
Advertise on BeHardware.com
Review index:
The impact of compilers on x86/x64 CPU architectures
by Guillaume Louel
Published on September 27, 2012

Test configurations
So as to evaluate the impact of compilers, we first chose three processors built with different architectures:
  • Intel Core i7 2600k (Sandy Bridge, supports all SSEs and AVXs, except SSE 4a)
  • AMD Phenom II 975 (Deneb, SSE support up to 4a)
  • AMD FX 8150 (Bulldozer, supports all SSEs and AVXs, including SSE 4a)

To recap, SSE 4a is an AMD extension (a few details are available here and here on an AMD blog) that has never been adopted by Intel. In practice it’s very little used, except in one case that we’ll see later! Note however, the Phenom II doesn’t support either SSE 4.1 or SSE 4.2. While there is a very slight overlap between SSE 4.1 and SSE 4a for some instructions, the great majority aren’t supported. This poses a certain number of problems with the Intel compiler as we’ll see.

With respect to the platform, we used:
  • An Asus P8Z68-V Pro (Intel) motherboard
  • An Asus M5A97-Evo (AMD) motherboard
  • 2x2 GB of DDR3 1600 MHz
  • Radeon HD 5450
  • SSD Corsair F120
  • Windows 7 SP1

While the configurations were identical for all three platforms, the tests on the FX processor were carried out with the patches available on the Microsoft site that we discussed previously here. We concentrated exclusively on the performance of compilers available in Windows as this is the platform we use regularly in our relative performance tests of processors. Linux, BSD and other operating systems are based on significantly different environments and although some compilers can be used commonly across different operating systems, the problematics of one system can be different to another (Windows doesn’t really have an equivalent to the standard library). The results that we present here therefore only apply to this operating system.

Note that the relative performance of the three processors isn’t really of interest to us in this article (you can consult the FX 8150 test to see this in detail). What interests us is how compilers respond to these platforms, whether in comparison to each other or in terms of the optimisations chosen.

To measure the impact of compilers, we looked for C/C++ software that could be compiled in Windows in GCC, CL and ICC, which is a relatively difficult thing. The software developed mainly for Windows very often uses Microsoft compiler “extensions” (or should we say eccentricities). The limited compatibility of this compiler with standards however sometimes prevents it from compiling a lot of programs that are supposed to be universal.

SPEC
In addition to a certain number of open source applications that corresponded to our narrow description, we also turned to SPEC. SPEC (Standard Performance Evaluation Corporation) is an organisation that tries to carry out universal benchmarks to obtain standardised performance measurements on multiple systems. These are however more than simple 3D Mark type benchmarks as SPEC benchmarks are provided for multiple operating systems and multiple compilers. Thus on each platform it’s possible to compile and execute these tests to obtain scores.

These scores known as SPECint and SPECfp (integers and floating point numbers) are based on a very precise performance index calculated from a long series of tests. To be validated, SPEC imposes strict rules when it comes to compilation options with two standards: the basic standard is the traditional one and restricts the use of optimisations judged to be too aggressive and makes a comparison between different architectures possible. A “peak” standard also exists, where anything goes.

The SPECint and SPECfp scores are very often used in Intel (and sometimes AMD) presentations to compare one architecture with another. SPEC takes on significant importance with compilers: compiler developers often use the benchmarks included in SPEC to optimise their compilers, but the impact also depends on how optimisations are developed and presented. The basic version authorises optimisations for a given processor model for example.

To carry out our tests, we used a certain number of individual SPEC tests and the scores we give for these show execution times. In no sense have we published SPECint and SPECfp scores in this article, something it’s important to clarify. Visual Studio quite simply cannot compile many of the tests included in SPEC but in spite of everything some tests included in SPEC give us plenty of room to play with.

Let’s now (finally!) move on to the tests!

<< Previous page
Compilers: Microsoft, Intel, GCC

Page index
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16
Next page >>
SPEC performance: bzip2, mcf   




Copyright © 1997- Hardware.fr SARL. All rights reserved.
Read our privacy guidelines.