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