Mengapa L1 cache lebih cepat dari L2 cache?

14

Saya mencoba memahami mengapa memori cache CPU lebih cepat dari yang lain. Ketika membandingkan memori cache dengan sesuatu seperti memori utama, ada perbedaan dalam jenis memori (SRAM vs DRAM), dan masalah lokalitas (on-chip vs harus melintasi bus memori) yang dapat mempengaruhi kecepatan akses. Tapi L1 dan L2 umumnya pada chip yang sama, atau setidaknya pada die yang sama, dan saya pikir mereka adalah tipe memori yang sama. Jadi mengapa L1 lebih cepat?

ConditionRacer
sumber
9
Karena dibangun seperti itu.
Ignacio Vazquez-Abrams
Ada beberapa cara untuk membangun jenis RAM yang sama. Beberapa cara menghasilkan RAM yang lebih cepat dari RAM yang dibangun dengan cara lain.
Ignacio Vazquez-Abrams
Alasan yang sama mengapa RAM DDR Anda lebih cepat dari HDD Anda ...
hassan789
1
terkait: jawaban saya dan pertanyaan SO tentang ukuran cache juga menjelaskan beberapa alasan tradeoff kecepatan / konsumsi daya karena memiliki cache multi-level. Pada dasarnya, membuat cache super cepat akan menghabiskan banyak daya dan area mati untuk melakukan lebih banyak hal secara paralel, dan tidak kompatibel dengan ukuran / asosiasi besar yang Anda inginkan dalam cache level terakhir.
Peter Cordes

Jawaban:

24

Tidak, mereka bukan jenis RAM yang sama, meskipun mereka pada chip yang sama yang menggunakan proses pembuatan yang sama.

Dari semua cache, cache L1 perlu memiliki waktu akses tercepat (latensi terendah), versus berapa banyak kapasitas yang diperlukan untuk menyediakan tingkat "hit" yang memadai. Oleh karena itu, ia dibangun menggunakan transistor yang lebih besar dan jalur logam yang lebih luas, menukar ruang dan kekuatan untuk kecepatan. Tembolok level yang lebih tinggi harus memiliki kapasitas yang lebih tinggi, tetapi mampu menjadi lebih lambat, sehingga mereka menggunakan transistor yang lebih kecil yang dikemas lebih rapat.

Dave Tweed
sumber
3
Ini yang saya cari, terima kasih. Apakah Anda tahu sumber yang bagus di mana saya bisa membaca lebih lanjut tentang perbedaannya?
ConditionRacer
Tidak, tidak begitu saja. Detail dari pengorbanan ruang / daya / waktu ini, serta pilihan mengenai kapasitas dan arsitektur cache, sangat terkait erat dengan perincian kepemilikan proses pabrikan, sehingga sangat sedikit (jika ada) yang dipublikasikan tentang hal itu. Saya hanya bisa berbicara secara umum.
Dave Tweed
10
L1 juga lebih kecil, yang berarti perambatan sinyal membutuhkan lebih sedikit siklus clock: seringkali ukuran L1 ditentukan sebagai memori terbesar yang dapat diakses dalam 1 (atau 2) jam.
Brian Drummond
6
Selain poin Brian Drummond, L1 juga biasanya menggunakan akses paralel data-tag. L2 biasanya mengakses tag terlebih dahulu (menentukan ke arah mana jika ada klik) kemudian data, meningkatkan latensi tetapi menghemat energi (signifikan mengingat ukuran yang lebih besar, asosiasi yang lebih tinggi, dan tingkat kesalahan yang lebih tinggi). (Akses L2 juga biasanya dimulai setelah miss L1 dikonfirmasi yang meningkatkan latensi efektif.)
Paul A. Clayton
@BrianDrummond - lebih kecil baik dari segi kawat-beban, dan kedalaman gerbang (saya tidak berpikir itu jelas dari komentar Anda).
Sean Houlihane
5

L1 biasanya digunakan sebagai penyimpanan untuk instruksi yang diterjemahkan, sedangkan L2 adalah cache umum untuk satu inti. Semakin rendah cache, semakin kecil ukurannya dan semakin cepat biasanya. Sebagai pedoman praktis untuk prosesor PC:

L1 Cache: akses siklus 2-3 jam

L2 Cache: ~ 10 siklus akses jam

L3 Cache: ~ akses siklus 20-30 jam

Desain cache L1 harus memaksimalkan hit rate (probabilitas alamat instruksi yang diinginkan atau alamat data berada di cache) sambil menjaga latensi cache serendah mungkin. Intel menggunakan cache L1 dengan latensi 3 siklus. Cache L2 dibagi antara satu atau lebih cache L1 dan sering jauh lebih besar. Sedangkan cache L1 dirancang untuk memaksimalkan hit rate, cache L2 dirancang untuk meminimalkan miss penalti (penundaan yang terjadi ketika miss L1 terjadi). Untuk chip yang memiliki cache L3, tujuannya khusus untuk desain chip. Untuk Intel, cache L3 pertama kali muncul di sistem multi-prosesor 4 arah (prosesor Pentium 4 Xeon MP) pada tahun 2002. L3 cache dalam hal ini sangat mengurangi keterlambatan dalam lingkungan multi-threaded dan mengambil beban dari FSB. Pada saat itu,

Kutipan yang bersumber di sini dari respons "Pinhedd".

EasyOhm
sumber
1
L1 digunakan untuk data juga secara umum tetapi memang benar bahwa sering data L1 dan instruksi L1 terpisah sementara L2 dibagi: programmers.stackexchange.com/questions/44731/… (salah satu alasan mengapa dapat dibagikan adalah bahwa ia memiliki lebih banyak cara ).
Guy Sirton
1
Sudah umum bagi prosesor untuk memiliki instruksi dan cache data yang terpisah di tingkat L1. Memang benar untuk chip x86 dan SPARC yang lebih baru. Dan beberapa cache instruksi L1 tidak menyimpan instruksi yang diterjemahkan. Pentium 4 menyimpan instruksi yang diterjemahkan, tetapi kemudian Intel kembali ke cache I-reguler, kemudian baru-baru ini menambahkan cache instruksi yang didekodekan kembali ke chip mereka.
Craig S. Anderson
3

Ada beberapa alasan mengapa kecepatan berbanding terbalik dengan ukuran. Yang pertama terlintas dalam pikiran adalah dominasi fisik konduktor, di mana perambatan sinyal saya terbatas pada beberapa faktor dari kecepatan cahaya. Operasi mungkin memakan waktu selama itu akan membutuhkan sinyal listrik untuk menempuh jarak terpanjang di dalam ubin memori dan kembali. Alasan terkait lainnya adalah pemisahan domain jam. Setiap CPU menjalankan clock generatornya sendiri, yang memungkinkan CPU untuk berjalan pada jam multi-GHz. Cache Level-1 berjalan pada dan disinkronkan dengan jam CPU, yang merupakan yang tercepat di sistem. Cache Level-2 di sisi lain harus melayani banyak CPU, dan berjalan di domain jam yang berbeda (lebih lambat). Tidak hanya clock L2 lebih lambat (ubin lebih besar) tetapi untuk melintasi batas domain jam menambahkan penundaan lain. Maka tentu saja ada masalah fan-out (sudah disebutkan).

LR24
sumber
1

Terlepas dari karakteristik kinerja yang melekat, lokalitas juga memiliki peran (L1 lebih dekat ke CPU). Menurut Apa yang harus diketahui setiap programmer tentang memori :

Sangat menarik untuk dicatat bahwa untuk cache L2 on-die, sebagian besar (mungkin bahkan mayoritas) dari waktu akses disebabkan oleh penundaan kawat. Ini adalah batasan fisik yang hanya bisa bertambah buruk dengan meningkatnya ukuran cache. Hanya proses penyusutan (misalnya, mulai dari 60nm untuk Merom ke 45nm untuk Penryn di jajaran Intel) yang dapat meningkatkan angka-angka itu.

assylias
sumber
Saya pikir ini berlaku sebagian besar di mana cache besar - Ini tidak berlaku untuk semua jenis prosesor (meskipun penundaan kawat signifikan).
Sean Houlihane