viernes, 4 de diciembre de 2015

MEMORIA CACHÉ/MEMORIA PRINCIPAL

MEMORIA CACHÉ
Se habla de sistema de memoria porque en realidad nos estamos refiriendo a varios bloques:
·         El más alejado del micro y por lo tanto más lento y grande es el disco duro. En este los datos se almacenan incluso cuando el equipo está apagado.
·         Al producirse el encendido pasan a la memoria RAM aquellos programas que ejecutas y los datos que necesites en cada momento.
·         Por desgracia el acceso a la memoria RAM desde el micro no es instantáneo. Esto que puede parecer algo anecdótico, estamos hablando del orden de nanosegundos, puede provocar bloqueos y caídas de rendimiento.
Un caché es un sistema especial de almacenamiento de alta velocidad. Puede ser tanto un área reservada de la memoria principal con un dispositivo de almacenamiento de alta velocidad.


La memoria caché que se encuentra en el interior del procesador esta ideada para acelerar la memoria RAM.  La memoria caché está situada en la misma oblea de silicio que el procesador. Es de tipo SRAM, que no necesita refrescarse frente a las DRAM.
Cuando se accede por primera vez a un dato, se hace una copia en la caché; los accesos siguientes se realizan a dicha copia, haciendo que sea menor el tiempo de acceso medio al dato.
Cuando el microprocesador necesita leer o escribir en una ubicación en memoria principal, primero verifica si una copia de los datos está en la caché; si es así, el microprocesador de inmediato lee o escribe en la memoria caché, que es mucho más rápido que de la lectura o la escritura a la memoria principal.
ESTRUCTURA

En el diseño de la memoria caché se deben considerar varios factores que influyen directamente en el rendimiento de la memoria y por lo tanto en su objetivo de aumentar la velocidad de respuesta de la jerarquía de memoria.
UBICACIÓN
Decide dónde debe colocarse un bloque de memoria principal que entra en la memoria caché. Las más utilizadas son:
·         Directa o Mapeado Directo (solo RAM): al bloque i-ésimo de memoria principal le corresponde la posición i módulo n, donde n es el número de bloques de la memoria caché. Cada bloque de la memoria principal tiene su posición en la caché y siempre en el mismo sitio. Su inconveniente es que cada bloque tiene asignada una posición fija en la memoria caché y ante continuas referencias a palabras de dos bloques con la misma localización en caché, hay continuos fallos habiendo sitio libre en la caché.
La direccion fisica de memoria se constituye del campo correspondiente a la etiqueta, el indice (MB) y el tamaño de la palabra.


La gran desventaja es con el acceso. Al corresponder a varios bloques de la memoria RAM a un mismo bloque en la cache, si un programa accede a estos datos, la cache estará constantemente accediendo a la memoria principal para actualizar información.

·         Asociativa (Solo CAM): Los bloques de la memoria principal se alojan en cualquier bloque de la memoria caché, comprobando solamente la etiqueta de todos y cada uno de los bloques para verificar acierto. Su principal inconveniente es la cantidad de comparaciones que realiza.
La direccion fisica no hace falta el campo correspondiente a indice, ya que con el campo etiqueta es suficiente.


Se busca en todas las posiciones de memoria la etiqueta buscada.
Su desventaja es la foma de busqueda: indexada y lenta, lo que indica que se debe recorrer los bloques de la cache en busqueda del bloque de memoria deseado.

·         Asociativa por conjuntos (Híbrida RAM,CAM): Cada bloque de la memoria principal tiene asignado un conjunto de la caché, pero se puede ubicar en cualquiera de los bloques que pertenecen a dicho conjunto. Ello permite mayor flexibilidad que la correspondencia directa y menor cantidad de comparaciones que la totalmente asociativa.
La dirección física se distribuye en tres campos:



Tenemos dos vías: 2 memorias RAM, cuando se realiza la búsqueda de la etiqueta se buscan en las dos memorias RAM y se hace la comparación simultanea entre las 2 etiquetas que corresponden al indice y se compara con las etiquetas buscadas.


OPTIMIZACIÓN
Para una optimización en la manera en que se ingresa a la memoria caché y cómo se obtienen datos de ella, se han tomado en cuenta distintas técnicas que ayudarán a que haya menos reincidencia de fallos.
Mejorar el rendimiento.
En este aspecto el tiempo de acceso es vital, por ende desglozando este termino tenemos:
·         Reducir fallos en la caché (miss rate) [Tf]. Podemos controlar variables importantes para evitar fallos
La tasa de fallos se las puede reducir con:
ü  Aumento del tamaño del bloque
ü  Aumento de la asociatividad
ü  Utilización de una cache de victimas
ü  Cache pseudoasociativas
ü  Pre-búsqueda de instrucciones y datos (mediante buffer externos para acelerar la búsqueda)
ü  Pre-búsqueda controladas por el compilador (del tipo Prefetch-dato que el compilador usa para optimizar los programas luego de realizar un analisis de sus sentencias), la pre-búsqueda se hace en paralelo con la ejecucion de las instrucciones.
ü  Optimizadores para el compilador (Para reducir la tasa de fallos).

·         Reducir penalizaciones por fallo (miss penalti).
Se debe priorizar los fallos de lectura frente a los de escritura. Como los fallos se sirven leyendo bloques de Mp, una alternativa para disminuir la penalización por fallo consiste en disminuir el tiempo de acceso a Mp utilizando el mismo mecanismo caché, es decir, utilizando una caché intermedia o de segundo nivel (L2) entre Mc (L1) y Mp.
·         Reducir el tiempo de acceso en caso de acierto (hit time) [Tacierto].
Para optimizar (minimizarlo) el tiempo de acierto se consideran 3 factores:
ü  Caches pequeñas y simples, El hardware pequeño acelera la comparación de etiquetas y por tanto el tiempo de acierto, También hace posible su incorporación al chip de la CPU, eliminando el conexionado externo y por tanto el tiempo de acceso desde la CPU.
ü  Evitar traducción de direcciones durante la indexación de las cachés, con la  utilización de direcciones virtuales en las cachés
ü  Escrituras segmentadas para rápidos aciertos de escritura, al no ser igual la propiedad de lectura con la de escritura ya que los aciertos de lectura son más rápidos que los de escritura, entre otros motivos porque en los primeros se puede leer el dato de Mc al tiempo que se comprueba si su etiqueta coincide con la de la dirección física. Si no coincide se ignora el dato leído. Entonces para el proceso de escritura se usa la segmentacion (pipeline) sobre la memoria cache. De esta forma se aceleran los aciertos de escritura.
  

MEMORIA PRINCIPAL
MEMORIA RAM
La memoria RAM se usa para almacenar los programas que van a ser ejecutados.
CLASIFICACIÓN DE LA MEMORIA RAM
Todas permiten operaciones de lectura/escritura. Todas son de direccionamiento aleatorio, es decir, todas las celdas de memoria tienen el mismo tiempo de acceso, lo cual las diferencia de las memorias de acceso secuencial y de las de acceso directo. Todas son memorias volátiles.
RAM Estática: Es una memoria que NO NECESITA REFRESCO. La más conocida es la SRAM (caché).
RAM Dinámica: Es una memoria que SI NECESITA REFRESCO, ya que cada bit se almacena en una celda formada por un transistor y un condensador y el condensador se va descargando.
La Memoria Interna
Son más lentas, pero más baratas. Durante el tiempo de refresco el procesador no puede acceder a ellas. Son las más comunes en los ordenadores actuales.


TIPOS DE MEMORIA RAM
VRAM, Es una memoria de propósito especial usada por los adaptadores de vídeo. Puede ser accedida por dos diferentes dispositivos de forma simultánea. Esto permite que un monitor pueda acceder a la VRAM para las actualizaciones de la pantalla al mismo tiempo que un procesador gráfico suministra nuevos datos. VRAM permite mejores rendimientos gráficos aunque es más cara que la una RAM normal.
SIMM, es un tipo de encapsulado consistente en una pequeña placa de circuito impreso que almacena chips de memoria, y que se inserta en un zócalo SIMM en la placa madre. Son más fáciles de instalar que los antiguos chips de memoria individuales, y a diferencia de ellos son medidos en bytes en lugar de bits.
DIMM, es un tipo de encapsulado, consistente en una pequeña placa de circuito impreso que almacena chips de memoria, que se inserta en un zócalo DIMM en la placa madre y usa generalmente un conector de 168 contactos.
DIP, es un tipo de encapsulado consistente en almacenar un chip de memoria en una caja rectangular con dos filas de pines de conexión en cada lado.
RAM Disk, Se refiere a la RAM que ha sido configurada para simular un disco duro. Se puede acceder a los ficheros de un RAM disk de la misma forma en la que se acceden a los de un disco duro. Sin embargo, los RAM disk son aproximadamente miles de veces más rápidos que los discos duros, y son particularmente útiles para aplicaciones que precisan de frecuentes accesos a disco.
SRAM, es un tipo de memoria que es más rápida y fiable que la más común DRAM. El término estática viene derivado del hecho que necesita ser refrescada menos veces que la RAM dinámica.
DRAM, es un tipo de memoria de gran capacidad pero que precisa ser constantemente re-energizada o perdería su contenido. Usa un transistor y un condensador para representar un bit, los condensadores debe de ser energizados cientos de veces por segundo para mantener las cargas.
SDRAM entrelaza dos o más matrices de memoria interna de tal forma que mientras que se está accediendo a una matriz, la siguiente se está preparando para el acceso. SDRAM-II es tecnología SDRAM más rápida esperada para 1998.
FPM, memoria en modo paginado, el diseño más común de chips de RAM dinámica. El acceso a los bits de memoria se realiza por medio de coordenadas, fila y columna. Antes del modo paginado, era leido pulsando la fila y la columna de las líneas seleccionadas. Con el modo página, la fila se selecciona solo una vez para todas las columnas (bits) dentro de la fila, dando como resultado un rápido acceso.
EDO, es un tipo de chip de RAM dinámica que mejora el rendimiento del modo de memoria Fast Page alrededor de un 10%. Al ser un subconjunto de Fast Page, puede ser substituida por chips de modo Fast Page.