Sie sind auf Seite 1von 30

CONCLUSIONES

En los ltimos captulos se han descrito con mucho detalle el procesamiento superescalar. Junto a ejemplos de microarquitectura superescalares implementados en distintos procesadores. A continuacion se ver la evolucin de los procesadores en los ltimos aos.

EVOLUCION DE PROCESADORES INTEL

EVOLUCION ROCESADORES AMD

En el siguiente cuadro se disponen de datos , que determinan las mediciones absolutas de las prestaciones, y las mediciones relativas a la frecuencia del reloj del procesador.

Como se ha descrito a lo largo de estos 2 captulos, las microarquitecturas superescalares incorporan elementos para realizar una planificacin dinmica de instrucciones que permita su ejecucin desordenada, y de esta manera aprovechar el maximo de paralelismo entre instrucciones.

Por otra parte se permite, para aprovechar las mejoras tecnolgicas, incorpor ms y mejores posibilidades de instrucciones por ciclo. Aumentar Unidades Funcionales, Aumentando cach, y aumentando el ancho del bus de datos, etc. se logra una mejora sustancial en la velocidad de procesamiento.

Al mismo tiempo si logramos emitir un mayor numero de instrucciones por ciclo, pero aumentamos la complejidad asociada a los elementos que permiten realizar la planificacin dinmica de instrucciones. La solucin a esto es dejar que el compilador se encargue de organizar, las instrucciones, para aprovechar mejor el paralelismo de las instrucciones.

EN CONCLUSIN, los procesadores no aumentan sus prestaciones no aumentando la velocidad de procesamiento, sino aumentando el rendimiento de procesamiento de VARIAS HEBRAS de instrucciones. A esta alternativa tambin se le conoce como MULTIHEBRA SIMULTANEA.

Por otro lado en el ao 2002, en los procesadores intel XEON, se hace uso del HYPER HEBRA. Otra forma de aprovechar las posibilidades de integracin que ofrece la electronica, es la de incluir varios procesadores en un chip, llamado MULTIPROCESSOR, pero esto ya se explicar al concluir el capitulo siguiente.

PROBLEMAS

1.- Estimar las velocidades pico de los procesadores que se describen en el capitulo utilizando los datos respecto a las frecuencias de reloj, instrucciones que se retiran por ciclo y unidades funcionales que se indican en el texto

Velocidad_pico = Frecuencia del reloj X finalizan_por_ciclo


Ejemplo para el microprocesador Mips R8000 en tabla 4.1 tenemos Frecuencia en Mhz = 75 Finalizan/ciclo = 6 Vp = 75x6= 450 Mhz

Velocidad pico para los procesadores en la tabla 4.1 - 4.2 -4.3

Velocidad_pico = Frecuencia del reloj X finalizan_por_ciclo

2.-Para el siguiente codigo optimizar las instrucciones usando la instruccin setccb

* Obtenemos el cdigo original y su diagrama de flujo

*Anlisis de funcionamiento de la instruccin setccb

*tabla de condiciones de comparacin Nombre


ge gt le Lt eq Nq

Condicion Mayor igual Mayor Menor igual Menor Igual diferente

*Entonces para el problema tenemos cmpl B,A Setgeb %bl

cmpl B,A Setltb %bl

3.-Utilizar las instrucciones con predicado setccb y cmovcc para reducir el numero de instrucciones En If (A<=B) then cbx=2; else cbx = 4; * Funcionamiento de la instruccin xmovcc

Para setccb If (A<=B) then cbx=2; else cbx =Nombre 4; usamos ge cmpl B,A gt le setleb %al Lt Para el xmovcc eq Usamos cmoveq Nq (trabaja datos enteros y mueve en comparaciones de igualdad) Codigo optimizado xorl %al, %al //resetea el valor de al cmpl B,A A<=B setgeb %al //compara B con A al=1 si al=0 si A>B

Condicion Mayor igual Mayor Menor igual Menor Igual diferente

cmpl $1,%al //si al =1 (A<=B) movemos a cbx el valor 2 cmoveq $2, %cbx cmpl $0,%al 4 //si al =0 (A>B) movemos a cbx el valor

* Diagrama de flujo del cdigo optimizado

Codigo optimizado xorl %al, %al //resetea el valor de al al=1 cmpl B,A A<=B setgeb %al //compara B con A al=1 si al=0 si A>B

al=0

cmpl $1,%al //si al =1 movemos a cbx el valor 2 cmoveq $2, %cbx

cmpl $0,%al //si al =0 movemos a cbx el valor 4 cmoveq $4,%cbx


al se comporta como un semforo realiza una accin dependiendo del estado en que se encuentra

4.-Utilizar las instrucciones cmovcc y setcc para reducir el numero de instrucciones de salto en el bucle siguiente Df cod optimizado

Df cod original

xor %al, %al xor %bl, %bl xor %cl, %cl

//banderas de control

al =1

cmpl B,A setgtb %al cmpl $1,%al cmoveq $1,X


neg al cmpl C,D setgtb %bl and %al ,% bl cmpl $1,%bl cmoveq $2,X cmpl C,D setleb %cl and %al , %cl cmpl $1,%cl cmoveq $3,X

//compara A,B //si (A>B) setea al=1 //compara al con #1 si es verdadero mueve al registro X el valor #1

Nombre ge gt le Lt eq Nq

Condicion Mayor igual Mayor Menor igual Menor Igual diferente

// niega el valor de al

bl =1

//compara C,B si (C<D) setea bl=1 bl =(bl ) and (al) compara bl con #1 si es verdadero mueve al registro X el valor #2 //compara C,B si (C>=D) setea cl=1 cl =(cl ) and (al) compara cl con #1 si es verdadero mueve al registro X el valor #3

cl =1

* Anlisis de funcionamiento

al =1

al =0

Banderas al bl cl 1 0 0 0 1 0 0 0 1

Operacion X=1 X=2 X=3

bl =1

bl =0 Una bandera es un registro de control Que permite realizar una operacin Cuando esta en estado activo (valor =1) Y evitar la operacin en estado inactivo (valor =0)

cl =1

cl =0

Para el Ultra Sparc Numero de instrucciones :12 (4 memoria 4 aritmticas 4 actualizacin) Numero de repeticiones: 3000 Frecuencia 600 MHz * Calculo del numero de ciclos

Calculo del tiempo minimo Tmin = Nro ciclos x Periodo x nro de repeticiones

Para el ALPHA 21264 Numero de instrucciones :12 (4 memoria 4 aritmticas 4 actualizacin) Numero de repeticiones: 3000 Frecuencia 450 MHz * Calculo del numero de ciclos

Calculo del tiempo minimo Tmin = Nro ciclos x Periodo x nro de repeticiones

Das könnte Ihnen auch gefallen