Saya mencoba belajar untuk ujian dan saya menyadari saya bingung tentang cara kerja TLB dan cache data.
Saya mengerti bahwa TLB pada dasarnya adalah cache dari alamat fisik yang terakhir digunakan. Namun, saya melihat diagram di buku teks saya (ditunjukkan di bawah), dan saya tidak mengerti apa yang terjadi di dalamnya. Tiba-tiba membagi alamat fisik dan menggunakannya untuk mengindeks cache, saya kira. Tetapi mengapa ini menunjukkan cache dan data secara terpisah? dan mengapa byte offset baru saja mengambang? Saya cukup yakin cache seharusnya menyimpan data juga. Saya tidak berpikir satu-satunya tujuan adalah untuk menentukan apakah ada hit atau miss di dalamnya.
Saya minta maaf atas ketidaktahuan saya sebelumnya, tetapi buku ini hampir tidak mencakup TLB (seperti sedikit lebih dari satu halaman) dan itu tidak melakukan pekerjaan yang sangat baik dalam menjelaskan hubungan antara TLB dan cache.
sumber
Jawaban:
Saya pikir saya melihat kebingungan Anda. TLB dan cache data adalah dua mekanisme terpisah. Keduanya sama-sama merupakan cache, tetapi mereka menyimpan beberapa hal yang berbeda:
Oleh karena itu, TLB bertindak sebagai cache khusus untuk pencarian ini. TLB memiliki beberapa entri TLB, di mana setiap entri TLB berisi alamat virtual dan alamat fisik yang sesuai.
TLB memungkinkan prosesor mengubah alamat virtual menjadi alamat fisik dengan sangat cepat. Jika sebuah instruksi meminta prosesor untuk melakukan beberapa operasi memori pada alamat (virtual), prosesor akan memeriksa terlebih dahulu untuk melihat apakah TLB berisi entri untuk alamat virtual itu. Jika ya, maka itu disebut "cache hit" untuk pencarian TLB, dan karena entri TLB juga berisi alamat fisik yang diterjemahkan, prosesor segera tahu alamat fisik apa yang digunakan. Jika tidak, itu adalah cache miss untuk pencarian TLB, dan prosesor harus susah payah melakukan konversi virtual ke fisik dengan berjalan di halaman tabel. (Setelah selesai melakukan konversi itu, itu menambahkan entri ke TLB sehingga konversi masa depan dari alamat virtual itu akan terjadi jauh lebih cepat.)
Cache data adalah cache untuk isi memori. Memori utama memungkinkan Anda menentukan alamat fisik dan membaca nilai di alamat fisik itu. Namun, memori utama lambat. Jika kami harus pergi ke memori utama setiap kali kami ingin melakukan operasi memori, prosesor kami akan sangat lambat.
Oleh karena itu, cache data bertindak sebagai cache khusus untuk memori yang dibaca. Cache data memiliki beberapa entri cache, di mana setiap entri cache berisi alamat fisik dan nilai memori di alamat itu.
Cache data memungkinkan prosesor membaca dengan cepat dari memori. Ketika prosesor ingin membaca memori di beberapa alamat (fisik), ia terlebih dahulu memeriksa cache data untuk melihat apakah itu berisi entri cache untuk alamat itu. Jika ya, ini dikenal sebagai "hit cache" (dalam cache data), dan prosesor dapat segera menggunakan nilai data yang disimpan dalam entri cache itu, tanpa perlu menghubungi memori utama. Jika tidak, maka ini adalah "cache miss" (untuk cache data), dan prosesor harus pergi ke memori utama. (Setelah prosesor menerima nilai pada alamat itu dari memori utama, ia menambahkan entri cache ke cache data sehingga upaya untuk membaca alamat yang sama akan mengenai cache data.)
Keduanya adalah cache, tetapi mereka melayani tujuan yang berbeda. Prosesor menggunakan keduanya untuk setiap operasi memori: pertama menggunakan TLB untuk mengkonversi dari alamat virtual ke alamat fisik, kemudian memeriksa cache data untuk mempercepat proses membaca nilai yang tersimpan dalam memori di alamat itu.
Untuk detail lebih lanjut, Anda dapat membaca artikel Wikipedia tentang TLB . Jika Anda melakukan pencarian, ada banyak informasi lain yang tersedia di TLB dan cache data. Saya sarankan mencari "TLB" dan "L1 cache" atau "L2 cache" (2 yang terakhir adalah jenis cache data).
(Untuk referensi di masa mendatang: kami mengharapkan Anda untuk melakukan riset pada pertanyaan Anda sebelum bertanya di sini, dan untuk memeriksa sumber-sumber Internet standar. Jika jawabannya dapat ditemukan di Wikipedia, Anda belum melakukan penelitian yang cukup pada Anda sendiri. Anda mungkin memiliki lebih beruntung jika Anda akan diperiksa sumber internet untuk informasi tentang bagaimana TLBs sebelum bertanya di sini. Lihat juga berapa banyak upaya penelitian yang diharapkan dari pengguna Stack Overflow? . Jadi, mengambil kesempatan untuk menggunakan ini sebagai pelajaran untuk bagaimana Anda dapat meningkatkan Anda sendiri keterampilan riset - sesuatu yang akan berharga bagi Anda sepanjang karier Anda.)
sumber