LINUX.ORG.RU

История изменений

Исправление jpegqs, (текущая версия) :

Кстати и ARM и x86 используют MOP Fusion сливая некоторые команды в одну

x86 только популярные инструкции изменения/сравнения счётчика цикла сливает с прыжком. Скорее всего потому, что на заре x86 была специальная инструкция loop, что делает декремент (e)cx и прыжок. Но компиляторы не хотели её использовать. Поэтому пришлось это делать на уровне процессора.

Arm supports a number of macro-op fusion operations in their recent microarchitectures.

И это не ARM, а именно AArch64, который мне НЕ нравится.

movw + movt

Это команды для загрузки константы в регистры. Длина команды ограничена 32-бит, поэтому для загрузки длинной константы приходится выкручиваться. Так себе fusion, всего лишь костыль. В 32-бит ARM загружали константы через чтение через PC со смещением, занимало те же 8 байт, но одну команду. Видимо решили так сделать чтобы избежать критики, что загрузка констант стала медленнее. По сути очередной пример, что когда прижимает, то RISC изменяет своим принципам и делает шаг в сторону CISC.

aese + aesmc aesd + aesimc

Какие-то редкие команды для AES, видимо кому-то очень упёрлось шифрование. Скорее всего и задумывалось для продолжения предыдущей команды, но все операнды не влезли.

Ваше возражение звучит так, будто у ARM и x86 десятки, если не сотни MOP fusion, а на деле RISC-V уже планирует добавить больше чем у обоих конкурентов вместе взятых. А разговоров то было.

Исходная версия jpegqs, :

Кстати и ARM и x86 используют MOP Fusion сливая некоторые команды в одну

x86 только популярные инструкции изменения/сравнения счётчика цикла сливает с прыжком. Скорее всего потому, что на заре x86 была специальная инструкция loop, что делает декремент (e)cx и прыжок. Но компиляторы не хотели её использовать. Поэтому пришлось это делать на уровне процессора.

Arm supports a number of macro-op fusion operations in their recent microarchitectures.

И это не ARM, а именно AArch64, который мне НЕ нравится.

movw + movt

Это команды для загрузки константы в регистры. Длина команды ограничена 32-бит, поэтому для загрузки длинной константы приходится выкручиваться. Так себе fusion, всего лишь костыль. В 32-бит ARM загружали константы через чтение через PC со смещением, занимало те же 8 байт, но одну команду. Видимо решили так сделать чтобы избежать критики, что загрузка констант стала медленнее. По сути очередной пример, что когда прижимает, то RISC изменяет своим принципам и делает шаг в сторону CISC.

aese + aesmc aesd + aesimc

Какие-то редкие команды для AES, видимо кому-то очень упёрлось шифрование. Скорее всего и задумывалось для продолжения предыдущей команды, но все операнды не влезли.