Apakah L3 cache dibagikan oleh semua core untuk CPU Sandy-Bridge E Xeon?

12

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.

  1. 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.

  2. 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.

Dan Nissenbaum
sumber
Pertanyaan bagus yang secara pribadi saya tidak punya jawaban kecuali untuk mengatakan bahwa saya juga mendapat kesan L3 dibagikan. Saya hanya akan bertanya mengapa Anda memanggil Xeon generasi ke-2 ini ketika 'Xeon' telah menjadi produk Intel selama satu dekade sekarang. (Jika ini secara analogi dengan chip Sandy Bridge i3 /
5/7
Intel menyebut jajaran CPU i7-2600 sebagai "generasi ke-2" ( ark.intel.com/products/family/59136/… ). Dengan "generasi ke-2 Xeon" yang saya maksud adalah rilis yang setara dari CPU arsitektur Xeon Sandy-Bridge E pada tanggal 6 Maret 2012 ( en.wikipedia.org/wiki/… ).
Dan Nissenbaum
1
Itulah analogi yang saya pikir Anda buat. Itu yang buruk (itu adalah gen ke-2 i7s tetapi ini bukan gen ke-2 Xeon), dan saya akan mengubah judul IMO ... Saya mengharapkan untuk menemukan pertanyaan tentang prosesor berusia 12 tahun dan yang mungkin membuat banyak orang dari mengklik di sini. Mungkin mengubah 'generasi kedua' menjadi 'Sandy Bridge-E'.
Shinrai
stackoverflow.com/questions/944966/…
Ciro Santilli 冠状 病毒 审查 六四 事件 事件 法轮功

Jawaban:

13

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.)

David Schwartz
sumber
0

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.

Stephen R
sumber
L2 dan L3 sama sekali tidak sama. Pada desain Intel baru-baru ini, L1 / L2 adalah per-core dan kecil (L2 I $ & D $ / 256k L2 terpadu 32k), sedangkan L3 inklusif dan dibagikan oleh GPU dan semua core. L1 / L2 secara fisik terpisah, tetapi jenis melayani tujuan yang sama (yaitu membuat akses memori cepat untuk satu inti). L3 inklusif memiliki tujuan lain: koherensi antar core (dan GPU). Lihat jawaban @ DavidSchwartz.
Peter Cordes