sábado, 19 de octubre de 2013

Mapa de memoria


Mapa de memoria


Un mapa de memoria (del inglés memory map) es una estructura de datos (tablas) que indica cómo está distribuida la memoria. Contiene información sobre el tamaño total de memoria y las relaciones que existen entre direcciones lógicas y físicas, además de poder proveer otros detalles específicos sobre la arquitectura del computador.

Los mapas de memoria suelen ser creados usualmente por el firmware para dar información al núcleo del sistema operativo sobre cómo está distribuida la memoria.







Memoria expandida



Páginas o bancos de memoria expandida dentro del espacio de memoria superior (UMA).

La memoria expandida fue un método desarrollado alrededor de 1984 que proporcionaba memoria paginada extra a los programas de MS-DOS.

Éstos programas, que corrían en la IBM PC original, y sus sucesores como el IBM XT y el IBM AT, eran típicamente aplicaciones como hojas de cálculo y bases de datos que necesitaban una gran cantidad de memoria para trabajar correctamente.

El IBM PC y el IBM XT tenían una arquitectura de memoria de modo real, que solo permitía a los programas usar 1 megabyte de espacio de dirección, de los cuales solo hasta 640 KB estaba disponible como RAM normal para las aplicaciones. El resto entre 640 KB y 1megabyte era reservado para periféricos, destacándose la memoria para las tarjetas de vídeo. El IBM AT, con su microprocesador Intel 80286 soportaba un modo protegido lo que le permitía direccionar hasta 16 MB, pero este computador también usaba el MS-DOS, un sistema operativo que no usaba la memoria extendida (por arriba del megabyte) directamente.

La idea detrás de la memoria expandida era usar, también para la memoria del programa, parte de los 384 KB restantes normalmente dedicados a los periféricos. Para poder usar potencialmente mucho más memoria que los 384 KB que el espacio de direccionamiento permitía, fue ideado un esquema conmutación de bancos, donde solamente estarían accesibles a un mismo tiempo, porciones seleccionadas de la memoria adicional. Originalmente, era posible una sola ventana de 64 KB de memoria, más adelante esto fue más flexible. Las aplicaciones tuvieron que ser escritas de una manera específica para tener acceso a la memoria expandida.





Segmentación de memoria


Sistema de gestión de memoria en un sistema operativo.

La segmentación es una técnica de gestión de memoria que pretende acercarse más al punto de vista del usuario. Los programas se desarrollan, generalmente, en torno a un núcleo central (principal) desde el que
se bifurca a otras partes (rutinas) o se accede a zonas de datos (tablas, pilas, etc).

Desde este punto de vista, un programa es un conjunto de componentes lógicos de tamaño variable o un conjunto de segmentos, es decir, el espacio lógico de direcciones se considera como unconjunto de segmentos, cada uno definido por un identificador, y consistente de un punto de inicio y el tamaño asignado.

La segmentación de un programa la realiza el compilador y en ella cada dirección lógica se expresará mediante dos valores: Número de segmento (s) y desplazamiento dentro del segmento (d).

Una de las implementaciones más obvias y directas de un espacio de memoria segmentado es asignar un segmento distinto a cada una de las secciones del espacio en memoria de un proceso.

La segmentación también ayuda a incrementar la modularidad de un programa: Es muy común que las bibliotecas enlazadas dinámicamente estén representadas en segmentos independientes.



sábado, 12 de octubre de 2013

Jerarquía de memoria

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
Velocidad
Coste

La cuestión de la cantidad es simple, cuanto más memoria haya disponible, más podrá utilizarse. La velocidad óptima para la memoria es la velocidad a la que el procesador puede trabajar, de modo que no haya tiempos de espera entre cálculo y cálculo, utilizados para traer operandos o guardar resultados. En suma, el coste de la memoria 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:

Diagrama de la jerarquía de memoria.

Por qué funciona la jerarquía ?

♣ Principio de Localidad:
    ♦ Los programas acceden a una porción relativamente
        pequeña del espacio de direcciones en un determinado
        lapso de tiempo.
    ♦ Localidad temporal
       • Si un ítem es referenciado en determinado momento, es
         común que vuelva a ser referenciado poco tiempo después
   ♦ Localidad Espacial
      • Cuando un ítem es referenciado en determinado momento,
        es común que los ítems con direcciones “cercanas”también
        sea accedidos poco tiempo después.

Jerarquía de Memoria:
Cómo Funciona?


♣  Localidad Temporal
    ♦ Mantener los datos más recientemente accedidos
     “cercanos” al procesador
♣ Localidad Espacial
   ♦ Mover bloques de palabras contiguas al nivel superior

Como se maneja la jerarquía?

♣ Registros <-> Memoria
     ♦ por el compilador (programador?)
♣ Cache <-> memoria
      ♦ por el hardware
♣ Memoria <-> discos
    ♦ por el hardware y el sistema operativo (memoria virtual)
       por el programador (archivos) 



Cuadro de resumen

El siguiente cuadro muestra la equivalencia entre la frecuencia de la placa madre (FSB), la frecuencia de la memoria (RAM) y su velocidad:



MemoriaNombreFrecuencia (RAM)Frecuencia (RAM)</th>Velocidad
DDR200PC1600200 MHz100 MHz1,6 GB/s
DDR266PC2100266 MHz133 MHz2,1 s
DDR333PC2700333 MHz166 MHz2,7 s
DDR400PC3200400 MHz200 MHz3,2 s
DDR433PC3500433 MHz217 MHz3,5 s
DDR466PC3700466 MHz233 MHz3,7 s
DDR500PC4000500 MHz250 MHz4 s
DDR533PC4200533 MHz266 MHz4,2 s
DDR538PC4300538 MHz269 MHz4,3 s
DDR550PC4400550 MHz275 MHz4,4 s
DDR2-400PC2-3200400 MHz100 MHz3,2 s
DDR2-533PC2-4300533 MHz133 MHz4,3 s
DDR2-667PC2-5300667 MHz167 MHz5,3 s
DDR2-675PC2-5400675 MHz172,5 MHz5,4 s
DDR2-800PC2-6400800 MHz200 MHz6,4 s


Sincronización (tiempos)

No es poco común ver valores como "3-2-2-2" ó "2-3-3-2" para describir los parámetros de la memoria de acceso aleatorio. Esta sucesión de cuatro cifras describe la sincronización de la memoria (tiempo); es decir, la secuencia de ciclos de reloj necesaria para acceder a la información almacenada en la RAM. Las cuatro cifras corresponden, en orden, a los siguientes valores:

  • Demora de CAS o latencia de CAS (CAS significa Señalizador de Direccionamiento en Columna): es el número de ciclos de reloj que transcurre entre el envío del comando de lectura y la llegada de la información. En otras palabras, es el tiempo necesario para acceder a una columna.
  • Tiempo de precarga de RAS (conocido como tRP; RAS significaSeñalizador de Direccionamiento en Fila): es el número de ciclos de reloj transcurridos entre dos instrucciones de RAS, es decir, entre dos accesos a una fila.
  • Demora de RAS a CAS (a veces llamada tRCD): es el número de ciclos de reloj correspondiente al tiempo de acceso de una fila a una columna.
  • Tiempo activo de RAS (a veces denominado tRAS): es el número de ciclos de reloj correspondiente al tiempo de acceso a una columna.

Las tarjetas de memoria están equipadas con un dispositivo llamado SPD(Detección de Presencia en Serie), el cual permite al BIOS averiguar los valores de ajuste nominales definidos por el fabricante. Se trata de una EEPROM, cuya información puede cargarse en el BIOS si el usuario elige el ajuste "auto".


Principio de localidad



El principio de localidad espacial dice que si el procesador accede a una posición de la memoria principal, lo más probable es que necesite acceder a una posición de memoria cercana a esa más adelante.

El principio de localidad temporal dice que si el procesador accede a una posición de la memoria principal  lo más probable es que acceda nuevamente a esa posición de memoria pronto.

Bajo estos principios son diseñadas las memorias caché


En los programas la localidad surge de las estructuras más sencillas y naturales. Por ejemplo, un bucle es una estructura en la que es sencillo explotar la localidad temporal, los bloques de código que se ejecutan secuencialmente hacen que sea fácil explotar la localidad espacial, etc.

La jerarquía de memoria tiene sentido gracias al principio de localidad. El procesador encuentra muy a menudo en la memoria caché los datos que referencia (a pesar del reducido tamaño de esta memoria), porque en esta memoria están los datos e instrucciones que ha utilizado recientemente y los que están cercanos a ellos.

Pero para que el funcionamiento de la jerarquía sea óptimo, los códigos y compiladores deben tener en cuenta el principio de localidad. Si por ejemplo, los elementos de una matriz se almacenan en memoria por filas, un código que accediera por filas a la matriz estaría aprovechando la localidad mientras que un código que lo hiciera por columnas estaría provocando constantes fallos de memoria y empeorando considerablemente los tiempos de ejecución.

Conclusión: cuidado con los patrones de acceso de vuestros códigos a memoria, pueden ser un factor muy importante en el rendimiento final que obtengáis al ejecutarlos. Para empezar, es un buena práctica conocer el tamaño exacto de los diferentes niveles de caché de vuestro procesador y así estimar el tamaño óptimo de los bloques de información con los que trabajáis.

La instrucción de ensamblador CPUID permite obtener esta información, os dejo este enlace para que
podáis descargar benchmarks sencillos basados en ella y así poder caracterizar vuestra jerarquía de memoria:


Cuatro tipos de memorias


1. MEMORIA RAM

RAM : Siglas de (Random Access Memory), un tipo de memoria a la que se puede acceder de forma aleatoria; esto es, se puede acceder a cualquier byte de la memoria sin pasar por los bytes precedentes. RAM es el tipo más común de memoria en las computadoras y en otros dispositivos, tales como las impresoras.

Hay dos tipos básicos de RAM:
♦  DRAM (Dynamic RAM), RAM dinámica
 SRAM (Static RAM), RAM estática

2. MEMORIA ROM



ROM (memoria inalterable): Los ordenadores contienen casi siempre una cantidad pequeña de memoria de solo lectura que guarde las instrucciones para iniciar el ordenador. En la memoria ROM no se puede escribir.

3. MEMORIA PROM

PROM (memoria inalterable programable): Un PROM es un chip de memoria en la cual usted puede salvar un programa. Pero una vez que se haya utilizado el PROM, usted no puede reusarlo para salvar algo más. Como las ROM, los PROMS son permanentes.

4. MEMORIA EPROM

EPROM (memoria inalterable programable borrable): Un EPROM es un tipo especial de PROM que puede ser borrado exponiéndolo a la luz ultravioleta.













sábado, 5 de octubre de 2013

Cuestionario de Pregunta

Cuestionario de Pregunta

¿Qué es productividad con respecto a la gestión del proceso?

Es el que mide el número de programa que se ejecuta por unidad tiempo

¿Qué es el tiempo de respuesta?

Tiempo total para realizar una tarea

¿Qué es el tiempo del CPU?        

El tiempo que el CPU le dedica a cada tarea

¿En que se mide la velocidad del reloj?

Se mide en Mhz (millones de ciclos por segundo)

¿Qué es el reloj del sistema?  

El reloj del sistema determina cuando los eventos ocurren en el hardware.

¿Qué es el periodo del reloj?

Tiempo en que ocurre un ciclo (pulso) de reloj Se mide en fracciones de segundo. Por ejemplo 0.25 nanosegundos.

¿Qué es la velocidad de reloj?

 Es el inverso del periodo. Se mide en ciclos por segundo. Por ejemplo 4GHz (giga Hertz).

¿Qué es un ciclo de reloj?                                                                                                       

Un ciclo del CPU, es un impulso electromagnético que genera el oscilador de cuarzo presente en todo procesador y microprocesador de la computadora.

¿Quién determina la velocidad del funcionamiento del microprocesador?

 Viene determinada por el ritmo de los impulsos de su reloj.

¿Qué es el reloj oscilador?

Es un circuito electrónico encargado de emitir a un ritmo constantes impulsos eléctricos.

¿Qué son los benchmark?

Son simplemente aplicaciones que sirven de “probadores” de desempeño, las cuales dan una idea de la potencia del equipo


¿Cuáles son los tipos de benchmarking?

  Benchmarking Interno
  Benchmarking Competitivo
  Benchmarking Funcional
  Benchmarking Genérico 

¿Cuáles son las principales funcionalidades de benchmark?

Tienen las siguientes funcionalidades:
  Comprobar si las especificaciones de los componentes están dentro del margen propio del mismo
  Maximizar el rendimiento con un presupuesto dado
  Minimizar costos manteniendo un nivel máximo de rendimiento
  Obtener la mejor relación costo/beneficio (con un presupuesto o unas exigencias dadas)

¿Qué es la ley de AMDAHL?

El aumento de rendimiento que puede obtenerse al mejorar alguna parte de una computadora puede calcularse utilizando la Ley de Amdahl.

¿Qué es lo que nos indica la aceleración en  la ley de AMDAHL?

La aceleración nos indica la rapidez con que se realizará una tarea utilizando una máquina con la mejora con respecto a la máquina original.