Каналы передачи данных микроконтроллеров всегда имеют степень 2: 4-битные, 8, 16, 32-битные и т. Д. Даже PIC, использующие инструкции 12-битной ширины, являются 8-битными контроллерами. Почему? Есть ли какое-то преимущество в дизайне? Что не так с 12-битной шиной данных или 7-битным контроллером ?
edit
7-битный не имеет особого смысла, но именно это заставило меня задуматься над вопросом. Ответы относятся к 8-битной традиции. Но 16-разрядный не является 8-разрядным, а 24-разрядный может обрабатывать 8-разрядные данные так же хорошо, как и 16-разрядные, верно? Почему они пропустили 24-битные, чтобы перейти на 32-битные?
microcontroller
architecture
Федерико Руссо
источник
источник
Ответы:
Традиция имеет сильную тягу. Но так же совместимость. Практически каждый существующий формат файла и коммуникационный протокол работают на байтах. Как вы справляетесь с этим в вашем 7-битном микроконтроллере?
PIC сходит с рук, когда пространство инструкций полностью отделено и заранее запрограммировано извне. Есть некоторая ценность в побитовом наборе инструкций, так как это единственное, что вы можете контролировать сами, как разработчик микропроцессора.
Если вы хотите экстремальную архитектуру, вы могли бы кодировать набор команд Хаффманом, давая вам битовую длину переменной длины .
источник
Разумный минимум 4 бита:
0-9 Для числовых данных необходимо 4 бита
0-9 = 10 слов.
Следующий максимальный размер двоичного слова = 4 бита = 16 возможных слов.
Таким образом, данные BCD (двоично-десятичный код) = 4 бита
8 бит логический следующий переход
0-9, az, AZ = 10 + 26 + 26 = 62 слова.
Может обрабатывать с 7 битами = 128 слов.
8 примерно так же просто, как 7, и позволяет использовать 2 x 4 бита, поэтому числовые данные могут быть упакованы по 2 на 8 бит.
Тогда 12 бит (не 16)?:
Следующий логический размер up = 12 бит, и ранний и очень успешный PDP-8 использовал 12 бит. 12 битов, используемых для данных и программ, позволяют 2 ^ 12 = 4096 адресных местоположений. Как, возможно, однажды сказал Билл Гейтс, «4K памяти должно быть достаточно для всех».
Следующее семейство PDP-11 использовало 16 битов.
Удвоение для совместимости.
Если вы хотите взаимодействовать с системами на более низких и более высоких уровнях, и если вы хотите иметь более способные устройства в одном семействе, то возможность обрабатывать 2 слова меньшей системы в пределах более крупного системного слова имеет большой смысл.
НО
Исключения, которые подтверждают правило:
«Всегда» - это такое сильное слово :-)
1-битные, 12-битные, 18-битные, 36-битные примеры ниже.
18- и 36-битные машины никогда не были микроконтроллерами.
1 и 12 бит были.
Однобитовая система, упомянутая ниже, действительно является системой "случайных битов, как вы считаете нужным". Однобитовое слово данных - это, по сути, флаг go / no-go, генерируемый вычислениями, который используется для включения или отключения активности программы. Счетчик программ - это счетчик повышений, который циклически перемещается по памяти с включением или отключением кода по мере необходимости. Очень, очень, очень противный. К моменту появления на рынке 8-разрядные процессоры дня были уже достаточно зрелыми, и 1-разрядный процессор никогда не имел особого смысла. Я не знаю, сколько пользы он когда-либо получил.
1-битный !!!:
Motorola MC14500B Я получил почетное упоминание Джека Гэнселла за лучшее описание этого устройства :-)
Лист данных - нажмите на страницу для загрузки PDF.
12-бит:
Harris HM-6100 aka Intersil IM6100 - 12-битный миникомпьютер wannabee] ( http://www.classiccmp.org/dunfield/other/i6100cfs.pdf )
Основан на весьма успешном 12-битном миникомпьютере DEC PDP-8.
обзор
Программная память и память данных занимают одно и то же пространство памяти. Общий объем адресуемой памяти составляет 4 тыс. Слов. Размер слова составляет 12 бит. У 6100 нет стековой памяти.
Объем памяти программы составляет 4 тыс. Слов. Все условные инструкции позволяют процессору пропускать только следующую инструкцию. Чтобы условно перейти к произвольному адресу в памяти, когда определенное условие выполнено, код должен сначала выполнить команду «пропустить, если условие не выполнено», а после инструкции пропуска поставить прямую или косвенную инструкцию безусловного перехода. Безусловные инструкции можно использовать для прямого перехода на текущую страницу (127 слов) или косвенного перехода на весь объем памяти (4 тыс. Слов). 6100 поддерживает вызовы подпрограмм, но из-за недостатка стековой памяти адрес возврата для подпрограмм сохраняется в памяти . Нет инструкции «возврат из подпрограммы» - подпрограмма должна использовать косвенный переход, чтобы вернуться обратно к вызывающей стороне.
Объем памяти данных составляет 4 тыс. Слов. Доступ к данным можно получить непосредственно на нулевой странице (0000h - 007Fh) или на текущей странице из 127 слов. Данные могут быть доступны косвенно в любом месте в 4 K слов памяти.
Википедия - Intersil 6100
У PDP-8 & Intersil 6100 было 16 очень богатых инструкций. НЕТ инструкции по отвлечению.
Инструкция ADD называется TADD, чтобы напомнить вам, что это дополнение с добавлением 2-х, поэтому нам не нужно никаких ... вычитаний.
18 бит, 36 бит другое - семейство PDP:
Wikipedia Программируемый обработчик данных
PDP1 - 18 бит
PDP2 - 24 бит умерла
PDP3, PDP6 - 36 бит
Руководство пользователя PDP-12 (предварительное - Вау.
Несмотря на нумерацию, это предварительно pre PDP16 - PDP-8 на стероидах с возможностью аналогового ввода / вывода - и машинный лабораторный аппарат. Я мог бы иметь его бесплатно, если бы захотел, но он не был бы установлен в любом месте разумно. - или нечувствительным
. во- первых компьютерных игр я когда - либо играл , была на одном из них
. Космические войны
. машина была в два небольших номера размера шкафов
Вы хотите открыть дверь и войти внутрь , чтобы сделать вещи , чтобы его внутренности.
источник
Потому что большая часть мира сошлась на хранении, обмене данными и другой обработке компьютерных данных кусками по 8 бит. Это не официальный стандарт, но он очень строгий.
В прошлом были машины, которые обрабатывали кратные, отличные от 8 битов в своих путях данных. Примеры включают CDC Cyber 6000 и 7000 серий и PDP-8. Машины CDC использовали 6-битные байты, а PDP-8 имел слово 12-битной ширины без специального способа обработки только 8-битных величин. Конечно, в этой категории были и другие машины. Причина, по которой вы не часто слышите о них сегодня, состоит в том, что люди решили, что им нужны машины, которые могут хорошо обрабатывать свои 8-битные байты, и это то, что делают производители. Как вы думаете, насколько хорошо будет продаваться 7-битный микроконтроллер? Кто бы это ни сделал, его высмеют, а потом найдут мало клиентов. Это было бы глупым деловым предложением.
Вы можете увидеть некоторые дополнительные доказательства не 8-битных «байтов», если вы посмотрите на интернет-стандарты. Они сознательно используют термин «октет», потому что тогда не было универсального соглашения о том, что байт всегда был 8 битами. В настоящее время значение байта стало означать 8 двоичных разрядов, и вы будете смеяться за городом, если попытаетесь использовать его по-другому.
источник
Причиной такого общего выбора дизайна является небольшая эффективность и большая обратная совместимость.
Если мой канал данных имеет ширину 7 бит, мне нужно 3 бита для представления любой данной строки этого пути. Так как я собираюсь потратить три бита, я мог бы использовать их полностью, как для эффективности, так и для устранения мертвого пути, который может привести к аварийной ошибке.
Наиболее распространенные типы данных основаны на 4-битном клочке, а большинство - на 8-битном байте. Выбирая альтернативную базу, вам, возможно, придется прибегнуть к странному и неэффективному коду для работы с общими типами данных. Например, моему 7-битному компьютеру потребовалось бы 5 областей памяти для работы с любым из 32-битных чисел, включая числа с плавающей запятой, которые очень распространены в современной промышленности.
Если бы моя машина не зависела от внешних данных, я, вероятно, мог бы обойтись без нее, но такие стандартные устройства поддерживают контроллеры двигателей, датчики температуры, датчики температуры и большинство интерфейсных устройств и датчиков реального мира.
Дело не в том, что невозможно подключить 7-битный компьютер к USB-порту, но вы собираетесь провести дополнительное тестирование и выполнить намного больше инструкций, обрабатывающих все эти 5-значные транзакции для 32-битных типов данных, чем если бы вы добавил еще один бит к вашему пути данных и соответствовал остальной части отрасли.
Он в значительной степени начал и слился с текущей формой из-за эффективности адресации битов, так что это является основной причиной. Например, если бы вы создали тринарный компьютер (3 состояния, а не 2 состояния на бит), вы бы увидели наиболее эффективные размеры битов в 3, 9, 27, 81 и т. Д. Вы также увидите менее эффективные попытки 18, 24, 33 и 66, чтобы обеспечить более тесную совместимость с бинарными системами.
источник
Это проще, потому что позволяет вам указать количество бит в количестве бит. Это может показаться странным приемом, но наборы команд делают это постоянно. Представьте себе, например, инструкцию «сдвиг влево»:
Если у вас есть число битов, которое является степенью двойки, вы можете кодировать операнд в фиксированное количество бит без каких-либо потерь.
источник
arr[i >> 3] >> (i & 7)
или путем проверки,arr[i >> 3] & mask[i & 7]
является ли он ненулевым (некоторые ЦП предпочитают один подход другому). Делать такие вещи с размером слова не в два раза будет намного сложнее.Что касается моих знаний в области цифровой электроники, то причина, по-видимому, вполне очевидна. Дело в том, что для всех цифровых систем мы используем концепцию двоичной системы счисления. Это означает, что у нас есть только два уровня работы, то есть 0 или 1. Поэтому любая комбинация, которая возможна на аппаратном уровне, должна быть комбинацией 0 и 1. Поэтому, если нам нужно выполнить 4 разные задачи, нам понадобятся 2 переменные, для 32 задач нам понадобится 5 переменных и т. Д. (Логика 2 ^ n, где n - количество переменных). Итак, поскольку мы имеем дело только с двумя уровнями, мы обязаны иметь комбинацию только в виде степени 2, что, следовательно, составляет 2,4,8,16,32,64,128,256 и т. Д. ...... ..
источник
Я признаю, что я только просмотрел другие ответы, но одна ключевая деталь кажется только косвенной: логическая скорость и компактность.
Если бы вы собирали непрерывные 24-битные значения, а также имели возможность обращаться к ним в режиме байтовой адресации, то логика обработки должна была бы делиться на 3 для доступа к словам. Деление в логике довольно дорогое (просто проверьте ваш любимый процессор - инструкция деления медленная), если только оно не определено степенью 2; в этом случае вы просто игнорируете младшие биты (что программное обеспечение делает, сдвигая биты). Это та же фундаментальная причина, по которой мы предпочитаем согласованный доступ.
Конечно, возможно спроектировать процессор в этих пределах, возможно даже закодировать доступ к словам в качестве четвертого значения адреса (поскольку для выбора из трех байтов необходимы два бита), и я не был бы ужасно удивлен, увидев такое в DSP (например, графический процессор); но это не норма для процессоров. Это также привело бы к странному 4/3-му шагу для доступа к байтовому массиву, который потребовал бы обработки, аналогичной числам BCD. Таким образом, становится намного эффективнее обрабатывать массив 3х8-битных векторов вместо 8-битных байтов.
источник