Как любитель общего машиностроения, я узнаю больше о мире микроконтроллеров каждый день. Но одна вещь, которую я не совсем понимаю, это значение битовой версии микроконтроллера.
Я использую ATmega8 в течение нескольких месяцев, и он, кажется, отлично работает для моих целей. Я знаю, как такие вещи, как тактовая частота, память, количество выводов ввода-вывода, типы коммуникационных шин и т. Д., Отличают один микроконтроллер от другого. Но я не совсем понимаю значение, скажем, 8-разрядного по сравнению с 16-разрядным по сравнению с 32-разрядным. Я понимаю, что старшая версия позволяет устройству хранить большие числа, но опять же, как это влияет на мое решение? Если я разрабатываю продукт, по которому гипотетический сценарий решил бы, что 8-битный процессор просто не подойдет, и что мне нужно что-то более высокое.
Есть ли основания полагать, что теоретический 32-битный вариант ATmega8 (при прочих равных условиях) будет лучше 8-битной версии (если такое устройство возможно)?
Я могу говорить глупости, но я думаю, что это результат моего замешательства.
Ответы:
Это не ширина числа, которое он может хранить, это ширина, с которой он может работать в одной операции. Обычно (но не обязательно) это также имеет степень корреляции с шириной адресации собственной памяти и, таким образом, объемом памяти, который может быть легко отображен без уродливых обходных путей, таких как сегментация или переключение банков.
Современные 32-разрядные ядра в большинстве случаев превосходят 8-разрядные (гибкость, модель с плоской памятью и, конечно, производительность), за исключением основных систем, устаревших систем, приложений с чрезмерным объемом и ценовым давлением (в противном случае цены обычно лучше соотносятся с на размер памяти чипа, чем с шириной ядра), и побочные эффекты процесса / плотности. Последнее может обеспечить такие вещи, как работа 5 В, или, возможно, в некоторых случаях большую радиационную стойкость или преимущество простоты, если попытаться доказать, что сама конструкция ЦП не содержит логических ошибок. Одним из последних побочных эффектов процесса / возраста для многих любителей является то, что 8-разрядные ядра в DIP-пакетах являются общими, тогда как 32-разрядные устройства в таких пакетах встречаются реже (хотя они и существуют).
источник
Битовое значение - это размер шины данных или канала передачи данных. Это означает, что 8-битный MCU может (по большей части) работать только со значениями от 0 до 255 в каждом такте. Представьте себе, что процессор имеет 8 цифровых линий параллельно. И 16-битный имеет 16 строк, а 32-битный имеет 32 строки. Таким образом, для каждого тактового цикла он читает эти строки данных, и чем больше строк, тем выше значение, с которым вы можете работать за тактовый цикл.
Большие шины данных также позволяют процессору получать доступ к большим адресам памяти.
Это имеет большое значение во время математических операций. 16-битное число дает вам гораздо большую точность, чем 8-битное число. 16-разрядные микроконтроллеры также более эффективны в обработке математических операций над числами, длина которых превышает 8 бит. 16-разрядный микроконтроллер может автоматически работать с двумя 16-разрядными числами, подобно общему определению целого числа. Но когда вы используете 8-битный микроконтроллер, процесс не так прост. Функции, реализованные для работы с такими номерами, потребуют дополнительных циклов. В зависимости от интенсивности обработки вашего приложения и количества вычислений это может повлиять на производительность схемы.
Разница между 8-битным и 16-битным микроконтроллером
источник