Преимущества x87 перед SSE - PullRequest
       90

Преимущества x87 перед SSE

22 голосов
/ 04 декабря 2009

Я знаю, что x87 имеет более высокую внутреннюю точность, что, вероятно, самое большое различие, которое люди видят между операциями SSE и SSE.Но я должен задаться вопросом, есть ли какая-то другая польза от использования x87?У меня есть привычка автоматически набирать -mfpmath=sse в любом проекте, и мне интересно, не хватает ли еще чего-нибудь, что предлагает x87 FPU.

Ответы [ 5 ]

16 голосов
/ 04 декабря 2009

x87 содержит некоторые инструкции, которых нет в наборе инструкций SSE.

Из головы это все тригонометрические вещи, такие как fsin, fcos, fatan, fatan2 и некоторые экспоненты / логарифмы.

Если ваш код проводит большую часть времени, выполняя тригонометрию, вы можете увидеть небольшое повышение производительности, если вы используете x87. Некоторые алгоритмы DSP попадают в эту категорию.

Однако, для математического кода, где вы проводите большую часть своего времени, делая сложения, умножения и т. Д. SSE обычно быстрее.

16 голосов
/ 04 декабря 2009
  1. Он присутствует на действительно старых машинах.

EOF

8 голосов
/ 12 октября 2010

Инструкции FPU меньше, чем инструкции SSE, поэтому они идеально подходят для демосцены

4 голосов
/ 04 декабря 2009
  • Существует значительное наследие и небольшая совместимость системы с x87: SSE - относительно новая функция процессора. Если ваш код запускается на встроенном микроконтроллере, есть большая вероятность, что он не будет поддерживать инструкции SSE.

  • Даже системы, в которых не установлен FPU, часто предоставляют эмуляторы 80x87, которые обеспечивают прозрачную работу кода (более или менее). Я не знаю ни одного эмулятора SSE - конечно, в одной из моих систем его нет, поэтому новейшие версии элементов Adobe Photoshop отказываются работать.

  • Инструкции 80x87 имеют хорошие характеристики параллельной работы, которые были тщательно изучены и проанализированы с момента их появления в 1982 году или около того. Различные клоны x86 могут зависнуть в инструкциях SSE.

0 голосов
/ 05 ноября 2011

Преобразование между float и double быстрее с x87 (обычно бесплатным), чем с SSE. С x87 вы можете загружать и хранить float, double или long double в стеке регистров или из него, и он преобразуется в или из расширенной точности без дополнительных затрат. С SSE требуются дополнительные инструкции для преобразования типов, если типы смешаны, потому что регистры содержат значения float или double. Эти инструкции по преобразованию довольно быстрые, но требуют дополнительного времени.

Реальное исправление состоит в том, чтобы воздерживаться от чрезмерного смешивания float и double, конечно, не использовать x87.

...