RAM Cache
RAM Cache sangat sederhana sepotong bertubuh kecil dari RAM yang dapat
bekerja secepat prosesor. Jika Anda mampu membelinya, semua memori di
komputer anda bisa cache RAM - hanya maka kita tidak akan menyebutnya Cache
hanya RAM.
Dalam prakteknya hanya beberapa megabyte atau lebih dari RAM cache umumnya
digunakan dalam mesin khas. Apa penggunaan ini jumlah yang tidak memadai
kecil RAM bila dibandingkan dengan Gigabytes program pada umumnya membutuhkan?
Jawabannya adalah salah satu yang sangat aneh tapi pertama-tama kita perlu
melihat sedikit lebih dekat bagaimana RAM cache terhubung. Ini bukan hanya
seluas RAM terpisah dari RAM utama. Hal ini terhubung ke prosesor
sedemikian rupa bahwa prosesor selalu mencoba untuk menggunakan cache.
Ketika prosesor ingin membaca lokasi memori tertentu yang terlihat untuk
melihat apakah lokasi tersebut sudah dalam cache. Jika tidak maka itu
harus dibaca dari memori utama dan ada negara menunggu sedangkan data
diambil. Setelah data membacanya disimpan dalam cache dan permintaan
berikutnya untuk membaca lokasi tertentu tidak mengakibatkan membaca dari
memori utama dan sehingga setiap negara menunggu dihindari.
Pada titik ini Anda mungkin sedikit skeptis bahwa memori cache
berharga. Sebagai contoh, ketika Anda ingin isi lokasi memori untuk
pertama kalinya Anda masih harus menunggu untuk itu. Hanya bila Anda ingin
untuk kedua kalinya bahwa Anda dapat memiliki cepat. Hal ini tampaknya
seperti keuntungan berharga.
Apa mungkin tampak lebih buruk lagi adalah bahwa sistem cache yang
sederhana tidak melakukan Cache menulis. Artinya, ketika prosesor ingin
menulis ke memori mengabaikan cache dan memasang dengan negara
menunggu. Itu semua tampaknya seperti komplikasi dan biaya dengan hampir
tidak ada melunasi - tapi di sana Anda akan salah.
Alasan Anda akan salah adalah bahwa Anda tidak memperhitungkan cara program
berperilaku.
Hal pertama yang harus disadari adalah bahwa sebagian besar akses memori
yang membaca.
Mengapa?
Fakta sederhana adalah bahwa untuk setiap item data tertulis kepada banyak
memori dari lokasi penyimpanan program, yang prosesor mematuhi, dibaca.
Artinya, 99% dari semua akses memori sehingga prosesor dapat mengetahui apa
yang harus dilakukan berikutnya! Untuk alasan ini negara menunggu
dihasilkan ketika data harus ditulis ke memori memiliki dampak yang cukup kecil
pada kinerja.
Cache mendapat antara CPU dan RAM
Kejutan besar berikutnya adalah bahwa ketika lokasi memori telah membaca
kemungkinan besar bahwa itu akan dibaca lagi, dan lagi.
Setiap program memiliki apa yang dikenal sebagai "set
bekerja". Ini adalah lokasi memori yang kembali menggunakan waktu dan
waktu lagi. Jika Anda bisa membuat sebuah sistem memori yang bersinar
setiap kali lokasi memori diakses maka apa yang Anda akan melihat akan patch
cahaya yang bergerak di sekitar sebagai program berlari.
Akan ada lokasi memori yang akan diakses dari perangkat kerja tetapi dalam
utama ini adalah tempat tindakan. Alasan untuk perilaku ini adalah bahwa
program cenderung mengulangi perbuatan - mereka berjalan di loop - dan ini
berarti bahwa potongan yang sama dari memori dibaca berulang-ulang.
Untuk meringkas
- Sebagian
besar akses memori dibaca tidak menulis - kecepatan write memiliki sedikit
dampak pada kinerja.
- Program
cenderung menggunakan memori dalam kelompok kecil dari lokasi - set
bekerja.
Hits dan Misses
Ketika membaca dapat dipenuhi dari cache tidak ada negara menunggu
dihasilkan dan ini disebut "cache hit".
Ketika lokasi tidak dalam cache maka kita memiliki cache "rindu"
dan prosesor harus menunggu sementara data yang susah payah diambil dari RAM
dan disimpan dalam cache.
Sekarang kita sampai pada bagian yang benar-benar mengejutkan. Selama
cache lebih besar daripada working set dari program saat ini jumlah hits cache
yang dapat setinggi 99% atau lebih baik. Artinya, dampak dari memori utama
lambat dikurangi menjadi kurang dari 1% dan sehingga tidak benar-benar perlu
dicemaskan.
Pertama kali Anda mendengar cerita ini Anda cenderung untuk menerimanya
tapi kemudian Anda mulai berpikir - tidak ada itu tidak bisa begitu.
Sebagai contoh, bayangkan bahwa program Anda sedang memproses file gambar
1Mbyte sehingga setiap pixel diproses hanya sekali. Kemudian dalam
membaca, Anda akan menghasilkan satu juta Cache misses dan menulis itu mundur
juta lain. Itu setidaknya dua juta beberapa negara menunggu - pasti mesin
harus datang untuk berhenti!
Ini adalah kesalahpahaman dari apa yang 99% statistik kepada
Anda. Untuk setiap byte data yang dibaca dan ditulis 100 lokasi memori
lain akan dibaca sebagai bagian dari menjalankan program dan rata-rata 100 ini
akan menghasilkan hits cache yang. Ini bukan berarti bahwa tidak ada
banyak cache misses per detik, hanya saja ada juga hit cache yang lebih per
detik!
Tidak ada komentar:
Posting Komentar