Трансцендентные математические функции в 64-битном компиляторе Delphi

Следуя моему предыдущему вопросу (я предполагаю, что 64-битный компилятор использует только Инструкции SSE для вычислений с плавающей запятой):

  • Как трансцендентные математические функции (sin, atan, exp, log и т.д.) реализованы в 64-битном компиляторе Delphi? Насколько я знаю, аппаратных реализаций SSE нет. Какая программная библиотека используется, как насчет производительности и точности по сравнению с текущей аппаратной реализацией FPU?

см. также


person kludg    schedule 01.11.2010    source источник
comment
подождите, пока не появится 64-битный компилятор   -  person VibeeshanRC    schedule 01.11.2010
comment
Прости, мой хрустальный шар разбит...   -  person The_Fox    schedule 01.11.2010
comment
Будут ли эти функции оцениваться с помощью программного обеспечения? Мне это кажется абсурдным... Это не может быть настолько плохим, не так ли?   -  person Andreas Rejbrand    schedule 01.11.2010
comment
@Vibeeshan: Или пока Барри Келли не увидит этот вопрос.   -  person Andreas Rejbrand    schedule 01.11.2010
comment
@Andreas Rejbrand: поскольку на этот вопрос могут ответить только люди Embarcardero, такие как Барри Келли или Аллен Бауэр, его следует задать на форумах/группах новостей Embarcardero. Теперь эти вопросы больше похожи на повторение (без обид).   -  person The_Fox    schedule 01.11.2010
comment
Настало время остановиться с вопросами о Delphi 64 bit. Спросите у Embarcadero, все остальное только догадки.   -  person Gregor Brandt    schedule 01.11.2010


Ответы (1)


Очевидно, что никто, кроме Embarcadero, не может ответить на этот вопрос точно до выхода продукта.

Весьма вероятно, что любой приличный компилятор x64 будет использовать набор инструкций SSE2 в качестве основы и, следовательно, попытается выполнить как можно больше вычислений с плавающей запятой с использованием функций SSE, сводя к минимуму использование x87 FPU. Тем не менее, следует также сказать, что нет технической причины, препятствующей использованию x87 FPU в коде приложения x64 (несмотря на слухи об обратном, которые ходили некоторое время; если вам нужна дополнительная информация по этому вопросу, пожалуйста, посмотрите Руководство Agner Fog по соглашению о вызовах, в частности главу 6.1 "Могут ли регистры с плавающей запятой быть используется в 64-битной Windows?").

person PhiS    schedule 01.11.2010
comment
Аллен Бауэр (Embarcadero) написал в твиттере, что Extended=Double на x64 (так же, как и в .NET) delphifeeds.com /go/s/73529 из-за соглашений о вызовах x64 и проблем с 64-битным выравниванием. - person Jeroen Wiert Pluimers; 02.11.2010
comment
@Jeroen - но в соглашении о вызовах ABI ничего не мешает вам передавать 80-битные значения; если параметр не соответствует регистрам (макс. 64 бита), рекомендуется передавать его по ссылке. Ре. выравнивание - AFAIK, большинство компиляторов, поддерживающих 80-битные числа с плавающей запятой на x64, выравнивают их до 16-байтовых границ. Delphi может сделать то же самое. Следовательно, это не те проблемы, которые технически мешают Embarcadero реализовать 80-битную FP-математику. - person PhiS; 03.11.2010
comment
Если я правильно помню, есть некоторое разделение стека или регистров FPU и других регистров. Я точно знаю, что так было в мире ММХ. Если это все еще так в мире x64, это будет очень сложно. Это помимо потенциальной поддержки других архитектур процессоров, которые даже не поддерживают этот 80-битный тип данных. Опуская его в первой 64-битной реализации, они устанавливают базовую линию, но оставляют открытой возможность введения поддержки 80-битных вычислений с плавающей запятой в будущем. - person Jeroen Wiert Pluimers; 03.11.2010
comment
@Jeroen - регистры FPU x87 и MMX являются общими, правда. Но регистры MMX не используются в соглашении о вызовах Win64, и IIRC их состояние должно быть очищено (инструкция EMMS), то есть режим FPU, а не режим MMX. нет совместного использования регистров между регистрами x87 и XMM, последние из которых используются для передачи параметров. Кроме того, насколько мне известно, нет процессора x64 без FPU x87. (Intel даже представила новую инструкцию x87 с набором инструкций SSE3, так что я предполагаю, что Intel не считает x87 устаревшей.) Я действительно надеюсь, что они будут поддерживать 80-бит. - person PhiS; 03.11.2010
comment
@PhiS: спасибо за всю информацию; убедитесь, что об этом знают и Аллен Бауэр, и Барри Келли. - person Jeroen Wiert Pluimers; 03.11.2010
comment
@Jeroen - Привет, стараюсь изо всех сил. - person PhiS; 04.11.2010