Все варианты неверны . Максимальное количество (уникальных) кодов операций, которые может выполнить процессор, не ограничено шириной шины.
Обычно 12+-битный ЦП рассчитан на одну команду для каждого слова данных, чтобы он мог читать большинство инструкций за один раз. Таким образом, нормальный процессор должен быть спроектирован до предела 2 ^ 12 кодов операций.
Существующие архитектуры ЦП, которые имеют более 2 ^ 12 = 4096 кодов операций, очень редки просто потому, что вряд ли когда-нибудь понадобится столько - слишком много, чтобы учиться, слишком много, чтобы быть действительно полезным, слишком много потерянного дорогостоящего пространства кремния.
Обновление : как отмечалось в комментариях, все возможные варианты набора команд x86 могут фактически составлять более 6000 в зависимости от того, как вы рассчитываете! Это скорее исключение.
Однако для 4-битного процессора 2 ^ 4 = 16 инструкций очень часто недостаточно, поэтому у многих таких процессоров их больше.
Может быть несколько способов и причин, по которым ЦП может включать больше кодов операций, чем вписывается в шину данных, включая:
Распространение слов
Процессору не нужно читать команду в одном цикле данных - он может использовать несколько последовательных циклов. На самом деле большинство процессоров этого не делают - хотя его чаще используют для аргументов команд, а не для расширения пространства кода операции.
Пример: intel 4004 имеет только 4 строки, которые мультиплексируются как строки данных / адресов, 4-битное слово данных, но более 40 кодов операций в 8-битных инструкциях.
Префиксы и суффиксы
Процессор (CISC) может иметь столько префиксов и суффиксов команд, сколько ему нужно.
Они имеют префикс к реальной инструкции, чтобы изменить то, что она делает - немного или полностью.
Это зависит от вашего определения «уникальный код операции». Если предположить, что какая-либо часть инструкции, которая не является данными, является частью кода операции, их общее число будет включать все возможные варианты. Однако некоторые считают, что эти аффиксы являются отдельными частями инструкции.
Пример: процессоры Intel x86 на самом деле не имеют кодов операций 4M. Однако, если считать все префиксы частью кода операции, современные процессоры позволяют выполнять инструкции длиной до 15 байт - это МНОГО возможных кодов операций. Хотя многие просто будут делать то же самое - так что это зависит от определения того, что они являются «уникальными».
Режимы
Процессор может иметь несколько режимов работы, в которых он может иметь совершенно другой набор кодов операций.
Примеры: intel x86_64 имеет 32-битный (реальный / v86 / защищенный) и 64-битный режимы, которые имеют различные коды операций. Процессоры ARM могут иметь 32-битные ARM и 16-битные режимы большого пальца.
Мультиплексирование битов шины
Вопросы задают «линии данных» и «адресные линии», однако как внутренняя шина данных, так и внутренняя адресная шина могут быть шире, чем количество фактических шинных линий.
Данные мультиплексированной шины отправляются последовательно, то есть первая половина, затем вторая половина. Процессор сохраняет его в полноразмерных внутренних регистрах и работает с ними.
Это часто делается для того, чтобы снизить затраты и / или размер физической площади чипа.
Примерами являются Intel 4004, все, что находится на шине данных LPC, и NEC VR4300, процессор Nintendo64, который имел только 32-строчную шину данных.
Нет параллельной шины
Как продолжение предыдущего пункта, ЦП даже не нужно выставлять параллельную шину вообще.
Процессор может легко выставлять только последовательную шину, такую как I2C, SPI и т. Д.
Возможно, создание такого выделенного ЦП не очень выгодно, но многие микроконтроллеры с низким числом выводов (которые включают в себя как ЦП, так и память) созданы таким образом, чтобы сохранить эти ценные выводы для чего-то более полезного. Например, чипы atmel ATTINY4 / 5/6/10 имеют всего 6 контактов, два для питания, один для сброса, три универсальных. Инструкции отправляются через собственный трехстрочный интерфейс последовательно.
В зависимости от вашего определения микроконтроллера, он может считаться микропроцессором или может быть запрограммирован на работу с ним (т.е. имитировать выделенный ЦП с последовательной шиной или шинами).
Этот вопрос ясно говорит о том, что какая-то шина данных ОБНАРУЖЕНА, но не параллельная шина. Теоретически, 12-строчная шина данных может состоять из одной последовательной строки данных и 11 вспомогательных линий / линий заземления / состояния , хотя это, вероятно, не очень разумная идея.
Специальный учебный автобус
На самом деле процессору даже не нужно принимать инструкции на тех же линиях шины, что и данные.
Это может легко иметь место, когда ALU представляют собой дискретные микросхемы, а не часть микропроцессора, но в большинстве случаев экономически неэффективны.
Но ничто не мешает вам реализовать процессор с выделенными линиями только для инструкций. Такой ЦП может быть полезен, когда необходимо выполнить одну операцию над массивом данных (SIMD).
Так как ширина шины инструкций полностью произвольна, максимально возможное количество кодов операций.