Senin, 10 Oktober 2011

Cache Memory

Sejarah Perkembangan Cache Memory
       Pentium Diluncurkan sekitar awal tahun ’90-an, tahun 1993 tepatnya, Pentium merupakan lompatan besar dalam sejarah prosesor X86 dimana arsitektur prosesor 32-bit mengalami perubahan yang sangat besar. Hal ini menyebabkan kecepatan Pentium ( 80586 atau singkatnya 586 ) secara clock-for-clock dengan prosesor 486 ( generasi sebelumnya ) jauh lebih cepat.
         Dimulai dengan kecepatan 60 Mhz sampai 233 Mhz, prosesor ini telah membuat revolusi baru dalam dunia PC. Pada versi awalnya ( Pentium 60 Mhz ) prosesor ini pernah membuat heboh di kalangan dunia PC karena menurut seorang profesor, prosesor ini telah melakukan kesalahan perhitungan jika dilakukan kombinasi perhitungan perkalian dan pengakaran. Hal ini diakui oleh Intel yang lalu menarik kembali seluruh prosesor Pentium 60 Mhz sekaligus menghapus armada prosesor 60 dan 66 Mhz yang lalu diganti dengan Pentium 75 Mhz.
Di Indonesia, entah di negara lain, penulis mengamati kalau prosesor Pentium yang paling banyak dipakai adalah prosesor Pentium 133 Mhz, mungkin anda pembaca pernah memilikinya ?
Intel membuat chipset Pentium ini mulai dari FX, HX, VX sampai yang mampu mendukung Pentium versi akhir dengan MMX, chipset TX , bentuk pengepakan prosesornya adalah Socket-7.
         Pentium mengalami sedikit perubahan arsitektur seiring dengan perkembangan teknologi dengan diperkenalkannya instruksi multimedia baru yang disebut MMX pada tahun 1994. Meskipun digemborkan oleh Intel kalau prosesor dengan kemampuan ini dapat meningkatkan pengalaman multimedia ( multimedia experience ) sampai 30-50%, tetapi pada kenyataannya kumpulan instruksi ini banyak tidak terpakai oleh para programmer multimedia ( terutama game ). Tetapi instruksi MMX ini merupakan cikal bakal dari instruksi SIMD ( Single Instruction Multiple Data ) yang sejak itu mulai dikembangkan. Instruksi 3DNow! Dari AMD sebagai contoh merupakan penyempurnaan dari instruksi MMX, demikian pula ISSE ( Internet Streaming SIMD Extension ) milik Intel sendiri.



Pengertian cache
pengertian cacheCache adalah memory berukuran kecil yang sifatnya temporary (sementara). Cache memory ini ada diantara Main Memory dan Register pemroses, berfungsi agar pemroses tidak langsung mengacu pada memori utama agar kinerja dapat ditingkatkan. Walaupun ukuran filenya sangat kecil, namun kecepatannya 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. Penggunaan cache ditujukan untuk meminimalisir terjadinya bottleneck dalam aliran data antara processor dan RAM. Sedangkan dalam terminologi software, istilah ini merujuk pada tempat penyimpanan sementara untuk beberapa file yang sering diakses (biasanya diterapkan dalam network).

Jenis – jenis cache memory
Pada saat ini, cache memory ada 3 jenis, yaitu L1 cache, L2 cache, dan L3 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.
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.
Cache level 1 dan cache level 2 atau sering juga diistilahkan dengan cache L1 dan L2. Prosesor-prosesor lama generasi x386 dan generasi sebelumnya, tidak menggunakan cache L1. Generasi terbaru saat ini prosesor sudah menggunakan cache memory yang berkembang sejak ukuran 8, 64, 128 KB. Sedangkan pada cache L2, prosesor-prosesor terbaru menggunakan ukuran 64, 128, 256, dan 512 KB, semua tergantung dari jenis dan tipe prosesor yang digunakan. Bahkan, cache pada server seperti pada intel Xeon dan intel Itanium ada yang mencapai ukuran 1 dan 2 Mb.

Cache L1
Cache data : 8 KB (Wilamette, Northwood); 16 KB (Prescott, Cedar-Mill)
Cache instruksi : 12 KB
Cache L2
256 KB, 512 KB, atau 1.024 KB, dalam tubuh, kecepatan penuh (setara dengan kecepatan prosesor) dengan lebar lajur 256-bit
Jenis cache L2
Asosiatif delapan lajur, mendukung ECC

Cache memory terbagi menjadi dua yaitu :
Cache Memory yang terdapat pada internal Processor , cache memory jenis ini kecepatan aksesnya sangat tinggi, dan harganya sangat mahal. Hal ini bisa terlihat pada Processor yang berharga mahal seperti P4,P3,AMD-Athlon dll, semakin tinggi kapasitas L1,L2 Cache memori maka semakin mahal dan semakin ceppat Processor.
Cache Memory yang terdapat diluar Processor, yaitu berada pada MotherBoard, memori jenis ini kecepatan aksesnya sangat tinggi, meskipun tidak secepat chache memori jenis pertama ( yang ada pada internal Processor). Semakin besar kapasitasnya maka semakin mahal dan cepat. Hal ini bisa kita lihat pada Motherboard dengan beraneka ragam kapasitas cache memory yaitu 256kb, 512kb, 1Mb, 2Mb dll.

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.

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).

Elemen rancangan cache
Elemen-elemen penting dari rancangan memory cache adalah sebagai berikut:
Ukuran cache, disesuaikan dengan kebutuhan untuk membantu kerja memori. Semakin besar ukuran cache semakin lambat karena semakin banyak jumlah gerbang dalam pengalamatan cache.
Fungsi Pemetaan (Mapping), terdiri dari Pemetaan Langsung, Asosiatif, Asosiatif Set.Pemetaan langsung merupakan teknik yang paling sederhana, yaitu memetakkan masing-masing blok memori utama hanya ke sebuah saluran cache saja. Pemetaan asosiatif dapat mengatasi kekurangan pemetaan langsung dengan cara mengizinkan setiap blok memori utama untuk dimuatkan ke sembarang saluran cache.Hal ini menurut artikel dari Yulisdin Mukhlis, ST., MT
Algoritma Penggantian, terdiri dari Least Recently Used (LRU), First in First Out (FIFO), Least Frequently Used (LFU), Acak. Algoritma penggantian digunakan untuk menentukan blok mana yang harus dikeluarkan dari cache untuk menyiapkan tempat bagi blok baru. Ada 2 metode algoritma penggantian yaitu Write-through dan Write-back.Write-through adalah Cache dan memori utama diupdate secara bersamaan waktunya. Sedangkan Write-back melakukan update data di memori utama hanya pada saat word memori telah dimodifikasi dari cache.
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")
Line size, Jumlah cache, Satu atau dua dua tingkat, kesatuan atau terpisah
Pengoperasian Detail
Ketika kebutuhan prosesor untuk membaca atau menulis suatu lokasi di memori utama, pertama kali akan memeriksa apakah lokasi memori ada dalam cache. Hal ini dilakukan dengan membandingkan alamat lokasi memori untuk semua tag dalam cache yang mungkin berisi alamat itu. Jika prosesor menemukan bahwa lokasi memori dalam cache, kita mengatakan bahwa cache hit telah terjadi; jika tidak, kita berbicara tentang cache miss. Dalam kasus hit cache, prosesor segera membaca atau menulis data dalam baris cache. Proporsi Akses yang dihasilkan dalam cache hit dikenal sebagai tingkat memukul, dan merupakan ukuran efektivitas cache.
Dalam kasus cache miss, cache mengalokasikan sebagian besar entri baru, yang terdiri dari tag hanya tidak terjawab dan salinan data dari memori. Referensi kemudian dapat diterapkan pada entri baru seperti dalam kasus hit. Data yang relatif lambat karena mereka memerlukan data yang akan ditransfer dari memori utama. Incurs transfer ini tertunda karena memori utama jauh lebih lambat dibandingkan dengan memori cache, dan juga incurs yang overhead untuk merekam data baru dalam cache sebelum dikirim ke prosesor.
Dalam rangka untuk memberikan ruang bagi entri baru pada cache miss, cache umumnya memiliki untuk membuang salah satu entri yang sudah ada. The heuristik yang digunakan untuk memilih entri untuk membuang disebut kebijakan penggantian. Masalah mendasar dengan kebijakan penggantian adalah bahwa ia harus memprediksi entri cache yang ada paling tidak mungkin untuk digunakan di masa depan. Meramalkan masa depan adalah sulit, terutama untuk hardware cache yang menggunakan aturan sederhana setuju untuk pelaksanaan di sirkuit, jadi ada berbagai kebijakan untuk memilih pengganti dari dan tidak ada cara yang sempurna untuk memutuskan di antara mereka. Satu kebijakan penggantian populer, LRU, menggantikan yang paling terakhir digunakan entri.
Ketika data ditulis ke cache, harus pada titik tertentu ditulis ke memori utama juga. Waktu menulis ini dikendalikan oleh apa yang dikenal sebagai kebijakan menulis. Dalam write-through cache, setiap menulis ke cache menyebabkan menulis ke memori utama. Atau, dalam write-back atau salin-kembali cache, menulis tidak langsung dicerminkan ke memori. Sebaliknya, cache lokasi track yang telah ditulis di atas (lokasi ini ditandai kotor). Data di lokasi tersebut ditulis kembali ke memori utama apabila data yang diusir dari cache. Untuk alasan ini, sebuah kehilangan dalam write-back cache akan sering memerlukan dua memori akses pada pelayanan: satu untuk pertama menulis lokasi yang kotor ke memori dan kemudian lain untuk membaca lokasi baru dari memori.
Ada kebijakan serta menengah. Mungkin cache write-through, tetapi menulis dapat diadakan dalam antrian yang menyimpan data sementara, biasanya beberapa media penyimpanan sehingga dapat diproses bersama-sama (yang dapat mengurangi siklus bus dan sehingga meningkatkan pemanfaatan bus).
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 dan kegunaan cache
fungsi cacheCache 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.


Istilah penting yang berhubungan
Cache hit, jika data yang diminta oleh unit yang lebih tinggi dan ada dalam cache disebut "hit". Permintaan dapat dilayani dengan cepat. Maksud urutan unit dari rendah hingga tinggi yaitu: Streamer - Hardisk Memori - Second Level - First level - CPU cache.
Cache miss, bila data yang diminta tidak ada dalam cache, harus diambil dari unit dibawahnya yang cukup memakan waktu. Ini disebut miss (gagal)
Burst mode, dalam modus cepat ini cache mengambil banyak data sekaligus dari unit dibawahnya. Ia mengambil lebih dari yang dibutuhkan dengan asumsi, data yang diminta berikutnya letaknya berdekatan.
LRU (Least Recently Used) adalah algoritma penggantian cache.
COAST, Cache on the stick adalah bentuk khusus L2, yang dapat diganti-ganti seperti RAM dan ditempatkan pada modul.
DRAM, memori dinamik (''Dynamic Random Access Memory) adalah bentuk yang paling umum. DRAM hanya menggunakan sebuah kapasitor untuk menyimpan, sehingga kecil dan murah untuk kapasitas besar. Kekurangannya: kecepatannya tidak begitu tinggi.
SRAM, memori statik (Static RAM) ini menggunakan sakelar elektronik (flip-flop) untuk menyimpan. secara teknis flip-flop pada RAM lebih rumit dari kapasitor pada DRAM. Karena lebih cepat, SRAM biasanya digunakan untuk cache L1 atau L2.
SDRAM, memori dinamik tersinkronisasi (Synchronous DRAM) merupakan perkembangan lebih lanjut dari DRAM. Akses pada memori disinkronkan dengan frekuensi sistim prosesor sehingga menghemat waktu. Pada motherboard modern, SDRAM berfungsi sebagai pengganti langsung DRAM.
First level cache (L1), ini tingkat cache teratas dalam hirarki, dengan kapasitas memori terkecil, termahal dan tercepat.
Second level cache (L2), cache level dua ini memiliki kapasitas lebih besar dari L1, tetapi lebih lambat dan murah. Cache L2 masih lebih cepat dibandingkan dengan RAM.
Write back (WB), cache digunakan tidak hanya saat membaca, tetapi juga dalam proses menulis.
Write through (WT), mementingkan keamanan: cache hanya digunakan saat membaca, sedangkan untuk menulis ditunggu hingga memori yang dituju selesai menulis.