Какое значение имеет инструкция процессора CMOV?

В Ubuntu 10.10 прекращена поддержка процессоров i586 и младших, а также процессоров i686, которые не поддерживают инструкцию CMOV (Conditional MOVe, AFAIK).

Что такого особенного в команде CMOV? У него даже есть собственный флаг в строке flags : из /proc/cpuinfo.

6
задан 11 October 2010 в 03:18

2 ответа

Команда CMOV является предикатной (или условной) командой перемещения. Он объединяет ветвь и инструкцию перемещения в один код операции.

Инструкция CMOV полезна при оптимизации компилятора, поскольку она помогает удалить некоторые инструкции условного перехода из кода. Это важно в современных суперскалярных процессорах, потому что многие команды выполняются в полете и выполняются параллельно, а инструкция условного перехода усложнит прогнозирование выполнения кода или нет, пока не будет разрешена ветвь.

0
ответ дан 11 October 2010 в 03:18

Когда исходный код компилируется для архитектуры 686 с gcc и флагом -march, gcc иногда генерирует объектный код, который содержит инструкцию CMOV. Это потому, что CMOV был инструкцией, которая пришла с оригинальной архитектурой 686, которая была выпущена 15 лет назад.

Несколько процессоров, которые претендуют на совместимость с 686, не поддерживают эту инструкцию. Таким образом, предстоит проделать большую работу, чтобы разобраться с несколькими чипами, которые не поддерживают эту стандартную инструкцию, которая существует уже более 15 лет и является частью оригинальной архитектуры 686. Команда разработчиков ядра Ubuntu имеет ограниченное количество времени и решила, что больше не стоит их времени, чтобы продолжать поддерживать предположительно 686-совместимые процессоры, которые не смогли за последние 15 лет включить эту инструкцию, которая является частью набора инструкций ядра 686 .

Нет ничего особенно особенного в самой команде CMOV, за исключением того, что она не была инструкцией в архитектуре до i686 (i486, i586 и т. Д.) И что некоторые предположительно i686-совместимые микросхемы не имеют инструкции.

0
ответ дан 11 October 2010 в 03:18

Другие вопросы по тегам:

Похожие вопросы: