Mengapa memori cache CPU begitu cepat?


58

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.


2
Apa yang Anda maksud dengan memori utama ?
marcocs

1
@marcocs diedit untuk kejelasan. Saya mengacu pada memori cache CPU dan memori sistem utama, yaitu dimm yang dapat dilepas pada sebagian besar motherboard.
ConditionRacer


2
@ratchetfreak Uh ... OP cukup jelas meminta penyebab langsung, bukan penyebab akhir.
Kyle Strand

1
Wow saya tidak berpikir saya akan pernah menggunakan gelar teknik komputer saya. Jawaban yang diterima sebenarnya bukan jawaban. Itu karena cache CPU beroperasi pada laju clock yang jauh lebih tinggi (laju clock CPU, sekitar 4GHz), sementara memori utama beroperasi pada laju clock bus (sekitar 1600MHz). Tidak hanya itu, tetapi cache CPU dapat membaca dalam siklus 4 jam, tetapi sistem RAM mungkin mengambil 100 siklus jam sistem. Juga, RAM sistem memiliki pertentangan dengan periferal lain seperti disk atau jaringan, sementara cache CPU didedikasikan. Semakin panjang kabel, semakin lambat clock rate-nya dapat beroperasi. tinyurl.com/zkdsstd
Chloe

Jawaban:


115

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


29
Saya pikir ini adalah jawaban yang bagus. Namun, mungkin perlu ditambahkan bahwa ada juga hierarki biaya untuk cache: penyimpanan jaringan lebih murah daripada hard drive lokal, yang lebih murah daripada RAM, yang jauh lebih murah daripada cache di-CPU. Jika bukan karena ini, kami hanya akan membuat CPU dengan 120GB memori on-chip, dan selesai dengan itu.
Charles E. Grant

1
@ConditionRacer: Alasan yang sama. L1 lebih cepat, tetapi lebih mahal, sehingga mereka memberi Anda sedikit L1 yang sangat mahal, dan lebih banyak yang lebih murah, tetapi L2 lebih lambat. Lihat juga stackoverflow.com/questions/3699582/…
Robert Harvey

9
"Mengapa L1 lebih cepat dari L2" - pertanyaannya menjadi off topic untuk Programmers.SE, dan harus ditanyakan pada Electronics.SE
mattnz

5
@ConditionRacer IIRC, itu ada hubungannya dengan teknologi yang digunakan untuk mengimplementasikan memori. Saya pikir L2 adalah DRAM on-chip, sedangkan L1 adalah SRAM atau sesuatu seperti itu; jauh lebih mahal, tetapi jauh lebih cepat. Sudah lebih dari satu dekade sejak saya bekerja dalam desain CPU ...
Donal Fellows

4
@ CharlesE.Grant: walaupun hierarki biaya adalah contoh yang baik, ada alasan lain mengapa kita tidak memiliki cache on-chip 120 GB: menangani memori yang lebih besar memerlukan alamat yang lebih besar, sehingga instruksi yang lebih besar atau lebih banyak siklus CPU. Jadi untuk menjadi yang tercepat, jumlah register harus tetap relatif kecil. Tentu saja, seseorang dapat memiliki memori on-chip selain register, tetapi tingkat tercepat harus tetap kecil, jika tidak maka tidak akan secepat itu lagi.
vsz

33

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.


1
SRAM juga lebih haus daya per bit, jadi Anda harus menambahkan radiator ke dalamnya, dan apa pun yang bertenaga baterai akan menderita.
9000

1
Belum lagi fakta bahwa membuat SRAM lebih besar membuatnya WAY lebih lambat.
Darkhogg

setuju, lebih banyak kekuatan, dan lebih lambat dibandingkan dengan SRAM lainnya. Saya pikir itu adalah 4 transistor per bit untuk SRAM dan 1 per bit untuk dram. dram bergantung pada kapasitansi dalam janin, di mana sram bergantung pada logika kuno yang baik. jadi Anda harus memberi daya pada semua transistor itu sepanjang waktu dan tidak hanya memompa muatan secara berkala.
old_timer

4
SRAM dalam cache umumnya adalah 6T, bukan 4T. Juga, SRAM (tentu varian 6T) lebih hemat energi. Daya imbang nyata dalam DRAM adalah siklus penyegaran, dan SRAM tidak membutuhkannya. Transistor SRAM mendapatkan daya saat beralih, kapasitor DRAM bocor sepanjang waktu. Jika Anda mengganti tutup DRAM yang bocor, Anda berakhir dengan EEPROM tetapi itu tidak cepat: jika sulit untuk mengeluarkan biaya, itu juga sulit untuk mengeluarkannya dengan cara normal.
MSalters

@dwelch CMOS FETs tidak menguras daya jika mereka dalam keadaan terbuka atau tertutup, sehingga argumen tentang konsumsi daya tidak valid. Terlebih lagi, ini adalah peralihan logika CMOS, yang membuat CPU menguras sebagian besar daya mereka - puncak saat ini dalam kondisi peralihan (non-1 dan non-0), sehingga situasinya terbalik dengan apa yang Anda katakan :)
Ruslan

21

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.


2
Batas keras untuk tembaga. Ini adalah poin yang baik, saya tidak mempertimbangkan seberapa cepat prosesor modern.
ConditionRacer

@ConditionRacer Saya baru saja menambahkan koreksi, 11,8 inci ringan dalam ruang hampa.
Matthew Finlay

2
Anda perlu membagi dua nomor itu karena Anda perlu pulang pergi untuk mengambil memori. Jadi itu hanya 5cm bukan 10cm per siklus latensi dalam ruang hampa .
CodesInChaos

2
Kecepatan cahaya adalah mengapa jam bus memori utama berhenti semakin cepat beberapa tahun yang lalu (2000an?) Ini bukan efek langsung - ini berkaitan dengan sinyal logika CMOS yang tidak menjadi gelombang persegi sempurna lagi pada frekuensi bus - tetapi c menunjukkan menonjol dalam matematika.
zwol

5

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.


5

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.


-2

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


"Filosofi sistem operasi adalah ..." - apakah ini hanya pendapat Anda atau Anda dapat mendukungnya?
nyamuk

Diajar tentang ini saat belajar Unix oleh Maurice Bach. Sayangnya tidak ada dokumentasi yang mendukung. Diedit ..
roshan4074

5
howstuffworks terkenal tidak dapat diandalkan untuk mendapatkan informasi teknis yang andal. Mereka bagus untuk penyederhanaan kotor yang bisa dipahami oleh rata-rata Joe dan Jane, tapi hanya itu.
jwenting
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.