Sistema de Memoria

Anuncio
T E M A
Sistema de Memoria
2
2-2
Sistema de Memoria
Indice
3.- INTRODUCCIÓN AL TEMA.................................................................................................................... 2-3
3.1.- CONCEPTOS BÁSICOS......................................................................................................................... 2-3
3.2.- TECNOLOGÍAS DE MEMORIA............................................................................................................... 2-3
3.3.- LOCALIDAD ....................................................................................................................................... 2-4
3.3.1.- Localidad de referencia a los datos del programa ................................................................... 2-4
3.3.2.- Localidad de captación de instrucciones.................................................................................. 2-6
3.3.3.- Resumen de localidad ............................................................................................................... 2-7
3.4.- JERARQUÍA DE MEMORIA ................................................................................................................... 2-8
3.4.1.- Haciendo "caching" en la jeraquía de memoria..................................................................... 2-10
3.4.2.- Resumen de conceptos de jerarquía de memoria.................................................................... 2-12
3.5.- MEMORIA CACHE ............................................................................................................................ 2-13
3.5.1.- Tipos de cache ........................................................................................................................ 2-14
3.5.2.- Función de Correspondencia.................................................................................................. 2-16
3.5.3.- Algoritmos de Sustitución ....................................................................................................... 2-26
3.5.4.- Política de escritura................................................................................................................ 2-26
3.5.5.- Tamaño de Bloque .................................................................................................................. 2-29
3.5.6.- Número de Cache.................................................................................................................... 2-29
3.5.7.- Impacto en el desempeño de los parámetros de la caché ....................................................... 2-30
3.6.- MEMORIA VIRTUAL ......................................................................................................................... 2-32
3.6.1.- Conceptos Básicos .................................................................................................................. 2-32
3.6.2.- Direccionamiento físico y Virtual ........................................................................................... 2-33
3.6.3.- Espacio de direcciones ........................................................................................................... 2-34
3.6.4.- Memoria Virtual La memoria virtual como una herramienta para realizar caching ............ 2-35
3.6.5.- La memoria virtual como una herramienta para la administración de memoria .................. 2-41
3.6.6.- La memoria virtual como una herramienta para la protección de memoria ......................... 2-43
3.6.7.- Traducción de direcciones...................................................................................................... 2-44
Cronograma de Actividades
Puntos
Clase
Organización y Estructura del Computador II -OyECII
Sistema de Memoria
2-3
2.- Introducción al Tema
-
Conceptos básicos.
-
Tecnologías de memoria: Banco de registros del procesador (características básicas);
Memorias RAM semiconductoras; Memorias de sólo-lectura; Memorias asociativas.
-
Localidad: Localidad de referencias en los datos del programa; Localidad en la captación de
instrucciones; Resumen de la localidad.
-
Jerarquía de memoria: Velocidad, tamaño y costo; Haciendo “caching” en la jerarquía de
memoria; Resumen de los conceptos de jerarquía de memoria.
-
Memoria caché: Organización genérica de la memoria cache; Tamaño de la caché; Función de
correspondencia; Manejo de los fallos de cache; Algoritmos de sustitución; Política de escritura;
Tamaño de la línea; Reducción de la penalización de fallos con el uso de caches multinivel;
Caches en el chip del procesador; Cache unificada vs. cache de datos y cache de instrucciones;
Impacto en el desempeño de los parámetros de la caché; Caso de estudio: organización de la
caché en una máquina Pentium; Como escribir código que aproveche la cache.
-
Memoria virtual: Direccionamiento físico y virtual; Espacios de direcciones; La memoria virtual
como una herramienta para realizar caching; La memoria virtual como una herramienta para la
administración de memoria; La memoria virtual como
2.1.- Conceptos Básicos
Ver Stalling
2.2.- Tecnologías de memoria
Tarea: Banco de registros del procesador (características básicas); Memorias RAM
semiconductoras; Memorias de sólo-lectura; Memorias asociativas.
Organización y Estructura del Computador II – ER, JL
2-4
Sistema de Memoria
2.3.- Localidad
-
Localidad temporal: un elemento referenciado tiende a ser referenciado nuevamente
pronto.
-
Localidad espacial: los elementos cercanos a uno referenciado tienden a ser
referenciados pronto.
2.3.1.- Localidad de referencia a los datos del programa
Organización y Estructura del Computador II -OyECII
Sistema de Memoria
2-5
Organización y Estructura del Computador II – ER, JL
2-6
Sistema de Memoria
2.3.2.- Localidad de captación de instrucciones
Organización y Estructura del Computador II -OyECII
Sistema de Memoria
2-7
2.3.3.- Resumen de localidad
Organización y Estructura del Computador II – ER, JL
2-8
Sistema de Memoria
2.4.- Jerarquía de memoria
Organización y Estructura del Computador II -OyECII
Sistema de Memoria
2-9
Organización y Estructura del Computador II – ER, JL
2-10
Sistema de Memoria
2.4.1.- Haciendo "caching" en la jeraquía de memoria
Organización y Estructura del Computador II -OyECII
Sistema de Memoria
2-11
Organización y Estructura del Computador II – ER, JL
2-12
Sistema de Memoria
2.4.2.- Resumen de conceptos de jerarquía de memoria
Organización y Estructura del Computador II -OyECII
Sistema de Memoria
2-13
2.5.- Memoria Cache
Debido a la gran velocidad alcanzada por los procesadores, la Memoria Principal del
computador no es lo suficientemente rápida para almacenar y transmitir los datos que el
procesador necesita, por lo que tendría que esperar a que la memoria estuviera disponible y
el trabajo se atrazaría. Para evitarlo, se usa una memoria muy rápida, estratégicamente
situada entre el micro y la RAM: la memoria caché.
Esta memoria es unas 5 o 6 veces más rápida que la RAM. Esto la encarece bastante, y
ése es uno de los motivos por los cuales su capacidad es mucho menor que el de la RAM:.
Además, se usa con una finalidad específica. Cuando una computadora trabaja, el
microprocesador opera en ocasiones con un número reducido de datos, pero que tiene que
traer y llevar a la memoria en cada operación. Si situamos en medio del camino de los datos
una memoria intermedia que almacene los datos más usados, los que casi seguro
necesitará el procesador en la próxima operación que realice, por lo tanto ahorrará mucho
tiempo del tránsito y acceso a la lenta memoria RAM; esta es la segunda utilidad de la
caché.
Organización y Estructura del Computador II – ER, JL
2-14
Sistema de Memoria
La utilización de este tipo de memorias no es sino la generalización de un principio de
uso común en la vida diaria; poner más a mano las cosas de uso más frecuente. Y se basa
en dos suposiciones que generalmente resultan ciertas:
à
Los procesadores tienden a utilizar las mismas instrucciones y (en menor
medida), los mismos datos repetidamente.
à
La información necesitada se encuentra almacenada de forma adyacente, o
cuando menos muy cercana, en memoria o disco.
2.5.1.- Tipos de cache
Desde el punto de vista del hardware, existen dos tipos de memoria cache; interna y externa. La
primera, denominada también cache primaria, caché de nivel 1 o simplemente caché L1 (Level
one). La segunda se conoce también como cache secundaria, cache de nivel 2 o cache L 2.
Desde el punto de vista funcional, existen cachés específicas de algunos dispositivos, por
ejemplo, de disco. También se distingue entre caché de lectura y de escritura.
a) .- Caché interna
Es una innovación relativamente reciente; en realidad son dos, cada una con una misión
específica: Una para datos y otra para instrucciones. Está incluida en el procesador junto
con su circuitería de control, lo que significa tres cosas: Comparativamente es muy cara;
extremadamente rápida y limitada en tamaño (los 386 tenían 8 KB, el 486 DX4 16 KB, y los
primeros Pentium 8 KB en cada una de las cachés internas). Como puede suponerse, su
velocidad de acceso es comparable a la de los registros, es decir, centenares de veces más
rápida que la RAM.
b) .- Caché externa
Es más antigua que la interna, dado que hasta fecha "relativamente" reciente estas
últimas eran impracticables. Es una memoria de acceso rápido incluida en la placa base
que dispone de su propio bus y controlador independiente que intercepta las llamadas a
memoria antes que sean enviadas a la RAM (Buses locales).
La caché externa típica es un banco SRAM ("Static Random Access Memory") de entre
128 y 256 KB. Esta memoria es considerablemente más rápida que la DRAM ("Dynamic
Random Access Memory") convencional, aunque también mucho más cara [5] (tenga en
cuenta que un aumento de tamaño sobre los valores anteriores no incrementa
proporcionalmente la eficacia de la memoria caché). Actualmente (2004) la tendencia es
incluir esta caché en el procesador. Los tamaños típicos oscilan entre 256 KB y 1 MB.
En 1.997, con la introducción del procesador Pentium II, Intel abandonó el denominado zócalo 7
utilizado hasta entonces en sus procesadores, en favor del denominado Slot-1. La razón argüida
era precisamente la inclusión de la caché L 2 en la cápsula del procesador.
c) .- Caché de disco
Además de las anteriores, que son de propósito general, existe una caché de
funcionalidad específica que se aloja en memoria RAM estándar; es la caché de disco (nos
hemos referido a ella en la introducción de este epígrafe). Destinada a contener los datos
Organización y Estructura del Computador II -OyECII
Sistema de Memoria
2-15
de disco que probablemente sean necesitados en un futuro próximo y los que deben ser
escritos. Si la información requerida está en chaché, se ahorra un acceso a disco, lo que es
centenares de veces más rápido (recuerde que los tiempos de acceso a RAM se miden en
nanosegundos y los de disco en milisegundos ( Unidades de medida).
Nota: Existe un mecanismo parecido al de caché de disco que aquí se describe pero que
funciona en sentido inverso. Es decir, aloja en disco los datos que no pueden ser almacenados
en la memoria RAM. Es el sistema de memoria virtual, al que nos referiremos al tratar de la
memoria.
El funcionamiento de la caché de disco se basa en dos esquemas de operación. La lectura
adelantada ("Read-ahead") y la escritura retrasada ("Write-behind"). La primera consiste en
anticipar lo que se necesitará de forma inmediata y traerlo a la caché. Por su parte, la escritura
retrasada consiste en mantener los datos en caché hasta que se producen momentos de
desocupación del sistema de disco. En este caso la caché actúa como memoria tampón o
"buffer" intermedio, y no se obliga al subsistema a realizar físicamente ninguna escritura, con lo
que las cabezas quedan libres para nuevas lecturas.
Puesto que los cachés de disco de escritura retrasada mantienen los datos en memoria volátil
después que "supuestamente" se han escrito en el dispositivo, una caída accidental del sistema,
por fallo de energía o apagado intempestivo, puede producir pérdidas de los datos alojados en la
caché en ese momento (es esta una de las razones por las que los sistemas Windows y Linux
exigen un proceso especial de apagado, que a veces tarda unos segundos, en los que
observamos una intensa actividad del sistema de disco).
Nota: La mayoría de los lenguajes disponen de métodos para forzar una escritura "real" de los
datos vaciando la caché de disco; suelen ser sentencias del tipo commit, flush etc. Es una
práctica de seguridad aconsejable, y señal de programación cuidadosa, realizar un vaciado de
"buffers" después de cada transacción importante siempre que las circunstancias lo permitan
Organización y Estructura del Computador II – ER, JL
2-16
Sistema de Memoria
2.5.2.- Función de Correspondencia
a) .- Correspondencia Directa
Esta técnica es la más simple y consiste en hacer corresponder cada bloque de memoria
principal a sólo una línea posible de cache.
El siguiente gráfico muestra el proceso de lectura de un dato.
s+w
Memoria Cache
Etiqueta
Etiqueta
Línea
s-r
r
Datos
Memoria
Principal
Palabra
W0
L0
w
W1
B0
W2
1
W3
s
+
2
L1
3
s-r
w
W4
W5
B1
W6
+
W7
Comparador
Acierto
No Acierto
.
.
.
.
.
.
3
n
W2 -4
Lm-1
n
W2 -3
n
W2 -2
n
W2 -1
Donde:
Primero (1): Se utilizan los bits de la dirección del dato a leer que corresponden a la línea de
cache ® para ubicarnos en la línea de cache donde se supone esta el dato.
Segundo (2): Se comparan los bits de la dirección del dato a leer que corresponden a la etiqueta
de esa línea en particular de la caché (s-r). Con el fin de verificar sí el bloque de memoria esta en
cache.
Organización y Estructura del Computador II -OyECII
Bj-1
Sistema de Memoria
2-17
Tercero (3):
Si el bloque esta en cache, es decir la comparación resultó verdadera (acierto de cache),
entonces esto implica que el dato a buscar esta en cache, luego con los bits que
corresponden a la palabra (w) se direcciona el dato en cache y se entrega al CPU.
Si el bloque no esta en cache, la comparación resultó falsa (fallo de cache), esto implica que
el dato no esta en cache y debe buscarse en memoria principal. La idea ahora es buscar el
bloque de memoria principal donde se encuentra el dato, esto lo hacemos comparando los
bits que corresponden tanto a la etiqueta como a la línea de cache (s), una vez ubicados en el
bloque se direcciona el dato en memoria principal, se entrega al CPU y el bloque de memoria
principal es cargado en cache, en la línea que la dirección del dato especifica.
Organización y Estructura del Computador II – ER, JL
2-18
Sistema de Memoria
Ejemplo: Correspondencia Directa, suponemos que tenemos las siguientes especificaciones:
9
• Memoria principal de 32B (32 palabras de 8 bits)
• La cache puede almacenar 8B
• Los datos se transfieren entre la memoria principal y la cache en bloques de 2 bytes. Esto significa que la
cache esta organizada en 4 líneas de 2 bytes cada una.
Memoria Cache de 8 B
Etiqueta
Memoria Principal
Datos
Etiqueta
# Línea
0
0
0
1
1
0
1
1
Solución del problema:
a.- Cuantos bits necesitamos para cada byte dentro de las líneas de caché: 1 ya
que solo tenemos dos bytes por línea.
b.- Cuantos bits necesitamos para cada línea de cache: 2 ya que tenemos sólo
4 líneas en cache.
c.- Como la cache puede contener sólo 4 bloques de memoria a la vez y
tenemos 16 bloques de memoria en total, además cada bloque debe
almacenarse en una línea especifica entonces:
Cuantos bloques comparten la misma líneas? 16 bloques memoria/ 4
líneas = 4 bloques de memoria.
Cuantos bits necesitamos para identificar cada conjunto de bloques: 2
Una vez obtenidos esto valores podemos realizar la correspondencia entre
las líneas de cache y la dirección de memoria:
Etiqueta
Dirección del dato en
Memoria Princiapal =
Línea
2
2
Palabra
1
Lectura de un dato:
Supongamos que queremos leer el dato A, esto implica que el CPU
nos da la dirección: 01110 organizando esa dirección según el gráfico de
arriba:
Etiqueta
Línea
Palabra
01
1
11
0
Lo primero que tenemos que hacer es verificar si el bloque esta en
cache,
Aplicamos el primer paso de lectura de un dato: tomamos los bits de la
dirección del dato que corresponden a la línea (110 y nos ubicamos en
Memoria Cache de 8 B
Etiqueta
Datos
# Línea
0
0
0
1
1
0
1
1
Línea
Palabra
Datos
0
0
0
0
0
0
0
0
0
1
0
0
0
1
0
0
0
0
1
1
0
0
1
0
0
0
0
1
0
1
0
0
1
1
0
0
0
1
1
1
0
1
0
0
0
0
1
0
0
1
0
1
0
1
0
0
1
0
1
1
0
1
1
0
0
0
1
1
0
1
0
1
1
1
0
A
0
1
1
1
1
B
1
0
0
0
0
1
0
0
0
1
1
0
0
1
0
1
0
0
1
1
1
0
1
0
0
1
0
1
0
1
1
0
1
1
0
C
1
0
1
1
1
D
1
1
0
0
0
1
1
0
0
1
1
1
0
1
0
1
1
0
1
1
1
1
1
0
0
1
1
1
0
1
1
1
1
1
0
1
1
1
1
1
B0
B1
B2
B3
B4
B5
B6
B7
B8
B9
B10
Organización y Estructura del Computador II -OyECII
B11
B12
B13
B14
B15
Sistema de Memoria
2-19
Memoria Principal
Comaparamos el campo etiqueta de la dirección del dato con la etiqueta
de esa línea en caché
2
Etiqueta
Línea
Palabra
11
01
0
Memoria Cache de 8 B
Etiqueta
3
Datos
# Línea
Línea
1
0
0
0
0
0
0
1
0
0
0
1
0
0
0
0
1
1
0
0
1
0
0
0
0
1
0
1
0
0
1
1
0
0
0
1
1
1
B0
B1
B2
B3
0
1
0
0
0
0
1
0
0
1
1
0
0
1
0
1
0
1
1
0
1
0
1
1
0
1
1
0
0
0
1
1
0
1
0
1
1
1
0
A
0
1
1
1
1
B
1
0
0
0
0
1
0
0
0
1
Palabra
1
0
0
1
0
0
1
0
0
1
1
1
0
1
0
0
1
0
1
0
1
1
0
1
1
0
C
1
0
1
1
1
D
1
1
0
0
0
1
1
0
0
1
1
1
0
1
0
Datos
# Línea
B
0
0
1
Memoria Cache de 8 B
0
0
Datos
0
Una vez que tenemos el bloque se direcciona el dato dentro de eses
bloque usando el campo palabra y entrega al CPU, después el dato es
cargado en memoria cache, en la línea que indica el campo línea de la
dirección del dato, resultando el siguiente mapa de cache.
Etiqueta
Palabra
0
11
01
Línea
0
Como el bloque no esta en cache entonces se busca en memoria,
comparamos ahora el campo etiqueta+ línea con las direcciones de
memoria para conseguir el bloque
Etiqueta
Etiqueta
A
0
0
1
1
0
1
1
0
1
1
1
1
0
0
1
0
1
1
1
0
1
1
1
1
1
1
1
0
1
1
1
1
1
B4
B5
B6
B7
B8
B9
B10
En general el número de la línea donde se almacenará el bloque de
memoria se determina de la siguiente manera:
# Línea = (# bloque memoria principal) MOD (# Líneas de caché)
# Línea = 7 MOD 4 = 3; # Línea = 11 MOD 4 = 3;
a.1.- Ventajas y Desventajas de la correspondencia directa:
La ventaja de esta correspondencia es que es simple y poco costosa, pero si el programa
intercambia datos entre los bloques B7 y B11, tendríamos en cada intercambio fallos de
cache, accediendo a la memoria en cada fallo, con lo cual la tasa de aciertos sería baja y el
Tiempo de acceso a un dato es igual al Tiempo de acceso de cache más el tiempo de
acceso a memoria, y esto desmejora el rendimiento del sistema.
Organización y Estructura del Computador II – ER, JL
B11
B12
B13
B14
B15
2-20
Sistema de Memoria
b) .- Correspondencia Asociativa
Esta técnica permite que cada bloque de memoria principal pueda cargarse en cualquier
línea de cache.
El siguiente gráfico muestra el proceso de lectura de un dato.
s+w
Memoria Cache
Etiqueta
Etiqueta
s
Datos
Memoria
Principal
Palabra
W0
w
L0
W1
B0
W2
W3
+
L1
w
…
2
Comparador
No Acierto
Acierto
w
W4
W5
B1
W6
+
1
s
W7
.
.
.
.
.
.
3
n
W2 -4
Lm-1
n
W2 -3
n
W2 -2
W2n -1
Donde:
Primero (1): Se utilizan los bits de la dirección del dato a leer que corresponden al campo etiqueta
la se compara con cada etiqueta de cada bloque para verificar si el dato esta en cache.
Segundo (2): Si el bloque esta en cache, es decir la comparación resultó verdadera (acierto de
cache), entonces esto implica que el dato a buscar esta en cache, luego con los bits que
corresponden a la palabra (w) se direcciona el dato en cache y se entrega al CPU.
Si el bloque no esta en cache, se realiza el mismo procedimiento que en la correspondencia
directa.
Organización y Estructura del Computador II -OyECII
Bj-1
Sistema de Memoria
2-21
Memoria Principal
Memoria Cache de 8 B
Etiqueta
Etiqueta
Línea
0
0
0
0
0
0
0
0
0
1
0
0
0
1
0
0
0
0
1
1
0
0
1
0
0
0
0
1
0
1
0
0
1
1
0
0
0
1
1
1
0
1
0
0
0
0
1
0
0
1
0
1
0
1
0
0
1
0
1
1
Palabra
0
1
1
0
0
1
0
1
1
0
1
0
1
1
1
0
A
0
1
1
1
1
B
1
0
0
0
0
1
0
0
0
1
1
0
0
1
0
1
0
0
1
1
1
0
1
0
0
1
0
1
0
1
1
0
1
1
0
C
1
0
1
1
1
D
1
1
0
0
0
1
1
0
0
1
1
1
0
1
0
1
1
0
1
1
1
1
1
0
0
1
1
1
0
1
1
1
1
1
0
1
1
1
1
1
Datos
# Línea
0
0
0
1
1
0
1
1
Solución del problema:
a.- y b.- igual a correspondencia directa.
c.- Como la cache puede contener sólo 4 bloques de memoria a la vez y
tenemos 16 bloques de memoria en total, además un bloque de
memoria puede estar en cualquier línea de caché, entonces tenemos
que buscar la forma de identificar el bloque dentro de la cache.
Cuantos bits necesitamos para identificar cada bloque: 4
Una vez obtenidos esto valores podemos realizar la correspondencia
entre las líneas de cache y la dirección de memoria:
Etiqueta
Línea
Dirección del dato
en Memoria Princiapal
4
Lectura de un dato:
Supongamos que queremos leer el dato A, esto implica que el CPU
nos da la dirección: 01110 organizando esa dirección según el gráfico de
arriba:
Etiqueta
Línea
Palabra
0111
1
0
Lo primero que tenemos que hacer es verificar si el bloque esta en
cache,
Aplicamos el primer paso de lectura de un dato: tomamos los bits de la
dirección del dato que corresponden a la etiqueta (0111) y lo
Etiqueta
Línea
0111
Palabra
0
Memoria Cache de 8 B
Etiqueta
Datos
# Línea
0
0
0
1
1
0
1
1
Palabra
Datos
B0
B1
B2
B3
B4
B5
B6
B7
B8
B9
B10
Comparación
simultánea.
Organización y Estructura del Computador II – ER, JL
B11
B12
B13
B14
B15
2-22
Sistema de Memoria
Memoria Principal
Etiqueta
Línea
0
0
0
0
0
0
0
0
0
1
Palabra
0
0
0
1
0
0
0
0
0
1
1
0
0
1
0
0
0
0
1
0
1
0
0
1
1
0
0
0
1
1
1
0
1
0
0
0
0
1
0
0
1
0
1
0
1
0
0
1
0
1
1
0
1
1
0
0
0
1
1
0
1
0
1
1
1
0
A
0
1
1
1
1
B
1
0
0
0
0
1
0
0
0
1
1
0
0
1
0
1
0
0
1
1
1
0
1
0
0
1
0
1
0
1
1
0
1
1
0
C
1
0
1
1
1
D
1
1
0
0
0
1
1
0
0
1
1
1
0
1
0
1
1
0
1
1
1
1
1
0
0
1
1
1
0
1
1
1
1
1
0
1
1
1
1
1
Como el bloque no esta en cache entonces se busca en memoria,
comparamos ahora el campo etiqueta con las direcciones de memoria
para conseguir el bloque
2
Etiqueta
Línea
0111
Una vez que tenemos el bloque se direcciona el dato dentro de eses
bloque usando el campo palabra y entrega al CPU, después el dato es
cargado en memoria cache, en la línea que indica el campo línea de
la dirección del dato, resultando el siguiente mapa de cache.
Memoria Cache de 8 B
Etiqueta
0
1
0
Datos
1
B
A
El número de la línea donde se almacenará el bloque de memoria se
determina mediante algoritmos de sustitución.
Si queremos acceder a los datos del bloque B11, este puede ser cargado
en cualquier otro bloque. Resultando el siguiente mapa de cache.
Etiqueta
Línea
Palabra
0
1011
Memoria Cache de 8 B
Etiqueta
Datos
0
1
0
1
B
A
1
0
1
1
D
C
Palabra
Datos
B0
B1
B2
B3
B4
B5
B6
B7
B8
B9
B10
b.1.- Ventajas y Desventajas de la correspondencia asociativa:
La ventaja de esta correspondencia es que máximiza las tasas de aciertos. La principal
desventaja es la compleja circuiteria necesaria para examinar en paralelo las etiquetas de
todas las líneas de la cache.
Organización y Estructura del Computador II -OyECII
B11
B12
B13
B14
B15
Sistema de Memoria
2-23
c) .- Correspondencia por Conjunto
Esta técnica es una solución que combina lo positivo de la correspondencia directa con lo
de la correspondencia asociativa, sin presentar sus desventajas. En este caso la cache se
divide en v conjuntos, cada uno de k líneas.
El siguiente gráfico muestra el proceso de lectura de un dato.
s+w
Memoria Cache
Etiqueta
Etiqueta
Conjunto
s-d
Datos
Memoria
Principal
Palabra
w
d
1
Bo
Conjunto 0
.
.
s-d
s
s-d
+
+w
B1
3
+
2
Comparador
Acierto
Fallo
.
.
.
.
.
.
Conjunto v-1
3
Bj-1
Donde:
Primero (1): Se utilizan los bits de la dirección del dato a leer que corresponden al conjunto de
cache para ubicarnos en el conjunto de cache donde se supone esta el dato (correspondencia
directa por conjunto)
Segundo (2): Se comparan los bits de la dirección del dato a leer que corresponden a la etiqueta
de ese conjunto en particular con todas las etiquetas del conjunto (s-d) (asociativa). Con el fin de
verificar sí el bloque de memoria esta en cache.
Tercero (3): igual a correspondencia asociativa.
Organización y Estructura del Computador II – ER, JL
2-24
Sistema de Memoria
Memoria Cache de 8 B
Etiq
ueta
Memoria Principal
Datos
#
Conjunto
Etiqueta
Línea
Palabra
Datos
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
1
0
1
0
0
0
1
1
0
0
1
0
0
Solución del problema:
a.- Cuantos bits necesitamos para cada byte dentro de las líneas de caché:
1 ya que solo tenemos dos bytes por línea.
b.- Cuantos conjuntos vamos a tener?: La relación es la siguiente:
# conjuntos = # Líneas de cache / # líneas del conjunto. Si asuminos que
queremos 2 líneas por conjuntos entonces tenemos que:
# conjuntos = 4/2 = 2
c.- Cuantos bits necesitamos para representar cada conjunto: 1
Un grupo de bloques va a compartir el mismo conjunto y pueden estar
en cualquier línea dentro del conjunto.
Cuantos bloques comparten el mismo conjunto? 16 bloques memoria/ 2
conjuntos = 8 bloques de memoria.
Cuantos bits necesitamos para identificar cada bloque en el conjunto: 3
0
0
1
0
1
0
0
1
1
0
0
0
1
1
1
0
1
0
0
0
0
1
0
0
1
0
1
0
1
0
0
1
0
1
1
0
1
1
0
0
0
1
1
0
1
Una vez obtenidos esto valores podemos realizar la correspondencia
entre las conjuntos de cache y la dirección de memoria:
0
1
1
1
0
A
0
1
1
1
1
B
1
0
0
0
0
1
0
0
0
1
1
0
0
1
0
1
0
0
1
1
1
0
1
0
0
1
0
1
0
1
1
0
1
1
0
C
1
0
1
1
1
D
1
1
0
0
0
1
1
0
0
1
Dirección del dato en Memoria Princiapal =
Etiqueta
3
Conjunto
Palabra
1
1
Lectura de un dato:
Supongamos que queremos leer el dato A, esto implica que el CPU nos
da la dirección: 01110 organizando esa dirección según el gráfico de
arriba:
1
Lo primero que tenemos que hacer es verificar si el bloque esta en
cache,
Aplicamos el primer paso de lectura de un dato: tomamos los bits de la
dirección del dato que corresponden al conjunto (1) y nos ubicamos en
Etiqueta
011
Conjunto
1
1
0
1
0
Palabra
1
1
0
1
1
0
1
1
1
0
0
1
1
1
0
1
1
1
1
1
0
1
1
1
1
1
1
Memoria Cache de 8 B
Etiqueta
Datos
# Conjunto
B0
B1
B2
B3
B4
B5
B6
B7
B8
B9
B10
0
0
1
1
Organización y Estructura del Computador II -OyECII
B11
B12
B13
B14
B15
Sistema de Memoria
2-25
Comaparamos el campo etiqueta de la dirección del dato con todas las
etiqueta de ese conjunto caché
2
Etiqueta
Conjunto
0
0
0
0
0
0
1
0
0
0
1
0
0
0
0
1
1
0
0
1
0
0
0
0
1
0
1
0
0
1
1
0
0
0
1
1
1
0
1
0
0
0
0
1
0
0
1
0
1
0
1
0
0
1
0
1
1
0
1
1
0
0
0
1
1
0
1
0
1
1
1
0
A
0
1
1
1
1
B
1
0
0
0
0
1
0
0
0
1
1
0
0
1
0
1
0
0
1
1
1
0
1
0
0
1
0
1
0
1
1
0
1
1
0
C
1
0
1
1
1
D
1
1
0
0
0
1
1
0
0
1
0
1
1
0
1
0
0
1
1
0
1
1
1
1
1
1
0
0
1
1
1
1
0
1
1
1
1
1
0
1
1
1
1
1
# Conjunto
0
0
1
1
Como el bloque no esta en cache entonces se busca en memoria,
comparamos ahora el campo etiqueta+ línea con las direcciones de
memoria para conseguir el bloque
3
Etiqueta
Conjunto
Palabra
011
1
0
Una vez que tenemos el bloque se direcciona el dato dentro de ese
bloque usando el campo palabra y entrega al CPU, después el dato es
cargado en memoria cache, en el conjunto que indica el campo conjunto
de la dirección del dato, resultando el siguiente mapa de cache.
Memoria Cache de 8 B
Etiqueta
0
1
Datos
1
B
# Conjunto
A
Datos
0
0
Datos
Palabra
0
Memoria Cache de 8 B
Etiqueta
Línea
0
Palabra
1
011
Memoria Principal
Etiqueta
En general el número del conjunto donde se almacenará el bloque de
memoria se determina de la siguiente manera:
# conjunto = (# bloque memoria principal) MOD (# conjuntos de caché)
# conjunto = 7 MOD 2 = 1; # conjunto = 11 MOD 2 = 1;
B0
B1
B2
B3
B4
B5
B6
B8
B9
B10
0
0
0
1
1
B
A
1
1
0
1
D
C
1
B7
En general el número de líneas por conjunto es el caso más común y mejora
significativamente la tasa de aciertos. Si v=m y k=1 (v: # conjunto; m: #
líneas, k: # líneas por conjunto) esta técnica se reduce a directa; si v=1 y k=m
esta técnica se reduce a asociativa.
Organización y Estructura del Computador II – ER, JL
B11
B12
B13
B14
B15
2-26
Sistema de Memoria
2.5.3.- Algoritmos de Sustitución
En la correspondencia Directa, no se aplica ningún algoritmo de sustitución.
a) .- LRU (Least-Recently Used) Menos Recientemente Utilizado
Esta técnica sustituye el bloque que se ha mantenido en la cache por más tiempo sin
haber sido referenciado.
Este algoritmo es probablemente el que tiene más tasa de aciertos.
b) .- FIFO (First-in First-out) Primero en Entrar, Primero en Salir
Este algoritmo sustituye aquel bloque que ha estado más tiempo en cache.
Sí la organización de la cache es asociativa por conjunto se sustituye la línea en cada conjunto.
Esto se puede implementar con una técnica de Round-Robin o buffer circular.
c) .- LFU (Least- Frecuently Used) Menos Frecuentemente Utilizado:
Sustituye aquel bloque que ha experimentado menos referencias.
Se implementa asociando un contador a cada línea.
d) .- Aleatoria
Esta técnica no se basa en el grado de utilización del bloque, consiste simplemente en
escoger una línea al azar(aleatoria) entre las posibles candidatas.
2.5.4.- Política de escritura
Antes de que pueda ser reemplazado un bloque que esta en la cache, es necesario considerar si
ha sido o no alterado en cache pero no en memoria principal.
Si ha sido modificado, esto significa que se ha realizado al menos una operación de escritura
sobre una palabra de la línea de cache.
Hay dos problemas:
1).- Un módulo de E/S puede leer/escribir directamente de/en memoria.
2).- Si se tiene varios CPU conectados al mismo bus con caches independiente.
a) .- Escritura Inmediata
Con esta técnica todas las operaciones de escritura se hacen tanto en cache como en
memoria principal, asegurando que el contenido de la memoria principal siempre es válido.
Cualquier otro módulo CPU-Cache puede monitorear el tráfico a memoria principal para mantener
la coherencia con su propia cache.
Desventaja
Alto tráfico a memoria principal que puede originar cuellos de botella.
Organización y Estructura del Computador II -OyECII
Sistema de Memoria
2-27
b) .- Post-Escritura:
Con esta técnica, las actualizaciones se hacen sólo en cache, cuando tiene lugar una
actualización, se activa un bit ACTUALIZAR asociado a la línea. Después cuando el bloque
es sustituido, es (post)escrito en memoria principal sí y sólo sí el bit ACTUALIZAR esta
activo.
Desventaja
Los módulos de E/S acceden a la cache en vez de a memoria principal, lo que origina
cuello de botella en cache.
c) .- Coherencia de Cache
Entre las posibles aproximaciones a la coherencia de cache se incluyen:
Vigilancia del Bus en escritura inmediata
Cada controlador de cache monitoriza las líneas de dirección para detectar operaciones e
escritura en memoria por parte de otros maestros del bus. Si otro maestro escribe en una
posición de memoria compartida que también reside en la memoria cache, el controlador de
cache invalida el elemento de la cache. Esta estrategia depende del uso de una política de
escritura inmediata por parte de todos los controladotes de cache.
Transparencia de Hardware
Se utiliza hardware adicional para asegurar que todas las actualizaciones de memoria
principal, vía cache, quedan reflejadas en todas las cache. Así, si un procesador modifica
una palabra de su cache, esta actualización se escribe en memoria principal, además de
manera similar se actualizan todas las palabras coincidentes de otras cache.
Memoria Excluida de Cache
Sólo una porción de memoria principal se comparte por más de un procesador, y ésta se
diseña como no transferible a cache. En un sistema de este tipo, todos los accesos a la
memoria compartida son fallos de cache, porque la memoria compartida nunca se copia en
la cache. La memoria excluida de cache puede ser identificada utilizando lógica de selección
de chip o bits de direcciones altas.
La coherencia de cache es un campo activo de investigación, y es probable que se
desarrollen en lo próximos años formas más sencillas y efectivas de asegurar la coherencia.
Organización y Estructura del Computador II – ER, JL
2-28
Sistema de Memoria
d) .- Cuestiones en las escrituras
Organización y Estructura del Computador II -OyECII
Sistema de Memoria
2-29
2.5.5.- Tamaño de Bloque
Bloques más grandes reducen el número de bloques que caben en la cache. Dado que
cada bloque captado se escribe sobre contenidos anteriores de la cache, un número
reducido de bloques da lugar a que se sobreescriba sobre datos pocos después de haber
sido captado.
A medida que un bloque se hace más grande, cada palabra adicional esta más lejos de la
requerida, y por tanto es más improbable que sea necesaria a corto plazo.
2.5.6.- Número de Cache
a) .- Cache de uno o dos Niveles
La cache de un nivel significa tener una cache en el chip del procesador, a esto se le
denomina cache “on-chip”. En la cache de dos niveles se tienen dos cache una “on-chip”,
siendo esta el nivel uno y otra externa al procesador la que define el segundo nivel.
La razón por la cual se agrega otra cache es la siguiente: si el procesador pide un dato que no
esta en cache, entonces se tiene que acceder a la memoria DRAM o ROM a través de bus, lo
cual incrementa el tiempo de espera. En cambio si tenemos una cache de dos niveles, si no esta
en la cache de nivel uno, entonces con frecuencia la información que falta se puede recuperar de
la cache de segundo nivel fácilmente, debido a que la cache de segundo nivel usa SRAM lo que
permite que el acceso sea más rápido.
b) .- Cache unificada y partida
La cache unificada almacena tanto datos como instrucciones.
La cache partida separa los datos de las instrucciones, es decir tenemos una cache para
almacenar datos y otra para almacenar instrucciones.
Ventajas y Desventajas:
1. Par aun tamaño dado de cache, una unificada tiene una tasa de aciertos mayor que
una partida.
Ya que nivela automáticamente la carga entre captación de instrucciones y de datos.
2. En la cache unificada sólo se necesita diseñar e implementar una cache.
3. En la cache compartida no existe disputa entre el pre-cargador de instrucciones y la
unidad de ejecución. En la unificada se degradan las prestaciones.
Organización y Estructura del Computador II – ER, JL
2-30
Sistema de Memoria
2.5.7.- Impacto en el desempeño de los parámetros de la caché
Organización y Estructura del Computador II -OyECII
Sistema de Memoria
2-31
Organización y Estructura del Computador II – ER, JL
2-32
Sistema de Memoria
2.6.- Memoria Virtual
2.6.1.- Conceptos Básicos
La memoria virtual es una técnica para proporcionar la simulación de un espacio de
memoria mucho mayor que la memoria física de una máquina. Esta "ilusión" permite que los
programas se hagan sin tener en cuenta el tamaño exacto de la memoria física.
La ilusión de la memoria virtual está soportada por el mecanismo de traducción de
memoria, junto con una gran cantidad de almacenamiento rápido en disco duro. Así en
cualquier momento el espacio de direcciones virtual hace un seguimiento de tal forma que
una pequeña parte de él, está en memoria real y el resto almacenado en el disco, y puede
ser referenciado fácilmente.
Debido a que sólo la parte de memoria virtual que está almacenada en la memoria
principal, es accesible a la CPU, según un programa va ejecutándose, la proximidad de
referencias a memoria cambia, necesitando que algunas partes de la memoria virtual se
traigan a la memoria principal desde el disco, mientras que otras ya ejecutadas, se pueden
volver a depositar en el disco (archivos de paginación).
La memoria virtual ha llegado a ser un componente esencial de la mayoría de los S.O
actuales. Y como en un instante dado, en la memoria sólo se tienen unos pocos fragmentos
de un proceso dado, se pueden mantener más procesos en la memoria. Es más, se ahorra
tiempo, porque los fragmentos que no se usan no se cargan ni se descargan de la memoria.
Sin embargo, el S.O debe saber cómo gestionar este esquema.
La memoria virtual también simplifica la carga del programa para su ejecución llamado
reubicación, este procedimiento permite que el mismo programa se ejecute en cualquier
posición de la memoria física.
a) .- Hiperpaginación
En un estado estable, prácticamente toda la memoria principal estará ocupada con
fragmentos de procesos, por lo que el procesador y el S.O tendrán acceso directo a la
mayor cantidad de procesos posibles, y cuando el S.O traiga a la memoria un fragmento,
deberá expulsar otro. Si expulsa un fragmento justo antes de ser usado, tendrá que traer de
nuevo el fragmento de manera casi inmediata. Demasiados intercambios de fragmentos
conducen a lo que se conoce como hiperpaginación: donde el procesador consume más
tiempo intercambiando fragmentos que ejecutando instrucciones de usuario. Para evitarlo el
S.O intenta adivinar, en función de la historia reciente, qué fragmentos se usarán con menor
probabilidad en un futuro próximo.
b) .- Principio de Localidad
Los argumentos anteriores se basan en el principio de cercanía o principio de localidad
que afirma que las referencias a los datos y el programa dentro de un proceso tienden a
agruparse. Por lo tanto, es válida la suposición de que, durante cortos períodos de tiempo,
se necesitarán sólo unos pocos fragmentos de un proceso.
Organización y Estructura del Computador II -OyECII
Sistema de Memoria
2-33
Una manera de confirmar el principio de cercanía es considerar el rendimiento de un
proceso en un entorno de memoria virtual.
El principio de cercanía sugiere que los esquemas de memoria virtual pueden funcionar.
Para que la memoria virtual sea práctica y efectiva, se necesitan dos ingredientes. Primero,
tiene que existir un soporte de hardware y, en segundo lugar, el S.O debe incluir un software
para gestionar el movimiento de páginas o segmentos entre memoria secundaria y memoria
principal.
Justo después de obtener la dirección física y antes de consultar el dato en memoria
principal se busca en memoria-cache, si esta entre los datos recientemente usados la
búsqueda tendrá éxito, pero si falla, la memoria virtual consulta memoria principal , ó, en el
peor de los casos se consulta de disco (swapping).
2.6.2.- Direccionamiento físico y Virtual
Organización y Estructura del Computador II – ER, JL
2-34
Sistema de Memoria
2.6.3.- Espacio de direcciones
Organización y Estructura del Computador II -OyECII
Sistema de Memoria
2-35
2.6.4.- Memoria Virtual La memoria virtual como una herramienta
para realizar caching
Organización y Estructura del Computador II – ER, JL
2-36
Sistema de Memoria
Organización y Estructura del Computador II -OyECII
Sistema de Memoria
2-37
Organización y Estructura del Computador II – ER, JL
2-38
Sistema de Memoria
Organización y Estructura del Computador II -OyECII
Sistema de Memoria
2-39
Organización y Estructura del Computador II – ER, JL
2-40
Sistema de Memoria
Organización y Estructura del Computador II -OyECII
Sistema de Memoria
2.6.5.- La memoria virtual
administración de memoria
2-41
como
una
herramienta
para
la
Organización y Estructura del Computador II – ER, JL
2-42
Sistema de Memoria
Organización y Estructura del Computador II -OyECII
Sistema de Memoria
2-43
2.6.6.- La memoria virtual como una herramienta para la protección
de memoria
Organización y Estructura del Computador II – ER, JL
2-44
Sistema de Memoria
2.6.7.- Traducción de direcciones
Organización y Estructura del Computador II -OyECII
Sistema de Memoria
2-45
Organización y Estructura del Computador II – ER, JL
2-46
Sistema de Memoria
Organización y Estructura del Computador II -OyECII
Sistema de Memoria
2-47
Organización y Estructura del Computador II – ER, JL
Descargar