Certamen 03 ELO311 Estructuras de Computadores I. Segundo

Anuncio
Certamen 03 ELO311 Estructuras de Computadores I.
Segundo Semestre 2000.
1. Para un procesador pipeline(segmentado) con anticipación de operandos hacia la unidad
aritmética y anticipación de datos para escribir en memoria; con bifurcaciones retardadas y
saltos con descarte(con flushing); y con detenciones(stall).
El arreglo de registros está construido con latchs transparentes. La señal equal se genera en
el segmento de decodificación y lectura de registros. Las instrucciones de tipo R e
inmediatas pasan por los cinco segmentos de la cañería. La memoria de datos está separada
de la memoria de instrucciones.
Determinar si existe o no conflicto(y de qué tipo) en la siguiente secuencia, fundamentando
su respuesta. En caso de existir conflicto, indicar cómo y quién lo resuelve(el procesador o
el compilador), para optimizar el comportamiento de la cañería.
Si los conflictos se resuelven por anticipación de datos indicar el tipo de anticipación,
indicando la unidad en que se encuentra el dato que se anticipa, y la unidad en que se
introduce el dato anticipadamente. Si los conflictos se resuelven por detenciones, indicar la
instrucción que se decodifica dos o más veces y la instrucción que se lee dos o más veces
desde la memoria de instrucciones.
add
sw
lw
ori
Solución.
$t1, $t1, $t1
$t1, 0( $t1 )
$t1, 0( $t1)
$t1, $t1, 0x1
add $t1, $t1, $t1 ;(1)
sw $t1, 0($t1)
;(2)
lw $t1, 0($t1)
;(3)
ori $t1, $t1, 0x1 ;(4)
; (1)
; (2)
; (3)
; (4)
M
I
M
I
tiempo
M
D
R
L
R
L
M
I
M
D
M
D
R
L
M
I
R
L
M
D
orden de ejecución
Anticipaciones hacia la unidad de operaciones(para leer el contenido del registro $t1):
entre la (1) y (2); entre (1) y (3); y entre (3) y (4).
Anticipación hacia la unidad de memoria(para leer el contenido del registro $t1): entre la
(1) y (2)
Estando la (1) en operaciones y la (2) en decodificación, se adelanta la salida de la alu hacia
la entrada de la alu ( A = AluOut).
Estando la (1) en memoria, la (2) en operaciones y la (3) en decodificación, se adelanta la
salida de la memoria: hacia la entrada de la alu ( A = MOut) y hacia la entrada de la
memoria(M = Mout)
Soluciones Tercer Certamen.
1
Estando la (3) en operaciones y la (4) en decodificación, se detiene por un ciclo los
segmentos de búsqueda y decodificación, y se invalida la órden de escritura en registros de
la (4). Esto implica que la (4) se decodifica dos veces, y la (5) se busca dos veces en la
memoria de instrucciones.
Estando la (3) en memoria y la (4) en decodificación, se adelanta la salida de la memoria
hacia la entrada de la alu ( A = MOut). La secuencia serealiza en 9 ciclos de reloj, dando
un CPI promedio de 9/4.
Debe notarse que un compilador que optimice el código, habría eliminado la instrucción lw,
ya que ésta lee en $t1(desde la dirección efectiva en la memoria), el valor de $t1, que fue
depositado en la misma dirección efectiva por la instrucción sw anterior. La instrucción
sw no puede eliminarse, ya que se escribe en memoria, modificando el valor de la variable
allí almacenada.
add $t1, $t1, $t1 ;(1)
sw $t1, 0($t1)
;(2)
ori $t1, $t1, 0x1 ;(4)
1
2
M
I
R
L
M
I
3
4
5
6
tiempo
M
D
R
L
M
I
7
M
D
R
L
M
D
orden de ejecución
La secuencia se efectúa en 7 ciclos. El CPI promedio es 7/3.
2. Se tiene una memoria cache de datos de 128 Bytes de datos en total. Está organizada en
forma asociativa por conjuntos de dos vías, empleándose la política de reemplazo del
menos recientemente usado. El bloque está formado por dos palabras de 32 bits cada una.
a) Determinar el número de bits necesarios para especificar los campos: offset de byte,
offset de bloque, índice de la cache y marca.
Se tiene que 128 Bytes son 128*8/32 = 32 Palabras de 32 bits.
Y como cada bloque está formado por 2 palabras, se tienen 16 bloques en total. Y como se
reparten en dos vías, se tendrá 8 bloques en cada vía; por lo tanto se requieren tres bits para
especificar el índice de la cache.
Basta un bit para especificar el offset del bloque.
La marca se determina por diferencia: 32 - 3 - 1- 2 = 26
marca
índice
offset bloque
offset byte
26
3
1
2
b) Determinar la cantidad de bits necesarios para almacenar todas las marcas y los bits de
validez.
Para las marcas se requieren: 26*8*2 = 416 bits.
Para los bits de validez se requieren: 8*1*2 = 16 bits.
Soluciones Tercer Certamen.
2
La organización puede representarse según el siguiente diagrama:
#
0
1
2
3
4
5
6
7
3
V
1
1
marca
..00
..01
dato 0
M[00]
M[48]
dato 1
M[04]
M[4C]
1
..00
M[28]
M[2C]
1
1
.01
26
M[78]
32
M[7C]
32
# V
0
1 1
2
3
4
5 1
6
7
3 1
marca
dato 0
dato 1
..11
M[C8]
M[CC]
..10
M[A8]
M[AC]
32
32
26
En el cual se ilustran algunos bloques(de dos palabras) almacenados.
c) Para una entrada válida, con marca igual a 0x2 e índice igual a 0x3, indicar las
direcciones de los bytes almacenados en esa entrada.
marca
índice
offset bloque offset byte
Dirección
Hex.
....00010
011
0
00
0.1001.1000
0x98
....00010
011
0
01
0.1001.1001
0x99
....00010
011
0
10
0.1001.1010 0x9A
....00010
011
0
11
0.1001.1011 0x9B
....00010
011
1
00
0.1001.1100 0x9C
....00010
011
1
01
0.1001.1101 0x9D
....00010
011
1
10
0.1001.1110
0x9E
....00010
011
1
11
0.1001.1111
0x9F
d) Determinar en qué dirección de la cache se almacena el contenido de la dirección
0x1D8 y cual es el valor de la marca. Indicar las siguientes cuatro direcciones de
palabras de memoria que deberían almacenarse en la misma dirección de la cache,
dando el valor de las marcas respectivas.
0x1D8 = ...0000.0001.1101.1000 Corresponde índice 3. Marca 0x7. Bloque 0.
La siguiente palabra, con igual índice está 4 bytes más adelante, resulta:
0x1DC = ...0000.0001.1101.1100 Corresponde índice 3. Marca 0x7. Bloque 1.
La siguiente, se obtiene con bloque 0 y marca ...0001000, es decir:
0x218 = ...0000.0010.0001.1000 Corresponde índice 3. Marca 0x8. Bloque 0.
La siguiente, se obtiene con bloque 1 y marca ...0001000, es decir:
0x21C = ...0000.0010.0001.1100 Corresponde índice 3. Marca 0x8. Bloque 1.
La siguiente, se obtiene con bloque 0 y marca ...0001001, es decir:
0x258 = ...0000.0010.0101.1000 Corresponde índice 3. Marca 0x9. Bloque 0.
e) Si el número de vías se aumenta a 4 y se desea que el campo marca sea de 20 bits y que
el tamaño del bloque sea de 16 palabras de 32 bits cada una. Determinar el rango de
direcciones para la cache, y el número total de bytes dedicados a datos.
Soluciones Tercer Certamen.
3
marca + índice + offset bloque + offset byte = 32
offset byte = 2; 16 palabras implica: offset bloque = 4
20 + índice + 4 + 2 = 32; entonces índice = 6.
Número de entradas de la cache = 2 6 = 64.
Capacidad de la cache = 4(vías)* 64(entradas) * 16(palabras) * 32 bits = 4*64*16*4 Bytes
= 16.384 Bytes sin considerar bits de marca y validez.
Soluciones Tercer Certamen.
4
Descargar