Coprocesador

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Tipo de procesador de computadora
AM9511-1 coprocesador aritmético

Un coprocesador es un procesador de computadora que se utiliza para complementar las funciones del procesador principal (la CPU). Las operaciones realizadas por el coprocesador pueden ser aritmética de punto flotante, gráficos, procesamiento de señales, procesamiento de cadenas, criptografía o interfaz de E/S con dispositivos periféricos. Al descargar del procesador principal tareas que requieren un uso intensivo del procesador, los coprocesadores pueden acelerar el rendimiento del sistema. Los coprocesadores permiten personalizar una línea de computadoras, de modo que los clientes que no necesitan rendimiento adicional no necesitan pagar por ello.

Funcionalidad

Los coprocesadores varían en su grado de autonomía. Algunas (como las FPU) dependen del control directo a través de instrucciones del coprocesador, integradas en el flujo de instrucciones de la CPU. Otros son procesadores independientes por derecho propio, capaces de trabajar de forma asíncrona; todavía no están optimizados para código de propósito general, o son incapaces de hacerlo debido a un conjunto de instrucciones limitado centrado en acelerar tareas específicas. Es común que estos sean controlados por acceso directo a la memoria (DMA), con el procesador host (una CPU) creando una lista de comandos. El Emotion Engine de PlayStation 2 contenía una inusual unidad vectorial SIMD similar a un DSP capaz de ambos modos de funcionamiento.

Historia

Para aprovechar al máximo el tiempo del procesador de la computadora central, las tareas de entrada/salida se delegaron a sistemas separados llamados Channel I/O. La computadora central no requeriría ningún procesamiento de E/S, sino que simplemente establecería parámetros para una operación de entrada o salida y luego indicaría al procesador de canal que lleve a cabo toda la operación. Al dedicar subprocesadores relativamente simples para manejar el formateo y el procesamiento de E/S que requieren 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 volvieron comunes 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 admitía un coprocesador, los cálculos en punto flotante se podían realizar mucho más rápido. Los coprocesadores matemáticos fueron compras populares para los usuarios de software de diseño asistido por computadora (CAD) y cálculos científicos y de ingeniería. Algunas unidades de punto flotante, como las FPU AMD 9511, Intel 8231/8232 y Weitek, se trataron como dispositivos periféricos, mientras que otras, como Intel 8087, Motorola 68881 y National 32081, se integraron más estrechamente con la CPU.

Otra forma de coprocesador era un coprocesador de visualización de vídeo, como el que se utilizaba en los ordenadores domésticos de la familia Atari de 8 bits, TI-99/4A y MSX, que se denominaban "controladores de visualización de vídeo". El chipset personalizado de Amiga incluye una unidad conocida como Copper, así como un blitter para acelerar la manipulación de mapas de bits en la memoria.

A medida que se desarrollaron los microprocesadores, el costo de integrar las funciones aritméticas de punto flotante en el procesador disminuyó. Las altas velocidades del procesador también dificultaron la implementación de un coprocesador estrechamente integrado. Los coprocesadores matemáticos empaquetados por separado ahora son poco comunes en las computadoras de escritorio. Sin embargo, la demanda de un coprocesador gráfico dedicado ha crecido, particularmente debido a la creciente demanda de gráficos 3D realistas en los juegos de ordenador.

Inteligencia

i8087 e i80287 microarquitectura
i80387 microarquitectura

La PC IBM original incluía un zócalo para el coprocesador de punto flotante Intel 8087 (también conocido como FPU), que era una opción popular para las personas que usaban la PC para diseño asistido por computadora o cálculos matemáticos intensivos. En esa arquitectura, el coprocesador acelera la aritmética de punto flotante del orden de cincuenta veces. Los usuarios que sólo utilizaban el PC para el procesamiento de textos, por ejemplo, se ahorraban el elevado coste del coprocesador, que no habría acelerado el rendimiento de las operaciones de manipulación de textos.

El 8087 estaba estrechamente integrado con el 8086/8088 y respondía a códigos de operación de código de máquina de punto flotante insertados en el flujo de instrucciones del 8088. Un procesador 8088 sin un 8087 no podría interpretar estas instrucciones, lo que requería versiones separadas de programas para sistemas FPU y no FPU, o al menos una prueba en tiempo de ejecución para detectar la FPU y seleccionar las funciones matemáticas apropiadas de la biblioteca.

Intel 80386DX CPU con el coprocesador de matemáticas 80387DX

Otro coprocesador para el procesador central 8086/8088 fue el coprocesador de entrada/salida 8089. Utilizaba la misma técnica de programación que 8087 para operaciones de entrada/salida, como la transferencia de datos desde la memoria a un dispositivo periférico, reduciendo así la carga en la CPU. Pero IBM no lo utilizó en el diseño de PC de IBM e Intel detuvo el desarrollo de este tipo de coprocesador.

El microprocesador Intel 80386 utilizaba una función "matemática" coprocesador (el 80387) para realizar operaciones de punto flotante directamente en el hardware. El procesador Intel 80486DX incluía hardware de punto flotante en el chip. Intel lanzó un procesador de costo reducido, el 80486SX, que no tenía hardware de punto flotante, y también vendió un coprocesador 80487SX que esencialmente deshabilitaba el procesador principal cuando estaba instalado, ya que el 80487SX era un 80486DX completo con un conjunto diferente de conexiones de pines.

Los procesadores Intel posteriores al 80486 integraron hardware de punto flotante en el chip del procesador principal; Los avances en la integración eliminaron la ventaja de costos de vender el procesador de punto flotante como elemento opcional. Sería muy difícil adaptar técnicas de placa de circuito adecuadas a una velocidad de procesador de 75 MHz para cumplir con los estándares de retardo de tiempo, consumo de energía e interferencia de radiofrecuencia requeridos a velocidades de reloj del rango de gigahercios. Estos procesadores de punto flotante en chip todavía se denominan coprocesadores porque funcionan en paralelo con la CPU principal.

Durante la era de las computadoras de escritorio de 8 y 16 bits, otra fuente común de coprocesadores de punto flotante fue Weitek. Estos coprocesadores tenían un conjunto de instrucciones diferente al de los coprocesadores Intel y usaban un zócalo diferente, que no todas las placas base admitían. Los procesadores Weitek no proporcionaban funciones matemáticas trascendentales (por ejemplo, funciones trigonométricas) como la familia Intel x87 y requerían bibliotecas de software específicas para respaldar sus funciones.

Motorola

La familia Motorola 68000 tenía los coprocesadores 68881/68882 que proporcionaban una aceleración de velocidad de punto flotante similar a la de los procesadores Intel. Las computadoras que usaban la familia 68000 pero no estaban equipadas con el procesador de punto flotante de hardware podían capturar y emular las instrucciones de punto flotante en el software, que, aunque más lento, permitía distribuir una versión binaria del programa para ambos casos. El coprocesador de administración de memoria 68451 fue diseñado para funcionar con el procesador 68020.

Coprocesadores modernos

A partir de 2001, las unidades de procesamiento de gráficos (GPU) dedicadas en forma de tarjetas gráficas son algo común. Ciertos modelos de tarjetas de sonido han sido equipados con procesadores dedicados que proporcionan mezcla digital multicanal y efectos DSP en tiempo real ya entre 1990 y 1994 (el Gravis Ultrasound y el Sound Blaster AWE32 son ejemplos típicos), mientras que el Sound Blaster Audigy y el Sound Blaster X -Fi son ejemplos más recientes.

En 2006, AGEIA anunció una tarjeta complementaria para computadoras a la que llamó PhysX PPU. PhysX fue diseñado para realizar cálculos físicos complejos para que la CPU y la GPU no tengan que realizar estos cálculos que consumen mucho tiempo. Fue diseñado para videojuegos, aunque teóricamente se podrían desarrollar otros usos matemáticos. En 2008, Nvidia compró la empresa y eliminó gradualmente la línea de tarjetas PhysX; la funcionalidad se agregó a través de un software que permite a sus GPU representar PhysX en núcleos que normalmente se usan para el procesamiento de gráficos, utilizando su software de motor Nvidia PhysX.

En 2006, BigFoot Systems presentó una tarjeta PCI complementaria a la que bautizaron KillerNIC que ejecutaba su propio kernel especial de Linux en un FreeScale PowerQUICC que funcionaba a 400 MHz, llamando al chip FreeScale Unidad de Procesamiento de Red o NPU.

SpursEngine es una tarjeta complementaria orientada a medios con un coprocesador basado en la microarquitectura Cell. Las SPU son en sí mismas coprocesadores vectoriales.

En 2008, Khronos Group lanzó OpenCL con el objetivo de admitir CPU de uso general, GPU ATI/AMD y Nvidia (y otros aceleradores) con un único lenguaje común para núcleos informáticos.

En la década de 2010, algunos dispositivos informáticos móviles habían implementado el concentrador de sensores como coprocesador. Ejemplos de coprocesadores utilizados para manejar la integración de sensores en dispositivos móviles incluyen los coprocesadores de movimiento Apple M7 y M8, Qualcomm Snapdragon Sensor Core y Qualcomm Hexagon, y la Unidad de procesamiento holográfico para Microsoft HoloLens.

En 2012, Intel anunció el coprocesador Intel Xeon Phi.

A partir de 2016, varias 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 de visión, TrueNorth y Zeroth) y, a partir de 2018, dichos chips de IA se encuentran en teléfonos inteligentes como los de Apple y varios proveedores de teléfonos Android.

Otros coprocesadores

  • La arquitectura MIPS admite hasta cuatro unidades coprocesadoras, utilizadas para la gestión de memoria, aritmética de punto flotante y dos coprocesadores no definidos para otras tareas como aceleradores gráficos.
  • Utilizando FPGA (campos de puertas programables), se pueden crear coprocesadores personalizados para acelerar tareas específicas de procesamiento, como el procesamiento digital de señales (por ejemplo, Zynq, combina núcleos ARM con FPGA en una sola matriz).
  • Aceleradores TLS/SSL, utilizados en servidores; tales aceleradores solían ser tarjetas, pero en tiempos modernos son instrucciones para cripto en las CPUs convencionales.
  • Algunos chips multi-core se pueden programar para que uno de sus procesadores sea el procesador primario, y los otros procesadores están apoyando coprocesadores.
  • China Matrix 2000 128 Core PCI-e coprocessor es un acelerador propietario que requiere una CPU para ejecutarla, y ha sido empleado en una actualización de la supercomputadora Tianhe-2 de 17.792 nodos (2 Intel Knights Bridge+ 2 Matrix 2000 cada uno), ahora llamada 2A, duplicando su velocidad en 95 petaflops, superando el más rápido del mundo.
  • Una gama de coprocesadores estaban disponibles para Acorn BBC Micro computadoras. En lugar de los gráficos o dispositivos aritméticos para fines especiales, estos eran CPUs para fines generales (como 8086, Zilog Z80 o 6502) a los que el sistema operativo asignaba determinados tipos de tareas, descargandolos de la CPU principal del ordenador y resultando en aceleración. Además, un BBC Micro equipado con un coprocesador fue capaz de ejecutar software de código de máquina diseñado para otros sistemas, como CP/M y DOS que están escritos para procesadores 8086.

Tendencias

Con el tiempo, las CPU han tendido a crecer para absorber la funcionalidad de los coprocesadores más populares. Las FPU ahora se consideran una parte integral del sistema operativo de un procesador. tubería principal; Las unidades SIMD dieron aceleración a los multimedia, asumiendo el papel de varias tarjetas aceleradoras DSP; e incluso las GPU se han integrado en las CPU. No obstante, las unidades especializadas siguen siendo populares fuera de las máquinas de escritorio y para obtener energía adicional, y permiten una evolución continua independientemente de las principales líneas de productos de procesadores.

Contenido relacionado

Tarjeta perforada

Una tarjeta perforada es un trozo de papel rígido que contiene datos digitales representados por la presencia o ausencia de agujeros en posiciones...

CPython

CPython es la implementación de referencia del lenguaje de programación Python. Escrito en C y Python, CPython es la implementación predeterminada y más...

Arquitectura Harvard

La Arquitectura Harvard es un modelo de arquitectura informática que separa físicamente la memoria de código de programa de la memoria de almacenamiento de...
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save