memoria - departamento de electrónicaprofesores.elo.utfsm.cl/.../paralelo2/c13_memoria.pdf ·...
TRANSCRIPT
1
Memoria
2
Memoria
Organización de memorias estáticas.
3
Memoria
En memoria físicas con bus de datos sea bidireccional.
4
Memoria
Decodificación en dos niveles.
5
Memoria Caché
Necesidad de cantidades ilimitadas de memoria rápida.
Crear la ilusión de una gran memoria a la que podamos acceder tan rápidamente como a una memoria muy pequeña.
6
Memoria Caché
Principio de localidadLos programas acceden a una parte
relativamente pequeña de su espacio de direcciones en cualquier instante de tiempo.
Dos tipos de localidad: Localidad Temporal Localidad Espacial
7
Memoria Caché
Principio de localidadLocalidad Temporal (localidad en el tiempo)
Si un elemento es referenciado, volverá a ser referenciado pronto.
Localidad Espacial (localidad en el espacio) Si un elemento es referenciado los elementos
cuyas direcciones están próximas tenderán a ser referenciados pronto.
8
Memoria Caché
Principio de localidadEn los programas la localidad surge de
estructuras sencillas y naturales.Por ejemplo:
Bucles localidad temporal Instrucciones que se acceden en forma secuencial localidad espacial
Acceso a los datos, elementos de un arreglo.
9
Memoria Caché
Jerarquía de Memoria.Consta de múltiples niveles de memoria con
diferentes velocidades y tamaños.Memorias rápidas son más caras y pequeñas.La memoria principal se implementa a partir
de memorias más lentas.Los niveles más próximos a la CPU (cachés)
utilizan memorias más pequeñas y rápidas.
10
Memoria Caché
Jerarquía de Memoria.Debido a las diferencias de costo y tiempo de
acceso, es ventajoso construir la memoria como una jerarquía de niveles.
La memoria más rápida cerca del procesador y la más lenta debajo de las más rápida.
ilusión de una memoria tan grande como la mayor, pero con tiempo de acceso igual a la memoria más rápida.
11
Memoria Caché
Jerarquía de Memoria.
CPU
Memoria
Memoria
Memoria
Más rápidaMás pequeñaMayor costo
Más lentaMás GrandeMenor costo
Estructura Básica
12
Memoria Caché
Jerarquía de Memoria.Una jerarquía de memoria puede estar
formada múltiples niveles, pero los datos e copian cada vez solamente entre dos niveles adyacentes.
La unidad mínima de información se denomina bloque, se transfiere un bloque completo cuando se copia algo entre niveles.
13
Memoria Caché
Cache de mapeo directo.(Tamaño de bloque igual a uno)
Cada palabra puede estar exactamente en una posición de la caché.
Se asigna la posición de la caché en base a la dirección que tiene la palabra en memoria.
Cada posición de la memoria le corresponde exactamente una posición en la caché.
14
Memoria Caché
Cache de mapeo directo.(Tamaño de bloque igual a uno)
Para saber si el dato de la caché corresponde a la palabra solicitada, se añade un conjunto de etiquetas a la caché.
Para reconocer si un bloque de caché no tiene información válida, es necesario añadir un bit de validez.
15
Memoria Caché
Cache de mapeo directo.
16
Memoria Caché
Cache de mapeo directo.(Tamaño de bloque igual a una potencia de dos)
Para aprovechar la localidad espacial el bloque de la cache contiene varias palabras adyacentes(una potencia de dos).
Los bits dedicados a la administración de la cache(válido, marca) disminuyen al aumentar el tamaño del bloque.
17
Memoria Caché
Cache de mapeo directo.
18
Memoria Caché
Caché directa y con bloque de una palabra Aciertos y fallos son simples
Caché con un tamaño de bloque mayor de una palabra. Hace disminuir la taza de fallos. Mejora la eficiencia de la caché. Reduce cantidad de memoria para las etiquetas.
19
Memoria Caché
Tratamiento de fallosLa unidad de control debe detectar los fallosProcesarlos y buscar el dato en memoria.
Fallos de una instrucción en un camino de datos multiciclo o segmentado.Pasos que se realizan en un fallo de
instrucción de la caché:
20
Memoria Caché
Tratamiento de fallos1. Calcular valor de PC-42. Indicar a memoria principal que realice una lectura y
esperar que la memoria complete su acceso.3. Escribir en la entrada de la caché
Dato procedente de memoria en la porción del dato de entrada.
Escribir bits superiores de dirección en el campo etiqueta. Bit de validez a 1.
1. Reiniciar la ejecución d la instrucción
21
Memoria Caché
Tratamiento de fallos El procesamiento de un fallo genera una detención. Incrementar el tamaño del bloque mejora el
rendimiento. La tasa e fallos cae cuando aumentamos el tamaño
del bloque. La tasa de fallos puede aumentar si el tamaño del
bloque se hace muy grande comparado con el tamaño de la caché.
22
Memoria Caché
Caché asociativa. En una caché asociativa por conjuntos hay un
número fijo de posiciones (mínima dos) donde puede ubicarse cada bloque.
Una caché asociativa por conjuntos con n posiciones para un bloque se denomina una caché asociativa por conjuntos de n vías.
23
Memoria Caché
Caché asociativa.Una caché asociativa por conjuntos de n vías
consta de una serie de conjuntos, cada uno de los cuales consta de n bloques.
Cada bloque de la memoria se corresponde a un único conjunto en la caché dada por el campo índice, y un bloque puede ser sustituido en cualquier elemento de ese conjunto.
24
Memoria Caché
Caché asociativa.En una caché asociativa por conjuntos, el
conjunto que contiene un bloque está dado por:
(Número de bloque) módulo (número de conjuntos en la caché)
25
Memoria Caché
Caché asociativa.Para encontrar un bloqueTres partes de una dirección en una caché
asociativa por conjuntos o correspondencia directa.
Etiqueta ÍndiceDesplazamiento
bloque
26
Memoria Caché
Caché asociativa.Cada bloque de la caché lleva una etiqueta
que indica la dirección del bloque.La etiqueta de cada bloque de la caché que
puede contener la información deseada es comprobada para ver si corresponde a la dirección del bloque de la CPU.
27
Memoria Caché
Caché asociativa.
28
Memoria Caché
Caché asociativaCaché asociativa por conjuntos de cuatro vías
se requiere cuatro comparadores y un multiplexor.
29
Memoria Caché
Rendimiento caché
Tiempo de CPU = (ciclos de reloj de ejecución CPU + ciclos de reloj de detención memoria) x Duración ciclo de reloj
Ciclo de reloj de detención-memoria = ciclos de detención de lectura + ciclo de detención de escritura
30
Memoria Caché
Rendimiento cachéCiclos de detención de lectura =
(lecturas/programa) x (tasa de fallos de lectura) x (penalización de fallos de lectura)
Ciclos de detención de escritura = (Escrituras/Programa) x ( tasa de fallos de escritura) x ( penalización fallos de escritura) + detenciones del buffer de escritura
31
Memoria Caché
Rendimiento caché
Si se considera que penalización por fallos de escritura y lectura son las mismas y detenciones del buffer son despreciables.
32
Memoria Caché
Rendimiento cachéCiclos de reloj detención-memoria = (acceso
memoria/programa) x (tasa de fallos) x (penalización de fallos)
Ciclos de reloj detención-memoria = (instrucciones/programa) x (fallos/instrucciones) x (penalización fallos)
33
Memoria Virtual
La memoria principal actúa como una cache para el almacenamiento secundario en discos magnéticos.
Se desea disponer de un ambiente eficiente y seguro para compartir la memoria entre diversos programas y disponer de una memoria mayor que la física para la ejecución de programas y procesamiento de los datos.
34
Memoria Virtual
Esto puede lograrse ya que si se tienen varios programas en ejecución, éstos sólo usan (en un cierto intervalo de tiempo) una pequeña parte de la memoria que requieren, a pesar de que la suma de los requerimientos totales de memoria, de todos ellos, puedan exceder la memoria física disponible.
El sistema operativo debe permitir a los programas compartir la memoria y garantizar que cada programa no invada el espacio que ocupan los otros.
35
Memoria Virtual
Además las direcciones físicas que serán asignadas a los segmentos activos de los programas pueden ir cambiando en el tiempo; para permitir esta forma de emplear la memoria, cada programa, al ser compilado, emplea un espacio propio de direcciones.
La memoria virtual es responsable de traducir las direcciones del programa a direcciones físicas.
36
Memoria Virtual
Permite que el espacio de direcciones del programa sea mayor que el espacio de direcciones físico.
Se puede considerar que el programa compilado reside en disco, y que sólo parte de esas direcciones del programa están mapeadas en direcciones físicas.
Por esta razón un programa podría ser tan grande como el espacio en disco que se le permita ocupar (lo cual podría ser mucho mayor que la memoria física).
Esta "ilusión" de una memoria, prácticamente ilimitada, la provee el sistema de memoria virtual.
37
Memoria Virtual
La organización de memoria virtual y memoria cache es similar.
Pero, por razones históricas se emplea el concepto de página en lugar de bloque.
La dirección de las instrucciones y datos de un programa se denominan direcciones virtuales, las cuales son traducidas a direcciones físicas.
38
Memoria Virtual
Se requiere un hardware dedicado y segmentos del sistema operativo para efectuar eficientemente el mapeo de páginas virtuales a páginas físicas.
Para esto una dirección está dividida en campos: el número de página y la posición dentro de la página.
El ancho del campo para el offset dentro de la página define el tamaño de ésta, y toma el mismo valor para la dirección virtual y física.
Obviamente los bits dedicados al número de página en una dirección virtual son mayores que los de las direcciones físicas.
39
Memoria Virtual
Tabla de páginasPara lograr la completa asociatividad se
emplea una Tabla de Páginas residente en memoria, que tiene: como índice el número de página virtual y como contenido el número de página física, además de un bit para indicar si la página está o
no presente en la memoria.
40
Memoria Virtual
Tabla de páginas
41
Memoria Virtual
Tabla de páginas Cada programa tiene su propia tabla de páginas, y se
dispone un registro en el procesador para apuntar a la tabla de página activa.
Un programa en ejecución, se denomina proceso, y requiere una tabla de página y el valor de los registros (adicionalmente información sobre prioridad de ejecución, estado del proceso, archivos que emplea, etc.), el sistema operativo es responsable de asignar memoria física y actualizar la tablas de página de tal modo que los diferentes procesos funcionen con sus propios espacios (es decir los programas sólo pueden leer y escribir las porciones de memoria principal que tienen asignadas).
42
Memoria Virtual
Tabla de páginas El sistema operativo también es responsable de ir
activando, con cierta política de itineración los diferentes procesos, de tal modo que sólo uno esté activo durante cierto intervalo de tiempo, para esto basta que mantenga información del estado de los diferentes procesos.
Específicamente para activar el espacio de direcciones basta actualizar el registro que apunta a la tabla de páginas del proceso.
43
Memoria Virtual
Tabla de páginas En caso de producirse una falla de página, se genera
excepción. El sistema operativo debe:
encontrar la página en el disco y decidir dónde colocarla en la memoria principal.
Para facilitar esta tarea cuando se crea un proceso se almacena en una zona del disco todas las páginas de un proceso y a la vez una estructura de datos que asocie la página virtual con la dirección física del disco donde ésta se encuentra.
Esta estructura puede ser la misma tabla de páginas del proceso.