Rumah >pembangunan bahagian belakang >C++ >Mengapa Popcount 64-bit Lebih Lambat Daripada 32-bit pada CPU Intel Kerana Ketergantungan Data Palsu?
Ketergantungan Data Palsu Kesan Prestasi Popcount pada CPU Intel
Isu:
Anda melihat ketara sisihan prestasi antara menggunakan pembilang gelung 32-bit dan 64-bit untuk operasi kiraan pop pada Intel CPU. Prestasi menurun sebanyak 50% apabila menggunakan pembilang 64-bit, pada mulanya dikaitkan dengan pepijat pengkompil.
Penjelasan: Ketergantungan Data Palsu
CPU Intel mempunyai pergantungan palsu pada daftar destinasi dalam arahan popcnt, yang mempengaruhi berbilang lelaran gelung ketat. Kebergantungan ini menghentikan arahan sehingga daftar destinasi tersedia. Bilangan arahan yang dipengaruhi oleh kebergantungan ini bergantung pada lokaliti gelung, menghasilkan variasi prestasi.
Akibat Ketergantungan:
Gelagat Pengkompil:
GCC mahupun Visual Studio tidak menyedari pergantungan palsu ini, yang membawa kepada prestasi yang tidak dapat diramalkan. mengenai peruntukan daftar. Penyusun lain, seperti Clang dan ICC, juga kekurangan pengetahuan ini.
Prestasi AMD:
Pemproses AMD nampaknya tidak mempunyai pergantungan palsu ini, menyumbang kepada peningkatannya prestasi dalam popcount operasi.
Mitigasi:
Atas ialah kandungan terperinci Mengapa Popcount 64-bit Lebih Lambat Daripada 32-bit pada CPU Intel Kerana Ketergantungan Data Palsu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!