viernes, 28 de agosto de 2009

resumen del salon de clases

Memoria cache
La memoria cache es una reserva de información, esta es la que facilita a la memoria RAM a trancito de información, esta memoria esta en el disco duro, su función es cuando la memoria RAM esta lleno se activa, hay cuatro tipos de memoria cache
L1, L2, L3, y L4 y se logra llenar se activa la L1 se activa la L2 y así sucesivamente hasta L 4


Memoria virtual
Esla que permite al software usar mas memoria principal de la que realmente posee la mayoría de los ordenadores tienen 4 tipos de memoria, estas son la memoria cache, memoria física, memoria RAM y el disco duro
Esta memoria se refiere cuando ya no hay memoria suficiente estas permite disimular 4 GB.
Por lo que esta memoria es pura alucinación por que no se puede tocar nada mas ver.

Buffer
Esta memoria es denomina memoria intermedia por que es temporal, esta memoria va conectada temporal mente en la computadora.
Ejemplo:
Cuando mandas a imprimir y cierras el programa la impresora sigue sacando las impresiones, no se detiene

miércoles, 26 de agosto de 2009

trabajo de lasmemoria y buffer

MEMORIA CACHE

Objetivos

Mantener el tiempo de acceso promedio a la memoria pequeño.
Reducir el ancho de banda entre memoria principal y procesador


Operación del cache

La dirección generada por el procesador es comparada con los datos que están almacenados en la cache, si el dato está presente, el procesador lo lee desde la cache, si el dato no está presente, se transfiere desde la memoria principal a la cache.


Terminología

Bloque : unidad mínima de almacenamiento en cache
Acierto : palabra buscada pertenece a bloque presente en cache
Desacierto : palabra buscada pertenece a bloque ausente de cache
Razón de acierto : fracción de referencias a memoria que producen aciertos
Razón de desacierto : 1 - (razón de acierto)
Tiempo de acierto : tiempo en leer un dato del cache
Penalidad de desacierto : (tiempo en reemplazar bloque) + (tiempo de lectura de dato al procesador)

Valores típicos

Parámetro
Valor típico
Tamaño del bloque
4-128 bytes
Tiempo de acierto
1-4 ciclos
Penalidad de desacierto
8-32 ciclos
Tiempo de acceso
6-10 ciclos
Tiempo de transferencia
2-22 ciclos
Razón de desacierto
0,01-0,2
Tamaño del cache
1Kbyte - 256Kbyte
Localidad

Localidad Temporal

Se mantienen los datos accesados más recientemente en la memoria rápida.

Localidad espacial

Al leer un dato al cache, se leen los datos contiguos (bloque).

Tiempo de acceso promedio a memoria

Tiempo acceso = (razón de acierto) * (tiempo de acierto)
(razón de desacierto) * (penalidad de desacierto)

¿Dónde ubicar un bloque en el cache?
Cache de proyección directa
Cada bloque de datos en memoria puede ubicarse en un y sólo un bloque del cache.
Ubicación normalmente es: número del bloque módulo número de bloques en el cache
Ventajas y desventaja
- Económico, acceso rápido (utilizado en caches internas) .
- Mayor razón de desaciertos por competencia por bloque específico.
Cache completamente asociativo

Cualquier bloque de memoria puede ubicarse en cualquier bloque del cache.
Número completo del bloque es el tag.


Ventajas y desventajas

- Más caro (muchos comparadores).
- Acceso más lento, dato no disponible hasta saber si acceso fue acierto o desacierto (etapa de comparación y multiplexión).
- Menor tasa de desaciertos por competencia por bloque
Cache asociativo por conjuntos

Es un esquema intermedio.
Cada bloque memoria puede ser ubicado en uno de N bloques del cache (conjuntos de N bloques) .
Cada bloque de memoria tiene asociado un conjunto específico.

Ventajas y desventajas

Más económico que cache completamente asociativo, pero más caro que cache
directo
Dato disponible después de etapa de comparación y multiplexión


¿Cómo encontrar un bloque en el cache?

Cache de proyección directa

Acceso directo al bloque: cada bloque de memoria puede encontrarse sólo en un bloque del cache.
Bloque se encuentra a través de indexación (usando el número del bloque como índice)
Se requiere comparar los tags para saber si el bloque es realmente el que se busca
Bloque está disponible antes de terminar la comparación

Cache completamente asociativo
Búsqueda completa: el bloque puede estar en cualquier bloque del cache
Comparar el tag del bloque con todos los tags de los bloques del cache
Multiplexor selecciona bloque cuyo tag coincide, si existe uno
Dato está disponible después de las comparaciones.

Cache asociativo por conjuntos

Indexación parcial: encontrar el conjunto del bloque
Búsqueda asociativa parcial: encontrar el bloque dentro del conjunto
Comparar tags de bloques dentro del conjunto
Multiplexor selecciona bloque dentro del conjunto
Bloque disponible después de la selección

Que bloque reemplazar en un desacierto

Reemplazo aleatorio

Cualquier bloque

Menos recientemente usado

Mejor desempeño que aleatorio (aprox. 10%)
Más complejo de implementar (se aproxima)


Como manejar la escritura en el cache

Escritura sincrona

Bloque se escribe en cache y en memoria principal
Se utiliza buffer de escritura para mejorar desempeño (write buffer)
No necesita ser escrito en memoria principal al ser reemplazado
Escritura puede realizarse en paralelo con verificación de acierto/desacierto

Escritura asincrona

Se escribe solamente en el cache
Bloque se escribe en memoria principal cuando es reemplazado
Necesita un bit adicional para indicar que el bloque fue modificado (dirty bit)
Requiere verificar acierto/desacierto antes de escribir en cache

Causas de desaciertos

Desaciertos compulsorios

Primer acceso al bloque
Posteriores accesos no provocan desacierto

Desaciertos de capacidad

Tamaño del cache insuficiente
Aumentar tamaño del cache


Desaciertos de conflicto

Bloques de memoria compiten por bloques en cache
Aumentar grado de asociatividad del cache


Sistemas de memoria para soporte de cache

Memoria de una palabra de ancho

Requiere varios accesos a memoria
Memoria requiere ser muy rápida
Solución cara

Memoria de varias palabra de ancho

Ancho de palabra mayor (ej. del tamaño del bloque)
Bus ancho permite transferir bloque completo al cache en un acceso
Costo alto
Memorias entrelazadas (interleaved memory)

Memoria ancha (ej. del tamaño del bloque)
Bus de ancho normal
Lectura simultánea a las memorias
Acceso segmentado para la transferencia

La memoria virtual

La memoria virtual es una técnica que permite al software usar más memoria principal que la que realmente posee el ordenador. La mayoría de los ordenadores tienen cuatro tipos de memoria: registros en la CPU, la memoria caché (tanto dentro como fuera del CPU), la memoria física (generalmente en forma de RAM, donde la CPU puede escribir y leer directa y razonablemente rápido) y el disco duro que es mucho más lento, pero también más grande y barato.
Muchas aplicaciones requieren el acceso a más información (código y datos) que la que se puede mantener en memoria física. Esto es así sobre todo cuando el sistema operativo permite múltiples procesos y aplicaciones ejecutándose simultáneamente. Una solución al problema de necesitar mayor cantidad de memoria de la que se posee consiste en que las aplicaciones mantengan parte de su información en disco, moviéndola a la memoria principal cuando sea necesario. Hay varias formas de hacer esto. Una opción es que la aplicación misma sea responsable de decidir qué información será guardada en cada sitio (segmentación), y de traerla y llevarla. La desventaja de esto, además de la dificultad en el diseño e implementación del programa, es que es muy probable que los intereses sobre la memoria de dos o varios programas generen conflictos entre sí: cada programador podría realizar su diseño teniendo en cuenta que es el único programa ejecutándose en el sistema. La alternativa es usar memoria virtual, donde la combinación entre hardware especial y el sistema operativo hace uso de la memoria principal y la secundaria para hacer parecer que el ordenador tiene mucha más memoria principal (RAM) que la que realmente posee. Este método es invisible a los procesos. La cantidad de memoria máxima que se puede hacer ver que hay tiene que ver con las características del procesador. Por ejemplo, en un sistema de 32 bits, el máximo es 232, lo que da 4096 Megabytes (4 Gigabytes). Todo esto hace el trabajo del programador de aplicaciones mucho más fácil, al poder ignorar completamente la necesidad de mover datos entre los distintos espacios de memoria.
Aunque la memoria virtual podría estar implementada por el software del sistema operativo, en la práctica casi siempre se usa una combinación de hardware y software, dado el esfuerzo extra que implicaría para el procesador.
Operación básica [editar]
Cuando se usa Memoria Virtual, o cuando una dirección es leída o escrita por la CPU, una parte del hardware dentro de la computadora traduce las direcciones de memoria generadas por el software (direcciones virtuales) en:
la dirección real de memoria (la dirección de memoria física), o
una indicación de que la dirección de memoria deseada no se encuentra en memoria principal (llamado excepción de memoria virtual)
En el primer caso, la referencia a la memoria es completada, como si la memoria virtual no hubiera estado involucrada: el software accede donde debía y sigue ejecutando normalmente. En el segundo caso, el sistema operativo es invocado para manejar la situación y permitir que el programa siga ejecutando o aborte según sea el caso. La memoria virtual es una técnica para proporcionar la simulación de un espacio de memoria mucho mayor que la memoria física de una máquina. Esta "ilusión" permite que los programas se ejecuten sin tener en cuenta el tamaño exacto de la memoria física.
La ilusión de la memoria virtual está soportada por el mecanismo de traducción de memoria, junto con una gran cantidad de almacenamiento rápido en disco duro. Así en cualquier momento el espacio de direcciones virtual hace un seguimiento de tal forma que una pequeña parte de él, está en memoria real y el resto almacenado en el disco, y puede ser referenciado fácilmente.
Debido a que sólo la parte de memoria virtual que está almacenada en la memoria principal, es accesible a la CPU, según un programa va ejecutándose, la proximidad de referencias a memoria cambia, necesitando que algunas partes de la memoria virtual se traigan a la memoria principal desde el disco, mientras que otras ya ejecutadas, se pueden volver 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 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.
La memoria virtual también simplifica la carga del programa para su ejecución llamada reubicación, este procedimiento permite que el mismo programa se ejecute en cualquier posición de la memoria física.
En un estado estable, prácticamente toda la memoria principal estará ocupada con fragmentos de procesos, por lo que el procesador y el S.O tendrán acceso directo a la mayor cantidad de procesos posibles, y cuando el S.O traiga a la memoria un fragmento, deberá expulsar otro. Si expulsa un fragmento justo antes de ser usado, tendrá que traer de nuevo el fragmento de manera casi inmediata. Demasiados intercambios de fragmentos conducen a lo que se conoce como hiperpaginación: donde el procesador consume más tiempo intercambiando fragmentos que ejecutando instrucciones de usuario. Para evitarlo el sistema operativo intenta adivinar, en función de la historia reciente, qué fragmentos se usarán con menor probabilidad en un futuro próximo (véase algoritmos de reemplazo de páginas).
Los argumentos anteriores se basan en el principio de cercanía de referencias o principio de localidad que afirma que las referencias a los datos y el programa dentro de un proceso tienden a agruparse. Por lo tanto, es válida la suposición de que, durante cortos períodos de tiempo, se necesitarán sólo unos pocos fragmentos de un proceso.
Una manera de confirmar el principio de cercanía es considerar el rendimiento de un proceso en un entorno de memoria virtual.
El principio de cercanía sugiere que los esquemas de memoria virtual pueden funcionar. Para que la memoria virtual sea práctica y efectiva, se necesitan dos ingredientes. Primero, tiene que existir un soporte de hardware y, en segundo lugar, el S.O debe incluir un software para gestionar el movimiento de páginas o segmentos entre memoria secundaria y memoria principal.
Justo después de obtener la dirección física y antes de consultar el dato en memoria principal se busca en memoria-cache, si esta entre los datos recientemente usados la búsqueda tendrá éxito, pero si falla, la memoria virtual consulta memoria principal , ó, en el peor de los casos se consulta de disco (swapping).


Un buffer

Un buffer (o búfer) en informática es un espacio de memoria, en el que se almacenan datos para evitar que el programa o recurso que los requiere, ya sea hardware o software, se quede en algún momento sin datos.
Algunos ejemplos de aplicaciones de buffers son:
El buffer de teclado es una memoria intermedia en la que se van almacenando los caracteres que un usuario teclea, generalmente, hasta que pulsa la tecla [INTRO], momento en el cual el programa captura todos o parte de los caracteres tecleados contenidos en dicho buffer.
En Audio o video en streaming por Internet. Se tiene un buffer para que haya menos posibilidades de que se corte la reproducción cuando se reduzca o corte el ancho de banda.
Un buffer adecuado permite que en el salto entre dos canciones no haya una pausa molesta.
Las grabadoras de CD o DVD, tienen un buffer para que no se pare la grabación. Hoy en día hay sistemas para retomar la grabación pero antes suponía que el CD no quedaba bien grabado y muchas veces era inservible.
El concepto del Buffer es similar al de caché. Pero en el caso del buffer, los datos que se introducen siempre van a ser utilizados. En la caché sin embargo, no hay seguridad, sino una mayor probabilidad de utilización.
Para explicar la acepción informática a gente no técnica, se puede usar esta metáfora: Un buffer es como tener dinero en el banco (buffer), un trabajo (entrada) y unos gastos fijos (salida). Si tienes un trabajo inestable, mientras tengas ciertos ahorros, puedes mantener tus gastos fijos sin problemas, e ir ingresando dinero cuando puedas según vas trabajando. Si los ahorros son pequeños, en seguida que no tengas trabajo, no vas a poder acometer los gastos fijos. De la misma forma si escuchas música en Internet y tu programa de audio usa un buffer pequeño, en cuanto que haya alguna interrupción en la descarga (porque las descargas nunca tienen una velocidad constante), notarás cortes de sonido, ya que faltará información.
Los buffers se pueden usar en cualquier sistema digital, no solo en los informáticos, por ejemplo se utilizan en reproductores de música y vídeo .

Obtenido de "http://es.wikipedia.org/wiki/Buffer_de_datos"
http://www.dcc.uchile.cl/~rbaeza/cursos/proyarq/mmonsalv/mmonsalv.html

http://es.wikipedia.org/wiki/Memoria_virtual
GENERACIONES DE LAS COMPUTADORAS


1° GENERACION
La primera computadora fue la Mark 1, colosos. Estas computadora usaban focos o bulbos comprimidos y cables de 15-10 pulgadas y eso hacia que las computadoras utilizaran mas energía y se calentara.


2° GENERACIÓN
Estas computadoras utilizaban transistores, esto hizo que la computadora fuera un poco más chica y más velos.

3° GENERACION
Estas ya usaban circuitos integrados que sustituyeron los transistores y usaban pastillas de silicio, se diseñaron con el propósito de de disminuir el tamaño del equipo y aumentar su velocidad y desminuir el costo para el alcance del hogar.

4° GENERACION
Esta etapa aparecieron los microprocesadores, fueron los primeros que se crearon en una calculadora científica, mejoraron el sofwere y cada vez va siendo mas pequeños las CPU y usaban chips con mas circuitos dentro.

5° GENERACION
En esta etapa se desarrollaron los microprocesadores, más conocidas como PC, los microprocesadores eran en paralelas igual a 8bits _1byte .aparecen las primeras marcas de microprocesadores Intel y microsorf.

lunes, 24 de agosto de 2009

investigacion

memoria ram
Para otros usos de este término, véase RAM (desambiguación).
La memoria de acceso aleatorio, (en inglés: Random Access Memory cuyo acrónimo es RAM) es la memoria desde donde el procesador recibe las instrucciones y guarda los resultados. Es el área de trabajo para la mayor parte del software de un computador.[1] Existe una memoria intermedia entre el procesador y la RAM, llamada caché, pero ésta sólo es una copia de acceso rápido de la memoria principal almacenada en los módulos de RAM.[1] Los módulos de RAM son la presentación comercial de este tipo de memoria, se compone de integrados soldados sobre un circuito impreso.
Se trata de una memoria de estado sólido tipo DRAM en la que se puede tanto leer como escribir información. Se utiliza como memoria de trabajo para el sistema operativo, los programas y la mayoría del software. Es allí donde se cargan todas las instrucciones que ejecutan el procesador y otras unidades de cómputo. Se dicen "de acceso aleatorio" o "de acceso directo" porque se puede leer o escribir en una posición de memoria con un tiempo de espera igual para cualquier posición, no siendo necesario seguir un orden para acceder a la información de la manera más rápida posible.

Integrado de silicio de 64 bits sobre un sector de memoria de núcleo (finales de los 60)
La frase memoria RAM se utiliza frecuentemente para referirse a los módulos de memoria que se usan en los computadores personales y servidores. En el sentido estricto, estos dispositivos contienen un tipo entre varios de memoria de acceso aleatorio , ya que las ROM, memorias Flash , caché (SRAM) , los registros en procesadores y otras unidades de procesamiento también poseen la cualidad de presentar retardos de acceso iguales para cualquier posición. En el sistema operativo Windows Vista, gracias al servicio ReadyBoost, es posible asignar memoria flash de un dispositivo externo USB como memoria RAM y así mejorar la velocidad del equipo informático.


memoria rom

Memoria de sólo lectura (normalmente conocida por su acrónimo, Read Only Memory) es una clase de medio de almacenamiento utilizado en los ordenadores y otros dispositivos electrónicos. Los datos almacenados en la ROM no se puede modificar -al menos no de manera rápida o fácil- y se utiliza principalmente para contener el firmware (software que está estrechamente ligada a hardware específico, y es poco probable que requieren actualizaciones frecuentes).
En su sentido más estricto, se refiere sólo a ROM máscara ROM -en inglés MROM- (el más antiguo tipo de estado sólido ROM), que se fabrica con los datos almacenados en forma permanente, y por lo tanto, nunca puede ser modificada. Sin embargo, las más modernas, como EPROM y Flash EEPROM se puede borrar y volver a programar varias veces, aún siendo descritos como "memoria de sólo lectura (ROM), porque el proceso de reprogramación en general es poco frecuente, relativamente lento y, a menudo, no se permite la escritura en lugares aleatorios de la memoria.

celda de ROM
Los ordenadores domésticos a comienzos de los 80 venían con todo su sistema operativo en ROM. No había otra alternativa razonable ya que las unidades de disco eran generalmente opcionales. La actualización a una nueva versión significa usar un soldador o un grupo de interruptores DIP y reemplazar el viejo chip de ROM por uno nuevo. Actualmente los sistemas operativos en general ya no van en ROM. Todavía los ordenadores pueden dejar algunos de sus programas en memoria ROM, pero incluso en este caso, es más frecuente que vaya en memoria flash. Los teléfonos móviles y los asistentes personales digitales (PDA) suelen tener programas en memoria ROM (o por lo menos en memoria flash).
Algunas de las consolas de videojuegos que usan programas basados en la memoria ROM son la Super Nintendo, la Nintendo 64, la Sega Mega Drive o la Game Boy. Estas memorias ROM, pegadas a cajas de plástico aptas para ser utilizadas e introducidas repetidas veces, son conocidas como cartuchos. Por extensión la palabra ROM puede referirse también a un archivo de datos que contenga una imagen del programa que se distribuye normalmente en memoria ROM, como una copia de un cartucho de videojuego.
Una razón de que todavía se utilice la memoria ROM para almacenar datos es la velocidad ya que los discos son más lentos. Aún más importante, no se puede leer un programa que es necesario para ejecutar un disco desde el propio disco. Por lo tanto, la BIOS, o el sistema de arranque oportuno del PC normalmente se encuentran en una memoria ROM.



http://es.wikipedia.org/wiki/Memoria_de_acceso_aleatorio
http://es.wikipedia.org/wiki/Memoria_de_solo_lectura