1. Computers
  2. Display Drivers
  3. Graphics Cards
  4. Memory
  5. Motherboards
  6. Processors
  7. Software
  8. Storage
  9. Operating Systems


Facebook RSS Twitter Twitter Google Plus


Phoronix Test Suite

OpenBenchmarking.org

Compilers Mature For Intel Sandy/Ivy Bridge, Prep For Haswell

Michael Larabel

Published on 27 January 2012
Written by Michael Larabel
Page 1 of 7 - 1 Comment

The leading open-source code compilers -- namely the GNU Compiler Collection (GCC) and LLVM/Clang -- now have maturing support for Intel's Sandy Bridge microarchitecture with further optimizations for the forthcoming Ivy Bridge successor. With the current and next-generation Intel support covered, open-source compiler developers have already moved onto beginning work for supporting Intel's Haswell microarchitecture that will not be launched until 2013.

It's not only the Sandy Bridge graphics driver that has been maturing (it can even outperform the Mac OS X Intel driver for some OpenGL workloads), but the compiler support has been moving in parallel. GCC and LLVM/Clang have been the primary targets for compiler coverage with this latest and greatest Intel hardware, but other code compilers have been advancing too.

When it comes to GCC 4.6, which is the latest GNU Compiler Collection series and was released last March just two months after the Sandy Bridge launch, there was initial AVX support. GCC 4.6 brought support for the Sandy Bridge processors with the AVX support via the march/mtune "corei7-avx" options. Advanced Vector Extensions (AVX) made their debut with Sandy Bridge as an x86 instruction set extension and designed to benefit floating-point-intensive workloads, increase parallelism and performance with floating-point SIMD instructions, and reduce register load. GCC 4.6 was the first release to support the AVX extensions, which then made their debut with AMD hardware later in 2011 when Bulldozer was finally launched.

With GCC 4.6 being the current stable series for this de facto Linux compiler, it's currently found in Ubuntu 11.10, Fedora 16, and will be used in the upcoming Ubuntu 12.04 LTS release. AVX support within the Linux kernel-side was introduced in the Linux 2.6.30 release some time ago. To be released in March/April will be GCC 4.7 with better Sandy/Ivy Bridge support and preliminary support for Intel's architecture of 2013, Haswell.

GCC 4.7 has added in two additional AVX vector conversion instructions (exposed via the "-mf16c" option) and support for the Intel rdrnd instruction (via "-mrdrnd"). The Intel rdrand is an x86 instruction for returning random numbers from a random number generator built into the processor itself. The Ivy Bridge optimizations within GCC can be tapped via the "core-avx-i" model (there's an "-i" prefix compared to the Sandy Bridge "core-avx" mode) for the march/mtune options. This hardware random number generator, which is codenamed "Bull Mountain", is one of the new additions to the Intel Ivy Bridge CPUs that GCC 4.7 will support. The Ivy Bridge optimizations also add in FSGSBASE and F16C instruction support.

GCC 4.7 also adds in support for Intel AVX2. The Advanced Vector Extensions 2 intrinsics, built-in functions, and code generation is exposed via the "-mavx2" option. AVX2 is not an Ivy Bridge feature (it's still AVX1), but a feature of Intel's Haswell microarchitecture for a year later. AVX2 / Haswell New Instructions builds upon Advanced Vector Extensions by expanding most integer AVX instructions to 256-bit, gather support, vector shifts, 3-operate fused multi-accumulate support, and other additions.

Beyond AVX2, there is also support for FMA, BMI1, BMI2, and LZCNT instructions for Haswell, which are other instruction set introduces to be introduced in 2013 with Haswell. The Intel Haswell support within GCC is being exposed by "core-avx2" for march/mtune. It's really great to see the AVX2/BMI2 support already coming to the Free Software Foundation's compiler more than a year before the first hardware using it is set to ship, which is much better than the original AVX compiler support that arrived after the Sandy Bridge hardware was shipping. By the time Intel Haswell processors are shipping, GCC 4.7 should already be widespread. The first distribution set to deploy GCC 4.7 by default is the Fedora 17 "Beefy Miracle" release in May while Ubuntu 12.10 and other Linux distributions should begin adopting this major compiler update in H2'2012.

Besides the greater Sandy/Ivy Bridge and Haswell support, there are also many other improvements to be found in GCC 4.7, but those other features will be saved for another article. Now let's see where LLVM / Clang is at in supporting this exciting Intel hardware.

Latest Articles & Reviews
  1. Samsung 850 EVO SSD Linux Benchmarks
  2. Kubuntu 15.04 Is Turning Out Quite Nice, Good Way To Try Out The Latest KDE
  3. 5-Way Linux Distribution Comparison On The Core i3 NUC
  4. OCZ ARC 100 Linux SSD Benchmarks
  5. Lenovo ThinkPad X1 Carbon Works Great As A Linux Ultrabook
  6. Transcend SSD370 256GB
Latest Linux News
  1. Kdenlive Ported To Qt5/KF5, Coming To KDE Applications 15.04
  2. HTC & Valve Partnered Up For The Steam VR Headset
  3. 8cc: A Small C11 Compiler
  4. Not Everyone Likes The Possible "VULKAN" Name For Next-Gen OpenGL
  5. The Binary Blobs Making Up Coreboot
  6. Linux 4.0 & LLVM vs. GCC Yielded Much Interest This Month
  7. XBMC/Kodi 15.0 Alpha 1 Released
  8. Xfce 4.12 Released After Nearly Three Years Of Work
  9. The Khronos Group Filed A Trademark On "Vulkan" API
  10. Mozilla Thunderbird Adoption Climbs, Thunderbird 38 In May
Most Viewed News This Week
  1. Linux 4.0-RC1 Tagged, Linux 4.0 Will Bring Many Notable Improvements
  2. Screenshots Of The GNOME 3.16 Changes
  3. More Proof That Allwinner Is Violating The GPL
  4. The Tremendous Features Of Fedora 22
  5. Krita 2.9 Released, Their Biggest Release Ever
  6. Linux 4.0 Doesn't Have The Weirdest Codename
  7. A Single UEFI Executable With The Linux Kernel, Initrd & Command Line
  8. Canonical Comes Up With Its Own FUSE Filesystem For Linux Containers
%%CLICK_URL_UNESC%%