Apakah ada korespondensi antara ukuran cache dan latensi akses?

9

Apakah ada korespondensi antara ukuran cache dan latensi akses? Semua hal lain dianggap sama, apakah cache yang lebih besar beroperasi lebih lambat? Jika demikian, mengapa? Seberapa lambat?

ivanmp
sumber
1
Jika Anda tertarik untuk mengeksplorasi beberapa trade-off dalam desain cache, HP mengembangkan alat CACTI yang memberikan perkiraan untuk latensi dan penggunaan daya berdasarkan karakteristik desain. Sebuah antarmuka web untuk versi 5.3 juga tersedia .
Paul A. Clayton

Jawaban:

5

Item di tangan Anda lebih cepat diakses daripada item di saku Anda, yang lebih cepat diakses daripada item di lemari Anda, yang lebih cepat diakses daripada item di Digikey. Setiap jenis penyimpanan berturut-turut yang saya daftarkan lebih besar tetapi lebih lambat dari sebelumnya.

Jadi, mari kita dapatkan yang terbaik dari kedua dunia, mari jadikan tangan Anda sebesar gudang Digikey! Tidak, itu tidak berhasil, karena sekarang mereka tidak lagi benar-benar menyerahkannya. Mereka adalah bola meriam yang membebani Anda.

Alasan penyimpanan yang lebih besar lebih lambat untuk diakses adalah jarak . Penyimpanan yang lebih besar jauh dari Anda rata-rata. Ini berlaku untuk item fisik, dan untuk RAM.

Memori komputer membutuhkan ruang fisik. Karena alasan itu, ingatan yang lebih besar secara fisik lebih besar, dan beberapa lokasi dalam ingatan itu akan menjadi lebih jauh secara fisik. Hal-hal yang jauh memerlukan waktu lebih lama untuk diakses, karena batas kecepatan apa pun yang ada. Dalam hal kantong Anda, dan Digikey, batas kecepatan adalah kecepatan lengan Anda, dan batas kecepatan jalan raya.

Dalam kasus RAM, batas kecepatan adalah kecepatan rambat sinyal listrik, keterlambatan rambatan gerbang dan driver, dan penggunaan umum jam sinkron. Sekalipun uang bukan masalah, dan Anda dapat membeli sebanyak yang Anda inginkan dari teknologi RAM tercepat yang ada saat ini, Anda tidak akan dapat memperoleh manfaat dari semua itu. Letakkan lembar L1 cache berukuran A4 jika Anda mau, dan tempatkan CPU Anda tepat di tengah. Ketika CPU ingin mengakses beberapa memori tepat di sudut memori, itu benar-benar akan memerlukan nanodetik untuk permintaan untuk sampai ke sana, dan nanodetik untuk itu untuk kembali. Dan itu belum termasuk semua penundaan propagasi dan gerbang serta driver. Itu akan sangat memperlambat CPU 3GHz Anda.

Karena logika sinkron jauh lebih mudah dirancang daripada logika asinkron, satu 'blok' RAM akan di-clock dengan jam yang sama. Jika ingin menjadikan seluruh memori sebagai cache L1, maka Anda harus mencatat seluruh lot dengan jam lambat untuk mengatasi waktu terburuk dari lokasi yang paling jauh dalam memori. Ini berarti bahwa lokasi memori yang jauh sekarang menahan yang lokal, yang bisa di-clock lebih cepat. Jadi, hal terbaik yang harus dilakukan adalah membuat zona memori. Bagian cache terdekat dan terkecil akan menggunakan jam tercepat. Bagian terdekat dan terkecil berikutnya akan menggunakan jam yang sedikit lebih lambat, dll.

Dan sekarang Anda memiliki cache L1 & L2 dan RAM.

Yang membawa kita ke alasan selanjutnya, konsumsi daya.

Cache sebenarnya mengkonsumsi sejumlah besar daya. Tidak hanya memori itu sendiri, tetapi semua logika di sekitarnya yang menangani pemetaan antara garis cache dan memori utama. Meningkatkan kinerja logika ekstra ini dapat menghasilkan peningkatan konsumsi daya. Sekarang, untuk aplikasi tertentu (seluler, tertanam) Anda bahkan memiliki lebih banyak insentif untuk menjaga cache tetap kecil.

Lihat Pertukaran Cache Desain untuk Power dan Optimalisasi Kinerja: Studi Kasus (Ching-Long Su dan Alvin M. Despain, 1995).

Roket
sumber
1
+1 Saya menyukai jawaban Anda. Hit semua poin yang relevan dan buat cadangannya juga. Mudah dibaca
Gustavo Litovsky
Apakah itu benar? Jawabannya didasarkan pada keterlambatan dalam kecepatan cahaya satu inci versus beberapa inci?
Andyz Smith
1
Jawaban ini bagus sebagai gambaran umum, tetapi saya kira itu tidak menjawab pertanyaan awal. Seseorang seharusnya tidak menjadi ahli uArch untuk menyadari bahwa cache berukuran A4 tidak praktis. Saya percaya OP bertanya tentang beberapa peningkatan ukuran cache yang masuk akal dan bagaimana peningkatan ini akan memengaruhi latensi akses cache.
Vasiliy
1
@AndyzSmith - Ini adalah berlebihan berlebihan dan penyederhanaan berlebihan, tapi saya pikir itu mendapatkan titik umum, bahwa pada beberapa titik, bahwa cache L1 tidak dapat diperbesar tanpa batas. Pada titik tertentu, hukum fisika masuk, dan memperlambatnya.
Rocketmagnet
Keterlambatan sinyal on-chip bukanlah kecepatan cahaya, ini adalah nilai yang lebih rumit yang dihitung dengan mempertimbangkan net / wire plus kapasitansi gerbang yang digerakkan sebagai jaringan RLC. Tidak cukup lama untuk menjadi saluran transmisi. Semakin lama jaring, semakin besar gerbang penggeraknya, atau Anda perlu memasukkan buffer sebagai pengulang. Semuanya juga mengkonsumsi lebih banyak daya.
pjc50
4

Meninggalkan semua faktor ekonomi / kinerja / konsumsi daya, jawaban atas pertanyaan Anda adalah: itu tergantung pada banyak faktor arsitektur mikro.

Sebagai contoh, lihat referensi ini - latensi akses L1 yang diukur untuk semua prosesor yang diuji adalah siklus 4 jam. Frekuensi prosesor hampir sama, tetapi ukuran cache L1 berbeda hingga faktor 3.

Alasan latensi konstan ke L1 di beberapa prosesor berbeda dalam tes di atas berakar pada arsitektur mikro cache: akses cache itu sendiri (mengambil data dari memori) hanya memerlukan satu siklus clock tunggal. Tiga siklus tambahan dihabiskan untuk mendekode akses, memeriksa keberadaan data, dan lainnya ... Jumlah tahapan tambahan sama di seluruh prosesor yang diuji, oleh karena itu latensi aksesnya sama.

Terlepas dari contoh di atas, orang tidak boleh sampai pada kesimpulan bahwa latensi cache tidak tergantung pada ukuran cache. 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.

Dengan asumsi bahwa cache yang dimaksud diimplementasikan dalam SRAM, modul yang paling dipengaruhi oleh ukuran cache adalah: decoder baris dan mux. Namun, bahkan amp indra akan terpengaruh untuk cache yang sangat besar: ayunan tegangan yang lebih kecil pada garis bit karena kapasitansi yang lebih tinggi akan membutuhkan amp indera "lebih kuat". Mengatakan bahwa, efek paling parah pada kecepatan logika akan ditambahkan oleh kapasitansi kawat interkoneksi - kapasitansi ini memiliki lebih dari ketergantungan linier pada ukuran SRAM. Detail yang tepat adalah implementasi khusus.

Sekarang, cache L1 cukup stabil dalam latensi mereka karena kinerja mereka yang paling penting. Jika Anda mencoba menganalisis cache L2 dan L3, gambarnya menjadi sangat rumit.

Gambar lebih rumit ketika Anda mempertimbangkan prosesor multi-core - mereka memiliki logika tambahan untuk memastikan koherensi cache . Ini mengarah ke faktor tambahan yang memengaruhi latensi akses cache: riwayat akses ke memori semua inti.

Ringkasan

Seperti yang Anda lihat, pertanyaan Anda jauh dari sepele dan tidak bisa dijawab sepenuhnya. Namun, jika Anda mempertimbangkan secara ekonomis dan kinerja yang lebih baik dari cache, maka saya akan mengatakan bahwa ukurannya tidak akan mempengaruhi latensi dengan cara apa pun.

Untuk pembaca yang tertarik:

Referensi ini adalah analisis yang sangat mendalam tentang faktor kinerja CPU modern. Ada banyak materi terkait cache di sana. Membutuhkan pemahaman mendalam dalam arsitektur komputer dan prinsip-prinsip arsitektur mikro (atau alternatif - ringkasan topik yang perlu diketahui untuk menjadi seorang profesional di bidang ini).

Vasiliy
sumber
Terima kasih atas jawabannya! Jawaban Anda dan @ Rocketmagnet cukup banyak saling melengkapi. Semoga saya bisa memilih keduanya. Saya sudah mendapatkan salinan referensi yang dikutip dan sangat tertarik dengan topik belakangan ini, oleh karena itu pertanyaannya.
ivanmp
mengapa logika untuk melakukan operasi baca bergantung pada ukuran cache .. Mengapa 'menjadi terlalu panjang' pada jumlah alamat tertentu apakah ada lompatan diskrit. atau jika tidak ada lompatan diskrit, apa rumus untuk waktu akses versus ukuran?
Andyz Smith
dapat Anda spesifik tentang komponen mana: "Perulangan kritis, kemudian, adalah penambah, dekoder, baris kata SRAM, baris bit SRAM, ampli (s), muxes kemudi byte, dan bypass muxes. " menyebabkan logika menjadi besar? en.wikipedia.org/wiki/Sum_addressed_decoder
Andyz Smith
@AndyzSmith, rumus waktu akses vs ukuran hanya dapat diberikan oleh seseorang yang mendesain dan mensimulasikan cache. Dalam referensi yang saya posting Anda dapat melihat dibutuhkan 4 siklus clock untuk mendapatkan data dari L1, tetapi tidak ada yang mencoba memperkirakan slack yang terkait dengan pembacaan ini. Meminta formula adalah pertanyaan yang tidak praktis tanpa banyak informasi tambahan implementasi khusus.
Vasiliy
1
@AndyzSmith, dengan asumsi bahwa cache yang dimaksud diimplementasikan dalam SRAM, modul yang paling dipengaruhi oleh ukuran cache adalah: decoder baris dan mux. Namun, bahkan amp indra akan terpengaruh untuk cache yang sangat besar: ayunan tegangan yang lebih kecil pada garis bit karena kapasitansi yang lebih tinggi -> amp amp amp yang "lebih kuat". Mengatakan bahwa, efek paling parah pada kecepatan logika akan ditambahkan oleh kapasitansi kawat interkoneksi - kapasitansi ini memiliki lebih dari ketergantungan linier pada ukuran SRAM. Sekali lagi, detailnya spesifik untuk implementasi.
Vasiliy
3

Insinyur tes cache CPU di sini - Dave Tweed dalam komentar memiliki penjelasan yang benar. Cache berukuran untuk memaksimalkan kinerja pada titik harga yang diharapkan CPU. Cache umumnya konsumen terbesar ruang mati dan ukurannya membuat perbedaan ekonomi (dan kinerja) yang besar.

Lihatlah halaman keluarga CPU Ivy Bridge Intel: http://ark.intel.com/products/codename/29902/Ivy-Bridge

Xeon ujung atas hadir dengan cache 30MB, memiliki 12 core dan harganya sekitar $ 2.700. I3 ujung bawah dengan cache 3MB (i3-3217) harganya hanya $ 500 untuk seluruh laptop (saya tidak dapat menemukannya secara individual).

Xeon memberikan kinerja terbaik tetapi juga lebih mahal untuk pembuatan dan pengujian. I3 jauh lebih murah tetapi trade-off adalah ukuran die yang lebih kecil dimana cache adalah bagian terbesar.

xyzio
sumber
2
Jawaban yang sangat menarik. Tetapi seperti yang saya nyatakan dalam pertanyaan, saya tidak mencari jawaban yang ekonomis, jelas,. Apa yang saya coba pahami terkait dengan kinerja yang terlibat dalam mengakses cache yang sangat besar (> 512 MB). Apakah ukuran akan menurunkan kinerja cache?
ivanmp