Cache dan memori

Pertama-tama, ini bukan spam tag bahasa, tetapi pertanyaan ini tidak spesifik untuk satu bahasa tertentu dan menurut saya situs pertukaran tumpukan ini adalah yang paling sesuai untuk pertanyaan saya.

Saya sedang mengerjakan cache dan memori, mencoba memahami cara kerjanya. Yang saya tidak mengerti adalah kalimat ini (dicetak tebal, bukan di gambar):

Dalam arsitektur MIPS, karena kata-kata disejajarkan dengan kelipatan empat byte, dua bit paling tidak signifikan akan diabaikan saat memilih kata dalam blok.

Jadi katakanlah saya mempunyai dua alamat ini:

    [1........0]10
    [1........0]00
         ^
         |
   same 30 bits for boths [31-12] for the tag and [11-2] for the index (see figure below)

Seperti yang saya pahami, yang pertama akan menghasilkan LEWATKAN (saya berasumsi bahwa cache awal kosong). Jadi satu slot di cache akan diisi dengan data yang terletak di alamat memori ini.

Sekarang kita ambil yang kedua, karena memiliki 30 bit yang sama maka akan menghasilkan HIT di cache karena kita mengakses slot yang sama (karena 10 bit yang sama) dan 20 bit alamatnya sama dengan 20 bit disimpan di bidang Tag.

Jadi hasilnya, kita akan memiliki data yang terletak di memori [1........0]10 dan bukan [1........0]00 yang salah!

Jadi saya berasumsi ini ada hubungannya dengan kalimat yang saya kutip di atas. Adakah yang bisa menjelaskan mengapa alasan saya salah?

Cache pada gambar :

masukkan deskripsi gambar di sini


person user2336315    schedule 15.12.2013    source sumber
comment
Apakah Anda melakukan akses satu byte atau satu kata?   -  person Peter Lawrey    schedule 15.12.2013
comment
Anda mengabaikan saat memilih kata di blok. Bit terakhir tidak selalu diabaikan, hanya ketika menentukan apa yang perlu di-cache. Akses memori sebenarnya menggunakan alamat lengkap.   -  person Kerrek SB    schedule 15.12.2013
comment
@PeterLawrey Jika itu satu kata yang saya mengerti ini akan mengarah pada hal yang sama, saya tidak perlu peduli dengan offset byte. Benar ?   -  person user2336315    schedule 15.12.2013
comment
@KerrekSB Jadi dua bit terakhir diabaikan ketika saya akan melakukan lw misalnya dan akan ada multiplexer dengan offset byte sebagai sinyal kontrol ketika saya akan menggunakan lb untuk mendapatkan byte yang benar?   -  person user2336315    schedule 15.12.2013
comment
Dua bit terakhir akan digunakan bila ukuran blok lebih dari satu kata. Jadi dengan menggunakan dua bit tersebut Anda akan menemukan offset dalam entri cache.   -  person Asterisk    schedule 15.12.2013
comment
Ketika Anda membaca 4 kata dari xxxx010 Anda sebenarnya membaca xxxxx011, xxxxx100, xxxxx101 juga, jadi ini berarti Anda benar-benar menyentuh dua kata dan ini bisa berarti dua kali dibaca dan bahkan dua LEWATKAN cache.   -  person Peter Lawrey    schedule 15.12.2013
comment
@PeterLawrey Saya rasa saya mengerti dengan benar. Apakah jawaban saya masuk akal? Saya pikir ini benar.   -  person user2336315    schedule 17.12.2013


Jawaban (1)


Dalam arsitektur MIPS, karena kata-kata disejajarkan dengan kelipatan empat byte, dua bit paling tidak signifikan diabaikan ketika memilih sebuah kata dalam blok.

Artinya dalam ingatan, kata-kata saya selaras seperti itu:

masukkan deskripsi gambar di sini

Jadi ketika memilih sebuah kata, saya tidak perlu peduli dengan dua bit terakhir, karena saya akan memuat sebuah kata.

Dua bit terakhir ini akan berguna bagi prosesor ketika instruksi load byte (lb) akan dijalankan, untuk menggeser data dengan benar agar mendapatkan data pada posisi byte yang benar.

person user2336315    schedule 17.12.2013