Apa yang membuat memori cache CPU jauh lebih cepat daripada memori utama? Saya dapat melihat beberapa manfaat dalam sistem cache berjenjang. Masuk akal bahwa cache yang lebih kecil lebih cepat untuk dicari. Tetapi harus ada lebih dari itu.
Apa yang membuat memori cache CPU jauh lebih cepat daripada memori utama? Saya dapat melihat beberapa manfaat dalam sistem cache berjenjang. Masuk akal bahwa cache yang lebih kecil lebih cepat untuk dicari. Tetapi harus ada lebih dari itu.
Jawaban:
Dalam kasus cache CPU, ini lebih cepat karena berada pada die yang sama dengan prosesor. Dengan kata lain, data yang diminta tidak harus disalurkan ke prosesor; sudah ada di sana.
Dalam kasus cache pada hard drive, itu lebih cepat karena berada dalam memori solid state, dan tidak masih pada piring-piring yang berputar.
Dalam kasus cache di situs web, ini lebih cepat karena data telah diambil dari database (yang, dalam beberapa kasus, dapat ditemukan di mana saja di dunia).
Jadi kebanyakan tentang lokalitas . Cache menghilangkan langkah transfer data .
Lokalitas adalah cara mewah untuk mengatakan data yang "berdekatan", baik dalam waktu maupun ruang. Caching dengan memori yang lebih kecil, lebih cepat (tetapi umumnya lebih mahal) berfungsi karena biasanya jumlah keseluruhan data yang relatif kecil adalah data yang paling sering diakses.
Bacaan Lanjutan
Cache (Komputasi) di Wikipedia
Lebih cepat karena keduanya lebih dekat dan karena itu SRAM bukan DRAM.
SRAM adalah dan dapat menjadi jauh lebih cepat daripada DRAM nilai-nilai disimpan secara statis (S dalam S RAM) sehingga mereka tidak harus di-refresh yang menghilangkan siklus. DRAM itu dinamis, seperti baterai kecil yang bisa diisi ulang, Anda harus mengisi ulang baterai secara teratur agar tidak habis dan menjadi nol. Ini mencuri waktu siklus selain bagaimana Anda harus mengakses bit, dll.
Berada di die yang sama dengan atau lebih dekat prosesor mengurangi perjalanan bolak-balik, baik L1 dan L2 lebih cepat dari DRAM dari perspektif akses.
SRAM lebih cepat diakses daripada DRAM yang membawa apel ke apel, dan cache biasanya pada chip atau lebih dekat atau pada bus lebih cepat daripada DRAM yang membuat waktu akses lebih cepat juga.
Satu hal yang harus disebutkan secara eksplisit adalah dampak dari kecepatan cahaya. Dalam video ini Grace Hopper menunjukkan sepotong kawat sepanjang satu kaki, yang merupakan jarak sejauh mana sinyal listrik dapat berjalan dalam satu nanodetik *. Jika CPU beroperasi pada 3GHz, maka itu menyiratkan jarak 4 "per siklus clock. Ini adalah batas fisik yang sulit pada kecepatan akses memori. Ini adalah bagian besar mengapa dekat dengan CPU (seperti cache L1), memungkinkan memori menjadi lebih cepat.
EDIT * sebenarnya seberapa jauh cahaya dapat berjalan dalam ruang hampa, jarak melalui tembaga / silikon lebih sedikit.
Jawaban lain sudah mencakup semua bit yang relevan: lokalitas (dan biaya transfer data terkait, lebar dan jam bus, dan sebagainya); kecepatan cahaya (sekali lagi, terkait dengan biaya transfer dan lebar bus dan throughput); teknologi memori yang berbeda (SRAM vs.DRAM). Semua ini terlihat dari sudut keseimbangan biaya / kinerja .
Satu bit yang ditinggalkan dan itu hanya disebutkan dalam komentar Darkhogg: cache yang lebih besar memiliki tingkat hit yang lebih baik tetapi latensi yang lebih lama. Beberapa tingkat cache tempat diperkenalkan juga untuk mengatasi tradeoff ini.
Ada pertanyaan dan jawaban yang sangat baik tentang hal ini pada SE elektronik
Dari jawaban, menurut saya titik yang akan disorot adalah: logika yang melakukan semua operasi yang diperlukan untuk pembacaan cache tidaklah sesederhana itu (terutama jika cache disetel asosiatif, seperti kebanyakan cache saat ini). Itu membutuhkan gerbang, dan logika. Jadi, bahkan jika kita mengesampingkan biaya dan mati ruang
Jika seseorang mencoba menerapkan cache L1 yang sangat besar, logika yang melakukan semua operasi yang diperlukan untuk membaca cache juga akan menjadi besar. Pada titik tertentu, penundaan propagasi melalui semua logika ini akan terlalu lama dan operasi yang telah mengambil hanya satu siklus clock sebelumnya harus dibagi menjadi beberapa siklus clock. Ini akan meningkatkan latensi.
Ada banyak poin bagus yang diangkat dalam jawaban lain, tetapi satu faktor tampaknya tidak ada: address latency decoding.
Berikut ini adalah penyederhanaan besar yang berlebihan tentang cara kerja decoding alamat memori, tetapi memberikan ide bagus mengapa chip DRAM besar umumnya cukup lambat.
Ketika prosesor perlu mengakses memori, prosesor mengirim perintah ke chip memori untuk memilih kata tertentu yang ingin digunakan. Perintah ini disebut Pilih Alamat Kolom (kami akan mengabaikan alamat baris untuk saat ini). Chip memori sekarang harus mengaktifkan kolom yang diminta, yang ia lakukan dengan mengirimkan alamat ke bawah gerbang logika untuk membuat satu tulisan yang menghubungkan ke semua sel dalam kolom. Bergantung pada bagaimana penerapannya, akan ada sejumlah keterlambatan untuk setiap bit alamat sampai hasilnya keluar ujung yang lain. Ini disebut CAS latency dari memori. Karena bit-bit tersebut harus diperiksa secara berurutan, proses ini membutuhkan waktu lebih lama daripada siklus prosesor (yang biasanya hanya memiliki beberapa transistor secara berurutan untuk menunggu). Ini juga membutuhkan waktu yang jauh lebih lama daripada siklus bus (yang biasanya beberapa kali lebih lambat dari siklus prosesor). Perintah CAS pada chip memori tipikal cenderung mengambil urutan 5ns (IIRC - sudah lama sejak saya melihat timing), yang lebih dari urutan besarnya lebih lambat dari, siklus prosesor.
Untungnya, kami memecah alamat menjadi tiga bagian (kolom, baris, dan bank) yang memungkinkan masing-masing bagian menjadi lebih kecil dan memproses bagian-bagian tersebut secara bersamaan, jika latensi akan lebih lama.
Cache prosesor, bagaimanapun, tidak memiliki masalah ini. Tidak hanya jauh lebih kecil, jadi terjemahan alamat adalah pekerjaan yang lebih mudah, sebenarnya tidak perlu menerjemahkan lebih dari sepotong kecil alamat (dalam beberapa varian, tidak ada sama sekali) karena itu asosiatif. Itu berarti bahwa di sepanjang setiap baris memori yang di-cache, ada sel-sel memori tambahan yang menyimpan bagian (atau semua) alamat. Jelas ini membuat cache lebih mahal, tetapi itu berarti bahwa semua sel dapat ditanyakan untuk melihat apakah mereka memiliki garis memori tertentu yang kita inginkan secara bersamaan, dan kemudian satu-satunya (semoga) yang memiliki data yang tepat akan membuangnya. ke bus yang menghubungkan seluruh memori ke inti prosesor utama. Ini terjadi dalam waktu kurang dari satu siklus, karena jauh lebih sederhana.
Salah satu filosofi yang saya pelajari adalah gerakan memperoleh-throughput-maksimum-dalam-perangkat keras ketika kita berbicara tentang memori berbasis cache, baik itu cache CPU, buffer cache atau cache memori untuk tujuan itu. Motif dasar tercapai ketika ada sedikit atau tidak ada gerakan perangkat keras untuk mengambil / membaca / menulis data dan operasi selesai lebih cepat.
Transfer data dari disk -> memori utama (RAM) (penyimpanan sementara) -> cache CPU (penyimpanan sementara yang lebih kecil di dekat CPU untuk data yang sering diakses) -> CPU (pemrosesan).
Cache CPU adalah ruang memori yang lebih kecil dan lebih cepat yang menyimpan salinan data dari lokasi memori utama yang terakhir digunakan.
Cache buffer adalah area memori utama yang menyimpan salinan data dari lokasi disk yang terakhir digunakan.
Tembolok peramban adalah direktori atau ruang serupa yang menyimpan salinan data dari situs web yang paling baru dikunjungi oleh pengguna.
Referensi: Bagaimana Memori Komputer Bekerja