Superescalar

Un diseño de CPU superescalar realiza una forma de computación paralela denominada paralelismo a nivel de instrucción dentro de una única CPU, que permite realizar más trabajo a la misma velocidad de reloj. Esto significa que la CPU ejecuta más de una instrucción durante un ciclo de reloj ejecutando varias instrucciones al mismo tiempo (lo que se denomina envío de instrucciones) en unidades funcionales duplicadas. Cada unidad funcional no es más que un recurso de ejecución dentro del núcleo de la CPU, como una unidad aritmética lógica (ALU), una unidad de coma flotante (FPU), un cambiador de bits o un multiplicador.

La mayoría de las CPUs superescalares también están canalizadas, pero es posible tener una CPU superescalar no canalizada o una CPU no superescalar canalizada.

La técnica superescalar se apoya en varias características del núcleo de la CPU:

  1. Las instrucciones provienen de una lista de instrucciones ordenadas.
  2. El hardware de la CPU puede averiguar qué instrucciones tienen qué dependencias de datos.
  3. Puede leer múltiples instrucciones por ciclo de reloj

Cada instrucción ejecutada por un procesador escalar cambia uno o dos datos a la vez, pero cada instrucción ejecutada por un procesador vectorial maneja muchos datos a la vez. Un procesador superescalar es una mezcla de los dos:

  1. Cada instrucción procesa un dato.
  2. Hay varias unidades funcionales duplicadas dentro de cada núcleo de la CPU, de modo que varias instrucciones manejan elementos de datos independientes al mismo tiempo.

En una CPU superescalar, un despachador de instrucciones lee las instrucciones de la memoria y decide cuáles pueden ejecutarse en paralelo, despachándolas en las múltiples unidades funcionales duplicadas disponibles dentro de la CPU.

El diseño de la CPU superescalar se ocupa de mejorar la precisión del despachador de instrucciones y de permitirle mantener ocupadas las múltiples unidades funcionales en todo momento. Desde 2008, todas las CPU de propósito general son superescalares, una CPU superescalar típica puede incluir hasta 4 ALU, 2 FPU y dos unidades SIMD. Si el despachador no puede mantener todas las unidades ocupadas, el rendimiento de la CPU será menor.

Canalización superescalar simple. Al obtener y enviar dos instrucciones a la vez, se puede completar un máximo de dos instrucciones por ciclo.Zoom
Canalización superescalar simple. Al obtener y enviar dos instrucciones a la vez, se puede completar un máximo de dos instrucciones por ciclo.

Placa de procesamiento de un ordenador paralelo CRAY T3e con cuatro procesadores superescalares AlphaZoom
Placa de procesamiento de un ordenador paralelo CRAY T3e con cuatro procesadores superescalares Alpha

Limitaciones

La mejora del rendimiento en el diseño de CPUs superescalares está limitada por dos cosas:

  1. El nivel de paralelismo incorporado en la lista de instrucciones
  2. La complejidad y el coste de tiempo del despachador y la comprobación de la dependencia de los datos.

Incluso con una comprobación de dependencias infinitamente rápida dentro de una CPU superescalar normal, si la propia lista de instrucciones tiene muchas dependencias, esto también limitaría la posible mejora del rendimiento, por lo que la cantidad de paralelismo incorporado en el código es otra limitación.

Por muy rápida que sea la velocidad del despachador, existe un límite práctico en cuanto al número de instrucciones que pueden despacharse simultáneamente. Aunque los avances en el hardware permitirán tener más unidades funcionales (por ejemplo, ALU) por núcleo de CPU, el problema de comprobar las dependencias de las instrucciones aumenta hasta el punto de que el límite de despacho superescalar alcanzable es algo pequeño. -- Es probable que sea del orden de cinco a seis instrucciones despachadas simultáneamente.

Alternativas

  • El multithreading simultáneo, a menudo abreviado como SMT, es una técnica para mejorar la velocidad global de las CPU superescalares. El SMT permite que varios hilos de ejecución independientes utilicen mejor los recursos disponibles dentro de un procesador superescalar moderno.
  • Procesadores multinúcleo: los procesadores superescalares se diferencian de los procesadores multinúcleo en que las múltiples unidades funcionales redundantes no son procesadores completos. Un único procesador superescalar está compuesto por unidades funcionales avanzadas como la ALU, el multiplicador de enteros, el cambiador de enteros, la unidad de coma flotante (FPU), etc. Puede haber varias versiones de cada unidad funcional para permitir la ejecución de muchas instrucciones en paralelo. Esto difiere de los procesadores multinúcleo que procesan simultáneamente instrucciones de múltiples hilos, un hilo por núcleo.
  • Procesadores canalizados: los procesadores superescalares también se diferencian de una CPU canalizada, en la que las múltiples instrucciones pueden estar simultáneamente en varias etapas de ejecución.

Las distintas técnicas alternativas no se excluyen mutuamente: pueden combinarse (y a menudo se combinan) en un único procesador, por lo que es posible diseñar una CPU multinúcleo en la que cada núcleo es un procesador independiente con múltiples canalizaciones superescalares paralelas. Algunos procesadores multinúcleo también incluyen capacidad vectorial.

Páginas relacionadas

Preguntas y respuestas

P: ¿Qué es la tecnología superescalar?


R: La tecnología superescalar es una forma de computación paralela básica que permite procesar más de una instrucción en cada ciclo de reloj utilizando varias unidades de ejecución al mismo tiempo.

P: ¿Cómo funciona la tecnología superescalar?


R: La tecnología superescalar implica que las instrucciones llegan al procesador en orden, buscando dependencias de datos mientras se ejecuta y cargando más de una instrucción en cada ciclo de reloj.

P: ¿Cuál es la diferencia entre los procesadores escalares y vectoriales?


R: En un procesador escalar, las instrucciones suelen trabajar con uno o dos elementos de datos a la vez, mientras que en un procesador vectorial, las instrucciones suelen trabajar con muchos elementos de datos a la vez. Un procesador superescalar es una mezcla de ambos, ya que cada instrucción procesa un elemento de datos pero se ejecuta más de una instrucción a la vez, por lo que el procesador maneja muchos elementos de datos a la vez.

P: ¿Qué papel desempeña un despachador de instrucciones preciso en un procesador superescalar?


R: Un despachador de instrucciones preciso es muy importante para un procesador superescalar, ya que garantiza que las unidades de ejecución estén siempre ocupadas con el trabajo que probablemente se necesitará. Si el despachador de instrucciones no es preciso, es posible que haya que desechar parte del trabajo, lo que haría que no fuera más rápido que un procesador superescalar.

P: ¿En qué año todas las CPU normales se convirtieron en superescalares?


R: Todas las CPU normales se convirtieron en superescalares en 2008.

P: ¿Cuántas ALU, FPU y unidades SIMD puede haber en una CPU normal?


R: En una CPU normal puede haber hasta 4 ALU, 2 FPU y 2 unidades SIMD.

AlegsaOnline.com - 2020 / 2023 - License CC3