IsaacNewton escribió:ejercicio de caché del final de 4 /3/2009:
- Para sacar el campo etiqueta me fijo en la etiqueta con cuantos bits está referenciada: son 4 bits. Perfecto.
Para saber el campo linea, cuento las lineas de la caché, como son 8 lineas, entonces 2 ^ 3 = 8. Entonces tiene 3 bits.
1) Ahora, cómo saco el campo POSICIÓN?
2)El ultimo punto , cómo hago para saber que el valor es el A2?? Cómo la etiqueta dice 0010 (2 en decimal) busco la columna 2 y ese es el valor??
Los campos de una cache son Etiqueta Linea y Dato.
( regla nemotecnica que use para acordarme el orden de estos campos del ort... Tengo una tia que se llama ELDA , joya tia no me tengo que olvidar tu nombre en el final para recordar el orden de estos campos....
)
El dato , son 3 bits porque ves que hay 8 casilleros del 0 al 7 que adentro tienen datos. ( es la numeracion de 0 a 7 de manera horizontal, ojo ) esta como tiene datos, lo llamo campo DATOS.
La etiqueta son cuatro bits, se nota claramente en el dibujo referencial que expone el final.
y luego me hablan de un campo posicion , bueno.... puedo responder dos cosas aca:
- campo posicion no lo conozco
- profesor! , mando fruta en el enunciado!
( esto no queda bien en un final... jajajaja )
- bueno, el unico campo que conozco aca se llama LINEA , y estos le vienen a llamar en un final POSICION!! , bahhh que se yo... hago de cuenta que POSICION es lo que yo conozco como LINEA que es el campo que me falta!!
Bueno , fijate que la numeracion 0 a 7 vertical , que se encuentra a la izquierda de la tabla , es lo que yo llamaria LINEA .
Como la numeracion es de 0 a 7 , para direccionar estos valores , preciso 3 bits. de ahi sale. ( si no se comprendio, re-pregunta y tratare de ser mas claro )
Bueno, los anchos de los campos quedarian asi:
.-------------.-----------.---------.
| ETIQUETA[4] | LINEA [3] | DATO[3] |
'-------------'-----------'---------'
=====================================
El enunciado habla que se precisa direccionar en la memoria principal la memoria efectiva 0x0B2
La pasamos a binario:
0000 1011 0010
0 B 2
Bueno, generalmente se representa en hexadecimal las direcciones .... por lo tanto en nibbles .
En este caso represento a 12 bits... pero mi memoria es de 10 bits!!!
que hago? y.. elimino los 2 bits mas significativos, que debieran estar en cero!!
si no lo estan, hay quilombo, porque en realidad estaria apuntando a una direccion fantasma (si, ese es el termino) pero eso aca no lo vemos. asique deberian ser siempre cero.
Entonces el 0x0B2 en 10 bits y formateado en los campos ( que suman 10 bits , igual que la memoria ppal )
.-------------.-----------.---------.
| ETIQUETA[4] | LINEA [3] | DATO[3] |
'-------------'-----------'---------'
la direccion 0x0B2 en 10 bits: 00 1011 0010
formateada dentro de los campos:
| ETIQ | LIN | DAT |
| 0010 | 110 | 010 |
1) Vemos que la linea es la 110 , es decir la nro 6 vertical , acordate x lo de arriba.
2) La etiqueta 0010 , que debe coincidir con la fila nro 6 que referi en 1) ,
y si... vemos que coincide, es decir hay una PRESENCIA
si no llega a coincidir, se genera una AUSENCIA y el controlador debe ir a buscar en memoria principal los datos y hacer la actualizacion de cache. pero no es el caso.
3) el campo datos 010 indica la columna 2 ( es el 2 en la numeracion horizontal de 0 a 7 )
que haces ahora? -jugas a la batalla naval (jamas jugue!!) fila 6 , columna 2 , A2 HUNDIDO!!
RTA la direccion 0x0B2 Referencia al dato 0xA2 en la memoria cache
Saludos.
Ale.