GCC Compiler Adds Software Workaround To Avoid Intel Downfall Performance Hit
With the Intel Downfall vulnerability made public last week (also known as GDS - "Gather Data Sampling") there can be a sizable hit to AVX workloads making use of the GATHER instructions. For helping to lower the impact of Downfall/GDS on mitigated systems, Intel has made a change to the GNU Compiler Collection to disable GATHER generation in vectorization for Intel CPU families affected by this vulnerability.
In order to help in trying to avoid the performance regressions, GATHER generation is being disabled in the GCC auto-vectorization code path on affected Intel CPU families. GATHER scalar emulation is used in place of the GATHER generation.
This change in the GCC behavior applies to Intel Skylake with AVX-512, Cannonlake, Icelake client, Icelake server, Cascade Lake, Tigerlake, Cooperlake, and Rocket Lake families of processors.
This commit made its way to GCC 14 Git last night for this software change. No performance numbers were provided for an estimated impact of disabling the GATHER generation in auto-vectorization to instead use GATHER scalar emulation. The patch may end up being back-ported to the next GCC stable point releases but still will likely be some months away from being picked up by Linux distributions. See last week's Downfall benchmarks for the current performance expectations from a mitigated Linux kernel and new CPU microcode.
In order to help in trying to avoid the performance regressions, GATHER generation is being disabled in the GCC auto-vectorization code path on affected Intel CPU families. GATHER scalar emulation is used in place of the GATHER generation.
This change in the GCC behavior applies to Intel Skylake with AVX-512, Cannonlake, Icelake client, Icelake server, Cascade Lake, Tigerlake, Cooperlake, and Rocket Lake families of processors.
This commit made its way to GCC 14 Git last night for this software change. No performance numbers were provided for an estimated impact of disabling the GATHER generation in auto-vectorization to instead use GATHER scalar emulation. The patch may end up being back-ported to the next GCC stable point releases but still will likely be some months away from being picked up by Linux distributions. See last week's Downfall benchmarks for the current performance expectations from a mitigated Linux kernel and new CPU microcode.
5 Comments