Ограничения памяти микроконтроллера [дубликат]

Я действительно не могу понять, почему, когда память нашего персонального компьютера увеличивается в пересчете на гигабайты, память микроконтроллера не увеличивается с такой скоростью как для флэш-памяти, так и для оперативной памяти? С какими ограничениями мы сталкиваемся для обоих видов памяти?

Ответы (3)

Некоторые причины. Во-первых, микроконтроллеры, как правило, не создаются с использованием тех же передовых процессов, что и DRAM и Flash для вашего компьютера, поэтому они не в той же степени используют преимущества технического прогресса. У этих передовых процессов есть недостатки, в том числе допустимое напряжение на выводах ввода-вывода (верхний предел для передовых процессов может составлять 1,8 или 1,2 В, в отличие от 5 или 3,3 В для многих микроконтроллеров), специальные напряжения питания ядра (1,0 или даже 0,9 В), более высокий ток утечки и т. д. Во-вторых, микроконтроллеры обычно строятся на одном куске кремния, поэтому процесс нельзя оптимизировать одновременно для логики, DRAM и флэш-памяти. Микроконтроллеры также обычно используют SRAM вместо DRAM, которая занимает намного больше места, но потребляет меньше энергии и не требует обновления. Также, флэш-память, используемая в микроконтроллерах, обычно является более надежной и менее плотной флэш-памятью NOR. Этот тип флэш-памяти можно считывать напрямую без постобработки. Он также поддерживает больше циклов чтения и записи. Большинство твердотельных накопителей, флэш-накопителей и т. д. используют флэш-память NAND. Этот тип флэш-памяти не так надежен, как флэш-память NOR, особенно когда используются приемы увеличения емкости, такие как многоуровневые ячейки. Необработанная флэш-память на самом деле довольно часто подвержена ошибкам, а ячейки не имеют особенно долгого срока службы, поэтому требуется много дополнительной обработки для исправления ошибок и выполнения выравнивания износа. Это требует много дополнительной логики и потребляет больше энергии. и т. д. используйте флэш-память NAND. Этот тип флэш-памяти не так надежен, как флэш-память NOR, особенно когда используются приемы увеличения емкости, такие как многоуровневые ячейки. Необработанная флэш-память на самом деле довольно часто подвержена ошибкам, а ячейки не имеют особенно долгого срока службы, поэтому требуется много дополнительной обработки для исправления ошибок и выполнения выравнивания износа. Это требует много дополнительной логики и потребляет больше энергии. и т. д. используйте флэш-память NAND. Этот тип флэш-памяти не так надежен, как флэш-память NOR, особенно когда используются приемы увеличения емкости, такие как многоуровневые ячейки. Необработанная флэш-память на самом деле довольно часто подвержена ошибкам, а ячейки не имеют особенно долгого срока службы, поэтому требуется много дополнительной обработки для исправления ошибок и выполнения выравнивания износа. Это требует много дополнительной логики и потребляет больше энергии.

См. также: Почему у микроконтроллеров так мало оперативной памяти?

и: Точные различия между процессами DRAM и CMOS .

На мой взгляд, SRAM потребляет больше энергии, чем DRAM, потому что ток утечки транзисторов больше, чем саморазряд конденсаторов. Я все еще поддерживаю ваш ответ, особенно ссылку на «почему у MCU так мало оперативной памяти»
Бездействующая SRAM потребляет меньше энергии, чем простаивающая DRAM, так как бездействующая DRAM должна обновляться, что потребляет много энергии. Однако возможно, что SRAM может потреблять больше энергии, чем DRAM, при большой нагрузке.
Кроме того, утечка SRAM становится большой проблемой для очень тонких процессов, где транзисторы очень маленькие. В процессах, используемых для большинства микроконтроллеров, утечка значительно ниже.
Провел небольшое исследование: вы правы, SRAM, сделанные с маломощными MOS, довольно эффективны, а MCU часто делаются маломощными. Я обнаружил 160 мкА для 64-мегабитной SRAM в режиме ожидания, 1 мА для 128-мегабитной SDRAM с низким энергопотреблением в режиме самообновления (R1WV6416RBG против MT48LC8M16A2P).

Микроконтроллеры, за некоторыми исключениями, имеют всю свою память — как программную флэш-память, так и ОЗУ — на том же чипе, что и ЦП. Они делают это, чтобы освободить контакты на чипе для встроенной периферии, такой как порты GPIO, UART, шины SPI и I2C, USB, PWM и другие. Это позволяет создавать системы, используя только микроконтроллер и несколько других компонентов. Микроконтроллеры очень дешевы по сравнению с микропроцессорами, например, недорогие PIC стоят от тридцати центов.

Для поддержки внешней памяти требуется адресная шина и шина данных, а для 32-битного микроконтроллера используется сразу 64 вывода, плюс линии управления. Даже ранние микропроцессоры не имели достаточного количества контактов, чтобы справиться с этим, например, 68000 в 64-контактном DIP имел адресные линии от A1 до A23 и линии данных D0-D16. Строки адреса и данных также могут быть мультиплексированы, если сначала зафиксировать адрес и удерживать его, пока выполняется доступ к памяти.

Ранние микропроцессоры, которые использовались на первых ПК и обычно размещались в 40-контактных DIP- корпусах, имели очень мало встроенных периферийных устройств, если таковые вообще были, и, таким образом, могли позволить себе использовать их контакты для линий адреса и данных. Но это уже не проблема, поскольку у микропроцессоров теперь намного больше контактов, чем у микроконтроллеров. Микроконтроллеры могут иметь от восьми до сотни контактов, в то время как некоторые микропроцессоры, такие как один из вариантов Intel i7 , имеют более 2000 контактов . Этот процессор продается в Newegg за 584 доллара, что далеко от 30 центов. Примечание: это не включает стоимость памяти (см. ниже).

Микропроцессоры обычно не имеют встроенной памяти (кроме кэшей). Вместо этого они, как правило, имеют много (ГБ) внешней динамической памяти, обычно подключаемой к разъемам DIMM . У них также обычно нет внутренней постоянной памяти, которая также является внешней. Внешнее ПЗУ используется только для начального загрузочного кода, который считывает загрузку второго уровня с любого используемого устройства (обычно это жесткий диск, но может быть CD, DVD или USB-накопитель).

Конечно, 32-битному микроконтроллеру не нужна 32-битная шина данных; SRAM, достаточно быстрые, чтобы обеспечить 32 бита за 5 нс (200 МГц быстро для микроконтроллера) по 8-битному интерфейсу, не совсем немыслимы. Точно так же адресная шина может быть меньше 32 бит (или максимального размера адреса) за счет повторного использования контактов. Конечно, это усложняет оба конца интерфейса.
@PaulA.Clayton Согласен, в этом и заключалась вся идея 8088 и 68008. Я также добавил дополнительную информацию во второй абзац.

Основная причина, конечно, в цене. Даже медленная автономная оперативная память стоит несколько долларов за гигабайт и поставляется в довольно большой упаковке. Ограничения процесса, которые Алекс описал в своем ответе, вполне реальны и значительно увеличат стоимость встроенной памяти DRAM для микроконтроллера. Даже если бы стоимость была такой же, несколько долларов — это большое увеличение цены MCU. Вам понадобится веская причина для такого обновления, а встроенное управление редко дает вам ее.

Но позвольте мне изменить этот вопрос: с какой стати ПК нужны миллиарды байт памяти? Компьютер наведения Аполлона-11 имел 4 КБ ОЗУ и 72 КБ ПЗУ. Двадцать лет назад вы могли выполнять большинство задач с 4 МБ ОЗУ. Пятнадцать лет назад компьютера с 64 МБ ОЗУ было достаточно для работы в офисе, просмотра веб-страниц, прослушивания музыки и т. д. Разумное количество текста умещалось в десятки килобайт, сжатые изображения хорошего качества — меньше мегабайта, а неподвижные изображения 1920x1080 — меньше. менее десяти мегабайт, и мы по-прежнему в основном имеем дело с такими же данными. Что изменилось, чтобы оправдать использование в тысячу раз большего объема памяти?

Мультимедиа — дисплеи с более высоким разрешением, большим количеством цветов, HD-видео и высококачественным звуком, все они основаны на интенсивных алгоритмах декодирования для адаптации к ограничениям полосы пропускания. Пользовательские интерфейсы пошли на пользу. Операционные системы стали выполнять все больше и больше работы. Игры используют столько оборудования, сколько могут получить. И под всем этим слой за слоем программные платформы, чтобы сделать высокоуровневое программирование проще и надежнее. Несмотря на все это, продажи ПК застопорились, и у пользователей остается все меньше и меньше причин обновлять свое оборудование.

Но все это опционально. Уберите графику, интерфейс и операционную систему, и даже процессор с частотой 16 МГц станет мощной вычислительной машиной. MCU в основном отслеживает события и реагирует на них в режиме реального времени, поэтому для определения состояния не требуется много памяти. Вы программируете на «голом железе» (или, может быть, на минимальной RTOS), поэтому накладные расходы на программное обеспечение минимальны. Существует оборудование для конкретных задач, которое выполняет большую часть высокоскоростной работы, такой как синхронизация и связь, что еще больше снижает требования к ЦП и ОЗУ. Теперь у вас есть система, в которой вы можете выполнять довольно много работы в нескольких килобайтах пространства для программ и данных.

Если вам нужно больше места для хранения, вы можете добавить внешнюю оперативную память или флэш-память или даже отправить данные на удаленный ПК. Но для большинства приложений MCU дополнительная емкость чипа останется неиспользованной. Так зачем платить за это? Ваши конечные клиенты не будут впечатлены объемом оперативной памяти в контроллере мотора или модуле питания.

В качестве примера такого дизайна на ПК взгляните на MemTest86, который поставляется на образе диска размером всего 10 мегабайт, включая Linux!

"Фотографии 1920x1080 меньше мегабайта" ... Правда? Возможно, вы имеете в виду после значительного (возможно, с потерями) сжатия?
JPEG есть, да. Я уточню.