Advanced Vector Extensions (AVX) have been present in Intel and AMD hardware since last year with Sandy Bridge and Bulldozer processors, respectively, but their use isn't too very widespread at this point. Fortunately, the Linux kernel has been receiving some AVX1/AVX2 optimizations.
The AVX instruction set extensions are designed to better floating-point-intensive applications, increased parallelism for floating-point SIMD calculations, and reduce register loads in certain conditions (You can find additional information via Wikipedia
). The Linux kernel has had basic AVX support going back to 2009, but it hasn't been until recently that there's been more AVX-optimized functions appearing within the kernel.
Already for the Linux 3.8 kernel
merge window there were the Intel cryptography performance improvements
. Intel added an AVX implementation for the Camellia cipher along with AVX optimizations for CAST5/CAST6/Serpent/Twofish. That's not all but today in a different part of the kernel there's now some AVX2 optimizations.
Sandy Bridge CPUs with AVX1 support are nearly two years old while just a few months out is Advanced Vector Extensions 2 (AVX2). AVX2 builds upon AVX1 by making most integer instructions 256-bit, three-operand bit manipulation and multiply, Gather support, vector shifts, and other new features.
The AVX2 work today comes via the MD layer pull
that provides AVX2-optimized functions for RAID6 calculations with disks. The commits are "lib/raid6: Add AVX2 optimized gen_syndrome functions" and "lib/raid6: Add AVX2 optimized recovery functions."
Let's hope other prominent open-source projects also continue to pick-up support for these newer CPU instruction set extensions to enhance Linux performance.