Sei sulla pagina 1di 3

Problema 1

Sea una memoria cach asociativa por conjuntos de 1K palabras, con bloques de 64 palabras y 4 bloques
por conjunto. La memoria principal tiene 32K. El tiempo de acceso a memoria cach es de 2ns y a memoria
principal de 30ns. Suponer reemplazamiento LRU, y que la memoria cach est inicialmente vaca. Se
ejecuta el siguiente programa con las direcciones (expresadas en decimal que se indican) que se indican:
0-1023
repetir 10 veces
1024-1130
0-63
64-1023
repetir 20 veces
1088-1094
fin 20 veces
fin 10 veces.
a) Especificar la estructura de la direccin fsica desde la cach
b) Si todos los accesos fuesen de lectura, calcular el tiempo necesario para realizar los accesos a
memoria.
c)

Si los accesos 0 a 63 del bucle que se repite 10 veces (marcados en negrita) fuesen de escritura.
Calcular el tiempo de ejecucin si se usa escritura directa sin asignacin en escritura.

SOLUCION:
a) 32 K => 15 bits
N de bloques en cache = 16,
N de conjuntos = 4
Etiqueta Conjunto Desplazamiento
7
2
6
b)
N total de accesos= 1024 + 10 [107+ 64 + 960 + 20*7] = 13734 accesos
Veamos la distribucin de las diferentes direcciones sobre los conjuntos de la cache:
Conjunto 0:
0-63, 256-319, 512-575, 768-831, 1024-1087
Conjunto 1:
64-127, 320-383, 576-639, 832-895, 1088-1151
Conjunto 2:
128-191, 384-447, 640-703, 896-959
Conjunto 3:
192-255, 448-511, 704-767, 960-1023
Como la cach est vaca las referencias iniciales de la 0 a la 1023 producen 16 fallos y la llenan
totalmente.
PRIMERA ITERACIN
Al comenzar la primera iteracin del bucle que se repite 10 veces se debe traer el bloque 1024-1087 al
conjunto 0 (y se coloca donde estaba el BL 0-63) y el bloque 1088-1151 al conjunto 1 (y se coloca donde
estaba el BL 64-127),. Esto produce dos fallos.
Al continuar con las referencias 0-63 se vuelve a producir un fallo. Se trae el Bloque donde estaba 256319.
Las referencias 64 a 1023 producirn fallo en los bloques que vayan a los conjuntos 0 y 1, es decir: 256319, 512-575, 768-831, 64-127, 320-383, 576-639, 832-895. Son siete nuevos fallos.
Al final de estas referencias los conjuntos 0 y 1 contienen:

Conjunto 0:
0-63[3], 256-319[2], 512-575[1], 768-831[0]
Conjunto 1:
64-127[3], 320-383[2], 576-639[1], 832-895[0]
en los corchetes aparece el valor del registro de edad usado en la estrategia LRU.
El bucle interno de 20 iteraciones produce un fallo en la primera iteracin y modifica el registro de edad
del Cjto 1, quedando del siguiente modo:
Conjunto 1:
1088-1151[0], 320-383[3], 576-639[2], 832-895[1]
SEGUNDA ITERACIN Y SIGUIENTES:
Al comenzar la segunda iteracin del bucle que se repite 10 veces se debe traer el bloque 1024-1087 al
conjunto 0 (y se coloca donde estaba el BL 0-63), un fallo y el bloque 1088-1151 est en cach.
Al continuar con las referencias 0-63 se vuelve a producir un fallo. Se trae el Bloque donde estaba 256319.
Las referencias 64 a 1023 producirn fallo en los bloques que vayan al conjunto 0, es decir: 256-319,
512-575, 768-831 son tres nuevos fallos.
Las referencias a bloques del cjto 1 tambin producen siempre fallo. Cuatro nuevos fallos
El bucle interno 1 nuevo
N Total de fallos: 16 + 2+ 8 + 1 + 9*(1+8+1) = 117 fallos
N Total de referencias = 1024 + 10*[107+1024+20*7] = 13734 referencias
Tiempo total de ejecucin = Nreferencias_acierto * Tc + N_referencias_fallos*Tmp*64=
(13734-117)*2ns+117*30ns*64 = 27234 + 224640=251874ns.
c) Si las referencias 0-63 del bucle de 10 iteraciones son escrituras, como es escritura directa sin
asignacin en escritura y cuando se referencia el 0 este bloque no est en cach, el dato se actualiza
directamente en Memoria Principal sin traer el bloque a cach.
Por tanto, a partir de este momento este bloque no compite por espacio en el Conjunto 0 y no se vuelven
a producir fallos en este Cjto.
N Total de fallos: 16 + 2+ 4 + 1 + 9*(0+4+1) = 68 fallos
Tiempo_total _de _ejecucin= Nreferencias_acierto * Tc + N_referencias_fallos*Tmp*64 +
N_escrituras_en_MP*Tmp =
= (13734-68-640escrituras)*2ns+68*30ns*64+640*30ns=26052ns + 130560+ 19200 = 175812ns

Problema 2
Un procesador opera a 50 MIPS de velocidad con un tiempo de ciclo de 5 nanosegundos. Calcula:
a) Ancho de banda que proporciona su sistema de DMA sabiendo que opera por robo de ciclo y que
intercambia con la memoria 64 bits cada vez que se le concede el bus
b) Si conectamos al DMA una tarjeta de adquisicin de datos que opera a una velocidad de 1
MBytes/segundo, calcula el tiempo total de paralizacin de la CPU durante una operacin de
lectura de datos de la tarjeta de 2 minutos.
c)

Nmero de instrucciones que deja de ejecutar la CPU durante ese tiempo.

d) Nmero mximo de instrucciones que debera tener una rutina de tratamiento si conectsemos
la tarjeta de adquisicin de datos mediante interrupciones, sabiendo que el tiempo de
reconocimiento de una interrupcin es de 100 ns. y que se transmiten 8 bytes por interrupcin.
e) Velocidad mxima en MBytes/s que podra tener la tarjeta de adquisicin de datos si la
conectsemos utilizando E/S programada sabiendo que en cada transferencia de 8 bytes
intervienen 3 instrucciones.
SOLUCION:
a)

Tc = 5 ns Fr = 200 MHz CPI = 200/50 = 4 ciclos


Cada 4+1 = 5 ciclos = 5*5 = 25 ns. transmite 64 bits = 8 Bytes
Ancho de banda = 8 Bytes/25 ns. = 8 Bytes /(25*10-9) seg. = 0,32*109 Bytes/seg. = 320 MB/seg.

b)

N de robos/seg. = 1MBytes/seg / 8 Bytes = 1,25*105 robos/seg


Tparalizacion = = 1,25*105 ciclos/seg * (2*60) seg * (5*10-9) seg./ciclo = 750*10-3 seg. = 0,075 seg.

c)

Ninst(-CPU) = (1,25*105 / 4)*120 seg. = 31.250 * 120 = 3.750.000 instrucciones

d)

100 + Ninst(RT)*4 ciclos/inst. * 5 ns./ciclo < (8 Bytes/inst. / 106 Bytes/seg) 109ns = 8.000 ns.
Ninst(RT) < (8.000 100)/20 = 7.900/20 = 395 instrucciones

e)

8 Bytes se transfieren en 3 inst. * 4 ciclos/inst. * 5 ns/ciclo = 60 ns


Vmax = 8 Bytes/( 60*10-9)seg. = 1,33*108 Bytes/seg = 133 MBytes/seg.ns

Potrebbero piacerti anche