CPU modern sangat cepat dibandingkan dengan semua hal eksternal, termasuk memori (RAM).
Dapat dimengerti, karena frekuensi clock CPU telah mencapai titik di mana diperlukan beberapa clock ticks untuk sinyal listrik hanya untuk menjalankan dari CPU melalui bus ke chip RAM dan kembali.
Ini juga mempersulit kehidupan di banyak tingkatan: hierarki cache multi-level dibangun untuk mengirimkan data lebih dekat ke CPU, yang pada gilirannya memerlukan logika sinkronisasi kompleks dalam chip. Program harus ditulis dengan cara yang ramah cache untuk menghindari siklus menunggu saat data diambil.
Banyak dari masalah ini dapat dihindari jika sejumlah besar RAM terletak langsung pada chip CPU. Tidak perlu pengaturan eksklusif: mungkin menempatkan 1-4 GB pada chip, tergantung pada kelasnya dan memungkinkan memori tambahan dipasang secara terpisah.
Saya yakin ada alasan bagus Intel, AMD dan sejenisnya tidak melakukan ini. Apa alasannya? Apakah tidak ada ruang kosong di chip?
Jawaban:
Intel Haswell (atau setidaknya produk-produk yang menggabungkan Iris Pro 5200 GPU) dan POWER7 dan POWER8 IBM semuanya termasuk DRAM tertanam, "eDRAM".
Salah satu masalah penting yang menyebabkan eDRAM tidak menjadi umum sampai saat ini adalah bahwa proses fabrikasi DRAM secara inheren tidak kompatibel dengan proses logika, sehingga langkah-langkah tambahan harus dimasukkan (yang meningkatkan biaya dan menurunkan hasil) ketika eDRAM diinginkan. Jadi, harus ada alasan kuat untuk ingin menggabungkannya untuk mengimbangi kerugian ekonomi ini. Atau, DRAM dapat ditempatkan pada cetakan terpisah yang diproduksi secara terpisah, tetapi kemudian diintegrasikan ke dalam paket yang sama dengan, CPU. Ini memberikan sebagian besar manfaat lokalitas tanpa kesulitan membuat keduanya dengan cara yang benar-benar terintegrasi.
Masalah lain adalah bahwa DRAM tidak seperti SRAM dalam hal ia tidak menyimpan kontennya tanpa batas saat daya diterapkan, dan membacanya juga menghancurkan data yang disimpan, yang harus ditulis kembali sesudahnya. Oleh karena itu, harus di-refresh secara berkala dan setelah setiap membaca. Dan, karena sel DRAM didasarkan pada kapasitor, pengisian atau pemakaian cukup bahwa kebocoran tidak akan merusak nilainya sebelum refresh berikutnya membutuhkan waktu yang terbatas. Waktu pengisian ini tidak diperlukan dengan SRAM, yang hanya berupa kait; akibatnya dapat clock pada tingkat yang sama dengan CPU, sedangkan DRAM terbatas pada sekitar 1 GHz dengan tetap mempertahankan konsumsi daya yang masuk akal. Hal ini menyebabkan DRAM memiliki latensi inheren yang lebih tinggi daripada SRAM, yang membuatnya tidak layak untuk digunakan untuk semua kecuali cache yang paling besar, di mana penurunan tingkat kesalahan akan terbayar.
Juga, sejauh menyangkut latensi, sebagian besar kesulitannya adalah jarak sinyal fisik yang harus dilalui. Cahaya hanya dapat berjalan 10 cm dalam periode waktu 3 GHz CPU. Tentu saja, sinyal tidak bergerak dalam garis lurus melintasi die dan juga tidak merambat dengan kecepatan mendekati cahaya karena kebutuhan untuk buffering dan fan-out, yang menyebabkan penundaan propagasi. Jadi, jarak maksimum memori dapat jauh dari CPU untuk mempertahankan siklus latensi 1 jam paling banyak beberapa sentimeter, membatasi jumlah memori yang dapat ditampung di area yang tersedia. Prosesor Intel Nehalem sebenarnya mengurangi kapasitas cache L2 versus Penryn sebagian untuk meningkatkan latensi, yang menyebabkan kinerja yang lebih tinggi. * Jika kita tidak begitu peduli tentang latensi, maka tidak ada alasan untuk meletakkan memori pada paket,
Perlu juga dicatat bahwa tingkat hit cache sangat tinggi untuk sebagian besar beban kerja: jauh di atas 90% dalam hampir semua kasus praktis, dan tidak jarang bahkan di atas 99%. Jadi, manfaat dari memasukkan ingatan yang lebih besar pada saat mati pada dasarnya terbatas untuk mengurangi dampak dari beberapa persen kehilangan ini. Prosesor yang ditujukan untuk pasar server perusahaan (seperti POWER) biasanya memiliki cache yang sangat besar dan dapat menguntungkan termasuk eDRAM karena berguna untuk mengakomodasi kumpulan kerja yang besar dari banyak beban kerja perusahaan. Haswell memilikinya untuk mendukung GPU, karena teksturnya besar dan tidak dapat ditampung dalam cache. Ini adalah kasus penggunaan untuk eDRAM hari ini, bukan desktop biasa atau beban kerja HPC, yang dilayani dengan sangat baik oleh hierarki cache yang khas.
Untuk mengatasi beberapa masalah yang diangkat dalam komentar:
Cache eDRAM ini tidak dapat digunakan sebagai pengganti memori utama karena dirancang sebagai cache korban L4. Ini berarti bahwa data tersebut mudah menguap dan dapat dialamatkan dengan konten, sehingga data yang disimpan di dalamnya tidak diperlakukan sebagai berada di lokasi tertentu, dan dapat dibuang kapan saja. Properti ini sulit untuk direkonsiliasi dengan kebutuhan RAM untuk dipetakan langsung dan persisten, tetapi untuk mengubahnya akan membuat cache tidak berguna untuk tujuan yang dimaksud. Tentu saja mungkin untuk menanamkan memori dari desain yang lebih konvensional, seperti yang dilakukan dalam mikrokontroler, tetapi ini tidak dapat dibenarkan untuk sistem dengan memori besar karena latensi rendah tidak bermanfaat dalam memori utama seperti dalam cache, jadi memperbesar atau menambahkan cache adalah proposisi yang lebih bermanfaat.
Adapun kemungkinan cache sangat besar dengan kapasitas pada urutan gigabytes, cache hanya diperlukan paling banyak ukuran set kerja untuk aplikasi. Aplikasi HPC mungkin berurusan dengan dataset terabyte, tetapi mereka memiliki temporal dan spasial lokalitas yang baik, sehingga set kerjanya biasanya tidak terlalu besar. Aplikasi dengan perangkat kerja besar misalnya database dan perangkat lunak ERP, tetapi hanya ada pasar terbatas untuk prosesor yang dioptimalkan untuk beban kerja semacam ini. Kecuali jika perangkat lunak benar-benar membutuhkannya, menambahkan lebih banyak cache memberikan pengembalian yang sangat cepat. Baru-baru ini kita telah melihat prosesor mendapatkan instruksi prefetch, sehingga cache dapat digunakan lebih efisien: kita dapat menggunakan instruksi ini untuk menghindari kesalahan yang disebabkan oleh ketidakpastian pola akses memori, daripada ukuran absolut dari set kerja,
* Peningkatan latensi bukan hanya karena ukuran fisik cache yang lebih kecil, tetapi juga karena asosiatitas berkurang. Ada perubahan signifikan pada seluruh hierarki cache di Nehalem karena beberapa alasan berbeda, tidak semuanya berfokus pada peningkatan kinerja. Jadi, sementara ini sudah cukup sebagai contoh, ini bukan akun yang lengkap.
sumber
Alasan utama memori yang lebih besar (GB DRAM) tidak termasuk dalam CPU die itu sendiri terutama tentang biaya. Ruang mati CPU secara signifikan lebih mahal karena proses pembuatannya diperlukan untuk membuat fitur yang sangat kecil. Mungkin juga tidak mungkin untuk membuat keduanya pada cetakan yang sama, meskipun saya tidak cukup tahu tentang detail untuk memberikan jawaban yang pasti di sini.
Mari kita mengevaluasi kelayakan menempatkan sejumlah besar DRAM langsung ke CPU die.
Namun, gagasan menempel memori lebih dekat ke CPU tidak sepenuhnya hilang. Ini kemungkinan di mana memori akan bergerak di masa depan karena faktanya adalah kecepatan cahaya terbatas dan hanya mungkin untuk berkomunikasi begitu cepat pada jarak tertentu.
Teknik realistis untuk memindahkan memori lebih dekat ke CPU (perhatikan bahwa ini juga memiliki pertukaran dengan teknik tradisional):
Susun di atas CPU itu sendiri. Ini sudah dilakukan pada Raspberry Pi, dan merupakan bagian dari standar memori I / O Lebar. Memori masih berupa cetakan terpisah yang diproduksi pada proses terpisah. Namun, ini memiliki masalah bahwa setiap panas yang hilang dalam CPU harus melewati memori sebelum mencapai heat sink. Ini berarti itu tidak akan bekerja untuk prosesor daya tinggi, dan mengapa aplikasi utama untuk teknologi ini ada di prosesor mobile / aplikasi tertanam lainnya di mana CPU Anda tidak mengkonsumsi puluhan atau ratusan watt.
Tempelkan mereka sangat dekat pada substrat berbiaya lebih rendah. Beginilah cara HBM dirancang untuk bekerja, dengan bus yang sangat besar diproduksi ke die "interposer" yang lebih murah, dan merupakan arah kehabisan memori GPU kelas atas karena bandwidth secara signifikan lebih tinggi. Chip memori dan interposer semuanya masih diproduksi pada die yang berbeda dari prosesor yang sebenarnya.
sumber
Ada beberapa alasan mengapa menambahkan DRAM dalam jumlah besar ke CPU bisa jadi tidak mungkin.
Proses dan fab mungkin tidak diatur untuk DRAM. DRAM memerlukan elemen rangkaian khusus yang mengambil langkah-langkah manufaktur tambahan untuk menghasilkan. Ini meningkatkan biaya produksi.
Semua memori itu harus diuji. Pengujian memori meningkatkan waktu pengujian Anda. Itu kenaikan biaya lain.
Memperbesar dadu itu sendiri merupakan peningkatan biaya, karena itu berarti lebih sedikit dadu per wafer. Ini juga mempengaruhi hasil - satu cacat mengeluarkan sebagian besar wafer Anda. Untuk contoh ekstrim ini, lihat biaya sensor gambar full-frame (35mm) di kamera.
Mengembangkan proses yang dapat menangani jenis memori khusus membutuhkan lebih banyak waktu, uang, dan pekerjaan, dan memiliki risiko kegagalan yang lebih tinggi. Masalah dengan DRAM akan menunda rilis CPU. CPU desktop berada di ujung tombak manufaktur semikonduktor, sehingga penundaan dapat menjadi kerugian kompetitif yang sangat besar. (Lihat: AMD vs Intel selama beberapa tahun terakhir.)
DRAM membutuhkan penginderaan analog untuk dibaca, serta penyegaran berkala. Saya bukan ahli DRAM, tapi saya ragu itu bisa secepat CPU kelas atas terlepas dari apakah itu off-chip atau on-chip. Jadi Anda mungkin masih akan terjebak dengan caching SRAM.
Bahkan jika Anda dapat mengatasi masalah di atas dan menjejalkan DRAM beberapa gigabyte ke CPU mati, itu masih tidak akan cukup untuk menjalankan PC desktop, laptop, atau server, sehingga Anda harus memiliki memori off-chip pula .
sumber
Selain jawaban lain, ada lagi yang bisa dikatakan tentang sistem seperti itu. Memindahkan memori ke die utama akan mencakup sejumlah masalah teknik lainnya. Anda harus mengalihkan rute bus, membangun pengontrol DMA ke prosesor utama, merestrukturisasi bus IRQ, dan menentukan cara membuang semua panas ekstra yang akan Anda keluarkan di area terkonsentrasi. Ini berarti bahwa pabrikan motherboard juga harus terlibat untuk mendukung perubahan yang substansial. Sementara sistem low-end mungkin akan mendapat manfaat dari perubahan seperti itu, sistem high-end mungkin membutuhkan pendinginan yang substansial. Saya ragu bahwa rata-rata laptop dapat menangani chip seperti itu, misalnya.
Chip seperti itu akan jauh lebih mahal, meskipun motherboard utama akan turun harganya (meskipun mungkin tidak cukup). Jika Anda telah melihat paket-paket untuk pengontrol DMA, ditambah paket-paket RAM, Anda akan kesulitan untuk percaya bahwa semua logika itu dapat ditekan menjadi satu die yang tidak akan jauh lebih besar. Juga ingat bahwa CPU dipotong dari wafer besar yang berukuran tertentu. Ini berarti bahwa pabrikan juga akan memiliki prosesor yang jauh lebih sedikit per wafer, yang akan meningkatkan biaya keseluruhan juga.
Ingatlah bahwa kita tidak berbicara tentang penggunaan daya watt di seluruh sistem, yang akan berkurang, melainkan bahwa akan ada lebih banyak konsentrasi daya watt (dan karenanya panas) di satu area, yang mungkin akan meningkatkan kemungkinan kegagalan.
Akhirnya, ada kelemahan lain di sini, dan itu adalah kemampuan untuk menyediakan sistem yang disesuaikan. Saat ini, pabrikan dapat memilih untuk mematikan sistem dengan prosesor yang identik tetapi jumlah memori yang berbeda, atau prosesor yang berbeda tetapi jumlah memori yang sama, berdasarkan preferensi pelanggan. Untuk menawarkan banyak konfigurasi yang berbeda, mereka harus membuat cetakan yang berbeda, masing-masing pada jalur perakitan yang berbeda.
AMD secara aktif menggunakan teknologi yang benar-benar berfungsi seperti itu, di mana setiap bagian dari prosesor mati adalah unit logika diskrit yang dapat ditukar dengan konfigurasi yang berbeda. Di masa depan, jika desain seperti itu layak, kita bisa melihat CPU yang menawarkan memori dalam chip sebagai upgrade modul yang mahal, mungkin mengganti beberapa kekuatan pemrosesan sebagai balasannya, atau tweak lainnya. Sebagai contoh, suatu hari kita mungkin memiliki pilihan antara 256 core tanpa memori built-in, atau 128 core dengan memori built-in, atau mungkin bahkan konfigurasi lain seperti GPU bagian, CPU bagian, RAM bagian.
sumber
Hampir semua hal di atas + satu lagi masalah tambahan: panas.
Sel-sel DRAM pada dasarnya adalah kapasitor bocor. Dan dielektrik di sini adalah lapisan SiO2 itu sendiri. Ketika suhu meningkat, arus kebocoran meningkat secara proporsional. Ini melepaskan sel-sel DRAM jauh lebih cepat yang akan membutuhkan kecepatan refresh jauh lebih cepat, yang akan meningkatkan kompleksitas, arus yang diperlukan dan tentu saja, menambah panas lebih banyak.
sumber
Selain jawaban yang sudah diberikan ada satu aspek tambahan: Limbah karena kesalahan produksi:
Katakanlah 1/100 dari semua CPU dari model tertentu yang diproduksi salah (dalam kenyataannya itu kurang, tentu saja; 1/100 lebih mudah untuk dihitung) dan 1/100 dari semua RAM yang diproduksi salah.
Jika kedua komponen akan digabungkan dalam satu chip tunggal maka 1/100 dari semua chip akan memiliki CPU yang rusak dan 1/100 dari semua chip akan memiliki RAM yang rusak.
Ini berarti:
Menghasilkan chip yang terpisah, perhitungannya adalah sebagai berikut:
Perhatikan bahwa satu GB RAM biasanya dibuat dalam bentuk bank yang terdiri dari delapan chip sehingga Anda tidak perlu menggabungkan dua tetapi 9 komponen menjadi satu chip jika Anda ingin meletakkan RAM dan CPU pada chip yang sama. Ini akan menyebabkan sekitar 865 bagian yang rusak dari 10.000 diproduksi dalam contoh sederhana di atas.
CPU "Sel IBM" memiliki masalah ini persis. Konsol "Playstation" menggunakan chip yang sebagian cacat; perangkat lunak Playstation ditulis sedemikian rupa sehingga core dan SRAM yang rusak tidak digunakan.
sumber
Sebenarnya ada dua jenis RAM. Mereka adalah RAM statis dan RAM Dinamis. Memori statis sangat cepat tetapi harganya lebih tinggi. Sementara itu, RAM dinamis lambat dibandingkan dengan RAM statis tetapi harganya murah dibandingkan dengan RAM statis.
Memori cache jatuh ke RAM statis. Anda dapat melihat bahwa mereka datang dalam ukuran KB atau MB. Mereka cepat. Tapi biayanya tinggi.
sumber
Selain alasan lain yang disebutkan, banyak sistem memiliki lebih dari satu inti CPU. Pada saat informasi yang disimpan dalam DRAM utama konsisten dengan semua salinan yang di-cache, semua prosesor yang tidak memiliki informasi yang di-cache akan memiliki akses yang sama ke sana. Beberapa arsitektur dirancang dengan asumsi bahwa setiap inti CPU akan "memiliki" ruang alamat, dan bahkan jika CPU mampu mengakses memori yang dimiliki oleh prosesor lain, akses tersebut akan jauh lebih lambat daripada akses ke memori sendiri. , tetapi x86 umumnya tidak diterapkan dengan cara seperti itu.
Jika suatu sistem dirancang berdasarkan asumsi bahwa inti prosesor memiliki rentang alamat tertentu, dan kode harus mencoba untuk meminimalkan penggunaan rentang alamat prosesor lain, maka masuk akal untuk meminta setiap kode prosesor memasukkan sejumlah besar memori on-chip. Desain seperti itu mungkin mengurangi waktu yang diperlukan untuk inti prosesor untuk mengakses memori sendiri, tetapi kemungkinan akan menambah waktu yang dibutuhkan untuk mengakses memori prosesor lain. Namun, jika sistem tidak dirancang berdasarkan asumsi seperti itu, kemungkinan data akan didistribusikan di antara prosesor tanpa memperhatikan siapa yang membutuhkannya saat itu. Bahkan jika waktu tambahan yang diperlukan untuk mengakses data dari dalam CPU lain (vs sistem memori eksternal) hanya setengah dari waktu yang dihemat pada akses internal,
Jika seseorang mendesain sistem dari awal agar sesuai dengan teknologi saat ini, arsitektur memori yang tidak seragam dapat memungkinkan lebih banyak "menghasilkan uang" daripada yang membutuhkan semua prosesor untuk mengakses semua memori secara efisien. Mengingat desain perangkat lunak saat ini, bagaimanapun, memiliki sistem memori eksternal yang dibagikan di antara prosesor cenderung lebih efisien daripada mencoba untuk memiliki penyimpanan data massal dalam prosesor itu sendiri.
sumber
Sementara semua jawaban sebelumnya benar dalam menunjukkan mengapa begitu sulit untuk menambahkan lebih banyak memori ke CPU, itu juga benar bahwa ada cukup banyak memori di CPU modern.
Dalam operasi real-time ketika penundaan deterministik penting, tidak pernah terdengar menggunakan cache on-chip sebagai memori yang dapat dialamatkan, untuk kode dan / atau data. Keuntungannya adalah waktu akses yang cepat dan konstan, dan kerugiannya adalah bahwa memori on-chip sangat terbatas.
sumber
Masalah yang Anda jelaskan dalam pertanyaan awal hanya dapat dihindari jika SEMUA memori dalam mesin disertakan pada CPU. Memori tambahan apa pun yang ditambahkan ke mesin melalui slot pada papan utama akan mengalami penundaan yang sama seperti yang Anda jelaskan dan akan membutuhkan perangkat pengontrolan dan kontrol logika antara CPU / RAM dan RAM onboard.
RAM murah dan biasanya diperluas oleh pengguna satu atau bahkan dua kali antara meningkatkan CPU mereka.
Juga ingat bahwa panggilan "Ambil" akan, bahkan jika RAM berjalan pada kecepatan jam CPU, menyebabkan sejumlah kutu idle pada CPU.
Organisasi tradisional memori pada mesin adalah piramida dengan register CPU di bagian atas, lalu cache, lalu RAM, lalu disk. Biasanya mesin yang berkinerja baik memiliki kombinasi kecepatan clock yang layak, jumlah cache yang masuk akal, jumlah RAM yang baik dan hard disk kecepatan tinggi (atau array). Dalam beberapa tahun terakhir, kinerja disk biasanya memberikan peningkatan kinerja terbaik di sebagian besar disk PC dan RPM tinggi, disk dengan cache dan disk solid state memberikan peningkatan kinerja yang baik.
Ya, mesin dengan semua RAM-nya pada chip akan berkinerja baik dalam aplikasi modern tetapi mesin dengan beberapa RAM-nya pada chip yang menjalankan sistem operasi standar kemungkinan tidak akan memberikan peningkatan kinerja yang Anda mungkin berpikir akan melakukannya.
sumber