Intel software engineer Lili Cui contributed a one-line change to GCC that increases the branch misprediction cost in the generic x86 tuning table. The rationale is that modern CPUs have deeper pipelines, making branch mispredictions more costly, so raising the mispredict scale factor by three helps the compiler avoid pipeline stalls. Benchmarks show a 12.7% gain on Intel Granite Rapids and 12.1% on AMD Zen 5 for the SPEC CPU 2017 544.nab_r NAB test. The change applies to generic x86/x86_64 builds (not -march=native) and has been merged into GCC Git, targeting the GCC 17 stable release.
Nguồn: https://www.phoronix.com/news/GCC-x86-Generic-Mispredict. 8sync News chỉ tóm tắt và dẫn link; bản quyền nội dung thuộc tác giả và nguồn gốc.

A deep dive into how a seemingly cosmetic C code style change — using *lwr++ = x instead of *lwr = x; lwr++ — causes Clang to generate branchless csel instructions on ARM (and cmov on x86), resulting in a 6x speedup for a custom Quicksort implementation. The post shows the full branchless Quicksort with sorting networks, compares the generated assembly with and without branches, and notes that GCC does not exhibit this behavior, consistently generating the slower branch-based version.
Thay đổi một dòng lệnh trong trình biên dịch GCC bằng cách tăng hệ số chi phí dự đoán nhánh lên 3 đã giúp cải thiện hiệu suất khoảng 12% trên các CPU Intel và AMD hiện đại trong bài kiểm tra SPEC CPU 2017 NAB. Sự điều chỉnh này khiến GCC ưu tiên các đoạn mã không nhánh để tránh tình trạng tắc nghẽn pipeline do dự đoán nhánh sai. Bản sửa lỗi đã được hợp nhất và dự kiến sẽ có mặt trong GCC 17 vào năm 2027.
Lập trình viên nên đọc bài này vì những thay đổi nhỏ trong bộ biên dịch GCC có thể ảnh hưởng đến hiệu suất thực tế của ứng dụng trên CPU hiện đại, giúp họ hiểu cách tối ưu hóa mã nguồn để tránh các lỗi nhầm nhí trong nhánh điều kiện và cải thiện hiệu suất đáng kể.