Documentos de Académico
Documentos de Profesional
Documentos de Cultura
problemas impares
Tema 5. Memorias
Estructura de
Computadores
Curso 2008-2009
Tema 5 Hoja: 2 / 36
Memorias
Base teórica
La memoria es el lugar en el que se almacenan las instrucciones y los
datos para que se puedan ejecutar los programas. Sin embargo, el sistema
de memoria del computador está formado por varios tipos de memorias
con diferentes capacidades y tiempos de acceso. La idea es que parezca
que las referencias a memoria se sirven a velocidades cercanas a las de
los registros del procesador, y que además se tiene un espacio de
memoria casi ilimitado para los programas y los datos. La memoria caché
es la responsable de la rapidez de los accesos y la memoria virtual la de la
gran capacidad del sistema de memoria.
Capacidad CP
Tiempo de U
Precio
acceso por bit
nivel 1 CACHE
Memoria principal
m bits 0
Memoria Mapa
Dirección Disponible usado
m-1 0 2k-1 Mapa
total
2m-1
Para calcular cuantos módulos hacen falta, en este caso es muy sencillo y
se ve a simple vista, se realiza la operación siguiente:
16k 8
x = 2 x1 = 2 módulos de 8kx8
8k 8
Ahora se tiene que ver cuando se accede a un módulo o al otro. Ya que los
dos módulos son de 8K, se necesitarán 13 bits del bus de direcciones para
poder direccionar en cada módulo esos 8K (=213). De esa forma, nos
queda únicamente un bit para determinar cuando se accede al módulo
cero o al módulo uno.
16k 16
x = 1x 2 = 2 módulos de 16kx8
16k 8
En este caso, se deberá acceder a los dos módulos a la vez, dado que en
un módulo se almacenarán los 8 bits superiores y en el otro los 8 bits de
menor peso. El esquema quedaría de la forma:
1.
2.
3.
4.
64 K x 8 128 K x 1
128 K x 1 256 K x 8
128 K x 8
64 K x 8 128 K x 1
128 K x 1 256 K x 8
128 K x 8
La memoria ROM debe situarse en las posiciones más altas del mapa de
memoria direccionable y la memoria RAM debe situarse en las posiciones
más bajas.
64 K x 8 128 K x 1
128 K x 1 256 K x 8
128 K x 16 256 K x 16
A19-A0
CPU
D15-D0
La memoria ROM debe situarse en las posiciones más altas del mapa
de memoria direccionable y la memoria RAM debe situarse en las
posiciones más bajas.
64 k x 8 128 k x 1
128 k x 1 256 k x 8
128 k x 16 256 k x 16
La memoria ROM debe situarse en las posiciones más altas del mapa de
memoria direccionable y la memoria RAM debe situarse en las posiciones
más bajas.
64 k x 1 32 k x 1
128 k x 8 64 k x 1
512 k x 8 128 k x 8
2 Kpalabras x 16 16 Kpalabras x 8
32 Kpalabras x 32 16 Kpalabras x 16
64 Kpalabras x 16 64 Kpalabras x 1
Se pide:
0
Mapa de memoria RAM
80K-1
80K
Mapa de memoria ROM
128K-1
10. Realizar el mismo ejercicio que en el caso anterior suponiendo que los
módulos que se disponen son los siguientes:
4 Kpalabras x 16 8 Kpalabras x 32
32 Kpalabras x 16 64 Kpalabras x 8
8 Kpalabras x 16 4 Kpalabras x 1
• El cliente puede pedir que el fichero de sonido sea en formato MP3 192
K con lo que el programa ocupará un máximo de 320 K. Dado que no
existirán diferentes tarjetas de felicitación se deberá cambiar el
contenido de la memoria.
128 K x 8 128 K x 8
128 K x 8
256 K x 8 256 K x 8 256 K x 8
Solución ejercicio 1
1. Comprobar que existe solución
Para poder comprobarlo, debemos fijarnos en el número de bits que
tenemos en el bus de direcciones, y ver que con ese número de bits,
podemos direccionar todo el mapa de memoria.
Por otro lado, tenemos que comprobar que el bus de datos soporte el
ancho de una palabra de memoria (16 bits). Por tanto, vamos a suponer
que el bus de datos cuenta con 16 líneas, desde la D15 hasta la D0.
• 128 K x 1
512 K 16 bits
x = 4 x 16 = 64 pastillas de 128 K x 1
128 K 1 bit
Con esta posibilidad se necesitarían 4 filas de módulos de 128 K
posiciones de memoria (para poder direccionar las 512 K posiciones de
memoria) y 16 módulos por cada una de las filas para almacenar los 16
bits que componen una palabra.
• 256 K x 8
512 K 16 bits
x = 2 x 2 = 4 pastillas de 256 K x 8
256 K 8 bits
• 128 K x 1
256 K 16 bits
x = 2 x 16 = 32 pastillas de 128 K x 1
128 K 1 bit
• 64 K x 8
256 K 16 bits
x = 4 x 2 = 8 pastillas de 64 K x 8
64 K 8 bit
• 128 K x 8
256 K 16 bits
x = 2 x 2 = 4 pastillas de 128 K x 8
128 K 8 bits
La solución más sencilla es utilizar:
FFFFF h 1024 K – 1
Libre
C0000 h 768 K
BFFFF h 768 K – 1
ROM
80000 h 512 K
7FFFF h 512 K – 1
RAM
00000 h 0
Para poder direccionar las 256 Kpalabras (= 218 Kpalabras) de cada una de
las pastillas de memoria RAM necesitaremos 18 bits, que se corresponden
con las líneas A17..A0 del bus de direcciones. Mientras que para poder
acceder a las 128 Kpalabras (= 217 Kpalabras) de cada una de las pastillas
de memoria ROM necesitaremos 17 bits, son las líneas A16..A0 del bus de
direcciones.
Las líneas A19 y A18 del bus de direcciones, nos permitirán seleccionar la
fila de pastillas sobre la que se realizará la lectura o escritura de los datos.
Por otro lado, la primera pastilla de cada fila del mapa de memoria
almacenará la parte alta de una palabra y la segunda la parte alta.
Las filas de memoria ROM se seleccionan con las salidas del decodificador
101 y 100.
Bus
Busde
dedirecciones
direccionesAA1919..A
..A00
A19..A17
110
110 ROM
ROM128Kx8
128Kx8 ROM
ROM128Kx8
128Kx8
101
101
Decodific.
Decodific.100 DD15..D DD7..D
100 15..D88 7..D00
011
011
010
010
001
001
000
000 CS
CS AA16..A CS AA16..A
16..A
00 CS 16..A
00
ROM
ROM128Kx8
128Kx8 ROM
ROM128Kx8
128Kx8
00
..D
DD15..D DD7..D
datosDD1515..D
15..D88 7..D00
de datos
CS
CS AA17..A CS AA17..A
A17..A0 17..A0 CS 17..A0
0 0
Busde
RAM
RAM256Kx8
256Kx8 RAM
RAM256Kx8
256Kx8
Bus
DD15..D DD7..D
15..D8 7..D0
8 0
CS
CS AA17..A CS AA17..A
17..A0 CS 17..A0
0 0
RAM
RAM256Kx8
256Kx8 RAM
RAM256Kx8
256Kx8
DD15..D DD7..D
15..D8 7..D0
8 0
Solución ejercicio 3
Por otro lado, una dato de memoria puede transmitirse por el bus de dato
puesto que cuenta con 16 líneas, desde la D15 hasta la D0.
128 K x 1
512 K 16 bits
x = 4 x 16 = 64 pastillas de 128 K x 1
128 K 1 bit
256 K x 8
512 K 16 bits
x = 2 x 2 = 4 pastillas de 256 K x 8
256 K 8 bits
256 K x 16
512 K 16 bits
x = 2 x 1 = 2 pastillas de 256 K x 16
256 K 16 bits
128 K x 1
256 K 16 bits
x = 2 x 16 = 32 pastillas de 128 K x 1
128 K 1 bit
64 K x 8
256 K 16 bits
x = 4 x 2 = 8 pastillas de 64 K x 8
64 K 8 bits
128 K x 16
256 K 16 bits
x = 2 x 1 = 2 pastillas de 128 K x 16
128 K 16 bits
FFFFF h 1024 K – 1
ROM
C0000 h 768 K
BFFFF h 768 K – 1
Libre
80000 h 512 K
7FFFF h 512 K – 1
RAM
00000 h 0
2ª fila
FFFFF h 1 1 1024 K –1
1 1 1 … pastillas
E0000 h 0 0 896 K
ROM
1ª fila
DFFFF h 1 1 896 K –1
1 1 0 … pastillas
C0000 h 0 0 768 K
ROM
BFFFF h 1 1 1 768 K – 1
1 0 … Libre
80000 h 0 0 0 512 K
2ª fila
7FFFF h 1 1 1 512 K – 1
0 1 … pastillas
40000 h 0 0 0 256 K
RAM
1ª fila
3FFFF h 1 1 1 256 K – 1
0 0 … pastillas
00000 h 0 0 0 0
RAM
Para poder direccionar las 256 Kpalabras (= 218 Kpalabras) de cada una de
las pastillas de memoria RAM necesitaremos 18 bits, que se corresponden
con las líneas A17..A0 del bus de direcciones. Mientras que para poder
acceder a las 128 Kpalabras (= 217 Kpalabras) de cada una de las pastillas
de memoria ROM necesitaremos 17 bits, son las líneas A16..A0 del bus de
direcciones.
Las líneas A19 y A18 del bus de direcciones, nos permitirán seleccionar la
fila de pastillas sobre la que se realizará la lectura o escritura de los datos.
Bus
Busde
dedirecciones
direccionesAA1919..A
..A00
A19 , A18
CS
CS AA16..A
11 16..A
00
11
ROM
ROM128Kx16
128Kx16
10
10 A17
Decodificador DD15..D
Decodificador 15..D00
01
01 A16..A0
00
00
CS
CS AA16..A
16..A
00
ROM
ROM128Kx16
128Kx16
00
..D
DD15..D
datosDD1515..D
15..D00
de datos
CS
CS AA17..A
A17..A0 17..A
00
Busde
RAM
RAM256Kx16
256Kx16
Bus
DD15..D
15..D0
0
CS
CS AA17..A
17..A
00
RAM
RAM256Kx16
256Kx16
DD15..D
15..D00
Solución ejercicio 5
1. Comprobar que existe solución
Por lo tanto, vemos que con los 20 bits del bus de direcciones sí es
posible.
128 K x 1
640 K 16 bits
x = 5 x 16 = 80 pastillas de 128 K x 1
128 K 1 bit
256 K x 8
640 K 16 bits
x = 3 x 2 = 6 pastillas de 256 K x 8
256 K 8 bits
256 K x 16
640 K 16 bits
x = 3 x 1 = 3 pastillas de 256 K x 16
256 K 16 bits
128 K x 1
128 K 16 bits
x = 1 x 16 = 16 pastillas de 128 K x 1
128 K 1 bit
64 K x 8
128 K 16 bits
x = 2 x 2 = 4 pastillas de 64 K x 8
64 K 8 bits
128 K x 16
128 K 16 bits
x = 1 x 1 = 1 pastilla de 128 K x 16
128 K 16 bits
FFFFF h 1024 K – 1
ROM
E0000 h 896 K
DFFFF h 896 K – 1
Libre
A0000 h 640 K
9FFFF h 640 K – 1
RAM
00000 h 0
Fila
FFFFF h 1 1 1024 K –1
1 1 1 … pastillas
E0000 h 0 0 896 K
ROM
DFFFF h 1 1 896 K –1
1 1 0 …
C0000 h 0 0 768 K Libre
BFFFF h 768 K – 1
Zona de RAM no direccionable
A0000 h 640 K
3ª fila
9FFFF h 0 1 1 640 K – 1
1 0 … pastillas
80000 h 0 0 0 512 K
RAM
2ª fila
7FFFF h 1 1 1 512 K – 1
0 1 … pastillas
40000 h 0 0 0 256 K
RAM
1ª fila
3FFFF h 1 1 1 256 K – 1
0 0 … pastillas
00000 h 0 0 0 0
RAM
Para poder direccionar las 256 Kpalabras (= 218 Kpalabras) de cada una de
las pastillas de memoria RAM necesitaremos 18 bits, que se corresponden
con las líneas A17..A0 del bus de direcciones. Mientras que para poder
acceder a las 128 Kpalabras (= 217 Kpalabras) de cada una de las pastillas
de memoria ROM necesitaremos 17 bits, son las líneas A16..A0 del bus de
direcciones.
Las líneas A19 y A18 del bus de direcciones, nos permitirán seleccionar la
fila de pastillas sobre la que se realizará la lectura o escritura de los datos.
Bus
Busde
dedirecciones
direccionesAA1919..A
..A00
A16..A0
A19 , A18
CS
CS AA16..A
11
11 16..A
00
ROM
ROM128Kx16
128Kx16
10
10 A17
Decodificador DD15..D
Decodificador 15..D00
01
01
00
00
CS
CS AA17..A
17..A0
0
RAM
RAM256Kx16
256Kx16 00
..D
DD15..D
datosDD1515..D
15..D0
0
de datos
CS
CS AA17..A
A17..A0 17..A
00
Busde
RAM
RAM256Kx16
256Kx16
Bus
DD15..D
15..D00
CS
CS AA17..A
17..A
00
RAM
RAM256Kx16
256Kx16
DD15..D
15..D00
Solución ejercicio 7
1. Comprobar que existe solución
64 K x 1
384 K 16 bits
x = 6 x 16 = 96 pastillas de 64 K x 1
64 K 1 bit
512 K x 8
384 K 16 bits
x = 1 x 2 = 2 pastillas de 512 K x 8
512 K 8 bits
128 K x 8
384 K 16 bits
x = 3 x 2 = 6 pastillas de 128 K x 8
128 K 8 bits
32 K x 1
640 K 16 bits
x = 20 x 16 = 320 pastillas de 32 K x 1
32 K 1 bit
64 K x 1
640 K 16 bits
x = 10 x 16 = 160 pastillas de 64 K x 1
64 K 1 bit
128 K x 8
640 K 16 bits
x = 5 x 2 = 10 pastillas de 128 K x 8
128 K 8 bits
FFFFF h 1024 K – 1
ROM
60000 h 384 K
5FFFF h 384 K – 1
RAM
00000 h 0
5ª fila
FFFFF h 1 1 1024 K –1
1 1 1 … pastillas
E0000 h 0 0 896 K
ROM
4ª fila
DFFFF h 1 1 896 K – 1
1 1 0 … pastillas
C0000 h 0 0 768 K
ROM
3ª fila
BFFFF h 1 1 768 K – 1
1 0 1 … pastillas
A0000 h 0 0 640 K
ROM
2ª fila
9FFFF h 1 1 640 K – 1
1 0 0 … pastillas
80000 h 0 0 512 K
ROM
1ª fila
7FFFF h 1 1 512 K – 1
0 1 1 … pastillas
60000 h 0 0 384 K
ROM
Para poder direccionar las 512 Kpalabras (= 219 Kpalabras) de cada una de
las pastillas de memoria RAM necesitaremos 19 bits, que se corresponden
con las líneas A18..A0 del bus de direcciones. Mientras que para poder
acceder a las 128 Kpalabras (= 217 Kpalabras) de cada una de las pastillas
de memoria ROM necesitaremos 17 bits, son las líneas A16..A0 del bus de
direcciones.
Las líneas A19 y A18 del bus de direcciones, nos permitirán seleccionar la
fila de pastillas sobre la que se realizará la lectura o escritura de los datos.
Por otro lado, la primera pastilla de cada fila del mapa de memoria
almacenará la parte alta de una palabra y la segunda la parte alta.
Bus
Busde
dedirecciones
direccionesAA1919..A
..A00
A19..A17
ROM
ROM128Kx8
128Kx8 ROM
ROM128Kx8
128Kx8
DD15..D DD7..D
15..D88 7..D00
CS
CS AA16..A CS AA16..A
16..A00 CS 16..A00
ROM
ROM128Kx8
128Kx8 ROM
ROM128Kx8
128Kx8
DD15..D DD7..D
00
15..D88 7..D00
..D
datosDD1515..D
de datos
CS
CS AA16..A CS AA16..A
16..A00 CS 16..A00
Busde
ROM
ROM128Kx8
128Kx8 ROM
ROM128Kx8
128Kx8
Bus
CS
CS AA16..A CS AA16..A
16..A00 CS 16..A00
ROM
ROM128Kx8
128Kx8 ROM
ROM128Kx8
128Kx8
DD15..D DD7..D
15..D88 7..D00
CS
CS AA18..A CS AA18..A
18..A00 CS 18..A00
RAM
RAM512Kx8
512Kx8 RAM
RAM512Kx8
512Kx8
DD15..D DD7..D
15..D8 7..D0
8 0
Solución ejercicio 9
Apartado a)
El bus de direcciones tiene 32 líneas, lo cual permite direccionar hasta 232
= 4Gpalabras de memoria. En el caso propuesto se trata de realizar una
memoria de 128Kpalabras, para lo cual sólo son necesarias 17 líneas, ya
que 217 = 128 Kpalabras.
Por otro lado, también hay que comprobar que el bus de datos proporciona
el ancho de palabra suficiente. El bus de datos tiene 64 bits de ancho de
palabra y la palabra de memoria es de 64 bits.
Apartado b)
2 Kpalabras x 16
32 Kpalabras x 32
64 Kpalabras x 16
80 Kpalabras 64
x = 40 x 4 = 160 módulos de memoria
2 Kpalabras 16
80 Kpalabras 64
x = 2,5 x 2 = 3 x 2 = 6 módulos de memoria
32 Kpalabras 32
80 Kpalabras 64
x = 1,25 x 4 = 2 x 4 = 8 módulos de memoria
64 Kpalabras 16
16 Kpalabras x 8
16 Kpalabras x 16
64 Kpalabras x 1
48 Kpalabras 64
x = 3 x 8 = 24 módulos de memoria
16 Kpalabras 8
48 Kpalabras 64
x = 3 x 4 = 12 módulos de memoria
16 Kpalabras 16
48 Kpalabras 64
x = 0,75 x 64 = 1 x 64 = 64 módulos de memoria
64 Kpalabras 1
Apartado c)
Para diseñar el mapa de memoria, es preciso averiguar el número de
líneas que se necesitan para direccionar cada pastilla de memoria:
Mínima
0K
0 0 ... 0 dirección
0 ... 0 0 0
1ª fila RAM
1 1 ... 1 Máxima
32 K-1
dirección
Mínima
32 K
0 0 ... 0 dirección
0 ... 0 0 1
2ª fila de RAM
1 1 ... 1 Máxima
64 K-1
dirección
Mínima 64 K
0 0 ... 0 dirección
0 ... 0 1 0 3ª fila de RAM
0 1 ... 1 Máxima
dirección 80 K-1
80K
Zona no direccionable de módulos RAM
96 K-1
Mínima
80 K
0 ... 0 dirección
0 ... 0 1 0 1
1ª fila de ROM
1 ... 1 Máxima
96 K-1
dirección
Mínima
96 K
0 ... 0 dirección
0 ... 0 1 1 0
2ª fila de ROM
1 ... 1 Máxima
112 K-1
dirección
Mínima
112 K
0 ... 0 dirección
0 ... 0 1 1 1
3ª fila de ROM
1 ... 1 Máxima
128 K-1
dirección
Apartado d)
32 bits
Bus de direcciones: A31..A0
A14..A0 (15 bits)
A16..A14 (3 bits)
cs
cs AA14..A cs
14..A00 cs
AA14..A
14..A00
000
000 RAM
D RAM 32Kx32
32Kx32 RAM
RAM 32Kx32
32Kx32
e 001
001 D ..D D ..D
c D31
31..D00 D31
31..D00
o 010
010 D63..D32 D31..D0
d
i 011
011 A14..A0 (15 bits)
f
i 100
100
c cs AA14..A cs AA14..A
a 101
101 cs 14..A00 cs 14..A00
d RAM
RAM 32Kx32 RAM
RAM 32Kx32
64 bits
110
110 32Kx32 32Kx32
o D ..D D ..D
r 111 D31
31..D00 D31
31..D00
111
D63..D32 D31..D0
A14..A0 (15 bits)
cs
cs AA14..A cs
14..A00 cs
AA14..A
14..A00
RAM
RAM 32Kx32
32Kx32 RAM
RAM 32Kx32
32Kx32
DD31..D
31..D00
DD31..D
31..D00
D63..D32 D31..D0
Bus de datos: D63 ..D0
cs
cs AA13..A cs
13..A00 cs
AA13..A cs
13..A00 cs
AA13..A cs
13..A00 cs
AA13..A
13..A00
ROM
ROM 16Kx16
16Kx16 ROM ROM 16Kx16
16Kx16 ROM ROM 16Kx16
16Kx16 ROM ROM 16Kx16
16Kx16
DD15..D
15..D00
DD15..D
15..D00
DD15..D
15..D00
DD15..D
15..D00
D63..D48 D47..D32 D31..D16 D15..D0
cs
cs AA13..A cs
13..A00 cs
AA13..A cs
13..A00 cs
AA13..A cs
13..A00 cs
AA13..A
13..A00
ROM
ROM 16Kx16
16Kx16 ROM ROM 16Kx16
16Kx16 ROM ROM 16Kx16
16Kx16 ROM ROM 16Kx16
16Kx16
DD15..D
15..D00
DD15..D
15..D00
DD15..D
15..D00
DD15..D
15..D00
D63..D48 D47..D32 D31..D16 D15..D0
cs
cs AA13..A cs
13..A00 cs
AA13..A cs
13..A00 cs
AA13..A cs
13..A00 cs
AA13..A
13..A00
ROM
ROM 16Kx16
16Kx16 ROM ROM 16Kx16
16Kx16 ROM ROM 16Kx16
16Kx16 ROM ROM 16Kx16
16Kx16
DD15..D
15..D00
DD15..D
15..D00
DD15..D
15..D00
DD15..D
15..D00
D63..D48 D47..D32 D31..D16 D15..D0
Solución ejercicio 11
Apartado a)
Apartado b)
En los dos casos, las especificaciones de memoria, nos dan una necesidad
de 512K.
Apartado c)
El mapa de memoria es el que se requiere para poder direccionar una
pastilla de 512Kx8 de EEPROM. Es decir, tendré una fila formada por dos
pastillas de memoria que se direccionarán a la vez, una contendrá los 8
bits superiores y otra los 8 bits inferiores de cada dirección.
A19 A18 … A0
FFFFF h 0 1 1024 K –1
1 … Libre
80000 h 1 0 512 K
Fila de
7FFFF h 0 1 512 K – 1
0 … pastillas
00000 h 1 0 0K
EEPROM
A18-A0 A18-A0
A19
512K x 8 512K x 8
CS EEPROM D7-D0 CS EEPROM D7-D0
D7-D0
D15-D8