TP Memorias y Cache Resp

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 15

EJERCICIOS DE MEMORIA Y MEMORIA CACHE

1) MEMORIA PRINCIPAL – Manejo de direcciones


Preguntas 1KB 16KB 64KB 8MB
1 Rango de 0000000000 00000000000000 0000000000000000 00000000000000000000000
direcciones en 1111111111 11111111111111 1111111111111111 11111111111111111111111
binario y en 000 – 3FF 0000-3FFF 0000-FFFF 000000-7FFFFF
hexadecimal de
toda la memoria
2 Primera
1000000000 10000000000000 1000000000000000 10000000000000000000000
dirección de la
2da mitad de la 200 2000 8000 400000
memoria
3 Rango de 1000000000 10000000000000 1000000000000000 10000000000000000000000
direcciones del - - - -
1011111111 10111111111111 1011111111111111 10111111111111111111111
3er cuarto de la
memoria 200 - 2FF 2000 - 2FFF 8000 - BFFF 400000 - 5FFFFF

4 Segunda
dirección del 1100000001 11000000000001 1100000000000001 11000000000000000000001
último cuarto de 301 3001 C001 600001
la memoria
5 Rango de 1100000000 11000000000000 1100000000000000 11000000000000000000000
direcciones del - - - -
1101111111 11011111111111 1101111111111111 11011111111111111111111
7mo octavo de
la memoria 300 – 37F 3000 – 37FF C000 - CFFF 600000 – 6FFFFF

6 Última dirección 1001111111 10011111111111 1001111111111111 10011111111111111111111


del 5to octavo
27F 27FF 9FFF 4FFFFF
de la memoria
7 Memoria Tendrá 256 Tendrá 4096 Tendrá 16384 Tendrá 2097152 bloques.
dividida en bloques de 4 bloques. bloques.
bytes.
bloques de 4
bytes. Primer Primer Bloque: Primer Bloque: Primer Bloque:
¿Cuántos Bloque: 10000000000000 1000000000000000 10000000000000000000000
bloques hay? 100000000
Dirección de Segundo Bloque: Segundo Bloque: Segundo Bloque:
Segundo 10000000000100 1000000000000100 10000000000000000000100
comienzo del Bloque:
1er bloque, 2do 100000100 Tercer Bloque: Tercer Bloque: Tercer Bloque:
y 3er bloque de 10000000001000 1000000000001000 10000000000000000001000
la 2da mitad de Tercer
la memoria. Bloque: Anteúltimo Anteúltimo Anteúltimo Bloque:
100001000 Bloque: Bloque: 11111111111111111111011
Dirección de 11111111111011 1111111111111011
comienzo del Anteúltimo
anteúltimo bloque:
1111111011
bloque de la
memoria.
8 Memoria Tendrá 128 Tendrá 2048 Tendrá 8192 Tendrá 1048576 bloques.
dividida en bloques de 8 bloques. bloques.
bytes.
bloques de 8
bytes. Comienzo del Comienzo del Comienzo del 4to Comienzo del 4to bloque
¿Cuántos 4to bloque 4to bloque del bloque del último del último cuarto:
bloques hay? del último último cuarto: cuarto: 11000000000000000100000
Dirección de cuarto: 11000000100000 100000000100000
1100100000
comienzo del
4to bloque y del Comienzo del Comienzo del Comienzo del Comienzo del último
último bloque último bloque último bloque último bloque del bloque del último cuarto:
del último del último del último último cuarto: 11111111111111111111000
cuarto de la cuarto: cuarto: 1111111111111000
1111111000 11111111111000
memoria.

9 Memoria Tendrá 32 Tendrá 512 Tendrá 2048 Tendrá 262144 bloques.


dividida en bloques de 32 bloques. bloques.
bytes.
bloques de 32
bytes. Comienzo del Comienzo del Comienzo del 2do Comienzo del 2do bloque
¿Cuántos 2do bloque 2do bloque del bloque del 7mo del 7mo octavo:
bloques hay? del 7mo 7mo octavo: octavo: 11000000000000001000000
Dirección de octavo: 11000001000000 1100000001000000
1101000000
comienzo del
2do bloque y del Comienzo del Comienzo del Comienzo del
último bloque último bloque último bloque último bloque del Comienzo del último
del 7mo octavo del 7mo del 7mo octavo: 7mo octavo: bloque del 7mo octavo:
de la memoria. octavo: 11011111100000 1101111111100000 11011111111111111100000
1101100000
2) Sabiendo que una CPU genera una dirección de 33 bits que permiten acceder a la
memoria principal

 Cuál es el tamaño potencial de la memoria principal


La memoria principal va a ser de 233 → 8 GB

 Si a la memoria DRAM se le habilitan 4 Giga ¿Cuántos bits son


significativos para direccionarla

Se necesitan 32 bits.

 ¿Si el total de los 4 Giga están distribuidos en dos placas de 8 chips cada
una como esta armada la matriz de mX8 en cada chip y cual es la
capacidad de cada uno?

La matriz es de 256Mx8

3) Un sistema de memoria paginada utiliza páginas de 16 K y opera en un entorno donde


la dirección lineal es de 24 bits. ¿Cuántos y cuáles bits de esta dirección se utilizan para
indicar el desplazamiento dentro de la página suponiendo una administración con un
único nivel de jerarquía?

Si cada página es de 16k, entonces va a necesitar 14 bits, ya que 16k = 214.


Si la Dirección lineal es de 24 bits, entonces el desplazamiento va a ocupar 14 bits y
el índice de página 10 bits.

Dirección lineal (24 bits)


Índice de página Desplazamiento
10 bits 14 bits

4) El Tamaño Máximo de un Segmento:


a. Puede ser de 64K en modo real.
b. Puede ser de 1 Mbyte o incluso de 4 GBytes en modo protegido
c. Ambas son verdaderas.
d. Ninguna respuesta es correcta.

5) El Desplazamiento en una Dirección Virtual es:


a. de 32 bits.
b. de 48 bits.
c. de 46 bits.
d. se almacena en un registro de segmento.
La dirección virtual (46 bits) se divide en el selector (14 bits) y el desplazamiento
(32 bits). Por lo tanto, la respuesta correcta es la “a”.

6) En modo virtual un segmento de datos no paginado ocupa 2048 bytes y se haya


residiendo en memoria principal. La dirección virtual que permite accederlo es
0004:00032785, además la dirección física obtenida para accederlo es
0B332785. EXPRESAR EN HEXADECIMAL LOS CAMPOS NUMERICOS DE SU DECRIPTOR DE
SEGMENTO INDICANDO CUAL ES SU DENOMINACIÓN E INDICAR AL MENOS DOS
ATRIBUTOS DE DICHO SEGMENTO

Atributos: P=1 G=0


BASE= 0B300000
LIMITE= 00800

7) Suponiendo los siguientes valores de los registros en Modo Virtual ó Protegido:


CS=4004 DS=8000 SS=1000 EIP=00000F50 ESP=0000FF0C se accede a la instrucción
ubicada en la dirección física A555BF50, indicar:
a) El valor del Selector asociado a la dirección virtual que se accede.
Dirección virtual segmentada: 4004:00000F50

SELECTOR = 01000000000001

b) Valor del bit TI indicando su significado.


Campo selector (los 14 bits de mayor peso dentro del registro de segmento)

CS = 4004 - 0100000000000100 → 01000000000001

El valor del bit Ti (el más bajo del campo selector), tiene el valor de 1.

c) Dirección base del comienzo del segmento.

Dirección virtual segmentada:

4004:00000F50

Dirección física = Base + Desplazamiento

A555BF50 - 00000F50 = Base

A555B000 = Base

d) Si el segmento de Códigos ocupa 4096 bytes, ¿cuál será la dirección final del
segmento?

Si el Segmento ocupa 4096 bytes → 4KB

Entonces, en binario: 00000001000000000000 y b

en hexadecimal: 01000 h

Éste sería el campo límite, que ocupa 20 bits del descriptor de segmento.
8) De acuerdo con el siguiente esquema y conociendo los descriptores de los segmentos
A, B y C

Descriptor de A: expresado en hexadecimal como dos doble Word (de acuerdo con el
formato del descriptor que se agrega abajo)
0140FA00
80008000
Descriptor de B: expresado en hexadecimal como dos doble Word
0240F600
8000C000
Descriptor de C: expresado en hexadecimal como dos doble Word
0348F200
80007000

 Determine el espacio físico donde se encuentra cada segmento


 Indique de que tipo es cada segmento
 Cuáles son los registros de segmento que debo emplear para direccionar a cada
uno de ellos.
 Indique el tamaño de cada segmento
Segmento A:
0140FA00
80008000
a)
Dirección base: 01008000
Campo límite: 08000

Dirección final = Base + Límite – 1 = 01008000 + 08000 – 1


= 01008000 + 07FFF
= 0100FFFF
El segmento se encuentra entre las direcciones 01008000 y 0100FFFF.
b)
FAh = 11111010b

Como tenemos el atributo “S” en 1 y el atributo “E” en 1, podemos decir que es un


descriptor de segmento de código.
c)
CS

d)
El campo límite es 08000 en Hexa, y en binario sería 0000100000000000, por lo
que tiene un tamaño de 32 K.

Segmento B:
0240F600
8000C000

a)
Dirección base: 02008000
Campo límite: 0C000

Dirección final = Base + Límite – 1 = 02008000+ 0C000– 1


= 02008000+ 0BFFF
= 02008BFF
El segmento se encuentra entre las direcciones 02008000y 02008BFF.
b)
F6 = 11110110

Como tenemos el atributo “S” en 1 y el atributo “E” en 0, podemos decir que es un


descriptor de segmento de datos.
c)
DS
d)
El campo límite es 0C000en Hexa, y en binario sería 00001011000000000000, por
lo que tiene un tamaño de 44 K.
Segmento C:
0348F200
80007000
a)
Dirección base: 03008000
Campo límite: 87000

Dirección final = Base + Límite – 1 = 03008000+ 87000– 1


= 03008000+ 86FFF
= 0308EFFF
El segmento se encuentra entre las direcciones 03008000 y 0308EFFF.
b)
F2 = 11110010

Como tenemos el atributo “S” en 1 y el atributo “E” en 0, podemos decir que es un


descriptor de segmento de datos.
c)
DS

d) El campo límite es 87000 en Hexa, y en binario sería 10000111000000000000, por


lo que tiene un tamaño de 540 K.
9) Teniendo en cuenta el siguiente esquema y dados los valores de CS: 1202H y
siendo el contenido de GDTR: 000008002000H determinar cuál es la dirección
física del descriptor de segmento

CS = 1202H = 0001001000000010b

Selector: 00010010000000b
Índice: 0001001000000b

Dirección física del descriptor: Base (LDTR v GDTR) + Indice*8

Base GDTR en hexadecimal: 00000800h

Índice en binario: 0001001000000b * 8 = 0001001000000000


Índice en hexadecimal: 1200

Dirección física del descriptor: 00000800 + 1200


Dirección física: 00001A00

10) En base al siguiente esquema si el desplazamiento es: 00000ABC H; indicar


cuál sería la dirección lineal de cada uno de los segmentos A, B y C del primer
problema (problema 8) y con qué tabla accedemos en cada caso si conocemos la
información de los siguientes registros de segmento:

CS = 1202 H; DS = 2307 H y SS = 012F H


Segmento A:
Segmento de Código – Se toma el CS - Accedemos a la tabla global y la dirección lineal es:
01008ABC

Segmento B:
Segmento de Datos – Se toma el DS - Accedemos a la tabla local y la dirección lineal es:
02008ABC

Segmento C:
Segmento de Datos – Se toma el DS - Accedemos a la tabla local y la dirección lineal es:
03008ABC

11) Teniendo en cuenta el contenido de los registros mostrados abajo se pide calcular la
dirección física a la que se accedería en modo real (o modo 16 bits) mediante las
siguientes instrucciones e indicar cuál sería el contenido de cada posición de memoria:
a) POP CX DIRECCIÓN=0063C CONTENIDO= El dato de CX guardado
previamente con la instrucción push en la pila
b) MOV [0000], BX DIRECCIÓN=00500 CONTENIDO= 001C
Contenido de los registros
REGISTRO AX = 001B REGISTRO SP = 003C REGISTRO IP = 0103
REGISTRO CS = 0040 REGISTRO BX = 001C REGISTRO DS= 0050
REGISTRO CX = 001D REGISTRO SS = 0060

a)
SS : SP  0060 : 003C
Dirección física = Base * 10 + Desplazamiento

Dirección física = 0060 * 10 + 003C

Dirección física = 00600 + 003C

Dirección física = 0063C


b)
MOV [0000], BX  0050 : 0000

Dirección física = Base * 10 + Desplazamiento

Dirección física = 0050 * 10 + 0000

Dirección física = 00500 + 0000

Dirección física = 00500

12) Dada la siguiente situación y sabiendo que la CPU genera una dirección de 24 bits
que permiten acceder a la memoria principal y a la caché:
Tiene 64
líneas

MP M. Caché
E L 5 bits

24 bits
Indicar
a) Cuál es el tamaño de la memoria principal
Sabemos que la CPU genera una dirección de 24 bits, entonces podemos
decir que la MP = 224 = 16MB

b) Cuál es el tamaño de la línea de caché


Sabemos que cada línea tiene un dato de 5 bits, entonces el tamaño va a
ser de 25 = 32 bytes.

c) Cuál es el tamaño de la memoria caché


Sabemos que tiene 64 líneas y, como vimos antes, tiene 32 columnas,
entonces hacemos la fórmula:
MC = Líneas * Columnas
MC = 64 líneas * 32 bytes = 2KB

d) Cuánto valen los campos E y L


Como tiene 64 líneas, eso es lo mismo que decir que tiene 26 líneas.
Entonces podemos concluir que el campo Línea tiene 6 bits.

Y como tenemos el dato de que la dirección es de 24 bits, simplemente


hacemos la resta y sacar así el campo E.
Campo E = 24 bits – 6 bits – 5 bits = 13 bits

13) Una memoria principal de 4 Mbytes opera con una caché de 64 K líneas de 8 bytes
cada una y utiliza correspondencia directa (asociativa de una vía). Qué estructura de
parámetros permite el acceso a esta memoria y cómo se distribuyen los bits
correspondientes?

MP = 4 MB = 2^20 * 2^2 = 22 bits

E L D
3 bits 16 bits 3 bits

22 bits

Campo E:

MC = 64 K líneas x 8 bytes/línea

MC = 524288 bytes = 524 KB = 2^19 bytes

Grupos = MP / MC

Grupos = 4 MB / 524288 bytes = 2^22 / 2^19 = 2^3 = 8 grupos

3 bits para el tamaño del campo E

Campo L:

64K de líneas, el tamaño de ellas es 2^10 * 2^6 = 2^16 = 16 bits.

Campo D: El tamaño de línea es de 8 bytes, 2^3 = 3 bits.


14) 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?

MP = 4 MB = 2^20 * 2^2 = 22 bits

E D
19 bits 3 bits

22
bits

Campo E:

Bloques = MP / Tamaño línea

Bloques = 4 MB / 2^3 = 2^22 / 2^3 = 2^19 = 524 K bloques

19 bits para el tamaño del Campo E

Campo D:

El tamaño de línea es de 8 bytes, 2^3 = 3 bits.

15) Una memoria cache con una organización asociativa de 2 vías está dividida en cada vía
en 8 bloques de 8 bytes cada uno. La memoria principal tiene una capacidad de un KB.
¿Cuál es el formato que el controlador de cache utiliza para interpretar la dirección física y
determinar si la información buscada se encuentra en ella? ¿Cuantos bytes almacena la
caché? ¿Cuantos bytes de cache se acceden por vez?

MP: 1 KB = 2^10 = 10 bits

Se utiliza la correspondencia de N vías para interpretar la dirección física.

E L D
4 bits 3 bits 3 bits

10 bits
Campo E:

MC = 128 bytes = 2^7 bytes

Grupos = MP / MC

Grupos = 1 KB / 128 bytes/2 = 2^10 / 2^6 = 2^4 = 16 grupos

14 bits para el tamaño del Campo E

Campo D: El tamaño de línea es de 8 bytes, 2^3 = 3 bits.

Campo L: Hay 8 líneas por vía dentro de la memoria cache, 2^3 = 3 bits.

16) Sabiendo que una CPU genera una dirección de 24 bits que permiten acceder a la
memoria principal y a la caché y que la caché tiene 128 líneas de 32 palabras (bytes)
cada una indicar:
 Cuál es el tamaño de la memoria principal
El tamaño de la MP = 224 = 16MB, ya que la CPU genera una
dirección de 24 bits.
 Cuántos bytes tiene el campo etiqueta en el caso de correspondencia
totalmente asociativa.
Sabiendo que la MP tiene 32 columnas y un tamaño de 16MB, al
tener cada línea asociada una etiqueta correspondiente, podemos
calcular el campo etiqueta de la siguiente forma:

16MB / 32 bytes = 524288 bloques


524288 = 219 = 512 K
El campo etiqueta tiene 19 bits.
 Cuántos bytes tiene el campo etiqueta en el caso de correspondencia
directa

MC = 128 líneas * 32 bytes = 4 KB

Cantidad de Grupos:
MP / MC  16MB / 4KB  224/212 = 212 = 4K grupos

Cada grupo lleva una etiqueta, por lo tanto van a haber tantos
grupos como etiquetas.
4 K = 212, entonces podemos decir que el campo etiqueta va
a ocupar 12 bits.
17) A continuación se muestra una memoria caché con la etiqueta y datos que la
forman:
Etiquetas 7 6 5 4 3 2 1 0
0 1001 A4 54 79 32 45 22 F0 56
1 0111 14 52 33 8D B5 34 45 32
2 1001 00 FF 64 31 11 A6 33 24
3 0011 32 63 CC C3 FA 1F 33 53
4 1010 76 88 64 46 25 37 F3 FA
5 0100 DC 14 33 96 8A 7B 34 F0
6 0010 15 37 A1 85 AA B6 42 13
7 1001 77 76 34 90 00 15 61 24

a) Indicar la dirección que permite acceder con éxito al dato indicado, suponiendo
que se trata de una memoria cache de correspondencia directa.

Primero, hay que tener en cuenta 3 campos, el campo línea, campo dato y el
campo etiqueta.
Entonces la dirección quedaría dividida de la siguiente forma:

4 bits 3 bits 3 bits


Etiqueta Línea Dato

10 bits

Nosotros queremos acceder al dato 8A. Ese dato se encuentra en:


E : 0100
L : 101
D: 011
Dirección del dato: 0100101011 v 12B
b) Suponiendo que las direcciones de Memoria a acceder son 2A6 y 3A5 indicar si hay
acierto o no y en el caso de acierto el valor obtenido.

2A6:

2A6 = 001010100110

Etiqueta: La etiqueta es 1010


Línea: La línea es 100  Línea 4
Dato: El campo dato es 110  Dato 6
Entonces, como se ve en el cuadro resaltado, el valor obtenido es 88.

3A5:

3A5 = 001110100101

Etiqueta: La etiqueta es 1110


Línea: La línea es 100  Línea 4
Dato: El campo dato es 101  Dato 5

En este caso no hay acierto, ya que, si quiero acceder a la etiqueta 1110, puedo ver en
el cuadro de la memoria que no existe.

c) Indicar el tamaño de la Memoria principal relacionada con la memoria cache del


punto anterior (b)

Como vimos antes, la memoria cache ocupa 10 bits  la MP = 210 = 1KB

d) En el caso de ausencia indicar que línea es la que se actualizaría

En el caso de 3A5, que como vimos, hay ausencia, su línea era la nro 4, por lo tanto se
actualizaría la etiqueta del grupo a 1110.

También podría gustarte