Alias ​​konteks cache data Hyper-Threading

Oct 31 2020

di manual intel, bagian berikut membingungkan saya:

11.5.6.2 Mode Bersama Dalam mode bersama, cache data L1 secara kompetitif dibagi antara prosesor logis. Ini benar bahkan jika prosesor logis menggunakan register CR3 yang identik dan mode paging. Dalam mode bersama, alamat linier di cache data L1 dapat dialias, artinya satu alamat linier dalam cache dapat menunjuk ke lokasi fisik yang berbeda. Mekanisme untuk menyelesaikan aliasing dapat menyebabkan thrashing. Untuk alasan ini, IA32_MISC_ENABLE [bit 24] = 0 adalah konfigurasi yang disukai untuk prosesor berdasarkan mikroarsitektur Intel NetBurst yang mendukung Intel Hyper-Threading Technology.

karena intel menggunakan VIPT (sama dengan PIPT) untuk mengakses cache.

bagaimana cache aliasing akan terjadi?

Jawaban

1 PaulA.Clayton Nov 01 2020 at 20:18

Berdasarkan Manual Referensi Pengoptimalan Arsitektur Intel® 64 dan IA-32 , November 2009 (248966-020), Bagian 2.6.1.3:

Sebagian besar sumber daya dalam prosesor fisik dibagikan sepenuhnya untuk meningkatkan pemanfaatan sumber daya secara dinamis, termasuk cache dan semua unit eksekusi. Beberapa sumber daya bersama yang dialamatkan secara linier, seperti DTLB, menyertakan bit ID prosesor logis untuk membedakan apakah entri tersebut milik satu prosesor logis atau yang lain.

Cache tingkat pertama dapat beroperasi dalam dua mode bergantung pada bit ID konteks:

  • Mode bersama: Cache data L1 sepenuhnya dibagikan oleh dua prosesor logis.
  • Mode adaptif: Dalam mode adaptif, akses memori menggunakan direktori halaman dipetakan secara identik di seluruh prosesor logis yang berbagi cache data L1.

Aliasing dimungkinkan karena prosesor ID / konteks-ID bit (yang hanya sedikit menunjukkan dari prosesor virtual mana akses memori berasal) akan berbeda untuk utas yang berbeda dan mode bersama menggunakan bit itu. Mode adaptif hanya menangani cache seperti yang biasanya diharapkan, hanya menggunakan alamat memori.

Secara khusus bagaimana ID prosesor digunakan saat mengindeks cache dalam mode bersama tampaknya tidak didokumentasikan. (XORing dengan beberapa bit alamat akan memberikan penyebaran indeks sehingga indeks yang berdekatan untuk satu utas perangkat keras akan memetakan ke indeks yang lebih terpisah untuk utas lainnya. Memilih urutan bit yang berbeda untuk utas yang berbeda kecil kemungkinannya karena hal itu akan cenderung meningkatkan penundaan. mengurangi frekuensi konflik mengingat lokalitas spasial di atas perincian baris cache tetapi kurang dari perincian ukuran jalan.)