Ferdy Ant | Makes Different with Your Own: Caching

Caching

Caching
oleh :
Gunung Sarjono

Caching merupakan hal yang sangat penting bagi PC, karena dengannya Anda bisa mendapatkan computer kecepatan tinggi dengan harga tetap terjangkau.

Jika Anda pernah belanja komputer, maka mungkin Anda pernah mendengar kata "cache". Komputer modern mempunyai cache L1 dan L2. Anda juga mungkin pernah mendapat saran, yang mungkin seperti ini "Jangan beli Celeron, cache-nya kecil!"

Tampaknya caching merupakan proses penting yang terdapat pada setiap komputer dalam bentuk yang bervariasi. Ada memory cache, hardware dan software cache, page cache dan banyak lagi. Virtual memory juga salah satu bentuk caching. Pada artikel ini kita akan melihat lebih dalam tentang caching supaya kita tahu mengapa itu begitu penting.

Apakah caching?

Caching merupakan teknologi yang berdasarkan pada bagian dari memori komputer Anda. Tujuan utama cache adalah untuk mempercepat komputer Anda dengan harga komputer tetap terjangkau. Caching memungkinkan Anda melakukan tugas lebih cepat.

Sebelum caching

Untuk mendapatkan gambaran tentang konsep caching mari kita gunakan contoh seorang pustakawan. Bayangkan pustakawan tersebut duduk di mejanya. Ia di situ untuk memberi buku yang Anda minta. Misalkan Anda tidak bisa mendapatkan buku itu sendiri – Anda harus meminta kepada pustakawan setiap buku yang ingin dibaca, dan ia mengambilnya dari tumpukan di ruang penyimpanan. Pertama, mari kita mulai dengan pustakawan tanpa cache.

Pembaca pertama tiba. Ia meminta buku Harry Potter. Pustakawan tersebut pergi ke tempat penyimpanan, mengambil buku, kembali ke counter dan memberi buku tersebut kepada pembaca. Kemudian, pembaca tersebut datang lagi untuk mengembalikan buku. Pustakawan menerima buku dan mengembalikannya ke tempat penyimpanan, kemudian kembali ke tempatnya menunggu pembaca lain.

Misalkan pembaca berikutnya meminta Harry Potter. Pustakwan kemudian harus kembali ke tempat penyimpanan dan mengambil buku yang baru saja ia kembalikan dan memberinya kepada pembaca kedua. Pada situasi ini, pustawan harus berjalan bolak-balik untuk mengambil setiap buku. Apakah ada cara untuk meningkatkan kinerja pustakawan? Jawabannya tentu saja ya, ada – kita dapat memberi cache kepada pustakawan.

Sesudah caching

Mari kita berikan tas kepada pustakawan supaya ia nanti dapat menyimpan 10 buku (dalam konteks komputer, pustakawan sekarang mempunyai cache 10-buku). Dalam tas itu, ia akan menaruh buku yang dikembalikan para pembaca, sampai maksimum 10. Mari kita lihat lagi contoh sebelumnya, tetapi sekarang dengan pustakawan yang telah di-cache. Jam kerja dimulai. Tas pustakawan masih kosong. Pembaca pertama datang dan meminta Harry Potter. Tidak ada sulap di sini – pustakawan harus pergi ke tempat penyimpanan dan mengambil buku tersebut. Ia memberikannya kepada pembaca pertama. Kemudian, pembaca tersebut datang lagi dan mengembalikan buku kepada pustakawan. Daripada ia ke tempat penyimpanan untuk mengembalikannya, pustakawan tersebut memasukkan buku ke dalam tas dan berdiri (untuk melihat apakah tasnya penuh – lebih lanjut tentang ini nanti).

Pembaca lain datang dan meminta Harry Potter. Sebelum pergi ke tempat penyimpanan, pustakawan mengecek apakah judul itu ada dalam tasnya. Ternyata ada! Yang perlu ia lakukan adalah mengambil buku dari dalam tas dan memberikannya kepada pembaca. Ia tidak perlu pergi ke tempat penyimpanan sehingga pembaca dapat dilayani lebih efisien.

Bagaimana jika pembaca itu meminta buku yang tidak ada dalam cache (tas)? Dalam hal ini, pustakawan dengan cache sedikit tidak efisien dibanding pustakawan tanpa cache, karena pustakawan terlebih dulu butuh waktu untuk mencari buku dalam tasnya.

Salah satu tantangan pembuatan cache adalah untuk meminimalisir dampak pencarian cache, dan hardware modern telah mengurangi waktu delay ini menjadi nol. Bahkan dengan contoh pustakawan kita, waktu latency (waktu tunggu) pencarian cache sangat kecil dibanding waktu pergi ke tempat penyimpanan. Cache-nya kecil (10 buku) dan waktu yang dibutuhkan untuk mencarinya hanya sebagian kecil dari waktu perjalanan ke tempat perjalanan.

"Lapisan" Cache

PC modern mempunyai banyak layer cache. Ini belum termasuk cache yang terdapat pada beberapa peripheral, seperti hard disk misalnya. Makin ke atas semakin dekat ke processor dan lebih cepat dari layer di bawahnya (lihat tabel). Setiap layer juga men-cache layer di bawahnya, karena kecepatannya yang lebih tinggi. Mengingat lambatnya beberapa perangkat tersebut dibanding processor maka untuk menghindari pengaksesan yang lambat penggunaan cache sangat penting.

Cache Level 1 dan Level 2

Pada waktu mikroprocessor mengakses memori utama (RAM), ia melakukannya dalam waktu sekitar 60 nanodetik (seperenampuluh miliar detik). Ini waktu yang sangat cepat. Mikroprocessor dapat mempunyai cycle time 2 nanodetik, jadi mikroprocessor 60 nanodetik nampak sangat lama.

Bagaimana jika kita membuat bank memori khusus, kecil tetapi sangat cepat (sekitar 30 nanodetik)? Ini sudah dua kali lebih cepat dari akses memori utama. Ini disebut cache level 2 atau cache L2. Bagaimana jika membuat sistem memori yang lebih kecil tetapi lebih cepat langsung ke dalam chip micro processor? Dengan demikian, memori ini akan diakses pada kecepatan processor bukan kecepatan bus memori. Ini adalah cache L1, yang pada Pentium 233-megahertz (MHz) 3,5 kali lebih cepat dibanding cache L2, dan dua kali lebih cepat dibanding akses memori utama.

Komputer mempunyai banyak subsistem. Anda dapat meletakkan cache di antara mereka supaya kinerja meningkat. Berikut adalah sebuah contoh. Kita mempunyai mikroprocessor (yang paling tercepat dalam komputer). Kemudian ada cache L1 yang men-cache cache L2 yang men-cache memori utama yang dapat digunakan (dan seringkali digunakan) sebagai cache untuk perangkat yang lebih lambat seperti hard disk dan CDROM.Hard disk juga digunakan untuk men-cache medium yang lebih lambat –koneksi Internet Anda.

Subsistem cache

Koneksi Internet merupakan link paling lambat dalam komputer Anda. Jadi browser (Internet Explorer, Netscape, Opera, dst) menggunakan hard disk untuk menyimpan halaman HTML, menaruh mereka ke dalam folder khusus pada hard disk. Kali pertama Anda meminta halaman HTML, browser mengambilnya dan menyimpan salinannya pada hard disk. Ketika selanjutnya Anda meminta halaman ini, browser memeriksa apakah tanggal file pada Internet lebih baru dibanding yang tersimpan dalam cache. Jika tanggalnya sama, daripada mendownloadnya dari Internet, browser menggunakan yang tersimpan pada hard disk. Dalam kasus ini, memori yang kecil tetapi lebih cepat adalah hard disk Anda dan yang besar tetapi lambat adalah Internet.

Cache juga dapat terintegrasi langsung pada perangkat. Hard disk modern datang dilengkapi dengan cache sekitar 2-8 megabyte. Komputer tidak secara langsung menggunakan memori ini – hard disk controller yang melakukannya. Bagi komputer, chip memori ini merupakan hard disk itu sendiri. Pada waktu komputer meminta data dari hard disk, hard disk controller mengecek ke dalam memorinya sebelum memindahkan mekanik hard disk (yang sangat lambat dibanding memori). Jika ia menemukan data yang diminta komputer dalam cache, ia akan memberikan data yang tersimpan dalam cache tanpa benar-benar mengakses data pada hard disk itu sendiri, menghemat banyak waktu.

Ini adalah percobaan yang dapat Anda lakukan. Komputer Anda men-cache drive floppy dengan memori utama, dan Anda dapat melihatnya terjadi. Akseslah file besar dari floppy Anda – sebagai contoh, buka file teks 300-kilobyte dalam editor teks. Kali pertama, Anda akan melihat lampu floppy menyala, dan Anda akan menunggu. Floppy disk sangat lambat, jadi akan membutuhkan waktu sekitar 20 detik untuk membuka file. Sekarang, tutup editor dan buka kembali file yang sama.

Kali kedua (jangan tunggu 20 detik atau melakukan banyak akses hard disk antar keduanya) Anda tidak akan melihat lampu menyala, dan Anda tidak akan menunggu. Operating system mengecek ke dalam memori cache-nya untuk floppy disk dan menemukan yang dicari. Jadi daripada menunggu 20 detik, data yang ditemukan dalam subsitem memori jauh lebih cepat dibanding kali pertama Anda mencobanya (satu akses ke floppy disk membutuhkan 120 milidetik, sementara akses ke memori utama membutuhkan sekitar 60 nanodetik – ini jauh lebih cepat). Anda dapat melakukan percobaan yang sama pada hard disk, tetapi lebih nyata pada flopy drive karena ia sangat lambat.

Teknologi cache

Satu pertanyaan yang sering muncul, "Mengapa tidak membuat semua memori komputer berjalan pada kecepatan yang sama dengan cache L1, jadi tidak diperlukan caching?" Itu bisa saja, tatapi akan sangat mahal. Ide dibalik caching adalah untuk menggunakan sejumlah kecil memori mahal untuk mempercepat memori lebih murah yang besar dan lambat.

Dalam membuat komputer, tujuannya adalah memungkinkan microprosessor berjalan pada kecepatan penuh dengan biaya semurah mungkin. Chip 500-MHz mempunyai 500 juta cycle dalam satu detik (satu cycle setiap dua nanodetik). Tanpa cache L1 dan L2, akses ke memori utama membutuhkan 60 nanodetik atau 30 cycle.

Cukup menakjubkan bahwa memori yang relatif sangat kecil dapat memaksimalkan memri yang jumlahnya jauh lebih besar. Coba pikirkan tentang cahce L2 256-kilobyte yang men-cache RAM 64 megabyte. Dalam kasus ini, 256.000 byte men-cache 64.000.000 byte. Bagaimana itu bisa?

Dalam ilmu komputer, kita mempunyai konsep bernama locality of reference. Ini berarti dalam program yang besar, hanya sebagian kecil yang digunakan pada satu waktu. Locality of reference bekerja untuk bagian besar dari program. Meskipun hanya berukuran 10 megabyte, hanya sedikit byte dari program itu yang digunakan pada satu
waktu, dan tingkat pengulangannya sangat tinggi.

Locality of Reference

Mari kita lihat contoh pseudo-code untuk melihat bagaimana locality of reference bekerja. Program kecil ini meminta user untuk memasukkan angka antara 1 dan 100. Ia membaca nilai yang dimasukkan oleh user. Kemudian, program membagi setiap angka antara 1 dan 100 dengan angka yang dimasukkan oleh user. Ia memeriksa apakah sisanya 0 (pembagian modulus). Jika ya, program menampilkan "Z is a multiple of X" (sebagai contoh, 12 is a multiple of 6), untuk setiap angkat antara 1 dan 100. Lalu program selesai.

Meskipun Anda tidak tahu banyak tentang programming komputer, tidaklah sulit untuk mengetahui bahwa pada baris kesebelas, bagian loop (baris 7 sampai 9) dijalankan 100 kali. Semua baris lainnya hanya dijalankan sekali. Baris 7 sampai 9 akan lebih cepat secara signifikan karena caching.

Program ini sangat kecil dan muat dalam cache L1, tetapi misalkan program ini sangat besar hasilnya tetap sama. Pada waktu Anda memrogram, banyak tindakan yang dilakukan di dalam loop. Pengolah kata menghabiskan 95 persen waktunya menunggu
input Anda dan menampilkannya pada layar. Bagian dari program pengolah kata ini terdapat dalam cache.

Rasio 95%:5% inilah yang kita sebut locality of reference, dan inilah mengapa cache bekerja sangat efisien. Ini juga yang membuat cache kecil secara efisien men-cache memori besar. Anda dapat melihat mengapa kita tidak perlu membuat komputer dengan memori tercepat di mana-mana. Kita bisa mendapatkan efektivitas 95 persen ini dengan sedikit harga.

FAKTA TENTANG CACHE

  • Dari contoh pustakawan yang kita gunakan Anda dapat melihat beberapa fakta penting tentang caching.
  • Teknologi cache merupakan penggunaan jenis memori yang cepat tapi kecil untuk mempercepat jenis memori yang lebih lambat tapi besar.
  • Pada waktu menggunakan cache, Anda harus mengecek cache apakah ada suatu item di dalamnya. Jika ada, disebut hit. Jika tidak, disebut cache miss dan komputer harus menunggu perjalanan dari memori yang lebih besar dan lambat.
  • Cache mempunyai ukuran maksimm yang jauh lebih kecil dari memori besar.
  • Adalah mungkin untuk mempunyai beberapa lapis cache. Pada contoh kita, memori kecil tetapi cepat adalah tas, dan tempat penyimpanan mewakili memori besar yang lambat. Ini merupakan cache satu-level. Mungkin ada lapisan lain dari cahce yang berupa rak yang dapat menampung buku di belakang counter. Pustakawan dapat mengecek tas, kemudian rak dan kemudian tempat penyimpanan. Ini merupakan cache dua-level.

0 komentar:

Copyright © 2008 - Ferdy Ant | Makes Different with Your Own - is proudly powered by Blogger
Smashing Magazine - Design Disease - Blog and Web - Dilectio Blogger Template