Apakah mengatakan cache adalah jenis buffer khusus yang benar? Keduanya melakukan fungsi yang sama, tetapi apakah ada beberapa perbedaan mendasar yang saya lewatkan?
Apakah mengatakan cache adalah jenis buffer khusus yang benar? Keduanya melakukan fungsi yang sama, tetapi apakah ada beberapa perbedaan mendasar yang saya lewatkan?
Jawaban:
Dari artikel Wikipedia tentang buffer data :
buffer adalah wilayah penyimpanan memori fisik yang digunakan untuk menyimpan sementara data saat sedang dipindahkan dari satu tempat ke tempat lain
Sebuah penyangga ujung up bersepeda melalui dan memegang setiap bagian dari data yang ditransmisikan dari satu lokasi penyimpanan yang lain (seperti ketika menggunakan penyangga melingkar dalam pengolahan audio). Buffer memungkinkan hanya itu - "buffer" data sebelum dan sesudah posisi Anda saat ini dalam aliran data.
Memang, ada beberapa aspek umum dari buffer dan cache. Namun, cache dalam pengertian konvensional biasanya tidak menyimpan semua data ketika dipindahkan dari satu tempat ke tempat lain (yaitu cache CPU).
Tujuan dari cache adalah untuk menyimpan data secara transparan, sehingga hanya cukup data yang di-cache sehingga data yang tersisa dapat ditransfer tanpa penalti kinerja. Dalam konteks ini, cache hanya "mengambil di awal" sejumlah kecil data (tergantung pada kecepatan transfer, ukuran cache, dll ...).
Perbedaan utama adalah bahwa buffer pada akhirnya akan menyimpan semua data. Sebaliknya, cache mungkin menyimpan semua, sebagian, atau tidak ada data (tergantung pada desain). Namun, cache diakses seolah-olah Anda langsung mengakses data di tempat pertama - apa yang sebenarnya di-cache adalah transparan untuk "pengguna" cache.
Perbedaannya ada pada antarmuka . Saat Anda menggunakan cache untuk mengakses sumber data, Anda menggunakannya seolah-olah cache adalah sumber data - Anda dapat mengakses setiap bagian dari sumber data melalui cache, dan cache akan menentukan dari mana data berasal ( cache itu sendiri, atau sumbernya). Cache itu sendiri menentukan bagian mana dari data yang akan dimuat sebelumnya (biasanya hanya permulaan, tetapi kadang-kadang semua), sedangkan algoritma penggantian cache yang digunakan menentukan apa / kapan hal-hal dihapus dari cache. Contoh terbaik dari ini adalah sistem, selain dari cache CPU itu sendiri, adalah prefetcher / readahead. Keduanya memuat bagian data yang mereka pikir akan Anda gunakan paling banyak ke dalam memori, dan kembali ke hard drive jika ada sesuatu yang tidak di-cache.
Sebaliknya, buffer tidak dapat digunakan untuk memindahkan lokasi Anda secara instan dalam aliran data, kecuali jika bagian yang baru telah dipindahkan ke buffer. Untuk melakukannya akan membutuhkan buffer untuk pindah (mengingat lokasi baru melebihi panjang buffer), secara efektif mengharuskan Anda untuk "me-restart" buffer dari lokasi baru. Contoh terbaik dari ini adalah memindahkan slider di video Youtube.
Contoh bagus lain dari buffer adalah memutar audio di Winamp. Karena file audio perlu diterjemahkan oleh CPU, dibutuhkan beberapa saat antara saat lagu dibaca, hingga saat audio diproses, hingga ketika dikirim ke kartu suara Anda. Winamp akan buffer beberapa data audio, sehingga ada cukup data audio yang sudah diproses untuk menghindari "penguncian" (yaitu CPU selalu menyiapkan audio yang akan Anda dengar dalam beberapa ratus milidetik, tidak pernah real-time) ; apa yang Anda dengar berasal dari buffer, yang merupakan apa yang disiapkan CPU di masa lalu).
Akan lebih akurat untuk mengatakan bahwa cache adalah pola penggunaan tertentu dari buffer, yang menyiratkan beberapa penggunaan data yang sama. Sebagian besar penggunaan "buffer" menyiratkan bahwa data akan dikeringkan atau dibuang setelah penggunaan tunggal (meskipun ini belum tentu demikian), sedangkan "cache" menyiratkan bahwa data akan digunakan kembali beberapa kali. Caching juga sering menyiratkan bahwa data disimpan karena juga digunakan secara bersamaan, meskipun hal ini belum tentu demikian (seperti dalam pra-pengambilan dan sejenisnya), sedangkan buffering menyiratkan bahwa data sedang disimpan untuk digunakan nanti.
Namun tentu saja ada tumpang tindih besar dalam implementasi dan penggunaan.
Satu perbedaan penting antara cache dan buffer adalah:
Buffer adalah bagian dari memori utama. Mereka adalah struktur yang ada dan diakses dari memori primer (RAM).
Di sisi lain, cache adalah memori fisik yang terpisah dalam hierarki memori komputer.
Buffer juga kadang disebut sebagai - Buffer cache. Nama ini menekankan pada fakta bahwa penggunaan buffer mirip dengan cache, yaitu untuk menyimpan data. sedangkan perbedaannya terletak pada konteks penggunaannya.
Buffer digunakan untuk menyimpan data sementara, sementara data dipindahkan dari satu objek ke objek lainnya. EX: ketika video dipindahkan dari Internet ke PC kami untuk tampilan buffer digunakan untuk menyimpan frame video yang akan ditampilkan berikutnya. (INI MENINGKATKAN QoS, SEBAGAI VIDEO AKAN MENJALANKAN DENGAN BAIK SETELAH PROSES PENGHASIL YANG BERHASIL.) EX: contoh lain adalah skenario ketika kita menulis data ke file kita. Data yang baru ditulis tidak disalin ke memori sekunder secara instan. Perubahan yang dibuat disimpan dalam buffer dan kemudian sesuai dengan kebijakan yang dirancang, perubahan tersebut dipantulkan kembali ke file di memori sekunder (hard disk).
Cache di sisi lain digunakan antara memori utama dan prosesor, untuk menjembatani kesenjangan antara kecepatan eksekusi RAM dan prosesor. Juga data yang paling sering diakses disimpan dalam cache untuk mengurangi akses ke RAM.
Hal yang umum: keduanya adalah komponen penyimpanan data perantara (perangkat lunak atau perangkat keras) antara komputasi dan penyimpanan "utama".
Bagi saya perbedaannya adalah sebagai berikut:
Penyangga:
Cache: