Está en la página 1de 15

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


Memoria y Caché

Introducción 2

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.
Memoria y Caché

Jerarquía de memoria 3
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.
Memoria y Caché

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


4
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.
Memoria y Caché

Memoria RAM 5
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 RAM

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 ROM
Memoria y Caché

Memoria Virtual 6
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.
Memoria y Caché

Principio de localidad 7
 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.
Memoria y Caché

Ejemplo de mapeo directo


8
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
Memoria y Caché

 Ciclos de detención de memoria:


cdm = nlp * ffl * pfl + nep * ffe * pfe , donde 9
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.
Memoria y Caché

Mapeo o traducción de direcciones 10

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
Memoria y Caché

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 11
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.
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.
Memoria y Caché

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 13
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.
Memoria y Caché

Conclusiones 14
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.
Memoria y Caché

Bibliografía 15

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

También podría gustarte