Pipelining

Pipeline de instrucciones

Para mejorar el rendimiento de un CPU existen dos opciones:

  1. Mejorar el hardware, introduciendo circuitos mas rapidos
  2. Hacer que el CPU pueda hacer mas de una operación al mismo tiempo.
Debido a que existe un limite en la velocidad  de un hardware, y conseguir componentes fisicos es mas costoso. La mejor opción es la segunda, para esto tenemos el pipeline.
El pipeline básicamente es una técnica por medio de la cual se puede traslapar la ejecución de instrucciones. Se divide en segmentos o etapas que están conectadas unas con otras.

Un ejemplo de pipeline en la vida real:

En una lavandería tenemos a cuatro individuos (A,B,C,D). Cada uno tiene que lavar, secar, doblar y acomodar su ropa. Cada proceso toma 30 minutos. Si ocurre un proceso secuencial, es decir que el individuo A espera a que termine el individuo B y el C espera al D y así consecutivamente. El tiempo total para que los individuos terminen sus tareas sería de 8 horas. 

¿Que pasaría si se aplica el concepto del pipeline ?
Los individuos empezarían sus tareas uno detrás del otro, sin esperar a que el anterior complete las cuatro tareas. Cuando el individuo A termine de lavar y empiece a secar su ropa el individuo B empieza a lavar, una vez el individuo A empieza a doblar su ropa, el individuo B empieza a secarla y el C a lavar y así consecutivamente. Este proceso seguiria hasta que todos realicen sus tareas, y el tiempo para que esto suceda ahora sería de 3 horas y 30 minutos.
Así es como la técnica del pipeline mejora la eficiencia de un sistema.

Ejecución en un procesador:

Ejemplo de un pipeline de 4 etapas

El concepto aplica igual para un procesador. 
En la imagen de ejemplo tendriamos un procesador de 4 etapas, y 4 instrucciones. 

En el ciclo 1 vemos como la primera instrucción pasa por una etapa. En el ciclo dos la instrucción 1 pasa al a siguiente etapa, mientras que la instrucción 2 pasa por la etapa numero 1. El proceso es así hasta que las 4 instrucciones hayan pasado por las 4 etapas.
Se realizan 8 ciclos del reloj, reducidos significativamente con la técnica del pipeline. Sin esta técnica la cantidad de ciclos sería el doble. 

Etapas en un procesador RISC

El procesador RISC tiene una línea de instrucciones de 5 etapas para ejecutar todas las instrucciones en el conjunto de instrucciones RISC.

  • Etapa 1 (obtención de instrucción)
    En esta etapa, la CPU lee las instrucciones de la dirección en la memoria cuyo valor está presente en el contador del programa.
  • Etapa 2 (decodificación de instrucciones)
    En esta etapa, la instrucción se decodifica y se accede al archivo de registro para obtener los valores de los registros utilizados en la instrucción.
  • Etapa 3 (ejecución de la instrucción)
    En esta etapa, se realizan las operaciones de la ALU.
  • Etapa 4 (Acceso a la memoria)
    En esta etapa, los operandos de memoria se leen y escriben desde/a la memoria que está presente en la instrucción.
  • Etapa 5 (Escribir de nuevo)
    En esta etapa, el valor calculado se escribe de nuevo en el registro presente en la instrucción.
Conflictos en el Pipeline
Existen ciertos factores que puedan causar que el proceso no tenga un funcionamiento normal.

  • Variaciones en el tiempo de las etapas
  • Errores en los datos.
  • Saltos (Branches)
  • Interrupciones
  • Dependencia de los datos
Ventajas y Desventajas

Ventajas:
  • El tiempo de ciclos del procesador es reducdo
  • Aumenta el rendimiento del sistema
  • Hace que el sistema sea confiable
Desventajas:
  • El diseño de un procesador pipeline es complejo por lo tanto es más costoso de fabricar.
  • La latencia de instrucciones es más.
Fuentes:

Comentarios

Entradas populares de este blog

Arquitectura del conjunto de instrucciones (ISA)

Ejercicio lenguaje ensamblador