domingo, 7 de octubre de 2012

MEMORIA



MEMORIA (JORGE LUJAN)

Jerarquía de memoria
Niveles de la jerarquía de memoria.
Nivel 0: Registros
Nivel 1: Memoria caché
Nivel 2: Memoria Principal
Nivel 3: Disco duro
Registros
Es una memoria de alta velocidad y poca capacidad, esta integrada en el microprocesador y permite guardar y acceder a valores muy usados, por lo general en operaciones matemáticas. Los registros se miden por lo general por el número de bits que almacena. 
Tipos de registros
De datos. Usados para guardar números enteros.
De memoria. Usados para guardar exclusivamente direcciones de memoria.
De propósito general. Pueden guardar tanto datos como direcciones.
De punto flotante. Usados para guardar datos en formato de punto flotante.
De propósito específico. Guardan información específica del estado del sistema.
Memoria caché
Es una memoria rápida y pequeña, situada entre la memoria principal y el microprocesador, especialmente diseñada para contener información que se utiliza con frecuencia en un proceso con el fin de evitar accesos a otras memorias, reduciendo considerablemente el tiempo de acceso al ser más rápida que el resto de la memoria principal.
La memoria caché es una memoria en la que se almacena un serie de datos para su rápido acceso. La memoria caché de un microprocesador es de tipo volátil (del tipo RAM), pero de una gran velocidad. Su objetivo es almacenar una serie de instrucciones y datos a los que el microprocesador accede continuamente, con el fin de que estos accesos sean instantáneos.
La operación básica de caché es: Cuando la CPU necesita accesar memoria, se revisa la caché. Si se encuentra la palabra en cache, se lee de la memoria rápida. Si la palabra direccionada de la CPU no se encuentra en caché, se accesa la memoria principal para leer la palabra. Después, se transfiere un bloque de palabras que contiene la que se acaba de accesar, de la memoria principal a la memoria caché. El tamaño de bloque puede variar de una palabra a cerca de 16 palabras adyacentes a la que se acceso. En esta manera, se trasfieren algunos datos caché para quelas futuras referencias a memoria encuentren la palabra requerida en la memoria rápida caché. Hay tres tipos diferentes de memoria caché para microprocesadores
Caché de 1er nivel (L1)
Integrada en el núcleo del microprocesador, trabajando a la misma velocidad que este. La cantidad de memoria caché L1 varía de un microprocesador a otro, estando normalmente entra los 64KB y los 256KB. Esta memoria suele a su vez estar dividida en dos partes dedicadas, una para instrucciones y otra para datos.
Caché de 2º nivel (L2)
Integrada en el microprocesador, no directamente en el núcleo, es algo más lenta que la caché L1.La caché L2 suele ser mayor que la caché L1, pudiendo llegara superar los 2MB.Utilización está más encaminada a programas que al sistema.
Caché de 3er nivel (L3)
Es un tipo de memoria caché más lenta que la L2, muy poco utilizada en la actualidad. En un principio esta caché estaba incorporada a la placa base, no al microprocesador, y su velocidad de acceso era bastante más lenta que una caché de nivel 2 o 1, ya que si bien sigue siendo una memoria de una gran rapidez (muy superior a la RAM, y mucho más en la época en la que se utilizaba),depende de la comunicación entre el microprocesador y la placa base.


Composición interna
La memoria caché está estructurado por celdas, donde cada celda almacena un byte. La entidad básica de almacenamiento la conforman las filas, llamados también líneas de caché. Cuando se copia o se escribe información de la RAM por cada movimiento siempre cubre una línea de caché. La memoria caché tiene incorporado un espacio de almacenamiento llamado Tag RAM, que indica a qué porción de la RAM se halla asociada cada línea de caché, es decir, traduce una dirección de RAM en una línea de caché concreta
Memoria principal
Son circuitos integrados capaces de almacenar información digital, a los que tiene acceso el microprocesador del equipo de computación. Poseen una menor capacidad de almacenamiento que la memoria secundaria, pero una velocidad millones de veces superior. La memoria principal esta divida en:
Memoria ROM
Memoria de sólo lectura (Read Only Memory) son utilizadas como medio de almacenamiento de datos en las computadoras. En ella no se puede escribir y conserva intacta la información almacenada, incluso en el caso de que se interrumpa la corriente (memora no volátil).La ROM suele almacenar la configuración del sistema o el programa de arranque de la computadora. Uso principal reside en la distribución de programas que estén estrechamente ligados al soporte físico de la computadora, y que seguramente no necesita actualización. La memoria RAM normalmente es más rápida para lectura que la mayoría de las memorias ROM, por lo tanto el contenido ROM se suele traspasar normalmente a la memoria RAM cuando se utiliza
El software de la ROM se divide en dos partes
Rutina de arranque
Realiza el chequeo de los componentes de la computadora por ejemplo circuitos controladores de video, de acceso a memoria, el teclado, unidades de disco. Se encarga de determinar cuál es el hardware que está presente y de la puesta a punto de la computadora. Mediante un programa de configuración, el SETUP, lee una memoria llamada CMOS RAM (RAM de Semiconductor de óxido metálico). Ésta puede mantener su contenido durante varios años, aunque la computadora está apagada, con muy poca energía eléctrica suministrada por una batería, guarda la fecha, hora, la memoria disponible, capacidad de disco rígido, si tiene disquetera o no. Se encarga en el siguiente paso de realizar el booteo(arranque): lee un registro de arranque 'BR' (Boot Record) del disco duro o de otra unidad (como CD, USB, etc), donde hay un programa que carga el sistema operativo a la RAM. A continuación cede el control a dicho sistema operativo y el ordenador queda listo para trabajar.
Rutina BIOS
Sistema básico de entrada salida (Basic inputoutput system): permanece activa mientras se está usando la PC. Permite la activación de los periféricos de entrada/salida: teclado, monitor, etc.
Memoria RAM
La memoria de acceso aleatorio, o memoria de acceso directo (Random Access Memory).Se compone de uno o más chips y se utiliza como memoria de trabajo para programas y datos. Es un tipo de memoria temporal que pierde sus datos cuando se queda sin energía (al apagar la computadora),por lo cual es una memoria volátil. Se trata de una memoria de semiconductor en la que se puede tanto leer como escribir información. Se utiliza normalmente como memoria temporal para almacenar resultados intermedios y datos similares no permanentes. Se dicen "de acceso aleatorio" o "de acceso directo" porque los diferentes accesos son independientes entre sí.
La RAM se dividen en:
Estáticas: mantiene su contenido inalterado mientras esté alimentada.
Dinámica: la lectura es destructiva, es decir que la información se pierde al leerla, para evitarlo hay que restaurar la información contenida en sus celdas, operación denominada refresco.
Memoria virtual
Es un concepto que permite al software usar más memoria principal que la que realmente posee el ordenador. 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. 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 microprocesador
Operación básica
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): 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.
•Una indicación de que la dirección de memoria deseada no se encuentra en memoria principal (llamado excepción de memoria virtual): 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
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


Bus
Conjunto de líneas de señal que enlaza la CPU, la memoria y los periféricos de Entrada y Salida, permitiendo la transferencia de información entre ellos. El funcionamiento a través de un dispositivo debe obtener el uso del bus y transferir el dato a través del bus, todo ello siguiendo un determinado protocolo
Ciclo de bus. Tiempo necesario para realizar una transferencia elemental de un dato entre dos dispositivos
Anchura del bus. Numero de líneas de datos en el bus
Anchura de banda del bus. Parámetro que expresa el máximo numero de elementos de información (bytes) que se pueden transmitir por el bus en unidad de tiempo
Protocolo del bus. Pautas que tienen que seguir los dispositivos conectados al bus para lograr una comunicación correcta
Jerarquía de buses
o   Bus interno. Comunicación interna dentro de la CPU
o   Bus del procesador. Fundamentalmente, comunicación entre la CPU y la cache externa
o   Bus local. Buses para la conexión procesador DRAM y dispositivos de E/S con altas prestaciones. Pueden ser buses de carácter general, como el PCI, o dedicados como IDE, SCSI, AGP, USB
o   Bus de expansión. Conexión entre dispositivos de E/S con menores prestaciones como los módems, fax, puerto serie, etc.
o   Bus del sistema. Conexión entre distintos sistemas procesador que forman un mismo sistema.


Protocolos de transmisión
o   Protocolo síncrono. Fácil de implementar, pero con poca flexibilidad (dispositivos con diferentes velocidades). Buses cortos. Mayor ancho de banda.
o   protocolo asíncrono. Permite adaptar la transferencia a la velocidad del dispositivo, compagina dispositivos lentos y rápidos.
EJEMPLO DE ALGUNOS BUSES COMERCIALES
o   Bus ISA, EISA, MCA. Industry Standard Architecture, Extended Chanel Adapter, Micro Chanel Adapter
o   Bus PCI. Peripheral Component Interconnect
o   Bus AGP. Accelerated Graphics Port
o   Bus IDE. Integrated Drive Electronics
o   Bus SCSI. Small Computer System Interface
o   Bus SATA. Serial ATA
o   Bus Serial Attached SCSI
o   Buses USB (Universal Serial Bus)
o   Bus PCMCIA. Personal Computer Memory Card International Association
o   Bus VME. Versa Module Europe



UNIDAD CENTRAL DE PROCESAMIENTO
También llamada CPU, la unidad central de procesamiento se encarga de realizar todos los cálculos matemáticos que se requieren para que un ordenador pueda funcionar correctamente.
La unidad central de procesamiento esta compuesta de esta manera:
Memoria
Unidad aritmética lógica
Unidad o procesador de control
Memoria
Se almacenan datos y programas, hay dos operaciones que se hacen en la memoria y son leer y escribir, entonces se dice que es donde almacena, se lee y se escribe. Es un conjunto de células numeradas y dos registros especiales con los que realiza su trabajo.
UNIDAD ARITMETICA LOGICA
Esta unidad opera los datos que recibe siguiendo las indicaciones por la unidad de control. Esta unidad puede realizar operaciones aritméticas lógicas, por ejemplo el de realizar la suma. La forma en que realiza la suma es la siguiente:
1.       Se debe tener el código de operación que indique la operación a efectuar en este caso el código de suma
2.       Dirección de la celula en la que se encuentra almacenado el primer sumando
3.       Dirección del segundo sumando
4.       Dirección de la celula en la que se almacena el resultado
Instrucciones para efectuar la suma.
1.       Cargar el primer operando en el acumulador
2.       Sumar el segundo operando con el contenido del acumulador
3.       Cargar el contenido del acumulador en la dirección del resultado
Unidad de control
La unidad de control es el autentico cerebro que controla y coordina el funcionamiento de la computadora. A raíz de la interpretación delas instrucciones que integran el programa esta unidad genera el conjunto de ordenes elementales necesarias para que se realice la tarea necesitada.
Pasos para la unidad de control.
1.       Se extrae de la memoria principal la instrucción a ejecutar esa información es almacenada en el contador de instrucciones, la información que se almacena es la próxima instrucción a ejecutar en el registro de instrucción propiamente dicha.
2.       Una vez conocido el código de la operación la unidad de control ya sabe que circuitos de la ALU deben de intervenir pueden establecerse las conexiones eléctricas necesarias a través del secuenciador
3.       Extrae de la memoria principal los datos necesarios para ejecutar la instrucción en proceso
4.       Ordena la ALU que efectúa las operaciones el resultado de este es depositado en el acumulador de la ALU
5.       Si la instrucción a proporcionado nuevos datos estos son almacenados en la memoria principal  
6.       Incrementa en una unidad el contenido del contador de instrucciones a ejecutar

DMA
Acceso directo a memoria (DMA) permite a cierto tipo de componentes del ordenador acceder a la memoria del sistema para leer o escribir independientemente de la CPU principal. Muchos sistemas hardware utilizan DMA, incluyendo controladores de unidades de disco, tarjetas graficas y tarjetas de sonido. DMA es una característica esencial en todos los ordenadores modernos, ya que permite a dispositivos de diferentes velocidades comunicarse sin someter a la CPU a una carga masiva de interrupciones.
Una transferencia DMA consiste principalmente en copiar un bloque de memoria de un dispositivo a otro. En lugar de que la CPU inicies la transferencia, la transferencia se lleva acabo por el controlador DMA. Un ejemplo típico es mover un bloque de memoria desde una memoria externa a una interna mas rápida. Tal operación no ocupa el procesador y como resultado puedes ser planificado para efectuar otras tareas. Las transferencias DMA son esenciales para aumentar el rendimiento de aplicaciones que requieras muchos recursos.
 


Bibliografía
Acceso directo a la memoria http://es.scribd.com/doc/76550644/dma
Conexión entre subsistemas http://es.scribd.com/doc/96604304/Buses
 




sábado, 6 de octubre de 2012

Unidad Central de Procesamiento (Cesar)


La CPU (Unidad Central de Procesamiento) es la parte más importante de cualquier sistema basado en microprocesadores. Debe generar señales de control y ejecutar el programa del usuario, para esto realiza dos sub-tareas o fases:
·         Fase de búsqueda (fetch).- Se realiza el acceso a la memoria para leer la instrucción a ejecutar
·         Fase de ejecución.- Se realiza la activación de los recursos necesarios para llevar a cabo la instrucción interpretada.
Para realizar todas estas tareas la CPU esta interconectada con su entorno mediante 1 o más buses internos. Las CPUs más conocidas que solo tienen un bus son: 8085, 8086, 68000,etc. En los CPUs que usan más de un bus tenemos a los DSP, PIC, 8051, etc.


Fig1. CPU con un solo bus

Fuente: Sanchis E. (2002), Sistemas electrónicos digitales: fundamentos y diseño de aplicaciones, Valencia: España, Editorial Maite Simon


Fig.2 CPU con dos buses

Fuente: Sanchis E. (2002), Sistemas electrónicos digitales: fundamentos y diseño de aplicaciones, Valencia: España, Editorial Maite Simon

Buses.- Los buses son cualquier conexión para transferir señales eléctricas, permitiendo una comunicación entre dos o más componentes.
Los buses se clasifican en:
1.       Bus de datos.- Son líneas de comunicación por donde circulan los datos internos y externos del microprocesador. Este bus es bidireccional, de escritura cuando el flujo de datos es desde la unidad de control hacia las demás unidades de operación y es de lectura cuando el flujo va de las unidades de operación a la unidad de control. La conexión de este bus se lo realiza por medio de puertas tri-estado.
Según la cantidad de buses de datos que se tengan se puede determinar la arquitectura de la computadora:
Arquitectura Von Neumann.- Solo tiene un bus de datos por donde circulan los datos y las instrucciones
Arquitectura Harvard.- Tiene 2 buses de datos, uno para datos y el otro para instrucciones
2.       Bus de direcciones.- Líneas de comunicación por donde viajan las direcciones específicas de memoria del dato o dispositivo del que se hace referencia. Este bus es unidireccional desde el microprocesador a las demás unidades, el código binario de la dirección es enviado ya sea a la RAM o a la ROM para leer la información de dicha dirección. Las líneas disponible del bus de direcciones determinan el tamaño máximo de memoria que puede ser acomodado en el sistema, para n líneas el bus puede especificar 2n palabras de memoria.
3.       Bus de control.- Líneas de comunicación por donde se controla el intercambio de información entre la unidad central y los periféricos mediante señales de control enviados por la unidad de control. Estas señales son de lectura o escritura en la RAM, habilitación de interrupciones, etc.
4.       Bus de expansión.- Este bus es el encargado de llevar el bus de datos, direcciones y control a las tarjetas de interfaz de E/S.


Fig. 3 Los diferentes tipos de buses


Unidad Aritmética Lógica (ALU).- Es la encargada de realizar las operaciones aritméticas básicas (suma, resta, multiplicación y división) las operaciones lógicas (Comparaciones, conjunciones, disyunciones y negaciones).
Los procedimientos de la ALU pueden ser en serie o en paralelo, siendo el procedimiento en serie más barato y el paralelo más rápido. La mayoría de los procesadores usan el procedimiento en paralelo.
La ALU usa registros (memorias de almacenamiento provisional) para su funcionamiento. Los registros que usa la ALU varían según el tipo de procesador. Los registros más importantes son: Registros de entrada de propósito general (almacena temporalmente los datos con los que trabaja el microprocesador en un determinado momento), registros de salida o acumuladores (registro temporal donde se cargan datos y códigos de operación que deberá ejecutar el microprocesador).
En la actualidad la ALU se auxilia de manera interna con un coprocesador matemático, diseñado especialmente para operaciones con punto flotante y realiza los cálculos solicitados a mayor velocidad.


Fig. 4 ALU con su registro acumulador



Unidad de control (UC).- Es la parte del microprocesador que se encarga de interpretar las instrucciones para luego ejecutarlas. Esta unidad recibe los datos secuencialmente desde la memoria por medio del bus de datos.
Sus funciones básicas son:
1.       Leer e interpretar las instrucciones de los programas
2.       Dirigir la operación de los componentes internos del procesador
3.       Controlar el flujo de entrada y salida de programas y en la memoria RAM
4.       Dirigir señales de control entre la CPU y los dispositivos de E/S
Algunos componentes internos de la UC son: los registros de propósito general, registro de instrucciones, la lógica de control y temporización, el contador de programa, registro de estado, registros intermedios y el acumulador

Fig. 5 Unidad de control y su posición dentro del procesador


Señales de control.- Son usadas para que el microprocesador realice las operaciones adecuadamente. En la siguiente figura se muestran las señales de control mas comunes.



Fig 6. Señales de control en un microprocesador

Fuente:  Mano M. (1985), Lógica digital y diseño de computadores, Juárez: México, Editorial Prentice Hall Inc.

Excepciones.- Algunas veces se necesita la comprobación de los resultados de operaciones ya sea por el usuario o por el sistema operativo. Este último al detectar algo anormal, realiza la interrupción del proceso en curso para estudiar el problema.
Al tratarse de situaciones excepcionales y no ser normales se los conoce como excepciones. Los sistemas operativos actuales para estos casos proporcionan un gestor de excepciones que permiten atender estas interrupciones al momento de su aparición. Los eventos que se atienden con este gestor son:
·         Fallos de Hardware y Software que afecten al proceso (ejemplo: división por cero)
·         Eventos anómalos (ejemplo: desbordamiento de una variable de coma flotante)
·         Datos de entrada incorrectos ingresados por el usuario del programa
Se establecen tres categorías de errores de acuerdo a la gravedad de estos:
1.       Catastróficos.- El sistema es incapaz de recuperarse imposibilitando el funcionamiento del sistema
2.       No recuperables.- Hacen que un proceso no termine su ejecución
3.       Recuperables.- Con ciertos ajustes se puede retomar la ejecución del proceso

 Instrucciones.- Todas las instrucciones tienen dos tiempos fundamentales: búsqueda (fetch) y ejecución (execute).
El inicio de una nueva instrucción se da por la búsqueda, el contador de programa se envía por el bus de direcciones para su ejecución, al terminar esta el contador de programa se incrementa.
CPU IRQ.- IRQ en inglés Interrupt Request, petición de interrupción. Las computadoras usan estas interrupciones para administrar varios periféricos y sus peticiones, periféricos como ser, tarjetas de sonido, módems, teclado, etc. Cuando un periférico necesita realizar una determinada acción, manda un IRQ (petición de interrupción) a la CPU, haciendo que se pause el proceso que se estaba realizando para dar lugar a que se ejecute la acción del periférico.
DMA.- Acceso directo a memoria (Direct Memory Access), permite la transferencia de información de un periférico externo a la memoria, sin que intervengan ni la CPU ni el programa. Esto se lo realiza cuando la transferencia es muy frecuente, o cuando el programa no puede realizar una transferencia a la velocidad solicitada por el periférico.
Antes de realizar este tipo de transferencia se debe tener en cuenta 2 aspectos:
·         El microprocesador se prive de las líneas que serán usadas para la transferencia y ponga las salidas de la CPU en alta impedancia
·         Exista Hardware externo de control de transferencia, para lo cual existen circuitos integrados controladores de DMA.
Las funciones de los controladores DMA son:
1.       Iniciar la transferencia por petición del periférico o del microprocesador
2.       Direccionar la memoria
3.       Sincronizar el desarrollo de la transferencia con la CPU
4.       Activar las señales del bus de control necesarias para la transferencia
5.       Avisar a la CPU el fin de la transferencia.
E/S Mapeada en memoria.- Un sistema de computadora combina un procesador, memoria RAM, ROM, dispositivos de entrada y salida en un sistema con E/S mapeada en memoria, los dispositivos se conectan al procesador como a la memoria. Se le asignan direcciones a los dispositivos de E/S y el software accede a estos por su dirección específica, el software lee desde un dispositivo de entrada mediante las mismas instrucciones que se leerían de la memoria. También realiza la escritura en los dispositivos de E/S como si se tratara de memoria.



Fig. 7 Sistema de E/S mapeada en memoria

Fuente: Valvano J. W (2004), Introducción a los sistemas de microcomputadores Empotrados, México,  Editorial Cengage Learning

Bibliografía

·         Sanchis E. (2002), Sistemas electrónicos digitales: fundamentos y diseño de aplicaciones, Valencia: España, Editorial Maite Simon

·         Santamaría E. (1993), Electrónica digital y microprocesadores, España, Editado por Universidad Pontificia Comillas

·         Mano M. (1985), Lógica digital y diseño de computadores, Juárez: México, Editorial Prentice Hall Inc.

·         Martínez G. F. A. – Quetglás G. M. (2003), Introducción a la programación estructurada en C, Valencia: España, Editorial Maite Simon

·         Perez C. J. A. – Morera J. M. (2002), Conceptos de sistemas operativos, Madrid: España, Editado por Universidad Pontificia Comillas e impreso por Amábar S. L.

·         Valvano J. W (2004), Introducción a los sistemas de microcomputadores Empotrados, México,  Editorial Cengage Learning 


By: Cesar M. Cabrera Vasquez