Mengapa RAM (tipe apa pun) waktu akses berkurang dengan sangat lambat?

22

Artikel ini menunjukkan bahwa DDR4 SDRAM memiliki bandwidth DDR1 SDRAM sekitar 8x lebih banyak. Tetapi waktu dari pengaturan alamat kolom ke saat data tersedia hanya mengalami penurunan sebesar 10% (13,5ns). Pencarian cepat menunjukkan bahwa waktu akses async tercepat. SRAM (18 tahun) berusia 7 tahun. Mengapa waktu akses SDRAM menurun sangat lambat? Apakah alasannya ekonomi, teknologi, atau fundamental?

Arseniy
sumber
1
Mungkinkah alasan lain yang mungkin adalah bahwa itu tidak perlu?
Sebastiaan van den Broek
Misalnya waktu akses yang rendah diperlukan untuk membuat pencarian data di memori lebih cepat.
Arseniy
Saya menyadari bahwa, kecepatan ekstra selalu baik, tetapi berasal dari perspektif pengembang perangkat lunak, mungkin dibandingkan dengan semua IO dan arsitektur lainnya (termasuk layanan mikro yang benar-benar dapat berjalan di pusat data yang berbeda), kecepatan RAM tidak terlalu menjadi hambatan. lagi. Terkadang 'cukup baik' bagus, atau setidaknya tidak menjamin R&D ekstra untuk mempercepatnya. Saya akan mempertimbangkan menambahkan itu sebagai alasan potensial dalam pertanyaan Anda juga.
Sebastiaan van den Broek
1
Menurut Wikipedia, DDR3-2200 memiliki latensi Word Pertama 6,36 ns, yaitu berapa lama sinyal untuk menyebar sekitar 3ft pada FR4, saya akan mengatakan kita cukup dekat dengan batas fisik
Mark Omo

Jawaban:

33

Itu karena lebih mudah dan lebih murah untuk meningkatkan bandwidth DRAM daripada mengurangi latensi. Untuk mendapatkan data dari deretan ram yang terbuka, diperlukan jumlah pekerjaan yang tidak sepele.

Alamat kolom perlu diterjemahkan, muxes yang memilih jalur mana yang harus diakses perlu didorong, dan data perlu bergerak melintasi chip ke buffer output. Ini membutuhkan sedikit waktu, terutama mengingat bahwa chip SDRAM dibuat pada proses yang disesuaikan dengan kepadatan ram tinggi dan bukan kecepatan logika tinggi. Untuk meningkatkan bandwidth katakanlah dengan menggunakan DDR (1,2,3 atau 4), sebagian besar logika dapat diperluas atau disalurkan melalui pipa, dan dapat beroperasi pada kecepatan yang sama seperti pada generasi sebelumnya. Satu-satunya hal yang perlu lebih cepat adalah driver I / O untuk pin DDR.

Sebaliknya, untuk mengurangi latensi seluruh operasi perlu dipercepat, yang jauh lebih sulit. Kemungkinan besar, bagian dari ram harus dibuat pada proses yang mirip dengan untuk CPU kecepatan tinggi, meningkatkan biaya secara substansial (proses kecepatan tinggi lebih mahal, ditambah setiap chip harus melalui 2 proses yang berbeda).

Jika Anda membandingkan cache CPU dengan RAM dan hard disk / SSD, ada hubungan terbalik antara penyimpanan yang besar, dan penyimpanan yang cepat. L1 $ sangat cepat, tetapi hanya bisa menampung antara 32 dan 256kB data. Alasannya begitu cepat adalah karena kecil:

  • Itu dapat ditempatkan sangat dekat dengan CPU menggunakannya, artinya data harus menempuh jarak yang lebih pendek untuk mendapatkannya
  • Kabel di atasnya dapat dibuat lebih pendek, lagi-lagi berarti dibutuhkan lebih sedikit waktu untuk melakukan perjalanan melintasinya
  • Itu tidak memakan banyak area atau banyak transistor, jadi membuatnya pada proses yang dioptimalkan dengan kecepatan dan menggunakan banyak daya per bit yang disimpan tidak terlalu mahal

Saat Anda naik hierarki, setiap opsi penyimpanan memiliki kapasitas yang lebih besar, tetapi juga lebih besar di area dan semakin jauh dari perangkat yang menggunakannya, artinya perangkat harus menjadi lebih lambat.

C_Elegans
sumber
21
Jawaban yang bagus Saya hanya ingin menekankan faktor jarak fisik: mungkin 10cm untuk RAM stick terjauh, 1/3 hingga 1/2 dari kecepatan cahaya sebagai kecepatan sinyal, ditambah beberapa panjang ekstra untuk rute & cocok dengan trek PCB, Anda bisa dengan mudah berada di waktu perjalanan 2ns. Jika ~ 15% dari keterlambatan Anda disebabkan oleh batas kecepatan universal yang tidak dapat dipecahkan ... Anda melakukan hal yang baik menurut saya.
mbrig
1
L1 juga diatur secara unik, langsung di inti yang menggunakannya, dan menggunakan SRAM.
hutan
@ Hutan Dan juga memiliki batas ukuran yang cukup ketat - membuatnya terlalu besar, dan tidak ada cara untuk menjaganya begitu cepat.
Luaan
Cache L1d juga dapat sangat dioptimalkan untuk latensi, misalnya mengambil tag dan data secara paralel untuk semua cara yang ditetapkan. Jadi, ketika pencocokan tag hanya muxes data ke output, bukannya perlu mengambilnya dari SRAM. Ini juga dapat terjadi secara paralel dengan pencarian TLB pada bit alamat yang tinggi, jika bit indeks semuanya berasal dari bagian offset-dalam-halaman dari alamat. (Jadi itu satu batasan yang sulit untuk ukuran, seperti @Luaan yang disebutkan: size / associativity <= ukuran halaman untuk VIPT ini = peretasan kecepatan PIPT untuk bekerja. Lihat Cache VIPT: Koneksi antara TLB & Cache? )
Peter Cordes
6

C_Elegans memberikan satu bagian dari jawaban - sulit untuk mengurangi latensi keseluruhan dari siklus memori.

Bagian lain dari jawabannya adalah bahwa dalam sistem memori hierarkis modern (multi level caching), bandwidth memori memiliki pengaruh yang jauh lebih kuat pada kinerja sistem secara keseluruhan daripada latensi memori , dan dengan demikian semua upaya pengembangan terbaru telah difokuskan.

Ini berlaku dalam komputasi umum, di mana banyak proses / utas berjalan secara paralel, serta sistem tertanam. Sebagai contoh, dalam pekerjaan video HD yang saya lakukan, saya tidak peduli tentang latensi pada urutan milidetik, tetapi saya memang membutuhkan beberapa gigabyte / detik bandwidth.

Dave Tweed
sumber
Dan harus disebutkan bahwa perangkat lunak dapat dirancang untuk latensi "tinggi" dengan cukup mudah dalam banyak kasus, dibandingkan dengan kesulitan dan biaya penurunan latensi. Baik CPU dan perangkat lunaknya sangat baik dalam menghilangkan latensi efektif dalam banyak kasus. Pada akhirnya, Anda tidak mencapai batas latensi sesering mungkin, kecuali Anda tidak tahu bagaimana arsitektur memori dan caching / pre-fetching CPU dll. Bekerja. Pendekatan sederhana biasanya bekerja cukup baik untuk sebagian besar perangkat lunak, terutama single-threaded.
Luaan
Pada CPU Intel modern, latensi memori adalah faktor pembatas bandwidth single-core : bandwidth tidak dapat melebihi max_concurrency / latency, dan satu core memiliki kapasitas terbatas untuk permintaan off-core dalam penerbangan sekaligus. Xeon banyak-inti (dengan latensi uncore lebih tinggi dari lebih banyak hop di ring bus) memiliki bandwidth single-core lebih buruk daripada chip desktop quad-core, meskipun memiliki lebih banyak pengontrol DRAM. Mengapa Skylake jauh lebih baik daripada Broadwell-E untuk throughput memori single-threaded? . Dibutuhkan lebih banyak utas untuk menjenuhkan memori B / W pada Xeon banyak-inti.
Peter Cordes
Secara keseluruhan poin utama Anda benar: sebagian besar akses menekan cache untuk latensi rendah untuk menghindari menghentikan back-end out-of-order. Preferensi HW sebagian besar hanya membutuhkan bandwidth untuk mengimbangi akses berurutan dan memiliki data yang siap di cache sebelum core membutuhkannya. DRAM latency adalah ratusan siklus clock inti, sehingga perangkat lunak yang efisien harus disetel untuk menggunakan pola akses yang tidak melewatkan cache dengan mengalahkan baik spasial / temporalitas lokal dan prefetching HW. Khusus untuk beban, karena buffer toko dapat memisahkan latensi toko dari sisa backend out-of-order.
Peter Cordes
Untuk disk I / O, latensi milidetik akan menjadi masalah jika kami tidak memiliki readahead prefetch untuk menyembunyikannya untuk akses berurutan. Tetapi semakin tinggi latensi, semakin sulit untuk disembunyikan. (Semakin baik algoritma prefetch Anda, dan semakin mudah diprediksi pola akses Anda.) Dan semakin banyak permintaan / byte data yang Anda perlukan untuk mendapatkan bandwidth yang Anda inginkan.
Peter Cordes
2

Saya tidak memiliki banyak wawasan, tapi saya berharap itu sedikit dari semuanya.

Ekonomis

Untuk sebagian besar komputer / telepon, kecepatannya lebih dari cukup. Untuk penyimpanan data yang lebih cepat, SSD telah dikembangkan. Orang-orang dapat menggunakan video / musik dan tugas-tugas intensif kecepatan lainnya dalam (hampir) waktu nyata. Jadi tidak perlu begitu banyak kecepatan (kecuali untuk aplikasi spesifik seperti prediksi cuaca dll).

Alasan lain adalah untuk memproses kecepatan RAM yang sangat tinggi, diperlukan CPU yang cepat. Dan ini dilengkapi dengan banyak penggunaan daya. Karena kecenderungan menggunakannya dalam perangkat baterai (seperti ponsel), mencegah penggunaan RAM yang sangat cepat (dan CPU), sehingga membuatnya juga tidak berguna secara ekonomis untuk membuatnya.

Teknis

Dengan ukuran chip / IC yang menurun (level nm sekarang), kecepatannya naik, tetapi tidak signifikan. Ini lebih sering digunakan untuk meningkatkan jumlah RAM, yang dibutuhkan lebih keras (juga alasan ekonomi).

Mendasar

Sebagai contoh (keduanya adalah sirkuit): cara termudah untuk mendapatkan lebih banyak kecepatan (digunakan oleh SSD), adalah dengan hanya menyebarkan beban ke beberapa komponen, dengan cara ini kecepatan 'pemrosesan' juga bertambah. Bandingkan menggunakan 8 USB stick membaca dari pada saat yang sama dan menggabungkan hasilnya, alih-alih membaca data dari 1 USB stick satu sama lain (memakan waktu 8 kali lebih lama).

Michel Keijzers
sumber
1
Apa sebenarnya yang harus dilakukan SSD dengan latensi SDRAM?
C_Elegans
@ C_Elegans mereka berdua sirkuit, untuk pertanyaan 'generik' ini saya tidak berpikir ada begitu banyak perbedaan.
Michel Keijzers
2
Jumlah waktu untuk membuka halaman tidak terlalu berkurang karena siklus pengisian daya sebelumnya; jumlah energi yang dibutuhkan tidak jauh berbeda hari ini dibandingkan satu dekade yang lalu. Itu mendominasi waktu akses dalam pengalaman saya.
Peter Smith
5
@MichelKeijzers Walaupun keduanya merupakan sirkuit, SSD dan SDRAM memiliki kasus penggunaan yang sangat berbeda, dan memanfaatkan berbagai teknik untuk menyimpan data. Selain itu, mengatakan bahwa CPU tidak benar-benar membutuhkan RAM lebih cepat tidak masuk akal, seluruh alasan kebanyakan CPU modern memiliki 3 level cache adalah karena ram mereka tidak dapat dibuat cukup cepat untuk melayani CPU.
C_Elegans
1
Anda mengatakan untuk penyimpanan yang lebih besar ada SSD. Apakah maksud Anda lebih cepat ? Lebih mahal untuk mendapatkan jumlah penyimpanan yang sama dalam ssd daripada hdd. Titik penjualan utama SSD adalah kecepatan, dan mungkin kebisingan dan keandalannya. Untuk kapasitas, HDD masih lebih baik
user198712