Pregunta

¿Qué debemos esperar de la ayuda de punto flotante en el compilador de Delphi de 64 bits?

  • Will 64 bits uso compilador SSE a aplicar la aritmética de punto flotante?

  • Will compilador de 64 bits compatible con la corriente de tipo flotante de 80 bits (Extended)?

Estas preguntas están estrechamente relacionados, por lo que les pido como una sola pregunta.

¿Fue útil?

Solución

Para el bit de doble = extendida:

Read Allen Bauer cuenta de Twitter Kylix_rd:

http://twitter.com/kylix_rd

En retrospectiva lógico, porque mientras regs SSE2 son 128 bits, que se utilizan como dos dobles de 64 bits.

Otros consejos

hice dos mensajes sobre el tema ( aquí y hay ), para resumir, sí, el compilador de 64 bits utiliza SSE2 (doble precisión), pero que no utiliza SSE (precisión simple). Todo se convierte en coma flotante de doble precisión, y calcula utilizando SSE2 ( editar Sin embargo, hay una opción de control que)

Este medio de F.I. que si las matemáticas en coma flotante de doble precisión es rápido, las matemáticas de precisión simple es lento (una gran cantidad de conversiones redundantes entre precisiones individuales y dobles son arrojados en), "extendido" es alias de "doble", y cálculos intermedios de precisión se limita a doble precisión .

Editar: Hubo una directiva indocumentado (en el tiempo) que los controles de SSE generación de código, {$ EXCESSPRECISION OFF} activa SSE generación de código, que ofrece un rendimiento de vuelta dentro de las expectativas.

De acuerdo con Marco van de Voort en su respuesta a: ¿Cómo debo preparar a mis programas de Delphi de 32 bits para una eventual compilador de 64 bits :

  

x87 FPU está en desuso en x64, y en SSE2 general será utilizado para punto florating. de modo de punto flotante y su manejo de excepciones podría funcionar de forma ligeramente diferente, y la fuerza extendida no ser de 80 bits (pero de 64 bits o, menos probable de 128 bits). Esto también se refiere al redondeo usual (copro controlwork) cambia cuando la interfaz wiht código C que espera una palabra FPU diferente.

PHIS comentadas en esa respuesta con:

  

Yo no diría que la FPU x87 está en desuso, pero es sin duda el caso de que Microsoft ha decidido hacer lo posible para que de esa manera (y realmente no parece que al igual que los valores de PF de 80 bits) , aunque es claramente técnicamente posible utilizar los flotadores FPU / 80 bits en Win64.

Me acaba de publicar una respuesta a su otra pregunta, pero supongo que en realidad debería ir aquí:

Obviamente, nadie excepto para Embarcadero puede responder a ciencia cierta antes de distribuir el producto.

Es muy probable que cualquier compilador x64 decente utilizará el conjunto de instrucciones SSE2 como línea de base y por lo tanto tratar de hacer tanto el cálculo de coma flotante utilizando SSE características como sea posible, minimizando el uso de la FPU x87. Sin embargo, también hay que decir que no hay ninguna razón técnica que impida el uso de la x87 FPU en el código de las aplicaciones x64 (a pesar de los rumores en sentido contrario, que han existido desde hace algún tiempo, si desea obtener más información sobre este punto, por favor echar un vistazo a Calling Manual de la Convención de Agner Fog, específicamente el capítulo 6.1 registros de coma flotante" se puede utilizado en Windows de 64 bits? ").

Editar 1 : Delphi XE2 Win64 de hecho no es compatible con los cálculos de 80 bits de punto flotante fuera de la caja (véase, por ejemplo discussuion aquí (aunque permite leer / escribir estos valores). uno puede traer tales capacidades de nuevo a Delphi Win64 utilizando un registro + operadores de clase, como se hace en este tipo TExtendedX87 (aunque se aplican salvedades).

No vamos a saber con seguridad cómo el compilador de Delphi de 64 bits implementará la aritmética de punto flotante hasta Embarcadero en realidad lo envía. Cualquier cosa antes que es sólo especulación. Pero una vez que sabemos con certeza que va a ser demasiado tarde para hacer nada al respecto.

Los Tweets de Allen Bauer no parecen indicar que van a utilizar SSE2 y que el tipo extendido puede reducirse a 64 bits en lugar de 80 bits. Creo que sería una mala idea, por una variedad de razones. He escrito mis pensamientos en un informe QualityCentral deberá mantenerse en un tipo de 80 bits en plataformas de 64 bits

Si no desea que su código a caer a partir de precisión de 80 bits de precisión de 64 bits cuando se mueve a 64 bits de Delphi, haga clic en el enlace QualityCentral y votar por mi informe. Cuantos más votos, más probable Embarcadero escucharán. Si lo hacen utilizar SSE2 de punto flotante de 64 bits, lo cual tiene sentido, entonces la adición de punto flotante de 80 bits utilizando la FPU será un trabajo extra para Embarcadero. Dudo que van a hacer que el trabajo a menos que una gran cantidad de desarrolladores piden.

Si realmente lo necesita, a continuación, puede utilizar la TExtendedX87 unidad por Philipp M. Schlüter ( PHIS sobre SO ) como se menciona en este hilo del foro Embarcadero .

@PhiS:. Al actualizar su respuesta con la información de la mía, voy a quitar la mina

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top