Microsoft при выпуске 64-битной винды объявила x87 устаревшим и намекнула, что его поддержка может быть со временем исключена из системы.
Разработчики FPC решили следовать этой "генеральной линии" и не использовать x87 для x86_64-win64.
Extended = Double
Модератор: Модераторы
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
наскока я понял там используется SSE, т.е. не совсем x87Sergei I. Gorelkin писал(а):Microsoft при выпуске 64-битной винды объявила x87 устаревшим
Добавлено спустя 4 минуты 52 секунды:
т.е. на SSE под винду64 тоже можно было имитировать, или вообще сменить тип extended на 16 байтный, и под вин и под лин
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
Совсем не x87. SSE2, если быть точнее.sts писал(а):наскока я понял там используется SSE, т.е. не совсем x87
SSE2 поддерживает только single и double. Все его более современные инкарнации (AVX...) увеличивают только длину вектора, но не точность. Эмуляция extended с ним будет ровно такая же, как и без него.sts писал(а):т.е. на SSE под винду64 тоже можно было имитировать, или вообще сменить тип extended на 16 байтный, и под вин и под лин
extended c выравниванием на 16 байт назвается cextended и существует в компиляторе с первых дней.
разве? там же 128bit регистрыSergei I. Gorelkin писал(а):SSE2 поддерживает только single и double.
Добавлено спустя 4 минуты 25 секунд:
действительно, вот жулики, имея 128bit регистры не работать с long double
Скорее всего потому, что получился бы тот же x87. SSE (и AVX позже) проектировался для векторных вычислений.sts писал(а): имея 128bit регистры не работать с long double
Добавлено спустя 27 минут 5 секунд:
SSE2 это 4×32 или 2×64 в регистре.
AVX-512 это 16×32 или 8×64 в регистре.
Длина вектора растет, точность остается прежней, как выше отмечено.
почему? там 80 битный костыль, логично было от него избавится (заменив на fp128), он же непросто так появился, а потому что реально нужен а вот мощи сделать по нормальному тогда не хватало.WAYFARER писал(а):Скорее всего потому, что получился бы тот же x87
SIMD (SSE/AVX) не про 1 число, он про векторность, параллелизм.sts писал(а):почему? там 80 битный костыль, логично было от него избавится (заменив на fp128), он же непросто так появился, а потому что реально нужен а вот мощи сделать по нормальному тогда не хватало.
В SSE XMM = 4xfloat32 или 2xfloat64 -> 1 регистр = несколько чисел.
Если сделать 128, в 128-битный регистр влезет ровно 1 число и тогда векторность теряется, SIMD превращается в обычный скалярный FPU, что противоречит идее SSE.
Про "нехватало мощи сделать нормально", я так думаю её и сейчас не хватает. Вычислительный блок получится огромный, дорогой и медленный, и при этом маловостребованный.
По моему только у IBM POWER/zSeries есть quad-precision (binary128), но по факту это тоже аналог x87, тоже скалярная арифметика.
это то понятно тока не отменяет востребованности, а x87 в любом случае все, тянут его по инерции, АМД подсуропила когда 64бит придумывала, в томже арм есть аналог SSEWAYFARER писал(а):SIMD (SSE/AVX) не про 1 число, он про векторность, параллелизм.
думаю хватает, там внутрях в любом случае 128 битная шина (иначе смысла нету) и отдельно указывается количество элементов 4 или 2, ничего не мешало сделать вариант с 1, думаю там минимальные изменения былибыWAYFARER писал(а):Про "нехватало мощи сделать нормально", я так думаю её и сейчас не хватает.
