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