Rumah > pembangunan bahagian belakang > C++ > Mengapakah penambahan mengikut elemen lebih pantas dalam gelung berasingan daripada dalam gelung tunggal, dengan mengambil kira tingkah laku cache?

Mengapakah penambahan mengikut elemen lebih pantas dalam gelung berasingan daripada dalam gelung tunggal, dengan mengambil kira tingkah laku cache?

Patricia Arquette
Lepaskan: 2025-01-04 09:14:39
asal
905 orang telah melayarinya

Why are elementwise additions faster in separate loops than in a single loop, considering cache behavior?

Mengapakah penambahan mengikut unsur lebih cepat dalam gelung berasingan berbanding dalam gelung gabungan?

Pada mulanya, soalan telah dikemukakan berkenaan perbezaan prestasi antara penambahan mengikut unsur dilakukan dalam gabungan gelung berbanding gelung berasingan. Walau bagaimanapun, ia kemudiannya telah diubah suai untuk mendapatkan cerapan tentang gelagat cache yang membawa kepada variasi prestasi ini.

Soalan Awal

Soalan:

Mengapa penambahan mengikut unsur jauh lebih pantas dalam berasingan gelung daripada dalam gelung gabungan?

Jawapan:

Setelah analisis lanjut, dipercayai bahawa tingkah laku ini disebabkan oleh isu penjajaran data dengan empat petunjuk yang digunakan dalam operasi, yang berpotensi mengakibatkan konflik bank cache/cara. Secara khusus, kemungkinan tatasusunan diperuntukkan pada baris halaman yang sama, yang membawa kepada akses dalam setiap gelung jatuh pada cara cache yang sama. Ini kurang cekap daripada mengedarkan akses merentas berbilang cara cache, yang mungkin apabila tatasusunan diperuntukkan secara berasingan.

Analisis Gelagat Cache

Soalan:

Bolehkah anda menyediakan beberapa wawasan yang kukuh tentang butiran yang membawa kepada tingkah laku cache yang berbeza seperti yang digambarkan oleh lima wilayah dalam graf?

Jawapan:

Wilayah 1: Set data adalah sangat kecil sehingga prestasi dikuasai oleh overhed, seperti gelung dan bercabang, bukannya tingkah laku cache.

Wilayah 2: Sebelum ini dikaitkan dengan isu penjajaran, analisis lanjut mencadangkan bahawa penurunan prestasi di rantau ini memerlukan siasatan lanjut. Konflik bank cache masih boleh menjadi faktor.

Wilayah 3: Saiz data melebihi kapasiti cache L1, membawa kepada had prestasi yang dikenakan oleh jalur lebar cache L1 hingga L2.

Wilayah 4: Penalti prestasi yang diperhatikan dalam versi gelung tunggal berkemungkinan disebabkan oleh alias palsu gerai dalam unit beban/simpan pemproses yang disebabkan oleh penjajaran tatasusunan. Pengalian palsu berlaku apabila pemproses secara spekulatif melaksanakan operasi beban dan menemui beban kedua ke alamat yang sama dengan nilai yang berbeza. Dalam kes ini, pemproses mesti membuang beban spekulatif dan memuat semula nilai yang betul, membawa kepada penalti prestasi.

Wilayah 5: Pada ketika ini, saiz data melebihi kapasiti kedua-duanya cache L1 dan L2, mengakibatkan had prestasi yang dikenakan oleh lebar jalur memori.

Seni bina Perbezaan

Soalan:

Mungkin juga menarik untuk menunjukkan perbezaan antara seni bina CPU/cache, dengan menyediakan graf yang serupa untuk CPU ini.

Jawapan:

Graf yang disediakan mewakili data yang dikumpul daripada dua pemproses Intel Xeon X5482 Harpertown pada 3.2 GHz. Ujian serupa pada seni bina lain, seperti Intel Core i7 870 @ 2.8 GHz dan Intel Core i7 2600K @ 4.4 GHz, menghasilkan graf yang mempamerkan kawasan yang serupa, walaupun nilai prestasi tertentu mungkin berbeza-beza. Variasi ini boleh dikaitkan dengan perbezaan dalam saiz cache, lebar jalur memori dan ciri seni bina yang lain.

Atas ialah kandungan terperinci Mengapakah penambahan mengikut elemen lebih pantas dalam gelung berasingan daripada dalam gelung tunggal, dengan mengambil kira tingkah laku cache?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan