miércoles, 26 de agosto de 2015

Programación Paralela y Distribuida

Maricela Ocaña

Procesamiento Pipeline, Ley de Amdahl y Ley de 
Gustafson

Procesamiento Pipeline

En computación, se le llama pipeline a una serie de elementos de procesamiento de datos ordenados de tal modo que la salida de cada uno es la entrada del siguiente, como quien dice una cadena de montaje pero en vez de orientada a la manufactura, orientada al procesamiento de datos e instrucciones.

Ciclo de vida de una instrucción

La acción básica de cualquier microprocesador, en tanto se mueve a través de la corriente de instrucciones, se puede descomponer en una serie de cuatro pasos simples, que cada instrucción en la corriente de código debe atravesar para ser ejecutada:
         1. Fetch: "traer" la instrucción que se va a ejecutar, de la dirección almacenada en el contador de programa.
         2. Store: "almacenar" la instrucción en el registro de instrucciones y "descifrarla", incrementando la dirección en el contador de programa.
         3. Execute: "Ejecutar" la instrucción almacenada en el registro de instrucciones. Si la instrucción no es una instrucción de rama sino una instrucción aritmética, este proceso la envía a la ALU apropiada (ALU: Arithmetic Logic Unit en español: Unidad Aritmético-Lógica), donde el microprocesador: a. "Lee" el contenido de los registros de entrada. b. "Agrega" el contenido de los registros de entrada.
         4. Write: "Escribir" los resultados de esa instrucción de la ALU nuevamente dentro del registro de destinación.

    En un procesador moderno, los cuatro pasos arriba descritos son repetidos una y otra vez hasta que el programa termine de ejecutarse. Éstas son, en hecho, las cuatro etapas en un "pipe" clásico del RISC.
    El pipelining hace su truco con la optimización total de los recursos existentes.
    Los diseñadores de microprocesadores siempre están buscando formas de incrementar el número de instrucciones que un CPU puede completar en un período de tiempo dado. Cuando recordamos que un programa es una secuencia ordenada de instrucciones, se hace claro que incrementar el número de instrucciones ejecutadas por unidad de tiempo es una forma de disminuir el tiempo total de ejecución de un programa. Incrementar la tasa de proceso de instrucciones de nuestro procesador (esto es, el numero de instrucciones completadas por unidad de tiempo) nos permite correr programas más rápidos.
    Haciendo "pipelining" al procesador, podemos poner a trabajar más de ese hardware en cada nanosegundo, incrementando de esa manera la eficiencia del procesador y su performance en la ejecución de programas.

Ley de Amdahl

    La mejora obtenida en el rendimiento de un sistema debido a la alteración de uno de sus componentes está limitada por la fracción de tiempo que se utiliza dicho componente.

¿Cuál es la aceleración A (speedup) del sistema completo después de acelerar k veces un componente?
Casos particulares de la ley
aSi f = 0 Þ A = 1: no hay ninguna mejora en el sistema.
bSi f = 1 Þ A = k : el sistema mejora igual que el componente.

 Casos particulares de la ley
        Si f = 0 Þ A = 1: no hay ninguna mejora en el sistema.
        Si f = 1 Þ A = k : el sistema mejora igual que el componente.







Ley de Gustafson

    La ley de Gustafson establece que cualquier problema suficientemente grande puede ser eficientemente paralelizado. La ley de Gustafson está muy ligada a la Ley de Amdahl, Gustafson enunció por primera vez la ley que lleva su nombre en 1988.


 donde P es el número de procesadores
 S es el speedup
la parte no paralelizable del proceso.

    La ley de Gustafson propone que los programadores establezcan el tamaño de los problemas para utilizar el equipamiento disponible en su solución en un tiempo práctico. Por consiguiente, si existe equipamiento más rápido disponible, mayores problemas se pondrán resolver en el mismo tiempo.


    La ley redefine la eficiencia como una necesidad para minimizar la parte secuencial de un programa, incluso si esto incrementa la cantidad total de cálculos.

Para más información puedes consultar “Cómo funcionan los pipelines de un CPU”.



No hay comentarios:

Publicar un comentario