Bagaimana cara menghitung jumlah tag, indeks, dan offset bit dari cache yang berbeda?

18

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?]

compski
sumber
beberapa penjelasan tentang tag, indeks, dan offset di cs.stackexchange.com/questions/33818/…
Ran G.

Jawaban:

20

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.

Logika Pengembaraan
sumber
ya itu byte addressable tetapi pertanyaan yang saya lihat tidak secara khusus menyatakannya
compski
3

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

Paul A. Clayton
sumber
Saya tidak tahu ada perbedaan seperti itu, ya itu alamat byte
compski
1
Sebelum pertengahan 1970-an, kita mungkin beranggapan bahwa "kata" adalah ukuran unit data terkecil yang dapat dialamatkan. Tabel ini pada halaman wikipedia pada kata itu lucu (jika Anda suka hal semacam itu, (yang saya lakukan.))
Pengembaraan Logika
1

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

Hoang Trinh
sumber
1

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.

Steph
sumber
-1

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

pengguna96559
sumber
Saya menemukan ini sangat mustahil untuk dibaca. Tolong, gunakan tanda baca.
David Richerby