2014-01-26 2 views
2

Мне было интересно, может ли какой-либо данный компилятор генерировать вывод непосредственно на уровень микроархитектуры вместо уровня ISA. Я понимаю, что уровень микропрограммирования обычно не используется в наши дни, а аппаратное обеспечение выполняет инструкции непосредственно на уровне ISA. Но возможно ли это? И почему это не так много в наши дни? Спасибо.Может ли компилятор генерировать вывод непосредственно на уровень микропрограммирования вместо уровня набора команд?

+0

Простой ответ: да. Генерация микрокода - это просто генерация кода на одном уровне дальше. Ганеш предлагает некоторые причины, почему это не популярно. –

ответ

4

ЦП обычно не предоставляют интерфейс, который позволяет напрямую обращаться к инструкциям по микропрограммированию - действительно, для этих инструкций нет двоичного формата. Таким образом, компилятор не мог бы нацелить их на них, и в этом не было бы смысла, так как никто не смог бы использовать полученный двоичный файл.

Даже если это было возможно, это была бы не лучшая идея - стандарт ISA является гарантией того, что он останется обратно совместимым, тогда как внутренний микрокод доступен для поставщика процессора, чтобы он менялся всякий раз, когда это удобно. Вероятно, он будет намного менее сжатым, чем ISA, поэтому двоичные файлы будут больше, и вы потеряете производительность в кеше команд.

+0

«вы потеряете производительность» - и о совместимости между моделями процессоров и производителями. Микрокод AMD, скорее всего, отличается от Intel и c. – JimmyB