MEMORY CACHE
Memori utama yang digunakan sisterm komputer pada awalnya
dirasakan masih lambat kerjanya dibandingkan dengan kinerja CPU, sehingga perlu
dibuat sebuah memori yang dapat membantu kerja memori utama tersebut, sebagai
perbandingan waktu akses memori cache lebih cepat 5-10 kali dibandingkan memori
utama.
Cache memory adalah memori yang memiliki kecepatan sangat
tinggi yang digunakan sebagai perantara antara RAM dan CPU. Memori ini
mempunyai kecepatan yang lebih tinggi daripada RAM. Memori ini digunakan untuk
menjembatani perbedaan kecepatan CPU yang sangat tinggi dengan kecepatan RAM
yang jauh lebih rendah. Jika processor membutuhkan suatu data, pertama-tama ia
akan mencarinya pada cache. Jika data ditemukan, processor akan langsung
membacanya dengan delay yang sangat kecil. Tetapi jika data tidak ditemukan,
processor akan mencarinya pada RAM.
Cache adalah memory berukuran kecil yang sifatnya temporary
(sementara). Cache umumnya terbagi menjadi beberapa jenis, seperti L1 cache, L2
cache dan L3 cache. Walaupun ukuran filenya sangat kecil, namun keceptannya
sangat tinggi. Dalam terminologi hardware, istilah ini biasanya merujuk pada
memory berkecepatan tinggi yang menjembatani aliran data antara processor
dengan memory utama (RAM) yang biasanya memiliki kecepatan jauh lebih rendah.
Fungsi dan Kegunaan Cache
Cache berfungsi sebagai tempat penyimpanan sementara untuk
data atau instruksi yang diperlukan oleh processor. Secara gampangnya, cache
berfungsi untuk mempercepat akses data pada komputer karena cache menyimpan
data/informasi yang telah diakses oleh suatu buffer, sehingga meringankan kerja
processor.
Dalam Internet sebuah proxy cache dapat mempercepat proses
browsing dengan cara menyimpan data yang telah diakses di komputer yang
berjarak dekat dengan komputer pengakses. Jika kemudian ada user yang mengakses
data yang sama, proxy cache akan mengirim data tersebut dari cache-nya, bukan
dari tempat yang lama diakses. Dengan mekanisme HTTP, data yang diberikan oleh
proxy selalu data yang terbaru, karena proxy server akan selalu mencocok kan
data yang ada di cache-nya dengan data yang ada di server luar.
Kecepatan Cache Memory
Transfer data dari L1 cache ke prosesor terjadi paling cepat
dibandingkan L2 cache maupun L3 cache (bila ada). Kecepatannya mendekati
kecepatan register. L1 cache ini dikunci pada kecepatan yang sama pada
prosesor. Secara fisik L1 cache tidak bisa dilihat dengan mata telanjang. L1 cache
adalah lokasi pertama yang diakses oleh prosesor ketika mencari pasokan data.
Kapasitas simpan datanya paling kecil, antara puluhan hingga ribuan byte
tergantung jenis prosesor. Pada beberapa jenis prosesor pentium kapasitasnya 16
KB yang terbagi menjadi dua bagian, yaitu 8 KB untuk menyimpan instruksi, dan 8
KB untuk menyimpan data.
Transfer data tercepat kedua setelah L1 cache adalah L2
cache. Prosesor dapat mengambil data dari cache L2 yang terintegrasi (on-chip)
lebih cepat dari pada cache L2 yang tidak terintegrasi. Kapasitas simpan
datanya lebih besar dibandingkan L1 cache, antara ratusan ribu byte hingga
jutaan byte, ada yang 128 KB, 256 KB, 512 KB, 1 MB, 2 MB, bahkan 8 MB,
tergantung jenis prosesornya. Kapasitas simpan data untuk L3 cache lebih besar
lagi, bisa ratusan juta byte (ratusan mega byte).
Desain Cache pada Sistem Komputer
Pada rancangan prosesor modern dengan beberapa tingkat
pipeline, upaya untuk mengisi penuh seluruh pipeline dengan instruksi dan data
perlu dilakukan agar operasi sistem komputer secara keseluruhan efisien.
Perbedaan kecepatan operasi antara prosesor dan memori utama
bisa menjadi kendala bagi dicapainya efisiensi kerja sistem komputer. Bila
prosesor bekerja jauh lebih cepat daripada memori utama maka setiap kali prosesor
mengambil instruksi atau data, diperlukan waktu tunggu yang cukup lama. Waktu
tunggu tersebut akan lebih berarti bila digunakan untuk memproses data.
Kendala ini menyebabkan diperlukannya cache, yakni memori
berkapasitas kecil tetapi berkecepatan tinggi, yang dipasang di antara prosesor
dan memori utama. Instruksi dan data yang sering diakses oleh prosesor
ditempatkan dalam cache sehingga dapat lebih cepat diakses oleh prosesor. Hanya
bila data atau instruksi yang diperlukan tidak tersedia dalam cache barulah
prosesor mencarinya dalam memori utama.
Cache umumnya menggunakan memori statik yang mahal harganya,
sedangkan memori utama menggunakan memori dinamik yang jauh lebih murah. Sistem
komputer akan bekerja sangat cepat apabila seluruh sistem memori utamanya
menggunakan memori statik, tetapi akibatnya harga sistem komputer akan menjadi
sangat mahal. Selain itu, karena hamburan panas pada memori statik lebih besar,
sistem komputer yang menggunakan memori statik ini akan menghasilkan panas yang
berlebihan.
Hirarki Sistem Memori
Pada sistem komputer terdapat berbagai jenis memori, yang
berdasarkan kecepatan dan posisi relatifnya terhadap prosesor, bisa disusun
secara hirarkis.
Puncak hirarki sistem “memori” komputer adalah register yang
berada dalam chip prosesor dan merupakan bagian integral dari prosesor itu
sendiri. Isi register-register itu bisa dibaca dan ditulisi dalam satu siklus
detak.
Level hirarki berikutnya adalah memori cache internal
(on-chip). Kapasitas cache internal yang sering disebut sebagai cache level
pertama ini umumnya sekitar 8 KB. Waktu yang diperlukan untuk mengakses data
atau instruksi dalam cache internal ini sedikit lebih lama dibandingkan
register, yakni beberapa siklus detak.
Prosesor-prosesor mutakhir dilengkapi dengan cache level
kedua yang kapasitasnya lebih besar dan ditempatkan di luar chip. Prosesor P6
(Pentium Pro), misalnya, cache level pertamanya berkapasitas 8KB untuk data dan
8 KB untuk instruksi. Cache level keduanya berkapasitas 256 KB, yang merupakan
keping terpisah tetapi dikemas menjadi satu dengan prosesornya. Selama program
dieksekusi, sistem komputer secara terus menerus memindah-mindahkan data dan
instruksi ke berbagai tingkat dalam hirarki sistem “memori”.
Data dipindahkan menuju ke puncak hirarki bila diakses oleh
prosesor, dan dikembalikan lagi ke hirarki yang lebih rendah bila sudah tidak
diperlukan lagi. Data-data tersebut ditransfer dalam satuan-satuan yang disebut
“blok”; satu “blok” dalam cache disebut satu “baris”. Umumnya, data yang berada
pada suatu level hirarki merupakan bagian dari data yang disimpan pada level di
bawahnya.
Program komputer pada umumnya tidak mengakses memori secara
acak. Besar kecenderungannya bahwa bila program mengakses suatu word maka dalam
waktu dekat word tersebut akan diakses lagi. Hal ini dikenal sebagai prinsip
lokalitas temporal. Juga besar kecenderungannya bahwa dalam waktu dekat word
yang berada di dekat word yang baru diakses akan diakses juga.
Yang terakhir ini dikenal sebagai prinsip lokalitas spatial.
Karena sifat lokalitas temporal, maka harus diperhatikan word yang telah ada
dalam cache, dan karena sifat lokalitas spatial maka perlu diperhatikan
kemungkinan memindahkan beberapa word yang berdekatan sekaligus.
Rasio (Kena) dan Waktu Akses
Kemungkinan bahwa suatu kata (word) berupa data/instruksi
ditemukan dalam cache (disebut kena atau hit) sehingga prosesor tidak perlu
mencarinya dalam memori utama, akan tergantung pada program, ukuran dan
organisasi cache. Bila kata yang diperlukan tidak ada dalam cache (berarti
luput atau miss), maka prosesor harus merujuknya ke memori utama. Rasio kena
(h) didefinisikan sebagai perbandingan antara jumlah perujukan yang berhasil
memperoleh kata dari cache dengan banyaknya perujukan yang dilakukan.
h = (jumlah perujukan yang berhasil) / ( jumlah perujukan)
Dalam studi tentang cache, pengukuran umumnya justru
terhadap rasio luput (miss) yang besarnya adalah:
m = (1 – h)
Waktu akses rata-rata, dengan asumsi bahwa perujukan selalu
dilakukan ke cache lebih dahulu sebelum ke memori utama, dapat dihitung sebagai
berikut:
t a = t c + (1-h) t m
Keterangan :
ta = adalah waktu akses rata-rata,
tc = adalah waktu akses cache dan tm
adalah waktu akses ke memori utama.
Setiap kali prosesor terpaksa mengakses memori utama,
diperlukan tambahan waktu akses sebesar tm(1-h). Misalnya, bila rasio kena
adalah 0,85, waktu akses ke memori utama adalah 200 ns dan waktu akses ke cache
adalah 25 ns, maka waktu akses rata-rata adalah 55 ns.
Bila persamaan ta disusun ulang, dapat ditulis menjadi:
ta = t c {1/k + (1-h)}
dengan K adalah rasio antara waktu akses memori utama dengan
waktu akses cache (tm/tc).
Dari persamaan di atas dapat dilihat bahwa waktu akses
rata-rata didominasi oleh rasio waktu akses memori utama dengan cache bila k
kecil. Pada kasus di atas, dengan waktu akses memori utama 200 ns dan waktu
akses cache 25 ns, maka k = 8. Rasio luput 1 prosen menyebabkan waktu akses
rata-rata menjadi 27 ns, tidak jauh beda dengan waktu akses cache. Pada umumnya
k berkisar antara 3-10.
Level Chace Memory
Hingga saat ini, cache memory terbagi atas tiga level yaitu
L1, L2 dan L3. Cache memory memori level 1 (L1) adalah cache memory yang
terletak dalam prosesor (internal cache). Cache memory ini memiliki kecepatan
akses paling tinggi dan harganya paling mahal. Ukuran memori berkembang mulai
dari 8KB, 64KB dan 128KB. Cache memory level 2 (L2) memiliki kapasitas yang
lebih besar yaitu berkisar antara 256KB sampai dengan 2MB. Namun, cache memory
L2 ini memiliki kecepatan yang lebih rendah dari cache memory L1. Cache memory
L2 terletak terpisah dengan prosesor atau disebut dengan external cache.
Sedangkan cache memory level 3 hanya dimiliki oleh prosesor
yang memiliki unit lebih dari satu misalnya dualcore dan quadcore. Fungsinya
adalah untuk mengontrol data yang masuk dari tembolok L2 dari masing-masing
inti prosesor. Level 2 atau L2 cache merupakan bagian dari strategi penyimpanan
multi level untuk meningkatkan performa komputer. Terdapat tiga level cache
yang digunakan pada komputer, yaitu L1, L2 dan L3 cache. Tiap-tiap cache
tersebut menjembatani jarak (gap) diantara processor yang sangat cepat, dengan
memori RAM (Random Access Memory) yang jauh lebih lambat. Sementara desainnya
terus mengalami perubahan, L1 cache biasanya telah terintegrasi (built in) ke
dalam processor, sementara L2 cache biasanya terintegrasi pada motherboard
(bersamaan dengan L2 cache). Namun, beberapa processor kini menggabungkan L2
cache serta L1 cache, dan bahkan beberapa diantaranya juga menggungkan L3
cache. Kecepatan yang paling tinggi terdapat pada L1 cache, kemudian menurun
pada L2 dan L3 cache. Namun kebalikannya, semakin besar angka cache, maka
semakin besar pula kapasitas penyimpanan datanya.
Tugas dari cache processor adalah untuk mengantisipasi data
request, sehingga ketika pengguna mengakses sebuah program yang sering
digunakan, sebagai contohnya, instruksi-instruksi yang dibutuhkan untuk
menjalankan program tersebut telah siap digunakan, disimpan pada cache. Ketika
hal ini terjadi, CPU dapat memproses request tanpa adanya jeda (delay),
sehingga dapat meningkatkan performa komputer secara drastis.
CPU pertama-tama akan memeriksa L1 cache, diikuti dengan L2
dan L3 cache. Jika processor telah menemukan bit data yang dibutuhkan, maka
disebut dengan cache hit. Namun jika cache tidak menyediakan bit data yang
dibutuhkan, processor mendapatkan sebuah cache miss, dan data perlu ditarik
dari RAM yang lebih lambat atau hard disk yang juga lebih lambat.
Ukuran Cache
Semakin besar kapasitas cache tidak berarti semakin cepat
prosesnya, dengan ukuran besar maka akan terlalu banyak gate pengalamatannya
sehingga akan memperlambat proses. Kita bisa melihat beberapa merek processor,
misalnya AMD mengeluarkan processor K5 dan K6 dengan cache yang besar (1 MB)
tetapi kinerjanya tidak bagus. Kemudian Intel pernah mengeluarkan processor
tanpa cache untuk alas an harga yang murah, yaitu seri Intel Celeron pada tahun
1998-an hasil kinerjanya sangat buruk terutama untuk operasi data besar,
floating point, dan 3D. Karena kinerja cache sangat sensitif terhadap sifat
beban kerja, maka tidaklah mungkin untuk mencapai ukuran cache yang optimum.
Sejumlah penelitian telah menganjurkan bahwa ukuran cache yang ideal adalah
antara 1 KB dan 512 KB.
Ukuran Blok
Adanya sifat lokalitas referensi menyebabkan nilai ukuran
blok sangatlah penting. Apabila blok berukuran besar ditransfer ke cache akan
menyebabkan hit ratio mengalami penurunan karena banyaknya data yang dikirim di
sekitar referensi. Tetapi bila terlalu kecil, dimungkinkan memori yang akan
dibutuhkan CPU tidak tercakup. Apabila blok berukuran besar ditransfer ke cache,
maka akan terjadi :
1.Blok-blok yang berukuran lebih besar mengurangi jumlah
blok yang menempati cache. Karena setiap pengambilan blok menindih isi cache
yang lama, maka sejumlah kecil blok akan menyebabkan data menjadi tertindih
setelah blok itu diambil.
2.Dengan meningkatnya ukuran blok maka jarak setiap word
tambahan menjadi lebih jauh dari word yang diminta, sehingga menjadi lebih
kecil kemungkinannya digunakan dengan cepat
Hubungan antara ukuran blok dan hit ratio sangat rumit untuk
dirumuskan, tergantung pada karakteristik lokalitas programnya dan tidak
terdapat nilai optimum yang pasti telah ditemukan. Ukuran antara 4 hingga 8
satuan yang dapat dialamati (word atau byte) cukup beralasan untuk mendekati
nilai optimum.
SUMBER : http://javaandro.blogspot.co.id/2014/06/makalah-cache-memory.html