Seseorang mengubah satu baris di kompiler GCC dan mendapatkan peningkatan 12% pada chip Intel dan AMD modern

Ringkasan Menambahkan angka 3 pada skala kesalahan prediksi cabang GCC membuatnya lebih waspada terhadap kesalahan prediksi cabang. Tes NAB SPEC CPU 2017 menunjukkan kecepatan ~12% pada CPU AMD dan Intel modern. Perubahan ini akan hadir di GCC 17 pada tahun 2027. Ini merupakan bulan yang aneh bagi penyesuaian kode yang sangat kecil yang menghasilkan peningkatan kinerja yang nyata. Baru beberapa hari yang lalu kami mengetahui bahwa seseorang memodifikasi tiga baris kode di kernel Linux dan mencapai peningkatan kecepatan penyimpanan sebesar 5% karenanya. Sekarang, seseorang telah melangkah maju dan mengklaim bahwa satu perubahan baris pada kompiler GCC menambahkan peningkatan kinerja sebesar 12% untuk chip AMD dan Intel modern dalam benchmark SPEC CPU 2017. Menambahkan 3 ke variabel menghasilkan kemenangan besar bagi prosesor AMD dan Intel baru. Secara keseluruhan, ini adalah penambahan 3 yang sangat berdampak Seperti yang ditemukan oleh Phoronix, insinyur perangkat lunak Intel Lili Cui telah menemukan cara untuk meningkatkan kinerja dengan sedikit perubahan pada kompiler GCC. Proses sebenarnya yang digunakan Cui untuk mendapatkan performa tambahan ini sedikit rumit, jadi mari kita uraikan. Ketika CPU menjalankan kode, ia mencoba melakukan “curang” untuk meningkatkan kinerjanya. Ketika CPU menemukan keputusan dalam kode (seperti pernyataan if/else), CPU ‘harus’ menunggu perhitungan untuk memberitahukan jalan mana yang harus diambil. Namun, dengan proses yang disebut “eksekusi spekulatif”, CPU memprediksi arah mana yang akan diambil oleh program dan mulai memproses kode berikutnya terlebih dahulu. Ini seperti mengirim SMS ke teman Anda menanyakan apakah mereka ingin makan burger atau pizza, lalu memperkirakan mereka ingin burger dan makan patty di atas panggangan. Jika Anda benar, Anda bisa memasak burger lebih cepat dan membuat teman Anda terkesan dengan kecepatan Anda. Jika Anda salah, Anda harus berhenti, membereskan semuanya, dan memasak pizza saja. Demikian pula, tebakan yang salah dari CPU berarti ia harus kembali mengambil keputusan dan mengambil jalur lain. Hal ini disebut dengan “misprediksi cabang”, dan Cui memperhatikan bahwa melakukan hal tersebut pada CPU modern membutuhkan performa yang lebih tinggi daripada perkiraan orang pada awalnya: CPU modern memiliki saluran yang lebih dalam, sehingga membuat kesalahan prediksi cabang menjadi lebih mahal. Meningkatkan biaya ini akan mendorong konversi-if, menghindari terhentinya saluran pipa dari cabang yang salah prediksi. Untuk memperbaikinya, Cui memodifikasi baris kode yang mendefinisikan skala kesalahan prediksi cabang, yang digunakan oleh matematika pembuatan kode internal GCC untuk mengukur apakah risiko berjudi di suatu cabang sepadan. Yang dilakukan Cui hanyalah menambahkan 3 ke skala, dan sekarang kompiler lebih berhati-hati dalam menghasilkan kode percabangan standar. Hal ini membuatnya lebih mungkin untuk mengoptimalkan kode dengan cara lain, misalnya dengan rangkaian tanpa cabang. Setelah selesai, Cui memasukkan prosesor mereka melalui benchmark SPEC CPU 2017 yang disebut 544.nab_r Nucleic Acid Builder (NAB), yang menghitung fisika dan kimia molekul. Cui mencatat peningkatan kinerja sebesar 12% untuk chip Intel dan AMD, karena mereka menghabiskan lebih sedikit waktu untuk melakukan backtracking dan lebih banyak waktu untuk menelusuri kode. Perlu beberapa saat hingga kita bisa melihat perubahan ini, karena sudah digabungkan untuk GCC 17, yang akan dirilis tahun depan. Namun, ini adalah kisah keren tentang bagaimana satu perubahan kecil dapat membuat perbedaan besar. Terkait 5 penyesuaian BIOS tersembunyi untuk memangkas penggunaan daya dan suhu Dapatkan sistem yang lebih dingin tanpa kehilangan kinerja


Diterbitkan : 2026-06-25 03:55:00

sumber : www.xda-developers.com