
Un coprocesador es un procesador informático que complementa las funciones del procesador principal (la CPU ). Las operaciones que realiza el coprocesador pueden incluir aritmética de punto flotante , gráficos , procesamiento de señales , procesamiento de cadenas de caracteres , criptografía o interfaz de entrada/salida con dispositivos periféricos. Al descargar tareas que consumen muchos recursos del procesador principal , los coprocesadores pueden acelerar el rendimiento del sistema. Los coprocesadores permiten personalizar una línea de ordenadores, de modo que los clientes que no necesitan el rendimiento adicional no tienen que pagar por él.
Funcionalidad
Los coprocesadores varían en su grado de autonomía. Algunos (como las FPU ) dependen del control directo mediante instrucciones de coprocesador , integradas en el flujo de instrucciones de la CPU . Otros son procesadores independientes por derecho propio, capaces de trabajar de forma asíncrona; sin embargo, no están optimizados para código de propósito general , o son incapaces de hacerlo debido a un conjunto limitado de instrucciones enfocado en acelerar tareas específicas . Es común que estos se controlen mediante acceso directo a memoria (DMA), con el procesador anfitrión (una CPU) creando una lista de comandos . El Emotion Engine de PlayStation 2 contenía una unidad vectorial SIMD inusual , similar a un DSP , capaz de ambos modos de operación.
Historia
Para optimizar el uso del tiempo de procesamiento de la computadora central , las tareas de entrada/salida se delegaron a sistemas independientes denominados E/S de canal . La computadora central no requería ningún procesamiento de E/S; en su lugar, establecía los parámetros para una operación de entrada o salida y luego enviaba una señal al procesador de canal para que realizara la operación completa. Al dedicar subprocesadores relativamente sencillos al formateo y procesamiento de E/S, que consumían mucho tiempo, se mejoró el rendimiento general del sistema.
Los coprocesadores para aritmética de punto flotante aparecieron por primera vez en las computadoras de escritorio en la década de 1970 y se generalizaron durante la década de 1980 y principios de la de 1990. Los primeros procesadores de 8 y 16 bits utilizaban software para realizar operaciones aritméticas de punto flotante . Cuando se disponía de un coprocesador, los cálculos de punto flotante podían realizarse mucho más rápido. Los coprocesadores matemáticos eran muy populares entre los usuarios de software de diseño asistido por computadora (CAD) y para cálculos científicos y de ingeniería. Algunas unidades de punto flotante, como las AMD 9511 , Intel 8231/8232 y Weitek FPU, se consideraban dispositivos periféricos, mientras que otras, como la Intel 8087 , Motorola 68881 y National 32081, estaban más integradas con la CPU.
Otro tipo de coprocesador era el coprocesador de visualización de vídeo, utilizado en los ordenadores Atari de 8 bits , TI-99/4A y los ordenadores domésticos MSX , denominados " controladores de visualización de vídeo ". El chipset personalizado de Amiga incluye una unidad de este tipo conocida como Copper , así como un blitter para acelerar la manipulación de mapas de bits en memoria.
Con el desarrollo de los microprocesadores, el costo de integrar las funciones aritméticas de punto flotante en el procesador disminuyó. Las altas velocidades de los procesadores también dificultaron la implementación de un coprocesador estrechamente integrado. Actualmente, los coprocesadores matemáticos empaquetados por separado son poco comunes en las computadoras de escritorio. Sin embargo, la demanda de un coprocesador gráfico dedicado ha aumentado, particularmente debido a la creciente demanda de gráficos 3D realistas en los videojuegos .
Intel


El IBM PC original incluía un zócalo para el coprocesador de coma flotante Intel 8087 (también conocido como FPU ), una opción popular entre quienes utilizaban el PC para diseño asistido por ordenador o cálculos matemáticos complejos. En esa arquitectura, el coprocesador aceleraba la aritmética de coma flotante hasta cincuenta veces. Los usuarios que solo utilizaban el PC para procesamiento de texto, por ejemplo, se ahorraban el elevado coste del coprocesador, que no habría mejorado el rendimiento en operaciones de manipulación de texto.
The 8087 was tightly integrated with the 8086/8088 and responded to floating-point machine code operation codes inserted in the 8088 instruction stream. An 8088 processor without an 8087 could not interpret these instructions, requiring separate versions of programs for FPU and non-FPU systems, or at least a test at run time to detect the FPU and select appropriate mathematical library functions.
Another coprocessor for the 8086/8088 central processor was the 8089 input/output coprocessor. It used the same programming technique as 8087 for input/output operations, such as transfer of data from memory to a peripheral device, and so reducing the load on the CPU. But IBM did not use it in IBM PC design and Intel stopped development of this type of coprocessor.
The Intel 80386microprocessor used an optional "math" coprocessor (the 80387) to perform floating-point operations directly in hardware. The Intel 80486DX processor included floating-point hardware on the chip. Intel released a cost-reduced processor, the 80486SX, that had no floating-point hardware, and also sold an 80487SX coprocessor that essentially disabled the main processor when installed, since the 80487SX was a complete 80486DX with a different set of pin connections.[1]
Intel processors later than the 80486 integrated floating-point hardware on the main processor chip; the advances in integration eliminated the cost advantage of selling the floating-point processor as an optional element. It would be very difficult to adapt circuit-board techniques adequate at 75 MHz processor speed to meet the time-delay, power consumption, and radio-frequency interference standards required at gigahertz-range clock speeds. These on-chip floating-point processors are still referred to as coprocessors because they operate in parallel with the main CPU.
During the era of 8- and 16-bit desktop computers another common source of floating-point coprocessors was Weitek. These coprocessors had a different instruction set from the Intel coprocessors, and used a different socket, which not all motherboards supported. The Weitek processors did not provide transcendental mathematics functions (for example, trigonometric functions) like the Intel x87 family, and required specific software libraries to support their functions.[2]
Motorola
La familia Motorola 68000 contaba con los coprocesadores 68881/68882 , que proporcionaban una aceleración de velocidad de punto flotante similar a la de los procesadores Intel. Los ordenadores que utilizaban la familia 68000 pero no estaban equipados con el procesador de punto flotante por hardware podían interceptar y emular las instrucciones de punto flotante mediante software, lo que, aunque más lento, permitía distribuir una única versión binaria del programa para ambos casos. El coprocesador de gestión de memoria 68451 fue diseñado para funcionar con el procesador 68020. [ 3 ]
coprocesadores modernos
A partir de 2001Las unidades de procesamiento gráfico ( GPU ) dedicadas, en forma de tarjetas gráficas, son habituales. Algunos modelos de tarjetas de sonido incorporaban procesadores dedicados que proporcionaban mezcla multicanal digital y efectos DSP en tiempo real ya entre 1990 y 1994 (como ejemplos típicos, la Gravis Ultrasound y la Sound Blaster AWE32 ), mientras que la Sound Blaster Audigy y la Sound Blaster X-Fi son ejemplos más recientes.
En 2006, AGEIA anunció una tarjeta de expansión para ordenadores llamada PhysX PPU . PhysX se diseñó para realizar cálculos físicos complejos, liberando así a la CPU y la GPU de la tarea de realizar estas operaciones que consumen mucho tiempo. Se diseñó para videojuegos, aunque teóricamente podría desarrollarse para otros usos matemáticos. En 2008, Nvidia adquirió la compañía y descontinuó la línea de tarjetas PhysX; la funcionalidad se añadió mediante software, permitiendo que sus GPU renderizaran PhysX en los núcleos normalmente utilizados para el procesamiento gráfico, mediante su motor de software Nvidia PhysX.
En 2006, BigFoot Systems presentó una tarjeta de expansión PCI a la que bautizaron como KillerNIC, la cual ejecutaba su propio kernel Linux especial en un FreeScale PowerQUICC que funcionaba a 400 MHz, denominando al chip FreeScale Unidad de Procesamiento de Red o NPU.
La SpursEngine es una tarjeta de expansión multimedia con un coprocesador basado en la microarquitectura Cell . Las SPU son, a su vez, coprocesadores vectoriales.
En 2008, Khronos Group lanzó OpenCL con el objetivo de brindar soporte a las CPU de propósito general, las GPU de ATI/AMD y Nvidia (y otros aceleradores) con un único lenguaje común para los núcleos de cómputo .
En la década de 2010, algunos dispositivos de computación móvil implementaron el concentrador de sensores como un coprocesador. Ejemplos de coprocesadores utilizados para gestionar la integración de sensores en dispositivos móviles incluyen los coprocesadores de movimiento Apple M7 y M8 , el Qualcomm Snapdragon Sensor Core y el Qualcomm Hexagon , y la Unidad de Procesamiento Holográfico para Microsoft HoloLens .
En 2012, Intel anunció el coprocesador Intel Xeon Phi . [ 4 ]
A partir de 2016Varias empresas están desarrollando coprocesadores destinados a acelerar las redes neuronales artificiales para la visión y otras tareas cognitivas (por ejemplo, unidades de procesamiento visual , TrueNorth y Zeroth ), y desde 2018, estos chips de IA se encuentran en teléfonos inteligentes como los de Apple y varios fabricantes de teléfonos Android.
Otros coprocesadores
- La arquitectura MIPS admite hasta cuatro unidades de coprocesador, utilizadas para la gestión de memoria y la aritmética de punto flotante, y dos coprocesadores no definidos para otras tareas, como aceleradores gráficos. [ 5 ]
- Mediante el uso de FPGA (matrices de puertas programables en campo), se pueden crear coprocesadores personalizados para acelerar tareas de procesamiento específicas, como el procesamiento de señales digitales (por ejemplo, Zynq , que combina núcleos ARM con FPGA en un solo chip).
- Aceleradores TLS/SSL , utilizados en servidores ; estos aceleradores solían ser tarjetas, pero en la actualidad son instrucciones para criptografía en las CPU convencionales.
- Algunos chips multinúcleo se pueden programar de manera que uno de sus procesadores sea el procesador principal y los demás procesadores actúen como coprocesadores de apoyo.
- El coprocesador PCI-e Matrix 2000 de 128 núcleos de China es un acelerador propietario que requiere una CPU para funcionar y se ha empleado en una actualización de la supercomputadora Tianhe-2 de 17.792 nodos (2 Intel Knights Bridge + 2 Matrix 2000 cada una), ahora denominada 2A, duplicando aproximadamente su velocidad a 95 petaflops, superando a la supercomputadora más rápida del mundo . [ 6 ]
- Acorn Computers ofrecía una variedad de coprocesadores para diversos modelos , especialmente para las series BBC Micro y BBC Master . En lugar de dispositivos gráficos o aritméticos especializados, se trataba de CPU de propósito general (principalmente la 6502, la Zilog Z80, la National Semiconductor 32016 y la ARM 1), conocidas como segundos procesadores, que normalmente se conectaban al sistema anfitrión mediante una arquitectura de paso de mensajes denominada Tube . Los productos de Acorn incluían estos procesadores en una unidad de expansión para BBC Micro, junto con la memoria y los circuitos de interfaz correspondientes. El software podía ejecutarse de forma independiente en el segundo procesador, y se podían escribir aplicaciones para descargar trabajo del sistema anfitrión, permitiéndole realizar tareas de entrada/salida y, por consiguiente, acelerar el rendimiento. Dado que existía una amplia gama de CPU disponibles en diversos productos, un BBC Micro equipado con uno de estos coprocesadores podía ejecutar sistemas operativos para otras arquitecturas de procesador, como CP/M, DOS y Unix, junto con el software correspondiente.
Tendencias
Con el tiempo, las CPU han tendido a absorber la funcionalidad de los coprocesadores más populares. Las FPU se consideran ahora una parte integral de la arquitectura principal de un procesador; las unidades SIMD impulsaron el procesamiento multimedia, asumiendo el rol de diversas tarjetas aceleradoras DSP ; e incluso las GPU se han integrado en los chips de la CPU. No obstante, las unidades especializadas siguen siendo populares fuera de los ordenadores de sobremesa, para obtener potencia adicional y permiten una evolución continua independientemente de las líneas de productos de procesadores principales.
Véase también
- Multiprocesamiento , el uso de dos o más CPU dentro de un mismo sistema informático.
- Torrenza , una iniciativa para implementar soporte de coprocesador para procesadores AMD.
- Marco de trabajo OpenCL para escribir programas que se ejecutan en plataformas heterogéneas.
- Multiprocesamiento asimétrico
- acelerador de hardware
- acelerador de IA
Referencias
- ↑ Scott Mueller, Actualización y reparación de PC, 15.ª edición, Que Publishing, 2003 ISBN 0-7897-2974-1páginas 108–110
- ↑ Scott Mueller, Actualización y reparación de PC, Segunda edición , Que Publishing, 1992 ISBN 0-88022-856-3págs. 412-413
- ↑ William Ford, William R. Topp Lenguaje ensamblador y programación de sistemas para la familia M68000 Jones & Bartlett Learning, 1992 ISBN 0-7637-0357-5página 892 y siguientes.
- ↑ "Intel ofrece una nueva arquitectura para el descubrimiento con los coprocesadores Intel® Xeon Phi™" . Newsroom.intel.com. 12 de noviembre de 2012. Archivado del original el 3 de junio de 2013. Consultado el 16 de junio de 2013 .
- ↑ Erin Farquhar, Philip Bunce, Manual del programador MIPS , Morgan Kaufmann, 1994 ISBN 1-55860-297-6, apéndice A3 página 330
- ↑ "El Tianhe-2A de China utilizará un acelerador propio y alcanzará un pico de 95 petaflops" . hpcwire.com . 25 de septiembre de 2017. Archivado del original el 1 de diciembre de 2020. Consultado el 7 de abril de 2018 .
- unidad central de procesamiento
- Coprocesadores
- Computación heterogénea
- Dispositivos de computación OpenCL