Prinsip-prinsip memori cache
Cache memori ditujukan untuk memberikan kecepatan memori yang mendekati kecepatan memori tercepat yang bisa diperoleh, sekaligus memberikan ukuran memori yang besar dengan harga yang lebih murah dari jenis-jenis memori semikonduktor. Konsepnya adalah sebagai berikut :
ket: cpu ke chache melakukan proses yang bersifat bolak balik begitu juga chache ke main memory.
Terdapat memori utama yang relatif lebih besar dan lebih lambat dan cache memory yang berukuran lebih kecil dan lebih cepat. Cache berisi salinan sebagian memori utama. Pada saat CPU membaca sebuah word memory, maka dilakukan pemeriksaan untuk mengetahui apakah word itu terdapat pada cache. Bila sudah ada, maka word akan dikirimkan ke CPU. Sedangkan bila tidak ada, blok memori utama yang terdiri dari sejumlah word yang tetap akan dibaca ke dalam cache dan kemudian akan dikirimkan ke CPU.
Elemen-elemen Rancangan Cache
1. Kapasitas
2. Ukuran blok
3. Mapping: direct mapping, assosiative mapping, set assosiative mapping
4. Algoritma pengganti: LRU, FIFO, LFU, random
5. Write policy: write through, write back, write once\
6. Jumlah cache: single, unified
Pengertian Cache memory
gambar chache memory
Cache memory adalah memory berukuran kecil berkecepatan tinggi yang berfungsi untuk menyimpan sementara instruksi dan/atau data (informasi) yang diperlukan oleh prosesor. Boleh dikatakan bahwa cache memory ini adalah memory internal prosesor. Cache memory ini berbasis SRAM yang secara fisik berukuran kecil dan kapasitas tampung datanya juga kecil atau sedikit. Pada saat ini, cache memory ada 3 jenis, yaitu L1 cache, L2 cache, dan L3 cache.
Letak cache memory
L1 cache terintegrasi dengan chip prosesor, artinya letak L1 cache sudah menyatu dengan chip prosesor (berada di dalam keping prosesor). Sedangkan letak L2 cache, ada yang menyatu dengan chip prosesor, ada pula yang terletak di luar chip prosesor, yaitu di motherboard dekat dengan posisi dudukan prosesor. Pada era prosesor intel 80486 atau sebelumnya, letak L2 cache kebanyakan berada di luar chip prosesor. Chip cache terpisah dari prosesor, berdiri mandiri dekat chip prosesor. Sejak era prosesor Intel Pentium, letak L2 cache ini sudah terintegrasi dengan chip prosesor (menyatu dengan keping prosesor). Posisi L2 cache selalu terletak antara L1 cache dengan memori utama (RAM). Sedangkan L3 cache belum diimplementasikan secara umum pada semua jenis prosesor. Hanya prosesor-prosesor tertentu yang memiliki L3 cache.
Cache memory yang letaknya terpisah dengan prosesor disebut cache memory non integrated atau diskrit (diskrit artinya putus atau terpisah). Cache memory yang letaknya menyatu dengan prosesor disebut cache memory integrated, on-chip, atau on-die (integrated artinya bersatu/menyatu/ tergabung, on-chip artinya ada pada chip).
L1 cache (Level 1 cache) disebut pula dengan istilah primary cache, first cache, atau level one cache. L2 cache disebut dengan istilah secondary cache, second level cache, atau level two cache.
Kapasitas cache
L1 cache terintegrasi dengan chip prosesor, artinya letak L1 cache sudah menyatu dengan chip prosesor (berada di dalam keping prosesor). Sedangkan letak L2 cache, ada yang menyatu dengan chip prosesor, ada pula yang terletak di luar chip prosesor, yaitu di motherboard dekat dengan posisi dudukan prosesor. Pada era prosesor intel 80486 atau sebelumnya, letak L2 cache kebanyakan berada di luar chip prosesor. Chip cache terpisah dari prosesor, berdiri mandiri dekat chip prosesor. Sejak era prosesor Intel Pentium, letak L2 cache ini sudah terintegrasi dengan chip prosesor (menyatu dengan keping prosesor). Posisi L2 cache selalu terletak antara L1 cache dengan memori utama (RAM). Sedangkan L3 cache belum diimplementasikan secara umum pada semua jenis prosesor. Hanya prosesor-prosesor tertentu yang memiliki L3 cache.
Cache memory yang letaknya terpisah dengan prosesor disebut cache memory non integrated atau diskrit (diskrit artinya putus atau terpisah). Cache memory yang letaknya menyatu dengan prosesor disebut cache memory integrated, on-chip, atau on-die (integrated artinya bersatu/menyatu/ tergabung, on-chip artinya ada pada chip).
L1 cache (Level 1 cache) disebut pula dengan istilah primary cache, first cache, atau level one cache. L2 cache disebut dengan istilah secondary cache, second level cache, atau level two cache.
Kapasitas cache
Secara logika, kapasitas cache memory yang lebih besar dapat membantu memperbaiki kinerja prosesor, setidak-tidaknya mempersingkat waktu yang diperlukan dalam proses mengakses data.
Menentukan ukuran memori cache sangatlah penting untuk mendongkrak kinerja komputer. Dari segi harga cache sangatlah mahal tidak seperti memori utama. Semakin besar kapasitas cache tidak berarti semakin cepat prosesnya, dengan ukuran besar akan terlalu banyak gate pengalamatannya sehingga akan memperlambat proses.
Kita bisa melihat beberapa merek prosesor di pasaran beberapa waktu lalu. AMD mengeluarkan prosesor K5 dan K6 dengan cache yang besar (1MB) tetapi kinerjanya tidak bagus. Kemudian Intel pernah mengeluarkan prosesor tanpa cache untuk alasan harga yang murah, yaitu seri Intel Celeron pada tahun 1998-an hasil kinerjanya sangat buruk terutama untuk operasi datan besar, floating point, 3D. Intel Celeron versi berikutnya sudah ditambah cache sekitar 128KB.
Lalu berapa idealnya kapasitas cache? Sejumlah penelitian telah menganjurkan bahwa ukuran cache antara 1KB dan 512KB akan lebih optimum [STA96].
Menentukan ukuran memori cache sangatlah penting untuk mendongkrak kinerja komputer. Dari segi harga cache sangatlah mahal tidak seperti memori utama. Semakin besar kapasitas cache tidak berarti semakin cepat prosesnya, dengan ukuran besar akan terlalu banyak gate pengalamatannya sehingga akan memperlambat proses.
Kita bisa melihat beberapa merek prosesor di pasaran beberapa waktu lalu. AMD mengeluarkan prosesor K5 dan K6 dengan cache yang besar (1MB) tetapi kinerjanya tidak bagus. Kemudian Intel pernah mengeluarkan prosesor tanpa cache untuk alasan harga yang murah, yaitu seri Intel Celeron pada tahun 1998-an hasil kinerjanya sangat buruk terutama untuk operasi datan besar, floating point, 3D. Intel Celeron versi berikutnya sudah ditambah cache sekitar 128KB.
Lalu berapa idealnya kapasitas cache? Sejumlah penelitian telah menganjurkan bahwa ukuran cache antara 1KB dan 512KB akan lebih optimum [STA96].
Ukuran blok
Blok-blok yang berukuran Iebih besar mengurangi jumlah blok yang menempati cache. Setiap pengambilan blok menindih isi cache yang lama, maka sejumlah kecil blok akan menyebabkan data menjadi tertindih setelah blok itu diambil. Dengan meningkatnya ukuran blok, maka jarak setiap word tambahan menjadi lebih jauh dari word yang diminta,sehingga menjadi lebih kecil kemungkinannya untuk di perlukan dalam waktu dekat.(Dikutip dari artilek milik Yulisdin “Mukhlis, ST., MT”)
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).
Prioritas penyimpanan dan pengambilan data
Dalam mekanisme kerjanya, data yang akan diproses oleh prosesor, pertama kali dicari di L1 cache, bila tidak ada maka akan diambil dari L2 cache, kemudian dicari di L3 cache (bila ada). Jika tetap tidak ada, maka akan dicari di memori utama. Pengambilan data di L2 cache hanya dilakukan bila di L1 cahe tidak ada.
Lebih jelasnya proses baca tulis data yang dilakukan oleh prosesor ke memori utama dapat dijelaskan sebagai berikut:
Ketika data dibaca/ditulis di memori utama (RAM) oleh prosesor, salinan data beserta address-nya (yang diambil/ditulis di memori utama) disimpan juga di cache. Sewaktu prosesor memerlukan kembali data tersebut, prosesor akan mencari ke cache, tidak perlu lagi mencari di memori utama.
Jika isi cache penuh, data yang paling lama akan dibuang dan digantikan oleh data yang baru diproses oleh prosesor. Proses ini dapat menghemat waktu dalam proses mengakses data yang sama, dibandingkan jika prosesor berulang-ulang harus mencari data ke memori utama.
Secara logika, kapasitas cache memory yang lebih besar dapat membantu memperbaiki kinerja prosesor, setidak-tidaknya mempersingkat waktu yang diperlukan dalam proses mengakses data.
Fungsi Pemetaan (Maaping)
Telah kita ketahui bahwa cache mempunyai kapasitas yang kecil dibandingkan memori utama. Sehingga diperlukan aturan blok – blok mana yang diletakkan dalam cache. Terdapat tiga metode, yaitu :
· pemetaan langsung
· pemetaan asosiatif, dan
· pemetaan asosiatif set
§ Pemetaan Langsung
Pemetaan langsung adalah teknik yang paling sederhana, yaitu teknik ini memetakan blok memori utama hanya ke sebuah saluran cache saja.
Organisasi Cache dengan Pemetaan Langsung:
i = j modulus m dan m = 2r
dimana:
i = nomer saluran cache.
j = nomer blok memory utama.
m = jumlah saluran yang terdapat dalam cache.
Efek pemetaan tersebut adalah blok – blok memori utama diberikan ke saluran cache seperti berikut ini:
Jadi dalam metode ini pemetaan adalah bagian alamat blok memori utama sebagai nomer saluran cache. Ketika suatu blok data sedang diakses atau dibaca terhadap saluran yang diberikan, maka perlu memberikan tag bagi data untuk membedakannya dengan blok – blok lain yang dapat sesuai dengan saluran tersebut.
Perlu diketahui bahwa tidak ada dua buah blok yang dipetakan ke nomer saluran uang sama memiliki tag sama. Sehingga 000000, 010000, …, FF0000 masing – masing memiliki tag 00, 01, …, FF.
Teknik pemetaan ini sederhana dan mudah diimplementasikan, namun kelemahannya adalah terdapat lokasi cache yang tetap bagi sembarang blok – blok yang diketahui. Dengan demikian, apabila suatu program berulang – ulang melakukan word referensi dari dua blok yang berbeda memetakan saluran yang sama maka blok – blok itu secara terus – menerus akan di-swap ke dalam cache sehingga hit rasionya akan rendah.
§ Pemetaan Assosiatif
Pemetaan asosiatif mengatasi kekurangan pemetaan langsung dengan cara setiap blok memori utama dapat dimuat ke sembarang saluran cache. Alamat memori utama diinterpretasikan dalam field tag dan field word oleh kontrol logika cache. Tag secara unik mengidentifikasi sebuah blok memori utama.
Mekanisme untuk mengetahui suatu blok dalam cache dengan memeriksa setiap tag saluran cache oleh kontrol logika cache. Dengan pemetaan ini didapat fleksibilitas dalam penggantian blok baru yang ditempatkan dalam cache.
Kelebihan pemetaan assosiatif adalah Algoritma penggantian dirancang untuk memaksimalkan hit ratio, yang pada pemetaan langsung terdapat kelemahan dalam bagian ini. Kekurangan pemetaan asosiatif adalah kompleksitas rangkaian sehingga mahal secara ekonomi.
§ Pemetaan Assosiatif Set
Pemetaan asosiatif set menggabungkan kelebihan yang ada pada pemetaan langsung dan pemetaan asosiatif. Memori cache dibagi dalam bentuk set – set. Pemetaan asosiatif set prinsipnya adalah penggabungan kedua pemetaan sebelumnya. Alamat memori utama diinterpretasikan dalam tiga field, yaitu: field tag, field set, dan field word. Hal ini mirip dalam pemetaan langsung. Setiap blok meamori utama dapat dimuat dalam sembarang saluran cache.
Dalam pemetaan asosiatif set, cache dibagi dalam v buah set, yang masing-masing terdiri dari k saluran. Hubungan yang terjadi adalah:
m = v x k
i = j modulus v dan v = 2d dimana
i = nomer set cache
j = nomer blok memory utama.
m = jumlah saluran pada cache.
Algoritma Penggantian
Yang dimaksud dengan algoritma penggantian adalah suatu mekanisme pergantian blok-blok dalam memori cache yang lama dengan data baru. Dalam pemetaan langsung tidak diperlukan algoritma ini, namun dalam pemetaan asosiatif dan asosiatif set, algoritma ini mempunyai peranan penting untuk meningkatkan kinerja cache memori.
Banyak algoritma penggantian yang telah dikembangkan, namun dalam makalah ini akan dijelaskan algoritma yang umum digunakan saja. Algoritma yang paling efektif adalah Least Recently used (LRU), yaitu mengganti blok data yang terlama berada dalam cache dan tidak memiliki referensi. Algoritma lainnya adalah first in first out (FIFO), yaitu mengganti blok data yang awal masuk. Kemudian LFU mengganti blok data yang mempunyai referensi yang paling sedikit. Teknik lain adalah algoritma Random, yaitu penggantian tidak berdasarkan pemakaian datanya melainkan berdasarkan slot dari beberapa slot kandidat secara acak.
Write policy
Apabila suatu data telah diletakkan pada cache maka sebelum ada penggantian harusdicek apakah data tersebut telah mengalami perubahan. Apabila telah berubah maka data padamemori utama harus di-update. Masalah penulisan ini sangat kompleks, apalagi memoriutama48dapat diakses langsung oleh modul I/O, yang memungkinkan data pada memori utama berubah,lalu bagaimana dengan data yang telah dikirim pada cache? Tentunya perbedaan ini menjadikan data tidak valid.Teknik yang dikenalkan diantaranya,
write through
Yaitu operasi penulisan melibatkandata pada memori utama dan sekaligus pada cache memori sehingga data selalu valid.Kekurangan teknik ini adalah menjadikan lalu lintas data ke memori utama dan cachesangattinggi sehingga mengurangi kinerja sistem, bahkan bisa terjadi hang.Teknik lainnya adalah
write back
, yaitu teknik meminimasi penulisan dengan cara penulisan pada cache saja. Pada saat akan terjadi penggantian blok data cache maka barudiadakan penulisan pada memori utama. Masalah yang timbul adalah manakala data dimemoriutama belum di-update telah diakses modul I/O sehingga data di memori utama tidak valid.Penggunaan multi cache terutama untuk multi prosesor adan menjumpai masalah yanglebih kompleks. Masalah validasi data tidak hanya antara cache dan memori utama saja,namunantar cache juga harus diperhatikan.
Pendekatan penyelesaian masalah yang dapatdilakukanadalah dengan :
Bus Watching with Write Through
Yaitu setiap cache controller akan memonitoring busalamat untuk mendeteksi adanya operasi tulis. Apabila ada operasi tulis di alamat yangdatanya digunakan bersama maka cache controller akan menginvalidasi data cache-nya.•
Hardware Transparency,
Yaitu adanya perangkat keras tambahan yang menjaminsemua updating data memori utama melalui cache direfleksikan pada seluruh cache yang ada.•
Non Cacheable Memory,
yaitu hanya bagian memori utama tertentu yang digunakansecara bersama. Apabila ada mengaksesan data yang tidak di share merupakankegagalan cache
Jumlah cache
Memori yang bernama L1 Cache ini adalah memori yang terletak paling dekat dengan prosesor (lebih spesifik lagi: dekat dengan blok CU [Control Unit]). Penempatan Cache di prosesor dikembangkan sejak PC i486. Memori di tingkat ini memiliki kapasitas yang paling kecil (hanya 16KB), tetapi memiliki kecepatan akses dalam hitungan nanodetik (sepermilyar detik). Data yang berada di memori ini adalah data yang paling penting dan paling sering diakses. Biasanya data di sini adalah data yang telah diatur melalui OS (Operating System) menjadi Prioritas Tertinggi (High Priority).
Memori L2 Cache ini terletak terletak di MotherBoard (lebih spesifik lagi: modul COAST : Cache On A STick. Bentuk khusus dari L2 yang mirip seperti Memory Module yang dapat diganti-ganti tergantung motherboardnya). Akan tetapi ada juga yang terintegrasi langsung dengan MotherBoard, atau juga ada yang terintergrasi dengan Processor Module. Di L2Cache ini, kapasitasnya lebih besar dari pada L1 Cache. Ukurannya berkisar antara 256 KB—2MB. Biasanya , L2 Cache yang besar diperlukan di MotherBoard untuk Server. Kecepatan akses sekitar 10ns (nano second).