Problemas de Gestión de Memoria. 1. Se tiene un procesador de

Anuncio
ARQUITECTURA DE COMPUTADORES. 2º INGENIERÍA INFORMÁTICA.
Problemas de Gestión de Memoria.
1. Se tiene un procesador de tamaño de palabra 16 bits con un espacio de direcciones de 216
posiciones de memoria con un cache de mapeado directo y 32 entradas, 1 palabra por bloque. El
caché esta inicialmente vacío. Se produce la siguiente secuencia de accesos (las direcciones se dan
en hexadecimal):
NºAcceso
Dirección
l
l
2
4
3
8
4
5
5
14
6
l1
7
l3
8
24
9
38
10
9
11
41
12
B
13
4
14
2b
15
5
l6
6
17
9
18
l1
l9
8
Se pide:
a) Rotular cada referencia como acierto o fallo e indicar cuál es el contenido final del cache.
b) Repetir suponiendo cache asociativo con 2 vías.
c) Repetir suponiendo cache asociativo con 2 vías y 4 palabras por bloque.
d) Repetir suponiendo cache totalmente asociativo.
2. En un procesador con 10 ns. de periodo de reloj, se tiene una caché con una tasa de fallos de
0.05, y una penalización por fallo de 20 ciclos de reloj. Calcular el tiempo medio de los accesos a
memoria en función del número N de ciclos que se invierte en un acierto. Suponiendo que se pueda
mejorar la tasa de fallo a 0.03 pero aumentando 2 ciclos el tiempo de acceso al cache. ¿Se consigue
mejorar el tiempo medio de acceso a memoria?
3. Se tiene un computador A, con un caché de 4 vías con 256 entradas en cada vía. El tamaño total
de la memoria que almacena las etiquetas del cache es de 16 Kbits. La memoria que almacena los
datos en el caché es de 64 Kbits. ¿Cuál es la organización de la memoria principal (profundidad y
anchura) en el computador A?
Se tiene un segundo computador B, con un cache con la misma estructura y tamaño que el A. El
cache B, sin embargo, carga un bloque de 4 palabras cada vez que se produce un fallo de cache
(intenta aprovechar el principio de localidad espacial) ¿Cuál es la organización de la memoria
principal (profundidad y anchura) en el computador B?
4. Suponga un procesador de 32 bits, con cache on-chip de 16KB, asociativo 4 vías, con líneas de 4
palabras. Dibuje un diagrama con la organización del cache y los campos en que se divide una
dirección de memoria. ¿En qué posición del cache se almacenaría la posición de memoria
0xABCDE8F8?
5. Dada la siguiente información sobre un cache externo: Asociativo 4 vías, bloque de 2 palabras de
16 bits, puede contener hasta 4K dobles palabras de memoria y es usado por un procesador de 16
bits con direcciones de 24 bits. Describa la estructura del cache y muestre cómo se interpretan las
direcciones.
6. El 80486 tiene un cache interno unificado de 8Kbytes, asociativo 4 vías con bloques de 4 dobles
palabras. Posee un total de 128 conjuntos. Hay un bit de línea válida y 3 bits para el algoritmo
pseudo-LRU. En caso de fallo de cache, el 486 lee un bloque de 16 bytes de memoria, siguiendo el
método Dato Deseado Primero. Dibuje con el máximo detalle la estructura interna del caché y
señale cómo se interpretan las direcciones.
1
20
18
7. Se ejecuta el siguiente código C en una máquina con un procesador que dispone de una memoria
caché de datos de 256 bytes con bloques de 4 palabras (de 32 bits):
int i,j,zancada,vector[256];
...
for (i=0; i<10000; i++)
for (j=0; j<256; j=j+zancada)
c = vector[j]+5;
Suponga que sólo se accede a la memoria caché de datos para acceder al vector, y se supone que los
enteros son palabras. Se pide:
A) ¿Cúal es el Miss Rate (tasa de fallos) cuando la memoria caché es de correspondencia
directa (directamente mapeada) y zancada=132?
B) ¿y cuando es 131?
C) ¿Cambiaría algo la si la memoria caché fuera asociativa por conjuntos de dos vías?
D) Suponiendo que la memoria caché de datos es 20 veces más rápida que la memoria
principal y que el tiempo de acceso a memoria caché es de t ciclos, calcule el tiempo total
de acceso a memoria en los casos A y B
8. Se tiene un computador con caché y un sistema de manejo de memoria virtual. El procesador
ejecuta una instrucción que carga en uno de sus registros el dato de la dirección virtual 4000h.
Describa brevemente cuál es el proceso seguido para acceder al dato. ¿En qué tipo de
almacenamiento podría encontrarse el dato?
9. Considere un sistema de memoria virtual con las siguientes propiedades: dirección virtual de 40
bits, páginas de 16KB, dirección física de 36 bits. Indique cuál es el tamaño total de la tabla de
páginas para cada proceso de esta máquina, suponiendo que los bits de validez, protección, etc.
suman un total de 4 bits y que se utilizan todas las páginas virtuales.
10. Normalmente un mayor grado de asociatividad proporciona una menor tasa de fallos, pero no
siempre. Considere una cache de 512Bytes con bloques de 16 Bytes asociativa de grado 2, con
política LRU, y escriba una traza para la cual esta cache tenga más fallos que una del mismo tamaño
pero de correspondencia directa (mapeado directo). Estime la tasa de fallos (miss rate) en cada caso.
11. Considere dos caches A y B. A es de correspondencia directa con 16 bloques de 1 Palabra,
mientras que B es también de correspondencia directa pero con 4 bloques de 4 Palabras. Suponga
que la penalización por fallos para A es de 4 ciclos de reloj y para B de 12 ciclos. Suponiendo que
las caches están inicialmente vacías, escriba una traza de acceso a memoria que haga que la tasa de
fallos (miss rate) del cache B sea menor que la del cache A, pero que el tiempo de acceso medio sea
mayor para el cache B.
2
ARQUITECTURA DE COMPUTADORES. 2º INGENIERÍA INFORMÁTICA.
SOLUCIONES Problemas de Gestión de Memoria.
1. Antes de ver en qué entradas de la memoria caché van a ir los bloques asociados a las referencias
que nos dan y ver los aciertos y fallos que se producen vamos a ver como serían las direcciones de
memoria principal (MP) y cómo se interpretarían en función de la organización de la memoria
caché:
a) Si el tamaño de la palabra es de 16 bits y los bloques son de una sola palabra el campo de
desplazamiento dentro del bloque tendrá un sólo bit para acceder al byte dentro de la palabra.
Como nos dicen 32 entradas y es de correspondencia directa necesitaremos 5 bits para acceder
a la entrada en la caché. Los bits del campo etiqueta se deducen de restar los bits necesarios
para direccionar una posición de memoria (16 bits) de la suma de los anteriores campos. Así
una dirección de MP será interpretada por la caché de la siguiente manera:
10
Etiqueta
5
Índice
1
byte
b) Análogamente a como hemos razonado en el apartado a) deducimos el esquema de direcciones
de esta caché. Hay que fijarse que la dirección siempre será de longitud 16 bits
independientemente de cómo se interprete ya que ese es el tamaño de una dirección a MP.
11
Etiqueta
4
Conjunto
1
byte
c)
9
Etiqueta
4
2
1
Conjunto word byte
d)
15
Etiqueta
1
byte
Ahora para cada caso iremos viendo a qué bloques de la MP se accede. Esos bloques habrán de ser
traídos de la MP a la memoria caché y ubicados en unas determinadas líneas en función de su
organización interna.
En la tabla que se muestra a continuación se ha escrito para cada caso a qué entrada o conjunto irá
el bloque que se trae de memoria principal. En el caso de las memorias asociativas por conjuntos de
dos vías se indica el conjunto y el elemento dentro del conjunto separado por un guión. Entre
paréntesis se ha escrito si ese acceso a memoria ha supuesto un acierto o fallo de caché. Sólo se
produce un caso de fallo de bloque debido a un problema de conflicto en el caso de la caché con
correspondencia directa en el acceso 11. El resto son todos forzosos. Nótese que en el caso c) al ser
el bloque más grande da como resultado una disminución en el número de fallos de bloque
(forzosos).
De esta tabla también se puede deducir el estado final de la memoria caché:
3
-
-
-
En el caso de la caché de correspondencia directa (mapeado directo) se traen 13 bloques y
se producen también 13 fallos. Las 12 entradas, en este caso líneas ocupadas, son la 0, 2, 3,
4, 5, 8, 9, 10, 12, 18, 21, y 28. Para saber los valores de las etiquetas que se guardan en la
memoria caché no hay más que tomar los 10 primeros bits de la referencia empezando por
la izquierda (ver esquema de direcciones). En el caso del acceso 11 se produce un fallo por
conflicto con el bloque traído en el acceso 0. Hay 13 fallos pero se van a quedar 12 bloques.
Por lo tanto será la etiqueta del bloque asociado al acceso 11 la que finalmente quede en la
memoria caché.
Análogamente al caso anterior, en el caso b) las 13 líneas de la memoria caché ocupadas
son: 0 (0-0), 4 (2-0), 8 (4-0), 20 (10-0), 16 (8-0), 18 (9-0), 5 (2-1), 24 (12-0), 1 (0-1), 10 (50), 11 (5-1), 6 (3-0) y 25 (12-1). También se traen 13 bloques de MP y se producen 13
fallos.
En el caso c) se producen 8 fallos de caché y se traen 8 bloques de MP. Las líneas ocupadas
son: 0 (0-0), 2 (1-0), 4 (2-0), 8 (4-0), 14 (7-0), 16 (8-0), 10 (5-0) y 6 (3-0).
En el caso d) se producen 13 fallos, uno por bloque. Las entradas en este caso, al igual que
en la correspondencia directa, son las propias líneas de la caché. Los bloques de MP se van
almacenando de forma secuencial en la memoria caché ya que pueden ir ubicados en
cualquier posición.
Nº
Acceso
Dirección
en hex.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1
4
8
5
14
11
13
24
38
9
41
B
4
2B
5
6
9
11
8
18
2.
3.
Dirección en
binario
0...0
0...0
0...0
0...0
0...0
0...0
0...0
0...0
0...0
0...0
0...0
0...0
0...0
0...0
0...0
0...0
0...0
0...0
0...0
0...0
0000 0001
0000 0100
0000 1000
0000 0101
0001 0100
0001 0001
0001 0011
0010 0100
0011 1000
0000 1001
0100 0001
0000 1011
0000 0100
0010 1011
0000 0101
0000 0110
0000 1001
0001 0001
0000 1000
0001 1000
C. Directa
0 (F)
2 (F)
4 (F)
2 (A)
10 (F)
8 (F)
9 (F)
18 (F)
28 (F)
4 (A)
0 (F)
5 (F)
2 (A)
21 (F)
2 (A)
3 (F)
4 (A)
8 (A)
4 (A)
12 (F)
A. 2 vías
(conjuntolínea en
conjunto)
0 – 0 (F)
2 – 0 (F)
4 – 0 (F)
2 – 0 (A)
10 – 0 (F)
8 – 0 (F)
9 – 0 (F)
2 – 1 (F)
12 – 0 (F)
4 – 0 (A)
0 – 1 (F)
5 – 0 (F)
2 – 0 (A)
5 – 1 (F)
2 – 0 (A)
3 – 0 (F)
4 – 0 (A)
8 – 0 (A)
4 – 0 (A)
12 – 1 (F)
A. 2 vías
con 4
palabras
por bloque
0 – 0 (F)
0 – 0 (A)
1 – 0 (F)
0 – 0 (A)
2 – 0 (F)
2 – 0 (A)
2 – 0 (A)
4 – 0 (F)
7 – 0 (F)
1 – 0 (A)
8 – 0 (F)
1 – 0 (A)
0 – 0 (A)
5 – 0 (F)
0 – 0 (A)
0 – 0 (A)
1 – 0 (A)
2 – 0 (A)
1 – 0 (A)
3 – 0 (F)
Totalmente
asociativo
0 (F)
1 (F)
2 (F)
1 (A)
3 (F)
4 (F)
5 (F)
6 (F)
7 (F)
2 (A)
8 (F)
9 (F)
1 (A)
10 (F)
1 (A)
11 (F)
2 (A)
4 (A)
2 (A)
12 (F)
Tiempo medio de acceso = tiempo acierto +
porcentaje/probabilidad fallo * penalización por fallo
T = N*(10 ns) + 0.05*(20*10) = 10N ns + 10 ns
T = (N+2)*(10 ns) + 0.03*(20*10) = 10N ns + 26 ns Æ No se consigue una mejora
en el tiempo medio de acceso
COMPUTADOR A:
4
Decir que en la caché hay 4 vías con 256 entradas en cada vía es lo mismo que decir que existen
1024 líneas y la memoria es asociativa por conjuntos de 4 vías. Sabiendo esto lo que está claro es
que van a existir 256 conjuntos/entradas y en cada uno 4 líneas/bloques.
¿Profundidad y anchura? Profundidad ya la sabemos 256 conjuntos/entradas de 4 elementos cada
uno. Para saber la anchura necesitamos saber lo que ocupa el campo de etiqueta y el de
desplazamiento o datos. Veamos cuánto ocupan:
16
Datos: (64K para datos / 256 conjuntos) / (4 líneas por conjunto) = (2 / 2 8 ) / 2 2 = 2 6 bits = 64
bits = 8 bytes = 2 3 bytes Æ se necesitan 3 bits para direccionar el dato dentro del bloque.
Tendremos 8 bytes en cada bloque o línea
14
Etiqueta: (16K para etiquetas/256 conjuntos) / (4 líneas por conjunto) = (2 / 2 8 ) / 2 2 = 2 4 bits
= 16 bits por etiqueta
Así pues se tendrá el siguiente esquema de direcciones:
16
Etiqueta
8
Conjunto
3
desplazamiento
Esto quiere decir que la memoria física o principal tendrá un total de 2 27 bytes o lo que es lo mismo
128 Mbytes.
La organización o esquema de la memoria caché será el siguiente:
ETI
BLOQUE
ETI
BLOQUE
ETI
BLOQUE
ETI
BLOQUE
0
.
.
.
.
.
255
2 bytes
8 bytes
COMPUTADOR B:
Si ahora los bloques son de 4 palabras tendremos que el campo de desplazamiento estará dividido
en dos partes: una para la palabra y otra para el byte dentro de la palabra. El resto de campos del
esquema de direcciones no sufren variaciones por lo que el esque de direcciones queda como sigue:
16
Etiqueta
8
2
1
Conjunto word byte
Como las palabras son ahora de dos bytes entonces la memoria física o principal tendrá un total de
2 26 palabras o lo que es lo mismo 64 Mpalabras de 16 bits o dos bytes. La capacidad de la MP sigue
siendo la misma pero la forma de acceder o interpretar la información cambia.
5
4. Si tenemos un procesador de 32 bits significa que el tamaño de una palabra (y/o una referencia a
memoria si no nos dicen nada más) es de 32 bits o lo que es lo mismo de 4 bytes. Este también sería
el tamaño de una dirección enviada por el procesador a memoria principal.
Como nos dicen que las líneas son de 4 palabras ya tenemos el campo de desplazamiento dentro del
bloque: 4 bits o 2+2 (W+B). En total 16 bytes por línea = 4 palabras*4bytes por palabra.
¿Cuál es el tamaño del campo conjunto? o lo que es lo mismo, ¿cuántas entradas o conjuntos tiene
nuestra caché? Sabemos que es asociativa de 4 vías, 16 bytes por línea y que el tamaño total de la
caché es de 16 Kbytes. Por lo tanto el número de conjuntos o entradas será:
16Kbytes / 16 bytes por línea = 2 14 / 2 4 = 2 10 líneas.
Como tenemos 4 vías, es decir, conjuntos de 4 líneas: 2 10 líneas / 2 2 líneas por conjunto =
2 8 conjuntos o entradas = 256 conjuntos o entradas Æ 8 bits para el campo conjunto
¿Cuál es el tamaño de la etiqueta? No hay más que restar al tamaño total del campo de direcciones
(32 bits) la suma de los anteriores campos:
32 bits del campo direcciones – (8 bits campo conjunto o entrada + 4 bits campo desplazamiento
dentro del bloque o línea) = 20 bits
Por lo tanto el esquema de direcciones sería:
20
Etiqueta
8
2
2
Conjunto word byte
De la dirección 0xABCDE8F8 hex sólo nos interesan los 12 primeros bits para saber el conjunto o
entrada en la caché y luego la posición dentro de la línea (palabra+byte).
..... 1000 1111 1000 bin Los 2 primeros bits (los que están más a la izquierda) nos dicen que el byte
dentro de la palabra será el cero (00), los dos siguientes que la palabra dentro del bloque o línea será
la 2ª (10) y los 8 bits restantes que estará en el conjunto o entrada 143 (1000 1111).
5. ¿Cuánto ocupa una línea o bloque?
Bloques de 2 palabras x 2 bytes por palabra (16 bits) = 4 bytes = 2 2 bytes
Æ 2 bits para el campo de desplazamiento dentro del bloque 1+1 (W+B)
¿Cuántas líneas/bloques se pueden almacenar en la memoria caché?
4K dobles palabras = 8K palabras.
Como cada palabra tiene 16 bits (2 bytes)
Æ 8K palabras x 2 bytes por palabras = 16K bytes = 16384 bytes = 2 14 bytes
Ahora ya se conoce el tamaño total de la caché y lo que ocupa cada línea. Por lo tanto
para hallar el número de bloques/líneas habrá que hacer:
2 14 bytes en la caché / 2 2 bytes por línea en la caché = 2 12 líneas o bloques
Como la memoria caché es asociativa por conjuntos de elementos (4 vías), en total se tendrán los
siguientes conjuntos o entradas en la memoria caché:
2 12 líneas o bloques / 4 líneas por conjunto = 1024 = 2 10 conjuntos o entradas
Æ 10 bits para el campo de conjuntos
Como se sabe que las direcciones son de 24 bits la etiqueta ocupará: 24 – (10+2) = 12 bits y el
esquema de direcciones sería el siguiente:
12
Etiqueta
10
1
1
Conjunto word byte
6
La estructura de la caché por tanto tendrá un esquema parecido al siguiente:
ETI
BLOQUE
ETI
BLOQUE
ETI
BLOQUE
ETI
BLOQUE
0
.
.
.
.
.
1023
12 bits
4 bytes
6. Se va a seguir un razonamiento similar al del ejercicio anterior:
. ¿Cuánto ocupa una línea o bloque?
Bloques de 4 dobles palabras x Y bytes por palabra = 16 bytes de memoria por bloque
= 2 4 bytes de memoria por bloque
Æ Y = 4 bytes por palabra y además 4 bits para el campo de desplazamiento dentro del
bloque 2+2 (W+B)
Ya se sabe que el campo conjunto o entradas tendrá 7 bits (128 conjuntos = 2 7 conjuntos). La
cuestión que queda por resolver es cuánto ocupa el campo etiqueta.
Para esto es necesario saber cuanto ocupa el campo de direcciones de memoria o la palabra del
procesador. En este caso se necesita saber que el 486 al igual que el Pentium son procesadores de
32 bits y por lo tanto el campo dirección ocupa 32 bits. Por lo tanto el campo etiqueta ocupará 21
bits:
32 bits – (7 bits + 4 bits) = 21 bits campo etiqueta
La interpretación de las direcciones se hará de la siguiente manera:
21
Etiqueta
7
2
2
Conjunto word byte
Si en vez de acceder a dobles palabras accedemos a palabras, que es lo más usual, tendríamos el
siguiente esquema:
21
Etiqueta
7
Conjunto
3
1
word byte
El esquema de la estructura interna de la memoria caché será el siguiente:
V ETI
BLOQUE
V ETI
BLOQUE
V ETI
BLOQUE
V ETI
BLOQUE
LRU
0
.
.
.
127
21 bits
16 bytes
1 bit
(NOTA: para implementar el algoritmo Pseudo-LRU para 4 elementos hacen falta 3 bits por
conjunto.)
7
3 bits
7. a) Lo primero antes de averiguar el MR es saber el número de bloques/líneas con que cuenta la
memoria caché. Hay una capacidad 256 bytes = 28 bytes en la memoria caché. Además se dice que
un bloque ocupa 16 bytes (4 palabras de 32 bits = 4x4 bytes). Por lo tanto el número de
bloques/líneas es: 28 / 24 = 24 = 16 bloques o líneas. Así pues un esquema de la memoria caché sería
el siguiente:
Nº
línea
0
...
...
15
palabras
0
...
...
60
1
...
...
61
2
...
...
62
3
...
...
63
Como se puede ver sólo se pueden introducir un total de 64 palabras como máximo. Hay fijarse y
tener en cuenta que un número entero en C ocupa 32 bits, es decir, una palabra. Por lo tanto la
memoria caché podría en el mejor de los casos almacenar hasta 64 números enteros. Si se supone
que un entero en C ocupa 16 bits (por ej. En un programa en MS-DOS) la solución cambiaría
ligeramente.
Ahora hay que analizar ahora el comportamiento del bucle interno. El bucle externo simplemente
repite lo que hace el bucle interno varias veces. Se dice en el enunciado que la memoria es de
correspondencia directa. Se va a ir viendo a qué elementos se accede.
j=0
Æ Elemento 1
j = 132 Æ Elemento 133
j = 264 Æ Elemento 264. No se accede a él porque 264>256 (mirar código del programa).
Por lo tanto se va a acceder a dos números o palabras. La pregunta que hay que hacerse a
continuación es a qué bloques de memoria principal corresponden estas palabras y dónde se
ubicarían estos bloques en la memoria caché. Ya que el enunciado no lo dice se supone por
simplicidad que el array se carga a partir de la dirección y bloque 0 de M.P. (memoria principal).
Como no se dice nada se supone también que la memoria caché está inicialmente vacía. Atención:
hay que tener en cuenta que los números de bloques al igual que los elementos del array empiezan a
contarse a partir de cero y no de uno.
j = 0 Æ Bloque 0 de memoria principal. Æ 0 MOD 16 = 0
j = 132 Æ Bloque 33 de memoria principal ya que: 132 / 4 = 33 ó 4*33 = 132 es decir, en el
bloque Nº 32 de M.P. está contenido el elemento Nº 131 del array. Por lo tanto en el bloque Nº
33 estarán contenidos los elementos Nº-s 132, 133, 134 y 135. Æ 33 MOD 16 = 1
Se puede por tanto concluir que una vez traídos los dos bloques de memoria principal
correspondientes a los accesos efectuados por el programa (dos únicos fallos forzosos), estos se
ubicarán en las líneas 0 y 1 de la memoria caché. No existen por lo tanto fallos de conflicto y sólo
hay que tener en cuenta dos fallos forzosos en la primera iteración del bucle interno (durante la
primera iteración del bucle externo). Los fallos de capacidad también se descartan porque sólo se
accede a dos palabras/enteros y en la caché hay espacio para 64 palabras/números. Repetidos estos
accesos 10000 veces (bucle exterior) se puede concluir por tanto que el Miss Rate es
aproximadamente cero (MR ~ 0).
b) Ahora zancada es igual a 131. Siguiendo un razonamiento análogo al anterior se trata de
averiguar los elementos accedidos del array al igual que los bloques de M.P. dónde están contenidos
para saber dónde se ubicarían una vez traídos a la memoria caché.
8
j=0
Æ Elemento 1
j = 131 Æ Elemento 132
j = 262 Æ Elemento 262. No se accede a él porque 262>256 (mirar código del programa).
Los bloques de memoria principal:
j = 0 Æ Bloque 0 de memoria principal. Æ 0 MOD 16 = 0
j = 131 Æ Bloque 32 de memoria principal ya que: 131 / 4 = 32,75 ó 4*32 = 128 es decir, en el
bloque Nº 31 de M.P. está contenido el elemento Nº 127 del array. Por lo tanto en el bloque Nº 32
estarán contenidos los elementos Nº-s 128, 129, 130 y 131. Æ 32 MOD 16 = 0
Ahora resulta que los dos accesos que se producen a M.P. debido a la lectura de dos
números/palabras corresponden a dos bloques diferentes (el bloque 0 y el 32) de M.P. que han de
ubicarse en la misma línea de la memoria caché. Esto supone que se haya que traer y expulsar
sucesivamente bloques de la línea cero de la memoria caché produciéndose dos fallos de conflicto
en cada iteración del bucle interior. Repetidos estos accesos 10000 veces (bucle exterior) se puede
concluir por tanto que el Miss Rate es exactamente uno (MR = 1).
c) Si la memoria caché se convierte en una caché asociativa por conjuntos de dos vías se soluciona
el problema anterior y el MR ~ 0. Esto es así porque sólo se han de traer dos bloques distintos de
memoria principal en todo el programa y ahora al disponerse de dos líneas por conjunto hay espacio
suficiente para ubicar esos dos bloques en el mismo conjunto en caso de necesidad.
d) En primer lugar se va a calcular el tiempo de acceso para el caso A. En el enunciado no se aclara
del todo si en los 20t ciclos que se tarda en acceder a la memoria principal son para leer un bloque o
solamente una palabra. Se va a suponer que el acceso es a una palabra ya que el acceso de t ciclos a
la caché es también para acceder a una palabra. Lo contrario también tiene sentido ya que entre la
memoria principal y la caché los intercambios son siempre a nivel de bloque. Primero hay que
recordar la expresión del cálculo del tiempo de acceso a memoria caché:
Tacc. caché = Tacc. hit + MR*Tpenal. = Tacc. hit + Tacc. fallo
Tacc. cache A = Tacc. hit A + Tacc. fallo A = 20000t + 2*(20t*4) = 20160t
En caso de fallo traer un bloque a memoria caché cuesta lo mismo que traer 4 palabras por
separado. Como ya se ha comentado anteriormente se podría haber supuesto que los 20t son
realmente para traer de M.P. las cuatro palabras en paralelo.
Para el caso B se realiza un razonamiento similar:
Tacc. cache B = Tacc. hit B + Tacc. fallo B = 20000t + 20000*(20t*4) = 1620000t
Como se puede ver con estos valores el hecho de tener una cierta organización u otra en la memoria
caché puede influir de forma decisiva en el rendimiento general de un computador en determinadas
aplicaciones. Estos factores pueden llegar a ser realmente importantes a la hora de por ejemplo de
tener que diseñar de un sistema de tiempo real.
8.
Es una cuestión teórica relativa a la memoria virtual. Para responder a la cuestión hay que
explicar el proceso de traducción de dirección lógica o virtual a dirección física y finalmente el
acceso al dato a través de la caché. Esto se explica en la teoría y en la bibliografía.
9
Si las páginas son de 16KB (2 14 bytes) y la dirección virtual ocupa 40 bits (se pueden
direccionar hasta 2 40 posiciones de memoria) tendremos un total de 2 26 = 67108864 páginas
posibles en la tabla de páginas.
9.
¿Cuántos bits hay en cada entrada de la tabla de páginas?
Sabemos que la dirección física ocupa 36 bits y que 14 de esos bits son para el desplazamiento
dentro de la página. Por lo tanto la dirección de un marco en memoria principal será de 22 bits (36 –
14).
¿Cuánto ocupa por tanto la tabla de páginas?
TP = 2 26 páginas en la TP*(22 bits de dirección del marco en MP + 4 bits de control por página) =
26*2 26 bits = 26*64 Mbits = 1664 Mbits = 208 Mbytes
El esquema de traducción de direcciones será el siguiente:
Dirección
virtual
40 bits
número de página virtual (26 bits)
Desplazamiento (14 bits)
TABLA DE
PÁGINAS
Bits de
control
0
.
.
.
.
.
2
Dirección
física
26
Dirección de
Marco en MP
4
bits
22
bits
-1
36 bits
número de página física o marco (22 bits)
Desplazamiento (14 bits)
Como apunte se podría decir que el tamaño de la tabla de páginas de un proceso es tan grande que
habría que recurrir a técnicas de reducción/compactación de tamaño tales como hacer crecer
dinámicamente la tabla, funciones hash, paginar la tabla de páginas, ...
10
Descargar