Существуют разные свойства, потому что они соответствуют разным инструкциям.
Существуют разные инструкции по загрузке, потому что Intel хочет сохранить свободу проектирования процессора, на котором векторы двойной точности поддерживаются другим физическим регистровым файлом, чем векторы одинарной точности или целочисленные векторы, или используют разные исполнительные единицы. Любая из них может добавить дополнительную задержку, если не было способа указать, что данные должны загружаться в соответствующий файл реестра или сеть пересылки.
Один из способов думать об этом состоит в том, что разные инструкции выполняют «одно и то же», но дополнительно дают подсказку процессору, сообщая ему, как загружаемые данные будут использоваться в будущих инструкциях. Это может помочь процессору убедиться, что данные находятся в правильном месте для максимально эффективного использования, или процессор может игнорировать их.
Обратите внимание, что это не просто гипотеза. Существуют процессоры, на которых использование целочисленной векторной загрузки (MOVDQA) для загрузки данных, которые потребляются операцией с плавающей запятой, требует больше времени, чем использование загрузки с плавающей запятой для получения данных для операции с плавающей запятой (и наоборот) , См. Руководство по оптимизации Intel или заметки Агнера Фога для более подробной информации по этому вопросу. Используйте нагрузку, которая соответствует тому, как вы будете использовать данные, чтобы избежать риска такой производительности в будущем.