memoria cache

46
SISTEMA DE MEMORIA 1. INTRODUCCION La memoria es un bloque fundamental del computador, cuya misión consiste en almacenar los datos y las instrucciones. La memoria principal, es el órgano que almacena los datos e instrucciones de los programas en ejecución. A veces la memoria principal no tiene la suficiente capacidad para contener todos los datos e instrucciones, en cuyo caso se precisan otras memorias auxiliares o secundarias, que funcionan como periféricos del sistema y cuya información se traspasa a la memoria principal cuando se necesita. La memoria solo puede realizar dos operaciones básicas: lectura y escritura. En la lectura, el dispositivo de memoria debe recibir una dirección de la posición de la que se quiere extraer la información depositada previamente. En la escritura, además de la dirección, se debe suministrar la información que se desea grabar. 1.1. EVOLUCION DE LAS MEMORIAS En las calculadoras de la década de los 30 se emplean tarjetas perforadas como memorias. La dirección de las posiciones quedaba determinada por la posición de ruedas dentadas. Luego se emplearon relés electromagnéticos. El computador ENIAC utilizaba, en 1946, válvulas electrónicas de vacío para construir sus biestables que actuaban como punto de memoria. Además, tenía una ROM de 4 bits construida a base de resistencias. Al comienzo de la década de los 50, se usaron las líneas de retardo de mercurio con 1 Kbit por línea, como memoria. Igualmente se empleó el tubo de Williams, que tenia una capacidad de 1200 bits y consistía en un tubo de rayos catódicos con memoria. En UNIVAC I introdujo en 1951 la primera unidad comercial de banda magnética, que tenia una capacidad de 1,44 Mbit y una velocidad de 100 pulgadas/s.

Upload: julie-castillo

Post on 07-Jul-2016

219 views

Category:

Documents


0 download

DESCRIPTION

Memorias

TRANSCRIPT

Page 1: Memoria Cache

SISTEMA DE MEMORIA

1. INTRODUCCION

La memoria es un bloque fundamental del computador, cuya misión consiste en almacenar los datos y las instrucciones.

La memoria principal, es el órgano que almacena los datos e instrucciones de los programas en ejecución.

A veces la memoria principal no tiene la suficiente capacidad para contener todos los datos e instrucciones, en cuyo caso se precisan otras memorias auxiliares o secundarias,

que funcionan como periféricos del sistema y cuya información se traspasa a la memoria principal cuando se necesita.

La memoria solo puede realizar dos operaciones básicas: lectura y escritura. En la lectura, el dispositivo de memoria debe recibir una dirección de la posición de la que

se quiere extraer la información depositada previamente. En la escritura, además de la dirección, se debe suministrar la información que se desea

grabar.

1.1. EVOLUCION DE LAS MEMORIAS

En las calculadoras de la década de los 30 se emplean tarjetas perforadas como memorias. La dirección de las posiciones quedaba determinada por la posición de ruedas dentadas. Luego se emplearon relés electromagnéticos.

El computador ENIAC utilizaba, en 1946, válvulas electrónicas de vacío para construir sus biestables que actuaban como punto de memoria. Además, tenía una ROM de 4 bits construida a base de resistencias.

Al comienzo de la década de los 50, se usaron las líneas de retardo de mercurio con 1 Kbit por línea, como memoria. Igualmente se empleó el tubo de Williams, que tenia una capacidad de 1200 bits y consistía en un tubo de rayos catódicos con memoria.

En UNIVAC I introdujo en 1951 la primera unidad comercial de banda magnética, que tenia una capacidad de 1,44 Mbit y una velocidad de 100 pulgadas/s.

El primer computador comercial que uso memoria principal al tambor magnético fue el IBM 650 en 1954. Dicho tambor giraba a 12500 r.p.m y tenía una capacidad de 120 Kbits.

En 1953, el Mit dispuso de la primera memoria operativa de ferritas, que fue muy popular hasta mediados de los años 70.

Fue IBM, en 1968, quien diseño la primera memoria comercial de semiconductores. Tenía una capacidad de 64 bits.

Page 2: Memoria Cache

Fig. Memoria interna de un Computador

2. OBJETIVOS

Conocer las características generales de los diferentes tipos de memoria cache que aparecen en un computador digital.

Analizar las alternativas de diseño que determinan el comportamiento de una cache,resaltando la función de correspondencia, las políticas de búsqueda y sustitución debloques, y el mantenimiento de la coherencia con memoria principal en las escrituras.

Page 3: Memoria Cache

Estudiar los factores que más influencia tienen en el rendimiento de una cache junto a las alternativas de diseño hardware y software que permiten optimizar dichos factores.

Analizar el sistema de memoria cache de algunos procesadores, especialmente el del Pentium 4.

3. MEMORIA CACHE

Debido a la gran velocidad alcanzada por los procesadores, la Memoria Principal delcomputador no es lo suficientemente rápida para almacenar y transmitir los datos que elprocesador necesita, por lo que tendría que esperar a que la memoria estuviera disponible yel trabajo se atrasaría. Para evitarlo, se usa una memoria muy rápida, estratégicamentesituada entre el micro y la RAM: la memoria cache.

La velocidad de la memoria se ha distanciado progresivamente de la velocidad de losprocesadores.

En la figura siguiente se muestran las gráficas de la evolución experimentada por el rendimiento de las CPUs y las memoria DRAM (soporte de la memoria principal de los computadores actuales) en los últimos años. Las curvas muestran que el rendimiento de la CPU aumento un 35% anual desde 1980 hasta 1987; y un 55% anual a partir de ese año. En cambio la memoria ha mantenido un crecimiento sostenido del 7% anual desde 1980 hasta la fecha. Esto significa que si se mantiene la tendencia, el diferencial de rendimiento no solo se mantendrá sino que aumentara en el futuro. Para equilibrar esta diferencia se viene utilizando una solución arquitectónica: la memoria cache

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 necesitara el procesador en la próxima operación que realice, por lo tanto ahorrara mucho tiempo del tránsito y acceso a la lenta memoria RAM; esta es la segunda utilidad de la cache. Esta memoria es unas 5 o 6 veces más rápida que la RAM

Page 4: Memoria Cache

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.

3.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, cache de nivel 1 o simplemente cache L1. La segunda se conoce también como cache secundaria, cache de nivel 2 o cache L2.

Desde el punto de vista funcional, existen caches específicas de algunos dispositivos, porejemplo, de disco. También se distingue entre cache de lectura y de escritura.

a) Cache interna

Es una innovación relativamente reciente; en realidad son dos, cada una con una misiónespecifica: Una para datos y otra para instrucciones. Está incluida en el procesador juntocon 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 losprimeros Pentium 8 KB en cada una de las caches internas). Como puede suponerse, suvelocidad de acceso es comparable a la de los registros, es decir, centenares de veces másrápida que la RAM.

b) Cache externa

Es más antigua que la interna, dado que hasta esta fecha "relativamente" reciente, estasúltimas eran impracticables. Es una memoria de acceso rápido incluida en la placa baseque dispone de su propio bus y controlador independiente que intercepta las llamadas amemoria antes que sean enviadas a la RAM (Buses locales).

La cache externa típica es un banco SRAM ("Static Random Access Memory") de entre128 y 256 KB. Esta memoria es considerablemente más rápida que la DRAM ("DynamicRandom Access Memory") convencional, aunque también mucho más cara [5] (tenga encuenta que un aumento de tamaño sobre los valores anteriores no incrementa

Page 5: Memoria Cache

proporcionalmente la eficacia de la memoria cache). Actualmente (2004) la tendencia esincluir esta cache en el procesador. Los tamaños típicos oscilan entre 256 KB y 1 MB. CJ En 1.997, con la introducción del procesador Pentium II, Intel abandono el denominado zócalo 1utilizado hasta entonces en sus procesadores, en favor del denominado Slot-1. La razón argüida era precisamente la inclusión de la cache L2 en la capsula del procesador.

c) Cache de disco

Además de las anteriores, que son de propósito general, existe una cache de funcionalidad especifica que se aloja en memoria RAM estándar; es la cache de disco. Destinada a contener los datos de disco que probablemente sean necesitados en un futuro próximo y los que deben ser escritos. Si la información requerida está en cache, 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).

El funcionamiento de la cache de disco se basa en dos esquemas de operación. La lecturaadelantada ("Read-ahead") y la escritura retrasada ("Write-behind"). La primera consiste enanticipar lo que se necesitara de forma inmediata y traerlo a la cache. Por su parte, la escrituraretrasada consiste en mantener los datos en cache hasta que se producen momentos dedesocupación del sistema de disco. En este caso la cache actúa como memoria tampón o"buffer" intermedio, y no se obliga al subsistema a realizar físicamente ninguna escritura, con loque las cabezas quedan libres para nuevas lecturas.

Puesto que los caches de disco de escritura retrasada mantienen los datos en memoria volátildespué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 perdidas de los datos alojados en lacache en ese momento (es esta una de las razones por las que los sistemas Windows y Linuxexigen un proceso especial de apagado, que a veces tarda unos segundos, en los queobservamos una intensa actividad del sistema de disco).

Page 6: Memoria Cache

El tiempo de acceso al banco de registros debe ser cercano al periodo de reloj original

Fig. Temporizacion de la Memoria Cache

Page 7: Memoria Cache

3.2. JERARQUIA DE LA MEMORIA

Junto con la expansión del espacio de memoria y el aumento de velocidad de los procesadores aparece el problema de performance de la memoria. Las memorias grandes de bajo consumo (DRAM semiconductoras, capacitores) tienen desempeños inferiores a las memorias basadas en transistores (SRAM).

VELOCIDAD - COSTO - VOLUMEN – POTENCIA

A medida que se va de arriba hacia abajo, sucede lo siguiente:

• Disminuye el coste por bit

• Aumenta la capacidad

• Aumenta el tiempo de acceso

• Disminuye la frecuencia de acceso a la memoria desde la CPU

La clave de la solución está en este último punto: la decreciente frecuencia de acceso. Estosimplemente quiere decir que no se accede a todos los datos con la misma frecuencia; obviamentese accede más a los datos del programa en ejecución que a los de uno que no se ejecuta desdehace un año; y de igual manera, en un momento dado se accede más a los datos de una expresiónque se está evaluando en ese preciso instante que a otros datos del programa.

Page 8: Memoria Cache

3.3. PRINCIPIOS BÁSICOS DE LAS MEMORIAS CACHE

El objetivo de la memoria caché es lograr que la velocidad de la memoria sea lo más rápida posible, consiguiendo al mismo tiempo un tamaño grande al precio de memorias semiconductoras menos costosas.

La caché contiene una copia de partes de la memoria principal. Cuando el procesador intenta leer una palabra de memoria, se hace una comprobación para determinar si la palabra está en la caché. Si es así, se entrega dicha palabra al procesador. Si no, un bloque de memoria principal, consistente en un cierto número de palabras, se transfiere a la caché y después la palabra es entregada al procesador. Debido al fenómeno de localidad de las referencias, cuando un bloque de datos es capturado por la caché para satisfacer una referencia a memoria simple, es probable que se hagan referencias futuras a la misma posición de memoria o a otras palabras del mismo bloque.

La memoria principal consta de hasta 2npalabra direccionables, teniendo cada palabra una única dirección de n bits. Esta memoria la consideramos dividida en un número de bloques de longitud fija, de K palabras por bloque. Es decir, hay M = 2n/K bloques. La caché consta de C líneas. Cada línea contiene K palabras, más una etiqueta de unos cuantos bits; denominándose tamaño de línea al número de palabras que hay en la línea. El número de líneas es considerablemente menor que el número de bloques de memoria principal (C < < M). En todo momento, un subconjunto de los bloques de memoria reside en líneas de la caché. Si se lee una palabra de un bloque de memoria, dicho bloque es transferido a una de las líneas de la caché. Ya que hay más bloques que líneas, una línea dada no puede dedicarse unívoca y

Page 9: Memoria Cache

permanentemente a un bloque. Por consiguiente, cada línea incluye una etiqueta que identifica qué bloque particular almacena. La etiqueta es usualmente una porción de la dirección de memoria principal, como describiremos más adelante en esta sección.

Fig. Estructura memoria Cache

Para implementar el mecanismo de actualización de la caché con los datos con mayor probabilidad de ser refernciados se divide la memoria principal en bloques de un número de bytes (4,8,16 etc.) y la caché en marcos de bloque o líneas de igual tamaño. El bloque será, pues, la unidad de intercambio de información entre la memoria principal y la caché, mientras que entre la caché y la CPU sigue siendo la palabra. El directorio contiene la información de qué bloques de Mp se encuentran ubicados en Mc

Page 10: Memoria Cache

Fig. estructura memoria cache en la transferencia de datos

La caché conecta con el procesador mediante líneas de datos, de control y de direcciones. Las líneas de datos y de direcciones conectan también con buffers de datos y de direcciones que las comunican con un bus del sistema a través del cual se accede a la memoria principal. Cuando ocurre un acierto de caché, los buffers de datos y de direcciones se inhabilitan, y la comunicación tiene lugar solo entre procesador y caché, sin tráfico en el bus. Cuando ocurre un fallo de caché, la dirección deseada se carga en el bus del sistema y el dato es llevado, a través del buffer de datos, tanto a la caché como al procesador. En otras formas de organización, la caché se interpone físicamente entre el procesador y la memoria

Page 11: Memoria Cache

Fig. Diagrama de flujo de lectura de cache

Fig. Organización memoria cache

Page 12: Memoria Cache

Su dirección generada por CPU es igual a la dirección de una entrada cache, cuando tenemos un acierto de cache; el dato de entrada cache es buena.

3.4. FUNCIÓN DE CORRESPONDENCIA

Existen tres funciones de correspondencia para definir la posible ubicación de un bloque de memoria principal (Mp) en la memoria caché (Mc): directa, asociativa y asociativa por conjuntos. En el primer caso un bloque de Mp sólo puede ubicarse en una línea de la caché, aquella que coincide con el bloque cuando superponemos Mc sobre Mp respetando fronteras de Mc, es decir, sobre espacios de Mp que son múltiplos del tamaño de Mc. En la correspondencia asociativa un bloque puede ubicarse en cualquier línea de Mc. Finalmente, la correspondencia asociativa por conjuntos es un compromiso entre las dos anteriores.

a) Correspondencia Directa

Una Mc de correspondencia directa se puede implementar sobre una RAM con longitud de palabra suficiente para ubicar un bloque y los bits de etiqueta (directorio), tal como se muestra en la siguiente figura:

Si tag (gen por dirección) es igual

Page 13: Memoria Cache

a tag(entrada apuntada por índiceen cache) y el bit esta activo

tenemos ACIERTO DE CACHE

d corresponde a número de bytes en el bloque

indice corresponde a número de bloques en cache

tag es lo que resta de direción

En una operación de lectura se lee la palabra completa de la RAM, es decir, la línea y la etiqueta. Si la etiqueta leída coincide con la procedente de la dirección física, significa que la línea contiene la palabra de Mp referenciada por dicha dirección física: se produce un acierto de caché. En este caso con los w bits de palabra se selecciona la palabra referenciada dentro de la línea. Si no coinciden las etiquetas, significa que Mc no contiene el bloque de Mp al que pertenece la palabra referenciada, por lo que se produce un fallo de caché.

Es rápido y relativamente fácil de implementar. Se requiere exactamente un comparador, un multiplexor (dos en este diagrama, donde la etiqueta y los datos son separados, pero esto no es un requisito difícil en el diseño), y alguna lógica para seleccionar sólo el contenido línea de caché válida. El comparador es complejo debido a los requisitos de velocidad, pero sólo hay uno de ellos ahora. La complejidad real en este enfoque radica en los multiplexores. El número de transistores en un simple multiplexor crece con O (log N), donde N es el número de líneas de caché. El número total de transistores puede crecer lentamente con un tamaño de caché cada vez que hace esta solución muy atractiva. Pero tiene un inconveniente: sólo funciona bien si las direcciones utilizadas por el programa se distribuyen de manera uniforme con respecto a los bits utilizados para el mapeo directo. Si no lo son, y esto es generalmente el caso, algunas entradas de caché son muy usadas y por lo tanto desalojado varias veces mientras que otros apenas se utilizan en absoluto o se quedan vacíos.

Page 14: Memoria Cache

b) Correspondencia Asociativa

El directorio de una Mc de correspondencia asociativa se puede implementar con una memoria asociativa con tantas palabras como líneas tenga Mc. Las líneas se soportan sobre un array de memoria con longitud de palabra suficiente para ubicar un bloque.

¿Cómo encontramos un bloque de memoria en una memoria caché asociativa (con tamaño de bloque 1 palabra)?

Se divide el número de bloques de memoria por el número de conjuntos para obtener el índice en la caché.

Todas las etiquetas en el conjunto contra la etiqueta del bloque de memoria.

Si cualquier etiqueta coincide, un acierto se ha producido y la entrada de datos correspondiente contiene el bloque de memoria.

Si ninguna etiqueta coincide, se ha producido un fallo.

Para cada línea de caché se necesita un comparador para comparar la etiqueta de gran tamaño.

La letra junto a cada conexión indica la anchura en bits. Si no se da ninguno es una única línea de bits. Basándose en el resultado, el contenido de la línea de caché apropiada se selecciona y se pone a disposición. Esto requiere la fusión de tantos conjuntos de líneas de datos S. El número de transistores necesarios para implementar un único comparador es grande especialmente puesto que debe trabajar muy rápido. La única manera de ahorrar en el número de comparadores es reducir el número de ellos mediante la comparación de forma iterativa en las etiquetas.

Tal como se muestra en la siguiente figura

Page 15: Memoria Cache

La memoria asociativa contiene las direcciones de todos los bloques de Mp ubicados en cada momento en Mc. Opera realizando una comparación simultánea de su contenido con el campo de etiqueta de la dirección física.

c) Correspondencia Asociativa por Conjuntos

Una Mc de correspondencia asociativa por conjuntos de v conjuntos se puede implementar como k módulos de correspondencia directa en paralelo cada uno con v líneas. Los conjuntos lo formarían las líneas que ocupan idéntica posición en cada módulo.

Si dibujamos Mp dividida en zonas consecutivas de tamaño 32 KB para facilitar la correspondencia de los bloques de Mp y los marcos de bloque de Mc, podremos representar fácilmente parte de un posible contenido de Mc con correspondencia asociativa por conjuntos de dos vías en un instante determinado

Esto es similar a la caché de correlación directa. Pero en lugar de tener sólo un elemento por cada valor fijado en la memoria caché de un pequeño número de valores se almacena en caché para el mismo valor de ajuste. Las etiquetas para todos los miembros del conjunto se comparan en paralelo, que es similar al funcionamiento de la memoria caché totalmente asociativa.

El tiempo el tamaño de la memoria caché no está limitada por el número de comparadores que pueden ser implementados en paralelo. Si la caché crece es sólo el número de columnas que aumenta, no el número de filas. El número de filas sólo aumenta si se incrementa la asociatividad de la memoria caché. los procesadores de hoy en día están utilizando los niveles

Page 16: Memoria Cache

de asociatividad de hasta 16 para cachés L2 o superior. cachés L1 por lo general llegar a funcionar con 8

3.5. POLITICA DE SUSTITUCION

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 mas 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.

Si 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- Frecuentlv Used) Menos Frecuentemente Utilizado

Sustituye aquel bloque que ha experimentado menos referencias.

Se implementa asociando un contador a cada linea.

d) Aleatoria

Page 17: Memoria Cache

Esta técnica no se basa en el grado de utilizacion del bloque, consiste simplemente enescoger una línea al azar(aleatoria) entre las posibles candidatas.

3.6. POLITICA DE ESCRITURA

Antes de que pueda ser reemplazado un bloque que está en la cache, es necesario considerar siha 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

Todas las operaciones de escritura se realizan en Mc y Mp Inconveniente: genera un tráfico importante a Mp Solución: utilización de un buffer de escritura (alpha 21064)

b) Post-Escritura:

Las actualizaciones se hacen solo en Mc, 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 si y solo si el bit ACTUALIZAR está activo.

Los módulos de E/S acceden a la cache en vez de a memoria principal, lo que originacuello de botella en cache.

c) Asignación en escritura:

El bloque se ubica en Mc cuando ocurre el fallo de escritura y a continuación se opera como en un acierto de escritura.

4. MEMORIA ASOCIATIVA

En una memoria asociativa, una palabra de datos no se obtiene por suministrar una dirección que especifica la ubicación de la palabra de datos en memoria. En su lugar, un descriptor de identificación se proporciona a la memoria, la memoria es luego buscado hasta que se encuentre una coincidencia exacta entre la descriptor presentado y un descriptor asociado con una palabra de datos. Cuando se encuentra una coincidencia, la palabra de datos correspondiente se convierte en el deseado salida de la memoria. Un descriptor puede ser parte de cada dato de palabra oo los descriptores pueden se almacenados por separado . La mente humana es a menudo considerado de como una memoria asociativa .

Las memorias asociativas secuenciales de búsqueda son útiles en los niveles de aplicacion en, por información . Como un componente de hardware que debe ser diseñado en los sistemas de hardware más complejos , que son principalmente interesado en la memoria asociativa de

Page 18: Memoria Cache

búsqueda combinatoria . Consideramos el diseño de una memoria asociativa con la búsqueda combinatoria de 2n palabras , cada uno con m bits de datos.

La información puede ser almacenada en AA y AM partir de los vectores de entrada líneas AAIN y AMIN . La dirección en ambas matrices de una palabra de datos y descriptor pueden estar contenidos en el registro de n bits WRTADD . Los datos son para leerse de manera asociativa AM . AM corresponde al descriptor en AA , cualquiera , que coincide exactamente con el contenido del registro bits de r bits , DSCRPT , van a aparecer en el vector de AMOUT.

5. MEMORIA VIRTUAL

5.1. CONCEPTOS BASICOS

Page 19: Memoria Cache

La memoria virtual es una técnica para proporcionar la simulación de un espacio dememoria mucho mayor que la memoria física. Esta "ilusión" permite que losprogramas se hagan sin tener en cuenta el tamaño exacto de la memoria física.

La ilusión de la memoria virtual esta soportada por el mecanismo de traducción de la memoria, junto con una gran cantidad de almacenamiento rápido en disco duro. Así encualquier momento el espacio de direcciones virtual hace un seguimiento de tal forma queuna pequeña parte, este en memoria real y el resto almacenado en el disco, y puedeser referenciado fácilmente.

Debido a que solo la parte de memoria virtual que este almacenada en la memoriaprincipal, es accesible a la CPU, según un programa va ejecutándose, la proximidad dereferencias a memoria cambia, necesitando que algunas partes de la memoria virtual setraigan a la memoria principal desde el disco, mientras que otras ya ejecutadas, se puedenvolver 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.Oactuales. Y como en un instante dado, en la memoria solo se tienen unos pocos fragmentosde un proceso dado, se pueden mantener ciertos procesos en la memoria.

La memoria virtual también simplifica la carga del programa para su ejecución llamadoreubicación, este procedimiento permite que el mismo programa se ejecute en cualquierposición de la memoria física.

5.2. OBJETIVOS

Los programas suelen ser muy grandes y no caben enteros en memoria física.

En un sistema multiusuario/multitarea, varios programas comparten la misma CPU: es necesario que todos ellos están en memoria física al mismo tiempo, y obviamente, no caben.

5.3. FUNCIONAMIENTO

Page 20: Memoria Cache

La implementación de memoria virtual es realizada a través de la técnica de paginaciónbajo demanda. En la paginación bajo demanda los procesos residen en un dispositivo dedisco y son puestos en memoria principal cuando es necesario cargarlos para ejecutar.La carga del proceso en memoria no es total, sino que implementa un cargador“perezoso” (lazy swapper), que cargara las páginas según se vayan necesitando.

Utilizar un esquema de este tipo requiere el conocimiento de las páginas que estánactivas en memoria. Para ello se utiliza el valid-invalid bit, que consiste en agregar a latabla de páginas un nuevo campo (bit de validez), que indique para cada entrada, si lapágina se encuentra o no en memoria. A1 inicio, la tabla de páginas indicara queninguna página está en memoria.

Los  programas  suelen  tener  código  para  manejar  condiciones  de  error inusuales. Ya que estos errores raramente se producen en la práctica, este código casi nunca se ejecuta.

A veces, las tablas, listas o matrices se declaran con más tamaño del que luego realmente necesitan. Una matriz se puede declarar de 100 por 100 aunque raramente ocupe más de 10 por 10; o un ensamblador puede tener una tabla para albergar a 3000 símbolos, aunque la media de los programas no tengan más de 200.

La memoria virtual es una técnica que permite la ejecución de procesos que pueden no estar completamente en memoria principal.

La habilidad de poder ejecutar un programa que sólo está parcialmente en memoria principal acarrea los siguientes beneficios:

El tamaño de un programa no está limitado por la cantidad de memoria física disponible. Los usuarios escriben programas contando con un espacio de direcciones virtuales extremadamente grande.

Debido a que cada programa puede necesitar para ejecutarse menos memoria que  la  que ocupa  su  tamaño  total,  se  pueden  cargar  más  programas  en memoria para ejecutarlos al mismo tiempo, con la consiguiente mejora en el aprovechamiento de la CPU.

Ya que de cada programa solamente hay que cargar la parte necesaria en un momento  dado, a  la  hora  de  cargar  un  proceso  o  expulsarlo  a  disco,  se necesitan menos operaciones de E/S debidas al intercambio, por lo que se consigue una ejecución global más rápida.

Para  implementar  los  sistemas  de  memoria  virtual,  normalmente  se  utiliza  la paginación. También  se  puede implementar mediante   segmentación, como lo hace el sistema OS/2 de IBM, pero los algoritmos son bastante más complejos que los de la paginación, pues a diferencia de las páginas, los segmentos son de tamaño variable.

La siguiiente figura muestra: La direccion vrtual esta compuesta de direcciones fisicas del disco duro como de la

memoria RAM

Page 21: Memoria Cache

5.4. PAGINACION

En la gestión de memoria con intercambio, cuando había que pasar un proceso a ejecución, era necesario traer el proceso entero de disco a memoria principal.

Con memoria virtual hemos dicho que no se trae todo el proceso, sino que cuando se hace referencia a una dirección de memoria virtual cuya correspondiente memoria física reside en disco, se trae el contenido de disco a RAM.

¿Quiere esto decir que la unidad de intercambio de memoria es el byte? Si lo fuera, daría lugar a que continuamente se estuviesen generando operaciones de E/S, lo cual sería poco eficaz. Claramente, parece más conveniente utilizar bloques más grandes, para aprovechar de manera más eficiente cada operación de E/S.

Page 22: Memoria Cache

Tablas de páginas

Cada página tiene un número que se utiliza como índice en la tabla de páginas, lo que da por resultado el número del marco correspondiente a esa página virtual. Si el bit presente / ausente es 0, se provoca un señalamiento (trap) hacia el sistema operativo. Si el bit es 1, el número de marco que aparece en la tabla de páginas se copia en los bits de mayor orden del registro de salida, junto con el ajuste (offset) de 12 bits, el cual se copia sin modificaciones de la dirección virtual de entrada.

Juntos forman una dirección física de 15 bits. El registro de salida se coloca entonces en el bus de la memoria como la dirección en la memoria física.

Estructura de la tabla de paginas

Protección: Expresa los permisos de acceso del proceso. En caso de tener permiso para la operación de lectura/escritura que se va a realizar, se consulta el resto de los campos.

Bit de Presencia: Indica si la página está presente en memoria principal o no. Si se encuentra en RAM, también tienen sentido los siguientes campos.

Marco Ocupado: Si la página se encuentra en memoria principal, este campo expresa el marco que la contiene.

Modificada (Bit de ensuciada): Este campo indica si el contenido de la página ha sido modificado desde que se trajo de la memoria secundaria.

Referenciada: Este campo booleano se pone a cierto cada vez que se hace referencia a cualquier dirección de la página. Lo utiliza el sistema operativo para ayudar a los algoritmos de sustitución de páginas.

Características de la paginación

Page 23: Memoria Cache

El espacio de direcciones lógico de un proceso puede ser no contiguo.

Se divide la memoria física en bloques de tamaño fijo llamados marcos (frames).

Se divide la memoria en bloques de tamaño llamados páginas.

Se mantiene información en los marcos libres.

Para correr un programa de en páginas de tamaño, se necesitan encontrar n marcos y cargar el programa.

Se establece una tabla de páginas para trasladar las direcciones lógicas a físicas.

Se produce fragmentación interna.

Ventajas de la paginación

Es posible comenzar a ejecutar un programa, cargando solo una parte del mismo en memoria, y el resto se cargara bajo la solicitud.

No es necesario que las paginas estén contiguas en memoria, por lo que no se necesitan procesos de compactación cuando existen marcos de páginas libres dispersos en la memoria.

Es fácil controlar todas las páginas, ya que tienen el mismo tamaño.

El mecanismo de traducción de direcciones (DAT) permite separar los conceptos de espacio de direcciones y espacios de memoria. Todo el mecanismo es transparente al usuario.

Page 24: Memoria Cache

Desventajas de la paginación

El costo de hardware y software se incrementa, por la nueva información que debe manejarse y el mecanismo de traducción de direcciones necesario. Se consumen muchos más recursos de memoria, tiempo en el CPU para su implantación.

En estas máquinas hay que diferenciar, pues, entre el espacio de direcciones virtuales generado por la CPU y el espacio de direcciones físicas o reales existentes en memoria principal y determinado por el número de líneas del bus de direcciones. El espacio virtual se soporta sobre un disco con la ayuda de un mecanismo de traducción que genera la dirección física de memoria principal a partir de la virtual. En la siguiente figura hemos representado el mecanismo de traducción de direcciones virtuales (DV) a direcciones físicas (DF).

Fig. Traduccion de Memorias Virtuales a Memorias Fisicas

Tanto la memoria principal como la memoria del disco se dividen en páginas de igualtamaño. El número de páginas de la memoria virtual en general es mayor que el número depáginas disponibles de la memoria física. Por este motivo, en cada momento sólo las copias de un conjunto de páginas virtuales del programa residen en la memoria física. Este conjunto

Page 25: Memoria Cache

recibe el nombre de conjunto de trabajo o conjunto activo, y resulta relativamente estable a lo largo del tiempo, debido a la localidad referencial que manifiestan los programas. Esta es la clave del buen funcionamiento de la memoria virtual, al igual que ocurría con la memoria cache.

Los bits de una DV se consideran divididos en dos campos, el número de página virtual(NPV) los más significativos, y el desplazamiento dentro de la página (DP), los menos significativos.El número de bits del campo DP lo determina el tamaño de página (nº de bits de DP = log2 tamaño de página). El número de bits del campo NPV lo determina el número de páginas virtuales (nº debits de NPV = log2 nº de páginas virtuales). Los bits de una DF se consideran divididos también endos campos, el número de página física (NPF) los más significativos, y el desplazamiento dentro dela página (dp), los menos significativos. el número de bits del campo dp de una df es el mismoque el de una dv, puesto que las páginas tienen igual tamaño en mv y mf. el número de bits delcampo numero de pagina fisicas lo determina el número de páginas físicas de mf (nº de bits de npf = log2 nº de páginas físicas).

las dvs generadas por la cpu se traducen a dfs con la ayuda de una Tabla de Páginas(TP). Esta tabla contiene en principio tantas entradas como páginas existen en la MV, y la posiciónen la tabla de una entrada correspondiente a una página virtual concreta coincide con su NPV.Cada entrada contiene un primer campo de bits de control, de los que por el momento haremosreferencia tan sólo a uno, el bit de presencia (p). si este bit está activo (por ejemplo a 1) significaque la página virtual correspondiente a esa entrada está presente en la mf, y en este caso elsegundo campo de la entrada contiene el correspondiente numero de pagina fisicas. si el bit p está inactivo (por ejemplo a 0) significa que la correspondiente página virtual no está en la mf, sino en el disco. En este caso el segundo campo de la entrada apunta a la dirección del disco donde se encuentra la página virtual. como en un momento se pueden estar ejecutando más de un programa (multiprogramación o multiusuario) existirán más de una tp, una para cada programa (proceso) activo. por ello, el acceso a la tp se realiza con la ayuda de un registro base de la tabla de páginas asociado a cada programa.

Para traducir una dv en df se busca en la correspondiente entrada de la tp. si el bit p deesta entrada vale 1, se dice que ha ocurrido un acierto de página, y se lee el contenido del segundocampo que en los aciertos constituye el numero de pagina fisicas en la memoria principal. la df completa se obtiene concatenando los bits de numero de pagina fisicas con los de dp de la dv. si el bit p de la entrada de la tp vale 0, se dice que ha ocurrido un fallo de página, lo que significa que la página virtual donde se ubica la dv que se está traduciendo, no se encuentra en

Page 26: Memoria Cache

mf. en este caso el fallo de página se sirve buscado la página en el disco, ubicándola en MF y actualizando la correspondiente entrada de la TP.

5.4.1. TLB

Un TLB es una memoria caché de la tabla de páginas

Necesario porque de lo contrario cada referencia a la memoria en el programa requeriría dos referencias de memoria, que uno lea la tabla de páginas y que uno lea la palabra de memoria requerida.

En el diagrama :

El color verde es la transferencia más rápida. El color rojo es la transferencia más lenta (error de página). El color amarillo es la transferencia media (TLB, sin error de página). Realmente la tabla de páginas no apunta al bloque de disco para una

entrada no válida, pero el efecto es el mismo.

Page 27: Memoria Cache

TLB + Cache

Si se produce un acierto de TLB, el número de fotograma de la TLB junto con el desplazamiento de página da la dirección física. Una falta de TLB hace una excepción para recargar la TLB de la tabla de páginas, que la figura no muestra.

La dirección física se divide en un índice de etiqueta de la memoria caché y caché (además de un desplazamiento de dos bits que no se utiliza para las referencias de palabras byte).

Si la referencia es una escritura, sólo lo hacen sin comprobar si hay un acierto de caché Para una lectura, si la etiqueta situada en la entrada de caché especificado por el

índice coincide con la etiqueta de la dirección física, la palabra que se hace referencia se ha encontrado en el caché; es decir, que tenía una lectura golpeado.

Para un fallo de lectura, la entrada de caché especificado por el índice se obtiene de la memoria y los datos devueltos para satisfacer la solicitud.

Page 28: Memoria Cache

Fig. Organización entre direcciones de Cache y memoria virtual

Un registro de instrucciones de 32 bits y un contador de programa de 24 bits. Los bits menos significativos de cada 12 bits especifican la dirección de página, es decir, la dirección de una

palabra dentro de 212n páginas. Los próximos 12 bits en cada caso especifican un número de página en la memoria virtual. Los 24 bits son la dirección virtual. Si una página en particular de la virtual memoria se almacena en la memoria RAM , puede estar situado por referencia en una pequeña memoria asociativa de sólo lectura AROM . Cuando una página de memoria virtual está conectado al bus DSCRPTBUS, la salida de la memoria asociativa es la correspondiente a 6 bit RAM

Page 29: Memoria Cache

Fig. Organización de La RAM para una memoria virtual

5.4.2. INTERACCION MEMORIA VIRTUAL Y MEMORIA CACHE

La dirección virtual debe pasar primero por el TLB antes de que la dirección física pueda acceder a la cache, lo que alarga el tiempo de acierto. Este mecanismo se puede acelerar utilizando dos alternativas: a) Acceder en paralelo (simultáneamente) al TLB para buscar el NUMERO DE PAGINA FISICAS y al directorio de la cache para buscar el bloque, y b) Utilizar caches con direcciones virtuales

La primera alternativa requiere que la longitud del campo de desplazamiento DP de la DV(igual al DP de la DF) sea mayor o igual que los campos de conjunto y palabra del formato de laDF para la cache, tal como se muestra en la siguiente figura. de esta forma será posible realizar enparalelo la búsqueda en el tlb del numero de pagina fisicas que se corresponde con la etiqueta, y en el directorio de la cache el nº de bloque (línea), que junto a la palabra dentro del bloque, se corresponde con el dp, del que se dispone desde el instante que se genera la dv, pues no requiere traducción.

Page 30: Memoria Cache

Fig. Interaccion memoria virtual y memoria cache

Page 31: Memoria Cache

5.5. SEGMENTACIÓN

Es un esquema de manejo de memoria mediante el cual la estructura del programa refleja su división lógica, llevándose a cabo una agrupación lógica de la información en bloques de tamaño variable denominados segmentos. Cada uno de ellos tienen información lógica del programa: subrutina, arreglo, etc. Luego, cada espacio de direcciones de programa consiste de una colección de segmentos, que generalmente reflejan la división lógica del programa.

Ventajas de la segmentación

El esquema de segmentación ofrece las siguientes ventajas:

El programador puede conocer las unidades lógicas de su programa, dándoles un tratamiento particular.

Es posible compilar módulos separados como segmentos el enlace entre los segmentos puede suponer hasta tanto se haga una referencia entre segmentos.

Debido a que es posible separar los módulos, se hace más fácil la modificación de los mismos. Cambios dentro de un módulo no afecta al resto de los módulos.

Es fácil el compartir segmentos.

Es posible que los segmentos crezcan dinámicamente según las necesidades del programa en ejecución.

Existe la posibilidad de definir segmentos que aún no existan. Así, no se asignará memoria, sino a partir del momento que sea necesario hacer usos del segmento. Un ejemplo de esto, serían los arreglos cuya dimensión no se conoce hasta tanto no se comienza a ejecutar el programa. En algunos casos, incluso podría retardar la asignación de memoria hasta el momento en el cuál se referencia el arreglo u otra estructura de datos por primera vez.

5.4.1. SEGMENTACIÓN PAGINADA

Paginación y segmentación son técnicas diferentes, cada una de las cuales busca brindar las ventajas enunciadas anteriormente.

Para la segmentación se necesita que estén cargadas en memoria áreas de tamaños variables. Si se requiere cargar un segmento en memoria que antes estuvo en ella y fue removido a memoria secundaria, se necesita encontrar una región de la memoria lo suficientemente grande para contenerlo, lo cual no es siempre factible. En cambio recargar una página implica sólo encontrar un marco de página disponible.

A nivel de paginación, si quiere referenciar en forma cíclica n paginas, estas deberán ser cargadas una a una, generándose varias interrupciones por fallas de páginas. Bajo segmentación, esta página podría conformar un sólo segmento, ocurriendo una sola interrupción por falla de segmento. No obstante, si bajo segmentación se desea acceder un

Page 32: Memoria Cache

área muy pequeña dentro de un segmento muy grande, este deberá cargarse completamente en memoria, desperdiciándose memoria. Bajo paginación sólo se cargará la página que contiene los ítems referenciados.

Puede hacerse una combinación de segmentación y paginación para obtener las ventajas de ambas. En lugar de tratar un segmento como una unidad contigua, éste puede dividirse en páginas. Cada segmento puede ser descrito por su propia tabla de páginas.

Las direcciones tienen tres componentes: (s, p, d), donde la primera indica el número del segmento, la segunda el número de la página dentro del segmento y la tercera el desplazamiento dentro de la página. Se deberán usar varias tablas:

- SMT (tabla de mapas de segmentos): Una para cada proceso. En cada entrada de la SMT se almacena la información descrita bajo segmentación pura, pero en el campo de dirección se indicara la dirección de la PMT (tabla de mapas de páginas) que describe a las diferentes páginas de cada segmento.

- PMT (tabla de mapas de páginas): Una por segmento; cada entrada de la PMT describe una página de un segmento, en la forma que se presentó la pagina pura.

- TBM (tabla de bloques de memoria): Para controlar asignación de páginas por parte del sistema operativo.

- JT (tabla de Jobs): Que contiene las direcciones de comienzo de cada una de las SMT de los procesos que se ejecutan en memoria.

Page 33: Memoria Cache

6. ORGANIZACIÓN DE CACHÉ EN EL PENTIUM 4

La evolución de la organización de la caché se observa claramente en la evolución de los microprocesadores de Intel. El 80386 no incluía caché on-chip. El 80486 incluye una sola caché on-chip de 8 KB, utilizando un tamaño de línea de 16 bytes y una organización asociativa por conjuntos de cuatro vías. Todos los procesadores Pentium incluyen dos cachés L1 on-chip, una para datos y otra para instrucciones. Para el Pentium 4, la caché de datos es de 8 KB, utilizando un tamaño de línea de 64 bytes y una organización asociativa por conjuntos de cuatro vías. Posteriormente describiremos la caché de instrucciones del Pentium 4. El Pentium II incluye también una caché L2 que alimenta a las dos cachés Ll. La caché L2 es asociativa por conjuntos de ocho vías, con una capacidad de 256 Kb y un tamaño de línea de 128 bytes. En el Pentium III se añadió una caché L3 que pasó a ser on-chip en las versiones avanzadas del Pentium 4.

Page 34: Memoria Cache

Fig. Diagrama de bloques del Pentium 4

La figura muestra un esquema simplificado de la estructura del Pentium 4, resaltando la ubicación de las tres cachés. El núcleo del procesador consta de cuatro componentes principales:

• Unidad de captación/decodificación: capta instrucciones en orden de la caché L2, las decodifica en una serie de micro-operaciones, y memoriza los resultados en la caché Ll de instrucciones.• Lógica de ejecución fuera-de-orden: planifica la ejecución de micro-operaciones teniendoen cuenta las dependencias de datos y los recursos disponibles; de forma que puede planificarse la ejecución de micro-operaciones en un orden diferente del que fueron captadas de lasecuencia de instrucciones. Si el tiempo lo permite, esta unidad planifica la ejecución especulativa de micro-operaciones que puedan necesitarse en el futuro.• Unidades de ejecución: estas unidades ejecutan las micro-operaciones, captando los datosnecesarios de la caché de datos Ll, y almacenando los resultados temporalmente en registros.• Subsistema de memoria: esta unidad incluye las cachés L2 y L3, y el bus del sistema, que seusa para acceder a la memoria principal cuando en las cachés L1 y L2 tiene lugar un fallo decaché, así como para acceder a los recursos de E/S del sistema.A diferencia de la organización de los modelos Pentium anteriores, así como de la mayoría de losdemás procesadores, la caché de instrucciones del Pentium 4 está situada entre la lógica de

Page 35: Memoria Cache

decodificación de instrucciones y el núcleo de ejecución. El motivo es que el Pentium, como discutiremos con más detalle en el Capítulo 14, decodifica o traduce sus instrucciones máquina a instrucciones más sencillas de tipo RISC, denominadas micro-operaciones. El uso de micro-operaciones sencillas, de longitud fija, posibilita la utilización de segmentación superescalar y de técnicas de planificación que mejoran las prestaciones. Sin embargo, las instrucciones máquina del Pentium son difíciles de decodificar, ya que tienen un número variable de bytes y muchas opciones diferentes. Se consigue mejorar las prestaciones si dicha decodificación se realiza independientemente de la lógica de planificación y de segmentación. La caché de datos emplea una política de postescritura: los datos se escriben en memoria principal solo cuando, habiendo sido actualizados, se eliminan de la caché. El procesador Pentium 4 puede configurarse dinámicamente para utilizar la política de escritura inmediata.La caché L1 de datos se controla por dos bits de uno de los registros de control (véase la Tabla 4.5),rotulados CD (Caché Disable: inhabilitar caché) y NW (Not Write Thnough: no escritura inmediata).Hay también dos instrucciones del Pentium 4 que pueden utilizarse para controlar la caché: INVDinválida la memoria caché interna e indica que se invalide la caché externa (si la hay); WBINVDpostescribe e invalida la caché interna, y entonces postescribe e invalida la caché externa.Las dos cachés, L2 y L3, son asociativas por conjuntos de ocho vías, con un tamaño de línea de128 bytes.

Fig. Estructura Física

Page 36: Memoria Cache

7. CONCLUSIONES

La Memoria Caché es una memoria pequeña y a la vez rápida que esta entre la CPU donde se realiza transferencia de palabras (datos) y en la Memoria Principal, realiza transferencia de bloques (líneas); siendo ambas transferencias de forma bilateral; además aproxima la velocidad de la memoria a las de aquellas mas rápidas y disponibles.

Dentro de la caché, se establece diversas funciones como de correspondencia, algoritmos de sustitución estos son de gran ayuda a la correspondencia, escritura actualiza la Mp al realizar sus operaciones, búsqueda son las condiciones que se da para buscar un bloque y también la codificación de fallos de la propia caché.

El repertorio de instrucciones en la Memoria Caché se da en los registros y el rango de direcciones ya que ambas son explicitas para la caché porque tienen a relacionarse con el número de bits de direccionamiento.

La Memoria Caché realiza diversos procesos de traducción de la dirección física la cual procede de la CPU en el dado que es ubicado en la posición de la memoria determinada por dicha dirección.

8. BIBLIOGRAFIA

Organización y arquitectura de computadores, 7ma Edición (William Stalling)

Organización y diseño de computadoras (David A Patterson)

Digital Systems: Hardware Organization and Design, 3rd Edition(Frederick J. Hill, Gerald R. Peterson)

http://www.dia.eui.upm.es/Asignatu/arq_com/Paco/7-Cache.pdf

http://www.fdi.ucm.es/profesor/jjruz/web2/temas/ec6.pdf

http://electro.fisica.unlp.edu.ar/arq/transparencias/ARQII_00-Repaso2.pdf

http://www.monografias.com/trabajos94/arquitectura-del-computador-2/arquitectura-del-computador-2.shtml#ixzz49RuOCdaX

https://laredinfinita.wordpress.com/2014/05/01/memoria-virtual/