Subo 4 ejercicios resueltos del TP que encontre en un rar que baje hace banda
5) Para la línea de código presentada a continuación
5555:0103 mov ax, [0555]
Calcular las direcciones efectivas de la instrucción y del operando, suponiendo que CS = DS.
Bueno, mi resolución sería la siguiente:
Primero, la aclaración CS=DS, es muy buena, nos permite afirmar, que los codigos de instrucciones y los operandos (datos) están alojados en el mismo segmento (CS aloja instrucciones "Code Segment" ; DS aloja datos "Data Segment").
Segundo, sabemos que el segmento en el q se aloja la instrucción MOV... es el 5555 (primera parte de la "dirección segmentada" XXXX(segment):YYYY(desplaz)), por lo tanto el operando también estará en 5555.
Tercero, ahora necesitamos los desplazamientos, vemos q el IP para MOV apuntará al desplazamiento 0103 al momento de ejecutar la instrucción, porq es en esa posición del segmento donde está alojado el cod de la instrucción MOVE..., por lo tanto (y como lo vemos a la izquierda de la instrucción) la dirección segmentada de la instrucción es 5555:0103.
Cuarto, el desplazamiento del operando es fácil, debido a q está haciendo un direccionamiento inmediato a memoria (los corchetes implican el contenido de...en este caso la dir 0555), por lo tanto ahora sabemos que el operando está alojado en 5555:0555.
Quinto, obtenemos las direcciones efectivas aplicando el algoritmo para el cálculo de direcciones efectivas en Modo Real:
(dirección segmentada) XXXX:YYYY => XXXX*10=XXXX0, luego
XXXX0+YYYY (dirección efectiva)
Ahora lo aplicamos:
Dir Segment. Instrucción: 5555:0103 => 55550+0103=55653h
Dir Segment. Dato: 5555:0555 => 55550+0555=55AA5h
6) Una memoria principal de 4 Mbytes opera con una caché de 64 K líneas de 8 bytes cada una y utiliza correspondencia asociativa de una vía. Qué estructura de parámetros permite el acceso a esta memoria y cómo se distribuyen los bits correspondientes?
Resolución:
Como es una correspondencia asociativa de una vía, la memoria principal se divide en bloques de igual estructura q una el bloque de datos asociados de la Cache.
Como las lineas son de 8 bytes, luego 64K * 8B=512 KB es el tamaño de la memoria Caché.
Luego en Memoria Principal tendremos: 4MB/512KB=8 grupos de igual característica q el la memoria caché (512 KB en 64 K líneas de 8 bytes c/u).
Sabemos q la direccion a Memoria principal es de 22 bits (memoria de 4 MB).
En este tipo de organizacion necesitamos los bits Etiqueta, Línea y Posicion.
Luego como cada linea tiene 8 bytes, los dividos en datos de 1byte, y necesitamos 3 bits (Posición, los menos significativos) para obtener un dato de una línea.
Para poder identificar a los 8 grupos de la memoria principal utilizaremos etiquetas, estas serán referenciadas con los 3 bits de más peso.
Nos falta indexar el número de línea para poder comparar los bits de Etiqueta. Para ello utilizaremos los 16 bits del medio de la dirección para Línea (2^16=64K).
Ya terminamos el ejercicio.
Direccion a Memoria Principal bit 21 a 0 (22 bits)
Interpretacion del Controlador de Cache:
bit 21 a 19 (3 bits) "ETIQUETA"
bit 18 a 3 (16 bits) "LINEA"
bit 2 a 0 (3 bits) "POSICION"
7) Una memoria principal de 4 Mbytes opera con una caché de 64 K líneas de 8 bytes cada una y utiliza correspondencia totalmente asociativa. Qué estructura de parámetros permite el acceso a esta memoria y cómo se distribuyen los bits correspondientes?
Resolución:
Como es una correspondencia totalmente asociativa, la memoria principal se divide en bloques de igual tamaño q una línea de la Cache. Como las lineas son de 8 bytes, luego 4MB/8B=2^19 bloques hay en Memoria principal de 8 bytes cada uno, x lo tanto necesitamos 19 bits de etiquetas para referenciar a c/u de ellos.
Sabemos q la direccion a Memoria principal es de 22 bits (memoria de 4 MB).
En este tipo de organizacion necesitamos los bits Etiqueta y Posicion.
Luego como cada linea tiene 8 bytes, los dividos en datos de 1byte, y necesitamos 3 bits para obtener un dato de una línea.
Ya terminamos el ejercicio.
Direccion a Memoria Principal bit 21 a 0 (22 bits)
Interpretacion del Controlador de Cache: bit 21 a 3 (19 bits) "ETIQUETA"
bit 2 a 0 (3 bits) "POSICION"
8) Una memoria caché con una organización asociativa de 2 vías está dividida en cada vía en 8 bloques (líneas) de 8 bytes cada uno. La memoria principal tiene una capacidad de 1 KB. ¿Cuál es el formato que el controlador de caché utiliza para interpretar la dirección física y determinar si la información buscada se encuentra en ella? ¿Cuántos bytes almacena la caché? ¿Cuántos bytes de caché se acceden por vez?
Resolución (como siempre digo, puede tener errores, si encuentran comentenlo para corrección, esto nos sirve a TODOS!):
Bueno como sabemos es una cache de 2 vías, x lo tanto cada conjunto posee dos líneas (la linea i de la primer vía con la línea i de la segunda), entonces tendremos 8 conjuntos (8 líneas*2vías=16 líneas) de 16 bytes c/u (8 bytes * 2). Sabemos q posee 8 líneas * 8 bytes = 64 bytes (pesa una vía) * 2 vías= 128 Bytes (tamaño total de la Caché).
Ahora, como la Memoria Principal es de 1 KB, necesitamos 10 bits para acceder a ella (2^10=1KB). La memoria, en esta organización, se divide en conjuntos de bloques de igual formato que una de las vías.
Esto es: 1 KB/64 Bytes = 16 conjuntos. Por lo tanto la memoria principal se organiza en 16 Conjuntos de 8 bloques cada uno de 8 bytes cada uno (si vemos 16*8*8Bytes=1KB).
Ahora tenemos q ver como e controlador Caché interpreta la dirección referida a Memoria Principal, la cual, como habíamos dicho, es de 10 bits.
En esta organizacion necesitamos bits de Etiqueta, de Conjuntos, y de Posición. Hay dos de estos q salen inmediatamente:
Cada línea de caché es de 8 bytes, si consideramos q se organiza en Datos de 1 Byte => tenemos q 8*1 byte= 8 bytes, por lo tanto necesitamos 3 bits para referenciar una posición dentro de la línea. Estos serán los bits de menos peso de la dirección.
Como dijimos tenemos 8 conjuntos, estos se referencian mediante 3 bits también, serán los bits del medio de la dirección.
Ahora sólo nos falta las etiquetas: la memoria principal se organizaba en 16 grupos no? bueno para identificar cada uno se necesitan 4 bits (2^4=16), estos serán los bits de más peso de la dirección.
Y ya tenemos armada la interpretación del controlador de Caché:
Dir a MP= bit 9 a 0 (10 bits) => Interpretación Cont Cache=
bit 9 a 6 (4 bits) "ETIQUETA"
bit 5 a 3 (3 bits) "CONJUNTO"
bit 2 a 0 (3 bits) "POSICIÓN"