Dalam pertanyaan terkait saya bertanya tentang manfaat sistem dual-CPU dalam hal menggandakan cache L3.
Namun, saya perhatikan bahwa seri Xeon E5-2600 dari CPU memiliki tepat 2,5 MB L3 cache per core .
Ini membuat saya percaya bahwa sistem operasi cadangan L3 cache 2.5 MB per inti. Namun, saya juga memiliki kesan kontradiktif bahwa cache L3 dibagi di antara semua core. Ada sangat sedikit informasi atau diskusi tentang ini.
Perhatian utama saya adalah apakah aplikasi latar belakang prioritas rendah dapat "mem-cache" L3 cache dan memperlambat kinerja untuk aplikasi latar depan prioritas tinggi. Dua masalah kinerja spesifik yang saya miliki memotivasi pertanyaan ini.
Mengkompilasi program C ++ tertentu membutuhkan 25 menit pada sistem pengembangan saya saat ini di VS 2008, sedangkan pada sistem lain itu berjalan jauh lebih cepat, hanya membutuhkan 5 menit pada VS 2008 dengan pengaturan yang sama - terlepas dari kenyataan bahwa saya memiliki i7- 970 CPU dan RAM yang cukup.
Program sering memakan waktu hingga 20 detik untuk dijalankan (yaitu, menampilkan jendela utama mereka) di sistem saya; dan pada catatan terkait, shell Windows membutuhkan hingga 10 detik untuk menampilkan menu konteks Windows Explorer (dan perilaku terkait juga memakan waktu selama), meskipun saya berupaya membatasi entri menu konteks (saat ini mungkin ada 10 tambahan di luar default).
Sistem saya tentu saja dimuat dengan sejumlah besar aplikasi yang telah saya instal (dan hapus instalannya) selama bertahun-tahun, tetapi saya tetap melakukan yang terbaik untuk merampingkan sistem ini.
Saya juga memiliki banyak aplikasi latar prioritas rendah yang berjalan; khususnya perangkat lunak cadangan cloud yang berlebihan seperti CrashPlan, yang biasanya ditambahkan hingga memanfaatkan sekitar 25% dari total penggunaan CPU pada sistem 12-inti 6-inti ini.
Saya akan mendapatkan komputer baru. Saya tahu bahwa saya akan terus menjalankan banyak aplikasi latar belakang, dan menginstal / mencopot banyak program. Jika saya berpikir bahwa mendapatkan sistem dual-CPU yang tidak hanya menggandakan inti tetapi L3 cache akan membantu mengatasi kinerja kompiler C ++ yang mengerikan dan sistem umum melambat, saya dengan senang hati akan melakukannya.
Ada harus tidak ada alasan mengapa sistem high-end beroperasi begitu lambat, bahkan dengan banyak program dan aplikasi latar belakang. Tetapi jika masalah saya akan terjadi tidak peduli berapa banyak daya CPU dan cache L3 yang saya berikan ke sistem, hanya karena saya memiliki begitu banyak program dan aplikasi latar belakang yang diinstal dan dijalankan, saya tidak ingin membuang $ 2.500 dolar tambahan pada dual-CPU sistem yang tidak akan membantu menyelesaikan masalah saya.
Setiap saran, khususnya mengenai pertanyaan saya tentang apakah cache L3 dibagi di antara semua core (sedemikian rupa sehingga aplikasi latar belakang prioritas rendah mungkin memonopoli cache L3, memperlambat program prioritas lebih tinggi), atau lebih tepatnya jika dikaitkan dengan masing-masing core, akan sangat dihargai.
sumber
Jawaban:
Pada CPU ini, setiap inti fisik memiliki cache L2 sendiri. Cache L3 dibagi oleh semua core dan inklusif - yaitu, setiap data yang berada di cache L2 inti juga berada di cache L3.
Meskipun ini mungkin tampak buang-buang ruang L3, itu sebenarnya membuat L3 sangat berharga untuk mempercepat operasi memori antar-inti. Tujuan utama dari cache L3 adalah untuk bertindak sebagai switchboard dan area pementasan untuk core. Misalnya, jika satu inti ingin tahu apakah wilayah memori mungkin di-cache oleh inti lain, ia dapat memeriksa cache L3. Jika informasi diproses oleh satu core dan selanjutnya perlu diproses oleh core lain, mereka menyerahkannya melalui cache L3 daripada memori off-chip yang lebih lambat. Di luar itu, dampak kinerjanya tidak terlalu banyak kecuali untuk algoritma yang tidak biasa - cache L2 cukup besar untuk hal-hal kecil dan cache L3 terlalu kecil untuk hal-hal besar.
Jadi sementara masing-masing inti memang memiliki cache L2 256KB sendiri dan secara efektif 256KB dicadangkan dalam cache L3, keseimbangan dibagi oleh semua core. Aktivitas yang kurang penting di core lain dapat merusak kinerja tugas yang lebih penting yang mendapat manfaat dari penggunaan ruang L3. Tetapi karena alasan yang saya sebutkan, ini umumnya tidak berpengaruh signifikan dalam praktik dan umumnya tidak perlu dikhawatirkan di luar mengoptimalkan operasi "data massal" (seperti kompresi dan pemindaian) untuk meminimalkan polusi cache. (Misalnya, menggunakan operasi non-temporal.)
sumber
Ini pemahaman saya bahwa semua level cache diimplementasikan langsung pada chip dan bahwa L2 dan L3 adalah satu dalam yang sama (yang hanya Intel yang mengenali perbedaannya, AMD menggabungkannya.). Dengan pemikiran ini saya akan membayangkan bahwa cache L3 pada CPU tidak dibagi antara CPU pada motherboard dual socketed. Ini juga masuk akal mengingat bahwa itu adalah khas untuk melihat saluran memori terpisah ke RAM per CPU.
Seseorang mengoreksi saya jika saya salah.
sumber