capitulo 4 - problemas

6
1/6 CAPITULO 4 Problema 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. Solución: Procesador Frecuencia Finalizan / Ciclo Velocidad Pico MIPS R100 275 5 1375 Ultra Sparc II 250 6 1500 HP PA 8500 400 6 2400 DEC Alpha 21264 600 8 4800 Power PC 620 200 4 800 AMD Athlon K7 1200 3 3600 Pentium 4 1400 3 4200 Problema 2: Se dispone de una aplicación de procesamiento de señal que debe repetir 3000 veces el cálculo () = (), ( + ), ( + ), ( + ) para cada muestra de la señal () = , … , que ocupa 4 bytes, y () es una función determinada. El código por 12 instrucciones de 32 bit que se repiten para cada muestra. De las instrucciones, 4 son de acceso a memoria para leer/escribir datos, 4 son instrucciones de operaciones aritméticas, y 4 son de control del bucle, actualización de punteros, etc. Estimar el tiempo mínimo que tardaría en ejecutarse esa aplicación (suponemos que no hay fallos de caché para instrucciones o datos) en los siguientes microprocesadores: - UltraSPARC III 600 MHz - Alpha 21264 450 MHz - MIPS R10000 180MHz - Power PC G5 800MHz Solución: UltraSPARC III: Ciclos de acceso a memoria = 4 ∗ = 2 Ciclos de instrucciones aritméticas = 4 ∗ = 2 Ciclos de control y actualización = 4 ∗ = 4 = º ∗ ∗ º =8∗ 1 600 ∗ 3000 = 40

Upload: arturo-fidel-flores-bellido

Post on 23-Oct-2015

75 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: Capitulo 4 - Problemas

1/6

CAPITULO 4 Problema 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. Solución:

Procesador Frecuencia Finalizan / Ciclo Velocidad Pico

MIPS R100 275 5 1375

Ultra Sparc II 250 6 1500

HP PA 8500 400 6 2400

DEC Alpha 21264 600 8 4800

Power PC 620 200 4 800

AMD Athlon K7 1200 3 3600

Pentium 4 1400 3 4200

Problema 2: Se dispone de una aplicación de procesamiento de señal que debe repetir 3000 veces el cálculo �(�) =

���(�), �(� + �), �(� + �),�(� + �)� para cada muestra de la señal �(�)�� = �, … , ��� − �� que ocupa 4

bytes, y �() es una función determinada. El código por 12 instrucciones de 32 bit que se repiten para cada muestra. De las instrucciones, 4 son de acceso a memoria para leer/escribir datos, 4 son instrucciones de operaciones aritméticas, y 4 son de control del bucle, actualización de punteros, etc. Estimar el tiempo mínimo que tardaría en ejecutarse esa aplicación (suponemos que no hay fallos de caché para instrucciones o datos) en los siguientes microprocesadores:

- UltraSPARC III 600 MHz - Alpha 21264 450 MHz - MIPS R10000 180MHz - Power PC G5 800MHz

Solución: UltraSPARC III:

Ciclos de acceso a memoria = 4���� ∗������

�����= 2������

Ciclos de instrucciones aritméticas = 4���� ∗������

�����= 2������

Ciclos de control y actualización = 4���� ∗������

�����= 4������

���� = �º������ ∗ ������� ∗ �º������������

���� = 8 ∗1

600���∗ 3000 = 40��

Page 2: Capitulo 4 - Problemas

2/6

Alpha 21264:

Ciclos de acceso a memoria = 4���� ∗������

�����= 1������

Ciclos de instrucciones aritméticas = 4���� ∗������

�����= 2������

Ciclos de control y actualización = 4���� ∗������

�����= 4������

���� = �º������ ∗ ������� ∗ �º������������

���� = 7 ∗1

450���∗ 3000 = 46.6��

MIPS R10000:

Ciclos de acceso a memoria = 4���� ∗������

�����= 1������

Ciclos de instrucciones aritméticas = 4���� ∗������

�����= 2������

Ciclos de control y actualización = 4���� ∗������

�����= 2������

���� = �º������ ∗ ������� ∗ �º������������

���� = 5 ∗1

180���∗ 3000 = 83.3��

*Nota: Los ciclos de acceso a memoria, instrucciones aritméticas, control y actualización del MIPS R10000 y del PowerPC G5 tienen que ser confirmados por el ingeniero.

Page 3: Capitulo 4 - Problemas

3/6

Problema 3: Utilizar las instrucciones cmovcc y setcc para reducir el número de instrucciones de salto en el siguiente bucle:

if (A>B) then (X=1); else { if (C<D) then (X=2); else (X=3)} Solución: Código Original:

Código Optimizado:

Page 4: Capitulo 4 - Problemas

4/6

xor %al, %al xor %bl, %bl xor %cl, %cl cmpl B, A // si (A>B), al=1 setgtb %al cmpl S1, %al cmoveq S1, X // si al=1, X=1 neg al cmpl C, B // si (D>C), bl=1 setgtb %bl and %al, %bl cmpl S1, %bl cmoveq S2, X // si bl=1, al=1, bl and al=1 X=2 cmpl C, D // si (D<=C), cl=1 setleb %cl and %al, %cl cmpl S1, %cl cmoveq S3, X // si cl=1, al=1, cl and al=1 X=3

Banderas Operación

al bl cl

1 0 0 X=1

0 1 0 X=2

0 0 1 X=3

Problema 4: Para el siguiente código optimizar las instrucciones usando setccb.

if (A<B) ebx=C; else ebx=D Solución: Código Original:

cmpl B, A jge LO mov1 c, %ebx jmp L1

L0: mov1 D, %ebx L1:

Page 5: Capitulo 4 - Problemas

5/6

Código Optimizado: xorl %ebx, %ebx cmpl B, A setgeb %bl decl %ebx andl (C-D), %ebx addl D, %ebx Si A>=B, setgeb hace bl=1, dec hace ebx=0, (ebx and C-D)=0 ebx=0, ebx+D=0+D=D ebx=D. Si A<B, setgeb hace bl=0, dec hace ebx=0xFFFFFFFF, (ebx and C-D)=C-D ebx=C-D, ebx+D=C-D+D=C ebx=C. Problema 5: Utilizar las instrucciones con predicado setccb y cmovcc para reducir las instrucciones en:

if (A<=B) then cbx=2; else cbx=4 Solución: Código Optimizado: xorl %al, %al cmpl A, B setgeb %al // al=1 si A<=B, al=0 si A>B cmpl S1, %al cmoveq S2, %cbx // si al=1 (A<=B) cbx=2 cmpl S0, %al cmoveq S4, %cbx // sia al=0 (A>B) cbx=4

Page 6: Capitulo 4 - Problemas

6/6

Problema 6: Utilizar las instrucciones con predicado del repertorio IA-32 para reducir las instrucciones de salto condicional en la secuencia.

if ((X[0] mod 2)==0) then for i=1 to 2 do if ((X[i] mod 2)==0) then X[i]=2*X[i] else if (X[0]<0) then X[i]=0;