Может быть, это скорее проблема восприятия, но похоже, что микроконтроллеры продвинулись стремительно за последние 20 лет, почти во всех отношениях, более высокой тактовой частоте, большем количестве периферийных устройств, более легкой отладке, 32-битных ядрах и т. Д ...
Все еще часто можно увидеть ОЗУ в десятках КБ (16/32 КБ).
Не похоже, что это может быть вопросом стоимости или размера напрямую. Это проблема сложности с контроллером RAM выше некоторого порога?
Или это просто не требуется?
Просматривая матрицу деталей у популярного интернет-поставщика, я вижу один Cortex M4 с 256 КБ менее чем за 8 долларов США, а затем еще за несколько долларов вы можете найти еще несколько без ROM, но они кажутся довольно редкими ...
Мне точно не нужен микроконтроллер с МБ энергозависимой памяти, но кажется, что кто-то может ...
источник
it seems like somebody might
это загвоздка здесь, большинство людей не делают. Вы не собираетесь передавать потоковую передачу Netflix на этом чипе, а 64K обычно более чем достаточно для всего, что вам нужно сделать с микроконтроллером . Если вы хотите подняться выше, возьмите полноценный комп, например, малину.Ответы:
На это есть несколько причин.
Прежде всего, память занимает много кремниевой площади. Это означает, что увеличение объема оперативной памяти напрямую увеличивает кремниевую площадь чипа и, следовательно, стоимость. Большая кремниевая область оказывает «двойное влияние» на цену: более крупные чипы означают меньшее количество чипов на пластину, особенно по краям, а более крупные чипы означают, что каждый чип с большей вероятностью будет иметь дефект.
Второе - это проблема процесса. Массивы ОЗУ должны быть оптимизированы разными способами, нежели логика, и невозможно отправить разные части одного и того же чипа с помощью разных процессов - весь чип должен быть изготовлен с использованием одного и того же процесса. Существуют полупроводниковые основы, которые более или менее предназначены для производства DRAM. Не процессоры или другая логика, просто прямой DRAM. Для DRAM требуются эффективные по площади конденсаторы и транзисторы с очень малой утечкой. Изготовление конденсаторов требует специальной обработки. Создание транзисторов с малой утечкой приводит к более медленным транзисторам, что является хорошим компромиссом для электроники считывания DRAM, но не очень хорошо для построения высокопроизводительной логики. Создание DRAM на кристалле микроконтроллера означало бы, что вам необходимо каким-то образом отказаться от оптимизации процесса. Большие массивы ОЗУ также более склонны к возникновению неисправностей просто из-за их большой площади, снижения производительности и увеличения затрат. Тестирование больших массивов ОЗУ также занимает много времени, поэтому включение больших массивов увеличит затраты на тестирование. Кроме того, эффект масштаба снижает стоимость отдельных микросхем ОЗУ в большей степени, чем более специализированные микроконтроллеры.
Потребление энергии является еще одной причиной. Многие встроенные приложения ограничены по мощности, и в результате многие микроконтроллеры построены так, что они могут быть переведены в режим ожидания с очень низким энергопотреблением. Для обеспечения очень низкого энергопотребления SRAM используется благодаря своей способности поддерживать содержимое с чрезвычайно низким энергопотреблением. SRAM с батарейным питанием может сохранять свое состояние в течение многих лет от одной батареи 3V кнопки. DRAM, с другой стороны, не может удерживать свое состояние более доли секунды. Конденсаторы настолько малы, что горстка электронов туннелирует наружу и попадает в подложку или протекает через транзисторы ячейки. Чтобы бороться с этим, DRAM должен постоянно считываться и записываться обратно. В результате DRAM потребляет значительно больше энергии, чем SRAM в режиме ожидания.
С другой стороны, битовые ячейки SRAM намного больше, чем битовые ячейки DRAM, поэтому, если требуется много памяти, DRAM, как правило, является лучшим вариантом. Вот почему довольно часто в качестве встроенной кэш-памяти используется небольшое количество SRAM (от КБ до МБ) в сочетании с большим объемом оперативной памяти DRAM (от МБ до ГБ).
Были некоторые очень крутые методы проектирования, используемые для увеличения объема оперативной памяти, доступной во встроенной системе при низкой стоимости. Некоторые из них являются многочиповыми пакетами, которые содержат отдельные матрицы для процессора и оперативной памяти. Другие решения включают в себя изготовление накладок на верхней части корпуса процессора, поэтому чип ОЗУ может быть установлен сверху. Это решение очень разумно, так как различные микросхемы ОЗУ могут быть припаяны поверх ЦП в зависимости от требуемого объема памяти, без дополнительной маршрутизации на уровне платы (шины памяти очень широки и занимают много места на плате). Обратите внимание, что эти системы обычно не считаются микроконтроллерами.
Многие очень маленькие встроенные системы в любом случае не требуют большого объема оперативной памяти. Если вам нужно много оперативной памяти, то вы, вероятно, захотите использовать процессор более высокого класса с внешним DRAM вместо встроенного SRAM.
источник
Память, вероятно, занимает большую часть кремниевого пространства, а оперативность использования ОЗУ очень непостоянна, и она постоянно потребляет энергию для поддержания своего состояния. Если вам не нужно много оперативной памяти, это не полезно для многих других приложений. Если разработчик встроенных систем нуждается в большем количестве ОЗУ, он просто получает внешнюю микросхему ОЗУ и использует интерфейсы периферийной памяти, которые в наши дни часто используются микроконтроллерами, для очень простого расширения памяти «включай и работай». Вот почему я вижу, почему микроконтроллеры в целом все еще имеют достаточно низкую встроенную оперативную память, потому что разумный код приложения и сценарии использования обычно не требуют большого количества.
Когда вы начинаете работать с более крупными архитектурами, которые должны полностью работать в операционных системах, тогда ОЗУ становится чрезвычайно важным, однако это выходит из области микроконтроллеров и встроенных компьютеров, более похожих на те, которые вы видите на платах Beaglebone и Raspberri Pi. дней. И даже на этом этапе процессоры настолько сложны и настолько полны функций, что у них нет места для объема ОЗУ, необходимого для их задачи, поэтому внешняя память практически необходима для их работы.
РЕДАКТИРОВАТЬ:
В качестве личного анекдота я недавно создал небольшую автономную панель управления роботом, чтобы использовать ее для компьютерного зрения с низким разрешением, такого как обнаружение движения, отслеживание и отслеживание объектов. Я выбрал ARM Cortex M3 с низким числом выводов для этой задачи и, глядя на выбор Atmel своих процессоров серии SAM3, я действительно выбрал самую высокую оперативную память, какую только мог найти - потому что в этом случае я не хотел покупать ИС внешней памяти. из-за свободного места на плате и не желающих усложнять высокоскоростную шину оперативной памяти на печатной плате. В этом случае для моего конкретного приложения мне бы очень хотелось иметь возможность на много сотен КБ больше оперативной памяти, если это возможно.
источник
Помимо замечательных моментов, затронутых в других ответах, еще одной причиной ограниченного объема оперативной памяти является архитектура микроконтроллера. Например, возьмем микрочип PIC10LF320, который имеет только 448 байтов памяти программ (флэш-памяти) и 64 байта оперативной памяти. Но это, вероятно, стоит всего 25ȼ (или меньше) в больших количествах. Ограниченный размер командного слова PIC10 (12 бит) позволяет ему напрямую адресовать только 128 байтов ОЗУ.
Я уверен, что есть другие микроконтроллеры, которые имеют только 8-битную адресную шину, ограничивая их до 256 байтов оперативной памяти.
Но большинство микроконтроллеров среднего уровня (даже с 8-битными трактами данных) имеют 16-битную адресную шину. Основное архитектурное соображение для этих чипов заключается в том, использует ли чип архитектуру Гарварда или фон Неймана .
Большинство микроконтроллеров используют архитектуру Гарварда, которая имеет отдельные 16-битные адресные пространства для памяти программ, оперативной памяти и адресов ввода-вывода с отображением в памяти. Таким образом, 16-разрядная адресная шина может получить доступ к ОЗУ объемом до 64 КБ (65 536). В архитектуре все еще есть ограничение в 64 КБ, и если кто-то хочет превысить это значение, то следует использовать какой-то вид подкачки. Гораздо чаще встречается разбиение на страницы для программного пространства, а не для оперативной памяти.
Микроконтроллеры, использующие архитектуру Von Neumann, такие как линия Freescale HCS08, имеют только одно адресное пространство, разделенное между памятью программы, ОЗУ и отображаемым в памяти вводом / выводом. Чтобы иметь достаточный объем программного пространства, это ограничивает объем оперативной памяти до 4K или 8K. Опять же, можно использовать пейджинг для увеличения доступной программы или памяти.
источник
Проработав некоторое время с микроконтроллерами и небольшими системами, я хотел бы отметить, что довольно часто требуется очень мало оперативной памяти. Помните, что, несмотря на то, что MCU может быть в состоянии выполнить большие задачи, в наши дни существует тенденция использовать гораздо больше MCU, чем когда-либо прежде, и использовать их больше для распределения многих задач в более крупных системах. Это в сочетании с тем фактом, что в отличие от раздутых систем разработки, необходимых для программирования в Windows, для разработки MCU часто используются очень хорошо оптимизированные компиляторы, чаще всего с очень эффективным исходным кодом C и C ++, иногда практически без издержек на ОС вообще. Хотя вы вряд ли могли бы написать программу Windows для отображения своего имени на любом устройстве, не потребляя по крайней мере сотен килобайт, включая ресурсы ОС,
Несомненно, есть проблемы стоимости и места, как другие указали. Но история здесь в том, что то, что новички в наши дни считают небольшим объемом оперативной памяти, на самом деле намного больше, чем когда-либо прежде, и в то время как компоненты и устройства, с которыми MCU придется взаимодействовать, сами становятся умнее. Честно говоря, мое самое большое использование ОЗУ во многих приложениях MCU в последнее время было связано с буферами связи, управляемыми прерываниями, чтобы освободить MCU для других задач, не опасаясь потери данных. Но, хотите верьте, хотите нет, для обычной логики и вычислительной функциональности микроконтроллеры довольно хорошо соответствуют их ограниченным встроенным ОЗУ и флэш-ресурсам, и вы действительно можете многое сделать с очень небольшим.
Имейте в виду, что когда-то известные видеоигры с грубой графикой, но сложной игровой логикой, такие как «PAC Man» и «Space Invaders», обычно делались в 8K ROMS, на машинах, которые имели только 8 или 16 КБ ОЗУ!
источник
Помимо отличных моментов о стоимости и производстве, существует удивительно небольшой спрос на большое количество встроенной оперативной памяти.
Я часто работаю с микроконтроллерами со вспышкой в десятки кБ (16 кБ, 32 кБ) и оперативной памятью в диапазоне кБ (1 кБ, 2 кБ). У меня очень часто заканчивается флэш-память, и почти никогда не хватает памяти. В большинстве моих проектов я достаточно близок к пределу флэш-памяти, но обычно требуется гораздо меньше 20% оперативной памяти.
Большинство очень маленьких микроконтроллеров выполняют две разные роли:
регулирование и контроль: они должны контролировать часть техники. Даже в случае сложного алгоритма контроллера, который может занимать десятки килобайт кодового пространства, требуется очень мало ОЗУ. Вы управляете физическим процессом, и у вас есть переменные, содержащие несколько физических единиц и, возможно, несколько переменных в качестве счетчиков цикла. Больше не нужно.
обработка данных: в редких случаях вам необходимо одновременно хранить большое количество данных, вы можете использовать внешнюю память. Практически все современные микроконтроллеры имеют встроенную поддержку. Если вам нужна простая программа, использующая много памяти, будет дешевле и меньше использовать небольшой микроконтроллер и внешнюю оперативную память, а не микроконтроллер высокого уровня. Никто не производит контроллеры с небольшим количеством портов, небольшой флэш-памятью и большим объемом оперативной памяти, потому что на них так мало спроса.
источник
Все уже упомянутые причины, конечно, технически обоснованы и точны. Однако не забывайте, что электроника - это бизнес, а микроконтроллеры - один из самых конкурентоспособных нишевых рынков в электронной промышленности.
Я осмелюсь сказать, что фактические причины для привязки ценника MCU к количеству встроенной SRAM являются в основном маркетинговыми, а не стоимостными причинами:
В большинстве конструкций максимально достижимая тактовая частота не является ограничивающим фактором. Вместо этого количество доступных SRAM составляет. Не поймите меня неправильно, частота ЦП чрезвычайно важна, однако в рамках определенного семейного сегмента MCU вам обычно не предлагают разные модели устройств по разным ценам в зависимости от максимальной частоты ЦП. Кроме того, хранение программ Flash является еще одним ключевым ограничивающим фактором, однако я не буду слишком фокусироваться на Flash (вопрос направлен именно на SRAM).
Количество доступной SRAM напрямую связано с уровнем сложности, который вы сможете встроить в свой MCU, будь то с помощью сторонних библиотек или с вашим собственным развернутым кодом. Так что это «естественный» показатель для сегментирования на основе ваших цен MCU. Для технического заказчика понятно, что MCU, способный выполнять более сложные задачи (больше SRAM, больше флэш-памяти), должен стоить дороже. Цена здесь является отражением базовой ценности (возможностей доставки) MCU. Флэш-память обычно предлагается в количестве, пропорциональном SRAM.
Напротив, если вы выходите на рынок процессоров для настольных ПК и мобильных ПК, вы обычно не можете получить конкретный MCU / CPU со многими различными размерами SRAM. Вместо этого схема ценообразования обычно строится на основе возможностей исполнения / производительности MCU / CPU: частота, количество ядер, энергоэффективность ...
источник
Итак, сначала вы должны учитывать, что 16 КБ или 32 КБ - это огромный объем памяти, и большинство микроконтроллеров, продаваемых сегодня, не имеют такого большого объема ОЗУ.
Многим программам микроконтроллера требуется 10 или 50 байт памяти. Еще более сложные вещи нужны в основном в сотнях байтов.
В основном, есть три варианта использования, когда вам требуется ОЗУ в порядке килобайт: а) когда ваш микроконтроллер выполняет графику б) когда вы используете микроконтроллер для больших произвольных вычислений в) когда вы взаимодействуете с интерфейсами ПК
Во-вторых, обратите внимание, что если вы говорите об оперативной памяти микроконтроллера, вы говорите о кеше уровня 0 / уровня 1. Если вы считаете, что Intel Haswell имеет «только» 64 КБайт кэша уровня 1, вы пересмотрите размер оперативной памяти микроконтроллера.
В-третьих, вы можете подключить любое количество внешней оперативной памяти к микроконтроллеру, особенно даже больше, чем к центральному процессору.
Лично я разрабатываю много приложений для микроконтроллеров, и мне никогда не требовалось ни 1 КБ памяти, ни даже больше. Я также никогда не использовал внешнюю оперативную память.
Все будет иначе, если мы перейдем к ROM (сегодня Flash), поскольку ваша программа и данные находятся в ROM. Существует очень много приложений, в которых вы подключаете внешнее ПЗУ к вашему микроконтроллеру, потому что у вас много данных.
Давайте рассмотрим пример: давайте проанализируем приложение микроконтроллера и возьмем портативный MP3-плеер с дисплеем и 4 гигабайтами флэш-памяти.
Для этого приложения вам может понадобиться 1 КБ ОЗУ. Этого достаточно, чтобы сделать работу. Однако вы можете использовать больше ОЗУ для больших буферов, чтобы ускорить запись с USB на Flash.
Теперь вы видите разницу: на обычном ПК все программы и данные хранятся в оперативной памяти. Поэтому ему нужно много оперативной памяти. Для микроконтроллера это все во Flash / ROM.
источник
При разработке MCU вы должны столкнуться с условиями, которые не так важны для ПК.
долговечность
Чтобы выбрать компоненты, вы не обязательно выбираете лучшие и / или самые высокопроизводительные компоненты, но те, которые зарекомендовали себя правильно после нескольких лет использования, будут доступны в течение нескольких лет и способны работать 24/7 для года. Из-за этого обстоятельства, если контроллер работает на рынке в течение нескольких лет, он отлично справляется со своей работой, и, похоже, у него недостаточно оперативной памяти по сравнению с сегодняшним стандартом для ПК. Но, в любом случае, он отлично справляется со своей работой, и в замене не должно быть необходимости, если проектирование прошло успешно.
Космос
Микропроцессорные устройства в буквальном смысле слова являются микросхемами. Вы должны сократить необходимое пространство до абсолютного минимума. Конечно, вы можете получить 256 МБ на том же месте, что и 10-летние чипы на 64 КБ. Вот где # 1 приходит к точке.
Цена
Не только покупная цена, но и энергопотребление. Вы не хотите проектировать MCU, который контролирует систему входа, которая требует 1000 Вт, если у вашего конкурента в бизнесе есть такая, которая требует только 25 Вт. И, конечно, более низкая цена покупки (при том же качестве) всегда лучше
источник