stringtranslate.com

unidad de punto flotante

Colección de la familia x87 de coprocesadores matemáticos de Intel

Una unidad de punto flotante ( FPU , coloquialmente un coprocesador matemático ) es una parte de un sistema informático especialmente diseñado para realizar operaciones con números de punto flotante . [1] Las operaciones típicas son suma , resta , multiplicación , división y raíz cuadrada . Algunas FPU también pueden realizar varias funciones trascendentales , como cálculos exponenciales o trigonométricos , pero la precisión puede ser baja, [2] [3] por lo que algunos sistemas prefieren calcular estas funciones en software.

En las arquitecturas informáticas de propósito general , se pueden integrar una o más FPU como unidades de ejecución dentro de la unidad central de procesamiento ; sin embargo, muchos procesadores integrados no tienen soporte de hardware para operaciones de punto flotante (aunque cada vez más las tienen como estándar).

Cuando una CPU está ejecutando un programa que requiere una operación de punto flotante, existen tres formas de realizarlo:

Historia

En 1954, el IBM 704 tenía la aritmética de punto flotante como característica estándar, una de sus principales mejoras con respecto a su predecesor, el IBM 701 . Esto se trasladó a sus sucesores el 709, 7090 y 7094.

En 1963, Digital anunció el PDP-6 , que tenía punto flotante como característica estándar. [4]

En 1963, el GE-235 incluía una "Unidad Aritmética Auxiliar" para cálculos de coma flotante y de doble precisión. [5]

Históricamente, algunos sistemas implementaban el punto flotante con un coprocesador en lugar de como una unidad integrada (pero ahora, además de la CPU, por ejemplo, las GPU  , que son coprocesadores que no siempre están integrados en la CPU, tienen por regla general FPU, mientras que las primeras generaciones de GPU sí las tenían). no). Podría ser un único circuito integrado , una placa de circuito completa o un gabinete. Cuando no se ha proporcionado hardware de cálculo de punto flotante, los cálculos de punto flotante se realizan en software, lo que requiere más tiempo de procesamiento, pero evita el costo del hardware adicional. Para una arquitectura de computadora particular, las instrucciones de la unidad de punto flotante pueden emularse mediante una biblioteca de funciones de software; esto puede permitir que el mismo código objeto se ejecute en sistemas con o sin hardware de punto flotante. La emulación se puede implementar en cualquiera de varios niveles: en la CPU como microcódigo , como función del sistema operativo o en código de espacio de usuario . Cuando solo está disponible la funcionalidad de números enteros, los métodos CORDIC se utilizan más comúnmente para la evaluación de funciones trascendentales . [ cita necesaria ]

En la mayoría de las arquitecturas informáticas modernas, existe cierta división entre las operaciones de punto flotante y las operaciones con números enteros . Esta división varía significativamente según la arquitectura; algunos tienen registros de punto flotante dedicados, mientras que otros, como Intel x86 , llegan incluso a esquemas de sincronización independientes . [6]

Se han implementado rutinas CORDIC en los coprocesadores Intel x87 ( 8087 , [7] [8] [9] [10] [11] 80287, [11] [12] 80387 [11] [12] ) hasta el 80486 [7] serie de microprocesadores, así como en Motorola 68881 [7] [8] y 68882 para algunos tipos de instrucciones de punto flotante, principalmente como una forma de reducir el número de puertas (y la complejidad) del subsistema FPU.

Las operaciones de punto flotante a menudo se canalizan . En arquitecturas superescalares anteriores sin ejecución desordenada general , las operaciones de punto flotante a veces se canalizaban por separado de las operaciones de números enteros.

La arquitectura modular de la microarquitectura Bulldozer utiliza una FPU especial llamada FlexFPU, que utiliza subprocesos múltiples simultáneos . Cada núcleo físico entero, dos por módulo, es de un solo subproceso, a diferencia del Hyperthreading de Intel , donde dos subprocesos virtuales simultáneos comparten los recursos de un único núcleo físico. [13] [14]

biblioteca de punto flotante

Algunos hardware de punto flotante solo admiten las operaciones más simples: suma, resta y multiplicación. Pero incluso el hardware de punto flotante más complejo tiene un número finito de operaciones que puede admitir; por ejemplo, ninguna FPU admite directamente aritmética de precisión arbitraria .

Cuando una CPU ejecuta un programa que requiere una operación de punto flotante que no es compatible directamente con el hardware, la CPU utiliza una serie de operaciones de punto flotante más simples. En sistemas sin hardware de punto flotante, la CPU lo emula utilizando una serie de operaciones aritméticas de punto fijo más simples que se ejecutan en la unidad lógica aritmética entera .

El software que enumera la serie de operaciones necesarias para emular operaciones de punto flotante suele estar empaquetado en una biblioteca de punto flotante .

FPU integradas

En algunos casos, las FPU pueden estar especializadas y divididas entre operaciones de punto flotante más simples (principalmente suma y multiplicación) y operaciones más complicadas, como la división. En algunos casos, sólo las operaciones simples pueden implementarse en hardware o microcódigo , mientras que las operaciones más complejas se implementan como software.

En algunas arquitecturas actuales, la funcionalidad FPU se combina con unidades SIMD para realizar cálculos SIMD; un ejemplo de esto es el aumento del conjunto de instrucciones x87 con el conjunto de instrucciones SSE en la arquitectura x86-64 utilizada en los procesadores Intel y AMD más nuevos.

FPU complementarias

Varios modelos del PDP-11 , como el PDP-11/45, [15] PDP-11/34a, [16] : 184–185  PDP-11/44, [16] : 195, 211  y PDP-11 /70, [16] : 277, 286–287  admitían una unidad de punto flotante adicional para admitir instrucciones de punto flotante. El PDP-11/60, [16] : 261  MicroPDP-11/23 [17] y varios modelos VAX [18] [19] podían ejecutar instrucciones de punto flotante sin una FPU adicional (el MicroPDP-11/23 requería una opción de microcódigo adicional), [17] y ofrecía aceleradores adicionales para acelerar aún más la ejecución de esas instrucciones.

En la década de 1980, era común en las microcomputadoras IBM PC /compatibles que la FPU estuviera completamente separada de la CPU y, por lo general, se vendiera como un complemento opcional. Sólo se compraría si fuera necesario para acelerar o habilitar programas intensivos en matemáticas.

La IBM PC, XT y la mayoría de las compatibles basadas en 8088 o 8086 tenían un zócalo para el coprocesador 8087 opcional. Los sistemas basados ​​en AT y 80286 generalmente estaban conectados a máquinas basadas en 80287 y 80386/80386SX , para 80387 y 80387SX respectivamente, aunque los primeros estaban conectados a 80287, ya que el 80387 aún no existía. Otras empresas fabricaron coprocesadores para la serie Intel x86. Entre ellos se encontraban Cyrix y Weitek . Acorn Computers optó por el WE32206 para ofrecer precisión simple , doble y extendida [20] a su gama Archimedes con tecnología ARM .

Los coprocesadores estaban disponibles para la familia Motorola 68000 , 68881 y 68882 . Estos eran comunes en las estaciones de trabajo basadas en Motorola 68020/68030 , como la serie Sun-3 . También se agregaban comúnmente a los modelos de gama alta de las series Apple Macintosh y Commodore Amiga , pero a diferencia de los sistemas compatibles con PC de IBM, los zócalos para agregar el coprocesador no eran tan comunes en los sistemas de gama baja.

También hay unidades de coprocesador FPU adicionales para unidades de microcontrolador (MCU/μC)/ computadora de placa única (SBC), que sirven para proporcionar capacidad aritmética de punto flotante . Estas FPU complementarias son independientes del procesador host, poseen sus propios requisitos de programación ( operaciones , conjuntos de instrucciones , etc.) y, a menudo, cuentan con sus propios entornos de desarrollo integrados (IDE).

Ver también

Referencias

  1. ^ Anderson, Stanley F.; Earle, John G.; Goldschmidt, Robert Elliott; Powers, Don M. (enero de 1967). "IBM System/360 Modelo 91: Unidad de ejecución de punto flotante". Revista IBM de investigación y desarrollo . 11 (1): 34–53. doi :10.1147/rd.111.0034. ISSN  0018-8646.
  2. ^ Dawson, Bruce (9 de octubre de 2014). "Intel subestima los límites de error en 1,3 quintillones". randomascii.wordpress.com . Consultado el 16 de enero de 2020 .
  3. ^ "Mejoras en la documentación de FSIN en el" Manual del desarrollador de software de arquitecturas Intel® 64 e IA-32"". intel.com . 2014-10-09. Archivado desde el original el 16 de enero de 2020 . Consultado el 16 de enero de 2020 .
  4. ^ "Manual del PDP-6" (PDF) . www.bitsavers.org . Archivado (PDF) desde el original el 9 de octubre de 2022.
  5. ^ "Documentos GE-2xx". www.bitsavers.org . CPB-267_GE-235-SystemManual_1963.pdf, pág. IV-4.
  6. ^ "Familia Intel 80287". www.cpu-world.com . Consultado el 15 de enero de 2019 .
  7. ^ abc Müller, Jean-Michel (2006). Funciones elementales: algoritmos e implementación (2ª ed.). Boston, Massachusetts: Birkhäuser . pag. 134.ISBN _ 978-0-8176-4372-0. LCCN  2005048094 . Consultado el 1 de diciembre de 2015 .
  8. ^ ab Nave, Rafi (marzo de 1983). "Implementación de funciones trascendentales en un procesador numérico". Microprocesamiento y Microprogramación . 11 (3–4): 221–225. doi :10.1016/0165-6074(83)90151-5.
  9. ^ Palmer, John F.; Morse, Stephen Paul (1984). La cartilla 8087 (1ª ed.). John Wiley & Sons Australia, limitada . ISBN 0471875694. 9780471875697 . Consultado el 2 de enero de 2016 .
  10. ^ Glass, L. Brent (enero de 1990). "Coprocesadores matemáticos: una mirada a lo que hacen y cómo lo hacen". Byte . 15 (1): 337–348. ISSN  0360-5280.
  11. ^ abc Jarvis, Pitts (1 de octubre de 1990). "Implementación de algoritmos CORDIC: una única rutina compacta para calcular funciones trascendentales". Diario del Dr. Dobb : 152–156 . Consultado el 2 de enero de 2016 .
  12. ^ ab Yuen, Alaska (1988). "Procesadores de punto flotante de Intel". Registro de la conferencia Electro/88 : 48/5/1–7.
  13. ^ "Copia archivada". cdn3.wccftech.com . Archivado desde el original el 9 de mayo de 2015 . Consultado el 14 de marzo de 2022 .{{cite web}}: Mantenimiento CS1: copia archivada como título ( enlace )
  14. ^ "AMD presenta Flex FP". bit-tech.net . Consultado el 29 de marzo de 2018 .
  15. ^ Manual del procesador PDP-11/45 (PDF) . Corporación de equipos digitales . 1973. Capítulo 7 "Procesador de coma flotante".
  16. ^ Manual del procesador abcd PDP-11 (PDF) . Corporación de equipos digitales . 1979.
  17. ^ ab Manual de MICRO / PDP-11 (PDF) . Corporación de equipos digitales . 1983. pág. 33.
  18. ^ VAX - Manual de hardware Volumen I - 1986 (PDF) . Corporación de equipos digitales . 1985.
  19. ^ VAX - Manual de hardware Volumen II - 1986 (PDF) . Corporación de equipos digitales . 1986.
  20. ^ "Coprocesador Western Electric 32206". www.cpu-world.com . Consultado el 6 de noviembre de 2021 .

Otras lecturas