Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Paralelismo a nivel de instrucción

microprocesadores
by

sergio morales ruiz

on 3 February 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Paralelismo a nivel de instrucción

Paralelismo a nivel de instrucción
El microprocesador siempre se a compuesto de una unidad de proceso y una unidad de control. Pero enseguida se le unieron nuevas unidades funcionales para mejorar el rendimiento.
De esto surge el paralelismo a nivel de instrucción. Este consiste en ejecutar simultáneamente instrucciones.
Segmentación (pipelining)
Un procesador segmentado es aquel que divide el proceso de ejecución de una instrucción en etapas de similar duración, con el objetivo último de procesar instrucciones simultáneamente, encontrándose cada una en una etapa diferente de su ejecución.

Conseguimos así que N unidades funcionales del procesador estén trabajando a la vez, lo que redunda en un factor de mejora en el rendimiento del chip en circunstancias ideales.
Desventajas de la segmentación
Hay un incremento en los costos de hardware y de software para llevar a cabo la implantación, así como un mayor consumo de recursos: memoria, tiempo de CPU, etc.
Debido a que los segmentos tienen un tamaño variable se pueden presentar problemas de fragmentación externas.
Al permitir que los segmentos varíen de tamaño, pueden ser necesarios planes de reubicación a nivel de los discos, si los segmentos son devueltos a dicho dispositivo, lo que conlleva a nuevos costos.
La compartición de segmentos permite ahorrar memoria, pero requiere de mecanismos adicionales da hardware y software.



Paralelismo a nivel de instrucción

El programador puede conocer las unidades lógicas de su programa, dándoles un tratamiento particular
Es posible compilar módulos separados como segmentos.
Es posible que los segmentos crezcan dinámicamente según las necesidades del programa en ejecución.
Existe la posibilidad de definir segmentos que aun no existan.
Ventajas de la segmentación
Superescalaridad
Un procesador superescalar de factor N es aquel que replica N veces la circuitería de alguna de sus unidades funcionales con el fin de poder ejecutar N instrucciones en sus respectivas etapas de computación.
Al igual que en la segementación se a aumentado el número de instrucciones en la superescalaridad se a aumentado el número de componentes dentro de un único chip.
Coste
El gran inconveniente de la superescalaridad es el aumento de precio de los chip al aumentar la circuiteria electrica.

No obstante, esto es un gran negocio para las grandes empresas de chips como; Intel, AMD, Motorola, IBM, etc... Por tanto, estas empresas a lo largo de la evolución de los microprocesadores han conseguido bajar notablemente el precio por transistor. Consiguiendo así un mejor grado de superescalaridad.
Evolución
El primer procesador superescalar, el i960, fue diseñado por Intel en 1989, y podía ejecutar dos instrucciones por ciclo de reloj. Ya en 1995, lo normal era encontrar diseños de 4 instrucciones por ciclo, y aunque aparecieron algunos como el Power PC capaces de ejecutar hasta seis, entre la complejidad y el choque frontal que supone con la forma en que están escritos los programas, el mercado volvió rápidamente sobre sus pasos y se encuentra cómodamente instalado en factores
de superescalaridad de entre 3 y 4.
segmentado + segmentado = supersegmentación

Un procesador supersegmentado es aquel que aplica dos veces el concepto de segmentación, la primera al nivel del diseño global, y la segunda al nivel interno de sus unidades funcionales.

Además la función del supersegmentado fue implementada en la caché en los años 90, permitiendo realizar la búsqueda de una instrucción y la localización de su celda de caché asociada.
Respecto a la frecuencia es mas elevada que en la segmentación, ya que en la supersegmentación aumentamos la frecuencia de reloj y el número de etapas.

Supersegmentación-----Necesita-----Superescalaridad
Supersegmentación
Dependencias: las enemigas del paralelismo
El paralelismo a nivel de instrucción se ve mejorado gracias a la capa de software,ya que ignoran cualquier tipo de ejecución simultanea de instrucciones. Es decir estamos diseñando un microprocesador que no se corresponde con la forma en que va a ser utilizado por la capa software.


Dependencia de datos
Si alguno de los operandos fuente (o de lectura) de una instrucción
B es el operando destino (o de escritura) de una instrucción anterior A, B no puede comenzar su ejecución hasta que A no haya finalizado




Instrucción A: add R1, R2, R3 # R1 = R2 + R3
Instrucción B: sub R7, R1, R8 # R7 = R1 - R8
Dependencias de control
Una instrucción de salto condicional impide conocer la siguiente instrucción a ejecutar hasta que no se evalúe su condición de salto, y durante todo ese tiempo deberá detenerse la ejecución concurrente de instrucciones.
Instrucción A: beq R1, R2, C # Salta a la Instrucción C si R1=R2
Instrucción B: sub R10, R11, R12 # R10 = R11 - R12
Instrucción C: add R20, R10, R20 # R20 = R10 + R20
Dependencias estructurales
Una instrucción necesita en uno de sus ciclos de ejecución una unidad funcional que está siendo utilizada por otra instrucción en ese mismo instante.
Instr. A: lw R1, Memoria(1000) # Carga en R1 el contenido de
# la posic. de memoria 1000)
Instr. B: lw R2. Memoria(2000) # Carga en R2 el contenido de
# la posic. de memoria 2000)
Estas dependencias se producen por las limitaciones del hardware. su efecto puede moderarse replicando unidades funcionales, incorporando un banco de registros ó una memoria multipuerto.
Además la multiprogramación reparte el tiempo del procesador entre un numero de procesos, pero solamente se ejecuta un flujo de instrucciones.

El compilador y el hardware aprovechan los recursos redefiniendo la ejecución del codigo para habilitar algún tipo de concurrencia. Pero siempre tienen que respetar la secuencialidad del programador.
Por tanto surgen los distintos riesgos
Ejecución fuera de orden
La ejecución fuera de orden es una estrategia consistente
en alterar, en tiempo de ejecución de las instrucciones, su orden de finalización preestablecido en el programa. Por ejemplo la dependencia de datos.

-Riesgo(A salta a B)
-Complejidad (cincuenta instrucciones)
-Superescalar (solamente con procesador superescalar)
-Verificaciones (unidad de control monitoriza los adelantamientos)
Predicción de salto
La técnica de predicción de salto ó ejecución especulativa trata de eliminar las dependencias de control de un programa a través de una predicción en la que el microprocesador intenta adivinar lo que hará una instrucción de salto condicional antes de que se evalúe su condición de salto.

La predicción puede ser de dos tipos:
-Estática
-Dinámica

-Estática
: El procesador apuesta siempre por la misma premisa, a saber, “el programa salta siempre que ejecuta una instrucción de salto” o “el programa no salta nunca”.

-Dinámica:
El procesador es capaz de hacer una suposición u otra dependiendo del comportamiento del programa en su pasado más reciente.De esto se encarga la BTB (Branch Target Buffer), una nueva unidad funcional del procesador que guarda en cada una de sus entradas los siguientes campos de información:
-El código de una instrucción de salto del programa
-Su dirección de salto
-Un grupo de bits que conforman el historial (probabilidad de acertar la predicción)
The End
Próximamente en las mejores presentaciones
-Pentium 4 = 20 etapas segmentación, factor 3 superescalaridad (60-70 instrucciones).
-K7= 14 etapas segmentación, factor 5 superescalaridad (60-70 instrucciones).
Full transcript