Mungkin ini lebih merupakan masalah persepsi, tetapi sepertinya mikrokontroler telah maju pesat dalam 20 tahun terakhir, dalam hampir semua hal, kecepatan clock lebih tinggi, lebih banyak periferal, debugging lebih mudah, core 32-bit, dll ...
Masih umum untuk melihat RAM dalam 10-an KB (16/32 KB).
Sepertinya itu bukan masalah biaya atau ukuran secara langsung. Apakah ini masalah kompleksitas dengan pengontrol RAM di atas beberapa ambang batas?
Atau hanya karena itu tidak diperlukan secara umum?
Melihat lebih dari satu matriks bagian pada pemasok Internet yang populer, saya melihat satu Cortex M4 dengan 256 KB untuk kurang dari US $ 8, dan kemudian untuk beberapa dolar lebih banyak Anda dapat menemukan beberapa lebih banyak yang ROMless, tetapi tampaknya cukup jarang ...
Saya sebenarnya tidak membutuhkan mikrokontroler dengan MB penyimpanan volatile, tetapi sepertinya seseorang mungkin ...
sumber
it seems like somebody might
adalah tangkapan di sini, kebanyakan orang tidak. Anda tidak akan melakukan streaming Netflix pada chip itu, dan 64K biasanya lebih dari cukup untuk semua yang perlu Anda lakukan dengan pengontrol mikro . Jika Anda ingin menjadi lebih tinggi, dapatkan comp penuh sesak nafas, misalnya, raspberry.Jawaban:
Ada beberapa alasan untuk ini.
Pertama-tama, memori membutuhkan banyak area silikon. Ini berarti bahwa meningkatkan jumlah RAM secara langsung meningkatkan area silikon chip dan karenanya biaya. Area silikon yang lebih besar memiliki efek 'whammy ganda' pada harga: chip yang lebih besar berarti lebih sedikit chip per wafer, terutama di sekitar tepi, dan chip yang lebih besar berarti setiap chip lebih mungkin untuk mendapatkan cacat.
Kedua adalah masalah proses. Array RAM harus dioptimalkan dengan cara yang berbeda dari logika, dan tidak mungkin untuk mengirim bagian yang berbeda dari chip yang sama melalui proses yang berbeda - seluruh chip harus dibuat dengan proses yang sama. Ada beberapa pendiri semikonduktor yang lebih atau kurang didedikasikan untuk memproduksi DRAM. Bukan CPU atau logika lainnya, cukup lurus DRAM. DRAM membutuhkan kapasitor hemat area dan transistor kebocoran sangat rendah. Pembuatan kapasitor membutuhkan pemrosesan khusus. Membuat transistor kebocoran rendah menghasilkan transistor lebih lambat, yang merupakan trade-off baik untuk elektronik pembacaan DRAM, tetapi tidak akan begitu baik untuk membangun logika kinerja tinggi. Memproduksi DRAM pada die mikrokontroler berarti Anda harus menukar proses optimasi entah bagaimana. Array RAM yang besar juga lebih mungkin untuk mengembangkan kesalahan hanya karena area yang luas, menurunkan hasil dan meningkatkan biaya. Menguji susunan RAM yang besar juga memakan waktu dan dengan demikian memasukkan susunan yang besar akan meningkatkan biaya pengujian. Selain itu, skala ekonomis menurunkan biaya chip RAM terpisah lebih banyak daripada mikrokontroler yang lebih khusus.
Konsumsi daya adalah alasan lain. Banyak aplikasi tertanam dibatasi daya, dan sebagai hasilnya banyak mikrokontroler dibangun sehingga mereka dapat dimasukkan ke dalam keadaan tidur daya sangat rendah. Untuk mengaktifkan tidur dengan daya sangat rendah, SRAM digunakan karena kemampuannya untuk mempertahankan kontennya dengan konsumsi daya yang sangat rendah. SRAM yang didukung baterai dapat mempertahankan statusnya selama bertahun-tahun dengan baterai tombol 3V tunggal. DRAM, di sisi lain, tidak dapat mempertahankan statusnya lebih dari sepersekian detik. Kapasitor sangat kecil sehingga segelintir elektron keluar dan masuk ke substrat, atau bocor melalui transistor sel. Untuk mengatasi hal ini, DRAM harus terus dibaca dan ditulis kembali. Akibatnya, DRAM mengkonsumsi daya secara signifikan lebih besar daripada SRAM saat idle.
Di sisi lain, sel-sel bit SRAM jauh lebih besar daripada sel-sel bit DRAM, jadi jika banyak memori diperlukan, DRAM umumnya merupakan pilihan yang lebih baik. Inilah sebabnya mengapa cukup umum untuk menggunakan sejumlah kecil SRAM (kB ke MB) karena memori cache on-chip digabungkan dengan DRAM off-chip dalam jumlah yang lebih besar (MB ke GB).
Ada beberapa teknik desain yang sangat keren yang digunakan untuk meningkatkan jumlah RAM yang tersedia dalam sistem tertanam dengan biaya rendah. Beberapa di antaranya adalah paket multi-chip yang berisi cetakan terpisah untuk prosesor dan RAM. Solusi lain melibatkan pembuatan bantalan di bagian atas paket CPU sehingga chip RAM dapat ditumpuk di atas. Solusi ini sangat pintar karena chip RAM yang berbeda dapat disolder di atas CPU tergantung pada jumlah memori yang diperlukan, tanpa diperlukan perutean tingkat papan tambahan (bus memori sangat lebar dan memakan banyak area papan). Perhatikan bahwa sistem ini biasanya tidak dianggap sebagai mikrokontroler.
Banyak sistem tertanam yang sangat kecil tidak memerlukan banyak RAM. Jika Anda membutuhkan banyak RAM, maka Anda mungkin ingin menggunakan prosesor kelas atas yang memiliki DRAM eksternal, bukan SRAM onboard.
sumber
Memori mungkin memakan banyak ruang silikon, dan RAM yang sangat cepat digunakan mudah berubah - dan menggunakan daya secara konstan untuk mempertahankan kondisinya. Kecuali Anda membutuhkan banyak RAM, itu tidak berguna untuk banyak aplikasi lain. Jika perancang sistem tertanam memerlukan lebih banyak RAM, mereka hanya mendapatkan chip RAM eksternal dan menggunakan antarmuka memori periferal yang sering dimiliki oleh mikrokontroler dewasa ini untuk ekstensi memori plug and play yang sangat mudah. Itulah alasan saya melihat mengapa mikrokontroler secara umum masih memiliki onboard RAM yang rendah, karena kode aplikasi yang masuk akal dan skenario penggunaan-kasus biasanya tidak perlu banyak.
Ketika Anda mulai memahami arsitektur yang lebih besar yang harus berjalan penuh pada sistem operasi, maka RAM menjadi sangat penting, namun ini keluar dari ranah mikrokontroler dan masuk ke komputer tertanam seperti yang Anda lihat di papan Beaglebone dan Raspberri Pi. hari. Dan bahkan pada tahap ini, prosesornya sangat kompleks dan penuh fitur sehingga mereka tidak memiliki ruang untuk jumlah RAM yang dibutuhkan untuk tugas mereka sehingga memori eksternal cukup banyak diperlukan bagi mereka untuk beroperasi sama sekali.
EDIT:
Sebagai anekdot pribadi, saya baru-baru ini membuat papan kontrol robot otonom kecil dengan tujuan menggunakannya untuk visi komputer resolusi rendah seperti deteksi gerakan dan pelacakan objek dan mengikuti. Saya memilih ARM Cortex M3 pin-count rendah untuk tugas ini dan sambil melihat pilihan Atmel untuk prosesor seri SAM3 mereka, saya memang mencari RAM tertinggi yang bisa saya temukan - karena dalam hal ini saya tidak ingin membeli RAM RAM eksternal. karena ruang papan dan tidak ingin kompleksitas bus memori RAM kecepatan tinggi pada PCB. Dalam hal ini untuk aplikasi khusus saya, saya akan sangat suka memiliki opsi 100-an KB lebih banyak RAM jika memungkinkan.
sumber
Selain poin-poin luar biasa yang diangkat dalam jawaban lain, alasan lain untuk RAM yang terbatas adalah arsitektur mikrokontroler. Sebagai contoh, ambil Microchip PIC10LF320, yang hanya memiliki 448 byte memori program (flash) dan 64 byte RAM. Tetapi mungkin harganya hanya 25ȼ (atau kurang) dalam jumlah besar. Ukuran yang terbatas dari kata instruksi PIC10 (12 bit) memungkinkan untuk hanya mengatasi 128 byte RAM secara langsung.
Saya yakin ada mikrokontroler lain di luar sana yang hanya memiliki bus alamat 8-bit, membatasi mereka hingga 256 byte RAM.
Tetapi kebanyakan mikrokontroler kelas menengah (bahkan mereka yang memiliki jalur data 8-bit), memiliki bus alamat 16-bit. Pertimbangan arsitektur utama untuk chip ini adalah apakah chip tersebut menggunakan Harvard atau arsitektur Von Neumann .
Sebagian besar mikrokontroler menggunakan arsitektur Harvard, yang memiliki ruang alamat 16-bit yang terpisah untuk memori program, RAM, dan alamat I / O yang dipetakan dengan memori. Jadi untuk ini, bus alamat 16-bit dapat mengakses hingga 64K (65.536) byte RAM. Masih ada batas 64K yang ditempatkan oleh arsitektur, dan jika seseorang ingin pergi di atas bahwa semacam paging harus digunakan. Adalah jauh lebih umum memiliki paging untuk ruang program daripada ruang RAM.
Mikrokontroler yang menggunakan arsitektur Von Neumann, seperti garis Freescale HCS08, hanya memiliki satu ruang alamat yang terbagi antara memori program, RAM dan I / O yang dipetakan dengan memori. Agar memiliki jumlah ruang program yang masuk akal, ini membatasi jumlah RAM pada umumnya 4K atau 8K. Sekali lagi, seseorang dapat menggunakan paging untuk menambah ruang program atau RAM yang tersedia.
sumber
Setelah bekerja dengan mikrokontroler dan sistem kecil untuk sementara waktu sekarang, saya ingin menunjukkan bahwa seringkali sangat sedikit RAM yang dibutuhkan. Ingatlah bahwa meskipun suatu MCU mungkin mampu mencapai banyak hal, tren hari ini adalah menggunakan lebih banyak MCU sebelumnya, dan menggunakan lebih banyak dari mereka untuk mendistribusikan banyak tugas dalam sistem yang lebih besar. Ini dikombinasikan dengan fakta bahwa tidak seperti sistem pengembangan yang membengkak yang diperlukan untuk program di Windows, pengembangan MCU sering menggunakan kompiler yang dioptimalkan dengan sangat baik, paling sering dengan kode sumber C dan C ++ yang sangat efisien, kadang-kadang dengan sedikit atau tanpa overhead OS sama sekali. Meskipun Anda hampir tidak bisa menulis program Windows untuk menampilkan nama Anda di perangkat apa pun tanpa mengkonsumsi setidaknya ratusan kilobyte termasuk sumber daya OS,
Yang pasti, ada masalah biaya dan ruang seperti yang ditunjukkan orang lain. Tetapi sejarah yang ada di sini adalah bahwa apa yang dianggap sebagai sejumlah kecil RAM oleh pendatang baru hari ini benar-benar sedikit lebih banyak dari sebelumnya, dan sementara itu komponen dan perangkat yang perlu antarmuka MCU dengan sendiri semakin pintar. Sejujurnya, penggunaan RAM terbesar saya di banyak aplikasi MCU belakangan ini adalah untuk buffer komunikasi berbasis interupsi, untuk membebaskan MCU untuk tugas-tugas lain tanpa takut kehilangan data. Tapi percayalah atau tidak, untuk logika biasa dan fungsionalitas komputasi, MCU sangat cocok dengan keterbatasan mereka dalam membangun sumber daya RAM dan flash, dan Anda benar-benar dapat melakukan banyak hal dengan sangat sedikit.
Ingatlah bahwa pada suatu saat, gim-gim Video terkenal dengan grafis kasar tetapi logika gim yang rumit seperti "PAC Man" dan "Space Invaders" biasanya dilakukan dalam 8K ROM, pada mesin yang memiliki RAM 8 atau 16 KB!
sumber
Selain poin yang sangat baik tentang biaya dan pembuatan, ada sedikit permintaan untuk banyak on-chip RAM.
Saya sering bekerja dengan mikrokontroler dengan flash dalam puluhan kB (16kB, 32kB) dan RAM dalam kisaran kB (1kB, 2kB). Saya sangat sering kehabisan flash, dan hampir tidak pernah kehabisan RAM. Dalam sebagian besar proyek saya, saya mendekati batas flash, tetapi biasanya membutuhkan kurang dari 20% RAM.
Kebanyakan mikrokontroler yang sangat kecil memiliki dua jenis peran:
regulasi dan kontrol: mereka harus mengendalikan mesin. Bahkan dalam kasus algoritma pengontrol yang rumit, yang dapat mengambil ruang kode puluhan kB, sangat sedikit RAM diperlukan. Anda berada dalam kendali proses fisik, dan memiliki variabel yang berisi beberapa unit fisik, dan mungkin beberapa variabel sebagai penghitung lingkaran. Tidak perlu lagi.
pemrosesan data: dalam kasus yang jarang Anda perlu menyimpan sejumlah besar data pada saat yang sama, Anda dapat menggunakan RAM eksternal. Hampir semua mikrokontroler modern memiliki dukungan asli untuk itu. Jika Anda membutuhkan program sederhana yang menggunakan banyak memori, akan lebih murah dan lebih kecil untuk menggunakan mikrokontroler kecil dan RAM eksternal, daripada mikrokontroler tingkat tinggi. Tidak ada yang menghasilkan pengontrol dengan beberapa port, flash kecil dan RAM besar, karena ada sedikit permintaan untuk itu.
sumber
Semua alasan yang telah disebutkan, tentu saja, secara teknis valid dan akurat. Namun, jangan lupa elektronik adalah bisnis dan MCU adalah salah satu ceruk pasar paling kompetitif dalam industri elektronik.
Saya berani mengatakan alasan sebenarnya untuk menghubungkan label harga MCU dengan jumlah SRAM yang tertanam adalah alasan pemasaran, bukan alasan biaya:
Dalam sebagian besar desain, frekuensi clock maksimum yang dapat dicapai bukan merupakan faktor pembatas. Sebaliknya, jumlah SRAM yang tersedia adalah. Jangan salah paham, frekuensi CPU sangat penting, namun, dalam segmen keluarga MCU tertentu , Anda biasanya tidak ditawari model perangkat berbeda dengan harga berbeda berdasarkan frekuensi CPU maksimum. Juga, penyimpanan program Flash adalah faktor pembatas utama lainnya, namun, saya tidak akan terlalu fokus pada Flash (pertanyaannya diarahkan khusus ke SRAM).
Jumlah SRAM yang tersedia terkait langsung dengan tingkat kerumitan yang dapat Anda tanam di MCU Anda, baik dengan perpustakaan pihak ketiga atau dengan kode yang diluncurkan sendiri. Jadi ini adalah metrik "alami" untuk disegmentasi berdasarkan harga MCU Anda. Dapat dipahami bagi pelanggan teknis untuk menerima bahwa MCU yang mampu melakukan tugas yang lebih kompleks (lebih banyak SRAM, lebih banyak penyimpanan Flash) harus lebih mahal. Harga, di sini, adalah refleksi dari nilai yang mendasari (memberikan kemampuan) dari MCU. Penyimpanan flash biasanya ditawarkan dalam jumlah yang sebanding dengan SRAM.
Sebaliknya, jika Anda menggunakan pasar CPU desktop dan mobile, Anda biasanya tidak dapat menemukan MCU / CPU tertentu dengan banyak ukuran SRAM yang berbeda. Alih-alih, skema penetapan harga biasanya dibangun di atas kemampuan eksekusi / kinerja MCU / CPU: frekuensi, jumlah inti, efisiensi daya ...
sumber
Jadi pertama-tama Anda harus mempertimbangkan bahwa 16 KB atau 32 KB adalah jumlah memori yang sangat besar dan sebagian besar mikrokontroler yang dijual saat ini tidak memiliki jumlah RAM yang begitu besar.
Banyak program mikrokontroler membutuhkan 10 atau 50 Bytes memori. Bahkan hal-hal yang lebih kompleks membutuhkan sebagian besar dalam ratusan Bytes.
Pada dasarnya ada tiga kasus penggunaan di mana Anda membutuhkan RAM dalam urutan KBytes: a) Ketika mikrokontroler Anda melakukan grafik b) ketika Anda menggunakan mikrokontroler untuk perhitungan sewenang-wenang besar c) ketika Anda berinteraksi dengan antarmuka PC
Kedua, harap dicatat bahwa jika Anda berbicara tentang RAM mikrokontroler, Anda berbicara tentang cache Level 0 / Level 1. Jika Anda menganggap bahwa Intel Haswell memiliki "hanya" 64 KByte dari cache Tingkat 1, Anda akan mempertimbangkan kembali ukuran RAM mikrokontroler.
Ketiga, Anda dapat melampirkan sejumlah RAM eksternal ke mikrokontroler, terutama lebih dari yang Anda bisa pasang ke CPU.
Secara pribadi saya mengembangkan banyak aplikasi mikrokontroler dan saya tidak pernah membutuhkan memori 1 KB atau bahkan lebih. Saya juga tidak pernah menggunakan RAM eksternal.
Hal-hal berbeda jika kita datang ke ROM (hari ini Flash), karena program dan data Anda ada di ROM. Ada banyak aplikasi di mana Anda melampirkan ROM eksternal ke mikrokontroler Anda, karena Anda memiliki banyak data.
Mari kita periksa sebuah contoh: Mari kita menganalisis aplikasi mikrokontroler dan kami mengambil pemutar MP3 portabel dengan tampilan dan 4 Gigabytes Flash.
Untuk aplikasi ini, Anda memerlukan RAM 1 KB. Itu cukup untuk melakukan pekerjaan itu. Namun Anda dapat menggunakan lebih banyak RAM untuk buffer yang lebih besar untuk mempercepat penulisan USB ke Flash.
Anda melihat perbedaannya sekarang: PC biasa menampung semua program dan data dalam RAM. Karena itu perlu banyak RAM. Untuk mikrokontroler, ini semua ada di Flash / ROM.
sumber
Saat mendesain MCU, Anda harus menghadapi kondisi yang tidak begitu penting pada PC.
Daya tahan
Untuk memilih komponen, Anda tidak perlu mengambil bagian kinerja terbaik atau / dan paling tinggi, tetapi yang telah terbukti berjalan dengan baik setelah beberapa tahun penggunaan, akan tersedia selama beberapa tahun dan mampu berjalan 24/7 untuk tahun. Karena keadaan ini, jika controller ada di pasaran selama beberapa tahun, melakukan tugasnya dengan baik, sepertinya memiliki RAM yang buruk, dibandingkan dengan standar PC saat ini. Tapi bagaimanapun, itu berfungsi dengan baik, dan seharusnya tidak perlu penggantian, jika rekayasa itu baik-baik saja.
Ruang
Unit mikroprosesor secara harfiah adalah mikros. Anda harus mengurangi ruang yang diperlukan ke minimum absolut. Tentu saja, Anda bisa mendapatkan 256 MB pada ruang yang sama dengan chip 64 KB 10 tahun. Di sinilah # 1 sampai ke titik.
Harga
Tidak hanya harga beli, tetapi juga konsumsi daya. Anda tidak ingin merancang MCU yang memiliki kendali atas sistem entri, yang membutuhkan 1000 W, jika saingan Anda dalam bisnis memiliki satu yang hanya membutuhkan 25 W. Dan tentu saja, harga pembelian yang lebih murah (dengan kualitas yang sama) adalah selalu lebih baik.
sumber