Uncategorized
Bagaimana Cara Kerja Cache
Jika Anda telah berbelanja komputer, Anda pasti pernah mendengar kata “cache”. Komputer modern memiliki cache L1 dan L2, dan banyak yang sekarang juga memiliki cache L3.
Ternyata caching adalah proses ilmu komputer penting yang muncul di setiap komputer dalam berbagai bentuk. Ada cache memori, cache perangkat keras dan perangkat lunak, cache halaman, dan banyak lagi. Memori virtual bahkan merupakan bentuk caching. Dalam artikel ini, kami akan mempelajari cache sehingga Anda dapat memahami mengapa itu sangat penting.
Contoh Sederhana: Sebelum Cache
Cache adalah teknologi yang didasarkan pada subsistem memori komputer Anda. Tujuan utama cache adalah untuk mempercepat komputer Anda sekaligus menjaga harga komputer tetap rendah. Caching memungkinkan Anda melakukan tugas komputer dengan lebih cepat.
Untuk memahami ide dasar di balik sistem cache, mari kita mulai dengan contoh super sederhana yang menggunakan pustakawan untuk mendemonstrasikan konsep cache. Bayangkan seorang pustakawan di belakang mejanya.
Dia ada di sana untuk memberi Anda buku-buku yang Anda minta. Demi kesederhanaan, katakanlah Anda tidak bisa mendapatkan buku itu sendiri, Anda harus bertanya kepada pustakawan buku apa pun yang ingin Anda baca, dan dia mengambilnya untuk Anda dari satu set tumpukan di gudang. Pertama, mari kita mulai dengan pustakawan tanpa cache.
Pelanggan pertama tiba. Dia meminta buku Moby Dick. Pustakawan pergi ke gudang, mengambil buku itu, kembali ke konter dan memberikan buku itu kepada pelanggan. Nanti, klien kembali untuk mengembalikan bukunya. Pustakawan mengambil buku itu dan mengembalikannya ke gudang. Dia kemudian kembali ke konternya menunggu pelanggan lain.
Katakanlah pelanggan berikutnya meminta Moby Dick (Anda melihatnya datang …). Pustakawan kemudian harus kembali ke gudang untuk mendapatkan buku yang baru-baru ini dia tangani dan memberikannya kepada klien. Dengan model ini, pustakawan harus melakukan perjalanan pulang pergi lengkap untuk mengambil setiap buku, bahkan yang sangat populer yang sering diminta. Adakah cara untuk meningkatkan kinerja pustakawan?
Ya, ada caranya kita bisa menyimpan cache di pustakawan. Di bagian selanjutnya, kita akan melihat contoh yang sama tetapi kali ini, pustakawan akan menggunakan sistem cache.
Contoh Sederhana: Setelah Cache
Mari berikan pustakawan ransel tempat dia bisa menyimpan 10 buku (dalam istilah komputer, pustakawan sekarang memiliki cache 10 buku). Dalam tas punggung ini, dia akan meletakkan buku-buku yang dikembalikan klien kepadanya, maksimal 10. Mari kita gunakan contoh sebelumnya, tetapi sekarang dengan pustakawan penyimpanan cache yang baru dan lebih baik.
Hari dimulai. Ransel petugas perpustakaan kosong. Klien pertama kami datang dan meminta Moby Dick. Tidak ada keajaiban di sini pustakawan harus pergi ke gudang untuk mendapatkan buku itu. Dia memberikannya kepada klien. Nanti, klien kembali dan memberikan buku itu kembali ke pustakawan.
Alih-alih kembali ke gudang untuk mengembalikan buku, pustakawan meletakkan buku di ranselnya dan berdiri di sana (dia memeriksa dulu untuk melihat apakah tasnya penuh, lebih lanjut nanti). Klien lain datang dan meminta Moby Dick. Sebelum pergi ke gudang, petugas perpustakaan memeriksa apakah judul ini ada di tas punggungnya. Dia menemukannya! Yang harus dia lakukan adalah mengambil buku dari ransel dan memberikannya kepada klien. Tidak ada perjalanan ke gudang, sehingga klien dilayani dengan lebih efisien.
Bagaimana jika klien meminta judul tidak di cache (ransel)? Dalam hal ini, pustakawan kurang efisien dengan cache dibandingkan tanpa cache, karena pustakawan meluangkan waktu untuk mencari buku di tas punggungnya terlebih dahulu.
Salah satu tantangan desain cache adalah meminimalkan dampak pencarian cache, dan perangkat keras modern telah mengurangi waktu tunda ini menjadi hampir nol. Bahkan dalam contoh pustakawan sederhana kami, waktu latensi (waktu tunggu) untuk mencari cache sangat kecil dibandingkan dengan waktu untuk berjalan kembali ke gudang sehingga tidak relevan. Cache kecil (10 buku), dan waktu yang diperlukan untuk mengetahui adanya kesalahan hanya sebagian kecil dari waktu yang dibutuhkan untuk perjalanan ke gudang.
Dari contoh ini, Anda dapat melihat beberapa fakta penting tentang caching:
● Teknologi cache adalah penggunaan jenis memori yang lebih cepat tetapi lebih kecil untuk mempercepat jenis memori yang lebih lambat tetapi lebih besar.
● Saat menggunakan cache, Anda harus memeriksa cache untuk melihat apakah ada item di sana. Jika ada, itu disebut cache hit. Jika tidak, ini disebut cache miss dan komputer harus menunggu perjalanan pulang pergi dari area memori yang lebih besar dan lebih lambat.
● Cache memiliki beberapa ukuran maksimum yang jauh lebih kecil daripada area penyimpanan yang lebih besar.
● Dimungkinkan untuk memiliki banyak lapisan cache. Dengan contoh pustakawan kami, jenis memori yang lebih kecil tetapi lebih cepat adalah tas punggung, dan ruang penyimpanan mewakili jenis memori yang lebih besar dan lebih lambat. Ini adalah cache satu tingkat. Mungkin ada lapisan cache lain yang terdiri dari rak yang dapat menampung 100 buku di belakang meja. Pustakawan dapat memeriksa tas punggung, lalu rak dan gudang. Ini akan menjadi cache dua tingkat.
Cache Komputer
Komputer adalah mesin yang mengukur waktu dengan sedikit demi sedikit. Ketika mikroprosesor mengakses memori utama (RAM), ia melakukannya dalam waktu sekitar 60 nanodetik (60 miliar detik). Itu cukup cepat, tetapi jauh lebih lambat daripada mikroprosesor biasa. Mikroprosesor dapat memiliki waktu siklus sesingkat 2 nanodetik, sehingga mikroprosesor 60 nanodetik tampak seperti selamanya.
Bagaimana jika kita membangun bank memori khusus di motherboard, kecil tapi sangat cepat (sekitar 30 nanodetik)? Itu sudah dua kali lebih cepat dari akses memori utama. Itu disebut cache level 2 atau cache L2.
Bagaimana jika kita membangun sistem memori yang lebih kecil tetapi lebih cepat langsung ke dalam chip mikroprosesor? Dengan begitu, memori ini akan diakses dengan kecepatan mikroprosesor dan bukan kecepatan bus memori. Itu adalah cache L1, yang pada Pentium 233-megahertz (MHz) 3,5 kali lebih cepat daripada cache L2, yang dua kali lebih cepat daripada akses ke memori utama.
Beberapa mikroprosesor memiliki dua tingkat cache yang terpasang langsung ke dalam chip. Dalam hal ini, cache motherboard, cache yang ada antara mikroprosesor dan memori sistem utama menjadi cache level 3, atau L3.
Ada banyak subsistem di komputer; Anda dapat meletakkan cache di antara banyak dari mereka untuk meningkatkan kinerja. Berikut contohnya. Kami memiliki mikroprosesor (yang tercepat di komputer). Lalu ada cache L1 yang menyimpan cache L2 yang menyimpan memori utama yang dapat digunakan (dan sering digunakan) sebagai cache bahkan untuk periferal yang lebih lambat seperti hard disk dan CD-ROM. Hard disk juga digunakan untuk meng-cache media yang lebih lambat, koneksi Internet Anda.
Cache Subsistem
Koneksi Internet Anda adalah tautan paling lambat di komputer Anda. Jadi browser Anda (Internet Explorer, Chrome, Opera, dll.) Menggunakan hard disk untuk menyimpan halaman HTML, meletakkannya di folder khusus pada disk Anda.
Pertama kali Anda meminta halaman HTML, browser Anda merendernya dan salinannya juga disimpan di disk Anda. Lain kali Anda meminta akses ke halaman ini, browser Anda memeriksa apakah tanggal file di Internet lebih baru daripada yang di-cache. Jika tanggalnya sama, browser Anda menggunakan yang ada di hard disk Anda alih-alih mengunduhnya dari Internet. Dalam hal ini, sistem memori yang lebih kecil tetapi lebih cepat adalah hard disk Anda dan yang lebih besar dan lebih lambat adalah Internet.
Cache juga dapat dibangun langsung di periferal. Hard disk modern hadir dengan memori cepat, sekitar 512 kilobyte, terpasang ke hard disk. Komputer tidak secara langsung menggunakan memori ini, pengontrol hard disk menggunakannya. Untuk komputer, chip memori ini adalah disk itu sendiri.
Saat komputer meminta data dari hard disk, pengontrol hard disk memeriksa ke dalam memori ini sebelum memindahkan bagian mekanis hard disk (yang sangat lambat dibandingkan dengan memori). Jika menemukan data yang diminta komputer di cache, ia akan mengembalikan data yang disimpan di cache tanpa benar-benar mengakses data di disk itu sendiri, menghemat banyak waktu.
Inilah eksperimen yang bisa Anda coba. Komputer Anda menyimpan floppy drive Anda dengan memori utama, dan Anda benar-benar dapat melihatnya terjadi. Akses file besar dari floppy Anda misalnya, buka file teks 300 kilobyte di editor teks. Pertama kali, Anda akan melihat lampu di floppy menyala, dan Anda akan menunggu. Floppy disk sangat lambat, jadi perlu waktu 20 detik untuk memuat file. Sekarang, tutup editor dan buka file yang sama lagi. Kedua kalinya (jangan menunggu 30 menit atau melakukan banyak akses disk antara dua percobaan) Anda tidak akan melihat lampu menyala, dan Anda tidak akan menunggu. Sistem operasi memeriksa cache memorinya untuk floppy disk dan menemukan apa yang dicarinya.
Jadi, alih-alih menunggu 20 detik, data ditemukan di subsistem memori jauh lebih cepat daripada saat Anda pertama kali mencobanya (satu akses ke floppy disk membutuhkan waktu 120 milidetik, sementara satu akses ke memori utama membutuhkan waktu sekitar 60 nanodetik itu banyak. lebih cepat). Anda dapat menjalankan pengujian yang sama pada hard disk Anda, tetapi ini lebih terbukti pada floppy drive karena sangat lambat.
Untuk memberi Anda gambaran besar tentang semuanya, berikut adalah daftar sistem caching normal:
● L1 cache – Memori mengakses dengan kecepatan mikroprosesor penuh (10 nanodetik, ukuran 4 kilobyte hingga 16 kilobyte)
● L2 cache – Akses memori jenis SRAM (sekitar 20 hingga 30 nanodetik, ukuran 128 kilobita hingga 512 kilobita)
● Memori utama – Akses memori jenis RAM (sekitar 60 nanodetik, berukuran 32 megabyte hingga 128 megabyte)
● Hard disk – Mekanis, lambat (sekitar 12 milidetik, berukuran 1 gigabyte hingga 10 gigabyte)
● Internet – Sangat lambat (antara 1 detik dan 3 hari, ukuran tidak terbatas)
Seperti yang Anda lihat, L1 cache menyimpan cache L2, yang menyimpan memori utama, yang dapat digunakan untuk cache subsistem disk, dan seterusnya.begitu seterusnya.
Teknologi Cache
Satu pertanyaan umum yang diajukan pada saat ini adalah, “Mengapa tidak membuat semua memori komputer berjalan pada kecepatan yang sama dengan cache L1, jadi tidak diperlukan cache?” Itu akan berhasil, tetapi akan sangat mahal. Ide di balik caching adalah menggunakan sejumlah kecil memori mahal untuk mempercepat sejumlah besar memori yang lebih lambat dan lebih murah.
Dalam mendesain komputer, tujuannya adalah untuk memungkinkan mikroprosesor bekerja dengan kecepatan penuh semurah mungkin. Chip 500 MHz melewati 500 juta siklus dalam satu detik (satu siklus setiap dua nanodetik). Tanpa cache L1 dan L2, akses ke memori utama membutuhkan waktu 60 nanodetik, atau sekitar 30 siklus yang terbuang untuk mengakses memori.
Ketika Anda memikirkannya, sungguh luar biasa bahwa jumlah memori yang relatif kecil dapat memaksimalkan penggunaan jumlah memori yang jauh lebih besar. Pikirkan tentang cache L2 256-kilobyte yang menyimpan 64 megabyte RAM. Dalam kasus ini, 256.000 byte secara efisien menyimpan 64.000.000 byte. Mengapa itu berhasil?
Dalam ilmu komputer, kita memiliki konsep teoritis yang disebut lokalitas referensi. Artinya dalam program yang cukup besar, hanya sebagian kecil yang pernah digunakan dalam satu waktu.
Meski kelihatannya aneh, lokalitas referensi berfungsi untuk sebagian besar program. Bahkan jika executable berukuran 10 megabyte, hanya sedikit byte dari program itu yang digunakan pada satu waktu, dan tingkat pengulangannya sangat tinggi. Di bagian berikutnya, Anda akan mempelajari lebih lanjut tentang lokalitas referensi.
Lokalitas Referensi
Mari kita lihat pseudo-code berikut untuk mengetahui mengapa lokalitas referensi bekerja:
Output to screen « Enter a number between 1 and 100 »
Read input from user
Put value from user in variable X
Put value 100 in variable Y
Put value 1 in variable Z
Loop Y number of time
Divide Z by X
If the remainder of the division = 0
then output « Z is a multiple of X »
Add 1 to Z
Return to loop
End
Program kecil ini meminta pengguna untuk memasukkan angka antara 1 dan 100. Program ini membaca nilai yang dimasukkan oleh pengguna. Kemudian, program membagi setiap angka antara 1 dan 100 dengan angka yang dimasukkan oleh pengguna. Ia memeriksa apakah sisanya adalah 0 (pembagian modulo). Jika demikian, program mengeluarkan “Z adalah kelipatan X” (misalnya, 12 adalah kelipatan 6), untuk setiap angka antara 1 dan 100. Kemudian program berakhir.
Sekalipun Anda tidak tahu banyak tentang pemrograman komputer, mudah dipahami bahwa dalam 11 baris program ini, bagian loop (baris 7 hingga 9) dijalankan 100 kali. Semua baris lainnya hanya dijalankan sekali. Baris 7 hingga 9 akan berjalan lebih cepat secara signifikan karena cache.
Program ini sangat kecil dan dapat dengan mudah masuk seluruhnya dalam cache L1 yang terkecil, tetapi katakanlah program ini sangat besar. Hasilnya tetap sama. Saat Anda memprogram, banyak tindakan terjadi di dalam loop. Pengolah kata menghabiskan 95 persen waktu menunggu masukan Anda dan menampilkannya di layar. Bagian dari program pengolah kata ini ada di cache.
Rasio 95% -to-5% (kurang-lebih) inilah yang kami sebut sebagai lokalitas referensi, dan itulah mengapa cache bekerja dengan sangat efisien. Ini juga mengapa cache sekecil itu dapat meng-cache sistem memori sebesar itu secara efisien.
Anda dapat melihat mengapa tidak ada gunanya membangun komputer dengan memori tercepat di mana pun. Kami dapat memberikan 95 persen keefektifan ini dengan sebagian kecil dari biaya.