Терминология микрокода: существуют ли названия для разных "стилей" микрокода?
Я смотрел на микрокод и задавался вопросом о терминологии.
"Классическим" использованием микрокода является замена логики управления процессором микрокодом для генерации сигналов управления процессором. Но есть некоторые системы, которые идут намного дальше и реализуют низкоуровневые части операционной системы в микрокоде, в частности, Xerox Alto, но также такие системы, как Datapoint 6600 и в меньшей степени IBM 360. В этих системах выполняются инструкции это всего лишь одна задача для микрокода, а не точка микрокода. Есть ли слово для этого стиля микрокода? "Микропрограммированный" почти подходит, но в целом используется для программирования микрокодов.
Второе измерение, которое меня интересует: в некоторых системах микроархитектура во многом совпадает с архитектурой уровня программиста, возможно, с несколькими дополнительными внутренними регистрами, например, 68000. Но в других системах видимая архитектура по существу до неузнаваемости в микроархитектуре. Например, разные модели IBM 360 имеют совершенно разные микроархитектуры, но идентичные архитектуры уровня программиста. Мой второй вопрос: есть ли термин для описания систем, где микроархитектура полностью отличается от видимой архитектуры?
(Я знаю о вертикальном и горизонтальном микрокоде, но это не так. Кроме того, я использую старый пример, но это не вопрос ретро-вычислений.)
0 ответов
В оригинальной статье о микрокодах Мориса Уилкса не упоминается горизонтальная и вертикальная. Но согласно этой таксономии,
- горизонтальная микрокоманда управляет несколькими ресурсами в одном цикле
- вертикальная микрокоманда управляет одним ресурсом
Есть и другие особенности микрокода, такие как возможность записи; они не меняют кодировку микрокоманды.
Горизонтальный и вертикальный микрокод - это скорее спектр, чем дихотомия. Строго горизонтальная микрокоманда будет состоять исключительно из управляющих битов и полей. Такая чисто горизонтальная микрокоманда для любой реальной архитектуры была бы очень широкой, поскольку в сложном процессоре есть множество функций, которыми нужно управлять. Более того, этих управляющих битов будет довольно мало. В результате микромагазин будет большим, дорогим и не обязательно быстрым.
Вместо этого современные микроархитектуры, такие как P6, имеют коды операций. Декодер кода операции - это комбинационная схема, которая принимает биты кода операции и выдает управляющие значения. Это требует некоторой задержки затвора, но обеспечивает значительное сжатие по ширине, позволяя уменьшить размер микросхемы. Вертикальная микроархитектура просто доводит это до крайности, и каждый код операции управляет отдельным ресурсом.
Написание сложных инструкций и низкоуровневых компонентов ОС в микрокоде было действительно эффективным в 60-х годах, и это привело к появлению CISC ISA. Однако, когда появились СБИС, кеши и суперскаляры, это дизайнерское решение было пересмотрено, что привело к созданию RISC ISA. Но опять же, это историческое развитие ISA не меняет таксономию микрокода.