Кристофер Домас запустил эксперимент CPU Deoptimization, в котором ищет максимально медленное выполнение одной машинной инструкции. Сейчас первое место занимает fxrstor64. Она восстанавливает состояние регистров SIMD, загружая 512 байт данных.
Сама fxrstor64 не требует минуты работы процессора. Для рекорда данные разместили в области MMIO с высокой задержкой. Уже это увеличило выполнение примерно до 74 млрд тактов, то есть более 23 секунд. Затем Домас дополнительно загрузил внутреннюю PCIe-инфраструктуру последовательными четырехбайтовыми чтениями. В итоге операция восстановления состояния ждала своей очереди и добралась до 198 002 498 236 тактов.
Поэтому воспринимать результат как рейтинг медленных инструкций x86 в обычных программах неправильно. Эксперимент скорее показывает, насколько далеко можно растянуть одну инструкцию, если зависимость от внешних данных соединить с искусственно созданной перегрузкой подсистемы ввода-вывода.
Следующей целью заявлены процессоры Intel Sapphire Rapids с AMX. Там сохраняемое состояние может занимать уже 8 КБ, и автор допускает результат свыше триллиона тактов. Пока это расчетная возможность, а не установленный рекорд.
x86-инструкцию растянули на 62 секунды, но процессор тут почти ни при чем
Инструкция fxrstor64 выполнилась за 198 млрд тактов, или примерно 62 секунды. Рекорд получен не на обычном коде: исследователь намеренно заставил процессор ждать крайне медленные обращения через PCIe.

Автор: Несколько источников
Источник: Несколько источников
2 просмотров







