AMD Bulldozer Cache Aliasing Issue Fix

Written by Michael Larabel in Software on 4 November 2011 at 08:07 AM EDT. Page 1 of 3. 2 Comments.

The "AMD F15h cache aliasing issue" fixes have landed, which address cache aliasing penalties for AMD Bulldozer (Family 15h) processors. This can lead to performance improvements for some workloads.

Merged into the Linux 3.2 kernel is the patch-set that provides the cache aliasing fixes for AMD's new Bulldozer processors. Borislav Petkov, the open-source Linux developer out of AMD's Munich office, has been working on this patch-set for several months. Below is the commit message from Petkov that explains what this work is about.

This patch provides performance tuning for the "Bulldozer" CPU. With its shared instruction cache there is a chance of generating an excessive number of cache cross-invalidates when running specific workloads on the cores of a compute module.

This excessive amount of cross-invalidations can be observed if cache lines backed by shared physical memory alias in bits [14:12] of their virtual addresses, as those bits are used for the index generation.

This patch addresses the issue by clearing all the bits in the [14:12] slice of the file mapping's virtual address at generation time, thus forcing those bits the same for all mappings of a single shared library across processes and, in doing so, avoids instruction cache aliases.

It also adds the command line option "align_va_addr=(32|64|on|off)" with which virtual address alignment can be enabled for 32-bit or 64-bit x86 individually, or both, or be completely disabled.

Borislav Petkov reported on the kernel mailing list back in July that depending upon the situation that the AMD system performance could be improved by a few percent with this patch.

This work has officially landed into the Linux 3.2 kernel. Petkov also provided patches on Friday morning to the mailing list for integration into the stable Linux 3.0 and Linux 3.1 series, thus should appear soon in point releases for those series. This work only affects AMD 15h CPUs by default, which are the Bulldozer processors. The IC aliasing issue patch originally was posted to the Linux kernel mailing list back in July, but back then Linus Torvalds was unhappy with the first version. He referred to the work as a small disaster, but now it's mainline.

Back when receiving the AMD FX-8150 Bulldozer, I ran some tests with the earlier aliasing issue patch on the Linux 3.1 kernel to see if there were performance improvements for the usual Linux benchmarking workload. Those results are on the next pages.


Related Articles