Secara khusus:
1) Cache yang dipetakan langsung dengan 4096 blok / baris di mana setiap blok memiliki 8 kata 32-bit. Berapa banyak bit yang diperlukan untuk bidang tag dan indeks, dengan asumsi alamat 32-bit?
2) Pertanyaan yang sama dengan 1) tetapi untuk cache asosiatif sepenuhnya ?
Koreksi saya jika saya salah, apakah itu:
tag bit = panjang alamat bit - eksponen indeks - eksponen offset?
[Apakah offset = 3 karena 2 ^ 3 = 8 atau apakah 5 dari 2 ^ 5 = 32?]
computer-architecture
cpu-cache
compski
sumber
sumber
Jawaban:
Pertanyaan yang disebutkan tidak cukup bisa dijawab. Sepatah kata telah didefinisikan sebagai 32-bit. Kita perlu tahu apakah sistem itu "byte-addressable" (Anda dapat mengakses sepotong data 8-bit) atau "word-addressable" (potongan terkecil yang dapat diakses adalah 32-bit) atau bahkan "setengah kata addressable" (the potongan data terkecil yang dapat Anda akses adalah 16-bit.) Anda perlu mengetahui hal ini untuk mengetahui apa yang dikatakan bit urutan terendah dari sebuah alamat kepada Anda.
Kemudian Anda bekerja dari bawah ke atas. Mari kita asumsikan bahwa sistem ini byte addressable.
Kemudian setiap blok cache berisi 8 kata * (4 byte / kata) = 32 = 2 5 byte, sehingga offsetnya adalah 5 bit.
The Indeks untuk cache dipetakan langsung adalah jumlah blok dalam cache (12 bit dalam hal ini, karena 2 12 = 4096.)
Maka tag adalah semua bit yang tersisa, seperti yang Anda tunjukkan.
Karena cache menjadi lebih asosiatif tetapi tetap dengan ukuran yang sama ada lebih sedikit bit indeks dan lebih banyak bit tag.
sumber
Formula Anda untuk bit tag sudah benar.
Apakah offset tiga bit atau lima bit tergantung pada apakah prosesor menggunakan pengalamatan byte (oktet) atau pengalamatan kata. Di luar DSP, hampir semua prosesor saat ini menggunakan pengalamatan byte, sehingga akan lebih aman untuk menganggap pengalamatan byte (dan lima bit offset).
sumber
Saya sedang belajar untuk ujian akhir subjek Sistem Komputer, saya mencari Google untuk sementara waktu dan menemukan pertanyaan ini. Dan bagian dari pertanyaan ini membingungkan: "di mana setiap blok memiliki 8 kata 32-bit". Sebuah kata adalah 4 byte (atau 32 bit) sehingga pertanyaannya hanyalah "... di mana setiap blok memiliki 8 kata"
Jawabannya adalah - Setiap blok adalah 32 byte (8 kata), jadi kita perlu 5 bit offset untuk menentukan byte mana di setiap blok - Pemetaan langsung => jumlah set = jumlah blok = 4096 => kita memerlukan 12 bit indeks untuk tentukan set yang mana
=> tag bit = 32 - 12 - 5 = 15
Untuk asosiatif penuh, jumlah set adalah 1 => no index bit => tag bit = 32 - 0 - 5 = 27
sumber
Tidak ada bit indeks dalam cache asosiatif sepenuhnya. Bit indeks digunakan untuk mengidentifikasi secara unik set blok milik. Dalam cache asosiatif sepenuhnya, semua blok pada dasarnya adalah bagian dari set yang sama.
sumber
dalam indeks pemetaan asosiasi penuh adalah 0 b / s seperti yang Anda katakan set = 1 sehingga indeks = log 1 di basis 2 = 0 set offset = log ukuran blok byte basis 2 jadi gunakan 8 = 2 ^ 3 atau 32 = 2 ^ 5 tag = 32-0-5 = 27 untuk indeks langsung = 2 ^ 12 = 12 offset = 0 tag bit = 32-12-0 = 20
sumber