Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cap4 PDF
Cap4 PDF
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:
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:
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
= º ∗ ∗ º
1
= 8∗ ∗ 3000 = 40
600
1/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
= º ∗ ∗ º
1
=7∗ ∗ 3000 = 46.6
450
MIPS R10000:
Ciclos de acceso a memoria = 4 ∗ = 1
Ciclos de instrucciones aritméticas = 4 ∗
= 2
Ciclos de control y actualización = 4 ∗
= 2
= º ∗ ∗ º
1
=5∗ ∗ 3000 = 83.3
180
*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.
2/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:
3/6
xor %al, %al
xor %bl, %bl
xor %cl, %cl
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.
Solución:
Código Original:
cmpl B, A
jge LO
mov1 c, %ebx
jmp L1
L0: mov1 D, %ebx
L1:
4/6
Código Optimizado:
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:
Solución:
Código Optimizado:
5/6
Problema 6:
Utilizar las instrucciones con predicado del repertorio IA-32 para reducir las instrucciones de salto
condicional en la secuencia.
6/6
PROBLEMAS
Capitulo 4
Problema 1
𝑁𝑐𝑖𝑐𝑙𝑜𝑠 2
𝑇𝑎𝑐𝑐𝑒𝑠𝑜 = 𝑁𝑐𝑖𝑐𝑙𝑜𝑠 ∗ 𝑇𝑏𝑢𝑠 = = 6
= 20𝑛𝑠
𝐹𝑏𝑢𝑠 100 ∗ 10
SI es posible añadir un modo burst para leer los 64 bytes, el numero de ciclos
necesario sería 5-1-1-1-1-1-1-1, es decir 5 ciclos para la primera palabra y 1 ciclo para
las demás, por lo tanto el tiempo necesario para la lectura sería:
𝑁𝑏𝑢𝑟𝑠𝑡 5 + 1 + 1 + 1 + 1 + 1 + 1 + 1
𝑇𝑏𝑢𝑟𝑠𝑡 = = 6
= 120𝑛𝑠
𝐹𝑏𝑢𝑠 100 ∗ 10
Problema 1
Si cada línea de caché son de 128 bytes, es decir 27 bytes, entonces el número de
líneas de caché serán:
𝑡𝑎𝑚𝑎ñ𝑜 𝑐𝑎𝑐ℎé 216
𝑁𝑙𝑖𝑛𝑒𝑎𝑠 = = 7 = 29
𝑡𝑎𝑚𝑎ñ𝑜 𝑝𝑜𝑟 𝑙𝑖𝑛𝑒𝑎 2
Por lo tanto habrán 512 líneas en el caché, donde se necesitarían 9 bits para designar
una línea.
Problema 2
La siguiente figura muestra la disposición del uso de los bits en las direcciones de
memoria y cache, donde la marca y la línea de cache son de 9 bits cada uno, y Desp. es
la posición del byte dentro de una línea.
A priori no podemos saber la línea del conjunto en donde se alojará nuestro dato al no
poseer la información de la vía.
ARQUITECTURA DE COMPUTADORAS
PROBLEMAS CAP 4
Arocupita Zambrano Alejandro
Chambi Serrano Hernán
Huarza Hincho Oscar
Maldonado Apaza Jesús
Quispe Atajo Jesús
Revollo Flores Mario
PROBLEMA 3
Disponemos de una computadora basado en Pentium II, que
dispone de una memoria de cache de segundo nivel de
256Kbytes asociativa por conjuntos de 4 vías, y una memoria
principal de 64 Mbytes.
Memoria principal: 64𝑀𝑏𝑦𝑡𝑒𝑠 = 226 𝑏𝑦𝑡𝑒𝑠(26 bits de los 32 que genera el procesador para
codificar las direcciones)
Memoria Cache L1(2 vías) 16𝐾𝑏𝑦𝑡𝑒𝑠 = 214 𝑏𝑦𝑡𝑒𝑠 y Lineas de 32𝑏𝑦𝑡𝑒𝑠 = 25 𝑏𝑦𝑡𝑒𝑠
Cada una de sus líneas se direccionan mediante 14 bits, los 5 menos significativos indican el
desplazamiento del dato dentro de la línea.
14
Correspondencia entre direcciones de memoria y las de cache L1
Marca, conjunto y desplazamiento dentro de la línea de la cache L1 de la dirección de memoria
Memoria principal: 64𝑀𝑏𝑦𝑡𝑒𝑠 = 226 𝑏𝑦𝑡𝑒𝑠(26 bits de los 32 que genera el procesador para
codificar las direcciones)
Memoria Cache L2(4 vías) 256𝐾𝑏𝑦𝑡𝑒𝑠 = 218 𝑏𝑦𝑡𝑒𝑠 y Lineas de 32𝑏𝑦𝑡𝑒𝑠 = 25 𝑏𝑦𝑡𝑒𝑠
Cada una de sus líneas se direccionan mediante 18 bits, los 5 menos significativos indican el
desplazamiento del dato dentro de la línea.
18
Correspondencia entre direcciones de memoria y las de cache L2
Marca, conjunto y desplazamiento dentro de la línea de la cache L2 de la dirección de memoria
En el caso de un sistema de memoria con tres niveles, en el que existe una memoria
iplementada con seldas SRAM que constituye el nivel de cache externa L2, se tiene que a2 es
la tasa de aciertos de la memoria cache L2. El tiempo de acceso será:
𝑇𝐿2−𝐷𝑅𝐴𝑀 = 𝑎1 𝑡1 + 1 − 𝑎1 𝑎2 𝑡1 + 𝑡2 + 1 − 𝑎1 1 − 𝑎2 𝑡1 + 𝑡2 + 𝑡𝐷𝑅𝐴𝑀
𝑇𝐿2−𝐷𝑅𝐴𝑀 = (0.8)(2.5) + 1 − 0.8 𝑎2 2.5 + 5 + 1 − 0.8 1 − 𝑎2 2.5 + 5 + 10
𝑇𝐿2−𝐷𝑅𝐴𝑀 = 5.5 − 2𝑎2
De esta forma, para que 𝑇𝐿2−𝐷𝑅𝐴𝑀 < 𝑇𝐿1−𝐷𝑅𝐴𝑀 , es preciso que:
𝑎𝐼1 = 0.875
𝑡𝑎𝑐𝑐𝑒𝑠𝑜 𝑎 𝑐𝑎𝑐ℎ𝑒 = 5𝑛𝑠
𝑡𝑎𝑐𝑐𝑒𝑠𝑜 𝑎 𝑚𝑒𝑚𝑜𝑟𝑖𝑎 = 50𝑛𝑠 La frecuencia del microprocesador es 100MHz, por
ello cada ciclo de bus será 10ns, y para acceder a una palabra se necesita 5
ciclos.
𝑎𝐷1 = 0.987
𝑡𝑎𝑐𝑐𝑒𝑠𝑜 𝑎 𝑐𝑎𝑐ℎ𝑒 = 5𝑛𝑠
𝑡𝑎𝑐𝑐𝑒𝑠𝑜 𝑎 𝑚𝑒𝑚𝑜𝑟𝑖𝑎 = 50𝑛𝑠
𝑝𝑟𝑒𝑒𝑚𝑝𝑙𝑎𝑧𝑜 = 0.2 Frecuencia de reemplazo de línea, y en 20% de los fallos
hay necesidad de reemplazo
𝑡𝑎𝑐𝑐𝑒𝑠𝑜 𝑎 𝑙𝑖𝑛𝑒𝑎 = 80𝑛𝑠 Tiempo de actualización el acceso a burst
(5+1+1+1=8 ciclos de bus), cada ciclo de bus es de 10ns
𝑇𝑎𝑐𝑐𝑒𝑠𝑜
= 𝑎𝐷1 𝑡𝑎𝑐𝑐𝑒𝑠𝑜 𝑎 𝑐𝑎𝑐ℎ𝑒 + (1 − 𝑎𝐷1 )(𝑡𝑎𝑐𝑐𝑒𝑠𝑜 𝑎 𝑐𝑎𝑐ℎ𝑒 + 𝑡𝑎𝑐𝑐𝑒𝑠𝑜 𝑎 𝑚𝑒𝑚𝑜𝑟𝑖𝑎
+ 𝑝𝑟𝑒𝑒𝑚𝑝𝑙𝑎𝑧𝑜 𝑡𝑎𝑐𝑐𝑒𝑠𝑜 𝑎 𝑙𝑖𝑛𝑒𝑎 )
𝑇𝑎𝑐𝑐𝑒𝑠𝑜 = 0.975 5 + 1 − 0.975 5 + 50 + 0.2(80) = 5.793𝑛𝑠
PROBLEMA 6
En un computador, el bus tiene una frecuencia de 200MHz, y la
memoria principal un tiempo de acceso de 30ns, que, tras el
primer acceso, puede proporcionar (o reducir) una palabra por
ciclo en los accesos burst 6-1-1-1 . El procesador superescalar de
1GHz dispone de una cache interna con líneas de 4 palabras.
𝑇𝑎𝑐𝑐𝑒𝑠𝑜 = 𝑎𝑐𝑎𝑐ℎ𝑒 𝑡𝑎𝑐𝑐𝑒𝑠𝑜 𝑎 𝑐𝑎𝑐ℎ𝑒 + (1 − 𝑎𝑐𝑎𝑐ℎ𝑒 )(𝑡𝑎𝑐𝑐𝑒𝑠𝑜 𝑎 𝑐𝑎𝑐ℎ𝑒 + 𝑡𝑎𝑐𝑐𝑒𝑠𝑜 𝑎 𝑚𝑒𝑚𝑜𝑟𝑖𝑎 + 𝑝𝑟𝑒𝑒𝑚𝑝𝑙𝑎𝑧𝑜 𝑡𝑎𝑐𝑐𝑒𝑠𝑜 𝑎 𝑙𝑖𝑛𝑒𝑎 )
Donde:
Tenemos la tasa de aciertos de la cache (90%)
𝑎𝑐𝑎𝑐ℎ𝑒 = 0.9
El tiempo de acceso a una palabra de la cache interna
1
𝑡𝑎𝑐𝑐𝑒𝑠𝑜 𝑎 𝑐𝑎𝑐ℎ𝑒 = 𝑡𝑐𝑖𝑐𝑙𝑜 = 9 = 1𝑛𝑠
10
El tiempo de acceso a una palabra en la memoria
𝑇𝑎𝑐𝑐𝑒𝑠𝑜 = 𝑎𝑐𝑎𝑐ℎ𝑒 𝑡𝑎𝑐𝑐𝑒𝑠𝑜 𝑎 𝑐𝑎𝑐ℎ𝑒 + 1 − 𝑎𝑐𝑎𝑐ℎ𝑒 𝑡𝑎𝑐𝑐𝑒𝑠𝑜 𝑎 𝑐𝑎𝑐ℎ𝑒 + 𝑡𝑎𝑐𝑐𝑒𝑠𝑜 𝑎 𝑚𝑒𝑚𝑜𝑟𝑖𝑎 + 𝑝𝑟𝑒𝑒𝑚𝑝𝑙𝑎𝑧𝑜 𝑡𝑎𝑐𝑐𝑒𝑠𝑜 𝑎 𝑙𝑖𝑛𝑒𝑎
𝐶𝑃𝐼 𝑁𝐼 𝐶𝑃𝐼 𝑁𝐼
𝑇𝐶𝑃𝑈 = 𝐶𝑃𝐼 𝑁𝐼 𝑡𝑐𝑖𝑐𝑙𝑜 = = 9
= 𝐶𝑃𝐼 𝑁𝐼 1𝑛𝑠
𝐹 1𝑥10
1 1
𝐵𝑀𝑒𝑚 = = = 237.58𝑀𝑝𝑎𝑙𝑎𝑏𝑟𝑎𝑠/𝑠
𝑡𝑎𝑐𝑐𝑒𝑠𝑜 4.209𝑛𝑠
1 1
𝐵𝑀𝑒𝑚 = = = 384.17𝑀𝑝𝑎𝑙𝑎𝑏𝑟𝑎𝑠/𝑠
𝑡𝑎𝑐𝑐𝑒𝑠𝑜 2.603𝑛𝑠
Con esto vemos que ha mejorado el ancho de banda, pero el CPI sigue
siendo mayor que 1 , lo cual quiere decir que no puede procesar ni 1
instrucción por ciclo.