LINUX.ORG.RU

Правда что при помощи SSE/SSE2 можно заменить FPU


0

0

У меня сложилось впечатление что при помощи наборов комант SSE/SSE2 можно полностью заменить FPU это правда? Если да то каков смысл существования FPU в современных процессорах (кроме обратной совместимости)?

anonymous

Знаешь сколько надо средств чтобы поменять технологический процесс производства, костыль это, как и весь x86/x86_64.

anonymous
()

SSE, как и прочие SIMD-интрукии (Single Instruction, Multiple Data), быстрее обычных только если надо несколько чисел за раз обработать. При обычных вычислениях FPU часто оказывается быстрее. Я уже не говорю про то, что для SSE данные должны быть выровнены (на границу в 128 бит), иначе загрузка/выгрузка данных в регистры SSE будет дико медленная (там для выровненных/невыровненных данных разные инструкии).

Deleted
()

Ходят слухи, что SSE* используют те-же ALU-блоки CPU, что и FPU, для вычислений, т.е. SSE* - это лишь расширения для FPU.

quarck
()
Ответ на: комментарий от Deleted

И кстати, в SSE нету сложных функций типа sin, cos и прочих. Их приходится реализовывать самому, если нужно. И если нужно вычислить синус только для одного операнда, то они получаются гарантированно медленнее, чем FPU'шный fsin.

Вот ещё что вспомнил: посмотри liboil, там есть некоторые функций оптимизированные с помощью SSE.

=)

Deleted
()
Ответ на: комментарий от Deleted

> SSE, как и прочие SIMD-интрукии (Single Instruction, Multiple Data), быстрее обычных только если надо несколько чисел за раз обработать.

Согласен.

> При обычных вычислениях FPU часто оказывается быстрее.

По моим замерам, производительность movss, addss, mulss и подобных комманд, вообще не отличается от аналогичных комманд FPU (по крайней мере на AMD64).

> Я уже не говорю про то, что для SSE данные должны быть выровнены (на границу в 128 бит), иначе загрузка/выгрузка данных в регистры SSE будет дико медленная (там для выровненных/невыровненных данных разные инструкии).

Не считаю, что "дико медленная" правильное слово. movups конечно медленнее movaps, но не в разы. Учитывая, что после них идут долгие вычисления, разницей вообще можно пренебречь.

anonymous
()
Ответ на: комментарий от Deleted

> Я уже не говорю про то, что для SSE данные должны быть выровнены (на границу в 128 бит), иначе загрузка/выгрузка данных в регистры SSE будет дико медленная (там для выровненных/невыровненных данных разные инструкии).

AMD умеет невыровненные загрузки без потерь в скорости.

Gharik
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.