Dalam prosesor multicore, apa yang terjadi pada isi cache inti (katakanlah L1) ketika saklar konteks terjadi pada cache itu?
Apakah perilaku tergantung pada arsitektur atau apakah itu perilaku umum yang diikuti oleh semua produsen chip?
Dalam prosesor multicore, apa yang terjadi pada isi cache inti (katakanlah L1) ketika saklar konteks terjadi pada cache itu?
Apakah perilaku tergantung pada arsitektur atau apakah itu perilaku umum yang diikuti oleh semua produsen chip?
Itu tergantung pada prosesor (tidak hanya seri prosesor, itu dapat bervariasi dari model ke model) dan sistem operasi, tetapi ada prinsip-prinsip umum. Apakah prosesor multicore tidak memiliki dampak langsung pada aspek ini; proses yang sama bisa dijalankan pada banyak core secara bersamaan (jika multithreaded), dan memori dapat dibagi antara proses, sehingga sinkronisasi cache tidak dapat dihindari terlepas dari apa yang terjadi pada konteks switch.
Ketika prosesor mencari lokasi memori dalam cache, jika ada MMU , ia dapat menggunakan alamat fisik atau virtual lokasi itu (kadang-kadang bahkan kombinasi keduanya, tetapi itu tidak benar-benar relevan di sini).
Dengan alamat fisik, tidak masalah proses mana yang mengakses alamat, konten dapat dibagikan. Jadi tidak perlu membatalkan konten cache selama pergantian konteks. Jika kedua proses memetakan halaman fisik yang sama dengan atribut yang berbeda, ini ditangani oleh MMU (bertindak sebagai MPU (unit perlindungan memori)). Kelemahan dari cache yang dialamatkan secara fisik adalah bahwa MMU harus duduk di antara prosesor dan cache, sehingga pencarian cache menjadi lambat. L1 cache hampir tidak pernah alamat fisik; cache tingkat yang lebih tinggi mungkin.
Alamat virtual yang sama dapat menunjukkan lokasi memori yang berbeda dalam proses yang berbeda. Oleh karena itu, dengan cache yang ditangani secara virtual, prosesor dan sistem operasi harus bekerja sama untuk memastikan bahwa suatu proses akan menemukan memori yang tepat. Ada beberapa teknik umum. Kode switching konteks yang disediakan oleh sistem operasi dapat membatalkan seluruh cache; ini benar tetapi sangat mahal. Beberapa arsitektur CPU memiliki ruang di baris cache mereka untuk ASID (address space identifier) versi perangkat keras dari ID proses, juga digunakan oleh MMU. Ini secara efektif memisahkan entri cache dari proses yang berbeda, dan berarti bahwa dua proses yang memetakan halaman yang sama akan memiliki pandangan tidak koheren dari halaman fisik yang sama (biasanya ada nilai ASID khusus yang menunjukkan halaman bersama, tetapi ini harus disiram jika mereka tidak dipetakan ke alamat yang sama di semua proses di mana mereka dipetakan). Jika sistem operasi berhati-hati bahwa proses yang berbeda menggunakan ruang alamat yang tidak tumpang tindih (yang mengalahkan beberapa tujuan menggunakan memori virtual, tetapi kadang-kadang dapat dilakukan), maka garis cache tetap valid.
Sebagian besar prosesor yang memiliki MMU juga memiliki TLB . TLB adalah cache pemetaan dari alamat virtual ke alamat fisik. TLB dikonsultasikan sebelum mencari di cache yang dialamatkan secara fisik, untuk menentukan alamat fisik dengan cepat bila memungkinkan; prosesor dapat memulai pencarian cache sebelum pencarian TLB selesai, karena seringkali jalur cache kandidat dapat diidentifikasi dari bit tengah alamat, antara bit yang menentukan offset dalam garis cache dan bit yang menentukan halaman. Cache yang dialamati secara virtual mem-bypass TLB jika ada cache hit, meskipun prosesor dapat memulai pencarian TLB ketika sedang menanyakan cache, jika terjadi kesalahan.
TLB itu sendiri harus dikelola selama pergantian konteks. Jika entri TLB berisi ASID, mereka dapat tetap di tempatnya; sistem operasi hanya perlu mem-flush entri TLB jika ASID-nya telah mengubah makna (misalnya karena suatu proses telah keluar). Jika entri TLB bersifat global, entri tersebut harus tidak valid saat beralih ke konteks yang berbeda.
Cache biasanya tidak menyadari adanya sakelar konteks. Hanya urutan alamat memori yang diakses yang menentukan garis cache yang diganti.
Kebijakan penggantian biasanya tergantung heuristik pada pabrikan dan arsitektur mikro tertentu. Masalahnya adalah heuristik tidak dapat memprediksi masa depan, yang alamat dan oleh karena itu garis cache akan diakses selanjutnya.
Heuristik dapat menjadi sederhana seperti LRU (paling baru digunakan). Tetapi dengan CPU modern heuristik lebih rumit.
Lihatlah Manual Pengembang Perangkat Lunak Arsitektur Intel® 64 dan IA-32 Volume 3 Bab 11 menjelaskan cache memori dan mekanisme kontrol cache. AMD memiliki ini dalam Bab 7 dari Manual Arsitektur AMD64 Programmer Volume 2: Pemrograman sistem . Untuk CPU berbasis ARM, tampaknya PDF hanya tersedia untuk pelanggan terdaftar.
sumber