Procesador superescalar ( ing. procesador superescalar ) - un procesador que admite el llamado paralelismo a nivel de instrucción (es decir, un procesador capaz de ejecutar varias instrucciones simultáneamente) debido a la inclusión de varios nodos funcionales idénticos (como ALU , FPU , multiplicador) en su informáticonúcleo multiplicador de enteros ), cambiador ( cambiador de enteros ) y otros dispositivos). La programación de la ejecución del flujo de instrucciones se realiza dinámicamente por el kernel computacional (no estáticamente por el compilador ).
Maneras de mejorar el rendimiento que se pueden usar juntas:
Cuando se usa una canalización, la cantidad de nodos sigue siendo la misma; El aumento del rendimiento se logra debido a la operación simultánea de los nodos responsables de las diferentes etapas de procesamiento de las instrucciones de un hilo . Cuando se usa superescalar, el aumento en el rendimiento se logra debido a la operación simultánea de una mayor cantidad de nodos idénticos que procesan de forma independiente las instrucciones de un hilo (incluidas más tuberías). Cuando se utilizan varios núcleos, cada núcleo ejecuta las instrucciones de un subproceso independiente, y cada uno de ellos puede ser superescalar o segmentado. Cuando se utilizan varios procesadores, cada procesador puede ser multinúcleo.
En un procesador superescalar, se obtiene una instrucción del flujo de instrucciones (en la memoria), se determina la presencia o ausencia de dependencia de datos de una instrucción en otras instrucciones y luego se ejecuta la instrucción. Al mismo tiempo, durante un ciclo, se pueden ejecutar varias instrucciones independientes.
Según la clasificación de Flynn, los procesadores superescalares de un solo núcleo se clasifican como procesadores SISD ( en inglés , flujo de instrucciones único , flujo de datos único: un flujo de instrucciones, un flujo de datos). Los procesadores similares que admiten instrucciones para trabajar con vectores cortos se pueden referir al grupo SIMD ( flujo de instrucciones único en inglés, flujos de datos múltiples : un flujo de instrucciones, varios flujos de datos) . Los procesadores superescalares multinúcleo pertenecen al grupo MIMD ( ing. m ultiple instruction streams, m ultiple data streams - m ultiple instruction streams, m ultiple streams de datos).
La primera computadora superescalar del mundo fue la CDC 6600 (1964) desarrollada por Seymour Cray [1] . En la URSS , la computadora Elbrus , que fue desarrollada en 1973-1979 en ITMiVT , fue considerada la primera computadora superescalar . La principal diferencia estructural entre Elbrus y el CDC 6600 (a excepción de un sistema de instrucciones completamente diferente visible para el programador, el tipo de pila ) era que todos los nodos estaban canalizados, como en los microprocesadores superescalares modernos . En base a este hecho, B. A. Babayan declaró la prioridad de las computadoras soviéticas en materia de construir computadoras superescalares, pero la máquina de Control Data , CDC 7600 ( en inglés ), ya siguiendo a la CDC 6600, fue creada en 1969, 4 años antes del inicio de desarrollo " Elbrus ", tenía una transportadora de actuadores. Además, un poco antes (en 1967), IBM lanzó la máquina IBM 360/91 , que utiliza la ejecución fuera de orden , el cambio de nombre de registros y la canalización de actuadores [2] .
Los primeros microprocesadores comerciales superescalares de un solo chip fueron el microprocesador MC88100 de 1988 de Motorola , el microprocesador Intel i960CA de 1989 y el microprocesador AMD 29000 serie 29050 de 1990 . El primer microprocesador superescalar disponible comercialmente fue el i960 , lanzado en 1988. En la década de 1990, Intel se convirtió en el principal fabricante de microprocesadores superescalares.
Todos los procesadores de propósito general desarrollados desde aproximadamente 1998, excepto los que se utilizan en dispositivos de bajo consumo , sistemas integrados y dispositivos alimentados por batería , son superescalares.
Los procesadores Pentium con microarquitectura P5 fueron los primeros procesadores superescalares x86 . Los microprocesadores Nx586 , P6 Pentium Pro y AMD K5 fueron los primeros procesadores superescalares en convertir instrucciones x86 en código interno que luego ejecutaron.
Si durante la operación del procesador varias instrucciones procesadas por la tubería son independientes , entonces el kernel puede ejecutarlas simultáneamente. En los sistemas superescalares, la decisión de lanzar una instrucción para su ejecución la toma el propio núcleo del procesador, lo que requiere una gran cantidad de recursos. En sistemas posteriores, como Elbrus -3 e Itanium , se utiliza la planificación estadística, es decir, el compilador decide qué instrucciones ejecutar al mismo tiempo ; el compilador encuentra instrucciones independientes y las combina en una instrucción larga ( arquitectura VLIW ).
El nodo del procesador superescalar, llamado despachador de instrucciones ( ID ), es responsable de:
El ID de nodo debe distribuir instrucciones entre nodos para que los nodos se ejecuten sin tiempo de inactividad. Los primeros procesadores superescalares tenían dos ALU y una FPU cada uno . Los procesadores modernos contienen más nodos. Por ejemplo, el procesador PowerPC 970 contiene cuatro ALU, dos FPU y dos nodos SIMD . Si el ID de nodo no cumple su función (no carga todos los nodos), el rendimiento del procesador superescalar no será mejor que el rendimiento del procesador escalar .
Un procesador superescalar suele ser capaz de ejecutar más de una instrucción por ciclo de reloj . Al mismo tiempo, la capacidad de procesar varias instrucciones al mismo tiempo no hace que la arquitectura sea superescalar, ya que la simultaneidad se puede lograr por otros métodos: usando una canalización , usando múltiples núcleos y/o usando múltiples procesadores .
Procesadores que admiten superescalar:
Arquitectura | Primera implementación | Año | Desarrollador | Otros desarrolladores de computadoras superescalares en esta arquitectura | Nota |
---|---|---|---|---|---|
CDC6600 | CDC6600 | 1964 | Corporación de datos de control | Canalización de ejecución de comandos, varias unidades de ejecución (pero no canalizadas). | |
CDC7600 | CDC7600 | 1969 | Corporación de datos de control | Canalización completa: tanto la ejecución de comandos como los propios actuadores. | |
Sistema IBM/360 Modelo 91 | IBM 360/91 | 1967 | IBM | Canalización completa con cambio de nombre de registro dinámico, ejecución desordenada de instrucciones y predicción de bifurcaciones | |
Elbrús | Elbrús -1 | 1979 | ITMiVT | ||
i960 | i960 | 1988 | Intel | ||
am29000 | am29050 | 1990 | AMD | ||
SPARC | SuperSPARC | 1992 | microsistemas de sol | Fujitsu , MCST | |
m88k , m68k | MC88110 MC68060 | 1992 | motorola | ||
x86 | pentium | 1993 | Intel | AMD VIA _ | |
MIPS | R8000 | 1994 | Tecnologías MIPS | Toshiba | |
BRAZO | Corteza A8 | BRAZO |
Las computadoras superescalares utilizan una serie de métodos para acelerar los cálculos que son principalmente característicos de ellas, pero tales técnicas se pueden usar en otros tipos de arquitecturas:
También se utilizan técnicas generales para aumentar la productividad, que también se utilizan en otro tipo de ordenadores:
Al ejecutar una instrucción, el procesador escalar procesa uno o dos números ( escalares ). Al ejecutar una instrucción, el procesador vectorial procesa varios números ( vector ). Cuando se ejecutan varias instrucciones al mismo tiempo, el procesador superescalar procesa simultáneamente varios números (varios escalares).
El aumento en el rendimiento de los procesadores superescalares está limitado por los siguientes factores:
La posibilidad de ejecución simultánea de instrucciones depende del grado de paralelismo interno de las instrucciones, de cuánto dependen unas instrucciones de otras. Una instrucción depende de otra instrucción si usa recursos que también usa otra instrucción, o si usa el resultado de otra instrucción. La ejecución simultánea es posible en los casos en que las instrucciones del programa son independientes entre sí. Por ejemplo, la instrucción " a = b + c" y la instrucción " d = e + f" pueden ejecutarse al mismo tiempo, ya que el resultado del cálculo de una de ellas no depende del resultado del cálculo de la otra. La a = b + cinstrucción “ ” y la instrucción “ b = e + f” son interdependientes y no pueden ejecutarse al mismo tiempo, ya que el resultado de su ejecución depende de cuál se ejecuta primero.
Con un aumento en el número de instrucciones ejecutadas simultáneamente, el tiempo dedicado a verificar sus interdependencias aumenta rápidamente y estos costos no deben exceder un ciclo de reloj. Se dedica tiempo a ejecutar las puertas lógicas que implementan el circuito de prueba y transferir datos entre las puertas. No es posible reducir los retrasos ni siquiera cambiando el proceso tecnológico . La disipación de potencia , la complejidad del circuito y los retrasos de la señal en las puertas no permiten aumentar el número de instrucciones transmitidas simultáneamente por encima de ocho.
Tecnologías de procesadores digitales | |||||||||
---|---|---|---|---|---|---|---|---|---|
Arquitectura | |||||||||
Set de instrucciones arquitectura | |||||||||
palabra maquina | |||||||||
Paralelismo |
| ||||||||
Implementaciones | |||||||||
Componentes | |||||||||
Administración de energía |