Каково максимальное количество кодов операций для вопроса, ответ - вариант c, но я думаю, что это вариант d, потому что, каждый адрес определяет каждую ячейку памяти, есть 16 строк адреса, что означает 2 ^ 16 адресов, т.е. 2 ^ 16 ячеек памяти.
Таким образом, если каждое местоположение содержит один код операции, всего 2 ^ 16 местоположений содержат 2 ^ 16 кодов операций, и это максимальное количество кодов операций, но ответ дается как c, который равен 2 ^ 12. Как это возможно?
microprocessor
Chiduruppula Sharath Kumar
источник
источник
Ответы:
Все варианты неверны . Максимальное количество (уникальных) кодов операций, которые может выполнить процессор, не ограничено шириной шины.
Обычно 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).
Так как ширина шины инструкций полностью произвольна, максимально возможное количество кодов операций.
источник
О максимальном количестве кодов операций действительно можно подумать несколькими способами:
Это может быть получено из ширины инструкции, а не из ширины шины данных. Обычно код операции помещается в один доступ к памяти, и тогда ответ 2 ^ 12. Но процессор может реализовать процесс многократного декодирования кода операции, чтобы расширить число возможных кодов операции за пределы 2 ^ 12.
Максимальное количество инструкций (содержащих коды операций), которые процессор может адресовать напрямую, ограничено шириной адресной шины (2 ^ 16). Однако косвенно процессор может быть способен адресовать больше памяти, например, код операции может облегчить обмен страницами или подобную операцию для получения инструкций из другого источника.
источник
Вы правы, что смущены этим вопросом - он очень плохо написан.
Однако я подозреваю, что целью этого вопроса является определение размера командного слова для машины. Учитывая предоставленные очень неполные данные, это должно соответствовать ширине шины данных ; Ширина адресной шины определяет максимальный размер основной памяти.
На практике поле «код операции» инструкций данного компьютера часто значительно меньше самой инструкции, но инструкция может быть шире, чем шина данных.
Старый Motorola 68008 является тому примером - это была недорогая версия 68000 с 8-битной шиной данных, но в ней использовались те же 16-битные слова инструкций, в которых обычно 7 бит определяют код операции (остаток идентифицировать регистры источника и назначения, а также режим адресации, все из которых должны рассматриваться как операнды , а не как код операции ). Если вы включите биты режима адресации в код операции, как это делают некоторые, это составит 10-разрядное поле кода операции. Фактические инструкции могут быть значительно длиннее в некоторых режимах адресации.
источник
Edson DeCastro разработал почти такой же компьютер, как PDP-8, с 15 адресами и 12 линиями данных.
Таким образом, ответ на заданный вопрос - 574 кода операции, потому что у PDP-8 было 284 кода операции, а Эд только наполовину сумасшедший.
источник