Mapping pada Cache Memory
Organisasi dan Arsitektur Komputer
by : Chandra Wijaya
Cache Memory
Sebagian program pada komputer mempunyai instruksi yang cenderung mengambil data dari alamat yang sama berkali-kali. Misalnya menyimpan variabel, kemudian dilakukan loop. Untuk data yang sama jika harus mencari lokasi alamat memory lagi, akan membuang banyak waktu.
Bagaimana seandainya data yang sering diakses, disimpan di dalam memory, tetapi harus static (punya jalur langsung ke CPU), agar lebih cepat. Solusinya, adalah Cache.
Mapping Function (Fungsi Pemetaan)
Adalah, metode yang digunakan untuk menemukan/ menempatkan sebuah alamat memori dalam sebuah cache, menyalin sebuah blok dari memori utama ke dalam cache dan digunakan juga untuk menerima data dari cache.
Terdapat tiga macam Mapping Function:
- Direct
- Associative
- Set Associative
Direct Mapping
Pemetaan
langsung adalah teknik yang paling sederhana, yaitu teknik ini memetakan blok
memori utama hanya ke sebuah saluran cache saja. Jika suatu block ada di cache,
maka tempatnya sudah tertentu. Keuntungan dari direct mapping adalah sederhana
dan murah. Sedangkan kerugian dari direct mapping adalah suatu blok memiliki
lokasi yang tetap (jika program mengakses 2 blok yang di map ke line yang sama
secara berulang-ulang, maka cache-miss sangat tinggi).
Setiap block dari memori utama hanya memetakan ke dalam satu baris cache. Jika suatu block ditemukan di cache, maka block tersebut selalu ditemukan pada tempat yang sama.
Nomor baris dihitung menggunakan rumus berikut:
i = j modulo m
di mana
i = Nomor baris cache
j = Nomor block pada memori utama
m = Jumlah baris di cache
Tabel Cache Line pada Direct Mapping
Cache Line
|
Blocks
Main Memory
|
0
|
0, m, 2m,
3m …. 2s-m
|
1
|
1, m+1, 2m+1 …. 2s-m+1
|
m-1
|
m-1, 2m-1, 3m-1 …. 2s-1
|
Organisasi Cache Direct Mapping
Contoh Direct Mapping
Associative Mapping
Pemetaan asosiatif mengatasi
kekurangan pemetaan langsung dengan cara mengizinkan setiap blok memori utama
untuk dimuatkan ke sembarang saluran cache. Dengan pemetaan assosiatif,
terdapat fleksibilitas penggantian blok ketika blok baru dibaca ke dalam cache.
Kekurangan pemetaan asosiatif yang utama adalah kompleksitas rangkaian yang
diperlukan untuk menguji tag seluruh saluran cache secara parallel, sehingga
pencarian data di cache menjadi lama.
Ciri-cirinya:
·
Memungkinkan blok diletakkan di
sebarang line yang sedang tidak terpakai.
·
Diharapkan akan mengatasi
kelemahan utama Direct Mapping.
·
Harus menguji setiap cache untuk menemukan blok yang diinginkan.
o
Mengecek setiap tag pada line
o
Sangat lambat untuk cache berukuran besar.
·
Nomor line menjadi tidak
berarti. Address main memory dibagi menjadi 2 field saja,
yaitu tag dan word offset.
·
Melakukan pencarian ke semua
tag untuk menemukan blok.
·
Cache dibagi menjadi 2 bagian :
o
lines dalam SRAM
o
tag dalam associative memory
Organisasi Associative Mapping
Contoh Associative Mapping
SetAssociative Mapping
Pada pemetaan ini, cache dibagi
dalam sejumlah sets. Setiap set berisi sejumlah line. Pemetaan asosiatif set
memanfaatkan kelebihan-kelebihan pendekatan pemetaan langsung dan pemetaan
asosiatif.
Ciri-cirinya:
·
Merupakan
kompromi antara Direct dengan Full Associative Mapping.
·
Membagi
cache menjadi sejumlah set (v) yang masing-masing memiliki sejumlah line (k)
·
Setiap
blok dapat diletakkan di sebarang line dengan nomor set:
nomor set = j modulo v
·
Jika
sebuah set dapat menampung X line, maka cache disebut memiliki X way set associative cache.
·
Hampir
semua cache yang digunakan saat ini
menggunakan organisasi 2 atau 4-way set associative mapping.
Keuntungan menggunakan Set Associative Mapping antara lain:
·
Setiap
blok memori dapat menempati lebih dari satu kemungkinan nomor line (dapat
menggunakan line yang kosong), sehingga thrashing dapat diperkecil.
·
Jumlah
tag lebih sedikit (dibanding model associative), sehingga jalur untuk melakukan perbandingan tag lebih
sederhana.
Organisasi Set Associative Mapping
Contoh Set Associative Mapping
Summary Table
Item
|
Direct
|
Associative
|
SetAssociative
|
Panjang alamat
|
(s+w) bits
|
(s+w) bits
|
(s+w) bits
|
Jumlah unit pengalamatan
|
2s+w words
|
2s+w words
|
2s+w words
|
Ukuran Bloks dengan Lines
|
2w words
|
2w words
|
2w words
|
Jumlah blok memori utama
|
2s + w/2w = 2s
|
2s + w/2w = 2s
|
2d
|
Jumlah line dalam set
|
-
|
-
|
K
|
Jumlah set
|
-
|
-
|
V=2d
|
Jumlah line di cache
|
M = 2r
|
Undetermined
|
Kv=k*2d
|
Besarnya tag
|
(s - r) bits
|
s bits
|
(s - d) bits
|
Demikian, semoga informasinya bermanfaat.
Komentar
Posting Komentar