ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Paralelismo


Enviado por   •  19 de Abril de 2013  •  3.092 Palabras (13 Páginas)  •  1.206 Visitas

Página 1 de 13

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA-UNAD

CEAD J.A.G

FACULTAD DE CIENCIAS BÁSICAS E INGENIERIAS

PROGRAMA INGENIERIA DE SISTEMAS

CURSO ARQUITECTURA DE COMPUTADORES

19 de octubre de 2011

BOGOTÁ

Introducción

En este trabajo se abordará el contenido de la unidad 3 capitulo2 PARALELISMO del módulo de ARQUITECTURA DE COMPUTADORES Con el cual el estudiante demostrara lo aprendido en el capítulo 2 de la unidad 3

Se adoptara lo referente a lo de paralelismo implícito a nivel de instrucción, pasando por su arquitectura, instrucción, ejemplos técnicas de compilación, interacciones y tendencias.

De esta manera tratar de dar como terminado el capítulo 2 de la unidad 3 correspondiente al módulo mediante este trabajo.

Paralelismo arquitectura de computadores

[1]PARALELISMO

El paralelismo consiste en ejecutar más instrucciones en menos tiempo, aunque las instrucciones sigan tardando lo mismo en ejecutarse, mediante un simple truco, aunque algo difícil de explicar en detalle. Intentémoslo. Un microprocesador ejecuta instrucciones de código máquina.

Estas instrucciones le dicen cómo tiene que ir modificando diferentes posiciones de memoria, y como debe ir modificando el flujo de ejecución. Se tiende a pensar, erróneamente, que un procesador con un reloj a 200 MHz (200 millones de ciclos por segundo) ejecuta 200 millones de estas operaciones por segundo. Esto no es así, por una sencilla razón. Una instrucción no se ejecuta en un solo ciclo de reloj, salvo alguna rara excepción. De hecho, algunas instrucciones tardan bastantes más ciclos, llegando algunas a necesitar 50 o más ciclos para completarse. En cambio, las más rápidas se ejecutan en tan sólo 3 o 4 ciclos de reloj. Aquí es donde entra el paralelismo para solucionar este problema. Se puede dividir cualquier instrucción en fases más o menos comunes a todas:

-fetch (carga de la instrucción desde la memoria al procesador)

-decodificación (identificación de qué instrucción nos hemos encontrado)

-carga de operandos

-operación en sí

-escritura de resultados

Este esquema, expresamente simplificado, nos da una idea de las fases que todo microprocesador tiene. Vamos a suponer un microprocesador ideal donde todas las operaciones que se pueden ejecutar en él tardan 15 ciclos, correspondientes a tres ciclos por cada una de las 5 fases que hemos descrito. Si ejecutáramos tres de estas operaciones sin ningún tipo de paralelismo, tardaríamos 45 ciclos, según el siguiente esquema:

instr.1:111222333444555

instr.2:_________111222333444555

instr. 3:________111222333444555

Ahora supongamos que somos capaces de dividir el microprocesador en circuitos separados capaces cada uno de trabajar independientemente y ejecutar cada una de las 5 fases anteriores. Si logramos que sean independientes, cuando la instrucción uno ha acabado ya la fase de fetch y pasa a la decodificación, deja libre el módulo que se encarga del fetch, donde puede ir ya ejecutándose la segunda instrucción. De esta forma, logramos paralelizar las instrucciones.

instr.1111222333444555

instr.2:___111222333444555

instr. 3:______111222333444555

Resultado: las tres instrucciones, por separado, siguen ejecutándose en el mismo tiempo, pero en conjunto ya no tardan 45 ciclos, sino solo 21 ciclos. Más de un 45% de incremento en el rendimiento. De esta forma es como algunos procesadores muy paralelizados logran ejecutar, en promedio, más de una instrucción por ciclo de reloj, aunque estas instrucciones tarden, por sí mismas, más de un ciclo en ejecutarse.

En la realidad, como siempre, no todo es tan fácil y hay muchos problemas al diseñar un procesador con paralelismo. Por citar algunos de los problemas más comunes, hay veces que una instrucción no se puede ejecutar ya que requiere un dato que quizás calculaba la operación anterior (cosa muy habitual). Claro, si ante este problema detuviéramos la anterior instrucción, bloquearía el procesador y se acabaría el paralelismo hasta que acabara la primera instrucción y con ella se pudiera reanudar la segunda. Para evitar estos problemas se recurre a cortocircuitos, o lo que es lo mismo, se comunican diferentes fases del microprocesador internamente para pasarse antes los datos. Esto, sin embargo, también nos da otros problemas, ya mucho más complicados, como el encontrarnos con que hay que decidir qué datos son los correctos en cada momento. En estos problemas ya no entraremos, y se podrían resumir en que el procesador ha de decidir cómo paralelizar las instrucciones. Bien, todo lo que hemos visto sobre el paralelismo involucra única y exclusivamente al microprocesador en sí, y más bien a su diseño. El software que se ejecuta sobre él ignora totalmente si hay paralelismo o no. Esto es el paralelismo implícito.

Por el contrario, Intel implementa una solución que de hecho ya deriva de ideas de principios de los años 80. En el paralelismo explícito, el procesador ya no es el que decide cómo paralelizar las instrucciones, sino que es el compilador del software el que ha empaquetado las instrucciones para que el microprocesador pueda ejecutarlas paralelamente sin tantos problemas. De hecho, esta manera es mucho más eficiente, porque el compilador tiene todo el tiempo del mundo para decidir cómo paralelizar y por supuesto, la lógica que puede aplicar es infinitamente más potente que la que podemos encontrar implementada en cualquier microprocesador. Esto también redunda en una simplificación de la circuitería

...

Descargar como (para miembros actualizados)  txt (19.6 Kb)  
Leer 12 páginas más »
Disponible sólo en Clubensayos.com