Coprocesador

El coprocesador es un tipo de procesador que se caracteriza por ser auxiliar de otro procesador. Los coprocesadores también permiten a los fabricantes de computadoras ofrecer sistemas personalizados, ofreciendo energía adicional solo a los clientes que realmente la necesitan y pagan por ella. Los coprocesadores aparecieron por primera vez en los mainframes en la década de 1960 [1] , generalmente utilizados para realizar cálculos de coma flotante, pero también para controlar los canales de E/S .

Historia

Los coprocesadores para la aritmética de punto flotante, que se originaron como un chip para ayudar a los grandes procesadores de mainframe en los cálculos, se volvieron comunes en las computadoras de escritorio de la década de 1980 y principios de la de 1990 . Los primeros procesadores de 8 y 16 bits usaban procesos de software para realizar operaciones de coma flotante: en sistemas en los que tanto el hardware como el software admitían un coprocesador matemático , tales cálculos podían realizarse mucho más rápido. Los coprocesadores matemáticos eran una compra común para todos aquellos usos en los que se requería una alta potencia de procesamiento para manejar números de coma flotante complejos, como en el software CAD y en el software científico y de ingeniería. Los primeros coprocesadores matemáticos, como AMD 9511 , Intel 8231 y los fabricados por Weitek , se trataban como dispositivos periféricos, mientras que las versiones posteriores, como Intel 8087 , Motorola 68881 y National 32081 , estaban mucho más integrados con la CPU.

Otro tipo de coprocesador que se hizo común durante esos años fue el encargado de la gestión de video simple, como el ANTIC de los Atari de 8 bits , el TMS9918 de las computadoras MSX y de los Texas Instruments TI-99/4A : todos estos Los procesadores se denominaron Video Display Controller o VDC. Un ejemplo de un procesador de gráficos real es el Copper de Commodore Amigas , una máquina de estado finito programable ("Copper" significa "Coprocesador") que podría ejecutar un flujo de instrucciones sincronizadas con el hardware de video.

El desarrollo de los microprocesadores hizo que la integración de una unidad de computación de punto flotante directamente en el troquel del chip fuera cada vez menos costosa con el tiempo, por lo que el uso de coprocesadores matemáticos externos disminuyó lentamente. Uno de los últimos coprocesadores externos es el Intel 80387 mientras que una de las primeras CPU que integra una FPU es el Intel 80486 . Actualmente, su uso en ordenadores de sobremesa está completamente abandonado mientras que, por otro lado, la necesidad de coprocesadores gráficos ( GPU ) especialmente potentes es cada vez más acuciante debido al creciente número de cálculos que requieren los juegos 3D .

Funciones

La función del coprocesador es aligerar la carga de trabajo del procesador al que es auxiliar. Normalmente, la carga de trabajo está relacionada con un procesamiento particular. A menudo, el coprocesador es, por lo tanto, un procesador optimizado especializado en la ejecución de elaboraciones particulares para ser más eficiente en las tareas que le han sido encomendadas. Son comunes los coprocesadores de la unidad central de procesamiento, de hecho, en las computadoras contemporáneas , la CPU suele estar flanqueada por procesadores auxiliares como la GPU y la FPU . Las operaciones realizadas pueden ser cálculos de punto flotante , funciones gráficas , manejo de señales , procesamiento de datos o funciones criptográficas . Al liberar al procesador principal de las tareas más pesadas, los coprocesadores pueden acelerar el rendimiento de un sistema.

Un coprocesador puede no ser un procesador de propósito general: por ejemplo, algunos coprocesadores no pueden ejecutar instrucciones en la memoria, ejecutar instrucciones de control de flujo de programas u operaciones de entrada/salida, administrar la memoria. Estos chips requieren que el procesador procese sus instrucciones y maneje todas las operaciones relacionadas con las funciones que deben realizar. En algunas arquitecturas, el coprocesador es más una computadora de propósito general, pero está configurado para realizar solo algunas funciones limitadas bajo el control directo del procesador que supervisa sus tareas.

Tipos

Los tipos particulares de coprocesadores son los siguientes:

Coprocesador matemático

El coprocesador matemático es un coprocesador optimizado especializado en cálculos matemáticos particulares . Los primeros coprocesadores matemáticos de la historia eran componentes separados de la unidad central de procesamiento. Hoy, normalmente, el coprocesador matemático y la unidad central de procesamiento están integrados en el mismo microprocesador . Actualmente el tipo de coprocesador matemático más extendido es la unidad de cálculo de coma flotante (más conocida con las siglas prestadas del idioma inglés "FPU"), un coprocesador matemático especializado en cálculos de coma flotante . Todas las unidades de procesamiento central modernas están flanqueadas por una unidad de computación de punto flotante, y ambas están implementadas en el mismo circuito integrado .

Unidad de procesamiento de gráficos

La unidad de procesamiento gráfico (más conocida por el acrónimo tomado del idioma inglés "GPU") es un coprocesador optimizado especializado en renderizar imágenes gráficas. Ha habido una tendencia desde hace algunos años a implementar la unidad de procesamiento de gráficos y la unidad central de procesamiento en el mismo circuito integrado .

Controlador de dispositivo

El controlador de periféricos o procesador de entrada/salida es un coprocesador que se utiliza para gestionar uno o más periféricos . El controlador periférico ha existido desde la primera generación de computadoras electrónicas porque el periférico suele ser mucho más lento que la unidad central de procesamiento. La presencia del controlador de periféricos, por lo tanto, evita que la unidad central de procesamiento sufra fuertes ralentizaciones: liberada de la gestión de periféricos, la unidad central de procesamiento es libre de utilizar toda su capacidad de cómputo en las tareas que requieren esta capacidad.

Coprocesadores Intel

La PC IBM original incluía un zócalo para el coprocesador matemático ( FPU ) Intel 8087 , generalmente elegido por los usuarios de computadoras que lo usaban para ejecutar CAD o programas con cálculos numéricos altos: ese coprocesador aceleraba los cálculos de punto flotante en 50 veces. Los usuarios que utilizaban el ordenador para tareas de oficina, por ejemplo con programas de tratamiento de textos , situaciones en las que el uso del coprocesador no hubiera sido beneficioso, podían evitar la compra conteniendo el coste del ordenador.

El 8087 estaba bien integrado con Intel 8086/8088 , interceptando los códigos de operación de las operaciones de coma flotante presentes en el código de máquina que se ejecuta en la CPU. En cambio, un procesador 8088 sin un 8087 interpretó esas instrucciones como interrupciones internas que podrían manejarse para generar un evento de error o activar un emulador de software de las instrucciones 8087.

Otro coprocesador para las CPUs 8086/8088 fue el Intel 8089 , encargado de gestionar la entrada/salida . Utilizaba la misma técnica de programación que el 8087 para manejar operaciones de E/S, como transferir datos de la memoria a un dispositivo periférico, reduciendo así la carga en la CPU. Sin embargo, IBM no utilizó este coprocesador, por lo que Intel decidió abandonar la producción.

Durante la era de las computadoras de escritorio de 8 y 16 bits, otros coprocesadores matemáticos muy populares fueron los de Weitek , conocido sobre todo por los coprocesadores para la serie 1067 80386. Esta expansión se debió a que Intel lanzó su propia FPU para la procesador, el Intel 80387 , casi 2 años después de su presentación.

El procesador 486DX incluía una FPU en chip. Intel también produjo una versión más económica del procesador, el 486SX: en comparación con el modelo DX, solo difería en la ausencia de dicha unidad para los cálculos de punto flotante. Simultáneamente con el 486SX, también introdujo el coprocesador 487SX que esencialmente reemplazó al procesador principal cuando se instaló, ya que el 487SX era un 486DX completo con un pinout diferente .

Los procesadores Intel post-486 integraban la FPU directamente en el chip gracias a la reducción de costes derivada de la evolución técnica de los procesos productivos, eliminando así las ventajas económicas de disponer de un coprocesador matemático externo. Además, habría sido muy difícil adaptar las técnicas de diseño de la circuitería externa adecuada para la gestión de un procesador de 75 MHz a los tiempos de espera, el consumo de energía y los estándares de interferencia electromagnética requeridos por las velocidades de las CPU modernas, operando a diferentes Gigahercios . Las FPU integradas en los procesadores todavía se denominan coprocesadores porque funcionan en paralelo con la CPU principal.

Coprocesadores Motorola

La familia de procesadores Motorola 68000 tenía sus propios coprocesadores dedicados: eran los Motorola 68881/68882 , que proporcionaban capacidades de aceleración de cómputo de coma flotante como las contrapartes de Intel. Los ordenadores que utilizaban CPUs de la serie 68000 pero no montaban el coprocesador podían gestionar excepciones para activar un software emulador de instrucciones de punto flotante que, aunque con menor rendimiento, permitía tener una única versión del programa distribuida para ambos casos.

Coprocesadores en las PC modernas

Los coprocesadores gráficos o GPU , pensados ​​como un procesador montado en una tarjeta gráfica adicional , comenzaron a hacer su aparición a mediados de los 90, cuando fabricantes del calibre de Matrox , powerVR , 3dfx , nVIDIA , S3 y otros introdujeron tarjetas en el mercado. especialmente diseñado para agilizar la gestión de gráficos 2D/3D. Actualmente, las GPU tienen una complejidad y una potencia de cálculo a veces superiores a las de los microprocesadores más rápidos. [2]

Algunos modelos de tarjetas de sonido han sido equipados con procesadores dedicados capaces de mezclar la señal digital multicanal y aplicar efectos de audio en tiempo real desde principios de los 90: ejemplos de tales tarjetas son Gravis Ultrasound y Sound Blaster AWE32 . Las tarjetas Sound Blaster Audigy y Sound Blaster X-Fi son ejemplos más recientes de tales aplicaciones.

En 2006 , AGEIA anunció una placa adicional para computadoras llamada PhysX : está diseñada para realizar cálculos físicos complejos para aligerar las tareas de la CPU y la GPU y asignar su potencia a los cálculos restantes. En 2008 , Nvidia compró los derechos de la tarjeta y comenzó a integrar la funcionalidad en sus chips, desarrollando tecnología CUDA que funciona de manera similar.

También en 2006, BigFoot Systems presentó una tarjeta llamada "KillerNIC" que ejecutaba su propio kernel de Linux en un sistema FreeScale PowerQUICC de 400 MHz. El chip FreeScale se denominó Unidad de procesamiento de red o NPU.

En la segunda mitad de la década de 2000 , se desarrolló la nueva tecnología Cell , una microarquitectura para un procesador de propósito general, desde dispositivos embebidos hasta mainframes , soportando computación paralela .

En 2008 , Apple y más tarde Khronos Group introdujeron la biblioteca OpenCL , que admite una variedad de dispositivos como CPU, GPU y otros procesadores.

Otros coprocesadores

Notas

  1. ^ Coprocesadores de E / S , en gigaflop.demon.co.uk , página de inicio de Vas. Consultado el 16/10/10 .
  2. ^ GPU vs CPU: el desafío entre nVidia e Intel continúa , en omniablog.net , OmniaBlog, 07/04/2010. Consultado el 17 de octubre de 2010 .

Artículos relacionados

Otros proyectos

Enlaces externos