memoria y cache

15
Instituto de Estudios Superiores de Chiapas Universidad Salazar Alumno Augusto José Elorza Torres Grado y Grupo 4to AMateria Lenguaje Ensamblador Catedrático Enrique Martínez Gutiérrez Tapachula, Chiapas a 27 de Octubre de 2008

Transcript of memoria y cache

Page 1: memoria y cache

Instituto de Estudios Superiores de Chiapas

Universidad Salazar

Alumno Augusto José Elorza Torres

Grado y Grupo

4to ‘A’

Materia Lenguaje Ensamblador

Catedrático

Enrique Martínez Gutiérrez

Tapachula, Chiapas a 27 de Octubre de 2008

Page 2: memoria y cache

Memoria y Caché

2 Introducción

Con este trabajo se pretende cubrir los conceptos básicos de la memoria, así como la jerarquía que

rige en ellas. Comenzando por la jerarquía misma y definiendo los puntos que deciden las

posiciones ocupadas por las distintas memorias.

Continuando después con la descripción de las memorias RAM y ROM, siendo estás las que

conforman la memoria principal de la computadora. Principalmente almacenan datos que son

escritos o requeridos por el microprocesador.

En el siguiente punto se analizara un tipo de memoria alterna a la memoria física. Es llamada

memoria virtual, y su principal objetivo es el de extender la capacidad de memoria con la cual

dispone la computadora.

Después analizaremos una memoria que se halla en el microprocesador llamada caché, que

funciona como una memoria de datos frecuentes para así poder utilizar los datos más requeridos

con mayor velocidad. Y enseguida se puede encontrar el principio de localidad.

Seguido a esto, se verá uno de los tipos de mapeo conocido como mapeo directo. Pasando por una

exanimación del rendimiento de la caché en base a sus aciertos y fallos. Finalizando con el tema

del mapeo o traducción de direcciones, que consiste en traducir las direcciones creadas por una

memoria virtual para seguir engañando a los programas que se trata de una dirección normal de la

memoria principal.

Page 3: memoria y cache

Memoria y Caché

3 Jerarquía de memoria

Se conoce como jerarquía de memoria a la organización piramidal de la memoria en niveles, que

tienen los ordenadores. Su objetivo es conseguir el rendimiento de una memoria de gran

velocidad al coste de una memoria de baja velocidad, basándose en el principio de cercanía de

referencias.

Los puntos básicos relacionados con la memoria pueden resumirse en:

Cantidad. Cuanta más memoria haya disponible, mas espacio se tendrá para escribir. Esto también

significa que existen más direcciones posibles por las cuales, cuando se requiere de un dato, se

tiene que pasar hasta llegar a la dirección donde el dato se encuentra. Aunque en ciclos (loops)

cuando una referencia se ejecuta n veces, solo una es a memoria y las n-1 restantes serán a la

caché.

Velocidad. La velocidad óptima será siempre la velocidad a la que el procesador puede trabajar, si

esta es más baja o más alta, pueden existir tiempos de espera prolongados entre calculo y calculo

cuando se requiere traer operandos o guardar resultados, debido a la diferencia de velocidad.

Coste. El costo de toda la memoria que un equipo pueda contener no debe ser excesivo, para que

sea factible construir un equipo accesible.

Como puede esperarse los tres factores compiten entre sí, por lo que hay que encontrar un

equilibrio. Las siguientes afirmaciones son válidas:

A menor tiempo de acceso mayor coste. Normalmente entre mayor velocidad tienen las

memorias, mayor es el costo de las mismas.

A mayor capacidad mayor coste. Memorias de mayor capacidad suelen ser más costosas que

memorias simples o de poca capacidad.

A mayor capacidad menor velocidad. Se tienen mas referencias en memoria conforme la

capacidad de esta aumenta, no es que la velocidad de esta disminuya, sino que se lleva mas

tiempo en la búsqueda de la referencia a leer o escribir.

Se busca entonces contar con capacidad suficiente de memoria, con una velocidad que sirva para

satisfacer la demanda de rendimiento y con un coste que no sea excesivo. Gracias a un principio

llamado cercanía de referencias, es factible utilizar una mezcla de los distintos tipos y lograr un

rendimiento cercano al de la memoria más rápida.

Page 4: memoria y cache

Memoria y Caché

4 Los niveles que componen la jerarquía de memoria habitualmente son:

Nivel 0: Registros. Son los registros con los que cuenta el procesador, su posición en la jerarquía se

debe a la cercanía con el procesador y a su poca capacidad, elementos por los cuales tiene un

rendimiento óptimo.

Nivel 1: Memoria caché. La memoria caché también se encuentra cerca del procesador, pero más

lejos que los registros. Su capacidad también es poca (comparada con la RAM), por lo que también

existen una buena velocidad.

Nivel 2: Memoria principal. En este nivel están la ROM y la RAM, que son circuitos integrados

diseñados para almacenar información. Sus capacidades pueden ser desde muy pequeñas, como

64 o 128 MB (considerando las capacidades actuales), hasta capacidades enormes como 1 o 2 GB.

Estas últimas capacidades afectan al punto de la velocidad aunque pues también permiten mayor

almacenamiento de datos.

Nivel 3: Disco duro. Los sistemas operativos modernos permiten usar el disco duro como memoria

virtuales, que actúan tal y como si fueran memorias principales. Su desempeño disminuye al estar

más lejos que todos los anteriores.

Nivel 4: Redes. Los equipos que se encuentran ahora en red, son capaces de solicitar y escribir

información a través de esta. Pudiendo considerarse como una memoria, aunque pues, los canales

que separan a cada máquina pueden ser muy largos, y por lo tanto la velocidad es afectada.

Page 5: memoria y cache

Memoria y Caché

5 Memoria RAM

La memoria RAM (Random Access Memory en español Memoria de Acceso Aleatorio) es un

circuito integrado capaz de almacenar información. Su nombre lo debe a que se puede acceder a

cualquier dirección que contenga aleatoria y rápidamente.

Los datos que esta memoria almacena son de tipo volátil ya que, al no haber suministro de

energía, los datos que hubiesen almacenados se pierden.

Básicamente está constituida por una serie de chips que están soldados a unas placas

denominadas módulos.

El microprocesador utiliza esta memoria para escribir y leer datos en ella. Aunque los datos de

este tipo de memoria también pueden ser borrados cuando dejan de ser usados y ya no son

necesarios.

Memoria ROM

La memoria ROM, (read-only memory) o memoria de sólo lectura, es la memoria que se utiliza

para almacenar los programas que ponen en marcha el ordenador y realizan los diagnósticos

(como la BIOS). La mayoría de los ordenadores tienen una cantidad pequeña de memoria ROM

(algunos miles de bytes).

Puesto que la memoria ROM también permite acceso aleatorio, si queremos ser precisos, la

memoria RAM debería llamarse memoria RAM de lectura y escritura, y la memoria ROM memoria

RAM de sólo lectura.

Memoria RAM

Memoria ROM

Page 6: memoria y cache

Memoria y Caché

6 Memoria Virtual

La memoria virtual es un sistema permitido por los sistemas operativos modernos, en el cual, se

utiliza una porción del disco duro como si fuera parte de la memoria principal permitiendo así

tener más memoria de la que realmente posee la computadora.

Muchas aplicaciones requieren de espacios grandes de memoria para guardar sus datos. Una

solución a ese problema, consiste en que las aplicaciones mantengan parte de su información en

disco, moviéndola a la memoria principal cuando se requiera. Para esto se usa la memoria virtual

donde el sistema operativo hace uso de la memoria principal y la secundaria para hacer parecer a

la computadora que tiene más capacidad en memoria

La memoria virtual ha llegado a ser un componente esencial de la mayoría de los sistemas

operativos 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 sistema operativo debe saber cómo gestionar este esquema.

Memoria Caché

La memoria caché es una clase de memoria RAM estática (SRAM) de acceso aleatorio y alta

velocidad, situada entre el CPU y la RAM. Se presenta de forma temporal y automática para el

usuario, y le proporciona acceso rápido a los datos de uso más frecuente.

La ubicación de la caché entre el microprocesador y la RAM, hace que sea suficientemente rápida

para almacenar y transmitir los datos que el microprocesador necesita recibir casi

instantáneamente. Aunque como su capacidad es mucho menor que la RAM los datos de la caché

son reemplazados constantemente, en teoría, solo los datos más comúnmente usados

permanecerán por periodos más largos.

Las funciones de la caché son las siguientes:

Acelerar el procesamiento de las instrucciones de memoria en la CPU.

Las computadoras tienden a utilizar las mismas instrucciones y (en menor medida), los

mismos datos repetidamente, por ello la caché contiene las instrucciones más usadas.

Por lo tanto, a mayor instrucciones y datos la CPU pueda obtener directamente de la memoria

caché, tanto más rápido será el funcionamiento de la computadora.

Page 7: memoria y cache

Memoria y Caché

7 Principio de 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.

Mapeo Al pasar los datos desde la memoria principal a la memoria caché estos se traen por bloques. El motivo de llevar los datos por bloques se debe a que, por ejemplo, si el procesador pide el dato de la dirección n entonces es muy probable que después pida el dato de la dirección n+1, por lo tanto, se ahorra tiempo al llevar los datos por bloques a la caché. Por otro lado la memoria caché es de poca capacidad, en relación con la memoria principal, por lo tanto cobra importancia el tema de que y como poner datos en la memoria caché. Es necesario entonces contar con un proceso de conversión de las direcciones, que se llama mapeo.

Mapeo Directo

Mapeo Asociativo (totalmente asociativo)

Mapeo Asociativo por conjunto

Mapeo Directo Cada bloque, j, de la memoria principal se corresponde con una única línea, i, de la memoria caché:

i = j modulo(C)

Los bits de direcciones se dividen inicialmente en dos partes: Los w bits menos significativos identifican la palabra dentro del bloque. Los s bits más significativos restantes identifican el bloque de memoria.

A su vez, de los s bits de bloque se obtienen: Un número de línea (o slot), i, de la caché de r bits, siendo r el Exponente de C (en binario): C = 2r

Los (s-r) bits restantes han de guardarse en la caché (bits de Tag) asociados a cada línea, i, y adicionales a ella para completar la dirección. Así, el tamaño real de la caché es superior a Sc, pues estos bits de Tag han de estar en cada línea.

Page 8: memoria y cache

Memoria y Caché

8 Ejemplo de mapeo directo 24 bits de direcciones, se distribuyen en:

w = 2 bits, para identificar cada palabra (byte) dentro del bloque (4 bytes) s = 24 – 2 = 22 bits para identificar el bloque.

De los 22 bits de bloque, dado que la caché tiene C = 2 r = 14 bits de línea (o slot). (s-r) = (22-14) = 8 bits de Tag.

En el mapeo directo:

No existen dos bloques en la misma línea con el mismo Tag. Búsqueda de un dato en la caché:

Dada una dirección, se selecciona en la caché el número de línea y se compara el Tag de esa línea con la parte alta de la dirección.

Rendimiento de la caché El funcionamiento de la caché de lectura se parece al de un adivino; debe anticipar lo que ocurrirá en el futuro. Si el dispositivo que está siendo cachéado encuentra los datos en la caché, habrá un éxito ("hit"), en caso contrario, un fracaso ("miss"). Los sistemas de caché actuales son capaces de proporcionar una tasa de éxitos superior al 90%. Como puede figurarse el lector, construir un mecanismo de caché no es una tarea baladí. Se requieren esquemas de funcionamiento que atiendan de forma simultánea y balanceada diversos factores:

Discriminar que información debe ser almacenada y cual descartada.

Decidir la organización interna de este almacenamiento.

Manejar las peticiones de lectura. Esto exige disponer de un mecanismo de intercepción de las peticiones del dispositivo que está siendo cachéado.

Manejar las peticiones de escritura. Interceptar las peticiones de escritura del dispositivo a cachéar.

Tiempo de CPU: TCPU = (cCPU + cdm ) × t Donde:

cCPU: ciclos de reloj de ejecución CPU cdm: ciclos de reloj de detención de memoria t: duración del ciclo de reloj

Page 9: memoria y cache

Memoria y Caché

9 Ciclos de detención de memoria:

cdm = nlp * ffl * pfl + nep * ffe * pfe , donde nlp: lecturas por programa nep: escrituras por programa ffl, ffe: frecuencia de fallos de lectura o escritura pfl, pfe: penalización de fallos de lectura o escritura.

Juntando lecturas y escrituras: cdm = namp * ff * pf Donde:

namp : número de accesos a memoria por programa. ff : frecuencia de fallos. pf : penalización de fallo.

Teniendo en cuenta el número de instrucciones (IC): TCPU = IC × (CPI + cdmi × ff × pf) × t, Donde:

cdmi : es el número de ciclos de detención por instrucción.

Si el número de fallos por instrucción es nfi = nami × ff Donde:

nami es el número de accesos a memoria por instrucción Resulta que Tcpu = IC × (CPI + nfi × pf) × t

Impacto de los fallos: o Si el CPI es bajo, el impacto es mayor. o Crece con la frecuencia de reloj.

Page 10: memoria y cache

Memoria y Caché

10 Mapeo o traducción de direcciones Para poder ejecutar instrucciones, y no sabemos en qué parte de la memoria están cargadas, debemos tener un mecanismo de traducción de direcciones virtuales a reales. Para ello, se necesitan dos cosas. Primero, el compilador manejará una dirección base más un desplazamiento al referirse a las instrucciones. Segundo, el sistema operativo asignará como dirección base el número de página, al paginar al proceso. De esta manera, puede buscarse el inicio de una página en memoria, sumarle el desplazamiento y así obtener la dirección real de una instrucción.

Nótese que en el diagrama se tiene una tabla de proceso y ahí mismo se maneja la dirección inicial de la tabla de páginas. En algunos sistemas operativos, estas dos tablas se manejan por separado. La traducción de direcciones virtuales para segmentos se maneja de manera similar.

Existe un esquema adicional, paginación/segmentación, que es la combinación de ambos. La memoria se divide en marcos de página, idealmente más pequeños que el tamaño del marco de

Page 11: memoria y cache

Memoria y Caché

11 página en un sistema de paginación tradicional. Cada segmento está compuesto por cierto número de páginas. Es decir, el tamaño del segmento es un múltiplo del tamaño de página. Este esquema pretende sacar ventaja de los beneficios de los otros dos.

Este mismo mecanismo de traducción de direcciones virtuales puede aplicarse en paginación/segmentación.

Recordemos que este mapeo debe efectuarse siempre, instrucción por instrucción ejecutada. Por ello, entre más rápido sea el mecanismo, mejor. Existe una manera de mejorar dicho mecanismo mediante hardware. Una memoria asociativa es muy cara, pero permite buscar en toda la memoria en un mismo pulso de reloj. Implementando memoria asociativa, podemos traducir direcciones para páginas o segmentos.

Page 12: memoria y cache

Memoria y Caché

12

Sin embargo, el utilizar memoria asociativa implica que el número de marcos de página y/o el número de segmentos, se ve limitado por el tamaño de la memoria asociativa. Es decir, no puede haber más marcos de página que número de celdas en la memoria asociativa. Por ello, hay sistemas operativos que manejan una combinación de ambos. Se cargan a memoria las páginas/segmentos más utilizados, y la traducción se utiliza de manera normal. Solamente en aquellos casos en los que no encontrara la página/segmento en la memoria asociativa, efectuaría la traducción directa. Para esa instrucción, haría un doble mapeo. Sin embargo, el principio de localidad nos asegura que esto no sucederá con frecuencia. A continuación se muestra el esquema de traducción asociativa/directa para un sistema de paginación/segmentación.

Page 13: memoria y cache

Memoria y Caché

13 En muchas ocasiones, el sistema operativo maneja adicionalmente la compartición. Por ejemplo, en vez de que cada usuario tenga cargada su propio procesador de palabras, existe uno solo para todos los usuarios, y lo comparten. Lo mismo sucede con archivos y datos. En estos casos, el sistema operativo maneja un mecanismo adicional de compartición. Aquí, deberá verificarse que se tenga acceso permitido a la página o segmento que se desea accesar. Adicionalmente, se pueden tener varios tipos de accesos permitidos (Read, Write, Append, eXecute) como en UNIX. En el siguiente diagrama se muestra cómo se maneja dicha compartición.

Por último, el siguiente esquema engloba las diferentes partes que interactúan a un mismo tiempo para accesar una página a memoria.

Page 14: memoria y cache

Memoria y Caché

14 Conclusiones Con lo anterior puedo concluir que la jerarquía de memoria es una forma que rige el desempeño de la memoria del equipo. Tiene las bases sobre que memorias son más rápidas y dado que en procesos de cálculos y operaciones lo que se necesita es velocidad, esas memorias son utilizadas con mayor prioridad. La RAM y ROM son tipos de memorias comunes en la computadora, aunque la ROM solo es de lectura y contiene programas precargados, la RAM permite la lectura y escritura de datos, pero para ambas memorias, los datos son perdidos cuando se pierde el suministro de energía. La memoria virtual es una tecnología capaz de ampliar la capacidad de memoria que posee la computadora, usando para ello una porción de disco duro para que actúe como RAM permitiendo la escritura y lectura de datos. La memoria caché permite acceder a los datos más frecuentes de manera muy rápida debido a su cercanía con el microprocesador, agilizando así los procesos y cálculos que se realicen. El principio de localidad ayuda a entender como un elemento puede volverse frecuente (en uso como acceso o lectura) y que además los elementos cercanos a el pueden serlo también. El mapeo directo de memoria indica cómo mover bloques de datos, moviéndolos así por el principio de localidad. El mecanismo de traducción de direcciones permite convertir direcciones reales a direcciones virtuales, basándose en una dirección base que es asignada en la compilación.

Page 15: memoria y cache

Memoria y Caché

15 Bibliografía http://es.wikipedia.org/wiki/Jerarquía_de_memoria http://es.wikipedia.org/wiki/Cercanía_de_referencias http://www.masadelante.com/faq-memoria-rom.htm http://es.wikipedia.org/wiki/Memoria_principal http://quidel.inele.ufro.cl/~jruiz/est2/Webeo2/MAPEO.html http://multingles.net/docs/jmt/memoria_virtual.htm