Mod 4
Mod 4
Mod 4
PID_00218270
Ninguna parte de esta publicación, incluido el diseño general y la cubierta, puede ser copiada,
reproducida, almacenada o transmitida de ninguna forma, ni por ningún medio, sea este eléctrico,
mecánico, óptico, grabación, fotocopia, o cualquier otro, sin la previa autorización escrita
del titular de los derechos.
© FUOC • PID_00218270 Sistema de memoria
Índice
Introducción............................................................................................... 5
Objetivos....................................................................................................... 7
2. Jerarquía de memorias..................................................................... 16
2.1. Registros ....................................................................................... 17
2.2. Memoria interna ......................................................................... 17
2.2.1. Memoria caché .............................................................. 18
2.2.2. Memoria principal ......................................................... 18
2.3. Memoria externa ......................................................................... 19
2.4. Memoria virtual .......................................................................... 19
2.5. Funcionamiento de la jerarquía de memorias ............................ 19
3. Memoria caché.................................................................................... 21
3.1. Aciertos y fallos ........................................................................... 22
3.2. Rendimiento de la memoria caché ............................................. 23
3.3. Línea de memoria caché ............................................................. 23
3.4. Políticas de asignación ................................................................ 24
3.4.1. Memoria caché de asignación directa ........................... 26
3.4.2. Memoria caché completamente asociativa ................... 31
3.4.3. Memoria caché asociativa por conjuntos ...................... 33
3.5. Algoritmos de reemplazo ............................................................ 38
3.6. Comparativa entre diferentes sistemas de memoria caché ......... 39
3.6.1. Memoria caché de asignación directa ........................... 40
3.6.2. Memoria caché completamente asociativa ................... 42
3.6.3. Memoria caché asociativa por conjuntos ...................... 45
3.7. Políticas de escritura ................................................................... 47
4. Memoria interna................................................................................ 49
4.1. Memoria volátil ........................................................................... 49
4.2. Memoria no volátil ..................................................................... 50
© FUOC • PID_00218270 Sistema de memoria
5. Memoria externa................................................................................ 53
5.1. Discos magnéticos ....................................................................... 53
5.1.1. RAID ............................................................................... 54
5.2. Cinta magnética .......................................................................... 54
5.3. Memoria flash ............................................................................. 54
5.4. Disco óptico ................................................................................ 55
5.5. Red ............................................................................................... 55
Resumen....................................................................................................... 57
© FUOC • PID_00218270 5 Sistema de memoria
Introducción
Objetivos
Con el estudio de este módulo se pretende que el estudiante alcance los obje-
tivos siguientes:
3. Analizar cómo se gestionan los datos entre los diferentes niveles de la je-
rarquía de memorias, especialmente en la memoria caché.
Dentro del chip del procesador habitualmente están los registros y uno o varios
niveles de memoria caché.
Prefijos SI
Cada prefijo del sistema internacional recibe un nombre diferente y utiliza un símbolo
para representarlo. Los prefijos que utilizaremos más habitualmente son:
10
-12 pico (p)
10
-9 nano (n)
10
-6 micro (μ)
© FUOC • PID_00218270 10 Sistema de memoria
10
-3 mili (m)
10
3 kilo (K)
10
6 mega (M)
10
9 giga (G)
10
12 tera (T)
Ejemplos de prefijos SI
Prefijos IEC
Los prefijos IEC representan múltiplos para las unidades de información bit y byte. Los
nombres se han creado añadiendo el término binario a los prefijos SI. Por ejemplo kibi
sería la contracción de kilo binario. Los prefijos que utilizaremos más habitualmente son:
2
10 kibi (Ki)
2
20 mebi (Mi)
2
30 gibi (Gi)
2
40 tebi (Ti)
La industria utiliza mayoritariamente las unidades SI. Por ejemplo, si nos fija-
mos en las características de un disco duro que se comercialice con 1 TB de
capacidad, realmente la capacidad del disco será de 1.000 GB = 1.000.000 MB
= 1.000.000.000 KB = 1.000.000.000.000 bytes.
© FUOC • PID_00218270 11 Sistema de memoria
1)� Secuencial. Se accede desde la última posición a la que se ha accedido, Usos del acceso secuencial
leyendo en orden todas las posiciones de memoria hasta llegar a la posición
El acceso secuencial se utiliza
deseada. El tiempo de acceso depende de la posición a la que se quiere acceder básicamente en dispositivos de
y de la posición a la que se ha accedido anteriormente. cinta magnética.
2)�Directo. La memoria se organiza en bloques y cada bloque de memoria tiene Usos del acceso directo
una dirección única, se accede directamente al principio de un bloque y dentro
El acceso directo es un método
de este se hace un acceso secuencial hasta llegar a la posición de memoria de acceso que se utiliza en dis-
deseada. El tiempo de acceso depende de la posición a la que se quiere acceder cos magnéticos.
b)�Operación�de�escritura: en esta operación hay que suministrar a la memo- Usos del acceso aleatorio
ria la información que se debe almacenar y la dirección de memoria donde
El acceso aleatorio se suele
se la quiere almacenar. La acción que se lleva a cabo consiste en registrar la utilizar en memorias RAM y
información en la dirección especificada. ROM.
4)�Asociativo. Se trata de un tipo de memoria de acceso aleatorio donde el Usos del acceso asociativo
acceso se hace basándose en el contenido y no en la dirección. Se especifica
Este método de acceso se sue-
el valor que se quiere localizar y se compara este valor con una parte del con- le utilizar en las memorias ca-
tenido de cada posición de memoria; la comparación se lleva a cabo simultá- ché.
Básicamente, los elementos que hemos de tener en cuenta son los siguientes:
Ejemplo
Memoria de 2Kbytes con una palabra de memoria de 2 bytes. Por lo tanto, necesitaremos
10 bits para poder hacer referencia a las 1.024 (210) posiciones de memoria que almace-
narán 2 bytes (16 bits) cada una.
Memoria interna
Dirección Palabra
← (10 bits) → ← (16 bits) →
... ...
... ...
Ejemplo
Los procesadores x86-64 son procesadores con registros de 64 bits, pero en cambio el
tamaño de la palabra de memoria continúa siendo de 32 bits; eso es así para mantener
la compatibilidad con procesadores anteriores. No hay que olvidar que la arquitectura
x86-64 es una extensión de la arquitectura de 32 bits x86-32.
Ejemplo
Supongamos una memoria de capacidad reducida (solo 256 bytes) en la que el tamaño
de la palabra a la que se puede acceder es de 16 bits (2 bytes). Las direcciones de memoria
serán de 8 bits; para acceder a una palabra de memoria se indica solo la dirección del
primer byte.
Dirección Valor
0 00000000 01100110
1 00000001 11100011
14 00001110 00000000
15 00001111 11111111
Si indicamos la dirección 00001110 (dirección 14), obtenemos los valores de las posicio-
nes de memoria 14 y 15 así:
Ejemplo de coste
En el año 2010 con 100 € se podía conseguir una memoria RAM de 4GB con un tiempo
de acceso de 5ns o un disco magnético de 1 TB (1.000 GB) con un tiempo de acceso de
5 ms (5.000.000 ns), por lo tanto, al mismo coste podemos tenemos una memoria mil
veces más grande, pero un millón de veces más lenta.
2. Jerarquía de memorias
Cada nivel de la jerarquía de la memoria se relaciona solo con los niveles supe-
rior e inferior, salvo casos excepcionales. El procesador tiene acceso solamente
a los registros y obtiene los datos de memoria mediante la memoria caché.
Como los niveles de memoria más próximos al procesador no son muy gran-
des, se podría pensar que se pierde mucho tiempo trasladando los datos des-
de un nivel hasta otro, ya que este movimiento tiene que ser constante. En
realidad, eso no es cierto: los datos se reutilizan con mucha frecuencia, por lo
que resulta útil que estén en el nivel más próximo al procesador. Más adelante
estudiaremos por qué se produce esta reutilización y, por lo tanto, por qué es
efectiva la jerarquía de memorias.
2.1. Registros
Los últimos procesadores de Intel y AMD incluyen tres niveles de memoria caché: un
primer nivel (L1) dividido en memoria caché de instrucciones y memoria caché de da-
tos, y los otros niveles (L2 y L3), unificados. Los procesadores actuales tienen un diseño
multinúcleo (multicore); un procesador integra en un solo chip varios núcleos completa-
mente funcionales, cada núcleo dispone de una memoria caché de primer nivel (L1) y de
segundo nivel (L2), y la memoria caché de tercer nivel (L3) es compartida por todos los
núcleos del procesador. En estos procesadores toda la memoria caché se integra dentro
del chip del microprocesador.
Utiliza tecnología DRAM (Dynamic RAM), que es más lenta que la SRAM, pero
con una capacidad de integración mucho más elevada, hecho que permite
obtener más capacidad en menos espacio.
© FUOC • PID_00218270 19 Sistema de memoria
Estos dispositivos son gestionados por el sistema de ficheros del sistema ope-
rativo mediante el sistema de entrada/salida.
Los dos factores básicos que provocan que el esquema de jerarquía de memo-
rias funcione satisfactoriamente en un computador son los siguientes:
3. Memoria caché
n n
A la izquierda, memoria principal de 2 palabras, organizada en (2 )/k bloques de k palabras. Memoria caché con m líneas, con
k palabras por línea.
A la derecha, memoria caché con m líneas, con k palabras por línea, la etiqueta del bloque x identifica qué bloque de la memoria
principal tenemos almacenado en aquella línea de la memoria caché.
Un acceso con fallo en la memoria caché puede ser bastante más costoso en
tiempo que un acceso con acierto, por lo que es muy importante tener un
número reducido de fallos.
A partir del concepto de acierto y fallo se definen los parámetros que utilizare-
mos para evaluar el rendimiento de una memoria caché: tasa de fallos y tiem-
po medio de acceso.
Uno de los objetivos del diseño del sistema de memoria es obtener una tasa
de fallos tan baja como sea posible. Generalmente se espera que sea inferior
al 10%.
Hemos visto que la memoria caché se organiza en líneas; una línea está forma-
da básicamente por un conjunto de palabras más una etiqueta que identifica
qué bloque de la memoria principal ocupa aquella línea de la memoria caché.
Líneas de la memoria caché donde podemos asignar el bloque x según las diferentes políticas
de asignación
Para utilizar este tipo de memoria caché, se asigna cada bloque de la memoria
principal a una única línea de la memoria caché.
n m
Si tenemos una memoria principal de 2 palabras y una memoria caché de 2
k
líneas de 2 palabras por línea, la memoria principal se dividirá en bloques de
k
2 palabras. Una dirección de memoria estará formada por n bits, utilizará los
k bits menos significativos para el número de palabra y los n – k bits restantes
para el número de bloque.
Aclaración
No es necesario que el número de líneas de la caché sea una potencia de 2. A pesar de que
habitualmente lo es, puede ser un valor donde: 2(m–1) < núm. líneas < 2(m), y utilizaremos
m bits para codificar el número de línea.
Por ejemplo: si tenemos una caché de 5 líneas (22 < 5 < 23), codificaremos el número de
línea utilizando 3 bits para el número de línea.
k
El número de palabra p se puede calcular mediante la operación siguiente: p = a mod 2 ,
donde mod es el residuo de la división entera.
Para determinar a qué línea de la memoria caché podemos asignar cada blo-
que, hay que dividir el número de bloque en dos partes: una etiqueta, que
corresponde a la parte más significativa del número de bloque, y un número
de línea, que corresponde a la parte menos significativa.
m
El número de línea l se puede calcular realizando la operación siguiente: l = b mod 2 ,
donde mod es el residuo de la división entera.
n – k m
Tenemos 2 bloques en la memoria principal y 2 líneas en la memoria
n–k m
caché (2 > 2 ), por lo tanto a cada línea de la memoria caché podemos
n–k–m n–k m n–k–m
asignar 2 (= 2 / 2 ) bloques diferentes. Solo uno de estos 2
puede estar en la memoria caché en cada momento.
m
El número de línea indicará en cuál de las 2 líneas de la memoria caché se
puede encontrar el bloque de datos al que queremos acceder de la memoria
principal. La etiqueta nos permitirá saber si el bloque al que queremos acceder
de la memoria principal es el bloque que en este momento está almacenado
en aquella línea de la memoria caché.
m
De manera general, se puede decir que si tenemos una memoria caché de 2
líneas, los bloques de memoria principal que se pueden encontrar en cada una
de las líneas de la memoria caché son los que se muestran en la tabla siguiente.
Número�de�línea Bloques�asignados
0 m m
0, 2 , 2 x (2 ), ...
1 m m
1, 2 + 1, 2 x (2 ) + 1, ...
2 m m
2, 2 + 2, 2 x (2 ) + 2, ...
... ...
m m m m m m
2 –1 2 – 1, 2 + (2 – 1), 2 x 2 + (2 – 1), ...
Ejemplo
Si tenemos una memoria principal de 216 (64 K) palabras y una memoria caché de 210
(1.024) palabras organizada en 24 (16) líneas de 26 (64) palabras por línea, la memoria
principal se dividirá en bloques de 26 (64) palabras. Una dirección de memoria tendrá
16 bits, los 6 bits menos significativos para el número de palabra y los 16 – 6 = 10 bits
restantes para el número de bloque; en total tendremos 210 (1.024) bloques de 26 (64)
palabras. Las direcciones se dividirán de la manera siguiente:
Número�de�línea Bloques�asignados
... ...
Se puede observar que todos los bloques que pueden estar en una misma línea de la caché
tienen un valor de etiqueta diferente; se podrá utilizar el valor de la etiqueta para saber
qué bloque en concreto se encuentra en cada línea de la memoria caché. La tabla anterior
muestra que todos los bloques sombreados están asignados a la línea 0 de la memoria
caché y podremos saber cuál se encuentra en la memoria caché gracias al número de la
etiqueta.
n m
Si tenemos una memoria principal de 2 palabras y una memoria caché de 2
k
líneas de 2 palabras por línea, la memoria principal se dividirá en bloques de
k
2 palabras. Una dirección de memoria estará formada por n bits y utilizará los
k bits menos significativos para el número de palabra y los n – k bits restantes
para el número de bloque.
k
El número de palabra p se puede calcular haciendo la operación siguiente: p = a mod 2 ,
donde mod es el residuo de la división entera.
Cabe tener presente que a cada línea de la memoria caché le podemos asignar
cualquier bloque de la memoria principal y debemos poder saber cuál se en-
cuentra en cada momento en la memoria caché.
Ejemplo
Tenemos una memoria principal de 216 (64 K) palabras y una memoria caché de 210
(1.024) palabras organizada en 26 (64) líneas de 24 (16) palabras por línea.
M(x) indica que en esta palabra de la línea de la caché está almacenada la palabra de
memoria con la dirección x.
n m
Si tenemos una memoria principal de 2 palabras y una memoria caché de 2
k
líneas de 2 palabras por línea, la memoria principal se dividirá en bloques de
k
2 palabras. Una dirección de memoria estará formada por n bits, utilizará los
k bits menos significativos para el número de palabra y los n – k bits restantes
para el número de bloque.
k
El número de palabra p se puede calcular mediante la operación siguiente: p = a mod 2 ,
donde mod es el residuo de la división entera.
En una memoria caché asociativa por conjuntos hay que organizar la memoria
m
caché en conjuntos; se tiene que dividir las 2 líneas de la memoria caché en
c m–c m c
2 conjuntos de ω = 2 = (2 /2 ) líneas cada uno, y de esta manera diremos
que es una memoria caché ω -asociativa.
© FUOC • PID_00218270 34 Sistema de memoria
c m
Si tenemos tantos conjuntos como líneas (2 = 2 ) y cada conjunto tiene una
sola línea (ω = 1), estamos ante el mismo caso que una memoria caché de
c m m
asignación directa; si tenemos un solo conjunto (2 = 1) de 2 líneas (ω = 2 ),
se trata de una memoria completamente asociativa.
c
El número de conjunto j se puede calcular haciendo la operación siguiente: j = b mod 2 ,
donde mod es el residuo de la división entera.
n–k c
Tenemos 2 bloques de la memoria principal y 2 conjuntos de la memoria
n–k c
caché (2 > 2 ), por lo tanto a cada conjunto de la memoria caché podemos
n–k–c n–k c
asignar 2 (= 2 /2 ) bloques diferentes. Como cada conjunto dispone
n–k–c
de ω líneas, solo ω bloques de los 2 pueden encontrarse en un conjunto
de la memoria caché en cada momento.
c
El número de conjunto de la dirección indicará en cuál de los 2 conjuntos de
la memoria caché se puede encontrar el bloque al que queremos acceder de la
memoria principal. La etiqueta nos permitirá saber, comparando simultánea-
mente todas las etiquetas de las líneas que forman el conjunto, si el bloque
al que queremos acceder de la memoria principal es uno de los bloques que
en este momento están almacenados en una línea de aquel conjunto de la
memoria caché.
© FUOC • PID_00218270 35 Sistema de memoria
m
De manera general se puede decir que, si tenemos una memoria caché de 2
líneas, los bloques de memoria principal que se pueden encontrar en cada una
de las líneas de la memoria caché son los siguientes:
0, ..., ω – 1 0 c c c
0, 2 , 2 x (2 ), 3 x (2 ) ...
ω, ..., 2ω – 1 1 c c c
1, 2 + 1, 2 x (2 ) + 1, 3 x (2 ) + 1 ...
... ...
c cω c c c c c c c c
(2 – 1) ω, ..., 2 –1 2 –1 2 – 1, 2 + (2 – 1), 2 x 2 + (2 – 1), ..., 3 x 2 + (2 – 1)
Ejemplo
Si tenemos una memoria principal de 216 (64 K) palabras y una memoria caché de 210
(1.024) palabras organizada en 26 (64) líneas de 24 (16) palabras por línea, dividimos las
líneas de la caché en 24 (16) conjuntos de 22 (4) líneas; por lo tanto, tendremos ω = 4 y
diremos que es una memoria caché 4-asociativa.
– 4 = 12 bits restantes para el número de bloque, en total tendremos 212 (4.096) bloques
de 24 (16) palabras. Las direcciones se dividirán de la manera siguiente:
Se puede observar que todos los bloques que se pueden encontrar en un mismo conjunto
de la caché tienen un valor de etiqueta diferente; se puede utilizar el valor de la etiqueta
para saber qué bloque en concreto se encuentra en cada línea de la memoria caché. La
tabla anterior muestra que los bloques sombreados están asignados todos al conjunto 0
de la memoria caché y podremos saber cuál se encuentra en la memoria caché gracias
al número de la etiqueta.
10
Supongamos una memoria principal de 2 (1.024) palabras, en la que cada
dirección de memoria corresponde a una palabra, y una memoria caché de 24
(4) líneas de 22 (4) palabras; por lo tanto, la memoria principal también estará
organizada en bloques de tamaño de 4 palabras.
k=
b = d div 2 d div 4
m
e = b div 2 = b div 4
m
l = b mod 2 = b mod 4
Por lo tanto, los bloques de memoria principal que se pueden asignar a cada
línea de la memoria caché son los siguientes:
0 (00) 0, 4, 8, 12, ..., 252 0(000000) 0(00), 1(000001) 0(00), 2(000010) 0(00), ..., 63(111111) 0(00)
1 (01) 1, 5, 9, 13, ..., 253 0(000000) 1(01), 1(000001) 1(01), 2(000010) 1(01), ..., 63(111111) 1(01)
2 (10) 2, 6, 10, 14, ..., 254 0(000000) 2(10), 1(000001) 2(10), 2(000010) 2(10), ..., 63(111111) 2(10)
3 (11) 3, 7, 11, 15, ..., 255 0(000000) 3(11), 1(000001) 3(11), 2(000010) 3(11), ..., 63(111111) 3(11)
l:�número�de�línea b:e�(a0�,a1�,a2�,a3):�bloque�asignado�:�etiqueta�(direcciones�del�bloque)
l:�número�de�línea b:e�(a0�,a1�,a2�,a3):�bloque�asignado�:�etiqueta�(direcciones�del�bloque)
Línea 1 1:0 (4, 5, 6, 7) 1:0 (4, 5, 6, 7) F 9:2 (36, 37, 38, 39)
Línea 2 F 6:1 (24, 25, 26, 27) E 6:1 (24, 25, 26, 27) 6:1 (24, 25, 26, 27)
Línea 3 3:0 (12, 13, 14, 15) F 7:1 (28, 29, 30, 31) E 7:1 (28, 29, 30, 31)
Línea 1 E E 9:2 (36, 37, 38, 39) 9:2 (36, 37, 38, 39) 9:2 (36, 37, 38, 39)
Línea 2 F 10:2 (40, 41, 42, 43) F 2:0 (8, 9, 10, 11) E 2:0 (8, 9, 10, 11) E
© FUOC • PID_00218270 42 Sistema de memoria
Línea 3 7:1 (28, 29, 30, 31) 7:1 (28, 29, 30, 31) F 3:0 (12, 13, 14, 15) E
Línea 0 0:0 (0, 1, 2, 3) 0:0 (0, 1, 2, 3) 0:0 (0, 1, 2, 3) F 4:1 (16, 17, 18, 19)
Línea 1 9:2 (36, 37, 38, 39) 9:2 (36, 37, 38, 39) 9:2 (36, 37, 38, 39) 9:2 (36, 37, 38, 39)
Línea 2 2:0 (8, 9, 10, 11) E 2:0 (8, 9, 10, 11) F 10:2 (40, 41, 42, 43) 10:2 (40, 41, 42, 43) E
Línea 3 F 7:1 (28,29,30,31) F 3:0 (12, 13, 14, 15) 3:0 (12, 13, 14, 15) 3:0 (12, 13, 14, 15)
b�(a0�,a1�,a2�,a3):�bloque�(direcciones�del�bloque)
Línea 0 F 6 (24, 25, 26, 27) E 6 (24, 25, 26, 27) 6 (24, 25, 26, 27)
Línea 1 1 (4, 5, 6, 7) F 7 (28, 29, 30, 31) E 7 (28, 29, 30, 31)
Línea 2 2 (8, 9, 10, 11) 2 (8, 9, 10, 11) F 9 (36, 37, 38, 39) E E
Línea 3 3 (12, 13, 14, 15) 3 (12, 13, 14, 15) 3 (12, 13, 14, 15)
Línea 0 6 (24, 25, 26, 27) F 2 (8, 9, 10, 11) E 2 (8, 9, 10, 11) E
Línea 1 7 (28, 29, 30, 31) 7 (28, 29, 30, 31) F 3 (12, 13, 14, 15) E
Línea 2 9 (36, 37, 38, 39) 9 (36, 37, 38, 39) 9 (36, 37, 38, 39)
Línea 3 F 10 (40, 41, 42, 43) 10 (40, 41, 42, 43) 10 (40, 41, 42, 43)
Línea 0 2 (8, 9, 10, 11) E 2 (8, 9, 10, 11) F 10 (40, 41, 42, 43)
Línea 1 3 (12, 13, 14, 15) E 3 (12, 13, 14, 15) 3 (12, 13, 14, 15)
Línea 2 F 7 (28, 29, 30, 31) 7 (28, 29, 30, 31) 7 (28, 29, 30, 31)
Línea 3 10 (40, 41, 42, 43) E F 4 (16, 17, 18, 19) 4 (16, 17, 18, 19)
caché está vacía. Cuando se produce un acierto, se indica con una E la línea
donde se ha producido el acierto. Cada vez que hay un fallo, se indica con
una letra F qué línea de la memoria caché se reemplazará y se actualiza el
contenido llevando el nuevo bloque de memoria principal a esta línea de la
memoria caché.
Línea 1 F 6 (24, 25, 26, 27) E 6 (24, 25, 26, 27) 6 (24, 25, 26, 27)
Línea 2 2 (8, 9, 10, 11) F 7 (28, 29, 30, 31) E 7 (28, 29, 30, 31)
Línea 3 3 (12, 13, 14, 15) 3 (12, 13, 14, 15) F 9 (36, 37, 38, 39) E E
Línea 0 F 10 (40, 41, 42, 43) 10 (40, 41, 42, 43) 10 (40, 41, 42, 43)
Línea 1 6 (24, 25, 26, 27) F 2 (8, 9, 10, 11) E 2 (8, 9, 10, 11) E
Línea 2 7 (28, 29, 30, 31) 7 (28, 29, 30, 31) F 3 (12, 13, 14, 15) E
Línea 3 9 (36, 37, 38, 39) 9 (36, 37, 38, 39) 9 (36, 37, 38, 39)
30 Fallo 8 12 40 17 Fallo 40
En una memoria caché asociativa por conjuntos con dos conjuntos de dos lí-
neas, un bloque de memoria se puede encontrar en un único conjunto y den-
tro del conjunto en cualquier línea. A un bloque de memoria b le correspon-
derá la etiqueta e y lo asignaremos al conjunto j de la memoria caché, para
determinar la etiqueta y el conjunto, dividimos el número de bloque b entre
el número de líneas de cada conjunto:
c
e = b div 2 = b div 2
c
j = b mod 2 = b mod 2
Por lo tanto, los bloques de memoria principal que se pueden asignar a cada
conjunto de la memoria caché son los siguientes:
j:�número�de�conjunto b:e�(a0�,a1�,a2�,a3):�bloque�asignado�:�etiqueta�(direcciones�del�bloque)
Línea 3 3:1 (12, 13, 14, 15) 3:1 (12, 13, 14, 15) F 9:4 (36,37,38,39)
30 Fallo 8 12 40 17 Fallo 40
Podemos comparar las tasas de fallos de los casos anteriores y observar que,
en esta secuencia de accesos, en el algoritmo LRU es donde se obtienen menos
fallos, mientras que la memoria caché de asignación directa es la que obtiene
más fallos.
© FUOC • PID_00218270 47 Sistema de memoria
2)� Escritura� aplazada� (write� back): las escrituras se efectúan solo sobre la
memoria caché. La memoria principal se actualiza cuando se elimina una línea
de la memoria caché que ha sido modificada. Eso implica añadir algunos bits
a cada línea de la memoria caché para saber si la línea se ha modificado o no.
Si hay que reemplazar una línea que ha sido modificada, primero es necesario
copiar la línea modificada a la memoria principal y a continuación llevar el
nuevo bloque, lo que aumenta significativamente el tiempo para acceder al
dato.
Fallo�en�la�escritura
Cuando se quiere hacer una escritura de una dirección que no está en la me-
moria caché, se producirá un fallo; este fallo se puede tratar de diferentes ma-
neras:
En máquinas reales se utilizan cada vez más políticas de escritura aplazada, pe-
ro el tratamiento de los fallos en caso de escritura es diferente, principalmente
porque se consideran diferentes niveles de memoria caché y porque múltiples
dispositivos (procesadores, DMA, canales de E/S) pueden acceder a la memoria.
© FUOC • PID_00218270 49 Sistema de memoria
4. Memoria interna
• Memoria volátil
– SRAM (static random access memory)
– RAM (dynamic random access memory)
• Memoria no volátil
– ROM (read only memory)
– PROM (programmable read only memory)
– EPROM (erasable programmable read only memory)
– EEPROM (electrically erasable programmable read only memory)
• Memoria flash
Para implementar cada celda de memoria son necesarios varios transistores, Usos de la memoria SRAM
típicamente seis, por lo que la memoria tiene una capacidad de integración
La memoria SRAM se utiliza en
limitada y su coste es elevado en relación con otros tipos de memoria RAM, la construcción de los registros
como la DRAM; sin embargo, es el tipo de memoria RAM más rápido. del procesador y en la memo-
ria caché.
Cada celda de memoria está formada por solo un transistor y un condensador; Usos de la memoria DRAM
por lo tanto, las celdas de memoria son mucho más pequeñas que las celdas
La memoria DRAM se utiliza en
de memoria SRAM, lo que garantiza una gran escala de integración y al mismo la construcción de la memoria
tiempo permite hacer memorias más grandes en menos espacio. principal del computador.
2)�Memoria�programable�de�solo�lectura�o�PROM�(programmable�read�only
memory). Cuando hay que fabricar un número reducido de memorias ROM
con la misma información grabada, se recurre a otro tipo de memorias ROM:
las memorias ROM programables (PROM).
© FUOC • PID_00218270 51 Sistema de memoria
Cabe destacar que, tal como sucede con las memorias ROM, el proceso de
grabación o programación solo se puede realizar una vez.
Este tipo de memoria tiene unas aplicaciones parecidas a las de las memorias
ROM.
Hay que destacar que el proceso de borrar es un proceso que borra completa-
mente todo el contenido de la memoria; no se puede borrar solo una parte.
Para borrar, se aplica luz ultravioleta sobre el chip de memoria EPROM; para
permitir este proceso, el chip dispone de una pequeña ventana sobre la cual
se aplica la luz ultravioleta.
Tanto para el proceso de borrar como para el proceso de grabar hay que sacar
el chip de memoria de su localización de uso habitual, ya que la realización
de estas dos tareas implica la utilización de hardware específico.
b)�EEPROM�(electrically�erasable�programmable�read�only�memory). Tiene
un funcionamiento parecido a la EPROM, permite borrar el contenido y grabar
información nueva; sin embargo, a diferencia de las memorias EPROM, todas
las operaciones son realizadas eléctricamente.
Para grabar datos no hay que borrarlos previamente; se permite modificar di-
rectamente solo uno o varios bytes sin modificar el resto de la información.
Este tipo de memoria no permite borrar la información byte a byte, sino que se
deben borrar bloques de datos enteros; eso lleva a que todo el contenido de la
memoria se pueda borrar en pocos segundos, pero también modera el proceso
de escritura, ya que para escribir un dato nuevo hay que borrar previamente
todo el bloque.
Tiene una capacidad de integración muy elevada y por este motivo también
se utiliza para dispositivos de almacenamiento externo.
© FUOC • PID_00218270 53 Sistema de memoria
5. Memoria externa
La memoria externa es de tipo no volátil; por lo tanto, los datos que se quieran
mantener durante un tiempo indefinido o de manera permanente se pueden
almacenar en dispositivos de memoria externa.
Los datos almacenados en la memoria externa son visibles para el programa- Ved también
dor en forma de bloques de datos, no como datos individuales (bytes), nor-
La manera de acceder a los
malmente en forma de registros o ficheros. El acceso a estos dispositivos se dispositivos de almacenamien-
lleva a cabo mediante el sistema de E/S del computador y es gestionado por to secundario se verá con más
detalle cuando se analice el sis-
el sistema operativo. tema de E/S.
Los platos y los cabezales son accionados por motores eléctricos. Los platos
hacen un movimiento de rotación continuo y los cabezales se pueden mover
de la parte más externa del disco a la parte más interna, lo que permite un
acceso directo a cualquier posición del disco.
5.1.1. RAID
(1)
RAID son las siglas de redundant
1
Un sistema RAID consiste en utilizar una colección de discos que tra- array of independent discs, en espa-
ñol: matriz redundante de discos
bajan en paralelo con el objetivo de mejorar el rendimiento y la fiabili- independientes.
dad del sistema de almacenamiento.
Los datos se pueden distribuir entre los discos físicos según configuraciones
diferentes. Se utiliza información redundante para proporcionar capacidad de
recuperación en el caso de fallo en algún disco.
La clasificación del tipo de RAID original incluye 7 niveles, del RAID 0 al RAID
6, en los que cada uno necesita un número diferente de discos y utiliza dife-
rentes sistemas de control de la paridad y de detección y corrección de errores.
Como las memorias flash no tienen partes mecánicas ni superficies magnéti- Usos de la memoria flash
cas, son más tolerantes a fallos y más adecuadas para entornos en los que la
La memoria flash se utiliza ha-
fiabilidad es muy importante. También hay dispositivos de este tipo para el bitualmente en diferentes ti-
gran público, pero que actualmente no rivalizan con los discos magnéticos, pos de dispositivos de almace-
namiento externo: tarjetas de
especialmente con respecto a la capacidad. memoria (Compact Flash, Se-
cure Digital, etc.), memorias
USB (pendrive) y unidades de
estado sólido (SSD).
5.4. Disco óptico
Los discos ópticos son unidades de almacenamiento que utilizan luz láser pa-
ra realizar operaciones de lectura y escritura sobre un soporte extraíble. Estas
unidades pueden ser internas (conectadas a un bus interno del computador)
o externas (conectadas por un bus externo).
5.5. Red
Resumen
• localización,
• capacidad,
• métodos de acceso,
• organización de los datos de una memoria,
• tiempo de acceso y velocidad,
• coste y
• características físicas.
• Registros.
• Memoria interna.
– Memoria caché.
– Memoria principal.
• Memoria externa.
• proximidad temporal y
• proximidad espacial.