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