Mengapa ukuran L1 cache tidak meningkat sangat banyak selama 20 tahun terakhir?

35

The Intel i486 memiliki 8 KB cache L1. The Intel Nehalem memiliki 32 KB L1 cache instruksi dan 32 KB L1 cache data per core.

Jumlah cache L1 belum meningkat di hampir tingkat laju kenaikan clockrate telah meningkat.

Kenapa tidak?

sebelas81
sumber
Anda membandingkan apel dengan jeruk. Kecepatan clock telah meningkat, tetapi tidak ada korelasi dengan kebutuhan untuk lebih banyak cache. Hanya karena Anda dapat melakukan sesuatu lebih cepat, bukan berarti Anda mendapat manfaat dari ember yang lebih besar.
Keltari
Cache berlebih dan overhead manajemen dapat memperlambat sistem. Mereka telah menemukan sweet spot dan akan tetap ada.
Fiasco Labs

Jawaban:

17

30K teks Wikipedia tidak membantu seperti penjelasan mengapa cache terlalu besar kurang optimal. Ketika cache menjadi terlalu besar, latensi untuk menemukan item di dalam cache (memasukkan faktor dalam cache yang hilang) mulai mendekati latensi mencari item di memori utama. Saya tidak tahu proporsi yang dirancang oleh perancang CPU, tapi saya pikir itu adalah sesuatu yang analog dengan pedoman 80-20: Anda ingin menemukan data Anda yang paling umum di cache 80% dari waktu, dan 20 lainnya % waktu Anda harus pergi ke memori utama untuk menemukannya. (atau apa pun proporsi yang dimaksudkan oleh perancang CPU).)

EDIT: Saya yakin ini tidak mendekati 80% / 20%, jadi gantikan X dan 1-X. :)

JMD
sumber
6
"Ketika cache menjadi terlalu besar, latensi untuk menemukan item dalam cache (memperhitungkan faktor dalam cache yang hilang) mulai mendekati latensi mencari item di memori utama." Apa kau yakin tentang ini? Misalnya menggandakan jumlah RAM yang terpasang tentu tidak akan meningkatkan latensi, mengapa ini berlaku untuk cache? Dan juga, mengapa cache L2 tumbuh lebih besar dengan CPU baru, jika ini masalah? Saya bukan ahli dalam hal ini, saya benar-benar ingin tahu :)
sYnfo
2
Saya telah menyiapkan deskripsi besar caching panjang dalam perangkat lunak, dan mengukur kapan cache Anda sudah terlalu besar dan harus dibuang / dibangun kembali, tetapi kemudian saya memutuskan mungkin lebih baik untuk mengakui bahwa saya bukan perancang perangkat keras. :) Dalam kedua kasus, saya menduga jawabannya dapat disimpulkan oleh hukum pengembalian yang semakin berkurang. Yaitu lebih banyak tidak selalu lebih baik.
JMD
3
Dari sejarah panjang saya mengutak-atik perangkat keras pada level rendah, tetapi tidak benar-benar menjadi seorang desainer, saya akan mengatakan bahwa latensi tampaknya terkait dengan berapa banyak cara cache itu asosiatif, bukan ukurannya. Dugaan saya adalah bahwa transistor tambahan yang akan masuk ke cache telah terbukti lebih efektif di tempat lain untuk kinerja keseluruhan.
Brian Knoblauch
1
@ JMD saya akan tertarik dengan deskripsi itu;) Meskipun komentar mungkin bukan tempat terbaik untuk ini, benar. @ Brian Jadi, jika saya memahaminya dengan benar, mereka memutuskan untuk menempatkan lebih sedikit transistor dalam cache L1 dan pada saat yang sama menempatkan lebih banyak di L2, yang secara signifikan lebih lambat? Tolong jangan tersinggung, saya hanya ingin tahu :)
349 sYnfo
10

Salah satu faktor adalah bahwa L1 mengambil mulai sebelum terjemahan TLB selesai sehingga mengurangi latensi. Dengan cache yang cukup kecil dan cara yang cukup tinggi bit indeks untuk cache akan sama antara alamat virtual dan fisik. Ini mungkin mengurangi biaya mempertahankan koherensi memori dengan cache yang diindeks secara fisik dan ditandai secara fisik.

AJW
sumber
1
jawaban paling menarik :)
GameDeveloper
1
Saya percaya ini alasannya, tetapi izinkan saya memberikan nomornya. Ukuran halaman pada arsitektur x86 adalah 4096 byte. Cache ingin memilih ember cache tempat mencari entri baris cache (64 byte) sebelum terjemahan halaman selesai. Akan mahal jika harus memutuskan antara terlalu banyak entri dalam satu bucket, jadi setiap bucket hanya memiliki 8 entri di dalamnya. Akibatnya, selama sepuluh tahun terakhir, semua CPU x86 yang mahal memiliki persis 32768 byte (512 baris cache) dalam cache data L1 mereka.
b_jonas
Karena ini sangat sulit untuk ditingkatkan, cpus menambahkan cache tingkat menengah, jadi kami memiliki cache L2 dan L3 yang terpisah sekarang. Juga, cache kode L1 dan cache data L1 terpisah, karena CPU tahu apakah itu mengakses kode atau data.
b_jonas
8

Ukuran cache dipengaruhi oleh banyak faktor:

  1. Kecepatan sinyal listrik (seharusnya jika bukan kecepatan cahaya, sesuatu yang besarnya sama):

    • 300 meter dalam satu mikrodetik.
    • 30 sentimeter dalam satu nanodetik.
  2. Biaya ekonomi (sirkuit pada level cache yang berbeda mungkin berbeda dan ukuran cache tertentu mungkin tidak layak)

    • Menggandakan ukuran cache tidak menggandakan kinerja (bahkan jika fisika memungkinkan ukuran itu bekerja) untuk penggandaan ukuran kecil memberikan lebih dari kinerja ganda, untuk ukuran besar menggandakan ukuran cache hampir tidak memberikan kinerja tambahan.
    • Di wikipedia Anda dapat menemukan grafik yang menunjukkan misalnya bagaimana tidak layaknya membuat cache lebih besar dari 1MB (sebenarnya ada cache yang lebih besar tetapi Anda harus tetap menghitung bahwa itu adalah inti multiprosesor.)
    • Untuk cache L1 harus ada beberapa grafik lain (yang vendor tidak tunjukkan) yang menjadikan 64 Kb nyaman sebagai ukuran.

Jika ukuran cache L1 tidak berubah setelah 64kb itu karena itu tidak layak lagi. Perhatikan juga bahwa sekarang ada "budaya" yang lebih besar tentang cache dan banyak programmer menulis kode "cache-friendly" dan / atau menggunakan instruksi prefetech untuk mengurangi latensi.

Saya pernah mencoba membuat program sederhana yang mengakses lokasi acak dalam array (dari beberapa MegaBytes): program itu hampir membekukan komputer karena untuk setiap pembacaan acak seluruh halaman dipindahkan dari RAM ke cache dan karena itu dilakukan sangat sering sesederhana itu Program ini menghabiskan semua bandwidth dengan menyisakan sangat sedikit sumber daya untuk OS.

GameDeveloper
sumber
6

Saya percaya itu bisa disimpulkan hanya dengan menyatakan bahwa semakin besar cache, semakin lambat aksesnya. Jadi cache yang lebih besar tidak membantu karena cache dirancang untuk mengurangi komunikasi bus yang lambat ke RAM.

Karena kecepatan prosesor telah meningkat dengan cepat, cache yang berukuran sama harus melakukan lebih cepat dan lebih cepat untuk mengikutinya. Jadi cache mungkin jauh lebih baik (dalam hal kecepatan) tetapi tidak dalam hal penyimpanan.

(Saya seorang pria peranti lunak jadi mudah-mudahan ini tidak salah)

Andrew Flanagan
sumber
3

Dari L1 cache :

Cache Level 1, atau cache utama, ada di CPU dan digunakan untuk penyimpanan sementara instruksi dan data yang disusun dalam blok 32 byte. Cache primer adalah bentuk penyimpanan tercepat. Karena terintegrasi ke dalam chip dengan antarmuka tunggu-nol (penundaan) ke unit eksekusi prosesor, ukurannya terbatas .

SRAM menggunakan dua transistor per bit dan dapat menyimpan data tanpa bantuan eksternal, selama daya dipasok ke sirkuit. Ini kontras dengan RAM dinamis (DRAM), yang harus di-refresh berkali-kali per detik untuk menyimpan konten datanya.

Prosesor P55 MMX Intel, yang diluncurkan pada awal 1997, patut dicatat karena peningkatan ukuran cache Level 1-nya menjadi 32KB. Chip AMD K6 dan Cyrix M2 yang diluncurkan kemudian pada tahun itu meningkatkan taruhannya dengan menyediakan cache Level 1 64KB. 64Kb tetap ukuran cache L1 standar, meskipun berbagai prosesor multi-core dapat menggunakannya secara berbeda.

EDIT: Harap dicatat bahwa jawaban ini dari 2009 dan CPU telah berkembang pesat dalam 10 tahun terakhir. Jika Anda telah tiba di pos ini, jangan menganggap semua jawaban kami di sini terlalu serius.

harrymc
sumber
Sel SRAM tipikal terdiri dari enam MOSFET. Setiap bit dalam SRAM disimpan pada empat transistor (M1, M2, M3, M4) yang membentuk dua inverter bersilangan. Sumber Sumber Kedua
lukecampbell
Ini hanya deskripsi situasi, dan tidak menjelaskan apa pun tentang alasannya.
Eonil
@Eonil - Kami tidak dapat memberikan jawaban "mengapa" jika kami mau. Namun, berkurangnya pengembalian kinerja adalah penjelasan yang masuk akal. Ketika pertanyaan itu ditulis hampir satu dekade yang lalu, itu jauh lebih mahal, untuk meningkatkan ukuran tanpa menyertakan hit kinerja. Jawaban ini paling tidak berusaha menjawab pertanyaan yang dimaksud yang ditanyakan.
Ramhound
-4

Sebenarnya ukuran cache L1 adalah hambatan terbesar untuk kecepatan di komputer modern. Ukuran cache L1 yang sangat kecil mungkin adalah sweetspot untuk harga, tetapi bukan kinerja. L1 cache dapat diakses pada frekuensi GHz, sama seperti operasi prosesor, tidak seperti RAM yang mengakses 400x lebih lambat. Itu mahal dan sulit untuk diterapkan dalam desain 2 dimensi saat ini, namun, secara teknis bisa dilakukan, dan perusahaan pertama yang berhasil, akan memiliki komputer 100 kali lebih cepat dan masih berjalan keren, sesuatu yang akan menghasilkan inovasi besar di banyak bidang dan hanya accessbile saat ini melalui mahal dan sulit untuk memprogram konfigurasi ASIC / FPGA. Beberapa dari masalah ini berkaitan dengan masalah hak milik / IP dan keserakahan perusahaan yang sekarang berpuluh-puluh tahun, di mana kader insinyur yang lemah dan tidak efektif adalah satu-satunya yang memiliki akses ke pekerjaan dalam, dan yang sebagian besar diberi perintah berbaris untuk memeras omong kosong proteksionis yang hemat biaya yang tidak jelas. Penelitian yang terlalu diprivatisasi selalu mengarah pada stagnasi atau pelambatan teknologi (seperti yang telah kita lihat di ruang angkasa dan mobil oleh produsen besar dan segera menjadi farmasi). Sumber terbuka dan peraturan paten dan perdagangan yang lebih masuk akal dan menguntungkan penemu dan publik (daripada bos perusahaan dan pemegang saham) akan banyak membantu di sini. Seharusnya tidak ada otak untuk pengembangan untuk membuat cache L1 jauh lebih besar dan ini harus dan bisa dikembangkan puluhan tahun yang lalu. Kita akan jauh lebih maju dalam komputer dan banyak bidang ilmiah menggunakannya jika kita punya. dan yang sebagian besar diberi perintah berbaris untuk memeras omong kosong proteksionis yang hemat biaya. Penelitian yang terlalu diprivatisasi selalu mengarah pada stagnasi atau pelambatan teknologi (seperti yang telah kita lihat di ruang angkasa dan mobil oleh produsen besar dan segera menjadi farmasi). Sumber terbuka dan peraturan paten dan perdagangan yang lebih masuk akal dan menguntungkan penemu dan publik (daripada bos perusahaan dan pemegang saham) akan banyak membantu di sini. Seharusnya tidak ada otak untuk pengembangan untuk membuat cache L1 jauh lebih besar dan ini harus dan bisa dikembangkan puluhan tahun yang lalu. Kita akan jauh lebih maju dalam komputer dan banyak bidang ilmiah menggunakannya jika kita punya. dan yang sebagian besar diberi perintah berbaris untuk memeras omong kosong proteksionis yang hemat biaya. Penelitian yang terlalu diprivatisasi selalu mengarah pada stagnasi atau pelambatan teknologi (seperti yang telah kita lihat di ruang angkasa dan mobil oleh produsen besar dan segera menjadi farmasi). Sumber terbuka dan peraturan paten dan perdagangan yang lebih masuk akal dan menguntungkan penemu dan publik (daripada bos perusahaan dan pemegang saham) akan banyak membantu di sini. Seharusnya tidak ada otak untuk pengembangan untuk membuat cache L1 jauh lebih besar dan ini harus dan bisa dikembangkan puluhan tahun yang lalu. Kita akan jauh lebih maju dalam komputer dan banyak bidang ilmiah menggunakannya jika kita punya. Penelitian yang terlalu diprivatisasi selalu mengarah pada stagnasi atau pelambatan teknologi (seperti yang telah kita lihat di ruang angkasa dan mobil oleh produsen besar dan segera menjadi farmasi). Sumber terbuka dan peraturan paten dan perdagangan yang lebih masuk akal dan menguntungkan penemu dan publik (daripada bos perusahaan dan pemegang saham) akan banyak membantu di sini. Seharusnya tidak ada otak untuk pengembangan untuk membuat cache L1 jauh lebih besar dan ini harus dan bisa dikembangkan puluhan tahun yang lalu. Kita akan jauh lebih maju dalam komputer dan banyak bidang ilmiah menggunakannya jika kita punya. Penelitian yang terlalu diprivatisasi selalu mengarah pada stagnasi atau pelambatan teknologi (seperti yang telah kita lihat di ruang angkasa dan mobil oleh produsen besar dan segera menjadi farmasi). Sumber terbuka dan peraturan paten dan perdagangan yang lebih masuk akal dan menguntungkan penemu dan publik (daripada bos perusahaan dan pemegang saham) akan banyak membantu di sini. Seharusnya tidak ada otak untuk pengembangan untuk membuat cache L1 jauh lebih besar dan ini harus dan bisa dikembangkan puluhan tahun yang lalu. Kita akan jauh lebih maju dalam komputer dan banyak bidang ilmiah menggunakannya jika kita punya. Seharusnya tidak ada otak untuk pengembangan untuk membuat cache L1 jauh lebih besar dan ini harus dan bisa dikembangkan puluhan tahun yang lalu. Kita akan jauh lebih maju dalam komputer dan banyak bidang ilmiah menggunakannya jika kita punya. Seharusnya tidak ada otak untuk pengembangan untuk membuat cache L1 jauh lebih besar dan ini harus dan bisa dikembangkan puluhan tahun yang lalu. Kita akan jauh lebih maju dalam komputer dan banyak bidang ilmiah menggunakannya jika kita punya.

Zack Barkley
sumber