lunes, 18 de noviembre de 2013

PIPELINE

PIPELINE
Introduccion.- En esta entrada se describira una tecnica para optimizar el performance de una arquitectura, en este caso para mejorar la velocidad y eficiencia del CPU.

Comparacion:
 Los procesos pipeline se basan en etapas para ejecutar toda la tarea
similar a una planta de fabricacion de vehiculos, donde los procesos 
son realizados por faces y cada maquina se encarga de realizar lo que se
le designo.

Definicion.- Pipeline esta relacionado con concurrencia y es la capacidad de ejecutar procesos simultaneamente con una unica CPU.

Segun Rodriguez L(2007):
"El uso de pipeline permite que el procesador sea capaz de procesar varias instrucciones al mismo tiempo"(p.770)
Aunque hoy en dia existen procesadores multinucleo donde un procesador A es independiente del procesador B y cada uno puede ejecutar procesos diferentes o paralelos al mismo tiempo. Este beneficio se consigue a un costo alto, con la segmentacion se consigue un rendimiento optimo a un buen costo. 

Un buen ejemplo del pipelining es comparar la ejecucion de un proceso en varias fases en el primer caso por:
Un operario:
Varios operarios:
  Un operario puede empaquetar paquetes en un determinado tiempo, sin embargo se podra enpaquetar paquetes mas rapidamente si el proceso es realizado por varias personas. Podemos ver que el segundo caso resulta ser mas optimo.

En las arquitecturas puede presentarse algo similar existen tiempos donde el procesador no puede acceder a la memoria para procesar la siguiente instruccion, en este caso tendra que esperar a que la memoria no este ocupada para ejecutar la instruccion. 
Sin embargo en las nuevas arquitecturas se utiliza una tecnica pipeline denominada prealimentacion el cual se basa en dos etapas:
  •  La primera consta de cargar en un buffer con la siguiente instruccion a ejecutar en los tiempos donde la memoria esta libre mientras el procesador ejecuta procesos.
  • La segunda etapa consta de que el procesador recojera la instruccion a ejecutar del buffer y seguidamente procesarla mientras se etara realizando de nuevo la etapa 1.
Asi mediante estas dos etapas se mejora el procesamiento y el rendimiento lo que significa que mientras mas etapas o mas dispositivos realizando procesos simultaneamente el rendimiento sera mejor.
Todo parece ser muy claro mejorar el rendimiento significara aumentar etapas, sin embargo en los años sesenta IBM se dio cuenta que el incremento de etapas aumentaba el control que se deberia tener por las mismas inclusive la dependencia de las etapas.

Comparaciones:
Se debe tomar en cuenta que pipeline no es igual a paralelismo ya que pipeline divide las tareas en varias etapas sin embargo el procesamiento paralelo las ejecuciones son realizadas por procesadores replicados.

Con tecnicas pipeline el procesador queda limitado por el numero de etapas, mientras que en procesamiento paralelo el rendiminto aumentara a medida que se aumente el numero de procesadores y se cuente con la capacidad para dividir los procesos y repartirlos.
La siguiente comparacion nos permite diferenciar procesos secuenciales, paralelos y pipeline.
 Suponiendo que el proceso es realizar 2 sumas:
  • Con un procesador secuancial las dos sumas nos tomara un tiempo de 10 ciclos del reloj (suponiendo que por cada etapa de la instruccion toma un T1) .
  • En el caso de pipeline el tiempo maximo que le tomara sera 6 ciclos del reloj.
  • Con 2 procesadores paralelos el tiempo maximo en resolver el proceso le tomara 5 ciclos del rejoj.
Podemos concluir que los procesos utilizando la tecnica de pipeline aumentaran el rendimiento de la arquitectura basandose en etapas para realizar todo el trabajo, que aunque el tiempo de un procesador en paralelo sigue siendo mas rapido la tecnica de pipeline nos proporciona un rendimiento similar a un bajo costo. Es por eso que una arquitectura segmentada siempre sera mejor que una arquitectura secuencial y similar a una arquitectura con procesos paralelos. 
 
 Bibliografia
  • Rodriguez L(2007). El gran libro del PC interno. Ediciones Marcombo. Mexico D.F.