348
Arquitectura de computadoras Unida d Temas Subtemas 1 Modelo de arquitecturas de cómputo. 1.1 Modelos de arquitecturas de cómputo. 1.1.1 Clásicas. 1.1.2 Segmentadas. 1.1.3 De multiprocesamiento. 1.2 Análisis de los componentes. 1.2.1 CPU. 1.2.1.1 Arquitectura s. 1.2.1.2 Tipos. 1.2.1.3 Característi cas. 1.2.1.4 Funcionamien to. 1.2.2 Memoria. 1.2.2.1 Arquitectura s. 1.2.2.2 Tipos. 1.2.2.3 Característi cas. 1.2.2.4 Funcionamien to. 1.2.3 Dispositivos de I/O. 1.2.3.1 Arquitectura s. 1.2.3.2 Tipos. 1.2.3.3 Característi cas. 1.2.3.4 Funcionamien to. 2 Comunicación interna en la computadora. 2.1 Buses. 2.1.1 Bus Local. 2.1.2 Bus de datos. 2.1.3 Bus de direcciones. 2.1.4 Bus de control. 2.1.5 Buses normalizados. 2.2 Direccionamiento. 2.2.1 Modo real.

Arquitectura Computadoras ISC

Embed Size (px)

Citation preview

Arquitectura de computadorasUnidad Temas 1 Modelo de arquitecturas de cmputo. Subtemas 1.1 Modelos de arquitecturas de cmputo. 1.1.1 Clsicas. 1.1.2 Segmentadas. 1.1.3 De multiprocesamiento. 1.2 Anlisis de los componentes. 1.2.1 CPU. 1.2.1.1 Arquitecturas. 1.2.1.2 Tipos. 1.2.1.3 Caractersticas. 1.2.1.4 Funcionamiento. 1.2.2 Memoria. 1.2.2.1 Arquitecturas. 1.2.2.2 Tipos. 1.2.2.3 Caractersticas. 1.2.2.4 Funcionamiento. 1.2.3 Dispositivos de I/O. 1.2.3.1 Arquitecturas. 1.2.3.2 Tipos. 1.2.3.3 Caractersticas. 1.2.3.4 Funcionamiento. 2.1 Buses. 2.1.1 Bus Local. 2.1.2 Bus de datos. 2.1.3 Bus de direcciones. 2.1.4 Bus de control. 2.1.5 Buses normalizados. 2.2 Direccionamiento. 2.2.1 Modo real. 2.2.2 Modo protegido. 2.2.3 Modo real virtual. 2.3 Temporizacin. 2.3.1 Reloj de sistema. 2.3.2 Reset del sistema. 2.3.3 Estados de espera. 2.4 Interrupciones de Hardware. 2.4.1 Enmascarable. 2.4.2 No-enmascarable. 2.5 Acceso Directo a memoria. 2.5.1 Sistema de video. 2.5.2 Sistema de discos. 2.5.3 Otras aplicaciones. 3 Seleccin de componentes para 3.1 Chip Set. 3.1.1 CPU.

2

Comunicacin interna en la computadora.

ensamble de equipos de cmputo.

3.1.2 Controlador del Bus. 3.1.3 Puertos de E/S. 3.1.4 Controlador de Interrupciones. 3.1.5 Controlador de DMA. 3.1.6 Circuitos de temporizacin y control. 3.1.7 Controladores de video. 3.2 Aplicaciones. 3.2.1 Entrada/ Salida. 3.2.2 Almacenamiento. 3.2.3 Fuente de alimentacin. 3.3 Ambientes de servicios. 3.3.1 Negocios. 3.3.2 Industria. 3.3.3 Comercio electrnico. 4.1 Arquitectura. 4.1.1 Terminales. 4.1.2 CPU. 4.1.3 Espacio de Memoria. 4.1.4 Entrada/ Salida. 4.1.5 Caractersticas especiales. 4.2 Programacin. 4.2.1 Modelo de programacin. 4.2.2 Conjunto de instrucciones. 4.2.3 Modos de direccionamiento. 4.2.4 Lenguaje ensamblador. 4.3 Aplicaciones. 4.3.1 Como sistema independiente. 4.3.2 Como subsistema de una computadora.

4

Microcontroladores.

Unidad 1. Modelo de arquitecturas de cmputo.1.1 Modelos de arquitecturas de cmputo.2 3 Tecnologas RISC y CISC:

RISC: (Reduced Instruction Set Computer) computadora de conjunto de instrucciones reducido Arquitectura de computadoras que ejecuta un nmero limitado de instrucciones. El concepto es que la mayora de los programas usan generalmente unas pocas instrucciones, y si se acelera la ejecucin de esas instrucciones bsicas, se mejora el rendimiento.

La arquitectura RISC elimina una capa de carga operativa llamada "microcdigo", que se emplea normalmente para facilitar la agregacin de nuevas y complejas instrucciones a una computadora. Las computadoras RISC poseen un pequeo nmero de instrucciones montadas en los circuitos de nivel inferior, que trabajan a mxima velocidad. Aunque las mquinas RISC son slo de un 15% a un 50% ms veloces que sus contrapartidas CISC CISC: (Complex Instruction Set Computer) Computadora de conjunto de instrucciones complejo Computadoras que poseen un conjunto de instrucciones muy extenso. Las mquinas CISC tienen de doscientas a trescientas instrucciones, que estn grabadas en microcdigo. http://www.monografias.com/trabajos/refercomp/refercomp.shtml

3.1.1 Clsicas.El Concepto de von Neumann.Los primeros computadores se programaban en realidad recablendolos. Esto prcticamente equivala a reconstruir todo el computador cuando se requera de un nuevo programa. La tarea era simplificada gracias a un panel de contactos (muy similar al de los primeros conmutadores telefnicos que eran atendidos por operadoras, y que hoy en da slo llegamos a ver en viajes pelculas en blanco y negro. Ver fig. 1) con el que era posible enlazar circuitos para crear secciones dedicadas a una actividad especficas. La programacin del computador se llevaba a cabo, literalmente, reconstruyndolo.

Fig 1.- ENIAC, primer computador electrnico y su panel de conexiones Mientras que el recablear al computador estableca una clara distincin entre los datos (representados por los estados o seales elctricas que sern mantenidas por los relevadores o a travs de los bulbos que conformaban al computador) y el programa (las conexiones que seran establecidas entre estos componentes del hardware) la labor de "programacin" requera sino del propio creador del computador si a un verdadero experto y conocedor de electrnica, principios de lgica digital y del problema mismo. Esto vino a cambiar con el concepto del programa almacenado, un concepto terico muy importante que fue establecido por el matemtico John von Neumann el 30 de junio de 1945 en un borrador sobre el diseo de la EDVAC. A diferencia de los primeros

computadores, von Neumann propona que tanto el programa como sus datos fueran almacenados en la memoria del computador. Esto no solo simplificaba la labor de programacin al no tener que llevar a cabo el recableado del computador sino que adems libraba y generalizaba el diseo del hardware para hacerlo independientede cualquier problema y enfocado al control y ejecucin del programa. Este concepto fue tan importante y decisivo que dio lugar al concepto de la arquitectura de von Neumann, an presente en nuestros das. La arquitectura de von Neumann se compone de tres elementos:1. La Unidad Central de Procesamiento (CPU, por sus siglas en ingls), que es considerada como el cerebro y corazn del computador. Internamente consiste de una Unidad Aritmtico-Lgica (ALU), un conjunto de registros y una Unidad de Control (CU). La ALU es donde se realizan todas las operaciones que involucran un procesamiento matemtico (particularmente aritmtico) o lgico (operaciones booleanas). Los registros permiten el almacenammiento de datos para estas operaciones y sus resultados. En la CU es donde se ejecutan todo el resto de las operaciones (decisin, control, movimiento de datos). Una CPU con todos estos elementos implementada en un solo chip recibe el nombre de microprocesador. 2. La memoria, que es donde datos y programa es almacenado. La memoria puede ser visto como un arreglo unidimensional finito en la que cada localidad es identificada por un valor asociado a su posicin y que es comunmente llamado direccin. Existen diversos tipos de memoria, identificados por el tipo de tecnologa usada, aunque para un computador son generalmente clasificadas en dos grandes grupos por tipo de uso al que de destina. La memoria RAM (Random Access Memory, Memoria de Acceso Aleatorio) y que es aquella destinada al almacenamiento de datos y programas (incluyendo al sistema operativo), es considerada temporal o de tipo voltil ya que pierde si contenido cuendo el computador es apagadoo reinicializado. La memoria ROM es aquella de tipo permanente, aun cuando el computador sea desenergizado mantendr su contenido. Es usada principalmente para el almacenamiento de pequeos programas destinados a la adminsitracin bsica de recursos, especialmente de entrada y salida. 3. Las interfaces de entrada y salida (I/O). destinadas a liberar de trabajo a la CPU en la comunidacin con dispositivos de entrada (teclados, ratones), salida (impresoras) y entrada-salidas (discos, cintas).

Estos tres elementos estn interconectados a travs de un conjunto de lneas que llevan instrucciones (control bus), datos (data bus) y que permiten dar los valores de direcciones de memoria y dispositivos (memory bus).

Fig 2.- Esquema de la arquitectura de von Neumann. http://homepage.mac.com/eravila/computerII.html La arquitectura von Neumann se refiere a las arquitecturas de computadoras que utilizan el mismo dispositivo de almacenamiento tanto para las intrucciones como para los datos (a diferencia de la arquitectura Harvard). El trmino se acu en el documento First Draft of a Report on the EDVAC (1945), escrito por el conocido matemtico John von Neumann, que propuso el concepto de programa almacenado. Dicho documento fue redactado en vistas a la construccin del sucesor de la computadora ENIAC, y su contenido fue desarrollado por Presper Eckert, John Mauchly, Arthur Burks, y otros durante varios meses antes de que Von Neumann redactara el borrador del informe. Los ordenadores con arquitectura Von Neumann constan de cinco partes: La unidad aritmtico-lgica o ALU, la unidad de control, la memoria, un dispositivo de entrada/salida y el bus de datos que proporciona un medio de transporte de los datos entre las distintas partes.

Un ordenador con arquitectura von Neumann realiza o emula los siguientes pasos secuencialmente: 1. Obtiene la siguiente instruccin desde la memoria en la direccin indicada por el contador de programa y la guarda en el registro de instruccin. 2. Aumenta el contador de programa en la longitud de la instruccin para apuntar a la siguiente. 3. Descodifica la instruccin mediante la unidad de control. sta se encarga de coordinar el resto de componentes del ordenador para realizar una funcin determinada. 4. Se ejecuta la instruccin. sta puede cambiar el valor del contador del programa, permitiendo as operaciones repetitivas. El contador puede cambiar tambin cuando se cumpla una cierta condicin aritmtica, haciendo que el ordenador pueda 'tomar decisiones', que pueden alcanzar cualquier grado de complejidad, mediante la aritmtica y lgica anteriores. 5. Vuelve al paso 1. Hoy en da, la mayora de ordenadores estn basados en esta arquitectura, aunque pueden incluir otros dispositivos adicionales, (por ejemplo, para gestionar las interrupciones de dispositivos externos como ratn, teclado, etc). http://www.programacion.com/blogs/44_diario_de_un_profesor_de_informtica/a rchive/409_que_es_la_arquitectura_informtica.html

Arquitectura HarvardEl trmino Arquitectura Harvard originalmente se refera a las arquitecturas de computadoras que utilizaban dispositivos de almacenamiento fsicamente separados para las instrucciones y para los datos (en oposicin a la Arquitectura von Neumann). El trmino proviene de la computadora Harvard Mark I, que almacenaba las instrucciones en cintas perforadas y los datos en interruptores.

Todas las computadoras constan principalmente de dos partes, la CPU que procesa los datos, y la memoria que guarda los datos. Cuando hablamos de memoria manejamos dos parmetros, los datos en s, y el lugar donde se encuentran almacenados (o direccin). Los dos son importantes para la CPU, pues muchas instrucciones frecuentes se traducen a algo as como "coge los datos de sta direccin y adelos a los datos de sta otra direccin" , sin saber en realidad qu es lo que contienen los datos. En los ltimos aos la velocidad de las CPUs ha aumentado mucho en comparacin a la de las memorias con las que trabaja, as que se debe poner mucha atencin en reducir el nmero de veces que se accede a ella para mantener el rendimiento. Si, por ejemplo, cada instruccin ejecutada en la CPU requiere un acceso a la memoria, no se gana nada incrementando la velocidad de la CPU - este problema es conocido como 'limitacin de memoria'. Se puede fabricar memoria mucho ms rpida, pero a costa de un precio muy alto. La solucin, por tanto, es proporcionar una pequea cantidad de memoria muy rpida conocida con el nombre de cach. Mientras los datos que necesita el procesador estn en la cach, el rendimiento ser mucho mayor que si la cach tiene que obtener primero los datos de la memoria principal. La optimizacin de la cach es un tema muy importante de cara al diseo de computadoras. La arquitectura Harvard ofrece una solucin particular a este problema. Las instrucciones y los datos se almacenan en cachs separadas para mejorar el rendimiento. Por otro lado, tiene el inconveniente de tener que dividir la cantidad de cach entre los dos, por lo que funciona mejor slo cuando la frecuencia de lectura de instrucciones y de datos es aproximadamente la misma. Esta arquitectura suele utilizarse en DSPs, o procesador de seal digital, usados habitualmente en productos para procesamiento de audio y video. "http://es.wikipedia.org/wiki/Arquitectura_Harvard"Arquitectura Harvard El procesador de los modernos microcontroladores responde a la arquitectura RISC (Computadores de Juego de Instrucciones Reducido), que se identifica por poseer un repertorio de instrucciones mquina pequeo y simple, de forma que la mayor parte de las instrucciones se ejecutan en un ciclo de instruccin. Otra aportacin frecuente que aumenta el rendimiento del computador es el fomento del paralelismo implcito, que consiste en la segmentacin del procesador (pipe-line), descomponindolo en etapas para poder procesar una instruccin diferente en cada una de ellas y trabajar con varias a la vez.

http://www.unicrom.com/Tut_PICs1.asp La arquitectura Harvard dispone de dos memorias independientes una, que contiene slo instrucciones y otra, slo datos. Ambas disponen de sus respectivos sistemas de buses de acceso y es posible realizar operaciones de acceso (lectura o escritura) simultneamente en ambas memorias. Figura 1.3.

Figura 1.3. La arquitectura Harvard dispone de dos memorias independientes para datos y para instrucciones, permitiendo accesos simultneos. http://www.monografias.com/trabajos12/microco/microco.shtmlARQUITECTURA HARVARD Arquitectura Harvard, que utiliza antememorias de instrucciones y datos separadas. Esta tcnica, denominada Arquitectura Harvard, en cierto modo contrapuesta a la idea de Von Newmann, ya que utiliza memorias cach separadas para cdigo y datos. Esto tiene algunas ventajas . ARQUITECTURA VECTORIAL El encadenamiento aumenta la velocidad de proceso, pero an se puede mejorar aadiendo tcnicas como el supersescalado. Esta tcnica permite hacer paralelas las mismas etapas sobre instrucciones diferentes. Un procesador superescalar puede ejecutar ms de una instruccin a la vez. Para sto es necesario que existan varias unidades aritmtico-lgicas, de punto flotante y de control. El proceso que sigue el micro es transparente al programa, aunque el compilador puede ayudar analizando el cdigo y generando un flujo de instrucciones optimizado. Veamos cmo se ejecutaran las instrucciones en un procesador superescalar de que tiene duplicadas las subunidades que lo componen:

Aunque esto mejora la velocidad global del sistema, los conflictos de datos crecen. Si antes las instrucciones se encontraban muy prximas, ahora se ejecutan simultaneamente. Esto hace necesario un chequeo dinmico para detectar y resolver los posibles conflictos.

ARQUITECTURA PIPE-LINE Paralelismo Temporal: Pipe-Line Lineal La arquitectura pipe-line se aplica en dos lugares de la maquina, en la CPU y en la UAL. Veamos en que consiste el pipe-line y tratemos de entender porque el pipe-line mejora el rendimiento de todo el sistema.

Veamos una CPU no organizada en pipe-line:

Si se trata de una instruccin a ser ejecutada por la ALU podemos decir que la CPU realiza a lo largo del ciclo de maquina estas 5 tareas. Una vez que termina de ejecutar una instruccin va a buscar otra y tarda en ejecutarla un tiempo T, es decir cada T segundos ejecuta una instruccin. Qu sucede si dividimos en 5 unidades segn las 5 cosas que realiza la CPU?

Supongamos la CPU dividida en 5 unidades, de tal forma que c/u tarde lo mismo en realizar su partecita. Es decir c/u tardar T/5. Para que una instruccin se ejecute se necesita T segundos entonces para que usar pipe-line. Si ocurre esto en una CPU normal a una con pipe-line, la cantidad de instrucciones que se hacen por segundo aumenta, es decir aumenta el flujo de instrucciones que se ejecutan por segundo.

http://html.rincondelvago.com/computadores_arquitectura-harvard-pipelinevectorial.htmlArquitectura PIPE-LINE. Ya hemos mencionado que una de las formas de lograr operaciones concurrentes en un procesador se utilizan dos tcnicas bsicas: paralelismo y pipelining. El paralelismo consegua la concurrencia multiplicando la estructura del hardware tantas veces como sea posible, de modo que las diferentes etapas del proceso se ejecuten simultneamente. Pipelining consiste en desdoblar la funcin a realizarse en varias partes, asignndole al hardware correspondiente a cada una de las partes tambin llamadas etapas. As como el agua fluye a travs de una tubera (pipeline) las instrucciones o datos fluyen a travs de las etapas de un computador digital pipeline a una velocidad que es independiente de la longitud de la tubera (numero de etapas del pipeline) y depende solamente de la velocidad a la cual los datos e instrucciones pueden ingresar al pipeline. Esta velocidad a su vez depende del tiempo que tarde el dato en atravesar una etapa. Este tiempo puede ser significativo ya que el computador no solo desplaza los datos o instrucciones de etapa en etapa sino que en cada una de ellas se realiza alguna operacin sobre los mismos. Como ejemplo en el caso de las instrucciones tendremos operaciones de bsqueda, decodificacin y ejecucin. Pipeline Fsico:

Pipeline digital. Mientras un tem en particular fluye a travs del pipeline, ste ocupa slo una etapa por vez. A medida que transcurre el tiempo la etapa que quedo vacante por un tem, ser ocupada por el siguiente. Este uso concurrente de diferentes etapas por diferentes tems se lo conoce por solapamiento. El resultado neto es que la mxima velocidad a la cual los nuevos tems pueden ingresar al pipeline depende exclusivamente del tiempo mximo requerido para atravesar una etapa y no del nmero de stas. La utilizacin del pipeline se traduce en una mejora del comportamiento o performance del procesador. Si una funcin se lleva a cabo en T segundos en un procesador de diseo convencional, al utilizar un procesador pipeline de N etapas esa misma funcin podr realizarse en T/N segundos. Esto a nivel terico, ya que la mejora de performance depender de la cantidad de operaciones que puedan estructurarse en pipeline y tambin de calidad de la particin o subdivisin de cada una de esas operaciones. La estructuracin en pipeline de un procesador se realiza en diferentes niveles como aritmtica de punto flotante, ciclo de instruccin, procesador de entrada/salida, etc. Esta divisin o particin de una funcin en varias subfunciones se podr realizar si se dan las siguientes condiciones: 1. La evaluacin de la funcin bsica es equivalente a la evaluacin secuencial de las subfunciones que la constituyen. 2. Las entradas a una subfuncin provienen nicamente de las salidas de subfunciones previas en la secuencia de evaluacin.

3. Excepto el intercambio de entradas y salidas no existe otra vinculacin entre las subfunciones. 4. Debe disponerse del hardware necesario para la evaluacin de dichas subfunciones. 5. El tiempo requerido por estas unidades de hardware para evaluar las subfunciones es aproximadamente el mismo. Este hardware mencionado en el punto 4 es el correspondiente o asociado con las distintas etapas del pipeline. A diferencia del pipeline fsico (tubera), el digital no maneja los datos en forma continua. Este maneja los datos en forma interrumpida y los va desplazando de etapa en etapa sincronizando con un reloj. Dado que la lgica que realiza el procesamiento en cada etapa generalmente carece de memoria y dado el carcter discontinuo de la aparicin de los datos en las etapas se impone la utilizacin de un elemento de memoria en la entrada y salida de cada etapa. De esta manera, bajo el control del reloj asociado a cada elemento de memoria, evitamos que los datos ingresen a una etapa antes que haya finalizado el proceso anterior.

Pipeline vs. Solapamiento.Los conceptos de pipelining y solapamiento tienen significados parecidos pero no son equivalentes, pese a que en algunos casos se los utiliza indistintamente. Ambos se basan en la idea de particin o subdivisin de una funcin, pero se aplican en distintos entornos. Se dice que podr existir pipeline cuando se den las siguientes condiciones: 1. Cada evaluacin de la funcin bsica es independiente de las anteriores. 2. Cada evaluacin requieren aproximadamente la misma secuencia de subfunciones. 3. Cada subfuncin se encadena perfectamente con las anterior. 4. Los tiempos utilizados para evaluar las distintas subfunciones son aproximadamente iguales. Solapamiento se podr utilizar cuando se den las siguientes condiciones: 1. Existe dependencia entre las distintas evaluaciones. 2. Cada evaluacin puede requerir una secuencia diferente de subfunciones. 3. Cada subfuncin tiene un propsito distinto. 4. El tiempo por etapa no es necesariamente constante, sino que depende de la etapa y de los datos que la atraviesan. En muchos casos el pipeline propiamente dicho y que detallamos en primer lugar se lo suele llamar sincrnico o esttico, por otra parte el solapamiento se lo suele llamar pipeline asincronico o dinmico. Un ejemplo de pipeline esttico es el de una unidad destinada a realizar sumas en punto flotante sobre datos provenientes de otra unidad. Aqu la funcin bsica, suma en punto flotante es relativamente simple, el resultado de una sumo depende del anterior, prximo o de cualquier otro. Adems una vez que se realiz la particin, todas las sumas siguen la misma secuencia. El ejemplo ms simple de solapamiento o pipeline dinmico se da en un procesador donde la entrada/salida es manejada por un procesador, los cmputos por otro y la comunicacin se realiza a travs de un modulo de memoria comn. La realizacin de una funcin en este procesador alternara entre el procesador de computo y el de entrada/salida.

En otros casos la evaluacin de una funcin slo requerira de un procesador. En este caso vemos

que las distintas operaciones estn menos sincronizadas que en el caso del sumador en punto flotante. La participacin de la funcin bsica vara dinmicamente y an el tiempo empleado en cada etapa es difcil de predecir. Otro ejemplo de operacin por solapamiento es el de ejecucin de instrucciones de CPU's de alta velocidad. En este caso el hardware podr estar dividido en un nmero fijo de etapas como en el caso del sumador de punto flotante, pero de acuerdo con las diferencias de formato de las instrucciones cada una puede desarrollar un camino diferente a travs del pipeline. Pipeline en maquinas SISD. Dependencia entre instrucciones y riesgos. En una maquina secuencial clsica todas las operaciones que involucran la ejecucin de una instruccin se completan antes que comience la prxima. En el caso de las maquinas SISD podemos intentar realizar pipeline a nivel de ejecucin de instrucciones. Esto consistir en solapar la ejecucin de las mismas de manera que algunas de las operaciones necesarias para las instrucciones i+1, i+2, .... puedan realizarse antes que finalice la ejecucin de la instruccin i. Puede ocurrir que las operaciones realizadas por i+1, i+2, dependan de los resultados de i que an no fue completada. Esta dependencia entre instrucciones crea riesgos que deben evitarse y resolverse. Se reconocen tres clases de riesgos, read-after-write, write-after-read y write-after-write. Veamos las diferencias considerando este segmento de cdigo de programa: Almacenar en x Sumar x Almacenar en x Almacenar en x El riesgo read-after-write entre dos instrucciones i y j (siendo j posterior a i) se presentara cuando j trata de leer un operando que es modificado por i. Si la operacin en i que modifica el operando no se completa antes que j lo acceda, entonces j leer el valor errneo. En el ejemplo el riesgo existir entre el primer almacenar en x y el sumar x, si el sumar x extrae el operando antes que haya sido actualizado por almacenar. El write-after-read ocurre cuando la instruccin j desea modificar un operando que es ledo por i. Si j modifica el operando antes que i lo haya ledo, este dato as ledo ser errneo. Este riesgo puede existir entre el sumar y el segundo almacenar en x. Finalmente el write-after-write existe cuando i y j tratan de actualizar el mismo operando, en el caso que j lo haga en primer lugar. En nuestro ejemplo se el segundo almacenar se realiza despus del tercero, obviamente el valor en x no es el que el programa espera.

3.1.2 Segmentadas. 3.1.3 De multiprocesamiento. 3.2 Anlisis de los componentes. 3.2.1 CPU.Unidad central de proceso o UCP (conocida por sus siglas en ingls, CPU), circuito microscpico que interpreta y ejecuta instrucciones. La CPU se ocupa del control y el proceso de datos en las computadoras. Generalmente, la CPU

es un microprocesador fabricado en un chip, un nico trozo de silicio que contiene millones de componentes electrnicos. El microprocesador de la CPU est formado por una unidad aritmtico-lgica que realiza clculos y comparaciones, y toma decisiones lgicas (determina si una afirmacin es cierta o falsa mediante las reglas del lgebra de Boole); por una serie de registros donde se almacena informacin temporalmente, y por una unidad de control que interpreta y ejecuta las instrucciones. Para aceptar rdenes del usuario, acceder a los datos y presentar los resultados, la CPU se comunica a travs de un conjunto de circuitos o conexiones llamado bus. El bus conecta la CPU a los dispositivos de almacenamiento (por ejemplo, un disco duro), los dispositivos de entrada (por ejemplo, un teclado o un mouse) y los dispositivos de salida (por ejemplo, un monitor o una impresora). Los factores relevantes de los chips de UCP son: Compatibilidad: No todo el soft es compatible con todas las UCP. En algunos casos se pueden resolver los problemas de compatibilidad usando software especial. Velocidad: La velocidad de una computadora est determinada por la velocidad de su reloj interno, el dispositivo cronomtrico que produce pulsos elctricos para sincronizar las operaciones de la computadora. Las computadoras se describen en funcin de su velocidad de reloj, que se mide en mega hertz. La velocidad tambin est determinada por la arquitectura del procesador, es decir el diseo que establece de qu manera estn colocados en el chip los componentes individuales de la CPU. Desde la perspectiva del usuario, el punto crucial es que "ms rpido" casi siempre significa "mejor". El Procesador: El chip ms importante de cualquier placa madre es el procesador. Sin el la computadora no podra funcionar. A menudo este componente se determina CPU, que describe a la perfeccin su papel dentro del sistema. El procesador es realmente el elemento central del proceso de procesamiento de datos. Los procesadores se describen en trminos de su tamao de palabra, su velocidad y la capacidad de su RAM asociada. Tamao de la palabra: Es el nmero de bits que se maneja como una unidad en un sistema de computacin en particular. Velocidad del procesador: Se mide en diferentes unidades segn el tipo de computador: MHz (Megahertz): para microcomputadoras. Un oscilador de cristal controla la ejecucin de instrucciones dentro del procesador. La velocidad del procesador de una micro se mide por su frecuencia de oscilacin o por el nmero de ciclos de reloj por segundo. El tiempo transcurrido para un ciclo de reloj es 1/frecuencia. MIPS (Millones de instrucciones por segundo): Para estaciones de trabajo, minis y macrocomputadoras. Por ejemplo una computadora de 100 MIPS puede ejecutar 100 millones de instrucciones por segundo.

FLOPS (floating point operations per second, operaciones de punto flotante por segundo): Para las supercomputadoras. Las operaciones de punto flotante incluyen cifras muy pequeas o muy altas. Hay supercomputadoras para las cuales se puede hablar de GFLOPS (Gigaflops, es decir 1.000 millones de FLOPS). Capacidad de la RAM: Se mide en trminos del nmero de bytes que puede almacenar. Habitualmente se mide en KB y MB, aunque ya hay computadoras en las que se debe hablar de GB.http://www.monografias.com/trabajos12/comptcn/comptcn.shtml#UCP

3.2.1.1

Arquitecturas.

Arquitectura interna del CPU La CPU contiene un conjunto de localidades de almacenamiento temporal de datos de alta velocidad llamada registro. Algunos de los registros estn dedicados al control, y solo la unidad de control tiene acceso a ellos. Los registros restantes son los registros de uso general y el programador es el usuario que tiene acceso a ellos. Dentro del conjunto bsico de registros de control se deben incluir a los siguientes: Contador de programa (PC). Registro de direcciones de la memoria (MAR). Registro de datos (RD). Registro de instrucciones (ER). Palabra de estado de programa (PSW). (PC): La funcin del PC consiste en seguir la pista de la instruccin por buscar (capturar) en el siguiente ciclo de maquina, por lo tanto contiene la direccin de la siguiente instruccin por ejecutar. El PC es modificado dentro del ciclo de bsqueda de la instruccin actual mediante la suma de una constante. El numero que se agrega al PC es la longitud de una instruccin en palabras. Por lo tanto, si una instruccin tiene una palabra de longitud se agrega 1 al PC, si una instruccin tiene dos palabras de largo se agrega 2, y as sucesivamente. Registro de direcciones de la memoria (MAR): funciona como registro de enlace entre la CPU y el canal de direcciones. Cuando se logra el acceso a la memoria la direccin es colocada en el MAR por la unidad de control y ah permanece hasta que se completa la transaccin. El numero de bit que hay en el MAR es igual al del canal de direcciones. La diferencia que existe entre el PC y el MAR es que durante el ciclo de ejecucin de una instruccin, el PC y el MAR sirven al mismo fin. Sin embargo, muchas de las instrucciones de la maquina hacen referencia a la memoria y operan con los datos que estn en ella. Como la direccin de los datos suele ser diferente de la instruccin siguiente se necesita el MAR.

Registro de datos: la funcin del RD consiste en proporcionar un rea de almacenamiento temporal (memoria intermedia, acumulada o buffer) de datos que se intercambian entre la PCU y la memoria. Los datos pueden ser instrucciones (obtenidos en el ciclo de ejecucin) o datos del operando (obtenidos en el ciclo de ejecucin). Debido a su conexin directa con el canal de datos el RD contiene el mismo numero de bit que dicho canal. Registro de instrucciones (ER): es un registro que conserva el cdigo de operacin de la instruccin en todo el ciclo de la maquina. El cdigo es empleado por la unidad de control de la CPU para generar las seales apropiadas que controla le ejecucin de la instruccin. La longitud del ER es la longitud en bit del cdigo de operacin. Palabra de estado de programa (PSW): la palabra de estado o condicin de programa almacena informacin pertinente sobre el programa que este ejecutndose. Por ejemplo al completarse una funcin de la unidad aritmtica lgica se modifica un conjunto de bit llamados cdigos (o seales de condicin). Estos bit especifican si el resultado de una operacin aritmtica fue 0 o negativo o si el resultado se desbord. El programa puede verificar estos bit en las instrucciones siguientes cambiar en forma condicional su flujo de control segn su valor. Adems el PSW contiene bit que hacen posible que la computadora responda a solicitudes de servicio asincrnicas generadas por dispositivos de Entrada-Salida, o condiciones de error interno. Estas seales se denominan interrupciones. Los registros restantes que se pueden encontrar en un microprocesador son de uso general. Estos se utilizan para almacenar informacin en forma temporal. Tambin retienen operandos que participan en operaciones de la ULA. Algunas veces el conjunto de instrucciones de la computadora y el esquema de direccionamiento de la arquitectura restringe el uso de alguno de estos registros. Si bien en todas las maquinas la informacin contenida en el registro puede manipularse como datos ordinarios durante la ejecucin de algunas instrucciones los datos se utilizan en forma explcita para decidir una direccin de la memoria. La ventaja de usar registros para retener datos de operaciones es la velocidad. http://html.rincondelvago.com/arquitectura-interna-de-la-cpu.html

Elementos que la componen1. Unidad de control: controla el funcionamiento de la CPU y por tanto de el computador. 2. Unidad aritmtico-lgica (ALU): encargada de llevar a cabo las funciones de procesamiento de datos del computador. 3. Registros: proporcionan almacenamiento interno a la CPU. 4. Interconexiones CPU: Son mecanismos que proporcionan comunicacin entre la unidad de control, la ALU y los registros. Unidad de Control.

La Unidad de Control (UC) coordina la actividad de todos los elementos que deben intervenir en un proceso concreto. Dirige todas las seales elctricas del ordenador, es decir, es responsable del correcto funcionamiento de todos los componentes de la CPU. De esta forma, debe gobernar el funcionamiento de los perifricos de entrada, salida y almacenamiento, al mismo tiempo que el acceso a la memoria principal y la ALU. Por esta razn la UC es la encargada de interpretar el programa, del que recibe las instrucciones codificadas convenientemente, as como de enviar las rdenes oportunas a las unidades perifricas implicadas. La UC utiliza una seal generada por un reloj interno con objeto de sincronizar el funcionamiento operativo de cada elemento. Esta tarea es fundamental, ya que, en caso contrario, no podra establecerse un ritmo de operacin adecuado que controle la velocidad de trabajo de cada componente. Se comprende fcilmente que la mayor o menor frecuencia del reloj interno, determinar la capacidad de hacer un nmero mayor o menor de instrucciones por segundo. Esta velocidad se suele medir actualmente en gigahertzios (GHz). No todas las instrucciones que tenga que ejecutar la UC consumen el mismo nmero de seales generadas por el reloj, sino que las instrucciones complejas necesitarn ms ciclos que las instrucciones simples. En cualquier caso, la UC se encargar de las siguientes funciones:

Determinar si el ordenador est en fase de introduccin o en fase de ejecucin de programa. En el primer caso, la UC activa la unidad de entrada de datos y controla que las sucesivas instrucciones que componen el programa vayan siendo almacenadas en posiciones contiguas de memoria. En la fase de ejecucin del programa, la UC decodifica la primera instruccin del programa y segn el tipo de instruccin pide su ejecucin al dispositivo adecuado: las entradas y salidas a los perifricos y las operaciones aritmticas y lgicas a la ALU. Decodificar la instruccin en curso y, segn su cdigo de operacin, mandar una seal para que acte la Unidad Aritmtico-Lgica o una Unidad de entrada o de salida. Verificar la transferencia de informacin entre los registros y la memoria principal y viceversa. Controlar qu instruccin se est ejecutando en cada momento y qu instruccin deber seguirle a continuacin.

Unidad Aritmtico-Logica. La Unidad Aritmtico-Lgica (ALU, Arithmetic-Logical Unit) es la encargada de ejecutar las operaciones aritmticas bsicas (suma, resta, multiplicacin y divisin) y lgicas (AND, OR, NOT). Slo con estas operaciones bsicas es procesada toda la informacin y se obtienen los resultados. Los datos sobre los que opera esta unidad provienen de la memoria principal y pueden estar almacenados temporalmente en algunos registros internos de la propia unidad. La UC se encarga de enviarle los datos correspondientes e indicarle qu operacin tiene que realizar.

3.2.1.2Tipos

Tipos.

Bsicamente nos encontramos con dos tipos de diseo de los microprocesadores: RISC (Reduced-Instruction-Set Computing) y CISC (complex-instruction-set computing). Los microprocesadores RISC se basan en la idea de que la mayora de las instrucciones para realizar procesos en el computador son relativamente simples por lo que se minimiza el nmero de instrucciones y su complejidad a la hora de disear la CPU. Algunos ejemplos de arquitectura RISC son el SPARC de Sun Microsystems, el microprocesador Alpha diseado por la antigua Digital, hoy absorbida por Compaq y los Motorola 88000 y PowerPC. Estos procesadores se suelen emplear en aplicaciones industriales y profesionales por su gran rendimiento y fiabilidad. Los microprocesadores CISC, al contrario, tienen una gran cantidad de instrucciones y por tanto son muy rpidos procesando cdigo complejo. Las CPUs CISC ms extendidas son las de la familia 80x86 de Intel cuyo ltimo micro es el Pentium II. ltimamente han aparecido otras compaas como Cirix y AMD que fabrican procesadores con el juego de instrucciones 80x86 y a un precio sensiblemente inferior al de los microprocesadores de Intel. Adems, tanto Intel con MMX como AMD con su especificacin 3D-Now! estn apostando por extender el conjunto de instrucciones de la CPU para que trabaje ms eficientemente con tratamiento de imgenes y aplicaciones en 3 dimensiones.

3.2.1.3

Caractersticas.

La CPU ha de cumplir dos caractersticas bien definidas: 1. Ser capaz de reconocer y ejecutar una serie de instrucciones elementales (programa) en base a las cuales se puede realizar cualquier proceso de datos deseado, por complejo que sea. 2. Tener separados dos estados diferentes. En una primera fase ha de poder recibir y memorizar las instrucciones que configuran el proceso pedido (introduccin del programa) y en segunda fase debe ejecutar en secuencia las instrucciones recibidas (ejecucin del programa). Al realizar esta ejecucin se leern los datos que se necesiten a travs de un dispositivo de entrada de datos en el momento en que sean requeridos, realizando las operaciones que forman el proceso hasta la obtencin de los resultados, los cuales sern enviados al usuario a travs de un dispositivo de salida.

3.2.1.4Funciones que realiza

Funcionamiento.

La Unidad central de proceso o CPU, se puede definir como un circuito microscpico que interpreta y ejecuta instrucciones. La CPU se ocupa del control y el proceso de datos en los ordenadores. Habitualmente, la CPU es un microprocesador fabricado en un

chip, un nico trozo de silicio que contiene millones de componentes electrnicos. El microprocesador de la CPU est formado por una unidad aritmtico-lgica que realiza clculos y comparaciones, y toma decisiones lgicas (determina si una afirmacin es cierta o falsa mediante las reglas del lgebra de Boole); por una serie de registros donde se almacena informacin temporalmente, y por una unidad de control que interpreta y ejecuta las instrucciones. Para aceptar rdenes del usuario, acceder a los datos y presentar los resultados, la CPU se comunica a travs de un conjunto de circuitos o conexiones llamado bus. El bus conecta la CPU a los dispositivos de almacenamiento (por ejemplo, un disco duro), los dispositivos de entrada (por ejemplo, un teclado o un mouse) y los dispositivos de salida (por ejemplo, un monitor o una impresora).

3.2.2 Memoria.Se denomina memoria a los circuitos que permiten almacenar y recuperar la informacin. En un sentido ms amplio, puede referirse tambin a sistemas externos de almacenamiento, como las unidades de disco o de cinta. Memoria de acceso aleatorio o RAM (Random Access Memory) es la memoria basada en semiconductores que puede ser leda y escrita por el microprocesador u otros dispositivos de hardware. El acceso a las posiciones de almacenamiento se puede realizar en cualquier orden. Los chips de memoria son pequeos rectngulos negros que suelen ir soldados en grupos a unas plaquitas con "pines" o contactos. La diferencia entre la RAM y otros tipos de memoria de almacenamiento, como los disquetes o los discos duros, es que la RAM es muchsimo ms rpida, y que se borra al apagar el ordenador, no como stos.

El interior de cada chip se puede imaginar como una matriz o tabla, en la cual cada celda es capaz de almacenar un bit. Por tanto, un bit se puede localizar directamente proporcionando una fila y una columna de la tabla. En realidad, la CPU identifica cada celda mediante un nmero , denominado direccin de memoria. A partir de una direccin, se calcula cul es la fila y columna correspondiente, con lo que ya se puede acceder a la celda deseada. El acceso se realiza en dos pasos: primero se comunica la fila y luego la columna, empleando los mismos terminales de conexin. Obviamente, esta tcnica (denominada multiplexado) permite emplear menos terminales de conexin para acceder a la RAM, lo que optimiza la relacin entre el tamao del chip y la capacidad de almacenamiento. Realmente, la CPU no suele trabajar con bits independientes, sino ms bien con agrupaciones de los mismos en forma de palabras binarias. Esto hace que la RAM no se presente en un solo chip, sino ms bien en agrupaciones de los mismos.Hemos de tener muy en cuenta que esta memoria es la que mantiene los programas funcionando y abiertos, por lo que al ser Windows 95/98 un sistema operativo multitarea, estaremos a merced de la cantidad de memoria RAM que tengamos dispuesta en el ordenador. En la actualidad hemos de disponer de la mayor cantidad posible de sta, ya que estamos supeditados al funcionamiento ms rpido o ms lento de nuestras aplicaciones diarias. La memoria RAM hace unos aos era muy cara, pero hoy en da su precio ha bajado considerablemente. Cuando alguien se pregunta cunta memoria RAM necesitar debe sopesar con qu programas va a trabajar normalmente. Si nicamente vamos a trabajar con aplicaciones de texto, hojas de clculo y similares nos bastar con unos 32 Mb de sta (aunque esta cifra se ha quedado bastante corta), pero si trabajamos con multimedia, fotografa, vdeo o CAD, por poner

un ejemplo, hemos de contar con la mxima cantidad de memoria RAM en nuestro equipo (unos 128 Mb o ms) para que su funcionamiento sea ptimo, ya que estos programas son autnticos devoradores de memoria. Hoy en da no es recomendable tener menos de 64 Mb, para el buen funcionamiento tanto de Windows como de las aplicaciones normales, ya que notaremos considerablemente su rapidez y rendimiento, pues generalmente los equipos actuales ya traen 128 Mb de RAM.

3.2.2.1

Arquitecturas.

Elementos que la componen Una memoria vista desde el exterior, tiene la estructura mostrada en la figura 3-1. Para efectuar una lectura se deposita en el bus de direcciones la direccin de la palabra de memoria que se desea leer y entonces se activa la seal de lectura (R); despus de cierto tiempo (tiempo de latencia de la memoria), en el bus de datos aparecer el contenido de la direccin buscada. Por otra parte, para realizar una escritura se deposita en el bus de datos la informacin que se desea escribir y en el bus de direcciones la direccin donde deseamos escribirla, entonces se activa la seal de escritura (W), pasado el tiempo de latencia, la memoria escribir la informacin en la direccin deseada. Internamente la memoria tiene un registro de direccin (MAR, memory address register), un registro buffer de memoria o registro de datos (MB, memory buffer, o MDR, memory data register) y, un decodificador como se ve en la figura 3-2. Esta forma de estructurar la memoria se llama organizacin lineal o de una dimensin. En la figura cada lnea de palabra activa todas las clulas de memoria que corresponden a la misma palabra.

Por otra parte, en una memoria ROM programable por el usuario con organizacin lineal, las uniones de los diodos correspondientes a lugares donde deba haber un "0" deben destruirse. Tambin se pueden sustituir los diodos por transistores y entonces la clula de memoria tiene el esquema de la figura 3-3 en este caso la unin que debe destruirse para grabar un "0" es la del emisor.

En el caso de una memoria RAM esttica con organizacin lineal cada clula de memoria toma la forma mostrada en la figura 3-4. En este esquema las primeras puertas AND slo son necesarias en el una de las clulas de cada palabra. Se debe comentar la necesidad de la puerta de tres estados a la salida del biestable: esta puerta se pone para evitar que se unan las salidas de los circuitos de las clulas de diferentes palabras a travs del hilo de bit. Si esa puerta no se pusiera (o hubiera otro tipo de puerta en su lugar, como una puerta AND) la informacin correspondiente a la palabra activa entrara por los circuitos de salida de las dems clulas, lo que los daara. Organizar 1a memoria de esta forma, tiene el inconveniente de que la complejidad del decodificador crece exponencialmente con el nmero de entradas y, en una memoria de mucha capacidad, la complejidad del decodificador la hace inviable. Esto hace necesaria una alternativa que simplifique los decodificadores. Esta alternativa la constituye la organizacin en dos dimensiones en que los bits del registro de direccin se dividen en dos partes y cada una de ellas va a un decodificador diferente. En este caso, las lneas procedentes de ambos decodificadores (X e Y) se cruzan formando un sistema de coordenadas en que cada punto de cruce corresponde a una palabra de memoria. Dado que en cada decodificador slo se activa una lnea, slo se activar la palabra correspondiente al punto de cruce de las dos lneas activadas. Fcilmente se puede comprender que los decodificadores se simplifican mucho ya que cada uno tiene la mitad de entradas que en el caso anterior. Hay que decir, sin embargo, que la clula de memoria se complica un poco porque hay que aadir una puerta AND en cada palabra para determinar si coinciden las lneas X e Y.

La organizacin de la memoria en dos dimensiones tambin es til para las memorias dinmicas ya que el refresco de estas memorias se realiza por bloques y stos pueden coincidir con una de las dimensiones (la que corresponda a los bits de direccin de mayor peso). En la prctica, las memorias dinmicas son ms lentas que las estticas y adems son de lectura destructiva, pero resultan ms baratas, aunque necesiten circuitos de refresco, si la memoria no es de mucha capacidad.

3.2.2.2

Tipos.

Tipos y Funcionamiento Todas hacen la misma funcin, pero entre ellas las diferenciamos por el tiempo de acceso y la capacidad, o por el modo como trabajan: Registros del microprocesador: Interaccionan continuamente con la CPU, puesto que forman parte de ella, su tiempo de acceso es muy pequeo y una capacidad mnima, normalmente igual a la "palabra" del microprocesador (de 1 a 8 bytes). Registros intermedios: Bsicamente es un paso intermedio entre dos memorias, un buffer. Tiene capacidad muy pequea y un tiempo de acceso tambin muy pequeo. Memoria cach: Es la ms utilizada por la CPU, y la ms importante entre la principal y el microprocesador. Aunque sean de pequea capacidad, normalmente una fraccin de la memoria principal mxima posible, est continuamente intercambiando informacin tanto con el procesador como con la memoria principal, aunque normalmente se utiliza para guardar la direccin de la memoria principal, en vez de almacenar el archivo entero, as tarda menos a pasar la informacin hacia la CPU, que si lo hiciera mediante la cach. Y es por esta razn, que a menudo (excepto modelos especiales como Celeron y Duron), hay dos de memorias cach, dos niveles: Uno en el interior del microprocesador (L1), y el otro entre la principal y la CPU (L2), al exterior del "micro" de ms capacidad que la de dentro. Memoria central o principal: Donde se almacenan programas y datos. La CPU lee y escribe en ella aunque en menos cantidades que en las anteriores. Tiempo de acceso relativamente rpido y gran capacidad. Memorias de masas o auxiliares: Son dispositivos exteriores al ordenador o conectados a la placa base por un controlador de bus (disco duro, disquetes, etc.). Dnde se almacenen todos los programas y archivos para un uso posterior. En caso de que la memoria principal sea insuficiente, se hacen servir como apoyo para sta, denominada "memoria virtual".

Como he mencionado anteriormente, las memorias adems de clasificarse por su tiempo de acceso y capacidad, tambin se pueden clasificar por la forma en que se modifican los datos y la tecnologa empleada. As, encontramos que hay dos grandes grupos:

1. Memorias RAM (Random Acces Memory): Son memorias en las que se puede leer y escribir. Se componen electrnicamente por chips, dnde se pueden subdividir en: SRAM (Static RAM): Su clula est basada en un biestable. DRAM (Dinamic RAM): Su clula est basada en un pequeo condensador, carga del cual representa la informacin almacenada. Estas necesitan circuitos adicionales de refresco, puesto que como los condensadores son de baja capacidad, a travs de la s fugas, la informacin se podra perder; son de lectura destructiva. 2. Memorias ROM (Read Only Memory): Son memorias en las que slo se puede leer. Hay de varios tipos: ROM: programadas por mscara, la informacin es grabada enla fbrica y no tiene posible modificacin. PROM, o ROM: programable una sola vez. EPROM (Erasable PROM) o RPROM (Reprogramable ROM): su contenido puede ser borrado mediante rayos ultravioletas, para acto seguido regrabarlas. EAROM (Electrically Alterable ROM) o EEROM (Electrically Erasable ROM), son la frontera entre las RAM y las ROM, su contenido puede ser regrabado elctricamente, se diferencian de las RAM en que no son voltiles. Memoria FLASH, denominada as por la velocidad en la que se puede reprogramar (en tan solo segundos), usan el borrado elctrico. Bsicamente las ROM se basan en una matriz de diodos unidos, esta unin puede ser destruida por una sobretensin. De esta forma, salen de la fbrica con las uniones juntas y para grabarlas se rompen dnde se quieran poner ceros. Aparte de los mdulos de memoria aqu mencionados tambin existen, aunque ya en desuso, de otros como los SIMM (Single InCE) NULL COUNT = 0 Notas: (1) Slo el contador especificado por la palabra de control tiene su NULL COUNT a 1; los dems contadores, lgicamente, no ven afectado su correspondiente bit NULL COUNT. (2) Si el contador es programado para cuentas de 16 bits, NULL COUNT pasa a valer 1 inmediatamente despus de enviar el segundo byte. Si se enclava varias veces seguidas la palabra de estado, todas sern ignoradas menos la primera, por lo que el estado ledo ser el correspondiente al contador en el momento en que se enclav por vez primera la palabra de estado. Se pueden enclavar simultneamente la cuenta y la palabra de estado (en un comando Read-Back con D5=D4=0), lo que equivale a enviar dos Read-Back consecutivos. En este caso, y con independencia de quin de los dos hubiera sido enclavado primero, la primera lectura realizada devolver la palabra de estado y la segunda la cuenta enclavada (que automticamente quedar de nuevo desenclavada). MODOS DE OPERACIN DEL 8254 MODO 0: Interrupt On Terminal Count (Interrupcin al final de la cuenta). Es empleado tpicamente para contar sucesos. Tras escribir la palabra de control, OUT est inicialmente en estado bajo, y permanecer as hasta que el contador alcance el cero: entonces se pone a 1 y no volver a bajar hasta que se escriba una nueva cuenta o una nueva palabra de control. La entrada GATE puesta a 0 permite inhibir la cuenta,

sin afectar a OUT. El contador sigue evolucionando tras llegar a cero (0FFFFh, 0FFFEh, ...) por lo que lecturas posteriores del mismo devuelven valores pseudoaleatorios. Tras escribir la cuenta inicial y la palabra de control en el contador, la cuenta inicial ser cargada en el prximo pulso del reloj conectado (CLK), pulso que no decrementa el contador: para una cuenta inicial N, OUT permanecer a 0 durante N+1 pulsos del reloj tras escribir la cuenta inicial. Si se escribe una nueva cuenta en el contador, ser cargada en el prximo pulso del reloj y el contador comenzar a decrementarse; si se enva una cuenta de dos bytes, el primer byte enviado inhibe la cuenta y OUT es puesto a cero inmediatamente (sin esperar a CLK): tras escribir el segundo byte, la cuenta ser cargada en el siguiente pulso del reloj. Esto permite sincronizar la secuencia de conteo por software. Si se escribe una nueva cuenta mientras GATE=0, sta ser cargada en cualquier caso en el siguiente pulso del reloj: cuando GATE suba, OUT se pondr en alto tras N pulsos del reloj (y no N+1 en este caso).

MODO 1: Hardware Retriggerable One-Shot (Monoestable programable). OUT ser inicialmente alta y bajar en el pulso de reloj que sigue al flanco de subida de GATE, permaneciendo en bajo hasta que el contador alcance el cero. Entonces, OUT sube y permanece activo hasta el pulso del reloj que siga al prximo flanco de subida de GATE. Tras escribir la palabra de control y la cuenta inicial, el contador est preparado. Un flanco de subida de GATE provoca la carga del contador (CR -< CE) y que OUT baje en el prximo pulso del reloj, comenzando el pulso One-Shot de N ciclos de reloj de duracin; el contador vuelve a ser recargado si se produce un nuevo flanco de subida de GATE, de ah que OUT permanezca en bajo durante N pulsos de reloj tras la ltima vez que suceda esto. El pulso One-Shot puede repetirse sin necesidad de recargar el contador con el mismo valor. GATE no influye directamente en OUT. Si se escribe una nueva cuenta durante un pulso One-Shot, el One-Shot en curso no resulta afectado, a menos, lgicamente, que se produzca un nuevo flanco de subida de GATE: en ese caso, el contador sera recargado con el nuevo valor.

MODO 2: Rate Generator (Generador de ritmo). En este modo, el contador funciona como un divisor por N. Es empleado tpicamente

para las interrupciones de los relojes de tiempo real. OUT estar inicialmente en alto. Cuando el contador se decremente hasta el valor 1, OUT pasar a estado bajo durante un pulso del reloj; tras ello, volver a subir y el contador se recargar con la cuenta inicial, repitindose el proceso. Este modo es, por tanto, peridico, y la misma secuencia se repite indefinidamente. Para una cuenta inicial N, la secuencia se repite cada N ciclos de reloj (CLK). Si GATE=0 la cuenta descendiente se detiene: si GATE es bajado durante un pulso de salida, OUT sube inmediatamente. Un flanco de subida en GATE provoca una recarga del contador con el valor de cuenta inicial en el siguiente pulso del reloj (despus, como cabra esperar, OUT bajar tras los N pulsos del reloj correspondientes): GATE puede ser utilizado para sincronizar el contador. Tras escribir la palabra de control y la cuenta inicial, el contador ser cargado en el prximo pulso del reloj: OUT bajar N pulsos de reloj despus, lo que permite tambin una sincronizacin por software. Escribir un nuevo valor de cuenta durante el funcionamiento del contador no afecta a la actual secuencia de cuenta; si se recibe un flanco de subida de GATE antes del final del perodo el contador se recargar con ese nuevo valor de cuenta inicial tras el prximo pulso del reloj y volver a comenzar, en caso contrario se recargar con el nuevo valor tras finalizar con normalidad el ciclo en curso.

MODO 3: Square Wave Mode (Generador de onda cuadrada). Este modo es empleado normalmente para la generacin de una seal de onda cuadrada. Este modo es similar al 2, con la diferencia de que la salida OUT conmuta al transcurrir la mitad de la cuenta: inicialmente est en alto, pero al pasar la mitad de la cuenta pasa a estado bajo hasta que la cuenta finaliza. Este modo es tambin peridico: la onda resultante para una cuenta inicial N tiene un perodo de N ciclos. Si GATE=0 la cuenta descendiente se detiene: si GATE es bajado durante un pulso de salida, OUT sube inmediatamente sin esperar ningn CLK. Un flanco de subida en GATE provoca una recarga del contador con el valor de cuenta inicial en el siguiente pulso del reloj: GATE puede ser utilizado para sincronizar el contador. Tras escribir la palabra de control y la cuenta inicial, el contador ser cargado en el prximo pulso del reloj: tambin puede ser sincronizado por software. Escribir un nuevo valor de cuenta durante el funcionamiento del contador no afecta a la actual secuencia de cuenta; si se recibe un flanco de subida de GATE antes del final del medio-perodo el contador se recargar con ese nuevo valor de cuenta inicial tras el prximo pulso del reloj y volver a comenzar, en caso contrario se recargar con el nuevo valor tras finalizar con normalidad el medio-ciclo en curso. Para valores de cuenta impares, la duracin a nivel alto de OUT ser un perodo de reloj mayor que la duracin a nivel bajo.

MODO 4: Software Triggered Mode (Pulso Strobe iniciado por software). OUT est en alto al principio; cuando la cuenta inicial expira, OUT baja durante un pulso de reloj y luego vuelve a subir. El proceso se inicia cuando se escribe la cuenta inicial. GATE=0 inhibe el contador y GATE=1 lo habilita; GATE no influye en OUT. Tras escribir la palabra de control y la cuenta inicial, el contador ser cargado en el prximo pulso del reloj: como ese pulso no decrementa el contador, para una cuanta inicial N, OUT no bajar hasta N+1 pulsos de CLK. Si se escribe una nueva cuenta durante el proceso, se cargar en el prximo pulso CLK y continuar el proceso de cuenta con la nueva cuenta escrita; si la cuenta es de 2 bytes, al escribir el primero no se altera el funcionamiento del contador hasta que se enve el segundo.

MODO 5: Hardware Triggered Strobe (Pulso Strobe iniciado por hardware). OUT estar en alto al principio: con el flanco de subida de la seal GATE, el contador comienza a decrementar la cuenta. Cuando llega a cero, OUT baja durante un pulso CLK y luego vuelve a subir. Despus de escribir la palabra de control y la cuenta inicial, el contador no ser cargado hasta el pulso de reloj posterior al flanco de subida de GATE. Este pulso CLK no decrementa el contador: por ello, ante una cuenta inicial N, OUT no bajar hasta que pasen N+1 pulsos de reloj. GATE no afecta a OUT. Si una nueva cuenta inicial es escrita durante el proceso, la actual secuencia del contador no ser alterada; si se produce un flanco de subida en GATE antes de que la nueva cuenta sea escrita pero despus de que expire la cuenta actual, el contador ser cargado con la nueva cuenta en el prximo pulso del reloj.

12.3.2 - EL 8254 EN EL ORDENADOR. Todos los AT y PS/2 llevan instalado un 8254 o algo equivalente; los PC/XT van equipados con un 8253, algo menos verstil; los PS/2 ms avanzados tienen un temporizador con un cuarto contador ligado a la interrupcin no enmascarable, si bien no lo consideraremos aqu. Todos los contadores van conectados a un reloj que oscila a una frecuencia de 1.193.180 ciclos por segundo (casi 1,2 Mhz). La direccin base en el espacio de E/S del ordenador elegida por IBM cuando dise el PC es la 40h. Por tanto, los tres contadores son accedidos, respectivamente, a travs de los puertos 40h, 41h y 42h; la palabra de control se enva al puerto 43h. La seal GATE de los contadores 0 y 1 est siempre a 1; en el contador 2 es seleccionable el nivel de la lnea GATE a travs de bit 0 del puerto E/S 61h. La BIOS programa por defecto el contador 0 en el modo 3 (generador de onda cuadrada) y el contador 1 en el modo 2 (generador de ritmo); el usuario normalmente programa el contador 2 en el modo 2 3. La salida del contador 0 est conectada a IRQ 0 (ligado a la INT 8, que a su vez invoca a INT 1Ch); este contador est programado por defecto con el valor cero (equivalente a 65536), por lo que la cadencia de los pulsos es de 1.193.180/65.536 = 18,2 veces por segundo, valor que determina la precisin del reloj del sistema, ciertamente demasiado baja. Se puede modificar el valor de recarga de este contador en un programa, llamando a la vieja INT 8 cada 1/18,2 segundos para no alterar el funcionamiento normal del ordenador, si bien no es conveniente instalar programas residentes que cambien permanentemente esta especificacin: los programas del usuario esperan encontrarse el temporizador a la habitual y poco til frecuencia de 18,2 interrupciones/segundo. La salida del contador 1 controla el refresco de memoria en todas las mquinas, su valor normal para el divisor es 18; aumentndolo se puede acelerar el funcionamiento del ordenador, con el riesgo -eso s- de un fallo en la memoria, detectado por los chips de paridad -si los hay-, que provoca generalmente el bloqueo del equipo. De todas maneras, en los PC/XT se puede aumentar entre 19 y 1000 sin demasiados riesgos, acelerndose en ocasiones hasta casi un 10% la velocidad de proceso del equipo. En los AT la ganancia de velocidad es mucho menor y adems este es un punto demasiado sensible que conviene no tocar para no correr riesgos, aunque se podra bajar hasta un valor 2-17 para ralentizar el sistema. Sin embargo, no es conveniente alterar esta especificacin porque, como se ver ms adelante, hay un mtodo para realizar retardos (empleado por la BIOS y algunas aplicaciones) que se vera afectado. El contador 2 puede estar conectado al altavoz del ordenador para producir sonido; alternativamente puede emplearse para temporizar. Es el nico contador que queda realmente libre para el usuario, lo que suele dar quebraderos de cabeza a la hora de producir sonido. 12.3.3 - TEMPORIZACIN.

Los contadores 0 y 1, especialmente este ltimo, ya estn ocupados por el sistema; en la prctica el nico disponible es el 2. Este contador ha sido conectado con el doble propsito de temporizar y de generar sonido. Para emplearlo en las temporizaciones, es preciso habilitar la puerta GATE activando el bit 0 del puerto 61h; tambin hay que asegurarse de que la salida del contador no est conectada al altavoz (a menos que se desee msica mientras se cronometra) poniendo a 0 el bit 1 del mismo puerto (61h):IN AL,61h AND AL,11111101b contador 2 con el altavoz) OR AL,00000001b contador 2) JMP SHORT $+2 OUT 61h,AL ; borrar bit 1 (conexin

; activar bit 0 (lnea GATE del ; estado de espera para E/S

El siguiente programa de ejemplo, CRONOS.ASM, incluye dos subrutinas para hacer retardos de alta precisin. La primera de ellas, inic_retardo, hay que llamarla al principio para que programe el contador 2 del temporizador; la rutina retardo se encarga de hacer el retardo que se indique en AX (en unidades de 1/1193180 segundos).; ; ; ; ; ; ; ; ; ******************************************************************** * * * CRONOS.ASM - Subrutinas para hacer retardos de precisin. * * * * INIT_RETARDO: llamarla al principio del todo. * * RETARDO: Entregar en AX el n de 1193180-avos de * * segundo que dura el retardo (mximo 65400). * * * ******************************************************************** SEGMENT ASSUME CS:programa, DS:programa ORG inicio: CALL MOV MOV CALL LOOP INT PROC PUSH IN AND OR JMP OUT MOV JMP OUT POP inic_retardo CX,20 AX,59659 retardo retard 20h ; 20 retardos ; de 50 milisegundos 100h

programa

retard:

inic_retardo

AX AL,61h AL,11111101b AL,1 SHORT $+2 61h,AL AL,10110100b SHORT $+2 43h,AL AX

; contador 2, modo 2, binario

inic_retardo retardo

retardando:

retardo programa

RET ENDP PROC PUSH PUSH CLI OUT MOV JMP OUT JMP IN XOR JMP OUT XOR JMP OUT STI JMP MOV MOV OUT JMP IN MOV JMP IN XCHG CMP MOV JBE POP POP RET ENDP ENDS END

AX BX 42h,AL AL,AH SHORT $+2 42h,AL SHORT $+2 AL,61h AL,1 SHORT $+2 61h,AL AL,1 SHORT $+2 61h,AL SHORT $+2 BX,0FFFFh AL,10000000b 43h,AL SHORT $+2 AL,42h AH,AL SHORT $+2 AL,42h AH,AL AX,BX BX,AX retardando BX AX ; parte baja de la cuenta ; parte alta ; bajar GATE ; subir GATE

; enclavamiento ; leer contador

; AX = valor del contador

inicio

El procedimiento inic_retardo programa el contador 2 en el modo 2, con datos en binario y dejndolo listo para enviar/recibir secuencias de 2 bytes para la cuenta (primero el byte menos significativo y luego el alto). Las instrucciones JMP SHORT $ +2 colocadas oportunamente (para saltar a la siguiente lnea) evitan que las mquinas AT ms antiguas fallen en dos operaciones de E/S consecutivas demasiado rpidas. El procedimiento retardo enva el nuevo valor de cuenta. A continuacin baja y vuelve a subir la seal GATE, con objeto de provocar un flanco de subida en esta lnea, lo cual provoca que el contador se cargue con el valor recin enviado de manera inmediata (de lo contrario, no se recargara hasta acabar la cuenta anterior). Finalmente, entramos en un bucle donde se enclava continuamente la cuenta y se espera hasta que acabe. Lo ms intuitivo sera comprobar si la cuenta es cero, pero esto es realmente difcil ya que cambia nada menos que ms de 1 milln de veces por segundo!. Por tanto, nos limitamos a comprobar si tras dos lecturas consecutivas la segunda es mayor que la primera ...no puede ser!... s, si puede ser, si tras llegar a 0 el contador se ha recargado. De esta manera, el mayor valor admitido en AX al llamar es 65535, aunque no conviene que sea superior a 65400, para permitir que las recargas puedan ser detectadas en la

mquina ms lenta (un XT a 4.77 y en 135/1193180 segundos dispone de unos 540 ciclos, en los que holgadamente cubre este bucle). A la hora de emplear las rutinas anteriores hay que tener en cuenta dos consideraciones. Por un lado, estn diseadas para hacer pequeos retardos: llamndolas repetidamente, el bucle que hay que hacer (y las interrupciones que se producen durante el proceso) provoca que retarden ms de la cuenta. Por ejemplo, en el programa principal, poniendo 1200 en CX en lugar de 20, el retardo debera ser de 60 segundos; sin embargo, comparando este dato con el contador de hora de la BIOS (en una versin ligeramente modificada del programa) resulta ser de casi 60,2 segundos. La segunda consideracin est relacionada con las interrupciones: de la manera que est el listado, se puede producir una interrupcin en la que algn programa residente utilice el contador 2 del temporizador, alterando el funcionamiento de las rutinas de retardo (por ejemplo, una utilidad de click en el teclado) o incluso provocando un fallo en la misma (si a sta no le da tiempo a comprobar que ya es la hora): este es un aspecto a tener en cuenta en un caso serio. Se puede, por ejemplo, inhibir todas las interrupciones (o enmascar slo las ms molestas), aunque anular la interrupcin del temporizador, la ms peligrosa, provocara un retraso de la hora del ordenador. Para hacer retardos o temporizaciones de ms de 50 milisegundos, es ms conveniente emplear el contador de hora de la BIOS (variable de 32 bits en 0040h:006Ch) que la INT 8 se encarga de incrementar 18,2 veces cada segundo y de volver a ponerlo a cero cada 24 horas. No es conveniente mirar el valor del contador de hora de la BIOS, sumarle una cantidad y esperar a que alcance dicha cantidad fija: la experiencia demuestra que eso produce a veces cuelgues del ordenador, no solo debido a que suele fallar cuando son las 23:59:59 sino tambin porque cuando se alcanza el valor esperado, por cualquier motivo (tal como un alargamiento excepcional de la rutina que controla INT 8 INT 1Ch debido a algn programa residente) puede que el programa principal no llegue a tiempo para comprobar que ya es la hora... y haya que esperar otras 24 horas a probar suerte. Lo ideal es contar las veces que cambia el contador de hora de la BIOS. Por ltimo, como ejemplo ameno, el siguiente fragmento de programa hace que la hora del ordenador vaya diez veces ms rpida -poco recomendable, aunque muy divertido- programando el contador 0 con un valor de cuenta 6553 (frente al 0=65536 habitual), de la siguiente manera:MOV datos binarios OUT MOV MOV JMP OUT MOV JMP OUT AL,00110110b 43h,AL BX,6553 AL,BL SHORT $+2 40h,AL AL,BH SHORT $+2 40h,AL ; contador 0, operacin 11b, ; valor de cuenta ; enviar byte bajo ; enviar byte alto

Un mtodo genial para hacer retardos y controlar timeouts en AT. Aunque ausente en todos los manuales de referencia tcnica y en todos los libros relacionados con la programacin de PC, existe un mtodo muy fcil y eficiente para temporizar disponible en todos los ordenadores AT. Pese a no estar documentado, un

programa muy usual como es el KEYB del MS-DOS (a partir de la versin 5.0 del sistema) lo utiliza en todos los AT, sin importar el modelo. Por ello, cabe suponer que seguramente los futuros equipos mantendrn la compatibilidad en este aspecto. Sucede que la salida del contador 1 del 8254, encargada del refresco de la memoria, controla de alguna manera desconocida (tal vez a travs de un flip-flop) la generacin de una onda cuadrada de unos 33 KHz que puede leerse a travs del bit 4 del puerto 61h (no se trata de la salida OUT del contador 1: ste est programado en modo 2 y no genera precisamente una onda cuadrada). El contador 1 es programado por la BIOS en todos los PC con una cuenta 18, conmutando el nivel de la salida cada segundo 1193180/18 = 66287,77 veces. Para hacer un determinado retardo basta con contar las veces que el bit cambia de nivel: la funcin en ensamblador retardo_asm() del programa de ejemplo lo ilustra. Este mtodo es especialmente interesante en los programas residentes que precisen retardos de precisin, para sonido u otras tareas, tales como limitar la duracin mxima de una comprobacin en un bit de estado a unos milisegundos o microsegundos (control de timeouts); la principal ventaja es que no se modifica en absoluto la configuracin de ningn chip que pueda estar empleando el programa principal, empezando por el 8254. Adems, no requiere preparacin previa alguna. Para los ms curiosos, decir que el bit 5 del puerto 61h es la salida OUT del contador 2 del 8254 (la lnea OUT del contador 2 del 8253 de los PC/XT tambin puede consultarse a travs del bit 5, pero del puerto 62h). El nico inconveniente del mtodo es la alta frecuencia con que cambia el bit: esta misma rutina escrita en C podra no ser suficientemente gil para detectar todas las transiciones en las mquinas AT ms lentas a 6 MHz. A partir de 8 MHz s puede ser factible, como evidencian las pruebas realizadas, aunque hay que extremar las precauciones para que el cdigo compilado sea lo bastante rpido: utilizar las dos variables registro que realmente soportan los compiladores y huir de la aritmtica de 32 bits, como puede observarse en la funcin retardo_c() del programa de ejemplo. Una mala codificacin o compilador podran hacer inservible el mtodo incluso en una mquina a 16 20 MHz. Para no tener problemas, es mejor emplear la versin en ensamblador, escrita en un C no mucho menos estndar. La macro MICRO() ayuda a seleccionar con ms comodidad el retardo, indicndolo en mus, aunque implica una operacin en coma flotante que por s sola aade unos 100 mus de retardo adicionales en un 386-25 sin coprocesador y con las libreras de Borland.Ancdota: Para los ms curiosos, decir que los programadores de Microsoft emplean este mtodo en el KEYB en dos ocasiones: para limitar a un tiempo razonable la espera hasta que el registro de entrada del 8042 se llene (15 ms) y, en otra ligera variante, para controlar la duracin del pitido de error. Los aficionados al ensamblador pueden comprobarlo personalmente aplicando el comando U del DEBUG sobre el KEYB para desensamblar a partir de los offsets 0E39 y 0D60, respectivamente: en el primer caso, la subrutina slo es ejecutada en AT; en el segundo, veris como el KEYB se asegura de que el equipo es un AT comprobando el valor de BP antes de saltar a 0D70 (ejecuta un bucle vaco en las dems mquinas). Esta nueva tcnica ha permitido eliminar respecto a anteriores versiones del programa algunos test sobre tipos de ordenadores, cuya finalidad ms comn era ajustar las constantes de retardo. Son vlidos tanto el KEYB del MS-DOS 5.0 castellano como el del MS-DOS 6.0 en ingls o castellano indistintamente (las direcciones indicadas coinciden!). Tambin en las BIOS modernas suele haber ejemplos de esta tcnica, aunque las direcciones ya no coinciden...

/********************************************************************/ /* */ /* Programa de demostracin del mtodo de retardo basado en la */

/* monitorizacin de los ciclos de refresco de memoria del AT. */ /* */ /********************************************************************/ #include #define MICRO(microseg) ((long)(microseg/15.08573727)) void retardo_asm(), retardo_c(); void main() { /* cuatro formas de hacer un mismo retardo de precisin */ retardo_asm retardo_asm retardo_c retardo_c } void retardo_asm (long cuenta) /* mtodo ensamblador recomendado */ { asm push ax asm push cx asm push dx asm mov cx,word ptr cuenta /* DX:CX = cuenta */ asm mov dx,word ptr [cuenta+2] asm jcxz fin_l /* posible cuenta baja nula */ esp_ref: asm in al,61h asm and al,10h /* aislar bit 5 */ asm cmp al,ah asm je esp_ref /* esperar cambio de nivel */ asm mov ah,al asm loop esp_ref /* completar cuenta baja */ fin_l: asm and dx,dx asm jz fin_ret /* posible cuenta alta nula */ asm dec dx asm jmp esp_ref /* completar cuenta alta */ fin_ret: asm pop dx asm pop cx asm pop ax } void retardo_c (long cuenta) /* mtodo en C no recomendado */ { register a, b; unsigned cuenta_h, cuenta_l; cuenta_h=cuenta >> 16; do cuenta_l=cuenta & 0xFFFF; (66267L); (MICRO(1000000L)); (66267L); (MICRO(1000000L)); /* /* /* /* un segundo */ otro segundo (ms claro!) */ ahora en C */ la otra alternativa */

do { while (a==(b=inportb(0x61) & 0x10)); a=b; } while (cuenta_l--); while (cuenta_h--); }

12.3.4 - SNTESIS DE SONIDO. La produccin de sonido es uno de los puntos ms dbiles de los ordenadores compatibles, que slo superan por muy escaso margen a alguno de los micros legendarios de los 80, si bien las tarjetas de sonido han solventado el problema. Pero aqu nos conformaremos con describir la programacin del altavoz. En todos los PCs existen dos mtodos diferentes para generar sonido, con la utilizacin del 8254 o sin l, que veremos por separado. Control directo del altavoz. El altavoz del ordenador est ligado en todas las mquinas al bit 1 del puerto E/S 61h. Si se hace cambiar este bit (mantenindolo durante cierto tiempo alto y durante cierto tiempo bajo, repitiendo el proceso a gran velocidad) se puede generar una onda cuadrada de sonido. Cuanto ms deprisa se realice el proceso, mayor ser la frecuencia del sonido. Por fortuna, la baja calidad del altavoz del PC redondea la onda cuadrada y produce un sonido algo ms musical de forma involuntaria. No existe, en cualquier caso, control sobre el volumen, que dada la calidad del altavoz tambin est en funcin de la frecuencia. Este mtodo de produccin de sonido tiene varios inconvenientes. Por un lado, la frecuencia con que se hace vibrar al bit que lo produce, si no se tiene mucho cuidado, est a menudo ms o menos ligada a la capacidad de proceso del ordenador: esto significa que el sonido es ms grave en mquinas lentas y ms agudo en las rpidas. Esto es particularmente grave y evidente cuando las temporizaciones se hacen con bucles de retardo con registros de la CPU: la frecuencia del sonido est totalmente a merced de la velocidad de la mquina en que se produce. Es por ello que el pitido de error que produce el teclado es a menudo distinto de unos ordenadores a otros, aunque tengan el mismo KEYB instalado. Otro gran inconveniente de este mtodo es que las interrupciones, fundamentalmente la del temporizador, producen fuertes interferencias sobre el sonido. Por ello, es normal tenerlas inhibidas, con el consiguiente retraso de la hora. Por ltimo, un tercer gran inconveniente es que la CPU est completamente dedicada a la produccin de sonido, sin poder realizar otras tareas mientras tanto. Antes de comenzar a producir el sonido con este mtodo hay que bajar la lnea GATE del 8254, ya que cuando est en alto y se activa tambin el bit 1 del puerto E/S 61h, el temporizador es el encargado de producir el sonido (este es el segundo mtodo, como veremos). Por tanto, es preciso poner primero a cero el bit 0 del mismo puerto (61h): CLI otras IN AND JMP OUT AL,61h AL,11111110b SHORT $+2 61h,AL ; evitar posible INT 8, entre

del 8254 otro_ciclo:

; estado de espera para E/S ; bajar GATE del contador 2 ; 256 vueltas ; invertir bit 1 ; constante de retardo

MOV CX,100h PUSH CX IN AL,61h XOR AL,2 JMP SHORT $+2 OUT 61h,AL MOV CX,300 retardo: LOOP retardo POP CX LOOP otro_ciclo STI Control del altavoz por el temporizador.

El otro mtodo posible consiste en emplear el contador 2 del temporizador conectado al altavoz; as, enviando el perodo del sonido (1.193.180/frecuencia_en_Hz) a dicho contador (programado en modo 3), ste se encarga de generar el sonido. Esto permite obtener sonidos idnticos en todos los ordenadores. Existe el pequeo problema de que la duracin del sonido ha de ser mltiplo de 1/18,2 segundos si se desea utilizar el reloj del sistema para determinarla (un bucle de retardo sera, una vez ms, dependiente de la mquina) ya que el contador 2 est ahora ocupado en la produccin de sonido y no se puede usar

para temporizar (al menos, no sin hacer malabarismos). Alternativamente, se podra evaluar la velocidad de la CPU para ajustar las constantes de retardo o aumentar la velocidad de la interrupcin peridica. Para emplear este sistema, primero se prepara el contador 2 para temporizar (poniendo a 1 el bit 0 del puerto 61h) y luego se conecta su salida al altavoz (poniendo a 1 el bit 1 del puerto 61h). Al final, conviene borrar ambos bits de nuevo. Ahora no es preciso inhibir las interrupciones para garantizar la calidad del sonido: MOV AL,10110110b operacin 11b, datos binarios OUT 43h,AL MOV AX,2711 LA) = 2711 JMP SHORT $+2 OUT 42h,AL MOV AL,AH JMP SHORT $+2 OUT 42h,AL JMP SHORT $+2 IN AL,61h OR AL,00000011b JMP SHORT $+2 OUT 61h,AL MOV CX,0 demora: LOOP demora por el peor mtodo IN AL,61h AND AL,11111100b JMP SHORT $+2 OUT 61h,AL ; contador 2, modo 3, ; programar contador 2 ; 1.193.180 / 440 Hz (nota

; frecuencia programada

; altavoz sonando ; esperar un cierto tiempo

; altavoz callado

Las frecuencias en Hz de las distintas notas musicales estn oficialmente definidas y los msicos suelen tenerlas en cuenta a la hora de afinar los instrumentos. La escala cromtica temperada, adoptada por la American Standards Asociation en 1936, establece el LA4 como nota de referencia en 440 Hz. En general, una vez conocidas las frecuencias de las notas de una octava, las de la octava siguiente o anterior se obtienen multiplicando y dividiendo por dos, respectivamente. La frmula de abajo permite obtener las frecuencias de las notas asignndolas un nmero (a partir de 6 y hasta 88; el LA de 440 Hz es la nota 49) con una precisin razonable, mxime teniendo en cuenta que van a ir a parar al altavoz del PC. Tal curiosa relacin se verifica debido a que la respuesta del odo humano es logartmica, lo que ha permitido reducir a simples matemticas el viejo saber milenario de los msicos.

http://atc.ugr.es/docencia/udigital/1203.html

2.8.1

Reloj de sistema.

Acceso a memoria y el reloj del sistemaEl acceso a memoria es probablemente la actividad ms comn de un CPU, se trata en definitiva de una operacin sincronizada al reloj del sistema, esto es, la lectura o escritura no puede ser ms rpida que un ciclo de reloj, de hecho, en muchos sistemas 80x86 el acceso a memoria toma varios ciclos de reloj. El tiempo de acceso a memoria es el nmero de ciclos de reloj que el sistema necesita para

acceder a una ubicacin de memoria, este es un valor importante ya que a mayor nmero de ciclos menor desempeo. El tiempo de acceso a memoria es la cantidad de tiempo que transcurre desde que se solicita una operacin (sea de lectura escritura) y el tiempo en que la memoria completa dicha operacin. En procesadores de 5 Mhz (80x88, 80x86) el tiempo de acceso a memoria es de aproximadamente 800 ns. (nanosegundos), en cambio, un procesador de 50 Mhz (80x486) el tiempo es de aproximadamente 20 ns. El tiempo de acceso a memoria en el procesador 80x486 es casi 40 veces ms rpido que en el caso del procesador 80x86 porque ste ltimo consume ms ciclos de reloj para el acceso a memoria adems del incremento en la velocidad de reloj. Los dispositivos de memoria presentan varias caractersticas pero las principales son su capacidad de almacenamiento y el tiempo de acceso. Una memoria de acceso aleatorio (RAM) tpica tiene una capacidad de 16 ms megabytes y un tiempo de acceso de 70 nanosegundos menos, con estos datos seguramente se estar preguntando cmo es posible que stas memorias relativamente lentas trabajan en procesadores mucho ms rpidos. La respuesta son los estados de espera. Un estado de espera es una seal que se coloca en el bus de control por parte del dispositivo de memoria para detener temporalmente el trabajo realizado por el CPU, como consecuencia utilizar uno o ms estados de espera tiene el mismo efecto que reducir proporcionalmente la velocidad de reloj, obviamente introducir estados de espera no es una opcin deseable por la reduccin en el desempeo del sistema. Los diseadores de hardware han encontrado un mecanismo que tiene un efecto similar a introducir estados de espera pero sin afectar notablemente el rendimiento de la computadora, a este mecanismo se le llama memoria cache ( se pronuncia "cash"). Una memoria cache es un dispositivo sin estados de espera que se encuentra construida como parte integral del CPU, fsicamente se encuentra entre el CPU y los mdulos de memoria RAM, su funcin es evitar la generacin de estados de espera por parte de los mdulos de memoria RAM y as aprovechar al mximo el rendimiento esperado por el CPU, sin embargo la memoria cache no es un dispositivo perfecto pues hay ocasiones en que no es posible colocar en memoria cache los datos que requiere el programa para ejecutarse forzando al sistema a leer dichos datos directamente de los mdulos de memoria RAM y por lo tanto generando estados de espera, cuando ocurre ste fenmeno se le llama prdida cache (cache miss), cuando tienen xito las operaciones en memoria cache se le llama xito cache (cache hit). Por lo general el radio entre xito y prdida en memoria cache est entre 85 y 90%. Este rendimiento disminuye al aumentar la cantidad de memoria cache y por esta razn la memoria cache es relativamente pequea, sus valores de almacenamiento oscilan entre 256 y 512 Kb.

http://www.modelo.edu.mx/univ/virtech/prograc/cbyn03.htm Relojes Los relojes son esenciales para el buen funcionamiento de cualquier sistema porque juegan un papel decisivo en la sincronizacin de procesos, en la calendarizacin de trabajos por lote y para la asignacin de turnos de ejecucin entre otras tareas relevantes. Generalmente se cuenta con dos relojes en el sistema: uno que lleva la hora y fecha del sistema y que oscila entre 50 y 60 veces por segundo y el reloj que oscila entre 5 y 100 millones de veces por segundo y que se encarga de enviar interrupciones al CPU de manera peridica. El reloj de mayor frecuencia sirve para controlar el tiempo de ejecucin de los procesos, para despertar los procesos que estn 'durmiendo' y para lanzar o iniciar procesos que fueron calendarizados.

Para mantener la hora y fecha del sistema generalmente se usa un registro alimentado por una pila de alta duracin que almacena estos datos y que se programan de fbrica por primera vez. As, aunque se suspenda la energa la fecha permanece. Para lanzar procesos (chequeo de tiempo ocioso de un dispositivo, terminacin del time slice de un proceso, etc), se almacena un valor en un registro (valor QUANTUM) el cual se decrementa con cada ciclo del reloj, y cuando llega a cero se dispara un proceso que ejecutar las operaciones necesarias (escoger un nuevo proceso en ejecucin, verificar el funcionamiento del motor del disco flexible, hacer eco de un caracter del teclado, etc). http://www.tau.org.ar/base/lara.pue.udlap.mx/sistoper/capitulo6.html

2.8.2 Reset del sistema. 2.8.3 Estados de espera. 2.9 Interrupciones de Hardware.Uso de interrupciones Un computador debe disponer de los elementos suficientes para que el programador tenga un control total sobre todo lo que ocurre durante la ejecucin de su programa. La llegada de una interrupcin provoca que la CPU suspenda la ejecucin de un programa e inicie la de otro (rutina de servicio de interrupcin). Como las interrupciones pueden producirse en cualquier momento, es muy probable que se altere la secuencia de sucesos que el programador haba previsto inicialmente. Es por ello que las interrupciones deber controlarse cuidadosamente. De esta forma, podemos resumir todas las etapas seguidas ante una interrupcin en un sistema dotado de vectorizacin. Estos pasos son los siguientes: 1.- El dispositivo enva la solicitud de interrupcin mediante la lnea INTR. 2.- El procesador termina la ejecucin de la instruccin en curso y analiza la lnea de peticin de interrupcin, INTR. Si esta lnea no est activada continuar normalmente con la ejecucin de la siguiente instruccin, en caso contrario se pasa a la etapa siguiente. 3.- La CPU reconoce la interrupcin, para informar al dispositivo de ello, activa la lnea de reconocimiento de interrupcin, INTA. 4.- El dispositivo que reciba la seal INTA enva el cdigo de interrupcin por el bus de datos. 5.- La CPU calcula la direccin de memoria donde se encuentra la rutina de servicio de interrupcin (vector de interrupcin). 6.- El estado del procesador, y en particular el contador de programa, se salva en la pila de la misma forma que en una llamada a procedimiento.

7.- La direccin de la rutina de servicio de interrupcin se carga en el contador de programa, con lo que se pasa el control a la citada rutina. 8.- La ejecucin contina hasta que el procesador encuentre la instruccin de retorno de interrupcin. 9.- Cuando se encuentre la instruccin de retorno de interrupcin se restaura el estado del procesador, en especial el contador de programa, y se devuelve el control al programa interrumpido. Normalmente la primera instruccin de la rutina de servicio tendr como fin desactivar las interrupciones para impedir el anidamiento, por otra parte, antes de devolver el control al programa interrumpido se volvern a habilitar si es necesario. http://www.mailxmail.com/curso/informatica/arquitecturaordenadores/ca pitulo17.htm Hay cuatro categoras principales de interrupciones: 1) En primer lugar, hay interrupciones generadas por la circuitera del ordenador en respuesta a algn acontecimiento, tal como la pulsacin de una tecla. Estas interrupciones estn manejadas por el chip controlador de interrupciones (el 8259, tambin conocido como PIC), que l as prioriza antes de enviarlas a la CPU para que acte. A estas interrupciones se les suele llamar interrupciones hardware. 2) En segundo lugar, hay interrupciones que son generadas por la CPU como resultado de algn suceso inusual producido por el programa como, por ejemplo, una divisin por cero. A estas interrupciones solemos referirnos como excepciones. 3) En tercer lugar, hay interrupciones generadas deliberadamente por los programas para invocar, por ejemplo, las llamadas al sistema. Estas interrupciones son llamadas interrupciones software. 4) Por ltimo, hay tambin un tipo especial de interrupcin, llamada interrupcin no enmascarable (NMI), que se utiliza para solicitar la atencin inmediata de la CPU. A menudo indica que se ha producido una emergencia, como, por ejemplo, una cada de voltaje, o un error de paridad de memoria. Cuando se enva una NMI la CPU la atiende antes que al resto de las interrupciones, por supuesto. Los programas en ensamblador pueden desactivar, o lo que es lo mismo enmascarar, las interrupciones hardware. Por esta razn, tambin se las llama enmascarables; el resto de las interrupciones que interceptan errores especiales, como la divisin por cero, no se pueden enmascarar. Se pueden aducir dos razones para desactivar las interrupciones hardware: a) Cuando se necesita ejecutar un fragmento de cdigo especialmente crtico antes de que suceda ninguna otra tarea en el ordenador, interesa que todas las interrupciones queden bloqueadas. Por ejemplo, cuando se quiere hacer algn cambio en la tabla de vectores de interrupcin. b) A veces interesa enmascarar ciertas interrupciones hardware cuando stas pueden interferir en alguna actividad cuya dependencia temporal sea crtica. Por ejemplo, si se est ejecutando una rut ina de E/S cuya temporizacin tiene que estar exquisitamente controlada, uno no puede permitirse el lujo de esperar "aparcado" mientras se ejecuta una lenta interrupcin de disco. En el primer caso, se ha de tener en cuenta que en ltimo trmino, la ejecucin de todas las interrupciones descansa sobre el flag de interrupcin (bit 9) del registro de estado

(flags de estado) del procesador. Cuando este bit toma el valor 0, acepta cualquier solicitud de interrupcin que permita el registro de mscaras de int errupcin. Cuando es uno, no se permiten interrupciones hardware. Para hacer que este flag tome el valor cero, desactivando as las interrupciones, se utiliza la instruccin CLI. Para volver a poner el flag a uno, autorizando de nuevo las interrupciones, se utiliza la instruccin STI. Para gestionar las interrupciones hardware, todos los PC's utilizan el llamado chip controlador de interrupciones programable (PIC) Intel 8259. Existe la posibilidad de que aparezca ms de una solicitud de interrupcin simultneamente, por lo que el chip establece una jerarqua de prioridades. Existen ocho niveles de prioridad, excepto en el AT, que tiene diecisis, a los que se refieren con las abreviaturas IRQ0 a IRQ7 ( IRQ0 a IRQ16 en AT), que corresponden a las siglas inglesas de solicitud de interrupcin (interrupt request). La mayor prioridad se consigue en el nivel 0. En el caso del AT, los ocho niveles de prioridad extra se gestionan con un segundo chip 8259 denominado slave, en contraposicin al primer chip 8259 denominado master; esta segunda serie de niveles tiene una prioridad comprendida entre IRQ2 e IRQ3. En la siguiente tabla se muestra como se asignan los niveles de interrupcin a los distintos perifricos: Error! Marcador no definido.

El 8259 posee tres registros de un byte que controlan y gestionan las ocho (o diecisis) lneas de interrupcin hardware, pero a nosotros slo nos interesa el registro de mscara de interrupciones (IMR). El 8259 emplea este registro para averiguar si una interrupcin de un determinado nivel est permitida en cualquier momento. Para desactivar interrupciones hardware concretas, se enva un patrn de bits al puerto 21h (INT_CTLMASK), que es la direccin del registro de mscaras de interrupcin (IMR). El registro de mscara del segundo chip 8259 del AT se sita en el puerto A1h (INT2_CTLMASK). En este patrn de bits, se ponen a uno los bits que corresponden a los nmeros de interrupcin que se desea enmascarar.

2.9.1Enmascarable.Interrupcin enmascarable