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

Может быть, это скорее проблема восприятия, но похоже, что микроконтроллеры продвинулись как на дрожжах за последние 20 лет почти во всех отношениях: более высокая тактовая частота, больше периферийных устройств, более простая отладка, 32-битные ядра и т. д.

До сих пор часто можно увидеть ОЗУ в 10 КБ (16/32 КБ).

Не похоже, чтобы это могло быть вопросом стоимости или размера напрямую. Это проблема сложности с контроллером RAM выше некоторого порога?

Или просто это обычно не требуется?

Просматривая матрицу деталей у популярного поставщика в Интернете, я вижу один Cortex M4 с 256 КБ менее чем за 8 долларов США, а затем за несколько долларов вы можете найти еще несколько без ПЗУ, но это кажется довольно редким...

Мне точно не нужен микроконтроллер с мегабайтом энергозависимой памяти, но похоже, что кто-то может...

Возможно, есть более техническая причина, но мне кажется, что это может быть вопрос рынков. Вы используете микроконтроллеры, когда у вас есть приложения, которые их используют, когда вам нужно что-то более мощное, вы обычно переходите на более совершенную встроенную систему.
10 КБ. Это огромно. Мой микроконтроллер, который я использую для создания прототипов, имеет 68 байт ОЗУ: en.wikipedia.org/wiki/PIC16x84 .
Однажды я написал программный растеризатор 3D в 86B на Arduino с 2 КБ RAM. Это меня расстроило, потому что если бы у меня было хотя бы 10 или 50 КБ, я мог бы начать подгонку реальных моделей в памяти и сделать что-нибудь интересное.¶ На самом деле у меня был точно такой же вопрос в то время, и я не думаю, решить его достаточно хорошо. Да , SRAM стоит дорого, но процессоры имеют мегабайты кэш-памяти из SRAM, и все же они довольно дешевы. Это похоже на слабое оправдание.
@slebetman по какой причине вам нравится 20-летний микро, когда гораздо лучшие устройства более широко доступны и дешевле?
it seems like somebody mightэто улов здесь, большинство людей этого не делают. Вы точно не собираетесь транслировать Netflix на этом чипе, а 64 КБ обычно более чем достаточно для всего, что вам нужно делать с микроконтроллером . Если вы хотите подняться выше, приобретите полноценную композицию, например, малину.
@GraphicsResearch: Как только вы начнете делать такие вещи, как 3D-рендеринг, процессор, такой как AVR, не сможет его сократить из-за точной проблемы, которую вы указали: памяти. В этот момент вы должны переключиться на что-то вроде ARM.
@markrages: Широко доступен? Это зависит от вашего определения. Здесь PIC16F84 можно купить в любом магазине электроники, в который вы зайдете. В то время как что-то вроде ARM требует заказа у поставщика или получения контрактов на поставку. Кроме того, 16F84 существует в одной форме, которая очень дешева, если вы решите связаться с поставщиком и не нуждаетесь в большом количестве контактов - SIM-карты. Они дешевле обычных 16Ф84. Большинство сим-карт со спутниковым декодером - 16F84s.
В ранние дни MPU полу-трюизм звучал так: «Если вы не можете сделать это в 1K, вы не можете этого сделать». Я был настроен скептически, пока не появились Microchess в 1K. Кому нужно больше?
Процессоры @imallett совсем не дешевы по сравнению с микроконтроллерами. Попробуйте найти один ЦП в ценовом диапазоне ниже доллара (именно там находится большинство микроконтроллеров).
@DmitryGrigoryev Arduino Nano стоит 22 доллара и поддерживает до 2 КБ SRAM. Raspberry Pi 3 стоит 35 долларов и имеет> 2 МБ SRAM. Это, типа, 644⨯ лучше, чем линейное масштабирование. Дело в том, что память не полностью объясняет масштабирование стоимости процессоров, а масштабирование не имеет отношения к объяснению того, почему память для микроконтроллеров обычно остается в диапазоне 10–100 КБ.

Ответы (8)

На это есть несколько причин.

Во-первых, память занимает много места в кремнии. Это означает, что увеличение объема оперативной памяти напрямую увеличивает площадь кремния чипа и, следовательно, стоимость. Большая площадь кремния имеет «двойной удар» по цене: большие чипы означают меньшее количество чипов на пластину, особенно по краям, а большие чипы означают, что каждый чип с большей вероятностью получит дефект.

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

Энергопотребление – еще одна причина. Многие встроенные приложения имеют ограничения по энергопотреблению, и в результате многие микроконтроллеры сконструированы таким образом, что их можно перевести в состояние сна с очень низким энергопотреблением. Чтобы включить спящий режим с очень низким энергопотреблением, используется SRAM из-за ее способности поддерживать свое содержимое с чрезвычайно низким энергопотреблением. SRAM с батарейным питанием может годами сохранять свое состояние от одной батарейки-таблетки 3 В. DRAM, с другой стороны, не может удерживать свое состояние дольше доли секунды. Конденсаторы настолько малы, что горстка электронов туннелирует в подложку или просачивается через транзисторы ячейки. Чтобы бороться с этим, DRAM необходимо постоянно считывать и записывать. В результате DRAM потребляет значительно больше энергии, чем SRAM в режиме ожидания.

С другой стороны, битовые ячейки SRAM намного больше, чем битовые ячейки DRAM, поэтому, если требуется много памяти, DRAM, как правило, является лучшим вариантом. Вот почему довольно часто используется небольшой объем SRAM (кБ в МБ) в качестве встроенной кэш-памяти в сочетании с большим объемом внешней DRAM (МБ в ГБ).

Было несколько очень интересных методов проектирования, используемых для увеличения объема оперативной памяти, доступной во встроенной системе, по низкой цене. Некоторые из них представляют собой пакеты с несколькими чипами, которые содержат отдельные кристаллы для процессора и оперативной памяти. Другие решения включают в себя изготовление контактных площадок на верхней части корпуса ЦП, чтобы чип оперативной памяти можно было установить сверху. Это решение очень умное, так как различные микросхемы оперативной памяти могут быть припаяны поверх процессора в зависимости от требуемого объема памяти, при этом не требуется дополнительная разводка на уровне платы (шины памяти очень широкие и занимают много места на плате). Обратите внимание, что эти системы обычно не считаются микроконтроллерами.

Многим очень маленьким встраиваемым системам в любом случае не требуется много оперативной памяти. Если вам нужно много оперативной памяти, вы, вероятно, захотите использовать процессор более высокого уровня с внешней DRAM вместо встроенной SRAM.

Я видел настоящие микросхемы оперативной памяти с ножками и все, что приклеено/размещено поверх процессоров (которые представляют собой корпуса BGA) и проложены в них! То, что мы делаем для места на доске!! Как указывают русские с их методологией ТРИЗ проектирования, если у вас закончилось место в X и Y, идите в Z :)
+1 За важное различие между SRAM и DRAM. SRAM быстрее и энергоэффективнее, особенно в режиме ожидания, но, как вы заметили, значительно дороже и требует больше места.
Я не думаю, что SRAM - самый дорогой вид оперативной памяти. Комбинация триггеров и мультиплексоров может использоваться в качестве памяти с произвольным доступом, которая обеспечит лучшую производительность, чем SRAM, но при гораздо большей стоимости микросхемы. Размер такой памяти обычно не превышает 32 слов, но такая память может обеспечивать одновременное чтение и запись способами, недоступными для SRAM.
Правда, регистровые файлы и полные триггеры дороже, чем SRAM, но они не используются для системной памяти общего назначения.
@alex.forencich: Не для памяти общего назначения, но, учитывая, что микроконтроллеры Scenix могут выполнять набор инструкций PIC со скоростью 100 MIPS с очень коротким конвейером, я не удивлюсь, если вся (небольшая) оперативная память в этих чипах будет реализована. с провалами.
Я видел работающий HTTP-сервер на MCU со 160 КБ SRAM и без внешней DRAM. Он не мог обрабатывать много параллельных подключений, но работал.

Память, вероятно, занимает большую часть кремниевого пространства, а оперативная память, будучи очень быстрой в использовании, нестабильна и постоянно потребляет энергию для поддержания своего состояния. Если вам не нужно много оперативной памяти, это бесполезно для многих других приложений. Если разработчику встраиваемой системы требуется больше оперативной памяти, он просто получает внешнюю микросхему оперативной памяти и использует интерфейсы периферийной памяти, которые часто используются в микроконтроллерах в наши дни, для очень простого расширения памяти по принципу plug and play. Это причина, по которой я вижу, почему микроконтроллеры в целом все еще имеют разумно мало встроенной оперативной памяти, потому что разумный код приложения и сценарии использования обычно не требуют многого.

Когда вы начинаете переходить к более крупным архитектурам, которые должны полностью работать в операционных системах, ОЗУ становится чрезвычайно важным, однако это выходит за рамки микроконтроллеров и во встроенных компьютерах, больше похожих на те, которые вы видите на платах Beaglebone и Raspberri Pi. дней. И даже на этом этапе процессоры настолько сложны и полны функций, что у них нет места для объема оперативной памяти, необходимого для их задачи, поэтому для их работы вообще требуется внешняя память.

РЕДАКТИРОВАТЬ:

В качестве личного анекдота я недавно сделал небольшую автономную плату управления роботом с целью использовать ее для компьютерного зрения с низким разрешением, такого как обнаружение движения, отслеживание и отслеживание объектов. Для этой задачи я выбрал ARM Cortex M3 с малым числом выводов, и, глядя на выбор Atmel их процессоров серии SAM3, я действительно выбрал самую большую оперативную память, которую смог найти, потому что в этом случае я не хотел покупать внешнюю микросхему оперативной памяти. из-за места на плате и из-за отсутствия сложности высокоскоростной шины памяти RAM на печатной плате. В этом случае для моего конкретного приложения мне бы очень хотелось иметь возможность на много сотен КБ больше ОЗУ, если это возможно.

хорошо, что я даже не подумал о энергопотреблении...
«и оперативная память, будучи энергозависимой, но очень быстрой в использовании, постоянно потребляет энергию, чтобы поддерживать свое состояние» едва ли. Логика CMOS, включая SRAM, потребляет очень мало энергии, когда не изменяется состояние. Обратите внимание, что большинство микроконтроллеров сохраняют содержимое своей оперативной памяти даже в режимах пониженного энергопотребления.
@ChrisStratton: я видел несколько микроконтроллеров от нескольких разных производителей с режимами, которые отключают часть их ОЗУ для экономии энергии, хотя несколько раздражает те, которые я видел, не позволяют включать ОЗУ. без сброса системы. Не уверен, какова цель этого последнего ограничения; если мне нужен большой кусок оперативной памяти для временного хранения во время определенных операций, а не иначе, я не понимаю, почему я не могу включить его, когда это необходимо, и выключить, когда нет, но я не видел такого особенность.
@supercat Возможно, вы преувеличиваете влияние сброса системы. Я работал над микроконтроллером (излишне ограниченным для хобби-проекта), где каждое прерывание вызывало сброс системы. Вам просто нужно было проверить регистр причины сброса в точке входа в вашу программу, ничего страшного. Сброс системы не очистил все регистры и память! На самом деле это был просто сброс указателя инструкций. Очевидно, это зависит от чипа.
@ user253751: Некоторые системы предоставляют средства удержания состояний контактов ввода-вывода посредством внутреннего сброса системы, но многие этого не делают. Я не знаю ни одного, который позволял бы периферийным устройствам, таким как UART, оставаться работоспособными после сброса системы. Кроме того, системы значительно различаются по скорости, с которой они могут выйти из системного сброса, и некоторые стирают большую часть своей ОЗУ при каждом сбросе, возможно, чтобы избежать возможности включения ОЗУ в метастабильном состоянии, что может нарушить работу ЦП, если это читается до того, как это написано.
@supercat хорошо, вы правы, я предполагал, что «сброс системы» означает сброс ядра ЦП с помощью какой-то инструкции или регистра, а не всего чипа. Я полагаю, тогда это будет называться сбросом «ЦП», а не «системным» сбросом, не так ли?
@ user253751: На многих микроконтроллерах даже полный сброс системы можно выполнить быстро, а некоторые могут заморозить состояния выводов ввода-вывода перед выполнением сброса системы и удерживать их замороженными до тех пор, пока код не восстановит состояние резервной логики и снова не включит его связи с внешним миром. Однако не все системы предлагают такую ​​гибкость, и, если я правильно помню, известные мне системы, которые позволяли отключать ОЗУ, этого не делали.

Помимо отличных моментов, поднятых в других ответах, еще одной причиной ограниченного объема оперативной памяти является архитектура микроконтроллера. Для примера возьмем Microchip PIC10LF320, у которого всего 448 байт программной (flash) памяти и 64 байта RAM. Но это, вероятно, стоит всего 25 центов (или меньше) в больших количествах. Ограниченный размер командного слова PIC10 (12 бит) позволяет напрямую адресовать только 128 байт ОЗУ.

Я уверен, что есть другие микроконтроллеры, которые имеют только 8-битную адресную шину, что ограничивает их 256 байтами ОЗУ.

Но большинство микроконтроллеров среднего уровня (даже с 8-битными путями данных) имеют 16-битную адресную шину. Основным архитектурным соображением для этих чипов является то, использует ли чип архитектуру Гарварда или фон Неймана .

Большинство микроконтроллеров использует гарвардскую архитектуру, которая имеет отдельные 16-битные адресные пространства для программной памяти, ОЗУ и отображаемых в памяти адресов ввода-вывода. Таким образом, для них 16-битная адресная шина может получить доступ к 64 КБ (65 536) байт ОЗУ. В архитектуре по-прежнему существует ограничение в 64 КБ, и если кто-то хочет превысить его, необходимо использовать какой-то вид подкачки. Гораздо чаще используется пейджинг для программного пространства, а не для ОЗУ.

Микроконтроллеры, использующие архитектуру фон Неймана, такие как линейка Freescale HCS08, имеют только одно адресное пространство, разделенное между памятью программ, ОЗУ и отображаемым в память вводом-выводом. Чтобы иметь разумный объем программного пространства, это ограничивает объем оперативной памяти обычно до 4 КБ или 8 КБ. Опять же, можно использовать подкачку для увеличения доступной программы или места в ОЗУ.

Однако вы должны иметь в виду, что ядро ​​​​PIC настолько неэффективно для кода, что оно будет потреблять много дополнительной флэш-памяти ни за что. И одна из причин, по которой ему не нужно много оперативной памяти, заключается в том, что он имеет серьезные ограничения, например, на глубину стека вызовов.
@Lundin Согласен, вам нужно очень аккуратно запрограммировать оригинальные PIC10 и PIC12 на ассемблере . Более новые устройства PIC12F и PIC16F теперь имеют 16-уровневый аппаратный стек и 14 новых инструкций. некоторые добавлены только для C, поэтому их гораздо удобнее использовать.
@Lundin: Я думаю, что чипы PIC с 12- и 14-битной длиной инструкций были довольно приличными для плотности кода. В PIC18F плотность кода действительно имела тенденцию к снижению при использовании компилятора HiTech из-за чрезмерного количества переключений банков, которое обычно требовалось.

Поработав некоторое время с микроконтроллерами и небольшими системами, я хотел бы отметить, что довольно часто требуется очень мало оперативной памяти. Помните, что даже несмотря на то, что MCU может выполнять очень многое, в наши дни существует тенденция использовать гораздо больше MCU, чем когда-либо прежде, и использовать больше из них для распределения многих задач в более крупных системах. Это сочетается с тем фактом, что в отличие от раздутых систем разработки, необходимых для программирования в Windows, при разработке микроконтроллеров часто используются очень хорошо оптимизированные компиляторы, чаще всего с очень эффективным исходным кодом C и C++, иногда практически без накладных расходов ОС. В то время как вы вряд ли могли бы написать программу Windows для отображения вашего имени на любом устройстве, не потребляя по крайней мере сотни килобайт, включая ресурсы ОС,

Конечно, есть проблемы со стоимостью и пространством, как указывали другие. Но история здесь такова, что то, что новички в наши дни считают небольшим объемом оперативной памяти, на самом деле немного больше, чем когда-либо прежде, и все это время компоненты и устройства, с которыми MCU должен будет взаимодействовать, сами становятся умнее. Честно говоря, в последнее время я больше всего использовал оперативную память во многих приложениях MCU для коммуникационных буферов, управляемых прерываниями, чтобы освободить MCU для других задач, не опасаясь потери данных. Но хотите верьте, хотите нет, но для обычной логики и вычислительной функциональности микроконтроллеры довольно хорошо подходят для их ограниченных встроенных ресурсов ОЗУ и флэш-памяти, и вы действительно можете сделать многое с очень небольшими затратами.

Имейте в виду, что когда-то известные видеоигры с грубой графикой, но сложной игровой логикой, такие как «PAC Man» и «Space Invaders», обычно создавались на 8K ROMS на машинах, у которых едва было 8 или 16 КБ ОЗУ!

Что насчет SD-карт? Разве карты SDHC не требуют буфера 256 или 512 байт (стандартные/старые карты SD больше не производятся)?
Версия Pac Man для видеокомпьютерной системы Atari 2600 имела 4K ROM, а сама VCS имела 128 байт RAM. Однако многие аркадные автоматы имели довольно приличный объем ПЗУ и ОЗУ по сравнению с домашними компьютерами той эпохи. Я думаю, что у Защитника, например, было 32 КБ или ПЗУ и 64 КБ ОЗУ, хотя 32 КБ ОЗУ были «только для записи» с точки зрения ЦП (процессор помещал туда данные, которые оборудование дисплея синхронизировало с монитором) .
@PeterMortensen Многие SD-карты имеют встроенный процессор для управления флэш-памятью. Некоторые карты имеют полное 32-битное ядро ​​​​ARM, к которому, вероятно, подключено 16 или 32 КБ ОЗУ.
@alex.forencich: Да, но разве интерфейс SPI для работы с SDHC SD-картой не требует буфера на стороне хоста (встроенная система/микроконтроллер) - в отличие от старых карт? То есть битовая адресация больше невозможна для более новых (SDHC) карт? Или это зависит только от файловой системы (побитовая адресация все еще возможна)? Разве новые карты не требуют блочной передачи (и, следовательно, требуют буфера 256 или 512 байт)?
Да, 512Б, насколько я помню. Вы можете просто написать неэффективный драйвер SD-карты, чтобы отбросить первые X байтов данных -> не нужен «большой» буфер.

Помимо отличных характеристик стоимости и производства, на удивление мало спроса на большое количество встроенной оперативной памяти.

Я часто работаю с микроконтроллерами с флэш-памятью в десятки КБ (16 КБ, 32 КБ) и оперативной памятью в диапазоне КБ (1 КБ, 2 КБ). У меня очень часто заканчивается флеш, и почти никогда не заканчивается оперативная память. В большинстве моих проектов я довольно близко подхожу к пределу флэш-памяти, но обычно мне требуется гораздо меньше 20% ОЗУ.

Большинство очень маленьких микроконтроллеров выполняют две разные роли:

  • регулирование и контроль: они должны контролировать часть машины. Даже в случае сложного алгоритма контроллера, который может занимать десятки килобайт кода, требуется очень мало оперативной памяти. Вы управляете физическим процессом и имеете переменные, содержащие несколько физических единиц, и, возможно, несколько переменных в качестве счетчиков циклов. Нет необходимости в большем.

  • обработка данных: в редких случаях, когда вам нужно одновременно хранить большой объем данных, вы можете использовать внешнюю оперативную память. Практически все современные микроконтроллеры имеют встроенную поддержку. Если вам нужна простая программа, использующая много памяти, будет дешевле и меньше использовать небольшой микроконтроллер и внешнюю оперативную память, а не микроконтроллер высокого уровня. Контроллеры с малым количеством портов, маленькой флешкой и большой оперативной памятью никто не производит, потому что на них очень маленький спрос.

Все уже упомянутые причины, безусловно, технически обоснованы и точны. Однако не забывайте, что электроника — это бизнес , а микроконтроллеры — один из самых конкурентных нишевых рынков в электронной промышленности.

Осмелюсь сказать, что фактические причины привязки ценника MCU к объему встроенной SRAM в основном маркетинговые, а не стоимостные:

  • В большинстве конструкций максимально достижимая тактовая частота не является ограничивающим фактором. Вместо этого количество доступной SRAM равно. Не поймите меня неправильно, частота процессора очень важна, однако в рамках определенного сегмента семейства микроконтроллеров вам обычно не предлагают разные модели устройств по разным ценам в зависимости от максимальной частоты процессора. Кроме того, хранилище программ на флэш-памяти является другим ключевым ограничивающим фактором, однако я не буду уделять слишком много внимания флэш-памяти (вопрос касается конкретно SRAM).

  • Объем доступной SRAM напрямую связан с уровнем сложности, который вы сможете встроить в свой микроконтроллер, будь то сторонние библиотеки или ваш собственный развернутый код. Таким образом, это «естественная» метрика для сегментирования на основе ваших цен на MCU. Понятно, что технический заказчик соглашается с тем, что MCU, способный выполнять более сложные задачи (больше SRAM, больше флэш-памяти), должен стоить дороже. Цена здесь является отражением базовой ценности (предоставляемых возможностей) MCU. Флэш-память обычно предлагается в количестве, пропорциональном SRAM.

  • Напротив, если вы возьмете рынок настольных и мобильных процессоров, вы обычно не сможете найти конкретный MCU/CPU с множеством разных размеров SRAM. Вместо этого схема ценообразования обычно строится на основе возможностей исполнения/производительности MCU/CPU: частота, количество ядер, энергоэффективность...

Я думаю, что это, вероятно, точно, но есть ли доказательства? Например, выцарапывать следы, чтобы продать чип А как чип Б?
Эм... интересная мысль. У меня нет доказательств такой практики. Тем не менее, возникает интересный вопрос о базовых производственных затратах. Будет ли это дороже потраченной впустую недвижимости кремниевого чипа (пластины) в случае, если чип большего размера SRAM будет выцарапан до меньшего размера SRAM? Или повышенные затраты на производство и запасы, связанные с производством не одного устройства, а двух? Боюсь, вся электронная промышленность очень разборчива в открытом обсуждении своих затрат. Возможно, мы никогда этого не узнаем.
В качестве доказательства: MT6250 — это многокристальная микросхема, используемая для мобильных телефонов с одной микросхемой, стоит менее 2 долларов в объеме и намного сложнее, чем микроконтроллер, и включает в себя кристалл оперативной памяти 8 МБ. технология SRAM, богатая микроконтроллером.
Это был бы хороший ответ на вопрос «почему цена MCU привязана к объему встроенной SRAM?». Но, похоже, это не отвечает на исходный вопрос. Почему так мало доступных микроконтроллеров с более чем 512 КБ SRAM на кристалле любой ценой? Почему существует так много микроконтроллеров со «странными» размерами SRAM, отличными от степени двойки, когда производители специализированных чипов SRAM, кажется, думают, что снижение затрат на складские запасы делает целесообразным производство специализированных микросхем SRAM только с размерами, равными степени двойки?
@davidcary: Многие микроконтроллеры имеют несколько областей ОЗУ, к которым можно обращаться одновременно и независимо (например, ЦП и DMA). Если бы эти области были одинакового размера, это не дало бы особых преимуществ компоновки по сравнению с тем, чтобы сделать их разными, и для многих приложений объем ОЗУ, доступ к которому будет осуществляться в основном с помощью таких средств, как DMA, будет отличаться от объема, доступ к которому будет осуществляться только через ЦП.

Итак, сначала вы должны учитывать, что 16 КБ или 32 КБ — это огромный объем памяти, и большинство микроконтроллеров, продаваемых сегодня, не имеют такого большого объема ОЗУ.

Многим программам микроконтроллера требуется 10 или 50 байт памяти. Даже более сложные вещи требуют в основном сотни байтов.

В основном есть три случая использования, когда вам нужна оперативная память порядка килобайт: а) когда ваш микроконтроллер выполняет графику б) когда вы используете микроконтроллер для больших произвольных вычислений в) когда вы взаимодействуете с интерфейсами ПК

Во-вторых, обратите внимание, что если вы говорите об оперативной памяти микроконтроллера, вы говорите о кеше уровня 0/уровня 1. Если вы считаете, что Intel Haswell имеет «всего» 64 КБ кэш-памяти уровня 1, вы пересмотрите размер оперативной памяти микроконтроллера.

В-третьих, вы можете подключить к микроконтроллеру любое количество внешней оперативной памяти, особенно даже больше, чем вы можете подключить к процессору.

Лично я разрабатываю множество приложений для микроконтроллеров, и мне никогда не требовалось 1 КБ памяти или даже больше. Я также никогда не использовал внешнюю оперативную память.

Все обстоит иначе, если мы придем к ПЗУ (сегодня Flash), так как ваша программа и данные находятся в ПЗУ. Есть действительно много приложений, в которых вы подключаете внешнее ПЗУ к своему микроконтроллеру, потому что у вас много данных.

Давайте рассмотрим пример: Давайте проанализируем приложение микроконтроллера и возьмем портативный MP3-плеер с дисплеем и 4 гигабайтами флэш-памяти.

Для этого приложения вам может понадобиться 1 КБ ОЗУ. Этого достаточно для работы. Однако вы можете использовать больше ОЗУ для больших буферов, чтобы ускорить запись USB на флэш-память.

Теперь вы видите разницу: обычный ПК хранит все программы и данные в оперативной памяти. Поэтому ему нужно много оперативной памяти. Для микроконтроллера все это находится во Flash/ROM.

Вы недооцениваете использование оперативной памяти во многих приложениях. Не на огромную сумму, но, может быть, в 10-100 раз в зависимости от экземпляра. MP3-плееры должны выполнять цифровую обработку сигнала.
Я хотел бы знать, почему кто-то из вас говорит эти вещи. Какие команды C требуют оперативной памяти. Вместо того, чтобы говорить «этим приложениям требуется больше оперативной памяти», я бы предпочел «этим операциям требуется больше оперативной памяти, потому что…».

При разработке MCU вам приходится сталкиваться с условиями, которые не так важны для ПК.

  1. Долговечность

    Для выбора компонентов не обязательно брать самые лучшие и/или самые высокопроизводительные детали, но те, которые доказали свою надлежащую работу после нескольких лет использования, будут доступны в течение нескольких лет и способны работать 24 часа в сутки 7 дней в неделю. годы. Из-за этого обстоятельства, если контроллер присутствует на рынке несколько лет, исправно выполняя свою работу, у него, по-видимому, недостаточно оперативной памяти по сравнению с сегодняшним стандартом ПК. Но в любом случае, он отлично справляется со своей задачей, и в замене не должно быть необходимости, если техника в порядке.

  2. Космос

    Микропроцессорные блоки буквально микро. Вы должны сократить необходимое пространство до абсолютного минимума. Конечно, вы можете получить 256 МБ на том же месте, что и 64-килобайтные чипы 10-летней давности. Здесь на помощь приходит №1.

  3. Цена

    Не только цена покупки, но и энергопотребление. Вы не хотите проектировать MCU, который контролирует систему начального уровня, которой требуется 1000 Вт, если у вашего конкурента в бизнесе есть система, которой требуется только 25 Вт. И, конечно же, более низкая цена покупки (при том же качестве) всегда лучше.

это действительно мощный микропроцессор!
Я предполагаю, что MCU мощностью 1 кВт не будет оставаться в твердом состоянии очень долго.
Все три пункта чрезвычайно важны в современном дизайне ПК.
@KyranF: Да, разделите оба числа на 100. Но, во всяком случае, он преуменьшил относительную разницу в мощности между высокопроизводительным процессором и микроконтроллерами с низким энергопотреблением для аккумуляторных приложений.