Что такое микрокод процессора?

читаю про микроархитектуру. наткнулся на момент в котором упомянается подсистема памяти. В ней есть блок микропрограммного управления. Начал гуглить. Вышел на понятие микрокод. Нагуглился но так и не понят что это конкретно такое.
Толи это программа которая разбивает некоторые сложные инструкции cisc на микроинструкции, толи это и есть набор микроинструкций.
Одно точно понял, что микрокод находится в пзу. И вроде как при подачи питания переносится в озу. Так де понял что микрокод можно патчить.
Что и как определяет что команда нуждается в разбивке на микроинструкции?
И что конкретно такое микрокод? везде как то неоднозначно написано
  • Вопрос задан
  • 9793 просмотра
Пригласить эксперта
Ответы на вопрос 3
@nehrung
Не забывайте кликать кнопку "Отметить решением"!
Толи это программа которая разбивает некоторые сложные инструкции cisc на микроинструкции, толи это и есть набор микроинструкций.
Да, это набор микроинструкций. Хороший пояснительный пример - это операция деления. В RISC-процессорах с их полтора десятками команд деления нет, но делить можно - с помощью подпрограммы деления длиной в пару сотен RISC-команд. Таких подпрограмм может быть много, по количеству сложных CISC-команд. Эти подпрограммы могут быть реализованы как интерпретатор со своим софтом. Это и есть микрокод. Его можно менять извне (например, для оптимизации).
Одно точно понял, что микрокод находится в пзу. И вроде как при подачи питания переносится в озу.
Если ПЗУ медленное и находится снаружи проца, а ОЗУ быстрое (скажем, это кэш-память, наиболее близкая к ядру), то применяя архитектуру с подгрузкой микрокода, можно сильно ускорить работу этого микрокода, заодно получив возможность его редактирования. Но это не обязательно, при быстром ПЗУ микрокод, не нуждающийся в редактировании, можно держать сразу в нём.
Что и как определяет что команда нуждается в разбивке на микроинструкции?
Сложность. Собственно, переход к микрокоду - это возможность упростить управляющее устройство проца, избавить его от очень длинных командных последовательностей (см. пример с операцией деления). А это в свою очередь позволяет сделать выч. ядро (то самое, которое работает на предельно высоких частотах) максимально компактным и выделяющим не слишком много тепла.
Ответ написан
Комментировать
@pfg21
ex-турист
CISC-команда исходного x86-кода разбивается в набор RISC-команд, которые и скармливаются аппаратному RISC-процессору. т.е. во всех современных процессорах x86 и x86-64 эмулируется, алгоритмы этой эмуляции и записаны в микрокоде
практическое описание примения микрокода процессора к примеру здесь
Ответ написан
Sly_tom_cat
@Sly_tom_cat
.
Любой процессор по сути маленький компьютер, там есть исполнительные устройсва, ячейки регистров (память), внешние каналы (шины данных и адреса), кеши.... и всем этим нужно как-то управлять. Вот за это управление и отвечает микрокод процессора. По сути это такой глубоко завязанный на железо код, который позволяет реализовать отдельные примитивные действия внутри процессора, которые требуют согласованного действия отдельных его компонентов.
Но микрокод только в древних процессорах (которые собирались из сотен отдельных элементов или нескольких микросхем) хранился в отделной схеме ПЗУ. Во всех микропроцессорах (когда все потроха процессора, а порой еще и часть внешних шин собраны на одном кристалле) микрокод пишется в отдельную часть этого общего кристалла. И не всегда это ПЗУ, иногда там типа флеша, но быстрого, ведь он работает на внутренней (очень высокой) частоте процессора.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы