Chace Memory Teknik Mapping : Direct Mapping, Associative Mapping, dan Set Associative Mapping

 

Cache Memory merupakan memori yang terletak di antara CPU dan main memory (RAM) yang bertujuan menyimpan data agar dapat diakses dengan cepat.


Cache Memory Teknik Mapping merupakan teknik yang digunakan untuk menentukan menggunakan metode apa data disimpan dan diambil dalam cache memory. Terdapat tiga Teknik mapping yang digunakan dalam Cache Memory yaitu Direct Mapping, Associative Mapping, dan Set Associative Mapping.

 

1.     Direct Mapping

Direct mapping merupakan teknik mapping yang sederhana dan umum digunakan. Dalam Teknik ini, setiap blok data memori utama dapat dipetakan hanya ke satu blok cache tertentu. Pemetaannya dilakukan dengan membagi alamat memori utama menjadi beberapa bagian

 

 

Cara Kerja Direct Mapping:

a)     Cache dibagi menjadi beberapa blok dengan ukuran yang sama.

b)   Setiap blok cache memiliki tag yang menyimpan alamat memori utama dari blok data yang disimpan di dalamnya.

c)   Setiap blok data dari memori utama memiliki satu dan hanya satu lokasi cache yang ditentukan oleh fungsi pemetaan.

d)  Saat ada permintaan akses ke memori utama, alamat tersebut diterjemahkan menjadi alamat cache menggunakan fungsi pemetaan.

e)  Jika blok data yang dicari sudah ada di dalam cache (tersimpan di lokasi cache yang sesuai dengan alamat yang diterjemahkan), maka data tersebut dapat langsung diambil dari cache.

f)   Jika blok data yang dicari belum ada di dalam cache, maka blok data tersebut harus dipindahkan dari memori utama ke lokasi cache yang sesuai dengan alamat yang diterjemahkan. Dalam proses ini, jika lokasi cache yang dituju sudah terisi oleh blok data lain, maka blok data tersebut akan digantikan (di-"overwrite") oleh blok data baru.

 

Memori utama berukuran 128 byte, cache berukuran 16 byte, dan blok berukuran 4 byte, sehingga dilakukan perhitungan dalam memori utama,

Memori Utama / Blok      = 128 / 4

Maka hasilnya     = 32 Blok

Sehingga didapatkan B0 – B31 (32 Blok) yang di dalam setiap blok nya mengandung 4 byte dengan total keseluruhan dimulai dari byte0 – byte127 (128 byte)

Selanjutnya dilakukan perhitungan dalam cache yang berukuran 16 byte

Cache / Blok         = 16 / 4

Maka hasilnya     = 4 line (L0 – L3)

Kemudian dilakukan Direct Mapping / pemetaan langsung dalam pemetaan cache. Terdapat 128 byte di memori utama, tetapi kita tidak bisa membawa semua byte ke cache karena ukuran cache hanya 16 byte sehingga K mod n (K = nomor blok, n =nomor line), hasil yang didapat dari K mod n berupa Blok (B0 – B31) dan akan dimasukkan ke dalam line (L0 – L3)

 

 

Studi Kasus:

Ukuran Memori Utama = 4 GB

Ukuran memori Cache = 1 MB

Ukuran Blok = 4 KB

Konversi:

1 byte = 8 bit

1 KB = 1024 byte = 210 B

1 MB = 1024 KB = 220 B

1 GB = 1024 MB = 250 B

 

Memori Utama = 4 GB = 22 GB x 230 B = 232 B

: log2 232 = 32 bits

Nomor Blok          = memori utama / blok

                             = 232 / 212

                             = 220

                             = log2 220

                             = 20 bits

Alamat Blok         = 32 bits – 20 bits

                             = 12 bits

 

Memori Cache = 1 MB = 220 B

Line nomor memori pada cache memori = ukuran memori cache / blok

                                                                 = 220 / 212

                                                                 = 28 bits

                                                                 = log2 28

                                                                 = 8 bits

Tag bits = 20 – 8 = 12 bits


Ukuran Tag directory = no alamat cache x tag bits = 28 x 12 = 3072 bits

 

2.     Associative Mapping

Associative Mapping merupakan metode untuk menghubungkan blok-blok memori dari memori utama ke lokasi-lokasi tertentu dalam cache. Dalam associative mapping, suatu blok memori dapat disimpan di lokasi apa pun dalam cache, bukan hanya pada lokasi yang ditentukan secara khusus. Setiap blok memori disertai dengan tag yang menunjukkan alamat memori utama asli dari blok tersebut.

 

 

Cara Kerja Associative Mapping:

a)     Pertama, saat cache kosong, semua tag diatur ke nilai yang tidak valid atau kosong.

b)  Ketika CPU mengakses suatu alamat memori, cache memeriksa apakah blok memori yang berkaitan dengan alamat tersebut ada di cache.

c)    Cache melakukan pencarian di seluruh tag untuk mencari blok yang sesuai dengan alamat yang diminta.

d)     Jika blok ditemukan dalam cache (hit), data dikembalikan ke CPU.

e)  Jika blok tidak ditemukan dalam cache (miss), blok tersebut diambil dari memori utama dan disimpan dalam cache. Pada saat yang sama, tag diperbarui dengan alamat yang sesuai.

 

 

Untuk menghitung ukuran cache yang dibutuhkan dalam associative mapping, beberapa faktor yang perlu dipertimbangkan adalah:

·       Ukuran blok memori (block size)

·       Jumlah blok dalam cache (cache size)

·       Ukuran tag

 

Studi Kasus:

Ukuran Memori Utama   = 2 GB

= 21 x 230

= 231 PA

= log2 231

= 31 bits

Block Size = 2 KB

= 21 x 210

= 211 bit

= 211 bit dari block offset + log2 211

= 11 bits

Comparator delay: 15 ns

Orgate delay: 7 ns

Tag bit      = PA bits – Block offset bits

                 = 31 bits – 11 bits

                 = 20 bits


Hit latency            = (comparator delay x tag bit) + orgate delay

                             = (15 ns x 20 bits) + 7 ns

                             = 307 ns

 

3.     Set Associative Mapping

Set Associative Mapping merupakan metode untuk memetakan blok-blok memori dari memori utama ke dalam cache. Metode ini merupakan kombinasi dari metode Direct Mapping (Pemetaan Langsung) dan Fully Associative Mapping (Pemetaan Penuh Asosiatif).

 

Dalam Set Associative Mapping, cache dibagi menjadi beberapa set yang terdiri dari beberapa blok/cache line. Setiap blok/cache line dalam set tersebut dapat berisi blok-blok memori yang berasal dari lokasi yang berbeda dalam memori utama.

 

Cara kerja Set Associative Mapping:

a)     Setiap blok memori dalam memori utama memiliki alamat yang unik.

b)  Alamat tersebut dibagi menjadi tiga bagian: tag, index, dan offset. Bagian tag digunakan untuk membandingkan alamat cache line dengan alamat yang diinginkan. Bagian index digunakan untuk mengidentifikasi set mana yang akan digunakan. Bagian offset digunakan untuk mengidentifikasi byte dalam cache line yang diinginkan.

c)     Saat ada akses memori, alamat cache line dihitung menggunakan index dan offset.

d) Cache akan memeriksa set yang sesuai dengan index yang dihasilkan. Setiap blok dalam set akan membandingkan tag dengan tag yang diinginkan.

e)  Jika ada kecocokan, cache hit terjadi dan data akan diambil dari cache. Jika tidak ada kecocokan, cache miss terjadi dan cache harus memuat blok dari memori utama ke dalam cache, menggantikan blok yang ada jika set penuh.

 

 

Studi kasus:

Ukuran Memori Utama   = 128 B

                                         = 27 PA

                                         = log2 27

                                         = 7 bits

Ukuran Memori Cache    = 32 B

                                         = 25

Ukuran Block       = 4 B

                             = 22 bit offset

                             = log2 22

                             = 2 bits

2 way set associative

Nomor Blok Memori Utama        = Ukuran Memori Utama / Ukuran Blok

                                                     = 27 / 22

                                                     = 25

                                                     = 32 blok

Bit Blok Memori Utama   = log2 32

                                         = log2 25

                                         = 5 bit

Nomor Line          = Memori Cache / Blok

                             = 25 / 22

                             = 23

                             = 8 line

Bit off tag = log2 23 = 3 bit

Nomor set           = Line / Associative mapping

                             = 23 / 21

                             = 22

                             = 4

Bit set = log2 22 = 2 bits





Referensi Videohttps://youtu.be/tK5g5UXXIm4

 

Komentar